commit fdd9ac9d97e916d4f382e099478fd77c50cc6014 Author: Cyd Date: Thu Jul 2 13:21:58 2026 -0500 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 diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..221d121 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,3 @@ +# Archival repository: preserve all files byte-for-byte. +# No line-ending conversion, no diff/merge text munging. +* -text diff --git a/ARTTOOLS/.gitkeep b/ARTTOOLS/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/BORLAND/.gitkeep b/BORLAND/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/CODE/BT/32RTM.EXE b/CODE/BT/32RTM.EXE new file mode 100644 index 0000000..29bb61a Binary files /dev/null and b/CODE/BT/32RTM.EXE differ diff --git a/CODE/BT/32STUB.EXE b/CODE/BT/32STUB.EXE new file mode 100644 index 0000000..8747672 Binary files /dev/null and b/CODE/BT/32STUB.EXE differ diff --git a/CODE/BT/ARCBT.BAT b/CODE/BT/ARCBT.BAT new file mode 100644 index 0000000..6d180a6 --- /dev/null +++ b/CODE/BT/ARCBT.BAT @@ -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= diff --git a/CODE/BT/ARCFILES.LST b/CODE/BT/ARCFILES.LST new file mode 100644 index 0000000..c1fbaa0 --- /dev/null +++ b/CODE/BT/ARCFILES.LST @@ -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 + diff --git a/CODE/BT/BT/AMMOBIN.TCP b/CODE/BT/BT/AMMOBIN.TCP new file mode 100644 index 0000000..54eeba9 --- /dev/null +++ b/CODE/BT/BT/AMMOBIN.TCP @@ -0,0 +1,15 @@ +#include "testbt.hpp" + +//############################################################################# +// Test Class -- AmmoBin +// +Logical AmmoBin::TestClass(Mech &) +{ + return True; + +} + +void AmmoBin::ResetToInitialState() +{ + +} diff --git a/CODE/BT/BT/BT.HPP b/CODE/BT/BT/BT.HPP new file mode 100644 index 0000000..db8e336 --- /dev/null +++ b/CODE/BT/BT/BT.HPP @@ -0,0 +1,24 @@ +#if !defined(BT_HPP) +# define BT_HPP + +# if !defined(MUNGA_HPP) +# include +# endif + +# if !defined(NO_PRECOMPILED_HEADERS) + +# if !defined(MECH_HPP) +# include +# endif + +# if !defined(BTPLAYER_HPP) +# include +# endif + +# if !defined(MECHSUB_HPP) +# include +# endif + +# endif + +#endif diff --git a/CODE/BT/BT/BT.MAK b/CODE/BT/BT/BT.MAK new file mode 100644 index 0000000..930a57d --- /dev/null +++ b/CODE/BT/BT/BT.MAK @@ -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 diff --git a/CODE/BT/BT/BTCNSL.CPP b/CODE/BT/BT/BTCNSL.CPP new file mode 100644 index 0000000..2dc59a8 --- /dev/null +++ b/CODE/BT/BT/BTCNSL.CPP @@ -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 +#pragma hdrstop + +#if !defined(BTCNSL_HPP) +# include +#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; +} + +//============================================================================== diff --git a/CODE/BT/BT/BTDIRECT.HPP b/CODE/BT/BT/BTDIRECT.HPP new file mode 100644 index 0000000..abd6ddf --- /dev/null +++ b/CODE/BT/BT/BTDIRECT.HPP @@ -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 +# endif + +# if !defined (BTPLAYER_HPP) && 0 +# include +# 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 diff --git a/CODE/BT/BT/BTMSSN.CPP b/CODE/BT/BT/BTMSSN.CPP new file mode 100644 index 0000000..9cfe70f --- /dev/null +++ b/CODE/BT/BT/BTMSSN.CPP @@ -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 +#pragma hdrstop + +#if !defined(BTMSSN_HPP) +# include +#endif + +#if !defined(NOTATION_HPP) +# include +#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"); +} diff --git a/CODE/BT/BT/BTMSSN.HPP b/CODE/BT/BT/BTMSSN.HPP new file mode 100644 index 0000000..a0dbf5c --- /dev/null +++ b/CODE/BT/BT/BTMSSN.HPP @@ -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 +# 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 diff --git a/CODE/BT/BT/BTREG.CPP b/CODE/BT/BT/BTREG.CPP new file mode 100644 index 0000000..acdabdc --- /dev/null +++ b/CODE/BT/BT/BTREG.CPP @@ -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 +#pragma hdrstop + +#if !defined(BTREG_HPP) +# include +#endif + +#if !defined(BTPLAYER_HPP) +# include +#endif + +#if !defined(BTDIRECT_HPP) +# include +#endif + +// +// Registered classes... +// +#if !defined(MECH_HPP) +# include +#endif + +#if !defined(PROJTILE_HPP) +# include +#endif + +#if !defined(MISSILE_HPP) +# include +#endif + +#if !defined(BTTEAM_HPP) +# include +#endif + +// +//~~~~~~~~~~~~~~~~ +// Munga Includes +//~~~~~~~~~~~~~~~~ +// +#if !defined(BTMSSN_HPP) +# include +#endif + +#if !defined(DIRECTOR_HPP) +# include +#endif + +#if !defined(HOSTMGR_HPP) +# include +#endif + +#if !defined(APP_HPP) +# include +#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); + } + } + diff --git a/CODE/BT/BT/BTREG.HPP b/CODE/BT/BT/BTREG.HPP new file mode 100644 index 0000000..18aac96 --- /dev/null +++ b/CODE/BT/BT/BTREG.HPP @@ -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 +# 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 diff --git a/CODE/BT/BT/BTSCNRL.CPP b/CODE/BT/BT/BTSCNRL.CPP new file mode 100644 index 0000000..6d69bb0 --- /dev/null +++ b/CODE/BT/BT/BTSCNRL.CPP @@ -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 +#pragma hdrstop + + +# if !defined(BTSCNRL_HPP) +# include +# endif diff --git a/CODE/BT/BT/BTTEAM.CPP b/CODE/BT/BT/BTTEAM.CPP new file mode 100644 index 0000000..af6295e --- /dev/null +++ b/CODE/BT/BT/BTTEAM.CPP @@ -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 +#pragma hdrstop + +#if !defined(BTTEAM_HPP) +# include +#endif + +#if !defined(HOSTMGR_HPP) +# include +#endif + +#if !defined(APP_HPP) +# include +#endif + +#if !defined(BTCNSL_HPP) +# include +#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); +} + diff --git a/CODE/BT/BT/BTTEAM.HPP b/CODE/BT/BT/BTTEAM.HPP new file mode 100644 index 0000000..6113143 --- /dev/null +++ b/CODE/BT/BT/BTTEAM.HPP @@ -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 +# 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 diff --git a/CODE/BT/BT/BTTOOL.CPP b/CODE/BT/BT/BTTOOL.CPP new file mode 100644 index 0000000..225fcd1 --- /dev/null +++ b/CODE/BT/BT/BTTOOL.CPP @@ -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 +#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; + } +} + diff --git a/CODE/BT/BT/BTTOOL.HPP b/CODE/BT/BT/BTTOOL.HPP new file mode 100644 index 0000000..03c4d52 --- /dev/null +++ b/CODE/BT/BT/BTTOOL.HPP @@ -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 +# 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 + diff --git a/CODE/BT/BT/EMITTER.TCP b/CODE/BT/BT/EMITTER.TCP new file mode 100644 index 0000000..955244a --- /dev/null +++ b/CODE/BT/BT/EMITTER.TCP @@ -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(); + +} + diff --git a/CODE/BT/BT/GAUSS.CPP b/CODE/BT/BT/GAUSS.CPP new file mode 100644 index 0000000..cb9cb0e --- /dev/null +++ b/CODE/BT/BT/GAUSS.CPP @@ -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 +#pragma hdrstop + +#if !defined(GAUSS_HPP) +# include +#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); +} + diff --git a/CODE/BT/BT/GAUSS.HPP b/CODE/BT/BT/GAUSS.HPP new file mode 100644 index 0000000..74270fe --- /dev/null +++ b/CODE/BT/BT/GAUSS.HPP @@ -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 +#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 diff --git a/CODE/BT/BT/GNRATOR.TCP b/CODE/BT/BT/GNRATOR.TCP new file mode 100644 index 0000000..ee9f89c --- /dev/null +++ b/CODE/BT/BT/GNRATOR.TCP @@ -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; +} \ No newline at end of file diff --git a/CODE/BT/BT/HEAT.TCP b/CODE/BT/BT/HEAT.TCP new file mode 100644 index 0000000..1f01e43 --- /dev/null +++ b/CODE/BT/BT/HEAT.TCP @@ -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(); +} + diff --git a/CODE/BT/BT/MECHDMG.HPP b/CODE/BT/BT/MECHDMG.HPP new file mode 100644 index 0000000..e5ea48b --- /dev/null +++ b/CODE/BT/BT/MECHDMG.HPP @@ -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 +# endif + +# if !defined(SLOT_HPP) +# include +# endif + +# if !defined(TABLE_HPP) +# include +# endif + +# if !defined(ENTITYID_HPP) +# include +# endif + + class Mech; + class Subsystem; + class DamageZone; + + //########################################################################## + //###################### MechCriticalSubsystem ################# + //########################################################################## + + class + MechCriticalSubsystem SIGNATURED + { + public: + + MechCriticalSubsystem(DamageZone *owner); + + virtual ~MechCriticalSubsystem(); + + SlotOf + 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 IntegerPlug; + + typedef TableOf DamageZoneIndexTable; + + typedef TableIteratorOf 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 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 diff --git a/CODE/BT/BT/MECHTECH.HPP b/CODE/BT/BT/MECHTECH.HPP new file mode 100644 index 0000000..801d6dd --- /dev/null +++ b/CODE/BT/BT/MECHTECH.HPP @@ -0,0 +1,149 @@ +#if !defined(MECHTECH_HPP) +# define MECHTECH_HPP + +# if !defined(MECHSUB_HPP) +# include +# 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 subsystemMonitors; + Scalar + wooHooMinimumDuration, + wooHooDurationRange, + wooHooChance; + + ResourceDescription::ResourceID + alarmModel; + + void + TechnicalAssistance(Scalar time_slice); + + Mech* + GetEntity() + {return (Mech*)Subsystem::GetEntity();} + }; + +#endif + diff --git a/CODE/BT/BT/MESSMGR.HPP b/CODE/BT/BT/MESSMGR.HPP new file mode 100644 index 0000000..5f36f2a --- /dev/null +++ b/CODE/BT/BT/MESSMGR.HPP @@ -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 +#endif + +#if !defined (RESOURCE_HPP) +# include +#endif + +#if !defined (VCHAIN_HPP) +# include +#endif + +#if !defined (PLUG_HPP) +# include +#endif + +#if !defined(ENTITYID_HPP) +# include +#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 + ResourceIDPlug; + + VChainOf + weaponExplosions; + + VChainOf 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 diff --git a/CODE/BT/BT/MISLANCH.HPP b/CODE/BT/BT/MISLANCH.HPP new file mode 100644 index 0000000..4eb54de --- /dev/null +++ b/CODE/BT/BT/MISLANCH.HPP @@ -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 +# 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 diff --git a/CODE/BT/BT/MISSILE.TCP b/CODE/BT/BT/MISSILE.TCP new file mode 100644 index 0000000..36abb36 --- /dev/null +++ b/CODE/BT/BT/MISSILE.TCP @@ -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; +} + diff --git a/CODE/BT/BT/MISTHRST.HPP b/CODE/BT/BT/MISTHRST.HPP new file mode 100644 index 0000000..2db0140 --- /dev/null +++ b/CODE/BT/BT/MISTHRST.HPP @@ -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 + #endif + + #if !defined(ANGLE_HPP) + #include + #endif + + #if !defined(MOTION_HPP) + #include + #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 diff --git a/CODE/BT/BT/MSSCCPRJ.SCC b/CODE/BT/BT/MSSCCPRJ.SCC new file mode 100644 index 0000000..d646e74 --- /dev/null +++ b/CODE/BT/BT/MSSCCPRJ.SCC @@ -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 diff --git a/CODE/BT/BT/PPC.CPP b/CODE/BT/BT/PPC.CPP new file mode 100644 index 0000000..ed3fa15 --- /dev/null +++ b/CODE/BT/BT/PPC.CPP @@ -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 +#pragma hdrstop + +#if !defined (PPC_HPP) +# include +#endif + +#if !defined(BTPLAYER_HPP) +# include +#endif + +#if !defined(BTMSSN_HPP) +# include +#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); +} + diff --git a/CODE/BT/BT/PPC.HPP b/CODE/BT/BT/PPC.HPP new file mode 100644 index 0000000..0524dee --- /dev/null +++ b/CODE/BT/BT/PPC.HPP @@ -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 +#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 diff --git a/CODE/BT/BT/PROJTILE.TCP b/CODE/BT/BT/PROJTILE.TCP new file mode 100644 index 0000000..ce27a9b --- /dev/null +++ b/CODE/BT/BT/PROJTILE.TCP @@ -0,0 +1,12 @@ +#include "testbt.hpp" + +//############################################################################# +// Projectile Test Class +// + +Logical Projectile::TestClass() +{ + return True; +} + + diff --git a/CODE/BT/BT/PROJWEAP.TCP b/CODE/BT/BT/PROJWEAP.TCP new file mode 100644 index 0000000..d4c0b5f --- /dev/null +++ b/CODE/BT/BT/PROJWEAP.TCP @@ -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() +{ + +} \ No newline at end of file diff --git a/CODE/BT/BT/SEEKER.HPP b/CODE/BT/BT/SEEKER.HPP new file mode 100644 index 0000000..b928825 --- /dev/null +++ b/CODE/BT/BT/SEEKER.HPP @@ -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 +#endif + +#if !defined(POINT3D_HPP) + #include +#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 diff --git a/CODE/BT/BT/SENSOR.HPP b/CODE/BT/BT/SENSOR.HPP new file mode 100644 index 0000000..414e968 --- /dev/null +++ b/CODE/BT/BT/SENSOR.HPP @@ -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 diff --git a/CODE/BT/BT/TESTBT.HPP b/CODE/BT/BT/TESTBT.HPP new file mode 100644 index 0000000..8225286 --- /dev/null +++ b/CODE/BT/BT/TESTBT.HPP @@ -0,0 +1,68 @@ + +#if !defined(TESTBT_HPP) +# define TESTBT_HPP + +# if !defined(APP_HPP) +# include +# endif + +# if !defined(APP_THP) +# include +# endif + +# if !defined(MISSION_HPP) +# include +# 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 diff --git a/CODE/BT/BT/TURRET.HPP b/CODE/BT/BT/TURRET.HPP new file mode 100644 index 0000000..32b63e0 --- /dev/null +++ b/CODE/BT/BT/TURRET.HPP @@ -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 +# 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 + diff --git a/CODE/BT/BT/VSSVER.SCC b/CODE/BT/BT/VSSVER.SCC new file mode 100644 index 0000000..68c376a Binary files /dev/null and b/CODE/BT/BT/VSSVER.SCC differ diff --git a/CODE/BT/BTL4.BLD b/CODE/BT/BTL4.BLD new file mode 100644 index 0000000..e8b1227 --- /dev/null +++ b/CODE/BT/BTL4.BLD @@ -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 + diff --git a/CODE/BT/BTL4.PTH b/CODE/BT/BTL4.PTH new file mode 100644 index 0000000..42b15a3 --- /dev/null +++ b/CODE/BT/BTL4.PTH @@ -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 diff --git a/CODE/BT/BT_L4/BTL4.HPP b/CODE/BT/BT_L4/BTL4.HPP new file mode 100644 index 0000000..995946d --- /dev/null +++ b/CODE/BT/BT_L4/BTL4.HPP @@ -0,0 +1,12 @@ +#if !defined(BTL4_HPP) +# define BTL4_HPP + +# if !defined(BT_HPP) +# include +# endif + +# if !defined(MUNGAL4_HPP) +# include +# endif +#endif + diff --git a/CODE/BT/BT_L4/BTL4.MAK b/CODE/BT/BT_L4/BTL4.MAK new file mode 100644 index 0000000..b88358c --- /dev/null +++ b/CODE/BT/BT_L4/BTL4.MAK @@ -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 diff --git a/CODE/BT/BT_L4/BTL4APP.HPP b/CODE/BT/BT_L4/BTL4APP.HPP new file mode 100644 index 0000000..612ca6e --- /dev/null +++ b/CODE/BT/BT_L4/BTL4APP.HPP @@ -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 +# 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 diff --git a/CODE/BT/BT_L4/BTL4ARND.CPP b/CODE/BT/BT_L4/BTL4ARND.CPP new file mode 100644 index 0000000..ee24448 --- /dev/null +++ b/CODE/BT/BT_L4/BTL4ARND.CPP @@ -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 +#pragma hdrstop + +#if !defined(BTL4ARND_HPP) +# include +#endif + +#if !defined(JMOVER_HPP) +# include +#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; +} + diff --git a/CODE/BT/BT_L4/BTL4ARND.HPP b/CODE/BT/BT_L4/BTL4ARND.HPP new file mode 100644 index 0000000..4572685 --- /dev/null +++ b/CODE/BT/BT_L4/BTL4ARND.HPP @@ -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 +# 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 + diff --git a/CODE/BT/BT_L4/BTL4GALM.HPP b/CODE/BT/BT_L4/BTL4GALM.HPP new file mode 100644 index 0000000..8e8a5ed --- /dev/null +++ b/CODE/BT/BT_L4/BTL4GALM.HPP @@ -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 diff --git a/CODE/BT/BT_L4/BTL4GRND.HPP b/CODE/BT/BT_L4/BTL4GRND.HPP new file mode 100644 index 0000000..4e0149a --- /dev/null +++ b/CODE/BT/BT_L4/BTL4GRND.HPP @@ -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 +# endif + + + //~~~~~~~~~~~~~~~~~~~~~~~~~~ BTL4GaugeRenderer ~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class BTL4GaugeRenderer: + public L4GaugeRenderer + { + public: + + // + //-------------------------------------------------------------------- + // Construction, Destruction, Testing + //-------------------------------------------------------------------- + // + BTL4GaugeRenderer(); + ~BTL4GaugeRenderer(); + + Logical + TestInstance() const; + + void + NotifyOfNewInterestingEntity(Entity *entity); + void + NotifyOfBecomingUninterestingEntity(Entity *entity); + }; + + +#endif + diff --git a/CODE/BT/BT_L4/BTL4MODE.CPP b/CODE/BT/BT_L4/BTL4MODE.CPP new file mode 100644 index 0000000..5eef7e0 --- /dev/null +++ b/CODE/BT/BT_L4/BTL4MODE.CPP @@ -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 +#pragma hdrstop + +#if !defined(BTL4MODE_HPP) +# include +#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); +} + + diff --git a/CODE/BT/BT_L4/BTL4MODE.HPP b/CODE/BT/BT_L4/BTL4MODE.HPP new file mode 100644 index 0000000..065f488 --- /dev/null +++ b/CODE/BT/BT_L4/BTL4MODE.HPP @@ -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 +# 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< +# endif + + //########################################################################## + //########################### BTL4Mission ############################ + //########################################################################## + + class BTL4Mission: + public BTMission + { + + public: + + BTL4Mission( + NotationFile *notation_file, + ResourceFile *resources + ); + ~BTL4Mission(); + + Logical + TestInstance() const; + + void + SetPlayerData(NotationFile *notation_file); + }; + +#endif diff --git a/CODE/BT/BT_L4/BTL4PB.HPP b/CODE/BT/BT_L4/BTL4PB.HPP new file mode 100644 index 0000000..8506b1a --- /dev/null +++ b/CODE/BT/BT_L4/BTL4PB.HPP @@ -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 +# endif + +# if !defined(L4SPLR_HPP) +# include +# 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 diff --git a/CODE/BT/BT_L4/BTL4RDR.HPP b/CODE/BT/BT_L4/BTL4RDR.HPP new file mode 100644 index 0000000..4e45a14 --- /dev/null +++ b/CODE/BT/BT_L4/BTL4RDR.HPP @@ -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 +# endif + +# if !defined(L4GREND_HPP) +# include +# endif + +# if !defined(L4GAUGE_HPP) +# include +# endif + +# if !defined(ROTATION_HPP) +# include +# endif + +# if !defined(RANDOM_HPP) +# include +# endif + +# if !defined(POINT3D_HPP) +# include "point3d.hpp" +# endif + +# if !defined(HEAT_HPP) +# include +# endif + +# if !defined(POWERSUB_HPP) +# include +# 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 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 + diff --git a/CODE/BT/BT_L4/BTL4VER.HPP b/CODE/BT/BT_L4/BTL4VER.HPP new file mode 100644 index 0000000..b82099d --- /dev/null +++ b/CODE/BT/BT_L4/BTL4VER.HPP @@ -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 + diff --git a/CODE/BT/BT_L4/MSSCCPRJ.SCC b/CODE/BT/BT_L4/MSSCCPRJ.SCC new file mode 100644 index 0000000..165038c --- /dev/null +++ b/CODE/BT/BT_L4/MSSCCPRJ.SCC @@ -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 diff --git a/CODE/BT/BT_L4/VSSVER.SCC b/CODE/BT/BT_L4/VSSVER.SCC new file mode 100644 index 0000000..cc895dd Binary files /dev/null and b/CODE/BT/BT_L4/VSSVER.SCC differ diff --git a/CODE/BT/BUILDRES.BAT b/CODE/BT/BUILDRES.BAT new file mode 100644 index 0000000..3f50a0b --- /dev/null +++ b/CODE/BT/BUILDRES.BAT @@ -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 diff --git a/CODE/BT/C0X32.OBJ b/CODE/BT/C0X32.OBJ new file mode 100644 index 0000000..2e99f32 Binary files /dev/null and b/CODE/BT/C0X32.OBJ differ diff --git a/CODE/BT/D0.MAK b/CODE/BT/D0.MAK new file mode 100644 index 0000000..9bc875f --- /dev/null +++ b/CODE/BT/D0.MAK @@ -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) diff --git a/CODE/BT/D1.MAK b/CODE/BT/D1.MAK new file mode 100644 index 0000000..b5f7809 --- /dev/null +++ b/CODE/BT/D1.MAK @@ -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) diff --git a/CODE/BT/D2S.MAK b/CODE/BT/D2S.MAK new file mode 100644 index 0000000..0747fc9 --- /dev/null +++ b/CODE/BT/D2S.MAK @@ -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) diff --git a/CODE/BT/D3S.MAK b/CODE/BT/D3S.MAK new file mode 100644 index 0000000..1506069 --- /dev/null +++ b/CODE/BT/D3S.MAK @@ -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) diff --git a/CODE/BT/DEARCBT.BAT b/CODE/BT/DEARCBT.BAT new file mode 100644 index 0000000..abd65cb --- /dev/null +++ b/CODE/BT/DEARCBT.BAT @@ -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 diff --git a/CODE/BT/DPMI32VM.OVL b/CODE/BT/DPMI32VM.OVL new file mode 100644 index 0000000..3abff02 Binary files /dev/null and b/CODE/BT/DPMI32VM.OVL differ diff --git a/CODE/BT/EXAMPLE.BAT b/CODE/BT/EXAMPLE.BAT new file mode 100644 index 0000000..5cbe574 --- /dev/null +++ b/CODE/BT/EXAMPLE.BAT @@ -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 + diff --git a/CODE/BT/EXAMPLE.CFG b/CODE/BT/EXAMPLE.CFG new file mode 100644 index 0000000..09aa522 --- /dev/null +++ b/CODE/BT/EXAMPLE.CFG @@ -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 diff --git a/CODE/BT/EXCLUDE.LST b/CODE/BT/EXCLUDE.LST new file mode 100644 index 0000000..001f660 --- /dev/null +++ b/CODE/BT/EXCLUDE.LST @@ -0,0 +1,7 @@ +joystick.ini +anims\vcs.cfg +audio\vcs.cfg +gauge\vcs.cfg +maps\vcs.cfg +models\vcs.cfg +solids\vcs.cfg diff --git a/CODE/BT/HMIDET.386 b/CODE/BT/HMIDET.386 new file mode 100644 index 0000000..6f5478f Binary files /dev/null and b/CODE/BT/HMIDET.386 differ diff --git a/CODE/BT/HMIDRV.386 b/CODE/BT/HMIDRV.386 new file mode 100644 index 0000000..8429a7d Binary files /dev/null and b/CODE/BT/HMIDRV.386 differ diff --git a/CODE/BT/MSSCCPRJ.SCC b/CODE/BT/MSSCCPRJ.SCC new file mode 100644 index 0000000..176d3c9 --- /dev/null +++ b/CODE/BT/MSSCCPRJ.SCC @@ -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 diff --git a/CODE/BT/MUNGA/AFFNMTRX.TCP b/CODE/BT/MUNGA/AFFNMTRX.TCP new file mode 100644 index 0000000..63e05d7 --- /dev/null +++ b/CODE/BT/MUNGA/AFFNMTRX.TCP @@ -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; +} diff --git a/CODE/BT/MUNGA/ANGLE.TCP b/CODE/BT/MUNGA/ANGLE.TCP new file mode 100644 index 0000000..2df1926 --- /dev/null +++ b/CODE/BT/MUNGA/ANGLE.TCP @@ -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; +} diff --git a/CODE/BT/MUNGA/APP.THP b/CODE/BT/MUNGA/APP.THP new file mode 100644 index 0000000..c96d6c9 --- /dev/null +++ b/CODE/BT/MUNGA/APP.THP @@ -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 diff --git a/CODE/BT/MUNGA/APPMGR.HPP b/CODE/BT/MUNGA/APPMGR.HPP new file mode 100644 index 0000000..bfe5cdc --- /dev/null +++ b/CODE/BT/MUNGA/APPMGR.HPP @@ -0,0 +1,33 @@ +#if !defined(APPMGR_HPP) +# define APPMGR_HPP + +# if !defined(APP_HPP) +# include +# 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 + runningApplications; + }; + +#endif diff --git a/CODE/BT/MUNGA/AUDTIME.CPP b/CODE/BT/MUNGA/AUDTIME.CPP new file mode 100644 index 0000000..ad9f401 --- /dev/null +++ b/CODE/BT/MUNGA/AUDTIME.CPP @@ -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 +#pragma hdrstop + +#if !defined(AUDIO_HPP) + #include +#endif + +#if !defined(AUDTIME_HPP) + #include +#endif + +#if !defined(APP_HPP) + #include +#endif + +#if !defined(AUDREND_HPP) + #include +#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()); +} + diff --git a/CODE/BT/MUNGA/AUDTOOLS.HPP b/CODE/BT/MUNGA/AUDTOOLS.HPP new file mode 100644 index 0000000..37e76f5 --- /dev/null +++ b/CODE/BT/MUNGA/AUDTOOLS.HPP @@ -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 +# endif + +# if !defined(CSTR_HPP) +# include +# 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 + diff --git a/CODE/BT/MUNGA/AUDWGT.CPP b/CODE/BT/MUNGA/AUDWGT.CPP new file mode 100644 index 0000000..83d72d9 --- /dev/null +++ b/CODE/BT/MUNGA/AUDWGT.CPP @@ -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 +#pragma hdrstop + +#if !defined(AUDWGT_HPP) +# include +#endif + +//############################################################################# +//########################## AudioWeighting ############################# +//############################################################################# + +const AudioWeighting + AudioWeighting::Null; + +// +//############################################################################# +//############################################################################# +// +Logical + AudioWeighting::TestInstance() const +{ + return True; +} + diff --git a/CODE/BT/MUNGA/AVERAGE.CPP b/CODE/BT/MUNGA/AVERAGE.CPP new file mode 100644 index 0000000..97e3dcc --- /dev/null +++ b/CODE/BT/MUNGA/AVERAGE.CPP @@ -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 +#pragma hdrstop + +#if !defined(AVERAGE_HPP) +# include +#endif + diff --git a/CODE/BT/MUNGA/BOXLIST.HPP b/CODE/BT/MUNGA/BOXLIST.HPP new file mode 100644 index 0000000..41f80f8 --- /dev/null +++ b/CODE/BT/MUNGA/BOXLIST.HPP @@ -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 +# endif + +# if !defined(MEMBLOCK_HPP) +# include +# endif + +# if !defined(POINT3D_HPP) +# include +# 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 diff --git a/CODE/BT/MUNGA/CMPNNT.HPP b/CODE/BT/MUNGA/CMPNNT.HPP new file mode 100644 index 0000000..b0d0c90 --- /dev/null +++ b/CODE/BT/MUNGA/CMPNNT.HPP @@ -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 +# 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 + diff --git a/CODE/BT/MUNGA/COLOR.CPP b/CODE/BT/MUNGA/COLOR.CPP new file mode 100644 index 0000000..dc566f1 --- /dev/null +++ b/CODE/BT/MUNGA/COLOR.CPP @@ -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 +#pragma hdrstop + +#if !defined(COLOR_HPP) +# include +#endif + +#if !defined(CSTR_HPP) + #include +#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); +} + diff --git a/CODE/BT/MUNGA/COLOR.HPP b/CODE/BT/MUNGA/COLOR.HPP new file mode 100644 index 0000000..1df9e24 --- /dev/null +++ b/CODE/BT/MUNGA/COLOR.HPP @@ -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 + #endif + + #if !defined(SCALAR_HPP) + #include + #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 + +//============================================================================= diff --git a/CODE/BT/MUNGA/CSTR.TCP b/CODE/BT/MUNGA/CSTR.TCP new file mode 100644 index 0000000..2943322 --- /dev/null +++ b/CODE/BT/MUNGA/CSTR.TCP @@ -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; +} + diff --git a/CODE/BT/MUNGA/DEBUGOFF.HPP b/CODE/BT/MUNGA/DEBUGOFF.HPP new file mode 100644 index 0000000..57c3006 --- /dev/null +++ b/CODE/BT/MUNGA/DEBUGOFF.HPP @@ -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)) + diff --git a/CODE/BT/MUNGA/DEBUGOLD.HPP b/CODE/BT/MUNGA/DEBUGOLD.HPP new file mode 100644 index 0000000..d1b2fac --- /dev/null +++ b/CODE/BT/MUNGA/DEBUGOLD.HPP @@ -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 +# elif OLD_DEBUG_LEVEL==2 +# include +# elif OLD_DEBUG_LEVEL==1 +# include +# else +# include +# endif +#endif + diff --git a/CODE/BT/MUNGA/EVTSTAT.CPP b/CODE/BT/MUNGA/EVTSTAT.CPP new file mode 100644 index 0000000..c69edf3 --- /dev/null +++ b/CODE/BT/MUNGA/EVTSTAT.CPP @@ -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 +#pragma hdrstop + +#if !defined(EVTSTAT_HPP) +# include +#endif + +#if !defined(APP_HPP) +# include +#endif + +#if !defined(REGISTRY_HPP) +# include +#endif + +#if !defined(ENTITY_HPP) +# include +#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 + 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(); +} + diff --git a/CODE/BT/MUNGA/EVTSTAT.HPP b/CODE/BT/MUNGA/EVTSTAT.HPP new file mode 100644 index 0000000..71c108e --- /dev/null +++ b/CODE/BT/MUNGA/EVTSTAT.HPP @@ -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 +# endif + +# if !defined(RECEIVER_HPP) +# include +# endif + +# if !defined(TABLE_HPP) +# include +# 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 + eventStatisticsSocket; + Logical + printedReport; + }; + + extern EventStatisticsManager + event_statistics_manager; + +#endif \ No newline at end of file diff --git a/CODE/BT/MUNGA/FILESTRM.CPP b/CODE/BT/MUNGA/FILESTRM.CPP new file mode 100644 index 0000000..6ba166a --- /dev/null +++ b/CODE/BT/MUNGA/FILESTRM.CPP @@ -0,0 +1,152 @@ +#include +#pragma hdrstop + +#if !defined(FILESTRM_HPP) +# include +#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; +} + diff --git a/CODE/BT/MUNGA/FILESTRM.HPP b/CODE/BT/MUNGA/FILESTRM.HPP new file mode 100644 index 0000000..534aad0 --- /dev/null +++ b/CODE/BT/MUNGA/FILESTRM.HPP @@ -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 +# 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 + diff --git a/CODE/BT/MUNGA/FILESTRM.TCP b/CODE/BT/MUNGA/FILESTRM.TCP new file mode 100644 index 0000000..f897d09 --- /dev/null +++ b/CODE/BT/MUNGA/FILESTRM.TCP @@ -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 + +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; +}; diff --git a/CODE/BT/MUNGA/FILESTUB.CPP b/CODE/BT/MUNGA/FILESTUB.CPP new file mode 100644 index 0000000..2170a1e --- /dev/null +++ b/CODE/BT/MUNGA/FILESTUB.CPP @@ -0,0 +1,78 @@ +#include +#pragma hdrstop + +#if !defined(FILESTRM_HPP) +# include +#endif + +#include +#include +#include + +//############################################################################# +//########################### 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); +} + diff --git a/CODE/BT/MUNGA/HEAP.HPP b/CODE/BT/MUNGA/HEAP.HPP new file mode 100644 index 0000000..179d241 --- /dev/null +++ b/CODE/BT/MUNGA/HEAP.HPP @@ -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 + #endif + +# if !defined(MEMREG_HPP) +# include +# 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 + diff --git a/CODE/BT/MUNGA/HOST.TCP b/CODE/BT/MUNGA/HOST.TCP new file mode 100644 index 0000000..cfc587f --- /dev/null +++ b/CODE/BT/MUNGA/HOST.TCP @@ -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); +} diff --git a/CODE/BT/MUNGA/HOSTID.HPP b/CODE/BT/MUNGA/HOSTID.HPP new file mode 100644 index 0000000..24ddf22 --- /dev/null +++ b/CODE/BT/MUNGA/HOSTID.HPP @@ -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 +# endif + + // + //--------------------------------------------------- + // Support types for host manager + //--------------------------------------------------- + // + typedef Enumeration HostID; + + const HostID NullHostID = 0; + const HostID MapHostID = -1; + const HostID FirstLegalHostID = 1; + +#endif diff --git a/CODE/BT/MUNGA/LINE.CPP b/CODE/BT/MUNGA/LINE.CPP new file mode 100644 index 0000000..b2f9f3f --- /dev/null +++ b/CODE/BT/MUNGA/LINE.CPP @@ -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 +#pragma hdrstop + +#if !defined(LINE_HPP) +# include +#endif + +#if !defined(PLANE_HPP) +# include +#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 +} + diff --git a/CODE/BT/MUNGA/LINE.HPP b/CODE/BT/MUNGA/LINE.HPP new file mode 100644 index 0000000..87e65d3 --- /dev/null +++ b/CODE/BT/MUNGA/LINE.HPP @@ -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 +# 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 diff --git a/CODE/BT/MUNGA/LINK.CPP b/CODE/BT/MUNGA/LINK.CPP new file mode 100644 index 0000000..2780348 --- /dev/null +++ b/CODE/BT/MUNGA/LINK.CPP @@ -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 +#pragma hdrstop + +#if !defined(LINK_HPP) + #include +#endif + +#if !defined(PLUG_HPP) + #include +#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; +} diff --git a/CODE/BT/MUNGA/LINMTRX.TCP b/CODE/BT/MUNGA/LINMTRX.TCP new file mode 100644 index 0000000..7fef7b3 --- /dev/null +++ b/CODE/BT/MUNGA/LINMTRX.TCP @@ -0,0 +1,23 @@ +//===========================================================================// +// File: linmtrx.cc // +// Project: MUNGA Brick: Math Library // +// Contents: Implementation details for the linear matrices // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 11/20/94 JMA Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1994, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// +#include "random.hpp" +// +//########################################################################### +//########################################################################### +// +Logical LinearMatrix::TestClass() +{ + return False; +} + diff --git a/CODE/BT/MUNGA/MATRIX.TCP b/CODE/BT/MUNGA/MATRIX.TCP new file mode 100644 index 0000000..e84d3ca --- /dev/null +++ b/CODE/BT/MUNGA/MATRIX.TCP @@ -0,0 +1,22 @@ +//===========================================================================// +// File: matrix.cc // +// Project: MUNGA Brick: Math Library // +// Contents: Implementation details for the matrix class // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 11/21/94 JMA Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1994, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +Logical + Matrix4x4::TestClass() +{ + DEBUG_STREAM << "Starting Matrix4x4 test...\n"; + Tell(" Matrix4x4::TestClass() is stubbed out!\n"); + return False; +} + diff --git a/CODE/BT/MUNGA/MEMBLOCK.TCP b/CODE/BT/MUNGA/MEMBLOCK.TCP new file mode 100644 index 0000000..fbaaea4 --- /dev/null +++ b/CODE/BT/MUNGA/MEMBLOCK.TCP @@ -0,0 +1,43 @@ +//===========================================================================// +// File: memblock.tst // +// Project: MUNGA Brick: Memory Manager // +// Contents: Test functions for memoryblock classes // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 10/23/94 JMA Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1994, Virtual World Entertainment, Inc. All Rights reserved // +// PROPRIETARY AND CONFIDENTIAL // +//===========================================================================// + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ MemoryBlock ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +// +//############################################################################# +//############################################################################# +// +Logical + MemoryBlock::TestClass() +{ + DEBUG_STREAM << "Starting MemoryBlock test...\n"; + + Tell(" MemoryBlock::TestClass() is stubbed out!\n"); + return False; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ MemoryStack ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +// +//########################################################################### +//########################################################################### +// +Logical + MemoryStack::TestClass() +{ + DEBUG_STREAM << "Starting MemoryStack test...\n"; + + Tell(" MemoryStack::TestClass() is stubbed out!\n"); + return False; +} + diff --git a/CODE/BT/MUNGA/MODE.CPP b/CODE/BT/MUNGA/MODE.CPP new file mode 100644 index 0000000..ce8cc31 --- /dev/null +++ b/CODE/BT/MUNGA/MODE.CPP @@ -0,0 +1,75 @@ +//==========================================================================// +// File: mode.cpp // +// Project: MUNGA Brick: Controls Manager // +// Contents: Interface specification for Controls/Gauges // +//--------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ----------------------------------------------------------// +// 02/13/96 CPB First created // +//--------------------------------------------------------------------------// +// Copyright (C) 1996, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//==========================================================================// + +#include +#pragma hdrstop + +#if !defined(MODE_HPP) +# include +#endif + +#if defined(DEBUG) +# define Test_Tell(n) DEBUG_STREAM << n +#else +# define Test_Tell(n) +#endif + +//############################################################################ +//############################ ModeManager ############################# +//############################################################################ +ModeManager::ModeManager(ModeMask initial_mask) +{ + Check_Pointer(this); + + modeMask = initial_mask; + + Check_Fpu(); +} + +ModeManager::~ModeManager() +{ + Check(this); + Check_Fpu(); +} + +Logical + ModeManager::TestInstance() const +{ + Check_Fpu(); + return True; +} + +Logical + ModeManager::ModeStringLookup( + const char *name, + ModeMask *returned_value + ) +{ + Check(this); + + // There's only one mode value available at this level. + + if (stricmp(name, "ModeAlwaysActive") == 0) + { + *returned_value = ModeManager::ModeAlwaysActive; + Check_Fpu(); + return True; + } + else + { + *returned_value = (ModeMask) 0; + } + Check_Fpu(); + return False; +} diff --git a/CODE/BT/MUNGA/MOTION.HPP b/CODE/BT/MUNGA/MOTION.HPP new file mode 100644 index 0000000..d4ee506 --- /dev/null +++ b/CODE/BT/MUNGA/MOTION.HPP @@ -0,0 +1,88 @@ +//===========================================================================// +// File: motion.hh // +// Project: MUNGA Brick: Math Library // +// Contents: Implementation details for the position class // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 01/30/95 JMA Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(MOTION_HPP) +# define MOTION_HPP + +# if !defined(VECTOR3D_HPP) +# include +# endif + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~ Motion ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class Motion + { + public: + #if defined(USE_SIGNATURE) + friend int + Is_Signature_Bad(const volatile Motion *); + #endif + + Vector3D + linearMotion; + Vector3D + angularMotion; + + static const Motion + Identity; + + // + // Constructors + // + Motion() + {} + Motion(const Motion& motion); + Motion( + const Vector3D& t, + const Vector3D& q + ) + {Check(&t); Check(&q); linearMotion = t; angularMotion = q;} + + // + // Assignment operators + // + Motion& + operator=(const Motion& p); + + // + // Equality operator + // + Logical + operator==(const Motion&) const; + + // + // Origin motion + // + Motion& + AddScaled( + const Motion& source, + const Motion& delta, + Scalar t + ); + + // + // Support functions + // + friend ostream& + operator<<( + ostream& stream, + const Motion& p + ); + Logical + TestInstance() const; + static Logical + TestClass(); + }; + +#endif diff --git a/CODE/BT/MUNGA/MSSCCPRJ.SCC b/CODE/BT/MUNGA/MSSCCPRJ.SCC new file mode 100644 index 0000000..b337d03 --- /dev/null +++ b/CODE/BT/MUNGA/MSSCCPRJ.SCC @@ -0,0 +1,5 @@ +SCC = This is a Source Code Control file + +[MUNGA.MAK] +SCC_Aux_Path = "\\AVATAR\Mungass\VSS" +SCC_Project_Name = "$/Tesla_BT/MUNGA", WOCAAAAA diff --git a/CODE/BT/MUNGA/MTRXSTK.CPP b/CODE/BT/MUNGA/MTRXSTK.CPP new file mode 100644 index 0000000..d6160b0 --- /dev/null +++ b/CODE/BT/MUNGA/MTRXSTK.CPP @@ -0,0 +1,65 @@ +//===========================================================================// +// File: mtrxstk.cc // +// Project: MUNGA Brick: Math Library // +// Contents: Interface specification for the matrix class // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 11/21/94 JMA Initial coding. // +// 12/01/94 JMA Changed Matrix to FullMatrix, based both matrix classes on // +// Matrix44Base // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#include + +#if !defined(MTRXSTK_HPP) +# include +#endif + +AffineMatrixStack& + AffineMatrixStack::Concatenate(const AffineMatrix& matrix) +{ + AffineMatrix *old_top = Cast_Object(AffineMatrix*,Peek()); + AffineMatrix *new_top = (AffineMatrix*)MemoryStack::Push(); + new_top->Multiply(*old_top,matrix); + return *this; +} + +LinearMatrixStack& + LinearMatrixStack::Concatenate(const LinearMatrix& matrix) +{ + LinearMatrix *old_top = Cast_Object(LinearMatrix*,Peek()); + LinearMatrix *new_top = (LinearMatrix*)MemoryStack::Push(); + new_top->Multiply(*old_top,matrix); + return *this; +} + +Matrix4x4Stack& + Matrix4x4Stack::Concatenate(const Matrix4x4& matrix) +{ + Matrix4x4 *old_top = Cast_Object(Matrix4x4*,Peek()); + Matrix4x4 *new_top = (Matrix4x4*)MemoryStack::Push(); + new_top->Multiply(*old_top,matrix); + return *this; +} + +Matrix4x4Stack& + Matrix4x4Stack::Concatenate(const AffineMatrix& matrix) +{ + Matrix4x4 *old_top = Cast_Object(Matrix4x4*,Peek()); + Matrix4x4 *new_top = (Matrix4x4*)MemoryStack::Push(); + new_top->Multiply(*old_top,matrix); + return *this; +} + +Matrix4x4& + Matrix4x4Stack::Push(const AffineMatrix& matrix) +{ + Matrix4x4 *new_top = (Matrix4x4*)MemoryStack::Push(); + return *new_top = matrix; +} + diff --git a/CODE/BT/MUNGA/MUNGA.HPP b/CODE/BT/MUNGA/MUNGA.HPP new file mode 100644 index 0000000..0481ec5 --- /dev/null +++ b/CODE/BT/MUNGA/MUNGA.HPP @@ -0,0 +1,82 @@ +#if !defined(MUNGA_HPP) +# define MUNGA_HPP +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include + +# if defined(__BCPLUSPLUS__) +# include +# endif + +# if defined(LBE4) +# include +# else +# include +# endif + + enum { + NullExitCodeID = 0, + AbortExitCodeID + }; + +# if !defined(TRACE_HPP) +# include +# endif + +# if !defined(NO_PRECOMPILED_HEADERS) +# if !defined(CSTR_HPP) +# include +# endif + +# if !defined(NAMELIST_HPP) +# include +# endif + +# if !defined(NOTATION_HPP) +# include +# endif + +# if !defined(SLOT_HPP) +# include +# endif + +# if !defined(CHAIN_HPP) +# include +# endif + +# if !defined(SCHAIN_HPP) +# include +# endif + +# if !defined(VCHAIN_HPP) +# include +# endif + +# if !defined(TABLE_HPP) +# include +# endif + +# if !defined(TREE_HPP) +# include +# endif + +# if !defined(HASH_HPP) +# include +# endif + +# if !defined(ORIGIN_HPP) +# include +# endif + +# endif + +#endif diff --git a/CODE/BT/MUNGA/NODE.CPP b/CODE/BT/MUNGA/NODE.CPP new file mode 100644 index 0000000..6c55e27 --- /dev/null +++ b/CODE/BT/MUNGA/NODE.CPP @@ -0,0 +1,52 @@ +//===========================================================================// +// File: node.cc // +// Project: MUNGA Brick: Connection Library // +// Contents: Implementation details of Node class // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 09/29/94 ECH Initial coding. // +// 10/20/94 JMA Fixed style stuff. // +// 10/23/94 ECH Added greater deletion safety // +// 10/28/94 JMA Made compatible with SGI CC // +// 11/03/94 ECH Made compatible with BC4.0 // +// 11/05/94 JMA Made compatible with GNU C++, moved ReleaseSocketLink into // +// the virtual data field // +// 11/08/94 ECH Made compatible with BC4.0 // +// 12/01/94 JMA Made compatible with SGI CC // +// 12/12/94 ECH Changed release handler // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(NODE_HPP) + #include +#endif + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Node ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Node::Node(ClassID class_id): + Plug(class_id) +{ +} + +Node::Node(PlugStream *stream): + Plug(stream) +{ +} + +Node::~Node() +{ +} + +void + Node::ReleaseLinkHandler(Socket*, Plug*) +{ +} + + diff --git a/CODE/BT/MUNGA/NORMAL.CPP b/CODE/BT/MUNGA/NORMAL.CPP new file mode 100644 index 0000000..dbc4bd3 --- /dev/null +++ b/CODE/BT/MUNGA/NORMAL.CPP @@ -0,0 +1,69 @@ +//===========================================================================// +// File: normal.cc // +// Project: MUNGA Brick: Math Library // +// Contents: Implementation details for the normal class // +//---------------------------------------------------------------------------// +// 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 // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(NORMAL_HPP) + #include +#endif + +#if !defined(AFFNMTRX_HPP) + #include +#endif + +// +//############################################################################# +//############################################################################# +// +Normal& + Normal::Multiply_Inverse( + const Normal &Source, + const AffineMatrix &M + ) +{ + Check(this); + Check(&Source); + Check(&M); + + x = Source.x*M(0,0) + Source.y*M(0,1) + Source.z*M(0,2); + y = Source.x*M(1,0) + Source.y*M(1,1) + Source.z*M(1,2); + z = Source.x*M(2,0) + Source.y*M(2,1) + Source.z*M(2,2); + + return *this; +} + +// +//############################################################################# +//############################################################################# +// +Normal& + Normal::Multiply( + const Normal &Source, + const AffineMatrix &M + ) +{ + Check(this); + Check(&Source); + Check(&M); + + AffineMatrix m; + m.Invert(M); + return Multiply_Inverse(Source,m); +} + +#if defined(TEST_CLASS) +# include "normal.tcp" +#endif + diff --git a/CODE/BT/MUNGA/NORMAL.TCP b/CODE/BT/MUNGA/NORMAL.TCP new file mode 100644 index 0000000..2d51150 --- /dev/null +++ b/CODE/BT/MUNGA/NORMAL.TCP @@ -0,0 +1,22 @@ +//===========================================================================// +// File: normal.cc // +// Project: MUNGA Brick: Math Library // +// Contents: Implementation details for the normal class // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 11/19/94 JMA Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1994, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +Logical + Normal::TestClass() +{ + DEBUG_STREAM << "Starting Normal Test...\n"; + Tell(" Normal::TestClass() is stubbed out!\n"); + return False; +} + diff --git a/CODE/BT/MUNGA/ORIGIN.TCP b/CODE/BT/MUNGA/ORIGIN.TCP new file mode 100644 index 0000000..9d7ccf4 --- /dev/null +++ b/CODE/BT/MUNGA/ORIGIN.TCP @@ -0,0 +1,67 @@ +//===========================================================================// +// File: origin.tst // +// Project: MUNGA Brick: Math Library // +// Contents: Implementation details for the position class // +//---------------------------------------------------------------------------// +// 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 // +//===========================================================================// + +#if !defined(LINMTRX_HPP) + #include +#endif + +// +//########################################################################### +//########################################################################### +// +Logical + Origin::TestClass() +{ + DEBUG_STREAM << "Starting Origin test...\n"; + + Point3D p(1.0f,2.0f,3.0f); + Quaternion q(0.0f, 1.0f, 0.0f, 0.0f); + + Quaternion r; + r = q; + const Origin + a(p,r); + Origin + b; + + Quaternion t; + t = a.angularPosition; + Test( + a.linearPosition == p + && t.x == q.x + && t.w == q.w + ); + + LinearMatrix + m; + + m = a; + b = m; + t = b; + Test( + a.linearPosition == b.linearPosition + && t.y == q.y + ); + + b = Point3D(3.0f,2.0f,1.0f); + p = b; + Test(p == Point3D(3.0f,2.0f,1.0f)); + Quaternion s(1.0f, 0.0f, 0.0f, 0.0f); + b = s; + q = b; + Test(q.x == s.x && q.y == s.y && q.z == s.z && q.w == s.w); + + return True; +} + diff --git a/CODE/BT/MUNGA/POINT2D.HPP b/CODE/BT/MUNGA/POINT2D.HPP new file mode 100644 index 0000000..3efce15 --- /dev/null +++ b/CODE/BT/MUNGA/POINT2D.HPP @@ -0,0 +1,149 @@ +//===========================================================================// +// File: point.hh // +// Project: MUNGA Brick: Math Library // +// Contents: Interface specification of the point class // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 11/19/94 JMA Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1994, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(POINT2D_HPP) +# define POINT2D_HPP + +# if !defined(VECTOR3D_HPP) +# include +# endif + +# if !defined(VECTOR4D_HPP) +# include +# endif + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Point2D ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + template class Point2DOf: + public Vector2DOf + { + public: + // + // Constructors + // + Point2DOf() + {} + Point2DOf( + T x, + T y + ): + Vector2DOf(x,y) + {} + Point2DOf(const Vector2DOf &v): + Vector2DOf(v) + {} + + // + // Assignment operators + // + Point2DOf& operator=(const Vector2DOf& v) + {Vector2DOf::operator=(v); return *this;} + + // + // Math operators + // + Point2DOf& + Negate(const Vector2DOf &v) + {Vector2DOf::Negate(v); return *this;} + + Point2DOf& + Add( + const Vector2DOf& v1, + const Vector2DOf& v2 + ) + {Vector2DOf::Add(v1,v2); return *this;} + Point2DOf& + operator+=(const Vector2DOf& v) + {return Add(*this,v);} + + Point2DOf& + Subtract( + const Point2DOf& p, + const Vector2DOf& v + ) + {Vector2DOf::Subtract(p,v); return *this;} + Point2DOf& + operator-=(const Vector2DOf& v) + {return Subtract(*this,v);} + + float + operator*(const Vector2DOf& v) const + {return Vector2DOf::operator*(v);} + + Point2DOf& + Multiply( + const Point2DOf& p, + float scale + ) + {Vector2DOf::Multiply(p,scale); return *this;} + Point2DOf& + operator*=(float value) + {return Multiply(*this,value);} + + Point2DOf& + Multiply( + const Point2DOf& p, + const Vector2DOf& v + ) + {Vector2DOf::Multiply(p,v); return *this;} + Point2DOf& + operator*=(const Vector2DOf &v) + {return Multiply(*this,v);} + + Point2DOf& + Divide( + const Vector2DOf& v, + float scale + ) + {Vector2DOf::Divide(v,scale); return *this;} + Point2DOf& + operator/=(float value) + {return Divide(*this,value);} + + Point2DOf& + Divide( + const Vector2DOf& v1, + const Vector2DOf& v2 + ) + {Vector2DOf::Divide(v1,v2); return *this;} + Point2DOf& + operator/=(const Vector2DOf &v) + {return Divide(*this,v);} + + // + // Miscellaneous functions + // + Point2DOf& + Combine( + const Vector2DOf& v1, + float t1, + const Vector2DOf& v2, + float t2 + ) + {Vector2DOf::Combine(v1,t1,v2,t2); return *this;} + + // + // Template support functions + // + Point2DOf& + Lerp( + const Vector2DOf& v1, + const Vector2DOf& v2, + float t + ) + {Vector2DOf::Lerp(v1,v2,t); return *this;} + }; + +#endif + diff --git a/CODE/BT/MUNGA/RANDOM.HPP b/CODE/BT/MUNGA/RANDOM.HPP new file mode 100644 index 0000000..9e03af1 --- /dev/null +++ b/CODE/BT/MUNGA/RANDOM.HPP @@ -0,0 +1,74 @@ +//===========================================================================// +// File: random.cc // +// Project: MUNGA Brick: Math Library // +// Contents: Interface specification for the random number generator // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 11/20/93 JMA Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1993-1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(RANDOM_HPP) +# define RANDOM_HPP + +# if !defined(SCALAR_HPP) +# include +# endif + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Random ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class RandomGenerator SIGNATURED + { + private: + static int + Numbers[250]; // the random number table + static int + Index; // the current entry within the table + + static void + Init(); + + static int + GetRandomInt(); + + public: + RandomGenerator() + {if (Index == -1) Init();} + + // + //------------------------ + // Random number functions + //------------------------ + // + int + GetInt() // returns 0 .. RAND_MAX + {return GetRandomInt();} + operator Scalar(); // returns 0.0f <= x < 1.0f + int // returns 0 .. Range-1 + operator ()(int Range); + + static Logical + TestClass(); + }; + + extern RandomGenerator Random; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Die ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class Die SIGNATURED + { + private: + int + highestRandom, // the highest random number giving a uniform dist. + dieSides; // the number of sides on the die (starting from 1) + + public: + Die(int sides); + operator int(); // returns 1 .. dieSides + }; + +#endif diff --git a/CODE/BT/MUNGA/RANDOM.TCP b/CODE/BT/MUNGA/RANDOM.TCP new file mode 100644 index 0000000..0e957d0 --- /dev/null +++ b/CODE/BT/MUNGA/RANDOM.TCP @@ -0,0 +1,44 @@ +//===========================================================================// +// File: random.tst // +// Project: MUNGA Brick: Math Library // +// Contents: test function for the random number generator // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 11/20/93 JMA Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1993-1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +Logical + RandomGenerator::TestClass() +{ + DEBUG_STREAM << "Starting Random test...\n"; + +#define RANDOM_TEST_COUNT 10000 + + int i; + for (i=0; i= 0.0f && r < 1.0f,r); + } + + int array[10]; + for (i = 0; i= 0 && r < ELEMENTS(array)); + ++array[r]; + } + + return True; +} + diff --git a/CODE/BT/MUNGA/RAY.HPP b/CODE/BT/MUNGA/RAY.HPP new file mode 100644 index 0000000..3406a54 --- /dev/null +++ b/CODE/BT/MUNGA/RAY.HPP @@ -0,0 +1,101 @@ +//########################################################################### +// +// $Workfile: RAY.HPP $ +// +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Copyright(c) 1993 J. M. Albertson - All Rights Reserved +// +//########################################################################### + +#if !defined(RAY_HPP) +# define RAY_HPP + +# if !defined(POINT3D_HPP) +# include +# endif + +# if !defined(UNITVEC_HPP) +# include +# endif + + class Plane; + class Sphere; + class Cylinder; + class Cone; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ray ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class Ray SIGNATURED + { + public: + Point3D + origin; + UnitVector + direction; + + Ray() + {} + Ray( + const Point3D &origin, + const UnitVector &direction + ): + origin(origin), + direction(direction) + {} + + // + // Ray projection functions + // + void + Project( + Scalar length, + Point3D *result + ); + Scalar + LengthToClosestPointTo(const Point3D &point); + void + ClosestPointTo( + const Point3D &point, + Point3D *result + ) + { + Check(this); Check(result); Check(&point); + Project(LengthToClosestPointTo(point),result); + } + + // + // Ray intersection functions + // + Scalar + DistanceTo( + const Plane &plane, + Scalar *product + ) const; + Scalar + DistanceTo( + const Sphere &sphere, + Scalar *penetration + ) const; + + // + // Test support + // + Logical + TestInstance() const; + static Logical + TestClass(); + }; + + extern Scalar + Find_Closest_Approach( + const Point3D& origin1, + const Vector3D& velocity1, + Point3D *result1, + const Point3D& origin2, + const Vector3D& velocity2, + Point3D *result2, + Scalar *time, + Logical *constant + ); + +#endif diff --git a/CODE/BT/MUNGA/RAY.TCP b/CODE/BT/MUNGA/RAY.TCP new file mode 100644 index 0000000..5ff72d9 --- /dev/null +++ b/CODE/BT/MUNGA/RAY.TCP @@ -0,0 +1,22 @@ +//===========================================================================// +// File: ray.tst // +// Project: MUNGA Brick: Math Library // +// Contents: Implementation details for the ray class // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 11/25/94 JMA Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +Logical + Ray::TestClass() +{ + DEBUG_STREAM << "Starting Ray test...\n"; + Tell(" Ray::TestClass is stubbed out!\n"); + return True; +} + diff --git a/CODE/BT/MUNGA/RECT2D.HPP b/CODE/BT/MUNGA/RECT2D.HPP new file mode 100644 index 0000000..834b52c --- /dev/null +++ b/CODE/BT/MUNGA/RECT2D.HPP @@ -0,0 +1,90 @@ +//===========================================================================// +// File: Rect2D.hh // +// Project: MUNGA Brick: Math Library // +// Contents: Interface specification for two-dimensional rectangle class // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 2/01/95 CPB Initial coding (started from Vector2D.hh) // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. All rights reserved // +// PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(RECT2D_HPP) +# define RECT2D_HPP + +# if !defined(VECTOR2D_HPP) +# include +# endif + + // Note that the coordinate system used here is such that + // (0,0) is in the lower left corner. + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Rectangle2D ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class Rectangle2D SIGNATURED + { + public: + Vector2DOf bottomLeft, topRight; + + Rectangle2D(); + Rectangle2D(Vector2DOf bl, Vector2DOf tr); + Rectangle2D(int x1, int y1, int x2, int y2); + ~Rectangle2D() + {} + + Logical + operator==(const Rectangle2D& r) const + {return ((bottomLeft == r.bottomLeft) && (topRight == r.topRight));} + Logical + operator!=(const Rectangle2D& r) const + {return ((bottomLeft != r.bottomLeft) || (topRight != r.topRight));} + + void + Union( + const Rectangle2D& r1, + const Rectangle2D& r2 + ); + + void + Intersection( + const Rectangle2D& r1, + const Rectangle2D& r2 + ); + + void + MakeEmpty() + { + Check(this); + bottomLeft.x = 1; + topRight.x = 0; + } + + Logical + IsEmpty() const + { + if ((bottomLeft.x > topRight.x) || (bottomLeft.y > topRight.y)) + { + return True; + } + else + { + return False; + } + } + + + friend ostream& + operator<<( + ostream& stream, + const Rectangle2D& r + ); + + Logical + TestInstance() const; + + static Logical + TestClass(); + }; +#endif diff --git a/CODE/BT/MUNGA/RENDERER.TCP b/CODE/BT/MUNGA/RENDERER.TCP new file mode 100644 index 0000000..9480cee --- /dev/null +++ b/CODE/BT/MUNGA/RENDERER.TCP @@ -0,0 +1,57 @@ +//===========================================================================// +// File: renderer.tst // +// Project: MUNGA Brick: Renderer Manager // +// Contents: Interface specification Renderer and Renderer Manager // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 01/06/95 ECH Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1994, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#include "renderer.thp" + +TestRenderer::TestRenderer(): + Renderer( + 30.0f, + MaxRendererComplexity, + DefaultRendererPriority, + VisualInterestType, + DefaultInterestDepth + ) +{ +} + +TestRenderer::~TestRenderer() +{ +} + +Logical + TestRenderer::TestInstance() const +{ + Renderer::TestInstance(); + return True; +} + +void + TestRenderer::ExecuteImplementation( + RendererComplexity, + RendererOrigin::InterestingEntityIterator *interesting_entity_iterator + ) +{ + Check(interesting_entity_iterator); + + // + // HACK - Just step through the entities + // + Entity *entity; + + while ((entity = interesting_entity_iterator->ReadAndNext()) != NULL) + { + Check(entity); + } +} + diff --git a/CODE/BT/MUNGA/RENDERER.THP b/CODE/BT/MUNGA/RENDERER.THP new file mode 100644 index 0000000..6cd0f53 --- /dev/null +++ b/CODE/BT/MUNGA/RENDERER.THP @@ -0,0 +1,48 @@ +//===========================================================================// +// File: tstrend.hh // +// Project: MUNGA Brick: Renderer Manager // +// Contents: Interface specification Renderer and Renderer Manager // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 01/06/95 ECH Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1994, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(TSTREND_THP) +# define TSTREND_THP + +# if !defined(RENDERER_HPP) +# include +# endif + + class TestRenderer: + public Renderer + { + public: + TestRenderer(); + ~TestRenderer(); + + Logical + TestInstance() const; + + private: + void + LoadMissionImplementation(Mission*) {}; + void + ShutdownImplementation() {}; + void + SuspendImplementation() {}; + void + ResumeImplementation() {}; + void + ExecuteImplementation( + RendererComplexity complexity_update, + RendererOrigin::InterestingEntityIterator *iterator + ); + }; + +#endif diff --git a/CODE/BT/MUNGA/RESVER.HPP b/CODE/BT/MUNGA/RESVER.HPP new file mode 100644 index 0000000..702a834 --- /dev/null +++ b/CODE/BT/MUNGA/RESVER.HPP @@ -0,0 +1,7 @@ +#if !defined(RESVER_HPP) +# define RESVER_HPP + +# define RESOURCE_FORMAT_VERSION 1 + +#endif + diff --git a/CODE/BT/MUNGA/SCALAR.CPP b/CODE/BT/MUNGA/SCALAR.CPP new file mode 100644 index 0000000..abc759e --- /dev/null +++ b/CODE/BT/MUNGA/SCALAR.CPP @@ -0,0 +1,246 @@ +//===========================================================================// +// File: scalar.cpp // +// Project: MUNGA Brick: None assigned - coding styles, etc. // +// Contents: Base information used by all MUNGA source files // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// PROPRIETARY AND CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(SCALAR_HPP) + #include +#endif + +int + Round(Scalar value) +{ + int whole_part = floor(value); + Scalar fractional_part = value - whole_part; + if (fractional_part >= 0.5) + { + return whole_part + 1; + } + else + { + return whole_part; + } +} + + + +void + Find_Roots( + Scalar a, // a*x*x + b*x + c = 0 + Scalar b, + Scalar c, + Scalar *center, + Scalar *range + ) +{ + + // + //--------------------------------- + // See if the quadratic is solvable + //--------------------------------- + // + *range = b*b - 4.0f*a*c; + if (*range < 0.0f || Small_Enough(a)) + { + *range = -1.0f; + } + + else + { + // + //--------------------------- + // Solve the single root case + //--------------------------- + // + a *= 2.0f; + *center = -b / a; + if (*range < SMALL) + { + *range = 0.0f; + } + + // + //-------------------------- + // Find the two-root extents + //-------------------------- + // + else + { + *range = Sqrt(*range); + *range /= a; + } + } +} + +static void + Verify_Arguments( + const char *str, + void *value + ) +{ + if (str == NULL) + { + Fail("Convert_From_Ascii - str == NULL"); + } + if (value == NULL) + { + Fail("Convert_From_Ascii - value == NULL"); + } + if (isalpha(*str)) + { + DEBUG_STREAM << "Convert_From_Ascii - str == " << str << "\n"; + Fail("Convert_From_Ascii - isalpha(*str)"); + } +} + +void + Convert_From_Ascii( + const char *str, + char *value + ) +{ + #if 0 + Check_Pointer(str); + Check_Pointer(value); + if (isalpha(*str)) + { + Dump(str); + } + Verify(!isalpha(*str)); + #else + Verify_Arguments(str, value); + #endif + *value = (char)atoi(str); +} + +void + Convert_From_Ascii( + const char *str, + unsigned char *value + ) +{ + #if 0 + Check_Pointer(str); + Check_Pointer(value); + if (isalpha(*str)) + { + Dump(str); + } + Verify(!isalpha(*str)); + #else + Verify_Arguments(str, value); + #endif + *value = (unsigned char)atoi(str); +} + +void + Convert_From_Ascii( + const char *str, + int *value + ) +{ + #if 0 + Check_Pointer(str); + Check_Pointer(value); + if (isalpha(*str)) + { + Dump(str); + } + Verify(!isalpha(*str)); + #else + Verify_Arguments(str, value); + #endif + *value = atoi(str); +} + +void + Convert_From_Ascii( + const char *str, + unsigned int *value + ) +{ + #if 0 + Check_Pointer(str); + Check_Pointer(value); + if (isalpha(*str)) + { + Dump(str); + } + Verify(!isalpha(*str)); + #else + Verify_Arguments(str, value); + #endif + *value = atoi(str); +} + +void + Convert_From_Ascii( + const char *str, + long *value + ) +{ + #if 0 + Check_Pointer(str); + Check_Pointer(value); + if (isalpha(*str)) + { + Dump(str); + } + Verify(!isalpha(*str)); + #else + Verify_Arguments(str, value); + #endif + *value = atol(str); +} + +void + Convert_From_Ascii( + const char *str, + unsigned long *value + ) +{ + #if 0 + Check_Pointer(str); + Check_Pointer(value); + if (isalpha(*str)) + { + Dump(str); + } + Verify(!isalpha(*str)); + #else + Verify_Arguments(str, value); + #endif + *value = atol(str); +} + +void + Convert_From_Ascii( + const char *str, + Scalar *value + ) +{ + #if 0 + Check_Pointer(str); + Check_Pointer(value); + if (isalpha(*str)) + { + Dump(str); + } + Verify(!isalpha(*str)); + #else + Verify_Arguments(str, value); + #endif + *value = atof(str); +} + + diff --git a/CODE/BT/MUNGA/SCALAR.HPP b/CODE/BT/MUNGA/SCALAR.HPP new file mode 100644 index 0000000..089f7f3 --- /dev/null +++ b/CODE/BT/MUNGA/SCALAR.HPP @@ -0,0 +1,72 @@ +//===========================================================================// +// File: scalar.hpp // +// Project: MUNGA Brick: None assigned - coding styles, etc. // +// Contents: Base information used by all MUNGA source files // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// PROPRIETARY AND CONFIDENTIAL // +//===========================================================================// + +#if !defined(SCALAR_HPP) +# define SCALAR_HPP + +# if !defined(MEMSTRM_HPP) +# include +# endif + +# if !defined(M_PI) +# define M_PI 3.14159265358979323846 +# endif + + typedef float Scalar; + +# define PI ((Scalar)(M_PI)) +# define PI_OVER_2 ((Scalar)(M_PI/2.0)) +# define PI_OVER_3 ((Scalar)(M_PI/3.0)) +# define PI_OVER_4 ((Scalar)(M_PI/4.0)) +# define PI_OVER_6 ((Scalar)(M_PI/6.0)) +# define TWO_PI ((Scalar)(2.0*M_PI)) +# define DEG_PER_RAD ((Scalar)(180.0/M_PI)) +# define RAD_PER_DEG ((Scalar)(M_PI/180.0)) + + inline Scalar Lerp(Scalar a, Scalar b, Scalar t) + {return a*(1.0f - t) + b*t;} + inline Logical Small_Enough(Scalar x,Scalar e=SMALL) + {return fabs(x) <= e;} + inline Logical Close_Enough(Scalar x,Scalar y,Scalar e=SMALL) + {return fabs(x-y) <= e;} + + int + Round(Scalar value); + + void + Find_Roots( + Scalar a, // a*x*x + b*x + c = 0 + Scalar b, + Scalar c, + Scalar *center, + Scalar *range + ); + + inline MemoryStream& + MemoryStream_Read( + MemoryStream* stream, + Scalar *output + ) + {return stream->ReadBytes(output, sizeof(*output));} + inline MemoryStream& + MemoryStream_Write( + MemoryStream* stream, + const Scalar *input + ) + {return stream->WriteBytes(input, sizeof(*input));} + + void + Convert_From_Ascii(const char *str, Scalar *value); + + +#endif + diff --git a/CODE/BT/MUNGA/SCNROLE.HPP b/CODE/BT/MUNGA/SCNROLE.HPP new file mode 100644 index 0000000..446e051 --- /dev/null +++ b/CODE/BT/MUNGA/SCNROLE.HPP @@ -0,0 +1,175 @@ +//===========================================================================// +// File: scnrole.hpp // +// Project: MUNGA // +// Contents: Scenario Mission Specific Data // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 01/9/96 JM initial coding // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined (SCNROLE_HPP) +# define SCNROLE_HPP + +# if !defined (NODE_HPP) +# include +# endif + +# if !defined (CSTR_HPP) +# include +# endif + +# if !defined(RESOURCE_HPP) +# include +# endif + +# if !defined(SCALAR_HPP) +# include +# endif + + class NotationFile; + +//############################################################################## +//##################### ScenarioRole::ModelResource ###################### +//############################################################################## + + struct ScenarioRole__ModelResource + { + Scalar + killBonus, + specialCaseDeathPenalty, + damageReceivedModifier, + damageInflictedModifier, + damageBias, + friendlyFirePenalty; + + int + returnFromDeath; + }; + +//########################################################################### +//##################### Class ScenarioRole ############################# +//########################################################################### + +class ScenarioRole : + public Node +{ + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Score Support + // + public: + + Scalar + CalcDamageReceivedScore(const Scalar &damage_received); + + protected: + + Scalar + damageInflictedModifier, + damageReceivedModifier, + friendlyFirePenalty, + damageBias, + killBonus, + specialCaseDeathPenalty; + + + CString + roleName; + + int + returnFromDeath; + + public: + + const int + GetReturnFromDeath() + { Check(this); return returnFromDeath; } + + Scalar + GetDamageInflictedModifier() const + { Check(this); return damageInflictedModifier; } + + Scalar + GetDamageReceivedModifier() const + { Check(this); return damageReceivedModifier; } + + Scalar + GetFriendlyFirePenalty() const + { Check(this); return friendlyFirePenalty; } + + Scalar + GetDamageBias() const + { Check(this); return damageBias; } + + Scalar + GetKillBonus() const + { Check(this); return killBonus; } + + + Scalar + GetSpecialCaseDeathPenalty() const + { Check(this); return specialCaseDeathPenalty; } + + + CString + GetRoleName() const + {Check(this); return roleName; } + + void + SetDamageInflictedModifier(const Scalar &value) + { Check(this); damageInflictedModifier = value; } + + void + SetDamageReceivedModifier(const Scalar value) + { Check(this); damageReceivedModifier = value; } + + void + SetFriendlyFirePenalty(const Scalar &value) + { Check(this); friendlyFirePenalty = value; } + + void + SetDamageBias(const Scalar &value) + { Check(this); damageBias = value; } + + void + SetKillBonus(const Scalar &value) + { Check(this); killBonus = value; } + + void + SetSpecialCaseDeathPenalty(const Scalar &value) + { Check(this); specialCaseDeathPenalty = value; } + + void + SetReturnFromDeath(const int &value) + { Check(this); returnFromDeath = value ; } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Construction / Destruction + + public: + + typedef ScenarioRole__ModelResource ModelResource; + + ScenarioRole( + const CString &role_name, + const CString &model_file + ); + + ScenarioRole(const CString &role_name); + + ~ScenarioRole(); + + static ResourceDescription::ResourceID + CreateModelResource( + ResourceFile *resource_file, + const char* model_name, + NotationFile * model_file, + const ResourceDirectories *directories, + ModelResource *model = NULL + ); +}; +#endif diff --git a/CODE/BT/MUNGA/SET.CPP b/CODE/BT/MUNGA/SET.CPP new file mode 100644 index 0000000..8fb21f7 --- /dev/null +++ b/CODE/BT/MUNGA/SET.CPP @@ -0,0 +1,165 @@ +//===========================================================================// +// File: set.cpp // +// Project: MUNGA Brick: Connection Engine // +// Contents: Implementation of Sets and useful set operations // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 09/29/94 GDU Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1996 Virtual World Entertainment, Inc. // +// PROPRIETARY AND CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(SET_HPP) +# include +#endif + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Set ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +// +//############################################################################# +// Set +//############################################################################# +// +Set::Set(Node *node): + Socket(node), + contents(NULL) +{ + +} + + + + +// +//############################################################################# +// ~Set +//############################################################################# +// +Set::~Set() +{ + SetReleaseNode(NULL); + if (contents) + { + delete contents; + } +} + +// +//############################################################################# +// TestInstance +//############################################################################# +// +Logical + Set::TestInstance() const +{ + Socket::TestInstance(); + Check(contents); + return True; +} + + +// +//############################################################################# +// Union +// +// Merge contents of this with rhs. Items that occur in either set are placed +// in the resulting set, with no duplication. It is assumed that both operands +// are proper sets, ie. they contain no duplicates. +//############################################################################# +// + +Set + Set::Union(const Set &) const +{ + Check(this); + + + Set result(NULL); + + return result; +} + + +// +//############################################################################# +// Intersection +// +// Merge contents of this with rhs. Items that occur in both sets are placed +// only once in the resulting set. It is assumed that both operands are proper +// sets, ie. they contain no duplicates. +// +// This implementation of set intersection is dumb and slow. +//############################################################################# +// + +Set + Set::Intersection(const Set &rhs) const +{ + Check(this); + Check(rhs); + + // Contents iterator is a SetIterator and not a ChainIterator in order to + // have access to the ChainIterator::ReadAndNextImplentation. + // We circumvent encapsulation protections by declaring Set a friend of SetIterator + // (which derives from ChainIterator). Set is not a friend of ChainIterator. + + SetIterator contents_iterator(contents); + + // Casting away const is safe since our local iterator is not going to insert or + // remove items from rhs. + SetIterator rhs_iterator((Set *) &rhs); + Plug *lhs_plug; + Plug *rhs_plug; + Set result(NULL); + + + while ((lhs_plug = Cast_Object(Plug *, contents_iterator.ReadAndNextImplementation())) != NULL) + { + while ((rhs_plug = Cast_Object(Plug *,rhs_iterator.ReadAndNextImplementation())) != NULL) + { + if (lhs_plug == rhs_plug) + { + result.AddImplementation(lhs_plug); + } + } + } + return result; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SetIterator ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +// +//############################################################################# +// SetIterator +//############################################################################# +// +SetIterator::SetIterator(Set *set): + ChainIterator(set->contents) +{ + Check(set); +} + +SetIterator::SetIterator(const SetIterator &iterator): + ChainIterator(Cast_Object(Chain*, (Cast_Object(Set *,iterator.socket)->contents))) +{ + Check(&iterator); +} + +SetIterator::SetIterator(Chain *chain): + ChainIterator(chain) +{ + Check(chain); +} + +SetIterator::~SetIterator() +{ +} + + + + diff --git a/CODE/BT/MUNGA/SFESKT.HPP b/CODE/BT/MUNGA/SFESKT.HPP new file mode 100644 index 0000000..a68a0b5 --- /dev/null +++ b/CODE/BT/MUNGA/SFESKT.HPP @@ -0,0 +1,86 @@ +//===========================================================================// +// File: sfeskt.hh // +// Project: MUNGA Brick: Connection Engine // +// Contents: Interface definition for safe socket class // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 09/29/94 ECH Initial coding. // +// 10/28/94 JMA Made compatible with SGI CC and merged with iterator // +// 11/03/94 ECH Made compatible with BC4.0 // +// 12/12/94 ECH Changed release mechanism // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// PROPRIETARY AND CONFIDENTIAL // +//===========================================================================// + +#if !defined(SFESKT_HPP) +# define SFESKT_HPP + +# if !defined(SOCKET_HPP) +# include +# endif + + class SafeIterator; + + typedef int IteratorMemo; + + enum + { + PlugAdded = 0, + PlugRemoved, + NextSafeSocketMemo + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~ SafeSocket ~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class SafeSocket: + public Socket + { + friend class SafeIterator; + + public: + ~SafeSocket(); + Logical + TestInstance() const; + + protected: + SafeSocket(Node *node); + + void + SendIteratorMemo( + IteratorMemo memo, + void *content + ); + + private: + SafeIterator *iteratorHead; + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~ SafeIterator ~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class SafeIterator: + public SocketIterator + { + friend class SafeSocket; + + public: + ~SafeIterator(); + Logical + TestInstance() const; + + protected: + SafeIterator(SafeSocket *safeSocket); + + private: + virtual void + ReceiveMemo( + IteratorMemo memo, + void *content + ); + + SafeIterator *nextIterator; + SafeIterator *prevIterator; + }; + +#endif diff --git a/CODE/BT/MUNGA/SPHERE.CPP b/CODE/BT/MUNGA/SPHERE.CPP new file mode 100644 index 0000000..5546312 --- /dev/null +++ b/CODE/BT/MUNGA/SPHERE.CPP @@ -0,0 +1,55 @@ +//=======================================================================// +// File: sphere.cpp // +// Project: Architecture // +// Author: J.M. Albertson // +//-----------------------------------------------------------------------// +// Copyright (C) 1994, Virtual World Entertainments, All Rights reserved // +// PROPRIETARY AND CONFIDENTIAL // +//=======================================================================// + +#include +#pragma hdrstop + +#if !defined(SPHERE_HPP) +# include +#endif + +// +//########################################################################### +//########################################################################### +// +Logical + Sphere::Contains(const Point3D &A_Point) const +{ + Vector3D + diff; + + diff.Subtract(center,A_Point); + return radius*radius >= diff.LengthSquared(); +} + +// +//########################################################################### +//########################################################################### +// +Logical + Sphere::Intersects(const Sphere &sphere) const +{ + Vector3D temp; + Scalar r; + + r = radius + sphere.radius; + temp.Subtract(center, sphere.center); + return temp.LengthSquared() <= r*r; +} + +// +//########################################################################### +//########################################################################### +// +ostream& + operator<<(ostream& Stream, const Sphere &A_Sphere) +{ + Stream << "\n\tSphere Centerpoint: " << A_Sphere.center; + return Stream << "\n\tRadius: " << A_Sphere.radius; +} diff --git a/CODE/BT/MUNGA/SPHERE.HPP b/CODE/BT/MUNGA/SPHERE.HPP new file mode 100644 index 0000000..f8db86d --- /dev/null +++ b/CODE/BT/MUNGA/SPHERE.HPP @@ -0,0 +1,62 @@ +//=======================================================================// +// File: sphere.hpp // +// Project: Architecture // +// Author: J.M. Albertson // +//-----------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainments, // +// PROPRIETARY AND CONFIDENTIAL // +//=======================================================================// + +#if !defined(SPHERE_HPP) +# define SPHERE_HPP + +# if !defined(POINT3D_HPP) +# include +# endif + + class Plane; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Sphere ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class Sphere SIGNATURED + { + public: + Point3D + center; + Scalar + radius; + + Sphere() + {} + Sphere( + const Point3D &A_Point, + Scalar Radius + ): + center(A_Point), + radius(Radius) + {} + Sphere( + Scalar X, + Scalar Y, + Scalar Z, + Scalar Radius + ): + center(X,Y,Z), + radius(Radius) + {} + + // + // Intersection functions + // + Logical + Contains(const Point3D &point) const; + Logical + Intersects(const Sphere &sphere) const; + Logical + Intersects(const Plane &plane) const; + + friend ostream& + operator<<(ostream& Stream, const Sphere &A_Sphere); + }; + +#endif diff --git a/CODE/BT/MUNGA/SPLINE.HPP b/CODE/BT/MUNGA/SPLINE.HPP new file mode 100644 index 0000000..e3a0def --- /dev/null +++ b/CODE/BT/MUNGA/SPLINE.HPP @@ -0,0 +1,43 @@ +#if !defined(SPLINE_HPP) +# define SPLINE_HPP + +# if !defined(AFFNMTRX_HPP) +# include +# endif + + class CubicCurve { + public: + #if defined(USE_SIGNATURE) + friend int + Is_Signature_Bad(const volatile CubicCurve *); + #endif + + CubicCurve( // Hermite form + const Point3D& p1, + const Vector3D& r1, + const Point3D& p4, + const Vector3D& r4 + ); + CubicCurve( // Bezier form + const Point3D& p1, + const Point3D& p2, + const Point3D& p3, + const Point3D& p4 + ); + + void + Evaluate( + Scalar t, + Point3D *p, + Vector3D *v + ); + + Logical + TestInstance() const; + + protected: + AffineMatrix + basisMatrix; + }; + +#endif \ No newline at end of file diff --git a/CODE/BT/MUNGA/SPOOLER.HPP b/CODE/BT/MUNGA/SPOOLER.HPP new file mode 100644 index 0000000..976f8c7 --- /dev/null +++ b/CODE/BT/MUNGA/SPOOLER.HPP @@ -0,0 +1,76 @@ +#if !defined(SPOOLER_HPP) +# define SPOOLER_HPP + +# if !defined(APPMGR_HPP) +# include +# endif + + //########################################################################## + //########################### SpoolFile ################################ + //########################################################################## + + class SpoolFile: + public MemoryStream + { + public: + SpoolFile( + void *stream_start, + size_t stream_size, + size_t initial_offset=0 + ); + SpoolFile(SpoolFile& spool); + ~SpoolFile(); + + enum SpoolState { + Empty, + Spooling, + Stored, + Playing + }; + SpoolState + spoolState; + + void + SaveAs(const char *name); + void + Read(const char *name); + + void + SpoolPacket(NetworkPacket *packet); + NetworkPacket* + NextPacket(); + }; + + //########################################################################## + //############## MissionReviewApplicationManager ##################### + //########################################################################## + + class MissionReviewApplicationManager: + public ApplicationManager + { + public: + MissionReviewApplicationManager( + Scalar frame_rate, + int spool_count, + size_t spool_size + ); + ~MissionReviewApplicationManager(); + + SpoolFile* + GetEmptySpoolFile(); + SpoolFile* + GetStoredSpoolFile(); + void + StoreSpoolFile(SpoolFile *spool_file); + void + ReleaseSpoolFile(SpoolFile *spool_file); + + protected: + int spoolCount; + SpoolFile **spoolFiles; + char **spoolBuffers; + size_t spoolSize; + }; + +#endif + diff --git a/CODE/BT/MUNGA/SRTSKT.CPP b/CODE/BT/MUNGA/SRTSKT.CPP new file mode 100644 index 0000000..76c0305 --- /dev/null +++ b/CODE/BT/MUNGA/SRTSKT.CPP @@ -0,0 +1,75 @@ +//===========================================================================// +// File: srtskt.cc // +// Project: MUNGA Brick: Connection Engine // +// Contents: Implementation of sorted socket class // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 11/02/94 ECH Initial coding. // +// 11/03/94 ECH Made compatible with BC4.0 // +// 11/05/94 JMA Made compatible with GNU C++ // +// 12/12/94 ECH Changed release handling // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// PROPRIETARY AND CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(SRTSKT_HPP) + #include +#endif + +SortedSocket::SortedSocket( + Node *node, + Logical has_unique_entries +): + SafeSocket(node) +{ + hasUniqueEntries = has_unique_entries; +} + +SortedSocket::~SortedSocket() +{ +} + +void + SortedSocket::AddValueImplementation( + Plug*, + const void* + ) +{ + Fail("SortedSocket::AddValueImplementation - Should never reach here"); +} + +Plug* + SortedSocket::FindImplementation(const void*) +{ + Fail("SortedSocket::FindImplementation - Should never reach here"); + return NULL; +} + +SortedIterator::SortedIterator(SortedSocket *sortedSocket): + SafeIterator(sortedSocket) +{ +} + +SortedIterator::~SortedIterator() +{ +} + +Plug* + SortedIterator::FindImplementation(const void*) +{ + Fail("SortedIterator::FindImplementation - Should never reach here"); + return NULL; +} + +void* + SortedIterator::GetValueImplementation() +{ + Fail("SortedIterator::GetValueImplementation - Should never reach here"); + return NULL; +} + diff --git a/CODE/BT/MUNGA/SRTSKT.HPP b/CODE/BT/MUNGA/SRTSKT.HPP new file mode 100644 index 0000000..6ad2169 --- /dev/null +++ b/CODE/BT/MUNGA/SRTSKT.HPP @@ -0,0 +1,88 @@ +//===========================================================================// +// File: srtskt.hh // +// Project: MUNGA Brick: Connection Engine // +// Contents: Interface definition for sorted socket class // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 11/02/94 ECH Initial coding. // +// 11/03/94 ECH Made compatible with BC4.0 // +// 11/05/94 JMA Made compatible with GNU C++ // +// 12/12/94 ECH Changed release handling // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// PROPRIETARY AND CONFIDENTIAL // +//===========================================================================// + +#if !defined(SRTSKT_HPP) +# define SRTSKT_HPP + +# if !defined(SFESKT_HPP) +# include +# endif + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~ SortedSocket ~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class SortedSocket: + public SafeSocket + { + public: + ~SortedSocket(); + + void + AddValuePlug( + Plug *plug, + const void *value + ) + {AddValueImplementation(plug, value);} + + Plug* + FindPlug(const void *value) + {return FindImplementation(value);} + + protected: + SortedSocket( + Logical has_unique_entries = True + ); + SortedSocket( + Node *node, + Logical has_unique_entries = True + ); + + Logical + HasUniqueEntries() + {return hasUniqueEntries;} + + virtual void + AddValueImplementation( + Plug *plug, + const void *value + ); + + virtual Plug* + FindImplementation(const void *value); + + private: + Logical + hasUniqueEntries; + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~ SortedIterator ~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class SortedIterator: + public SafeIterator + { + public: + ~SortedIterator(); + + virtual Plug* + FindImplementation(const void *value); + + virtual void* + GetValueImplementation(); + + protected: + SortedIterator(SortedSocket *sortedSocket); + }; + +#endif diff --git a/CODE/BT/MUNGA/TEAM.HPP b/CODE/BT/MUNGA/TEAM.HPP new file mode 100644 index 0000000..6755941 --- /dev/null +++ b/CODE/BT/MUNGA/TEAM.HPP @@ -0,0 +1,197 @@ +//===========================================================================// +// File: team.hpp // +// Project: MUNGA // +// Contents: 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 (TEAM_HPP) +# define TEAM_HPP + +# if !defined (ENTITY_HPP) +# include +# endif + + //########################################################################## + //################# Team__MakeMessage ########################## + //########################################################################## + + class Team__MakeMessage : + public Entity::MakeMessage + { + public: + + char + teamName[64]; + + int + initialScore; + + + + Team__MakeMessage( + Receiver::MessageID message_ID, + size_t length, + Entity::ClassID class_ID, + const EntityID &owner_ID, + ResourceDescription::ResourceID resource_ID, + LWord instance_flags, + const Origin &origin, + char *team_name + ) : + Entity::MakeMessage( + message_ID, + length, + class_ID, + owner_ID, + resource_ID, + instance_flags, + origin + ) + { + Str_Copy(teamName, team_name, sizeof(teamName)); + } + + }; + //########################################################################## + //################# Team__ScoreMessage ########################## + //########################################################################## + + class Team__ScoreMessage : + public Entity::Message + { + public: + + Scalar + scoreAward; + + Team__ScoreMessage( + Receiver::MessageID message_ID, + size_t length, + Scalar score + ): + Entity::Message(message_ID, length), + scoreAward(score) + {} + }; + //########################################################################## + //######################## CLASS Team ################################ + //########################################################################## + class Team : + public Entity + { + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Shared Data support + // + public: + + static Derivation + ClassDerivations; + + static SharedData + DefaultData; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Message Support + // + + public: + + enum { + ScoreMessageID = Entity::NextMessageID, + NextMessageID + }; + + typedef Team__ScoreMessage ScoreMessage; + + void + ScoreMessageHandler(ScoreMessage *message); + + private: + + static const HandlerEntry MessageHandlerEntries[]; + + protected: + + static MessageHandlerSet MessageHandlers; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Attribute Support + // + private: + + static const IndexEntry + AttributePointers[]; + + protected: + + static AttributeIndexSet + AttributeIndex; + + public: + + enum { + TeamNameAttributeID = Entity::NextAttributeID, + TeamScoreAttributeID, + NextAttributeID + }; + + char + teamName[64]; + + Scalar + teamScore; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Model Support + // + public: + + typedef void + (Team::*Performance)(Scalar time_slice); + + void + SetPerformance(Performance performance) + { + Check(this); + activePerformance = (Simulation::Performance)performance; + } + + virtual void + TeamSimulation(Scalar time_slice); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Construction / Destruction Support + // + public: + + typedef Team__MakeMessage MakeMessage; + + Team( + MakeMessage *creation_message, + SharedData &shared_data = DefaultData + ); + + ~Team(); + + Logical + TestInstance() const; + + static Team* + Make(MakeMessage *creation_message); + + static Logical + CreateMakeMessage ( + MakeMessage *creation_message, + NotationFile *model_file, + const ResourceDirectories *directories + ); + }; +#endif diff --git a/CODE/BT/MUNGA/TESTCLAS.HPP b/CODE/BT/MUNGA/TESTCLAS.HPP new file mode 100644 index 0000000..811ea3c --- /dev/null +++ b/CODE/BT/MUNGA/TESTCLAS.HPP @@ -0,0 +1,137 @@ +//===========================================================================// +// File: testclas.hh // +// Project: MUNGA Brick: Dynamic Dispatch, Event and Journalling // +// Contents: defines test classes for use by Dispatch and Events // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 11/03/94 JMA Initial coding. // +// 11/05/94 JMA Made compatible with GNU C++ // +//---------------------------------------------------------------------------// +// Copyright (C) 1994, Virtual World Entertainment, Inc. All Rights reserved // +// PROPRIETARY AND CONFIDENTIAL // +//===========================================================================// + +#if !defined(TESTCLAS_HPP) +# define TESTCLAS_HPP) + +# if !defined(RECEIVER_HPP) +# include +# endif + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Alpha ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +class Alpha: + public Receiver +{ +protected: + static SharedData + DefaultData; + +public: + int + x; + + enum { + message0ID = Receiver::NextMessageID, + message1ID, + NextMessageID + }; + + static Derivation + ClassDerivations; + + Alpha( + ClassID class_ID = TrivialReceiverClassID, + SharedData &vdata = DefaultData); + ~Alpha(); + + void + Method0Handler(Message*); + void + Method1Handler(Message*); + + inline void Method0() + {Message m(message0ID,sizeof(Message)); Dispatch(&m);} + inline void Method1() + {Message m(message1ID,sizeof(Message)); Dispatch(&m);} + + static MessageHandlerSet + handlerSet; +}; + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Beta ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +class Beta: + public Alpha +{ +protected: + static SharedData + DefaultData; + +public: + enum { + message2ID=Alpha::NextMessageID, + message3ID, + NextMessageID + }; + + static Derivation + ClassDerivations; + + Beta( + ClassID class_id = TrivialReceiverClassID, + SharedData &vdata = DefaultData + ); + ~Beta(); + + void + Method1aHandler(Message*); + void + Method2Handler(Message*); + void + Method3Handler(Message*); + + inline void Method1() + {Message m(message1ID,sizeof(Message)); Dispatch(&m);} + inline void Method2() + {Message m(message2ID,sizeof(Message)); Dispatch(&m);} + inline void Method3() + {Message m(message3ID,sizeof(Message)); Dispatch(&m);} + + static MessageHandlerSet + handlerSet; +}; + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Gamma ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +class Gamma: + public Beta +{ +public: + enum { + message4ID=Beta::NextMessageID, + NextMessageID + }; + + static Derivation + ClassDerivations; + + Gamma(); + ~Gamma(); + + void + Method4Handler(Message*); + + inline void Method4() + {Message m(message4ID,sizeof(Message)); Dispatch(&m);} + + static MessageHandlerSet + handlerSet; + +protected: + static SharedData + DefaultData; +}; + +#endif diff --git a/CODE/BT/MUNGA/TIME.TCP b/CODE/BT/MUNGA/TIME.TCP new file mode 100644 index 0000000..6fcba5b --- /dev/null +++ b/CODE/BT/MUNGA/TIME.TCP @@ -0,0 +1,100 @@ +//===========================================================================// +// File: time.tst // +// Project: MUNGA Brick: Time Manager // +// Contents: Test stuff for time // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 10/24/94 JMA Initial coding. // +// 10/28/94 JMA Made compatible with SGI CC // +// 11/03/94 ECH Made compatible with BC4.0 // +//---------------------------------------------------------------------------// +// Copyright (C) 1994, Virtual World Entertainment, Inc. All Rights reserved // +// PROPRIETARY AND CONFIDENTIAL // +//===========================================================================// + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Time ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +// +//############################################################################# +//############################################################################# +// +Logical + Time::TestClass() +{ + DEBUG_STREAM << "Starting Time test...\n"; + + Time + a, + b, + c; + Scalar f; + long + t; + + // + //---------------- + // Test assignment + //---------------- + // + a = 1.0f; + b = 2.0f; + c = Null; + + c = a; + Test(a <= c); + Test(a >= c); + + c = 1.0f; + Test(c <= a); + Test(c >= a); + + c = b.ticks; + Test(c <= b); + Test(c >= b); + + // + //---------------------- + // Test time comparators + //---------------------- + // + Test(a < b); + Test(a <= b); + Test(b > a); + Test(b >= a); + + // + //------------- + // Test casting + //------------- + // + f = c; + Test(Close_Enough(f,2.0f)); + t = a; + Test(t == a.ticks); + + // + //-------------------- + // Test math functions + //-------------------- + // + c = a; + c += 1.0f; + Test(c.ticks == b.ticks); + c -= a; + Test(c.ticks == a.ticks); + + c = b; + c -= 1.0f; + Test(c.ticks == a.ticks); + c += a; + Test(c.ticks == b.ticks); + + // + // This test checks to see if the Scalar value is within the resolution + // of half a tick + // + f = b - a; + Test(Close_Enough(f, 1.0f, 0.5f * (1.0f / SystemClock::ticksPerSecond))); + return True; +} diff --git a/CODE/BT/MUNGA/TIMESTUB.CPP b/CODE/BT/MUNGA/TIMESTUB.CPP new file mode 100644 index 0000000..056db60 --- /dev/null +++ b/CODE/BT/MUNGA/TIMESTUB.CPP @@ -0,0 +1,56 @@ +//===========================================================================// +// File: time.cc // +// Project: MUNGA Brick: Time Manager // +// Contents: Implementation details of the Time Manager // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 10/19/94 JMA Initial coding. // +// 10/24/94 JMA Added Lester's IBM RTC code in as SystemClock class // +// 10/28/94 JMA Made compatible with SGI CC // +// 11/03/94 ECH Made compatible with BC4.0 // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// PROPRIETARY AND CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(TIME_HPP) + #include +#endif + +//############################################################################# +//########################### System Clock ############################## +//############################################################################# + +SystemClock + SystemClock::timer; +Scalar + SystemClock::ticksPerSecond = 1000.0f; + +long + SystemClock::GetRTC() +{ + static long time=0L; + return time++; +} + +SystemClock::SystemClock() +{ + pauseStart = 0L; + pauseTime = 0L; +} + +void + SystemClock::Shutdown() +{ +} + +float + Get_Frame_Percent_Used() +{ + return 0.5f; +} + diff --git a/CODE/BT/MUNGA/TRACSTUB.CPP b/CODE/BT/MUNGA/TRACSTUB.CPP new file mode 100644 index 0000000..fb75f71 --- /dev/null +++ b/CODE/BT/MUNGA/TRACSTUB.CPP @@ -0,0 +1,38 @@ +#include +#pragma hdrstop + +#if !defined(HEAP_HPP) + #include +#endif + +void* + Get_Caller(int) +{ + return NULL; +} + +size_t + UserHeap::GetMainHeapInitialSize() +{ + return 0x200000; +} + +#if defined(USE_ACTIVE_PROFILE) + + void + BitTrace::SetLineImplementation(Byte) + { + } + + void + BitTrace::ClearLineImplementation(Byte) + { + } + + Logical + BitTrace::IsLineValidImplementation(Byte) + { + return True; + } + +#endif diff --git a/CODE/BT/MUNGA/UNITVEC.CPP b/CODE/BT/MUNGA/UNITVEC.CPP new file mode 100644 index 0000000..53eecff --- /dev/null +++ b/CODE/BT/MUNGA/UNITVEC.CPP @@ -0,0 +1,66 @@ +//===========================================================================// +// File: unitvec.cc // +// Project: MUNGA Brick: Math Library // +// Contents: Implementation details for unit vector class // +//---------------------------------------------------------------------------// +// 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 // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(UNITVEC_HPP) + #include +#endif + +// +//############################################################################# +//############################################################################# +// +UnitVector& + UnitVector::Lerp( + const UnitVector&, // v1, + const UnitVector&, // v2, + Scalar // t + ) +{ + Check_Pointer(this); + Tell("UnitVector::Lerp stubbed out!\n"); + return *this; +} + +// +//############################################################################# +//############################################################################# +// +Logical + UnitVector::TestInstance() const +{ + Scalar length = Vector3D::LengthSquared(); + Scalar diff = 1.0f - length; + if (!Small_Enough(diff,2e-5)) + { + length = x*x + y*y + z*z; + diff = 1.0f - length; + if (!Small_Enough(diff,2e-5)) + { + Dump(*this); + Dump(length); + Dump(x*x + y*y + z*z); + Dump(diff); + return False; + } + } + return True; +} + +#if defined(TEST_CLASS) +# include "unitvec.tcp" +#endif + diff --git a/CODE/BT/MUNGA/UNITVEC.TCP b/CODE/BT/MUNGA/UNITVEC.TCP new file mode 100644 index 0000000..45a605d --- /dev/null +++ b/CODE/BT/MUNGA/UNITVEC.TCP @@ -0,0 +1,77 @@ +//===========================================================================// +// File: unitvec.tst // +// Project: MUNGA Brick: Math Library // +// Contents: Implementation details for unit vector class // +//---------------------------------------------------------------------------// +// 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 // +//===========================================================================// + +#if !defined(LINMTRX_HPP) + #include +#endif + +#if !defined(ROTATION_HPP) + #include +#endif + +// +//########################################################################### +//########################################################################### +// +Logical + UnitVector::TestClass() +{ + DEBUG_STREAM << "Starting UnitVector test...\n"; + + UnitVector + b; + const UnitVector + c(0.6f,0.0f,0.8f); + UnitVector + d(0.8f,-0.6f,0.0f); + + Test(c.x == 0.6f && c.y == 0.0f && c.z == 0.8f); + + Test(c[2] == c.z); + + b = c; + Test(b.x == c.x && b.y == c.y && b.z == c.z); + Test(Close_Enough(b,c)); + Test(b == c); + + b.Negate(c); + Test(b == UnitVector(-c.x,-c.y,-c.z)); + + Scalar f = c*d; + Test(Close_Enough(f,c.x*d.x + c.y*d.y + c.z*d.z)); + + LinearMatrix + m; + EulerAngles + r(PI_OVER_4,0.0f,0.0f); + m = r; + b.Multiply(c,m); + Test(b == UnitVector(c.x,c.y*m(1,1)+c.z*m(2,1),c.y*m(1,2)+c.z*m(2,2))); + b = c; + b *= m; + Test(b == UnitVector(c.x,c.y*m(1,1)+c.z*m(2,1),c.y*m(1,2)+c.z*m(2,2))); + + f = c.LengthSquared(); + Test(f == 1.0f); + f = c.Length(); + Test(f == 1.0f); + + Vector3D v(0.0f,1.2f,1.6f); + f = v.Length(); + b = v; + Test(b == UnitVector(v.x/f, v.y/f, v.z/f)); + + return True; +} + diff --git a/CODE/BT/MUNGA/VECTOR4D.HPP b/CODE/BT/MUNGA/VECTOR4D.HPP new file mode 100644 index 0000000..1e0b657 --- /dev/null +++ b/CODE/BT/MUNGA/VECTOR4D.HPP @@ -0,0 +1,228 @@ +//===========================================================================// +// File: vector4d.hh // +// Project: MUNGA Brick: Math Library // +// Contents: Interface specification for vector 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 // +//===========================================================================// + +#if !defined(VECTOR4D_HPP) +# define VECTOR4D_HPP + +# if !defined(VECTOR3D_HPP) +# include +# endif + + class Point3D; + class AffineMatrix; + class Matrix4x4; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Vector4D ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class Vector4D + { + public: + Scalar + x, + y, + z, + w; + + #if defined(USE_SIGNATURE) + friend int + Is_Signature_Bad(const volatile Vector4D *); + #endif + + static const Vector4D + Identity; + + // + // Constructors + // + Vector4D() + {} + Vector4D( + Scalar X, + Scalar Y, + Scalar Z, + Scalar W) + {x=X; y=Y; z=Z; w=W;} + + // + // Assignment operators + // + Vector4D& + operator=(const Vector4D &v); + Vector4D& + operator=(const Vector3D &v); + Vector4D& + operator=(const Point3D &p); + + // + // Index operators + // + const Scalar& + operator[](size_t index) const + {Check_Pointer(this); Warn(index>W_Axis); return (&x)[index];} + Scalar& + operator[](size_t index) + {Check_Pointer(this); Warn(index>W_Axis); return (&x)[index];} + + friend Logical + Small_Enough(const Vector4D &v,Scalar e=SMALL); + Logical + operator!() const + {return Small_Enough(*this);} + + // + // "Close-enough" comparison operators + // + friend Logical + Close_Enough( + const Vector4D &v1, + const Vector4D &v2, + Scalar e=SMALL + ); + Logical + operator==(const Vector4D& v) const + {return Close_Enough(*this,v);} + Logical + operator!=(const Vector4D& v) const + {return !Close_Enough(*this,v);} + + // + // The following operators all assume that this points to the destination + // of the operation results + // + Vector4D& + Negate(const Vector4D &v); + + Vector4D& + Add( + const Vector4D& v1, + const Vector4D& v2 + ); + Vector4D& + operator+=(const Vector4D& v) + {return Add(*this,v);} + + Vector4D& + Subtract( + const Vector4D& v1, + const Vector4D& v2 + ); + Vector4D& + operator-=(const Vector4D& v) + {return Subtract(*this,v);} + + Scalar + operator*(const Vector4D& v) const + {Check(this); return x*v.x + y*v.y + z*v.z + w*v.w;} + + Vector4D& + Multiply( + const Vector4D& v, + Scalar scale + ); + Vector4D& + operator*=(Scalar v) + {return Multiply(*this,v);} + + Vector4D& + Multiply( + const Vector4D& v1, + const Vector4D& v2 + ); + Vector4D& + operator*=(const Vector4D &v) + {return Multiply(*this,v);} + + Vector4D& + Divide( + const Vector4D& v, + Scalar scale + ); + Vector4D& + operator/=(Scalar v) + {return Divide(*this,v);} + + Vector4D& + Divide( + const Vector4D& v1, + const Vector4D& v2 + ); + Vector4D& + operator/=(const Vector4D &v) + {return Divide(*this,v);} + + // + // Transforms + // + Vector4D& + Multiply( + const Vector4D &v, + const AffineMatrix &m + ); + Vector4D& + operator*=(const AffineMatrix &M) + {Vector4D src(*this); return Multiply(src,M);} + Vector4D& Multiply( + const Vector4D &v, + const Matrix4x4 &m + ); + Vector4D& + operator*=(const Matrix4x4 &m) + {Vector4D src(*this); return Multiply(src,m);} + Vector4D& Multiply( + const Vector3D &v, + const Matrix4x4 &m + ); + Vector4D& Multiply( + const Point3D &p, + const Matrix4x4 &m + ); + + // + // Support functions + // + Scalar + LengthSquared() const + {return operator*(*this);} + Scalar + Length() const + {return Sqrt(LengthSquared());} + + Vector4D& + Combine( + const Vector4D& v1, + Scalar t1, + const Vector4D& v2, + Scalar t2 + ); + + Vector4D& + Lerp( + const Vector4D& v1, + const Vector4D& v2, + Scalar t + ) + {return Combine(v1,1.0f-t,v2,t);} + + friend ostream& + operator<<( + ostream& stream, + const Vector4D& v + ); + Logical + TestInstance() const; + static Logical + TestClass(); + }; + +#endif diff --git a/CODE/BT/MUNGA/VERIFY.HPP b/CODE/BT/MUNGA/VERIFY.HPP new file mode 100644 index 0000000..8ea27d1 --- /dev/null +++ b/CODE/BT/MUNGA/VERIFY.HPP @@ -0,0 +1,61 @@ +//===========================================================================// +// File: verify.hpp // +// Contents: verification fail routines // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 09/29/94 JMA Initial coding. // +// 11/01/94 JMA Made compatible with SGI CC // +// 11/03/94 ECH Made compatible with BC4.0 // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// PROPRIETARY AND CONFIDENTIAL // +//===========================================================================// + +#if !defined(VERIFY_HPP) +# define VERIFY_HPP + +# if defined(__BCPLUSPLUS__) + extern int + _matherr(struct exception *a); +# endif + + extern int + Fpu_Ok(); + extern void + Verify_Failed(char *message, char *file, int line); + extern void + Fail_To_Debugger(char *message, char *file, int line); + + class Signature + { + private: +# if DEBUG_LEVEL>0 + enum Mark + { + ok, + destroyed, + corrupted, + noMagic=(int)0xAB135795L, + magic=(int)0xFFED1231L + } mark; +# endif + + protected: + Signature(); + ~Signature(); + + public: + friend int + Is_Signature_Bad(const volatile Signature *p); + }; + +# if defined(USE_SIGNATURE) +# define SIGNATURED : public Signature +# else +# define SIGNATURED +# define Is_Signature_Bad(p) (False) +# endif + +#endif + diff --git a/CODE/BT/MUNGA/VIDREND.TCP b/CODE/BT/MUNGA/VIDREND.TCP new file mode 100644 index 0000000..1a0f020 --- /dev/null +++ b/CODE/BT/MUNGA/VIDREND.TCP @@ -0,0 +1,21 @@ +//===========================================================================// +// File: vidrend.tst // +// Project: MUNGA Brick: Video Renderer Manager // +// Contents: Interface specification Video Renderer Manager // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 01/11/95 GAC Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +Logical + VideoRenderer::TestClass() + +{ + Tell("Starting VideoRenderer::TestClass\n"); + return False; +} diff --git a/CODE/BT/MUNGA_L4/L4APP.THP b/CODE/BT/MUNGA_L4/L4APP.THP new file mode 100644 index 0000000..2449e63 --- /dev/null +++ b/CODE/BT/MUNGA_L4/L4APP.THP @@ -0,0 +1,50 @@ +//===========================================================================// +// File: l4app.thp // +// Contents: // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 03/09/95 ECH Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1994, Virtual World Entertainment, Inc. All Rights reserved // +// PROPRIETARY AND CONFIDENTIAL // +//===========================================================================// + +#if !defined(L4APP_THP) +# define L4APP_THP + +# if !defined(L4APP_HPP) +# include +# endif + +# if !defined(MISSION_HPP) +# include +# endif + + class L4TestApplication: + public L4Application + { + public: + L4TestApplication(StreamableResourceFile *resource_file); + ~L4TestApplication(); + + private: + Registry* + MakeRegistry(); + + Entity* + MakeViewpointEntity(Entity__MakeMessage*); + }; + + class L4TestMission: + public Mission + { + public: + L4TestMission( + NotationFile *notation_file, + StreamableResourceFile *resources + ); + ~L4TestMission(); + }; + +#endif diff --git a/CODE/BT/MUNGA_L4/L4AUDTUL.CPP b/CODE/BT/MUNGA_L4/L4AUDTUL.CPP new file mode 100644 index 0000000..14fc13d --- /dev/null +++ b/CODE/BT/MUNGA_L4/L4AUDTUL.CPP @@ -0,0 +1,83 @@ +//===========================================================================// +// File: l4audres.cpp // +// 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 // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(L4AUDRES_HPP) +# include +#endif + +#if !defined(L4TOOL_HPP) +# include +#endif + +#if !defined(L4AUDIO_HPP) +# include +#endif + +ResourceDescription::ResourceID + L4Tool::CreateModelAudioStreamResource( + ResourceFile *resource_file, + const char *model_name, + NotationFile *model_file, + const ResourceDirectories *directories + ) +{ + return + L4AudioResourceManager::CreateModelAudioStreamResource( + resource_file, + model_name, + model_file, + directories + ); +} + +ResourceDescription::ResourceID + L4Tool::CreateStaticAudioStreamResource( + ResourceFile *resource_file + ) +{ + return + L4AudioResourceManager::CreateStaticAudioStreamResource( + resource_file + ); +} + +// +//############################################################################# +//############################################################################# +// +void + L4AudioCreateSymbols::WriteEntryStream(ofstream &symbol_file) +{ + AudioCreateSymbols::WriteEntryStream(symbol_file); + + #define WRITE_ENTRY(name)\ + {\ + Verify(symbol_file);\ + symbol_file << #name;\ + symbol_file << "=";\ + symbol_file << name;\ + symbol_file << "\n";\ + } + + WRITE_ENTRY(FrontDirectPatchPosition); + WRITE_ENTRY(RearDirectPatchPosition); + WRITE_ENTRY(FrontLeftDirectPatchPosition); + WRITE_ENTRY(FrontRightDirectPatchPosition); + WRITE_ENTRY(RearLeftDirectPatchPosition); + WRITE_ENTRY(RearRightDirectPatchPosition); +} + diff --git a/CODE/BT/MUNGA_L4/L4CTLTUL.CPP b/CODE/BT/MUNGA_L4/L4CTLTUL.CPP new file mode 100644 index 0000000..98b3d64 --- /dev/null +++ b/CODE/BT/MUNGA_L4/L4CTLTUL.CPP @@ -0,0 +1,31 @@ +//===========================================================================// +// File: l4video.cpp // +// Project: MUNGA Brick: Video Renderer Manager // +// Contents: Interface specification Video Renderer Manager // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 01/11/95 GAC Initial coding. // +// 07/11/95 KEO Modify video resource format. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide. // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL. // +//===========================================================================// + +#include + +#if !defined(L4CTRL_HPP) +# include +#endif + +#if !defined(L4TOOL_HPP) +# include +#endif + +PlatformTool::FindNameFunction + L4Tool::GetControlMappingFunction() +{ + return &LBE4ControlsManager::SetControlMappingID; +} + diff --git a/CODE/BT/MUNGA_L4/L4DPLMEM.CPP b/CODE/BT/MUNGA_L4/L4DPLMEM.CPP new file mode 100644 index 0000000..2018661 --- /dev/null +++ b/CODE/BT/MUNGA_L4/L4DPLMEM.CPP @@ -0,0 +1,45 @@ +/* +This block of code is expected to override the memory allocater in the DPL library +*/ +#include +#pragma hdrstop + +#if !defined(L4VIDEO_HPP) +# include +#endif + +extern "C" +{ + void + *dpl_malloc ( int n_bytes ), + *dpl_calloc ( size_t n, size_t n_bytes ), + dpl_free ( void *ptr ), + dpl_free_all ( void ); +}; + +void *dpl_malloc ( int n_bytes ) +{ + Check_Pointer(DPLRenderer::DPLHeap); + return DPLRenderer::DPLHeap->Allocate(n_bytes); +} + +void *dpl_calloc ( size_t n, size_t n_bytes ) +{ + Check_Pointer(DPLRenderer::DPLHeap); + void *p = DPLRenderer::DPLHeap->Allocate(n * n_bytes); + memset ( p, 0x0, n_bytes*n ); + return p; +} + +void dpl_free ( void *ptr ) +{ + Check_Pointer(DPLRenderer::DPLHeap); + DPLRenderer::DPLHeap->Release(ptr); +} + +void dpl_free_all ( void ) +{ + Check_Pointer(DPLRenderer::DPLHeap); + DPLRenderer::DPLHeap->ReleaseAll(); +} + diff --git a/CODE/BT/MUNGA_L4/L4GAUIMM.HPP b/CODE/BT/MUNGA_L4/L4GAUIMM.HPP new file mode 100644 index 0000000..7d2d545 --- /dev/null +++ b/CODE/BT/MUNGA_L4/L4GAUIMM.HPP @@ -0,0 +1,7 @@ +//===========================================================================// +// File: l4gaures.hpp // +// Project: MUNGA Brick: Gauge Renderer Manager // +// Contents: // +//===========================================================================// + +// OBSOLETED ON 8-4-95 by cpb. Functionality now contained in L4WRHOUS.HPP diff --git a/CODE/BT/MUNGA_L4/L4HOST.CPP b/CODE/BT/MUNGA_L4/L4HOST.CPP new file mode 100644 index 0000000..bde4310 --- /dev/null +++ b/CODE/BT/MUNGA_L4/L4HOST.CPP @@ -0,0 +1,61 @@ +//===========================================================================// +// File: l4host.cpp // +// Project: MUNGA Brick: Connection Library // +// Contents: additional L4 data types and functions for hosts // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 04/09/95 GAC Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(L4HOST_HPP) +# include +#endif + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Constructor for l4host +// +L4Host::L4Host( + HostID host_ID, + HostType host_type, + NetworkAddress network_address, + unsigned long network_socket, + const CString &net_name): + Host( + host_ID, + host_type, + network_address), + SymbolicName(net_name) +{ + NetworkSocket = network_socket; + // ConnectStatus = NoNetworkConnectionStatus; + pad_head = 0; + pad_tail = 0; + pad_size = L4HOST_PAD_BUFFER_SIZE; + #if defined(TRACE_SEND_BUFFER) + sprintf(sendBufferTraceName,"Send Buffer %d",network_address&0xff); + sendBufferTrace = + new TraceOf( + sendBufferTraceName, + 0, + Trace::IntegerType, + TraceSample::IntegerSnapshot + ); + Register_Object(sendBufferTrace); + sendBufferTrace->TakeSnapshot(4096); + #endif +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Destructor for l4host +// +L4Host::~L4Host() +{ +} + diff --git a/CODE/BT/MUNGA_L4/L4KEYBD.CPP b/CODE/BT/MUNGA_L4/L4KEYBD.CPP new file mode 100644 index 0000000..97ecbe3 --- /dev/null +++ b/CODE/BT/MUNGA_L4/L4KEYBD.CPP @@ -0,0 +1,37 @@ +//===========================================================================// +// File: PCkeybd.cc // +// Project: MUNGA Brick: Platform-specific IO // +// Contents: PC keyboard interface // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- -----------------------------------------------------------// +// 01/19/95 CPB Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. All rights reserved // +// PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#include +#include + +int PC_Keyboard_Read(void) +{ + int c; + + if (!kbhit()) // if keyboard has not been hit, return zero + { + return(0); + } + else + { + c = getch(); // keyboard was hit, get code + if (c == 0) // zero: next character is extended code + { + c = getch() | 0x0100; // flag as extended + } + return(c); // return the value + } +} diff --git a/CODE/BT/MUNGA_L4/L4MOUSE.HPP b/CODE/BT/MUNGA_L4/L4MOUSE.HPP new file mode 100644 index 0000000..9474fc5 --- /dev/null +++ b/CODE/BT/MUNGA_L4/L4MOUSE.HPP @@ -0,0 +1,37 @@ +//===========================================================================// +// File: PCMouse.hh // +// Project: MUNGA Brick: Platform-specific IO // +// Contents: PC mouse interface class // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- -----------------------------------------------------------// +// 01/30/95 CPB Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. All rights reserved // +// PROPRIETARY and CONFIDENTIAL // +//===========================================================================// +#if !defined(L4MOUSE_HPP) + + #define L4MOUSE_HPP + + #if !defined(STYLE_HPP) + #include + #endif + + class Mouse SIGNATURED + { + public: + Mouse(); + ~Mouse() + {} + void ReadCounters(int *xp, int *yp); + int ButtonPressed(int buttonNum); + int ButtonReleased(int buttonNum); + Logical + TestInstance() const; + + int ButtonCount; // number of buttons on mouse + int Errors; // non-zero if bad things happened + }; + +#endif diff --git a/CODE/BT/MUNGA_L4/L4MSSN.HPP b/CODE/BT/MUNGA_L4/L4MSSN.HPP new file mode 100644 index 0000000..7014ba1 --- /dev/null +++ b/CODE/BT/MUNGA_L4/L4MSSN.HPP @@ -0,0 +1,50 @@ +//===========================================================================// +// File: l4mssn.hh // +// Project: MUNGA Brick: Application // +// Contents: Implementation Details for missions // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 02/19/95 JMA Initial coding. // +// 09/12/95 JM Put Back in Munga & Added Munga L4 level Player Data // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// +#if !defined (L4MSSN_HPP) + #define L4MSSN_HPP + +# if !defined(MISSION_HPP) +# include "mission.hpp" +# endif + +#if 0 +// THIS FILE IS OBSOLETE AS OF 11-1-95 cpb + +//########################################################################## +//########################## L4Mission ################################ +//########################################################################## + + +class L4Mission : + public Mission +{ + public: + + L4Mission( + NotationFile *notation_file, + ResourceFile *resources + ); + ~L4Mission(); + + void + SetPlayerData(NotationFile *notation_file); + + Logical + TestInstance() const; + +}; + +#endif +#endif diff --git a/CODE/BT/MUNGA_L4/L4PLASMA.HPP b/CODE/BT/MUNGA_L4/L4PLASMA.HPP new file mode 100644 index 0000000..c6bb04c --- /dev/null +++ b/CODE/BT/MUNGA_L4/L4PLASMA.HPP @@ -0,0 +1,70 @@ +//===========================================================================// +// File: L4plasma.hpp // +// Project: MUNGA Brick: Applications-specific controls module // +// Contents: Interface specification for plasma display // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- -----------------------------------------------------------// +// 04/20/95 CPB Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. All rights reserved // +// PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(L4PLASMA_HPP) +# define L4PLASMA_HPP + +# if !defined(L4VB8_HPP) +# include +# endif + +# if !defined(L4SERIAL_HPP) +# include +# endif + + //######################################################################## + //################################ Plasma ################################ + //######################################################################## + class PlasmaDisplay : + public Video8BitBuffered + { + public: + enum + { + plasmaWidth=128, + plasmaHeight=32 + }; + + PlasmaDisplay(Word port, Word int_num); + + ~PlasmaDisplay(); + + Logical + TestInstance() const; + + void + ShowInstance(char *indent); + + Logical + Update(Logical forceall); + + void + WaitForUpdate(); + + protected: + void + Scan(Logical forceall); + + Logical + forceAll, + updateInProgress; + + PCSerial + *pc_serial; + int + currentTransferLine; + char + updateFlag[32]; + }; + +#endif diff --git a/CODE/BT/MUNGA_L4/L4TIME.HPP b/CODE/BT/MUNGA_L4/L4TIME.HPP new file mode 100644 index 0000000..f94c572 --- /dev/null +++ b/CODE/BT/MUNGA_L4/L4TIME.HPP @@ -0,0 +1,12 @@ + +#if !defined(L4TIME_HPP) +# define L4TIME_HPP + +# if !defined(TIME_HPP) +# include +# endif + +# define TIMER_ENV "L4TIMER" +# define USE_SOS_TIMER "FAST" + +#endif diff --git a/CODE/BT/MUNGA_L4/L4VIDEO.TCP b/CODE/BT/MUNGA_L4/L4VIDEO.TCP new file mode 100644 index 0000000..1ca787c --- /dev/null +++ b/CODE/BT/MUNGA_L4/L4VIDEO.TCP @@ -0,0 +1,75 @@ +//===========================================================================// +// File: vidrend.tst // +// Project: MUNGA Brick: Video Renderer Manager // +// Contents: Interface specification Video Renderer Manager // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 01/11/95 GAC Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#include "entity.thh" + +Logical + VideoRenderer::TestClass() + +{ + + Tell("Starting VideoRenderer::TestClass\n"); +#if 0 +// Create the message that will be used to make my entities + + TestEntity::MakeMessage + message1( + TestEntity::MakeMessageID, + sizeof(TestEntity::MakeMessage), + TestEntity::TrivialEntityClassID, + TestEntity::DefaultFlags, + LinearOrigin::Identity + ); + +// Send the message that creates the entity in Entity_1 + + message1.localOrigin.translation.z = -30.0f; + + Entity* Entity_1 = TestEntity::Make(&message1); + + Register_Object(Entity_1); + + // Push the origin in the message forward 30 meters + + message1.localOrigin.translation.z = 30.0f; + + // Create the second entity 30 meters in front of the first + + Entity* Entity_2 = TestEntity::Make(&message1); + + Register_Object(Entity_2); + +// create more + + message1.localOrigin.translation.z = 0.0f; + message1.localOrigin.translation.x = 30.0f; + Entity* Entity_3 = TestEntity::Make(&message1); + Register_Object(Entity_3); + + + message1.localOrigin.translation.x = -30.0f; + Entity* Entity_4 = TestEntity::Make(&message1); + Register_Object(Entity_4); + + message1.localOrigin.translation.x = 0.0f; + message1.localOrigin.translation.y = 30.0f; + Entity* Entity_5 = TestEntity::Make(&message1); + Register_Object(Entity_5); + + message1.localOrigin.translation.y = -30.0f; + Entity* Entity_6 = TestEntity::Make(&message1); + Register_Object(Entity_6); +#endif + return False; +} diff --git a/CODE/BT/MUNGA_L4/L4VIDTUL.CPP b/CODE/BT/MUNGA_L4/L4VIDTUL.CPP new file mode 100644 index 0000000..edd5607 --- /dev/null +++ b/CODE/BT/MUNGA_L4/L4VIDTUL.CPP @@ -0,0 +1,43 @@ +//===========================================================================// +// File: l4video.cpp // +// Project: MUNGA Brick: Video Renderer Manager // +// Contents: Interface specification Video Renderer Manager // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 01/11/95 GAC Initial coding. // +// 07/11/95 KEO Modify video resource format. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide. // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL. // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(L4VIDEO_HPP) +# include +#endif + +#if !defined(L4TOOL_HPP) +# include +#endif + +ResourceDescription::ResourceID + L4Tool::CreateModelVideoStreamResource( + ResourceFile *resource_file, + const char *model_name, + NotationFile *model_file, + const ResourceDirectories *directories + ) +{ + return + DPLRenderer::CreateModelVideoStreamResource( + resource_file, + model_name, + model_file, + directories + ); +} + diff --git a/CODE/BT/MUNGA_L4/L4WRHOUS.CPP b/CODE/BT/MUNGA_L4/L4WRHOUS.CPP new file mode 100644 index 0000000..7f283a3 --- /dev/null +++ b/CODE/BT/MUNGA_L4/L4WRHOUS.CPP @@ -0,0 +1,63 @@ +//===========================================================================// +// File: wrhous.cc // +// Project: MUNGA Brick: Gauge Renderer Manager // +// Contents: // +// This object manages creation and deletion of dynamically-created objects // +// of which only on instantiation should exist. It is currently used // +// only by the gauge renderer. // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 08/01/95 CPB Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. All rights reserved // +// PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#include + +#if !defined(L4WRHOUS_HPP) +# include +#endif + +// #define LOCAL_TEST + +#if defined(LOCAL_TEST) +# define Test_Tell(n) DEBUG_STREAM << n +#else +# define Test_Tell(n) +#endif + +//####################################################################### +// Warehouse +//####################################################################### +L4Warehouse::L4Warehouse() : + Warehouse() +{ + Check_Pointer(this); + Check_Fpu(); +} + +L4Warehouse::~L4Warehouse() +{ + Check(this); + Check_Fpu(); +} + +void + L4Warehouse::Purge() +{ + Check(this); + + gaugeImageBin.Purge(); + Warehouse::Purge(); + + Check_Fpu(); +} + +Logical + L4Warehouse::TestInstance() const +{ + return Warehouse::TestInstance(); +} + diff --git a/CODE/BT/MUNGA_L4/L4WRHOUS.HPP b/CODE/BT/MUNGA_L4/L4WRHOUS.HPP new file mode 100644 index 0000000..15905d3 --- /dev/null +++ b/CODE/BT/MUNGA_L4/L4WRHOUS.HPP @@ -0,0 +1,42 @@ +//===========================================================================// +// File: wrhous.hh // +// Project: MUNGA Brick: Gauge Renderer Manager // +// Contents: // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 08/01/95 CPB Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. All rights reserved // +// PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(L4WRHOUS_HPP) +# define L4WRHOUS_HPP + +# if !defined(WRHOUS_HPP) +# include "wrhous.hpp" +# endif + +# if !defined(L4GAUIMA_HPP) +# include "l4gauima.hpp" +# endif + + //####################################################################### + // L4Warehouse + //####################################################################### + class L4Warehouse : + public Warehouse + { + public: + L4Warehouse(); + ~L4Warehouse(); + Logical + TestInstance() const; + void + Purge(); + + WarehouseBinOf + gaugeImageBin; + }; +#endif diff --git a/CODE/BT/MUNGA_L4/LIBDPL/DPL/MATRIX.H b/CODE/BT/MUNGA_L4/LIBDPL/DPL/MATRIX.H new file mode 100644 index 0000000..593d92c --- /dev/null +++ b/CODE/BT/MUNGA_L4/LIBDPL/DPL/MATRIX.H @@ -0,0 +1,47 @@ +#ifndef matrix_h +#define matrix_h +#ifdef __cplusplus +extern "C" { +#endif + +/* ************************************************** + + Copyright DIVISION Limited (c) 1994 + All rights reserved + + + File : dpl.h + Project : dpl interface + Author : PJA + Date : 18/6/94 + + Function: Introduces all the datatypes and functions + used by the dpl interface + + History : Rev 1.0, 18 / 06 / 1994 + +**************************** */ + +#include +#include +#include + +extern void dpl_SetAngleMode( int degrees ); +extern void dpl_IdMatrix ( dpl_MATRIX m ); +extern void dpl_Translate ( dpl_MATRIX m, float32 dx, float32 dy, float32 dz ); +extern void dpl_Rotate ( dpl_MATRIX m, float32 angle, int32 axis ); +extern void dpl_Scale ( dpl_MATRIX m, float32 x, float32 y, float32 z ); +extern void dpl_Concat ( dpl_MATRIX m, dpl_MATRIX a, dpl_MATRIX b ); +extern void dpl_Invert ( dpl_MATRIX inverse, dpl_MATRIX mat ); +extern void dpl_XformPoint ( dpl_POINT q, dpl_POINT p, dpl_MATRIX m ); + +extern void dpl_IdMatrixDCS ( dpl_DCS *d ); +extern void dpl_TranslateDCS ( dpl_DCS *d, float32 dx, float32 dy, float32 dz ); +extern void dpl_RotateDCS ( dpl_DCS *d, float32 angle, int32 axis ); +extern void dpl_ScaleDCS ( dpl_DCS *d, float32 x, float32 y, float32 z ); + + +#ifdef __cplusplus +} +#endif +#endif diff --git a/CODE/BT/MUNGA_L4/LIBDPL/DPL/VPX/DPL2DTAG.H b/CODE/BT/MUNGA_L4/LIBDPL/DPL/VPX/DPL2DTAG.H new file mode 100644 index 0000000..5987cd5 --- /dev/null +++ b/CODE/BT/MUNGA_L4/LIBDPL/DPL/VPX/DPL2DTAG.H @@ -0,0 +1,33 @@ +#ifndef dpl_2dtag_h +#define dpl_2dtag_h + +typedef enum { + dpl2d_open_polyline, + dpl2d_close_polyline, + dpl2d_open_polypoint, + dpl2d_close_polypoint, + dpl2d_open_polygon, + dpl2d_close_polygon, + dpl2d_open_lines, + dpl2d_close_lines, + dpl2d_point, + dpl2d_circle, + + dpl2d_open_clip_polygon, + dpl2d_close_clip_polygon, + dpl2d_clip_circle, + dpl2d_clip_full, + dpl2d_clip_none, + + dpl2d_set_drawcolor, + dpl2d_set_matrix, + dpl2d_concat_matrix, + dpl2d_push_state, + dpl2d_pop_state, + + dpl2d_call_displaylist, + dpl2d_set_linewidth, + dpl2d_set_alpha +} dpl_2d_tag; + +#endif diff --git a/CODE/BT/MUNGA_L4/LIBDPL/DPL/VPX/DPL_MEM.H b/CODE/BT/MUNGA_L4/LIBDPL/DPL/VPX/DPL_MEM.H new file mode 100644 index 0000000..a41f650 --- /dev/null +++ b/CODE/BT/MUNGA_L4/LIBDPL/DPL/VPX/DPL_MEM.H @@ -0,0 +1,24 @@ +#ifndef dpl_mem_h +#define dpl_mem_h + +#ifdef __cplusplus +extern "C" { +#endif + +extern void *dpl_malloc ( int n_bytes ); +extern void *dpl_calloc ( size_t n, size_t size ); +extern void dpl_free ( void *ptr ); +extern void dpl_free_all ( void ); + +extern void dpl_tracemem ( void ); + +#ifndef dpl_mem_c +#define free dpl_free +#define malloc dpl_malloc +#define calloc dpl_calloc +#endif + +#ifdef __cplusplus +} +#endif +#endif diff --git a/CODE/BT/MUNGA_L4/LIBDPL/DPL/VPX/MATRIX.H b/CODE/BT/MUNGA_L4/LIBDPL/DPL/VPX/MATRIX.H new file mode 100644 index 0000000..593d92c --- /dev/null +++ b/CODE/BT/MUNGA_L4/LIBDPL/DPL/VPX/MATRIX.H @@ -0,0 +1,47 @@ +#ifndef matrix_h +#define matrix_h +#ifdef __cplusplus +extern "C" { +#endif + +/* ************************************************** + + Copyright DIVISION Limited (c) 1994 + All rights reserved + + + File : dpl.h + Project : dpl interface + Author : PJA + Date : 18/6/94 + + Function: Introduces all the datatypes and functions + used by the dpl interface + + History : Rev 1.0, 18 / 06 / 1994 + +**************************** */ + +#include +#include +#include + +extern void dpl_SetAngleMode( int degrees ); +extern void dpl_IdMatrix ( dpl_MATRIX m ); +extern void dpl_Translate ( dpl_MATRIX m, float32 dx, float32 dy, float32 dz ); +extern void dpl_Rotate ( dpl_MATRIX m, float32 angle, int32 axis ); +extern void dpl_Scale ( dpl_MATRIX m, float32 x, float32 y, float32 z ); +extern void dpl_Concat ( dpl_MATRIX m, dpl_MATRIX a, dpl_MATRIX b ); +extern void dpl_Invert ( dpl_MATRIX inverse, dpl_MATRIX mat ); +extern void dpl_XformPoint ( dpl_POINT q, dpl_POINT p, dpl_MATRIX m ); + +extern void dpl_IdMatrixDCS ( dpl_DCS *d ); +extern void dpl_TranslateDCS ( dpl_DCS *d, float32 dx, float32 dy, float32 dz ); +extern void dpl_RotateDCS ( dpl_DCS *d, float32 angle, int32 axis ); +extern void dpl_ScaleDCS ( dpl_DCS *d, float32 x, float32 y, float32 z ); + + +#ifdef __cplusplus +} +#endif +#endif diff --git a/CODE/BT/MUNGA_L4/LIBDPL/DPL/VPX/TRICODER.H b/CODE/BT/MUNGA_L4/LIBDPL/DPL/VPX/TRICODER.H new file mode 100644 index 0000000..1b36a00 --- /dev/null +++ b/CODE/BT/MUNGA_L4/LIBDPL/DPL/VPX/TRICODER.H @@ -0,0 +1,35 @@ +#ifndef tricoder_h +#define tricoder_h + +#ifdef __cplusplus +extern "C" { +#endif + +#define triangle_intro_bits 0x0f + +#define triangle_opacity_intro 0x01 +#define triangle_unopacity_intro 0x02 +#define triangle_dmg_set_intro 0x03 +#define triangle_dmg_clear_intro 0x04 +#define triangle_sca_intro 0x05 +#define triangle_dmg2enbl_intro 0x06 +#define triangle_undmg2enbl_intro 0x07 +#define triangle_bright32_intro 0x08 +#define triangle_dark32_intro 0x09 +#define triangle_fifty_intro 0x0a +#define triangle_surfopacity_intro 0x0b +#define triangle_albright32_intro 0x0c +#define triangle_aldark32_intro 0x0d +#define triangle_albrightfog_intro 0x0e + +#define triangle_texture_bit 0x010 +#define triangle_dither_bit 0x020 +#define triangle_gouraud_bit 0x040 +#define triangle_enbl2dmg_bit 0x080 +#define triangle_white_bit 0x100 +#define triangle_emiss_bit 0x200 + +#ifdef __cplusplus +} +#endif +#endif diff --git a/CODE/BT/MUNGA_L4/LIBDPL/DPL/VPX/VR_PROT.H b/CODE/BT/MUNGA_L4/LIBDPL/DPL/VPX/VR_PROT.H new file mode 100644 index 0000000..bcd5b4c --- /dev/null +++ b/CODE/BT/MUNGA_L4/LIBDPL/DPL/VPX/VR_PROT.H @@ -0,0 +1,95 @@ +#ifndef vr_prot_h +#define vr_prot_h +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum vr_action { + vr_init_action, + + vr_create_action, + vr_delete_action, + vr_flush_action, + + vr_sect_pixel_action, + vr_sect_vector_action, + + vr_dcs_nest_action, + vr_dcs_link_action, + vr_dcs_prune_action, + + vr_draw_scene_action, + vr_draw_scene_complete_action, + + vr_list_add_action, + vr_list_remove_action, + + vr_morph_action, + + vr_version_action, + vr_statistics_action, + vr_readpixels_action, + + vr_hspcode_action, + vr_860code_action, + vr_860data_action, + vr_860bss_action, + vr_860args_action, + + vr_set_geom_text_action, + vr_update_geom_verts_action, + vr_get_geom_verts_action, + vr_add_geom_connections_action, + vr_set_texmap_texels_action, + vr_sfx_action, + vr_install_sfx_action, + vr_psfx_action, + vr_install_psfx_action, + vr_flush_dcs_artic_action, + vr_damage_action, + vr_random_table_action, + vr_gamma_table_action, + vr_kill_sfx_action, + vr_geometrize_action, + vr_clone_object_action, + vr_set_sect_pixel_action, + vr_set_warning_action, + vr_set_render_prop_action, + vr_create_2d_display_action, + vr_delete_2d_display_action, + vr_flush_2d_display_action, + vr_freemem_action, + vr_sync_action, + vr_get_bounds_action, + vr_get_geom_connections_action, + vr_get_geom_numconnections_action, + vr_cleanup_gg_action, + vr_clear_dcs_action, + vr_remove_dcs_action, + vr_add_dcs_action +} vr_action; + +/* some i860 states for transputer-side monitoring */ + +#define state_vr_rcv_wait_lock 0 +#define state_vr_rcv_wait_ack 1 +#define state_vr_send_wait_lock 2 +#define state_vr_send_wait_ack 3 +#define state_vr_dma_wait_lock 4 +#define state_vr_dma_wait_ack 5 +#define state_vr_dma_spin_lock 6 +#define state_vr_texels_wait_lock 7 +#define state_vr_texels_wait_ack 8 +#define state_vr_texels_spin_lock 9 +#define state_vr_cull 10 +#define state_vr_draw 11 + +#define state_monitor 0 + +#define set_state(a,b,c) if (state_monitor) set_i860_state(a,b,c) +#define aux_state(a,b,c) if (state_monitor) set_i860_auxstate(a,b,c) + +#ifdef __cplusplus +} +#endif +#endif diff --git a/CODE/BT/MUNGA_L4/LIBDPL/DPL/VPX/VSSVER.SCC b/CODE/BT/MUNGA_L4/LIBDPL/DPL/VPX/VSSVER.SCC new file mode 100644 index 0000000..09366a3 Binary files /dev/null and b/CODE/BT/MUNGA_L4/LIBDPL/DPL/VPX/VSSVER.SCC differ diff --git a/CODE/BT/MUNGA_L4/LIBDPL/DPL/VSSVER.SCC b/CODE/BT/MUNGA_L4/LIBDPL/DPL/VSSVER.SCC new file mode 100644 index 0000000..c5e9452 Binary files /dev/null and b/CODE/BT/MUNGA_L4/LIBDPL/DPL/VSSVER.SCC differ diff --git a/CODE/BT/MUNGA_L4/LIBDPL/DSYS/DIVTYPES.DEF b/CODE/BT/MUNGA_L4/LIBDPL/DSYS/DIVTYPES.DEF new file mode 100644 index 0000000..0b14825 --- /dev/null +++ b/CODE/BT/MUNGA_L4/LIBDPL/DSYS/DIVTYPES.DEF @@ -0,0 +1,75 @@ +/* + * PROJECT: DVS + * SUBSYSTEM: VL + * MODULE: basictypes.def + * + * File: $RCSfile: divtypes.def,v $ + * Revision: $Revision: 2.3 $ + * Date: $Date: 1995/04/27 10:40:16 $ + * Author: $Author: jeff $ + * RCS Ident: $Id: divtypes.def,v 2.3 1995/04/27 10:40:16 jeff beta $ + * + * FUNCTION: + * This module is used to hold the parameterised definitions of the basic + * types used throughout the system for all the machines supported. When + * porting to a new architecture all type stuff should be modified in + * here. There should be no machine dependant code anywhere else! + * + * each of the basic type int8 uint8 etc, etc is defined in terms of + * standard ansi 'C' types here, and given a enum name for conveniance. + * + * char8 is used for cases where the signedness of the byte is irelevent + * such as in character strings etc. + * The format is DEF_TYPE ( , , ) + * + * $Log: divtypes.def,v $ + * Revision 2.3 1995/04/27 10:40:16 jeff + * *** empty log message *** + * + * Revision 2.2 1994/09/08 12:35:33 jeff + * added windows basic types. + * + * Revision 2.1 1994/04/08 13:50:14 jeff + * Importded from 2.0 tree. + * + * + * Copyright (c) 1994 Division Ltd. + * + * All Rights Reserved. + * + * This Document may not, in whole or in part, be copied, + * photocopied, reproduced, translated, or reduced to any + * electronic medium or machine readable form without prior + * written consent from Division Ltd. + */ + +#if defined (_WIN31) + +DEF_TYPE( CHAR8, char8, char) +DEF_TYPE( INT8, int8, signed char) +DEF_TYPE( UINT8, uint8, unsigned char) +DEF_TYPE( INT16, int16, signed int) +DEF_TYPE( UINT16, uint16, unsigned int) +DEF_TYPE( INT32, int32, signed long) +DEF_TYPE( UINT32, uint32, unsigned long) +DEF_TYPE( FLOAT32, float32, float) +DEF_TYPE( FLOAT64, float64, double) + +#else + +DEF_TYPE( CHAR8, char8, char) +DEF_TYPE( INT8, int8, signed char) +DEF_TYPE( UINT8, uint8, unsigned char) +DEF_TYPE( INT16, int16, signed short) +DEF_TYPE( UINT16, uint16, unsigned short) +DEF_TYPE( INT32, int32, signed int) +DEF_TYPE( UINT32, uint32, unsigned int) +DEF_TYPE( FLOAT32, float32, float) +DEF_TYPE( FLOAT64, float64, double) + +#endif + +/* + * Note we may need to put ifdefs back in here for some machines IE 64Bit + * processors ? + */ diff --git a/CODE/BT/MUNGA_L4/LIBDPL/DSYS/DIVTYPES.H b/CODE/BT/MUNGA_L4/LIBDPL/DSYS/DIVTYPES.H new file mode 100644 index 0000000..694be94 --- /dev/null +++ b/CODE/BT/MUNGA_L4/LIBDPL/DSYS/DIVTYPES.H @@ -0,0 +1,73 @@ +/* + * PROJECT: DVS + * SUBSYSTEM: vl + * MODULE: divtypes.h + * + * File: $RCSfile: divtypes.h,v $ + * Revision: $Revision: 2.11 $ + * Date: $Date: 1995/05/18 09:36:22 $ + * Author: $Author: jeff $ + * RCS Ident: $Id: divtypes.h,v 2.11 1995/05/18 09:36:22 jeff beta $ + * + * FUNCTION: + * + * This file contains standard type definitions used by all higher + * levels in the system. + * + * Copyright (c) 1994 Division Ltd. + * + * All Rights Reserved. + * + * This Document may not, in whole or in part, be copied, + * photocopied, reproduced, translated, or reduced to any + * electronic medium or machine readable form without prior + * written consent from Division Ltd. + */ +#ifndef _DIVTYPES_H +#define _DIVTYPES_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * mangle the divtypes.def file to get machine specific low level + * definitions for all our basic types. + */ +#define DEF_TYPE(a,b,c) typedef c b; +#include +#undef DEF_TYPE + +/* + * generate an enum list of all the symbolic values for the types. + */ +#define DEF_TYPE(a,b,c) a, +typedef enum dpDivType { +#include +LAST_TYPE +} dpDivType; +#undef DEF_TYPE +#define BASIC_TYPE_CNT ((int)LAST_TYPE) + +/* + * A structure to define the names etc of the basic types for internal + * use. + */ +typedef struct dpTypeSpec{ + char8 endian16[3]; + char8 endian32[5]; + struct { + char8 *name; + uint32 size; + uint32 alignment; + }Sizes[BASIC_TYPE_CNT]; +} dpTypeSpec; + +extern void dpGenDivTypes(dpTypeSpec *spec); + +#ifdef __cplusplus +} +#endif +#endif /* _DIVTYPES_H */ + + diff --git a/CODE/BT/MUNGA_L4/LIBDPL/DSYS/DIVVERS.H b/CODE/BT/MUNGA_L4/LIBDPL/DSYS/DIVVERS.H new file mode 100644 index 0000000..a7d07a5 --- /dev/null +++ b/CODE/BT/MUNGA_L4/LIBDPL/DSYS/DIVVERS.H @@ -0,0 +1,54 @@ +/* + * PROJECT: DVS + * SUBSYSTEM: dp + * MODULE: divvers.c + * + * File: $RCSfile: divvers.h,v $ + * Revision: $Revision: 1.6 $ + * Date: $Date: 1995/05/18 09:36:22 $ + * Author: $Author: jeff $ + * RCS Ident: $Id: divvers.h,v 1.6 1995/05/18 09:36:22 jeff beta $ + * + * FUNCTION: + * macro to aid the printing of version no's for components. + * + * Copyright (c) 1995 Division Ltd. + * + * All Rights Reserved. + * + * This Document may not, in whole or in part, be copied, + * photocopied, reproduced, translated, or reduced to any + * electronic medium or machine readable form without prior + * written consent from Division Ltd. + */ +#ifndef _DIVVERS_H +#define _DIVVERS_H + +#include +#define divVersion(filep,module,description,version) \ +do { \ + static int done = 0; \ + static char *vstring = "@(#)Division dVS. " module " - " description \ + ". Version " version ". " __DATE__ ; \ + if (done == 0) { \ + fprintf (stdout, "%s\n", &vstring [4]); \ + if (filep) \ + fprintf (filep, "%s\n", &vstring [4]); \ + } \ + done = 1; \ +} while (0) + +#define div3rdPartyVersion(filep,party,description,version,date) \ +do { \ + static int done = 0; \ + static char *vstring = party ". " description \ + ". Version " version ". " date ; \ + if (done == 0) { \ + fprintf (stdout, "%s\n", vstring); \ + if (filep) \ + fprintf (filep, "%s\n", vstring ); \ + } \ + done = 1; \ +} while (0) + +#endif diff --git a/CODE/BT/MUNGA_L4/LIBDPL/DSYS/DP.H b/CODE/BT/MUNGA_L4/LIBDPL/DSYS/DP.H new file mode 100644 index 0000000..c9660c9 --- /dev/null +++ b/CODE/BT/MUNGA_L4/LIBDPL/DSYS/DP.H @@ -0,0 +1,47 @@ +/* + * PROJECT: dVS + * SUBSYSTEM: dp + * MODULE: dp.h + * + * + * File: $RCSfile: dp.h,v $ + * Revision: $Revision: 2.9 $ + * Date: $Date: 1995/05/18 09:36:22 $ + * Author: $Author: jeff $ + * RCS Ident: $Id: dp.h,v 2.9 1995/05/18 09:36:22 jeff beta $ + * + * FUNCTION: + * + * + * Copyright (c) 1994 Division Ltd. + * + * All Rights Reserved. + * + * This Document may not, in whole or in part, be copied, photocopied, + * reproduced, translated, or reduced to any electronic medium or + * machine readable form without prior written consent from Division + * Ltd. + */ + +#ifndef _DP_H +#define _DP_H 1 + +#ifdef _cplusplus +extern "C" { +#endif + +#if defined (_UNIX) +#include +#elif defined (_TRANSPUTER) || defined (_I860) +#include +#elif defined (_WIN31) +#include +#else +#error "Unknown processor type " +#endif + +#ifdef _cplusplus +} +#endif + +#endif /* _DP_H */ diff --git a/CODE/BT/MUNGA_L4/LIBDPL/DSYS/DS.H b/CODE/BT/MUNGA_L4/LIBDPL/DSYS/DS.H new file mode 100644 index 0000000..b5fd2f6 --- /dev/null +++ b/CODE/BT/MUNGA_L4/LIBDPL/DSYS/DS.H @@ -0,0 +1,48 @@ +/* + * PROJECT: + * SUBSYSTEM: + * MODULE: + * + * FILE: $RCSfile: ds.h,v $ + * REVISION: $Revision: 1.6 $ + * Date: $Date: 1995/05/18 09:39:38 $ + * Author: $Author: jeff $ + * RCS Ident: $Id: ds.h,v 1.6 1995/05/18 09:39:38 jeff beta $ + * + * FUNCTION: + * + * Copyright (c) 1994 Division Ltd. + * + * All Rights Reserved. + * + * This Document may not, in whole or in part, be copied, + * photocopied, reproduced, translated, or reduced to any + * electronic medium or machine readable form without prior + * written consent from Division Ltd. + */ + +#ifndef _DS_H +#define _DS_H + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct +{ + char *string; +}DStringTraverseInfo; + +extern void dsVersion(FILE *fp); +char *dStringFromOptions (char *string, int *size, char *name, ...); +char *dStringFirstString (char *string, DStringTraverseInfo *info); +char *dStringNextOption (char *option, DStringTraverseInfo *info); + + +#define DS_END_OF_OPTIONS '\0' + + +#ifdef __cplusplus +} +#endif +#endif /*_DS_H */ diff --git a/CODE/BT/MUNGA_L4/LIBDPL/DSYS/GETPARAM.H b/CODE/BT/MUNGA_L4/LIBDPL/DSYS/GETPARAM.H new file mode 100644 index 0000000..4bb85b9 --- /dev/null +++ b/CODE/BT/MUNGA_L4/LIBDPL/DSYS/GETPARAM.H @@ -0,0 +1,73 @@ +/* +-- ---------------------------------------------------------------------------- +-- +-- Copyright 1995 Division Limited. +-- All Rights Reserved +-- +-- +-- System : +-- Module : +-- Object Name : $RCSfile: getparam.h,v $ +-- Revision : $Revision: 1.6 $ +-- Date : $Date: 95/04/27 23:01:16 $ +-- Author : $Author: bill $ +-- +-- Description +-- +-- Notes +-- +-- History +-- +-- +-- ---------------------------------------------------------------------------- +*/ + +#ifndef __GETPARAM_H__ +#define __GETPARAM_H__ + +#ifdef _PF_LOCAL +#include "pgeneral.h" +#else +#include +#endif + +/*****************************************************************************/ +/* getparam error numbers */ +#define dgpENO_STREXP 0x3001 +#define dgpENO_UNKOPT 0x3002 +#define dgpENO_USAGE 0x3003 +#define dgpENO_RSRCF 0x3004 + +/**************************************************************************** + * getparam monitor numbers */ +#define dgpMON_OPTIONS 0x00001000 +#define dgpMON_FILES 0x00002000 + + +#define dgp_END 0 +#define dgp_NO_STR 1 +#define dgp_D_STR 2 +#define dgp_DJOIN_STR 3 +#define dgp_DAFTER_STR 4 +#define dgp_DBOTH_STR 5 +#define dgp_O_STR 6 +#define dgp_OJOIN_STR 7 +#define dgp_OAFTER_STR 8 +#define dgp_OBOTH_STR 9 + +typedef struct { + char optname[15] ; + int32 opttype ; + int32 optreturn ; +} dgpTABLE, *dgpTABLEPTR ; + +extern char *progname ; + +int32 +dgpGetopt(int32 argc, char *argv[], dgpTABLEPTR table, + int32 *NoFiles, char **files[], char **str1, char **str2) ; + +void +dgpFreeFiles(int32 NoFiles, char *files[]) ; + +#endif /* __GETPARAM_H__ */ diff --git a/CODE/BT/MUNGA_L4/LIBDPL/DSYS/MAPFILE.H b/CODE/BT/MUNGA_L4/LIBDPL/DSYS/MAPFILE.H new file mode 100644 index 0000000..4c13dcd --- /dev/null +++ b/CODE/BT/MUNGA_L4/LIBDPL/DSYS/MAPFILE.H @@ -0,0 +1,99 @@ +/* +-- ---------------------------------------------------------------------------- +-- +-- Copyright 1994 Division Limited. +-- All Rights Reserved +-- +-- +-- System : +-- Module : +-- Object Name : $RCSfile: mapfile.h,v $ +-- Revision : $Revision: 1.3 $ +-- Date : $Date: 95/04/27 23:01:16 $ +-- Author : $Author: bill $ +-- +-- Description +-- +-- Notes +-- +-- History +-- +-- +-- ---------------------------------------------------------------------------- +*/ + +#ifndef __MAPFILE_H__ +#define __MAPFILE_H__ + +#ifdef _PF_LOCAL +#include "ptool.h" +#else +#include +#endif + +/* Error Numbers */ +#define dmpENO_OPEN 0x50001 +#define dmpENO_FORM 0x50002 + +typedef struct dmpMATFILETYPE +{ + char *name ; + dpfFILEPTR file ; + struct dmpMATFILETYPE *next ; +} dmpMATFILE, *dmpMATFILEPTR ; + +typedef struct dmpBLOCKTYPE +{ + char *name ; + int32 ignore ; + struct dmpBLOCKTYPE *next ; +} dmpBLOCK, *dmpBLOCKPTR ; + +typedef struct dmpMAPPINGTYPE +{ + char *from, *to ; + int32 gotMat ; + int32 gotText ; + dptTEXTURE text ; + struct dmpMAPPINGTYPE *next ; +} dmpMAPPING, *dmpMAPPINGPTR ; + +typedef struct +{ + dmpMATFILEPTR materials ; + dmpMAPPINGPTR mappings ; + dmpBLOCKPTR blocks ; +} dmpFILE, *dmpFILEPTR ; + +dmpFILEPTR +dmpCreateFile(void) ; +dmpMATFILEPTR +dmpCreateMatFile(void) ; +int32 +dmpAddMatFile(dmpFILEPTR mp, dmpMATFILEPTR mat) ; +dmpBLOCKPTR +dmpCreateBlock(void) ; +int32 +dmpAddBlock(dmpFILEPTR mp, dmpBLOCKPTR blk) ; +dmpMAPPINGPTR +dmpCreateMapping(void) ; +int32 +dmpAddMapping(dmpFILEPTR mp, dmpMAPPINGPTR map) ; +void +dmpFreeFile(dmpFILEPTR mp) ; +dmpMAPPINGPTR +dmpFindMapping(dmpFILEPTR mp, char *name) ; +dpfMATERIALPTR +dmpFindMaterial(dmpFILEPTR mp, char *name) ; +dpfTEXTUREPTR +dmpFindTexture(dmpFILEPTR mp, char *name) ; +dmpBLOCKPTR +dmpFindBlock(dmpFILEPTR mp, char *name) ; + +int32 +dmpGetMapFile(dmpFILEPTR mp, char *fileName) ; +int32 +dmpSaveFile(char *name, dmpFILEPTR file) ; + + +#endif /* __MAPFILE */ diff --git a/CODE/BT/MUNGA_L4/LIBDPL/DSYS/PFPARSER.H b/CODE/BT/MUNGA_L4/LIBDPL/DSYS/PFPARSER.H new file mode 100644 index 0000000..426483b --- /dev/null +++ b/CODE/BT/MUNGA_L4/LIBDPL/DSYS/PFPARSER.H @@ -0,0 +1,97 @@ +/* + * PROJECT: + * SUBSYSTEM: + * MODULE: + * + * FILE: $RCSfile: pfparser.h,v $ + * REVISION: $Revision: 1.3 $ + * Date: $Date: 95/04/27 23:01:16 $ + * Author: $Author: bill $ + * RCS Ident: $Id: pfparser.h,v 1.3 95/04/27 23:01:16 bill Exp $ + * + * FUNCTION: + * + * Copyright (c) 1994 Division Ltd. + * + * All Rights Reserved. + * + * This Document may not, in whole or in part, be copied, + * photocopied, reproduced, translated, or reduced to any + * electronic medium or machine readable form without prior + * written consent from Division Ltd. + */ + +#ifndef __PFPARSER_H__ +#define __PFPARSER_H__ + +#include +#ifdef _PF_LOCAL +#include "pgeneral.h" +#else +#include +#endif + +#define dpp_MATCH_CASE 0 +#define dpp_ANY_CASE 1 + +/* On calls which either succeed or fail, dpgSUCCESS (0) or dpgERROR (-1) + * is returned. On calls to get next token however the following + * return values are also used + */ +#define dppEOF -2 +#define dppSTRING -3 +#define dppNUMBER -4 + +typedef struct dppKEYTAB +{ + int32 tok; + char *name; + int32 matchCase; +} dppKEYTAB ; + + +typedef struct dppFILE +{ + int32 lineNo; + int32 errorFlag; + char *fileName; + FILE *file; + char *whites ; + char comment ; + int32 pushedBackToken; + float number; + char *buffer; + int32 bufSize; + int32 bufPos; + dppKEYTAB *keyTab; +} dppFILE, *dppFILEPTR ; + + + +dppFILEPTR +dppOpenFile (char *name, FILE *fp, const char *whites, char comment, + dppKEYTAB *keyTable, int32 bufferSize); +void +dppCloseFile (dppFILEPTR fPtr); +char * +dppTokenToString (dppFILEPTR fptr, const int32 token); +int32 +dppPushToken (dppFILEPTR fptr, const int32 token); +int32 +dppNextToken (dppFILEPTR fptr); +int32 +dppReadToNextChar(dppFILEPTR fPtr, char endChr) ; +char * +dppMatchString (dppFILEPTR fptr); +int32 +dppMatchInt (dppFILEPTR fptr, int32 *num); +int32 +dppMatchFloat (dppFILEPTR fptr, float *num); +int32 +dppMatchCharacter (dppFILEPTR fptr, char c); +void +dppMoveToNextLine(dppFILEPTR fptr) ; + + +#endif /* __PFPARSER_H__ */ + diff --git a/CODE/BT/MUNGA_L4/LIBDPL/DSYS/VSSVER.SCC b/CODE/BT/MUNGA_L4/LIBDPL/DSYS/VSSVER.SCC new file mode 100644 index 0000000..f82ceea Binary files /dev/null and b/CODE/BT/MUNGA_L4/LIBDPL/DSYS/VSSVER.SCC differ diff --git a/CODE/BT/MUNGA_L4/LIBDPL/DSYS/__PTOOL.H b/CODE/BT/MUNGA_L4/LIBDPL/DSYS/__PTOOL.H new file mode 100644 index 0000000..6741a49 --- /dev/null +++ b/CODE/BT/MUNGA_L4/LIBDPL/DSYS/__PTOOL.H @@ -0,0 +1,84 @@ +/* +-- ---------------------------------------------------------------------------- +-- +-- Copyright 1995 Division Limited. +-- All Rights Reserved +-- +-- +-- System : +-- Module : +-- Object Name : $RCSfile: __ptool.h,v $ +-- Revision : $Revision: 1.11 $ +-- Date : $Date: 95/05/16 13:46:18 $ +-- Author : $Author: bill $ +-- +-- Description +-- +-- Notes +-- +-- History +-- +-- +-- ---------------------------------------------------------------------------- +*/ +/* __ptools2.h */ +#ifndef ____PTOOL_H__ +#define ____PTOOL_H__ + +#ifdef _PF_LOCAL +#include "ptool.h" +#else +#include +#endif + +/* ver change */ +/* 2.01 Initial version for tools library */ +/* 2.02 New line definitions and coping with texture etc */ +/* 2.03 New material stuff */ +/* 2.04 New STRIP_LIST and POINTLIST */ +#define dpt_LIBRARY_MAJOR_VER 2 +#define dpt_LIBRARY_MINOR_VER 04 + +#define dpt_TINY_float32 1.0e-24 + + + +/************************************************************* +* ptmesh Routines used by other dptOols * +*************************************************************/ + +dpfVERTEXPTR +dptCreateVertex(void) ; +dpfVERTEXPTR +dptMeshAddVertex ( dptMESHPTR mesh, dpfVERTEXPTR Fvert ) ; +dpfVERTEXPTR +dptMeshAddNewVertex(dptMESHPTR mesh, dpfPATCHPTR patch, dmVector point, + dmVector norm, dpfRGBA col, dpfTEXT text) ; +dptTRIANGLEPTR +dptMeshAddTriangle(dptMESHPTR mesh, dpfPATCHPTR patch, dpfVERTEXPTR vert1, + dpfVERTEXPTR vert2, dpfVERTEXPTR vert3) ; +void +dptMeshRemoveTriangle(dptMESHPTR mesh, dptTRIANGLEPTR trian) ; +void +dptMeshUnloadGeometry(dptTRIANGLEPTR start, dptMESHPTR mesh, dpfPATCHPTR patch, + int32 usePmesh) ; +void +dptMeshDisconnectTriangle(dptMESHPTR mesh, dptTRIANGLEPTR trian) ; +void +dptMeshConnectTriangle(dptMESHPTR mesh, dptTRIANGLEPTR trian) ; +void +dptAddGeometryPatch(dptMESHPTR mesh, dpfGEOMETRYPTR geom) ; + + +/* reduce a mesh, used in ptbound */ +int32 +dptrReduceMesh(dptMESHPTR mesh, float32 Norm_tol, float32 Edge_tol, + int32 Verbose) ; + +/* defined in ptreduce, used also in ptflip */ +dptTRIANGLEPTR +dptGetTriangleDuplicate(dptTRIANGLEPTR tri) ; + +#endif /* ____PTOOL_H__ */ + + diff --git a/CODE/BT/MUNGA_L4/LIBDPL/DVS/DM.H b/CODE/BT/MUNGA_L4/LIBDPL/DVS/DM.H new file mode 100644 index 0000000..0e94c68 --- /dev/null +++ b/CODE/BT/MUNGA_L4/LIBDPL/DVS/DM.H @@ -0,0 +1,29 @@ +/* + * PROJECT: + * SUBSYSTEM: + * MODULE: + * + * File: $RCSfile: dm.h,v $ + * Revision: $Revision: 1.3 $ + * Date: $Date: 1995/05/18 09:48:43 $ + * Author: $Author: jeff $ + * RCS Ident: $Id: dm.h,v 1.3 1995/05/18 09:48:43 jeff beta $ + * + * FUNCTION: + * + * + * + * Copyright (c) 1995 Division Ltd. + * + * All Rights Reserved. + * + * This Document may not, in whole or in part, be copied, + * photocopied, reproduced, translated, or reduced to any + * electronic medium or machine readable form without prior + * written consent from Division Ltd. + */ +#ifndef _DVS_DM_H +#define _DVS_DM_H +#include +#include +#endif /*_DVS_DM_H */ diff --git a/CODE/BT/MUNGA_L4/LIBDPL/DVS/VCBODAPP.H b/CODE/BT/MUNGA_L4/LIBDPL/DVS/VCBODAPP.H new file mode 100644 index 0000000..97aa8e7 --- /dev/null +++ b/CODE/BT/MUNGA_L4/LIBDPL/DVS/VCBODAPP.H @@ -0,0 +1,47 @@ + +typedef struct +{ + int state; + void *collideEntity; + void *pickEntity; + void *pickRelocateHandle; + void *relocateData; +}VCBodyPartAppInfo; + +typedef struct +{ + VCEntity *entity; + VCAttribute *bodyPart; + VCBody *body; +}VCBodyAppCallbackData; + +typedef struct +{ + VCAttribute *bodyPart; + VCBody *body; +}VCBodyAppRelocateData; + + +#define VC_BODYAPP_COLLIDED 0x00000001 +#define VC_BODYAPP_PICK_PRESSED 0x00000002 + +typedef void (*VCBodyTouchFunc)(VCBodyAppCallbackData *callbackData, void *data); +typedef void (*VCBodyUnTouchFunc)(VCBodyAppCallbackData *callbackData, void *data); +typedef void (*VCBodyPickFunc)(VCBodyAppCallbackData *callbackData, void *data); +typedef void (*VCBodyDropFunc)(VCBodyAppCallbackData *callbackData, void *data); +typedef void (*VCBodyMoveFunc)(VCBodyAppCallbackData *callbackData, void *data); + +typedef struct +{ + void *touchFunc; + void *unTouchFunc; + void *pickFunc; + void *dropFunc; + void *moveFunc; +} VCBodyFuncInfo; + +void *VCBody_AttachInteractionCallbacks(VCBody *body, VCBodyTouchFunc touchFunc, + VCBodyUnTouchFunc unTouchFunc, VCBodyPickFunc pickFunc, + VCBodyDropFunc dropFunc, VCBodyMoveFunc moveFunc, void *data); + +void VCBody_DetachInteractionCallbacks(VCBody *body, void *callbackHandle); diff --git a/CODE/BT/MUNGA_L4/LIBDPL/DVS/VCERROR.H b/CODE/BT/MUNGA_L4/LIBDPL/DVS/VCERROR.H new file mode 100644 index 0000000..0097c68 --- /dev/null +++ b/CODE/BT/MUNGA_L4/LIBDPL/DVS/VCERROR.H @@ -0,0 +1,33 @@ +/* +-- ---------------------------------------------------------------------------- +-- +-- Copyright 1994 Division Limited. +-- All Rights Reserved +-- +-- +-- System : dVS 2.1 +-- Module : libvc +-- Object Name : $RCSfile: vcerror.h,v $ +-- Revision : $Revision: 1.1 $ +-- Date : $Date: 95/05/18 10:24:15 $ +-- Author : $Author: john $ +-- +-- Description +-- Vcerror routines. +-- +-- Notes +-- +-- History +-- +-- +-- ---------------------------------------------------------------------------- +*/ + +#ifndef __VCERROR_H__ +#define __VCERROR_H__ + +void VC_Warn(char *format, ...); +void VC_Error(char *format, ...); +void VC_Fatal(char *format, ...); + +#endif /* __VCERROR_H__ */ diff --git a/CODE/BT/MUNGA_L4/LIBDPL/DVS/VCINPDEF.H b/CODE/BT/MUNGA_L4/LIBDPL/DVS/VCINPDEF.H new file mode 100644 index 0000000..8a8b0e4 --- /dev/null +++ b/CODE/BT/MUNGA_L4/LIBDPL/DVS/VCINPDEF.H @@ -0,0 +1,71 @@ +/* + * PROJECT: + * SUBSYSTEM: + * MODULE: + * + * FILE: $RCSfile: vcinpdef.h,v $ + * REVISION: $Revision: 1.1 $ + * Date: $Date: 95/05/18 10:24:16 $ + * Author: $Author: john $ + * RCS Ident: $Id: vcinpdef.h,v 1.1 1995/03/10 14:52:46 john Exp $ + * + * FUNCTION: + * + * Copyright (c) 1994 Division Ltd. + * + * All Rights Reserved. + * + * This Document may not, in whole or in part, be copied, + * photocopied, reproduced, translated, or reduced to any + * electronic medium or machine readable form without prior + * written consent from Division Ltd. + */ + + +/* + * define the modifier values + */ +#define VC_INPUT_RELEASE 0x00010000 +#define VC_INPUT_PRESS 0x00020000 +#define VC_MODIFIER_0 0x00100000 +#define VC_MODIFIER_1 0x00200000 +#define VC_MODIFIER_2 0x00400000 +#define VC_MODIFIER_3 0x00800000 +#define VC_MODIFIER_4 0x01000000 +#define VC_MODIFIER_5 0x02000000 +#define VC_MODIFIER_6 0x04000000 +#define VC_MODIFIER_7 0x08000000 + +#define VC_MODIFIER_CTRL VC_MODIFIER_0 +#define VC_MODIFIER_ALT VC_MODIFIER_1 +#define VC_MODIFIER_ESC VC_MODIFIER_2 + +#define VC_INPUT_CODE_MASK 0x0000ffff +#define VC_INPUT_TYPE 0x000f0000 +#define VC_INPUT_MODIFIER_MASK 0x0ff00000 +#define VC_INPUT_ALL_KEYS 0x0000ffff +#define VC_INPUT_SINGLE_KEY 0x00000000 + +#define VC_BUTTON_0 0x0080 +#define VC_BUTTON_1 0x0081 +#define VC_BUTTON_2 0x0082 +#define VC_BUTTON_3 0x0083 +#define VC_BUTTON_4 0x0084 +#define VC_BUTTON_5 0x0085 +#define VC_BUTTON_6 0x0086 +#define VC_BUTTON_7 0x0087 +#define VC_BUTTON_8 0x0088 +#define VC_BUTTON_9 0x0089 +#define VC_BUTTON_10 0x008a +#define VC_BUTTON_11 0x008b +#define VC_BUTTON_12 0x008c +#define VC_BUTTON_13 0x008d +#define VC_BUTTON_14 0x008e +#define VC_BUTTON_15 0x008f + + + + + + + diff --git a/CODE/BT/MUNGA_L4/LIBDPL/DVS/VCMACROS.H b/CODE/BT/MUNGA_L4/LIBDPL/DVS/VCMACROS.H new file mode 100644 index 0000000..701838c --- /dev/null +++ b/CODE/BT/MUNGA_L4/LIBDPL/DVS/VCMACROS.H @@ -0,0 +1,33 @@ +/* + * PROJECT: + * SUBSYSTEM: + * MODULE: + * + * FILE: $RCSfile: vctools.h,v $ + * REVISION: $Revision: 1.1 $ + * Date: $Date: 95/05/18 10:24:16 $ + * Author: $Author: john $ + * RCS Ident: $Id: vctools.h,v 0.10 1994/10/05 12:51:14 john Exp jon $ + * + * FUNCTION: + * + * Copyright (c) 1995 Division Ltd. + * + * All Rights Reserved. + * + * This Document may not, in whole or in part, be copied, + * photocopied, reproduced, translated, or reduced to any + * electronic medium or machine reable form without prior + * written consent from Division Ltd. + */ + + + +#ifndef _VCMACROS_H_ +#define _VCMACROS_H_ + +#define VC_GetEntityRelocateMode() VCEntity_GetRelocateMode(NULL) +#define VC_SetEntityRelocateMode(m) VCEntity_SetRelocateMode(NULL,m) +#define VCBody_SetVisualResourceBackgroundColor(b,c) VCBody_SetVisualResourceBackgroundColour(b,c) +#define VCBody_SetVisualResourceFogColor(b,c,t,m) VCBody_SetVisualResourceFogColour(b,c,t,m) +#endif diff --git a/CODE/BT/MUNGA_L4/LIBDPL/DVS/VSSVER.SCC b/CODE/BT/MUNGA_L4/LIBDPL/DVS/VSSVER.SCC new file mode 100644 index 0000000..1d5cc48 Binary files /dev/null and b/CODE/BT/MUNGA_L4/LIBDPL/DVS/VSSVER.SCC differ diff --git a/CODE/BT/MUNGA_L4/LIBDPL/DVS/_VCTYPES.H b/CODE/BT/MUNGA_L4/LIBDPL/DVS/_VCTYPES.H new file mode 100644 index 0000000..ad9bc88 --- /dev/null +++ b/CODE/BT/MUNGA_L4/LIBDPL/DVS/_VCTYPES.H @@ -0,0 +1,10 @@ +#ifndef __VCTYPES_H +#define __VCTYPES_H + +typedef struct _VCTimer_CallbackInfo _VCTimer_CallbackInfo; +typedef struct _VCBodyPartList _VCBodyPartList; +typedef struct _VCBody_InputFuncData _VCBody_InputFuncData; +typedef struct _VCBody_CollideFuncData _VCBody_CollideFuncData; +typedef struct _VCInput_FuncData _VCInput_FuncData; + +#endif diff --git a/CODE/BT/MUNGA_L4/LIBDPL/VSSVER.SCC b/CODE/BT/MUNGA_L4/LIBDPL/VSSVER.SCC new file mode 100644 index 0000000..fbd2c8f Binary files /dev/null and b/CODE/BT/MUNGA_L4/LIBDPL/VSSVER.SCC differ diff --git a/CODE/BT/MUNGA_L4/MSSCCPRJ.SCC b/CODE/BT/MUNGA_L4/MSSCCPRJ.SCC new file mode 100644 index 0000000..68b3698 --- /dev/null +++ b/CODE/BT/MUNGA_L4/MSSCCPRJ.SCC @@ -0,0 +1,5 @@ +SCC = This is a Source Code Control file + +[mungal4.mak] +SCC_Aux_Path = "\\AVATAR\Mungass\VSS" +SCC_Project_Name = "$/Tesla_BT/MUNGA_L4", XOCAAAAA diff --git a/CODE/BT/MUNGA_L4/MUNGAL4.HPP b/CODE/BT/MUNGA_L4/MUNGAL4.HPP new file mode 100644 index 0000000..0a00c84 --- /dev/null +++ b/CODE/BT/MUNGA_L4/MUNGAL4.HPP @@ -0,0 +1,28 @@ +#if !defined(MUNGAL4_HPP) +# define MUNGAL4_HPP + +# if !defined(MUNGA_HPP) +# include +# endif + +# define __DPMI32__ +# include + +# if !defined(NO_PRECOMPILED_HEADERS) + +# if !defined(GRAPH2D_HPP) +# include +# endif + +# if !defined(L4HOST_HPP) +# include +# endif + +# if !defined(L4APP_HPP) +# include +# endif + +# endif + +#endif + diff --git a/CODE/BT/MUNGA_L4/NETNUB/ANALYSIS.HPP b/CODE/BT/MUNGA_L4/NETNUB/ANALYSIS.HPP new file mode 100644 index 0000000..fa4d71f --- /dev/null +++ b/CODE/BT/MUNGA_L4/NETNUB/ANALYSIS.HPP @@ -0,0 +1,58 @@ +#if !defined(ANALYSIS_HPP) +# define ANALYSIS_HPP + + // + //############################################################################# + // Set one of the 12 outputable bits of the parallel port at 0x378 (usually + // LPT1), taking into account the hardware sense of the bit + //############################################################################# + // + void + Set_Analysis(int bit); + + // + //############################################################################# + // Clear one of the 12 outputable bits of the parallel port at 0x378 (usually + // LPT1, taking into account the hardware sense of the bit. + //############################################################################# + // + void + Clear_Analysis(int bit); + + // + //############################################################################# + // Read the state of one of the 12 outputable bits of the parallel port at + // 0x378 (usually LPT1, taking into account the hardware sense of the bit. + //############################################################################# + // + int + Read_Analysis(int bit); + + // + //############################################################################# + // Clear all of the 12 outputable bits of the parallel port at 0x378. + //############################################################################# + // + + void + Reset_Analysis(void); + + // + //############################################################################# + // Test all of the 12 outputable bits of the parallel port at 0x378. + //############################################################################# + // + void + Test_Analysis(void); + + // + //############################################################################# + // Print the bit numbers of any active bit of the 12 outputable bits of the + // parallel port at 0x378 + //############################################################################# + // + void + Analysis_Status(void); + +#endif + diff --git a/CODE/BT/MUNGA_L4/NETNUB/INCLUDE/BOOTP.H b/CODE/BT/MUNGA_L4/NETNUB/INCLUDE/BOOTP.H new file mode 100644 index 0000000..081580a --- /dev/null +++ b/CODE/BT/MUNGA_L4/NETNUB/INCLUDE/BOOTP.H @@ -0,0 +1,73 @@ + +/* + * Bootstrap Protocol (BOOTP) + * Based on RFC 951. + */ + + +#define BOOTREQUEST 1 /* bootp.bp_op */ +#define BOOTREPLY 2 + +/* + * structure for send and receives + */ +typedef struct bootp { + byte bp_op; /* packet op code / message type. */ + byte bp_htype; /* hardware address type, 1 = 10 mb ethernet */ + byte bp_hlen; /* hardware address len, eg '6' for 10mb eth */ + byte bp_hops; /* client sets to zero, optionally used by + gateways in cross-gateway booting. */ + longword bp_xid; /* transaction ID, a random number */ + word bp_secs; /* filled in by client, seconds elapsed since + client started trying to boot. */ + word bp_spare; + longword bp_ciaddr; /* client IP address filled in by client if known*/ + longword bp_yiaddr; /* 'your' (client) IP address + filled by server if client doesn't know */ + longword bp_siaddr; /* server IP address returned in bootreply */ + longword bp_giaddr; /* gateway IP address, + used in optional cross-gateway booting. */ + byte bp_chaddr[16]; /* client hardware address, filled by client */ + byte bp_sname[64]; /* optional server host name, null terminated*/ + + byte bp_file[128]; /* boot file name, null terminated string + 'generic' name or null in bootrequest, + fully qualified directory-path + name in bootreply. */ + byte bp_vend[ 64]; /* optional vendor-specific area */ +}; + + +extern struct bootp _bootp; +extern word sock_inactive; + +/* + * UDP port numbers, server and client. + */ +#define IPPORT_BOOTPS 67 +#define IPPORT_BOOTPC 68 + + +/******** the following is stolen from NCSA which came from CUTCP *********/ +/* I have not implemented these, but someone may wish to in the future so */ +/* I kept them around. */ +/**************************************************************************/ + +/* + * "vendor" data permitted for Stanford boot clients. + */ +struct vend { + byte v_magic[4]; /* magic number */ + longword v_flags; /* flags/opcodes, etc. */ + byte v_unused[56]; /* currently unused */ +}; + +#define VM_STANFORD "STAN" /* v_magic for Stanford */ +/*#define VM_RFC1048 "\143\202\123\143" /* 94.11.20 */ + +/* v_flags values */ +#define VF_PCBOOT 1 /* an IBMPC or Mac wants environment info */ +#define VF_HELP 2 /* help me, I'm not registered */ +#define TAG_BOOTFILE_SIZE 13 /* tag used by vend fields rfc 1048 */ + + diff --git a/CODE/BT/MUNGA_L4/NETNUB/INCLUDE/ELIB.H b/CODE/BT/MUNGA_L4/NETNUB/INCLUDE/ELIB.H new file mode 100644 index 0000000..b6d3b1a --- /dev/null +++ b/CODE/BT/MUNGA_L4/NETNUB/INCLUDE/ELIB.H @@ -0,0 +1,25 @@ +void outch( char ch ); /* print character to stdio */ +void outs( char far *s); /* print a ASCIIZ string to stdio */ +void outsn( char far *s,int n); /* print a string with len max n */ +void outhex( char ch ); +void outhexes( char far *ch, int n ); +void qmove( void far * src, void far * dest, int len ); +int qcmp( void far *src, void far *dest, int len ); +void _keep( int status, int paragraphs ); +int sem_up( void far * ptr ); +unsigned long set_timeout( unsigned int seconds ); +unsigned long set_ttimeout( unsigned int ticks ); +int chk_timeout( unsigned long timeout ); + +unsigned long intel( unsigned long ); +unsigned short intel16( unsigned short ); +unsigned inchksum( void far *ptr, int len); /* IP checksum */ + +/* + * qmsg.c + */ +void dputch( char x ); +void dmsg( char *s ); +void dhex1int( int x ); +void dhex2int( int x ); +void dhex4int( int x ); diff --git a/CODE/BT/MUNGA_L4/NETNUB/INCLUDE/ETHDEV.H b/CODE/BT/MUNGA_L4/NETNUB/INCLUDE/ETHDEV.H new file mode 100644 index 0000000..f8149f2 --- /dev/null +++ b/CODE/BT/MUNGA_L4/NETNUB/INCLUDE/ETHDEV.H @@ -0,0 +1,16 @@ +/* + * + * Ethernet Interface + */ + +extern byte *_eth_FormatPacket(), *_eth_WaitPacket(); + +typedef struct ether { + byte dest[6]; /* destination ethernet address */ + byte src[6]; /* source ethernet address */ + word type; + byte data[ 1500 ]; +}; + + +#define ETH_MIN 60 /* Minimum Ethernet packet size */ diff --git a/CODE/BT/MUNGA_L4/NETNUB/INCLUDE/ICMP.H b/CODE/BT/MUNGA_L4/NETNUB/INCLUDE/ICMP.H new file mode 100644 index 0000000..01bfdc5 --- /dev/null +++ b/CODE/BT/MUNGA_L4/NETNUB/INCLUDE/ICMP.H @@ -0,0 +1,101 @@ + +#ifndef _wattcp_icmp_h +#define _wattcp_icmp_h + +//#include +#include + +typedef struct icmp_unused { + byte type; + byte code; + word checksum; + longword unused; + in_Header ip; + byte spares[ 8 ]; +}; + +typedef struct icmp_pointer { + byte type; + byte code; + word checksum; + byte pointer; + byte unused[ 3 ]; + in_Header ip; +}; +typedef struct icmp_ip { + byte type; + byte code; + word checksum; + longword ipaddr; + in_Header ip; +}; +typedef struct icmp_echo { + byte type; + byte code; + word checksum; + word identifier; + word sequence; + longword index; +}; + +typedef struct icmp_timestamp { + byte type; + byte code; + word checksum; + word identifier; + word sequence; + longword original; /* original timestamp */ + longword receive; /* receive timestamp */ + longword transmit; /* transmit timestamp */ +}; + +typedef struct icmp_info { + byte type; + byte code; + word checksum; + word identifier; + word sequence; +}; + +typedef union { + struct icmp_unused unused; + struct icmp_pointer pointer; + struct icmp_ip ip; + struct icmp_echo echo; + struct icmp_timestamp timestamp; + struct icmp_info info; +} icmp_pkt; + +typedef struct _pkt { + in_Header in; + icmp_pkt icmp; + in_Header data; +}; + +#define ICMPTYPE_ECHOREPLY 0 +#define ICMPTYPE_UNREACHABLE 3 +#define ICMPTYPE_TIMEEXCEEDED 11 + +typedef enum ICMP_UnreachableCodes +{ + ICMP_UNREACH_NET = 0, + ICMP_UNREACH_HOST = 1, + ICMP_UNREACH_PROTO = 2, + ICMP_UNREACH_PORT = 3, + ICMP_UNREACH_FRAGNEEDED = 4, + ICMP_UNREACH_SRCROUTEFAILED = 5 +}; + +typedef enum ICMP_TimeExceededCodes +{ + ICMP_EXCEEDED_TTL = 0, + ICMP_EXCEEDED_FRAGREASM = 1 +}; + +/* a user-installed ICMP handler */ +typedef int (*icmp_handler_type)( in_Header *ip ); + +/* install a user ICMP handler, or NULL to disable */ +void set_icmp_handler( icmp_handler_type user_handler ); + +#endif /* ndef _wattcp_icmp_h */ diff --git a/CODE/BT/MUNGA_L4/NETNUB/INCLUDE/STATE.RST b/CODE/BT/MUNGA_L4/NETNUB/INCLUDE/STATE.RST new file mode 100644 index 0000000..fa131ce --- /dev/null +++ b/CODE/BT/MUNGA_L4/NETNUB/INCLUDE/STATE.RST @@ -0,0 +1,13 @@ +[edit-] +screen=80 25 +toggles=1 1 0 1 0 0 +srch= +src= +rpl= +file=c:\tcpip\include\bootp.h 1 23 2 28 +[brief] +file=c:\tcpip\include\bootp.h 1 23 2 28 1 22 78 1 c=0 +file=c:\tcpip\include\wattcp.h 1 1 1 1 +file=c:\tcpip\include\copyrigh.h 1 67 1 67 +[shared-] +pmark=c:\tcpip\include\bootp.h 2 28 diff --git a/CODE/BT/MUNGA_L4/NETNUB/INCLUDE/TCP.H b/CODE/BT/MUNGA_L4/NETNUB/INCLUDE/TCP.H new file mode 100644 index 0000000..ef31670 --- /dev/null +++ b/CODE/BT/MUNGA_L4/NETNUB/INCLUDE/TCP.H @@ -0,0 +1,98 @@ + +/* + * Waterloo TCP + * + * Copyright (c) 1990, 1991, 1992, 1993 Erick Engelke + * + * Portions copyright others, see copyright.h for details. + * + * This library is free software; you can use it or redistribute under + * the terms of the license included in LICENSE.H. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * file LICENSE.H for more details. + * + */ +#ifndef _wattcp_tcp_h +#define _wattcp_tcp_h + +#ifndef WTCP_VER + +#define __WATTCP_USER__ /* Not compiling the kernel itself, hide some stuff */ + +#include + +/* handle some early dumb naming conventions */ +#define dbuginit() dbug_init() + +/* Kernal version (major major minor minor) */ +#define WTCP_VER 0x0102 + +/* + * Typedefs and constants + */ + +struct in_addr { + longword s_addr; +}; + +/* + * BSD-style socket info routines -- bsdname.c + */ +int getpeername( sock_type *s, void *dest, int *len ); +int getsockname( sock_type *s, void *dest, int *len ); +char *getdomainname( char *name, int length ); +char *setdomainname( char *string ); +char *gethostname( char *name, int len ); +char *sethostname( char *name ); +void psocket( sock_type *s ); + +/* + * ICMP-related stuff -- pcicmp.c + */ +/* + * Send an icmp echo request using specified ttl and tos. + * if(icmp_id != NULL) store copy of the id there + */ +int _send_ping( longword host, longword countnum, byte ttl, + byte tos, longword *theid ); +/* backward compatibility */ +#define _ping( h, c ) _send_ping( h, c, 250, 0, NULL ) +longword _chk_ping( longword host , longword *ptr); + +/* + * Daemons -- wattcpd.c + */ +int addwattcpd( void (*p)( void ) ); +int delwattcpd( void (*p)( void ) ); + +/* + * Background net I/O processing -- netback.c + */ +void backgroundon( void ); +void backgroundoff(void); +void backgroundfn( void (*fn)() ); + +/* + * More background processing -- pcintr.c + */ +void wintr_enable( void ); +void wintr_disable( void ); +void wintr_shutdown( void ); +void wintr_init( void ); + +/* + * Socket stats -- pcstat.c + */ +int sock_stats( sock_type *s, word *days, word *inactive, word *cwindow, word *avg, word *sd ); + +/* + * Debug test routine -- test.c + */ +void debugpsocketlen( void ); + +#endif /* WTCP_VER */ + +#endif /* ndef _wattcp_tcp_h */ diff --git a/CODE/BT/MUNGA_L4/NETNUB/INCLUDE/VSSVER.SCC b/CODE/BT/MUNGA_L4/NETNUB/INCLUDE/VSSVER.SCC new file mode 100644 index 0000000..b7fd2f6 Binary files /dev/null and b/CODE/BT/MUNGA_L4/NETNUB/INCLUDE/VSSVER.SCC differ diff --git a/CODE/BT/MUNGA_L4/NETNUB/LIB/VSSVER.SCC b/CODE/BT/MUNGA_L4/NETNUB/LIB/VSSVER.SCC new file mode 100644 index 0000000..9469df3 Binary files /dev/null and b/CODE/BT/MUNGA_L4/NETNUB/LIB/VSSVER.SCC differ diff --git a/CODE/BT/MUNGA_L4/NETNUB/MAKEFILE.MAK b/CODE/BT/MUNGA_L4/NETNUB/MAKEFILE.MAK new file mode 100644 index 0000000..20e82d3 --- /dev/null +++ b/CODE/BT/MUNGA_L4/NETNUB/MAKEFILE.MAK @@ -0,0 +1,103 @@ +.autodepend +.suffixes: .cpp + +!include $(CONFIG) + +!ifndef NETNUB_ROOT +!error NETNUB_ROOT macro is not defined +!endif + +INCLUDE_PATH = $(NETNUB_ROOT)\include;$(NETNUB_ROOT);$(BC_ROOT)\include +LIBRARY_PATH = $(NETNUB_ROOT)\lib;$(BC_ROOT)\lib +.path.obj = $(NETNUB_ROOT)\obj +.path.lib = $(LIBRARY_PATH) + +CFG_FILE = $(NETNUB_ROOT)\netnub.cfg +OBJ_PREFIX = $(NETNUB_ROOT)\obj\\ + +#------------------------------------------------------------------------------ +# targets +# +game: $(CFG_FILE) $(NETNUB_ROOT)\netnub.exe + +all: game + +tool: + @echo Nothing >nul + +abl: + @echo Nothing >nul + +test: + @echo Nothing >nul + +clean: + del $(NETNUB_ROOT)\obj\*.obj + del $(NETNUB_ROOT)\*.exe + +#------------------------------------------------------------------------------ +# Implicit rules +# +LINK_OPTIONS = -Tde -c -L$(LIBRARY_PATH) +BCC = bcc + +$(CFG_FILE): $(NETNUB_ROOT)\makefile.mak $(CONFIG) + copy &&| +-DMSDOS;NETNUB;USE_PROFILE_ANALYSIS;CLEAN_BUILD=1 +-b +-r +-ff +-AT +-k- +-N- +-v- +-3 +-V +-Jg +-x- +-RT- +-O2 +-Ot +-Oc +-Og +-O +-Ol +-Z +-Ob +-Oe +-Oi +-Om +-Op +-Ov +-w +-c +-ml +-I$(INCLUDE_PATH) +-n$(NETNUB_ROOT)\obj +| $(CFG_FILE) + +{$(NETNUB_ROOT)}.cpp{$(NETNUB_ROOT)\obj}.obj: + $(BCC) @$(CFG_FILE) $< >>$(CFG_ROOT)\error.log + +#------------------------------------------------------------------------------ +# Test program +# +NETNUB_OBJS = \ + ?netnub.obj \ + ?analysis.obj \ + ?nopause.obj + +$(NETNUB_ROOT)\netnub.exe:\ + $(NETNUB_OBJS:?=) $(NETNUB_ROOT)\lib\wattcplg.lib + tlink @&&| +$(LINK_OPTIONS) + +$(BC_ROOT)\lib\c0l.obj+ +$(NETNUB_OBJS:?=$(OBJ_PREFIX)) +$<,$* +wattcplg.lib+ +emu.lib+ +mathl.lib+ +cl.lib +| >>$(CFG_ROOT)\error.log + +$(NETNUB_OBJS:?=): $(CFG_FILE) diff --git a/CODE/BT/MUNGA_L4/NETNUB/MSSCCPRJ.SCC b/CODE/BT/MUNGA_L4/NETNUB/MSSCCPRJ.SCC new file mode 100644 index 0000000..5b8ab78 --- /dev/null +++ b/CODE/BT/MUNGA_L4/NETNUB/MSSCCPRJ.SCC @@ -0,0 +1,5 @@ +SCC = This is a Source Code Control file + +[makefile.mak] +SCC_Aux_Path = "\\AVATAR\Mungass\VSS" +SCC_Project_Name = "$/Tesla_BT/MUNGA_L4/NetNub", FPCAAAAA diff --git a/CODE/BT/MUNGA_L4/NETNUB/NOPAUSE.CPP b/CODE/BT/MUNGA_L4/NETNUB/NOPAUSE.CPP new file mode 100644 index 0000000..54c325d --- /dev/null +++ b/CODE/BT/MUNGA_L4/NETNUB/NOPAUSE.CPP @@ -0,0 +1,72 @@ +/* NOPAUSE.CPP - Disable Pause. + (C) Copyright 1991 + By Thomas Astin CIS: 73407,3427 Prodigy: RNVN08A + All rights reserved. */ + +/* Disable pause by intercepting interrupt 9 and blocking pause scan codes.*/ + +/* NOTE: This program worked fine on the machine upon which it was + developed and tested. Use at your own risk. The author is + not responsible for any damage, system failure, or the like + as a result of executing this code. + + Compiles under Borland C++. Code may require modifications for + use with other compilers. +*/ + + +#include +#include + +/* Protos */ +void interrupt NewInt9(...); +void ExitFunc(void); + +/* exit func in case ^C */ +#pragma exit ExitFunc + +/* Defines */ +#define KbdIn 0x60 +#define KbdCtl 0x61 +#define MaxChkIdx 3 + +/* Globals */ +unsigned char ChkArray[MaxChkIdx] = {0xE1,0x1D,0x45}; +unsigned char ChkIdx=0; +unsigned char CurScan=0; +void interrupt (*OldInt9)(...)=NULL; + +void interrupt NewInt9(...) // int 9 handler +{ + CurScan=inportb(KbdIn); // get scan code + if (CurScan==ChkArray[ChkIdx++]) { // check scan code array + if (ChkIdx>=MaxChkIdx) { // last match? + ChkIdx=0; // get ready for next time + + asm in al,KbdCtl // restore keyboard + asm mov ah,al + asm or al,80h + asm jmp temp1 + temp1: + asm out KbdCtl,al + asm xchg ah,al + asm jmp temp2 + temp2: + asm out KbdCtl,al + asm mov al,20h // Issue EOI + asm out 20h,al + + return; + } + } + else + ChkIdx=0; // start over + + OldInt9(); // call original int 9 +} + +void ExitFunc(void) +{ + if (OldInt9!=NULL) + setvect(9,OldInt9); // restore int 9 +} \ No newline at end of file diff --git a/CODE/BT/MUNGA_L4/NETNUB/VSSVER.SCC b/CODE/BT/MUNGA_L4/NETNUB/VSSVER.SCC new file mode 100644 index 0000000..2f82704 Binary files /dev/null and b/CODE/BT/MUNGA_L4/NETNUB/VSSVER.SCC differ diff --git a/CODE/BT/MUNGA_L4/PCPIC.INC b/CODE/BT/MUNGA_L4/PCPIC.INC new file mode 100644 index 0000000..1952bad --- /dev/null +++ b/CODE/BT/MUNGA_L4/PCPIC.INC @@ -0,0 +1,82 @@ +;=========================================================================== +; File: PCPIC.INC +; Project: MUNGA +; Contents: PC Peripheral Interrupt Controller equates (TASM) +;--------------------------------------------------------------------------- +; Date Who Modification +; -------- --- ----------------------------------------------------------- +; 01/04/95 CPB Initial coding +;--------------------------------------------------------------------------- +; Copyright (C) 1994, Virtual World Entertainment, Inc. +; All Rights reserved worldwide +; This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL +;=========================================================================== + +PIC_MASTER_0 EQU 020h +PIC_MASTER_1 EQU 021h + +PIC_SLAVE_0 EQU 0A0h +PIC_SLAVE_1 EQU 0A1h + + +PIC_TIMERTICK EQU 00000001b ;PIC:system timer tick +PIC_KEYBOARD EQU 00000010b ;PIC:keyboard +PIC_CASCADE EQU 00000100b ;PIC:cascade to secondary PIC +PIC_COM2COM4 EQU 00001000b ;PIC:COM2, COM4 (shared) +PIC_COM1COM3 EQU 00010000b ;PIC:COM1, COM3 (shared) +PIC_LPT2 EQU 00100000b ;PIC:LPT2 +PIC_DISKETTE EQU 01000000b ;PIC:diskette controller +PIC_LPT1 EQU 10000000b ;PIC:LPT1 + +OCW2_NONSPEC_EOI EQU 00100000b ;OCW2: non-specific EOI +OCW2_SPEC_EOI EQU 01100000b ;OCW2: specific EOI (set lowest 3 bits) + +OCW3_READ_IRR EQU 00001010b ;OCW3:read IRR +OCW3_READ_ISR EQU 00001011b ;OCW3:read ISR + +ASSERT_PIC MACRO theseBits + in al,PIC_MASTER_1 + and al,NOT theseBits ;;clear bit(s) to enable + out PIC_MASTER_1,al +ENDM + +ASSERT_PIC_REG MACRO reg + not reg + in al,PIC_MASTER_1 + and al,reg ;;clear bit(s) to enable + out PIC_MASTER_1,al + not reg +ENDM + +RETRACT_PIC MACRO theseBits + in al,PIC_MASTER_1 + or al,theseBits ;;set bit(s) to disable + out PIC_MASTER_1,al +ENDM + +PIC_RESET_MASTER MACRO + mov al,OCW2_NONSPEC_EOI + out PIC_MASTER_0,al ;;unspecified EOI to master PIC +ENDM + +PIC_RESET_SLAVE MACRO + mov al,OCW2_NONSPEC_EOI + out PIC_SLAVE_0,al ;;unspecified EOI to slave PIC + out PIC_MASTER_0,al ;;unspecified EOI to master PIC +ENDM + +PIC_ISR_TO_AL MACRO + mov al,OCW3_READ_ISR + out PIC_MASTER_0,al + in al,PIC_MASTER_0 ;;reads IMR byte +ENDM + +PIC_IRR_TO_AL MACRO + mov al,OCW3_READ_IRR + out PIC_MASTER_0,al + in al,PIC_MASTER_0 ;;reads IMR byte +ENDM + +PIC_IMR_TO_AL MACRO + in al,PIC_MASTER_1 ;;reads IMR byte +ENDM diff --git a/CODE/BT/MUNGA_L4/SOS/BC4/SOSDEFS.H b/CODE/BT/MUNGA_L4/SOS/BC4/SOSDEFS.H new file mode 100644 index 0000000..67b6cb6 --- /dev/null +++ b/CODE/BT/MUNGA_L4/SOS/BC4/SOSDEFS.H @@ -0,0 +1,65 @@ +/**************************************************************************** + + File : sosdefs.h + + Programmer(s) : Don Fowler, Nick Skrepetos + Date : + + Purpose : Include Files For Zortech C++ Compiler + + Last Updated : + +**************************************************************************** + Copyright(c) 1993,1994 Human Machine Interfaces + All Rights Reserved +****************************************************************************/ + + +#ifndef _SOSDEFS_DEFINED +#define _SOSDEFS_DEFINED + +#undef _TRUE +#undef _FALSE +#undef _NULL +enum + { + _FALSE, + _TRUE + }; + +#define _NULL 0 + +#ifndef VOID +#define VOID void +#endif +typedef int BOOL; +typedef unsigned int UINT; +typedef unsigned char BYTE; +typedef unsigned WORD; +#ifndef LONG +typedef signed long LONG; +#endif +typedef unsigned long DWORD; + +typedef BYTE * PBYTE; +typedef char * PSTR; +typedef WORD * PWORD; +typedef LONG * PLONG; +typedef VOID * PVOID; + +typedef BYTE * LPBYTE; +typedef BYTE * LPSTR; +typedef WORD * LPWORD; +typedef LONG * LPLONG; +typedef VOID * LPVOID; + +typedef BYTE * HPBYTE; +typedef BYTE * HPSTR; +typedef WORD * HPWORD; +typedef LONG * HPLONG; +typedef VOID * HPVOID; + +typedef unsigned HANDLE; + +#endif + diff --git a/CODE/BT/MUNGA_L4/SOS/BC4/SOSMAWE.H b/CODE/BT/MUNGA_L4/SOS/BC4/SOSMAWE.H new file mode 100644 index 0000000..e6322ad --- /dev/null +++ b/CODE/BT/MUNGA_L4/SOS/BC4/SOSMAWE.H @@ -0,0 +1,16 @@ + +#include "sosm.h" + +#ifdef __cplusplus // HACK - ECH 96/01/26 +extern "C" { +#endif + +WORD sosMIDIAWE32SetSBKFile( WORD, PSTR ); +WORD sosMIDIAWE32ReleaseSBKFiles( WORD ); +WORD sosMIDIAWE32NoteOn( WORD, WORD, WORD, WORD, WORD, WORD ); +WORD sosMIDIAWE32NoteOff( WORD, WORD, WORD ); + +#ifdef __cplusplus // HACK - ECH 96/01/26 +} +#endif + diff --git a/CODE/BT/MUNGA_L4/SOS/BC4/SOSRES.H b/CODE/BT/MUNGA_L4/SOS/BC4/SOSRES.H new file mode 100644 index 0000000..91050dd --- /dev/null +++ b/CODE/BT/MUNGA_L4/SOS/BC4/SOSRES.H @@ -0,0 +1,110 @@ +/**************************************************************************** + + File : sosres.h + + Programmer(s) : Don Fowler, Nick Skrepetos + Date : + + Purpose : Include Files For Zortech C++ Compiler + + Last Updated : + +**************************************************************************** + Copyright(c) 1993,1994 Human Machine Interfaces + All Rights Reserved +****************************************************************************/ + +#define _SOS_RESOURCE +#ifndef _SOS_RESOURCE +#define _SOS_RESOURCE + +// structure for resource file header +typedef struct +{ + // file version + WORD wVersion; + + // file size + LONG dwFileSize; + + // number of resources in file + WORD wResCount; + + // offset of resource data from top of file + LONG dwResOffset; + + // offset of sync track from top of file + LONG dwSyncTrackOffset; + +} _RES_FILE_HEADER; + +// structure for resource block header +typedef struct +{ + // resource id + WORD wID; + + // resource type + WORD wResType; + + // offset of next block + LONG dwNextBlock; + + // size of the current resource information + LONG dwResSize; + + // rate to play block at + WORD wBlockRate; + + // id for the sync track to use + WORD wSyncTrackID; + +} _RES_BLOCK_HEADER; + +// structure for sync mark tag +typedef struct _tagSYNCMARK +{ + // ID of the type of mark being used + WORD wID; + + // location in data of sync mark + LONG dwSyncOffset; + + // length of sync block + LONG dwSyncSize; + + // start sample data + _SOS_START_SAMPLE sampleData; + +} _RES_SYNCMARK; + +typedef union +{ + // structure for sync mark tag + _RES_SYNCMARK syncMark; + +} _RES_TAG; + +// union for filter information for prepareWave +typedef union +{ + // filter type + WORD wFilterID; + + // structure for volume + struct volume + { + WORD wVolume; + }; + + // structure for delay + struct delay + { + WORD wDelaySamples; + }; + +} _SOS_FILTER; + + +#endif + diff --git a/CODE/BT/MUNGA_L4/SOS/BC4/VSSVER.SCC b/CODE/BT/MUNGA_L4/SOS/BC4/VSSVER.SCC new file mode 100644 index 0000000..b18070b Binary files /dev/null and b/CODE/BT/MUNGA_L4/SOS/BC4/VSSVER.SCC differ diff --git a/CODE/BT/MUNGA_L4/SOS/VSSVER.SCC b/CODE/BT/MUNGA_L4/SOS/VSSVER.SCC new file mode 100644 index 0000000..7f77443 Binary files /dev/null and b/CODE/BT/MUNGA_L4/SOS/VSSVER.SCC differ diff --git a/CODE/BT/MUNGA_L4/SOS/WC/SOSDEFS.H b/CODE/BT/MUNGA_L4/SOS/WC/SOSDEFS.H new file mode 100644 index 0000000..e5792cb --- /dev/null +++ b/CODE/BT/MUNGA_L4/SOS/WC/SOSDEFS.H @@ -0,0 +1,65 @@ +/**************************************************************************** + + File : sosdefs.h + + Programmer(s) : Don Fowler, Nick Skrepetos + Date : + + Purpose : Include Files For Zortech C++ Compiler + + Last Updated : + +**************************************************************************** + Copyright(c) 1993,1994 Human Machine Interfaces + All Rights Reserved +****************************************************************************/ + + +#ifndef _SOSDEFS_DEFINED +#define _SOSDEFS_DEFINED + +#undef _TRUE +#undef _FALSE +#undef _NULL +enum + { + _FALSE, + _TRUE + }; + +#define _NULL 0 + +#ifndef VOID +#define VOID void +#endif +typedef int BOOL; +typedef unsigned int UINT; +typedef unsigned char BYTE; +typedef unsigned WORD; +#ifndef LONG +typedef signed long LONG; +#endif +typedef unsigned long DWORD; + +typedef BYTE * PBYTE; +typedef char near * PSTR; +typedef WORD * PWORD; +typedef LONG * PLONG; +typedef VOID * PVOID; + +typedef BYTE far * LPBYTE; +typedef BYTE far * LPSTR; +typedef WORD far * LPWORD; +typedef LONG far * LPLONG; +typedef VOID far * LPVOID; + +typedef BYTE huge * HPBYTE; +typedef BYTE huge * HPSTR; +typedef WORD huge * HPWORD; +typedef LONG huge * HPLONG; +typedef VOID huge * HPVOID; + +typedef unsigned HANDLE; + +#endif + diff --git a/CODE/BT/MUNGA_L4/SOS/WC/SOSRES.H b/CODE/BT/MUNGA_L4/SOS/WC/SOSRES.H new file mode 100644 index 0000000..91050dd --- /dev/null +++ b/CODE/BT/MUNGA_L4/SOS/WC/SOSRES.H @@ -0,0 +1,110 @@ +/**************************************************************************** + + File : sosres.h + + Programmer(s) : Don Fowler, Nick Skrepetos + Date : + + Purpose : Include Files For Zortech C++ Compiler + + Last Updated : + +**************************************************************************** + Copyright(c) 1993,1994 Human Machine Interfaces + All Rights Reserved +****************************************************************************/ + +#define _SOS_RESOURCE +#ifndef _SOS_RESOURCE +#define _SOS_RESOURCE + +// structure for resource file header +typedef struct +{ + // file version + WORD wVersion; + + // file size + LONG dwFileSize; + + // number of resources in file + WORD wResCount; + + // offset of resource data from top of file + LONG dwResOffset; + + // offset of sync track from top of file + LONG dwSyncTrackOffset; + +} _RES_FILE_HEADER; + +// structure for resource block header +typedef struct +{ + // resource id + WORD wID; + + // resource type + WORD wResType; + + // offset of next block + LONG dwNextBlock; + + // size of the current resource information + LONG dwResSize; + + // rate to play block at + WORD wBlockRate; + + // id for the sync track to use + WORD wSyncTrackID; + +} _RES_BLOCK_HEADER; + +// structure for sync mark tag +typedef struct _tagSYNCMARK +{ + // ID of the type of mark being used + WORD wID; + + // location in data of sync mark + LONG dwSyncOffset; + + // length of sync block + LONG dwSyncSize; + + // start sample data + _SOS_START_SAMPLE sampleData; + +} _RES_SYNCMARK; + +typedef union +{ + // structure for sync mark tag + _RES_SYNCMARK syncMark; + +} _RES_TAG; + +// union for filter information for prepareWave +typedef union +{ + // filter type + WORD wFilterID; + + // structure for volume + struct volume + { + WORD wVolume; + }; + + // structure for delay + struct delay + { + WORD wDelaySamples; + }; + +} _SOS_FILTER; + + +#endif + diff --git a/CODE/BT/MUNGA_L4/SOS/WC/VSSVER.SCC b/CODE/BT/MUNGA_L4/SOS/WC/VSSVER.SCC new file mode 100644 index 0000000..d0c362f Binary files /dev/null and b/CODE/BT/MUNGA_L4/SOS/WC/VSSVER.SCC differ diff --git a/CODE/BT/MUNGA_L4/SOSMAWE.H b/CODE/BT/MUNGA_L4/SOSMAWE.H new file mode 100644 index 0000000..cf8f1e6 --- /dev/null +++ b/CODE/BT/MUNGA_L4/SOSMAWE.H @@ -0,0 +1,16 @@ + +#include "sosm.h" + +#ifdef __cplusplus // HACK - ECH 96/01/26 +extern "C" { +#endif + +WORD sosMIDIAWE32SetSBKFile( WORD, const char *szFileName ); +WORD sosMIDIAWE32ReleaseSBKFiles( WORD ); +WORD sosMIDIAWE32NoteOn( WORD, WORD, WORD, WORD, WORD, WORD ); +WORD sosMIDIAWE32NoteOff( WORD, WORD, WORD ); + +#ifdef __cplusplus // HACK - ECH 96/01/26 +} +#endif + diff --git a/CODE/BT/MUNGA_L4/SPEAKER.HPP b/CODE/BT/MUNGA_L4/SPEAKER.HPP new file mode 100644 index 0000000..7151f17 --- /dev/null +++ b/CODE/BT/MUNGA_L4/SPEAKER.HPP @@ -0,0 +1,9 @@ +#include +#include +#undef inp +#undef outp + +#define SPKSET outp(0x61,(2 | inp(0x61))) +#define SPKCLR outp(0x61,((~2) & inp(0x61))) + + diff --git a/CODE/BT/MUNGA_L4/VSSVER.SCC b/CODE/BT/MUNGA_L4/VSSVER.SCC new file mode 100644 index 0000000..2ea7bc9 Binary files /dev/null and b/CODE/BT/MUNGA_L4/VSSVER.SCC differ diff --git a/CODE/BT/NEWSTUFF.BLD b/CODE/BT/NEWSTUFF.BLD new file mode 100644 index 0000000..148235d --- /dev/null +++ b/CODE/BT/NEWSTUFF.BLD @@ -0,0 +1,21 @@ +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 diff --git a/CODE/BT/OPT.MAK b/CODE/BT/OPT.MAK new file mode 100644 index 0000000..118cf52 --- /dev/null +++ b/CODE/BT/OPT.MAK @@ -0,0 +1,47 @@ +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 = /P32 + +$(CFG_FILE): opt.mak make.cfg $(BPATH) + copy &&| +-DLBE4;DEBUG_LEVEL=0;DEBUG_STREAM=cout; +-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) diff --git a/CODE/BT/SETENV.BAT b/CODE/BT/SETENV.BAT new file mode 100644 index 0000000..f0127f3 --- /dev/null +++ b/CODE/BT/SETENV.BAT @@ -0,0 +1,220 @@ +@echo off +echo ************************************************************************ +echo * Setting up the MUNGA environment, see SETENV.bat for usage +echo ************************************************************************ +rem ------------------------------------------------ +rem - setenv.bat performs actions that must occur in +rem - the shell prior to execution of rpl4*.exe +rem ------------------------------------------------ +rem - there are four arguments that must all be specified +rem - 1= t/r where t=thrustmaster, r=rio +rem - 2= s/f where s=slow clock, f=fast clock +rem - 3= s/n where s=sound, n=nosound +rem - 4= p/g/n/r where p=plasma and gauges, g=gauges, n=no gauges, r=review +rem - 5= i/n where i=intercom, n=no intercom +rem ------------------------------------------------ +rem - setenv with no args is RIO, SLOW, SOUND, NONE, NOINTERCOM +rem ------------------------------------------------ +rem + +rem ************************************************************************* +rem * Controls, anything but t or r goes with preset defaults in L4CONTROLS +rem * if they are not set you will get RIO +rem ************************************************************************* +rem +if "%1"=="t" goto THRUSTMASTER +if "%1"=="r" goto RIO +if "%L4CONTROLS%"=="" goto RIO +goto CONTROLSDONE + +:RIO +set L4CONTROLS=RIO,KEYBOARD +echo L4CONTROLS set to %L4CONTROLS% +goto CONTROLSDONE + +:THRUSTMASTER +set L4CONTROLS=THRUSTMASTER,KEYBOARD +echo L4CONTROLS set to %L4CONTROLS% +goto CONTROLSDONE + +:CONTROLSDONE +rem +rem ************************************************************************* +rem * Real time clock, anything but s or f goes with preset defaults in +rem * L4TIMER, if it isn't set you will get slow +rem ************************************************************************* +rem +if "%2"=="s" goto SLOWCLOCK +if "%2"=="f" goto FASTCLOCK +if "%L4TIMER%"=="" goto SLOWCLOCK +goto TIMERDONE + +:FASTCLOCK +set L4TIMER=FAST +echo L4TIMER set to FAST +goto TIMERDONE + +:SLOWCLOCK +set L4TIMER= +echo L4TIMER set to SLOW +goto TIMERDONE + +:TIMERDONE +rem +rem ************************************************************************* +rem * GAUGES/PLASMA anything but p,n or g will get you the preset defaults +rem * in L4GAUGE if that isn't set you will get none. +rem ************************************************************************* +rem +if "%4"=="n" goto NOGAUGE +if "%4"=="g" goto NOPLASMA +if "%4"=="p" goto PLASMA +if "%4"=="r" goto GREVIEW +if "%L4GAUGE%"=="" goto NOGAUGE +goto GAUGEDONE + +:GREVIEW +set L4GAUGE=640x480x8 +set L4PLASMA=com2 +echo L4GAUGE set to %L4GAUGE% +echo L4PLASMA set to %L4PLASMA% +goto GAUGEDONE + +:PLASMA +set L4GAUGE=640x480x16 +set L4PLASMA=com2 +echo L4GAUGE set to %L4GAUGE% +echo L4PLASMA set to %L4PLASMA% +goto GAUGEDONE + +:NOPLASMA +set L4GAUGE=640x480x16 +set L4PLASMA= +echo L4GAUGE set to %L4GAUGE% +echo L4PLASMA set to off +goto GAUGEDONE + +:NOGAUGE +set L4GAUGE= +set L4PLASMA= +echo L4GAUGE set to off +echo L4PLASMA set to off + +:GAUGEDONE +rem +rem ************************************************************************* +rem * INTERCOM anything but i or n will get you the preset defaults +rem * in L4INTERCOM if that isn't set you will get none. +rem ************************************************************************* +rem +if "%5"=="n" goto NOINTERCOM +if "%5"=="i" goto INTERCOM +if "%L4INTERCOM%"=="" goto NOINTERCOM +goto ICOMDONE + +:NOINTERCOM +set L4INTERCOM= +echo L4INTERCOM set to off +goto ICOMDONE + +:INTERCOM +set L4INTERCOM=ON +echo L4INTERCOM set to on + +:ICOMDONE +:AUDIOVIDEO +rem +rem *+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* +rem from here on down has not been updated yet, except to make sure sound is +rem set right based on L4INTERCOM +rem *+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+* +rem +rem ----------------------------- +rem main video +rem ----------------------------- +if "%VIDEOFORMAT%"=="" set VIDEOFORMAT=svga +set L4DPLCFG=%A4DPLCFG% +if "%L4DPLCFG%"=="" set L4DPLCFG=btdpl.ini +set A4DPLCFG= +if "%L4VIDEO%"=="OFF" goto VIDEODONE +set DPLARG=/tranny~.\vrendmon.btl~/i860~.\vrnostex.mng~/device~0x150~/video~%VIDEOFORMAT%~/pipes~1~/qual~0x14~/system_tex~0~ + +:VIDEODONE +rem ----------------------------- +rem - AWE settings +rem ----------------------------- +if "%3"=="n" goto NOSOUND +if "%3"=="s" goto SOUND +if "%L4SOUND%"=="OFF" goto NOSOUND +if "%L4SOUND%"=="" goto NOSOUND +if "%L4SOUND%"=="ON" goto SOUND +if "%L4SOUND%"=="CAMERA" goto SOUND +goto NOSOUND + +:SOUND +if exist c:\setvol.bat call c:\setvol.bat +if not exist c:\setvol.bat set AWE_MASTER_VOLUME=200 + +set AWE_FRONT=A220 I5 D1 H5 P330 T6 +set AWE_REAR=A240 I7 D3 H6 P300 T6 + +if "%L4INTERCOM%"=="ON" goto AWEINTERCOM + +copy /v audio\ctmix.cfg c:\sb16\ctmix.cfg +set BLASTER=%AWE_FRONT% +c:\sb16\sb16set /p /q +set BLASTER=%AWE_REAR% +c:\sb16\sb16set /p /q + +if "%REVIEW%"=="1" goto SOUNDREVIEW +if "%L4SOUND%"=="CAMERA" goto SOUNDREVIEW +goto SOUNDCOMMON + +:AWEINTERCOM +copy /v audio\icom.cfg c:\sb16\ctmix.cfg +set BLASTER=%AWE_FRONT% +c:\sb16\sb16set /p /q +c:\sb16\sb16set /li:220;0 +set BLASTER=%AWE_REAR% +c:\sb16\sb16set /p /q +goto SOUNDCOMMON + +:SOUNDCOMMON +set BLASTER=%AWE_FRONT% +c:\sb16\sb16set /ma:%AWE_MASTER_VOLUME%;0 /mi:235;0 /ba:255;0 /tr:90;0 +set BLASTER=%AWE_REAR% +c:\sb16\sb16set /ma:%AWE_MASTER_VOLUME%;0 /mi:230;0 /ba:235;0 /tr:110;0 +set BLASTER=%AWE_FRONT% +goto SOUNDDONE + +:SOUNDREVIEW +set BLASTER=%AWE_FRONT% +c:\sb16\sb16set /ma:240;0 /mi:245;0 /ba:90;0 /tr:90;0 +set BLASTER=%AWE_REAR% +c:\sb16\sb16set /ma:240;0 /mi:245;0 /ba:90;0 /tr:90;0 +set BLASTER=%AWE_FRONT% +goto SOUNDDONE + +:NOSOUND +set L4SOUND=OFF +set AWE_FRONT= +set AWE_REAR= + +:SOUNDDONE + +rem +rem ************************************************************************* +rem * Print a summary of all the environmentals we think are important +rem ************************************************************************* +rem +echo ************************************************************************ +echo * Environment is setup as follows +echo * L4CONTROLS = %L4CONTROLS% +echo * L4TIMER = %L4TIMER% +echo * L4SOUND = %L4SOUND% +echo * L4GAUGE = %L4GAUGE% +echo * L4VIDEO = %L4VIDEO% +echo * L4PLASMA = %L4PLASMA% +echo * L4INTERCOM = %L4INTERCOM% +echo ************************************************************************ + diff --git a/CODE/BT/VSSVER.SCC b/CODE/BT/VSSVER.SCC new file mode 100644 index 0000000..e6c809b Binary files /dev/null and b/CODE/BT/VSSVER.SCC differ diff --git a/CODE/RP/32STUB.EXE b/CODE/RP/32STUB.EXE new file mode 100644 index 0000000..8747672 Binary files /dev/null and b/CODE/RP/32STUB.EXE differ diff --git a/CODE/RP/C0X32.OBJ b/CODE/RP/C0X32.OBJ new file mode 100644 index 0000000..2e99f32 Binary files /dev/null and b/CODE/RP/C0X32.OBJ differ diff --git a/CODE/RP/CW32.LIB b/CODE/RP/CW32.LIB new file mode 100644 index 0000000..1f7295e Binary files /dev/null and b/CODE/RP/CW32.LIB differ diff --git a/CODE/RP/D0.mak b/CODE/RP/D0.mak new file mode 100644 index 0000000..ef8ce89 --- /dev/null +++ b/CODE/RP/D0.mak @@ -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;MESSAGE_BUFFERING=False +-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) diff --git a/CODE/RP/DPMI32.LIB b/CODE/RP/DPMI32.LIB new file mode 100644 index 0000000..93274c2 Binary files /dev/null and b/CODE/RP/DPMI32.LIB differ diff --git a/CODE/RP/MUNGA/AFFNMTRX.CPP b/CODE/RP/MUNGA/AFFNMTRX.CPP new file mode 100644 index 0000000..263cb87 --- /dev/null +++ b/CODE/RP/MUNGA/AFFNMTRX.CPP @@ -0,0 +1,831 @@ +//===========================================================================// +// File: affnmtrx.cc // +// Project: MUNGA Brick: Math Library // +// Contents: Implementation details for the Affine matrices // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 11/20/94 JMA Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(AFFNMTRX_HPP) + #include +#endif + +#if !defined(MATRIX_HPP) +# include +#endif + +#if !defined(LINMTRX_HPP) + #include +#endif + +#if !defined(ORIGIN_HPP) + #include +#endif + +const AffineMatrix + AffineMatrix::Identity(True); + +#if defined(USE_SIGNATURE) + int + Is_Signature_Bad(const volatile AffineMatrix *) + { + return False; + } +#endif + +// +//########################################################################### +//########################################################################### +// +AffineMatrix& + AffineMatrix::BuildIdentity() +{ + Check_Pointer(this); + + entries[0] = 1.0f; + entries[1] = 0.0f; + entries[2] = 0.0f; + entries[3] = 0.0f; + + entries[4] = 0.0f; + entries[5] = 1.0f; + entries[6] = 0.0f; + entries[7] = 0.0f; + + entries[8] = 0.0f; + entries[9] = 0.0f; + entries[10] = 1.0f; + entries[11] = 0.0f; + return *this; +} + +// +//########################################################################### +//########################################################################### +// +AffineMatrix& + AffineMatrix::operator=(const AffineMatrix& m) +{ + Check_Pointer(this); + Check(&m); + + #if sizeof(entries)>sizeof(m.entries) + # error memcpy mismatch + #endif + + memcpy(entries, m.entries, sizeof(m.entries)); + return *this; +} + +// +//########################################################################### +//########################################################################### +// +AffineMatrix& + AffineMatrix::operator=(const Origin& p) +{ + Check_Pointer(this); + Check(&p); + + *this = p.angularPosition; + *this = p.linearPosition; + return *this; +} + +AffineMatrix& + AffineMatrix::operator=(const Hinge &hinge) +{ + Check_Pointer(this); + Check(&hinge); + SinCosPair x,y,z; + + switch (hinge.axisNumber) + { + case X_Axis: + x = hinge.rotationAmount; + (*this)(0,0) = 1.0f; + (*this)(0,1) = 0.0f; + (*this)(0,2) = 0.0f; + + (*this)(1,0) = 0.0f; + (*this)(1,1) = x.cosine; + (*this)(1,2) = -x.sine; + + (*this)(2,0) = 0.0f; + (*this)(2,1) = x.sine; + (*this)(2,2) = x.cosine; + + break; + case Y_Axis: + y = hinge.rotationAmount; + (*this)(0,0) = y.cosine; + (*this)(0,1) = 0.0f; + (*this)(0,2) = y.sine; + + (*this)(1,0) = 0.0f; + (*this)(1,1) = 1.0f; + (*this)(1,2) = 0.0f; + + (*this)(2,0) = -y.sine; + (*this)(2,1) = 0.0f; + (*this)(2,2) = y.cosine; + break; + case Z_Axis: + z = hinge.rotationAmount; + (*this)(0,0) = z.cosine; + (*this)(0,1) = -z.sine; + (*this)(0,2) = 0.0f; + + (*this)(1,0) = z.sine; + (*this)(1,1) = z.cosine; + (*this)(1,2) = 0.0f; + + (*this)(2,0) = 0.0f; + (*this)(2,1) = 0.0f; + (*this)(2,2) = 1.0f; + break; + } + return *this; +} + +// +//############################################################################# +//############################################################################# +// +AffineMatrix& + AffineMatrix::operator=(const EulerAngles &angles) +{ + Check_Pointer(this); + Check(&angles); + + SinCosPair + x, + y, + z; + + x = angles.pitch; + y = angles.yaw; + z = angles.roll; + + (*this)(0,0) = y.cosine*z.cosine; + (*this)(0,1) = y.cosine*z.sine; + (*this)(0,2) = -y.sine; + + (*this)(1,0) = x.sine*y.sine*z.cosine - x.cosine*z.sine; + (*this)(1,1) = x.sine*y.sine*z.sine + x.cosine*z.cosine; + (*this)(1,2) = x.sine*y.cosine; + + (*this)(2,0) = x.cosine*y.sine*z.cosine + x.sine*z.sine; + (*this)(2,1) = x.cosine*y.sine*z.sine - x.sine*z.cosine; + (*this)(2,2) = x.cosine*y.cosine; + + Check(this); + return *this; +} + +// +//############################################################################# +//############################################################################# +// +AffineMatrix& + AffineMatrix::operator=(const YawPitchRoll &angles) +{ + Check_Pointer(this); + Check(&angles); + + SinCosPair + x, + y, + z; + + x = angles.pitch; + y = angles.yaw; + z = angles.roll; + + (*this)(0,0) = y.cosine*z.cosine + x.sine*y.sine*z.sine; + (*this)(0,1) = x.cosine*z.sine; + (*this)(0,2) = x.sine*y.cosine*z.sine - y.sine*z.cosine; + + (*this)(1,0) = x.sine*y.sine*z.cosine - y.cosine*z.sine; + (*this)(1,1) = x.cosine*z.cosine; + (*this)(1,2) = y.sine*z.sine + x.sine*y.cosine*z.cosine; + + (*this)(2,0) = x.cosine*y.sine; + (*this)(2,1) = -x.sine; + (*this)(2,2) = x.cosine*y.cosine; + + Check(this); + return *this; +} + +// +//########################################################################### +//########################################################################### +// +AffineMatrix& + AffineMatrix::operator=(const Quaternion &q) +{ + Check_Pointer(this); + Check(&q); + + Scalar + a = q.x*q.y, + b = q.y*q.z, + c = q.z*q.x, + d = q.w*q.x, + e = q.w*q.y, + f = q.w*q.z, + g = q.w*q.w, + h = q.x*q.x, + i = q.y*q.y, + j = q.z*q.z; + + (*this)(0,0) = g + h - i - j; + (*this)(1,0) = 2.0f*(a - f); + (*this)(2,0) = 2.0f*(c + e); + + (*this)(0,1) = 2.0f*(f + a); + (*this)(1,1) = g - h + i - j; + (*this)(2,1) = 2.0f*(b - d); + + (*this)(0,2) = 2.0f*(c - e); + (*this)(1,2) = 2.0f*(b + d); + (*this)(2,2) = g - h - i + j; + + return *this; +} + +// +//########################################################################### +//########################################################################### +// +AffineMatrix& + AffineMatrix::operator=(const Matrix4x4 &m) +{ + Check_Pointer(this); + Check(&m); + Warn(!Small_Enough(m(0,3))); + Warn(!Small_Enough(m(1,3))); + Warn(!Small_Enough(m(2,3))); + Warn(!Close_Enough(m(3,3),1.0f)); + + (*this)(0,0) = m(0,0); + (*this)(0,1) = m(0,1); + (*this)(0,2) = m(0,2); + + (*this)(1,0) = m(1,0); + (*this)(1,1) = m(1,1); + (*this)(1,2) = m(1,2); + + (*this)(2,0) = m(2,0); + (*this)(2,1) = m(2,1); + (*this)(2,2) = m(2,2); + + (*this)(3,0) = m(3,0); + (*this)(3,1) = m(3,1); + (*this)(3,2) = m(3,2); + return *this; +} + +// +//########################################################################### +//########################################################################### +// +AffineMatrix& + AffineMatrix::operator=(const TransposedMatrix &m) +{ + Check_Pointer(this); + Check(&m); + Warn(!Small_Enough(m(3,0))); + Warn(!Small_Enough(m(3,1))); + Warn(!Small_Enough(m(3,2))); + Warn(!Close_Enough(m(3,3),1.0f)); + + (*this)(0,0) = m(0,0); + (*this)(0,1) = m(1,0); + (*this)(0,2) = m(2,0); + + (*this)(1,0) = m(0,1); + (*this)(1,1) = m(1,1); + (*this)(1,2) = m(2,1); + + (*this)(2,0) = m(0,2); + (*this)(2,1) = m(1,2); + (*this)(2,2) = m(2,2); + + (*this)(3,0) = m(0,3); + (*this)(3,1) = m(1,3); + (*this)(3,2) = m(2,3); + return *this; +} + +// +//########################################################################### +//########################################################################### +// +Logical + AffineMatrix::operator==(const AffineMatrix& m) const +{ + Check(this); + Check(&m); + + for (size_t i=0; iW_Axis); + + v->x = (*this)(index,X_Axis); + v->y = (*this)(index,Y_Axis); + v->z = (*this)(index,Z_Axis); +} + +// +//########################################################################### +//########################################################################### +// +void + AffineMatrix::GetToAxis( + size_t index, + Vector3D *v + ) const +{ + Check(this); + Check_Pointer(v); + Warn(index>Z_Axis); + + v->x = (*this)(X_Axis,index); + v->y = (*this)(Y_Axis,index); + v->z = (*this)(Z_Axis,index); +} + +// +//########################################################################### +//########################################################################### +// +AffineMatrix& + AffineMatrix::SetFromAxis( + size_t index, + const Vector3D &v + ) +{ + Check_Pointer(this); + Check(&v); + Warn(index>W_Axis); + + (*this)(index,X_Axis) = v.x; + (*this)(index,Y_Axis) = v.y; + (*this)(index,Z_Axis) = v.z; + return *this; +} + +// +//########################################################################### +//########################################################################### +// +AffineMatrix& + AffineMatrix::SetToAxis( + size_t index, + const Vector3D &v + ) +{ + Check_Pointer(this); + Check(&v); + Warn(index>Z_Axis); + + (*this)(X_Axis,index) = v.x; + (*this)(Y_Axis,index) = v.y; + (*this)(Z_Axis,index) = v.z; + return *this; +} + +// +//########################################################################### +//########################################################################### +// +AffineMatrix& + AffineMatrix::Multiply( + const AffineMatrix& Source1, + const AffineMatrix& Source2 + ) +{ + Check_Pointer(this); + Check(&Source1); + Check(&Source2); + + (*this)(0,0) = + Source1(0,0)*Source2(0,0) + + Source1(0,1)*Source2(1,0) + + Source1(0,2)*Source2(2,0); + (*this)(1,0) = + Source1(1,0)*Source2(0,0) + + Source1(1,1)*Source2(1,0) + + Source1(1,2)*Source2(2,0); + (*this)(2,0) = + Source1(2,0)*Source2(0,0) + + Source1(2,1)*Source2(1,0) + + Source1(2,2)*Source2(2,0); + (*this)(3,0) = + Source1(3,0)*Source2(0,0) + + Source1(3,1)*Source2(1,0) + + Source1(3,2)*Source2(2,0) + + Source2(3,0); + + (*this)(0,1) = + Source1(0,0)*Source2(0,1) + + Source1(0,1)*Source2(1,1) + + Source1(0,2)*Source2(2,1); + (*this)(1,1) = + Source1(1,0)*Source2(0,1) + + Source1(1,1)*Source2(1,1) + + Source1(1,2)*Source2(2,1); + (*this)(2,1) = + Source1(2,0)*Source2(0,1) + + Source1(2,1)*Source2(1,1) + + Source1(2,2)*Source2(2,1); + (*this)(3,1) = + Source1(3,0)*Source2(0,1) + + Source1(3,1)*Source2(1,1) + + Source1(3,2)*Source2(2,1) + + Source2(3,1); + + (*this)(0,2) = + Source1(0,0)*Source2(0,2) + + Source1(0,1)*Source2(1,2) + + Source1(0,2)*Source2(2,2); + (*this)(1,2) = + Source1(1,0)*Source2(0,2) + + Source1(1,1)*Source2(1,2) + + Source1(1,2)*Source2(2,2); + (*this)(2,2) = + Source1(2,0)*Source2(0,2) + + Source1(2,1)*Source2(1,2) + + Source1(2,2)*Source2(2,2); + (*this)(3,2) = + Source1(3,0)*Source2(0,2) + + Source1(3,1)*Source2(1,2) + + Source1(3,2)*Source2(2,2) + + Source2(3,2); + + return *this; +} + +// +//########################################################################### +//########################################################################### +// +AffineMatrix& + AffineMatrix::Invert(const AffineMatrix& Source) +{ + Check_Pointer(this); + Check(&Source); + + (*this)(0,0) = Source(1,1)*Source(2,2) - Source(1,2)*Source(2,1); + (*this)(1,0) = Source(1,2)*Source(2,0) - Source(1,0)*Source(2,2); + (*this)(2,0) = Source(1,0)*Source(2,1) - Source(1,1)*Source(2,0); + + Scalar det = + (*this)(0,0)*Source(0,0) + + (*this)(1,0)*Source(0,1) + + (*this)(2,0)*Source(0,2); + Verify(!Small_Enough(det)); + + (*this)(3,0) = + -Source(3,0)*(*this)(0,0) + - Source(3,1)*(*this)(1,0) + - Source(3,2)*(*this)(2,0); + + (*this)(0,1) = Source(0,2)*Source(2,1) - Source(0,1)*Source(2,2); + (*this)(1,1) = Source(0,0)*Source(2,2) - Source(0,2)*Source(2,0); + (*this)(2,1) = Source(0,1)*Source(2,0) - Source(0,0)*Source(2,1); + (*this)(3,1) = + -Source(3,0)*(*this)(0,1) + - Source(3,1)*(*this)(1,1) + - Source(3,2)*(*this)(2,1); + + (*this)(0,2) = Source(0,1)*Source(1,2) - Source(0,2)*Source(1,1); + (*this)(1,2) = Source(1,0)*Source(0,2) - Source(0,0)*Source(1,2); + (*this)(2,2) = Source(0,0)*Source(1,1) - Source(0,1)*Source(1,0); + (*this)(3,2) = + -Source(3,0)*(*this)(0,2) + - Source(3,1)*(*this)(1,2) + - Source(3,2)*(*this)(2,2); + + det = 1.0f/det; + for (int i=0; i<12; ++i) + { + entries[i] *= det; + } + + return *this; +} + +// +//########################################################################### +//########################################################################### +// +AffineMatrix& + AffineMatrix::Multiply(const AffineMatrix &m,const Vector3D &v) +{ + Check_Pointer(this); + Check(&m); + Check(&v); + + (*this)(0,0) = m(0,0)*v.x; + (*this)(1,0) = m(1,0)*v.x; + (*this)(2,0) = m(2,0)*v.x; + (*this)(3,0) = m(3,0)*v.x; + + (*this)(0,1) = m(0,1)*v.y; + (*this)(1,1) = m(1,1)*v.y; + (*this)(2,1) = m(2,1)*v.y; + (*this)(3,1) = m(3,1)*v.y; + + (*this)(0,2) = m(0,2)*v.z; + (*this)(1,2) = m(1,2)*v.z; + (*this)(2,2) = m(2,2)*v.z; + (*this)(3,2) = m(3,2)*v.z; + + return *this; +} + +// +//########################################################################### +//########################################################################### +// +AffineMatrix& + AffineMatrix::Multiply(const AffineMatrix& m,const Quaternion &q) +{ + Check_Pointer(this); + Check(&m); + Check(&q); + + LinearMatrix t(LinearMatrix::Identity); + t = q; + return Multiply(m,t); +} + +// +//########################################################################### +//########################################################################### +// +AffineMatrix& + AffineMatrix::Multiply(const AffineMatrix &m,const Point3D& p) +{ + Check_Pointer(this); + Check(&m); + Check(&p); + + (*this)(3,0) = m(3,0) + p.x; + (*this)(3,1) = m(3,1) + p.y; + (*this)(3,2) = m(3,2) + p.z; + + return *this; +} + +// +//########################################################################### +//########################################################################### +// +Scalar + AffineMatrix::Determinant() const +{ + Check(this); + + return + (*this)(0,0)*((*this)(1,1)*(*this)(2,2) - (*this)(1,2)*(*this)(2,1)) + + (*this)(0,1)*((*this)(1,2)*(*this)(2,0) - (*this)(1,0)*(*this)(2,2)) + + (*this)(0,2)*((*this)(1,0)*(*this)(2,1) - (*this)(1,1)*(*this)(2,0)); +} + +// +//########################################################################### +//########################################################################### +// +AffineMatrix& + AffineMatrix::Solve() +{ + Check(this); + + int column; + Scalar temp; + + // + //------------------------------------------------------------------ + // Make sure that we get a decent value into the first diagonal spot + //------------------------------------------------------------------ + // + if (!(*this)(0,0)) + { + for (column=0; column<3; ++column) + if ((*this)(0,column)) + break; + Verify(column != 3); + + // + //-------------- + // Swap the columns + //-------------- + // + temp = (*this)(0,0); + (*this)(0,0) = (*this)(0,column); + (*this)(0,column) = temp; + + temp = (*this)(1,0); + (*this)(1,0) = (*this)(1,column); + (*this)(1,column) = temp; + + temp = (*this)(2,0); + (*this)(2,0) = (*this)(2,column); + (*this)(2,column) = temp; + + temp = (*this)(3,0); + (*this)(3,0) = (*this)(3,column); + (*this)(3,column) = temp; + } + + // + //------------------------------------ + // Make sure the diagonal entry is 1.0 + //------------------------------------ + // + temp = (*this)(0,0); + (*this)(0,0) = 1.0f; + (*this)(1,0) /= temp; + (*this)(2,0) /= temp; + (*this)(3,0) /= temp; + + // + //------------------------ + // Make the first row zero + //------------------------ + // + temp = (*this)(0,1); + (*this)(0,1) = 0.0f; + (*this)(1,1) -= temp * (*this)(1,0); + (*this)(2,1) -= temp * (*this)(2,0); + (*this)(3,1) -= temp * (*this)(3,0); + + temp = (*this)(0,2); + (*this)(0,2) = 0.0f; + (*this)(1,2) -= temp * (*this)(1,0); + (*this)(2,2) -= temp * (*this)(2,0); + (*this)(3,2) -= temp * (*this)(3,0); + + // + //------------------------------------------------------------------- + // Make sure that we get a decent value into the second diagonal spot + //------------------------------------------------------------------- + // + if (!(*this)(1,1)) + { + Verify(!(*this)(2,2)); + + // + //--------------------- + // Swap the (*this) columns + //--------------------- + // + temp = (*this)(1,1); + (*this)(1,1) = (*this)(1,2); + (*this)(1,2) = temp; + + temp = (*this)(2,1); + (*this)(2,1) = (*this)(2,2); + (*this)(2,2) = temp; + + temp = (*this)(3,1); + (*this)(3,1) = (*this)(3,2); + (*this)(3,2) = temp; + } + + // + //----------------------------------- + // Make the second diaginal entry 1.0 + //----------------------------------- + // + temp = (*this)(1,1); + (*this)(1,1) = 1.0f; + (*this)(2,1) /= temp; + (*this)(3,1) /= temp; + + // + //------------------------------------ + // Make the second row zeros otherwise + //------------------------------------ + // + temp = (*this)(1,0); + (*this)(1,0) = 0.0f; + (*this)(2,0) -= temp * (*this)(2,1); + (*this)(3,0) -= temp * (*this)(3,1); + + temp = (*this)(1,2); + (*this)(1,2) = 0.0f; + (*this)(2,2) -= temp * (*this)(2,1); + (*this)(3,2) -= temp * (*this)(3,1); + + // + //--------------------------- + // Make the last diagonal 1.0 + //--------------------------- + // + Verify((*this)(2,2)); + temp = (*this)(2,2); + (*this)(2,2) = 1.0f; + (*this)(3,2) /= temp; + + // + //------------------------------------ + // Make the third row zeros otherwise + //------------------------------------ + // + temp = (*this)(2,0); + (*this)(2,0) = 0.0f; + (*this)(3,0) -= temp * (*this)(3,2); + + temp = (*this)(2,1); + (*this)(2,1) = 0.0f; + (*this)(3,1) -= temp * (*this)(3,2); + + // + //------------------------- + // Return the reduced array + //------------------------- + // + return *this; +} + +// +//########################################################################### +//########################################################################### +// +ostream& + operator <<(ostream& Stream, const AffineMatrix& M) +{ + Check(&M); + return Stream << setprecision(4) << "\n\t| " << setw(9) << M(0,0) << ", " + << setw(9) << M(0,1) << ", " << setw(9) << M(0,2) << ", 0 |\n\t| " + << setw(9) << M(1,0) << ", " << setw(9) << M(1,1) << ", " << setw(9) + << M(1,2) << ", 0 |\n\t| " << setw(9) << M(2,0) << ", " << setw(9) + << M(2,1) << ", " << setw(9) << M(2,2) << ", 0 |\n\t| " << setw(9) + << M(3,0) << ", " << setw(9) << M(3,1) << ", " << setw(9) << M(3,2) + << ", 1 |"; +} + +// +//########################################################################### +//########################################################################### +// +Logical + AffineMatrix::TestInstance() const +{ + return True; +} + +#if defined(TEST_CLASS) +# include "affnmtrx.tcp" +#endif + diff --git a/CODE/RP/MUNGA/AFFNMTRX.HPP b/CODE/RP/MUNGA/AFFNMTRX.HPP new file mode 100644 index 0000000..5c215a0 --- /dev/null +++ b/CODE/RP/MUNGA/AFFNMTRX.HPP @@ -0,0 +1,195 @@ +//===========================================================================// +// File: affnmtrx.hh // +// Project: MUNGA Brick: Math Library // +// Contents: Interface specifications for Affine matrices // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 11/20/94 JMA Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(AFFNMTRX_HPP) +# define AFFNMTRX_HPP + +# if !defined(POINT3D_HPP) +# include +# endif + + class Origin; + class TransposedMatrix; + class Hinge; + class EulerAngles; + class Quaternion; + class YawPitchRoll; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~ AffineMatrix ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class AffineMatrix + { + public: + static const AffineMatrix + Identity; + + #if defined(USE_SIGNATURE) + friend int + Is_Signature_Bad(const volatile AffineMatrix *); + #endif + + Scalar + entries[12]; + + // + // Constructors + // + AffineMatrix() + {} + AffineMatrix& + BuildIdentity(); + AffineMatrix(int) + {BuildIdentity();} + + // + // Assignment Operators + // + AffineMatrix& + operator=(const AffineMatrix &m); + AffineMatrix& + operator=(const Origin &p); + AffineMatrix& + operator=(const Hinge &hinge); + AffineMatrix& + operator=(const EulerAngles &angles); + AffineMatrix& + operator=(const YawPitchRoll &angles); + AffineMatrix& + operator=(const Quaternion &q); + AffineMatrix& + operator=(const Point3D &p) + {return SetFromAxis(W_Axis,p);} + AffineMatrix& + operator=(const Matrix4x4 &m); + AffineMatrix& + operator=(const TransposedMatrix &m); + + // + // Comparison operators + // + Logical + operator==(const AffineMatrix& m) const; + Logical + operator!=(const AffineMatrix& m) const; + + // + // Index operators + // + Scalar& + operator()(size_t row,size_t column) + { + Check_Pointer(this); Warn(row>3); Warn(column>2); + return entries[(column<<2)+row]; + } + const Scalar& + operator ()(size_t row,size_t column) const + { + Check_Pointer(this); Warn(row>3); Warn(column>2); + return entries[(column<<2)+row]; + } + + // + // Axis Manipulation functions + // + void + GetFromAxis(size_t index, Vector3D *v) const; + void + GetToAxis(size_t index, Vector3D *v) const; + + AffineMatrix& + SetFromAxis(size_t index, const Vector3D &v); + AffineMatrix& + SetToAxis(size_t index, const Vector3D &v); + + // + // Matrix Multiplication + // + AffineMatrix& + Multiply( + const AffineMatrix& m1, + const AffineMatrix& m2 + ); + AffineMatrix& + operator*=(const AffineMatrix& m) + {AffineMatrix temp(*this); return Multiply(temp,m);} + + // + // Matrix Inversion + // + AffineMatrix& + Invert(const AffineMatrix& Source); + AffineMatrix& + Invert() + {AffineMatrix src(*this); return Invert(src);} + + // + // Scaling, Rotation and Translation + // + AffineMatrix& + Multiply(const AffineMatrix &m,const Vector3D &v); + AffineMatrix& + operator*=(const Vector3D &v) + {AffineMatrix m(*this); return Multiply(m,v);} + AffineMatrix& + Multiply(const AffineMatrix &m,const Quaternion &q); + AffineMatrix& + operator*=(const Quaternion &q) + {AffineMatrix m(*this); return Multiply(m,q);} + AffineMatrix& + Multiply(const AffineMatrix &m,const Point3D &p); + AffineMatrix& + operator*=(const Point3D& p) + {AffineMatrix m(*this); return Multiply(m,p);} + + // + // Miscellaneous Functions + // + Scalar + Determinant() const; + AffineMatrix& + Solve(); + + // + // Support functions + // + friend ostream& + operator <<( + ostream& stream, + const AffineMatrix& m + ); + Logical + TestInstance() const; + static Logical + TestClass(); + }; + + inline Point3D& + Point3D::operator=(const AffineMatrix& m) + {m.GetFromAxis(W_Axis,this); return *this;} + + inline MemoryStream& + MemoryStream_Read( + MemoryStream *stream, + AffineMatrix *output + ) + {return stream->ReadBytes(output, sizeof(*output));} + inline MemoryStream& + MemoryStream_Write( + MemoryStream *stream, + const AffineMatrix *input + ) + {return stream->WriteBytes(input, sizeof(*input));} + +#endif + diff --git a/CODE/RP/MUNGA/AFFNMTRX.TCP b/CODE/RP/MUNGA/AFFNMTRX.TCP new file mode 100644 index 0000000..a8d051a --- /dev/null +++ b/CODE/RP/MUNGA/AFFNMTRX.TCP @@ -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() +{ + cout << "Starting AffineMatrix Test...\n"; + + Tell(" AffineMatrix::TestClass() stubbed out!\n"); + return False; +} diff --git a/CODE/RP/MUNGA/ANGLE.CPP b/CODE/RP/MUNGA/ANGLE.CPP new file mode 100644 index 0000000..d92049a --- /dev/null +++ b/CODE/RP/MUNGA/ANGLE.CPP @@ -0,0 +1,205 @@ +//===========================================================================// +// File: angle.cc // +// Project: MUNGA Brick: Math Library // +// Contents: Implementation details 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 // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(ANGLE_HPP) + #include +#endif + +#if defined(USE_SIGNATURE) + int + Is_Signature_Bad(const volatile Radian *) + { + return False; + } +#endif + +// +//############################################################################# +//############################################################################# +// +Scalar + Radian::Normalize(Scalar Value) +{ + Scalar temp; + + temp = fmod(Value,TWO_PI); + if (temp > PI) { + temp -= TWO_PI; + } + else if (temp < -PI) { + temp += TWO_PI; + } + return temp; +} + +// +//############################################################################# +//############################################################################# +// +Radian& + Radian::Normalize() +{ + Check(this); + angle = fmod(angle,TWO_PI); + if (angle > PI) { + angle -= TWO_PI; + } + else if (angle < -PI) { + angle += TWO_PI; + } + return *this; +} + +// +//############################################################################# +//############################################################################# +// +Radian& + Radian::Lerp(const Radian &a,const Radian &b,Scalar t) +{ + Scalar a1,a2; + + Check_Pointer(this); + Check(&a); + Check(&b); + a1 = Radian::Normalize(a.angle); + a2 = Radian::Normalize(b.angle); + if (a2-a1 > PI) { + a2 -= TWO_PI; + } + else if (a2-a1 < -PI) { + a2 += TWO_PI; + } + angle = ::Lerp(a1, a2, t); + return *this; +} + +// +//############################################################################# +//############################################################################# +// +ostream& + operator<<( + ostream& stream, + const Radian& radian + ) +{ + return stream << radian.angle << " rad"; +} + +// +//############################################################################# +//############################################################################# +// +Logical + Radian::TestInstance() const +{ + return angle >= -100.0f && angle <= 100.0f; +} + +#if defined(USE_SIGNATURE) + int + Is_Signature_Bad(const volatile Degree *) + { + return False; + } +#endif + +// +//############################################################################# +//############################################################################# +// +ostream& + operator<<( + ostream& stream, + const Degree& degree + ) +{ + return stream << degree.angle << " deg"; +} + +// +//############################################################################# +//############################################################################# +// +Logical + Degree::TestInstance() const +{ + return True; +} + +#if defined(USE_SIGNATURE) + int + Is_Signature_Bad(const volatile SinCosPair *) + { + return False; + } +#endif + +// +//############################################################################# +//############################################################################# +// +SinCosPair& + SinCosPair::operator=(const Radian &radian) +{ + Check_Pointer(this); + Check(&radian); + + cosine = cos(radian); + sine = sin(radian); + #if defined(__BCPLUSPLUS__) + cosine = cos(radian); // STUPID FUCKING BORLAND LIBRARY HACK!!!!! + #endif + Check(this); + return *this; +} + +// +//############################################################################# +//############################################################################# +// +ostream& + operator<<( + ostream& stream, + const SinCosPair& pair + ) +{ + return stream << '{' << pair.cosine << ',' << pair.sine << '}'; +} + +// +//############################################################################# +//############################################################################# +// +Logical + SinCosPair::TestInstance() const +{ + Scalar t = sine*sine + cosine*cosine; + if (!Close_Enough(t,1.0f,0.001f)) + { + Dump(*this); + Dump(t); + return False; + } + return True; +} + +#if defined(TEST_CLASS) +# include "angle.tcp" +#endif + diff --git a/CODE/RP/MUNGA/ANGLE.HPP b/CODE/RP/MUNGA/ANGLE.HPP new file mode 100644 index 0000000..cd20991 --- /dev/null +++ b/CODE/RP/MUNGA/ANGLE.HPP @@ -0,0 +1,276 @@ +//===========================================================================// +// File: angle.hh // +// Project: MUNGA Brick: Math Library // +// Contents: Interface specification for angle classes // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 11/18/94 JMA Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(ANGLE_HPP) +# define ANGLE_HPP + +# if !defined(SCALAR_HPP) +# include +# endif + + class Degree; + class SinCosPair; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Radian ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class Radian + { + public: + Scalar + angle; + + #if defined(USE_SIGNATURE) + friend int + Is_Signature_Bad(const volatile Radian *); + #endif + + // + // Constructors + // + Radian() + {} + Radian(Scalar angle) + {this->angle = angle;} + + // + // Assignment operators + // + Radian& + operator=(Scalar angle) + { + Check_Pointer(this); + this->angle = angle; return *this; + } + Radian& + operator=(const Radian &radian) + { + Check_Pointer(this); Check(&radian); + angle = radian.angle; return *this; + } + Radian& + operator=(const Degree °ree); + Radian& + operator=(const SinCosPair &pair); + + // + // Casting + // + operator Scalar() const + {Check(this); return angle;} + + // + // These comparator functions are not designed to make exact comparisons + // of Scalaring point numbers, but rather to compare them to within some + // specified error threshold + // + Logical + operator!() const + {Check(this); return Small_Enough(angle);} + + Logical + operator==(const Radian &r) const + {Check(this); Check(&r); return Close_Enough(angle,r.angle);} + Logical + operator==(float r) const + {Check(this); return Close_Enough(angle,r);} + + Logical + operator!=(const Radian &r) const + {Check(this); Check(&r); return !Close_Enough(angle,r.angle);} + Logical + operator!=(float r) const + {Check(this); return !Close_Enough(angle,r);} + + // + // Math operators + // + Radian& + Negate(Scalar r) + {Check_Pointer(this); angle = -r; return *this;} + + Radian& + Add(Scalar r1,Scalar r2) + {Check_Pointer(this); angle = r1 + r2; return *this;} + Radian& + operator+=(Scalar r) + {Check(this); angle += r; return *this;} + + Radian& + Subtract(Scalar r1,Scalar r2) + {Check_Pointer(this); angle = r1 - r2; return *this;} + Radian& + operator-=(Scalar r) + {Check(this); angle -= r; return *this;} + + Radian& + Multiply(Scalar r1,Scalar r2) + {Check_Pointer(this); angle = r1 * r2; return *this;} + Radian& + operator*=(Scalar r) + {Check(this); angle *= r; return *this;} + + Radian& + Divide(Scalar r1,Scalar r2) + { + Check_Pointer(this); Verify(!Small_Enough(r2)); + angle = r1 / r2; return *this; + } + Radian& + operator/=(Scalar r) + {Check(this); Verify(!Small_Enough(r)); angle /= r; return *this;} + + // + // Template support + // + Radian& + Lerp( + const Radian &a, + const Radian &b, + Scalar t + ); + + // + // Support functions + // + static Scalar + Normalize(Scalar Value); + Radian& + Normalize(); + + friend ostream& + operator<<( + ostream& stream, + const Radian &radian + ); + Logical + TestInstance() const; + static Logical + TestClass(); + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Degree ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class Degree + { + public: + Scalar + angle; + + #if defined(USE_SIGNATURE) + friend int + Is_Signature_Bad(const volatile Degree *); + #endif + + // + // constructors + // + Degree() + {} + Degree(Scalar angle) + {this->angle = angle;} + + // + // Assignment operators + // + Degree& + operator=(const Degree °ree) + {Check(this); Check(°ree); angle = degree.angle; return *this;} + Degree& + operator=(Scalar angle) + {Check(this); this->angle = angle; return *this;} + Degree& + operator=(const Radian &radian) + { + Check(this); Check(&radian); + angle = radian.angle * DEG_PER_RAD; return *this; + } + + // + // Support functions + // + friend ostream& + operator<<( + ostream& stream, + const Degree &angle + ); + Logical + TestInstance() const; + static Logical + TestClass(); + }; + + inline Radian& + Radian::operator=(const Degree& degree) + { + Check_Pointer(this); Check(°ree); + angle = degree.angle * RAD_PER_DEG; return *this; + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SinCosPair ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class SinCosPair + { + public: + Scalar + sine, + cosine; + + #if defined(USE_SIGNATURE) + friend int + Is_Signature_Bad(const volatile SinCosPair *); + #endif + + // + // Constructors + // + SinCosPair() + {} + SinCosPair(Scalar sin, Scalar cos) + {Check_Pointer(this); sine = sin; cosine = cos; Check(this);} + + // + // Assignment operators + // + SinCosPair& + operator=(const SinCosPair &pair) + { + Check_Pointer(this); Check(&pair); + sine = pair.sine; cosine = pair.cosine; return *this; + } + SinCosPair& + operator=(const Radian &radian); + + // + // Support functions + // + friend ostream& + operator<<( + ostream& stream, + const SinCosPair &pair + ); + Logical + TestInstance() const; + static Logical + TestClass(); + }; + + inline Radian& + Radian::operator=(const SinCosPair& pair) + { + Check_Pointer(this); Check(&pair); + angle = Arctan(pair.sine,pair.cosine); return *this; + } + +#endif + diff --git a/CODE/RP/MUNGA/ANGLE.TCP b/CODE/RP/MUNGA/ANGLE.TCP new file mode 100644 index 0000000..ac9c6db --- /dev/null +++ b/CODE/RP/MUNGA/ANGLE.TCP @@ -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() +{ + cout << "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() +{ + cout << "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() +{ + cout << "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; +} diff --git a/CODE/RP/MUNGA/APP.TCP b/CODE/RP/MUNGA/APP.TCP new file mode 100644 index 0000000..a669306 --- /dev/null +++ b/CODE/RP/MUNGA/APP.TCP @@ -0,0 +1,97 @@ +//===========================================================================// +// File: app.tst // +// Project: MUNGA Brick: Application // +// Contents: Interface specification for Application // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 12/12/94 ECH Added event utilities. // +//---------------------------------------------------------------------------// +// Copyright (C) 1994, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#include "app.thp" +#include "entity.thp" +#include "controls.thp" + +TestApplication::TestApplication(ResourceFile *resource_file): + Application(resource_file, (ApplicationID)0) +{ +} + +TestApplication::~TestApplication() +{ +} + +void + TestApplication::Initialize() +{ + Check(this); + + // + //-------------------------------------------------------------------------- + // Create the network manager + //-------------------------------------------------------------------------- + // + application = this; + networkManager = MakeNetworkManager(); + Register_Object(networkManager); + +#if 0 + // + //-------------------------------------------------------------------------- + // Create the registry, load static object streams + //-------------------------------------------------------------------------- + // + registry = MakeRegistry(); + Register_Object(registry); + registry->LoadStaticObjectStreamResource(); + + // + //-------------------------------------------------------------------------- + // Create the controls manager + //-------------------------------------------------------------------------- + // + controlsManager = MakeControlsManager(); + Register_Object(controlsManager); + + // + //-------------------------------------------------------------------------- + // Create the intercom manager + //-------------------------------------------------------------------------- + // + intercomManager = MakeIntercomManager(); + Register_Object(intercomManager); +#endif + + // + //-------------------------------------------------------------------------- + // Add background tasks + //-------------------------------------------------------------------------- + // + ApplicationTask *application_task; + + application_task = new RoutePacketTask; + Register_Object(application_task); + backgroundTasks->AddTask(application_task); + + application_task = new ProcessEventTask; + Register_Object(application_task); + backgroundTasks->AddTask(application_task); + + application_task = new CompleteCyclesTask; + Register_Object(application_task); + backgroundTasks->AddTask(application_task); +} + +void + TestApplication::Terminate() +{ + Check(this); + application = this; + networkManager->Shutdown(); + Application::Terminate(); +} + diff --git a/CODE/RP/MUNGA/APP.THP b/CODE/RP/MUNGA/APP.THP new file mode 100644 index 0000000..c96d6c9 --- /dev/null +++ b/CODE/RP/MUNGA/APP.THP @@ -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 diff --git a/CODE/RP/MUNGA/APPMGR.CPP b/CODE/RP/MUNGA/APPMGR.CPP new file mode 100644 index 0000000..39c29ff --- /dev/null +++ b/CODE/RP/MUNGA/APPMGR.CPP @@ -0,0 +1,131 @@ +#include +#pragma hdrstop + +#if !defined(APPMGR_HPP) +# include +#endif + +ApplicationManager::ApplicationManager(Scalar frame_rate): + Node(ApplicationManagerClassID), + runningApplications(this) +{ + frameRate = frame_rate; + frameDuration = 1.0f/frameRate; + Check_Fpu(); +} + +ApplicationManager::~ApplicationManager() +{ +} + +void + ApplicationManager::StartApplication(Application *new_app) +{ + Check(this); + Check(new_app); + + runningApplications.Add(new_app); + application = new_app; + new_app->Initialize(); +} + +// +//############################################################################# +// RunMissions +//############################################################################# +// +void + ApplicationManager::RunMissions() +{ + Check(this); + + SChainIteratorOf current_application(runningApplications); + +Start_Of_Frame: + current_application.First(); + Time end_of_frame = Now(); + end_of_frame += frameDuration; + #if defined(LAB_ONLY) + int bad_count = 0; + #endif + + if (frameDuration > 0.1f) + { + Fail("frameDuration has grown!\n"); + } + + // + //---------------------------------- + // Run all relevant foreground loops + //---------------------------------- + // + while ((application = current_application.ReadAndNext()) != NULL) + { + Check(application); + if (!application->ExecuteForeground(end_of_frame, frameDuration)) + { + if (!application->Shutdown()) + { + application->Terminate(); + Unregister_Object(application); + delete application; + } + } + } + + // + //----------------------------------------------------------------------- + // Run all relevant background loops until it is time for the next frame. + // If no applications remain, exit the whole loop + //----------------------------------------------------------------------- + // + current_application.First(); + application = current_application.GetCurrent(); + if (!application) + { + return; + } + + // + //------------------------------------------------------------------ + // Give each application a chance to do at least one background task + //------------------------------------------------------------------ + // +Background_Loop: + do { + Check(application); + application->ExecuteBackgroundTask(); + + // + // Move to the next application + // + current_application.Next(); + application = current_application.GetCurrent(); + } while (application); + + // + //--------------------------------------------------------------------- + // If time remains before the next frame is due, do another pass on the + // background tasks + //--------------------------------------------------------------------- + // + Time t2 = Now(); + if (t2 < end_of_frame) + { + current_application.First(); + application = current_application.GetCurrent(); + #if defined(LAB_ONLY) + if (end_of_frame - t2 > 0.1f) + { + DEBUG_STREAM << t2 << ',' << end_of_frame << endl; + if (++bad_count == 1000) + { + Fail("End-of-frame cannot be correctly calculated!"); + } + } + #endif + goto Background_Loop; + } + goto Start_Of_Frame; +} + diff --git a/CODE/RP/MUNGA/APPMGR.HPP b/CODE/RP/MUNGA/APPMGR.HPP new file mode 100644 index 0000000..bfe5cdc --- /dev/null +++ b/CODE/RP/MUNGA/APPMGR.HPP @@ -0,0 +1,33 @@ +#if !defined(APPMGR_HPP) +# define APPMGR_HPP + +# if !defined(APP_HPP) +# include +# 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 + runningApplications; + }; + +#endif diff --git a/CODE/RP/MUNGA/APPMSG.CPP b/CODE/RP/MUNGA/APPMSG.CPP new file mode 100644 index 0000000..fb16678 --- /dev/null +++ b/CODE/RP/MUNGA/APPMSG.CPP @@ -0,0 +1,87 @@ +//===========================================================================// +// 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 +#pragma hdrstop + +#if !defined(APPMSG_HPP) +# include +#endif + +#if !defined(APP_HPP) +# include +#endif + +//~~~~~~~~~~~~~~~~~~~~~ Application__StateQueryMessage ~~~~~~~~~~~~~~~~~~~~~~~~ +Application__StateQueryMessage::Application__StateQueryMessage( + HostID requesting_host +): + NetworkClient::Message( + Application::StateQueryMessageID, + sizeof(Application__StateQueryMessage) + ) +{ + requestingHost = requesting_host; +} + +//~~~~~~~~~~~~~~~~~~~~~~ Application__RunMissionMessage ~~~~~~~~~~~~~~~~~~~~~~~ +Application__RunMissionMessage::Application__RunMissionMessage(): + NetworkClient::Message( + Application::RunMissionMessageID, + sizeof(Application__RunMissionMessage) + ) +{ +} + +//~~~~~~~~~~~~~~~~~~~~~~ Application__StopMissionMessage ~~~~~~~~~~~~~~~~~~~~~~ +Application__StopMissionMessage::Application__StopMissionMessage(Enumeration exit_code): + NetworkClient::Message( + Application::StopMissionMessageID, + sizeof(Application__StopMissionMessage) + ) +{ + exitCode = exit_code; +} + +//~~~~~~~~~~~~~~~~~~~~~~ Application__AbortMissionMessage ~~~~~~~~~~~~~~~~~~~~~~ +Application__AbortMissionMessage::Application__AbortMissionMessage(Enumeration exit_code): + NetworkClient::Message( + Application::AbortMissionMessageID, + sizeof(Application__AbortMissionMessage) + ) +{ + exitCode = exit_code; +} + +//~~~~~~~~~~~~~~~~~~~~ Application__SuspendMissionMessage ~~~~~~~~~~~~~~~~~~~~~ +Application__SuspendMissionMessage::Application__SuspendMissionMessage(): + NetworkClient::Message( + Application::SuspendMissionMessageID, + sizeof(Application__SuspendMissionMessage) + ) +{ +} + +//~~~~~~~~~~~~~~~~~~~~ Application__ResumeMissionMessage ~~~~~~~~~~~~~~~~~~~~~~ +Application__ResumeMissionMessage::Application__ResumeMissionMessage(): + NetworkClient::Message( + Application::ResumeMissionMessageID, + sizeof(Application__ResumeMissionMessage) + ) +{ +} + +//============================================================================== diff --git a/CODE/RP/MUNGA/APPMSG.HPP b/CODE/RP/MUNGA/APPMSG.HPP new file mode 100644 index 0000000..d6d5301 --- /dev/null +++ b/CODE/RP/MUNGA/APPMSG.HPP @@ -0,0 +1,246 @@ +//===========================================================================// +// File: cnslmsgs.hpp // +// 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 // +//===========================================================================// + +#if !defined(APPMSG_HPP) +# define APPMSG_HPP + +#ifdef MAC +#pragma once +#endif + +#ifdef MAC +#include "NetworkEndpoint.h" +#include "Participant.h" +#else +#include +#endif + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Application IDs ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +#ifdef MAC + enum ApplicationMessageID + { + StateQueryMessageID = NetworkEndpoint::NextMessageID, + CheckLoadMessageID, + RunMissionMessageID, + StopMissionMessageID, + KeyCommandMessageID, + SuspendMissionMessageID, + ResumeMissionMessageID, + LoadMissionMessageID, + AbortMissionMessageID, + ApplicationNextMessageID + }; + + enum ApplicationID + { + RPL4, + BTL4, + BTW4 + }; + typedef ApplicationID ApplicationID; + + enum ExitCodeID + { + NullExitCodeID = 0, + AbortExitCodeID, + RunRedPlanetExitCodeID, + RunBattleTechExitCodeID, + RunSinglePlayerRedPlanetExitCodeID, + RunSinglePlayerBattleTechExitCodeID, + DisplayMainTestPatternExitCodeID, + DisplayAuxTestPatternExitCodeID, + TestPlasmaDisplayExitCodeID, + ResetRIOExitCodeID, + RunAudioTestExitCodeID, + RunNortonDiskDoctorExitCodeID, + CheckDiskUsageExitCodeID, + RefreshRedPlanetExitCodeID, + RefreshBattleTechExitCodeID, + ChangeScreenModeExitCodeID, + SoftwareResetExitCodeID, + ClearCrashlogExitCodeID, + KillSpoolFileExitCodeID, + RunRedPlanetCameraExitCodeID, + RunBattleTechCameraExitCodeID, + RunRedPlanetMissionReviewExitCodeID, + RunBattleTechMissionReviewExitCodeID + }; + typedef ExitCodeID ExitCodeID; +#endif + + //~~~~~~~~~~~~~~~~~~~ Application__StateQueryMessage ~~~~~~~~~~~~~~~~~~~~~~~ +#ifdef MAC +#pragma options align=mac68k4byte + class Application__StateQueryMessage: + public NetworkEndpoint::Message + { + public: + Application__StateQueryMessage(HostID requesting_host); + + long + GetRequestingHostID() + {return requestingHost.value();} + + private: + HostID + requestingHost; + }; +#pragma options align=reset +#else + class Application__StateQueryMessage: + public NetworkClient::Message + { + public: + Application__StateQueryMessage(HostID requesting_host); + + HostID + GetRequestingHostID() + {return requestingHost;} + + private: + HostID + requestingHost; + }; +#endif + + //~~~~~~~~~~~~~~~~~~~~ Application__RunMissionMessage ~~~~~~~~~~~~~~~~~~~~~~ +#ifdef MAC +#pragma options align=mac68k4byte + class Application__RunMissionMessage: + public NetworkEndpoint::Message + { + public: + Application__RunMissionMessage(); + }; +#pragma options align=reset +#else + class Application__RunMissionMessage: + public NetworkClient::Message + { + public: + Application__RunMissionMessage(); + }; +#endif + + //~~~~~~~~~~~~~~~~~~~~ Application__StopMissionMessage ~~~~~~~~~~~~~~~~~~~~~ +#ifdef MAC +#pragma options align=mac68k4byte + class Application__StopMissionMessage: + public NetworkEndpoint::Message + { + public: + Application__StopMissionMessage(ExitCodeID exit_code); + + ExitCodeID + GetExitCodeID() + {return((ExitCodeID) exitCode.value());} + + private: + LEDWORD + exitCode; + }; +#pragma options align=reset +#else + class Application__StopMissionMessage: + public NetworkClient::Message + { + public: + Application__StopMissionMessage(Enumeration exit_code); + + Enumeration + GetExitCode() + {return(exitCode);} + + private: + Enumeration + exitCode; + }; +#endif + + //~~~~~~~~~~~~~~~~~~~~ Application__AbortMissionMessage ~~~~~~~~~~~~~~~~~~~~~ +#ifdef MAC +#pragma options align=mac68k4byte + class Application__AbortMissionMessage: + public NetworkEndpoint::Message + { + public: + Application__AbortMissionMessage(ExitCodeID exit_code); + + ExitCodeID + GetExitCode() + {return((ExitCodeID) exitCode.value());} + + private: + LEDWORD + exitCode; + }; +#pragma options align=reset +#else + class Application__AbortMissionMessage: + public NetworkClient::Message + { + public: + Application__AbortMissionMessage(Enumeration exit_code); + + Enumeration + GetExitCode() + {return(exitCode);} + + private: + Enumeration + exitCode; + }; +#endif + + //~~~~~~~~~~~~~~~~~~ Application__SuspendMissionMessage ~~~~~~~~~~~~~~~~~~~~~ +#ifdef MAC +#pragma options align=mac68k4byte + class Application__SuspendMissionMessage: + public NetworkEndpoint::Message + { + public: + Application__SuspendMissionMessage(); + }; +#pragma options align=reset +#else + class Application__SuspendMissionMessage: + public NetworkClient::Message + { + public: + Application__SuspendMissionMessage(); + }; +#endif + + //~~~~~~~~~~~~~~~~~~~ Application__ResumeMissionMessage ~~~~~~~~~~~~~~~~~~~~ +#ifdef MAC +#pragma options align=mac68k4byte + class Application__ResumeMissionMessage: + public NetworkEndpoint::Message + { + public: + Application__ResumeMissionMessage(); + }; +#pragma options align=reset +#else + class Application__ResumeMissionMessage: + public NetworkClient::Message + { + public: + Application__ResumeMissionMessage(); + }; +#endif + +#endif diff --git a/CODE/RP/MUNGA/APPTASK.CPP b/CODE/RP/MUNGA/APPTASK.CPP new file mode 100644 index 0000000..3d03c77 --- /dev/null +++ b/CODE/RP/MUNGA/APPTASK.CPP @@ -0,0 +1,206 @@ +//===========================================================================// +// File: apptask.cpp // +// Project: MUNGA Brick: Application // +// Contents: Interface specification for Application // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 08/24/94 ECH Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(APPTASK_HPP) +# include +#endif + +#if !defined(RENDERER_HPP) +# include +#endif + +#if !defined(AUDREND_HPP) +# include +#endif + +#if !defined(APP_HPP) +# include +#endif + +#if !defined(NTTMGR_HPP) +# include +#endif + +#if !defined(GAUGEREND_HPP) +# include +#endif + +#if defined(TRACE_COMPLETE_CYCLES) + BitTrace Complete_Cycles("Complete Cycles"); +#endif + +#if defined(TRACE_DEATH_ROW) + BitTrace Death_Row("Death Row"); +#endif + +//############################################################################# +//########################### ApplicationTask ########################### +//############################################################################# + +ApplicationTask::ApplicationTask(ClassID class_ID): + Component(class_ID) +{ +} + +ApplicationTask::~ApplicationTask() +{ +} + +//############################################################################# +//########################### BackgroundTasks ########################### +//############################################################################# + +BackgroundTasks::BackgroundTasks(): + taskSocket(NULL) +{ + taskIterator = new SChainIteratorOf(&taskSocket); + Register_Object(taskIterator); +} + +BackgroundTasks::~BackgroundTasks() +{ + Check(taskIterator); + taskIterator->DeletePlugs(); + Unregister_Object(taskIterator); + delete taskIterator; +} + +Logical + BackgroundTasks::TestInstance() const +{ + Component::TestInstance(); + Check(&taskSocket); + Check(taskIterator); + return True; +} + +void + BackgroundTasks::AddTask(ApplicationTask *task) +{ + Check(this); + Check(task); + taskSocket.Add(task); +} + +void + BackgroundTasks::Execute() +{ + Check(this); + + Check(taskIterator); + if (taskIterator->GetCurrent() == NULL) + { + taskIterator->First(); + } + + ApplicationTask *task = taskIterator->GetCurrent(); + Check(task); + task->Execute(); + taskIterator->Next(); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~ NetworkManagerTask ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +void + NetworkManagerTask::Execute() +{ + Check(this); + Check(application); + Check(application->GetNetworkManager()); + application->GetNetworkManager()->ExecuteBackground(); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~ RoutePacketTask ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +void + RoutePacketTask::Execute() +{ + Check(this); + + Check(application); + Check(application->GetNetworkManager()); + application->GetNetworkManager()->RoutePacket(); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ProcessEventTask ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +void + ProcessEventTask::Execute() +{ + Check(this); + Check(application); + application->ProcessOneEvent(); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~ AudioRendererTask ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +void + AudioRendererTask::Execute() +{ + Check(this); + Check(application); + if (application->GetAudioRenderer() != NULL) + { + Check(application->GetAudioRenderer()); + application->GetAudioRenderer()->ExecuteBackground(); + } +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~ GaugeRendererTask ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +void + GaugeRendererTask::Execute() +{ + Check(this); + Check(application); + if (application->GetGaugeRenderer() != NULL) + { + Check(application->GetGaugeRenderer()); + application->GetGaugeRenderer()->ExecuteBackground(); + } +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~ CompleteCyclesTask ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +void + CompleteCyclesTask::Execute() +{ + SET_COMPLETE_CYCLES(); + + Check(this); + Check(application); + Check(application->GetRendererManager()); + application->GetRendererManager()->CompleteCycles(); + + CLEAR_COMPLETE_CYCLES(); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ FryDeathRowTask ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +void + FryDeathRowTask::Execute() +{ + SET_DEATH_ROW(); + + Check(this); + Check(application); + Check(application->GetEntityManager()); + application->GetEntityManager()->FryDeathRow(); + + CLEAR_DEATH_ROW(); +} + diff --git a/CODE/RP/MUNGA/APPTASK.HPP b/CODE/RP/MUNGA/APPTASK.HPP new file mode 100644 index 0000000..072cdb8 --- /dev/null +++ b/CODE/RP/MUNGA/APPTASK.HPP @@ -0,0 +1,179 @@ +//===========================================================================// +// File: apptask.hpp // +// Project: MUNGA Brick: Application // +// Contents: Interface specification for Application // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 08/24/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(APPTASK_HPP) +# define APPTASK_HPP + +# if !defined(STYLE_HPP) +# include +# endif + +# if !defined(CMPNNT_HPP) +# include +# endif + +# if !defined(SCHAIN_HPP) +# include +# endif + +# if defined(TRACE_COMPLETE_CYCLES) + extern BitTrace Complete_Cycles; +# define SET_COMPLETE_CYCLES() Complete_Cycles.Set() +# define CLEAR_COMPLETE_CYCLES() Complete_Cycles.Clear() +# else +# define SET_COMPLETE_CYCLES() +# define CLEAR_COMPLETE_CYCLES() +# endif + +# if defined(TRACE_DEATH_ROW) + extern BitTrace Death_Row; +# define SET_DEATH_ROW() Death_Row.Set() +# define CLEAR_DEATH_ROW() Death_Row.Clear() +# else +# define SET_DEATH_ROW() +# define CLEAR_DEATH_ROW() +# endif + + //########################################################################## + //####################### ApplicationTask ############################ + //########################################################################## + + class ApplicationTask: + public Component + { + public: + ApplicationTask(ClassID class_ID = ApplicationTaskClassID); + ~ApplicationTask(); + }; + + //########################################################################## + //####################### BackgroundTasks ############################ + //########################################################################## + + class BackgroundTasks: + public Component + { + public: + BackgroundTasks(); + ~BackgroundTasks(); + + Logical + TestInstance() const; + + void + AddTask(ApplicationTask *task); + + void + Execute(); + + private: + SChainOf + taskSocket; + SChainIteratorOf + *taskIterator; + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~ NetworkManagerTask ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class NetworkManagerTask: + public ApplicationTask + { + public: + NetworkManagerTask() {} + ~NetworkManagerTask() {} + + void + Execute(); + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~ RoutePacketTask ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class RoutePacketTask: + public ApplicationTask + { + public: + RoutePacketTask() {} + ~RoutePacketTask() {} + + void + Execute(); + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~ ProcessEventTask ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class ProcessEventTask: + public ApplicationTask + { + public: + ProcessEventTask() {} + ~ProcessEventTask() {} + + void + Execute(); + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~ AudioRendererTask ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class AudioRendererTask: + public ApplicationTask + { + public: + AudioRendererTask() {} + ~AudioRendererTask() {} + + void + Execute(); + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~ GaugeRendererTask ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class GaugeRendererTask: + public ApplicationTask + { + public: + GaugeRendererTask() {} + ~GaugeRendererTask() {} + + void + Execute(); + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~ CompleteCyclesTask ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class CompleteCyclesTask: + public ApplicationTask + { + public: + CompleteCyclesTask() {} + ~CompleteCyclesTask() {} + + void + Execute(); + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~ FryDeathRowTask ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class FryDeathRowTask: + public ApplicationTask + { + public: + FryDeathRowTask() {} + ~FryDeathRowTask() {} + + void + Execute(); + }; + +#endif + diff --git a/CODE/RP/MUNGA/AUDCMP.HPP b/CODE/RP/MUNGA/AUDCMP.HPP new file mode 100644 index 0000000..dcd9bd2 --- /dev/null +++ b/CODE/RP/MUNGA/AUDCMP.HPP @@ -0,0 +1,751 @@ +//===========================================================================// +// File: audcmp.hpp // +// Project: MUNGA Brick: Audio manager // +// Contents: // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 01/30/95 ECH Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(AUDCMP_HPP) +# define AUDCMP_HPP + +# if !defined(STYLE_HPP) +# include +# endif + +# if !defined(AUDIO_HPP) +# include +# endif + +# if !defined(AUDLOC_HPP) +# include +# endif + +# if !defined(AVERAGE_HPP) +# include +# endif + +# if !defined(AUDTIME_HPP) +# include +# endif + + //########################################################################## + //######################## AudioMessageWatcher ####################### + //########################################################################## + + class AudioMessageWatcher: + public AudioComponent + { + public: + // + //----------------------------------------------------------------------- + // Constructor, Destructor + //----------------------------------------------------------------------- + // + AudioMessageWatcher( + PlugStream *stream, + Entity *entity + ); + ~AudioMessageWatcher(); + + Logical + TestInstance() const; + + // + //----------------------------------------------------------------------- + // BuildFromPage + //----------------------------------------------------------------------- + // + static void + BuildFromPage( + PlugStream *stream, + NameList *name_list, + ClassID class_ID, + ObjectID object_ID + ); + + // + //----------------------------------------------------------------------- + // MessageTapScanCallback + //----------------------------------------------------------------------- + // + void + MessageTapScanCallback( + Receiver::Message *message, + Receiver *receiver + ); + + // + //----------------------------------------------------------------------- + // Controller methods + //----------------------------------------------------------------------- + // + void + ReceiveControl( + AudioControlID control_ID, + AudioControlValue control_value + ); + + private: + // + //----------------------------------------------------------------------- + // Controller methods + //----------------------------------------------------------------------- + // + virtual Logical + DoesMessageMatch(Receiver::Message*) + {return True;} + + // + //----------------------------------------------------------------------- + // Private Data + //----------------------------------------------------------------------- + // + SlotOf + audioComponentSocket; + + AudioControlID controlID; + AudioControlValue controlValue; + + MessageTap *messageTap; + + #if DEBUG_LEVEL>0 + Receiver *verifyReceiver; + Receiver::MessageID verifyMessageID; + #endif + }; + + //########################################################################## + //############### AudioControlsButtonMessageWatcher ################## + //########################################################################## + + class AudioControlsButtonMessageWatcher: + public AudioMessageWatcher + { + public: + // + //----------------------------------------------------------------------- + // Constructor, Destructor + //----------------------------------------------------------------------- + // + AudioControlsButtonMessageWatcher( + PlugStream *stream, + Entity *entity + ); + ~AudioControlsButtonMessageWatcher(); + + private: + // + //----------------------------------------------------------------------- + // Controller methods + //----------------------------------------------------------------------- + // + Logical + DoesMessageMatch(Receiver::Message*); + }; + + //########################################################################## + //######################### AudioControlSend ######################### + //########################################################################## + + class AudioControlSend: + public AudioComponent + { + public: + // + //-------------------------------------------------------------------- + // Construction, Destruction, Testing + //-------------------------------------------------------------------- + // + AudioControlSend( + PlugStream *stream, + Entity *entity + ); + ~AudioControlSend(); + + // + //-------------------------------------------------------------------- + // BuildFromPage + //-------------------------------------------------------------------- + // + static void + BuildFromPage( + PlugStream *stream, + NameList *name_list, + ClassID class_ID, + ObjectID object_ID + ); + + // + //-------------------------------------------------------------------- + // Controller methods + //-------------------------------------------------------------------- + // + void + ReceiveControl( + AudioControlID control_ID, + AudioControlValue control_value + ); + }; + + //########################################################################## + //####################### AudioControlSplitter ####################### + //########################################################################## + + class AudioControlSplitter: + public AudioComponent + { + public: + // + //-------------------------------------------------------------------- + // Construction, Destruction, Testing + //-------------------------------------------------------------------- + // + AudioControlSplitter( + PlugStream *stream, + Entity *entity + ); + void + AudioControlSplitterX(Entity *entity); + ~AudioControlSplitter(); + + Logical + TestInstance() const; + + // + //-------------------------------------------------------------------- + // BuildFromPage + //-------------------------------------------------------------------- + // + static void + BuildFromPage( + PlugStream *stream, + NameList *name_list, + ClassID class_ID, + ObjectID object_ID + ); + + // + //-------------------------------------------------------------------- + // Controller methods + //-------------------------------------------------------------------- + // + void + ReceiveControl( + AudioControlID control_ID, + AudioControlValue control_value + ); + + private: + // + //-------------------------------------------------------------------- + // Private data + //-------------------------------------------------------------------- + // + SChainOf audioComponentSocket; + }; + + //########################################################################## + //####################### AudioControlMixer ########################## + //########################################################################## + + #define AUDIO_CONTROL_MIXER_MAX_CONTROLS (4) + + class AudioControlMixer: + public AudioComponent + { + public: + // + //-------------------------------------------------------------------- + // Construction, Destruction, Testing + //-------------------------------------------------------------------- + // + AudioControlMixer( + PlugStream *stream, + Entity *entity + ); + void + AudioControlMixerX( + AudioComponent *audio_component, + Entity *entity, + AudioControlID first_input_control_ID, + AudioControlID last_input_control_ID, + AudioControlID output_control_ID + ); + ~AudioControlMixer(); + + Logical + TestInstance() const; + + // + //-------------------------------------------------------------------- + // BuildFromPage + //-------------------------------------------------------------------- + // + static void + BuildFromPage( + PlugStream *stream, + NameList *name_list, + ClassID class_ID, + ObjectID object_ID + ); + + // + //-------------------------------------------------------------------- + // Controller methods + //-------------------------------------------------------------------- + // + void + ReceiveControl( + AudioControlID control_ID, + AudioControlValue control_value + ); + + private: + // + //-------------------------------------------------------------------- + // Private data + //-------------------------------------------------------------------- + // + SlotOf + audioComponentSocket; + + AudioControlValue + controlValueArray[AUDIO_CONTROL_MIXER_MAX_CONTROLS]; + AudioControlID + firstInputControlID; + int + numberOfInputs; + AudioControlID + outputControlID; + }; + + //########################################################################## + //###################### AudioControlMultiplier ###################### + //########################################################################## + + #define AUDIO_CONTROL_MULTIPLIER_MAX_CONTROLS (4) + + class AudioControlMultiplier: + public AudioComponent + { + public: + // + //-------------------------------------------------------------------- + // Construction, Destruction, Testing + //-------------------------------------------------------------------- + // + AudioControlMultiplier( + PlugStream *stream, + Entity *entity + ); + void + AudioControlMultiplierX( + AudioComponent *audio_component, + Entity *entity, + AudioControlID first_input_control_ID, + AudioControlID last_input_control_ID, + AudioControlID output_control_ID + ); + ~AudioControlMultiplier(); + + Logical + TestInstance() const; + + // + //-------------------------------------------------------------------- + // BuildFromPage + //-------------------------------------------------------------------- + // + static void + BuildFromPage( + PlugStream *stream, + NameList *name_list, + ClassID class_ID, + ObjectID object_ID + ); + + // + //-------------------------------------------------------------------- + // Controller methods + //-------------------------------------------------------------------- + // + void + ReceiveControl( + AudioControlID control_ID, + AudioControlValue control_value + ); + + private: + // + //-------------------------------------------------------------------- + // Private data + //-------------------------------------------------------------------- + // + SlotOf + audioComponentSocket; + + AudioControlValue + controlValueArray[AUDIO_CONTROL_MULTIPLIER_MAX_CONTROLS]; + AudioControlID + firstInputControlID; + int + numberOfInputs; + AudioControlID + outputControlID; + }; + + //########################################################################## + //######################## AudioControlSmoother ###################### + //########################################################################## + + class AudioControlSmoother: + public AudioComponent + { + public: + // + //-------------------------------------------------------------------- + // Construction, Destruction, Testing + //-------------------------------------------------------------------- + // + AudioControlSmoother( + PlugStream *stream, + Entity *entity + ); + void + AudioControlSmootherX( + AudioComponent *audio_component, + Entity *entity, + AudioControlID control_ID + ); + ~AudioControlSmoother(); + + Logical + TestInstance() const; + + // + //-------------------------------------------------------------------- + // BuildFromPage + //-------------------------------------------------------------------- + // + static void + BuildFromPage( + PlugStream *stream, + NameList *name_list, + ClassID class_ID, + ObjectID object_ID + ); + + // + //-------------------------------------------------------------------- + // Controller methods + //-------------------------------------------------------------------- + // + void + ReceiveControl( + AudioControlID control_ID, + AudioControlValue control_value + ); + + private: + // + //-------------------------------------------------------------------- + // Private data + //-------------------------------------------------------------------- + // + SlotOf + audioComponentSocket; + AverageOf + audioControlAverage; + AudioControlID + controlID; + }; + + //########################################################################## + //####################### AudioResourceSelector ###################### + //########################################################################## + + class AudioResourceIndex; + + class AudioResourceSelector: + public AudioComponent + { + public: + // + //-------------------------------------------------------------------- + // Construction, Destruction, Testing + //-------------------------------------------------------------------- + // + AudioResourceSelector( + PlugStream *stream, + Entity *entity + ); + void + AudioResourceSelectorX( + AudioSource *audio_source, + Entity *entity, + AudioResourceIndex *audio_resource_index, + AudioControlID control_ID, + AudioControlValue min_control_value, + AudioControlValue max_control_value, + Logical dump_value + ); + ~AudioResourceSelector(); + + Logical + TestInstance() const; + + // + //-------------------------------------------------------------------- + // BuildFromPage + //-------------------------------------------------------------------- + // + static void + BuildFromPage( + PlugStream *stream, + NameList *name_list, + ClassID class_ID, + ObjectID object_ID + ); + + // + //-------------------------------------------------------------------- + // Controller methods + //-------------------------------------------------------------------- + // + void + ReceiveControl( + AudioControlID control_ID, + AudioControlValue control_value + ); + + private: + // + //-------------------------------------------------------------------- + // Private data + //-------------------------------------------------------------------- + // + SlotOf + audioSourceSocket; + + AudioResourceIndex + *audioResourceIndex; + + AudioControlID + controlID; + AudioControlValue + minControlValue, + maxControlValue; + + Logical + dumpValue; + }; + + //########################################################################## + //######################## AudioSampleAndHold ######################## + //########################################################################## + + class AudioSampleAndHold: + public AudioComponent + { + public: + // + //----------------------------------------------------------------------- + // Construction, Destruction, Testing + //----------------------------------------------------------------------- + // + AudioSampleAndHold( + PlugStream *stream, + Entity *entity + ); + void + AudioSampleAndHoldX( + AudioComponent *audio_component, + Entity *entity, + AudioControlID audio_control_ID, + const AudioTime &sample_duration, + Scalar min_value, + Scalar max_value + ); + ~AudioSampleAndHold(); + + // + //----------------------------------------------------------------------- + // BuildFromPage + //----------------------------------------------------------------------- + // + static void + BuildFromPage( + PlugStream *stream, + NameList *name_list, + ClassID class_ID, + ObjectID object_ID + ); + + // + //-------------------------------------------------------------------- + // Execute + //-------------------------------------------------------------------- + // + void + Execute(); + + // + //----------------------------------------------------------------------- + // Controller methods + //----------------------------------------------------------------------- + // + void + ReceiveControl( + AudioControlID control_ID, + AudioControlValue control_value + ); + + private: + // + //----------------------------------------------------------------------- + // Private methods + //----------------------------------------------------------------------- + // + void + SampleAndHold(); + + // + //----------------------------------------------------------------------- + // Private data + //----------------------------------------------------------------------- + // + SlotOf + audioComponentSocket; + + AudioControlID + audioControlID; + AudioControlValue + minValue, + maxValue, + currentValue; + AudioTime + nextSampleTime, + sampleDuration; + }; + + //########################################################################## + //############################# AudioLFO ############################# + //########################################################################## + + enum AudioLFOWaveForm + { + SinusoidalAudioLFOWaveForm = 0, + TriangularAudioLFOWaveForm = 1 + }; + + inline MemoryStream& + MemoryStream_Read( + MemoryStream *stream, + AudioLFOWaveForm *ptr + ) + {return stream->ReadBytes(ptr, sizeof(*ptr));} + inline MemoryStream& + MemoryStream_Write( + MemoryStream *stream, + const AudioLFOWaveForm *ptr + ) + {return stream->WriteBytes(ptr, sizeof(*ptr));} + + class AudioLFO: + public AudioComponent + { + public: + // + //----------------------------------------------------------------------- + // Construction, Destruction, Testing + //----------------------------------------------------------------------- + // + AudioLFO( + PlugStream *stream, + Entity *entity + ); + void + AudioLFOX( + AudioComponent *audio_component, + Entity *entity, + AudioControlID audio_control_ID, + AudioLFOWaveForm wave_form, + Scalar the_period, + AudioControlValue min_value, + AudioControlValue max_value, + Logical dump_value + ); + ~AudioLFO(); + + // + //----------------------------------------------------------------------- + // BuildFromPage + //----------------------------------------------------------------------- + // + static void + BuildFromPage( + PlugStream *stream, + NameList *name_list, + ClassID class_ID, + ObjectID object_ID + ); + + // + //-------------------------------------------------------------------- + // Execute + //-------------------------------------------------------------------- + // + void + Execute(); + + // + //----------------------------------------------------------------------- + // Controller methods + //----------------------------------------------------------------------- + // + void + ReceiveControl( + AudioControlID control_ID, + AudioControlValue control_value + ); + + private: + // + //----------------------------------------------------------------------- + // Private methods + //----------------------------------------------------------------------- + // + void + Generate(); + + // + //----------------------------------------------------------------------- + // Private data + //----------------------------------------------------------------------- + // + SlotOf + audioComponentSocket; + + AudioControlID + audioControlID; + AudioLFOWaveForm + waveForm; + AudioControlValue + minValue, + maxValue; + AudioTime + period; + AudioTime + startTime; + Logical + dumpValue; + }; + +#endif diff --git a/CODE/RP/MUNGA/AUDENT.CPP b/CODE/RP/MUNGA/AUDENT.CPP new file mode 100644 index 0000000..6d9a240 --- /dev/null +++ b/CODE/RP/MUNGA/AUDENT.CPP @@ -0,0 +1,203 @@ +//===========================================================================// +// File: audent.cpp // +// Project: MUNGA Brick: Model Manager // +// Contents: Implementation details of audio entity class // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 12/20/95 ECH Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(AUDENT_HPP) +# include +#endif + +#if !defined(JMOVER_HPP) +# include +#endif + +#if !defined(APP_HPP) + #include +#endif + +#if !defined(HOSTMGR_HPP) + #include +#endif + +//############################################################################# +//########################### AudioEntity ############################### +//############################################################################# + +//############################################################################# +// Shared Data Support +// +Derivation + AudioEntity::ClassDerivations( + Explosion::ClassDerivations, + "AudioEntity" + ); + +AudioEntity::SharedData + AudioEntity::DefaultData( + AudioEntity::ClassDerivations, + AudioEntity::MessageHandlers, + AudioEntity::AttributeIndex, + AudioEntity::StateCount, + (Entity::MakeHandler)AudioEntity::Make + ); + +// +//############################################################################# +//############################################################################# +// +AudioEntity::AudioEntity( + AudioEntity::MakeMessage *creation_message, + AudioEntity::SharedData &shared_data +): + Explosion(creation_message, shared_data), + parentEntitySocket(NULL) +{ + Check_Pointer(this); + Check_Pointer(creation_message); + + // + // Get the parent entity + // + Entity *parent_entity; + + parent_entity = + application->GetHostManager()->GetEntityPointer( + creation_message->parentEntityID + ); + if (parent_entity != NULL) + { + parentEntitySocket.Add(parent_entity); + parentEntitySegment = creation_message->parentEntitySegment; + } + else + { + parentEntitySegment = NULL; + } + + // + // Set simulation + // + SetPerformance(&AudioEntity::AudioEntitySimulation); + SetValidFlag(); +} + +// +//############################################################################# +//############################################################################# +// +AudioEntity::~AudioEntity() +{ +} + +// +//############################################################################# +//############################################################################# +// +Logical + AudioEntity::TestInstance() const +{ + if (!IsDerivedFrom(ClassDerivations)) + { + return False; + } + Check(&parentEntitySocket); + if (parentEntitySegment != NULL) + { + Check(parentEntitySegment); + } + return True; +} + +// +//############################################################################# +//############################################################################# +// +AudioEntity* + AudioEntity::Make(AudioEntity::MakeMessage *creation_message) +{ + return new AudioEntity(creation_message); +} + +// +//############################################################################# +//############################################################################# +// +void + AudioEntity::AudioEntitySimulation(Scalar time_slice) +{ + Check(this); + + // + // Get the parent entity, if it does not exist, condemn to death row + // + Entity *parent_entity; + + if ((parent_entity = parentEntitySocket.GetCurrent()) == NULL) + { + CondemnToDeathRow(); + return; + } + + // + // Get the orign of the parent entities segment + // + JointedMover *jointed_mover; + + Verify(parent_entity->IsDerivedFrom(JointedMover::ClassDerivations)); + jointed_mover = Cast_Object(JointedMover*, parent_entity); + Check(jointed_mover); + Check(parentEntitySegment); + jointed_mover->GetSegmentToWorld( + *parentEntitySegment, + &localToWorld + ); + + // + // Set the origin of this entity + // + localOrigin = localToWorld; + updateOrigin = localOrigin; + + // + // Call inherited simulation + // + Explosion::ExplosionSimulation(time_slice); +} + +//############################################################################# +//##################### AudioEntity__MakeMessage ######################## +//############################################################################# + +AudioEntity__MakeMessage::AudioEntity__MakeMessage( + ResourceDescription::ResourceID resource_ID, + Entity *parent_entity, + EntitySegment *parent_entity_segment +): + Explosion::MakeMessage( + AudioEntity::MakeMessageID, + sizeof(AudioEntity__MakeMessage), + RegisteredClass::AudioEntityClassID, + EntityID::Null, + resource_ID, + Entity::HermitInstance|Entity::DynamicFlag, + parent_entity->localOrigin, + parent_entity->GetEntityID(), + EntityID::Null + ), + parentEntityID(parent_entity->GetEntityID()), + parentEntitySegment(parent_entity_segment) +{ +} + diff --git a/CODE/RP/MUNGA/AUDENT.HPP b/CODE/RP/MUNGA/AUDENT.HPP new file mode 100644 index 0000000..0ac2788 --- /dev/null +++ b/CODE/RP/MUNGA/AUDENT.HPP @@ -0,0 +1,118 @@ +//===========================================================================// +// File: audent.hpp // +// Project: MUNGA Brick: Model Manager // +// Contents: Interface specification for audio entity class // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 12/20/95 ECH Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(AUDENT_HPP) +# define AUDENT_HPP + +# if !defined(EXPLODE_HPP) +# include +# endif + +# if !defined(SEGMENT_HPP) +# include +# endif + +# if !defined(SLOT_HPP) +# include +# endif + + //########################################################################## + //########################## AudioEntity ############################# + //########################################################################## + + class AudioEntity__MakeMessage; + + class AudioEntity: + public Explosion + { + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Public types + // + public: + typedef AudioEntity__MakeMessage + MakeMessage; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Construction and Destruction + // + public: + AudioEntity( + MakeMessage *creation_message, + SharedData &shared_data = DefaultData + ); + ~AudioEntity(); + + static AudioEntity* + Make(MakeMessage *creation_message); + + Logical + TestInstance() const; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Model Support + // + public: + typedef void + (AudioEntity::*Performance)(Scalar time_slice); + + void + SetPerformance(Performance performance) + { + Check(this); + activePerformance = (Simulation::Performance)performance; + } + + void + AudioEntitySimulation(Scalar time_slice); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Shared Data support + // + public: + static Derivation + ClassDerivations; + static SharedData + DefaultData; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Private Data + // + private: + SlotOf + parentEntitySocket; + EntitySegment + *parentEntitySegment; + }; + + //########################################################################## + //#################### AudioEntity__MakeMessage ###################### + //########################################################################## + + class AudioEntity__MakeMessage: + public Explosion::MakeMessage + { + public: + AudioEntity__MakeMessage( + ResourceDescription::ResourceID resource_ID, + Entity *parent_entity, + EntitySegment *parent_entity_segment + ); + + EntityID + parentEntityID; + EntitySegment + *parentEntitySegment; + }; + +#endif diff --git a/CODE/RP/MUNGA/AUDIO.CPP b/CODE/RP/MUNGA/AUDIO.CPP new file mode 100644 index 0000000..ce5dc75 --- /dev/null +++ b/CODE/RP/MUNGA/AUDIO.CPP @@ -0,0 +1,488 @@ +//===========================================================================// +// File: audio.hh // +// Project: MUNGA Brick: Audio manager // +// Contents: // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 01/30/95 ECH Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(AUDIO_HPP) +# include +#endif + +#if !defined(AUDREND_HPP) +# include +#endif + +#if !defined(APP_HPP) + #include +#endif + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Audio Constants ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +const Scalar AudioDoubleTriggerCutoff = 0.2f; + +const AudioControlValue MaxAudioVolume = 1.0f; +const AudioControlValue MinAudioVolume = 0.0f; +const AudioControlValue LowAudioVolumeThreshold = 0.3f; + +const AudioControlValue MaxAudioBrightness = 1.0f; +const AudioControlValue MinAudioBrightness = 0.0f; + +const AudioControlValue MaxAudioAttack = 1.0f; +const AudioControlValue MinAudioAttack = 0.0f; + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ AudioHead ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +// +//############################################################################# +//############################################################################# +// +AudioHead::AudioHead(): + headEntitySocket(NULL) +{ + // + // Start frame counter at 0, other counts should be at + // NullAudioFrameCount + // + audioFrameCount = 0; + + // + // Other audio parameters + // + clippingRadius = 100.0f; + distanceBetweenEars = 1.0f; + amplitudeRollOffExponent = 1.0f; + amplitudeRollOffKnee = 10.0f, + amplitudeRollOffDistanceScale = 0.05f; + highFrequencyRollOffExponent = 0.5f; + highFrequencyRollOffKnee = 10.0f; + highFrequencyRollOffDistanceScale = 0.05f; + reverbToDryRatio = 0.1f; + audioSoundSpeed = 345.0f; + audioDopplerConstant = 20.0f; + sourceCompressionExponent = 0.5f; + sourceCompressionScale = 0.5f; + Check_Fpu(); +} + +// +//############################################################################# +//############################################################################# +// +AudioHead::~AudioHead() +{ + Check(this); + Check_Fpu(); +} + +// +//############################################################################# +//############################################################################# +// +Logical + AudioHead::TestInstance() const +{ + Check(&headEntitySocket); + return True; +} + +// +//############################################################################# +//############################################################################# +// +void + AudioHead::LinkToEntity(Entity *entity) +{ + Check(this); + Check(entity); + + // + // Remove existing entity, add new one + // + if (headEntitySocket.GetCurrent() != NULL) + { + headEntitySocket.Remove(); + } + headEntitySocket.Add(entity); + + #if 0 + // + // Make the new clipping sphere + // + clippingSphere.SetCurrentOrigin(entity->localOrigin.linearPosition); + #endif +} + +// +//############################################################################# +//############################################################################# +// +LinearMatrix + AudioHead::GetEarToWorld() +{ + Check(this); + + Entity *entity = headEntitySocket.GetCurrent(); + Check(entity); + return entity->localToWorld; +} + +// +//############################################################################# +//############################################################################# +// +void + AudioHead::Execute() +{ + Check(this); + + // + // Increment frame counter + // + audioFrameCount++; + Verify(audioFrameCount < LONG_MAX); + + #if 0 + // + // Get the entity + // + Entity *entity = headEntitySocket.GetCurrent(); + Check(entity); + + // + // Make the new clipping sphere + // + clippingSphere.SetCurrentOrigin(entity->localOrigin.linearPosition); + #endif +} + +// +//############################################################################# +//############################################################################# +// +void + AudioHead::DefineClippingSphere(Scalar radius) +{ + Check(this); + + clippingRadius = radius; + + #if 0 + // + // Get entity position + // + Entity *entity; + Point3D position(0.0f, 0.0f, 0.0f); + + if ((entity = headEntitySocket.GetCurrent()) != NULL) + { + Check(entity); + position = entity->localOrigin.linearPosition; + } + + // + // Make the new clipping sphere + // + clippingSphere.SetCurrentOrigin(position); + clippingSphere.SetReferenceRadius(radius); + #endif +} + +// +//############################################################################# +//############################################################################# +// +Logical + AudioHead::IsPointClipped(const Point3D &point) +{ + Check(this); + + Entity + *entity; + Vector3D + difference; + + entity = headEntitySocket.GetCurrent(); + Check(entity); + difference.Subtract(entity->localOrigin.linearPosition, point); + return difference.LengthSquared() > clippingRadius*clippingRadius; +} + +// +//############################################################################# +//############################################################################# +// +void + AudioHead::ControlDopplerEffect( + Scalar doppler_constant, + Scalar sound_speed + ) +{ + Check(this); + audioDopplerConstant = doppler_constant; + audioSoundSpeed = sound_speed; + Check_Fpu(); +} + +// +//############################################################################# +//############################################################################# +// +void + AudioHead::ControlAmplitudeRollOff( + Scalar exponent, + Scalar amplitude_rolloff_knee, + Scalar distance_scale + ) +{ + Check(this); + amplitudeRollOffExponent = exponent; + amplitudeRollOffKnee = amplitude_rolloff_knee; + amplitudeRollOffDistanceScale = distance_scale; + Check_Fpu(); +} + +// +//############################################################################# +//############################################################################# +// +void + AudioHead::ControlHighFrequencyRollOff( + Scalar exponent, + Scalar high_frequency_rolloff_knee, + Scalar distance_scale + ) +{ + Check(this); + highFrequencyRollOffExponent = exponent; + highFrequencyRollOffKnee = high_frequency_rolloff_knee; + highFrequencyRollOffDistanceScale = distance_scale; + Check_Fpu(); +} + +// +//############################################################################# +//############################################################################# +// +void + AudioHead::ControlSourceCompression( + Scalar exponent, + Scalar scale + ) +{ + Check(this); + sourceCompressionExponent = exponent; + sourceCompressionScale = scale; + Check_Fpu(); +} + +// +//############################################################################# +//############################################################################# +// +void + AudioHead::SetPositionalCulling(Logical) +{ + Check(this); + Check_Fpu(); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ AudioComponent ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +// +//############################################################################# +//############################################################################# +// +const Receiver::HandlerEntry + AudioComponent::MessageHandlerEntries[]= +{ + { + AudioComponent::ReceiveControlMessageID, + "ReceiveControl", + (AudioComponent::Handler)&AudioComponent::ReceiveControlMessageHandler + } +}; + +AudioComponent::MessageHandlerSet + AudioComponent::MessageHandlers( + ELEMENTS(AudioComponent::MessageHandlerEntries), + AudioComponent::MessageHandlerEntries, + Component::MessageHandlers + ); + +// +//############################################################################# +//############################################################################# +// +Derivation + AudioComponent::ClassDerivations( + Component::ClassDerivations, + "AudioComponent" + ); + +AudioComponent::SharedData + AudioComponent::DefaultData( + AudioComponent::ClassDerivations, + AudioComponent::MessageHandlers + ); + +// +//############################################################################# +//############################################################################# +// +AudioComponent::AudioComponent( + PlugStream *stream, + SharedData &shared_data +): + Component(stream, shared_data), + audioWatcherSocket(NULL) +{ + nextExecuteWatcherFrame = NullAudioFrameCount; +} + +// +//############################################################################# +//############################################################################# +// +AudioComponent::~AudioComponent() +{ +} + +// +//############################################################################# +//############################################################################# +// +Logical + AudioComponent::TestInstance() const +{ + if (!IsDerivedFrom(ClassDerivations)) + { + return False; + } + Check(&audioWatcherSocket); + return True; +} + +// +//############################################################################# +//############################################################################# +// +void + AudioComponent::ExecuteWatchers() +{ + Check(this); + + // + // Execute watchers if this is the next watcher frame + // + AudioFrameCount + audio_frame_count; + + Check(application); + Check(application->GetAudioRenderer()); + audio_frame_count = application->GetAudioRenderer()->GetAudioFrameCount(); + if (nextExecuteWatcherFrame <= audio_frame_count) + { + nextExecuteWatcherFrame = audio_frame_count + DefaultAudioFrameDelay; + + // + // Execute watchers + // + ChainIteratorOf + iterator(&audioWatcherSocket); + Component + *component; + + while ((component = iterator.ReadAndNext()) != NULL) + { + Check(component); + component->Execute(); + } + } +} + +// +//############################################################################# +//############################################################################# +// +void + AudioComponent::Execute() +{ + Check(this); + ExecuteWatchers(); + Check_Fpu(); +} + +// +//############################################################################# +//############################################################################# +// +void + AudioComponent::ReceiveControl( + AudioControlID, + AudioControlValue + ) +{ + Fail("AudioComponent::ReceiveControl - Should never reach here"); +} + +// +//############################################################################# +//############################################################################# +// +void + AudioComponent::PostReceiveControl( + AudioControlID control_ID, + AudioControlValue control_value + ) +{ + Check(this); + + ReceiveControlMessage + message(control_ID, control_value); + + Check(application); + // ECH 1/26/96 - application->Post(HighEventPriority, this, &message); + application->Post(DefaultEventPriority, this, &message); + Check_Fpu(); +} + +// +//############################################################################# +//############################################################################# +// +void + AudioComponent::ReceiveControlMessageHandler(ReceiveControlMessage *message) +{ + Check(this); + Check(message); + ReceiveControl(message->controlID, message->controlValue); + Check_Fpu(); +} + +//~~~~~~~~~~~~~~~~~~ AudioComponent__ReceiveControlMessage ~~~~~~~~~~~~~~~~~~~~ + + +AudioComponent__ReceiveControlMessage::AudioComponent__ReceiveControlMessage( + AudioControlID control_ID, + AudioControlValue control_value +): + Receiver::Message( + AudioComponent::ReceiveControlMessageID, + sizeof(AudioComponent__ReceiveControlMessage) + ) +{ + controlID = control_ID; + controlValue = control_value; +} + diff --git a/CODE/RP/MUNGA/AUDIO.HPP b/CODE/RP/MUNGA/AUDIO.HPP new file mode 100644 index 0000000..062ac5c --- /dev/null +++ b/CODE/RP/MUNGA/AUDIO.HPP @@ -0,0 +1,687 @@ +//===========================================================================// +// File: audio.hpp // +// Project: MUNGA Brick: Audio manager // +// Contents: // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 01/30/95 ECH Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(AUDIO_HPP) +# define AUDIO_HPP + +# if !defined(STYLE_HPP) +# include +# endif + +# if !defined(ENTITY_HPP) +# include +# endif + +# if !defined(SPHERE_HPP) +# include +# endif + +# if !defined(SLOT_HPP) +# include +# endif + +# if !defined(TABLE_HPP) +# include +# endif + + class PlugStream; + + // + //-------------------------------------------------------------------------- + // Support types + //-------------------------------------------------------------------------- + // + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Time types ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + typedef long AudioTick; + typedef long AudioDivisionsPerBeat; + typedef long AudioTempo; + + typedef long AudioFrameCount; + const AudioFrameCount NullAudioFrameCount = -1; + const AudioFrameCount DefaultAudioFrameDelay = 2; + + extern const Scalar AudioDoubleTriggerCutoff; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Resource types ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + typedef int AudioResourceID; + typedef int AudioVoiceCount; + typedef Scalar AudioRadiationProfile; + typedef Scalar AudioPitchCents; + + enum AudioRenderType + { + TransientAudioRenderType = 0, + SustainedAudioRenderType = 1 + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Source types ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + enum AudioRepresentation + { + InternalAudioRepresentation = 0, + ExternalAudioRepresentation = 1 + }; + + #define AUDIO_SOURCE_PRIORITY_COUNT (5) + enum AudioSourcePriority + { + MinAudioSourcePriority = 0, + LowAudioSourcePriority = 1, + MedAudioSourcePriority = 2, + HighAudioSourcePriority = 3, + MaxAudioSourcePriority = 4 + }; + + enum AudioSourceState + { + StoppedAudioSourceState = 0, + DormantAudioSourceState = 1, + RunningAudioSourceState = 2, + SuspendedAudioSourceState = 3 + }; + + enum AudioSourceMixPresence + { + ManualAudioSourceMixPresence = 0, + MaxAudioSourceMixPresence = 1, + HighAudioSourceMixPresence = 2, + MedAudioSourceMixPresence = 3, + LowAudioSourceMixPresence = 4, + MinAudioSourceMixPresence = 5 + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Control types ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + enum AudioControlID + { + NullAudioControlID = 0, + StartAudioControlID, + StopAudioControlID, + VolumeAudioControlID, + PitchAudioControlID, + BrightnessAudioControlID, + AttackVolumeAudioControlID, + AttackTimeAudioControlID, + NoteAudioControlID, + IdleAudioControlID, + DurationAudioControlID, + FlushMessagesAudioControlID, + TempoAudioControlID, + AudioControlIDCount + }; + + typedef Scalar AudioControlValue; + + extern const AudioControlValue MaxAudioVolume; + extern const AudioControlValue MinAudioVolume; + extern const AudioControlValue LowAudioVolumeThreshold; + + extern const AudioControlValue MaxAudioBrightness; + extern const AudioControlValue MinAudioBrightness; + + extern const AudioControlValue MaxAudioAttack; + extern const AudioControlValue MinAudioAttack; + + #if 0 + //~~~~~~~~~~~~~~~~~~~~~~~~~~~ AudioClippingSphere ~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class AudioClippingSphere SIGNATURED + { + public: + AudioClippingSphere(); + ~AudioClippingSphere(); + + void + SetReferenceRadius(Scalar radius); + void + SetCurrentOrigin(const Point3D &origin); + void + SetCurrentScale(Scalar scale); + Logical + Contains(const Point3D &point) const; + + private: + Scalar + referenceRadius; + Sphere + currentSphere; + }; + + //~~~~~~~~~~~~~~~~~~~~~~~ AudioClippingSphere inlines ~~~~~~~~~~~~~~~~~~~~~~ + + inline AudioClippingSphere::AudioClippingSphere(): + referenceRadius(100.0f), + currentSphere(0.0f, 0.0f, 0.0f, 100.0f) + { + } + + inline AudioClippingSphere::~AudioClippingSphere() + { + } + + inline void + AudioClippingSphere::SetReferenceRadius(Scalar radius) + { + Check(this); + referenceRadius = radius; + currentSphere.radius = radius; + } + + inline void + AudioClippingSphere::SetCurrentOrigin(const Point3D &origin) + { + Check(this); + currentSphere.center = origin; + } + + inline void + AudioClippingSphere::SetCurrentScale(Scalar scale) + { + Check(this); + currentSphere.radius = scale * referenceRadius; + } + + inline Logical + AudioClippingSphere::Contains(const Point3D &point) const + { + Check(this); + return currentSphere.Contains(point); + } + #endif + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ AudioHead ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class AudioSource; + + class AudioHead SIGNATURED + { + public: + // + //----------------------------------------------------------------------- + // Construction, Destruction, Testing + //----------------------------------------------------------------------- + // + AudioHead(); + ~AudioHead(); + + Logical + TestInstance() const; + + // + //----------------------------------------------------------------------- + // Get current frame of audio simulation + //----------------------------------------------------------------------- + // + AudioFrameCount + GetAudioFrameCount() + {return audioFrameCount;} + + // + //----------------------------------------------------------------------- + // Sets the location and orientation of the head + //----------------------------------------------------------------------- + // + virtual void + LinkToEntity(Entity *entity); + Entity* + GetHeadEntity(); + + // + //----------------------------------------------------------------------- + // Get the ear to world linear matrix + //----------------------------------------------------------------------- + // + virtual LinearMatrix + GetEarToWorld(); + + // + //----------------------------------------------------------------------- + // Execute + //----------------------------------------------------------------------- + // + virtual void + Execute(); + + // + //----------------------------------------------------------------------- + // Sets the distance between ears. Expressed in meters. + //----------------------------------------------------------------------- + // + void + SetDistanceBetweenEars(Scalar distance) + {distanceBetweenEars = distance;} + Scalar + GetDistanceBetweenEars() + {return distanceBetweenEars;} + + // + //----------------------------------------------------------------------- + // Controls Doppler effects + //----------------------------------------------------------------------- + // + void + ControlDopplerEffect( + Scalar doppler_constant, + Scalar sound_speed + ); + Scalar + GetAudioSoundSpeed() + {return audioSoundSpeed;} + AudioPitchCents + GetAudioDopplerConstant() + {return audioDopplerConstant;} + + // + //----------------------------------------------------------------------- + // Reverb scaling + //----------------------------------------------------------------------- + // + void + SetReverbToDryRatio(Scalar ratio) + {reverbToDryRatio = ratio;} + Scalar + GetReverbToDryRatio() + {return reverbToDryRatio;} + + // HACK + void + SetGlobalReverbScale(Scalar global_reverb_scale) + {globalReverbScale = global_reverb_scale;} + Scalar + GetGlobalReverbScale() + {return globalReverbScale;} + + // + //----------------------------------------------------------------------- + // Controls the attenuation of an audio source with respect to its + // distance from the head. + //----------------------------------------------------------------------- + // + void + ControlAmplitudeRollOff( + Scalar exponent, + Scalar amplitude_rolloff_knee, + Scalar distance_scale + ); + Scalar + GetAmplitudeRollOffExponent() + {return amplitudeRollOffExponent;} + Scalar + GetAmplitudeRollOffKnee() + {return amplitudeRollOffKnee;} + Scalar + GetAmplitudeRollOffDistanceScale() + {return amplitudeRollOffDistanceScale;} + + // + //----------------------------------------------------------------------- + // Controls the attenuation of the high frequencies + // of an audio source with respect to its distance from + // the head. + //----------------------------------------------------------------------- + // + void + ControlHighFrequencyRollOff( + Scalar exponent, + Scalar high_frequency_rolloff_knee, + Scalar distance_scale + ); + Scalar + GetHighFrequencyRollOffExponent() + {return highFrequencyRollOffExponent;} + Scalar + GetHighFrequencyRollOffKnee() + {return highFrequencyRollOffKnee;} + Scalar + GetHighFrequencyRollOffDistanceScale() + {return highFrequencyRollOffDistanceScale;} + + // + //----------------------------------------------------------------------- + // Controls source compression + //----------------------------------------------------------------------- + // + void + ControlSourceCompression( + Scalar exponent, + Scalar scale + ); + Scalar + GetSourceCompressionExponent() + {return sourceCompressionExponent;} + Scalar + GetSourceCompressionScale() + {return sourceCompressionScale;} + + // + //----------------------------------------------------------------------- + // Defines the audio clipping sphere + //----------------------------------------------------------------------- + // + void + DefineClippingSphere(Scalar radius); + Logical + IsPointClipped(const Point3D &point); + Scalar + GetClippingRadius() + {return clippingRadius;} + + // + //----------------------------------------------------------------------- + // ITD Difference + //----------------------------------------------------------------------- + // + void + SetITDDifference(Scalar itd_difference) + {itdDifference = itd_difference;} + Scalar + GetITDDifference() + {return itdDifference;} + + // + //----------------------------------------------------------------------- + // The SetPositionalCulling method allows the rendering process to + // not play audio locations whose positions are masked by other + // audio sources. This has found to be useful for controlling + // audio when resources are limited, but must be + // selectable globally or on a per audio effect basis. + //----------------------------------------------------------------------- + // + void + SetPositionalCulling(Logical turn_on); + + private: + // + //----------------------------------------------------------------------- + // Private data + //----------------------------------------------------------------------- + // + AudioFrameCount + audioFrameCount; + SlotOf + headEntitySocket; + + Scalar + clippingRadius; + Scalar + distanceBetweenEars; + Scalar + amplitudeRollOffExponent, + amplitudeRollOffKnee, + amplitudeRollOffDistanceScale; + Scalar + highFrequencyRollOffExponent, + highFrequencyRollOffKnee, + highFrequencyRollOffDistanceScale; + Scalar + reverbToDryRatio; + Scalar + audioSoundSpeed; + Scalar + audioDopplerConstant; + Scalar + sourceCompressionExponent, + sourceCompressionScale; + Scalar + itdDifference; + Scalar + globalReverbScale; + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ AudioHead inlines ~~~~~~~~~~~~~~~~~~~~~~~~~ + + inline Entity* + AudioHead::GetHeadEntity() + { + Check(this); + return headEntitySocket.GetCurrent(); + } + + //########################################################################## + //######################### AudioComponent ########################### + //########################################################################## + + class AudioComponent__ReceiveControlMessage; + + class AudioComponent: + public Component + { + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Construction, Destruction, Testing + // + public: + AudioComponent( + PlugStream *stream, + SharedData &shared_data = DefaultData + ); + ~AudioComponent(); + + Logical + TestInstance() const; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Audio Component Methods + // + public: + void + AddWatcher(Component *component); + + void + ExecuteWatchers(); + + void + Execute(); + + virtual void + ReceiveControl( + AudioControlID control_ID, + AudioControlValue control_value + ); + + void + PostReceiveControl( + AudioControlID control_ID, + AudioControlValue control_value + ); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Message Support + // + public: + enum { + ReceiveControlMessageID = Component::NextMessageID, + NextMessageID + }; + + typedef AudioComponent__ReceiveControlMessage + ReceiveControlMessage; + + static const HandlerEntry + MessageHandlerEntries[]; + static MessageHandlerSet + MessageHandlers; + + void + ReceiveControlMessageHandler( + ReceiveControlMessage *message + ); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Shared Data Support + // + public: + static Derivation + ClassDerivations; + static SharedData + DefaultData; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Private Data + // + private: + AudioFrameCount + nextExecuteWatcherFrame; + ChainOf + audioWatcherSocket; + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~ AudioComponent inlines ~~~~~~~~~~~~~~~~~~~~~~~~ + + inline void + AudioComponent::AddWatcher(Component *component) + { + Check(component); + Check(&audioWatcherSocket); + audioWatcherSocket.Add(component); + } + + //~~~~~~~~~~~~~~~~~~ AudioComponent__ReceiveControlMessage ~~~~~~~~~~~~~~~~~ + + class AudioComponent__ReceiveControlMessage: + public Receiver::Message + { + friend class AudioComponent; + + public: + AudioComponent__ReceiveControlMessage( + AudioControlID control_ID, + AudioControlValue control_value + ); + + private: + AudioControlID + controlID; + AudioControlValue + controlValue; + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~ Resource type inlines ~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + inline MemoryStream& + MemoryStream_Read( + MemoryStream* stream, + AudioRenderType *output + ) + { + return stream->ReadBytes(output, sizeof(*output)); + } + + inline MemoryStream& + MemoryStream_Write( + MemoryStream* stream, + const AudioRenderType *input + ) + { + return stream->WriteBytes(input, sizeof(*input)); + } + + inline MemoryStream& + MemoryStream_Read( + MemoryStream* stream, + AudioRepresentation *output + ) + { + return stream->ReadBytes(output, sizeof(*output)); + } + + inline MemoryStream& + MemoryStream_Write( + MemoryStream* stream, + const AudioRepresentation *input + ) + { + return stream->WriteBytes(input, sizeof(*input)); + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~ Source type inlines ~~~~~~~~~~~~~~~~~~~~~~~~~~ + + inline MemoryStream& + MemoryStream_Read( + MemoryStream* stream, + AudioSourceState *output + ) + { + return stream->ReadBytes(output, sizeof(*output)); + } + + inline MemoryStream& + MemoryStream_Write( + MemoryStream* stream, + const AudioSourceState *input + ) + { + return stream->WriteBytes(input, sizeof(*input)); + } + + inline MemoryStream& + MemoryStream_Read( + MemoryStream* stream, + AudioSourcePriority *output + ) + { + return stream->ReadBytes(output, sizeof(*output)); + } + + inline MemoryStream& + MemoryStream_Write( + MemoryStream* stream, + const AudioSourcePriority *input + ) + { + return stream->WriteBytes(input, sizeof(*input)); + } + + inline MemoryStream& + MemoryStream_Read( + MemoryStream* stream, + AudioSourceMixPresence *output + ) + { + return stream->ReadBytes(output, sizeof(*output)); + } + + inline MemoryStream& + MemoryStream_Write( + MemoryStream* stream, + const AudioSourceMixPresence *input + ) + { + return stream->WriteBytes(input, sizeof(*input)); + } + + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~ Control type inlines ~~~~~~~~~~~~~~~~~~~~~~~~~ + + inline MemoryStream& + MemoryStream_Read( + MemoryStream* stream, + AudioControlID *output + ) + { + return stream->ReadBytes(output, sizeof(*output)); + } + + inline MemoryStream& + MemoryStream_Write( + MemoryStream* stream, + const AudioControlID *input + ) + { + return stream->WriteBytes(input, sizeof(*input)); + } + +#endif diff --git a/CODE/RP/MUNGA/AUDLOC.CPP b/CODE/RP/MUNGA/AUDLOC.CPP new file mode 100644 index 0000000..b70b1b7 --- /dev/null +++ b/CODE/RP/MUNGA/AUDLOC.CPP @@ -0,0 +1,531 @@ +//===========================================================================// +// File: audloc.cpp // +// Project: MUNGA Brick: Audio manager // +// Contents: // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 01/30/95 ECH Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(AUDLOC_HPP) +# include +#endif + +#if !defined(OBJSTRM_HPP) + #include +#endif + +#if !defined(NAMELIST_HPP) + #include +#endif + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ AudioLocation ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +// +//############################################################################# +//############################################################################# +// +AudioLocation::AudioLocation( + PlugStream *stream, + Entity *entity +): + AudioComponent(stream), + vectorToSource(0.0f, 0.0f, 0.0f), + locationOffset(0.0f, 0.0f, 0.0f) +{ + AudioFrameCount next_update_delay; + Scalar clipping_scale; + + MemoryStream_Read(stream, &locationOffset); + MemoryStream_Read(stream, &next_update_delay); + MemoryStream_Read(stream, &clipping_scale); + + AudioLocationX(entity, next_update_delay, clipping_scale); +} + +// +//############################################################################# +//############################################################################# +// +AudioLocation::~AudioLocation() +{ +} + +// +//############################################################################# +//############################################################################# +// +void + AudioLocation::AudioLocationX( + Entity *entity, + AudioFrameCount next_update_delay, + Scalar clipping_scale + ) +{ + Check(entity); + linkedEntity = entity; + entity->AddAudioComponent(this); + + clippingScale = clipping_scale; + isHeadSource = False; + distanceToSource = 1.0f; + dopplerCents = 0; + #if 0 + angleOffOrientation = 0.0f; + #endif + azimuthOfSource = 0.0f; + distanceVolumeScale = 1.0f; + highFreqCutoffScale = 1.0f; + #if 0 + reverbVolumeScale = 0.0f; + #endif + nextUpdateDelay = next_update_delay; + nextUpdateFrame = NullAudioFrameCount; +} + +// +//############################################################################# +//############################################################################# +// +Logical + AudioLocation::TestInstance() const +{ + Component::TestInstance(); + return True; +} + +// +//############################################################################# +//############################################################################# +// +void + AudioLocation::BuildFromPage( + PlugStream *stream, + NameList *name_list, + ClassID class_ID, + ObjectID object_ID + ) +{ + AudioComponent::BuildFromPage(stream, name_list, class_ID, object_ID); + + MEM_STRM_WRITE_ENTRY(*stream, name_list, Point3D, location_offset); + + // + // Read update delay + // + CString update_delay_string("update_delay"); + AudioFrameCount update_delay = DefaultAudioFrameDelay; + + if (name_list->FindData(update_delay_string) != NULL) + { + Check_Pointer(name_list->FindData(update_delay_string)); + Convert_From_Ascii( + (const char *)name_list->FindData(update_delay_string), + &update_delay + ); + } + MemoryStream_Write(stream, &update_delay); + + // + // Read culling scale + // + CString clipping_scale_string("clipping_scale"); + Scalar clipping_scale = 1.0f; + + if (name_list->FindData(clipping_scale_string) != NULL) + { + Check_Pointer(name_list->FindData(clipping_scale_string)); + Convert_From_Ascii( + (const char *)name_list->FindData(clipping_scale_string), + &clipping_scale + ); + } + MemoryStream_Write(stream, &clipping_scale); +} + +// +//############################################################################# +//############################################################################# +// +void + AudioLocation::ReceiveControl( + AudioControlID, + AudioControlValue + ) +{ +} + +// +//############################################################################# +//############################################################################# +// +Logical + AudioLocation::IsAudioLocationClipped(AudioHead *audio_head) +{ + Check(this); + Check(audio_head); + + // + // HACK - This is a rough approximation in that it does not + // take into account the offset of the location from the + // center of the entity. But, this is more efficient and is OK + // as long as the clipping sphere does not exclude the location + // unnaturally + // + Entity + *head_entity; + Vector3D + difference; + Scalar + scaled_radius; + + head_entity = audio_head->GetHeadEntity(); + Check(head_entity); + Check(linkedEntity); + difference.Subtract( + head_entity->localOrigin.linearPosition, + linkedEntity->localOrigin.linearPosition + ); + scaled_radius = audio_head->GetClippingRadius() * clippingScale; + return difference.LengthSquared() > scaled_radius * scaled_radius; +} + +// +//############################################################################# +//############################################################################# +// +void + AudioLocation::UpdateSpatialModelImplementation(AudioHead *audio_head) +{ + Check(this); + Check(audio_head); + + // + //-------------------------------------------------------------------------- + // Get head and source entity + //-------------------------------------------------------------------------- + // + Entity *source_entity = GetLinkedEntity(); + Entity *head_entity = audio_head->GetHeadEntity(); + + Check(source_entity); + Check(head_entity); + + // + //-------------------------------------------------------------------------- + // Catch case of head == source at origin + //-------------------------------------------------------------------------- + // + if ( + head_entity == source_entity && + locationOffset == Vector3D::Identity + ) + { + isHeadSource = True; + vectorToSource = Vector3D::Identity; + distanceToSource = 0.0f; + dopplerCents = 0; + #if 0 + angleOffOrientation = 0.0f; + #endif + azimuthOfSource = 0.0f; + distanceVolumeScale = 1.0f; + highFreqCutoffScale = 1.0f; + #if 0 + reverbVolumeScale = audio_head->GetReverbToDryRatio(); + #endif + return; + } + isHeadSource = False; + + // + //-------------------------------------------------------------------------- + // Get the ear to world linear matrix + //-------------------------------------------------------------------------- + // + LinearMatrix ear_to_world = audio_head->GetEarToWorld(); + + // + //-------------------------------------------------------------------------- + // Calculate vector to source with respect to local coordinate system + // of the ears + //-------------------------------------------------------------------------- + // + { + // + // Get the source location offset from the entity position in + // world coordinates + // + Vector3D world_location_offset; + Vector3D world_source_location; + + world_location_offset.Multiply( + locationOffset, + source_entity->localToWorld + ); + Check(&world_location_offset); + + world_source_location.Add( + source_entity->localOrigin.linearPosition, + world_location_offset + ); + Check(&world_source_location); + + // + // Get the vector from the ear to the source, note that the vector + // is not calculated by the ears offset but from the entities location + // + Vector3D world_ear_to_source_vector; + + world_ear_to_source_vector.Subtract( + world_source_location, + head_entity->localOrigin.linearPosition + ); + Check(&world_ear_to_source_vector); + + // + // Transform the vector into ear coordinates + // + vectorToSource.MultiplyByInverse( + world_ear_to_source_vector, + ear_to_world + ); + Check(&vectorToSource); + } + + // + //-------------------------------------------------------------------------- + // Calculate distance to source + //-------------------------------------------------------------------------- + // + distanceToSource = vectorToSource.Length(); + + // + //-------------------------------------------------------------------------- + // Calculate normal to source + //-------------------------------------------------------------------------- + // + Vector3D normal_to_source(0.0f, 0.0f, -1.0f); + + if (!Small_Enough(distanceToSource)) + { + normal_to_source.Normalize(vectorToSource); + Check(&normal_to_source); + } + + #if 0 + // + //-------------------------------------------------------------------------- + // Calculate angle between the orientation of the head and source + //-------------------------------------------------------------------------- + // + if (Small_Enough(distanceToSource)) + { + angleOffOrientation = 0.0f; + } + else + { + UnitVector direction; + Scalar cosine; + + ear_to_world.GetToAxis(Z_Axis, &direction); + Check(&direction); + + Check(&normal_to_source); + cosine = normal_to_source * direction; + Clamp(cosine, -1.0f, 1.0f); + angleOffOrientation = Arccos(cosine); + angleOffOrientation.Normalize(); + } + Verify( + angleOffOrientation <= 180.0f*RAD_PER_DEG && + angleOffOrientation >= -180.0f*RAD_PER_DEG + ); + #endif + + // + //-------------------------------------------------------------------------- + // Calculate azimuth + //-------------------------------------------------------------------------- + // + if (Small_Enough(vectorToSource.x) && Small_Enough(vectorToSource.z)) + { + azimuthOfSource = 0.0f; + } + else + { + Verify(!(Small_Enough(vectorToSource.x) && Small_Enough(vectorToSource.z))); + azimuthOfSource = Arctan(vectorToSource.x, vectorToSource.z); + } + Verify( + azimuthOfSource <= 180.0f*RAD_PER_DEG && + azimuthOfSource >= -180.0f*RAD_PER_DEG + ); + + // + //-------------------------------------------------------------------------- + // Calculate distance volume scaling + // Apply clipping scale to rolloff distance scale, thereby giving this + // audio location a specifc rolloff characteristic + //-------------------------------------------------------------------------- + // + if (distanceToSource > audio_head->GetAmplitudeRollOffKnee()) + { + // + // y = 1 / 1 + (K(x - knee))^exp + // + Verify(!Small_Enough(clippingScale)); + const Scalar temp = + (audio_head->GetAmplitudeRollOffDistanceScale() / clippingScale) * + (distanceToSource - audio_head->GetAmplitudeRollOffKnee()); + const Scalar temp2 = + 1.0f + pow(temp, audio_head->GetAmplitudeRollOffExponent()); + + Verify(!Small_Enough(temp2)); + distanceVolumeScale = 1.0f / temp2; + } + else + { + distanceVolumeScale = 1.0f; + } + Verify(distanceVolumeScale >= 0.0f && distanceVolumeScale <= 1.0f); + + // + //-------------------------------------------------------------------------- + // Calculate high frequency cutoff scaling + // Apply clipping scale to high frequency rolloff distance scale, thereby + // giving this audio location a specifc rolloff characteristic + //-------------------------------------------------------------------------- + // + if (distanceToSource > audio_head->GetHighFrequencyRollOffKnee()) + { + // + // y = 1 / 1 + (K(x - knee))^exp + // + Verify(!Small_Enough(clippingScale)); + const Scalar temp = + (audio_head->GetHighFrequencyRollOffDistanceScale() / clippingScale) * + (distanceToSource - audio_head->GetHighFrequencyRollOffKnee()); + const Scalar temp2 = + 1.0f + pow(temp, audio_head->GetHighFrequencyRollOffExponent()); + + Verify(!Small_Enough(temp2)); + highFreqCutoffScale = 1.0f / temp2; + } + else + { + highFreqCutoffScale = 1.0f; + } + Verify(highFreqCutoffScale >= 0.0f && highFreqCutoffScale <= 1.0f); + + #if 0 + // + //-------------------------------------------------------------------------- + // Calculate reverb volume scaling + //-------------------------------------------------------------------------- + // + if (distanceToSource > audio_head->GetAmplitudeRollOffKnee()) + { + const Scalar temp = + distanceToSource - audio_head->GetAmplitudeRollOffKnee() + 1.0f; + + reverbVolumeScale = + audio_head->GetReverbToDryRatio() * + pow(temp, audio_head->GetAmplitudeRollOffExponent()); + if (reverbVolumeScale > 1.0f) + reverbVolumeScale = 1.0f; + } + else + { + reverbVolumeScale = audio_head->GetReverbToDryRatio(); + } + Verify(reverbVolumeScale >= 0.0f && reverbVolumeScale <= 1.0f); + #endif + + // + //-------------------------------------------------------------------------- + // Calculate relative velocity of source + //-------------------------------------------------------------------------- + // + Vector3D relative_velocity_temp; + Vector3D relative_velocity; + + relative_velocity_temp.Subtract( + source_entity->GetWorldLinearVelocity(), + head_entity->GetWorldLinearVelocity() + ); + Check(&relative_velocity_temp); + + relative_velocity.MultiplyByInverse( + relative_velocity_temp, + head_entity->localToWorld + ); + Check(&relative_velocity); + + // + //-------------------------------------------------------------------------- + // Calculate doppler shift in cents + // cents = (c / (c - v)) / ScaleRatio + //-------------------------------------------------------------------------- + // + if (!Small_Enough(distanceToSource)) + { + AudioPitchCents + cents; + Scalar speed_of_source = + normal_to_source * relative_velocity; + const Scalar ear_radius = + audio_head->GetDistanceBetweenEars() * 0.5f; + + if (distanceToSource < ear_radius) + { + Verify(!Small_Enough(ear_radius)); + speed_of_source *= (distanceToSource / ear_radius); + } + + if (CalculateDoppler(audio_head, speed_of_source, ¢s)) + { + dopplerCents = cents; + } + } + else + { + dopplerCents = 0; + } +} + +// +//############################################################################# +//############################################################################# +// +Logical + AudioLocation::CalculateDoppler( + AudioHead *audio_head, + Scalar speed, + AudioPitchCents *result + ) +{ + Check(this); + Check(audio_head); + Check_Pointer(result); + + Scalar speed_of_sound = audio_head->GetAudioSoundSpeed(); + + Clamp(speed, -speed_of_sound, speed_of_sound); + if (!Small_Enough(speed_of_sound - speed)) + { + *result = audio_head->GetAudioDopplerConstant() * + ( 1 - speed_of_sound / (speed_of_sound - speed) ); + return True; + } + return False; +} + diff --git a/CODE/RP/MUNGA/AUDLOC.HPP b/CODE/RP/MUNGA/AUDLOC.HPP new file mode 100644 index 0000000..020c47e --- /dev/null +++ b/CODE/RP/MUNGA/AUDLOC.HPP @@ -0,0 +1,221 @@ +//===========================================================================// +// File: audloc.hpp // +// Project: MUNGA Brick: Audio manager // +// Contents: // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 01/30/95 ECH Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(AUDLOC_HPP) +# define AUDLOC_HPP + +# if !defined(STYLE_HPP) +# include +# endif + +# if !defined(AUDIO_HPP) +# include +# endif + + //########################################################################## + //######################## AudioLocation ############################# + //########################################################################## + + class AudioLocation: + public AudioComponent + { + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Construction, Destruction, and Testing + // + public: + AudioLocation( + PlugStream *stream, + Entity *entity + ); + void + AudioLocationX( + Entity *entity, + AudioFrameCount next_update_delay, + Scalar clipping_scale + ); + ~AudioLocation(); + + Logical + TestInstance() const; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Resource Building + // + public: + static void + BuildFromPage( + PlugStream *stream, + NameList *name_list, + ClassID class_ID, + ObjectID object_ID + ); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Audio Component Support + // + public: + void + ReceiveControl( + AudioControlID control_ID, + AudioControlValue control_value + ); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Audio Location Support + // + public: + // + //----------------------------------------------------------------------- + // GetLinkedEntity + //----------------------------------------------------------------------- + // + Entity* + GetLinkedEntity(); + + // + //----------------------------------------------------------------------- + // IsAudioLocationClipped + //----------------------------------------------------------------------- + // + Logical + IsAudioLocationClipped(AudioHead *audio_head); + + // + //----------------------------------------------------------------------- + // UpdateSpatialModel + //----------------------------------------------------------------------- + // + void + UpdateSpatialModel(AudioHead *audio_head); + + // + //----------------------------------------------------------------------- + // Access to localization results + //----------------------------------------------------------------------- + // + Logical + IsHeadSource() + {return isHeadSource;} + Scalar + GetDistanceToSource() + {return distanceToSource;} + Scalar + GetDistanceToSourceListenerPlane(); + Radian + GetAzimuthOfSource() + {return azimuthOfSource;} + Scalar + GetDistanceVolumeScale() + {return distanceVolumeScale;} + Scalar + GetHighFreqCutoffScale() + {return highFreqCutoffScale;} + AudioPitchCents + GetDopplerCents() + {return dopplerCents;} + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Protected Implementations + // + protected: + virtual void + UpdateSpatialModelImplementation(AudioHead *audio_head); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Private Methods + // + private: + Logical + CalculateDoppler( + AudioHead *audio_head, + Scalar speed, + AudioPitchCents *result + ); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Private Data + // + private: + Entity + *linkedEntity; + + Point3D + locationOffset; + Scalar + clippingScale; + + Logical + isHeadSource; + Vector3D + vectorToSource; + Scalar + distanceToSource; + #if 0 + Radian + angleOffOrientation; + #endif + Radian + azimuthOfSource; + Scalar + distanceVolumeScale; + Scalar + highFreqCutoffScale; + #if 0 + Scalar + reverbVolumeScale; + #endif + AudioPitchCents + dopplerCents; + + AudioFrameCount + nextUpdateDelay; + AudioFrameCount + nextUpdateFrame; + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~ AudioLocation inlines ~~~~~~~~~~~~~~~~~~~~~~~~ + + inline Entity* + AudioLocation::GetLinkedEntity() + { + Check(this); + return linkedEntity; + } + + inline Scalar + AudioLocation::GetDistanceToSourceListenerPlane() + { + Check(this); + Vector3D + vector_to_source_listener_plane( + vectorToSource.x, + 0.0f, + vectorToSource.z + ); + return vector_to_source_listener_plane.Length(); + } + + inline void + AudioLocation::UpdateSpatialModel(AudioHead *audio_head) + { + Check(this); + Check(audio_head); + if (nextUpdateFrame <= audio_head->GetAudioFrameCount()) + { + nextUpdateFrame = audio_head->GetAudioFrameCount() + nextUpdateDelay; + UpdateSpatialModelImplementation(audio_head); + } + } + +#endif diff --git a/CODE/RP/MUNGA/AUDLVL.CPP b/CODE/RP/MUNGA/AUDLVL.CPP new file mode 100644 index 0000000..5a47e1a --- /dev/null +++ b/CODE/RP/MUNGA/AUDLVL.CPP @@ -0,0 +1,480 @@ +//===========================================================================// +// File: audio.hh // +// Project: MUNGA Brick: Audio manager // +// Contents: // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 01/30/95 ECH Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(AUDLVL_HPP) +# include +#endif + +#if !defined(OBJSTRM_HPP) + #include +#endif + +#if !defined(NAMELIST_HPP) + #include +#endif + +#if !defined(APP_HPP) + #include +#endif + +#if !defined(AUDREND_HPP) + #include +#endif + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~ AudioLevelOfDetail ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +// +//############################################################################# +//############################################################################# +// +AudioLevelOfDetail::AudioLevelOfDetail(PlugStream *stream): + Plug(stream) +{ + #if 0 + amplitudeRadiationProfile = 0.0f; + filterRadiationProfile = 0.0f; + #endif + + // + // Read fields + // + MemoryStream_Read(stream, &voiceCount); + MemoryStream_Read(stream, &audioRenderType); + + // + // Read suspend seconds and calculate suspendDelay + // + Scalar + suspend_delay_seconds; + + MemoryStream_Read(stream, &suspend_delay_seconds); + Check(application); + Check(application->GetAudioRenderer()); + suspendDelay = suspend_delay_seconds * + application->GetAudioRenderer()->GetCalibrationRate() + 0.5f; +} + +// +//############################################################################# +//############################################################################# +// +void + AudioLevelOfDetail::BuildFromPage( + PlugStream *stream, + NameList *name_list, + ClassID class_ID, + ObjectID object_ID + ) +{ + Plug::BuildFromPage(stream, name_list, class_ID, object_ID); + + // + // Store fields + // + MEM_STRM_WRITE_ENTRY(*stream, name_list, AudioVoiceCount, voice_count); + MEM_STRM_WRITE_ENTRY(*stream, name_list, Enumeration, render_type); + + // + // Store suspend delay + // + CString suspend_delay_string("suspend_delay"); + Scalar suspend_delay_seconds = 0.33f; // HACK - should come from somewhere else + + if (name_list->FindData(suspend_delay_string) != NULL) + { + Check_Pointer(name_list->FindData(suspend_delay_string)); + Convert_From_Ascii( + (const char *)name_list->FindData(suspend_delay_string), + &suspend_delay_seconds + ); + } + MemoryStream_Write(stream, &suspend_delay_seconds); +} + +// +//############################################################################# +//############################################################################# +// +AudioLevelOfDetail::~AudioLevelOfDetail() +{ +} + +// +//############################################################################# +//############################################################################# +// +Logical + AudioLevelOfDetail::TestInstance() const +{ + Plug::TestInstance(); + return True; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ AudioResource ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +// +//############################################################################# +//############################################################################# +// +AudioResource::AudioResource(PlugStream *stream): + Node(stream), + audioLevelOfDetailSocket(NULL, True) +{ + // + // Read the table + // + CollectionSize i, number_of_entries; + + MemoryStream_Read(stream, &number_of_entries); + for (i = 0; i < number_of_entries; i++) + { + Scalar distance; + AudioLevelOfDetail *audio_level_of_detail; + + MemoryStream_Read(stream, &distance); + PlugStream_ReadObjectIDAndFindPlug(stream, &audio_level_of_detail); + Check(audio_level_of_detail); + audioLevelOfDetailSocket.AddValue(audio_level_of_detail, distance); + } + + // + // Verify that there is at least one entry and the first one is at 0.0f + // + #if DEBUG_LEVEL>0 + { + TableIteratorOf iterator(&audioLevelOfDetailSocket); + Check(&iterator); + Verify(iterator.GetSize() > 0); + Verify(iterator.GetCurrent() != NULL); + Verify(iterator.GetValue() == 0.0f); + } + #endif + + // + // Select the first entry + // + TableIteratorOf iterator(&audioLevelOfDetailSocket); + + audioLevelOfDetail = iterator.GetCurrent(); + Check(audioLevelOfDetail); +} + +// +//############################################################################# +//############################################################################# +// +void + AudioResource::BuildFromPage( + PlugStream *stream, + NameList *name_list, + ClassID class_ID, + ObjectID object_ID + ) +{ + Node::BuildFromPage(stream, name_list, class_ID, object_ID); + + // + // Count number of entries + // + int number_of_entries = 0; + NameList::Entry *entry; + + Check(name_list); + entry = name_list->GetFirstEntry(); + while (entry != NULL) + { + Check(entry); + if (entry->IsName("audio_level_of_detail")) + number_of_entries++; + entry = entry->GetNextEntry(); + } + + // + // Store entries + // + MemoryStream_Write(stream, &number_of_entries); + + Check(name_list); + entry = name_list->GetFirstEntry(); + while (entry != NULL) + { + Check(entry); + if (entry->IsName("audio_level_of_detail")) + { + CString object_string; + Scalar distance; + ObjectID object_ID; + + Check_Pointer(entry->GetChar()); + object_string = entry->GetChar(); + + Check_Pointer(object_string.GetNthToken(0)); + Convert_From_Ascii(object_string.GetNthToken(0), &distance); + MemoryStream_Write(stream, &distance); + + Check(stream); + Check_Pointer(object_string.GetNthToken(1)); + object_ID = stream->FindObjectID(object_string.GetNthToken(1)); + Verify(object_ID != NullObjectID); + MemoryStream_Write(stream, &object_ID); + } + entry = entry->GetNextEntry(); + } +} + +// +//############################################################################# +//############################################################################# +// +AudioResource::~AudioResource() +{ +} + +// +//############################################################################# +//############################################################################# +// +Logical + AudioResource::TestInstance() const +{ + Node::TestInstance(); + Check(&audioLevelOfDetailSocket); + return True; +} + +// +//############################################################################# +//############################################################################# +// +void + AudioResource::SetDistance(Scalar distance) +{ + Check(this); + Verify(distance >= 0.0f); + + // + // Goto the last entry + // + TableIteratorOf + iterator(&audioLevelOfDetailSocket); + + Check(&iterator); + iterator.Last(); + + // + // While the distance is less than the distance of the entry + // + while (distance < iterator.GetValue()) + { + iterator.Previous(); + } + audioLevelOfDetail = iterator.GetCurrent(); + Check(audioLevelOfDetail); + + // + // Verify that the distance is greater than this entry, and less than + // the next + // + #if DEBUG_LEVEL>0 + Verify(distance >= iterator.GetValue()); + iterator.Next(); + if (iterator.GetCurrent() != NULL) + { + Verify(distance < iterator.GetValue()); + } + #endif + + // + // Dump the LOD of the resource + // + #if 0 + CollectionSize i = 0; + iterator.First(); + while (iterator.GetCurrent() != NULL) + { + Check(iterator.GetCurrent()); + if (audioLevelOfDetail == iterator.GetCurrent() /* && i > 0 */ ) + { + Tell( + "AudioLOD:" << i << + " d:" << distance << + " t:" << iterator.GetValue() << + "\n" + ); + break; + } + iterator.Next(); + i++; + } + #endif +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ AudioResourceIndex ~~~~~~~~~~~~~~~~~~~~~~~~~~ + +// +//############################################################################# +//############################################################################# +// +AudioResourceIndex::AudioResourceIndex(PlugStream *stream): + Node(stream), + audioResourceSocket(NULL, True) +{ + CollectionSize i, number_of_entries; + + MemoryStream_Read(stream, &number_of_entries); + for (i = 0; i < number_of_entries; i++) + { + AudioResource *audio_resource; + + PlugStream_ReadObjectIDAndFindPlug(stream, &audio_resource); + Check(audio_resource); + AddAudioResource(audio_resource, i); + } +} + +// +//############################################################################# +//############################################################################# +// +void + AudioResourceIndex::BuildFromPage( + PlugStream *stream, + NameList *name_list, + ClassID class_ID, + ObjectID object_ID + ) +{ + Node::BuildFromPage(stream, name_list, class_ID, object_ID); + + // + // Count number of entries + // + int number_of_entries = 0; + NameList::Entry *entry; + + Check(name_list); + entry = name_list->GetFirstEntry(); + while (entry != NULL) + { + Check(entry); + if (entry->IsName("audio_resource")) + number_of_entries++; + entry = entry->GetNextEntry(); + } + + // + // Store entries + // + MemoryStream_Write(stream, &number_of_entries); + + Check(name_list); + entry = name_list->GetFirstEntry(); + while (entry != NULL) + { + Check(entry); + if (entry->IsName("audio_resource")) + { + CString object_name; + ObjectID object_ID; + + Check_Pointer(entry->GetChar()); + object_name = entry->GetChar(); + + Check(stream); + object_ID = stream->FindObjectID(object_name); + Verify(object_ID != NullObjectID); + MemoryStream_Write(stream, &object_ID); + } + entry = entry->GetNextEntry(); + } +} + +// +//############################################################################# +//############################################################################# +// +AudioResourceIndex::~AudioResourceIndex() +{ +} + +// +//############################################################################# +//############################################################################# +// +Logical + AudioResourceIndex::TestInstance() const +{ + Node::TestInstance(); + Check(&audioResourceSocket); + return True; +} + +// +//############################################################################# +//############################################################################# +// +void + AudioResourceIndex::AddAudioResource( + AudioResource *audio_resource, + Enumeration index + ) +{ + Check(this); + audioResourceSocket.AddValue(audio_resource, index); + + #if DEBUG_LEVEL>0 + TableIteratorOf iterator(&audioResourceSocket); + Check(&iterator); + for (int i = 0; i < iterator.GetSize(); i++) + { + Verify(iterator.GetNth(i) == audioResourceSocket.Find(i)); + } + #endif +} + +// +//############################################################################# +//############################################################################# +// +AudioResource* + AudioResourceIndex::GetAudioResource(Enumeration index) +{ + Check(this); + + TableIteratorOf iterator(&audioResourceSocket); + Check(&iterator); + Verify(iterator.GetNth(index) == audioResourceSocket.Find(index)); + + return iterator.GetNth(index); +} + +// +//############################################################################# +//############################################################################# +// +CollectionSize + AudioResourceIndex::GetSize() +{ + Check(this); + + TableIteratorOf iterator(&audioResourceSocket); + Check(&iterator); + + return iterator.GetSize(); +} + + diff --git a/CODE/RP/MUNGA/AUDLVL.HPP b/CODE/RP/MUNGA/AUDLVL.HPP new file mode 100644 index 0000000..30cd961 --- /dev/null +++ b/CODE/RP/MUNGA/AUDLVL.HPP @@ -0,0 +1,270 @@ +//===========================================================================// +// File: audlvl.hpp // +// Project: MUNGA Brick: Audio manager // +// Contents: // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 01/30/95 ECH Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(AUDLVL_HPP) +# define AUDLVL_HPP + +# if !defined(STYLE_HPP) +# include +# endif + +# if !defined(AUDIO_HPP) +# include +# endif + + //########################################################################## + //####################### AudioLevelOfDetail ######################### + //########################################################################## + + class AudioLevelOfDetail: + public Plug + { + public: + // + //----------------------------------------------------------------------- + // Construction, Destruction, Testing + //----------------------------------------------------------------------- + // + AudioLevelOfDetail(PlugStream *stream); + ~AudioLevelOfDetail(); + + Logical + TestInstance() const; + + // + //----------------------------------------------------------------------- + // BuildFromPage + //----------------------------------------------------------------------- + // + static void + BuildFromPage( + PlugStream *stream, + NameList *name_list, + ClassID class_ID, + ObjectID object_ID + ); + + // + //----------------------------------------------------------------------- + // Accessors + //----------------------------------------------------------------------- + // + AudioVoiceCount + GetVoiceCount() + {return voiceCount;} + AudioRenderType + GetAudioRenderType() + {return audioRenderType;} + AudioFrameCount + GetSuspendDelay() + {return suspendDelay;} + + private: + // + //----------------------------------------------------------------------- + // Private data + //----------------------------------------------------------------------- + // + + #if 0 + // + //----------------------------------------------------------------------- + // Defines the radial variation of the amplitude of the audio source. + // This feature is implemented well in Crystal River Engineering's + // API. The radiation profile of an audio source is specified with + // an array of sound levels in decibels paired with angles off of + // the audio source orientation. For example, you can design a + // rocket sound that is louder when heard from directly behind then + // from the side. + //----------------------------------------------------------------------- + // + AudioRadiationProfile + amplitudeRadiationProfile; + #endif + + #if 0 + // + //----------------------------------------------------------------------- + // Defines the radial variation of the high frequency content of the + // audio source. This concept is analogous to + // SetAmplitudeRadiationProfile except applied to the high frequency + // content of the audio source. Again, this allows the audio source + // to vary with respect to the position and orientation of the audio + // source and head. + //----------------------------------------------------------------------- + // + AudioRadiationProfile + filterRadiationProfile; + #endif + + // + //----------------------------------------------------------------------- + // Misc + //----------------------------------------------------------------------- + // + AudioVoiceCount + voiceCount; + AudioRenderType + audioRenderType; + AudioFrameCount + suspendDelay; + }; + + //########################################################################## + //########################## AudioResource ############################ + //########################################################################## + + class AudioResource: + public Node + { + public: + // + //----------------------------------------------------------------------- + // Construction, Destruction, Testing + //----------------------------------------------------------------------- + // + AudioResource(PlugStream *stream); + ~AudioResource(); + + Logical + TestInstance() const; + + // + //----------------------------------------------------------------------- + // BuildFromPage + //----------------------------------------------------------------------- + // + static void + BuildFromPage( + PlugStream *stream, + NameList *name_list, + ClassID class_ID, + ObjectID object_ID + ); + + // + //----------------------------------------------------------------------- + // SetDistance + //----------------------------------------------------------------------- + // + void + SetDistance(Scalar distance); + + // + //----------------------------------------------------------------------- + // Accessors + //----------------------------------------------------------------------- + // + AudioVoiceCount + GetVoiceCount(); + AudioRenderType + GetAudioRenderType(); + AudioFrameCount + GetSuspendDelay(); + + protected: + // + //----------------------------------------------------------------------- + // Protected data + //----------------------------------------------------------------------- + // + AudioLevelOfDetail* + GetAudioLevelOfDetail(); + + private: + // + //----------------------------------------------------------------------- + // Private data + //----------------------------------------------------------------------- + // + AudioLevelOfDetail + *audioLevelOfDetail; + TableOf + audioLevelOfDetailSocket; + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~ AudioResource inlines ~~~~~~~~~~~~~~~~~~~~~~~~~ + + inline AudioLevelOfDetail* + AudioResource::GetAudioLevelOfDetail() + { + Check(this); + return audioLevelOfDetail; + } + + inline AudioVoiceCount + AudioResource::GetVoiceCount() + { + Check(this); + Check(audioLevelOfDetail); + return audioLevelOfDetail->GetVoiceCount(); + } + + inline AudioRenderType + AudioResource::GetAudioRenderType() + { + Check(this); + Check(audioLevelOfDetail); + return audioLevelOfDetail->GetAudioRenderType(); + } + + inline AudioFrameCount + AudioResource::GetSuspendDelay() + { + Check(this); + Check(audioLevelOfDetail); + return audioLevelOfDetail->GetSuspendDelay(); + } + + //########################################################################## + //######################## AudioResourceIndex ######################## + //########################################################################## + + class AudioResourceIndex: + public Node + { + public: + AudioResourceIndex(PlugStream *stream); + ~AudioResourceIndex(); + + Logical + TestInstance() const; + + static void + BuildFromPage( + PlugStream *stream, + NameList *name_list, + ClassID class_ID, + ObjectID object_ID + ); + + void + AddAudioResource( + AudioResource *audio_resource, + Enumeration index + ); + + AudioResource* + GetAudioResource(Enumeration index); + + CollectionSize + GetSize(); + + private: + TableOf + audioResourceSocket; + }; + + +#endif diff --git a/CODE/RP/MUNGA/AUDMIDI.CPP b/CODE/RP/MUNGA/AUDMIDI.CPP new file mode 100644 index 0000000..86843ad --- /dev/null +++ b/CODE/RP/MUNGA/AUDMIDI.CPP @@ -0,0 +1,706 @@ +//===========================================================================// +// File: audmidi.cpp // +// Project: MUNGA Brick: Audio manager // +// Contents: // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 10/23/95 ECH Initial code +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(AUDMIDI_HPP) +# include +#endif + +//############################################################################# +//########################### MidiParse ################################# +//############################################################################# + +#define NOTEOFF (0x80) +#define NOTEON (0x90) +#define PRESSURE (0xa0) +#define CONTROLLER (0xb0) +#define PITCHBEND (0xe0) +#define PROGRAM (0xc0) +#define CHANPRESSURE (0xd0) + +#define METATEXT "Text Event" +#define METACOPYRIGHT "Copyright Notice" +#define METASEQUENCE "Sequence/Track Name" +#define METAINSTRUMENT "Instrument Name" +#define METALYRIC "Lyric" +#define METAMARKER "Marker" +#define METACUE "Cue Point" +#define METAUNRECOGNIZED "Unrecognized" + +#define CHAR_BUFF_SIZE (32) + +// +//############################################################################# +//############################################################################# +// +MidiParse::MidiParse() +{ + Mf_nomerge = 0; // 1 => continue'ed system exclusives are not collapsed. + Mf_currtime = 0L; // current time in delta-time units + Mf_skipinit = 0; // 1 if initial garbage should be skipped + + Mf_toberead = 0L; + + Msgbuff = NULL; // message buffer + Msgsize = 0; // Size of currently allocated Msg + Msgindex = 0; // index of next available location in Msg +} + +// +//############################################################################# +//############################################################################# +// +MidiParse::~MidiParse() +{ + if (Msgbuff != NULL) + { + Unregister_Pointer(Msgbuff); +#if 0 + free(Msgbuff); +#else + delete[] Msgbuff; +#endif + Msgbuff = NULL; + } +} + +// +//############################################################################# +//############################################################################# +// +Logical + MidiParse::TestInstance() const +{ + Node::TestInstance(); + return True; +} + +// +//############################################################################# +//############################################################################# +// +MidiParse::SignedLongWord + MidiParse::CurTime() +{ + Check(this); + return Mf_currtime; +} + +// +//############################################################################# +//############################################################################# +// +void + MidiParse::Parse() +{ + Check(this); + + SignedWord ntrks; + + ntrks = readheader(); + Verify(ntrks > 0); + while (ntrks-- > 0) + readtrack(); +} + +// +//############################################################################# +//############################################################################# +// +MidiParse::SignedWord + MidiParse::readmt( + char *s, + SignedWord skip + ) +{ + Check(this); + + SignedWord nread = 0; + char b[4]; + char buff[CHAR_BUFF_SIZE]; + SignedWord c; + char *errmsg = "expecting "; + + // read through the "MThd" or "MTrk" header string + // if 1, we attempt to skip initial garbage. + +retry: + while ( nread<4 ) + { + c = Mf_getc(); + if ( c == EOF ) + { + errmsg = "EOF while expecting "; + goto err; + } + b[nread++] = (char)c; + } + + // See if we found the 4 characters we're looking for + + if ( s[0]==b[0] && s[1]==b[1] && s[2]==b[2] && s[3]==b[3] ) + return 0; + if ( skip ) + { + + // If we are supposed to skip initial garbage, + // try again with the next character. + + b[0]=b[1]; + b[1]=b[2]; + b[2]=b[3]; + nread = 3; + goto retry; + } +err: + Str_Copy(buff, errmsg, CHAR_BUFF_SIZE); + Str_Cat(buff, s, CHAR_BUFF_SIZE); + mferror(buff); + return 0; +} + +// +//############################################################################# +//############################################################################# +// +MidiParse::SignedWord + MidiParse::egetc() +{ + Check(this); + + // read a single character and abort on EOF + + SignedWord c = Mf_getc(); + + if ( c == EOF ) + mferror("premature EOF"); + Mf_toberead--; + return c; +} + +// +//############################################################################# +//############################################################################# +// +MidiParse::SignedWord + MidiParse::readheader() +{ + Check(this); + + // read a header chunk + + SignedWord + format, ntrks, division; + + if ( readmt("MThd", Mf_skipinit) == EOF ) + return 0; + + Mf_toberead = read32bit(); + format = read16bit(); + ntrks = read16bit(); + division = read16bit(); + + Mf_header(format,ntrks,division); + + // flush any extra stuff, in case the length of header is not 6 + + while ( Mf_toberead > 0 ) + egetc(); + return ntrks; +} + +// +//############################################################################# +//############################################################################# +// +void + MidiParse::readtrack() +{ + Check(this); + + // read a track chunk + + // This array is indexed by the high half of a status byte. It's + // value is either the number of bytes needed (1 or 2) for a channel + // message, or 0 (meaning it's not a channel message). + + static SignedWord chantype[] = + { + 0, 0, 0, 0, 0, 0, 0, 0, // 0x00 through 0x70 + 2, 2, 2, 2, 1, 1, 2, 0 // 0x80 through 0xf0 + }; + + SignedLongWord lookfor, lng; + SignedWord c, c1, type; + SignedWord sysexcontinue = 0; // 1 if last message was an unfinished sysex + SignedWord running; // 1 when running status used + SignedWord status = 0; // (possibly running) status byte + SignedWord needed; + + if ( readmt("MTrk",0) == EOF ) + return; + + Mf_toberead = read32bit(); + Mf_currtime = 0; + + Mf_starttrack(); + + while ( Mf_toberead > 0 ) + { + Mf_currtime += readvarinum(); // delta time + + c = egetc(); + + if ( sysexcontinue && c != 0xf7 ) + mferror("didn't find expected continuation of a sysex"); + + if ( (c & 0x80) == 0 ) // running status? + { + if ( status == 0 ) + mferror("unexpected running status"); + running = 1; + } + else + { + status = c; + running = 0; + } + + needed = chantype[ (status>>4) & 0xf ]; + + if ( needed ) // ie. is it a channel message? + { + if ( running ) + c1 = c; + else + c1 = egetc(); + chanmessage( status, c1, (needed>1) ? egetc() : (SignedWord)0 ); + continue; + } + + switch ( c ) + { + case 0xff: // meta event + type = egetc(); + // watch out - Don't combine the next 2 statements + lng = readvarinum(); + lookfor = Mf_toberead - lng; + msginit(); + + while ( Mf_toberead > lookfor ) + msgadd(egetc()); + + metaevent(type); + break; + + case 0xf0: // start of system exclusive + // watch out - Don't combine the next 2 statements + lng = readvarinum(); + lookfor = Mf_toberead - lng; + msginit(); + msgadd(0xf0); + + while ( Mf_toberead > lookfor ) + msgadd(c=egetc()); + + if ( c==0xf7 || Mf_nomerge==0 ) + sysex(); + else + sysexcontinue = 1; // merge into next msg + break; + + case 0xf7: // sysex continuation or arbitrary stuff + // watch out - Don't combine the next 2 statements + lng = readvarinum(); + lookfor = Mf_toberead - lng; + + if ( ! sysexcontinue ) + msginit(); + + while ( Mf_toberead > lookfor ) + msgadd(c=egetc()); + + if ( ! sysexcontinue ) + { + Mf_arbitrary(msgleng(),msg()); + } + else if ( c == 0xf7 ) + { + sysex(); + sysexcontinue = 0; + } + break; + + default: + badbyte(c); + break; + } + } + Mf_endtrack(); + return; +} + +// +//############################################################################# +//############################################################################# +// +void + MidiParse::badbyte(SignedWord c) +{ + Check(this); + + char buff[CHAR_BUFF_SIZE]; + + sprintf(buff,"unexpected byte: 0x%02x",c); + mferror(buff); +} + +// +//############################################################################# +//############################################################################# +// +void + MidiParse::metaevent(SignedWord type) +{ + Check(this); + + SignedWord leng = msgleng(); + char *m = msg(); + + switch ( type ) + { + case 0x00: + Mf_seqnum(to16bit(m[0],m[1])); + break; + case 0x01: // Text event + case 0x02: // Copyright notice + case 0x03: // Sequence/Track name + case 0x04: // Instrument name + case 0x05: // Lyric + case 0x06: // Marker + case 0x07: // Cue point + case 0x08: + case 0x09: + case 0x0a: + case 0x0b: + case 0x0c: + case 0x0d: + case 0x0e: + case 0x0f: + // These are all text events + Mf_text(type,leng,m); + break; + case 0x2f: // End of Track + Mf_eot(); + break; + case 0x51: // Set tempo + Mf_tempo(to32bit((SignedWord)0,m[0],m[1],m[2])); + break; + case 0x54: + Mf_smpte(m[0],m[1],m[2],m[3],m[4]); + break; + case 0x58: + Mf_timesig(m[0],m[1],m[2],m[3]); + break; + case 0x59: + Mf_keysig(m[0],m[1]); + break; + case 0x7f: + Mf_sqspecific(leng,m); + break; + default: + Mf_metamisc(type,leng,m); + } +} + +// +//############################################################################# +//############################################################################# +// +void + MidiParse::sysex() +{ + Check(this); + Mf_sysex(msgleng(),msg()); +} + +// +//############################################################################# +//############################################################################# +// +void + MidiParse::chanmessage( + SignedWord status, + SignedWord c1, + SignedWord c2 + ) +{ + Check(this); + + SignedWord chan = status & (SignedWord)0xf; + + switch ( status & 0xf0 ) + { + case NOTEOFF: + Mf_off(chan,c1,c2); + break; + case NOTEON: + Mf_on(chan,c1,c2); + break; + case PRESSURE: + Mf_pressure(chan,c1,c2); + break; + case CONTROLLER: + Mf_controller(chan,c1,c2); + break; + case PITCHBEND: + Mf_pitchbend(chan,c1,c2); + break; + case PROGRAM: + Mf_program(chan,c1); + break; + case CHANPRESSURE: + Mf_chanpressure(chan,c1); + break; + } +} + +// +//############################################################################# +//############################################################################# +// +MidiParse::SignedLongWord + MidiParse::readvarinum() +{ + Check(this); + + // readvarinum - read a varying-length number, and return the + // number of characters it took. + + SignedLongWord value; + SignedWord c; + + c = egetc(); + value = c; + if (c & 0x80) + { + value &= 0x7f; + do + { + c = egetc(); + value <<= 7; + value += (c & 0x7f); + } while (c & 0x80); + } + return value; +} + +// +//############################################################################# +//############################################################################# +// +MidiParse::SignedLongWord + MidiParse::to32bit(SignedWord c1, SignedWord c2,SignedWord c3, SignedWord c4) +{ + Check(this); + + SignedLongWord value; + + value = (c1 & 0xff); + value = (value<<8) + (c2 & 0xff); + value = (value<<8) + (c3 & 0xff); + value = (value<<8) + (c4 & 0xff); + return value; +} + +// +//############################################################################# +//############################################################################# +// +MidiParse::SignedWord + MidiParse::to16bit(SignedWord c1,SignedWord c2) +{ + Check(this); + + SignedWord value; + + value = (c1 & (SignedWord)0xff); + value = (SignedWord)((SignedWord)(value<<8) + (c2 & (SignedWord)0xff)); + return value; +} + +// +//############################################################################# +//############################################################################# +// +MidiParse::SignedLongWord + MidiParse::read32bit() +{ + Check(this); + + SignedWord c1, c2, c3, c4; + + c1 = egetc(); + c2 = egetc(); + c3 = egetc(); + c4 = egetc(); + return to32bit(c1,c2,c3,c4); +} + +// +//############################################################################# +//############################################################################# +// +MidiParse::SignedWord + MidiParse::read16bit() +{ + Check(this); + + SignedWord c1, c2; + + c1 = egetc(); + c2 = egetc(); + return to16bit(c1,c2); +} + +// +//############################################################################# +//############################################################################# +// +void + MidiParse::mferror(char *s) +{ + Check(this); + Mf_error(s); +} + +// The code below allows collection of a system exclusive message of +// arbitrary length. The Msgbuff is expanded as necessary. The only +// visible data/routines are msginit(), msgadd(), msg(), msgleng(). + +#define MSGINCREMENT ((SignedWord)128) + +// +//############################################################################# +//############################################################################# +// +void + MidiParse::msginit() +{ + Check(this); + Msgindex = 0; +} + +// +//############################################################################# +//############################################################################# +// +char* + MidiParse::msg() +{ + Check(this); + return Msgbuff; +} + +// +//############################################################################# +//############################################################################# +// +MidiParse::SignedWord + MidiParse::msgleng() +{ + Check(this); + return Msgindex; +} + +// +//############################################################################# +//############################################################################# +// +void + MidiParse::msgadd(SignedWord c) +{ + Check(this); + + // If necessary, allocate larger message buffer. + + if ( Msgindex >= Msgsize ) + msgenlarge(); + Msgbuff[Msgindex++] = (char)c; +} + +// +//############################################################################# +//############################################################################# +// +void + MidiParse::msgenlarge() +{ + Check(this); + + char *newmess; + char *oldmess = Msgbuff; + SignedWord oldleng = Msgsize; + + Msgsize += MSGINCREMENT; +#if 0 + newmess = (char*)malloc( sizeof(char)*Msgsize ); +#else + newmess = new char[Msgsize]; +#endif + Register_Pointer(newmess); + + // copy old message into larger new one + if ( oldmess != 0 ) + { + char *p = newmess; + char *q = oldmess; + char *endq = &oldmess[oldleng]; + + for ( ; q!=endq ; p++,q++ ) + *p = *q; + Unregister_Pointer(oldmess); +#if 0 + free(oldmess); +#else + delete[] oldmess; +#endif + } + Msgbuff = newmess; +} + +// METHODS TO OVERRIDE + +// +//############################################################################# +//############################################################################# +// +MidiParse::SignedWord + MidiParse::Mf_getc() +{ + Fail("MidiParse::Mf_getc - Should never reach here"); + return 0; +} + +// +//############################################################################# +//############################################################################# +// +void + MidiParse::Mf_error(char*) +{ + Fail("MidiParse::Mf_error - Should never reach here"); +} diff --git a/CODE/RP/MUNGA/AUDMIDI.HPP b/CODE/RP/MUNGA/AUDMIDI.HPP new file mode 100644 index 0000000..fe7eb05 --- /dev/null +++ b/CODE/RP/MUNGA/AUDMIDI.HPP @@ -0,0 +1,166 @@ +//===========================================================================// +// File: audmidi.hpp // +// Project: MUNGA Brick: Audio manager // +// Contents: // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 10/23/95 ECH Initial code +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(AUDMIDI_HPP) +# define AUDMIDI_HPP + +# if !defined(NODE_HPP) +# include +# endif + + //########################################################################## + //########################## MidiParse ############################### + //########################################################################## + + class MidiParse: + public Node + { + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Construction, Destruction, and Testing + // + public: + typedef long SignedLongWord; // 4 bytes + typedef short int SignedWord; // 2 bytes + typedef char SignedByte; // 1 bytes + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Construction, Destruction, and Testing + // + public: + MidiParse(); + ~MidiParse(); + Logical + TestInstance() const; + + void + Parse(); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Accessors + // + protected: + SignedLongWord + CurTime(); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Sub-class callbacks + // + private: + virtual SignedWord + Mf_getc(); + virtual void + Mf_error(char *); + + virtual void + Mf_starttrack() {} + virtual void + Mf_endtrack() {} + virtual void + Mf_eot() {} + virtual void + Mf_header(SignedWord,SignedWord,SignedWord) {} + virtual void + Mf_on(SignedWord,SignedWord,SignedWord) {} + virtual void + Mf_off(SignedWord,SignedWord,SignedWord) {} + virtual void + Mf_pressure(SignedWord,SignedWord,SignedWord) {} + virtual void + Mf_controller(SignedWord,SignedWord,SignedWord) {} + virtual void + Mf_pitchbend(SignedWord,SignedWord,SignedWord) {} + virtual void + Mf_program(SignedWord,SignedWord) {} + virtual void + Mf_chanpressure(SignedWord,SignedWord) {} + virtual void + Mf_sysex(SignedWord,char*) {} + virtual void + Mf_arbitrary(SignedWord,char*) {} + virtual void + Mf_metamisc(SignedWord,SignedWord,char*) {} + virtual void + Mf_seqnum(SignedWord) {} + virtual void + Mf_smpte(SignedWord,SignedWord,SignedWord,SignedWord,SignedWord) {} + virtual void + Mf_timesig(SignedWord,SignedWord,SignedWord,SignedWord) {} + virtual void + Mf_tempo(SignedLongWord) {} + virtual void + Mf_keysig(SignedWord,SignedWord) {} + virtual void + Mf_sqspecific(SignedWord,char*) {} + virtual void + Mf_text(SignedWord,SignedWord,char*) {} + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Private methods + // + private: + SignedWord + readmt(char *s,SignedWord skip); + SignedWord + egetc(); + SignedWord + readheader(); + void + readtrack(); + void + badbyte(SignedWord c); + void + metaevent(SignedWord type); + void + sysex(); + void + chanmessage(SignedWord status,SignedWord c1,SignedWord c2); + SignedLongWord + readvarinum(); + SignedLongWord + to32bit(SignedWord c1, SignedWord c2,SignedWord c3, SignedWord c4); + SignedWord + to16bit(SignedWord c1,SignedWord c2); + SignedLongWord + read32bit(); + SignedWord + read16bit(); + void + mferror(char *s); + void + msginit(); + char* + msg(); + SignedWord + msgleng(); + void + msgadd(SignedWord c); + void + msgenlarge(); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Private data + // + private: + SignedWord Mf_nomerge; + SignedLongWord Mf_currtime; + SignedWord Mf_skipinit; + + SignedLongWord Mf_toberead; + + char *Msgbuff; + SignedWord Msgsize; + SignedWord Msgindex; + }; + +#endif diff --git a/CODE/RP/MUNGA/AUDSEQ.CPP b/CODE/RP/MUNGA/AUDSEQ.CPP new file mode 100644 index 0000000..3945d4d --- /dev/null +++ b/CODE/RP/MUNGA/AUDSEQ.CPP @@ -0,0 +1,894 @@ +//===========================================================================// +// File: audseq.cpp // +// Project: MUNGA Brick: Audio manager // +// Contents: // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 01/30/95 ECH Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(AUDSEQ_HPP) +# include +#endif + +#if !defined(OBJSTRM_HPP) + #include +#endif + +#if !defined(NAMELIST_HPP) + #include +#endif + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~ AudioControlEvent ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +// +//############################################################################# +//############################################################################# +// +AudioControlEvent::AudioControlEvent( + AudioTick start_tick, + AudioControlID audio_control_ID, + AudioControlValue audio_control_value +): + Plug(AudioControlEventClassID) +{ + startTick = start_tick; + audioControlID = audio_control_ID; + audioControlValue = audio_control_value; +} + +// +//############################################################################# +//############################################################################# +// +AudioControlEvent::AudioControlEvent(): + Plug(AudioControlEventClassID) +{ + startTick = 0; + audioControlID = NullAudioControlID; + audioControlValue = 0.0f; +} + +// +//############################################################################# +//############################################################################# +// +AudioControlEvent::~AudioControlEvent() +{ +} + +// +//############################################################################# +//############################################################################# +// +Logical + AudioControlEvent::TestInstance() const +{ + Plug::TestInstance(); + Verify( + (Enumeration)audioControlID >= (Enumeration)0 && + (Enumeration)audioControlID < (Enumeration)AudioControlIDCount + ); + return True; +} + +// +//############################################################################# +//############################################################################# +// +void + AudioControlEvent::Send(AudioComponent *audio_component) +{ + Check(this); + Check(audio_component); + audio_component->ReceiveControl(audioControlID, audioControlValue); +} + +// +//############################################################################# +//############################################################################# +// +Logical + AudioControlEvent::Chase(AudioComponent *audio_component) +{ + Check(this); + Check(audio_component); + + switch (audioControlID) + { + case StartAudioControlID: + return False; + + case StopAudioControlID: + Send(audio_component); + return False; + + default: + break; + } + return True; +} + +// +//############################################################################# +//############################################################################# +// +MemoryStream& + MemoryStream_Read( + MemoryStream *stream, + AudioControlEvent *control_event + ) +{ + Check(stream); + Check_Signature(control_event); + + MemoryStream_Read(stream, &control_event->startTick); + MemoryStream_Read(stream, &control_event->audioControlID); + MemoryStream_Read(stream, &control_event->audioControlValue); + + Check(control_event); + return *stream; +} + +// +//############################################################################# +//############################################################################# +// +MemoryStream& + MemoryStream_Write( + MemoryStream *stream, + const AudioControlEvent *control_event + ) +{ + Check(stream); + Check(control_event); + + MemoryStream_Write(stream, &control_event->startTick); + MemoryStream_Write(stream, &control_event->audioControlID); + MemoryStream_Write(stream, &control_event->audioControlValue); + return *stream; +} + +// +//############################################################################# +//############################################################################# +// +ostream& + operator << ( + ostream &strm, + const AudioControlEvent &control_event + ) +{ + Check(&control_event); + + strm << "[" ; + strm << control_event.startTick << ","; + strm << control_event.audioControlID << ","; + strm << control_event.audioControlValue; + strm << "]"; + + return strm; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~ AudioControlSequence ~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +// +//############################################################################# +//############################################################################# +// +AudioControlSequence::AudioControlSequence( + PlugStream *stream, + Entity *entity +): + AudioComponent(stream), + audioComponentSocket(NULL), + audioControlEventSocket(NULL) +{ + Logical dump_value; + Logical is_looped; + AudioComponent *audio_component; + AudioControlEvent *audio_control_event; + CollectionSize i, number_of_control_events; + AudioDivisionsPerBeat divisions_per_beat; + AudioTempo tempo; + + MemoryStream_Read(stream, &dump_value); + MemoryStream_Read(stream, &is_looped); + PlugStream_ReadObjectIDAndFindPlug(stream, &audio_component); + MemoryStream_Read(stream, &divisions_per_beat); + MemoryStream_Read(stream, &tempo); + MemoryStream_Read(stream, &number_of_control_events); + + for (i = 0; i < number_of_control_events; i++) + { + audio_control_event = new AudioControlEvent; + Register_Object(audio_control_event); + MemoryStream_Read(stream, audio_control_event); + audioControlEventSocket.Add(audio_control_event); + } + + AudioControlSequenceX( + audio_component, + entity, + is_looped, + divisions_per_beat, + tempo, + dump_value + ); +} + +// +//############################################################################# +//############################################################################# +// +#if DEBUG_LEVEL>0 +void + AudioControlSequence::AudioControlSequenceX( + AudioComponent *audio_component, + Entity *entity, + Logical is_looped, + AudioDivisionsPerBeat divisions_per_beat, + AudioTempo the_tempo, + Logical dump_value + ) +#else +void + AudioControlSequence::AudioControlSequenceX( + AudioComponent *audio_component, + Entity *entity, + Logical is_looped, + AudioDivisionsPerBeat divisions_per_beat, + AudioTempo the_tempo, + Logical + ) +#endif +{ + Check(audio_component); + audioComponentSocket.Add(audio_component); + + isLooped = is_looped; + isRunning = False; + startTime = AudioTime::Null; + audioControlEventIterator = NULL; + divisionsPerBeat = divisions_per_beat; + tempo = the_tempo; + + #if DEBUG_LEVEL>0 + dumpValue = dump_value; + #endif + + audio_component->AddWatcher(this); + Check(entity); + entity->AddAudioComponent(this); +} + +// +//############################################################################# +//############################################################################# +// +AudioControlSequence::~AudioControlSequence() +{ + StopSequence(); + Verify(!isRunning); + Verify(audioControlEventIterator == NULL); + + AudioControlEventIterator iterator(&audioControlEventSocket); + Check(&iterator); + iterator.DeletePlugs(); +} + +// +//############################################################################# +//############################################################################# +// +void + AudioControlSequence::BuildFromPage( + PlugStream *stream, + NameList *name_list, + ClassID class_ID, + ObjectID object_ID + ) +{ + AudioComponent::BuildFromPage(stream, name_list, class_ID, object_ID); + + MEM_STRM_WRITE_ENTRY(*stream, name_list, Logical, dump_value); + MEM_STRM_WRITE_ENTRY(*stream, name_list, Logical, is_looped); + + // + // Write audio component + // + CString audio_component_name("audio_component"); + PlugStream_FindEntryAndWriteObjectID(stream, name_list, audio_component_name); + + // + // Read tempo + // + AudioTempo tempo = 100; + + if (name_list->FindData("tempo") != NULL) + { + Check_Pointer(name_list->FindData("tempo")); + Convert_From_Ascii((const char *)name_list->FindData("tempo"), &tempo); + } + + // + // Read midi file + // + DynamicMemoryStream midi_file_stream; + + { + CString midi_file_name; + + Check_Pointer(name_list->FindData("midi_file")); + midi_file_name = (const char*)name_list->FindData("midi_file"); + + ifstream input_midi_file(midi_file_name, ios::in|ios::binary); + #if DEBUG_LEVEL>0 + if (!input_midi_file) + { + Dump(midi_file_name); + } + #endif + + MemoryStream_Write(&midi_file_stream, &input_midi_file); + midi_file_stream.Rewind(); + } + + // + // Parse midi stream + // + DynamicMemoryStream control_event_stream; + CreateAudioControlEventStream midi_parser; + + Check(&midi_file_stream); + Check(&control_event_stream); + Check(&midi_parser); + midi_parser.Parse(&midi_file_stream, &control_event_stream, tempo); + control_event_stream.Rewind(); + + // + // Write the divisions per beat and tempo + // + AudioDivisionsPerBeat divisions_per_beat; + + divisions_per_beat = midi_parser.GetDivisionsPerBeat(); + tempo = midi_parser.GetTempo(); + MemoryStream_Write(stream, &divisions_per_beat); + MemoryStream_Write(stream, &tempo); + + // + // Write control event stream + // + CollectionSize number_of_control_events; + + number_of_control_events = midi_parser.GetNumberOfEvents(); + MemoryStream_Write(stream, &number_of_control_events); + MemoryStream_Write(stream, &control_event_stream); +} + +// +//############################################################################# +//############################################################################# +// +Logical + AudioControlSequence::TestInstance() const +{ + AudioComponent::TestInstance(); + + Check(&audioComponentSocket); + Check(&audioControlEventSocket); + if (isRunning) + { + Check(audioControlEventIterator); + } + else + { + Verify(audioControlEventIterator == NULL); + } + Verify(tempo >= 1 && tempo <= 600); + return True; +} + +// +//############################################################################# +//############################################################################# +// +void + AudioControlSequence::StartSequence() +{ + Check(this); + + // + // If already running, stop sequence + // + if (isRunning) + { + StopSequence(); + } + + // + // Make an iterator for the control sequence + // + Verify(audioControlEventIterator == NULL); + audioControlEventIterator = + new AudioControlEventIterator(&audioControlEventSocket); + Register_Object(audioControlEventIterator); + + startTime = AudioTime::Now(); + isRunning = True; +} + +// +//############################################################################# +//############################################################################# +// +void + AudioControlSequence::StopSequence() +{ + Check(this); + + // + // If not running, return + // + if (!isRunning) + return; + + // + // Find next on or off event + // + AudioControlEvent *control_event; + + Check(audioControlEventIterator); + while ((control_event = audioControlEventIterator->ReadAndNext()) != NULL) + { + Check(control_event); + if (!control_event->Chase(audioComponentSocket.GetCurrent())) + break; + } + + // + // Destroy the iterator for the control sequence + // + Unregister_Object(audioControlEventIterator); + delete audioControlEventIterator; + audioControlEventIterator = NULL; + + isRunning = False; +} + +// +//############################################################################# +//############################################################################# +// +void + AudioControlSequence::RunSequence() +{ + Check(this); + + // + // If the sequence is not running, then return + // + if (!isRunning) + return; + + // + // Play events which have a start time less then the + // current time + // + AudioControlEvent *control_event; + + Check(audioControlEventIterator); + control_event = audioControlEventIterator->GetCurrent(); + while ( + control_event != NULL && + IsEventReady(control_event) + ) + { + #if DEBUG_LEVEL>0 + if (dumpValue) + { + Dump(*control_event); + } + #endif + + #if 0 + // + // HACK - convert start control to use duration + // + Verify(control_event->audioControlID != StopAudioControlID); + if (control_event->audioControlID == StartAudioControlID) + { + // + // Convert ticks to seconds + // seconds = ticks / (divisionsPerBeat (t/b) * tempo (b/60s)) + // + Scalar denominator = + (Scalar)divisionsPerBeat * (Scalar)tempo / 60.0f; + Verify(!Small_Enough(denominator)); + control_event->audioControlValue = + control_event->audioControlValue / denominator; + } + #endif + + // + // Send the controller to the connected audio component + // + Check(control_event); + control_event->Send(audioComponentSocket.GetCurrent()); + + // + // Step to next event + // + audioControlEventIterator->Next(); + control_event = audioControlEventIterator->GetCurrent(); + } + + // + // If there are no more events to be played then stop running + // + if (control_event == NULL) + { + StopSequence(); + if (isLooped) + { + StartSequence(); + } + } +} + +// +//############################################################################# +//############################################################################# +// +void + AudioControlSequence::ReceiveControl( + AudioControlID control_ID, + AudioControlValue control_value + ) +{ + Check(this); + + switch(control_ID) + { + case StartAudioControlID: + StartSequence(); + break; + + case StopAudioControlID: + StopSequence(); + break; + + case IdleAudioControlID: + RunSequence(); + break; + + case TempoAudioControlID: + tempo = control_value; + Verify(tempo >= 1 && tempo <= 600); + break; + + default: + break; + } +} + +// +//############################################################################# +//############################################################################# +// +Logical + AudioControlSequence::IsEventReady(AudioControlEvent *audio_control_event) +{ + Check(this); + + AudioTime offset_time(startTime); + offset_time += CalculateEventSeconds(audio_control_event); + return (offset_time <= AudioTime::Now()); +} + +// +//############################################################################# +//############################################################################# +// +Scalar + AudioControlSequence::CalculateEventSeconds( + AudioControlEvent *audio_control_event + ) +{ + Check(this); + Check(audio_control_event); + + // + // Convert ticks to seconds + // seconds = ticks / (divisionsPerBeat (t/b) * tempo (b/60s)) + // + Scalar denominator = (Scalar)divisionsPerBeat * (Scalar)tempo / 60.0f; + Verify(!Small_Enough(denominator)); + return (Scalar)audio_control_event->GetStartTick() / denominator; +} + +//############################################################################# +//#################### CreateAudioControlEventStream #################### +//############################################################################# + +CreateAudioControlEventStream::CreateAudioControlEventStream(): + audioControlEventSocket(NULL, False) +{ + inputStream = NULL; + outputStream = NULL; + divisionsPerBeat = 120; + tempo = 100; +} + +// +//############################################################################# +//############################################################################# +// +CreateAudioControlEventStream::~CreateAudioControlEventStream(void) +{ + AudioControlEventIterator iterator(&audioControlEventSocket); + Check(&iterator); + iterator.DeletePlugs(); +} + +// +//############################################################################# +//############################################################################# +// +Logical + CreateAudioControlEventStream::TestInstance() const +{ + MidiParse::TestInstance(); + Check(&audioControlEventSocket); + return True; +} + +// +//############################################################################# +//############################################################################# +// +void + CreateAudioControlEventStream::Parse( + MemoryStream *input_stream, + MemoryStream *output_stream, + SignedLongWord tempo_argument + ) +{ + Check(this); + Check(input_stream); + Check(output_stream); + + inputStream = input_stream; + outputStream = output_stream; + + // + // Parse the stream + // + tempo = tempo_argument; + Verify(GetNumberOfEvents() == 0); + MidiParse::Parse(); + + // + // Write the events + // + AudioControlEventIterator iterator(&audioControlEventSocket); + AudioControlEvent *control_event; + + Check(&iterator); + while ((control_event = iterator.ReadAndNext()) != NULL) + { + Check(control_event); + MemoryStream_Write(outputStream, control_event); + } +} + +// +//############################################################################# +//############################################################################# +// +CollectionSize + CreateAudioControlEventStream::GetNumberOfEvents() +{ + Check(this); + + AudioControlEventIterator iterator(&audioControlEventSocket); + Check(&iterator); + return iterator.GetSize(); +} + +// +//############################################################################# +//############################################################################# +// +MidiParse::SignedWord + CreateAudioControlEventStream::Mf_getc() +{ + Check(this); + + unsigned char c; + + MemoryStream_Read(inputStream, &c); + return c; +} + +// +//############################################################################# +//############################################################################# +// +void + CreateAudioControlEventStream::Mf_error(char *str) +{ + Check(this); + Check_Pointer(str); + Fail(str); +} + +// +//############################################################################# +//############################################################################# +// +void + CreateAudioControlEventStream::Mf_header( + SignedWord, + SignedWord, + SignedWord division + ) +{ + Check(this); + divisionsPerBeat = division; +} + +// +//############################################################################# +//############################################################################# +// +void + CreateAudioControlEventStream::Mf_on( + SignedWord channel, + SignedWord pitch, + SignedWord vol + ) +{ + Check(this); + + // + // Interpret vol 0 as note off + // + if (vol == 0) + { + Mf_off(channel, pitch, vol); + return; + } + + // + // Verify that last event was a stop + // + #if DEBUG_LEVEL>0 + { + AudioControlEventIterator iterator(&audioControlEventSocket); + AudioControlEvent *last_control_event; + + iterator.Last(); + if ((last_control_event = iterator.GetCurrent()) != NULL) + { + Check(last_control_event); + Verify(last_control_event->audioControlID == StopAudioControlID); + } + } + #endif + + AudioTick current_ticks = CurTime(); + AudioControlEvent *audio_control_event; + + // + // Add note value event + // + audio_control_event + = new AudioControlEvent( + current_ticks, + NoteAudioControlID, + (Scalar)pitch + ); + Register_Object(audio_control_event); + audioControlEventSocket.AddValue(audio_control_event, current_ticks); + + // + // Add velocity event + // + audio_control_event + = new AudioControlEvent( + current_ticks, + AttackVolumeAudioControlID, + (Scalar)vol / (Scalar)127 + ); + Register_Object(audio_control_event); + audioControlEventSocket.AddValue(audio_control_event, current_ticks); + + // + // Add start event + // + audio_control_event + = new AudioControlEvent( + current_ticks, + StartAudioControlID, + 0.0f + ); + Register_Object(audio_control_event); + audioControlEventSocket.AddValue(audio_control_event, current_ticks); +} + +// +//############################################################################# +//############################################################################# +// +void + CreateAudioControlEventStream::Mf_off( + SignedWord, + SignedWord pitch, + SignedWord + ) +{ + Check(this); + + AudioTick current_ticks = CurTime(); + AudioControlEvent *audio_control_event; + + #if 0 + // + // HACK - convert start control to use duration + // + AudioControlEventIterator + iterator(&audioControlEventSocket); + + iterator.Last(); + audio_control_event = iterator.GetCurrent(); + Check(audio_control_event); + Verify(audio_control_event->audioControlID == StartAudioControlID); + + audio_control_event->audioControlValue = + current_ticks - audio_control_event->startTick; + #else + // + // Add note value event + // + audio_control_event + = new AudioControlEvent( + current_ticks, + NoteAudioControlID, + (Scalar)pitch + ); + Register_Object(audio_control_event); + audioControlEventSocket.AddValue(audio_control_event, current_ticks); + + // + // Add stop event + // + audio_control_event + = new AudioControlEvent( + current_ticks, + StopAudioControlID, + 0.0f + ); + Register_Object(audio_control_event); + audioControlEventSocket.AddValue(audio_control_event, current_ticks); + #endif +} + +// +//############################################################################# +//############################################################################# +// +void + CreateAudioControlEventStream::Mf_tempo(SignedLongWord) +{ + Check(this); + // tempo = i1; // HACK - Cakewalk appears to produce bogus tempo +} diff --git a/CODE/RP/MUNGA/AUDSEQ.HPP b/CODE/RP/MUNGA/AUDSEQ.HPP new file mode 100644 index 0000000..8ebc47f --- /dev/null +++ b/CODE/RP/MUNGA/AUDSEQ.HPP @@ -0,0 +1,279 @@ +//===========================================================================// +// File: audseq.hpp // +// Project: MUNGA Brick: Audio manager // +// Contents: // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 01/30/95 ECH Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(AUDSEQ_HPP) +# define AUDSEQ_HPP + +# if !defined(STYLE_HPP) +# include +# endif + +# if !defined(AUDIO_HPP) +# include +# endif + +# if !defined(AUDMIDI_HPP) +# include +# endif + +# if !defined(VCHAIN_HPP) +# include +# endif + +# if !defined(AUDTIME_HPP) +# include +# endif + + //########################################################################## + //####################### AudioControlEvent ########################## + //########################################################################## + + class AudioControlEvent: + public Plug + { + friend MemoryStream& + MemoryStream_Read( + MemoryStream *stream, + AudioControlEvent *control_event + ); + + friend MemoryStream& + MemoryStream_Write( + MemoryStream *stream, + const AudioControlEvent *control_event + ); + + public: + AudioControlEvent( + AudioTick start_tick, + AudioControlID audio_control_ID, + AudioControlValue audio_control_value + ); + AudioControlEvent(); + ~AudioControlEvent(); + + Logical + AudioControlEvent::TestInstance() const; + + AudioTick + GetStartTick() + {return startTick;} + + void + Send(AudioComponent *audio_component); + + Logical + Chase(AudioComponent *audio_component); + + public: + friend ostream& + operator << ( + ostream &strm, + const AudioControlEvent &control_event + ); + + // private: // HACK + AudioTick + startTick; + AudioControlID + audioControlID; + AudioControlValue + audioControlValue; + }; + + //########################################################################## + //####################### AudioControlSequence ####################### + //########################################################################## + + class AudioControlSequence: + public AudioComponent + { + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Construction, Destruction, and Testing + // + public: + AudioControlSequence( + PlugStream *stream, + Entity *entity + ); + void + AudioControlSequenceX( + AudioComponent *audio_component, + Entity *entity, + Logical is_looped, + AudioDivisionsPerBeat divisions_per_beat, + AudioTempo tempo, + Logical dump_value + ); + ~AudioControlSequence(); + + Logical + TestInstance() const; + + // + //-------------------------------------------------------------------- + // BuildFromPage + //-------------------------------------------------------------------- + // + static void + BuildFromPage( + PlugStream *stream, + NameList *name_list, + ClassID class_ID, + ObjectID object_ID + ); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Sequence methods + // + public: + // + //-------------------------------------------------------------------- + // Controller methods + //-------------------------------------------------------------------- + // + void + ReceiveControl( + AudioControlID control_ID, + AudioControlValue control_value + ); + + // + //-------------------------------------------------------------------- + // Sequence control + //-------------------------------------------------------------------- + // + void + StartSequence(); + void + RunSequence(); + void + StopSequence(); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Private methods + // + private: + Logical + IsEventReady(AudioControlEvent *audio_control_event); + Scalar + CalculateEventSeconds(AudioControlEvent *audio_control_event); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Private data + // + private: + typedef SChainOf + AudioControlEventSocket; + typedef SChainIteratorOf + AudioControlEventIterator; + + Logical isLooped; + Logical isRunning; + AudioTime startTime; + AudioDivisionsPerBeat divisionsPerBeat; + AudioTempo tempo; + + SlotOf + audioComponentSocket; + + AudioControlEventSocket + audioControlEventSocket; + AudioControlEventIterator + *audioControlEventIterator; + + #if DEBUG_LEVEL>0 + Logical + dumpValue; + #endif + }; + + //########################################################################## + //################### CreateAudioControlEventStream ################## + //########################################################################## + + class CreateAudioControlEventStream: + public MidiParse + { + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Construction, Destruction, and Testing + // + public: + CreateAudioControlEventStream(); + ~CreateAudioControlEventStream(); + + Logical + TestInstance() const; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Parsing + // + public: + void + Parse( + MemoryStream *input_stream, + MemoryStream *output_stream, + SignedLongWord tempo=100 + ); + AudioDivisionsPerBeat + GetDivisionsPerBeat() + {return divisionsPerBeat;} + AudioTempo + GetTempo() + {return tempo;} + CollectionSize + GetNumberOfEvents(); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Implementations + // + private: + SignedWord + Mf_getc(); + void + Mf_error(char *); + + void + Mf_header(SignedWord,SignedWord,SignedWord); + void + Mf_on(SignedWord,SignedWord,SignedWord); + void + Mf_off(SignedWord,SignedWord,SignedWord); + void + Mf_tempo(SignedLongWord); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Private data + // + private: + typedef VChainOf + AudioControlEventSocket; + typedef VChainIteratorOf + AudioControlEventIterator; + + MemoryStream + *inputStream; + MemoryStream + *outputStream; + + AudioDivisionsPerBeat + divisionsPerBeat; + AudioTempo + tempo; + + AudioControlEventSocket + audioControlEventSocket; + }; + +#endif diff --git a/CODE/RP/MUNGA/AUDSRC.CPP b/CODE/RP/MUNGA/AUDSRC.CPP new file mode 100644 index 0000000..d7be62f --- /dev/null +++ b/CODE/RP/MUNGA/AUDSRC.CPP @@ -0,0 +1,848 @@ +//===========================================================================// +// File: audsrc.cpp // +// Project: MUNGA Brick: Audio manager // +// Contents: // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 01/30/95 ECH Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(AUDSRC_HPP) +# include +#endif + +#if !defined(AUDREND_HPP) +# include +#endif + +#if !defined(OBJSTRM_HPP) + #include +#endif + +#if !defined(APP_HPP) + #include +#endif + +#if !defined(NAMELIST_HPP) + #include +#endif + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~ AudioSourceStartState ~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +// +//############################################################################# +//############################################################################# +// + +#define DEFAULT_NOTE (60) + +AudioSourceStartState::AudioSourceStartState() +{ + noteValue = DEFAULT_NOTE; + + isDurationSet = False; + hasDuration = False; + duration = 0.0f; + startTime = 0.0f; + endTime = 0.0f; +} + +// +//############################################################################# +//############################################################################# +// +AudioSourceStartState::~AudioSourceStartState() +{ +} + +// +//############################################################################# +//############################################################################# +// +Logical + AudioSourceStartState::TestInstance() const +{ + if (isDurationSet || hasDuration) + { + Verify(duration >= 0.0f); + } + if (hasDuration) + { + Verify(endTime >= startTime); + } + return True; +} + +// +//############################################################################# +//############################################################################# +// +void + AudioSourceStartState::CalculateDuration(AudioControlValue control_value) +{ + // + // Calculate duration + // + if (control_value > 0.0f) + { + hasDuration = True; + endTime = AudioTime::Now(); + endTime += control_value; + } + else if (isDurationSet) + { + hasDuration = True; + endTime = AudioTime::Now(); + endTime += duration; + isDurationSet = False; + } + else + { + hasDuration = False; + endTime = 0.0f; + } +} + +#if 0 +// +//############################################################################# +//############################################################################# +// +AudioTime + AudioSourceStartState::GetCurrentRunningTime() +{ + Check(this); + AudioTime current_duration = AudioTime::Now(); + return (current_duration -= startTime); +} +#endif + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ AudioSource ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +// +//############################################################################# +//############################################################################# +// +const Receiver::HandlerEntry + AudioSource::MessageHandlerEntries[]= +{ + { + AudioSource::StartMessageID, + "Start", + (AudioSource::Handler)&AudioSource::StartMessageHandler + }, + { + AudioSource::StopMessageID, + "Stop", + (AudioSource::Handler)&AudioSource::StopMessageHandler + } +}; + +AudioSource::MessageHandlerSet + AudioSource::MessageHandlers( + ELEMENTS(AudioSource::MessageHandlerEntries), + AudioSource::MessageHandlerEntries, + AudioComponent::MessageHandlers + ); + +// +//############################################################################# +//############################################################################# +// +Derivation + AudioSource::ClassDerivations( + AudioComponent::ClassDerivations, + "AudioSource" + ); + +AudioSource::SharedData + AudioSource::DefaultData( + AudioSource::ClassDerivations, + AudioSource::MessageHandlers + ); + +// +//############################################################################# +//############################################################################# +// +AudioSource::AudioSource( + PlugStream *stream, + Entity *entity +): + AudioComponent(stream, DefaultData) +{ + AudioResource *audio_resource; + AudioLocation *audio_location; + AudioSourcePriority priority; + AudioSourceMixPresence mix_presence; + AudioControlValue volume_mix_level; + AudioPitchCents pitch_mix_offset; + AudioControlValue brightness_mix_level; + Logical has_compression_curve; + Scalar seconds; + AudioTime compression_duration; + Logical use_brightness_scale; + Logical use_attack_time_scale; + + PlugStream_ReadObjectIDAndFindPlug(stream, &audio_resource); + PlugStream_ReadObjectIDAndFindPlug(stream, &audio_location); + MemoryStream_Read(stream, &priority); + MemoryStream_Read(stream, &mix_presence); + MemoryStream_Read(stream, &volume_mix_level); + MemoryStream_Read(stream, &pitch_mix_offset); + MemoryStream_Read(stream, &brightness_mix_level); + MemoryStream_Read(stream, &has_compression_curve); + MemoryStream_Read(stream, &seconds); + compression_duration = seconds; + MemoryStream_Read(stream, &use_brightness_scale); + MemoryStream_Read(stream, &use_attack_time_scale); + + AudioSourceX( + audio_resource, + audio_location, + entity, + priority, + mix_presence, + volume_mix_level, + pitch_mix_offset, + brightness_mix_level, + has_compression_curve, + compression_duration, + use_brightness_scale, + use_attack_time_scale + ); +} + +// +//############################################################################# +//############################################################################# +// +void + AudioSource::BuildFromPage( + PlugStream *stream, + NameList *name_list, + ClassID class_ID, + ObjectID object_ID + ) +{ + AudioComponent::BuildFromPage(stream, name_list, class_ID, object_ID); + + // + // Store fields + // + CString audio_resource_name("resource"); + PlugStream_FindEntryAndWriteObjectID(stream, name_list, audio_resource_name); + + CString audio_location_name("location"); + PlugStream_FindEntryAndWriteObjectID(stream, name_list, audio_location_name); + + MEM_STRM_WRITE_ENTRY(*stream, name_list, Enumeration, priority); + MEM_STRM_WRITE_ENTRY(*stream, name_list, Enumeration, mix_presence); + MEM_STRM_WRITE_ENTRY(*stream, name_list, AudioControlValue, volume_mix_level); + MEM_STRM_WRITE_ENTRY(*stream, name_list, AudioPitchCents, pitch_mix_offset); + MEM_STRM_WRITE_ENTRY(*stream, name_list, AudioControlValue, brightness_mix_level); + MEM_STRM_WRITE_ENTRY(*stream, name_list, Logical, has_compression_curve); + MEM_STRM_WRITE_ENTRY(*stream, name_list, Scalar, compression_duration); + MEM_STRM_WRITE_ENTRY(*stream, name_list, Logical, use_brightness_scale); + MEM_STRM_WRITE_ENTRY(*stream, name_list, Logical, use_attack_time_scale); +} + +// +//############################################################################# +//############################################################################# +// +void + AudioSource::AudioSourceX( + AudioResource *audio_resource, + AudioLocation *audio_location, + Entity *entity, + AudioSourcePriority priority, + AudioSourceMixPresence mix_presence, + AudioControlValue volume_mix_level, + AudioPitchCents pitch_mix_offset, + AudioControlValue brightness_mix_level, + Logical has_compression_curve, + const AudioTime &compression_duration, + Logical use_brightness_scale, + Logical use_attack_time_scale + ) +{ + Check(audio_resource); + Check(audio_location); + Check(entity); + + audioLocation = audio_location; + audioResource = audio_resource; + + audioSourceState = StoppedAudioSourceState; + + attackVolumeScale = 1.0f; + useAttackTimeScale = use_attack_time_scale; + attackTimeScale = 0.0f; + + audioSourcePriority = priority; + + audioSourceMixPresence = mix_presence; + volumeCompressionScale = 1.0f; + + hasCompressionCurve = has_compression_curve; + compressionDuration = compression_duration; + + volumeMixScale = volume_mix_level; + pitchMixOffset = pitch_mix_offset; + useBrightnessScale = use_brightness_scale; + brightnessMixScale = brightness_mix_level; + + volumeScale = 1.0f; + pitchOffset = 0.0f; + brightnessScale = 1.0f; + + nextExecuteFrame = NullAudioFrameCount; + suspendFinishedFrame = NullAudioFrameCount; + + entity->AddAudioComponent(this); +} + +// +//############################################################################# +//############################################################################# +// +AudioSource::~AudioSource() +{ + Verify(audioSourceState == StoppedAudioSourceState); +} + +// +//############################################################################# +//############################################################################# +// +Logical + AudioSource::TestInstance() const +{ + AudioComponent::TestInstance(); + return True; +} + +// +// Resource methods +// + +// +//############################################################################# +//############################################################################# +// +void + AudioSource::SetAudioResource(AudioResource *audio_resource) +{ + Check(this); + Check(audio_resource); + + Verify(audioSourceState == StoppedAudioSourceState); + Check(audioResource); + audioResource = audio_resource; +} + +// +// Current State/Status Accessors +// + +// +//############################################################################# +//############################################################################# +// +void + AudioSource::AssignAudioSourceState(AudioSourceState audio_source_state) +{ + Check(this); + + // + // Initialize the next start state if the source is now running + // + if (audio_source_state == RunningAudioSourceState) + { + AudioSourceStartState null_state; + nextStartState = null_state; + } + audioSourceState = audio_source_state; +} + +// +// Mixing & Logical compression methods +// + +// +//############################################################################# +//############################################################################# +// +AudioControlValue + AudioSource::CalculateSourceCompressionEffect() +{ + Check(this); + + // + // Get current volume level + // + AudioControlValue current_volume_level; + + current_volume_level = CalculateSourceVolumeScale(); + Verify(current_volume_level >= 0.0f && current_volume_level <= 1.0f); + + // + // Calculate the amount of this to apply to compression + // + if (hasCompressionCurve) + { + // + // scale = 1 / (1 + ((1/comp_dur) * duration)^2) + // + Scalar current_running_time = GetCurrentRunningTime(); + Scalar compression_duration = compressionDuration; + Scalar duration_factor; + Scalar denominator; + AudioControlValue compression_effect; + + Verify(!Small_Enough(compression_duration)); + duration_factor = + pow((1.0f/compression_duration) * current_running_time, 2.0); + // Warn(!(duration_factor > 0.0f)); + + denominator = 1.0f + duration_factor; + Verify(!Small_Enough(denominator)); + compression_effect = 1.0f / denominator; + Verify(compression_effect >= 0.0f && compression_effect <=1.0f); + + return compression_effect * current_volume_level; + } + return current_volume_level; +} + +// +//############################################################################# +//############################################################################# +// +AudioControlValue + AudioSource::CalculateSourceVolumeScale() +{ + Check(this); + + // + // Execute the watchers that will update the volume related + // member parameters + // + ExecuteWatchers(); + + // + // Calculate the resulting volume scale + // + AudioControlValue + volume_scale; + + volume_scale = volumeScale * volumeMixScale * volumeCompressionScale; + Clamp(volume_scale, MinAudioVolume, MaxAudioVolume); + return volume_scale; +} + +// +//############################################################################# +//############################################################################# +// +AudioControlValue + AudioSource::CalculateSourceBrightnessScale() +{ + Check(this); + + AudioControlValue brightness_mix_scale; + + brightness_mix_scale = brightnessScale * brightnessMixScale; + Clamp(brightness_mix_scale, MinAudioBrightness, MaxAudioBrightness); + + return brightness_mix_scale; +} + +// +//############################################################################# +//############################################################################# +// +void + AudioSource::ReceiveControl( + AudioControlID control_ID, + AudioControlValue control_value + ) +{ + Check(this); + switch (control_ID) + { + // + //---------------------------------------------------------------------- + // StartAudioControlID + //---------------------------------------------------------------------- + // + case StartAudioControlID: + { + StartMessage message(control_value); + + Check(application); + Check(application->GetAudioRenderer()); + application->GetAudioRenderer()->PostAudioRequestMessage( + this, + &message + ); + } + break; + + // + //---------------------------------------------------------------------- + // StopAudioControlID + //---------------------------------------------------------------------- + // + case StopAudioControlID: + { + StopMessage message; + + Check(application); + Check(application->GetAudioRenderer()); + application->GetAudioRenderer()->PostAudioRequestMessage( + this, + &message + ); + } + break; + + // + //---------------------------------------------------------------------- + // Misc... + //---------------------------------------------------------------------- + // + case VolumeAudioControlID: + VolumeAudioHandler(control_value); + break; + + case PitchAudioControlID: + PitchAudioHandler(control_value); + break; + + case BrightnessAudioControlID: + BrightnessAudioHandler(control_value); + break; + + case AttackVolumeAudioControlID: + AttackVolumeAudioHandler(control_value); + break; + + case AttackTimeAudioControlID: + AttackTimeAudioHandler(control_value); + break; + + case NoteAudioControlID: + NoteAudioHandler(control_value); + break; + + case DurationAudioControlID: + DurationAudioHandler(control_value); + break; + + case FlushMessagesAudioControlID: + Check(application); + Check(application->GetAudioRenderer()); + application->GetAudioRenderer()->FlushAudioMessages(this); + break; + + case NullAudioControlID: + case IdleAudioControlID: + break; + + default: + Fail("AudioSource::ReceiveControl - Should never reach here"); + break; + } +} + +// +//############################################################################# +//############################################################################# +// +void + AudioSource::StartMessageHandler(StartMessage *message) +{ + SET_AUDIO_RENDERER(); + SET_AUDIO_RENDERER_START_HANDLER(); + + Check(this); + Check(message); + Verify(message->messageID == StartMessageID); + + // + //-------------------------------------------------------------------------- + // if double trigger condition exists + // then return + //-------------------------------------------------------------------------- + // + AudioTime double_trigger_cutoff(AudioDoubleTriggerCutoff); + + #if 0 + double_trigger_cutoff = AudioDoubleTriggerCutoff; + #endif + if ( + audioSourceState == RunningAudioSourceState && + GetCurrentRunningTime() <= double_trigger_cutoff + ) + { + #ifdef LAB_ONLY + Check(application); + Check(application->GetAudioRenderer()); + application->GetAudioRenderer()->doubleTriggerCount++; + #endif + CLEAR_AUDIO_RENDERER_START_HANDLER(); + CLEAR_AUDIO_RENDERER(); + return; + } + + // + //-------------------------------------------------------------------------- + // If the source is not stopped then stop it + //-------------------------------------------------------------------------- + // + if (audioSourceState != StoppedAudioSourceState) + { + StopMessage stop_message; + StopMessageHandler(&stop_message); + } + + // + //-------------------------------------------------------------------------- + // Verify that the state is stopped + // Copy the next start state into the current start state + // Calculate duration + //-------------------------------------------------------------------------- + // + Verify(audioSourceState == StoppedAudioSourceState); + currentStartState = nextStartState; + currentStartState.CalculateDuration(message->controlValue); + + // + //-------------------------------------------------------------------------- + // Implementation specific start request + //-------------------------------------------------------------------------- + // + StartMessageImplementation(); + + CLEAR_AUDIO_RENDERER_START_HANDLER(); + CLEAR_AUDIO_RENDERER(); +} + +// +//############################################################################# +//############################################################################# +// +void +#if DEBUG_LEVEL>0 + AudioSource::StopMessageHandler(StopMessage *message) +#else + AudioSource::StopMessageHandler(StopMessage*) +#endif +{ + SET_AUDIO_RENDERER(); + SET_AUDIO_RENDERER_STOP_HANDLER(); + + Check(this); + Check(message); + Verify(message->messageID == StopMessageID); + + // + // if the source is stopped + // then return + // + if (audioSourceState == StoppedAudioSourceState) + { + CLEAR_AUDIO_RENDERER_STOP_HANDLER(); + CLEAR_AUDIO_RENDERER(); + return; + } + + // + // Implementation specific stop request + // + StopMessageImplementation(); + + CLEAR_AUDIO_RENDERER_STOP_HANDLER(); + CLEAR_AUDIO_RENDERER(); +} + +// +//############################################################################# +//############################################################################# +// +void + AudioSource::VolumeAudioHandler(AudioControlValue control_value) +{ + Check(this); + Clamp(control_value, MinAudioVolume, MaxAudioVolume); + volumeScale = control_value / (MaxAudioVolume - MinAudioVolume); +} + +// +//############################################################################# +//############################################################################# +// +void + AudioSource::PitchAudioHandler(AudioControlValue control_value) +{ + Check(this); + pitchOffset = control_value; +} + +// +//############################################################################# +//############################################################################# +// +void + AudioSource::BrightnessAudioHandler(AudioControlValue control_value) +{ + Check(this); + Clamp(control_value, MinAudioBrightness, MaxAudioBrightness); + brightnessScale = control_value / (MaxAudioBrightness - MinAudioBrightness); +} + +// +//############################################################################# +//############################################################################# +// +void + AudioSource::AttackVolumeAudioHandler(AudioControlValue control_value) +{ + Check(this); + Clamp(control_value, MinAudioAttack, MaxAudioAttack); + attackVolumeScale = control_value / (MaxAudioAttack - MinAudioAttack); +} + +// +//############################################################################# +//############################################################################# +// +void + AudioSource::AttackTimeAudioHandler(AudioControlValue control_value) +{ + Check(this); + Clamp(control_value, MinAudioAttack, MaxAudioAttack); + attackTimeScale = control_value / (MaxAudioAttack - MinAudioAttack); +} + +// +//############################################################################# +//############################################################################# +// +void + AudioSource::NoteAudioHandler(AudioControlValue control_value) +{ + Check(this); + nextStartState.SetNoteValue(control_value); +} + +// +//############################################################################# +//############################################################################# +// +void + AudioSource::DurationAudioHandler(AudioControlValue control_value) +{ + Check(this); + nextStartState.SetDurationValue(control_value); +} + +// +//############################################################################# +//############################################################################# +// +void + AudioSource::StartImplementation() +{ + currentStartState.Start(); +} + +// +//############################################################################# +//############################################################################# +// +void + AudioSource::StopImplementation() +{ + Fail("AudioSource::StopImplementation - Should never reach here"); +} + +// +//############################################################################# +//############################################################################# +// +void + AudioSource::SuspendImplementation() +{ + StopImplementation(); + Check(application); + Check(application->GetAudioRenderer()); + Check(audioResource); + suspendFinishedFrame = + application->GetAudioRenderer()->GetAudioFrameCount() + + audioResource->GetSuspendDelay(); + #ifdef LAB_ONLY + application->GetAudioRenderer()->sourceSuspendCount++; + #endif +} + +// +//############################################################################# +//############################################################################# +// +void + AudioSource::ResumeImplementation() +{ + StartImplementation(); + suspendFinishedFrame = NullAudioFrameCount; + #ifdef LAB_ONLY + Check(application); + Check(application->GetAudioRenderer()); + application->GetAudioRenderer()->sourceResumeCount++; + #endif +} + +// +//############################################################################# +//############################################################################# +// +void + AudioSource::Execute() +{ + Check(this); + + // + // Execute source if this is the next execution frame + // + AudioRenderer + *audio_renderer; + + Check(application); + audio_renderer = application->GetAudioRenderer(); + Check(audio_renderer); + if (nextExecuteFrame <= audio_renderer->GetAudioFrameCount()) + { + nextExecuteFrame = + audio_renderer->GetAudioFrameCount() + DefaultAudioFrameDelay; + + // + // Update the sources spatial model + // Execute inherited method + // Execute this sources sound model + // + UpdateSpatialModel(audio_renderer->GetAudioHead()); + AudioComponent::Execute(); + ExecuteModel(False); + } +} + diff --git a/CODE/RP/MUNGA/AUDSRC.HPP b/CODE/RP/MUNGA/AUDSRC.HPP new file mode 100644 index 0000000..f5ccde1 --- /dev/null +++ b/CODE/RP/MUNGA/AUDSRC.HPP @@ -0,0 +1,699 @@ +//===========================================================================// +// File: audsrc.hpp // +// Project: MUNGA Brick: Audio manager // +// Contents: // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 01/30/95 ECH Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(AUDSRC_HPP) +# define AUDSRC_HPP + +# if !defined(STYLE_HPP) +# include +# endif + +# if !defined(AUDIO_HPP) +# include +# endif + +# if !defined(AUDLOC_HPP) +# include +# endif + +# if !defined(AUDLVL_HPP) +# include +# endif + +# if !defined(AUDWGT_HPP) +# include +# endif + +# if !defined(AUDTIME_HPP) +# include +# endif + + //########################################################################## + //##################### AudioSourceStartState ######################## + //########################################################################## + + class AudioSourceStartState SIGNATURED + { + public: + AudioSourceStartState(); + ~AudioSourceStartState(); + + Logical + TestInstance() const; + + void + CalculateDuration(AudioControlValue control_value); + Logical + IsFinishedPlaying(); + AudioTime + GetCurrentRunningTime(); + + void + SetNoteValue(AudioControlValue note_value) + {noteValue = note_value;} + AudioControlValue + GetNoteValue() + {return noteValue;} + void + SetDurationValue(AudioControlValue duration_value); + void + Start() + {startTime = AudioTime::Now();} + + private: + AudioControlValue + noteValue; + + Logical + isDurationSet; + Logical + hasDuration; + Scalar + duration; + AudioTime + startTime; + AudioTime + endTime; + }; + + //~~~~~~~~~~~~~~~~~~~~~ AudioSourceStartState inlines ~~~~~~~~~~~~~~~~~~~~~~ + + inline Logical + AudioSourceStartState::IsFinishedPlaying() + { + Check(this); + if (hasDuration) + { + return (AudioTime::Now() > endTime); + } + return False; + } + + inline void + AudioSourceStartState::SetDurationValue(AudioControlValue duration_value) + { + Check(this); + isDurationSet = True; + duration = duration_value; + } + + inline AudioTime + AudioSourceStartState::GetCurrentRunningTime() + { + Check(this); + return (AudioTime::Now() - startTime); + } + + //########################################################################## + //######################### AudioSource ############################## + //########################################################################## + + class AudioSource__RequestMessage; + class AudioSource__StartMessage; + class AudioSource__StopMessage; + + class AudioSource: + public AudioComponent + { + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Construction, Destruction, and Testing + // + public: + AudioSource( + PlugStream *stream, + Entity *entity + ); + void + AudioSource::AudioSourceX( + AudioResource *audio_resource, + AudioLocation *audio_location, + Entity *entity, + AudioSourcePriority priority, + AudioSourceMixPresence mix_presence, + AudioControlValue volume_mix_level, + AudioPitchCents pitch_mix_offset, + AudioControlValue brightness_mix_level, + Logical has_compression_curve, + const AudioTime &compression_duration, + Logical use_brightness_scale, + Logical use_attack_time_scale + ); + ~AudioSource(); + + Logical + TestInstance() const; + + static void + BuildFromPage( + PlugStream *stream, + NameList *name_list, + ClassID class_ID, + ObjectID object_ID + ); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Location methods + // + public: + AudioLocation* + GetAudioLocation(); + void + UpdateSpatialModel(AudioHead *audio_head); + Scalar + GetDistanceToSource(); + Logical + IsAudioSourceClipped(AudioHead *audio_head); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Resource methods + // + public: + void + SetAudioResource(AudioResource *audio_resource); + AudioResource* + GetAudioResource(); + + AudioVoiceCount + GetAudioVoiceCount(); + AudioRenderType + GetAudioRenderType(); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Current State/Status Accessors + // + public: + void + AssignAudioSourceState(AudioSourceState audio_source_state); + AudioSourceState + GetAudioSourceState(); + + Logical + IsFinishedPlaying(); + AudioTime + GetCurrentRunningTime(); + + AudioControlValue + GetCurrentNoteValue(); + AudioControlValue + CalculateSourceAttackVolumeScale(); + Logical + UseSourceAttackTime(); + AudioControlValue + CalculateSourceAttackTime(); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Priority Accessors + // + public: + void + SetAudioSourcePriority(AudioSourcePriority audio_source_priority); + AudioSourcePriority + GetAudioSourcePriority(); + + AudioWeighting + CalculateAudioWeighting(); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Mixing & Logical compression methods + // + public: + AudioSourceMixPresence + GetAudioSourceMixPresence(); + + void + SetVolumeCompressionScale(AudioControlValue compression_scale); + AudioControlValue + CalculateSourceCompressionEffect(); + + virtual AudioControlValue + CalculateSourceVolumeScale(); + virtual AudioPitchCents + CalculateSourcePitchOffset(); + Logical + UseSourceBrightnessScale(); + virtual AudioControlValue + CalculateSourceBrightnessScale(); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Controller methods + // + public: + void + ReceiveControl( + AudioControlID control_ID, + AudioControlValue control_value + ); + + virtual void + VolumeAudioHandler(AudioControlValue); + virtual void + PitchAudioHandler(AudioControlValue); + virtual void + BrightnessAudioHandler(AudioControlValue); + virtual void + AttackVolumeAudioHandler(AudioControlValue); + virtual void + AttackTimeAudioHandler(AudioControlValue); + virtual void + NoteAudioHandler(AudioControlValue); + virtual void + DurationAudioHandler(AudioControlValue); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // State implementations + // + public: + virtual void + StartImplementation(); + virtual void + StopImplementation(); + + virtual void + SuspendImplementation(); + virtual void + ResumeImplementation(); + + protected: + virtual void + StartMessageImplementation() {} + virtual void + StopMessageImplementation() {} + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Execution + // + public: + Logical + RequiresMaintenance(AudioHead *audio_head); + Logical + CanResume(AudioHead *audio_head); + void + Execute(); + + protected: + virtual void + ExecuteModel(Logical force_update) {} + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Message Support + // + public: + enum { + StartMessageID = AudioComponent::NextMessageID, + StopMessageID, + NextMessageID + }; + + typedef AudioSource__RequestMessage + RequestMessage; + typedef AudioSource__StartMessage + StartMessage; + typedef AudioSource__StopMessage + StopMessage; + + static const HandlerEntry + MessageHandlerEntries[]; + static MessageHandlerSet + MessageHandlers; + + void + StartMessageHandler(StartMessage *message); + void + StopMessageHandler(StopMessage *message); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Shared Data Support + // + public: + static Derivation + ClassDerivations; + static SharedData + DefaultData; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Private data + // + private: + // + // Location data + // + AudioLocation + *audioLocation; + + // + // Resource data + // + AudioResource + *audioResource; + + // + // State/Status data + // + AudioSourceState + audioSourceState; + + AudioSourceStartState + nextStartState, + currentStartState; + + AudioControlValue + attackVolumeScale; + Logical + useAttackTimeScale; + AudioControlValue + attackTimeScale; + + // + // Priority data + // + AudioSourcePriority + audioSourcePriority; + + // + // Mixing and compression + // + AudioSourceMixPresence + audioSourceMixPresence; + AudioControlValue + volumeCompressionScale; + + Logical + hasCompressionCurve; + AudioTime + compressionDuration; + + AudioControlValue + volumeMixScale; + AudioPitchCents + pitchMixOffset; + Logical + useBrightnessScale; + AudioControlValue + brightnessMixScale; + + AudioControlValue + volumeScale; + AudioPitchCents + pitchOffset; + AudioControlValue + brightnessScale; + + // + // Execution + // + AudioFrameCount + nextExecuteFrame; + AudioFrameCount + suspendFinishedFrame; + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~ AudioSource inlines ~~~~~~~~~~~~~~~~~~~~~~~~~~ + + // + // Location methods + // + + inline AudioLocation* + AudioSource::GetAudioLocation() + { + Check(this); + return audioLocation; + } + + inline void + AudioSource::UpdateSpatialModel(AudioHead *audio_head) + { + Check(this); + Check(audioLocation); + audioLocation->UpdateSpatialModel(audio_head); + } + + inline Scalar + AudioSource::GetDistanceToSource() + { + Check(this); + Check(audioLocation); + return audioLocation->GetDistanceToSource(); + } + + inline Logical + AudioSource::IsAudioSourceClipped(AudioHead *audio_head) + { + Check(this); + Check(audioLocation); + return audioLocation->IsAudioLocationClipped(audio_head); + } + + // + // Resource methods + // + + inline AudioResource* + AudioSource::GetAudioResource() + { + Check(this); + return audioResource; + } + + inline AudioVoiceCount + AudioSource::GetAudioVoiceCount() + { + Check(this); + Check(audioResource); + return audioResource->GetVoiceCount(); + } + + inline AudioRenderType + AudioSource::GetAudioRenderType() + { + Check(this); + Check(audioResource); + return audioResource->GetAudioRenderType(); + } + + // + // Current State/Status Accessors + // + + inline AudioSourceState + AudioSource::GetAudioSourceState() + { + Check(this); + return audioSourceState; + } + + inline Logical + AudioSource::IsFinishedPlaying() + { + Check(this); + return currentStartState.IsFinishedPlaying(); + } + + inline AudioTime + AudioSource::GetCurrentRunningTime() + { + Check(this); + Verify(audioSourceState == RunningAudioSourceState); + return currentStartState.GetCurrentRunningTime(); + } + + inline AudioControlValue + AudioSource::GetCurrentNoteValue() + { + Check(this); + return currentStartState.GetNoteValue(); + } + + inline AudioControlValue + AudioSource::CalculateSourceAttackVolumeScale() + { + Check(this); + return attackVolumeScale; + } + + inline Logical + AudioSource::UseSourceAttackTime() + { + Check(this); + return useAttackTimeScale; + } + + inline AudioControlValue + AudioSource::CalculateSourceAttackTime() + { + Check(this); + return attackTimeScale; + } + + // + // Priority Accessors + // + + inline void + AudioSource::SetAudioSourcePriority( + AudioSourcePriority audio_source_priority + ) + { + Check(this); + audioSourcePriority = audio_source_priority; + } + + inline AudioSourcePriority + AudioSource::GetAudioSourcePriority() + { + Check(this); + return audioSourcePriority; + } + + inline AudioWeighting + AudioSource::CalculateAudioWeighting() + { + Check(this); + AudioWeighting + audio_weight( + GetAudioSourcePriority(), + CalculateSourceVolumeScale() + ); + return audio_weight; + } + + // + // Mixing & Logical compression methods + // + + inline AudioSourceMixPresence + AudioSource::GetAudioSourceMixPresence() + { + Check(this); + return audioSourceMixPresence; + } + + inline void + AudioSource::SetVolumeCompressionScale( + AudioControlValue compression_level + ) + { + Check(this); + volumeCompressionScale = compression_level; + } + + inline AudioPitchCents + AudioSource::CalculateSourcePitchOffset() + { + Check(this); + return pitchMixOffset + pitchOffset; + } + + inline Logical + AudioSource::UseSourceBrightnessScale() + { + Check(this); + return useBrightnessScale; + } + + // + // Execute + // + + inline Logical + AudioSource::RequiresMaintenance(AudioHead *audio_head) + { + Check(this); + Check(audio_head); + return (nextExecuteFrame <= audio_head->GetAudioFrameCount()); + } + + inline Logical + AudioSource::CanResume(AudioHead *audio_head) + { + Check(this); + Check(audio_head); + return (suspendFinishedFrame <= audio_head->GetAudioFrameCount()); + } + + //~~~~~~~~~~~~~~~~~~~~~~ AudioSource__RequestMessage ~~~~~~~~~~~~~~~~~~~~~~~ + + class AudioSource__RequestMessage: + public Receiver::Message + { + public: + AudioSource__RequestMessage( + Receiver::MessageID id, + size_t message_length, + AudioControlID control_ID, + AudioControlValue control_value + ); + + AudioControlID + controlID; + AudioControlValue + controlValue; + }; + + inline AudioSource__RequestMessage::AudioSource__RequestMessage( + Receiver::MessageID message_ID, + size_t message_length, + AudioControlID control_ID, + AudioControlValue control_value + ): + Receiver::Message( + message_ID, + message_length + ) + { + controlID = control_ID; + controlValue = control_value; + } + + //~~~~~~~~~~~~~~~~~~~~~~ AudioSource__StartMessage ~~~~~~~~~~~~~~~~~~~~~~~~~ + + class AudioSource__StartMessage: + public AudioSource::RequestMessage + { + public: + AudioSource__StartMessage(AudioControlValue control_value); + }; + + inline AudioSource__StartMessage::AudioSource__StartMessage( + AudioControlValue control_value + ): + AudioSource::RequestMessage( + AudioSource::StartMessageID, + sizeof(AudioSource__StartMessage), + StartAudioControlID, + control_value + ) + { + } + + //~~~~~~~~~~~~~~~~~~~~~~ AudioSource__StopMessage ~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class AudioSource__StopMessage: + public AudioSource::RequestMessage + { + public: + AudioSource__StopMessage(); + }; + + inline AudioSource__StopMessage::AudioSource__StopMessage(): + AudioSource::RequestMessage( + AudioSource::StopMessageID, + sizeof(AudioSource__StopMessage), + StopAudioControlID, + 0.0f + ) + { + } + +#endif diff --git a/CODE/RP/MUNGA/AUDTIME.CPP b/CODE/RP/MUNGA/AUDTIME.CPP new file mode 100644 index 0000000..9084326 --- /dev/null +++ b/CODE/RP/MUNGA/AUDTIME.CPP @@ -0,0 +1,83 @@ +//===========================================================================// +// 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 +#pragma hdrstop + +#if !defined(AUDTIME_HPP) + #include +#endif + +#if !defined(APP_HPP) + #include +#endif + +#if !defined(AUDREND_HPP) + #include +#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()); +} + diff --git a/CODE/RP/MUNGA/AUDTIME.HPP b/CODE/RP/MUNGA/AUDTIME.HPP new file mode 100644 index 0000000..70990f9 --- /dev/null +++ b/CODE/RP/MUNGA/AUDTIME.HPP @@ -0,0 +1,279 @@ +//===========================================================================// +// File: audtime.hpp // +// 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 // +//===========================================================================// + +#if !defined(AUDTIME_HPP) +# define AUDTIME_HPP + +# if !defined(SCALAR_HPP) +# include +# endif + +# if !defined(AUDIO_HPP) +# include +# endif + + //########################################################################## + //########################## AudioTime ############################### + //########################################################################## + + class AudioTime SIGNATURED + { + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Construction, Destruction, and Testing + // + public: + AudioTime(); + AudioTime(const AudioTime&); + AudioTime(Scalar seconds); + AudioTime(AudioFrameCount frame_count); + ~AudioTime(); + + Logical + TestInstance() const; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Assignment + // + public: + AudioTime& + operator=(const AudioTime&); + AudioTime& + operator=(Scalar seconds); + AudioTime& + operator=(AudioFrameCount frame_count); + + operator Scalar() const; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Logical Operators + // + public: + Logical + operator<(const AudioTime&) const; + Logical + operator<=(const AudioTime&) const; + Logical + operator>(const AudioTime&) const; + Logical + operator>=(const AudioTime&) const; + Logical + operator==(const AudioTime&) const; + Logical + operator!=(const AudioTime&) const; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Addition Operators + // + public: + operator AudioFrameCount() const; + + AudioTime + operator+(const AudioTime&) const; + AudioTime + operator-(const AudioTime&) const; + + AudioTime& + operator+=(const AudioTime &t); + AudioTime& + operator-=(const AudioTime &t); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Public Constants + // + public: + static const AudioTime + Null; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Current Time + // + public: + static AudioTime + Now(); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Private Methods + // + private: + AudioFrameCount + Seconds_To_Frames(Scalar seconds) const; + Scalar + Frames_To_Seconds(AudioFrameCount frames) const; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Private Data + // + private: + AudioFrameCount + frameCount; + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~ AudioTime inlines ~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + // + // Construction, Destruction, and Testing + // + inline AudioTime::AudioTime(): + frameCount(NullAudioFrameCount) + { + } + + inline AudioTime::AudioTime(const AudioTime &audio_time): + frameCount(audio_time.frameCount) + { + } + + inline AudioTime::AudioTime(Scalar seconds) + { + frameCount = Seconds_To_Frames(seconds); + } + + inline AudioTime::AudioTime(AudioFrameCount frame_count): + frameCount(frame_count) + { + } + + inline AudioTime::~AudioTime() + { + } + + // + // Assignment + // + inline AudioTime& + AudioTime::operator=(const AudioTime &audio_time) + { + Check(this); + Check(&audio_time); + frameCount = audio_time.frameCount; + return *this; + } + + inline AudioTime& + AudioTime::operator=(Scalar seconds) + { + Check(this); + frameCount = Seconds_To_Frames(seconds); + return *this; + } + + inline AudioTime& + AudioTime::operator=(AudioFrameCount frame_count) + { + Check(this); + frameCount = frame_count; + return *this; + } + + inline + AudioTime::operator Scalar() const + { + Check(this); + return Frames_To_Seconds(frameCount); + } + + // + // Logical Operators + // + inline Logical + AudioTime::operator<(const AudioTime &audio_time) const + { + Check(this); + Check(&audio_time); + return frameCount < audio_time.frameCount; + } + + inline Logical + AudioTime::operator<=(const AudioTime &audio_time) const + { + Check(this); + Check(&audio_time); + return frameCount <= audio_time.frameCount; + } + + inline Logical + AudioTime::operator>(const AudioTime &audio_time) const + { + Check(this); + Check(&audio_time); + return frameCount > audio_time.frameCount; + } + + inline Logical + AudioTime::operator>=(const AudioTime &audio_time) const + { + Check(this); + Check(&audio_time); + return frameCount >= audio_time.frameCount; + } + + inline Logical + AudioTime::operator==(const AudioTime &audio_time) const + { + Check(this); + Check(&audio_time); + return frameCount == audio_time.frameCount; + } + + inline Logical + AudioTime::operator!=(const AudioTime &audio_time) const + { + Check(this); + Check(&audio_time); + return frameCount != audio_time.frameCount; + } + + // + // Addition Operators + // + inline AudioTime::operator AudioFrameCount() const + { + Check(this); + return frameCount; + } + + inline AudioTime + AudioTime::operator+(const AudioTime &audio_time) const + { + Check(this); + Check(&audio_time); + return AudioTime(frameCount + audio_time.frameCount); + } + + inline AudioTime + AudioTime::operator-(const AudioTime &audio_time) const + { + Check(this); + Check(&audio_time); + return AudioTime(frameCount - audio_time.frameCount); + } + + inline AudioTime& + AudioTime::operator+=(const AudioTime &audio_time) + { + Check(this); + Check(&audio_time); + frameCount += audio_time.frameCount; + return *this; + } + + inline AudioTime& + AudioTime::operator-=(const AudioTime &audio_time) + { + Check(this); + Check(&audio_time); + frameCount -= audio_time.frameCount; + return *this; + } + +#endif diff --git a/CODE/RP/MUNGA/AUDTOOLS.CPP b/CODE/RP/MUNGA/AUDTOOLS.CPP new file mode 100644 index 0000000..641b38b --- /dev/null +++ b/CODE/RP/MUNGA/AUDTOOLS.CPP @@ -0,0 +1,160 @@ +//===========================================================================// +// File: l4audres.cpp // +// 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 // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(AUDTOOLS_HPP) +# include +#endif + +#include +#include +#include + +#if !defined(AUDIO_HPP) +# include +#endif + +#if !defined(BOXSOLID_HPP) +# include +#endif + +//############################################################################# +//###################### AudioCreateSymbols ############################# +//############################################################################# + +// +//############################################################################# +//############################################################################# +// +AudioCreateSymbols::AudioCreateSymbols() +{ +} + +// +//############################################################################# +//############################################################################# +// +AudioCreateSymbols::~AudioCreateSymbols() +{ +} + +// +//############################################################################# +//############################################################################# +// +void + AudioCreateSymbols::MakeFileReadWrite(const CString &file_name) +{ + if (access(file_name, 0) == 0) + { + int amode = S_IREAD|S_IWRITE; + #if DEBUG_LEVEL>0 + int ret = + #endif + chmod(file_name, amode); + Verify(ret == 0); + } +} + +// +//############################################################################# +//############################################################################# +// +void + AudioCreateSymbols::Execute() +{ + // + // Make file read/write + // + CString file_name("audio\\symbols.scp"); + + MakeFileReadWrite(file_name); + + // + // Open the file for writing + // + ofstream symbol_file(file_name, ios::out); + + Verify(symbol_file); + symbol_file << "[macro]\n"; + + // + // Audio + // + WriteEntryStream(symbol_file); +} + +// +//############################################################################# +//############################################################################# +// +void + AudioCreateSymbols::WriteEntryStream(ofstream &symbol_file) +{ + #define WRITE_ENTRY(name)\ + {\ + Verify(symbol_file);\ + symbol_file << #name;\ + symbol_file << "=";\ + symbol_file << name;\ + symbol_file << "\n";\ + } + + // + // Solids + // + WRITE_ENTRY(BoxedSolid::StoneMaterial); + WRITE_ENTRY(BoxedSolid::GravelMaterial); + WRITE_ENTRY(BoxedSolid::ConcreteMaterial); + WRITE_ENTRY(BoxedSolid::WoodMaterial); + WRITE_ENTRY(BoxedSolid::RockMaterial); + WRITE_ENTRY(BoxedSolid::OurCraftMaterial); + WRITE_ENTRY(BoxedSolid::OtherCraftMaterial); + + // + // Audio + // + WRITE_ENTRY(TransientAudioRenderType); + WRITE_ENTRY(SustainedAudioRenderType); + + WRITE_ENTRY(MinAudioSourcePriority); + WRITE_ENTRY(LowAudioSourcePriority); + WRITE_ENTRY(MedAudioSourcePriority); + WRITE_ENTRY(HighAudioSourcePriority); + WRITE_ENTRY(MaxAudioSourcePriority); + + WRITE_ENTRY(MinAudioSourceMixPresence); + WRITE_ENTRY(LowAudioSourceMixPresence); + WRITE_ENTRY(MedAudioSourceMixPresence); + WRITE_ENTRY(HighAudioSourceMixPresence); + WRITE_ENTRY(MaxAudioSourceMixPresence); + WRITE_ENTRY(ManualAudioSourceMixPresence); + + WRITE_ENTRY(NullAudioControlID); + WRITE_ENTRY(NoteAudioControlID); + WRITE_ENTRY(AttackVolumeAudioControlID); + WRITE_ENTRY(AttackTimeAudioControlID); + WRITE_ENTRY(DurationAudioControlID); + WRITE_ENTRY(VolumeAudioControlID); + WRITE_ENTRY(PitchAudioControlID); + WRITE_ENTRY(BrightnessAudioControlID); + WRITE_ENTRY(StartAudioControlID); + WRITE_ENTRY(StopAudioControlID); + WRITE_ENTRY(IdleAudioControlID); + WRITE_ENTRY(FlushMessagesAudioControlID); + WRITE_ENTRY(TempoAudioControlID); +} + diff --git a/CODE/RP/MUNGA/AUDTOOLS.HPP b/CODE/RP/MUNGA/AUDTOOLS.HPP new file mode 100644 index 0000000..37e76f5 --- /dev/null +++ b/CODE/RP/MUNGA/AUDTOOLS.HPP @@ -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 +# endif + +# if !defined(CSTR_HPP) +# include +# 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 + diff --git a/CODE/RP/MUNGA/AUDWGT.CPP b/CODE/RP/MUNGA/AUDWGT.CPP new file mode 100644 index 0000000..83d72d9 --- /dev/null +++ b/CODE/RP/MUNGA/AUDWGT.CPP @@ -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 +#pragma hdrstop + +#if !defined(AUDWGT_HPP) +# include +#endif + +//############################################################################# +//########################## AudioWeighting ############################# +//############################################################################# + +const AudioWeighting + AudioWeighting::Null; + +// +//############################################################################# +//############################################################################# +// +Logical + AudioWeighting::TestInstance() const +{ + return True; +} + diff --git a/CODE/RP/MUNGA/AUDWGT.HPP b/CODE/RP/MUNGA/AUDWGT.HPP new file mode 100644 index 0000000..0217da0 --- /dev/null +++ b/CODE/RP/MUNGA/AUDWGT.HPP @@ -0,0 +1,164 @@ +//===========================================================================// +// File: audwgt.hpp // +// Project: MUNGA Brick: Audio Renderer // +// Contents: Interface specification 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 // +//===========================================================================// + +#if !defined(AUDWGT_HPP) + #define AUDWGT_HPP + +# if !defined(STYLE_HPP) +# include +# endif + +# if !defined(AUDIO_HPP) +# include +# endif + + //########################################################################## + //######################## AudioWeighting ############################ + //########################################################################## + + class AudioWeighting SIGNATURED + { + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Construction, Destruction, and Testing + // + public: + AudioWeighting(); + AudioWeighting(const AudioWeighting&); + AudioWeighting( + AudioSourcePriority audio_priority, + AudioControlValue audio_volume + ); + + AudioWeighting& + operator=(const AudioWeighting&); + + Logical + TestInstance() const; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Logical Operators + // + public: + Logical + operator<(const AudioWeighting&) const; + Logical + operator<=(const AudioWeighting&) const; + Logical + operator>(const AudioWeighting&) const; + Logical + operator>=(const AudioWeighting&) const; + Logical + operator==(const AudioWeighting&) const; + Logical + operator!=(const AudioWeighting&) const; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Public Constants + // + public: + static const AudioWeighting + Null; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Private Data + // + private: + Scalar + weight; + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~ AudioWeighting inlines ~~~~~~~~~~~~~~~~~~~~~~~ + + inline AudioWeighting::AudioWeighting(): + weight(0.0f) + { + } + + inline AudioWeighting::AudioWeighting(const AudioWeighting &audio_weighting): + weight(audio_weighting.weight) + { + } + + inline AudioWeighting::AudioWeighting( + AudioSourcePriority audio_priority, + AudioControlValue audio_volume + ) + { + Verify( + (Enumeration)audio_priority >= 0 && + (Enumeration)audio_priority < AUDIO_SOURCE_PRIORITY_COUNT + ); + Verify( + (Enumeration)audio_priority >= (Enumeration)MinAudioSourcePriority && + (Enumeration)audio_priority <= (Enumeration)MaxAudioSourcePriority + ); + Verify( + audio_volume >= 0.0f && + audio_volume <= 1.0f + ); + weight = 0.0f -(Scalar)audio_priority - audio_volume; + } + + inline AudioWeighting& + AudioWeighting::operator=(const AudioWeighting &audio_weighting) + { + Check(this); + weight = audio_weighting.weight; + return *this; + } + + inline Logical + AudioWeighting::operator<(const AudioWeighting &audio_weighting) const + { + Check(this); + return weight < audio_weighting.weight; + } + + inline Logical + AudioWeighting::operator<=(const AudioWeighting &audio_weighting) const + { + Check(this); + return weight <= audio_weighting.weight; + } + + inline Logical + AudioWeighting::operator>(const AudioWeighting &audio_weighting) const + { + Check(this); + return weight > audio_weighting.weight; + } + + inline Logical + AudioWeighting::operator>=(const AudioWeighting &audio_weighting) const + { + Check(this); + return weight >= audio_weighting.weight; + } + + inline Logical + AudioWeighting::operator==(const AudioWeighting &audio_weighting) const + { + Check(this); + return Close_Enough(weight, audio_weighting.weight, 0.01f); + } + + inline Logical + AudioWeighting::operator!=(const AudioWeighting &audio_weighting) const + { + Check(this); + return !Close_Enough(weight, audio_weighting.weight, 0.01f); + } + +#endif + diff --git a/CODE/RP/MUNGA/AUDWTHR.CPP b/CODE/RP/MUNGA/AUDWTHR.CPP new file mode 100644 index 0000000..54b4f6e --- /dev/null +++ b/CODE/RP/MUNGA/AUDWTHR.CPP @@ -0,0 +1,1072 @@ +//===========================================================================// +// File: audwthr.hh // +// Project: MUNGA Brick: Audio Renderer // +// Contents: // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- -----------------------------------------------------------// +// 01/31/95 ECH Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(AUDWTHR_HPP) +# include +#endif + +#if !defined(OBJSTRM_HPP) +# include +#endif + +#if !defined(NAMELIST_HPP) +# include +#endif + +//############################################################################# +//########################### AudioIdleWatcher ########################## +//############################################################################# + +// +//############################################################################# +//############################################################################# +// +AudioIdleWatcher::AudioIdleWatcher( + PlugStream *stream, + Entity *entity +): + Component(stream), + audioComponentSocket(this) +{ + AudioComponent *audio_component; + PlugStream_ReadObjectIDAndFindPlug(stream, &audio_component); + AudioIdleWatcherX(audio_component, entity); +} + +// +//############################################################################# +//############################################################################# +// +void + AudioIdleWatcher::AudioIdleWatcherX( + AudioComponent *audio_component, + Entity *entity + ) +{ + Check(audio_component); + Check(entity); + audioComponentSocket.Add(audio_component); + entity->AddAudioWatcher(this); +} + +// +//############################################################################# +//############################################################################# +// +AudioIdleWatcher::~AudioIdleWatcher() +{ +} + +// +//############################################################################# +//############################################################################# +// +void + AudioIdleWatcher::BuildFromPage( + PlugStream *stream, + NameList *name_list, + ClassID class_ID, + ObjectID object_ID + ) +{ + Component::BuildFromPage(stream, name_list, class_ID, object_ID); + + CString audio_component_name("audio_component"); + PlugStream_FindEntryAndWriteObjectID(stream, name_list, audio_component_name); +} + +// +//############################################################################# +//############################################################################# +// +Logical + AudioIdleWatcher::TestInstance() const +{ + Component::TestInstance(); + Check(&audioComponentSocket); + return True; +} + +// +//############################################################################# +//############################################################################# +// +void + AudioIdleWatcher::ReleaseLinkHandler( + Socket *socket, + Plug *plug + ) +{ + if (socket == &audioComponentSocket) + { + Check(&audioComponentSocket); + Check(socket); + Unregister_Object(this); + delete this; + } + else + { + Component::ReleaseLinkHandler(socket, plug); + } +} + +// +//############################################################################# +//############################################################################# +// +void + AudioIdleWatcher::Execute() +{ + Check(this); + Check(audioComponentSocket.GetCurrent()); + audioComponentSocket.GetCurrent()->ReceiveControl( + IdleAudioControlID, + 0.0f + ); +} + +//############################################################################# +//############################## AudioMotionTrigger ##################### +//############################################################################# + +// +//############################################################################# +//############################################################################# +// +AudioMotionTrigger::AudioMotionTrigger( + PlugStream *stream, + Entity *entity +): + AudioTriggerOf(stream, entity) +{ + MemoryStream_Read(stream, &motionType); + MemoryStream_Read(stream, &motionValue); + + PrimeWatcher(); +} + +// +//############################################################################# +//############################################################################# +// +AudioMotionTrigger::~AudioMotionTrigger() +{ +} + +// +//############################################################################# +//############################################################################# +// +void + AudioMotionTrigger::BuildFromPage( + PlugStream *stream, + NameList *name_list, + ClassID class_ID, + ObjectID object_ID + ) +{ + AudioTriggerOf::BuildFromPage(stream, name_list, class_ID, object_ID); + + // + // Store fields + // + MEM_STRM_WRITE_ENTRY(*stream, name_list, Enumeration, motion_type); + MEM_STRM_WRITE_ENTRY(*stream, name_list, Enumeration, motion_value); +} + +// +//############################################################################# +//############################################################################# +// +AudioControlValue + AudioMotionTrigger::ExtractInterestingValue(const Motion *attribute_ptr) +{ + Check(this); + Check(attribute_ptr); + + switch (motionType) + { + case LinearMotionType: + switch (motionValue) + { + case XMotionValue: + return attribute_ptr->linearMotion.x; + case YMotionValue: + return attribute_ptr->linearMotion.y; + case ZMotionValue: + return attribute_ptr->linearMotion.z; + case LengthMotionValue: + return attribute_ptr->linearMotion.Length(); + } + break; + + case AngularMotionType: + switch (motionValue) + { + case XMotionValue: + return attribute_ptr->angularMotion.x; + case YMotionValue: + return attribute_ptr->angularMotion.y; + case ZMotionValue: + return attribute_ptr->angularMotion.z; + case LengthMotionValue: + return attribute_ptr->angularMotion.Length(); + } + break; + } + + Fail("AudioMotionTrigger::ExtractInterestingValue - Should never reach here"); + return 0.0f; +} + +// +//############################################################################# +//############################################################################# +// +#if DEBUG_LEVEL>0 +void + AudioMotionTrigger::DumpValue(const Motion *attribute_ptr) +#else +void + AudioMotionTrigger::DumpValue(const Motion*) +#endif +{ + Check(this); + Check(attribute_ptr); + + switch (motionType) + { + case LinearMotionType: + switch (motionValue) + { + case XMotionValue: + Dump(attribute_ptr->linearMotion.x); + break; + case YMotionValue: + Dump(attribute_ptr->linearMotion.y); + break; + case ZMotionValue: + Dump(attribute_ptr->linearMotion.z); + break; + case LengthMotionValue: + Dump(attribute_ptr->linearMotion.Length()); + break; + } + break; + + case AngularMotionType: + switch (motionValue) + { + case XMotionValue: + Dump(attribute_ptr->angularMotion.x); + break; + case YMotionValue: + Dump(attribute_ptr->angularMotion.y); + break; + case ZMotionValue: + Dump(attribute_ptr->angularMotion.z); + break; + case LengthMotionValue: + Dump(attribute_ptr->angularMotion.Length()); + break; + } + break; + } +} + +//############################################################################# +//############################## AudioMotionScale ####################### +//############################################################################# + +// +//############################################################################# +//############################################################################# +// +AudioMotionScale::AudioMotionScale( + PlugStream *stream, + Entity *entity +): + AudioScaleOf(stream, entity) +{ + MemoryStream_Read(stream, &motionType); + MemoryStream_Read(stream, &motionValue); + + PrimeWatcher(); +} + +// +//############################################################################# +//############################################################################# +// +AudioMotionScale::~AudioMotionScale() +{ +} + +// +//############################################################################# +//############################################################################# +// +void + AudioMotionScale::BuildFromPage( + PlugStream *stream, + NameList *name_list, + ClassID class_ID, + ObjectID object_ID + ) +{ + AudioScaleOf::BuildFromPage(stream, name_list, class_ID, object_ID); + + // + // Store fields + // + MEM_STRM_WRITE_ENTRY(*stream, name_list, Enumeration, motion_type); + MEM_STRM_WRITE_ENTRY(*stream, name_list, Enumeration, motion_value); +} + +// +//############################################################################# +//############################################################################# +// +AudioControlValue + AudioMotionScale::ExtractInterestingValue(const Motion *attribute_ptr) +{ + Check(this); + Check(attribute_ptr); + + switch (motionType) + { + case LinearMotionType: + switch (motionValue) + { + case XMotionValue: + return attribute_ptr->linearMotion.x; + case YMotionValue: + return attribute_ptr->linearMotion.y; + case ZMotionValue: + return attribute_ptr->linearMotion.z; + case LengthMotionValue: + return attribute_ptr->linearMotion.Length(); + } + break; + + case AngularMotionType: + switch (motionValue) + { + case XMotionValue: + return attribute_ptr->angularMotion.x; + case YMotionValue: + return attribute_ptr->angularMotion.y; + case ZMotionValue: + return attribute_ptr->angularMotion.z; + case LengthMotionValue: + return attribute_ptr->angularMotion.Length(); + } + break; + } + + Fail("AudioMotionScale::ExtractInterestingValue - Should never reach here"); + return 0.0f; +} + +// +//############################################################################# +//############################################################################# +// +#if DEBUG_LEVEL>0 +void + AudioMotionScale::DumpValue(const Motion *attribute_ptr) +#else +void + AudioMotionScale::DumpValue(const Motion*) +#endif +{ + Check(this); + Check(attribute_ptr); + + switch (motionType) + { + case LinearMotionType: + switch (motionValue) + { + case XMotionValue: + Dump(attribute_ptr->linearMotion.x); + break; + case YMotionValue: + Dump(attribute_ptr->linearMotion.y); + break; + case ZMotionValue: + Dump(attribute_ptr->linearMotion.z); + break; + case LengthMotionValue: + Dump(attribute_ptr->linearMotion.Length()); + break; + } + break; + + case AngularMotionType: + switch (motionValue) + { + case XMotionValue: + Dump(attribute_ptr->angularMotion.x); + break; + case YMotionValue: + Dump(attribute_ptr->angularMotion.y); + break; + case ZMotionValue: + Dump(attribute_ptr->angularMotion.z); + break; + case LengthMotionValue: + Dump(attribute_ptr->angularMotion.Length()); + break; + } + break; + } +} + +//############################################################################# +//############################## AudioHingeScale ######################## +//############################################################################# + +// +//############################################################################# +//############################################################################# +// +AudioHingeScale::AudioHingeScale( + PlugStream *stream, + Entity *entity +): + AudioScaleOf(stream, entity) +{ + PrimeWatcher(); +} + +// +//############################################################################# +//############################################################################# +// +AudioHingeScale::~AudioHingeScale() +{ +} + +// +//############################################################################# +//############################################################################# +// +AudioControlValue + AudioHingeScale::ExtractInterestingValue(const Hinge *attribute_ptr) +{ + Check(this); + Check(attribute_ptr); + return attribute_ptr->rotationAmount; +} + +// +//############################################################################# +//############################################################################# +// +#if DEBUG_LEVEL>0 +void + AudioHingeScale::DumpValue(const Hinge *attribute_ptr) +#else +void + AudioHingeScale::DumpValue(const Hinge*) +#endif +{ + Check(this); + Check(attribute_ptr); + Dump(attribute_ptr->rotationAmount); +} + +//############################################################################# +//############################## AudioScalarTrigger ##################### +//############################################################################# + +// +//############################################################################# +//############################################################################# +// +AudioScalarTrigger::AudioScalarTrigger( + PlugStream *stream, + Entity *entity +): + AudioTriggerOf(stream, entity) +{ + PrimeWatcher(); +} + +// +//############################################################################# +//############################################################################# +// +AudioScalarTrigger::~AudioScalarTrigger() +{ +} + +// +//############################################################################# +//############################################################################# +// +void + AudioScalarTrigger::BuildFromPage( + PlugStream *stream, + NameList *name_list, + ClassID class_ID, + ObjectID object_ID + ) +{ + AudioTriggerOf::BuildFromPage(stream, name_list, class_ID, object_ID); +} + +// +//############################################################################# +//############################################################################# +// +AudioControlValue + AudioScalarTrigger::ExtractInterestingValue(const Scalar *attribute_ptr) +{ + Check(this); + Check_Pointer(attribute_ptr); + return *attribute_ptr; +} + +//############################################################################# +//####################### AudioScalarDeltaTrigger ####################### +//############################################################################# + +// +//############################################################################# +//############################################################################# +// +AudioScalarDeltaTrigger::AudioScalarDeltaTrigger( + PlugStream *stream, + Entity *entity +): + AudioDeltaOf(stream, entity) +{ + PrimeWatcher(); +} + +// +//############################################################################# +//############################################################################# +// +AudioScalarDeltaTrigger::~AudioScalarDeltaTrigger() +{ +} + +// +//############################################################################# +//############################################################################# +// +void + AudioScalarDeltaTrigger::BuildFromPage( + PlugStream *stream, + NameList *name_list, + ClassID class_ID, + ObjectID object_ID + ) +{ + AudioDeltaOf::BuildFromPage(stream, name_list, class_ID, object_ID); +} + +//############################################################################# +//############################## AudioScalarScale ####################### +//############################################################################# + +// +//############################################################################# +//############################################################################# +// +AudioScalarScale::AudioScalarScale( + PlugStream *stream, + Entity *entity +): + AudioScaleOf(stream, entity) +{ + PrimeWatcher(); +} + +// +//############################################################################# +//############################################################################# +// +AudioScalarScale::~AudioScalarScale() +{ +} + +// +//############################################################################# +//############################################################################# +// +AudioControlValue + AudioScalarScale::ExtractInterestingValue(const Scalar *attribute_ptr) +{ + Check(this); + Check_Pointer(attribute_ptr); + return *attribute_ptr; +} + +//############################################################################# +//######################### AudioLogicalTrigger ######################### +//############################################################################# + +// +//############################################################################# +//############################################################################# +// +AudioLogicalTrigger::AudioLogicalTrigger( + PlugStream *stream, + Entity *entity +): + AudioMatchOf(stream, entity) +{ + PrimeWatcher(); +} + +// +//############################################################################# +//############################################################################# +// +AudioLogicalTrigger::~AudioLogicalTrigger() +{ +} + +// +//############################################################################# +//############################################################################# +// +void + AudioLogicalTrigger::BuildFromPage( + PlugStream *stream, + NameList *name_list, + ClassID class_ID, + ObjectID object_ID + ) +{ + AudioMatchOf::BuildFromPage(stream, name_list, class_ID, object_ID); +} + +// +//############################################################################# +//############################################################################# +// +int + AudioLogicalTrigger::ExtractInterestingValue(const Logical *attribute_ptr) +{ + Check(this); + Check_Pointer(attribute_ptr); + return *attribute_ptr; +} + +//############################################################################# +//######################### AudioEnumerationTrigger ##################### +//############################################################################# + +// +//############################################################################# +//############################################################################# +// +AudioEnumerationTrigger::AudioEnumerationTrigger( + PlugStream *stream, + Entity *entity +): + AudioMatchOf(stream, entity) +{ + PrimeWatcher(); +} + +// +//############################################################################# +//############################################################################# +// +AudioEnumerationTrigger::~AudioEnumerationTrigger() +{ +} + +// +//############################################################################# +//############################################################################# +// +void + AudioEnumerationTrigger::BuildFromPage( + PlugStream *stream, + NameList *name_list, + ClassID class_ID, + ObjectID object_ID + ) +{ + AudioMatchOf::BuildFromPage(stream, name_list, class_ID, object_ID); +} + +// +//############################################################################# +//############################################################################# +// +int + AudioEnumerationTrigger::ExtractInterestingValue(const Enumeration *attribute_ptr) +{ + Check(this); + Check_Pointer(attribute_ptr); + return *attribute_ptr; +} + +//############################################################################# +//###################### AudioEnumerationDeltaTrigger ################### +//############################################################################# + +// +//############################################################################# +//############################################################################# +// +AudioEnumerationDeltaTrigger::AudioEnumerationDeltaTrigger( + PlugStream *stream, + Entity *entity +): + AudioDeltaOf(stream, entity) +{ + PrimeWatcher(); +} + +// +//############################################################################# +//############################################################################# +// +AudioEnumerationDeltaTrigger::~AudioEnumerationDeltaTrigger() +{ +} + +// +//############################################################################# +//############################################################################# +// +void + AudioEnumerationDeltaTrigger::BuildFromPage( + PlugStream *stream, + NameList *name_list, + ClassID class_ID, + ObjectID object_ID + ) +{ + AudioDeltaOf::BuildFromPage( + stream, + name_list, + class_ID, + object_ID + ); +} + +//############################################################################# +//############################# AudioIntegerTrigger ##################### +//############################################################################# + +// +//############################################################################# +//############################################################################# +// +AudioIntegerTrigger::AudioIntegerTrigger( + PlugStream *stream, + Entity *entity +): + AudioTriggerOf(stream, entity) +{ + PrimeWatcher(); +} + +// +//############################################################################# +//############################################################################# +// +AudioIntegerTrigger::~AudioIntegerTrigger() +{ +} + +// +//############################################################################# +//############################################################################# +// +void + AudioIntegerTrigger::BuildFromPage( + PlugStream *stream, + NameList *name_list, + ClassID class_ID, + ObjectID object_ID + ) +{ + AudioTriggerOf::BuildFromPage(stream, name_list, class_ID, object_ID); +} + +// +//############################################################################# +//############################################################################# +// +AudioControlValue + AudioIntegerTrigger::ExtractInterestingValue(const int *attribute_ptr) +{ + Check(this); + Check_Pointer(attribute_ptr); + return *attribute_ptr; +} + +//############################################################################# +//###################### AudioControlsButtonTrigger ##################### +//############################################################################# + +// +//############################################################################# +//############################################################################# +// +AudioControlsButtonTrigger::AudioControlsButtonTrigger( + PlugStream *stream, + Entity *entity +): + AudioTriggerOf(stream, entity) +{ + PrimeWatcher(); +} + +// +//############################################################################# +//############################################################################# +// +AudioControlsButtonTrigger::~AudioControlsButtonTrigger() +{ +} + +// +//############################################################################# +//############################################################################# +// +void + AudioControlsButtonTrigger::BuildFromPage( + PlugStream *stream, + NameList *name_list, + ClassID class_ID, + ObjectID object_ID + ) +{ + AudioTriggerOf::BuildFromPage( + stream, + name_list, + class_ID, + object_ID + ); +} + +// +//############################################################################# +//############################################################################# +// +AudioControlValue + AudioControlsButtonTrigger::ExtractInterestingValue( + const ControlsButton *attribute_ptr + ) +{ + Check(this); + Check_Pointer(attribute_ptr); + return *attribute_ptr; +} + +//############################################################################# +//########################### AudioStateWatcher ######################### +//############################################################################# + +// +//############################################################################# +//############################################################################# +// +AudioStateWatcher::AudioStateWatcher( + PlugStream *stream, + Entity *entity +): + AudioWatcherOf(stream, entity) +{ + Check_Pointer(attributePointer); + Cast_Object(StateIndicator*, attributePointer)->AddAudioWatcher(this); +} + +// +//############################################################################# +//############################################################################# +// +AudioStateWatcher::~AudioStateWatcher() +{ +} + +// +//############################################################################# +//############################################################################# +// +void + AudioStateWatcher::SendNotificationOfChange() +{ + Check(this); + + StateIndicator *state_indicator = GetCurrentPointer(); + + Check(state_indicator); + StateChanged( + state_indicator->GetOldState(), + state_indicator->GetState() + ); +} + +// +//############################################################################# +//############################################################################# +// +void + AudioStateWatcher::StateChanged( + Enumeration, + Enumeration + ) +{ + Fail("AudioStateWatcher::StateChanged - Should never reach here"); +} + +//############################################################################# +//############################## AudioStateTrigger ###################### +//############################################################################# + +// +//############################################################################# +//############################################################################# +// +AudioStateTrigger::AudioStateTrigger( + PlugStream *stream, + Entity *entity +): + AudioStateWatcher(stream, entity) +{ + MemoryStream_Read(stream, &triggerState); + MemoryStream_Read(stream, &inverseTrigger); + MemoryStream_Read(stream, &controlID); + MemoryStream_Read(stream, &controlValue); + MemoryStream_Read(stream, &excludeTransition); + MemoryStream_Read(stream, &excludeState); + + PrimeWatcher(); +} + +// +//############################################################################# +//############################################################################# +// +AudioStateTrigger::~AudioStateTrigger() +{ +} + +// +//############################################################################# +//############################################################################# +// +void + AudioStateTrigger::BuildFromPage( + PlugStream *stream, + NameList *name_list, + ClassID class_ID, + ObjectID object_ID + ) +{ + AudioStateWatcher::BuildFromPage(stream, name_list, class_ID, object_ID); + + // + // Write standard fields + // + MEM_STRM_WRITE_ENTRY(*stream, name_list, Enumeration, trigger_state); + MEM_STRM_WRITE_ENTRY(*stream, name_list, Logical, inverse_trigger); + MEM_STRM_WRITE_ENTRY(*stream, name_list, Enumeration, control_ID); + MEM_STRM_WRITE_ENTRY(*stream, name_list, AudioControlValue, control_value); + + // + // Write optional fields + // + Logical exclude_transition = False; + Enumeration exclude_state = 0; + + if ((name_list)->FindData("exclude_state") != NULL) + { + exclude_transition = True; + Check_Pointer((name_list)->FindData("exclude_state")); + Convert_From_Ascii( + (const char *)(name_list)->FindData("exclude_state"), + &exclude_state + ); + } + MemoryStream_Write(stream, &exclude_transition); + MemoryStream_Write(stream, &exclude_state); +} + +// +//############################################################################# +//############################################################################# +// +void + AudioStateTrigger::StateChanged( + Enumeration old_state, + Enumeration new_state + ) +{ + Check(this); + + // + // If the exclude switch is on then check for the transition + // + if (excludeTransition) + { + if ( + !inverseTrigger && + new_state == triggerState && + old_state == excludeState + ) + { + return; + } + if ( + inverseTrigger && + old_state == triggerState && + new_state == excludeState + ) + { + return; + } + } + + // + // Check for the trigger state + // + if ( + (!inverseTrigger && new_state == triggerState) || + (inverseTrigger && old_state == triggerState) + ) + { + Check(&audioComponentSocket); + Check(audioComponentSocket.GetCurrent()); + #if 1 + audioComponentSocket.GetCurrent()->ReceiveControl( + controlID, + controlValue + ); + #else + audioComponentSocket.GetCurrent()->PostReceiveControl( + controlID, + controlValue + ); + #endif + } +} + + diff --git a/CODE/RP/MUNGA/AUDWTHR.HPP b/CODE/RP/MUNGA/AUDWTHR.HPP new file mode 100644 index 0000000..13ae6ca --- /dev/null +++ b/CODE/RP/MUNGA/AUDWTHR.HPP @@ -0,0 +1,1593 @@ +//===========================================================================// +// File: audwthr.hh // +// Project: MUNGA Brick: Audio Renderer // +// Contents: // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- -----------------------------------------------------------// +// 01/31/95 ECH Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(AUDWTHR_HPP) +# define AUDWTHR_HPP + +# if !defined(WATCHER_HPP) +# include +# endif + +# if !defined(AUDIO_HPP) +# include +# endif + +# if !defined(SIMULATE_HPP) +# include +# endif + +# if !defined(SIMULATE_HPP) +# include +# endif + +# if !defined(CONTROLS_HPP) +# include +# endif + +# if !defined(MOTION_HPP) +# include +# endif + + //########################################################################## + //######################## AudioIdleWatcher ########################## + //########################################################################## + + class AudioIdleWatcher: + public Component + { + public: + // + //----------------------------------------------------------------------- + // Constructor, Destructor, Testing + //----------------------------------------------------------------------- + // + AudioIdleWatcher( + PlugStream *stream, + Entity *entity + ); + void + AudioIdleWatcherX( + AudioComponent *audio_component, + Entity *entity + ); + ~AudioIdleWatcher(); + + Logical + TestInstance() const; + + // + //----------------------------------------------------------------------- + // BuildFromPage + //----------------------------------------------------------------------- + // + static void + BuildFromPage( + PlugStream *stream, + NameList *name_list, + ClassID class_ID, + ObjectID object_ID + ); + + // + //----------------------------------------------------------------------- + // ReleaseLinkHandler + //----------------------------------------------------------------------- + // + void + ReleaseLinkHandler( + Socket *socket, + Plug *plug + ); + + // + //----------------------------------------------------------------------- + // Execute + //----------------------------------------------------------------------- + // + void + Execute(); + + protected: + // + //----------------------------------------------------------------------- + // Protected data + //----------------------------------------------------------------------- + // + SlotOf + audioComponentSocket; + }; + + //########################################################################## + //########################### AudioWatcherOf ######################### + //########################################################################## + + template class AudioWatcherOf: + public AttributeWatcherOf + { + public: + // + //-------------------------------------------------------------------- + // Constructor, Destructor, Testing + //-------------------------------------------------------------------- + // + AudioWatcherOf( + PlugStream *stream, + Entity *entity + ); + ~AudioWatcherOf(); + + Logical + TestInstance() const; + + // + //-------------------------------------------------------------------- + // BuildFromPage + //-------------------------------------------------------------------- + // + static void + BuildFromPage( + PlugStream *stream, + NameList *name_list, + ClassID class_ID, + ObjectID object_ID + ); + + // + //-------------------------------------------------------------------- + // ReleaseLinkHandler + //-------------------------------------------------------------------- + // + void + ReleaseLinkHandler( + Socket *socket, + Plug *plug + ); + + protected: + // + //-------------------------------------------------------------------- + // Protected data + //-------------------------------------------------------------------- + // + SlotOf + audioComponentSocket; + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~ AudioWatcherOf templates ~~~~~~~~~~~~~~~~~~~~~~~~ + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + template + AudioWatcherOf::AudioWatcherOf( + PlugStream *stream, + Entity *entity + ): + AttributeWatcherOf(stream, entity), + audioComponentSocket(this) + { + // + // Get audio component + // + AudioComponent *audio_component; + PlugStream_ReadObjectIDAndFindPlug(stream, &audio_component); + Check(audio_component); + audioComponentSocket.Add(audio_component); + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + template + AudioWatcherOf::~AudioWatcherOf() + { + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + template void + AudioWatcherOf::BuildFromPage( + PlugStream *stream, + NameList *name_list, + ClassID class_ID, + ObjectID object_ID + ) + { + AttributeWatcherOf::BuildFromPage( + stream, name_list, class_ID, object_ID + ); + + // + // Store audio_component object ID + // + CString audio_component_name("audio_component"); + PlugStream_FindEntryAndWriteObjectID( + stream, name_list, audio_component_name + ); + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + template Logical + AudioWatcherOf::TestInstance() const + { + AttributeWatcherOf::TestInstance(); + Check(&audioComponentSocket); + return True; + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + template void + AudioWatcherOf::ReleaseLinkHandler( + Socket *socket, + Plug *plug + ) + { + if (socket == &audioComponentSocket) + { + Check(&audioComponentSocket); + Check(socket); + Unregister_Object(this); + delete this; + } + else + { + AttributeWatcherOf::ReleaseLinkHandler(socket, plug); + } + } + + //########################################################################## + //########################### AudioTriggerOf ######################### + //########################################################################## + + template class AudioTriggerOf: + public AudioWatcherOf + { + public: + // + //-------------------------------------------------------------------- + // Constructor + //-------------------------------------------------------------------- + // + AudioTriggerOf( + PlugStream *stream, + Entity *entity + ); + ~AudioTriggerOf(); + + // + //-------------------------------------------------------------------- + // BuildFromPage + //-------------------------------------------------------------------- + // + static void + BuildFromPage( + PlugStream *stream, + NameList *name_list, + ClassID class_ID, + ObjectID object_ID + ); + + protected: + // + //-------------------------------------------------------------------- + // SendNotificationOfChange + //-------------------------------------------------------------------- + // + void + SendNotificationOfChange(); + + // + //-------------------------------------------------------------------- + // ExtractInterestingValue + //-------------------------------------------------------------------- + // + virtual AudioControlValue + ExtractInterestingValue(const T *attribute_ptr); + + private: + // + //-------------------------------------------------------------------- + // Private data + //-------------------------------------------------------------------- + // + Scalar + attributeValueThreshold; + Logical + inverseTrigger; + AudioControlID + controlIDOn, + controlIDOff; + AudioControlValue + controlValueOn, + controlValueOff; + Logical + triggerOn; + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~ AudioTriggerOf templates ~~~~~~~~~~~~~~~~~~~~ + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + template + AudioTriggerOf::AudioTriggerOf( + PlugStream *stream, + Entity *entity + ): + AudioWatcherOf(stream, entity) + { + Check(simulation); + simulation->AddAudioWatcher(this); + + // + // Get other fields + // + MemoryStream_Read(stream, &attributeValueThreshold); + MemoryStream_Read(stream, &inverseTrigger); + + MemoryStream_Read(stream, &controlIDOn); + MemoryStream_Read(stream, &controlIDOff); + + MemoryStream_Read(stream, &controlValueOn); + MemoryStream_Read(stream, &controlValueOff); + + triggerOn = False; + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + template + AudioTriggerOf::~AudioTriggerOf() + { + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + template void + AudioTriggerOf::BuildFromPage( + PlugStream *stream, + NameList *name_list, + ClassID class_ID, + ObjectID object_ID + ) + { + AudioWatcherOf::BuildFromPage(stream, name_list, class_ID, object_ID); + + // + // Store other fields + // + MEM_STRM_WRITE_ENTRY( + *stream, name_list, AudioControlValue, attribute_value_threshold + ); + MEM_STRM_WRITE_ENTRY( + *stream, name_list, Logical, inverse_trigger + ); + MEM_STRM_WRITE_ENTRY( + *stream, name_list, Enumeration, control_ID_on + ); + MEM_STRM_WRITE_ENTRY( + *stream, name_list, Enumeration, control_ID_off + ); + MEM_STRM_WRITE_ENTRY( + *stream, name_list, AudioControlValue, control_value_on + ); + MEM_STRM_WRITE_ENTRY( + *stream, name_list, AudioControlValue, control_value_off + ); + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + template void + AudioTriggerOf::SendNotificationOfChange() + { + // + // Get current value + // + T *attribute_ptr = GetCurrentPointer(); + Check_Pointer(attribute_ptr); + Scalar current_value = ExtractInterestingValue(attribute_ptr); + + if (triggerOn) + { + if ( + (!inverseTrigger && current_value <= attributeValueThreshold) || + (inverseTrigger && current_value >= attributeValueThreshold) + ) + { + Check(&audioComponentSocket); + Check(audioComponentSocket.GetCurrent()); + #if 1 + audioComponentSocket.GetCurrent()->ReceiveControl( + controlIDOff, + controlValueOff + ); + #else + audioComponentSocket.GetCurrent()->PostReceiveControl( + controlIDOff, + controlValueOff + ); + #endif + triggerOn = False; + } + } + else + { + if ( + (!inverseTrigger && current_value > attributeValueThreshold) || + (inverseTrigger && current_value < attributeValueThreshold) + ) + { + Check(&audioComponentSocket); + Check(audioComponentSocket.GetCurrent()); + #if 1 + audioComponentSocket.GetCurrent()->ReceiveControl( + controlIDOn, + controlValueOn + ); + #else + audioComponentSocket.GetCurrent()->PostReceiveControl( + controlIDOn, + controlValueOn + ); + #endif + triggerOn = True; + } + } + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + template AudioControlValue + AudioTriggerOf::ExtractInterestingValue(const T*) + { + Fail("AudioTriggerOf::ExtractInterestingValue - Should never reach here"); + return 0; + } + + //########################################################################## + //########################### AudioScaleOf ########################### + //########################################################################## + + template class AudioScaleOf: + public AudioWatcherOf + { + public: + // + //-------------------------------------------------------------------- + // Constructor, Destructor + //-------------------------------------------------------------------- + // + AudioScaleOf( + PlugStream *stream, + Entity *entity + ); + ~AudioScaleOf(); + + // + //-------------------------------------------------------------------- + // BuildFromPage + //-------------------------------------------------------------------- + // + static void + BuildFromPage( + PlugStream *stream, + NameList *name_list, + ClassID class_ID, + ObjectID object_ID + ); + + protected: + // + //-------------------------------------------------------------------- + // SendNotificationOfChange + //-------------------------------------------------------------------- + // + void + SendNotificationOfChange(); + + // + //-------------------------------------------------------------------- + // ExtractInterestingValue + //-------------------------------------------------------------------- + // + virtual AudioControlValue + ExtractInterestingValue(const T *attribute_ptr); + + private: + // + //-------------------------------------------------------------------- + // Private data + //-------------------------------------------------------------------- + // + Scalar + attributeValueBoundary1, + attributeValueBoundary2; + AudioControlID + controlID; + AudioControlValue + controlValueBoundary1, + controlValueBoundary2; + Scalar + exponent; + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~ AudioScaleOf templates ~~~~~~~~~~~~~~~~~~~~~~ + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + template + AudioScaleOf::AudioScaleOf( + PlugStream *stream, + Entity *entity + ): + AudioWatcherOf(stream, entity) + { + // + // Get audio component + // + AudioComponent *audio_component = audioComponentSocket.GetCurrent(); + Check(audio_component); + audio_component->AddWatcher(this); + + // + // Get other fields + // + MemoryStream_Read(stream, &attributeValueBoundary1); + MemoryStream_Read(stream, &attributeValueBoundary2); + + MemoryStream_Read(stream, &controlID); + + MemoryStream_Read(stream, &controlValueBoundary1); + MemoryStream_Read(stream, &controlValueBoundary2); + MemoryStream_Read(stream, &exponent); + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + template + AudioScaleOf::~AudioScaleOf() + { + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + template void + AudioScaleOf::BuildFromPage( + PlugStream *stream, + NameList *name_list, + ClassID class_ID, + ObjectID object_ID + ) + { + AudioWatcherOf::BuildFromPage(stream, name_list, class_ID, object_ID); + + // + // Store other fields + // + MEM_STRM_WRITE_ENTRY( + *stream, name_list, Scalar, attribute_value_boundary1 + ); + MEM_STRM_WRITE_ENTRY( + *stream, name_list, Scalar, attribute_value_boundary2 + ); + MEM_STRM_WRITE_ENTRY( + *stream, name_list, Enumeration, control_ID + ); + MEM_STRM_WRITE_ENTRY( + *stream, name_list, AudioControlValue, control_value_boundary1 + ); + MEM_STRM_WRITE_ENTRY( + *stream, name_list, AudioControlValue, control_value_boundary2 + ); + MEM_STRM_WRITE_ENTRY( + *stream, name_list, Scalar, exponent + ); + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + template void + AudioScaleOf::SendNotificationOfChange() + { + // + // Get current value + // + T *attribute_ptr = GetCurrentPointer(); + Check_Pointer(attribute_ptr); + Scalar current_value = ExtractInterestingValue(attribute_ptr); + + // + // Clamp value within range + // + Scalar min_attribute_boundary = + Min(attributeValueBoundary1, attributeValueBoundary2); + Scalar max_attribute_boundary = + Max(attributeValueBoundary1, attributeValueBoundary2); + + Clamp(current_value, min_attribute_boundary, max_attribute_boundary); + Verify( + current_value >= min_attribute_boundary && + current_value <= max_attribute_boundary + ); + + // + // Calculate scale + // + Verify(!Small_Enough(attributeValueBoundary2 - attributeValueBoundary1)); + Scalar current_scale = + (current_value - attributeValueBoundary1) / + (attributeValueBoundary2 - attributeValueBoundary1); + Verify(current_scale >= -1.0f && current_scale <= 1.0f); + + // + // Apply exponent + // + if (exponent != 1.0f) + { + Scalar old_scale = current_scale; // HACK - for debugging + + current_scale = pow(old_scale, exponent); + + #if DEBUG_LEVEL>0 + if (!(current_scale >= -1.0f && current_scale <= 1.0f)) + { + Dump(old_scale); + Dump(exponent); + Dump(current_scale); + } + #endif + } + Verify(current_scale >= -1.0f && current_scale <= 1.0f); + + // + // Calculate control value + // + AudioControlValue control_value = + current_scale * (controlValueBoundary2 - controlValueBoundary1) + + controlValueBoundary1; + + #if DEBUG_LEVEL>0 + AudioControlValue min_control_boundary = + Min(controlValueBoundary1, controlValueBoundary2); + AudioControlValue max_control_boundary = + Max(controlValueBoundary1, controlValueBoundary2); + + Verify( + control_value >= min_control_boundary && + control_value <= max_control_boundary + ); + #endif + + Check(&audioComponentSocket); + Check(audioComponentSocket.GetCurrent()); + audioComponentSocket.GetCurrent()->ReceiveControl( + controlID, + control_value + ); + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + template AudioControlValue + AudioScaleOf::ExtractInterestingValue(const T*) + { + Fail("AudioScaleOf::ExtractInterestingValue - Should never reach here"); + return 0; + } + + //########################################################################## + //########################## AudioMatchOf ############################ + //########################################################################## + + template class AudioMatchOf: + public AudioWatcherOf + { + public: + // + //----------------------------------------------------------------------- + // Constructor + //----------------------------------------------------------------------- + // + AudioMatchOf( + PlugStream *stream, + Entity *entity + ); + ~AudioMatchOf(); + + // + //----------------------------------------------------------------------- + // BuildFromPage + //----------------------------------------------------------------------- + // + static void + BuildFromPage( + PlugStream *stream, + NameList *name_list, + ClassID class_ID, + ObjectID object_ID + ); + + protected: + // + //----------------------------------------------------------------------- + // SendNotificationOfChange + //----------------------------------------------------------------------- + // + void + SendNotificationOfChange(); + + // + //----------------------------------------------------------------------- + // ExtractInterestingValue + //----------------------------------------------------------------------- + // + virtual int + ExtractInterestingValue(const T *attribute_ptr); + + private: + // + //----------------------------------------------------------------------- + // Private data + //----------------------------------------------------------------------- + // + int + attributeMatchValue; + AudioControlID + controlID; + AudioControlValue + controlValue; + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~ AudioMatchOf templates ~~~~~~~~~~~~~~~~~~~~~~~~ + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + template + AudioMatchOf::AudioMatchOf( + PlugStream *stream, + Entity *entity + ): + AudioWatcherOf(stream, entity) + { + Check(simulation); + simulation->AddAudioWatcher(this); + + // + // Get other fields + // + MemoryStream_Read(stream, &attributeMatchValue); + MemoryStream_Read(stream, &controlID); + MemoryStream_Read(stream, &controlValue); + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + template + AudioMatchOf::~AudioMatchOf() + { + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + template void + AudioMatchOf::BuildFromPage( + PlugStream *stream, + NameList *name_list, + ClassID class_ID, + ObjectID object_ID + ) + { + AudioWatcherOf::BuildFromPage(stream, name_list, class_ID, object_ID); + + // + // Store other fields + // + MEM_STRM_WRITE_ENTRY( + *stream, name_list, int, attribute_match_value + ); + MEM_STRM_WRITE_ENTRY( + *stream, name_list, Enumeration, control_ID + ); + MEM_STRM_WRITE_ENTRY( + *stream, name_list, AudioControlValue, control_value + ); + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + template void + AudioMatchOf::SendNotificationOfChange() + { + // + // Get current value + // + T *attribute_ptr = GetCurrentPointer(); + Check_Pointer(attribute_ptr); + int current_value = ExtractInterestingValue(attribute_ptr); + + if (current_value == attributeMatchValue) + { + Check(&audioComponentSocket); + Check(audioComponentSocket.GetCurrent()); + #if 1 + audioComponentSocket.GetCurrent()->ReceiveControl( + controlID, + controlValue + ); + #else + audioComponentSocket.GetCurrent()->PostReceiveControl( + controlID, + controlValue + ); + #endif + } + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + template int + AudioMatchOf::ExtractInterestingValue(const T*) + { + Fail("AudioMatchOf::ExtractInterestingValue - Should never reach here"); + return 0; + } + + //########################################################################## + //########################## AudioDeltaOf ############################ + //########################################################################## + + template class AudioDeltaOf: + public AudioWatcherOf + { + public: + // + //----------------------------------------------------------------------- + // Constructor + //----------------------------------------------------------------------- + // + AudioDeltaOf( + PlugStream *stream, + Entity *entity + ); + ~AudioDeltaOf(); + + // + //----------------------------------------------------------------------- + // BuildFromPage + //----------------------------------------------------------------------- + // + static void + BuildFromPage( + PlugStream *stream, + NameList *name_list, + ClassID class_ID, + ObjectID object_ID + ); + + protected: + // + //----------------------------------------------------------------------- + // SendNotificationOfChange + //----------------------------------------------------------------------- + // + void + SendNotificationOfChange(); + + private: + // + //----------------------------------------------------------------------- + // Private data + //----------------------------------------------------------------------- + // + T + lastValue; + T + deltaTrigger; + AudioControlID + controlID; + AudioControlValue + controlValue; + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~ AudioDeltaOf templates ~~~~~~~~~~~~~~~~~~~~~~~~ + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + template + AudioDeltaOf::AudioDeltaOf( + PlugStream *stream, + Entity *entity + ): + AudioWatcherOf(stream, entity) + { + Check(simulation); + simulation->AddAudioWatcher(this); + + MemoryStream_Read(stream, &controlID); + MemoryStream_Read(stream, &controlValue); + MemoryStream_Read(stream, &deltaTrigger); + + lastValue = GetCurrentValue(); + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + template + AudioDeltaOf::~AudioDeltaOf() + { + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + template void + AudioDeltaOf::BuildFromPage( + PlugStream *stream, + NameList *name_list, + ClassID class_ID, + ObjectID object_ID + ) + { + AudioWatcherOf::BuildFromPage(stream, name_list, class_ID, object_ID); + + // + // control_ID, control_value + // + MEM_STRM_WRITE_ENTRY( + *stream, name_list, Enumeration, control_ID + ); + MEM_STRM_WRITE_ENTRY( + *stream, name_list, AudioControlValue, control_value + ); + + // + // delta_value + // + T delta_trigger = SMALL; + + if (name_list->FindData("delta_trigger") != NULL) + { + Convert_From_Ascii( + (const char *)name_list->FindData("delta_trigger"), + &delta_trigger + ); + } + MemoryStream_Write(stream, &delta_trigger); + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + template void + AudioDeltaOf::SendNotificationOfChange() + { + T *attribute_ptr; + T delta_change; + + attribute_ptr = GetCurrentPointer(); + Check_Pointer(attribute_ptr); + delta_change = *attribute_ptr - lastValue; + + if (Abs(delta_change) >= deltaTrigger) + { + lastValue = *attribute_ptr; + + Check(&audioComponentSocket); + Check(audioComponentSocket.GetCurrent()); + #if 1 + audioComponentSocket.GetCurrent()->ReceiveControl( + controlID, + controlValue + ); + #else + audioComponentSocket.GetCurrent()->PostReceiveControl( + controlID, + controlValue + ); + #endif + } + } + + //########################################################################## + //########################### AudioMotionTrigger ##################### + //########################################################################## + + enum MotionType + { + LinearMotionType = 0, + AngularMotionType = 1 + }; + + inline MemoryStream& + MemoryStream_Read( + MemoryStream *stream, + MotionType *ptr + ) + {return stream->ReadBytes(ptr, sizeof(*ptr));} + inline MemoryStream& + MemoryStream_Write( + MemoryStream *stream, + const MotionType *ptr + ) + {return stream->WriteBytes(ptr, sizeof(*ptr));} + + enum MotionValue + { + XMotionValue = 0, + YMotionValue = 1, + ZMotionValue = 2, + LengthMotionValue = 3 + }; + + inline MemoryStream& + MemoryStream_Read( + MemoryStream *stream, + MotionValue *ptr + ) + {return stream->ReadBytes(ptr, sizeof(*ptr));} + inline MemoryStream& + MemoryStream_Write( + MemoryStream *stream, + const MotionValue *ptr + ) + {return stream->WriteBytes(ptr, sizeof(*ptr));} + + class AudioMotionTrigger: + public AudioTriggerOf + { + public: + // + //----------------------------------------------------------------------- + // Constructor + //----------------------------------------------------------------------- + // + AudioMotionTrigger( + PlugStream *stream, + Entity *entity + ); + ~AudioMotionTrigger(); + + // + //----------------------------------------------------------------------- + // BuildFromPage + //----------------------------------------------------------------------- + // + static void + BuildFromPage( + PlugStream *stream, + NameList *name_list, + ClassID class_ID, + ObjectID object_ID + ); + + protected: + // + //----------------------------------------------------------------------- + // ExtractInterestingValue + //----------------------------------------------------------------------- + // + AudioControlValue + ExtractInterestingValue(const Motion *attribute_ptr); + + private: + // + //----------------------------------------------------------------------- + // DumpValue + //----------------------------------------------------------------------- + // + void + DumpValue(const Motion *attribute_ptr); + + // + //----------------------------------------------------------------------- + // Private data + //----------------------------------------------------------------------- + // + MotionType + motionType; + MotionValue + motionValue; + }; + + //########################################################################## + //########################### AudioMotionScale ####################### + //########################################################################## + + class AudioMotionScale: + public AudioScaleOf + { + public: + // + //----------------------------------------------------------------------- + // Constructor + //----------------------------------------------------------------------- + // + AudioMotionScale( + PlugStream *stream, + Entity *entity + ); + ~AudioMotionScale(); + + // + //----------------------------------------------------------------------- + // BuildFromPage + //----------------------------------------------------------------------- + // + static void + BuildFromPage( + PlugStream *stream, + NameList *name_list, + ClassID class_ID, + ObjectID object_ID + ); + + protected: + // + //----------------------------------------------------------------------- + // ExtractInterestingValue + //----------------------------------------------------------------------- + // + AudioControlValue + ExtractInterestingValue(const Motion *attribute_ptr); + + private: + // + //----------------------------------------------------------------------- + // DumpValue + //----------------------------------------------------------------------- + // + void + DumpValue(const Motion *attribute_ptr); + + // + //----------------------------------------------------------------------- + // Private data + //----------------------------------------------------------------------- + // + MotionType + motionType; + MotionValue + motionValue; + }; + + //########################################################################## + //########################### AudioHingeScale ######################### + //########################################################################## + + class AudioHingeScale: + public AudioScaleOf + { + public: + // + //-------------------------------------------------------------------- + // Constructor, Destructor, Testing + //-------------------------------------------------------------------- + // + AudioHingeScale( + PlugStream *stream, + Entity *entity + ); + ~AudioHingeScale(); + + protected: + // + //-------------------------------------------------------------------- + // ExtractInterestingValue + //-------------------------------------------------------------------- + // + AudioControlValue + ExtractInterestingValue(const Hinge *attribute_ptr); + + private: + // + //----------------------------------------------------------------------- + // DumpValue + //----------------------------------------------------------------------- + // + void + DumpValue(const Hinge *attribute_ptr); + }; + + //########################################################################## + //########################### AudioScalarTrigger ##################### + //########################################################################## + + class AudioScalarTrigger: + public AudioTriggerOf + { + public: + // + //----------------------------------------------------------------------- + // Constructor + //----------------------------------------------------------------------- + // + AudioScalarTrigger( + PlugStream *stream, + Entity *entity + ); + ~AudioScalarTrigger(); + + // + //----------------------------------------------------------------------- + // BuildFromPage + //----------------------------------------------------------------------- + // + static void + BuildFromPage( + PlugStream *stream, + NameList *name_list, + ClassID class_ID, + ObjectID object_ID + ); + + protected: + // + //----------------------------------------------------------------------- + // ExtractInterestingValue + //----------------------------------------------------------------------- + // + AudioControlValue + ExtractInterestingValue(const Scalar *attribute_ptr); + }; + + //########################################################################## + //###################### AudioScalarDeltaTrigger ##################### + //########################################################################## + + class AudioScalarDeltaTrigger: + public AudioDeltaOf + { + public: + // + //----------------------------------------------------------------------- + // Constructor + //----------------------------------------------------------------------- + // + AudioScalarDeltaTrigger( + PlugStream *stream, + Entity *entity + ); + ~AudioScalarDeltaTrigger(); + + // + //----------------------------------------------------------------------- + // BuildFromPage + //----------------------------------------------------------------------- + // + static void + BuildFromPage( + PlugStream *stream, + NameList *name_list, + ClassID class_ID, + ObjectID object_ID + ); + }; + + //########################################################################## + //########################### AudioScalarScale ######################## + //########################################################################## + + class AudioScalarScale: + public AudioScaleOf + { + public: + // + //-------------------------------------------------------------------- + // Constructor, Destructor, Testing + //-------------------------------------------------------------------- + // + AudioScalarScale( + PlugStream *stream, + Entity *entity + ); + ~AudioScalarScale(); + + protected: + // + //-------------------------------------------------------------------- + // ExtractInterestingValue + //-------------------------------------------------------------------- + // + AudioControlValue + ExtractInterestingValue(const Scalar *attribute_ptr); + }; + + //########################################################################## + //######################## AudioLogicalTrigger ####################### + //########################################################################## + + class AudioLogicalTrigger: + public AudioMatchOf + { + public: + // + //----------------------------------------------------------------------- + // Constructor + //----------------------------------------------------------------------- + // + AudioLogicalTrigger( + PlugStream *stream, + Entity *entity + ); + ~AudioLogicalTrigger(); + + // + //----------------------------------------------------------------------- + // BuildFromPage + //----------------------------------------------------------------------- + // + static void + BuildFromPage( + PlugStream *stream, + NameList *name_list, + ClassID class_ID, + ObjectID object_ID + ); + + protected: + // + //----------------------------------------------------------------------- + // ExtractInterestingValue + //----------------------------------------------------------------------- + // + int + ExtractInterestingValue(const Logical *attribute_ptr); + }; + + //########################################################################## + //###################### AudioEnumerationTrigger ##################### + //########################################################################## + + class AudioEnumerationTrigger: + public AudioMatchOf + { + public: + // + //----------------------------------------------------------------------- + // Constructor + //----------------------------------------------------------------------- + // + AudioEnumerationTrigger( + PlugStream *stream, + Entity *entity + ); + ~AudioEnumerationTrigger(); + + // + //----------------------------------------------------------------------- + // BuildFromPage + //----------------------------------------------------------------------- + // + static void + BuildFromPage( + PlugStream *stream, + NameList *name_list, + ClassID class_ID, + ObjectID object_ID + ); + + protected: + // + //----------------------------------------------------------------------- + // ExtractInterestingValue + //----------------------------------------------------------------------- + // + int + ExtractInterestingValue(const Enumeration *attribute_ptr); + }; + + //########################################################################## + //################### AudioEnumerationDeltaTrigger ################### + //########################################################################## + + class AudioEnumerationDeltaTrigger: + public AudioDeltaOf + { + public: + // + //----------------------------------------------------------------------- + // Constructor + //----------------------------------------------------------------------- + // + AudioEnumerationDeltaTrigger( + PlugStream *stream, + Entity *entity + ); + ~AudioEnumerationDeltaTrigger(); + + // + //----------------------------------------------------------------------- + // BuildFromPage + //----------------------------------------------------------------------- + // + static void + BuildFromPage( + PlugStream *stream, + NameList *name_list, + ClassID class_ID, + ObjectID object_ID + ); + }; + + //########################################################################## + //####################### AudioIntegerTrigger ######################## + //########################################################################## + + class AudioIntegerTrigger: + public AudioTriggerOf + { + public: + // + //----------------------------------------------------------------------- + // Constructor + //----------------------------------------------------------------------- + // + AudioIntegerTrigger( + PlugStream *stream, + Entity *entity + ); + ~AudioIntegerTrigger(); + + // + //----------------------------------------------------------------------- + // BuildFromPage + //----------------------------------------------------------------------- + // + static void + BuildFromPage( + PlugStream *stream, + NameList *name_list, + ClassID class_ID, + ObjectID object_ID + ); + + protected: + // + //----------------------------------------------------------------------- + // ExtractInterestingValue + //----------------------------------------------------------------------- + // + AudioControlValue + ExtractInterestingValue(const int *attribute_ptr); + }; + + //########################################################################## + //################### AudioControlsButtonTrigger ##################### + //########################################################################## + + class AudioControlsButtonTrigger: + public AudioTriggerOf + { + public: + // + //----------------------------------------------------------------------- + // Constructor + //----------------------------------------------------------------------- + // + AudioControlsButtonTrigger( + PlugStream *stream, + Entity *entity + ); + ~AudioControlsButtonTrigger(); + + // + //----------------------------------------------------------------------- + // BuildFromPage + //----------------------------------------------------------------------- + // + static void + BuildFromPage( + PlugStream *stream, + NameList *name_list, + ClassID class_ID, + ObjectID object_ID + ); + + protected: + // + //----------------------------------------------------------------------- + // ExtractInterestingValue + //----------------------------------------------------------------------- + // + AudioControlValue + ExtractInterestingValue(const ControlsButton *attribute_ptr); + }; + + //########################################################################## + //######################## AudioStateWatcher ######################### + //########################################################################## + + class AudioStateWatcher: + public AudioWatcherOf + { + public: + // + //-------------------------------------------------------------------- + // Destructor + //-------------------------------------------------------------------- + // + ~AudioStateWatcher(); + + protected: + // + //-------------------------------------------------------------------- + // Constructor + //-------------------------------------------------------------------- + // + AudioStateWatcher( + PlugStream *stream, + Entity *entity + ); + + // + //-------------------------------------------------------------------- + // SendNotificationOfChange + //-------------------------------------------------------------------- + // + void + SendNotificationOfChange(); + + // + //-------------------------------------------------------------------- + // StateChanged + //-------------------------------------------------------------------- + // + virtual void + StateChanged( + Enumeration old_state, + Enumeration new_state + ); + }; + + //########################################################################## + //########################### AudioStateTrigger ###################### + //########################################################################## + + class AudioStateTrigger: + public AudioStateWatcher + { + public: + // + //-------------------------------------------------------------------- + // Constructor, Destructor + //-------------------------------------------------------------------- + // + AudioStateTrigger( + PlugStream *stream, + Entity *entity + ); + ~AudioStateTrigger(); + + // + //-------------------------------------------------------------------- + // BuildFromPage + //-------------------------------------------------------------------- + // + static void + BuildFromPage( + PlugStream *stream, + NameList *name_list, + ClassID class_ID, + ObjectID object_ID + ); + + protected: + // + //-------------------------------------------------------------------- + // StateChanged + //-------------------------------------------------------------------- + // + void + StateChanged( + Enumeration old_state, + Enumeration new_state + ); + + private: + // + //-------------------------------------------------------------------- + // Private data + //-------------------------------------------------------------------- + // + Enumeration + triggerState; + Logical + inverseTrigger; + AudioControlID + controlID; + AudioControlValue + controlValue; + Logical + excludeTransition; + Enumeration + excludeState; + }; + +#endif + + diff --git a/CODE/RP/MUNGA/AVERAGE.CPP b/CODE/RP/MUNGA/AVERAGE.CPP new file mode 100644 index 0000000..97e3dcc --- /dev/null +++ b/CODE/RP/MUNGA/AVERAGE.CPP @@ -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 +#pragma hdrstop + +#if !defined(AVERAGE_HPP) +# include +#endif + diff --git a/CODE/RP/MUNGA/AVERAGE.HPP b/CODE/RP/MUNGA/AVERAGE.HPP new file mode 100644 index 0000000..08704ad --- /dev/null +++ b/CODE/RP/MUNGA/AVERAGE.HPP @@ -0,0 +1,317 @@ +//===========================================================================// +// File: average.hpp // +// 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 // +//===========================================================================// + +#if !defined(AVERAGE_HPP) +# define AVERAGE_HPP + +# if !defined(STYLE_HPP) +# include +# endif + + //########################################################################## + //########################### AverageOf ############################## + //########################################################################## + + template class AverageOf SIGNATURED + { + public: + // + //----------------------------------------------------------------------- + // Constructor, Destructor, Testing + //----------------------------------------------------------------------- + // + AverageOf(); + AverageOf( + size_t size, + T initial=(T)0 + ); + ~AverageOf(); + + Logical + TestInstance() const; + + // + //----------------------------------------------------------------------- + // SetSize + //----------------------------------------------------------------------- + // + void + SetSize( + size_t size, + T initial=(T)0 + ); + + // + //----------------------------------------------------------------------- + // Add + //----------------------------------------------------------------------- + // + void + Add(T value); + + // + //----------------------------------------------------------------------- + // CalculateAverage + //----------------------------------------------------------------------- + // + T + CalculateAverage(); + + // + //----------------------------------------------------------------------- + // CalculateOlympicAverage + //----------------------------------------------------------------------- + // + T + CalculateOlympicAverage(); + + // + //----------------------------------------------------------------------- + // Calculate Trend of Average + //----------------------------------------------------------------------- + // + Scalar + CalculateTrend(); + + private: + // + //----------------------------------------------------------------------- + // Private data + //----------------------------------------------------------------------- + // + size_t size; + size_t next; + T *array; + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~ AverageOf templates ~~~~~~~~~~~~~~~~~~~~~~~~~ + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + template + AverageOf::AverageOf() + { + array = NULL; + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + template + AverageOf::AverageOf( + size_t the_size, + T initial + ) + { + array = NULL; + SetSize(the_size, initial); + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + template void + AverageOf::SetSize( + size_t the_size, + T initial + ) + { + if (array != NULL) + { + Unregister_Pointer(array); + delete[] array; + } + + size = the_size; + array = new T[size]; + Register_Pointer(array); + next = 0; + + for (size_t i = 0; i < size; i++) + { + Check_Pointer(array); + Verify(i < size); + array[i] = initial; + Check_Fpu(); + } + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + template + AverageOf::~AverageOf() + { + Unregister_Pointer(array); + delete[] array; + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + template Logical + AverageOf::TestInstance() const + { + Check_Pointer(array); + Verify(next < size); + return True; + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + template void + AverageOf::Add(T value) + { + Check(this); + Check_Pointer(array); + Verify(next < size); + array[next] = value; + ++next; + if (next >= size) + { + Verify(next == size); + next = 0; + } + Check_Fpu(); + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + template T + AverageOf::CalculateAverage() + { + Check(this); + size_t i; + T accumulate; + + for (i = 0, accumulate = (T)0; i < size; i++) + { + Check_Pointer(array); + Verify(i < size); + accumulate += array[i]; + Check_Fpu(); + } + + Verify(!Small_Enough((T)size)); + return (accumulate / (T)size); + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + template T + AverageOf::CalculateOlympicAverage() + { + Check(this); + size_t i; + T accumulate, min_value, max_value; + + Verify(0 < size); + min_value = array[0]; + max_value = array[0]; + Check_Fpu(); + + for (i = 0, accumulate = (T)0; i < size; i++) + { + Check_Pointer(array); + Verify(i < size); + accumulate += array[i]; + Check_Fpu(); + + min_value = Min(array[i], min_value); + max_value = Max(array[i], max_value); + Check_Fpu(); + } + accumulate -= min_value; + accumulate -= max_value; + Check_Fpu(); + + Verify(!Small_Enough((T)(size - 2))); + return (accumulate / (T)(size - 2)); + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + template Scalar + AverageOf::CalculateTrend() + { + Check(this); + size_t i; + Scalar f = 0.0f; + Scalar fx = 0.0f; + Scalar x1 = size; + Scalar x2 = x1*x1/2.0f; + Scalar x3 = x2 + x1*x1*x1/3.0f + x1/6.0f; + x2 += x1/2.0f; + + i = next; + Scalar t = 1.0f; + do + { + f += array[i]; + fx += t*array[i]; + t += 1.0f; + if (++i == size) + { + i = 0; + } + } while (i != next); + return (x1*fx - x2*f) / (x1*x3 - x2*x2); + } + + //########################################################################## + //######################## StaticAverageOf ########################### + //########################################################################## + + template class StaticAverageOf SIGNATURED + { + public: + // + //----------------------------------------------------------------------- + // Constructor, Destructor, Testing + //----------------------------------------------------------------------- + // + StaticAverageOf() + {size = (T)0; total = (T)0;} + ~StaticAverageOf() + {} + + Logical + TestInstance() const + {return True;} + + // + //----------------------------------------------------------------------- + // Add + //----------------------------------------------------------------------- + // + void + Add(T value) + {Check(this); size++; total += value;} + + // + //----------------------------------------------------------------------- + // CalculateAverage + //----------------------------------------------------------------------- + // + T + CalculateAverage() + {Check(this); return (size == 0) ? ((T)0) : (total / (T)size);} + + // + //----------------------------------------------------------------------- + // GetSize + //----------------------------------------------------------------------- + // + size_t + GetSize() + {Check(this); return size;} + + private: + // + //----------------------------------------------------------------------- + // Private data + //----------------------------------------------------------------------- + // + size_t size; + T total; + }; + +#endif diff --git a/CODE/RP/MUNGA/BNDGBOX.CPP b/CODE/RP/MUNGA/BNDGBOX.CPP new file mode 100644 index 0000000..c6f5235 --- /dev/null +++ b/CODE/RP/MUNGA/BNDGBOX.CPP @@ -0,0 +1,458 @@ +//===========================================================================// +// File: bndgbox.cc // +// Project: MUNGA Brick: Spatializer Library // +// Contents: Implementation details 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 // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(BNDGBOX_HPP) +# include +#endif + +#if !defined(ORIGIN_HPP) + #include +#endif + +#if !defined(LINE_HPP) + #include +#endif + +//############################################################################# +//############################## BoundingBox ############################ +//############################################################################# + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +BoundingBox::BoundingBox(const ExtentBox &extents): + ExtentBox(extents) +{ + Check_Pointer(this); + Check(&extents); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +BoundingBox::BoundingBox() +{ + Check_Pointer(this); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +void + BoundingBox::PlaceBoundingBox(const Origin& origin) +{ + Check(this); + Check(&origin); + + Dump(origin); + + minX += origin.linearPosition.x; + maxX += origin.linearPosition.x; + minY += origin.linearPosition.y; + maxY += origin.linearPosition.y; + minZ += origin.linearPosition.z; + maxZ += origin.linearPosition.z; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +BoundingBox::~BoundingBox() +{ + Check_Pointer(this); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + BoundingBox::Intersects(const ExtentBox &extents) +{ + Check(this); + Check(&extents); + + if (ExtentBox::Intersects(extents)) + { + ExtentBox slice; + slice.Intersect(*this, extents); + return IntersectsBounded(slice); + } + else + { + return False; + } +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + BoundingBox::Intersects( + const ExtentBox &extents, + ExtentBox *slice + ) +{ + Check(this); + Check(&extents); + Check_Pointer(slice); + + if (ExtentBox::Intersects(extents)) + { + slice->Intersect(*this, extents); + return IntersectsBounded(*slice); + } + else + { + return False; + } +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + BoundingBox::Contains(const Point3D &point) +{ + Check(this); + Check(&point); + + if (ExtentBox::Contains(point)) + { + return ContainsBounded(point); + } + else + { + return False; + } +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Scalar + BoundingBox::FindDistanceBelow(const Point3D &point) +{ + Check(this); + Check(&point); + + if ( + minX <= point.x && maxX >= point.x && minY <= point.y + && minZ <= point.z && maxZ >= point.z + ) + { + return FindDistanceBelowBounded(point); + } + else + { + return -1.0f; + } +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + BoundingBox::HitBy(Line *line) +{ + Check(this); + Check(line); + + Scalar + enter, + leave, + perpendicular, + drift, + distance; + + // + //-------------------- + // Set up for the test + //-------------------- + // + Logical entered = False; + Logical left = False; + for (int i=0; i<6; ++i) + { + // + //-------------------------------------------------------------------- + // Figure out what axis we are dealing with, then based upon the + // direction of the face, find out the distance from the origin to the + // place against the normal, and find out how fast the perpendicular + // distance changes with a unit movement along the line + //-------------------------------------------------------------------- + // + int face = i; + int axis = face >> 1; + if (face&1) + { + perpendicular = line->origin[axis] - (*this)[face]; + drift = line->direction[axis]; + } + else + { + perpendicular = (*this)[face] - line->origin[axis]; + drift = -line->direction[axis]; + } + + // + //------------------------------------------------------------------- + // If the line is parallel to the face, figure out whether or not the + // line origin lies within the face's half-space + //------------------------------------------------------------------- + // + if (Small_Enough(drift)) + { + if (perpendicular > 0.0f) + { + return False; + } + else + { + continue; + } + } + + // + //-------------------------------------------------------------------- + // If the drift is towards the plane's halfspace, this plane is one of + // the one through which the line could enter the node + //-------------------------------------------------------------------- + // + distance = -perpendicular / drift; + if (drift < 0.0f) + { + if (!entered) + { + entered = True; + enter = distance; + } + else if (distance > enter) + { + enter = distance; + } + if (enter > line->length) + { + return False; + } + } + + // + //-------------------------------------------------------------------- + // If the drift is towards the plane's halfspace, this plane is one of + // the one through which the line could enter the node + //-------------------------------------------------------------------- + // + else + { + if (!left) + { + left = True; + leave = distance; + } + else if (distance < leave) + { + leave = distance; + } + if (leave < 0.0f) + { + return False; + } + } + } + + // + //----------------------------------------------------------------------- + // If we exit the loop, then make sure that we actually hit the interior, + // and let the box figure out if the what happens inside it + //----------------------------------------------------------------------- + // + if (enter <= leave) + { + return HitByBounded(line, enter, leave); + } + return False; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical +#if DEBUG_LEVEL>0 + BoundingBox::IntersectsBounded(const ExtentBox &extents) +#else + BoundingBox::IntersectsBounded(const ExtentBox &) +#endif +{ + Check(this); + Check(&extents); + + Verify(minX <= extents.minX); + Verify(maxX >= extents.maxX); + Verify(minY <= extents.minY); + Verify(maxY >= extents.maxY); + Verify(minZ <= extents.minZ); + Verify(maxZ >= extents.maxZ); + + return True; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical +#if DEBUG_LEVEL>0 + BoundingBox::ContainsBounded(const Point3D &point) +#else + BoundingBox::ContainsBounded(const Point3D &) +#endif +{ + Check(this); + Check(&point); + + Verify(minX <= point.x); + Verify(maxX >= point.x); + Verify(minY <= point.y); + Verify(maxY >= point.y); + Verify(minZ <= point.z); + Verify(maxZ >= point.z); + + return True; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Scalar + BoundingBox::FindDistanceBelowBounded(const Point3D &point) +{ + Check(this); + Check(&point); + + Verify(minX <= point.x); + Verify(maxX >= point.x); + Verify(minY <= point.y); + Verify(minZ <= point.z); + Verify(maxZ >= point.z); + + Scalar result = point.y - maxY; + return Max(result, 0.0f); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + BoundingBox::HitByBounded( + Line *line, + Scalar enters, +#if DEBUG_LEVEL>0 + Scalar leaves +#else + Scalar +#endif + ) +{ + Check(this); + Check(line); + + Verify(enters <= leaves); + Verify(leaves >= 0.0f); + + line->length = Max(enters, 0.0f); + return True; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + BoundingBox::TestInstance() const +{ + return True; +} + +//############################################################################# +//######################### BoundingBoxCollision ######################## +//############################################################################# + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + BoundingBoxCollision::TestInstance() const +{ + return True; +} + +//############################################################################# +//####################### BoundingBoxCollisionList ###################### +//############################################################################# + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +BoundingBoxCollisionList::BoundingBoxCollisionList(int max_length) +{ + listStart = new BoundingBoxCollision[max_length]; + Register_Pointer(listStart); + maxCollisions = max_length; + Reset(); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + BoundingBoxCollisionList::AddCollisionToList( + BoundingBox *tree_volume, + const ExtentBox &slice + ) +{ + Check(tree_volume); + Check(&slice); + Check(this); + Check_Pointer(nextCollision); + Verify(collisionsLeft); + + nextCollision->treeVolume = tree_volume; + nextCollision->collisionSlice = slice; + ++nextCollision; + --collisionsLeft; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + BoundingBoxCollisionList::TestInstance() const +{ + return True; +} + +//############################################################################# +//########################### TaggedBoundingBox ######################### +//############################################################################# + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +TaggedBoundingBox::TaggedBoundingBox(void *tag) +{ + tagPointer = tag; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +TaggedBoundingBox::TaggedBoundingBox( + const ExtentBox &extents, + void *tag +): + BoundingBox(extents) +{ + tagPointer = tag; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +TaggedBoundingBox::~TaggedBoundingBox() +{ +} + +#if defined(TEST_CLASS) +# include "bndgbox.tcp" +#endif + diff --git a/CODE/RP/MUNGA/BNDGBOX.HPP b/CODE/RP/MUNGA/BNDGBOX.HPP new file mode 100644 index 0000000..cea57cb --- /dev/null +++ b/CODE/RP/MUNGA/BNDGBOX.HPP @@ -0,0 +1,214 @@ +//===========================================================================// +// 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(BNDGBOX_HPP) +# define BNDGBOX_HPP + +# if !defined(EXTNTBOX_HPP) +# include +# endif + + class Line; + class Point3D; + class Origin; + class BoundingBoxTreeNode; + class BoundingBoxList; + class BoundingBoxCollision; + + //########################################################################## + //########################### BoundingBox ############################ + //########################################################################## + + class BoundingBox: + public ExtentBox + { + friend class BoundingBoxTreeNode; + friend class BoundingBoxList; + + public: + BoundingBox(); + BoundingBox(const ExtentBox &extents); + virtual ~BoundingBox(); + + Logical + Intersects(const ExtentBox &extents); + Logical + Intersects( + const ExtentBox &extents, + ExtentBox *slice + ); + Logical + Contains(const Point3D &point); + Scalar + FindDistanceBelow(const Point3D &point); + Logical + HitBy(Line *line); + + void + PlaceBoundingBox(const Origin& origin); + + protected: + virtual Logical + IntersectsBounded(const ExtentBox &extents); + virtual Logical + ContainsBounded(const Point3D &point); + virtual Scalar + FindDistanceBelowBounded(const Point3D &point); + virtual Logical + HitByBounded( + Line *line, + Scalar enters, + Scalar leaves + ); + + public: + static Logical + TestClass(); + virtual Logical + TestInstance() const; + }; + + //########################################################################## + //###################### BoundingBoxCollision ######################## + //########################################################################## + + class BoundingBoxCollision SIGNATURED + { + public: + BoundingBox + *treeVolume; + ExtentBox + collisionSlice; + + BoundingBox* + GetTreeVolume() + {Check(this); return treeVolume;} + Logical + TestInstance() const; + }; + + //########################################################################## + //#################### BoundingBoxCollisionList ###################### + //########################################################################## + + class BoundingBoxCollisionList SIGNATURED + { + friend class BoundingBoxTreeNode; + friend class BoundingBoxList; + + protected: + BoundingBoxCollision + *listStart, + *nextCollision; + int + maxCollisions, + collisionsLeft; + + public: + BoundingBoxCollisionList(int max_length); + ~BoundingBoxCollisionList() + {Check(this); Unregister_Pointer(listStart); delete[] listStart;} + void + Reset() + {nextCollision = listStart; collisionsLeft = maxCollisions;} + + void + AddCollisionToList( + BoundingBox *tree_volume, + const ExtentBox &slice + ); + + BoundingBoxCollision& + operator[](int index) + { + Check(this); Verify((unsigned)index < maxCollisions); + return listStart[index]; + } + int + GetCollisionCount() + {Check(this); return maxCollisions - collisionsLeft;} + int + GetCollisionsLeft() + {Check(this); return collisionsLeft;} + + Logical + TestInstance() const; + }; + + //########################################################################## + //######################## TaggedBoundingBox ######################### + //########################################################################## + + class TaggedBoundingBox: + public BoundingBox + { + public: + void* + GetTagPointer() + {Check(this); return tagPointer;} + + protected: + TaggedBoundingBox(void *tag = NULL); + TaggedBoundingBox( + const ExtentBox &extents, + void *tag = NULL + ); + ~TaggedBoundingBox(); + + void *tagPointer; + }; + + //########################################################################## + //####################### TaggedBoundingBoxOf ######################## + //########################################################################## + + template class TaggedBoundingBoxOf: + public TaggedBoundingBox + { + public: + TaggedBoundingBoxOf(T *tag); + TaggedBoundingBoxOf( + const ExtentBox &extents, + T *tag = NULL + ); + ~TaggedBoundingBoxOf(); + + T* + GetTagPointer() + {return (T*)tagPointer;} + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~ TaggedBoundingBoxOf templates ~~~~~~~~~~~~~~~~~~~ + + template + TaggedBoundingBoxOf::TaggedBoundingBoxOf(T *tag): + TaggedBoundingBox(tag) + { + } + + template + TaggedBoundingBoxOf::TaggedBoundingBoxOf( + const ExtentBox &extents, + T *tag + ): + TaggedBoundingBox(extents, tag) + { + } + + template + TaggedBoundingBoxOf::~TaggedBoundingBoxOf() + { + } + +#endif diff --git a/CODE/RP/MUNGA/BOXCONE.CPP b/CODE/RP/MUNGA/BOXCONE.CPP new file mode 100644 index 0000000..7beb33e --- /dev/null +++ b/CODE/RP/MUNGA/BOXCONE.CPP @@ -0,0 +1,484 @@ +//===========================================================================// +// File: boxsolid.cc // +// Project: MUNGA Brick: Spatializer Library // +// Contents: Implementation details of bounding-box collision subtypes // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 01/11/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 // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(BOXSOLID_HPP) +# include +#endif + +#if !defined(LINE_HPP) +# include +#endif + +//############################################################################# +//############################### BoxedCone ############################# +//############################################################################# + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +BoxedCone::BoxedCone( + const ExtentBox &extents, + BoxedSolid::Material material, + Simulation *owner, + BoxedSolid *next_solid +): + BoxedSolid(extents, ConeType, material, owner, next_solid) +{ + Check_Pointer(this); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +BoxedCone::~BoxedCone() +{ + Check_Pointer(this); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + BoxedCone::IntersectsBounded(const ExtentBox &extents) +{ + Check(this); + Check(&extents); + + Verify(minX <= extents.minX); + Verify(maxX >= extents.maxX); + Verify(minY <= extents.minY); + Verify(maxY >= extents.maxY); + Verify(minZ <= extents.minZ); + Verify(maxZ >= extents.maxZ); + + // + //------------------------------------------------------------------------ + // Find the center point in the XZ plane of the cone, and find the biggest + // radius of the cone by measuring in the X axis, along with its height + //------------------------------------------------------------------------ + // + Vector3D center; + center.x = (minX + maxX) * 0.5f; + center.y = minY; + center.z = (minZ + maxZ) * 0.5f; + Scalar radius = maxX - center.x; + Verify(!Small_Enough(radius)); + + // + //-------------------------------------------------------------------------- + // Convert the closest point in the slice to the coordinates of the cone, + // putting the apex of the cone at the origin, then make sure that the point + // isn't in one of the corners of the box + //-------------------------------------------------------------------------- + // + Vector3D nearest(center); + extents.Constrain(&nearest); + center.y = maxY; + nearest.Subtract(center,nearest); + Scalar r = nearest.x*nearest.x + nearest.z*nearest.z; + if (r > radius*radius) + { + return False; + } + + // + //-------------------------------------------------------------------------- + // Compute the distance from the axis, and then see if the slope of the line + // from the cone apex to the test point is less than the slope of the cone + //-------------------------------------------------------------------------- + // + r = Sqrt(r); + Scalar height = maxY - minY; + return r*height <= nearest.y*radius; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + BoxedCone::ContainsBounded(const Point3D &point) +{ + Check(this); + Check(&point); + + Verify(minX <= point.x); + Verify(maxX >= point.x); + Verify(minY <= point.y); + Verify(maxY >= point.y); + Verify(minZ <= point.z); + Verify(maxZ >= point.z); + + // + //------------------------------------------------------------------------ + // Find the center point in the XZ plane of the cone, and find the biggest + // radius of the cone by measuring in the X axis, along with its height + //------------------------------------------------------------------------ + // + Vector3D center; + center.x = (minX + maxX) * 0.5f; + center.y = maxY; + center.z = (minZ + maxZ) * 0.5f; + Scalar radius = maxX - center.x; + Verify(!Small_Enough(radius)); + + // + //-------------------------------------------------------------------------- + // Convert the closest point in the slice to the coordinates of the cone, + // putting the apex of the cone at the origin, then make sure that the point + // isn't in one of the corners of the box + //-------------------------------------------------------------------------- + // + Vector3D nearest; + nearest.Subtract(center, point); + Scalar r = nearest.x*nearest.x + nearest.z*nearest.z; + if (r > radius*radius) + { + return False; + } + + // + //-------------------------------------------------------------------------- + // Compute the distance from the axis, and then see if the slope of the line + // from the cone apex to the test point is less than the slope of the cone + //-------------------------------------------------------------------------- + // + r = Sqrt(r); + Scalar height = maxY - minY; + return r*height <= nearest.y*radius; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Scalar + BoxedCone::FindDistanceBelowBounded(const Point3D &point) +{ + Check(this); + Check(&point); + + Verify(minX <= point.x); + Verify(maxX >= point.x); + Verify(minY <= point.y); + Verify(minZ <= point.z); + Verify(maxZ >= point.z); + + // + //------------------------------------------------------------------------ + // Find the center point in the XZ plane of the cone, and find the biggest + // radius of the cone by measuring in the X axis, along with its height + //------------------------------------------------------------------------ + // + Vector3D center; + center.x = (minX + maxX) * 0.5f; + center.y = maxY; + center.z = (minZ + maxZ) * 0.5f; + Scalar radius = maxX - center.x; + Verify(!Small_Enough(radius)); + + // + //-------------------------------------------------------------------------- + // Convert the closest point in the slice to the coordinates of the cone, + // putting the apex of the cone at the origin, then make sure that the point + // isn't in one of the corners of the box + //-------------------------------------------------------------------------- + // + Vector3D nearest; + nearest.Subtract(point, center); + Scalar r = nearest.x*nearest.x + nearest.z*nearest.z; + if (r > radius*radius) + { + return -1.0f; + } + + // + //-------------------------------------------------------------------------- + // Compute the distance from the axis, and then see if the slope of the line + // from the cone apex to the test point is less than the slope of the cone + //-------------------------------------------------------------------------- + // + r = Sqrt(r); + Scalar height = maxY - minY; + nearest.y += r*(height/radius); + return Max(nearest.y,0.0f); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +// This function is a helper function used in the derivation for the terms of +// the quadratic equation to find t when colliding a line and a cone. I'm not +// real clear on the physical representation of this kind of dot product +// +static Scalar + Special_Cone_Dot_Product( + const Vector3D &v1, + const Vector3D &v2, + Scalar squared_tan + ) +{ + return v1.x*v2.x - squared_tan*v1.y*v2.y + v1.z*v2.z; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + BoxedCone::HitByBounded( + Line *line, + Scalar enters, + Scalar leaves + ) +{ + Check(this); + Check(line); + + Verify(enters <= leaves); + Verify(leaves >= 0.0f); + + // + //-------------------------------------------------------------------------- + // Find out the size of the box, and set up the height and maximum radius of + // the cone, along with the squared tangent of the spread angle + //-------------------------------------------------------------------------- + // + Vector3D center; + center.x = (minX + maxX) * 0.5f; + center.y = maxY; + center.z = (minZ + maxZ) * 0.5f; + Scalar radius = maxX - center.x; + Scalar height = maxY - minY; + Verify(!Small_Enough(height)); + Scalar squared_tan = radius*radius/(height*height); + + // + //------------------------------------------------------------------------- + // Find the line between the point of the cone and the origin of our line, + // then set up the conditions for the quadratic equation. The following + // equation sets up a*t^2 + b*t + c = 0. The terms a, b, and c are derived + // by solving the following equations for t: + // + // p == line->origin + line->direction * t + // r == p - cone->apex + // r.x^2 + r.z^2 == tan^2(cone_angle)*r.y^2 + // + // The special cone dot product function is a handy way to reduce the + // complexity of the problem + //------------------------------------------------------------------------- + // + Vector3D v; + v.Subtract(line->origin,center); + + // + //-------------------------------------------------------------------------- + // If the line diverges from the axis at the same angle as the spread angle, + // we need to find the closest point on the line to the axis. We then drop + // a vertical plane containing the line through the cone at this point, thus + // generating a hyperbola. We then solve the hyperbola vs. line equation to + // get our intersection point + //-------------------------------------------------------------------------- + // + Scalar a = + Special_Cone_Dot_Product(line->direction, line->direction, squared_tan); + if (Small_Enough(a)) + { + } + + // + //----------------------------------------------- + // Otherwise, continue solving the first equation + //----------------------------------------------- + // + else + { + Scalar b = + 2.0f * Special_Cone_Dot_Product(v, line->direction, squared_tan); + Scalar c = Special_Cone_Dot_Product(v, v, squared_tan); + + // + //----------------------------------------------------------------------- + // Now, use the quadratic equation to determine where the two points + // intersect the cone. If there is no solution, than the line missed the + // cone + //----------------------------------------------------------------------- + // + Verify(!Small_Enough(a)); + Scalar t = -b / (2.0f * a); + Scalar i = b*b - 4.0f*a*c; + + if (i < 0.0f) + { + return False; + } + + // + //---------------------------------------------------------------------- + // If the interval is zero, then the line hits the cone in one spot only + // (a tangential hit). Check to see if hits the lower half of the conic + // equation (our cone) + //---------------------------------------------------------------------- + // + if (Small_Enough(i)) + { + Scalar y = v.y + line->direction.y * t; + if (y > 0.0f) + { + return False; + } + + // + //---------------------------------------------------------------- + // It hit the lower cone, so see if it was entering or leaving the + // cone + //---------------------------------------------------------------- + // + if (line->direction.y > 0.0f) + { + // + //------------------------------------------------------------- + // The line is leaving the cone, so see if we need to reset the + // leaving distance + //------------------------------------------------------------- + // + if (t < leaves) + { + leaves = t; + } + } + + // + //------------------------------------------------------------ + // The line is entering the cone, so see if we need to set the + // entering distance + //------------------------------------------------------------ + // + else if (t > enters) + { + enters = t; + } + + // + //------------------------------------------------------------------- + // See if we still have a collision with the cone, and if so, set the + // new line length + //------------------------------------------------------------------- + // + if (enters > leaves || enters > line->length || leaves < 0.0f) + { + return False; + } + line->length = Max(enters, 0.0f); + return True; + } + + // + //---------------------------------------------------------------------- + // If the interval is non-zero, then the conic section was struck in two + // places. Find out the lengths to those places and the y values for + // those points + //---------------------------------------------------------------------- + // + i = Sqrt(i) / (2.0f * a); + Scalar t1,t2; + if (i > 0.0f) + { + t1 = t - i; + t2 = t + i; + } + else + { + t1 = t + i; + t2 = t - i; + } + Scalar y1 = v.y + line->direction.y * t1; + Scalar y2 = v.y + line->direction.y * t2; + + // + //---------------------------------------------------------------------- + // There are four combinations of the signs of the y values. Each has a + // different effect on missing/hitting, entering or leaving distances. + // First check to see if only the upper conic was hit + //---------------------------------------------------------------------- + // + if (y1 > 0.0f) + { + if (y2 > 0.0f) + { + return False; + } + + // + //----------------------------------------------------------------- + // The ray is entering our conic, so set the distance appropriately + //----------------------------------------------------------------- + // + if (t2 > enters) + { + enters = t2; + } + } + + // + //---------------------------------------------------------------------- + // See if the ray is leaving the lower conic, and if so, set the leaving + // distance accordingly + //---------------------------------------------------------------------- + // + else + { + if (y2 > 0.0f) + { + if (t1 < leaves) + { + leaves = t1; + } + } + + // + //-------------------------------------------------------------------- + // Both spots are in the lower conic, so set both leaving and entering + // distances + //-------------------------------------------------------------------- + // + else + { + if (t1 > enters) + { + enters = t1; + } + if (t2 < leaves) + { + leaves = t2; + } + } + } + + // + //----------------------------------------------------------------------- + // See if we still have a collision with the cone, and if so, set the new + // line length + //----------------------------------------------------------------------- + // + if (enters > leaves || enters > line->length || leaves < 0.0f) + { + return False; + } + line->length = Max(enters, 0.0f); + } + return True; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + BoxedCone::TestInstance() const +{ + return solidType == ConeType; +} + diff --git a/CODE/RP/MUNGA/BOXDISKS.CPP b/CODE/RP/MUNGA/BOXDISKS.CPP new file mode 100644 index 0000000..ecc3b92 --- /dev/null +++ b/CODE/RP/MUNGA/BOXDISKS.CPP @@ -0,0 +1,1796 @@ +//===========================================================================// +// File: boxdisks.cc // +// Project: MUNGA Brick: Spatializer Library // +// Contents: Implementation details of bounding-box collision subtypes // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 01/11/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 // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(BOXSOLID_HPP) +# include +#endif + +#if !defined(LINE_HPP) +# include +#endif + +#if !defined(PLANE_HPP) +# include +#endif + +//############################################################################# +//########################## BoxedXAxisCylinder ######################### +//############################################################################# + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +BoxedXAxisCylinder::BoxedXAxisCylinder( + const ExtentBox &extents, + BoxedSolid::Material material, + Simulation *owner, + BoxedSolid *next_solid +): + BoxedSolid(extents, XAxisCylinderType, material, owner, next_solid) +{ + Check_Pointer(this); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +BoxedXAxisCylinder::~BoxedXAxisCylinder() +{ + Check_Pointer(this); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + BoxedXAxisCylinder::IntersectsBounded(const ExtentBox &extents) +{ + Check(this); + Check(&extents); + + Verify(minX <= extents.minX); + Verify(maxX >= extents.maxX); + Verify(minY <= extents.minY); + Verify(maxY >= extents.maxY); + Verify(minZ <= extents.minZ); + Verify(maxZ >= extents.maxZ); + + // + //--------------------------------------------------------------------- + // Find the center point in the YZ plane of the cylinder, and find the + // radius of the cylinder by measuring in the Y axis. The X value will + // automatically be within the cylinder if Y & Z are + //--------------------------------------------------------------------- + // + Scalar y = (minY + maxY) * 0.5f; + Scalar z = (minZ + maxZ) * 0.5f; + Scalar radius = maxY - y; + + // + //----------------------------------------------------------------------- + // Convert the point to the coordinates of the cylinder, putting the + // center point of the cylinder at the origin. Note that we are + // subtracting the point from the center point as opposed to the normal + // way. This will result in both X and Y being negated, but since we are + // squaring them, this will not matter + //----------------------------------------------------------------------- + // + Scalar y2 = y; + Scalar z2 = z; + Clamp(y2, extents.minY, extents.maxY); + Clamp(z2, extents.minZ, extents.maxZ); + y2 -= y; + z2 -= z; + return y2*y2 + z2*z2 <= radius*radius; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + BoxedXAxisCylinder::ContainsBounded(const Point3D &point) +{ + Check(this); + Check(&point); + + Verify(minX <= point.x); + Verify(maxX >= point.x); + Verify(minY <= point.y); + Verify(maxY >= point.y); + Verify(minZ <= point.z); + Verify(maxZ >= point.z); + + // + //--------------------------------------------------------------------- + // Find the center point in the YZ plane of the cylinder, and find the + // radius of the cylinder by measuring in the Y axis. The X value will + // automatically be within the cylinder if Y & Z are + //--------------------------------------------------------------------- + // + Scalar y = (minY + maxY) * 0.5f; + Scalar z = (minZ + maxZ) * 0.5f; + Scalar radius = maxY - y; + + // + //----------------------------------------------------------------------- + // Convert the point to the coordinates of the cylinder, putting the + // center point of the cylinder at the origin. Note that we are + // subtracting the point from the center point as opposed to the normal + // way. This will result in both X and Y being negated, but since we are + // squaring them, this will not matter + //----------------------------------------------------------------------- + // + y -= point.y; + z -= point.z; + return y*y + z*z <= radius*radius; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Scalar + BoxedXAxisCylinder::FindDistanceBelowBounded(const Point3D &point) +{ + Check(this); + Check(&point); + + Verify(minX <= point.x); + Verify(maxX >= point.x); + Verify(minY <= point.y); + Verify(minZ <= point.z); + Verify(maxZ >= point.z); + + // + //--------------------------------------------------------------------- + // Find the center point in the XZ plane of the cylinder, and find the + // radius of the cylinder by measuring in the X axis. The Y value will + // automatically be within the cylinder if X & Z are + //--------------------------------------------------------------------- + // + Scalar z = (minZ + maxZ) * 0.5f; + Scalar radius = maxZ - z; + + // + //-------------------------------------------------------------------------- + // figure out the thickness of cylinder slice where a plane perpendicular to + // X drops through the cylinder and the test point + //-------------------------------------------------------------------------- + // + z = point.z - z; + Scalar y = radius - Sqrt(radius*radius - z*z); + if (point.y > maxY - y) + { + return point.y - maxY + y; + } + else if (point.y < minY + y) + { + return -1.0f; + } + else + { + return 0.0f; + } +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + BoxedXAxisCylinder::HitByBounded( + Line *line, + Scalar enters, + Scalar leaves + ) +{ + Check(this); + Check(line); + + Verify(enters <= leaves); + Verify(leaves >= 0.0f); + + Scalar y = (minY + maxY) * 0.5f; + Scalar z = (minZ + maxZ) * 0.5f; + Scalar radius = maxY - y; + + Scalar a = + line->direction.y*line->direction.y + + line->direction.z*line->direction.z; + + // + //-------------------------------------------------------------------------- + // If the line is parallel to the cylinder, see if it hits the bottom/top of + // the cylinder in the X-Z plane. If it does, it hits the cylinder when it + // hits the box, otherwise it misses altogether + //-------------------------------------------------------------------------- + // + if (Small_Enough(a)) + { + y -= line->origin.y; + z -= line->origin.z; + if (y*y + z*z > radius*radius) + { + return False; + } + line->length = Max(enters, 0.0f); + return True; + } + + // + //----------------------------------------------------------------------- + // The line is not parallel to the cylinder, so solve the equation giving + // the intersection of the line with the cylinder using the quadratic + // equation + //----------------------------------------------------------------------- + // + y = line->origin.y - y; + z = line->origin.z - z; + + Scalar b = 2.0f * (line->direction.y*y + line->direction.z*z); + Scalar c = y*y + z*z - radius*radius; + Scalar i = b*b - 4.0f*a*c; + + if (i < SMALL) + { + return False; + } + + // + //------------------------------------------------------------------------- + // If the line does hit the cylinder, update the enter/leaving distances to + // take the cylinder surface into account + //------------------------------------------------------------------------- + // + Verify(a > SMALL); + Scalar ratio = Sqrt(a)/(a*a); + i = Sqrt(i); + b *= -ratio; + i *= ratio; + Scalar enter = (b - i) * 0.5f; + if (enter > enters) + { + enters = enter; + } + + Scalar leave = enter + i; + if (leave < leaves) + { + leaves = leave; + } + + // + //------------------------------------------------------------------------ + // If we have pushed the entering distance after the leaving distance, the + // cylinder was missed, otherwise it is hit at the new entering distance + //------------------------------------------------------------------------ + // + if (enters > leaves || enters > line->length || leaves < 0.0f) + { + return False; + } + + line->length = Max(enters, 0.0f); + return True; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + BoxedXAxisCylinder::TestInstance() const +{ + return solidType == XAxisCylinderType; +} + +//############################################################################# +//########################## BoxedYAxisCylinder ######################### +//############################################################################# + +enum { + Min_X_Bit = 0x01, + Max_X_Bit = 0x02, + X_Bits = Min_X_Bit|Max_X_Bit, + Min_Y_Bit = 0x04, + Max_Y_Bit = 0x08, + Y_Bits = Min_Y_Bit|Max_Y_Bit, + Min_Z_Bit = 0x10, + Max_Z_Bit = 0x20, + Z_Bits = Min_Z_Bit|Max_Z_Bit, + X_Axis_Bit = 0x04, + Y_Axis_Bit = 0x02, + Z_Axis_Bit = 0x01 +}; + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +BoxedYAxisCylinder::BoxedYAxisCylinder( + const ExtentBox &extents, + BoxedSolid::Material material, + Simulation *owner, + BoxedSolid *next_solid +): + BoxedSolid(extents, YAxisCylinderType, material, owner, next_solid) +{ + Check_Pointer(this); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +BoxedYAxisCylinder::~BoxedYAxisCylinder() +{ + Check_Pointer(this); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + BoxedYAxisCylinder::VerifyCollision(BoxedSolidCollision &collision) +{ + Check(this); + Check(&collision); + + Verify(minX <= collision.collisionSlice.minX); + Verify(maxX >= collision.collisionSlice.maxX); + Verify(minY <= collision.collisionSlice.minY); + Verify(maxY >= collision.collisionSlice.maxY); + Verify(minZ <= collision.collisionSlice.minZ); + Verify(maxZ >= collision.collisionSlice.maxZ); + + Scalar + x, + z, + their_x, + their_z, + radius, + their_radius; + + BoxedSolid* solid = collision.GetTreeVolume(); + + // + //-------------------------------------------------------------------------- + // See which type of collision we are going to have to verify, and branch to + // it + //-------------------------------------------------------------------------- + // + switch (solid->solidType) + { + + // + //------------------------------------------------------------------------- + // When colliding with a ramp or horizontal cylinder, go ahead and have the + // collision slice assume it is from a block. The error thus generated is + // actually very small and not really noticed by anyone + //------------------------------------------------------------------------- + // + case BlockType: + case SphereType: + case ReducibleBlockType: + case RampFacingNegativeZType: + case RampFacingNegativeXType: + case RampFacingPositiveZType: + case RampFacingPositiveXType: + case InvertedRampFacingNegativeZType: + case InvertedRampFacingNegativeXType: + case InvertedRampFacingPositiveZType: + case InvertedRampFacingPositiveXType: + case WedgeFacingNegativeZAndPositiveXType: + case WedgeFacingNegativeZAndNegativeXType: + case WedgeFacingPositiveZAndNegativeXType: + case WedgeFacingPositiveZAndPositiveXType: + case XAxisCylinderType: + case ZAxisCylinderType: + case RightHandedTileType: + case LeftHandedTileType: + return IntersectsBounded(collision.collisionSlice); + + // + //-------------------------------------------------------------------------- + // When colliding with another upright cylinder, simply calculate the + // distance between the two center points and see if it is less than the sum + // of the two radii + //-------------------------------------------------------------------------- + // + case YAxisCylinderType: + x = (maxX + minX) * 0.5f; + z = (maxZ + minZ) * 0.5f; + radius = maxX - x; + + their_x = (solid->maxX + solid->minX) * 0.5f; + their_z = (solid->maxZ + solid->minZ) * 0.5f; + their_radius = solid->maxX - their_x; + + radius += their_radius; + x -= their_x; + z -= their_z; + + return radius*radius >= x*x + z*z; + + // + //------------------------------------------------------------------------ + // When colliding with a cone, we will base all the calculations on the + // assumption that the collision can be detected identically by a cylinder + // created by the the intersection of the bottom plane of this volume with + // the cone + //------------------------------------------------------------------------ + // + case ConeType: + x = (maxX + minX) * 0.5f; + z = (maxZ + minZ) * 0.5f; + radius = maxX - x; + + their_x = (solid->maxX + solid->minX) * 0.5f; + their_z = (solid->maxZ + solid->minZ) * 0.5f; + their_radius = solid->maxX - their_x; + their_radius *= (solid->maxY - minY) / (solid->maxY - solid->minY); + + radius += their_radius; + x -= their_x; + z -= their_z; + + return radius*radius >= x*x + z*z; + + // + //------------------------------ + // Fail on the unsupported types + //------------------------------ + // + default: + #if defined(LAB_ONLY) + DEBUG_STREAM << collision.GetTreeVolume()->solidType << endl; + Fail("Unsupported collision primative\n"); + #endif + return False; + } +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + BoxedYAxisCylinder::ProcessCollision( + BoxedSolidCollision &collision, + const Vector3D &velocity, + BoxedSolidCollisionList *last_collisions, + Normal *normal, + Scalar *penetration + ) +{ + Check(this); + Check(&collision); + Check(&velocity); + Check_Pointer(normal); + Check_Pointer(penetration); + + Scalar + result, + len; + int + i, + ok=0, + axes, + axis, + face, + mask = 0, + opp_face, + temp; + BoxedSolid *solid = collision.GetTreeVolume(); + Vector3D + position; + + // + //----------------------------------------------------- + // First verify that the collision really should happen + //----------------------------------------------------- + // + if (Small_Enough(velocity.LengthSquared())) + { + return False; + } + if (!VerifyCollision(collision)) + { + return False; + } + + // + //------------------------------------------------------------------------ + // Look at each of the three coordinates of motion, and make sure that the + // collision slice is valid for at least one of them + //------------------------------------------------------------------------ + // + for (axis=X_Axis; axis<=Z_Axis; ++axis) + { + // + //------------------------------------------------------------------- + // Make sure we have actual velocity along this axis, then figure out + // which face to test + //------------------------------------------------------------------- + // + (*normal)[axis] = 0.0f; + mask <<= 1; + if (Small_Enough(velocity[axis])) + { + continue; + } + face = (axis<<1) + (velocity[axis]>0.0f); + opp_face = face ^ 1; + + // + //---------------------------------------------------------------------- + // Find out which faces of the cylinder's bounding box should be + // considered for purposes of the collision. Sides are only considered + // valid if the leading face of the collision slice matches the leading + // face of the disk. + //---------------------------------------------------------------------- + // + if ( + collision.collisionSlice[face] == (*this)[face] && + ( + (face&1) && (*this)[opp_face] < collision.collisionSlice[opp_face] + || + !(face&1) + && (*this)[opp_face] > collision.collisionSlice[opp_face] + ) + ) + mask |= 1; + } + + // + //----------------------------------------------------------------- + // Handle the actual collision based upon the type of model and the + // components involved in the collision + //----------------------------------------------------------------- + // + switch (solid->solidType) + { + + // + //-------------------------- + // Handle the Z facing Ramps + //-------------------------- + // + case RampFacingNegativeZType: + normal->y = solid->maxZ - solid->minZ; + normal->z = solid->maxY - solid->minY; + position.y = collision.collisionSlice.minY - solid->maxY; + position.z = collision.collisionSlice.minZ - solid->minZ; + + // + //-------------------------------------------------------------------- + // The normal y and z values are assumed at this point to point in the + // right direction although their lengths are screwed up + //-------------------------------------------------------------------- + // +Compute_X: + len = Sqrt(normal->y*normal->y + normal->z*normal->z); + Verify(!Small_Enough(len)); + normal->y /= len; + normal->z /= len; + Check_Fpu(); + + result = velocity.y*normal->y + velocity.z*normal->z; + if (result > -SMALL) + { + if (mask&X_Axis_Bit) + { + goto X_Only; + } + else + { + break; + } + } + *penetration = + fabs((position.y*normal->y + position.z*normal->z) / result); + Check_Fpu(); + + // + //----------------------------------------------------------------------- + // If the side of the ramp was involved in the collision, pick either the + // ramp or side to reflect off of based upon which opposes motion more + //----------------------------------------------------------------------- + // + if (mask&X_Axis_Bit) + { + // + //---------------------------------------------------------------- + // Compute plane equation and find the distance from the most + // penetrating slice point to the plane. If the ray comes out the + // ramp, we hit that, otherwise we hit the side + //---------------------------------------------------------------- + // + result = fabs((solid->maxX - solid->minX) / velocity.x); + Check_Fpu(); + if (result < *penetration) + { +X_Only: + normal->x = (velocity.x > 0.0f) ? -1.0f : 1.0f; + normal->y = 0.0f; + normal->z = 0.0f; + *penetration = result; + } + } + goto Reflect; + + case RampFacingPositiveZType: + normal->y = solid->maxZ - solid->minZ; + normal->z = solid->minY - solid->maxY; + position.y = collision.collisionSlice.minY - solid->maxY; + position.z = collision.collisionSlice.maxZ - solid->maxZ; + goto Compute_X; + + case InvertedRampFacingNegativeZType: + normal->y = solid->minZ - solid->maxZ; + normal->z = solid->maxY - solid->minY; + position.y = collision.collisionSlice.maxY - solid->maxY; + position.z = collision.collisionSlice.minZ - solid->maxZ; + goto Compute_X; + + case InvertedRampFacingPositiveZType: + normal->y = solid->minZ - solid->maxZ; + normal->z = solid->minY - solid->maxY; + position.y = collision.collisionSlice.maxY - solid->maxY; + position.z = collision.collisionSlice.maxZ - solid->minZ; + goto Compute_X; + + // + //-------------------------- + // Handle the X facing ramps + //-------------------------- + // + case RampFacingNegativeXType: + normal->x = solid->maxY - solid->minY; + normal->y = solid->maxX - solid->minX; + position.y = collision.collisionSlice.minY - solid->maxY; + position.x = collision.collisionSlice.minX - solid->minX; + + // + //-------------------------------------------------------------------- + // The normal x and y values are assumed at this point to point in the + // right direction although their lengths are screwed up + //-------------------------------------------------------------------- + // +Compute_Z: + len = Sqrt(normal->x*normal->x + normal->y*normal->y); + Verify(!Small_Enough(len)); + normal->x /= len; + normal->y /= len; + Check_Fpu(); + + result = velocity.y*normal->y + velocity.x*normal->x; + if (result > -SMALL) + { + if (mask&Z_Axis_Bit) + { + goto Z_Only; + } + else + { + break; + } + } + *penetration = + fabs((position.y*normal->y + position.x*normal->x) / result); + Check_Fpu(); + + // + //----------------------------------------------------------------------- + // If the side of the ramp was involved in the collision, pick either the + // ramp or side to reflect off of based upon which opposes motion more + //----------------------------------------------------------------------- + // + if (mask&Z_Axis_Bit) + { + // + //---------------------------------------------------------------- + // Compute plane equation and find the distance from the most + // penetrating slice point to the plane. If the ray comes out the + // ramp, we hit that, otherwise we hit the side + //---------------------------------------------------------------- + // + result = fabs((solid->maxZ - solid->minZ) / velocity.z); + Check_Fpu(); + if (result < *penetration) + { +Z_Only: + normal->x = 0.0f; + normal->y = 0.0f; + normal->z = (velocity.z > 0.0f) ? -1.0f : 1.0f; + *penetration = result; + } + } + goto Reflect; + + case RampFacingPositiveXType: + normal->x = solid->minY - solid->maxY; + normal->y = solid->maxX - solid->minX; + position.y = collision.collisionSlice.minY - solid->maxY; + position.x = collision.collisionSlice.maxX - solid->maxX; + goto Compute_Z; + + case InvertedRampFacingNegativeXType: + normal->x = solid->maxY - solid->minY; + normal->y = solid->minX - solid->maxX; + position.y = collision.collisionSlice.maxY - solid->maxY; + position.x = collision.collisionSlice.minX - solid->maxX; + goto Compute_Z; + + case InvertedRampFacingPositiveXType: + normal->x = solid->minY - solid->maxY; + normal->y = solid->minX - solid->maxX; + position.y = collision.collisionSlice.maxY - solid->maxY; + position.x = collision.collisionSlice.maxX - solid->minX; + goto Compute_Z; + + // + //------------------ + // Handle the wedges + //------------------ + // + case WedgeFacingNegativeZAndPositiveXType: + normal->x = solid->minZ - solid->maxZ; + normal->z = solid->maxX - solid->minX; + position.x = collision.collisionSlice.maxX - solid->minX; + position.z = collision.collisionSlice.minZ - solid->minZ; + + // + //-------------------------------------------------------------------- + // The normal x and z values are assumed at this point to point in the + // right direction although their lengths are screwed up + //-------------------------------------------------------------------- + // +Compute_Y: + len = Sqrt(normal->x*normal->x + normal->z*normal->z); + Verify(!Small_Enough(len)); + normal->x /= len; + normal->z /= len; + Check_Fpu(); + + result = velocity.x*normal->x + velocity.z*normal->z; + if (result > -SMALL) + { + if (mask&Y_Axis_Bit) + { + goto Y_Only; + } + else + { + break; + } + } + *penetration = + fabs((position.x*normal->x + position.z*normal->z) / result); + Check_Fpu(); + + // + //----------------------------------------------------------------------- + // If the top of the wedge was involved in the collision, pick either the + // side or top to reflect off of based upon which opposes motion more + //----------------------------------------------------------------------- + // + if (mask&Y_Axis_Bit) + { + // + //---------------------------------------------------------------- + // Compute plane equation and find the distance from the most + // penetrating slice point to the plane. If the ray comes out the + // ramp, we hit that, otherwise we hit the side + //---------------------------------------------------------------- + // + result = fabs((solid->maxY - solid->minY) / velocity.y); + Check_Fpu(); + if (result < *penetration) + { +Y_Only: + normal->x = 0.0f; + normal->y = (velocity.y > 0.0f) ? -1.0f : 1.0f; + normal->z = 0.0f; + *penetration = result; + } + } + goto Reflect; + + case WedgeFacingNegativeZAndNegativeXType: + normal->x = solid->maxZ - solid->minZ; + normal->z = solid->maxX - solid->minX; + position.x = collision.collisionSlice.minX - solid->maxX; + position.z = collision.collisionSlice.minZ - solid->minZ; + goto Compute_Y; + + case WedgeFacingPositiveZAndNegativeXType: + normal->x = solid->maxZ - solid->minZ; + normal->z = solid->minX - solid->maxX; + position.x = collision.collisionSlice.minX - solid->minX; + position.z = collision.collisionSlice.maxZ - solid->minZ; + goto Compute_Y; + + case WedgeFacingPositiveZAndPositiveXType: + normal->x = solid->minZ - solid->maxZ; + normal->z = solid->minX - solid->maxX; + position.x = collision.collisionSlice.maxX - solid->maxX; + position.z = collision.collisionSlice.maxZ - solid->minZ; + goto Compute_Y; + + // + //---------------------------------------------------------------------- + //---------------------------------------------------------------------- + // + case XAxisCylinderType: + normal->y = minY + maxY - solid->minY - solid->maxY; + normal->z = minZ + maxZ - solid->minZ - solid->maxZ; + len = normal->y*normal->y + normal->z*normal->z; + if (Small_Enough(len)) + { + goto Reverse; + } + len = Sqrt(len); + normal->y /= len; + normal->z /= len; + Check_Fpu(); + *penetration = 1.0f; + goto Reflect; + + case ZAxisCylinderType: + normal->x = minX + maxX - solid->minX - solid->maxX; + normal->y = minY + maxY - solid->minY - solid->maxY; + len = normal->x*normal->x + normal->y*normal->y; + if (Small_Enough(len)) + { + goto Reverse; + } + len = Sqrt(len); + normal->x /= len; + normal->y /= len; + Check_Fpu(); + *penetration = 1.0f; + goto Reflect; + + case YAxisCylinderType: + normal->x = minX + maxX - solid->minX - solid->maxX; + normal->z = minZ + maxZ - solid->minZ - solid->maxZ; + len = normal->x*normal->x + normal->z*normal->z; + if (Small_Enough(len)) + { + goto Reverse; + } + len = Sqrt(len); + normal->x /= len; + normal->z /= len; + Check_Fpu(); + *penetration = 1.0f; + + if (mask & Y_Axis_Bit) + { + len = (velocity.z > 0.0f) ? -1.0f : 1.0f; + if (len*velocity.y < velocity.x*normal->x + velocity.z*normal->z) + { + normal->x = 0.0f; + normal->y = len; + normal->z = 0.0f; + } + } + goto Reflect; + + // + //------------- + // Handle cones + //------------- + // + case ConeType: + normal->x = minX + maxX - solid->minX - solid->maxX; + normal->z = minZ + maxZ - solid->minZ - solid->maxZ; + len = normal->x*normal->x + normal->z*normal->z; + *penetration = 1.0f; + if (Small_Enough(len)) + { + goto Reverse; + } + normal->y = + 0.5f * (solid->maxX - solid->minX) * Sqrt(len) + / (solid->maxY - solid->minY); + Check_Fpu(); + normal->Normalize(*normal); + goto Reflect; + + // + //--------------- + // Handle spheres + //--------------- + // + case SphereType: + normal->x = minX + maxX - solid->minX - solid->maxX; + normal->y = minY + maxY - solid->minY - solid->maxY; + normal->z = minZ + maxZ - solid->minZ - solid->maxZ; + len = normal->x*normal->x + normal->y*normal->y + normal->z*normal->z; + if (Small_Enough(len)) + { + goto Reverse; + } + len = Sqrt(len); + normal->x /= len; + normal->y /= len; + normal->z /= len; + Check_Fpu(); + *penetration = 1.0f; + goto Reflect; + + // + //--------------------------------- + // Handle reflecting off of a block + //--------------------------------- + // + case BlockType: + case ReducibleBlockType: + + // + //--------------------------------------------------- + // Count the number of axes involved in the collision + //--------------------------------------------------- + // + temp = mask; + for (axes=0; temp; temp>>=1) + { + if (temp&1) + { + ++axes; + } + } + + // + //------------------------------------------------------ + // Handle as appropriate to the number of sides involved + //------------------------------------------------------ + // + switch (axes) + { + + // + //--------------------------------------------------------------------- + // If no sides were found to be involved in the collision, then we have + // a weird case where the disk has completely penetrated through the + // block + //--------------------------------------------------------------------- + // + case 0: + + // + //------------------------------------------------------------------- + // This is where we will check the current volume against our list of + // volumes hit last time. If we have not already hit this solid, + // reverse the motion as we have penetrated the object + //------------------------------------------------------------------- + // + i = 0; + if (last_collisions) + { + for (i=0; iGetCollisionCount(); ++i) + { + if ((*last_collisions)[i].GetTreeVolume() == solid) + { + break; + } + } + } + if (!last_collisions || i == last_collisions->GetCollisionCount()) + { +Reverse: + *penetration = 1.0f; + result = -1.0f / velocity.Length(); + Check_Fpu(); + normal->x = velocity.x*result; + normal->y = velocity.y*result; + normal->z = velocity.z*result; + ok = True; + break; + } + + // + //-------------------------------------------------------------------- + // Since this is not a fresh hit, check to see if any part of the + // colliding disk sticks out of the slice. If so, then we are heading + // out of the solid in that direction, so let the motion continue. + // WHAT IS THE VELOCITY TRIGGER FOR???? + //-------------------------------------------------------------------- + // + position.x = (maxX + minX) * 0.5f; + position.y = (maxY + minY) * 0.5f; + position.z = (maxZ + minZ) * 0.5f; + for (face=0; face<6; ++face) + { + i = face >> 1; + if (face&1) + { + if + ( + (*this)[face] > collision.collisionSlice[face] + && position[i] > collision.collisionSlice[face] + && velocity[i] < 5.0f + ) + break; + } + else if + ( + (*this)[face] < collision.collisionSlice[face] + && position[i] < collision.collisionSlice[face] + && velocity[i] > -5.0f + ) + break; + } + if (face != 6) + { + break; + } + + // + //------------------------------------------------------------------- + // Otherwise, generate a normal opposing motion towards the center of + // the solid. For each component, if it does not oppose motion, zero + // it out. This will give a better approximation of the brick + //------------------------------------------------------------------- + // + normal->x = position.x - (solid->minX + solid->maxX) * 0.5f; + normal->y = position.y - (solid->minY + solid->maxY) * 0.5f; + normal->z = position.z - (solid->minZ + solid->maxZ) * 0.5f; + for (i=0; i<3; ++i) + { + if ((*normal)[i]*velocity[i] >= 0.0) + { + (*normal)[i] = 0.0; + } + } + + // + //---------------------------------------------------------------- + // Normalize the vector, making sure we don't get killed by a zero + // case + //---------------------------------------------------------------- + // + result = normal->Length(); + if (!Small_Enough(result)) + { + normal->x /= result; + normal->y /= result; + normal->z /= result; + Check_Fpu(); + } + else + { + break; + } + *penetration = 1.0f; + goto Reflect; + + // + //----------------------------------------------------------------- + // If only one side is involved in the collision, reflect off of it + //----------------------------------------------------------------- + // + case 1: +Test_Corner: + position.x = 0.5f * (minX + maxX); + position.z = 0.5f * (minZ + maxZ); + switch (mask) + { + case X_Axis_Bit: + face = X_Axis << 1; + + // + //---------------------------------- + // Figure out the z bounce direction + //---------------------------------- + // + if (collision.collisionSlice.minZ > position.z) + { + normal->z = position.z - collision.collisionSlice.minZ; + } + else if (collision.collisionSlice.maxZ < position.z) + { + normal->z = position.z - collision.collisionSlice.maxZ; + } + + // + //---------------------------------- + // Figure out the x bounce direction + //---------------------------------- + // + len = maxX - position.x; + normal->x = len*len - normal->z*normal->z; + Verify(normal->x >= 0.0f); + normal->x = Sqrt(normal->x); + normal->x /= len; + normal->z /= len; + Check_Fpu(); + if (velocity.x > 0.0f) + { + normal->x = -normal->x; + } + break; + + case Y_Axis_Bit: + face = Y_Axis << 1; + *penetration = + fabs( + ( + collision.collisionSlice[face] + - collision.collisionSlice[face^1] + ) / velocity[face>>1] + ); + Check_Fpu(); + goto Pick_Side; + + case Z_Axis_Bit: + face = Z_Axis << 1; + + // + //---------------------------------- + // Figure out the x bounce direction + //---------------------------------- + // + if (collision.collisionSlice.minX > position.x) + { + normal->x = position.x - collision.collisionSlice.minX; + } + else if (collision.collisionSlice.maxX < position.x) + { + normal->x = position.x - collision.collisionSlice.maxX; + } + + // + //---------------------------------- + // Figure out the z bounce direction + //---------------------------------- + // + len = maxX - position.x; + normal->z = len*len - normal->x*normal->x; + Verify(normal->z >= 0.0f); + normal->z = Sqrt(normal->z); + normal->x /= len; + normal->z /= len; + Check_Fpu(); + if (velocity.z > 0.0f) + { + normal->z = -normal->z; + } + break; + } + *penetration = + fabs( + ( + collision.collisionSlice[face] + - collision.collisionSlice[face^1] + ) / velocity[face>>1] + ); + Check_Fpu(); + + // + //------------------------------------------------------------------- + // Check to make sure that the normal opposes velocity. If it + // doesn't look to see if this is the first hit on the object, and if + // so, reverse the velocity + //------------------------------------------------------------------- + // +Reflect: + Check(normal); + ok = *normal * velocity < 0.0f; + if (!ok) + { + i = 0; + if (last_collisions) + { + for (i=0; iGetCollisionCount(); ++i) + { + if ((*last_collisions)[i].GetTreeVolume() == solid) + { + break; + } + } + } + if (!last_collisions || i == last_collisions->GetCollisionCount()) + { + goto Reverse; + } + } + break; + + // + //--------------------------------------------------------------------- + // If two faces were involved, we hit an edge, so figure out which face + // we really hit and mask off the other face + //--------------------------------------------------------------------- + // + case 2: + switch (mask) + { + case X_Axis_Bit|Z_Axis_Bit: + position.x = + collision.collisionSlice.maxX - collision.collisionSlice.minX; + position.z = + collision.collisionSlice.maxZ - collision.collisionSlice.minZ; + mask ^= + (fabs(position.z*velocity.x) > fabs(position.x*velocity.z)) + ? Z_Axis_Bit : X_Axis_Bit; + break; + + case X_Axis_Bit|Y_Axis_Bit: + position.x = + collision.collisionSlice.maxX - collision.collisionSlice.minX; + position.y = + collision.collisionSlice.maxY - collision.collisionSlice.minY; + mask ^= + (fabs(position.y*velocity.x) > fabs(position.x*velocity.y)) + ? Y_Axis_Bit : X_Axis_Bit; + break; + + case Y_Axis_Bit|Z_Axis_Bit: + position.y = + collision.collisionSlice.maxY - collision.collisionSlice.minY; + position.z = + collision.collisionSlice.maxZ - collision.collisionSlice.minZ; + mask ^= + (fabs(position.y*velocity.z) > fabs(position.z*velocity.y)) + ? Y_Axis_Bit : Z_Axis_Bit; + break; + } + goto Test_Corner; + + + // + //----------------------------------------------------------------------- + // Otherwise, project the intruding vertex back along the velocity vector + // to try and find out which face to bounce off of + //----------------------------------------------------------------------- + // + default: + position.x = + collision.collisionSlice.maxX - collision.collisionSlice.minX; + position.y = + collision.collisionSlice.maxY - collision.collisionSlice.minY; + position.z = + collision.collisionSlice.maxZ - collision.collisionSlice.minZ; + + position.x = fabs(position.x/velocity.x); + position.y = fabs(position.y/velocity.y); + position.z = fabs(position.z/velocity.z); + + if (position.x < position.y) + { + face = (position.x < position.z) ? (X_Axis<<1) : (Z_Axis<<1); + } + else + { + face = (position.y < position.z) ? (Y_Axis<<1) : (Z_Axis<<1); + } + *penetration = position[face>>1]; + +Pick_Side: + if (velocity[face>>1] > 0.0f) + { + (*normal)[face>>1] = -1.0f; + } + else + { + (*normal)[face>>1] = 1.0f; + } + goto Reflect; + } + break; + + #if defined(LAB_ONLY) + default: + Fail("Unsupported collision type!...\n"); + break; + #endif + } + + if (ok) + { + Check(normal); + if (*penetration < 0.0f) + { + return False; + } + } + return ok; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + BoxedYAxisCylinder::IntersectsBounded(const ExtentBox &extents) +{ + Check(this); + Check(&extents); + + Verify(minX <= extents.minX); + Verify(maxX >= extents.maxX); + Verify(minY <= extents.minY); + Verify(maxY >= extents.maxY); + Verify(minZ <= extents.minZ); + Verify(maxZ >= extents.maxZ); + + // + //--------------------------------------------------------------------- + // Find the center point in the XZ plane of the cylinder, and find the + // radius of the cylinder by measuring in the X axis. The Y value will + // automatically be within the cylinder if X & Z are + //--------------------------------------------------------------------- + // + Scalar x = (minX + maxX) * 0.5f; + Scalar z = (minZ + maxZ) * 0.5f; + Scalar radius = maxX - x; + + // + //----------------------------------------------------------------------- + // Convert the point to the coordinates of the cylinder, putting the + // center point of the cylinder at the origin. Note that we are + // subtracting the point from the center point as opposed to the normal + // way. This will result in both X and Y being negated, but since we are + // squaring them, this will not matter + //----------------------------------------------------------------------- + // + Scalar x2 = x; + Scalar z2 = z; + Clamp(x2, extents.minX, extents.maxX); + Clamp(z2, extents.minZ, extents.maxZ); + x2 -= x; + z2 -= z; + return x2*x2 + z2*z2 <= radius*radius; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + BoxedYAxisCylinder::ContainsBounded(const Point3D &point) +{ + Check(this); + Check(&point); + + Verify(minX <= point.x); + Verify(maxX >= point.x); + Verify(minY <= point.y); + Verify(maxY >= point.y); + Verify(minZ <= point.z); + Verify(maxZ >= point.z); + + // + //--------------------------------------------------------------------- + // Find the center point in the XZ plane of the cylinder, and find the + // radius of the cylinder by measuring in the X axis. The Y value will + // automatically be within the cylinder if X & Z are + //--------------------------------------------------------------------- + // + Scalar x = (minX + maxX) * 0.5f; + Scalar z = (minZ + maxZ) * 0.5f; + Scalar radius = maxX - x; + + // + //----------------------------------------------------------------------- + // Convert the point to the coordinates of the cylinder, putting the + // center point of the cylinder at the origin. Note that we are + // subtracting the point from the center point as opposed to the normal + // way. This will result in both X and Y being negated, but since we are + // squaring them, this will not matter + //----------------------------------------------------------------------- + // + x -= point.x; + z -= point.z; + return x*x + z*z <= radius*radius; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Scalar + BoxedYAxisCylinder::FindDistanceBelowBounded(const Point3D &point) +{ + Check(this); + Check(&point); + + Verify(minX <= point.x); //z); //GY + Verify(maxX >= point.x); //z); //GY + Verify(minY <= point.y); + Verify(minZ <= point.z); + Verify(maxZ >= point.z); + + // + //--------------------------------------------------------------------- + // Find the center point in the XZ plane of the cylinder, and find the + // radius of the cylinder by measuring in the X axis. The Y value will + // automatically be within the cylinder if X & Z are + //--------------------------------------------------------------------- + // + Scalar x = (minX + maxX) * 0.5f; + Scalar z = (minZ + maxZ) * 0.5f; + Scalar radius = maxX - x; + + // + //----------------------------------------------------------------------- + // Convert the point to the coordinates of the cylinder, putting the + // center point of the cylinder at the origin. Note that we are + // subtracting the point from the center point as opposed to the normal + // way. This will result in both X and Y being negated, but since we are + // squaring them, this will not matter + //----------------------------------------------------------------------- + // + x -= point.x; + z -= point.z; + if (x*x + z*z > radius*radius) + { + return -1.0f; + } + + Scalar height = point.y - maxY; + return Abs(height); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + BoxedYAxisCylinder::HitByBounded( + Line *line, + Scalar enters, + Scalar leaves + ) +{ + Check(this); + Check(line); + + Verify(enters <= leaves); + Verify(leaves >= 0.0f); + + Scalar x = (minX + maxX) * 0.5f; + Scalar z = (minZ + maxZ) * 0.5f; + Scalar radius = maxX - x; + + Scalar a = + line->direction.x*line->direction.x + + line->direction.z*line->direction.z; + + // + //-------------------------------------------------------------------------- + // If the line is parallel to the cylinder, see if it hits the bottom/top of + // the cylinder in the X-Z plane. If it does, it hits the cylinder when it + // hits the box, otherwise it misses altogether + //-------------------------------------------------------------------------- + // + if (Small_Enough(a)) + { + x -= line->origin.x; + z -= line->origin.z; + if (x*x + z*z > radius*radius) + { + return False; + } + line->length = Max(enters, 0.0f); + return True; + } + + // + //----------------------------------------------------------------------- + // The line is not parallel to the cylinder, so solve the equation giving + // the intersection of the line with the cylinder using the quadratic + // equation + //----------------------------------------------------------------------- + // + x = line->origin.x - x; + z = line->origin.z - z; + + Scalar b = 2.0f * (line->direction.x*x + line->direction.z*z); + Scalar c = x*x + z*z - radius*radius; + Scalar i = b*b - 4.0f*a*c; + + if (i < SMALL) + { + return False; + } + + // + //------------------------------------------------------------------------- + // If the line does hit the cylinder, update the enter/leaving distances to + // take the cylinder surface into account + //------------------------------------------------------------------------- + // + Verify(a > SMALL); + Scalar ratio = Sqrt(a)/(a*a); + i = Sqrt(i); + b *= -ratio; + i *= ratio; + Scalar enter = (b - i) * 0.5f; + if (enter > enters) + { + enters = enter; + } + + Scalar leave = enter + i; + if (leave < leaves) + { + leaves = leave; + } + + // + //------------------------------------------------------------------------ + // If we have pushed the entering distance after the leaving distance, the + // cylinder was missed, otherwise it is hit at the new entering distance + //------------------------------------------------------------------------ + // + if (enters > leaves || enters > line->length || leaves < 0.0f) + { + return False; + } + + line->length = Max(enters, 0.0f); + return True; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + BoxedYAxisCylinder::TestInstance() const +{ + return solidType == YAxisCylinderType; +} + +//############################################################################# +//########################## BoxedZAxisCylinder ######################### +//############################################################################# + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +BoxedZAxisCylinder::BoxedZAxisCylinder( + const ExtentBox &extents, + BoxedSolid::Material material, + Simulation *owner, + BoxedSolid *next_solid +): + BoxedSolid(extents, ZAxisCylinderType, material, owner, next_solid) +{ + Check_Pointer(this); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +BoxedZAxisCylinder::~BoxedZAxisCylinder() +{ + Check_Pointer(this); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + BoxedZAxisCylinder::IntersectsBounded(const ExtentBox &extents) +{ + Check(this); + Check(&extents); + + Verify(minX <= extents.minX); + Verify(maxX >= extents.maxX); + Verify(minY <= extents.minY); + Verify(maxY >= extents.maxY); + Verify(minZ <= extents.minZ); + Verify(maxZ >= extents.maxZ); + + // + //--------------------------------------------------------------------- + // Find the center point in the XZ plane of the cylinder, and find the + // radius of the cylinder by measuring in the X axis. The Y value will + // automatically be within the cylinder if X & Z are + //--------------------------------------------------------------------- + // + Scalar x = (minX + maxX) * 0.5f; + Scalar y = (minY + maxY) * 0.5f; + Scalar radius = maxX - x; + + // + //----------------------------------------------------------------------- + // Convert the point to the coordinates of the cylinder, putting the + // center point of the cylinder at the origin. Note that we are + // subtracting the point from the center point as opposed to the normal + // way. This will result in both X and Y being negated, but since we are + // squaring them, this will not matter + //----------------------------------------------------------------------- + // + Scalar x2 = x; + Scalar y2 = y; + Clamp(x2, extents.minX, extents.maxX); + Clamp(y2, extents.minY, extents.maxY); + x2 -= x; + y2 -= y; + return x2*x2 + y2*y2 <= radius*radius; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + BoxedZAxisCylinder::ContainsBounded(const Point3D &point) +{ + Check(this); + Check(&point); + + Verify(minX <= point.x); + Verify(maxX >= point.x); + Verify(minY <= point.y); + Verify(maxY >= point.y); + Verify(minZ <= point.z); + Verify(maxZ >= point.z); + + // + //--------------------------------------------------------------------- + // Find the center point in the XZ plane of the cylinder, and find the + // radius of the cylinder by measuring in the X axis. The Y value will + // automatically be within the cylinder if X & Z are + //--------------------------------------------------------------------- + // + Scalar x = (minX + maxX) * 0.5f; + Scalar y = (minY + maxY) * 0.5f; + Scalar radius = maxX - x; + + // + //----------------------------------------------------------------------- + // Convert the point to the coordinates of the cylinder, putting the + // center point of the cylinder at the origin. Note that we are + // subtracting the point from the center point as opposed to the normal + // way. This will result in both X and Y being negated, but since we are + // squaring them, this will not matter + //----------------------------------------------------------------------- + // + x -= point.x; + y -= point.y; + return x*x + y*y <= radius*radius; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Scalar + BoxedZAxisCylinder::FindDistanceBelowBounded(const Point3D &point) +{ + Check(this); + Check(&point); + + Verify(minX <= point.x);//z); //GY + Verify(maxX >= point.x);//z); //GY + Verify(minY <= point.y); + Verify(minZ <= point.z); + Verify(maxZ >= point.z); + + // + //--------------------------------------------------------------------- + // Find the center point in the XZ plane of the cylinder, and find the + // radius of the cylinder by measuring in the X axis. The Y value will + // automatically be within the cylinder if X & Z are + //--------------------------------------------------------------------- + // + Scalar x = (minX + maxX) * 0.5f; + Scalar radius = maxX - x; + + // + //-------------------------------------------------------------------------- + // figure out the thickness of cylinder slice where a plane perpendicular to + // X drops through the cylinder and the test point + //-------------------------------------------------------------------------- + // + x = point.x - x; + Scalar y = radius - Sqrt(radius*radius - x*x); + if (point.y > maxY - y) + { + return point.y - maxY + y; + } + else if (point.y < minY + y) + { + return -1.0f; + } + else + { + return 0.0f; + } +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + BoxedZAxisCylinder::HitByBounded( + Line *line, + Scalar enters, + Scalar leaves + ) +{ + Check(this); + Check(line); + + Verify(enters <= leaves); + Verify(leaves >= 0.0f); + + Scalar x = (minX + maxX) * 0.5f; + Scalar y = (minY + maxY) * 0.5f; + Scalar radius = maxX - x; + + Scalar a = + line->direction.y*line->direction.y + + line->direction.x*line->direction.x; + + // + //-------------------------------------------------------------------------- + // If the line is parallel to the cylinder, see if it hits the bottom/top of + // the cylinder in the X-Z plane. If it does, it hits the cylinder when it + // hits the box, otherwise it misses altogether + //-------------------------------------------------------------------------- + // + if (Small_Enough(a)) + { + y -= line->origin.y; + x -= line->origin.x; + if (y*y + x*x > radius*radius) + { + return False; + } + line->length = Max(enters, 0.0f); + return True; + } + + // + //----------------------------------------------------------------------- + // The line is not parallel to the cylinder, so solve the equation giving + // the intersection of the line with the cylinder using the quadratic + // equation + //----------------------------------------------------------------------- + // + y = line->origin.y - y; + x = line->origin.x - x; + + Scalar b = 2.0f * (line->direction.y*y + line->direction.x*x); + Scalar c = y*y + x*x - radius*radius; + Scalar i = b*b - 4.0f*a*c; + + if (i < SMALL) + { + return False; + } + + // + //------------------------------------------------------------------------- + // If the line does hit the cylinder, update the enter/leaving distances to + // take the cylinder surface into account + //------------------------------------------------------------------------- + // + Verify(a > SMALL); + Scalar ratio = Sqrt(a)/(a*a); + i = Sqrt(i); + b *= -ratio; + i *= ratio; + Scalar enter = (b - i) * 0.5f; + if (enter > enters) + { + enters = enter; + } + + Scalar leave = enter + i; + if (leave < leaves) + { + leaves = leave; + } + + // + //------------------------------------------------------------------------ + // If we have pushed the entering distance after the leaving distance, the + // cylinder was missed, otherwise it is hit at the new entering distance + //------------------------------------------------------------------------ + // + if (enters > leaves || enters > line->length || leaves < 0.0f) + { + return False; + } + + line->length = Max(enters, 0.0f); + return True; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + BoxedZAxisCylinder::TestInstance() const +{ + return solidType == ZAxisCylinderType; +} + diff --git a/CODE/RP/MUNGA/BOXIRAMP.CPP b/CODE/RP/MUNGA/BOXIRAMP.CPP new file mode 100644 index 0000000..f774edb --- /dev/null +++ b/CODE/RP/MUNGA/BOXIRAMP.CPP @@ -0,0 +1,930 @@ +//===========================================================================// +// File: boxsolid.cc // +// Project: MUNGA Brick: Spatializer Library // +// Contents: Implementation details of bounding-box collision subtypes // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 01/11/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 // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(BOXSOLID_HPP) +# include +#endif + +#if !defined(PLANE_HPP) +# include +#endif + +extern Logical + BoxedRampContainsLine( + Line *line, + const Plane& plane, + Scalar enters, + Scalar leaves + ); + +//############################################################################# +//##################### BoxedInvertedRampFacingNegativeZ ################ +//############################################################################# + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +BoxedInvertedRampFacingNegativeZ::BoxedInvertedRampFacingNegativeZ( + const ExtentBox &extents, + BoxedSolid::Material material, + Simulation *owner, + BoxedSolid *next_solid +): + BoxedSolid( + extents, + InvertedRampFacingNegativeZType, + material, + owner, + next_solid + ) +{ + Check_Pointer(this); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +BoxedInvertedRampFacingNegativeZ::~BoxedInvertedRampFacingNegativeZ() +{ + Check_Pointer(this); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + BoxedInvertedRampFacingNegativeZ::IntersectsBounded( + const ExtentBox &extents + ) +{ + Check(this); + Check(&extents); + + Verify(minX <= extents.minX); + Verify(maxX >= extents.maxX); + Verify(minY <= extents.minY); + Verify(maxY >= extents.maxY); + Verify(minZ <= extents.minZ); + Verify(maxZ >= extents.maxZ); + + // + //---------------------------------------------------------------------- + // Calculate the "slope" of the ramp when the base of the ramp is placed + // at the origin + //---------------------------------------------------------------------- + // + Scalar rise = maxY - minY; + Scalar run = maxZ - minZ; + Verify(!Small_Enough(run)); + + // + //------------------------------------------------------------------- + // Calculate the "slope" of the line from the base of the ramp to the + // lower-north edge of the block + //------------------------------------------------------------------- + // + Scalar y = extents.maxY - minY; + Scalar z = extents.minZ - minZ; + + // + //------------------------------------------------------------------------ + // If the slope rise/run is more negative than y/z slope, then the extent + // box of the disk has clipped the ramp. Note that rise/run <= y/z yields + // rise*z <= y*run, which avoids any divide-by-0 errors. + //------------------------------------------------------------------------ + // + return z*rise <= y*run; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + BoxedInvertedRampFacingNegativeZ::ContainsBounded(const Point3D &point) +{ + Check(this); + Check(&point); + + Verify(minX <= point.x); + Verify(maxX >= point.x); + Verify(minY <= point.y); + Verify(maxY >= point.y); + Verify(minZ <= point.z); + Verify(maxZ >= point.z); + + // + //---------------------------------------------------------------------- + // Calculate the "slope" of the ramp when the base of the ramp is placed + // at the origin + //---------------------------------------------------------------------- + // + Scalar rise = maxY - minY; + Scalar run = maxZ - minZ; + Verify(!Small_Enough(run)); + + // + //------------------------------------------------------------------- + // Calculate the "slope" of the line from the base of the ramp to the + // lower-north edge of the block + //------------------------------------------------------------------- + // + Scalar y = point.y - minY; + Scalar z = point.z - minZ; + + // + //------------------------------------------------------------------------ + // If the slope rise/run is more negative than y/z slope, then the extent + // box of the disk has clipped the ramp. Note that rise/run <= y/z yields + // rise*z <= y*run, which avoids any divide-by-0 errors + //------------------------------------------------------------------------ + // + return z*rise <= y*run; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Scalar + BoxedInvertedRampFacingNegativeZ::FindDistanceBelowBounded( + const Point3D &point + ) +{ + Check(this); + Check(&point); + + Verify(minX <= point.x); + Verify(maxX >= point.x); + Verify(minY <= point.y); + Verify(minZ <= point.z); + Verify(maxZ >= point.z); + + // + //---------------------------------------------------------------- + // If the point is above the ramp, it will hit the top of the ramp + //---------------------------------------------------------------- + // + if (point.y > maxY) + { + return point.y - maxY; + } + + // + //---------------------------------------------------------------------- + // Calculate the "slope" of the ramp when the base of the ramp is placed + // at the origin. If the run is zero, make sure no divide by zero + // happens + //---------------------------------------------------------------------- + // + Scalar rise = maxY - minY; + Scalar run = maxZ - minZ; + Verify(!Small_Enough(run)); + + // + //---------------------------------------------------------- + // Get the point coordinates local the the start of the ramp + //---------------------------------------------------------- + // + Scalar y = point.y - minY; + Scalar z = point.z - minZ; + + // + //------------------------------------------------------------------- + // Return the distance from the point to where it intersects the ramp + //------------------------------------------------------------------- + // + return (z*rise <= y*run) ? 0.0f : -1.0f; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + BoxedInvertedRampFacingNegativeZ::HitByBounded( + Line *line, + Scalar enters, + Scalar leaves + ) +{ + Plane + ramp; + Scalar + temp; + + // + //------------------------------------------------------------------- + // Make a vector pointing normal to the face of the north facing ramp + //------------------------------------------------------------------- + // + ramp.normal.x = 0.0f; + ramp.normal.y = minZ - maxZ; + ramp.normal.z = maxY - minY; + + // + //------------------------------------------------------------- + // Scale the vector to a normal and figure out the plane offset + //------------------------------------------------------------- + // + temp = ramp.normal.y*ramp.normal.y + ramp.normal.z*ramp.normal.z; + Verify(!Small_Enough(temp)) + temp = Sqrt(temp); + ramp.normal.y /= temp; + ramp.normal.z /= temp; + ramp.offset = maxY*ramp.normal.y + maxZ*ramp.normal.z; + + // + //--------------------------------------------------------------------- + // Now that we have added a new plane into the definition of the convex + // polyhedron, call a common ramp line collider + //--------------------------------------------------------------------- + // + return BoxedRampContainsLine(line, ramp, enters, leaves); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + BoxedInvertedRampFacingNegativeZ::TestInstance() const +{ + return solidType == InvertedRampFacingNegativeZType; +} + +//############################################################################# +//##################### BoxedInvertedRampFacingPositiveZ ################ +//############################################################################# + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +BoxedInvertedRampFacingPositiveZ::BoxedInvertedRampFacingPositiveZ( + const ExtentBox &extents, + BoxedSolid::Material material, + Simulation *owner, + BoxedSolid *next_solid +): + BoxedSolid( + extents, + InvertedRampFacingPositiveZType, + material, + owner, + next_solid + ) +{ + Check_Pointer(this); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +BoxedInvertedRampFacingPositiveZ::~BoxedInvertedRampFacingPositiveZ() +{ + Check_Pointer(this); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + BoxedInvertedRampFacingPositiveZ::IntersectsBounded( + const ExtentBox &extents + ) +{ + Check(this); + Check(&extents); + + Verify(minX <= extents.minX); + Verify(maxX >= extents.maxX); + Verify(minY <= extents.minY); + Verify(maxY >= extents.maxY); + Verify(minZ <= extents.minZ); + Verify(maxZ >= extents.maxZ); + + // + //---------------------------------------------------------------------- + // Calculate the "slope" of the ramp when the base of the ramp is placed + // at the origin + //---------------------------------------------------------------------- + // + Scalar rise = maxY - minY; + Scalar run = minZ - maxZ; + Verify(!Small_Enough(run)); + + // + //------------------------------------------------------------------- + // Calculate the "slope" of the line from the base of the ramp to the + // lower-north edge of the block + //------------------------------------------------------------------- + // + Scalar y = extents.maxY - minY; + Scalar z = extents.maxZ - maxZ; + + // + //------------------------------------------------------------------------ + // If the slope rise/run is more positive than y/z slope, then the extent + // box of the disk has clipped the ramp. Note that rise/run >= y/z yields + // rise*z >= y*run, which avoids any divide-by-0 errors + //------------------------------------------------------------------------ + // + return z*rise >= y*run; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + BoxedInvertedRampFacingPositiveZ::ContainsBounded(const Point3D &point) +{ + Check(this); + Check(&point); + + Verify(minX <= point.x); + Verify(maxX >= point.x); + Verify(minY <= point.y); + Verify(maxY >= point.y); + Verify(minZ <= point.z); + Verify(maxZ >= point.z); + + // + //---------------------------------------------------------------------- + // Calculate the "slope" of the ramp when the base of the ramp is placed + // at the origin + //---------------------------------------------------------------------- + // + Scalar rise = maxY - minY; + Scalar run = minZ - maxZ; + Verify(!Small_Enough(run)); + + // + //------------------------------------------------------------------- + // Calculate the "slope" of the line from the base of the ramp to the + // lower-north edge of the block + //------------------------------------------------------------------- + // + Scalar y = point.y - minY; + Scalar z = point.z - maxZ; + + // + //------------------------------------------------------------------------ + // If the slope rise/run is more negative than y/z slope, then the extent + // box of the disk has clipped the ramp. Note that rise/run >= y/z yields + // rise*z >= y*run, which avoids any divide-by-0 errors + //------------------------------------------------------------------------ + // + return z*rise >= y*run; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Scalar + BoxedInvertedRampFacingPositiveZ::FindDistanceBelowBounded( + const Point3D &point + ) +{ + Check(this); + Check(&point); + + Verify(minX <= point.x); + Verify(maxX >= point.x); + Verify(minY <= point.y); + Verify(minZ <= point.z); + Verify(maxZ >= point.z); + + // + //---------------------------------------------------------------- + // If the point is above the ramp, it will hit the top of the ramp + //---------------------------------------------------------------- + // + if (point.y > maxY) + { + return point.y - maxY; + } + + // + //---------------------------------------------------------------------- + // Calculate the "slope" of the ramp when the base of the ramp is placed + // at the origin. If the run is zero, make sure no divide by zero + // happens + //---------------------------------------------------------------------- + // + Scalar rise = maxY - minY; + Scalar run = minZ - maxZ; + Verify(!Small_Enough(run)); + + // + //---------------------------------------------------------- + // Get the point coordinates local the the start of the ramp + //---------------------------------------------------------- + // + Scalar y = point.y - minY; + Scalar z = point.z - maxZ; + + // + //------------------------------------------------------------------- + // Return the distance from the point to where it intersects the ramp + //------------------------------------------------------------------- + // + return (z*rise >= y*run) ? 0.0f : -1.0f; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + BoxedInvertedRampFacingPositiveZ::HitByBounded( + Line *line, + Scalar enters, + Scalar leaves + ) +{ + Plane + ramp; + Scalar + temp; + + // + //------------------------------------------------------------------- + // Make a vector pointing normal to the face of the north facing ramp + //------------------------------------------------------------------- + // + ramp.normal.x = 0.0f; + ramp.normal.y = minZ - maxZ; + ramp.normal.z = minY - maxY; + + // + //------------------------------------------------------------- + // Scale the vector to a normal and figure out the plane offset + //------------------------------------------------------------- + // + temp = ramp.normal.y*ramp.normal.y + ramp.normal.z*ramp.normal.z; + Verify(!Small_Enough(temp)) + temp = Sqrt(temp); + ramp.normal.y /= temp; + ramp.normal.z /= temp; + ramp.offset = minY*ramp.normal.y + maxZ*ramp.normal.z; + + // + //--------------------------------------------------------------------- + // Now that we have added a new plane into the definition of the convex + // polyhedron, call a common ramp line collider + //--------------------------------------------------------------------- + // + return BoxedRampContainsLine(line, ramp, enters, leaves); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + BoxedInvertedRampFacingPositiveZ::TestInstance() const +{ + return solidType == InvertedRampFacingPositiveZType; +} + +//############################################################################# +//##################### BoxedInvertedRampFacingNegativeX ################ +//############################################################################# + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +BoxedInvertedRampFacingNegativeX::BoxedInvertedRampFacingNegativeX( + const ExtentBox &extents, + BoxedSolid::Material material, + Simulation *owner, + BoxedSolid *next_solid +): + BoxedSolid( + extents, + InvertedRampFacingNegativeXType, + material, + owner, + next_solid + ) +{ + Check_Pointer(this); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +BoxedInvertedRampFacingNegativeX::~BoxedInvertedRampFacingNegativeX() +{ + Check_Pointer(this); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + BoxedInvertedRampFacingNegativeX::IntersectsBounded( + const ExtentBox &extents + ) +{ + Check(this); + Check(&extents); + + Verify(minX <= extents.minX); + Verify(maxX >= extents.maxX); + Verify(minY <= extents.minY); + Verify(maxY >= extents.maxY); + Verify(minZ <= extents.minZ); + Verify(maxZ >= extents.maxZ); + + // + //---------------------------------------------------------------------- + // Calculate the "slope" of the ramp when the base of the ramp is placed + // at the origin + //---------------------------------------------------------------------- + // + Scalar run = maxX - minX; + Scalar rise = maxY - minY; + Verify(!Small_Enough(run)); + + // + //------------------------------------------------------------------- + // Calculate the "slope" of the line from the base of the ramp to the + // lower-north edge of the block + //------------------------------------------------------------------- + // + Scalar x = extents.minX - minX; + Scalar y = extents.maxY - minY; + + // + //------------------------------------------------------------------------ + // If the slope rise/run is more negative than y/x slope, then the extent + // box of the disk has clipped the ramp. Note that rise/run <= y/x yields + // rise*x <= y*run, which avoids any divide-by-0 errors + //------------------------------------------------------------------------ + // + return x*rise <= y*run; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + BoxedInvertedRampFacingNegativeX::ContainsBounded(const Point3D &point) +{ + Check(this); + Check(&point); + + Verify(minX <= point.x); + Verify(maxX >= point.x); + Verify(minY <= point.y); + Verify(maxY >= point.y); + Verify(minZ <= point.z); + Verify(maxZ >= point.z); + + // + //---------------------------------------------------------------------- + // Calculate the "slope" of the ramp when the base of the ramp is placed + // at the origin + //---------------------------------------------------------------------- + // + Scalar run = maxX - minX; + Scalar rise = maxY - minY; + Verify(!Small_Enough(run)); + + // + //------------------------------------------------------------------- + // Calculate the "slope" of the line from the base of the ramp to the + // lower-north edge of the block + //------------------------------------------------------------------- + // + Scalar x = point.x - minX; + Scalar y = point.y - minY; + + // + //------------------------------------------------------------------------ + // If the slope rise/run is more negative than y/x slope, then the extent + // box of the disk has clipped the ramp. Note that rise/run <= y/x yields + // rise*x <= y*run, which avoids any divide-by-0 errors + //------------------------------------------------------------------------ + // + return x*rise <= y*run; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Scalar + BoxedInvertedRampFacingNegativeX::FindDistanceBelowBounded(const Point3D &point) +{ + Check(this); + Check(&point); + + Verify(minX <= point.x); + Verify(maxX >= point.x); + Verify(minY <= point.y); + Verify(minZ <= point.z); + Verify(maxZ >= point.z); + + // + //---------------------------------------------------------------- + // If the point is above the ramp, it will hit the top of the ramp + //---------------------------------------------------------------- + // + if (point.y > maxY) + { + return point.y - maxY; + } + + // + //---------------------------------------------------------------------- + // Calculate the "slope" of the ramp when the base of the ramp is placed + // at the origin. If the run is zero, make sure no divide by zero + // happens + //---------------------------------------------------------------------- + // + Scalar run = maxX - minX; + Scalar rise = maxY - minY; + Verify(!Small_Enough(run)); + + // + //---------------------------------------------------------- + // Get the point coordinates local the the start of the ramp + //---------------------------------------------------------- + // + Scalar x = point.x - minX; + Scalar y = point.y - minY; + + // + //------------------------------------------------------------------- + // Return the distance from the point to where it intersects the ramp + //------------------------------------------------------------------- + // + return (x*rise <= y*run) ? 0.0f : -1.0f; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + BoxedInvertedRampFacingNegativeX::HitByBounded( + Line *line, + Scalar enters, + Scalar leaves + ) +{ + Plane + ramp; + Scalar + temp; + + // + //------------------------------------------------------------------- + // Make a vector pointing normal to the face of the north facing ramp + //------------------------------------------------------------------- + // + ramp.normal.y = minX - maxX; + ramp.normal.x = maxY - minY; + ramp.normal.z = 0.0f; + + // + //------------------------------------------------------------- + // Scale the vector to a normal and figure out the plane offset + //------------------------------------------------------------- + // + temp = ramp.normal.y*ramp.normal.y + ramp.normal.x*ramp.normal.x; + Verify(!Small_Enough(temp)) + temp = Sqrt(temp); + ramp.normal.y /= temp; + ramp.normal.x /= temp; + ramp.offset = minY*ramp.normal.y + minX*ramp.normal.x; + + // + //--------------------------------------------------------------------- + // Now that we have added a new plane into the definition of the convex + // polyhedron, call a common ramp line collider + //--------------------------------------------------------------------- + // + return BoxedRampContainsLine(line, ramp, enters, leaves); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + BoxedInvertedRampFacingNegativeX::TestInstance() const +{ + return solidType == InvertedRampFacingNegativeXType; +} + +//############################################################################# +//##################### BoxedInvertedRampFacingPositiveX ################ +//############################################################################# + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +BoxedInvertedRampFacingPositiveX::BoxedInvertedRampFacingPositiveX( + const ExtentBox &extents, + BoxedSolid::Material material, + Simulation *owner, + BoxedSolid *next_solid +): + BoxedSolid( + extents, + InvertedRampFacingPositiveXType, + material, + owner, + next_solid + ) +{ + Check_Pointer(this); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +BoxedInvertedRampFacingPositiveX::~BoxedInvertedRampFacingPositiveX() +{ + Check_Pointer(this); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + BoxedInvertedRampFacingPositiveX::IntersectsBounded( + const ExtentBox &extents + ) +{ + Check(this); + Check(&extents); + + Verify(minX <= extents.minX); + Verify(maxX >= extents.maxX); + Verify(minY <= extents.minY); + Verify(maxY >= extents.maxY); + Verify(minZ <= extents.minZ); + Verify(maxZ >= extents.maxZ); + + // + //---------------------------------------------------------------------- + // Calculate the "slope" of the ramp when the base of the ramp is placed + // at the origin + //---------------------------------------------------------------------- + // + Scalar run = minX - maxX; + Scalar rise = maxY - minY; + Verify(!Small_Enough(run)); + + // + //------------------------------------------------------------------- + // Calculate the "slope" of the line from the base of the ramp to the + // lower-north edge of the block + //------------------------------------------------------------------- + // + Scalar x = extents.maxX - maxX; + Scalar y = extents.maxY - minY; + + // + //------------------------------------------------------------------------ + // If the slope rise/run is more positive than y/x slope, then the extent + // box of the disk has clipped the ramp. Note that rise/run >= y/x yields + // rise*x >= x*run, which avoids any divide-by-0 errors + //------------------------------------------------------------------------ + // + return x*rise >= y*run; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + BoxedInvertedRampFacingPositiveX::ContainsBounded(const Point3D &point) +{ + Check(this); + Check(&point); + + Verify(minX <= point.x); + Verify(maxX >= point.x); + Verify(minY <= point.y); + Verify(maxY >= point.y); + Verify(minZ <= point.z); + Verify(maxZ >= point.z); + + // + //---------------------------------------------------------------------- + // Calculate the "slope" of the ramp when the base of the ramp is placed + // at the origin + //---------------------------------------------------------------------- + // + Scalar run = minX - maxX; + Scalar rise = maxY - minY; + Verify(!Small_Enough(run)); + + // + //------------------------------------------------------------------- + // Calculate the "slope" of the line from the base of the ramp to the + // lower-north edge of the block + //------------------------------------------------------------------- + // + Scalar x = point.x - maxX; + Scalar y = point.y - minY; + + // + //------------------------------------------------------------------------ + // If the slope rise/run is more negative than y/x slope, then the extent + // box of the disk has clipped the ramp. Note that rise/run >= y/x yields + // rise*x >= y*run, which avoids any divide-by-0 errors + //------------------------------------------------------------------------ + // + return x*rise >= y*run; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Scalar + BoxedInvertedRampFacingPositiveX::FindDistanceBelowBounded( + const Point3D &point + ) +{ + Check(this); + Check(&point); + + Verify(minX <= point.x); + Verify(maxX >= point.x); + Verify(minY <= point.y); + Verify(minZ <= point.z); + Verify(maxZ >= point.z); + + // + //---------------------------------------------------------------- + // If the point is above the ramp, it will hit the top of the ramp + //---------------------------------------------------------------- + // + if (point.y > maxY) + { + return point.y - maxY; + } + + // + //---------------------------------------------------------------------- + // Calculate the "slope" of the ramp when the base of the ramp is placed + // at the origin. If the run is zero, make sure no divide by zero + // happens + //---------------------------------------------------------------------- + // + Scalar run = minX - maxX; + Scalar rise = maxY - minY; + Verify(!Small_Enough(run)); + + // + //---------------------------------------------------------- + // Get the point coordinates local the the start of the ramp + //---------------------------------------------------------- + // + Scalar x = point.x - maxX; + Scalar y = point.y - minY; + + // + //------------------------------------------------------------------- + // Return the distance from the point to where it intersects the ramp + //------------------------------------------------------------------- + // + return (x*rise >= y*run) ? 0.0f : -1.0f; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + BoxedInvertedRampFacingPositiveX::HitByBounded( + Line *line, + Scalar enters, + Scalar leaves + ) +{ + Plane + ramp; + Scalar + temp; + + // + //------------------------------------------------------------------- + // Make a vector pointing normal to the face of the north facing ramp + //------------------------------------------------------------------- + // + ramp.normal.y = minX - maxX; + ramp.normal.x = minY - maxY; + ramp.normal.z = 0.0f; + + // + //------------------------------------------------------------- + // Scale the vector to a normal and figure out the plane offset + //------------------------------------------------------------- + // + temp = ramp.normal.y*ramp.normal.y + ramp.normal.x*ramp.normal.x; + Verify(!Small_Enough(temp)) + temp = Sqrt(temp); + ramp.normal.y /= temp; + ramp.normal.x /= temp; + ramp.offset = maxY*ramp.normal.y + minX*ramp.normal.x; + + // + //--------------------------------------------------------------------- + // Now that we have added a new plane into the definition of the convex + // polyhedron, call a common ramp line collider + //--------------------------------------------------------------------- + // + return BoxedRampContainsLine(line, ramp, enters, leaves); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + BoxedInvertedRampFacingPositiveX::TestInstance() const +{ + return solidType == InvertedRampFacingPositiveXType; +} diff --git a/CODE/RP/MUNGA/BOXLIST.CPP b/CODE/RP/MUNGA/BOXLIST.CPP new file mode 100644 index 0000000..86744ea --- /dev/null +++ b/CODE/RP/MUNGA/BOXLIST.CPP @@ -0,0 +1,329 @@ +//===========================================================================// +// File: boxlist.cc // +// Project: MUNGA Brick: Spatializer Library // +// Contents: Implementation details 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 // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(BOXLIST_HPP) +# include +#endif + +//############################################################################# +//######################### BoundingBoxListNode ######################### +//############################################################################# + +MemoryBlock + BoundingBoxListNode::AllocatedMemory( + sizeof(BoundingBoxListNode), + 500, + 50, + "BoundingBoxList Nodes" + ); + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + BoundingBoxListNode::TestInstance() const +{ + return True; +} + +//############################################################################# +//########################### BoundingBoxList ########################### +//############################################################################# + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +BoundingBoxList::BoundingBoxList() +{ + root = NULL; + nodeCount = 0; + scoreBoard = NULL; + boundingBoxIndex = NULL; + isXMajorAxis = True; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +BoundingBoxList::~BoundingBoxList() +{ + if (scoreBoard) + { + Unregister_Pointer(scoreBoard); + delete scoreBoard; + } + if (boundingBoxIndex) + { + Unregister_Pointer(boundingBoxIndex); + delete boundingBoxIndex; + } + EraseList(); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + BoundingBoxList::Add( + BoundingBox* volume, + const ExtentBox &slice + ) +{ + Check(this); + Check(volume); + + ++nodeCount; + BoundingBoxListNode *node = new BoundingBoxListNode(volume, slice); + Register_Object(node); + node->previousNode = root; + root = node; +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + BoundingBoxList::Remove(BoundingBox* volume) +{ + Check(this); + Check(volume); + + // + //-------------------------------------------------------------------------- + // Spin through all the boxes until we find the one we are after or until we + // run off the list + //-------------------------------------------------------------------------- + // + BoundingBoxListNode + *p = NULL, + *c = root; + while (c) + { + Check(c); + if (c->boundingBox == volume) + { + break; + } + p = c; + c = c->previousNode; + } + + // + //---------------------------------------------- + // Unlink the node from the list if it was found + //---------------------------------------------- + // + if (!c) + { + return; + } + + Check(c); + if (p) + { + Check(p); + p->previousNode = c->previousNode; + } + else + { + root = c->previousNode; + } + + // + //----------------- + // Delete this node + //----------------- + // + --nodeCount; + Unregister_Object(c); + delete c; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + BoundingBoxList::EraseList() +{ + Check(this); + + // + //----------------------------- + // Delete each node in the list + //----------------------------- + // + BoundingBoxListNode *p = root; + while (p) + { + Check(p); + BoundingBoxListNode *q = p; + p = p->previousNode; + Unregister_Object(q); + delete q; + } + root = NULL; + nodeCount = 0; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +BoundingBox* + BoundingBoxList::FindBoundingBoxContaining(const Point3D &point) +{ + Check(this); + Check(&point); + + // + //-------------------------------------------------------------------------- + // Spin through each of the boxes in reverse order until we find a box which + // contains the specified point. It will be default have priority over any + // boxes put in before it + //-------------------------------------------------------------------------- + // + for (BoundingBoxListNode *p=root; p; p = p->previousNode) + { + Check(p); + BoundingBox *box = p->boundingBox; + Check(box); + if (box->Contains(point)) + { + return box; + } + } + return NULL; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + BoundingBoxList::FindBoundingBoxesContaining( + BoundingBox *volume, + BoundingBoxCollisionList &list + ) +{ + Check(this); + Check(volume); + Check(&list); + + // + //------------------------------------------------------------- + // Spin through each of the boxes in reverse order, looking for + // intesections between the test volume and the box list + //------------------------------------------------------------- + // + for (BoundingBoxListNode *p=root; p; p = p->previousNode) + { + Check(p); + BoundingBox *box = p->boundingBox; + Check(box); + if (box->ExtentBox::Intersects(*volume)) + { + // + //---------------------------------------------------------------- + // Build the intersection slice, and make sure that it really does + // intersect the list box + //---------------------------------------------------------------- + // + ExtentBox slice; + slice.Intersect(*volume, *box); + if (box->IntersectsBounded(slice)) + { + + // + //------------------------------------------------------------ + // It intersects, so add this to the list. If we are out of + // collisions in the list, we are finished detecting, and just + // return + //------------------------------------------------------------ + // + Verify(list.collisionsLeft); + list.AddCollisionToList(box, slice); + if (!list.collisionsLeft) + { + return; + } + } + } + } +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +BoundingBox* + BoundingBoxList::FindBoundingBoxUnder( + const Point3D &point, + Scalar *height + ) +{ + Check(this); + Check(&point); + Check_Pointer(height); + + // + //----------------------------------------------------------------------- + // Spin through each of the bounding boxes, keeping track of which box is + // hit after the shortest distance + //----------------------------------------------------------------------- + // + BoundingBox *best_box = NULL; + *height = -1.0f; + for (BoundingBoxListNode *p=root; p; p = p->previousNode) + { + Check(p); + BoundingBox *box = p->boundingBox; + Check(box); + + Scalar h = box->FindDistanceBelow(point); + if (h != -1.0f) + { + if (!best_box || *height > h) + { + best_box = box; + *height = h; + } + } + } + return best_box; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +BoundingBox* + BoundingBoxList::FindBoundingBoxHitBy(Line *line) +{ + // + //----------------------------------------------------------------------- + // Spin through each of the boxes, letting each box in turn clip the line + // lengths + //----------------------------------------------------------------------- + // + BoundingBox *best_box = NULL; + for (BoundingBoxListNode *p=root; p; p = p->previousNode) + { + Check(p); + BoundingBox *box = p->boundingBox; + Check(box); + + Logical h = box->HitBy(line); + if (h) + { + best_box = box; + } + } + return best_box; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + BoundingBoxList::TestInstance() const +{ + return True; +} diff --git a/CODE/RP/MUNGA/BOXLIST.HPP b/CODE/RP/MUNGA/BOXLIST.HPP new file mode 100644 index 0000000..807b956 --- /dev/null +++ b/CODE/RP/MUNGA/BOXLIST.HPP @@ -0,0 +1,173 @@ +//===========================================================================// +// 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 +# endif + +# if !defined(MEMBLOCK_HPP) +# include +# 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 diff --git a/CODE/RP/MUNGA/BOXRAMP.CPP b/CODE/RP/MUNGA/BOXRAMP.CPP new file mode 100644 index 0000000..ecdbb98 --- /dev/null +++ b/CODE/RP/MUNGA/BOXRAMP.CPP @@ -0,0 +1,947 @@ +//===========================================================================// +// File: boxsolid.cc // +// Project: MUNGA Brick: Spatializer Library // +// Contents: Implementation details of bounding-box collision subtypes // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 01/11/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 // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(BOXSOLID_HPP) +# include +#endif + +#if !defined(PLANE_HPP) +# include +#endif + +#if !defined(LINE_HPP) +# include +#endif + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + BoxedRampContainsLine( + Line *line, + const Plane& plane, + Scalar enters, + Scalar leaves + ) +{ + // + //------------------------------------------------------------------------ + // Find the perpendicular distance from the origin of the ray to the ramp, + // and find the direction of the ray relative to the ramp + //------------------------------------------------------------------------ + // + Scalar distance = plane.DistanceTo(line->origin); + Scalar drift = line->direction*plane.normal; + + // + //-------------------------------------------------------------------------- + // If the ray is going out of the ramp and the origin of the + // ray is in the half-space that the plane's normal points to + //-------------------------------------------------------------------------- + // + if (drift > 0 && distance > 0) + { + return False; + } + + // + //-------------------------------------------------------------------------- + // If the ray is parallel to the ramp, the ray will hit if the origin of the + // ray is not in the half-space that the plane's normal points to + //-------------------------------------------------------------------------- + // + if (!drift) + { + if (distance <= 0.0f) + { + line->length = Max(enters, 0.0f); + return True; + } + return False; + } + + // + //-------------------------------------------------------------------- + // Otherwise, if the plane faces the ray, check to see how far the ray + // travels before hitting it + //-------------------------------------------------------------------- + // + if (drift < 0.0f) + { + distance /= -drift; + + // + //----------------------------------------------------------------------- + // If the ray strikes the plane after all other facing surfaces, then the + // ray enters the solid through this plane. So check to make sure that + // the ray does not miss the plane as clipped by the other surfaces, and + // if it hits, return this distance as the projection length. If the ray + // enters the ramp through an edge face of the bounding box, set the line + // length to the entering value calculated for the box + //----------------------------------------------------------------------- + // + if (distance > enters) + { + if (distance > leaves || distance > line->length) + { + return False; + } + enters = distance; + } + line->length = Max(enters, 0.0f); + return True; + } + + // + //------------------------------------------------------------------------ + // If the plane faces away from the ray, check to see how far the ray + // travels before exiting it, and ensure this is not before the ray enters + // the object + //------------------------------------------------------------------------ + // + distance /= -drift; + if (distance >= enters) + { + line->length = Max(enters, 0.0f); + return True; + } + return False; +} + +//############################################################################# +//######################### BoxedRampFacingNegativeZ #################### +//############################################################################# + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +BoxedRampFacingNegativeZ::BoxedRampFacingNegativeZ( + const ExtentBox &extents, + BoxedSolid::Material material, + Simulation *owner, + BoxedSolid *next_solid +): + BoxedSolid(extents, RampFacingNegativeZType, material, owner, next_solid) +{ + Check_Pointer(this); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +BoxedRampFacingNegativeZ::~BoxedRampFacingNegativeZ() +{ + Check_Pointer(this); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + BoxedRampFacingNegativeZ::IntersectsBounded(const ExtentBox &extents) +{ + Check(this); + Check(&extents); + + Verify(minX <= extents.minX); + Verify(maxX >= extents.maxX); + Verify(minY <= extents.minY); + Verify(maxY >= extents.maxY); + Verify(minZ <= extents.minZ); + Verify(maxZ >= extents.maxZ); + + // + //---------------------------------------------------------------------- + // Calculate the "slope" of the ramp when the base of the ramp is placed + // at the origin + //---------------------------------------------------------------------- + // + Scalar rise = maxY - minY; + Scalar run = minZ - maxZ; + Verify(!Small_Enough(run)); + + // + //------------------------------------------------------------------- + // Calculate the "slope" of the line from the base of the ramp to the + // lower-north edge of the block + //------------------------------------------------------------------- + // + Scalar y = extents.minY - minY; + Scalar z = extents.minZ - maxZ; + + // + //------------------------------------------------------------------------ + // If the slope rise/run is more negative than y/z slope, then the extent + // box of the disk has clipped the ramp. Note that rise/run <= y/z yields + // rise*z <= y*run, which avoids any divide-by-0 errors. + //------------------------------------------------------------------------ + // + return z*rise <= y*run; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + BoxedRampFacingNegativeZ::ContainsBounded(const Point3D &point) +{ + Check(this); + Check(&point); + + Verify(minX <= point.x); + Verify(maxX >= point.x); + Verify(minY <= point.y); + Verify(maxY >= point.y); + Verify(minZ <= point.z); + Verify(maxZ >= point.z); + + // + //---------------------------------------------------------------------- + // Calculate the "slope" of the ramp when the base of the ramp is placed + // at the origin + //---------------------------------------------------------------------- + // + Scalar rise = maxY - minY; + Scalar run = minZ - maxZ; + Verify(!Small_Enough(run)); + + // + //------------------------------------------------------------------- + // Calculate the "slope" of the line from the base of the ramp to the + // lower-north edge of the block + //------------------------------------------------------------------- + // + Scalar y = point.y - minY; + Scalar z = point.z - maxZ; + + // + //------------------------------------------------------------------------ + // If the slope rise/run is more negative than y/z slope, then the extent + // box of the disk has clipped the ramp. Note that rise/run <= y/z yields + // rise*z <= y*run, which avoids any divide-by-0 errors + //------------------------------------------------------------------------ + // + return z*rise <= y*run; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Scalar + BoxedRampFacingNegativeZ::FindDistanceBelowBounded(const Point3D &point) +{ + Check(this); + Check(&point); + + Verify(minX <= point.x); + Verify(maxX >= point.x); + Verify(minY <= point.y); + Verify(minZ <= point.z); + Verify(maxZ >= point.z); + + // + //---------------------------------------------------------------------- + // Calculate the "slope" of the ramp when the base of the ramp is placed + // at the origin. If the run is zero, make sure no divide by zero + // happens + //---------------------------------------------------------------------- + // + Scalar rise = maxY - minY; + Scalar run = minZ - maxZ; + Verify(!Small_Enough(run)); + + // + //---------------------------------------------------------- + // Get the point coordinates local the the start of the ramp + //---------------------------------------------------------- + // + Scalar y = point.y - minY; + Scalar z = point.z - maxZ; + + // + //------------------------------------------------------------------- + // Return the distance from the point to where it intersects the ramp + //------------------------------------------------------------------- + // + y -= (rise/run)*z; + return Max(y,0.0f); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + BoxedRampFacingNegativeZ::HitByBounded( + Line *line, + Scalar enters, + Scalar leaves + ) +{ + Plane + ramp; + Scalar + temp; + + // + //------------------------------------------------------------------- + // Make a vector pointing normal to the face of the north facing ramp + //------------------------------------------------------------------- + // + ramp.normal.x = 0.0f; + ramp.normal.y = maxZ - minZ; + ramp.normal.z = maxY - minY; + + // + //------------------------------------------------------------- + // Scale the vector to a normal and figure out the plane offset + //------------------------------------------------------------- + // + temp = ramp.normal.y*ramp.normal.y + ramp.normal.z*ramp.normal.z; + Verify(!Small_Enough(temp)) + temp = Sqrt(temp); + ramp.normal.y /= temp; + ramp.normal.z /= temp; + ramp.offset = maxY*ramp.normal.y + minZ*ramp.normal.z; + + // + //--------------------------------------------------------------------- + // Now that we have added a new plane into the definition of the convex + // polyhedron, call a common ramp line collider + //--------------------------------------------------------------------- + // + return BoxedRampContainsLine(line, ramp, enters, leaves); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + BoxedRampFacingNegativeZ::TestInstance() const +{ + return solidType == RampFacingNegativeZType; +} + +//############################################################################# +//######################### BoxedRampFacingPositiveZ #################### +//############################################################################# + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +BoxedRampFacingPositiveZ::BoxedRampFacingPositiveZ( + const ExtentBox &extents, + BoxedSolid::Material material, + Simulation *owner, + BoxedSolid *next_solid +): + BoxedSolid(extents, RampFacingPositiveZType, material, owner, next_solid) +{ + Check_Pointer(this); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +BoxedRampFacingPositiveZ::~BoxedRampFacingPositiveZ() +{ + Check_Pointer(this); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + BoxedRampFacingPositiveZ::IntersectsBounded(const ExtentBox &extents) +{ + Check(this); + Check(&extents); + + Verify(minX <= extents.minX); + Verify(maxX >= extents.maxX); + Verify(minY <= extents.minY); + Verify(maxY >= extents.maxY); + Verify(minZ <= extents.minZ); + Verify(maxZ >= extents.maxZ); + + // + //---------------------------------------------------------------------- + // Calculate the "slope" of the ramp when the base of the ramp is placed + // at the origin + //---------------------------------------------------------------------- + // + Scalar rise = maxY - minY; + Scalar run = maxZ - minZ; + Verify(!Small_Enough(run)); + + // + //------------------------------------------------------------------- + // Calculate the "slope" of the line from the base of the ramp to the + // lower-north edge of the block + //------------------------------------------------------------------- + // + Scalar y = extents.minY - minY; + Scalar z = extents.maxZ - minZ; + + // + //------------------------------------------------------------------------ + // If the slope rise/run is more positive than y/z slope, then the extent + // box of the disk has clipped the ramp. Note that rise/run >= y/z yields + // rise*z >= y*run, which avoids any divide-by-0 errors + //------------------------------------------------------------------------ + // + return z*rise >= y*run; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + BoxedRampFacingPositiveZ::ContainsBounded(const Point3D &point) +{ + Check(this); + Check(&point); + + Verify(minX <= point.x); + Verify(maxX >= point.x); + Verify(minY <= point.y); + Verify(maxY >= point.y); + Verify(minZ <= point.z); + Verify(maxZ >= point.z); + + // + //---------------------------------------------------------------------- + // Calculate the "slope" of the ramp when the base of the ramp is placed + // at the origin + //---------------------------------------------------------------------- + // + Scalar rise = maxY - minY; + Scalar run = maxZ - minZ; + Verify(!Small_Enough(run)); + + // + //------------------------------------------------------------------- + // Calculate the "slope" of the line from the base of the ramp to the + // lower-north edge of the block + //------------------------------------------------------------------- + // + Scalar y = point.y - minY; + Scalar z = point.z - minZ; + + // + //------------------------------------------------------------------------ + // If the slope rise/run is more negative than y/z slope, then the extent + // box of the disk has clipped the ramp. Note that rise/run >= y/z yields + // rise*z >= y*run, which avoids any divide-by-0 errors + //------------------------------------------------------------------------ + // + return z*rise >= y*run; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Scalar + BoxedRampFacingPositiveZ::FindDistanceBelowBounded(const Point3D &point) +{ + Check(this); + Check(&point); + + Verify(minX <= point.x); + Verify(maxX >= point.x); + Verify(minY <= point.y); + Verify(minZ <= point.z); + Verify(maxZ >= point.z); + + // + //---------------------------------------------------------------------- + // Calculate the "slope" of the ramp when the base of the ramp is placed + // at the origin. If the run is zero, make sure no divide by zero + // happens + //---------------------------------------------------------------------- + // + Scalar rise = maxY - minY; + Scalar run = maxZ - minZ; + Verify(!Small_Enough(run)); + + // + //---------------------------------------------------------- + // Get the point coordinates local the the start of the ramp + //---------------------------------------------------------- + // + Scalar y = point.y - minY; + Scalar z = point.z - minZ; + + // + //------------------------------------------------------------------- + // Return the distance from the point to where it intersects the ramp + //------------------------------------------------------------------- + // + y -= (rise/run)*z; + return Max(y,0.0f); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + BoxedRampFacingPositiveZ::HitByBounded( + Line *line, + Scalar enters, + Scalar leaves + ) +{ + Plane + ramp; + Scalar + temp; + + // + //------------------------------------------------------------------- + // Make a vector pointing normal to the face of the north facing ramp + //------------------------------------------------------------------- + // + ramp.normal.x = 0.0f; + ramp.normal.y = maxZ - minZ; + ramp.normal.z = minY - maxY; + + // + //------------------------------------------------------------- + // Scale the vector to a normal and figure out the plane offset + //------------------------------------------------------------- + // + temp = ramp.normal.y*ramp.normal.y + ramp.normal.z*ramp.normal.z; + Verify(!Small_Enough(temp)) + temp = Sqrt(temp); + ramp.normal.y /= temp; + ramp.normal.z /= temp; + ramp.offset = minY*ramp.normal.y + minZ*ramp.normal.z; + + // + //--------------------------------------------------------------------- + // Now that we have added a new plane into the definition of the convex + // polyhedron, call a common ramp line collider + //--------------------------------------------------------------------- + // + return BoxedRampContainsLine(line, ramp, enters, leaves); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + BoxedRampFacingPositiveZ::TestInstance() const +{ + return solidType == RampFacingPositiveZType; +} + +//############################################################################# +//######################### BoxedRampFacingNegativeX #################### +//############################################################################# + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +BoxedRampFacingNegativeX::BoxedRampFacingNegativeX( + const ExtentBox &extents, + BoxedSolid::Material material, + Simulation *owner, + BoxedSolid *next_solid +): + BoxedSolid(extents, RampFacingNegativeXType, material, owner, next_solid) +{ + Check_Pointer(this); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +BoxedRampFacingNegativeX::~BoxedRampFacingNegativeX() +{ + Check_Pointer(this); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + BoxedRampFacingNegativeX::IntersectsBounded(const ExtentBox &extents) +{ + Check(this); + Check(&extents); + + Verify(minX <= extents.minX); + Verify(maxX >= extents.maxX); + Verify(minY <= extents.minY); + Verify(maxY >= extents.maxY); + Verify(minZ <= extents.minZ); + Verify(maxZ >= extents.maxZ); + + // + //---------------------------------------------------------------------- + // Calculate the "slope" of the ramp when the base of the ramp is placed + // at the origin + //---------------------------------------------------------------------- + // + Scalar run = minX - maxX; + Scalar rise = maxY - minY; + Verify(!Small_Enough(run)); + + // + //------------------------------------------------------------------- + // Calculate the "slope" of the line from the base of the ramp to the + // lower-north edge of the block + //------------------------------------------------------------------- + // + Scalar x = extents.minX - maxX; + Scalar y = extents.minY - minY; + + // + //------------------------------------------------------------------------ + // If the slope rise/run is more negative than y/x slope, then the extent + // box of the disk has clipped the ramp. Note that rise/run <= y/x yields + // rise*x <= y*run, which avoids any divide-by-0 errors + //------------------------------------------------------------------------ + // + return x*rise <= y*run; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + BoxedRampFacingNegativeX::ContainsBounded(const Point3D &point) +{ + Check(this); + Check(&point); + + Verify(minX <= point.x); + Verify(maxX >= point.x); + Verify(minY <= point.y); + Verify(maxY >= point.y); + Verify(minZ <= point.z); + Verify(maxZ >= point.z); + + // + //---------------------------------------------------------------------- + // Calculate the "slope" of the ramp when the base of the ramp is placed + // at the origin + //---------------------------------------------------------------------- + // + Scalar run = minX - maxX; + Scalar rise = maxY - minY; + Verify(!Small_Enough(run)); + + // + //------------------------------------------------------------------- + // Calculate the "slope" of the line from the base of the ramp to the + // lower-north edge of the block + //------------------------------------------------------------------- + // + Scalar x = point.x - maxX; + Scalar y = point.y - minY; + + // + //------------------------------------------------------------------------ + // If the slope rise/run is more negative than y/x slope, then the extent + // box of the disk has clipped the ramp. Note that rise/run <= y/x yields + // rise*x <= y*run, which avoids any divide-by-0 errors + //------------------------------------------------------------------------ + // + return x*rise <= y*run; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Scalar + BoxedRampFacingNegativeX::FindDistanceBelowBounded(const Point3D &point) +{ + Check(this); + Check(&point); + + Verify(minX <= point.x); + Verify(maxX >= point.x); + Verify(minY <= point.y); + Verify(minZ <= point.z); + Verify(maxZ >= point.z); + + // + //---------------------------------------------------------------------- + // Calculate the "slope" of the ramp when the base of the ramp is placed + // at the origin. If the run is zero, make sure no divide by zero + // happens + //---------------------------------------------------------------------- + // + Scalar run = minX - maxX; + Scalar rise = maxY - minY; + Verify(!Small_Enough(run)); + + // + //---------------------------------------------------------- + // Get the point coordinates local the the start of the ramp + //---------------------------------------------------------- + // + Scalar x = point.x - maxX; + Scalar y = point.y - minY; + + // + //------------------------------------------------------------------- + // Return the distance from the point to where it intersects the ramp + //------------------------------------------------------------------- + // + y -= (rise/run)*x; + return Max(y,0.0f); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + BoxedRampFacingNegativeX::HitByBounded( + Line *line, + Scalar enters, + Scalar leaves + ) +{ + Plane + ramp; + Scalar + temp; + + // + //------------------------------------------------------------------- + // Make a vector pointing normal to the face of the north facing ramp + //------------------------------------------------------------------- + // + ramp.normal.y = maxX - minX; + ramp.normal.x = maxY - minY; + ramp.normal.z = 0.0f; + + // + //------------------------------------------------------------- + // Scale the vector to a normal and figure out the plane offset + //------------------------------------------------------------- + // + temp = ramp.normal.y*ramp.normal.y + ramp.normal.x*ramp.normal.x; + Verify(!Small_Enough(temp)) + temp = Sqrt(temp); + ramp.normal.y /= temp; + ramp.normal.x /= temp; + ramp.offset = maxY*ramp.normal.y + minX*ramp.normal.x; + + // + //--------------------------------------------------------------------- + // Now that we have added a new plane into the definition of the convex + // polyhedron, call a common ramp line collider + //--------------------------------------------------------------------- + // + return BoxedRampContainsLine(line, ramp, enters, leaves); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + BoxedRampFacingNegativeX::TestInstance() const +{ + return solidType == RampFacingNegativeXType; +} + +//############################################################################# +//######################### BoxedRampFacingPositiveX #################### +//############################################################################# + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +BoxedRampFacingPositiveX::BoxedRampFacingPositiveX( + const ExtentBox &extents, + BoxedSolid::Material material, + Simulation *owner, + BoxedSolid *next_solid +): + BoxedSolid(extents, RampFacingPositiveXType, material, owner, next_solid) +{ + Check_Pointer(this); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +BoxedRampFacingPositiveX::~BoxedRampFacingPositiveX() +{ + Check_Pointer(this); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + BoxedRampFacingPositiveX::IntersectsBounded(const ExtentBox &extents) +{ + Check(this); + Check(&extents); + + Verify(minX <= extents.minX); + Verify(maxX >= extents.maxX); + Verify(minY <= extents.minY); + Verify(maxY >= extents.maxY); + Verify(minZ <= extents.minZ); + Verify(maxZ >= extents.maxZ); + + // + //---------------------------------------------------------------------- + // Calculate the "slope" of the ramp when the base of the ramp is placed + // at the origin + //---------------------------------------------------------------------- + // + Scalar run = maxX - minX; + Scalar rise = maxY - minY; + Verify(!Small_Enough(run)); + + // + //------------------------------------------------------------------- + // Calculate the "slope" of the line from the base of the ramp to the + // lower-north edge of the block + //------------------------------------------------------------------- + // + Scalar x = extents.maxX - minX; + Scalar y = extents.minY - minY; + + // + //------------------------------------------------------------------------ + // If the slope rise/run is more positive than y/x slope, then the extent + // box of the disk has clipped the ramp. Note that rise/run >= y/x yields + // rise*x >= x*run, which avoids any divide-by-0 errors + //------------------------------------------------------------------------ + // + return x*rise >= y*run; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + BoxedRampFacingPositiveX::ContainsBounded(const Point3D &point) +{ + Check(this); + Check(&point); + + Verify(minX <= point.x); + Verify(maxX >= point.x); + Verify(minY <= point.y); + Verify(maxY >= point.y); + Verify(minZ <= point.z); + Verify(maxZ >= point.z); + + // + //---------------------------------------------------------------------- + // Calculate the "slope" of the ramp when the base of the ramp is placed + // at the origin + //---------------------------------------------------------------------- + // + Scalar run = maxX - minX; + Scalar rise = maxY - minY; + Verify(!Small_Enough(run)); + + // + //------------------------------------------------------------------- + // Calculate the "slope" of the line from the base of the ramp to the + // lower-north edge of the block + //------------------------------------------------------------------- + // + Scalar x = point.x - minX; + Scalar y = point.y - minY; + + // + //------------------------------------------------------------------------ + // If the slope rise/run is more negative than y/x slope, then the extent + // box of the disk has clipped the ramp. Note that rise/run >= y/x yields + // rise*x >= y*run, which avoids any divide-by-0 errors + //------------------------------------------------------------------------ + // + return x*rise >= y*run; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Scalar + BoxedRampFacingPositiveX::FindDistanceBelowBounded(const Point3D &point) +{ + Check(this); + Check(&point); + + Verify(minX <= point.x); + Verify(maxX >= point.x); + Verify(minY <= point.y); + Verify(minZ <= point.z); + Verify(maxZ >= point.z); + + // + //---------------------------------------------------------------------- + // Calculate the "slope" of the ramp when the base of the ramp is placed + // at the origin. If the run is zero, make sure no divide by zero + // happens + //---------------------------------------------------------------------- + // + Scalar run = maxX - minX; + Scalar rise = maxY - minY; + Verify(!Small_Enough(run)); + + // + //---------------------------------------------------------- + // Get the point coordinates local the the start of the ramp + //---------------------------------------------------------- + // + Scalar x = point.x - minX; + Scalar y = point.y - minY; + + // + //------------------------------------------------------------------- + // Return the distance from the point to where it intersects the ramp + //------------------------------------------------------------------- + // + y -= (rise/run)*x; + return Max(y,0.0f); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + BoxedRampFacingPositiveX::HitByBounded( + Line *line, + Scalar enters, + Scalar leaves + ) +{ + Plane + ramp; + Scalar + temp; + + // + //------------------------------------------------------------------- + // Make a vector pointing normal to the face of the north facing ramp + //------------------------------------------------------------------- + // + ramp.normal.y = maxX - minX; + ramp.normal.x = minY - maxY; + ramp.normal.z = 0.0f; + + // + //------------------------------------------------------------- + // Scale the vector to a normal and figure out the plane offset + //------------------------------------------------------------- + // + temp = ramp.normal.y*ramp.normal.y + ramp.normal.x*ramp.normal.x; + Verify(!Small_Enough(temp)) + temp = Sqrt(temp); + ramp.normal.y /= temp; + ramp.normal.x /= temp; + ramp.offset = minY*ramp.normal.y + minX*ramp.normal.x; + + // + //--------------------------------------------------------------------- + // Now that we have added a new plane into the definition of the convex + // polyhedron, call a common ramp line collider + //--------------------------------------------------------------------- + // + return BoxedRampContainsLine(line, ramp, enters, leaves); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + BoxedRampFacingPositiveX::TestInstance() const +{ + return solidType == RampFacingPositiveXType; +} + diff --git a/CODE/RP/MUNGA/BOXSOLID.CPP b/CODE/RP/MUNGA/BOXSOLID.CPP new file mode 100644 index 0000000..21a6119 --- /dev/null +++ b/CODE/RP/MUNGA/BOXSOLID.CPP @@ -0,0 +1,1439 @@ +//===========================================================================// +// File: boxsolid.cpp // +// Project: MUNGA Brick: Spatializer Library // +// Contents: Implementation details of bounding-box collision subtypes // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 01/11/95 JMA Initial port back to C++ // +//---------------------------------------------------------------------------// +// Copyright (C) 1993-1996, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(BOXSOLID_HPP) +# include +#endif + +#if !defined(FILEUTIL_HPP) +# include +#endif + +#if !defined(ORIGIN_HPP) +# include +#endif + +#if !defined(LINMTRX_HPP) +# include +#endif + +#if !defined(LINE_HPP) +# include +#endif + +#if !defined(NOTATION_HPP) +# include +#endif + +//############################################################################# +//############################## BoxedSolid ############################# +//############################################################################# + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +BoxedSolid::BoxedSolid( + const ExtentBox &extents, + BoxedSolid::Type type, + BoxedSolid::Material material, + Simulation *owner, + BoxedSolid *next_solid +): + TaggedBoundingBox(extents, owner) +{ + + Check_Pointer(this); + solidType = type; + materialType = material; + nextSolid = next_solid; + if (nextSolid) + { + Check(nextSolid); + } +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +BoxedSolid::BoxedSolid( + const ExtentBox &extents, + Material material, + Simulation *owner, + BoxedSolid *next_solid +): + TaggedBoundingBox(extents, owner) +{ + Check_Pointer(this); + solidType = BlockType; + materialType = material; + nextSolid = next_solid; + if (nextSolid) + { + Check(nextSolid); + } +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +BoxedSolid::~BoxedSolid() +{ + Check_Pointer(this); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +BoxedSolid * + BoxedSolid::MakeBoxedSolid( + BoxedSolidResource *boxed_solid_resource, + Simulation *owner, + BoxedSolid *next_solid + ) +{ + + BoxedSolid *boxed_solid; + + switch(boxed_solid_resource->solidType) + { + case BoxedSolid::BlockType: + boxed_solid = + new BoxedSolid( + boxed_solid_resource->solidExtents, + boxed_solid_resource->materialType, + owner, + next_solid + ); + break; + case BoxedSolid::SphereType: + boxed_solid = + new BoxedSphere( + boxed_solid_resource->solidExtents, + boxed_solid_resource->materialType, + owner, + next_solid + ); + break; + case BoxedSolid::ConeType: + boxed_solid = + new BoxedCone( + boxed_solid_resource->solidExtents, + boxed_solid_resource->materialType, + owner, + next_solid + ); + break; + case BoxedSolid::ReducibleBlockType: + boxed_solid = + new BoxedReducibleBlock( + boxed_solid_resource->solidExtents, + boxed_solid_resource->materialType, + owner, + next_solid + ); + break; + case BoxedSolid::RampFacingNegativeZType: + boxed_solid = + new BoxedRampFacingNegativeZ( + boxed_solid_resource->solidExtents, + boxed_solid_resource->materialType, + owner, + next_solid + ); + break; + case BoxedSolid::RampFacingNegativeXType: + boxed_solid = + new BoxedRampFacingNegativeX( + boxed_solid_resource->solidExtents, + boxed_solid_resource->materialType, + owner, + next_solid + ); + break; + case BoxedSolid::RampFacingPositiveZType: + boxed_solid = + new BoxedRampFacingPositiveZ( + boxed_solid_resource->solidExtents, + boxed_solid_resource->materialType, + owner, + next_solid + ); + break; + case BoxedSolid::RampFacingPositiveXType: + boxed_solid = + new BoxedRampFacingPositiveX( + boxed_solid_resource->solidExtents, + boxed_solid_resource->materialType, + owner, + next_solid + ); + break; + case BoxedSolid::InvertedRampFacingNegativeZType: + boxed_solid = + new BoxedInvertedRampFacingNegativeZ( + boxed_solid_resource->solidExtents, + boxed_solid_resource->materialType, + owner, + next_solid + ); + break; + case BoxedSolid::InvertedRampFacingNegativeXType: + boxed_solid = + new BoxedInvertedRampFacingNegativeX( + boxed_solid_resource->solidExtents, + boxed_solid_resource->materialType, + owner, + next_solid + ); + break; + case BoxedSolid::InvertedRampFacingPositiveZType: + boxed_solid = + new BoxedInvertedRampFacingPositiveZ( + boxed_solid_resource->solidExtents, + boxed_solid_resource->materialType, + owner, + next_solid + ); + break; + case BoxedSolid::InvertedRampFacingPositiveXType: + boxed_solid = + new BoxedInvertedRampFacingPositiveX( + boxed_solid_resource->solidExtents, + boxed_solid_resource->materialType, + owner, + next_solid + ); + break; + case BoxedSolid::WedgeFacingNegativeZAndPositiveXType: + boxed_solid = + new BoxedWedgeFacingNegativeZAndPositiveX( + boxed_solid_resource->solidExtents, + boxed_solid_resource->materialType, + owner, + next_solid + ); + break; + case BoxedSolid::WedgeFacingNegativeZAndNegativeXType: + boxed_solid = + new BoxedWedgeFacingNegativeZAndNegativeX( + boxed_solid_resource->solidExtents, + boxed_solid_resource->materialType, + owner, + next_solid + ); + break; + case BoxedSolid::WedgeFacingPositiveZAndNegativeXType: + boxed_solid = + new BoxedWedgeFacingPositiveZAndNegativeX( + boxed_solid_resource->solidExtents, + boxed_solid_resource->materialType, + owner, + next_solid + ); + break; + case BoxedSolid::WedgeFacingPositiveZAndPositiveXType: + boxed_solid = + new BoxedWedgeFacingPositiveZAndPositiveX( + boxed_solid_resource->solidExtents, + boxed_solid_resource->materialType, + owner, + next_solid + ); + break; + case BoxedSolid::XAxisCylinderType: + boxed_solid = + new BoxedXAxisCylinder( + boxed_solid_resource->solidExtents, + boxed_solid_resource->materialType, + owner, + next_solid + ); + break; + case BoxedSolid::YAxisCylinderType: + boxed_solid = + new BoxedYAxisCylinder( + boxed_solid_resource->solidExtents, + boxed_solid_resource->materialType, + owner, + next_solid + ); + break; + case BoxedSolid::ZAxisCylinderType: + boxed_solid = + new BoxedZAxisCylinder( + boxed_solid_resource->solidExtents, + boxed_solid_resource->materialType, + owner, + next_solid + ); + break; +#if 0 + case BoxedSolid::RightHandedTileType: + { + TileResource *terrain = + (TileResource*)boxed_solid_resource; + boxed_solid = + new RightHandedTile( + boxed_solid_resource->solidExtents, + boxed_solid_resource->materialType, + owner, + next_solid, + terrain->cornerHeight + ); + } + break; + case BoxedSolid::LeftHandedTileType: + { + TileResource *terrain = + (TileResource*)boxed_solid_resource; + boxed_solid = + new LeftHandedTile( + boxed_solid_resource->solidExtents, + boxed_solid_resource->materialType, + owner, + next_solid, + terrain->cornerHeight + ); + } + break; +#endif + #if defined(LAB_ONLY) + default: + Dump(boxed_solid_resource->solidType); + Fail("Bad box type!"); + #endif + } + + Check(boxed_solid); + return boxed_solid; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical +#if DEBUG_LEVEL>0 + BoxedSolid::VerifyCollision(BoxedSolidCollision &collision) +#else + BoxedSolid::VerifyCollision(BoxedSolidCollision &) +#endif +{ + Check(this); + Check(&collision); + + Verify(minX <= collision.collisionSlice.minX); + Verify(maxX >= collision.collisionSlice.maxX); + Verify(minY <= collision.collisionSlice.minY); + Verify(maxY >= collision.collisionSlice.maxY); + Verify(minZ <= collision.collisionSlice.minZ); + Verify(maxZ >= collision.collisionSlice.maxZ); + + return True; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + BoxedSolid::ProcessCollision( + BoxedSolidCollision &, + const Vector3D &, + BoxedSolidCollisionList *, + Normal *, + Scalar * + ) +{ + Fail("Unsupported mover collision type!\n"); + return False; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// + +Logical + BoxedSolid::TestInstance() const +{ + return solidType == BlockType; +} + +//############################################################################# +//########################## BoxedSolidResource ######################### +//############################################################################# + +static const BoxedSolid::Type + Left_90[BoxedSolid::SolidTypeCount]= +{ + BoxedSolid::BlockType, BoxedSolid::SphereType, + BoxedSolid::ConeType, BoxedSolid::ReducibleBlockType, + + BoxedSolid::RampFacingNegativeXType, + BoxedSolid::RampFacingPositiveZType, + BoxedSolid::RampFacingPositiveXType, + BoxedSolid::RampFacingNegativeZType, + + BoxedSolid::InvertedRampFacingNegativeXType, + BoxedSolid::InvertedRampFacingPositiveZType, + BoxedSolid::InvertedRampFacingPositiveXType, + BoxedSolid::InvertedRampFacingNegativeZType, + + BoxedSolid::WedgeFacingNegativeZAndNegativeXType, + BoxedSolid::WedgeFacingPositiveZAndNegativeXType, + BoxedSolid::WedgeFacingPositiveZAndPositiveXType, + BoxedSolid::WedgeFacingNegativeZAndPositiveXType, + + BoxedSolid::ZAxisCylinderType, + BoxedSolid::YAxisCylinderType, + BoxedSolid::XAxisCylinderType, + + BoxedSolid::LeftHandedTileType, + BoxedSolid::RightHandedTileType +}; + +static const BoxedSolid::Type + Left_180[BoxedSolid::SolidTypeCount]= +{ + BoxedSolid::BlockType, BoxedSolid::SphereType, + BoxedSolid::ConeType, BoxedSolid::ReducibleBlockType, + + BoxedSolid::RampFacingPositiveZType, + BoxedSolid::RampFacingPositiveXType, + BoxedSolid::RampFacingNegativeZType, + BoxedSolid::RampFacingNegativeXType, + + BoxedSolid::InvertedRampFacingPositiveZType, + BoxedSolid::InvertedRampFacingPositiveXType, + BoxedSolid::InvertedRampFacingNegativeZType, + BoxedSolid::InvertedRampFacingNegativeXType, + + BoxedSolid::WedgeFacingPositiveZAndNegativeXType, + BoxedSolid::WedgeFacingPositiveZAndPositiveXType, + BoxedSolid::WedgeFacingNegativeZAndPositiveXType, + BoxedSolid::WedgeFacingNegativeZAndNegativeXType, + + BoxedSolid::XAxisCylinderType, + BoxedSolid::YAxisCylinderType, + BoxedSolid::ZAxisCylinderType, + + BoxedSolid::RightHandedTileType, + BoxedSolid::LeftHandedTileType +}; + +static const BoxedSolid::Type + Left_270[BoxedSolid::SolidTypeCount]= +{ + BoxedSolid::BlockType, BoxedSolid::SphereType, + BoxedSolid::ConeType, BoxedSolid::ReducibleBlockType, + + BoxedSolid::RampFacingPositiveXType, + BoxedSolid::RampFacingNegativeZType, + BoxedSolid::RampFacingNegativeXType, + BoxedSolid::RampFacingPositiveZType, + + BoxedSolid::InvertedRampFacingPositiveXType, + BoxedSolid::InvertedRampFacingNegativeZType, + BoxedSolid::InvertedRampFacingNegativeXType, + BoxedSolid::InvertedRampFacingPositiveZType, + + BoxedSolid::WedgeFacingPositiveZAndPositiveXType, + BoxedSolid::WedgeFacingNegativeZAndPositiveXType, + BoxedSolid::WedgeFacingNegativeZAndNegativeXType, + BoxedSolid::WedgeFacingPositiveZAndNegativeXType, + + BoxedSolid::ZAxisCylinderType, + BoxedSolid::YAxisCylinderType, + BoxedSolid::XAxisCylinderType, + + BoxedSolid::LeftHandedTileType, + BoxedSolid::RightHandedTileType +}; + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + BoxedSolidResource::Instance( + const BoxedSolidResource &source, + const Origin& origin + ) +{ + materialType = source.materialType; + + // + //------------------- + // Handle no rotation + //------------------- + // + if (Close_Enough(origin.angularPosition.w, 1.0f)) + { + solidType = source.solidType; + solidExtents = source.solidExtents; + sliceExtents = source.sliceExtents; + } + + // + //------------------------------- + // Test for a 180 degree rotation + //------------------------------- + // + else if (Close_Enough(fabs(origin.angularPosition.y), 1.0f)) + { + solidType = Left_180[source.solidType]; + solidExtents.minX = -source.solidExtents.maxX; + solidExtents.maxX = -source.solidExtents.minX; + solidExtents.minY = source.solidExtents.minY; + solidExtents.maxY = source.solidExtents.maxY; + solidExtents.minZ = -source.solidExtents.maxZ; + solidExtents.maxZ = -source.solidExtents.minZ; + sliceExtents.minX = -source.sliceExtents.maxX; + sliceExtents.maxX = -source.sliceExtents.minX; + sliceExtents.minY = source.sliceExtents.minY; + sliceExtents.maxY = source.sliceExtents.maxY; + sliceExtents.minZ = -source.sliceExtents.maxZ; + sliceExtents.maxZ = -source.sliceExtents.minZ; + } + + // + //--------------------------------- + // Handle a 90 degree left rotation + //--------------------------------- + // + else if (Close_Enough(origin.angularPosition.w, origin.angularPosition.y)) + { + solidType = Left_90[source.solidType]; + solidExtents.minX = source.solidExtents.minZ; + solidExtents.maxX = source.solidExtents.maxZ; + solidExtents.minY = source.solidExtents.minY; + solidExtents.maxY = source.solidExtents.maxY; + solidExtents.minZ = -source.solidExtents.maxX; + solidExtents.maxZ = -source.solidExtents.minX; + sliceExtents.minX = source.sliceExtents.minZ; + sliceExtents.maxX = source.sliceExtents.maxZ; + sliceExtents.minY = source.sliceExtents.minY; + sliceExtents.maxY = source.sliceExtents.maxY; + sliceExtents.minZ = -source.sliceExtents.maxX; + sliceExtents.maxZ = -source.sliceExtents.minX; + } + + // + //---------------------------------- + // Handle a 90 degree right rotation + //---------------------------------- + // + else if (Close_Enough(origin.angularPosition.w, -origin.angularPosition.y)) + { + solidType = Left_270[source.solidType]; + solidExtents.minX = -source.solidExtents.maxZ; + solidExtents.maxX = -source.solidExtents.minZ; + solidExtents.minY = source.solidExtents.minY; + solidExtents.maxY = source.solidExtents.maxY; + solidExtents.minZ = source.solidExtents.minX; + solidExtents.maxZ = source.solidExtents.maxX; + sliceExtents.minX = -source.sliceExtents.maxZ; + sliceExtents.maxX = -source.sliceExtents.minZ; + sliceExtents.minY = source.sliceExtents.minY; + sliceExtents.maxY = source.sliceExtents.maxY; + sliceExtents.minZ = source.sliceExtents.minX; + sliceExtents.maxZ = source.sliceExtents.maxX; + } + + // + //------------------------------------------------------------------------- + // Handle an arbitrary rotation. Make sure that only vertically symetrical + // solids get here + //------------------------------------------------------------------------- + // + else if ( + source.solidType == BoxedSolid::YAxisCylinderType + || source.solidType == BoxedSolid::ConeType + || source.solidType == BoxedSolid::SphereType + ) + { + solidType = source.solidType; + Verify(source.solidExtents.minX == source.sliceExtents.minX); + Verify(source.solidExtents.maxX == source.sliceExtents.maxX); + Verify(source.solidExtents.minY == source.sliceExtents.minY); + Verify(source.solidExtents.maxY == source.sliceExtents.maxY); + Verify(source.solidExtents.minZ == source.sliceExtents.minZ); + Verify(source.solidExtents.maxZ == source.sliceExtents.maxZ); + Vector3D center; + center.x = (source.solidExtents.minX + source.solidExtents.maxX) * 0.5f; + center.y = source.solidExtents.minY; + center.z = (source.solidExtents.minZ + source.solidExtents.maxZ) * 0.5f; + Scalar radius = center.x - source.solidExtents.minX; + LinearMatrix m; + m = origin.angularPosition; + Vector3D translated; + translated.Multiply(center, m); + + solidExtents.minX = translated.x - radius; + solidExtents.maxX = translated.x + radius; + solidExtents.minY = source.solidExtents.minY; + solidExtents.maxY = source.solidExtents.maxY; + solidExtents.minZ = translated.z - radius; + solidExtents.maxZ = translated.z + radius; + sliceExtents = solidExtents; + } + + // + //---------------- + // Otherwise, barf + //---------------- + // + #if defined(LAB_ONLY) + else + { + Fail("Illegal solid for a non-90 degree rotation!\n"); + } + #endif + + solidExtents.minX += origin.linearPosition.x; + solidExtents.maxX += origin.linearPosition.x; + solidExtents.minY += origin.linearPosition.y; + solidExtents.maxY += origin.linearPosition.y; + solidExtents.minZ += origin.linearPosition.z; + solidExtents.maxZ += origin.linearPosition.z; + sliceExtents.minX += origin.linearPosition.x; + sliceExtents.maxX += origin.linearPosition.x; + sliceExtents.minY += origin.linearPosition.y; + sliceExtents.maxY += origin.linearPosition.y; + sliceExtents.minZ += origin.linearPosition.z; + sliceExtents.maxZ += origin.linearPosition.z; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + TileResource::Instance( + const TileResource &source, + const Origin& origin + ) +{ + BoxedSolidResource::Instance(source, origin); + + // + //------------------------------- + // Test for a 180 degree rotation + //------------------------------- + // + if (Close_Enough(fabs(origin.angularPosition.y), 1.0f)) + { + cornerHeight[0] = source.cornerHeight[3]; + cornerHeight[1] = source.cornerHeight[2]; + cornerHeight[2] = source.cornerHeight[1]; + cornerHeight[3] = source.cornerHeight[0]; + } + + // + //--------------------------------- + // Handle a 90 degree left rotation + //--------------------------------- + // + else if (Close_Enough(origin.angularPosition.w, origin.angularPosition.y)) + { + cornerHeight[0] = source.cornerHeight[1]; + cornerHeight[1] = source.cornerHeight[3]; + cornerHeight[2] = source.cornerHeight[0]; + cornerHeight[3] = source.cornerHeight[2]; + } + + // + //---------------------------------- + // Handle a 90 degree right rotation + //---------------------------------- + // + else if (Close_Enough(origin.angularPosition.w, -origin.angularPosition.y)) + { + cornerHeight[0] = source.cornerHeight[2]; + cornerHeight[1] = source.cornerHeight[0]; + cornerHeight[2] = source.cornerHeight[3]; + cornerHeight[3] = source.cornerHeight[1]; + } +} + +//############################################################################# + +ResourceDescription::ResourceID + BoxedSolidResource::CreateBoxedSolidStream( + const char *entry_data, + ResourceFile *file, + const ResourceDirectories *resource_directories, + Logical convert_boxes + ) +{ + char *filename = + MakePathedFilename(resource_directories->collisionDirectory, entry_data); + Register_Pointer(filename); + + NotationFile *collision_file = new NotationFile(filename); + Unregister_Pointer(filename); + delete filename; + Register_Object(collision_file); + + + ResourceDescription::ResourceID collision_ID; + + if (collision_file->PageCount()) + { +// LAB_ONLY |= collision_file->IsMarkedLabOnly(); + + BoxedSolidList *box_solid_list = new BoxedSolidList; + Register_Object(box_solid_list); + + int size = box_solid_list->AddBoxedSolids(collision_file); + + BoxedSolidResource *boxed_solid_resource = + new BoxedSolidResource[size]; + Register_Pointer(boxed_solid_resource); + + int j = 0; + + + BoundingBoxListNode *p; + + for (p = box_solid_list->GetRoot(); p; p = p->GetNextNode()) + { + Verify(j < size); + Check(p); + BoxedSolid *box = (BoxedSolid *)p->GetBoundingBox(); + Check(box); + + boxed_solid_resource[j].materialType = box->materialType; + + if ((box->solidType == BoxedSolid::BlockType) && (convert_boxes)) + { + boxed_solid_resource[j].solidType = BoxedSolid::ReducibleBlockType; + } + else + { + boxed_solid_resource[j].solidType = box->solidType; + } + + boxed_solid_resource[j].solidExtents = *box; + boxed_solid_resource[j].sliceExtents = p->solidSlice; + boxed_solid_resource[j].recordLength = sizeof(boxed_solid_resource[j]); + + ++j; + } + + for (p = box_solid_list->GetRoot(); p; p = p->GetNextNode()) + { + + Check(p); + BoxedSolid *box = (BoxedSolid *)p->GetBoundingBox(); + Check(box); + + Unregister_Object(box); + delete(box); + + } + + ResourceDescription *res_description = file->FindResourceDescription(entry_data, + ResourceDescription::BoxedSolidStreamResourceType); + + if(res_description == NULL) + { + collision_ID = + file->AddResource( + entry_data, + ResourceDescription::BoxedSolidStreamResourceType, + 1, + ResourceDescription::Preload, + boxed_solid_resource, + size * sizeof(BoxedSolidResource) + )->resourceID; + } + else + { + collision_ID = res_description->resourceID; + } + + Unregister_Pointer(boxed_solid_resource); + delete boxed_solid_resource; + + Unregister_Object(box_solid_list); + delete box_solid_list; + + } + else + { + //---------------------------------------------- + // display warning that collision file is empty + //---------------------------------------------- + DEBUG_STREAM << "** Collision file '" << entry_data << + "' empty or not found. **" << endl; + //---------------------------------------------- + // continue to show all missing collision files + //---------------------------------------------- + } + + Unregister_Object(collision_file); + delete collision_file; + + return collision_ID; +} +//############################################################################# +//########################## BoxedSolidCollision ######################## +//############################################################################# + +static const int + Cant_Occlude[BoxedSolid::SolidTypeCount]= +{ + 0, 1<<(X_Axis|Y_Axis|Z_Axis), 1<<(X_Axis|Z_Axis), 0, + 1<solidType] & (1<solidType != second->solidType + ) + { + continue; + } + + // + //---------------------------------------------------------------------- + // Figure out what face to check against, and make sure that the face of + // the possibly occluding slice is nearer than the other slice + //---------------------------------------------------------------------- + // + int face = (axis<<1) + (velocity[axis] < 0.0f); + int opposite_face = face^1; + if (face&1) + { + if (first->solidType == BoxedSolid::BlockType) + { + if (collisionSlice[face] <= collision.collisionSlice[face]) + { + continue; + } + } + else if ( + collisionSlice[opposite_face] < collision.collisionSlice[face] + ) + { + continue; + } + } + else + { + if (first->solidType == BoxedSolid::BlockType) + { + if (collisionSlice[face] >= collision.collisionSlice[face]) + { + continue; + } + } + else if ( + collisionSlice[opposite_face] > collision.collisionSlice[face] + ) + { + continue; + } + } + + // + //------------------------------------------------------------------ + // Check the faces on the other axes to make sure that the occluding + // object at least covers the extent of the occluded object + //------------------------------------------------------------------ + // + for (face=0; face<6; ++face) + { + if ((face>>1) == axis) + { + continue; + } + if (face&1) + { + if (collisionSlice[face] < collision.collisionSlice[face]) + { + break; + } + } + else if (collisionSlice[face] > collision.collisionSlice[face]) + { + break; + } + } + + // + //----------------------------------------------------------------------- + // If everything checked out, then List[i] occludes List[j]. Stretch the + // definition of List[i] to include the slice occluded if necessary + //----------------------------------------------------------------------- + // + if (face == 6) + { + face = axis<<1; + if (velocity[axis] > 0.0f) + { + ++face; + collisionSlice[face] = + Max(collisionSlice[face], collision.collisionSlice[face]); + } + else + { + collisionSlice[face] = + Min(collisionSlice[face], collision.collisionSlice[face]); + } + return True; + } + } + return False; +} + +//############################################################################# +//######################## BoxedSolidCollisionList ###################### +//############################################################################# + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + BoxedSolidCollisionList::ReduceCollisionList(const Vector3D &velocity) +{ + Check(this); + Check(&velocity); + + int + i,j; + + // + //-------------------------------------------------------------------------- + // Fuse the collision slices together into the largest possible chunks based + // upon the collision model of each of the involved slices. Repeat until no + // fusings were made in the last pass or only one collision slice remains + //-------------------------------------------------------------------------- + // + Logical again = True; + int collisions = GetCollisionCount(); + phantomCollisions = 0; + while (again && collisions>1) + { + again = False; + + // + //-------------------------------------------------------------------- + // Check each collision slice against the remaining slices in the list + //-------------------------------------------------------------------- + // + for (i=0; iGetTreeVolume()->solidType + != second->GetTreeVolume()->solidType + ) + { + continue; + } + + // + //---------------------------------------------------- + // Make sure that the faces on two sets of sides match + //---------------------------------------------------- + // + + int matches = 0; + int face = -1; + for (int side=0; side<6; side += 2) + { + if ( + first->collisionSlice[side] == second->collisionSlice[side] + && first->collisionSlice[side+1] + == second->collisionSlice[side+1] + ) + { + ++matches; + } + else if (face<0) + { + face = side; + } + } + if (matches != 2) + { + continue; + } + + // + //---------------------------------------------------------------- + // Check to make sure that the two slices have an opposing face in + // common, which will allow the slices to be fused + //---------------------------------------------------------------- + // + if ( + first->collisionSlice[face] != second->collisionSlice[face+1] + && first->collisionSlice[face+1] + != second->collisionSlice[face] + ) + { + continue; + } + + // + //---------------------------------------------------------------- + // Find the face to fuse, then find out which solid description to + // use based upon the velocity vector + //---------------------------------------------------------------- + // + if (first->collisionSlice[face+1] == second->collisionSlice[face]) + { + ++face; + } + BoxedSolid *original = NULL; + if ( + first->GetTreeVolume() != second->GetTreeVolume() + && second->Occludes(*first, velocity) + ) + { + original = first->GetTreeVolume(); + first->treeVolume = second->GetTreeVolume(); + } + + // + //------------------------- + // Fuse the blocks together + //------------------------- + // + first->collisionSlice[face] = second->collisionSlice[face]; + + // + //----------------------------------------------- + // Erase the second slice from the collision list + //----------------------------------------------- + // + for (int k=j+1; k1) + { + // + //-------------------------- + // Erase the occlusion table + //-------------------------- + // + Logical* occluded = new Logical[collisions]; + Register_Pointer(occluded); + BoxedSolid **volumes = new BoxedSolid* [collisions]; + Register_Pointer(volumes); + for (i=0; ij) + { + listStart[j] = listStart[i]; + } + ++j; + } + else + { + volumes[++occludeds] = (BoxedSolid*)listStart[i].treeVolume; + } + } + i = 0; + while (j= point.x && minY <= point.y + && minZ <= point.z && maxZ >= point.z + ) + { + Scalar result = point.y - maxY; + return Max(result, 0.0f); + } + else + { + return -1.0f; + } +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + BoxedReducibleBlock::HitByBounded( + Line *line, + Scalar enters, + Scalar leaves + ) +{ + Check(this); + Check(line); + + Scalar + perpendicular, + drift, + distance; + + // + //-------------------- + // Set up for the test + //-------------------- + // + for (int i=0; i<6; ++i) + { + // + //-------------------------------------------------------------------- + // Figure out what axis we are dealing with, then based upon the + // direction of the face, find out the distance from the origin to the + // place against the normal, and find out how fast the perpendicular + // distance changes with a unit movement along the line + //-------------------------------------------------------------------- + // + int face = i; + int axis = face >> 1; + if (face&1) + { + perpendicular = line->origin[axis] - (*this)[face]; + drift = line->direction[axis]; + } + else + { + perpendicular = (*this)[face] - line->origin[axis]; + drift = -line->direction[axis]; + } + + // + //------------------------------------------------------------------- + // If the line is parallel to the face, figure out whether or not the + // line origin lies within the face's half-space + //------------------------------------------------------------------- + // + if (Small_Enough(drift)) + { + if (perpendicular > 0.0f) + { + return False; + } + else + { + continue; + } + } + + // + //-------------------------------------------------------------------- + // If the drift is towards the plane's halfspace, this plane is one of + // the one through which the line could enter the node + //-------------------------------------------------------------------- + // + distance = -perpendicular / drift; + if (drift < 0.0f) + { + if (distance > enters) + { + enters = distance; + } + if (enters > line->length) + { + return False; + } + } + + // + //-------------------------------------------------------------------- + // If the drift is towards the plane's halfspace, this plane is one of + // the one through which the line could enter the node + //-------------------------------------------------------------------- + // + else + { + if (distance < leaves) + { + leaves = distance; + } + if (leaves < 0.0f) + { + return False; + } + } + } + + // + //----------------------------------------------------------------------- + // If we exit the loop, then make sure that we actually hit the interior, + // and let the box figure out if the what happens inside it + //----------------------------------------------------------------------- + // + if (enters <= leaves) + { + line->length = Max(enters, 0.0f); + return True; + } + else + { + return False; + } +} + +//############################################################################# +//########################### BoxedSolidList ############################ +//############################################################################# + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// + +int + BoxedSolidList::AddBoxedSolids(NotationFile *notation_file) +{ + char page_name[50]; + int solidnumber = 0; + int type; + + BoxedSolidResource boxed_solid_resource; + BoxedSolid *boxed_solid; + + + if (!notation_file->GetEntry("COLLISION", "count", &solidnumber)) + { + DEBUG_STREAM << "No 'COLLISION' entry!!!!!" << endl; + Exit(AbortExitCodeID); + } + + for (int j=0; j < solidnumber; ++j) + { + sprintf(page_name, "volume %d", j); + + if (!notation_file->GetEntry(page_name, "TypeNumber", &type)) + { + DEBUG_STREAM << "No solid at collision number : " << j << endl; + Exit(AbortExitCodeID); + } + boxed_solid_resource.solidType = (BoxedSolid::Type)type; + + if (!notation_file->GetEntry(page_name, "MaterialNumber", &type)) + { + DEBUG_STREAM << "No material at collision number : " << j << endl; + Exit(AbortExitCodeID); + } + + boxed_solid_resource.materialType = (BoxedSolid::Material)type; + + int errorvalue = 0; + + errorvalue |= !notation_file->GetEntry(page_name, "extminX", &(boxed_solid_resource.solidExtents.minX)); + errorvalue |= !notation_file->GetEntry(page_name, "extmaxX", &(boxed_solid_resource.solidExtents.maxX)); + errorvalue |= !notation_file->GetEntry(page_name, "extminY", &(boxed_solid_resource.solidExtents.minY)); + errorvalue |= !notation_file->GetEntry(page_name, "extmaxY", &(boxed_solid_resource.solidExtents.maxY)); + errorvalue |= !notation_file->GetEntry(page_name, "extminZ", &(boxed_solid_resource.solidExtents.minZ)); + errorvalue |= !notation_file->GetEntry(page_name, "extmaxZ", &(boxed_solid_resource.solidExtents.maxZ)); + + if ( errorvalue ) + { + DEBUG_STREAM << "Collision number : " << j + << " does not have valid extents\n"; + Exit(AbortExitCodeID); + } + + errorvalue = 0; + errorvalue |= !notation_file->GetEntry(page_name, "slcminX", &(boxed_solid_resource.sliceExtents.minX)); + errorvalue |= !notation_file->GetEntry(page_name, "slcmaxX", &(boxed_solid_resource.sliceExtents.maxX)); + errorvalue |= !notation_file->GetEntry(page_name, "slcminY", &(boxed_solid_resource.sliceExtents.minY)); + errorvalue |= !notation_file->GetEntry(page_name, "slcmaxY", &(boxed_solid_resource.sliceExtents.maxY)); + errorvalue |= !notation_file->GetEntry(page_name, "slcminZ", &(boxed_solid_resource.sliceExtents.minZ)); + errorvalue |= !notation_file->GetEntry(page_name, "slcmaxZ", &(boxed_solid_resource.sliceExtents.maxZ)); + + if ( errorvalue ) + { + DEBUG_STREAM << "Collision number : " << j + << " does not have valid slice extents\n"; + Exit(AbortExitCodeID); + } + + + boxed_solid = + BoxedSolid::MakeBoxedSolid(&boxed_solid_resource, NULL, NULL); + + Register_Object(boxed_solid); + + Add(boxed_solid, boxed_solid_resource.sliceExtents); + } + + return solidnumber; +} + + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// + + +#if defined(TEST_CLASS) +# include "boxsolid.tcp" +#endif + diff --git a/CODE/RP/MUNGA/BOXSOLID.HPP b/CODE/RP/MUNGA/BOXSOLID.HPP new file mode 100644 index 0000000..44ad751 --- /dev/null +++ b/CODE/RP/MUNGA/BOXSOLID.HPP @@ -0,0 +1,1004 @@ +//===========================================================================// +// File: boxsolid.hh // +// Project: MUNGA Brick: Spatializer Library // +// Contents: Interface specification of bounding-box collision subtypes // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 01/11/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(BOXSOLID_HPP) +# define BOXSOLID_HPP + +# if !defined(BNDGBOX_HPP) +# include +# endif + +# if !defined(BOXTREE_HPP) +# include +# endif + +# if !defined(BOXLIST_HPP) +# include +# endif + +# if !defined(RESOURCE_HPP) +# include +# endif + + struct BoxedSolidResource; + class BoxedSolidCollision; + class BoxedSolidCollisionList; + class Simulation; + class NotationFile; + class Normal; + + //########################################################################## + //########################### BoxedSolid ############################# + //########################################################################## + + class BoxedSolid: + public TaggedBoundingBox + { + public: + enum Type { + BlockType=0, + SphereType=1, + ConeType=2, + ReducibleBlockType=3, + RampType=4, + RampFacingNegativeZType=4, + RampFacingNegativeXType, + RampFacingPositiveZType, + RampFacingPositiveXType, + InvertedRampType=8, + InvertedRampFacingNegativeZType=8, + InvertedRampFacingNegativeXType, + InvertedRampFacingPositiveZType, + InvertedRampFacingPositiveXType, + WedgeType=12, + WedgeFacingNegativeZAndPositiveXType=12, + WedgeFacingNegativeZAndNegativeXType, + WedgeFacingPositiveZAndNegativeXType, + WedgeFacingPositiveZAndPositiveXType, + XAxisCylinderType=16, + YAxisCylinderType=17, + ZAxisCylinderType=18, + RightHandedTileType=19, + LeftHandedTileType=20, + SolidTypeCount + } + solidType; + + enum Material { + StoneMaterial = 0, + GravelMaterial, + ConcreteMaterial, + SteelMaterial, + WoodMaterial, + RockMaterial, + OurCraftMaterial, + OtherCraftMaterial, + MaterialCount + } + materialType; + + BoxedSolid( + const ExtentBox &extents, + Type type, + Material material, + Simulation *owner, + BoxedSolid *next_solid + ); + BoxedSolid( + const ExtentBox &extents, + Material material, + Simulation *owner, + BoxedSolid *next_solid + ); + ~BoxedSolid(); + + static BoxedSolid* + MakeBoxedSolid( + BoxedSolidResource *resource, + Simulation *owner, + BoxedSolid *next_solid + ); + + virtual Logical + VerifyCollision(BoxedSolidCollision &collision); + virtual Logical + ProcessCollision( + BoxedSolidCollision &collision, + const Vector3D &velocity, + BoxedSolidCollisionList *last_collisions, + Normal *normal, + Scalar *penetration + ); + + Logical + TestInstance() const; + static Logical + TestClass(); + + Simulation* + GetOwningSimulation() + {Check(this); return (Simulation*)GetTagPointer();} + BoxedSolid* + GetNextSolid() + {Check(this); return nextSolid;} + + protected: + BoxedSolid + *nextSolid; + }; + + //########################################################################## + //####################### BoxedSolidCollision ######################## + //########################################################################## + + class BoxedSolidCollision: + public BoundingBoxCollision + { + public: + BoxedSolid* + GetTreeVolume() + {Check(this); return (BoxedSolid*)treeVolume;} + Logical + Occludes( + BoxedSolidCollision &collision, + const Vector3D &velocity + ); + }; + + //########################################################################## + //##################### BoxedSolidCollisionList ###################### + //########################################################################## + + class BoxedSolidCollisionList: + public BoundingBoxCollisionList + { + protected: + int phantomCollisions; + + public: + BoxedSolidCollisionList(int max_length = 10): + BoundingBoxCollisionList(max_length) + {Reset();} + void + Reset() + {phantomCollisions = 0; BoundingBoxCollisionList::Reset();} + + BoxedSolidCollision& + operator[](int index) + { + Check(this); Verify((unsigned)index < maxCollisions); + return ((BoxedSolidCollision*)listStart)[index]; + } + int + GetRealCollisions() + {Check(this); return GetCollisionCount() - phantomCollisions;} + + void + ReduceCollisionList(const Vector3D &velocity); + }; + + //########################################################################## + //####################### BoxedSolidResource ######################### + //########################################################################## + + struct BoxedSolidResource + { + size_t recordLength; + ExtentBox + solidExtents, + sliceExtents; + BoxedSolid::Type solidType; + BoxedSolid::Material materialType; + + void + Instance( + const BoxedSolidResource &source, + const Origin& origin + ); + + static ResourceDescription::ResourceID + CreateBoxedSolidStream( + const char *entry_data, + ResourceFile *file, + const ResourceDirectories *resource_directories, + Logical convert_boxes = False + ); + }; + + //########################################################################## + //########################### BoxedSphere ############################ + //########################################################################## + + class BoxedSphere: + public BoxedSolid + { + public: + BoxedSphere( + const ExtentBox &extents, + Material material, + Simulation *owner, + BoxedSolid *next_solid + ); + ~BoxedSphere(); + + Logical + IntersectsBounded(const ExtentBox &extents); + Logical + ContainsBounded(const Point3D &point); + Scalar + FindDistanceBelowBounded(const Point3D &point); + Logical + HitByBounded( + Line *line, + Scalar enters, + Scalar leaves + ); + + Logical + TestInstance() const; + }; + + //########################################################################## + //############################ BoxedCone ############################# + //########################################################################## + + class BoxedCone: + public BoxedSolid + { + public: + BoxedCone( + const ExtentBox &extents, + Material material, + Simulation *owner, + BoxedSolid *next_solid + ); + ~BoxedCone(); + + Logical + IntersectsBounded(const ExtentBox &extents); + Logical + ContainsBounded(const Point3D &point); + Scalar + FindDistanceBelowBounded(const Point3D &point); + Logical + HitByBounded( + Line *line, + Scalar enters, + Scalar leaves + ); + + Logical + TestInstance() const; + }; + + //########################################################################## + //####################### BoxedReducibleBlock ######################## + //########################################################################## + + class BoxedReducibleBlock: + public BoxedSolid + { + public: + BoxedReducibleBlock( + const ExtentBox &extents, + Material material, + Simulation *owner, + BoxedSolid *next_solid + ); + ~BoxedReducibleBlock(); + + Logical + IntersectsBounded(const ExtentBox &extents); + Logical + ContainsBounded(const Point3D &point); + Scalar + FindDistanceBelowBounded(const Point3D &point); + Logical + HitByBounded( + Line *line, + Scalar enters, + Scalar leaves + ); + + Logical + TestInstance() const; + }; + + //########################################################################## + //###################### BoxedRampFacingNegativeZ #################### + //########################################################################## + + class BoxedRampFacingNegativeZ: + public BoxedSolid + { + public: + BoxedRampFacingNegativeZ( + const ExtentBox &extents, + Material material, + Simulation *owner, + BoxedSolid *next_solid + ); + ~BoxedRampFacingNegativeZ(); + + Logical + IntersectsBounded(const ExtentBox &extents); + Logical + ContainsBounded(const Point3D &point); + Scalar + FindDistanceBelowBounded(const Point3D &point); + Logical + HitByBounded( + Line *line, + Scalar enters, + Scalar leaves + ); + + Logical + TestInstance() const; + }; + + //########################################################################## + //#################### BoxedRampFacingPositiveX ###################### + //########################################################################## + + class BoxedRampFacingPositiveX: + public BoxedSolid + { + public: + BoxedRampFacingPositiveX( + const ExtentBox &extents, + Material material, + Simulation *owner, + BoxedSolid *next_solid + ); + ~BoxedRampFacingPositiveX(); + + Logical + IntersectsBounded(const ExtentBox &extents); + Logical + ContainsBounded(const Point3D &point); + Scalar + FindDistanceBelowBounded(const Point3D &point); + Logical + HitByBounded( + Line *line, + Scalar enters, + Scalar leaves + ); + + Logical + TestInstance() const; + }; + + //########################################################################## + //#################### BoxedRampFacingPositiveZ ###################### + //########################################################################## + + class BoxedRampFacingPositiveZ: + public BoxedSolid + { + public: + BoxedRampFacingPositiveZ( + const ExtentBox &extents, + Material material, + Simulation *owner, + BoxedSolid *next_solid + ); + ~BoxedRampFacingPositiveZ(); + + Logical + IntersectsBounded(const ExtentBox &extents); + Logical + ContainsBounded(const Point3D &point); + Scalar + FindDistanceBelowBounded(const Point3D &point); + Logical + HitByBounded( + Line *line, + Scalar enters, + Scalar leaves + ); + + Logical + TestInstance() const; + }; + + //########################################################################## + //#################### BoxedRampFacingNegativeX ###################### + //########################################################################## + + class BoxedRampFacingNegativeX: + public BoxedSolid + { + public: + BoxedRampFacingNegativeX( + const ExtentBox &extents, + Material material, + Simulation *owner, + BoxedSolid *next_solid + ); + ~BoxedRampFacingNegativeX(); + + Logical + IntersectsBounded(const ExtentBox &extents); + Logical + ContainsBounded(const Point3D &point); + Scalar + FindDistanceBelowBounded(const Point3D &point); + Logical + HitByBounded( + Line *line, + Scalar enters, + Scalar leaves + ); + + Logical + TestInstance() const; + }; + + //########################################################################## + //################## BoxedInvertedRampFacingNegativeZ ################ + //########################################################################## + + class BoxedInvertedRampFacingNegativeZ: + public BoxedSolid + { + public: + BoxedInvertedRampFacingNegativeZ( + const ExtentBox &extents, + Material material, + Simulation *owner, + BoxedSolid *next_solid + ); + ~BoxedInvertedRampFacingNegativeZ(); + + Logical + IntersectsBounded(const ExtentBox &extents); + Logical + ContainsBounded(const Point3D &point); + Scalar + FindDistanceBelowBounded(const Point3D &point); + Logical + HitByBounded( + Line *line, + Scalar enters, + Scalar leaves + ); + + Logical + TestInstance() const; + }; + + //########################################################################## + //################## BoxedInvertedRampFacingNegativeX ################ + //########################################################################## + + class BoxedInvertedRampFacingNegativeX: + public BoxedSolid + { + public: + BoxedInvertedRampFacingNegativeX( + const ExtentBox &extents, + Material material, + Simulation *owner, + BoxedSolid *next_solid + ); + ~BoxedInvertedRampFacingNegativeX(); + + Logical + IntersectsBounded(const ExtentBox &extents); + Logical + ContainsBounded(const Point3D &point); + Scalar + FindDistanceBelowBounded(const Point3D &point); + Logical + HitByBounded( + Line *line, + Scalar enters, + Scalar leaves + ); + + Logical + TestInstance() const; + }; + + //########################################################################## + //################## BoxedInvertedRampFacingPositiveZ ################ + //########################################################################## + + class BoxedInvertedRampFacingPositiveZ: + public BoxedSolid + { + public: + BoxedInvertedRampFacingPositiveZ( + const ExtentBox &extents, + Material material, + Simulation *owner, + BoxedSolid *next_solid + ); + ~BoxedInvertedRampFacingPositiveZ(); + + Logical + IntersectsBounded(const ExtentBox &extents); + Logical + ContainsBounded(const Point3D &point); + Scalar + FindDistanceBelowBounded(const Point3D &point); + Logical + HitByBounded( + Line *line, + Scalar enters, + Scalar leaves + ); + + Logical + TestInstance() const; + }; + + //########################################################################## + //################## BoxedInvertedRampFacingPositiveX ################ + //########################################################################## + + class BoxedInvertedRampFacingPositiveX: + public BoxedSolid + { + public: + BoxedInvertedRampFacingPositiveX( + const ExtentBox &extents, + Material material, + Simulation *owner, + BoxedSolid *next_solid + ); + ~BoxedInvertedRampFacingPositiveX(); + + Logical + IntersectsBounded(const ExtentBox &extents); + Logical + ContainsBounded(const Point3D &point); + Scalar + FindDistanceBelowBounded(const Point3D &point); + Logical + HitByBounded( + Line *line, + Scalar enters, + Scalar leaves + ); + + Logical + TestInstance() const; + }; + + //########################################################################## + //############## BoxedWedgeFacingNegativeZAndPositiveX ############### + //########################################################################## + + class BoxedWedgeFacingNegativeZAndPositiveX: + public BoxedSolid + { + public: + BoxedWedgeFacingNegativeZAndPositiveX( + const ExtentBox &extents, + Material material, + Simulation *owner, + BoxedSolid *next_solid + ); + ~BoxedWedgeFacingNegativeZAndPositiveX(); + + Logical + IntersectsBounded(const ExtentBox &extents); + Logical + ContainsBounded(const Point3D &point); + Scalar + FindDistanceBelowBounded(const Point3D &point); + Logical + HitByBounded( + Line *line, + Scalar enters, + Scalar leaves + ); + + Logical + TestInstance() const; + }; + + //########################################################################## + //############## BoxedWedgeFacingPositiveZAndPositiveX ############### + //########################################################################## + + class BoxedWedgeFacingPositiveZAndPositiveX: + public BoxedSolid + { + public: + BoxedWedgeFacingPositiveZAndPositiveX( + const ExtentBox &extents, + Material material, + Simulation *owner, + BoxedSolid *next_solid + ); + ~BoxedWedgeFacingPositiveZAndPositiveX(); + + Logical + IntersectsBounded(const ExtentBox &extents); + Logical + ContainsBounded(const Point3D &point); + Scalar + FindDistanceBelowBounded(const Point3D &point); + Logical + HitByBounded( + Line *line, + Scalar enters, + Scalar leaves + ); + + Logical + TestInstance() const; + }; + + //########################################################################## + //############## BoxedWedgeFacingPositiveZAndNegativeX ############### + //########################################################################## + + class BoxedWedgeFacingPositiveZAndNegativeX: + public BoxedSolid + { + public: + BoxedWedgeFacingPositiveZAndNegativeX( + const ExtentBox &extents, + Material material, + Simulation *owner, + BoxedSolid *next_solid + ); + ~BoxedWedgeFacingPositiveZAndNegativeX(); + + Logical + IntersectsBounded(const ExtentBox &extents); + Logical + ContainsBounded(const Point3D &point); + Scalar + FindDistanceBelowBounded(const Point3D &point); + Logical + HitByBounded( + Line *line, + Scalar enters, + Scalar leaves + ); + + Logical + TestInstance() const; + }; + + //########################################################################## + //############## BoxedWedgeFacingNegativeZAndNegativeX ############### + //########################################################################## + + class BoxedWedgeFacingNegativeZAndNegativeX: + public BoxedSolid + { + public: + BoxedWedgeFacingNegativeZAndNegativeX( + const ExtentBox &extents, + Material material, + Simulation *owner, + BoxedSolid *next_solid + ); + ~BoxedWedgeFacingNegativeZAndNegativeX(); + + Logical + IntersectsBounded(const ExtentBox &extents); + Logical + ContainsBounded(const Point3D &point); + Scalar + FindDistanceBelowBounded(const Point3D &point); + Logical + HitByBounded( + Line *line, + Scalar enters, + Scalar leaves + ); + + Logical + TestInstance() const; + }; + + //########################################################################## + //####################### BoxedXAxisCylinder ######################### + //########################################################################## + + class BoxedXAxisCylinder: + public BoxedSolid + { + public: + BoxedXAxisCylinder( + const ExtentBox &extents, + Material material, + Simulation *owner, + BoxedSolid *next_solid + ); + ~BoxedXAxisCylinder(); + + Logical + IntersectsBounded(const ExtentBox &extents); + Logical + ContainsBounded(const Point3D &point); + Scalar + FindDistanceBelowBounded(const Point3D &point); + Logical + HitByBounded( + Line *line, + Scalar enters, + Scalar leaves + ); + + Logical + TestInstance() const; + }; + + //########################################################################## + //####################### BoxedYAxisCylinder ######################### + //########################################################################## + + class BoxedYAxisCylinder: + public BoxedSolid + { + public: + BoxedYAxisCylinder( + const ExtentBox &extents, + Material material, + Simulation *owner, + BoxedSolid *next_solid + ); + ~BoxedYAxisCylinder(); + + Logical + VerifyCollision(BoxedSolidCollision &collision); + Logical + ProcessCollision( + BoxedSolidCollision &collision, + const Vector3D &velocity, + BoxedSolidCollisionList *last_collisions, + Normal *normal, + Scalar *penetration + ); + + Logical + IntersectsBounded(const ExtentBox &extents); + Logical + ContainsBounded(const Point3D &point); + Scalar + FindDistanceBelowBounded(const Point3D &point); + Logical + HitByBounded( + Line *line, + Scalar enters, + Scalar leaves + ); + + Logical + TestInstance() const; + }; + + //########################################################################## + //####################### BoxedZAxisCylinder ######################### + //########################################################################## + + class BoxedZAxisCylinder: + public BoxedSolid + { + public: + BoxedZAxisCylinder( + const ExtentBox &extents, + Material material, + Simulation *owner, + BoxedSolid *next_solid + ); + ~BoxedZAxisCylinder(); + + Logical + IntersectsBounded(const ExtentBox &extents); + Logical + ContainsBounded(const Point3D &point); + Scalar + FindDistanceBelowBounded(const Point3D &point); + Logical + HitByBounded( + Line *line, + Scalar enters, + Scalar leaves + ); + + Logical + TestInstance() const; + }; + + //########################################################################## + //##################### RightHandedTile ####################### + //########################################################################## + + class RightHandedTile: + public BoxedSolid + { + public: + RightHandedTile( + const ExtentBox &extents, + Material material, + Simulation *owner, + BoxedSolid *next_solid, + Scalar *cornerHeights, + Type type=RightHandedTileType + ); + ~RightHandedTile(); + + Scalar + cornerHeight[4]; + + Logical + IntersectsBounded(const ExtentBox &extents); + Logical + ContainsBounded(const Point3D &point); + Scalar + FindDistanceBelowBounded(const Point3D &point); + Logical + HitByBounded( + Line *line, + Scalar enters, + Scalar leaves + ); + + Logical + TestInstance() const; + }; + + //########################################################################## + //######################## LeftHandedTile ######################### + //########################################################################## + + class LeftHandedTile: + public RightHandedTile + { + public: + LeftHandedTile( + const ExtentBox &extents, + Material material, + Simulation *owner, + BoxedSolid *next_solid, + Scalar *cornerHeights + ); + ~LeftHandedTile(); + + Logical + IntersectsBounded(const ExtentBox &extents); + Scalar + FindDistanceBelowBounded(const Point3D &point); + Logical + HitByBounded( + Line *line, + Scalar enters, + Scalar leaves + ); + + Logical + TestInstance() const; + }; + + //########################################################################## + //####################### TerrainTileResource ######################## + //########################################################################## + + struct TileResource: + public BoxedSolidResource + { + Scalar + cornerHeight[4]; + + void + Instance( + const TileResource &source, + const Origin& origin + ); + }; + + //########################################################################## + //######################## BoxedSolidTree ############################ + //########################################################################## + + class BoxedSolidTree: + public BoundingBoxTree + { + + //########################################################################## + // Construction and Destruction + // + public: + BoxedSolidTree() + {} + ~BoxedSolidTree() + {} + + //########################################################################## + // Tree Traversal Functions + // + public: + BoxedSolid* + FindBoundingBoxContaining(const Point3D &point) + { + return + (BoxedSolid*) + BoundingBoxTree::FindBoundingBoxContaining(point); + } + + BoxedSolid* + FindBoundingBoxUnder( + const Point3D &point, + Scalar *height + ) + { + return + (BoxedSolid*) + BoundingBoxTree::FindBoundingBoxUnder(point, height); + } + + BoxedSolid* + FindBoundingBoxHitBy(Line *line) + {return (BoxedSolid*)BoundingBoxTree::FindBoundingBoxHitBy(line);} + }; + + //########################################################################## + //######################## BoxedSolidList ############################ + //########################################################################## + + class BoxedSolidList: + public BoundingBoxList + { + //########################################################################## + // Construction and Destruction + // + public: + BoxedSolidList() {} + ~BoxedSolidList() {} + + //########################################################################## + // Tree Traversal Functions + // + public: + int + AddBoxedSolids(NotationFile *notation_file); + + BoxedSolid* + FindBoundingBoxContaining(const Point3D &point) + { + return + (BoxedSolid*) + BoundingBoxList::FindBoundingBoxContaining(point); + } + + BoxedSolid* + FindBoundingBoxUnder( + const Point3D &point, + Scalar *height + ) + { + return + (BoxedSolid*) + BoundingBoxList::FindBoundingBoxUnder(point, height); + } + + BoxedSolid* + FindBoundingBoxHitBy(Line *line) + {return (BoxedSolid*)BoundingBoxList::FindBoundingBoxHitBy(line);} + + void + Reduce(); + }; + +#endif diff --git a/CODE/RP/MUNGA/BOXSOLID.TCP b/CODE/RP/MUNGA/BOXSOLID.TCP new file mode 100644 index 0000000..9d77369 --- /dev/null +++ b/CODE/RP/MUNGA/BOXSOLID.TCP @@ -0,0 +1,378 @@ + +#include +#include +#include +#include + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + BoxedSolid::TestClass() +{ +//ofstream testout("gene.dat",ios::app); //GY + Tell("Start BoxedSolid::TestClass()..\n"); + BoxedSolidTree tree; + BoxedSolidList list; + Point3D test_point; + + ExtentBox eb; + BoxedSolid* solids[TEST_CLASS]; + + BoxedSolid *list_ptr; + BoxedSolid *tree_ptr; + + // + //------------------------------------------------------------ + // Create a bunch of boxes to test, and add them into the tree + //------------------------------------------------------------ + // + int i; + for (i=0; iminX + solids[i]->maxX) * 0.5f; + test_point.y = (solids[i]->minY + solids[i]->maxY) * 0.5f; + test_point.z = (solids[i]->minZ + solids[i]->maxZ) * 0.5f; + + tree_ptr = tree.FindBoundingBoxContaining(test_point); + list_ptr = list.FindBoundingBoxContaining(test_point); + Test(tree_ptr == list_ptr); + } + + // + //--------------------------------------------------- + // Now test a bunch of random points against the tree + //--------------------------------------------------- + // + for (i=0; i +#pragma hdrstop + +#if !defined(BOXSOLID_HPP) +# include +#endif + +#if !defined(VECTOR3D_HPP) +# include +#endif + +//############################################################################# +//########################### BoxedSolidList ############################ +//############################################################################# + +enum { + X_Axis_Bit = 1, + Y_Axis_Bit = 2, + Z_Axis_Bit = 4 +}; + +enum { + Min_Side = 0x001, + Inside = 0x002, + Max_Side = 0x004, + Both_Sides = Min_Side|Max_Side, + Shift = 3, + X_Shift = 2 * Shift, + Min_X_Side = Min_Side << X_Shift, + Inside_X = Inside << X_Shift, + Max_X_Side = Max_Side << X_Shift, + X_Mask = Min_X_Side|Inside_X|Max_X_Side, + Y_Shift = Shift, + Min_Y_Side = Min_Side << Y_Shift, + Inside_Y = Inside << Y_Shift, + Max_Y_Side = Max_Side << Y_Shift, + Y_Mask = Min_Y_Side|Inside_Y|Max_Y_Side, + Z_Shift = 0, + Min_Z_Side = Min_Side << Z_Shift, + Inside_Z = Inside << Z_Shift, + Max_Z_Side = Max_Side << Z_Shift, + Z_Mask = Min_Z_Side|Inside_Z|Max_Z_Side +}; + +int + Legal_To_Fuse[BoxedSolid::SolidTypeCount]= +{ + X_Axis_Bit|Y_Axis_Bit|Z_Axis_Bit, 0, 0, 0, + X_Axis_Bit, Z_Axis_Bit, X_Axis_Bit, Z_Axis_Bit, + X_Axis_Bit, Z_Axis_Bit, X_Axis_Bit, Z_Axis_Bit, + Y_Axis_Bit, Y_Axis_Bit, Y_Axis_Bit, Y_Axis_Bit, + X_Axis_Bit, Y_Axis_Bit, Z_Axis_Bit +}; + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + BoundingBoxList::Reduce() +{ + Check(this); + + BoundingBoxListNode + *i, *j, *previous; + + // + //-------------------------------------------------------------------------- + // Fuse the collision slices together into the largest possible chunks based + // upon the collision model of each of the involved slices. Repeat until no + // fusings were made in the last pass or only one collision slice remains + //-------------------------------------------------------------------------- + // + Logical again = True; + while (again) + { + again = False; + + // + //-------------------------------------------------------------------- + // Check each collision slice against the remaining slices in the list + //-------------------------------------------------------------------- + // + for (i=root; i; i = i->previousNode) + { + Check(i); + previous = i; + j = i->previousNode; + while (j) + { + Check(j); + // + //------------------------------------------------------------- + // If the model types are different, these two slices cannot be + // fused + //------------------------------------------------------------- + // + BoundingBox *first = i->boundingBox; + BoundingBox *second = j->boundingBox; + + // + //---------------------------------------------------- + // Make sure that the faces on two sets of sides match + //---------------------------------------------------- + // + int matches = 0; + int face = -1; + for (int side=0; side<6; side += 2) + { + if ( + (*first)[side] == (*second)[side] + && (*first)[side+1] == (*second)[side+1] + ) + { + ++matches; + } + else if (face<0) + { + face = side; + } + } + if (matches != 2) + { +Next_Solid: + previous = j; + j = j->previousNode; + continue; + } + + // + //---------------------------------------------------------------- + // Check to make sure that the two solids have an opposing face in + // common, which will allow the solids to be fused + //---------------------------------------------------------------- + // + if ( + (*first)[face] != (*second)[face+1] + && (*first)[face+1] != (*second)[face] + ) + { + goto Next_Solid; + } + + // + //---------------------------------------------------- + // Find the face to fuse, and fuse the blocks together + //---------------------------------------------------- + // + if ((*first)[face+1] == (*second)[face]) + { + ++face; + } + (*first)[face] = (*second)[face]; + + // + //----------------------------------------------- + // Erase the second solid from the collision list + //----------------------------------------------- + // + --nodeCount; + if (previous) + { + previous->previousNode = j->previousNode; + Unregister_Object(j); + delete(j); + j = previous->previousNode; + } + else + { + root = j->previousNode; + Unregister_Object(j); + delete(j); + j = root; + } + again = True; + } + } + } +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + BoundingBoxList::SortForTree() +{ + Check(this); + + int + i, j; + BoundingBoxListNode + *p, *q; + + // + //----------------------------------------------------------------------- + // Find out how many collision solids are in the list, and figure out the + // total extent box so that we can set the traversal order correctly + //----------------------------------------------------------------------- + // + ExtentBox map_extents; + map_extents.minX = 65535.9999f; + map_extents.minY = 65535.9999f; + map_extents.minZ = 65535.9999f; + map_extents.maxX = -65535.9999f; + map_extents.maxY = -65535.9999f; + map_extents.maxZ = -65535.9999f; + for (p=root; p; p = p->previousNode) + { + Check(p); + if (p->boundingBox->minX < map_extents.minX) + { + map_extents.minX = p->boundingBox->minX; + } + if (p->boundingBox->maxX > map_extents.maxX) + { + map_extents.maxX = p->boundingBox->maxX; + } + + if (p->boundingBox->minY < map_extents.minY) + { + map_extents.minY = p->boundingBox->minY; + } + if (p->boundingBox->maxY > map_extents.maxY) + { + map_extents.maxY = p->boundingBox->maxY; + } + + if (p->boundingBox->minZ < map_extents.minZ) + { + map_extents.minZ = p->boundingBox->minZ; + } + if (p->boundingBox->maxZ > map_extents.maxZ) + { + map_extents.maxZ = p->boundingBox->maxZ; + } + } + if ( + map_extents.maxZ - map_extents.minZ + > map_extents.maxX - map_extents.minX + ) + { + isXMajorAxis = False; + } + + // + //---------------------------------------------------- + // Allocate a scoreboard and fill it with sorting info + //---------------------------------------------------- + // + Verify(!scoreBoard); + scoreBoard = new int[nodeCount * nodeCount]; + Register_Pointer(scoreBoard); + int *score = scoreBoard; + + boundingBoxIndex = new BoundingBox* [nodeCount]; + Register_Pointer(boundingBoxIndex); + + for (p=root,i=0; p; p = p->previousNode,++i) + { + Check(p); + BoundingBox *first = p->boundingBox; + boundingBoxIndex[i] = first; + for (q=root,j=0; q; q = q->previousNode,++j,++score) + { + + // + //------------------------------ + // Ignore scoring against itself + //------------------------------ + // + Check(q); + *score = 0; + if (p == q) + { + continue; + } + BoundingBox *second = q->boundingBox; + + // + //-------------------------------------------------------------------- + // Step through the three axes and set the flags showing how the + // second solid is split up by the first solid. Make sure that if the + // second solid completely covers the first that this inside bit is + // set correctly + //-------------------------------------------------------------------- + // + for (int axis = X_Axis; axis <= Z_Axis; --axis) + { + *score <<= Shift; + int face = axis << 1; + if ((*second)[face] < (*first)[face]) + { + *score |= Min_Side; + } + else if ((*second)[face] < (*first)[face+1]) + { + *score |= Inside; + } + if ((*second)[face+1] > (*first)[face+1]) + { + *score |= Max_Side; + } + else if ((*second)[face+1] > (*first)[face]) + { + *score |= Inside; + } + + if ((*score & Both_Sides) == Both_Sides) + { + *score |= Inside; + } + } + } + } + + // + //-------------------------------------------------------------------------- + // Create a new BoxedSolid list for results to go into, and a third in which + // to pass the active list + //-------------------------------------------------------------------------- + // + BoundingBoxList active; + active.root = root; + active.nodeCount = nodeCount; + root = NULL; + BoundingBoxTree tree_so_far; + + Sort( + active, + map_extents, + tree_so_far + ); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + BoundingBoxList::Sort( + BoundingBoxList &,//active, + ExtentBox &,//map_extents, + BoundingBoxTree &//tree_so_far + ) +{ +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + BoxedSolidList::Reduce() +{ + Check(this); + + BoundingBoxListNode + *i, *j, *previous; + + // + //-------------------------------------------------------------------------- + // Fuse the collision slices together into the largest possible chunks based + // upon the collision model of each of the involved slices. Repeat until no + // fusings were made in the last pass or only one collision slice remains + //-------------------------------------------------------------------------- + // + Logical again = True; + while (again) + { + again = False; + + // + //-------------------------------------------------------------------- + // Check each collision slice against the remaining slices in the list + //-------------------------------------------------------------------- + // + for (i=root; i; i = i->previousNode) + { + Check(i); + previous = i; + j = i->previousNode; + while (j) + { + Check(j); + // + //------------------------------------------------------------- + // If the model types are different, these two slices cannot be + // fused + //------------------------------------------------------------- + // + BoxedSolid *first = Cast_Object(BoxedSolid*, i->boundingBox); + BoxedSolid *second = Cast_Object(BoxedSolid*, j->boundingBox); + if (first->solidType != second->solidType) + { +Next_Solid: + previous = j; + j = j->previousNode; + continue; + } + + // + //---------------------------------------------------- + // Make sure that the faces on two sets of sides match + //---------------------------------------------------- + // + int matches = 0; + int face = -1; + for (int side=0; side<6; side += 2) + { + if ( + (*first)[side] == (*second)[side] + && (*first)[side+1] == (*second)[side+1] + ) + { + ++matches; + } + else if (face<0) + { + face = side; + } + } + if (matches != 2) + { + goto Next_Solid; + } + + // + //---------------------------------------------------------------- + // Check to make sure that the two solids have an opposing face in + // common, which will allow the solids to be fused + //---------------------------------------------------------------- + // + if ( + (*first)[face] != (*second)[face+1] + && (*first)[face+1] != (*second)[face] + ) + { + goto Next_Solid; + } + + // + //--------------------------------------------------------------- + // Make sure that this type of solid is legal to be fused in this + // direction + //--------------------------------------------------------------- + // + if (!(Legal_To_Fuse[first->solidType] & (face>>1))) + { + goto Next_Solid; + } + + // + //---------------------------------------------------- + // Find the face to fuse, and fuse the blocks together + //---------------------------------------------------- + // + if ((*first)[face+1] == (*second)[face]) + { + ++face; + } + (*first)[face] = (*second)[face]; + + // + //----------------------------------------------- + // Erase the second solid from the collision list + //----------------------------------------------- + // + if (previous) + { + previous->previousNode = j->previousNode; + Unregister_Object(j); + delete(j); + j = previous->previousNode; + } + else + { + root = j->previousNode; + Unregister_Object(j); + delete(j); + j = root; + } + again = True; + } + } + } +} + + diff --git a/CODE/RP/MUNGA/BOXSPHR.CPP b/CODE/RP/MUNGA/BOXSPHR.CPP new file mode 100644 index 0000000..64dce4f --- /dev/null +++ b/CODE/RP/MUNGA/BOXSPHR.CPP @@ -0,0 +1,260 @@ +//===========================================================================// +// File: boxsolid.cc // +// Project: MUNGA Brick: Spatializer Library // +// Contents: Implementation details of bounding-box collision subtypes // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 01/11/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 // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(BOXSOLID_HPP) +# include +#endif + +#if !defined(ORIGIN_HPP) +# include +#endif + +#if !defined(LINMTRX_HPP) +# include +#endif + +#if !defined(LINE_HPP) +# include +#endif + +//############################################################################# +//############################## BoxedSphere ############################ +//############################################################################# + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +BoxedSphere::BoxedSphere( + const ExtentBox &extents, + BoxedSolid::Material material, + Simulation *owner, + BoxedSolid *next_solid +): + BoxedSolid(extents, SphereType, material, owner, next_solid) +{ + Check_Pointer(this); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +BoxedSphere::~BoxedSphere() +{ + Check_Pointer(this); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + BoxedSphere::IntersectsBounded(const ExtentBox &extents) +{ + Check(this); + Check(&extents); + + Verify(minX <= extents.minX); + Verify(maxX >= extents.maxX); + Verify(minY <= extents.minY); + Verify(maxY >= extents.maxY); + Verify(minZ <= extents.minZ); + Verify(maxZ >= extents.maxZ); + + // + //---------------------------------------------- + // Find the centerpoint and radius of the sphere + //---------------------------------------------- + // + Point3D center; + center.x = (minX + maxX) * 0.5f; + center.y = (minY + maxY) * 0.5f; + center.z = (minZ + maxZ) * 0.5f; + Scalar radius = maxX - center.x; + + // + //-------------------------------------------------------------------------- + // Constrain the centerpoint of the sphere to be within the bounded extents. + // Then see if the constrained point is within the radius of the sphere. If + // so, it is an intersection + //-------------------------------------------------------------------------- + // + Point3D closest = center; + extents.Constrain(&closest); + closest -= center; + return radius*radius >= closest.LengthSquared(); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + BoxedSphere::ContainsBounded(const Point3D &point) +{ + Check(this); + Check(&point); + + Verify(minX <= point.x); + Verify(maxX >= point.x); + Verify(minY <= point.y); + Verify(maxY >= point.y); + Verify(minZ <= point.z); + Verify(maxZ >= point.z); + + // + //---------------------------------------------- + // Find the centerpoint and radius of the sphere + //---------------------------------------------- + // + Point3D center; + center.x = (minX + maxX) * 0.5f; + center.y = (minY + maxY) * 0.5f; + center.z = (minZ + maxZ) * 0.5f; + Scalar radius = maxX - center.x; + + // + //------------------------------------------------------------------------- + // translate the test point into the sphere's frame of reference and see if + // it is close enough + //------------------------------------------------------------------------- + // + center -= point; + return radius*radius >= center.LengthSquared(); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Scalar + BoxedSphere::FindDistanceBelowBounded(const Point3D &point) +{ + Check(this); + Check(&point); + + Verify(minX <= point.x); + Verify(maxX >= point.x); + Verify(minY <= point.y); + Verify(minZ <= point.z); + Verify(maxZ >= point.z); + + // + //---------------------------------------------- + // Find the centerpoint and radius of the sphere + //---------------------------------------------- + // + Point3D center; + center.x = (minX + maxX) * 0.5f; + center.y = (minY + maxY) * 0.5f; + center.z = (minZ + maxZ) * 0.5f; + Scalar radius = maxX - center.x; + + // + //----------------------------------------------------------------------- + // Convert the point to the coordinates of the sphere, putting the center + // point of the sphere at the origin. Note that we are subtracting the + // point from the center point as opposed to the normal way. This will + // result in both X and Y being negated, but since we are squaring them, + // this will not matter + //----------------------------------------------------------------------- + // + Scalar x = center.x - point.x; + Scalar z = center.z - point.z; + Scalar h = radius*radius - x*x - z*z; + if (h < SMALL) + { + return -1.0f; + } + + // + //------------------------------------------------------------------- + // If the point is in the XZ shadow of the sphere, then the height is + // determined by the height of the sphere at that point + //------------------------------------------------------------------- + // + Scalar height = point.y - (center.y + Sqrt(h)); + return Abs(height); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + BoxedSphere::HitByBounded( + Line *line, + Scalar enters, + Scalar leaves + ) +{ + Check(this); + Check(line); + + Verify(enters <= leaves); + Verify(leaves >= 0.0f); + + // + //---------------------------------------------- + // Find the centerpoint and radius of the sphere + //---------------------------------------------- + // + Point3D center; + center.x = (minX + maxX) * 0.5f; + center.y = (minY + maxY) * 0.5f; + center.z = (minZ + maxZ) * 0.5f; + Scalar radius = maxX - center.x; + + // + //------------------------------------------------------------------------- + // Find the point of closest approach to the center of the sphere, and make + // sure that it is within the boundaries of the sphere + //------------------------------------------------------------------------- + // + Scalar midlen = line->LengthToClosestPointTo(center); + Point3D closest; + line->Project(midlen, &closest); + closest -= center; + Scalar v = radius*radius - closest.LengthSquared(); + if (v < 0.0f) + { + return False; + } + + // + //--------------------------------------------------------------------- + // Find the closest possible length of ray traversal before hitting the + // sphere + //--------------------------------------------------------------------- + // + v = Sqrt(v); + Scalar enter = midlen - v; + if (enter > enters) + { + enters = enter; + } + Scalar leave = midlen + v; + if (leave < leaves) + { + leaves = leave; + } + + if (enters > leaves || enters > line->length || leaves < 0.0f) + { + return False; + } + + line->length = Max(enters, 0.0f); + return True; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + BoxedSphere::TestInstance() const +{ + return solidType == SphereType; +} diff --git a/CODE/RP/MUNGA/BOXTILE.CPP b/CODE/RP/MUNGA/BOXTILE.CPP new file mode 100644 index 0000000..19d560a --- /dev/null +++ b/CODE/RP/MUNGA/BOXTILE.CPP @@ -0,0 +1,672 @@ +//===========================================================================// +// File: boxsolid.cc // +// Project: MUNGA Brick: Spatializer Library // +// Contents: Implementation details of bounding-box collision subtypes // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 01/11/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 // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(BOXSOLID_HPP) +# include +#endif + +#if !defined(ORIGIN_HPP) +# include +#endif + +#if !defined(LINMTRX_HPP) +# include +#endif + +#if !defined(LINE_HPP) +# include +#endif + +#if !defined(PLANE_HPP) +# include +#endif + +#if !defined(VECTOR2D_HPP) +# include +#endif + +//############################################################################# +//######################### RightHandedTile ###################### +//############################################################################# + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +RightHandedTile::RightHandedTile( + const ExtentBox &extents, + BoxedSolid::Material material, + Simulation *owner, + BoxedSolid *next_solid, + Scalar *corners, + Type type +): + BoxedSolid(extents, type, material, owner, next_solid) +{ + Check_Pointer(this); + for (int i=0; i= extents.maxX); + Verify(minY <= extents.minY); + Verify(maxY >= extents.maxY); + Verify(minZ <= extents.minZ); + Verify(maxZ >= extents.maxZ); + + // + //------------------------------------------------------------------- + // See if the box hits the upper-right triangle anywhere on its plane + //------------------------------------------------------------------- + // + Point3D p0,p1,p2; + p0.x = maxX; + p0.y = cornerHeight[1]; + p0.z = minZ; + + p1.x = minX; + p1.y = cornerHeight[0]; + p1.z = minZ; + + p2.x = maxX; + p2.y = cornerHeight[3]; + p2.z = maxZ; + + Plane plane1(p0, p1, p2); + if (plane1.ContainsSomeOf(extents)) + { + // + //------------------------------------------------------------------- + // Make sure the XZ projections of the triangle and the box intersect + //------------------------------------------------------------------- + // + return True; + } + + // + //------------------------------------------------------------------ + // See if the box hits the lower-left triangle anywhere on its plane + //------------------------------------------------------------------ + // + p0.x = minX; + p0.y = cornerHeight[2]; + p0.z = maxZ; + + p1.x = maxX; + p1.y = cornerHeight[3]; + p1.z = maxZ; + + p2.x = minX; + p2.y = cornerHeight[0]; + p2.z = minZ; + + Plane plane2(p0, p1, p2); + if (plane2.ContainsSomeOf(extents)) + { + // + //------------------------------------------------------------------- + // Make sure the XZ projections of the triangle and the box intersect + //------------------------------------------------------------------- + // + return True; + } + return False; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + RightHandedTile::ContainsBounded(const Point3D &point) +{ + Check(this); + Check(&point); + + Verify(maxY >= point.y); + return FindDistanceBelowBounded(point) <= 0.0f; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Scalar + RightHandedTile::FindDistanceBelowBounded(const Point3D &point) +{ + Check(this); + Check(&point); + + Verify(minX <= point.x); + Verify(maxX >= point.x); + Verify(minY <= point.y); + Verify(minZ <= point.z); + Verify(maxZ >= point.z); + + // + //--------------------------------------------------- + // Figure out which triangle the point will reside in + //--------------------------------------------------- + // + Scalar rise = maxX - minX; + Scalar run = maxZ - minZ; + Verify(rise > SMALL); + Verify(run > SMALL); + + Scalar dx = point.x - minX; + Scalar dz = point.z - minZ; + + // + //----------------------------------------------------------------- + // Set up the appropriate triangle based upon which have it lies in + //----------------------------------------------------------------- + // + Point3D p0,p1,p2; + if (dx*run > dz*rise) + { + p0.x = maxX; + p0.y = cornerHeight[1]; + p0.z = minZ; + + p1.x = minX; + p1.y = cornerHeight[0]; + p1.z = minZ; + + p2.x = maxX; + p2.y = cornerHeight[3]; + p2.z = maxZ; + } + else + { + p0.x = minX; + p0.y = cornerHeight[2]; + p0.z = maxZ; + + p1.x = maxX; + p1.y = cornerHeight[3]; + p1.z = maxZ; + + p2.x = minX; + p2.y = cornerHeight[0]; + p2.z = minZ; + } + + // + //--------------------------------------------------------------------- + // Make a plane out of the triangle, and have the plane solve for the Y + // coordinate + //--------------------------------------------------------------------- + // + Plane plane(p0, p1, p2); + Verify(!Small_Enough(plane.normal.y)); + Scalar height = point.y - plane.CalculateY(point.x, point.z); + Check_Fpu(); + return height; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +static Scalar + LineHitsTriangle( + Line *line, + const Point3D &p0, + const Point3D &p1, + const Point3D &p2, + Scalar *cosine + ) +{ + // + //-------------------------------------------------------------------------- + // Make the plane out of the three corner points, and figure out how far the + // ray must travel to reach this plane. Try some trivial rejections: + // parallel lines, lines starting outside the halfspace heading away from + // the plane, and lines starting outside the halfspace and heading towards + // the plane but are too far away + //-------------------------------------------------------------------------- + // + Plane plane(p0, p1, p2); + Scalar length = line->DistanceTo(plane, cosine); + if ( + Small_Enough(*cosine) + || *cosine > 0.0f && length < 0.0f + || *cosine < 0.0f && length > line->length + ) + { + return -1.0f; + } + + // + //-------------------------------------------------------- + // Project the impact point and triangle unto the XZ plane + //-------------------------------------------------------- + // + Point3D impact; + line->Project(length, &impact); + Vector2DOf proj(impact.x - p0.x, impact.z - p0.z); + Scalar x = p1.x - p0.x; + Scalar z = p2.z - p0.z; + + // + //------------------------------------------------------------------------- + // Make sure that the area of the triangle made with the test point and the + // first leg is not negative or greater than the area of the triangle made + // by the two legs. The area of the triangle is half the cross product of + // the legs of that triangle + //------------------------------------------------------------------------- + // + Scalar area_ratio = z*x; + Verify(!Small_Enough(area_ratio)); + area_ratio = x*proj.y / area_ratio; + Check_Fpu(); + if (area_ratio >= 0.0f && area_ratio <= 1.0f) + { + // + //---------------------------------------------------------------------- + // The area ratio represents the height of the test triangle relative to + // the given triangle. One edge of the value is represented by + // projecting the second leg a percentage equal to the ratio. The bounds + // of its variance is 1-area_ratio * the first leg of the triangle + //---------------------------------------------------------------------- + // + Scalar span = proj.x / x; + Check_Fpu(); + if (span >= 0.0f && span+area_ratio <= 1.0f) + { + return length; + } + } + return -1.0f; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + RightHandedTile::HitByBounded( + Line *line, + Scalar enters, + Scalar leaves + ) +{ + Check(this); + Check(line); + + Verify(enters <= leaves); + Verify(leaves >= 0.0f); + + // + //---------------------------------------------- + // See if the line hits the upper-right triangle + //---------------------------------------------- + // + Point3D p0,p1,p2; + p0.x = maxX; + p0.y = cornerHeight[1]; + p0.z = minZ; + + p1.x = minX; + p1.y = cornerHeight[0]; + p1.z = minZ; + + p2.x = maxX; + p2.y = cornerHeight[3]; + p2.z = maxZ; + + Scalar cosine; + Scalar length = LineHitsTriangle(line, p0, p1, p2, &cosine); + + // + //-------------------------------------------------------------- + // If we are entering the the plane, set the new entering length + //-------------------------------------------------------------- + // + if (length >= 0.0f && cosine < 0.0f && length >= enters && length <= leaves) + { + line->length = length; + return True; + } + + // + //--------------------------------------------- + // See if the line hits the lower left triangle + //--------------------------------------------- + // + p0.x = minX; + p0.y = cornerHeight[2]; + p0.z = maxZ; + + p1.x = maxX; + p1.y = cornerHeight[3]; + p1.z = maxZ; + + p2.x = minX; + p2.y = cornerHeight[0]; + p2.z = minZ; + + length = LineHitsTriangle(line, p0, p1, p2, &cosine); + + // + //-------------------------------------------------------------- + // If we are entering the the plane, set the new entering length + //-------------------------------------------------------------- + // + if (length >= 0.0f && cosine < 0.0f && length >= enters && length <= leaves) + { + line->length = length; + return True; + } + + // + //------------------------------------------- + // Neither triangle was entered, so we missed + //------------------------------------------- + // + return False; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + RightHandedTile::TestInstance() const +{ + return solidType == RightHandedTileType; +} + +//############################################################################# +//######################### LeftHandedTile ###################### +//############################################################################# + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +LeftHandedTile::LeftHandedTile( + const ExtentBox &extents, + BoxedSolid::Material material, + Simulation *owner, + BoxedSolid *next_solid, + Scalar *corners +): + RightHandedTile( + extents, + material, + owner, + next_solid, + corners, + LeftHandedTileType + ) +{ + Check_Pointer(this); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +LeftHandedTile::~LeftHandedTile() +{ + Check_Pointer(this); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + LeftHandedTile::IntersectsBounded(const ExtentBox &extents) +{ + Check(this); + Check(&extents); + + Verify(minX <= extents.minX); + Verify(maxX >= extents.maxX); + Verify(minY <= extents.minY); + Verify(maxY >= extents.maxY); + Verify(minZ <= extents.minZ); + Verify(maxZ >= extents.maxZ); + + // + //------------------------------------------------------------------- + // See if the box hits the upper-left triangle anywhere on its plane + //------------------------------------------------------------------- + // + Point3D p0,p1,p2; + p0.x = maxX; + p0.y = cornerHeight[2]; + p0.z = minZ; + + p1.x = minX; + p1.y = cornerHeight[1]; + p1.z = minZ; + + p2.x = maxX; + p2.y = cornerHeight[0]; + p2.z = maxZ; + + Plane plane1(p0, p1, p2); + if (plane1.ContainsSomeOf(extents)) + { + // + //------------------------------------------------------------------- + // Make sure the XZ projections of the triangle and the box intersect + //------------------------------------------------------------------- + // + return True; + } + + // + //------------------------------------------------------------------ + // See if the box hits the lower-right triangle anywhere on its plane + //------------------------------------------------------------------ + // + p0.x = minX; + p0.y = cornerHeight[1]; + p0.z = maxZ; + + p1.x = maxX; + p1.y = cornerHeight[2]; + p1.z = maxZ; + + p2.x = minX; + p2.y = cornerHeight[3]; + p2.z = minZ; + + Plane plane2(p0, p1, p2); + if (plane2.ContainsSomeOf(extents)) + { + // + //------------------------------------------------------------------- + // Make sure the XZ projections of the triangle and the box intersect + //------------------------------------------------------------------- + // + return True; + } + return False; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Scalar + LeftHandedTile::FindDistanceBelowBounded(const Point3D &point) +{ + Check(this); + Check(&point); + + Verify(minX <= point.x); + Verify(maxX >= point.x); + Verify(minY <= point.y); + Verify(minZ <= point.z); + Verify(maxZ >= point.z); + + // + //--------------------------------------------------- + // Figure out which triangle the point will reside in + //--------------------------------------------------- + // + Scalar rise = maxX - minX; + Scalar run = maxZ - minZ; + Verify(rise > SMALL); + Verify(run > SMALL); + + Scalar dx = point.x - minX; // HACK - needs to be set up for other diagonal + Scalar dz = point.z - minZ; + + // + //----------------------------------------------------------------- + // Set up the appropriate triangle based upon which have it lies in + //----------------------------------------------------------------- + // + Point3D p0,p1,p2; + if (dx*run > dz*rise) + { + p0.x = maxX; + p0.y = cornerHeight[1]; + p0.z = minZ; + + p1.x = minX; + p1.y = cornerHeight[0]; + p1.z = minZ; + + p2.x = maxX; + p2.y = cornerHeight[3]; + p2.z = maxZ; + } + else + { + p0.x = minX; + p0.y = cornerHeight[2]; + p0.z = maxZ; + + p1.x = maxX; + p1.y = cornerHeight[3]; + p1.z = maxZ; + + p2.x = minX; + p2.y = cornerHeight[0]; + p2.z = minZ; + } + + // + //--------------------------------------------------------------------- + // Make a plane out of the triangle, and have the plane solve for the Y + // coordinate + //--------------------------------------------------------------------- + // + Plane plane(p0, p1, p2); + Verify(!Small_Enough(plane.normal.y)); + Scalar height = point.y - plane.CalculateY(point.x, point.z); + Check_Fpu(); + return height; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + LeftHandedTile::HitByBounded( + Line *line, + Scalar enters, + Scalar leaves + ) +{ + Check(this); + Check(line); + + Verify(enters <= leaves); + Verify(leaves >= 0.0f); + + // + //---------------------------------------------- + // See if the line hits the upper-right triangle + //---------------------------------------------- + // + Point3D p0,p1,p2; + p0.x = maxX; + p0.y = cornerHeight[2]; + p0.z = minZ; + + p1.x = minX; + p1.y = cornerHeight[1]; + p1.z = minZ; + + p2.x = maxX; + p2.y = cornerHeight[0]; + p2.z = maxZ; + + Scalar cosine; + Scalar length = LineHitsTriangle(line, p0, p1, p2, &cosine); + + // + //-------------------------------------------------------------- + // If we are entering the the plane, set the new entering length + //-------------------------------------------------------------- + // + if (length >= 0.0f && cosine < 0.0f && length >= enters && length <= leaves) + { + line->length = length; + return True; + } + + // + //--------------------------------------------- + // See if the line hits the lower left triangle + //--------------------------------------------- + // + p0.x = minX; + p0.y = cornerHeight[1]; + p0.z = maxZ; + + p1.x = maxX; + p1.y = cornerHeight[2]; + p1.z = maxZ; + + p2.x = minX; + p2.y = cornerHeight[3]; + p2.z = minZ; + + length = LineHitsTriangle(line, p0, p1, p2, &cosine); + + // + //-------------------------------------------------------------- + // If we are entering the the plane, set the new entering length + //-------------------------------------------------------------- + // + if (length >= 0.0f && cosine < 0.0f && length >= enters && length <= leaves) + { + line->length = length; + return True; + } + + // + //------------------------------------------- + // Neither triangle was entered, so we missed + //------------------------------------------- + // + return False; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + LeftHandedTile::TestInstance() const +{ + return solidType == LeftHandedTileType; +} diff --git a/CODE/RP/MUNGA/BOXTREE.CPP b/CODE/RP/MUNGA/BOXTREE.CPP new file mode 100644 index 0000000..83039c0 --- /dev/null +++ b/CODE/RP/MUNGA/BOXTREE.CPP @@ -0,0 +1,1365 @@ +//===========================================================================// +// File: boxtree.cc // +// Project: MUNGA Brick: Spatializer Library // +// Contents: Implementation details 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 // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(BOXTREE_HPP) +# include +#endif + +#if !defined(POINT3D_HPP) +# include +#endif + +#if !defined(LINE_HPP) +# include +#endif + +//############################################################################# +//######################### BoundingBoxTreeNode ######################### +//############################################################################# + +MemoryBlock + BoundingBoxTreeNode::AllocatedMemory( + sizeof(BoundingBoxTreeNode), + 500, + 50, + "BoundingBoxTree Nodes" + ); + +int + BoundingBoxTreeNode::TraversalOrder[6]={4,5,0,1,2,3}; + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + BoundingBoxTreeNode::SetTraversalOrder( + int first, + int second, + int third + ) +{ + Verify((unsigned)first <= Z_Axis && first != second); + Verify((unsigned)second <= Z_Axis && second != third); + Verify((unsigned)third <= Z_Axis && third != first); + + TraversalOrder[0] = first << 1; + TraversalOrder[1] = TraversalOrder[0] + 1; + TraversalOrder[2] = second << 1; + TraversalOrder[3] = TraversalOrder[2] + 1; + TraversalOrder[4] = third << 1; + TraversalOrder[5] = TraversalOrder[4] + 1; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +BoundingBoxTreeNode::BoundingBoxTreeNode( + BoundingBox *volume, + const ExtentBox &extents +) +{ + Check_Pointer(this); + Check(&extents); + + nodeExtents = extents; + staticContents = volume; + innerNode = NULL; + for (int i=0; i nodeExtents[face]) + { + is_clipped = clipped_box[opp_face] < nodeExtents[face]; + } + else + { + continue; + } + } + + // + //------------------------------------------------- + // Handle testing the minimum value side of the box + //------------------------------------------------- + // + else + { + if (clipped_box[face] < nodeExtents[face]) + { + is_clipped = clipped_box[opp_face] > nodeExtents[face]; + } + else + { + continue; + } + } + + // + //--------------------------------------------------------------------- + // If the new box is to be clipped, save the old value for the opposite + // face and replace it with this space's bounding face + //--------------------------------------------------------------------- + // + if (is_clipped) + { + save = clipped_box[opp_face]; + clipped_box[opp_face] = nodeExtents[face]; + } + + // + //----------------------------------------------------------------------- + // Make sure that we are not registering an empty slice of the new volume + //----------------------------------------------------------------------- + // + if (volume->IntersectsBounded(clipped_box)) + { + + // + //-------------------------------------------------------------------- + // If no spaces have been defined within the facing voxel, construct + // a new one out of the clipped box, otherwise call this routine again + // with the given voxel and the clipped box + //-------------------------------------------------------------------- + // + if (!nodeBranches[face]) + { + nodeBranches[face] = + new BoundingBoxTreeNode(volume, clipped_box); + Register_Object(nodeBranches[face]); + } + else + { + Check(nodeBranches[face]); + nodeBranches[face]->Add(volume, clipped_box); + } + } + + // + //--------------------------------------------------------------------- + // If no clipping was necessary for this voxel, then no portion of + // the box remains to be tested, so abort the loop. Otherwise, restore + // the opposing face of the new box, and clip the newly created + // voxel out of the new box + //--------------------------------------------------------------------- + // + if (!is_clipped) + return; + clipped_box[opp_face] = save; + clipped_box[face] = nodeExtents[face]; + } + + //----------------------------------------------------------------------- + // Make sure that we are not registering an empty slice of the new volume + //----------------------------------------------------------------------- + // + if (volume->IntersectsBounded(clipped_box)) + { + + // + //---------------------------------------------------------------------- + // The remaining portion of the box is inside our current space, so link + // it there + //---------------------------------------------------------------------- + // + if (!innerNode) + { + innerNode = new BoundingBoxTreeNode(volume, clipped_box); + Register_Object(innerNode); + } + else + { + Check(innerNode); + innerNode->Add(volume, clipped_box); + } + } +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + BoundingBoxTreeNode::Remove( + BoundingBox *volume, + const ExtentBox &extents + ) +{ + Check(this); + Check(volume); + Check(&extents); + + // + //---------------------------------------------------------------------- + // If this node contains the desired volume, immediately NULL it out and + // return + //---------------------------------------------------------------------- + // + if (staticContents == volume) + { + staticContents = NULL; + return; + } + + // + //--------------------------------------------------- + // Make our copy of the new box for clipping purposes + //--------------------------------------------------- + // + ExtentBox clipped_box(extents); + + // + //------------------------------------------------------------------------ + // Check along each of the six faces, separately clipping off elements of + // the new box which do not lie within this voxel + //------------------------------------------------------------------------ + // + for (int i=0; i<6; ++i) + { + int + is_clipped; + Scalar + save; + + // + //------------------------------------------------------------------ + // Handle testing the maximum value side of the box. Make sure that + // volumes actually extend into the current voxel before they are + // clipped, preventing insertion of zero-thickness voxels + //------------------------------------------------------------------ + // + int face = TraversalOrder[i]; + int opp_face = face^1; + if (face&1) + { + if (clipped_box[face] > nodeExtents[face]) + { + is_clipped = clipped_box[opp_face] < nodeExtents[face]; + } + else + { + continue; + } + } + + // + //------------------------------------------------- + // Handle testing the minimum value side of the box + //------------------------------------------------- + // + else + { + if (clipped_box[face] < nodeExtents[face]) + { + is_clipped = clipped_box[opp_face] > nodeExtents[face]; + } + else + { + continue; + } + } + + // + //--------------------------------------------------------------------- + // If the new box is to be clipped, save the old value for the opposite + // face and replace it with this space's bounding face + //--------------------------------------------------------------------- + // + if (is_clipped) + { + save = clipped_box[opp_face]; + clipped_box[opp_face] = nodeExtents[face]; + } + + // + //--------------------------------------------------------------------- + // Because the volume has already been added, branches must exist along + // all faces it gets clipped by unless it was an empty slice + //--------------------------------------------------------------------- + // + if (volume->IntersectsBounded(clipped_box)) + { + Check(nodeBranches[face]); + nodeBranches[face]->Remove(volume, clipped_box); + } + + // + //--------------------------------------------------------------------- + // If no clipping was necessary for this voxel, then no portion of + // the box remains to be tested, so abort the loop. Otherwise, restore + // the opposing face of the new box, and clip the newly created + // voxel out of the new box + //--------------------------------------------------------------------- + // + if (!is_clipped) + return; + clipped_box[opp_face] = save; + clipped_box[face] = nodeExtents[face]; + } + + // + //-------------------------------------------------------------------------- + // If we are not dealing with an empty slice of the volume, the remaining + // slice of the extents must have been entered as internal subspacing + //-------------------------------------------------------------------------- + // + if (volume->IntersectsBounded(clipped_box)) + { + Check(innerNode); + innerNode->Remove(volume, clipped_box); + } +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +BoundingBoxTreeNode* + BoundingBoxTreeNode::FindSmallestNodeContaining( + const ExtentBox &extents, + BoundingBoxTreeNode *parent + ) +{ + Check(&extents); + + // + //------------------------------------------------------------------------ + // Check along each of the six faces to see if this volume cuts any of the + // planes of the node, + //------------------------------------------------------------------------ + // + BoundingBoxTreeNode *branch = this; +Check_Node: + Check(branch); + for (int i=0; i<6; ++i) + { + // + //------------------------------------------------- + // Handle testing the maximum value side of the box + //------------------------------------------------- + // + int face = TraversalOrder[i]; + int opp_face = face^1; + if (face&1) + { + if (extents[face] > branch->nodeExtents[face]) + { + if (extents[opp_face] <= branch->nodeExtents[face]) + { + return (parent) ? parent : branch; + } + } + else + { + continue; + } + } + + // + //------------------------------------------------- + // Handle testing the minimum value side of the box + //------------------------------------------------- + // + else + { + if (extents[face] < branch->nodeExtents[face]) + { + if (extents[opp_face] >= branch->nodeExtents[face]) + { + return (parent) ? parent : branch; + } + } + else + { + continue; + } + } + + // + //---------------------------------------------------- + // If no branch exists, then this is the smallest node + //---------------------------------------------------- + // + if (!branch->nodeBranches[face]) + { + return (parent) ? parent : branch; + } + branch = branch->nodeBranches[face]; + Check(branch); + goto Check_Node; + } + + // + //--------------------------------------------------------- + // If no inner space exists, then this is the smallest node + //--------------------------------------------------------- + // + if (!branch->innerNode) + { + return branch; + } + + // + //------------------------------------------------------------------------- + // Once we cross into an innerspace, we have to modify the behaviour of the + // previous, as a volume which is enclosed by the node could itself enclose + // the innerspace node, meaning that the parent node should be reported as + // the smallest node + //------------------------------------------------------------------------- + // + parent = branch; + branch = branch->innerNode; + Check(branch); + goto Check_Node; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +BoundingBoxTreeNode* + BoundingBoxTreeNode::FindSmallestNodeContainingColumn( + const ExtentBox &extents + ) +{ + Check(&extents); + + // + //------------------------------------------------------------------------ + // Check along each of the six faces to see if this volume cuts any of the + // planes of the node, + //------------------------------------------------------------------------ + // + BoundingBoxTreeNode *branch = this; +Check_Node: + Check(this); + for (int i=0; i<4; ++i) + { + // + //------------------------------------------------- + // Handle testing the maximum value side of the box + //------------------------------------------------- + // + int face = TraversalOrder[i]; + int opp_face = face^1; + if (face&1) + { + if (extents[face] > branch->nodeExtents[face]) + { + if (extents[opp_face] <= branch->nodeExtents[face]) + { + return branch; + } + } + else + { + continue; + } + } + + // + //------------------------------------------------- + // Handle testing the minimum value side of the box + //------------------------------------------------- + // + else + { + if (extents[face] < branch->nodeExtents[face]) + { + if (extents[opp_face] >= branch->nodeExtents[face]) + { + return branch; + } + } + else + { + continue; + } + } + + // + //---------------------------------------------------- + // If no branch exists, then this is the smallest node + //---------------------------------------------------- + // + if (!branch->nodeBranches[face]) + { + return branch; + } + branch = branch->nodeBranches[face]; + Check(branch); + goto Check_Node; + } + + return branch; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +BoundingBox* + BoundingBoxTreeNode::FindBoundingBoxContaining( + const Point3D &point, + BoundingBox *parent + ) +{ + Check(this); + Check(&point); + + // + //---------------------------------------------------- + // Set the content pointer to point at this root voxel + //---------------------------------------------------- + // + BoundingBoxTreeNode + *branch = this; + + // + //------------------------------------------------------------------------- + // Keep checking our voxel branches until the point lies inside the current + // voxel + //------------------------------------------------------------------------- + // +Check_Node: + Check(branch); + for (int i=0; i<6; ++i) + { + // + //------------------------------------------------------- + // Keep looking if the point is not beyond a given extent + //------------------------------------------------------- + // + int face = TraversalOrder[i]; + int axis = face >> 1; + if (face&1) + { + if (point[axis] <= branch->nodeExtents[face]) + { + continue; + } + } + else if (point[axis] >= branch->nodeExtents[face]) + { + continue; + } + + // + //----------------------------------------------------------------------- + // The point lies in a side's subspace, so make sure that the subspace on + // that side exists. If not, no voxel will contain the point so return + // the parent. If a facing subspace exists, set the branch pointer to + // that subspace, then check to see where the point is relative to that + // subspace + //----------------------------------------------------------------------- + // + if (!branch->nodeBranches[face]) + { + return parent; + } + branch = branch->nodeBranches[face]; + goto Check_Node; + } + + // + //------------------------------------------------------------------------- + // Since we exited the loop, we have to check inside the node to see if it + // has been subspaced. If so, restart the function again on the internal + // subspace, using the contents of this subspace as the new parent solid. + // + // Note that negative space will not be correctly handled for cases where + // the space being carved out does not fully occupy the zones it is in such + // as with a cylinder + //------------------------------------------------------------------------- + // + if (branch->innerNode) + { + if (branch->staticContents) + { + Check(branch->staticContents); + if (branch->staticContents->ContainsBounded(point)) + { + parent = branch->staticContents; + } + } + else + { + parent = NULL; + } + branch = branch->innerNode; + goto Check_Node; + } + + // + //---------------------------------------------------------------------- + // If our content pointer is NULL, then this node is considered negative + // space, and thus empty + //---------------------------------------------------------------------- + // + if (!branch->staticContents) + { + return NULL; + } + + // + //-------------------------------------------------------------------------- + // We are pointing at a real solid, so if it does in fact contain our point, + // go ahead a return the volume, otherwise return our parent volume + //-------------------------------------------------------------------------- + // + Check(branch->staticContents); + if (branch->staticContents->ContainsBounded(point)) + { + parent = branch->staticContents; + } + return parent; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + BoundingBoxTreeNode::FindBoundingBoxesContaining( + BoundingBox *volume, + const ExtentBox &slice, + BoundingBoxCollisionList &list + ) +{ + Check(this); + Check(volume); + Check(&slice); + Check(&list); + Verify(list.collisionsLeft>0); + + // + //--------------------------------------------------------------------- + // Check along each of the six faces, to see if any portion of the test + // volume lies within any of the subspace partitions + //--------------------------------------------------------------------- + // + ExtentBox clipped_box = slice; + for (int i=0; i<6; ++i) + { + int + is_clipped; + Scalar + save; + + // + //----------------------------------------------------------------------- + // Figure out the opposing face, then check to see if we are testing + // against a maximum face. If so, check to see if some part of the test + // volume protrudes into the defined subspace. If it does, figure out if + // some portion of the test volume remains to be checked, otherwise keep + // checking faces + //----------------------------------------------------------------------- + // + int face = TraversalOrder[i]; + int opp_face = face ^ 1; + if (face&1) + { + if (clipped_box[face] > nodeExtents[face]) + { + is_clipped = clipped_box[opp_face] <= nodeExtents[face]; + } + else + { + continue; + } + } + + // + //----------------------------------------------------------------------- + // Otherwise, we are testing against a maximum face. If so, check to see + // if some part of the test volume protrudes into the defined subspace. + // If it does, figure out if some portion of the test volume remains to + // be checked, otherwise keep checking faces + //----------------------------------------------------------------------- + // + else + { + if (clipped_box[face] < nodeExtents[face]) + { + is_clipped = clipped_box[opp_face] >= nodeExtents[face]; + } + else + { + continue; + } + } + + // + //------------------------------------------------------------------- + // If the test volume needs to be clipped, save the old value for the + // opposite face and replace it with this space's bounding face + //------------------------------------------------------------------- + // + if (is_clipped) + { + save = clipped_box[opp_face]; + clipped_box[opp_face] = nodeExtents[face]; + } + + // + //---------------------------------------------------------------------- + // If a facing node exists, call this routine again with it and the part + // of the test volume we just trimmed off + //---------------------------------------------------------------------- + // + if (nodeBranches[face]) + { + Check(nodeBranches[face]); + nodeBranches[face]->FindBoundingBoxesContaining( + volume, + clipped_box, + list + ); + } + + // + //----------------------------------------------------------------------- + // If no clipping was necessary for this subspace, or we found no entries + // remain in the collision list, we are done checking, so just return + //----------------------------------------------------------------------- + // + if (!is_clipped || !list.collisionsLeft) + { + return; + } + + // + //------------------------------------------------------------------ + // Otherwise, restore the opposing face of the new box, and clip the + // already tested slice out of the test volume + //------------------------------------------------------------------ + // + clipped_box[opp_face] = save; + clipped_box[face] = nodeExtents[face]; + } + + // + //------------------------------------------------------------------------- + // If we exited the loop, then we have to check inside the node. If this + // node is not a hole, make sure that it collides against the slice. If it + // doesn't, don't override the parent setting, otherwise do override it + //------------------------------------------------------------------------- + // + BoundingBox *hit = NULL; + if (staticContents) + { + Check(staticContents); + if (staticContents->IntersectsBounded(clipped_box)) + { + hit = staticContents; + } + } + + // + //------------------------------------------------------------------ + // If the solid has been subspaced, have it check against collisions + //------------------------------------------------------------------ + // + if (innerNode) + { + Check(innerNode); + innerNode->FindBoundingBoxesContaining( + volume, + clipped_box, + list + ); + } + + // + //------------------------------------------------------------------------- + // Otherwise, if the volume this node points to is not a hole, go ahead and + // add it to the list + //------------------------------------------------------------------------- + // + if (hit && list.collisionsLeft) + { + Check(hit); + list.AddCollisionToList(hit, clipped_box); + } +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +BoundingBox* + BoundingBoxTreeNode::FindBoundingBoxUnder( + const Point3D &point, + Scalar* height + ) +{ + Check(this); + Check(&point); + Check_Pointer(height); + Verify((TraversalOrder[4]>>1) == Y_Axis) + + BoundingBoxTreeNode *branch = this; + BoundingBox *floor; + + // + //-------------------------------------------------------------------------- + // Check along each of the faces to see if the point lies within any of + // these subspaces. Note the change in the comparison resulting in only the + // first four coordinates (for X and Z) being checked, as the Y coordinate + // needs special treatment + //-------------------------------------------------------------------------- + // +Find_Column: + Check(branch); + for (int i=0; i<4; ++i) + { + int face = TraversalOrder[i]; + int axis = face >> 1; + if (face&1) + { + if (point[axis] <= branch->nodeExtents[face]) + { + continue; + } + } + else if (point[axis] >= branch->nodeExtents[face]) + { + continue; + } + + // + //--------------------------------------------------------------------- + // If a facing subspace exists, start this routine again with the given + // subspace and the point. If it doesn't exist, nothing will be hit + //--------------------------------------------------------------------- + // + if (branch->nodeBranches[face]) + { + branch = branch->nodeBranches[face]; + goto Find_Column; + } + else + { + *height = -1.0f; + return NULL; + } + } + + // + //------------------------------------------------------------------------- + // We now know that the object has a presence along the line defined by the + // projection of the point unto the XZ plane. If the point lies above the + // object, and other objects exist in the maxZ subspace, and they are able + // to determine the height, return the height they returned + //------------------------------------------------------------------------- + // + if (point.y > branch->nodeExtents.maxY && branch->nodeBranches[3]) + { + Check(branch->nodeBranches[3]); + floor = branch->nodeBranches[3]->FindBoundingBoxUnder(point, height); + if (floor) + { + return floor; + } + } + + // + //-------------------------------------------------------------------------- + // Handle processing the ray internal to this solid if we need to project + // the ray into our solid. If we are negative space, allow the ray to + // project through the node unhindered. + // + // Note that this code will not properly handle going through negative space + // if the negative space does not completely bore through solids + //-------------------------------------------------------------------------- + // + if (point.y >= branch->nodeExtents.minY) + { + if (branch->staticContents) + { + Check(branch->staticContents); + floor = branch->staticContents; + *height = branch->staticContents->FindDistanceBelowBounded(point); + if (*height == -1.0f || point.y - *height < branch->nodeExtents.minY) + { + goto Missed_Us; + } + } + else + { +Missed_Us: + floor = NULL; + *height = -1.0f; + } + + // + //----------------------------------------------------------------------- + // If there is internal space defined, we will rely upon it to return the + // proper value if it supersedes this node's height value + //----------------------------------------------------------------------- + // + if (branch->innerNode) + { + Check(branch->innerNode); + Scalar height_2; + BoundingBox *floor_2; + floor_2 = branch->innerNode->FindBoundingBoxUnder(point, &height_2); + if (floor_2 && (height_2 < *height || !floor)) + { + *height = height_2; + floor = floor_2; + } + } + + // + //-------------------------------------------------- + // If something was struck, return that as the floor + //-------------------------------------------------- + // + if (floor) + { + return floor; + } + } + + // + //-------------------------------------------------------------------------- + // We now know that the projection went through our bounding box without + // intersecting our solid. If any objects exist in our Min_Z subspace, have + // them try and return the height + //-------------------------------------------------------------------------- + // + if (branch->nodeBranches[2]) + { + Check(branch->nodeBranches[2]); + return branch->nodeBranches[2]->FindBoundingBoxUnder(point, height); + } + + // + //-------------------------------------------------------------- + // Since there is nothing below this bounding box, return no hit + //-------------------------------------------------------------- + // + else + { + *height = -1.0f; + return NULL; + } +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +BoundingBox* + BoundingBoxTreeNode::FindBoundingBoxHitBy(Line *line) +{ + Check(this); + Check(line); + + int + test_queue[7]; + Scalar + enter = 0.0f, + leave = 0.0f, + perpendicular, + drift, + distance; + BoundingBox + *result; + + // + //-------------------- + // Set up for the test + //-------------------- + // + int first = 0; + int last = 6; + Logical entered = False; + Logical left = False; + int i; + for (i=0; i<6; ++i) + { + // + //-------------------------------------------------------------------- + // Figure out what axis we are dealing with, then based upon the + // direction of the face, find out the distance from the origin to the + // place against the normal, and find out how fast the perpendicular + // distance changes with a unit movement along the line + //-------------------------------------------------------------------- + // + int face = TraversalOrder[i]; + int axis = face >> 1; + if (face&1) + { + perpendicular = line->origin[axis] - nodeExtents[face]; + drift = line->direction[axis]; + } + else + { + perpendicular = nodeExtents[face] - line->origin[axis]; + drift = -line->direction[axis]; + } + + // + //---------------------------------------------------------------------- + // If the line is parallel to the face, figure out whether or not the + // line origin lies within the face's half-space. If not, put it in the + // list and abort the loop + //---------------------------------------------------------------------- + // + if (Small_Enough(drift)) + { + if (perpendicular > 0.0f) + { + if (nodeBranches[face]) + { + test_queue[first++] = face; + } + break; + } + else + { + continue; + } + } + + // + //-------------------------------------------------------------------- + // If the drift is towards the plane's halfspace, this plane is one of + // the one through which the line could enter the node + //-------------------------------------------------------------------- + // + distance = -perpendicular / drift; + if (drift < 0.0f) + { + if (!entered) + { + entered = True; + enter = distance; + } + else if (distance > enter) + { + enter = distance; + } + + // + //-------------------------------------------------------------------- + // Queue up the node branch if the origin lies outside of this plane's + // halfspace. If the line cannot reach the plane, abort any more + // testing + //-------------------------------------------------------------------- + // + if (perpendicular >= 0.0f) + { + if (nodeBranches[face]) + { + test_queue[first++] = face; + } + if (distance > line->length || left && enter > leave) + { + break; + } + } + } + + // + //-------------------------------------------------------------------- + // If the drift is towards the plane's halfspace, this plane is one of + // the one through which the line could enter the node + //-------------------------------------------------------------------- + // + else + { + if (!left) + { + left = True; + leave = distance; + } + else if (distance < leave) + { + leave = distance; + } + + // + //-------------------------------------------------------------------- + // Queue up the node branch if the origin lies outside of this plane's + // halfspace, and stop further testing. If the origin is inside the + // halfspace, register this branch if the line will reach the plane + //-------------------------------------------------------------------- + // + if (perpendicular >= 0.0f) + { + if (nodeBranches[face]) + { + test_queue[last--] = face; + } + break; + } + if (distance <= line->length) + { + if (nodeBranches[face]) + { + test_queue[last--] = face; + } + } + if (entered && leave < enter) + { + break; + } + } + } + + // + //------------------------------------------------------------------------- + // If the loop exited normally, check to see if the bounding box was struck + // by the ray. If it was, then the interior of the voxel must be checked. + // We know that the box was hit if the farthest face opposing the ray + // direction is not farther than the nearest face not opposing the ray + //------------------------------------------------------------------------- + // + if (i == 6) + { + test_queue[last--] = 6; + } + + // + //------------------------------------------------------------------------- + // Step through the queue, checking in each of the identified regions to be + // processed first. If a hit is found in one of these, immediately return + // the result + //------------------------------------------------------------------------- + // + for (i=0; iFindBoundingBoxHitBy(line); + if (result) + { + Check(result); + return result; + } + } + + // + //----------------------------------- + // Process the interior if it's there + //----------------------------------- + // + if (last<6 && test_queue[last+1] == 6) + { + result = NULL; + if (!staticContents) + { + if (innerNode) + { + Check(innerNode); + result = innerNode->FindBoundingBoxHitBy(line); + } + } + else + { + Check(staticContents); + if (staticContents->HitByBounded(line, enter, leave)) + { + result = staticContents; + } + if (innerNode) + { + Check(innerNode); + BoundingBox + *result2 = innerNode->FindBoundingBoxHitBy(line); + if (result2) + { + result = result2; + } + } + } + + // + //--------------------------------------------------------------------- + // If the ray hit something, return the result, otherwise increment the + // last pointer so that we don't process this subspace again + //--------------------------------------------------------------------- + // + if (result) + { + Check(result); + return result; + } + last++; + } + + // + //------------------------------------------------------------------------- + // Step through the queue, checking in each of the identified regions to be + // processed last. If a hit is found, immediately return the result + //------------------------------------------------------------------------- + // + for (i=last+1; i<7; ++i) + { + Check(nodeBranches[test_queue[i]]); + result = nodeBranches[test_queue[i]]->FindBoundingBoxHitBy(line); + if (result) + { + Check(result); + return result; + } + } + + // + //---------------------------------------------------------- + // The ray hit nothing in this voxel, so return the sentinel + //---------------------------------------------------------- + // + return NULL; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + BoundingBoxTreeNode::TestInstance() const +{ + return True; +} + +//############################################################################# +//########################### BoundingBoxTree ########################### +//############################################################################# + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + BoundingBoxTree::Add( + BoundingBox* volume, + const ExtentBox &slice + ) +{ + Check(this); + Check(volume); + + if (!root) + { + root = new BoundingBoxTreeNode(volume, slice); + Register_Object(root); + } + else + { + Check(root); + root->Add(volume, slice); + } +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + BoundingBoxTree::EraseTree() +{ + if (root) + { + Unregister_Object(root); + delete root; + } + root = NULL; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +BoundingBox* + BoundingBoxTree::FindBoundingBoxHitBy(Line *line) +{ + Check(this); + Check(line); + Check(root); + + Point3D line_end; + line->FindEnd(&line_end); + ExtentBox line_volume(line->origin, line_end); + return + root->FindSmallestNodeContaining(line_volume, NULL) + ->FindBoundingBoxHitBy(line); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + BoundingBoxTree::TestInstance() const +{ + return True; +} + diff --git a/CODE/RP/MUNGA/BOXWEDGE.CPP b/CODE/RP/MUNGA/BOXWEDGE.CPP new file mode 100644 index 0000000..795b851 --- /dev/null +++ b/CODE/RP/MUNGA/BOXWEDGE.CPP @@ -0,0 +1,892 @@ +//===========================================================================// +// File: boxsolid.cc // +// Project: MUNGA Brick: Spatializer Library // +// Contents: Implementation details of bounding-box collision subtypes // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 01/11/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 // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(BOXSOLID_HPP) +# include +#endif + +#if !defined(PLANE_HPP) +# include +#endif + +extern Logical + BoxedRampContainsLine( + Line *line, + const Plane& plane, + Scalar enters, + Scalar leaves + ); + +//############################################################################# +//################# BoxedWedgeFacingNegativeZAndPositiveX ############### +//############################################################################# + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +BoxedWedgeFacingNegativeZAndPositiveX::BoxedWedgeFacingNegativeZAndPositiveX( + const ExtentBox &extents, + BoxedSolid::Material material, + Simulation *owner, + BoxedSolid *next_solid +): + BoxedSolid( + extents, + WedgeFacingNegativeZAndPositiveXType, + material, + owner, + next_solid + ) +{ + Check_Pointer(this); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +BoxedWedgeFacingNegativeZAndPositiveX::~BoxedWedgeFacingNegativeZAndPositiveX() +{ + Check_Pointer(this); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + BoxedWedgeFacingNegativeZAndPositiveX::IntersectsBounded( + const ExtentBox &extents + ) +{ + Check(this); + Check(&extents); + + Verify(minX <= extents.minX); + Verify(maxX >= extents.maxX); + Verify(minY <= extents.minY); + Verify(maxY >= extents.maxY); + Verify(minZ <= extents.minZ); + Verify(maxZ >= extents.maxZ); + + // + //---------------------------------------------------------------------- + // Calculate the "slope" of the ramp when the base of the ramp is placed + // at the origin + //---------------------------------------------------------------------- + // + Scalar run = maxX - minX; + Scalar rise = maxZ - minZ; + Verify(!Small_Enough(run)); + + // + //------------------------------------------------------------------- + // Calculate the "slope" of the line from the base of the ramp to the + // lower-north edge of the block + //------------------------------------------------------------------- + // + Scalar x = extents.maxX - minX; + Scalar z = extents.minZ - minZ; + + // + //------------------------------------------------------------------------ + // If the slope rise/run is more positive than z/x slope, then the extent + // box of the disk has clipped the ramp. Note that rise/run >= z/x yields + // rise*x >= z*run, which avoids any divide-by-0 errors. + //------------------------------------------------------------------------ + // + return x*rise >= z*run; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + BoxedWedgeFacingNegativeZAndPositiveX::ContainsBounded(const Point3D &point) +{ + Check(this); + Check(&point); + + Verify(minX <= point.x); + Verify(maxX >= point.x); + Verify(minY <= point.y); + Verify(maxY >= point.y); + Verify(minZ <= point.z); + Verify(maxZ >= point.z); + + // + //---------------------------------------------------------------------- + // Calculate the "slope" of the ramp when the base of the ramp is placed + // at the origin + //---------------------------------------------------------------------- + // + Scalar run = maxX - minX; + Scalar rise = maxZ - minZ; + Verify(!Small_Enough(run)); + + // + //------------------------------------------------------------------- + // Calculate the "slope" of the line from the base of the ramp to the + // lower-north edge of the block + //------------------------------------------------------------------- + // + Scalar x = point.x - minX; + Scalar z = point.z - minZ; + + // + //------------------------------------------------------------------------ + // If the slope rise/run is more positive than z/x slope, then the extent + // box of the disk has clipped the ramp. Note that rise/run >= z/x yields + // rise*x >= z*run, which avoids any divide-by-0 errors. + //------------------------------------------------------------------------ + // + return x*rise >= z*run; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Scalar + BoxedWedgeFacingNegativeZAndPositiveX::FindDistanceBelowBounded( + const Point3D &point + ) +{ + Check(this); + Check(&point); + + Verify(minX <= point.x); + Verify(maxX >= point.x); + Verify(minY <= point.y); + Verify(minZ <= point.z); + Verify(maxZ >= point.z); + + // + //------------------------------------------------------------------------ + // Calculate the "slope" of the ramp when the NW corner the ramp is placed + // at the origin + //------------------------------------------------------------------------ + // + Scalar run = maxX - minX; + Scalar rise = maxZ - minZ; + Verify(!Small_Enough(run)); + + // + //------------------------------------------------------------------- + // Calculate the "slope" of the line from the base of the ramp to the + // lower-north edge of the block + //------------------------------------------------------------------- + // + Scalar x = point.x - minX; + Scalar z = point.z - minZ; + + // + //------------------------------------------------------------------------ + // If the slope rise/run is more positive than z/x slope, then the extent + // box of the disk has clipped the ramp. Note that rise/run >= z/x yields + // rise*x >= z*run, which avoids any divide-by-0 errors. + //------------------------------------------------------------------------ + // + if (x*rise >= z*run) + { + x = point.y - maxY; + return Max(x,0.0f); + } + return -1.0f; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + BoxedWedgeFacingNegativeZAndPositiveX::HitByBounded( + Line *line, + Scalar enters, + Scalar leaves + ) +{ + Plane + ramp; + + ramp.normal.x = minZ - maxZ; + ramp.normal.y = 0.0f; + ramp.normal.z = maxX - minX; + + // + //----------------------------- + // Scale the vector to a normal + //----------------------------- + // + Scalar temp = ramp.normal.x*ramp.normal.x + ramp.normal.z*ramp.normal.z; + Verify(!Small_Enough(temp)); + temp = Sqrt(temp); + ramp.normal.x /= temp; + ramp.normal.z /= temp; + ramp.offset = maxX*ramp.normal.x + maxZ*ramp.normal.z; + + // + //--------------------------------------------------------------------- + // Now that we have added a new plane into the definition of the convex + // polyhedron, call a common ramp line collider + //--------------------------------------------------------------------- + // + return BoxedRampContainsLine(line, ramp, enters, leaves); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + BoxedWedgeFacingNegativeZAndPositiveX::TestInstance() const +{ + return solidType == WedgeFacingNegativeZAndPositiveXType; +} + +//############################################################################# +//################# BoxedWedgeFacingPositiveZAndNegativeX ############### +//############################################################################# + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +BoxedWedgeFacingPositiveZAndNegativeX::BoxedWedgeFacingPositiveZAndNegativeX( + const ExtentBox &extents, + BoxedSolid::Material material, + Simulation *owner, + BoxedSolid *next_solid +): + BoxedSolid( + extents, + WedgeFacingPositiveZAndNegativeXType, + material, + owner, + next_solid + ) +{ + Check_Pointer(this); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +BoxedWedgeFacingPositiveZAndNegativeX::~BoxedWedgeFacingPositiveZAndNegativeX() +{ + Check_Pointer(this); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + BoxedWedgeFacingPositiveZAndNegativeX::IntersectsBounded( + const ExtentBox &extents + ) +{ + Check(this); + Check(&extents); + + Verify(minX <= extents.minX); + Verify(maxX >= extents.maxX); + Verify(minY <= extents.minY); + Verify(maxY >= extents.maxY); + Verify(minZ <= extents.minZ); + Verify(maxZ >= extents.maxZ); + + // + //---------------------------------------------------------------------- + // Calculate the "slope" of the ramp when the base of the ramp is placed + // at the origin + //---------------------------------------------------------------------- + // + Scalar run = minX - maxX; + Scalar rise = minZ - maxZ; + Verify(!Small_Enough(run)); + + // + //------------------------------------------------------------------- + // Calculate the "slope" of the line from the base of the ramp to the + // lower-north edge of the block + //------------------------------------------------------------------- + // + Scalar x = extents.minX - maxX; + Scalar z = extents.maxZ - maxZ; + + // + //------------------------------------------------------------------------ + // If the slope rise/run is more positive than z/x slope, then the extent + // box of the disk has clipped the ramp. Note that rise/run >= z/x yields + // rise*x >= z*run, which avoids any divide-by-0 errors. + //------------------------------------------------------------------------ + // + return x*rise >= z*run; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + BoxedWedgeFacingPositiveZAndNegativeX::ContainsBounded(const Point3D &point) +{ + Check(this); + Check(&point); + + Verify(minX <= point.x); + Verify(maxX >= point.x); + Verify(minY <= point.y); + Verify(maxY >= point.y); + Verify(minZ <= point.z); + Verify(maxZ >= point.z); + + // + //---------------------------------------------------------------------- + // Calculate the "slope" of the ramp when the base of the ramp is placed + // at the origin + //---------------------------------------------------------------------- + // + Scalar run = minX - maxX; + Scalar rise = minZ - maxZ; + Verify(!Small_Enough(run)); + + // + //------------------------------------------------------------------- + // Calculate the "slope" of the line from the base of the ramp to the + // lower-north edge of the block + //------------------------------------------------------------------- + // + Scalar x = point.x - maxX; + Scalar z = point.z - maxZ; + + // + //------------------------------------------------------------------------ + // If the slope rise/run is more positive than z/x slope, then the extent + // box of the disk has clipped the ramp. Note that rise/run >= z/x yields + // rise*x >= z*run, which avoids any divide-by-0 errors. + //------------------------------------------------------------------------ + // + return x*rise >= z*run; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Scalar + BoxedWedgeFacingPositiveZAndNegativeX::FindDistanceBelowBounded( + const Point3D &point + ) +{ + Check(this); + Check(&point); + + Verify(minX <= point.x); + Verify(maxX >= point.x); + Verify(minY <= point.y); + Verify(minZ <= point.z); + Verify(maxZ >= point.z); + + // + //------------------------------------------------------------------------ + // Calculate the "slope" of the ramp when the NW corner the ramp is placed + // at the origin + //------------------------------------------------------------------------ + // + Scalar run = minX - maxX; + Scalar rise = minZ - maxZ; + + // + //------------------------------------------------------------------- + // Calculate the "slope" of the line from the base of the ramp to the + // lower-north edge of the block + //------------------------------------------------------------------- + // + Scalar x = point.x - maxX; + Scalar z = point.z - maxZ; + + // + //------------------------------------------------------------------------ + // If the slope rise/run is more positive than z/x slope, then the extent + // box of the disk has clipped the ramp. Note that rise/run >= z/x yields + // rise*x >= z*run, which avoids any divide-by-0 errors. + //------------------------------------------------------------------------ + // + if (x*rise >= z*run) + { + x = point.y - maxY; + return Max(x,0.0f); + } + return -1.0f; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + BoxedWedgeFacingPositiveZAndNegativeX::HitByBounded( + Line *line, + Scalar enters, + Scalar leaves + ) +{ + Plane + ramp; + + ramp.normal.x = maxZ - minZ; + ramp.normal.y = 0.0f; + ramp.normal.z = minX - maxX; + + // + //----------------------------- + // Scale the vector to a normal + //----------------------------- + // + Scalar temp = ramp.normal.x*ramp.normal.x + ramp.normal.z*ramp.normal.z; + Verify(!Small_Enough(temp)); + temp = Sqrt(temp); + ramp.normal.x /= temp; + ramp.normal.z /= temp; + ramp.offset = maxX*ramp.normal.x + maxZ*ramp.normal.z; + + // + //--------------------------------------------------------------------- + // Now that we have added a new plane into the definition of the convex + // polyhedron, call a common ramp line collider + //--------------------------------------------------------------------- + // + return BoxedRampContainsLine(line, ramp, enters, leaves); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + BoxedWedgeFacingPositiveZAndNegativeX::TestInstance() const +{ + return solidType == WedgeFacingPositiveZAndNegativeXType; +} + +//############################################################################# +//################# BoxedWedgeFacingPositiveZAndPositiveX ############### +//############################################################################# + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +BoxedWedgeFacingPositiveZAndPositiveX::BoxedWedgeFacingPositiveZAndPositiveX( + const ExtentBox &extents, + BoxedSolid::Material material, + Simulation *owner, + BoxedSolid *next_solid +): + BoxedSolid( + extents, + WedgeFacingPositiveZAndPositiveXType, + material, + owner, + next_solid + ) +{ + Check_Pointer(this); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +BoxedWedgeFacingPositiveZAndPositiveX::~BoxedWedgeFacingPositiveZAndPositiveX() +{ + Check_Pointer(this); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + BoxedWedgeFacingPositiveZAndPositiveX::IntersectsBounded( + const ExtentBox &extents + ) +{ + Check(this); + Check(&extents); + + Verify(minX <= extents.minX); + Verify(maxX >= extents.maxX); + Verify(minY <= extents.minY); + Verify(maxY >= extents.maxY); + Verify(minZ <= extents.minZ); + Verify(maxZ >= extents.maxZ); + + // + //---------------------------------------------------------------------- + // Calculate the "slope" of the ramp when the base of the ramp is placed + // at the origin + //---------------------------------------------------------------------- + // + Scalar run = maxX - minX; + Scalar rise = minZ - maxZ; + Verify(!Small_Enough(run)); + + // + //------------------------------------------------------------------- + // Calculate the "slope" of the line from the base of the ramp to the + // lower-north edge of the block + //------------------------------------------------------------------- + // + Scalar x = extents.maxX - minX; + Scalar z = extents.maxZ - maxZ; + + // + //------------------------------------------------------------------------ + // If the slope rise/run is more negative than z/x slope, then the extent + // box of the disk has clipped the ramp. Note that rise/run <= z/x yields + // rise*x <= z*run, which avoids any divide-by-0 errors. + //------------------------------------------------------------------------ + // + return x*rise <= z*run; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + BoxedWedgeFacingPositiveZAndPositiveX::ContainsBounded(const Point3D &point) +{ + Check(this); + Check(&point); + + Verify(minX <= point.x); + Verify(maxX >= point.x); + Verify(minY <= point.y); + Verify(maxY >= point.y); + Verify(minZ <= point.z); + Verify(maxZ >= point.z); + + // + //---------------------------------------------------------------------- + // Calculate the "slope" of the ramp when the base of the ramp is placed + // at the origin + //---------------------------------------------------------------------- + // + Scalar run = maxX - minX; + Scalar rise = minZ - maxZ; + Verify(!Small_Enough(run)); + + // + //------------------------------------------------------------------- + // Calculate the "slope" of the line from the base of the ramp to the + // lower-north edge of the block + //------------------------------------------------------------------- + // + Scalar x = point.x - minX; + Scalar z = point.z - maxZ; + + // + //------------------------------------------------------------------------ + // If the slope rise/run is more negative than z/x slope, then the extent + // box of the disk has clipped the ramp. Note that rise/run <= z/x yields + // rise*x <= z*run, which avoids any divide-by-0 errors. + //------------------------------------------------------------------------ + // + return x*rise <= z*run; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Scalar + BoxedWedgeFacingPositiveZAndPositiveX::FindDistanceBelowBounded( + const Point3D &point + ) +{ + Check(this); + Check(&point); + + Verify(minX <= point.x); + Verify(maxX >= point.x); + Verify(minY <= point.y); + Verify(minZ <= point.z); + Verify(maxZ >= point.z); + + // + //------------------------------------------------------------------------ + // Calculate the "slope" of the ramp when the NW corner the ramp is placed + // at the origin + //------------------------------------------------------------------------ + // + Scalar run = maxX - minX; + Scalar rise = minZ - maxZ; + Verify(!Small_Enough(run)); + + // + //------------------------------------------------------------------- + // Calculate the "slope" of the line from the base of the ramp to the + // lower-north edge of the block + //------------------------------------------------------------------- + // + Scalar x = point.x - minX; + Scalar z = point.z - maxZ; + + // + //------------------------------------------------------------------------ + // If the slope rise/run is more negative than z/x slope, then the extent + // box of the disk has clipped the ramp. Note that rise/run <= z/x yields + // rise*x <= z*run, which avoids any divide-by-0 errors. + //------------------------------------------------------------------------ + // + if (x*rise <= z*run) + { + x = point.y - maxY; + return Max(x,0.0f); + } + return -1.0f; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + BoxedWedgeFacingPositiveZAndPositiveX::HitByBounded( + Line *line, + Scalar enters, + Scalar leaves + ) +{ + Plane + ramp; + + ramp.normal.x = minZ - maxZ; + ramp.normal.y = 0.0f; + ramp.normal.z = minX - maxX; + + // + //----------------------------- + // Scale the vector to a normal + //----------------------------- + // + Scalar temp = ramp.normal.x*ramp.normal.x + ramp.normal.z*ramp.normal.z; + Verify(!Small_Enough(temp)); + temp = Sqrt(temp); + ramp.normal.x /= temp; + ramp.normal.z /= temp; + ramp.offset = maxX*ramp.normal.x + minZ*ramp.normal.z; + + // + //--------------------------------------------------------------------- + // Now that we have added a new plane into the definition of the convex + // polyhedron, call a common ramp line collider + //--------------------------------------------------------------------- + // + return BoxedRampContainsLine(line, ramp, enters, leaves); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + BoxedWedgeFacingPositiveZAndPositiveX::TestInstance() const +{ + return solidType == WedgeFacingPositiveZAndPositiveXType; +} + +//############################################################################# +//################# BoxedWedgeFacingNegativeZAndNegativeX ############### +//############################################################################# + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +BoxedWedgeFacingNegativeZAndNegativeX::BoxedWedgeFacingNegativeZAndNegativeX( + const ExtentBox &extents, + BoxedSolid::Material material, + Simulation *owner, + BoxedSolid *next_solid +): + BoxedSolid( + extents, + WedgeFacingNegativeZAndNegativeXType, + material, + owner, + next_solid + ) +{ + Check_Pointer(this); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +BoxedWedgeFacingNegativeZAndNegativeX::~BoxedWedgeFacingNegativeZAndNegativeX() +{ + Check_Pointer(this); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + BoxedWedgeFacingNegativeZAndNegativeX::IntersectsBounded( + const ExtentBox &extents + ) +{ + Check(this); + Check(&extents); + + Verify(minX <= extents.minX); + Verify(maxX >= extents.maxX); + Verify(minY <= extents.minY); + Verify(maxY >= extents.maxY); + Verify(minZ <= extents.minZ); + Verify(maxZ >= extents.maxZ); + + // + //---------------------------------------------------------------------- + // Calculate the "slope" of the ramp when the base of the ramp is placed + // at the origin + //---------------------------------------------------------------------- + // + Scalar run = minX - maxX; + Scalar rise = maxZ - minZ; + Verify(!Small_Enough(run)); + + // + //------------------------------------------------------------------- + // Calculate the "slope" of the line from the base of the ramp to the + // lower-north edge of the block + //------------------------------------------------------------------- + // + Scalar x = extents.minX - maxX; + Scalar z = extents.minZ - minZ; + + // + //------------------------------------------------------------------------ + // If the slope rise/run is more negative than z/x slope, then the extent + // box of the disk has clipped the ramp. Note that rise/run <= z/x yields + // rise*x <= z*run, which avoids any divide-by-0 errors. + //------------------------------------------------------------------------ + // + return x*rise <= z*run; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + BoxedWedgeFacingNegativeZAndNegativeX::ContainsBounded(const Point3D &point) +{ + Check(this); + Check(&point); + + Verify(minX <= point.x); + Verify(maxX >= point.x); + Verify(minY <= point.y); + Verify(maxY >= point.y); + Verify(minZ <= point.z); + Verify(maxZ >= point.z); + + // + //---------------------------------------------------------------------- + // Calculate the "slope" of the ramp when the base of the ramp is placed + // at the origin + //---------------------------------------------------------------------- + // + Scalar run = minX - maxX; + Scalar rise = maxZ - minZ; + Verify(!Small_Enough(run)); + + // + //------------------------------------------------------------------- + // Calculate the "slope" of the line from the base of the ramp to the + // lower-north edge of the block + //------------------------------------------------------------------- + // + Scalar x = point.x - maxX; + Scalar z = point.z - minZ; + + // + //------------------------------------------------------------------------ + // If the slope rise/run is more negative than z/x slope, then the extent + // box of the disk has clipped the ramp. Note that rise/run <= z/x yields + // rise*x <= z*run, which avoids any divide-by-0 errors. + //------------------------------------------------------------------------ + // + return x*rise <= z*run; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Scalar + BoxedWedgeFacingNegativeZAndNegativeX::FindDistanceBelowBounded( + const Point3D &point + ) +{ + Check(this); + Check(&point); + + Verify(minX <= point.x); + Verify(maxX >= point.x); + Verify(minY <= point.y); + Verify(minZ <= point.z); + Verify(maxZ >= point.z); + + // + //------------------------------------------------------------------------ + // Calculate the "slope" of the ramp when the NW corner the ramp is placed + // at the origin + //------------------------------------------------------------------------ + // + Scalar run = minX - maxX; + Scalar rise = maxZ - minZ; + Verify(!Small_Enough(run)); + + // + //------------------------------------------------------------------- + // Calculate the "slope" of the line from the base of the ramp to the + // lower-north edge of the block + //------------------------------------------------------------------- + // + Scalar x = point.x - maxX; + Scalar z = point.z - minZ; + + // + //------------------------------------------------------------------------ + // If the slope rise/run is more negative than z/x slope, then the extent + // box of the disk has clipped the ramp. Note that rise/run <= z/x yields + // rise*x <= z*run, which avoids any divide-by-0 errors. + //------------------------------------------------------------------------ + // + if (x*rise <= z*run) + { + x = point.y - maxY; + return Max(x,0.0f); + } + return -1.0f; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + BoxedWedgeFacingNegativeZAndNegativeX::HitByBounded( + Line *line, + Scalar enters, + Scalar leaves + ) +{ + Plane + ramp; + + ramp.normal.x = maxZ - minZ; + ramp.normal.y = 0.0f; + ramp.normal.z = maxX - minX; + + // + //----------------------------- + // Scale the vector to a normal + //----------------------------- + // + Scalar temp = ramp.normal.x*ramp.normal.x + ramp.normal.z*ramp.normal.z; + Verify(!Small_Enough(temp)); + temp = Sqrt(temp); + ramp.normal.x /= temp; + ramp.normal.z /= temp; + ramp.offset = minX*ramp.normal.x + maxZ*ramp.normal.z; + + // + //--------------------------------------------------------------------- + // Now that we have added a new plane into the definition of the convex + // polyhedron, call a common ramp line collider + //--------------------------------------------------------------------- + // + return BoxedRampContainsLine(line, ramp, enters, leaves); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + BoxedWedgeFacingNegativeZAndNegativeX::TestInstance() const +{ + return solidType == WedgeFacingNegativeZAndNegativeXType; +} + diff --git a/CODE/RP/MUNGA/CAMINST.CPP b/CODE/RP/MUNGA/CAMINST.CPP new file mode 100644 index 0000000..69437da --- /dev/null +++ b/CODE/RP/MUNGA/CAMINST.CPP @@ -0,0 +1,590 @@ +//===========================================================================// +// File: caminst.cc // +// Project: Munga // +// Contents: Class CameraInstance Data and Manipulation of one camera's // +// position and orientation // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 08/08/95 JM Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +// +// Munga Includes +// +#include +#pragma hdrstop + +#if !defined(CAMINST_HPP) +# include +#endif + +#if !defined(NOTATION_HPP) +# include +#endif + +//########################################################################## +//############################# CameraInstance ####################### +//########################################################################## + +//########################################################################## +// Construction and Destruction +// + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +CameraInstance::CameraInstance( + int camera_ID, + const Origin &camera_origin, + Enumeration camera_type +) +{ + Str_Copy(cameraName, "camera", sizeof(cameraName)); + itoa(camera_ID, cameraName+6, 10); + cameraID = camera_ID; + cameraDataType = camera_type; + SetLocalOrigin(camera_origin); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +CameraInstance::CameraInstance(StreamedInstance *model) +{ + cameraID = model->cameraID; + localOrigin = model->localOrigin; + cameraToWorld = localOrigin; + cameraDataType = model->cameraType; + for (int i=0; i<4; ++i) + { + clampValues[i] = model->clampValues[i]; + } + Str_Copy(cameraName, "camera", sizeof(cameraName)); + itoa(cameraID, cameraName+6, 10); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +#define READ_CAMERA_ENTRY(name,value)\ + if (\ + !cam_file->GetEntry(\ + camera_page_name,\ + name,\ + &value\ + )\ + )\ + { \ + DEBUG_STREAM << camera_page_name << " missing " name "!\n";\ + Fail("Bad cameras!");\ + } + +CameraInstance::CameraInstance( + NotationFile *cam_file, + const char *camera_page_name +) +{ + Check(this); + Check(cam_file); + Check_Pointer(camera_page_name); + + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // PageName represents the cameraName + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + Str_Copy(cameraName, camera_page_name, sizeof(cameraName)); + + // + //~~~~~~~~~~~~~~~~~~~~~ + // Read in the position + //~~~~~~~~~~~~~~~~~~~~~ + // + READ_CAMERA_ENTRY("tranx", localOrigin.linearPosition.x); + READ_CAMERA_ENTRY("trany", localOrigin.linearPosition.y); + READ_CAMERA_ENTRY("tranz", localOrigin.linearPosition.z); + + // + //~~~~~~~~~~~~~~~~~~~~~~~~ + // Read in the Orientation + //~~~~~~~~~~~~~~~~~~~~~~~~ + // + READ_CAMERA_ENTRY("quatx", localOrigin.angularPosition.x); + READ_CAMERA_ENTRY("quaty", localOrigin.angularPosition.y); + READ_CAMERA_ENTRY("quatz", localOrigin.angularPosition.z); + READ_CAMERA_ENTRY("quatw", localOrigin.angularPosition.w); + cameraToWorld = localOrigin; + + // + //--------------------- + // Read in camera clamp + //--------------------- + // + clampValues[0] = -PI; + cam_file->GetEntry( + camera_page_name, + "minYawClamp", + &clampValues[0].angle + ); + clampValues[1] = PI; + cam_file->GetEntry( + camera_page_name, + "maxYawClamp", + &clampValues[1].angle + ); + clampValues[2] = -PI_OVER_2; + cam_file->GetEntry( + camera_page_name, + "minPitchClamp", + &clampValues[2].angle + ); + clampValues[3] = PI_OVER_2; + cam_file->GetEntry( + camera_page_name, + "maxPitchClamp", + &clampValues[3].angle + ); + + // + // Overwrite default cameraID + // + const char *camera_data_entry; + if( + !cam_file->GetEntry( + camera_page_name, + "cameraType", + &camera_data_entry + ) + ) + { + cameraDataType = DefaultCameraType; + } + else + { + Check_Pointer(camera_data_entry); + cameraDataType = FindCameraType(camera_data_entry); + } + + READ_CAMERA_ENTRY("cameraID", cameraID); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +CameraInstance::~CameraInstance() +{ +} + +//########################################################################## +// Data Access Funtions +// + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +int + CameraInstance::FindCameraType(const char *camera_data_type) +{ + + if(strcmp("DefaultCameraType", camera_data_type) == 0) + { + return DefaultCameraType; + } + else if(strcmp("AlwaysSeesCameraType", camera_data_type) == 0) + { + return AlwaysSeesCameraType; + } + return ErrorCameraType; +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// + +void + CameraInstance::GetCameraTypeString(char *camera_type_string) +{ + switch(cameraDataType) + { + case DefaultCameraType: + Str_Copy( + camera_type_string, + "DefaultCameraType", + (sizeof(char) * 128) + ); + break; + case AlwaysSeesCameraType: + Str_Copy( + camera_type_string, + "AlwaysSeesCameraType", + (sizeof(char) * 128) + ); + break; + default: + Tell(cameraDataType); + Warn(" Invalid cameraType !\n"); + break; + } +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + CameraInstance::CalculateCameraRotation( + YawPitchRoll *result, + const Point3D &world + ) +{ + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Given a Vector this function finds a rotation involving only + // pitch and yaw, roll will not be affected. In addition the rotation + // chosed will always be in the direction of least rotation + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + Check(this); + Check(result); + Check(&world); + + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // find the vector from where we are to where we want to point + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + Point3D local; + local.MultiplyByInverse(world, cameraToWorld); + if (Small_Enough(local.LengthSquared())) + { + *result = YawPitchRoll::Identity; + return; + } + + // + //~~~~~~~~~~~~~~~~~~~~~ + // Calculate the angles + //~~~~~~~~~~~~~~~~~~~~~ + // + result->yaw = Radian::Normalize(Arctan(-local.x, -local.z)); + Scalar xz_direction = Sqrt((local.x * local.x) + (local.z *local.z)); + result->pitch = Radian::Normalize(Arctan(local.y, xz_direction)); + result->roll = 0.0f; + + Check_Fpu(); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + CameraInstance::SetLocalOrigin( + const Origin &new_origin + ) +{ + Check(this); + Check(&new_origin); + + YawPitchRoll ypr; + ypr = new_origin.angularPosition; + clampValues[0] = clampValues[1] = 0.0f; + clampValues[2] = clampValues[3] = ypr.pitch; + ypr.pitch = 0.0f; + localOrigin.linearPosition = new_origin.linearPosition; + localOrigin.angularPosition = ypr; + cameraToWorld = localOrigin; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + CameraInstance::LookAt( + Origin *result, + const Point3D &world_point + ) +{ + result->linearPosition = localOrigin.linearPosition; + YawPitchRoll first,local; + first = localOrigin.angularPosition; + CalculateCameraRotation(&local, world_point); + Clamp(local.yaw, clampValues[0], clampValues[1]); + Clamp(local.pitch, clampValues[2], clampValues[3]); + first.yaw += local.yaw; + first.pitch = local.pitch; + result->angularPosition = first; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + CameraInstance::AllowLookingAt(const Point3D &world) +{ + YawPitchRoll local; + CalculateCameraRotation(&local, world); + if (local.yaw < clampValues[0]) + { + clampValues[0] = local.yaw; + } + else if (local.yaw > clampValues[1]) + { + clampValues[1] = local.yaw; + } + if (local.pitch < clampValues[2]) + { + clampValues[2] = local.pitch; + } + else if (local.pitch > clampValues[3]) + { + clampValues[3] = local.pitch; + } +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +#define YAW_SLOP (PI/12.0) +#define PITCH_SLOP (0.75*(YAW_SLOP)) + +Logical + CameraInstance::CanCameraSee(const Point3D &world_point) +{ + YawPitchRoll ypr; + CalculateCameraRotation(&ypr, world_point); + return + clampValues[0]-YAW_SLOP <= ypr.yaw + && clampValues[1]+YAW_SLOP >= ypr.yaw + && clampValues[2]-PITCH_SLOP <= ypr.pitch + && clampValues[3]+PITCH_SLOP >= ypr.pitch; +} + +//########################################################################## +// Test Support +// + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + CameraInstance::TestInstance() const +{ + return True; +} + +//########################################################################## +// Tool Support +// + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + CameraInstance::WriteNotationPage(NotationFile *camera_stream) +{ +// +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Output this camera's information to the given notation file +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// + Check(this); + Check(camera_stream); + camera_stream->SetEntry( + cameraName, + "cameraID", + cameraID + ); + + char camera_type[128]; + GetCameraTypeString(camera_type); + camera_stream->SetEntry( + cameraName, + "cameraType", + camera_type + ); + + camera_stream->SetEntry( + cameraName, + "tranx", + localOrigin.linearPosition.x + ); + camera_stream->SetEntry( + cameraName, + "trany", + localOrigin.linearPosition.y + ); + camera_stream->SetEntry( + cameraName, + "tranz", + localOrigin.linearPosition.z + ); + camera_stream->SetEntry( + cameraName, + "quatx", + localOrigin.angularPosition.x + ); + camera_stream->SetEntry( + cameraName, + "quaty", + localOrigin.angularPosition.y + ); + camera_stream->SetEntry( + cameraName, + "quatz", + localOrigin.angularPosition.z + ); + camera_stream->SetEntry( + cameraName, + "quatw", + localOrigin.angularPosition.w + ); + camera_stream->SetEntry( + cameraName, + "minYawClamp", + clampValues[0] + ); + camera_stream->SetEntry( + cameraName, + "maxYawClamp", + clampValues[1] + ); + camera_stream->SetEntry( + cameraName, + "minPitchClamp", + clampValues[2] + ); + camera_stream->SetEntry( + cameraName, + "maxPitchClamp", + clampValues[3] + ); + camera_stream->AppendEntry(cameraName, NULL, (char *)NULL); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +#undef READ_CAMERA_ENTRY +#define READ_CAMERA_ENTRY(name,value)\ + if (\ + !cam_file->GetEntry(\ + camera_page_name,\ + name,\ + &value\ + )\ + )\ + { \ + DEBUG_STREAM << camera_page_name << " missing " name "!\n";\ + return False;\ + } + +Logical + CameraInstance::CreateStreamedInstance( + StreamedInstance *model, + NotationFile *cam_file, + const char *camera_page_name + ) +{ + Check_Pointer(model); + Check(cam_file); + Check_Pointer(camera_page_name); + + // + //~~~~~~~~~~~~~~~~~~~~~ + // Read in the position + //~~~~~~~~~~~~~~~~~~~~~ + // + READ_CAMERA_ENTRY("tranx", model->localOrigin.linearPosition.x); + READ_CAMERA_ENTRY("trany", model->localOrigin.linearPosition.y); + READ_CAMERA_ENTRY("tranz", model->localOrigin.linearPosition.z); + + // + //~~~~~~~~~~~~~~~~~~~~~~~~ + // Read in the Orientation + //~~~~~~~~~~~~~~~~~~~~~~~~ + // + READ_CAMERA_ENTRY("quatx", model->localOrigin.angularPosition.x); + READ_CAMERA_ENTRY("quaty", model->localOrigin.angularPosition.y); + READ_CAMERA_ENTRY("quatz", model->localOrigin.angularPosition.z); + READ_CAMERA_ENTRY("quatw", model->localOrigin.angularPosition.w); + + // + //--------------------- + // Read in camera clamp + //--------------------- + // + model->clampValues[0] = -PI; + cam_file->GetEntry( + camera_page_name, + "minYawClamp", + &model->clampValues[0].angle + ); + model->clampValues[1] = PI; + cam_file->GetEntry( + camera_page_name, + "maxYawClamp", + &model->clampValues[1].angle + ); + model->clampValues[2] = -PI_OVER_2; + cam_file->GetEntry( + camera_page_name, + "minPitchClamp", + &model->clampValues[2].angle + ); + model->clampValues[3] = PI_OVER_2; + cam_file->GetEntry( + camera_page_name, + "maxPitchClamp", + &model->clampValues[3].angle + ); + + // + // Overwrite default cameraID + // + const char *camera_data_entry; + if( + !cam_file->GetEntry( + camera_page_name, + "cameraType", + &camera_data_entry + ) + ) + { + model->cameraType = DefaultCameraType; + } + else + { + Check_Pointer(camera_data_entry); + model->cameraType = FindCameraType(camera_data_entry); + } + + READ_CAMERA_ENTRY("cameraID", model->cameraID); + + model->instanceSize = sizeof(*model); + return True; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +AlwaysSeesCameraInstance::AlwaysSeesCameraInstance( + int camera_ID, + const Origin &camera_origin, + Enumeration camera_type +): + CameraInstance(camera_ID, camera_origin, camera_type) +{ +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +AlwaysSeesCameraInstance::AlwaysSeesCameraInstance(StreamedInstance *model): + CameraInstance(model) +{ +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +AlwaysSeesCameraInstance::AlwaysSeesCameraInstance( + NotationFile *cam_file, + const char *camera_page_name +): + CameraInstance(cam_file, camera_page_name) +{ +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + AlwaysSeesCameraInstance::CanCameraSee(const Point3D &) +{ + return True; +} diff --git a/CODE/RP/MUNGA/CAMINST.HPP b/CODE/RP/MUNGA/CAMINST.HPP new file mode 100644 index 0000000..de68f21 --- /dev/null +++ b/CODE/RP/MUNGA/CAMINST.HPP @@ -0,0 +1,201 @@ +//===========================================================================// +// File: caminst.hh // +// Project: Munga // +// Contents: CameraInstance Interface // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 08/08/95 JM Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(CAMINST_HPP) +# define CAMINST_HPP + +# if !defined (PLUG_HPP) +# include +# endif + +# if !defined (ORIGIN_HPP) +# include +# endif + +# if !defined (ROTATION_HPP) +# include +# endif + +# if !defined(LINMTRX_HPP) +# include +# endif + + class NotationFile; + + struct CameraInstance__StreamedInstance + { + size_t instanceSize; + int + cameraType, + cameraID; + Origin + localOrigin; + Radian + clampValues[4]; + }; + + //########################################################################## + //############################# CameraInstance ####################### + //########################################################################## + + class CameraInstance : + public Plug + { + friend class CameraInstanceManager; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // local member data + // + public: + + enum { + ErrorCameraType, + DefaultCameraType, + AlwaysSeesCameraType, + CameraTypeCount, + }; + + Radian + clampValues[4]; + + protected: + Origin + localOrigin; + LinearMatrix + cameraToWorld; + + static int + FindCameraType(const char *camera_data_type); + + void + GetCameraTypeString(char *camera_type_string); + + Enumeration + cameraDataType; + + int + cameraID; + + char + cameraName[128]; + + void + CalculateCameraRotation( + YawPitchRoll *result, + const Point3D &world + ); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // public member data access functions + // + public: + int + GetCameraID() + {Check(this); return cameraID;} + + const char* + GetCameraName() + {Check(this); return cameraName;} + void + SetCameraName(const char* camera_name) + {Str_Copy(cameraName, camera_name, sizeof(cameraName));} + + const Enumeration + GetCameraType() + {Check(this); return cameraDataType;} + + const Origin& + GetLocalOrigin() + {Check(this); return localOrigin;} + void + SetLocalOrigin(const Origin &new_origin); + const Point3D& + GetPosition() + {Check(this); return localOrigin.linearPosition;} + + void + LookAt( + Origin *result, + const Point3D &world_point + ); + void + AllowLookingAt(const Point3D &world); + + virtual Logical + CanCameraSee(const Point3D &world_point); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Test Class Support + // + public: + Logical + TestInstance() const; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Contruction and Destruction Support + // + public: + typedef CameraInstance__StreamedInstance StreamedInstance; + + CameraInstance( + int camera_ID, + const Origin &camera_origin, + Enumeration camera_type = DefaultCameraType + ); + CameraInstance(StreamedInstance *model); + CameraInstance( + NotationFile *cam_file, + const char *camera_page_name + ); + + ~CameraInstance(); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Tool Support + // + public: + void + WriteNotationPage(NotationFile *camera_stream); + static Logical + CreateStreamedInstance( + StreamedInstance *model, + NotationFile *cam_file, + const char *camera_page_name + ); + }; + + //########################################################################## + //############################# CameraInstance ####################### + //########################################################################## + + class AlwaysSeesCameraInstance : + public CameraInstance + { + public: + AlwaysSeesCameraInstance( + int camera_ID, + const Origin &camera_origin, + Enumeration camera_type = DefaultCameraType + ); + AlwaysSeesCameraInstance(StreamedInstance *model); + AlwaysSeesCameraInstance( + NotationFile *cam_file, + const char *camera_page_name + ); + + Logical + CanCameraSee(const Point3D &world_point); + }; + +#endif diff --git a/CODE/RP/MUNGA/CAMMGR.CPP b/CODE/RP/MUNGA/CAMMGR.CPP new file mode 100644 index 0000000..7d1e70c --- /dev/null +++ b/CODE/RP/MUNGA/CAMMGR.CPP @@ -0,0 +1,779 @@ +//===========================================================================// +// File: cammgr.cc // +// Project: Munga // +// Contents: Implementation details of vectored thrust vehicles // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 08/09/95 JM Initial coding. // +// Classes: CameraInstanceManager // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +// +// Munga Includes +// +#include +#pragma hdrstop + +#if !defined(CAMMGR_HPP) +# include +#endif + +#if !defined(MISSION_HPP) +# include +#endif + +#if !defined(APP_HPP) + #include +#endif + +#if !defined(NOTATION_HPP) + #include +#endif + +#if !defined(NAMELIST_HPP) + #include +#endif + +//########################################################################## +//##################### CameraInstanceManager ####################### +//########################################################################## + +//########################################################################## +// Construction and Destruction +// + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +CameraInstanceManager::CameraInstanceManager() : + cameraList(NULL) +{ + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Initialize local member data + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + cameraIterator = new SChainIteratorOf(cameraList); + Register_Object(cameraIterator); + InitializeCameraInstances(); + Check_Fpu(); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +CameraInstanceManager::~CameraInstanceManager() +{ + DeleteCameraList(); + Unregister_Object(cameraIterator); + delete cameraIterator; + cameraIterator = NULL; + Check_Fpu(); +} + +//########################################################################## +// CameraInstance Creation and Deletion Support +// + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +int + CameraInstanceManager::FindUniqueCameraID() +{ +// +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Finds a cameraID that has been freed up or the next sequential number +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// + SChainIteratorOf iterator(cameraList); + CameraInstance *camera_instance; + int camera_ID = 0; + Logical ID_exists = False; + + while(1) + { + // + //~~~~~~~~~~~~~~~~~~~~ + // Reset the iterator + //~~~~~~~~~~~~~~~~~~~~ + // + iterator.First(); + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Iterate through the list of all cameraInstances for every ID Chosen + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + while ( (camera_instance = iterator.ReadAndNext()) != NULL) + { + if(camera_ID == camera_instance->GetCameraID()) + { + ID_exists = True; + break; + } + } + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // If this cameraID not already used return the ID + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + if(!ID_exists) + { + break; + } + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Otherwise increment the ID and reset the boolean + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + ++camera_ID; + ID_exists = False; + } + + Check_Fpu(); + return camera_ID; +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + CameraInstanceManager::SetCamera( + const Origin &new_origin, + CameraInstance *camera_instance + ) +{ + + if(!camera_instance) + { + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // No camera passed as an argument use cameraIterator + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + camera_instance = cameraIterator->GetCurrent(); + if(!camera_instance) + { + CreateCameraInstance(new_origin); + } + else + { + camera_instance->SetLocalOrigin(new_origin); + } + } + else + { + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Camera passed in set its origin + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + camera_instance->SetLocalOrigin(new_origin); + } + Check_Fpu(); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +CameraInstance* + CameraInstanceManager::CreateCameraInstance(const Origin &new_origin) +{ + Check(this); + // + //~~~~~~~~~~~~~~~~~~~~~~~~ + // Find a Unique CameraID + //~~~~~~~~~~~~~~~~~~~~~~~~ + // + int camera_ID; + camera_ID = FindUniqueCameraID(); + + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Create the new cameraInstance + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + CameraInstance *camera_instance = + new CameraInstance( + camera_ID, + new_origin + ); + Register_Object(camera_instance); + AddCameraInstance(camera_instance); + + Check_Fpu(); + return camera_instance; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +CameraInstance* + CameraInstanceManager::AddCameraInstance(CameraInstance *camera_instance) +{ + Check(this); + Check(cameraIterator); + Check(&cameraList); + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Insert the new Camera Instance into the cameraList + // & Point the cameraIterator to it + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + if (!cameraIterator->GetCurrent()) + { + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // If nothing in the cameraList create the first element + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + cameraList.Add(camera_instance); + cameraIterator->First(); + Tell("Created the First Camera Instance \n"); + } + else + { + cameraList.Add(camera_instance); + cameraIterator->Next(); + Tell("Created a Camera Instance \n"); + } + Check_Fpu(); + return camera_instance; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +CameraInstance* + CameraInstanceManager::DeleteCameraInstance() +{ + CameraInstance *camera_instance = cameraIterator->GetCurrent(); + if(!camera_instance) + { + return NULL; + } + + cameraIterator->Remove(); + if(!cameraIterator->GetCurrent()) + { + cameraIterator->First(); + } + Unregister_Object(camera_instance); + delete camera_instance; + return GetCurrent(); +} + +//########################################################################## +// CameraList Manipulator Functions +// + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + CameraInstanceManager::DeleteCameraList() +{ + while (cameraIterator->GetCurrent() != NULL) + { + DeleteCameraInstance(); + } +} + +//########################################################################## +// CameraList Iterator Manipulator Functions +// + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +CameraInstance* + CameraInstanceManager::IncrementIterator() +{ + Check(this); + if (cameraIterator->GetCurrent()) + { + Check(cameraIterator); + cameraIterator->ReadAndNext(); + if (!cameraIterator->GetCurrent()) + { + cameraIterator->First(); + } + } + Check_Fpu(); + return GetCurrent(); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +CameraInstance* + CameraInstanceManager::DecrementIterator() +{ + Check(this); + if (cameraIterator->GetCurrent()) + { + Check(cameraIterator); + cameraIterator->ReadAndPrevious(); + if (!cameraIterator->GetCurrent()) + { + cameraIterator->Last(); + } + } + Check_Fpu(); + return GetCurrent(); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +CameraInstance* + CameraInstanceManager::AdvanceIterator(const CameraInstance &camera_instance) +{ +// +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Search for the camera_instance in the cameraList +// Iterator points to camera_instance upon return +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// + Check(&camera_instance); + Check(&cameraList); + Check(cameraIterator); + + CameraInstance *current_instance; + cameraIterator->First(); + + while((current_instance = cameraIterator->GetCurrent()) != NULL) + { + if(current_instance == &camera_instance) + { + Check_Fpu(); + return current_instance; + } + cameraIterator->Next(); + } + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // camera_instance not found return NULL + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + Check_Fpu(); + return NULL; +} + +//########################################################################## +// CameraList Searching and Query Functions +// + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +CameraInstance* + CameraInstanceManager::FindClosestCamera(const Point3D &point_3D) +{ +// +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Use a Simple distance formula to find closest camera +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// + Check(this); + CameraInstance *closest_camera = NULL; + Scalar dist_to_goal, min_dist=1e8f; + + SChainIteratorOf iterator(cameraList); + CameraInstance *camera_instance; + while ( (camera_instance = iterator.ReadAndNext()) != NULL) + { + Check(camera_instance); + if (camera_instance->CanCameraSee(point_3D)) + { + Vector3D v; + v.Subtract(point_3D, camera_instance->GetPosition()); + dist_to_goal = v.LengthSquared(); + Check_Fpu(); + if (dist_to_goal < min_dist) + { + min_dist = dist_to_goal; + closest_camera = camera_instance; + } + } + } + Check_Fpu(); + return closest_camera; +} + +//########################################################################## +// Test Support +// + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + CameraInstanceManager::TestInstance() const +{ + return True; +} + +//########################################################################## +// Tool Support +// + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + CameraInstanceManager::InitializeCameraInstances() +{ + Check(application); + ResourceDescription::ResourceID map_ID; + map_ID = application->GetCurrentMission()->GetMapID(); + + ResourceFile *res_file; + res_file = application->GetResourceFile(); + Check(res_file); + + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Create the camera filename from the map name + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + ResourceDescription *res = res_file->FindResourceDescription(map_ID); + Check(res); + Str_Copy( + cameraFilename, + "cameras\\", + sizeof(cameraFilename) + ); + // + // cam name matches map name + // + Str_Cat( + cameraFilename, + res->resourceName, + sizeof(cameraFilename) + ); + // + // trunc cam name to DOS filename size + // + int name_length = strlen(cameraFilename); + if(name_length > 17) + { + cameraFilename[17] = '\0'; + } + + // + // Add the extension + // + Str_Cat( + cameraFilename, + ".cam", + sizeof(cameraFilename) + ); + + // + //~~~~~~~~~~~~~~~~~~~~~~~~ + // See if the file exists + //~~~~~~~~~~~~~~~~~~~~~~~~ + // + fstream cam_file; + cam_file.open(cameraFilename, ios::nocreate | ios::in | ios::out); + if(cam_file) + { + cam_file.close(); + ReadNotationFile(); + } + else + { + cam_file.close(); + CreateStreamedCameraInstances(res_file, res->resourceName); + } + Check_Fpu(); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + CameraInstanceManager::ReadNotationFile() +{ + Check(this); + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Create a Notation file out of the camera file + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + NotationFile *cam_file = new NotationFile(cameraFilename); + Register_Object(cam_file); + + NameList* camera_namelist = cam_file->MakePageList(); + Register_Object(camera_namelist); + + NameList::Entry *camera_entry = camera_namelist->GetFirstEntry(); + + char + camera_page_name[128]; + + while (camera_entry) + { + Str_Copy( + camera_page_name, + camera_entry->GetName(), + sizeof(camera_page_name) + ); + + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Create a new camera Instance for this page + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + CameraInstance *camera_instance; + const char *camera_data_entry; + int cam_type; + if( + !cam_file->GetEntry( + camera_page_name, + "cameraType", + &camera_data_entry + ) + ) + { + cam_type = CameraInstance::DefaultCameraType; + } + else + { + Check_Pointer(camera_data_entry); + cam_type = CameraInstance::FindCameraType(camera_data_entry); + } + switch (cam_type) + { + case CameraInstance::DefaultCameraType: + camera_instance = new CameraInstance(cam_file, camera_page_name); + break; + case CameraInstance::AlwaysSeesCameraType: + camera_instance = + new AlwaysSeesCameraInstance(cam_file, camera_page_name); + break; + } + Register_Object(camera_instance); + AddCameraInstance(camera_instance); + camera_entry = camera_entry->GetNextEntry(); + } + Unregister_Object(camera_namelist); + delete camera_namelist; + Unregister_Object(cam_file); + delete cam_file; + Check_Fpu(); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +#define PAGE_NAME_SIZE 128 + +void + CameraInstanceManager::CreateStreamedCameraInstances( + ResourceFile *res_file, + const char *map_name + ) +{ + Check(this); + Check_Pointer(res_file); + Check_Pointer(map_name); + + ResourceDescription *res = + res_file->FindResourceDescription( + map_name, + ResourceDescription::CameraStreamResourceType + ); + if (!res) + { + Check_Fpu(); + return; + } + + res->Lock(); + + MemoryStream camera_stream(res->resourceAddress, res->resourceSize); + int camera_count = *(int*)camera_stream.GetPointer(); + camera_stream.AdvancePointer(sizeof(camera_count)); + + // + //-------------------- + // Read in each camera + //-------------------- + // + while (camera_count--) + { + Check(&camera_stream); + CameraInstance::StreamedInstance *model = + (CameraInstance::StreamedInstance*)camera_stream.GetPointer(); + Check_Pointer(model); + CameraInstance *camera_instance; + switch (model->cameraType) + { + case CameraInstance::DefaultCameraType: + camera_instance = new CameraInstance(model); + break; + case CameraInstance::AlwaysSeesCameraType: + camera_instance = new AlwaysSeesCameraInstance(model); + break; + } + Register_Object(camera_instance); + AddCameraInstance(camera_instance); + camera_stream.AdvancePointer(model->instanceSize); + } + res->Unlock(); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + CameraInstanceManager::WriteNotationFile() +{ + Check(this); + Check(&cameraList); + + NotationFile *camera_stream = new NotationFile(); + Register_Object(camera_stream); + + if(!camera_stream) + { + Fail("Error Opening Camera File\n"); + } + SChainIteratorOf iterator(cameraList); + CameraInstance *camera_instance; + + iterator.First(); + while ( (camera_instance = iterator.ReadAndNext()) != NULL) + { + camera_instance->WriteNotationPage(camera_stream); + } + camera_stream->WriteFile(cameraFilename); + Unregister_Object(camera_stream); + delete camera_stream; + Check_Fpu(); +} + + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +#define PAGE_NAME_SIZE 128 +ResourceDescription::ResourceID + CameraInstanceManager::CreateCameraInstancesStream( + ResourceFile *resource_file, + const char *camera_name, + const ResourceDirectories *directories + ) +{ + Check_Pointer(camera_name); + Check_Pointer(directories); + + // + //------------------- + // Open the .cam file + //------------------- + // + int length = strlen(camera_name) + strlen(directories->mapDirectory)+ 1; + + char *filename = new char[length]; + Register_Pointer(filename); + + Str_Copy(filename, directories->mapDirectory, length); + strncat(filename, camera_name, strlen(camera_name)-3); + Str_Cat(filename, "cam", length); + + NotationFile *camera_notation = new NotationFile(filename); + Register_Object(camera_notation); + + if (camera_notation->PageCount() == 0) + { + DEBUG_STREAM << "Missing .cam file" << endl; +Dump_And_Die: + Unregister_Object(camera_notation); + delete camera_notation; + Unregister_Pointer(filename); + delete[] filename; + return ResourceDescription::NullResourceID; + } + + int camera_count = 0; + NameList *pagelist = camera_notation->MakePageList(); + Register_Object(pagelist); + NameList::Entry *entry = pagelist->GetFirstEntry(); + char page_name[PAGE_NAME_SIZE]; + + while (entry) + { + ++camera_count; + entry = entry->GetNextEntry(); + } + + size_t array_size = + sizeof(CameraInstance::StreamedInstance) * camera_count * 2; + long *camera_array = new long[(array_size+3) >> 2]; + Register_Pointer(camera_array); + MemoryStream camera_stream(camera_array, array_size); + + *(int*)camera_stream.GetPointer() = camera_count; + camera_stream.AdvancePointer(sizeof(camera_count)); + + entry = pagelist->GetFirstEntry(); + while (entry) + { + Str_Copy( + page_name, + entry->GetName(), + sizeof(page_name) + ); + + if(strcmp(page_name, "CameraInfo") == 0) + { + entry = entry->GetNextEntry(); + continue; + } + + Check(&camera_stream); + CameraInstance::StreamedInstance *model = + (CameraInstance::StreamedInstance*)camera_stream.GetPointer(); + Check_Pointer(model); + if ( + !CameraInstance::CreateStreamedInstance( + model, + camera_notation, + page_name + ) + ) + { + Unregister_Pointer(camera_array); + delete[] camera_array; + Unregister_Object(pagelist); + delete pagelist; + goto Dump_And_Die; + } + camera_stream.AdvancePointer(model->instanceSize); + entry = entry->GetNextEntry(); + } + + // + //------------------------------- + // Write the stream out to disk. + // + + Str_Copy(filename, camera_name, length); + filename[strlen(camera_name)-4] = '\0'; + + ResourceDescription *new_res = + resource_file->AddResource( + filename, + ResourceDescription::CameraStreamResourceType, + 1, + ResourceDescription::LoadOnDemandFlag, + camera_array, + camera_stream.GetBytesUsed() + ); + Check(new_res); + + //----------- + // Free Mem + // + + + Unregister_Pointer(camera_array); + delete[] camera_array; + Unregister_Pointer(filename); + delete[] filename; + Unregister_Object(camera_notation); + delete camera_notation; + Unregister_Object(pagelist); + delete pagelist; + + return new_res->resourceID; +} + diff --git a/CODE/RP/MUNGA/CAMMGR.HPP b/CODE/RP/MUNGA/CAMMGR.HPP new file mode 100644 index 0000000..0e9cf1d --- /dev/null +++ b/CODE/RP/MUNGA/CAMMGR.HPP @@ -0,0 +1,159 @@ +//===========================================================================// +// File: cammgr.hh // +// Project: Munga // +// Contents: Camera Interface // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 08/08/95 JM Initial coding. // +// Classes: CameraInstanceManager // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// +#if !defined(CAMMGR_HPP) +# define CAMMGR_HPP + +# if !defined(RESOURCE_HPP) +# include +# endif + +# if !defined(SCHAIN_HPP) +# include +# endif + +# if !defined(CAMINST_HPP) +# include +# endif + + //########################################################################## + //##################### CameraInstanceManager ####################### + //########################################################################## + + class CameraInstanceManager SIGNATURED + { + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // local member data + // + protected: + // + // cameraList is a circular Linked list + // which holds cameraInstances + // + SChainOf cameraList; + // + // CameraIterator holds the current position in the + // camera list for the lifetime of the class + // & == NULL if the list is empty + // + SChainIteratorOf *cameraIterator; + + int + FindUniqueCameraID(); + + char + cameraFilename[128]; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Public Member Manipulation Functions + // + public: + // + // CameraList Manipulator Functions + // + void + SetCamera( + const Origin &new_origin, + CameraInstance *camera_instance = NULL + ); + + CameraInstance* + CreateCameraInstance(const Origin &new_origin); + + CameraInstance* + AddCameraInstance(CameraInstance *camera_instance); + + CameraInstance* + DeleteCameraInstance(); + + void + DeleteCameraList(); + + // + // Iterator Manipulator Functions (Circular Chain) + // + CameraInstance* + IncrementIterator(); + + CameraInstance* + DecrementIterator(); + + CameraInstance* + AdvanceIterator(const CameraInstance &camera_instance); + + CameraInstance* + GetCurrent() const + {Check(this); return cameraIterator->GetCurrent();} + + CameraInstance* + First() + { + Check(this); + Check(cameraIterator->GetCurrent()); + cameraIterator->First(); + return GetCurrent(); + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // CameraList Searching and Query Functions + // + public: + + CameraInstance* + FindClosestCamera(const Point3D &point_3D); + CameraInstance* + FindClosestCameraShowing(const Point3D *points); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Test Class Support + // + public: + Logical + TestInstance() const; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Construction and Destruction Support + // + public: + CameraInstanceManager(); + ~CameraInstanceManager(); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Tool Support + // + protected: + + void + InitializeCameraInstances(); + + public: + void + ReadNotationFile(); + void + CreateStreamedCameraInstances( + ResourceFile *res_file, + const char *map_name + ); + + void + WriteNotationFile(); + static ResourceDescription::ResourceID + CreateCameraInstancesStream( + ResourceFile *resource_file, + const char *camera_name, + const ResourceDirectories *directories + ); + }; + +#endif diff --git a/CODE/RP/MUNGA/CAMMPPR.CPP b/CODE/RP/MUNGA/CAMMPPR.CPP new file mode 100644 index 0000000..86728fb --- /dev/null +++ b/CODE/RP/MUNGA/CAMMPPR.CPP @@ -0,0 +1,262 @@ +//===========================================================================// +// File: cammppr.hpp. // +// Project: MUNGA Brick: Camera Controls Mapper // +// Contents: Interface specification for camera mapper // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- -----------------------------------------------------------// +// 06/20/95 JM Initial Coding // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. All rights reserved // +// PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +// +// Munga +// +#include +#pragma hdrstop + +#if !defined(CAMMPPR_HPP) +# include +#endif + +//############################################################################# +// Shared Data Support +// +CameraControlsMapper::SharedData + CameraControlsMapper::DefaultData( + CameraControlsMapper::ClassDerivations, + CameraControlsMapper::MessageHandlers, + CameraControlsMapper::AttributeIndex, + CameraControlsMapper::StateCount + ); + +Derivation + CameraControlsMapper::ClassDerivations( + Subsystem::ClassDerivations, + "CameraControlsMapper" + ); + +//############################################################################# +// Messaging Support +// +const Receiver::HandlerEntry + CameraControlsMapper::MessageHandlerEntries[]= +{ + MESSAGE_ENTRY(CameraControlsMapper, Keypress), + MESSAGE_ENTRY(CameraControlsMapper, DirectorMode), + MESSAGE_ENTRY(CameraControlsMapper, IncrementCamera), + MESSAGE_ENTRY(CameraControlsMapper, DecrementCamera), + MESSAGE_ENTRY(CameraControlsMapper, CreateCameraInstance), + MESSAGE_ENTRY(CameraControlsMapper, DeleteCameraInstance), + MESSAGE_ENTRY(CameraControlsMapper, OutputCameraInstances) +}; + +CameraControlsMapper::MessageHandlerSet + CameraControlsMapper::MessageHandlers( + ELEMENTS(CameraControlsMapper::MessageHandlerEntries), + CameraControlsMapper::MessageHandlerEntries, + Subsystem::MessageHandlers + ); + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + CameraControlsMapper::KeypressMessageHandler( + ReceiverDataMessageOf *message + ) +{ + Check(this); + Check(message); + + switch (message->dataContents) + { + case 'd': + case 'D': + { + ReceiverDataMessageOf + button_message2( + CameraControlsMapper::DirectorModeMessageID, + sizeof(ReceiverDataMessageOf), + 1 + ); + Dispatch(&button_message2); + break; + } + + case 'o': + case 'O': + { + ReceiverDataMessageOf + button_message2( + CameraControlsMapper::OutputCameraInstancesMessageID, + sizeof(ReceiverDataMessageOf), + 1 + ); + Dispatch(&button_message2); + break; + } + } +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + CameraControlsMapper::DirectorModeMessageHandler( + ReceiverDataMessageOf *message + ) +{ + if (message->dataContents > 0) + { + CameraShip *camera = GetEntity(); + Check(camera); + if(camera->GetSimulationState() != CameraShip::ConfigureCamerasState) + { + camera->SetPerformance(&CameraShip::DriveCamera); + camera->SetSimulationState(CameraShip::ConfigureCamerasState); + CameraInstance *cam = camera->GetCurrentCamera(); + Check(cam); + DEBUG_STREAM << cam->GetCameraName() << endl; + } + else + { + camera->SetPerformance(&CameraShip::FollowGoal); + camera->SetSimulationState(CameraShip::DefaultState); + camera->lastSwitch = Now(); + } + } +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + CameraControlsMapper::IncrementCameraMessageHandler( + ReceiverDataMessageOf *message + ) +{ + if(message->dataContents > 0) + { + CameraShip *camera = GetEntity(); + Check(camera); + camera->IncrementCameraInstance(); + } +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + CameraControlsMapper::DecrementCameraMessageHandler( + ReceiverDataMessageOf *message + ) +{ + if (message->dataContents > 0) + { + CameraShip *camera = GetEntity(); + Check(camera); + camera->DecrementCameraInstance(); + } +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + CameraControlsMapper::CreateCameraInstanceMessageHandler( + ReceiverDataMessageOf *message + ) +{ + if (message->dataContents > 0) + { + CameraShip *camera = GetEntity(); + Check(camera); + camera->CreateCameraInstance(); + } +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + CameraControlsMapper::DeleteCameraInstanceMessageHandler( + ReceiverDataMessageOf *message + ) +{ + if (message->dataContents > 0) + { + CameraShip *camera = GetEntity(); + Check(camera); + camera->DeleteCameraInstance(); + } +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + CameraControlsMapper::OutputCameraInstancesMessageHandler( + ReceiverDataMessageOf *message + ) +{ + if (message->dataContents > 0) + { + CameraShip *camera = GetEntity(); + Check(camera); + camera->OutputCameraList(); + } +} + +//############################################################################# +// Attribute Support +// +const CameraControlsMapper::IndexEntry + CameraControlsMapper::AttributePointers[]= +{ + ATTRIBUTE_ENTRY(CameraControlsMapper, StickPosition, stickPosition), + ATTRIBUTE_ENTRY(CameraControlsMapper, ThrottlePosition, throttlePosition), + ATTRIBUTE_ENTRY(CameraControlsMapper, PedalsPosition, pedalsPosition), + ATTRIBUTE_ENTRY(CameraControlsMapper, ReverseThrust, reverseThrust), + ATTRIBUTE_ENTRY(CameraControlsMapper, DriveCamera, driveCamera), + ATTRIBUTE_ENTRY(CameraControlsMapper, SlideOrClamp, slideOrClamp) +}; + +CameraControlsMapper::AttributeIndexSet + CameraControlsMapper::AttributeIndex( + ELEMENTS(CameraControlsMapper::AttributePointers), + CameraControlsMapper::AttributePointers, + Subsystem::AttributeIndex + ); + +//############################################################################# +// Construction and Destruction +// + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +CameraControlsMapper::CameraControlsMapper( + CameraShip *owner, + int subsystem_ID, + SubsystemResource *subsystem_resource, + SharedData &shared_data +): + Subsystem(owner, subsystem_ID, subsystem_resource, shared_data) +{ + stickPosition.x = 0.0f; + stickPosition.y = 0.0f; + throttlePosition = 0.0f; + pedalsPosition = 0.0f; + driveCamera = 0; + slideOrClamp = 0; + reverseThrust = 0; + Check_Fpu(); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +CameraControlsMapper::~CameraControlsMapper() +{ +} + +Logical + CameraControlsMapper::TestInstance() const +{ + return IsDerivedFrom(ClassDerivations); +} + diff --git a/CODE/RP/MUNGA/CAMMPPR.HPP b/CODE/RP/MUNGA/CAMMPPR.HPP new file mode 100644 index 0000000..c3a1464 --- /dev/null +++ b/CODE/RP/MUNGA/CAMMPPR.HPP @@ -0,0 +1,163 @@ +//===========================================================================// +// File: cammppr.hpp. // +// Project: MUNGA Brick: Camera Controls Mapper // +// Contents: Interface specification for camera mapper // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- -----------------------------------------------------------// +// 06/20/95 JM Initial Coding // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. All rights reserved // +// PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(CAMMPPR_HPP) +# define CAMMPPR_HPP + +# if !defined (SUBSYSTM_HPP) +# include +# endif + +# if !defined (CAMSHIP_HPP) +# include +# endif + +# if !defined (CONTROLS_HPP) +# include +# endif + + //########################################################################## + //####################### CameraControlsMapper ######################## + //########################################################################## + class CameraControlsMapper: + public Subsystem + { + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Shared Data support + // + public: + static Derivation ClassDerivations; + static SharedData DefaultData; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Messaging Support + // + public: + enum { + KeypressMessageID = Subsystem::NextMessageID, + DirectorModeMessageID, + IncrementCameraMessageID, + DecrementCameraMessageID, + CreateCameraInstanceMessageID, + DeleteCameraInstanceMessageID, + OutputCameraInstancesMessageID, + NextMessageID + }; + + void + KeypressMessageHandler(ReceiverDataMessageOf *message); + + void + DirectorModeMessageHandler( + ReceiverDataMessageOf *message + ); + + void + IncrementCameraMessageHandler( + ReceiverDataMessageOf *message + ); + + void + DecrementCameraMessageHandler( + ReceiverDataMessageOf *message + ); + + void + CreateCameraInstanceMessageHandler( + ReceiverDataMessageOf *message + ); + + void + DeleteCameraInstanceMessageHandler( + ReceiverDataMessageOf *message + ); + + void + OutputCameraInstancesMessageHandler( + ReceiverDataMessageOf *message + ); + + protected: + static const HandlerEntry + MessageHandlerEntries[]; + static MessageHandlerSet + MessageHandlers; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Attribute Support + // + public: + enum { + StickPositionAttributeID = Subsystem::NextAttributeID, + ThrottlePositionAttributeID, + PedalsPositionAttributeID, + ReverseThrustAttributeID, + DriveCameraAttributeID, + SlideOrClampAttributeID, + NextAttributeID + }; + private: + static const IndexEntry AttributePointers[]; + + protected: + static AttributeIndexSet AttributeIndex; + + // + // public attribute declarations go here + // + public: + ControlsJoystick stickPosition; + Scalar throttlePosition; + Scalar pedalsPosition; + ControlsButton + reverseThrust, + driveCamera, + slideOrClamp; + + //########################################################################## + // Model support + // + public: + + CameraShip* + GetEntity() + {return (CameraShip*)Subsystem::GetEntity();} + + typedef void + (CameraControlsMapper::*Performance)(Scalar time_slice); + + void + SetPerformance(Performance performance) + { + Check(this); + activePerformance = (Simulation::Performance)performance; + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Construction and Destruction + // + protected: + CameraControlsMapper( + CameraShip *owner, + int subsystem_ID, + SubsystemResource *subsystem_resource, + SharedData &shared_data + ); + + public: + ~CameraControlsMapper(); + + Logical + TestInstance() const; + }; +#endif diff --git a/CODE/RP/MUNGA/CAMSHIP.CPP b/CODE/RP/MUNGA/CAMSHIP.CPP new file mode 100644 index 0000000..21646a2 --- /dev/null +++ b/CODE/RP/MUNGA/CAMSHIP.CPP @@ -0,0 +1,767 @@ +//===========================================================================// +// File: camship.cc // +// Project: Munga // +// Contents: CameraShip Controls the current viewpoint of the cameraShip & // +// manages the simulation modes // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 08/09/95 JM Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +// +// munga Includes +// +#include +#pragma hdrstop + +#if !defined(CAMSHIP_HPP) +# include +#endif + +#if !defined(PLAYER_HPP) +# include +#endif + +#if !defined(MISSION_HPP) +# include +#endif + +#if !defined(CAMMPPR_HPP) +# include +#endif + +#if !defined(APP_HPP) + #include +#endif + +#if !defined(HOSTMGR_HPP) + #include +#endif + +//########################################################################## +//############################# CameraShip ################################ +//########################################################################## + +//############################################################################# +// Shared Data Support +// +Derivation + CameraShip::ClassDerivations( + Mover::ClassDerivations, + "CameraShip" + ); + +CameraShip::SharedData + CameraShip::DefaultData( + CameraShip::ClassDerivations, + CameraShip::MessageHandlers, + CameraShip::AttributeIndex, + CameraShip::StateCount, + (Entity::MakeHandler)CameraShip::Make + ); + +//############################################################################# +// Attribute Support +// + +const CameraShip::IndexEntry + CameraShip::AttributePointers[]= +{ + ATTRIBUTE_ENTRY(CameraShip, MapRange, mapRange), + ATTRIBUTE_ENTRY(CameraShip, MapLinearPosition, mapLinearPosition), + ATTRIBUTE_ENTRY(CameraShip, MapAngularPosition, mapAngularPosition) +}; + +CameraShip::AttributeIndexSet + CameraShip::AttributeIndex( + ELEMENTS(CameraShip::AttributePointers), + CameraShip::AttributePointers, + Mover::AttributeIndex + ); + +//############################################################################# +// Messaging Support +// +const Receiver::HandlerEntry + CameraShip::MessageHandlerEntries[]= +{ + MESSAGE_ENTRY(CameraShip, Direction) +}; + +CameraShip::MessageHandlerSet + CameraShip::MessageHandlers( + ELEMENTS(CameraShip::MessageHandlerEntries), + CameraShip::MessageHandlerEntries, + Entity::MessageHandlers + + ); + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + CameraShip::DirectionMessageHandler(DirectionMessage *message) +{ + Check(this); + Check(message); + + Check(application); + HostManager *host = application->GetHostManager(); + Check(host); + SetGoalEntity(host->GetEntityPointer(message->goalEntity)); + Check(goalEntity); + mapLinearPosition = &goalEntity->localOrigin.linearPosition; + focusOffset = message->focusOffset; + SetSimulationState(DefaultState); + timeOnCamera = message->timeOnCamera; + lastSwitch = Now(); + lastSwitch -= timeOnCamera; + Check_Fpu(); +} + +//############################################################################# +// ControlsMapper Support +// + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + CameraShip::SetMappingSubsystem(CameraControlsMapper *mapper) +{ + Check(this); + Check(mapper); + if(subsystemArray[ControlsMapperSubsystem]) + { + Unregister_Object(subsystemArray[ControlsMapperSubsystem]); + delete subsystemArray[ControlsMapperSubsystem]; + } + subsystemArray[ControlsMapperSubsystem] = mapper; + Check_Fpu(); +} + +//############################################################################# +// Simulation Support +// + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + CameraShip::DriveCamera(Scalar time_slice) +{ + Check(this); + CameraControlsMapper* controls = + Cast_Object( + CameraControlsMapper*, + GetSubsystem(CameraShip::ControlsMapperSubsystem) + ); + Check(controls); + + // + //----------------------------------------------- + // If we are in positioning mode, move the camera + //----------------------------------------------- + // + if (controls->driveCamera > 0) + { + ApplyControlledPanAndTilt(controls, time_slice); + ApplyControlledCameraMotion(controls, time_slice); + ApplyControlledCameraHeight(controls); + currentCamera->SetLocalOrigin(localOrigin); + } + + // + //------------------------------------------------------------------------ + // Operate in camera mode, obeying the limits of the camera as established + // by the clamps + //------------------------------------------------------------------------ + // + else + { + // + //------------------------- + // Stop any existing motion + //------------------------- + // + worldLinearVelocity = Vector3D::Identity; + + // + //----------------------------------------------------------------------- + // Read the controls for panning the camera, and if the clamp override is + // on, tell the camera to allow this orientation + //----------------------------------------------------------------------- + // + ApplyControlledPanAndTilt(controls, time_slice); + localToWorld = localOrigin; + + // + //--------------------------------------------------------------------- + // Establish an aim point along negative Z and figure out where that is + // in world space, then point the camera there. The camera clamps will + // automatically do their thing + //--------------------------------------------------------------------- + // + Point3D local_aim(0.0f, 0.0f, -1.0f); + Point3D world_aim; + world_aim.Multiply(local_aim, localToWorld); + if (controls->slideOrClamp > 0) + { + currentCamera->AllowLookingAt(world_aim); + } + AimCameraAtPoint(world_aim); + } + localToWorld = localOrigin; + Check_Fpu(); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + CameraShip::ApplyControlledPanAndTilt( + CameraControlsMapper *controls, + Scalar time_slice + ) +{ + Check(this); + Check(controls); + + // + //----------------------------------------- + // Point the Camera in the direction of the + // Joystick Position Calc Pitch and Yaw only + //----------------------------------------- + // + Scalar rotation_amount; + if(controls->stickPosition.x < -0.02f) + { + + rotation_amount = controls->stickPosition.x + 0.02f; + rotation_amount *= rotation_amount; + rotation_amount *= -1.0f; + } + else if (controls->stickPosition.x > 0.02f) + { + rotation_amount = controls->stickPosition.x - 0.02f; + rotation_amount *= rotation_amount; + } + else + { + rotation_amount = 0.0f; + } + YawPitchRoll ypr; + ypr = localOrigin.angularPosition; + + ypr.yaw += rotation_amount * PI * time_slice; + ypr.pitch += controls->stickPosition.y * PI * 0.2f * time_slice; + + localOrigin.angularPosition = ypr; + Check_Fpu(); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + CameraShip::ApplyControlledCameraHeight(CameraControlsMapper *controls) +{ + Check(this); + Check(controls); + + // + //---------------------------------------------------- + // Raise and lower the cameraShip according to the pedals + //---------------------------------------------------- + // + localOrigin.linearPosition.y += controls->pedalsPosition; + Check_Fpu(); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + CameraShip::ApplyControlledCameraMotion( + CameraControlsMapper *controls, + Scalar time_slice + ) +{ + Check(this); + Check(controls); + + localAcceleration.linearMotion.z = + -25.0f * controls->throttlePosition * time_slice; + if (controls->reverseThrust > 0) + { + localAcceleration.linearMotion.z = -localAcceleration.linearMotion.z; + } + + // + //~~~~~~~~~~~~~~~~~~~ + // Apply Linear Drag + //~~~~~~~~~~~~~~~~~~~ + // + Vector3D drag_force; + + drag_force.Multiply( + localVelocity.linearMotion, + positiveLinearDragCoefficients + ); + + Vector3D new_accel; + new_accel.Subtract( + localAcceleration.linearMotion, + drag_force + ); + + localAcceleration.linearMotion = new_accel; + // + //~~~~~~~~~~~~~~~~~~~~~~~~ + // ApplyWorldAccelerations + //~~~~~~~~~~~~~~~~~~~~~~~~ + localVelocity.linearMotion += localAcceleration.linearMotion; + + worldLinearVelocity.Multiply( + localVelocity.linearMotion, + localToWorld + ); + localOrigin.linearPosition += worldLinearVelocity; + + Check_Fpu(); +} + +//############################################################################# +// Follow GoalEntity Support +// + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + CameraShip::FollowGoal(Scalar time_slice) +{ + Check(this); + + // + //----------------------------------------------- + // If no goalEntity assigned ask for one and wait + //----------------------------------------------- + // + if (!goalEntity) + { + return; + } + Check(goalEntity); + Point3D target; + target.Multiply(focusOffset, goalEntity->localToWorld); + + // + //------------------------------------------------------------------------ + // If time has not yet expired on this camera, keep with it if can see the + // goal entity + //------------------------------------------------------------------------ + // + Check(currentCamera); + if ( + lastPerformance - lastSwitch > timeOnCamera + || !currentCamera->CanCameraSee(target) + ) + { + CameraInstance *old_camera = currentCamera; + GoToClosestCamera(target); + if (!currentCamera) + { + currentCamera = old_camera; + } + Check(currentCamera); + + // + //------------------------------------------------------------------------ + // If we need to switch cameras, have the new camera point directly at the + // target + //------------------------------------------------------------------------ + // + if (currentCamera != old_camera) + { + AimCameraAtPoint(target); + lastSwitch = lastPerformance; + } + else + { + goto Rotate_Camera; + } + } + + // + //--------------------------------------------------- + // Otherwise, rotate the camera as needed and allowed + //--------------------------------------------------- + // + else + { +Rotate_Camera: + RotateCameraToPoint(time_slice, target); + } + + // + //------------------------ + // Set the tranform matrix + //------------------------ + // + localToWorld = localOrigin; + Check_Fpu(); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + CameraShip::GoToClosestCamera(const Point3D &point_3D) +{ + Check(this); + currentCamera = cameraManager.FindClosestCamera(point_3D); + Check_Fpu(); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + CameraShip::AimCameraAtPoint(const Point3D &point_3D) +{ + Check(this); + Check(currentCamera); + currentCamera->LookAt(&localOrigin, point_3D); + localVelocity.angularMotion = Vector3D::Identity; + Check_Fpu(); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + CameraShip::RotateCameraToPoint( + Scalar time_slice, + const Point3D &point_3D + ) +{ + Check(this); + Check(currentCamera); + Check(&point_3D); + + // + //--------------------------------------------------------- + // Calculate the rotation needed to point to the goalEntity + //--------------------------------------------------------- + // + Origin target; + currentCamera->LookAt(&target, point_3D); + YawPitchRoll new_yaw_pitch_roll; + new_yaw_pitch_roll = target.angularPosition; + + Vector3D new_pos(new_yaw_pitch_roll.pitch, new_yaw_pitch_roll.yaw, 0.0f); + YawPitchRoll old_pos_euler; + old_pos_euler = localOrigin.angularPosition; + + Vector3D old_pos(old_pos_euler.pitch, old_pos_euler.yaw, 0.0f); + old_pos.x = Radian::Normalize(old_pos.x); + old_pos.y = Radian::Normalize(old_pos.y); + + // + // new - old position + // + if (new_pos.x-old_pos.x > PI) { + new_pos.x -= TWO_PI; + } + else if (new_pos.x-old_pos.x < -PI) { + new_pos.x += TWO_PI; + } + if (new_pos.y-old_pos.y > PI) { + new_pos.y -= TWO_PI; + } + else if (new_pos.y-old_pos.y < -PI) { + new_pos.y += TWO_PI; + } + Vector3D delta_rot; + delta_rot.Subtract( + new_pos, + old_pos + ); + + // + //------------------- + // Apply Angular Drag + //------------------- + // + Vector3D + drag; + + drag.Multiply( + localVelocity.angularMotion, + angularDragCoefficients + ); + + // + //~~~~~~~~~~~~~~~~~~~~~ + // Apply SpringConstant + //~~~~~~~~~~~~~~~~~~~~~ + // + Vector3D + delta_rot_spring; + delta_rot_spring.Multiply( + delta_rot, + elasticityCoefficient + ); + + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Calculate the new angular acceleration + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + localAcceleration.angularMotion.Subtract( + delta_rot_spring, + drag + ); + + Scalar halft_squared = 0.5 *(time_slice * time_slice); + + Vector3D + accel_comp; + accel_comp.Multiply( + localAcceleration.angularMotion, + halft_squared + ); + + // + // velocity * delta time + // + Vector3D + scaled_velocity; + scaled_velocity.Multiply( + localVelocity.angularMotion, + time_slice + ); + + Vector3D + tmp_position; + tmp_position.Add( + scaled_velocity, + accel_comp + ); + Vector3D + clamped_accel; + clamped_accel.Add( + old_pos, + tmp_position + ); + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Apply Acceleration to angular Position + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + YawPitchRoll + new_yawpitchroll(clamped_accel.y, clamped_accel.x, clamped_accel.z); + + LinearMatrix + rot_matrix(LinearMatrix::Identity); + rot_matrix = new_yawpitchroll; + localOrigin.angularPosition = rot_matrix; + + // + // Calc new Velocity + // + Vector3D + scaled_accel; + scaled_accel.Multiply( + localAcceleration.angularMotion, + time_slice + ); + Vector3D + ang_vel; + ang_vel.Add( + localVelocity.angularMotion, + scaled_accel + ); + localVelocity.angularMotion = ang_vel; + + Check_Fpu(); +} + +//############################################################################# +// CameraInstanceManager Support +// + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + CameraShip::CreateCameraInstance() +{ + Check(this); + Check(&cameraManager); + currentCamera = cameraManager.CreateCameraInstance(localOrigin); + DEBUG_STREAM << currentCamera->GetCameraName() << endl; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + CameraShip::DeleteCameraInstance() +{ + Check(this); + + // + //--------------------------------------------- + // If this is the last camera, don't delete it! + //--------------------------------------------- + // + Check(&cameraManager); + CameraInstance *next_camera = cameraManager.IncrementIterator(); + if (next_camera == currentCamera) + { + return; + } + + currentCamera = cameraManager.DeleteCameraInstance(); + Check(currentCamera); + DEBUG_STREAM << currentCamera->GetCameraName() << endl; + localOrigin = currentCamera->GetLocalOrigin(); + localToWorld = localOrigin; + Point3D local_aim(0.0f, 0.0f, -1.0f); + Point3D world_aim; + world_aim.Multiply(local_aim, localToWorld); + AimCameraAtPoint(world_aim); + localToWorld = localOrigin; + Check_Fpu(); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + CameraShip::IncrementCameraInstance() +{ + Check(this); + Check(&cameraManager); + currentCamera = cameraManager.IncrementIterator(); + Check(currentCamera); + DEBUG_STREAM << currentCamera->GetCameraName() << endl; + localOrigin = currentCamera->GetLocalOrigin(); + localToWorld = localOrigin; + Point3D local_aim(0.0f, 0.0f, -1.0f); + Point3D world_aim; + world_aim.Multiply(local_aim, localToWorld); + AimCameraAtPoint(world_aim); + localToWorld = localOrigin; + Check_Fpu(); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + CameraShip::DecrementCameraInstance() +{ + Check(this); + Check(&cameraManager); + currentCamera = cameraManager.DecrementIterator(); + Check(currentCamera); + DEBUG_STREAM << currentCamera->GetCameraName() << endl; + localOrigin = currentCamera->GetLocalOrigin(); + localToWorld = localOrigin; + Point3D local_aim(0.0f, 0.0f, -1.0f); + Point3D world_aim; + world_aim.Multiply(local_aim, localToWorld); + AimCameraAtPoint(world_aim); + localToWorld = localOrigin; + Check_Fpu(); +} + +//############################################################################# +// Motion Support Functions +// + +//############################################################################# +// Construction and Destruction Support +// +CameraShip::CameraShip( + CameraShip::MakeMessage *creation_message, + CameraShip::SharedData &virtual_data +): + Mover(creation_message, virtual_data) +{ + SetValidFlag(); + if (GetInstance() == ReplicantInstance) + { + return; + } + // + //---------------------------- + // Initialize local variables + //---------------------------- + // + goalEntity = NULL; + localOrigin = Origin::Identity; + focusOffset = Vector3D::Identity; + + // + //------------------------------ + // Initialize attributes + //------------------------------ + // + mapRange = 1000.0; // number of meters across display + mapLinearPosition = NULL; // force nav display to use object's lin. pos + mapAngularPosition = NULL; // force nav display to not turn or tilt + // + //------------------------------ + // Initialize the subsystemArray + //------------------------------ + // + subsystemCount = BasicSubsystemCount; + Verify(!subsystemArray); + subsystemArray = new (Subsystem (*[subsystemCount])); + Register_Pointer(subsystemArray); + subsystemArray[ControlsMapperSubsystem] = NULL; + + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Initialize the camera's viewpoint to the first camera + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + currentCamera = cameraManager.GetCurrent(); + if (!currentCamera) + { + CreateCameraInstance(); + } + Check(currentCamera); + localOrigin = currentCamera->GetLocalOrigin(); + localToWorld = localOrigin; + Point3D local_aim(0.0f, 0.0f, -1.0f); + Point3D world_aim; + world_aim.Multiply(local_aim, localToWorld); + AimCameraAtPoint(world_aim); + localToWorld = localOrigin; + lastSwitch = Now(); + timeOnCamera = 0.0f; + + SetPerformance(&CameraShip::FollowGoal); + SetSimulationState(DefaultState); + + Check_Fpu(); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +CameraShip* + CameraShip::Make(MakeMessage *creation_message) +{ + return new CameraShip(creation_message); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +CameraShip::~CameraShip() +{ +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + CameraShip::TestInstance() const +{ + return IsDerivedFrom(ClassDerivations); +} + diff --git a/CODE/RP/MUNGA/CAMSHIP.HPP b/CODE/RP/MUNGA/CAMSHIP.HPP new file mode 100644 index 0000000..ddeabef --- /dev/null +++ b/CODE/RP/MUNGA/CAMSHIP.HPP @@ -0,0 +1,284 @@ +//===========================================================================// +// File: camship.hh // +// Project: Munga // +// Contents: Camera Interface // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 08/08/95 JM Initial coding. // +// Classes: CameraShip // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// +#if !defined(CAMSHIP_HPP) +# define CAMSHIP_HPP + +# if !defined (MOVER_HPP) +# include +# endif + +# if !defined (CAMMGR_HPP) +# include +# endif + + class CameraControlsMapper; + + //########################################################################## + //############### CameraShip::DirectionMessage ################# + //########################################################################## + + class CameraShip__DirectionMessage : + public Mover::Message + { + public: + EntityID + goalEntity; + Scalar + timeOnCamera; + Point3D + focusOffset; + + CameraShip__DirectionMessage( + Receiver::MessageID message_ID, + size_t length, + const EntityID& goal_entity, + Scalar time_on_camera, + const Point3D& focus + ): + Entity::Message(message_ID, length), + goalEntity(goal_entity), + timeOnCamera(time_on_camera), + focusOffset(focus) + {} + }; + + //########################################################################## + //############################# CameraShip ################################ + //########################################################################## + + class CameraShip : + public Mover + { + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Shared Data support + // + public: + static Derivation ClassDerivations; + static SharedData DefaultData; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Messaging support + // + protected: + + static const HandlerEntry + MessageHandlerEntries[]; + static MessageHandlerSet + MessageHandlers; + + public: + enum{ + DirectionMessageID = Entity::NextMessageID, + NextMessageID + }; + + typedef CameraShip__DirectionMessage DirectionMessage; + + void + DirectionMessageHandler(DirectionMessage *message); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Attribute Support + // + public: + enum + { + MapRangeAttributeID = Mover::NextAttributeID, + MapLinearPositionAttributeID, + MapAngularPositionAttributeID, + NextAttributeID + }; + + private: + static const IndexEntry AttributePointers[]; + + protected: + static AttributeIndexSet AttributeIndex; + + public: + Scalar + mapRange; + Point3D + *mapLinearPosition; // pointer to linear position of object or NULL + Quaternion + *mapAngularPosition; // pointer to angular position of object or NULL + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Model support + // + public: + enum { + ControlsMapperSubsystem, + BasicSubsystemCount + }; + void + SetMappingSubsystem(CameraControlsMapper *mapper); + + // + // Various States of the CameraShip + // + enum { + ConfigureCamerasState = Mover::StateCount, + StateCount + }; + + typedef void + (CameraShip::*Performance)(Scalar time_slice); + + void + SetPerformance(Performance performance) + { + Check(this); + activePerformance = (Simulation::Performance)performance; + } + + void + FollowGoal(Scalar time_slice); + + void + DriveCamera(Scalar time_slice); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Flag Support + // + public: + + enum{ + DefaultFlags = Mover::DefaultFlags | + NoCollisionVolumeFlag | + NoCollisionTestFlag | + InitialStasisFlag + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Construction and Destruction + // + public: + + static CameraShip* + Make(MakeMessage *creation_message); + + CameraShip( + MakeMessage *creation_message, + SharedData &virtual_data = DefaultData + ); + ~CameraShip(); + + Logical + TestInstance() const; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Public Data and Member Access Functions + // + public: + + void + SetGoalEntity(Entity *goal_entity) + {Check(this); Check(goal_entity); goalEntity = goal_entity;} + + Entity* + GetGoalEntity() + {Check(this); return goalEntity; } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Local Member Data + // + public: + void + GoToClosestCamera(const Point3D &point_3D); + CameraInstance* + GetCurrentCamera() + {Check(this); return currentCamera;} + + Time + lastSwitch; + Scalar + timeOnCamera; + + protected: + CameraInstanceManager + cameraManager; + Entity + *goalEntity; + CameraInstance + *currentCamera; + Point3D + focusOffset; + + void + MoveCameraShip(CameraInstance *camera_instance); + + void + AimCameraAtPoint(const Point3D &point_3D); + + void + RotateCameraToPoint( + Scalar time_slice, + const Point3D &point_3D + ); + + // + // Camera Motion Support + // + public: + void + ResetMotionVariables() + { + Check(this); + localVelocity = Motion::Identity; + localAcceleration = Motion::Identity; + worldLinearVelocity = Vector3D::Identity; + worldLinearAcceleration = Vector3D::Identity; + } + + protected: + void + ApplyControlledPanAndTilt( + CameraControlsMapper *controls, + Scalar time_slice + ); + void + ApplyControlledCameraHeight(CameraControlsMapper *controls); + + void + ApplyControlledCameraMotion( + CameraControlsMapper *controls, + Scalar time_slice + ); + + // + // Camera Manager Support + // + public: + void + CreateCameraInstance(); + + void + DeleteCameraInstance(); + + void + IncrementCameraInstance(); + + void + DecrementCameraInstance(); + + public: + void + OutputCameraList() + {cameraManager.WriteNotationFile();} + }; + +#endif + diff --git a/CODE/RP/MUNGA/CHAIN.CPP b/CODE/RP/MUNGA/CHAIN.CPP new file mode 100644 index 0000000..d850c44 --- /dev/null +++ b/CODE/RP/MUNGA/CHAIN.CPP @@ -0,0 +1,474 @@ +//===========================================================================// +// File: chain.cc // +// Project: MUNGA Brick: Connection Engine // +// Contents: Implementation details of chains and their iterators // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 09/29/94 ECH Initial coding. // +// 10/20/94 JMA Fixed style stuff. Merged with CHNITR.HPP, and added // +// operator functions to iterator // +// 10/23/94 ECH Added greater deletion safety // +// 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. // +// PROPRIETARY AND CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(CHAIN_HPP) + #include +#endif + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ChainLink ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +MemoryBlock + ChainLink::AllocatedMemory( + sizeof(ChainLink), + CHAINLINK_MEMORYBLOCK_ALLOCATION, + CHAINLINK_MEMORYBLOCK_ALLOCATION, + "ChainLink" + ); + +// +//############################################################################# +// ChainLink +//############################################################################# +// +ChainLink::ChainLink( + Chain *chain, + Plug *plug, + ChainLink *next_link, + ChainLink *prev_link +): + Link(chain, plug) +{ + // + //------------------------- + // Link into existing chain + //------------------------- + // + if ((nextChainLink = next_link) != NULL) + { + Check(nextChainLink); + nextChainLink->prevChainLink = this; + } + if ((prevChainLink = prev_link) != NULL) + { + Check(prevChainLink); + prevChainLink->nextChainLink = this; + } +} + +// +//############################################################################# +// ~ChainLink +//############################################################################# +// +ChainLink::~ChainLink() +{ + Chain *chain = Cast_Object(Chain*, socket); + + // + //-------------------------------------- + // Remove this link from the linked list + //-------------------------------------- + // + if (prevChainLink != NULL) + { + Check(prevChainLink); + prevChainLink->nextChainLink = nextChainLink; + } + else + { + Check(chain); + chain->head = nextChainLink; + } + if (nextChainLink != NULL) + { + Check(nextChainLink); + nextChainLink->prevChainLink = prevChainLink; + } + else + { + Check(chain); + chain->tail = prevChainLink; + } + prevChainLink = nextChainLink = NULL; + + // + //------------------------------------------ + // Remove this link from any plug references + //------------------------------------------ + // + ReleaseFromPlug(); + + // + //------------------------------------------------------------- + // Tell the node to release this link. Note that this link + // is not referenced by the plug or the chain at this point in + // time. + //------------------------------------------------------------- + // + if (chain->GetReleaseNode() != NULL) + { + Check(chain->GetReleaseNode()); + chain->GetReleaseNode()->ReleaseLinkHandler(chain, plug); + } +} + +// +//############################################################################# +// TestInstance +//############################################################################# +// +Logical + ChainLink::TestInstance() const +{ + Link::TestInstance(); + + if (prevChainLink != NULL) + { + Check_Signature(prevChainLink); + } + if (nextChainLink != NULL) + { + Check_Signature(nextChainLink); + } + return( True ); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Chain ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +// +//############################################################################# +// Chain +//############################################################################# +// +Chain::Chain(Node *node): + Socket(node) +{ + head = NULL; + tail = NULL; +} + +// +//############################################################################# +// ~Chain +//############################################################################# +// +Chain::~Chain() +{ + SetReleaseNode(NULL); + while (head != NULL) + { + Unregister_Object(head); + delete head; + } +} + +// +//############################################################################# +// TestInstance +//############################################################################# +// +Logical + Chain::TestInstance() const +{ + Socket::TestInstance(); + + if (head != NULL) + { + Check(head); + } + if (tail != NULL) + { + Check(tail); + } + return True; +} + +// +//############################################################################# +// AddImplementation +//############################################################################# +// +void + Chain::AddImplementation(Plug *plug) +{ + Check(this); + + tail = new ChainLink(this, plug, NULL, tail); + Register_Object(tail); + + if (head == NULL) + { + head = tail; + } +} + +// +//############################################################################# +// InsertChainLink +//############################################################################# +// +ChainLink* + Chain::InsertChainLink( + Plug *plug, + ChainLink *current_link + ) +{ + Check(this); + Check(plug); + Check(current_link); + + ChainLink *new_link = + new ChainLink( + this, + plug, + current_link, + current_link->prevChainLink + ); + Register_Object(new_link); + + Check(head); + if (head == current_link) + { + head = new_link; + } + return new_link; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ChainIterator ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +// +//############################################################################# +// ChainIterator +//############################################################################# +// +ChainIterator::ChainIterator(Chain *chain): + SocketIterator(chain) +{ + Check(chain); + currentLink = chain->head; +} + +ChainIterator::ChainIterator(const ChainIterator &iterator): + SocketIterator(Cast_Object(Chain*, iterator.socket)) +{ + Check(&iterator); + currentLink = iterator.currentLink; +} + +ChainIterator::~ChainIterator() +{ +} + +// +//########################################################################### +// TestInstance +//########################################################################### +// +Logical + ChainIterator::TestInstance() const +{ + SocketIterator::TestInstance(); + + if (currentLink != NULL) + { + Check( currentLink ); + } + return(True); +} + +// +//########################################################################### +// First +//########################################################################### +// +void + ChainIterator::First() +{ + currentLink = Cast_Object(Chain*, socket)->head; +} + +// +//########################################################################### +// Last +//########################################################################### +// +void + ChainIterator::Last() +{ + currentLink = Cast_Object(Chain*, socket)->tail; +} + +// +//########################################################################### +// Next +//########################################################################### +// +void + ChainIterator::Next() +{ + Check(currentLink); + currentLink = currentLink->nextChainLink; +} + +// +//########################################################################### +// Previous +//########################################################################### +// +void + ChainIterator::Previous() +{ + Check( currentLink ); + currentLink = currentLink->prevChainLink; +} + +// +//########################################################################### +// ReadAndNextImplementation +//########################################################################### +// +void* + ChainIterator::ReadAndNextImplementation() +{ + if (currentLink != NULL) + { + Plug *plug; + + Check(currentLink); + plug = currentLink->plug; + currentLink = currentLink->nextChainLink; + return plug; + } + return NULL; +} + +// +//########################################################################### +// ReadAndPreviousImplementation +//########################################################################### +// +void* + ChainIterator::ReadAndPreviousImplementation() +{ + if (currentLink != NULL) + { + Plug *plug; + + Check(currentLink); + plug = currentLink->plug; + currentLink = currentLink->prevChainLink; + return plug; + } + return NULL; +} + +// +//########################################################################### +// GetCurrentImplementation +//########################################################################### +// +void* + ChainIterator::GetCurrentImplementation() +{ + if (currentLink != NULL) + { + Check(currentLink); + return currentLink->plug; + } + return NULL; +} + +// +//########################################################################### +// GetSize +//########################################################################### +// +CollectionSize + ChainIterator::GetSize() +{ + + ChainLink *link; + CollectionSize count; + + count = 0; + + for ( + link = Cast_Object(Chain*, socket)->head; + link != NULL; + link = link->nextChainLink + ) { + Check(link); + count++; + } + return count; +} + +// +//########################################################################### +// GetNthImplementation +//########################################################################### +// +void* + ChainIterator::GetNthImplementation(CollectionSize index) +{ + ChainLink *link; + CollectionSize count; + + count = 0; + for ( + link = Cast_Object(Chain*, socket)->head; + link != NULL; + link = link->nextChainLink + ) { + Check(link); + if (count == index) { + currentLink = link; + return currentLink->plug; + } + count++; + } + return NULL; +} + +// +//########################################################################### +// Remove +//########################################################################### +// +void + ChainIterator::Remove() +{ + ChainLink *oldLink = currentLink; + + Check(currentLink); + currentLink = currentLink->nextChainLink; + + Unregister_Object(oldLink); + delete oldLink ; +} + +// +//########################################################################### +// InsertImplementation +//########################################################################### +// +void + ChainIterator::InsertImplementation(Plug *plug) +{ + currentLink = + Cast_Object(Chain*, socket)->InsertChainLink(plug, currentLink); + Check(currentLink); +} + +#ifdef TEST_CLASS +# include "chain.tcp" +#endif diff --git a/CODE/RP/MUNGA/CHAIN.HPP b/CODE/RP/MUNGA/CHAIN.HPP new file mode 100644 index 0000000..cb548bf --- /dev/null +++ b/CODE/RP/MUNGA/CHAIN.HPP @@ -0,0 +1,367 @@ +//===========================================================================// +// File: chain.hh // +// Project: MUNGA Brick: Connection Engine // +// Contents: Interface specification of Chains and their iterators // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 09/29/94 ECH Initial coding. // +// 10/20/94 JMA Fixed style stuff. Merged with CHNITR.HPP, and added // +// operator functions to iterator // +// 10/23/94 ECH Added greater deletion safety // +// 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. // +// PROPRIETARY AND CONFIDENTIAL // +//===========================================================================// + +#if !defined(CHAIN_HPP) +# define CHAIN_HPP + +# if !defined(NODE_HPP) +# include +# endif + +# if !defined(MEMBLOCK_HPP) +# include +# endif + + class Chain; + class ChainIterator; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ChainLink ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + #define CHAINLINK_MEMORYBLOCK_ALLOCATION (100) + + class ChainLink : public Link + { + friend class Chain; + friend class ChainIterator; + + public: + ~ChainLink(); + Logical + TestInstance() const; + + private: + ChainLink( + Chain *chain, + Plug *plug, + ChainLink *nextChainLink, + ChainLink *prevChainLink + ); + + ChainLink + *nextChainLink, + *prevChainLink; + + private: + static MemoryBlock + AllocatedMemory; + + void* + operator new(size_t) + {return AllocatedMemory.New();} + void + operator delete(void *where) + {AllocatedMemory.Delete(where);} + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Chain ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class Chain: + public Socket + { + friend class ChainLink; + friend class ChainIterator; + + public: + // + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // Public interface + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // + + // + //-------------------------------------------------------------------- + // Constructor, Destructor and testing + //-------------------------------------------------------------------- + // + Chain(Node *node); + ~Chain(); + + Logical + TestInstance() const; + static Logical + TestClass(); + static Logical + ProfileClass(); + + protected: + // + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // Protected interface + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // + void + AddImplementation(Plug *plug); + + private: + // + //-------------------------------------------------------------------- + // Private methods + //-------------------------------------------------------------------- + // + ChainLink* + InsertChainLink( + Plug *plug, + ChainLink *current_link + ); + + // + //-------------------------------------------------------------------- + // Private data + //-------------------------------------------------------------------- + // + ChainLink + *head, + *tail; + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ChainOf ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + template class ChainOf: + public Chain + { + public: + // + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // Public interface + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // + ChainOf(Node *node); + ~ChainOf(); + + // + //-------------------------------------------------------------------- + // Socket methods (see Socket for full listing) + //-------------------------------------------------------------------- + // + void + Add(T plug) + {AddImplementation(Cast_Object(Plug*,plug));} + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~ ChainOf templates ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + template + ChainOf::ChainOf(Node *node): + Chain(node) + { + } + + template + ChainOf::~ChainOf() + { + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~ ChainIterator ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class ChainIterator: + public SocketIterator + { + public: + // + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // Public interface + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // + + // + //-------------------------------------------------------------------- + // Constructors, Destructor and testing + //-------------------------------------------------------------------- + // + ChainIterator(Chain *chain); + ChainIterator(const ChainIterator &iterator); + ~ChainIterator(); + + Logical + TestInstance() const; + + // + //-------------------------------------------------------------------- + // Iterator methods (see Iterator for full listing) + //-------------------------------------------------------------------- + // + void + First(); + void + Last(); + void + Next(); + void + Previous(); + CollectionSize + GetSize(); + void + Remove(); + + protected: + // + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // Protected interface + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // + void* + ReadAndNextImplementation(); + void* + ReadAndPreviousImplementation(); + void* + GetCurrentImplementation(); + void* + GetNthImplementation(CollectionSize index); + void + InsertImplementation(Plug*); + + // + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // Protected data + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // + ChainLink + *currentLink; + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~ ChainIteratorOf ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + template class ChainIteratorOf: + public ChainIterator + { + public: + // + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // Public interface + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // + + // + //-------------------------------------------------------------------- + // Constructors and Destructor + //-------------------------------------------------------------------- + // + ChainIteratorOf(ChainOf *chain); + ChainIteratorOf(ChainOf &chain); + ChainIteratorOf(const ChainIteratorOf &iterator); + ~ChainIteratorOf(); + + // + //-------------------------------------------------------------------- + // Iterator methods (see Iterator for full listing) + //-------------------------------------------------------------------- + // + T + ReadAndNext() + {return (T)ReadAndNextImplementation();} + T + ReadAndPrevious() + {return (T)ReadAndPreviousImplementation();} + T + GetCurrent() + {return (T)GetCurrentImplementation();} + T + GetNth(CollectionSize index) + {return (T)GetNthImplementation(index);} + void + Insert(T plug) + {InsertImplementation(Cast_Object(Plug*,plug));} + + ChainIteratorOf& + Begin() + {return (ChainIteratorOf&)BeginImplementation();} + ChainIteratorOf& + End() + {return (ChainIteratorOf&)EndImplementation();} + ChainIteratorOf& + Forward() + {return (ChainIteratorOf&)ForwardImplementation();} + ChainIteratorOf& + Backward() + {return (ChainIteratorOf&)BackwardImplementation();} + + // + //--------------------------------------------------- + // Operators useful when it is know that the iterator + // is a ChainOf<> Iterator + //--------------------------------------------------- + // +#if 0 + Logical + operator!() + {return currentLink == NULL;} + operator T*() + {return GetCurrent();} + T* + operator->() + {return GetCurrent();} + T& + operator*() + {return *GetCurrent();} + + ChainIteratorOf& + operator++() + {Next(); return *this;} + ChainIteratorOf& + operator--() + {Previous(); return *this;} + T* + operator++(int) + {return ReadAndNext();} + T* + operator--(int) + {return ReadAndPrevious();} +#endif + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~ ChainIteratorOf templates ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + template + ChainIteratorOf::ChainIteratorOf(ChainOf *chain): + ChainIterator(chain) + { + } + + template + ChainIteratorOf::ChainIteratorOf(ChainOf &chain): + ChainIterator(&chain) + { + } + + template + ChainIteratorOf::ChainIteratorOf(const ChainIteratorOf &iterator): + ChainIterator(iterator) + { + } + + template + ChainIteratorOf::~ChainIteratorOf() + { + } + +#endif diff --git a/CODE/RP/MUNGA/CMPNNT.CPP b/CODE/RP/MUNGA/CMPNNT.CPP new file mode 100644 index 0000000..ca16c4b --- /dev/null +++ b/CODE/RP/MUNGA/CMPNNT.CPP @@ -0,0 +1,90 @@ +//===========================================================================// +// File: cmpnnt.cc // +// Project: MUNGA Brick: Entity // +// 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 +#pragma hdrstop + +#if !defined(CMPNNT_HPP) + #include +#endif + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Component ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +// +// Shared Data Support +// +Derivation + Component::ClassDerivations( + Receiver::ClassDerivations, + "Component" + ); + +Component::SharedData + Component::DefaultData( + Component::ClassDerivations, + Component::MessageHandlers + ); + +// +//############################################################################# +//############################################################################# +// +Component::Component( + ClassID class_id, + SharedData &shared_data +): + Receiver(class_id, shared_data) +{ +} + +// +//############################################################################# +//############################################################################# +// +Component::Component( + PlugStream *stream, + SharedData &shared_data +): + Receiver(stream, shared_data) +{ +} + +// +//############################################################################# +//############################################################################# +// +Component::~Component() +{ +} + +// +//############################################################################# +//############################################################################# +// +void + Component::Execute() +{ + Fail("Component::Execute - Should never reach here"); +} + +// +//############################################################################# +//############################################################################# +// +Logical + Component::TestInstance() const +{ + return IsDerivedFrom(ClassDerivations); +} + diff --git a/CODE/RP/MUNGA/CMPNNT.HPP b/CODE/RP/MUNGA/CMPNNT.HPP new file mode 100644 index 0000000..b0d0c90 --- /dev/null +++ b/CODE/RP/MUNGA/CMPNNT.HPP @@ -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 +# 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 + diff --git a/CODE/RP/MUNGA/COLLASST.CPP b/CODE/RP/MUNGA/COLLASST.CPP new file mode 100644 index 0000000..8bad5cb --- /dev/null +++ b/CODE/RP/MUNGA/COLLASST.CPP @@ -0,0 +1,392 @@ +//===========================================================================// +// File: collasst.cc // +// Project: MUNGA Brick: Collision // +// Contents: // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 02/17/95 ECH Initial coding // +//---------------------------------------------------------------------------// +// Copyright (C) 1994, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(COLLASST_HPP) +# include +#endif + +#if !defined(MOVER_HPP) +# include +#endif + +#if !defined(APP_HPP) + #include +#endif + +#if !defined(INTEREST_HPP) + #include +#endif + +// +//############################################################################# +// Make +//############################################################################# +// +CollisionAssistant* + CollisionAssistant::Make(Mover *mover) +{ + Check(mover); + + // + // Create the collision assistant + // + CollisionAssistant *collision_assistant; + + collision_assistant = new CollisionAssistant(mover->GetInterestZoneID()); + Check(collision_assistant); + return collision_assistant; +} + +// +//############################################################################# +// CollisionAssistant +//############################################################################# +// +CollisionAssistant::CollisionAssistant(InterestZoneID interest_zone_ID): + collisionOriginSocket(NULL) +{ + Verify(interest_zone_ID != NullInterestZoneID); + currentInterestZoneID = interest_zone_ID; + LinkToInterestZone(interest_zone_ID); +} + +// +//############################################################################# +// ~CollisionAssistant +//############################################################################# +// +CollisionAssistant::~CollisionAssistant() +{ +} + +// +//############################################################################# +// TestInstance +//############################################################################# +// +Logical + CollisionAssistant::TestInstance() const +{ + Node::TestInstance(); + Verify(currentInterestZoneID != NullInterestZoneID); + Check(&collisionOriginSocket); + return True; +} + +// +//############################################################################# +// Update +//############################################################################# +// +void + CollisionAssistant::Update(InterestZoneID interest_zone_ID) +{ + Check(this); + Verify(interest_zone_ID != NullInterestZoneID); + + if (interest_zone_ID == currentInterestZoneID) + return; + currentInterestZoneID = interest_zone_ID; + + // + // Remove current collision origin and link to new one + // + if (collisionOriginSocket.GetCurrent() != NULL) + { + collisionOriginSocket.Remove(); + } + LinkToInterestZone(interest_zone_ID); +} + +// +//############################################################################# +// LinkToInterestZone +//############################################################################# +// +void + CollisionAssistant::LinkToInterestZone(InterestZoneID interest_zone_ID) +{ + Check(this); + Verify(interest_zone_ID != NullInterestZoneID); + + // + //-------------------------------------------------------------------------- + // Does the interest zone have a collision origin? + //-------------------------------------------------------------------------- + // + InterestZone *interest_zone; + CollisionOrigin *collision_origin; + + Check(application); + Check(application->GetInterestManager()); + interest_zone = + application->GetInterestManager()->GetInterestZone(interest_zone_ID); + Check(interest_zone); + + collision_origin = interest_zone->GetCollisionOrigin(); + if (collision_origin == NULL) + { + // + // It does not, so create one + // + collision_origin = new CollisionOrigin(interest_zone_ID); + Register_Object(collision_origin); + interest_zone->AdoptCollisionOrigin(collision_origin); + + application->GetInterestManager()->AdoptInterestOrigin(collision_origin); + } + Check(collision_origin); + + // + // link to the collision origin + // + collisionOriginSocket.Add(collision_origin); +} + +//~~~~~~~~~~~~~~~~~ CollisionAssistant__MovingEntityIterator ~~~~~~~~~~~~~~~~~~ + +CollisionAssistant__MovingEntityIterator:: + CollisionAssistant__MovingEntityIterator( + CollisionAssistant *collision_assistant + ): + CollisionOrigin__MovingEntityIterator( + collision_assistant->collisionOriginSocket.GetCurrent() + ) +{ +} + +CollisionAssistant__MovingEntityIterator:: + ~CollisionAssistant__MovingEntityIterator() +{ +} + +#if 0 +// +//############################################################################# +// Make +//############################################################################# +// +CollisionAssistant* + CollisionAssistant::Make(Mover *mover) +{ + Check(mover); + + // + //----------------------------------------------------------------------- + // Create the collision assistant + //----------------------------------------------------------------------- + // + CollisionAssistant *collision_assistant; + + Check(application); + collision_assistant = new CollisionAssistant( + application->GetApplicationLoopFrameRate() + ); + Check(collision_assistant); + + // + //----------------------------------------------------------------------- + // Prime the collision assistant + //----------------------------------------------------------------------- + // + collision_assistant->LinkToMover(mover); + collision_assistant->LoadMission(NULL); // JM - This should work... + + return collision_assistant; +} + +// +//############################################################################# +// CollisionAssistant +//############################################################################# +// +CollisionAssistant::CollisionAssistant(RendererRate render_rate): + Renderer( + render_rate, + MaxRendererComplexity, + DefaultRendererPriority, + CollisionInterestType, + DefaultInterestDepth, + CollisionAssistantClassID + ), + movingEntitySocket(NULL) +{ +} + +// +//############################################################################# +// ~CollisionAssistant +//############################################################################# +// +CollisionAssistant::~CollisionAssistant() +{ + Suspend(); + UnlinkFromEntity(); + Shutdown(); +} + +// +//############################################################################# +// TestInstance +//############################################################################# +// +Logical + CollisionAssistant::TestInstance() const +{ + Renderer::TestInstance(); + Check(&movingEntitySocket); + return True; +} + +// +//############################################################################# +// LinkToEntity +//############################################################################# +// +void + CollisionAssistant::LinkToMover(Mover *mover) +{ + Check(this); + Check(mover); + + // + // Call inherited method + // + Renderer::LinkToEntity(mover); + + // + //----------------------------------------------------------------- + // Tell the entity that is collisionable here ... + //----------------------------------------------------------------- + // +} + +// +//############################################################################# +// NotifyOfNewInterestingEntity +//############################################################################# +// +void + CollisionAssistant::NotifyOfNewInterestingEntity( + Entity *interesting_entity + ) +{ + Check(this); + Check(interesting_entity); + + // + //------------------------------------------------------------------------- + // Make sure that we don't check against ourself our against something that + // doesn't move + //------------------------------------------------------------------------- + // + if ( + interesting_entity != GetLinkedEntity() + && interesting_entity->IsDynamic() + ) + { + + // + //------------------------------------------------------------- + // If it is a mover and tangible, or a door, add it to our list + //------------------------------------------------------------- + // + if (interesting_entity->IsDerivedFrom(Mover::ClassDerivations)) + { + Mover *mover = Cast_Object(Mover*, interesting_entity); + if (mover->IsTangible()) + { + goto Add_Entity; + } + } + else if (interesting_entity->IsDerivedFrom(DoorFrame::ClassDerivations)) + { +Add_Entity: + movingEntitySocket.Add(interesting_entity); + } + } +} + +// +//############################################################################# +// NotifyOfBecomingUninterestingEntity +//############################################################################# +// +void + CollisionAssistant::NotifyOfBecomingUninterestingEntity( + Entity *uninteresting_entity + ) +{ + // + // HACK - ECH The following may not be a legitimate assertion + // + #if DEBUG_LEVEL>0 && 0 + { + SChainIteratorOf iterator(&movingEntitySocket); + Verify(iterator.IsPlugMember(uninteresting_entity) == True); + } + #endif + + // + // Remove from socket + // + PlugIterator iterator(uninteresting_entity); + + iterator.RemoveSocket(&movingEntitySocket); +} + +// +//############################################################################# +// GetCollisionRoot +//############################################################################# +// +BoxedSolidTree* + CollisionAssistant::GetCollisionRoot() +{ + Check(GetInterestOrigin()); + Check(GetInterestOrigin()->GetInterestArena()); + return GetInterestOrigin()->GetInterestArena()->GetCollisionRoot(); +} + +// +//############################################################################# +// ExecuteImplementation +//############################################################################# +// +void + CollisionAssistant::ExecuteImplementation( + RendererComplexity, + InterestOrigin::InterestingEntityIterator* + ) +{ +} + +//~~~~~~~~~~~~~~~~~ CollisionAssistant__MovingEntityIterator ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +CollisionAssistant__MovingEntityIterator:: + CollisionAssistant__MovingEntityIterator( + CollisionAssistant *collision_assistant + ): + SChainIteratorOf(collision_assistant->movingEntitySocket) +{ +} + +CollisionAssistant__MovingEntityIterator:: + ~CollisionAssistant__MovingEntityIterator() +{ +} +#endif diff --git a/CODE/RP/MUNGA/COLLASST.HPP b/CODE/RP/MUNGA/COLLASST.HPP new file mode 100644 index 0000000..de72226 --- /dev/null +++ b/CODE/RP/MUNGA/COLLASST.HPP @@ -0,0 +1,206 @@ +//===========================================================================// +// File: collasst.hh // +// Project: MUNGA Brick: Collision // +// Contents: // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 02/17/95 ECH Initial coding // +//---------------------------------------------------------------------------// +// Copyright (C) 1994, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(COLLASST_HPP) +# define COLLASST_HPP + +# if !defined(NODE_HPP) +# include +# endif + +# if !defined(SLOT_HPP) +# include +# endif + +# if !defined(COLLORGN_HPP) +# include +# endif + + //########################################################################## + //####################### CollisionAssistant ######################### + //########################################################################## + + class Mover; + + class CollisionAssistant: + public Node + { + friend class CollisionAssistant__MovingEntityIterator; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Public Types + // + public: + typedef CollisionAssistant__MovingEntityIterator + MovingEntityIterator; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Construction, Destruction, Testing + // + public: + CollisionAssistant(InterestZoneID interest_zone_ID); + ~CollisionAssistant(); + + Logical + TestInstance() const; + + static CollisionAssistant* + Make(Mover *mover); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Update + // + public: + void + Update(InterestZoneID interest_zone_ID); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Private + // + private: + void + LinkToInterestZone(InterestZoneID interest_zone_ID); + + InterestZoneID + currentInterestZoneID; + SlotOf + collisionOriginSocket; + }; + + //~~~~~~~~~~~~~~~~~ CollisionAssistant__MovingEntityIterator ~~~~~~~~~~~~~~~ + + class CollisionAssistant__MovingEntityIterator: + public CollisionOrigin__MovingEntityIterator + { + public: + CollisionAssistant__MovingEntityIterator( + CollisionAssistant *collision_assistant + ); + ~CollisionAssistant__MovingEntityIterator(); + }; + +#if 0 + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ CollisionAssistant ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class CollisionAssistant: + public Renderer + { + friend class CollisionAssistant__MovingEntityIterator; + + public: + // + //-------------------------------------------------------------------- + // Public Types + //-------------------------------------------------------------------- + // + typedef CollisionAssistant__MovingEntityIterator + MovingEntityIterator; + + // + //-------------------------------------------------------------------- + // Construction, Destruction, Testing + //-------------------------------------------------------------------- + // + CollisionAssistant(RendererRate render_rate); + ~CollisionAssistant(); + + Logical + TestInstance() const; + + static CollisionAssistant* + Make(Mover *mover); + + // + //-------------------------------------------------------------------- + // LinkToEntity + //-------------------------------------------------------------------- + // + void + LinkToMover(Mover *mover); + + // + //-------------------------------------------------------------------- + // NotifyOfNewInterestingEntity + //-------------------------------------------------------------------- + // + void + NotifyOfNewInterestingEntity(Entity *interesting_entity); + + // + //-------------------------------------------------------------------- + // NotifyOfBecomingUninterestingEntity + //-------------------------------------------------------------------- + // + void + NotifyOfBecomingUninterestingEntity(Entity *uninteresting_entity); + + // + //-------------------------------------------------------------------- + // GetCollisionRoot + //-------------------------------------------------------------------- + // + BoxedSolidTree* + GetCollisionRoot(); + + protected: + // + //-------------------------------------------------------------------- + // ExecuteImplementation + //-------------------------------------------------------------------- + // + void + ExecuteImplementation( + RendererComplexity complexity_update, + InterestOrigin::InterestingEntityIterator *iterator + ); + + private: + // + //-------------------------------------------------------------------- + // Private methods + //-------------------------------------------------------------------- + // + void + LoadMissionImplementation(Mission*) {} + void + ShutdownImplementation() {} + void + SuspendImplementation() {} + void + ResumeImplementation() {} + + // + //-------------------------------------------------------------------- + // Private data + //-------------------------------------------------------------------- + // + SChainOf + movingEntitySocket; + }; + + //~~~~~~~~~~~~~~~~~ CollisionAssistant__MovingEntityIterator ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class CollisionAssistant__MovingEntityIterator: + public SChainIteratorOf + { + public: + CollisionAssistant__MovingEntityIterator( + CollisionAssistant *collision_assistant + ); + ~CollisionAssistant__MovingEntityIterator(); + }; +#endif + +#endif + diff --git a/CODE/RP/MUNGA/COLLORGN.CPP b/CODE/RP/MUNGA/COLLORGN.CPP new file mode 100644 index 0000000..bd6f3ba --- /dev/null +++ b/CODE/RP/MUNGA/COLLORGN.CPP @@ -0,0 +1,167 @@ +//===========================================================================// +// File: collorgn.cc // +// Project: MUNGA Brick: Collision // +// Contents: // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 06/01/95 ECH Initial coding // +//---------------------------------------------------------------------------// +// Copyright (C) 1994, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(COLLORGN_HPP) +# include +#endif + +#if !defined(MOVER_HPP) +# include +#endif + +#if !defined(DOORFRAM_HPP) +# include +#endif + +// +//############################################################################# +// CollisionOrigin +//############################################################################# +// +CollisionOrigin::CollisionOrigin(InterestZoneID interest_zone_ID): + InterestOrigin( + interest_zone_ID, + CollisionInterestType, + DefaultInterestDepth + ), + movingEntitySocket(NULL) +{ +} + +// +//############################################################################# +// ~CollisionOrigin +//############################################################################# +// +CollisionOrigin::~CollisionOrigin() +{ +} + +// +//############################################################################# +// TestInstance +//############################################################################# +// +Logical + CollisionOrigin::TestInstance() const +{ + InterestOrigin::TestInstance(); + Check(&movingEntitySocket); + return True; +} + +// +//############################################################################# +// AddInterestingEntity +//############################################################################# +// +void + CollisionOrigin::AddInterestingEntity(Entity *interesting_entity) +{ + Check(this); + Check(interesting_entity); + + // + //-------------------------------------------------------------------------- + // Make sure that we don't check against something that doesn't move + //-------------------------------------------------------------------------- + // + if (interesting_entity->IsDynamic()) + { + // + //----------------------------------------------------------------------- + // If it is a mover and tangible, or a door, add it to our list + //----------------------------------------------------------------------- + // + if (interesting_entity->IsDerivedFrom(Mover::ClassDerivations)) + { + Mover *mover = Cast_Object(Mover*, interesting_entity); + if (mover->IsCollisionTestable()) + { + movingEntitySocket.Add(interesting_entity); + } + } + else if (interesting_entity->IsDerivedFrom(DoorFrame::ClassDerivations)) + { + movingEntitySocket.Add(interesting_entity); + } + } +} + +// +//############################################################################# +// RemoveUninterestingEntity +//############################################################################# +// +void + CollisionOrigin::RemoveUninterestingEntity(Entity *uninteresting_entity) +{ + Check(this); + Check(uninteresting_entity); + + // + // HACK - ECH The following may not be a legitimate assertion + // + #if DEBUG_LEVEL>0 && 0 + { + SChainIteratorOf iterator(&movingEntitySocket); + Verify(iterator.IsPlugMember(uninteresting_entity) == True); + } + #endif + + // + // Remove from socket + // + PlugIterator iterator(uninteresting_entity); + + Check(&iterator); + iterator.RemoveSocket(&movingEntitySocket); +} + +// +//############################################################################# +// RemoveUninterestingEntities +//############################################################################# +// +void + CollisionOrigin::RemoveUninterestingEntities() +{ + Check(this); + + SChainIteratorOf iterator(&movingEntitySocket); + + Check(&iterator); + while (iterator.GetCurrent() != NULL) + { + Check(iterator.GetCurrent()); + iterator.Remove(); + } +} + +//~~~~~~~~~~~~~~~~~~~ CollisionOrigin__MovingEntityIterator ~~~~~~~~~~~~~~~~~~~ + +CollisionOrigin__MovingEntityIterator::CollisionOrigin__MovingEntityIterator( + CollisionOrigin *collision_origin +): + SChainIteratorOf(collision_origin->movingEntitySocket) +{ +} + +CollisionOrigin__MovingEntityIterator::~CollisionOrigin__MovingEntityIterator() +{ +} + diff --git a/CODE/RP/MUNGA/COLLORGN.HPP b/CODE/RP/MUNGA/COLLORGN.HPP new file mode 100644 index 0000000..806377c --- /dev/null +++ b/CODE/RP/MUNGA/COLLORGN.HPP @@ -0,0 +1,80 @@ +//===========================================================================// +// File: collorgn.hh // +// Project: MUNGA Brick: Collision // +// Contents: // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 06/01/95 ECH Initial coding // +//---------------------------------------------------------------------------// +// Copyright (C) 1994, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(COLLORGN_HPP) +# define COLLORGN_HPP + +# if !defined(INTEREST_HPP) +# include +# endif + + //########################################################################## + //###################### CollisionOrigin ############################# + //########################################################################## + + class CollisionOrigin: + public InterestOrigin + { + friend class CollisionOrigin__MovingEntityIterator; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Interest Manager support + // + public: + typedef CollisionOrigin__MovingEntityIterator + MovingEntityIterator; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Construction, Destruction, Testing + // + public: + CollisionOrigin(InterestZoneID interest_zone_ID); + ~CollisionOrigin(); + + Logical + TestInstance() const; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Interest Manager support + // + protected: + void + AddInterestingEntity(Entity *interesting_entity); + void + RemoveUninterestingEntity(Entity *uninteresting_entity); + void + RemoveUninterestingEntities(); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Private data + // + private: + SChainOf + movingEntitySocket; + }; + + //~~~~~~~~~~~~~~~~~~~~ CollisionOrigin__MovingEntityIterator ~~~~~~~~~~~~~~~ + + class CollisionOrigin__MovingEntityIterator: + public SChainIteratorOf + { + public: + CollisionOrigin__MovingEntityIterator( + CollisionOrigin *collision_origin + ); + ~CollisionOrigin__MovingEntityIterator(); + }; + +#endif + diff --git a/CODE/RP/MUNGA/COLOR.CPP b/CODE/RP/MUNGA/COLOR.CPP new file mode 100644 index 0000000..f93c4d7 --- /dev/null +++ b/CODE/RP/MUNGA/COLOR.CPP @@ -0,0 +1,97 @@ +//===========================================================================// +// 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 +#pragma hdrstop + +#if !defined(COLOR_HPP) +# include +#endif + +#if !defined(CSTR_HPP) + #include +#endif + +//~~~~~~~~~~~~~~~~~~~~~~~~~~ RGBColor functions ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +// +//########################################################################### +//########################################################################### +// +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); +} + diff --git a/CODE/RP/MUNGA/COLOR.HPP b/CODE/RP/MUNGA/COLOR.HPP new file mode 100644 index 0000000..754f969 --- /dev/null +++ b/CODE/RP/MUNGA/COLOR.HPP @@ -0,0 +1,194 @@ +//===========================================================================// +// 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 + #endif + + #if !defined(SCALAR_HPP) + #include + #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) + { + return False; + } + + #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 + +//============================================================================= diff --git a/CODE/RP/MUNGA/CONFIG.HPP b/CODE/RP/MUNGA/CONFIG.HPP new file mode 100644 index 0000000..032ac66 --- /dev/null +++ b/CODE/RP/MUNGA/CONFIG.HPP @@ -0,0 +1,158 @@ +#if !defined(CONFIG_HPP) +# define CONFIG_HPP + +# if DEBUG_LEVEL>=3 +# undef USE_ACTIVE_PROFILE // Disables trace activity +# define USE_TIME_ANALYSIS // Enables trace time statistics +# undef USE_TRACE_LOG // Disables logging functions +# define USE_FPU_ANALYSIS // Enables entity FPU checks +# define USE_MEMORY_ANALYSIS // Enables heap statistics +# undef USE_EVENT_STATISTICS // Disables event statistics +# elif DEBUG_LEVEL==2 +# undef USE_ACTIVE_PROFILE // Disables trace activity +# define USE_TIME_ANALYSIS // Enables trace time statistics +# undef USE_TRACE_LOG // Disables logging functions +# define USE_FPU_ANALYSIS // Enables entity FPU checks +# define USE_MEMORY_ANALYSIS // Enables heap statistics +# undef USE_EVENT_STATISTICS // Disables event statistics +# elif DEBUG_LEVEL==1 +# undef USE_ACTIVE_PROFILE // Disables trace activity +# define USE_TIME_ANALYSIS // Enables trace time statistics +# undef USE_TRACE_LOG // Disables logging functions +# define USE_FPU_ANALYSIS // Enables entity FPU checks +# define USE_MEMORY_ANALYSIS // Enables heap statistics +# undef USE_EVENT_STATISTICS // Disables event statistics +# elif DEBUG_LEVEL==0 +# if defined(LAB_ONLY) +# undef USE_ACTIVE_PROFILE // Disables trace activity +# define USE_TIME_ANALYSIS // Enables trace time statistics +# define USE_TRACE_LOG // Enables logging functions +# undef USE_FPU_ANALYSIS // Disables entity FPU checks +# undef USE_MEMORY_ANALYSIS // Disables heap statistics +# define USE_EVENT_STATISTICS // Enables event statistics +# else +# undef USE_ACTIVE_PROFILE // Disables trace activity +# undef USE_TIME_ANALYSIS // Disables trace time statistics +# undef USE_TRACE_LOG // Disables logging functions +# undef USE_FPU_ANALYSIS // Disables entity FPU checks +# undef USE_MEMORY_ANALYSIS // Disables heap statistics +# undef USE_EVENT_STATISTICS // Disables event statistics +# endif +# endif + +# if defined(USE_TIME_ANALYSIS) || defined(USE_ACTIVE_PROFILE)\ + || defined(USE_TRACE_LOG) +# define TRACE_ON +# endif + +// +// Traces are expensive, release build should not have them +// +# if defined(TRACE_ON) && defined(LAB_ONLY) + +# define TRACE_FOREGROUND_PROCESSING +//# define TRACE_RENDERER_MANAGER +//# define TRACE_PROCESS_EVENT +# define TRACE_EVENT_COUNT + +// +// Update Manager Group +// + +//# define TRACE_UPDATE_MANAGER +//# define TRACE_UPDATE_MASTER +//# define TRACE_UPDATE_REPLICANTS + +// +// Networking Group +// + +//# define TRACE_SEND_PACKET +//# define TRACE_ROUTE_PACKET +//# define TRACE_LOST_DATA +//# define TRACE_SEND_BUFFER +// +// Video Renderer group +// To see all the video renderer traces seperately, DO NOT define USE_ONE_VIDEO_TRACE +// To see all of the video renderer on the same trace, enable the following: +// +// USE_ONE_VIDEO_TRACE +// TRACE_VIDEO_RENDERER +// TRACE_VIDEO_BECOME_INTERESTING +// TRACE_VIDEO_BECOME_UNINTERESTING +// TRACE_VIDEO_RENDERER_FRAME_DONE +// +// The time used by the above four traces will all appear on the video renderer +// trace together. This configuration should not cause any buzzing of traces and +// should capture 100% of the video renderer's activity. +// Other video renderer traces may be enabled but will appear seperately +// +// CAUTION: Depending on the setup, TRACE_VIDEO_RENDERABLES can buzz, severly +// lengthening the video renderer profile times. Use carefully. +// +//# define USE_ONE_VIDEO_TRACE +//# define TRACE_VIDEO_RENDERER +//# define TRACE_VIDEO_BECOME_INTERESTING +//# define TRACE_VIDEO_BECOME_UNINTERESTING +//# define TRACE_VIDEO_RENDERER_FRAME_DONE + +//# define TRACE_VIDEO_CULL_SETUP +//# define TRACE_VIDEO_VEHICLE_RENDERABLES +//# define TRACE_VIDEO_ALL_RENDERABLES +//# define TRACE_VIDEO_MECH_CULL_RENDERABLE +//# define TRACE_VIDEO_BATCH_FLUSH +//# define TRACE_VIDEO_LOAD_OBJECT +//# define TRACE_VIDEO_PICKPOINT +//# define TRACE_VIDEO_RENDERABLES +//# define TRACE_VIDEO_CONSTRUCT_ROOT // construct the root of +//# define TRACE_VIDEO_FIRST_FRAME_DONE // obsolete soon + +// +// Audio renderer group +// + +//# define TRACE_AUDIO_RENDERER +//# define TRACE_AUDIO_RENDERER_MIDI +//# define TRACE_AUDIO_RENDERER_CREATE_OBJECTS +//# define TRACE_AUDIO_RENDERER_DESTROY_OBJECTS +//# define TRACE_AUDIO_RENDERER_START_HANDLER +//# define TRACE_AUDIO_RENDERER_STOP_HANDLER +//# define TRACE_AUDIO_RENDERER_EXECUTE +//# define TRACE_AUDIO_RENDERER_RUNNING_SOURCES +//# define TRACE_AUDIO_RENDERER_RUNNING_SORT +//# define TRACE_AUDIO_RENDERER_CALCULATE_MIX +//# define TRACE_AUDIO_RENDERER_EXECUTE_SOURCES +//# define TRACE_AUDIO_RENDERER_DORMANT_SOURCES + +// +// Gauge renderer group +// + +//# define TRACE_GAUGE_RENDERER +//# define TRACE_SCREEN_COPY + +// +// Other leftovers, these are probably obsolete, if you know ones that are, kill +// kill them off as appropriate. +// + +# if 0 +# define TRACE_COMPLETE_CYCLES +# define TRACE_DEATH_ROW + +# define TRACE_EXECUTE_ENTITY +# define TRACE_PERFORM_ENTITY +# define TRACE_PERFORM_SUBSYSTEMS +# define TRACE_EXECUTE_WATCHERS + +# define TRACE_RIO_RECEIVE_PACKET +# define TRACE_RIO_SEND_PACKET +# define TRACE_CHECK_BUFFERS +# define TRACE_CALL_NETNUB + +# endif + +# endif + +#endif + diff --git a/CODE/RP/MUNGA/CONSOLE.CPP b/CODE/RP/MUNGA/CONSOLE.CPP new file mode 100644 index 0000000..82d37c6 --- /dev/null +++ b/CODE/RP/MUNGA/CONSOLE.CPP @@ -0,0 +1,103 @@ +//===========================================================================// +// 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 +#pragma hdrstop + +#if !defined(CONSOLE_HPP) +# include +#endif + +//~~~~~~~~~~~~~~~~~~ ConsoleApplicationReadyToRunMessage ~~~~~~~~~~~~~~~~~~~~~~ + +ConsoleApplicationReadyToRunMessage:: + ConsoleApplicationReadyToRunMessage(HostID ready_to_run_host_ID): + NetworkClient::Message( + ConsoleApplicationReadyToRunMessageID, + sizeof(ConsoleApplicationReadyToRunMessage) + ) +{ + readyToRunHostID = ready_to_run_host_ID; +} + +//~~~~~~~~~~~~~~~~ ConsoleApplicationStateResponseMessage ~~~~~~~~~~~~~~~~~~~~~ + +ConsoleApplicationStateResponseMessage::ConsoleApplicationStateResponseMessage( + HostID responding_host_ID, + Enumeration application_state, + Enumeration application_type +): + NetworkClient::Message( + ConsoleApplicationStateResponseMessageID, + sizeof(ConsoleApplicationStateResponseMessage) + ) +{ + respondingHostID = responding_host_ID; + applicationState = application_state; + application = application_type; +} + +//~~~~~~~~~~~~~~~~~~ ConsoleApplicationEndMissionMessage ~~~~~~~~~~~~~~~~~~~~~~ + +ConsoleApplicationEndMissionMessage:: + ConsoleApplicationEndMissionMessage( + HostID player_host_ID, + int final_score + ): + NetworkClient::Message( + ConsoleApplicationEndMissionMessageID, + sizeof(ConsoleApplicationEndMissionMessage) + ) +{ + playerHostID = player_host_ID; + finalScore = final_score; +} + +//~~~~~~~~~~~~~~~~~~ ConsoleApplicationAbortMissionMessage ~~~~~~~~~~~~~~~~~~~~~~ + +ConsoleApplicationAbortMissionMessage:: + ConsoleApplicationAbortMissionMessage( + HostID player_host_ID + ): + NetworkClient::Message( + ConsoleApplicationAbortMissionMessageID, + sizeof(ConsoleApplicationAbortMissionMessage) + ) +{ + playerHostID = player_host_ID; +} + +//~~~~~~~~~~~~~~~~ ConsoleApplicationTeamEndMissionMessage ~~~~~~~~~~~~~~~~~~~~ + +ConsoleApplicationTeamEndMissionMessage:: + ConsoleApplicationTeamEndMissionMessage( + HostID player_host_ID, + int player_score, + int team_ID, + int team_score + ): + NetworkClient::Message( + ConsoleApplicationTeamEndMissionMessageID, + sizeof(ConsoleApplicationTeamEndMissionMessage) + ) +{ + playerHostID = player_host_ID; + playerScore = player_score; + teamID = team_ID; + teamScore = team_score; +} + +//============================================================================== diff --git a/CODE/RP/MUNGA/CONSOLE.HPP b/CODE/RP/MUNGA/CONSOLE.HPP new file mode 100644 index 0000000..a5602c6 --- /dev/null +++ b/CODE/RP/MUNGA/CONSOLE.HPP @@ -0,0 +1,306 @@ +//===========================================================================// +// File: cnslmsgs.hpp // +// 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 // +//===========================================================================// + +#if !defined(CONSOLE_HPP) +# define CONSOLE_HPP + +#ifdef MAC +#pragma once +#endif + +#ifdef MAC +#include "NetworkEndpoint.h" +#include "Participant.h" +#else +# if !defined(NETWORK_HPP) +# include +# endif +#endif + + //~~~~~~~~~~~~~~~~~~~~~~~~ Console Message IDs ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + enum ConsoleMessageID + { + ConsoleApplicationReadyToRunMessageID = 0, + ConsoleApplicationStateResponseMessageID = 1, + ConsoleApplicationEndMissionMessageID = 7, + ConsoleApplicationAbortMissionMessageID = 11, + ConsoleApplicationTeamEndMissionMessageID = 14 + }; + + //~~~~~~~~~~~~~~~~~~ ConsoleApplicationReadyToRunMessage ~~~~~~~~~~~~~~~~~~~ +#ifdef MAC +#pragma options align=mac68k4byte + class ConsoleApplicationReadyToRunMessage: + public NetworkEndpoint::Message + { + public: + ConsoleApplicationReadyToRunMessage(HostID ready_to_run_host_ID); + + long + GetReadyToRunHostID() + {return readyToRunHostID.value();} + + private: + HostID + readyToRunHostID; + }; +#pragma options align=reset +#else + class ConsoleApplicationReadyToRunMessage: + public NetworkClient::Message + { + public: + ConsoleApplicationReadyToRunMessage(HostID ready_to_run_host_ID); + + HostID + GetReadyToRunHostID() + {return readyToRunHostID;} + + private: + HostID + readyToRunHostID; + }; +#endif + + //~~~~~~~~~~~~~~~~ ConsoleApplicationStateResponseMessage ~~~~~~~~~~~~~~~~~~ +#ifdef MAC +#pragma options align=mac68k4byte + class ConsoleApplicationStateResponseMessage: + public NetworkEndpoint::Message + { + public: + ConsoleApplicationStateResponseMessage( + HostID responding_host_ID, + LEDWORD application_state, + LEDWORD application_type + ); + + long + GetRespondingHostID() + {return respondingHostID.value();} + long + GetApplicationState() + {return applicationState.value();} + ApplicationID + GetApplication() + {return((ApplicationID) application.value());} + + private: + HostID + respondingHostID; + LEDWORD + applicationState; + LEDWORD + application; + }; +#pragma options align=reset +#else + class ConsoleApplicationStateResponseMessage: + public NetworkClient::Message + { + public: + ConsoleApplicationStateResponseMessage( + HostID responding_host_ID, + Enumeration application_state, + Enumeration application + ); + + HostID + GetRespondingHostID() + {return respondingHostID;} + Enumeration + GetApplicationState() + {return applicationState;} + Enumeration + GetApplication() + {return application;} + + private: + HostID + respondingHostID; + Enumeration + applicationState; + Enumeration + application; + }; +#endif + + //~~~~~~~~~~~~~~~~~~ ConsoleApplicationEndMissionMessage ~~~~~~~~~~~~~~~~~~~ +#ifdef MAC +#pragma options align=mac68k4byte + class ConsoleApplicationEndMissionMessage: + public NetworkEndpoint::Message + { + public: + ConsoleApplicationEndMissionMessage( + HostID player_ID, + LEDWORD final_score + ); + + long + GetPlayerHostID() + {return playerHostID.value();} + long + GetFinalScore() + {return finalScore.value();} + + private: + HostID + playerHostID; + LEDWORD + finalScore; + }; +#pragma options align=reset +#else + class ConsoleApplicationEndMissionMessage: + public NetworkClient::Message + { + public: + ConsoleApplicationEndMissionMessage( + HostID player_host_ID, + int final_score + ); + + HostID + GetPlayerHostID() + {return playerHostID;} + int + GetFinalScore() + {return finalScore;} + + private: + HostID + playerHostID; + int + finalScore; + }; +#endif + + //~~~~~~~~~~~~~~~~~~ ConsoleApplicationAbortMissionMessage ~~~~~~~~~~~~~~~~~ +#ifdef MAC +#pragma options align=mac68k4byte + class ConsoleApplicationAbortMissionMessage: + public NetworkEndpoint::Message + { + public: + ConsoleApplicationAbortMissionMessage( + HostID player_ID + ); + + long + GetPlayerHostID() + {return playerHostID.value();} + + private: + HostID + playerHostID; + }; +#pragma options align=reset +#else + class ConsoleApplicationAbortMissionMessage: + public NetworkClient::Message + { + public: + ConsoleApplicationAbortMissionMessage( + HostID player_host_ID + ); + + HostID + GetPlayerHostID() + {return playerHostID;} + + private: + HostID + playerHostID; + }; +#endif + + //~~~~~~~~~~~~~~~~ ConsoleApplicationTeamEndMissionMessage ~~~~~~~~~~~~~~~~~ +#ifdef MAC +#pragma options align=mac68k4byte + class ConsoleApplicationTeamEndMissionMessage: + public NetworkEndpoint::Message + { + public: + ConsoleApplicationTeamEndMissionMessage( + HostID player_ID, + LEDWORD player_score, + LEDWORD team_id, + LEDWORD team_score + ); + + long + GetPlayerHostID() + {return playerHostID.value();} + long + GetPlayerScore() + {return playerScore.value();} + long + GetTeamID() + {return teamID.value();} + long + GetTeamScore() + {return teamScore.value();} + + private: + HostID + playerHostID; + LEDWORD + playerScore; + LEDWORD + teamID; + LEDWORD + teamScore; + }; +#pragma options align=reset +#else + class ConsoleApplicationTeamEndMissionMessage: + public NetworkClient::Message + { + public: + ConsoleApplicationTeamEndMissionMessage( + HostID player_host_ID, + int player_score, + int team_id, + int team_score + ); + + HostID + GetPlayerHostID() + {return playerHostID;} + int + GetFinalScore() + {return playerScore;} + int + GetTeamID() + {return teamID;} + int + GetTeamScore() + {return teamScore;} + + private: + HostID + playerHostID; + int + playerScore; + int + teamID; + int + teamScore; + }; +#endif + +#endif diff --git a/CODE/RP/MUNGA/CONTROLS.CPP b/CODE/RP/MUNGA/CONTROLS.CPP new file mode 100644 index 0000000..2b2bad0 --- /dev/null +++ b/CODE/RP/MUNGA/CONTROLS.CPP @@ -0,0 +1,682 @@ +//==========================================================================// +// File: controls.cc // +// Project: MUNGA Brick: Controls Manager // +// Contents: Interface specification for Controls // +//--------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ----------------------------------------------------------// +// 11/21/94 CPB Initial coding. // +// 01/25/95 CPB Major surgery! Removed Entities, added Subsystems. // +//--------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//==========================================================================// + +#include +#pragma hdrstop + +#if !defined(CONTROLS_HPP) +# include +#endif + +#if !defined(APP_HPP) + #include +#endif + +#if defined(DEBUG) +# define Test_Tell(n) DEBUG_STREAM << n +#else +# define Test_Tell(n) +#endif + +//############################################################################ +//####################### ControlsInstance ############################# +//############################################################################ + +ControlsInstance::ControlsInstance( + ClassID class_ID, + ModeMask mode_mask, + Plug *dependant +): + Node(class_ID), + dependantPlug(this) +{ + Check_Pointer(this); + modeMask = mode_mask; + dependantPlug.Add(dependant); + + Check_Fpu(); +} + +ControlsInstance::~ControlsInstance() +{ + Check(this); + Check_Fpu(); +} + +void + ControlsInstance::Update(void *) +{ + Fail("ControlsInstance::Update not overridden!"); +} + +// +//############################################################################# +//############################################################################# +// +void + ControlsInstance::ReleaseLinkHandler( + Socket*, + Plug* + ) +{ + Unregister_Object(this); + delete this; + Check_Fpu(); +} + +//############################################################################ +//######################### ControlsMappingGroup ############################# +//############################################################################ + +// +// The ControlsMappingGroup object maintains a group of ControlInstances. +// +// ControlsMappingGroup.Update() will call ControlsInstance.Update() +// for each instance in the group. +// + +ControlsMappingGroup::ControlsMappingGroup(): + Node(ControlsMappingGroup::ControlsMappingGroupClassID), + instanceList(this) +{ + Check_Pointer(this); + Check_Fpu(); +} + +ControlsMappingGroup::~ControlsMappingGroup() +{ + Check(this); + Remove(0); // remove all mappings + Check_Fpu(); +} + +void ControlsMappingGroup::Remove(ModeMask mode_mask) +{ + Check(this); + + ChainIteratorOf + i(instanceList); + + ControlsInstance + *controls_instance; + + while ((controls_instance=i.ReadAndNext()) != NULL) + { + Check(controls_instance); + //--------------------------------------------- + // Remove mapping bit(s) + //--------------------------------------------- + controls_instance->modeMask &= ~mode_mask; + //--------------------------------------------- + // If no bits left, delete mapping + //--------------------------------------------- + if (controls_instance->modeMask == (ModeMask)0) + { + Unregister_Object(controls_instance); + delete controls_instance; + } + } + Check_Fpu(); +} + +void + ControlsMappingGroup::Update(void *data_source, ModeMask mode_mask) +{ + Check(this); + Check_Pointer(data_source); + + ChainIteratorOf + i(instanceList); + + ControlsInstance + *controls_instance; + + while ((controls_instance=i.ReadAndNext()) != NULL) + { + //------------------------------------------------ + // Process only if at least one mode bit matches + //------------------------------------------------ + Check(controls_instance); + if (controls_instance->modeMask & mode_mask) + { + controls_instance->Update(data_source); + } + } + Check_Fpu(); +} + +Logical + ControlsMappingGroup::CurrentFilterStatus(ModeMask mode_mask) +{ + Check(this); + + ChainIteratorOf + i(instanceList); + + ControlsInstance + *controls_instance; + + while ((controls_instance=i.ReadAndNext()) != NULL) + { + Check(controls_instance); + + if (controls_instance->modeMask & mode_mask) + { + Check_Fpu(); + return True; + } + } + Check_Fpu(); + return False; +} + +//############################################################################ +//########################### ControlsManager ################################ +//############################################################################ + +//--------------------------------------------------------------------------- +// Class derivation +//--------------------------------------------------------------------------- +Derivation + ControlsManager::ClassDerivations( + Receiver::ClassDerivations,"ControlsManager" + ); + +unsigned int + ControlsManager::nextOwnerID=0; + +ControlsManager + *ControlsManager::headControlsManager = NULL; + +// +//############################################################################ +// ControlsManager +// +// Creator method +//---------------------------------------------------------------------------- +// Enter: virtualDataPtr +//############################################################################ +// +ControlsManager::ControlsManager( + ClassID class_ID, + SharedData &shared_data +): + Receiver( + class_ID, + shared_data + ) +{ + activeDestination = NULL; + activeReceiver = NULL; + activeMessageID = (Receiver::MessageID) 0; + activeDependant = NULL; + //---------------------------------------------------- + // Add this object to the chain + //---------------------------------------------------- + nextControlsManager = headControlsManager; + headControlsManager = this; + Check_Fpu(); +} + +// +//############################################################################ +// ~ControlsManager +// +// Destructor method +//############################################################################ +// +ControlsManager::~ControlsManager() +{ + //---------------------------------------------------- + // Unlink this object from the chain + //---------------------------------------------------- + ControlsManager + *controls_manager, + *previous_controls_manager(NULL); + + // + // Search for 'this' in the chain + // + for( + controls_manager = headControlsManager; + controls_manager != NULL; + controls_manager = controls_manager->nextControlsManager + ) + { + if (controls_manager == this) + { + // + // Found! head of list? + // + if (previous_controls_manager == NULL) + { + headControlsManager = nextControlsManager; + } + // + // Not head, remove from chain + // + else + { + previous_controls_manager->nextControlsManager = + nextControlsManager; + } + break; + } + // + // Keep track of 'previous' object + // + previous_controls_manager = controls_manager; + } + Check_Fpu(); +} + +void + ControlsManager::Remove(ModeMask /*mode_mask*/) +{ + Fail("ControlsManager::Remove should not be called!\n"); +} + +void + ControlsManager::Execute() +{ + Fail("ControlsManager::Execute should not be called!\n"); +} + +void + ControlsManager::StartMappableButtonsConfigure( + void *active_direct_target, + Receiver *target, + Plug *dependant, + Receiver::MessageID active_message_id, + ModeMask remove_mode_mask, + ModeMask add_mode_mask + ) +{ + Check(this); + + activeReceiver = target; + activeMessageID = active_message_id; + activeDestination = active_direct_target; + activeDependant = dependant; + + Check(application); + ModeManager + *mode_manager = application->GetModeManager(); + Check(mode_manager); + + mode_manager->RemoveModeMask(remove_mode_mask); + mode_manager->AddModeMask(add_mode_mask); + + Check_Fpu(); +} + +void + ControlsManager::StopMappableButtonsConfigure( + ModeMask remove_mode_mask, + ModeMask add_mode_mask + ) +{ + Check(this); + + Check(application); + ModeManager + *mode_manager = application->GetModeManager(); + Check(mode_manager); + + mode_manager->RemoveModeMask(remove_mode_mask); + mode_manager->AddModeMask(add_mode_mask); + + activeDestination = NULL; + activeReceiver = NULL; + activeMessageID = (Receiver::MessageID) 0; + activeDependant = NULL; + + Check_Fpu(); +} + +void + ControlsManager::AddOrEraseMappableButton( + int /*button_number*/, + ModeMask /*mode_mask*/ + ) +{ + Check(this); + Check_Fpu(); +} + +// +//############################################################################ +// TestInstance +// +//############################################################################ +// +Logical + ControlsManager::TestInstance() const +{ + return IsDerivedFrom(ClassDerivations); +} + +// +//############################################################################ +// Shutdown +// +//############################################################################ +// +void + ControlsManager::Shutdown() +{ + ControlsManager + *controls_manager; + + for( + controls_manager = headControlsManager; + controls_manager != NULL; + controls_manager = controls_manager->nextControlsManager + ) + { + controls_manager->LocalShutdown(); + } + Check_Fpu(); +} + +void + ControlsManager::LocalShutdown() +{ + Check(this); + Check_Fpu(); +} + +//######################################################################### +//############################# ControlsString ############################ +//######################################################################### +int + ControlsString::nextID = 1; + +ControlsString::ControlsString( + const char *new_string, + int keypad_unit_number, + Receiver *receiver_pointer, + Receiver::MessageID message_id, + int user_code +): + Node(RegisteredClass::ControlsStringClassID) +{ + Test_Tell( + "ControlsString creator('" new_string << + "'," << keypad_unit_number << + "," << receiver_pointer << + "," << message_id << + ")\n" + ); + Check_Pointer(this); + Check_Pointer(new_string); + Check(receiver_pointer); + + //---------------------------------------------- + // Assign unique ID + //---------------------------------------------- + id = nextID++; + matchStringPointer = new_string; + keypadUnitNumber = keypad_unit_number; + //---------------------------------------------- + // Save message data + //---------------------------------------------- + receiverPointer = receiver_pointer; + messageID = message_id; + userCode = user_code; + //---------------------------------------------- + // Clear the buffer + //---------------------------------------------- + string[0] = '\0'; + stringLength = 0; + + Check_Fpu(); +} + +ControlsString::~ControlsString() +{ + Test_Tell("ControlsString destructor\n"); + Check(this); + Check_Fpu(); +} + +Logical + ControlsString::TestInstance() const +{ + return True; +} + +void + ControlsString::Update(int keypad_unit_number, ControlsKey new_key) +{ + Test_Tell( + "ControlsString::Update(" << keypad_unit_number << + "," << new_key << + "\n" + ); + Check(this); + + //---------------------------------------------- + // Update only if proper keyboard unit + //---------------------------------------------- + if (keypad_unit_number == keypadUnitNumber) + { + //-------------------------------------- + // Get string length + //-------------------------------------- + Check_Pointer(matchStringPointer); + int + length = strlen(matchStringPointer); + if (length > maxStringLength) + { + length = maxStringLength; + } + + if (stringLength > length) // in case matchString changes + { + stringLength = length; + string[stringLength] = '\0'; + } + //-------------------------------------- + // Update string buffer + //-------------------------------------- + if (stringLength < length) + { + string[stringLength++] = (char) new_key; + string[stringLength] = '\0'; + } + else + { + if (length > 1) + { + memmove(&string[0],&string[1], length-1); + } + string[length-1] = (char) new_key; + } + Test_Tell("string=" << string << "\n"); + //-------------------------------------- + // Check for match + //-------------------------------------- + if (strnicmp(string, matchStringPointer, length) == 0) + { + Test_Tell( + "ControlsString::Update, '" << matchStringPointer << + "' matched!\n" + ); + //-------------------------------------- + // Match found, send message + //-------------------------------------- + Check(receiverPointer); + Check(application); + + ControlsStringMessage + message(messageID, this->userCode); + receiverPointer->Dispatch(&message); + //-------------------------------------- + // Clear the string + //-------------------------------------- + string[0] = '\0'; + stringLength = 0; + } + } + Check_Fpu(); +} + +//######################################################################### +//######################## ControlsStringManager ########################## +//######################################################################### +ControlsStringManager::ControlsStringManager() : + Node(RegisteredClass::ControlsStringManagerClassID), + instanceList(this) +{ + Test_Tell("ControlsStringManager creator\n"); + Check_Pointer(this); +} + +ControlsStringManager::~ControlsStringManager() +{ + Test_Tell("ControlsStringManager destructor\n"); + Check(this); + //---------------------------------------------- + // Remove all ControlStrings + //---------------------------------------------- + Remove(0); + + Check_Fpu(); +} + +Logical + ControlsStringManager::TestInstance() const +{ + return True; +} + +ControlsStringID + ControlsStringManager::Add( + const char *new_string, + int keypad_unit_number, + Receiver *receiver_pointer, + Receiver::MessageID message_id, + int user_code + ) +{ + Test_Tell("ControlsStringManager::Add(" << new_string << + "," << keypad_unit_number << + "," << receiver_pointer << + "," << message_id << + "\n" + ); + Check(this); + Check_Pointer(new_string); + Check(receiver_pointer); + + //---------------------------------------------- + // Create the ControlsString + //---------------------------------------------- + ControlsString + *string_item = new ControlsString( + new_string, + keypad_unit_number, + receiver_pointer, + message_id, + user_code + ); + Check(string_item); + Register_Object(string_item); + //---------------------------------------------- + // Add to the instance list + //---------------------------------------------- + instanceList.Add(string_item); + //---------------------------------------------- + // return the new string's (unique) ID + //---------------------------------------------- + Check_Fpu(); + return string_item->id; +} + +void + ControlsStringManager::Remove(ControlsStringID string_id) +{ + Test_Tell("ControlsStringManager::Remove(" << string_id << ")\n"); + Check(this); + + ChainIteratorOf + i(instanceList); + + ControlsString + *controls_string; + + //---------------------------------------------- + // Search for the given ID (or universal match) + //---------------------------------------------- + while ((controls_string=i.ReadAndNext()) != NULL) + { + Check(controls_string); + if ( + (string_id == 0) || + (controls_string->id == string_id) + ) + { + Unregister_Object(controls_string); + delete controls_string; + //------------------------------------------ + // If this is not a 'universal' remove, + // we're done (ID's are unique) + //------------------------------------------ + if (string_id != 0) + { + break; + } + } + } + Check_Fpu(); +} + +void + ControlsStringManager::Update( + int keypad_unit_number, + ControlsKey new_key + ) +{ + Test_Tell("ControlsStringManager::Update(" << keypad_unit_number << + "," << new_key << + ")\n" + ); + Check(this); + + //-------------------------------------- + // Update all matching string items + //-------------------------------------- + ChainIteratorOf + i(instanceList); + + ControlsString + *controls_string; + + while ((controls_string=i.ReadAndNext()) != NULL) + { + Check(controls_string); + controls_string->Update(keypad_unit_number, new_key); + } + Check_Fpu(); +} + + +#if defined(TEST_CLASS) +# include "controls.tcp" +#endif + + + diff --git a/CODE/RP/MUNGA/CONTROLS.HPP b/CODE/RP/MUNGA/CONTROLS.HPP new file mode 100644 index 0000000..0693a72 --- /dev/null +++ b/CODE/RP/MUNGA/CONTROLS.HPP @@ -0,0 +1,947 @@ +//===========================================================================// +// File: controls.hpp // +// Project: MUNGA Brick: Controls Module // +// Contents: Interface specification for Controls module // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- -----------------------------------------------------------// +// 12/12/94 CPB Initial coding. // +// 01/25/95 CPB Major surgery! Removed Entities, added Receivers. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. All rights reserved // +// PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(CONTROLS_HPP) +# define CONTROLS_HPP + +# if !defined(STYLE_HPP) +# include +# endif + + class Controls; + class ControlsInstance; + class ControlsMappingGroup; + struct ControlsMapping; + class ControlsOwner; + class ControlsManager; + +# if !defined(SLOT_HPP) +# include +# endif + +# if !defined(CHAIN_HPP) +# include +# endif + +# if !defined(VECTOR2D_HPP) +# include +# endif + +# if !defined(RECEIVER_HPP) +# include +# endif + +# if !defined(SIMULATE_HPP) +# include +# endif + +# if !defined(MODE_HPP) +# include +# endif + + //######################################################################## + //######################## Basic control typedefs ######################## + //######################################################################## + + typedef Scalar ControlsScalar; + typedef Vector2DOf ControlsJoystick; + typedef int ControlsKey; + typedef int ControlsButton; // negative for release + typedef Vector2DOf ControlsMouse; + + //######################################################################### + //######################### ControlsInstance ############################## + //######################################################################### + + // The ControlsInstance object exists to serve the ControlsMappingGroup + // object. It maintains one instance of a mapping from a physical + // input device to either an entity event message or a value. + + class ControlsInstance : + public Node + { + friend class ControlsMappingGroup; + friend class ControlsManager; // required for testing + friend class L4MappableButtonManager; + + public: + ControlsInstance( + ClassID class_id, + ModeMask mode_mask, + Plug *dependant + ); + ~ControlsInstance(); + + ModeMask + modeMask; // lots of objects (and templates) need access to this + + protected: + virtual void Update(void *data_source); + + SlotOf + dependantPlug; + void + ReleaseLinkHandler( + Socket *socket, + Plug *plug + ); + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ControlsInstanceDirectOf ~~~~~~~~~~~~~~~~~~ + + template class ControlsInstanceDirectOf: + public ControlsInstance + { + friend class ControlsMappingGroup; + friend class ControlsManager; // required for testing + + public: + ControlsInstanceDirectOf( + ModeMask mode_mask, + T* data_pointer, + Plug *dependant + ); + ControlsInstanceDirectOf( + ControlsInstanceDirectOf *original + ); + ~ControlsInstanceDirectOf(); + Logical + TestInstance() const; + +// protected: + void Update(void *data_source); + + T *dataPointer; + }; + + template ControlsInstanceDirectOf::ControlsInstanceDirectOf( + ModeMask mode_mask, + T* data, + Plug *dependant + ): + ControlsInstance( + DirectControlsInstanceClassID, + mode_mask, + dependant + ), + dataPointer(data) + {} + + template ControlsInstanceDirectOf::ControlsInstanceDirectOf( + ControlsInstanceDirectOf *original + ): + ControlsInstance( + DirectControlsInstanceClassID, + original->modeMask, + original->dependantPlug.GetCurrent() + ), + dataPointer(original->dataPointer) + {} + + template ControlsInstanceDirectOf::~ControlsInstanceDirectOf() + {} + + template void + ControlsInstanceDirectOf::Update(void *data_source) + { + Check(this); + Check_Pointer(data_source); + Check_Pointer(dataPointer); + *dataPointer = *(T*)data_source; + Verify(*dataPointer == *(T*)data_source); + Check_Fpu(); + } + + template Logical + ControlsInstanceDirectOf::TestInstance() const + { + Check_Pointer(this); + Check_Pointer(dataPointer); + Check_Fpu(); + return Plug::TestInstance(); + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ControlsInstanceEventOf ~~~~~~~~~~~~~~~~~~ + + template class ControlsInstanceEventOf: + public ControlsInstance + { + friend class ControlsMappingGroup; + friend class ControlsManager; // required for testing + + public: + ControlsInstanceEventOf( + ModeMask mode_mask, + Receiver *receiver, + Receiver::MessageID message_id, + Plug *dependant + ); + ControlsInstanceEventOf( + ControlsInstanceEventOf *original + ); + + ~ControlsInstanceEventOf(); + Logical + TestInstance() const; + +// protected: + void Update(void *data_source); + + Receiver *receiverPointer; + Receiver::MessageID messageID; + }; + + template ControlsInstanceEventOf::ControlsInstanceEventOf( + ModeMask mode_mask, + Receiver *receiver, + Receiver::MessageID message_id, + Plug *dependant + ): + ControlsInstance( + EventControlsInstanceClassID, + mode_mask, + dependant + ), + receiverPointer(receiver), + messageID(message_id) + {} + + template ControlsInstanceEventOf::ControlsInstanceEventOf( + ControlsInstanceEventOf *original + ): + ControlsInstance( + EventControlsInstanceClassID, + original->modeMask, + original->dependantPlug.GetCurrent() + ), + receiverPointer(original->receiverPointer), + messageID(original->messageID) + {} + + template ControlsInstanceEventOf::~ControlsInstanceEventOf() + {} + + template void + ControlsInstanceEventOf::Update(void *data_source) + { + Check(this); + Check_Pointer(data_source); + Check(application); + + ReceiverDataMessageOf + update_message( + messageID, + sizeof(ReceiverDataMessageOf), + *(T*)data_source + ); + + application->Post( + ControlsEventPriority, + receiverPointer, + &update_message + ); + } + + template Logical + ControlsInstanceEventOf::TestInstance() const + { + Check_Pointer(this); + Check(receiverPointer); + Check_Fpu(); + return Plug::TestInstance(); + } + + //######################################################################### + //######################### ControlsMappingGroup ########################## + //######################################################################### + + // The ControlsMappingGroup object maintains a group of ControlInstances. + // + // ControlsMappingGroup.Update() will call ControlsInstance.Update() + // for each instance in the group. + + class ControlsMappingGroup : + public Node + { + friend class ControlsManager; // required for testing + + public: + ControlsMappingGroup(); + ~ControlsMappingGroup(); + + void + Add(ControlsInstance *mapping) + { + Check(this); + Check(mapping); + instanceList.Add(mapping); + } + + virtual void + Remove(ModeMask mode_mask); + + virtual void + Update(void *value, ModeMask mode_mask); + + Logical // returns true if at least one button active + CurrentFilterStatus(ModeMask mode_mask); + + protected: + ChainOf + instanceList; + }; + + //######################################################################### + //########################## ControlsUpdateManager ######################## + //######################################################################### + + template class ControlsUpdateManager : + public ControlsMappingGroup + { + public: + ControlsUpdateManager(); + ~ControlsUpdateManager(); + + Logical + TestInstance() const; + + virtual ControlsInstance* + Add( + ModeMask mode_mask, + Receiver *receiver_pointer, + Receiver::MessageID id, + Plug *dependant + ); + + virtual ControlsInstance* + Add( + ModeMask mode_mask, + T *destination, + Plug *dependant + ); + + virtual ControlsInstance* + AddOrErase( + ModeMask mode_mask, + Receiver *target, + Receiver::MessageID message_ID, + Plug *dependant + ); + + virtual ControlsInstance* + AddOrErase( + ModeMask mode_mask, + T *destination, + Plug *dependant + ); + + enum + { + unmapped = 0, + mappedByOthers = 1, + mappedByMe = 2 + }; + + virtual int + GetMapState( + void *direct_destination, + Receiver *event_receiver, + Receiver::MessageID message_id, + ModeMask mode_mask + ); + + virtual void + Update(void *sourcePointer, ModeMask mode_mask); + + void + ForceUpdate(T *sourcePointer, ModeMask mode_mask); + + T + previousValue; + }; + + template Logical + ControlsUpdateManager::TestInstance() const + { + return True; + } + + template + ControlsUpdateManager::ControlsUpdateManager() + : ControlsMappingGroup() + { + } + + template ControlsUpdateManager::~ControlsUpdateManager() + { + } + + template void + ControlsUpdateManager::Update( + void * source_pointer, + ModeMask mode_mask + ) + { + Check(this); + Check_Pointer(source_pointer); + + if (previousValue != *(T*) source_pointer) + { + ForceUpdate((T*)source_pointer, mode_mask); + } + Check_Fpu(); + } + + template void + ControlsUpdateManager::ForceUpdate( + T* source_pointer, + ModeMask mode_mask + ) + { + Check(this); + Check_Pointer(source_pointer); + previousValue = *source_pointer; + ControlsMappingGroup::Update(source_pointer, mode_mask); + Check_Fpu(); + } + + template ControlsInstance* + ControlsUpdateManager::Add( + ModeMask mode_mask, + Receiver *receiver_pointer, + Receiver::MessageID message_id, + Plug *dependant + ) + { + Check(this); + Check(receiver_pointer); + + ControlsInstanceEventOf *instance = + new ControlsInstanceEventOf( + mode_mask, + receiver_pointer, + message_id, + dependant + ); + Register_Object(instance); + ControlsMappingGroup::Add(instance); + Check_Fpu(); + return instance; + } + + template ControlsInstance* + ControlsUpdateManager::Add( + ModeMask mode_mask, + T *destination, + Plug *dependant + ) + { + Check(this); + Check_Pointer(destination); + + ControlsInstanceDirectOf *instance = + new ControlsInstanceDirectOf( + mode_mask, + destination, + dependant + ); + Register_Object(instance); + ControlsMappingGroup::Add(instance); + Check_Fpu(); + return instance; + } + + template ControlsInstance* + ControlsUpdateManager::AddOrErase( + ModeMask mode_mask, + Receiver *receiver_pointer, + Receiver::MessageID message_id, + Plug *dependant + ) + { + Check(this); + Check(receiver_pointer); + + ChainIteratorOf + i(instanceList); + ControlsInstance + *controls_instance; + ControlsInstanceEventOf + *event_mapping; + + //----------------------------------------------- + // Search through all mappings + //----------------------------------------------- + while ((controls_instance=i.ReadAndNext()) != NULL) + { + Check(controls_instance); + //----------------------------------------------- + // Process only the event mappings + //----------------------------------------------- + if (controls_instance->GetClassID() == EventControlsInstanceClassID) + { + event_mapping = (ControlsInstanceEventOf *)controls_instance; + Check(event_mapping); + //----------------------------------------------- + // Process only if the target is correct, AND + // if the mapping is allowed under the given + // mode mask + //----------------------------------------------- + if ( + (event_mapping->receiverPointer == receiver_pointer) && + (event_mapping->messageID == message_id) && + (event_mapping->modeMask & mode_mask) + ) + { + //----------------------------------------------- + // Found! Remove mode enable bit(s) + //----------------------------------------------- + event_mapping->modeMask &= ~mode_mask; + //----------------------------------------------- + // If this mapping no longer matches ANY mode + // (i.e., all bits cleared), delete it, 'cuz + // it doesn't do anything anymore. + //----------------------------------------------- + if (event_mapping->modeMask == (ModeMask)0) + { + Unregister_Object(event_mapping); + delete event_mapping; + } + //----------------------------------------------- + // We found the match, break out of the loop + //----------------------------------------------- + break; + } + } + } + + //---------------------------------------------------------- + // If the mapping wasn't found (controls_instance == NULL), + // then create one. + //---------------------------------------------------------- + if (controls_instance == NULL) + { + event_mapping = + new ControlsInstanceEventOf( + mode_mask, + receiver_pointer, + message_id, + dependant + ); + Register_Object(event_mapping); + ControlsMappingGroup::Add(event_mapping); + Check_Fpu(); + return event_mapping; + } + Check_Fpu(); + return NULL; + } + + template ControlsInstance* + ControlsUpdateManager::AddOrErase( + ModeMask mode_mask, + T *destination, + Plug *dependant + ) + { + Check(this); + Check_Pointer(destination); + + ChainIteratorOf + i(instanceList); + ControlsInstance + *controls_instance; + ControlsInstanceDirectOf + *direct_mapping; + + //----------------------------------------------- + // Search through all mappings + //----------------------------------------------- + while ((controls_instance=i.ReadAndNext()) != NULL) + { + Check(controls_instance); + //----------------------------------------------- + // Process only the direct mappings + //----------------------------------------------- + if (controls_instance->GetClassID() == DirectControlsInstanceClassID) + { + direct_mapping = (ControlsInstanceDirectOf *)controls_instance; + Check(direct_mapping); + //----------------------------------------------- + // Process only if the target is correct, AND + // if the mapping is allowed under the given + // mode mask + //----------------------------------------------- + if ( + (direct_mapping->dataPointer == destination) && + (direct_mapping->modeMask & mode_mask) + ) + { + //----------------------------------------------- + // Found! Remove mode enable bit(s) + //----------------------------------------------- + direct_mapping->modeMask &= ~mode_mask; + //----------------------------------------------- + // If this mapping no longer matches ANY mode + // (i.e., all bits cleared), delete it, 'cuz + // it doesn't do anything anymore. + //----------------------------------------------- + if (direct_mapping->modeMask == (ModeMask)0) + { + Unregister_Object(direct_mapping); + delete direct_mapping; + } + //----------------------------------------------- + // We found the match, break out of the loop + //----------------------------------------------- + break; + } + } + } + //---------------------------------------------------------- + // If the mapping wasn't found (controls_instance == NULL), + // then create one. + //---------------------------------------------------------- + if (controls_instance == NULL) + { + direct_mapping = + new ControlsInstanceDirectOf( + mode_mask, + destination, + dependant + ); + Register_Object(direct_mapping); + ControlsMappingGroup::Add(direct_mapping); + Check_Fpu(); + return direct_mapping; + } + Check_Fpu(); + return NULL; + } + + template int + ControlsUpdateManager::GetMapState( + void *direct_destination, + Receiver *event_receiver, + Receiver::MessageID message_id, + ModeMask mode_mask + ) + { + Check(this); + + ChainIteratorOf + i(instanceList); + ControlsInstance + *controls_instance; + int + map_state = 0; + + //----------------------------------------------- + // Search through all mappings + //----------------------------------------------- + while ((controls_instance=i.ReadAndNext()) != NULL) + { + Check(controls_instance); + //------------------------------------ + // Process if allowed mode + //------------------------------------ + if (controls_instance->modeMask & mode_mask) + { + //------------------------------------ + // Process direct mappings + //------------------------------------ + if (controls_instance->GetClassID() == + DirectControlsInstanceClassID + ) + { + ControlsInstanceDirectOf + *direct_mapping = (ControlsInstanceDirectOf *) + controls_instance; + + Check(direct_mapping); + if (direct_mapping->dataPointer == direct_destination) + { + map_state |= mappedByMe; + } + else + { + map_state |= mappedByOthers; + } + } + //------------------------------------ + // Process event mappings + //------------------------------------ + else + { + Verify(controls_instance->GetClassID() == + EventControlsInstanceClassID + ); + + ControlsInstanceEventOf + *event_mapping = (ControlsInstanceEventOf *) + controls_instance; + + Check(event_mapping); + if ( + (event_mapping->receiverPointer == event_receiver) && + (event_mapping->messageID == message_id) + ) + { + map_state |= mappedByMe; + } + else + { + map_state |= mappedByOthers; + } + } + } + } + Check_Fpu(); + return map_state; + } + + //######################################################################### + //############################ ControlsManager ############################ + //######################################################################### + class ControlsManager: + public Receiver + { + friend class ControlsMappingGroup; // for access to groupEnable + //------------------------------------------------------------------- + // Shared data support + //------------------------------------------------------------------- + public: + static Derivation ClassDerivations; +// static SharedData DefaultData; + + //------------------------------------------------------------------- + // Construction/destruction/verification + //------------------------------------------------------------------- + protected: + ControlsManager( + ClassID class_ID = ControlsManagerClassID, + SharedData &shared_data = ControlsManager::DefaultData + ); + public: + ~ControlsManager(); + + unsigned int + UniqueOwnerID() + { + if ((nextOwnerID+1)==0) { ++nextOwnerID; } + Check_Fpu(); + return (++nextOwnerID); + } + + virtual void + Remove(ModeMask mode_mask); + + virtual void + Execute(); + + static Logical + TestClass(); + + Logical + TestInstance() const; + + static void + Shutdown(); + + virtual void + LocalShutdown(); + + //------------------------------------------------------------------- + // Mode control + //------------------------------------------------------------------- + virtual void + StartMappableButtonsConfigure( + void *active_direct_target, + Receiver *target, + Plug *dependant, + Receiver::MessageID active_message_id, + ModeMask remove_mode_mask, + ModeMask add_mode_mask + ); + + virtual void + StopMappableButtonsConfigure( + ModeMask remove_mode_mask, + ModeMask add_mode_mask + ); + + virtual void + AddOrEraseMappableButton( + int button_number, + ModeMask mode_mask + ); + //------------------------------------------------------------------- + // Gauge support + //------------------------------------------------------------------- + void + *activeDestination; + Receiver + *activeReceiver; + Receiver::MessageID + activeMessageID; + Plug + *activeDependant; + + private: + static ControlsManager + *headControlsManager; + + ControlsManager + *nextControlsManager; + + static unsigned int + nextOwnerID; + }; + + + //######################################################################### + //############################ ControlsMapping ############################ + //######################################################################### + // Used by tools for building/reading control map streams + struct ControlsMapping + { + public: + enum { + DirectMapping=0, + EventMapping=1 + }; + + Enumeration + controlsGroup, + controlsElement, + mappingType, + subsystemID; + ModeMask + modeMask; + union + { + Simulation::AttributeID attributeID; + Receiver::MessageID messageID; + }; + }; + + //######################################################################### + //############################ ControlsString ############################# + //######################################################################### + + typedef int ControlsStringID; + + class ControlsString : + public Node + { + friend class ControlsStringManager; + protected: + + enum + { + maxStringLength=16 + }; + + ControlsString( + const char *new_string, + int keypad_unit_number, + Receiver *receiver_pointer, + Receiver::MessageID message_id, + int user_code + ); + ~ControlsString(); + + Logical + TestInstance() const; + void + Update(int keypad_unit_number, ControlsKey new_key); + + ControlsStringID + id; + const char + *matchStringPointer; + char + string[maxStringLength+1]; + int + stringLength, + keypadUnitNumber, + userCode; + Receiver + *receiverPointer; + Receiver::MessageID + messageID; + + static ControlsStringID + nextID; + }; + + + + //######################################################################### + //######################## ControlsStringMessage ########################## + //######################################################################### + // This is sent by the controlsString object when a match is detected + + class ControlsStringMessage: + public Receiver::Message + { + public: + ControlsStringMessage( + Receiver::MessageID message_ID, + int user_code + ): + Receiver::Message(message_ID, sizeof(ControlsStringMessage)), + userCode(user_code) + {} + + int + userCode; + }; + + //######################################################################### + //######################## ControlsStringManager ########################## + //######################################################################### + // This class matches strings from a keypad. When the given string + // is matched, it sends an event to the given receiver. + + class ControlsStringManager : + public Node + { + public: + ControlsStringManager(); + ~ControlsStringManager(); + + Logical + TestInstance() const; + + ControlsStringID + Add( + const char *new_string, + int keypad_unit_number, + Receiver *receiver_pointer, + Receiver::MessageID id, + int user_code = 0 + ); + void + Remove(ControlsStringID string_id); + + void + Update(int keypad_unit_number, ControlsKey new_key); + + ChainOf + instanceList; + }; + +#endif + diff --git a/CODE/RP/MUNGA/CONTROLS.TCP b/CODE/RP/MUNGA/CONTROLS.TCP new file mode 100644 index 0000000..e938e57 --- /dev/null +++ b/CODE/RP/MUNGA/CONTROLS.TCP @@ -0,0 +1,303 @@ +//==========================================================================// +// File: controls.tst // +// Project: MUNGA Brick: COntrols module // +// Contents: Test code for vector classes // +//--------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ----------------------------------------------------------// +// 12/12/94 CPB Initial coding. // +//--------------------------------------------------------------------------// +// Copyright (C) 1994, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//==========================================================================// + +#include + +#pragma initialize 34 + +// +//########################################################################### +//########################################################################### +// +TestControlsManager::TestControlsManager() + : ControlsManager() +{ +} + +// +//########################################################################### +//########################################################################### +// +TestControlsManager::~TestControlsManager() +{ +} + +// +//########################################################################### +//########################################################################### +// +void + TestControlsManager::Execute() +{ +} + +//########################################################################### +//############################# TestReceiver ################################ +//########################################################################### +Derivation + TestControlsReceiver::ClassDerivations( + Receiver::ClassDerivations,"TestControlsReceiver1" + ); + +TestControlsReceiver::SharedData + TestControlsReceiver::DefaultData( + TestControlsReceiver::ClassDerivations, + TestControlsReceiver::MessageHandlers + ); + +TestControlsReceiver::TestControlsReceiver( + TestControlsReceiver::ClassID class_ID, + TestControlsReceiver::SharedData &shared_data +): + Receiver(class_ID, shared_data) +{ + keyStroke = 0; + joystickValue.x = 0.0f; + joystickValue.y = 0.0f; +} + +TestControlsReceiver::~TestControlsReceiver() +{ +} + +void +TestControlsReceiver::KeyboardMessageHandler( + ReceiverDataMessageOf *message +) +{ + keyStroke = message->dataContents; +} + +void +TestControlsReceiver::JoystickMessageHandler( + ReceiverDataMessageOf > *message +) +{ + joystickValue = message->dataContents; +} + +const Receiver::HandlerEntry + TestControlsReceiver::MessageHandlerEntries[]= +{ + { + TestControlsReceiver::KeyboardMessageID, + "Keyboard", + (Receiver::Handler)&TestControlsReceiver::KeyboardMessageHandler + }, + { + TestControlsReceiver::JoystickMessageID, + "Joystick", + (Receiver::Handler)&TestControlsReceiver::JoystickMessageHandler + } +}; + +Receiver::MessageHandlerSet + TestControlsReceiver::MessageHandlers( + ELEMENTS(TestControlsReceiver::MessageHandlerEntries), + TestControlsReceiver::MessageHandlerEntries, + Receiver::MessageHandlers + ); + +// +//########################################################################### +//########################################################################### +// +Logical + ControlsManager::TestClass() +{ +#if 0 + Test_Message("Starting ControlsManager test...\n"); + unsigned int fakeOwnerID(1); + + Vector2DOf vector1(0.0f, 0.0f); + Vector2DOf vector2(1.0f, 2.0f); + Vector2DOf vector3(3.0f, 4.0f); + // + //-------------------------------------------------------- + // Test ControlsInstanceDirectOf... + //-------------------------------------------------------- + // + { + ControlsInstanceDirectOf< Vector2DOf > *instance1; + + instance1 = new ControlsInstanceDirectOf< Vector2DOf >( + fakeOwnerID,&vector1 + ); + + Check(instance1); + Register_Object(instance1); + + instance1->Update(&vector2); + Test(vector1 == vector2); + + Unregister_Object(instance1); + delete instance1; + } + // + //-------------------------------------------------------- + // Test ControlsMappingGroup + //-------------------------------------------------------- + // + { + ControlsMappingGroup testGroup; + Check(&testGroup); + + ControlsInstanceDirectOf< Vector2DOf > *instance1; + instance1 = new ControlsInstanceDirectOf< Vector2DOf >( + fakeOwnerID, + &vector1 + ); + Check(instance1); + Register_Object(instance1); + + ControlsInstanceDirectOf< Vector2DOf > *instance2; + instance2 = new ControlsInstanceDirectOf< Vector2DOf > ( + fakeOwnerID, + &vector2 + ); + Check(instance2); + Register_Object(instance2); + + testGroup.Add(instance1); + testGroup.Add(instance2); + + ChainIteratorOf + i(testGroup.instanceList); + + ControlsInstance + *controls_instance; + + while ((controls_instance=i.ReadAndNext()) != NULL) + { + Check(controls_instance); + } + + testGroup.Update(&vector3); + Test(vector1 == vector3); + Test(vector2 == vector3); + + Unregister_Object(instance2); + delete instance2; + + Unregister_Object(instance1); + delete instance1; + } + // + //-------------------------------------------------------- + // Create Receiver + //-------------------------------------------------------- + // + TestControlsReceiver *my_receiver; + + my_receiver = new TestControlsReceiver(); + Check(my_receiver); + Register_Object(my_receiver); + + // + //-------------------------------------------------------- + // Test ControlsInstanceEventOf... + //-------------------------------------------------------- + // + { + int q0, q1; + int testKey = 0; + + ControlsInstanceEventOf< int > *instance1; + + instance1 = new ControlsInstanceEventOf< int > ( + fakeOwnerID, + my_receiver, + TestControlsReceiver::KeyboardMessageID + ); + Check(instance1); + Register_Object(instance1); + + ControlsInstanceDirectOf< int > *instance2; + instance2 = new ControlsInstanceDirectOf< int > ( + fakeOwnerID, + &testKey + ); + Check(instance2); + Register_Object(instance2); + + Test(my_receiver->keyStroke == 0); + q0 = 1; + instance1->Update(&q0); + application->ProcessAllEvents(); // process posted events + Test(my_receiver->keyStroke == q0); + // + //-------------------------------------------------------- + // Test ControlsMappingGroup, again + //-------------------------------------------------------- + // + ControlsMappingGroup testGroup; + Check(&testGroup); + testGroup.Add(instance1); + testGroup.Add(instance2); + + q1=2; + testGroup.Update(&q1); + application->ProcessAllEvents(); // process posted events + Test(my_receiver->keyStroke == q1); + Test(testKey == q1); + + Unregister_Object(instance2); + delete instance2; + Unregister_Object(instance1); + delete instance1; + } + // + //-------------------------------------------------------- + // Test ControlsUpdateManager + //-------------------------------------------------------- + // + { + ControlsUpdateManager intGroup; + int source = 1; + int dest1 = 0; + int dest2 = 0; + + intGroup.Add(0,&dest1); + intGroup.Add(0,&dest2); + + intGroup.ForceUpdate(&source); + + Test(dest1 == source); + Test(dest2 == source); + + intGroup.Remove(0); + + dest1 = 0; + dest2 = 0; + intGroup.ForceUpdate(&source); + Test(dest1 == 0); + Test(dest2 == 0); + } + // + //-------------------------------------------------------- + // Destroy Receiver + //-------------------------------------------------------- + // + Unregister_Object(my_receiver); + delete my_receiver; + + // + //-------------------------------------------------------- + // Return test result + //-------------------------------------------------------- + // +#endif + return True; +} + diff --git a/CODE/RP/MUNGA/CONTROLS.THP b/CODE/RP/MUNGA/CONTROLS.THP new file mode 100644 index 0000000..80b7eed --- /dev/null +++ b/CODE/RP/MUNGA/CONTROLS.THP @@ -0,0 +1,88 @@ +//===========================================================================// +// File: controls.thh // +// Project: MUNGA Brick: Controls Module // +// Contents: Interface specification for Controls module // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- -----------------------------------------------------------// +// 12/12/94 CPB Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. All rights reserved // +// PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(CONTROLS_THH) +# define CONTROLS_THH + + //######################################################################### + //########################## TestControlsManager ########################## + //######################################################################### + + class TestControlsManager: + public ControlsManager + { + public: + TestControlsManager(); + ~TestControlsManager(); + + void + Execute(); + }; + + //######################################################################### + //############################# TestReceiver ############################## + //######################################################################### + class TestControlsReceiver: + public Receiver + { + //######################################################################### + // Shared Data Support + // + public: + static Derivation ClassDerivations; + static SharedData DefaultData; + + //######################################################################### + // Construction and Destruction Support + // + public: + TestControlsReceiver( + ClassID class_ID=TrivialReceiverClassID, + SharedData &shared_data=DefaultData + ); + + ~TestControlsReceiver(); + + //########################################################################## + // Messaging Support + // + public: + enum { + KeyboardMessageID=Receiver::NextMessageID, + JoystickMessageID, + NextMessageID + }; + + protected: + static const HandlerEntry + MessageHandlerEntries[]; + static MessageHandlerSet + MessageHandlers; + + void KeyboardMessageHandler(ReceiverDataMessageOf *); + void JoystickMessageHandler(ReceiverDataMessageOf > *); + + //########################################################################## + // Test Support + // + public: + int + keyStroke; + + Vector2DOf + joystickValue; + }; + + +#endif + diff --git a/CODE/RP/MUNGA/CSTR.HPP b/CODE/RP/MUNGA/CSTR.HPP new file mode 100644 index 0000000..ecd613a --- /dev/null +++ b/CODE/RP/MUNGA/CSTR.HPP @@ -0,0 +1,1089 @@ +//===========================================================================// +// File: string.hpp // +// Title: Definition of CString class. // +// Project: Munga // +// Author: Eric Huffman // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 03/21/95 ECH Initial coding // +//---------------------------------------------------------------------------// +// Copyright (c) 1994-1995 Virtual World Entertainment, Inc. // +// All rights reserved worldwide. // +// This unpublished source code is PROPRIETARY and CONFIDENTIAL. // +//===========================================================================// + +#if !defined(CSTR_HPP) +# define CSTR_HPP + +# if !defined(STYLE_HPP) +# include +# endif + + class CStringRepresentation; + class CString; + + class MemoryStream; + + class StringRepresentation; + class pString; + class pcString; + typedef StringRepresentation& rString; + typedef const StringRepresentation& rcString; + + //########################################################################## + //#################### StringRepresentation ########################## + //########################################################################## + + class StringRepresentation + { + private: + char firstByte; + + // + // A new string cannot be created directly. It must already exist in + // RAM and simply be pointed where needed + // + StringRepresentation(); + StringRepresentation(rcString string); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Accessor functions + // + public: + const char& + operator[](size_t index) const + {Check(this); return (&firstByte)[index];} + char& + operator[](size_t index) + {Check(this); return (&firstByte)[index];} + + operator const char*() const + {Check(this); return &firstByte;} + operator char*() + {Check(this); return &firstByte;} + + size_t + GetLength() const + {Check(this); return strlen(&firstByte);} + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Assignment functions + // + public: + rString + operator=(const char* string) + { + Check(this); Check_Pointer(string); + strcpy(&firstByte, string); return *this; + } + rString + operator=(rcString string) + { + Check(this); Check(&string); + strcpy(&firstByte, &string.firstByte); return *this; + } + rString + operator=(char byte) + {Check(this); firstByte = byte; return *this;} + + + rString + operator+=(const char* string) + { + Check(this); Check_Pointer(string); + strcat(&firstByte, string); return *this; + } + rString + operator+=(char chr); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Comparison functions + // + public: + int + Compare(const char *string) const + {return strcmp(&firstByte, string);} + int + Compare( + const char *string, + size_t length + ) const + {return strncmp(&firstByte, string, length);} + int + CaselessCompare(const char *string) const + {return stricmp(&firstByte, string);} + int + CaselessCompare( + const char *string, + size_t length + ) const + {return strnicmp(&firstByte, string, length);} + + Logical + operator<(const char* string) const + {return Compare(string) < 0;} + Logical + operator<=(const char* string) const + {return Compare(string) <= 0;} + Logical + operator>(const char* string) const + {return Compare(string) > 0;} + Logical + operator>=(const char* string) const + {return Compare(string) >= 0;} + Logical + operator==(const char* string) const + {return Compare(string) == 0;} + Logical + operator!=(const char* string) const + {return Compare(string) != 0;} + + Logical + operator<(char chr) const + {return firstByte < chr;} + Logical + operator<=(char chr) const + {return firstByte <= chr;} + Logical + operator>(char chr) const + {return firstByte > chr;} + Logical + operator>=(char chr) const + {return firstByte >= chr;} + Logical + operator==(char chr) const + {return firstByte == chr;} + Logical + operator!=(char chr) const + {return firstByte != chr;} + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Stream functions + // + public: + friend ostream& + operator <<( + ostream &strm, + rcString str + ) + {return strm << &str.firstByte;} + + friend MemoryStream& + MemoryStream_Read( + MemoryStream* stream, + StringRepresentation *str + ); + + friend MemoryStream& + MemoryStream_Write( + MemoryStream* stream, + const StringRepresentation *str + ); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Test support + // + public: + #if defined(USE_SIGNATURE) + friend int + Is_Signature_Bad(const StringRepresentation *p); + #endif + + Logical + TestInstance() const + {return True;} + }; + + //########################################################################## + //########################### pString ################################ + //########################################################################## + + class pString SIGNATURED + { + friend class pcString; + + protected: + StringRepresentation* stringText; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Constructors + // + public: + pString(char *string = NULL) + {stringText = (StringRepresentation*)string;} + pString(rString string) + {stringText = &string;} + pString(const pString& string) + {stringText = string.stringText;} + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Assignment functions + // + public: + pString& + operator=(char *string) + {stringText = (StringRepresentation*)string; return *this;} + pString& + operator=(rString string) + {stringText = &string; return *this;} + pString& + operator=(const pString& string) + {stringText = string.stringText; return *this;} + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Search functions + // + public: + pString& + operator++() + {++SKIPPY_CAST(char*,stringText); return *this;} + pString + operator++(int) + {return pString(SKIPPY_CAST(char*,stringText)++);} + pString& + operator--() + {--SKIPPY_CAST(char*,stringText); return *this;} + pString + operator--(int) + {return pString(SKIPPY_CAST(char*,stringText)--);} + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Accessor functions + // + public: + rString + operator*() const + {return *stringText;} + StringRepresentation* + operator->() const + {return stringText;} + + char& + operator[](size_t index) const + {Check(this); return (*stringText)[index];} + + operator char*() const + {Check(this); return (char*)stringText;} + Logical + operator!() const + {return !stringText;} + + char** + GetTextPtr() + {return (char**)&stringText;} + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Stream functions + // + public: + friend MemoryStream& + MemoryStream_Read( + MemoryStream* stream, + pString str + ) + {return MemoryStream_Read(stream, str.stringText);} + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Test support + // + public: + Logical + TestInstance() const + {return True;} + }; + + //########################################################################## + //####################### pcString ############################# + //########################################################################## + + class pcString SIGNATURED + { + protected: + const StringRepresentation* stringText; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Constructors + // + public: + pcString(const char *string = NULL) + {stringText = (const StringRepresentation*)string;} + pcString(rcString string) + {stringText = &string;} + pcString(const pString& string) + {stringText = string.stringText;} + pcString(const pcString& string) + {stringText = string.stringText;} + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Assignment functions + // + public: + pcString& + operator=(const char *string) + {stringText = (const StringRepresentation*)string; return *this;} + pcString& + operator=(rcString string) + {stringText = &string; return *this;} + pcString& + operator=(const pString& string) + {stringText = string.stringText; return *this;} + pcString& + operator=(const pcString& string) + {stringText = string.stringText; return *this;} + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Search functions + // + public: + pcString& + operator++() + {++SKIPPY_CAST(const char*,stringText); return *this;} + pcString + operator++(int) + {return pcString(SKIPPY_CAST(const char*,stringText)++);} + pcString& + operator--() + {--SKIPPY_CAST(const char*,stringText); return *this;} + pcString + operator--(int) + {return pcString(SKIPPY_CAST(const char*,stringText)--);} + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Accessor functions + // + public: + rcString + operator*() const + {return *stringText;} + const StringRepresentation* + operator->() const + {return stringText;} + + const char& + operator[](size_t index) const + {Check(this); return (*stringText)[index];} + + operator const char*() const + {Check(this); return (const char*)stringText;} + Logical + operator!() const + {return !stringText;} + + const char** + GetTextPtr() + {return (const char**)&stringText;} + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Test support + // + public: + Logical + TestInstance() const + {return True;} + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // ASCII Conversions + // + void + Convert_From_Ascii( + const char* str, + char* value + ); + void + Convert_From_Ascii( + const char* str, + Byte* value + ); + void + Convert_From_Ascii( + const char* str, + short* value + ); + void + Convert_From_Ascii( + const char* str, + Word* value + ); + void + Convert_From_Ascii( + const char* str, + int* value + ); + void + Convert_From_Ascii( + const char* str, + unsigned* value + ); + void + Convert_From_Ascii( + const char* str, + long* value + ); + void + Convert_From_Ascii( + const char* str, + LWord* value + ); + + //########################################################################## + //##################### CStringRepresentation ######################## + //########################################################################## + + class CStringRepresentation SIGNATURED + { + friend CString; + + friend CString + operator + ( + const CString &str1, + const CString &str2 + ); + + friend CString + operator + ( + const CString &str1, + char ch + ); + + friend MemoryStream& + MemoryStream_Read( + MemoryStream* stream, + CString *str + ); + + friend void + Convert_From_Ascii( + const char *str, + CString *value + ); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Construction, Destruction + // + private: + CStringRepresentation(); + CStringRepresentation(const CStringRepresentation &str); + CStringRepresentation(const char *cstr); + + public: + ~CStringRepresentation(); + + Logical + TestInstance() const; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Length, Size + // + private: + // + // Length returns strlen of string + // + size_t + Length() const; + // + // Size returns memory allocation size + // + size_t + Size() const; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Accesors & Manipulation + // + private: + // + // create a c-string from CStringRepresentation method + // HACK - ECH 11/1/95 - Remove const to support 3rd party libs + // + operator char*() const; + + // + // assignment method + // + CStringRepresentation + operator = (const CStringRepresentation &str); + CStringRepresentation + operator = (const char *cstr); + + // + // concatenation methods + // + friend CStringRepresentation + operator + ( + const CStringRepresentation &str1, + const CStringRepresentation &str2 + ); + + friend CStringRepresentation + operator + ( + const CStringRepresentation & str1, + char ch + ); + + void + operator += (const CStringRepresentation &str); + void + operator += (char ch); + + // + // comparison methods + // + int + Compare(const CStringRepresentation &str) const; + + int + operator < (const CStringRepresentation &str) const; + int + operator > (const CStringRepresentation &str) const; + int + operator <= (const CStringRepresentation &str) const; + int + operator >= (const CStringRepresentation &str) const; + int + operator == (const CStringRepresentation &str) const; + int + operator != (const CStringRepresentation &str) const; + + // + // character retrieval method + // + char + operator [] (size_t pos) const; + + CStringRepresentation + GetNthToken( + size_t nth_token, + char *delimiters=NULL + ) const; + + // + // case-modification methods + // + #if 0 + void + ToUpper(); + void + ToLower(); + #endif + + // + // stream input/output methods + // + friend ostream& + operator << ( + ostream &strm, + const CStringRepresentation &str + ); + + friend MemoryStream& + MemoryStream_Read( + MemoryStream* stream, + CStringRepresentation *str + ); + + friend MemoryStream& + MemoryStream_Write( + MemoryStream* stream, + const CStringRepresentation& str + ); + + friend void + Convert_From_Ascii( + const char *str, + CStringRepresentation *value + ); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Reference count methods + // + private: + void + IncrementReferenceCount(); + + void + DecrementReferenceCount(); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Private Data + // + private: + // + // class constant + // + static size_t + allocationIncrement; + + // + // calc alloc size for needed bytes + // + static size_t + CalculateSize(size_t needed); + + // + // instance variables + // + size_t + stringSize; + size_t + stringLength; + char + *stringText; + + // + // reference count + // + int + referenceCount; + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~ CStringRepresentation inlines ~~~~~~~~~~~~~~~~~~~ + + // value return methods + inline size_t + CStringRepresentation::Length() const + { + Check(this); + return stringLength; + } + + inline size_t + CStringRepresentation::Size() const + { + Check(this); + return stringSize; + } + + // create a c-string from CStringRepresentation method + // HACK - ECH 11/1/95 - Remove const to support 3rd party libs + inline + CStringRepresentation::operator char*() const + { + Check(this); + return stringText; + } + + // concatenation methods + inline void + CStringRepresentation::operator += (const CStringRepresentation &str) + { + Check(this); + *this = *this + str; + } + + inline void + CStringRepresentation::operator += (char ch) + { + Check(this); + *this = *this + ch; + } + + // comparison methods + inline int + CStringRepresentation::operator < (const CStringRepresentation &str) const + { + return (Compare(str) < 0); + } + + inline int + CStringRepresentation::operator > (const CStringRepresentation &str) const + { + return (Compare(str) > 0); + } + + inline int + CStringRepresentation::operator <= (const CStringRepresentation &str) const + { + return !(Compare(str) > 0); + } + + inline int + CStringRepresentation::operator >= (const CStringRepresentation &str) const + { + return !(Compare(str) < 0); + } + + inline int + CStringRepresentation::operator == (const CStringRepresentation &str) const + { + return (Compare(str) == 0); + } + + inline int + CStringRepresentation::operator != (const CStringRepresentation &str) const + { + return (Compare(str) != 0); + } + + // character retrieval method + inline char + CStringRepresentation::operator [] (size_t pos) const + { + Check(this); + return (pos >= stringLength) ? ('\x00') : (stringText[pos]); + } + + // stream input/output methods + inline ostream& + operator << (ostream &strm, const CStringRepresentation &str) + { + Check(&str); + strm << str.stringText; + return strm; + } + + // Reference count methods + inline void + CStringRepresentation::IncrementReferenceCount() + { + Check(this); + Verify(referenceCount >= 0); + referenceCount++; + } + + inline void + CStringRepresentation::DecrementReferenceCount() + { + Check(this); + Verify(referenceCount > 0); + if (--referenceCount == 0) + { + Unregister_Object(this); + delete this; + } + } + + //########################################################################## + //############################ CString ############################### + //########################################################################## + + class CString SIGNATURED + { + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Construction, Destruction + // + public: + CString(); + CString(const CString &str); + CString(const char *cstr); + + ~CString(); + + Logical + TestInstance() const; + static Logical + TestClass(); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Length, Size + // + public: + // + // Length returns strlen of string + // + size_t + Length() const; + // + // Size returns memory allocation size + // + size_t + Size() const; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Accesors & Manipulation + // + public: + // + // create a c-string from CString method + // HACK - ECH 11/1/95 - Remove const to support 3rd party libs + // + operator char*() const; + + // + // assignment method + // + CString + operator = (const CString &str); + CString + operator = (const char *cstr); + + // + // concatenation methods + // + friend CString + operator + ( + const CString &str1, + const CString &str2 + ); + + friend CString + operator + ( + const CString & str1, + char ch + ); + + void + operator += (const CString &str); + void + operator += (char ch); + + // + // comparison methods + // + int + Compare(const CString &str) const; + + int + operator < (const CString &str) const; + int + operator > (const CString &str) const; + int + operator <= (const CString &str) const; + int + operator >= (const CString &str) const; + int + operator == (const CString &str) const; + int + operator != (const CString &str) const; + + // + // character retrieval method + // + char + operator [] (size_t pos) const; + + CString + GetNthToken( + size_t nth_token, + char *delimiters=NULL + ) const; + + // + // stream input/output methods + // + friend + ostream & operator << ( + ostream &strm, + const CString &str + ); + + friend MemoryStream& + MemoryStream_Read( + MemoryStream* stream, + CString* str + ); + + friend MemoryStream& + MemoryStream_Write( + MemoryStream* stream, + const CString* str + ); + + friend void + Convert_From_Ascii( + const char *str, + CString *value + ); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Private Data + // + private: + CStringRepresentation + *representation; + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~ CString inlines ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + // construction, destruction, testing + inline + CString::CString() + { + representation = new CStringRepresentation; + Register_Object(representation); + representation->IncrementReferenceCount(); + Verify(representation->referenceCount == 1); + } + + inline + CString::CString(const CString &str) + { + Check(&str); + representation = str.representation; + Check(representation); + representation->IncrementReferenceCount(); + } + + inline + CString::CString(const char *cstr) + { + representation = new CStringRepresentation(cstr); + Register_Object(representation); + representation->IncrementReferenceCount(); + Verify(representation->referenceCount == 1); + } + + inline + CString::~CString() + { + Check(representation); + representation->DecrementReferenceCount(); + } + + inline Logical + CString::TestInstance() const + { + Check(representation); + return True; + } + + // length, size + inline size_t + CString::Length() const + { + Check(representation); + return representation->Length(); + } + + inline size_t + CString::Size() const + { + Check(representation); + return representation->Size(); + } + + // create a c-string from CString method + // HACK - ECH 11/1/95 - Remove const to support 3rd party libs + inline + CString::operator char*() const + { + Check(representation); + return representation->stringText; + } + + // concatenation methods + inline CString + operator + ( + const CString &str1, + const CString &str2 + ) + { + Check(&str1); + Check(&str2); + CStringRepresentation temp = *str1.representation + *str2.representation; + return CString(temp.stringText); + } + + inline CString + operator + ( + const CString &str1, + char ch + ) + { + Check(&str1); + CStringRepresentation temp = *str1.representation + ch; + return CString(temp.stringText); + } + + inline void + CString::operator += (const CString &str) + { + Check(this); + Check(&str); + *this = *this + str; + } + + inline void + CString::operator += (char ch) + { + Check(this); + *this = *this + ch; + } + + // comparison methods + inline int + CString::Compare(const CString &str) const + { + Check(&str); + Check(representation); + return representation->Compare(*str.representation); + } + + inline int + CString::operator < (const CString &str) const + { + return (Compare(str) < 0); + } + + inline int + CString::operator > (const CString &str) const + { + return (Compare(str) > 0); + } + + inline int + CString::operator <= (const CString &str) const + { + return !(Compare(str) > 0); + } + + inline int + CString::operator >= (const CString &str) const + { + return !(Compare(str) < 0); + } + + inline int + CString::operator == (const CString &str) const + { + return (Compare(str) == 0); + } + + inline int + CString::operator != (const CString &str) const + { + return (Compare(str) != 0); + } + + // character retrieval method + inline char + CString::operator [] (size_t pos) const + { + Check(representation); + return (*representation)[pos]; + } + + inline CString + CString::GetNthToken( + size_t nth_token, + char *delimiters + ) const + { + Check(representation); + CStringRepresentation temp = + representation->GetNthToken(nth_token, delimiters); + return CString(temp.stringText); + } + + // stream input/output methods + inline ostream& + operator << ( + ostream &strm, + const CString &str + ) + { + Check(&str); + strm << *str.representation; + return strm; + } + + inline MemoryStream& + MemoryStream_Write( + MemoryStream* stream, + const CString* str + ) + { + return MemoryStream_Write(stream, *str->representation); + } + +#endif diff --git a/CODE/RP/MUNGA/CSTR.TCP b/CODE/RP/MUNGA/CSTR.TCP new file mode 100644 index 0000000..2943322 --- /dev/null +++ b/CODE/RP/MUNGA/CSTR.TCP @@ -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; +} + diff --git a/CODE/RP/MUNGA/CULTURAL.HPP b/CODE/RP/MUNGA/CULTURAL.HPP new file mode 100644 index 0000000..2c5722d --- /dev/null +++ b/CODE/RP/MUNGA/CULTURAL.HPP @@ -0,0 +1,388 @@ +//===========================================================================// +// File: cultural.hh // +// Project: MUNGA Brick: Model Manager // +// Contents: Interface specification for Cultural Icon Class // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 12/11/95 JM Initial coding. // +// 01/10/96 JM Added Landmark Terrain // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined (CULTURAL_HPP) +# define CULTURAL_HPP + +#if !defined(TERRAIN_HPP) +# include +#endif + +#if !defined(MEMSTRM_HPP) +# include +#endif + +#if !defined(RESOURCE_HPP) +# include +#endif + +#if !defined(NOTATION_HPP) +# include +#endif + +#if !defined(TEAM_HPP) +# include +#endif + + class ScenarioRole; + + + + //########################################################################## + //################## CulturalIcon::ModelResource ####################### + //########################################################################## + + struct CulturalIcon__ModelResource + { + Scalar + destroyedYTranslation; + + Scalar + timeDelay; + + ResourceDescription::ResourceID + explosionResourceID; + + ResourceDescription::ResourceID + crunchExplosionResourceID; + + Logical + sinkCollisionVolume, stoppingCollisionVolume; + }; + + //########################################################################## + //##################### Class CulturalIcon ########################## + //########################################################################## + + class CulturalIcon : + public UnscalableTerrain + { + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Shared Data support + // + public: + + static Derivation ClassDerivations; + + static SharedData DefaultData; + + + private: + static const HandlerEntry MessageHandlerEntries[]; + + protected: + static MessageHandlerSet MessageHandlers; + + public: + enum { + SetBurningStateMessageID = UnscalableTerrain::NextMessageID, + NextMessageID + }; + + void + TakeDamageMessageHandler(TakeDamageMessage *damage_message); + void + SetBurningStateMessageHandler(Message *burning_message); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Collision Volume Support + // + protected: + + void + UpdateCollisionVolumes(); + + enum { + RemoveCollisionVolumeOnDeathBit = UnscalableTerrain::NextBit, + StoppingCollisionVolumeBit, + NextBit + }; + + enum { + RemoveCollisionVolumeOnDeathFlag = 1 << RemoveCollisionVolumeOnDeathBit, + StoppingCollisionVolumeFlag = 1 << StoppingCollisionVolumeBit + }; + + void + SetRemoveCollisionVolumeFlag() + {Check(this); simulationFlags |= RemoveCollisionVolumeOnDeathFlag;} + + Logical + RemoveCollisionVolumeOnDeath() const + {Check(this); return (simulationFlags&RemoveCollisionVolumeOnDeathFlag);} + + void + SetStoppingCollisionVolumeFlag() + {Check(this); simulationFlags |= StoppingCollisionVolumeFlag; } + + ResourceDescription::ResourceID + explosionResourceID; + + ResourceDescription::ResourceID + crunchExplosionResourceID; + + + Scalar + destroyedYTranslation; + + Scalar + timeDelay; + + + public: + + Logical + IsStoppingCollisionVolume() const + {Check(this); return (simulationFlags&StoppingCollisionVolumeFlag);} + + + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Attribute Support + // + public: + + enum { + TeamNameAttributeID = UnscalableTerrain::NextAttributeID, + NextAttributeID + }; + + enum { + BurningState = UnscalableTerrain::StateCount, + WaitingToBurn, + StateCount + }; + + char + teamName[64]; + + private: + static const IndexEntry AttributePointers[]; + + protected: + static AttributeIndexSet AttributeIndex; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Construction and Destruction + // + public: + + typedef CulturalIcon__ModelResource ModelResource; + + CulturalIcon( + MakeMessage *creation_message, + SharedData &shared_data = DefaultData + ); + ~CulturalIcon(); + + void + ReadUpdateRecord(Simulation::UpdateRecord *message); + + Logical + TestInstance() const; + + static Logical + CreateMakeMessage ( + MakeMessage *creation_message, + NotationFile *model_file, + const ResourceDirectories *directories + ); + + static CulturalIcon* + Make(MakeMessage *creation_message); + + static int + CreateModelResource ( + ResourceFile *resource_file, + const char *model_name, + NotationFile *model_file, + const ResourceDirectories *directories, + ModelResource* model = NULL + ); + + static int + CreateDamageZoneStream ( + ResourceFile *resource_file, + const char *model_name, + NotationFile *model_file, + const ResourceDirectories *directories + ); + }; + //########################################################################## + //################## Landmark::MakeMessage ############################# + //########################################################################## + class Landmark__MakeMessage : + public CulturalIcon::MakeMessage + { + public: + + int + landmarkID; + + char + roleName[64]; + char + landmarkName[64]; + char + teamName[64]; + + Landmark__MakeMessage(); + Landmark__MakeMessage( + Receiver::MessageID message_ID, + size_t length, + const EntityID &entity_ID, + Entity::ClassID class_ID, + ResourceDescription::ResourceID resource_ID, + LWord instance_flags, + const Origin &origin, + char *team_name, + int landmark_ID, + CString role_name + + ) : + CulturalIcon::MakeMessage( + message_ID, + length, + entity_ID, + class_ID, + EntityID::Null, + resource_ID, + instance_flags, + origin + ), + landmarkID(landmark_ID) + { + Str_Copy(teamName, team_name, sizeof(teamName)); + Str_Copy(roleName, (const char*)role_name, sizeof(roleName)); + } + }; + + //########################################################################## + //################## Landmark::ModelResource ####################### + //########################################################################## + + struct Landmark__ModelResource : + public CulturalIcon::ModelResource + { +#if 0 + ResourceDescription::ResourceID + roleResourceID; +#endif + }; + //########################################################################## + //##################### Class Landmark ########################## + //########################################################################## + + class Landmark : + public CulturalIcon + { + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Shared Data support + // + public: + + static Derivation ClassDerivations; + + static SharedData DefaultData; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Message Support + // + private: + static const HandlerEntry MessageHandlerEntries[]; + + protected: + static MessageHandlerSet MessageHandlers; + + public: + + void + TakeDamageMessageHandler(TakeDamageMessage *damage_message); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Local Data support + // + protected: + + ScenarioRole + *scenarioRole; + + int + landmarkID; + + Team + *owningTeam; + + char + teamName[64]; + + public: + + const ScenarioRole* + GetScenarioRole() const + {Check(this); return scenarioRole; } + + void + SetScenarioRole(ScenarioRole *scenario_role) + { Check(this); scenarioRole = scenario_role; } + + int + GetLandmarkID() const + {Check(this); return landmarkID; } + + Team* + GetOwningTeam() + {Check(this); return owningTeam; } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Constructor / Destructor support + // + public: + + typedef Landmark__MakeMessage MakeMessage; + typedef Landmark__ModelResource ModelResource; + + Landmark( + MakeMessage *creation_message, + SharedData &shared_data = DefaultData + ); + + ~Landmark(); + + Logical + TestInstance() const; + + static Logical + CreateMakeMessage ( + MakeMessage *creation_message, + NotationFile *model_file, + const ResourceDirectories *directories + ); + + static Landmark* + Make(MakeMessage *creation_message); + + static int + CreateModelResource ( + ResourceFile *resource_file, + const char *model_name, + NotationFile *model_file, + const ResourceDirectories *directories, + ModelResource* model = NULL + ); + + + }; +#endif diff --git a/CODE/RP/MUNGA/DAMAGE.CPP b/CODE/RP/MUNGA/DAMAGE.CPP new file mode 100644 index 0000000..03d2ba8 --- /dev/null +++ b/CODE/RP/MUNGA/DAMAGE.CPP @@ -0,0 +1,834 @@ +//===========================================================================// +// File: damage.cpp // +// Project: MUNGA Brick: Entity Manager // +// Contents: Damage Details // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 05/01/95 JM Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(SEGMENT_HPP) +# include +#endif + +#if !defined(EXPTBL_HPP) +# include +#endif + +#if !defined(FILEUTIL_HPP) +# include +#endif + +#if !defined(JMOVER_HPP) +# include +#endif + +#if !defined(SCHAIN_HPP) +# include +#endif + +#if !defined(NOTATION_HPP) +# include +#endif + +#if !defined(NAMELIST_HPP) +# include +#endif + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +MaterialList::MaterialList() : + materialList(NULL) +{ + listIterator = new CStringSocketIterator(materialList); + Register_Object(listIterator); + Check_Fpu(); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +MaterialList::~MaterialList() +{ + DeletePlugs(); + + Unregister_Object(listIterator); + delete listIterator; + Check_Fpu(); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Damage::Damage() +{ + damageAmount = 0.0f; + damageForce = Vector3D::Identity; + surfaceNormal.x = 0.0f; + surfaceNormal.y = 1.0f; + surfaceNormal.z = 0.0f; + impactPoint = Point3D::Identity; + burstCount = 1.0f; + Check_Fpu(); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// + +EntitySegment* + DamageZone::GetCurrentEffectSite(Enumeration effect_site_type) +{ + Check(this); + EntitySegment *return_segment; + switch(effect_site_type) + { +Return_Default_Effect: + case DefaultEffectSite: + default: + { + SChainIteratorOf iterator(defaultEffectSiteChain); + Check(iterator.GetCurrent()); + return iterator.GetCurrent(); + } + case InternalVideoEffectSite: + { + SChainIteratorOf iterator(internalVideoEffectSiteChain); + return_segment = iterator.GetCurrent(); + if (return_segment) + { + Check(return_segment); + return return_segment; + } + else + { + goto Return_Default_Effect; + } + } + case ExternalVideoEffectSite: + { + SChainIteratorOf iterator(externalVideoEffectSiteChain); + return_segment = iterator.GetCurrent(); + if (return_segment) + { + Check(return_segment); + return return_segment; + } + else + { + goto Return_Default_Effect; + } + } + case InternalAudioEffectSite: + { + SChainIteratorOf iterator(internalAudioEffectSiteChain); + return_segment = iterator.GetCurrent(); + if (return_segment) + { + Check(return_segment); + return return_segment; + } + else + { + goto Return_Default_Effect; + } + } + case ExternalAudioEffectSite: + { + SChainIteratorOf iterator(externalAudioEffectSiteChain); + return_segment = iterator.GetCurrent(); + if (return_segment) + { + Check(return_segment); + return return_segment; + } + else + { + goto Return_Default_Effect; + } + } + } +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + DamageZone::Reset(Logical ) +{ + SetDamageZoneState(DefaultState); + damageZoneGraphicState.SetState(ExistsGraphicState); + damageLevel = 0.0f; + Check_Fpu(); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + DamageZone::WriteUpdateRecord(UpdateRecord *update_record) +{ + Check(this); + Check_Pointer(update_record); + update_record->damageLevel = damageLevel; + update_record->damageZoneState = damageZoneState.GetState(); + update_record->damageZoneGraphicState = damageZoneGraphicState.GetState(); + update_record->damageZoneIndex = damageZoneIndex; + update_record->changedFlags = changedFlags; + update_record->recordLength = sizeof(*update_record); + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Clear Flags here for MasterInstance DamageZones! + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + ResetChangedFlags(); + Check_Fpu(); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + DamageZone::ReadUpdateRecord(UpdateRecord *update_record) +{ + Check(this); + Check_Pointer(update_record); + Verify(damageZoneIndex == update_record->damageZoneIndex); + + damageLevel = update_record->damageLevel; + damageZoneState.SetState(update_record->damageZoneState); + damageZoneGraphicState.SetState(update_record->damageZoneGraphicState); + changedFlags = update_record->changedFlags; + Check_Fpu(); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +DamageZone::DamageZone(Simulation *owner, int damage_zone_index) : + Node(DamageZoneClassID), + materialTable(NULL, False), + damageZoneState(DamageStateCount), + damageZoneGraphicState(GraphicStateCount), + defaultEffectSiteChain(NULL), + internalVideoEffectSiteChain(NULL), + externalVideoEffectSiteChain(NULL), + internalAudioEffectSiteChain(NULL), + externalAudioEffectSiteChain(NULL) +{ + Check(owner); + damageZoneIndex = damage_zone_index; + owningSimulation = owner; + damageLevel = 0.0f; + explosionTable = NULL; + for(int ii=0;ii> damageZoneName; + + if (owningSimulation->IsDerivedFrom(JointedMover::ClassDerivations)) + { + JointedMover *jointed_mover = Cast_Object( + JointedMover*, + owningSimulation + ); + // + //~~~~~~~~~~~~~~~~~~~~~~~~~ + // Read in all Effect Sites + //~~~~~~~~~~~~~~~~~~~~~~~~~ + // + int effect_site_count; + int effect_site_index; + EntitySegment *effect_site_segment; + // + //~~~~~~~~~~~~~~~~~~~~~~~ + // Read in External Video + //~~~~~~~~~~~~~~~~~~~~~~~ + // + for (int jj=0;jj> effect_site_count; + for(int ii=0;ii> effect_site_index; + effect_site_segment = jointed_mover->GetSegment(effect_site_index); + Check(effect_site_segment); + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Add the Segment to the Appropriate Chain + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + switch (jj) + { + case DefaultEffectSite: + defaultEffectSiteChain.Add(effect_site_segment); + break; + case ExternalVideoEffectSite : + externalVideoEffectSiteChain.Add(effect_site_segment); + break; + case InternalVideoEffectSite : + internalVideoEffectSiteChain.Add(effect_site_segment); + break; + case ExternalAudioEffectSite : + externalAudioEffectSiteChain.Add(effect_site_segment); + break; + case InternalAudioEffectSite : + internalAudioEffectSiteChain.Add(effect_site_segment); + break; + + } + } + } + } + else + { + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Read in these for consistancy + // and for later improvements for + // not Jointed Mover Objects! + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + int filler_int; + for (int jj=0;jj> filler_int; + } + } + + *stream >> defaultArmorPoints; + + int ii; + for (ii=0; ii> damageScale[ii]; + } + + int skeleton_count; + EntitySegment::SkeletonType skl_type; + + *stream >> skeleton_count; + + for(ii=0;ii> skl_type; + + int material_count; + *stream >> material_count; + if(!material_count) + { + continue; + } + MaterialList *material_list = new MaterialList; + Register_Object(material_list); + for(int jj=0;jj> new_material; + MaterialList::CStringPlug *new_plug = + new MaterialList::CStringPlug(new_material); + Register_Object(new_plug); + material_list->Add(new_plug); + } + material_list->First(); + materialTable.AddValue(material_list, skl_type); + } + + changedFlags = 0; + Check_Fpu(); +} + + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +DamageZone::~DamageZone() +{ + MaterialTableIterator iterator(materialTable); + iterator.DeletePlugs(); + + if (explosionTable) + { + Unregister_Object(explosionTable); + delete explosionTable; + } + Check_Fpu(); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +ExplosionTable* + DamageZone::CreateExplosionTable(MemoryStream *explosion_stream) +{ + Check(this); + explosionTable = new ExplosionTable(explosion_stream); + Register_Object(explosionTable); + Check_Fpu(); + return explosionTable; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + DamageZone::TakeDamage(Damage &damage) +{ + Check(this); + Check_Pointer(&damage); + + damageLevel += damage.damageAmount * damageScale[damage.damageType]; + Clamp(damageLevel, 0.0f, 1.0f); + SetDamageLevelChangedFlag(); + if (damageLevel >= 1.0f) + { + SetDamageZoneState(BurningState); + SetGraphicState(DestroyedGraphicState); + SetGraphicStateChangedFlag(); + } + Check_Fpu(); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + DamageZone::TestInstance() const +{ + return True; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + DamageZone::CreateStreamedDamageZone( + NotationFile *model_file, + const char *, + NotationFile *skl_file, + CString damage_zone_name, + MemoryStream *damage_zone_stream, + NotationFile *dmg_file, + const ResourceDirectories *directories + ) +{ + Check_Pointer(damage_zone_name); + Check_Pointer(&damage_zone_stream); + Check_Pointer(directories); + Check(dmg_file); + + *damage_zone_stream << damage_zone_name; + + // + // Find dzone name in .dmg file + // + if(!dmg_file->PageExists(damage_zone_name)) + { + cerr << damage_zone_name <<" listed in .skl, does not exist in .dmg file"<GetEntry( + damage_zone_name, + "WeaponDamagePoints", + &default_points + ) + ) + { + cerr<GetEntry( + damage_zone_name, + "CollisionDamagePoints", + &point_data + ) + ) + { + modified_armor = 1.0f/default_points; + } + else + { + if (point_data == 0.0f) + { + modified_armor = 1.0f/default_points; + } + else + { + modified_armor = 1.0f/point_data; + } + Check_Fpu(); + } + *damage_zone_stream << modified_armor; + + if(!dmg_file->GetEntry( + damage_zone_name, + "BallisticDamagePoints", + &point_data + ) + ) + { + modified_armor = 1.0f/default_points; + } + else + { + modified_armor = 1.0f/point_data; + } + *damage_zone_stream << modified_armor; + + if(!dmg_file->GetEntry( + damage_zone_name, + "ExplosiveDamagePoints", + &point_data + ) + ) + { + modified_armor = 1.0f/default_points; + } + else + { + modified_armor = 1.0f/point_data; + } + *damage_zone_stream << modified_armor; + + if(!dmg_file->GetEntry( + damage_zone_name, + "LaserDamagePoints", + &point_data + ) + ) + { + modified_armor = 1.0f/default_points; + } + else + { + modified_armor = 1.0f/point_data; + } + *damage_zone_stream << modified_armor; + + if(!dmg_file->GetEntry( + damage_zone_name, + "EnergyDamagePoints", + &point_data + ) + ) + { + modified_armor = 1.0f/default_points; + } + else + { + modified_armor = 1.0f/point_data; + } + *damage_zone_stream << modified_armor; + + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Get dzm filename + //~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + NameList *dzm_namelist = model_file->MakeEntryList("video","dzm"); + if(!dzm_namelist) + { + int zero_scalar(0.0f); + *damage_zone_stream << zero_scalar; + return True; + } + Register_Object(dzm_namelist); + int dzm_filecount; + dzm_filecount = dzm_namelist->EntryCount(); + *damage_zone_stream << dzm_filecount; + + if(dzm_filecount) + { + NameList::Entry *dzm_fileentry = dzm_namelist->GetFirstEntry(); + while(dzm_fileentry) + { + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // write out the skeleton type of the material + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + // + CString dzm_entry_name; + dzm_entry_name = dzm_fileentry->GetName(); + + EntitySegment::SkeletonType skeleton_type; + if (! dzm_entry_name.Compare("dzm") ) + { + skeleton_type = EntitySegment::SkeletonType_N; + } + else if (! dzm_entry_name.Compare("dzms") ) + { + skeleton_type = EntitySegment::SkeletonType_S; + } + else if (! dzm_entry_name.Compare("dzmt") ) + { + skeleton_type = EntitySegment::SkeletonType_T; + } + else if (! dzm_entry_name.Compare("dzmo") ) + { + skeleton_type = EntitySegment::SkeletonType_O; + } + else if (! dzm_entry_name.Compare("dzma") ) + { + skeleton_type = EntitySegment::SkeletonType_A; + } + else if (! dzm_entry_name.Compare("dzmb") ) + { + skeleton_type = EntitySegment::SkeletonType_B; + } + else if (! dzm_entry_name.Compare("dzmc") ) + { + skeleton_type = EntitySegment::SkeletonType_C; + } + else if (! dzm_entry_name.Compare("dzmd") ) + { + skeleton_type = EntitySegment::SkeletonType_D; + } + *damage_zone_stream << skeleton_type; + + // + // Get the name of the dzm File + // + char *filename = MakePathedFilename( + directories->videoDirectory, + dzm_fileentry->GetChar() + ); + Register_Pointer(filename); + // + // Create a Notation file from the dzm ASCII File + // + NotationFile *dzm_file = new NotationFile(filename); + Register_Object(dzm_file); + + NameList *material_list; + material_list = dzm_file->MakeEntryList(damage_zone_name, "material"); + int entry_count(0); + if(material_list) + { + + Register_Object(material_list); + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Write out how many materials + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + entry_count = material_list->EntryCount(); + *damage_zone_stream << entry_count; + if(entry_count) + { + NameList::Entry *dzm_entry; + dzm_entry = material_list->GetFirstEntry(); + Check(dzm_entry); + CString material_name; + while(dzm_entry) + { + material_name = dzm_entry->GetChar(); + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Write out the material name + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + *damage_zone_stream << material_name; + dzm_entry = dzm_entry->GetNextEntry(); + } + } + Unregister_Object(material_list); + delete material_list; + } + else + { + *damage_zone_stream << entry_count; + } + dzm_fileentry = dzm_fileentry->GetNextEntry(); + Unregister_Pointer(filename); + delete filename; + Unregister_Object(dzm_file); + delete dzm_file; + } + } + Unregister_Object(dzm_namelist); + delete dzm_namelist; + + Check_Fpu(); + return True; +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +int + DamageZone::WriteEffectSegmentIndicies( + MemoryStream *damage_zone_stream, + const char *damage_zone_name, + NotationFile *dmg_file, + NotationFile *skl_file, + const char *effect_type + ) +{ + Check(dmg_file); + Check(skl_file); + Check_Pointer(damage_zone_name); + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Make an Entry list for this type of effect Site + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + int effect_count(0); + NameList::Entry *effect_entry; + NameList *effect_namelist = dmg_file->MakeEntryList(damage_zone_name, effect_type); + if (!effect_namelist) + { + // + //~~~~~~~~~~~ + // No Entries + //~~~~~~~~~~~ + // + *damage_zone_stream << effect_count; + Check_Fpu(); + return 1; + } + else + { + Register_Object(effect_namelist); + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Write Out number of sites + //~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + effect_count = effect_namelist->EntryCount(); + *damage_zone_stream << effect_count; + effect_entry = effect_namelist->GetFirstEntry(); + CString site_page_name; + int effect_site_index; + while(effect_entry) + { + site_page_name = effect_entry->GetChar(); + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Get SegmentIndex for this effect site Name + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + effect_site_index = + JointedMover::GetSegmentIndex(site_page_name, skl_file); + if (effect_site_index == -1) + { + cerr<GetNextEntry(); + } + Unregister_Object(effect_namelist); + delete effect_namelist; + } + Check_Fpu(); + return 1; +} diff --git a/CODE/RP/MUNGA/DAMAGE.HPP b/CODE/RP/MUNGA/DAMAGE.HPP new file mode 100644 index 0000000..0b10c50 --- /dev/null +++ b/CODE/RP/MUNGA/DAMAGE.HPP @@ -0,0 +1,428 @@ +//===========================================================================// +// File: damage.hpp // +// Project: MUNGA Brick: Entity Manager // +// Contents: Damage Definitions // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 05/01/95 JM Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// +#if !defined(DAMAGE_HPP) +# define DAMAGE_HPP + +# if !defined(POINT3D_HPP) +# include +# endif + +# if !defined(NODE_HPP) +# include +# endif + +# if !defined(NORMAL_HPP) +# include +# endif + +# if !defined(CSTR_HPP) +# include +# endif + +# if !defined(TABLE_HPP) +# include +# endif + +# if !defined(SCHAIN_HPP) +# include +# endif + +# if !defined(SIMULATE_HPP) +# include +# endif + + class MaterialList; + class EntitySegment; + class ExplosionTable; + class Simulation; + class MemoryStream; + class NotationFile; + class ResourceDirectories; + class Entity; + + //########################################################################## + //########################### Damage ################################# + //########################################################################## + + class Damage + { + public: + enum { + CollisionDamageType, + BallisticDamageType, + ExplosiveDamageType, + LaserDamageType, + EnergyDamageType, + DamageTypeCount + }; + Enumeration + damageType; + Scalar + damageAmount; + + Vector3D + damageForce; + Normal + surfaceNormal; + + // impact point should be in the global coordinate space. + Point3D + impactPoint; + // + // burst count should be thought of as number of times + // to apply the damage. + // + + int + burstCount; + + + Damage(); + }; + + //########################################################################## + //######################### MaterialList ############################# + //########################################################################## + + class MaterialList : + public Plug + { + public: + + typedef PlugOf CStringPlug; + + typedef SChainOf + CStringSocket; + + typedef SChainIteratorOf + CStringSocketIterator; + + protected: + + CStringSocketIterator* + listIterator; + + CStringSocket + materialList; + + public: + + MaterialList(); + ~MaterialList(); + + void + DeletePlugs() + {Check(this); listIterator->DeletePlugs();} + + void + Add(CStringPlug *new_plug) + {Check(this); materialList.Add(new_plug);} + + void + First() + { Check(this);listIterator->First();} + + void + Last() + {Check(this); listIterator->Last(); } + + CString* + ReadAndNext() + { + Check(this); + if (!listIterator->GetCurrent()) + return NULL; + else + return listIterator->ReadAndNext()->GetPointer(); + } + + CString* + GetCurrent() + { + Check(this); + if (!listIterator->GetCurrent()) + return NULL; + else + return listIterator->GetCurrent()->GetPointer(); + } + + void + Next() + {Check(this); if(listIterator->GetCurrent()) listIterator->Next();} + }; + //########################################################################## + //################# DamageZone::UpdateRecord ######################### + //########################################################################## + + struct DamageZone__UpdateRecord + { + public: + size_t recordLength; + int damageZoneIndex; + Scalar damageLevel; + Enumeration damageZoneState; + Enumeration damageZoneGraphicState; + LWord changedFlags; + }; + + //########################################################################## + //######################### DamageZone ############################### + //########################################################################## + + class DamageZone: + public Node + { + protected: + + Simulation* + owningSimulation; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // State Support + // + private: + + StateIndicator + damageZoneState; + + StateIndicator + damageZoneGraphicState; + + public: + + enum{ + ExistsGraphicState = 0, + DestroyedGraphicState, + GoneGraphicState, + GraphicStateCount + }; + + enum{ + DefaultState = 0, + BurningState, + DamageStateCount + }; + + StateIndicator* + GetGraphicStatePointer() + {Check(this); return &damageZoneGraphicState;} + + Enumeration + GetDamageZoneState() + {Check(this); return damageZoneState.GetState();} + + void + SetDamageZoneState(Enumeration new_state) + {Check(this); damageZoneState.SetState(new_state); } + + Enumeration + GetGraphicState() + {Check(this); return damageZoneGraphicState.GetState();} + + virtual void + SetGraphicState(Enumeration new_state) + { + Check(this); + damageZoneGraphicState.SetState(new_state); + SetGraphicStateChangedFlag(); + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Flag Support + // + + public: + + enum { + DamageLevelChangedBit = 2, + GraphicStateChangedBit, + NextBit + }; + + enum { + DamageLevelChangedFlag = 1 << DamageLevelChangedBit, + GraphicStateChangedFlag = 1 << GraphicStateChangedBit + }; + + Logical + DamageLevelChanged() const + {Check(this); return (changedFlags & DamageLevelChangedFlag); } + + Logical + GraphicStateChanged() const + {Check(this); return (changedFlags & GraphicStateChangedFlag); } + + void + SetDamageLevelChangedFlag() + {Check(this); changedFlags |= DamageLevelChangedFlag; } + + void + SetGraphicStateChangedFlag() + {Check(this); changedFlags |= GraphicStateChangedFlag; } + + void + ResetChangedFlags() + {Check(this); changedFlags = 0; } + + LWord + changedFlags; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Update Support + // + public: + typedef DamageZone__UpdateRecord UpdateRecord; + + virtual void + ReadUpdateRecord(UpdateRecord *message); + + virtual void + WriteUpdateRecord(UpdateRecord *message); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Material Support + // + + public: + typedef TableOf + MaterialTable; + + typedef TableIteratorOf + MaterialTableIterator; + + MaterialList* + GetMaterialList(Enumeration skl_type) + { + Check(this); + return materialTable.Find(skl_type); + } + + protected: + + MaterialTable + materialTable; + + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Explosion Support + // + + protected: + + ExplosionTable + *explosionTable; + + public: + + ExplosionTable* + CreateExplosionTable(MemoryStream *explosion_stream); + + ExplosionTable* + GetExplosionTable() + {Check(this); return explosionTable; } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Effect Support + // + public: + SChainOf + defaultEffectSiteChain, + internalVideoEffectSiteChain, + externalVideoEffectSiteChain, + internalAudioEffectSiteChain, + externalAudioEffectSiteChain; + + enum { + DefaultEffectSite, + ExternalVideoEffectSite, + InternalVideoEffectSite, + ExternalAudioEffectSite, + InternalAudioEffectSite, + EffectSiteCount + }; + + EntitySegment* + GetCurrentEffectSite(Enumeration effect_site_type = DefaultEffectSite); + + static + WriteEffectSegmentIndicies( + MemoryStream *damage_zone_stream, + const char *damage_zone_name, + NotationFile *dmg_file, + NotationFile *skl_file, + const char *effect_type + ); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Local Support + // + public: + + Simulation* + GetOwningSimulation() + {return owningSimulation;} + + int + damageZoneIndex; + + Scalar + defaultArmorPoints; + + Scalar + damageScale[Damage::DamageTypeCount]; + + Scalar + damageLevel; + + CString damageZoneName; + + virtual void + TakeDamage(Damage &damage); + + void + Reset(Logical full_reset=True); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Construction / Destruction Support + // + DamageZone( + Simulation *owner, + int damage_zone_index, + MemoryStream *dzone_res + ); + + DamageZone(Simulation *owner, int damage_zone_index); + + virtual ~DamageZone(); + + Logical + TestInstance() const; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Resource Support + // + static Logical + CreateStreamedDamageZone( + NotationFile *model_file, + const char *model_name, + NotationFile *skl_file, + CString damage_zone_name, + MemoryStream *damage_zone_stream, + NotationFile *dmg_file, + const ResourceDirectories *directories + ); + }; + + +#endif diff --git a/CODE/RP/MUNGA/DEBUG1ON.HPP b/CODE/RP/MUNGA/DEBUG1ON.HPP new file mode 100644 index 0000000..0f21e0e --- /dev/null +++ b/CODE/RP/MUNGA/DEBUG1ON.HPP @@ -0,0 +1,141 @@ +//=======================================================================// +// File: debug1on.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 1 +#else +# undef OLD_DEBUG_LEVEL +# if DEBUG_LEVEL>=3 +# define OLD_DEBUG_LEVEL 3 +# elif DEBUG_LEVEL==1 +# define OLD_DEBUG_LEVEL 1 +# elif DEBUG_LEVEL==0 +# define OLD_DEBUG_LEVEL 0 +# endif +#endif + +#undef DEBUG_LEVEL +#undef Verify +#undef Verify_And_Dump +#undef Dump +#undef Tell +#undef Warn +#undef Warn_And_Dump +#undef Check_Signature +#undef Check_Pointer +#undef Check +#undef Check_Fpu +#undef Fail +#undef Cast_Object +#undef DEBUG_CODE +#undef Mem_Copy +#undef Str_Copy +#undef Str_Cat +#undef Sqrt +#undef Arctan +#undef Arccos +#undef Arcsin + +#define DEBUG_LEVEL 1 + +#define DEBUG_CODE(x) { x } + +#define Dump(v)\ + (DEBUG_STREAM << __FILE__ "(" << __LINE__ << "): "#v" = " << (v) << endl << flush) + +#define Verify(c)\ + if (!(c)) {\ + Verify_Failed(#c,__FILE__,__LINE__);\ + } + +#define Verify_And_Dump(c,v)\ + if (!(c)) {\ + DEBUG_STREAM << __FILE__ "(" << __LINE__ << "): "#v" = " << (v) << endl;\ + Verify_Failed(#c,__FILE__,__LINE__);\ + } + +#define Warn(c)\ + if (c) {\ + DEBUG_STREAM << __FILE__"(" << __LINE__ << "): Warning -> "#c"\n" << flush;\ + } + +#define Warn_And_Dump(c,v)\ + if (c) {\ + DEBUG_STREAM << __FILE__ "(" << __LINE__ << "): "#v" = " << (v) << endl;\ + DEBUG_STREAM << __FILE__"(" << __LINE__ << "): Warning -> "#c"\n" << flush;\ + } + +#define Tell(m)\ + (DEBUG_STREAM << m << flush) + +#define Check_Pointer(p) Verify(p) + +#define Check_Fpu() Verify(Fpu_Ok()) + +#define Mem_Copy(destination, source, length, available)\ + {\ + Check_Pointer(destination);\ + Check_Pointer(source);\ + memcpy(destination, source, length);\ + } + +#define Str_Copy(destination, source, available)\ + {\ + Check_Pointer(destination);\ + Check_Pointer(source);\ + strcpy(destination, source);\ + } + +#define Str_Cat(destination, source, available)\ + {\ + Check_Pointer(destination);\ + Check_Pointer(source);\ + strcat(destination, source);\ + } + +#define Sqrt(value)\ + ((value>=0.0f) ? sqrt(value) : (Fail("Bad parameter to sqrt"),0.0f)) + +#define Arctan(y,x)\ + (\ + (!Small_Enough(y) || !Small_Enough(x))\ + ? atan2((y),(x)) :\ + (Fail("Zero Arctan!"),0.0f)\ + ) + +#define Arccos(x)\ + (\ + ((x)>=-1.0f && (x)<=1.0f)\ + ? acos(x) :\ + (Fail("Out of range Arccos!"),0.0f)\ + ) + +#define Arcsin(x)\ + (\ + ((x)>=-1.0f && (x)<=1.0f)\ + ? asin(x) :\ + (Fail("Out of range Arcsin!"),0.0f)\ + ) + +#define Power(x,y)\ + (\ + ((x)<0.0f)\ + ? (Fail("Out of range Power!"),0.0f) :\ + pow(x,y)\ + ) + +#define Check_Signature(p) Check_Pointer(p) +#define Check(p) Check_Pointer(p) + +#define Fail(m)\ + Fail_To_Debugger(m,__FILE__,__LINE__) + +#define Cast_Object(type, ptr) ((type)(ptr)) + diff --git a/CODE/RP/MUNGA/DEBUG2ON.HPP b/CODE/RP/MUNGA/DEBUG2ON.HPP new file mode 100644 index 0000000..8a87f3a --- /dev/null +++ b/CODE/RP/MUNGA/DEBUG2ON.HPP @@ -0,0 +1,185 @@ +//=======================================================================// +// 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) +# define OLD_DEBUG_LEVEL 2 +#else +# undef OLD_DEBUG_LEVEL +# if DEBUG_LEVEL>=3 +# define OLD_DEBUG_LEVEL 3 +# elif DEBUG_LEVEL==1 +# define OLD_DEBUG_LEVEL 1 +# elif DEBUG_LEVEL==0 +# define OLD_DEBUG_LEVEL 0 +# endif +#endif + +#undef DEBUG_LEVEL +#undef Verify +#undef Verify_And_Dump +#undef Dump +#undef Tell +#undef Warn +#undef Warn_And_Dump +#undef Check_Signature +#undef Check_Pointer +#undef Check +#undef Check_Fpu +#undef Fail +#undef Cast_Object +#undef DEBUG_CODE +#undef Mem_Copy +#undef Str_Copy +#undef Str_Cat +#undef Sqrt +#undef Arctan +#undef Arccos +#undef Arcsin +#undef Power + +#define DEBUG_LEVEL 2 + +#define DEBUG_CODE(x) { x } + +#define Dump(v)\ + (DEBUG_STREAM << __FILE__ "(" << __LINE__ << "): "#v" = " << (v) << endl << flush) + +#define Verify(c)\ + if (!(c)) {\ + Verify_Failed(#c,__FILE__,__LINE__);\ + } + +#define Verify_And_Dump(c,v)\ + if (!(c)) {\ + DEBUG_STREAM << __FILE__ "(" << __LINE__ << "): "#v" = " << (v) << endl;\ + Verify_Failed(#c,__FILE__,__LINE__);\ + } + +#define Warn(c)\ + if (c) {\ + DEBUG_STREAM << __FILE__"(" << __LINE__ << "): Warning -> "#c"\n" << flush;\ + } + +#define Warn_And_Dump(c,v)\ + if (c) {\ + DEBUG_STREAM << __FILE__ "(" << __LINE__ << "): "#v" = " << (v) << endl;\ + DEBUG_STREAM << __FILE__"(" << __LINE__ << "): Warning -> "#c"\n" << flush;\ + } + +#define Tell(m)\ + (DEBUG_STREAM << m << flush) + +#define Check_Pointer(p) Verify(p) + +#define Check_Fpu() Verify(Fpu_Ok()) + +#define Mem_Copy(destination, source, length, available)\ + {\ + Check_Pointer(destination);\ + Check_Pointer(source);\ + Verify((length) <= (available));\ + Verify(abs((char*)destination - (char*)source) >= length);\ + memcpy(destination, source, length);\ + } + +#define Str_Copy(destination, source, available)\ + {\ + Check_Pointer(destination);\ + Check_Pointer(source);\ + Verify((strlen(source) + 1) <= (available));\ + Verify(abs(destination - source) >= (strlen(source) + 1));\ + strcpy(destination, source);\ + } + +#define Str_Cat(destination, source, available)\ + {\ + Check_Pointer(destination);\ + Check_Pointer(source);\ + Verify((strlen(destination) + strlen(source) + 1) <= (available));\ + strcat(destination, source);\ + } + +#define Sqrt(value)\ + ((value>=0.0f) ? sqrt(value) : (Fail("Bad parameter to sqrt"),0.0f)) + +#define Arctan(y,x)\ + (\ + (!Small_Enough(y) || !Small_Enough(x))\ + ? atan2((y),(x)) :\ + (Fail("Zero Arctan!"),0.0f)\ + ) + +#define Arccos(x)\ + (\ + ((x)>=-1.0f && (x)<=1.0f)\ + ? acos(x) :\ + (Fail("Out of range Arccos!"),0.0f)\ + ) + +#define Arcsin(x)\ + (\ + ((x)>=-1.0f && (x)<=1.0f)\ + ? asin(x) :\ + (Fail("Out of range Arcsin!"),0.0f)\ + ) + +#define Power(x,y)\ + (\ + ((x)<0.0f)\ + ? (Fail("Out of range Power!"),0.0f) :\ + pow(x,y)\ + ) + +#if defined(USE_SIGNATURE) +# define Check_Signature(p) {\ + Check_Pointer(p);\ + Verify_And_Dump(!Is_Signature_Bad(p),Is_Signature_Bad(p));\ + } +#else +# define Check_Signature(p) Check_Pointer(p) +#endif + +#if defined(USE_SIGNATURE) +# define Check(p) {Check_Signature(p);Verify(!((LWord)p & 3));Check_Fpu();} +#else +# define Check(p) {Check_Pointer(p);Verify(!((LWord)p & 3));Check_Fpu();} +#endif + +#define Fail(m)\ + Fail_To_Debugger(m,__FILE__,__LINE__) + +#if defined(USE_SIGNATURE) +# define Cast_Object(type, ptr) (\ + (!ptr)\ + ? (\ + Verify_Failed(#ptr,__FILE__,__LINE__),(type)NULL\ + )\ + : (\ + (Is_Signature_Bad((type)ptr))\ + ? (\ + Verify_Failed(\ + "Is_Signature_Bad(("#type")"#ptr")",\ + __FILE__,\ + __LINE__\ + ),(type)NULL\ + )\ + : ((type)(ptr))\ + )\ + ) +#else +# define Cast_Object(type, ptr) (\ + (!ptr)\ + ? (\ + Verify_Failed(#ptr,__FILE__,__LINE__),(type)NULL\ + )\ + : ((type)(ptr))\ + ) +#endif + diff --git a/CODE/RP/MUNGA/DEBUGOFF.HPP b/CODE/RP/MUNGA/DEBUGOFF.HPP new file mode 100644 index 0000000..57c3006 --- /dev/null +++ b/CODE/RP/MUNGA/DEBUGOFF.HPP @@ -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)) + diff --git a/CODE/RP/MUNGA/DEBUGOLD.HPP b/CODE/RP/MUNGA/DEBUGOLD.HPP new file mode 100644 index 0000000..1603baf --- /dev/null +++ b/CODE/RP/MUNGA/DEBUGOLD.HPP @@ -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 + diff --git a/CODE/RP/MUNGA/DIRECTOR.CPP b/CODE/RP/MUNGA/DIRECTOR.CPP new file mode 100644 index 0000000..2fad2f7 --- /dev/null +++ b/CODE/RP/MUNGA/DIRECTOR.CPP @@ -0,0 +1,346 @@ +//===========================================================================// +// File: director.cc // +// Project: Munga // +// 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 // +// -------- --- ---------------------------------------------------------- // +// 08/09/95 JM Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +// +// Munga Includes +// + +#include +#pragma hdrstop + +#if !defined(DIRECTOR_HPP) +# include +#endif + +#if !defined(MISSION_HPP) +# include +#endif + +#if !defined(PLAYER_HPP) +# include +#endif + +#if !defined(APP_HPP) + #include +#endif + +#if !defined(HOSTMGR_HPP) + #include +#endif + +#if !defined(NTTMGR_HPP) + #include +#endif + +//############################################################################# +// Shared Data support +// +Derivation + CameraDirector::ClassDerivations( + Player::ClassDerivations, + "CameraDirector" + ); + +CameraDirector::SharedData + CameraDirector::DefaultData( + CameraDirector::ClassDerivations, + CameraDirector::MessageHandlers, + CameraDirector::AttributeIndex, + CameraDirector::StateCount, + (Entity::MakeHandler) CameraDirector::Make + ); + +//############################################################################# +// Messaging Support +// +const Receiver::HandlerEntry + CameraDirector::MessageHandlerEntries[]= +{ + MESSAGE_ENTRY(CameraDirector, AttachCameraShip) +}; + +CameraDirector::MessageHandlerSet + CameraDirector::MessageHandlers( + ELEMENTS(CameraDirector::MessageHandlerEntries), + CameraDirector::MessageHandlerEntries, + Player::MessageHandlers + ); + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + CameraDirector::AttachCameraShipMessageHandler( + AttachCameraShipMessage *in_message + ) +{ + Check(in_message); + Check(application); + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Get the cameraship ID to attach to + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + HostManager *host = application->GetHostManager(); + Check(host); + Entity *entity_ptr = host->GetEntityPointer(in_message->cameraShipID); + Check(entity_ptr); + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Get the cameraShip Pointer Object + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + CameraShip *camera_ship; + camera_ship = Cast_Object(CameraShip*, entity_ptr); + Check(this); + Check(camera_ship); + cameraShip = camera_ship; +} + +//############################################################################# +// Model Support +// + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + CameraDirector::UpdateHUD( + Scalar time_slice + ) +{ + Check(this); + Check(application); + + // + //~~~~~~~~~~~~ + // HUD Support + //~~~~~~~~~~~~ + // + if (GetGoalEntity()) + { + Check(GetGoalEntity()); + Player *goal_player = GetGoalEntity()->GetPlayerLink(); + if (goal_player) + { + Check(goal_player); + goalPlayerIndex = goal_player->playerBitmapIndex; + } + } + + if ( + application->GetApplicationState() == Application::StoppingMission || + application->GetApplicationState() == Application::EndingMission + ) + { + displayRankingWindow = False; + return; + } + else if (application->GetSecondsRemainingInGame() <= 30.0f) + { + displayRankingWindow = True; + } + else + { + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Check times for Ranking Window Display + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + if (displayRankingWindow) + { + timeDisplayed += time_slice; + if(timeDisplayed >= displayIntervalOn) + { + timeTillDisplayed = displayIntervalOff; + displayRankingWindow = False; + } + } + else + { + timeTillDisplayed -= time_slice; + if (timeTillDisplayed <= 0.0f) + { + timeDisplayed = 0.0f; + displayRankingWindow = True; + } + } + } +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + CameraDirector::BeADirector(Scalar time_slice) +{ + Check(this); + + Player::PlayerSimulation(time_slice); + UpdateHUD(time_slice); + + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Time To Cut To a new Player? + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + if ( + timeLeftOnPlayer > 0.0f + && application->GetApplicationState() == Application::RunningMission) + { + timeLeftOnPlayer -= time_slice; + return; + } + + Player *top_dog = FindPlayerByRank(0); + if (top_dog) + { + Check(top_dog); + Entity *vehicle = top_dog->GetPlayerVehicle(); + if (vehicle) + { + Check(vehicle); + if ((GetGoalEntity() != vehicle)) + { + SetGoalEntity(vehicle); + timeLeftOnPlayer = 10.0f; + Check(cameraShip); + CameraShip::DirectionMessage direction_message( + CameraShip::DirectionMessageID, + sizeof(CameraShip::DirectionMessage), + GetGoalEntity()->GetEntityID(), + 0.0f, + Point3D::Identity + ); + Check(cameraShip); + cameraShip->Dispatch(&direction_message); + } + } + } +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + CameraDirector::CreateCameraShip(Scalar) +{ + CreatePlayerVehicle(localOrigin); + PlayerLinkMessage player_link_message ( + PlayerLinkMessageID, + sizeof(PlayerLinkMessage), + this->GetEntityID() + ); + Check(playerVehicle); + playerVehicle->Dispatch(&player_link_message); + playerVehicle->DispatchToReplicants(&player_link_message); + SetPerformance(&CameraDirector::BeADirector); + deathCount = 0; + + CameraDirector::AttachCameraShipMessage + message( + CameraDirector::AttachCameraShipMessageID, + sizeof(CameraDirector::AttachCameraShipMessage), + playerVehicle->GetEntityID() + ); + Dispatch(&message); +} + +//############################################################################# +// Construction and Destruction Support +// + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +CameraDirector::CameraDirector( + CameraDirector::MakeMessage *creation_message, + CameraDirector::SharedData &virtual_data +) : + Player(creation_message, virtual_data), + goalEntity(this) +{ + cameraShip = NULL; + SetValidFlag(); + timeLeftOnPlayer = -1.0f; + if (GetInstance() != ReplicantInstance) + { + SetPerformance(&CameraDirector::CreateCameraShip); + } + // + //~~~~~~~~~~~~ + // HUD Support + //~~~~~~~~~~~~ + // + goalPlayerIndex = -1; + displayRankingWindow = False; + displayIntervalOn = 10.0f; + displayIntervalOff = 15.0f; + timeDisplayed = 0.0f; + timeTillDisplayed = displayIntervalOff; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +CameraDirector* + CameraDirector::Make(MakeMessage *creation_message) +{ + return new CameraDirector(creation_message); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +CameraDirector::~CameraDirector() +{ + +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Player* + CameraDirector::FindPlayerByRank(int rank_to_find) +{ + Check(application); + + // + //--------------------------------------- + // Get all players from the entity group + //--------------------------------------- + // + EntityGroup *player_group = + application->GetEntityManager()->FindGroup("Players"); + if(player_group) + { + Player *leading_player; + + // + //----------------------------------------------------- + // Iterate through the players find the leading player + //----------------------------------------------------- + // + ChainIteratorOf iterator(player_group->groupMembers); + while ((leading_player = (Player*) iterator.ReadAndNext()) != NULL) + { + Check(leading_player); + if (leading_player->playerRanking == rank_to_find) + { + return leading_player; + } + } + } + return NULL; +} + +Logical + CameraDirector::TestInstance() const +{ + return IsDerivedFrom(ClassDerivations); +} + diff --git a/CODE/RP/MUNGA/DIRECTOR.HPP b/CODE/RP/MUNGA/DIRECTOR.HPP new file mode 100644 index 0000000..ec0836e --- /dev/null +++ b/CODE/RP/MUNGA/DIRECTOR.HPP @@ -0,0 +1,192 @@ +//===========================================================================// +// File: director.hh // +// Project: Munga // +// 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 // +// -------- --- ---------------------------------------------------------- // +// 08/09/95 JM Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(DIRECTOR_HPP) +# define DIRECTOR_HPP + +# if !defined(STYLE_HPP) +# include +# endif + +# if !defined(PLAYER_HPP) +# include +# endif + +# if !defined(SCHAIN_HPP) +# include +# endif + +# if !defined(CAMSHIP_HPP) +# include +# endif + +# if !defined(GRAPH2D_HPP) +# include +# endif + +# if !defined(SLOT_HPP) +# include +# endif + + //########################################################################## + //################# CameraDirector::AttachCameraShip ################# + //########################################################################## + + class CameraDirector__AttachCameraShipMessage: + public Player::Message + { + public: + + EntityID + cameraShipID; + + CameraDirector__AttachCameraShipMessage( + Receiver::MessageID message_ID, + size_t length, + EntityID camera_ship_ID + ): + Entity::Message(message_ID, length), + cameraShipID(camera_ship_ID) + {} + }; + + //########################################################################## + //############################# CameraDirector ############################# + //########################################################################## + + class CameraDirector: + public Player + { + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Shared Data support + // + public: + + static Derivation ClassDerivations; + static SharedData DefaultData; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Messaging support + // + public: + friend class CameraDirector__AttachCameraShipMessage; + + enum{ + AttachCameraShipMessageID = Entity::NextMessageID, + NextMessageID + }; + + typedef CameraDirector__AttachCameraShipMessage AttachCameraShipMessage; + + void + AttachCameraShipMessageHandler(AttachCameraShipMessage *message); + + protected: + static const HandlerEntry + MessageHandlerEntries[]; + static MessageHandlerSet + MessageHandlers; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Simulation Support + // + public: + typedef void + (CameraDirector::*Performance)(Scalar time_slice); + + void + SetPerformance(Performance performance) + { + Check(this); + activePerformance = (Simulation::Performance)performance; + } + + void + CreateCameraShip(Scalar time_slice); + void + BeADirector(Scalar time_slice); + void + UpdateHUD(Scalar time_slice); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Construction and Destruction Support + // + public: + CameraDirector( + MakeMessage *creation_message, + SharedData &virtual_data = DefaultData + ); + + static CameraDirector* + CameraDirector::Make(CameraDirector::MakeMessage *creation_message); + + ~CameraDirector(); + + Logical + TestInstance() const; + + enum { + DefaultFlags = Entity::DefaultFlags | PreRunFlag | CameraShipPlayerFlag + }; + + static Player* + FindPlayerByRank(int rank_to_find); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Simulation Support Data & Functions + // + protected: + + SlotOf + goalEntity; + + void + SetGoalEntity(Entity *goal_entity) + { + Check(this); + goalEntity.Remove(); + Check(goal_entity); + goalEntity.Add(goal_entity); + } + + Entity* + GetGoalEntity() + {Check(this); return goalEntity.GetCurrent(); } + + Scalar + timeLeftOnPlayer; + + CameraShip + *cameraShip; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // HUD Support + // + public: + + int + goalPlayerIndex; + + Logical + displayRankingWindow; + + Scalar + timeDisplayed, + timeTillDisplayed, + displayIntervalOn, + displayIntervalOff; + }; + +#endif diff --git a/CODE/RP/MUNGA/DOOR.CPP b/CODE/RP/MUNGA/DOOR.CPP new file mode 100644 index 0000000..6643020 --- /dev/null +++ b/CODE/RP/MUNGA/DOOR.CPP @@ -0,0 +1,566 @@ +//===========================================================================// +// File: door.cc // +// Project: Red Planet // +// Contents: Door subsystem for managing door operation // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. All Rights reserved // +// PROPRIETARY AND CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(DOOR_HPP) +# include +#endif + +#if !defined(FILEUTIL_HPP) +# include +#endif + +#if !defined(BOXSOLID_HPP) +# include +#endif + +#if !defined(DOORFRAM_HPP) +# include +#endif + +#if !defined(APP_HPP) + #include +#endif + +#if !defined(NOTATION_HPP) + #include +#endif + +//############################################################################# +// Shared Data Support +// +Door::SharedData + Door::DefaultData( + Door::ClassDerivations, + Door::MessageHandlers, + Door::AttributeIndex, + Door::StateCount + ); + +Derivation + Door::ClassDerivations( + Subsystem::ClassDerivations, + "Door" + ); + + +//############################################################################# +// Messaging Support +// + + +//############################################################################# +// Attribute Support +// + +const Door::IndexEntry + Door::AttributePointers[]= +{ + { + Door::CurrentPositionAttributeID, + "CurrentPosition", + (Simulation::AttributePointer)&Door::currentPosition + }, + { + Door::VideoResourceAttributeID, + "VideoResource", + (Simulation::AttributePointer)&Door::videoResource + }, + { + Door::PercentOpenAttributeID, + "PercentOpen", + (Simulation::AttributePointer)&Door::percentOpen + }, + { + Door::CurrentVelocityAttributeID, + "CurrentVelocity", + (Simulation::AttributePointer)&Door::currentVelocity + } +}; + +Door::AttributeIndexSet + Door::AttributeIndex( + ELEMENTS(Door::AttributePointers), + Door::AttributePointers, + Subsystem::AttributeIndex + ); + +//############################################################################# +// Model Support +// +void + Door::ReadUpdateRecord(Simulation::UpdateRecord *message) +{ + Check(this); + Check_Pointer(message); + Subsystem::ReadUpdateRecord(message); + UpdateRecord* record = (UpdateRecord*) message; + + percentOpen = record->percentOpen; + switch (GetSimulationState()) + { + case Opening: + case Closing: + phaseTimeRemaining = travelTime; + break; + case Opened: + case Closed: + phaseTimeRemaining = deadTime; + break; + } +// DEBUG_STREAM << GetEntity()->GetEntityID() << " door updated to state " +// << GetSimulationState() << " @ " +// << application->GetSecondsRemainingInGame() << endl; + MoveCollisionVolume(percentOpen); + Check_Fpu(); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + Door::WriteUpdateRecord(Simulation::UpdateRecord *record, int update_model) +{ + Check(this); + Check_Pointer(record); + + Subsystem::WriteUpdateRecord(record, update_model); + + UpdateRecord *update = (UpdateRecord*)record; + update->percentOpen = percentOpen; + update->recordLength = sizeof(*update); + Check_Fpu(); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + Door::SlideDoor(Scalar time_slice) +{ + Check(this); + + // + //------------------------------------------------------------ + // Advance the clock, then branch based upon our current state + //------------------------------------------------------------ + // + int new_state; + if (time_slice > 1.0f) + { + Check_Fpu(); + return; + } + phaseTimeRemaining -= time_slice; + Scalar percent_open; + switch (GetSimulationState()) + { + + // + //------------------------------------------------------------------------ + // If the door is not done opening, set its new position, otherwise branch + // to the opened state + //------------------------------------------------------------------------ + // + case Opening: +Door_Opening: + new_state = Opening; + if (phaseTimeRemaining > 0.0f) + { + percent_open = 1.0f - phaseTimeRemaining/travelTime; + } + else + { + phaseTimeRemaining += deadTime; +// DEBUG_STREAM << GetEntity()->GetEntityID() << " door opened @ " +// << application->GetSecondsRemainingInGame() << endl; + goto Door_Opened; + } + currentVelocity.Subtract( + worldExtent, + GetEntity()->localOrigin.linearPosition + ); + currentVelocity /= travelTime; + Check_Fpu(); + break; + + // + //------------------------------------------------------------- + // If the door is ready to start closing, jump to closing state + //------------------------------------------------------------- + // + case Opened: +Door_Opened: + new_state = Opened; + if (phaseTimeRemaining <= 0.0f) + { + phaseTimeRemaining += travelTime; +// DEBUG_STREAM << GetEntity()->GetEntityID() << " door closing @ " +// << application->GetSecondsRemainingInGame() << endl; + goto Door_Closing; + } + percent_open = 1.0f; + currentVelocity = Vector3D::Identity; + Check_Fpu(); + break; + + // + //------------------------------------------------------------------------ + // If the door is not done closing, set its new position, otherwise branch + // to the closed state + //------------------------------------------------------------------------ + // + case DefaultState: + phaseTimeRemaining = travelTime; +// DEBUG_STREAM << GetEntity()->GetEntityID() << " door default @ " +// << application->GetSecondsRemainingInGame() << endl; + case Closing: +Door_Closing: + new_state = Closing; + if (phaseTimeRemaining > 0.0f) + { + percent_open = phaseTimeRemaining/travelTime; + } + else + { + phaseTimeRemaining += deadTime; +// DEBUG_STREAM << GetEntity()->GetEntityID() << " door closed @ " +// << application->GetSecondsRemainingInGame() << endl; + goto Door_Closed; + } + currentVelocity.Subtract( + GetEntity()->localOrigin.linearPosition, + worldExtent + ); + currentVelocity /= travelTime; + Check_Fpu(); + break; + + // + //------------------------------------------------------------- + // If the door is ready to start opening, jump to opening state + //------------------------------------------------------------- + // + case Closed: +Door_Closed: + new_state = Closed; + if (phaseTimeRemaining <= 0.0f) + { + phaseTimeRemaining += travelTime; +// DEBUG_STREAM << GetEntity()->GetEntityID() << " door opening @ " +// << application->GetSecondsRemainingInGame() << endl; + goto Door_Opening; + } + percent_open = 0.0f; + currentVelocity = Vector3D::Identity; + Check_Fpu(); + break; + + } + + // + //------------------------------------------------- + // Move the collision volumes and set the new state + //------------------------------------------------- + // + MoveCollisionVolume(percent_open); + SetSimulationState(new_state); + Check_Fpu(); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + Door::MoveCollisionVolume(Scalar percent_open) +{ + Check(this); + + // + //--------------------------------------------------------- + // If the door hasn't moved, don't bother updating anything + //--------------------------------------------------------- + // + Entity *entity = GetEntity(); + Check(entity); + + if ( + GetSimulationState() != simulationState.GetOldState() + && entity->GetInstance() == Entity::MasterInstance + && entity->IsDynamic() + ) + { + ForceUpdate(); + } + if (percent_open == percentOpen) + { + return; + } + + // + //----------------------------------- + // Otherwise, lerp the local position + //----------------------------------- + // + percentOpen = percent_open; + currentPosition.Lerp(Point3D::Identity, localExtent, percentOpen); + + // + //----------------------------------------------------------- + // Now, lerp the world position and set the collision volumes + //----------------------------------------------------------- + // + Point3D world; + world.Lerp( + GetEntity()->localOrigin.linearPosition, + worldExtent, + percentOpen + ); + + BoxedSolid* temp = collisionTemplates; + BoxedSolid* vol = collisionVolumes; + while (temp) + { + Check(temp); + Check(vol); + + vol->minX = temp->minX + world.x; + vol->maxX = temp->maxX + world.x; + vol->minY = temp->minY + world.y; + vol->maxY = temp->maxY + world.y; + vol->minZ = temp->minZ + world.z; + vol->maxZ = temp->maxZ + world.z; + + vol = vol->GetNextSolid(); + temp = temp->GetNextSolid(); + } + Verify(!vol); + Check_Fpu(); +} + +//############################################################################# +// Constructer/Destructor Support +// + +Door::Door( + DoorFrame *entity, + int subsystem_ID, + SubsystemResource *subsystem_resource +): + Subsystem(entity, subsystem_ID, subsystem_resource, DefaultData) +{ + Check_Pointer(this); + Check(entity); + Check_Pointer(subsystem_resource); + + // + // GetStream data NOTE::This must be in the same order as below!!! + // + localExtent = subsystem_resource->motionExtent; + travelTime = subsystem_resource->travelTime; + deadTime = subsystem_resource->deadTime; + + // + // Initialize variables + // + phaseTimeRemaining = 0.0f; + currentPosition = Point3D::Identity; + + SetPerformance(&Door::SlideDoor); + SetSimulationState(DefaultState); + + collisionVolumeCount = 0; + collisionTemplates = NULL; + collisionVolumes = NULL; + percentOpen = -1.0f; + + // + //------------------------------------- + // Establish the worldspace coordinates + //------------------------------------- + // + worldExtent.Multiply(localExtent, entity->localToWorld); + Origin local_origin = entity->localOrigin; + local_origin.linearPosition = Point3D::Identity; + + // + //------------------------------ + // Read in the collision volumes + //------------------------------ + // + Check(application); + ResourceFile *res_file = application->GetResourceFile(); + Check(res_file); + ResourceDescription *res = + res_file->FindResourceDescription(subsystem_resource->collisionID); + Check(res); + res->Lock(); + BoxedSolidResource* box = + (BoxedSolidResource*)res->resourceAddress; + Check_Pointer(box); + collisionVolumeCount = res->resourceSize / sizeof(BoxedSolidResource); + + for (int i=0; ilocalOrigin); + local_box.Instance(*box,local_origin); + + collisionTemplates = + BoxedSolid::MakeBoxedSolid(&local_box, this, collisionTemplates); + Register_Object(collisionTemplates); + + collisionVolumes = + BoxedSolid::MakeBoxedSolid(&world_box, this, collisionVolumes); + Register_Object(collisionVolumes); + + ++box; + } + res->Unlock(); + + MoveCollisionVolume(0.0f); + Check(this); +} + +Door::~Door() +{ + BoxedSolid *box = collisionTemplates; + while (box) + { + BoxedSolid *next_box = box->GetNextSolid(); + Unregister_Object(box); + delete box; + box = next_box; + } + box = collisionVolumes; + while (box) + { + BoxedSolid *next_box = box->GetNextSolid(); + Unregister_Object(box); + delete box; + box = next_box; + } +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// CreateStreamedSubsystem +// +Logical + Door::CreateStreamedSubsystem( + NotationFile *model_file, + const char *model_name, + const char* subsystem_name, + SubsystemResource *subsystem_resource, + NotationFile *subsystem_file, + const ResourceDirectories *directories, + ResourceFile *res_file + ) +{ + if ( + !Subsystem::CreateStreamedSubsystem( + model_file, + model_name, + subsystem_name, + subsystem_resource, + subsystem_file, + directories + ) + ) + { + return False; + } + + subsystem_resource->subsystemModelSize = sizeof(*subsystem_resource); + subsystem_resource->classID = RegisteredClass::DoorClassID; + + // + // Get the motion Extent + // + const char *extent_data; + if( + !subsystem_file->GetEntry( + subsystem_name, + "MotionExtent", + &extent_data + ) + ) + { + cerr << subsystem_name << " missing MotionExtent!!\n"; + return -1; + } + sscanf( + extent_data, + "%f %f %f", + &subsystem_resource->motionExtent.x, + &subsystem_resource->motionExtent.y, + &subsystem_resource->motionExtent.z + ); + + // + // Get the travelTime + // + + if( + !subsystem_file->GetEntry( + subsystem_name, + "TravelTime", + &subsystem_resource->travelTime + ) + ) + { + cerr << subsystem_name << " missing TravelTime!\n"; + return -1; + } + + // + // Read in the Deadtime + // + if( + !subsystem_file->GetEntry( + subsystem_name, + "DeadTime", + &subsystem_resource->deadTime + ) + ) + { + cerr << subsystem_name << " missing DeadTime!\n"; + return False; + } + + const char* collision_file; + if ( + !subsystem_file->GetEntry( + subsystem_name, + "Collision", + &collision_file + ) + ) + { + cerr << subsystem_name << " missing Collision!\n"; + return False; + } + subsystem_resource->collisionID = + BoxedSolidResource::CreateBoxedSolidStream( + collision_file, + res_file, + directories + ); + + return True; +} + +Logical + Door::TestInstance() const +{ + return IsDerivedFrom(ClassDerivations); +} + diff --git a/CODE/RP/MUNGA/DOOR.HPP b/CODE/RP/MUNGA/DOOR.HPP new file mode 100644 index 0000000..de4d32e --- /dev/null +++ b/CODE/RP/MUNGA/DOOR.HPP @@ -0,0 +1,185 @@ +//===========================================================================// +// File: door.hh // +// Project: RP // +// Contents: A terrain subsystem for management of door operation // +// // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. All Rights reserved // +// PROPRIETARY AND CONFIDENTIAL // +//===========================================================================// + +#if !defined (DOOR_HPP) +# define DOOR_HPP + +# if !defined(SUBSYSTM_HPP) +# include +# endif + +# if !defined(BOXSOLID_HPP) +# include +# endif + + class DoorFrame; + + //########################################################################## + //##################### Door::SubsystemResource ################### + //########################################################################## + + struct Door__SubsystemResource: + public Subsystem::SubsystemResource + { + Vector3D motionExtent; + Scalar + travelTime, + deadTime; + ResourceDescription::ResourceID + collisionID; + }; + + //########################################################################## + //##################### Chute::UpdateRecord ##################### + //########################################################################## + + struct Door__UpdateRecord : + public Subsystem::UpdateRecord + { + Scalar + percentOpen; + }; + + //########################################################################## + //######################### CLASS Door ######################## + //########################################################################## + + class Door : + public Subsystem + { + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Messaging Support + // + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Shared Data Support + // + public: + static Derivation ClassDerivations; + static SharedData DefaultData; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Attribute Support + // + public: + enum { + PercentOpenAttributeID = Subsystem::NextAttributeID, + CurrentPositionAttributeID, + VideoResourceAttributeID, + CurrentVelocityAttributeID, + NextAttributeID + }; + + private: + + static const IndexEntry AttributePointers[]; + + protected: + + static AttributeIndexSet AttributeIndex; + + public: + + Scalar percentOpen; + ResourceDescription::ResourceID videoResource; + Point3D currentPosition; + Vector3D currentVelocity; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Model Support + // + public: + enum { + Opening = Subsystem::StateCount, + Opened, + Closing, + Closed, + StateCount + }; + + typedef void + (Door::*Performance)(Scalar time_slice); + typedef Door__UpdateRecord UpdateRecord; + + void + SetPerformance(Performance performance) + { + Check(this); + activePerformance = (Simulation::Performance)performance; + } + + void + SlideDoor(Scalar time_slice); + + void + MoveCollisionVolume(Scalar open_percent); + BoxedSolid* + GetFirstBoxedSolid() + {Check(this); return collisionVolumes;} + + protected: + void + WriteUpdateRecord(Simulation::UpdateRecord *message, int update_model); + void + ReadUpdateRecord(Simulation::UpdateRecord *message); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Construction and Destruction + // + + public: + typedef Door__SubsystemResource SubsystemResource; + + Door( + DoorFrame *entity, + int subsystem_ID, + SubsystemResource *subsystem_resource + ); + ~Door(); + + Logical + TestInstance() const; + + static Logical + CreateStreamedSubsystem( + NotationFile *model_file, + const char *model_name, + const char *subsystem_name, + SubsystemResource *subsystem_resource, + NotationFile *subsystem_file, + const ResourceDirectories *directories, + ResourceFile *res_file + ); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Local Support + // + private: + Point3D + localExtent, + worldExtent; + + Scalar + phaseTimeRemaining, + travelTime, + deadTime; + + int collisionVolumeCount; + + BoxedSolid + *collisionTemplates, + *collisionVolumes; + }; + +#endif diff --git a/CODE/RP/MUNGA/DOORFRAM.CPP b/CODE/RP/MUNGA/DOORFRAM.CPP new file mode 100644 index 0000000..e4298cc --- /dev/null +++ b/CODE/RP/MUNGA/DOORFRAM.CPP @@ -0,0 +1,309 @@ +//===========================================================================// +// File: Doorfram.cc // +// Project: Red Planet // +// Contents: Implementation details of well head doors // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(BOXSOLID_HPP) +# include +#endif + +#if !defined(FILEUTIL_HPP) +# include +#endif + +#if !defined(DOORFRAM_HPP) +# include +#endif + +#if !defined(DOOR_HPP) +# include +#endif + +#if !defined(APP_HPP) + #include +#endif + +#if !defined(NOTATION_HPP) + #include +#endif + +#if !defined(NAMELIST_HPP) + #include +#endif + +//############################################################################# +// Shared Data Support +// +Derivation + DoorFrame::ClassDerivations(UnscalableTerrain::ClassDerivations,"DoorFrame"); + +DoorFrame::SharedData + DoorFrame::DefaultData( + DoorFrame::ClassDerivations, + DoorFrame::MessageHandlers, + DoorFrame::AttributeIndex, + DoorFrame::StateCount, + (Entity::MakeHandler)DoorFrame::Make + ); +//############################################################################# +// Test Support +// +Logical + DoorFrame::TestInstance() const +{ + return IsDerivedFrom(ClassDerivations); +} + +//############################################################################# +// Construction and Destruction +// + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +DoorFrame::DoorFrame( + DoorFrame::MakeMessage *creation_message, + DoorFrame::SharedData &virtual_data +): + UnscalableTerrain(creation_message, virtual_data) +{ + Check_Pointer(this); + Check(creation_message); + Check(&virtual_data); + + SetValidFlag(); + SetPerformance(&DoorFrame::DoNothing); + + // + // Get the subsystem_resource from the resource file + // + Check(application); + ResourceDescription *subsystem_resource = + application->GetResourceFile()->SearchList( + resourceID, + ResourceDescription::SubsystemModelStreamResourceType + ); + Check(subsystem_resource); + subsystem_resource->Lock(); + Check_Pointer(subsystem_resource->resourceAddress); + MemoryStream subsystem_stream( + subsystem_resource->resourceAddress, + subsystem_resource->resourceSize); + + subsystemCount = *(int*)subsystem_stream.GetPointer(); + subsystem_stream.AdvancePointer(sizeof(int)); + Verify(subsystemCount); + + // + // Set up Subsystems + // + subsystemArray = new (Subsystem(*[subsystemCount])); + Register_Pointer(subsystemArray); + + // + // Attach the doors as defined in the mod file + // + for (int ii=BasicSubsystemCount; iisubsystemModelSize); + } + + subsystem_resource->Unlock(); + Check(this); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +DoorFrame* + DoorFrame::Make(DoorFrame::MakeMessage *creation_message) +{ + return new DoorFrame(creation_message); +} + +int + DoorFrame::CreateMakeMessage( + MakeMessage *creation_message, + NotationFile *model_file, + const ResourceDirectories *directories + ) +{ + Check(creation_message); + Check(model_file); + + if ( + !UnscalableTerrain::CreateMakeMessage( + creation_message, + model_file, + directories + ) + ) + { + return False; + } + + creation_message->classToCreate = RegisteredClass::DoorFrameClassID; + creation_message->instanceFlags = + MasterInstance|DynamicFlag|MapFlag|TrappedFlag; + return True; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +DoorFrame::~DoorFrame() +{ +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +ResourceDescription::ResourceID + DoorFrame::CreateSubsystemStream( + ResourceFile *resource_file, + const char *model_name, + NotationFile *model_file, + const ResourceDirectories *directories + ) +{ + Check(resource_file); + Check_Pointer(model_name); + Check(model_file); + Check_Pointer(directories); + + // + //------------------- + // Find the .sub file + //------------------- + // + const char* entry_data; + if ( + !model_file->GetEntry( + "gamedata", + "Subsystems", + &entry_data + ) + ) + { + cerr << model_name << " is missing .sub file specification!\n"; + return -1; + } + + char *sub_filename = MakePathedFilename(directories->modelDirectory, entry_data); + Register_Pointer(sub_filename); + + NotationFile *sub_file = new NotationFile(sub_filename); + Register_Object(sub_file); + NameList *sub_namelist = sub_file->MakePageList(); + Register_Object(sub_namelist); + int subsystem_count = sub_file->PageCount(); + if (!subsystem_count) + { + cerr << sub_filename << " empty of missing!\n"; +Dump_And_Die: + Unregister_Pointer(sub_filename); + delete sub_filename; + Unregister_Object(sub_file); + delete sub_file; + Unregister_Object(sub_namelist); + delete sub_namelist; + return -1; + } + int buf_size = + subsystem_count * sizeof(Door::SubsystemResource) + sizeof(int); + char *buffer = new char[buf_size]; + Register_Pointer(buffer); + MemoryStream subsystem_stream(buffer, buf_size); + + *(int*)subsystem_stream.GetPointer() = subsystem_count; + subsystem_stream.AdvancePointer(sizeof(int)); + + NameList::Entry *sub_entry = sub_namelist->GetFirstEntry(); + while(sub_entry) + { + char subsystem_name[32]; + Str_Copy(subsystem_name, sub_entry->GetName(), sizeof(subsystem_name)); + const char *sub_type; + if(!sub_file->GetEntry( + subsystem_name, + "Type", + &sub_type + ) + ) + { + cerr << model_name << ':' << subsystem_name << " missing Type!\n"; +Dump_And_Die_2: + Unregister_Pointer(buffer); + delete[] buffer; + goto Dump_And_Die; + } + + Subsystem::SubsystemResource *sub_res = + (Subsystem::SubsystemResource*)subsystem_stream.GetPointer(); + if (!strcmp(sub_type, "DoorClassID")) + { + if ( + Door::CreateStreamedSubsystem( + model_file, + model_name, + subsystem_name, + (Door::SubsystemResource*)sub_res, + sub_file, + directories, + resource_file + ) == -1 + ) + { + goto Dump_And_Die_2; + } + } + else + { + cerr << model_name << ':' << subsystem_name + << " has an unknown component type of " << sub_type << endl; + goto Dump_And_Die_2; + } + subsystem_stream.AdvancePointer(sub_res->subsystemModelSize); + sub_entry = sub_entry->GetNextEntry(); + } + ResourceDescription *res_desc = resource_file-> + ResourceFile::AddResourceMemoryStream( + model_name, + ResourceDescription::SubsystemModelStreamResourceType, + 1, + ResourceDescription::Preload, + &subsystem_stream + ); + ResourceDescription::ResourceID res_id; + + if(!res_desc) + { + res_id = ResourceDescription::NullResourceID; + } + else + { + res_id = res_desc->resourceID; + } + + Unregister_Pointer(sub_filename); + delete sub_filename; + Unregister_Object(sub_file); + delete sub_file; + Unregister_Object(sub_namelist); + delete sub_namelist; + Unregister_Pointer(buffer); + delete[] buffer; + return res_id; + +} diff --git a/CODE/RP/MUNGA/DOORFRAM.HPP b/CODE/RP/MUNGA/DOORFRAM.HPP new file mode 100644 index 0000000..00e0873 --- /dev/null +++ b/CODE/RP/MUNGA/DOORFRAM.HPP @@ -0,0 +1,90 @@ +//===========================================================================// +// File: Doorfram.hh // +// Project: Red Planet // +// Contents: Interface specification for doors // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(DOORFRAM_HPP) +# define DOORFRAM_HPP + +# if !defined(TERRAIN_HPP) +# include +# endif + + + //########################################################################## + //############################# DoorFrame ################################ + //########################################################################## + + class DoorFrame: + public UnscalableTerrain + { + public: + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Test Instance support + // + Logical + TestInstance() const; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Shared Data support + // + public: + static Derivation ClassDerivations; + static SharedData DefaultData; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Model support + // + enum{ + BasicSubsystemCount + }; + + public: + typedef void + (DoorFrame::*Performance)(Scalar time_slice); + + void + SetPerformance(Performance performance) + { + Check(this); + activePerformance = (Simulation::Performance)performance; + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Construction and Destruction + // + public: + static Logical + CreateMakeMessage( + MakeMessage *creation_message, + NotationFile *model_file, + const ResourceDirectories *directories + ); + static ResourceDescription::ResourceID + CreateSubsystemStream( + ResourceFile *resource_file, + const char *model_name, + NotationFile *model_file, + const ResourceDirectories *directories + ); + + static DoorFrame* + Make(MakeMessage *creation_message); + + DoorFrame( + MakeMessage *creation_message, + SharedData &virtual_data = DefaultData + ); + ~DoorFrame(); + }; + +#endif diff --git a/CODE/RP/MUNGA/DROPZONE.HPP b/CODE/RP/MUNGA/DROPZONE.HPP new file mode 100644 index 0000000..9bbb147 --- /dev/null +++ b/CODE/RP/MUNGA/DROPZONE.HPP @@ -0,0 +1,174 @@ +//===========================================================================// +// File: mover.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(DROPZONE_HPP) +# define DROPZONE_HPP + +# if !defined(ENTITY_HPP) +# include +# endif + +# if !defined(CSTR_HPP) +# include +# endif + + //########################################################################## + //##################### Mover::ModelResource ######################### + //########################################################################## + + class DropZone__MakeMessage: + public Entity::MakeMessage + { + public: + char dropZoneName[32]; + int dropZoneCount; + }; + + //########################################################################## + //################# DropZone::AssignDropZoneMessage ################## + //########################################################################## + + class DropZone__AssignDropZoneMessage: + public Entity::Message + { + public: + EntityID + requestingEntity; + Receiver::MessageID + replyMessageID; + int + deathCount; + + DropZone__AssignDropZoneMessage( + Receiver::MessageID message_ID, + size_t length, + const EntityID &reply_to, + Receiver::MessageID reply_ID, + int death_count + ): + Entity::Message(message_ID, length), + requestingEntity(reply_to), + replyMessageID(reply_ID), + deathCount(death_count) + {} + }; + + //########################################################################## + //##################### DropZone::ReplyMessage ########################## + //########################################################################## + + class DropZone__ReplyMessage: + public Entity::Message + { + public: + Origin + dropZoneLocation; + int + deathCount; + + DropZone__ReplyMessage( + Receiver::MessageID message_ID, + size_t length, + const Origin &location, + int death_count + ): + Entity::Message(message_ID, length), + dropZoneLocation(location), + deathCount(death_count) + {} + }; + + //########################################################################## + //########################### DropZone ################################ + //########################################################################## + + class DropZone: + public Entity + { + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Shared Data support + // + public: + static Derivation ClassDerivations; + + static SharedData DefaultData; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Message Support + // + public: + enum { + AssignDropZoneMessageID = Entity::NextMessageID, + NextMessageID + }; + + private: + static const HandlerEntry MessageHandlerEntries[]; + + protected: + static MessageHandlerSet MessageHandlers; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Construction and Destruction + // + public: + typedef DropZone__MakeMessage MakeMessage; + + static DropZone* + Make(MakeMessage *creation_message); + + static Logical + CreateMakeMessage( + MakeMessage *creation_message, + const char* model_name, + const char* resource_name, + NotationFile *map_file + ); + + DropZone( + MakeMessage *creation_message, + SharedData &virtual_data = DefaultData + ); + ~DropZone(); + + Logical + TestInstance() const; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Dropzone assignment + // + public: + typedef DropZone__AssignDropZoneMessage AssignDropZoneMessage; + typedef DropZone__ReplyMessage ReplyMessage; + + const char* + GetDropZoneName() + {Check(this); return dropZoneName;} + + Logical + IsAvailable(int index); + + protected: + int dropZoneCount; + char dropZoneName[32]; + Origin *dropZones; + Time *lastUsageTime; + EntityID *lastUsedBy; + int *lastDeathCount; + + void + AssignDropZoneMessageHandler(AssignDropZoneMessage *message); + }; + +#endif diff --git a/CODE/RP/MUNGA/ENTITY.CPP b/CODE/RP/MUNGA/ENTITY.CPP new file mode 100644 index 0000000..6116296 --- /dev/null +++ b/CODE/RP/MUNGA/ENTITY.CPP @@ -0,0 +1,1622 @@ +//===========================================================================// +// File: entity.cc // +// Project: MUNGA Brick: Entity Manager // +// Contents: Implementation details of the entity class // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 11/29/94 JMA Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(ENTITY_HPP) +# include +#endif + +#if !defined(INTEREST_HPP) +# include +#endif + +#if !defined(EXPTBL_HPP) +# include +#endif + +#if !defined(HOSTMGR_HPP) +# include +#endif + +#if !defined(PLAYER_HPP) +# include +#endif + +#if !defined(AUDIO_HPP) +# include +#endif + +#if !defined(FILEUTIL_HPP) +# include +#endif + +#if !defined(REGISTRY_HPP) +# include +#endif + +#if !defined(EVENT_HPP) + #include +#endif + +#if !defined(APP_HPP) + #include +#endif + +#if !defined(NTTMGR_HPP) + #include +#endif + +#if !defined(SUBSYSTM_HPP) + #include +#endif + +#if !defined(NAMELIST_HPP) + #include +#endif + +#if !defined(NOTATION_HPP) + #include +#endif + +#if defined(TRACE_EXECUTE_ENTITY) + static BitTrace Execute_Entity("Execute Entity"); + #define SET_EXECUTE_ENTITY() Execute_Entity.Set() + #define CLEAR_EXECUTE_ENTITY() Execute_Entity.Clear() +#else + #define SET_EXECUTE_ENTITY() + #define CLEAR_EXECUTE_ENTITY() +#endif + +#if defined(TRACE_PERFORM_ENTITY) + static BitTrace Perform_Entity("Perform Entity"); + #define SET_PERFORM_ENTITY() Perform_Entity.Set() + #define CLEAR_PERFORM_ENTITY() Perform_Entity.Clear() +#else + #define SET_PERFORM_ENTITY() + #define CLEAR_PERFORM_ENTITY() +#endif + +#if defined(TRACE_PERFORM_SUBSYSTEMS) + static BitTrace Perform_Subsystems("Perform Subsystems"); + #define SET_PERFORM_SUBSYSTEMS() Perform_Subsystems.Set() + #define CLEAR_PERFORM_SUBSYSTEMS() Perform_Subsystems.Clear() +#else + #define SET_PERFORM_SUBSYSTEMS() + #define CLEAR_PERFORM_SUBSYSTEMS() +#endif + +//############################################################################# +//############################## Entity ################################# +//############################################################################# + +//############################################################################# +// Virtual Data support +// +Derivation + Entity::ClassDerivations(Simulation::ClassDerivations,"Entity"); + +Entity::SharedData + Entity::DefaultData( + Entity::ClassDerivations, + Entity::MessageHandlers, + Entity::AttributeIndex, + Entity::StateCount, + Entity::Make + ); + +//############################################################################# +// Message Support +// +const Receiver::HandlerEntry + Entity::MessageHandlerEntries[]= +{ + { + Entity::MakeMessageID, + "Make", + (Entity::Handler)&Entity::DefaultMessageHandler + }, + { + Entity::MakeReadyMessageID, + "MakeReady", + (Entity::Handler)&Entity::DefaultMessageHandler + }, + { + Entity::RemakeEntityMessageID, + "RemakeEntity", + (Entity::Handler)&Entity::DefaultMessageHandler + }, + { + Entity::RemakeReadyMessageID, + "RemakeReady", + (Entity::Handler)&Entity::DefaultMessageHandler + }, + { + Entity::RemakeCompleteMessageID, + "RemakeComplete", + (Entity::Handler)&Entity::DefaultMessageHandler + }, + { + Entity::RemakeIncompleteMessageID, + "RemakeIncomplete", + (Entity::Handler)&Entity::DefaultMessageHandler + }, + MESSAGE_ENTRY(Entity, DestroyEntity), + { + Entity::TransferEntityMessageID, + "TransferEntity", + (Entity::Handler)&Entity::DefaultMessageHandler + }, + { + Entity::TransferCompleteMessageID, + "TransferComplete", + (Entity::Handler)&Entity::DefaultMessageHandler + }, + { + Entity::TransferIncompleteMessageID, + "TransferIncomplete", + (Entity::Handler)&Entity::DefaultMessageHandler + }, + MESSAGE_ENTRY(Entity, BecomeInteresting), + MESSAGE_ENTRY(Entity, BecomeUninteresting), + MESSAGE_ENTRY(Entity, Update), + { + Entity::SubscribeReplicantMessageID, + "SubscribeReplicant", + (Entity::Handler)&Entity::DefaultMessageHandler + }, + { + Entity::UnsubscribeReplicantMessageID, + "UnsubscribeReplicant", + (Entity::Handler)&Entity::DefaultMessageHandler + }, + MESSAGE_ENTRY(Entity, TakeDamage), + MESSAGE_ENTRY(Entity, PlayerLink), + MESSAGE_ENTRY(Entity, TakeDamageStream) +}; + +Entity::MessageHandlerSet + Entity::MessageHandlers( + ELEMENTS(Entity::MessageHandlerEntries), + Entity::MessageHandlerEntries, + Receiver::MessageHandlers + ); + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + Entity::Receive(Event* event) +{ + Check(this); + Check(event); + + // + //------------------------------------------------------------------------- + // If the entity is being transferred, post the message to the new owner of + // the entity + //------------------------------------------------------------------------- + // + + // + //-------------------------------------------------------------------------- + // If the object is not valid, filter the message to determine which ones to + // defer and which ones to immediately process + //-------------------------------------------------------------------------- + // + if (!IsValid()) + { + switch (event->messageToSend->messageID) + { + // + //---------------------------------------------------------------------- + // The messages which should be allowed through should just break out of + // this switch + //---------------------------------------------------------------------- + // + + default: + // + //------------------- + // Defer the messages + //------------------- + // + event->Defer(); + return; + } + } + + // + //------------------------------------------------ + // Go ahead and dispatch the message to the entity + //------------------------------------------------ + // + Receiver::Receive(event); + + #if defined(USE_FPU_ANALYSIS) + if (!Fpu_Ok()) + { + Registry *registry = application->GetRegistry(); + Receiver::SharedData *shared_data = + registry->GetStaticData(GetClassID()); + Derivation *derivation = shared_data->derivedClasses; + Receiver::MessageHandlerSet *handlers = + shared_data->activeMessageHandlers; + DEBUG_STREAM << derivation->className << ',' << GetInstance() << endl; + DEBUG_STREAM << handlers->GetName(event->messageToSend->messageID) + << endl; + Fail("Event corrupted FPU!"); + } + #else + Check_Fpu(); + #endif +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + Entity::Dispatch(Receiver::Message* incoming) +{ + Message *message = (Message*) incoming; + Check(this); + Check(message); + + // + // Call Receiver if it is not entity aware!!!!! + // + if (message->messageID < Receiver::NextMessageID) + { + Receiver::Dispatch(message); + } + + // + //----------------------------------------- + // Initialize the entity information fields + //----------------------------------------- + // + message->entityID = entityID; + message->interestZoneID = interestZoneID; + + // + //------------------------------------------------------------------- + // If this is a replicant instance, reroute the message to the master + //------------------------------------------------------------------- + // + if (GetInstance() == ReplicantInstance) + { + application->SendMessage( + ownerID, + EntityManager::EntityManagerClientID, + message + ); + } + + // + //-------------------------------------------------------- + // If this entity is invalid, post the message as an event + //-------------------------------------------------------- + // + else if (!IsValid()) + { + // ECH 1/28/96 - application->Post(DefaultEventPriority, this, message); + application->Post(EntityInvalidEventPriority, this, message); + } + + // + //-------------------------------------------- + // Otherwise, go ahead and receive the message + //-------------------------------------------- + // + else + { + Receiver::Receive(message); + } + Check_Fpu(); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + Entity::DispatchToReplicants(Message *what) +{ + Check(this); + Check(what); + + what->entityID = entityID; + what->interestZoneID = interestZoneID; + Check(application); + InterestManager *int_mgr = application->GetInterestManager(); + Check(int_mgr); + int_mgr->EntityBroadcastToReplicants(this, what); + Check_Fpu(); +} + +//############################################################################# +// Attribute Support +// +const Entity::IndexEntry + Entity::AttributePointers[]= +{ + ATTRIBUTE_ENTRY(Entity, LocalToWorld, localToWorld), + ATTRIBUTE_ENTRY(Entity, LocalOrigin, localOrigin), + ATTRIBUTE_ENTRY(Entity, DamageZoneCount, damageZoneCount), + ATTRIBUTE_ENTRY(Entity, DamageZones, damageZones) +}; + +Entity::AttributeIndexSet + Entity::AttributeIndex( + ELEMENTS(Entity::AttributePointers), + Entity::AttributePointers, + Simulation::AttributeIndex + ); + +//############################################################################# +// Model Support +// + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + Entity::WriteUpdateRecord( + Simulation::UpdateRecord *record, + int update_model + ) +{ + Check(this); + Check_Pointer(record); + + switch (update_model) + { + case DefaultUpdateModelBit: + { + Simulation::WriteUpdateRecord(record, update_model); + + // + //---------------------------- + // Write out the record update + //---------------------------- + // + UpdateRecord *update = (UpdateRecord*)record; + update->localOrigin = localOrigin; + updateOrigin = localOrigin; + update->recordLength = sizeof(*update); + } + break; + case DamageZoneUpdateModelBit: + record->timeStamp = lastPerformance; + record->recordID = (Word)update_model; + WriteDamageUpdateRecord(record); + break; + + default: + Simulation::WriteUpdateRecord(record, update_model); + break; + } + record->subsystemID = (Word)(EntitySubsystemID + 1); + + Check_Fpu(); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + Entity::UpdateMessageHandler(UpdateMessage *message) +{ + Check(this); + Check(message); + + // + //------------------------------------------------------ + // Position to the beginning of the update record blocks + //------------------------------------------------------ + // + MemoryStream stream(message, message->messageLength, sizeof(*message)); + + // + //------------------------------------------------------------------------ + // Step through each block until there are no more remaining, and send the + // update out the the simulation indicated by the subsystemID + //------------------------------------------------------------------------ + // + while (stream.GetBytesRemaining()) + { + Simulation::UpdateRecord *update = + (Simulation::UpdateRecord*)stream.GetPointer(); + Check_Pointer(update); + Simulation *simulation = GetSimulation((int)update->subsystemID-1); + Check(simulation); + simulation->ReadUpdateRecord(update); + stream.AdvancePointer(update->recordLength); + } + Check_Fpu(); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + Entity::ReadUpdateRecord(Simulation::UpdateRecord *record) +{ + Check(this); + Check_Pointer(record); + + switch(record->recordID) + { + case DefaultUpdateModelBit: + { + // + //----------------------- + // Read the record update + //----------------------- + // + UpdateRecord *update = (UpdateRecord*)record; + updateOrigin = update->localOrigin; + + // + //------------------------------------------------------------------ + // If we aren't able to run yet, we must update local origin as well + //------------------------------------------------------------------ + // + Check(application); + int app_state = application->GetApplicationState(); + if ( + app_state < Application::RunningMission + || app_state == Application::CreatingMission + ) + { + localOrigin = updateOrigin; + localToWorld = localOrigin; + } + Simulation::ReadUpdateRecord(record); + } + break; + case DamageZoneUpdateModelBit: + ReadDamageUpdateRecord(record); + break; + default: + Simulation::ReadUpdateRecord(record); + } + + + + Check_Fpu(); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + Entity::ReadDamageUpdateRecord(Simulation::UpdateRecord *update_record) +{ + // + //------------------------------------------------------------------------ + // Step through each block until there are no more remaining, and send the + // update out the the damageZone indicated by the damageZoneIndex + //------------------------------------------------------------------------ + // + MemoryStream stream( + update_record, + update_record->recordLength, + sizeof(*update_record) + ); + + while (stream.GetBytesRemaining()) + { + DamageZone::UpdateRecord *damage_zone_record = + (DamageZone::UpdateRecord*)stream.GetPointer(); + int damage_zone_index = damage_zone_record->damageZoneIndex; + damageZones[damage_zone_index]->ReadUpdateRecord(damage_zone_record); + stream.AdvancePointer(damage_zone_record->recordLength); + } +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +#define MAX_UPDATE_LENGTH 1400 + +static long Update_Buffer[MAX_UPDATE_LENGTH >> 2]; +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + Entity::WriteDamageUpdateRecord(Simulation::UpdateRecord *update_record) +{ + Check(this); + Check_Pointer(update_record); + + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Make a memory stream this size of a network packet + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + MemoryStream stream( + update_record, + sizeof(Update_Buffer) - ((char*)update_record - (char*)Update_Buffer), + sizeof(*update_record) + ); + DamageZone::UpdateRecord *record_start = + (DamageZone::UpdateRecord*)stream.GetPointer(); + + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Update Every DamageZone For NOW + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + for(int ii=0;iiWriteUpdateRecord(damage_zone_update); + stream.AdvancePointer(damage_zone_update->recordLength); + } + + // + //----------------------------------------------- + // Check to see if an update message is necessary + //----------------------------------------------- + // + if (stream.GetPointer() != record_start) + { + Simulation::UpdateRecord *damage_update = + (Simulation::UpdateRecord*)update_record; + damage_update->recordLength = + (char*)stream.GetPointer() - (char*)update_record; + } +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Entity::UpdateMessage* + Entity::Execute(const Time& till) +{ + SET_EXECUTE_ENTITY(); + Check(this); + Check(&till); + + MemoryStream + stream(Update_Buffer, sizeof(Update_Buffer), sizeof(UpdateMessage)); + char *record_start = (char*)stream.GetPointer(); + + // + //----------------------------------------------------------------------- + // Check to see if the application will let us run. If We are starting a + // mission, only the player class objects can execute + //----------------------------------------------------------------------- + // + Check(application); + if ( + application->GetApplicationState() == Application::RunningMission + || application->GetApplicationState() == Application::EndingMission + || IsPreRunnable() + ) + { + PerformAndWatch(till, &stream); + } + else + { + WriteSimulationUpdate(&stream); + } + + #if defined(USE_FPU_ANALYSIS) + if (!Fpu_Ok()) + { + Registry *registry = application->GetRegistry(); + Receiver::SharedData *shared_data = + registry->GetStaticData(GetClassID()); + Derivation *derivation = shared_data->derivedClasses; + DEBUG_STREAM << derivation->className << ',' << GetInstance() << endl; + Fail("Simulation corrupted FPU!"); + } + #endif + + // + //----------------------------------------------- + // Check to see if an update message is necessary + //----------------------------------------------- + // + if (stream.GetPointer() != record_start) + { + UpdateMessage *update = (UpdateMessage*)Update_Buffer; + update->messageID = UpdateMessageID; + update->messageLength = (char*)stream.GetPointer() - (char*)Update_Buffer; + update->messageFlags = 0; + CLEAR_EXECUTE_ENTITY(); + return update; + } + + // + //------------------------------------- + // Otherwise, return NULL for no update + //------------------------------------- + // + Check_Fpu(); + CLEAR_EXECUTE_ENTITY(); + return NULL; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Simulation* + Entity::GetSimulation(int index) +{ + Check(this); + + if (index == EntitySubsystemID) + { + return this; + } + + Check_Fpu(); + if ((unsigned)index < subsystemCount) + { + return subsystemArray[index]; + } + else + { + return NULL; + } +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Subsystem* + Entity::FindSubsystem(const char* name) +{ + Check(this); + Check_Pointer(name); + + for (int i=0; iGetName(), name)) + { + return subsystemArray[i]; + } + } + } + Check_Fpu(); + return NULL; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +#define MAX_SUB_FILE_NAME (256) + +int + Entity::FindSubsytemID + ( +#if DEBUG_LEVEL>0 + const char *model_name, + const char *subsystem_name +#else + const char *, + const char *subsystem_name +#endif + ) +{ + Check_Pointer(model_name); + Check_Pointer(subsystem_name); + + int subsytem_id = EntitySubsystemID; + int sub_count = 0; + + CString sub_file_string; + CString sub_directory_string("models\\"); + CString model_name_string("model_name"); + CString sub_post_string(".sub"); + + sub_file_string = + sub_directory_string + model_name_string + sub_post_string; + + NotationFile sub_file(sub_file_string); + Check(&sub_file); + + NameList *page_list = sub_file.MakePageList(); + Register_Object(page_list); + NameList::Entry *entry=page_list->GetFirstEntry(); + while (entry != NULL) + { + Check(entry); + Check_Pointer(entry->GetName()); + if (!stricmp(subsystem_name, entry->GetName())) + { + subsytem_id = sub_count; + break; + } + + ++sub_count; + entry = entry->GetNextEntry(); + } + + Unregister_Object(page_list); + delete page_list; + + return subsytem_id; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + Entity::PerformAndWatch( + const Time &till, + MemoryStream *update_stream + ) +{ + Check(this); + Check(&till); + + // + //----------------------------------------- + // Execute all the subsystems, then ourself + //----------------------------------------- + // + SET_PERFORM_SUBSYSTEMS(); + if (subsystemArray) + { + Check_Pointer(subsystemArray); + + // + //--------------------------------------------------- + // If this is not a replicant, execute all subsystems + //--------------------------------------------------- + // + if (GetInstance() != ReplicantInstance) + { + for (int i=0; iIsNonReplicantExecutable()) + { + subsystem->PerformAndWatch(till, update_stream); + #if defined(USE_FPU_ANALYSIS) + if (!Fpu_Ok()) + { + Registry *registry = application->GetRegistry(); + Receiver::SharedData *shared_data = + registry->GetStaticData(GetClassID()); + Derivation *derivation = shared_data->derivedClasses; + DEBUG_STREAM << derivation->className + << "\nExecuting subsystem[" << i << "], " + << subsystem->GetName() << endl; + Fail("Simulation corrupted FPU!"); + } + #endif + } + } + } + } + + // + //-------------------------------------------------------------------- + // If this is a replicant, execute only those subsystems which need to + //-------------------------------------------------------------------- + // + else + { + for (int i=0; iIsReplicantExecutable()) + { + subsystem->PerformAndWatch(till, update_stream); + #if defined(USE_FPU_ANALYSIS) + if (!Fpu_Ok()) + { + Registry *registry = application->GetRegistry(); + Receiver::SharedData *shared_data = + registry->GetStaticData(GetClassID()); + Derivation *derivation = shared_data->derivedClasses; + DEBUG_STREAM << derivation->className + << " replicant\nExecuting subsystem[" << i << "], " + << subsystem->GetName() << endl; + Fail("Simulation corrupted FPU!"); + } + #endif + } + } + } + } + } + CLEAR_PERFORM_SUBSYSTEMS(); + + SET_PERFORM_ENTITY(); + Simulation::PerformAndWatch(till, update_stream); + Check_Fpu(); + CLEAR_PERFORM_ENTITY(); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + Entity::PlayerLinkMessageHandler(PlayerLinkMessage *message) +{ + Check(application); + HostManager *host = application->GetHostManager(); + Check(host); + playerLink =(Player*) host->GetEntityPointer(message->playerID); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + Entity::TakeDamageStreamMessageHandler(TakeDamageStreamMessage *message) +{ + Check(this); + Check(message); + + // + //------------------------------------------------- + // Extract the common information out of the stream + //------------------------------------------------- + // + Damage damage_data; + EntityID shooting_entity = message->shootingEntity; + int damage_zone_index = message->damageZoneIndex; + damage_data.impactPoint = message->impactPoint; + + // + //--------------------------------------------------- + // Figure out how many damage messages there are here + //--------------------------------------------------- + // + DynamicMessage damage_stream( + message, + message->messageLength, + sizeof(*message) + ); + int entry_count; + damage_stream >> entry_count; + + for (int i=0; i> damage_data.damageType >> damage_data.damageAmount; + int subsystem; + damage_stream >> subsystem; + + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Apply the damage to the appropriate damageZone + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + TakeDamageMessage + message( + TakeDamageMessageID, + sizeof(TakeDamageMessage), + shooting_entity, + damage_zone_index, + damage_data, + subsystem + ); + Dispatch(&message); + } + Check_Fpu(); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + Entity::TakeDamageMessageHandler(TakeDamageMessage *message) +{ + // + //------------------------------------- + // YOU MUST CHECK FOR -1 DamageZone!!!! + //------------------------------------- + // + if (!damageZones || message->damageZone == -1) + { + return; + } + + // + //---------------------------------------------------------------------- + // If we have no damage zones allocated, we ignore any damage sent to us + //---------------------------------------------------------------------- + // + Verify(message->damageZone < damageZoneCount); + Verify(message->damageZone >= 0 ); + Check_Pointer(damageZones); + Check(damageZones[message->damageZone]); + damageZones[message->damageZone]->TakeDamage(message->damageData); + Check_Fpu(); +} + +//############################################################################# +// Construction and Destruction +// + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Entity::Entity( + Entity::MakeMessage *creation_message, + Entity::SharedData &virtual_data +): + Simulation(creation_message->classToCreate,virtual_data), + staticVideoSocket(NULL), + dynamicVideoSocket(NULL), + audioSocket(NULL) +{ + Check_Pointer(this); + Check(creation_message); + + // + // Get host manager pointer + // + HostManager *host_manager; + + Check(application); + host_manager = application->GetHostManager(); + Check(host_manager); + + // + //----------------------------- + // Initialize the entity fields + //----------------------------- + // + playerLink = NULL; + resourceID = creation_message->resourceID; + owningPlayer = (Player*)host_manager->GetEntityPointer( + creation_message->owningPlayerID + ); + simulationFlags = creation_message->instanceFlags; + entityID = creation_message->entityID; + ownerID = creation_message->ownerID; + creationTime = Now(); + interestZoneID = creation_message->interestZoneID; + interestCount = 0; + + // initialize attributes + localOrigin = creation_message->localOrigin; + updateOrigin = localOrigin; + localToWorld = localOrigin; + + // initialize camera stuff + cameraOffset = Origin::Identity; + + SetInvalidFlag(); + + // initialize model stuff + lastPerformance = creationTime; + subsystemCount = 0; + subsystemArray = NULL; + damageZones = NULL; + damageZoneCount = 0; + + // + //-------------------------------- + // Allocate the damageZones array + //-------------------------------- + // + + // + // Read In DamageZones and Create DamageZoneID's + // + if (resourceID != ResourceDescription::NullResourceID) + { + ResourceDescription *dmg_res = + application->GetResourceFile()->SearchList( + resourceID, + ResourceDescription::DamageZoneStreamResourceType + ); + + // + //-------------------------------------------- + // Allocate damageZones for this entity only + // if they were defined in the resource + //-------------------------------------------- + // + if (dmg_res) + { + dmg_res->Lock(); + DynamicMemoryStream damage_zone_stream( + dmg_res->resourceAddress, + dmg_res->resourceSize); + + damage_zone_stream >> damageZoneCount; + damageZones = new (::DamageZone(*[damageZoneCount])); + Register_Pointer(damageZones); + dmg_res->Unlock(); + } + } + + // + //--------------------------------------------------------- + // Create a new entity ID and assign ownership to this host + // If (this is a master entity) or + // (this is a dynamic hermit) or + // (this is the initial independent) + //--------------------------------------------------------- + // + if ( + (GetInstance() == MasterInstance) || + (GetInstance() == HermitInstance && IsDynamic()) || + ( + (GetInstance() == IndependantInstance) && + (creation_message->ownerID == NullHostID || + creation_message->ownerID == MapHostID) + ) + ) + { + entityID = host_manager->MakeUniqueEntityID(); + ownerID = host_manager->GetLocalHostID(); + creation_message->entityID = entityID; + creation_message->ownerID = ownerID; + } + + // + //-------------------------------------------- + // Tell the host manager about this new entity + //-------------------------------------------- + // + Check(host_manager); + host_manager->NotifyOfEntityCreation(this, creation_message); + + Check_Fpu(); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Entity* + Entity::Make(Entity::MakeMessage *creation_message) +{ + return new Entity(creation_message,DefaultData); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + Entity::CreateMakeMessage( + MakeMessage *creation_message, +#if DEBUG_LEVEL>0 + NotationFile *model_file, +#else + NotationFile *, +#endif + const ResourceDirectories * + ) +{ + Check(creation_message); + Check(model_file); + char *p; + + creation_message->messageLength = sizeof(Entity::MakeMessage); + creation_message->messageID = Entity::MakeMessageID; + creation_message->owningPlayerID = EntityID::Null; + creation_message->messageFlags = 0; + creation_message->classToCreate = RegisteredClass::TrivialEntityClassID; + creation_message->instanceFlags = 0; //DefaultFlags; + + if ((p = strtok(NULL, " ")) == NULL) + { + cerr << "X position coordinate missing!\n"; + return False; + } + creation_message->localOrigin.linearPosition.x = atof(p); + if ((p = strtok(NULL, " ")) == NULL) + { + cerr << "Y position coordinate missing!\n"; + return False; + } + creation_message->localOrigin.linearPosition.y = atof(p); + if ((p = strtok(NULL, " ")) == NULL) + { + cerr << "Z position coordinate missing!\n"; + return False; + } + creation_message->localOrigin.linearPosition.z = atof(p); + + EulerAngles pyr; + if ((p = strtok(NULL, " ")) == NULL) + { + cerr << "Pitch missing!\n"; + return False; + } + pyr.pitch = atof(p); + if ((p = strtok(NULL, " ")) == NULL) + { + cerr << "Yaw missing!\n"; + return False; + } + pyr.yaw = atof(p); + if ((p = strtok(NULL, " ")) == NULL) + { + cerr << "Roll missing!\n"; + return False; + } + pyr.roll = atof(p); + creation_message->localOrigin.angularPosition = pyr; + return True; +} + + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + Entity::CreateMakeMapMessage( + MakeMapMessage *creation_message, + ResourceDescription::ResourceID resource_id, +#if DEBUG_LEVEL>0 + NotationFile *model_file, +#else + NotationFile *, +#endif + const ResourceDirectories * + ) +{ + Check(creation_message); + Check(model_file); + char *p; + + creation_message->messageLength = sizeof(Entity::MakeMapMessage); + creation_message->messageID = Entity::MakeMessageID; + creation_message->messageFlags = Entity::MakeMessage::MapStreamMarkerFlag; + + + if ((p = strtok(NULL, " ")) == NULL) + { + cerr << "X position coordinate missing!\n"; + return False; + } + creation_message->localOrigin.linearPosition.x = atof(p); + if ((p = strtok(NULL, " ")) == NULL) + { + cerr << "Y position coordinate missing!\n"; + return False; + } + creation_message->localOrigin.linearPosition.y = atof(p); + if ((p = strtok(NULL, " ")) == NULL) + { + cerr << "Z position coordinate missing!\n"; + return False; + } + creation_message->localOrigin.linearPosition.z = atof(p); + + EulerAngles pyr = EulerAngles::Identity; +#if 0 + if ((p = strtok(NULL, " ")) == NULL) + { + cerr << "Pitch missing!\n"; + return False; + } + pyr.pitch = atof(p); + if ((p = strtok(NULL, " ")) == NULL) + { + cerr << "Yaw missing!\n"; + return False; + } + pyr.yaw = atof(p); + if ((p = strtok(NULL, " ")) == NULL) + { + cerr << "Roll missing!\n"; + return False; + } + pyr.roll = atof(p); +#endif + + creation_message->localOrigin.angularPosition = pyr; + creation_message->resourceID = resource_id; + + return True; + +} + + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + Entity::DestroyEntityMessageHandler(Message *) +{ + CondemnToDeathRow(); + Check_Fpu(); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Entity::~Entity() +{ + // + // Notify the host manager that we are going away + // + Check(application); + application->GetHostManager()->NotifyOfEntityDestruction(this); + + // + // Delete the subsystem array + // + if (subsystemArray) + { + Check_Pointer(subsystemArray); + for (int i=0; iGetEntityManager(); + Check(entity_manager); + + // + //------------------------------------------------- + // Make sure we are not entered into deathrow twice + //------------------------------------------------- + // + if (!IsCondemned()) + { + entity_manager->deathRow->Add(this); + SetCondemnedFlag(); + NeverExecute(); + } + Check_Fpu(); +} + +//############################################################################# +// Test Support +// + +Logical + Entity::TestInstance() const +{ + return IsDerivedFrom(ClassDerivations); +} + +//########################################################################## +// Renderer Support +// +void + Entity::AddStaticVideoComponent(Component *component) +{ + Check(component); + Check(&staticVideoSocket); + staticVideoSocket.Add(component); + Check_Fpu(); +} + +void + Entity::AddDynamicVideoComponent(Component *component) +{ + Check(component); + Check(&dynamicVideoSocket); + dynamicVideoSocket.Add(component); + Check_Fpu(); +} + +void + Entity::AddAudioComponent(Component *component) +{ + Check(component); + Check(&audioSocket); + audioSocket.Add(component); + Check_Fpu(); +} + +Enumeration + Entity::GetAudioRepresentation(Entity *linked_entity) +{ + Check(this); + Check(linked_entity); + + return + (linked_entity == this) ? + InternalAudioRepresentation : ExternalAudioRepresentation; +} + +//############################################################################# +// Interest Support +// +void + Entity::BecomeInteresting() +{ + BecomeInterestingMessage + message( + Entity::BecomeInterestingMessageID, + sizeof(BecomeInterestingMessage) + ); + + Receiver::Dispatch(&message); + Check_Fpu(); +} + +void + Entity::BecomeInterestingMessageHandler() +{ + ++interestCount; + Check_Fpu(); +} + +void + Entity::BecomeUninterestingMessageHandler() +{ + --interestCount; + Check_Fpu(); +} + +Enumeration + Entity::GetInterestPriority(Entity *linked_entity) +{ + Check(this); + Check(linked_entity); + + return (linked_entity == this) ? HighInterestPriority : LowInterestPriority; +} + + + +int + Entity::GetDamageZoneIndex(const CString &damage_zone_name) const +{ + + for(int ii=0;iidamageZoneName.Compare(damage_zone_name) == 0) + { + return ii; + } + } + return -1; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +int + Entity::CreateDamageZoneStream( + ResourceFile *resource_file, + const char *model_name, + NotationFile *model_file, + const ResourceDirectories *directories + ) +{ + Check(resource_file); + Check_Pointer(model_name); + Check(model_file); + Check_Pointer(directories); + + // + //------------------- + // Find the .dmg file + //------------------- + // + const char* dmg_file_cname; + if ( + !model_file->GetEntry( + "gamedata", + "DamageZones", + &dmg_file_cname + ) + ) + { + cerr << model_name << " is missing .dmg file specification!\n"; + return -1; + } + + CString dmg_filename = + MakePathedFilename(directories->modelDirectory, dmg_file_cname); + + NotationFile *dmg_file = new NotationFile(dmg_filename); + Register_Object(dmg_file); + int page_count = dmg_file->PageCount(); + if (!page_count) + { + cerr << dmg_filename << " is empty or missing!\n"; + Unregister_Object(dmg_file); + delete dmg_file; + return -1; + } + + DynamicMemoryStream damage_stream; + + damage_stream << page_count; + NameList *dmg_namelist = dmg_file->MakePageList(); + Register_Object(dmg_namelist); + + NameList::Entry *dmg_entry = dmg_namelist->GetFirstEntry(); + + CString dmg_page_name; + while(dmg_entry) + { + dmg_page_name = dmg_entry->GetName(); + DamageZone::CreateStreamedDamageZone( + model_file, + model_name, + NULL, + dmg_page_name, + &damage_stream, + dmg_file, + directories + ); + dmg_entry = dmg_entry->GetNextEntry(); + } + + // + //~~~~~~~~~~~~~~~~~~~~~~~ + // Add Stream to Resource + //~~~~~~~~~~~~~~~~~~~~~~~ + // + ResourceDescription *new_res = + resource_file->AddResourceMemoryStream( + model_name, + ResourceDescription::DamageZoneStreamResourceType, + 1, + ResourceDescription::Preload, + &damage_stream + ); + Check(new_res); + + Unregister_Object(dmg_file); + delete dmg_file; + Unregister_Object(dmg_namelist); + delete dmg_namelist; + + return new_res->resourceID; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +ResourceDescription::ResourceID + Entity::CreateExplosionTableStream( + ResourceFile *resource_file, + const char *model_name, + NotationFile *model_file, + const ResourceDirectories *directories + ) +{ + Check(resource_file); + Check_Pointer(model_name); + Check(model_file); + Check_Pointer(directories); + // + //~~~~~~~~~~~~~~~~~ + // Find *.dmg file + //~~~~~~~~~~~~~~~~~ + // + const char *entry_data; + if (!model_file->GetEntry( + "gamedata", + "DamageZones", + &entry_data + ) + ) + { + DEBUG_STREAM << model_name << " is missing .dmg file specification!\n"; + return -1; + } + CString filename = + MakePathedFilename(directories->modelDirectory, entry_data); + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Make a notation file of the DMG Entries + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + NotationFile *dmg_file = new NotationFile(filename); + Register_Object(dmg_file); + + if(dmg_file->IsEmpty()) + { + DEBUG_STREAM << model_name << " *.dmg file is empty or missing!\n"; + Unregister_Object(dmg_file); + delete dmg_file; + return -1; + } + + DynamicMemoryStream explosion_stream; + NameList *dmg_namelist = dmg_file->MakePageList(); + Register_Object(dmg_namelist); + + NameList::Entry *dmg_entry = dmg_namelist->GetFirstEntry(); + while(dmg_entry) + { + const char *entry_data; + if (dmg_file->GetEntry( + dmg_entry->GetName(), + "ExplosionTable", + &entry_data + ) + ) + { + CString filename = + MakePathedFilename(directories->modelDirectory, entry_data); + + NotationFile *exp_file = new NotationFile(filename); + Register_Object(exp_file); + + if(exp_file->IsEmpty()) + { + cerr<GetNextEntry(); + } + + ResourceDescription *new_res = + resource_file->AddResourceMemoryStream( + model_name, + ResourceDescription::ExplosionTableStreamResourceType, + 1, + ResourceDescription::Preload, + &explosion_stream + ); + Check(new_res); + Unregister_Object(dmg_file); + delete dmg_file; + Unregister_Object(dmg_namelist); + delete dmg_namelist; + return new_res->resourceID; +} + +#if defined(TEST_CLASS) +# include "entity.tcp" +#endif diff --git a/CODE/RP/MUNGA/ENTITY.HPP b/CODE/RP/MUNGA/ENTITY.HPP new file mode 100644 index 0000000..874f829 --- /dev/null +++ b/CODE/RP/MUNGA/ENTITY.HPP @@ -0,0 +1,645 @@ +//===========================================================================// +// File: entity.hpp // +// Project: MUNGA Brick: Entity Manager // +// Contents: Interface specification for entity class // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 11/29/94 JMA Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(ENTITY_HPP) +# define ENTITY_HPP + +# if !defined(SIMULATE_HPP) +# include +# endif + +# if !defined(ORIGIN_HPP) +# include +# endif + +# if !defined(LINMTRX_HPP) +# include +# endif + + class Player; + class NotationFile; + class DamageZone; + class Damage; + class Subsystem; + +# define ENTITY_CONTINUATION +# include + + //########################################################################## + //########################### Entity ################################# + //########################################################################## + + class Entity: + public Simulation + { + friend class Entity__StaticVideoSocketIterator; + friend class Entity__DynamicVideoSocketIterator; + friend class Entity__AudioSocketIterator; + friend class Entity__GaugeSocketIterator; + friend class Entity__AudioLocationIterator; + + //########################################################################## + // Shared Data support + // + public: + typedef Entity__SharedData SharedData; + SharedData* + GetSharedData(); + + static Derivation ClassDerivations; + + static SharedData DefaultData; + + //########################################################################## + // Message Support + // + public: + enum { + MakeMessageID = Simulation::NextMessageID, + MakeReadyMessageID, + RemakeEntityMessageID, + RemakeReadyMessageID, + RemakeCompleteMessageID, + RemakeIncompleteMessageID, + DestroyEntityMessageID, + TransferEntityMessageID, + TransferCompleteMessageID, + TransferIncompleteMessageID, + BecomeInterestingMessageID, + BecomeUninterestingMessageID, + UpdateMessageID, + SubscribeReplicantMessageID, + UnsubscribeReplicantMessageID, + TakeDamageMessageID, + TakeDamageStreamMessageID, + PlayerLinkMessageID, + NextMessageID + }; + + typedef Entity__Message Message; + typedef Entity__MakeMessage MakeMessage; + typedef Entity__MakeReadyMessage MakeReadyMessage; + typedef Entity__RemakeEntityMessage RemakeEntityMessage; + typedef Entity__RemakeReadyMessage RemakeReadyMessage; + typedef Entity__RemakeCompleteMessage RemakeCompleteMessage; + typedef Entity__RemakeIncompleteMessage RemakeIncompleteMessage; + typedef Entity__DestroyEntityMessage DestroyEntityMessage; + typedef Entity__TransferEntityMessage TransferEntityMessage; + typedef Entity__TransferCompleteMessage TransferCompleteMessage; + typedef Entity__TransferIncompleteMessage TransferIncompleteMessage; + typedef Entity__BecomeInterestingMessage BecomeInterestingMessage; + typedef Entity__BecomeUninterestingMessage BecomeUninterestingMessage; + typedef Entity__UpdateMessage UpdateMessage; + typedef Entity__SubscribeReplicantMessage SubscribeReplicantMessage; + typedef Entity__UnsubscribeReplicantMessage UnsubscribeReplicantMessage; + typedef Entity__TakeDamageMessage TakeDamageMessage; + typedef Entity__TakeDamageStreamMessage TakeDamageStreamMessage; + typedef Entity__PlayerLinkMessage PlayerLinkMessage; + typedef Entity__DynamicMessage DynamicMessage; + typedef Entity__MakeMapMessage MakeMapMessage; + + + void + Receive(Event *event); + + void + LocalDispatch(Message *what) + {Receiver::Receive(Cast_Object(Receiver::Message*,what));} + + void + Dispatch(Receiver::Message *what); + + void + DispatchToReplicant( + Message *what, + HostID host + ); + + void + DispatchToReplicants(Message *what); + + private: + static const HandlerEntry MessageHandlerEntries[]; + + protected: + static MessageHandlerSet MessageHandlers; + + //########################################################################## + // Attribute Support + // + public: + enum { + LocalToWorldAttributeID = Simulation::NextAttributeID, + LocalOriginAttributeID, + DamageZoneCountAttributeID, + DamageZonesAttributeID, + NextAttributeID + }; + + private: + static const IndexEntry AttributePointers[]; + + protected: + static AttributeIndexSet AttributeIndex; + + // + // public attribute declarations go here + // + public: + LinearMatrix localToWorld; + Origin localOrigin; + int damageZoneCount; + DamageZone **damageZones; + + + int + GetDamageZoneIndex(const CString &damage_zone_name) const; + + + // + // virtual access + // + public: + virtual Vector3D + GetWorldLinearVelocity() + {return Vector3D(0.0f, 0.0f, 0.0f);} + virtual Vector3D + GetWorldLinearAcceleration() + {return Vector3D(0.0f, 0.0f, 0.0f);} + + //########################################################################## + // Model Support + // + public: + UpdateMessage* + Execute(const Time &till); + + Subsystem* + GetSubsystem(int index) + { + Check(this); Verify((unsigned)index < subsystemCount); + return subsystemArray[index]; + } + Simulation* + GetSimulation(int index); + int + GetSubsystemCount() + {Check(this); return subsystemCount;} + Subsystem* + FindSubsystem(const char* name); + + typedef void + (Entity::*Performance)(Scalar time_slice); + + typedef Entity__UpdateRecord UpdateRecord; + + void + SetPerformance(Performance performance) + { + Check(this); + activePerformance = (Simulation::Performance)performance; + } + + enum { + EntitySubsystemID = -1 + }; + + static int + FindSubsytemID( + const char *model_name, + const char *subsystem_name + ); + public: + + enum { + DamageZoneUpdateModelBit = Simulation::NextUpdateModelBit, + NextUpdateModelBit + }; + + enum { + DamageZoneUpdateModelFlag = 1 << DamageZoneUpdateModelBit + }; + + Logical + DamageZoneUpdateModelFlagSet() + {Check(this); return (updateModel & DamageZoneUpdateModelFlag); } + + protected: + + void + WriteUpdateRecord( + Simulation::UpdateRecord *message, + int update_model + ); + void + UpdateMessageHandler(UpdateMessage *message); + + void + ReadUpdateRecord(Simulation::UpdateRecord *message); + + void + ReadDamageUpdateRecord(Simulation::UpdateRecord *update_record); + + void + WriteDamageUpdateRecord(Simulation::UpdateRecord *update_record); + + void + PerformAndWatch( + const Time &till, + MemoryStream *update_stream + ); + + int + subsystemCount; + Subsystem + **subsystemArray; + Origin + updateOrigin; + + void + TakeDamageStreamMessageHandler(TakeDamageStreamMessage *message); + void + TakeDamageMessageHandler(TakeDamageMessage *message); + void + PlayerLinkMessageHandler(PlayerLinkMessage *message); + + //########################################################################## + // Renderer Support + // + public: + void + AddStaticVideoComponent(Component *component); + void + AddDynamicVideoComponent(Component *component); + void + AddAudioComponent(Component *component); + + typedef Entity__StaticVideoSocketIterator + StaticVideoSocketIterator; + typedef Entity__DynamicVideoSocketIterator + DynamicVideoSocketIterator; + typedef Entity__AudioSocketIterator + AudioSocketIterator; + + virtual Enumeration + GetAudioRepresentation(Entity *linked_entity); + + private: + SChainOf + staticVideoSocket; + SChainOf + dynamicVideoSocket; + SChainOf + audioSocket; + + //########################################################################## + // Flag Support + // + public: + // + // MasterInstance - created on owning host, replicated on remote hosts, + // sends updates to replicants + // ReplicantInstance - created on remote hosts, receives updates from + // MasterInstance + // IndependantInstance - created on owning host, replicated on remote + // hosts, never receives updates from MasterInstance + // HermitInstance - created on owning host, is not replicated, does + // send updates + // + enum { + InstanceBits = Simulation::NextBit, + ValidBit = InstanceBits+2, + TransferableBit, + InterestBit, + InterestLockedBit, + DynamicBit, + TrappedBit, + StatueBit, + MapBit, + PreRunBit, + CondemnedBit, + NextBit + }; + enum Instance + { + MasterInstance=0, + ReplicantInstance=1<entityID = entityID; + message->interestZoneID = interestZoneID; + message->ownerID = ownerID; + } + + + +# include +# undef ENTITY_CONTINUATION + +#endif + diff --git a/CODE/RP/MUNGA/ENTITY.TCP b/CODE/RP/MUNGA/ENTITY.TCP new file mode 100644 index 0000000..40d09ea --- /dev/null +++ b/CODE/RP/MUNGA/ENTITY.TCP @@ -0,0 +1,255 @@ +//===========================================================================// +// File: entity.tst // +// Project: MUNGA Brick: Entity Manager // +// Contents: Implementation details of the entity class // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 12/28/94 JMA Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1994, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#include "entity.thp" + +//############################################################################# +// Shared Data Support +// +Derivation + TestEntity::ClassDerivations(Entity::ClassDerivations,"TestEntity"); + +TestEntity::SharedData + TestEntity::DefaultData( + TestEntity::ClassDerivations, + TestEntity::MessageHandlers, + TestEntity::AttributeIndex, + 1, + (Entity::MakeHandler)TestEntity::Make + ); + +//############################################################################# +// Message Support +// +const Receiver::HandlerEntry + TestEntity::MessageHandlerEntries[]= +{ + { + TestEntity::TestMessageID, + "Test", + (TestEntity::Handler)&TestEntity::TestMessageHandler + } +}; + +TestEntity::MessageHandlerSet + TestEntity::MessageHandlers( + ELEMENTS(TestEntity::MessageHandlerEntries), + TestEntity::MessageHandlerEntries, + Entity::MessageHandlers + ); + +void + TestEntity::TestMessageHandler(TestEntity::Message *) +{ + localOrigin = Point3D(2.0,2.0,2.0); +}; + +void + TestEntity::Tester() +{ + TestEntity::Message message( + TestEntity::TestMessageID, + sizeof(TestEntity::Message) + ); + Dispatch(&message); +} + +//############################################################################# +// Attribute Support +// +const TestEntity::IndexEntry + TestEntity::AttributePointers[]= +{ + { + TestEntity::VelocityVectorAttributeID, + "VelocityVector", + (Entity::AttributePointer)&TestEntity::velocityVector + } +}; + +TestEntity::AttributeIndexSet + TestEntity::AttributeIndex( + ELEMENTS(TestEntity::AttributePointers), + TestEntity::AttributePointers, + Entity::AttributeIndex + ); + +//############################################################################# +// Model Support +// +void + TestEntity::Model( + Scalar time_slice, + MemoryStream &update_stream + ) +{ + Vector3D diff; + diff.Multiply(velocityVector,time_slice); + localOrigin.linearPosition += diff; + localToWorld = localOrigin.linearPosition; + if (diff.LengthSquared() >= 0.009f) + { + UpdateRecord* update = (UpdateRecord*)update_stream.GetPointer(); + WriteUpdateRecord(update, 0); + update_stream.AdvancePointer(update->recordLength); + } +} + +//############################################################################# +// Construction and Destruction +// + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +TestEntity::TestEntity( + TestEntity::MakeMessage *creation_message, + TestEntity::SharedData &virtual_data +): + Entity(creation_message,virtual_data) +{ + SetValidFlag(); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +TestEntity* + TestEntity::Make(TestEntity::MakeMessage *creation_message) +{ + return new TestEntity(creation_message); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +TestEntity::~TestEntity() +{ +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + Entity::TestClass() +{ + DEBUG_STREAM << "Starting Entity test...\n"; + + // + //------------------ + // Test construction + //------------------ + // + TestEntity::MakeMessage + message1( + TestEntity::MakeMessageID, + sizeof(TestEntity::MakeMessage), + TestEntity::TrivialEntityClassID, + EntityID::Null, + 0, + TestEntity::DefaultFlags, + Origin::Identity + ); + TestEntity *test_entity = TestEntity::Make(&message1); + Register_Object(test_entity); + + // + //--------------- + // Test messaging + //--------------- + // + test_entity->Tester(); + Test(test_entity->localOrigin.linearPosition == Point3D(2.0f,2.0f,2.0f)); + + // + //------------------------------------------------------------ + // Try posting a message through the application to the object + //------------------------------------------------------------ + // + application->ProcessAllEvents(); + test_entity->localOrigin.linearPosition.x = 3.0f; + TestEntity::Message message2( + TestEntity::TestMessageID, + sizeof(TestEntity::Message) + ); + application->Post(0, test_entity, &message2); + application->ProcessOneEvent(); + Test(test_entity->localOrigin.linearPosition == Point3D(2.0f,2.0f,2.0f)); + + // + //------------------------------------------------ + // Try sending a timed event through to the object + //------------------------------------------------ + // + test_entity->localOrigin.linearPosition.x = 3.0f; + Time t = Now(); + t += 0.5f; + application->Post(0, test_entity, &message2, t); + Time t2 = t; + t2 += 0.1f; + while (!application->ProcessOneEvent()) + { + Test(Now() < t2); + } + Scalar f = Now() - t; + Test(test_entity->localOrigin.linearPosition == Point3D(2.0f,2.0f,2.0f)); + Test(Abs(f) < 0.06f); + + // + //------------------------ + // Test attribute pointers + //------------------------ + // + test_entity->localOrigin = Point3D(1.0f,1.0f,1.0f); + Origin *origin = + (Origin*)test_entity->GetAttributePointer(LocalOriginAttributeID); + Test(origin->linearPosition == Point3D(1.0f,1.0f,1.0f)); + + test_entity->velocityVector = Vector3D(0.0f,0.0f,1.0f); + Vector3D *velocity = + (Vector3D*)test_entity-> + GetAttributePointer(TestEntity::VelocityVectorAttributeID); + Test(*velocity == Vector3D(0.0f,0.0f,1.0f)); + + // + //--------------------- + // Test Model execution + //--------------------- + // + test_entity->Perform(0.1f); + Test(origin->linearPosition == Point3D(1.0f,1.0f,1.0f)); + test_entity->SetPerformance(&TestEntity::Model); + test_entity->Perform(0.05f); + Test(origin->linearPosition == Point3D(1.0f,1.0f,1.05f)); + + // + //------------------------------- + // Test Update message generation + //------------------------------- + // + t = test_entity->creationTime; + t += 0.1f; + UpdateMessage *update = test_entity->Execute(t); + Test(update); +// Test(update->localOrigin.linearPosition == Point3D(1.0f,1.0f,1.15f)); +// Unregister_Object(update); +// delete update; + + // + //----------------- + // Test destruction + //----------------- + // + Unregister_Object(test_entity); + delete test_entity; + + return True; +} + diff --git a/CODE/RP/MUNGA/ENTITY.THP b/CODE/RP/MUNGA/ENTITY.THP new file mode 100644 index 0000000..4708379 --- /dev/null +++ b/CODE/RP/MUNGA/ENTITY.THP @@ -0,0 +1,118 @@ +//===========================================================================// +// File: tstentty.hh // +// Project: MUNGA Brick: Entity Manager // +// Contents: class definition of test entity // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 12/28/94 JMA Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1994, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(TSTENTTY_HPP) +# define TSTENTTY_HPP + +# if !defined(ENTITY_HPP) +# include "entity.hpp" +# endif + + class TestEntity: + public Entity + { + //########################################################################## + // Shared Data Support + // + public: + SharedData* + GetSharedData() + {return (SharedData*)sharedData;} + + static Derivation ClassDerivations; + + static SharedData DefaultData; + + //########################################################################## + // Message Support + // + public: + enum { + TestMessageID = Entity::NextMessageID, + NextMessageID + }; + + private: + static const HandlerEntry MessageHandlerEntries[]; + + protected: + static MessageHandlerSet MessageHandlers; + + public: + void TestMessageHandler(Message *message); + void Tester(); + + //########################################################################## + // Attribute Support + // + public: + enum { + VelocityVectorAttributeID = Entity::NextAttributeID, + NextAttributeID + }; + + private: + static const IndexEntry AttributePointers[]; + static const HandlerEntry AttributeHandlerEntries[]; + + public: + static AttributeIndexSet AttributeIndex; + + // + // public attribute declarations go here + // + public: + Vector3D velocityVector; + + //########################################################################## + // Model Support + // + public: + typedef void + (TestEntity::*Performance)( + Scalar time_slice, + MemoryStream &update_stream + ); + void + SetPerformance(Performance performance) + { + Check(this); + activePerformance = (Simulation::Performance)performance; + } + + void + Model( + Scalar time_slice, + MemoryStream &update_stream + ); + + //########################################################################## + // Construction and Destruction + // + public: + static TestEntity* + Make(MakeMessage *creation_message); + + protected: + TestEntity( + MakeMessage *creation_message, + SharedData &virtual_data = DefaultData + ); + + public: + ~TestEntity(); + }; + +#endif + diff --git a/CODE/RP/MUNGA/ENTITY2.CPP b/CODE/RP/MUNGA/ENTITY2.CPP new file mode 100644 index 0000000..d660c17 --- /dev/null +++ b/CODE/RP/MUNGA/ENTITY2.CPP @@ -0,0 +1,129 @@ +//===========================================================================// +// File: entity2.cc // +// Project: MUNGA Brick: Entity Manager // +// Contents: Implementation details of the entity class // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 11/29/94 JMA Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(HOSTMGR_HPP) +# include +#endif + +#if !defined(REGISTRY_HPP) +# include +#endif + +#if !defined(APP_HPP) + #include +#endif + +#if !defined(NAMELIST_HPP) + #include +#endif + +#if !defined(NOTATION_HPP) + #include +#endif + +#if !defined(ENTITY_HPP) + #include +#endif + +//########################################################################## +//############# Entity::StaticVideoSocketIterator #################### +//########################################################################## + +Entity__StaticVideoSocketIterator::Entity__StaticVideoSocketIterator( + Entity *entity +): + SChainIteratorOf(&entity->staticVideoSocket) +{ +} + +Entity__StaticVideoSocketIterator::Entity__StaticVideoSocketIterator( + const Entity__StaticVideoSocketIterator &iterator +): + SChainIteratorOf(iterator) +{ +} + +Entity__StaticVideoSocketIterator::~Entity__StaticVideoSocketIterator() +{ +} + +//########################################################################## +//############# Entity::DynamicVideoSocketIterator ################### +//########################################################################## + +Entity__DynamicVideoSocketIterator::Entity__DynamicVideoSocketIterator( + Entity *entity +): + SChainIteratorOf(&entity->dynamicVideoSocket) +{ +} + +Entity__DynamicVideoSocketIterator::Entity__DynamicVideoSocketIterator( + const Entity__DynamicVideoSocketIterator &iterator +): + SChainIteratorOf(iterator) +{ +} + +Entity__DynamicVideoSocketIterator::~Entity__DynamicVideoSocketIterator() +{ +} + +//########################################################################## +//################ Entity::AudioSocketIterator ####################### +//########################################################################## + +Entity__AudioSocketIterator::Entity__AudioSocketIterator(Entity *entity): + SChainIteratorOf(&entity->audioSocket) +{ +} + +Entity__AudioSocketIterator::~Entity__AudioSocketIterator() +{ +} + +int + Find_Subsystem_Index( + NotationFile *file, + const char* name + ) +{ + Check(file); + Check_Pointer(name); + + NameList *namelist = file->MakePageList(); + Register_Object(namelist); + NameList::Entry *entry = namelist->GetFirstEntry(); + + int count = 0; + while (entry) + { + if (!strcmp(name, entry->GetName())) + { + Unregister_Object(namelist); + delete namelist; + return count; + } + ++count; + entry = entry->GetNextEntry(); + } + + Unregister_Object(namelist); + delete namelist; + return (!strcmp(name, "None")) ? count : -1; +} + diff --git a/CODE/RP/MUNGA/ENTITY2.HPP b/CODE/RP/MUNGA/ENTITY2.HPP new file mode 100644 index 0000000..6766f8f --- /dev/null +++ b/CODE/RP/MUNGA/ENTITY2.HPP @@ -0,0 +1,163 @@ +//===========================================================================// +// File: entity2.hh // +// Project: MUNGA Brick: Entity Manager // +// Contents: Interface specification for entity class // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 11/29/94 JMA Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1994, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if defined(ENTITY_CONTINUATION) + +# if !defined(ENTITYID_HPP) +# include +# endif + + class Entity; + class Entity__SharedData; + class Entity__MakeMessage; + class Entity__TakeDamageMessage; + class Entity__PlayerLinkMessage; + class Entity__DynamicMessage; + class Entity__UpdateMessage; + class Entity__MakeMapMessage; + class Entity__TakeDamageStreamMessage; + class Entity__DestroyEntityMessage; + + class EntityID; + + // + //--------------------------------------------------- + // Support types for entity identity and host manager + //--------------------------------------------------- + // + + //########################################################################## + //####################### Entity::Message ############################ + //########################################################################## + + class Entity__Message: + public Receiver::Message + { + public: + // + // The following fields need to be filled in by the sending manager + // + enum { + DontSpoolBit = Receiver::Message::NextBit, + NextBit + }; + + enum { + DontSpoolFlag = 1 << DontSpoolBit + }; + + + // This field will be already set for map entities + EntityID + entityID; + + InterestZoneID + interestZoneID; + HostID + ownerID; + + Entity__Message( + Receiver::MessageID messageID, + size_t length + ): + Receiver::Message(messageID, length), + entityID(EntityID::Null), + interestZoneID(NullInterestZoneID), + ownerID(NullHostID) + {} + + // This constructor exists for constructing map entities + Entity__Message( + Receiver::MessageID messageID, + size_t length, + const EntityID &entity_ID + ): + Receiver::Message(messageID, length), + entityID(entity_ID), + interestZoneID(NullInterestZoneID), + ownerID(NullHostID) + {} + }; + + // + // Various typedefs for unimplemented messages + // + typedef Entity__Message Entity__MakeReadyMessage; + typedef Entity__Message Entity__RemakeEntityMessage; + typedef Entity__Message Entity__RemakeReadyMessage; + typedef Entity__Message Entity__RemakeCompleteMessage; + typedef Entity__Message Entity__RemakeIncompleteMessage; + typedef Entity__Message Entity__TransferEntityMessage; + typedef Entity__Message Entity__TransferCompleteMessage; + typedef Entity__Message Entity__TransferIncompleteMessage; + typedef Entity__Message Entity__BecomeInterestingMessage; + typedef Entity__Message Entity__BecomeUninterestingMessage; + typedef Entity__Message Entity__SubscribeReplicantMessage; + typedef Entity__Message Entity__UnsubscribeReplicantMessage; + + //########################################################################## + //############# Entity::StaticVideoSocketIterator #################### + //########################################################################## + + class Entity__StaticVideoSocketIterator: + public SChainIteratorOf + { + public: + Entity__StaticVideoSocketIterator(Entity *entity); + Entity__StaticVideoSocketIterator( + const Entity__StaticVideoSocketIterator &iterator + ); + ~Entity__StaticVideoSocketIterator(); + }; + + //########################################################################## + //############ Entity::DynamicVideoSocketIterator #################### + //########################################################################## + + class Entity__DynamicVideoSocketIterator: + public SChainIteratorOf + { + public: + Entity__DynamicVideoSocketIterator(Entity *entity); + Entity__DynamicVideoSocketIterator( + const Entity__DynamicVideoSocketIterator &iterator + ); + ~Entity__DynamicVideoSocketIterator(); + }; + + //########################################################################## + //################ Entity::AudioSocketIterator ####################### + //########################################################################## + + class Entity__AudioSocketIterator: + public SChainIteratorOf + { + public: + Entity__AudioSocketIterator(Entity *entity); + ~Entity__AudioSocketIterator(); + }; + + //########################################################################## + //#################### Entity::UpdateRecord ########################## + //########################################################################## + + struct Entity__UpdateRecord: + public Simulation__UpdateRecord + { + public: + Origin localOrigin; + }; + +#endif + diff --git a/CODE/RP/MUNGA/ENTITY3.HPP b/CODE/RP/MUNGA/ENTITY3.HPP new file mode 100644 index 0000000..3523d82 --- /dev/null +++ b/CODE/RP/MUNGA/ENTITY3.HPP @@ -0,0 +1,341 @@ +//===========================================================================// +// File: entity3.hh // +// Project: MUNGA Brick: Entity Manager // +// Contents: Interface specification for entity class // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 11/29/94 JMA Initial coding. // +// 12/14/95 GDU Revised TakeDamage message // +//---------------------------------------------------------------------------// +// Copyright (C) 1994, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if defined(ENTITY_CONTINUATION) + + #if !defined(DAMAGE_HPP) + #include + #endif + + //########################################################################## + //#################### Entity::SharedData ########################### + //########################################################################## + + class Entity__SharedData: + public Simulation::SharedData + { + public: + Entity__SharedData( + Derivation& derivation, + Receiver::MessageHandlerSet &message_handlers, + Entity::AttributeIndexSet &attribute_index, + int state_count, + Entity::MakeHandler make_handler + ): + Simulation::SharedData( + derivation, + message_handlers, + attribute_index, + state_count + ), + makeHandler(make_handler) + {} + + Entity::MakeHandler makeHandler; + }; + + inline Entity::SharedData* + Entity::GetSharedData() + {return Cast_Object(SharedData*,sharedData);} + + //########################################################################## + //##################### Entity::MakeMessage ########################## + //########################################################################## + + class Entity__MakeMessage: + public Entity::Message + { + public: + enum { + MapStreamMarkerBit = Entity::Message::NextBit, + NextBit + }; + + enum { + MapStreamMarkerFlag = 1 << MapStreamMarkerBit + }; + + Entity::ClassID + classToCreate; + EntityID + owningPlayerID; + ResourceDescription::ResourceID + resourceID; + LWord + instanceFlags; + Origin + localOrigin; + + Entity__MakeMessage( + Receiver::MessageID message_ID, + size_t length, + Entity::ClassID class_ID, + const EntityID &owner_ID, + ResourceDescription::ResourceID resource_ID, + LWord instance_flags, + const Origin &origin + ): + Entity::Message(message_ID, length), + classToCreate(class_ID), + owningPlayerID(owner_ID), + resourceID(resource_ID), + instanceFlags(instance_flags), + localOrigin(origin) + {} + Entity__MakeMessage( + Receiver::MessageID message_ID, + size_t length, + const EntityID &entity_ID, + Entity::ClassID class_ID, + const EntityID &owner_ID, + ResourceDescription::ResourceID resource_ID, + LWord instance_flags, + const Origin &origin + ): + Entity::Message(message_ID, length, entity_ID), + classToCreate(class_ID), + owningPlayerID(owner_ID), + resourceID(resource_ID), + instanceFlags(instance_flags), + localOrigin(origin) + {} + }; + + //########################################################################## + //#################### Entity::UpdateMessage ######################### + //########################################################################## + + class Entity__UpdateMessage: + public Entity::Message + { + public: + Entity__UpdateMessage( + Receiver::MessageID message_ID, + size_t length + ): + Entity::Message(message_ID, length) + {messageFlags &= ~ReliableFlag;} + }; + + //########################################################################## + //################## Entity::TakeDamageMessage ####################### + //########################################################################## + + class Entity__TakeDamageMessage: + public Entity::Message + { + public: + EntityID + inflictingEntity; + + // WARNING: + // Since the current collision system cannot resolve the damage zone of + // entities with multiple damage zones, specializations of Entity's + // TakeDamage message handler are responsible for handling an invalid zone. + // Mechs use cylinder lookup table. + // For BattleTech, damage zones are only valid via reticle based weapons. + // Due to existing RP implementation, damageZone is not an optional + // arg to the constructor. + + int + damageZone; + Logical invalidDamageZone; + + Damage + damageData; + + + // NOTE: + // BattleTech's message manager needs to know the subsystemID of the + // inflicting weapon in order to bundle explosion resource IDs. + + int inflictingSubsystemID; + Logical invalidSubsystem; + + Entity__TakeDamageMessage( + Receiver::MessageID message_ID, + size_t length, + const EntityID &entity_ID, + int damage_zone, + Damage &damage + ): + Entity::Message(message_ID, length), + inflictingEntity(entity_ID), + damageZone(damage_zone), + damageData(damage), + invalidDamageZone(damageZone<0), + inflictingSubsystemID(-1), + invalidSubsystem(inflictingSubsystemID<0) + + { } + + Entity__TakeDamageMessage( + Receiver::MessageID message_ID, + size_t length, + const EntityID &entity_ID, + int damage_zone, + Damage &damage, + int inflicting_subsystem_ID + ): + Entity::Message(message_ID, length), + inflictingEntity(entity_ID), + damageZone(damage_zone), + damageData(damage), + invalidDamageZone(damageZone<0), + inflictingSubsystemID(inflicting_subsystem_ID), + invalidSubsystem(inflictingSubsystemID<0) + { } + }; + + //########################################################################## + //############### Entity::TakeDamageStreamMessage ##################### + //########################################################################## + + class Entity__TakeDamageStreamMessage : + public Entity::Message + { + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Holds A Group Of Damage Messages with some Common Fields + // used for instantaneous hit weapons + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + public: + Point3D + impactPoint; + int + damageZoneIndex; + EntityID + shootingEntity; + + Entity__TakeDamageStreamMessage( + Entity::MessageID message_ID, + size_t message_size, + const EntityID &shooting_entity, + int damage_zone_index, + const Point3D &impact_point + ): + Entity::Message(message_ID, message_size), + shootingEntity(shooting_entity), + damageZoneIndex(damage_zone_index), + impactPoint(impact_point) + {} + + ~Entity__TakeDamageStreamMessage() + {} + }; + + //########################################################################## + //################## Entity::PlayerLinkMessage ####################### + //########################################################################## + + + class Entity__PlayerLinkMessage: + public Entity::Message + { + public: + EntityID + playerID; + + Entity__PlayerLinkMessage( + Receiver::MessageID message_ID, + size_t length, + EntityID player_id + ): + Entity::Message(message_ID, length) + {playerID = player_id;} + }; + // Tool support function + + extern int + Find_Subsystem_Index( + NotationFile *file, + const char* name + ); + + //########################################################################## + //################## Entity::PlayerLinkMessage ####################### + //########################################################################## + + class Entity__DestroyEntityMessage: + public Entity::Message + { + public: + Entity__DestroyEntityMessage( + Receiver::MessageID message_ID, + size_t length + ): + Entity::Message(message_ID, length) + {} + }; + + //########################################################################## + //################# Entity::DynamicMessage ########################### + //########################################################################## + + class Entity__DynamicMessage : + public Receiver::DynamicMessage + { + public: + Entity__DynamicMessage() + { } + + Entity__DynamicMessage( + Entity::MessageID message_ID, + size_t message_size = sizeof(Entity::Message) + ) : Receiver::DynamicMessage(message_ID, message_size) + { } + + Entity__DynamicMessage( + void *message_ptr, + size_t stream_size, + size_t initial_offset = sizeof(Entity::Message) + ) : Receiver::DynamicMessage(message_ptr, stream_size, initial_offset) + { } + + ~Entity__DynamicMessage() + { } + + }; + + + + //########################################################################## + //####################### Entity::MakeMapMessage ##################### + //########################################################################## + + class Entity__MakeMapMessage: + public Receiver::Message + { + public: + // + // The following fields need to be filled in by the sending manager + // + + ResourceDescription::ResourceID + resourceID; + Origin + localOrigin; + + Entity__MakeMapMessage( + Receiver::MessageID messageID, + size_t length + ): + Receiver::Message(messageID, length) + {} + }; + +#endif + diff --git a/CODE/RP/MUNGA/ENTITYID.CPP b/CODE/RP/MUNGA/ENTITYID.CPP new file mode 100644 index 0000000..33c50a8 --- /dev/null +++ b/CODE/RP/MUNGA/ENTITYID.CPP @@ -0,0 +1,226 @@ +//===========================================================================// +// File: entity2.cc // +// Project: MUNGA Brick: Entity Manager // +// Contents: Implementation details of the entity class // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 11/29/94 JMA Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(ENTITYID_HPP) +# include +#endif + +//############################################################################# +//############################# EntityID ################################ +//############################################################################# + +EntityID + EntityID::Null; + +EntityID::LocalID + EntityID::LocalNull = 0; + +#if defined(USE_SIGNATURE) + int + Is_Signature_Bad(const volatile EntityID *) + { + return False; + } +#endif + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +EntityID::EntityID(): + hostID(NullHostID), + localID(LocalNull) +{ +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +EntityID::EntityID(const EntityID &entityID): + hostID(entityID.hostID), + localID(entityID.localID) +{ +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +EntityID::EntityID(HostID hostID) +{ + this->hostID = hostID; + this->localID = LocalNull; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +EntityID::EntityID( + HostID hostID, + LocalID localID +) +{ + this->hostID = hostID; + this->localID = localID; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + EntityID::TestInstance() const +{ + return True; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +EntityID& + EntityID::operator=(const EntityID &entityID) +{ + hostID = entityID.hostID; + localID = entityID.localID; + + return *this; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +EntityID& + EntityID::operator+=(const EntityID &entityID) +{ + Check(this); + Check(&entityID); + + hostID += entityID.hostID; + localID += entityID.localID; + return *this; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +EntityID + EntityID::operator-(const EntityID &entityID) const +{ + Check(this); + Check(&entityID); + + return EntityID( + (HostID)(hostID - entityID.hostID), + (HostID)(localID - entityID.localID) + ); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +EntityID& + EntityID::operator-=(const EntityID &entityID) +{ + Check(this); + Check(&entityID); + + hostID -= entityID.hostID; + localID -= entityID.localID; + return *this; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +EntityID& + EntityID::operator+=(LocalID i) +{ + Check(this); + + localID += i; + return *this; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +EntityID& + EntityID::operator-=(LocalID i) +{ + Check(this); + + localID -= i; + return *this; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + EntityID::operator<(const EntityID &entityID) const +{ + return + (hostID == entityID.hostID) ? + (localID < entityID.localID) : + (hostID < entityID.hostID); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + EntityID::operator<=(const EntityID &entityID) const +{ + return + (hostID == entityID.hostID) ? + (localID <= entityID.localID) : + (hostID < entityID.hostID); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + EntityID::operator>(const EntityID &entityID) const +{ + return + (hostID == entityID.hostID) ? + (localID > entityID.localID) : + (hostID > entityID.hostID); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + EntityID::operator>=(const EntityID &entityID) const +{ + return + (hostID == entityID.hostID) ? + (localID >= entityID.localID) : + (hostID > entityID.hostID); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + EntityID::operator==(const EntityID &entityID) const +{ + return + (hostID == entityID.hostID && + localID == entityID.localID); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + EntityID::operator!=(const EntityID &entityID) const +{ + return + (hostID != entityID.hostID || + localID != entityID.localID); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +EntityID::operator int() const +{ + return int(localID); +} + diff --git a/CODE/RP/MUNGA/ENTITYID.HPP b/CODE/RP/MUNGA/ENTITYID.HPP new file mode 100644 index 0000000..144f57d --- /dev/null +++ b/CODE/RP/MUNGA/ENTITYID.HPP @@ -0,0 +1,101 @@ +//===========================================================================// +// File: entity2.hh // +// Project: MUNGA Brick: Entity Manager // +// Contents: Interface specification for entity class // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 11/29/94 JMA Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1994, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(ENTITYID_HPP) + #define ENTITYID_HPP + + #if !defined(NETWORK_HPP) + #include + #endif + + //########################################################################## + //########################## EntityID ################################ + //########################################################################## + + class EntityID + { + public: + #if defined(USE_SIGNATURE) + friend int + Is_Signature_Bad(const volatile EntityID *); + #endif + + typedef Enumeration LocalID; + + EntityID(); + EntityID(const EntityID&); + EntityID(HostID); + EntityID(HostID, LocalID); + + Logical + TestInstance() const; + HostID + GetHostID() + {return hostID;} + + Logical + operator!() const + {Check(this); return operator==(Null);} + EntityID& + operator=(const EntityID&); + + EntityID + operator-(const EntityID&) const; + + EntityID& + operator+=(const EntityID&); + EntityID& + operator-=(const EntityID&); + + EntityID& + operator+=(LocalID); + EntityID& + operator-=(LocalID); + + Logical + operator<(const EntityID&) const; + Logical + operator<=(const EntityID&) const; + Logical + operator>(const EntityID&) const; + Logical + operator>=(const EntityID&) const; + Logical + operator==(const EntityID&) const; + Logical + operator!=(const EntityID&) const; + + operator int() const; + + static EntityID + Null; + static LocalID + LocalNull; + + friend ostream& + operator<<( + ostream& stream, + const EntityID& v + ) + {return stream << v.hostID << ':' << v.localID;} + + private: + HostID + hostID; + LocalID + localID; + }; + +#endif + diff --git a/CODE/RP/MUNGA/ENVIRNMT.CPP b/CODE/RP/MUNGA/ENVIRNMT.CPP new file mode 100644 index 0000000..84cac83 --- /dev/null +++ b/CODE/RP/MUNGA/ENVIRNMT.CPP @@ -0,0 +1,125 @@ +//===========================================================================// +// File: envirnmt.cc // +// Project: MUNGA Brick: Model Manager // +// Contents: Interface specification for environment variables // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 02/13/95 JMA Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(ENVIRNMT_HPP) +# include +#endif + +#if !defined(CSTR_HPP) + #include +#endif + +//############################################################################# +//########################### Environment ############################### +//############################################################################# + +#if defined(USE_SIGNATURE) + int + Is_Signature_Bad(const Environment *) + { + return False; + } +#endif + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + Environment::TestInstance() const +{ + return True; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~ Environment functions ~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + Convert_From_Ascii( + const char *str, + Environment *environment + ) +{ + Check_Pointer(str); + Check_Signature(environment); + + CString parse_string(str); + Check(&parse_string); + + Check_Pointer(parse_string.GetNthToken(0)); + environment->gravityConstant = atof(parse_string.GetNthToken(0)); + + Check_Pointer(parse_string.GetNthToken(1)); + environment->airDensity = atof(parse_string.GetNthToken(1)); + + Check_Pointer(parse_string.GetNthToken(2)); + environment->audioReverbTime = atof(parse_string.GetNthToken(2)); + + Check_Pointer(parse_string.GetNthToken(3)); + environment->audioAverageSurfaceReflectivity = atof(parse_string.GetNthToken(3)); + + Check_Pointer(parse_string.GetNthToken(4)); + environment->audioAirAbsorption = atof(parse_string.GetNthToken(4)); + + Check_Pointer(parse_string.GetNthToken(5)); + environment->windVelocity.x = atof(parse_string.GetNthToken(5)); + + Check_Pointer(parse_string.GetNthToken(6)); + environment->windVelocity.y = atof(parse_string.GetNthToken(6)); + + Check_Pointer(parse_string.GetNthToken(7)); + environment->windVelocity.z = atof(parse_string.GetNthToken(7)); + + Check_Pointer(parse_string.GetNthToken(8)); + environment->ambientTemperature = atof(parse_string.GetNthToken(8)); + + Check(environment); +} + +//############################################################################# +//######################### EnvironmentList ############################# +//############################################################################# + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +EnvironmentList::EnvironmentList(int environments) +{ + Verify(environments > 0); + + environmentCount = environments; + environmentArray = new Environment[environments]; + Register_Pointer(environmentArray); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +EnvironmentList::~EnvironmentList() +{ + Unregister_Pointer(environmentArray); + delete[] environmentArray; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + EnvironmentList::TestInstance() const +{ + return True; +} + +EnvironmentList *Environments; + + diff --git a/CODE/RP/MUNGA/ENVIRNMT.HPP b/CODE/RP/MUNGA/ENVIRNMT.HPP new file mode 100644 index 0000000..e87137b --- /dev/null +++ b/CODE/RP/MUNGA/ENVIRNMT.HPP @@ -0,0 +1,131 @@ +//===========================================================================// +// File: envirnmt.hh // +// Project: MUNGA Brick: Model Manager // +// Contents: Interface specification for environment variables // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 02/13/95 JMA Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(ENVIRNMT_HPP) +# define ENVIRNMT_HPP + +# if !defined(STYLE_HPP) +# include +# endif + +# if !defined(VECTOR3D_HPP) +# include +# endif + + //########################################################################## + //######################## Environment ############################### + //########################################################################## + + class Environment + { + #if defined(USE_SIGNATURE) + friend int + Is_Signature_Bad(const Environment *p); + #endif + + public: + Scalar + gravityConstant, + airDensity, + audioReverbTime, + audioAverageSurfaceReflectivity, + audioAirAbsorption; + Vector3D + windVelocity; + Scalar + ambientTemperature; // Kelvin + + const Vector3D& + GetWindVelocity() + {return windVelocity;} + + Environment() + {} + Environment( + Scalar gravity, + Scalar air_density, + Scalar reverb_time, + Scalar surface_reflectivity, + Scalar air_absorption, + const Vector3D &wind_velocity, + Scalar ambient_temperature + ): + gravityConstant(gravity), + airDensity(air_density), + audioReverbTime(reverb_time), + audioAverageSurfaceReflectivity(surface_reflectivity), + audioAirAbsorption(air_absorption), + windVelocity(wind_velocity), + ambientTemperature(ambient_temperature) + {} + + Logical + TestInstance() const; + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~ Environment functions ~~~~~~~~~~~~~~~~~~~~~~~~~~ + + void + Convert_From_Ascii( + const char *str, + Environment *environment + ); + + inline MemoryStream& + MemoryStream_Read( + MemoryStream* stream, + Environment *output + ) + {return stream->ReadBytes(output, sizeof(*output));} + inline MemoryStream& + MemoryStream_Write( + MemoryStream* stream, + const Environment *input + ) + {return stream->WriteBytes(input, sizeof(*input));} + + //########################################################################## + //###################### EnvironmentList ############################# + //########################################################################## + + class EnvironmentList SIGNATURED + { + protected: + int + environmentCount; + + Environment + *environmentArray; + + public: + EnvironmentList(int environments); + virtual ~EnvironmentList(); + + int + GetEnvironmentCount() + {Check(this); return environmentCount;} + virtual Environment& + GetEnvironment(int index) + { + Check (this); Verify((unsigned)index < environmentCount); + return environmentArray[index]; + } + + Logical + TestInstance() const; + }; + + extern EnvironmentList *Environments; + +#endif diff --git a/CODE/RP/MUNGA/EVENT.CPP b/CODE/RP/MUNGA/EVENT.CPP new file mode 100644 index 0000000..59ff38f --- /dev/null +++ b/CODE/RP/MUNGA/EVENT.CPP @@ -0,0 +1,1110 @@ +//===========================================================================// +// File: event.cc // +// Project: MUNGA Brick: Event Manager // +// Contents: implementation details of event processing // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 10/19/94 JMA Initial coding. // +// 11/03/94 ECH Made compatible with BC4.0 // +// 11/05/94 JMA Made compatible with GNU C++ // +// 11/30/94 JMA Adapted to new style conventions // +// 12/01/94 JMA Made compatible with SGI CC // +//---------------------------------------------------------------------------// +// Copyright (C) 1994, Virtual World Entertainment, Inc. All Rights reserved // +// PROPRIETARY AND CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(EVENT_HPP) + #include +#endif + +#if !defined(REGISTRY_HPP) +# include +#endif + +#if !defined(APP_HPP) + #include +#endif + +#if !defined(ENTITY_HPP) + #include +#endif + +#if !defined(EVTSTAT_HPP) + #include +#endif + +#if defined(TRACE_PROCESS_EVENT) + static BitTrace Process_Event("Process Event"); +# define SET_PROCESS_EVENT() Process_Event.Set() +# define CLEAR_PROCESS_EVENT() Process_Event.Clear() +#else +# define SET_PROCESS_EVENT() +# define CLEAR_PROCESS_EVENT() +#endif + +//############################################################################# +//########################### AbstractEvent ############################# +//############################################################################# + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +AbstractEvent::AbstractEvent( + Receiver::Message *message, + Time time, + ClassID class_id +): + Node(class_id) +{ + Verify(message); + alarmTime = time; + + // + //-------------------------------------------------------- + // Allocate some memory to store the message parameters in + //-------------------------------------------------------- + // + size_t long_size = (message->messageLength+3)>>2; + messageToSend = (Receiver::Message*)new long[long_size]; + Check_Pointer(messageToSend); + Register_Pointer(messageToSend); + + Mem_Copy( + messageToSend, + message, + message->messageLength, + long_size*sizeof(long) + ); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +AbstractEvent::~AbstractEvent() +{ + if (messageToSend) + { + Unregister_Pointer(messageToSend); + delete messageToSend; + } +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + AbstractEvent::Process() +{ + Fail("AbstractEvent::Process should not be called!\n"); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + AbstractEvent::DumpData() +{ + Fail("AbstractEvent::DumpData should not be called!\n"); +} + +//############################################################################# +//############################### Event ################################# +//############################################################################# + +MemoryBlock + Event::AllocatedMemory(sizeof(Event), 20, 10, "Events"); + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Event::Event( + Receiver *target, + Receiver::Message *message, + Time time +): + AbstractEvent(message, time, EventClassID), + targetReceiver(this) +{ + targetReceiver.Add(target); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Event::~Event() +{ +#if defined(TRACE_EVENT_COUNT) + // + //------------------------------------------- + // Delete the link to the current event queue + //------------------------------------------- + // + PlugIteratorOf + old_queue_link(this); + Node *node; + while ((node = old_queue_link.GetCurrent()) != NULL) + { + Check(node); + if ( + node->GetClassID() == EventQueueClassID + || node->GetClassID() == GeneralEventQueueClassID + ) + { + GeneralEventQueue *q = Cast_Object(GeneralEventQueue*, node); + while (q->priorityLevels < 0) + { + --q; + Check(q); + } + --q->eventCount; + if (q->eventCountTrace) + { + Check(q->eventCountTrace); + q->eventCountTrace->TakeSnapshot(q->eventCount); + } + break; + } + } +#endif +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + Event::Repost( + EventQueue* queue, + int priority, + Time new_time + ) +{ + Check(this); + Check(queue); + + // + //------------------------------------------- + // Delete the link to the current event queue + //------------------------------------------- + // + PlugIteratorOf + old_queue_link(this); + Node *node; + while ((node = old_queue_link.GetCurrent()) != NULL) + { + Check(node); + if ( + node->GetClassID() == EventQueueClassID + || node->GetClassID() == GeneralEventQueueClassID + || node->GetClassID() == DeferredEventQueueClassID + ) + { + #if defined(TRACE_EVENT_COUNT) + if (node->GetClassID() != DeferredEventQueueClassID) + { + GeneralEventQueue *q = Cast_Object(GeneralEventQueue*, node); + while (q->priorityLevels < 0) + { + --q; + Check(q); + } + --q->eventCount; + if (q->eventCountTrace) + { + Check(q->eventCountTrace); + q->eventCountTrace->TakeSnapshot(q->eventCount); + } + } + #endif + + old_queue_link.Remove(); + break; + } + else + { + old_queue_link.Next(); + } + } + + // + //----------------------------------------------------------------------- + // Now, if necessary, reset the time and stuff the event in the new event + // queue + //----------------------------------------------------------------------- + // + if (new_time.ticks) + { + alarmTime = new_time; + } + queue->Enqueue(priority,this); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + Event::Defer() +{ + // + //----------------------------------------------- + // See if the target has a deferred queue already + //----------------------------------------------- + // + Receiver *target = targetReceiver.GetCurrent(); + Check(target); + PlugIteratorOf + blind_links(target); + DeferredEventQueue + *deferred_queue; + while ((deferred_queue = blind_links.ReadAndNext()) != NULL) + { + if (deferred_queue->GetClassID() == DeferredEventQueueClassID) + { + break; + } + } + + // + //---------------------------------------------------------------------- + // If we couldn't find a deferred queue, then a new one must be created + // and attached to the object + //---------------------------------------------------------------------- + // + if (!deferred_queue) + { + deferred_queue = new DeferredEventQueue(target); + Register_Object(deferred_queue); + } + + // + //------------------------------------------------- + // Now, simply repost the event to this event queue + //------------------------------------------------- + // + Repost(deferred_queue->deferredEvents,0); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + Event::Process() +{ + Check(this); + targetReceiver.GetCurrent()->Receive(this); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + Event::DumpData() +{ + Check(this); + + Receiver *target = targetReceiver.GetCurrent(); + Check(target); + Check(application); + Registry *registry = application->GetRegistry(); + if (registry) + { + Check(registry); + Receiver::SharedData *shared_data = + registry->GetStaticData(target->GetClassID()); + if (shared_data) + { + Check(shared_data); + Derivation *derivation = shared_data->derivedClasses; + Check(derivation); + Receiver::MessageHandlerSet *handlers = + shared_data->activeMessageHandlers; + Check(handlers); + DEBUG_STREAM << handlers->GetName(messageToSend->messageID) + << " message for class " << derivation->className << endl; + } + else + { + goto Vanilla_Message; + } + } + else + { +Vanilla_Message: + DEBUG_STREAM << "Message " << messageToSend->messageID + << " for object of classID " << target->GetClassID() << endl; + } +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + Event::ReleaseLinkHandler( + Socket*, + Plug* + ) +{ + Unregister_Object(this); + delete this; +} + +//############################################################################# +//########################### NetworkEvent ############################## +//############################################################################# + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +NetworkEvent::NetworkEvent( + HostID host_ID, + NetworkManager::ClientID client_ID, + EventStyle event_style, + Receiver::Message *message, + Time time +): + AbstractEvent(message, time, NetworkEventClassID) +{ + hostID = host_ID; + clientID = client_ID; + eventStyle = event_style; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +NetworkEvent::~NetworkEvent() +{ +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + NetworkEvent::Process() +{ + Check(this); + switch (eventStyle) + { + case SendStyle: + Check(application); + application->GetNetworkManager()->Send( + messageToSend, + clientID, + hostID + ); + break; + + case BroadcastStyle: + Check(application); + application->GetNetworkManager()->Broadcast( + messageToSend, + clientID + ); + break; + + case ExclusiveBroadcastStyle: + Check(application); + application->GetNetworkManager()->ExclusiveBroadcast( + messageToSend, + clientID + ); + break; + } + + Unregister_Object(this); + delete this; +} + +//############################################################################# +//####################### GeneralEventQueue ############################ +//############################################################################# + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +GeneralEventQueue::GeneralEventQueue(ClassID class_ID): + Node(class_ID), + pendingEvents(this), + timedEvents(this) +{ + priorityLevels = -1; + eventCount = 0; + #if defined(TRACE_EVENT_COUNT) + eventCountTrace = NULL; + #endif +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +GeneralEventQueue::GeneralEventQueue(): + Node(GeneralEventQueueClassID), + pendingEvents(this), + timedEvents(this) +{ + priorityLevels = -1; + eventCount = 0; + #if defined(TRACE_EVENT_COUNT) + eventCountTrace = NULL; + #endif +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +GeneralEventQueue::~GeneralEventQueue() +{ + #if defined(TRACE_EVENT_COUNT) + if (eventCountTrace) + { + Unregister_Object(eventCountTrace); + delete eventCountTrace; + } + #endif +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +GeneralEventQueue* + GeneralEventQueue::Make( + int priorities, + #if defined(TRACE_EVENT_COUNT) + const char* trace_name + #else + const char* + #endif + ) +{ + GeneralEventQueue *queue = new GeneralEventQueue[priorities]; + Register_Object(queue); + + queue->priorityLevels = priorities; + #if defined(TRACE_EVENT_COUNT) + if (trace_name) + { + Check_Pointer(trace_name); + queue->eventCountTrace = + new TraceOf( + trace_name, + 0, + Trace::IntegerType, + TraceSample::IntegerSnapshot + ); + Register_Object(queue->eventCountTrace); + } + #endif + return queue; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + GeneralEventQueue::Post( + int priority, + Receiver *target, + Receiver::Message *message, + Time time + ) +{ + Check(this); + Check(target); + Check(message); + + // + //------------------------------------------------------------------------ + // Create a new event, then insert it at the end of the event queue. This + // means that timed events get put in sort of haphazardly!!!! + //------------------------------------------------------------------------ + // + Event *event = new Event(target, message, time); + Register_Object(event); + + Enqueue(priority, event); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + GeneralEventQueue::SendEvent( + int priority, + HostID host_ID, + NetworkManager::ClientID client_id, + Receiver::Message *message, + Time when + ) +{ + Check(this); + Check(message); + + NetworkEvent *event = + new NetworkEvent( + host_ID, client_id, NetworkEvent::SendStyle, message, when + ); + Register_Object(event); + Enqueue(priority, event); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + GeneralEventQueue::BroadcastEvent( + int priority, + NetworkManager::ClientID client_ID, + Receiver::Message *message, + Time when + ) +{ + Check(this); + Check(message); + + // + // HACK - What is a null network address? + // + NetworkEvent *event = + new NetworkEvent( + (NetworkAddress)0, + client_ID, + NetworkEvent::BroadcastStyle, + message, + when + ); + Register_Object(event); + Enqueue(priority, event); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + GeneralEventQueue::ExclusiveBroadcastEvent( + int priority, + NetworkManager::ClientID client_ID, + Receiver::Message *message, + Time when + ) +{ + Check(this); + Check(message); + + // + // HACK - What is a null network address? + // + NetworkEvent *event = + new NetworkEvent( + (NetworkAddress)0, + client_ID, + NetworkEvent::ExclusiveBroadcastStyle, + message, + when + ); + Register_Object(event); + Enqueue(priority, event); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + GeneralEventQueue::Enqueue( + int priority, + AbstractEvent *event + ) +{ + Check(event); + Verify((unsigned)priority < priorityLevels); + + // + //------------------------------------------------------------ + // If this is not a timed event, stuff it in the pending queue + //------------------------------------------------------------ + // + if (!event->alarmTime.ticks) + { + this[priority].pendingEvents.Add(event); + } + + // + //---------------------------------------- + // Otherwise, sort it into the timed queue + //---------------------------------------- + // + else + { + ChainIteratorOf + timed_events(this[priority].timedEvents); + timed_events.Last(); + AbstractEvent* next_event = timed_events.GetCurrent(); + + // + //--------------------------------------------------------------------- + // If the timed queue is empty, or if we are later than the last entry, + // just add the event to the end + //--------------------------------------------------------------------- + // + if (!next_event || next_event->alarmTime.ticks <= event->alarmTime.ticks) + { + this[priority].timedEvents.Add(event); + } + + // + //-------------------------------------------------------------------- + // Find the event to insert before. If we run off the beginning, stop + // checking and set the iterator to the first event in the queue + //-------------------------------------------------------------------- + // + else + { + do + { + timed_events.Previous(); + next_event = timed_events.GetCurrent(); + if (!next_event) + { + timed_events.First(); + break; + } + } while (next_event->alarmTime.ticks > event->alarmTime.ticks); + + // + //-------------------------------------------------------------------- + // If we didn't run off the queue, we need to insert after the current + // event, so bump the iterator forward one event + //-------------------------------------------------------------------- + // + if (next_event) + { + timed_events.Next(); + } + + // + //------------------------------------------------------------------ + // Insert the new event ahead of where the iterator currently points + //------------------------------------------------------------------ + // + timed_events.Insert(event); + } + } + #if defined(TRACE_EVENT_COUNT) + ++eventCount; + if (eventCountTrace) + { + Check(eventCountTrace); + eventCountTrace->TakeSnapshot(eventCount); + } + #endif + #if defined(USE_EVENT_STATISTICS) + event_statistics_manager.Maintain(Cast_Object(Event*, event)); + #endif +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +AbstractEvent* + GeneralEventQueue::PeekAtNextEvent(int min_priority) +{ + Check(this); + + // + //-------------------------------------------------------------------------- + // Start at the top of the priority queue, searching backwards until we find + // an available event or run off the minimum queue priority + //-------------------------------------------------------------------------- + // + Verify(min_priority >= 0); + int priority = priorityLevels; + while (--priority >= min_priority) + { + // + //------------------------------------------------------------------- + // See if the first event in the timed queue is ready to go. If not, + // none of the other timed events will be ready to go either + //------------------------------------------------------------------- + // + ChainIteratorOf + timed_events(this[priority].timedEvents); + AbstractEvent + *event = timed_events.GetCurrent(); + if (event) + { + Check(event); + if (event->alarmTime.ticks <= Now().ticks) + { + return event; + } + } + + // + //------------------------------ + // Now look in the untimed queue + //------------------------------ + // + ChainIteratorOf + events(this[priority].pendingEvents); + event = events.GetCurrent(); + if (event) + { + Check(event); + return event; + } + } + return NULL; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + GeneralEventQueue::IsPriorityEmpty(int priority) +{ + Check(this); + + Verify(priority >= 0 && priority < priorityLevels); + ChainIteratorOf i(this[priority].pendingEvents); + ChainIteratorOf j(this[priority].timedEvents); + return !i.GetCurrent() && !j.GetCurrent(); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + GeneralEventQueue::ProcessOneEvent(int min_priority) +{ + Check(this); + Verify(min_priority >= 0); + + AbstractEvent *event=PeekAtNextEvent(min_priority); + if (event) + { + SET_PROCESS_EVENT(); + event->Process(); + CLEAR_PROCESS_EVENT(); + return True; + } + return False; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + GeneralEventQueue::ProcessAllEvents(int min_priority) +{ + Check(this); + Verify(min_priority >= 0); + while (ProcessOneEvent(min_priority)); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + GeneralEventQueue::FlushAllEvents(int max_priority) +{ + Check(this); + Verify(max_priority < priorityLevels); + + // + //----------------------------------------- + // Make sure that max_priority is set right + //----------------------------------------- + // + if (max_priority < 0) + { + max_priority = priorityLevels - 1; + } + + // + //--------------------------------------------------------------------- + // Step through each of the priority queues and delete any events found + // within + //--------------------------------------------------------------------- + // + for (int priority=max_priority; priority>=0; --priority) + { + + // + //--------------------------------------- + // Delete the events from the timed queue + //--------------------------------------- + // + ChainIteratorOf i(this[priority].timedEvents); + AbstractEvent *event; + while ((event = i.ReadAndNext()) != NULL) + { + Unregister_Object(event); + delete event; + } + + // + //----------------------------------------- + // Delete the events from the regular queue + //----------------------------------------- + // + ChainIteratorOf j(this[priority].pendingEvents); + while ((event = j.ReadAndNext()) != NULL) + { + Unregister_Object(event); + delete event; + } + } +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + GeneralEventQueue::FlushMatchingEvents( + Receiver::MessageID target_message, + int max_priority + ) +{ + Check(this); + Verify(max_priority < priorityLevels); + + // + //----------------------------------------- + // Make sure that max_priority is set right + //----------------------------------------- + // + if (max_priority < 0) + { + max_priority = priorityLevels - 1; + } + + // + //--------------------------------------------------------------------- + // Step through each of the priority queues and delete any events found + // within + //--------------------------------------------------------------------- + // + for (int p=max_priority; p>=0; --p) + { + // + //------------------------------------------- + // Delete events from the regular queue first + //------------------------------------------- + // + ChainIteratorOf i(this[p].pendingEvents); + AbstractEvent *event; + while ((event = i.ReadAndNext()) != NULL) + { + + // + //------------------------------ + // Make sure the message matches + //------------------------------ + // + if ( + target_message == Receiver::AnyMessageID + || target_message == event->messageToSend->messageID + ) + { + Unregister_Object(event); + delete event; + } + } + + // + //----------------------------------- + // Delete events from the timed queue + //----------------------------------- + // + ChainIteratorOf j(this[p].timedEvents); + while ((event = j.ReadAndNext()) != NULL) + { + + // + //------------------------------ + // Make sure the message matches + //------------------------------ + // + if ( + target_message == Receiver::AnyMessageID + || target_message == event->messageToSend->messageID + ) + { + Unregister_Object(event); + delete event; + } + } + } +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + GeneralEventQueue::DumpEventQueue() +{ + Check(this); + + // + //---------------------------------------------------------------------- + // Step through each of the priority queues and display any events found + // within + //---------------------------------------------------------------------- + // + CollectionSize total_count = 0; + for (int priority=priorityLevels - 1; priority>=0; --priority) + { + DEBUG_STREAM << "EventQueue priority " << priority + << "\n--------------------------------------------------------------\n"; + + ChainIteratorOf i(this[priority].pendingEvents); + AbstractEvent *event; + size_t count=0; + while ((event = i.ReadAndNext()) != NULL) + { + ++count; + event->DumpData(); + } + DEBUG_STREAM << count << " priority " << priority << " events\n\n"; + count = 0; + ChainIteratorOf j(this[priority].timedEvents); + while ((event = j.ReadAndNext()) != NULL) + { + ++count; + event->DumpData(); + } + DEBUG_STREAM << count << " priority " << priority << " timed events\n\n"; + total_count += count; + + } + DEBUG_STREAM << total_count << " total events in queues\n\n"; +} + +//############################################################################# +//############################ EventQueue ############################### +//############################################################################# + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +EventQueue::EventQueue(): + GeneralEventQueue(EventQueueClassID) +{ +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +EventQueue::~EventQueue() +{ +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +EventQueue* + EventQueue::Make( + int priorities, + #if defined(TRACE_EVENT_COUNT) + const char* trace_name + #else + const char* + #endif + ) +{ + EventQueue *queue = new EventQueue[priorities]; + Register_Object(queue); + + queue->priorityLevels = priorities; + #if defined(TRACE_EVENT_COUNT) + if (trace_name) + { + Check_Pointer(trace_name); + queue->eventCountTrace = + new TraceOf( + trace_name, + 0, + Trace::IntegerType, + TraceSample::IntegerSnapshot + ); + Register_Object(queue->eventCountTrace); + } + #endif + return queue; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + EventQueue::ProcessMatchingEvents( + Receiver *receiver, + Receiver::MessageID message_ID + ) +{ + Check(this); + Check(receiver); + + // + //---------------------------------------------------------------- + // Step through each of the priority queues and process any events + // found within + //---------------------------------------------------------------- + // + for (int p=priorityLevels-1; p>=0; --p) + { + Event *event; + AbstractEvent *abstract_event; + ChainIteratorOf i(this[p].pendingEvents); + while ((abstract_event = i.ReadAndNext()) != NULL) + { + Check(abstract_event); + event = Cast_Object(Event*, abstract_event); + + // + //------------------------------ + // Make sure the message matches + //------------------------------ + // + if ( + (event->targetReceiver.GetCurrent() == receiver) && + (message_ID == Receiver::AnyMessageID || + message_ID == event->messageToSend->messageID) + ) + { + event->Process(); + } + } + + ChainIteratorOf j(this[p].timedEvents); + while ((abstract_event = j.ReadAndNext()) != NULL) + { + Check(abstract_event); + event = Cast_Object(Event*, abstract_event); + + // + //------------------------------ + // Make sure the message matches + //------------------------------ + // + if ( + (event->targetReceiver.GetCurrent() == receiver) && + (message_ID == Receiver::AnyMessageID || + message_ID == event->messageToSend->messageID) + ) + { + event->Process(); + } + } + } +} + +//############################################################################# +//######################## DeferredEventQueue ########################### +//############################################################################# + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +DeferredEventQueue::DeferredEventQueue(Receiver* target): + Node(DeferredEventQueueClassID), + waitingReceiver(this) +{ + deferredEvents = new EventQueue; + Register_Object(deferredEvents); + + waitingReceiver.Add(target); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +DeferredEventQueue::~DeferredEventQueue() +{ + Unregister_Object(deferredEvents); + delete deferredEvents; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + DeferredEventQueue::ReleaseLinkHandler( + Socket*, + Plug* + ) +{ + Unregister_Object(this); + delete this; +} + +#if defined(TEST_CLASS) +# include "event.tcp" +#endif + diff --git a/CODE/RP/MUNGA/EVENT.HPP b/CODE/RP/MUNGA/EVENT.HPP new file mode 100644 index 0000000..3150b8c --- /dev/null +++ b/CODE/RP/MUNGA/EVENT.HPP @@ -0,0 +1,375 @@ +//===========================================================================// +// File: event.hh // +// Project: MUNGA Brick: Event Manager // +// Contents: interface specification of event manager // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 10/19/94 JMA Initial coding. // +// 10/28/94 JMA Made compatible with SGI CC // +// 11/03/94 ECH Made compatible with BC4.0 // +// 11/05/94 JMA Made compatible with GNU C++ // +// 11/30/94 JMA Adapted to new style conventions // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// PROPRIETARY AND CONFIDENTIAL // +//===========================================================================// + +#if !defined(EVENT_HPP) +# define EVENT_HPP + +# if !defined(TIME_HPP) +# include +# endif + +# if !defined(SLOT_HPP) +# include +# endif + +# if !defined(NETWORK_HPP) +# include +# endif + + class GeneralEventQueue; + class EventQueue; + class DeferredEventQueue; + class Entity; + + //########################################################################## + //######################## AbstractEvent ############################# + //########################################################################## + + class AbstractEvent: + public Node + { + friend class GeneralEventQueue; + friend class EventStatisticsManager; + + //########################################################################## + // Event Functionality + // + protected: + AbstractEvent( + Receiver::Message *message, + Time time, + ClassID class_id + ); + ~AbstractEvent(); + + public: + virtual void + Process(); + virtual void + DumpData(); + + protected: + Time alarmTime; + Receiver::Message* messageToSend; + }; + + //########################################################################## + //############################ Event ################################# + //########################################################################## + + class Event: + public AbstractEvent + { + friend class GeneralEventQueue; + friend class EventQueue; + friend class Receiver; + friend class DeferredEventQueue; + friend class Entity; + friend class EventStatisticsManager; + + //########################################################################## + // Node Support + // + private: + void + ReleaseLinkHandler( + Socket *socket, + Plug *plug + ); + + //########################################################################## + // Memory Allocation Support + // + private: + static MemoryBlock AllocatedMemory; + + void* + operator new(size_t) + {return AllocatedMemory.New();} + void + operator delete(void *where) + {AllocatedMemory.Delete(where);} + + + //########################################################################## + // Event Functionality + // + private: + Event( + Receiver *target, + Receiver::Message *message, + Time time + ); + ~Event(); + + public: + void + Repost( + EventQueue *queue, + int priority, + Time new_time=Time::Null + ); + + void + Defer(); + + void + Process(); + void + DumpData(); + + private: + SlotOf targetReceiver; + }; + + //########################################################################## + //######################## NetworkEvent ############################## + //########################################################################## + + class NetworkEvent: + public AbstractEvent + { + friend class GeneralEventQueue; + + //########################################################################## + // Event Functionality + // + private: + enum EventStyle + { + SendStyle, + BroadcastStyle, + ExclusiveBroadcastStyle + }; + + NetworkEvent( + HostID hostID, + NetworkManager::ClientID client_ID, + EventStyle event_style, + Receiver::Message *message, + Time time + ); + ~NetworkEvent(); + + public: + void + Process(); + + private: + HostID + hostID; + NetworkManager::ClientID + clientID; + EventStyle + eventStyle; + }; + + //########################################################################## + //#################### GeneralEventQueue ############################ + //########################################################################## + // + // NOTE: Do not create any static event queues! new must be used to allocate + // all event queue objects + // + class GeneralEventQueue: + public Node + { + friend class Event; + + //########################################################################## + // EventQueue Allocation + // + public: + GeneralEventQueue(ClassID class_ID); + GeneralEventQueue(); + ~GeneralEventQueue(); + + static GeneralEventQueue* + Make( + int priorities, + const char* trace_name=NULL + ); + + protected: + int + priorityLevels; + ChainOf + pendingEvents; + ChainOf + timedEvents; + int + eventCount; + #if defined(TRACE_EVENT_COUNT) + TraceOf + *eventCountTrace; + #endif + + //########################################################################## + // EventQueue Functionality + // + public: + void + Post( + int priority, + Receiver *target, + Receiver::Message *message, + Time when=Time::Null + ); + void + SendEvent( + int priority, + HostID host_ID, + NetworkManager::ClientID client_id, + Receiver::Message *message, + Time when=Time::Null + ); + void + BroadcastEvent( + int priority, + NetworkManager::ClientID client_id, + Receiver::Message *message, + Time when=Time::Null + ); + void + ExclusiveBroadcastEvent( + int priority, + NetworkManager::ClientID client_id, + Receiver::Message *message, + Time when=Time::Null + ); + int + GetEventCount() + {return eventCount;} + + AbstractEvent* + PeekAtNextEvent(int min_priority=0); + Logical + IsPriorityEmpty(int priority); + + Logical + ProcessOneEvent(int min_priority=0); + void + ProcessAllEvents(int min_priority=0); + + void + FlushAllEvents(int max_priority=-1); + void + FlushMatchingEvents( + Receiver::MessageID target_message, + int max_priority=-1 + ); + + void + Enqueue( + int priority, + AbstractEvent *event + ); + + //########################################################################## + // Testing Support + // + public: + void + DumpEventQueue(); + }; + + //########################################################################## + //######################### EventQueue ############################### + //########################################################################## + + class EventQueue: + public GeneralEventQueue + { + //########################################################################## + // EventQueue Allocation + // + public: + EventQueue(); + static EventQueue* + Make( + int priorities, + const char* trace_name=NULL + ); + ~EventQueue(); + + //########################################################################## + // EventQueue Posting & Processing + // + public: + Event* + PeekAtNextEvent(int min_priority=0) + { + return + (Event*)GeneralEventQueue::PeekAtNextEvent(min_priority); + } + + void + ProcessMatchingEvents( + Receiver *receiver, + Receiver::MessageID message_ID=Receiver::AnyMessageID + ); + + //########################################################################## + // Testing Support + // + public: + static Logical + TestClass(); + }; + + //########################################################################## + //##################### DeferredEventQueue ########################### + //########################################################################## + // + // NOTE: Do not create any static event queues! new must be used to allocate + // all event queue objects + // + class DeferredEventQueue: + public Node + { + friend class Event; + + //########################################################################## + // Node Support + // + private: + void + ReleaseLinkHandler( + Socket *socket, + Plug *plug + ); + + //########################################################################## + // Deferred Queue Functionality + // + public: + DeferredEventQueue(Receiver *target); + ~DeferredEventQueue(); + + void + ProcessAllEvents() + {Check(this); deferredEvents->ProcessAllEvents();} + + private: + EventQueue + *deferredEvents; + SlotOf + waitingReceiver; + }; + +#endif + diff --git a/CODE/RP/MUNGA/EVENT.TCP b/CODE/RP/MUNGA/EVENT.TCP new file mode 100644 index 0000000..10e2f0b --- /dev/null +++ b/CODE/RP/MUNGA/EVENT.TCP @@ -0,0 +1,174 @@ +//===========================================================================// +// File: event.tst // +// Project: MUNGA Brick: Dynamic Dispatch // +// Contents: Test stuff for Event class // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 11/02/94 JMA Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1994, Virtual World Entertainment, Inc. All Rights reserved // +// PROPRIETARY AND CONFIDENTIAL // +//===========================================================================// + +#include "testclas.hpp" + +Logical + EventQueue::TestClass() +{ + DEBUG_STREAM << "Starting EventQueue test...\n"; + + // + // Construct Queues + // + EventQueue + *p = EventQueue::Make(5), + *q = new EventQueue; + Register_Object(q); + + Test(p->priorityLevels == 5); + Test(q->priorityLevels == 1); + + // + // Test how a single priority queue works + // + Receiver::Message + m(Alpha::message0ID, sizeof(Receiver::Message)), + n(Alpha::message1ID, sizeof(Receiver::Message)); + Alpha + a,b; + Event + *event; + + q->Post(0, &a, &m); + Test(a.x == -1); + + event = q->PeekAtNextEvent(); + Test(event); + Test(event->targetReceiver.GetCurrent() == &a); + Test(event->messageToSend); + Test(a.x == -1); + PlugIteratorOf + i(&a); + Test(i.GetCurrent() == event); + + event->Process(); + Test(a.x == 0); + Test(!q->PeekAtNextEvent()); + + // + // Test multiple events + // + a.x = -1; + q->Post(0, &a, &m); + event = q->PeekAtNextEvent(); + q->Post(0, &a, &n); + Test(q->PeekAtNextEvent() == event); + Test(q->ProcessOneEvent()); + Test(a.x == 0); + Test(q->ProcessOneEvent()); + Test(a.x == 1); + Test(!q->ProcessOneEvent()); + + // + // Test timed messages + // + a.x = -1; + Time t = Now(); + t += 0.5f; + q->Post(0, &a, &m, t); + Time t2 = t; + t2 += 0.1f; + while (!q->ProcessOneEvent()) + { + Test(Now() < t2); + } + Scalar f = Now() - t; + Test(Abs(f) < 0.06f); + Test(a.x == 0); + Test(!q->PeekAtNextEvent()); + + // + // Test multi-priority Queues + // + a.x = -1; + p->Post(2, &a, &m); + event = p->PeekAtNextEvent(); + Test(event); + p->Post(3, &a, &n); + Test(event != p->PeekAtNextEvent()); + + p->ProcessOneEvent(3); + Test(a.x == 1); + event = p->PeekAtNextEvent(3); + Test(!event); + event = p->PeekAtNextEvent(); + Test(event); + Test(event->targetReceiver.GetCurrent() == &a); + p->ProcessOneEvent(); + Test(a.x == 0); + Test(!p->PeekAtNextEvent()); + + // + // Test Reposting + // + a.x = -1; + q->Post(0, &a, &m); + event = q->PeekAtNextEvent(); + event->Repost(p,2); + Test(!q->PeekAtNextEvent()); + Test(!p->PeekAtNextEvent(3)); + Test(p->PeekAtNextEvent(2)); + p->ProcessOneEvent(); + Test(!p->PeekAtNextEvent()); + Test(a.x == 0); + + // + // Test event deference + // + a.x = -1; + q->Post(0, &a, &m); + event = q->PeekAtNextEvent(); + event->Defer(); + Test(!q->PeekAtNextEvent()); + a.ProcessDeferredQueue(); + Test(a.x == 0); + + // + // Test destroying a receiver + // + Alpha *a2 = new Alpha; + Register_Object(a2); + p->Post(1, a2, &n); + Test(p->PeekAtNextEvent()); + Unregister_Object(a2); + delete a2; + Test(!p->PeekAtNextEvent()); + + // + // Now test the flushing functions + // + q->Post(0, &a, &n); + q->Post(0, &a, &m); + a.FlushMatchingEvents(Alpha::message1ID); + Test(q->PeekAtNextEvent()->messageToSend->messageID == Alpha::message0ID); + a.FlushEvents(); + Test(!q->PeekAtNextEvent()); + + q->Post(0, &a, &n); + q->Post(0, &b, &m); + q->FlushMatchingEvents(Alpha::message1ID); + Test(q->PeekAtNextEvent()->messageToSend->messageID == Alpha::message0ID); + q->FlushAllEvents(); + Test(!q->PeekAtNextEvent()); + + // + // Get rid of the queues + // + Unregister_Object(p); + delete[] p; + + Unregister_Object(q); + delete q; + return True; +} diff --git a/CODE/RP/MUNGA/EVTSTAT.CPP b/CODE/RP/MUNGA/EVTSTAT.CPP new file mode 100644 index 0000000..776c518 --- /dev/null +++ b/CODE/RP/MUNGA/EVTSTAT.CPP @@ -0,0 +1,167 @@ +//===========================================================================// +// 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" + +#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 + iterator(&eventStatisticsSocket); + EventStatistics + *event_statistics; + + cout << "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; + + cout << "EventStatisticsManager::Report -\t"; + cout << event_statistics->classID << "\t"; + cout << event_statistics->messageID << "\t"; + cout << 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); + + cout << derivation->className << "::" + << handlers->GetName(event_statistics->messageID) << "\t"; + } + } + cout << "\n"; + } + iterator.DeletePlugs(); +} + diff --git a/CODE/RP/MUNGA/EVTSTAT.HPP b/CODE/RP/MUNGA/EVTSTAT.HPP new file mode 100644 index 0000000..fa0b305 --- /dev/null +++ b/CODE/RP/MUNGA/EVTSTAT.HPP @@ -0,0 +1,92 @@ +//===========================================================================// +// 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) +# include "receiver.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 + eventStatisticsSocket; + Logical + printedReport; + }; + + extern EventStatisticsManager + event_statistics_manager; + +#endif \ No newline at end of file diff --git a/CODE/RP/MUNGA/EXPLODE.HPP b/CODE/RP/MUNGA/EXPLODE.HPP new file mode 100644 index 0000000..23b8cc4 --- /dev/null +++ b/CODE/RP/MUNGA/EXPLODE.HPP @@ -0,0 +1,216 @@ +//===========================================================================// +// File: mover.hh // +// Project: MUNGA Brick: Model Manager // +// Contents: Interface specification for moving entity class // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 01/21/95 JMA Initial coding. // +// 12/27/95 GDU Splash Damage // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(EXPLODE_HPP) +# define EXPLODE_HPP + +# if !defined(ENTITY_HPP) +# include +# endif + +# if !defined(BOXSOLID_HPP) +# include +# endif + +# if !defined(TABLE_HPP) +# include +# endif + + //########################################################################## + //##################### Explosion::ModelResource ##################### + //########################################################################## + + struct Explosion__ModelResource + { + ObjectID + resourceTableObjectID; + Scalar + explosionDuration; + }; + + //########################################################################## + //########################### Explosion ############################## + //########################################################################## + + class Explosion__MakeMessage; + + class Damage; + class Mover; + + class Explosion: + public Entity + { + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Shared Data support + // + public: + static Derivation ClassDerivations; + + static SharedData DefaultData; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Model Support + // + public: + typedef Explosion__ModelResource + ModelResource; + + typedef void + (Explosion::*Performance)(Scalar time_slice); + + void + SetPerformance(Performance performance) + { + Check(this); + activePerformance = (Simulation::Performance)performance; + } + + void + ExplosionSimulation(Scalar time_slice); + + static ResourceDescription::ResourceID + Explosion::CreateModelResource( + ResourceFile *resource_file, + const char *model_name, + NotationFile *model_file, + const ResourceDirectories *directories + ); + + + typedef ChainIteratorOf EntityIterator; + + void + SplashDamage( + EntityID inflicting, + Damage &damage, + Scalar collisionRadius, + Vector3D offset = Vector3D::Identity, + Entity *exludedEntities = NULL + ); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Construction and Destruction + // + public: + typedef Explosion__MakeMessage + MakeMessage; + + static Explosion* + Make(MakeMessage *creation_message); + + Explosion( + MakeMessage *creation_message, + SharedData &virtual_data = DefaultData + ); + ~Explosion(); + + Logical + TestInstance() const; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Construction and Destruction + // + public: + Enumeration + GetInterestPriority(Entity *linked_entity); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Protected Data + // + protected: + Scalar + explosionDuration; + Entity + *entityHit; + Entity + *creatingEntity; + Point3D + localHitPosition; + }; + + //########################################################################## + //##################### Explosion::MakeMessage ####################### + //########################################################################## + + class Explosion__MakeMessage: + public Entity::MakeMessage + { + public: + EntityID + entityHitID; + EntityID + creatingEntityID; + + Explosion__MakeMessage( + Receiver::MessageID message_ID, + size_t length, + Entity::ClassID class_ID, + const EntityID &owner_ID, + ResourceDescription::ResourceID resource_ID, + LWord instance_flags, + const Origin &origin, + const EntityID &entity_hit_ID, + const EntityID &creating_entity_ID + ): + Entity::MakeMessage( + message_ID, + length, + class_ID, + owner_ID, + resource_ID, + instance_flags, + origin + ), + entityHitID(entity_hit_ID), + creatingEntityID(creating_entity_ID) + {} + }; + + //########################################################################## + //###################### ExplosionResourceTable ###################### + //########################################################################## + + class ExplosionResourceTable: + public Plug + { + public: + typedef PlugOf + ResourceIDPlug; + + ExplosionResourceTable(PlugStream *stream); + ~ExplosionResourceTable(); + + static void + BuildFromPage( + ObjectStream *stream, + NameList *name_list, + ClassID class_ID, + ObjectID object_ID + ); + + Logical + TestInstance() const; + + ResourceDescription::ResourceID + FindResourceID(Enumeration material_type); + ResourceDescription::ResourceID + FindResourceID(Entity *entity_hit); + + private: + TableOf + resourceIDSocket; + }; + +#endif diff --git a/CODE/RP/MUNGA/EXPTBL.HPP b/CODE/RP/MUNGA/EXPTBL.HPP new file mode 100644 index 0000000..32e1d0c --- /dev/null +++ b/CODE/RP/MUNGA/EXPTBL.HPP @@ -0,0 +1,236 @@ +//===========================================================================// +// File: exptbl.hpp // +// Title: Declaration of ExplosionTable, ExplosionTableEntry // +// Project: BattleTech // +// Purpose: A Structure To hold Explosion Information for An entity // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 11/23/95 JM Initial Coding // +//===========================================================================// + +#if !defined (EXPTBL_HPP) +# define EXPTBL_HPP + +# if !defined (PLUG_HPP) +# include +# endif + +# if !defined (TABLE_HPP) +# include +# endif + +# if !defined (RESOURCE_HPP) +# include +# endif + +# if !defined(ENTITYID_HPP) +# include +# endif + +# if !defined(CMPNNT_HPP) +# include +# endif + + class Entity; + class NotationFile; + class Point3D; + + //############################################################################## + //###################### Class ExplosionTableEntry ######################## + //############################################################################## + + class ExplosionTableEntry : public Plug + { + + protected: + + Scalar + damageLevel; + + Enumeration + graphicState; + + ResourceDescription::ResourceID + explosionResourceID; + + Scalar + timeDelay; + + public: + + ExplosionTableEntry(MemoryStream *exp_stream); + ~ExplosionTableEntry(); + + static Logical + CreateStreamedExplosion( + ResourceFile *resource_file, + CString exp_file_name, + NotationFile *exp_file, + CString exp_page_name, + MemoryStream *explosion_stream + ); + + ResourceDescription::ResourceID + GetExplosionResourceID() const + {Check(this); return explosionResourceID;} + + Scalar + GetDamageLevel() const + {Check(this); return damageLevel;} + + Enumeration + GetGraphicState() const + {Check(this); return graphicState;} + + Scalar + GetTimeDelay() const + {Check(this); return timeDelay;} + + void + CreateExplosion( + const EntityID &entity_hit_ID, + const EntityID &creating_entity_ID, + const Point3D &explode_position + ); + }; + + //############################################################################## + //######################## Class ExplosionTable ########################### + //############################################################################## + + // (Although sharing instance not fully implemented yet!) + // Note: Explosion tables specifically do not hold any references to any + // specific damage Zone as you will most likely be sharing instances of + // explosion tables across entity's, subsystem's, etc.. + // + class ExplosionTable : public TableOf + { + protected: + + typedef + TableIteratorOf + ExplosionTableIterator; + + public: + + ExplosionTable(MemoryStream *exp_stream); + ~ExplosionTable(); + + ExplosionTableEntry* + SelectDamageLevelEntry(Scalar damage_level); + + ExplosionTableEntry* + SelectGraphicStateEntry(Enumeration graphic_state); + + void + DamageExplosion( + const EntityID &entity_hit_ID, + const EntityID &creating_entity_ID, + Scalar damage_level, + const Point3D &explode_position + ) + { + Check(this); + ExplosionTableEntry *exp_entry = SelectDamageLevelEntry(damage_level); + if (exp_entry) + { + CreateExplosion( + exp_entry, + entity_hit_ID, + creating_entity_ID, + explode_position + ); + } + #if DEBUG_LEVEL>0 + else + { + Tell("DamageLevel = "); + Tell(damage_level); + Warn("not valid for ExplosionTable, no Explosion being created !\n"); + } + #endif + } + + void + CreateExplosion( + ExplosionTableEntry *explosion_entry, + const EntityID &entity_hit_ID, + const EntityID &creating_entity_ID, + Point3D explode_position // world coordinates + ); + + void + GraphicStateExplosion( + const EntityID &entity_hit_ID, + const EntityID &creating_entity_ID, + const Point3D &explode_position, + Enumeration graphic_state + ) + { + Check(this); + ExplosionTableEntry *exp_entry = SelectGraphicStateEntry(graphic_state); + if (exp_entry) + { + CreateExplosion( + exp_entry, + entity_hit_ID, + creating_entity_ID, + explode_position + ); + } + #if DEBUG_LEVEL>0 + else + { + Tell("DamageZone::GraphicState = "); + Tell(graphic_state); + Warn("not valid for ExplosionTable, no Explosion being created !\n"); + } + #endif + } + + Logical + CrossedDamageLevelThreshold(Scalar old_value, Scalar new_value); + + static Logical + CreateStreamedExplosionTable( + ResourceFile *resource_file, + CString model_name, + NotationFile *exp_file, + CString exp_filename, + MemoryStream *explosion_stream + ); + }; + + //########################################################################## + //###################### EntityEffectWatcher ######################### + //########################################################################## + + class EntityEffectWatcher : + public Component + { + protected: + + Scalar + *oldDamageLevel; + + Entity + *entityWatched; + + public: + + EntityEffectWatcher( + Entity *entity_watched + ); + + ~EntityEffectWatcher(); + + + Logical + TestInstance() const; + + void + Execute(); + + }; +#endif diff --git a/CODE/RP/MUNGA/EXTNTBOX.CPP b/CODE/RP/MUNGA/EXTNTBOX.CPP new file mode 100644 index 0000000..1d51057 --- /dev/null +++ b/CODE/RP/MUNGA/EXTNTBOX.CPP @@ -0,0 +1,280 @@ +//===========================================================================// +// File: extntbox.cc // +// Project: MUNGA Brick: Math Library // +// Contents: Implementation details of bounding box class // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 01/07/95 JMA Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1994,1995 Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(EXTNTBOX_HPP) +# include +#endif + +#if !defined(CSTR_HPP) + #include +#endif + +#if !defined(VECTOR3D_HPP) + #include +#endif + +#if !defined(NOTATION_HPP) + #include +#endif + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +#if defined(USE_SIGNATURE) + int + Is_Signature_Bad(const volatile ExtentBox *) + { + return False; + } +#endif + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +ExtentBox::ExtentBox( + const Vector3D &min, + const Vector3D &max +) +{ + Check_Pointer(this); + Check(&min); + Check(&max); + + if (min.x <= max.x) + { + minX = min.x; + maxX = max.x; + } + else + { + minX = max.x; + maxX = min.x; + } + + if (min.y <= max.y) + { + minY = min.y; + maxY = max.y; + } + else + { + minY = max.y; + maxY = min.y; + } + + if (min.z <= max.z) + { + minZ = min.z; + maxZ = max.z; + } + else + { + minZ = max.z; + maxZ = min.z; + } +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +ExtentBox::ExtentBox(const ExtentBox &box) +{ + Check_Pointer(this); + Check(&box); + + minX = box.minX; + maxX = box.maxX; + minY = box.minY; + maxY = box.maxY; + minZ = box.minZ; + maxZ = box.maxZ; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +ExtentBox& + ExtentBox::Intersect( + const ExtentBox &box_1, + const ExtentBox &box_2 + ) +{ + Check_Pointer(this); + Check(&box_1); + Check(&box_2); + + Verify(box_1.minX <= box_2.maxX); + Verify(box_1.maxX >= box_2.minX); + Verify(box_1.minY <= box_2.maxY); + Verify(box_1.maxY >= box_2.minY); + Verify(box_1.minZ <= box_2.maxZ); + Verify(box_1.maxZ >= box_2.minZ); + + minX = Max(box_1.minX, box_2.minX); + maxX = Min(box_1.maxX, box_2.maxX); + minY = Max(box_1.minY, box_2.minY); + maxY = Min(box_1.maxY, box_2.maxY); + minZ = Max(box_1.minZ, box_2.minZ); + maxZ = Min(box_1.maxZ, box_2.maxZ); + + return *this; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Vector3D* + ExtentBox::Constrain(Vector3D *point) const +{ + Check(this); + Check(point); + + Clamp(point->x,minX,maxX); + Clamp(point->y,minY,maxY); + Clamp(point->z,minZ,maxZ); + return point; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + ExtentBox::Contains(const Vector3D &point) const +{ + return + minX <= point.x && maxX >= point.x + && minY <= point.y && maxY >= point.y + && minZ <= point.z && maxZ >= point.z; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + ExtentBox::Contains(const ExtentBox &box) const +{ + return + minX <= box.minX && maxX >= box.maxX + && minY <= box.minY && maxY >= box.maxY + && minZ <= box.minZ && maxZ >= box.maxZ; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + ExtentBox::Intersects(const ExtentBox &box) const +{ + return + minX <= box.maxX && maxX >= box.minX + && minY <= box.maxY && maxY >= box.minY + && minZ <= box.maxZ && maxZ >= box.minZ; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + ExtentBox::TestInstance() const +{ + return minX<=maxX && minY<=maxY && minZ<=maxZ; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +ostream& + operator<<( + ostream& stream, + const ExtentBox& e + ) +{ + return stream << '[' << e.minX << ".." << e.maxX << "],[" << e.minY << ".." + << e.maxY << "],[" << e.minZ << ".." << e.maxZ << ']'; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~ ExtentBox functions ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + Convert_From_Ascii( + const char *str, + ExtentBox *extent_box + ) +{ + Check_Pointer(str); + Check_Signature(extent_box); + + CString parse_string(str); + Check(&parse_string); + + Check_Pointer(parse_string.GetNthToken(0)); + extent_box->minX = atof(parse_string.GetNthToken(0)); + + Check_Pointer(parse_string.GetNthToken(1)); + extent_box->minY = atof(parse_string.GetNthToken(1)); + + Check_Pointer(parse_string.GetNthToken(2)); + extent_box->minZ = atof(parse_string.GetNthToken(2)); + + Check_Pointer(parse_string.GetNthToken(3)); + extent_box->maxX = atof(parse_string.GetNthToken(3)); + + Check_Pointer(parse_string.GetNthToken(4)); + extent_box->maxY = atof(parse_string.GetNthToken(4)); + + Check_Pointer(parse_string.GetNthToken(5)); + extent_box->maxZ = atof(parse_string.GetNthToken(5)); + + Check(extent_box); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// + +ExtentBox * + MakeExistanceBoxStream( + NotationFile *notation_file, + int *size + ) +{ + + char page_name[50]; + + if (!notation_file->GetEntry("COLLISION", "extentcount", size)) + { + cerr << "No 'COLLISION' entry!!!!!" << endl; + Exit(AbortExitCodeID); + } + + ExtentBox *extents = new ExtentBox[*size]; + + for (int j=0; j < *size; ++j) + { + sprintf(page_name, "extent %d", j); + + int errorvalue = 0; + + errorvalue |= !notation_file->GetEntry(page_name, "extminX", &extents[j].minX); + errorvalue |= !notation_file->GetEntry(page_name, "extmaxX", &extents[j].maxX); + errorvalue |= !notation_file->GetEntry(page_name, "extminY", &extents[j].minY); + errorvalue |= !notation_file->GetEntry(page_name, "extmaxY", &extents[j].maxY); + errorvalue |= !notation_file->GetEntry(page_name, "extminZ", &extents[j].minZ); + errorvalue |= !notation_file->GetEntry(page_name, "extmaxZ", &extents[j].maxZ); + + if ( errorvalue ) + { + Tell("Extent number : " << j << " is does not have valid slice extents " << endl); + Exit(AbortExitCodeID); + } + + } + + return extents; + +} diff --git a/CODE/RP/MUNGA/EXTNTBOX.HPP b/CODE/RP/MUNGA/EXTNTBOX.HPP new file mode 100644 index 0000000..685eba2 --- /dev/null +++ b/CODE/RP/MUNGA/EXTNTBOX.HPP @@ -0,0 +1,110 @@ +//===========================================================================// +// File: extntbox.hh // +// Project: MUNGA Brick: Math Library // +// Contents: Interface specification of bounding box class // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 01/07/95 JMA Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995 Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(EXTNTBOX_HPP) +# define EXTNTBOX_HPP + +# if !defined(SCALAR_HPP) +# include +# endif + + class Vector3D; + class NotationFile; + + //~~~~~~~~~~~~~~~~~~~~~~~~~ ExtentBox ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class ExtentBox + { + public: + #if defined(USE_SIGNATURE) + friend int + Is_Signature_Bad(const volatile ExtentBox *); + #endif + + Scalar + minX, + maxX, + minY, + maxY, + minZ, + maxZ; + + ExtentBox() {} + ExtentBox( + const Vector3D &min, + const Vector3D &max + ); + ExtentBox(const ExtentBox &box); + + const Scalar& + operator[](int index) const + {Check(this); return (&minX)[index];} + Scalar& + operator[](int index) + {Check(this); return (&minX)[index];} + + ExtentBox& + Intersect( + const ExtentBox &box_1, + const ExtentBox &box_2 + ); + Vector3D* + Constrain(Vector3D *point) const; + + Logical + Contains(const Vector3D &point) const; + Logical + Contains(const ExtentBox &box) const; + Logical + Intersects(const ExtentBox &box) const; + + Logical + TestInstance() const; + static Logical + TestClass(); + friend ostream& + operator<<( + ostream& stream, + const ExtentBox& e + ); + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~ ExtentBox functions ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + void + Convert_From_Ascii( + const char *str, + ExtentBox *extent_box + ); + + inline MemoryStream& + MemoryStream_Read( + MemoryStream* stream, + ExtentBox *output + ) + {return stream->ReadBytes(output, sizeof(*output));} + inline MemoryStream& + MemoryStream_Write( + MemoryStream* stream, + const ExtentBox *input + ) + {return stream->WriteBytes(input, sizeof(*input));} + + ExtentBox * + MakeExistanceBoxStream( + NotationFile *notation_file, + int *size + ); + +#endif diff --git a/CODE/RP/MUNGA/EYECANDY.CPP b/CODE/RP/MUNGA/EYECANDY.CPP new file mode 100644 index 0000000..88affd6 --- /dev/null +++ b/CODE/RP/MUNGA/EYECANDY.CPP @@ -0,0 +1,262 @@ +//===========================================================================// +// File: eyecandy.cpp // +// Project: MUNGA Brick: Model Manager // +// Contents: Implementation details of moving entity class // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 01/21/95 JSE Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(RANDOM_HPP) +# include +#endif + +#if !defined(EYECANDY_HPP) +# include +#endif + +#if !defined(APP_HPP) + #include +#endif + +#if !defined(NOTATION_HPP) + #include +#endif + +//############################################################################# +// Shared Data Support +// +EyeCandy::SharedData + EyeCandy::DefaultData( + EyeCandy::ClassDerivations, + EyeCandy::MessageHandlers, + EyeCandy::AttributeIndex, + EyeCandy::StateCount, + (Entity::MakeHandler)EyeCandy::Make + ); + +Derivation + EyeCandy::ClassDerivations( + Entity::ClassDerivations, + "EyeCandy" + ); + +//############################################################################# +//############################### EyeCandy ################################# +//############################################################################# + +void + EyeCandy::EyeCandySimulation(Scalar) +{ + Check(application); + + if (simulationState.GetState() == effectOn) + { + simulationState.SetState(effectOff); + } + + Scalar now = Now(); + if ((now - lastTrigger) >= waitTime) + { + simulationState.SetState(effectOn); + lastTrigger = now; + + RandomGenerator random_number; + waitTime = minWaitTime + (maxWaitTime - minWaitTime) * random_number; + } +} + +//############################################################################# +// Construction and Destruction +// + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +EyeCandy::EyeCandy( + EyeCandy::MakeMessage *creation_message , + EyeCandy::SharedData &virtual_data +): + Entity(creation_message, virtual_data) +{ + Check_Pointer(this); + Check_Pointer(creation_message); + SetPerformance(&EyeCandy::EyeCandySimulation); + SetValidFlag(); + + // + //------------------------------------------------- + // Find the EyeCandy in the resource + //------------------------------------------------- + // + ResourceFile *res_file = application->GetResourceFile(); + Check(res_file); + ResourceDescription *res = + res_file->SearchList( + resourceID, + ResourceDescription::GameModelResourceType + ); + Check(res); + res->Lock(); + + ModelResource *eyecandy_res = (ModelResource*)res->resourceAddress; + maxWaitTime = eyecandy_res->maxWaitTime; + minWaitTime = eyecandy_res->minWaitTime; + res->Unlock(); + + waitTime = minWaitTime + (maxWaitTime - minWaitTime) * Random; + + simulationState.SetState(effectOff); + lastTrigger = Now(); + + +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +EyeCandy* + EyeCandy::Make(EyeCandy::MakeMessage *creation_message) +{ + return new EyeCandy(creation_message); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + EyeCandy::CreateMakeMessage( + MakeMessage *creation_message, + NotationFile *model_file, + const ResourceDirectories *directories + ) +{ + Check(creation_message); + Check(model_file); + + if (!Entity::CreateMakeMessage(creation_message, model_file, directories)) + { + return False; + } + + creation_message->classToCreate = RegisteredClass::EyeCandyClassID; + creation_message->instanceFlags = HermitInstance|DynamicFlag|TrappedFlag; + return True; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +EyeCandy::~EyeCandy() +{ +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// + +ResourceDescription::ResourceID + EyeCandy::CreateModelResource( +#if DEBUG_LEVEL>0 + ResourceFile *resource_file, + const char* model_name, + NotationFile * model_file, + const ResourceDirectories *directories, + ModelResource *model +#else + ResourceFile *resource_file, + const char* model_name, + NotationFile * model_file, + const ResourceDirectories *, + ModelResource *model +#endif + ) +{ + Check(resource_file); + Check_Pointer(model_name); + Check_Pointer(directories); + + // + // If we were not provided a buffer to write the model data into, we must + // create it ourselves. Then make sure that the model stuff is read in + // + ModelResource *local_model = model; + if (!local_model) + { + local_model = new ModelResource; + Register_Pointer(local_model); + } + + //---------------------------------------- + // Read in the data from notation file + //---------------------------------------- + // + // Get PointValue assigned to this ScoreZone + // + + if( + !model_file->GetEntry( + "gamedata", + "MaxWaitTime", + &local_model->maxWaitTime + ) + ) + { + cerr << model_name << "Missing MaxWaitTime" << endl; +Dump_And_Die: + if (!model) + { + Unregister_Pointer(local_model); + delete local_model; + } + return -1; + } + + if( + !model_file->GetEntry( + "gamedata", + "MinWaitTime", + &local_model->minWaitTime + ) + ) + { + cerr << model_name << "Missing MinWaitTime" << endl; + goto Dump_And_Die; + } + + // + //--------------------------- + // Write out the new resource + //--------------------------- + // + if (!model) + { + ResourceDescription *new_res = + resource_file->AddResource( + model_name, + ResourceDescription::GameModelResourceType, + 1, + ResourceDescription::Preload, + local_model, + sizeof(*local_model) + ); + Unregister_Pointer(local_model); + delete local_model; + Check(new_res); + return new_res->resourceID; + } + else + { + return 0; + } +} + +Logical + EyeCandy::TestInstance() const +{ + return IsDerivedFrom(ClassDerivations); +} + diff --git a/CODE/RP/MUNGA/EYECANDY.HPP b/CODE/RP/MUNGA/EYECANDY.HPP new file mode 100644 index 0000000..e2d3424 --- /dev/null +++ b/CODE/RP/MUNGA/EYECANDY.HPP @@ -0,0 +1,120 @@ +//===========================================================================// +// File: eyecandy.hpp // +// Project: MUNGA Brick: Model Manager // +// Contents: Interface specification for moving entity class // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 01/21/95 JSE Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(EYECANDY_HPP) +# define EYECANDY_HPP + +# if !defined(ENTITY_HPP) +# include +# endif + + //########################################################################## + //##################### EyeCandy::ModelResource ##################### + //########################################################################## + + struct EyeCandy__ModelResource + { + Scalar + maxWaitTime; + Scalar + minWaitTime; + + }; + + //########################################################################## + //########################### EyeCandy ############################### + //########################################################################## + + class EyeCandy: + public Entity + { + public: + enum { + effectOff = Entity::StateCount, + effectOn, + StateCount + }; + + private: + Scalar + maxWaitTime; + Scalar + minWaitTime; + Scalar + waitTime; + Scalar + lastTrigger; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Shared Data support + // + public: + static Derivation ClassDerivations; + + static SharedData DefaultData; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Model Support + // + public: + typedef void + (EyeCandy::*Performance)(Scalar time_slice); + + void + SetPerformance(Performance performance) + { + Check(this); + activePerformance = (Simulation::Performance)performance; + } + + void + EyeCandySimulation(Scalar time_slice); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Construction and Destruction + // + public: + + typedef EyeCandy__ModelResource ModelResource; + + static EyeCandy* + Make(EyeCandy::MakeMessage *creation_message); + + EyeCandy( + MakeMessage *creation_message, + SharedData &virtual_data = DefaultData + ); + ~EyeCandy(); + + Logical + TestInstance() const; + + static Logical + CreateMakeMessage( + MakeMessage *creation_message, + NotationFile *model_file, + const ResourceDirectories *directories + ); + + static ResourceDescription::ResourceID + EyeCandy::CreateModelResource( + ResourceFile *resource_file, + const char* model_name, + NotationFile * model_file, + const ResourceDirectories *directories, + ModelResource *model = NULL + ); + + }; +#endif diff --git a/CODE/RP/MUNGA/FILESTRM.CPP b/CODE/RP/MUNGA/FILESTRM.CPP new file mode 100644 index 0000000..2e0c223 --- /dev/null +++ b/CODE/RP/MUNGA/FILESTRM.CPP @@ -0,0 +1,152 @@ +#include +#pragma hdrstop + +#if !defined(FILESTRM_HPP) +# include +#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; + fileHandle = -1; + currentPosition = streamStart = NULL; + streamSize = 0; + if (file_name) + { + Check_Pointer(file_name); + fileHandle = OpenImplementation(file_name, readOnly); + } + + if (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 (fileHandle != -1) + { + CloseImplementation(fileHandle); + } + fileHandle = -1; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + FileStream::SetPointer(size_t index) +{ + Check(this); + Verify(fileHandle != -1); + + currentPosition = (char*)SeekImplementation(fileHandle, index); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +MemoryStream& + FileStream::AdvancePointer(size_t index) +{ + Check(this); + Verify(fileHandle != -1); + + currentPosition = + (char*)SeekImplementation(fileHandle, (size_t)currentPosition + index); + return *this; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +MemoryStream& + FileStream::RewindPointer(size_t index) +{ + Check(this); + Verify(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(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(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; +} + diff --git a/CODE/RP/MUNGA/FILESTRM.HPP b/CODE/RP/MUNGA/FILESTRM.HPP new file mode 100644 index 0000000..d03e7ea --- /dev/null +++ b/CODE/RP/MUNGA/FILESTRM.HPP @@ -0,0 +1,118 @@ +//===========================================================================// +// 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 +# 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 fileHandle != -1;} + + Logical + TestInstance() const; + + protected: + int fileHandle; + Logical readOnly; + + static int + OpenImplementation( + const char* file_name, + Logical read_only + ); + static void + CloseImplementation(int file_handle); + static size_t + SeekImplementation( + int file_handle, + size_t where, + Logical from_end = False + ); + static size_t + ReadImplementation( + int file_handle, + void *buffer, + size_t length + ); + static size_t + WriteImplementation( + int file_handle, + const void* buffer, + size_t length + ); + }; + +#endif + diff --git a/CODE/RP/MUNGA/FILESTUB.CPP b/CODE/RP/MUNGA/FILESTUB.CPP new file mode 100644 index 0000000..5a4936c --- /dev/null +++ b/CODE/RP/MUNGA/FILESTUB.CPP @@ -0,0 +1,77 @@ +#include +#pragma hdrstop + +#if !defined(FILESTRM_HPP) +# include +#endif + +#include +#include +#include + +//############################################################################# +//########################### FileStream ################################ +//############################################################################# + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +int + FileStream::OpenImplementation( + const char *file_name, + Logical read_only + ) +{ + if (read_only) + { + return open(file_name, O_BINARY|O_RDONLY); + } + else + { + return open(file_name, O_BINARY|O_CREAT|O_TRUNC|O_WRONLY, S_IWRITE); + } +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + FileStream::CloseImplementation(int file_handle) +{ + close(file_handle); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +size_t + FileStream::SeekImplementation( + int file_handle, + size_t where, + Logical from_end + ) +{ + return lseek(file_handle, (long)where, (from_end) ? SEEK_END : SEEK_SET); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +size_t + FileStream::ReadImplementation( + int file_handle, + void *buffer, + size_t length + ) +{ + return read(file_handle, buffer, length); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +size_t + FileStream::WriteImplementation( + int file_handle, + const void *buffer, + size_t length + ) +{ + return write(file_handle, buffer, length); +} + diff --git a/CODE/RP/MUNGA/FILEUTIL.HPP b/CODE/RP/MUNGA/FILEUTIL.HPP new file mode 100644 index 0000000..3593aa9 --- /dev/null +++ b/CODE/RP/MUNGA/FILEUTIL.HPP @@ -0,0 +1,177 @@ +//===========================================================================// +// File: fileutil.hh // +// Title: General File Utilities // +// Project: Tool Architecture II // +// Author: Jerry Edsall // +// Purpose: Provide mechanism for keeping work directories // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 02/23/95 JSE Initial Coding // +// 03/01/95 KEO Cleanup and enhancements. // +//---------------------------------------------------------------------------// +// Copyright (c) 1995 Virtual World Entertainment, Inc. // +// All rights reserved worldwide. // +// This unpublished source code is PROPRIETARY and CONFIDENTIAL. // +//===========================================================================// + +#if !defined(FILEUTIL_HPP) + #define FILEUTIL_HPP + + //--------------- + // munga headers + //--------------- + #if !defined(STYLE_HPP) + #include + #endif + + #if !defined(SCALAR_HPP) + #include + #endif + + class NotationFile; + + extern char *WorkingDirectory; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + extern const char *White_Space; + + inline char* + NextToken() + { return strtok(NULL, White_Space); } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + void + SetSourceDirectory(const char *input_file); + void + SetOutputDirectory(const char *directory); + const char* + GetSourceDirectory(); + const char* + GetConfigDirectory(); + const char* + GetMaterialDirectory(); + const char* + GetTextureDirectory(); + const char* + GetAnimationDirectory(); + const char* + GetProductionDirectory(); + const char* + GetOutputDirectory(); + void + ClearDirectories(); + const char* + SourceFile( + const char *filename, + const char *extension = NULL + ); + const char* + ConfigFile( + const char *filename, + const char *extension = NULL + ); + const char* + MaterialFile( + const char *filename, + const char *extension = NULL + ); + const char* + TextureFile( + const char *filename, + const char *extension = NULL + ); + const char* + AnimationFile( + const char *filename, + const char *extension = NULL + ); + const char* + OutputFile( + const char *filename, + const char *extension = NULL + ); + const char* + StripDirectory(const char *filename); + const char* + StripExtension(const char *filename); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + char* + Ind(int level = 1); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Logical + GetLine( + istream &stream, + char *buffer, + int size_of_buffer + ); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +#if 0 + char* + stripname(char filename[]); +#endif + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Scalar + D2R(float degrees); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + char* + MakeWorkingDirectory( + const char *file + ); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Logical + DirectoryIsSpecified( + const char *file + ); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + char* + MakePathedFilename( + const char *directory, + const char *name + ); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + void + OpenOutput( + ofstream &stream, + const char *directory, + const char *filename + ); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + void + OpenInput( + ifstream &stream, + char *directory, + const char *filename + ); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Logical + DoesNotationFileExist( + NotationFile + *notation_file + ); + +#endif + +//============================================================================= diff --git a/CODE/RP/MUNGA/GAUGALRM.CPP b/CODE/RP/MUNGA/GAUGALRM.CPP new file mode 100644 index 0000000..62fa09f --- /dev/null +++ b/CODE/RP/MUNGA/GAUGALRM.CPP @@ -0,0 +1,437 @@ +//===========================================================================// +// File: gaugalrm.cpp // +// 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 // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(GAUGALRM_HPP) +# include +#endif + +#if !defined(APP_HPP) +# include +#endif + +#if !defined(NOTATION_HPP) +# include +#endif + +#if !defined(NAMELIST_HPP) +# include +#endif + +#if !defined(ENTITY_HPP) +# include +#endif + +#if !defined(SUBSYSTM_HPP) +# include +#endif + +// #define LOCAL_TEST + +#if defined(LOCAL_TEST) +# define Test_Tell(n) DEBUG_STREAM << n +#else +# define Test_Tell(n) +#endif + +//####################################################################### +// GaugeAlarm +//####################################################################### +GaugeAlarm::GaugeAlarm( + Entity *the_entity, + Subsystem *the_subsystem, + Enumeration the_condition +) : + Node(RegisteredClass::GaugeAlarmClassID), + lampList(NULL) +{ + Check(the_entity); + Check(the_subsystem); + + Test_Tell( + "GaugeAlarm(" << the_entity << + ", " << the_subsystem << + ", " << the_condition << + ")\n" + ); + + entity = the_entity; + subsystem = the_subsystem; + conditionIndex = the_condition; + Check_Fpu(); +} + +GaugeAlarm::~GaugeAlarm() +{ + Test_Tell("~GaugeAlarm()"); + Check(this); + + ChainIteratorOf + i(lampList); + Lamp + *lamp_pointer; + + while ((lamp_pointer=i.ReadAndNext()) != NULL) + { + Check(lamp_pointer); + Test_Tell("lamp "); + lamp_pointer->SetAlertState(False); + } + Test_Tell("\n"); + Check_Fpu(); +} + +Logical + GaugeAlarm::TestInstance() const +{ + return Node::TestInstance(); +} + + +//####################################################################### +// GaugeAlarmManager +//####################################################################### +Logical + GaugeAlarmManager::CreateGaugeAlarmStreamItem( + MemoryStream */*mem_stream*/, + const char */*alarm_name*/, + const char */*alarm_data*/ + ) +{ + Fail("GaugeAlarmManager::CreateGaugeAlarmStreamItem not overridden!"); + return False; +} + +void + GaugeAlarmManager::ReadGaugeAlarmStreamItem( + GaugeAlarm */*alarm*/, + Entity */*the_entity*/, + Subsystem */*the_subsystem*/, + Enumeration /*the_condition*/, + MemoryStream */*mem_stream*/ + ) +{ + Fail("GaugeAlarmManager::ReadGaugeAlarmStreamItem not overridden!"); +} + +ResourceDescription::ResourceID + GaugeAlarmManager::CreateModelGaugeAlarmStreamResource( + ResourceFile *resource_file, + const char *model_name, + NotationFile *model_file, + const ResourceDirectories */*directories*/ + ) +{ + Check(resource_file); + Check_Pointer(model_name); + Check(model_file); + + int + i; + ResourceDescription::ResourceID + res_id = ResourceDescription::NullResourceID; + + //------------------------------------------------------------- + // Make sure the notation file is in relaxed operation mode + //------------------------------------------------------------- + Enumeration + old_notation_file_mode = model_file->GetModes(); + + model_file->SetMode( + NotationFile::RelaxedOperationModes | NotationFile::SkipBlanksListMode + ); + //------------------------------------------------------------- + // Build a list of all the alarm entries for the gauge renderer + //------------------------------------------------------------- + NameList + *alarm_list = model_file->MakeEntryList("gaugeAlarm"); + + if (alarm_list != NULL) + { + Test_Tell( + "Processing model gauge alarm data for '" << model_name << "':" + ); + Register_Object(alarm_list); + //------------------------------------------------------------- + // Get the number of alarms + //------------------------------------------------------------- + Logical + built_ok = True; + int + alarm_count = alarm_list->EntryCount(); + + Test_Tell(alarm_count << " entries.\n"); + Verify(alarm_count > 0); + //------------------------------------------------------------- + // Create a dynamic memory stream + //------------------------------------------------------------- + DynamicMemoryStream + *alarm_stream = new DynamicMemoryStream(); + Register_Object(alarm_stream); + //------------------------------------------------------------- + // Write the number of alarms to the stream + //------------------------------------------------------------- + MemoryStream_Write(alarm_stream, &alarm_count); + //------------------------------------------------------------- + // Write the alarms to the stream + //------------------------------------------------------------- + NameList::Entry + *alarm_entry = alarm_list->GetFirstEntry(); + + for(i=0; iGetName(), + alarm_entry->GetChar() + ) + == False + ) + { + DEBUG_STREAM << + "Model file '" << model_name << + "' has undefined alarm type '" << alarm_entry->GetName() << + "' - resource not built.\n"; + built_ok = False; + break; + } + alarm_entry = alarm_entry->GetNextEntry(); + } + //------------------------------------------------------------- + // Create the resource description, assign an ID + //------------------------------------------------------------- + if (built_ok) + { + Test_Tell("Creating resource description for '"<AddResourceMemoryStream( + model_name, + ResourceDescription::GaugeAlarmStreamResourceType, + 1, // priority + ResourceDescription::Preload, + alarm_stream + ); + + Check(res_desc_stream); + res_id = res_desc_stream->resourceID; + } + + Unregister_Object(alarm_stream); + delete alarm_stream; + Test_Tell("Closed gauge alarm stream\n" << flush); + Test_Tell("res_id = " << res_id << "\n"); + } + //------------------------------------------------------------- + // Restore the notation file's previous operation mode + //------------------------------------------------------------- + model_file->PutModes(old_notation_file_mode); + //------------------------------------------------------------- + // Return the new ResourceID + //------------------------------------------------------------- + Check_Fpu(); + return res_id; +} + +GaugeAlarmManager::GaugeAlarmManager() : + gaugeAlarmList(NULL) +{ + Check_Fpu(); +} + +GaugeAlarmManager::~GaugeAlarmManager() +{ + Check(this); + Check_Fpu(); +} + +Logical + GaugeAlarmManager::TestInstance() const +{ + return True; +} + +void + GaugeAlarmManager::RemoveAllAlarms() +{ + Check(this); + + //------------------------------------------- + // Delete all GaugeAlarms + //------------------------------------------- + ChainIteratorOf + i(gaugeAlarmList); + GaugeAlarm + *alarm_pointer; + + while ((alarm_pointer=i.ReadAndNext()) != NULL) + { + Check(alarm_pointer); + Unregister_Object(alarm_pointer); + delete alarm_pointer; + } + Check_Fpu(); +} + +void + GaugeAlarmManager::Activate( + Entity *entity, + Subsystem *subsystem, + Enumeration condition, + ResourceDescription::ResourceID new_resource_id + ) +{ + Test_Tell( + "GaugeAlarmManager::Activate(" << entity << + ", " << subsystem << + ", " << condition << + ", " << new_resource_id << + ")\n"; + ); + Check(this); + + Check(application); + Check(application->GetResourceFile()); + //------------------------------------------- + // Attempt to find the specified resource + //------------------------------------------- + ResourceDescription + *stream_resource_description = + application->GetResourceFile()->SearchList( + new_resource_id, + ResourceDescription::GaugeAlarmStreamResourceType + ); + + if (stream_resource_description == NULL) + { + Test_Tell( + "GaugeAlarmManager::Activate: resource ID '" << new_resource_id << + "' does not exist\n" + ); + } + else + { + //------------------------------------------- + // Lock the stream + //------------------------------------------- + stream_resource_description->Lock(); + //------------------------------------------- + // Found it, open a DynamicMemoryStream + //------------------------------------------- + DynamicMemoryStream + *dynamic_memory_stream = + new DynamicMemoryStream( + stream_resource_description->resourceAddress, + stream_resource_description->resourceSize + ); + if (dynamic_memory_stream == NULL) + { + Test_Tell("GaugeAlarmManager::Activate: couldn't open stream\n"); + } + else + { + Register_Object(dynamic_memory_stream); + //------------------------------------------- + // Create the object, add to alarm list + //------------------------------------------- + GaugeAlarm + *alarm = new GaugeAlarm( + entity, + subsystem, + condition + ); + Register_Object(alarm); + gaugeAlarmList.Add(alarm); + //------------------------------------------- + // Read the alarm items from the stream + //------------------------------------------- + int + alarm_count; + MemoryStream_Read(dynamic_memory_stream, &alarm_count); + Verify(alarm_count > 0); + + for(; alarm_count>0; --alarm_count) + { + ReadGaugeAlarmStreamItem( + alarm, + entity, + subsystem, + condition, + dynamic_memory_stream + ); + } + //------------------------------------------- + // Destroy the stream + //------------------------------------------- + Unregister_Object(dynamic_memory_stream); + delete dynamic_memory_stream; + } + //------------------------------------------- + // Unlock the stream + //------------------------------------------- + stream_resource_description->Unlock(); + } + Check_Fpu(); +} + +void + GaugeAlarmManager::Deactivate( + Entity *entity, + Subsystem *subsystem, + Enumeration condition + ) +{ + Test_Tell( + "GaugeAlarmManager::Deactivate(" << entity << + ", " << subsystem << + ", " << condition << + ")\n"; + ); + Check(this); + //------------------------------------------- + // Find matching GaugeAlarm + //------------------------------------------- + ChainIteratorOf + i(gaugeAlarmList); + GaugeAlarm + *alarm_pointer; + + while ((alarm_pointer=i.ReadAndNext()) != NULL) + { + Check(alarm_pointer); + Test_Tell("pointer=" << alarm_pointer); + if (alarm_pointer->entity == entity) + { + if (alarm_pointer->subsystem == subsystem) + { + if (alarm_pointer->conditionIndex == condition) + { + Test_Tell("Found:"); + Unregister_Object(alarm_pointer); + delete alarm_pointer; + break; + } + } + } + Test_Tell("\n"); + } + Check_Fpu(); +} + + diff --git a/CODE/RP/MUNGA/GAUGALRM.HPP b/CODE/RP/MUNGA/GAUGALRM.HPP new file mode 100644 index 0000000..3b10dbd --- /dev/null +++ b/CODE/RP/MUNGA/GAUGALRM.HPP @@ -0,0 +1,128 @@ +//===========================================================================// +// 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(GAUGALRM_HPP) +# define GAUGALRM_HPP + + class GaugeAlarm; + class GaugeAlarmManager; + +# if !defined(RESOURCE_HPP) +# include +# endif + +# if !defined(CHAIN_HPP) +# include +# endif + +# if !defined(LAMP_HPP) +# include +# endif + + //####################################################################### + // GaugeAlarm + //####################################################################### + class GaugeAlarm : + public Node + { + friend class GaugeAlarmManager; + + protected: + GaugeAlarm( + Entity *entity, + Subsystem *subsystem, + Enumeration condition + ); + + ~GaugeAlarm(); + + public: + Logical + TestInstance() const; + protected: + Entity + *entity; + Subsystem + *subsystem; + int + conditionIndex; + public: + ChainOf // descendants of GaugeAlarmManager need to see this + lampList; + }; + + //####################################################################### + // GaugeAlarmManager + //####################################################################### + class GaugeAlarmManager SIGNATURED + { + friend class GaugeAlarm; + friend class GaugeRenderer; + protected: + GaugeAlarmManager(); + public: + virtual ~GaugeAlarmManager(); + //-------------------------------------------------------------------- + // Resource methods + //-------------------------------------------------------------------- + public: + ResourceDescription::ResourceID + CreateModelGaugeAlarmStreamResource( + ResourceFile *resource_file, + const char *model_name, + NotationFile *model_file, + const ResourceDirectories */*directories*/ + ); + + virtual Logical + CreateGaugeAlarmStreamItem( + MemoryStream *mem_stream, + const char *alarm_name, + const char *alarm_data + ); + virtual void + ReadGaugeAlarmStreamItem( + GaugeAlarm *alarm, + Entity *the_entity, + Subsystem *the_subsystem, + Enumeration the_condition, + MemoryStream *mem_stream + ); + + void + RemoveAllAlarms(); + void + Activate( + Entity *entity, + Subsystem *subsystem, + Enumeration condition, + ResourceDescription::ResourceID resource_ID + ); + void + Deactivate( + Entity *entity, + Subsystem *subsystem, + Enumeration condition + ); + + public: + Logical + TestInstance() const; + + protected: + ChainOf + gaugeAlarmList; + }; + +#endif + diff --git a/CODE/RP/MUNGA/GAUGE.TCP b/CODE/RP/MUNGA/GAUGE.TCP new file mode 100644 index 0000000..944919c --- /dev/null +++ b/CODE/RP/MUNGA/GAUGE.TCP @@ -0,0 +1,144 @@ +//==========================================================================// +// File: gauge.tst // +// Project: MUNGA Brick: Gauge module // +// Contents: Test code for gauge classes // +//--------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ----------------------------------------------------------// +// 02/10/95 CPB Initial coding. // +//--------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//==========================================================================// + +class FakeGauge : + public Gauge +{ +public: + FakeGauge(GaugeRenderer *renderer, unsigned int owner_ID); + ~FakeGauge(); + + void + Execute(); + + Scalar + myScalar; +}; + +FakeGauge::FakeGauge(GaugeRenderer *renderer, unsigned int owner_ID) : + Gauge((GaugeRate) gaugeRate_A, (ModeMask) -1L, renderer, owner_ID) +{ + myScalar = 0.0f; +} + +FakeGauge::~FakeGauge() +{ +} + +void + FakeGauge::Execute() +{ + myScalar = 2.0f; +} + +// +//########################################################################### +//########################################################################### +// +Logical + Gauge::TestClass() +{ +#if 0 + Tell("Starting Gauge test...\n"); + unsigned int fakeOwnerID(1); + + // + //-------------------------------------------------------- + // Test GaugeConnectionDirectOf... + //-------------------------------------------------------- + // + { + Scalar scalar1(0.0); + Scalar scalar2(1.5f); + // + // Create a GaugeConnection + // + GaugeConnectionDirectOf *instance1; + instance1 = new GaugeConnectionDirectOf(0, &scalar2, &scalar1); + Check(instance1); + Register_Object(instance1); + // + // Try it out + // + instance1->Update(); + Test(scalar2 == 0.0f); + // + // Destroy it + // + Unregister_Object(instance1); + delete instance1; + } + // + //-------------------------------------------------------- + // Test Gauge + //-------------------------------------------------------- + // + { + Scalar source(1.5f); + // + // Create a gauge + // + FakeGauge testGauge(NULL, fakeOwnerID); + Check(&testGauge); + Register_Object(&testGauge); + // + // Create a connection and add it to the gauge + // + GaugeConnectionDirectOf *instance1; + instance1 = new GaugeConnectionDirectOf( + 0, + &testGauge.myScalar, + &source + ); + Check(instance1); + Register_Object(instance1); + + testGauge.AddConnection(instance1); + #if 0 + // + // See if the connection works + // + Test(testGauge.myScalar == 0.0f); + testGauge.UpdateParameters(); + Test(testGauge.myScalar == 1.5f); + // + // See if Execute() occurs + // + testGauge.Execute(); + Test(testGauge.myScalar == 2.0f); + // + // Remove the connection, and ensure that the value doesn't change + // + testGauge.RemoveConnection(0); + source = 3.0f; + testGauge.UpdateParameters(); + Test(testGauge.myScalar == 2.0f); + #endif + // + // Everything seems ok! Unregister the gauge and delete it + // Note that RemoveConnection should have deleted the GaugeConnection. + // If it didn't, we'll hear about it when we check the + // remaining registered objects. + // + Unregister_Object(&testGauge); + } + // + //-------------------------------------------------------- + // Return test result + //-------------------------------------------------------- + // +#endif + return True; +} + diff --git a/CODE/RP/MUNGA/GAUGMAP.HPP b/CODE/RP/MUNGA/GAUGMAP.HPP new file mode 100644 index 0000000..27d3cd3 --- /dev/null +++ b/CODE/RP/MUNGA/GAUGMAP.HPP @@ -0,0 +1,165 @@ +//===========================================================================// +// File: gaugmap.hpp // +// Project: MUNGA Brick: Gauge Renderer // +// Contents: // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 05/17/95 CPB Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. All rights reserved // +// PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(GAUGMAP_HPP) +# define GAUGMAP_HPP + +# if !defined(RESOURCE_HPP) +# include +# endif + +# if !defined(NODE_HPP) +# include +# endif + +# if !defined(SCALAR_HPP) +# include +# endif + +# if !defined(CHAIN_HPP) +# include +# endif + + class Entity; + class GaugeEntityList; + class GaugeEntityArray; + class Derivation; + class Point3D; + + //####################################################################### + // GaugeEntityList + //####################################################################### + class GaugeEntityList : + public Node + { + public: + GaugeEntityList(); + ~GaugeEntityList(); + Logical + TestInstance() const; + void + Add(Entity *entity); + void + Remove(Entity *entity); + void + Clear(); + int + NumberOfItems(); + int + CopyEntities( + GaugeEntityList *destination, + Derivation *derivation_type = NULL + ); + int + CopyEntitiesWithinBounds( + GaugeEntityList *destination, + Scalar min_x, + Scalar min_y, + Scalar min_z, + Scalar max_x, + Scalar max_y, + Scalar max_z, + Derivation *derivation_type = NULL + ); + int + CopyEntitiesWithinBounds( + GaugeEntityList *destination, + Point3D *center, + Scalar radius, + Derivation *derivation_type = NULL + ); + + ChainOf * const + GetInstanceList() + { + return &instanceList; + } + protected: + ChainOf + instanceList; + }; + + //####################################################################### + // GaugeEntityArray + //####################################################################### + class GaugeEntityArray SIGNATURED + { + public: + GaugeEntityArray(); + ~GaugeEntityArray(); + Logical + TestInstance() const; + void + Add(Entity *entity); + void + Remove(Entity *entity); + void + Clear(); + void + PrintStatistics(); + int + CopyEntities( + GaugeEntityList *destination, + Derivation *derivation_type = NULL + ); + int + CopyEntitiesWithinBounds( + GaugeEntityList *destination, + Scalar min_x, + Scalar min_y, + Scalar min_z, + Scalar max_x, + Scalar max_y, + Scalar max_z, + Derivation *derivation_type = NULL + ); + int + CopyEntitiesWithinBounds( + GaugeEntityList *destination, + Point3D *center, + Scalar radius, + Derivation *derivation_type = NULL + ); + void + GetBounds( + Scalar *min_x, + Scalar *min_y, + Scalar *min_z, + Scalar *max_x, + Scalar *max_y, + Scalar *max_z + ); + + protected: + enum + { + gaugeMapArraySize=64 + }; + + int + ArrayOffset(Scalar n); + + Scalar + minimumX, + minimumY, + minimumZ, + maximumX, + maximumY, + maximumZ; + + GaugeEntityList + grid[gaugeMapArraySize][gaugeMapArraySize]; + }; + +#endif + diff --git a/CODE/RP/MUNGA/GRAPH2D.HPP b/CODE/RP/MUNGA/GRAPH2D.HPP new file mode 100644 index 0000000..ea091b9 --- /dev/null +++ b/CODE/RP/MUNGA/GRAPH2D.HPP @@ -0,0 +1,806 @@ +//===========================================================================// +// File: VGADisp.hh // +// Project: MUNGA Brick: Applications-specific controls module // +// Contents: Interface specification for LBE4 VGA display // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- -----------------------------------------------------------// +// 02/03/95 CPB Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. All rights reserved // +// PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(GRAPH2D_HPP) +# define GRAPH2D_HPP + +# if !defined(STYLE_HPP) +# include +# endif + +# if !defined(VECTOR2D_HPP) +# include +# endif + +# if !defined(RECT2D_HPP) +# include +# endif + +# if !defined(RESOURCE_HPP) +# include +# endif + +# if !defined(PLUG_HPP) +# include +# endif + + class BitMap; + class PixelMap; + class GraphicsDisplay; + class GraphicsPort; + class GraphicsViewRecord; + class GraphicsView; + class NotationFile; + + //######################################################################## + //################################ BitMap ################################ + //######################################################################## + // + // The "raw" bit map is used by assembly-language routines. + // It must not be burdened with signatures, etc. + // + struct RawBitMap + { + Vector2DOf Size; + int WidthInWords; + Word *MapPointer; + }; + + class BitMap : + public Plug + { + public: + BitMap(int width, int height); + BitMap(int width, int height, Word *body); + BitMap(const char *filename); + BitMap(NotationFile *notation_file, const char *page_name); + ~BitMap(); + + Logical + TestInstance() const; + void + ShowInstance(char *indent); + static BitMap * + Make(const char *file_name); + static BitMap * + Make(ResourceDescription::ResourceID new_resource_id); + + RawBitMap + Data; + }; + + //######################################################################## + //############################### Palette8 ############################### + //######################################################################## + + struct PaletteTriplet + { + Byte Red; //0..255 + Byte Green; //0..255 + Byte Blue; //0..255 + + friend ostream& + operator<<( + ostream& stream, + const PaletteTriplet& p + ); + + PaletteTriplet& + operator=(PaletteTriplet& t) + { + Red = t.Red; + Green = t.Green; + Blue = t.Blue; + return t; + } + Logical + operator==(const PaletteTriplet& t) const + { + return ((Red==t.Red) && (Green==t.Green) && (Blue==t.Blue)); + } + Logical + operator!=(const PaletteTriplet& t) const + { + return ((Red!=t.Red) || (Green!=t.Green) || (Blue!=t.Blue)); + } + }; + + class Palette8 SIGNATURED + { + friend class GraphicsPort; + + public: + Palette8(); + Palette8(int count, PaletteTriplet *source); + Palette8(const char *filename); + ~Palette8(); + + void + SetColorRange( + int start, + int end, + PaletteTriplet new_color + ); + void + BuildColorRange( + int start, + int end, + PaletteTriplet first_color, + PaletteTriplet last_color + ); + Logical + TestInstance() const; + void + ShowInstance(char *indent); + static Palette8 * + Make(const char *file_name); + static Palette8 * + Make(ResourceDescription::ResourceID new_resource_id); + + Logical + Valid; + + PaletteTriplet + Color[256]; + }; + + //######################################################################## + //############################## PixelMap8 ############################### + //######################################################################## + + // + // The "raw" pixel map is used by assembly-language routines. + // It must not be burdened with signatures, etc. + // + struct RawPixelMap8 + { + Vector2DOf Size; + Byte *MapPointer; + }; + + class PixelMap8 SIGNATURED + { + friend class GraphicsPort; + + public: + PixelMap8(int width, int height); + PixelMap8(Vector2DOf size); +// {PixelMap(size.x, size.y);} + PixelMap8(const char *filename); + PixelMap8() + { + Data.Size.x = 0; + Data.Size.y = 0; + Data.MapPointer = NULL; + } + ~PixelMap8(); + + Logical + TestInstance() const; + void + ShowInstance(char *indent); + static PixelMap8 * + Make(const char *file_name); + static PixelMap8 * + Make(ResourceDescription::ResourceID new_resource_id); + + RawPixelMap8 + Data; + }; + + //######################################################################## + //############################## PixelMap16 ############################## + //######################################################################## + + // + // The "raw" pixel map is used by assembly-language routines. + // It must not be burdened with signatures, etc. + // + struct RawPixelMap16 + { + Vector2DOf Size; + Word *MapPointer; + }; + + class PixelMap16 SIGNATURED + { + friend class GraphicsPort; + + public: + PixelMap16(int width, int height); + PixelMap16(Vector2DOf size); +// {PixelMap(size.x, size.y);} + PixelMap16(char *filename); + PixelMap16() + { + Data.Size.x = 0; + Data.Size.y = 0; + Data.MapPointer = NULL; + } + ~PixelMap16(); + + Logical + TestInstance() const; + + void + ShowInstance(char *indent); + + RawPixelMap16 + Data; + }; + + //######################################################################## + //########################### GraphicsDisplay ############################ + //######################################################################## + class GraphicsDisplay SIGNATURED + { + public: + enum Operation { + Replace=0, And, Or, Xor, NextOperation + }; + + enum FontNumber { + SystemFont=0, NextFontNumber + }; + + enum Justification { + Normal=0, + Left=0x00, Horizontal=0x01, Right=0x02, + Top=0x00, Vertical=0x04, Bottom=0x08 + }; + + public: + GraphicsDisplay(int x, int y); + + virtual ~GraphicsDisplay(); + + Logical + TestInstance() const; + + virtual void + ShowInstance(char *indent); + + virtual Logical + Update(Logical forceAll); + + virtual void + WaitForUpdate(); + + virtual Rectangle2D + TextBounds( + Enumeration fontNumber, + Logical vertical, + GraphicsDisplay::Justification justification, + char *stringPointer + ); + + virtual void + DrawPoint( + int color, + int bitmask, + Enumeration operation, + int x, int y + ); + + virtual void + DrawLine( + int color, + int bitmask, + Enumeration operation, + int x1, int y1, + int x2, int y2, + Logical include_last_pixel + ); + + virtual void + DrawFilledRectangle( + int color, + int bitmask, + Enumeration operation, + int x1, int y1, + int x2, int y2 + ); + + virtual void + DrawText( + int color, + int bitmask, + Enumeration operation, + Logical opaque, + int rotation, + Enumeration fontNumber, + Logical vertical, + GraphicsDisplay::Justification justification, + Rectangle2D *clippingRectanglePtr, + char *stringPointer + ); + + virtual void + DrawBitMap( + int color, + int bitmask, + Enumeration operation, + int rotation, + int x, int y, + BitMap *bitmap, + int sx1, int sy1, int sx2, int sy2 // these are SOURCE coordinates + ); + + virtual void + DrawBitMapOpaque( + int color, + int background, + int bitmask, + Enumeration operation, + int rotation, + int x, int y, + BitMap *bitmap, + int sx1, int sy1, int sx2, int sy2 // these are SOURCE coordinates + ); + + virtual void + DrawPixelMap8( + int *translation_table, + int bitmask, + Enumeration operation, + Logical opaque, + int rotation, + int x, int y, + PixelMap8 *pixelmap, + int sx1, int sy1, int sx2, int sy2 // these are SOURCE coordinates + ); + + virtual void + DrawPixelMap8SingleColor( + int color, + int bitmask, + Enumeration operation, + int rotation, + int x, int y, + PixelMap8 *pixelmap, + int sx1, int sy1, int sx2, int sy2 // these are SOURCE coordinates + ); + + public: + Rectangle2D bounds; + }; + + //######################################################################## + //############################ GraphicsPort ############################## + //######################################################################## + class GraphicsPort SIGNATURED + { + public: + GraphicsPort( + GraphicsDisplay *graphics_display, + const char *name + ); + + virtual ~GraphicsPort(); + + Logical + TestInstance() const; + + virtual void + ShowInstance(char *indent); + + virtual Rectangle2D + TextBounds( + Enumeration fontNumber, + Logical vertical, + GraphicsDisplay::Justification justification, + char *stringPointer + ); + + virtual void + SetColor( + PaletteTriplet *source_color, + int color_index + ); + + virtual void + DrawPoint( + int color, + Enumeration operation, + int x, int y + ); + + virtual void + DrawLine( + int color, + Enumeration operation, + int x1, int y1, + int x2, int y2, + Logical include_last_pixel + ); + + virtual void + DrawFilledRectangle( + int color, + Enumeration operation, + int x1, int y1, + int x2, int y2 + ); + + virtual void + DrawText( + int color, + Enumeration operation, + Logical opaque, + int rotation, + Enumeration fontNumber, + Logical vertical, + GraphicsDisplay::Justification justification, + Rectangle2D *clippingRectanglePtr, + char *stringPointer + ); + + virtual void + DrawBitMap( + int color, + Enumeration operation, + int rotation, + int x, int y, + BitMap *bitmap, + int sx1, int sy1, int sx2, int sy2 // these are SOURCE coordinates + ); + + virtual void + DrawBitMapOpaque( + int color, + int background, + Enumeration operation, + int rotation, + int x, int y, + BitMap *bitmap, + int sx1, int sy1, int sx2, int sy2 // these are SOURCE coordinates + ); + + virtual void + DrawPixelMap8( + Enumeration operation, + Logical opaque, + int rotation, + int x, int y, + PixelMap8 *pixelmap, + int sx1, int sy1, int sx2, int sy2 // these are SOURCE coordinates + ); + + virtual void + DrawPixelMap8SingleColor( + int color, + Enumeration operation, + int rotation, + int x, int y, + PixelMap8 *pixelmap, + int sx1, int sy1, int sx2, int sy2 // these are SOURCE coordinates + ); + + public: + Rectangle2D + bounds; + GraphicsDisplay + *graphicsDisplay; + + char + name[16]; + }; + + //######################################################################## + //######################### GraphicsViewRecord ########################### + //######################################################################## + class GraphicsViewRecord SIGNATURED + { + friend class GraphicsView; + public: + GraphicsViewRecord(); + ~GraphicsViewRecord(); + Logical + TestInstance() const; + void + Clear(); + void + Draw(GraphicsView *graphics_view, int forced_color=-1); + protected: + enum + { + endCommand=0, + pointCommand, + lineCommand, + frectCommand, + bitmapCommand, + bitmapOpaqueCommand, + pixelmap8Command, + pixelmap8SolidCommand, + }; + + void + PutChar(int value); + int + GetChar(); + void + PutLogical(Logical value); + Logical + GetLogical(); + void + PutShort(int value); + int + GetShort(); + void + PutPointer(void *pointer); + void * + GetPointer(); + + int + commandListLength, + commandListIndex; + char + *commandList; + GraphicsViewRecord + *link; + }; + + //######################################################################## + //############################ GraphicsView ############################## + //######################################################################## + class GraphicsView SIGNATURED + { + friend class GraphicsViewRecord; + public: + GraphicsView( + GraphicsPort *graphics_port, + int x1, int y1, int x2, int y2 + ); + + GraphicsView( + GraphicsPort *graphics_port + ); + + virtual ~GraphicsView(); + + Logical + TestInstance() const; + + virtual void + ShowInstance(char *indent); + + virtual void + SetPositionWithinPort( + int left, + int bottom, + int right, + int top + ); + + virtual void + SetOperation(GraphicsDisplay::Operation operation); + + virtual void + SetOrigin( + int x, + int y + ); + + virtual void + SetFont( + Enumeration new_font_ID + ); + + virtual void + SetColor( + int new_color + ); + + virtual void + SetClippingRectangle( + Rectangle2D *clippingRectangle + ); + + virtual void + ClearClippingRectangle(); + + virtual void + MoveToAbsolute( + int x, + int y + ); + + virtual void + MoveToRelative( + int x, + int y + ); + // + //----------------------------------------------------- + // These routines first clip the operation according to + // clippingRectangle of the GraphicsView. + // The clipped results are then passed on to the + // corresponding routine in the GraphicsPort object. + //----------------------------------------------------- + // + virtual void + DrawPoint(); + + virtual void + DrawLineToAbsolute(int x, int y); + + virtual void + DrawLineToRelative(int x, int y); + + virtual void + DrawThickLineToAbsolute(int x, int y); + + virtual void + DrawThickLineToRelative(int x, int y); + + virtual void + DrawRectangleToAbsolute(int x, int y); + + virtual void + DrawRectangleToRelative(int x, int y); + + virtual void + DrawFilledRectangleToAbsolute(int x, int y); + + virtual void + DrawFilledRectangleToRelative(int x, int y); + + virtual void + DrawText( + Logical opaque, + Logical vertical, + GraphicsDisplay::Justification justification, + Rectangle2D *clippingRectanglePtr, + char *stringPointer + ); + + virtual void + DrawBitMap( + int rotation, + BitMap *bitmap, + int sx1, int sy1, int sx2, int sy2 // these are SOURCE coordinates + ); + + void + DrawBitMap( + int rotation, + BitMap *bitmap + ) + { + DrawBitMap( + rotation, + bitmap, + 0, 0, bitmap->Data.Size.x-1, bitmap->Data.Size.y-1 + ); + } + + virtual void + DrawBitMapOpaque( + int background, + int rotation, + BitMap *bitmap, + int sx1, int sy1, int sx2, int sy2 // these are SOURCE coordinates + ); + + void + DrawBitMapOpaque( + int background, + int rotation, + BitMap *bitmap + ) + { + DrawBitMapOpaque( + background, + rotation, + bitmap, + 0, 0, bitmap->Data.Size.x-1, bitmap->Data.Size.y-1 + ); + } + + virtual void + DrawPixelMap8( + Logical opaque, + int rotation, + PixelMap8 *pixelmap, + int sx1, int sy1, int sx2, int sy2 // these are SOURCE coordinates + ); + + void + DrawPixelMap8( + Logical opaque, + int rotation, + PixelMap8 *pixelmap + ) + { + DrawPixelMap8( + opaque, + rotation, + pixelmap, + 0, 0, pixelmap->Data.Size.x-1, pixelmap->Data.Size.y-1 + ); + } + + virtual void + DrawPixelMap8SingleColor( + int rotation, + PixelMap8 *pixelmap, + int sx1, int sy1, int sx2, int sy2 // these are SOURCE coordinates + ); + + void + DrawPixelMap8SingleColor( + int rotation, + PixelMap8 *pixelmap + ) + { + DrawPixelMap8SingleColor( + rotation, + pixelmap, + 0, 0, pixelmap->Data.Size.x-1, pixelmap->Data.Size.y-1 + ); + } + + virtual void + AttachRecorder(GraphicsViewRecord *graphics_view_record); + virtual void + DetachRecorder(); + + enum PointCode{ + IsWithin=0, IsLeft=0x01, IsRight=0x02, IsBelow=0x04, IsAbove=0x08 + }; + + virtual int + BuildPointCode(Vector2DOf vector); + + Logical + ClipImage( + Rectangle2D *sourceRect, + Vector2DOf *position, + Vector2DOf imageLimits + ); + + virtual void + SetColor( + PaletteTriplet *source_color, + int color_index + ); + + protected: + void + DrawThickLine( + Vector2DOf start, + Vector2DOf end + ); + + void + DrawLine( + Vector2DOf start, + Vector2DOf end, + Logical include_last_pixel + ); + + void + DrawFilledRectangle(Rectangle2D r); + + Rectangle2D areaWithinPort; + Vector2DOf origin; + Vector2DOf currentPosition; + Enumeration currentFontID; + int currentColor; + Rectangle2D clippingRectangle; + GraphicsDisplay::Operation currentOperation; + GraphicsPort *graphicsPort; + GraphicsViewRecord *recorder; + }; + +#endif diff --git a/CODE/RP/MUNGA/HASH.CPP b/CODE/RP/MUNGA/HASH.CPP new file mode 100644 index 0000000..6868a7a --- /dev/null +++ b/CODE/RP/MUNGA/HASH.CPP @@ -0,0 +1,546 @@ +//===========================================================================// +// File: hash.cc // +// Project: MUNGA Brick: Connection Library // +// Contents: Implementation details of Hash class // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 12/15/94 ECH Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// PROPRIETARY AND CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(HASH_HPP) + #include +#endif + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~ Hash ~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +#define Verify_Index(x) Verify(0 <= (x) && (x) < hashTableSize) + +// +//########################################################################### +// Hash +//########################################################################### +// +Hash::Hash( + CollectionSize size, + Node *node, + Logical has_unique_entries +): + SortedSocket(node, has_unique_entries) +{ + hashTableSize = size; + BuildHashTable(); +} + +void + Hash::BuildHashTable() +{ + int i; + +#if 0 + hashTable = (VChain**)malloc(hashTableSize * sizeof(VChain*)); +#else + hashTable = new VChain*[hashTableSize]; +#endif + Register_Pointer(hashTable); + + for (i = 0; i < hashTableSize; i++) + { + Check_Pointer(hashTable); + Verify_Index(i); + hashTable[i] = NULL; + } +} + +// +//########################################################################### +// ~Hash +//########################################################################### +// +Hash::~Hash() +{ + int i; + + for (i = 0; i < hashTableSize; i++) + { + Check_Pointer(hashTable); + Verify_Index(i); + if (hashTable[i] != NULL) + { + Unregister_Object(hashTable[i]); + delete hashTable[i]; + } + } + + Unregister_Pointer(hashTable); +#if 0 + free(hashTable); +#else + delete[] hashTable; +#endif + hashTable = NULL; + hashTableSize = 0; +} + +// +//########################################################################### +// TestInstance +//########################################################################### +// +Logical + Hash::TestInstance() const +{ + SortedSocket::TestInstance(); + + Check_Pointer(hashTable); + Verify(hashTableSize > 0); + + return True; +} + +// +//########################################################################### +// AddImplementation +//########################################################################### +// +void + Hash::AddImplementation(Plug *plug) +{ + AddValueImplementation(plug, NULL); +} + +// +//########################################################################### +// AddValueImplementation +//########################################################################### +// +void + Hash::AddValueImplementation( + Plug *plug, + const void *value + ) +{ + Check(this); + Check(plug); + Check_Pointer(value); + + // + //------------------------------------------------------------- + // Verify that value has not been added + //------------------------------------------------------------- + // + Verify(HasUniqueEntries() ? (FindImplementation(value) == NULL) : (Logical)True); + + // + //------------------------------------------------------------- + // Find hash entry + //------------------------------------------------------------- + // + IteratorPosition index; + + index = GetHashIndex(value); + + // + //------------------------------------------------------------- + // Get vchain for this index + //------------------------------------------------------------- + // + VChain *vchain; + + Check_Pointer(hashTable); + Verify_Index(index); + if ((vchain = hashTable[index]) == NULL) + { + vchain = MakeVChain(); + Register_Object(vchain); + hashTable[index] = vchain; + } + + // + //------------------------------------------------------------- + // Add to the vchain + //------------------------------------------------------------- + // + Check(vchain); + vchain->AddValuePlug(plug, value); +} + +// +//########################################################################### +// FindImplementation +//########################################################################### +// +Plug* + Hash::FindImplementation( + const void *value + ) +{ + Check(this); + Check_Pointer(value); + + // + //------------------------------------------------------------- + // Find hash entry + //------------------------------------------------------------- + // + IteratorPosition index; + + index = GetHashIndex(value); + + // + //------------------------------------------------------------- + // Get vchain for this index + //------------------------------------------------------------- + // + VChain *vchain; + + Check_Pointer(hashTable); + Verify_Index(index); + if ((vchain = hashTable[index]) == NULL) + { + return NULL; + } + + // + //------------------------------------------------------------- + // Find in vchain + //------------------------------------------------------------- + // + Check(vchain); + return vchain->FindPlug(value); +} + +// +//########################################################################### +// MakeVChain +//########################################################################### +// +VChain* + Hash::MakeVChain() +{ + Fail("Hash::MakeVChain - Should never reach here"); + return NULL; +} + +// +//########################################################################### +// MakeVChain +//########################################################################### +// +IteratorPosition + Hash::GetHashIndex(const void*) +{ + Fail("Hash::GetHashIndex - Should never reach here"); + return 0; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~ HashIterator ~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +const IteratorPosition HashIteratorNullPosition = -1; + +// +//########################################################################### +// HashIterator +//########################################################################### +// +HashIterator::HashIterator(Hash *hash): + SortedIterator(hash) +{ + hashTable = hash->hashTable; + hashTableSize = hash->hashTableSize; + currentPosition = HashIteratorNullPosition; + vchainIterator = NULL; + First(); +} + +HashIterator::~HashIterator() +{ + hashTable = NULL; + hashTableSize = 0; + currentPosition = HashIteratorNullPosition; + DeleteVChainIterator(); +} + +// +//########################################################################### +// TestInstance +//########################################################################### +// +Logical + HashIterator::TestInstance() const +{ + SortedIterator::TestInstance(); + + Check_Pointer(hashTable); + Verify(hashTableSize > 0); + + if (vchainIterator != NULL) + { + Check(vchainIterator); + } + + return True; +} + +// +//########################################################################### +// First +//########################################################################### +// +void + HashIterator::First() +{ + NextVChainIterator(0); +} + +// +//########################################################################### +// Last +//########################################################################### +// +void + HashIterator::Last() +{ + // + // Should never reach here + // + #ifdef __BCPLUSPLUS__ + #pragma warn -ccc + Verify(False); + #pragma warn +ccc + #endif +} + +// +//########################################################################### +// Next +//########################################################################### +// +void + HashIterator::Next() +{ + if (vchainIterator != NULL) + { + Check(vchainIterator); + + if (vchainIterator->GetCurrentPlug() != NULL) + { + // + // Try to step to the next item in this list + // + vchainIterator->Next(); + } + if (vchainIterator->GetCurrentPlug() == NULL) + { + // + // At end of list, step to the next list + // + NextVChainIterator(currentPosition+1); + } + } +} + +// +//########################################################################### +// Previous +//########################################################################### +// +void + HashIterator::Previous() +{ + // + // Should never reach here + // + #ifdef __BCPLUSPLUS__ + #pragma warn -ccc + Verify(False); + #pragma warn +ccc + #endif +} + +// +//########################################################################### +// GetCurrentImplementation +//########################################################################### +// +void + *HashIterator::GetCurrentImplementation() +{ + if (vchainIterator != NULL) + { + Check(vchainIterator); + + if (vchainIterator->GetCurrentPlug() != NULL) + { + return vchainIterator->GetCurrentPlug(); + } + + // + // List was emptied, step to next list + // + NextVChainIterator(currentPosition+1); + + if (vchainIterator != NULL) + { + Check(vchainIterator); + Verify(vchainIterator->GetCurrentPlug() != NULL); + return vchainIterator->GetCurrentPlug(); + } + } + return NULL; +} + +// +//########################################################################### +// GetSize +//########################################################################### +// +CollectionSize + HashIterator::GetSize() +{ + HashIterator iterator(Cast_Object(Hash*, socket)); + CollectionSize i = 0; + + while (iterator.ReadAndNextImplementation() != NULL) + { + i++; + } + return(i); +} + +// +//########################################################################### +// Remove +//########################################################################### +// +void + HashIterator::Remove() +{ + if (vchainIterator != NULL) + { + Check(vchainIterator); + + if (vchainIterator->GetCurrentPlug() != NULL) + { + vchainIterator->Remove(); + return; + } + + // + // List was emptied, step to next list + // + NextVChainIterator(currentPosition+1); + + if (vchainIterator != NULL) + { + Check(vchainIterator); + vchainIterator->Remove(); + return; + } + } +} + +// +//########################################################################### +// FindImplementation +//########################################################################### +// +Plug + *HashIterator::FindImplementation( + const void* + ) +{ + // + // Should never reach here + // + #ifdef __BCPLUSPLUS__ + #pragma warn -ccc + Verify(False); + #pragma warn +ccc + #endif + return NULL; +} + +// +//########################################################################### +// ReceiveMemo +//########################################################################### +// +void + HashIterator::ReceiveMemo( + IteratorMemo, + void* + ) +{ +} + +// +//########################################################################### +//########################################################################### +// +void + HashIterator::DeleteVChainIterator() +{ + if (vchainIterator != NULL) + { + Unregister_Object(vchainIterator); + delete vchainIterator; + vchainIterator = NULL; + } +} + +// +//########################################################################### +//########################################################################### +// +void + HashIterator::NextVChainIterator(IteratorPosition index) +{ + int i; + + DeleteVChainIterator(); + currentPosition = HashIteratorNullPosition; + + for (i = index; i < hashTableSize; i++) + { + Check_Pointer(hashTable); + Verify_Index(i); + + if (hashTable[i] != NULL) + { + // + // This index contains a vchain + // + Check(hashTable[i]); + + // + // Create a vchain iterator + // + vchainIterator = new VChainIterator(hashTable[i]); + Register_Object(vchainIterator); + if (vchainIterator->GetCurrentPlug() != NULL) + { + // + // The vchain contains items + // + currentPosition = i; + return; + } + + // + // Destroy the vchain iterator + // + DeleteVChainIterator(); + } + } +} + +#if defined(TEST_CLASS) +# include "hash.tcp" +#endif diff --git a/CODE/RP/MUNGA/HASH.HPP b/CODE/RP/MUNGA/HASH.HPP new file mode 100644 index 0000000..7246966 --- /dev/null +++ b/CODE/RP/MUNGA/HASH.HPP @@ -0,0 +1,354 @@ +//===========================================================================// +// File: hash.hh // +// Project: MUNGA Brick: Connection Library // +// Contents: // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 12/15/94 ECH Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// PROPRIETARY AND CONFIDENTIAL // +//===========================================================================// + +#if !defined(HASH_HPP) +# define HASH_HPP + +# if !defined(SRTSKT_HPP) +# include +# endif + +# if !defined(VCHAIN_HPP) +# include +# endif + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~ Hash ~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class Hash: + public SortedSocket + { + friend class HashIterator; + + public: + // + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // Public interface + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // + + // + //-------------------------------------------------------------------- + // Constructor, Destructor and Testing + //-------------------------------------------------------------------- + // + Hash( + CollectionSize size, + Node *node, + Logical has_unique_entries + ); + ~Hash(); + + Logical + TestInstance() const; + static Logical + TestClass(); + static Logical + ProfileClass(); + + protected: + // + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // Protected interface + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // + void + AddImplementation(Plug *plug); + void + AddValueImplementation( + Plug *plug, + const void *value + ); + Plug + *FindImplementation(const void *value); + + // + //-------------------------------------------------------------------- + // Protected data + //-------------------------------------------------------------------- + // + VChain **hashTable; + CollectionSize hashTableSize; + + private: + // + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // Private interface + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // + virtual VChain* + MakeVChain(); + + virtual IteratorPosition + GetHashIndex(const void *value); + + void + BuildHashTable(); + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~ HashOf ~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + template class HashOf: + public Hash + { + public: + // + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // Public interface + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // + HashOf( + CollectionSize size, + Node *node, + Logical has_unique_entries + ); + ~HashOf(); + + // + //-------------------------------------------------------------------- + // Socket methods (see Socket for full listing) + //-------------------------------------------------------------------- + // + void + AddValue( + T plug, + const V &value + ) + {AddValueImplementation(Cast_Object(Plug*,plug), &value);} + + T + Find(const V &value) + {return (T)FindImplementation(&value);} + + private: + // + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // Private interface + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // + VChain* + MakeVChain(); + + IteratorPosition + GetHashIndex(const void *value); + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~ HashOf templates ~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + template + HashOf::HashOf( + CollectionSize size, + Node *node, + Logical has_unique_entries + ): + Hash( + size, + node, + has_unique_entries + ) + { + } + + template + HashOf::~HashOf() + { + } + + template VChain* + HashOf::MakeVChain() + { + return new VChainOf(GetReleaseNode(), HasUniqueEntries()); + } + + template IteratorPosition + HashOf::GetHashIndex(const void *value) + { + Check_Pointer(value); + return (IteratorPosition(*(V*)value) % hashTableSize); + // return ((IteratorPosition)*(V*)value % hashTableSize); + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~ HashIterator ~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class HashIterator: + public SortedIterator + { + public: + // + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // Public interface + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // + + // + //-------------------------------------------------------------------- + // Constructors, Destructor and testing + //-------------------------------------------------------------------- + // + HashIterator(Hash *hash); + ~HashIterator(); + Logical + TestInstance() const; + + // + //-------------------------------------------------------------------- + // Iterator methods (see Iterator for full listing) + //-------------------------------------------------------------------- + // + void + First(); + void + Last(); + void + Next(); + void + Previous(); + CollectionSize + GetSize(); + void + Remove(); + + protected: + // + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // Protected interface + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // + #if 0 + void* + ReadAndNextImplementation(); + void* + ReadAndPreviousImplementation(); + #endif + void* + GetCurrentImplementation(); + #if 0 + void* + GetNthImplementation(CollectionSize index); + #endif + Plug* + FindImplementation(const void *value); + + private: + // + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // Private interface + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // + void + ReceiveMemo( + IteratorMemo memo, + void *content + ); + + void + DeleteVChainIterator(); + + void + NextVChainIterator(IteratorPosition index); + + // + //-------------------------------------------------------------------- + // Private data + //-------------------------------------------------------------------- + // + VChain + **hashTable; + CollectionSize + hashTableSize; + IteratorPosition + currentPosition; + VChainIterator + *vchainIterator; + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~ HashIteratorOf ~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + template class HashIteratorOf: + public HashIterator + { + public: + // + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // Public interface + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // + + // + //-------------------------------------------------------------------- + // Constructors and Destructor + //-------------------------------------------------------------------- + // + HashIteratorOf(HashOf *hash); + HashIteratorOf(HashOf &hash); + ~HashIteratorOf(); + + // + //-------------------------------------------------------------------- + // Iterator methods (see Iterator for full listing) + //-------------------------------------------------------------------- + // + T + ReadAndNext() + {return (T)ReadAndNextImplementation();} + T + ReadAndPrevious() + {return (T)ReadAndPreviousImplementation();} + T + GetCurrent() + {return (T)GetCurrentImplementation();} + T + GetNth(CollectionSize index) + {return (T)GetNthImplementation(index);} + T + Find(const V &value) + {return (T)FindImplementation(&value);} + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~ HashIteratorOf templates ~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + template + HashIteratorOf::HashIteratorOf(HashOf *hash): + HashIterator(hash) + { + } + + template + HashIteratorOf::HashIteratorOf(HashOf &hash): + HashIterator(&hash) + { + } + + template + HashIteratorOf::~HashIteratorOf() + { + } + +#endif diff --git a/CODE/RP/MUNGA/HASH.TCP b/CODE/RP/MUNGA/HASH.TCP new file mode 100644 index 0000000..634864c --- /dev/null +++ b/CODE/RP/MUNGA/HASH.TCP @@ -0,0 +1,420 @@ +//===========================================================================// +// File: hash.tst // +// Project: MUNGA Brick: Connection Library // +// Contents: // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 12/15/94 ECH Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1994, Virtual World Entertainment, Inc. All Rights reserved // +// PROPRIETARY AND CONFIDENTIAL // +//===========================================================================// + +#include "time.hpp" + +class HashTestPlug: + public Plug +{ +public: + int value; + + HashTestPlug(int value); + ~HashTestPlug(); +}; + +class HashTestNode: + public Node +{ +public: + HashOf hash1; + HashOf hash2; + + HashTestNode(); + ~HashTestNode(); + + void RunProfile(); + void RunTest(); +}; + +#define RandInt(x) (rand() % x + 1) + +HashTestPlug::HashTestPlug(int value): + Plug() +{ + this->value = value; +} + +HashTestPlug::~HashTestPlug() +{ +} + +HashTestNode::HashTestNode(): + Node(), + hash1(TEST_CLASS/2, this, True), + hash2(TEST_CLASS/2, this, True) +{ +} + +HashTestNode::~HashTestNode() +{ +} + +// +//########################################################################### +// ProfileClass +//########################################################################### +// + +Logical + Hash::ProfileClass() +{ + HashTestNode testNode; + Time startTicks = Now(); + + Test_Message("Hash::ProfileClass \n"); + + testNode.RunProfile(); + + Test_Message("Hash::ProfileClass elapsed = " << (Now() - startTicks) << endl); + return True; +} + +// +//########################################################################### +// TestClass +//########################################################################### +// + +Logical + Hash::TestClass() +{ + DEBUG_STREAM << "Starting Hash test...\n"; + + HashTestNode testNode; + + testNode.RunTest(); + return True; +} + +void + HashTestNode::RunProfile() +{ + HashTestPlug *testPlug1, *testPlug2; + int values[TEST_CLASS]; + int i, j; + Time startTicks; + + /* + * Generate unique values, shuffle them + */ + for (i = 0; i < TEST_CLASS; i++) { + values[i] = i; + } + for (i = 0; i < TEST_CLASS; i++) { + int tmp; + + j = i + RandInt(TEST_CLASS - i) - 1; + tmp = values[j]; + values[j] = values[i]; + values[i] = tmp; + } + + // + //-------------------------------------------------------------------- + // Run timing tests + //-------------------------------------------------------------------- + // + + /* + * Create plugs and add to both sockets + */ + startTicks = Now(); + for (i = 0; i < TEST_CLASS; i++) + { + testPlug1 = new HashTestPlug(values[i]); + Register_Object( testPlug1 ); + hash1.AddValue(testPlug1, values[i]); + hash2.AddValue(testPlug1, values[i]); + } + Test_Message("HashTestNode::RunTest Create = " << (Now() - startTicks) << endl); + + /* + * Iterate over both sockets + */ + startTicks = Now(); + { + HashIteratorOf iterator1(hash1); + HashIteratorOf iterator2(hash2); + + i = 0; + while ((testPlug1 = iterator1.ReadAndNext()) != NULL) + { + Check( testPlug1 ); + i++; + } + Verify( i == TEST_CLASS ); + + i = 0; + while ((testPlug1 = iterator2.ReadAndNext()) != NULL) + { + Check( testPlug1 ); + i++; + } + Verify( i == TEST_CLASS ); + } + Test_Message("HashTestNode::RunTest Iterate = " << (Now() - startTicks) << endl); + + /* + * Find + */ + startTicks = Now(); + { + for (i = 0; i < TEST_CLASS; i++) + { + testPlug1 = hash1.Find(i); + testPlug2 = hash2.Find(i); + + Check( testPlug1 ); + Check( testPlug2 ); + + Verify( testPlug1 == testPlug2 ); + } + } + Test_Message("HashTestNode::RunTest Find = " << (Now() - startTicks) << endl); + + /* + * Destroy from hash1, verify with hash2 + */ + startTicks = Now(); + { + HashIteratorOf iterator1(hash1); + HashIteratorOf iterator2(hash2); + + i = 0; + while ((testPlug1 = iterator1.ReadAndNext()) != NULL) + { + Check( testPlug1 ); + i++; + + Unregister_Object(testPlug1); + delete(testPlug1); + } + Verify( i == TEST_CLASS ); + Verify( iterator2.GetCurrent() == NULL ); + } + Test_Message("HashTestNode::RunTest Destroy = " << (Now() - startTicks) << endl); +} + +void + HashTestNode::RunTest() +{ + HashTestPlug *testPlug1, *testPlug2; + int values[TEST_CLASS]; + int i, j; +// Time startTicks; + + /* + * Generate unique values, shuffle them + */ + for (i = 0; i < TEST_CLASS; i++) { + values[i] = i; + } + for (i = 0; i < TEST_CLASS; i++) { + int tmp; + + j = i + RandInt(TEST_CLASS - i) - 1; + tmp = values[j]; + values[j] = values[i]; + values[i] = tmp; + } + + // + //-------------------------------------------------------------------- + // Stress tests + //-------------------------------------------------------------------- + // + + /* + * Create plugs and add to both sockets + */ + for (i = 0; i < TEST_CLASS; i++) + { + testPlug1 = new HashTestPlug(values[i]); + Register_Object( testPlug1 ); + hash1.AddValue(testPlug1, values[i]); + hash2.AddValue(testPlug1, values[i]); + } + + /* + * Find + */ + { + for (i = 0; i < TEST_CLASS; i++) + { + testPlug1 = hash1.Find(i); + testPlug2 = hash2.Find(i); + + Check( testPlug1 ); + Check( testPlug2 ); + + Verify( testPlug1->value == i ); + Verify( testPlug2->value == i ); + + Verify( testPlug1 == testPlug2 ); + } + } + + /* + * Test first and last + */ + { + HashIteratorOf iterator1(hash1); + HashIteratorOf iterator2(hash2); + + iterator1.First(); + iterator2.First(); + + testPlug1 = iterator1.GetCurrent(); + testPlug2 = iterator2.GetCurrent(); + Check( testPlug1 ); + Check( testPlug2 ); + + Verify( testPlug1 == testPlug2 ); + } + + /* + * Test next and prev + */ + { + HashIteratorOf iterator1(hash1); + HashIteratorOf iterator2(hash2); + + i = 0; + while ((testPlug1 = iterator1.GetCurrent()) != NULL) + { + testPlug2 = iterator2.GetCurrent(); + + Check( testPlug1 ); + Check( testPlug2 ); + Verify( testPlug1 == testPlug2 ); + + iterator1.Next(); + iterator2.Next(); + + i++; + } + Verify( i == TEST_CLASS ); + } + + /* + * Test read next and read prev + */ + { + HashIteratorOf iterator1(hash1); + HashIteratorOf iterator2(hash2); + + i = 0; + while ((testPlug1 = iterator1.ReadAndNext()) != NULL) + { + testPlug2 = iterator2.ReadAndNext(); + + Check( testPlug1 ); + Check( testPlug2 ); + Verify( testPlug1 == testPlug2 ); + + i++; + } + Verify( i == TEST_CLASS ); + } + + /* + * Test Remove + */ + { + HashIteratorOf iterator1(hash1); + HashIteratorOf iterator2(hash2); + + i = 0; + while ((testPlug1 = iterator1.GetCurrent()) != NULL) + { + testPlug2 = iterator2.GetCurrent(); + + Check( testPlug1 ); + Check( testPlug2 ); + Verify( testPlug1 == testPlug2 ); + + iterator1.Remove(); + + Unregister_Object(testPlug1); + delete(testPlug1); + + i++; + } + Verify( iterator2.GetCurrent() == NULL ); + Verify( i == TEST_CLASS ); + } + + /* + * Test random deletion + */ + /* + * Add plugs to both sockets + */ + { + HashIteratorOf iterator1(hash1); + HashIteratorOf iterator2(hash2); + + Verify( iterator1.GetCurrent() == NULL ); + Verify( iterator2.GetCurrent() == NULL ); + + for (i = 0; i < TEST_CLASS; i++) + { + testPlug1 = new HashTestPlug(values[i]); + Register_Object( testPlug1 ); + hash1.AddValue(testPlug1, values[i]); + hash2.AddValue(testPlug1, values[i]); + } + } + + /* + * Perform random deletion + */ + { + int size, index; + HashIteratorOf iterator1(hash1); + HashIteratorOf iterator2(hash2); + + i = 0; + iterator1.First(); + while((size = iterator1.GetSize()) != 0) + { + index = RandInt(size) - 1; + testPlug1 = iterator1.GetNth(index); + Check( testPlug1 ); + iterator1.Remove(); + + testPlug2 = iterator2.GetNth(index); + Check( testPlug2 ); + Verify( testPlug1 == testPlug2 ); + + Unregister_Object( testPlug2 ); + delete(testPlug2); + + { + HashIteratorOf iterator3(hash1); + + while ((testPlug1 = iterator3.ReadAndNext()) != NULL) + { + Check(testPlug1); + } + } + + i++; + } + Verify( i == TEST_CLASS ); + Verify( iterator1.GetCurrent() == NULL ); + Verify( iterator2.GetCurrent() == NULL ); + } +} + diff --git a/CODE/RP/MUNGA/HEAP.HPP b/CODE/RP/MUNGA/HEAP.HPP new file mode 100644 index 0000000..af4025f --- /dev/null +++ b/CODE/RP/MUNGA/HEAP.HPP @@ -0,0 +1,121 @@ +//--------------------------------------------------------------------------- +// +// 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 + #endif + +# if !defined(MEMREG_HPP) +# include +# 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 + diff --git a/CODE/RP/MUNGA/HOST.CPP b/CODE/RP/MUNGA/HOST.CPP new file mode 100644 index 0000000..652dadf --- /dev/null +++ b/CODE/RP/MUNGA/HOST.CPP @@ -0,0 +1,159 @@ +//===========================================================================// +// File: host.cc // +// Project: MUNGA Brick: Connection Library // +// Contents: Interface specification for base Host class // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 10/28/94 ECH Initial coding. // +// 11/03/94 ECH Develop to munga spec // +// 11/29/94 JMA Moved EntityID to entity.cc // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(HOST_HPP) + #include +#endif + +#if !defined(ENTITY_HPP) + #include +#endif + +//############################################################################# +//################################ Host ################################# +//############################################################################# + +// +//############################################################################# +//############################################################################# +// +Host::Host( + HostID host_ID, + HostType host_type, + NetworkAddress network_address +): + hostType(host_type), + allEntitySocket(NULL), + dynamicMasterEntitySocket(NULL), + dynamicReplicantEntitySocket(NULL) +{ + Verify(host_ID >= FirstLegalHostID); + hostID = host_ID; + networkAddress = network_address; + currentConnectStatus = NoNetworkConnectionStatus; +} + +// +//############################################################################# +//############################################################################# +// +Host::~Host() +{ +} + +// +//############################################################################# +//############################################################################# +// +Logical + Host::TestInstance() const +{ + Node::TestInstance(); + + Verify(hostID >= FirstLegalHostID); + Verify( + hostType == GameMachineHostType || + hostType == MissionReviewHostType || + hostType == ConsoleHostType + ); + Check(&allEntitySocket); + Check(&dynamicMasterEntitySocket); + Check(&dynamicReplicantEntitySocket); + + return True; +} + +// +//############################################################################# +//############################################################################# +// +void + Host::AddEntity(Entity *entity) +{ + Check(this); + Check(entity); + + // + // Add entity to all socket + // + allEntitySocket.Add(entity); + + // + // Conditionally add entity to aux sockets + // + switch (entity->GetInstance()) + { + case Entity::MasterInstance: + case Entity::IndependantInstance: + case Entity::HermitInstance: + if (entity->IsDynamic()) + { + dynamicMasterEntitySocket.Add(entity); + } + break; + + case Entity::ReplicantInstance: + if (entity->IsDynamic()) + { + dynamicReplicantEntitySocket.Add(entity); + } + break; + + default: + Fail("Host::AddEntity - Should never reach here"); + break; + } +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~ Host__AllEntityIterator ~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Host__AllEntityIterator::Host__AllEntityIterator(Host *host): + SChainIteratorOf(&host->allEntitySocket) +{ +} + +Host__AllEntityIterator::~Host__AllEntityIterator() +{ +} + +//~~~~~~~~~~~~~~~~~~~~~ Host__DynamicMasterEntityIterator ~~~~~~~~~~~~~~~~~~~~~ + +Host__DynamicMasterEntityIterator:: + Host__DynamicMasterEntityIterator(Host *host): + SChainIteratorOf(&host->dynamicMasterEntitySocket) +{ +} + +Host__DynamicMasterEntityIterator::~Host__DynamicMasterEntityIterator() +{ +} + +//~~~~~~~~~~~~~~~~~~~~ Host__DynamicReplicantEntityIterator ~~~~~~~~~~~~~~~~~~~ + +Host__DynamicReplicantEntityIterator:: + Host__DynamicReplicantEntityIterator(Host *host): + SChainIteratorOf(&host->dynamicReplicantEntitySocket) +{ +} + +Host__DynamicReplicantEntityIterator::~Host__DynamicReplicantEntityIterator() +{ +} + + diff --git a/CODE/RP/MUNGA/HOST.HPP b/CODE/RP/MUNGA/HOST.HPP new file mode 100644 index 0000000..c64a999 --- /dev/null +++ b/CODE/RP/MUNGA/HOST.HPP @@ -0,0 +1,238 @@ +//===========================================================================// +// File: host.hpp // +// Project: MUNGA Brick: Connection Library // +// Contents: Interface specification for base Host class // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 10/28/94 ECH Initial coding. // +// 11/03/94 ECH Develop to munga spec // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(HOST_HPP) +# define HOST_HPP + +# if !defined(NODE_HPP) +# include +# endif + +# if !defined(HOSTID_HPP) +# include +# endif + +# if !defined(SCHAIN_HPP) +# include +# endif + +# if !defined(NETWORK_HPP) +# include +# endif + + class Entity; + + //########################################################################## + //####### Support types for entity identity and host manager ######### + //########################################################################## + + enum HostType + { + GameMachineHostType, + CameraShipHostType, + MissionReviewHostType, + ConsoleHostType + }; + + //########################################################################## + //############################ Host ################################## + //########################################################################## + + class Host: + public Node + { + friend class HostManager; + + friend class Host__AllEntityIterator; + friend class Host__DynamicMasterEntityIterator; + friend class Host__DynamicReplicantEntityIterator; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Public types + // + public: + typedef Host__AllEntityIterator + AllEntityIterator; + + // + // NoNetworkConnectionStatus - + // Initial state, host just created with no net link + // OpeningConnectionStatus - + // Waiting for completion of an active open to this host + // ListeningConnectionStatus - + // Waiting for this host to connect to us + // OnLineConnectionStatus - + // Host is on-line and ready + // + enum ConnectionStatus + { + NoNetworkConnectionStatus, + OpeningConnectionStatus, + ListeningConnectionStatus, + OnLineConnectionStatus + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Construction, Destruction, and testing + // + public: + Host( + HostID host_ID, + HostType host_type, + NetworkAddress network_address + ); + ~Host(); + + Logical + TestInstance() const; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Accessors + // + public: + HostType + GetHostType(); + HostID + GetHostID(); + + NetworkAddress + GetNetworkAddress(); + void + SetNetworkAddress(NetworkAddress network_address); + + ConnectionStatus + GetConnectStatus(); + void + SetConnectStatus(ConnectionStatus new_status); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Host Manager support + // + private: + void + AddEntity(Entity *entity); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Private data + // + private: + HostID + hostID; + HostType + hostType; + NetworkAddress + networkAddress; + ConnectionStatus + currentConnectStatus; + + // + // The all entity socket contains all entities that are on this host. + // + SChainOf + allEntitySocket; + + // + // The dynamic master entity socket contains all entities that are + // masters and dynamic + // + SChainOf + dynamicMasterEntitySocket; + + // + // The dynamic replicant entity socket contains all entities that are + // replicants and dynamic + // + SChainOf + dynamicReplicantEntitySocket; + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Host inlines ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + inline HostType + Host::GetHostType() + { + Check(this); + return hostType; + } + + inline HostID + Host::GetHostID() + { + Check(this); + return hostID; + } + + inline NetworkAddress + Host::GetNetworkAddress() + { + Check(this); + return networkAddress; + } + + inline void + Host::SetNetworkAddress(NetworkAddress network_address) + { + Check(this); + Verify(networkAddress == NullNetworkAddress); + Verify(network_address != NullNetworkAddress); + networkAddress = network_address; + } + + inline Host::ConnectionStatus + Host::GetConnectStatus() + { + Check(this); + return currentConnectStatus; + } + + inline void + Host::SetConnectStatus(ConnectionStatus new_status) + { + Check(this); + currentConnectStatus = new_status; + } + + //~~~~~~~~~~~~~~~~~~~~~~~~ Host__AllEntityIterator ~~~~~~~~~~~~~~~~~~~~~~~~~ + + class Host__AllEntityIterator: + public SChainIteratorOf + { + public: + Host__AllEntityIterator(Host *host); + ~Host__AllEntityIterator(); + }; + + //~~~~~~~~~~~~~~~~~~~~ Host__DynamicMasterEntityIterator ~~~~~~~~~~~~~~~~~~~ + + class Host__DynamicMasterEntityIterator: + public SChainIteratorOf + { + public: + Host__DynamicMasterEntityIterator(Host *host); + ~Host__DynamicMasterEntityIterator(); + }; + + //~~~~~~~~~~~~~~~~~~~ Host__DynamicReplicantEntityIterator ~~~~~~~~~~~~~~~~~ + + class Host__DynamicReplicantEntityIterator: + public SChainIteratorOf + { + public: + Host__DynamicReplicantEntityIterator(Host *host); + ~Host__DynamicReplicantEntityIterator(); + }; + +#endif + diff --git a/CODE/RP/MUNGA/HOST.TCP b/CODE/RP/MUNGA/HOST.TCP new file mode 100644 index 0000000..cfc587f --- /dev/null +++ b/CODE/RP/MUNGA/HOST.TCP @@ -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); +} diff --git a/CODE/RP/MUNGA/HOSTID.HPP b/CODE/RP/MUNGA/HOSTID.HPP new file mode 100644 index 0000000..24ddf22 --- /dev/null +++ b/CODE/RP/MUNGA/HOSTID.HPP @@ -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 +# endif + + // + //--------------------------------------------------- + // Support types for host manager + //--------------------------------------------------- + // + typedef Enumeration HostID; + + const HostID NullHostID = 0; + const HostID MapHostID = -1; + const HostID FirstLegalHostID = 1; + +#endif diff --git a/CODE/RP/MUNGA/HOSTMGR.CPP b/CODE/RP/MUNGA/HOSTMGR.CPP new file mode 100644 index 0000000..2a1c143 --- /dev/null +++ b/CODE/RP/MUNGA/HOSTMGR.CPP @@ -0,0 +1,733 @@ +//===========================================================================// +// File: hostmgr.cpp // +// Project: MUNGA Brick: Connection Library // +// Contents: Interface specification for base Host class // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 10/28/94 ECH Initial coding. // +// 11/03/94 ECH Develop to munga spec // +// 11/29/94 JMA Moved EntityID to entity.cc // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(HOSTMGR_HPP) +# include +#endif + +#if !defined(INTEREST_HPP) +# include +#endif + +#if !defined(APP_HPP) + #include +#endif + +#if !defined(ENTITY_HPP) + #include +#endif + +//############################################################################# +//######################### HostManager ################################# +//############################################################################# + +// +// HACK - EntitySocketHashSize should come from somewhere else +// +const CollectionSize EntitySocketHashSize = 500; + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// HostManager data +// +HostManager::SharedData + HostManager::DefaultData( + HostManager::ClassDerivations, + HostManager::MessageHandlers + ); + +Derivation + HostManager::ClassDerivations( + NetworkClient::ClassDerivations, + "HostManager" + ); + +const Receiver::HandlerEntry + HostManager::MessageHandlerEntries[]= +{ + { + HostManager::NewHostMessageID, + "NewHost", + (HostManager::Handler)&Receiver::DefaultMessageHandler // HACK + }, + { + HostManager::HostUpdateMessageID, + "HostUpdate", + (HostManager::Handler)&Receiver::DefaultMessageHandler // HACK + }, + { + HostManager::EntityTransferOwnershipMessageID, + "EntityTransferOwnership", + (HostManager::Handler)&HostManager::EntityTransferOwnershipHandler + }, + { + HostManager::EntityNewOwnershipMessageID, + "EntityNewOwnership", + (HostManager::Handler)&HostManager::EntityNewOwnershipHandler + } +}; + +Receiver::MessageHandlerSet + HostManager::MessageHandlers( + ELEMENTS(HostManager::MessageHandlerEntries), + HostManager::MessageHandlerEntries, + Receiver::MessageHandlers + ); + +// +//############################################################################# +// HostManager +//############################################################################# +// +HostManager::HostManager(): + NetworkClient(HostManagerClassID, DefaultData, HostManagerClientID), + remoteHostSocket(NULL, True), + allHostSocket(NULL, True), + entityIndexSocket(EntitySocketHashSize, NULL, True) +{ + localHost = NULL; + allHostIterator = NULL; +} + +// +//############################################################################# +//############################################################################# +// +HostManager::~HostManager() +{ + if (allHostIterator != NULL) + { + Unregister_Object(allHostIterator); + delete allHostIterator; + allHostIterator = NULL; + } + + Verify(localHost == NULL); + + #if DEBUG_LEVEL>0 + { + TableIteratorOf iterator(&remoteHostSocket); + Check(&iterator); + Verify(iterator.GetSize() == 0); + } + #endif + + #if DEBUG_LEVEL>0 + { + HashIteratorOf iterator(&entityIndexSocket); + Check(&iterator); + Verify(iterator.GetSize() == 0); + } + #endif +} + +// +//############################################################################# +//############################################################################# +// +Logical + HostManager::TestInstance() const +{ + if (!IsDerivedFrom(ClassDerivations)) + { + return False; + } + + if (localHost != NULL) + { + Check(localHost) + } + if (allHostIterator != NULL) + { + Check(allHostIterator) + } + Check(&remoteHostSocket); + Check(&allHostSocket); + Check(&lastEntityID); + Check(&entityIndexSocket); + return True; +} + +// +//############################################################################# +// Shutdown +//############################################################################# +// +void + HostManager::Shutdown() +{ + Check(this); + + #if 0 // HACK - Partial Implementation + // + //-------------------------------------------------------------------------- + // For (each transferrable entity) + //-------------------------------------------------------------------------- + // + // + // Find new host for ownership + // + + // + // Send transfer entity ownership to that host + // + #else + // + //-------------------------------------------------------------------------- + // Delete all of the entities + //-------------------------------------------------------------------------- + // + if (localHost != NULL) + { + Check(localHost); + Host::AllEntityIterator iterator(localHost); + Check(&iterator); + iterator.DeletePlugs(); + } + #endif +} + +// +//############################################################################# +// AdoptLocalHost +//############################################################################# +// +void + HostManager::AdoptLocalHost(Host *local_host) +{ + Check(this); + Check(local_host); + + // + //-------------------------------------------------------------------------- + // Verify that the local host is currently unassigned and then assign it + //-------------------------------------------------------------------------- + // + Verify(lastEntityID == EntityID::Null); + Verify(localHost == NULL); + localHost = local_host; + + EntityID entity_ID(local_host->GetHostID()); + lastEntityID = entity_ID; + + // + //-------------------------------------------------------------------------- + // Add the local host to the all host socket + //-------------------------------------------------------------------------- + // + allHostSocket.AddValue(local_host, local_host->GetHostID()); +} + +// +//############################################################################# +// OrphanLocalHost +//############################################################################# +// +Host* + HostManager::OrphanLocalHost() +{ + Check(this); + + // + //-------------------------------------------------------------------------- + // Unassign the local host + //-------------------------------------------------------------------------- + // + Host *local_host = localHost; + localHost = NULL; + lastEntityID = EntityID::Null; + + // + //-------------------------------------------------------------------------- + // Remove the local host from the all host socket + //-------------------------------------------------------------------------- + // + if (local_host != NULL) + { + Check(local_host); + PlugIterator remover(local_host); + remover.RemoveSocket(&allHostSocket); + } + return local_host; +} + +// +//############################################################################# +// AdoptRemoteHost +//############################################################################# +// +void + HostManager::AdoptRemoteHost(Host *remote_host) +{ + Check(this); + Check(remote_host); + + // + //-------------------------------------------------------------------------- + // Add to the remote and all host socket + //-------------------------------------------------------------------------- + // + remoteHostSocket.AddValue(remote_host, remote_host->GetHostID()); + allHostSocket.AddValue(remote_host, remote_host->GetHostID()); +} + +// +//############################################################################# +// OrphanRemoteHost +//############################################################################# +// +void + HostManager::OrphanRemoteHost(Host *remote_host) +{ + Check(this); + Check(remote_host); + + // + //-------------------------------------------------------------------------- + // Remove from the remote and all host socket + //-------------------------------------------------------------------------- + // + { + PlugIterator remover(remote_host); + remover.RemoveSocket(&remoteHostSocket); + } + { + PlugIterator remover(remote_host); + remover.RemoveSocket(&allHostSocket); + } +} + +// +//############################################################################# +// GetLocalHostID +//############################################################################# +// +HostID + HostManager::GetLocalHostID() +{ + Check(this); + Check(localHost); + return localHost->GetHostID(); +} + +// +//############################################################################# +// GetRemoteHost +//############################################################################# +// +Host* + HostManager::GetRemoteHost(HostID host_ID) +{ + Check(this); + Verify(host_ID >= FirstLegalHostID); + + return remoteHostSocket.Find(host_ID); +} + +// +//############################################################################# +// GetConsoleHost +//############################################################################# +// +Host* + HostManager::GetConsoleHost() +{ + Check(this); + + Host *host; + TableIteratorOf iterator(&remoteHostSocket); + + Check(&iterator); + while ((host = iterator.ReadAndNext()) != NULL) + { + Check(host); + if (host->GetHostType() == ConsoleHostType) + return host; + } + return NULL; +} + +// +//############################################################################# +// FindHost +//############################################################################# +// +Host* + HostManager::FindHost(NetworkAddress net_address) +{ + Check(this); + + Host *host; + TableIteratorOf iterator(&allHostSocket); + + Check(&iterator); + while ((host = iterator.ReadAndNext()) != NULL) + { + Check(host); + if (host->GetNetworkAddress() == net_address) + { + return host; + } + } + return NULL; +} + +// +//############################################################################# +// MakeUniqueEntityID +//############################################################################# +// +EntityID + HostManager::MakeUniqueEntityID() +{ + Check(this); + Verify(lastEntityID != EntityID::Null); + + return (lastEntityID += 1); +} + +// +//############################################################################# +// NotifyOfEntityCreation +//############################################################################# +// +void + HostManager::NotifyOfEntityCreation( + Entity *entity, + Entity::MakeMessage *creation_message + ) +{ + Check(this); + Check(entity); + Check(creation_message); + + // + //-------------------------------------------------------------------------- + // The host keeps track of all entities + //-------------------------------------------------------------------------- + // + Check(localHost); + localHost->AddEntity(entity); + + // + //-------------------------------------------------------------------------- + // Link the entity to our index + //-------------------------------------------------------------------------- + // + Verify(entity->GetEntityID() != EntityID::Null); + Check(&entityIndexSocket); + entityIndexSocket.AddValue(entity, entity->GetEntityID()); + + // + //-------------------------------------------------------------------------- + // Call interest manager + //-------------------------------------------------------------------------- + // + Check(application); + Check(application->GetInterestManager()); + application->GetInterestManager()->NotifyOfEntityCreation( + entity, + creation_message + ); +} + +// +//############################################################################# +// NotifyOfReplacementEntityCreation +//############################################################################# +// +void + HostManager::NotifyOfReplacementEntityCreation( + Entity*, + EntityID, + ClassID, + LWord + ) +{ + Fail("HostManager::NotifyOfReplacementEntityCreation - under construction"); +} + +// +//############################################################################# +// NotifyOfEntityDestruction +//############################################################################# +// +void + HostManager::NotifyOfEntityDestruction(Entity *entity) +{ + // + //-------------------------------------------------------------------------- + // Perform any additional processing here... + //-------------------------------------------------------------------------- + // + + // + //-------------------------------------------------------------------------- + // Notify interest manager of the destruction + //-------------------------------------------------------------------------- + // + Check(application); + Check(application->GetInterestManager()); + application->GetInterestManager()->NotifyOfEntityDestruction(entity); +} + +// +//############################################################################# +// IdentifyNewMapEntityHost +//############################################################################# +// +HostID + HostManager::IdentifyNewMapEntityHost( + EntityID + ) +{ + Check(this); + + // + //-------------------------------------------------------------------------- + // HACK - Partial Implementation, since the entity IDs are not yet + // precomputed several assumptions are made. 1) The map stream read by each + // pilot is identical. 2) All of the hosts are connected at the point that + // the stream is read. => Therefore, it is easy to allocate the entities to + // each host. + //-------------------------------------------------------------------------- + // + + // + //-------------------------------------------------------------------------- + // Verify that legal map entity hosts exist + //-------------------------------------------------------------------------- + // + #if DEBUG_LEVEL>0 + { + TableIteratorOf iterator(&allHostSocket); + Host *host; + CollectionSize legal_map_entity_hosts = 0; + + while ((host = iterator.ReadAndNext()) != NULL) + { + if (host->GetHostType() == GameMachineHostType) + { + legal_map_entity_hosts++; + } + } + Verify(legal_map_entity_hosts > 0); + } + #endif + + // + //-------------------------------------------------------------------------- + // Check the host iterator + //-------------------------------------------------------------------------- + // + if (allHostIterator == NULL) + { + allHostIterator = new TableIteratorOf(&allHostSocket); + Register_Object(allHostIterator); + } + Check(allHostIterator); + + // + //-------------------------------------------------------------------------- + // Get a legal map entity host + //-------------------------------------------------------------------------- + // + Host *map_entity_host; + Logical is_legal_map_entity_host = False; + + do + { + if ((map_entity_host = allHostIterator->GetCurrent()) == NULL) + { + allHostIterator->First(); + map_entity_host = allHostIterator->GetCurrent(); + } + Check(map_entity_host); + if (map_entity_host->GetHostType() == GameMachineHostType) + { + is_legal_map_entity_host = True; + } + else + { + allHostIterator->Next(); + } + } + while (!is_legal_map_entity_host); + + // + //-------------------------------------------------------------------------- + // Move to the next host + //-------------------------------------------------------------------------- + // + allHostIterator->Next(); + + // + //-------------------------------------------------------------------------- + // Return the map entity host ID + //-------------------------------------------------------------------------- + // + Check(map_entity_host); + Verify(map_entity_host->GetHostType() == GameMachineHostType); + Verify(map_entity_host->GetHostID() != NullHostID); + + return map_entity_host->GetHostID(); +} + +// +//############################################################################# +// EntityTransferOwnership +//############################################################################# +// +void + HostManager::EntityTransferOwnershipHandler( + EntityTransferOwnershipMessage* + ) +{ + #if 0 + // + // Find replicant for this entity + // + + // + // If (replicant found) + // + // + // Morph the replicant into the master replicant + // + + // + // If (the replicant was not found) + // + // + // Make a transferred master entity + // + + // + // Broadcast new entity ownership + // + #else + Fail("HostManager::EntityTransferOwnershipHandler - under construction"); + #endif +} + +// +//############################################################################# +// EntityNewOwnership +//############################################################################# +// +void + HostManager::EntityNewOwnershipHandler( + EntityNewOwnershipMessage* + ) +{ + #if 0 + // + // If (this host is the owner host) + // + // + // Return + // + + // + // Find the replicant for this entity + // + // + // If (found the replicant) + // + // + // Point it at the new owner + // + #else + Fail("HostManager::EntityNewOwnershipHandler - under construction"); + #endif +} + +//~~~~~~~~~~~~~~~~~~~~~~~~ HostManager__AllEntityIterator ~~~~~~~~~~~~~~~~~~~~~ + +HostManager__AllEntityIterator::HostManager__AllEntityIterator( + HostManager *host_manager +): + Host__AllEntityIterator(host_manager->localHost) +{ +} + +HostManager__AllEntityIterator::~HostManager__AllEntityIterator() +{ +} + +//~~~~~~~~~~~~~~~~~~ HostManager__DynamicMasterEntityIterator ~~~~~~~~~~~~~~~~~ + +HostManager__DynamicMasterEntityIterator:: + HostManager__DynamicMasterEntityIterator( + HostManager *host_manager + ): + Host__DynamicMasterEntityIterator(host_manager->localHost) +{ +} + +HostManager__DynamicMasterEntityIterator:: + ~HostManager__DynamicMasterEntityIterator() +{ +} + +//~~~~~~~~~~~~~~~~~ HostManager__DynamicReplicantEntityIterator ~~~~~~~~~~~~~~~ + +HostManager__DynamicReplicantEntityIterator:: + HostManager__DynamicReplicantEntityIterator( + HostManager *host_manager + ): + Host__DynamicReplicantEntityIterator(host_manager->localHost) +{ +} + +HostManager__DynamicReplicantEntityIterator:: + ~HostManager__DynamicReplicantEntityIterator() +{ +} + +//~~~~~~~~~~~~~~~~~~~~~~~~ HostManager__RemoteHostIterator ~~~~~~~~~~~~~~~~~~~~ + +HostManager__RemoteHostIterator::HostManager__RemoteHostIterator( + HostManager *host_manager +): + TableIteratorOf(&host_manager->remoteHostSocket) +{ +} + +HostManager__RemoteHostIterator::~HostManager__RemoteHostIterator() +{ +} + +//~~~~~~~~~~~~~~~~~~~~~~~~ HostManager__AllHostIterator ~~~~~~~~~~~~~~~~~~~~~~~ + +HostManager__AllHostIterator::HostManager__AllHostIterator( + HostManager *host_manager +): + TableIteratorOf(&host_manager->allHostSocket) +{ +} + +HostManager__AllHostIterator::~HostManager__AllHostIterator() +{ +} + +#if 0 +# if defined(TEST_CLASS) +# include "host.tcp" +# endif +#endif diff --git a/CODE/RP/MUNGA/HOSTMGR.HPP b/CODE/RP/MUNGA/HOSTMGR.HPP new file mode 100644 index 0000000..99f6821 --- /dev/null +++ b/CODE/RP/MUNGA/HOSTMGR.HPP @@ -0,0 +1,404 @@ +//===========================================================================// +// File: hostmgr.hpp // +// Project: MUNGA Brick: Connection Library // +// Contents: Interface specification for base Host class // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 10/28/94 ECH Initial coding. // +// 11/03/94 ECH Develop to munga spec // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(HOSTMGR_HPP) +# define HOSTMGR_HPP + +# if !defined(NETWORK_HPP) +# include +# endif + +# if !defined(HOST_HPP) +# include +# endif + +# if !defined(TABLE_HPP) +# include +# endif + +# if !defined(HASH_HPP) +# include +# endif + +# if !defined(ENTITYID_HPP) +# include +# endif + + class Entity; + class Entity__MakeMessage; + + //########################################################################## + //######################### HostManager ############################## + //########################################################################## + + class HostManager__EntityTransferOwnershipMessage; + class HostManager__EntityNewOwnershipMessage; + + class HostManager: + public NetworkClient + { + friend class HostManager__AllEntityIterator; + friend class HostManager__DynamicMasterEntityIterator; + friend class HostManager__DynamicReplicantEntityIterator; + + friend class HostManager__RemoteHostIterator; + friend class HostManager__AllHostIterator; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Public types + // + public: + typedef HostManager__AllEntityIterator + AllEntityIterator; + typedef HostManager__DynamicMasterEntityIterator + DynamicMasterEntityIterator; + typedef HostManager__DynamicReplicantEntityIterator + DynamicReplicantEntityIterator; + + typedef HostManager__RemoteHostIterator + RemoteHostIterator; + typedef HostManager__AllHostIterator + AllHostIterator; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Construction, Destruction, and testing + // + public: + HostManager(); + ~HostManager(); + + Logical + TestInstance() const; + static void + TestClass(); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Execution control + // + public: + void + Shutdown(); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Local and remote host methods + // + public: + // + //----------------------------------------------------------------------- + // AdoptLocalHost, OrphanLocalHost + //----------------------------------------------------------------------- + // + void + AdoptLocalHost(Host *local_host); + Host* + OrphanLocalHost(); + + // + //----------------------------------------------------------------------- + // GetLocalHostID, GetLocalHost + //----------------------------------------------------------------------- + // + HostID + GetLocalHostID(); + Host* + GetLocalHost(); + + // + //----------------------------------------------------------------------- + // AdoptRemoteHost, OrphanRemoteHost + //----------------------------------------------------------------------- + // + void + AdoptRemoteHost(Host *remote_host); + void + OrphanRemoteHost(Host *remote_host); + + // + //----------------------------------------------------------------------- + // GetRemoteHost, GetConsoleHost, FindHost + //----------------------------------------------------------------------- + // + Host* + GetRemoteHost(HostID host_ID); + Host* + GetConsoleHost(); + Host* + FindHost(NetworkAddress net_address); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Entity methods + // + public: + // + //----------------------------------------------------------------------- + // MakeUniqueEntityID + // + // Returns a unique entity indentity + //----------------------------------------------------------------------- + // + EntityID + MakeUniqueEntityID(); + + // + //----------------------------------------------------------------------- + // NotifyOfEntityCreation + // + // This method is called to notify the host manager that a new entity + // has been created on this host. + //----------------------------------------------------------------------- + // + void + NotifyOfEntityCreation( + Entity *entity, + Entity__MakeMessage *creation_message + ); + + // + //----------------------------------------------------------------------- + // NotifyOfEntityDestruction + // + // This method is called to notify the host manager that a entity is + // being destroyed. + //----------------------------------------------------------------------- + // + void + NotifyOfEntityDestruction(Entity *entity); + + // + //----------------------------------------------------------------------- + // NotifyOfReplacementEntityCreation + // + // This method is called by the registry manager to notify the + // host manager that a new replacement entity has been + // created on this host. + //----------------------------------------------------------------------- + // + void + NotifyOfReplacementEntityCreation( + Entity *entity, + EntityID entity_ID, + ClassID entity_class, + LWord entity_type + ); + + // + //----------------------------------------------------------------------- + // GetEntityPointer + // + // Returns a pointer to the entity specified by entityID. + //----------------------------------------------------------------------- + // + Entity* + GetEntityPointer(const EntityID &entityID); + + // + //----------------------------------------------------------------------- + // IdentifyNewMapEntityHost + // + // For LAN specific solutions the host manager can return the + // host id of a new map entity prior to its creation. This + // method uses an algorithm to determine this value and returns + // it. + //----------------------------------------------------------------------- + // + HostID + IdentifyNewMapEntityHost(EntityID entity_ID); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Message Support + // + public: + // + // Message IDs + // + enum + { + NewHostMessageID = NetworkClient::NextMessageID, + HostUpdateMessageID, + EntityTransferOwnershipMessageID, + EntityNewOwnershipMessageID, + NextMessageID + }; + + // + // Message types + // + typedef HostManager__EntityTransferOwnershipMessage + EntityTransferOwnershipMessage; + typedef HostManager__EntityNewOwnershipMessage + EntityNewOwnershipMessage; + + // + //----------------------------------------------------------------------- + // EntityTransferOwnership + //----------------------------------------------------------------------- + // + void + EntityTransferOwnershipHandler(EntityTransferOwnershipMessage*); + + // + //----------------------------------------------------------------------- + // EntityNewOwnership + //----------------------------------------------------------------------- + // + void + EntityNewOwnershipHandler(EntityNewOwnershipMessage*); + + // + //----------------------------------------------------------------------- + // Message table, Shared data + //----------------------------------------------------------------------- + // + static const HandlerEntry + MessageHandlerEntries[]; + static MessageHandlerSet + MessageHandlers; + + static Derivation + ClassDerivations; + static SharedData + DefaultData; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Private data + // + private: + Host + *localHost; + TableOf + remoteHostSocket; + TableOf + allHostSocket; + TableIteratorOf + *allHostIterator; + + // + // The last entity id to be allocated, used to allocate a new one + // + EntityID + lastEntityID; + + // + // The entity index socket holds all entities, static, dynamic, + // replicant, etc... + // + HashOf + entityIndexSocket; + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~ HostManager inlines ~~~~~~~~~~~~~~~~~~~~~~~~~~ + + inline Entity* + HostManager::GetEntityPointer(const EntityID &entity_ID) + { + Check(this); + return entityIndexSocket.Find(entity_ID); + } + + inline Host* + HostManager::GetLocalHost() + { + Check(this); + + // + // GAC removed this so we can use the call to see if a + // local host exists or not, there doesn't seem to be + // any call for this. Host Manager initializes localHost + // to NULL and all routines check it before use so this + // shouldn't cause any problems. + // + // Check(localHost); + + return localHost; + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~ HostManager messages ~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class HostManager__EntityTransferOwnershipMessage: + public NetworkClient::Message + { + public: + HostManager__EntityTransferOwnershipMessage(): + NetworkClient::Message( + HostManager::EntityTransferOwnershipMessageID, + sizeof(HostManager__EntityTransferOwnershipMessage) + ) + {} + }; + + class HostManager__EntityNewOwnershipMessage: + public NetworkClient::Message + { + public: + HostManager__EntityNewOwnershipMessage(): + NetworkClient::Message( + HostManager::EntityNewOwnershipMessageID, + sizeof(HostManager__EntityNewOwnershipMessage) + ) + {} + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~ HostManager__AllEntityIterator ~~~~~~~~~~~~~~~~~~ + + class HostManager__AllEntityIterator: + public Host__AllEntityIterator + { + public: + HostManager__AllEntityIterator(HostManager *host_manager); + ~HostManager__AllEntityIterator(); + }; + + //~~~~~~~~~~~~~~~~~ HostManager__DynamicMasterEntityIterator ~~~~~~~~~~~~~~~ + + class HostManager__DynamicMasterEntityIterator: + public Host__DynamicMasterEntityIterator + { + public: + HostManager__DynamicMasterEntityIterator(HostManager *host_manager); + ~HostManager__DynamicMasterEntityIterator(); + }; + + //~~~~~~~~~~~~~~~~~ HostManager__DynamicReplicantEntityIterator ~~~~~~~~~~~~ + + class HostManager__DynamicReplicantEntityIterator: + public Host__DynamicReplicantEntityIterator + { + public: + HostManager__DynamicReplicantEntityIterator(HostManager *host_manager); + ~HostManager__DynamicReplicantEntityIterator(); + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~ HostManager__RemoteHostIterator ~~~~~~~~~~~~~~~~~ + + class HostManager__RemoteHostIterator: + public TableIteratorOf + { + public: + HostManager__RemoteHostIterator(HostManager *host_manager); + ~HostManager__RemoteHostIterator(); + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~ HostManager__AllHostIterator ~~~~~~~~~~~~~~~~~~~~ + + class HostManager__AllHostIterator: + public TableIteratorOf + { + public: + HostManager__AllHostIterator(HostManager *host_manager); + ~HostManager__AllHostIterator(); + }; + +#endif + diff --git a/CODE/RP/MUNGA/ICOM.CPP b/CODE/RP/MUNGA/ICOM.CPP new file mode 100644 index 0000000..f04db36 --- /dev/null +++ b/CODE/RP/MUNGA/ICOM.CPP @@ -0,0 +1,496 @@ +//===========================================================================// +// File: icom.cpp // +// Project: MUNGA Brick: Controls // +// Contents: Interface specification for intercom class // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 08/18/95 CPB Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(ICOM_HPP) +# include +#endif + +#if !defined(APP_HPP) +# include +#endif + +// #define LOCAL_TEST + +#if defined(LOCAL_TEST) +# define Test_Tell(n) Tell(n << flush); +#else +# define Test_Tell(n) +#endif + +//########################################################################## +//############################# Icom ################################# +//########################################################################## +Icom::Icom( + HostID host_id, + int unit_number +): +Plug(IcomClassID) +{ + Test_Tell("Icom::Icom(" << host_id << ", " << unit_number << ")\n"); + Check_Pointer(this); + //-------------------------------------- + // Initialize values + //-------------------------------------- + hostID = host_id; + unitNumber = unit_number; + channel = undefinedChannel; + channelBeforePA = undefinedChannel; + PTTStatus = False; + PACaptive = False; + + Check_Fpu(); +} + +Icom::~Icom() +{ + Test_Tell("Icom::~Icom()\n"); + Check(this); + //-------------------------------------- + // Cleanup before deletion + //-------------------------------------- + SetPTTStatusValue(False); + SetChannelValue(undefinedChannel); + //-------------------------------------- + // The plug automatically unlinks + // from the Icom Manager upon deletion. + //-------------------------------------- + Check_Fpu(); +} + +Logical + Icom::TestInstance() const +{ + Plug::TestInstance(); + Check_Fpu(); + return True; +} + +//-------------------------------------------------------------------------- +void + Icom::SetChannel(int new_channel) +{ + Test_Tell("Icom::SetChannel(" << new_channel << ")\n"); + Check(this); + //-------------------------------------- + // Broadcast the change + // (nonexclusive broadcast: we receive + // and process this msg locally) + //-------------------------------------- + IcomManager::IMMessage + message; + + message.BuildChannelMessage( + IcomManager::ChannelMessageID, + hostID, + unitNumber, + new_channel + ); + Check(application); + application->BroadcastEvent( + DefaultEventPriority, + NetworkClient::IcomManagerClientID, + &message + ); + + Check_Fpu(); +} + +void + Icom::SetChannelValue(int new_channel) +{ + Test_Tell("Icom::SetChannelValue(" << new_channel << ")\n"); + Check(this); + //-------------------------------------- + // Set local value + //-------------------------------------- + channel = new_channel; + Check_Fpu(); +} + +int + Icom::GetChannel() +{ + Check(this); + Check_Fpu(); + return channel; +} + +//-------------------------------------------------------------------------- +void + Icom::SetPTTStatus(Logical new_ptt) +{ + Test_Tell("Icom::SetPTTStatus(" << new_ptt << ")\n"); + Check(this); + + //--------------------------------------- + // Disallow talking during public address + //--------------------------------------- + if (!PACaptive) + { + //-------------------------------------- + // Broadcast change + // (nonexclusive broadcast: we receive + // and process this msg locally) + //-------------------------------------- + IcomManager::IMMessage + message; + + message.BuildPTTMessage( + IcomManager::PTTMessageID, + hostID, + unitNumber, + new_ptt + ); + Check(application); + application->BroadcastEvent( + DefaultEventPriority, + NetworkClient::IcomManagerClientID, + &message + ); + } + + Check_Fpu(); +} + +void + Icom::SetPTTStatusValue(Logical new_ptt) +{ + Test_Tell("Icom::SetPTTStatusValue(" << new_ptt << ")\n"); + Check(this); + //--------------------------------------- + // Disallow talking during public address + //--------------------------------------- + if (!PACaptive) + { + PTTStatus = new_ptt; + } + Check_Fpu(); +} + +Logical + Icom::GetPTTStatus() +{ + Check(this); + Check_Fpu(); + return PTTStatus; +} + +//-------------------------------------------------------------------------- +void + Icom::SetPACaptive(Logical new_pa) +{ + Test_Tell("Icom::SetPACaptive(" << new_pa << ")\n"); + Check(this); + + //-------------------------------------- + // Broadcast the change + // (nonexclusive broadcast: we receive + // and process this msg locally) + //-------------------------------------- + IcomManager::IMMessage + message; + + message.BuildPAMessage( + IcomManager::PAMessageID, + hostID, + unitNumber, + new_pa + ); + Check(application); + application->BroadcastEvent( + DefaultEventPriority, + NetworkClient::IcomManagerClientID, + &message + ); + + Check_Fpu(); +} + +void + Icom::SetPACaptiveValue(Logical new_pa) +{ + Test_Tell("Icom::SetPACaptiveValue(" << new_pa << ")\n"); + Check(this); + + if (new_pa == True) + { + if (PACaptive == False) + { + channelBeforePA = channel; + } + //-------------------------------------- + // Force PTT off during public address + //-------------------------------------- + if (PTTStatus == True) + { + SetPTTStatusValue(False); + } + } + else + { + //-------------------------------------- + // Return to previous channel + //-------------------------------------- + SetChannelValue(channelBeforePA); + } + PACaptive = new_pa; + Check_Fpu(); +} + +Logical + Icom::GetPACaptive() +{ + Check(this); + Check_Fpu(); + return PACaptive; +} + +//########################################################################## +//######################### IcomManager ############################## +//########################################################################## + +//-------------------------------------------------------------------------- +// Virtual Data support +// + +Derivation + IcomManager::ClassDerivations( + NetworkClient::ClassDerivations, + "IcomManager" + ); + +IcomManager::SharedData + IcomManager::DefaultData( + IcomManager::ClassDerivations, + IcomManager::MessageHandlers + ); + +//-------------------------------------------------------------------------- +// Creator +// +IcomManager::IcomManager( + SharedData &shared_data +): +NetworkClient(IcomManagerClassID, shared_data, IcomManagerClientID), +instanceList(this) +{ + Test_Tell("IcomManager::IcomManager()\n"); + Check_Pointer(this); + + //-------------------------------- + // Initialize unit number service + //-------------------------------- + nextUnitNumber = 0; + + Check_Fpu(); +} + +//-------------------------------------------------------------------------- +// Destructor +// +IcomManager::~IcomManager() +{ + Test_Tell("IcomManager::~IcomManager()\n"); + Check(this); + + Shutdown(); + + Check_Fpu(); +} + +//-------------------------------------------------------------------------- +Logical + IcomManager::TestInstance() const +{ + return IsDerivedFrom(ClassDerivations); +} + +//-------------------------------------------------------------------------- +void + IcomManager::LoadMission(Mission */*mission*/) +{ + Check(this); + Check_Fpu(); +} + +//-------------------------------------------------------------------------- +void + IcomManager::Shutdown() +{ + Check(this); + + Icom + *icom; + ChainIteratorOf + i(instanceList); + + //------------------------------------------ + // Delete all icom objects + //------------------------------------------ + while ((icom=i.ReadAndNext()) != NULL) + { + Check(icom); + Unregister_Object(icom); + delete icom; + } + Check_Fpu(); +} + +//-------------------------------------------------------------------------- +void + IcomManager::Execute() +{ + Check(this); + Fail("IcomManager::Execute() should not be called directly!\n"); +} + +//-------------------------------------------------------------------------- +Icom * + IcomManager::MakeIcom(HostID host_id, int unit_number) +{ + Test_Tell( + "IcomManager::MakeIcom(" << host_id << + ", " << unit_number << + ")\n" + ); + Check(this); + + //------------------------------------------ + // Create, register icom object + //------------------------------------------ + Icom + *icom = new Icom(host_id, unit_number); + Check(icom); + Register_Object(icom); + //------------------------------------------ + // Add to global list + //------------------------------------------ + instanceList.Add(icom); + + Check_Fpu(); + return icom; +} + +//------------------------------------------------------------------------ +void + IcomManager::SetPAState(int pa_channel) +{ + Test_Tell("IcomManager::SetPAState(" << pa_channel << ")\n"); + Check(this); + + Icom + *icom; + + ChainIteratorOf + i(instanceList); + + if (pa_channel == Icom::undefinedChannel) + { + //------------------------------------------ + // Release all icom objects from PA state + //------------------------------------------ + while ((icom=i.ReadAndNext()) != NULL) + { + Check(icom); + icom->SetPACaptive(False); + } + } + else + { + //------------------------------------------ + // Force all icom objects to PA state + //------------------------------------------ + while ((icom=i.ReadAndNext()) != NULL) + { + Check(icom); + icom->SetPACaptive(True); + icom->SetChannel(pa_channel); + } + } + Check_Fpu(); +} + +//------------------------------------------------------------------------ +Icom* + IcomManager::FindIcom(HostID host_id, int unit_number) +{ + Check(this); + + ChainIteratorOf + i(instanceList); + Icom + *icom; + + while ((icom=i.ReadAndNext()) != NULL) + { + Check(icom); + if (icom->hostID == host_id) + { + if (icom->unitNumber == unit_number) + { + Check_Fpu(); + return icom; + } + } + } + + Check_Fpu(); + return NULL; +} + + +void + IcomManager::ReceiveNetworkPacket( + NetworkPacket */*packet*/, + Receiver::Message *packet_message + ) +{ + Test_Tell("IcomManager::ReceiveNetworkPacket(...)\n"); + Check(this); + Check(packet_message); + Verify(packet_message->messageID >= 0); + Verify(packet_message->messageID < NextMessageID); + + IMMessage + *message = (IMMessage *) packet_message; + + Icom + *icom = FindIcom(message->hostID, message->unitNumber); + + if (icom != NULL) + { + Check(icom); + switch (message->messageID) + { + case ChannelMessageID: + icom->SetChannelValue(message->data.channelNumber); + break; + + case PTTMessageID: + icom->SetPTTStatusValue(message->data.PTTStatus); + break; + + case PAMessageID: + icom->SetPACaptiveValue(message->data.PAStatus); + break; + } + } + + Check_Fpu(); +} + + diff --git a/CODE/RP/MUNGA/ICOM.HPP b/CODE/RP/MUNGA/ICOM.HPP new file mode 100644 index 0000000..308000e --- /dev/null +++ b/CODE/RP/MUNGA/ICOM.HPP @@ -0,0 +1,263 @@ +//===========================================================================// +// File: icom.hpp // +// Project: MUNGA Brick: Controls // +// Contents: Interface specification for intercom class // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 08/14/95 CPB Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(ICOM_HPP) +# define ICOM_HPP + +# if !defined(ENTITY_HPP) +# include +# endif + +# if !defined(NETWORK_HPP) +# include +# endif + + class Mission; + + //########################################################################## + //############################# Icom ################################# + //########################################################################## + class Icom: + public Plug + { + friend class IcomManager; + public: + // constructor is protected: only the IcomManager should call it. + + virtual ~Icom(); + + Logical + TestInstance() const; + + //-------------------------------------------------- + // These methods are used to set the channel, PTT, + // and PA status globally across all the cockpits. + // + // They invoke the protected 'set value' methods + // defined below. + //-------------------------------------------------- + void + SetChannel(int new_channel); + void + SetPTTStatus(Logical new_ptt); + void + SetPACaptive(Logical new_pa); + //-------------------------------------------------- + // These methods allow access to the values + //-------------------------------------------------- + int + GetChannel(); + Logical + GetPTTStatus(); + Logical + GetPACaptive(); + + enum + { + undefinedChannel = -1 + }; + + protected: + Icom(HostID host_id, int unit_number = 0); + //-------------------------------------------------- + // These methods are used to locally set the value + // for the channel, PTT, and PA status. + // + // The difference between these methods and the + // public methods defined above is that these + // methods are called by both the public routines + // above and the event receiver to actually + // set the values involved. Making them virtual + // allows derived classes to be notified of changes + // (but also requires that all derived classes + // explicitly call the overridden methods!) + //-------------------------------------------------- + virtual void + SetChannelValue(int new_channel); + virtual void + SetPTTStatusValue(Logical new_ptt); + virtual void + SetPACaptiveValue(Logical new_pa); + + HostID + hostID; + int + unitNumber; + int + channel, + channelBeforePA; + Logical + PTTStatus; + Logical + PACaptive; // held by operator + }; + + //########################################################################## + //##################### IcomManager::Message ########################### + //########################################################################## + + class IcomManager__Message : + public Receiver::Message + { + public: + HostID + hostID; + int + unitNumber; + + union + { + int channelNumber; + Logical PTTStatus; + Logical PAStatus; + } + data; + + IcomManager__Message(): + Receiver::Message(Receiver::AnyMessageID, sizeof(*this)) + {} + + // Message ID's must be passed in as parameters + // to avoid circular reference (ID's not defined yet) + void + BuildChannelMessage( + Receiver::MessageID message_id, + HostID host_id, + int unit_number, + int new_channel + ) + { + messageLength = sizeof(IcomManager__Message); + messageID = message_id; + hostID = host_id; + unitNumber = unit_number; + data.channelNumber = new_channel; + } + + void + BuildPTTMessage( + Receiver::MessageID message_id, + HostID host_id, + int unit_number, + Logical new_status + ) + { + messageLength = sizeof(IcomManager__Message); + messageID = message_id; + hostID = host_id; + unitNumber = unit_number; + data.PTTStatus = new_status; + } + + void + BuildPAMessage( + Receiver::MessageID message_id, + HostID host_id, + int unit_number, + Logical new_status + ) + { + messageLength = sizeof(IcomManager__Message); + messageID = message_id; + hostID = host_id; + unitNumber = unit_number; + data.PAStatus = new_status; + } + + }; + + //########################################################################## + //######################### IcomManager ############################## + //########################################################################## + class IcomManager: + public NetworkClient + { + friend class Icom; + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Shared data Support + // + public: + static Derivation ClassDerivations; + static SharedData DefaultData; + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Message Support + // + public: + enum + { + ChannelMessageID = NetworkClient::NextMessageID, + PTTMessageID, + PAMessageID, + NextMessageID + }; + + void + ReceiveNetworkPacket( + NetworkPacket *packet, + Receiver::Message *packet_message + ); + + typedef IcomManager__Message IMMessage; + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Construction and Destruction + // + public: + IcomManager( + SharedData &shared_data = DefaultData + ); + virtual ~IcomManager(); + + Logical + TestInstance() const; + + virtual Icom * + MakeIcom(HostID host_id, int unit_number=0); + int + AllocateUnitNumber(); + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // LoadMission, Shutdown methods + // + public: + virtual void + LoadMission(Mission *mission); + virtual void + Shutdown(); + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Periodic update method + // + public: + virtual void + Execute(); + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Public address (force all intercoms to listen to common channel) + // + virtual void + SetPAState(int channel); // use Icom::undefinedChannel to release + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Icom object support routines + // + protected: + Icom * + FindIcom(HostID host_id, int unit_number); + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // protected data + // + protected: + int + nextUnitNumber; + ChainOf + instanceList; // list of all Icom objects + }; + +#endif diff --git a/CODE/RP/MUNGA/INTEREST.CPP b/CODE/RP/MUNGA/INTEREST.CPP new file mode 100644 index 0000000..a2faab4 --- /dev/null +++ b/CODE/RP/MUNGA/INTEREST.CPP @@ -0,0 +1,2629 @@ +//===========================================================================// +// File: interest.cc // +// Project: MUNGA Brick: Interest Manager // +// Contents: Interface specification Interest Manager // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 10/28/94 ECH Initial coding. // +// 11/03/94 ECH Develop to munga spec // +// 11/29/94 JMA Changed Identities to IDs // +// 02/10/95 CPB Added GaugeInterestType // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(INTEREST_HPP) +# include +#endif + +#if !defined(REGISTRY_HPP) +# include +#endif + +#if !defined(MISSION_HPP) +# include +#endif + +#if !defined(BOXTREE_HPP) +# include +#endif + +#if !defined(RENDERER_HPP) +# include +#endif + +#if !defined(CULTURAL_HPP) +# include +#endif + +#if !defined(APP_HPP) + #include +#endif + +#if !defined(HOSTMGR_HPP) + #include +#endif + +//############################################################################# +//####################### InterestManager ############################### +//############################################################################# + +// +//-------------------------------------------------------------------- +// InterestManager data +//-------------------------------------------------------------------- +// +unsigned char + InterestManager::messageBuildBuffer[INTERESTMANAGER_MESSAGE_BUFFER_SIZE]; + +InterestManager::SharedData + InterestManager::DefaultData( + InterestManager::ClassDerivations, + InterestManager::MessageHandlers + ); + +Derivation + InterestManager::ClassDerivations( + NetworkClient::ClassDerivations, + "InterestManager" + ); + +const Receiver::HandlerEntry + InterestManager::MessageHandlerEntries[]= +{ + // + // NewDynamicEntityMessageID + // + { + InterestManager::NewDynamicEntityMessageID, + "NewDynamicEntity", + (InterestManager::Handler)&InterestManager::NewDynamicEntityHandler + }, + // + // DestroyDynamicEntityMessageID + // + { + InterestManager::DestroyDynamicEntityMessageID, + "DestroyDynamicEntity", + (InterestManager::Handler)&InterestManager::DestroyDynamicEntityHandler + }, + // + // EntitySubscribeToUpdatesMessageID + // + { + InterestManager::EntitySubscribeToUpdatesMessageID, + "EntitySubscribeToUpdates", + (InterestManager::Handler)&InterestManager::EntitySubscribeToUpdatesHandler + }, + // + // EntityUpdateReplicantsMessageID + // + { + InterestManager::EntityUpdateReplicantsMessageID, + "EntityUpdateReplicants", + (InterestManager::Handler)&InterestManager::EntityUpdateReplicantsHandler + }, + // + // EntityBroadcastToReplicantsMessageID + // + { + InterestManager::EntityBroadcastToReplicantsMessageID, + "EntityBroadcastToReplicants", + (InterestManager::Handler)&InterestManager::EntityBroadcastToReplicantsHandler + }, + // + // EntityNewInterestZoneMessageID + // + { + InterestManager::EntityNewInterestZoneMessageID, + "EntityNewInterestZone", + (InterestManager::Handler)&InterestManager::EntityNewInterestZoneHandler + }, + // + // HostInterestArenaChangedMessageID + // + { + InterestManager::HostInterestArenaChangedMessageID, + "HostInterestArenaChanged", + (InterestManager::Handler)&InterestManager::HostInterestArenaChangedHandler + }, + // + // InterestZoneDeltaMessageID + // + { + InterestManager::InterestZoneDeltaMessageID, + "InterestZoneDelta", + (InterestManager::Handler)&InterestManager::InterestZoneDeltaHandler + }, + // + // LoadResourceFinishedMessageID + // + { + Receiver::LoadResourceFinishedMessageID, + "LoadResourceFinished", + (InterestManager::Handler)&InterestManager::LoadResourceFinishedHandler + } +}; + +Receiver::MessageHandlerSet + InterestManager::MessageHandlers( + ELEMENTS(InterestManager::MessageHandlerEntries), + InterestManager::MessageHandlerEntries, + NetworkClient::MessageHandlers + ); + +// +//############################################################################# +// InterestManager +//############################################################################# +// +InterestManager::InterestManager(): + NetworkClient(InterestManagerClassID, DefaultData, InterestManagerClientID), + interestOriginSocket(NULL) +{ + interestArena = NULL; +} + +// +//############################################################################# +// ~InterestManager +//############################################################################# +// +InterestManager::~InterestManager() +{ + if (interestArena != NULL) + { + Unregister_Object(interestArena); + delete interestArena; + } +} + +// +//############################################################################# +// TestInstance +//############################################################################# +// +Logical + InterestManager::TestInstance() const +{ + if (!IsDerivedFrom(ClassDerivations)) + { + return False; + } + Check(&interestLatticeManager); + return True; +} + +// +//############################################################################# +// LoadMission +//############################################################################# +// +void + InterestManager::LoadInterestArenas(Mission*) +{ + Check(this); + + #if 0 // HACK - Partial Implementation + // + //-------------------------------------------------------------------------- + // Load the interest zones that are accessed by the pilot's drop zone + //-------------------------------------------------------------------------- + // + #else + // + //-------------------------------------------------------------------------- + // Make one interest arena manually + //-------------------------------------------------------------------------- + // + #if DEBUG_LEVEL>0 + { + Check(&interestOriginSocket); + SChainIteratorOf iterator(&interestOriginSocket); + Check(&iterator); + Verify(iterator.GetSize() == 0); + } + #endif + Verify(interestArena == NULL); + interestArena = interestLatticeManager.MakeInterestArena( + (InterestZoneID)0, + (InterestType)0, + (InterestDepth)0 + ); + Register_Object(interestArena); + #endif +} + +// +//############################################################################# +// LoadMission +//############################################################################# +// +void + InterestManager::LoadMission(Mission *mission) +{ + Check(this); + Check(mission); + + // + //-------------------------------------------------------------------------- + // Return if the map ID is not valid + //-------------------------------------------------------------------------- + // + if (mission->GetMapID() == ResourceDescription::NullResourceID) + return; + + // + //-------------------------------------------------------------------------- + // Get the resource description + //-------------------------------------------------------------------------- + // + ResourceFile *resource_file; + ResourceDescription *resource_description; + + Check(application); + resource_file = application->GetResourceFile(); + Check(resource_file); + resource_description = + resource_file->FindResourceDescription(mission->GetMapID()); + Check(resource_description); + resource_description->Lock(); + + // + //-------------------------------------------------------------------------- + // Create the map stream and load + //-------------------------------------------------------------------------- + // + MemoryStream + map_stream( + resource_description->resourceAddress, + resource_description->resourceSize + ); + + Check(&map_stream); + EntityID last_entity_id(MapHostID); + int landmark_id=0; + LoadMapStream(&map_stream, Origin::Identity, last_entity_id, landmark_id); + resource_description->Unlock(); + + // + //-------------------------------------------------------------------------- + // HACK - load in the collision resources into the tree pointed to by + // this resource + //-------------------------------------------------------------------------- + // + resource_description = + resource_file->FindResourceDescription(mission->GetExistanceMapID()); + + if (resource_description) + { + Check(resource_description); + resource_description->Lock(); + + InterestZone *zone = + GetInterestZone(interestArena->GetInterestZoneID()); + Check(zone); + BoundingBoxTree* tree = zone->GetExistanceRoot(); + Check(tree); + ExtentBox* zones = (ExtentBox*)resource_description->resourceAddress; + int size = resource_description->resourceSize / sizeof(ExtentBox); + while (size--) + { + BoundingBox *box; + box = new BoundingBox(*zones); + Register_Object(box); + tree->Add(box, *box); + ++zones; + } + resource_description->Unlock(); + } + resource_file->ReleaseUnlockedResources(); +} + +// +//############################################################################# +// LoadMapStream +//############################################################################# +// +void + InterestManager::LoadMapStream( + MemoryStream *map_stream, + const Origin &root, + EntityID &last_entity_id, + int &landmark_id + ) +{ + Check(this); + Check(map_stream); + + // + //-------------------------------------------------------------------------- + // Read the map stream and post creation messages + //-------------------------------------------------------------------------- + // + int map_count; + *map_stream >> map_count; + + for (int i=0; iGetPointer()); + Check(message); + + // + //----------------------------------------------------------- + // If this is an include message, recurse into a new map load + //----------------------------------------------------------- + // + if (message->messageFlags & Entity::MakeMessage::MapStreamMarkerFlag) + { + if (message->messageID == Entity::MakeMessageID) + { + Verify(message->messageLength == sizeof(Entity::MakeMapMessage)); + + Entity::MakeMapMessage *map_message = + Cast_Object(Entity::MakeMapMessage*, message); + Check(map_message); + + // + // + //----------------------------- + // Get the resource description + //----------------------------- + // + Check(application); + ResourceFile *resource_file = application->GetResourceFile(); + Check(resource_file); + ResourceDescription *resource_description = + resource_file->FindResourceDescription( + map_message->resourceID + ); + Check(resource_description); + resource_description->Lock(); + + // + //-------------------------------------------------- + // Figure out the origin to use for this map include + // HACK - map rotation is not supported + //-------------------------------------------------- + // + Origin local = map_message->localOrigin; + local.linearPosition += root.linearPosition; + + // + //------------------------------- + // Create the map stream and load + //------------------------------- + // + MemoryStream + map_stream( + resource_description->resourceAddress, + resource_description->resourceSize + ); + Check(&map_stream); + LoadMapStream(&map_stream, local, last_entity_id, landmark_id); + resource_description->Unlock(); + } + else + { + Fail("Unknown message marker in map stream!\n"); + } + map_stream->AdvancePointer((message->messageLength+3)&~3); + continue; + } + + // + //------------------- + // Verify the message + //------------------- + // + #if DEBUG_LEVEL>0 + // + //---------------------------------------------------------- + // These classes should be stored in the map as map entities + //---------------------------------------------------------- + // + switch (message->classToCreate) + { + case DropZoneClassID: + case ScoreZoneClassID: + case DoorFrameClassID: + case CulturalIconClassID: + case LandmarkClassID: + if ((message->instanceFlags & Entity::MapFlag) == 0) + { + Fail("InterestManager::LoadMapStream - MapFlag disabled"); + } + break; + default: + break; + } + #endif + + // + //--------------------------------------------------------------------- + // If the message id is for a map entity, only make the thing if we are + // supposed to + //--------------------------------------------------------------------- + // + Logical post_make_message = True; + if (Entity::EntityFlagsIsMap(message->instanceFlags)) + { + Check(application); + HostManager *host_manager = application->GetHostManager(); + Check(host_manager); + + if ( + host_manager->GetLocalHostID() != + host_manager->IdentifyNewMapEntityHost(message->entityID) + ) + { + post_make_message = False; + } + } + + // + //----------------------------------------------------- + // Make a MakeEntityMessage and post it to the registry + //----------------------------------------------------- + // + if (post_make_message) + { + // + //-------------------------------------------------------------- + // Make a copy of the message for modification by the map origin + // HACK - map rotation is not supported + //-------------------------------------------------------------- + // + Entity::MakeMessage *local_msg = + (Entity::MakeMessage*)new char[message->messageLength]; + Register_Pointer(local_msg); + Mem_Copy( + local_msg, + message, + message->messageLength, + message->messageLength + ); + local_msg->localOrigin.linearPosition += root.linearPosition; + + // + //--------------------------------------------------- + // If this is a landmark, assign the next landmark ID + //--------------------------------------------------- + // + if (local_msg->classToCreate == LandmarkClassID) + { + Landmark::MakeMessage *land_msg = + (Landmark::MakeMessage*)local_msg; + land_msg->landmarkID = landmark_id++; + } + + // + //-------------------------------------------------------- + // If this is not a dynamic object, assign it an entity ID + //-------------------------------------------------------- + // + if (!(local_msg->instanceFlags & Entity::DynamicFlag)) + { + last_entity_id += 1; + local_msg->entityID = last_entity_id; + } + + Registry::MakeEntityMessage + *make_entity_message = + Registry::MakeEntityMessage::Make(local_msg); + Register_Object(make_entity_message); + + Check(application); + // ECH 1/28/96 - application->PostCreationEvent(make_entity_message); + PostCreationEvent(make_entity_message); + #if 0 + Tell( + "InterestManager::LoadMapStream - Posted creation event: " << + "class=" << message->classToCreate << "; " << + "entityID=" << message->entityID << "\n" + ); + #endif + + Unregister_Object(make_entity_message); + delete make_entity_message; + Unregister_Pointer(local_msg); + delete (char*)local_msg; + } + + // + //----------------------------------------------------------------------- + // Advance to the next message + //----------------------------------------------------------------------- + // + map_stream->AdvancePointer((message->messageLength+3)&~3); + } + Check_Fpu(); +} + +// +//############################################################################# +// Shutdown +//############################################################################# +// +void + InterestManager::Shutdown() +{ + Check(this); + + #if 0 // HACK - Partial Implementation + // + //-------------------------------------------------------------------------- + // Delete interest zones + //-------------------------------------------------------------------------- + // + #else + // + // Delete the one interest arena + // + if (interestArena) + { + Unregister_Object(interestArena); + delete interestArena; + interestArena = NULL; + } + #endif +} + +// +//############################################################################# +// Execute +//############################################################################# +// +void + InterestManager::Execute() +{ + #if 0 + // + // If (the changed origin list is empty) + // + // + // return + // + + // + // Update the net interest arena with the changes from the + // changed interest origin list + // + + // + // Calculate which interest zones should be released and which + // interest zones should be loaded + // + + // + // For (the interest zones which should be released) + // + // + // For (the static entities in the interest zones to be released) + // + // + // Send a becoming uninteresting event to the entity + // + + // + // For (the dynamic master entities in the interest zones to be released) + // + // + // Send a becoming uninteresting event to the entity + // + + // + // For (the dynamic map entities in the interest zones to be released) + // + // + // Send a becoming uninteresting event to the entity + // + + // + // For (the replicants in the interest zones to be released) + // + // + // Unsubscribe the replicants from changes + // + + // + // Send a becoming uninteresting event to the entity + // + + // + // Call the resource manager releasing the interest zone + // + + // + // For (the interest zones which should be loaded) + // + // + // Call the resource manager, requesting the interest zones + // + + // + // Broadcast the interest arena change + // + { + HostInterestArenaChangedMessage message; + + // + // Send at the end of the current frame + // + Check(application); + application->BroadcastEvent( + DefaultEventPriority, + InterestManagerID, + &message + ); + } + #endif +} + +// +//############################################################################# +// AdoptInterestOrigin +//############################################################################# +// +void + InterestManager::AdoptInterestOrigin(InterestOrigin *interest_origin) +{ + Check(this); + Check(interest_origin); + + // + //-------------------------------------------------------------------------- + // Add the interest origin to managers socket + //-------------------------------------------------------------------------- + // + Check(&interestOriginSocket); + interestOriginSocket.Add(interest_origin); + + #if 0 // HACK - Partial Implementation + // + //-------------------------------------------------------------------------- + // Add to net interest arena... + //-------------------------------------------------------------------------- + // + #else + // + //-------------------------------------------------------------------------- + // HACK - add interesting entities to the interest origin manually + //-------------------------------------------------------------------------- + // + interest_origin->Update(interest_origin->GetInterestZoneID()); + AddInterestingEntitiesToInterestOrigin(interest_origin); + #endif +} + +// +//############################################################################# +// OrphanInterestOrigin +//############################################################################# +// +void + InterestManager::OrphanInterestOrigin(InterestOrigin *interest_origin) +{ + Check(this); + Check(interest_origin); + + #if 0 // HACK - Partial Implementation + // + //-------------------------------------------------------------------------- + // Remove from net interest arena + //-------------------------------------------------------------------------- + // + #else + // + //-------------------------------------------------------------------------- + // HACK - remove interesting entities manually + //-------------------------------------------------------------------------- + // + RemoveUninterestingEntitiesFromInterestOrigin(interest_origin); + #endif +} + +// +//############################################################################# +// NotifyOfEntityCreation +//############################################################################# +// +void + InterestManager::NotifyOfEntityCreation( + Entity *entity, + Entity::MakeMessage *creation_message + ) +{ + Check(this); + Check(entity); + Check(creation_message); + + #if 0 + Tell( + "InterestManager::NotifyOfEntityCreation - " << + "class=" << entity->GetClassID() << "; " << + "entityID=" << entity->GetEntityID() << "\n" + ); + #endif + + // + //-------------------------------------------------------------------------- + // Call appropriate service routine + //-------------------------------------------------------------------------- + // + switch (entity->GetInstance()) + { + case Entity::IndependantInstance: + { + Check(application); + Check(application->GetHostManager()); + if ( + entity->GetOwnerID() == + application->GetHostManager()->GetLocalHostID() + ) + { + DynamicEntityCreation(entity, creation_message); + } + else + { + ReplicantEntityCreation(entity, creation_message); + } + } + break; + + case Entity::MasterInstance: + DynamicEntityCreation(entity, creation_message); + break; + + case Entity::HermitInstance: + if (entity->IsDynamic()) + { + DynamicEntityCreation(entity, creation_message); + } + else + { + StaticEntityCreation(entity, creation_message); + } + break; + + case Entity::ReplicantInstance: + ReplicantEntityCreation(entity, creation_message); + break; + + default: + Fail("InterestManager::NotifyOfEntityCreation - should never reach here"); + break; + } +} + +// +//############################################################################# +// StaticEntityCreation +//############################################################################# +// +void + InterestManager::StaticEntityCreation( + #if DEBUG_LEVEL>0 + Entity *entity, + Entity::MakeMessage *creation_message + #else + Entity *entity, + Entity::MakeMessage * + #endif + ) +{ + Check(this); + Check(entity); + Check(creation_message); + + // + //-------------------------------------------------------------------------- + // Verify entityID, instance, and flags + //-------------------------------------------------------------------------- + // + Verify(entity->GetEntityID() != EntityID::Null); + Verify( + entity->GetInstance() == Entity::MasterInstance || + entity->GetInstance() == Entity::HermitInstance + ); + // Verify(entity->IsStatic()); // HACK - Partial Implementation + // Verify(!entity->IsMap()); // HACK - Partial Implementation allows map entities + + #if 0 // HACK - Partial implementation + // + //-------------------------------------------------------------------------- + // The interest zone of the static entity should already be calculated + // correctly + //-------------------------------------------------------------------------- + // + #else + // + //-------------------------------------------------------------------------- + // Find the interest zone for the static entity and set the interest zone + //-------------------------------------------------------------------------- + // + InterestZoneID interest_zone_ID; + + interest_zone_ID = + interestLatticeManager.SearchForEntityInterestZone( + (InterestZoneID)0, + entity->GetEntityID() + ); + entity->SetInterestZoneID(interest_zone_ID); + #endif + + #if 0 // HACK - Partial implementation + // + //-------------------------------------------------------------------------- + // If within any existing interest arenas, then add to the interest origin + //-------------------------------------------------------------------------- + // + #else + // + //-------------------------------------------------------------------------- + // HACK - Manually add to all interest origins + //-------------------------------------------------------------------------- + // + AddInterestingEntityToInterestOrigins(entity); + #endif +} + +// +//############################################################################# +// DynamicEntityCreation +//############################################################################# +// +void + InterestManager::DynamicEntityCreation( + Entity *entity, + Entity::MakeMessage *creation_message + ) +{ + Check(this); + Check(entity); + Check(creation_message); + + // + //-------------------------------------------------------------------------- + // Verify entityID, instance, and flags + //-------------------------------------------------------------------------- + // + #if DEBUG_LEVEL>0 + Verify(entity->GetEntityID() != EntityID::Null); + Verify( + entity->GetInstance() == Entity::MasterInstance || + entity->GetInstance() == Entity::IndependantInstance || + entity->GetInstance() == Entity::HermitInstance + ); + // Verify(entity->IsDynamic()); // HACK - Partial Implementation + // Verify(!entity->IsMap()); // HACK - Partial Implementation allows map entities + if (entity->GetInstance() == Entity::IndependantInstance) + { + Check(application); + Check(application->GetHostManager()); + Verify( + entity->GetOwnerID() == + application->GetHostManager()->GetLocalHostID() + ); + } + #endif + + #if 0 // HACK - Partial implementation + // + //-------------------------------------------------------------------------- + // Set the interest zone id of the entity. Use the spatializer to locate + // the interest zone that the entity is located in + //-------------------------------------------------------------------------- + // + #else + // + //-------------------------------------------------------------------------- + // Find the interest zone for the static entity and set the interest zone + //-------------------------------------------------------------------------- + // + InterestZoneID interest_zone_ID; + + interest_zone_ID = + interestLatticeManager.SearchForEntityInterestZone( + (InterestZoneID)0, + entity->GetEntityID() + ); + entity->SetInterestZoneID(interest_zone_ID); + #endif + + // + //-------------------------------------------------------------------------- + // Send new dynamic entity message + //-------------------------------------------------------------------------- + // + + // + // Setup and verify network fields in creation message + // + entity->SetupNetworkMessage(creation_message); + #if DEBUG_LEVEL>0 + Check(&creation_message->entityID); + Verify(creation_message->entityID != EntityID::Null); + Verify(creation_message->interestZoneID != NullInterestZoneID); + Check(application); + Check(application->GetHostManager()); + Verify( + creation_message->ownerID == + application->GetHostManager()->GetLocalHostID() + ); + #endif + + // + // HACK - Spoof the make entity message into a NewDynamicEntityMessageID + // for the purposes of sending to interest managers + // + Verify(creation_message->messageID == Entity::MakeMessageID); + creation_message->messageID = NewDynamicEntityMessageID; + + // + //-------------------------------------------------------------------------- + // If the entity is replicated + //-------------------------------------------------------------------------- + // + if ( + entity->GetInstance() == Entity::MasterInstance || + entity->GetInstance() == Entity::IndependantInstance + ) + { + // + // Broadcast the message + // + Check(application); + application->BroadcastMessage(InterestManagerClientID, creation_message); + } + + // + //-------------------------------------------------------------------------- + // Else (the entity is not replicated) + //-------------------------------------------------------------------------- + // + else + { + Verify(entity->GetInstance() == Entity::HermitInstance); + + // + // Post the message to ourselves + // + Check(application); + // ECH 1/28/96 - application->Post(DefaultEventPriority, this, creation_message); + Dispatch(creation_message); + } +} + +// +//############################################################################# +// NewDynamicEntityHandler +//############################################################################# +// +void + InterestManager::NewDynamicEntityHandler( + NewDynamicEntityMessage *creation_message + ) +{ + Check(this); + Check(creation_message); + + // + // Verify the creation message + // + Check(&creation_message->entityID); + Verify(creation_message->entityID != EntityID::Null); + Verify(creation_message->interestZoneID != NullInterestZoneID); + Verify(creation_message->ownerID >= FirstLegalHostID); + + #if 0 // HACK - Partial implementation + // + //-------------------------------------------------------------------------- + // If (the new entity is not in any of the interest arenas) + //-------------------------------------------------------------------------- + // + // + // return + // + #endif + + // + //-------------------------------------------------------------------------- + // Get the local host id + //-------------------------------------------------------------------------- + // + HostID local_host_ID; + + Check(application); + Check(application->GetHostManager()); + local_host_ID = application->GetHostManager()->GetLocalHostID(); + + // + //-------------------------------------------------------------------------- + // If (this host is not the owner host) + //-------------------------------------------------------------------------- + // + if (local_host_ID != creation_message->ownerID) + { + // + //----------------------------------------------------------------------- + // Make the replicant + //----------------------------------------------------------------------- + // + + // + // HACK - Message was spoofed as NewDynamicEntityMessageID, now + // turn back to make entity message ID + // + Verify(creation_message->messageID == NewDynamicEntityMessageID); + creation_message->messageID = Entity::MakeMessageID; + + // + // Turn on the replicant flag if this is a master instance, + // otherwise, the instance should be an independant + // + if ( + Entity::EntityFlagsGetInstance(creation_message->instanceFlags) == + Entity::MasterInstance + ) + { + creation_message->instanceFlags = Entity::EntityFlagsSetInstance( + creation_message->instanceFlags, + Entity::ReplicantInstance + ); + } + else + { + Verify( + Entity::EntityFlagsGetInstance(creation_message->instanceFlags) == + Entity::IndependantInstance + ); + } + + // + //----------------------------------------------------------------------- + // Make a MakeEntityMessage and post it to the registry + //----------------------------------------------------------------------- + // + Registry::MakeEntityMessage *make_entity_message; + + make_entity_message = Registry::MakeEntityMessage::Make(creation_message); + Register_Object(make_entity_message); + + Check(application); + // + // Implicit assumption that this will be a higher + // priority and/or earlier sequence than any update message + // + Check(application->GetRegistry()); + application->GetRegistry()->Dispatch(make_entity_message); + + Unregister_Object(make_entity_message); + delete make_entity_message; + } + + // + //-------------------------------------------------------------------------- + // If (this host is the owner host) + //-------------------------------------------------------------------------- + // + else + { + // + //----------------------------------------------------------------------- + // Get the entity pointer + //----------------------------------------------------------------------- + // + Entity *entity; + + Check(application); + Check(application->GetHostManager()); + entity = application->GetHostManager()->GetEntityPointer( + creation_message->entityID + ); + Check(entity); + + // + //----------------------------------------------------------------------- + // Tell the master that it is interesting + // Should this wait until next interest frame? + //----------------------------------------------------------------------- + // + entity->BecomeInteresting(); + + // + //----------------------------------------------------------------------- + // HACK - Manually add to all interest origins + //----------------------------------------------------------------------- + // + AddInterestingEntityToInterestOrigins(entity); + } +} + +#if 0 // HACK - Partial Implementation +// +//############################################################################# +// NotifyOfMapEntityCreation +//############################################################################# +// +void + InterestManager::NotifyOfMapEntityCreation( + Entity *entity, + Entity::MakeMessage *creation_message, + Time + ) +{ + Check(this); + Check(entity); + Check(creation_message); + Verify(creation_message->entityID != EntityID::Null); + Verify(creation_message->interestZoneID != NullInterestZoneID); + + // + // Verify instance type, and interest characterisitics + // + Verify(entity->GetInstance() == Entity::MasterInstance); + Verify(entity->IsDynamic()); + Verify(entity->IsMap()); + + #if 0 + // + // Call the resource manager, storing the interest zone delta + // + + // + // Broadcast the interest zone delta + // + { + InterestZoneDeltaMessage message; + + Check(application); + application->SendMessage( + DefaultEventPriority, + InterestManagerID, + &message + ); + } + + // + // Broadcast the new map entity message + // + { + Verify(creation_message->messageID == Entity::MakeMessageID); + creation_message->messageID = NewMapEntityMessageID; + + Check(application); + application->SendMessage( + DefaultEventPriority, + InterestManagerID, + creation_message + ); + } + #else + Fail("InterestManager::NotifyOfMapEntityCreation - under construction"); + #endif +} +#endif + +#if 0 // HACK - Partial Implementation +// +//############################################################################# +// NewMapEntityHandler +//############################################################################# +// +void + InterestManager::NewMapEntityHandler( + NewMapEntityMessage *message + ) +{ + Check(this); + Check(message); + + #if 0 + // + // If (the entity is outside of the interest arena) + // + // + // Return + // + + // + // If (this is the owner host) + // + // + // Tell the entity that it is interesting + // + + // + // If (this host is not the owner host) + // + // + // Find the replicant or local master entity + // + + // + // If (the entity does not exist) + // + // + // Make the replicant + // + + // + // Tell the replicant that it is interesting + // + + // + // Subscribe the replicant to updates from the master + // + + // + // If (the entity does exist) + // + // + // If (the entity is a replicant) + // + // + // Point it at the new owner + // + + // + // If (the entity is a master) + // + // + // If (creation time of new master > creation time of local master) + // + // + // Morph the local master into a replicant pointing at new master + // + + // + // Tell the replicant that it is interesting + // + + // + // Subscribe the replicant to updates from the master + // + #else + Fail("InterestManager::NewMapEntityHandler - under construction"); + #endif +} +#endif + +// +//############################################################################# +// ReplicantEntityCreation +//############################################################################# +// +void + InterestManager::ReplicantEntityCreation( + #if DEBUG_LEVEL>0 + Entity *entity, + Entity::MakeMessage *creation_message + #else + Entity *entity, + Entity::MakeMessage * + #endif + ) +{ + Check(this); + Check(entity); + Check(creation_message); + + // + //-------------------------------------------------------------------------- + // Verify entityID, instance, and flags + //-------------------------------------------------------------------------- + // + #if DEBUG_LEVEL>0 + Verify(entity->GetEntityID() != EntityID::Null); + Verify( + entity->GetInstance() == Entity::ReplicantInstance || + entity->GetInstance() == Entity::IndependantInstance + ); + // Verify(entity->IsDynamic()); // HACK - Partial Implementation + // Verify(!entity->IsMap()); // HACK - Partial Implementation allows map entities + if (entity->GetInstance() == Entity::IndependantInstance) + { + Check(application); + Check(application->GetHostManager()); + Verify( + entity->GetOwnerID() != + application->GetHostManager()->GetLocalHostID() + ); + } + #endif + + #if 0 // HACK - Partial implementation + // + //-------------------------------------------------------------------------- + // The interest zone of the static entity should already be calculated + // correctly + //-------------------------------------------------------------------------- + // + #endif + + // + //-------------------------------------------------------------------------- + // Get the local host id + //-------------------------------------------------------------------------- + // + HostID local_host_ID; + + Check(application); + Check(application->GetHostManager()); + local_host_ID = application->GetHostManager()->GetLocalHostID(); + + // + //-------------------------------------------------------------------------- + // Subscribe the replicant to updates from the master + //-------------------------------------------------------------------------- + // + EntitySubscribeToUpdates( + entity->GetEntityID(), + entity->GetOwnerID(), + local_host_ID + ); + + // + //-------------------------------------------------------------------------- + // Tell the replicant that it is interesting + //-------------------------------------------------------------------------- + // + entity->BecomeInteresting(); + + // + //-------------------------------------------------------------------------- + // HACK - Manually add to all interest origins + //-------------------------------------------------------------------------- + // + AddInterestingEntityToInterestOrigins(entity); +} + +// +//############################################################################# +// NotifyOfEntityDestruction +//############################################################################# +// +void + InterestManager::NotifyOfEntityDestruction(Entity *entity) +{ + Check(this); + Check(entity); + + #if 0 // HACK - Partial implementation + // + //-------------------------------------------------------------------------- + // If (this is a map entity) + //-------------------------------------------------------------------------- + // + // + // Store an interest zone delta with the owner set to MapHostID + // + + // + // Broadcast an interest zone delta + // + #endif + + // + //-------------------------------------------------------------------------- + // HACK - Manually remove from all interest origins + //-------------------------------------------------------------------------- + // + RemoveUninterestingEntityFromInterestOrigins(entity); + + // + //-------------------------------------------------------------------------- + // Broadcast delete entity message for master entities that have replicants + //-------------------------------------------------------------------------- + // + if ( + entity->GetInstance() == Entity::MasterInstance // && // HACK - Partial Implementation + // entity->IsDynamic() // HACK - Partial Implementation + ) + { + // + // Create destruction message + // + DestroyDynamicEntityMessage + destroy_message( + DestroyDynamicEntityMessageID, + sizeof(DestroyDynamicEntityMessage) + ); + Check(&destroy_message); + + // + // Setup and verify network fields in destruction message + // + entity->SetupNetworkMessage(&destroy_message); + #if DEBUG_LEVEL>0 + Check(&destroy_message.entityID); + Verify(destroy_message.entityID == entity->entityID); + Verify(destroy_message.interestZoneID == entity->interestZoneID); + Check(application); + Check(application->GetHostManager()); + Verify( + destroy_message.ownerID == + application->GetHostManager()->GetLocalHostID() + ); + #endif + + // + // Broadcast destruction message + // + Check(application); + application->ExclusiveBroadcastMessage( + InterestManagerClientID, + &destroy_message + ); + } +} + +// +//############################################################################# +// DestroyDynamicEntityHandler +//############################################################################# +// +void + InterestManager::DestroyDynamicEntityHandler( + DestroyDynamicEntityMessage *destroy_message + ) +{ + Check(this); + Check(destroy_message); + + // + // Verify destruction message + // + Check(&destroy_message->entityID); + Verify(destroy_message->entityID != EntityID::Null); + Verify(destroy_message->interestZoneID != NullInterestZoneID); + Verify(destroy_message->ownerID >= FirstLegalHostID); + + #if 0 // HACK - Partial implementation + // + //-------------------------------------------------------------------------- + // If entity is not within interest zone + //-------------------------------------------------------------------------- + // + // + // return + // + #endif + + // + //-------------------------------------------------------------------------- + // Verify the local host id + //-------------------------------------------------------------------------- + // + #if DEBUG_LEVEL>0 + HostID local_host_ID; + + Check(application); + Check(application->GetHostManager()); + local_host_ID = application->GetHostManager()->GetLocalHostID(); + Verify(destroy_message->ownerID != local_host_ID); + #endif + + // + //-------------------------------------------------------------------------- + // Find the replicant to destroy + //-------------------------------------------------------------------------- + // + Entity *replicant; + + Check(application); + Check(application->GetHostManager()); + replicant = application->GetHostManager()->GetEntityPointer( + destroy_message->entityID + ); + + // + //-------------------------------------------------------------------------- + // If (the replicant exists) + //-------------------------------------------------------------------------- + // + if (replicant != NULL) + { + Check(replicant); + Verify(replicant->GetInstance() == Entity::ReplicantInstance); + + // + // HACK - Message was spoofed as DestroyDynamicEntityMessage, now + // turn back to DestroyEntityMessage + // + Verify(destroy_message->messageID == DestroyDynamicEntityMessageID); + destroy_message->messageID = Entity::DestroyEntityMessageID; + + Check(application); + // ECH 1/28/96 - application->Post(DefaultEventPriority, replicant, destroy_message); + PostDestructionEvent(replicant, destroy_message); + } +} + +// +//############################################################################# +// EntityUpdateInterestZone +//############################################################################# +// +void + InterestManager::EntityUpdateInterestZone( +#if DEBUG_LEVEL>0 + Entity *entity +#else + Entity * +#endif + ) +{ + Check(this); + Check(entity); + Verify(entity->IsDynamic()); + + #if 0 // HACK - Partial implementation + // + //-------------------------------------------------------------------- + // Update the interest zone id if the entity is not trapped + //-------------------------------------------------------------------- + // + if (entity->IsTrapped()) + return; + + // + //-------------------------------------------------------------------- + // Find the entities new interest zone + //-------------------------------------------------------------------- + // + InterestZoneID + old_interest_zone_ID, + new_interest_zone_ID; + + old_interest_zone_ID = entity->GetInterestZoneID(); + new_interest_zone_ID = + interestLatticeManager.SearchForEntityInterestZone( + old_interest_zone_ID, + entity->GetEntityID() + ); + + // + //-------------------------------------------------------------------- + // If the interest zone has changed, then update the entity + // and broadcast the change + //-------------------------------------------------------------------- + // + if (old_interest_zone_ID != new_interest_zone_ID) + { + entity->SetInterestZoneID(new_interest_zone_ID); + + // + // HACK - a way is needed to get from the entity the information + // required for another host to create the replicant + // + EntityNewInterestZoneMessage + message(entity->GetEntityID(),new_interest_zone_ID); + + // + // This message should be handled locally before the end of + // the current render frame? + // + #if 0 + Check(application); + application->SendEvent( + DefaultEventPriority, + InterestManagerID, + &message + ); + #else + Check(application); + application->BroadcastMessage( + InterestManagerClientID, + &message + ); + #endif + } + #endif +} + +// +//############################################################################# +// EntityNewInterestZoneHandler +//############################################################################# +// +void + InterestManager::EntityNewInterestZoneHandler( + EntityNewInterestZoneMessage* + ) +{ + #if 0 + // + // If (the master entity is on this host) + // + // + // Determine if the entity is interesting given its new + // interest zone + // + + // + // If (the entity was and still is interesting) + // then (do nothing) + // + + // + // If (the entity was not interesting and still is not interesting) + // then (do nothing) + // + + // + // If (the entity was interesting and now is not interesting) + // + // + // Send BecomeUninteresting message to the entity + // + + // + // If (the entity was not interesting and now is interesting) + // + // + // Send BecomeInteresting message to the entity + // + + // + // If (the master entity is not on this host) + // + // + // Determine if the entity is interesting given its new + // interest zone + // + + // + // If (the entity was and still is interesting) + // then (do nothing) + // + + // + // If (the entity was not interesting and still is not interesting) + // then (do nothing) + // + + // + // If (the entity was interesting and now is not interesting) + // + // + // Unsubscribe the replicant entity from updates + // + + // + // Send BecomeUninteresting message to the entity + // + + // + // If (the entity was not interesting and now is interesting) + // + // + // If (the replicant does not exist) + // + // + // Create the replicant + // + + // + // Send BecomeInteresting message to the entity + // + + // + // Subscribe the replicant to updates + // + #else + Fail("InterestManager::EntityNewInterestZoneHandler - under construction"); + #endif +} + +// +//############################################################################# +// LoadResourceFinishedHandler +//############################################################################# +// +void + InterestManager::LoadResourceFinishedHandler(Receiver::Message*) +{ + #if 0 + // + // If (an interest origin request for interest zone finished) + // + // + // For (the static entities in the interest zone) + // + // + // If (the static entity does not exist) + // + // + // Make the static entity + // + + // + // For (the map entities in the interest zone) + // + // + // If (the owner of the map entity is MapHostID) + // + // + // This entity has not been created by any other hosts, + // so create it with this host as owner + // + + // + // Need to somehow put in a small random delay for map + // entity creation resolution between two hosts? + // + + // + // Make the map entity + // + #if 0 + { + Entity entity_ID; // From the interest zone + ClassID class_ID; // From the interest zone + HostID owner_ID; // From this host + + application->registry->MakeEntity(entity_ID, class_ID); + } + #endif + #else + Fail("InterestManager::LoadResourceFinishedHandler - under construction"); + #endif +} + +// +//############################################################################# +// EntitySubscribeToUpdates +//############################################################################# +// +void + InterestManager::EntitySubscribeToUpdates( + EntityID, + HostID, + HostID + ) +{ + // HACK - Partial implementation +} + +// +//############################################################################# +// EntitySubscribeToUpdatesHandler +//############################################################################# +// +void + InterestManager::EntitySubscribeToUpdatesHandler( + EntitySubscribeToUpdatesMessage* + ) +{ + // HACK - Partial implementation +} + +// +//############################################################################# +// EntityUpdateReplicants +//############################################################################# +// +void + InterestManager::EntityUpdateReplicants( + Entity *entity, + Entity::UpdateMessage *update_message + ) +{ + Check(this); + Check(entity); + Check(update_message); + + // + //-------------------------------------------------------------------------- + // Verify entityID, instance, and flags + //-------------------------------------------------------------------------- + // + Verify(entity->GetEntityID() != EntityID::Null); + Verify(entity->GetInstance() == Entity::MasterInstance); + Verify(entity->IsDynamic()); + // Verify(!entity->IsMap()); // HACK - Partial Implementation allows map entities + + #if 0 // HACK - Partial implementation + // + //-------------------------------------------------------------------------- + // If (no replicants are subscribed to this entity) + //-------------------------------------------------------------------------- + // + // + // return + // + #endif + + #if 0 // HACK - Partial implementation + // + //-------------------------------------------------------------------------- + // Send it to the subscribed replicants + // + // LAN Solution: + // If (subscriber list is not empty) + // Broadcast the update + // + // WAN Solution: + // If (subscriber list is not empty) + // Send the update via point-to-point messages + // + // A way is needed to get from the entity the information + // required for another host to create the replicant + //-------------------------------------------------------------------------- + // + #else + // + // Setup and verify network fields in message + // + entity->SetupNetworkMessage(update_message); + #if DEBUG_LEVEL>0 + Check(&update_message->entityID); + Verify(update_message->entityID != EntityID::Null); + Verify(update_message->interestZoneID != NullInterestZoneID); + Check(application); + Check(application->GetHostManager()); + Verify( + update_message->ownerID == + application->GetHostManager()->GetLocalHostID() + ); + #endif + + // + // HACK - Spoof the update message into EntityUpdateReplicantsMessageID + // + Verify(update_message->messageID == Entity::UpdateMessageID); + update_message->messageID = EntityUpdateReplicantsMessageID; + + // + // Broadcast update message + // + Check(application); + application->ExclusiveBroadcastMessage( + InterestManagerClientID, + update_message + ); + #endif +} + +// +//############################################################################# +// EntityUpdateReplicantsHandler +//############################################################################# +// +void + InterestManager::EntityUpdateReplicantsHandler( + EntityUpdateReplicantsMessage *update_message + ) +{ + Check(this); + Check(update_message); + + // + // Verify update message + // + Check(&update_message->entityID); + Verify(update_message->entityID != EntityID::Null); + Verify(update_message->interestZoneID != NullInterestZoneID); + Verify(update_message->ownerID >= FirstLegalHostID); + + #if 0 // HACK - Partial implementation + // + //-------------------------------------------------------------------------- + // If (interest zone id is outside of our interest arenas) + //-------------------------------------------------------------------------- + // + // + // return + // + #endif + + // + //-------------------------------------------------------------------------- + // Verify the local host id + //-------------------------------------------------------------------------- + // + #if DEBUG_LEVEL>0 + HostID local_host_ID; + + Check(application); + Check(application->GetHostManager()); + local_host_ID = application->GetHostManager()->GetLocalHostID(); + Verify(update_message->ownerID != local_host_ID); + #endif + + // + //-------------------------------------------------------------------------- + // Find the replicant to update + //-------------------------------------------------------------------------- + // + Entity *replicant; + + Check(application); + Check(application->GetHostManager()); + replicant = application->GetHostManager()->GetEntityPointer( + update_message->entityID + ); + + // + //-------------------------------------------------------------------------- + // If (the replicant exists) + //-------------------------------------------------------------------------- + // + if (replicant) + { + // + // Update the replicant + // + Check(replicant); + Verify(replicant->GetInstance() == Entity::ReplicantInstance); + Verify(replicant->IsDynamic()); + + // + // HACK - Message was spoofed as EntityUpdateReplicantsMessageID, now + // turn back to update entity message ID + // + Verify(update_message->messageID == EntityUpdateReplicantsMessageID); + update_message->messageID = Entity::UpdateMessageID; + + Check(application); + // ECH 1/28/96 - application->Post(DefaultEventPriority, replicant, update_message); + PostUpdateEvent(replicant, update_message); + } + + #if 0 // HACK - Partial implementation + // + //-------------------------------------------------------------------------- + // If (the replicant does not exist) + //-------------------------------------------------------------------------- + // + // + // Create the replicant + // + + // + // Send BecomeInteresting message to the entity + // + + // + // Subscribe the replicant to updates + // + #endif +} + +// +//############################################################################# +// EntityBroadcastToReplicants +//############################################################################# +// +void + InterestManager::EntityBroadcastToReplicants( + Entity *entity, + Entity::Message *broadcast_message + ) +{ + Check(this); + Check(entity); + Check(broadcast_message); + + // + //-------------------------------------------------------------------------- + // Verify entityID, instance, and flags + //-------------------------------------------------------------------------- + // + Verify(entity->GetEntityID() != EntityID::Null); + Verify(entity->GetInstance() == Entity::MasterInstance); + // Verify(entity->IsDynamic()); // HACK - Partial Implementation + // Verify(!entity->IsMap()); // HACK - Partial Implementation allows map entities + + #if 0 // HACK - Partial implementation + // + //-------------------------------------------------------------------------- + // If (no replicants are subscribed to this entity) + //-------------------------------------------------------------------------- + // + // + // return + // + #endif + + #if 0 // HACK - Partial implementation + // + //-------------------------------------------------------------------------- + // Send it to the subscribed replicants + // + // LAN Solution: + // If (subscriber list is not empty) + // Broadcast the update + // + // WAN Solution: + // If (subscriber list is not empty) + // Send the update via point-to-point messages + // + // A way is needed to get from the entity the information + // required for another host to create the replicant + // + //-------------------------------------------------------------------------- + // + #else + // + //-------------------------------------------------------------------------- + // Setup and verify network fields in message + //-------------------------------------------------------------------------- + // + entity->SetupNetworkMessage(broadcast_message); + #if DEBUG_LEVEL>0 + Check(&broadcast_message->entityID); + Verify(broadcast_message->entityID != EntityID::Null); + Verify(broadcast_message->interestZoneID != NullInterestZoneID); + Check(application); + Check(application->GetHostManager()); + Verify( + broadcast_message->ownerID == + application->GetHostManager()->GetLocalHostID() + ); + #endif + + // + //-------------------------------------------------------------------------- + // Build the interest manager message + //-------------------------------------------------------------------------- + // + MemoryStream + memory_stream(messageBuildBuffer, INTERESTMANAGER_MESSAGE_BUFFER_SIZE); + EntityBroadcastToReplicantsMessage + *interest_manager_message; + size_t + total_length; + + total_length = + sizeof (EntityBroadcastToReplicantsMessage) + + broadcast_message->messageLength; + Verify(total_length < memory_stream.GetBytesRemaining()); + + Check_Pointer(memory_stream.GetPointer()); + interest_manager_message = + new (memory_stream.GetPointer()) EntityBroadcastToReplicantsMessage( + total_length + ); + Check(interest_manager_message); + + memory_stream.AdvancePointer(sizeof(EntityBroadcastToReplicantsMessage)); + Mem_Copy( + memory_stream.GetPointer(), + broadcast_message, + broadcast_message->messageLength, + memory_stream.GetBytesRemaining() + ); + + // + //-------------------------------------------------------------------------- + // Broadcast update message + //-------------------------------------------------------------------------- + // + #if 0 + Tell( + "InterestManager::EntityBroadcastToReplicants - Send entity message ID " << + broadcast_message->messageID << "\n" + ); + #endif + + Check(application); + application->ExclusiveBroadcastMessage( + InterestManagerClientID, + interest_manager_message + ); + #endif +} + +// +//############################################################################# +// EntityBroadcastToReplicantsHandler +//############################################################################# +// +void + InterestManager::EntityBroadcastToReplicantsHandler( + EntityBroadcastToReplicantsMessage *interest_manager_message + ) +{ + Check(this); + Check(interest_manager_message); + + #if 0 // HACK - Partial Implementation + // + //-------------------------------------------------------------------------- + // If (interest zone id is outside of our interest arenas) + //-------------------------------------------------------------------------- + // + // + // return + // + #endif + + // + //-------------------------------------------------------------------------- + // Parse broadcast message + //-------------------------------------------------------------------------- + // + MemoryStream + memory_stream( + interest_manager_message, + interest_manager_message->messageLength + ); + Entity::Message *broadcast_message; + + memory_stream.AdvancePointer(sizeof(EntityBroadcastToReplicantsMessage)); + broadcast_message = Cast_Object(Entity::Message*, memory_stream.GetPointer()); + Check(broadcast_message); + + Check(&broadcast_message->entityID); + Verify(broadcast_message->entityID != EntityID::Null); + Verify(broadcast_message->interestZoneID != NullInterestZoneID); + Verify(broadcast_message->ownerID >= FirstLegalHostID); + + #if 0 + Tell( + "InterestManager::EntityBroadcastToReplicantsHandler - Receive entity message ID " << + broadcast_message->messageID << "\n" + ); + #endif + + // + //-------------------------------------------------------------------------- + // Verify the local host id + //-------------------------------------------------------------------------- + // + #if DEBUG_LEVEL>0 + HostID local_host_ID; + + Check(application); + Check(application->GetHostManager()); + local_host_ID = application->GetHostManager()->GetLocalHostID(); + Verify(broadcast_message->ownerID != local_host_ID); + #endif + + // + //-------------------------------------------------------------------------- + // Find the replicant to update + //-------------------------------------------------------------------------- + // + Entity *replicant; + + Check(application); + Check(application->GetHostManager()); + replicant = application->GetHostManager()->GetEntityPointer( + broadcast_message->entityID + ); + + #if 0 + Tell( + "InterestManager::EntityBroadcastToReplicantsHandler - Replicant=" << + (long)replicant << "\n" + ); + #endif + + // + //-------------------------------------------------------------------------- + // If the replicant exists, update it + //-------------------------------------------------------------------------- + // + if (replicant) + { + Check(replicant); + Verify(replicant->GetInstance() == Entity::ReplicantInstance); + + Check(application); + // ECH 1/28/96 - application->Post(DefaultEventPriority, replicant, broadcast_message); + PostUpdateEvent(replicant, broadcast_message); + } + + #if 0 // HACK - Partial implementation + // + //-------------------------------------------------------------------------- + // If (the replicant does not exist) + //-------------------------------------------------------------------------- + // + else + { + // + // Create the replicant + // + + // + // Send BecomeInteresting message to the entity + // + + // + // Subscribe the replicant to updates + // + #if 0 + Tell("Unknown replicant " << broadcast_message->entityID << endl); + #endif + } + #endif +} + +// +//############################################################################# +// HostInterestArenaChangedHandler +//############################################################################# +// +void + InterestManager::HostInterestArenaChangedHandler( + HostInterestArenaChangedMessage* + ) +{ + #if 0 + // + // Get all hosted dynamic entities + // + + // + // For (each entity within the given interest arena) + // + { + // + // HACK - need someway of doing the following point-to-point, + // potentially to ourselves + // + Entity::UpdateMessage + *update_message = NULL; + + Check(update_message); + + Check(application); + application->interestManager.EntityUpdateReplicants( + entity, + update_message + ); + } + #else + Fail("InterestManager::HostInterestArenaChangedHandler - under construction"); + #endif +} + +// +//############################################################################# +// InterestZoneDeltaHandler +//############################################################################# +// +void + InterestManager::InterestZoneDeltaHandler( + InterestZoneDeltaMessage* + ) +{ + #if 0 + // + // If (a delta already exists for this interest zone) + // + // + // Get the timestamp of the existing delta + // + + // + // If (the timestamp of the incoming delta is > then current delta) + // + // + // Store the incoming delta + // + + // + // If (a delta does not exist for this interest zone) + // + // + // Store the incoming data + // + #else + Fail("InterestManager::InterestZoneDeltaHandler - under construction"); + #endif +} + +// +//############################################################################# +//############################################################################# +// +void + InterestManager::AddInterestingEntityToInterestOrigins(Entity *new_entity) +{ + Check(this); + Check(new_entity); + Check(&interestOriginSocket); + + InterestOrigin + *interest_origin; + SChainIteratorOf + iterator(&interestOriginSocket); + + Check(&iterator); + while((interest_origin = iterator.ReadAndNext()) != NULL) + { + Check(interest_origin); + interest_origin->AddInterestingEntity(new_entity); + } +} + +// +//############################################################################# +//############################################################################# +// +void + InterestManager::RemoveUninterestingEntityFromInterestOrigins(Entity *entity) +{ + Check(this); + Check(entity); + Check(&interestOriginSocket); + + InterestOrigin + *interest_origin; + SChainIteratorOf + iterator(&interestOriginSocket); + + Check(&iterator); + while((interest_origin = iterator.ReadAndNext()) != NULL) + { + Check(interest_origin); + interest_origin->RemoveUninterestingEntity(entity); + } +} + +// +//############################################################################# +//############################################################################# +// +void + InterestManager::AddInterestingEntitiesToInterestOrigin( + InterestOrigin *interest_origin + ) +{ + Check(this); + Check(interest_origin); + + // + // Get an iterator for all the entities on this host + // + Check(application); + Check(application->GetHostManager()); + + HostManager::AllEntityIterator + iterator(application->GetHostManager()); + Entity + *entity; + + Check(&iterator); + while((entity = iterator.ReadAndNext()) != NULL) + { + Check(entity); + interest_origin->AddInterestingEntity(entity); + } +} + +// +//############################################################################# +// PostCreationEvent +//############################################################################# +// +void + InterestManager::PostCreationEvent(Receiver::Message *make_entity_message) +{ + Check(this); + Check(make_entity_message); + + Check(application); + + #if 0 // ECH 1/28/96 + EventPriorities priority = + (application->GetApplicationState() != Application::RunningMission) ? + LowEventPriority : + DefaultEventPriority; + #else + EventPriorities priority = + (application->GetApplicationState() != Application::RunningMission) ? + LowEventPriority : + CreationEventPriority; + #endif + + Check(application); + Registry *registry = application->GetRegistry(); + Check(registry); + application->Post(priority, registry, make_entity_message); +} + +// +//############################################################################# +// PostRendererEvent +//############################################################################# +// +void + InterestManager::PostRendererEvent( + Entity *entity, + Renderer *renderer, + Receiver::Message *message + ) +{ + Check(this); + Check(entity); + Check(renderer); + + #if 0 // ECH 1/26/96 + EventPriorities priority = + (applicationState.GetState() != Application::RunningMission) ? + MinEventPriority : + DefaultEventPriority; + #endif + + EventPriorities priority; + + switch (entity->GetInterestPriority(renderer->GetLinkedEntity())) + { + case LowInterestPriority: + priority = + (application->GetApplicationState() != Application::RunningMission) ? + MinEventPriority : + LowInterestEventPriority; + break; + + case HighInterestPriority: + priority = + (application->GetApplicationState() != Application::RunningMission) ? + MinEventPriority : + HighInterestEventPriority; + break; + + default: + Fail("Application::PostInterestEvent - Should never reach here"); + break; + } + + application->Post(priority, renderer, message); +} + +// +//############################################################################# +// PostUpdateEvent +//############################################################################# +// +void + InterestManager::PostUpdateEvent( + Entity *entity, + Receiver::Message *message + ) +{ + Check(this); + Check(entity); + Check(message); + + // + // Note that the priority of the update can be greater than the + // creation priority since the replicants are created via dispatch + // in the interest manager. + // + EventPriorities priority = + (application->GetApplicationState() != Application::RunningMission) ? + DefaultEventPriority : + UpdateEventPriority; + + Check(application); + application->Post(priority, entity, message); +} + +// +//############################################################################# +// PostDestructionEvent +//############################################################################# +// +void + InterestManager::PostDestructionEvent( + Entity *entity, + Receiver::Message *message + ) +{ + Check(this); + Check(entity); + Check(message); + + EventPriorities priority = DestructionEventPriority; + + #if 0 + switch (entity->GetInterestPriority(renderer->GetLinkedEntity())) + { + case LowInterestPriority: + priority = LowEventPriority; + break; + + case HighInterestPriority: + priority = DefaultEventPriority; + break; + + default: + Fail("Application::PostInterestEvent - Should never reach here"); + break; + } + #endif + + Check(application); + application->Post(priority, entity, message); +} + +// +//############################################################################# +//############################################################################# +// +void + InterestManager::RemoveUninterestingEntitiesFromInterestOrigin( + InterestOrigin *interest_origin + ) +{ + Check(this); + Check(interest_origin); + + interest_origin->RemoveUninterestingEntities(); +} + +//~~~~~~~~~~~~~~~~~ InterestManager__EntitySubscribeToUpdatesMessage ~~~~~~~~~~ + +InterestManager__EntitySubscribeToUpdatesMessage:: + InterestManager__EntitySubscribeToUpdatesMessage(): + NetworkClient::Message( + InterestManager::EntitySubscribeToUpdatesMessageID, + sizeof(InterestManager__EntitySubscribeToUpdatesMessage) + ) +{ +} + +//~~~~~~~~~~~~~~ InterestManager__EntityBroadcastToReplicantsMessage ~~~~~~~~~~ + +InterestManager__EntityBroadcastToReplicantsMessage:: + InterestManager__EntityBroadcastToReplicantsMessage(size_t message_length): + NetworkClient::Message( + InterestManager::EntityBroadcastToReplicantsMessageID, + message_length + ) +{ +} + +//~~~~~~~~~~~~~~~~~ InterestManager__EntityNewInterestZoneMessage ~~~~~~~~~~~~~ + +InterestManager__EntityNewInterestZoneMessage:: + InterestManager__EntityNewInterestZoneMessage( + const EntityID &entity_ID, + InterestZoneID interest_zone_ID + ): + NetworkClient::Message( + InterestManager::EntityNewInterestZoneMessageID, + sizeof(InterestManager__EntityNewInterestZoneMessage) + ) +{ + entityID = entity_ID; + interestZoneID = interest_zone_ID; +} + +//~~~~~~~~~~~~~~~~~ InterestManager__HostInterestArenaChangedMessage ~~~~~~~~~~ + +InterestManager__HostInterestArenaChangedMessage:: + InterestManager__HostInterestArenaChangedMessage(): + NetworkClient::Message( + InterestManager::HostInterestArenaChangedMessageID, + sizeof(InterestManager__HostInterestArenaChangedMessage) + ) +{ +} + +//~~~~~~~~~~~~~~~~~ InterestManager__InterestZoneDeltaMessage ~~~~~~~~~~~~~~~~~ + +InterestManager__InterestZoneDeltaMessage:: + InterestManager__InterestZoneDeltaMessage(): + NetworkClient::Message( + InterestManager::InterestZoneDeltaMessageID, + sizeof(InterestManager__InterestZoneDeltaMessage) + ) +{ +} + diff --git a/CODE/RP/MUNGA/INTEREST.HPP b/CODE/RP/MUNGA/INTEREST.HPP new file mode 100644 index 0000000..1f2cb3d --- /dev/null +++ b/CODE/RP/MUNGA/INTEREST.HPP @@ -0,0 +1,603 @@ +//===========================================================================// +// File: interest.hh // +// Project: MUNGA Brick: Interest Manager // +// Contents: Interface specifications for interest manager // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- -----------------------------------------------------------// +// 11/04/94 ECH Initial coding. // +// 11/29/94 JMA Changed Identities to IDs // +// 02/10/95 CPB Added GaugeInterestType // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(INTEREST_HPP) +# define INTEREST_HPP + +# if !defined(NETWORK_HPP) +# include +# endif + +# if !defined(HOST_HPP) +# include +# endif + +# if !defined(INTORGN_HPP) +# include +# endif + +# if !defined(ENTITYID_HPP) +# include +# endif + + class Renderer; + class Entity; + class Entity__MakeMessage; + class Entity__UpdateMessage; + class Entity__DestroyEntityMessage; + class Entity__Message; + + //########################################################################## + //####################### InterestManager ############################ + //########################################################################## + + #define INTERESTMANAGER_MESSAGE_BUFFER_SIZE (1536) + + class Mission; + + class InterestManager__EntitySubscribeToUpdatesMessage; + class InterestManager__EntityBroadcastToReplicantsMessage; + class InterestManager__EntityNewInterestZoneMessage; + class InterestManager__HostInterestArenaChangedMessage; + class InterestManager__InterestZoneDeltaMessage; + + // + //-------------------------------------------------------------------------- + // InterestManager + // + // Entity types relevant to the interest managers operation: + // + // Static Entity (!replicated, !executing, !moving, trapped, map, id) + // - an entity that is not replicated, it does not execute or move. + // It is a component of the map and therefore trapped within its + // interest zone. It has a preallocated entity id. (rock, fence, wall) + // + // Dynamic Entity (replicated, executing, moving, !trapped, !map, !id) + // - an entity that may be replicated. It executes upon its host + // machine. It is also moves freely, crossing interest zones if it + // wishes. It is not a component of the map and can not be given a + // preallocated entity id. (VTV, Mech, missile) + // + // Dynamic Trapped Entity (replicated, executing, moving, trapped, !map, !id) + // - an entity that may be replicated. It executes upon its host + // machine. It may move but not out of its interest zone. It is not + // a component of the map and can not be given a preallocated entity id. + // (mines, burning husk of Mech) + // + // Dynamic Map Entity (replicated, executing, moving, !trapped, map, id) + // - an entity that may be replicated. It executes upon its host machine. + // It is also moves freely, crossing interest zones if it wishes. It + // is a component of the map and can be given a preallocated entity id. + // (The ork that activates upon entering the dungeon and then follows you, + // the one moon around the planet that orbits once every 24 hours) + // + // Dynamic Trapped Map Entity (replicated, executing, moving, trapped, map, id) + // - an entity that may be replicated. It executes upon its host machine. + // It is also moves freely, but may not change interest zones. It is a + // component of the map and can be given a preallocated entity id. + // (The swinging crane, the RP door) + //-------------------------------------------------------------------------- + // + + class InterestManager: + public NetworkClient + { + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Construction, Destruction, and Testing + // + public: + InterestManager(); + ~InterestManager(); + + Logical + TestInstance() const; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Execution control + // + public: + virtual void + LoadInterestArenas(Mission *mission); + virtual void + LoadMission(Mission *mission); + void + LoadMapStream( + MemoryStream *map_stream, + const Origin& root, + EntityID& static_id, + int &landmark_id + ); + + virtual void + Shutdown(); + + void + Execute(); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Interest Origin methods + // + public: + // + //----------------------------------------------------------------------- + // AdoptInterestOrigin + // + // Asserts that the entity is a origin of interest of a specified + // type (example: visual, auditory, radar). Traversals of the interest + // lattice are performed with respect to this origin and may be + // performed with different algorithms depending upon type. The + // Lattice is traversed to a particular "depth" or "cost" for a + // specific interest type and may be calibrated with the + // DepthCalibration parameter. + //----------------------------------------------------------------------- + // + void + AdoptInterestOrigin(InterestOrigin *interestOrigin); + + // + //----------------------------------------------------------------------- + // OrphanInterestOrigin + //----------------------------------------------------------------------- + // + void + OrphanInterestOrigin(InterestOrigin *interest_origin); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Entity methods + // + public: + // + //----------------------------------------------------------------------- + // NotifyOfEntityCreation + //----------------------------------------------------------------------- + // + void + NotifyOfEntityCreation( + Entity *entity, + Entity__MakeMessage *creation_message + ); + + // + //----------------------------------------------------------------------- + // NotifyOfEntityDestruction + // + // This method is called to notify the interest manager that a + // entity has been destroyed. + //----------------------------------------------------------------------- + // + void + NotifyOfEntityDestruction(Entity *entity); + + // + //----------------------------------------------------------------------- + // EntityUpdateInterestZone + // + // This method is called if the entity may have changed the + // interest zone that it is in. This is used by the update + // manager. + //----------------------------------------------------------------------- + // + void + EntityUpdateInterestZone(Entity *entity); + + // + //----------------------------------------------------------------------- + // EntityForceToInteresting + // + // This forces the interest manager to treat the entity as + // interesting. + // + // HACK - Is effect local? Is the entity forced to be + // interesting on just this host? Or, does the effect pervade + // all hosts? + //----------------------------------------------------------------------- + // + void + EntityForceToInteresting(Entity *entity); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Accesors for interest lattice manager + // + public: + InterestLatticeManager* + GetInterestLatticeManager(); + + InterestZone* + GetInterestZone(InterestZoneID interestZoneID); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Message Support + // + public: + // + // Message IDs + // + enum + { + // + //-------------------------------------------------------------------- + // Sent by an interest manager to itself and others when it has been + // notified that a new dynamic entity has been created on the host + // machine. + //-------------------------------------------------------------------- + // + NewDynamicEntityMessageID = NetworkClient::NextMessageID, + + #if 0 + // + //-------------------------------------------------------------------- + // Sent by an interest manager to itself and others when it has been + // notified that a new dynamic map entity has been created on the + // host machine. + //-------------------------------------------------------------------- + // + NewMapEntityMessageID, + #endif + + // + //-------------------------------------------------------------------- + // Sent by an interest manager to itself and others when it has been + // notified that a entity is under going deletion. + //-------------------------------------------------------------------- + // + DestroyDynamicEntityMessageID, + + // + //-------------------------------------------------------------------- + // Message is sent to the host of the original (serving) entity that + // the host id wishes to be on the entities update list. + //-------------------------------------------------------------------- + // + EntitySubscribeToUpdatesMessageID, + + // + //-------------------------------------------------------------------- + // Sent by the interest manager to itself and others when a hosted + // entity needs to send updates to its replicants. + //-------------------------------------------------------------------- + // + EntityUpdateReplicantsMessageID, + + // + //-------------------------------------------------------------------- + // Sent by the interest manager to itself and others when a hosted + // entity needs to broadcast a message to its replicants. + //-------------------------------------------------------------------- + // + EntityBroadcastToReplicantsMessageID, + + // + //-------------------------------------------------------------------- + // Sent by the interest manager to itself and others when a hosted + // entity has changed interest zones. + //-------------------------------------------------------------------- + // + EntityNewInterestZoneMessageID, + + // + //-------------------------------------------------------------------- + // Sent by the interest manager to others when its interest arena has + // changed. + //-------------------------------------------------------------------- + // + HostInterestArenaChangedMessageID, + + // + //-------------------------------------------------------------------- + // Tells interest managers of a change to a interest zone. This is + // for the purpose of creating and destroying Dynamic Map Entities. + // The creation time stamp is used by the interest manager to resolve + // synchronization problems. + //-------------------------------------------------------------------- + // + InterestZoneDeltaMessageID, + + NextMessageID + }; + + // + // Message types + // + typedef Entity__MakeMessage + NewDynamicEntityMessage; + typedef Entity__DestroyEntityMessage + DestroyDynamicEntityMessage; + typedef Entity__UpdateMessage + EntityUpdateReplicantsMessage; + + typedef InterestManager__EntitySubscribeToUpdatesMessage + EntitySubscribeToUpdatesMessage; + typedef InterestManager__EntityBroadcastToReplicantsMessage + EntityBroadcastToReplicantsMessage; + typedef InterestManager__EntityNewInterestZoneMessage + EntityNewInterestZoneMessage; + typedef InterestManager__HostInterestArenaChangedMessage + HostInterestArenaChangedMessage; + typedef InterestManager__InterestZoneDeltaMessage + InterestZoneDeltaMessage; + + // + //----------------------------------------------------------------------- + // NewDynamicEntityHandler + //----------------------------------------------------------------------- + // + void + NewDynamicEntityHandler(NewDynamicEntityMessage *message); + + // + //----------------------------------------------------------------------- + // DestroyEntityHandler + //----------------------------------------------------------------------- + // + void + DestroyDynamicEntityHandler(DestroyDynamicEntityMessage *message); + + // + //----------------------------------------------------------------------- + // EntitySubscribeToUpdates & EntitySubscribeToUpdatesHandler + //----------------------------------------------------------------------- + // + void + EntitySubscribeToUpdates( + EntityID entity_ID, + HostID master_host, + HostID replicant_host + ); + void + EntitySubscribeToUpdatesHandler( + EntitySubscribeToUpdatesMessage *message + ); + + // + //----------------------------------------------------------------------- + // EntityUpdateReplicants & EntityUpdateReplicantsHandler + // + // If the entity has any subscribers then send then update to subscribers. + //----------------------------------------------------------------------- + // + void + EntityUpdateReplicants( + Entity *entity, + Entity__UpdateMessage *update_message + ); + void + EntityUpdateReplicantsHandler( + EntityUpdateReplicantsMessage *update_message + ); + + // + //----------------------------------------------------------------------- + // EntityBroadcastToReplicants & EntityBroadcastToReplicantsHandler + // + // If the entity has any subscribers then send then update to subscribers. + //----------------------------------------------------------------------- + // + void + EntityBroadcastToReplicants( + Entity *entity, + Entity__Message *broadcast_message + ); + void + EntityBroadcastToReplicantsHandler( + EntityBroadcastToReplicantsMessage *broadcast_message + ); + + // + //----------------------------------------------------------------------- + // EntityNewInterestZoneHandler + //----------------------------------------------------------------------- + // + void + EntityNewInterestZoneHandler( + EntityNewInterestZoneMessage *message + ); + + // + //----------------------------------------------------------------------- + // HostInterestArenaChanged + //----------------------------------------------------------------------- + // + void + HostInterestArenaChangedHandler( + HostInterestArenaChangedMessage *message + ); + + // + //----------------------------------------------------------------------- + // InterestZoneDelta + //----------------------------------------------------------------------- + // + void + InterestZoneDeltaHandler( + InterestZoneDeltaMessage *message + ); + + // + //----------------------------------------------------------------------- + // LoadResourceFinished + //----------------------------------------------------------------------- + // + void + LoadResourceFinishedHandler(Message *message); + + // + //----------------------------------------------------------------------- + // Shared Data and message tables + //----------------------------------------------------------------------- + // + static Derivation + ClassDerivations; + static SharedData + DefaultData; + + static const HandlerEntry + MessageHandlerEntries[]; + static MessageHandlerSet + MessageHandlers; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Creation and Interest Event Posting + // + public: + void + PostRendererEvent( + Entity *entity, + Renderer *renderer, + Receiver::Message *message + ); + + private: + void + PostCreationEvent(Receiver::Message *message); + void + PostUpdateEvent( + Entity *entity, + Receiver::Message *message + ); + void + PostDestructionEvent( + Entity *entity, + Receiver::Message *message + ); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Private entity creation and destruction management + // + private: + void + StaticEntityCreation( + Entity *entity, + Entity__MakeMessage *creation_message + ); + void + DynamicEntityCreation( + Entity *entity, + Entity__MakeMessage *creation_message + ); + void + ReplicantEntityCreation( + Entity *entity, + Entity__MakeMessage *creation_message + ); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Private interest origin management + // + private: + void + AddInterestingEntityToInterestOrigins(Entity *entity); + void + RemoveUninterestingEntityFromInterestOrigins(Entity *entity); + void + AddInterestingEntitiesToInterestOrigin( + InterestOrigin *interest_origin + ); + void + RemoveUninterestingEntitiesFromInterestOrigin( + InterestOrigin *interest_origin + ); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Private data + // + private: + InterestLatticeManager + interestLatticeManager; + SChainOf + interestOriginSocket; + InterestArena + *interestArena; + + static unsigned char + messageBuildBuffer[INTERESTMANAGER_MESSAGE_BUFFER_SIZE]; + }; + + //~~~~~~~~~~~~~ InterestManager__EntitySubscribeToUpdatesMessage ~~~~~~~~~~~ + + class InterestManager__EntitySubscribeToUpdatesMessage: + public NetworkClient::Message + { + public: + InterestManager__EntitySubscribeToUpdatesMessage(); + }; + + //~~~~~~~~~~~ InterestManager__EntityBroadcastToReplicantsMessage ~~~~~~~~~~ + + class InterestManager__EntityBroadcastToReplicantsMessage: + public NetworkClient::Message + { + public: + InterestManager__EntityBroadcastToReplicantsMessage( + size_t message_length + ); + }; + + //~~~~~~~~~~~~~ InterestManager__EntityNewInterestZoneMessage ~~~~~~~~~~~~~~ + + class InterestManager__EntityNewInterestZoneMessage: + public NetworkClient::Message + { + public: + InterestManager__EntityNewInterestZoneMessage( + const EntityID &entity_ID, + InterestZoneID interest_zone_ID + ); + + EntityID + entityID; + InterestZoneID + interestZoneID; + // + // HACK - a way is needed to get from the entity the information + // required for another host to create the replicant + // + }; + + //~~~~~~~~~~~~~ InterestManager__HostInterestArenaChangedMessage ~~~~~~~~~~~ + + class InterestManager__HostInterestArenaChangedMessage: + public NetworkClient::Message + { + public: + InterestManager__HostInterestArenaChangedMessage(); + }; + + //~~~~~~~~~~~~~~~~~ InterestManager__InterestZoneDeltaMessage ~~~~~~~~~~~~~~ + + class InterestManager__InterestZoneDeltaMessage: + public NetworkClient::Message + { + public: + InterestManager__InterestZoneDeltaMessage(); + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~ InterestManager inlines ~~~~~~~~~~~~~~~~~~~~~~~~~ + + inline InterestLatticeManager* + InterestManager::GetInterestLatticeManager() + { + return &interestLatticeManager; + } + + inline InterestZone* + InterestManager::GetInterestZone(InterestZoneID interestZoneID) + { + Check(&interestLatticeManager); + return interestLatticeManager.GetInterestZone(interestZoneID); + } + +#endif + diff --git a/CODE/RP/MUNGA/INTORGN.CPP b/CODE/RP/MUNGA/INTORGN.CPP new file mode 100644 index 0000000..a2c3d18 --- /dev/null +++ b/CODE/RP/MUNGA/INTORGN.CPP @@ -0,0 +1,177 @@ +//===========================================================================// +// File: intorgn.cpp // +// Project: MUNGA Brick: Interest Manager // +// Contents: Interface specification Interest Manager // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 10/28/94 ECH Initial coding. // +// 11/03/94 ECH Develop to munga spec // +// 11/29/94 JMA Changed Identities to IDs // +// 02/10/95 CPB Added GaugeInterestType // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(INTORGN_HPP) + #include +#endif + +#if !defined(APP_HPP) + #include +#endif + +#if !defined(INTEREST_HPP) + #include +#endif + +//############################################################################# +//####################### InterestOrigin ################################ +//############################################################################# + +// +//############################################################################# +// InterestOrigin +//############################################################################# +// +InterestOrigin::InterestOrigin( + InterestZoneID interest_zone_ID, + InterestType interest_type, + InterestDepth depth_calibration +): + interestArenaSocket(NULL) +{ + interestZoneID = interest_zone_ID; + interestType = interest_type; + depthCalibration = depth_calibration; +} + +// +//############################################################################# +// ~InterestOrigin +//############################################################################# +// +InterestOrigin::~InterestOrigin() +{ + InterestArena *interest_arena; + + Check(&interestArenaSocket); + if ((interest_arena = interestArenaSocket.GetCurrent()) != NULL) + { + Unregister_Object(interest_arena); + delete interest_arena; + } +} + +// +//############################################################################# +// TestInstance +//############################################################################# +// +Logical + InterestOrigin::TestInstance() const +{ + Node::TestInstance(); + + Verify(interestZoneID != NullInterestZoneID); + Verify( + interestType == VisualInterestType || + interestType == AudioInterestType || + interestType == GaugeInterestType || + interestType == CollisionInterestType + ); + Check(&interestArenaSocket); + + return True; +} + +// +//############################################################################# +// Update +//############################################################################# +// +void + InterestOrigin::Update( +#if DEBUG_LEVEL>0 + InterestZoneID interest_zone_ID +#else + InterestZoneID +#endif + ) +{ + Check(this); + Verify(interest_zone_ID != NullInterestZoneID); + + #if 0 + // + // If (the interest zone has changed) + // + // + // Calculate the new interest arena for this interest origin + // + + // + // Add this interest origin to a "changed" list + // + #else + // + // HACK - there is only one interest zone right now... + // + if (interestArenaSocket.GetCurrent() == NULL) + { + InterestManager *interest_manager; + + Check(application); + interest_manager = application->GetInterestManager(); + Check(interest_manager); + Check(interest_manager->GetInterestLatticeManager()); + + InterestArena *interest_arena = + interest_manager->GetInterestLatticeManager()->MakeInterestArena( + (InterestZoneID)0, + (InterestType)0, + (InterestDepth)0 + ); + Register_Object(interest_arena); + + interestArenaSocket.Add(interest_arena); + Verify(interest_arena == interestArenaSocket.GetCurrent()); + } + #endif +} + +// +//############################################################################# +//############################################################################# +// +void + InterestOrigin::AddInterestingEntity(Entity*) +{ + Fail("InterestOrigin::AddInterestingEntity - Should never reach here\n"); +} + +// +//############################################################################# +//############################################################################# +// +void + InterestOrigin::RemoveUninterestingEntity(Entity*) +{ + Fail("InterestOrigin::RemoveUninterestingEntity - Should never reach here\n"); +} + +// +//############################################################################# +//############################################################################# +// +void + InterestOrigin::RemoveUninterestingEntities() +{ + Fail("InterestOrigin::RemoveUninterestingEntities - Should never reach here\n"); +} + diff --git a/CODE/RP/MUNGA/INTORGN.HPP b/CODE/RP/MUNGA/INTORGN.HPP new file mode 100644 index 0000000..c923a96 --- /dev/null +++ b/CODE/RP/MUNGA/INTORGN.HPP @@ -0,0 +1,205 @@ +//===========================================================================// +// File: intorgn.hh // +// Project: MUNGA Brick: Interest Manager // +// Contents: Interface specifications for interest manager // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- -----------------------------------------------------------// +// 11/04/94 ECH Initial coding. // +// 11/29/94 JMA Changed Identities to IDs // +// 02/10/95 CPB Added GaugeInterestType // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(INTORGN_HPP) +# define INTORGN_HPP + +# if !defined(NETWORK_HPP) +# include +# endif + +# if !defined(LATTICE_HPP) +# include +# endif + + //########################################################################## + //####################### InterestOrigin ############################# + //########################################################################## + + class Entity; + + class InterestOrigin: + public Node + { + friend class InterestManager; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Destructor, and Testing + // + public: + ~InterestOrigin(); + + Logical + TestInstance() const; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Update + // + public: + // + //----------------------------------------------------------------------- + // Update + // + // Updates the interest origins internal data structures for the + // interest zone ID. This method is most likely called by the + // renderer manager. + //----------------------------------------------------------------------- + // + virtual void + Update(InterestZoneID interest_zone_ID); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Accessors + // + private: + InterestZoneID + GetInterestZoneID(); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Constructor + // + protected: + InterestOrigin( + InterestZoneID interest_zone_ID, + InterestType interest_type, + InterestDepth depth_calibration + ); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Interest Manager support + // + private: + virtual void + AddInterestingEntity(Entity *interesting_entity); + virtual void + RemoveUninterestingEntity(Entity *uninteresting_entity); + virtual void + RemoveUninterestingEntities(); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Private data + // + private: + InterestZoneID + interestZoneID; + InterestType + interestType; + InterestDepth + depthCalibration; + SlotOf + interestArenaSocket; + }; + + //~~~~~~~~~~~~~~~~~~~~~~~ InterestOrigin inlines ~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + inline InterestZoneID + InterestOrigin::GetInterestZoneID() + { + Check(this); + return interestZoneID; + } + +#if 0 + //########################################################################## + //####################### InterestOrigin ############################# + //########################################################################## + + class InterestOrigin: + public Node + { + friend class InterestManager; + friend class InterestOrigin__InterestingEntityIterator; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Public types + // + public: + typedef InterestOrigin__InterestingEntityIterator + InterestingEntityIterator; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Constructor, Destructor, and Testing + // + public: + InterestOrigin( + const EntityID &entity_ID, + InterestType interest_type, + InterestDepth depth_calibration + ); + ~InterestOrigin(); + + Logical + TestInstance() const; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Renderer support + // + public: + // + //-------------------------------------------------------------------- + // UpdateInterestOrigin + // + // Updates the interest managers internal data structures for the + // interest origin entity. This method is most likely called by the + // renderer manager. It prepares the data that will be accessed by + // InterestingEntityIterator. + //-------------------------------------------------------------------- + // + virtual void + Update(); + + InterestArena* + GetInterestArena(); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Interest Manager support + // + protected: + virtual void + AddInterestingEntity(Entity *interesting_entity); + virtual void + RemoveUninterestingEntity(Entity *uninteresting_entity); + virtual void + RemoveUninterestingEntities(); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Private data + // + private: + EntityID + entityID; + InterestType + interestType; + InterestDepth + depthCalibration; + SlotOf + interestArenaSocket; + SChainOf + interestingEntitySocket; + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~ InterestOrigin inlines ~~~~~~~~~~~~~~~~~~~~~~~~~~ + + inline InterestArena* + InterestOrigin::GetInterestArena() + { + Check(this); + return interestArenaSocket.GetCurrent(); + } +#endif + +#endif + diff --git a/CODE/RP/MUNGA/ITERATOR.CPP b/CODE/RP/MUNGA/ITERATOR.CPP new file mode 100644 index 0000000..3102eb1 --- /dev/null +++ b/CODE/RP/MUNGA/ITERATOR.CPP @@ -0,0 +1,179 @@ +//===========================================================================// +// File: iterator.cc // +// Project: MUNGA Brick: Connection Library // +// Contents: Implementation details of base iterator // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 10/08/94 ECH Initial coding. // +// 10/20/94 JMA Fixed style stuff. // +// 10/23/94 ECH Added Begin, End, Forward, Backward style iteration // +// methods // +// 10/23/94 ECH Added higher level of deletion safety // +// 10/28/94 JMA Made compatible with SGI CC // +// 11/03/94 ECH Made compatible with BC4.0 // +// 11/05/94 JMA Made compatible with GNU C++ // +// 01/04/95 ECH Added base methods for some iterator methods // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(ITERATOR_HPP) + #include +#endif + +// +//############################################################################# +//############################################################################# +// +Iterator::Iterator() +{ +} + +// +//############################################################################# +//############################################################################# +// +Iterator::~Iterator() +{ +} + +// +//############################################################################# +//############################################################################# +// +Logical + Iterator::TestInstance() const +{ + return True; +} + +// +//########################################################################### +// First +//########################################################################### +// +void + Iterator::First() +{ + Fail("Iterator::First - Should never reach here"); +} + +// +//########################################################################### +// Last +//########################################################################### +// +void + Iterator::Last() +{ + Fail("Iterator::Last - Should never reach here"); +} + +// +//########################################################################### +// Next +//########################################################################### +// +void + Iterator::Next() +{ + Fail("Iterator::Next - Should never reach here"); +} + +// +//########################################################################### +// Previous +//########################################################################### +// +void + Iterator::Previous() +{ + Fail("Iterator::Previous - Should never reach here"); +} + +// +//########################################################################### +// GetSize +//########################################################################### +// +CollectionSize + Iterator::GetSize() +{ + Fail("Iterator::GetSize - Should never reach here"); + return 0; +} + +// +//########################################################################### +// ReadAndNextImplementation +//########################################################################### +// +void + *Iterator::ReadAndNextImplementation() +{ + void *item; + + if ((item = GetCurrentImplementation()) != NULL) + { + Next(); + } + return item; +} + +// +//########################################################################### +// ReadAndPreviousImplementation +//########################################################################### +// +void + *Iterator::ReadAndPreviousImplementation() +{ + void *item; + + if ((item = GetCurrentImplementation()) != NULL) + { + Previous(); + } + return item; +} + +// +//########################################################################### +// GetCurrentImplementation +//########################################################################### +// +void* + Iterator::GetCurrentImplementation() +{ + Fail("Iterator::GetCurrentImplementation - Should never reach here"); + return NULL; +} + +// +//########################################################################### +// GetNthImplementation +//########################################################################### +// +void + *Iterator::GetNthImplementation(CollectionSize index) +{ + CollectionSize i = 0; + void *item; + + First(); + while ((item = GetCurrentImplementation()) != NULL) + { + if (i == index) + return item; + Next(); + i++; + } + return NULL; +} + diff --git a/CODE/RP/MUNGA/ITERATOR.HPP b/CODE/RP/MUNGA/ITERATOR.HPP new file mode 100644 index 0000000..4bfe141 --- /dev/null +++ b/CODE/RP/MUNGA/ITERATOR.HPP @@ -0,0 +1,174 @@ +//===========================================================================// +// File: iterator.hh // +// Project: MUNGA Brick: Connection Library // +// Contents: Interface specifications for the abstract iterator // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 10/19/94 ECH Initial coding. // +// 10/20/94 JMA Fixed style stuff. // +// 10/23/94 ECH Added Begin, End, Forward, Backward style iteration // +// methods // +// 10/23/94 ECH Added higher level of deletion safety // +// 10/28/94 JMA Made compatible with SGI CC // +// 11/03/94 ECH Made compatible with BC4.0 // +// 01/04/95 ECH Added base methods for some iterator methods // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(ITERATOR_HPP) +# define ITERATOR_HPP + +# if !defined(STYLE_HPP) +# include +# endif + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Iterator ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + typedef int CollectionSize; + typedef int IteratorPosition; + + class Iterator SIGNATURED + { + public: + // + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // Public interface to abstract class + // + // NOTE: All unsafe, untyped public methods are named XXXItem. The + // safe, typed public methods are named XXX and are declared in the + // template sub-classes. + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // + + // + //-------------------------------------------------------------------- + // Destructor and testing + //-------------------------------------------------------------------- + // + virtual + ~Iterator(); + Logical + TestInstance() const; + + // + //-------------------------------------------------------------------- + // First - Moves to next item + // Last - Moves to last item + //-------------------------------------------------------------------- + // + virtual void + First(); + virtual void + Last(); + + // + //-------------------------------------------------------------------- + // Next - Moves to next item + // Previous - Moves to previous item + //-------------------------------------------------------------------- + // + virtual void + Next(); + virtual void + Previous(); + + // + //-------------------------------------------------------------------- + // ReadAndNextItem - Returns current item and moves to next item + // ReadAndPreviousItem - Returns current item and moves to prev item + // GetCurrentItem - Returns current item + //-------------------------------------------------------------------- + // + void* + ReadAndNextItem() + {return ReadAndNextImplementation();} + void* + ReadAndPreviousItem() + {return ReadAndPreviousImplementation();} + void* + GetCurrentItem() + {return GetCurrentImplementation();} + + // + //-------------------------------------------------------------------- + // GetSize - Returns number of items + // GetNthItem - Returns nth item + //-------------------------------------------------------------------- + // + virtual CollectionSize + GetSize(); + void* + GetNthItem(CollectionSize index) + {return GetNthImplementation(index);} + + // + //-------------------------------------------------------------------- + // BeginIterator - Moves to first item and returns iterator + // EndIterator - Moves to last item and returns iterator + //-------------------------------------------------------------------- + // + virtual Iterator& + BeginIterator() + {return BeginImplementation();} + virtual Iterator& + EndIterator() + {return EndImplementation();} + + // + //-------------------------------------------------------------------- + // ForwardIterator - Moves to next item and returns iterator + // BackwardIterator - Moves to previous item and returns iterator + //-------------------------------------------------------------------- + // + virtual Iterator& + ForwardIterator() + {return ForwardImplementation();} + virtual Iterator& + BackwardIterator() + {return BackwardImplementation();} + + protected: + // + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // Protected interface to abstract class + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // + Iterator(); + + // + //-------------------------------------------------------------------- + // Untyped implementations + //-------------------------------------------------------------------- + // + virtual void* + ReadAndNextImplementation(); + virtual void* + ReadAndPreviousImplementation(); + virtual void* + GetCurrentImplementation(); + virtual void* + GetNthImplementation(CollectionSize index); + + virtual Iterator& + BeginImplementation() + {First(); return *this;} + virtual Iterator& + EndImplementation() + {Last(); return *this;} + virtual Iterator& + ForwardImplementation() + {Next(); return *this;} + virtual Iterator& + BackwardImplementation() + {Previous(); return *this;} + }; + +#endif diff --git a/CODE/RP/MUNGA/JMOVER.CPP b/CODE/RP/MUNGA/JMOVER.CPP new file mode 100644 index 0000000..7f674ab --- /dev/null +++ b/CODE/RP/MUNGA/JMOVER.CPP @@ -0,0 +1,2068 @@ +//===========================================================================// +// File: jmover.cpp // +// Project: MUNGA Brick: Model Manager // +// Contents: Implementation details of 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 // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(JMOVER_HPP) + #include +#endif + +#if !defined(FILEUTIL_HPP) + #include +#endif + +#if !defined(APP_HPP) + #include +#endif + +#if !defined(NOTATION_HPP) + #include +#endif + +#if !defined(NAMELIST_HPP) + #include +#endif + +//############################################################################# +//############################ JointedMover ############################# +//############################################################################# + +//############################################################################# +// Shared Data Support +// +Derivation + JointedMover::ClassDerivations(Mover::ClassDerivations,"JointedMover"); + +JointedMover::SharedData + JointedMover::DefaultData( + JointedMover::ClassDerivations, + JointedMover::MessageHandlers, + JointedMover::AttributeIndex, + JointedMover::StateCount, + (Entity::MakeHandler)JointedMover::Make + ); + +//############################################################################# +// Attribute Support +// + + const JointedMover::IndexEntry + JointedMover::AttributePointers[]= +{ + { + JointedMover::SegmentCountAttributeID, + "SegmentCount", + (Simulation::AttributePointer)&JointedMover::segmentCount + }, + { + JointedMover::SegmentTableAttributeID, + "SegmentTable", + (Simulation::AttributePointer)&JointedMover::segmentTable + }, + { + JointedMover::JointSubsystemAttributeID, + "JointSubsystem", + (Simulation::AttributePointer)&JointedMover::jointSubsystem + } +}; + +JointedMover::AttributeIndexSet + JointedMover::AttributeIndex( + ELEMENTS(JointedMover::AttributePointers), + JointedMover::AttributePointers, + Mover::AttributeIndex + ); + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +EntitySegment* + JointedMover::GetSegment(CString segment_name) +{ + Check(this); + Check_Pointer(segment_name); + EntitySegment::SegmentTableIterator iterator(segmentTable); + + EntitySegment *current_segment; + + while( (current_segment = iterator.ReadAndNext() ) != NULL) + { + if(segment_name.Compare(current_segment->GetName()) == 0) + { + return current_segment; + } + } + return NULL; +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +EntitySegment* + JointedMover::GetSegmentFromDamageZone(CString damage_zone) +{ + EntitySegment::SegmentTableIterator iterator(segmentTable); + EntitySegment *current_segment; + while ((current_segment = iterator.ReadAndNext() ) != NULL) + { + EntitySegment::IntegerTableIterator *damage_iterator; + damage_iterator = current_segment->MakeDamageZoneIndexTable(); + Register_Object(damage_iterator); + EntitySegment::IntegerPlug *index_plug; + while ((index_plug = damage_iterator->ReadAndNext() ) != NULL) + { + CString current_name; + Verify(index_plug->GetItem() >= 0); + Verify(index_plug->GetItem() <= damageZoneCount); + + current_name = damageZones[index_plug->GetItem()]->damageZoneName; + Check_Pointer(¤t_name); + if(current_name.Compare(damage_zone) == 0) + { + Unregister_Object(damage_iterator); + delete damage_iterator; + return current_segment; + } + } + Unregister_Object(damage_iterator); + delete damage_iterator; + } + return NULL; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + JointedMover::GetSegmentToWorld( + EntitySegment &my_segment, + LinearMatrix *transform + ) +{ + Check(this); + JointSubsystem *joints = GetJointSubsystem(); + Check(joints); + + // + //--------------------------------------------------------------- + // Check to see if the segment transforms need to be recalculated + //--------------------------------------------------------------- + // + if (joints->AreJointsModified()) + { + EntitySegment::SegmentTableIterator iterator(segmentTable); + EntitySegment *current_segment; + while( (current_segment = iterator.ReadAndNext() ) != NULL) + { + current_segment->ModifySegment(); + } + joints->ModifyJoints(False); + } + + // + //----------------------------- + // Compute the actual transform + //----------------------------- + // + transform->Multiply( + my_segment.GetSegmentToEntity(), + localToWorld + ); + Check_Fpu(); +} + +//############################################################################# +// Construction and Destruction +// + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +JointedMover::JointedMover( + JointedMover::MakeMessage *creation_message, + JointedMover::SharedData &virtual_data +): + Mover(creation_message, virtual_data), + jointSubsystem(NULL), + segmentTable(this, True) +{ + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Create the JointSubsystem + //~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + JointSubsystem *joint_subsystem = new JointSubsystem( + (Entity*) this, + Entity::EntitySubsystemID + ); + + Register_Object(joint_subsystem); + jointSubsystem.Add(joint_subsystem); + Check(joint_subsystem); + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Get Resource Description + //~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + ResourceDescription *skl_resource = + application->GetResourceFile()->SearchList( + creation_message->resourceID, + ResourceDescription::SkeletonStreamResourceType + ); + Check(skl_resource); + skl_resource->Lock(); + + DynamicMemoryStream segment_stream( + skl_resource->resourceAddress, + skl_resource->resourceSize); + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // read in segmentCount and jointCount + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + int joint_count; + segment_stream >> segmentCount >> joint_count; + + int current_joint_type; + int current_joint_index = 0; + + CString segment_name; + EntitySegment *parent_segment; + EntitySegment *current_segment; + int segment_joint_index; + Joint *segment_joint_pointer; + int parent_index; + CString video_object_name; + LinearMatrix segment_offset(LinearMatrix::Identity); + Logical site_segment; + + int ii; + for(ii=0;ii> segment_name >> parent_index; + + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // read parent index & find parentSegment ptr + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + if(parent_index == -1) + { + parent_segment = NULL; + } + else + { + EntitySegment::SegmentTableIterator iterator(segmentTable); + parent_segment = iterator.GetNth(parent_index); + } + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Determine if this segment is a site + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + segment_stream >> site_segment >> current_joint_type; + + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Get the joint type & init the joint + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + if(current_joint_type != Joint::NULLJointType) + { + segment_joint_index = current_joint_index; + segment_joint_pointer = + new Joint( + joint_subsystem, + (Joint::JointType)current_joint_type + ); + Register_Object(segment_joint_pointer); + joint_subsystem->AddJoint(current_joint_index, segment_joint_pointer); + + ++current_joint_index; + } + else + { + segment_joint_pointer = NULL; + segment_joint_index = -1; + } + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Read in the segment offset matrix + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + segment_stream >> segment_offset; + + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Get The Primary Damage Zone + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + int primary_dzone_index; + segment_stream >> primary_dzone_index; + + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Create this segment and add + // add it to the segment table + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + current_segment = new EntitySegment( + segment_name, + ii, // my_index + parent_index, + segment_joint_index, + segment_joint_pointer, + segment_offset, + parent_segment, + site_segment, + primary_dzone_index + ); + Register_Object(current_segment); + segmentTable.AddValue(current_segment, ii); + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Read in ALL VideoObjectNames + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + int video_object_count; + EntitySegment::SkeletonType skl_type; + + segment_stream >> video_object_count; + Verify(video_object_count); + + int jj; + for(jj=0;jj> skl_type >> video_object_name; + if(video_object_name.Compare("None")) + { + current_segment->AddVideoObjectName( + video_object_name, + skl_type, + DamageZone::ExistsGraphicState + ); + } + } + + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Read in ALL DESTROYED VideoObjectNames + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + int destroyed_video_object_count; + + segment_stream >> destroyed_video_object_count; + + for(jj=0;jj> skl_type >> video_object_name; + if(video_object_name.Compare("None")) + { + current_segment->AddVideoObjectName( + video_object_name, + skl_type, + DamageZone::DestroyedGraphicState + ); + } + } + + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Read in DamageZone information + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + int damage_zone_count; + int damage_zone_index; + + segment_stream >> damage_zone_count; + if(damage_zone_count) + { + + for(int dd=0;dd> damage_zone_index; + current_segment->AddDamageZone(damage_zone_index, dd); + } + } + // + // Read in the Children Information + // + int children_count; + int child_index; + + segment_stream >> children_count; + + if(children_count) + { + for(int jj=0;jj> child_index; + current_segment->AddChildIndex(child_index, jj); + } + } + } + skl_resource->Unlock(); + + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Initialize all the child Pointers for each segment + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + for(ii=0;iiMakeChildIndexTable(); + Register_Object(iterator); + EntitySegment::IntegerPlug *current_index; + int child_count=0; + while((current_index = iterator->ReadAndNext()) != NULL) + { + EntitySegment *child_segment; + child_segment = segment_iterator.GetNth(current_index->GetItem()); + Check(child_segment); + current_segment->AddChildPointer(child_segment, child_count); + ++child_count; + } + Unregister_Object(iterator); + delete iterator; +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +JointedMover::~JointedMover() +{ + EntitySegment::SegmentTableIterator iterator(segmentTable); + iterator.DeletePlugs(); +// +//--------------------------------------------------------------------- +// This should be deleted by the entity subsystemArray[jointSubsystem] +//--------------------------------------------------------------------- +// +#if 0 + JointSubsystem *joint_subsystem = jointSubsystem.GetCurrent(); + Unregister_Object(joint_subsystem); + delete joint_subsystem; +#endif +} + +//######################################################################## +// DamageZone Support +// +ResourceDescription::ResourceID + JointedMover::CreateDamageZoneStream( + ResourceFile *resource_file, + const char *model_name, + NotationFile *model_file, + const ResourceDirectories *directories + ) +{ + Check(resource_file); + Check_Pointer(model_name); + Check(model_file); + Check_Pointer(directories); + + // + //------------------- + // Find the .skl file + //------------------- + // + const char* skl_entry; + if ( + !model_file->GetEntry( + "video", + "skeleton", + &skl_entry + ) + ) + { + DEBUG_STREAM << model_name << " is missing .skl file specification!\n"; + return -1; + } + char *skl_filename = + MakePathedFilename(directories->videoDirectory, skl_entry); + Register_Pointer(skl_filename); + + NotationFile *skl_file = new NotationFile(skl_filename); + Register_Object(skl_file); + if (!skl_file->PageCount()) + { + DEBUG_STREAM << skl_filename << " is empty or missing!\n"; +Dump_And_Die_1: + Unregister_Pointer(skl_filename); + delete[] skl_filename; + Unregister_Object(skl_file); + delete skl_file; + return ResourceDescription::NullResourceID; + } + + // + //------------------- + // Find the .dmg file + //------------------- + // + const char* dmg_entry; + if ( + !model_file->GetEntry( + "gamedata", + "DamageZones", + &dmg_entry + ) + ) + { + DEBUG_STREAM << model_name << " is missing .dmg file specification!\n"; + goto Dump_And_Die_1; + } + + char *dmg_filename = + MakePathedFilename(directories->modelDirectory, dmg_entry); + Register_Pointer(dmg_filename); + + NotationFile *dmg_file = new NotationFile(dmg_filename); + Register_Object(dmg_file); + + if (!dmg_file->PageCount()) + { + DEBUG_STREAM << dmg_filename << " is empty or missing!\n"; +Dump_And_Die_2: + Unregister_Pointer(dmg_filename); + delete[] dmg_filename; + Unregister_Object(dmg_file); + delete dmg_file; + goto Dump_And_Die_1; + } + + // + // Get the number of Damage zones + // + int dzone_count; + if ( + !skl_file->GetEntry( + "ROOT", + "DZoneCount", + &dzone_count + ) + ) + { + DEBUG_STREAM << model_name << " is missing DZoneCount \n"; + goto Dump_And_Die_2; + } + + DynamicMemoryStream damage_zone_stream; + + // + // write the Damage Zone Count Info from the + // .dmg file to the stream + // + damage_zone_stream << dzone_count; + + // + // Make an entry list of all the entries in the damage zone page + // + NameList *dzone_namelist = + skl_file->MakeEntryList("DamageZones","dz_"); + Register_Object(dzone_namelist); + + if (dzone_namelist->EntryCount() == 0) + { + DEBUG_STREAM << "No dZones listed in DamageZones Page"<GetFirstEntry(); + + while (dzone_entry) + { + ++num_dzones_found; + // + // Get dzone name in .skl file + // + Str_Copy( + current_dzone_name, + dzone_entry->GetName(), + sizeof(current_dzone_name) + ); + + // + // Create the stream for this damage zone + // + DamageZone::CreateStreamedDamageZone( + model_file, + model_name, + skl_file, + current_dzone_name, + &damage_zone_stream, + dmg_file, + directories + ); + + // + // Get next dzone entry in this segment page + // + dzone_entry = dzone_entry->GetNextEntry(); + } // End while more dzone_entries + + if(dzone_count != num_dzones_found) + { + DEBUG_STREAM <<"DZoneCount != damage zones found in Page DamageZones"<AddResourceMemoryStream( + model_name, + ResourceDescription::DamageZoneStreamResourceType, + 1, + ResourceDescription::Preload, + &damage_zone_stream + ); + Check(new_res); + // + // Free mem + // + Unregister_Pointer(skl_filename); + delete skl_filename; + Unregister_Object(skl_file); + delete skl_file; + Unregister_Pointer(dmg_filename); + delete dmg_filename; + Unregister_Object(dmg_file); + delete dmg_file; + Unregister_Object(dzone_namelist); + delete dzone_namelist; + return new_res->resourceID; +} + + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +ResourceDescription::ResourceID + JointedMover::CreateSkeletonStream( + ResourceFile *resource_file, + const char *model_name, + NotationFile *model_file, + const ResourceDirectories *directories + ) +{ + Check_Pointer(model_name); + Check(model_file); + Check_Pointer(directories); + + // + //------------------- + // Find the .skl file + //------------------- + // + const char *entry_data; + if ( + !model_file->GetEntry( + "video", + "skeleton", + &entry_data + ) + ) + { + DEBUG_STREAM << model_name << " is missing .skl file specification!\n"; + return -1; + } + // + // Get the name of the SKL File + // + char *filename = MakePathedFilename(directories->videoDirectory, entry_data); + Register_Pointer(filename); + + // + // Create a Notation file from the skl ASCII File + // + NotationFile *skl_file = new NotationFile(filename); + Register_Object(skl_file); + + // + // Get number of Segments(or Pages) + // + int segment_count = skl_file->PageCount(); + + // + // Do not count Lab_Only and DamageZones they are not included + // + if (skl_file->PageExists("LAB_ONLY")) + --segment_count; + if(skl_file->PageExists("DamageZones")) + --segment_count; + + if (!segment_count) + { + DEBUG_STREAM << model_name << " has no Segments!\n"; +Dump_And_Die: + Unregister_Pointer(filename); + delete filename; + Unregister_Object(skl_file); + delete skl_file; + return -1; + } + int joint_count; + if ( + !skl_file->GetEntry( + "ROOT", + "JointCount", + &joint_count + ) + ) + { + DEBUG_STREAM << model_name << " is missing JointCount \n"; + goto Dump_And_Die; + } + DynamicMemoryStream segment_stream; + + // + // Write Segment Count to the stream + // + segment_stream << segment_count << joint_count; + + // + // Create a list of the pages and get the first entry + // + NameList *segment_namelist = skl_file->MakePageList(); + Register_Object(segment_namelist); + NameList::Entry *segment_entry = segment_namelist->GetFirstEntry(); + int + parent_index = -1, + children_count; + + CString + segment_page_name; + + EulerAngles + rotation; + + Point3D + translation; + + LinearMatrix + base_offset(LinearMatrix::Identity); + + while(segment_entry) + { + segment_page_name = segment_entry->GetName(); + + if( + (strcmp(segment_page_name, "LAB_ONLY") == 0) || + (strcmp(segment_page_name,"DamageZones") ==0) + ) + { + segment_entry = segment_entry->GetNextEntry(); + continue; + } + + segment_stream << segment_page_name; + // + // Get the information about the parent + // + const char *parent_name; + if( + skl_file->GetEntry( + segment_page_name, + "parent", + &parent_name + ) + ) + { + parent_index = GetSegmentIndex(parent_name, skl_file); + if(parent_index == -1) + { + DEBUG_STREAM<GetEntry( + segment_page_name, + "Type", + &joint_name) + ) + { + if( strcmp("ROOT", segment_page_name) != 0) + { + is_site = True; + } + } + else + { + if(strcmp(joint_name,"static")==0) + { + joint_type = Joint::StaticJointType; + } + else + if(strcmp(joint_name, "hingex")==0) + { + joint_type = Joint::HingeXJointType; + } + else + if(strcmp(joint_name,"hingey")==0) + { + joint_type = Joint::HingeYJointType; + } + else + if(strcmp(joint_name,"hingez")==0) + { + joint_type = Joint::HingeZJointType; + } + else + if(strcmp(joint_name,"ball")==0) + { + joint_type = Joint::BallJointType; + } + else + if(strcmp(joint_name,"balltranslate")==0) + { + joint_type = Joint::BallTranslationJointType; + } + } + segment_stream << is_site << joint_type; + // + // Get offsets + // + skl_file->GetEntry(segment_page_name, "tranx" ,&translation.x); + skl_file->GetEntry(segment_page_name, "trany" ,&translation.y); + skl_file->GetEntry(segment_page_name, "tranz" ,&translation.z); + skl_file->GetEntry(segment_page_name, "pitch" ,&rotation.pitch.angle); + skl_file->GetEntry(segment_page_name, "yaw" ,&rotation.yaw.angle); + skl_file->GetEntry(segment_page_name, "roll" ,&rotation.roll.angle); + + base_offset = translation; + base_offset = rotation; + + // + // Write out the base offset + // + segment_stream << base_offset; + + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Get the Primary Damage Zone + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + const char* skl_entry; + if (!model_file->GetEntry( + "video", + "skeleton", + &skl_entry + ) + ) + { + goto Dump_And_Die; + } + else + { + CString skl_filename = + MakePathedFilename(directories->videoDirectory, skl_entry); + + NotationFile *skl_file = new NotationFile(skl_filename); + Register_Object(skl_file); + if (!skl_file->PageCount()) + { + DEBUG_STREAM << skl_filename << " is empty or missing!"<GetEntry( + segment_page_name, + "dzone", + &dzone_name + ) + ) + { + primary_damage_zone = GetDamageZoneIndex(dzone_name, skl_file); + } + else + { + primary_damage_zone = -1; + } + segment_stream << primary_damage_zone; + Unregister_Object(skl_file); + delete skl_file; + } + + + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Read in ALL VideoObjectNames + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + if (! + InitVideoObjectNames( + &segment_stream, + model_file, + segment_page_name, + directories + ) + ) + { + goto Dump_And_Die; + } + + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Read in ALL DESTROYED VideoObjectNames + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + if (! + InitDestroyedVideoObjectNames( + &segment_stream, + model_file, + segment_page_name, + directories + ) + ) + { + goto Dump_And_Die; + } + + // + // Get the damageZones associated with this segment + // + NameList *damage_zone_list = + skl_file->MakeEntryList(segment_entry->GetName(), "dzone"); + Register_Object(damage_zone_list); + + NameList::Entry *damage_zone_entry = damage_zone_list->GetFirstEntry(); + + int damage_zone_count = damage_zone_list->EntryCount(); + + segment_stream << damage_zone_count; + + if (damage_zone_count) + { + for (int dd=0;ddGetChar(); + + int damage_zone_index; + damage_zone_index = + GetDamageZoneIndex(damage_zone_name, skl_file); + + if(damage_zone_index == -1) + { + + DEBUG_STREAM<GetNextEntry(); + } + } + Unregister_Object(damage_zone_list); + delete damage_zone_list; + + // + // Get the number of children, 0 if no children + // + NameList *children_list = + skl_file->MakeEntryList(segment_entry->GetName(),"joint"); + Register_Object(children_list); + NameList::Entry *child_entry = children_list->GetFirstEntry(); + children_count = 0; + while(child_entry) + { + ++children_count; + child_entry = child_entry->GetNextEntry(); + } + // + // Write how many children + // + segment_stream << children_count; + if(children_count) + { + child_entry = children_list->GetFirstEntry(); + // + // Write out the segment index for every child + // + for(int cc=0;ccGetChar(), skl_file); + if(child_index == -1) + { + DEBUG_STREAM<GetName()<<" Not Found!!"<GetNextEntry(); + } + } + Unregister_Object(children_list); + delete children_list; + segment_entry = segment_entry->GetNextEntry(); + } + + // + //-------------------------------------------------------------------- + // Write the stream out to disk. + //-------------------------------------------------------------------- + // + ResourceDescription *new_res = + resource_file->AddResourceMemoryStream( + model_name, + ResourceDescription::SkeletonStreamResourceType, + 1, + ResourceDescription::Preload, + &segment_stream + ); + Check(new_res); + + // + // Fre Mem + // + Unregister_Pointer(filename); + delete filename; + Unregister_Object(skl_file); + delete skl_file; + Unregister_Object(segment_namelist); + delete segment_namelist; + + return new_res->resourceID; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + JointedMover::InitDestroyedVideoObjectNames( + MemoryStream *mem_stream, + NotationFile *model_file, + CString page_name, + const ResourceDirectories *directories + ) +{ + Check(model_file); + Check(mem_stream); + + NameList *skl_namelist = model_file->MakeEntryList("video","destroyed"); + Register_Object(skl_namelist); + int entry_count = skl_namelist->EntryCount(); + *mem_stream << entry_count; + + if (!entry_count) + { + Unregister_Object(skl_namelist); + delete skl_namelist; + return True; + } + Verify(entry_count); + + NameList::Entry *skl_entry = skl_namelist->GetFirstEntry(); + while(skl_entry) + { + CString entry_name = skl_entry->GetName(); + EntitySegment::SkeletonType skeleton_type; + if (! entry_name.Compare("destroyed") ) + { + skeleton_type = EntitySegment::SkeletonType_N; + } + else if (! entry_name.Compare("destroyeds") ) + { + skeleton_type = EntitySegment::SkeletonType_S; + } + else if (! entry_name.Compare("destroyedt") ) + { + skeleton_type = EntitySegment::SkeletonType_T; + } + else if (! entry_name.Compare("destroyedo") ) + { + skeleton_type = EntitySegment::SkeletonType_O; + } + else if (! entry_name.Compare("destroyeda") ) + { + skeleton_type = EntitySegment::SkeletonType_A; + } + else if (! entry_name.Compare("destroyedb") ) + { + skeleton_type = EntitySegment::SkeletonType_B; + } + else if (! entry_name.Compare("destroyedc") ) + { + skeleton_type = EntitySegment::SkeletonType_C; + } + else if (! entry_name.Compare("destroyedd") ) + { + skeleton_type = EntitySegment::SkeletonType_D; + } + *mem_stream << skeleton_type; + + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Get the video object filename + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + CString short_skl_filename = skl_entry->GetChar(); + CString skl_filename = + MakePathedFilename(directories->videoDirectory, short_skl_filename); + + NotationFile *skl_file = new NotationFile(skl_filename); + Register_Object(skl_file); + if (!skl_file->PageCount()) + { + DEBUG_STREAM << skl_filename << " is empty or missing!"<GetEntry( + page_name, + "Object", + &c_name + ) + ) + { + video_object_name = c_name; + } + else + { + video_object_name = "None"; + } + *mem_stream << video_object_name; + + Unregister_Object(skl_file); + delete skl_file; + + skl_entry = skl_entry->GetNextEntry(); + } + Unregister_Object(skl_namelist); + delete skl_namelist; + + return True; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + JointedMover::InitVideoObjectNames( + MemoryStream *mem_stream, + NotationFile *model_file, + CString page_name, + const ResourceDirectories *directories + ) +{ + Check(model_file); + Check(mem_stream); + + NameList *skl_namelist = model_file->MakeEntryList("video","skeleton"); + Register_Object(skl_namelist); + int entry_count = skl_namelist->EntryCount(); + + Verify(entry_count); + *mem_stream << entry_count; + + NameList::Entry *skl_entry = skl_namelist->GetFirstEntry(); + while(skl_entry) + { + CString entry_name = skl_entry->GetName(); + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Write out the skeleton type + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + EntitySegment::SkeletonType skeleton_type; + if (! entry_name.Compare("skeleton") ) + { + skeleton_type = EntitySegment::SkeletonType_N; + } + else if (! entry_name.Compare("skeletons") ) + { + skeleton_type = EntitySegment::SkeletonType_S; + } + else if (! entry_name.Compare("skeletont") ) + { + skeleton_type = EntitySegment::SkeletonType_T; + } + else if (! entry_name.Compare("skeletono") ) + { + skeleton_type = EntitySegment::SkeletonType_O; + } + else if (! entry_name.Compare("skeletona") ) + { + skeleton_type = EntitySegment::SkeletonType_A; + } + else if (! entry_name.Compare("skeletonb") ) + { + skeleton_type = EntitySegment::SkeletonType_B; + } + else if (! entry_name.Compare("skeletonc") ) + { + skeleton_type = EntitySegment::SkeletonType_C; + } + else if (! entry_name.Compare("skeletond") ) + { + skeleton_type = EntitySegment::SkeletonType_D; + } + *mem_stream << skeleton_type; + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Get the video object filename + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + CString short_skl_filename = skl_entry->GetChar(); + CString skl_filename = + MakePathedFilename(directories->videoDirectory, short_skl_filename); + + NotationFile *skl_file = new NotationFile(skl_filename); + Register_Object(skl_file); + if (!skl_file->PageCount()) + { + DEBUG_STREAM << skl_filename << " is empty or missing!"<GetEntry( + page_name, + "Object", + &c_name + ) + ) + { + video_object_name = c_name; + } + else + { + video_object_name = "None"; + } + *mem_stream << video_object_name; + + Unregister_Object(skl_file); + delete skl_file; + + skl_entry = skl_entry->GetNextEntry(); + } + Unregister_Object(skl_namelist); + delete skl_namelist; + + return True; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +int + JointedMover::GetDamageZoneIndex( + CString damage_zone_name, + NotationFile *skl_file + ) +{ + int damage_zone_index = -1; + + NameList *name_list = skl_file->MakeEntryList("DamageZones", "dz_"); + Register_Object(name_list); + + if (name_list->EntryCount() == 0) + { + DEBUG_STREAM << "No dZones listed in DamageZones Page"<GetFirstEntry(); + while(damage_zone) + { + if(strcmp(damage_zone->GetName(), damage_zone_name) == 0) + { + Convert_From_Ascii(damage_zone->GetChar(), &damage_zone_index); + Unregister_Object(name_list); + delete name_list; + return damage_zone_index; + } + damage_zone = damage_zone->GetNextEntry(); + } + Unregister_Object(name_list); + delete name_list; + + return damage_zone_index; + +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +int + JointedMover::GetSegmentIndex( + CString segment_name, + NotationFile *skl_file + ) +{ + int segment_index=-1; + + char page_name[128]; + NameList *page_list = skl_file->MakePageList(); + Register_Object(page_list); + NameList::Entry *current_entry = page_list->GetFirstEntry(); + while(current_entry) + { + Str_Copy( + page_name, + current_entry->GetName(), + sizeof(page_name) + ); + if( + (strcmp(page_name, "LAB_ONLY") == 0) || + (strcmp(page_name,"DamageZones") == 0) + ) + { + current_entry = current_entry->GetNextEntry(); + continue; + } + ++segment_index; + if((strcmp(page_name, segment_name) == 0)) + { + Unregister_Object(page_list); + delete page_list; + return segment_index; + } + current_entry = current_entry->GetNextEntry(); + } + Unregister_Object(page_list); + delete page_list; + return -1; +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +JointedMover* + JointedMover::Make(JointedMover::MakeMessage *creation_message) +{ + return new JointedMover(creation_message, DefaultData); +} +//########################################################################## +//########################## Animation ############################### +//########################################################################## + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +AnimationInstance::AnimationInstance(JointedMover *jointed_mover) +{ + Check_Pointer(this); + Check(jointed_mover); + + lerpToZero = False; + moverToAnimate = jointed_mover; + jointSubToAnimate = jointed_mover->GetJointSubsystem(); + animationResource = NULL; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + AnimationInstance::SetAnimation( + ResourceDescription::ResourceID animation_number, + JointedMover::AnimationCallback finished_callback + ) +{ + Check_Pointer(this); + finishedCallback = finished_callback; + currentTime = 0.0f; + currentFrame = 0; + + if (animationResource) + { + Check(animationResource); + animationResource->Unlock(); + } + animationResource = + application->GetResourceFile()->FindResourceDescription( + animation_number + ); + Check(animationResource); + animationResource->Lock(); + int *animation_data = (int*)animationResource->resourceAddress; + Check_Pointer(animation_data); + frameCount = animation_data[0]; + jointCount = animation_data[1]; + footStepThreshold = (float *)&animation_data[2]; + jointIndices = &animation_data[3]; + frameStart = (Scalar*)(jointIndices + jointCount); + + keyFrames = frameStart + frameCount; + currentFrameTo = keyFrames; + void* to; + to = keyFrames; + // + //----------------------------------- + // find the end of the keyframes data + //----------------------------------- + // + for(int ii=0;iiGetJoint(jointIndices[jj])->GetJointType()) + { + case Joint::BallTranslationJointType: + { + to = (void *)((char *)to+sizeof(EulerAngles)); + to = (void *)((char *)to+sizeof(Vector3D)); + break; + } + case Joint::HingeXJointType: + case Joint::HingeYJointType: + case Joint::HingeZJointType: + { + to = (void *)((char *)to+sizeof(Hinge)); + break; + } + case Joint::BallJointType: + to = (void *)((char *)to+sizeof(EulerAngles)); + break; + } + } + + // + // + // This should be contained in the keyframes + // + // keyJointPos = (Vector3D*)(keyFrames + jointCount*frameCount); + + rootTranslations = (Vector3D*)(to); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +AnimationInstance::~AnimationInstance() +{ + if (animationResource) + { + Check(animationResource); + animationResource->Unlock(); + } +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Scalar + AnimationInstance::Animate(Scalar time_slice, Logical move_joints) +{ + Check(this); + + // + //-------------------------------------------------------------------------- + // Find the frame to lerp towards. As each frame boundary is crossed, set + // the joints to the position of that boundary and adjust the remaining time + // to lerp + //-------------------------------------------------------------------------- + // + int i; + // + //----------------------------------------- + // This void * can point to any joint type + //----------------------------------------- + // + void + *to; + + + Scalar frame_time = currentTime + time_slice; + Scalar movement = 0.0f; + + // + //------------------------------------------------------------- + // to points to the place in the memory stream we left off at + // last time we were on this loop + //------------------------------------------------------------- + // + to = currentFrameTo; + Joint *current_joint; + + while (currentFrame < frameCount) + { + if (frame_time < frameStart[currentFrame]) + { + break; + } + for (i=0; iGetJoint(jointIndices[i]); + Check(current_joint); + switch(current_joint->GetJointType()) + { + case Joint::BallTranslationJointType: + { + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Only modify the joint if the value has changed + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + if (current_joint->GetEulerAngles() != *(EulerAngles*)to) + { + if (move_joints) + { + current_joint->SetRotation(*(EulerAngles*)to); + } + } + to = (void *)((char *)to+sizeof(EulerAngles)); + + if (current_joint->GetTranslation() != *(Point3D*)to) + { + if (move_joints) + { + current_joint->SetTranslation(*(Point3D*)to); + } + } + + to = (void *)((char *)to+sizeof(Vector3D)); + break; + } + case Joint::HingeXJointType: + case Joint::HingeYJointType: + case Joint::HingeZJointType: + { + if (current_joint->GetHinge() != *(Hinge*) to) + { + if (move_joints) + { + current_joint->SetHinge(*(Hinge*) to); + } + } + to = (void *)((char *)to+sizeof(Hinge)); + break; + } + case Joint::BallJointType: + + if (current_joint->GetEulerAngles() != *(EulerAngles*)to) + { + if (move_joints) + { + current_joint->SetRotation(*(EulerAngles*)to); + } + } + to = (void *)((char *)to+sizeof(EulerAngles)); + break; + case Joint::StaticJointType: + break; + } + } + movement += + (frameStart[currentFrame] - currentTime) + * rootTranslations[currentFrame].z; + currentTime = frameStart[currentFrame]; + ++currentFrame; + } + + // + //---------------------------------------------------------------------- + // We we have run off the end of the animation, trigger the callback and + // return + //---------------------------------------------------------------------- + // + if (currentFrame == frameCount) + { + + movement += + (moverToAnimate->*finishedCallback)( + animationResource->resourceID, + frame_time - frameStart[frameCount - 1], + move_joints + ); + return movement; + } + + currentFrameTo = to; + // + //------------------------------------------------------- + // Set up to lerp the rotations between to two key frames + //------------------------------------------------------- + // + Verify(!Small_Enough(frameStart[currentFrame] - currentTime)); + Scalar delta = + (frame_time - currentTime)/(frameStart[currentFrame] - currentTime); + + for (i=0; iGetJoint(jointIndices[i]); + Check(current_joint); + switch(current_joint->GetJointType()) + { + case Joint::BallTranslationJointType: + { + Point3D new_trans; + EulerAngles new_angles; + + new_angles.Lerp( + current_joint->GetEulerAngles(), + *(EulerAngles*)to, + delta + ); + if (current_joint->GetEulerAngles() != new_angles) + { + if (move_joints) + { + current_joint->SetRotation(new_angles); + } + } + to = (void *)((char *)to+sizeof(EulerAngles)); + + new_trans.Lerp( + current_joint->GetTranslation(), + *(Vector3D*)to, + delta + ); + if (current_joint->GetTranslation() != new_trans) + { + if (move_joints) + { + current_joint->SetTranslation(new_trans); + } + } + to = (void *)((char *)to+sizeof(Vector3D)); + break; + } + case Joint::HingeZJointType: + case Joint::HingeYJointType: + case Joint::HingeXJointType: + { + Hinge new_hinge; + new_hinge.Lerp( + current_joint->GetHinge(), + *(Hinge*)to, + delta + ); + if (current_joint->GetRadians() != new_hinge.rotationAmount) + { + if (move_joints) + { + current_joint->SetRotation(new_hinge.rotationAmount); + } + } + to = (void *)((char *)to+sizeof(Hinge)); + + break; + } + case Joint::BallJointType: + { + EulerAngles new_angles; + new_angles.Lerp( + current_joint->GetEulerAngles(), + *(EulerAngles*)to, + delta + ); + if (current_joint->GetEulerAngles() != new_angles) + { + if (move_joints) + { + current_joint->SetRotation(new_angles); + } + } + + to = (void *)((char *)to+sizeof(EulerAngles)); + + break; + } + case Joint::StaticJointType: + break; + } + } + movement += (frame_time - currentTime) * rootTranslations[currentFrame].z; + currentTime = frame_time; + return movement; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// + +Logical + AnimationInstance::LerpToPose(Scalar time_slice, Scalar time_to_lerp, Logical move_joints) +{ + Check(this); + + int i; + // + //----------------------------------------- + // This void * can point to any joint type + //----------------------------------------- + // + void + *to; + + + if (!lerpToZero) + { + lerpToZero = True; + deltaTime = time_to_lerp; + } + + Scalar delta = time_slice / deltaTime; + + + // + //------------------------------------------------------------- + // to points to the place in the memory stream we left off at + // last time we were on this loop + //------------------------------------------------------------- + // + + to = currentFrameTo; + Joint *current_joint; + + if (move_joints) + { + for (i=0; iGetJoint(jointIndices[i]); + Check(current_joint); + switch(current_joint->GetJointType()) + { + case Joint::BallTranslationJointType: + { + Point3D new_trans; + EulerAngles new_angles; + + new_angles.Lerp( + current_joint->GetEulerAngles(), + *(EulerAngles*)to, + delta + ); + if (current_joint->GetEulerAngles() != new_angles) + { + current_joint->SetRotation(new_angles); + } + to = (void *)((char *)to+sizeof(EulerAngles)); + + new_trans.Lerp( + current_joint->GetTranslation(), + *(Vector3D*)to, + delta + ); + if (current_joint->GetTranslation() != new_trans) + { + current_joint->SetTranslation(new_trans); + } + to = (void *)((char *)to+sizeof(Vector3D)); + break; + } + case Joint::HingeZJointType: + case Joint::HingeYJointType: + case Joint::HingeXJointType: + { + Hinge new_hinge; + new_hinge.Lerp( + current_joint->GetHinge(), + *(Hinge*)to, + delta + ); + if (current_joint->GetRadians() != new_hinge.rotationAmount) + { + current_joint->SetRotation(new_hinge.rotationAmount); + } + to = (void *)((char *)to+sizeof(Hinge)); + + break; + } + case Joint::BallJointType: + { + EulerAngles new_angles; + new_angles.Lerp( + current_joint->GetEulerAngles(), + *(EulerAngles*)to, + delta + ); + if (current_joint->GetEulerAngles() != new_angles) + { + current_joint->SetRotation(new_angles); + } + + to = (void *)((char *)to+sizeof(EulerAngles)); + + break; + } + case Joint::StaticJointType: + break; + } + } + + } + + deltaTime -= time_slice; + if (deltaTime <= 0.0f) + { + lerpToZero = False; + return False; + } + return True; + +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// + +Logical + AnimationInstance::LerpToRest(Scalar time_slice, Scalar time_to_lerp, Logical move_joints) +{ + + + if (!lerpToZero) + { + lerpToZero = True; + deltaTime = time_to_lerp; + } + + Scalar delta = time_slice / deltaTime; + + if (move_joints) + { + EulerAngles zero_euler(0.0f, 0.0f, 0.0f); + Hinge zero_hingeX(0.0f, X_Axis); + Hinge zero_hingeY(0.0f, Y_Axis); + Hinge zero_hingeZ(0.0f, Z_Axis); + Vector3D zero_vector(0.0f, 0.0f, 0.0f); + + for (int i=0; iGetJoint(jointIndices[i]); + Check(current_joint); + switch(current_joint->GetJointType()) + { + case Joint::BallTranslationJointType: + { + EulerAngles new_angles; + new_angles.Lerp( + current_joint->GetEulerAngles(), + zero_euler, + delta + ); + if (current_joint->GetEulerAngles() != new_angles) + { + current_joint->SetRotation(new_angles); + } + + Point3D new_trans; + + new_trans.Lerp( + current_joint->GetTranslation(), + zero_vector, + delta + ); + if (current_joint->GetTranslation() != new_trans) + { + current_joint->SetTranslation(new_trans); + } + break; + } + case Joint::HingeXJointType: + { + Hinge new_hinge; + + new_hinge.Lerp( + current_joint->GetHinge(), + zero_hingeX, + delta + ); + if(current_joint->GetRadians() != new_hinge.rotationAmount) + { + current_joint->SetRotation(new_hinge.rotationAmount); + } + break; + + } + case Joint::HingeYJointType: + { + Hinge new_hinge; + new_hinge.Lerp( + current_joint->GetHinge(), + zero_hingeY, + delta + ); + if(current_joint->GetRadians() != new_hinge.rotationAmount) + { + current_joint->SetRotation(new_hinge.rotationAmount); + } + break; + } + case Joint::HingeZJointType: + { + Hinge new_hinge; + new_hinge.Lerp( + current_joint->GetHinge(), + zero_hingeZ, + delta + ); + if(current_joint->GetRadians() != new_hinge.rotationAmount) + { + current_joint->SetRotation(new_hinge.rotationAmount); + } + break; + } + case Joint::BallJointType: + { + EulerAngles new_angles; + + new_angles.Lerp( + current_joint->GetEulerAngles(), + zero_euler, + delta + ); + if (current_joint->GetEulerAngles() != new_angles) + { + current_joint->SetRotation(new_angles); + } + + break; + } + case Joint::StaticJointType: + break; + } + } + } + deltaTime -= time_slice; + if (deltaTime <= 0.0f) + { + lerpToZero = False; + return False; + } + return True; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// + +void + AnimationInstance::SnapToRest(Logical move_joints) +{ + + if (!move_joints) + { + return; + } + + EulerAngles zero_euler(0.0f, 0.0f, 0.0f); + Hinge zero_hingeX(0.0f, X_Axis); + Hinge zero_hingeY(0.0f, Y_Axis); + Hinge zero_hingeZ(0.0f, Z_Axis); + Point3D zero_point(0.0f, 0.0f, 0.0f); + + for (int i=0; iGetJoint(jointIndices[i]); + Check(current_joint); + switch(current_joint->GetJointType()) + { + case Joint::BallTranslationJointType: + { + current_joint->SetRotation(zero_euler); + current_joint->SetTranslation(zero_point); + break; + } + case Joint::HingeXJointType: + { + current_joint->SetHinge(zero_hingeX); + break; + } + case Joint::HingeYJointType: + { + current_joint->SetHinge(zero_hingeY); + break; + } + case Joint::HingeZJointType: + { + current_joint->SetHinge(zero_hingeZ); + break; + } + case Joint::BallJointType: + { + current_joint->SetRotation(zero_euler); + break; + } + case Joint::StaticJointType: + break; + } + } +} +//########################################################################## +//############## Sketon Notation file utilities #################### +//########################################################################## + + +int + Get_Active_Joint_Count(NotationFile *skl_file) +{ + NameList *namelist = skl_file->MakePageList("joint"); + Register_Object(namelist); + NameList::Entry *entry = namelist->GetFirstEntry(); + + int count = 0; + + while (entry) + { + ++count; + entry = entry->GetNextEntry(); + } + + Unregister_Object(namelist); + delete namelist; + + return count; +} + +Logical + JointedMover::TestInstance() const +{ + return IsDerivedFrom(ClassDerivations); +} + diff --git a/CODE/RP/MUNGA/JMOVER.HPP b/CODE/RP/MUNGA/JMOVER.HPP new file mode 100644 index 0000000..123cc41 --- /dev/null +++ b/CODE/RP/MUNGA/JMOVER.HPP @@ -0,0 +1,270 @@ +//===========================================================================// +// 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(JMOVER_HPP) +# define JMOVER_HPP + +# if !defined(MOVER_HPP) +# include +# endif + +# if !defined(JOINT_HPP) +# include +# endif + +# if !defined(SLOT_HPP) +# include +# endif + +# if !defined(SEGMENT_HPP) +# include +# endif + +//############################################################################## +//######################## JointedMover ################################## +//############################################################################## + + class JointedMover: + public Mover + { + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Shared Data support + // + public: + static Derivation ClassDerivations; + + static SharedData DefaultData; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Message Support + // + #if 0 + private: + static const HandlerEntry MessageHandlerEntries[]; + + protected: + static MessageHandlerSet MessageHandlers; + #endif + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Attribute Support + // + public: + enum{ + SegmentCountAttributeID = Mover::NextAttributeID, + SegmentTableAttributeID, + JointSubsystemAttributeID, + NextAttributeID + }; + + private: + static const IndexEntry AttributePointers[]; + + protected: + static AttributeIndexSet AttributeIndex; + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Segment Support + // + public: + + EntitySegment::SegmentTable + segmentTable; + + int + segmentCount; + + EntitySegment* + GetSegmentFromDamageZone(CString damage_zone); + + EntitySegment* + GetSegment(CString segment_name); + + EntitySegment* + GetSegment(int segment_index) + { + Check(this); + EntitySegment::SegmentTableIterator iterator(segmentTable); + return iterator.GetNth(segment_index); + } + + SlotOf + jointSubsystem; + + JointSubsystem* + GetJointSubsystem() + { + Check(this); return jointSubsystem.GetCurrent(); + } + + void + GetSegmentToWorld( + EntitySegment &my_segment, + LinearMatrix *transform + ); + + protected: + void + InitializeChildPointers(EntitySegment *current_segment); + + void + CalcSegmentTransforms(EntitySegment *final_segment); + + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Animation Support + // + public: + + typedef + Scalar (JointedMover::*AnimationCallback)( + ResourceDescription::ResourceID animation_number, + Scalar carryover, + Logical animate_joints + ); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Model Support + // + public: + typedef void + (JointedMover::*Performance)(Scalar time_slice); + + void + SetPerformance(Performance performance) + { + Check(this); + activePerformance = (Simulation::Performance)performance; + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Construction and Destruction + // + public: + + static JointedMover* + Make(MakeMessage *creation_message); + + static int + CreateDamageZoneStream ( + ResourceFile *resource_file, + const char *model_name, + NotationFile *model_file, + const ResourceDirectories *directories + ); + + static ResourceDescription::ResourceID + CreateSkeletonStream( + ResourceFile *resource_file, + const char *model_name, + NotationFile *model_file, + const ResourceDirectories *directories + ); + + static Logical + InitDestroyedVideoObjectNames( + MemoryStream *segment_stream, + NotationFile *model_file, + CString page_name, + const ResourceDirectories *directories + ); + + + static Logical + InitVideoObjectNames( + MemoryStream *segment_stream, + NotationFile *model_file, + CString page_name, + const ResourceDirectories *directories + ); + static int + GetSegmentIndex( + CString segment_name, + NotationFile *skl_file + ); + + static int + GetDamageZoneIndex( + CString damage_zone_name, + NotationFile *skl_file + ); + + JointedMover( + MakeMessage *creation_message, + SharedData &virtual_data + ); + ~JointedMover(); + + Logical + TestInstance() const; + }; + +//########################################################################## +//########################## Animation ############################### +//########################################################################## + + class AnimationInstance: + public Plug + { + private: + Logical lerpToZero; + Scalar deltaTime; + public: + AnimationInstance(JointedMover *jointed_mover); + ~AnimationInstance(); + + Scalar Animate(Scalar time_slice, Logical move_joints = True); + + Logical + LerpToPose(Scalar time_slice, Scalar time_to_lerp, Logical move_joints = True); + + Logical LerpToRest(Scalar time_slice, Scalar time_to_lerp, Logical move_joints = True); + + void SnapToRest(Logical move_joints = True); + + void + SetAnimation( + ResourceDescription::ResourceID animation_number, + JointedMover::AnimationCallback finished_callback + ); + + int + frameCount, + jointCount, + *jointIndices; + float + *footStepThreshold; + Scalar + *frameStart; + + void + *keyFrames; + + void + *currentFrameTo; + + Vector3D + *keyJointPos, + *rootTranslations; + + JointSubsystem + *jointSubToAnimate; + + protected: + int currentFrame; + JointedMover *moverToAnimate; + ResourceDescription *animationResource; + JointedMover::AnimationCallback finishedCallback; + Scalar currentTime; + }; + +#endif diff --git a/CODE/RP/MUNGA/JOINT.CPP b/CODE/RP/MUNGA/JOINT.CPP new file mode 100644 index 0000000..d9f8deb --- /dev/null +++ b/CODE/RP/MUNGA/JOINT.CPP @@ -0,0 +1,534 @@ +//============================================================================// +// File: joint.cc // +// Project: Munga // // +// Contents: CLASS Joint Subsystem Imp // +// Implementation details of Class Joint // +//----------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ------------------------------------------------------------// +// 05/11/95 JM Initial coding. // +//----------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. All Rights reserved // +// PROPRIETARY AND CONFIDENTIAL // +//============================================================================// + +#include +#pragma hdrstop + +#if !defined(JOINT_HPP) +# include +#endif + +#if !defined(JMOVER_HPP) +# include +#endif + +//########################################################################## +//######################## BallTranslation ############################ +//########################################################################## + +#if defined(USE_SIGNATURE) + int + Is_Signature_Bad(const volatile BallTranslation *) + { + return False; + } +#endif + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +BallTranslation::BallTranslation() +{ + ballJoint = EulerAngles::Identity; + jointTranslation = Point3D::Identity; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +BallTranslation::BallTranslation(const BallTranslation &new_ball) +{ + Check(&new_ball); + ballJoint = new_ball.ballJoint; + jointTranslation = new_ball.jointTranslation; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + BallTranslation::TestInstance() const +{ + return True; +} + +//########################################################################## +//########################## Joint ############################### +//########################################################################## + +#if defined(USE_SIGNATURE) + int + Is_Signature_Bad(const volatile Joint *) + { + return False; + } +#endif + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Joint::Joint(JointSubsystem *subsystem) +{ + Check(subsystem); + + jointType = StaticJointType; + jointModified = True; + ballJoint = NULL; + jointSubsystem = subsystem; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Joint::Joint( + JointSubsystem *subsystem, + JointType joint_type +) +{ + Check(subsystem); + + jointType = joint_type; + jointModified = True; + jointSubsystem = subsystem; + ballJoint = NULL; + + switch(joint_type) + { + case Joint::BallJointType: + ballJoint = new EulerAngles(EulerAngles::Identity); + Register_Object(ballJoint); + break; + + case Joint::BallTranslationJointType: + ballTranslationJoint = new BallTranslation; + Register_Object(ballTranslationJoint); + break; + + case Joint::HingeXJointType: + hingeJoint = new Hinge(X_Axis, 0.0f); + Register_Object(hingeJoint); + break; + + case Joint::HingeYJointType: + hingeJoint = new Hinge(Y_Axis, 0.0f); + Register_Object(hingeJoint); + break; + + case Joint::HingeZJointType: + hingeJoint = new Hinge(Z_Axis, 0.0f); + Register_Object(hingeJoint); + break; + + case Joint::StaticJointType: + break; + +#if DEBUG_LEVEL>0 + default: + Fail("Unsupported jointType!\n"); + break; +#endif + } +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Joint::Joint(const Joint &new_joint) +{ + jointModified = True; + jointSubsystem = new_joint.jointSubsystem; + jointType = new_joint.jointType; + ballJoint = NULL; + + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Create a new joint of correct size + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + switch(new_joint.jointType) + { + case HingeXJointType: + case HingeYJointType: + case HingeZJointType: + hingeJoint = new Hinge(*new_joint.hingeJoint); + Register_Object(hingeJoint); + break; + + case BallJointType: + ballJoint = new EulerAngles(*new_joint.ballJoint); + Register_Object(ballJoint); + break; + + case BallTranslationJointType: + ballTranslationJoint = + new BallTranslation(*new_joint.ballTranslationJoint); + Register_Object(ballTranslationJoint); + break; + + case StaticJointType: + break; + +#if DEBUG_LEVEL>0 + default: + Fail("Unsupported jointType!\n"); + break; +#endif + } +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Joint& + Joint::operator=(const Joint &new_joint) +{ + Check(this); + + jointModified = True; + + // + //--------------------------------------------------- + // If not same kind of joint free up old joint memory + //--------------------------------------------------- + // + if(new_joint.jointType != jointType) + { + switch(jointType) + { + case HingeXJointType: + case HingeYJointType: + case HingeZJointType: + Unregister_Object(hingeJoint); + delete hingeJoint; + break; + + case BallJointType: + Unregister_Object(ballJoint); + delete ballJoint; + break; + + case BallTranslationJointType: + Unregister_Object(ballTranslationJoint); + delete ballTranslationJoint; + break; + + case StaticJointType: + break; + +#if DEBUG_LEVEL>0 + default: + Fail("Unsupported jointType!\n"); + break; +#endif + } + jointType = new_joint.jointType; + + // + //----------------------------------- + // Create a new joint of correct size + //----------------------------------- + // + switch(new_joint.jointType) + { + case HingeXJointType: + case HingeYJointType: + case HingeZJointType: + hingeJoint = new Hinge(*new_joint.hingeJoint); + Register_Object(hingeJoint); + break; + + case BallJointType: + ballJoint = new EulerAngles(*new_joint.ballJoint); + Register_Object(ballJoint); + break; + + case BallTranslationJointType: + ballTranslationJoint = + new BallTranslation(*new_joint.ballTranslationJoint); + Register_Object(ballTranslationJoint); + break; + + case StaticJointType: + break; + +#if DEBUG_LEVEL>0 + default: + Fail("Unsupported jointType!\n"); + break; +#endif + } + } + + // + //----------------------------------- + // Otherwise simply copy all the data + //----------------------------------- + // + else + { + switch(new_joint.jointType) + { + case HingeXJointType: + case HingeYJointType: + case HingeZJointType: + hingeJoint = new_joint.hingeJoint; + break; + + case BallJointType: + ballJoint = new_joint.ballJoint; + break; + + case BallTranslationJointType: + ballTranslationJoint = new_joint.ballTranslationJoint; + break; + + case StaticJointType: + break; + +#if DEBUG_LEVEL>0 + default: + Fail("Unsupported jointType!\n"); + break; +#endif + } + } + return (*this); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Joint::~Joint() +{ + switch(jointType) + { + case HingeXJointType: + case HingeYJointType: + case HingeZJointType: + Unregister_Object(hingeJoint); + delete hingeJoint; + break; + + case BallJointType: + Unregister_Object(ballJoint); + delete ballJoint; + break; + + case BallTranslationJointType: + Unregister_Object(ballTranslationJoint); + delete ballTranslationJoint; + break; + + case StaticJointType: + break; + +#if DEBUG_LEVEL>0 + default: + Fail("Unsupported jointType!\n"); + break; +#endif + } +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +const EulerAngles& + Joint::GetEulerAngles() +{ + Check(this); + switch(jointType) + { + case BallJointType: + return *ballJoint; + case BallTranslationJointType: + return ballTranslationJoint->GetEulerAngles(); +#if DEBUG_LEVEL>0 + default: + Fail("Joint must be a BallJoint of BallTranslationJoint \n"); + break; +#endif + } + return *ballJoint; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + Joint::SetHinge(const Hinge &new_hinge) +{ + Check(this); + if(*hingeJoint != new_hinge) + { + jointModified = True; + (*hingeJoint) = new_hinge; + Verify(jointSubsystem); + jointSubsystem->ModifyJoints(); + } +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + Joint::SetRotation(const EulerAngles &new_angles) +{ + Check(this); + + switch(jointType) + { + case BallJointType: + if ((*ballJoint) != new_angles) + { + (*ballJoint) = new_angles; +Joint_Modified: + jointModified = True; + Verify(jointSubsystem); + jointSubsystem->ModifyJoints(); + } + break; + + case BallTranslationJointType: + if (ballTranslationJoint->GetEulerAngles() != new_angles) + { + ballTranslationJoint->SetEulerAngles(new_angles); + goto Joint_Modified; + } + break; + +#if DEBUG_LEVEL>0 + default: + Fail("Joint must be a Ball or Ball Translation Joint! \n"); + break; +#endif + } +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + Joint::SetRotation(const Radian &new_radian) +{ + Check(this); + + Verify ( + (jointType == HingeXJointType ) || + (jointType == HingeYJointType ) || + (jointType == HingeZJointType ) + ); + if(hingeJoint->rotationAmount != new_radian) + { + hingeJoint->rotationAmount = new_radian; + jointModified = True; + Verify(jointSubsystem); + jointSubsystem->ModifyJoints(); + } +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + Joint::SetTranslation(const Point3D &new_trans) +{ + Check(this); + jointModified = True; + + Verify(jointType == BallTranslationJointType); + if (ballTranslationJoint->GetTranslation() != new_trans) + { + ballTranslationJoint->SetTranslation(new_trans); + jointModified = True; + Verify(jointSubsystem); + jointSubsystem->ModifyJoints(); + } +} + +//############################################################################# +// Shared Data Support +// +JointSubsystem::SharedData + JointSubsystem::DefaultData( + JointSubsystem::ClassDerivations, + JointSubsystem::MessageHandlers, + JointSubsystem::AttributeIndex, + JointSubsystem::StateCount + ); + +Derivation + JointSubsystem::ClassDerivations( + Subsystem::ClassDerivations, + "JointSubsystem" + ); + +#if 0 +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + JointSubsystem::JointSubsystemSimulation(Scalar ) +{ + Check(this); + + + Joint *current_joint; + JointTableIterator iterator(jointTable); + + while ((current_joint = iterator.ReadAndNext() )!= NULL) + { + if (current_joint->IsJointModified()) + { + JointedMover *jointed_mover = Cast_Object( + JointedMover*, + GetEntity() + ); + jointed_mover->ForceSegmentTransformUpdate(); + break; + } + } + +} +#endif + +//############################################################################# +// Constructer/Destructor Support +// + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +JointSubsystem::JointSubsystem( + Entity *owner, + int subsystem_ID, + SharedData &shared_data +): + Subsystem( + owner, + subsystem_ID, + "Joint Subsystem", + JointSubsystemClassID, + shared_data + ), + jointTable(NULL, False) +{ + damageZone = new DamageZone(this, 0); + Register_Object(damageZone); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +JointSubsystem::~JointSubsystem() +{ + JointTableIterator iterator(jointTable); + iterator.DeletePlugs(); + Unregister_Object(damageZone); + delete damageZone; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + JointSubsystem::TestInstance() const +{ + return IsDerivedFrom(ClassDerivations); +} + + diff --git a/CODE/RP/MUNGA/JOINT.HPP b/CODE/RP/MUNGA/JOINT.HPP new file mode 100644 index 0000000..da929ba --- /dev/null +++ b/CODE/RP/MUNGA/JOINT.HPP @@ -0,0 +1,297 @@ +//============================================================================// +// File: joint.hh // +// Project: Munga // // +// Contents: Sets up Joint Subsystem // +// Definition of Class Joint // +//----------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ------------------------------------------------------------// +// 05/11/95 JM Initial coding. // +//----------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. All Rights reserved // +// PROPRIETARY AND CONFIDENTIAL // +//============================================================================// +#if !defined JOINT_HPP +# define JOINT_HPP + +# if !defined(SUBSYSTM_HPP) +# include +# endif + +# if !defined(ROTATION_HPP) +# include +# endif + +# if !defined(MEMSTRM_HPP) +# include +# endif + + + //##################### Forward Class Declarations ########################## + class Entity; + class Joint; + class JointSubsystem; + + //########################################################################## + //######################## BallTranslation ############################ + //########################################################################## + + class BallTranslation + { + friend class Joint; + + #if defined(USE_SIGNATURE) + friend int + Is_Signature_Bad(const volatile BallTranslation *); + #endif + + protected: + Point3D + jointTranslation; + EulerAngles + ballJoint; + + const EulerAngles& + GetEulerAngles() + {Check(this); return ballJoint;} + const Point3D& + GetTranslation() + {Check(this); return jointTranslation;} + + void + SetTranslation(const Point3D &new_trans) + {Check(this); jointTranslation = new_trans; } + void + SetEulerAngles(const EulerAngles &new_angles) + {Check(this); ballJoint = new_angles;} + + BallTranslation(); + BallTranslation(const BallTranslation &new_ball); + + Logical + TestInstance() const; + + BallTranslation& + operator=(const BallTranslation &new_ball) + { + ballJoint = new_ball.ballJoint; + jointTranslation = new_ball.jointTranslation; + return (*this); + } + }; + +//########################################################################## +//############################ Joint ################################# +//########################################################################## + + class Joint : + public Plug + { + friend class BallTranslation; + + #if defined(USE_SIGNATURE) + friend int + Is_Signature_Bad(const volatile Joint *); + #endif + + public: + enum JointType { + NULLJointType = -1, + HingeXJointType, + HingeYJointType, + HingeZJointType, + StaticJointType, + BallJointType, + BallTranslationJointType + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Constructors + // + public: + Joint(JointSubsystem *subsystem); + Joint(const Joint &new_joint); + Joint( + JointSubsystem *subsystem, + JointType joint_type + ); + ~Joint(); + + Joint& + operator=(const Joint &new_joint); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Joint Data + // + protected: + union { + EulerAngles *ballJoint; + Hinge *hingeJoint; + BallTranslation *ballTranslationJoint; + }; + + JointType + jointType; + Logical + jointModified; + JointSubsystem + *jointSubsystem; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Reading Joints + // + public: + const Hinge& + GetHinge() + {Check(this); return *hingeJoint;} + + const EulerAngles& + GetEulerAngles(); + + const Point3D& + GetTranslation() + { + Check(this); + Verify(jointType == BallTranslationJointType); + return ballTranslationJoint->GetTranslation(); + } + + Radian + GetRadians() const + { + Check(this); + Verify ( + (jointType == HingeXJointType ) || + (jointType == HingeYJointType ) || + (jointType == HingeZJointType ) + ); + return hingeJoint->rotationAmount; + } + + JointType + GetJointType() const + {Check(this); return jointType; } + + Logical + IsJointModified() const + {Check(this); return jointModified;} + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Writing Joints + // + public: + void + SetHinge(const Hinge &new_hinge); + + void + SetRotation(const EulerAngles &new_angles); + + void + SetRotation(const Radian &new_radian); + + void + SetTranslation(const Point3D &new_trans); + + void + JointModified(Logical new_value=True) + {Check(this); jointModified = new_value;} + }; + +//############################################################################## +//####################### Class JointSubsystem ################################# +//############################################################################## + +class JointSubsystem : + public Subsystem +{ + friend Joint; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Shared Data Support + // + public: + static Derivation ClassDerivations; + static SharedData DefaultData; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Model Support + // + typedef void + (JointSubsystem::*Performance)(Scalar time_slice); + + void + SetPerformance(Performance performance) + { + Check(this); + activePerformance = (Simulation::Performance)performance; + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // local Support + // + public: + + typedef TableOf + JointTable; + + typedef TableIteratorOf + JointTableIterator; + + Joint* + GetJoint(int joint_index) + { + Check(this); + JointTableIterator iterator(jointTable); + return iterator.GetNth(joint_index); } + + void + AddJoint( + int joint_index, + Joint *new_joint + ) + {Check(this); jointTable.AddValue(new_joint,joint_index);} + + int + GetJointCount() + { + Check(this); + JointTableIterator iterator(jointTable); + return iterator.GetSize(); + } + + Logical + AreJointsModified() + {Check(this); return jointsModified;} + void + ModifyJoints(Logical modified=True) + {Check(this); jointsModified=modified;} + + protected: + + JointTable + jointTable; + Logical + jointsModified; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Construction / Destruction Support + // + + public: + + JointSubsystem( + Entity *owner, + int subsystem_ID, + SharedData &shared_data = DefaultData + ); + ~JointSubsystem(); + + void + InitializeJoint(int joint_index, Joint::JointType joint_type); + + Logical + TestInstance() const; +}; + + +#endif diff --git a/CODE/RP/MUNGA/LAMP.CPP b/CODE/RP/MUNGA/LAMP.CPP new file mode 100644 index 0000000..587ac45 --- /dev/null +++ b/CODE/RP/MUNGA/LAMP.CPP @@ -0,0 +1,380 @@ +//===========================================================================// +// File: gauge.cc // +// Project: MUNGA Brick: Gauges // +// Contents: Interface specification for Gauges // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- -----------------------------------------------------------// +// 02/10/95 CPB Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. All rights reserved // +// PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(LAMP_HPP) +# include +#endif + +//######################################################################### +//############################# LampManager ############################### +//######################################################################### +LampManager::LampManager(): + lampList(NULL), + activeLampList(NULL), + inactiveLampList(NULL) +{ + previousModeMask = (ModeMask) 0; + Check_Fpu(); +} + +LampManager::~LampManager() +{ + Check(this); + RemoveAllLamps(); + Check_Fpu(); +} + +Logical + LampManager::TestInstance() const +{ + return True; +} + +void + LampManager::Update(ModeMask current_mode_mask) +{ + Check(this); + //--------------------------------------------------------------- + // If the modeMask has changed, update the active/inactive lists. + //--------------------------------------------------------------- + if (previousModeMask != current_mode_mask) + { + previousModeMask = current_mode_mask; + + ActivateLamps(current_mode_mask); + DeactivateLamps(current_mode_mask); + } + //----------------------------------------------------------------- + // Process all active lamps + //----------------------------------------------------------------- + ChainIteratorOf + i(activeLampList); + Lamp + *lamp_pointer; + + while ((lamp_pointer=i.ReadAndNext()) != NULL) + { + Check(lamp_pointer); + lamp_pointer->Update(); + } + Check_Fpu(); +} + +void + LampManager::ActivateLamps(ModeMask current_mode_mask) +{ + Check(this); + //----------------------------------------------------------- + // Test the lamps in the 'inactive' list. If any of them + // have bits in their modeMask corresponding to the + // new mode mask, move them to the 'active' list. + //----------------------------------------------------------- + ChainIteratorOf + i(inactiveLampList); + Lamp + *lamp_pointer; + + while ((lamp_pointer=i.GetCurrent()) != NULL) + { + Check(lamp_pointer); + //----------------------------------- + // Became active? + //----------------------------------- + if (lamp_pointer->modeMask & current_mode_mask) + { + //----------------------------------- + // Yes, move to 'active' list + //----------------------------------- + i.Remove(); + activeLampList.Add(lamp_pointer); + //----------------------------------- + // Cause lamp to update itself + //----------------------------------- + lamp_pointer->Update(True); // force notification of state change + } + else + { + //----------------------------------- + // No, try the next one + //----------------------------------- + i.Next(); + } + } + Check_Fpu(); +} + +void + LampManager::DeactivateLamps(ModeMask current_mode_mask) +{ + Check(this); + //--------------------------------------------------------------- + // Test the lamps in the 'active' list. If any of them do NOT + // have bits in their modeMask corresponding to the new mode + // mask, move them to the 'inactive' list. + //--------------------------------------------------------------- + ChainIteratorOf + i(activeLampList); + Lamp + *lamp_pointer; + + while ((lamp_pointer=i.GetCurrent()) != NULL) + { + Check(lamp_pointer); + //----------------------------------- + // Became inactive? + //----------------------------------- + if (!(lamp_pointer->modeMask & current_mode_mask)) + { + //----------------------------------- + // Yes, move to 'inactive' list + //----------------------------------- + i.Remove(); + inactiveLampList.Add(lamp_pointer); + } + else + { + //----------------------------------- + // No, try the next one + //----------------------------------- + i.Next(); + } + } + Check_Fpu(); +} + +Lamp* + LampManager::FindLamp(LampID lamp_id, ModeMask mode_mask) +{ + Check(this); + + //--------------------------------------------------------------- + // Search for lamp with both proper ID and modeMask + //--------------------------------------------------------------- + ChainIteratorOf + i(lampList); + Lamp + *lamp_pointer; + + while ((lamp_pointer=i.ReadAndNext()) != NULL) + { + Check(lamp_pointer); + + if (lamp_pointer->lampID == lamp_id) + { + if (lamp_pointer->modeMask == mode_mask) + { + Check_Fpu(); + return lamp_pointer; + } + } + } + Check_Fpu(); + return NULL; +} + +void + LampManager::AddLamp(Lamp *new_lamp) +{ + Check(this); + // + // Don't call Check(new_lamp) here! + // The Lamp creator calls AddLamp before the lamp is fully built! + // + Check_Pointer(new_lamp); + + lampList.Add(new_lamp); + + if (new_lamp->modeMask & previousModeMask) + { + activeLampList.Add(new_lamp); + } + else + { + inactiveLampList.Add(new_lamp); + } + + Check_Fpu(); +} + +void + LampManager::RemoveLamp(LampID lamp_id, ModeMask mode_mask) +{ + Check(this); + Lamp + *lamp_pointer = FindLamp(lamp_id, mode_mask); + if (lamp_id != NULL) + { + Unregister_Object(lamp_pointer); + delete lamp_pointer; + } + + Check_Fpu(); +} + +void + LampManager::RemoveAllLamps() +{ + Check(this); + //------------------------------------------- + // Delete all lamps + //------------------------------------------- + ChainIteratorOf + i(lampList); + Lamp + *lamp_pointer; + + while ((lamp_pointer=i.ReadAndNext()) != NULL) + { + Check(lamp_pointer); + Unregister_Object(lamp_pointer); + delete lamp_pointer; + } + Check_Fpu(); +} + +//######################################################################### +//################################# Lamp ################################## +//######################################################################### +Lamp::Lamp( + LampID lamp_id, + ModeMask mode_mask, + LampManager *lamp_manager +): + Node(Gauge::GaugeClassID) +{ + Check(lamp_manager); + Verify(mode_mask != (ModeMask) 0); // if zero, it would NEVER execute + + lampID = lamp_id; + modeMask = mode_mask; + previousState = LampStateUndefined; + manager = lamp_manager; + alertActive = 0; + + manager->AddLamp(this); + Check_Fpu(); +} + +Lamp::~Lamp() +{ + Check(this); + Check_Fpu(); +} + +Logical + Lamp::TestInstance() const +{ + return True; +} + +void + Lamp::SetState(LampState new_state) +{ + Check(this); + + if (new_state != previousState) + { + previousState = new_state; + //--------------------------------------------- + // Update if mode is currently allowed + //--------------------------------------------- + Check(manager); + if (modeMask & manager->previousModeMask) + { + NotifyOfStateChange(); + } + } + Check_Fpu(); +} + +void + Lamp::SetAlertState(Logical alert_state) +{ + Check(this); + + if (alert_state) + { + ++alertActive; + } + else + { + --alertActive; + if (alertActive < 0) + { + alertActive = 0; + } + } + + //--------------------------------------------- + // Update if mode is currently allowed + //--------------------------------------------- + Check(manager); + if (modeMask & manager->GetPreviousModeMask()) + { + NotifyOfStateChange(); + } + Check_Fpu(); +} + +void + Lamp::Update(Logical /*force_notification*/) +{ + Fail("Lamp::Update method not overridden!"); +} + +void + Lamp::NotifyOfStateChange() +{ + Check(this); + Check_Fpu(); +} + +//######################################################################### +//############################## GraphicLamp ############################## +//######################################################################### +GraphicLamp::GraphicLamp( + LampID lamp_id, + ModeMask mode_mask, + LampManager *lamp_manager, + GaugeRenderer *the_renderer, + int graphics_port_number +): + Lamp(lamp_id, mode_mask, lamp_manager), + renderer(the_renderer), + localView( + the_renderer == NULL ? + NULL : + the_renderer->GetGraphicsPort(graphics_port_number) + ) +{ + Check_Fpu(); +} + +GraphicLamp::~GraphicLamp() +{ + Check(this); + Check_Fpu(); +} + +Logical + GraphicLamp::TestInstance() const +{ + Check(&localView); + Check_Fpu(); + return Lamp::TestInstance(); +} + + diff --git a/CODE/RP/MUNGA/LATTICE.CPP b/CODE/RP/MUNGA/LATTICE.CPP new file mode 100644 index 0000000..68a12a5 --- /dev/null +++ b/CODE/RP/MUNGA/LATTICE.CPP @@ -0,0 +1,718 @@ +//===========================================================================// +// File: lattice.cc // +// Project: MUNGA Brick: lattice Manager // +// Contents: // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 12/20/94 ECH Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(BOXSOLID_HPP) +# include +#endif + +#if !defined(COLLORGN_HPP) +# include +#endif + +#if !defined(APP_HPP) + #include +#endif + +#if !defined(NOTATION_HPP) + #include +#endif + +//############################################################################# +//########################### LatticeZone ############################### +//############################################################################# + +LatticeZone::LatticeZone(const ExtentBox &extents): + boundingBox(extents, this) +{ +} + +LatticeZone::~LatticeZone() +{ +} + +//############################################################################# +//######################### EnvironmentZone ############################# +//############################################################################# + +EnvironmentZone::EnvironmentZone( + const ExtentBox &extents, + const Environment &the_environment +): + LatticeZone(extents) +{ + environment = the_environment; +} + +EnvironmentZone::~EnvironmentZone() +{ +} + +Logical + EnvironmentZone::TestInstance() const +{ + LatticeZone::TestInstance(); + Check(&environment); + return True; +} + +//############################################################################# +//########################### InterestZone ############################## +//############################################################################# + +InterestZone::InterestZone( + const ExtentBox &extents, + InterestZoneID interest_zone_id, + BoxedSolidTree *collision_root, + EnvironmentZone *environment_zone, + BoundingBoxTree *existance_root +): + LatticeZone(extents) +{ + Verify(interest_zone_id != NullInterestZoneID); + Check(collision_root); + Check(environment_zone); + Check(existance_root); + + interestZoneID = interest_zone_id; + collisionRoot = collision_root; + environmentZone = environment_zone; + collisionOrigin = NULL; + existanceRoot = existance_root; +} + +InterestZone::~InterestZone() +{ + // + // HACK - delete collision tree + // + Unregister_Object(collisionRoot); + delete collisionRoot; + collisionRoot = NULL; + + // + // HACK - delete environment zone + // + Unregister_Object(environmentZone); + delete environmentZone; + environmentZone = NULL; + + // + // HACK - delete existance tree + // + Unregister_Object(existanceRoot); + delete existanceRoot; + existanceRoot = NULL; + + // + // HACK - delete collision origin + // + if (collisionOrigin != NULL) + { + Check(application); + Check(application->GetInterestManager()); + application->GetInterestManager()->OrphanInterestOrigin(collisionOrigin); + CollisionOrigin *col_origin = collisionOrigin; + collisionOrigin = NULL; + Unregister_Object(col_origin); + delete col_origin; + } +} + +Logical + InterestZone::TestInstance() const +{ + LatticeZone::TestInstance(); + + Verify(interestZoneID != NullInterestZoneID); + + if (collisionOrigin != NULL) + { + Check(collisionOrigin); + } + if (collisionRoot != NULL) + { + Check(collisionRoot); + } + if (environmentZone != NULL) + { + Check(environmentZone); + } + if (existanceRoot != NULL) + { + Check(existanceRoot); + } + + return True; +} + +//############################################################################# +//########################### InterestArena ############################# +//############################################################################# + +InterestArena::InterestArena(InterestZone *interest_zone): + interestZoneSocket(NULL) +{ + Check(interest_zone); + Check(&interestZoneSocket); + interestZoneSocket.Add(interest_zone); +} + +InterestArena::~InterestArena() +{ + // + // deconnect from interest zone + // + Check(&interestZoneSocket); + #if DEBUG_LEVEL>0 + InterestZone *interest_zone = interestZoneSocket.GetCurrent(); + Check(interest_zone); + #endif + interestZoneSocket.Remove(); + + #if 0 + // + // If the interest zone is not in any interest arenas then delete + // + PlugIterator iterator(interest_zone); + Check(&iterator); + if (iterator.GetSize() == 0) + { + Unregister_Object(interest_zone); + delete interest_zone; + } + #endif +} + +Logical + InterestArena::TestInstance() const +{ + Node::TestInstance(); + Check(&interestZoneSocket); + return True; +} + +//############################################################################# +//########################### LatticeManager ############################ +//############################################################################# + +LatticeManager::LatticeManager() +{ +} + +LatticeManager::~LatticeManager() +{ +} + +//############################################################################# +//####################### InterestLatticeManager ######################## +//############################################################################# + +// +//############################################################################# +//############################################################################# +// +InterestLatticeManager::InterestLatticeManager(): + interestZoneSocket(NULL) +{ +} + +// +//############################################################################# +//############################################################################# +// +InterestLatticeManager::~InterestLatticeManager() +{ + InterestZone *interest_zone; + + Check(&interestZoneSocket); + if ((interest_zone = interestZoneSocket.GetCurrent()) != NULL) + { + Unregister_Object(interest_zone); + delete interest_zone; + } +} + +// +//############################################################################# +//############################################################################# +// +Logical + InterestLatticeManager::TestInstance() const +{ + Node::TestInstance(); + Check(&interestZoneSocket); + return True; +} + +// +//############################################################################# +//############################################################################# +// +InterestArena* + InterestLatticeManager::MakeInterestArena( + InterestZoneID, + InterestType, + InterestDepth + ) +{ + Check(this); + + // + //--------------------------------------------------------------------- + // HACK - See if the one interest zone has been created + //--------------------------------------------------------------------- + // + InterestZone *interest_zone; + + if ((interest_zone = interestZoneSocket.GetCurrent()) == NULL) + { + // + //--------------------------------------------------------------------- + // Create the one environment + //--------------------------------------------------------------------- + // + EnvironmentZone *environment_zone; + + // + // Make the memory stream + // + Check(application); + ResourceFile *res_file = application->GetResourceFile(); + Check(res_file); + + ResourceDescription *resource_description = + res_file->FindResourceDescription( + "EnvironmentZone", + ResourceDescription::EnvironmentZoneResourceType + ); + if (resource_description) + { + Check(resource_description); + resource_description->Lock(); + + MemoryStream + memory_stream( + resource_description->resourceAddress, + resource_description->resourceSize + ); + + // + // Get the construction arguments + // + ExtentBox extent_box; + Environment environment; + + memory_stream >> extent_box >> environment; + + resource_description->Unlock(); + + // + // Make the environment zone + // + environment_zone = new EnvironmentZone(extent_box, environment); + Register_Object(environment_zone); + } + + // + //--------------------------------------------------------------------- + // Create the one interest zone + //--------------------------------------------------------------------- + // + resource_description = + res_file->FindResourceDescription( + "InterestZone", + ResourceDescription::InterestZoneResourceType + ); + if (resource_description) + { + Check(resource_description); + resource_description->Lock(); + + MemoryStream + memory_stream( + resource_description->resourceAddress, + resource_description->resourceSize + ); + + // + // Get the construction arguments + // + ExtentBox extent_box; + InterestZoneID interest_zone_ID; + CString map_resource_name; + + memory_stream >> extent_box >> interest_zone_ID >> map_resource_name; + + resource_description->Unlock(); + + // + // Make the collision tree root + // + BoxedSolidTree *collision_root = new BoxedSolidTree; + Register_Object(collision_root); + + // + // Make the existance tree root + // + BoundingBoxTree *existance_root = new BoundingBoxTree; + Register_Object(existance_root); + + // + // Make the interest zone + // + interest_zone = + new InterestZone( + extent_box, + interest_zone_ID, + collision_root, + environment_zone, + existance_root + ); + Register_Object(interest_zone); + } + + interestZoneSocket.Add(interest_zone); + Verify(interest_zone == interestZoneSocket.GetCurrent()); + } + Check(interest_zone); + + // + //--------------------------------------------------------------------- + // Create an interest arena pointing at this zone + //--------------------------------------------------------------------- + // + return new InterestArena(interest_zone); +} +#if 0 +InterestArena* + InterestLatticeManager::MakeInterestArena( + InterestZoneID, + InterestType, + InterestDepth + ) +{ + Check(this); + + // + //--------------------------------------------------------------------- + // HACK - Create one interest zone + //--------------------------------------------------------------------- + // + InterestZone *interest_zone; + + if ((interest_zone = interestZoneSocket.GetCurrent()) == NULL) + { + const Scalar min_dimension = -100000.0f; + const Scalar max_dimension = 100000.0f; + + Vector3D min_vector(min_dimension, min_dimension, min_dimension); + Vector3D max_vector(max_dimension, max_dimension, max_dimension); + ExtentBox big_extent(min_vector, max_vector); + + // + // Pick one interest zone id + // + InterestZoneID interest_zone_ID = NullInterestZoneID + 1; + + // + // Set up one environment + // + Environment environment; + EnvironmentZone *environment_zone; + + environment.gravityConstant = 6.5f; + environment.airDensity = 1.0f; + environment.windVelocity = Vector3D::Identity; + environment.ambientTemperature = 294.26f; // Seventy degrees farenheit + + environment_zone = new EnvironmentZone(big_extent, environment); + Register_Object(environment_zone); + + // + // Load entire collision tree + // + BoxedSolidTree *collision_root = new BoxedSolidTree; + Register_Object(collision_root); + + // + // Make one interest zone for everything + // + interest_zone = + new InterestZone( + big_extent, + interest_zone_ID, + collision_root, + environment_zone + ); + Register_Object(interest_zone); + + interestZoneSocket.Add(interest_zone); + Verify(interest_zone == interestZoneSocket.GetCurrent()); + } + Check(interest_zone); + + // + //--------------------------------------------------------------------- + // Create an interest arena pointing at this zone + //--------------------------------------------------------------------- + // + return new InterestArena(interest_zone); +} +#endif + +#if 0 +// +//############################################################################# +//############################################################################# +// +void + InterestLatticeManager::DestroyInterestArena(InterestArena *interest_arena) +{ + Check(this); + Check(interest_arena); + + // + //--------------------------------------------------------------------- + // Delete the interest arena + //--------------------------------------------------------------------- + // + Unregister_Object(interest_arena); + delete interest_arena; +} +#endif + +// +//############################################################################# +//############################################################################# +// +InterestZoneID + InterestLatticeManager::SearchForEntityInterestZone( + InterestZoneID, + const EntityID& + ) +{ + Check(this); + Check(interestZoneSocket.GetCurrent()); + return interestZoneSocket.GetCurrent()->GetInterestZoneID(); +} + +// +//############################################################################# +//############################################################################# +// +InterestZone* + InterestLatticeManager::GetInterestZone(InterestZoneID) +{ + Check(this); + return interestZoneSocket.GetCurrent(); +} + +// +//############################################################################# +//############################################################################# +// +void + InterestLatticeManager::CreateZoneResources( + ResourceFile *resource_file, + NotationFile *zone_notation_file + ) +{ + Check(zone_notation_file); + + // + //--------------------------------------------------------------------- + // HACK - Create the one environment zone resource + //--------------------------------------------------------------------- + // + { + // + // Environment zone construction arguments + // + ExtentBox extent_box; + Environment environment; + + // + // Get environment zone construction arguments + // + const char *contents; + + #if DEBUG_LEVEL>0 + int ret = zone_notation_file->GetEntry( + "EnvironmentZone", + "extent_box", + &contents + ); + Verify(ret); + #else + zone_notation_file->GetEntry( + "EnvironmentZone", + "extent_box", + &contents + ); + #endif + Convert_From_Ascii(contents, &extent_box); + + #if DEBUG_LEVEL>0 + ret = zone_notation_file->GetEntry( + "EnvironmentZone", + "environment", + &contents + ); + Verify(ret); + #else + zone_notation_file->GetEntry( + "EnvironmentZone", + "environment", + &contents + ); + #endif + Convert_From_Ascii(contents, &environment); + + // + // Create environment zone memory stream + // + DynamicMemoryStream environment_zone_memory_stream; + + environment_zone_memory_stream << extent_box << environment; + + // + // Add environment zone resource + // + CString environment_zone_resource_name("EnvironmentZone"); + + #if DEBUG_LEVEL>0 + ResourceDescription *res_description = + resource_file->AddResourceMemoryStream( + environment_zone_resource_name, + ResourceDescription::EnvironmentZoneResourceType, + 1, + ResourceDescription::Preload, + &environment_zone_memory_stream + ); + Check(res_description); + #else + resource_file->AddResourceMemoryStream( + environment_zone_resource_name, + ResourceDescription::EnvironmentZoneResourceType, + 1, + ResourceDescription::Preload, + &environment_zone_memory_stream + ); + #endif + } + + // + //--------------------------------------------------------------------- + // HACK - Create the one interest zone resource + //--------------------------------------------------------------------- + // + { + // + // Interest zone construction arguments + // + ExtentBox extent_box; + InterestZoneID interest_zone_ID; + CString map_resource_name; + + // + // Get interest zone construction arguments + // + const char *contents; + + #if DEBUG_LEVEL>0 + int ret = zone_notation_file->GetEntry( + "InterestZone", + "extent_box", + &contents + ); + Verify(ret); + #else + zone_notation_file->GetEntry( + "InterestZone", + "extent_box", + &contents + ); + #endif + Convert_From_Ascii(contents, &extent_box); + + #if DEBUG_LEVEL>0 + ret = zone_notation_file->GetEntry( + "InterestZone", + "interest_zone_ID", + &contents + ); + Verify(ret); + #else + zone_notation_file->GetEntry( + "InterestZone", + "interest_zone_ID", + &contents + ); + #endif + Convert_From_Ascii(contents, &interest_zone_ID); + + #if DEBUG_LEVEL>0 + ret = zone_notation_file->GetEntry( + "InterestZone", + "map_resource_name", + &contents + ); + Verify(ret); + #else + zone_notation_file->GetEntry( + "InterestZone", + "map_resource_name", + &contents + ); + #endif + map_resource_name = contents; + + // + // Create interest zone memory stream + // + DynamicMemoryStream interest_zone_memory_stream; + + interest_zone_memory_stream << extent_box << interest_zone_ID; + interest_zone_memory_stream << map_resource_name; + + // + // Add interest zone resource + // + CString interest_zone_resource_name("InterestZone"); + + #if DEBUG_LEVEL>0 + ResourceDescription *res_description = + resource_file->AddResourceMemoryStream( + interest_zone_resource_name, + ResourceDescription::InterestZoneResourceType, + 1, + ResourceDescription::Preload, + &interest_zone_memory_stream + ); + Check(res_description); + #else + resource_file->AddResourceMemoryStream( + interest_zone_resource_name, + ResourceDescription::InterestZoneResourceType, + 1, + ResourceDescription::Preload, + &interest_zone_memory_stream + ); + #endif + } +} + diff --git a/CODE/RP/MUNGA/LATTICE.HPP b/CODE/RP/MUNGA/LATTICE.HPP new file mode 100644 index 0000000..64ebd70 --- /dev/null +++ b/CODE/RP/MUNGA/LATTICE.HPP @@ -0,0 +1,512 @@ +//===========================================================================// +// File: lattice.hpp // +// Project: MUNGA Brick: Lattice Manager // +// Contents: // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 12/20/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(LATTICE_HPP) +# define LATTICE_HPP + +# if !defined(NODE_HPP) +# include +# endif + +# if !defined(BNDGBOX_HPP) +# include +# endif + +# if !defined(ENVIRNMT_HPP) +# include +# endif + +# if !defined(NETWORK_HPP) +# include +# endif + +# if !defined(SLOT_HPP) +# include +# endif + + class BoundingBoxTree; + + //########################################################################## + //######## Support types for InterestOrigin & InterestManager ######## + //########################################################################## + + enum InterestType + { + VisualInterestType, + AudioInterestType, + GaugeInterestType, + CollisionInterestType + }; + + typedef int InterestDepth; + + const InterestDepth DefaultInterestDepth = 1; + + enum InterestPriority + { + LowInterestPriority = 0, + HighInterestPriority + }; + + //########################################################################## + //########################### LatticeZone ############################ + //########################################################################## + + class ExtentBox; + + // + // HACK - Lattice zones support being connected to each in variously + // interesting ways. For now there is only one. + // + + class LatticeZone: + public Plug + { + public: + LatticeZone(const ExtentBox &extents); + ~LatticeZone(); + + private: + TaggedBoundingBoxOf + boundingBox; + }; + + //########################################################################## + //######################### EnvironmentZone ########################## + //########################################################################## + + class EnvironmentZone: + public LatticeZone + { + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Constructor, Destructor, and Testing + // + public: + EnvironmentZone( + const ExtentBox &extents, + const Environment &environment + ); + ~EnvironmentZone(); + + Logical + TestInstance() const; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // HACK - Accessors + // + public: + Environment* + GetEnvironment() + {return &environment;} + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Private data + // + private: + Environment + environment; + }; + + //########################################################################## + //########################### InterestZone ########################### + //########################################################################## + + class BoxedSolidTree; + class CollisionOrigin; + + // + // HACK - Right now the interest zone holds data that would normally + // be within its own zone, i.e., environment zones, collision zones, + // audio zones, etc..., The interest zone should hold sockets to + // zones which are included in its interesting "domain" + // + + class InterestZone: + public LatticeZone + { + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Constructor, Destructor, and Testing + // + public: + InterestZone( + const ExtentBox &extents, + InterestZoneID interest_zone_id, + BoxedSolidTree *collision_root, + EnvironmentZone *environment_zone, + BoundingBoxTree *existance_root + ); + ~InterestZone(); + + Logical + TestInstance() const; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // HACK - Accessors + // + public: + InterestZoneID + GetInterestZoneID(); + BoxedSolidTree* + GetCollisionRoot(); + Environment* + GetEnvironment(); + BoundingBoxTree* + GetExistanceRoot(); + + void + AdoptCollisionOrigin(CollisionOrigin *collision_origin); + CollisionOrigin* + GetCollisionOrigin(); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Private data + // + private: + InterestZoneID + interestZoneID; + BoxedSolidTree + *collisionRoot; + EnvironmentZone + *environmentZone; + CollisionOrigin + *collisionOrigin; + BoundingBoxTree + *existanceRoot; + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~ InterestZone inlines ~~~~~~~~~~~~~~~~~~~~~~~~~ + + inline InterestZoneID + InterestZone::GetInterestZoneID() + { + Check(this); + return interestZoneID; + } + + inline BoxedSolidTree* + InterestZone::GetCollisionRoot() + { + Check(this); + return collisionRoot; + } + + inline Environment* + InterestZone::GetEnvironment() + { + Check(this); + Check(environmentZone); + return environmentZone->GetEnvironment(); + } + + inline BoundingBoxTree* + InterestZone::GetExistanceRoot() + { + Check(this); + return existanceRoot; + } + + inline void + InterestZone::AdoptCollisionOrigin(CollisionOrigin *collision_origin) + { + Check(this); + Verify(collisionOrigin == NULL); + Check_Pointer(collision_origin); + collisionOrigin = collision_origin; + } + + inline CollisionOrigin* + InterestZone::GetCollisionOrigin() + { + Check(this); + return collisionOrigin; + } + + //########################################################################## + //########################### InterestArena ########################## + //########################################################################## + + // + // HACK - The interest arena maintains sets of interest zones. Since + // we only have one interest zone at present the interest arena has + // only the capability to reference one interest zone + // + + class InterestArena: + public Node + { + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Constructor, Destructor, and Testing + // + public: + InterestArena(InterestZone *interest_zone); + ~InterestArena(); + + Logical + TestInstance() const; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // HACK - Accessors + // + public: + InterestZoneID + GetInterestZoneID(); + BoxedSolidTree* + GetCollisionRoot(); + Environment* + GetEnvironment(); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Interest Zone and Entity support + // + public: + // + //-------------------------------------------------------------- + // Boolean IncludesInterestZone(InterestArena, InterestZoneID) + // + // Description: + // Does the interest arena include the interest zone? + // + // Parameters: + // InterestArena - reference to the interest arena. + // InterestZoneID - id of the interest zone. + // + // Returns: + // True if it does, otherwise False + //-------------------------------------------------------------- + // + + // + //-------------------------------------------------------------- + // Boolean IncludesPosition(InterestArena, 3DPosition) + // + // Description: + // Does the interest arena include the spatial position? + // + // Parameters: + // InterestArena - reference to the interest arena. + // 3DPosition- the spatial position. + // + // Returns: + // True if it does, otherwise False + //-------------------------------------------------------------- + // + + // + //-------------------------------------------------------------- + // ArenaEntityList GetArenaList(InterestArena) + // + // Description: + // Returns a list of resident entities and associated attributes + // based on interest zone connectivity. The actual return will + // probably by a safe iterator, meaning that it is resilient to + // changes in the underlying data structures. + // + // Parameters: + // Reference to the interest arena. + // + // Return: + // ArenaEntityList - a list of resident entities and extracted + // data from interest zone connectivity. + //-------------------------------------------------------------- + // + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Private data + // + private: + SlotOf + interestZoneSocket; + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~ InterestArena inlines ~~~~~~~~~~~~~~~~~~~~~~~~ + + inline InterestZoneID + InterestArena::GetInterestZoneID() + { + Check(&interestZoneSocket); + Check(interestZoneSocket.GetCurrent()); + return interestZoneSocket.GetCurrent()->GetInterestZoneID(); + } + + inline BoxedSolidTree* + InterestArena::GetCollisionRoot() + { + Check(&interestZoneSocket); + Check(interestZoneSocket.GetCurrent()); + return interestZoneSocket.GetCurrent()->GetCollisionRoot(); + } + + inline Environment* + InterestArena::GetEnvironment() + { + Check(&interestZoneSocket); + Check(interestZoneSocket.GetCurrent()); + return interestZoneSocket.GetCurrent()->GetEnvironment(); + } + + //########################################################################## + //########################### LatticeManager ######################### + //########################################################################## + + // + // HACK - The lattice manager managers connected lattices of zones + // of a particular type + // + + class LatticeManager: + public Node + { + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Constructor, Destructor, and Testing + // + public: + LatticeManager(); + ~LatticeManager(); + }; + + //########################################################################## + //####################### InterestLatticeManager ##################### + //########################################################################## + + class EntityID; + class ResourceFile; + + // + // HACK - the interest lattice manager manages the lattice of interest + // zones. Right now, is stubbed out for one interest zone. + // + + class InterestLatticeManager: + public LatticeManager + { + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Constructor, Destructor, and Testing + // + public: + InterestLatticeManager(); + ~InterestLatticeManager(); + + Logical + TestInstance() const; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Interest arena and entity support + // + public: + // + //-------------------------------------------------------------- + // InterestArena + // MakeInterestArena(OriginInterestZoneID, Type, DepthCalibration) + // + // Description: + // Establishes an interest arena the locus of which is an interest + // zone, The arena is established with a type and depth + // specification (see interest manager). + // + // Parameters: + // OriginInterestZoneID- id of the interest zone. + // Type - a type of interest. + // DepthCalibration - a specification of the "depth" or "cost" associated + // with extent of the arena. + // + // Return: + // InterestArena - a reference to the created interest arena. + //-------------------------------------------------------------- + // + InterestArena* + MakeInterestArena( + InterestZoneID, + InterestType, + InterestDepth + ); + + #if 0 + // + //-------------------------------------------------------------- + // DestroyInterestArena(InterestArena) + // + // Description: + // Destroys the interest arena. + // + // Parameters: + // InterestArena - Reference to the interest arena. + // UpdateInterestArena(InterestArena, DepthCalibration) + // + // Description: + // Updates the interest arenas internal data structures. This method + // is called by the interest manager. + // + // Parameters: + // InterestArena - Reference to the interest arena. + // DepthCalibration - new depth of arena extent. + //-------------------------------------------------------------- + // + void + DestroyInterestArena(InterestArena*); + #endif + + // + //-------------------------------------------------------------- + // InterestZoneID + // SearchForEntityInterestZone(OriginInterestZoneID, EntityID) + // + // Description: + // If an entity has changed interest zones (its current location + // is not within the bounding volume of it interest zone) then + // this method searches prior adjacent interest zones for the entity. + // + // Parameters: + // OriginInterestZoneID - id of the interest zone to begin the + // search from. + // EntityID - id of the entity. + // + // Return: + // A reference to the interest zone if found, otherwise NULL. + //-------------------------------------------------------------- + // + InterestZoneID + SearchForEntityInterestZone( + InterestZoneID old_interest_zone_ID, + const EntityID &entityID + ); + + // + //-------------------------------------------------------------- + // InterestZoneID + //-------------------------------------------------------------- + // + InterestZone* + GetInterestZone(InterestZoneID interest_zone_ID); + + // + //-------------------------------------------------------------- + // HACK ****************** + //-------------------------------------------------------------- + // + static void + CreateZoneResources( + ResourceFile *resource_file, + NotationFile *zone_notation_file + ); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Private data + // + private: + SlotOf + interestZoneSocket; + }; + +#endif + diff --git a/CODE/RP/MUNGA/LINE.CPP b/CODE/RP/MUNGA/LINE.CPP new file mode 100644 index 0000000..b2f9f3f --- /dev/null +++ b/CODE/RP/MUNGA/LINE.CPP @@ -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 +#pragma hdrstop + +#if !defined(LINE_HPP) +# include +#endif + +#if !defined(PLANE_HPP) +# include +#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 +} + diff --git a/CODE/RP/MUNGA/LINE.HPP b/CODE/RP/MUNGA/LINE.HPP new file mode 100644 index 0000000..87e65d3 --- /dev/null +++ b/CODE/RP/MUNGA/LINE.HPP @@ -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 +# 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 diff --git a/CODE/RP/MUNGA/LINK.CPP b/CODE/RP/MUNGA/LINK.CPP new file mode 100644 index 0000000..a9ef7e9 --- /dev/null +++ b/CODE/RP/MUNGA/LINK.CPP @@ -0,0 +1,128 @@ +//===========================================================================// +// 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 +#pragma hdrstop + +#if !defined(LINK_HPP) + #include +#endif + +#if !defined(PLUG_HPP) + #include +#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) +{ + Check(plug); + if ((nextLink = plug->linkHead) != NULL) + { + Check(nextLink); + nextLink->prevLink = this; + } + this->prevLink = NULL; + plug->linkHead = this; +} diff --git a/CODE/RP/MUNGA/LINK.HPP b/CODE/RP/MUNGA/LINK.HPP new file mode 100644 index 0000000..dfd1066 --- /dev/null +++ b/CODE/RP/MUNGA/LINK.HPP @@ -0,0 +1,99 @@ +//===========================================================================// +// File: link.hh // +// Project: MUNGA Brick: Connection Library // +// Contents: Interface specification of base Link // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 10/19/94 ECH Initial coding. // +// 10/20/94 JMA Fixed style stuff. // +// 10/23/94 ECH Added greater deletion safety // +// 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 // +//===========================================================================// + +#if !defined(LINK_HPP) +# define LINK_HPP + +# if !defined(STYLE_HPP) +# include +# endif + + class Socket; + class Plug; + class PlugIterator; + class Node; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Link ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class Link SIGNATURED + { + friend class PlugIterator; + + public: + // + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // + virtual + ~Link(); + Logical + TestInstance() const; + + // + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // + Socket* + GetSocket() + {return socket;} + Plug* + GetPlug() + {return plug;} + + protected: + // + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // + Link( + Socket *socket, + Plug *plug + ); + + // + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // + void + ReleaseFromPlug(); + + // + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // + Socket *socket; + Plug *plug; + + private: + // + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // + void + AddToPlug(Plug *plug); + + // + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // + Link *nextLink; + Link *prevLink; + }; + +#endif diff --git a/CODE/RP/MUNGA/LINMTRX.CPP b/CODE/RP/MUNGA/LINMTRX.CPP new file mode 100644 index 0000000..574e171 --- /dev/null +++ b/CODE/RP/MUNGA/LINMTRX.CPP @@ -0,0 +1,165 @@ +//===========================================================================// +// File: linmtrx.cc // +// Project: MUNGA Brick: Math Library // +// Contents: Implementation details for the linear matrices // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 11/20/94 JMA Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(LINMTRX_HPP) +# include +#endif + +#if !defined(MATRIX_HPP) +# include +#endif + +#if !defined(LINMTRX_HPP) + #include +#endif + +const LinearMatrix + LinearMatrix::Identity(True); + +// +//########################################################################### +//########################################################################### +// +LinearMatrix& + LinearMatrix::operator=(const AffineMatrix &m) +{ + // + // Make sure to test linearness on m + // + AffineMatrix::operator=(m); + return *this; +} + +// +//########################################################################### +//########################################################################### +// +LinearMatrix& + LinearMatrix::operator=(const Matrix4x4 &m) +{ + // + // Make sure to test linearness on m + // + AffineMatrix::operator=(m); + return *this; +} + +// +//########################################################################### +//########################################################################### +// +LinearMatrix& + LinearMatrix::operator=(const TransposedMatrix &m) +{ + // + // Make sure to test linearness on m + // + AffineMatrix::operator=(m); + return *this; +} + +// +//########################################################################### +//########################################################################### +// +LinearMatrix& + LinearMatrix::Invert(const LinearMatrix& Source) +{ + + // + //----------------------------------------- + // First, transpose the 3x3 rotation matrix + //----------------------------------------- + // + (*this)(0,0) = Source(0,0); + (*this)(0,1) = Source(1,0); + (*this)(0,2) = Source(2,0); + (*this)(1,0) = Source(0,1); + (*this)(1,1) = Source(1,1); + (*this)(1,2) = Source(2,1); + (*this)(2,0) = Source(0,2); + (*this)(2,1) = Source(1,2); + (*this)(2,2) = Source(2,2); + + // + //---------------------------- + // Now run the offsets through + //---------------------------- + // + (*this)(3,0) = + -Source(3,0)*Source(0,0) + -Source(3,1)*Source(0,1) + -Source(3,2)*Source(0,2); + (*this)(3,1) = + -Source(3,0)*Source(1,0) + -Source(3,1)*Source(1,1) + -Source(3,2)*Source(1,2); + (*this)(3,2) = + -Source(3,0)*Source(2,0) + -Source(3,1)*Source(2,1) + -Source(3,2)*Source(2,2); + return *this; +} + +// +//########################################################################### +//########################################################################### +// +LinearMatrix& + LinearMatrix::Normalize() +{ + (*this)(0,2) = (*this)(1,0)*(*this)(2,1) - (*this)(1,1)*(*this)(2,0); + (*this)(1,2) = (*this)(2,0)*(*this)(0,1) - (*this)(2,1)*(*this)(0,0); + (*this)(2,2) = (*this)(0,0)*(*this)(1,1) - (*this)(0,1)*(*this)(1,0); + return *this; +} + +// +//########################################################################### +//########################################################################### +// +Logical + LinearMatrix::TestInstance() const +{ + UnitVector v1; + GetFromAxis(X_Axis,&v1); + if (!v1.TestInstance()) + { + Dump(*this); + Dump(v1); + return False; + } + + UnitVector v2; + GetFromAxis(Y_Axis,&v2); + if (!v2.TestInstance()) + { + Dump(*this); + Dump(v1); + return False; + } + + UnitVector v3; + v3.Vector3D::Cross(v1,v2); + GetFromAxis(Z_Axis,&v1); + return Close_Enough(v1,v3); +} + +#if defined(TEST_CLASS) +# include "linmtrx.tcp" +#endif + diff --git a/CODE/RP/MUNGA/LINMTRX.HPP b/CODE/RP/MUNGA/LINMTRX.HPP new file mode 100644 index 0000000..f007910 --- /dev/null +++ b/CODE/RP/MUNGA/LINMTRX.HPP @@ -0,0 +1,181 @@ +//===========================================================================// +// File: linmtrx.hh // +// Project: MUNGA Brick: Math Library // +// Contents: Interface specification for the linear matrices // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 11/20/94 JMA Initial coding. // +// 12/01/94 JMA Made compatible with SGI CC // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(LINMTRX_HPP) +# define LINMTRX_HPP + +# if !defined(AFFNMTRX_HPP) +# include +# endif + +# if !defined(UNITVEC_HPP) +# include +# endif + +# if !defined(ROTATION_HPP) +# include +# endif + + //~~~~~~~~~~~~~~~~~~~~~~~~~~ LinearMatrix ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class LinearMatrix: + public AffineMatrix + { + public: + static const LinearMatrix + Identity; + + // + // Constructors + // + LinearMatrix() + {BuildIdentity(); }// JM 11-25-95 + LinearMatrix(int) + {BuildIdentity();} + + // + // Assignment Operators + // + LinearMatrix& + operator=(const LinearMatrix &m) + {AffineMatrix::operator=(m); return *this;} + LinearMatrix& + operator=(const Origin &p) + {AffineMatrix::operator=(p); return *this;} + LinearMatrix& + operator=(const Hinge &hinge) + {AffineMatrix::operator=(hinge); return *this;} + LinearMatrix& + operator=(const EulerAngles &angles) + {AffineMatrix::operator=(angles); return *this;} + LinearMatrix& + operator=(const YawPitchRoll &angles) + {AffineMatrix::operator=(angles); return *this;} + LinearMatrix& + operator=(const Quaternion &q) + {AffineMatrix::operator=(q); return *this;} + LinearMatrix& + operator=(const Point3D &p) + {AffineMatrix::operator=(p); return *this;} + LinearMatrix& + operator=(const AffineMatrix &m); + LinearMatrix& + operator=(const Matrix4x4 &m); + LinearMatrix& + operator=(const TransposedMatrix &m); + + // + // Axis Manipulation + // + void + GetFromAxis(size_t index, UnitVector *v) const + {AffineMatrix::GetFromAxis(index,v);} + void + GetToAxis(size_t index, UnitVector *v) const + {AffineMatrix::GetToAxis(index,v);} + + LinearMatrix& + SetFromAxis(size_t index, const UnitVector &v) + {AffineMatrix::SetFromAxis(index,v); return *this;} + LinearMatrix& + SetToAxis(size_t index, const UnitVector &v) + {AffineMatrix::SetToAxis(index,v); return *this;} + + // + // Matrix4x4 Multiplication + // + LinearMatrix& + Multiply( + const LinearMatrix& m1, + const LinearMatrix& m2 + ) + {AffineMatrix::Multiply(m1, m2); return *this;} + LinearMatrix& + operator *=(const LinearMatrix& M) + {LinearMatrix src(*this); return Multiply(src, M);} + + // + // Matrix4x4 Inversion + // + LinearMatrix& + Invert(const LinearMatrix& Source); + LinearMatrix& + Invert() + {LinearMatrix src(*this); return Invert(src);} + + // + // Rotation and Translation + // + LinearMatrix& + Multiply(const LinearMatrix &m,const Quaternion &q) + { + Check_Pointer(this); Check(&m); Check(&q); + AffineMatrix::Multiply(m,q); return *this; + } + LinearMatrix& + operator*=(const Quaternion &q) + {Check(this); LinearMatrix m(*this); return Multiply(m,q);} + LinearMatrix& + Multiply(const LinearMatrix &m,const Point3D &p) + { + Check_Pointer(this); Check(&m); Check(&p); + AffineMatrix::Multiply(m,p); return *this; + } + LinearMatrix& + operator*=(const Point3D& p) + {Check(this); LinearMatrix m(*this); return Multiply(m,p);} + + // + // Support functions + // + LinearMatrix& + Normalize(); + + Logical + TestInstance() const; + static Logical + TestClass(); + + private: + LinearMatrix& Solve(); + }; + + inline UnitVector& + UnitVector::Multiply( + const UnitVector &v, + const LinearMatrix &m + ) + {Check(&v); Vector3D::Multiply(v,m); return *this;} + + inline UnitVector& + UnitVector::operator*=(const LinearMatrix &m) + {UnitVector src(*this); return Multiply(src,m);} + + inline Quaternion& + Quaternion::Multiply( + const Quaternion &q, + const LinearMatrix &m + ) + { + Cast_Object(Vector3D*,this)->Multiply(SKIPPY_CAST(Vector3D,q),m); + return *this; + } + + inline Quaternion& + Quaternion::operator*=(const LinearMatrix &m) + {Quaternion t(*this); return Multiply(t,m);} + + +#endif diff --git a/CODE/RP/MUNGA/LINMTRX.TCP b/CODE/RP/MUNGA/LINMTRX.TCP new file mode 100644 index 0000000..7fef7b3 --- /dev/null +++ b/CODE/RP/MUNGA/LINMTRX.TCP @@ -0,0 +1,23 @@ +//===========================================================================// +// File: linmtrx.cc // +// Project: MUNGA Brick: Math Library // +// Contents: Implementation details for the linear matrices // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 11/20/94 JMA Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1994, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// +#include "random.hpp" +// +//########################################################################### +//########################################################################### +// +Logical LinearMatrix::TestClass() +{ + return False; +} + diff --git a/CODE/RP/MUNGA/MATRIX.CPP b/CODE/RP/MUNGA/MATRIX.CPP new file mode 100644 index 0000000..cadde3c --- /dev/null +++ b/CODE/RP/MUNGA/MATRIX.CPP @@ -0,0 +1,689 @@ +//===========================================================================// +// File: matrix.cc // +// Project: MUNGA Brick: Math Library // +// Contents: Implementation details for the matrix class // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 11/21/94 JMA Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(MATRIX_HPP) +# include +#endif + +#if !defined(AFFNMTRX_HPP) +# include +#endif + +#if !defined(ORIGIN_HPP) +# include +#endif + +#if defined(USE_SIGNATURE) + int + Is_Signature_Bad(const volatile AbstractMatrix4x4 *) + { + return False; + } +#endif + +// +//########################################################################### +//########################################################################### +// +AbstractMatrix4x4& + AbstractMatrix4x4::operator=(const AbstractMatrix4x4 &m) +{ + #if sizeof(entries) > sizeof(m.entries) + # error memcpy size mismatch! + #endif + + memcpy(entries, m.entries, sizeof(m.entries)); + return *this; +} + +// +//########################################################################### +//########################################################################### +// +AbstractMatrix4x4& + AbstractMatrix4x4::Transpose(const AbstractMatrix4x4 &m) +{ + entries[0] = m.entries[0]; + entries[1] = m.entries[4]; + entries[2] = m.entries[8]; + entries[3] = m.entries[12]; + + entries[4] = m.entries[1]; + entries[5] = m.entries[5]; + entries[6] = m.entries[9]; + entries[7] = m.entries[13]; + + entries[8] = m.entries[2]; + entries[9] = m.entries[6]; + entries[10] = m.entries[10]; + entries[11] = m.entries[14]; + + entries[12] = m.entries[3]; + entries[13] = m.entries[7]; + entries[14] = m.entries[11]; + entries[15] = m.entries[15]; + return *this; +} + +// +//########################################################################### +//########################################################################### +// +Logical + AbstractMatrix4x4::TestInstance() const +{ + return True; +} + +const Matrix4x4 + Matrix4x4::Identity(True); + +// +//########################################################################### +//########################################################################### +// +Matrix4x4& + Matrix4x4::BuildIdentity() +{ + (*this)(0,0) = 1.0f; + (*this)(1,0) = 0.0f; + (*this)(2,0) = 0.0f; + (*this)(3,0) = 0.0f; + + (*this)(0,1) = 0.0f; + (*this)(1,1) = 1.0f; + (*this)(2,1) = 0.0f; + (*this)(3,1) = 0.0f; + + (*this)(0,2) = 0.0f; + (*this)(1,2) = 0.0f; + (*this)(2,2) = 1.0f; + (*this)(3,2) = 0.0f; + + (*this)(0,3) = 0.0f; + (*this)(1,3) = 0.0f; + (*this)(2,3) = 0.0f; + (*this)(3,3) = 1.0f; + + return *this; +} + +// +//########################################################################### +//########################################################################### +// +Matrix4x4& + Matrix4x4::operator=(const AffineMatrix &m) +{ + (*this)(0,0) = m(0,0); + (*this)(0,1) = m(0,1); + (*this)(0,2) = m(0,2); + (*this)(0,3) = 0.0f; + + (*this)(1,0) = m(1,0); + (*this)(1,1) = m(1,1); + (*this)(1,2) = m(1,2); + (*this)(1,3) = 0.0f; + + (*this)(2,0) = m(2,0); + (*this)(2,1) = m(2,1); + (*this)(2,2) = m(2,2); + (*this)(2,3) = 0.0f; + + (*this)(3,0) = m(3,0); + (*this)(3,1) = m(3,1); + (*this)(3,2) = m(3,2); + (*this)(3,3) = 1.0f; + return *this; +} + +// +//########################################################################### +//########################################################################### +// +Matrix4x4& + Matrix4x4::operator=(const Origin& p) +{ + Check_Pointer(this); + Check(&p); + + BuildRotation(p.angularPosition); + BuildTranslation(p.linearPosition); + + (*this)(0,3) = 0.0f; + (*this)(1,3) = 0.0f; + (*this)(2,3) = 0.0f; + (*this)(3,3) = 1.0f; + + return *this; +} + +// +//############################################################################# +//############################################################################# +// +Matrix4x4& + Matrix4x4::operator=(const EulerAngles &angles) +{ + Check_Pointer(this); + Check(&angles); + + SinCosPair + x, + y, + z; + + x = angles.pitch; + y = angles.yaw; + z = angles.roll; + + (*this)(0,0) = y.cosine*z.cosine; + (*this)(0,1) = y.cosine*z.sine; + (*this)(0,2) = -y.sine; + (*this)(0,3) = 0.0f; + + (*this)(1,0) = x.sine*y.sine*z.cosine - x.cosine*z.sine; + (*this)(1,1) = x.sine*y.sine*z.sine + x.cosine*z.cosine; + (*this)(1,2) = x.sine*y.cosine; + (*this)(1,3) = 0.0f; + + (*this)(2,0) = x.cosine*y.sine*z.cosine + x.sine*z.sine; + (*this)(2,1) = x.cosine*y.sine*z.sine - x.sine*z.cosine; + (*this)(2,2) = x.cosine*y.cosine; + (*this)(2,3) = 0.0f; + + (*this)(3,0) = 0.0f; + (*this)(3,1) = 0.0f; + (*this)(3,2) = 0.0f; + (*this)(3,3) = 1.0f; + + Check(this); + return *this; +} + +// +//########################################################################### +//########################################################################### +// +Matrix4x4& + Matrix4x4::BuildRotation(const Quaternion &q) +{ + Check_Pointer(this); + Check(&q); + + Scalar + a = q.x*q.y, + b = q.y*q.z, + c = q.z*q.x, + d = q.w*q.x, + e = q.w*q.y, + f = q.w*q.z, + g = q.w*q.w, + h = q.x*q.x, + i = q.y*q.y, + j = q.z*q.z; + + (*this)(0,0) = g + h - i - j; + (*this)(1,0) = 2.0f*(a - f); + (*this)(2,0) = 2.0f*(c + e); + + (*this)(0,1) = 2.0f*(f + a); + (*this)(1,1) = g - h + i - j; + (*this)(2,1) = 2.0f*(b - d); + + (*this)(0,2) = 2.0f*(c - e); + (*this)(1,2) = 2.0f*(b + d); + (*this)(2,2) = g - h - i + j; + + return *this; +} + +// +//########################################################################### +//########################################################################### +// +Matrix4x4& + Matrix4x4::operator=(const Quaternion &q) +{ + Check_Pointer(this); + Check(&q); + + BuildRotation(q); + (*this)(0,3) = 0.0f; + (*this)(1,3) = 0.0f; + (*this)(2,3) = 0.0f; + (*this)(3,0) = 0.0f; + (*this)(3,1) = 0.0f; + (*this)(3,2) = 0.0f; + (*this)(3,3) = 1.0f; + + return *this; +} + +// +//########################################################################### +//########################################################################### +// +Matrix4x4& + Matrix4x4::BuildTranslation(const Point3D& p) +{ + Check_Pointer(this); + Check(&p); + + (*this)(3,0) = p.x; + (*this)(3,1) = p.y; + (*this)(3,2) = p.z; + return *this; +} + +// +//########################################################################### +//########################################################################### +// +Matrix4x4& + Matrix4x4::operator=(const Point3D& p) +{ + Check_Pointer(this); + Check(&p); + + BuildTranslation(p); + + (*this)(0,0) = 1.0f; + (*this)(0,1) = 0.0f; + (*this)(0,2) = 0.0f; + (*this)(0,3) = 0.0f; + (*this)(1,0) = 0.0f; + (*this)(1,1) = 1.0f; + (*this)(1,2) = 0.0f; + (*this)(1,3) = 0.0f; + (*this)(2,0) = 0.0f; + (*this)(2,1) = 0.0f; + (*this)(2,2) = 1.0f; + (*this)(2,3) = 0.0f; + (*this)(3,3) = 1.0f; + return *this; +} + +// +//########################################################################### +//########################################################################### +// +Matrix4x4& + Matrix4x4::Multiply( + const Matrix4x4 &Source1, + const Matrix4x4 &Source2 + ) +{ + (*this)(0,0) = + Source1(0,0)*Source2(0,0) + + Source1(0,1)*Source2(1,0) + + Source1(0,2)*Source2(2,0) + + Source1(0,3)*Source2(3,0); + (*this)(1,0) = + Source1(1,0)*Source2(0,0) + + Source1(1,1)*Source2(1,0) + + Source1(1,2)*Source2(2,0) + + Source1(1,3)*Source2(3,0); + (*this)(2,0) = + Source1(2,0)*Source2(0,0) + + Source1(2,1)*Source2(1,0) + + Source1(2,2)*Source2(2,0) + + Source1(2,3)*Source2(3,0); + (*this)(3,0) = + Source1(3,0)*Source2(0,0) + + Source1(3,1)*Source2(1,0) + + Source1(3,2)*Source2(2,0) + + Source1(3,3)*Source2(3,0); + + (*this)(0,1) = + Source1(0,0)*Source2(0,1) + + Source1(0,1)*Source2(1,1) + + Source1(0,2)*Source2(2,1) + + Source1(0,3)*Source2(3,1); + (*this)(1,1) = + Source1(1,0)*Source2(0,1) + + Source1(1,1)*Source2(1,1) + + Source1(1,2)*Source2(2,1) + + Source1(1,3)*Source2(3,1); + (*this)(2,1) = + Source1(2,0)*Source2(0,1) + + Source1(2,1)*Source2(1,1) + + Source1(2,2)*Source2(2,1) + + Source1(2,3)*Source2(3,1); + (*this)(3,1) = + Source1(3,0)*Source2(0,1) + + Source1(3,1)*Source2(1,1) + + Source1(3,2)*Source2(2,1) + + Source1(3,3)*Source2(3,1); + + (*this)(0,2) = + Source1(0,0)*Source2(0,2) + + Source1(0,1)*Source2(1,2) + + Source1(0,2)*Source2(2,2) + + Source1(0,3)*Source2(3,2); + (*this)(1,2) = + Source1(1,0)*Source2(0,2) + + Source1(1,1)*Source2(1,2) + + Source1(1,2)*Source2(2,2) + + Source1(1,3)*Source2(3,2); + (*this)(2,2) = + Source1(2,0)*Source2(0,2) + + Source1(2,1)*Source2(1,2) + + Source1(2,2)*Source2(2,2) + + Source1(2,3)*Source2(3,2); + (*this)(3,2) = + Source1(3,0)*Source2(0,2) + + Source1(3,1)*Source2(1,2) + + Source1(3,2)*Source2(2,2) + + Source1(3,3)*Source2(3,2); + + (*this)(0,3) = + Source1(0,0)*Source2(0,3) + + Source1(0,1)*Source2(1,3) + + Source1(0,2)*Source2(2,3) + + Source1(0,3)*Source2(3,3); + (*this)(1,3) = + Source1(1,0)*Source2(0,3) + + Source1(1,1)*Source2(1,3) + + Source1(1,2)*Source2(2,3) + + Source1(1,3)*Source2(3,3); + (*this)(2,3) = + Source1(2,0)*Source2(0,3) + + Source1(2,1)*Source2(1,3) + + Source1(2,2)*Source2(2,3) + + Source1(2,3)*Source2(3,3); + (*this)(3,3) = + Source1(3,0)*Source2(0,3) + + Source1(3,1)*Source2(1,3) + + Source1(3,2)*Source2(2,3) + + Source1(3,3)*Source2(3,3); + + return *this; +} + +// +//########################################################################### +//########################################################################### +// +Matrix4x4& + Matrix4x4::Multiply( + const Matrix4x4 &Source1, + const AffineMatrix &Source2 + ) +{ + (*this)(0,0) = + Source1(0,0)*Source2(0,0) + + Source1(0,1)*Source2(1,0) + + Source1(0,2)*Source2(2,0) + + Source1(0,3)*Source2(3,0); + (*this)(1,0) = + Source1(1,0)*Source2(0,0) + + Source1(1,1)*Source2(1,0) + + Source1(1,2)*Source2(2,0) + + Source1(1,3)*Source2(3,0); + (*this)(2,0) = + Source1(2,0)*Source2(0,0) + + Source1(2,1)*Source2(1,0) + + Source1(2,2)*Source2(2,0) + + Source1(2,3)*Source2(3,0); + (*this)(3,0) = + Source1(3,0)*Source2(0,0) + + Source1(3,1)*Source2(1,0) + + Source1(3,2)*Source2(2,0) + + Source1(3,3)*Source2(3,0); + + (*this)(0,1) = + Source1(0,0)*Source2(0,1) + + Source1(0,1)*Source2(1,1) + + Source1(0,2)*Source2(2,1) + + Source1(0,3)*Source2(3,1); + (*this)(1,1) = + Source1(1,0)*Source2(0,1) + + Source1(1,1)*Source2(1,1) + + Source1(1,2)*Source2(2,1) + + Source1(1,3)*Source2(3,1); + (*this)(2,1) = + Source1(2,0)*Source2(0,1) + + Source1(2,1)*Source2(1,1) + + Source1(2,2)*Source2(2,1) + + Source1(2,3)*Source2(3,1); + (*this)(3,1) = + Source1(3,0)*Source2(0,1) + + Source1(3,1)*Source2(1,1) + + Source1(3,2)*Source2(2,1) + + Source1(3,3)*Source2(3,1); + + (*this)(0,2) = + Source1(0,0)*Source2(0,2) + + Source1(0,1)*Source2(1,2) + + Source1(0,2)*Source2(2,2) + + Source1(0,3)*Source2(3,2); + (*this)(1,2) = + Source1(1,0)*Source2(0,2) + + Source1(1,1)*Source2(1,2) + + Source1(1,2)*Source2(2,2) + + Source1(1,3)*Source2(3,2); + (*this)(2,2) = + Source1(2,0)*Source2(0,2) + + Source1(2,1)*Source2(1,2) + + Source1(2,2)*Source2(2,2) + + Source1(2,3)*Source2(3,2); + (*this)(3,2) = + Source1(3,0)*Source2(0,2) + + Source1(3,1)*Source2(1,2) + + Source1(3,2)*Source2(2,2) + + Source1(3,3)*Source2(3,2); + + (*this)(0,3) = Source1(0,3); + (*this)(1,3) = Source1(1,3); + (*this)(2,3) = Source1(2,3); + (*this)(3,3) = Source1(3,3); + + return *this; +} + +// +//########################################################################### +//########################################################################### +// +Matrix4x4& + Matrix4x4::Multiply( + const AffineMatrix &Source1, + const Matrix4x4 &Source2 + ) +{ + (*this)(0,0) = + Source1(0,0)*Source2(0,0) + + Source1(0,1)*Source2(1,0) + + Source1(0,2)*Source2(2,0); + (*this)(1,0) = + Source1(1,0)*Source2(0,0) + + Source1(1,1)*Source2(1,0) + + Source1(1,2)*Source2(2,0); + (*this)(2,0) = + Source1(2,0)*Source2(0,0) + + Source1(2,1)*Source2(1,0) + + Source1(2,2)*Source2(2,0); + (*this)(3,0) = + Source1(3,0)*Source2(0,0) + + Source1(3,1)*Source2(1,0) + + Source1(3,2)*Source2(2,0) + + Source2(3,0); + + (*this)(0,1) = + Source1(0,0)*Source2(0,1) + + Source1(0,1)*Source2(1,1) + + Source1(0,2)*Source2(2,1); + (*this)(1,1) = + Source1(1,0)*Source2(0,1) + + Source1(1,1)*Source2(1,1) + + Source1(1,2)*Source2(2,1); + (*this)(2,1) = + Source1(2,0)*Source2(0,1) + + Source1(2,1)*Source2(1,1) + + Source1(2,2)*Source2(2,1); + (*this)(3,1) = + Source1(3,0)*Source2(0,1) + + Source1(3,1)*Source2(1,1) + + Source1(3,2)*Source2(2,1) + + Source2(3,1); + + (*this)(0,2) = + Source1(0,0)*Source2(0,2) + + Source1(0,1)*Source2(1,2) + + Source1(0,2)*Source2(2,2); + (*this)(1,2) = + Source1(1,0)*Source2(0,2) + + Source1(1,1)*Source2(1,2) + + Source1(1,2)*Source2(2,2); + (*this)(2,2) = + Source1(2,0)*Source2(0,2) + + Source1(2,1)*Source2(1,2) + + Source1(2,2)*Source2(2,2); + (*this)(3,2) = + Source1(3,0)*Source2(0,2) + + Source1(3,1)*Source2(1,2) + + Source1(3,2)*Source2(2,2) + + Source2(3,2); + + (*this)(0,3) = + Source1(0,0)*Source2(0,3) + + Source1(0,1)*Source2(1,3) + + Source1(0,2)*Source2(2,3); + (*this)(1,3) = + Source1(1,0)*Source2(0,3) + + Source1(1,1)*Source2(1,3) + + Source1(1,2)*Source2(2,3); + (*this)(2,3) = + Source1(2,0)*Source2(0,3) + + Source1(2,1)*Source2(1,3) + + Source1(2,2)*Source2(2,3); + (*this)(3,3) = + Source1(3,0)*Source2(0,3) + + Source1(3,1)*Source2(1,3) + + Source1(3,2)*Source2(2,3) + + Source2(3,3); + + return *this; +} + +// +//########################################################################### +//########################################################################### +// +Matrix4x4& + Matrix4x4::Multiply( + const AffineMatrix &m1, + const AffineMatrix &m2 + ) +{ + Cast_Object(AffineMatrix*,this)->Multiply(m1,m2); + (*this)(0,3) = 0.0f; + (*this)(1,3) = 0.0f; + (*this)(2,3) = 0.0f; + (*this)(3,3) = 1.0f; + return *this; +} + +// +//########################################################################### +//########################################################################### +// +Matrix4x4& + Matrix4x4::SetToProjection( + Scalar Z_Plane, + Scalar Inv_Q, + Scalar Dx, + Scalar Dy, + Scalar Inv_Dz + ) +{ + Scalar + temp; + + // + // This may need to be transposed!!!! + // + (*this)(0,0) = 1.0; + (*this)(0,1) = 0.0; + (*this)(0,2) = 0.0; + (*this)(0,3) = 0.0; + + (*this)(1,0) = 0.0; + (*this)(1,1) = 1.0; + (*this)(1,2) = 0.0; + (*this)(1,3) = 0.0; + + temp = Dx * Inv_Dz; + (*this)(3,0) = temp * Z_Plane; + (*this)(2,0) = -temp; + temp = Dy * Inv_Dz; + (*this)(3,1) = temp * Z_Plane; + (*this)(2,1) = -temp; + + Inv_Dz *= -Inv_Q; + (*this)(2,2) = Z_Plane * Inv_Dz; + (*this)(2,3) = Z_Plane * (1.0 - (*this)(2,2)); + (*this)(3,2) = Inv_Dz; + (*this)(3,3) = 1.0 - (*this)(2,2); + + return *this; +} + +// +//########################################################################### +//########################################################################### +// +ostream& + operator <<(ostream& Stream, const Matrix4x4 &A_Matrix) +{ + Stream << setprecision(4); + Stream << "\n\t| " << setw(9) << A_Matrix(0,0) << ", " << setw(9); + Stream << A_Matrix(0,1) << ", " << setw(9) << A_Matrix(0,2) << ", "; + Stream << setw(9) << A_Matrix(0,3) << " |\n\t| " << setw(9); + Stream << A_Matrix(1,0) << ", " << setw(9) << A_Matrix(1,1) << ", "; + Stream << setw(9) << A_Matrix(1,2) << ", " << setw(9) << A_Matrix(1,3); + Stream << " |\n\t| " << setw(9) << A_Matrix(2,0) << ", " << setw(9); + Stream << A_Matrix(2,1) << ", " << setw(9) << A_Matrix(2,2) << ", "; + Stream << setw(9) << A_Matrix(2,3) << " |\n\t| " << setw(9); + Stream << A_Matrix(3,0) << ", " << setw(9) << A_Matrix(3,1) << ", "; + Stream << setw(9) << A_Matrix(3,2) << ", " << setw(9) << A_Matrix(3,3); + return Stream << " |"; +} + +// +//########################################################################### +//########################################################################### +// +TransposedMatrix& + TransposedMatrix::operator=(const AffineMatrix &m) +{ + #if sizeof(m.entries) > sizeof(entries) + # error memcpy size mismatch! + #endif + + memcpy(entries, m.entries, sizeof(m.entries)); + (*this)(0,3) = 0.0f; + (*this)(1,3) = 0.0f; + (*this)(2,3) = 0.0f; + (*this)(3,3) = 1.0f; + return *this; +} + +#if defined(TEST_CLASS) +# include "matrix.tcp" +#endif diff --git a/CODE/RP/MUNGA/MATRIX.HPP b/CODE/RP/MUNGA/MATRIX.HPP new file mode 100644 index 0000000..636b17b --- /dev/null +++ b/CODE/RP/MUNGA/MATRIX.HPP @@ -0,0 +1,261 @@ +//===========================================================================// +// File: matrix.hh // +// Project: MUNGA Brick: Math Library // +// Contents: Interface specification for the matrix class // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 11/21/94 JMA Initial coding. // +// 12/01/94 JMA Changed Matrix to Matrix4x4, based both matrix classes on // +// Matrix44Base // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(MATRIX_HPP) +# define MATRIX_HPP + +# if !defined(SCALAR_HPP) +# include +# endif + + class AffineMatrix; + class TransposedMatrix; + class Origin; + class Hinge; + class EulerAngles; + class YawPitchRoll; + class Point3D; + class Quaternion; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~ AbstractMatrix4x4 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class AbstractMatrix4x4 + { + public: + Scalar + entries[16]; + + #if defined(USE_SIGNATURE) + friend int + Is_Signature_Bad(const volatile AbstractMatrix4x4 *); + #endif + + AbstractMatrix4x4& + operator=(const AbstractMatrix4x4& m); + + Logical + TestInstance() const; + + protected: + AbstractMatrix4x4() + {} + AbstractMatrix4x4& + Transpose(const AbstractMatrix4x4 &m); + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Matrix4x4 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class Matrix4x4: + public AbstractMatrix4x4 + { + public: + static const Matrix4x4 + Identity; + + // + // Constructors + // + Matrix4x4() + {} + Matrix4x4& + BuildIdentity(); + Matrix4x4(int) + {BuildIdentity();} + + // + // Assignment operators + // + Matrix4x4& + operator=(const Matrix4x4 &m) + { + Check_Pointer(this); Check(&m); + AbstractMatrix4x4::operator=(m); return *this; + } + Matrix4x4& + operator=(const TransposedMatrix &m); + Matrix4x4& + operator=(const AffineMatrix &m); + Matrix4x4& + operator=(const Origin &p); + Matrix4x4& + operator=(const Hinge &hinge); + Matrix4x4& + operator=(const EulerAngles &angles); + Matrix4x4& + operator=(const YawPitchRoll &angles); + Matrix4x4& + BuildRotation(const Quaternion &q); + Matrix4x4& + operator=(const Quaternion &q); + Matrix4x4& + BuildTranslation(const Point3D &p); + Matrix4x4& + operator=(const Point3D &p); + + // + // Index operators + // Note that Matrix4x4 is stored in row major format, not column major, + // although they are indexed the same + // + Scalar& + operator ()(size_t Row,size_t Column) + { + Check_Pointer(this); Warn(Row>3); Warn(Column>3); + return entries[(Row<<2)+Column]; + } + const Scalar& + operator ()(size_t Row,size_t Column) const + { + Check_Pointer(this); Warn(Row>3); Warn(Column>3); + return entries[(Row<<2)+Column]; + } + + // + // Matrix4x4 Multiplication + // + Matrix4x4& + Multiply( + const Matrix4x4& Source1, + const Matrix4x4& Source2 + ); + Matrix4x4& + operator *=(const Matrix4x4& m) + {Matrix4x4 temp(*this); return Multiply(temp,m);} + Matrix4x4& + Multiply( + const Matrix4x4& Source1, + const AffineMatrix &Source2 + ); + Matrix4x4& + operator *=(const AffineMatrix& m) + {Matrix4x4 temp(*this); return Multiply(temp,m);} + Matrix4x4& + Multiply( + const AffineMatrix &Source1, + const Matrix4x4& Source2 + ); + Matrix4x4& + Multiply( + const AffineMatrix &Source1, + const AffineMatrix &Source2 + ); + + // + // Matrix4x4 Inversion + // +#if 0 + Matrix4x4& + Invert(const Matrix4x4& Source); + Matrix4x4& + Invert() + {Matrix4x4 src(*this); return Invert(src);} +#endif + + // + // Viewpoint Calculation + // + Matrix4x4& + SetToProjection( + Scalar Z_Plane, + Scalar Inv_Q, + Scalar Dx, + Scalar Dy, + Scalar Dz + ); + Matrix4x4& + SetToPerspectiveProjection(Scalar Distance) + { + Verify(Distance != 0.0); + return SetToProjection(0.0,1.0/Distance,0.0,0.0,-1.0); + } + Matrix4x4& + SetToOrthogonalProjection() + {return SetToProjection(0.0,0.0,0.0,0.0,-1.0);} + + friend ostream& + operator <<( + ostream& stream, + const Matrix4x4& Matrix4x4 + ); + static Logical + TestClass(); + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Matrix4x4 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class TransposedMatrix: + public AbstractMatrix4x4 + { + public: + // + // Constructors + // + TransposedMatrix() + {} + + // + // Assignment operators + // + TransposedMatrix& + operator=(const Matrix4x4 &m) + { + Check_Pointer(this); Check(&m); + AbstractMatrix4x4::Transpose(m); return *this; + } + TransposedMatrix& + operator=(const TransposedMatrix &m) + { + Check_Pointer(this); Check(&m); + AbstractMatrix4x4::operator=(m); return *this; + } + TransposedMatrix& + operator=(const AffineMatrix &m); + + // + // Index operators + // + Scalar& + operator ()(size_t Row,size_t Column) + { + Check_Pointer(this); Warn(Row>3); Warn(Column>3); + return entries[(Column<<2)+Row]; + } + const Scalar& + operator ()(size_t Row,size_t Column) const + { + Check_Pointer(this); Warn(Row>3); Warn(Column>3); + return entries[(Column<<2)+Row]; + } + + // + // Support Functions + // + friend ostream& + operator <<( + ostream& stream, + const TransposedMatrix& Matrix4x4 + ); + }; + + inline Matrix4x4& + Matrix4x4::operator=(const TransposedMatrix &m) + { + Check_Pointer(this); Check(&m); + AbstractMatrix4x4::Transpose(m); return *this; + } + +#endif + diff --git a/CODE/RP/MUNGA/MATRIX.TCP b/CODE/RP/MUNGA/MATRIX.TCP new file mode 100644 index 0000000..e84d3ca --- /dev/null +++ b/CODE/RP/MUNGA/MATRIX.TCP @@ -0,0 +1,22 @@ +//===========================================================================// +// File: matrix.cc // +// Project: MUNGA Brick: Math Library // +// Contents: Implementation details for the matrix class // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 11/21/94 JMA Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1994, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +Logical + Matrix4x4::TestClass() +{ + DEBUG_STREAM << "Starting Matrix4x4 test...\n"; + Tell(" Matrix4x4::TestClass() is stubbed out!\n"); + return False; +} + diff --git a/CODE/RP/MUNGA/MEMBLOCK.CPP b/CODE/RP/MUNGA/MEMBLOCK.CPP new file mode 100644 index 0000000..bed41a0 --- /dev/null +++ b/CODE/RP/MUNGA/MEMBLOCK.CPP @@ -0,0 +1,678 @@ +//===========================================================================// +// File: memblock.cc // +// Project: MUNGA Brick: Memory Manager // +// Contents: Implementation details of the blockMemory block class // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 10/20/94 JMA Initial coding. // +// 10/28/94 JMA Made compatible with SGI CC // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// PROPRIETARY AND CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(MEMBLOCK_HPP) + #include +#endif + +#if !defined(SCALAR_HPP) + #include +#endif + +//#define MEMORY_VERIFY + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~ MemoryBlockHeader ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +#if defined(USE_SIGNATURE) + int + Is_Signature_Bad(const volatile MemoryBlockHeader *) + { + return False; + } +#endif + +// +//############################################################################# +//############################################################################# +// +Logical + MemoryBlockHeader::TestInstance() +{ + return True; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ MemoryBlockBase ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +MemoryBlockBase* + MemoryBlockBase::firstBlock = NULL; + +// +//############################################################################# +// +// This function constructs a MemoryBlockBase variable, allocating a block of +// blockMemory from heap, preparing it for suballocation of a constant record +// blockSize. +// +// NOTE: Record blockSize must be large enough to contain a void pointer in order +// to properly set up the re-use chain! +// +// Rec_Size - blockSize in bytes of the suballocation unit +// Start - number of records to allocate initially +// Delta - number of records to allocate when growing the blockMemory block +// +//############################################################################# +// +MemoryBlockBase::MemoryBlockBase( + size_t rec_size, + size_t start, + size_t delta, + const char* name +) +{ + // + //---------------------------------------------------------------------- + // Make sure that the requested record blockSize is large enough if debugging + // is enabled + //---------------------------------------------------------------------- + // + Verify(rec_size >= sizeof(MemoryBlockHeader)); + + // + //------------------------------------------------------------------------ + // Set up the blockSize variables for the blockMemory block, and figure out the byte + // sizes of the initial block and delta blocks + //------------------------------------------------------------------------ + // + recordSize = rec_size; + blockSize = start * recordSize; + deltaSize = delta * recordSize; + blockName = name; + + // + //------------------------------------------------------------------------- + // Allocate a block big enough for the requested blockMemory plus a link to + // the next blockMemory block, initializing this link to NULL + //------------------------------------------------------------------------- + // + #if !defined(MEMORY_VERIFY) + blockMemory = (MemoryBlockHeader*)new Byte[sizeof(MemoryBlockHeader) + blockSize]; + Verify(blockMemory); + blockMemory->nextBlock = NULL; + blockMemory->blockSize = blockSize; + + // + //---------------------------------------------------------------------- + // Establish the beginning of the firstHeaderRecord record block, and point + // the freeRecord record pointer to the beginning. There are no deletedRecord + // records yet, so make sure Deleted is NULL + //---------------------------------------------------------------------- + // + firstHeaderRecord = (Byte*)(blockMemory + 1); + freeRecord = firstHeaderRecord; + deletedRecord = NULL; + #endif + + // + //-------------------------------------------------------------------------- + // If this is the first memory block, set the first block pointer and + // initialize the ring. If not, insert the new block at the end of the ring + //-------------------------------------------------------------------------- + // + if (!firstBlock) + { + firstBlock = nextBlock = previousBlock = this; + } + else + { + MemoryBlockBase *block = firstBlock; + Check(block); + block = block->previousBlock; + Check(block); + nextBlock = firstBlock; + previousBlock = block; + block->nextBlock = this; + firstBlock->previousBlock = this; + } +} + +// +//############################################################################# +// +// This function destroys the MemoryBlockBase object, deleting any additional +// record blocks which were allocated +// +//############################################################################# +// +MemoryBlockBase::~MemoryBlockBase() +{ +#if !defined(MEMORY_VERIFY) + // + //------------------------------------------------------------------------ + // Find the address of the first record block, then delete blocks until we + // come to the end of the chain + //------------------------------------------------------------------------ + // + Check(this); + MemoryBlockHeader *block = blockMemory; + + while (block) + { + + // + //-------------------------------------------------------------------- + // Save the address of the next blockMemory block, then delete this one and + // get ready to delete the next one + //-------------------------------------------------------------------- + // + Check(block); + MemoryBlockHeader *next_block = block->nextBlock; + delete block; + block = next_block; + } +#endif + + // + //------------------------------------------------------------------------ + // Remove the block from the ring. If the block is the first one, set the + // first block pointer correctly. Note that we memoryblocks, as static + // objects, should deconstruct in the opposite order they constructed, so + // when we reach the first block, it should be the only one in the queue. + //------------------------------------------------------------------------ + // + if (firstBlock == this) + { + if (nextBlock == this) + { + firstBlock = NULL; + } + else + { + firstBlock = nextBlock; + goto Unlink; + } + } + else + { +Unlink: + MemoryBlockBase *next = nextBlock; + Check(next); + MemoryBlockBase *prev = previousBlock; + Check(prev); + next->previousBlock = prev; + prev->nextBlock = next; + } +} + +// +//############################################################################# +// +// This function allocates a fixed blockSize record from the record blocks +// +//############################################################################# +// +void* + MemoryBlockBase::Grow() +{ + #if defined(MEMORY_VERIFY) + Fail("MemoryBlockBase::Grow() not available!\n"); + #endif + // + //--------------------------------------------------------------------- + // If we have freeRecord space left in the firstHeaderRecord record block, allocate the + // new record from here, updating the next freeRecord record pointer + //--------------------------------------------------------------------- + // + Check(this); + if (freeRecord - firstHeaderRecord <= blockSize - recordSize) + { + void *result = freeRecord; + freeRecord += recordSize; + return result; + } + + // + //----------------------------------------------------------------------- + // Allocate a new block of records using the growth blockSize, and make the + // link field of the firstHeaderRecord block point to the new block. Then make the + // new block the firstHeaderRecord block, and make its next link NULL, as it is the + // end of the chain + //----------------------------------------------------------------------- + // + blockSize = deltaSize; + firstHeaderRecord -= sizeof(MemoryBlockHeader); + Byte *new_block = new Byte[blockSize + sizeof(MemoryBlockHeader)]; + Verify(new_block); + + MemoryBlockHeader *header = (MemoryBlockHeader*)firstHeaderRecord; + header->nextBlock = (MemoryBlockHeader*)new_block; + + firstHeaderRecord = new_block; + header = (MemoryBlockHeader*)firstHeaderRecord; + header->nextBlock = NULL; + header->blockSize = deltaSize; + + // + //--------------------------------------------------------------------- + // Make firstHeaderRecord point to the first available address in the new block + // (having skipped the first field allocated to the link pointer), and + // allocate this first block to the caller. Update the freeRecord pointer to + // reflect this allocation + //--------------------------------------------------------------------- + // + firstHeaderRecord += sizeof(MemoryBlockHeader); + freeRecord = firstHeaderRecord + recordSize; + return (void*)firstHeaderRecord; +} + +// +//############################################################################# +//############################################################################# +// +void + MemoryBlockBase::UsageReport() +{ +#if !defined(MEMORY_VERIFY) + DEBUG_STREAM << "#Bytes #Rcds #Dels #Free Use% Name\n"; + DEBUG_STREAM << "------ ----- ----- ----- ---- -------------------------------\n"; + MemoryBlockBase *block = firstBlock; + do + { + Check(block); + MemoryBlockHeader *header = block->blockMemory; + size_t byte_count = 0; + size_t record_count = 0; + size_t deletion_count = 0; + size_t unused_count = + block->blockSize - (block->freeRecord - block->firstHeaderRecord); + unused_count /= block->recordSize; + while (header) + { + Check(header); + record_count += header->blockSize / block->recordSize; + byte_count += header->blockSize + sizeof(MemoryBlockHeader); + header = header->nextBlock; + } + Byte *deletion = block->deletedRecord; + while (deletion) + { + ++deletion_count; + deletion = *(Byte**)deletion; + } + Scalar usage = 1.0f - (deletion_count+unused_count)/(float)record_count; + record_count -= deletion_count + unused_count; + DEBUG_STREAM << setw(6) << byte_count << setw(6) << record_count + << setw(6) << deletion_count << setw(6) << unused_count << setw(4) + << ((int)(usage*100.0f)) << '%'; + if (block->blockName) + { + DEBUG_STREAM << ' ' << block->blockName; + } + DEBUG_STREAM << endl; + block = block->nextBlock; + } + while (block != firstBlock); + DEBUG_STREAM << endl; +#endif +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ MemoryBlock ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +// +//############################################################################# +// +// This function allocates a fixed blockSize record from the record blocks +// +//############################################################################# +// +void* + MemoryBlock::New() +{ + void *result; + #if defined(MEMORY_VERIFY) + result = new char[recordSize]; + #else + // + //---------------------------------------------------------------------- + // If we have a deletedRecord record, go ahead and reuse it, updating the next + // deletedRecord record value from the firstHeaderRecord one. This chain is independant + // of the firstHeaderRecord record block. If not, grow the blockMemory block by one + // record + //---------------------------------------------------------------------- + // + Check(this); + if (deletedRecord) + { + result = (void*)deletedRecord; + deletedRecord = *(Byte**)deletedRecord; + } + else + { + result = Grow(); + } + #endif + + // + //---------------------------------------------------------------------- + // If we are checking for unassigned variables, initialize the allocated + // memory with NANs + //---------------------------------------------------------------------- + // + #if defined(DEBUG_NEW_ON) + #define SNAN_POSITIVE_LONG 0x7fb07fb0 + long *filler = (long *)result; + for (int i = recordSize >> 2; i; --i) + { + *filler++ = SNAN_POSITIVE_LONG; + } + #endif + + // + //------------------------------------- + // Return the address of the new record + //------------------------------------- + // + return result; +} + +// +//############################################################################# +// +// This function deallocates a record, making it available for re-use +// +//############################################################################# +// +void + MemoryBlock::Delete( + void* where + ) +{ + #if defined(MEMORY_VERIFY) + delete where; + #else + // + //-------------------------------------------------------------------- + // If we are in debug2 mode, check to see if the deletedRecord region really + // belongs to us + //-------------------------------------------------------------------- + // + Check(this); + + #if DEBUG_LEVEL>1 + + // + //-------------------------------------------------------------------- + // Make sure the address of this record is not already in the deletion + // chain + //-------------------------------------------------------------------- + // + void *record; + for ( + record = (void*)deletedRecord; + record; + record = *(Byte**)record + ) + { + if (record == where) + { + break; + } + } + Verify(!record); + + // + //------------------------------------------------------------------ + // Find the address of the first record block, then check each block + // until we come to the end of the chain + //------------------------------------------------------------------ + // + unsigned + offset; + MemoryBlockHeader* + block = blockMemory; + + while (block) + { + + // + //--------------------------------------------------------------- + // If the record is in this block and is positioned correctly, go + // ahead and break as we have found a legal place within a block + //--------------------------------------------------------------- + // + Check(block); + offset = (unsigned)((Byte*)where - (Byte*)(block + 1)); + if (offset < block->blockSize) + { + Verify(!(offset % recordSize)); + break; + } + + // + //--------------------- + // Go to the next block + //--------------------- + // + block = block->nextBlock; + } + Verify(block); + + // + //----------------------------------------------------------- + // Now make sure that the address is not in our future region + //----------------------------------------------------------- + // + Verify(block->nextBlock || offset < freeRecord-firstHeaderRecord); + + #endif + + // + //---------------------------------------------------------------------- + // Make the first few bytes of the record act as the link pointer to the + // beginning of the firstHeaderRecord deletedRecord chain, then make the first record + // available for reuse this one + //---------------------------------------------------------------------- + // + *(Byte**)where = deletedRecord; + deletedRecord = (Byte*)where; + #endif +} + +// +//############################################################################# +//############################################################################# +// +void* + MemoryBlock::operator[](size_t index) +{ + #if defined(MEMORY_VERIFY) + Fail("MemoryBlock::operator[] not available!\n"); + #endif + + // + //------------------------------------------------------------------ + // Find the address of the first record block, then check each block + // until we come to the end of the chain + //------------------------------------------------------------------ + // + Check(this); + MemoryBlockHeader + *block = blockMemory; + + while (block) + { + // + //--------------------------------------------------------------- + // If the index is in this block, go ahead and return its address + //--------------------------------------------------------------- + // + Check(block); + Verify(recordSize); + int + records = block->blockSize / recordSize; + if (index < records) + { + return (Byte*)(block + 1) + index * recordSize; + } + + // + //-------------------------------------------------------------------- + // Save the address of the next blockMemory block, then delete this one and + // get ready to delete the next one + //-------------------------------------------------------------------- + // + index -= records; + block = block->nextBlock; + } + + // + //----------------------------------------- + // The record doesn't exist, so return NULL + //----------------------------------------- + // + return NULL; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ MemoryStack ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +// +//############################################################################# +//############################################################################# +// +void* + MemoryStack::Push(const void* what) +{ + Check(this); + Check_Pointer(what); + + Byte *block = firstHeaderRecord; + topOfStack = freeRecord; + Mem_Copy(Grow(), what, recordSize, blockSize - (freeRecord - firstHeaderRecord)); + if (firstHeaderRecord != block) + { + topOfStack = firstHeaderRecord; + } + return topOfStack; +} + +// +//############################################################################# +//############################################################################# +// +void* + MemoryStack::Push() +{ + Check(this); + Byte *block = firstHeaderRecord; + topOfStack = freeRecord; + Grow(); + + if (firstHeaderRecord != block) + { + topOfStack = firstHeaderRecord; + } + return topOfStack; +} + +// +//########################################################################### +//########################################################################### +// +void + MemoryStack::Pop() +{ + MemoryBlockHeader + *block, + *new_block; + + // + //----------------------------------------- + // Make sure that something is in the stack + //----------------------------------------- + // + Check(this); + if (topOfStack) + { + // + //-------------------------------------------------------------------- + // If the topOfStack of the stack is not at the bottom of a blockMemory block, the + // freeRecord and topOfStack pointers can move normally + //-------------------------------------------------------------------- + // + if (topOfStack != firstHeaderRecord) + { + // + //------------------------------------------------------------------- + // If the freeRecord pointer is at the bottom of a block, we have to delete + // the block and update the variables to the previous block + //------------------------------------------------------------------- + // + if (freeRecord == firstHeaderRecord) + { + new_block = (MemoryBlockHeader*)firstHeaderRecord - 1; + Check(new_block); + for ( + block = blockMemory; + block->nextBlock != new_block; + block = block->nextBlock + ) + { + Check(block); + } + + delete new_block; + block->nextBlock = NULL; + firstHeaderRecord = (Byte*)(block + 1); + blockSize = block->blockSize; + } + + // + //----------------------------------------------- + // Move the topOfStack and freeRecord pointers back one record + //----------------------------------------------- + // + freeRecord = topOfStack; + topOfStack -= recordSize; + } + + // + //-------------------------------------------------------------------- + // Otherwise, we have to wrap the top of the stack pointer back to the + // previous block. If there is only one allocated block, then the + // stack is empty + //-------------------------------------------------------------------- + // + else if (!blockMemory->nextBlock) + { + topOfStack = NULL; + } + + // + //-------------------------------------------------------------------- + // Point the top of the stack to the last record of the previous block + //-------------------------------------------------------------------- + // + else + { + new_block = (MemoryBlockHeader*)firstHeaderRecord - 1; + Check(new_block); + for ( + block = blockMemory; + block->nextBlock != new_block; + block = block->nextBlock + ) + { + Check(block); + } + topOfStack = (Byte*)(block + 1) + block->blockSize - recordSize; + } + } +} + +#if defined(TEST_CLASS) +# include "memblock.tcp" +#endif + diff --git a/CODE/RP/MUNGA/MEMBLOCK.HPP b/CODE/RP/MUNGA/MEMBLOCK.HPP new file mode 100644 index 0000000..9f5d1f3 --- /dev/null +++ b/CODE/RP/MUNGA/MEMBLOCK.HPP @@ -0,0 +1,205 @@ +//===========================================================================// +// File: memblock.hh // +// Project: MUNGA Brick: Memory Manager // +// Contents: Interface specification of the memory block class // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 10/20/94 JMA Initial coding. // +// 10/28/94 JMA Made compatible with SGI CC // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// PROPRIETARY AND CONFIDENTIAL // +//===========================================================================// + +#if !defined(MEMBLOCK_HPP) +# define MEMBLOCK_HPP + +# if !defined(STYLE_HPP) +# include +# endif + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~ MemoryBlockHeader ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class MemoryBlockHeader + { + public: + #if defined(USE_SIGNATURE) + friend int + Is_Signature_Bad(const volatile MemoryBlockHeader *p); + #endif + + MemoryBlockHeader + *nextBlock; + size_t + blockSize; + + Logical + TestInstance(); + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ MemoryBlockBase ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class MemoryBlockBase SIGNATURED + { + public: + Logical + TestInstance() + {return blockMemory != NULL;} + + static void + UsageReport(); + static void + Collapse(); + + protected: + const char + *blockName; + + MemoryBlockHeader + *blockMemory; // the first record block allocated + + size_t + blockSize, // size in bytes of the current record block + recordSize, // size in bytes of the individual record + deltaSize; // size in bytes of the growth blocks + + Byte + *firstHeaderRecord, // the beginning of useful free space + *freeRecord, // the next address to allocate from the block + *deletedRecord; // the next record to reuse + + MemoryBlockBase( + size_t rec_size, + size_t start, + size_t delta, + const char* name = NULL + ); + ~MemoryBlockBase(); + + void* + Grow(); + + private: + static MemoryBlockBase + *firstBlock; + MemoryBlockBase + *nextBlock, + *previousBlock; + + static void + SortDeletions(); + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ MemoryBlock ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class MemoryBlock: + public MemoryBlockBase + { + public: + static Logical + TestClass(); + + MemoryBlock( + size_t rec_size, + size_t start, + size_t delta, + const char* name = NULL + ): + MemoryBlockBase(rec_size, start, delta, name) + {} + + void* + New(); + void + Delete(void *Where); + + void* + operator[](size_t Index); + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ MemoryBlockOf ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + template class MemoryBlockOf: + public MemoryBlock + { + public: + MemoryBlockOf( + size_t start, + size_t delta, + const char* name=NULL + ): + MemoryBlock(sizeof(T), start, delta, name) + {} + + T* + New() + {return (T*)MemoryBlock::New();} + void + Delete(void *where) + {MemoryBlock::Delete(where);} + + T* + operator[](size_t index) + {return (T*)MemoryBlock::operator[](index);} + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ MemoryStack ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class MemoryStack: + public MemoryBlockBase + { + public: + static Logical + TestClass(); + + protected: + Byte + *topOfStack; + + MemoryStack( + size_t rec_size, + size_t start, + size_t delta, + const char* name = NULL + ): + MemoryBlockBase(rec_size, start, delta, name) + {topOfStack = NULL;} + + void* + Push(const void *What); + void* + Push(); + void* + Peek() + {return (void*)topOfStack;} + void + Pop(); + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ MemoryStackOf ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + template class MemoryStackOf: + public MemoryStack + { + public: + MemoryStackOf( + size_t start, + size_t delta, + const char *name + ): + MemoryStack(sizeof(T), start, delta, name) + {} + + T* + Push(const T *what) + {return (T*)MemoryStack::Push(what);} + T* + Peek() + {return (T*)MemoryStack::Peek();} + void + Pop() + {MemoryStack::Pop();} + }; + +#endif diff --git a/CODE/RP/MUNGA/MEMBLOCK.TCP b/CODE/RP/MUNGA/MEMBLOCK.TCP new file mode 100644 index 0000000..fbaaea4 --- /dev/null +++ b/CODE/RP/MUNGA/MEMBLOCK.TCP @@ -0,0 +1,43 @@ +//===========================================================================// +// File: memblock.tst // +// Project: MUNGA Brick: Memory Manager // +// Contents: Test functions for memoryblock classes // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 10/23/94 JMA Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1994, Virtual World Entertainment, Inc. All Rights reserved // +// PROPRIETARY AND CONFIDENTIAL // +//===========================================================================// + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ MemoryBlock ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +// +//############################################################################# +//############################################################################# +// +Logical + MemoryBlock::TestClass() +{ + DEBUG_STREAM << "Starting MemoryBlock test...\n"; + + Tell(" MemoryBlock::TestClass() is stubbed out!\n"); + return False; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ MemoryStack ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +// +//########################################################################### +//########################################################################### +// +Logical + MemoryStack::TestClass() +{ + DEBUG_STREAM << "Starting MemoryStack test...\n"; + + Tell(" MemoryStack::TestClass() is stubbed out!\n"); + return False; +} + diff --git a/CODE/RP/MUNGA/MEMREG.HPP b/CODE/RP/MUNGA/MEMREG.HPP new file mode 100644 index 0000000..0126b39 --- /dev/null +++ b/CODE/RP/MUNGA/MEMREG.HPP @@ -0,0 +1,121 @@ +//======================================================================= +// File: MEMREG.HPP +// +// Created: Sunday, October 2, 1994, 6:33 PM +// Author: Eric Huffman +// Project: Node.Û +// Compiler: 7.0, Û Symantec Corporation 1994 +//----------------------------------------------------------------------- +// Copyright (C) 1994, Virtual World Entertainments, All Rights reserved +// PROPRIETARY AND CONFIDENTIAL +//======================================================================= + +#if !defined(MEMREG_HPP) +# define MEMREG_HPP + + typedef enum + { + PointerMRStatsAddressType, + ObjectMRStatsAddressType + } MRStatsAddressType; + +# undef Start_Registering +# undef Stop_Registering +# undef Register_Object +# undef Register_Pointer +# undef Unregister_Object +# undef Unregister_Pointer +# undef Object_Registration +# undef Check_All_Signatures + +# if !defined(MEMORY_REGISTER) + +# define Start_Registering() +# define Stop_Registering() +# define Register_Object(address) Check(address) +# define Register_Pointer(address) Check_Pointer(address) +# define Unregister_Object(address) Check(address) +# define Unregister_Pointer(address) Check_Pointer(address) +# define Object_Registration(address) +# define Check_All_Signatures() + +# else + + extern void + Start_Registering_Function(); + extern void + Stop_Registering_Function(); + + extern void + Register_Pointer_Function( + void *address, + MRStatsAddressType address_type, + char *file_name, + int line_num + ); + extern void + Unregister_Pointer_Function( + void *address, + char *file_name, + int line_num + ); + + extern void + Object_Registration_Function( + void *address, + char *file_name, + int line_num + ); + + extern void + Check_All_Signatures_Function( + char *file_name, + int line_num + ); + +# define Start_Registering() Start_Registering_Function() +# define Stop_Registering() Stop_Registering_Function() + +# define Check_All_Signatures()\ + Check_All_Signatures_Function(__FILE__, __LINE__) + +# if defined(MEMORY_VERIFY) +# undef Check +# define Check(p) {\ + Check_Signature(p);\ + Verify((p)->TestInstance());\ + Check_All_Signatures();\ + } +# endif + +# define Register_Object(address)\ + {\ + Check(address);\ + Register_Pointer_Function(\ + address,\ + Is_Signature_Bad((Signature*)address) ?\ + PointerMRStatsAddressType : ObjectMRStatsAddressType,\ + __FILE__, __LINE__\ + );\ + } + +# define Register_Pointer(address)\ + Register_Pointer_Function(\ + address, PointerMRStatsAddressType, __FILE__, __LINE__\ + ) + +# define Unregister_Object(address)\ + {\ + Check(address);\ + Unregister_Pointer_Function(address, __FILE__, __LINE__);\ + } +# define Unregister_Pointer(address)\ + Unregister_Pointer_Function(address, __FILE__, __LINE__) + +# define Object_Registration(address)\ + Object_Registration_Function(address, __FILE__, __LINE__) + +# endif + +#endif + diff --git a/CODE/RP/MUNGA/MEMSTRM.CPP b/CODE/RP/MUNGA/MEMSTRM.CPP new file mode 100644 index 0000000..8d58206 --- /dev/null +++ b/CODE/RP/MUNGA/MEMSTRM.CPP @@ -0,0 +1,269 @@ +//===========================================================================// +// File: memstrm.cpp // +// Project: MUNGA Brick: Resource Manager // +// Contents: Implementation Details of resource management // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// PROPRIETARY AND CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(MEMSTRM_HPP) + #include +#endif + +//############################################################################# +//########################## MemoryStream ############################### +//############################################################################# + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +MemoryStream::MemoryStream( + void *stream_start, + size_t stream_size, + size_t initial_offset +) +{ + Check_Pointer(this); + + streamStart = (char*)stream_start; + streamSize = stream_size; + Verify(initial_offset <= stream_size); + currentPosition = streamStart + initial_offset; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +MemoryStream& + MemoryStream::ReadBytes( + void *ptr, + size_t number_of_bytes + ) +{ + Check(this); + Check_Pointer(ptr); + Verify(number_of_bytes > 0); + Verify(GetBytesRemaining() >= number_of_bytes); + + Mem_Copy(ptr, GetPointer(), number_of_bytes, number_of_bytes); + AdvancePointer(number_of_bytes); + return *this; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +MemoryStream& + MemoryStream::WriteBytes( + const void *ptr, + size_t number_of_bytes + ) +{ + Check(this); + Check_Pointer(ptr); + Verify(number_of_bytes > 0) + + Mem_Copy(GetPointer(), ptr, number_of_bytes, GetBytesRemaining()); + AdvancePointer(number_of_bytes); + return *this; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +MemoryStream& + MemoryStream_Write( + MemoryStream *stream, + istream *input + ) +{ + Check(stream); + Check_Pointer(input); + + Verify(!input->bad()); + input->clear(); + + // + //-------------------------------------------------------- + // If we are reading a binary stream, read it in one chunk + //-------------------------------------------------------- + // + #if defined(LBE4) + if (input->flags() & ios::binary) + { + #endif + input->seekg(0, ios::end); + int len=input->tellg(); + input->clear(); + input->seekg(0); + + if (!stream->AllocateBytes(len)) + { + Fail("Not enough memory remaining in stream!"); + } + input->read((char*)stream->GetPointer(), len); + stream->AdvancePointer(len); + #if defined(LBE4) + } + + // + //---------------------------------------------------------------- + // Read a text file character by character if we are a DOS machine + //---------------------------------------------------------------- + // + else + { + input->clear(); + input->seekg(0); + unsigned char byte; + + while (input->get(byte)) + { + *stream << byte; + } + } + #endif + return *stream; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +MemoryStream& + MemoryStream_Write( + MemoryStream *stream, + const MemoryStream *input_stream + ) +{ + Check(stream); + Check(input_stream); + + return + stream->WriteBytes( + input_stream->GetPointer(), + input_stream->GetBytesRemaining() + ); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + MemoryStream::TestInstance() const +{ + return size_t(currentPosition - streamStart) <= streamSize; +} + +//############################################################################# +//###################### DynamicMemoryStream ############################ +//############################################################################# + +// +// calculate the allocation size for stream +// +inline size_t + Calculate_Buffer_Size(size_t needed) +{ + return (needed+0x80)&~0x7F; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +DynamicMemoryStream::DynamicMemoryStream(size_t stream_size): + MemoryStream(NULL, stream_size) +{ + Check_Pointer(this); + + streamSize = Calculate_Buffer_Size(stream_size); + streamStart = new char[streamSize]; + Register_Pointer(streamStart); + + currentPosition = streamStart; + streamLength = 0L; + ownsStream = True; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +DynamicMemoryStream::DynamicMemoryStream( + void *stream_start, + size_t stream_size, + size_t initial_offset +): + MemoryStream(stream_start, stream_size, initial_offset) +{ + Check_Pointer(this); + ownsStream = False; + streamLength = stream_size; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +DynamicMemoryStream::~DynamicMemoryStream() +{ + Check(this); + if (ownsStream) + { + Unregister_Pointer(streamStart); + delete[] streamStart; + } +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + DynamicMemoryStream::AllocateBytes(size_t count) +{ + Check(this); + + if (ownsStream && MemoryStream::GetBytesRemaining() < count) + { + size_t current_offset = currentPosition - streamStart; + size_t new_stream_size = + streamSize + count - MemoryStream::GetBytesRemaining() + 1; + new_stream_size = Calculate_Buffer_Size(new_stream_size); + char *new_stream_start = new char[new_stream_size]; + Register_Pointer(new_stream_start); + + Mem_Copy(new_stream_start, streamStart, streamSize, new_stream_size); + Unregister_Pointer(streamStart); + delete[] streamStart; + streamStart = new_stream_start; + streamSize = new_stream_size; + currentPosition = streamStart + current_offset; + } + return True; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +MemoryStream& + DynamicMemoryStream::WriteBytes( + const void *ptr, + size_t number_of_bytes + ) +{ + Check(this); + Check_Pointer(ptr); + Verify(number_of_bytes > 0) + + // + //-------------------------------------------------------------------- + // If we own the stream, and we don't have enough memory to accept the + // write, copy the buffer and make a new stream that is bigger + //-------------------------------------------------------------------- + // + AllocateBytes(number_of_bytes); + Mem_Copy( + GetPointer(), + ptr, + number_of_bytes, + MemoryStream::GetBytesRemaining() + ); + AdvancePointer(number_of_bytes); + + streamLength = Max(streamLength, GetBytesUsed()); + return *this; +} + diff --git a/CODE/RP/MUNGA/MEMSTRM.HPP b/CODE/RP/MUNGA/MEMSTRM.HPP new file mode 100644 index 0000000..d6de7d2 --- /dev/null +++ b/CODE/RP/MUNGA/MEMSTRM.HPP @@ -0,0 +1,346 @@ +//===========================================================================// +// File: memstrm.hpp // +// Project: MUNGA Brick: Resource Manager // +// Contents: Implementation Details of resource management // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// PROPRIETARY AND CONFIDENTIAL // +//===========================================================================// + +#if !defined(MEMSTRM_HPP) +# define MEMSTRM_HPP + +# if !defined(STYLE_HPP) +# include +# endif + + class MemoryStream; + class DynamicMemoryStream; + + //########################################################################## + //####################### MemoryStream ############################### + //########################################################################## + + class MemoryStream SIGNATURED + { + friend MemoryStream& + MemoryStream_Write( + MemoryStream *stream, + const MemoryStream *input_stream + ); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Constructors + // + public: + MemoryStream( + void *stream_start, + size_t stream_size, + size_t initial_offset=0 + ); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Status functions + // + public: + virtual void* + GetPointer() const + {Check(this); return currentPosition;} + size_t + GetIndex() const + {Check(this); return currentPosition - streamStart;} + size_t + GetSize() const + {Check(this); return streamSize;} + + size_t + GetBytesUsed() const + {Check(this); return currentPosition - streamStart;} + virtual size_t + GetBytesRemaining() const + {Check(this); return streamSize - GetBytesUsed();} + + virtual void + SetPointer(void *new_pointer) + { + Check_Pointer(this); + currentPosition = (char*)new_pointer; + Check(this); + } + void + operator=(void *new_pointer) + {SetPointer(new_pointer);} + + virtual void + SetPointer(size_t index) + { + Check_Pointer(this); + currentPosition = streamStart + index; + Check(this); + } + void + operator=(size_t index) + {SetPointer(index);} + + void + Rewind() + {SetPointer(0U);} + + virtual Logical + AllocateBytes(size_t count) + {return GetBytesRemaining() <= count;} + virtual MemoryStream& + AdvancePointer(size_t count) + { + Check(this); + currentPosition += count; + Check(this); + return *this; + } + MemoryStream& + operator+=(size_t count) + {return AdvancePointer(count);} + + virtual MemoryStream& + RewindPointer(size_t count) + { + Check(this); + currentPosition -= count; + Check(this); + return *this; + } + MemoryStream& + operator-=(size_t count) + {return RewindPointer(count);} + + virtual MemoryStream& + ReadBytes( + void *ptr, + size_t number_of_bytes + ); + virtual MemoryStream& + WriteBytes( + const void *ptr, + size_t number_of_bytes + ); + + Logical + TestInstance() const; + + protected: + char + *streamStart, + *currentPosition; + size_t + streamSize; + }; + + //-------------------------------------------------------------------------- + // Extraction operators + // + template inline MemoryStream& + operator>>( + MemoryStream &stream, + T &output + ) + {return MemoryStream_Read(&stream, &output);} + + inline MemoryStream& + MemoryStream_Read( + MemoryStream* stream, + char *output + ) + {return stream->ReadBytes(output, sizeof(*output));} + inline MemoryStream& + MemoryStream_Read( + MemoryStream* stream, + Byte *output + ) + {return stream->ReadBytes(output, sizeof(*output));} + + inline MemoryStream& + MemoryStream_Read( + MemoryStream* stream, + short *output + ) + {return stream->ReadBytes(output, sizeof(*output));} + inline MemoryStream& + MemoryStream_Read( + MemoryStream* stream, + Word *output + ) + {return stream->ReadBytes(output, sizeof(*output));} + + inline MemoryStream& + MemoryStream_Read( + MemoryStream* stream, + int *output + ) + {return stream->ReadBytes(output, sizeof(*output));} + inline MemoryStream& + MemoryStream_Read( + MemoryStream* stream, + unsigned *output + ) + {return stream->ReadBytes(output, sizeof(*output));} + + inline MemoryStream& + MemoryStream_Read( + MemoryStream* stream, + long *output + ) + {return stream->ReadBytes(output, sizeof(*output));} + inline MemoryStream& + MemoryStream_Read( + MemoryStream* stream, + LWord *output + ) + {return stream->ReadBytes(output, sizeof(*output));} + + //-------------------------------------------------------------------------- + // Insertion operators + // + template inline MemoryStream& + operator<<( + MemoryStream &stream, + const T &input + ) + {return MemoryStream_Write(&stream, &input);} + + inline MemoryStream& + MemoryStream_Write( + MemoryStream* stream, + const char *input + ) + {return stream->WriteBytes(input, sizeof(*input));} + inline MemoryStream& + MemoryStream_Write( + MemoryStream* stream, + const Byte *input + ) + {return stream->WriteBytes(input, sizeof(*input));} + + inline MemoryStream& + MemoryStream_Write( + MemoryStream* stream, + const short *input + ) + {return stream->WriteBytes(input, sizeof(*input));} + inline MemoryStream& + MemoryStream_Write( + MemoryStream* stream, + const Word *input + ) + {return stream->WriteBytes(input, sizeof(*input));} + + inline MemoryStream& + MemoryStream_Write( + MemoryStream* stream, + const int *input + ) + {return stream->WriteBytes(input, sizeof(*input));} + inline MemoryStream& + MemoryStream_Write( + MemoryStream* stream, + const unsigned *input + ) + {return stream->WriteBytes(input, sizeof(*input));} + + inline MemoryStream& + MemoryStream_Write( + MemoryStream* stream, + const long *input + ) + {return stream->WriteBytes(input, sizeof(*input));} + inline MemoryStream& + MemoryStream_Write( + MemoryStream* stream, + const LWord *input + ) + {return stream->WriteBytes(input, sizeof(*input));} + + MemoryStream& + MemoryStream_Write( + MemoryStream* stream, + istream *input + ); + MemoryStream& + MemoryStream_Write( + MemoryStream* stream, + const MemoryStream* input_stream + ); + + #define MEM_STRM_WRITE_ENTRY(stream, name_list, type, name)\ + {\ + type name;\ + Check(name_list);\ + const char* data = (const char*)(name_list)->FindData(#name);\ + if (!data)\ + {\ + DEBUG_STREAM << "DYN_MEM_STRM_WRITE_ENTRY - #name == ";\ + DEBUG_STREAM << #name << "\n";\ + Fail("DYN_MEM_STRM_WRITE_ENTRY - (name_list)->FindData(#name) == NULL");\ + }\ + Check_Pointer(data);\ + Convert_From_Ascii(data, &name);\ + stream << name;\ + } + + //########################################################################## + //################### DynamicMemoryStream ############################ + //########################################################################## + + class DynamicMemoryStream: + public MemoryStream + { + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Construction, Destruction, and Testing + // + public: + DynamicMemoryStream(size_t stream_size=0); + DynamicMemoryStream( + void *stream_start, + size_t stream_size, + size_t initial_offset=0 + ); + ~DynamicMemoryStream(); + + Logical + TestInstance() const + { + return + (size_t)(currentPosition - streamStart) <= streamSize + && streamLength <= streamSize; + } + + size_t + GetBytesRemaining() const + { + Check(this); + return streamLength - GetBytesUsed(); + } + + Logical + AllocateBytes(size_t count); + + MemoryStream& + WriteBytes( + const void *ptr, + size_t number_of_bytes + ); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Private data + // + private: + size_t + streamLength; + Logical + ownsStream; + }; + +#endif + diff --git a/CODE/RP/MUNGA/MISSION.CPP b/CODE/RP/MUNGA/MISSION.CPP new file mode 100644 index 0000000..be374b6 --- /dev/null +++ b/CODE/RP/MUNGA/MISSION.CPP @@ -0,0 +1,649 @@ +//===========================================================================// +// File: mission.cc // +// Project: MUNGA Brick: Application // +// Contents: Implementation Details for missions // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 02/19/95 JMA Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(MISSION_HPP) +# include +#endif + +#if !defined(NAMELIST_HPP) +# include +#endif + +#if !defined(NOTATION_HPP) +# include +#endif + +#if !defined(GRAPH2D_HPP) +# include +#endif + +//############################################################################# +//####################### MissionHostData ############################### +//############################################################################# + +MissionHostData::MissionHostData( + const CString &address_string, + HostType host_type +): + addressString(address_string), + hostType(host_type) +{ +} + +MissionHostData::~MissionHostData() +{ +} + +//############################################################################# +//########################### Mission ################################### +//############################################################################# + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + Mission::LoadOrdinalBitmaps(NotationFile *notation_file) +{ +// +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Load ordinal bitmaps from egg +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// + Check(notation_file); + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Make an entrylist of all the bitmap names + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + NameList *ord_namelist = notation_file->MakeEntryList("ordinals", "bitmap"); + if (!ord_namelist) + { + Warn("No Ordinal Bitmaps in Egg \n"); + return; + } + Register_Object(ord_namelist); + NameList::Entry *ord_entry = ord_namelist->GetFirstEntry(); + BitMap *new_bitmap; + int index(0); + while(ord_entry) + { + // + //~~~~~~~~~~~~~~~~~~~~~~~~ + // Get the bitmap pageName + //~~~~~~~~~~~~~~~~~~~~~~~~ + // + ++index; + CString ord_bitmap_name = ord_entry->GetChar(); + new_bitmap = new BitMap(notation_file, ord_bitmap_name); + + Register_Object(new_bitmap); + ordinalBitmapChain.AddValue(new_bitmap, index); + // + //~~~~~~~~~~~~~~~~~~~~ + // Increment the index + //~~~~~~~~~~~~~~~~~~~~ + // + ord_entry = ord_entry->GetNextEntry(); + } + + Unregister_Object(ord_namelist); + delete ord_namelist; +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + Mission::LoadTeamBitmaps(NotationFile *notation_file) +{ +// +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Load team bitmaps from egg +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// + Check(notation_file); + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Make an entrylist of all the team names + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + NameList *team_namelist = notation_file->MakeEntryList("teams", "team"); + if (!team_namelist) + { + return; + } + Register_Object(team_namelist); + NameList::Entry *team_entry = team_namelist->GetFirstEntry(); + BitMap *new_bitmap; + int index(0); + while(team_entry) + { + // + //~~~~~~~~~~~~~~~~~~~~~~~~ + // Get the team pageName + //~~~~~~~~~~~~~~~~~~~~~~~~ + // + CString team_name = team_entry->GetChar(); + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Get the Team Bitmap Page Name + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + const char *team_bitmap_name; + notation_file->GetEntry( + team_name, + "bitmap", + &team_bitmap_name + ); + // + //~~~~~~~~~~~~~~~~~~ + // Create the bitMap + //~~~~~~~~~~~~~~~~~~ + // + new_bitmap = new BitMap(notation_file, team_bitmap_name); + Register_Object(new_bitmap); + teamBitmapChain.AddValue(new_bitmap, index); + // + //~~~~~~~~~~~~~~~~~~~~ + // Increment the index + //~~~~~~~~~~~~~~~~~~~~ + // + ++index; + team_entry = team_entry->GetNextEntry(); + } + Unregister_Object(team_namelist); + delete team_namelist; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + Mission::LoadNameBitmaps(NotationFile *notation_file) +{ +// +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Load name bitmaps from egg +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// + Check(notation_file); + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Make an entrylist of all the large bitmap names + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + NameList *large_namelist = notation_file->MakeEntryList("largebitmap", "bitmap"); + if (!large_namelist) + { + Warn("No Large NameBitmaps in Egg \n"); + return; + } + Register_Object(large_namelist); + NameList::Entry *large_entry = large_namelist->GetFirstEntry(); + + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Make an entrylist of all the small bitmap names + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + NameList *small_namelist = notation_file->MakeEntryList("smallbitmap", "bitmap"); + if (!small_namelist) + { + Warn("No Small NameBitmaps in Egg \n"); + return; + } + Register_Object(small_namelist); + NameList::Entry *small_entry = small_namelist->GetFirstEntry(); + + BitMap *new_bitmap; + CString large_bitmap_name, small_bitmap_name; + int index(0); + while(large_entry && small_entry) + { + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Create the large Name bitmap + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + ++index; + large_bitmap_name = large_entry->GetChar(); + new_bitmap = new BitMap(notation_file, large_bitmap_name); + Register_Object(new_bitmap); + largeNameBitmapChain.AddValue(new_bitmap, index); + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Create the small Name bitmap + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + small_bitmap_name = small_entry->GetChar(); + new_bitmap = new BitMap(notation_file, small_bitmap_name); + Register_Object(new_bitmap); + smallNameBitmapChain.AddValue(new_bitmap, index); + + small_entry = small_entry->GetNextEntry(); + large_entry = large_entry->GetNextEntry(); + } + + Unregister_Object(large_namelist); + delete large_namelist; + + Unregister_Object(small_namelist); + delete small_namelist; +} + + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + Mission::LoadLandmarkBitmaps(NotationFile *notation_file) +{ +// +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Load Landmark bitmaps from egg +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// + Check(notation_file); + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Make an entrylist of all the landmark names + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + NameList *landmark_namelist = notation_file->MakeEntryList("landmarks", "landmark"); + if (!landmark_namelist) + { + return; + } + Register_Object(landmark_namelist); + NameList::Entry *landmark_entry = landmark_namelist->GetFirstEntry(); + BitMap *new_bitmap; + int index(0); + while(landmark_entry) + { + // + //~~~~~~~~~~~~~~~~~~~~~~~~ + // Get the landmark pageName + //~~~~~~~~~~~~~~~~~~~~~~~~ + // + CString landmark_name = landmark_entry->GetChar(); + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Get the landmark Bitmap Page Name + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + const char *landmark_bitmap_name; + notation_file->GetEntry( + landmark_name, + "bitmap", + &landmark_bitmap_name + ); + // + //~~~~~~~~~~~~~~~~~~ + // Create the bitMap + //~~~~~~~~~~~~~~~~~~ + // + new_bitmap = new BitMap(notation_file, landmark_bitmap_name); + Register_Object(new_bitmap); + landmarkBitmapChain.AddValue(new_bitmap, index); + // + //~~~~~~~~~~~~~~~~~~~~ + // Increment the index + //~~~~~~~~~~~~~~~~~~~~ + // + ++index; + landmark_entry = landmark_entry->GetNextEntry(); + } + Unregister_Object(landmark_namelist); + delete landmark_namelist; +} + + +// +//############################################################################# +//############################################################################# +// +Mission::Mission( + NotationFile *notation_file, + ResourceFile *resources +): + missionHostSocket(NULL), + largeNameBitmapChain(NULL, True), + smallNameBitmapChain(NULL, True), + ordinalBitmapChain(NULL, True), + teamBitmapChain(NULL, True), + landmarkBitmapChain(NULL, True), + scenarioRoleChain(NULL, True) +{ + Check(notation_file); + Check(resources); + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // NULL out All allocated variables + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + colorName = NULL; + badgeName = NULL; + dropZoneName = NULL; + gameModel = NULL; + missionTime = NULL; + missionWeather = NULL; + scenarioName = NULL; + positionName = NULL; + // + //----------------- + // Get the map name + //----------------- + // + Logical ret; + const char *map_name; + + ret = notation_file->GetEntry("mission", "map", &map_name); + if (!ret) + { + DEBUG_STREAM << "ERROR: no map in egg!\n"; + Exit(AbortExitCodeID); + } + + // + //----------------------- + // Get the mission length + //----------------------- + // + gameLength = 0.0; + notation_file->GetEntry("mission", "length", &gameLength); + + // + //------------------------ + // Get the map resource id + //------------------------ + // + ResourceDescription *map = + resources->FindResourceDescription( + map_name, + ResourceDescription::MakeMessageStreamResourceType + ); + if (!map) + { + DEBUG_STREAM << "ERROR: Couldn't find map in resource file!\n"; + Exit(AbortExitCodeID); + } + Check(map); + mapID = map->resourceID; + + // + //---------------------------------- + // Get the existance map resource id + //---------------------------------- + // + map = + resources->FindResourceDescription( + map_name, + ResourceDescription::ExistanceBoxStreamResourceType + ); + if (!map) + { + DEBUG_STREAM << "ERROR: Couldn't find existance map in resource file!\n"; + Exit(AbortExitCodeID); + } + Check(map); + existanceMapID = map->resourceID; + + // + //--------------------------------------------- + // Get the mission time, weather, and scenario + //-------------------------------------------- + // + const char *mission_time; + const char *mission_weather; + const char *mission_scenario; + + ret = notation_file->GetEntry("mission", "time", &mission_time); + if (!ret) + { + DEBUG_STREAM << "ERROR: no time in egg!\n"; + Exit(AbortExitCodeID); + } + + ret = notation_file->GetEntry("mission", "weather", &mission_weather); + if (!ret) + { + DEBUG_STREAM << "ERROR: no weather in egg!\n"; + Exit(AbortExitCodeID); + } + + ret = notation_file->GetEntry("mission", "scenario", &mission_scenario); + if (!ret) + { + DEBUG_STREAM << "ERROR: no scenario in egg!\n"; + Exit(AbortExitCodeID); + } + + int length; + + length = strlen(mission_time) + 1; + missionTime = new char[length]; + Register_Pointer(missionTime); // safer to register BEFORE using + Str_Copy(missionTime, mission_time, length); + + length = strlen(mission_weather) + 1; + missionWeather = new char[length]; + Register_Pointer(missionWeather); // safer to register BEFORE using + Str_Copy(missionWeather, mission_weather, length); + + length = strlen(mission_scenario) + 1; + scenarioName = new char[length]; + Register_Pointer(scenarioName); // safer to register BEFORE using + Str_Copy(scenarioName, mission_scenario, length); + + // + //-------------------------- + // Get the mission host data + //-------------------------- + // + NameList *entry_list; + NameList::Entry *entry; + + playerCount = 0; + entry_list = notation_file->MakeEntryList("pilots", "pilot"); + Register_Object(entry_list); + entry = entry_list->GetFirstEntry(); + while (entry != NULL) + { + Check(entry); + + // + // Get the host address character string + // + char *host_address_pointer = entry->GetChar(); + Check_Pointer(host_address_pointer); + + // + // Create the host address string + // + CString host_address_string(host_address_pointer); + Check(&host_address_string); + + // + // Get the host type + // + int host_type; + + ret = notation_file->GetEntry( + host_address_pointer, + "hostType", + &host_type + ); + if (!ret) + { + DEBUG_STREAM << "ERROR: no host type in egg!\n"; + Exit(AbortExitCodeID); + } + + // + // Create the mission host data + // + MissionHostData *mission_host_data; + + mission_host_data = + new MissionHostData( + host_address_string, + (HostType)host_type + ); + Register_Object(mission_host_data); + + // + // Add to the host socket + // + missionHostSocket.Add(mission_host_data); + ++playerCount; + + entry = entry->GetNextEntry(); + } + #if DEBUG_LEVEL>0 + SChainIteratorOf iterator(&missionHostSocket); + Check(&iterator); + Verify(iterator.GetSize() > 0); + #endif + Unregister_Object(entry_list); + delete entry_list; + + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Load all the Bitmaps from the Notation File + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + LoadOrdinalBitmaps(notation_file); + LoadNameBitmaps(notation_file); + //LoadTeamBitmaps(notation_file); + //LoadLandmarkBitmaps(notation_file); + + positionName = NULL; +} + +// +//############################################################################# +//############################################################################# +// +Mission::~Mission() +{ + Check(this); + + // + // Delete mission host data + // + SChainIteratorOf iterator(&missionHostSocket); + Check(&iterator); + iterator.DeletePlugs(); + + // + // Delete the text fields + // + if (gameModel) + { + Unregister_Pointer(gameModel); + delete[] gameModel; + } + if (dropZoneName) + { + Unregister_Pointer(dropZoneName); + delete[] dropZoneName; + } + if (colorName) + { + Unregister_Pointer(colorName); + delete[] colorName; + } + if (badgeName) + { + Unregister_Pointer(badgeName); + delete[] badgeName; + } + if (positionName) + { + Unregister_Pointer(positionName); + delete[] positionName; + } + if (missionTime) + { + Unregister_Pointer(missionTime); + delete[] missionTime; + } + if (missionWeather) + { + Unregister_Pointer(missionWeather); + delete[] missionWeather; + } + if (scenarioName) + { + Unregister_Pointer(scenarioName); + delete[] scenarioName; + } + // + //~~~~~~~~~~~~~~~~~~~~~~~ + // delete all the bitmaps + //~~~~~~~~~~~~~~~~~~~~~~~ + // + VChainIteratorOf small_iterator(smallNameBitmapChain); + small_iterator.DeletePlugs(); + + VChainIteratorOf large_iterator(largeNameBitmapChain); + large_iterator.DeletePlugs(); + + VChainIteratorOf ordinal_iterator(ordinalBitmapChain); + ordinal_iterator.DeletePlugs(); + + VChainIteratorOf team_iterator(teamBitmapChain); + team_iterator.DeletePlugs(); + + VChainIteratorOf landmark_iterator(landmarkBitmapChain); + landmark_iterator.DeletePlugs(); + + + VChainIteratorOf role_iterator(scenarioRoleChain); + role_iterator.DeletePlugs(); +} + +// +//############################################################################# +//############################################################################# +// +void + Mission::SetPlayerData( + NotationFile * //notation_file + ) +{ +} + +// +//############################################################################# +//############################################################################# +// +Logical + Mission::TestInstance() const +{ + Check(&missionHostSocket); + return True; +} + +//############################################################################# +//###################### Mission_HostIterator ########################### +//############################################################################# + +Mission_HostIterator::Mission_HostIterator(Mission *mission): + SChainIteratorOf(&mission->missionHostSocket) +{ +} + +Mission_HostIterator::~Mission_HostIterator() +{ +} + diff --git a/CODE/RP/MUNGA/MISSION.HPP b/CODE/RP/MUNGA/MISSION.HPP new file mode 100644 index 0000000..805e302 --- /dev/null +++ b/CODE/RP/MUNGA/MISSION.HPP @@ -0,0 +1,316 @@ +//===========================================================================// +// File: mission.hh // +// Project: MUNGA Brick: Application // +// Contents: Interface specification for missions // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 02/19/95 JMA Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(MISSION_HPP) +# define MISSION_HPP + +# if !defined(CSTR_HPP) +# include +# endif + +# if !defined(SCHAIN_HPP) +# include +# endif + +# if !defined(VCHAIN_HPP) +# include +# endif + +# if !defined(RESOURCE_HPP) +# include +# endif + +# if !defined(HOST_HPP) +# include +# endif + +# if !defined(SCNROLE_HPP) +# include +# endif + + class BitMap; + + //########################################################################## + //####################### MissionHostData ############################ + //########################################################################## + + class MissionHostData: + public Plug + { + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Construction, Destruction + // + public: + MissionHostData( + const CString &address_string, + HostType host_type + ); + virtual ~MissionHostData(); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Accessors + // + public: + CString + GetAddressString() + {return addressString;} + HostType + GetHostType() + {return hostType;} + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Private data + // + private: + CString addressString; + HostType hostType; + }; + + //########################################################################## + //########################### Mission ################################ + //########################################################################## + + class Mission SIGNATURED + { + friend class Mission_HostIterator; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Public types + // + public: + typedef Mission_HostIterator HostIterator; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Construction, Destruction, and Testing + // + public: + Mission( + NotationFile *notation_file, + ResourceFile *resources + ); + virtual ~Mission(); + + Logical + TestInstance() const; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Set the player data + // + public: + virtual void + SetPlayerData(NotationFile *notation_file); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Accessors + // + public: + ResourceDescription::ResourceID + GetMapID(); + ResourceDescription::ResourceID + GetExistanceMapID(); + const char* + GetDropZoneName() + {Check(this); return dropZoneName;} + const char* + GetGameModel() + {Check(this); return gameModel;} + Logical + IsDropZoneHost() + {Check(this); return dropZoneHost;} + const char* + GetColorName() + {Check(this); return colorName;} + const char* + GetBadgeName() + {Check(this); return badgeName;} + const char* + GetMissionTime() + {Check(this); return missionTime;} + const char* + GetMissionWeather() + {Check(this); return missionWeather;} + const char* + GetScenarioName() + {Check(this); return scenarioName;} + + int + GetTeamID() + { Check(this); return teamID; } + int + GetPlayerCount() + {Check(this); return playerCount;} + + const char* + GetPositionName() + { Check(this); return positionName; } + + Scalar + GetGameLength() + { Check(this); return gameLength; } + + BitMap* + GetLargeNameBitmap(int index) + { + Check(this); + return largeNameBitmapChain.Find(index); + } + + BitMap* + GetSmallNameBitmap(int index) + { + Check(this); + return smallNameBitmapChain.Find(index); + } + + BitMap* + GetOrdinalBitmap(int index) + { + Check(this); + return ordinalBitmapChain.Find(index); + } + + BitMap* + GetTeamBitmap(int team_index) + { + Check(this); + return teamBitmapChain.Find(team_index); + } + + BitMap* + GetLandmarkBitmap(int landmark_index) + { + Check(this); + return landmarkBitmapChain.Find(landmark_index); + } + + int + GetPlayerBitmapIndex() const + {Check(this); return playerBitmapIndex;} + + ScenarioRole* + GetScenarioRole(const CString &role_name) + { + Check(this); + VChainIteratorOf iterator(scenarioRoleChain); + return iterator.Find(role_name); + } + + void + AddScenarioRole(ScenarioRole *scenario_role) + { + Check(this); + Check(scenario_role); + if (!GetScenarioRole(scenario_role->GetRoleName())) + { + scenarioRoleChain.AddValue(scenario_role, scenario_role->GetRoleName()); + } + #if DEBUG_LEVEL > 0 + else + { + Tell(scenario_role->GetRoleName()); + Warn(" already exists not adding to Mission \n"); + } + #endif + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Protected data + // + protected: + + ResourceDescription::ResourceID + mapID, + existanceMapID; + SChainOf + missionHostSocket; + char + *colorName, + *badgeName, + *dropZoneName, + *gameModel, + *missionTime, + *missionWeather, + *scenarioName; + + Logical + dropZoneHost; + char + *positionName; + + int + teamID, + playerCount; + + int + playerBitmapIndex; + + VChainOf + scenarioRoleChain; + + VChainOf + largeNameBitmapChain, + smallNameBitmapChain; + + VChainOf + ordinalBitmapChain; + + VChainOf + teamBitmapChain; + + VChainOf + landmarkBitmapChain; + + void + LoadOrdinalBitmaps(NotationFile *notation_file); + + void + LoadNameBitmaps(NotationFile *notation_file); + + void + LoadTeamBitmaps(NotationFile *notation_file); + + void + LoadLandmarkBitmaps(NotationFile *notation_file); + + Scalar + gameLength; + }; + + inline ResourceDescription::ResourceID + Mission::GetMapID() + { + Check(this); + return mapID; + } + + inline ResourceDescription::ResourceID + Mission::GetExistanceMapID() + { + Check(this); + return existanceMapID; + } + + //########################################################################## + //##################### Mission_HostIterator ######################### + //########################################################################## + + class Mission_HostIterator: + public SChainIteratorOf + { + public: + Mission_HostIterator(Mission *mission); + ~Mission_HostIterator(); + }; + +#endif diff --git a/CODE/RP/MUNGA/MODE.CPP b/CODE/RP/MUNGA/MODE.CPP new file mode 100644 index 0000000..ce8cc31 --- /dev/null +++ b/CODE/RP/MUNGA/MODE.CPP @@ -0,0 +1,75 @@ +//==========================================================================// +// File: mode.cpp // +// Project: MUNGA Brick: Controls Manager // +// Contents: Interface specification for Controls/Gauges // +//--------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ----------------------------------------------------------// +// 02/13/96 CPB First created // +//--------------------------------------------------------------------------// +// Copyright (C) 1996, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//==========================================================================// + +#include +#pragma hdrstop + +#if !defined(MODE_HPP) +# include +#endif + +#if defined(DEBUG) +# define Test_Tell(n) DEBUG_STREAM << n +#else +# define Test_Tell(n) +#endif + +//############################################################################ +//############################ ModeManager ############################# +//############################################################################ +ModeManager::ModeManager(ModeMask initial_mask) +{ + Check_Pointer(this); + + modeMask = initial_mask; + + Check_Fpu(); +} + +ModeManager::~ModeManager() +{ + Check(this); + Check_Fpu(); +} + +Logical + ModeManager::TestInstance() const +{ + Check_Fpu(); + return True; +} + +Logical + ModeManager::ModeStringLookup( + const char *name, + ModeMask *returned_value + ) +{ + Check(this); + + // There's only one mode value available at this level. + + if (stricmp(name, "ModeAlwaysActive") == 0) + { + *returned_value = ModeManager::ModeAlwaysActive; + Check_Fpu(); + return True; + } + else + { + *returned_value = (ModeMask) 0; + } + Check_Fpu(); + return False; +} diff --git a/CODE/RP/MUNGA/MODE.HPP b/CODE/RP/MUNGA/MODE.HPP new file mode 100644 index 0000000..7a98121 --- /dev/null +++ b/CODE/RP/MUNGA/MODE.HPP @@ -0,0 +1,107 @@ +//===========================================================================// +// File: mode.hpp // +// Project: MUNGA Brick: Controls Module // +// Contents: Interface specification for Controls/Gauges modules // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- -----------------------------------------------------------// +// 2/13/96 CPB Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1996, Virtual World Entertainment, Inc. All rights reserved // +// PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(MODE_HPP) +# define MODE_HPP + +# if !defined(STYLE_HPP) +# include +# endif + + //######################################################################## + //############################ Basic typedefs ############################ + //######################################################################## + typedef unsigned long ModeMask; + + //######################################################################### + //############################## ModeManager ############################## + //######################################################################### + class ModeManager SIGNATURED + { + public: + enum + { + nextModeBit=0 + }; + enum + { + ModeAlwaysActive = -1L // WARNING! Assumed to be 32 bits!!! + }; + + //------------------------------------------------------------------- + // Construction/destruction/verification + //------------------------------------------------------------------- + public: + ModeManager(ModeMask initial_mask); + ~ModeManager(); + + Logical + TestInstance() const; + + //------------------------------------------------------------------- + // Mode mask accessor + //------------------------------------------------------------------- + public: + void + AddModeMask(ModeMask mode_mask) + { + Check(this); + previousModeMask = modeMask; + modeMask |= mode_mask; + Check_Fpu(); + } + void + RemoveModeMask(ModeMask mode_mask) + { + Check(this); + previousModeMask = modeMask; + modeMask &= ~mode_mask; + Check_Fpu(); + } + void + ReplaceModeMask(ModeMask mode_mask) + { + Check(this); + previousModeMask = modeMask; + modeMask = mode_mask; + Check_Fpu(); + } + ModeMask + GetModeMask() + { + Check(this); + Check_Fpu(); + return modeMask; + } + + ModeMask + GetPreviousModeMask() + { + Check(this); + Check_Fpu(); + return previousModeMask; + } + //------------------------------------------------------------------- + // String-to-Mode lookup + //------------------------------------------------------------------- + public: + virtual Logical + ModeStringLookup(const char *name, ModeMask *returned_value); + + protected: + ModeMask + modeMask, previousModeMask; + }; + +#endif + diff --git a/CODE/RP/MUNGA/MOTION.CPP b/CODE/RP/MUNGA/MOTION.CPP new file mode 100644 index 0000000..9289148 --- /dev/null +++ b/CODE/RP/MUNGA/MOTION.CPP @@ -0,0 +1,110 @@ +//===========================================================================// +// File: motion.cc // +// Project: MUNGA Brick: Math Library // +// Contents: Implementation details for the position class // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 01/19/95 JMA Initial coding. // +// 01/29/95 JMA Added origin concatenation // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(MOTION_HPP) + #include +#endif + +const Motion + Motion::Identity(Vector3D::Identity, Vector3D::Identity); + +#if defined(USE_SIGNATURE) + int + Is_Signature_Bad(const volatile Motion *) + { + return False; + } +#endif + +Motion::Motion(const Motion& motion) +{ + Check_Pointer(this); + Check(&motion); + + angularMotion = motion.angularMotion; + linearMotion = motion.linearMotion; +} + +// +//########################################################################### +//########################################################################### +// +Motion& + Motion::operator=(const Motion &motion) +{ + Check_Pointer(this); + Check(&motion); + + angularMotion = motion.angularMotion; + linearMotion = motion.linearMotion; + return *this; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + Motion::operator==(const Motion &motion) const +{ + Check(this); + return (memcmp(this, &motion, sizeof(Motion)) == 0); +} + +// +//########################################################################### +//########################################################################### +// +Motion& + Motion::AddScaled( + const Motion& source, + const Motion& delta, + Scalar t + ) +{ + Check_Pointer(this); + Check(&source); + Check(&delta); + Verify(t >= 0.0f); + + linearMotion.AddScaled(source.linearMotion, delta.linearMotion, t); + angularMotion.AddScaled(source.angularMotion, delta.angularMotion, t); + return *this; +} + +// +//########################################################################### +//########################################################################### +// +ostream& + operator<<( + ostream& stream, + const Motion& p + ) +{ + return stream << '{' << p.linearMotion << ',' << p.angularMotion << '}'; +} + +// +//########################################################################### +//########################################################################### +// +Logical + Motion::TestInstance() const +{ + return angularMotion.TestInstance(); +} + diff --git a/CODE/RP/MUNGA/MOTION.HPP b/CODE/RP/MUNGA/MOTION.HPP new file mode 100644 index 0000000..d4ee506 --- /dev/null +++ b/CODE/RP/MUNGA/MOTION.HPP @@ -0,0 +1,88 @@ +//===========================================================================// +// File: motion.hh // +// Project: MUNGA Brick: Math Library // +// Contents: Implementation details for the position class // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 01/30/95 JMA Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(MOTION_HPP) +# define MOTION_HPP + +# if !defined(VECTOR3D_HPP) +# include +# endif + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~ Motion ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class Motion + { + public: + #if defined(USE_SIGNATURE) + friend int + Is_Signature_Bad(const volatile Motion *); + #endif + + Vector3D + linearMotion; + Vector3D + angularMotion; + + static const Motion + Identity; + + // + // Constructors + // + Motion() + {} + Motion(const Motion& motion); + Motion( + const Vector3D& t, + const Vector3D& q + ) + {Check(&t); Check(&q); linearMotion = t; angularMotion = q;} + + // + // Assignment operators + // + Motion& + operator=(const Motion& p); + + // + // Equality operator + // + Logical + operator==(const Motion&) const; + + // + // Origin motion + // + Motion& + AddScaled( + const Motion& source, + const Motion& delta, + Scalar t + ); + + // + // Support functions + // + friend ostream& + operator<<( + ostream& stream, + const Motion& p + ); + Logical + TestInstance() const; + static Logical + TestClass(); + }; + +#endif diff --git a/CODE/RP/MUNGA/MOVER.CPP b/CODE/RP/MUNGA/MOVER.CPP new file mode 100644 index 0000000..328b72b --- /dev/null +++ b/CODE/RP/MUNGA/MOVER.CPP @@ -0,0 +1,2126 @@ +//===========================================================================// +// File: mover.cc // +// Project: MUNGA Brick: Model Manager // +// Contents: Implementation details of 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 // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(MOVER_HPP) + #include +#endif + +#if !defined(PLAYER_HPP) + #include +#endif + +#if !defined(BOXSOLID_HPP) + #include +#endif + +#if !defined(INTEREST_HPP) + #include +#endif + +#if !defined(COLLASST_HPP) + #include +#endif + +#if !defined(DOORFRAM_HPP) + #include +#endif + +#if !defined(DOOR_HPP) + #include +#endif + +#if !defined(LINE_HPP) + #include +#endif + +#if !defined(APP_HPP) + #include +#endif + +#if !defined(NOTATION_HPP) + #include +#endif + +//############################################################################# +//############################### Mover ################################# +//############################################################################# + +//############################################################################# +// Shared Data Support +// +Derivation + Mover::ClassDerivations( + Entity::ClassDerivations, + "Mover" + ); + +Mover::SharedData + Mover::DefaultData( + Mover::ClassDerivations, + Mover::MessageHandlers, + Mover::AttributeIndex, + Mover::StateCount, + (Entity::MakeHandler)Mover::Make + ); + +//############################################################################# +// Message Support +// +#if 0 +const Receiver::HandlerEntry + Mover::MessageHandlerEntries[]= +{ + MESSAGE_ENTRY(Mover, Update) +}; + +Entity::MessageHandlerSet + Mover::MessageHandlers( + ELEMENTS(Mover::MessageHandlerEntries), + Mover::MessageHandlerEntries, + Entity::MessageHandlers + ); +#endif + +//############################################################################# +// Attribute Support +// +const Mover::IndexEntry + Mover::AttributePointers[]= +{ + ATTRIBUTE_ENTRY(Mover, LocalVelocity, localVelocity), + ATTRIBUTE_ENTRY(Mover, LocalAcceleration, localAcceleration), + ATTRIBUTE_ENTRY(Mover, WorldLinearVelocity, worldLinearVelocity), + ATTRIBUTE_ENTRY(Mover, WorldLinearAcceleration, worldLinearAcceleration), + ATTRIBUTE_ENTRY(Mover, MoverMass, moverMass), + ATTRIBUTE_ENTRY(Mover, MomentOfInertia, momentOfInertia), + ATTRIBUTE_ENTRY( + Mover, + PositiveLinearDragCoefficients, + positiveLinearDragCoefficients + ), + ATTRIBUTE_ENTRY( + Mover, + NegativeLinearDragCoefficients, + negativeLinearDragCoefficients + ), + ATTRIBUTE_ENTRY(Mover, AngularDragCoefficients, angularDragCoefficients), + ATTRIBUTE_ENTRY(Mover, FrictionCoefficient, frictionCoefficient), + ATTRIBUTE_ENTRY(Mover, ElasticityCoefficient, elasticityCoefficient), + ATTRIBUTE_ENTRY(Mover, MinimumBounceSpeed, minimumBounceSpeed) +}; + +Mover::AttributeIndexSet + Mover::AttributeIndex( + ELEMENTS(Mover::AttributePointers), + Mover::AttributePointers, + Entity::AttributeIndex + ); + +//############################################################################# +// Model Support +// + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + Mover::UpdateWorldMotion() +{ + Check(this); + + // + //--------------------------------------------------- + // Move the accelerations back into world coordinates + //--------------------------------------------------- + // + worldLinearAcceleration.Multiply( + localAcceleration.linearMotion, + localToWorld + ); + worldLinearVelocity.Multiply( + localVelocity.linearMotion, + localToWorld + ); + Check_Fpu(); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + Mover::UpdateLocalMotion() +{ + Check(this); + localVelocity.linearMotion.MultiplyByInverse( + worldLinearVelocity, + localToWorld + ); + localAcceleration.linearMotion.MultiplyByInverse( + worldLinearAcceleration, + localToWorld + ); + Check_Fpu(); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + Mover::ApplyWorldAccelerations(Scalar time_slice) +{ + Check(this); + Verify(time_slice > 0.0f); + + // + //-------------------------------------------------- + // Calculate the new position as p += v*t + a*.5*t*t + //-------------------------------------------------- + // + Scalar + half_t_squared = 0.5f * time_slice * time_slice; + Vector3D + position_delta; + position_delta.Multiply(worldLinearAcceleration, half_t_squared); + Check_Fpu(); + + position_delta.AddScaled( + position_delta, + worldLinearVelocity, + time_slice + ); + Check_Fpu(); + + localOrigin.linearPosition.Add(localOrigin.linearPosition, position_delta); + Check_Fpu(); + + position_delta.Multiply(localAcceleration.angularMotion, half_t_squared); + Check_Fpu(); + + position_delta.AddScaled( + position_delta, + localVelocity.angularMotion, + time_slice + ); + Check_Fpu(); + + Quaternion + old_position = localOrigin.angularPosition; + localOrigin.angularPosition.Add(old_position, position_delta); + Check_Fpu(); + // + //----------------------------------- + // Calculate our velocity as v += a*t + //----------------------------------- + // + worldLinearVelocity.AddScaled( + worldLinearVelocity, + worldLinearAcceleration, + time_slice + ); + Check_Fpu(); + localVelocity.angularMotion.AddScaled( + localVelocity.angularMotion, + localAcceleration.angularMotion, + time_slice + ); + Check_Fpu(); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + Mover::CalculateDrag( + Vector3D *drag, + const Vector3D &velocity, + const Vector3D &positive_CODs, + const Vector3D &negative_CODs, + Scalar power + ) +{ + Environment *air = GetEnvironment(); + Check(air); + Vector3D temp,temp2; + temp.MultiplyByInverse(air->GetWindVelocity(), localToWorld); + temp += velocity; + + if (temp.x < 0.0f) + { + drag->x = negative_CODs.x; + temp2.x = Power(-temp.x, power); + Check_Fpu(); + } + else + { + drag->x = -positive_CODs.x; + temp2.x = Power(temp.x, power); + Check_Fpu(); + } + + if (temp.y < 0.0f) + { + drag->y = negative_CODs.y; + temp2.y = Power(-temp.y, power); + Check_Fpu(); + } + else + { + drag->y = -positive_CODs.y; + temp2.y = Power(temp.y, power); + Check_Fpu(); + } + + if (temp.z < 0.0f) + { + drag->z = negative_CODs.z; + temp2.z = Power(-temp.z, power); + Check_Fpu(); + } + else + { + drag->z = -positive_CODs.z; + temp2.z = Power(temp.z, power); + Check_Fpu(); + } + + *drag *= air->airDensity; + drag->Multiply(*drag, temp2); + + Check_Fpu(); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + Mover::ApplyAirResistanceAndGravity(Scalar power) +{ + Check(this); + + // + //------------------------------------------------------------------------- + // Apply drag to the system, allowing for different drag numbers based upon + // the direction of motion along the axis + //------------------------------------------------------------------------- + // + Vector3D acceleration; + CalculateDrag( + &acceleration, + localVelocity.linearMotion, + positiveLinearDragCoefficients, + negativeLinearDragCoefficients, + power + ); + localAcceleration.linearMotion += acceleration; + + acceleration.Multiply(angularDragCoefficients, localVelocity.angularMotion); + localAcceleration.angularMotion -= acceleration; + + // + //--------------------------- + // Apply gravity to the craft + //--------------------------- + // + UpdateWorldMotion(); + worldLinearAcceleration.y -= GetEnvironment()->gravityConstant; + Check_Fpu(); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + Mover::ApplyLocalForce( + const Vector3D &force, + const Vector3D &moment + ) +{ + Check(this); + Check(&force); + Check(&moment); + + Vector3D acceleration; + Verify(!Small_Enough(moverMass)); + acceleration.Divide(force, moverMass); + ApplyLocalAcceleration(acceleration, moment); + Check_Fpu(); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + Mover::ApplyLocalAcceleration( + const Vector3D &acceleration, + const Vector3D &moment + ) +{ + Check(this); + Check(&acceleration); + Check(&moment); + + localAcceleration.linearMotion += acceleration; + Vector3D torque; + torque.Cross(moment, acceleration); + torque *= momentOfInertia; + localAcceleration.angularMotion += torque; + Check_Fpu(); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + Mover::NoDeadReckoner() +{ + Check(this); + + // + //------------------------------------------------------------------------- + // If we are the replicant instance and we are not yet past the anticipated + // time for the next event, project out to the next event + //------------------------------------------------------------------------- + // + projectedOrigin = updateOrigin; + Check_Fpu(); + return False; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + Mover::LinearDeadReckoner() +{ + Check(this); + Logical lerp_mode; + Scalar time_slice; + + // + //------------------------------------------------------------------------- + // If we are the replicant instance and we are not yet past the anticipated + // time for the next event, project out to the next event + //------------------------------------------------------------------------- + // + if (GetInstance() == ReplicantInstance && lastPerformance < nextUpdate) + { + time_slice = nextUpdate - lastUpdate; + lerp_mode = True; + } + else + { + time_slice = lastPerformance - lastUpdate; + lerp_mode = False; + } + + // + //--------------------------------------- + // Calculate the new position as p += v*t + //--------------------------------------- + // + Vector3D position_delta; + position_delta.Multiply(updateVelocity.linearMotion, time_slice); + projectedOrigin.linearPosition.Add( + updateOrigin.linearPosition, + position_delta + ); + + // + //------------------------------- + // Handle projecting the rotation + //------------------------------- + // + position_delta.Multiply(updateVelocity.angularMotion, time_slice); + projectedOrigin.angularPosition.Add( + updateOrigin.angularPosition, + position_delta + ); + projectedVelocity = updateVelocity; + + Check_Fpu(); + return lerp_mode; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + Mover::AcceleratedDeadReckoner() +{ + Check(this); + Logical lerp_mode; + Scalar time_slice; + + // + //------------------------------------------------------------------------- + // If we are the replicant instance and we are not yet past the anticipated + // time for the next event, project out to the next event + //------------------------------------------------------------------------- + // + if (GetInstance() == ReplicantInstance && lastPerformance < nextUpdate) + { + time_slice = nextUpdate - lastUpdate; + lerp_mode = True; + } + else + { + time_slice = lastPerformance - lastUpdate; + lerp_mode = False; + } + + // + //-------------------------------------------------- + // Calculate the new position as p += v*t + a*.5*t*t + //-------------------------------------------------- + // + Scalar half_t_squared = 0.5f * time_slice * time_slice; + Vector3D position_delta; + position_delta.Multiply(updateAcceleration.linearMotion, half_t_squared); + position_delta.AddScaled( + position_delta, + updateVelocity.linearMotion, + time_slice + ); + projectedOrigin.linearPosition.Add( + updateOrigin.linearPosition, + position_delta + ); + + // + //------------------------------- + // Handle projecting the rotation + //------------------------------- + // + position_delta.Multiply(updateAcceleration.angularMotion, half_t_squared); + position_delta.AddScaled( + position_delta, + updateVelocity.angularMotion, + time_slice + ); + projectedOrigin.angularPosition.Add( + updateOrigin.angularPosition, + position_delta + ); + + // + //----------------------------------- + // Calculate our velocity as v += a*t + //----------------------------------- + // + if (GetInstance() == ReplicantInstance) + { + projectedVelocity.linearMotion.AddScaled( + updateVelocity.linearMotion, + worldLinearAcceleration, + time_slice + ); + projectedVelocity.angularMotion.AddScaled( + updateVelocity.angularMotion, + localAcceleration.angularMotion, + time_slice + ); + } + Check_Fpu(); + return lerp_mode; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + Mover::DeadReckon(Scalar time_slice) +{ + Check(this); + + // + //------------------------------ + // Run the chosen dead reckoning + //------------------------------ + // + Verify(GetInstance() == ReplicantInstance); + if (deadReckoner) + { + // + //--------------------------------------------------------------------- + // Merge the projected origin with the current origin if we are in lerp + // mode. If not, just copy the projected origin into the local origin + //--------------------------------------------------------------------- + // + if ((this->*deadReckoner)()) + { + Scalar percent = + time_slice / ((nextUpdate - lastPerformance) + time_slice); + + // + //------------------------------------------ + // Do a spherical lerp on the angular motion + //------------------------------------------ + // + localOrigin.angularPosition.Lerp( + localOrigin.angularPosition, + projectedOrigin.angularPosition, + percent + ); + localVelocity.angularMotion.Lerp( + localVelocity.angularMotion, + projectedVelocity.angularMotion, + percent + ); + + // + //------------------------- + // Spline the linear motion + //------------------------- + // + #if 0 + CubicCurve + spline( + localOrigin.linearPosition, + worldLinearVelocity, + projectedOrigin.linearPosition, + projectedVelocity.linearMotion + ); + spline.Evaluate( + percent, + &localOrigin.linearPosition, + &worldLinearVelocity + ); + #else + localOrigin.linearPosition.Lerp( + localOrigin.linearPosition, + projectedOrigin.linearPosition, + percent + ); + worldLinearVelocity.Lerp( + worldLinearVelocity, + projectedVelocity.linearMotion, + percent + ); + #endif + } + else + { + localOrigin = projectedOrigin; + worldLinearVelocity = projectedVelocity.linearMotion; + localVelocity.angularMotion = projectedVelocity.angularMotion; + } + + // + //---------------------------------------------------- + // Update the collision volume and the local variables + //---------------------------------------------------- + // + if (IsCollisionVolume()) + { + MoveCollisionVolume(); + } + else + { + localToWorld = localOrigin; + } + UpdateLocalMotion(); + } + Check_Fpu(); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + Mover::PerformAndWatch( + const Time &till, + MemoryStream *update_stream + ) +{ + Check(this); + Check(&till); + + int i; + + // + //-------------------------------------------------------------------------- + // Make sure that the time into the simulations is stable. If a half-second + // delay occurs, or we are in stasis, just bring everything up to date + //-------------------------------------------------------------------------- + // + Scalar time_slice = till - lastPerformance; + if (time_slice < SMALL) + { + Tell("No time!\n"); +Bye_Bye: + WriteSimulationUpdate(update_stream); + return; + } + + if (GetSimulationState() == StasisState || time_slice > 0.5f) + { + lastPerformance = till; + if (GetSimulationState() == StasisState) + { + lastUpdate = till; + } + if (subsystemArray) + { + Check_Pointer(subsystemArray); + for (i=0; iSetLastPerformance(till); + } + } + } + //SetSimulationState(DefaultState); + goto Bye_Bye; + } + + // + //------------------------------------ + // Set up for local motion calculation + //------------------------------------ + // + localVelocity.linearMotion.MultiplyByInverse( + worldLinearVelocity, + localToWorld + ); + localAcceleration = Motion::Identity; + previousOrigin = localOrigin; + + // + //----------------------- + // Process the subsystems + //----------------------- + // + Entity::PerformAndWatch(till, update_stream); + + // + //----------------------------------------------- + // Make sure the position quaternion stays stable + //----------------------------------------------- + // + if (++normalizeCount == 20) + { + localOrigin.angularPosition.Normalize(); + normalizeCount = 0; + } + Check_Fpu(); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + Mover::ReadUpdateRecord(Simulation::UpdateRecord *record) +{ + Check(this); + Check_Pointer(record); + switch (record->recordID) + { + case DefaultUpdateModelBit: + { + + // + //------------------------------------------- + // HACK - precalculation for next update time + //------------------------------------------- + // + nextUpdate = Now(); + Scalar diff = nextUpdate - lastUpdate; + if (diff < 10.0f) + { + nextUpdate.ticks += nextUpdate.ticks - lastUpdate.ticks; + } + + // + //--------------------------------------- + // Handle updating the entity information + //--------------------------------------- + // + Entity::ReadUpdateRecord(record); + + // + //----------------------- + // Update the motion data + //----------------------- + // + UpdateRecord *update = (UpdateRecord*)record; + + localAcceleration = update->localAcceleration; + worldLinearAcceleration = update->worldLinearAcceleration; + + updateVelocity.linearMotion = update->worldLinearVelocity; + updateVelocity.angularMotion = update->localVelocity.angularMotion; + + updateAcceleration.linearMotion = update->worldLinearAcceleration; + updateAcceleration.angularMotion = update->localAcceleration.angularMotion; + + // + //----------------------------------------- + // Update the collision volume if necessary + //----------------------------------------- + // + if (IsCollisionVolume()) + { + MoveCollisionVolume(); + } + } + break; + + default: + Entity::ReadUpdateRecord(record); + break; + } + Check_Fpu(); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + Mover::WriteUpdateRecord( + Simulation::UpdateRecord *record, + int update_model + ) +{ + Check(this); + Check_Pointer(record); + switch (update_model) + { + case DefaultUpdateModelBit: + { + Entity::WriteUpdateRecord(record, update_model); + + UpdateRecord *update = (UpdateRecord*)record; + + update->recordLength = sizeof(*update); + update->localVelocity = localVelocity; + update->localAcceleration = localAcceleration; + + update->worldLinearVelocity = worldLinearVelocity; + update->worldLinearAcceleration = worldLinearAcceleration; + + updateVelocity.linearMotion = worldLinearVelocity; + updateVelocity.angularMotion = localVelocity.angularMotion; + + updateAcceleration.linearMotion = worldLinearAcceleration; + updateAcceleration.angularMotion = localAcceleration.angularMotion; + } + break; + default: + Entity::WriteUpdateRecord(record, update_model); + break; + } + Check_Fpu(); +} + +//############################################################################# +// Collision support +// + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + Mover::MoveCollisionVolume() +{ + // + //--------------------------------------------------- + // Make sure that there is a collision volume to move + //--------------------------------------------------- + // + Check(this); + if (!collisionVolumeCount) + { + Check_Fpu(); + return; + } + + // + //------------------------------------------------------------------------ + // Set up the extents of the collision volume from the template and the + // current position. We must find the center point of the template volume + // and rotate it about the y axis + //------------------------------------------------------------------------ + // + Check(collisionTemplate); + Check(collisionVolume); + Verify(collisionVolumeCount == 1); + Verify(collisionTemplate->solidType == BoxedSolid::YAxisCylinderType); + + localToWorld = localOrigin; + Point3D centerPoint; + centerPoint.x = (collisionTemplate->minX + collisionTemplate->maxX) * 0.5f; + centerPoint.y = (collisionTemplate->minY + collisionTemplate->maxY) * 0.5f; + centerPoint.z = (collisionTemplate->minZ + collisionTemplate->maxZ) * 0.5f; + Vector3D radius; + radius.x = collisionTemplate->maxX - centerPoint.x; + radius.y = collisionTemplate->maxY - centerPoint.y; + radius.z = collisionTemplate->maxZ - centerPoint.z; + Point3D rotated; + rotated.Multiply(centerPoint, localToWorld); + + collisionVolume->minX = rotated.x - radius.x; + collisionVolume->maxX = rotated.x + radius.x; + collisionVolume->minY = rotated.y - radius.y; + collisionVolume->maxY = rotated.y + radius.y; + collisionVolume->minZ = rotated.z - radius.z; + collisionVolume->maxZ = rotated.z + radius.z; + + // + //------------------------------------------------------------ + // Now, Find the smallest node containing our collision column + //------------------------------------------------------------ + // + if (GetInstance() != ReplicantInstance) + { + InterestManager *interest_mgr = + application->GetInterestManager(); + Check(interest_mgr); + InterestZone *zone = + interest_mgr->GetInterestZone(interestZoneID); + Check(zone); + BoxedSolidTree* tree = zone->GetCollisionRoot(); + Check(tree); + containedByNode = + tree->FindSmallestNodeContainingColumn(*collisionVolume); + } + Check_Fpu(); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +BoxedSolidCollisionList* + Mover::AllocateCollisionList() +{ + Check(this); + + // + //----------------------------------------------------------- + // Find the correct collision list to use, and reset to empty + //----------------------------------------------------------- + // + BoxedSolidCollisionList *collision_list; + if (lastCollisionList == collisionLists) + { + collision_list = &collisionLists[1]; + } + else + { + collision_list = collisionLists; + } + Check(collision_list); + collision_list->Reset(); + return collision_list; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +BoxedSolidCollisionList* + Mover::GetCurrentCollisions(BoxedSolidCollisionList *collision_list) +{ + Check(this); + + if (!collision_list) + { + collision_list = AllocateCollisionList(); + } + Check(collision_list); + + // + //--------------------------------- + // Test against the tangible movers + //--------------------------------- + // + Check(collisionAssistant); + CollisionAssistant::MovingEntityIterator iterator(collisionAssistant); + Entity *entity; + Check(collisionVolume); + while ((entity = iterator.ReadAndNext()) != NULL) + { + // + //------------------------------------------------------------------ + // If we are checking against ourselves, or something more than 50m + // away, skip it + //------------------------------------------------------------------ + // + Check(entity); + if (entity == this) + { + continue; + } + Vector3D delta; + delta.Subtract( + entity->localOrigin.linearPosition, + localOrigin.linearPosition + ); + if (delta.LengthSquared() > 2500.0f) + { + continue; + } + + // + //-------------------------------------------------- + // If we have a mover class object, check against it + //-------------------------------------------------- + // + if (entity->IsDerivedFrom(Mover::ClassDerivations)) + { + Mover *mover = (Mover*)entity; + Check(mover); + Check(mover->collisionVolume); + CheckAgainstBoxedSolidChain(collision_list, mover->collisionVolume); + } + + // + //----------------------------------------------------------------------- + // If we have a door, check against its subsystems if we are close enough + // for it to matter + //----------------------------------------------------------------------- + // + else if (entity->IsDerivedFrom(DoorFrame::ClassDerivations)) + { + DoorFrame *door_frame = (DoorFrame*)entity; + Check(door_frame); + for (int i=0; iGetSubsystemCount(); ++i) + { + Door *door = (Door*)door_frame->GetSubsystem(i); + CheckAgainstBoxedSolidChain( + collision_list, + door->GetFirstBoxedSolid() + ); + } + } + } + + // + //------------------------------ + // Test against the static world + //------------------------------ + // + containedByNode->FindBoundingBoxesContaining( + collisionVolume, + *collisionVolume, + *collision_list + ); + + Check_Fpu(); + return collision_list; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +BoxedSolid* + Mover::FindBoxedSolidHitBy( + Line *line, + Entity *except + ) +{ + Check(this); + Check(line); + + // + //------------------------------------------------------------------------- + // Calculate the midpoint of the line, and sweep a sphere out around the + // line from that point, including an extra 50 meters. This extra distance + // takes into account the doors... + //------------------------------------------------------------------------- + // + Point3D center; + Scalar radius = line->length * 0.5f; + line->Project(radius, ¢er); + + // + //--------------------------------- + // Test against the tangible movers + //--------------------------------- + // + Check(collisionAssistant); + CollisionAssistant::MovingEntityIterator iterator(collisionAssistant); + Entity *entity; + BoxedSolid + *solid = NULL, + *result; + + while ((entity = iterator.ReadAndNext()) != NULL) + { + // + //--------------------------------------------------------------- + // If we are checking against ourselves or the exception, skip it + //--------------------------------------------------------------- + // + Check(entity); + if (entity == this || except && except == entity) + { + continue; + } + + // + //------------------------------------------------------------------- + // If we have a mover class object, check against it. If we have no + // collision volume, we are just using a line, so just run it against + // the collision volume chain + //------------------------------------------------------------------- + // + if (entity->IsDerivedFrom(Mover::ClassDerivations)) + { + Mover *mover = (Mover*)entity; + Check(mover); + Check(mover->collisionVolume); + + // + //----------------------------------------------------------------- + // If the mover is close enough to the radius of the line, check it + //----------------------------------------------------------------- + // + Vector3D delta; + delta.Subtract(entity->localOrigin.linearPosition, center); + Scalar r2 = + mover->collisionVolume->maxX - mover->collisionVolume->minX; + r2 += mover->collisionVolume->maxY - mover->collisionVolume->minY; + r2 *= 0.5f; + r2 += radius; + if (delta.LengthSquared() > r2*r2) + { + continue; + } + + result = + CheckLineAgainstBoxedSolidChain(line, mover->collisionVolume); + if (result) + { + Check(result); + solid = result; + } + } + + // + //----------------------------------------------------------------------- + // If we have a door, check against its subsystems if we are close enough + // for it to matter + //----------------------------------------------------------------------- + // + else if (entity->IsDerivedFrom(DoorFrame::ClassDerivations)) + { + // + //----------------------------------------------------------------- + // If the mover is close enough to the radius of the line, check it + //----------------------------------------------------------------- + // + Vector3D delta; + delta.Subtract(entity->localOrigin.linearPosition, center); + Scalar r2 = radius + 50.0f; + if (delta.LengthSquared() > r2*r2) + { + continue; + } + + DoorFrame *door_frame = (DoorFrame*)entity; + Check(door_frame); + for (int i=0; iGetSubsystemCount(); ++i) + { + Door *door = (Door*)door_frame->GetSubsystem(i); + result = + CheckLineAgainstBoxedSolidChain( + line, + door->GetFirstBoxedSolid() + ); + if (result) + { + Check(result); + solid = result; + } + } + } + } + + // + //------------------------------ + // Test against the static world + //------------------------------ + // + InterestManager *interest_mgr = application->GetInterestManager(); + Check(interest_mgr); + InterestZone *zone = interest_mgr->GetInterestZone(interestZoneID); + Check(zone); + BoxedSolidTree* tree = zone->GetCollisionRoot(); + Check(tree); + result = (BoxedSolid*)tree->FindBoundingBoxHitBy(line); + if (result) + { + Check(result); + solid = result; + } + Check_Fpu(); + return solid; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +BoxedSolidCollisionList* + Mover::CollideCenterOfMotion( + Line *line, + BoxedSolidCollisionList *list + ) +{ + Check(this); + Check(line); + + // + //----------------------------------------------------------- + // Find the correct collision list to use, and reset to empty + //----------------------------------------------------------- + // + if (!list) + { + list = AllocateCollisionList(); + } + Check(list); + + // + //------------------------------------------------------------------------ + // If the length of the line has changed, we must reposition the collision + // volume appropriately + //------------------------------------------------------------------------ + // + BoxedSolid *solid = FindBoxedSolidHitBy(line, NULL); + if (solid && IsCollisionVolume()) + { + line->FindEnd(&localOrigin.linearPosition); + MoveCollisionVolume(); + ExtentBox slice; + slice.Intersect(*collisionVolume, *solid); + Verify(list->GetCollisionsLeft()); + list->AddCollisionToList(solid, slice); + } + + Check_Fpu(); + return list; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + Mover::ProcessCollisionList( + BoxedSolidCollisionList *collisions, + Scalar time_slice, + const Point3D &old_position, + Damage *damage + ) +{ + Check(this); + Check(collisions); + Verify(time_slice > 0.0f); + Check(&old_position); + Check_Pointer(damage); + + damage->damageAmount = 0.0f; + damage->damageType = Damage::CollisionDamageType; + damage->impactPoint = Point3D::Identity; + + if (collisions->GetCollisionCount()) + { + // + //------------------------------------------------------------------ + // Reduce the number of collisions we have to play with based on our + // velocity + //------------------------------------------------------------------ + // + collisions->ReduceCollisionList(worldLinearVelocity); + + // + //----------------------------------------------------------------- + // Setup up the totaling variables to handle averaging out multiple + // collisions + //----------------------------------------------------------------- + // + int total_collisions = 0; + Vector3D resultant_velocity = Vector3D::Identity; + Point3D resultant_position = Point3D::Identity; + Vector3D resultant_normal = Vector3D::Identity; + Vector3D initial_velocity = worldLinearVelocity; + Vector3D initial_position = localOrigin.linearPosition; + Scalar total_damage = 0.0f; + + // + //--------------------------------------------------------------------- + // For each hit in the list, process it, and if the collision is + // determined to be valid, bounce it and add the result into the others + //--------------------------------------------------------------------- + // + for (int i=0; iGetRealCollisions(); ++i) + { + // + //---------------------------------------------------------- + // Make sure to bounce the vehicle from the correct location + //---------------------------------------------------------- + // + worldLinearVelocity = initial_velocity; + localOrigin.linearPosition = initial_position; + damage->damageAmount = 0.0f; + ProcessCollision( + time_slice, + (*collisions)[i], + old_position, + damage + ); + if (damage->damageAmount > 0.0f) + { + ++total_collisions; + resultant_velocity += worldLinearVelocity; + resultant_position += localOrigin.linearPosition; + resultant_normal += damage->surfaceNormal; + total_damage += damage->damageAmount; + ExtentBox *box = &(*collisions)[i].collisionSlice; + damage->impactPoint.x += 0.5 * + ( + box->minX + box->maxX + - (collisionVolume->minX - collisionVolume->maxX) + ); + damage->impactPoint.y += 0.5 * + ( + box->minY + box->maxY + - (collisionVolume->minY - collisionVolume->maxY) + ); + damage->impactPoint.z += 0.5 * + ( + box->minZ + box->maxZ + - (collisionVolume->minZ - collisionVolume->maxZ) + ); + } + } + + // + //----------------------------------------------------------------- + // If we collided with more than one thing, average out the results + //----------------------------------------------------------------- + // + if (total_collisions > 1) + { + worldLinearVelocity.Divide(resultant_velocity, total_collisions); + localOrigin.linearPosition.Divide( + resultant_position, + total_collisions + ); + damage->surfaceNormal.Vector3D::Divide( + resultant_normal, + total_collisions + ); + goto Figure_Normal; + } + + // + //------------------------------------------------------ + // Otherwise, just set up the positions from the results + //------------------------------------------------------ + // + else if (total_collisions == 1) + { + worldLinearVelocity = resultant_velocity; + localOrigin.linearPosition = resultant_position; + damage->surfaceNormal.operator=(resultant_normal); + + // + //--------------------------------------------------------- + // Figure out the normal, and calculate the collision force + //--------------------------------------------------------- + // +Figure_Normal: + if (Small_Enough(damage->surfaceNormal.LengthSquared())) + { + damage->surfaceNormal.x = 0.0f; + damage->surfaceNormal.y = 1.0f; + damage->surfaceNormal.z = 0.0f; + } + else + { + damage->surfaceNormal.Normalize(damage->surfaceNormal); + } + MoveCollisionVolume(); + damage->damageAmount = total_damage; + damage->damageForce.Subtract(worldLinearVelocity, initial_velocity); + } + lastCollisionList = collisions; + } + else + { + lastCollisionList = NULL; + } + Check_Fpu(); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + Mover::ProcessCollision( + Scalar time_slice, + BoxedSolidCollision &collision, + const Point3D &old_position, + Damage *damage + ) +{ + Check(this); + Verify(time_slice > 0.0f); + Check(&collision); + Check(&old_position); + Check_Pointer(damage); + + Scalar penetration; + + // + //------------------------------------------------------------------------ + // If we really have a collision, do a static bounce off of the normal + // generated. This is default behavior, and any derived class should make + // sure to handle any handshaking that needs to be done + //------------------------------------------------------------------------ + // + if ( + collisionVolume->ProcessCollision( + collision, + worldLinearVelocity, + lastCollisionList, + &damage->surfaceNormal, + &penetration + ) + ) + { + Max_Clamp(penetration, time_slice); + Scalar r = penetration / time_slice; + Scalar elasticity = elasticityCoefficient; + Scalar friction = frictionCoefficient; + + damage->damageAmount = + StaticBounce( + old_position, + time_slice, + r, + damage->surfaceNormal, + &elasticity, + minimumBounceSpeed, + &friction + ); + } + Check_Fpu(); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + Mover::StartCollisionAssistant() +{ + Check(this); + Verify(collisionAssistant == NULL); + + collisionAssistant = CollisionAssistant::Make(this); + Register_Object(collisionAssistant); + + Check_Fpu(); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Scalar + Mover::StaticBounce( + const Point3D &, //old_position, + Scalar delta_t, + Scalar penetration, + const Normal &normal, + Scalar *elasticity, + Scalar bounce_min, + Scalar *friction + ) +{ + Check(this); + Check(&normal); + Check_Pointer(elasticity); + Check_Pointer(friction); + + Verify(penetration >= 0.0f && penetration <= 1.0f); + Verify(*elasticity >= 0.0f && *elasticity <= 1.0f); + Verify(*friction >= 0.0f); + Verify(delta_t > SMALL); + +// penetration = 1.0f; // HACK - should keep stuff from going through the floor + + // + //----------------------------------------------------------------------- + // Calculate the impact speed and vectors. If we didn't hit fast enough, + // don't do any bounce + //----------------------------------------------------------------------- + // + Scalar impact = worldLinearVelocity * normal; + Vector3D vn,vp; + vn.Multiply(normal, impact); + vp.Subtract(worldLinearVelocity, vn); + if (impact > 0.0f) + { + Check_Fpu(); + return 0.0f; + } + if (-impact <= bounce_min * delta_t) + { + *elasticity = 0.0f; + } + + // + //-------------------------------------- + // Calculate the energy lost to friction + //-------------------------------------- + // + Scalar resistance = vp.Length(); + if (Small_Enough(resistance)) + { + *friction = resistance = 0.0f; + } + else + { + resistance = + 1.0f + *friction * (1.0f + *elasticity) * impact / resistance; + if (resistance < 0.0f) + { + *friction = resistance = 0.0f; + } + } + + // + //---------------------------------------------------- + // Compute the velocity delta created by the collision + //---------------------------------------------------- + // + Scalar temp = resistance - 1.0f; + Vector3D delta_v; + delta_v.Multiply(worldLinearVelocity, temp); + temp = resistance + *elasticity; + delta_v.AddScaled(delta_v, vn, -temp); + + // + //------------------------------------ + // Figure out the kinetic energy stuff + //------------------------------------ + // + temp = -1.0f - *elasticity; + vn *= temp; + vp.AddScaled(vn, worldLinearVelocity, 2.0f); + + // + // Reflect the velocity vector + // + worldLinearVelocity += delta_v; + temp = penetration * delta_t; + delta_v *= temp; + localOrigin.linearPosition += delta_v; + + // + // Compute the kinetic energy loss + // + Check_Fpu(); + return -0.0005 * (vn * vp) * moverMass; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Scalar + Mover::DynamicBounce( + Mover *other, + Scalar delta_t, + Scalar penetration, + const Normal &normal, + Scalar *elasticity + ) +{ + Check(this); + Check(other); + Check(&normal); + Check_Pointer(elasticity); + + Verify(penetration >= 0.0f && penetration <= 1.0f); + Verify(*elasticity >= 0.0f && *elasticity <= 1.0f); + Verify(delta_t > SMALL); + + // + //------------------------------------------------------------------------ + // Get the relative velocity of the other guy, and figure out the velocity + // delta along the normal + //------------------------------------------------------------------------ + // + Scalar k1 = worldLinearVelocity.LengthSquared(); + Scalar k2 = other->worldLinearVelocity.LengthSquared(); + + Scalar mass_ratio = other->moverMass / (moverMass + other->moverMass); + Check_Fpu(); + Vector3D v; + v.Subtract(other->worldLinearVelocity, worldLinearVelocity); + Scalar temp = (1.0f + *elasticity) * (v*normal); + Vector3D delta_v; + delta_v.Multiply(normal, temp); + + // + //------------------------------------------------------------------------- + // Figure out the kinetic energy loss in kilojoules, and bounce the primary + // mover + // + // There was an additional multiplication by mass ratio in system 3 code... + // we should make sure it is really needed... + //------------------------------------------------------------------------- + // + v.AddScaled(delta_v, v, -2.0f); + worldLinearVelocity.AddScaled( + worldLinearVelocity, + delta_v, + mass_ratio + ); + localOrigin.linearPosition.AddScaled( + localOrigin.linearPosition, + delta_v, + delta_t * penetration + ); + + // + //---------------------------------------------------------- + // Bounce the second object, and reset it's update values... + //---------------------------------------------------------- + // + other->worldLinearVelocity.AddScaled( + other->worldLinearVelocity, + delta_v, + mass_ratio - 1.0f + ); + other->localOrigin.linearPosition.AddScaled( + other->localOrigin.linearPosition, + delta_v, + delta_t + ); + other->updateVelocity.linearMotion = other->worldLinearVelocity; + other->updateOrigin.linearPosition = other->localOrigin.linearPosition; + other->lastUpdate = Now(); + + // + //-------------------------------- + // Return the result in kilojoules + //-------------------------------- + // + k1 -= worldLinearVelocity.LengthSquared(); + k2 -= other->worldLinearVelocity.LengthSquared(); + Check_Fpu(); + return 0.0005f * mass_ratio * (moverMass * k1 + other->moverMass * k2); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + Mover::CheckAgainstBoxedSolidChain( + BoxedSolidCollisionList *collisions, + BoxedSolid *chain + ) +{ + Check(this); + Check(collisions); + + // + //---------------------------------------------------------------------- + // If the two movers collided against with each other, add the result to + // the collision list + //---------------------------------------------------------------------- + // + while (chain) + { + Check(chain); + ExtentBox slice; + if (chain->Intersects(*collisionVolume, &slice)) + { + Verify(collisions->GetCollisionsLeft()); + collisions->AddCollisionToList(chain, slice); + if (!collisions->GetCollisionsLeft()) + { + return; + } + } + chain = chain->GetNextSolid(); + } + Check_Fpu(); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + Mover::CheckVolumeAgainstBoxedSolidChain( + BoxedSolidCollisionList *collisions, + BoxedSolid *chain + ) +{ + Check(this); + Check(collisions); + + // + //---------------------------------------------------------------------- + // If the two movers collided against with each other, add the result to + // the collision list + //---------------------------------------------------------------------- + // + while (chain) + { + Check(chain); + ExtentBox slice; + if (chain->Intersects(*collisionVolume, &slice)) + { + Verify(collisions->GetCollisionsLeft()); + collisions->AddCollisionToList(collisionVolume, slice); + if (!collisions->GetCollisionsLeft()) + { + return; + } + } + chain = chain->GetNextSolid(); + } + Check_Fpu(); +} + + + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +BoxedSolid* + Mover::CheckLineAgainstBoxedSolidChain( + Line *line, + BoxedSolid *chain + ) +{ + Check(this); + Check(line); + + // + //---------------------------------------------------------------------- + // If the two movers collided against with each other, add the result to + // the collision list + //---------------------------------------------------------------------- + // + BoxedSolid *result = NULL; + while (chain) + { + Check(chain); + if (chain->HitBy(line)) + { + result = chain; + } + chain = chain->GetNextSolid(); + } + Check_Fpu(); + return result; +} + +//############################################################################# +// Construction and Destruction +// + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Mover::Mover( + Mover::MakeMessage *creation_message, + Mover::SharedData &virtual_data +): + Entity(creation_message, virtual_data) +{ + Check_Pointer(this); + Check(creation_message); + + Check(application); + ResourceFile *res_file = application->GetResourceFile(); + Check(res_file); + + // + //------------------------------ + // Initialize the motion vectors + //------------------------------ + // + localVelocity = creation_message->localVelocity; + localAcceleration = creation_message->localAcceleration; + worldLinearAcceleration.Multiply( + localAcceleration.linearMotion, + localToWorld + ); + worldLinearVelocity.Multiply( + localVelocity.linearMotion, + localToWorld + ); + + updateVelocity.linearMotion = worldLinearVelocity; + updateVelocity.angularMotion = localVelocity.linearMotion; + + updateAcceleration.linearMotion = worldLinearAcceleration; + updateAcceleration.angularMotion = localAcceleration.linearMotion; + nextUpdate = lastUpdate; + + normalizeCount = 0; + if (IsInitialStasis()) + { + SetSimulationState(StasisState); + } + + collisionVolume = NULL; + collisionTemplate = NULL; + containedByNode = NULL; + collisionLists = NULL; + lastCollisionList = NULL; + collisionAssistant = NULL; + deadReckoner = NULL; + collisionVolumeCount = 0; + + ResourceDescription *res = + res_file->SearchList( + resourceID, + ResourceDescription::GameModelResourceType + ); + Check(res); + res->Lock(); + ModelResource* model = (ModelResource*)res->resourceAddress; + Check_Pointer(model); + + moverMass = model->moverMass; + Verify(!Small_Enough(model->momentOfInertia.x)); + momentOfInertia.x = 1.0f/model->momentOfInertia.x; + Verify(!Small_Enough(model->momentOfInertia.y)); + momentOfInertia.y = 1.0f/model->momentOfInertia.y; + Verify(!Small_Enough(model->momentOfInertia.z)); + momentOfInertia.z = 1.0f/model->momentOfInertia.z; + positiveLinearDragCoefficients = model->positiveLinearDragCoefficients; + negativeLinearDragCoefficients = model->negativeLinearDragCoefficients; + angularDragCoefficients = model->angularDragCoefficients; + frictionCoefficient = model->frictionCoefficient; + elasticityCoefficient = model->elasticityCoefficient; + minimumBounceSpeed = model->minimumBounceSpeed; + + // + //-------------------------------------------------------------------- + // Read the collision information from the resource file, but for now, + // assume a VTV + //-------------------------------------------------------------------- + // + collisionLists = new BoxedSolidCollisionList[2]; + Register_Pointer(collisionLists); + res->Unlock(); + if (IsCollisionVolume()) + { + res = + res_file->SearchList( + resourceID, + ResourceDescription::BoxedSolidStreamResourceType + ); + Check(res); + res->Lock(); + + BoxedSolidResource* box = (BoxedSolidResource*)res->resourceAddress; + Check_Pointer(box); + collisionVolumeCount = res->resourceSize / sizeof(BoxedSolidResource); + + for (int i=0; iUnlock(); + MoveCollisionVolume(); + } + Check_Fpu(); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + Mover::CreateMakeMessage( + MakeMessage *creation_message, + NotationFile *model_file, + const ResourceDirectories *directories + ) +{ + Check(creation_message); + Check(model_file); + + if (!Entity::CreateMakeMessage(creation_message, model_file, directories)) + { + return False; + } + + creation_message->messageLength = sizeof(Mover::MakeMessage); + creation_message->classToCreate = RegisteredClass::TrivialMoverClassID; +// creation_message->instanceFlags = DefaultFlags; + creation_message->localVelocity = Motion::Identity; + creation_message->localAcceleration = Motion::Identity; + Check_Fpu(); + return True; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +ResourceDescription::ResourceID + Mover::CreateModelResource( + ResourceFile *resource_file, + const char* model_name, + NotationFile *model_file, + const ResourceDirectories *,//directories, + ModelResource *model + ) +{ + Check(resource_file); + Check_Pointer(model_name); + Check(model_file); + + // + //----------------------------------------------------------------------- + // If we were not provided a buffer to write the model data into, we must + // create it ourselves + //----------------------------------------------------------------------- + // + ModelResource *local_model = model; + if (!local_model) + { + local_model = new ModelResource; + Register_Pointer(local_model); + } + + // + //----------------- + // Read in the mass + //----------------- + // + if (!model_file->GetEntry("gamedata", "MoverMass", &local_model->moverMass)) + { + cerr << model_name << " missing MoverMass!\n"; +Dump_And_Die: + if (!model) + { + Unregister_Pointer(local_model); + delete local_model; + } + Check_Fpu(); + return -1; + } + + // + //------------------------------ + // Read in the moment of inertia + //------------------------------ + // + const char* entry; + if ( + !model_file->GetEntry( + "gamedata", + "MomentOfInertia", + &entry + ) + ) + { + cerr << model_name << " missing MomentOfInertia!\n"; + goto Dump_And_Die; + } + sscanf( + entry, + "%f %f %f", + &local_model->momentOfInertia.x, + &local_model->momentOfInertia.y, + &local_model->momentOfInertia.z + ); + + // + //------------------------------ + // Read in the drag coefficients + //------------------------------ + // + if ( + !model_file->GetEntry( + "gamedata", + "PositiveLinearDragCoefficients", + &entry + ) + ) + { + cerr << model_name << " missing PositiveLinearDragCoefficients!\n"; + goto Dump_And_Die; + } + sscanf( + entry, + "%f %f %f", + &local_model->positiveLinearDragCoefficients.x, + &local_model->positiveLinearDragCoefficients.y, + &local_model->positiveLinearDragCoefficients.z + ); + + if ( + !model_file->GetEntry( + "gamedata", + "NegativeLinearDragCoefficients", + &entry + ) + ) + { + cerr << model_name << " missing NegativeLinearDragCoefficients!\n"; + goto Dump_And_Die; + } + sscanf( + entry, + "%f %f %f", + &local_model->negativeLinearDragCoefficients.x, + &local_model->negativeLinearDragCoefficients.y, + &local_model->negativeLinearDragCoefficients.z + ); + + // + //------------------------- + // Read in the angular drag + //------------------------- + // + if ( + !model_file->GetEntry( + "gamedata", + "AngularDragCoefficients", + &entry + ) + ) + { + cerr << model_name << " missing AngularDragCoefficients!\n"; + goto Dump_And_Die; + } + sscanf( + entry, + "%f %f %f", + &local_model->angularDragCoefficients.x, + &local_model->angularDragCoefficients.y, + &local_model->angularDragCoefficients.z + ); + + // + //--------------------- + // Read in the friction + //--------------------- + // + if ( + !model_file->GetEntry( + "gamedata", + "FrictionCoefficient", + &local_model->frictionCoefficient + ) + ) + { + cerr << model_name << " missing FrictionCoefficient!\n"; + goto Dump_And_Die; + } + + // + //----------------------- + // Read in the elasticity + //----------------------- + // + if ( + !model_file->GetEntry( + "gamedata", + "ElasticityCoefficient", + &local_model->elasticityCoefficient + ) + ) + { + cerr << model_name << " missing ElasticityCoefficient!\n"; + goto Dump_And_Die; + } + + // + //--------------------------------- + // Read in the minimum bounce speed + //--------------------------------- + // + if ( + !model_file->GetEntry( + "gamedata", + "MinimumBounceSpeed", + &local_model->minimumBounceSpeed + ) + ) + { + cerr << model_name << " missing MinimumBounceSpeed!\n"; + goto Dump_And_Die; + } + + // + //------------------------------------------------------------------------- + // If we created the model buffer, then we have the responsibility to write + // it out to the resource file + //------------------------------------------------------------------------- + // + if (!model) + { + ResourceDescription *new_res = + resource_file->AddResource( + model_name, + ResourceDescription::GameModelResourceType, + 1, + ResourceDescription::Preload, + local_model, + sizeof(*local_model) + ); + Unregister_Pointer(local_model); + delete local_model; + Check(new_res); + Check_Fpu(); + return new_res->resourceID; + } + else + { + Check_Fpu(); + return 0; + } +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Mover* + Mover::Make(Mover::MakeMessage *creation_message) +{ + return new Mover(creation_message, DefaultData); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Mover::~Mover() +{ + Unregister_Pointer(collisionLists); + delete[] collisionLists; + + if (IsCollisionVolume()) + { + BoxedSolid *box = collisionTemplate; + while (box) + { + BoxedSolid *next_box = box->GetNextSolid(); + Unregister_Object(box); + delete box; + box = next_box; + } + box = collisionVolume; + while (box) + { + BoxedSolid *next_box = box->GetNextSolid(); + Unregister_Object(box); + delete box; + box = next_box; + } + } + + if (collisionAssistant) + { + Unregister_Object(collisionAssistant); + delete collisionAssistant; + } + Check_Fpu(); +} + +Logical + Mover::TestInstance() const +{ + return IsDerivedFrom(ClassDerivations); +} + diff --git a/CODE/RP/MUNGA/MOVER.HPP b/CODE/RP/MUNGA/MOVER.HPP new file mode 100644 index 0000000..f198fba --- /dev/null +++ b/CODE/RP/MUNGA/MOVER.HPP @@ -0,0 +1,484 @@ +//===========================================================================// +// File: mover.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(MOVER_HPP) +# define MOVER_HPP + +# if !defined(ENTITY_HPP) +# include +# endif + +# if !defined(MOTION_HPP) +# include +# endif + + class Mover__SharedData; + class Mover; + class CollisionAssistant; + class BoundingBoxTreeNode; + class BoxedSolid; + class BoxedSolidCollision; + class BoxedSolidCollisionList; + class Normal; + class Line; + class Environment; + + //########################################################################## + //#################### Mover::UpdateMessage ########################## + //########################################################################## + + struct Mover__UpdateRecord: + public Entity::UpdateRecord + { + public: + Motion + localVelocity, + localAcceleration; + Vector3D + worldLinearVelocity, + worldLinearAcceleration; + }; + + //########################################################################## + //##################### Mover::MakeMessage ########################## + //########################################################################## + + class Mover__MakeMessage: + public Entity::MakeMessage + { + public: + Motion + localVelocity, + localAcceleration; + + Mover__MakeMessage( + Receiver::MessageID message_ID, + size_t length, + Entity::ClassID class_ID, + const EntityID &owner_ID, + ResourceDescription::ResourceID resource_ID, + LWord instance_flags, + const Origin &origin, + const Motion &velocity, + const Motion &acceleration + ): + Entity::MakeMessage( + message_ID, + length, + class_ID, + owner_ID, + resource_ID, + instance_flags, + origin + ), + localVelocity(velocity), + localAcceleration(acceleration) + {} + Mover__MakeMessage( + Receiver::MessageID message_ID, + size_t length, + const EntityID &entity_ID, + Entity::ClassID class_ID, + const EntityID &owner_ID, + ResourceDescription::ResourceID resource_ID, + LWord instance_flags, + const Origin &origin, + const Motion &velocity, + const Motion &acceleration + ): + Entity::MakeMessage( + message_ID, + length, + entity_ID, + class_ID, + owner_ID, + resource_ID, + instance_flags, + origin + ), + localVelocity(velocity), + localAcceleration(acceleration) + {} + }; + + //########################################################################## + //##################### Mover::ModelResource ######################### + //########################################################################## + + struct Mover__ModelResource + { + Scalar moverMass; + Vector3D + momentOfInertia, + positiveLinearDragCoefficients, + negativeLinearDragCoefficients, + angularDragCoefficients; + Scalar + frictionCoefficient, + elasticityCoefficient, + minimumBounceSpeed; + }; + + //########################################################################## + //############################ Mover ################################# + //########################################################################## + + class Mover: + public Entity + { + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Shared Data support + // + public: + static Derivation ClassDerivations; + + static SharedData DefaultData; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Attribute Support + // + public: + enum { + LocalVelocityAttributeID = Entity::NextAttributeID, + LocalAccelerationAttributeID, + WorldLinearVelocityAttributeID, + WorldLinearAccelerationAttributeID, + MoverMassAttributeID, + MomentOfInertiaAttributeID, + PositiveLinearDragCoefficientsAttributeID, + NegativeLinearDragCoefficientsAttributeID, + AngularDragCoefficientsAttributeID, + FrictionCoefficientAttributeID, + ElasticityCoefficientAttributeID, + MinimumBounceSpeedAttributeID, + NextAttributeID + }; + + private: + static const IndexEntry AttributePointers[]; + + protected: + static AttributeIndexSet AttributeIndex; + + // + // public attribute declarations go here + // + public: + Motion + localVelocity, + localAcceleration; + Vector3D + worldLinearVelocity, + worldLinearAcceleration; + Scalar moverMass; + Vector3D + momentOfInertia, + positiveLinearDragCoefficients, + negativeLinearDragCoefficients, + angularDragCoefficients; + Scalar + frictionCoefficient, + elasticityCoefficient, + minimumBounceSpeed; + + // + // virtual access + // + public: + virtual Vector3D + GetWorldLinearVelocity() + {return worldLinearVelocity;} + virtual Vector3D + GetWorldLinearAcceleration() + {return worldLinearAcceleration;} + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Model Support + // + public: + enum { + StasisState = Entity::StateCount, + StateCount + }; + + typedef Mover__UpdateRecord UpdateRecord; + typedef Mover__MakeMessage MakeMessage; + typedef void + (Mover::*Performance)(Scalar time_slice); + void + SetPerformance(Performance performance) + { + Check(this); + activePerformance = (Simulation::Performance)performance; + } + + void + UpdateWorldMotion(); + void + UpdateLocalMotion(); + void + ApplyWorldAccelerations(Scalar time_slice); + void + ApplyAirResistanceAndGravity(Scalar power=1.0f); + void + CalculateDrag( + Vector3D *drag, + const Vector3D &velocity, + const Vector3D &positive_CODs, + const Vector3D &negative_CODs, + Scalar power + ); + + void + ApplyLocalForce( + const Vector3D &force, + const Vector3D &moment + ); + void + ApplyLocalAcceleration( + const Vector3D &acceleration, + const Vector3D &moment + ); + + Environment* + GetEnvironment() + {Check(this); return localEnvironment;} + + typedef Logical (Mover::*DeadReckoner)(); + void + SetDeadReckoner(DeadReckoner reckoner) + {Check(this); deadReckoner = reckoner;} + + Logical + NoDeadReckoner(); + Logical + LinearDeadReckoner(); + Logical + AcceleratedDeadReckoner(); + void + DeadReckon(Scalar time_slice); + + protected: + void + WriteUpdateRecord( + Simulation::UpdateRecord *message, + int update_model + ); + void + ReadUpdateRecord(Simulation::UpdateRecord *message); + + void + PerformAndWatch( + const Time& till, + MemoryStream *update_stream + ); + + int + normalizeCount; + Environment + *localEnvironment; + DeadReckoner + deadReckoner; + Origin + projectedOrigin, + previousOrigin; + Motion + projectedVelocity, + updateAcceleration, + updateVelocity; + Time + nextUpdate; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Collision support + // + public: + virtual void + MoveCollisionVolume(); + BoundingBoxTreeNode* + GetMoverCollisionRoot() + {Check(this); return containedByNode;} + + BoxedSolidCollisionList* + AllocateCollisionList(); + BoxedSolidCollisionList* + GetCurrentCollisions(BoxedSolidCollisionList *list=NULL); + BoxedSolid* + FindBoxedSolidHitBy( + Line *line, + Entity *except_by + ); + BoxedSolidCollisionList* + CollideCenterOfMotion( + Line *line, + BoxedSolidCollisionList *list + ); + void + ProcessCollisionList( + BoxedSolidCollisionList *collisions, + Scalar time_slice, + const Point3D &old_position, + Damage *damage + ); + + Scalar + StaticBounce( + const Point3D &old_position, + Scalar delta_t, + Scalar penetration, + const Normal &normal, + Scalar *elasticity, + Scalar bounce_min, + Scalar *friction + ); + Scalar + DynamicBounce( + Mover *other, + Scalar delta_t, + Scalar penetration, + const Normal &normal, + Scalar *elasticity + ); + + BoxedSolid* + GetCollisionVolume() + {Check(this); return collisionVolume;} + BoxedSolid* + GetCollisionTemplate() + {Check(this); return collisionTemplate;} + int + GetCollisionVolumeCount() + {Check(this); return collisionVolumeCount;} + + virtual void + StartCollisionAssistant(); + + protected: + int collisionVolumeCount; + BoxedSolid + *collisionVolume, + *collisionTemplate; + BoundingBoxTreeNode *containedByNode; + BoxedSolidCollisionList + *collisionLists, + *lastCollisionList; + CollisionAssistant *collisionAssistant; + + virtual void + ProcessCollision( + Scalar time_slice, + BoxedSolidCollision &collision, + const Point3D &old_position, + Damage *damage + ); + + void + CheckAgainstBoxedSolidChain( + BoxedSolidCollisionList *collisions, + BoxedSolid *chain + ); + + public: + void + CheckVolumeAgainstBoxedSolidChain( + BoxedSolidCollisionList *collisions, + BoxedSolid *chain + ); + + protected: + BoxedSolid* + CheckLineAgainstBoxedSolidChain( + Line *line, + BoxedSolid *chain + ); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Flag Support + // + public: + enum { + NoCollisionVolumeBit = Entity::NextBit, + NoCollisionTestBit, + InitialStasisBit, + NextBit + }; + + enum { + NoCollisionVolumeFlag = 1< + +#if !defined(MTRXSTK_HPP) +# include +#endif + +AffineMatrixStack& + AffineMatrixStack::Concatenate(const AffineMatrix& matrix) +{ + AffineMatrix *old_top = Cast_Object(AffineMatrix*,Peek()); + AffineMatrix *new_top = (AffineMatrix*)MemoryStack::Push(); + new_top->Multiply(*old_top,matrix); + return *this; +} + +LinearMatrixStack& + LinearMatrixStack::Concatenate(const LinearMatrix& matrix) +{ + LinearMatrix *old_top = Cast_Object(LinearMatrix*,Peek()); + LinearMatrix *new_top = (LinearMatrix*)MemoryStack::Push(); + new_top->Multiply(*old_top,matrix); + return *this; +} + +Matrix4x4Stack& + Matrix4x4Stack::Concatenate(const Matrix4x4& matrix) +{ + Matrix4x4 *old_top = Cast_Object(Matrix4x4*,Peek()); + Matrix4x4 *new_top = (Matrix4x4*)MemoryStack::Push(); + new_top->Multiply(*old_top,matrix); + return *this; +} + +Matrix4x4Stack& + Matrix4x4Stack::Concatenate(const AffineMatrix& matrix) +{ + Matrix4x4 *old_top = Cast_Object(Matrix4x4*,Peek()); + Matrix4x4 *new_top = (Matrix4x4*)MemoryStack::Push(); + new_top->Multiply(*old_top,matrix); + return *this; +} + +Matrix4x4& + Matrix4x4Stack::Push(const AffineMatrix& matrix) +{ + Matrix4x4 *new_top = (Matrix4x4*)MemoryStack::Push(); + return *new_top = matrix; +} + diff --git a/CODE/RP/MUNGA/MTRXSTK.HPP b/CODE/RP/MUNGA/MTRXSTK.HPP new file mode 100644 index 0000000..5d3f647 --- /dev/null +++ b/CODE/RP/MUNGA/MTRXSTK.HPP @@ -0,0 +1,150 @@ +//===========================================================================// +// File: mtrxstk.hh // +// Project: MUNGA Brick: Math Library // +// Contents: Interface specification for the matrix class // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 11/21/94 JMA Initial coding. // +// 12/01/94 JMA Changed Matrix to Matrix4x4, based both matrix classes on // +// Matrix44Base // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(MTRXSTK_HPP) +# define MTRXSTK_HPP + +# if !defined(MEMBLOCK_HPP) +# include +# endif + +# if !defined(MATRIX_HPP) +# include +# endif + +# if !defined(LINMTRX_HPP) +# include +# endif + + //~~~~~~~~~~~~~~~~~~~~~~~ AffineMatrixStack ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class AffineMatrixStack: + public MemoryStack + { + public: + AffineMatrixStack( + size_t start, + size_t delta + ): + MemoryStack(sizeof(AffineMatrix),start,delta) + {} + + AffineMatrix* + Peek() + { + Check(this); + return Cast_Object(AffineMatrix*,MemoryStack::Peek()); + } + + AffineMatrixStack& + Concatenate(const AffineMatrix& matrix); + AffineMatrixStack& + operator*=(const AffineMatrix& matrix) + {Check(this); Check(&matrix); return Concatenate(matrix);} + + AffineMatrix& + Push(const AffineMatrix& matrix) + { + Check(this); Check(&matrix); + return *Cast_Object(AffineMatrix*,MemoryStack::Push(&matrix)); + } + + operator AffineMatrix&() + {Check(this); return *Peek();} + }; + + //~~~~~~~~~~~~~~~~~~~~~~~ LinearMatrixStack ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class LinearMatrixStack: + public MemoryStack + { + public: + LinearMatrixStack( + size_t start, + size_t delta + ): + MemoryStack(sizeof(LinearMatrix),start,delta) + {} + + LinearMatrix* + Peek() + { + Check(this); + return Cast_Object(LinearMatrix*,MemoryStack::Peek()); + } + + LinearMatrixStack& + Concatenate(const LinearMatrix& matrix); + LinearMatrixStack& + operator*=(const LinearMatrix& matrix) + {Check(this); Check(&matrix); return Concatenate(matrix);} + + LinearMatrix& + Push(const LinearMatrix& matrix) + { + Check(this); Check(&matrix); + return *Cast_Object(LinearMatrix*,MemoryStack::Push(&matrix)); + } + + operator LinearMatrix&() + {Check(this); return *Peek();} + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~ Matrix4x4Stack ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class Matrix4x4Stack: + public MemoryStack + { + public: + Matrix4x4Stack( + size_t start, + size_t delta + ): + MemoryStack(sizeof(Matrix4x4),start,delta) + {} + + Matrix4x4* + Peek() + { + Check(this); + return Cast_Object(Matrix4x4*,MemoryStack::Peek()); + } + + Matrix4x4Stack& + Concatenate(const Matrix4x4& matrix); + Matrix4x4Stack& + Concatenate(const AffineMatrix& matrix); + Matrix4x4Stack& + operator*=(const Matrix4x4& matrix) + {Check(this); Check(&matrix); return Concatenate(matrix);} + Matrix4x4Stack& + operator*=(const AffineMatrix& matrix) + {Check(this); Check(&matrix); return Concatenate(matrix);} + + Matrix4x4& + Push(const Matrix4x4& matrix) + { + Check(this); Check(&matrix); + return *Cast_Object(Matrix4x4*,MemoryStack::Push(&matrix)); + } + Matrix4x4& + Push(const AffineMatrix& matrix); + + operator Matrix4x4&() + {Check(this); return *Peek();} + }; + +#endif diff --git a/CODE/RP/MUNGA/MUNGA.HPP b/CODE/RP/MUNGA/MUNGA.HPP new file mode 100644 index 0000000..961d4e8 --- /dev/null +++ b/CODE/RP/MUNGA/MUNGA.HPP @@ -0,0 +1,83 @@ +#if !defined(MUNGA_HPP) +# define MUNGA_HPP + +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include + +# if defined(__BCPLUSPLUS__) +# include +# endif + +# if defined(LBE4) +# include +# else +# include +# endif + + enum { + NullExitCodeID = 0, + AbortExitCodeID + }; + +# if !defined(TRACE_HPP) +# include +# endif + +# if !defined(NO_PRECOMPILED_HEADERS) +# if !defined(CSTR_HPP) +# include +# endif + +# if !defined(NAMELIST_HPP) +# include +# endif + +# if !defined(NOTATION_HPP) +# include +# endif + +# if !defined(SLOT_HPP) +# include +# endif + +# if !defined(CHAIN_HPP) +# include +# endif + +# if !defined(SCHAIN_HPP) +# include +# endif + +# if !defined(VCHAIN_HPP) +# include +# endif + +# if !defined(TABLE_HPP) +# include +# endif + +# if !defined(TREE_HPP) +# include +# endif + +# if !defined(HASH_HPP) +# include +# endif + +# if !defined(ORIGIN_HPP) +# include +# endif + +# endif + +#endif diff --git a/CODE/RP/MUNGA/MUNGA.MAK b/CODE/RP/MUNGA/MUNGA.MAK new file mode 100644 index 0000000..9974bd1 --- /dev/null +++ b/CODE/RP/MUNGA/MUNGA.MAK @@ -0,0 +1,255 @@ +.autodepend +.cacheautodepend +.suffixes: .asm .cpp .c + +!ifndef BTYPE +!error BTYPE macro not supplied +!endif + +!ifndef BPATH +!error BPATH macro not supplied +!endif + +!include make.cfg +!include $(BPATH) + +!ifndef MUNGA_ROOT +!error MUNGA_ROOT macro is not defined +!endif + +TARGET_DIR = $(MUNGA_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 = munga$(BTYPE).csm + +#------------------------------------------------------------------------------ +# targets +# +all: $(CFG_FILE) $(TARGET_DIR)\testall.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 + +{$(MUNGA_ROOT)}.asm{$(TARGET_DIR)}.obj: + tasm32 -ml $(TASM_OPTIONS) -i$(MUNGA_ROOT) $<,$@ >>error.log + +#------------------------------------------------------------------------------ +# Test program +# +$(TARGET_DIR)\testall.exe:\ + $(MUNGA_ROOT)\munga.mak $(TARGET_DIR)\stub.lib $(TARGET_DIR)\munga.lib\ + testall.obj $(BTYPE).mak + tlink32 @&&| +$(LINK_OPTIONS) + +$(STARTUP_OBJ)+ +$(TARGET_DIR)\testall.obj +$<,$* +$(TARGET_DIR)\stub.lib+ +$(TARGET_DIR)\munga.lib+ +$(STARTUP_LIBS) +| >>error.log + +testall.obj: $(CFG_FILE) + +#------------------------------------------------------------------------------ +# Stub library +# +STUB_OBJS = \ + ?tracstub.obj \ + ?filestub.obj \ + ?timestub.obj + +$(STUB_OBJS:?=): $(CFG_FILE) + +$(TARGET_DIR)\stub.lib: $(STUB_OBJS:?=) $(MUNGA_ROOT)\munga.mak + tlib $@ $(LIB_OPTIONS) @&&| +$(STUB_OBJS:?=$(LIB_PREFIX)) +| >>error.log + +#------------------------------------------------------------------------------ +# MUNGA library +# +MUNGA_OBJS = \ + ?heap.obj \ + ?cstr.obj \ + ?memblock.obj \ + ?memreg.obj \ + ?memstrm.obj \ + ?filestrm.obj \ + ?verify.obj \ + ?namelist.obj \ + ?notation.obj \ + ?fileutil.obj \ + ?color.obj \ + ?resource.obj \ + ?scalar.obj \ + ?rect2d.obj \ + ?random.obj \ + ?angle.obj \ + ?vector3d.obj \ + ?vector4d.obj \ + ?point3d.obj \ + ?unitvec.obj \ + ?rotation.obj \ + ?motion.obj \ + ?origin.obj \ + ?affnmtrx.obj \ + ?linmtrx.obj \ + ?matrix.obj \ + ?mtrxstk.obj \ + ?spline.obj \ + ?ray.obj \ + ?line.obj \ + ?sphere.obj \ + ?normal.obj \ + ?plane.obj \ + ?extntbox.obj \ + ?bndgbox.obj \ + ?boxtree.obj \ + ?boxlist.obj \ + ?boxsolid.obj \ + ?boxsort.obj \ + ?boxsphr.obj \ + ?boxcone.obj \ + ?boxramp.obj \ + ?boxiramp.obj \ + ?boxwedge.obj \ + ?boxdisks.obj \ + ?boxtile.obj \ + ?time.obj \ + ?vdata.obj \ + ?iterator.obj \ + ?link.obj \ + ?plug.obj \ + ?objstrm.obj \ + ?socket.obj \ + ?node.obj \ + ?slot.obj \ + ?chain.obj \ + ?sfeskt.obj \ + ?srtskt.obj \ + ?schain.obj \ + ?vchain.obj \ + ?tree.obj \ + ?table.obj \ + ?hash.obj \ + ?trace.obj \ + ?receiver.obj \ + ?event.obj \ + ?evtstat.obj \ + ?cmpnnt.obj \ + ?simulate.obj \ + ?subsystm.obj \ + ?joint.obj \ + ?network.obj \ + ?damage.obj \ + ?entity.obj \ + ?entityid.obj \ + ?nttmgr.obj \ + ?entity2.obj \ + ?envirnmt.obj \ + ?mover.obj \ + ?segment.obj \ + ?jmover.obj \ + ?watcher.obj \ + ?host.obj \ + ?hostmgr.obj \ + ?console.obj \ + ?scnrole.obj \ + ?team.obj \ + ?exptbl.obj \ + ?caminst.obj \ + ?cammgr.obj \ + ?camship.obj \ + ?cammppr.obj \ + ?eyecandy.obj \ + ?player.obj \ + ?director.obj \ + ?dropzone.obj \ + ?explode.obj \ + ?terrain.obj \ + ?cultural.obj \ + ?doorfram.obj \ + ?door.obj \ + ?registry.obj \ + ?lattice.obj \ + ?intorgn.obj \ + ?collorgn.obj \ + ?interest.obj \ + ?collasst.obj \ + ?update.obj \ + ?reticle.obj \ + ?rndorgn.obj \ + ?renderer.obj \ + ?vidrend.obj \ + ?audio.obj \ + ?audent.obj \ + ?audtime.obj \ + ?audwgt.obj \ + ?audlvl.obj \ + ?audloc.obj \ + ?audcmp.obj \ + ?audsrc.obj \ + ?audmidi.obj \ + ?audseq.obj \ + ?audwthr.obj \ + ?audrend.obj \ + ?wrhous.obj \ + ?gaugmap.obj \ + ?gauge.obj \ + ?lamp.obj \ + ?gaugrend.obj \ + ?gaugalrm.obj \ + ?graph2d.obj \ + ?mode.obj \ + ?controls.obj \ + ?mission.obj \ + ?apptask.obj \ + ?app.obj \ + ?appmgr.obj \ + ?appmsg.obj \ + ?spooler.obj \ + ?icom.obj \ + ?maptool.obj \ + ?modtool.obj \ + ?animtool.obj \ + ?audtools.obj \ + ?tool.obj + +$(MUNGA_OBJS:?=): $(CFG_FILE) + +$(TARGET_DIR)\munga.lib: $(MUNGA_ROOT)\munga.mak $(MUNGA_OBJS:?=) + tlib $@ $(LIB_OPTIONS) @&&| +$(MUNGA_OBJS:?=$(LIB_PREFIX)) +| >>error.log diff --git a/CODE/RP/MUNGA/NAMELIST.CPP b/CODE/RP/MUNGA/NAMELIST.CPP new file mode 100644 index 0000000..4267fa6 --- /dev/null +++ b/CODE/RP/MUNGA/NAMELIST.CPP @@ -0,0 +1,475 @@ +//===========================================================================// +// File: namelist.cpp // +// Title: Definition of NameList classes. // +// Project: Munga // +// Author: Ken Olsen (based on work by J.M. Albertson) // +// Purpose: Maintains an unsorted list of strings with (void *) to // +// anything the client needs to associate with the string. // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 12/07/94 KEO convert from Tool Architecture I. // +// 01/07/95 KEO Add ObjectNameList class. // +//---------------------------------------------------------------------------// +// Copyright (c) 1994-1995 Virtual World Entertainment, Inc. // +// All rights reserved worldwide. // +// This unpublished source code is PROPRIETARY and CONFIDENTIAL. // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(NAMELIST_HPP) + #include +#endif + +//############################################################################# +//############## ObjectNameList ######################################### +//############################################################################# + +ObjectNameList::ObjectNameList() +{ + Check_Pointer(this); + firstEntry = lastEntry = NULL; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +ObjectNameList::~ObjectNameList() +{ + Check(this); + + Entry + *next; + + while (firstEntry) + { + Check_Pointer(firstEntry); + next = firstEntry->nextEntry; + Unregister_Pointer(firstEntry); + delete firstEntry; + firstEntry = next; + } +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +const char* + ObjectNameList::AddEntry( + const char *name, + void *data + ) +{ + Check(this); + Check_Pointer(name); + + Entry + *entry; + + entry = (Entry *)new char[ sizeof(Entry) + strlen(name) + 1 ]; + Register_Pointer(entry); + + entry->dataReference = data; + entry->nextEntry = NULL; + + if (firstEntry) + { + Check_Pointer(lastEntry); + lastEntry->nextEntry = entry; + } + else + { + firstEntry = entry; + } + lastEntry = entry; + + entry->SetName(name); + + return entry->GetName(); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void* + ObjectNameList::FindObject(const char *name) +{ + Check(this); + Check_Pointer(name); + + Entry + *entry; + + for (entry = firstEntry; entry; entry = entry->nextEntry) + { + Check_Pointer(entry); + if (!strcmp(entry->GetName(), name)) + { + break; + } + } + return (entry)?entry->dataReference:NULL; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + ObjectNameList::DeleteEntry(const char *name) +{ + Check(this); + Check_Pointer(name); + + Entry + *cur, + *prev, + *entry; + + //---------------------------------------------------- + // ***** DANGEROUS!!! see notice in namelist.hh ***** + //---------------------------------------------------- + entry = (Entry *)(name - sizeof(Entry)); + Check_Pointer(entry); + prev = NULL; + for (cur=firstEntry; cur && cur != entry; cur = cur->nextEntry) + { + Check_Pointer(cur); + prev = cur; + } + Verify(cur == entry); + if (!prev) + { + firstEntry = entry->nextEntry; + } + else + { + prev->nextEntry = entry->nextEntry; + } + if (entry == lastEntry) + { + lastEntry = prev; + } + Unregister_Pointer(entry); + delete entry; + return; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +int + ObjectNameList::EntryCount() const +{ + Check(this); + + Entry + *entry = firstEntry; + int + count = 0; + + while (entry) + { + Check_Pointer(entry); + count++; + entry = entry->nextEntry; + } + return count; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +int + ObjectNameList::BuildSubList( + const ObjectNameList &source_list, + const char *prefix + ) +{ + Check(this); + Check(&source_list); + Check_Pointer(prefix); + + const int + length = strlen(prefix); + Entry + *entry = source_list.firstEntry; + const char + *name; + int + count = 0; + + //------------------------------------------------------ + // add entries to SubList whose name begins with prefix + //------------------------------------------------------ + while (entry) + { + Check_Pointer(entry); + name = entry->GetName(); + Check_Pointer(name); + if (!strncmp(name, prefix, length)) + { + count++; + AddEntry(name, entry->dataReference); + } + entry = entry->nextEntry; + } + //------------------------------------------- + // return number of entries added to SubList + //------------------------------------------- + return count; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + ObjectNameList::TestInstance() const +{ + // nothing to check + return True; +} + +//############################################################################# +//############## ObjectNameList::Entry ################################## +//############################################################################# + +void + ObjectNameList::Entry::SetName(const char *name) +{ + Check_Pointer(this); + Check_Pointer(name); + strcpy((char *)this + sizeof(ObjectNameList::Entry), name); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +#if defined(USE_SIGNATURE) + int + Is_Signature_Bad(const volatile ObjectNameList__Entry *) + { + return False; + } +#endif + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + ObjectNameList::Entry::IsName(const char *name) const +{ + Check(this); + //do not check name here + + if (name) + { + Check_Pointer(name); + return strcmp(GetName(), name) == 0; + } + else + { + return GetName() == name; + } +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + ObjectNameList::Entry::TestInstance() const +{ + // nothing to check + //do not check dataReference even if it is not NULL! + return True; +} + +//############################################################################# +//############## NameList ############################################### +//############################################################################# + +NameList::NameList() +{ +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +NameList::~NameList() +{ +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +const char* + NameList::FindName(void *data) +{ + Check(this); + + Entry + *entry; + + for (entry = firstEntry; entry; entry = entry->nextEntry) + { + Check_Pointer(entry); + if (entry->dataReference == data) + { + break; + } + } + return (entry)?entry->GetName():NULL; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +NameList::Entry* + NameList::FindEntry(const char *name) +{ + Check(this); + Check_Pointer(name); + + Entry + *entry; + + for (entry = firstEntry; entry; entry = entry->nextEntry) + { + Check_Pointer(entry); + if (!strcmp(entry->GetName(), name)) + { + break; + } + } + return entry; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +NameList::Entry + *NameList::FindEntry(void *data) +{ + Check(this); + + Entry + *entry; + + for (entry = firstEntry; entry; entry = entry->nextEntry) + { + Check_Pointer(entry); + if (entry->dataReference == data) + { + break; + } + } + return entry; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + NameList::DeleteEntry(const char *name) +{ + Check(this); + Check_Pointer(name); + + Entry + *prev = NULL, + *entry; + + for (entry = firstEntry; entry; entry = entry->nextEntry) + { + Check_Pointer(entry); + if (!strcmp(entry->GetName(), name)) + { + break; + } + prev = entry; + } + if (entry) + { + if (!prev) + { + firstEntry = entry->nextEntry; + } + else + { + prev->nextEntry = entry->nextEntry; + } + if (entry == lastEntry) + { + lastEntry = prev; + } + Unregister_Pointer(entry); + delete entry; + } + return; +} + +//############################################################################# +//############## AlphaNameList ########################################## +//############################################################################# + +AlphaNameList::AlphaNameList() +{ +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +AlphaNameList::~AlphaNameList() +{ +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +const char* + AlphaNameList::AddEntry( + const char *name, + void *data + ) +{ + Check(this); + Check_Pointer(name); + + Entry + *entry, + *next = firstEntry, + *prev = NULL; + + entry = (Entry *)new char[ sizeof(Entry) + strlen(name) + 1 ]; + Verify(entry); + Register_Pointer(entry); + + //----------------------------------- + // find location to insert new entry + //----------------------------------- + while (next) + { + Check_Pointer(next); + if (strcmp(name, next->GetName()) < 0) + { + break; + } + prev = next; + next = next->nextEntry; + } + //--------------------------------------------- + // insert new entry after prev and before next + //--------------------------------------------- + if (!next) + { + lastEntry = entry; + } + if (!prev) + { + firstEntry = entry; + } + else + { + prev->nextEntry = entry; + } + entry->dataReference = data; + entry->nextEntry = next; + entry->SetName(name); + + return entry->GetName(); +} + +//############################################################################# +//############## TestClass() ############################################ +//############################################################################# + +#if defined(TEST_CLASS) + #include "namelist.tcp" +#endif + +//############################################################################# +//############################################################################# diff --git a/CODE/RP/MUNGA/NAMELIST.HPP b/CODE/RP/MUNGA/NAMELIST.HPP new file mode 100644 index 0000000..393230b --- /dev/null +++ b/CODE/RP/MUNGA/NAMELIST.HPP @@ -0,0 +1,230 @@ +//===========================================================================// +// File: namelist.hpp // +// Title: Declaration of NameList classes. // +// Project: Munga // +// Author: Ken Olsen (based on work by J.M. Albertson) // +// Purpose: Maintains an unsorted list of strings with (void *) to // +// anything the client needs to associate with the string. // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 12/07/94 KEO Convert from Tool Architecture I. // +// 01/07/95 KEO Add ObjectNameList class. // +// 01/25/95 KEO Move BuildSubList from NameList to ObjectNameList. // +// 02/12/95 KEO Add isempty method. // +// 02/17/95 KEO Add more get methods for entries. // +// 03/11/95 KEO Add IsName and yet more get methods for entries. // +//---------------------------------------------------------------------------// +// Copyright (c) 1994-1995 Virtual World Entertainment, Inc. // +// All rights reserved worldwide. // +// This unpublished source code is PROPRIETARY and CONFIDENTIAL. // +//===========================================================================// + +#if !defined(NAMELIST_HPP) + #define NAMELIST_HPP + + #if !defined(STYLE_HPP) + #include + #endif + + class ObjectNameList; + class ObjectNameList__Entry; + class NameList; + class AlphaNameList; + + //======================================================================= + // Notice: + // In using ObjectNameList class, think of AddEntry sort of like a New + // in the sense that you MUST store the (char *) it returns in the name + // field of the class you are bonding ObjectNameList to so that when you + // DeleteEntry you can pass that exact same pointer back. DeleteEntry + // does not do a find on the name you pass it. It expects to receive the + // pointer that AddEntry gave to you. + // This restriction does not exist for NameList and AlphaNameList. + //----------------------------------------------------------------------- + // Another Notice: + // NameList::Entry objects are never _constructed_ and therefore + // Check_Pointer(this) is used instead of Check(this). Also Register_ + // Pointer and Unregister_Pointer are used instead of Register_Object + // and Unregister_Object. + //======================================================================= + + //########################################################################## + //############## ObjectNameList ###################################### + //########################################################################## + + class ObjectNameList SIGNATURED + { + public: + typedef ObjectNameList__Entry Entry; + + protected: + Entry + *firstEntry, + *lastEntry; + + public: + ObjectNameList(); + virtual + ~ObjectNameList(); + + virtual const char* + AddEntry( + const char *name, + void *data + ); + void* + FindObject(const char *name); + void + DeleteEntry(const char *name); // ** DANGEROUS!! see notice above ** + int + EntryCount() const; // (implementation assumes infrequent use) + Logical + IsEmpty() const + { Check(this); return firstEntry == NULL && lastEntry == NULL; } + Entry* + GetFirstEntry() + { Check(this); return firstEntry; } + const Entry* + GetFirstEntry() const + { Check(this); return firstEntry; } + Entry* + GetLastEntry() + { Check(this); return lastEntry; } + const Entry* + GetLastEntry() const + { Check(this); return lastEntry; } + int + BuildSubList( + const ObjectNameList &source_list, + const char *prefix + ); + + Logical + TestInstance() const; + static Logical + TestClass(); + }; + + //########################################################################## + //############## ObjectNameList::Entry ############################### + //########################################################################## + + class ObjectNameList__Entry + { + friend class ObjectNameList; + friend class NameList; + friend class AlphaNameList; + + private: + ObjectNameList::Entry + *nextEntry; + + public: + void + *dataReference; + + protected: + void + SetName(const char *name); + + public: + #if defined(USE_SIGNATURE) + friend int + Is_Signature_Bad(const volatile ObjectNameList__Entry *); + #endif + + const char* + GetName() const + { + Check(this); + return &((const char *)this)[sizeof(ObjectNameList::Entry)]; + } + Logical + IsName(const char *name) const; + void* + GetObject() + { Check(this); return dataReference; } + void* + GetData() + { Check(this); return dataReference; } + const void* + GetData() const + { Check(this); return dataReference; } + char* + GetChar() + { Check(this); return (char *)dataReference; } + const char* + GetChar() const + { Check(this); return (const char *)dataReference; } + int + GetAtoi() const + { Check(this); Check_Pointer(dataReference); + return atoi((const char *)dataReference); } + long + GetAtol() const + { Check(this); Check_Pointer(dataReference); + return atol((const char *)dataReference); } + double + GetAtof() const + { Check(this); Check_Pointer(dataReference); + return atof((const char *)dataReference); } + ObjectNameList::Entry* + GetNextEntry() + { Check(this); return nextEntry; } + const ObjectNameList::Entry* + GetNextEntry() const + { Check(this); return nextEntry; } + Logical + TestInstance() const; + }; + + //########################################################################## + //############## NameList ############################################ + //########################################################################## + + class NameList: + public ObjectNameList + { + public: + NameList(); + ~NameList(); + + void* + FindData(const char *name) + { return FindObject(name); } + const char* + FindName(void *data); + Entry* + FindEntry(const char *name); + Entry* + FindEntry(void *data); + void + DeleteEntry(const char *name); // this one is searches for name + static Logical + TestClass(); + }; + + //########################################################################## + //############## AlphaNameList ####################################### + //########################################################################## + + class AlphaNameList: + public NameList + { + public: + AlphaNameList(); + ~AlphaNameList(); + + const char* + AddEntry( + const char *name, + void *data + ); + static Logical + TestClass(); + }; + + //########################################################################## + //########################################################################## +#endif diff --git a/CODE/RP/MUNGA/NAMELIST.TCP b/CODE/RP/MUNGA/NAMELIST.TCP new file mode 100644 index 0000000..963e742 --- /dev/null +++ b/CODE/RP/MUNGA/NAMELIST.TCP @@ -0,0 +1,305 @@ +//===========================================================================// +// File: namelist.tst // +// Title: Definition of NameList TestClass methods. // +// Project: Munga // +// Author: Ken Olsen // +// Purpose: Maintains an unsorted list of strings with (void *) to // +// anything the client needs to associate with the string. // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 01/06/95 KEO Stub-out TestClass methods. // +// 02/12/95 KEO Test IsEmpty method. // +//---------------------------------------------------------------------------// +// Copyright (c) 1994, 1995 Virtual World Entertainment, Inc. // +// All rights reserved worldwide. // +// This unpublished source code is PROPRIETARY and CONFIDENTIAL. // +//===========================================================================// + +//############################################################################# +//############## TestHost ############################################### +//############################################################################# + +class TestHost SIGNATURED +{ +public: + //-------------------------------------------------------------------- + // ObjectNameList is designed to bond with another class to provide + // dymanic naming of the objects represented by that class. TestHost + // provides a means of testing the functionality of ObjectNameList. + //-------------------------------------------------------------------- + const char + *name; + TestHost + *next; + static ObjectNameList + names; + + TestHost(const char *a_name); + ~TestHost(); + + Logical + TestInstance() const; +}; + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +ObjectNameList + TestHost::names; + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +TestHost::TestHost(const char *a_name) +{ + Check_Pointer(this); + Check_Pointer(a_name); + name = names.AddEntry(a_name, (void *)this); + next = NULL; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +TestHost::~TestHost() +{ + Check(this); + names.DeleteEntry(name); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + TestHost::TestInstance() const +{ + return True; +} + +//############################################################################# +//############## ObjectNameList::TestClass ############################## +//############################################################################# + +Logical + ObjectNameList::TestClass() +{ + DEBUG_STREAM << "Starting ObjectNameList test..." << endl; + + TestHost + *host, + *save_host; + ObjectNameList::Entry + *next_entry, + *entry, + *save_entry; + NameList + sub_list; + int + freq, + count, + i; + div_t + mod; + char + name[20], + save_name[20]; + ostrstream + stream(name, sizeof(name)); + + //---------------------- + // initialize variables + //---------------------- + save_host = NULL; + freq = TEST_CLASS / 10; + Test( freq > 1 ); + count = 0; + + //-------------------------------- + // add objects to test and delete + // a few in the process + //-------------------------------- + Test( TestHost::names.IsEmpty() ); + for (i=0; iGetObject(); + Check(host); + Check_Pointer(host->name); + Check_Pointer(entry->GetName()); + Test( host->name == entry->GetName() ); + if (!(--i)) + { + save_entry = entry; + } + entry = entry->GetNextEntry(); + } + + //-------------------------------------- + // delete middle, first and last object + //-------------------------------------- + entry = save_entry; + if (entry) + { + Check_Pointer(entry); // special case (entry is not constructed) + host = (TestHost *)entry->GetObject(); + Check(host); + Unregister_Object(host); + delete host; + count--; + } + + entry = TestHost::names.GetFirstEntry(); + if (entry) + { + Check_Pointer(entry); // special case (entry is not constructed) + host = (TestHost *)entry->GetObject(); + Check(host); + Unregister_Object(host); + delete host; + count--; + } + + entry = TestHost::names.GetLastEntry(); + if (entry) + { + Check_Pointer(entry); // special case (entry is not constructed) + host = (TestHost *)entry->GetObject(); + Check(host); + Unregister_Object(host); + delete host; + count--; + } + + //------------------------ + // add a few more objects + //------------------------ + for (i=TEST_CLASS; i0 + host = + #endif + new TestHost(name); + Register_Object(host); + count++; + } + + //----------------- + // create sub list + //----------------- + i = sub_list.BuildSubList(TestHost::names, "TEST"); + Test( i == freq ); + Test( i == sub_list.EntryCount() ); + + //----------------------------- + // check count and names again + // and delete as we go + //----------------------------- + Test( count == TestHost::names.EntryCount() ); + + entry = TestHost::names.GetFirstEntry(); + while (entry) + { + Check_Pointer(entry); // special case (entry is not constructed) + host = (TestHost *)entry->GetObject(); + Check(host); + Check_Pointer(host->name); + Check_Pointer(entry->GetName()); + Test( host->name == entry->GetName() ); + + next_entry = entry->GetNextEntry(); + if (!next_entry) + { + Test( entry == TestHost::names.GetLastEntry() ); + Test( entry == TestHost::names.GetFirstEntry() ); + } + Unregister_Object(host); + delete host; + count--; + entry = next_entry; + } + + Test( count == 0 ); + +// Tell(" ObjectNameList::TestClass() is stubbed out!\n"); + return True; +} + +//############################################################################# +//############## NameList::TestClass #################################### +//############################################################################# + +Logical + NameList::TestClass() +{ + DEBUG_STREAM << "Starting NameList test..." << endl; + + Tell(" NameList::TestClass() is stubbed out!\n"); + return False; +} + +//############################################################################# +//############## AlphaNameList::TestClass ############################### +//############################################################################# + +Logical + AlphaNameList::TestClass() +{ + DEBUG_STREAM << "Starting AlphaNameList test..." << endl; + + Tell(" AlphaNameList::TestClass() is stubbed out!\n"); + return False; +} + +//############################################################################# +//############################################################################# diff --git a/CODE/RP/MUNGA/NETWORK.HPP b/CODE/RP/MUNGA/NETWORK.HPP new file mode 100644 index 0000000..9f5a0ed --- /dev/null +++ b/CODE/RP/MUNGA/NETWORK.HPP @@ -0,0 +1,289 @@ +//===========================================================================// +// 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(NETWORK_HPP) +# define NETWORK_HPP + +# if !defined(RECEIVER_HPP) +# include +# endif + +# if !defined(TIME_HPP) +# include +# endif + +# if !defined(HOSTID_HPP) +# include +# endif + + class Mission; + class NetworkManager; + class NotationFile; + + // + //--------------------------------------------------- + // Support types for interest manager + //--------------------------------------------------- + // + typedef Enumeration InterestZoneID; + const InterestZoneID NullInterestZoneID = 0; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~ NetworkAddress ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + typedef LWord NetworkAddress; + + extern const NetworkAddress NullNetworkAddress; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~ NetworkClient ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class NetworkPacket; + + class NetworkClient: + public Receiver + { + friend class NetworkManager; + + //########################################################################## + // Shared Data support + // + public: + static Derivation ClassDerivations; + static SharedData DefaultData; + + //########################################################################## + // Construction and destruction support + // + public: + enum ClientID { + NetworkManagerClientID = 0, + EntityManagerClientID = 1, + HostManagerClientID = 2, + InterestManagerClientID = 3, + ApplicationClientID = 4, + ConsoleClientID = 5, + IcomManagerClientID = 6 + }; + + private: + ClientID + clientID; + + protected: + NetworkClient( + ClassID class_ID, + SharedData &virtual_data, + ClientID clientID + ); + + public: + ~NetworkClient(); + + Logical + TestInstance() const; + + //########################################################################## + // Message packet receiving + // + public: + virtual void + ReceiveNetworkPacket( + NetworkPacket *packet, + Receiver::Message *packet_message + ); + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Network ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + #define NETWORKMANAGER_BUFFER_SIZE 1600 + + class NetworkManager__ReceiveEggFileMessage; + + class NetworkManager: + public NetworkClient + { + //########################################################################## + // Shared Data support + // + public: + static Derivation ClassDerivations; + static SharedData DefaultData; + + public: + typedef Enumeration GameID; + + const NetworkAddress& + GetAddress() + {return address;} + + NetworkManager(SharedData &shared_data); + ~NetworkManager(); + + void + SetGameID(GameID new_id) + {gameID = new_id;} + + virtual void + Send( + Message *what, + ClientID to, + HostID host_id + ); + void + Broadcast( + Message *what, + ClientID to + ); + virtual void + ExclusiveBroadcast( + Message *what, + ClientID to + ); + Logical + RoutePacket(); + virtual Logical + ExecuteBackground(); + + NetworkClient* + GetNetworkClientPointer(ClientID client_id); + + virtual void + StartConnecting(Mission *mission); + + virtual Logical + Shutdown(); + + virtual void + Marker(char *) {}; + + enum NetworkMode + { + ReliableMode, + UnreliableMode + }; + + virtual void + Mode(NetworkMode) {}; + +// protected: //GY for test only + virtual Logical + CheckBuffers(NetworkPacket*); + virtual void + RemovePacket(NetworkPacket *packet); + + GameID + gameID; + NetworkAddress + address; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Message Support + // + public: + // + // Message IDs + // + enum + { + ReceiveEggFileMessageID = NetworkClient::NextMessageID, + NextMessageID + }; + + // + // Message types + // + typedef NetworkManager__ReceiveEggFileMessage + ReceiveEggFileMessage; + + // + // Message table + // + static const HandlerEntry + MessageHandlerEntries[]; + static MessageHandlerSet + MessageHandlers; + + void + ReceiveEggFileMessageHandler(ReceiveEggFileMessage* EggMessage); + + protected: + char + *eggTempBuffer; + NotationFile + *networkEggNotationFile; + long + eggTempNext; + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~ NetworkManager messages ~~~~~~~~~~~~~~~~~~~~~~~~~ + // NetworkManager__ReceiveEggFileMessage + // NOTE: this message should be setup as variable length rather than fixing the + // size at 1000, I wasn't sure how to do this and there wasn't anyone around + // to ask at the time so I did it this way temporarily. + // + class NetworkManager__ReceiveEggFileMessage: + public Receiver__Message + { + public: + NetworkManager__ReceiveEggFileMessage( + int sequence_number, + int total_file_length, + char* notation_data, + int length + ): + Receiver__Message( + NetworkManager::ReceiveEggFileMessageID, + sizeof(NetworkManager__ReceiveEggFileMessage) + ), + sequenceNumber(sequence_number), + notationFileLength(total_file_length), + thisMessageLength(length) + {Mem_Copy(notationData,notation_data,length,sizeof(notationData));} + int + sequenceNumber; + int + notationFileLength; + int + thisMessageLength; + char + notationData[1000]; + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~ NetworkPacketHeader ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class NetworkPacketHeader + { + public: + NetworkClient::ClientID + clientID; + NetworkManager::GameID + gameID; + HostID + fromHost; + Time + timeStamp; + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~ NetworkPacket ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class NetworkPacket: + public NetworkPacketHeader + { + public: + Receiver::Message + messageData; + + }; + +#endif diff --git a/CODE/RP/MUNGA/NODE.CPP b/CODE/RP/MUNGA/NODE.CPP new file mode 100644 index 0000000..6c55e27 --- /dev/null +++ b/CODE/RP/MUNGA/NODE.CPP @@ -0,0 +1,52 @@ +//===========================================================================// +// File: node.cc // +// Project: MUNGA Brick: Connection Library // +// Contents: Implementation details of Node class // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 09/29/94 ECH Initial coding. // +// 10/20/94 JMA Fixed style stuff. // +// 10/23/94 ECH Added greater deletion safety // +// 10/28/94 JMA Made compatible with SGI CC // +// 11/03/94 ECH Made compatible with BC4.0 // +// 11/05/94 JMA Made compatible with GNU C++, moved ReleaseSocketLink into // +// the virtual data field // +// 11/08/94 ECH Made compatible with BC4.0 // +// 12/01/94 JMA Made compatible with SGI CC // +// 12/12/94 ECH Changed release handler // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(NODE_HPP) + #include +#endif + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Node ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Node::Node(ClassID class_id): + Plug(class_id) +{ +} + +Node::Node(PlugStream *stream): + Plug(stream) +{ +} + +Node::~Node() +{ +} + +void + Node::ReleaseLinkHandler(Socket*, Plug*) +{ +} + + diff --git a/CODE/RP/MUNGA/NODE.HPP b/CODE/RP/MUNGA/NODE.HPP new file mode 100644 index 0000000..9fb88a8 --- /dev/null +++ b/CODE/RP/MUNGA/NODE.HPP @@ -0,0 +1,76 @@ +//===========================================================================// +// File: node.hh // +// Project: MUNGA Brick: Connection Library // +// Contents: Interface specification for base node class // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 09/29/94 ECH Initial coding. // +// 10/20/94 JMA Fixed style stuff. // +// 10/23/94 ECH Added greater deletion safety // +// 10/28/94 JMA Made compatible with SGI CC // +// 11/08/94 ECH Made compatible with BC4.0 // +// 11/30/94 JMA Adapted to new style conventions // +// 12/06/94 JMA Made virtual data publicly visible // +// 12/12/94 ECH Changed release handler // +// 02/16/95 ECH Removed plug commands, added node command // +// 02/16/95 ECH Removed plug commands, added node command // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(NODE_HPP) +# define NODE_HPP + +# if !defined(SOCKET_HPP) +# include +# endif + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Node ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class Node: + public Plug + { + public: + // + //-------------------------------------------------------------------- + // Destructor + //-------------------------------------------------------------------- + // + ~Node(); + + // + //-------------------------------------------------------------------- + // ReceiveNodeCommand - Is called from plugs when sending a command + // to connected sockets + //-------------------------------------------------------------------- + // + virtual int + ReceiveNodeCommand( + NodeCommandID, // node_command + void * //info + ) + {return 0;} + + // + //-------------------------------------------------------------------- + // ReleaseLinkHandler + //-------------------------------------------------------------------- + // + virtual void + ReleaseLinkHandler(Socket*, Plug*); + + protected: + // + //-------------------------------------------------------------------- + // Constructor + //-------------------------------------------------------------------- + // + Node(ClassID class_id = TrivialNodeClassID); + Node(PlugStream *stream); + }; + +#endif + diff --git a/CODE/RP/MUNGA/NORMAL.CPP b/CODE/RP/MUNGA/NORMAL.CPP new file mode 100644 index 0000000..dbc4bd3 --- /dev/null +++ b/CODE/RP/MUNGA/NORMAL.CPP @@ -0,0 +1,69 @@ +//===========================================================================// +// File: normal.cc // +// Project: MUNGA Brick: Math Library // +// Contents: Implementation details for the normal class // +//---------------------------------------------------------------------------// +// 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 // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(NORMAL_HPP) + #include +#endif + +#if !defined(AFFNMTRX_HPP) + #include +#endif + +// +//############################################################################# +//############################################################################# +// +Normal& + Normal::Multiply_Inverse( + const Normal &Source, + const AffineMatrix &M + ) +{ + Check(this); + Check(&Source); + Check(&M); + + x = Source.x*M(0,0) + Source.y*M(0,1) + Source.z*M(0,2); + y = Source.x*M(1,0) + Source.y*M(1,1) + Source.z*M(1,2); + z = Source.x*M(2,0) + Source.y*M(2,1) + Source.z*M(2,2); + + return *this; +} + +// +//############################################################################# +//############################################################################# +// +Normal& + Normal::Multiply( + const Normal &Source, + const AffineMatrix &M + ) +{ + Check(this); + Check(&Source); + Check(&M); + + AffineMatrix m; + m.Invert(M); + return Multiply_Inverse(Source,m); +} + +#if defined(TEST_CLASS) +# include "normal.tcp" +#endif + diff --git a/CODE/RP/MUNGA/NORMAL.HPP b/CODE/RP/MUNGA/NORMAL.HPP new file mode 100644 index 0000000..194a812 --- /dev/null +++ b/CODE/RP/MUNGA/NORMAL.HPP @@ -0,0 +1,116 @@ +//===========================================================================// +// File: normal.hh // +// Project: MUNGA Brick: Math Library // +// Contents: Implementation details for the normal class // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 11/19/94 JMA Initial coding. // +// 12/01/94 JMA Made compatible with SGI CC // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(NORMAL_HPP) +# define NORMAL_HPP + +# if !defined(UNITVEC_HPP) +# include +# endif + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Normal ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class Normal: + public UnitVector + { + public: + // + // Constructors + // + Normal() + {} + Normal( + Scalar x, + Scalar y, + Scalar z + ): + UnitVector(x,y,z) + {} + Normal(const UnitVector& v): + UnitVector(v) + {} + + // + // Assignment operators + // + Normal& + operator=(const UnitVector& v) + {UnitVector::operator=(v); return *this;} + Normal& + operator=(const Vector3D& v) + {Normalize(v); return *this;} + + // + // Math operators + // + Normal& + Negate(const Normal &v) + {Vector3D::Negate(v); return *this;} + + Scalar + operator*(const Vector3D& v) const + {return Vector3D::operator*(v);} + + Normal& Multiply( + const Normal &n, + const LinearMatrix &m + ) + {UnitVector::Multiply(n,m); return *this;} + Normal& + operator*=(const LinearMatrix &M) + {Normal src(*this); return Multiply(src,M);} + + // + // These functions will cause the vector to lose its unit length, thus + // cause any downstream verifies to fail. We have to be able to only + // normalize the normal once after all transformations if these are to + // be of any benefit, so don't use them for now + Normal& + Multiply_Inverse( + const Normal &Source, + const AffineMatrix &M + ); + Normal& + Multiply( + const Normal &Source, + const AffineMatrix &M + ); + + // + // Support functions + // + static Logical + TestClass(); + + private: + static const Normal identity; + Normal& Negate(const Vector3D &V); + Normal& Add(const Vector3D& V1,const Vector3D& V2); + Normal& operator+=(const Vector3D& V); + Normal& Subtract(const Vector3D& V1,const Vector3D& V2); + Normal& operator-=(const Vector3D& V); + Normal& Cross(const Vector3D& V1,const Vector3D& V2); + Normal& Multiply(const Vector3D& V,Scalar Scale); + Normal& operator*=(Scalar Value); + Normal& Multiply(const Vector3D& V1,const Vector3D& V2); + Normal& operator*=(const Vector3D &V); + Normal& Multiply(const Vector3D &Source, const AffineMatrix &M); + Normal& operator*=(const AffineMatrix &M); + Normal& Divide(const Vector3D& V,Scalar Scale); + Normal& operator/=(Scalar Value); + Normal& Combine(const Vector3D& V1,Scalar t1,const Vector3D& V2,Scalar t2); + }; + +#endif diff --git a/CODE/RP/MUNGA/NORMAL.TCP b/CODE/RP/MUNGA/NORMAL.TCP new file mode 100644 index 0000000..2d51150 --- /dev/null +++ b/CODE/RP/MUNGA/NORMAL.TCP @@ -0,0 +1,22 @@ +//===========================================================================// +// File: normal.cc // +// Project: MUNGA Brick: Math Library // +// Contents: Implementation details for the normal class // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 11/19/94 JMA Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1994, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +Logical + Normal::TestClass() +{ + DEBUG_STREAM << "Starting Normal Test...\n"; + Tell(" Normal::TestClass() is stubbed out!\n"); + return False; +} + diff --git a/CODE/RP/MUNGA/NOTATION.CPP b/CODE/RP/MUNGA/NOTATION.CPP new file mode 100644 index 0000000..328d67c --- /dev/null +++ b/CODE/RP/MUNGA/NOTATION.CPP @@ -0,0 +1,2151 @@ +//===========================================================================// +// File: notation.cpp // +// Title: Definition of NotationFile classes. // +// Project: Munga // +// Author: Ken Olsen // +// Purpose: Provide general purpose access to data stored in a formatted // +// text file. // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 01/07/95 KEO Converted from Tool Architecture I. // +// 02/07/95 KEO Add AppendEntry methods. // +// 02/17/95 KEO Change page and entry lists to make nomenclature. // +// 03/11/95 KEO Remove all instances of strtok from class. // +// 03/24/95 KEO Add methods to read and write text in memory. // +// 03/31/95 KEO Add methods for lab only mark. // +// 05/23/95 KEO Add setpage and appendpage and allow setentry(,,null). // +// 11/11/95 KEO Add operation modes and correct small bugs. // +//---------------------------------------------------------------------------// +// Copyright (c) 1994-1995 Virtual World Entertainment, Inc. // +// All rights reserved worldwide. // +// This unpublished source code is PROPRIETARY and CONFIDENTIAL. // +//===========================================================================// + +#include + +#if !defined(NOTATION_HPP) + #include +#endif + +#if !defined(NAMELIST_HPP) + #include +#endif + +//############################################################################# +//############## NotationFile ########################################### +//############################################################################# + +NotationFile::NotationFile( + const char *filename, + Enumeration operation_modes +) +{ + Check_Pointer(this); + //do not check filename here + + fileName = NULL; + firstNotePage = lastNotePage = NULL; + pageCount = cleanPageCount = 0; + dirtyFlag = False; + saveNotePage = NULL; + operationModes = operation_modes; + + if (filename && *filename) + { + Check_Pointer(filename); + ReadFile(filename); + } + Check(this); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +NotationFile::~NotationFile() +{ + Check(this); + + NotePage + *next = firstNotePage; + + if (dirtyFlag) + { + if (fileName && *fileName && !WriteFile()) + { + cerr << "NotationFile: Error writing file '" << fileName << + "' - changes lost!" << endl; + } + } + + while (next) + { + Check(next); + firstNotePage = next->nextNotePage; + Unregister_Object(next); + delete next; + next = firstNotePage; + } + if (fileName) + { + Unregister_Pointer(fileName); + delete fileName; + } +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + NotationFile::PageExists(const char *pagename) +{ + // let FindNotePage() check this and pagename + + NotePage + *notepage; + + return FindNotePage(pagename, ¬epage); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +long + NotationFile::EntryCount(const char *pagename) +{ + // let FindNotePage() check this and pagename + + NotePage + *notepage; + + if (FindNotePage(pagename, ¬epage)) + { + Check(notepage); + return ((operationModes&CleanEntryListMode)?notepage->cleanNotationCount:notepage->notationCount); + } + return 0; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +NotationFile::NotePage* + NotationFile::SetPage( + const char *pagename, + const char *comment + ) +{ + // let FindNotePage() check this and pagename + // let AppentPage() or SetComment() check comment + + NotePage + *notepage; + + SetDirty(); + if (!FindNotePage(pagename, ¬epage)) + { + notepage = AppendPage(pagename, comment); + } + else + { + notepage->SetComment(comment); + } + return notepage; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +NotationFile::NotePage* + NotationFile::AppendPage( + const char *pagename, + const char *comment + ) +{ + Check(this); + Check_Pointer(pagename); + // let SetComment() check comment + + NotePage + *notepage; + + SetDirty(); + notepage = new NotePage(this); + Register_Object(notepage); + notepage->SetName(pagename, &cleanPageCount); + notepage->SetComment(comment); + AppendNotePage(notepage); + + return notepage; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +int + NotationFile::GetEntry( + const char *pagename, + const char *entryname, + const char **contents + ) +{ + Check(this); + Check_Pointer(pagename); + Check_Pointer(entryname); + Check_Pointer(contents); + + NotePage + *notepage; + Notation + *notation; + + //--------------- + // return string + //--------------- + if (FindNotePage(pagename, ¬epage)) + { + Check(notepage); + if (notepage->FindNote(entryname, ¬ation)) + { + Check(notation); + *contents = notation->GetEntry(); + return True; + } + } + return False; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +int + NotationFile::GetEntry( + const char *pagename, + const char *entryname, + int *value + ) +{ + Check(this); + Check_Pointer(pagename); + Check_Pointer(entryname); + Check_Pointer(value); + + const char + *contents; + + //---------------- + // return integer + //---------------- + if (GetEntry(pagename, entryname, &contents)) + { + Check_Pointer(contents); + *value = atoi(contents); + return True; + } + return False; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +int + NotationFile::GetEntry( + const char *pagename, + const char *entryname, + Scalar *value + ) +{ + Check(this); + Check_Pointer(pagename); + Check_Pointer(entryname); + Check_Pointer(value); + + const char + *contents; + + //--------------- + // return scalar + //--------------- + if (GetEntry(pagename, entryname, &contents)) + { + Check_Pointer(contents); + *value = atof(contents); + return True; + } + return False; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +int + NotationFile::GetEntry( + const char *pagename, + const char *entryname, + double *value + ) +{ + Check(this); + Check_Pointer(pagename); + Check_Pointer(entryname); + Check_Pointer(value); + + const char + *contents; + + //--------------- + // return double + //--------------- + if (GetEntry(pagename, entryname, &contents)) + { + Check_Pointer(contents); + *value = atof(contents); + return True; + } + return False; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +int + NotationFile::GetLogicalEntry( + const char *pagename, + const char *entryname, + Logical *value + ) +{ + Check(this); + Check_Pointer(pagename); + Check_Pointer(entryname); + Check_Pointer(value); + + const char + *contents; + + //---------------- + // return Logical + //---------------- + if (GetEntry(pagename, entryname, &contents)) + { + Check_Pointer(contents); + //-------------------------------------------------------- + // these stricmp()'s must not affected by IgnoreCaseModes + //-------------------------------------------------------- + *value = (!stricmp(contents, "true") || !stricmp(contents, "yes") || atoi(contents) != 0); + return True; + } + return False; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + NotationFile::SetEntry( + const char *pagename, + const char *entryname, + const char *contents + ) +{ + Check(this); + Check_Pointer(pagename); + Check_Pointer(entryname); + if (contents) { Check_Pointer(contents); } + + NotePage + *notepage; + Notation + *notation; + + SetDirty(); + //--------------- + // assign string + //--------------- + if (!FindNotePage(pagename, ¬epage)) + { + notepage = AppendPage(pagename); + } + notation = new Notation; + Register_Object(notation); + notation->SetName(entryname, &(notepage->cleanNotationCount)); + notation->SetEntry(contents); + notepage->UpdateNote(notation); + return; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + NotationFile::SetEntry( + const char *pagename, + const char *entryname, + int value + ) +{ + Check(this); + Check_Pointer(pagename); + Check_Pointer(entryname); + + static char + contents[12]; + ostrstream + stream(contents, sizeof(contents)); + + stream << value << ends; + + SetEntry(pagename, entryname, contents); + return; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + NotationFile::SetEntry( + const char *pagename, + const char *entryname, + Scalar value + ) +{ + Check(this); + Check_Pointer(pagename); + Check_Pointer(entryname); + + static char + contents[32]; + ostrstream + stream(contents, sizeof(contents)); + + stream << value << ends; + + SetEntry(pagename, entryname, contents); + return; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + NotationFile::SetEntry( + const char *pagename, + const char *entryname, + double value + ) +{ + Check(this); + Check_Pointer(pagename); + Check_Pointer(entryname); + + static char + contents[64]; + ostrstream + stream(contents, sizeof(contents)); + + stream << value << ends; + + SetEntry(pagename, entryname, contents); + return; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + NotationFile::SetLogicalEntry( + const char *pagename, + const char *entryname, + Logical value + ) +{ + Check(this); + Check_Pointer(pagename); + Check_Pointer(entryname); + + static char + contents[6]; + ostrstream + stream(contents, sizeof(contents)); + + if (value) + { + stream << "True" << ends; + } + else + { + stream << "False" << ends; + } + + SetEntry(pagename, entryname, contents); + return; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + NotationFile::AppendEntry( + const char *pagename, + const char *entryname, + const char *contents + ) +{ + Check(this); + Check_Pointer(pagename); + if (entryname) { Check_Pointer(entryname); } + if (contents) { Check_Pointer(contents); } + + NotePage + *notepage; + Notation + *notation; + + SetDirty(); + //--------------- + // assign string + //--------------- + if (!FindNotePage(pagename, ¬epage)) + { + notepage = AppendPage(pagename); + } + notation = new Notation; + Register_Object(notation); + notation->SetName(entryname, &(notepage->cleanNotationCount)); + notation->SetEntry(contents); + notepage->AppendNote(notation); + return; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + NotationFile::AppendEntry( + const char *pagename, + const char *entryname, + int value + ) +{ + Check(this); + Check_Pointer(pagename); + Check_Pointer(entryname); + + static char + contents[12]; + ostrstream + stream(contents, sizeof(contents)); + + stream << value << ends; + + AppendEntry(pagename, entryname, contents); + return; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + NotationFile::AppendEntry( + const char *pagename, + const char *entryname, + Scalar value + ) +{ + Check(this); + Check_Pointer(pagename); + Check_Pointer(entryname); + + static char + contents[32]; + ostrstream + stream(contents, sizeof(contents)); + + stream << value << ends; + + AppendEntry(pagename, entryname, contents); + return; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + NotationFile::AppendEntry( + const char *pagename, + const char *entryname, + double value + ) +{ + Check(this); + Check_Pointer(pagename); + Check_Pointer(entryname); + + static char + contents[64]; + ostrstream + stream(contents, sizeof(contents)); + + stream << value << ends; + + AppendEntry(pagename, entryname, contents); + return; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + NotationFile::AppendLogicalEntry( + const char *pagename, + const char *entryname, + Logical value + ) +{ + Check(this); + Check_Pointer(pagename); + Check_Pointer(entryname); + + static char + contents[6]; + ostrstream + stream(contents, sizeof(contents)); + + if (value) + { + stream << "True" << ends; + } + else + { + stream << "False" << ends; + } + + AppendEntry(pagename, entryname, contents); + return; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +NameList* + NotationFile::MakeEntryList( + const char *pagename, + const char *entryname_prefix + ) +{ + Check(this); + Check_Pointer(pagename); + //do not check entryname_prefix here + + NotePage + *notepage; + + //-------------------------------------------------- + // return namelist of matching entries and contents + //-------------------------------------------------- + if (FindNotePage(pagename, ¬epage)) + { + return MakeEntryList(notepage, entryname_prefix); + } + return NULL; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +NameList* + NotationFile::MakeEntryList( + NotePage *notepage, + const char *entryname_prefix + ) +{ + Check(this); + Check(notepage); + //do not check entryname_prefix here + + const char + *name_prefix = entryname_prefix?entryname_prefix:"\0"; + Check_Pointer(name_prefix); + const int + length = strlen(name_prefix); + NameList + *namelist; + Notation + *notation; + const char + *name; + Logical + prefix_matches, + add_entry; + + //-------------------------------------------------- + // return namelist of matching entries and contents + //-------------------------------------------------- + namelist = new NameList; + //do not register namelist + notation = notepage->firstNotation; + while (notation) + { + Check(notation); + name = notation->GetName(); + if (name) + { + Check_Pointer(name); + if (operationModes&IgnoreEntryCaseMode) + { + prefix_matches = (!strnicmp(name, name_prefix, length)); + } + else + { + prefix_matches = (!strncmp(name, name_prefix, length)); + } + } + else + { + prefix_matches = (entryname_prefix == NULL); + } + if (operationModes&CleanEntryListMode) + { + add_entry = (notation->cleanNotation && prefix_matches); + } + else if (name) + { + add_entry = (prefix_matches); + } + else if (operationModes&SkipBlanksListMode) + { + add_entry = False; + } + else + { + //------------------------------------------------------ + // HACK: NameList::AddEntry() should accept name==NULL + //------------------------------------------------------ + add_entry = False; + //add_entry = (prefix_matches); + } + if (add_entry) + { + if (notation->GetEntry()) + { Check_Pointer(notation->GetEntry()); } + namelist->AddEntry(name, (void *)notation->GetEntry()); + } + notation = notation->nextNotation; + } + return namelist; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +NameList* + NotationFile::MakePageList(const char *pagename_prefix) +{ + Check(this); + //do not check pagename_prefix here + + const char + *name_prefix = pagename_prefix?pagename_prefix:"\0"; + Check_Pointer(name_prefix); + const int + length = strlen(name_prefix); + NameList + *namelist; + NotePage + *notepage; + const char + *name; + Logical + prefix_matches, + add_page; + + //----------------------------------------------------- + // return namelist of matching pagenames and notepages + //----------------------------------------------------- + namelist = new NameList; + //do not register namelist + notepage = firstNotePage; + while (notepage) + { + Check(notepage); + name = notepage->GetName(); + if (name) + { + Check_Pointer(name); + if (operationModes&IgnorePageCaseMode) + { + prefix_matches = (!strnicmp(name, name_prefix, length)); + } + else + { + prefix_matches = (!strncmp(name, name_prefix, length)); + } + } + else + { + prefix_matches = (pagename_prefix == NULL); + } + if (operationModes&CleanPageListMode) + { + add_page = (notepage->cleanPage && prefix_matches); + } + else if (name) + { + add_page = (prefix_matches); + } + else if (operationModes&SkipBlanksListMode) + { + add_page = False; + } + else + { + //------------------------------------------------------ + // HACK: NameList::AddEntry() should accept name==NULL + //------------------------------------------------------ + add_page = False; + //add_page = (pagename_prefix==NULL); + } + if (add_page) + { + namelist->AddEntry(name, (void *)notepage); + } + notepage = notepage->nextNotePage; + } + return namelist; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +AlphaNameList* + NotationFile::MakeAlphaEntryList( + const char *pagename, + const char *entryname_prefix + ) +{ + Check(this); + Check_Pointer(pagename); + //do not check entryname_prefix here + + NotePage + *notepage; + + //------------------------------------------------------- + // return alphanamelist of matching entries and contents + //------------------------------------------------------- + if (FindNotePage(pagename, ¬epage)) + { + return MakeAlphaEntryList(notepage, entryname_prefix); + } + return NULL; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +AlphaNameList* + NotationFile::MakeAlphaEntryList( + NotePage *notepage, + const char *entryname_prefix + ) +{ + Check(this); + Check(notepage); + //do not check entryname_prefix here + + const char + *name_prefix = entryname_prefix?entryname_prefix:"\0"; + Check_Pointer(name_prefix); + const int + length = strlen(name_prefix); + AlphaNameList + *namelist; + Notation + *notation; + const char + *name; + Logical + prefix_matches, + add_entry; + + //------------------------------------------------------- + // return alphanamelist of matching entries and contents + //------------------------------------------------------- + namelist = new AlphaNameList; + //do not register namelist + notation = notepage->firstNotation; + while (notation) + { + Check(notation); + name = notation->GetName(); + if (name) + { + Check_Pointer(name); + if (operationModes&IgnoreEntryCaseMode) + { + prefix_matches = (!strnicmp(name, name_prefix, length)); + } + else + { + prefix_matches = (!strncmp(name, name_prefix, length)); + } + } + else + { + prefix_matches = (entryname_prefix == NULL); + } + if (operationModes&CleanEntryListMode) + { + add_entry = (notation->cleanNotation && prefix_matches); + } + else if (name) + { + add_entry = (prefix_matches); + } + else if (operationModes&SkipBlanksListMode) + { + add_entry = False; + } + else + { + //------------------------------------------------------ + // HACK: NameList::AddEntry() should accept name==NULL + //------------------------------------------------------ + add_entry = False; + //add_entry = (entryname_prefix==NULL); + } + if (add_entry) + { + if (notation->GetEntry()) + { Check_Pointer(notation->GetEntry()); } + namelist->AddEntry(name, (void *)notation->GetEntry()); + } + notation = notation->nextNotation; + } + return namelist; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +AlphaNameList* + NotationFile::MakeAlphaPageList(const char *pagename_prefix) +{ + Check(this); + //do not check pagename_prefix here + + const char + *name_prefix = pagename_prefix?pagename_prefix:"\0"; + Check_Pointer(name_prefix); + const int + length = strlen(name_prefix); + AlphaNameList + *namelist; + NotePage + *notepage; + const char + *name; + Logical + prefix_matches, + add_page; + + //---------------------------------------------------------- + // return alphanamelist of matching pagenames and notepages + //---------------------------------------------------------- + namelist = new AlphaNameList; + //do not register namelist + notepage = firstNotePage; + while (notepage) + { + Check(notepage); + name = notepage->GetName(); + if (name) + { + Check_Pointer(name); + if (operationModes&IgnorePageCaseMode) + { + prefix_matches = (!strnicmp(name, name_prefix, length)); + } + else + { + prefix_matches = (!strncmp(name, name_prefix, length)); + } + } + else + { + prefix_matches = (pagename_prefix == NULL); + } + if (operationModes&CleanPageListMode) + { + add_page = (notepage->cleanPage && prefix_matches); + } + else if (name) + { + add_page = (prefix_matches); + } + else if (operationModes&SkipBlanksListMode) + { + add_page = False; + } + else + { + //------------------------------------------------------ + // HACK: NameList::AddEntry() should accept name==NULL + //------------------------------------------------------ + add_page = False; + //add_page = (pagename_prefix==NULL); + } + if (add_page) + { + namelist->AddEntry(name, (void *)notepage); + } + notepage = notepage->nextNotePage; + } + return namelist; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + NotationFile::DeleteEntry( + const char *pagename, + const char *entryname + ) +{ + Check(this); + Check_Pointer(pagename); + Check_Pointer(entryname); + + NotePage + *notepage; + + //--------------------------- + // if found, delete Notation + //--------------------------- + if (FindNotePage(pagename, ¬epage)) + { + Check(notepage); + SetDirty(); + notepage->DeleteNote(entryname); + } + return; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + NotationFile::DeletePage(const char *pagename) +{ + Check(this); + Check_Pointer(pagename); + + NotePage + *notepage, + *prev; + + //---------------------------- + // if found, delete Note_Page + //---------------------------- + if (FindNotePage(pagename, ¬epage, &prev)) + { + DeletePage(notepage, prev); + } + return; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + NotationFile::ReadFile(const char *filename) +{ + Check(this); + Check_Pointer(filename); + + ifstream + notefile(filename); + char + buffer[512]; + Logical + was_empty = IsEmpty(); + + //------------------------------- + // store first notation filename + //------------------------------- + if (!fileName) + { + fileName = new char[strlen(filename) + 1]; + Register_Pointer(fileName); + strcpy(fileName, filename); + } + + //-------------------- + // read notation file + //-------------------- + if (notefile) + { + //Dump( "--- read notation file ---" ); + + while (notefile.getline(buffer, sizeof(buffer))) + { + //------------------------------ + // process line of NotationFile + //------------------------------ + Read(buffer); + } + notefile.close(); + Read(NULL); // (reset static variable) + + //Dump( "--- end ---" ); + } + if (was_empty) + { + dirtyFlag = False; + } + return; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + NotationFile::ReadText( + char *start, + long length + ) +{ + Check(this); + Check_Pointer(start); + + char + *stop, + *buffer; + Logical + was_empty = IsEmpty(); + + //-------------------------------- + // read notation file from memory + //-------------------------------- + stop = start + length; + while (start < stop) + { + //--------------------------------------------------------- + // this must preceed Read() which does not preserve buffer + //--------------------------------------------------------- + buffer = start; + start = strchr(buffer, '\0') + 1; + + //------------------------------ + // process line of NotationFile + //------------------------------ + Read(buffer); + } + Read(NULL); // (reset static variable) + if (was_empty) + { + dirtyFlag = False; + } + return; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + NotationFile::WriteFile(const char *filename) +{ + Check(this); + //do not check filename + + ofstream output; + + if (filename && *filename) + { + Check_Pointer(filename); + output.open(filename); + } + else if (fileName && *fileName) + { + Check_Pointer(fileName); + output.open(fileName); + } + else + { + return False; // you tried to WriteFile with no default fileName! + } + + if (output) + { + Write(output); + output.close(); + if (filename && *filename) + { + if (fileName) + { + Unregister_Pointer(fileName); + delete fileName; + } + fileName = new char[strlen(filename) + 1]; + Register_Pointer(fileName); + strcpy(fileName, filename); + } + dirtyFlag = False; + return True; + } + return False; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +long + NotationFile::SizeOfText() +{ + Check(this); + + ofstream + dummy; + + return Write(dummy, Size_Only); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +long + NotationFile::WriteText( + char *buffer, + long size + ) +{ + Check(this); + Check_Pointer(buffer); + Verify( size >= 0 ); + + ostrstream + output(buffer, size); + long + actual_size; + + if ((actual_size = Write(output, Text_Memory)) <= size) + { + dirtyFlag = False; + return actual_size; + } + + return -1L; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + NotationFile::Abort() +{ + Check(this); + dirtyFlag = False; + this->~NotationFile(); + //this->NotationFile(); //does not compile! + *this = NotationFile(); + Check(this); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + NotationFile::DeleteStandardPages() +{ + Check(this); + + NotePage + *prev = NULL, + *notepage = firstNotePage, + *next; + const char + *name; + + while (notepage) + { + Check(notepage); + next = notepage->nextNotePage; + name = notepage->pageName; + if (*name != '_' && strcmp(name, "LAB_ONLY") != 0) + { + DeletePage(notepage, prev); + } + else + { + prev = notepage; + } + notepage = next; + } + return; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + NotationFile::MarkLabOnly() +{ + Check(this); + + if (!IsMarkedLabOnly()) + { + SetPage("LAB_ONLY","\t// this file has not been approved for release"); + AppendEntry("LAB_ONLY", NULL, (char *)NULL); // (blank line) + } + return; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + NotationFile::AppendNotePage(NotePage *notepage) +{ + Check(this); + Check(notepage); + + //--------------------------------- + // append NotePage to NotationFile + //--------------------------------- + if (!lastNotePage) + { + firstNotePage = notepage; + } + else + { + Check(lastNotePage); + lastNotePage->nextNotePage = notepage; + } + lastNotePage = notepage; + lastNotePage->nextNotePage = NULL; + if (notepage->cleanPage) + { + ++cleanPageCount; + } + ++pageCount; + return; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + NotationFile::FindNotePage( + const char *pagename, + NotePage **notepage + ) +{ + //----------------------------------------------------------------- + // HACK: This routine should be changed to support NULL pagename. + //----------------------------------------------------------------- + Check(this); + Check_Pointer(pagename); + Check_Pointer(notepage); + + //------------------------------------------- + // check to see if same as previous NotePage + //------------------------------------------- + if (saveNotePage && + saveNotePage->pageName && + ((operationModes&IgnorePageCaseMode && + !stricmp(saveNotePage->pageName, pagename)) || + (!(operationModes&IgnorePageCaseMode) && + !strcmp(saveNotePage->pageName, pagename)))) + { + Check(saveNotePage); + *notepage = saveNotePage; + return True; + } + else + { + //------------------------------ + // search for matching NotePage + //------------------------------ + NotePage + *notepg = firstNotePage; + + while (notepg) + { + Check(notepg); + if (notepg->pageName && + ((operationModes&IgnorePageCaseMode && + !stricmp(notepg->pageName, pagename)) || + (!(operationModes&IgnorePageCaseMode) && + !strcmp(notepg->pageName, pagename)))) + { + *notepage = saveNotePage = notepg; + return True; + } + notepg = notepg->nextNotePage; + } + } + //----------- + // not found + //----------- + *notepage = NULL; + return False; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + NotationFile::FindNotePage( + const char *pagename, + NotePage **notepage, + NotePage **prevpage + ) +{ + //----------------------------------------------------------------- + // HACK: This routine should be changed to support NULL pagename. + //----------------------------------------------------------------- + Check(this); + Check_Pointer(pagename); + Check_Pointer(notepage); + Check_Pointer(prevpage); + + NotePage + *notepg = firstNotePage, + *prev = NULL; + + //------------------------------ + // search for matching NotePage + //------------------------------ + while (notepg) + { + Check(notepg); + if (notepg->pageName && + ((operationModes&IgnorePageCaseMode && + !stricmp(notepg->pageName, pagename)) || + (!(operationModes&IgnorePageCaseMode) && + !strcmp(notepg->pageName, pagename)))) + { + *notepage = notepg; + *prevpage = prev; + return True; + } + prev = notepg; + notepg = notepg->nextNotePage; + } + //----------- + // not found + //----------- + *notepage = *prevpage = NULL; + return False; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + NotationFile::DeletePage( + NotePage *notepage, + NotePage *prev + ) +{ + Check(this); + Check(notepage); + //do not check prev here + + //--------------------------- + // remove & delete Note_Page + //--------------------------- + SetDirty(); + + if (prev) + { + Check(prev); + prev->nextNotePage = notepage->nextNotePage; + } + else + { + firstNotePage = notepage->nextNotePage; + } + if (lastNotePage == notepage) + { + lastNotePage = prev; + } + if (notepage == saveNotePage) + { + saveNotePage = NULL; + } + if (notepage->cleanPage) + { + --cleanPageCount; + } + --pageCount; + Unregister_Object(notepage); + delete notepage; + + return; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + NotationFile::Read(char *buffer) +{ + Check(this); + //do not check buffer here + + static NotePage + *notepage = NULL; + Notation + *notation; + char + *token, + *entry, + *p; + Logical +// blank_line, + comment_line; + + if (!buffer) + { + //------------------------------ + // reset notepage for next read + //------------------------------ + notepage = NULL; + return; + } + Check_Pointer(buffer); + + //-------------------------------- + // find first non-blank character + //-------------------------------- + p = buffer; + while (*p == ' ' || *p == '\t') + { + ++p; + } + + //-------------------- + // begin new NotePage + //-------------------- + if (*p == '[') + { + token = p+1; + if ((p = strchr(token, ']')) != NULL) + { + *p = '\0'; + ++p; + } + notepage = AppendPage(token, p); +// cerr << "[" << notepage->GetName() << "]" << endl; // TESTING! +// notepage->Write( cerr ); // TESTING! + return; + } + + //--------------------------------- + // detect blank lines and comments + //--------------------------------- +// blank_line = (*p == '\0'); + comment_line = Comment_Line(p); + + //--------------- + // read Notation + //--------------- + token = p; + if ((p = strchr(token, '=')) != NULL) + { + *p = '\0'; + entry = ++p; +// if (*entry == '\0') +// { +// entry = NULL; +// } + } + else + { + entry = NULL; + } + if (*token == '\0') + { + token = NULL; + } + + //------------------------ + // remove trailing blanks + //------------------------ + if (token && !comment_line) + { + p = strchr(token, '\0') - 1; + while (*p == ' ' || *p == '\t') + { + *p = '\0'; + if (--p < token) + { + break; + } + } + } + + if (!notepage) + { + notepage = new NotePage(this); + Register_Object(notepage); + AppendNotePage(notepage); + } + notation = new Notation; + Register_Object(notation); + notation->SetName(token, &(notepage->cleanNotationCount)); + notation->SetEntry(entry); + notepage->AppendNote(notation); +// cerr << token << "=" << entry << endl; // TESTING! +// notation->Write( cerr ); // TESTING! +// notepage->Write( cerr ); // TESTING! + + return; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +long + NotationFile::Write( + ostream &stream, + WriteMode mode + ) +{ + Check(this); + + NotePage + *notepg = firstNotePage; + long + size = 0; + + while (notepg) + { + Check(notepg); + size += notepg->WriteNote(stream, mode); + notepg = notepg->nextNotePage; + } + return size; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + NotationFile::TestInstance() const +{ + //do not Check(this); + if (fileName) { Check_Pointer(fileName); } + if (firstNotePage) { Check_Signature(firstNotePage); } + if (lastNotePage) { Check_Signature(lastNotePage); } + if (saveNotePage) { Check_Signature(saveNotePage); } + return True; +} + +//############################################################################# +//############## NotationFile::Notation ################################# +//############################################################################# + +NotationFile__Notation::~NotationFile__Notation() +{ + Check(this); + + if (notationName) + { + Check_Pointer(notationName); + Unregister_Pointer(notationName); + delete notationName; + } + if (notationEntry) + { + Check_Pointer(notationEntry); + Unregister_Pointer(notationEntry); + delete notationEntry; + } +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + NotationFile::Notation::SetName( + const char *entryname, + long *clean_notation_count + ) +{ + Check(this); + //do not check entryname here + Check_Pointer(clean_notation_count); + + if (notationName) + { + if (cleanNotation) + { + cleanNotation = False; + --(*clean_notation_count); + } + Check_Pointer(notationName); + Unregister_Pointer(notationName); + delete notationName; + } + if (entryname) // (do not add "&& *entryname") + { + Check_Pointer(entryname); + notationName = new char[strlen(entryname) + 1]; + Register_Pointer(notationName); + strcpy(notationName, entryname); + cleanNotation = (*notationName && !Comment_Line(notationName)); + } + else + { + notationName = NULL; + } + return; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + NotationFile::Notation::SetEntry(const char *contents) +{ + Check(this); + //do not check contents here + + if (notationEntry) + { + Check_Pointer(notationEntry); + Unregister_Pointer(notationEntry); + delete notationEntry; + } + if (contents) // (do not add "&& *contents") + { + Check_Pointer(contents); + notationEntry = new char[strlen(contents) + 1]; + Register_Pointer(notationEntry); + strcpy(notationEntry, contents); + } + else + { + notationEntry = NULL; + } + return; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +long + NotationFile::Notation::WriteNotation( + ostream &stream, + NotationFile::WriteMode mode + ) const +{ + Check(this); + +// Logical +// comment_line = True; + long + size = 0; + + if (notationName) + { + Check_Pointer(notationName); + if (mode) + { + stream << notationName; + } + if (mode != NotationFile::Disk_File) + { + size += strlen(notationName); + } +// comment_line = Comment_Line(notationName); +// if (!comment_line) +// { +// stream << "="; +// } + } + if (notationEntry) + { + Check_Pointer(notationEntry); +// if (comment_line) +// { +// stream << "="; +// } + if (mode) + { + stream << "=" << notationEntry; + } + if (mode != NotationFile::Disk_File) + { + size += strlen(notationEntry) + 1; + } + } + if (mode == NotationFile::Disk_File) + { + stream << endl; + } + else if (mode) + { + stream << ends; + } + if (mode != NotationFile::Disk_File) + { + size += 1; + } + + return size; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + NotationFile::Notation::TestInstance() const +{ + //do not Check(this); + if (nextNotation) { Check_Signature(nextNotation); } + if (notationName) { Check_Pointer(notationName); } + if (notationEntry) { Check_Pointer(notationEntry); } + return True; +} + +//############################################################################# +//############## NotationFile::NotePage ################################# +//############################################################################# + +NotationFile__NotePage::NotationFile__NotePage(NotationFile *notation_file) +{ + Check_Pointer(this); + Check(notation_file); + + notationFile = notation_file; + nextNotePage = NULL; + firstNotation = lastNotation = NULL; + notationCount = cleanNotationCount = 0; + pageName = pageComment = NULL; + cleanPage = False; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +NotationFile__NotePage::~NotationFile__NotePage() +{ + Check(this); + + NotationFile::Notation + *notation = firstNotation; + + while (notation) + { + Check(notation); + firstNotation = notation->nextNotation; + Unregister_Object(notation); + delete notation; + notation = firstNotation; + } + if (pageName) + { + Check_Pointer(pageName); + Unregister_Pointer(pageName); + delete pageName; + } + if (pageComment) + { + Check_Pointer(pageComment); + Unregister_Pointer(pageComment); + delete pageComment; + } +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + NotationFile::NotePage::SetName( + const char *pagename, + long *clean_page_count + ) +{ + Check(this); + //do not check pagename here + Check_Pointer(clean_page_count); + + if (pageName) + { + if (cleanPage) + { + cleanPage = False; + --(*clean_page_count); + } + Check_Pointer(pageName); + Unregister_Pointer(pageName); + delete pageName; + } + if (pagename) // (do not add "&& *pagename") + { + Check_Pointer(pagename); + pageName = new char[strlen(pagename) + 1]; + Register_Pointer(pageName); + strcpy(pageName, pagename); + cleanPage = (*pageName && (*pageName != '!') && strcmp(pageName, "LAB_ONLY")); + } + else + { + pageName = NULL; + } + return; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + NotationFile::NotePage::SetComment(const char *comment) +{ + Check(this); + //do not check comment here + + if (pageComment) + { + Check_Pointer(pageComment); + Unregister_Pointer(pageComment); + delete pageComment; + } + if (comment && *comment) + { + Check_Pointer(comment); + pageComment = new char[strlen(comment) + 1]; + Register_Pointer(pageComment); + strcpy(pageComment, comment); + } + else + { + pageComment = NULL; + } + return; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + NotationFile::NotePage::AppendNote(NotationFile::Notation *note) +{ + Check(this); + Check(note); + + //----------------------------- + // append Notation to NotePage + //----------------------------- + if (!lastNotation) + { + firstNotation = note; + } + else + { + Check(lastNotation); + lastNotation->nextNotation = note; + } + lastNotation = note; + lastNotation->nextNotation = NULL; + if (note->cleanNotation) + { + ++cleanNotationCount; + } + ++notationCount; + return; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + NotationFile::NotePage::FindNote( + const char *entryname, + NotationFile::Notation **note + ) +{ + NotationFile::Notation + *prev; + + return FindNote(entryname, note, &prev); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + NotationFile::NotePage::FindNote( + const char *entryname, + NotationFile::Notation **note, + NotationFile::Notation **prev + ) +{ + //------------------------------------------------------------------ + // HACK: This routine should be changed to support NULL entryname. + //------------------------------------------------------------------ + Check(this); + Check_Pointer(entryname); + Check_Pointer(note); + Check_Pointer(prev); + + NotationFile::Notation + *notation = firstNotation, + *previous = NULL; + + //------------------------------ + // search for matching Notation + //------------------------------ + while (notation) + { + Check(notation); + if (notation->notationName && + ((notationFile->operationModes&NotationFile::IgnoreEntryCaseMode && + !stricmp(notation->notationName, entryname)) || + (!(notationFile->operationModes&NotationFile::IgnoreEntryCaseMode) && + !strcmp(notation->notationName, entryname)))) + { + *note = notation; + *prev = previous; + return True; + } + previous = notation; + notation = notation->nextNotation; + } + //----------- + // not found + //----------- + *note = *prev = NULL; + return False; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + NotationFile::NotePage::UpdateNote(NotationFile::Notation *note) +{ + Check(this); + Check(note); + + NotationFile::Notation + *notation, + *prev; + + //------------------------------ + // search for matching Notation + //------------------------------ + if (FindNote(note->notationName, ¬ation, &prev)) + { + Check(notation); + + //------------------ + // replace Notation + //------------------ + if (prev) + { + Check(prev); + prev->nextNotation = note; + } + else + { + firstNotation = note; + } + if ((note->nextNotation = notation->nextNotation) == NULL) + { + lastNotation = note; + } + Unregister_Object(notation); + delete notation; + } + else + { + //----------------- + // append Notation + //----------------- + AppendNote(note); + } + return; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + NotationFile::NotePage::DeleteNote(const char *entryname) +{ + Check(this); + Check_Pointer(entryname); + + NotationFile::Notation + *notation, + *prev; + + //------------------------------ + // search for matching Notation + //------------------------------ + if (FindNote(entryname, ¬ation, &prev)) + { + Check(notation); + + //-------------------------- + // remove & delete Notation + //-------------------------- + if (prev) + { + Check(prev); + prev->nextNotation = notation->nextNotation; + } + else + { + firstNotation = notation->nextNotation; + } + if (lastNotation == notation) + { + lastNotation = prev; + } + if (notation->cleanNotation) + { + --cleanNotationCount; + } + --notationCount; + Unregister_Object(notation); + delete notation; + } + return; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +long + NotationFile::NotePage::WriteNote( + ostream &stream, + NotationFile::WriteMode mode + ) const +{ + Check(this); + + NotationFile::Notation + *notation = firstNotation; + long + size = 0; + + if (pageName) + { + Check_Pointer(pageName); + if (mode) + { + stream << "[" << pageName << "]"; + } + if (mode != NotationFile::Disk_File) + { + size += strlen(pageName) + 2; + } + } + if (pageComment) + { + Check_Pointer(pageComment); + if (mode) + { + stream << pageComment; + } + if (mode != NotationFile::Disk_File) + { + size += strlen(pageComment); + } + } + if (pageName || pageComment) + { + if (mode == NotationFile::Disk_File) + { + stream << endl; + } + else if (mode) + { + stream << ends; + } + if (mode != NotationFile::Disk_File) + { + size += 1; + } + } + while (notation) + { + Check(notation); + size += notation->WriteNotation(stream, mode); + notation = notation->nextNotation; + } + return size; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + NotationFile::NotePage::TestInstance() const +{ + //do not Check(this); + if (nextNotePage) { Check_Signature(nextNotePage); } + if (firstNotation) { Check_Signature(firstNotation); } + if (lastNotation) { Check_Signature(lastNotation); } + if (pageName) { Check_Pointer(pageName); } + return True; +} + +//############################################################################# +//############## TestClass() ############################################ +//############################################################################# + +#if defined(TEST_CLASS) + #include "notation.tcp" +#endif + +//===========================================================================// diff --git a/CODE/RP/MUNGA/NOTATION.HPP b/CODE/RP/MUNGA/NOTATION.HPP new file mode 100644 index 0000000..08a518c --- /dev/null +++ b/CODE/RP/MUNGA/NOTATION.HPP @@ -0,0 +1,511 @@ +//===========================================================================// +// File: notation.hpp // +// Title: Declaration of NotationFile classes. // +// Project: Munga // +// Author: Ken Olsen // +// Purpose: Provide general purpose access to data stored in a formatted // +// text file. // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 01/06/95 KEO Converted from Tool Architecture I. // +// 02/07/95 KEO Add AppendEntry methods. // +// 02/17/95 KEO Change page and entry lists to make nomenclature. // +// 03/24/95 KEO Add methods to read and write text in memory. // +// 03/31/95 KEO Add methods for lab only mark. // +// 05/23/95 KEO Add getfilename, setpage and appendpage. // +// 11/11/95 KEO Add operation modes and correct small bugs. // +//---------------------------------------------------------------------------// +// Copyright (c) 1994-1995 Virtual World Entertainment, Inc. // +// All rights reserved worldwide. // +// This unpublished source code is PROPRIETARY and CONFIDENTIAL. // +//===========================================================================// + +#if !defined(NOTATION_HPP) + #define NOTATION_HPP + + #if !defined(NAMELIST_HPP) && 0 + #include + #endif + + #if !defined(SCALAR_HPP) + #include + #endif + + class NotationFile; + class NotationFile__Notation; + class NotationFile__NotePage; + class NameList; + class AlphaNameList; + + //======================================================================= + // Format of notation file: + // + // ; comment (preserved) + // + // [RecordName] // comment + // FieldName=FieldData + // Field2Name=Field2Data + // + // [Record2Name] + // FieldName=FieldData + // Field3Name=Field2Data + // + // ... + // + //======================================================================= + + //########################################################################## + //############## Miscellaneous Functions ############################# + //########################################################################## + + inline Logical + Comment_Line(const char *p) + {return ((*p == ';') || (*p == '#') || (*p == '/' && *(p+1) == '/'));} + + //########################################################################## + //############## NotationFile ######################################## + //########################################################################## + + class NotationFile SIGNATURED + { + friend class NotationFile__NotePage; + friend class NotationFile__Notation; + + public: + typedef NotationFile__Notation Notation; + typedef NotationFile__NotePage NotePage; + + private: + //--------------------- + // private member data + //--------------------- + char + *fileName; + NotePage + *firstNotePage, + *lastNotePage; + long + pageCount, + cleanPageCount; + Logical + dirtyFlag; + NotePage + *saveNotePage; + Enumeration + operationModes; + + enum WriteMode + { + //-------------------------------------------- + // NOTE: These numbers are not arbitrary! + // See code before changing or adding values. + //-------------------------------------------- + Size_Only = 0, + Disk_File = 1, + Text_Memory = 2, + Binary_Memory = 3 // not implemented yet + }; + + public: + +#if 0 + enum Mode + { + // Access Modes: + EXCLUSIVE = 0, + SHARED = 1, + // Error Modes: + QUIET = 0, + FATAL = 2, + // Default Modes: + DEFAULT = (EXCLUSIVE | QUIET) + }; +#endif + + enum OperationModes + { + RawOperationModes = 0x0000, + SkipBlanksListMode = 0x0001, + CleanPageListMode = 0x0002, + CleanEntryListMode = 0x0004, + IgnorePageCaseMode = 0x0008, + IgnoreEntryCaseMode = 0x0010, + DefaultOperationModes = (SkipBlanksListMode), + CleanListMode = (CleanPageListMode | CleanEntryListMode), + IgnoreCaseMode = (IgnorePageCaseMode | IgnoreEntryCaseMode), + RelaxedOperationModes = (CleanListMode | IgnoreCaseMode) + }; + + //------------------------- + // public member functions + //------------------------- + NotationFile( + const char *filename = NULL, + Enumeration operation_modes = DefaultOperationModes + ); + + ~NotationFile(); + + Enumeration + GetModes() + { Check(this); return operationModes; } + Enumeration + PutModes(Enumeration operation_modes) + { Check(this); return (operationModes = operation_modes); } + Enumeration + SetMode(Enumeration operation_modes) + { Check(this); return (operationModes |= operation_modes); } + Enumeration + ClearMode(Enumeration operation_modes) + { Check(this); return (operationModes &= ~operation_modes); } + Logical + IsDirty() const + { Check(this); return dirtyFlag; } + Logical + IsEmpty() const + { Check(this); return (pageCount == 0L); } + const char* + GetFileName() const + { Check(this); return fileName; } + long + PageCount() const + { Check(this); return ((operationModes&CleanPageListMode)?cleanPageCount:pageCount); } + Logical + PageExists(const char *pagename); + long + EntryCount(const char *pagename); + + NotePage* + SetPage( + const char *pagename, + const char *comment = NULL + ); + NotePage* + AppendPage( + const char *pagename, + const char *comment = NULL + ); + + int + GetEntry( + const char *pagename, + const char *entryname, + const char **contents + ); + int + GetEntry( + const char *pagename, + const char *entryname, + int *value + ); + int + GetEntry( + const char *pagename, + const char *entryname, + Scalar *value + ); + int + GetEntry( + const char *pagename, + const char *entryname, + double *value + ); + int + GetLogicalEntry( + const char *pagename, + const char *entryname, + Logical *value + ); + + void + SetEntry( + const char *pagename, + const char *entryname, + const char *contents + ); + void + SetEntry( + const char *pagename, + const char *entryname, + int value + ); + void + SetEntry( + const char *pagename, + const char *entryname, + Scalar value + ); + void + SetEntry( + const char *pagename, + const char *entryname, + double value + ); + void + SetLogicalEntry( + const char *pagename, + const char *entryname, + Logical value + ); + + void + AppendEntry( + const char *pagename, + const char *entryname, + const char *contents + ); + void + AppendEntry( + const char *pagename, + const char *entryname, + int value + ); + void + AppendEntry( + const char *pagename, + const char *entryname, + Scalar value + ); + void + AppendEntry( + const char *pagename, + const char *entryname, + double value + ); + void + AppendLogicalEntry( + const char *pagename, + const char *entryname, + Logical value + ); + + NameList* + MakeEntryList( + const char *pagename, + const char *entryname_prefix = NULL + ); + NameList* + MakeEntryList( + NotationFile::NotePage *notepage, + const char *entryname_prefix = NULL + ); + NameList* + MakePageList(const char *pagename_prefix = NULL); + + AlphaNameList* + MakeAlphaEntryList( + const char *pagename, + const char *entryname_prefix = NULL + ); + AlphaNameList* + MakeAlphaEntryList( + NotationFile::NotePage *notepage, + const char *entryname_prefix = NULL + ); + AlphaNameList* + MakeAlphaPageList(const char *pagename_prefix = NULL); + + void + DeleteEntry( + const char *pagename, + const char *entryname + ); + void + DeletePage(const char *pagename); + void + ReadFile(const char *filename); + void + ReadText( + char *start, // memory is corrupted during processing + long length + ); + Logical + WriteFile(const char *filename = NULL); + long + SizeOfText(); + long + WriteText( + char *buffer, + long size + ); + void + Abort(); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // remove all pages except those beginning with "_" and [LAB_ONLY] + void + DeleteStandardPages(); + void + MarkLabOnly(); + Logical + IsMarkedLabOnly() + { Check(this); return PageExists("LAB_ONLY"); } + + private: + //-------------------------- + // private member functions + //-------------------------- + void + AppendNotePage(NotePage *notepage); + Logical + FindNotePage( + const char *pagename, + NotePage **notepage + ); + Logical + FindNotePage( + const char *pagename, + NotePage **notepage, + NotePage **prevpage + ); + void + SetDirty() + { Check(this); dirtyFlag = True; } + void + DeletePage( + NotePage *notepage, + NotePage *prev + ); + void + Read(char *buffer); + long + Write( + ostream &stream, + WriteMode mode = Disk_File + ); + + public: + Logical + TestInstance() const; + static Logical + TestClass(); + }; + + //########################################################################## + //############## NotationFile::Notation ############################## + //########################################################################## + + class NotationFile__Notation SIGNATURED + { + friend class NotationFile; + friend class NotationFile__NotePage; + + private: + //--------------------- + // private member data + //--------------------- + NotationFile::Notation + *nextNotation; + char + *notationName, + *notationEntry; + Logical + cleanNotation; + + //-------------------------- + // private member functions + //-------------------------- + NotationFile__Notation() + { + nextNotation = NULL; + notationName = notationEntry = NULL; + cleanNotation = False; + } + ~NotationFile__Notation(); + + void + SetName( + const char *entryname, + long *clean_notation_count + ); + void + SetEntry(const char *contents); + const char* + GetName() const + { Check(this); return notationName; } + const char* + GetEntry() const + { Check(this); return notationEntry; } + long + WriteNotation( + ostream &stream, + NotationFile::WriteMode mode + ) const; + Logical + TestInstance() const; + }; + + //########################################################################## + //############## NotationFile::NotePage ############################## + //########################################################################## + + class NotationFile__NotePage SIGNATURED + { + friend class NotationFile; + + private: + //--------------------- + // private member data + //--------------------- + NotationFile + *notationFile; + NotationFile::NotePage + *nextNotePage; + NotationFile::Notation + *firstNotation, + *lastNotation; + long + notationCount, + cleanNotationCount; + char + *pageName, + *pageComment; + Logical + cleanPage; + + //-------------------------- + // private member functions + //-------------------------- + NotationFile__NotePage(NotationFile *notation_file); + ~NotationFile__NotePage(); + + void + SetName( + const char *pagename, + long *clean_page_count + ); + void + SetComment(const char *comment); + const char* + GetName() const + { Check(this); return pageName; } + void + AppendNote(NotationFile::Notation *note); + Logical + FindNote( + const char *entryname, + NotationFile::Notation **note + ); + Logical + FindNote( + const char *entryname, + NotationFile::Notation **note, + NotationFile::Notation **prev + ); + void + UpdateNote(NotationFile::Notation *note); + void + DeleteNote(const char *entryname); + long + WriteNote( + ostream &stream, + NotationFile::WriteMode mode + ) const; + Logical + TestInstance() const; + }; + +#endif + +//===========================================================================// diff --git a/CODE/RP/MUNGA/NOTATION.TCP b/CODE/RP/MUNGA/NOTATION.TCP new file mode 100644 index 0000000..f1da047 --- /dev/null +++ b/CODE/RP/MUNGA/NOTATION.TCP @@ -0,0 +1,450 @@ +//===========================================================================// +// File: notation.tcp // +// Title: Definition of NotationFile TestClass methods. // +// Project: Munga // +// Author: Ken Olsen // +// Purpose: Provide general purpose access to data stored in a formatted // +// text file. // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 01/07/95 KEO Stub-out TestClass method. // +// 02/07/95 KEO Add AppendEntry methods. // +// 02/17/95 KEO Change page and entry lists to make nomenclature. // +// 03/24/95 KEO Add tests for new in-memory read and write methods. // +// 03/31/95 KEO Add tests for lab only methods. // +// 11/11/95 KEO Correct and improve testing. // +//---------------------------------------------------------------------------// +// Copyright (c) 1994, 1995 Virtual World Entertainment, Inc. // +// All rights reserved worldwide. // +// This unpublished source code is PROPRIETARY and CONFIDENTIAL. // +//===========================================================================// + +//############################################################################# +//############## NotationFile::TestClass ################################ +//############################################################################# + +Logical + NotationFile::TestClass() +{ + DEBUG_STREAM << "Starting NotationFile test..." << endl; + +#if 0 + ofstream + output; + + if (output.open(TEST_FILENAME)) + { + //------------------------------ + // write out test notation file + //------------------------------ + output << + endl << + "; this is a comment" << endl << + endl << + "[header]" << endl; + + + } + else + { + cerr << "NotationFile: ERROR - Could not open test file." << endl; + return False; + } +#endif + + const char + *test_filename = "notation.ini", + *lab_only = "LAB_ONLY", + *page_1 = "Page 1", + *page_2 = "Page 2", + *page_3 = "Page 3", +// *page_4 = "Page 4", + *page_5 = "Page 5", +// *page_6 = "Page 6", + *page_7 = "Page 7", + *page_8 = "Page 8", + *_page9 = "_Page9", + *entry_1 = "Entry 1", + *entry_2 = "Entry 2", + *entry_3 = "Entry 3", + *entry_4 = "Entry 4", + *entry_5 = "Entry 5", + *entry_6 = "Entry 6", + *entry_7 = "Entry 7", +// *entry_8 = "Entry 8", + *entry_9 = "Entry 9", + *text_a = "Text Line A", + *text_b = "Text Line B", + *text_c = "Text Line C", + *text_i = "-35", + *text_s = "3.1415", + *text_d = "1.99d+199", + *text_t = "yes", + *text_f = "no"; + + NotationFile + *ini_file; + char + *buffer; + long + size, + actual_size; + const char + *string_value; + int + count, + integer_value; + Scalar + scalar_value; + double + double_value; + Logical + logical_value; + NameList + *name_list; + AlphaNameList + *alpha_name_list; + NameList::Entry + *page, + *prev, + *entry; + + //---------------------------------------- + // test NotationFile part 1 - create file + //---------------------------------------- + ini_file = new NotationFile; + Register_Object(ini_file); + Test( ini_file->GetModes() == DefaultOperationModes ); + Test( ini_file->IsEmpty() ); + Test( !ini_file->IsDirty() ); + Test( !ini_file->IsMarkedLabOnly() ); + + Test( ini_file->PageCount() == 0 ); + name_list = ini_file->MakePageList(); + Register_Object(name_list); + Test( name_list->EntryCount() == 0 ); + Unregister_Object(name_list); + delete name_list; + + alpha_name_list = ini_file->MakeAlphaPageList(); + Register_Object(alpha_name_list); + Test( alpha_name_list->EntryCount() == 0 ); + Unregister_Object(alpha_name_list); + delete alpha_name_list; + + ini_file->MarkLabOnly(); + Test( !ini_file->IsEmpty() ); + Test( ini_file->IsDirty() ); +// Test( ini_file->WriteFile("notation.ini.tst") ); // EDO_DEBUG + Test( ini_file->IsMarkedLabOnly() ); + Test( ini_file->PutModes(RelaxedOperationModes) == RelaxedOperationModes) + Test( ini_file->PageCount() == 0 ); + Test( ini_file->ClearMode(RelaxedOperationModes) == RawOperationModes) + Test( ini_file->SetMode(DefaultOperationModes) == DefaultOperationModes) + Test_And_Dump( ini_file->PageCount() == 1, ini_file->PageCount() ); + + Test( ini_file->PageCount() == 1 ); + name_list = ini_file->MakePageList(); + Register_Object(name_list); + Test( name_list->EntryCount() == 1 ); + page = name_list->GetFirstEntry(); + Test( page == name_list->GetLastEntry() ); + Test( !strcmp(page->GetName(), lab_only) ); + Unregister_Object(name_list); + delete name_list; + + alpha_name_list = ini_file->MakeAlphaPageList(); + Register_Object(alpha_name_list); + Test( alpha_name_list->EntryCount() == 1 ); + page = alpha_name_list->GetFirstEntry(); + Test( page == alpha_name_list->GetLastEntry() ); + Test( !strcmp(page->GetName(), lab_only) ); + Unregister_Object(alpha_name_list); + delete alpha_name_list; + + ini_file->SetEntry(page_2, entry_4, text_a); + + Test( !ini_file->GetEntry(page_1, entry_1, &string_value) ); + Test( !ini_file->GetEntry(page_2, entry_2, &string_value) ); + Test( ini_file->GetEntry(page_2, entry_4, &string_value) ); + Test( !strcmp(string_value, text_a) ); + + ini_file->SetEntry(page_2, entry_2, text_s); + ini_file->SetEntry(page_1, entry_5, text_i); + ini_file->SetEntry(_page9, entry_6, text_b); + ini_file->SetPage(page_8, "\t// this is page_8"); + ini_file->SetEntry(page_2, entry_3, text_d); + ini_file->SetEntry(page_1, entry_4, text_b); + ini_file->SetEntry(_page9, entry_5, (int)True); + ini_file->SetEntry(page_8, entry_3, text_c); + ini_file->SetEntry(page_5, entry_5, text_a); + ini_file->SetLogicalEntry(_page9, entry_2, False); + ini_file->DeleteEntry(page_7, entry_7); + ini_file->DeleteEntry(page_8, entry_1); + ini_file->DeleteEntry(page_1, entry_5); + ini_file->SetEntry(_page9, entry_1, text_t); + ini_file->SetEntry(page_2, entry_3, text_c); + ini_file->SetEntry(page_1, entry_1, text_i); + ini_file->AppendEntry(page_5, entry_5, text_b); + ini_file->SetEntry(_page9, entry_3, text_f); + ini_file->SetEntry(page_8, entry_1, text_d); + ini_file->SetEntry(page_1, entry_9, text_s); + ini_file->AppendLogicalEntry(_page9, entry_9, True); + ini_file->SetEntry(page_8, entry_2, text_i); + ini_file->SetEntry(_page9, entry_4, (int)False); + + // notation file should look like this: + // (lab_only, NULL, NULL) + // (page_2, entry_4, text_a) + // (page_2, entry_2, text_s) + // (page_2, entry_3, text_c) + // (page_1, entry_4, text_b) + // (page_1, entry_1, text_i) + // (page_1, entry_9, text_s) + // (_page9, entry_6, text_b) + // (_page9, entry_5, 1) + // (_page9, entry_2, False) + // (_page9, entry_1, text_t) + // (_page9, entry_3, text_f) + // (_page9, entry_9, True) + // (_page9, entry_4, 0) + // (page_8, entry_3, text_c) + // (page_8, entry_1, text_d) + // (page_8, entry_2, text_i) + // (page_5, entry_5, text_a) + // (page_5, entry_5, text_b) + + Test_And_Dump( ini_file->EntryCount(page_1) == 3, ini_file->EntryCount(page_1) ); + name_list = ini_file->MakeEntryList(page_1); + Register_Object(name_list); + Test( name_list->EntryCount() == 3 ); + count = 0; + prev = NULL; + entry = name_list->GetFirstEntry(); + while (entry) + { + count++; + prev = entry; + entry = entry->GetNextEntry(); + } + Test( count == 3 ); + Test( (entry = prev) != NULL); + Test( entry == name_list->GetLastEntry() ); + Test( !strcmp(entry->GetName(), entry_9) ); + Test( !strcmp((char *)entry->dataReference, text_s) ); + Unregister_Object(name_list); + delete name_list; + + alpha_name_list = ini_file->MakeAlphaEntryList(page_8); + Register_Object(alpha_name_list); + Test( alpha_name_list->EntryCount() == 3 ); + count = 0; + prev = NULL; + entry = alpha_name_list->GetFirstEntry(); + while (entry) + { + count++; + prev = entry; + entry = entry->GetNextEntry(); + } + Test( count == 3 ); + Test( (entry = prev) != NULL); + Test( entry == alpha_name_list->GetLastEntry() ); + Test( !strcmp(entry->GetName(), entry_3) ); + Test( !strcmp((char *)entry->dataReference, text_c) ); + Unregister_Object(alpha_name_list); + delete alpha_name_list; + + Test( ini_file->SetMode(IgnorePageCaseMode) == (DefaultOperationModes|IgnorePageCaseMode) ); + Test( ini_file->PageExists("_pAgE9") ); + name_list = ini_file->MakePageList("pAgE"); + Register_Object(name_list); + Test( ini_file->PutModes(DefaultOperationModes) == DefaultOperationModes ); + Test( name_list->EntryCount() == 4 ); + page = name_list->GetFirstEntry(); + page = page->GetNextEntry(); + page = page->GetNextEntry(); + page = page->GetNextEntry(); + Test( page == name_list->GetLastEntry() ); + Test( !strcmp(page->GetName(), page_5) ); + Unregister_Object(name_list); + delete name_list; + + Test( !ini_file->WriteFile() ); + Test( ini_file->WriteFile(test_filename) ); + Test( !ini_file->IsDirty() ); + Unregister_Object(ini_file); + delete ini_file; + + //--------------------------------------- + // test NotationFile part 2 - check file + //--------------------------------------- + + // notation file should look like this: + // (lab_only, NULL, NULL) + // (page_2, entry_4, text_a) + // (page_2, entry_2, text_s) + // (page_2, entry_3, text_c) + // (page_1, entry_4, text_b) + // (page_1, entry_1, text_i) + // (page_1, entry_9, text_s) + // (_page9, entry_6, text_b) + // (_page9, entry_5, 1) + // (_page9, entry_2, False) + // (_page9, entry_1, text_t) + // (_page9, entry_3, text_f) + // (_page9, entry_9, True) + // (_page9, entry_4, 0) + // (page_8, entry_3, text_c) + // (page_8, entry_1, text_d) + // (page_8, entry_2, text_i) + // (page_5, entry_5, text_a) + // (page_5, entry_5, text_b) + + ini_file = new NotationFile(test_filename); + Register_Object(ini_file); + + ini_file->MarkLabOnly(); + Test( !ini_file->IsDirty() ); +// Test( ini_file->WriteFile("notation.ini.tst") ); // EDO_DEBUG + Test_And_Dump( ini_file->PageCount() == 6, ini_file->PageCount() ); + Test( ini_file->SetMode(CleanPageListMode) == (DefaultOperationModes|CleanPageListMode) ); + Test_And_Dump( ini_file->PageCount() == 5, ini_file->PageCount() ); + Test( ini_file->ClearMode(CleanPageListMode) == DefaultOperationModes ); + Test_And_Dump( ini_file->EntryCount(page_2) == 3, ini_file->EntryCount(page_2) ); + Test_And_Dump( ini_file->EntryCount(page_1) == 3, ini_file->EntryCount(page_1) ); + Test_And_Dump( ini_file->EntryCount(_page9) == 7, ini_file->EntryCount(_page9) ); + Test_And_Dump( ini_file->EntryCount(page_8) == 3, ini_file->EntryCount(page_8) ); + Test_And_Dump( ini_file->EntryCount(page_5) == 2, ini_file->EntryCount(page_5) ); + + name_list = ini_file->MakePageList(); + Register_Object(name_list); + Test( name_list->EntryCount() == 6 ); + entry = name_list->GetLastEntry(); + Test( !strcmp(entry->GetName(), page_5) ); + Unregister_Object(name_list); + delete name_list; + + //----------------- + // write to memory + //----------------- + size = ini_file->SizeOfText(); + Test( size > 10L ); + buffer = new char[size]; + Register_Pointer(buffer); + actual_size = ini_file->WriteText(buffer, 10L); + Test( actual_size == -1L ); + actual_size = ini_file->WriteText(buffer, size); + Test( actual_size == size ); + Unregister_Object(ini_file); + delete ini_file; + + //------------------ + // read from memory + //------------------ + ini_file = new NotationFile(); + Register_Object(ini_file); + + ini_file->ReadText(buffer, size); +// Test( ini_file->WriteFile("notation.ini.tst") ); // EDO_DEBUG + Unregister_Pointer(buffer); + delete buffer; + + Test( ini_file->IsMarkedLabOnly() ); + Test( ini_file->PageCount() == 6 ); + alpha_name_list = ini_file->MakeAlphaPageList(); + Register_Object(alpha_name_list); + Test( alpha_name_list->EntryCount() == 6 ); + entry = alpha_name_list->GetLastEntry(); + Test( !strcmp(entry->GetName(), _page9) ); + Unregister_Object(alpha_name_list); + delete alpha_name_list; + + name_list = ini_file->MakeEntryList(page_5); + Register_Object(name_list); + Test_And_Dump( ini_file->EntryCount(page_5) == 2, ini_file->EntryCount(page_5) ); + Test_And_Dump( name_list->EntryCount() == 2, name_list->EntryCount() ); + entry = name_list->GetFirstEntry(); + Test_And_Dump( !strcmp(entry->GetName(), entry_5), entry->GetName() ); + Test( !strcmp((char *)entry->dataReference, text_a) ); + entry = name_list->GetLastEntry(); + Test( !strcmp(entry->GetName(), entry_5) ); + Test( !strcmp((char *)entry->dataReference, text_b) ); + Unregister_Object(name_list); + delete name_list; + + Test( !ini_file->GetEntry(page_3, entry_2, &integer_value) ); + Test( !ini_file->GetEntry(page_2, entry_5, &scalar_value) ); + Test( ini_file->GetEntry(page_8, entry_1, &double_value) ); + Test( (fabs(double_value - atof(text_d)) < (1.0e-10)) ); + Test( ini_file->GetEntry(page_1, entry_1, &integer_value) ); + Test( integer_value == atoi(text_i) ); + Test( ini_file->GetEntry(page_2, entry_2, &scalar_value) ); + Test( Close_Enough(scalar_value, atof(text_s)) ); + Test( ini_file->GetEntry(page_1, entry_4, &string_value) ); + Test( !strcmp(string_value, text_b) ); + Test( ini_file->GetEntry(page_5, entry_5, &string_value) ); + Test( !strcmp(string_value, text_a) ); + Test( ini_file->GetLogicalEntry(_page9, entry_9, &logical_value) ); + Test( logical_value ); + Test( ini_file->GetLogicalEntry(_page9, entry_1, &logical_value) ); + Test( logical_value ); + Test( ini_file->GetLogicalEntry(_page9, entry_5, &logical_value) ); + Test( logical_value ); + Test( ini_file->GetLogicalEntry(_page9, entry_3, &logical_value) ); + Test( !logical_value ); + Test( ini_file->GetLogicalEntry(_page9, entry_2, &logical_value) ); + Test( !logical_value ); + Test( ini_file->GetLogicalEntry(_page9, entry_4, &logical_value) ); + Test( !logical_value ); + Test( !ini_file->IsDirty() ); + + ini_file->DeletePage(page_2); + Test( ini_file->IsDirty() ); + Test( !ini_file->PageExists(page_2) ); + + ini_file->DeleteEntry(page_1, entry_1); + name_list = ini_file->MakeEntryList(page_1); + Register_Object(name_list); + Test( name_list->EntryCount() == 2 ); + entry = name_list->GetFirstEntry(); + Test( entry != NULL ); + Test( !strcmp(entry->GetName(), entry_4) ); + Test( !strcmp((char *)entry->dataReference, text_b) ); + Unregister_Object(name_list); + delete name_list; + + Test( ini_file->SetMode(IgnoreEntryCaseMode) == (DefaultOperationModes|IgnoreEntryCaseMode) ); + alpha_name_list = ini_file->MakeAlphaEntryList(_page9, "eNtRy"); + Register_Object(alpha_name_list); + Test( ini_file->ClearMode(IgnoreEntryCaseMode) == DefaultOperationModes ); + Test( alpha_name_list->EntryCount() == 7 ); + entry = alpha_name_list->GetFirstEntry(); + Test( entry != NULL ); + Test( !strcmp(entry->GetName(), entry_1) ); + Test( !strcmp((char *)entry->dataReference, text_t) ); + Unregister_Object(alpha_name_list); + delete alpha_name_list; + + ini_file->DeleteStandardPages(); + Test( ini_file->PageCount() == 2 ); + Test( ini_file->IsMarkedLabOnly() ); + Test( ini_file->PageExists(_page9) ); + Test( !ini_file->PageExists(page_5) ); + + ini_file->Abort(); + Test( !ini_file->IsDirty() ); + + ini_file->SetEntry(page_2, entry_4, text_a); + Test( ini_file->IsDirty() ); + + Unregister_Object(ini_file); + delete ini_file; + + Tell(" NotationFile::TestClass() is not rigorous!\n"); + return True; +} + +//############################################################################# +//############################################################################# diff --git a/CODE/RP/MUNGA/NTTMGR.CPP b/CODE/RP/MUNGA/NTTMGR.CPP new file mode 100644 index 0000000..0e68a7a --- /dev/null +++ b/CODE/RP/MUNGA/NTTMGR.CPP @@ -0,0 +1,251 @@ +//===========================================================================// +// File: entity2.cc // +// Project: MUNGA Brick: Entity Manager // +// Contents: Implementation details of the entity class // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 11/29/94 JMA Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(NTTMGR_HPP) +# include +#endif + +#if !defined(NAMELIST_HPP) +# include +#endif + +#if !defined(APP_HPP) + #include +#endif + +#if !defined(ENTITY_HPP) + #include +#endif + +#if !defined(HOSTMGR_HPP) + #include +#endif + +#if !defined(DROPZONE_HPP) + #include +#endif + +#if !defined(REGISTRY_HPP) + #include +#endif + +//############################################################################# +//############################ EntityGroup ############################## +//############################################################################# + + +//############################################################################# +// Construction and Destruction +// + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +EntityGroup::EntityGroup(): + groupMembers(NULL) +{ +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +EntityGroup::~EntityGroup() +{ +} + +//############################################################################# +//########################### EntityManager ############################# +//############################################################################# + +Derivation + EntityManager::ClassDerivations( + NetworkClient::ClassDerivations, + "EntityManager" + ); + +EntityManager::SharedData + EntityManager::DefaultData( + EntityManager::ClassDerivations, + EntityManager::MessageHandlers + ); + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +EntityManager::EntityManager(): + NetworkClient( + EntityManager::EntityManagerClassID, + DefaultData, + NetworkClient::EntityManagerClientID + ) +{ + deathRow = UseGroup("DeathRow"); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +EntityManager::~EntityManager() +{ + // + //---------------------------------------------- + // Erase all the groups listed in the group list + //---------------------------------------------- + // + ObjectNameList::Entry *entry; + while ((entry = groupList.GetFirstEntry()) != NULL) + { + Check(entry); + EntityGroup *group = (EntityGroup*)entry->GetData(); + groupList.DeleteEntry(entry->GetName()); + Unregister_Object(group); + delete group; + } +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + EntityManager::FryDeathRow() +{ + Check(this); + Check(deathRow); + + // + // ECH 8/23/95 - Just delete one ... this allows the application to + // delete as many entities as it can within the current frame + // + ChainIteratorOf iterator(deathRow->groupMembers); + Node *node; + + if ((node = iterator.GetCurrent()) != NULL) + { + Unregister_Object(node); + delete node; + } +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + EntityManager::ReceiveNetworkPacket( + NetworkPacket*, + Receiver::Message *packet_message + ) +{ + Check(this); + Check_Pointer(packet_message); + + // + //------------------------------------------------------------------------- + // Check to see if the interest zone contained in the message is one we are + // interested in, and if not, ignore the message + //------------------------------------------------------------------------- + // + Entity::MakeMessage + *message = Cast_Object(Entity::MakeMessage*, packet_message); + + // + //----------------------------------------------------------------------- + // Find the address of the entity. If it exists, post the message on the + // application event queue. + //----------------------------------------------------------------------- + // + Entity + *entity = + application->GetHostManager()->GetEntityPointer(message->entityID); + if (entity) + { + // + // HACK -- This hack puts dropzone messages on max priority. It should + // really be done with a message priority encoded in the message + // + if ( + entity->GetClassID() == DropZoneClassID + && message->messageID == DropZone::AssignDropZoneMessageID + ) + { + application->Post(MaxEventPriority, entity, message); + } + else + { + application->Post(EntityManagerEventPriority, entity, message); + } + } + + // + //-------------------------------------------------------------------------- + // If the entity does not exist, check to see if this is a manager message, + // or see if we have to ask for a remake + //-------------------------------------------------------------------------- + // + else + { + switch (message->messageID) + { + case Entity::MakeMessageID: + { + #if DEBUG_LEVEL>0 + Entity *entity = application->GetRegistry()->MakeEntity(message); + Register_Object(entity); + #else + application->GetRegistry()->MakeEntity(message); + #endif + } + break; + + // + //--------------------------------------------------------------------- + // Send a remake message to the sending host to have our entity rebuilt + //--------------------------------------------------------------------- + // + default: + break; + } + } +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +EntityGroup* + EntityManager::UseGroup(const char *name) +{ + EntityGroup *group = FindGroup(name); + if (!group) + { + group = new EntityGroup; + group->groupName = groupList.AddEntry(name, group); + Register_Object(group); + } + return group; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + EntityManager::RemoveGroup(EntityGroup *group) +{ + Check(group); + groupList.DeleteEntry(group->groupName); + Unregister_Object(group); + delete group; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + EntityManager::TestInstance() const +{ + return IsDerivedFrom(ClassDerivations); +} + diff --git a/CODE/RP/MUNGA/NTTMGR.HPP b/CODE/RP/MUNGA/NTTMGR.HPP new file mode 100644 index 0000000..1073c46 --- /dev/null +++ b/CODE/RP/MUNGA/NTTMGR.HPP @@ -0,0 +1,149 @@ +//===========================================================================// +// File: entity2.hh // +// Project: MUNGA Brick: Entity Manager // +// Contents: Interface specification for entity class // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 11/29/94 JMA Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1994, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(NTTMGR_HPP) + #define NTTMGR_HPP + + #if !defined(NAMELIST_HPP) + #include + #endif + + #if !defined(NODE_HPP) + #include + #endif + + #if !defined(CHAIN_HPP) + #include + #endif + + #if !defined(NETWORK_HPP) + #include + #endif + + class Entity; + + //########################################################################## + //######################### EntityGroup ############################## + //########################################################################## + + class EntityGroup: + public Node + { + friend class EntityManager; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Construction and Destruction + // + protected: + EntityGroup(); + ~EntityGroup(); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Naming functions + // + public: + const char* + GetGroupName() + {Check(this); return groupName;} + + protected: + const char + *groupName; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Grouping functions + // + public: + void + Add(Entity *entity) + { + Check(this); + groupMembers.Add(Cast_Object(Node*,entity)); + } + + void + Add(EntityGroup *group) + {Check(this); Check(group); groupMembers.Add(group);} + + ChainOf + groupMembers; + }; + + //########################################################################## + //######################## EntityManager ############################# + //########################################################################## + + class EntityManager: + public NetworkClient + { + friend class Entity; + + //########################################################################## + // Shared Data support + // + protected: + static Derivation + ClassDerivations; + static SharedData + DefaultData; + + //########################################################################## + // Construction and destruction support + // + public: + EntityManager(); + ~EntityManager(); + + void + FryDeathRow(); + + protected: + EntityGroup + *deathRow; + + //########################################################################## + // Message packet receiving + // + public: + void + ReceiveNetworkPacket( + NetworkPacket *packet, + Receiver::Message *packet_message + ); + + //########################################################################## + // Entity grouping + // + public: + EntityGroup* + UseGroup(const char *name); + EntityGroup* + FindGroup(const char *name) + { + Check_Pointer(name); + return (EntityGroup*)groupList.FindObject(name); + } + void + RemoveGroup(EntityGroup* group); + + Logical + TestInstance() const; + + protected: + ObjectNameList + groupList; + }; + +#endif + diff --git a/CODE/RP/MUNGA/OBJSTRM.HPP b/CODE/RP/MUNGA/OBJSTRM.HPP new file mode 100644 index 0000000..dcd2991 --- /dev/null +++ b/CODE/RP/MUNGA/OBJSTRM.HPP @@ -0,0 +1,363 @@ +//===========================================================================// +// File: objstrm.hpp // +// Project: MUNGA Brick: Resource Manager // +// Contents: Implementation Details of resource management // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// PROPRIETARY AND CONFIDENTIAL // +//===========================================================================// + +#if !defined(OBJSTRM_HPP) +# define OBJSTRM_HPP + +# if !defined(MEMSTRM_HH) +# include +# endif + +# if !defined(NODE_HH) +# include +# endif + +# if !defined(HASH_HH) +# include +# endif + +# if !defined(TREE_HH) +# include +# endif + +# if !defined(CSTR_HH) +# include +# endif + + class NotationFile; + class NameList; + class CString; + class ResourceFile; + class ResourceDescription; + + //########################################################################## + //######################### ObjectStream ############################# + //########################################################################## + + class ObjectStream: + public DynamicMemoryStream + { + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Construction, Destruction and testing + // + public: + ObjectStream(); + ObjectStream( + void *stream_start, + size_t stream_size + ); + ObjectStream(ResourceDescription *resource_description); + ~ObjectStream(); + + Logical + TestInstance() const; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Object creation + // + public: + virtual void + CreateObjects(); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Notation file parsing + // + public: + virtual void + BuildFromNotationFile( + NotationFile *notation_file, + ResourceFile *resource_file + ); + + ResourceFile* + GetResourceFile() + {return resourceFile;} + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Object ID generation + // + protected: + static ObjectID + MakeUniqueObjectID(); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Implementations + // + protected: + virtual RegisteredClass* + MakeObjectImplementation(Enumeration class_ID); + + virtual void + CreatedObjectImplementation( + RegisteredClass *object, + ObjectID object_ID + ); + + virtual void + BuildFromPageImplementation( + NameList *name_list, + Enumeration class_ID, + ObjectID object_ID + ); + + virtual void + BuiltFromPageImplementation( + Enumeration class_ID, + ObjectID object_ID, + const CString &object_name_string + ); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Private methods + // + private: + void + ParseNotationFile(NotationFile *notation_file); + void + ReadIncludedFiles(NameList *entry_list); + void + ReadMacros(NameList *entry_list); + + void + PerformMacroReplacement(NameList *entry_list); + CString + DeriveMacroValue(const CString &token_string); + void + CleanupMacroReplacement(NameList *entry_list); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Private data + // + private: + typedef PlugOf + MacroValue; + typedef TreeOf + MacroSocket; + typedef TreeIteratorOf + MacroIterator; + + static ObjectID + lastObjectID; + ResourceFile + *resourceFile; + MacroSocket + *macroSocket; + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ObjectIDPlug ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + typedef PlugOf + ObjectIDPlug; + + //########################################################################## + //###################### PlugStreamManager ########################### + //########################################################################## + + class PlugStreamManager: + public Node + { + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Plug stream types + // + public: + typedef HashOf + PlugIndex; + + typedef TreeOf + ObjectIDIndex; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Construction, Destruction and testing + // + public: + PlugStreamManager(); + ~PlugStreamManager(); + + Logical + TestInstance() const; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Program termination + // + public: + void + Cleanup(); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Manager Accessors + // + public: + static void + AddPlug( + Plug *plug, + ObjectID object_ID + ); + + static Plug* + FindPlug(ObjectID object_ID); + + static void + AddPlugName( + ObjectID object_ID, + const CString &object_name_string + ); + + static ObjectID + FindPlugName(const CString &object_name_string); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Private data + // + private: + PlugIndex + plugIndex; + ObjectIDIndex + objectIDIndex; + + static PlugStreamManager + plugStreamManager; + }; + + //########################################################################## + //########################## PlugStream ############################## + //########################################################################## + + class PlugStream: + public ObjectStream + { + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Plug stream types + // + public: + typedef VChainOf + LocalPlugIndex; + + typedef VChainOf + LocalObjectIDIndex; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Construction, Destruction and testing + // + public: + PlugStream(); + PlugStream( + void *stream_start, + size_t stream_size + ); + PlugStream(ResourceDescription *resource_description); + ~PlugStream(); + + Logical + TestInstance() const; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Object creation and utilities + // + public: + void + CreateObjects(); + + void + AddLocalPlug( + Plug *plug, + ObjectID object_ID + ); + + void + AddGlobalPlug( + Plug *plug, + ObjectID object_ID + ); + + Plug* + FindPlug(ObjectID object_ID); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Notation file parsing + // + public: + void + BuildFromNotationFile( + NotationFile *notation_file, + ResourceFile *resource_file + ); + + void + AddLocalObjectID( + ObjectID object_ID, + const CString &object_name_string + ); + + void + AddGlobalObjectID( + ObjectID object_ID, + const CString &object_name_string + ); + + ObjectID + FindObjectID(const CString &object_name_string); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Implementations + // + protected: + void + CreatedObjectImplementation( + RegisteredClass *object, + ObjectID object_ID + ); + + void + BuiltFromPageImplementation( + Enumeration class_ID, + ObjectID object_ID, + const CString &object_name_string + ); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Private data + // + private: + LocalPlugIndex + *localPlugIndex; + LocalObjectIDIndex + *localObjectIDIndex; + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~ PlugStream functions ~~~~~~~~~~~~~~~~~~~~~~~~ + + template void + PlugStream_ReadObjectIDAndFindPlug( + PlugStream *stream, + T** type_pointer + ) + { + Check(stream); + Check_Pointer(type_pointer); + + ObjectID object_ID; + Plug *plug; + + MemoryStream_Read(stream, &object_ID); + plug = stream->FindPlug(object_ID); + *type_pointer = Cast_Object(T*, plug); + } + + void + PlugStream_FindEntryAndWriteObjectID( + PlugStream *stream, + NameList *name_list, + const CString &entry_name + ); + +#endif + diff --git a/CODE/RP/MUNGA/ORIGIN.CPP b/CODE/RP/MUNGA/ORIGIN.CPP new file mode 100644 index 0000000..5896eec --- /dev/null +++ b/CODE/RP/MUNGA/ORIGIN.CPP @@ -0,0 +1,159 @@ +//===========================================================================// +// File: origin.cc // +// Project: MUNGA Brick: Math Library // +// Contents: Implementation details for the position class // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 11/19/94 JMA Initial coding. // +// 11/29/94 JMA Added origin concatenation // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(ORIGIN_HPP) + #include +#endif + +#if !defined(MOTION_HPP) + #include +#endif + +#if !defined(LINMTRX_HPP) + #include +#endif + +const Origin + Origin::Identity(Point3D::Identity, Quaternion::Identity); + +#if defined(USE_SIGNATURE) + int + Is_Signature_Bad(const volatile Origin *) + { + return False; + } +#endif + +// +//########################################################################### +//########################################################################### +// +Origin::Origin(const LinearMatrix &matrix) +{ + Check(&matrix); + linearPosition = matrix; + angularPosition = matrix; +} + +// +//########################################################################### +//########################################################################### +// +Origin& + Origin::operator=(const Origin &origin) +{ + Check_Pointer(this); + Check(&origin); + + angularPosition = origin.angularPosition; + linearPosition = origin.linearPosition; + return *this; +} + +// +//########################################################################### +//########################################################################### +// +Origin& + Origin::operator=(const LinearMatrix &matrix) +{ + Check_Pointer(this); + Check(&matrix); + + angularPosition = matrix; + linearPosition = matrix; + return *this; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + Origin::operator==(const Origin &origin) const +{ + Check(this); + return (memcmp(this, &origin, sizeof(Origin)) == 0); +} + +// +//########################################################################### +//########################################################################### +// +Origin& + Origin::AddScaled( + const Origin& source, + const Motion& delta, + Scalar t + ) +{ + Check_Pointer(this); + Check(&source); + Check(&delta); + Verify(t >= 0.0f); + + linearPosition.AddScaled(source.linearPosition, delta.linearMotion, t); + angularPosition.AddScaled(source.angularPosition, delta.angularMotion, t); + return *this; +} + +// +//############################################################################# +//############################################################################# +// +Origin& + Origin::Lerp( + const Origin &start, + const Origin &end, + Scalar t + ) +{ + Check_Pointer(this); + Check(&start); + Check(&end); + + linearPosition.Lerp(start.linearPosition, end.linearPosition, t); + angularPosition.Lerp(start.angularPosition, end.angularPosition, t); + Check(this); + return *this; +} + +// +//########################################################################### +//########################################################################### +// +ostream& + operator<<( + ostream& stream, + const Origin& p + ) +{ + return stream << '{' << p.linearPosition << ',' << p.angularPosition << '}'; +} + +// +//########################################################################### +//########################################################################### +// +Logical + Origin::TestInstance() const +{ + return angularPosition.TestInstance(); +} +#if defined(TEST_CLASS) +# include "origin.tcp" +#endif + diff --git a/CODE/RP/MUNGA/ORIGIN.HPP b/CODE/RP/MUNGA/ORIGIN.HPP new file mode 100644 index 0000000..08d5ac6 --- /dev/null +++ b/CODE/RP/MUNGA/ORIGIN.HPP @@ -0,0 +1,133 @@ +//===========================================================================// +// File: origin.hh // +// Project: MUNGA Brick: Math Library // +// Contents: Implementation details for the position class // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 11/19/94 JMA Initial coding. // +// 11/29/94 JMA Added origin concatenation // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(ORIGIN_HPP) +# define ORIGIN_HPP + +# if !defined(POINT3D_HPP) +# include +# endif + +# if !defined(ROTATION_HPP) +# include +# endif + + class Motion; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Origin ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class Origin + { + #if defined(USE_SIGNATURE) + friend int + Is_Signature_Bad(const volatile Origin *); + #endif + + public: + Point3D + linearPosition; + Quaternion + angularPosition; + + static const Origin + Identity; + + // + // Constructors + // + Origin() + {} + Origin( + const Point3D &t, + const EulerAngles& q + ) + {Check(&t); Check(&q); linearPosition = t; angularPosition = q;} + Origin( + const Point3D &t, + const Quaternion& q + ) + {Check(&t); Check(&q); linearPosition = t; angularPosition = q;} + Origin(const LinearMatrix &matrix); + + // + // Assignment operators + // + Origin& + operator=(const Origin& p); + Origin& + operator=(const Point3D& p) + {Check_Pointer(this); Check(&p); linearPosition = p; return *this;} + Origin& + operator=(const EulerAngles& q) + {Check_Pointer(this); Check(&q); angularPosition = q; return *this;} + Origin& + operator=(const YawPitchRoll& q) + {Check_Pointer(this); Check(&q); angularPosition = q; return *this;} + Origin& + operator=(const Quaternion& q) + {Check_Pointer(this); Check(&q); angularPosition = q; return *this;} + Origin& + operator=(const LinearMatrix &m); + + // + // Equality operator + // + Logical + operator==(const Origin&) const; + + // + // Origin motion + // + Origin& + AddScaled( + const Origin& source, + const Motion& delta, + Scalar t + ); + Origin& + Lerp( + const Origin& start, + const Origin& end, + Scalar t + ); + + // + // Support functions + // + friend ostream& + operator<<( + ostream& stream, + const Origin& p + ); + Logical + TestInstance() const; + static Logical + TestClass(); + }; + + inline Point3D& + Point3D::operator=(const Origin& p) + {return operator=(p.linearPosition);} + + inline EulerAngles& + EulerAngles::operator=(const Origin& p) + {return operator=(p.angularPosition);} + + inline Quaternion& + Quaternion::operator=(const Origin& p) + {return operator=(p.angularPosition);} + +#endif + diff --git a/CODE/RP/MUNGA/ORIGIN.TCP b/CODE/RP/MUNGA/ORIGIN.TCP new file mode 100644 index 0000000..9d7ccf4 --- /dev/null +++ b/CODE/RP/MUNGA/ORIGIN.TCP @@ -0,0 +1,67 @@ +//===========================================================================// +// File: origin.tst // +// Project: MUNGA Brick: Math Library // +// Contents: Implementation details for the position class // +//---------------------------------------------------------------------------// +// 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 // +//===========================================================================// + +#if !defined(LINMTRX_HPP) + #include +#endif + +// +//########################################################################### +//########################################################################### +// +Logical + Origin::TestClass() +{ + DEBUG_STREAM << "Starting Origin test...\n"; + + Point3D p(1.0f,2.0f,3.0f); + Quaternion q(0.0f, 1.0f, 0.0f, 0.0f); + + Quaternion r; + r = q; + const Origin + a(p,r); + Origin + b; + + Quaternion t; + t = a.angularPosition; + Test( + a.linearPosition == p + && t.x == q.x + && t.w == q.w + ); + + LinearMatrix + m; + + m = a; + b = m; + t = b; + Test( + a.linearPosition == b.linearPosition + && t.y == q.y + ); + + b = Point3D(3.0f,2.0f,1.0f); + p = b; + Test(p == Point3D(3.0f,2.0f,1.0f)); + Quaternion s(1.0f, 0.0f, 0.0f, 0.0f); + b = s; + q = b; + Test(q.x == s.x && q.y == s.y && q.z == s.z && q.w == s.w); + + return True; +} + diff --git a/CODE/RP/MUNGA/PLANE.CPP b/CODE/RP/MUNGA/PLANE.CPP new file mode 100644 index 0000000..32a6e27 --- /dev/null +++ b/CODE/RP/MUNGA/PLANE.CPP @@ -0,0 +1,219 @@ +//===========================================================================// +// File: plane.cc // +// Project: MUNGA Brick: Math Library // +// Contents: Implementation details for the plane class // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 12/01/94 JMA Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(PLANE_HPP) +# include +#endif + +#if !defined(SPHERE_HPP) +# include +#endif + +#if !defined(LINMTRX_HPP) +# include +#endif + +#if !defined(EXTNTBOX_HPP) +# include +#endif + +// +//############################################################################# +//############################################################################# +// +Plane::Plane( + const Point3D& p0, + const Point3D& p1, + const Point3D& p2 +) +{ + Vector3D v1,v2; + v1.Subtract(p1, p0); + v2.Subtract(p2, p1); + + Vector3D axis; + axis.Cross(v1, v2); + Verify(!Small_Enough(axis.Length())); + normal = axis; + offset = -(normal * p0); + Verify(Small_Enough(DistanceTo(p1))); + Verify(Small_Enough(DistanceTo(p2))); + Check_Fpu(); +} + +// +//############################################################################# +//############################################################################# +// +Plane& + Plane::Multiply( + const Plane &p, + const LinearMatrix &m + ) +{ + Check_Pointer(this); + Check(&p); + Check(&m); + + normal.x = p.normal.x*m(0,0) + p.normal.y*m(1,0) + p.normal.z*m(2,0); + normal.y = p.normal.x*m(0,1) + p.normal.y*m(1,1) + p.normal.z*m(2,1); + normal.z = p.normal.x*m(0,2) + p.normal.y*m(1,2) + p.normal.z*m(2,2); + offset = + p.normal.x*m(3,0) + p.normal.y*m(3,1) + p.normal.z*m(3,2) + p.offset; + + return *this; +} + +// +//############################################################################# +//############################################################################# +// +Logical + Plane::Contains(const Point3D &point) const +{ + return normal * point <= offset; +} + +// +//############################################################################# +//############################################################################# +// +Logical + Plane::ContainsSomeOf(const Sphere &sphere) const +{ + return normal*sphere.center - offset <= sphere.radius; +} + +// +//############################################################################# +//############################################################################# +// +Logical + Plane::ContainsAllOf(const Sphere &sphere) const +{ + return offset - normal*sphere.center >= sphere.radius; +} + +// +//############################################################################# +//############################################################################# +// +Logical + Plane::ContainsSomeOf(const ExtentBox &box) const +{ + Check(this); + Check(&box); + + Point3D test; + test.x = (normal.x > 0.0f) ? box.minX : box.maxX; + test.y = (normal.y > 0.0f) ? box.minY : box.maxY; + test.z = (normal.z > 0.0f) ? box.minZ : box.maxZ; + return Contains(test); +} + +// +//############################################################################# +//############################################################################# +// +Logical + Plane::ContainsAllOf(const ExtentBox &box) const +{ + Check(this); + Check(&box); + + Point3D test; + test.x = (normal.x < 0.0f) ? box.minX : box.maxX; + test.y = (normal.y < 0.0f) ? box.minY : box.maxY; + test.z = (normal.z < 0.0f) ? box.minZ : box.maxZ; + return Contains(test); +} + +// +//############################################################################# +//############################################################################# +// +Logical + Plane::Intersect(const Sphere &sphere) const +{ + Scalar dist = normal*sphere.center - offset; + return Abs(dist) <= sphere.radius; +} + +// +//############################################################################# +//############################################################################# +// +Logical + Plane::Intersect(const ExtentBox &box) const +{ + if (!ContainsSomeOf(box)) + { + return False; + } + Plane inverse(-normal.x, -normal.y, -normal.z, -offset); + return inverse.ContainsSomeOf(box); +} + +// +//############################################################################# +//############################################################################# +// +ostream& + operator<<(ostream& Stream, const Plane &A_Plane) +{ + Stream << "\n\tPlane Normal: " << A_Plane.normal; + return Stream << "\n\tOffset: " << -A_Plane.offset; +} + +// +//########################################################################### +//########################################################################### +// +Logical + Plane::TestInstance() const +{ + return True; +} + +Scalar + Plane::CalculateX(Scalar y, Scalar z) +{ + Check(this); + Verify(!Small_Enough(normal.x)); + Scalar result = (offset - y*normal.y - z*normal.z)/normal.x; + Check_Fpu(); + return result; +} + +Scalar + Plane::CalculateY(Scalar x, Scalar z) +{ + Check(this); + Verify(!Small_Enough(normal.y)); + Scalar result = (offset - x*normal.x - z*normal.z)/normal.y; + Check_Fpu(); + return result; +} +Scalar + Plane::CalculateZ(Scalar x, Scalar y) +{ + Check(this); + Verify(!Small_Enough(normal.z)); + Scalar result = (offset - x*normal.x - y*normal.y)/normal.z; + Check_Fpu(); + return result; +} diff --git a/CODE/RP/MUNGA/PLANE.HPP b/CODE/RP/MUNGA/PLANE.HPP new file mode 100644 index 0000000..1f96f15 --- /dev/null +++ b/CODE/RP/MUNGA/PLANE.HPP @@ -0,0 +1,139 @@ +//===========================================================================// +// File: plane.hh // +// Project: MUNGA Brick: Math Library // +// Contents: Interface specification of the plane class // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 12/01/94 JMA Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(PLANE_HPP) +# define PLANE_HPP + +# if !defined(NORMAL_HPP) +# include +# endif + +# if !defined(POINT3D_HPP) +# include +# endif + + class Sphere; + class ExtentBox; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Plane ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class Plane SIGNATURED + { + public: + // + // The plane equation is P*N = 0, where P is a homogeneous point, and N + // is a quadruple representing the plane. Due to some slight + // improvements gained when the offset is negated, a negative offset is + // stored. This must be taken into account whenever we are doing the + // point-to-plane dot product, where we must do a subtraction instead of + // an addition + // + Normal + normal; + Scalar + offset; + + // + // Constructors + // + Plane() + {} + Plane( + Scalar x, + Scalar y, + Scalar z, + Scalar offset + ): + normal(x,y,z), + offset(offset) + {} + Plane( + const Normal& n, + Scalar offset + ): + normal(n), + offset(offset) + {} + Plane( + const Point3D& p0, + const Point3D& p1, + const Point3D& p2 + ); + + // + // Transform functions + // + Plane& + Multiply( + const Plane &p, + const LinearMatrix &m + ); + Plane& + operator*=(const LinearMatrix &m) + {Check(this); Plane t(*this); return Multiply(t,m);} + + // + // half-space division functions + // + Logical + SeenBy(const Vector3D &A_Vector) const + {return normal * A_Vector < 0.0;} + Logical + SeenBy(const Point3D &A_Point) const + {return normal * A_Point > offset;} + Scalar + DistanceTo(const Point3D& A_Point) const + {return normal * A_Point - offset;} + + // + // half-space containment functions + // + Logical + Contains(const Point3D &point) const; + Logical + ContainsSomeOf(const Sphere &sphere) const; + Logical + ContainsAllOf(const Sphere &sphere) const; + Logical + ContainsSomeOf(const ExtentBox &box) const; + Logical + ContainsAllOf(const ExtentBox &box) const; + + // + // plane surface intersection functions + // + Logical + Intersect(const Sphere &sphere) const; + Logical + Intersect(const ExtentBox &box) const; + + friend ostream& + operator<<(ostream& Stream, const Plane &A_Plane); + Logical + TestInstance() const; + static Logical + TestClass(); + + // + // Equation solutions + // + Scalar + CalculateX(Scalar y, Scalar z); + Scalar + CalculateY(Scalar x, Scalar z); + Scalar + CalculateZ(Scalar x, Scalar y); + }; + +#endif diff --git a/CODE/RP/MUNGA/PLAYER.HPP b/CODE/RP/MUNGA/PLAYER.HPP new file mode 100644 index 0000000..ae82ac8 --- /dev/null +++ b/CODE/RP/MUNGA/PLAYER.HPP @@ -0,0 +1,486 @@ +//===========================================================================// +// File: player.hh // +// Project: MUNGA Brick: Model Manager // +// Contents : Interface specification for Munga Player Class // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 01/21/95 JMA Initial coding. // +// 06/19/95 CPB Added BitMap field for gauge support // +// 11/17/95 CPB Moved StatusMessage stuff here from RPPLAYER.HPP // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(PLAYER_HPP) +# define PLAYER_HPP + +# if !defined(ENTITY_HPP) +# include +# endif + +# if !defined(ICOM_HPP) +# include +# endif + +# if !defined(SCNROLE_HPP) +# include +# endif + + class Mission; + class DropZone__ReplyMessage; + + //########################################################################## + //##################### Player::MakeMessage ########################## + //########################################################################## + class Player__MakeMessage: + public Entity::MakeMessage + { + public: + + int + playerBitmapIndex; + + Player__MakeMessage( + Receiver::MessageID message_ID, + size_t length, + Entity::ClassID class_ID, + const EntityID &owner_ID, + ResourceDescription::ResourceID resource_ID, + LWord instance_flags, + const Origin &origin, + int player_bitmap_index + ): + Entity::MakeMessage( + message_ID, + length, + class_ID, + owner_ID, + resource_ID, + instance_flags, + origin + ), + playerBitmapIndex(player_bitmap_index) + { } + + Player__MakeMessage( + Receiver::MessageID message_ID, + size_t length, + const EntityID &entity_ID, + Entity::ClassID class_ID, + const EntityID &owner_ID, + ResourceDescription::ResourceID resource_ID, + LWord instance_flags, + const Origin &origin, + int player_bitmap_index + ): + Entity::MakeMessage( + message_ID, + length, + entity_ID, + class_ID, + owner_ID, + resource_ID, + instance_flags, + origin + ), + playerBitmapIndex(player_bitmap_index) + { } + + }; + + //########################################################################## + //################### Player::UpdateRecord #################### + //########################################################################## + + struct Player__UpdateRecord : + public Entity::UpdateRecord + { + Scalar + currentScore; + Point3D + dropZoneLocation; + }; + + //########################################################################## + //################# ScoreZone::ReplyMessage ########################## + //########################################################################## + + class Player__ScoreMessage : + public Entity::Message + { + public: + Scalar + scoreAward; + + Player__ScoreMessage( + Receiver::MessageID message_ID, + size_t length, + Scalar score + ): + Entity::Message(message_ID, length), + scoreAward(score) + {} + }; + + //########################################################################## + //################# ScoreZone::ReplyMessage ########################## + //########################################################################## + + class Player__VehicleDeadMessage: + public Entity::Message + { + public: + int deathCount; + EntityID dropZoneID; + + Player__VehicleDeadMessage( + Receiver::MessageID message_ID, + size_t length, + const EntityID &dropzone_id=EntityID::Null + ): + Entity::Message(message_ID, length), + deathCount(-1), + dropZoneID(dropzone_id) + {} + }; + + //########################################################################## + //###################### Player::StatusMessage ######################### + //########################################################################## + class Player; + + class Player__StatusMessage: + public Node + { + public: + Player__StatusMessage( + Player *player_involved, + int message_type, + Scalar display_time + ); + + enum { + NoMessage = -1, + NextMessageType = 0 + }; + + int + messageType; + Player + *playerInvolved; + Scalar + displayTime; + }; + + //########################################################################## + //########################### Player ################################ + //########################################################################## + + class Player: + public Entity + { + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Shared Data support + // + public: + static Derivation + ClassDerivations; + static SharedData + DefaultData; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Attribute Support + // + enum + { + CurrentScoreAttributeID = Entity::NextAttributeID, + DropZoneLocationAttributeID, + PlayerRankingAttributeID, + StatusMessagePointerAttributeID, + PlayerBitmapIndexAttributeID, + PlayerHighlightedAttributeID, + NextAttributeID + }; + + private: + + static const IndexEntry + AttributePointers[]; + + protected: + + static AttributeIndexSet + AttributeIndex; + + virtual int + CalcRanking(); + + public: + + Logical + playerHighlighted; + + Scalar + currentScore; + int + playerRanking; + + Point3D + dropZoneLocation; + + Player__StatusMessage + *statusMessagePointer; + + int + playerBitmapIndex; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Gauge Support + // + public: + typedef Player__StatusMessage + StatusMessage; + void + AddStatusMessage(StatusMessage *status_message); + void + StatusMessageUpdate(Scalar time_slice); + + protected: + ChainOf + statusMessageQueue; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Message Support + // + public: + enum + { + DropZoneReplyMessageID = Entity::NextMessageID, + ScoreMessageID, + VehicleDeadMessageID, + MissionStartingMessageID, + MissionEndingMessageID, + NextMessageID + }; + + typedef Player__VehicleDeadMessage VehicleDeadMessage; + + private: + static const HandlerEntry MessageHandlerEntries[]; + + protected: + static MessageHandlerSet MessageHandlers; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Game start/stop support + // + public: + typedef Message MissionStartingMessage; + typedef Message MissionEndingMessage; + + protected: + void + MissionStartingMessageHandler(Message *message); + void + MissionEndingMessageHandler(Message *message); + + Scalar + fadeTimeRemaining; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Model Support + // + public: + + enum { + DropZoneAcquiredState = Entity::StateCount, + VehicleTranslocatedState, + MissionStartingState, + MissionEndingState, + StateCount + }; + + typedef void + (Player::*Performance)(Scalar time_slice); + + void + SetPerformance(Performance performance) + { + Check(this); + activePerformance = (Simulation::Performance)performance; + } + + virtual void + PlayerSimulation(Scalar time_slice); + + virtual void + CameraShipSimulation(Scalar time_slice); + + void + GoToVehicle(Scalar time_slice); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Vehicle creation + // + protected: + void + DropZoneReplyMessageHandler(DropZone__ReplyMessage *message); + void + VehicleDeadMessageHandler(VehicleDeadMessage *message); + + void + HuntForDropZone(Scalar time_slice); + + Mission* + playerMission; + + Entity* + playerVehicle; + + int + deathCount; + + public: + Entity* + GetPlayerVehicle() + {Check(this); return playerVehicle;} + + void + SetPlayerVehicle(Entity *player_vehicle) + { + Check(player_vehicle); + Check(this); + playerVehicle = player_vehicle; + } + + Mission* + GetMission() + { + Check(this); + return playerMission; + } + + int + GetDeathCount() + {Check(this); return deathCount;} + protected: + + virtual void + CreatePlayerVehicle(Origin); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Renderer Support + // + public: + Enumeration + GetAudioRepresentation(Entity *linked_entity); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Intercom Support + // + public: + Icom* + GetIntercom() + { + Check(this); + return intercomPointer; + } + + protected: + Icom + *intercomPointer; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Scoring Support + // + public: + typedef Player__ScoreMessage ScoreMessage; + + const ScenarioRole* + GetScenarioRole() const + {Check(this); return scenarioRole; } + + protected: + void + ScoreMessageHandler(ScoreMessage *message); + + ScenarioRole + *scenarioRole; + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Flag Support + // + public: + enum { + NonScoringPlayerBit = Entity::NextBit, + CameraShipPlayerBit, + NextBit + }; + + enum { + NonScoringPlayerFlag = 1 << NonScoringPlayerBit, + CameraShipPlayerFlag = 1 << CameraShipPlayerBit, + DefaultFlags = + Entity::DefaultFlags + | NonScoringPlayerFlag + | PreRunFlag + }; + + void + SetNonScoringPlayerFlag() + {Check(this); simulationFlags |= NonScoringPlayerFlag;} + void + SetScoringPlayerFlag() + {Check(this); simulationFlags &= ~NonScoringPlayerFlag;} + + Logical + IsScoringPlayer() + {Check(this); return (simulationFlags&NonScoringPlayerFlag) == 0;} + + Logical + IsCameraShipPlayer() + {Check(this); return (simulationFlags&CameraShipPlayerFlag);} + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Update Support + // + + typedef Player__UpdateRecord UpdateRecord; + + protected: + void + WriteUpdateRecord( + Simulation::UpdateRecord *message, + int update_model + ); + void + ReadUpdateRecord(Simulation::UpdateRecord *message); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Construction and Destruction + // + public: + + typedef Player__MakeMessage MakeMessage; + + static Player* + Make(MakeMessage *creation_message); + + Player( + MakeMessage *creation_message, + SharedData &shared_data = DefaultData + ); + ~Player(); + + Logical + TestInstance() const; + + protected: + + void + ManageApplicationStatus(Scalar time_slice); + }; + +#endif diff --git a/CODE/RP/MUNGA/PLUG.CPP b/CODE/RP/MUNGA/PLUG.CPP new file mode 100644 index 0000000..9215b85 --- /dev/null +++ b/CODE/RP/MUNGA/PLUG.CPP @@ -0,0 +1,523 @@ +//===========================================================================// +// File: plug.cc // +// Project: MUNGA Brick: Connection Library // +// Contents: Implementation details for plugs and their iterators // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- -----------------------------------------------------------// +// 09/82/94 ECH Initial coding. // +// 10/20/94 JMA Fixed style stuff, merged PLGITR.CPP, added Remove() to // +// PlugIterator // +// 10/23/94 ECH Added greater deletion safety // +// 10/28/94 JMA Made compatible with SGI CC // +// 11/02/94 ECH Restored base ReceivePlugCommand // +// 11/03/94 ECH Made compatible with BC4.0 // +// 11/03/94 JMA Made constructor/destructor out-of-line, moved the // +// ReleasePlugLink into the virtual data, made compatible // +// with GNU C++ // +// 11/08/94 ECH Made compatible with BC4.0 // +// 12/01/94 JMA Made compatible with SGI CC // +// 12/12/94 ECH Removed release handler // +// 02/16/95 ECH Removed plug commands, added node command // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(PLUG_HPP) + #include +#endif + +#if !defined(OBJSTRM_HPP) + #include +#endif + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Plug ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +// +//############################################################################# +// Plug +//############################################################################# +// +Plug::Plug(ClassID class_id): + RegisteredClass(class_id) +{ + linkHead = NULL; +} + +// +//############################################################################# +// Plug +//############################################################################# +// +Plug::Plug(PlugStream *stream): + RegisteredClass(stream) +{ + linkHead = NULL; +} + +// +//########################################################################### +// ~Plug +//########################################################################### +// +Plug::~Plug() +{ + while (linkHead != NULL) + { + Unregister_Object(linkHead); + delete(linkHead); + } +} + +// +//########################################################################### +// TestInstance +//########################################################################### +// +Logical + Plug::TestInstance() const +{ + if (linkHead != NULL) + { + Check(linkHead); + } + return True; +} + +// +//############################################################################# +// ReceivePlugCommand +//############################################################################# +// + +// Considering removal +#if 0 +int + Plug::ReceivePlugCommand( + Plug::CommandID, + void* + ) +{ + return 0; +} +#endif + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ PlugIterator ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +// +//############################################################################# +// PlugIterator +//############################################################################# +// +PlugIterator::PlugIterator( + const Plug *plug, + RegisteredClass::ClassID class_to_iterate +) +{ + Check(plug); + this->plug = plug; + classToIterate = class_to_iterate; + currentLink = plug->linkHead; +} + +PlugIterator::PlugIterator(const PlugIterator &iterator) +{ + Check(&iterator); + plug = iterator.plug; + classToIterate = iterator.classToIterate; + currentLink = iterator.currentLink; +} + +// +//############################################################################# +// PlugIterator +//############################################################################# +// +PlugIterator::~PlugIterator() +{ +} + +// +//########################################################################### +// TestInstance +//########################################################################### +// +Logical + PlugIterator::TestInstance() const +{ + if (currentLink != NULL) + { + Check(currentLink); + } + return True; +} + +// +//########################################################################### +// First +//########################################################################### +// +void + PlugIterator::First() +{ + Check(plug); + currentLink = plug->linkHead; + NextNode(); +} + +// +//########################################################################### +// Last +//########################################################################### +// +void + PlugIterator::Last() +{ + if (currentLink == NULL) + { + Check(plug); + if ((currentLink = plug->linkHead) == NULL) + return; + } + + Check(currentLink); + while(currentLink->nextLink != NULL) + { + currentLink = currentLink->nextLink; + Check(currentLink); + } + PreviousNode(); +} + +// +//########################################################################### +// Next +//########################################################################### +// +void + PlugIterator::Next() +{ + Check(currentLink); + currentLink = currentLink->nextLink; + NextNode(); +} + +// +//########################################################################### +// Previous +//########################################################################### +// +void + PlugIterator::Previous() +{ + Check(currentLink); + currentLink = currentLink->prevLink; + PreviousNode(); +} + +// +//########################################################################### +// ReadAndNextImplementation +//########################################################################### +// +void* + PlugIterator::ReadAndNextImplementation() +{ + if (currentLink != NULL) + { + Node *node; + + Check(currentLink); + Check(currentLink->socket); + + node = currentLink->socket->GetReleaseNode(); + currentLink = currentLink->nextLink; + NextNode(); + return node; + } + return NULL; +} + +// +//########################################################################### +// ReadAndPreviousImplementation +//########################################################################### +// +void* + PlugIterator::ReadAndPreviousImplementation() +{ + if (currentLink != NULL) + { + Node *node; + + Check(currentLink); + Check(currentLink->socket); + + node = currentLink->socket->GetReleaseNode(); + currentLink = currentLink->prevLink; + PreviousNode(); + return node; + } + return NULL; +} + +// +//########################################################################### +// GetCurrentImplementation +//########################################################################### +// +void* + PlugIterator::GetCurrentImplementation() +{ + if (currentLink != NULL) + { + Check(currentLink); + Check(currentLink->socket); + + return currentLink->socket->GetReleaseNode(); + } + return NULL; +} + +// +//########################################################################### +// GetSize +//########################################################################### +// +#if 0 +CollectionSize + PlugIterator::GetSize() +{ + Link *link; + CollectionSize count; + + Check(plug); + + count = 0; + for + ( + link = plug->linkHead; + link != NULL; + link = link->nextLink + ) + { + Check(link); + Check(link->socket); + if (link->socket->GetReleaseNode() != NULL) + count++; + } + return count; +} +#else +CollectionSize + PlugIterator::GetSize() +{ + CollectionSize i = 0; + + First(); + while (GetCurrentImplementation() != NULL) + { + i++; + Next(); + } + return i; +} +#endif + +// +//########################################################################### +// GetNthImplementation +//########################################################################### +// +#if 0 +void* + PlugIterator::GetNthImplementation( + CollectionSize index + ) +{ + Link *link; + CollectionSize count; + + Check(plug); + + count = 0; + for + ( + link = plug->linkHead; + link != NULL; + link = link->nextLink + ) + { + Check(link); + if (count == index) { + currentLink = link; + + Check(currentLink); + Check(currentLink->socket); + + return currentLink->socket->GetReleaseNode(); + } + count++; + } + return NULL; +} +#else +void* + PlugIterator::GetNthImplementation( + CollectionSize index + ) +{ + CollectionSize i = 0; + void *item; + + First(); + while ((item = GetCurrentImplementation()) != NULL) + { + if (i == index) + return item; + Next(); + i++; + } + return NULL; +} +#endif + +// +//########################################################################### +// NextNode +//########################################################################### +// +void + PlugIterator::NextNode() +{ + while (currentLink != NULL) + { + Node *node; + + Check(currentLink); + Check(currentLink->socket); + if ((node = currentLink->socket->GetReleaseNode()) != NULL) + { + Check(node); + if ( + node->GetClassID() == classToIterate || + classToIterate == RegisteredClass::NullClassID + ) + { + return; + } + } + currentLink = currentLink->nextLink; + } + return; +} + +// +//########################################################################### +// PreviousNode +//########################################################################### +// +void + PlugIterator::PreviousNode() +{ + while (currentLink != NULL) + { + Node *node; + + Check(currentLink); + Check(currentLink->socket); + if ((node = currentLink->socket->GetReleaseNode()) != NULL) + { + Check(node); + if ( + node->GetClassID() == classToIterate || + classToIterate == RegisteredClass::NullClassID + ) + { + return; + } + } + currentLink = currentLink->prevLink; + } + return; +} + +// +//########################################################################### +// Remove +//########################################################################### +// +void + PlugIterator::Remove() +{ + Link *old_link; + + Check(currentLink); + + old_link = currentLink; + currentLink = currentLink->nextLink; + + Unregister_Object(old_link); + delete old_link; +} + +// +//############################################################################# +// SendNodeCommand +//############################################################################# +// +int + PlugIterator::SendNodeCommand( + NodeCommandID node_command, + void *info + ) +{ + int ret; + Node *node; + + First(); + while ((node = (Node *)GetCurrentImplementation()) != NULL) + { + Check(node); + if ((ret = node->ReceiveNodeCommand(node_command, info)) != 0) + return ret; + Next(); + } + return 0; +} + +// +//########################################################################### +// RemoveSocket +//########################################################################### +// +void + PlugIterator::RemoveSocket(Socket *socket) +{ + Link *link; + + Check(socket); + Check(plug); + for + ( + link = plug->linkHead; + link != NULL; + link = link->nextLink + ) + { + Check(link); + if (link->GetSocket() == socket) + { + currentLink = link->nextLink; + Unregister_Object(link); + delete link; + return; + } + } +} + diff --git a/CODE/RP/MUNGA/PLUG.HPP b/CODE/RP/MUNGA/PLUG.HPP new file mode 100644 index 0000000..0e081a8 --- /dev/null +++ b/CODE/RP/MUNGA/PLUG.HPP @@ -0,0 +1,383 @@ +//===========================================================================// +// File: plug.hpp // +// Project: MUNGA Brick: Connection Library // +// Contents: Interface specifications for plugs and their iterators // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- -----------------------------------------------------------// +// 10/19/94 ECH Initial coding. // +// 10/20/94 JMA Fixed style stuff, merged PLGITR.HPP, added Remove() to // +// PlugIterator // +// 10/23/94 ECH Added greater deletion safety // +// 10/28/94 JMA Made compatible with SGI CC // +// 11/02/94 ECH Restored base ReceivePlugCommand // +// 11/03/94 ECH Made compatible with BC4.0 // +// 11/08/94 JMA Made compatible with GNU C++ // +// 11/29/94 JMA Changed ClassIdentity to ClassID // +// 11/30/94 JMA Adapted to style changes // +// 12/06/94 JMA Made virtual data publicly visible // +// 12/12/94 ECH Removed release handler // +// 02/16/95 ECH Removed plug commands, added node command // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(PLUG_HPP) +# define PLUG_HPP + +# if !defined(VDATA_HPP) +# include +# endif + +# if !defined(ITERATOR_HPP) +# include +# endif + +# if !defined(LINK_HPP) +# include +# endif + + class PlugStream; + + // + //-------------------------------------------------------------------- + // Node Commands - start at zero, inherited commands start with + // Node::NextCommand + //-------------------------------------------------------------------- + // + typedef Enumeration NodeCommandID; + + enum + { + NodeNullCommandID = 0, + NodeNextCommandID + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Plug ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class PlugIterator; + + class Plug : + public RegisteredClass + { + friend class Link; + friend class PlugIterator; + + public: + // + //-------------------------------------------------------------------- + // Destructor and instance testing + //-------------------------------------------------------------------- + // + ~Plug(); + Logical + TestInstance() const; + + protected: + // + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // Protected interface + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // + Plug(ClassID class_id = TrivialPlugClassID); + Plug(PlugStream *stream); + + private: + // + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // Private data + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // + Link *linkHead; + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ PlugOf ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + template class PlugOf: + public Plug + { + public: + // + //-------------------------------------------------------------------- + // Constructor, Destructor + //-------------------------------------------------------------------- + // + PlugOf(const T &item); + ~PlugOf(); + + // + //-------------------------------------------------------------------- + // Can cast to the type + //-------------------------------------------------------------------- + // + operator T() const + {return item;} + + // + //-------------------------------------------------------------------- + // Accessors + //-------------------------------------------------------------------- + // + T + GetItem() const + {return item;} + T* + GetPointer() + {return &item;} + + private: + // + //-------------------------------------------------------------------- + // Private data + //-------------------------------------------------------------------- + // + T item; + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ PlugOf templates ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + template + PlugOf::PlugOf(const T &the_item) + { + item = the_item; + } + + template + PlugOf::~PlugOf() + { + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~ PlugIterator ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class PlugIterator: + public Iterator + { + public: + // + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // Public interface + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // + + // + //-------------------------------------------------------------------- + // Constructor, Destructor & testing + //-------------------------------------------------------------------- + // + PlugIterator( + const Plug *plug, + RegisteredClass::ClassID class_to_iterate=RegisteredClass::NullClassID + ); + PlugIterator(const PlugIterator &iterator); + ~PlugIterator(); + + Logical + TestInstance() const; + + // + //-------------------------------------------------------------------- + // Iterator methods (see Iterator for full listing) + //-------------------------------------------------------------------- + // + void + First(); + void + Last(); + void + Next(); + void + Previous(); + CollectionSize + GetSize(); + void + Remove(); + + // + //-------------------------------------------------------------------- + // SendNodeCommand - Send a command and related info to all nodes, + // returns when all nodes receive command or until + // receive method returns non-zero. If the receive + // returns non-zero, then the iterator will remain + // at that plug. + //-------------------------------------------------------------------- + // + int + SendNodeCommand( + NodeCommandID node_command, + void *info = NULL + ); + + // + //-------------------------------------------------------------------- + // RemoveSocket - Removes this plug from the specified socket. + //-------------------------------------------------------------------- + // + void + RemoveSocket(Socket *socket); + + protected: + // + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // Protected interface + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // + void* + ReadAndNextImplementation(); + void* + ReadAndPreviousImplementation(); + void* + GetCurrentImplementation(); + void* + GetNthImplementation(CollectionSize index); + + protected: + // + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // Protected data + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // + const Plug + *plug; + Link + *currentLink; + + private: + // + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // Private + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // + RegisteredClass::ClassID + classToIterate; + + void + NextNode(); + void + PreviousNode(); + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~ PlugIteratorOf ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + template class PlugIteratorOf: + public PlugIterator + { + public: + // + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // Public interface + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // + + // + //-------------------------------------------------------------------- + // Constructor, Destructors + //-------------------------------------------------------------------- + // + PlugIteratorOf( + const Plug *plug, + RegisteredClass::ClassID class_to_iterate=RegisteredClass::NullClassID + ); + PlugIteratorOf( + const Plug &plug, + RegisteredClass::ClassID class_to_iterate=RegisteredClass::NullClassID + ); + PlugIteratorOf(const PlugIteratorOf &iterator); + + ~PlugIteratorOf(); + + // + //-------------------------------------------------------------------- + // Iterator methods (see Iterator for full listing) + //-------------------------------------------------------------------- + // + T + ReadAndNext() + {return (T)ReadAndNextImplementation();} + T + ReadAndPrevious() + {return (T)ReadAndPreviousImplementation();} + T + GetCurrent() + {return (T)GetCurrentImplementation();} + T + GetNth(CollectionSize index) + {return (T)GetNthImplementation(index);} + +#if 0 + // + //--------------------------------------------------- + // Operators useful when it is known that the iterator + // is a PlugIteratorOf<> Iterator + //--------------------------------------------------- + // + Logical + operator!() + {return currentLink == NULL;} + operator T() + {return GetCurrent();} + T + operator->() + {return GetCurrent();} + PlugIteratorOf& + operator++() + {Next(); return *this;} + PlugIteratorOf& + operator--() + {Previous(); return *this;} + T + operator++(int) + {return ReadAndNext();} + T + operator--(int) + {return ReadAndPrevious();} +#endif + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~ PlugIteratorOf templates ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + template + PlugIteratorOf::PlugIteratorOf( + const Plug *plug, + RegisteredClass::ClassID class_to_iterate + ): + PlugIterator(plug, class_to_iterate) + { + } + + template + PlugIteratorOf::PlugIteratorOf( + const Plug &plug, + RegisteredClass::ClassID class_to_iterate + ): + PlugIterator(&plug, class_to_iterate) + { + } + + template + PlugIteratorOf::PlugIteratorOf(const PlugIteratorOf &iterator): + PlugIterator(iterator) + { + } + + template + PlugIteratorOf::~PlugIteratorOf() + { + } + +#endif diff --git a/CODE/RP/MUNGA/POINT2D.HPP b/CODE/RP/MUNGA/POINT2D.HPP new file mode 100644 index 0000000..2abac2d --- /dev/null +++ b/CODE/RP/MUNGA/POINT2D.HPP @@ -0,0 +1,149 @@ +//===========================================================================// +// File: point.hh // +// Project: MUNGA Brick: Math Library // +// Contents: Interface specification of the point class // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 11/19/94 JMA Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1994, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(POINT_HH) +# define POINT_HH + +# if !defined(VECTOR3D_HH) +# include "vector3d.hh" +# endif + +# if !defined(VECTOR4D_HH) +# include "vector4d.hh" +# endif + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Point2D ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + template class Point2DOf: + public Vector2DOf + { + public: + // + // Constructors + // + Point2DOf() + {} + Point2DOf( + T x, + T y + ): + Vector2DOf(x,y) + {} + Point2DOf(const Vector2DOf &v): + Vector2DOf(v) + {} + + // + // Assignment operators + // + Point2DOf& operator=(const Vector2DOf& v) + {Vector2DOf::operator=(v); return *this;} + + // + // Math operators + // + Point2DOf& + Negate(const Vector2DOf &v) + {Vector2DOf::Negate(v); return *this;} + + Point2DOf& + Add( + const Vector2DOf& v1, + const Vector2DOf& v2 + ) + {Vector2DOf::Add(v1,v2); return *this;} + Point2DOf& + operator+=(const Vector2DOf& v) + {return Add(*this,v);} + + Point2DOf& + Subtract( + const Point2DOf& p, + const Vector2DOf& v + ) + {Vector2DOf::Subtract(p,v); return *this;} + Point2DOf& + operator-=(const Vector2DOf& v) + {return Subtract(*this,v);} + + float + operator*(const Vector2DOf& v) const + {return Vector2DOf::operator*(v);} + + Point2DOf& + Multiply( + const Point2DOf& p, + float scale + ) + {Vector2DOf::Multiply(p,scale); return *this;} + Point2DOf& + operator*=(float value) + {return Multiply(*this,value);} + + Point2DOf& + Multiply( + const Point2DOf& p, + const Vector2DOf& v + ) + {Vector2DOf::Multiply(p,v); return *this;} + Point2DOf& + operator*=(const Vector2DOf &v) + {return Multiply(*this,v);} + + Point2DOf& + Divide( + const Vector2DOf& v, + float scale + ) + {Vector2DOf::Divide(v,scale); return *this;} + Point2DOf& + operator/=(float value) + {return Divide(*this,value);} + + Point2DOf& + Divide( + const Vector2DOf& v1, + const Vector2DOf& v2 + ) + {Vector2DOf::Divide(v1,v2); return *this;} + Point2DOf& + operator/=(const Vector2DOf &v) + {return Divide(*this,v);} + + // + // Miscellaneous functions + // + Point2DOf& + Combine( + const Vector2DOf& v1, + float t1, + const Vector2DOf& v2, + float t2 + ) + {Vector2DOf::Combine(v1,t1,v2,t2); return *this;} + + // + // Template support functions + // + Point2DOf& + Lerp( + const Vector2DOf& v1, + const Vector2DOf& v2, + float t + ) + {Vector2DOf::Lerp(v1,v2,t); return *this;} + }; + +#endif + diff --git a/CODE/RP/MUNGA/POINT3D.CPP b/CODE/RP/MUNGA/POINT3D.CPP new file mode 100644 index 0000000..5bda534 --- /dev/null +++ b/CODE/RP/MUNGA/POINT3D.CPP @@ -0,0 +1,92 @@ +//===========================================================================// +// File: point3d.cc // +// Project: MUNGA Brick: Math Library // +// Contents: Implementation details for the point class // +//---------------------------------------------------------------------------// +// 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 // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(POINT3D_HPP) + #include +#endif + +#if !defined(LINMTRX_HPP) + #include +#endif + +#if !defined(VECTOR4D_HPP) + #include +#endif + +const Point3D + Point3D::Identity(0.0f,0.0f,0.0f); + +// +//########################################################################### +//########################################################################### +// +Point3D& + Point3D::operator=(const Vector4D& v) +{ + Check_Pointer(this); + Check(&v); + Verify(v.w); + + x = v.x/v.w; + y = v.y/v.w; + z = v.z/v.w; + return *this; +} + +// +//########################################################################### +//########################################################################### +// +Point3D& + Point3D::Multiply(const Point3D& p,const AffineMatrix& m) +{ + Check_Pointer(this); + Check(&p); + Check(&m); + + x = p.x*m(0,0) + p.y*m(1,0) + p.z*m(2,0) + m(3,0); + y = p.x*m(0,1) + p.y*m(1,1) + p.z*m(2,1) + m(3,1); + z = p.x*m(0,2) + p.y*m(1,2) + p.z*m(2,2) + m(3,2); + return *this; +} + +// +//########################################################################### +//########################################################################### +// +Point3D& + Point3D::MultiplyByInverse( + const Point3D &p, + const LinearMatrix &m + ) +{ + x = + p.x*m(0,0) + p.y*m(0,1) + p.z*m(0,2) + - m(3,0)*m(0,0) - m(3,1)*m(0,1) - m(3,2)*m(0,2); + y = + p.x*m(1,0) + p.y*m(1,1) + p.z*m(1,2) + - m(3,0)*m(1,0) - m(3,1)*m(1,1) - m(3,2)*m(1,2); + z = + p.x*m(2,0) + p.y*m(2,1) + p.z*m(2,2) + - m(3,0)*m(2,0) - m(3,1)*m(2,1) - m(3,2)*m(2,2); + return *this; +} + +#if defined(TEST_CLASS) +# include "point3d.tcp" +#endif + diff --git a/CODE/RP/MUNGA/POINT3D.HPP b/CODE/RP/MUNGA/POINT3D.HPP new file mode 100644 index 0000000..cbd9139 --- /dev/null +++ b/CODE/RP/MUNGA/POINT3D.HPP @@ -0,0 +1,192 @@ +//===========================================================================// +// File: point.hh // +// Project: MUNGA Brick: Math Library // +// Contents: Interface specification of the point class // +//---------------------------------------------------------------------------// +// 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 // +//===========================================================================// + +#if !defined(POINT_HPP) +# define POINT_HPP + +# if !defined(VECTOR3D_HPP) +# include +# endif + + class Origin; + class Vector4D; + class AffineMatrix; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Point3D ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class Point3D: + public Vector3D + { + public: + static const Point3D + Identity; + + // + // Constructors + // + Point3D() + {} + Point3D( + Scalar x, + Scalar y, + Scalar z + ): + Vector3D(x,y,z) + {} + + // + // Assignment operators + // + Point3D& + operator=(const Vector3D& v) + {Vector3D::operator=(v); return *this;} + Point3D& + operator=(const Vector4D& v); + Point3D& + operator=(const Origin &p); + Point3D& + operator=(const AffineMatrix &matrix); + + // + // Math operators + // + Point3D& + Negate(const Vector3D &v) + {Vector3D::Negate(v); return *this;} + + Point3D& + Add( + const Vector3D& v1, + const Vector3D& v2 + ) + {Vector3D::Add(v1,v2); return *this;} + Point3D& + operator+=(const Vector3D& v) + {return Add(*this,v);} + + Point3D& + Subtract( + const Point3D& p, + const Vector3D& v + ) + {Vector3D::Subtract(p,v); return *this;} + Point3D& + operator-=(const Vector3D& v) + {return Subtract(*this,v);} + + Scalar + operator*(const Vector3D& v) const + {return Vector3D::operator*(v);} + + Point3D& + Multiply( + const Point3D& p, + Scalar scale + ) + {Vector3D::Multiply(p,scale); return *this;} + Point3D& + operator*=(Scalar value) + {return Multiply(*this,value);} + + Point3D& + Multiply( + const Point3D& p, + const Vector3D& v + ) + {Vector3D::Multiply(p,v); return *this;} + Point3D& + operator*=(const Vector3D &v) + {return Multiply(*this,v);} + + Point3D& + Divide( + const Vector3D& v, + Scalar scale + ) + {Vector3D::Divide(v,scale); return *this;} + Point3D& + operator/=(Scalar value) + {return Divide(*this,value);} + + Point3D& + Divide( + const Vector3D& v1, + const Vector3D& v2 + ) + {Vector3D::Divide(v1,v2); return *this;} + Point3D& + operator/=(const Vector3D &v) + {return Divide(*this,v);} + + // + // Transforms + // + Point3D& + Multiply( + const Vector3D &v, + const AffineMatrix &m + ) + {Vector3D::Multiply(v,m); return *this;} + Point3D& + Multiply( + const Point3D &p, + const AffineMatrix &m + ); + Point3D& + operator*=(const AffineMatrix &m) + {Point3D src(*this); return Multiply(src,m);} + Point3D& + MultiplyByInverse( + const Vector3D &v, + const LinearMatrix &m + ) + {Vector3D::MultiplyByInverse(v,m); return *this;} + Point3D& + MultiplyByInverse( + const Point3D &p, + const LinearMatrix &m + ); + + // + // Miscellaneous functions + // + Point3D& + Combine( + const Vector3D& v1, + Scalar t1, + const Vector3D& v2, + Scalar t2 + ) + {Vector3D::Combine(v1,t1,v2,t2); return *this;} + + // + // Template support functions + // + Point3D& + Lerp( + const Vector3D& v1, + const Vector3D& v2, + Scalar t + ) + {Vector3D::Lerp(v1,v2,t); return *this;} + + static Logical + TestClass(); + }; + +#endif + +#if !defined(AFFNMTRX_HPP) +# include +#endif diff --git a/CODE/RP/MUNGA/POINT3D.TCP b/CODE/RP/MUNGA/POINT3D.TCP new file mode 100644 index 0000000..00fc95d --- /dev/null +++ b/CODE/RP/MUNGA/POINT3D.TCP @@ -0,0 +1,137 @@ +//===========================================================================// +// File: point.tst // +// Project: MUNGA Brick: Math Library // +// Contents: test code for point class // +//---------------------------------------------------------------------------// +// 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 // +//===========================================================================// + +#if !defined(ORIGIN_HPP) + #include +#endif + +// +//########################################################################### +//########################################################################### +// +Logical + Point3D::TestClass() +{ + DEBUG_STREAM << "Starting Point3D test...\n"; + + const Point3D + a(Identity); + Point3D + b; + const Point3D + c(1.0f,2.0f,3.0f); + Point3D + d(2.0f,3.0f,1.0f); + + Test(!a.x && !a.y && !a.z); + Test(c.x == 1.0f && c.y == 2.0f && c.z == 3.0f); + + Test(c[2] == c.z); + Test(a[1] == a.y); + + Test(Small_Enough(a)); + Test(!a); + + b = c; + Test(b.x == c.x && b.y == c.y && b.z == c.z); + Test(Close_Enough(b,c)); + Test(b == c); + Test(a != b); + + b.Negate(c); + Test(b == Point3D(-c.x,-c.y,-c.z)); + + b.Add(c,d); + Test(b == Point3D(c.x+d.x,c.y+d.y,c.z+d.z)); + b = c; + b += d; + Test(b == Point3D(c.x+d.x,c.y+d.y,c.z+d.z)); + + b.Subtract(d,c); + Test(b == Point3D(d.x-c.x,d.y-c.y,d.z-c.z)); + b = d; + b -= c; + Test(b == Point3D(d.x-c.x,d.y-c.y,d.z-c.z)); + + Scalar f = c*d; + Test(f == c.x*d.x + c.y*d.y + c.z*d.z); + + b.Cross(c,d); + Test(b == Point3D(c.y*d.z-c.z*d.y,c.z*d.x-c.x*d.z,c.x*d.y-c.y*d.x)); + + f = 2.0f; + b.Multiply(c,f); + Test(b == Point3D(f*c.x,f*c.y,f*c.z)); + b = c; + b *= f; + Test(b == Point3D(f*c.x,f*c.y,f*c.z)); + + b.Multiply(c,d); + Test(b == Point3D(c.x*d.x,c.y*d.y,c.z*d.z)); + b = c; + b *= d; + Test(b == Point3D(c.x*d.x,c.y*d.y,c.z*d.z)); + + b.Divide(c,f); + Test(b == Point3D(c.x/f,c.y/f,c.z/f)); + b = c; + b /= f; + Test(b == Point3D(c.x/f,c.y/f,c.z/f)); + + b.Divide(c,d); + Test(b == Point3D(c.x/d.x,c.y/d.y,c.z/d.z)); + b = c; + b /= d; + Test(b == Point3D(c.x/d.x,c.y/d.y,c.z/d.z)); + + AffineMatrix + m; + EulerAngles + r(PI_OVER_4,0.0f,0.0f); + m = r; + m = c; + b = m; + Test(b == c); + b.Multiply(c,m); + Test(b == Point3D(c.x+m(3,0),c.y*m(1,1)+c.z*m(2,1)+m(3,1),c.y*m(1,2)+c.z*m(2,2)+m(3,2))); + b = c; + b *= m; + Test(b == Point3D(c.x+m(3,0),c.y*m(1,1)+c.z*m(2,1)+m(3,1),c.y*m(1,2)+c.z*m(2,2)+m(3,2))); + + Test(!a.LengthSquared()); + f = c.LengthSquared(); + Test(f == c.x*c.x + c.y*c.y + c.z*c.z); + f = c.Length(); + Test(Close_Enough(f,Sqrt(c.x*c.x + c.y*c.y + c.z*c.z))); + b.Normalize(c); + Test(b == Point3D(c.x/f, c.y/f, c.z/f)); + + b.Combine(c,2.0f,d,2.0f); + Test(b == Point3D(2.0f*(c.x+d.x),2.0f*(c.y+d.y),2.0f*(c.z+d.z))); + + b.Lerp(c,d,0.5f); + Test(b == Point3D(0.5f*(c.x+d.x),0.5f*(c.y+d.y),0.5f*(c.z+d.z))); + + Vector4D v(2.0f,4.0f,6.0f,2.0f); + b = v; + Test(b == Point3D(v.x/v.w, v.y/v.w, v.z/v.w)); + + Origin t; + t.linearPosition = Point3D(2.0f,3.0f,4.0f); + t.angularPosition = EulerAngles(0.0f,0.0f,0.0f); + b = t; + Test(b == Point3D(t.linearPosition.x,t.linearPosition.y,t.linearPosition.z)); + + return True; +} diff --git a/CODE/RP/MUNGA/RANDOM.HPP b/CODE/RP/MUNGA/RANDOM.HPP new file mode 100644 index 0000000..9e03af1 --- /dev/null +++ b/CODE/RP/MUNGA/RANDOM.HPP @@ -0,0 +1,74 @@ +//===========================================================================// +// File: random.cc // +// Project: MUNGA Brick: Math Library // +// Contents: Interface specification for the random number generator // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 11/20/93 JMA Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1993-1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(RANDOM_HPP) +# define RANDOM_HPP + +# if !defined(SCALAR_HPP) +# include +# endif + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Random ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class RandomGenerator SIGNATURED + { + private: + static int + Numbers[250]; // the random number table + static int + Index; // the current entry within the table + + static void + Init(); + + static int + GetRandomInt(); + + public: + RandomGenerator() + {if (Index == -1) Init();} + + // + //------------------------ + // Random number functions + //------------------------ + // + int + GetInt() // returns 0 .. RAND_MAX + {return GetRandomInt();} + operator Scalar(); // returns 0.0f <= x < 1.0f + int // returns 0 .. Range-1 + operator ()(int Range); + + static Logical + TestClass(); + }; + + extern RandomGenerator Random; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Die ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class Die SIGNATURED + { + private: + int + highestRandom, // the highest random number giving a uniform dist. + dieSides; // the number of sides on the die (starting from 1) + + public: + Die(int sides); + operator int(); // returns 1 .. dieSides + }; + +#endif diff --git a/CODE/RP/MUNGA/RANDOM.TCP b/CODE/RP/MUNGA/RANDOM.TCP new file mode 100644 index 0000000..0e957d0 --- /dev/null +++ b/CODE/RP/MUNGA/RANDOM.TCP @@ -0,0 +1,44 @@ +//===========================================================================// +// File: random.tst // +// Project: MUNGA Brick: Math Library // +// Contents: test function for the random number generator // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 11/20/93 JMA Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1993-1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +Logical + RandomGenerator::TestClass() +{ + DEBUG_STREAM << "Starting Random test...\n"; + +#define RANDOM_TEST_COUNT 10000 + + int i; + for (i=0; i= 0.0f && r < 1.0f,r); + } + + int array[10]; + for (i = 0; i= 0 && r < ELEMENTS(array)); + ++array[r]; + } + + return True; +} + diff --git a/CODE/RP/MUNGA/RAY.HPP b/CODE/RP/MUNGA/RAY.HPP new file mode 100644 index 0000000..ed78c4f --- /dev/null +++ b/CODE/RP/MUNGA/RAY.HPP @@ -0,0 +1,103 @@ +//########################################################################### +// +// $Workfile: RAY.HPP $ +// $Revision: 1.5 $ +// $Modtime: 14 May 1996 20:06:14 $ +// +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Copyright(c) 1993 J. M. Albertson - All Rights Reserved +// +//########################################################################### + +#if !defined(RAY_HPP) +# define RAY_HPP + +# if !defined(POINT3D_HPP) +# include +# endif + +# if !defined(UNITVEC_HPP) +# include +# endif + + class Plane; + class Sphere; + class Cylinder; + class Cone; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ray ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class Ray SIGNATURED + { + public: + Point3D + origin; + UnitVector + direction; + + Ray() + {} + Ray( + const Point3D &origin, + const UnitVector &direction + ): + origin(origin), + direction(direction) + {} + + // + // Ray projection functions + // + void + Project( + Scalar length, + Point3D *result + ); + Scalar + LengthToClosestPointTo(const Point3D &point); + void + ClosestPointTo( + const Point3D &point, + Point3D *result + ) + { + Check(this); Check(result); Check(&point); + Project(LengthToClosestPointTo(point),result); + } + + // + // Ray intersection functions + // + Scalar + DistanceTo( + const Plane &plane, + Scalar *product + ) const; + Scalar + DistanceTo( + const Sphere &sphere, + Scalar *penetration + ) const; + + // + // Test support + // + Logical + TestInstance() const; + static Logical + TestClass(); + }; + + extern Scalar + Find_Closest_Approach( + const Point3D& origin1, + const Vector3D& velocity1, + Point3D *result1, + const Point3D& origin2, + const Vector3D& velocity2, + Point3D *result2, + Scalar *time, + Logical *constant + ); + +#endif diff --git a/CODE/RP/MUNGA/RAY.TCP b/CODE/RP/MUNGA/RAY.TCP new file mode 100644 index 0000000..5ff72d9 --- /dev/null +++ b/CODE/RP/MUNGA/RAY.TCP @@ -0,0 +1,22 @@ +//===========================================================================// +// File: ray.tst // +// Project: MUNGA Brick: Math Library // +// Contents: Implementation details for the ray class // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 11/25/94 JMA Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +Logical + Ray::TestClass() +{ + DEBUG_STREAM << "Starting Ray test...\n"; + Tell(" Ray::TestClass is stubbed out!\n"); + return True; +} + diff --git a/CODE/RP/MUNGA/RECEIVER.HPP b/CODE/RP/MUNGA/RECEIVER.HPP new file mode 100644 index 0000000..0691b95 --- /dev/null +++ b/CODE/RP/MUNGA/RECEIVER.HPP @@ -0,0 +1,589 @@ +//===========================================================================// +// File: receiver.hpp // +// Project: MUNGA Brick: Dynamic Dispatch // +// Contents: Dynamic Dispatch Interface // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 10/19/94 JMA Initial coding. // +// 10/28/94 JMA Made compatible with SGI CC // +// 11/03/94 ECH Made compatible with BC4.0 // +// 11/04/94 JMA Made compatible with GNU C++ // +// 11/04/94 ECH Added null handler set // +// 11/29/94 JMA Changed ClassIdentity to ClassID // +// 11/30/94 JMA Adapted to new style conventions // +// 12/04/94 JMA Moved Message under Receiver, merged with message.hpp // +// 12/06/94 JMA Made DefaultData publicly visible // +//---------------------------------------------------------------------------// +// Copyright (C) 1994, Virtual World Entertainment, Inc. All Rights reserved // +// PROPRIETARY AND CONFIDENTIAL // +//===========================================================================// + +#if !defined(RECEIVER_HPP) +# define RECEIVER_HPP + +# if !defined(NODE_HPP) +# include +# endif + +# if !defined(CHAIN_HPP) +# include +# endif + +# if !defined(MEMBLOCK_HPP) +# include +# endif + +# if !defined(MEMSTRM_HPP) +# include +# endif + + class Receiver__SharedData; + class Receiver__InheritanceSet; + struct Receiver__HandlerEntry; + class Receiver__MessageHandlerSet; + class Receiver__Message; + class Receiver__DynamicMessage; + class Derivation; + class Event; + class DynamicMemoryStream; + class MessageTap; + + //########################################################################## + //########################## Receiver ################################ + //########################################################################## + // + // It is suggested that calls to methods meant to be serviced by a receiver + // be built through inline functions in the derived class, rather than + // having to build the parameter block in the scope of the caller. Letting + // the inline code build the parameter block is much cleaner, and allows the + // message code numbers to be held inside the derived class, further + // protecting against calling methods for objects not in a proper derivation + // chain. + // + class Receiver: + public Node + { + //########################################################################## + // Shared Data Support + // + public: + typedef Receiver__SharedData SharedData; + SharedData* + GetSharedData() const; + + static Derivation ClassDerivations; + Derivation* + GetDerivation() const; + + static SharedData DefaultData; + + Logical + IsDerivedFrom(Derivation& parent) const; + Logical + IsDerivedFrom(const char* parent) const; + + protected: + const SharedData* sharedData; + + //########################################################################## + // Construction and Destruction Support + // + protected: + Receiver( + ClassID class_ID, + SharedData &shared_data + ): + Node(class_ID), + sharedData(&shared_data) + {} + + Receiver( + PlugStream *stream, + SharedData &shared_data + ): + Node(stream), + sharedData(&shared_data) + {} + + //########################################################################## + // Messaging Support + // + public: + typedef Receiver__Message Message; + typedef Receiver__DynamicMessage DynamicMessage; + typedef Receiver__InheritanceSet InheritanceSet; + typedef Receiver__HandlerEntry HandlerEntry; + typedef Receiver__MessageHandlerSet MessageHandlerSet; + typedef void (Receiver::*Handler)(const Message*); + typedef Enumeration MessageID; + + enum { + AnyMessageID=0, + WatcherChangedMessageID, + LoadResourceFinishedMessageID, + NextMessageID + }; + + static const Handler NullHandler; + + void + Receive(Message *What); + + virtual void + Dispatch(Message *What) + {Receive(What);} + + void + DefaultMessageHandler(Message*); + + typedef void (Receiver::*ScanCallback)( + Receiver::Message *message, + Receiver *receiver + ); + + MessageTap* + MakeMessageTap( + Derivation *derivation, + ScanCallback callback + ); + MessageTap* + MakeMessageTap( + Derivation *derivation, + ScanCallback callback, + Receiver::MessageID matching_message, + Receiver *match_receiver + ); + + protected: + static const HandlerEntry + MessageHandlerEntries[]; + static MessageHandlerSet + MessageHandlers; + + //########################################################################## + // Event Support + // + public: + virtual void + Receive(Event *event); + + void + FlushEvents(int max_priority=-1); + void + FlushMatchingEvents( + MessageID target_message, + int max_priority=-1 + ); + + void + ProcessDeferredQueue(); + + //########################################################################## + // Test Support + // + public: + static Logical + TestClass(); + Logical + TestInstance() const; + }; + + //########################################################################## + //###################### Receiver::Message ########################### + //########################################################################## + + class Receiver__Message + { + public: + #if defined(USE_SIGNATURE) + friend int + Is_Signature_Bad(const volatile Receiver__Message *); + #endif + + size_t + messageLength; + Receiver::MessageID + messageID; + + enum { + ReliableBit, + NextBit + }; + + enum { + ReliableFlag = 1 << ReliableBit + }; + + LWord + messageFlags; + + Receiver__Message( + Receiver::MessageID id, + size_t message_length + ): + messageID(id), + messageLength(message_length), + messageFlags(ReliableFlag) // HACK + {} + + Logical + TestInstance() const; + }; + + //########################################################################## + //################### Receiver::DynamicMessage ####################### + //########################################################################## + + class Receiver__DynamicMessage: + public DynamicMemoryStream + { + public: + Receiver__DynamicMessage() + {} + Receiver__DynamicMessage( + void *stream_start, + size_t stream_size, + size_t initial_offset=0 + ): + DynamicMemoryStream(stream_start, stream_size, initial_offset) + {} + Receiver__DynamicMessage( + Receiver::MessageID message_ID, + size_t size = sizeof(Receiver::Message) + ); + + Receiver::Message* + GetMessagePointer() + {Check(this); return Cast_Object(Receiver::Message*, streamStart);} + + protected: + MemoryStream& + WriteBytes( + const void *ptr, + size_t number_of_bytes + ); + }; + + //########################################################################## + //#################### ReceiverDataMessageOf ######################### + //########################################################################## + + template class ReceiverDataMessageOf: + public Receiver::Message + { + public: + T + dataContents; + + ReceiverDataMessageOf( + Receiver::MessageID id, + size_t message_length, + const T& data + ): + Receiver::Message(id, message_length), + dataContents(data) + {} + }; + + //########################################################################## + //######################### MessageTap ############################### + //########################################################################## + + class MessageTap: + public Plug + { + //########################################################################## + // MessageTap Functionality + // + public: + MessageTap( + Derivation *derivation, + Receiver *client, + Receiver::ScanCallback callback + ); + MessageTap( + Derivation *derivation, + Receiver *client, + Receiver::ScanCallback callback, + Receiver::MessageID matching_message, + Receiver *match_receiver + ); + + private: + Receiver::ScanCallback scanCallback; + Receiver* clientReceiver; + Receiver* matchingReceiver; + Receiver::MessageID matchingMessageID; + + public: + void + Scan( + Receiver *receiver, + Receiver::Message *message + ); + + //########################################################################## + // Memory Allocation + // + private: + static MemoryBlock AllocatedMemory; + + public: + void* + operator new(size_t) + {return AllocatedMemory.New();} + void + operator delete(void *where) + {AllocatedMemory.Delete(where);} + + //########################################################################## + // Test support + // + public: + Logical + TestInstance() const; + static Logical + TestClass(); + }; + + //########################################################################## + //################## Receiver::InheritanceSet ######################## + //########################################################################## + // + // NOTE: An InheritanceSet generated for a class should only be inherited by + // other classes derived from that base class. If this is not done, + // SEVERE run-time weirdness will happen + // + class Receiver__InheritanceSet SIGNATURED + { + public: + Logical + TestInstance() const; + Enumeration + GetEntryCount() + {Check(this); return entryCount;} + + protected: + Enumeration + entryCount; + + Receiver__InheritanceSet() + {} + ~Receiver__InheritanceSet() + {} + }; + + //########################################################################## + //################### Receiver::HandlerEntry ######################### + //########################################################################## + + struct Receiver__HandlerEntry + { + Enumeration + entryID; + const char* + entryName; + Receiver::Handler + entryHandler; + }; + + #define MESSAGE_ENTRY(class,message)\ + {\ + class::message##MessageID,\ + #message,\ + (Receiver::Handler)&class::message##MessageHandler\ + } + + //########################################################################## + //################# Receiver::MessageHandlerSet ###################### + //########################################################################## + + class Receiver__MessageHandlerSet: + public Receiver__InheritanceSet + { + //########################################################################## + // Constructors and Destructors + // + public: + Receiver__MessageHandlerSet( + Receiver::MessageID count, + const Receiver::HandlerEntry handler_table[], + const Receiver::MessageHandlerSet &inheritance + ) + {Build(count, handler_table, &inheritance);} + Receiver__MessageHandlerSet( + Receiver::MessageID count, + const Receiver::HandlerEntry handler_table[] + ) + {Build(count, handler_table, NULL);} + Receiver__MessageHandlerSet() + {messageHandlers = NULL; entryCount = 0;} + ~Receiver__MessageHandlerSet(); + + protected: + void + Build( + Receiver::MessageID count, + const Receiver::HandlerEntry handler_table[], + const Receiver::MessageHandlerSet *inheritance + ); + + //########################################################################## + // HandlerSet Functionality + // + public: + static const Receiver::MessageHandlerSet + NullSet; + + Receiver::Handler + Find(Receiver::MessageID message) const + { + Check(this); + Verify(message > 0); + return (message<=entryCount) + ? messageHandlers[message-1].entryHandler + : Receiver::NullHandler; + } + const Receiver::HandlerEntry* + Find(const char* name) const; + + const char * + GetName(Receiver::MessageID message) const + { + Check(this); + return (message<=entryCount) + ? messageHandlers[message-1].entryName + : NULL; + } + + protected: + Receiver::HandlerEntry* messageHandlers; + + //########################################################################## + // Test Support + // + public: + static Logical + TestClass(); + }; + + //########################################################################## + //########################## Derivation ############################## + //########################################################################## + + class Derivation: + public Node + { + friend class Receiver; + + //########################################################################## + // Construction and Destruction + // + public: + Derivation(char *who); + Derivation(Derivation& parent,char *who); + + char *className; + + //########################################################################## + // Messagetap support + // + private: + Derivation(Derivation& copy); + ChainOf + activeTaps; + + public: + void + AppendMessageTap(MessageTap* tap); + Logical + IsDescendedFrom(Derivation& parent); + Logical + IsDescendedFrom(const char* parent); + + //########################################################################## + // Inheritance Registration Support + // + private: + ChainOf + classDerivations; + + void + AppendDerivation(Derivation* child) + {Check(this); classDerivations.Add(child);} + + //########################################################################## + // Test Support + // + public: + static Logical + TestClass(); + }; + + //########################################################################## + //################### Receiver::SharedData ########################## + //########################################################################## + + class Receiver__SharedData SIGNATURED + { + public: + Receiver__SharedData( + Derivation& derivation, + Receiver::MessageHandlerSet &handler + ): + derivedClasses(&derivation), + activeMessageHandlers(&handler) + {} + + Derivation + *derivedClasses; + Receiver::MessageHandlerSet + *activeMessageHandlers; + + Logical + TestInstance() const; + }; + + inline Receiver::SharedData* + Receiver::GetSharedData() const + {Check(this); return Cast_Object(SharedData*,sharedData);} + + inline Derivation* + Receiver::GetDerivation() const + {Check(this); return GetSharedData()->derivedClasses;} + + inline Logical + Receiver::IsDerivedFrom(Derivation& parent) const + {return sharedData->derivedClasses->IsDescendedFrom(parent);} + + inline Logical + Receiver::IsDerivedFrom(const char* parent) const + {Check(this); return GetDerivation()->IsDescendedFrom(parent);} + + inline MessageTap* + Receiver::MakeMessageTap( + Derivation *derivation, + ScanCallback callback + ) + {Check(this); return new MessageTap(derivation, this, callback);} + + inline MessageTap* + Receiver::MakeMessageTap( + Derivation *derivation, + ScanCallback callback, + Receiver::MessageID matching_message, + Receiver *match_receiver + ) + { + Check(this); + return new MessageTap( + derivation, + this, + callback, + matching_message, + match_receiver + ); + } +#endif + diff --git a/CODE/RP/MUNGA/RECEIVER.TCP b/CODE/RP/MUNGA/RECEIVER.TCP new file mode 100644 index 0000000..cb8c3fe --- /dev/null +++ b/CODE/RP/MUNGA/RECEIVER.TCP @@ -0,0 +1,510 @@ +//===========================================================================// +// File: receiver.tst // +// Project: MUNGA Brick: Dynamic Dispatch // +// Contents: Test routines for MessageHandlerSet, Derivation and Receiver // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 10/19/94 JMA Initial coding. // +// 11/02/94 JMA Made compatible with SGI CC // +// 11/03/94 ECH Made compatible with BC4.0 // +// 11/05/94 JMA Made compatible with GNU C++ // +// 12/01/94 JMA Made compatible with SGI CC // +// 12/04/94 JMA Moved Message under Receiver, merged in message.tst // +//---------------------------------------------------------------------------// +// Copyright (C) 1994, Virtual World Entertainment, Inc. All Rights reserved // +// PROPRIETARY AND CONFIDENTIAL // +//===========================================================================// + +#include "testclas.hpp" + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Alpha ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Alpha::Alpha( + ClassID class_ID, + SharedData &vdata +): + Receiver(class_ID,vdata) +{ + x = -1; +} + +Alpha::~Alpha() +{ +} + +void + Alpha::Method0Handler(Message*) +{ + x = 0; +} + +void + Alpha::Method1Handler(Message*) +{ + x = 1; +} + +Alpha::SharedData + Alpha::DefaultData( + Alpha::ClassDerivations, + Alpha::handlerSet + ); +Derivation + Alpha::ClassDerivations(Receiver::ClassDerivations,"Alpha"); + +const Receiver::HandlerEntry + Set_1[]= +{ + { + Alpha::message0ID, + "message0", + (Receiver::Handler)&Alpha::Method0Handler + }, + { + Alpha::message1ID, + "message1", + (Receiver::Handler)&Alpha::Method1Handler + } +}; + +Receiver::MessageHandlerSet + Alpha::handlerSet( + ELEMENTS(Set_1), + Set_1, + Receiver::MessageHandlers + ); + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Beta ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Beta::Beta( + ClassID class_id, + SharedData &vdata +): + Alpha(class_id, vdata) +{ + x = -2; +} + +Beta::~Beta() +{ +} + +void + Beta::Method1aHandler(Message*) +{ + x = 6; +} + +void + Beta::Method2Handler(Message*) +{ + x = 2; +} + +void + Beta::Method3Handler(Message*) +{ + x = 3; +} + +Beta::SharedData + Beta::DefaultData( + Beta::ClassDerivations, + Beta::handlerSet + ); +Derivation + Beta::ClassDerivations(Alpha::ClassDerivations,"Beta"); + +const Receiver::HandlerEntry + Set_2[]= +{ + { + Beta::message1ID, + "message1", + (Receiver::Handler)&Beta::Method1aHandler + }, + { + Beta::message2ID, + "message2", + (Receiver::Handler)&Beta::Method2Handler + }, + { + Beta::message3ID, + "message3", + (Receiver::Handler)&Beta::Method3Handler + } +}; + +Receiver::MessageHandlerSet + Beta::handlerSet( + ELEMENTS(Set_2), + Set_2, + Alpha::handlerSet + ); + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Gamma ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Gamma::Gamma(): + Beta(TrivialReceiverClassID, DefaultData) +{ + x = -3; +} + +Gamma::~Gamma() +{ +} + +void + Gamma::Method4Handler(Message*) +{ + x = 4; +} + +Gamma::SharedData + Gamma::DefaultData( + Gamma::ClassDerivations, + Gamma::handlerSet + ); +Derivation + Gamma::ClassDerivations(Beta::ClassDerivations,"Gamma"); + +const Receiver::HandlerEntry + Set_3[]= +{ + { + Gamma::message4ID, + "message4", + (Receiver::Handler)&Gamma::Method4Handler + } +}; + +Receiver::MessageHandlerSet + Gamma::handlerSet( + ELEMENTS(Set_3), + Set_3, + Beta::handlerSet + ); + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~ MessageHandlerSet ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +// +//############################################################################# +//############################################################################# +// +Logical + Receiver::MessageHandlerSet::TestClass() +{ + DEBUG_STREAM << "Starting Receiver::MessageHandlerSet test...\n"; + // + //-------------------------------- + // Test the inherited construction + //-------------------------------- + // + Test(Alpha::handlerSet.entryCount == Alpha::message1ID); + Test(Beta::handlerSet.entryCount == Beta::message3ID); + Test(Gamma::handlerSet.entryCount == Gamma::message4ID); + + // + //-------------------------- + // Verify that Find() works + //-------------------------- + // + Test( + Alpha::handlerSet.Find(Alpha::message1ID) + == (Receiver::Handler)&Alpha::Method1Handler + ); + Test(Alpha::handlerSet.Find(Gamma::message4ID) == Receiver::NullHandler); + + Test( + Beta::handlerSet.Find(Alpha::message1ID) + == (Receiver::Handler)&Beta::Method1aHandler + ); + Test( + Beta::handlerSet.Find(Beta::message2ID) + == (Receiver::Handler)&Beta::Method2Handler + ); + + Test( + Gamma::handlerSet.Find(Alpha::message1ID) + == (Receiver::Handler)&Beta::Method1aHandler + ); + Test( + Gamma::handlerSet.Find(Beta::message2ID) + == (Receiver::Handler)&Beta::Method2Handler + ); + Test( + Gamma::handlerSet.Find(Gamma::message4ID) + == (Receiver::Handler)&Gamma::Method4Handler + ); + return True; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Derivation ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +// +//############################################################################# +//############################################################################# +// +Logical + Derivation::TestClass() +{ + DEBUG_STREAM << "Starting Derivation test...\n"; + + Tell(" Derivation::TestClass() is stubbed out...\n"); + return False; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Receiver ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +// +//############################################################################# +//############################################################################# +// +Logical + Receiver::TestClass() +{ + DEBUG_STREAM << "Starting Receiver test...\n"; + + Alpha a; + Beta b; + Gamma c; + Message m(0, sizeof(Message)); + + // + // Check construction stability + // + ChainIteratorOf + i(Alpha::ClassDerivations.classDerivations); + Test(i.ReadAndNext() == &Beta::ClassDerivations); + Test(i.GetCurrent() == NULL); + + ChainIteratorOf + j(Beta::ClassDerivations.classDerivations); + Test(j.ReadAndNext() == &Gamma::ClassDerivations); + Test(j.GetCurrent() == NULL); + + ChainIteratorOf + k(Gamma::ClassDerivations.classDerivations); + Test(k.GetCurrent() == NULL); + + Test(a.x == -1); + Test(b.x == -2); + Test(c.x == -3); + + // + // Check basic method response + // + + a.Method0(); + b.Method0(); + c.Method0(); + Test(a.x == 0); + Test(b.x == 0); + Test(c.x == 0); + + a.Method1(); + b.Method1(); + c.Method1(); + Test(a.x == 1); + Test(b.x == 6); + Test(c.x == 6); + + m.messageID = Beta::message2ID; + a.Dispatch(&m); + b.Method2(); + c.Method2(); + Test(a.x == 1); + Test(b.x == 2); + Test(c.x == 2); + + b.Method3(); + c.Method3(); + Test(b.x == 3); + Test(c.x == 3); + + c.Method4(); + Test(c.x == 4); + + // + // Now test tapping. First, hierarchy... + // +#if 0 + MessageTap + *t = new MessageTap(a.GetDerivation(),f); + + Verify(t); + x = -1; + a.Method0(); + Test(a.x == 0); + Test(x == 1); + + x = -1; + b.Method1(); + Test(b.x == 6); + Test(x == 1); + + x = -1; + c.Method3(); + Test(c.x == 3); + Test(x == 1); + + // + // Now test multiple tap operation + // + MessageTap + *u = new MessageTap(b.GetDerivation(),g); + + x = -1; + y = -1; + a.Method0(); + Test(a.x == 0); + Test(x == 1); + Test(y == -1); + + x = -1; + b.Method1(); + Test(b.x == 6); + Test(x == 1); + Test(y == 2); + + x = -1; + y = -2; + c.Method3(); + Test(c.x == 3); + Test(x == 1); + Test(y == 2); + + delete t; + delete u; +#endif + return True; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ MessageTap ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +// +//############################################################################# +//############################################################################# +// +Logical + MessageTap::TestClass() +{ + DEBUG_STREAM << "Starting MessageTap test...\n"; +#if 0 + Alpha a; + Receiver::Message m; + + // + // Check universal tap + // + MessageTap + *t = new MessageTap(a.GetDerivation(),f); + + Test(t); + Test(t->scanCallback == f); + Test(t->matchingReceiver == NULL); + Test(t->matchingMessageID == Receiver::AnyMessageID); + + x = -1; + m.messageID = Receiver::AnyMessageID; + t->Scan(NULL,&m); + Test(x == 1); + + x = -1; + t->Scan(&a,&m); + Test(x == 1); + + x = -1; + m.messageID = Alpha::message1ID; + t->Scan(NULL,&m); + Test(x == 1); + + x = -1; + t->Scan(&a,&m); + Test(x == 1); + delete t; + + // + // Check message match tap + // + t = new MessageTap(a.GetDerivation(),f,2,NULL); + + Test(t); + Test(t->scanCallback == f); + Test(t->matchingReceiver == NULL); + Test(t->matchingMessageID == 2); + + x = -1; + m.messageID = Receiver::AnyMessageID; + t->Scan(NULL,&m); + Test(x == -1); + + t->Scan(&a,&m); + Test(x == -1); + + m.messageID = 2; + t->Scan(NULL,&m); + Test(x == 1); + + x = -1; + t->Scan(&a,&m); + Test(x == 1); + delete t; + + // + // Check receiver match tap + // + t = new MessageTap(a.GetDerivation(),f,Receiver::AnyMessageID,&a); + + Test(t); + Test(t->scanCallback == f); + Test(t->matchingReceiver == &a); + Test(t->matchingMessageID == Receiver::AnyMessageID); + + x = -1; + m.messageID = Receiver::AnyMessageID; + t->Scan(NULL,&m); + Test(x == -1); + + t->Scan(&a,&m); + Test(x == 1); + + x = -1; + m.messageID = Beta::message2ID; + t->Scan(NULL,&m); + Test(x == -1); + + t->Scan(&a,&m); + Test(x == 1); + delete t; + + // + // Check message&receiver match tap + // + t = new MessageTap(a.GetDerivation(),f,Beta::message2ID,&a); + + Test(t); + Test(t->scanCallback == f); + Test(t->matchingReceiver == &a); + Test(t->matchingMessageID == Beta::message2ID); + + x = -1; + m.messageID = Receiver::AnyMessageID; + t->Scan(NULL,&m); + Test(x == -1); + + t->Scan(&a,&m); + Test(x == -1); + + m.messageID = Beta::message2ID; + t->Scan(NULL,&m); + Test(x == -1); + + t->Scan(&a,&m); + Test(x == 1); + delete t; +#endif + return True; +} + diff --git a/CODE/RP/MUNGA/RECEIVER.THP b/CODE/RP/MUNGA/RECEIVER.THP new file mode 100644 index 0000000..89d4dbe --- /dev/null +++ b/CODE/RP/MUNGA/RECEIVER.THP @@ -0,0 +1,137 @@ +//===========================================================================// +// File: testclas.hh // +// Project: MUNGA Brick: Dynamic Dispatch, Event and Journalling // +// Contents: defines test classes for use by Dispatch and Events // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 11/03/94 JMA Initial coding. // +// 11/05/94 JMA Made compatible with GNU C++ // +//---------------------------------------------------------------------------// +// Copyright (C) 1994, Virtual World Entertainment, Inc. All Rights reserved // +// PROPRIETARY AND CONFIDENTIAL // +//===========================================================================// + +#if !defined(TESTCLAS_THP) +# define TESTCLAS_THP) + +# if !defined(RECEIVER_HPP) +# include "receiver.hpp" +# endif + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Alpha ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +class Alpha: + public Receiver +{ +protected: + static SharedData + DefaultData; + +public: + int + x; + + enum { + message0ID = Receiver::NextMessageID, + message1ID, + NextMessageID + }; + + static Derivation + ClassDerivations; + + Alpha( + ClassID class_ID = TrivialReceiverClassID, + SharedData &vdata = DefaultData); + ~Alpha(); + + void + Method0Handler(Message*); + void + Method1Handler(Message*); + + inline void Method0() + {Message m(message0ID,sizeof(Message)); Dispatch(&m);} + inline void Method1() + {Message m(message1ID,sizeof(Message)); Dispatch(&m);} + + static MessageHandlerSet + handlerSet; +}; + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Beta ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +class Beta: + public Alpha +{ +protected: + static SharedData + DefaultData; + +public: + enum { + message2ID=Alpha::NextMessageID, + message3ID, + NextMessageID + }; + + static Derivation + ClassDerivations; + + Beta( + ClassID class_id = TrivialReceiverClassID, + SharedData &vdata = DefaultData + ); + ~Beta(); + + void + Method1aHandler(Message*); + void + Method2Handler(Message*); + void + Method3Handler(Message*); + + inline void Method1() + {Message m(message1ID,sizeof(Message)); Dispatch(&m);} + inline void Method2() + {Message m(message2ID,sizeof(Message)); Dispatch(&m);} + inline void Method3() + {Message m(message3ID,sizeof(Message)); Dispatch(&m);} + + static MessageHandlerSet + handlerSet; +}; + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Gamma ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +class Gamma: + public Beta +{ +public: + enum { + message4ID=Beta::NextMessageID, + NextMessageID + }; + + static Derivation + ClassDerivations; + + Gamma(); + ~Gamma(); + + void + Method4Handler(Message*); + + inline void Method4() + {Message m(message4ID,sizeof(Message)); Dispatch(&m);} + + static MessageHandlerSet + handlerSet; + +protected: + static SharedData + DefaultData; +}; + +#endif diff --git a/CODE/RP/MUNGA/RECT2D.CPP b/CODE/RP/MUNGA/RECT2D.CPP new file mode 100644 index 0000000..9f667f4 --- /dev/null +++ b/CODE/RP/MUNGA/RECT2D.CPP @@ -0,0 +1,162 @@ +//===========================================================================// +// File: rect2d.cc // +// Project: MUNGA Brick: Math Library // +// Contents: Implementation details for vector classes // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 2/01/95 CPB Initial coding (copied from vector3d.cc) // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(RECT2D_HPP) +# include +#endif + +// +//------------------------------------------------------------------------ +// Creators +//------------------------------------------------------------------------ +// +Rectangle2D::Rectangle2D() +{ + MakeEmpty(); // uninitialized rectangles should be "empty" +} + +Rectangle2D::Rectangle2D( + Vector2DOf bl, + Vector2DOf tr + ) +{ + bottomLeft = bl; + topRight = tr; +} + +Rectangle2D::Rectangle2D( + int x1, int y1, int x2, int y2 + ) +{ + bottomLeft.x = x1; + bottomLeft.y = y1; + topRight.x = x2; + topRight.y = y2; +} + +// +//------------------------------------------------------------------------ +// Union (returns bounding rectangle) +//------------------------------------------------------------------------ +// +void + Rectangle2D::Union( + const Rectangle2D& r1, + const Rectangle2D& r2 + ) +{ + Check(this); + Check(&r1); + Check(&r2); + + if (r1.IsEmpty()) + { + if (r2.IsEmpty()) + { + MakeEmpty(); + } + else + { + bottomLeft = r2.bottomLeft; + topRight = r2.topRight; + } + } + else + { + if (r2.IsEmpty()) + { + bottomLeft = r1.bottomLeft; + topRight = r1.topRight; + } + else + { + bottomLeft.x = Min(r1.bottomLeft.x, r2.bottomLeft.x); + bottomLeft.y = Min(r1.bottomLeft.y, r2.bottomLeft.y); + topRight.x = Max(r1.topRight.x, r2.topRight.x); + topRight.y = Max(r1.topRight.y, r2.topRight.y); + } + } +} + +// +//------------------------------------------------------------------------ +// Intersection (returns overlapping section) +//------------------------------------------------------------------------ +// +void + Rectangle2D::Intersection( + const Rectangle2D& r1, + const Rectangle2D& r2 + ) +{ + Check(this); + Check(&r1); + Check(&r2); + + if (r1.IsEmpty()) + { + MakeEmpty(); + } + else + { + if (r2.IsEmpty()) + { + MakeEmpty(); + } + else + { + bottomLeft.x = Max(r1.bottomLeft.x, r2.bottomLeft.x); + bottomLeft.y = Max(r1.bottomLeft.y, r2.bottomLeft.y); + topRight.x = Min(r1.topRight.x, r2.topRight.x); + topRight.y = Min(r1.topRight.y, r2.topRight.y); + } + } +} + +// +//------------------------------------------------------------------------ +// Output stream operator +//------------------------------------------------------------------------ +// +ostream& + operator<<( + ostream& Stream, + const Rectangle2D& r + ) +{ + Check(&r); + return Stream << '(' << r.bottomLeft << ',' << r.topRight << ')'; +} + +// +//------------------------------------------------------------------------ +// TestInstance +//------------------------------------------------------------------------ +// +Logical + Rectangle2D::TestInstance() const +{ + return True; +} + +#if defined(TEST_CLASS) +# include "rect2d.tcp" +#endif + + + + diff --git a/CODE/RP/MUNGA/RECT2D.HPP b/CODE/RP/MUNGA/RECT2D.HPP new file mode 100644 index 0000000..834b52c --- /dev/null +++ b/CODE/RP/MUNGA/RECT2D.HPP @@ -0,0 +1,90 @@ +//===========================================================================// +// File: Rect2D.hh // +// Project: MUNGA Brick: Math Library // +// Contents: Interface specification for two-dimensional rectangle class // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 2/01/95 CPB Initial coding (started from Vector2D.hh) // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. All rights reserved // +// PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(RECT2D_HPP) +# define RECT2D_HPP + +# if !defined(VECTOR2D_HPP) +# include +# endif + + // Note that the coordinate system used here is such that + // (0,0) is in the lower left corner. + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Rectangle2D ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class Rectangle2D SIGNATURED + { + public: + Vector2DOf bottomLeft, topRight; + + Rectangle2D(); + Rectangle2D(Vector2DOf bl, Vector2DOf tr); + Rectangle2D(int x1, int y1, int x2, int y2); + ~Rectangle2D() + {} + + Logical + operator==(const Rectangle2D& r) const + {return ((bottomLeft == r.bottomLeft) && (topRight == r.topRight));} + Logical + operator!=(const Rectangle2D& r) const + {return ((bottomLeft != r.bottomLeft) || (topRight != r.topRight));} + + void + Union( + const Rectangle2D& r1, + const Rectangle2D& r2 + ); + + void + Intersection( + const Rectangle2D& r1, + const Rectangle2D& r2 + ); + + void + MakeEmpty() + { + Check(this); + bottomLeft.x = 1; + topRight.x = 0; + } + + Logical + IsEmpty() const + { + if ((bottomLeft.x > topRight.x) || (bottomLeft.y > topRight.y)) + { + return True; + } + else + { + return False; + } + } + + + friend ostream& + operator<<( + ostream& stream, + const Rectangle2D& r + ); + + Logical + TestInstance() const; + + static Logical + TestClass(); + }; +#endif diff --git a/CODE/RP/MUNGA/RECT2D.TCP b/CODE/RP/MUNGA/RECT2D.TCP new file mode 100644 index 0000000..cea24b1 --- /dev/null +++ b/CODE/RP/MUNGA/RECT2D.TCP @@ -0,0 +1,128 @@ +//===========================================================================// +// File: rect2d.tst // +// Project: MUNGA Brick: Math Library // +// Contents: Test code for two-dimensional rectangle class // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 2/01/94 CPB Initial coding (copied from vector3d.tst) // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +// +//########################################################################### +//########################################################################### +// +Logical + Rectangle2D::TestClass() +{ + DEBUG_STREAM << "Starting Rectangle2D test...\n"; + + // + //------------------------------------------------------------------- + // Constructors (and IsEmpty()) + //------------------------------------------------------------------- + // + { + Vector2DOf v1(0,0), v2(1,1); + + Rectangle2D a; + Check(&a); + Test(a.IsEmpty()); + + Rectangle2D b(v1,v2); + Check(&b); + Test(!b.IsEmpty()); + Test(b.bottomLeft == v1); + Test(b.topRight == v2); + + Rectangle2D c(0,1,2,3); + Check(&c); + Test(!c.IsEmpty()); + Test(c.bottomLeft.x == 0); + Test(c.bottomLeft.y == 1); + Test(c.topRight.x == 2); + Test(c.topRight.y == 3); + } + // + //------------------------------------------------------------------- + // Union + //------------------------------------------------------------------- + // + { + Rectangle2D a; + Rectangle2D b(0,0,2,2); + Rectangle2D c(1,1,3,3); + Rectangle2D d(10,10,11,11); + Rectangle2D e(2,3,4,5); + + e.Union(a,a); + Test(e.IsEmpty()); + + e.Union(a,b); + Test(e.bottomLeft == b.bottomLeft); + Test(e.topRight == b.topRight); + + e.Union(b,a); + Test(e.bottomLeft == b.bottomLeft); + Test(e.topRight == b.topRight); + + e.Union(b,c); + Test(e.bottomLeft == b.bottomLeft); + Test(e.topRight == c.topRight); + + e.Union(c,b); + Test(e.bottomLeft == b.bottomLeft); + Test(e.topRight == c.topRight); + + e.Union(b,d); + Test(e.bottomLeft == b.bottomLeft); + Test(e.topRight == d.topRight); + + e.Union(d,b); + Test(e.bottomLeft == b.bottomLeft); + Test(e.topRight == d.topRight); + } + // + //------------------------------------------------------------------- + // Intersection + //------------------------------------------------------------------- + // + { + Rectangle2D a; + Rectangle2D b(0,0,2,2); + Rectangle2D c(1,1,3,3); + Rectangle2D d(10,10,11,11); + Rectangle2D e(2,3,4,5); + + e.Intersection(a,a); + Test(e.IsEmpty()); + + e.Intersection(a,b); + Test(e.IsEmpty()); + + e.Intersection(b,a); + Test(e.IsEmpty()); + + e.Intersection(b,c); + Test(e.bottomLeft == c.bottomLeft); + Test(e.topRight == b.topRight); + + e.Intersection(c,b); + Test(e.bottomLeft == c.bottomLeft); + Test(e.topRight == b.topRight); + + e.Intersection(b,d); + Test(e.IsEmpty()); + + e.Intersection(d,b); + Test(e.IsEmpty()); + } + + return True; +} + + diff --git a/CODE/RP/MUNGA/REGISTRY.CPP b/CODE/RP/MUNGA/REGISTRY.CPP new file mode 100644 index 0000000..25837cc --- /dev/null +++ b/CODE/RP/MUNGA/REGISTRY.CPP @@ -0,0 +1,738 @@ +//===========================================================================// +// File: registry.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-1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(REGISTRY_HPP) +# include +#endif + +#if !defined(PLAYER_HPP) +# include +#endif + +#if !defined(MISSION_HPP) +# include +#endif + +// +// Registered classes... +// +#if !defined(TERRAIN_HPP) +# include +#endif + +#if !defined(CULTURAL_HPP) +# include +#endif + +#if !defined(DROPZONE_HPP) +# include +#endif + +#if !defined(EXPLODE_HPP) +# include +#endif + +#if !defined(DOORFRAM_HPP) +# include +#endif + +#if !defined(EYECANDY_HPP) +# include +#endif + +#if !defined(DIRECTOR_HPP) +# include +#endif + +#if !defined(CAMSHIP_HPP) +# include +#endif + +#if !defined(APP_HPP) + #include +#endif + +#if !defined(HOSTMGR_HPP) + #include +#endif + +//############################################################################# +//############################# Registry ################################ +//############################################################################# + +//############################################################################# +// Message Support +// +const Receiver::HandlerEntry + Registry::MessageHandlerEntries[]= +{ + { + Registry::MakeEntityMessageID, + "MakeEntity", + (Registry::Handler)&Registry::MakeEntityMessageHandler + } +}; + +Registry::MessageHandlerSet + Registry::MessageHandlers( + ELEMENTS(Registry::MessageHandlerEntries), + Registry::MessageHandlerEntries, + Receiver::MessageHandlers + ); + +//############################################################################# +// Shared Data support +// +Derivation + Registry::ClassDerivations( + Receiver::ClassDerivations, + "Registry" + ); + +Registry::SharedData + Registry::DefaultData( + Registry::ClassDerivations, + Registry::MessageHandlers + ); + +// +//############################################################################# +// Registry +//############################################################################# +// +Registry::Registry( + ClassID class_ID, + SharedData &shared_data +): + Receiver(class_ID, shared_data) +{ +} + +// +//############################################################################# +// Registry +//############################################################################# +// +Registry::Registry(): + Receiver(TrivialReceiverClassID, DefaultData) +{ +} + +// +//############################################################################# +// ~Registry +//############################################################################# +// +Registry::~Registry() +{ +} + +// +//############################################################################# +// TestInstance +//############################################################################# +// +Logical + Registry::TestInstance() const +{ + return IsDerivedFrom(ClassDerivations); +} + +// +//############################################################################# +// MakeEntity +//############################################################################# +// +Entity* + Registry::MakeEntity(Entity::MakeMessage *message) +{ + Check(this); + Check(message); + + Entity::SharedData *static_data = GetStaticData(message->classToCreate); + + if (static_data != NULL) + { + Check(static_data); + Check_Pointer(static_data->makeHandler); + return (*static_data->makeHandler)(message); + } + return NULL; +} + +// +//############################################################################# +// MakeTransferedEntity +//############################################################################# +// +Entity* + Registry::MakeTransferedEntity( + HostID, + EntityID, + void* + ) +{ + Fail("Registry::MakeTransferedEntity - under construction"); + return NULL; +} + +// +//############################################################################# +// MakeEntityReplacement +//############################################################################# +// +Entity* + Registry::MakeEntityReplacement( + HostID, + EntityID + ) +{ + Fail("Registry::MakeEntityReplacement - under construction"); + return NULL; +} + +// +//############################################################################# +// GetStaticData +//############################################################################# +// +Entity::SharedData* + Registry::GetStaticData(ClassID class_ID) +{ + switch (class_ID) + { + case TrivialEntityClassID: + return &Entity::DefaultData; + case DropZoneClassID: + return &DropZone::DefaultData; + case TerrainClassID: + return &Terrain::DefaultData; + case CulturalIconClassID: + return &CulturalIcon::DefaultData; + case LandmarkClassID: + return &Landmark::DefaultData; + case TeamClassID: + return &Team::DefaultData; + case UnscalableTerrainClassID: + return &UnscalableTerrain::DefaultData; + case ExplosionClassID: + return &Explosion::DefaultData; + case PlayerClassID: + return &Player::DefaultData; + case DoorFrameClassID: + return &DoorFrame::DefaultData; + case EyeCandyClassID: + return &EyeCandy::DefaultData; + case CameraShipClassID: + return &CameraShip::DefaultData; + case CameraDirectorClassID: + return &CameraDirector::DefaultData; + default: + return NULL; + } +} + +// +//############################################################################# +// GetStaticData +//############################################################################# +// +Player* + Registry::MakePlayer(Mission *mission) +{ + Check(mission); + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // See if we are a CameraShip + //~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + Enumeration player_flags = Player::DefaultFlags; + if (!strcmp(mission->GetGameModel(), "camera")) + { + player_flags |= Player::CameraShipPlayerFlag; + } + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // See if we are a MissionReview, CameraShipHost + // GameMachine CameraShip or regular Player! + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + Check(application); + HostManager *host_mgr = application->GetHostManager(); + Host *host_ptr = host_mgr->GetLocalHost(); + Check(host_ptr); + HostType host_type = host_ptr->GetHostType(); + + switch(host_type) + { + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Make A Player Which is a GameMachine Host + // i.e. VTV, Mech, CameraShip w/controls + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + case GameMachineHostType: + { + Player::MakeMessage make_player( + Player::MakeMessageID, + sizeof(Player::MakeMessage), + PlayerClassID, + EntityID::Null, + ResourceDescription::NullResourceID, + player_flags, + Origin::Identity, + mission->GetPlayerBitmapIndex() + ); + return new Player(&make_player); + } + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Make A CameraShip Or Mission Review + // Not a CameraShip to Run on a POD! + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + case CameraShipHostType: + case MissionReviewHostType: + { + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Add any extra flags for a director + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + player_flags |= CameraDirector::DefaultFlags; + CameraDirector::MakeMessage create_director( + CameraDirector::MakeMessageID, + sizeof(CameraDirector::MakeMessage), + CameraDirectorClassID, + EntityID::Null, + ResourceDescription::NullResourceID, + player_flags, + Origin::Identity, + mission->GetPlayerBitmapIndex() + ); + return new CameraDirector(&create_director); + } + } + return NULL; +} + +// +//############################################################################# +// MakeEntityMessageHandler +//############################################################################# +// +void + Registry::MakeEntityMessageHandler(MakeEntityMessage *message) +{ + Check(this); + Check(message); + Verify(message->messageID == MakeEntityMessageID); + + // + // Extract the make message + // + MemoryStream + memory_stream( + message, + message->messageLength + ); + Entity::MakeMessage + *make_message; + + memory_stream.AdvancePointer(sizeof(MakeEntityMessage)); + make_message = Cast_Object(Entity::MakeMessage*, memory_stream.GetPointer()); + Check(make_message); + + // + // Make the entity + // +#if DEBUG_LEVEL>0 + Entity *entity = MakeEntity(make_message); + if (entity) + { + Register_Object(entity); + } +#else + MakeEntity(make_message); +#endif +} + +// +//############################################################################# +// CreateStaticObjectStreamResource +//############################################################################# +// +ResourceDescription::ResourceID + Registry::CreateStaticObjectStreamResource( + NotationFile *notation_file, + ResourceFile *resource_file + ) +{ + Check(notation_file); + Check(resource_file); + + // + //-------------------------------------------------------------------------- + // Build the static object stream + //-------------------------------------------------------------------------- + // + RegistryObjectStream static_object_stream; + + Check(&static_object_stream); + static_object_stream.BuildFromNotationFile( + notation_file, + resource_file + ); + + // + //-------------------------------------------------------------------------- + // Add the resource + //-------------------------------------------------------------------------- + // + ResourceDescription *res_description; + + res_description = + resource_file->AddResourceMemoryStream( + "RegistryStaticObjectStream", + ResourceDescription::RegistryStaticObjectStreamResourceType, + 1, + ResourceDescription::Preload, + &static_object_stream + ); + Check(res_description); + return res_description->resourceID; +} + +// +//############################################################################# +// LoadStaticObjectStreamResource +//############################################################################# +// +void + Registry::LoadStaticObjectStreamResource() +{ + Check(this); + + // + //-------------------------------------------------------------------------- + // Create static objects + //-------------------------------------------------------------------------- + // + +#if 0 + // + // Get static object stream resource + // + ResourceDescription *resource_description; + + Check(application); + Check(application->GetResourceFile()); + resource_description = + application->GetResourceFile()->FindResourceDescription( + "RegistryStaticObjectStream", + ResourceDescription::RegistryStaticObjectStreamResourceType + ); + + if (resource_description != NULL) + { + Check(resource_description); + + // + // Parse the static object stream + // + RegistryObjectStream static_object_stream(resource_description); + + Check(&static_object_stream); + static_object_stream.CreateObjects(); + } +#else + // + // Load all static object streams + // + ResourceFile *resource_file; + ResourceDescription::ResourceID index, max_resource_ID; + + Check(application); + resource_file = application->GetResourceFile(); + Check(resource_file); + max_resource_ID = resource_file->GetMaxResourceID(); + + for (index = 0; index <= max_resource_ID; index++) + { + ResourceDescription *resource_description = + resource_file->FindResourceDescription(index); + if (resource_description) + { + Check(resource_description); + + // + // Load the static object streams + // + if ( + resource_description->resourceType == + ResourceDescription::RegistryStaticObjectStreamResourceType + ) + { + resource_description->Lock(); + // + // Parse the static object stream + // + RegistryObjectStream static_object_stream(resource_description); + + Check(&static_object_stream); + static_object_stream.CreateObjects(); + resource_description->Unlock(); + } + } + } + resource_file->ReleaseUnlockedResources(); +#endif +} + +//~~~~~~~~~~~~~~~~~~~~~~ Registry__MakeEntityMessage ~~~~~~~~~~~~~~~~~~~~~~~~~~ + +// +//############################################################################# +// Registry__MakeEntityMessage +//############################################################################# +// +Registry__MakeEntityMessage::Registry__MakeEntityMessage(size_t total_length): + Receiver::Message( + Registry::MakeEntityMessageID, + total_length + ) +{ +} + +// +//############################################################################# +// Make +//############################################################################# +// +Registry__MakeEntityMessage* + Registry__MakeEntityMessage::Make(Entity::MakeMessage *make_message) +{ + Check(make_message); + + // + // Allocate memory for the make message + // + size_t + total_length; + void + *buffer; + + total_length = + sizeof (Registry__MakeEntityMessage) + make_message->messageLength; + buffer = new unsigned char[total_length]; + Check_Pointer(buffer); + + // + // Build the make message + // + MemoryStream + memory_stream(buffer, total_length); + Registry__MakeEntityMessage + *make_entity_message; + + make_entity_message = + new (memory_stream.GetPointer()) Registry__MakeEntityMessage(total_length); + Check(make_entity_message); + + memory_stream.AdvancePointer(sizeof(Registry__MakeEntityMessage)); + Mem_Copy( + memory_stream.GetPointer(), + make_message, + make_message->messageLength, + memory_stream.GetBytesRemaining() + ); + + return make_entity_message; +} + +//############################################################################# +//####################### RegistryObjectStream ########################## +//############################################################################# + +// +//############################################################################# +//############################################################################# +// +RegistryObjectStream::RegistryObjectStream( + ResourceDescription *resource_description +): + PlugStream(resource_description) +{ +} + +// +//############################################################################# +//############################################################################# +// +RegistryObjectStream::RegistryObjectStream() +{ +} + +// +//############################################################################# +//############################################################################# +// +RegistryObjectStream::~RegistryObjectStream() +{ +} + +// +//############################################################################# +//############################################################################# +// +Logical + RegistryObjectStream::TestInstance() const +{ + PlugStream::TestInstance(); + return True; +} + +// +//############################################################################# +//############################################################################# +// +RegisteredClass* + RegistryObjectStream::MakeObjectImplementation(Enumeration class_ID) +{ + Check(this); + Verify(class_ID != RegisteredClass::NullClassID); + + RegisteredClass *object; + + switch (class_ID) + { + // + // Static resources ... + // + case RegisteredClass::ExplosionResourceTableClassID: + object = new ExplosionResourceTable(this); + break; + + // + // Inherited behavior + // + default: + object = PlugStream::MakeObjectImplementation(class_ID); + break; + } + return object; +} + +// +//############################################################################# +//############################################################################# +// +void + RegistryObjectStream::CreatedObjectImplementation( + RegisteredClass *object, + ObjectID object_ID + ) +{ + Check(this); + Check(object); + Verify(object_ID != NullObjectID); + + // + // Decide which index to add object to + // + switch (object->GetClassID()) + { + // + // Static resources ... + // + case RegisteredClass::ExplosionResourceTableClassID: + AddGlobalPlug(Cast_Object(Plug*, object), object_ID); + break; + + default: + break; + } +} + +// +//############################################################################# +//############################################################################# +// +void + RegistryObjectStream::BuildFromPageImplementation( + NameList *name_list, + Enumeration class_ID_enumeration, + ObjectID object_ID + ) +{ + Check(this); + Verify(class_ID_enumeration != RegisteredClass::NullClassID); + Verify(object_ID != NullObjectID); + + RegisteredClass::ClassID + class_ID = (RegisteredClass::ClassID)class_ID_enumeration; + + switch (class_ID) + { + // + // Static resources ... + // + case RegisteredClass::ExplosionResourceTableClassID: + ExplosionResourceTable::BuildFromPage(this, name_list, class_ID, object_ID); + break; + + // + // Inherited behavior + // + default: + PlugStream::BuildFromPageImplementation(name_list, class_ID, object_ID); + break; + } +} + +// +//############################################################################# +//############################################################################# +// +void + RegistryObjectStream::BuiltFromPageImplementation( + Enumeration class_ID, + ObjectID object_ID, + const CString &object_name + ) +{ + Check(this); + Verify(class_ID != RegisteredClass::NullClassID); + Verify(object_ID != NullObjectID); + Check(&object_name); + + // + // Decide which index to add object to + // + switch (class_ID) + { + case RegisteredClass::ExplosionResourceTableClassID: + AddGlobalObjectID(object_ID, object_name); + break; + + default: + break; + } +} + + diff --git a/CODE/RP/MUNGA/REGISTRY.HPP b/CODE/RP/MUNGA/REGISTRY.HPP new file mode 100644 index 0000000..c3694ff --- /dev/null +++ b/CODE/RP/MUNGA/REGISTRY.HPP @@ -0,0 +1,237 @@ +//===========================================================================// +// 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-1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(REGISTRY_HPP) +# define REGISTRY_HPP + +# if !defined(HOST_HPP) +# include +# endif + +# if !defined(OBJSTRM_HPP) +# include +# endif + +# if !defined(ENTITY_HPP) && 0 +# include +# endif + +# if !defined(ENTITYID_HPP) +# include +# endif + +# if !defined(RESOURCE_HPP) +# include +# endif + + //########################################################################## + //############################ Registry ############################## + //########################################################################## + + class Player; + class Registry__MakeEntityMessage; + class Entity; + class Entity__MakeMessage; + class Entity__SharedData; + + class Registry: + public Receiver + { + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Construction, Destruction, and Testing + // + public: + Registry( + ClassID class_ID, + SharedData &shared_data + ); + Registry(); + ~Registry(); + + Logical + TestInstance() const; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Entity creation + // + public: + // + //----------------------------------------------------------------------- + // MakeEntity + //----------------------------------------------------------------------- + // + Entity* + MakeEntity(Entity__MakeMessage *message); + + // + //----------------------------------------------------------------------- + // MakeTransferedEntity + // + // The registry creates an entity on this machine which + // represents the transfer of ownership from the old host to this + // host. + //----------------------------------------------------------------------- + // + Entity* + MakeTransferedEntity( + HostID old_entity_host, + EntityID old_entity_ID, + void *old_entity_state_data + ); + + // + //----------------------------------------------------------------------- + // MakeEntityReplacement + // + // If a host abnormally terminates there may be replicants + // hanging unattended by updates. The host manager attempts + // to create a replacement for the lost entity using the + // replicant as a recipe for the replacement. + //----------------------------------------------------------------------- + // + Entity* + MakeEntityReplacement( + HostID old_entity_host, + EntityID replicant_entity_ID + ); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Entity data access + // + public: + // + //----------------------------------------------------------------------- + // GetStaticData + // + // Provides an interface by which the static data for a class + // may be accessed. + //----------------------------------------------------------------------- + // + virtual Entity__SharedData* + GetStaticData(ClassID entity_class); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Player creation + // + public: + // + //----------------------------------------------------------------------- + // Create the player object + //----------------------------------------------------------------------- + // + virtual Player* + MakePlayer(Mission *mission); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Message Support + // + public: + enum { + MakeEntityMessageID = Receiver::NextMessageID, + NextMessageID + }; + + typedef Registry__MakeEntityMessage + MakeEntityMessage; + + static const HandlerEntry + MessageHandlerEntries[]; + static MessageHandlerSet + MessageHandlers; + + void + MakeEntityMessageHandler(MakeEntityMessage *message); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Shared Data Support + // + public: + static Derivation ClassDerivations; + static SharedData DefaultData; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Static object methods + // + public: + static ResourceDescription::ResourceID + CreateStaticObjectStreamResource( + NotationFile *notation_file, + ResourceFile *resource_file + ); + + void + LoadStaticObjectStreamResource(); + }; + + //~~~~~~~~~~~~~~~~~~~~~ Registry__MakeEntityMessage ~~~~~~~~~~~~~~~~~~~~~~~~ + + class Registry__MakeEntityMessage: + public Receiver::Message + { + public: + Registry__MakeEntityMessage(size_t total_length); + + static Registry__MakeEntityMessage* + Make(Entity__MakeMessage *message); + }; + + //########################################################################## + //##################### RegistryObjectStream ######################### + //########################################################################## + + class RegistryObjectStream: + public PlugStream + { + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Construction, Destruction and testing + // + public: + RegistryObjectStream(); + RegistryObjectStream(ResourceDescription *resource_description); + ~RegistryObjectStream(); + + Logical + TestInstance() const; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Implementations + // + private: + RegisteredClass* + MakeObjectImplementation(Enumeration class_ID); + + void + CreatedObjectImplementation( + RegisteredClass *object, + ObjectID object_ID + ); + + void + BuildFromPageImplementation( + NameList *entry_list, + Enumeration class_ID, + ObjectID object_ID + ); + + void + BuiltFromPageImplementation( + Enumeration class_ID, + ObjectID object_ID, + const CString &object_name_string + ); + }; + +#endif + diff --git a/CODE/RP/MUNGA/RENDERER.CPP b/CODE/RP/MUNGA/RENDERER.CPP new file mode 100644 index 0000000..fb6fb91 --- /dev/null +++ b/CODE/RP/MUNGA/RENDERER.CPP @@ -0,0 +1,1069 @@ +//===========================================================================// +// File: renderer.cc // +// Project: MUNGA Brick: Renderer Manager // +// Contents: Interface specification Renderer and Renderer Manager // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 11/21/94 ECH Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(RENDERER_HPP) +# include +#endif + +#if !defined(RNDORGN_HPP) +# include +#endif + +#if !defined(EXPLODE_HPP) +# include +#endif + +#if !defined(APP_HPP) + #include +#endif + +#if !defined(OBJSTRM_HPP) + #include +#endif + +#if !defined(HOSTMGR_HPP) + #include +#endif + +#if !defined(SUBSYSTM_HPP) + #include +#endif + +//############################################################################# +//############################ Renderer ################################# +//############################################################################# + +const RendererRate DefaultRendererRate = 30.0f; +const RendererComplexity MaxRendererComplexity = 3.0f; +const RendererComplexity MinRendererComplexity = 0.0f; +const RendererFrameBudget DefaultRendererFrameBudget = 0.14f; //0.12f; // 0.16f; + +//############################################################################# +// Message Support +// +const Receiver::HandlerEntry + Renderer::MessageHandlerEntries[]= +{ + { + Renderer::NotifyOfNewInterestingEntityMessageID, + "NotifyOfNewInterestingEntity", + (Renderer::Handler)&Renderer::NotifyOfNewInterestingEntityMessageHandler + }, + { + Renderer::NotifyOfBecomingUninterestingEntityMessageID, + "NotifyOfBecomingUninterestingEntity", + (Renderer::Handler)&Renderer::NotifyOfBecomingUninterestingEntityMessageHandler + }, + { + Renderer::StartEntityEffectMessageID, + "StartEntityEffect", + (Renderer::Handler)&Renderer::StartEntityEffectMessageHandler + }, + { + Renderer::StopAllEntityEffectsMessageID, + "StopAllEntityEffects", + (Renderer::Handler)&Renderer::StopAllEntityEffectsMessageHandler + }, + { + Renderer::StartEntityAlarmMessageID, + "StartEntityAlarm", + (Renderer::Handler)&Renderer::StartEntityAlarmMessageHandler + }, + { + Renderer::StopEntityAlarmMessageID, + "StopEntityAlarm", + (Renderer::Handler)&Renderer::StopEntityAlarmMessageHandler + } +}; + +Renderer::MessageHandlerSet + Renderer::MessageHandlers( + ELEMENTS(Renderer::MessageHandlerEntries), + Renderer::MessageHandlerEntries, + Receiver::MessageHandlers + ); + +//############################################################################# +// Shared Data Support +// +Derivation + Renderer::ClassDerivations( + Receiver::ClassDerivations, + "Renderer" + ); + +Renderer::SharedData + Renderer::DefaultData( + Renderer::ClassDerivations, + Renderer::MessageHandlers + ); + +// +//############################################################################# +// Renderer +//############################################################################# +// +Renderer::Renderer( + RendererRate calibration_rate, + RendererComplexity calibration_complexity, + RendererPriority calibration_priority, + InterestType interest_type, + InterestDepth depth_calibration, + ClassID class_ID, + SharedData &virtual_data +): + Receiver(class_ID, virtual_data), + rendererOriginSocket(NULL), + entitySocket(NULL) +{ + rendererStatus = InactiveRendererStatus; + + calibrationRate = calibration_rate; + calibrationFrameDuration = 1.0f / calibration_rate; + nextRenderTime = 0.0f; + + Verify(MinRendererComplexity < calibration_complexity); + Verify(calibration_complexity <= MaxRendererComplexity); + calibrationComplexity = calibration_complexity; + + calibrationPriority = calibration_priority; + interestType = interest_type; + depthCalibration = depth_calibration; + framePercentBudget = DefaultRendererFrameBudget; + Check_Fpu(); +} + +// +//############################################################################# +// ~Renderer +//############################################################################# +// +Renderer::~Renderer() +{ + UnlinkFromEntity(); + Check_Fpu(); +} + +// +//############################################################################# +// TestInstance +//############################################################################# +// +Logical + Renderer::TestInstance() const +{ + if (!IsDerivedFrom(ClassDerivations)) + { + return False; + } + Check(&rendererOriginSocket); + Check(&entitySocket); + return True; +} + +// +//############################################################################# +// LinkToEntity +//############################################################################# +// +void + Renderer::LinkToEntity(Entity *entity) +{ + Check(this); + Check(entity); + + // + //-------------------------------------------------------------------------- + // Unlink from current entity and add new entity + //-------------------------------------------------------------------------- + // + UnlinkFromEntity(); + entitySocket.Add(entity); + + // + //-------------------------------------------------------------------------- + // Make an interest origin for the given entity + //-------------------------------------------------------------------------- + // + RendererOrigin *rendererOrigin; + + rendererOrigin = + new RendererOrigin( + this, + entity, + interestType, + depthCalibration + ); + Register_Object(rendererOrigin); + + Check(application); + application->GetInterestManager()->AdoptInterestOrigin(rendererOrigin); + rendererOriginSocket.Add(rendererOrigin); + Check_Fpu(); +} + +// +//############################################################################# +// UnlinkFromEntity +//############################################################################# +// +void + Renderer::UnlinkFromEntity() +{ + Check(this); + + // + //-------------------------------------------------------------------------- + // Delete current interest origin + //-------------------------------------------------------------------------- + // + RendererOrigin *rendererOrigin; + + if ((rendererOrigin = rendererOriginSocket.GetCurrent()) != NULL) + { + Check(rendererOrigin); + + // + // Remove entity from socket + // + entitySocket.Remove(); + + // + // Delete the interest origin + // + Check(application); + Check(application->GetInterestManager()); + application->GetInterestManager()->OrphanInterestOrigin(rendererOrigin); + Unregister_Object(rendererOrigin); + delete rendererOrigin; + } + Check_Fpu(); +} + +// +//############################################################################# +// LoadMission +//############################################################################# +// +void + Renderer::LoadMission(Mission *mission) +{ + Check(this); + + Verify(rendererStatus == InactiveRendererStatus); + rendererStatus = LoadingRendererStatus; + nextRenderTime = Now(); + + Check(application); + application->GetRendererManager()->StartRenderer(this); + LoadMissionImplementation(mission); + Check_Fpu(); +} + +// +//############################################################################# +// Shutdown +//############################################################################# +// +void + Renderer::Shutdown() +{ + Check(this); + + // + //------------------------------------------------- + // Shutdown and unhook the renderer if it is active + //------------------------------------------------- + // + if (rendererStatus == InactiveRendererStatus) + { + return; + } + + rendererStatus = InactiveRendererStatus; + Check(application); + application->GetRendererManager()->StopRenderer(this); + + ShutdownImplementation(); + Check_Fpu(); +} + +// +//############################################################################# +// SetRendererStatusToRunning +//############################################################################# +// +void + Renderer::SetRendererStatusToRunning() +{ + Verify(rendererStatus == LoadingRendererStatus); + rendererStatus = RunningRendererStatus; + Check_Fpu(); +} + +// +//############################################################################# +// UpdateRendererOrigin +//############################################################################# +// +void + Renderer::UpdateInterestOrigin(Time target_render_time) +{ + Check(this); + + // + //-------------------------------------------------------------------------- + // If the renderer is inactive, skip it + //-------------------------------------------------------------------------- + // + if (rendererStatus == InactiveRendererStatus) + return; + + // + //-------------------------------------------------------------------------- + // Does the renderer need to run this frame to meet its frame rate? + //-------------------------------------------------------------------------- + // + if (nextRenderTime > target_render_time) + return; + + // + //-------------------------------------------------------------------------- + // Update the interest origin + //-------------------------------------------------------------------------- + // + Entity *entity; + RendererOrigin *rendererOrigin; + + entity = entitySocket.GetCurrent(); + Check(entity); + rendererOrigin = rendererOriginSocket.GetCurrent(); + Check(rendererOrigin); + rendererOrigin->Update(entity->GetInterestZoneID()); + Check_Fpu(); +} + +// +//############################################################################# +// Execute +//############################################################################# +// +void + Renderer::Execute( + Time target_render_time, + RendererComplexity complexity_update + ) +{ + Check(this); + + // + //-------------------------------------------------------------------------- + // If the renderer is suspended, skip it + //-------------------------------------------------------------------------- + // + if (rendererStatus == InactiveRendererStatus) + return; + + // + //-------------------------------------------------------------------------- + // Does the renderer need to run this frame to meet its frame rate? + //-------------------------------------------------------------------------- + // + if (nextRenderTime > target_render_time) + return; + // nextRenderTime += calibrationFrameDuration; + nextRenderTime = Now(); + nextRenderTime += calibrationFrameDuration; + + // + //-------------------------------------------------------------------------- + // Keep track of renderers frame budget + //-------------------------------------------------------------------------- + // + RendererFrameBudget start_percent; + RendererFrameBudget end_percent; + + start_percent = Get_Frame_Percent_Used(); + end_percent = start_percent + framePercentBudget; + Clamp(end_percent, 0.0f, 1.0f); + + // + //-------------------------------------------------------------------------- + // Get interest orign + //-------------------------------------------------------------------------- + // + RendererOrigin *rendererOrigin; + + rendererOrigin = rendererOriginSocket.GetCurrent(); + Check(rendererOrigin); + + // + //-------------------------------------------------------------------------- + // Get iterators for the renderers interest origin and execute + // renderer + //-------------------------------------------------------------------------- + // + RendererOrigin::InterestingEntityIterator + interesting_entity_iterator(rendererOrigin); + + Check(&interesting_entity_iterator); + + ExecuteImplementation( + complexity_update, + &interesting_entity_iterator + ); + + // + //-------------------------------------------------------------------------- + // If the renderer is under budget then run background if available + //-------------------------------------------------------------------------- + // + RendererFrameBudget current_frame_use; + for ( + current_frame_use = Get_Frame_Percent_Used(); + (start_percent < current_frame_use) && (current_frame_use < end_percent); + current_frame_use = Get_Frame_Percent_Used() + ) + { + if (!ExecuteBackground()) + break; + } + + Check_Fpu(); +} + +// +//############################################################################# +// NotifyOfNewInterestingEntityMessageHandler +//############################################################################# +// +void + Renderer::NotifyOfNewInterestingEntityMessageHandler( + NotifyOfNewInterestingEntityMessage *message + ) +{ + Check(this); + Check(message); + Verify(message->messageID == NotifyOfNewInterestingEntityMessageID); + + Entity *entity; + + if ((entity = message->GetInterestingEntity()) != NULL) + { + Check(entity); + NotifyOfNewInterestingEntity(entity); + } + Check_Fpu(); +} + +// +//############################################################################# +// NotifyOfBecomingUninterestingEntityMessageHandler +//############################################################################# +// +void + Renderer::NotifyOfBecomingUninterestingEntityMessageHandler( + NotifyOfBecomingUninterestingEntityMessage *message + ) +{ + Check(this); + Check(message); + Verify(message->messageID == NotifyOfBecomingUninterestingEntityMessageID); + + NotifyOfBecomingUninterestingEntity(message->GetUninterestingEntity()); + Check_Fpu(); +} + +// +//############################################################################# +// StartEntityEffectMessageHandler +//############################################################################# +// +void + Renderer::StartEntityEffectMessageHandler( + StartEntityEffectMessage *message + ) +{ + Check(this); + Check(message); + Verify(message->messageID == StartEntityEffectMessageID); + + // + //-------------------------------------------------------------------------- + // If the entity does not exists then return + //-------------------------------------------------------------------------- + // + Entity *entity; + if ((entity = message->GetEntity()) == NULL) + return; + Check(entity); + + // + //-------------------------------------------------------------------------- + // Get the effect model resource + //-------------------------------------------------------------------------- + // + ResourceDescription::ResourceID effect_resource_ID; + ResourceDescription *resource_description; + Explosion::ModelResource *model_resource; + + effect_resource_ID = message->GetResourceID(); + Check(application); + Check(application->GetResourceFile()); + resource_description = + application->GetResourceFile()->SearchList( + effect_resource_ID, + ResourceDescription::GameModelResourceType + ); + Check(resource_description); + resource_description->Lock(); + model_resource = + (Explosion::ModelResource*)resource_description->resourceAddress; + Check_Pointer(model_resource); + + // + //-------------------------------------------------------------------------- + // If an explosion resource table is being used then use it to set + // the resource + //-------------------------------------------------------------------------- + // + if (model_resource->resourceTableObjectID != NullObjectID) + { + // + // Get resource table pointer, + // Then set the appropriate resource ID + // + Plug *plug; + ExplosionResourceTable *resource_table; + ResourceDescription::ResourceID new_resource_ID; + + plug = PlugStreamManager::FindPlug(model_resource->resourceTableObjectID); + resource_table = Cast_Object(ExplosionResourceTable*, plug); + Check(resource_table); + new_resource_ID = resource_table->FindResourceID(entity); + if (new_resource_ID != ResourceDescription::NullResourceID) + { + effect_resource_ID = new_resource_ID; + } + } + + // + //-------------------------------------------------------------------------- + // Call the start effect implementation + //-------------------------------------------------------------------------- + // + StartEntityEffectImplementation( + entity, + message->GetDamageZone(), + effect_resource_ID + ); + resource_description->Unlock(); +} + +// +//############################################################################# +// StopAllEntityEffectsMessageHandler +//############################################################################# +// +void + Renderer::StopAllEntityEffectsMessageHandler( + StopAllEntityEffectsMessage *message + ) +{ + Check(this); + Check(message); + Verify(message->messageID == StopAllEntityEffectsMessageID); + + Entity *entity; + if ((entity = message->GetEntity()) != NULL) + { + Check(entity); + StopAllEntityEffectsImplementation(entity); + } +} + +// +//############################################################################# +// StartEntityAlarmMessageHandler +//############################################################################# +// +void + Renderer::StartEntityAlarmMessageHandler( + StartEntityAlarmMessage *message + ) +{ + Check(this); + Check(message); + Verify(message->messageID == StartEntityAlarmMessageID); + + Entity *entity; + if ((entity = message->GetEntity()) != NULL) + { + Check(entity); + StartEntityAlarmImplementation( + entity, + message->GetSubsystem(), + message->GetCondition(), + message->GetResourceID() + ); + } +} + +// +//############################################################################# +// StopEntityAlarmMessageHandler +//############################################################################# +// +void + Renderer::StopEntityAlarmMessageHandler( + StopEntityAlarmMessage *message + ) +{ + Check(this); + Check(message); + Verify(message->messageID == StopEntityAlarmMessageID); + + Entity *entity; + if ((entity = message->GetEntity()) != NULL) + { + Check(entity); + StopEntityAlarmImplementation( + entity, + message->GetSubsystem(), + message->GetCondition() + ); + } +} + +// +//############################################################################# +// ExecuteImplementation +//############################################################################# +// +void + Renderer::ExecuteImplementation( + RendererComplexity, + RendererOrigin::InterestingEntityIterator* + ) +{ + Fail("Renderer::ExecuteImplementation - Should never reach here"); +} + +// +//############################################################################# +// LoadMissionImplementation +//############################################################################# +// +void + Renderer::LoadMissionImplementation(Mission*) +{ + Fail("Renderer::LoadMissionImplementation - Should never reach here"); +} + +// +//############################################################################# +// ShutdownImplementation +//############################################################################# +// +void + Renderer::ShutdownImplementation() +{ + Fail("Renderer::ShutdownImplementation - Should never reach here"); +} + +//############################################################################# +//######################### RendererManager ############################# +//############################################################################# + +// +//############################################################################# +// RendererManager +//############################################################################# +// +RendererManager::RendererManager(): + Receiver(RendererManagerClassID, DefaultData), + renderers(NULL) +{ +} + +// +//############################################################################# +// ~RendererManager +//############################################################################# +// +RendererManager::~RendererManager() +{ +} + +// +//############################################################################# +// TestInstance +//############################################################################# +// +Logical + RendererManager::TestInstance() const +{ + Receiver::TestInstance(); + Check(&renderers); + Check_Fpu(); + return True; +} + +// +//############################################################################# +// StartRenderer +//############################################################################# +// +void + RendererManager::StartRenderer(Renderer *renderer) +{ + Check(this); + Check(renderer); + + #if DEBUG_LEVEL>0 + SChainIterator iterator(&renderers); + Verify(iterator.IsPlugMember(renderer) == False); + #endif + + renderers.Add(renderer); + Check_Fpu(); +} + +// +//############################################################################# +// StopRenderer +//############################################################################# +// +void + RendererManager::StopRenderer(Renderer *renderer) +{ + Check(this); + Check(renderer); + + #if DEBUG_LEVEL>0 + { + SChainIteratorOf iterator(&renderers); + Verify(iterator.IsPlugMember(renderer) == True); + } + #endif + + SChainIteratorOf iterator(&renderers); + iterator.RemovePlug(renderer); + Check_Fpu(); +} + +// +//############################################################################# +// AreRenderersRunning +//############################################################################# +// +Logical + RendererManager::AreRenderersRunning() +{ + Check(this); + + Renderer + *renderer; + SChainIteratorOf + renderers_iterator(&renderers); + + if (renderers_iterator.GetCurrent() == NULL) + return False; + + while ((renderer = renderers_iterator.ReadAndNext()) != NULL) + { + Check(renderer); + if (renderer->GetRendererStatus() != RunningRendererStatus) + return False; + } + Check_Fpu(); + return True; +} + +// +//############################################################################# +// UpdateInterestOrigins +//############################################################################# +// +void + RendererManager::UpdateInterestOrigins(Time target_render_time) +{ + Check(this); + + // + // HACK - under construction, does not include complexity or priorities + // + Renderer + *renderer; + SChainIteratorOf + renderers_iterator(&renderers); + + while ((renderer = renderers_iterator.ReadAndNext()) != NULL) + { + Check(renderer); + renderer->UpdateInterestOrigin(target_render_time); + } + Check_Fpu(); +} + +// +//############################################################################# +// Execute +//############################################################################# +// +void + RendererManager::Execute( + Time target_render_time, + Time, + Time + ) +{ + Check(this); + + // + // HACK - under construction, does not include complexity or priorities + // + Renderer + *renderer; + RendererComplexity + complexity_update; + SChainIteratorOf + renderers_iterator(&renderers); + + while ((renderer = renderers_iterator.ReadAndNext()) != NULL) + { + Check(renderer); + + // + // Calculate current complexity + // HACK - use calibration complexity for now + // + complexity_update = renderer->GetCalibrationComplexity(); + + // + // Execute + // + renderer->Execute(target_render_time, complexity_update); + } + Check_Fpu(); +} + +// +//############################################################################# +// CompleteCycles +//############################################################################# +// +void + RendererManager::CompleteCycles() +{ + Check(this); + + Renderer + *renderer; + SChainIteratorOf + renderers_iterator(&renderers); + + while ((renderer = renderers_iterator.ReadAndNext()) != NULL) + { + Check(renderer); + renderer->CompleteCycle(); + } + Check_Fpu(); +} + +// +//############################################################################# +// PostRendererEvent +//############################################################################# +// +void + RendererManager::PostRendererEvent( + Entity *entity, + Receiver::Message *message + ) +{ + Check(this); + Check(entity); + Check(message); + + Renderer + *renderer; + SChainIteratorOf + renderers_iterator(&renderers); + + while ((renderer = renderers_iterator.ReadAndNext()) != NULL) + { + Check(renderer); + Check(application); + Check(application->GetInterestManager()); + application->GetInterestManager()->PostRendererEvent( + entity, + renderer, + message + ); + } +} + +//~~~~~~~~~~~~~~~~~ Renderer__NotifyOfNewInterestingEntityMessage ~~~~~~~~~~~~~ + +Renderer__NotifyOfNewInterestingEntityMessage:: + Renderer__NotifyOfNewInterestingEntityMessage( + Entity *interesting_entity + ): + Receiver::Message( + Renderer::NotifyOfNewInterestingEntityMessageID, + sizeof(Renderer__NotifyOfNewInterestingEntityMessage) + ) +{ + Check(interesting_entity); + entityID = interesting_entity->GetEntityID(); + Check_Fpu(); +} + +Entity* + Renderer__NotifyOfNewInterestingEntityMessage::GetInterestingEntity() +{ + Check(this); + Check(application); + Check(application->GetHostManager()); + + Check_Fpu(); + return application->GetHostManager()->GetEntityPointer(entityID); +} + +//~~~~~~~~~~~~~~ Renderer__NotifyOfBecomingUninterestingEntityMessage ~~~~~~~~~ + +Renderer__NotifyOfBecomingUninterestingEntityMessage:: + Renderer__NotifyOfBecomingUninterestingEntityMessage( + Entity *uninteresting_entity + ): + Receiver::Message( + Renderer::NotifyOfBecomingUninterestingEntityMessageID, + sizeof(Renderer__NotifyOfBecomingUninterestingEntityMessage) + ) +{ + uninterestingEntity = uninteresting_entity; + Check_Fpu(); +} + +//~~~~~~~~~~~~~~~~~~~~~~~ Renderer__EntityMessage ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Renderer__EntityMessage::Renderer__EntityMessage( + Receiver::MessageID message_ID, + size_t message_size, + Entity *entity +): + Receiver::Message( + message_ID, + message_size + ) +{ + Check(entity); + entityID = entity->GetEntityID(); +} + +Entity* + Renderer__EntityMessage::GetEntity() +{ + Check(this); + Check(application); + Check(application->GetHostManager()); + return application->GetHostManager()->GetEntityPointer(entityID); +} + +//~~~~~~~~~~~~~~~~~~ Renderer__StartEntityEffectMessage ~~~~~~~~~~~~~~~~~~~~~~~ + +Renderer__StartEntityEffectMessage::Renderer__StartEntityEffectMessage( + Entity *entity, + DamageZone *damage_zone, + ResourceDescription::ResourceID resource_ID +): + Renderer__EntityMessage( + Renderer::StartEntityEffectMessageID, + sizeof(Renderer__StartEntityEffectMessage), + entity + ) +{ + Check(damage_zone); + Verify(resource_ID != ResourceDescription::NullResourceID); + damageZone = damage_zone; + resourceID = resource_ID; +} + +//~~~~~~~~~~~~~~~~~~ Renderer__StopAllEntityEffectsMessage ~~~~~~~~~~~~~~~~~~~~ + +Renderer__StopAllEntityEffectsMessage::Renderer__StopAllEntityEffectsMessage( + Entity *entity +): + Renderer__EntityMessage( + Renderer::StopAllEntityEffectsMessageID, + sizeof(Renderer__StopAllEntityEffectsMessage), + entity + ) +{ +} + +//~~~~~~~~~~~~~~~~~~ Renderer__StartEntityAlarmMessage ~~~~~~~~~~~~~~~~~~~~~~~~ + +Renderer__StartEntityAlarmMessage::Renderer__StartEntityAlarmMessage( + Entity *entity, + Subsystem *alarm_subsystem, + Enumeration alarm_condition, + ResourceDescription::ResourceID resource_ID +): + Renderer__EntityMessage( + Renderer::StartEntityAlarmMessageID, + sizeof(Renderer__StartEntityAlarmMessage), + entity + ) +{ + Check(alarm_subsystem); + #if DEBUG_LEVEL>0 + if (resource_ID == ResourceDescription::NullResourceID) + { + Dump(alarm_subsystem->GetClassID()); + Dump(alarm_condition); + } + #endif + Warn(resource_ID == ResourceDescription::NullResourceID); // HACK - ECH Why is this sometimes NULL? + subsystem = alarm_subsystem; + condition = alarm_condition; + resourceID = resource_ID; +} + +//~~~~~~~~~~~~~~~~~~ Renderer__StopEntityAlarmMessage ~~~~~~~~~~~~~~~~~~~~~~~~~ + +Renderer__StopEntityAlarmMessage::Renderer__StopEntityAlarmMessage( + Entity *entity, + Subsystem *alarm_subsystem, + Enumeration alarm_condition +): + Renderer__EntityMessage( + Renderer::StopEntityAlarmMessageID, + sizeof(Renderer__StopEntityAlarmMessage), + entity + ) +{ + Check(alarm_subsystem); + subsystem = alarm_subsystem; + condition = alarm_condition; +} + +#ifdef TEST_CLASS +# include "renderer.tcp" +#endif + diff --git a/CODE/RP/MUNGA/RENDERER.HPP b/CODE/RP/MUNGA/RENDERER.HPP new file mode 100644 index 0000000..afc8dc5 --- /dev/null +++ b/CODE/RP/MUNGA/RENDERER.HPP @@ -0,0 +1,782 @@ +//===========================================================================// +// File: renderer.hpp // +// Project: MUNGA Brick: Renderer Manager // +// Contents: Interface specification Renderer and Renderer Manager // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 11/21/94 ECH Initial coding. // +// 01/22/95 ECH Added NotifyOfBecomingUninterestingEntity // +// 05/25/95 CPB Moved GetLinkedEntity into public accessability for gauges // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(RENDERER_HPP) +# define RENDERER_HPP + +# if !defined(INTEREST_HPP) +# include +# endif + +# if !defined(RNDORGN_HPP) +# include +# endif + +# if !defined(RESOURCE_HPP) +# include +# endif + + class DamageZone; + class Subsystem; + + //~~~~~~~~~~~~~~~~~~~~~~~~~ Renderer support types ~~~~~~~~~~~~~~~~~~~~~~~~~ + + typedef Scalar RendererRate; + extern const RendererRate DefaultRendererRate; + + typedef Scalar RendererComplexity; + extern const RendererComplexity MaxRendererComplexity; + extern const RendererComplexity MinRendererComplexity; + + typedef Scalar RendererFrameBudget; + extern const RendererFrameBudget DefaultRendererFrameBudget; + + enum RendererPriority + { + LowRendererPriority = 0, + DefaultRendererPriority, + HighRendererPriority + }; + + enum RendererStatus + { + InactiveRendererStatus, + LoadingRendererStatus, + RunningRendererStatus + }; + + //########################################################################## + //########################### Renderer ############################### + //########################################################################## + + class Renderer__NotifyOfNewInterestingEntityMessage; + class Renderer__NotifyOfBecomingUninterestingEntityMessage; + + class Renderer__StartEntityEffectMessage; + class Renderer__StopAllEntityEffectsMessage; + class Renderer__StartEntityAlarmMessage; + class Renderer__StopEntityAlarmMessage; + + class Renderer: + public Receiver + { + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Destruction, and Testing + // + public: + ~Renderer(); + + Logical + TestInstance() const; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Control and processing + // + public: + // + //----------------------------------------------------------------------- + // LoadMission, Shutdown + //----------------------------------------------------------------------- + // + void + LoadMission(Mission *mission); + void + Shutdown(); + + // + //----------------------------------------------------------------------- + // LinkToEntity + // + // This method links the renderer to an entity. Overrides must call + // the inherited method. + //----------------------------------------------------------------------- + // + virtual void + LinkToEntity(Entity *entity); + + // + //----------------------------------------------------------------------- + // UnlinkFromEntity + //----------------------------------------------------------------------- + // + virtual void + UnlinkFromEntity(); + + // + //----------------------------------------------------------------------- + // SetRendererStatusToRunning + //----------------------------------------------------------------------- + // + void + SetRendererStatusToRunning(); + + // + //----------------------------------------------------------------------- + // UpdateInterestOrigin + //----------------------------------------------------------------------- + // + void + UpdateInterestOrigin(Time target_render_time); + + // + //----------------------------------------------------------------------- + // Execute + //----------------------------------------------------------------------- + // + void + Execute( + Time target_render_time, + RendererComplexity complexity_update + ); + virtual Logical + ExecuteBackground(); + + // + //----------------------------------------------------------------------- + // Complete a rendering cycle (starts new frame) + //----------------------------------------------------------------------- + // + virtual Logical + CompleteCycle(); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Accessors + // + public: + // + //----------------------------------------------------------------------- + // GetLinkedEntity + //----------------------------------------------------------------------- + // + Entity* + GetLinkedEntity(); + + // + //----------------------------------------------------------------------- + // GetRendererStatus + //----------------------------------------------------------------------- + // + RendererStatus + GetRendererStatus(); + + // + //----------------------------------------------------------------------- + // Misc + //----------------------------------------------------------------------- + // + RendererComplexity + GetCalibrationComplexity(); + Time + GetCalibrationFrameDuration(); + RendererRate + GetCalibrationRate(); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Interest Manager support + // + public: + // + //----------------------------------------------------------------------- + // NotifyOfNewInterestingEntity + //----------------------------------------------------------------------- + // + virtual void + NotifyOfNewInterestingEntity(Entity *) {} + + // + //----------------------------------------------------------------------- + // NotifyOfBecomingUninterestingEntity + //----------------------------------------------------------------------- + // + virtual void + NotifyOfBecomingUninterestingEntity(Entity *) {} + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Message Support + // + public: + enum { + NotifyOfNewInterestingEntityMessageID = Receiver::NextMessageID, + NotifyOfBecomingUninterestingEntityMessageID, + StartEntityEffectMessageID, + StopAllEntityEffectsMessageID, + StartEntityAlarmMessageID, + StopEntityAlarmMessageID, + NextMessageID + }; + + typedef Renderer__NotifyOfNewInterestingEntityMessage + NotifyOfNewInterestingEntityMessage; + typedef Renderer__NotifyOfBecomingUninterestingEntityMessage + NotifyOfBecomingUninterestingEntityMessage; + typedef Renderer__StartEntityEffectMessage + StartEntityEffectMessage; + typedef Renderer__StopAllEntityEffectsMessage + StopAllEntityEffectsMessage; + typedef Renderer__StartEntityAlarmMessage + StartEntityAlarmMessage; + typedef Renderer__StopEntityAlarmMessage + StopEntityAlarmMessage; + + static const HandlerEntry + MessageHandlerEntries[]; + static MessageHandlerSet + MessageHandlers; + + void + NotifyOfNewInterestingEntityMessageHandler( + NotifyOfNewInterestingEntityMessage *message + ); + void + NotifyOfBecomingUninterestingEntityMessageHandler( + NotifyOfBecomingUninterestingEntityMessage *message + ); + void + StartEntityEffectMessageHandler( + StartEntityEffectMessage *message + ); + void + StopAllEntityEffectsMessageHandler( + StopAllEntityEffectsMessage *message + ); + void + StartEntityAlarmMessageHandler( + StartEntityAlarmMessage *message + ); + void + StopEntityAlarmMessageHandler( + StopEntityAlarmMessage *message + ); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Shared Data Support + // + public: + static Derivation ClassDerivations; + static SharedData DefaultData; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Construction + // + protected: + // + //----------------------------------------------------------------------- + // Construction + // + // Where calibration_rate indicates the update rate, and + // calibration_complexity indicates an arbitrary "maximum" complexity + // level passed to the renderer. The renderer manager will dynamically + // vary the value of complexity based on the actual frame rate that the + // renderer is able to maintain (if the total system load exceeds + // 100% of the maximum, each renderer's actual frame rate will drop + // below the requested rate: the renderer manager will detect this and + // lower the complexity value). The renderer manager will then + // periodically invoke the renderer's execute function, passing it the + // value indicated in complexity. + //----------------------------------------------------------------------- + // + Renderer( + RendererRate calibration_rate, + RendererComplexity calibration_complexity, + RendererPriority calibration_priority, + InterestType interest_type, + InterestDepth depth_calibration, + ClassID class_ID=TrivialReceiverClassID, + SharedData &virtual_data=DefaultData + ); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Protected accessors + // + protected: + // + //----------------------------------------------------------------------- + // GetInterestOrigin + //----------------------------------------------------------------------- + // + RendererOrigin* + GetInterestOrigin(); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Protected implementations + // + protected: + // + //----------------------------------------------------------------------- + // Execute + // + // This method is called by the rendering manager to execute renderer + // updates. Overrides must call the inherited method. + //----------------------------------------------------------------------- + // + virtual void + ExecuteImplementation( + RendererComplexity complexity_update, + RendererOrigin::InterestingEntityIterator *iterator + ); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Private implementations + // + private: + virtual void + LoadMissionImplementation(Mission *mission); + virtual void + ShutdownImplementation(); + virtual void + StartEntityEffectImplementation( + Entity *entity, + DamageZone *damage_zone, + ResourceDescription::ResourceID resource_ID + ) + {} + virtual void + StopAllEntityEffectsImplementation(Entity *entity) + {} + virtual void + StartEntityAlarmImplementation( + Entity *entity, + Subsystem *subsystem, + Enumeration condition, + ResourceDescription::ResourceID resource_ID + ) + {} + virtual void + StopEntityAlarmImplementation( + Entity *entity, + Subsystem *subsystem, + Enumeration condition + ) + {} + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Private data + // + private: + // + // Current running state of the renderer + // + RendererStatus + rendererStatus; + + // + // Renderer frame rate related valriables + // + RendererRate + calibrationRate; + Time + calibrationFrameDuration, + nextRenderTime; + + // + // Renderer complexity, depth, and priority + // control related variables + // + RendererComplexity + calibrationComplexity; + RendererPriority + calibrationPriority; + InterestType + interestType; + InterestDepth + depthCalibration; + RendererFrameBudget + framePercentBudget; + + // + // Sockets + // + SlotOf + rendererOriginSocket; + SlotOf + entitySocket; + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Renderer inlines ~~~~~~~~~~~~~~~~~~~~~~~~~~ + + inline Entity* + Renderer::GetLinkedEntity() + { + Check(&entitySocket); + return entitySocket.GetCurrent(); + } + + inline RendererOrigin* + Renderer::GetInterestOrigin() + { + Check(&rendererOriginSocket); + return rendererOriginSocket.GetCurrent(); + } + + inline RendererStatus + Renderer::GetRendererStatus() + { + Check(this); + return rendererStatus; + } + + inline Logical + Renderer::CompleteCycle() + { + Check(this); + return True; + } + + inline RendererComplexity + Renderer::GetCalibrationComplexity() + { + Check(this); + return calibrationComplexity; + } + + inline Time + Renderer::GetCalibrationFrameDuration() + { + Check(this); + return calibrationFrameDuration; + } + + inline RendererRate + Renderer::GetCalibrationRate() + { + Check(this); + return calibrationRate; + } + + inline Logical + Renderer::ExecuteBackground() + { + Check(this); + return False; + } + + //########################################################################## + //######################## RendererManager ########################### + //########################################################################## + + class RendererManager: + public Receiver + { + friend class Renderer; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Construction, Destruction. Testing + // + public: + RendererManager(); + ~RendererManager(); + + Logical + TestInstance() const; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Control, and processing + // + public: + // + //----------------------------------------------------------------------- + // UpdateInterestOrigins + // + // Called by the application to update the renderers interest origins + // before the interest manager performs its execute method. + //----------------------------------------------------------------------- + // + void + UpdateInterestOrigins(Time target_render_time); + + // + //----------------------------------------------------------------------- + // Execute + // + // Perform renderer management functions + //----------------------------------------------------------------------- + // + void + Execute( + Time target_render_time, + Time target_frame_duration, + Time actual_frame_duration + ); + + // + //----------------------------------------------------------------------- + // Complete Cycle + // + // Perform renderer complete cycle functions + //----------------------------------------------------------------------- + // + void + CompleteCycles(); + + // + //----------------------------------------------------------------------- + // AreRenderersRunning + //----------------------------------------------------------------------- + // + Logical + AreRenderersRunning(); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Effects and Alarms + // + public: + void + StartEntityEffect( + Entity *entity, + DamageZone *damage_zone, + ResourceDescription::ResourceID resource_ID + ); + + void + StopAllEntityEffects(Entity *entity); + + void + StartEntityAlarm( + Entity *entity, + Subsystem *subsystem, + Enumeration condition, + ResourceDescription::ResourceID resource_ID + ); + + void + StopEntityAlarm( + Entity *entity, + Subsystem *subsystem, + Enumeration condition + ); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Private methods + // + private: + void + StartRenderer(Renderer *renderer); + void + StopRenderer(Renderer *renderer); + + void + RendererManager::PostRendererEvent( + Entity *entity, + Receiver::Message *message + ); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Private data + // + private: + SChainOf + renderers; + }; + + //~~~~~~~~~~~~~~ Renderer__NotifyOfNewInterestingEntityMessage ~~~~~~~~~~~~~ + + class Renderer__NotifyOfNewInterestingEntityMessage: + public Receiver::Message + { + public: + Renderer__NotifyOfNewInterestingEntityMessage( + Entity *interesting_entity + ); + + Entity* + GetInterestingEntity(); + + private: + EntityID + entityID; + }; + + //~~~~~~~~~~ Renderer__NotifyOfBecomingUninterestingEntityMessage ~~~~~~~~~~ + + class Renderer__NotifyOfBecomingUninterestingEntityMessage: + public Receiver::Message + { + public: + Renderer__NotifyOfBecomingUninterestingEntityMessage( + Entity *uninteresting_entity + ); + + Entity* + GetUninterestingEntity() + {return uninterestingEntity;} + + private: + Entity + *uninterestingEntity; + }; + + //~~~~~~~~~~~~~~~~~~~~~~~ Renderer__EntityMessage ~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class Renderer__EntityMessage: + public Receiver::Message + { + public: + Renderer__EntityMessage( + Receiver::MessageID message_ID, + size_t message_size, + Entity *entity + ); + + Entity* + GetEntity(); + + private: + EntityID + entityID; + }; + + //~~~~~~~~~~~~~~~~~~ Renderer__StartEntityEffectMessage ~~~~~~~~~~~~~~~~~~~~ + + class Renderer__StartEntityEffectMessage: + public Renderer__EntityMessage + { + public: + Renderer__StartEntityEffectMessage( + Entity *entity, + DamageZone *damage_zone, + ResourceDescription::ResourceID resource_ID + ); + + DamageZone* + GetDamageZone() + {return damageZone;} + ResourceDescription::ResourceID + GetResourceID() + {return resourceID;} + + private: + DamageZone + *damageZone; + ResourceDescription::ResourceID + resourceID; + }; + + //~~~~~~~~~~~~~~~~~~ Renderer__StopAllEntityEffectsMessage ~~~~~~~~~~~~~~~~~ + + class Renderer__StopAllEntityEffectsMessage: + public Renderer__EntityMessage + { + public: + Renderer__StopAllEntityEffectsMessage(Entity *entity); + }; + + //~~~~~~~~~~~~~~~~~~ Renderer__StartEntityAlarmMessage ~~~~~~~~~~~~~~~~~~~~~ + + class Renderer__StartEntityAlarmMessage: + public Renderer__EntityMessage + { + public: + Renderer__StartEntityAlarmMessage( + Entity *entity, + Subsystem *alarm_subsystem, + Enumeration alarm_condition, + ResourceDescription::ResourceID resource_ID + ); + + Subsystem* + GetSubsystem() + {return subsystem;} + Enumeration + GetCondition() + {return condition;} + ResourceDescription::ResourceID + GetResourceID() + {return resourceID;} + + private: + Subsystem + *subsystem; + Enumeration + condition; + ResourceDescription::ResourceID + resourceID; + }; + + //~~~~~~~~~~~~~~~~~~ Renderer__StopEntityAlarmMessage ~~~~~~~~~~~~~~~~~~~~~~ + + class Renderer__StopEntityAlarmMessage: + public Renderer__EntityMessage + { + public: + Renderer__StopEntityAlarmMessage( + Entity *entity, + Subsystem *alarm_subsystem, + Enumeration alarm_condition + ); + + Subsystem* + GetSubsystem() + {return subsystem;} + Enumeration + GetCondition() + {return condition;} + + private: + Subsystem + *subsystem; + Enumeration + condition; + }; + + //~~~~~~~~~~~~~~~~~~~~~~ RendererManager inlines ~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + inline void + RendererManager::StartEntityEffect( + Entity *entity, + DamageZone *damage_zone, + ResourceDescription::ResourceID resource_ID + ) + { + Renderer::StartEntityEffectMessage + message(entity, damage_zone, resource_ID); + PostRendererEvent(entity, &message); + } + + inline void + RendererManager::StopAllEntityEffects(Entity *entity) + { + Renderer::StopAllEntityEffectsMessage + message(entity); + PostRendererEvent(entity, &message); + } + + inline void + RendererManager::StartEntityAlarm( + Entity *entity, + Subsystem *alarm_subsystem, + Enumeration alarm_condition, + ResourceDescription::ResourceID resource_ID + ) + { + Renderer::StartEntityAlarmMessage + message(entity, alarm_subsystem, alarm_condition, resource_ID); + PostRendererEvent(entity, &message); + } + + inline void + RendererManager::StopEntityAlarm( + Entity *entity, + Subsystem *alarm_subsystem, + Enumeration alarm_condition + ) + { + Renderer::StopEntityAlarmMessage + message(entity, alarm_subsystem, alarm_condition); + PostRendererEvent(entity, &message); + } + +#endif + diff --git a/CODE/RP/MUNGA/RENDERER.TCP b/CODE/RP/MUNGA/RENDERER.TCP new file mode 100644 index 0000000..9480cee --- /dev/null +++ b/CODE/RP/MUNGA/RENDERER.TCP @@ -0,0 +1,57 @@ +//===========================================================================// +// File: renderer.tst // +// Project: MUNGA Brick: Renderer Manager // +// Contents: Interface specification Renderer and Renderer Manager // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 01/06/95 ECH Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1994, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#include "renderer.thp" + +TestRenderer::TestRenderer(): + Renderer( + 30.0f, + MaxRendererComplexity, + DefaultRendererPriority, + VisualInterestType, + DefaultInterestDepth + ) +{ +} + +TestRenderer::~TestRenderer() +{ +} + +Logical + TestRenderer::TestInstance() const +{ + Renderer::TestInstance(); + return True; +} + +void + TestRenderer::ExecuteImplementation( + RendererComplexity, + RendererOrigin::InterestingEntityIterator *interesting_entity_iterator + ) +{ + Check(interesting_entity_iterator); + + // + // HACK - Just step through the entities + // + Entity *entity; + + while ((entity = interesting_entity_iterator->ReadAndNext()) != NULL) + { + Check(entity); + } +} + diff --git a/CODE/RP/MUNGA/RENDERER.THP b/CODE/RP/MUNGA/RENDERER.THP new file mode 100644 index 0000000..6cd0f53 --- /dev/null +++ b/CODE/RP/MUNGA/RENDERER.THP @@ -0,0 +1,48 @@ +//===========================================================================// +// File: tstrend.hh // +// Project: MUNGA Brick: Renderer Manager // +// Contents: Interface specification Renderer and Renderer Manager // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 01/06/95 ECH Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1994, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(TSTREND_THP) +# define TSTREND_THP + +# if !defined(RENDERER_HPP) +# include +# endif + + class TestRenderer: + public Renderer + { + public: + TestRenderer(); + ~TestRenderer(); + + Logical + TestInstance() const; + + private: + void + LoadMissionImplementation(Mission*) {}; + void + ShutdownImplementation() {}; + void + SuspendImplementation() {}; + void + ResumeImplementation() {}; + void + ExecuteImplementation( + RendererComplexity complexity_update, + RendererOrigin::InterestingEntityIterator *iterator + ); + }; + +#endif diff --git a/CODE/RP/MUNGA/RESOURCE.HPP b/CODE/RP/MUNGA/RESOURCE.HPP new file mode 100644 index 0000000..6feaef2 --- /dev/null +++ b/CODE/RP/MUNGA/RESOURCE.HPP @@ -0,0 +1,462 @@ +//===========================================================================// +// File: resource.hh // +// Project: MUNGA Brick: Resource Manager // +// Contents: Implementation Details of resource management // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 01/20/95 GSY Initial coding. // +// 01/20/95 GAH Added MUNGA style comments and assertions. // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// PROPRIETARY AND CONFIDENTIAL // +//===========================================================================// + +#if !defined(RESOURCE_HPP) +# define RESOURCE_HPP + +# if !defined(FILESTRM_HPP) +# include +# endif + + //########################################################################## + //#################### ResourceDirectories ########################### + //########################################################################## + + struct ResourcePhysicalFormat; + class ResourceFile; + + struct ResourceDirectories + { + const char *modelDirectory; + const char *mapDirectory; + const char *collisionDirectory; + const char *audioDirectory; + const char *videoDirectory; + const char *gaugeDirectory; + const char *animationDirectory; + }; + + //########################################################################## + //################### ResourceDescription ############################ + //########################################################################## + + class ResourceDescription SIGNATURED + { + friend class ResourceFile; + friend class StreamableResourceFile; + + //########################################################################## + // Resource ID stuff + // + public: + typedef int ResourceID; + + enum { + NullResourceID = -1 + }; + + ResourceID + resourceID; + + //########################################################################## + // Resource Lock stuff + // + public: + void + Lock() + {if (!lockCount++) LoadResource();} + void + Unlock() + {--lockCount;} + + Logical + IsLocked() + {return lockCount > 0;} + + void + ReleaseUnlockedResource(); + + protected: + int + lockCount; + + //########################################################################## + // Resource Type stuff + // + public: + typedef int ResourceType; + + enum + { + NullResourceType, + + // + // ONLY LIST RESOURCE TYPES HERE -- These Are Really OBSOLETE + // + ModelListResourceType, + MapListResourceType, + AudioStreamListResourceType, + VideoListResourceType, + SubsystemListResourceType, + ControlMappingsListResourceType, + DamageZoneListResourceType, + SkeletonListResourceType, + + FirstNonListResourceType, + MaxListResourceType = FirstNonListResourceType - 1, + // + // ALL OTHER RESOURCE TYPES + // + BoxedSolidStreamResourceType = FirstNonListResourceType, + VideoModelResourceType, + StaticAudioStreamResourceType, + InternalAudioStreamResourceType, + ExternalAudioStreamResourceType, + MakeMessageStreamResourceType, + GameModelResourceType, + AnimationResourceType, + SubsystemModelStreamResourceType, + GaugeImageStreamResourceType, + ControlMappingStreamResourceType, + DamageZoneStreamResourceType, + SkeletonStreamResourceType, + DropZoneResourceType, + EnvironmentZoneResourceType, + InterestZoneResourceType, + VehicleTableResourceType, + ExistanceBoxStreamResourceType, + CameraStreamResourceType, + RegistryStaticObjectStreamResourceType, + DamageLookupTableStreamResourceType, + ExplosionTableStreamResourceType, + GaugeAlarmStreamResourceType, + GaugeMissionReviewStreamResourceType, + ScenarioRoleResourceType + }; + + ResourceType + resourceType; + + //########################################################################## + // Resource Name stuff + // + public: + enum { + NameSize = 32 + }; + + char + resourceName[NameSize]; + + //########################################################################## + // Loading stuff + // + public: + enum + { + LoadedBit=0, + LoadOnDemandBit + }; + enum + { + Preload = 0, // HACK - for backwards compatability + LoadedFlag = 1 << LoadedBit, + LoadOnDemandFlag = 1 << LoadOnDemandBit, + }; + + int + downloadPriority; + + LWord + resourceFlags; + + size_t + offsetInFile; + + void + SetLoaded() + {Check(this); resourceFlags |= LoadedFlag;} + void + SetNotLoaded() + {Check(this); resourceFlags &= ~LoadedFlag;} + Logical + IsLoaded() + {Check(this); return (resourceFlags&LoadedFlag) != 0;} + + void + LoadOnDemand() + {Check(this); resourceFlags |= LoadOnDemandFlag;} + void + MarkForPreload() + {Check(this); resourceFlags &= ~LoadOnDemandFlag;} + Logical + IsPreloadable() + {Check(this); return (resourceFlags&LoadOnDemandFlag) == 0;} + + //########################################################################## + // Construction and Destruction + // + protected: + ResourceDescription( + ResourceFile *file, + const char* name, + ResourceType type, + int priority, + LWord resource_flags, + const void* address, + size_t size, + ResourceID index=NullResourceID + ); + + ~ResourceDescription(); + + void + LoadResource(); + + protected: + ResourceFile + *resourceFile; + + //########################################################################## + // Resource Data stuff + // + public: + void + *resourceAddress; + + size_t + resourceSize; + + //########################################################################## + // Test stuff + // + public: + Logical + TestInstance() const; + }; + + //########################################################################## + // Format in physical memory: FILE,ROM,CD... + // + struct ResourcePhysicalFormat + { + ResourceDescription::ResourceID + resourceID; + ResourceDescription::ResourceType + resourceType; + char + resourceName[32]; + int + downloadPriority; + LWord + resourceFlags; + size_t + resourceOffset, + resourceLength; + }; + + inline MemoryStream& + MemoryStream_Read( + MemoryStream* stream, + ResourcePhysicalFormat *ptr + ) + {return stream->ReadBytes(ptr, sizeof(*ptr));} + inline MemoryStream& + MemoryStream_Write( + MemoryStream* stream, + const ResourcePhysicalFormat *ptr + ) + {return stream->WriteBytes(ptr, sizeof(*ptr));} + + //########################################################################## + //####################### ResourceFile ############################### + //########################################################################## + + class ResourceFile SIGNATURED + { + friend class ResourceDescription; + + public: + // + //----------------------------------------------------------------------- + // Constructors & destructors + //----------------------------------------------------------------------- + // + ResourceFile(); + ~ResourceFile(); + + public: + // + //----------------------------------------------------------------------- + // Public data + //----------------------------------------------------------------------- + // + enum { + IndexBlockSize = 50 + }; + + Byte + versionArray[4]; + int + labOnly; + + protected: + ResourceDescription** + resourceArray; + int + resourceArraySize; + ResourceDescription::ResourceID + lastPreallocatedResourceID, + maxResourceID; + + virtual void + LoadResource(ResourceDescription* res) + {Check(res); res->SetLoaded();} + + public: + // + //----------------------------------------------------------------------- + // Public interface + //----------------------------------------------------------------------- + // + ResourceDescription::ResourceID + GetMaxResourceID() + {Check(this); return maxResourceID;} + void + PreAllocateIDs(ResourceDescription::ResourceID last_id) + { + Verify(lastPreallocatedResourceID == ResourceDescription::NullResourceID); + lastPreallocatedResourceID = last_id; + } + + ResourceDescription* + AddResource( + const char* name, + ResourceDescription::ResourceType type, + int priority, + LWord load_flag, + const void* address, + size_t size, + ResourceDescription::ResourceID index=-1 + ); + ResourceDescription* + AddResourceList( + const char* name, + ResourceDescription::ResourceType type, + int priority, + LWord load_flag, + const ResourceDescription::ResourceID* address, + int count, + ResourceDescription::ResourceID index=-1 + ); + ResourceDescription* + AddResourceMemoryStream( + const char* name, + ResourceDescription::ResourceType type, + int priority, + LWord load_flag, + MemoryStream* memory_stream, + ResourceDescription::ResourceID index=-1 + ); + void + DeleteResource(ResourceDescription *resource); + + ResourceDescription* + FindResourceDescription( + const char* name, + ResourceDescription::ResourceType type, + ResourceDescription::ResourceID after=-1 + ); + ResourceDescription* + FindResourceDescription( + ResourceDescription::ResourceID index + ); + + ResourceDescription* + SearchList( + ResourceDescription::ResourceID list_id, + ResourceDescription::ResourceType type + ); + ResourceDescription* + SearchList( + ResourceDescription::ResourceID list_id, + const char* name + ); + + void + ReleaseUnlockedResources(); + void + ReportLockedResources(); + + // + //--------------------------------------------------------------------------- + // Lab tests + //--------------------------------------------------------------------------- + // + public: + Logical + TestInstance() const; + static Logical + TestClass(); + }; + + //########################################################################## + //################### StreamableResourceFile ############################# + //########################################################################## + + class StreamableResourceFile: + public ResourceFile + { + public: + // + //------------------------------------------------------------------------ + // Constructors & destructors + //------------------------------------------------------------------------ + // + enum { + FileNameLength = 80 + }; + + + StreamableResourceFile(); + StreamableResourceFile(const char * name); + StreamableResourceFile( + const char * name, + Byte version_array[3], + int match_level=3 + ); + ~StreamableResourceFile(); + + protected: + void + LoadResource(ResourceDescription* res); + + FileStream + diskFile; + + // + //------------------------------------------------------------------------ + // Public data + //------------------------------------------------------------------------ + // + public: + char + resourceFilename[FileNameLength]; + + int + Open(const char *file_name); + int + Save(); + int + SaveAs(const char* file_name); + + Logical + TestInstance() const; + + static Logical + TestClass(); + }; + +#endif + diff --git a/CODE/RP/MUNGA/RESOURCE.TCP b/CODE/RP/MUNGA/RESOURCE.TCP new file mode 100644 index 0000000..7295b21 --- /dev/null +++ b/CODE/RP/MUNGA/RESOURCE.TCP @@ -0,0 +1,759 @@ +//===========================================================================// +// File: resource.tst // +// Project: MUNGA Brick: Resource Manager // +// Contents: Test methods for Resource Manager classes. // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 01/19/95 GSY Initial coding. // +// 01/20/95 GAH Modified in the MUNGA style // +//---------------------------------------------------------------------------// +// Copyright (C) 1994, Virtual World Entertainment, Inc. All Rights reserved // +// PROPRIETARY AND CONFIDENTIAL // +//===========================================================================// + + //GY: Directory (References) stuff wasn't tested so is not reliable yet !!!! + + +Logical + ResourceFile::TestClass() +{ + DEBUG_STREAM<<"Starting Resource test....\n"; + + typedef char ATTRIB[16]; + + + + ResourceFile + file; + +// +//---------------------------------- +// ResourceDescription* +// addResource( +// ResourceDescription::Name res_name, +// ResourceDescription::Type res_type, +// unsigned short res_priority, +// ResourceDescription::PreloadRequest load_flag, +// void* res_address, +// size_t res_size, +// int res_index=-1 //ResourceDescription::ResourceID res_index=-1 +// ); +//---------------------------------- +// + ATTRIB attrib4 = "data4"; + ResourceDescription + *res = file.AddResource( + "The fourth", + ResourceDescription::FirstNonListResourceType, // 4(3) + 1, + ResourceDescription::Preload, + attrib4, + sizeof(ATTRIB), + 3 + ); + Test(res->resourceID == 3); + + ATTRIB attrib1 = "data1"; + res = file.AddResource( + "The first", // 1 + ResourceDescription::FirstNonListResourceType, //DirectoryType = 0 + 0, + ResourceDescription::Preload, + attrib1, + sizeof(ATTRIB) + ); + Test(res->resourceID == 0); + + ATTRIB attrib2 = "data2"; + res = file.AddResource( // 2 + "The second", + ResourceDescription::FirstNonListResourceType, //DirectoryType = 0 + 0, + ResourceDescription::Preload, + attrib2, + sizeof(ATTRIB) + ); + Test(res->resourceID == 1); + + // Same data but different memory allocated + res = file.AddResource( + "The first", // 1.1 + ResourceDescription::FirstNonListResourceType, //DirectoryType = 0 + 0, + ResourceDescription::Preload, + attrib1, + sizeof(ATTRIB) + ); + Test(res->resourceID == 2); + + + ATTRIB attrib10 = "data10"; + res = file.AddResource( + "The tenth", // 10 (9) + ResourceDescription::FirstNonListResourceType, + 1, + ResourceDescription::Preload, + attrib10, + sizeof(ATTRIB), + 9 + ); + Test(res->resourceID == 9); + + ATTRIB attrib6 = "data6"; + res = file.AddResource("The sixth", // 6 (5) + ResourceDescription::FirstNonListResourceType, + 1, + ResourceDescription::Preload, + attrib6, + sizeof(ATTRIB), + 5 + ); + Test(res->resourceID == 5); + + + ATTRIB attrib5 = "data5"; // 5 + res = file.AddResource("The fifth", + ResourceDescription::FirstNonListResourceType, + 1, + ResourceDescription::Preload, + attrib5, + sizeof(ATTRIB) + ); + Test(res->resourceID == 4); + + ATTRIB attrib7 = "data7"; // 7 + res = file.AddResource("The seventh", + ResourceDescription::FirstNonListResourceType, + 1, + ResourceDescription::Preload, + attrib7, + sizeof(ATTRIB) + ); + Test(res->resourceID == 6); + + ATTRIB attrib11 = "data11"; // 11 (10) + res = file.AddResource("The eleventh", + ResourceDescription::FirstNonListResourceType, + 1, + ResourceDescription::Preload, + attrib11, + sizeof(ATTRIB), + 10 + ); + Test(res->resourceID == 10); + + + ATTRIB attrib1001 = "data1001"; // 1001 (1000) + res = file.AddResource("The thousand first", //last + ResourceDescription::FirstNonListResourceType, + 1, + ResourceDescription::Preload, + attrib1001, + sizeof(ATTRIB), + 1000 + ); + Test(res->resourceID == 1000); + + ATTRIB attrib8 = "data8"; // 8 + res = file.AddResource("The eighth", + ResourceDescription::FirstNonListResourceType, + 1, + ResourceDescription::Preload, + attrib8, + sizeof(ATTRIB) + ); + Test(res->resourceID == 7); + + ATTRIB attrib101 = "data101"; // 101 (100) + res = file.AddResource("The hundred first", + ResourceDescription::FirstNonListResourceType, + 1, + ResourceDescription::Preload, + attrib101, + sizeof(ATTRIB), + 100 + ); + Test(res->resourceID == 100); + + +//------------------------------ +// ResourceDescription* +// FindResourceDescription( +// ResourceDescription::Name res_name, +// ResourceDescription::Type res_type) +//------------------------------ + + res = file.FindResourceDescription( + "The fourth", + ResourceDescription::FirstNonListResourceType + ); + Test(res); + Test(!strcmp(res->resourceName, "The fourth")); + Test(res->resourceType == ResourceDescription::FirstNonListResourceType); + Test(res->resourceID == 3); + + res = file.FindResourceDescription( + "The hundred first", + ResourceDescription::FirstNonListResourceType + ); + Test(res); + Test(!strcmp(res->resourceName, "The hundred first")); + Test(res->resourceType == ResourceDescription::FirstNonListResourceType); + +//-------------------------------------------------- +// void +// DeleteResource(ResourceDescription *resource); +//-------------------------------------------------- + //ID=3 + file.FindResourceDescription(3)->Unlock(); + Unregister_Object(file.FindResourceDescription(3)); + file.DeleteResource (file.FindResourceDescription(3)); + Test(!file.FindResourceDescription(3)); + + //ID=4 + file.FindResourceDescription(4)->Unlock(); + Unregister_Object(file.FindResourceDescription(4)); + file.DeleteResource (file.FindResourceDescription(4)); + Test(!file.FindResourceDescription(4)); + + //ID=5 + file.FindResourceDescription(5)->Unlock(); + Unregister_Object(file.FindResourceDescription(5)); + file.DeleteResource (file.FindResourceDescription(5)); + Test(!file.FindResourceDescription(5)); + + + //ID=2 + file.FindResourceDescription(2)->Unlock(); + Unregister_Object(file.FindResourceDescription(2)); + file.DeleteResource(file.FindResourceDescription(2)); + Test(!file.FindResourceDescription(2)); + + + + //ID=0 + file.FindResourceDescription(0)->Unlock(); + Unregister_Object(file.FindResourceDescription(0)); + file.DeleteResource(file.FindResourceDescription(0)); + Test(!file.FindResourceDescription(0)); + + file.FindResourceDescription( + "The second", + ResourceDescription::FirstNonListResourceType + )->Unlock(); + Unregister_Object( + file.FindResourceDescription( + "The second", + ResourceDescription::FirstNonListResourceType + ) + ); + file.DeleteResource( + file.FindResourceDescription( + "The second", + ResourceDescription::FirstNonListResourceType + ) + ); + Test( + !file.FindResourceDescription( + "The second", + ResourceDescription::FirstNonListResourceType + ) + ); + + file.FindResourceDescription( + "The hundred first", + ResourceDescription::FirstNonListResourceType + )->Unlock(); + Unregister_Object( + file.FindResourceDescription( + "The hundred first", + ResourceDescription::FirstNonListResourceType + ) + ); + file.DeleteResource( + file.FindResourceDescription( + "The hundred first", + ResourceDescription::FirstNonListResourceType + ) + ); + Test( + !file.FindResourceDescription( + "The hundred first", + ResourceDescription::FirstNonListResourceType + ) + ); + + file.FindResourceDescription( + "The thousand first", + ResourceDescription::FirstNonListResourceType + )->Unlock(); + Unregister_Object( + file.FindResourceDescription( + "The thousand first", + ResourceDescription::FirstNonListResourceType + ) + ); + file.DeleteResource( + file.FindResourceDescription( + "The thousand first", + ResourceDescription::FirstNonListResourceType + ) + ); + Test( + !file.FindResourceDescription( + "The thousand hundred first", + ResourceDescription::FirstNonListResourceType + ) + ); + +// +//------------------------------------------------------------------------------ +// ResourceDescription* +// AddResourceDirectory( +// ResourceDescription::ResourceName name, +// int priority, +// ResourceDescription::PreloadRequest load_flag, +// ResourceDescription::ResourceID* address, +// int count, +// ResourceDescription::ResourceID index=-1 +// ); +//------------------------------------------------------------------------------ +// + + //---------------------------------------- + // One way of directory describing: + // + //ResourceDescription::ResourceID + // dir[] = { + // 7, + // 9, + // 10 + // }; + + //---------------------------------------- + // The other way : + + ResourceDescription::ResourceID + dirRes[10]; + + res = + file.FindResourceDescription( + "The eighth", + ResourceDescription::FirstNonListResourceType + ); + Test(res); + dirRes[0] = res->resourceID; //7 + Test(dirRes[0]==7); + + res = + file.FindResourceDescription( + "The tenth", + ResourceDescription::FirstNonListResourceType + ); + Test(res); + dirRes[1] = res->resourceID; //9 + Test(dirRes[1]==9); + + res = + file.FindResourceDescription( + "The eleventh", + ResourceDescription::FirstNonListResourceType + ); + Test(res); + dirRes[2] = res->resourceID; //10 + Test(dirRes[2]==10); + + //--------------------------------------------------------- + // test Directory assigned to resource "The seventh" + // Remember: Directory has to be appended to end of the list + // + Test(file.maxResourceID==10); + Test(!file.FindResourceDescription(file.maxResourceID +1)); + + res = file.AddResourceList( + "first directory", + ResourceDescription::ModelListResourceType, + 1, + ResourceDescription::Preload, + dirRes, + 3, //count of references + file.maxResourceID +1 //Dir. has to be in + ); //resourceArray after + //resources it references + + Test(res); + res = file.FindResourceDescription( + "first directory", + ResourceDescription::ModelListResourceType + ); + Test(res); + Test(res->resourceID == 11); + Test(res->resourceType == ResourceDescription::ModelListResourceType); + + ResourceDescription::ResourceID + *res_array = (ResourceDescription::ResourceID*)res->resourceAddress; + + Test(res_array[0] == 3); + + Test(res_array[1] == 7); + Test(res_array[2] == 9); + Test(res_array[3] == 10); + + return True; +} +// +//############################################################################## +//################# StreamableResourceFile::TestClass() ####################### +//############################################################################## +Logical + StreamableResourceFile::TestClass() +{ + +// ResourceFile::TestClass(); // ????? gives error: + //resourceArray[index] !=NULL + //in AddResource() + DEBUG_STREAM<<"Starting StreamableResource test....\n"; +// +//------------------------------------------------------------------------------ +// StreamableResourceFile(); +//------------------------------------------------------------------------------ +// + ResourceDescription *res; + typedef char ATTRIB[16]; + + { + StreamableResourceFile + file; + + ATTRIB attrib4 = "data4"; + res = + file.AddResource( + "The fourth", + ResourceDescription::FirstNonListResourceType, + 1, + ResourceDescription::Preload, + attrib4, + sizeof(ATTRIB), + 3 + ); + Test(res->resourceID == 3); + + ATTRIB attrib1 = "data1"; + res = + file.AddResource( + "The first", + ResourceDescription::FirstNonListResourceType, + 0, + ResourceDescription::Preload, + attrib1, + sizeof(ATTRIB) + ); + Test(res->resourceID == 0); + + ATTRIB attrib2 = "data2"; + res = + file.AddResource( + "The second", + ResourceDescription::FirstNonListResourceType, + 0, + ResourceDescription::Preload, + attrib2, + sizeof(ATTRIB) + ); + Test(res->resourceID == 1); + + // Same data but different memory allocated + res = + file.AddResource( + "The first", + ResourceDescription::FirstNonListResourceType, + 0, + ResourceDescription::Preload, + attrib1, + sizeof(ATTRIB) + ); + Test(res->resourceID == 2); + + ATTRIB attrib10 = "data10"; + res = + file.AddResource( + "The tenth", + ResourceDescription::FirstNonListResourceType, + 1, + ResourceDescription::Preload, + attrib10, + sizeof(ATTRIB), + 9 + ); + Test(res->resourceID == 9); + + ATTRIB attrib6 = "data6"; + res = + file.AddResource( + "The sixth", + ResourceDescription::FirstNonListResourceType, + 1, + ResourceDescription::Preload, + attrib6, + sizeof(ATTRIB), + 5 + ); + Test(res->resourceID == 5); + + ATTRIB attrib5 = "data5"; + res = + file.AddResource( + "The fifth", + ResourceDescription::FirstNonListResourceType, + 1, + ResourceDescription::Preload, + attrib5, + sizeof(ATTRIB) + ); + Test(res->resourceID == 4); + + ATTRIB attrib7 = "data7"; + res = + file.AddResource( + "The seventh", + ResourceDescription::FirstNonListResourceType, + 1, + ResourceDescription::Preload, + attrib7, + sizeof(ATTRIB) + ); + Test(res->resourceID == 6); + + ATTRIB attrib11 = "data11"; + res = + file.AddResource( + "The eleventh", + ResourceDescription::FirstNonListResourceType, + 1, + ResourceDescription::Preload, + attrib11, + sizeof(ATTRIB), + 10 + ); + Test(res->resourceID == 10); + + // + //------------------------------------------------------------------------------ + // int + // SaveAs(char* file_name); + //------------------------------------------------------------------------------ + // + file.SaveAs("temp.res"); + } + + // + //------------------------------------------------------------------------------ + // int + // Open(char *file_name); + //------------------------------------------------------------------------------ + // + { + StreamableResourceFile + file; + + Test(file.Open("temp.res")); + Test(!strcmp(file.FindResourceDescription(0)->resourceName,"The first")); + + Test( + !strcmp( + file.FindResourceDescription( + "The eleventh", + ResourceDescription::FirstNonListResourceType + )->resourceName, + "The eleventh" + ) + ); + + ATTRIB attrib12 = "data12"; + res = + file.AddResource( + "The twelfth", + ResourceDescription::FirstNonListResourceType, + 1, + ResourceDescription::Preload, + attrib12, + sizeof(ATTRIB), + 11 + ); + Test(res->resourceID == 11); + + + ATTRIB attrib8 = "data8"; + res = + file.AddResource( + "The eighth", + ResourceDescription::FirstNonListResourceType, + 1, + ResourceDescription::Preload, + attrib8, + sizeof(ATTRIB) + ); + Test(res->resourceID == 7); + + + // + //------------------------------------------------------------------------------ + // int + // Save(); + //------------------------------------------------------------------------------ + // + + file.Save(); + } + + { + StreamableResourceFile + file; + file.Open("temp.res"); + + file.FindResourceDescription(2)->Unlock(); + Unregister_Object(file.FindResourceDescription(2)); + file.DeleteResource(file.FindResourceDescription(2)); + file.FindResourceDescription(0)->Unlock(); + Unregister_Object(file.FindResourceDescription(0)); + file.DeleteResource(file.FindResourceDescription(0)); + file.Save(); + } + + { + StreamableResourceFile + file; + file.Open("temp.res"); + Test( + !file.FindResourceDescription( + "The first", + ResourceDescription::FirstNonListResourceType + ) + ); + Test(!file.FindResourceDescription(0)); + + // + //------------------------------------------------------------------------------ + // ResourceDescription* + // AddResourceDirectory( + // ResourceDescription::ResourceName name, + // int priority, + // ResourceDescription::PreloadRequest load_flag, + // ResourceDescription::ResourceID* address, + // int count, + // ResourceDescription::ResourceID index=-1 + // ); + //------------------------------------------------------------------------------ + // + + //-------------------------- + // Test resource descriptions before adding directory + // + + //---------------------------------------- + // One way of directory describing: + // + //ResourceDescription::ResourceID + // dir[] = { + // 0, + // 9, + // 11 + // }; + + //---------------------------------------- + // The other way : + + ResourceDescription::ResourceID + dirRes[10]; + + //------------------ + // test "The first" + // + res = + file.FindResourceDescription( + "The eighth", + ResourceDescription::FirstNonListResourceType + ); + Test(res); + dirRes[0] = res->resourceID; + Test(dirRes[0]==7); + + //------------------ + // test "The tenth" + // + res = + file.FindResourceDescription( + "The tenth", + ResourceDescription::FirstNonListResourceType + ); + Test(res); + dirRes[1] = res->resourceID; + Test(dirRes[1]==9); + + //------------------ + // test "The twelfth" + // + res = + file.FindResourceDescription( + "The twelfth", + ResourceDescription::FirstNonListResourceType + ); + Test(res); + dirRes[2] = res->resourceID; + Test(dirRes[2]==11); + + // + //---------------- + // Add Directory + // + Test(file.maxResourceID==11); + Test(!file.FindResourceDescription(file.maxResourceID+1)); + res = + file.AddResourceList( + "The first list", + ResourceDescription::ModelListResourceType, + 1, + ResourceDescription::Preload, + dirRes, + 3, + file.maxResourceID+1 + ); + Test(res); + + Test(res->resourceID == 12); + Test(res->resourceType == ResourceDescription::ModelListResourceType); + + Test(((ResourceDescription::ResourceID*)res->resourceAddress)[0] == 3); + Test(((ResourceDescription::ResourceID*)res->resourceAddress)[1] == 7); + Test(((ResourceDescription::ResourceID*)res->resourceAddress)[2] == 9); + Test(((ResourceDescription::ResourceID*)res->resourceAddress)[3] == 11); + file.Save(); + } + + { + StreamableResourceFile + file; + file.Open("temp.res"); + + res = + file.FindResourceDescription( + "The first list", + ResourceDescription::ModelListResourceType + ); + Test(res); + Test(res->resourceID == 12); + Test(res->resourceType == ResourceDescription::ModelListResourceType); + + res->Lock(); + Test(((ResourceDescription::ResourceID*)res->resourceAddress)[0] == 3); + Test(((ResourceDescription::ResourceID*)res->resourceAddress)[1] == 7); + Test(((ResourceDescription::ResourceID*)res->resourceAddress)[2] == 9); + Test(((ResourceDescription::ResourceID*)res->resourceAddress)[3] == 11); + res->Unlock(); + } + + return True; +} + + diff --git a/CODE/RP/MUNGA/RESVER.HPP b/CODE/RP/MUNGA/RESVER.HPP new file mode 100644 index 0000000..702a834 --- /dev/null +++ b/CODE/RP/MUNGA/RESVER.HPP @@ -0,0 +1,7 @@ +#if !defined(RESVER_HPP) +# define RESVER_HPP + +# define RESOURCE_FORMAT_VERSION 1 + +#endif + diff --git a/CODE/RP/MUNGA/RETICLE.CPP b/CODE/RP/MUNGA/RETICLE.CPP new file mode 100644 index 0000000..ddf85d0 --- /dev/null +++ b/CODE/RP/MUNGA/RETICLE.CPP @@ -0,0 +1,120 @@ +//===========================================================================// +// File: reticle.cc // +// Project: MUNGA Brick: Model Manager // +// Contents: Reticle specification // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 04/21/95 GAC Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(RETICLE_HPP) +# include +#endif + +//########################################################################## +//########################### Class Reticle ######################### +//########################################################################## + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Reticle::Reticle() +{ + // + // NOTE...most of these things should be initialization parameters to the constructor + // + reticleState = ReticleOn; + reticlePosition.x = 0.0f; + reticlePosition.y = 0.0f; + pickPointingOn = False; + rayIntersection.x = 0.0f; + rayIntersection.y = 0.0f; + rayIntersection.z = 0.0f; + targetEntity = 0; + targetDamageZone = -1; + reticleElementMask = AllEnabledGroup; // all reticle elements are on +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + Reticle::TestInstance() const +{ + return True; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +ResourceDescription::ResourceID + Reticle::CreateModelResource( + ResourceFile *resource_file, + const char* model_name, + NotationFile *model_file, + const ResourceDirectories *, + ModelResource *model + ) +{ + Check(resource_file); + Check_Pointer(model_name); + Check(model_file); + + ModelResource *local_model = model; + if (!local_model) + { + local_model = new ModelResource; + Register_Pointer(local_model); + } + + if( + !model_file->GetEntry( + "gamedata", + "ReticleX", + &local_model->reticlePosition.x + ) + ) + { + local_model->reticlePosition.x = 0.0f; + } + if( + !model_file->GetEntry( + "gamedata", + "ReticleY", + &local_model->reticlePosition.y + ) + ) + { + local_model->reticlePosition.y = 0.0f; + } + // + //--------------------------- + // Write out the new resource + //--------------------------- + // + if(!model) + { + ResourceDescription *new_res = + resource_file->AddResource( + model_name, + ResourceDescription::GameModelResourceType, + 1, + ResourceDescription::Preload, + local_model, + sizeof(local_model) + ); + Unregister_Pointer(local_model); + delete local_model; + Check(new_res); + return new_res->resourceID; + } + else + { + return 0; + } +} diff --git a/CODE/RP/MUNGA/RETICLE.HPP b/CODE/RP/MUNGA/RETICLE.HPP new file mode 100644 index 0000000..6f82b2d --- /dev/null +++ b/CODE/RP/MUNGA/RETICLE.HPP @@ -0,0 +1,91 @@ +//===========================================================================// +// File: reticle.hh // +// Project: MUNGA Brick: Model Manager // +// Contents: Reticle specification // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 04/21/95 GAC Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// +#if !defined(RETICLE_HPP) +# define RETICLE_HPP + +# if !defined(POINT3D_HPP) +# include +# endif + +# if !defined(VECTOR2D_HPP) +# include +# endif + +# if !defined(RESOURCE_HPP) +# include +# endif + +# if !defined(NOTATION_HPP) +# include +# endif + + class Entity; + //########################################################################## + //##################### Reticle::ModelResource ####################### + //########################################################################## + + struct Reticle__ModelResource + { + Vector2DOf reticlePosition; + }; + //########################################################################## + //########################### Class Reticle ######################### + //########################################################################## + + class Reticle SIGNATURED + { + public: + enum ReticleState + { + ReticleOff, // Reticle is invisible + ReticleOn, // Reticle is visible (may be more than one "on" state added later) + }; + + enum ReticleElements // these are bits that turn parts of the reticle on and off + { + FrontFiringWeaponsOn = 0x00000001, // Display Front firing weapons + RearFiringWeaponsOn = 0x00000002, // Display rear firing weapons + LeftFiringWeaponsOn = 0x00000004, // Display left firing weapons + RightFiringWeaponsOn = 0x00000008, // Display right firing weapons + WeaponsControlGroup = 0x0000000F, // Mask defining the weapons group + TargetDesignatorOn = 0x00000010, // Display target designator box and direction arrows + PrimaryHudOn = 0x00000020, // if set, you get the full hud, if not just a simple x + AllEnabledGroup = 0xFFFFFFFF, // All bits on + }; + + Vector2DOf reticlePosition; // screen position -1.0 -> +1.0 + ReticleState reticleState; // current state of reticle, graphic to display + Logical pickPointingOn; // Pick point intersection testing on/off + Point3D rayIntersection; // Current pickpoint intersection in 3d world + Entity *targetEntity; // entity being targeted + int targetDamageZone; // damage zone on the entity + ReticleElements reticleElementMask; // controls what parts of the reticle are displayed + + Reticle(); + + Logical + TestInstance() const; + typedef Reticle__ModelResource ModelResource; + + static ResourceDescription::ResourceID + CreateModelResource( + ResourceFile *resource_file, + const char* model_name, + NotationFile *map_file, + const ResourceDirectories *directories, + ModelResource *model = NULL + ); + }; + +#endif \ No newline at end of file diff --git a/CODE/RP/MUNGA/RNDORGN.CPP b/CODE/RP/MUNGA/RNDORGN.CPP new file mode 100644 index 0000000..77d9603 --- /dev/null +++ b/CODE/RP/MUNGA/RNDORGN.CPP @@ -0,0 +1,214 @@ +//===========================================================================// +// File: rndorgn.cc // +// Project: MUNGA Brick: Interest Manager // +// Contents: Interface specification Interest Manager // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 01/18/95 ECH Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(RNDORGN_HPP) +# include +#endif + +#if !defined(RENDERER_HPP) +# include +#endif + +#if !defined(APP_HPP) + #include +#endif + +#if !defined(ENTITY_HPP) + #include +#endif + +// +//############################################################################# +// RendererOrigin +//############################################################################# +// +RendererOrigin::RendererOrigin( + Renderer *the_renderer, + Entity *entity, + InterestType interest_type, + InterestDepth depth_calibration +): + InterestOrigin( + entity->GetInterestZoneID(), + interest_type, + depth_calibration + ), + interestingEntitySocket(NULL) +{ + Check(the_renderer); + renderer = the_renderer; +} + +// +//############################################################################# +// ~RendererOrigin +//############################################################################# +// +RendererOrigin::~RendererOrigin() +{ +} + +// +//############################################################################# +// TestInstance +//############################################################################# +// +Logical + RendererOrigin::TestInstance() const +{ + InterestOrigin::TestInstance(); + Check_Signature(renderer); + Check(&interestingEntitySocket); + return True; +} + +// +//############################################################################# +//############################################################################# +// +void + RendererOrigin::AddInterestingEntity(Entity *interesting_entity) +{ + Check(this); + Check(interesting_entity); + + // + // Add to the socket + // + #if DEBUG_LEVEL>0 + { + SChainIteratorOf iterator(&interestingEntitySocket); + Check(&iterator); + Verify(iterator.IsPlugMember(interesting_entity) == False); + } + #endif + interestingEntitySocket.Add(interesting_entity); + + // + // Notify the renderer + // + #if 0 + Renderer::NotifyOfNewInterestingEntityMessage + message(interesting_entity); + + Check(&message); + Check(application); + Check(renderer); + application->PostInterestEvent(renderer, &message); + #else + Renderer::NotifyOfNewInterestingEntityMessage + message(interesting_entity); + + Check(&message); + Check(application); + Check(application->GetInterestManager()); + application->GetInterestManager()->PostRendererEvent( + interesting_entity, + renderer, + &message + ); + #endif +} + +// +//############################################################################# +//############################################################################# +// +void + RendererOrigin::RemoveUninterestingEntity(Entity *uninteresting_entity) +{ + Check(this); + Check(uninteresting_entity); + + // + // Notify the renderer + // + #if 1 + Check(renderer); + renderer->NotifyOfBecomingUninterestingEntity(uninteresting_entity); + #else + Renderer::NotifyOfBecomingUninterestingEntityMessage + message(uninteresting_entity); + + Check(&message); + Check(application); + Check(renderer); + application->PostInterestEvent(renderer, &message); + #endif + + // + // Remove from socket + // + #if DEBUG_LEVEL>0 + { + SChainIteratorOf iterator(&interestingEntitySocket); + Verify(iterator.IsPlugMember(uninteresting_entity) == True); + } + #endif + PlugIterator remover(uninteresting_entity); + remover.RemoveSocket(&interestingEntitySocket); +} + +// +//############################################################################# +//############################################################################# +// +void + RendererOrigin::RemoveUninterestingEntities() +{ + Check(this); + + // + // Notify the renderer of uninteresting entities + // + SChainIteratorOf iterator(&interestingEntitySocket); + Entity *uninteresting_entity; + + Check(&iterator); + #if 0 + while ((uninteresting_entity = iterator.GetCurrent()) != NULL) + { + Check(uninteresting_entity); + Check(renderer); + renderer->NotifyOfBecomingUninterestingEntity(uninteresting_entity); + iterator.Remove(); + } + #else + while ((uninteresting_entity = iterator.GetCurrent()) != NULL) + { + Check(uninteresting_entity); + RemoveUninterestingEntity(uninteresting_entity); + } + #endif +} + +//~~~~~~~~~~~~~~~~~ RendererOrigin__InterestingEntityIterator ~~~~~~~~~~~~~~~~~ + +RendererOrigin__InterestingEntityIterator:: + RendererOrigin__InterestingEntityIterator( + RendererOrigin *renderer_origin + ): + SChainIteratorOf(&renderer_origin->interestingEntitySocket) +{ +} + +RendererOrigin__InterestingEntityIterator:: + ~RendererOrigin__InterestingEntityIterator() +{ +} + + diff --git a/CODE/RP/MUNGA/RNDORGN.HPP b/CODE/RP/MUNGA/RNDORGN.HPP new file mode 100644 index 0000000..276c226 --- /dev/null +++ b/CODE/RP/MUNGA/RNDORGN.HPP @@ -0,0 +1,144 @@ +//===========================================================================// +// File: rndorgn.hh // +// Project: MUNGA Brick: Interest Manager // +// Contents: Interface specifications for interest manager // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- -----------------------------------------------------------// +// 01/18/95 ECH Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(RNDORGN_HPP) +# define RNDORGN_HPP + +# if !defined(INTORGN_HPP) +# include +# endif + +# if !defined(SCHAIN_HPP) +# include +# endif + + //########################################################################## + //####################### RendererOrigin ############################# + //########################################################################## + + class Renderer; + class Entity; + + class RendererOrigin: + public InterestOrigin + { + friend class RendererOrigin__InterestingEntityIterator; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Public types + // + public: + typedef RendererOrigin__InterestingEntityIterator + InterestingEntityIterator; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Constructor, Destructor, and Testing + // + public: + RendererOrigin( + Renderer *renderer, + Entity *entity, + InterestType interest_type, + InterestDepth depth_calibration + ); + ~RendererOrigin(); + Logical + TestInstance() const; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Interest Manager support + // + private: + void + AddInterestingEntity(Entity *interesting_entity); + void + RemoveUninterestingEntity(Entity *uninteresting_entity); + void + RemoveUninterestingEntities(); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Private data + // + private: + Renderer* + renderer; + SChainOf + interestingEntitySocket; + }; + + //~~~~~~~~~~~~~~~~~ RendererOrigin__InterestingEntityIterator ~~~~~~~~~~~~~~ + + class RendererOrigin__InterestingEntityIterator: + public SChainIteratorOf + { + public: + RendererOrigin__InterestingEntityIterator(RendererOrigin *renderer_origin); + ~RendererOrigin__InterestingEntityIterator(); + }; + +#if 0 + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ RendererOrigin ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + // + //-------------------------------------------------------------------- + // RendererOrigin + // + // Represent a renderers origin of interest. + //-------------------------------------------------------------------- + // + + class RendererOrigin: + public InterestOrigin + { + public: + // + //-------------------------------------------------------------------- + // Constructor, Destructor, and Testing + //-------------------------------------------------------------------- + // + RendererOrigin( + const EntityID &entity_ID, + InterestType interest_type, + InterestDepth depth_calibration, + Renderer *renderer + ); + ~RendererOrigin(); + Logical + TestInstance() const; + + // + //-------------------------------------------------------------------- + // Interest Manager support + //-------------------------------------------------------------------- + // + void + AddInterestingEntity(Entity *interesting_entity); + void + RemoveUninterestingEntity(Entity *uninteresting_entity); + void + RemoveUninterestingEntities(); + + protected: + // + //-------------------------------------------------------------------- + // Protected data + //-------------------------------------------------------------------- + // + SlotOf + rendererSocket; + }; +#endif + +#endif + diff --git a/CODE/RP/MUNGA/ROTATION.TCP b/CODE/RP/MUNGA/ROTATION.TCP new file mode 100644 index 0000000..696859f --- /dev/null +++ b/CODE/RP/MUNGA/ROTATION.TCP @@ -0,0 +1,202 @@ +//===========================================================================// +// File: rotation.tst // +// Project: MUNGA Brick: Math Library // +// Contents: Test code for rotation classes // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 11/20/94 JMA Initial coding. // +// 12/01/94 JMA Made compatible with SGI CC // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ EulerAngles ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +// +//############################################################################# +//############################################################################# +// +Logical + EulerAngles::TestClass() +{ + DEBUG_STREAM << "Starting EulerAngle test...\n"; + + const EulerAngles + a(Identity); + EulerAngles + b; + const EulerAngles + c(PI_OVER_4,PI_OVER_6,PI_OVER_3); + + Test(!a.pitch && !a.yaw && !a.roll); + Test(c.pitch == PI_OVER_4 && c.yaw == PI_OVER_6 && c.roll == PI_OVER_3); + + Test(!a); + b = c; + Test(b == c); + Test(b != a); + + Test(b[Y_Axis] == b.yaw); + Test(c[Z_Axis] == c.roll); + + b.Lerp(a,c,0.5f); + Test(b == EulerAngles(::Lerp(a.pitch,c.pitch,0.5f),::Lerp(a.yaw,c.yaw,0.5f),::Lerp(a.roll,c.roll,0.5f))); + + LinearMatrix m(True); + m = c; + b = m; + Test(b == c); + + Quaternion q; + q = Hinge(X_Axis, PI_OVER_4); + b = q; + Test(b == EulerAngles(PI_OVER_4,0.0f,0.0f)); + + return True; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Quaternion ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +// +//############################################################################# +//############################################################################# +// +#define NUMBER_OF_MULTIPLICATIONS 30 +#include "random.hpp" +#include +class fstream; +Logical + Quaternion::TestClass() +{ + + Tell("Starting Quaternion Test...\n"); + +#if 0 +// ofstream testout("gene.tst",ios::app); //GY + + Vector3D + r_vec; + Quaternion +// q[2], + q[NUMBER_OF_MULTIPLICATIONS+1], + multiplied_q(Identity), + converted_q; + LinearMatrix +// lm[2], + lm[NUMBER_OF_MULTIPLICATIONS+1], + multiplied_lm(True); + Scalar r_float; + +//cerr<<"Starting Quaternion::TestClass()\n"; + for (int k=0; k +#pragma hdrstop + +#if !defined(SCALAR_HPP) + #include +#endif + + +int + Round(Scalar value) +{ + int whole_part = floor(value); + Scalar fractional_part = value - whole_part; + if (fractional_part >= 0.5) + { + return whole_part + 1; + } + else + { + return whole_part; + } +} + + + +void + Find_Roots( + Scalar a, // a*x*x + b*x + c = 0 + Scalar b, + Scalar c, + Scalar *center, + Scalar *range + ) +{ + + // + //--------------------------------- + // See if the quadratic is solvable + //--------------------------------- + // + *range = b*b - 4.0f*a*c; + if (*range < 0.0f || Small_Enough(a)) + { + *range = -1.0f; + } + + else + { + // + //--------------------------- + // Solve the single root case + //--------------------------- + // + a *= 2.0f; + *center = -b / a; + if (*range < SMALL) + { + *range = 0.0f; + } + + // + //-------------------------- + // Find the two-root extents + //-------------------------- + // + else + { + *range = Sqrt(*range); + *range /= a; + } + } +} + +static void + Verify_Arguments( + const char *str, + void *value + ) +{ + if (str == NULL) + { + Fail("Convert_From_Ascii - str == NULL"); + } + if (value == NULL) + { + Fail("Convert_From_Ascii - value == NULL"); + } + if (isalpha(*str)) + { + cout << "Convert_From_Ascii - str == " << str << "\n"; + Fail("Convert_From_Ascii - isalpha(*str)"); + } +} + +void + Convert_From_Ascii( + const char *str, + char *value + ) +{ + #if 0 + Check_Pointer(str); + Check_Pointer(value); + if (isalpha(*str)) + { + Dump(str); + } + Verify(!isalpha(*str)); + #else + Verify_Arguments(str, value); + #endif + *value = (char)atoi(str); +} + +void + Convert_From_Ascii( + const char *str, + unsigned char *value + ) +{ + #if 0 + Check_Pointer(str); + Check_Pointer(value); + if (isalpha(*str)) + { + Dump(str); + } + Verify(!isalpha(*str)); + #else + Verify_Arguments(str, value); + #endif + *value = (unsigned char)atoi(str); +} + +void + Convert_From_Ascii( + const char *str, + int *value + ) +{ + #if 0 + Check_Pointer(str); + Check_Pointer(value); + if (isalpha(*str)) + { + Dump(str); + } + Verify(!isalpha(*str)); + #else + Verify_Arguments(str, value); + #endif + *value = atoi(str); +} + +void + Convert_From_Ascii( + const char *str, + unsigned int *value + ) +{ + #if 0 + Check_Pointer(str); + Check_Pointer(value); + if (isalpha(*str)) + { + Dump(str); + } + Verify(!isalpha(*str)); + #else + Verify_Arguments(str, value); + #endif + *value = atoi(str); +} + +void + Convert_From_Ascii( + const char *str, + long *value + ) +{ + #if 0 + Check_Pointer(str); + Check_Pointer(value); + if (isalpha(*str)) + { + Dump(str); + } + Verify(!isalpha(*str)); + #else + Verify_Arguments(str, value); + #endif + *value = atol(str); +} + +void + Convert_From_Ascii( + const char *str, + unsigned long *value + ) +{ + #if 0 + Check_Pointer(str); + Check_Pointer(value); + if (isalpha(*str)) + { + Dump(str); + } + Verify(!isalpha(*str)); + #else + Verify_Arguments(str, value); + #endif + *value = atol(str); +} + +void + Convert_From_Ascii( + const char *str, + Scalar *value + ) +{ + #if 0 + Check_Pointer(str); + Check_Pointer(value); + if (isalpha(*str)) + { + Dump(str); + } + Verify(!isalpha(*str)); + #else + Verify_Arguments(str, value); + #endif + *value = atof(str); +} + + diff --git a/CODE/RP/MUNGA/SCALAR.HPP b/CODE/RP/MUNGA/SCALAR.HPP new file mode 100644 index 0000000..da47b36 --- /dev/null +++ b/CODE/RP/MUNGA/SCALAR.HPP @@ -0,0 +1,74 @@ +//===========================================================================// +// File: scalar.hpp // +// Project: MUNGA Brick: None assigned - coding styles, etc. // +// Contents: Base information used by all MUNGA source files // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// PROPRIETARY AND CONFIDENTIAL // +//===========================================================================// + +#if !defined(SCALAR_HPP) +# define SCALAR_HPP + +# if !defined(MEMSTRM_HPP) +# include +# endif + +# if !defined(M_PI) +# define M_PI 3.14159265358979323846 +# endif + + typedef float Scalar; + +# define PI ((Scalar)(M_PI)) +# define PI_OVER_2 ((Scalar)(M_PI/2.0)) +# define PI_OVER_3 ((Scalar)(M_PI/3.0)) +# define PI_OVER_4 ((Scalar)(M_PI/4.0)) +# define PI_OVER_6 ((Scalar)(M_PI/6.0)) +# define TWO_PI ((Scalar)(2.0*M_PI)) +# define DEG_PER_RAD ((Scalar)(180.0/M_PI)) +# define RAD_PER_DEG ((Scalar)(M_PI/180.0)) + + inline Scalar Lerp(Scalar a, Scalar b, Scalar t) + {return a*(1.0f - t) + b*t;} + inline Logical Small_Enough(Scalar x,Scalar e=SMALL) + {return fabs(x) <= e;} + inline Logical Close_Enough(Scalar x,Scalar y,Scalar e=SMALL) + {return fabs(x-y) <= e;} + + int + Round(Scalar value); + + + + void + Find_Roots( + Scalar a, // a*x*x + b*x + c = 0 + Scalar b, + Scalar c, + Scalar *center, + Scalar *range + ); + + inline MemoryStream& + MemoryStream_Read( + MemoryStream* stream, + Scalar *output + ) + {return stream->ReadBytes(output, sizeof(*output));} + inline MemoryStream& + MemoryStream_Write( + MemoryStream* stream, + const Scalar *input + ) + {return stream->WriteBytes(input, sizeof(*input));} + + void + Convert_From_Ascii(const char *str, Scalar *value); + + +#endif + diff --git a/CODE/RP/MUNGA/SCHAIN.CPP b/CODE/RP/MUNGA/SCHAIN.CPP new file mode 100644 index 0000000..c8d99f2 --- /dev/null +++ b/CODE/RP/MUNGA/SCHAIN.CPP @@ -0,0 +1,505 @@ +//===========================================================================// +// File: schain.cc // +// Contents: Implementation details of safe chains // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 09/29/94 ECH Initial coding. // +// 11/01/94 JMA Made compatible with SGI CC, merged with iterator // +// 11/03/94 ECH Made compatible with BC4.0 // +// 11/05/94 JMA Made compatible with GNU C++ // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// PROPRIETARY AND CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(SCHAIN_HPP) + #include +#endif + +#if !defined(NODE_HPP) + #include +#endif + +// +//########################################################################### +// SCHAINLINK +//########################################################################### +// + +MemoryBlock + SChainLink::AllocatedMemory( + sizeof(SChainLink), + SCHAINLINK_MEMORYBLOCK_ALLOCATION, + SCHAINLINK_MEMORYBLOCK_ALLOCATION, + "SChainLink" + ); + +// +//########################################################################### +// SChainLink +//########################################################################### +// +SChainLink::SChainLink( + SChain *chain, + Plug *plug, + SChainLink *nextSChainLink, + SChainLink *prevSChainLink +): + Link(chain, plug) +{ + // + //------------------------- + // Link into existing chain + //------------------------- + // + if ((this->nextSChainLink = nextSChainLink) != NULL) + { + Check(nextSChainLink); + nextSChainLink->prevSChainLink = this; + } + if ((this->prevSChainLink = prevSChainLink) != NULL) + { + Check(prevSChainLink); + prevSChainLink->nextSChainLink = this; + } +} + +// +//########################################################################### +// ~SChainLink +//########################################################################### +// +SChainLink::~SChainLink() +{ + SChain *chain = Cast_Object(SChain*, socket); + + // + //--------------------------------------------- + // Notify iterators that the link is going away + //--------------------------------------------- + // + chain->SendIteratorMemo(PlugRemoved, this); + + // + //--------------------------- + // Remove from existing links + //--------------------------- + // + if (prevSChainLink != NULL) + { + Check(prevSChainLink); + prevSChainLink->nextSChainLink = nextSChainLink; + } + else + { + Check(chain); + chain->head = nextSChainLink; + } + if (nextSChainLink != NULL) + { + Check(nextSChainLink); + nextSChainLink->prevSChainLink = prevSChainLink; + } + else + { + Check(chain); + chain->tail = prevSChainLink; + } + prevSChainLink = nextSChainLink = NULL; + + // + //------------------------------------------ + // Remove this link from any plug references + //------------------------------------------ + // + ReleaseFromPlug(); + + // + //------------------------------------------------------------- + // Tell the node to release this link. Note that this link + // is not referenced by the plug or the chain at this point in + // time. + //------------------------------------------------------------- + // + if (chain->GetReleaseNode() != NULL) + { + Check(chain->GetReleaseNode()); + chain->GetReleaseNode()->ReleaseLinkHandler(chain, plug); + } +} + +// +//########################################################################### +// TestInstance +//########################################################################### +// +Logical + SChainLink::TestInstance() const +{ + Link::TestInstance(); + + if (prevSChainLink != NULL) + { + Check_Signature(prevSChainLink); + } + if (nextSChainLink != NULL) + { + Check_Signature(nextSChainLink); + } + return True; +} + +// +//########################################################################### +// SCHAIN +//########################################################################### +// + +// +//########################################################################### +// SChain +//########################################################################### +// +SChain::SChain( + Node *node +) : +SafeSocket( + node +) +{ + head = NULL; + tail = NULL; +} + +// +//########################################################################### +// ~SChain +//########################################################################### +// +SChain::~SChain() +{ + SetReleaseNode(NULL); + while (head != NULL) + { + Unregister_Object(head); + delete head; + } +} + +// +//########################################################################### +// TestInstance +//########################################################################### +// +Logical + SChain::TestInstance() const +{ + SafeSocket::TestInstance(); + + if (head != NULL) + { + Check(head); + } + return True; +} + +// +//########################################################################### +// AddImplementation +//########################################################################### +// +void + SChain::AddImplementation( + Plug *plug + ) +{ + tail = new SChainLink(this, plug, NULL, tail); + Register_Object(tail); + if (head == NULL) + { + head = tail; + } +} + +// +//########################################################################### +// InsertPlug +//########################################################################### +// +SChainLink* + SChain::InsertSChainLink( + Plug *plug, + SChainLink *link + ) +{ + Check(this); + Check(link); + Check(plug); + + SChainLink *new_link = + new SChainLink( + this, + plug, + link, + link->prevSChainLink + ); + Register_Object(new_link); + + Check(head); + if (head == link) + { + head = new_link; + } + return new_link; +} + +// +//########################################################################### +// SChainIterator +//########################################################################### +// +SChainIterator::SChainIterator(SChain *chain): + SafeIterator(chain) +{ + Check(chain); + currentLink = chain->head; +} + +SChainIterator::SChainIterator(const SChainIterator &iterator): + SafeIterator(Cast_Object(SChain*, iterator.socket)) +{ + Check(&iterator); + currentLink = iterator.currentLink; +} + +SChainIterator::~SChainIterator() +{ +} + +// +//########################################################################### +// TestInstance +//########################################################################### +// +Logical + SChainIterator::TestInstance() const +{ + SafeIterator::TestInstance(); + + if (currentLink != NULL) + { + Check(currentLink); + } + return True; +} + +// +//########################################################################### +// First +//########################################################################### +// +void + SChainIterator::First() +{ + currentLink = Cast_Object(SChain*, socket)->head; +} + +// +//########################################################################### +// Last +//########################################################################### +// +void + SChainIterator::Last() +{ + currentLink = Cast_Object(SChain*, socket)->tail; +} + +// +//########################################################################### +// Next +//########################################################################### +// +void + SChainIterator::Next() +{ + Check(currentLink); + currentLink = currentLink->nextSChainLink; +} + +// +//########################################################################### +// Previous +//########################################################################### +// +void + SChainIterator::Previous() +{ + Check(currentLink); + currentLink = currentLink->prevSChainLink; +} + +// +//########################################################################### +// ReadAndNextImplementation +//########################################################################### +// +void* + SChainIterator::ReadAndNextImplementation() +{ + if (currentLink != NULL) + { + Plug *plug; + + Check(currentLink); + plug = currentLink->GetPlug(); + currentLink = currentLink->nextSChainLink; + return plug; + } + return NULL; +} + +// +//########################################################################### +// ReadAndPreviousImplementation +//########################################################################### +// +void* + SChainIterator::ReadAndPreviousImplementation() +{ + if (currentLink != NULL) + { + Plug *plug; + + Check(currentLink); + plug = currentLink->plug; + currentLink = currentLink->prevSChainLink; + return plug; + } + return NULL; +} + +// +//########################################################################### +// GetCurrentImplementation +//########################################################################### +// +void* + SChainIterator::GetCurrentImplementation() +{ + if (currentLink != NULL) + { + Check(currentLink); + return currentLink->GetPlug(); + } + return NULL; +} + +// +//########################################################################### +// GetSize +//########################################################################### +// +CollectionSize + SChainIterator::GetSize() +{ + SChainLink *link; + CollectionSize count; + + count = 0; + for ( + link = Cast_Object(SChain*, socket)->head; + link != NULL; + link = link->nextSChainLink + ) + { + Check(link); + count++; + } + return count; +} + +// +//########################################################################### +// GetNthImplementation +//########################################################################### +// +void* + SChainIterator::GetNthImplementation( + CollectionSize index + ) +{ + SChainLink *link; + CollectionSize count; + + count = 0; + for ( + link = Cast_Object(SChain*, socket)->head; + link != NULL; + link = link->nextSChainLink + ) + { + Check(link); + if (count == index) + { + currentLink = link; + return currentLink->GetPlug(); + } + count++; + } + return NULL; +} + +// +//########################################################################### +// Remove +//########################################################################### +// +void + SChainIterator::Remove() +{ + Check(currentLink); + Unregister_Object(currentLink); + delete currentLink; +} + +// +//############################################################################# +// InsertImplementation +//############################################################################# +// +void + SChainIterator::InsertImplementation(Plug *plug) +{ + currentLink = + Cast_Object(SChain*, socket)->InsertSChainLink(plug, currentLink); + Check(currentLink); +} + +// +//########################################################################### +// ReceiveMemo +//########################################################################### +// +void + SChainIterator::ReceiveMemo( + IteratorMemo memo, + void *content + ) +{ + if (memo == PlugRemoved) + { + if (content == currentLink) + { + Next(); + } + } +} + +#ifdef TEST_CLASS +# include "schain.tcp" +#endif diff --git a/CODE/RP/MUNGA/SCHAIN.HPP b/CODE/RP/MUNGA/SCHAIN.HPP new file mode 100644 index 0000000..ee0d1cb --- /dev/null +++ b/CODE/RP/MUNGA/SCHAIN.HPP @@ -0,0 +1,324 @@ +//===========================================================================// +// File: schain.hh // +// Project: MUGNA Brick: Connection engine // +// Contents: Interface definition for safe chains // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 09/29/94 ECH Initial coding. // +// 11/01/94 JMA Made compatible with SGI CC, merged with iterator // +// 11/03/94 ECH Made compatible with BC4.0 // +// 11/05/94 JMA Made compatible with GNU C++ // +// 12/12/94 ECH Changed release mechanism // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// PROPRIETARY AND CONFIDENTIAL // +//===========================================================================// + +#if !defined(SCHAIN_HPP) +# define SCHAIN_HPP + +# if !defined(SFESKT_HPP) +# include +# endif + +# if !defined(MEMBLOCK_HPP) +# include +# endif + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SChainLink ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + #define SCHAINLINK_MEMORYBLOCK_ALLOCATION (100) + + class SChainLink: + public Link + { + friend class SChain; + friend class SChainIterator; + + public: + ~SChainLink(); + Logical + TestInstance() const; + + private: + SChainLink( + SChain *chain, + Plug *plug, + SChainLink *nextSChainLink, + SChainLink *prevSChainLink + ); + + SChainLink *nextSChainLink; + SChainLink *prevSChainLink; + + private: + static MemoryBlock + AllocatedMemory; + + void* + operator new(size_t) + {return AllocatedMemory.New();} + void + operator delete(void *where) + {AllocatedMemory.Delete(where);} + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SChain ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class SChain: + public SafeSocket + { + friend class SChainLink; + friend class SChainIterator; + + public: + // + //----------------------------------------------------------------------- + //----------------------------------------------------------------------- + // Public interface + //----------------------------------------------------------------------- + //----------------------------------------------------------------------- + // + SChain(Node *node); + ~SChain(); + + Logical + TestInstance() const; + static void + TestClass(); + static void + ProfileClass(); + + protected: + // + //----------------------------------------------------------------------- + //----------------------------------------------------------------------- + // Protected interface + //----------------------------------------------------------------------- + //----------------------------------------------------------------------- + // + void + AddImplementation(Plug *plug); + + private: + // + //----------------------------------------------------------------------- + // Private utilities + //----------------------------------------------------------------------- + // + SChainLink* + InsertSChainLink( + Plug *plug, + SChainLink *link + ); + + // + //----------------------------------------------------------------------- + // Private data + //----------------------------------------------------------------------- + // + SChainLink *head; + SChainLink *tail; + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SChainOf ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + template class SChainOf: + public SChain + { + public: + // + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // Public interface + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // + SChainOf(Node *node); + ~SChainOf(); + + // + //-------------------------------------------------------------------- + // Socket methods (see Socket for full listing) + //-------------------------------------------------------------------- + // + void + Add(T plug) + {AddImplementation(Cast_Object(Plug*,plug));} + }; + + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~ SChainOf templates ~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + template + SChainOf::SChainOf(Node *node): + SChain(node) + { + } + + template + SChainOf::~SChainOf() + { + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SChainIterator ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class SChainIterator: + public SafeIterator + { + public: + // + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // Public interface + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // + + // + //-------------------------------------------------------------------- + // Constructors, Destructor and testing + //-------------------------------------------------------------------- + // + SChainIterator(SChain *chain); + SChainIterator(const SChainIterator &iterator); + ~SChainIterator(); + + Logical + TestInstance() const; + + // + //-------------------------------------------------------------------- + // Iterator methods (see Iterator for full listing) + //-------------------------------------------------------------------- + // + void + First(); + void + Last(); + void + Next(); + void + Previous(); + CollectionSize + GetSize(); + void + Remove(); + + protected: + // + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // Protected interface + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // + void* + ReadAndNextImplementation(); + void* + ReadAndPreviousImplementation(); + void* + GetCurrentImplementation(); + void* + GetNthImplementation( + CollectionSize index + ); + void + InsertImplementation(Plug *plug); + + private: + // + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // Private interface + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // + void + ReceiveMemo( + IteratorMemo memo, + void *content + ); + + // + //-------------------------------------------------------------------- + // Private data + //-------------------------------------------------------------------- + // + SChainLink *currentLink; + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SChainIteratorOf ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + template class SChainIteratorOf: + public SChainIterator + { + public: + // + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // Public interface + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // + + // + //-------------------------------------------------------------------- + // Constructors and Destructor + //-------------------------------------------------------------------- + // + SChainIteratorOf(SChainOf *chain); + SChainIteratorOf(SChainOf &chain); + SChainIteratorOf(const SChainIteratorOf &iterator); + + ~SChainIteratorOf(); + + // + //-------------------------------------------------------------------- + // Iterator methods (see Iterator for full listing) + //-------------------------------------------------------------------- + // + T + ReadAndNext() + {return (T)ReadAndNextImplementation();} + T + ReadAndPrevious() + {return (T)ReadAndPreviousImplementation();} + T + GetCurrent() + {return (T)GetCurrentImplementation();} + T + GetNth(CollectionSize index) + {return (T)GetNthImplementation(index);} + void + Insert(T plug) + {InsertImplementation(Cast_Object(Plug*,plug));} + }; + + //~~~~~~~~~~~~~~~~~~~~~~~ SChainIteratorOf templates ~~~~~~~~~~~~~~~~~~~~~~~ + + template + SChainIteratorOf::SChainIteratorOf(SChainOf *chain): + SChainIterator(chain) + { + } + + template + SChainIteratorOf::SChainIteratorOf(SChainOf &chain): + SChainIterator(&chain) + { + } + + template + SChainIteratorOf::SChainIteratorOf(const SChainIteratorOf &iterator): + SChainIterator(iterator) + { + } + + template + SChainIteratorOf::~SChainIteratorOf() + { + } + +#endif diff --git a/CODE/RP/MUNGA/SCHAIN.TCP b/CODE/RP/MUNGA/SCHAIN.TCP new file mode 100644 index 0000000..7ba54c0 --- /dev/null +++ b/CODE/RP/MUNGA/SCHAIN.TCP @@ -0,0 +1,526 @@ +//======================================================================= +// File: SCHNTST.CPP +// +// Created: Thursday, September 29, 1994, 2:37 PM +// Author: Eric Huffman +// Project: Node.Û +// Compiler: 7.0, Û Symantec Corporation 1994 +//----------------------------------------------------------------------- +// 11/03/94 ECH Made compatible with BC4.0 +//----------------------------------------------------------------------- +// Copyright (C) 1994, Virtual World Entertainments, All Rights reserved +// PROPRIETARY AND CONFIDENTIAL +//======================================================================= + +#include "time.hpp" + +class SChainTestPlug: + public Plug +{ +public: + long value; + + SChainTestPlug(long value); + ~SChainTestPlug(); +}; + +class SChainTestNode: + public Node +{ +public: + SChainOf + chain1, + chain2; + + SChainTestNode(); + ~SChainTestNode(); + + void RunProfile(); + void RunTest(); +}; + +SChainTestPlug::SChainTestPlug(long value): + Plug() +{ + this->value = value; +} + +SChainTestPlug::~SChainTestPlug() +{ +} + +SChainTestNode::SChainTestNode(): + Node(), chain1(this), chain2(this) +{ +} + +SChainTestNode::~SChainTestNode() +{ +} + +#define RandInt(x) (rand() % x + 1) + +// +//########################################################################### +// ProfileClass +//########################################################################### +// + +void + SChain::ProfileClass() +{ + SChainTestNode testNode; + Time startTicks = Now(); + + Test_Message("SChain::ProfileClass\n"); + + testNode.RunProfile(); + + Test_Message("SChain::ProfileClass elapsed = " << (Now() - startTicks) << endl); +} + +// +//########################################################################### +// TestClass +//########################################################################### +// + +void + SChain::TestClass() +{ + DEBUG_STREAM << "Starting SChain test...\n"; + + SChainTestNode testNode; + + testNode.RunTest(); +} + +void + SChainTestNode::RunProfile() +{ + SChainTestPlug *testPlug1; + int i; + Time startTicks; + + // + //-------------------------------------------------------------------- + // Run timing tests + //-------------------------------------------------------------------- + // + + /* + * Create plugs and add to both sockets + */ + startTicks = Now(); + for (i = 0; i < TEST_CLASS; i++) + { + testPlug1 = new SChainTestPlug(i); + Register_Object( testPlug1 ); + chain1.Add(testPlug1); + chain2.Add(testPlug1); + } + Test_Message("SChainTestNode::RunTest Create = " << (Now() - startTicks) << endl); + + /* + * Iterate over both sockets + */ + startTicks = Now(); + { + SChainIteratorOf iterator1(&chain1); + SChainIteratorOf iterator2(&chain2); + + Verify( iterator1.GetSize() == TEST_CLASS ); + Verify( iterator2.GetSize() == TEST_CLASS ); + + i = 0; + while ((testPlug1 = iterator1.ReadAndNext()) != NULL) + { + Check( testPlug1 ); + Verify( testPlug1->value == i ); + i++; + } + Verify( i == TEST_CLASS ); + + i = 0; + while ((testPlug1 = iterator2.ReadAndNext()) != NULL) + { + Check( testPlug1 ); + Verify( testPlug1->value == i ); + i++; + } + Verify( i == TEST_CLASS ); + } + Test_Message("SChainTestNode::RunTest Iterate = " << (Now() - startTicks) << endl); + + /* + * Destroy from chain1, verify with chain2 + */ + startTicks = Now(); + { + SChainIteratorOf iterator1(&chain1); + SChainIteratorOf iterator2(&chain2); + + Verify( iterator1.GetSize() == TEST_CLASS ); + Verify( iterator2.GetSize() == TEST_CLASS ); + + i = 0; + while ((testPlug1 = iterator1.ReadAndNext()) != NULL) + { + Check( testPlug1 ); + Verify( testPlug1->value == i ); + i++; + + Unregister_Object( testPlug1 ); + delete(testPlug1); + } + Verify( i == TEST_CLASS ); + + Verify( iterator1.GetSize() == 0 ); + Verify( iterator2.GetSize() == 0 ); + } + Test_Message("SChainTestNode::RunTest Destroy = " << (Now() - startTicks) << endl); +} + +void + SChainTestNode::RunTest() +{ + SChainTestPlug *testPlug1, *testPlug2; + int i, j; +// Time startTicks; + + // + //-------------------------------------------------------------------- + // Stress tests + //-------------------------------------------------------------------- + // + + /* + * Create plugs and add to both sockets + */ + for (i = 0; i < TEST_CLASS; i++) + { + testPlug1 = new SChainTestPlug(i); + Register_Object( testPlug1 ); + chain1.Add(testPlug1); + chain2.Add(testPlug1); + } + + /* + * Test first and last + */ + { + SChainIteratorOf iterator1(&chain1); + SChainIteratorOf iterator2(&chain2); + + Verify( iterator1.GetSize() == TEST_CLASS ); + Verify( iterator2.GetSize() == TEST_CLASS ); + + iterator1.First(); + iterator2.First(); + + testPlug1 = iterator1.GetCurrent(); + testPlug2 = iterator2.GetCurrent(); + Check( testPlug1 ); + Check( testPlug2 ); + + Verify( testPlug1 == testPlug2 ); + Verify( testPlug1 == iterator1.GetNth(0) ); + Verify( testPlug1 == iterator2.GetNth(0) ); + + iterator1.Last(); + iterator2.Last(); + + testPlug1 = iterator1.GetCurrent(); + testPlug2 = iterator2.GetCurrent(); + Check( testPlug1 ); + Check( testPlug2 ); + + Verify( testPlug1 == testPlug2 ); + Verify( testPlug1 == iterator1.GetNth(TEST_CLASS - 1) ); + Verify( testPlug1 == iterator2.GetNth(TEST_CLASS - 1) ); + } + + /* + * Test next and prev + */ + { + SChainIteratorOf iterator1(&chain1); + SChainIteratorOf iterator2(&chain2); + + Verify( iterator1.GetSize() == TEST_CLASS ); + Verify( iterator2.GetSize() == TEST_CLASS ); + + i = 0; + while ((testPlug1 = iterator1.GetCurrent()) != NULL) + { + testPlug2 = iterator2.GetCurrent(); + + Check( testPlug1 ); + Check( testPlug2 ); + Verify( testPlug1 == testPlug2 ); + + Verify( testPlug1->value == i ); + Verify( testPlug2->value == i ); + + iterator1.Next(); + iterator2.Next(); + + i++; + } + Verify( i == TEST_CLASS ); + + iterator1.Last(); + iterator2.Last(); + + i = TEST_CLASS - 1; + while ((testPlug1 = iterator1.GetCurrent()) != NULL) + { + testPlug2 = iterator2.GetCurrent(); + + Check( testPlug1 ); + Check( testPlug2 ); + Verify( testPlug1 == testPlug2 ); + + Verify( testPlug1->value == i ); + Verify( testPlug2->value == i ); + + iterator1.Previous(); + iterator2.Previous(); + + i--; + } + Verify( i == -1 ); + } + + /* + * Test read next and read prev + */ + { + SChainIteratorOf iterator1(&chain1); + SChainIteratorOf iterator2(&chain2); + + Verify( iterator1.GetSize() == TEST_CLASS ); + Verify( iterator2.GetSize() == TEST_CLASS ); + + i = 0; + while ((testPlug1 = iterator1.ReadAndNext()) != NULL) + { + testPlug2 = iterator2.ReadAndNext(); + + Check( testPlug1 ); + Check( testPlug2 ); + Verify( testPlug1 == testPlug2 ); + + Verify( testPlug1->value == i ); + Verify( testPlug2->value == i ); + + i++; + } + Verify( i == TEST_CLASS ); + + iterator1.Last(); + iterator2.Last(); + + i = TEST_CLASS - 1; + while ((testPlug1 = iterator1.ReadAndPrevious()) != NULL) + { + testPlug2 = iterator2.ReadAndPrevious(); + + Check( testPlug1 ); + Check( testPlug2 ); + Verify( testPlug1 == testPlug2 ); + + Verify( testPlug1->value == i ); + Verify( testPlug2->value == i ); + + i--; + } + Verify( i == -1 ); + } + + /* + * Test nth + */ + { + SChainIteratorOf iterator1(&chain1); + SChainIteratorOf iterator2(&chain2); + + Verify( iterator1.GetSize() == TEST_CLASS ); + Verify( iterator2.GetSize() == TEST_CLASS ); + + for (i = 0; i < TEST_CLASS; i++) + { + testPlug1 = iterator1.GetNth(i); + testPlug2 = iterator2.GetNth(i); + + Check( testPlug1 ); + Check( testPlug2 ); + Verify( testPlug1 == testPlug2 ); + + Verify( testPlug1->value == i ); + Verify( testPlug2->value == i ); + } + } + + /* + * Test Remove + */ + { + SChainIteratorOf iterator1(&chain1); + SChainIteratorOf iterator2(&chain2); + + Verify( iterator1.GetSize() == TEST_CLASS ); + Verify( iterator2.GetSize() == TEST_CLASS ); + + i = 0; + while ((testPlug1 = iterator1.GetCurrent()) != NULL) + { + Check( testPlug1 ); + Verify( testPlug1->value == i ); + + iterator1.Remove(); + + testPlug2 = iterator2.GetNth(0); + + Check( testPlug2 ); + Verify( testPlug2->value == i ); + Verify( testPlug1 == testPlug2 ); + + Unregister_Object( testPlug2 ); + delete(testPlug2); + + i++; + } + Verify( i == TEST_CLASS ); + Verify( iterator1.GetSize() == 0 ); + Verify( iterator2.GetSize() == 0 ); + } + + /* + * Test random deletion + */ + { + /* + * Add plugs to both sockets + */ + SChainIteratorOf iterator1(chain1); + SChainIteratorOf iterator2(chain2); + + Verify( iterator1.GetSize() == 0 ); + Verify( iterator2.GetSize() == 0 ); + + for (i = 0; i < TEST_CLASS; i++) + { + testPlug1 = new SChainTestPlug(i); + Register_Object( testPlug1 ); + chain1.Add(testPlug1); + chain2.Add(testPlug1); + } + } + + { + /* + * Perform random deletion + */ + int size, index; + SChainIteratorOf iterator1(chain1); + SChainIteratorOf iterator2(chain2); + + Verify( iterator1.GetSize() == TEST_CLASS ); + Verify( iterator2.GetSize() == TEST_CLASS ); + + i = 0; + while((size = iterator1.GetSize()) != 0) + { + index = RandInt(size) - 1; + testPlug1 = iterator1.GetNth(index); + Check( testPlug1 ); + iterator1.Remove(); + + testPlug2 = iterator2.GetNth(index); + Check( testPlug2 ); + Verify( testPlug1 == testPlug2 ); + + Unregister_Object( testPlug2 ); + delete(testPlug2); + + i++; + } + Verify( i == TEST_CLASS ); + Verify( iterator1.GetSize() == 0 ); + Verify( iterator2.GetSize() == 0 ); + } + + /* + * Test insertion + */ + { + SChainIteratorOf iterator1(chain1); + + Verify(iterator1.GetSize() == 0); + + for (i = 0; i < TEST_CLASS; i++) + { + testPlug1 = new SChainTestPlug(i); + Register_Object(testPlug1); + + if (i == 0) + { + chain1.Add(testPlug1); + } + else + { + iterator1.First(); + iterator1.Insert(testPlug1); + } + } + + for (i = 0, j = TEST_CLASS-1; i < TEST_CLASS; i++, j--) + { + testPlug1 = iterator1.GetNth(i); + Check(testPlug1); + Verify(testPlug1->value == j); + } + + iterator1.DeletePlugs(); + } + { + SChainIteratorOf iterator1(chain1); + + Verify(iterator1.GetSize() == 0); + + for (i = 0; i < TEST_CLASS; i++) + { + testPlug1 = new SChainTestPlug(i); + Register_Object(testPlug1); + + if (i == 0) + { + chain1.Add(testPlug1); + } + else + { + iterator1.Last(); + iterator1.Insert(testPlug1); + } + } + + for (i = 0; i < TEST_CLASS; i++) + { + testPlug1 = iterator1.GetNth(i); + Check(testPlug1); + if (i == TEST_CLASS-1) + { + Verify(testPlug1->value == 0); + } + else + { + Verify(testPlug1->value == i+1); + } + } + + iterator1.DeletePlugs(); + } + +} + diff --git a/CODE/RP/MUNGA/SCNROLE.HPP b/CODE/RP/MUNGA/SCNROLE.HPP new file mode 100644 index 0000000..6685803 --- /dev/null +++ b/CODE/RP/MUNGA/SCNROLE.HPP @@ -0,0 +1,162 @@ +//===========================================================================// +// File: scnrole.hpp // +// Project: MUNGA // +// Contents: Scenario Mission Specific Data // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 01/9/96 JM initial coding // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined (SCNROLE_HPP) +# define SCNROLE_HPP + +# if !defined (NODE_HPP) +# include +# endif + +# if !defined (CSTR_HPP) +# include +# endif + +# if !defined(RESOURCE_HPP) +# include +# endif + +# if !defined(SCALAR_HPP) +# include +# endif + + class NotationFile; + +//############################################################################## +//##################### ScenarioRole::ModelResource ###################### +//############################################################################## + + struct ScenarioRole__ModelResource + { + Scalar + killBonus, + damageReceivedModifier, + damageInflictedModifier, + damageBias, + friendlyFirePenalty; + + int + returnFromDeath; + }; + +//########################################################################### +//##################### Class ScenarioRole ############################# +//########################################################################### + +class ScenarioRole : + public Node +{ + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Score Support + // + public: + + Scalar + CalcDamageReceivedScore(const Scalar &damage_received); + + protected: + + Scalar + damageInflictedModifier, + damageReceivedModifier, + friendlyFirePenalty, + damageBias, + killBonus; + + CString + roleName; + + int + returnFromDeath; + + public: + + const int + GetReturnFromDeath() + { Check(this); return returnFromDeath; } + + Scalar + GetDamageInflictedModifier() const + { Check(this); return damageInflictedModifier; } + + Scalar + GetDamageReceivedModifier() const + { Check(this); return damageReceivedModifier; } + + Scalar + GetFriendlyFirePenalty() const + { Check(this); return friendlyFirePenalty; } + + Scalar + GetDamageBias() const + { Check(this); return damageBias; } + + Scalar + GetKillBonus() const + { Check(this); return killBonus; } + + CString + GetRoleName() const + {Check(this); return roleName; } + + void + SetDamageInflictedModifier(const Scalar &value) + { Check(this); damageInflictedModifier = value; } + + void + SetDamageReceivedModifier(const Scalar value) + { Check(this); damageReceivedModifier = value; } + + void + SetFriendlyFirePenalty(const Scalar &value) + { Check(this); friendlyFirePenalty = value; } + + void + SetDamageBias(const Scalar &value) + { Check(this); damageBias = value; } + + void + SetKillBonus(const Scalar &value) + { Check(this); killBonus = value; } + + void + SetReturnFromDeath(const int &value) + { Check(this); returnFromDeath = value ; } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Construction / Destruction + + public: + + typedef ScenarioRole__ModelResource ModelResource; + + ScenarioRole( + const CString &role_name, + const CString &model_file + ); + + ScenarioRole(const CString &role_name); + + ~ScenarioRole(); + + static ResourceDescription::ResourceID + CreateModelResource( + ResourceFile *resource_file, + const char* model_name, + NotationFile * model_file, + const ResourceDirectories *directories, + ModelResource *model = NULL + ); +}; +#endif diff --git a/CODE/RP/MUNGA/SEGMENT.CPP b/CODE/RP/MUNGA/SEGMENT.CPP new file mode 100644 index 0000000..6a46475 --- /dev/null +++ b/CODE/RP/MUNGA/SEGMENT.CPP @@ -0,0 +1,294 @@ +//===========================================================================// +// File: segment.cc // +// Project: MUNGA Brick: Model Manager // +// Contents: Skeleton Heirachical element // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 10/11/95 JM Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(SEGMENT_HPP) +# include +#endif + +#if !defined(JOINT_HPP) +# include +#endif + +//############################################################################# +// Segment::VideoObjectNames Support +// + +CString* + EntitySegment::VideoObjectNames::GetVideoObjectName( + Enumeration damage_graphic_state + ) +{ + Check(this); + CStringPlug *my_plug = videoObjectNames.Find(damage_graphic_state); + if (my_plug) + { + Check(my_plug); + return my_plug->GetPointer(); + } + return NULL; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +EntitySegment::VideoObjectNames::VideoObjectNames() : + videoObjectNames(NULL, False) +{ +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +EntitySegment::VideoObjectNames::~VideoObjectNames() +{ + VChainIteratorOf iterator(videoObjectNames); + iterator.DeletePlugs(); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + EntitySegment::VideoObjectNames::AddVideoObjectName( + const CString &new_name, + Enumeration damage_graphic_state + ) +{ + Check(this); + CStringPlug *new_string = new CStringPlug(new_name); + Register_Object(new_string); + + videoObjectNames.AddValue(new_string, damage_graphic_state); +} + + +//############################################################################# +// Segment Support +// + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +EntitySegment::EntitySegment( + CString segment_name, + int this_index, + int parent_index, + int joint_index, + Joint *joint_ptr, + LinearMatrix &lin_matrix, + EntitySegment *parent_segment, + Logical is_site, + int primary_damage_zone +) : + baseOffset(LinearMatrix::Identity), + childIndexTable(NULL, True), + damageZoneTable(NULL,True), + videoObjectTable(NULL,True), + childPointerTable(NULL,True) +{ + segmentModified = True; + thisIndex = this_index; + parentIndex = parent_index; + jointIndex = joint_index; + jointPointer = joint_ptr; + baseOffset = lin_matrix; + parentSegment =parent_segment; + segmentName = segment_name; + siteSegment = is_site; + primaryDamageZone = primary_damage_zone; // Add To constructor Call + + segmentToParent = baseOffset; + segmentToEntity = baseOffset; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +CString* + EntitySegment::GetVideoObjectName( + SkeletonType skl_type, + Enumeration damage_graphic_state + ) +{ + Check(this); + VideoObjectNames *video_names = videoObjectTable.Find(skl_type); + if(video_names) + { + return video_names->GetVideoObjectName(damage_graphic_state); + } + else + { + return NULL; + } +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +EntitySegment::~EntitySegment() +{ + IntegerTableIterator iterator_child( childIndexTable); + iterator_child.DeletePlugs(); + + IntegerTableIterator iterator_damage(damageZoneTable); + iterator_damage.DeletePlugs(); + + VideoTableIterator iterator_video(videoObjectTable); + iterator_video.DeletePlugs(); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + EntitySegment::AddChildIndex(int child_index, int index) +{ + Check(this); + IntegerPlug *child_plug = new IntegerPlug(child_index); + Register_Object(child_plug); + childIndexTable.AddValue(child_plug, index); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + EntitySegment::AddChildPointer(EntitySegment* child_ptr, int index) +{ + Check(this); + childPointerTable.AddValue(child_ptr, index); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + EntitySegment::AddDamageZone(int damage_index, int index) +{ + Check(this); + Check_Pointer(&damageZoneTable); + IntegerPlug *damage_plug = new IntegerPlug(damage_index); + Register_Object(damage_plug); + damageZoneTable.AddValue(damage_plug, index); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + EntitySegment::AddVideoObjectName( + CString video_object_name, + Enumeration skl_type, + Enumeration damage_graphic_state + ) +{ + Check(this); + Check_Pointer(&videoObjectTable); + VideoTableIterator iterator(videoObjectTable); + + VideoObjectNames *names_plug = iterator.Find(skl_type); + if(!names_plug) + { + names_plug = new VideoObjectNames(); + Register_Object(names_plug); + videoObjectTable.AddValue(names_plug, skl_type); + } + names_plug->AddVideoObjectName(video_object_name, damage_graphic_state); + +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +const LinearMatrix& + EntitySegment::GetSegmentToParent() +{ + Check(this); + + // + //----------------------------------------------------------------------- + // Recalculate the segment to parent matrix if we have a joint and it has + // changed + //----------------------------------------------------------------------- + // + if (jointPointer) + { + Check(jointPointer); + if (jointPointer->IsJointModified()) + { + jointPointer->JointModified(False); + LinearMatrix + t1 = baseOffset, + t2; + + switch(jointPointer->GetJointType()) + { + case Joint::BallJointType: + { + LinearMatrix euler_angles = LinearMatrix::Identity; + euler_angles = jointPointer->GetEulerAngles(); + t2.Invert(euler_angles); + segmentToParent.Multiply(t1,t2); + } + break; + + case Joint::HingeXJointType: + case Joint::HingeYJointType: + case Joint::HingeZJointType: + { + LinearMatrix hinge_joint = LinearMatrix::Identity; + hinge_joint = jointPointer->GetHinge(); + t2.Invert(hinge_joint); + segmentToParent.Multiply(t1,t2); + } + break; + + case Joint::BallTranslationJointType: + { + // + //------------------------------------- + // We only want to invert the rotations + //------------------------------------- + // + LinearMatrix euler_angles = LinearMatrix::Identity; + euler_angles = jointPointer->GetEulerAngles(); + segmentToParent.Invert(euler_angles); + t2.Multiply(t1,segmentToParent); + t1 = LinearMatrix::Identity; + t1 = jointPointer->GetTranslation(); + segmentToParent.Multiply(t2,t1); + } + break; + } + } + } + return segmentToParent; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +const LinearMatrix& + EntitySegment::GetSegmentToEntity() +{ + Check(this); + + // + //--------------------------------------------------------------------- + // Recalculate the segment to entity transform if something has changed + //--------------------------------------------------------------------- + // + if (segmentModified && parentSegment) + { + Check(parentSegment); + segmentToEntity.Multiply( + GetSegmentToParent(), + parentSegment->GetSegmentToEntity() + ); + ModifySegment(False); + } + return segmentToEntity; +} + diff --git a/CODE/RP/MUNGA/SEGMENT.HPP b/CODE/RP/MUNGA/SEGMENT.HPP new file mode 100644 index 0000000..38448f3 --- /dev/null +++ b/CODE/RP/MUNGA/SEGMENT.HPP @@ -0,0 +1,266 @@ +//===========================================================================// +// File: segment.hh // +// Project: MUNGA Brick: Model Manager // +// Contents: Skeleton Heirachical element // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 10/11/95 JM Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// +#if !defined(SEGMENT_HPP) +# define SEGMENT_HPP + +# if !defined(TABLE_HPP) +# include +# endif + +# if !defined(LINMTRX_HPP) +# include +# endif + +# if !defined(CSTR_HPP) +# include +# endif + +# if !defined(VCHAIN_HPP) +# include +# endif + + class DamageZone; + class Joint; + class JointedMover; + +//########################################################################## +//##################### Segment::VideoObjectNames ########################## +//########################################################################## + + class EntitySegment__VideoObjectNames : + public Plug + { + public: + CString* + GetVideoObjectName(Enumeration damage_graphic_state); + + void + AddVideoObjectName( + const CString &new_name, + Enumeration damage_graphic_state + ); + + + EntitySegment__VideoObjectNames(); + ~EntitySegment__VideoObjectNames(); + + protected: + + typedef PlugOf CStringPlug; + + typedef VChainOf + VideoObjectNamesSocket; + + VideoObjectNamesSocket videoObjectNames; + }; + +//########################################################################## +//########################## Segment ############################### +//########################################################################## + + class EntitySegment : + public Plug + { + friend class JointedMover; + + public: + typedef EntitySegment__VideoObjectNames VideoObjectNames; + typedef TableOf SegmentTable; + typedef TableIteratorOf SegmentTableIterator; + typedef PlugOf IntegerPlug; + typedef TableOf IntegerTable; + typedef TableIteratorOf IntegerTableIterator; + + enum SkeletonType { + SkeletonType_N, // Exterior + SkeletonType_S, // Interior + SkeletonType_T, + SkeletonType_O, + SkeletonType_A, + SkeletonType_B, + SkeletonType_C, + SkeletonType_D, + SkeletonTypeCount + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Segment Data + // + protected: + Logical + segmentModified, + siteSegment; + + LinearMatrix + segmentToParent, + segmentToEntity, + baseOffset; + + typedef PlugOf CStringPlug; + typedef TableOf VideoObjectTable; + typedef TableIteratorOf VideoTableIterator; + + VideoObjectTable + videoObjectTable; + + Joint + *jointPointer; + int + jointIndex; + EntitySegment + *parentSegment; + int + parentIndex; + int + thisIndex; + + IntegerTable + damageZoneTable, + childIndexTable; + int + primaryDamageZone; + + SegmentTable + childPointerTable; + + CString + segmentName; + + const LinearMatrix& + GetSegmentToParent(); + + void + SetSegmentToEntity(LinearMatrix& new_matrix) + {Check(this); segmentToEntity = new_matrix;} + void + SetSegmentToParent(LinearMatrix& new_matrix) + {Check(this); segmentToParent = new_matrix;} + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Accessors + // + public: + void + ModifySegment(Logical modified = True) + {Check(this); segmentModified = modified;} + + const LinearMatrix& + GetBaseOffset() const + {Check(this); return baseOffset;} + + const LinearMatrix& + GetSegmentToEntity(); + + int + GetPrimaryDamageZone() const + {Check(this); return primaryDamageZone;} + int + GetParentIndex() const + {Check(this); return parentIndex;} + + const EntitySegment* + GetParent() const + {Check(this); return parentSegment;} + + int + GetIndex() const + {Check(this); return thisIndex;} + + int + IsSiteSegment() + {Check(this); return siteSegment;} + + CString + GetName() const + {Check(this); return segmentName;} + + int + GetJointIndex() const + {Check(this); return jointIndex;} + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Children of Segments Support + // + public: + CString* + GetVideoObjectName( + SkeletonType skl_type = SkeletonType_N, + Enumeration damage_graphic_state = 0 + ); + + void + AddChildIndex(int child_index, int index); + + void + AddChildPointer(EntitySegment *child_pointer, int index); + + void + AddDamageZone(int damage_index, int index); + + void + AddVideoObjectName( + CString video_object_name, + Enumeration skl_type, + Enumeration damage_graphic_state = 0 + ); + + IntegerTableIterator* + MakeChildIndexTable() + { + Check(this); + Check_Pointer(&childIndexTable); + IntegerTableIterator *iterator = new + IntegerTableIterator(&childIndexTable); + return iterator; + } + + IntegerTableIterator* + MakeDamageZoneIndexTable() + { + Check(this); + Check_Pointer(&damageZoneTable); + IntegerTableIterator *iterator = new + IntegerTableIterator(&damageZoneTable); + return iterator; + } + + EntitySegment( + CString segment_name, + int this_index, + int parent_index, + int joint_index, + Joint *joint_ptr, + LinearMatrix &lin_matrix, + EntitySegment *parent_segment, + Logical is_site, + int primary_damage_zone + + ); + ~EntitySegment(); + }; + + inline MemoryStream& + MemoryStream_Read( + MemoryStream* stream, + EntitySegment::SkeletonType *output + ) + {return stream->ReadBytes(output, sizeof(*output));} + inline MemoryStream& + MemoryStream_Write( + MemoryStream* stream, + const EntitySegment::SkeletonType *input + ) + {return stream->WriteBytes(input, sizeof(*input));} + +#endif diff --git a/CODE/RP/MUNGA/SET.CPP b/CODE/RP/MUNGA/SET.CPP new file mode 100644 index 0000000..024a321 --- /dev/null +++ b/CODE/RP/MUNGA/SET.CPP @@ -0,0 +1,162 @@ +//===========================================================================// +// File: set.cpp // +// Project: MUNGA Brick: Connection Engine // +// Contents: Implementation of Sets and useful set operations // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 09/29/94 GDU Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1996 Virtual World Entertainment, Inc. // +// PROPRIETARY AND CONFIDENTIAL // +//===========================================================================// + +#include "munga.hpp" + +#include "set.hpp" + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Set ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +// +//############################################################################# +// Set +//############################################################################# +// +Set::Set(Node *node): + Socket(node), + contents(NULL) +{ + +} + + + + +// +//############################################################################# +// ~Set +//############################################################################# +// +Set::~Set() +{ + SetReleaseNode(NULL); + if (contents) + { + delete contents; + } +} + +// +//############################################################################# +// TestInstance +//############################################################################# +// +Logical + Set::TestInstance() const +{ + Socket::TestInstance(); + Check(contents); + return True; +} + + +// +//############################################################################# +// Union +// +// Merge contents of this with rhs. Items that occur in either set are placed +// in the resulting set, with no duplication. It is assumed that both operands +// are proper sets, ie. they contain no duplicates. +//############################################################################# +// + +Set + Set::Union(const Set &) const +{ + Check(this); + + + Set result(NULL); + + return result; +} + + +// +//############################################################################# +// Intersection +// +// Merge contents of this with rhs. Items that occur in both sets are placed +// only once in the resulting set. It is assumed that both operands are proper +// sets, ie. they contain no duplicates. +// +// This implementation of set intersection is dumb and slow. +//############################################################################# +// + +Set + Set::Intersection(const Set &rhs) const +{ + Check(this); + Check(rhs); + + // Contents iterator is a SetIterator and not a ChainIterator in order to + // have access to the ChainIterator::ReadAndNextImplentation. + // We circumvent encapsulation protections by declaring Set a friend of SetIterator + // (which derives from ChainIterator). Set is not a friend of ChainIterator. + + SetIterator contents_iterator(contents); + + // Casting away const is safe since our local iterator is not going to insert or + // remove items from rhs. + SetIterator rhs_iterator((Set *) &rhs); + Plug *lhs_plug; + Plug *rhs_plug; + Set result(NULL); + + + while ((lhs_plug = Cast_Object(Plug *, contents_iterator.ReadAndNextImplementation())) != NULL) + { + while ((rhs_plug = Cast_Object(Plug *,rhs_iterator.ReadAndNextImplementation())) != NULL) + { + if (lhs_plug == rhs_plug) + { + result.AddImplementation(lhs_plug); + } + } + } + return result; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SetIterator ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +// +//############################################################################# +// SetIterator +//############################################################################# +// +SetIterator::SetIterator(Set *set): + ChainIterator(set->contents) +{ + Check(set); +} + +SetIterator::SetIterator(const SetIterator &iterator): + ChainIterator(Cast_Object(Chain*, (Cast_Object(Set *,iterator.socket)->contents))) +{ + Check(&iterator); +} + +SetIterator::SetIterator(Chain *chain): + ChainIterator(chain) +{ + Check(chain); +} + +SetIterator::~SetIterator() +{ +} + + + + diff --git a/CODE/RP/MUNGA/SFESKT.CPP b/CODE/RP/MUNGA/SFESKT.CPP new file mode 100644 index 0000000..f069834 --- /dev/null +++ b/CODE/RP/MUNGA/SFESKT.CPP @@ -0,0 +1,169 @@ +//===========================================================================// +// File: sfeskt.cc // +// Project: MUNGA Brick: Connection Engine // +// Contents: Implementation details for safe socket class // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 09/29/94 ECH Initial coding. // +// 10/28/94 JMA Made compatible with SGI CC and merged with iterator // +// 11/03/94 ECH Made compatible with BC4.0 // +// 12/12/94 ECH Changed release mechanism // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// PROPRIETARY AND CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(SFESKT_HPP) + #include +#endif + +// +//########################################################################### +// SafeSocket +//########################################################################### +// +SafeSocket::SafeSocket(Node *node): + Socket(node) +{ + iteratorHead = NULL; +} + +// +//########################################################################### +// ~SafeSocket +//########################################################################### +// +SafeSocket::~SafeSocket() +{ + Verify(iteratorHead == NULL); +} + +// +//########################################################################### +// TestInstance +//########################################################################### +// +Logical + SafeSocket::TestInstance() const +{ + Socket::TestInstance(); + + if (iteratorHead != NULL) + { + Check_Signature(iteratorHead); + } + return True; +} + +// +//########################################################################### +// SendIteratorMemo +//########################################################################### +// +void + SafeSocket::SendIteratorMemo( + IteratorMemo memo, + void *content + ) +{ + SafeIterator *iterator; + + for ( + iterator = iteratorHead; + iterator != NULL; + iterator = iterator->nextIterator + ) { + Check(iterator); + iterator->ReceiveMemo(memo, content); + } +} + +// +//########################################################################### +// SafeIterator +//########################################################################### +// +SafeIterator::SafeIterator(SafeSocket *safeSocket): + SocketIterator(safeSocket) +{ + // + // Link iterator into sockets set of iterators + // + Check(safeSocket); + if ((nextIterator = safeSocket->iteratorHead) != NULL) + { + Check(nextIterator); + nextIterator->prevIterator = this; + } + prevIterator = NULL; + safeSocket->iteratorHead = this; +} + +// +//########################################################################### +// ~SafeIterator +//########################################################################### +// +SafeIterator::~SafeIterator() +{ + SafeSocket *safeSocket = Cast_Object(SafeSocket*, socket); + + // + // Remove iterator from sockets set of iterators + // + Check(safeSocket); + if (safeSocket->iteratorHead == this) + { + safeSocket->iteratorHead = nextIterator; + } + if (prevIterator != NULL) + { + Check(prevIterator); + prevIterator->nextIterator = nextIterator; + } + if (nextIterator != NULL) + { + Check(nextIterator); + nextIterator->prevIterator = prevIterator; + } +} + +// +//########################################################################### +// TestInstance +//########################################################################### +// +Logical + SafeIterator::TestInstance() const +{ + SocketIterator::TestInstance(); + + if (prevIterator != NULL) + { + Check_Signature(prevIterator); + } + if (nextIterator != NULL) + { + Check_Signature(nextIterator); + } + return True; +} + +// +//########################################################################### +// ReceiveMemo +//########################################################################### +// +void + SafeIterator::ReceiveMemo( + IteratorMemo, + void* + ) +{ + Fail("SafeIterator::ReceiveMemo - Should never reach here"); +} + diff --git a/CODE/RP/MUNGA/SFESKT.HPP b/CODE/RP/MUNGA/SFESKT.HPP new file mode 100644 index 0000000..a68a0b5 --- /dev/null +++ b/CODE/RP/MUNGA/SFESKT.HPP @@ -0,0 +1,86 @@ +//===========================================================================// +// File: sfeskt.hh // +// Project: MUNGA Brick: Connection Engine // +// Contents: Interface definition for safe socket class // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 09/29/94 ECH Initial coding. // +// 10/28/94 JMA Made compatible with SGI CC and merged with iterator // +// 11/03/94 ECH Made compatible with BC4.0 // +// 12/12/94 ECH Changed release mechanism // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// PROPRIETARY AND CONFIDENTIAL // +//===========================================================================// + +#if !defined(SFESKT_HPP) +# define SFESKT_HPP + +# if !defined(SOCKET_HPP) +# include +# endif + + class SafeIterator; + + typedef int IteratorMemo; + + enum + { + PlugAdded = 0, + PlugRemoved, + NextSafeSocketMemo + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~ SafeSocket ~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class SafeSocket: + public Socket + { + friend class SafeIterator; + + public: + ~SafeSocket(); + Logical + TestInstance() const; + + protected: + SafeSocket(Node *node); + + void + SendIteratorMemo( + IteratorMemo memo, + void *content + ); + + private: + SafeIterator *iteratorHead; + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~ SafeIterator ~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class SafeIterator: + public SocketIterator + { + friend class SafeSocket; + + public: + ~SafeIterator(); + Logical + TestInstance() const; + + protected: + SafeIterator(SafeSocket *safeSocket); + + private: + virtual void + ReceiveMemo( + IteratorMemo memo, + void *content + ); + + SafeIterator *nextIterator; + SafeIterator *prevIterator; + }; + +#endif diff --git a/CODE/RP/MUNGA/SIMULATE.CPP b/CODE/RP/MUNGA/SIMULATE.CPP new file mode 100644 index 0000000..d530c4f --- /dev/null +++ b/CODE/RP/MUNGA/SIMULATE.CPP @@ -0,0 +1,733 @@ +//===========================================================================// +// File: simulate.cc // +// Project: MUNGA Brick: Model Manager // +// Contents: Implementation details of model class // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 01/25/95 JMA Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. All Rights reserved // +// PROPRIETARY AND CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(SIMULATE_HPP) +# include +#endif + +#if !defined(UPDATE_HPP) +# include +#endif + +#if !defined(APP_HPP) + #include +#endif + +#if defined(TRACE_EXECUTE_WATCHERS) + static BitTrace Execute_Watchers("Execute Watchers"); + #define SET_EXECUTE_WATCHERS() Execute_Watchers.Set() + #define CLEAR_EXECUTE_WATCHERS() Execute_Watchers.Clear() +#else + #define SET_EXECUTE_WATCHERS() + #define CLEAR_EXECUTE_WATCHERS() +#endif + +//############################################################################# +//######################## StateIndicator ############################### +//############################################################################# + +//############################################################################# +// Construction and Destruction +// + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +StateIndicator::StateIndicator(): + audioWatcherSocket(NULL), + videoWatcherSocket(NULL), + gaugeWatcherSocket(NULL) +{ + Check_Pointer(this); + stateCount = 0; + oldState = 0; + currentState = 0; + Check_Fpu(); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +StateIndicator::StateIndicator(unsigned max_states): + audioWatcherSocket(NULL), + videoWatcherSocket(NULL), + gaugeWatcherSocket(NULL) +{ + Check_Pointer(this); + stateCount = max_states; + oldState = max_states; + currentState = max_states; + Check_Fpu(); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +StateIndicator::StateIndicator(const StateIndicator &state_indicator): + audioWatcherSocket(NULL), + videoWatcherSocket(NULL), + gaugeWatcherSocket(NULL) +{ + Check_Pointer(this); + + // Do not perform deep copy of watchers + stateCount = state_indicator.stateCount; + oldState = state_indicator.oldState; + currentState = state_indicator.currentState; + Check_Fpu(); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +StateIndicator::~StateIndicator() +{ + Check(this); + + // + // Manual deletion of existing watchers + // + { + SChainIteratorOf iterator(&audioWatcherSocket); + #if DEBUG_LEVEL>2 + Component *component; + while ((component = iterator.ReadAndNext()) != NULL) + { + Check(component); + Dump(component->GetClassID()); + } + Warn(iterator.GetSize() != 0); + #endif + iterator.DeletePlugs(); + } + { + SChainIteratorOf iterator(&videoWatcherSocket); + #if DEBUG_LEVEL>2 + Component *component; + while ((component = iterator.ReadAndNext()) != NULL) + { + Check(component); + Dump(component->GetClassID()); + } + Warn(iterator.GetSize() != 0); + #endif + iterator.DeletePlugs(); + } + { + SChainIteratorOf iterator(&gaugeWatcherSocket); + #if DEBUG_LEVEL>2 + Component *component; + while ((component = iterator.ReadAndNext()) != NULL) + { + Check(component); + Dump(component->GetClassID()); + } + Warn(iterator.GetSize() != 0); + #endif + iterator.DeletePlugs(); + } + Check_Fpu(); +} + +//############################################################################# +// State stuff +// + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +StateIndicator& + StateIndicator::operator=(const StateIndicator &state_indicator) +{ + // Do not perform assignment of watchers + stateCount = state_indicator.stateCount; + oldState = state_indicator.oldState; + currentState = state_indicator.currentState; + + Check_Fpu(); + return *this; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + StateIndicator::operator==(const StateIndicator &state_indicator) const +{ + Check_Fpu(); + return + ( + stateCount == state_indicator.stateCount && + oldState == state_indicator.oldState && + currentState == state_indicator.currentState + ); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + StateIndicator::SetState(unsigned new_state) +{ + Check(this); + Verify(new_state < stateCount); + + // + //-------------------------------------------------------------------------- + // See if the state really changes + // + // NOTE - the old state does change to the current state, simulating a loop + // in the state engine. If it turns out that someone is watching the + // level of the state indicator and doing their own edge detection, + // this might possibly maybe screw something up + //-------------------------------------------------------------------------- + // + oldState = currentState; + if (new_state == currentState) + { + return; + } + + // + //------------------------------------------------------------------- + // If the state has changed, update the state values and then run any + // watchers + //------------------------------------------------------------------- + // + currentState = new_state; + Component *watcher; + + SET_EXECUTE_WATCHERS(); + + // Audio + { + SChainIteratorOf iterator(audioWatcherSocket); + Check(&iterator); + while ((watcher = iterator.ReadAndNext()) != NULL) + { + watcher->Execute(); + } + } + + // Video + { + SChainIteratorOf iterator(videoWatcherSocket); + Check(&iterator); + while ((watcher = iterator.ReadAndNext()) != NULL) + { + watcher->Execute(); + } + } + + // Gauge + { + SChainIteratorOf iterator(gaugeWatcherSocket); + Check(&iterator); + while ((watcher = iterator.ReadAndNext()) != NULL) + { + watcher->Execute(); + } + } + + CLEAR_EXECUTE_WATCHERS(); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +ostream& + operator << (ostream &strm, const StateIndicator &state_indicator) +{ + Check(&state_indicator); + + strm << "[" << state_indicator.stateCount << ","; + strm << state_indicator.oldState << ","; + strm << state_indicator.currentState << "]"; + + return strm; +} + +//############################################################################# +// Test Support +// +Logical + StateIndicator::TestInstance() const +{ + return True; +} + +//############################################################################# +//########################## Simulation ################################# +//############################################################################# + +//############################################################################# +// Virtual Data support +// +Derivation + Simulation::ClassDerivations(Receiver::ClassDerivations,"Simulation"); + +Simulation::SharedData + Simulation::DefaultData( + Simulation::ClassDerivations, + Simulation::MessageHandlers, + Simulation::AttributeIndex, + Simulation::StateCount + ); + +//############################################################################# +// Model support +// + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + Simulation::ReadUpdateRecord(UpdateRecord *message) +{ + Check(this); + Check_Pointer(message); + + lastUpdate = Now(); // HACK - should be based upon message->timeStamp + SetSimulationState(message->simulationState); + Check_Fpu(); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + Simulation::WriteUpdateRecord( + UpdateRecord *message, + int update_model + ) +{ + Check(this); + Check_Pointer(message); + + message->timeStamp = lastPerformance; + message->simulationState = GetSimulationState(); + message->recordLength = sizeof(*message); + message->recordID = (Word)update_model; + lastUpdate = lastPerformance; + Check_Fpu(); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + Simulation::WriteSimulationUpdate(MemoryStream *update_stream) +{ + Check(this); + Check(update_stream); + + // + //----------------- + // Write the update + //----------------- + // + int bit=0; + int update_model = updateModel; + updateModel = 0; + while (update_model) + { + + if (update_model & 1) + { + UpdateRecord* update = (UpdateRecord*)update_stream->GetPointer(); + WriteUpdateRecord(update, bit); + update_stream->AdvancePointer(update->recordLength); + } + update_model >>= 1; + ++bit; + } + Check_Fpu(); +} + +//############################################################################# +// Construction and Destruction +// + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Simulation::Simulation( + Simulation::ClassID class_ID, + Simulation::SharedData &virtual_data +): + Receiver(class_ID, virtual_data), + simulationState(GetSharedData()->stateCount), + audioWatcherSocket(NULL), + videoWatcherSocket(NULL), + gaugeWatcherSocket(NULL), + effectWatcherSocket(NULL) +{ + Check_Pointer(this); + + SetSimulationState(DefaultState); + lastPerformance = Now(); + lastUpdate = lastPerformance; + activePerformance = &Simulation::DoNothingOnce; + updateModel = 0; + simulationFlags = 0; + Check_Fpu(); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Simulation::~Simulation() +{ + Check(this); + + // + // Watchers should be deleted by renderers by now + // + #if DEBUG_LEVEL>0 + { + SChainIteratorOf iterator(&audioWatcherSocket); + Verify(iterator.GetSize() == 0); + } + { + SChainIteratorOf iterator(&videoWatcherSocket); + Verify(iterator.GetSize() == 0); + } + { + SChainIteratorOf iterator(&gaugeWatcherSocket); + Verify(iterator.GetSize() == 0); + } + #endif + Check_Fpu(); +} + +//############################################################################# +// Attribute Support +// +const Simulation::AttributePointer + Simulation::NullAttribute = NULL; + +const Simulation::IndexEntry + Simulation::AttributePointers[]= +{ + { + Simulation::SimulationStateAttributeID, + "SimulationState", + (Simulation::AttributePointer)&Simulation::simulationState + } +}; + +Simulation::AttributeIndexSet + Simulation::AttributeIndex( + ELEMENTS(Simulation::AttributePointers), + Simulation::AttributePointers + ); + +void* + Simulation::GetAttributePointer(Simulation::AttributeID attribute) +{ + Check(this); + + AttributePointer attr = + GetSharedData()->activeAttributeIndex->Find(attribute); + Check_Fpu(); + if (attr == NullAttribute) + { + return NULL; + } + else + { + return &(this->*attr); + } +} + +void* + Simulation::GetAttributePointer(const char* attribute_name) +{ + Check(this); + + AttributePointer attr = + GetSharedData()->activeAttributeIndex->Find(attribute_name); + Check_Fpu(); + if (attr == NullAttribute) + { + return NULL; + } + else + { + return &(this->*attr); + } +} + +//############################################################################# +// Simulation Support +// +void + Simulation::PerformAndWatch( + const Time& till, + MemoryStream *update_stream + ) +{ + Check(this); + Check(&till); + + Scalar slice = till - lastPerformance; + lastPerformance = till; + + Perform(slice); + if (!AreWatchersDelayed()) + { + ExecuteWatchers(); + } + WriteSimulationUpdate(update_stream); + + Check_Fpu(); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + Simulation::DoNothingOnce(Scalar) +{ + NeverExecute(); + Check_Fpu(); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + Simulation::DoNothing(Scalar) +{ + Check_Fpu(); +} + +//############################################################################# +// Watcher Support +// +void + Simulation::ExecuteWatchers() +{ + SET_EXECUTE_WATCHERS(); + + Component *watcher; + + // Audio + { + SChainIteratorOf iterator(audioWatcherSocket); + while ((watcher = iterator.ReadAndNext()) != NULL) + { + watcher->Execute(); + } + } + + // Video + { + SChainIteratorOf iterator(videoWatcherSocket); + while ((watcher = iterator.ReadAndNext()) != NULL) + { + watcher->Execute(); + } + } + + // Gauge + { + SChainIteratorOf iterator(gaugeWatcherSocket); + while ((watcher = iterator.ReadAndNext()) != NULL) + { + watcher->Execute(); + } + } + + // Effect + { + SChainIteratorOf iterator(effectWatcherSocket); + while ((watcher = iterator.ReadAndNext()) != NULL) + { + watcher->Execute(); + } + } + CLEAR_EXECUTE_WATCHERS(); +} + +//############################################################################# +// Test Support +// + +Logical + Simulation::TestInstance() const +{ + return IsDerivedFrom(ClassDerivations); +} + +//############################################################################# +//################### Simulation::AttributeIndexSet ##################### +//############################################################################# + +const Simulation::AttributeIndexSet + Simulation::AttributeIndexSet::NullSet; + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Simulation__AttributeIndexSet::~Simulation__AttributeIndexSet() +{ + if (attributeIndex) + { + Unregister_Pointer(attributeIndex); + delete[] attributeIndex; + } +}; + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + Simulation::AttributeIndexSet::Build( + Simulation::AttributeID count, + const Simulation::IndexEntry index_table[], + const Simulation::AttributeIndexSet *inheritance + ) +{ + // + //------------------------------------------------------- + // Find out the highest message type we have to deal with + //------------------------------------------------------- + // + Check(this); + Check_Pointer(index_table); + entryCount = 0; + Simulation::AttributeID i; + for (i=0; i entryCount) + { + entryCount = index_table[i].entryID; + } + } + if (inheritance) + { + Check(inheritance); + if (entryCountentryCount) + { + entryCount = inheritance->entryCount; + } + #if DEBUG_LEVEL>0 + else if (entryCount > inheritance->entryCount) + { + i = inheritance->entryCount+1; + goto Check_Table; + } + #endif + } + else + { + Verify(entryCount == count); + #if DEBUG_LEVEL>0 + i = 1; +Check_Table: + while (i <= entryCount) + { + int j; + for (j=0; j count); + #endif + } + + // + //----------------------------------------------------------------------- + // Allocate the memory for the new handler set, and copy the inherited + // handlers to the new table. We are guaranteed to have enough space for + // the inherited table + //----------------------------------------------------------------------- + // + attributeIndex = new Simulation::IndexEntry[entryCount]; + Check_Pointer(attributeIndex); + Register_Pointer(attributeIndex); + i = 0; + if (inheritance) + { + for (; ientryCount; ++i) + { + attributeIndex[i] = inheritance->attributeIndex[i]; + } + } + + // + //---------------------------------------------------------------------- + // Step through the new table supplied, placing each handler in the slot + // determined by the message type + //---------------------------------------------------------------------- + // + for (i=0; i inheritance->entryCount); + attributeIndex[index_table[i].entryID-1] = index_table[i]; + } + Check_Fpu(); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Simulation::AttributePointer + Simulation::AttributeIndexSet::Find(const char* attribute_name) const +{ + Check(this); + Check_Pointer(attribute_name); + + for (int attribute=0; attributeGetUpdateManager(); + Check(updater); + updater->RequestEncore(this, encore); +} + +#if defined(TEST_CLASS) && 0 +# include "model.tcp" +#endif + diff --git a/CODE/RP/MUNGA/SIMULATE.HPP b/CODE/RP/MUNGA/SIMULATE.HPP new file mode 100644 index 0000000..45452ed --- /dev/null +++ b/CODE/RP/MUNGA/SIMULATE.HPP @@ -0,0 +1,413 @@ +//===========================================================================// +// File: model.hpp // +// Project: MUNGA Brick: Model Manager // +// Contents: Interface specification of model class // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 01/25/95 JMA Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. All Rights reserved // +// PROPRIETARY AND CONFIDENTIAL // +//===========================================================================// + +#if !defined(SIMULATE_HPP) +# define SIMULATE_HPP + +# if !defined(STATE_HPP) +# include +# endif + +# if !defined(RECEIVER_HPP) +# include +# endif + +# if !defined(TIME_HPP) +# include +# endif + +# if !defined(RESOURCE_HPP) +# include +# endif + + class Simulation__SharedData; + class Simulation__IndexData; + class Simulation__IndexEntry; + class Simulation__AttributeIndexSet; + class MemoryStream; + + //########################################################################## + //################# Simulation::UpdateRecord ######################### + //########################################################################## + + struct Simulation__UpdateRecord + { + public: + size_t recordLength; + Word subsystemID; + Word recordID; + Time timeStamp; + Enumeration simulationState; + }; + + //########################################################################## + //####################### Simulation ################################# + //########################################################################## + + class Simulation: + public Receiver + { + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Shared Data Support + // + public: + typedef Simulation__SharedData SharedData; + SharedData* + GetSharedData(); + + static Derivation ClassDerivations; + + static SharedData DefaultData; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Construction and Destruction Support + // + protected: + Simulation( + ClassID class_ID, + SharedData &shared_data + ); + + public: + ~Simulation(); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Attribute Support + // + public: + typedef Enumeration AttributeID; + typedef Simulation__IndexData IndexData; + typedef Simulation__IndexEntry IndexEntry; + typedef Simulation__AttributeIndexSet AttributeIndexSet; + typedef int Simulation::*AttributePointer; + + enum { + AnyAttributeID = 0, + SimulationStateAttributeID, + NextAttributeID + }; + + static const AttributePointer NullAttribute; + + void* + GetAttributePointer(AttributeID attribute); + void* + GetAttributePointer(const char* attribute_name); + + private: + static const IndexEntry AttributePointers[]; + + protected: + static AttributeIndexSet AttributeIndex; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Simulation Support + // + public: + typedef void + (Simulation::*Performance)(Scalar time_slice); + typedef void + (Simulation::*Encore)(); + typedef Simulation__UpdateRecord UpdateRecord; + + void + SetPerformance(Performance performance) + {Check(this); activePerformance = performance;} + void + Perform(Scalar time_slice) + { + Check(this); + (this->*activePerformance)(time_slice); + } + + virtual void + PerformAndWatch( + const Time& till, + MemoryStream *update_stream + ); + + void + DoNothingOnce(Scalar time_slice); + void + DoNothing(Scalar time_slice); + + void + SetLastPerformance(const Time& when) + {Check(this); Check(&when); lastPerformance = when;} + void + RequestEncore(Encore encore); + + virtual void + ReadUpdateRecord(UpdateRecord *message); + virtual void + WriteUpdateRecord( + UpdateRecord *message, + int update_model + ); + void + WriteSimulationUpdate(MemoryStream *update_stream); + + enum { + DefaultUpdateModelBit=0, + NextUpdateModelBit + }; + + enum { + DefaultUpdateModelFlag = 1<= lastPerformance; + } + Logical + IsNonReplicantExecutable() + {Check(this); return (simulationFlags&DontExecuteFlag) == 0;} + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // State support + // + public: + enum { + DefaultState = 0, + StateCount + }; + + unsigned + GetSimulationState() + {Check(this); return simulationState.GetState();} + unsigned + GetOldSimulationState() + {Check(this); return simulationState.GetOldState();} + void + SetSimulationState(unsigned new_state) + {Check(this); simulationState.SetState(new_state);} + + StateIndicator + simulationState; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Watcher Support + // + public: + void + AddAudioWatcher(Component *watcher) + {Check(&audioWatcherSocket);audioWatcherSocket.Add(watcher);} + void + AddVideoWatcher(Component *watcher) + {Check(&videoWatcherSocket);videoWatcherSocket.Add(watcher);} + void + AddGaugeWatcher(Component *watcher) + {Check(&gaugeWatcherSocket);gaugeWatcherSocket.Add(watcher);} + + void + AddEffectWatcher(Component *watcher) + {Check(&effectWatcherSocket); effectWatcherSocket.Add(watcher);} + + void + ExecuteWatchers(); + + private: + SChainOf + audioWatcherSocket; + SChainOf + videoWatcherSocket; + SChainOf + gaugeWatcherSocket; + SChainOf + effectWatcherSocket; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Test Support + // + public: + Logical + TestInstance() const; + static Logical + TestClass(); + }; + + //########################################################################## + //################### Simulation::IndexEntry ######################### + //########################################################################## + + struct Simulation__IndexEntry + { + Enumeration + entryID; + const char * + entryName; + Simulation::AttributePointer + entryAddress; + }; + + #define ATTRIBUTE_ENTRY(class,name,attribute)\ + {\ + class::name##AttributeID,\ + #name,\ + (Simulation::AttributePointer) &class::attribute\ + } + + //########################################################################## + //################# Simulation::AttributeIndexSet #################### + //########################################################################## + + class Simulation__AttributeIndexSet: + public Receiver::InheritanceSet + { + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Construction and Destruction + // + public: + Simulation__AttributeIndexSet( + Simulation::AttributeID count, + const Simulation::IndexEntry index_table[], + const Simulation::AttributeIndexSet &inheritance + ) + {Build(count, index_table, &inheritance);} + + Simulation__AttributeIndexSet( + Simulation::AttributeID count, + const Simulation::IndexEntry index_table[] + ) + {Build(count, index_table, NULL);} + + Simulation__AttributeIndexSet() + {attributeIndex = NULL; entryCount = 0;} + + ~Simulation__AttributeIndexSet(); + + protected: + void + Build( + Simulation::AttributeID count, + const Simulation::IndexEntry index_table[], + const Simulation::AttributeIndexSet *inheritance + ); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // AttributeIndexSet Functionality + // + protected: + Simulation::IndexEntry + *attributeIndex; + + public: + Simulation::AttributePointer + Find(Simulation::AttributeID attribute) const + { + Check(this); + Verify(attribute > 0); + if (attribute<=entryCount) + return attributeIndex[attribute-1].entryAddress; + else + return Simulation::NullAttribute; + } + Simulation::AttributePointer + Find(const char* attribute_name) const; + const Simulation::IndexEntry* + FindEntry(const char* attribute_name) const; + + static const Simulation::AttributeIndexSet + NullSet; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Test Support + // + public: + static Logical + TestClass(); + }; + + //########################################################################## + //################### Simulation::SharedData ######################### + //########################################################################## + + class Simulation__SharedData: + public Receiver::SharedData + { + public: + Simulation__SharedData( + Derivation& derivation, + Receiver::MessageHandlerSet &message_handlers, + Simulation::AttributeIndexSet &attribute_index, + int state_count + ): + Receiver::SharedData(derivation, message_handlers), + activeAttributeIndex(&attribute_index), + stateCount(state_count) + {} + + Simulation::AttributeIndexSet* activeAttributeIndex; + int stateCount; + }; + + inline Simulation::SharedData* + Simulation::GetSharedData() + {return Cast_Object(SharedData*,sharedData);} + +#endif diff --git a/CODE/RP/MUNGA/SIMULATE.TCP b/CODE/RP/MUNGA/SIMULATE.TCP new file mode 100644 index 0000000..188e26d --- /dev/null +++ b/CODE/RP/MUNGA/SIMULATE.TCP @@ -0,0 +1,201 @@ +//===========================================================================// +// File: model.tst // +// Project: MUNGA Brick: Entity Manager // +// Contents: Implementation details of the entity class // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 12/28/94 JMA Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1994, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#include "model.thh" + +//############################################################################# +// Shared Data Support +// +Derivation + TestEntity::ClassDerivations(Entity::ClassDerivations,"TestEntity"); + +TestEntity::SharedData + TestEntity::DefaultData( + TestEntity::ClassDerivations, + TestEntity::MessageHandlers, + TestEntity::AttributeIndex, + (Entity::MakeHandler)TestEntity::Make + ); + +//############################################################################# +// Message Support +// +const Receiver::HandlerEntry + TestEntity::MessageHandlerEntries[]= +{ + { + TestEntity::TestMessageID, + (TestEntity::Handler)&TestEntity::TestMessageHandler + } +}; + +TestEntity::MessageHandlerSet + TestEntity::MessageHandlers( + ELEMENTS(TestEntity::MessageHandlerEntries), + TestEntity::MessageHandlerEntries, + Entity::MessageHandlers + ); + +void + TestEntity::TestMessageHandler(TestEntity::Message *) +{ + localOrigin = Point3D(2.0,2.0,2.0); +}; + +void + TestEntity::Tester() +{ + TestEntity::Message message( + TestEntity::TestMessageID, + sizeof(TestEntity::Message) + ); + Dispatch(&message); +} + +//############################################################################# +// Attribute Support +// +const TestEntity::IndexEntry + TestEntity::AttributePointers[]= +{ + { + TestEntity::VelocityVectorAttributeID, + (Entity::AttributePointer)&TestEntity::velocityVector + } +}; + +TestEntity::AttributeIndexSet + TestEntity::AttributeIndex( + ELEMENTS(TestEntity::AttributePointers), + TestEntity::AttributePointers, + Entity::AttributeIndex + ); + +//############################################################################# +// Model Support +// +Logical + TestEntity::Model(Scalar time_slice) +{ + Vector3D diff; + diff.Multiply(velocityVector,time_slice); + localOrigin.translation += diff; + localToWorld = localOrigin.translation; + return diff.LengthSquared() >= 0.009f; +} + +//############################################################################# +// Construction and Destruction +// + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +TestEntity::TestEntity( + TestEntity::MakeMessage *creation_message, + TestEntity::SharedData &virtual_data +): + Entity(creation_message,virtual_data) +{ + SetValidFlag(); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +TestEntity* + TestEntity::Make(TestEntity::MakeMessage *creation_message) +{ + return new TestEntity(creation_message); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +TestEntity::~TestEntity() +{ +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + Entity::TestClass() +{ + DEBUG_STREAM << "Starting Entity test...\n"; + + // + //------------------ + // Test construction + //------------------ + // + TestEntity::MakeMessage + message1( + TestEntity::MakeMessageID, + sizeof(TestEntity::MakeMessage), + TestEntity::TrivialEntityClassID, + 0, + TestEntity::DefaultFlags, + LinearOrigin::Identity + ); + TestEntity *test_entity = TestEntity::Make(&message1); + Register_Object(test_entity); + + // + //------------------------ + // Test attribute pointers + //------------------------ + // + test_entity->localOrigin = Point3D(1.0f,1.0f,1.0f); + LinearOrigin *origin = + (LinearOrigin*)test_entity->GetAttributePointer(LocalOriginAttributeID); + Test(origin->translation == Point3D(1.0f,1.0f,1.0f)); + + test_entity->velocityVector = Vector3D(0.0f,0.0f,1.0f); + Vector3D *velocity = + (Vector3D*)test_entity-> + GetAttributePointer(TestEntity::VelocityVectorAttributeID); + Test(*velocity == Vector3D(0.0f,0.0f,1.0f)); + + // + //--------------------- + // Test Model execution + //--------------------- + // + test_entity->RunSimulation(0.1f); + Test(origin->translation == Point3D(1.0f,1.0f,1.0f)); + test_entity->SetSimulation((Model::Simulation)&TestEntity::Model); + Test(!test_entity->RunSimulation(0.05f)); + Test(origin->translation == Point3D(1.0f,1.0f,1.05f)); + + // + //------------------------------- + // Test Update message generation + //------------------------------- + // + t = test_entity->creationTime; + t += 0.1f; + UpdateMessage *update = test_entity->Execute(t); + Test(update); + Test(update->localOrigin.translation == Point3D(1.0f,1.0f,1.15f)); + Unregister_Object(update); + delete update; + + // + //----------------- + // Test destruction + //----------------- + // + Unregister_Object(test_entity); + delete test_entity; + + return True; +} + diff --git a/CODE/RP/MUNGA/SLOT.CPP b/CODE/RP/MUNGA/SLOT.CPP new file mode 100644 index 0000000..703099e --- /dev/null +++ b/CODE/RP/MUNGA/SLOT.CPP @@ -0,0 +1,192 @@ +//===========================================================================// +// File: slot.cc // +// Project: MUNGA Brick: Connection Library // +// Contents: Implementation details for the slot class // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 10/20/94 ECH Initial coding. // +// 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 +#pragma hdrstop + +#if !defined(SLOT_HPP) + #include +#endif + +#if !defined(NODE_HPP) + #include +#endif + +MemoryBlock + SlotLink::AllocatedMemory( + sizeof(SlotLink), + SLOTLINK_MEMORYBLOCK_ALLOCATION, + SLOTLINK_MEMORYBLOCK_ALLOCATION, + "SlotLink" + ); + +// +//########################################################################### +// SlotLink +//########################################################################### +// +SlotLink::SlotLink( + Slot *slot, + Plug *plug +): + Link(slot, plug) +{ +} + +// +//########################################################################### +// ~SlotLink +//########################################################################### +// +SlotLink::~SlotLink() +{ + Slot *slot = Cast_Object(Slot*, socket); + + // + //------------------------------------------------- + // Make sure the link is not referenced by the slot + //------------------------------------------------- + // + Check(slot); + Verify(slot->slotLink == this); + slot->slotLink = NULL; + + // + //------------------------------------------ + // Remove this link from any plug references + //------------------------------------------ + // + ReleaseFromPlug(); + + // + //------------------------------------------------------------- + // Tell the node to release this link. Note that this link + // is not referenced by the plug or the slot at this point in + // time. + //------------------------------------------------------------- + // + if (slot->GetReleaseNode() != NULL) + { + Check(slot->GetReleaseNode()); + slot->GetReleaseNode()->ReleaseLinkHandler(slot, plug); + } +} + +// +//########################################################################### +// TestInstance +//########################################################################### +// +Logical + SlotLink::TestInstance() const +{ + Link::TestInstance(); + return True; +} + +// +//########################################################################### +// Slot +//########################################################################### +// +Slot::Slot( + Node *node +): + Socket(node) +{ + slotLink = NULL; +} + +// +//########################################################################### +// ~Slot +//########################################################################### +// +Slot::~Slot() +{ + SetReleaseNode(NULL); + if (slotLink != NULL) + { + Unregister_Object(slotLink); + delete slotLink; + } +} + +// +//########################################################################### +// TestInstance +//########################################################################### +// +Logical + Slot::TestInstance() const +{ + Socket::TestInstance(); + + if (slotLink != NULL) + { + Check(slotLink); + } + return True; +} + +// +//########################################################################### +// Remove +//########################################################################### +// +void + Slot::Remove() +{ + if (slotLink != NULL) + { + Unregister_Object(slotLink); + delete slotLink; + slotLink = NULL; + } +} + +// +//########################################################################### +// AddImplementation +//########################################################################### +// +void + Slot::AddImplementation( + Plug *plug + ) +{ + Verify(slotLink == NULL); + slotLink = new SlotLink(this, plug); + Register_Object(slotLink); +} + +// +//########################################################################### +// GetCurrentPlug +//########################################################################### +// +Plug* + Slot::GetCurrentPlug() const +{ + if (slotLink != NULL) + { + Check(slotLink); + return slotLink->GetPlug(); + } + return NULL; +} + diff --git a/CODE/RP/MUNGA/SLOT.HPP b/CODE/RP/MUNGA/SLOT.HPP new file mode 100644 index 0000000..cb78606 --- /dev/null +++ b/CODE/RP/MUNGA/SLOT.HPP @@ -0,0 +1,166 @@ +//===========================================================================// +// File: slot.hh // +// Project: MUNGA Brick: Connection Library // +// Contents: Interface specification for slot class // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 10/20/94 ECH Initial coding. // +// 10/28/94 JMA Made compatible with SGI CC // +// 11/03/94 ECH Made compatible with BC4.0 // +// 11/05/94 JMA Made compatible with GNU C++ // +// 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 // +//===========================================================================// + +#if !defined(SLOT_HPP) +# define SLOT_HPP + +# if !defined(SOCKET_HPP) +# include +# endif + +# if !defined(MEMBLOCK_HPP) +# include +# endif + + class Slot; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SlotLink ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + #define SLOTLINK_MEMORYBLOCK_ALLOCATION (100) + + class SlotLink: + public Link + { + friend class Slot; + + public: + ~SlotLink(); + Logical + TestInstance() const; + + private: + SlotLink( + Slot *slot, + Plug *plug + ); + + private: + static MemoryBlock + AllocatedMemory; + + void* + operator new(size_t) + {return AllocatedMemory.New();} + void + operator delete(void *where) + {AllocatedMemory.Delete(where);} + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~ Slot ~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class Slot : public Socket + { + friend class SlotLink; + + public: + // + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // Public interface + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // + + // + //-------------------------------------------------------------------- + // Constructor, Destructor and testing + //-------------------------------------------------------------------- + // + Slot(Node *node); + ~Slot(); + + Logical + TestInstance() const; + + // + //-------------------------------------------------------------------- + // Remove - Remove the link + //-------------------------------------------------------------------- + // + void + Remove(); + + protected: + // + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // Protected interface + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // + void + AddImplementation(Plug *plug); + Plug* + GetCurrentPlug() const; + + private: + // + //-------------------------------------------------------------------- + // Private data + //-------------------------------------------------------------------- + // + SlotLink + *slotLink; + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~ SlotOf ~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + template class SlotOf: + public Slot + { + public: + // + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // Public interface + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // + SlotOf(Node *node); + ~SlotOf(); + + // + //-------------------------------------------------------------------- + // Socket methods (see Socket for full listing) + //-------------------------------------------------------------------- + // + void + Add(T plug) + {AddImplementation(Cast_Object(Plug*,plug));} + + T + GetCurrent() const + {return (T)GetCurrentPlug();} + }; + + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~ SlotOf templates ~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + template + SlotOf::SlotOf(Node *node): + Slot(node) + { + } + + template + SlotOf::~SlotOf() + { + } + +#endif + diff --git a/CODE/RP/MUNGA/SOCKET.CPP b/CODE/RP/MUNGA/SOCKET.CPP new file mode 100644 index 0000000..f8464e9 --- /dev/null +++ b/CODE/RP/MUNGA/SOCKET.CPP @@ -0,0 +1,280 @@ +//===========================================================================// +// File: socket.cc // +// Project: MUNGA Brick: Connection Library // +// Contents: Implementation details for Socket and its iterator // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 10/19/94 ECH Initial coding. // +// 10/20/94 JMA Fixed style stuff, merged with SKTITR.CPP // +// 10/23/94 ECH Added greater deletion safety // +// 10/28/94 JMA Made compatible with SGI CC // +// 11/03/94 ECH Made compatible with BC4.0 // +// 11/05/94 JMA Made compatible with GNU C++ // +// 12/12/94 ECH Changed release mechanism // +// 02/16/95 ECH Removed plug commands, added node command // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(SOCKET_HPP) + #include +#endif + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Socket ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +// +//############################################################################# +// Socket +//############################################################################# +// +Socket::Socket(Node *node) +{ + socketsNode = node; + // Warn(socketsNode == NULL); +} + +// +//############################################################################# +// ~Socket +//############################################################################# +// +Socket::~Socket() +{ +} + +// +//############################################################################# +// TestInstance +//############################################################################# +// +Logical + Socket::TestInstance() const +{ + return True; +} + +// +//############################################################################# +// AddImplementation +//############################################################################# +// +void + Socket::AddImplementation(Plug*) +{ + Fail("Socket::AddImplementation - Should never reach here"); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SocketIterator ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +// +//############################################################################# +//############################################################################# +// +SocketIterator::SocketIterator(Socket *socket) +{ + this->socket = socket; +} + +// +//############################################################################# +//############################################################################# +// +SocketIterator::~SocketIterator() +{ +} + +// +//############################################################################# +// TestInstance +//############################################################################# +// +Logical + SocketIterator::TestInstance() const +{ + return True; +} + +// +//############################################################################# +// Remove +//############################################################################# +// +void + SocketIterator::Remove() +{ + Fail("SocketIterator::Remove - Should never reach here"); +} + +// +//############################################################################# +// IsPlugMember +//############################################################################# +// +Logical + SocketIterator::IsPlugMember( + Plug *find_plug + ) +{ + Plug *plug; + + First(); + while ((plug = ReadAndNextPlug()) != NULL) + { + Check(plug); + if (plug == find_plug) + return True; + } + return False; +} + +// +//############################################################################# +// RemovePlug +//############################################################################# +// +void + SocketIterator::RemovePlug( + Plug *find_plug + ) +{ + Plug *plug; + + Check(find_plug); + First(); + while ((plug = GetCurrentPlug()) != NULL) + { + Check(plug); + if (plug == find_plug) + { + Remove(); + return; + } + Next(); + } +} + +// +//############################################################################# +// DeletePlugs +//############################################################################# +// +void + SocketIterator::DeletePlugs(Logical defeat_release_node) +{ + Plug *plug; + Node *save_release_node; + + if (defeat_release_node) + { + Check(socket); + save_release_node = socket->GetReleaseNode(); + socket->SetReleaseNode(NULL); + } + + First(); + while ((plug = ReadAndNextPlug()) != NULL) + { + Unregister_Object(plug); + delete plug; + } + #if 0 + while ((plug = GetCurrentPlug()) != NULL) + { + Unregister_Object(plug); + delete plug; + } + #endif + + if (defeat_release_node) + { + Check(socket); + socket->SetReleaseNode(save_release_node); + } +} + +// +//############################################################################# +// SendPlugCommand +//############################################################################# +// + +// Considering removal +#if 0 +int + SocketIterator::SendPlugCommand( + Plug::CommandID plugCommand, + void *info + ) +{ + int ret; + Plug *plug; + + First(); + while ((plug = GetCurrentPlug()) != NULL) + { + Check(plug); + if ( + (ret = plug->ReceivePlugCommand(plugCommand, info)) != + IteratorFunctionNullReturn + ) + return ret; + Next(); + } + return IteratorFunctionNullReturn; +} +#endif + +// +//############################################################################# +// RunIteratorFunction +//############################################################################# +// + +// Considering removal +#if 0 +int + SocketIterator::RunIteratorFunction( + IteratorFunction iteratorFunction, + void *info + ) +{ + int ret; + Plug *plug; + + Check_Pointer(iteratorFunction); + + First(); + while ((plug = GetCurrentPlug()) != NULL) + { + Check(plug); + if ( + (ret = (*iteratorFunction)(plug, info)) != + IteratorFunctionNullReturn + ) + return ret; + Next(); + } + return IteratorFunctionNullReturn; +} +#endif + +// +//############################################################################# +// InsertImplementation +//############################################################################# +// +void + SocketIterator::InsertImplementation(Plug*) +{ + // + // Should never reach here + // + Fail("SocketIterator::InsertImplementation - Should never reach here"); +} + diff --git a/CODE/RP/MUNGA/SOCKET.HPP b/CODE/RP/MUNGA/SOCKET.HPP new file mode 100644 index 0000000..8cd9175 --- /dev/null +++ b/CODE/RP/MUNGA/SOCKET.HPP @@ -0,0 +1,256 @@ +//===========================================================================// +// File: socket.hh // +// Project: MUNGA Brick: Connection Library // +// Contents: Interface specifications for base socket and its iterator // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 10/19/94 ECH Initial coding. // +// 10/20/94 JMA Fixed style stuff, merged with SKTITR.HPP // +// 10/23/94 ECH Added greater deletion safety // +// 10/28/94 JMA Made compatible with SGI CC // +// 11/03/94 ECH Made compatible with BC4.0 // +// 11/03/94 ECH Fixed InsertImplementation warning // +// 11/05/94 JMA Made compatible with GNU C++ // +// 12/12/94 ECH Changed release mechanism // +// 02/16/95 ECH Removed plug commands, added node command // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(SOCKET_HPP) +# define SOCKET_HPP + +# if !defined(PLUG_HPP) +# include +# endif + + class Node; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Socket ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class Socket SIGNATURED + { + public: + // + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // Public interface + // + // NOTE: All unsafe, untyped public methods are named XXXPlug or + // XXXIterator. The safe, typed public methods are named XXX and are + // declared in the template sub-classes. + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // + + // + //-------------------------------------------------------------------- + // Destructor and instance testing + //-------------------------------------------------------------------- + // + virtual + ~Socket(); + Logical + TestInstance() const; + + // + //-------------------------------------------------------------------- + // AddPlug - Add a plug to this socket, untyped access + //-------------------------------------------------------------------- + // + void + AddPlug(Plug *plug) + {AddImplementation(plug);} + + // + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // + Node* + GetReleaseNode() + {return socketsNode;} + void + SetReleaseNode(Node *release_node) + {socketsNode = release_node;} + + protected: + // + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // Protected interface + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // + Socket(Node *node); + + // + //-------------------------------------------------------------------- + // Protected untyped implementations + //-------------------------------------------------------------------- + // + virtual void + AddImplementation(Plug *plug); + + // + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // + Node + *socketsNode; + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~ SocketIterator ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + // Considering removal + #if 0 + typedef int + (*IteratorFunction)( + Plug *plug, + void *info + ); + + const int IteratorFunctionNullReturn = 0; + #endif + + class SocketIterator: + public Iterator + { + public: + // + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // Public interface + // + // NOTE: All unsafe, untyped public methods are named XXXPlug. The + // safe, typed public methods are named XXX and are declared in the + // template sub-classes. + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // + + // + //-------------------------------------------------------------------- + // Destructor and testing + //-------------------------------------------------------------------- + // + ~SocketIterator(); + Logical + TestInstance() const; + + // + //-------------------------------------------------------------------- + // Iterator methods (see Iterator for full listing) + //-------------------------------------------------------------------- + // + Plug* + ReadAndNextPlug() + {return (Plug*)ReadAndNextImplementation();} + Plug* + ReadAndPreviousPlug() + {return (Plug*)ReadAndPreviousImplementation();} + Plug* + GetCurrentPlug() + {return (Plug*)GetCurrentImplementation();} + Plug* + GetNthPlug(CollectionSize index) + {return (Plug*)GetNthImplementation(index);} + + // + //-------------------------------------------------------------------- + // InsertPlug - Inserts plug at current location + //-------------------------------------------------------------------- + // + void + InsertPlug(Plug *plug) + {InsertImplementation(plug);} + + // + //-------------------------------------------------------------------- + // Remove - Removes the link at the current location, + // does not remove the plug + //-------------------------------------------------------------------- + // + virtual void + Remove(); + + // + //-------------------------------------------------------------------- + // IsPlugMember - Determines if the plug is a member of the + // sockets collection. + //-------------------------------------------------------------------- + // + Logical + IsPlugMember( + Plug *plug + ); + + // + //-------------------------------------------------------------------- + // RemovePlug - If the plug is a member of the sockets + // collection then the link to that plug will be + // removed + //-------------------------------------------------------------------- + // + void + RemovePlug( + Plug *plug + ); + + // + //-------------------------------------------------------------------- + // DeletePlugs - Unregisters and class delete for connected plugs. + //-------------------------------------------------------------------- + // + void + DeletePlugs(Logical defeat_release_node = True); + + // + //-------------------------------------------------------------------- + // SendPlugCommand - Send a command and related info to all plugs, + // returns when all plugs receive command or until + // receive method returns non-zero. If the receive + // returns non-zero, then the iterator will remain + // at that plug. + //-------------------------------------------------------------------- + // + + // Considering removal + #if 0 + int + SendPlugCommand( + Plug::CommandID plugCommand, + void *info + ); + #endif + + protected: + // + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // Protected interface + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // + SocketIterator(Socket *socket); + + + // Considering removal + #if 0 + int + RunIteratorFunction( + IteratorFunction iteratorFunction, + void *info + ); + #endif + + virtual void + InsertImplementation(Plug*); + + Socket + *socket; + }; + +#endif diff --git a/CODE/RP/MUNGA/SPHERE.CPP b/CODE/RP/MUNGA/SPHERE.CPP new file mode 100644 index 0000000..5546312 --- /dev/null +++ b/CODE/RP/MUNGA/SPHERE.CPP @@ -0,0 +1,55 @@ +//=======================================================================// +// File: sphere.cpp // +// Project: Architecture // +// Author: J.M. Albertson // +//-----------------------------------------------------------------------// +// Copyright (C) 1994, Virtual World Entertainments, All Rights reserved // +// PROPRIETARY AND CONFIDENTIAL // +//=======================================================================// + +#include +#pragma hdrstop + +#if !defined(SPHERE_HPP) +# include +#endif + +// +//########################################################################### +//########################################################################### +// +Logical + Sphere::Contains(const Point3D &A_Point) const +{ + Vector3D + diff; + + diff.Subtract(center,A_Point); + return radius*radius >= diff.LengthSquared(); +} + +// +//########################################################################### +//########################################################################### +// +Logical + Sphere::Intersects(const Sphere &sphere) const +{ + Vector3D temp; + Scalar r; + + r = radius + sphere.radius; + temp.Subtract(center, sphere.center); + return temp.LengthSquared() <= r*r; +} + +// +//########################################################################### +//########################################################################### +// +ostream& + operator<<(ostream& Stream, const Sphere &A_Sphere) +{ + Stream << "\n\tSphere Centerpoint: " << A_Sphere.center; + return Stream << "\n\tRadius: " << A_Sphere.radius; +} diff --git a/CODE/RP/MUNGA/SPHERE.HPP b/CODE/RP/MUNGA/SPHERE.HPP new file mode 100644 index 0000000..f8db86d --- /dev/null +++ b/CODE/RP/MUNGA/SPHERE.HPP @@ -0,0 +1,62 @@ +//=======================================================================// +// File: sphere.hpp // +// Project: Architecture // +// Author: J.M. Albertson // +//-----------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainments, // +// PROPRIETARY AND CONFIDENTIAL // +//=======================================================================// + +#if !defined(SPHERE_HPP) +# define SPHERE_HPP + +# if !defined(POINT3D_HPP) +# include +# endif + + class Plane; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Sphere ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class Sphere SIGNATURED + { + public: + Point3D + center; + Scalar + radius; + + Sphere() + {} + Sphere( + const Point3D &A_Point, + Scalar Radius + ): + center(A_Point), + radius(Radius) + {} + Sphere( + Scalar X, + Scalar Y, + Scalar Z, + Scalar Radius + ): + center(X,Y,Z), + radius(Radius) + {} + + // + // Intersection functions + // + Logical + Contains(const Point3D &point) const; + Logical + Intersects(const Sphere &sphere) const; + Logical + Intersects(const Plane &plane) const; + + friend ostream& + operator<<(ostream& Stream, const Sphere &A_Sphere); + }; + +#endif diff --git a/CODE/RP/MUNGA/SPLINE.CPP b/CODE/RP/MUNGA/SPLINE.CPP new file mode 100644 index 0000000..119a85e --- /dev/null +++ b/CODE/RP/MUNGA/SPLINE.CPP @@ -0,0 +1,117 @@ +#include +#pragma hdrstop + +#if !defined(SPLINE_HPP) +# include +#endif + +#if defined(USE_SIGNATURE) + int + Is_Signature_Bad(const volatile CubicCurve *) + {return False;} +#endif + +Logical + CubicCurve::TestInstance() const +{ + return True; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +CubicCurve::CubicCurve( + const Point3D& p1, + const Vector3D& r1, + const Point3D& p4, + const Vector3D& r4 +) +{ + Check_Pointer(this); + Check(&p1); + Check(&r1); + Check(&p4); + Check(&r4); + + // + //---------------------------------- + // Generate the hermite basis matrix + //---------------------------------- + // + basisMatrix(0,0) = 2.0f*(p1.x - p4.x) + r1.x + r4.x; + basisMatrix(0,1) = 2.0f*(p1.y - p4.y) + r1.y + r4.y; + basisMatrix(0,2) = 2.0f*(p1.z - p4.z) + r1.z + r4.z; + + basisMatrix(1,0) = 3.0f*(p4.x - p1.x) - 2.0f*r1.x - r4.x; + basisMatrix(1,1) = 3.0f*(p4.y - p1.y) - 2.0f*r1.y - r4.y; + basisMatrix(1,2) = 3.0f*(p4.z - p1.z) - 2.0f*r1.z - r4.z; + + basisMatrix(2,0) = r1.x; + basisMatrix(2,1) = r1.y; + basisMatrix(2,2) = r1.z; + + basisMatrix(3,0) = p1.x; + basisMatrix(3,1) = p1.y; + basisMatrix(3,2) = p1.z; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +CubicCurve::CubicCurve( + const Point3D& p1, + const Point3D& p2, + const Point3D& p3, + const Point3D& p4 +) +{ + Check_Pointer(this); + Check(&p1); + Check(&p2); + Check(&p3); + Check(&p4); + + // + //--------------------------------- + // Generate the bezier basis matrix + //--------------------------------- + // + basisMatrix(0,0) = p4.x - p1.x + 3.0f*(p2.x - p3.x); + basisMatrix(0,1) = p4.y - p1.y + 3.0f*(p2.y - p3.y); + basisMatrix(0,2) = p4.z - p1.z + 3.0f*(p2.z - p3.z); + + basisMatrix(1,0) = 3.0f*(p1.x + p3.x) - 6.0f*p2.x; + basisMatrix(1,1) = 3.0f*(p1.y + p3.y) - 6.0f*p2.y; + basisMatrix(1,2) = 3.0f*(p1.z + p3.z) - 6.0f*p2.z; + + basisMatrix(2,0) = 3.0f*(p2.x - p1.x); + basisMatrix(2,1) = 3.0f*(p2.y - p1.y); + basisMatrix(2,2) = 3.0f*(p2.z - p1.z); + + basisMatrix(3,0) = p1.x; + basisMatrix(3,1) = p1.y; + basisMatrix(3,2) = p1.z; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + CubicCurve::Evaluate( + Scalar t, + Point3D *p, + Vector3D *v + ) +{ + Check(this); + Check_Pointer(p); + Check_Pointer(v); + Verify(t >= 0.0f && t <= 1.0f); + + Point3D t_pos; + t_pos.z = t; + t_pos.y = t_pos.z * t; + t_pos.x = t_pos.y * t; + p->Multiply(t_pos, basisMatrix); + + Vector3D t_vec(3.0f*t*t, 2.0f*t, 1.0f); + v->Multiply(t_vec, basisMatrix); +} + diff --git a/CODE/RP/MUNGA/SPLINE.HPP b/CODE/RP/MUNGA/SPLINE.HPP new file mode 100644 index 0000000..e3a0def --- /dev/null +++ b/CODE/RP/MUNGA/SPLINE.HPP @@ -0,0 +1,43 @@ +#if !defined(SPLINE_HPP) +# define SPLINE_HPP + +# if !defined(AFFNMTRX_HPP) +# include +# endif + + class CubicCurve { + public: + #if defined(USE_SIGNATURE) + friend int + Is_Signature_Bad(const volatile CubicCurve *); + #endif + + CubicCurve( // Hermite form + const Point3D& p1, + const Vector3D& r1, + const Point3D& p4, + const Vector3D& r4 + ); + CubicCurve( // Bezier form + const Point3D& p1, + const Point3D& p2, + const Point3D& p3, + const Point3D& p4 + ); + + void + Evaluate( + Scalar t, + Point3D *p, + Vector3D *v + ); + + Logical + TestInstance() const; + + protected: + AffineMatrix + basisMatrix; + }; + +#endif \ No newline at end of file diff --git a/CODE/RP/MUNGA/SPOOLER.CPP b/CODE/RP/MUNGA/SPOOLER.CPP new file mode 100644 index 0000000..61a2dd7 --- /dev/null +++ b/CODE/RP/MUNGA/SPOOLER.CPP @@ -0,0 +1,297 @@ +#include +#pragma hdrstop + +#if !defined(SPOOLER_HPP) +# include +#endif + +#if !defined(FILESTRM_HPP) +# include +#endif + +//############################################################################# +//############################## SpoolFile ################################ +//############################################################################# + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +SpoolFile::SpoolFile( + void *stream_start, + size_t stream_size, + size_t initial_offset +): + MemoryStream(stream_start, stream_size, initial_offset) +{ + spoolState = Empty; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +SpoolFile::SpoolFile(SpoolFile& spool): + MemoryStream( + spool.streamStart, + spool.streamSize, + spool.GetBytesUsed() + ) +{ + spoolState = spool.spoolState; + Verify(spoolState == Playing); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +SpoolFile::~SpoolFile() +{ +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + SpoolFile::SaveAs(const char *file_name) +{ + FileStream output(file_name, True); + size_t length = GetBytesUsed(); + output << length; + Rewind(); + output.WriteBytes(GetPointer(), length); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + SpoolFile::Read(const char *file_name) +{ + FileStream input(file_name); + if (!input.IsFileOpened()) + { + spoolState = Empty; + return; + } + + // + //------------------------------- + // Figure out how big the file is + //------------------------------- + // + size_t spool_size = 0; + input >> spool_size; + if (spool_size > GetBytesRemaining() || !spool_size) + { + spoolState = Empty; + } + + // + //----------- + // Read it in + //----------- + // + else + { + input.ReadBytes(streamStart, spool_size); + streamSize = spool_size; + Rewind(); + spoolState = Stored; + } +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + SpoolFile::SpoolPacket(NetworkPacket *packet) +{ + Check(this); + Check_Pointer(packet); + + // + //------------------------------------------------------------------------- + // Check to see if we are out of spool space. For now, if it happens, just + // die + //------------------------------------------------------------------------- + // + int length = + packet->messageData.messageLength + sizeof(NetworkPacketHeader); + int remaining = GetBytesRemaining(); + if (remaining < length) + { + DEBUG_STREAM << "Error: Spool file ran out of memory!\n"; + Exit(AbortExitCodeID); + } + + // + //----------------------------------------------------- + // Copy into the memory stream, and advance the pointer + //----------------------------------------------------- + // + Mem_Copy(GetPointer(), packet, length, remaining); + AdvancePointer(length); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +NetworkPacket* + SpoolFile::NextPacket() +{ + Check(this); + + // + //-------------------------------------------------------------------------- + // Check to see if anything is left in the spool. If only a partial message + // remains, die from an error + //------------------------------------------------------------------------- + // + if (!GetBytesRemaining()) + { + return NULL; + } + NetworkPacket *packet = (NetworkPacket*)GetPointer(); + int length = + packet->messageData.messageLength + sizeof(NetworkPacketHeader); + if (GetBytesRemaining() < length) + { + DEBUG_STREAM << "Error: Partial packet in spool file!\n"; + Exit(AbortExitCodeID); + return NULL; + } + + // + //----------------------------------------------------- + // Copy into the memory stream, and advance the pointer + //----------------------------------------------------- + // + AdvancePointer(length); + return (NetworkPacket*)GetPointer(); +} + +//############################################################################# +//################# MissionReviewApplicationManager ##################### +//############################################################################# + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +MissionReviewApplicationManager::MissionReviewApplicationManager( + Scalar frame_rate, + int spool_count, + size_t spool_size +): + ApplicationManager(frame_rate) +{ + // + //-------------------------------------------------------- + // Allocate the space for the spool files and buffer table + //-------------------------------------------------------- + // + spoolCount = spool_count; + spoolSize = spool_size; + spoolBuffers = new char* [spoolCount]; + Register_Pointer(spoolBuffers); + spoolFiles = new SpoolFile* [spoolCount]; + Register_Pointer(spoolFiles); + + // + //-------------------------------------------------------- + // Allocate each spool buffer, and initial the spool files to none + //-------------------------------------------------------- + // + for (int i=0; ispoolState == SpoolFile::Empty) + { + spoolFiles[i]->spoolState = SpoolFile::Spooling; + return spoolFiles[i]; + } + } + + Fail("No spool files available!"); + return NULL; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +SpoolFile* + MissionReviewApplicationManager::GetStoredSpoolFile() +{ + for (int i=0; ispoolState == SpoolFile::Empty) + { + spoolFiles[i]->Read("last.spl"); + if (spoolFiles[i]->spoolState == SpoolFile::Stored) + { + spoolFiles[i]->spoolState = SpoolFile::Playing; + return spoolFiles[i]; + } + return NULL; + } + } + return NULL; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + MissionReviewApplicationManager::StoreSpoolFile(SpoolFile *spool_file) +{ + for (int i=0; ispoolState == SpoolFile::Spooling); + spoolFiles[i]->spoolState = SpoolFile::Stored; + spoolFiles[i]->SaveAs("last.spl"); + spoolFiles[i]->Rewind(); + return; + } + } +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + MissionReviewApplicationManager::ReleaseSpoolFile(SpoolFile *spool_file) +{ + for (int i=0; ispoolState != SpoolFile::Spooling); + spoolFiles[i]->spoolState = SpoolFile::Empty; + spoolFiles[i]->Rewind(); + return; + } + } +} + diff --git a/CODE/RP/MUNGA/SPOOLER.HPP b/CODE/RP/MUNGA/SPOOLER.HPP new file mode 100644 index 0000000..976f8c7 --- /dev/null +++ b/CODE/RP/MUNGA/SPOOLER.HPP @@ -0,0 +1,76 @@ +#if !defined(SPOOLER_HPP) +# define SPOOLER_HPP + +# if !defined(APPMGR_HPP) +# include +# endif + + //########################################################################## + //########################### SpoolFile ################################ + //########################################################################## + + class SpoolFile: + public MemoryStream + { + public: + SpoolFile( + void *stream_start, + size_t stream_size, + size_t initial_offset=0 + ); + SpoolFile(SpoolFile& spool); + ~SpoolFile(); + + enum SpoolState { + Empty, + Spooling, + Stored, + Playing + }; + SpoolState + spoolState; + + void + SaveAs(const char *name); + void + Read(const char *name); + + void + SpoolPacket(NetworkPacket *packet); + NetworkPacket* + NextPacket(); + }; + + //########################################################################## + //############## MissionReviewApplicationManager ##################### + //########################################################################## + + class MissionReviewApplicationManager: + public ApplicationManager + { + public: + MissionReviewApplicationManager( + Scalar frame_rate, + int spool_count, + size_t spool_size + ); + ~MissionReviewApplicationManager(); + + SpoolFile* + GetEmptySpoolFile(); + SpoolFile* + GetStoredSpoolFile(); + void + StoreSpoolFile(SpoolFile *spool_file); + void + ReleaseSpoolFile(SpoolFile *spool_file); + + protected: + int spoolCount; + SpoolFile **spoolFiles; + char **spoolBuffers; + size_t spoolSize; + }; + +#endif + diff --git a/CODE/RP/MUNGA/SRTSKT.CPP b/CODE/RP/MUNGA/SRTSKT.CPP new file mode 100644 index 0000000..76c0305 --- /dev/null +++ b/CODE/RP/MUNGA/SRTSKT.CPP @@ -0,0 +1,75 @@ +//===========================================================================// +// File: srtskt.cc // +// Project: MUNGA Brick: Connection Engine // +// Contents: Implementation of sorted socket class // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 11/02/94 ECH Initial coding. // +// 11/03/94 ECH Made compatible with BC4.0 // +// 11/05/94 JMA Made compatible with GNU C++ // +// 12/12/94 ECH Changed release handling // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// PROPRIETARY AND CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(SRTSKT_HPP) + #include +#endif + +SortedSocket::SortedSocket( + Node *node, + Logical has_unique_entries +): + SafeSocket(node) +{ + hasUniqueEntries = has_unique_entries; +} + +SortedSocket::~SortedSocket() +{ +} + +void + SortedSocket::AddValueImplementation( + Plug*, + const void* + ) +{ + Fail("SortedSocket::AddValueImplementation - Should never reach here"); +} + +Plug* + SortedSocket::FindImplementation(const void*) +{ + Fail("SortedSocket::FindImplementation - Should never reach here"); + return NULL; +} + +SortedIterator::SortedIterator(SortedSocket *sortedSocket): + SafeIterator(sortedSocket) +{ +} + +SortedIterator::~SortedIterator() +{ +} + +Plug* + SortedIterator::FindImplementation(const void*) +{ + Fail("SortedIterator::FindImplementation - Should never reach here"); + return NULL; +} + +void* + SortedIterator::GetValueImplementation() +{ + Fail("SortedIterator::GetValueImplementation - Should never reach here"); + return NULL; +} + diff --git a/CODE/RP/MUNGA/SRTSKT.HPP b/CODE/RP/MUNGA/SRTSKT.HPP new file mode 100644 index 0000000..6ad2169 --- /dev/null +++ b/CODE/RP/MUNGA/SRTSKT.HPP @@ -0,0 +1,88 @@ +//===========================================================================// +// File: srtskt.hh // +// Project: MUNGA Brick: Connection Engine // +// Contents: Interface definition for sorted socket class // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 11/02/94 ECH Initial coding. // +// 11/03/94 ECH Made compatible with BC4.0 // +// 11/05/94 JMA Made compatible with GNU C++ // +// 12/12/94 ECH Changed release handling // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// PROPRIETARY AND CONFIDENTIAL // +//===========================================================================// + +#if !defined(SRTSKT_HPP) +# define SRTSKT_HPP + +# if !defined(SFESKT_HPP) +# include +# endif + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~ SortedSocket ~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class SortedSocket: + public SafeSocket + { + public: + ~SortedSocket(); + + void + AddValuePlug( + Plug *plug, + const void *value + ) + {AddValueImplementation(plug, value);} + + Plug* + FindPlug(const void *value) + {return FindImplementation(value);} + + protected: + SortedSocket( + Logical has_unique_entries = True + ); + SortedSocket( + Node *node, + Logical has_unique_entries = True + ); + + Logical + HasUniqueEntries() + {return hasUniqueEntries;} + + virtual void + AddValueImplementation( + Plug *plug, + const void *value + ); + + virtual Plug* + FindImplementation(const void *value); + + private: + Logical + hasUniqueEntries; + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~ SortedIterator ~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class SortedIterator: + public SafeIterator + { + public: + ~SortedIterator(); + + virtual Plug* + FindImplementation(const void *value); + + virtual void* + GetValueImplementation(); + + protected: + SortedIterator(SortedSocket *sortedSocket); + }; + +#endif diff --git a/CODE/RP/MUNGA/STATE.HPP b/CODE/RP/MUNGA/STATE.HPP new file mode 100644 index 0000000..4ab7ba7 --- /dev/null +++ b/CODE/RP/MUNGA/STATE.HPP @@ -0,0 +1,108 @@ +//===========================================================================// +// File: model.hpp // +// Project: MUNGA Brick: Model Manager // +// Contents: Interface specification of model class // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 01/25/95 JMA Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. All Rights reserved // +// PROPRIETARY AND CONFIDENTIAL // +//===========================================================================// + +#if !defined(STATE_HPP) +# define STATE_HPP + +# if !defined(CMPNNT__HPP) +# include +# endif + +# if !defined(SCHAIN_HPP) +# include +# endif + + //########################################################################## + //##################### StateIndicator ############################### + //########################################################################## + + class StateIndicator: + public Node + { + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Construction and Destruction + // + public: + StateIndicator(); + StateIndicator(unsigned max_states); + StateIndicator(const StateIndicator &state_indicator); + ~StateIndicator(); + + StateIndicator& + operator=(const StateIndicator&); + + Logical + operator==(const StateIndicator&) const; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // State stuff + // + public: + unsigned + GetState() + {Check(this); return currentState;} + unsigned + GetOldState() + {Check(this); return oldState;} + void + SetState(unsigned new_state); + + protected: + unsigned + stateCount, + oldState, + currentState; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Watcher stuff + // + public: + void + AddAudioWatcher(Component *watcher) + {Check(&audioWatcherSocket);audioWatcherSocket.Add(watcher);} + void + AddVideoWatcher(Component *watcher) + {Check(&videoWatcherSocket);videoWatcherSocket.Add(watcher);} + void + AddGaugeWatcher(Component *watcher) + {Check(&gaugeWatcherSocket);gaugeWatcherSocket.Add(watcher);} + + private: + SChainOf + audioWatcherSocket; + SChainOf + videoWatcherSocket; + SChainOf + gaugeWatcherSocket; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Stream input/output methods + // + public: + friend ostream& + operator << ( + ostream &strm, + const StateIndicator &state_indicator + ); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Test Support + // + public: + Logical + TestInstance() const; + static Logical + TestClass(); + }; + +#endif diff --git a/CODE/RP/MUNGA/STYLE.HPP b/CODE/RP/MUNGA/STYLE.HPP new file mode 100644 index 0000000..04f009f --- /dev/null +++ b/CODE/RP/MUNGA/STYLE.HPP @@ -0,0 +1,166 @@ +//===========================================================================// +// File: style.hh // +// Project: MUNGA Brick: None assigned - coding styles, etc. // +// Contents: Base information used by all MUNGA source files // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 10/14/94 JMA Initial coding. // +// 11/03/94 ECH Made compatible with BC4.0 // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// PROPRIETARY AND CONFIDENTIAL // +//===========================================================================// + +#if !defined(STYLE_HPP) +# define STYLE_HPP + +# if !defined(DEBUG_STREAM) +# define DEBUG_STREAM cout +# endif + +# if !defined(Verify) +# if !defined(DEBUG_LEVEL) +# define DEBUG_LEVEL 0 +# endif +# if DEBUG_LEVEL<1 +# include +# elif DEBUG_LEVEL<2 +# include +# elif DEBUG_LEVEL<3 +# include +# else +# include +# endif +# endif + +# if defined(__BCPLUSPLUS__) + extern int + _matherr(struct exception *a); +# endif + + extern int + Fpu_Ok(); + extern void + Verify_Failed(char *message, char *file, int line); + extern void + Fail_To_Debugger(char *message, char *file, int line); + extern void + Exit(int exit_code); + + class Signature + { + private: +# if DEBUG_LEVEL>0 + enum Mark + { + ok, + destroyed, + corrupted, + noMagic=(int)0xAB135795L, + magic=(int)0xFFED1231L + } mark; +# endif + + protected: + Signature(); + ~Signature(); + + public: + friend int + Is_Signature_Bad(const volatile Signature *p); + }; + +# if defined(USE_SIGNATURE) +# define SIGNATURED : public Signature +# else +# define SIGNATURED +# define Is_Signature_Bad(p) (False) +# endif + +//##########~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//# MACROS # +//########## + +# define ELEMENTS(Array) (sizeof(Array)/sizeof(*Array)) + +# if defined(TEST_CLASS) +# define Test(c)\ + if (!(c)) {\ + DEBUG_STREAM << __FILE__"(" << __LINE__ << "): "#c" failed!\07\n";\ + return False;\ + } + +# define Test_And_Dump(c,v)\ + if (!(c)) {\ + DEBUG_STREAM << __FILE__"(" << __LINE__ << "): "#c" failed!\07\n";\ + DEBUG_STREAM << __FILE__"(" << __LINE__ << "): "#v" = " << (v) << '\n';\ + return False;\ + } + +# define Test_Message(m)\ + (DEBUG_STREAM << m) + +# define Test_Branch_On()\ + Fail("First visit of branch") +# define Test_Branch_Off() + +# else +# define Test(c) +# define Test_And_Dump(c,v) +# define Test_Message(m) +# endif + +# if defined(__sgi__) +# define stricmp(s1, s2) (strcasecmp(s1, s2)) +# define strnicmp(s1, s2, n) (strncasecmp(s1, s2, n)) +# endif + + //################~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + //# ENUMERATIONS # + //################ + + enum { + False = 0, + True = 1 + }; + + //###########~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + //# CASTING # + //########### + +# define SKIPPY_CAST(Type,var) (*((Type*)&(var))) + + //#############~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + //# TEMPLATES # + //############# + +# define SMALL (1e-4f) + +# define Abs(value) ((value>0) ? value : -value) +# define Clamp(v,f,c) (v = ((vc) ? c : v))) +# define Max_Clamp(v,c) (v = ((v>c) ? c : v)) +# define Is_Many_Bits(value) (Lowbit(value)^value) +# define Low_Bit(value) (value & (-value)) +# define Min_Clamp(v,f) (v = ((vb) ? a : b) +# define Min(a,b) ((aSMALL) + + //############~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + //# TYPEDEFS # + //############ + + typedef int Logical; // machine dependant zero/not-zero + typedef unsigned char Byte; // 8 bits unsigned + typedef unsigned short Word; // 16 bits unsigned + typedef unsigned long LWord; // 32 bits unsigned + + typedef int Enumeration; + +# if !defined(HEAP_HPP) +# include +# endif + +#endif + diff --git a/CODE/RP/MUNGA/SUBSYSTM.HPP b/CODE/RP/MUNGA/SUBSYSTM.HPP new file mode 100644 index 0000000..9a792da --- /dev/null +++ b/CODE/RP/MUNGA/SUBSYSTM.HPP @@ -0,0 +1,202 @@ +//===========================================================================// +// File: subsystm.hh // +// Project: MUNGA Brick: Entity Manager // +// Contents: Interface specification of entity subsystem class // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 01/24/95 JMA Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. All Rights reserved // +// PROPRIETARY AND CONFIDENTIAL // +//===========================================================================// + +#if !defined(SUBSYSTM_HPP) +# define SUBSYSTM_HPP + +# if !defined(SIMULATE_HPP) +# include +# endif + +# if !defined(RESOURCE_HPP) +# include +# endif + +# if !defined(DAMAGE_HPP) +# include +# endif + + class Entity; + class NotationFile; + + //########################################################################## + //#################### Subsystem::ModelResource ###################### + //########################################################################## + + struct Subsystem__SubsystemResource + { + char + subsystemName[32]; + RegisteredClass::ClassID + classID; + size_t + subsystemModelSize; + int + segmentIndex; + LWord + subsystemFlags; + }; + + //########################################################################## + //######################## Subsystem ################################# + //########################################################################## + + class Subsystem: + public Simulation + { + //########################################################################## + // Shared Data Support + // + public: + static Derivation ClassDerivations; + static SharedData DefaultData; + + //########################################################################## + // Construction and Destruction Support + // + public: + typedef Subsystem__SubsystemResource SubsystemResource; + + ~Subsystem(); + + static ResourceDescription::ResourceID + CreateStreamedSubsystem( + NotationFile *model_file, + const char* model_name, + const char* subsystem_name, + SubsystemResource *subsystem_resource, + NotationFile *subsystem_file, + const ResourceDirectories *directories + ); + + protected: + Subsystem( + Entity *entity, + int subsystem_id, + SubsystemResource *model, + SharedData &shared_data + ); + + Subsystem( + Entity *entity, + int subsystem_id, + const char *subsystem_name, + RegisteredClass::ClassID class_id, + SharedData &shared_data + ); + + //########################################################################## + // Flag Support + // + public: + enum { + DontReplicateBit = Simulation::NextBit, + NextBit + }; + enum { + DontReplicateFlag = 1<TakeDamage(damage); + } + + DamageZone *damageZone; + + virtual void + DeathReset(int /*reset_command*/) + {} + + virtual void + DeathShutdown(int /*shutdown_command*/) + {} +}; + +//########################################################################## +// Tool support +// +int + Get_Segment_Index( + NotationFile *model_file, + const char* model_name, + const ResourceDirectories *directories, + const char *desired_page + ); +#endif diff --git a/CODE/RP/MUNGA/TABLE.CPP b/CODE/RP/MUNGA/TABLE.CPP new file mode 100644 index 0000000..651a4c9 --- /dev/null +++ b/CODE/RP/MUNGA/TABLE.CPP @@ -0,0 +1,813 @@ +//===========================================================================// +// File: table.cc // +// Project: MUNGA Brick: Connection Library // +// Contents: Implementation details of Table class // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 09/30/94 ECH Initial coding. // +// 11/02/94 JMA Made compatible with SGI CC, merged with iterator // +// 11/03/94 ECH Made compatible with BC4.0 // +// 11/05/94 JMA Made compatible with GNU C++ // +// 12/12/94 ECH Changed release handling // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// PROPRIETARY AND CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(TABLE_HPP) + #include +#endif + +#if !defined(NODE_HPP) + #include +#endif + +#define VERIFY_INDEX(x) Verify(0 <= (x) && (x) < numItems) + +// +//########################################################################### +// TABLEENTRY +//########################################################################### +// + +TableEntry::TableEntry( + Table *table, + Plug *plug +): + Link(table, plug) +{ +} + +TableEntry::~TableEntry() +{ + Table *table = Cast_Object(Table*, socket); + IteratorPosition index; + + // + //-------------------------------------- + // Find the link in the table and remove + //-------------------------------------- + // + index = table->SearchForTableEntry(this); + table->RemoveNthTableEntry(index); + + // + //-------------------------------------------- + // Notify iterators that link is being deleted + //-------------------------------------------- + // + table->SendIteratorMemo(PlugRemoved, &index); + + // + //------------------------------------------ + // Remove this link from any plug references + //------------------------------------------ + // + ReleaseFromPlug(); + + // + //------------------------------------------------------------- + // Tell the node to release this link. Note that this link + // is not referenced by the plug or the chain at this point in + // time. + //------------------------------------------------------------- + // + if (table->GetReleaseNode() != NULL) + { + Check(table->GetReleaseNode()); + table->GetReleaseNode()->ReleaseLinkHandler(table, plug); + } +} + +// +//########################################################################### +// TABLE +//########################################################################### +// + +// +//########################################################################### +// Table +//########################################################################### +// +Table::Table( + Node *node, + Logical has_unique_entries +): + SortedSocket(node, has_unique_entries) +{ + array = NULL; + numItems = 0; +} + +// +//########################################################################### +// ~Table +//########################################################################### +// +Table::~Table() +{ + SetReleaseNode(NULL); + while (numItems > 0) + { + Check_Pointer(array); + Check(array[0]); + + Unregister_Object(array[0]); + delete array[0]; + } + Verify(numItems == 0); + Verify(array == NULL); +} + +// +//########################################################################### +// TestInstance +//########################################################################### +// +Logical + Table::TestInstance() const +{ + SortedSocket::TestInstance(); + + if (numItems > 0 || array != NULL) + { + Verify(numItems > 0); + Check_Pointer(array); + } + return True; +} + +// +//########################################################################### +// AddImplementation +//########################################################################### +// +void + Table::AddImplementation(Plug *plug) +{ + AddValueImplementation(plug, NULL); +} + +// +//########################################################################### +// AddValueImplementation +//########################################################################### +// +void + Table::AddValueImplementation( + Plug *plug, + const void *value + ) +{ + TableEntry *link; + + /* + * Verify that value has not been added + */ + Verify(HasUniqueEntries() ? (SearchForValue(value) == TableNullIndex) : (Logical)True); + + /* + * Make new table entry + */ + link = MakeTableEntry(plug, value); + Register_Object(link); + + /* + * Add, sort and send memo to iterators to update references + */ + AddTableEntry(link); + SortTableEntries(); + SendIteratorMemo(PlugAdded, link); +} + +// +//########################################################################### +// FindImplementation +//########################################################################### +// +Plug* + Table::FindImplementation( + const void *value + ) +{ + IteratorPosition index; + + if ((index = SearchForValue(value)) != TableNullIndex) + { + Check_Pointer(array); + VERIFY_INDEX(index); + Check(array[index]); + + return array[index]->GetPlug(); + } + return NULL; +} + +// +//########################################################################### +// MakeTableEntry +//########################################################################### +// +TableEntry* + Table::MakeTableEntry( + Plug*, + const void* + ) +{ + Fail("Table::MakeTableEntry - Should never reach here"); + return NULL; +} + +// +//########################################################################### +// CompareTableEntries +//########################################################################### +// +int + Table::CompareTableEntries( + TableEntry*, + TableEntry* + ) +{ + Fail("Table::CompareTableEntries - Should never reach here"); + return 0; +} + +// +//########################################################################### +// CompareValueToTableEntry +//########################################################################### +// +int + Table::CompareValueToTableEntry( + const void*, + TableEntry* + ) +{ + Fail("Table::CompareValueToTableEntry - Should never reach here"); + return 0; +} + +// +//########################################################################### +// AddTableEntry +//########################################################################### +// +void + Table::AddTableEntry( + TableEntry *link + ) +{ + Check(link); + +#if 0 + numItems++; + if (array == NULL) + { + array = (TableEntry**)malloc(sizeof(TableEntry*)); + Register_Pointer(array); + } + else + { + Unregister_Pointer(array); + array = (TableEntry**)realloc(array, numItems * sizeof(TableEntry*)); + Register_Pointer(array); + } +#else + CollectionSize new_num_items = numItems+1; + if (array == NULL) + { + Verify(new_num_items == 1); + array = new TableEntry*[new_num_items]; + Register_Pointer(array); + } + else + { + TableEntry **new_array = new TableEntry*[new_num_items]; + Register_Pointer(new_array); + + Mem_Copy( + new_array, + array, + numItems * sizeof(TableEntry*), + new_num_items * sizeof(TableEntry*) + ); + Unregister_Pointer(array); + delete[] array; + array = new_array; + } + numItems = new_num_items; +#endif + Check_Pointer(array); + + array[numItems - 1] = link; +} + +// +//########################################################################### +// SortTableEntries +//########################################################################### +// +void + Table::SortTableEntries() +{ + size_t i, j; + TableEntry *temp; + + for (i = 1; i < numItems; i++) + { + Check_Pointer(array); + Verify(i < numItems); + + temp = array[i]; + j = i; + + Verify(j-1 < numItems); + + while (CompareTableEntries(array[j-1], temp) > 0) + { + Verify(j < numItems); + Verify(j-1 < numItems); + + array[j] = array[j-1]; + j--; + if (j < 1) + break; + } + + Verify(j < numItems); + array[j] = temp; + } +} + +// +//########################################################################### +// SearchForValue +//########################################################################### +// +IteratorPosition + Table::SearchForValue( + const void *value + ) +{ + size_t n = numItems; + size_t i = 0, j; + IteratorPosition k; + + while (i < n) + { + j = (i + n - 1) >> 1; + + Check_Pointer(array); + Verify(j < numItems); + + if ((k = CompareValueToTableEntry(value, array[j])) == 0) + return j; + + if (k < 0) + n = j; + else + i = j + 1; + } + return TableNullIndex; +} + +// +//########################################################################### +// SearchForTableEntry +//########################################################################### +// +IteratorPosition + Table::SearchForTableEntry( + TableEntry *link + ) +{ + CollectionSize i; + + for (i = 0; i < numItems; i++) + { + Check_Pointer(array); + VERIFY_INDEX(i); + + if (array[i] == link) + return i; + } + return TableNullIndex; +} + +// +//########################################################################### +// RemoveNthTableEntry +//########################################################################### +// +void + Table::RemoveNthTableEntry( + CollectionSize index + ) +{ + char *itemPtr, *lastItem; + size_t width; + + Check_Pointer(array); + VERIFY_INDEX(index); + + /* + * Find the location of the item + */ + itemPtr = (char*)&array[index]; + Check_Pointer(itemPtr); + + /* + * Remove the item from the array + */ + width = sizeof(void*); + lastItem = (char*)array + (numItems - 1) * width; + + if (itemPtr < lastItem) + { + memmove(itemPtr, itemPtr + width, (size_t)(lastItem - itemPtr)); + } + + /* + * Resize the array + */ +#if 0 + numItems--; + if (numItems == 0) + { + Unregister_Pointer(array); + free(array); + array = NULL; + } + else + { + Unregister_Pointer(array); + array = (TableEntry**)realloc(array, numItems * sizeof(TableEntry*)); + Register_Pointer(array); + } +#else + CollectionSize new_num_items = numItems-1; + if (new_num_items == 0) + { + Unregister_Pointer(array); + delete[] array; + array = NULL; + } + else + { + TableEntry **new_array = new TableEntry*[new_num_items]; + Register_Pointer(new_array); + + Mem_Copy( + new_array, + array, + new_num_items * sizeof(TableEntry*), + new_num_items * sizeof(TableEntry*) + ); + Unregister_Pointer(array); + delete[] array; + array = new_array; + } + numItems = new_num_items; +#endif +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~ TableIterator inlines ~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +#if DEBUG_LEVEL>0 + TableEntry* + TableIterator::NthEntry( + CollectionSize index + ) + { + Check_Pointer(array); + Verify(0 <= index && index < numItems); + Check(array[index]); + + return array[index]; + } +#endif + +// +//########################################################################### +// TableIterator +//########################################################################### +// +TableIterator::TableIterator(Table *table): + SortedIterator(table) +{ + array = table->array; + numItems = table->numItems; + + if (array != NULL) + currentPosition = 0; + else + currentPosition = TableNullIndex; +} + +// +//########################################################################### +//########################################################################### +// +TableIterator::~TableIterator() +{ +} + +// +//########################################################################### +// TestInstance +//########################################################################### +// +Logical + TableIterator::TestInstance() const +{ + SortedIterator::TestInstance(); + + if (array != NULL) + { + Check_Pointer(array); + Verify(0 < numItems); + Verify(currentPosition < numItems); + } + return True; +} + +// +//########################################################################### +// First +//########################################################################### +// +void + TableIterator::First() +{ + if (array != NULL) + currentPosition = 0; +} + +// +//########################################################################### +// Last +//########################################################################### +// +void + TableIterator::Last() +{ + if (array != NULL) + currentPosition = numItems - 1; +} + +// +//########################################################################### +// Next +//########################################################################### +// +void + TableIterator::Next() +{ + IncrementPosition(); +} + +// +//########################################################################### +// Previous +//########################################################################### +// +void + TableIterator::Previous() +{ + DecrementPosition(); +} + +// +//########################################################################### +// ReadAndNextImplementation +//########################################################################### +// +void + *TableIterator::ReadAndNextImplementation() +{ + if (currentPosition != TableNullIndex) + { + Plug *plug; + + plug = NthEntry(currentPosition)->GetPlug(); + IncrementPosition(); + return plug; + } + return NULL; +} + +// +//########################################################################### +// ReadAndPreviousImplementation +//########################################################################### +// +void + *TableIterator::ReadAndPreviousImplementation() +{ + if (currentPosition != TableNullIndex) + { + Plug *plug; + + plug = NthEntry(currentPosition)->GetPlug(); + DecrementPosition(); + return plug; + } + return NULL; +} + +// +//########################################################################### +// GetCurrentImplementation +//########################################################################### +// +void + *TableIterator::GetCurrentImplementation() +{ + if (currentPosition != TableNullIndex) + { + return NthEntry(currentPosition)->GetPlug(); + } + return NULL; +} + +// +//########################################################################### +// GetSize +//########################################################################### +// +CollectionSize + TableIterator::GetSize() +{ + return numItems; +} + +// +//########################################################################### +// GetNthImplementation +//########################################################################### +// +void + *TableIterator::GetNthImplementation( + CollectionSize index + ) +{ + if (index < numItems) + { + return NthEntry(currentPosition = index)->GetPlug(); + } + return NULL; +} + +// +//########################################################################### +// Remove +//########################################################################### +// +void + TableIterator::Remove() +{ + if (currentPosition != TableNullIndex) + { + Unregister_Object(NthEntry(currentPosition)); + delete NthEntry(currentPosition); + } +} + +// +//########################################################################### +// FindImplementation +//########################################################################### +// +Plug + *TableIterator::FindImplementation( + const void *value + ) +{ + IteratorPosition index; + Table *table = Cast_Object(Table*, socket); + + if ((index = table->SearchForValue(value)) != TableNullIndex) + { + if (!table->HasUniqueEntries()) + { + while ( + index-1 >= 0 && + table->CompareTableEntries(NthEntry(index-1), NthEntry(index)) == 0 + ) + { + index--; + } + } + return (NthEntry(currentPosition = index)->GetPlug()); + } + currentPosition = TableNullIndex; + return NULL; +} + +// +//########################################################################### +// ReceiveMemo +//########################################################################### +// +void + TableIterator::ReceiveMemo( + IteratorMemo memo, + void *content + ) +{ + switch (memo) + { + case PlugAdded: + { + Table *table = Cast_Object(Table*, socket); + + Check(table); + array = table->array; + numItems = table->numItems; + + // + // If a plug is added before or at the current position then + // the current position should be incremented one forward, + // otherwise, no action is necessary + // + TableEntry *link; + IteratorPosition index; + + link = Cast_Object(TableEntry*, content); + index = table->SearchForTableEntry(link); + VERIFY_INDEX(index); + if (index <= currentPosition) + { + currentPosition++; + } + Verify(TableNullIndex <= currentPosition && currentPosition < numItems); + } + break; + + case PlugRemoved: + { + Table *table = Cast_Object(Table*, socket); + + Check(table); + array = table->array; + numItems = table->numItems; + + // + // If a plug is removed before the current position then decrement + // the current position, else if the current position is at the end + // of the table then decrement the counter + // + IteratorPosition index; + + Check_Pointer(content); + index = *(IteratorPosition*)content; + if (index < currentPosition) + { + currentPosition--; + } + else if (numItems <= currentPosition) + { + currentPosition--; + } + Verify(TableNullIndex <= currentPosition && currentPosition < numItems); + } + break; + #if 0 + { + IteratorPosition index; + + Check_Pointer(content); + index = *(IteratorPosition*)content; + + array = Cast_Object(Table*, socket)->array; + numItems = Cast_Object(Table*, socket)->numItems; + + /* + * Decrement counter, if at 0 this will automatically become + * TableNullIndex + */ + if (index < currentPosition) + { + currentPosition--; + } + else if (numItems <= currentPosition) + { + currentPosition--; + } + + Verify(TableNullIndex <= currentPosition && currentPosition < numItems); + break; + } + #endif + } +} + +#if defined(TEST_CLASS) +# include "table.tcp" +#endif diff --git a/CODE/RP/MUNGA/TABLE.HPP b/CODE/RP/MUNGA/TABLE.HPP new file mode 100644 index 0000000..091793a --- /dev/null +++ b/CODE/RP/MUNGA/TABLE.HPP @@ -0,0 +1,559 @@ +//===========================================================================// +// File: table.hh // +// Project: MUNGA Brick: Connection Library // +// Contents: Interface specification for Tables // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 09/30/94 ECH Initial coding. // +// 11/02/94 JMA Made compatible with SGI CC, merged with iterator // +// 11/03/94 ECH Made compatible with BC4.0 // +// 11/05/94 JMA Made compatible with GNU C++ // +// 12/12/94 ECH Changed release handling // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// PROPRIETARY AND CONFIDENTIAL // +//===========================================================================// + +#if !defined(TABLE_HPP) +# define TABLE_HPP + +# if !defined(SRTSKT_HPP) +# include +# endif + +# if !defined(MEMBLOCK_HPP) +# include +# endif + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~ TableEntry ~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class Table; + + class TableEntry: + public Link + { + public: + TableEntry( + Table *table, + Plug *plug + ); + ~TableEntry(); + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~ TableEntryOf ~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + #define TABLEENTRY_MEMORYBLOCK_ALLOCATION (100) + + template class TableEntryOf: + public TableEntry + { + public: + TableEntryOf( + Table *table, + Plug *plug, + const V &value + ); + ~TableEntryOf(); + + void* + operator new(size_t); + void + operator delete(void *where); + + V + GetValue() + {return value;} + V* + GetValuePointer() + {return &value;} + + private: + static MemoryBlock + *allocatedMemory; + static CollectionSize + allocationCount; + + V value; + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~ TableEntryOf templates ~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + template MemoryBlock* + TableEntryOf::allocatedMemory = NULL; + template CollectionSize + TableEntryOf::allocationCount = 0; + + template + TableEntryOf::TableEntryOf( + Table *table, + Plug *plug, + const V &value + ): + TableEntry(table, plug) + { + this->value = value; + } + + template + TableEntryOf::~TableEntryOf() + { + } + + template void* + TableEntryOf::operator new(size_t) + { + Verify(allocationCount >= 0); + if (allocationCount++ == 0) + { + allocatedMemory = + new MemoryBlock( + sizeof(TableEntryOf), + TABLEENTRY_MEMORYBLOCK_ALLOCATION, + TABLEENTRY_MEMORYBLOCK_ALLOCATION, + "TableEntryOf" + ); + Register_Object(allocatedMemory); + } + Verify(allocationCount < INT_MAX); + Check(allocatedMemory); + return allocatedMemory->New(); + } + + template void + TableEntryOf::operator delete(void *where) + { + Check(allocatedMemory); + allocatedMemory->Delete(where); + if (--allocationCount == 0) + { + Unregister_Object(allocatedMemory); + delete allocatedMemory; + allocatedMemory = NULL; + } + Verify(allocationCount >= 0); + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~ Table ~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + const IteratorPosition TableNullIndex = -1; + + class Table: + public SortedSocket + { + friend class TableEntry; + friend class TableIterator; + + public: + // + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // Public interface + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // + + // + //-------------------------------------------------------------------- + // Constructor, Destructor and testing + //-------------------------------------------------------------------- + // + Table( + Node *node, + Logical has_unique_entries + ); + ~Table(); + + Logical + TestInstance() const; + static Logical + TestClass(); + static Logical + ProfileClass(); + + protected: + // + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // Protected interface + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // + void + AddImplementation(Plug *plug); + void + AddValueImplementation( + Plug *plug, + const void *value + ); + Plug + *FindImplementation(const void *value); + + private: + // + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // Private interface + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // + virtual TableEntry + *MakeTableEntry( + Plug *plug, + const void *value + ); + + virtual int + CompareTableEntries( + TableEntry *entry1, + TableEntry *entry2 + ); + + virtual int + CompareValueToTableEntry( + const void *value, + TableEntry *entry + ); + + void + AddTableEntry(TableEntry *entry); + void + SortTableEntries(); + IteratorPosition + SearchForValue(const void *value); + IteratorPosition + SearchForTableEntry(TableEntry *entry); + void + RemoveNthTableEntry(CollectionSize index); + + // + //-------------------------------------------------------------------- + // Private data + //-------------------------------------------------------------------- + // + TableEntry **array; + CollectionSize numItems; + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~ TableOf ~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + template class TableOf: + public Table + { + public: + // + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // Public interface + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // + TableOf( + Node *node, + Logical has_unique_entries + ); + ~TableOf(); + + // + //-------------------------------------------------------------------- + // Socket methods (see Socket for full listing) + //-------------------------------------------------------------------- + // + void + AddValue( + T plug, + const V &value + ) + {AddValueImplementation(plug, &value);} + + T + Find(const V &value) + {return (T)FindImplementation(&value);} + + private: + // + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // Private interface + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // + TableEntry* + MakeTableEntry( + Plug *plug, + const void *value + ) + {return new TableEntryOf(this, plug, *(V*)value);} + int + CompareTableEntries( + TableEntry *entry1, + TableEntry *entry2 + ); + int + CompareValueToTableEntry( + const void *value, + TableEntry *entry + ); + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~ TableOf templates ~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + template + TableOf::TableOf( + Node *node, + Logical has_unique_entries + ): + Table( + node, + has_unique_entries + ) + { + } + + template + TableOf::~TableOf() + { + } + + #if 0 + template int + TableOf::CompareTableEntries( + TableEntry *entry1, + TableEntry *entry2 + ) + { + V result = + (V)(Cast_Object(TableEntryOf*, entry1)->GetValue() - + Cast_Object(TableEntryOf*, entry2)->GetValue()); + + if (result == (V)0) + return 0; + return (result > (V)0) ? 1 : -1; + } + #else + template int + TableOf::CompareTableEntries( + TableEntry *entry1, + TableEntry *entry2 + ) + { + V *ptr1 = Cast_Object(TableEntryOf*, entry1)->GetValuePointer(); + V *ptr2 = Cast_Object(TableEntryOf*, entry2)->GetValuePointer(); + + Check_Pointer(ptr1); + Check_Pointer(ptr2); + + if (*ptr1 == *ptr2) + return 0; + else + return ((*ptr1 > *ptr2) ? 1 : -1); + } + #endif + + #if 0 + template int + TableOf::CompareValueToTableEntry( + const void *value, + TableEntry *link + ) + { + Check_Pointer(value); + + V result = + (V)(*(V*)value - Cast_Object(TableEntryOf*, link)->GetValue()); + + if (result == (V)0) + return 0; + return (result > (V)0) ? 1 : -1; + } + #else + template int + TableOf::CompareValueToTableEntry( + const void *value, + TableEntry *link + ) + { + Check_Pointer(value); + + V *ptr = Cast_Object(TableEntryOf*, link)->GetValuePointer(); + Check_Pointer(ptr); + + if (*(V*)value == *ptr) + return 0; + else + return (*(V*)value > *ptr) ? 1 : -1; + } + #endif + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~ TableIterator ~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class TableIterator: + public SortedIterator + { + public: + // + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // Public interface + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // + + // + //-------------------------------------------------------------------- + // Constructors, Destructor and testing + //-------------------------------------------------------------------- + // + TableIterator(Table *table); + ~TableIterator(); + Logical + TestInstance() const; + + // + //-------------------------------------------------------------------- + // Iterator methods (see Iterator for full listing) + //-------------------------------------------------------------------- + // + void + First(); + void + Last(); + void + Next(); + void + Previous(); + CollectionSize + GetSize(); + void + Remove(); + + protected: + // + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // Protected interface + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // + void* + ReadAndNextImplementation(); + void* + ReadAndPreviousImplementation(); + void* + GetCurrentImplementation(); + void* + GetNthImplementation(CollectionSize index); + Plug* + FindImplementation(const void *value); + + TableEntry* + GetCurrentEntry() + {return NthEntry(currentPosition);} + + private: + // + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // Private interface + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // + void + ReceiveMemo( + IteratorMemo memo, + void *content + ); + + TableEntry* + NthEntry(CollectionSize index) + #if DEBUG_LEVEL>0 + ; + #else + {return array[index];} + #endif + + void + IncrementPosition() + {if (++currentPosition >= numItems) currentPosition = TableNullIndex;} + void + DecrementPosition() + {if (--currentPosition < 0) currentPosition = TableNullIndex;} + + // + //-------------------------------------------------------------------- + // Private data + //-------------------------------------------------------------------- + // + TableEntry **array; + CollectionSize numItems; + IteratorPosition currentPosition; + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~ TableIteratorOf ~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + template class TableIteratorOf: + public TableIterator + { + public: + // + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // Public interface + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // + + // + //-------------------------------------------------------------------- + // Constructors and Destructor + //-------------------------------------------------------------------- + // + TableIteratorOf(TableOf *table); + TableIteratorOf(TableOf &table); + ~TableIteratorOf(); + + // + //-------------------------------------------------------------------- + // Iterator methods (see Iterator for full listing) + //-------------------------------------------------------------------- + // + T + ReadAndNext() + {return (T)ReadAndNextImplementation();} + T + ReadAndPrevious() + {return (T)ReadAndPreviousImplementation();} + T + GetCurrent() + {return (T)GetCurrentImplementation();} + T + GetNth(CollectionSize index) + {return (T)GetNthImplementation(index);} + T + Find(const V &value) + {return (T)FindImplementation(&value);} + V + GetValue() + {return Cast_Object(TableEntryOf*, GetCurrentEntry())->GetValue();} + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~ TableIteratorOf templates ~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + template + TableIteratorOf::TableIteratorOf(TableOf *table): + TableIterator(table) + { + } + + template + TableIteratorOf::TableIteratorOf(TableOf &table): + TableIterator(&table) + { + } + + template + TableIteratorOf::~TableIteratorOf() + { + } + +#endif diff --git a/CODE/RP/MUNGA/TABLE.TCP b/CODE/RP/MUNGA/TABLE.TCP new file mode 100644 index 0000000..8562662 --- /dev/null +++ b/CODE/RP/MUNGA/TABLE.TCP @@ -0,0 +1,532 @@ +//===========================================================================// +// File: table.tst // +// Project: MUNGA Brick: Connection Library // +// Contents: test routines for Table class // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 10/01/94 ECH Initial coding. // +// 11/02/94 JMA Made compatible with SGI CC, used Time class instead of // +// clock_t // +// 11/03/94 ECH Made compatible with BC4.0 // +// 11/05/94 JMA Made compatible with GNU C++ // +//---------------------------------------------------------------------------// +// Copyright (C) 1994, Virtual World Entertainment, Inc. All Rights reserved // +// PROPRIETARY AND CONFIDENTIAL // +//===========================================================================// + +#include "time.hpp" + +class TableTestPlug: + public Plug +{ +public: + int value; + + TableTestPlug(int value); + ~TableTestPlug(); +}; + +class TableTestNode: + public Node +{ +public: + TableOf table1; + TableOf table2; + + TableTestNode(); + ~TableTestNode(); + + void RunProfile(); + void RunTest(); +}; + +#define RandInt(x) (rand() % x + 1) + +TableTestPlug::TableTestPlug(int value): + Plug() +{ + this->value = value; +} + +TableTestPlug::~TableTestPlug() +{ +} + +TableTestNode::TableTestNode(): + Node(), table1(this, True), table2(this, True) +{ +} + +TableTestNode::~TableTestNode() +{ +} + +// +//########################################################################### +// ProfileClass +//########################################################################### +// + +Logical + Table::ProfileClass() +{ + TableTestNode testNode; + Time startTicks = Now(); + + Test_Message("Table::ProfileClass\n"); + + testNode.RunProfile(); + + Test_Message("Table::ProfileClass elapsed = " << (Now() - startTicks) << endl); + return True; +} + +// +//########################################################################### +// TestClass +//########################################################################### +// + +Logical + Table::TestClass() +{ + DEBUG_STREAM << "Starting Table test...\n"; + + TableTestNode testNode; + + testNode.RunTest(); + return True; +} + +void + TableTestNode::RunProfile() +{ + TableTestPlug *testPlug1, *testPlug2; + int values[TEST_CLASS]; + int i, j; + Time startTicks; + + /* + * Generate unique values, shuffle them + */ + for (i = 0; i < TEST_CLASS; i++) { + values[i] = i; + } + for (i = 0; i < TEST_CLASS; i++) { + int tmp; + + j = i + RandInt(TEST_CLASS - i) - 1; + tmp = values[j]; + values[j] = values[i]; + values[i] = tmp; + } + + // + //-------------------------------------------------------------------- + // Run timing tests + //-------------------------------------------------------------------- + // + + /* + * Create plugs and add to both sockets + */ + startTicks = Now(); + for (i = 0; i < TEST_CLASS; i++) + { + testPlug1 = new TableTestPlug(values[i]); + Register_Object( testPlug1 ); + table1.AddValue(testPlug1, values[i]); + table2.AddValue(testPlug1, values[i]); + } + Test_Message("TableTestNode::RunTest Create = " << (Now() - startTicks) << endl); + + /* + * Iterate over both sockets + */ + startTicks = Now(); + { + TableIteratorOf iterator1(&table1); + TableIteratorOf iterator2(&table2); + + Verify( iterator1.GetSize() == TEST_CLASS ); + Verify( iterator2.GetSize() == TEST_CLASS ); + + i = 0; + while ((testPlug1 = iterator1.ReadAndNext()) != NULL) + { + Check( testPlug1 ); + Verify( testPlug1->value == i ); + i++; + } + Verify( i == TEST_CLASS ); + + i = 0; + while ((testPlug1 = iterator2.ReadAndNext()) != NULL) + { + Check( testPlug1 ); + Verify( testPlug1->value == i ); + i++; + } + Verify( i == TEST_CLASS ); + } + Test_Message("TableTestNode::RunTest Iterate = " << (Now() - startTicks) << endl); + + /* + * Find + */ + startTicks = Now(); + { + TableIteratorOf iterator1(&table1); + TableIteratorOf iterator2(&table2); + + for (i = 0; i < TEST_CLASS; i++) + { + testPlug1 = iterator1.Find(i); + testPlug2 = iterator2.Find(i); + + Check( testPlug1 ); + Check( testPlug2 ); + + Verify( testPlug1->value == i ); + Verify( testPlug2->value == i ); + + Verify( testPlug1 == testPlug2 ); + } + } + Test_Message("TableTestNode::RunTest Find = " << (Now() - startTicks) << endl); + + /* + * Destroy from table1, verify with table2 + */ + startTicks = Now(); + { + TableIteratorOf iterator1(&table1); + TableIteratorOf iterator2(&table2); + + Verify( iterator1.GetSize() == TEST_CLASS ); + Verify( iterator2.GetSize() == TEST_CLASS ); + + i = 0; + while ((testPlug1 = iterator1.ReadAndNext()) != NULL) + { + Check( testPlug1 ); + Verify( testPlug1->value == i ); + i++; + + Unregister_Object( testPlug1 ); + delete(testPlug1); + } + Verify( i == TEST_CLASS ); + + Verify( iterator1.GetSize() == 0 ); + Verify( iterator2.GetSize() == 0 ); + } + Test_Message("TableTestNode::RunTest Destroy = " << (Now() - startTicks) << endl); +} + +void + TableTestNode::RunTest() +{ + TableTestPlug *testPlug1, *testPlug2; + int values[TEST_CLASS]; + int i, j; +// Time startTicks; + + /* + * Generate unique values, shuffle them + */ + for (i = 0; i < TEST_CLASS; i++) { + values[i] = i; + } + for (i = 0; i < TEST_CLASS; i++) { + int tmp; + + j = i + RandInt(TEST_CLASS - i) - 1; + tmp = values[j]; + values[j] = values[i]; + values[i] = tmp; + } + + // + //-------------------------------------------------------------------- + // Stress tests + //-------------------------------------------------------------------- + // + + /* + * Create plugs and add to both sockets + */ + for (i = 0; i < TEST_CLASS; i++) + { + testPlug1 = new TableTestPlug(values[i]); + Register_Object( testPlug1 ); + table1.AddValue(testPlug1, values[i]); + table2.AddValue(testPlug1, values[i]); + } + + /* + * Find + */ + { + for (i = 0; i < TEST_CLASS; i++) + { + testPlug1 = table1.Find(i); + testPlug2 = table2.Find(i); + + Check( testPlug1 ); + Check( testPlug2 ); + + Verify( testPlug1->value == i ); + Verify( testPlug2->value == i ); + + Verify( testPlug1 == testPlug2 ); + } + } + + /* + * Test first and last + */ + { + TableIteratorOf iterator1(&table1); + TableIteratorOf iterator2(&table2); + + Verify( iterator1.GetSize() == TEST_CLASS ); + Verify( iterator2.GetSize() == TEST_CLASS ); + + iterator1.First(); + iterator2.First(); + + testPlug1 = iterator1.GetCurrent(); + testPlug2 = iterator2.GetCurrent(); + Check( testPlug1 ); + Check( testPlug2 ); + + Verify( testPlug1 == testPlug2 ); + Verify( testPlug1 == iterator1.GetNth(0) ); + Verify( testPlug1 == iterator2.GetNth(0) ); + + iterator1.Last(); + iterator2.Last(); + + testPlug1 = iterator1.GetCurrent(); + testPlug2 = iterator2.GetCurrent(); + Check( testPlug1 ); + Check( testPlug2 ); + + Verify( testPlug1 == testPlug2 ); + Verify( testPlug1 == iterator1.GetNth(TEST_CLASS - 1) ); + Verify( testPlug1 == iterator2.GetNth(TEST_CLASS - 1) ); + } + + /* + * Test next and prev + */ + { + TableIteratorOf iterator1(&table1); + TableIteratorOf iterator2(&table2); + + Verify( iterator1.GetSize() == TEST_CLASS ); + Verify( iterator2.GetSize() == TEST_CLASS ); + + i = 0; + while ((testPlug1 = iterator1.GetCurrent()) != NULL) + { + testPlug2 = iterator2.GetCurrent(); + + Check( testPlug1 ); + Check( testPlug2 ); + Verify( testPlug1 == testPlug2 ); + + Verify( testPlug1->value == i ); + Verify( testPlug2->value == i ); + + iterator1.Next(); + iterator2.Next(); + + i++; + } + Verify( i == TEST_CLASS ); + + iterator1.Last(); + iterator2.Last(); + + i = TEST_CLASS - 1; + while ((testPlug1 = iterator1.GetCurrent()) != NULL) + { + testPlug2 = iterator2.GetCurrent(); + + Check( testPlug1 ); + Check( testPlug2 ); + Verify( testPlug1 == testPlug2 ); + + Verify( testPlug1->value == i ); + Verify( testPlug2->value == i ); + + iterator1.Previous(); + iterator2.Previous(); + + i--; + } + Verify( i == -1 ); + } + + /* + * Test read next and read prev + */ + { + TableIteratorOf iterator1(&table1); + TableIteratorOf iterator2(&table2); + + Verify( iterator1.GetSize() == TEST_CLASS ); + Verify( iterator2.GetSize() == TEST_CLASS ); + + i = 0; + while ((testPlug1 = iterator1.ReadAndNext()) != NULL) + { + testPlug2 = iterator2.ReadAndNext(); + + Check( testPlug1 ); + Check( testPlug2 ); + Verify( testPlug1 == testPlug2 ); + + Verify( testPlug1->value == i ); + Verify( testPlug2->value == i ); + + i++; + } + Verify( i == TEST_CLASS ); + + iterator1.Last(); + iterator2.Last(); + + i = TEST_CLASS - 1; + while ((testPlug1 = iterator1.ReadAndPrevious()) != NULL) + { + testPlug2 = iterator2.ReadAndPrevious(); + + Check( testPlug1 ); + Check( testPlug2 ); + Verify( testPlug1 == testPlug2 ); + + Verify( testPlug1->value == i ); + Verify( testPlug2->value == i ); + + i--; + } + Verify( i == -1 ); + } + + /* + * Test nth + */ + { + TableIteratorOf iterator1(&table1); + TableIteratorOf iterator2(&table2); + + Verify( iterator1.GetSize() == TEST_CLASS ); + Verify( iterator2.GetSize() == TEST_CLASS ); + + for (i = 0; i < TEST_CLASS; i++) + { + testPlug1 = iterator1.GetNth((int)i); + testPlug2 = iterator2.GetNth((int)i); + + Check( testPlug1 ); + Check( testPlug2 ); + Verify( testPlug1 == testPlug2 ); + + Verify( testPlug1->value == i ); + Verify( testPlug2->value == i ); + } + } + + /* + * Test Remove + */ + { + TableIteratorOf iterator1(&table1); + TableIteratorOf iterator2(&table2); + + Verify( iterator1.GetSize() == TEST_CLASS ); + Verify( iterator2.GetSize() == TEST_CLASS ); + + i = 0; + while ((testPlug1 = iterator1.GetCurrent()) != NULL) + { + Check( testPlug1 ); + Verify( testPlug1->value == i ); + + iterator1.Remove(); + + testPlug2 = iterator2.GetNth(0); + + Check( testPlug2 ); + Verify( testPlug2->value == i ); + Verify( testPlug1 == testPlug2 ); + + Unregister_Object( testPlug2 ); + delete(testPlug2); + + i++; + } + Verify( i == TEST_CLASS ); + Verify( iterator1.GetSize() == 0 ); + Verify( iterator2.GetSize() == 0 ); + } + + /* + * Test random deletion + */ + { + /* + * Add plugs to both sockets + */ + TableIteratorOf iterator1(table1); + TableIteratorOf iterator2(table2); + + Verify( iterator1.GetSize() == 0 ); + Verify( iterator2.GetSize() == 0 ); + + for (i = 0; i < TEST_CLASS; i++) + { + testPlug1 = new TableTestPlug(values[i]); + Register_Object( testPlug1 ); + table1.AddValue(testPlug1, values[i]); + table2.AddValue(testPlug1, values[i]); + } + } + + { + /* + * Perform random deletion + */ + int size, index; + TableIteratorOf iterator1(table1); + TableIteratorOf iterator2(table2); + + Verify( iterator1.GetSize() == TEST_CLASS ); + Verify( iterator2.GetSize() == TEST_CLASS ); + + i = 0; + while((size = iterator1.GetSize()) != 0) + { + index = RandInt(size) - 1; + testPlug1 = iterator1.GetNth(index); + Check( testPlug1 ); + iterator1.Remove(); + + testPlug2 = iterator2.GetNth(index); + Check( testPlug2 ); + Verify( testPlug1 == testPlug2 ); + + Unregister_Object( testPlug2 ); + delete(testPlug2); + + i++; + } + Verify( i == TEST_CLASS ); + Verify( iterator1.GetSize() == 0 ); + Verify( iterator2.GetSize() == 0 ); + } +} diff --git a/CODE/RP/MUNGA/TEAM.HPP b/CODE/RP/MUNGA/TEAM.HPP new file mode 100644 index 0000000..2e8c4fd --- /dev/null +++ b/CODE/RP/MUNGA/TEAM.HPP @@ -0,0 +1,197 @@ +//===========================================================================// +// File: team.hpp // +// Project: MUNGA // +// Contents: 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 (TEAM_HPP) +# define TEAM_HPP + +# if !defined (ENTITY_HPP) +# include "entity.hpp" +# endif + + //########################################################################## + //################# Team__MakeMessage ########################## + //########################################################################## + + class Team__MakeMessage : + public Entity::MakeMessage + { + public: + + char + teamName[64]; + + int + initialScore; + + + + Team__MakeMessage( + Receiver::MessageID message_ID, + size_t length, + Entity::ClassID class_ID, + const EntityID &owner_ID, + ResourceDescription::ResourceID resource_ID, + LWord instance_flags, + const Origin &origin, + char *team_name + ) : + Entity::MakeMessage( + message_ID, + length, + class_ID, + owner_ID, + resource_ID, + instance_flags, + origin + ) + { + Str_Copy(teamName, team_name, sizeof(teamName)); + } + + }; + //########################################################################## + //################# Team__ScoreMessage ########################## + //########################################################################## + + class Team__ScoreMessage : + public Entity::Message + { + public: + + Scalar + scoreAward; + + Team__ScoreMessage( + Receiver::MessageID message_ID, + size_t length, + Scalar score + ): + Entity::Message(message_ID, length), + scoreAward(score) + {} + }; + //########################################################################## + //######################## CLASS Team ################################ + //########################################################################## + class Team : + public Entity + { + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Shared Data support + // + public: + + static Derivation + ClassDerivations; + + static SharedData + DefaultData; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Message Support + // + + public: + + enum { + ScoreMessageID = Entity::NextMessageID, + NextMessageID + }; + + typedef Team__ScoreMessage ScoreMessage; + + void + ScoreMessageHandler(ScoreMessage *message); + + private: + + static const HandlerEntry MessageHandlerEntries[]; + + protected: + + static MessageHandlerSet MessageHandlers; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Attribute Support + // + private: + + static const IndexEntry + AttributePointers[]; + + protected: + + static AttributeIndexSet + AttributeIndex; + + public: + + enum { + TeamNameAttributeID = Entity::NextAttributeID, + TeamScoreAttributeID, + NextAttributeID + }; + + char + teamName[64]; + + Scalar + teamScore; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Model Support + // + public: + + typedef void + (Team::*Performance)(Scalar time_slice); + + void + SetPerformance(Performance performance) + { + Check(this); + activePerformance = (Simulation::Performance)performance; + } + + virtual void + TeamSimulation(Scalar time_slice); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Construction / Destruction Support + // + public: + + typedef Team__MakeMessage MakeMessage; + + Team( + MakeMessage *creation_message, + SharedData &shared_data = DefaultData + ); + + ~Team(); + + Logical + TestInstance() const; + + static Team* + Make(MakeMessage *creation_message); + + static Logical + CreateMakeMessage ( + MakeMessage *creation_message, + NotationFile *model_file, + const ResourceDirectories *directories + ); + }; +#endif diff --git a/CODE/RP/MUNGA/TERRAIN.HPP b/CODE/RP/MUNGA/TERRAIN.HPP new file mode 100644 index 0000000..bec9a53 --- /dev/null +++ b/CODE/RP/MUNGA/TERRAIN.HPP @@ -0,0 +1,182 @@ +//===========================================================================// +// File: mover.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(TERRAIN_HPP) +# define TERRAIN_HPP + +# if !defined(ENTITY_HPP) +# include +# endif + + class BoxedSolid; + + //########################################################################## + //##################### Terrain::MakeMessage ########################## + //########################################################################## + + class Terrain__MakeMessage: + public Entity::MakeMessage + { + public: + Scalar + localScale; + + Terrain__MakeMessage( + Receiver::MessageID message_ID, + size_t length, + const EntityID &entity_ID, + Entity::ClassID class_ID, + ResourceDescription::ResourceID resource_ID, + LWord instance_flags, + const Origin &origin, + Scalar scale + ): + Entity::MakeMessage( + message_ID, + length, + entity_ID, + class_ID, + EntityID::Null, + resource_ID, + instance_flags, + origin + ), + localScale(scale) + {} + }; + + //########################################################################## + //########################### Terrain ################################ + //########################################################################## + + class Terrain: + public Entity + { + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Shared Data support + // + public: + static Derivation ClassDerivations; + + static SharedData DefaultData; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Message Support + // + typedef Terrain__MakeMessage MakeMessage; + + #if 0 + private: + static const HandlerEntry MessageHandlerEntries[]; + + protected: + static MessageHandlerSet MessageHandlers; + #endif + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Attribute Support + // + public: + enum { + LocalScaleAttributeID = Entity::NextAttributeID, + NextAttributeID + }; + + private: + static const IndexEntry AttributePointers[]; + + protected: + static AttributeIndexSet AttributeIndex; + + // + // public attribute declarations go here + // + public: + Scalar localScale; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Construction and Destruction + // + public: + static Terrain* + Make(MakeMessage *creation_message); + // + // Warning... This function requires a properly set up strtok!!!! + // + static Logical + CreateMakeMessage( + MakeMessage *creation_message, + NotationFile *model_file, + const ResourceDirectories *directories + ); + + Terrain( + MakeMessage *creation_message, + SharedData &virtual_data = DefaultData + ); + ~Terrain(); + + Logical + TestInstance() const; + + protected: + BoxedSolid *collisionVolumes; + }; + + //########################################################################## + //###################### UnscalableTerrain ########################### + //########################################################################## + + class UnscalableTerrain: + public Entity + { + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Shared Data support + // + public: + static Derivation ClassDerivations; + + static SharedData DefaultData; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Construction and Destruction + // + public: + static UnscalableTerrain* + Make(MakeMessage *creation_message); + + // + // Warning... This function requires a properly set up strtok!!!! + // + static Logical + CreateMakeMessage( + MakeMessage *creation_message, + NotationFile *model_file, + const ResourceDirectories *directories + ); + + UnscalableTerrain( + MakeMessage *creation_message, + SharedData &virtual_data = DefaultData + ); + ~UnscalableTerrain(); + + Logical + TestInstance() const; + + protected: + BoxedSolid *collisionVolumes; + }; + +#endif diff --git a/CODE/RP/MUNGA/TESTALL.CPP b/CODE/RP/MUNGA/TESTALL.CPP new file mode 100644 index 0000000..e9dd3ad --- /dev/null +++ b/CODE/RP/MUNGA/TESTALL.CPP @@ -0,0 +1,244 @@ +//===========================================================================// +// File: testall.cc // +// Contents: Program to test all the classes // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 10/20/94 ECH Initial coding. // +// 11/01/94 JMA Made compatible with SGI CC // +// 11/03/94 ECH Made compatible with BC4.0 // +//---------------------------------------------------------------------------// +// Copyright (C) 1994, Virtual World Entertainment, Inc. All Rights reserved // +// PROPRIETARY AND CONFIDENTIAL // +//===========================================================================// + +// +//------------------------------------------------- +// Utilities +//------------------------------------------------- +// +#include +#pragma hdrstop + +#if !defined(NAMELIST_HPP) +# include +#endif + +#if !defined(NOTATION_HPP) +# include +#endif + +// +//------------------------------------------------- +// Math +//------------------------------------------------- +// +#if !defined(RECT2D_HPP) +# include +#endif + +#if !defined(ANGLE_HPP) +# include +#endif + +#if !defined(RANDOM_HPP) +# include +#endif + +#if !defined(VECTOR4D_HPP) +# include +#endif + +#if !defined(ROTATION_HPP) +# include +#endif + +#if !defined(ORIGIN_HPP) +# include +#endif + +#if !defined(LINMTRX_HPP) +# include +#endif + +#if !defined(MATRIX_HPP) +# include +#endif + +#if !defined(UNITVEC_HPP) +# include +#endif + +#if !defined(RAY_HPP) +# include +#endif + +#if !defined(NORMAL_HPP) +# include +#endif + +// +//---------------- +// Spatial library +//---------------- +// +#if !defined(BOXSOLID_HPP) +# include +#endif + +// +//------------------ +// Connection Engine +//------------------ +// +#if !defined(VCHAIN_HPP) +# include +#endif + +#if !defined(TREE_HPP) +# include +#endif + +#if !defined(TABLE_HPP) +# include +#endif + +#if !defined(HASH_HPP) +# include +#endif + +#if !defined(TIME_HPP) +# include +#endif + +#if !defined(RECEIVER_HPP) +# include +#endif + +// #define RUN_APPLICATION + +char GlobalEggFileName[80]; + +int main() +{ + #if defined(TEST_CLASS) + // + //----------------------- + // Test NameList classes + //----------------------- + // + #if 1 + #if 1 + ObjectNameList::TestClass(); + NameList::TestClass(); + AlphaNameList::TestClass(); + NotationFile::TestClass(); + #endif + + #if 1 + ResourceFile::TestClass(); + StreamableResourceFile::TestClass(); + #endif + + // + //------------------ + // Test string class + //------------------ + // + #if 1 + CString::TestClass(); + #endif + + // + //---------------- + // Test Math brick + //---------------- + // + #if 1 + RandomGenerator::TestClass(); + Radian::TestClass(); + Degree::TestClass(); + SinCosPair::TestClass(); + Vector3D::TestClass(); + LBE3Vector3D::TestClass(); + TIVector3D::TestClass(); + Vector4D::TestClass(); + Point3D::TestClass(); + UnitVector::TestClass(); + Ray::TestClass(); + EulerAngles::TestClass(); + Quaternion::TestClass(); + Origin::TestClass(); + AffineMatrix::TestClass(); + LinearMatrix::TestClass(); + Matrix4x4::TestClass(); + Normal::TestClass(); + Rectangle2D::TestClass(); + #endif + + // + //----------------- + // Test spatializer + //----------------- + // + #if 1 + BoundingBox::TestClass(); + BoxedSolid::TestClass(); + #endif + + // + //------------------ + // Test time manager + //------------------ + // + #if 1 + Time::TestClass(); + #endif + + // + //------------------------ + // Test connection library + //------------------------ + // + #if 1 + Chain::TestClass(); + SChain::TestClass(); + VChain::TestClass(); + Tree::TestClass(); + Table::TestClass(); + Hash::TestClass(); + #endif + + // + //------------------ + // Test Memory brick + //------------------ + // + #if 1 + MemoryBlock::TestClass(); + MemoryStack::TestClass(); + #endif + + // + //---------------------------- + // Test dynamic dispatch brick + //---------------------------- + // + #if 1 + MessageTap::TestClass(); + Receiver::MessageHandlerSet::TestClass(); + Derivation::TestClass(); + Receiver::TestClass(); + #endif + #endif + + // + //-------------------------------------------- + // Stop registering, and tell us about its use + //-------------------------------------------- + // + Tell("Exiting\n"); + #endif + + return 0; +} diff --git a/CODE/RP/MUNGA/TESTCLAS.HPP b/CODE/RP/MUNGA/TESTCLAS.HPP new file mode 100644 index 0000000..a6cc689 --- /dev/null +++ b/CODE/RP/MUNGA/TESTCLAS.HPP @@ -0,0 +1,137 @@ +//===========================================================================// +// File: testclas.hh // +// Project: MUNGA Brick: Dynamic Dispatch, Event and Journalling // +// Contents: defines test classes for use by Dispatch and Events // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 11/03/94 JMA Initial coding. // +// 11/05/94 JMA Made compatible with GNU C++ // +//---------------------------------------------------------------------------// +// Copyright (C) 1994, Virtual World Entertainment, Inc. All Rights reserved // +// PROPRIETARY AND CONFIDENTIAL // +//===========================================================================// + +#if !defined(TESTCLAS_HPP) +# define TESTCLAS_HPP) + +# if !defined(RECEIVER_HPP) +# include "receiver.hpp" +# endif + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Alpha ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +class Alpha: + public Receiver +{ +protected: + static SharedData + DefaultData; + +public: + int + x; + + enum { + message0ID = Receiver::NextMessageID, + message1ID, + NextMessageID + }; + + static Derivation + ClassDerivations; + + Alpha( + ClassID class_ID = TrivialReceiverClassID, + SharedData &vdata = DefaultData); + ~Alpha(); + + void + Method0Handler(Message*); + void + Method1Handler(Message*); + + inline void Method0() + {Message m(message0ID,sizeof(Message)); Dispatch(&m);} + inline void Method1() + {Message m(message1ID,sizeof(Message)); Dispatch(&m);} + + static MessageHandlerSet + handlerSet; +}; + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Beta ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +class Beta: + public Alpha +{ +protected: + static SharedData + DefaultData; + +public: + enum { + message2ID=Alpha::NextMessageID, + message3ID, + NextMessageID + }; + + static Derivation + ClassDerivations; + + Beta( + ClassID class_id = TrivialReceiverClassID, + SharedData &vdata = DefaultData + ); + ~Beta(); + + void + Method1aHandler(Message*); + void + Method2Handler(Message*); + void + Method3Handler(Message*); + + inline void Method1() + {Message m(message1ID,sizeof(Message)); Dispatch(&m);} + inline void Method2() + {Message m(message2ID,sizeof(Message)); Dispatch(&m);} + inline void Method3() + {Message m(message3ID,sizeof(Message)); Dispatch(&m);} + + static MessageHandlerSet + handlerSet; +}; + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Gamma ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +class Gamma: + public Beta +{ +public: + enum { + message4ID=Beta::NextMessageID, + NextMessageID + }; + + static Derivation + ClassDerivations; + + Gamma(); + ~Gamma(); + + void + Method4Handler(Message*); + + inline void Method4() + {Message m(message4ID,sizeof(Message)); Dispatch(&m);} + + static MessageHandlerSet + handlerSet; + +protected: + static SharedData + DefaultData; +}; + +#endif diff --git a/CODE/RP/MUNGA/TIME.CPP b/CODE/RP/MUNGA/TIME.CPP new file mode 100644 index 0000000..7fbddd5 --- /dev/null +++ b/CODE/RP/MUNGA/TIME.CPP @@ -0,0 +1,137 @@ +//===========================================================================// +// File: time.cc // +// Project: MUNGA Brick: Time Manager // +// Contents: Implementation details of the Time Manager // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 10/19/94 JMA Initial coding. // +// 10/24/94 JMA Added Lester's IBM RTC code in as SystemClock class // +// 10/28/94 JMA Made compatible with SGI CC // +// 11/03/94 ECH Made compatible with BC4.0 // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// PROPRIETARY AND CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(TIME_HPP) + #include +#endif + +//############################################################################# +//########################### System Clock ############################## +//############################################################################# + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + SystemClock::TogglePause() +{ + // + //-------------------------------------------------------------------- + // If the clock is currently paused, figure out how long it was paused + // and add that to the pause delay + //-------------------------------------------------------------------- + // + if (timer.pauseStart) + { + timer.pauseTime += GetRTC() - timer.pauseStart; + timer.pauseStart = 0L; + } + + // + //-------------------------------------------------------- + // Otherwise, start pausing by marking what time it is now + //-------------------------------------------------------- + // + else + { + timer.pauseStart = GetRTC(); + } +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +volatile Time& + Now() +{ + static Time + result; + + // + //------------------------------------------------- + // If we are in pause mode, return the paused clock + //------------------------------------------------- + // + if (SystemClock::timer.pauseStart) + { + result = SystemClock::timer.pauseStart; + } + + // + //---------------------------------------------------------------- + // Otherwise, return the timer minus the amount of pause time lost + //---------------------------------------------------------------- + // + else + { + result = SystemClock::GetRTC() - SystemClock::timer.pauseTime; + } + + return result; +} + +//############################################################################# +//############################### Time ################################## +//############################################################################# + +Time + Time::Null(SystemClock::timer); + +#if defined(USE_SIGNATURE) + int + Is_Signature_Bad(const volatile Time *) + { + return False; + } +#endif + +// +//############################################################################# +//############################################################################# +// +Logical + Time::TestInstance() const volatile +{ + return True; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Time functions ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +// +//############################################################################# +//############################################################################# +// +void + Convert_From_Ascii( + const char *str, + Time *time + ) +{ + Check_Pointer(str); + Check_Signature(time); + + Scalar seconds; + + seconds = atof(str); + *time = seconds; + Check(time); +} + +#if defined(TEST_CLASS) +# include "time.tcp" +#endif + diff --git a/CODE/RP/MUNGA/TIME.HPP b/CODE/RP/MUNGA/TIME.HPP new file mode 100644 index 0000000..2c25081 --- /dev/null +++ b/CODE/RP/MUNGA/TIME.HPP @@ -0,0 +1,164 @@ +//===========================================================================// +// File: time.hh // +// Project: MUNGA Brick: Time Manager // +// Contents: Interface declarations for Time Manager // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 10/19/94 JMA Initial coding. // +// 10/24/94 JMA Reduced operator set to minimum // +// 10/28/94 JMA Made compatible with SGI CC // +// 11/03/94 ECH Made compatible with BC4.0 // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// PROPRIETARY AND CONFIDENTIAL // +//===========================================================================// + +#if !defined(TIME_HPP) +# define TIME_HPP + +# if !defined(SCALAR_HPP) +# include +# endif + + class Time; + + //########################################################################## + //######################## System Clock ############################## + //########################################################################## + + class SystemClock SIGNATURED + { + friend class Time; + + public: + friend float + Get_Frame_Percent_Used(); + friend volatile Time& + Now(); + static void + TogglePause(); + + SystemClock(); + ~SystemClock() + {Shutdown();} + static SystemClock + timer; + void + Shutdown(); + friend Scalar + GetTicksPerSecond() + {return ticksPerSecond;} + + protected: + long + pauseStart; + long + pauseTime; + static Scalar + ticksPerSecond; + + static long + GetRTC(); + }; + + //########################################################################## + //############################ Time ################################## + //########################################################################## + + class Time + { + public: + long ticks; + static Time Null; + + #if defined(USE_SIGNATURE) + friend int + Is_Signature_Bad(const volatile Time *p); + #endif + + Time() + {} + Time(const volatile Time &t): + ticks(t.ticks) + {} + Time(SystemClock&): + ticks(0) + {} + + Time& + operator=(const volatile Time &t) + {Check_Pointer(this); Check(&t); ticks = t.ticks; return *this;} + Time& + operator=(long t) + {Check_Pointer(this); ticks = t; return *this;} + Time& + operator=(Scalar t) + {Check_Pointer(this); ticks = Float_To_Time(t); return *this;} + + operator Scalar() const volatile + {Check(this); return Time_To_Float(ticks);} + operator long() const volatile + {Check(this); return ticks;} + + Scalar + operator-(const volatile Time &t) const volatile + {Check(this); Check(&t); return Time_To_Float(ticks - t.ticks);} + + Time& + operator+=(const volatile Time &t) + {Check(this); Check(&t); ticks += t.ticks; return *this;} + Time& + operator+=(Scalar t) + {Check(this); ticks += Float_To_Time(t); return *this;} + Time& + operator-=(const volatile Time &t) + {Check(this); Check(&t); ticks -= t.ticks; return *this;} + Time& + operator-=(Scalar t) + {Check(this); ticks -= Float_To_Time(t); return *this;} + + Logical + operator<(const volatile Time &t) const volatile + {Check(this); Check(&t); return ticks < t.ticks;} + Logical + operator<=(const volatile Time &t) const volatile + {Check(this); Check(&t); return ticks <= t.ticks;} + Logical + operator>(const volatile Time &t) const volatile + {Check(this); Check(&t); return ticks > t.ticks;} + Logical + operator>=(const volatile Time &t) const volatile + {Check(this); Check(&t); return ticks >= t.ticks;} + + friend ostream& + operator <<( + ostream& stream, + const volatile Time& t + ) + {Check(&t); return stream << t.ticks;} + + Logical + TestInstance() const volatile; + static Logical + TestClass(); + + private: + static long + Float_To_Time(Scalar t) + {return (long)(t * SystemClock::ticksPerSecond + 0.5f);} + + static Scalar + Time_To_Float(long t) + {return (Scalar)t / SystemClock::ticksPerSecond;} + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Time functions ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + void + Convert_From_Ascii( + const char *str, + Time *time + ); + +#endif diff --git a/CODE/RP/MUNGA/TIME.TCP b/CODE/RP/MUNGA/TIME.TCP new file mode 100644 index 0000000..6fcba5b --- /dev/null +++ b/CODE/RP/MUNGA/TIME.TCP @@ -0,0 +1,100 @@ +//===========================================================================// +// File: time.tst // +// Project: MUNGA Brick: Time Manager // +// Contents: Test stuff for time // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 10/24/94 JMA Initial coding. // +// 10/28/94 JMA Made compatible with SGI CC // +// 11/03/94 ECH Made compatible with BC4.0 // +//---------------------------------------------------------------------------// +// Copyright (C) 1994, Virtual World Entertainment, Inc. All Rights reserved // +// PROPRIETARY AND CONFIDENTIAL // +//===========================================================================// + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Time ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +// +//############################################################################# +//############################################################################# +// +Logical + Time::TestClass() +{ + DEBUG_STREAM << "Starting Time test...\n"; + + Time + a, + b, + c; + Scalar f; + long + t; + + // + //---------------- + // Test assignment + //---------------- + // + a = 1.0f; + b = 2.0f; + c = Null; + + c = a; + Test(a <= c); + Test(a >= c); + + c = 1.0f; + Test(c <= a); + Test(c >= a); + + c = b.ticks; + Test(c <= b); + Test(c >= b); + + // + //---------------------- + // Test time comparators + //---------------------- + // + Test(a < b); + Test(a <= b); + Test(b > a); + Test(b >= a); + + // + //------------- + // Test casting + //------------- + // + f = c; + Test(Close_Enough(f,2.0f)); + t = a; + Test(t == a.ticks); + + // + //-------------------- + // Test math functions + //-------------------- + // + c = a; + c += 1.0f; + Test(c.ticks == b.ticks); + c -= a; + Test(c.ticks == a.ticks); + + c = b; + c -= 1.0f; + Test(c.ticks == a.ticks); + c += a; + Test(c.ticks == b.ticks); + + // + // This test checks to see if the Scalar value is within the resolution + // of half a tick + // + f = b - a; + Test(Close_Enough(f, 1.0f, 0.5f * (1.0f / SystemClock::ticksPerSecond))); + return True; +} diff --git a/CODE/RP/MUNGA/TIMESTUB.CPP b/CODE/RP/MUNGA/TIMESTUB.CPP new file mode 100644 index 0000000..056db60 --- /dev/null +++ b/CODE/RP/MUNGA/TIMESTUB.CPP @@ -0,0 +1,56 @@ +//===========================================================================// +// File: time.cc // +// Project: MUNGA Brick: Time Manager // +// Contents: Implementation details of the Time Manager // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 10/19/94 JMA Initial coding. // +// 10/24/94 JMA Added Lester's IBM RTC code in as SystemClock class // +// 10/28/94 JMA Made compatible with SGI CC // +// 11/03/94 ECH Made compatible with BC4.0 // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// PROPRIETARY AND CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(TIME_HPP) + #include +#endif + +//############################################################################# +//########################### System Clock ############################## +//############################################################################# + +SystemClock + SystemClock::timer; +Scalar + SystemClock::ticksPerSecond = 1000.0f; + +long + SystemClock::GetRTC() +{ + static long time=0L; + return time++; +} + +SystemClock::SystemClock() +{ + pauseStart = 0L; + pauseTime = 0L; +} + +void + SystemClock::Shutdown() +{ +} + +float + Get_Frame_Percent_Used() +{ + return 0.5f; +} + diff --git a/CODE/RP/MUNGA/TOOL.CPP b/CODE/RP/MUNGA/TOOL.CPP new file mode 100644 index 0000000..435020f --- /dev/null +++ b/CODE/RP/MUNGA/TOOL.CPP @@ -0,0 +1,891 @@ +//===========================================================================// +// 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 +#pragma hdrstop + +#if !defined(TOOL_HPP) +# include +#endif + +#if !defined(FILEUTIL_HPP) +# include +#endif + +#if !defined(AUDTOOLS_HPP) +# include +#endif + +#if !defined(REGISTRY_HPP) +# include +#endif + +#if !defined(BOXSOLID_HPP) +# include +#endif + +#if !defined(NAMELIST_HPP) +# include +#endif + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +int + GetId(char *string) +{ + int id; + + char *number = strstr( string, "/id:"); + if (number != NULL) + { + number += 4; + id = atoi(number); + return id; + } + else + { + return -1; + } +} + +Logical + PlatformTool::ConvertStringToModeMask( + const char */*string*/, + ModeMask */*returned_value_ptr*/ + ) +{ + Fail("PlatformTool::ConvertStringToModeMask method not overridden!"); + return False; +} + +Logical + PlatformTool::ConvertStringToTechStatus( + const char */*string*/, + int */*returned_value_ptr*/ + ) +{ + Fail("PlatformTool::ConvertStringToTechStatus method not overridden!"); + return False; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +int + ApplicationTool::BuildResources( + int argc, + char **argv, + AudioCreateSymbols &create_symbols, + Byte minor_version + ) +{ + char temp_name[200]; + const char *Res_Name; + char *resfilename; + char ops_filename[150]; + char dirgauge[150]; + char dircollision[150]; + char dirmodel[150]; + char dirmap[150]; + char diraudio[150]; + char dirvideo[150]; + char diranim[150]; + + char short_name[100]; + char long_name[200]; + char id_name[100]; + + const char *tempdir; + + ResourceDirectories + resource_directories; + + NotationFile *ops_file = new NotationFile(); + Register_Object(ops_file); + + StreamableResourceFile file; + + if (argc < 2) + { + DEBUG_STREAM << "Usage: buildXX resource.bld [res2.bld ...]\n"; + return 1; + } + + verboseMode = False; + labOnly = False; + + // + // Write audio symbols, add static audio resources + // + create_symbols.Execute(); + platformTool->CreateStaticAudioStreamResource(&file); + + // + //------------------------------------ + // Arguments are only build files, + // so step thru them + //------------------------------------ + // + for(int arg_number = 1; arg_number < argc; ++arg_number) + { + + strcpy(temp_name,argv[arg_number]); + NotationFile *notation_file; + + WorkingDirectory = MakeWorkingDirectory(temp_name); + Register_Pointer(WorkingDirectory); + + char *filename = MakePathedFilename(WorkingDirectory, temp_name); + Register_Pointer(filename); + + notation_file = new NotationFile(filename); + Register_Object(notation_file); + + labOnly |= notation_file->IsMarkedLabOnly(); + + if (!notation_file->PageCount()) + { + DEBUG_STREAM << filename << " does not exist! " << endl; + Unregister_Object(notation_file); + delete notation_file; + Stop_Registering(); + Exit(AbortExitCodeID); + } + + if (!notation_file->PageExists("resource")) + { + DEBUG_STREAM << filename << " Not a valid resource list" << endl; + Unregister_Object(notation_file); + delete notation_file; + Stop_Registering(); + Exit(AbortExitCodeID); + } + + Unregister_Pointer(filename); + delete filename; + + // + //----------------------------------------------- + // If this is the first file check + // for required info, if not skip this + // section so required info isn't overwritten + //----------------------------------------------- + // + + if(arg_number == 1) + { + + + // + // Check verboseMode + // + + const char *verb_string; + + if(notation_file->GetEntry("resource","verbose",&verb_string)) + { + if(!stricmp(verb_string, "true")) + { + verboseMode = True; + } + } + + //--------------------------------- + // Set up directories + //-------------------------------- + + if(!notation_file->GetEntry("resource","dirmap",&tempdir)) + { + DEBUG_STREAM << "No map directory specified!!!" << endl; + Exit(AbortExitCodeID); + } + + strcpy(dirmap, tempdir); + + if(!notation_file->GetEntry("resource","dirmodel", &tempdir)) + { + DEBUG_STREAM << "No model directory specified!!!" << endl; + Exit(AbortExitCodeID); + } + + strcpy(dirmodel, tempdir); + + if(!notation_file->GetEntry("resource","dircollision", &tempdir)) + { + DEBUG_STREAM << "No collision directory specified!!!" << endl; + Exit(AbortExitCodeID); + } + + strcpy(dircollision, tempdir); + + + const char + *vp, + *version_string; + Byte version[2] = {0,0}; + + notation_file->GetEntry("resource","diraudio", &tempdir); + if (tempdir) + { + strcpy(diraudio, tempdir); + } + else + { + DEBUG_STREAM << "No directory specified for 'diraudio'!\n"; + Exit(AbortExitCodeID); + } + + notation_file->GetEntry("resource","dirvideo", &tempdir); + if (tempdir) + { + strcpy(dirvideo, tempdir); + } + else + { + DEBUG_STREAM << "No directory specified for 'dirvideo'!\n"; + Exit(AbortExitCodeID); + } + + notation_file->GetEntry("resource","diranimation", &tempdir); + if (tempdir) + { + strcpy(diranim, tempdir); + } + else + { + DEBUG_STREAM << "No directory specified for 'diranimation'!\n"; + Exit(AbortExitCodeID); + } + + notation_file->GetEntry("resource","dirgauge", &tempdir); + if (tempdir) + { + strcpy(dirgauge, tempdir); + } + else + { + DEBUG_STREAM << "No directory specified for 'gauge'!\n"; + Exit(AbortExitCodeID); + } + resource_directories.collisionDirectory = dircollision; + resource_directories.modelDirectory = dirmodel; + resource_directories.mapDirectory = dirmap; + resource_directories.audioDirectory = diraudio; + resource_directories.videoDirectory = dirvideo; + resource_directories.animationDirectory = diranim; + resource_directories.gaugeDirectory = dirgauge; + + //------------------------- + // Get version info + //------------------------- + + + if (!notation_file->GetEntry("release","version", &version_string)) + { + DEBUG_STREAM << "No version number in build!!!!" << endl; + Exit(AbortExitCodeID); + } + + version[0] = (Byte)atoi(version_string); + + vp = strchr(version_string, '.'); + + if (vp) + { + vp++; + version[1] = (Byte)atoi(vp); + } + + //------------------------- + // Get Resource Name + //------------------------- + + if(!notation_file->GetEntry("resource","name",&Res_Name)) + { + DEBUG_STREAM << "No resource file specified!!!" << endl; + Exit(AbortExitCodeID); + } + + resfilename = MakePathedFilename(WorkingDirectory, Res_Name); + Register_Pointer(resfilename); + + strcpy(ops_filename, Res_Name); + char *p = ops_filename; + + p += strlen(ops_filename); + p -= 4; + *p = '\0'; + + + + //================================ + // Set ops_file "res name" + // write maps and write models + // can use this for ops file + // format. + //================================ + + ops_file->SetEntry("resource", "res name", ops_filename); + ops_file->AppendEntry("resource", NULL, (char *)NULL); + + strcat(ops_filename, ".ops"); + + file.versionArray[1] = version[0]; + file.versionArray[2] = version[1]; + file.versionArray[3] = minor_version; + } + + // + //--------------------------- + // Now step thru each entry + // in every build file + //--------------------------- + // + + NameList *entry_list = + notation_file->MakeEntryList("resource"); + Register_Object(entry_list); + NameList::Entry *entry = entry_list->GetFirstEntry(); + + const char *entry_data; + + int pre_allocated = 0; + + while (entry != NULL) + { + + entry_data = entry->GetName(); + if (entry_data == NULL) + { + entry = entry->GetNextEntry(); + continue; + } + + entry_data = entry->GetChar(); + if (entry_data == NULL) + { + entry = entry->GetNextEntry(); + continue; + } + + strcpy(id_name, entry_data); + int id = GetId(id_name); + if ( id != -1) + { + if(arg_number > 1) + { + + Fail("Manual ResourceID's not allowed in second build files!"); + + } + + if (id > pre_allocated) + { + pre_allocated = id; + } + } + + entry = entry->GetNextEntry(); + } + + // + // pre_allocated number.... + // + file.PreAllocateIDs(pre_allocated); + + + + entry = entry_list->GetFirstEntry(); + while (entry != NULL) + { + + entry_data = entry->GetName(); + + if (entry_data == NULL) + { + entry = entry->GetNextEntry(); + continue; + } + + if (!stricmp(entry_data, "LAB_ONLY")) + { + labOnly = True; + entry = entry->GetNextEntry(); + continue; + } + else if (!stricmp(entry_data, "map")) + { + + const char *q = entry->GetChar(); + strcpy(long_name, q); + + + int id = GetId(long_name); + if (id != -1) + { + + // + // Strip id number off + // + + char *p = strchr(long_name, '\t'); + if (p) + { + *p = '\0'; + } + else + { + char *p = strchr(long_name, ' '); + *p = '\0'; + } + } + + + // + // open mapname + // + + char *filename = MakePathedFilename(resource_directories.mapDirectory, long_name); + Register_Pointer(filename); + + DEBUG_STREAM << "Opening Map " << filename << endl; + + NotationFile *new_notation_file = new NotationFile(filename); + Register_Object(new_notation_file); + + labOnly |= new_notation_file->IsMarkedLabOnly(); + + StripDirectory(long_name); + strcpy(short_name, long_name); + + + if (new_notation_file->PageCount()) + { + if ( + !WriteMaps( + short_name, + new_notation_file, + ops_file, + &file, + &resource_directories, + id + ) + ) + { + DEBUG_STREAM << filename << " Did not work!!!! " << endl; + + } + } + else + { + DEBUG_STREAM << filename << " Does not exist! " << endl; + } + + + Unregister_Pointer(filename); + delete filename; + Unregister_Object(new_notation_file); + delete new_notation_file; + } + else if (!stricmp(entry_data, "model")) + { + + strcpy(long_name, entry->GetChar()); + + int id = GetId(long_name); + if (id != -1) + { + + // + // Strip id number off + // + + char *p = strchr(long_name, '\t'); + if (p) + { + *p = '\0'; + } + else + { + char *p = strchr(long_name, ' '); + *p = '\0'; + } + + } + + + // + // open modelname + // + + char *filename = MakePathedFilename(resource_directories.modelDirectory, long_name); + Register_Pointer(filename); + DEBUG_STREAM << "Opening Model " << filename << endl; + NotationFile *new_notation_file = new NotationFile(filename); + Register_Object(new_notation_file); + + labOnly |= new_notation_file->IsMarkedLabOnly(); + + const char *p = StripExtension(StripDirectory(long_name)); + + strcpy(short_name, p); + + + if (new_notation_file->PageCount()) + { + if ( + !WriteModels( + new_notation_file, + ops_file, + &file, + short_name, + &resource_directories, + id + ) + ) + { + + DEBUG_STREAM << "Error - Model did not work : " << filename << endl; + + } + } + else + { + DEBUG_STREAM << filename << " does not exist " << endl; + + } + + + Unregister_Pointer(filename); + delete filename; + + Unregister_Object(new_notation_file); + delete new_notation_file; + + } + else if (!stricmp(entry_data, "zone")) + { + char *q = entry->GetChar(); + strcpy(long_name, q); + + // + // open zone + // + + char *filename = MakePathedFilename(resource_directories.mapDirectory, long_name); + Register_Pointer(filename); + + DEBUG_STREAM << "Opening Zones " << filename << endl; + + NotationFile *new_notation_file = new NotationFile(filename); + Register_Object(new_notation_file); + + labOnly |= new_notation_file->IsMarkedLabOnly(); + + if (new_notation_file->PageCount()) + { + + InterestLatticeManager::CreateZoneResources + ( + &file, + new_notation_file + ); + } + else + { + DEBUG_STREAM << filename << " Does not exist! " << endl; + } + + + Unregister_Pointer(filename); + delete filename; + Unregister_Object(new_notation_file); + delete new_notation_file; + + } + else if (!stricmp(entry_data, "static")) + { + // + // Add registry static objects + // + Check(entry); + const char *static_object_file_name = entry->GetChar(); + Check_Pointer(static_object_file_name); + + char *full_path_file_name = + MakePathedFilename( + resource_directories.modelDirectory, + static_object_file_name + ); + Register_Pointer(full_path_file_name); + + NotationFile + static_object_notation_file(full_path_file_name); + + Registry::CreateStaticObjectStreamResource( + &static_object_notation_file, + &file + ); + + Unregister_Pointer(full_path_file_name); + delete full_path_file_name; + } + + entry = entry->GetNextEntry(); + } + + Unregister_Object(entry_list); + delete entry_list; + + // + //------------------------------------------------------- + // Make this resource Lab only if labOnly was specified + //------------------------------------------------------- + // + + if (labOnly == True) + { + file.labOnly = 1; + } + + + Unregister_Pointer(WorkingDirectory); + Unregister_Object(notation_file); + + delete WorkingDirectory; + delete notation_file; + + } + + WriteOpsFile(ops_file, &file, &resource_directories); + + file.SaveAs(resfilename); + ops_file->WriteFile(ops_filename); + + + Unregister_Pointer(resfilename); + delete resfilename; + + //------------------------ + // open the vehicle.tbl + // and write to ops and + //------------------------ + + + Unregister_Object(ops_file); + delete ops_file; + + return 0; +} + +//############################################################################# + +void + ApplicationTool::ListResource( + ResourceDescription *resource + ) +{ + Check(resource); + switch (resource->resourceType) + { + case ResourceDescription::ModelListResourceType: + DEBUG_STREAM << resource->resourceName << ": Model List of " + << *(int*)resource->resourceAddress << " elements"; + break; + + case ResourceDescription::MapListResourceType: + DEBUG_STREAM << resource->resourceName << ": Map List of " + << *(int*)resource->resourceAddress << " elements"; + break; + + case ResourceDescription::AudioStreamListResourceType: + DEBUG_STREAM << resource->resourceName << ": Audio stream List of " + << *(int*)resource->resourceAddress << " elements"; + break; + + case ResourceDescription::VideoListResourceType: + DEBUG_STREAM << resource->resourceName << ": Video List of " + << *(int*)resource->resourceAddress << " elements"; + break; + + case ResourceDescription::SubsystemListResourceType: + DEBUG_STREAM << resource->resourceName << ": Subsystem List of " + << *(int*)resource->resourceAddress << " elements"; + break; + + case ResourceDescription::ControlMappingsListResourceType: + DEBUG_STREAM << resource->resourceName << ": ControlsMappings List of " + << *(int*)resource->resourceAddress << " elements"; + break; + + case ResourceDescription::DamageZoneListResourceType: + DEBUG_STREAM << resource->resourceName << ": DamageZone List of " + << *(int*)resource->resourceAddress << " elements"; + break; + + case ResourceDescription::SkeletonListResourceType: + DEBUG_STREAM << resource->resourceName << ": Skeleton List of " + << *(int*)resource->resourceAddress << " elements"; + break; + + case ResourceDescription::BoxedSolidStreamResourceType: + DEBUG_STREAM << resource->resourceName << ": Boxed Solid Stream of " + << resource->resourceSize/sizeof(BoxedSolidResource) + << " solids"; + break; + + case ResourceDescription::VideoModelResourceType: + DEBUG_STREAM << resource->resourceName << ": VideoModel"; + break; + + case ResourceDescription::StaticAudioStreamResourceType: + DEBUG_STREAM << resource->resourceName << ": StaticAudioStream"; + break; + + case ResourceDescription::InternalAudioStreamResourceType: + DEBUG_STREAM << resource->resourceName << ": InternalAudioStream"; + break; + + case ResourceDescription::ExternalAudioStreamResourceType: + DEBUG_STREAM << resource->resourceName << ": ExternalAudioStream"; + break; + + case ResourceDescription::MakeMessageStreamResourceType: + DEBUG_STREAM << resource->resourceName << ": Map stream of " + << *(int*)resource->resourceAddress << " instances"; + break; + + case ResourceDescription::GameModelResourceType: + DEBUG_STREAM << resource->resourceName << ": GameModel"; + break; + + case ResourceDescription::AnimationResourceType: + DEBUG_STREAM << resource->resourceName << ": Animation"; + break; + + case ResourceDescription::SubsystemModelStreamResourceType: + DEBUG_STREAM << resource->resourceName << ": Stream of " + << *(int*)resource->resourceAddress << " Subsystems"; + break; + + case ResourceDescription::GaugeImageStreamResourceType: + DEBUG_STREAM << resource->resourceName << ": GaugeImage"; + break; + + case ResourceDescription::ControlMappingStreamResourceType: + DEBUG_STREAM << resource->resourceName << ": Stream of " + << *(int*)resource->resourceAddress << " ControlsMappings"; + break; + + case ResourceDescription::DamageZoneStreamResourceType: + DEBUG_STREAM << resource->resourceName << ": Stream of " + << *(int*)resource->resourceAddress << " DamageZones"; + break; + + case ResourceDescription::SkeletonStreamResourceType: + DEBUG_STREAM << resource->resourceName << ": Stream of " + << *(int*)resource->resourceAddress << " Segments"; + break; + + case ResourceDescription::EnvironmentZoneResourceType: + DEBUG_STREAM << resource->resourceName << ": EnvironmentZone"; + break; + + case ResourceDescription::InterestZoneResourceType: + DEBUG_STREAM << resource->resourceName << ": InterestZone"; + break; + + case ResourceDescription::VehicleTableResourceType: + DEBUG_STREAM << resource->resourceName << ": VehicleTable"; + break; + + case ResourceDescription::ExistanceBoxStreamResourceType: + DEBUG_STREAM << resource->resourceName << ": Stream of " + << resource->resourceSize/sizeof(ExtentBox) + << " Existance boxes"; + break; + + case ResourceDescription::CameraStreamResourceType: + DEBUG_STREAM << resource->resourceName << ": Stream of " + << *(int*)resource->resourceAddress << " Cameras"; + break; + + case ResourceDescription::DamageLookupTableStreamResourceType: + DEBUG_STREAM << resource->resourceName << ": DamageZoneLookupTable"; + break; + + case ResourceDescription::ExplosionTableStreamResourceType: + DEBUG_STREAM << resource->resourceName << ": ExplosionTable"; + break; + + default: + DEBUG_STREAM << "Unknown type " << resource->resourceType; + break; + } +} + +//############################################################################# + +int + ApplicationTool::ListResources( + int argc, + char **argv + ) +{ + if (argc < 2) + { + DEBUG_STREAM << "Usage: listXX resource.res [res2.res ...]\n"; + return 1; + } + + for (int i=1; i < argc; ++i) + { + char res_name[200]; + strcpy(res_name, argv[i]); + + StreamableResourceFile + file; + + file.Open(res_name); + + DEBUG_STREAM << res_name << ": v" << (int)file.versionArray[0] << '.' + << (int)file.versionArray[1] << '.' << (int)file.versionArray[2] << '.' + << (int)file.versionArray[3] << endl; + + if (file.labOnly == 1) + { + DEBUG_STREAM << "LAB ONLY RESOURCE!" << endl; + } + + DEBUG_STREAM << endl; + DEBUG_STREAM << "ID# Size Data\n"; + DEBUG_STREAM << "---- ------ -----------------------------------------------------\n"; + + for (int j=0; j<=file.GetMaxResourceID(); ++j) + { + DEBUG_STREAM << setw(4) << j << " "; + ResourceDescription *resource = file.FindResourceDescription(j); + if (resource) + { + DEBUG_STREAM << setw(6) << resource->resourceSize << " "; + resource->Lock(); + ListResource(resource); + resource->Unlock(); + } + else + { + DEBUG_STREAM << " Not Used"; + } + DEBUG_STREAM << endl; + } + } + return 0; +} + diff --git a/CODE/RP/MUNGA/TOOL.HPP b/CODE/RP/MUNGA/TOOL.HPP new file mode 100644 index 0000000..4f65d60 --- /dev/null +++ b/CODE/RP/MUNGA/TOOL.HPP @@ -0,0 +1,257 @@ +//===========================================================================// +// 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(TOOL_HPP) +# define TOOL_HPP + +# if !defined(NOTATION_HPP) +# include +# endif + +# if !defined(RESOURCE_HPP) +# include +# endif + +# if !defined(CONTROLS_HPP) +# include +# endif + +# if !defined(GAUGALRM_HPP) +# include +# endif + +# if !defined(AUDTOOLS_HPP) +# include +# endif + +# if !defined(ENTITY_HPP) +# include +# endif + + struct + ModelData + { + char pageName[100]; + char modelName[100]; + ResourceDescription::ResourceID videoResourceID; + ResourceDescription::ResourceID skeletonResourceID; + ResourceDescription::ResourceID audioResourceID; + ResourceDescription::ResourceID collisionID; + ResourceDescription::ResourceID gameResourceID; + ResourceDescription::ResourceID subsystemResourceID; + ResourceDescription::ResourceID controlsMappingsResourceID; + ResourceDescription::ResourceID damageZoneResourceID; + ResourceDescription::ResourceID gaugeImageResourceID; + ResourceDescription::ResourceID gaugeAlarmResourceID; + ResourceDescription::ResourceID gaugeMissionReviewResourceID; + ResourceDescription::ResourceID explosionTableResourceID; + RegisteredClass::ClassID classID; + + ResourceDescription::ResourceID resourceID; + }; + + struct + InstanceData + { + char pageName[100]; + char modelName[100]; + + ResourceDescription::ResourceID resourceID; + }; + + struct + InstanceResource + { + Origin origin; + ResourceDescription::ResourceID resourceID; + }; + + //########################################################################## + //######################### PlatformTool ############################# + //########################################################################## + + class PlatformTool + { + public: + PlatformTool() + { + gaugeAlarmManager = NULL; + } + + + virtual ResourceDescription::ResourceID + CreateModelVideoStreamResource( + ResourceFile *resource_file, + const char *model_name, + NotationFile *model_file, + const ResourceDirectories *directories + )=0; + + virtual ResourceDescription::ResourceID + CreateModelAudioStreamResource( + ResourceFile *resource_file, + const char *model_name, + NotationFile *model_file, + const ResourceDirectories *directories + )=0; + + virtual ResourceDescription::ResourceID + CreateModelGaugeImageStreamResource( + ResourceFile *resource_file, + const char *model_name, + NotationFile *model_file, + const ResourceDirectories *directories + )=0; + + virtual ResourceDescription::ResourceID + CreateModelGaugeMissionReviewStreamResource( + ResourceFile *resource_file, + const char *model_name, + NotationFile *model_file, + const ResourceDirectories *directories + )=0; + + virtual ResourceDescription::ResourceID + CreateStaticAudioStreamResource( + ResourceFile *resource_file + )=0; + + typedef Logical + (*FindNameFunction)( + const char *control_name, + ControlsMapping *mapping + ); + virtual FindNameFunction + GetControlMappingFunction()=0; + + virtual Logical + ConvertStringToModeMask( + const char *string, + ModeMask *returned_value_ptr + ); + virtual Logical + ConvertStringToTechStatus( + const char *string, + int *returned_value_ptr + ); + + GaugeAlarmManager + *gaugeAlarmManager; // should be set at the topmost level + }; + + //########################################################################## + //######################## ApplicationTool ########################### + //########################################################################## + + class ApplicationTool + { + protected: + PlatformTool* + platformTool; + + virtual Logical + CreateMakeMessage( + const char* class_name, + Entity::MakeMessage *creation_message, + NotationFile *model_file, + const ResourceDirectories *directories + ); + + virtual void + CreateModelResource( + ModelData &model_resources, + const char *model_class, + ResourceFile *resource_file, + const char *model_name, + NotationFile *model_file, + const ResourceDirectories *directories + ); + + virtual 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 + )=0; + + virtual void + ListResource(ResourceDescription *resource); + + Logical + WriteMaps( + char *map_name, + NotationFile *notation_file, + NotationFile *ops_file, + StreamableResourceFile *file, + const ResourceDirectories *resource_directories, + int resource_id = -1 + ); + + Logical + WriteModels( + NotationFile *notation_file, + NotationFile *ops_file, + StreamableResourceFile *file, + const char *model_name, + const ResourceDirectories *resource_directories, + int resource_id = -1 + ); + + void + WriteOpsFile( + NotationFile *ops_file, + StreamableResourceFile *file, + const ResourceDirectories *resource_directories + ); + + Logical + WriteAnimationCycle( + NotationFile *animation_file, + StreamableResourceFile *file, + const char *animation_name + ); + + Logical + WriteAnimationTransition( + NotationFile *animation_file, + StreamableResourceFile *file, + const char *animation_name + ); + + public: + Logical + labOnly, + verboseMode; + + ApplicationTool(PlatformTool *platform) + {platformTool = platform;} + + int + BuildResources( + int argc, + char **argv, + AudioCreateSymbols &create_symbols, + Byte minor_version + ); + int + ListResources( + int argc, + char **argv + ); + }; + +#endif + diff --git a/CODE/RP/MUNGA/TRACE.CPP b/CODE/RP/MUNGA/TRACE.CPP new file mode 100644 index 0000000..8017635 --- /dev/null +++ b/CODE/RP/MUNGA/TRACE.CPP @@ -0,0 +1,584 @@ +//===========================================================================// +// File: analysis.cpp // +// Project: MUNGA Brick: none // +// Contents: Utilities for using logic analyzer with parallel port dongle // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 04/19/94 WGR Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. All Rights reserved // +// PROPRIETARY AND CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(TRACE_HPP) + #include +#endif + +#if !defined(FILESTRM_HPP) + #include +#endif + +#if defined(TRACE_ON) + + //########################################################################## + //############################ Trace ################################# + //########################################################################## + + Byte + Trace::NextTraceID = 0; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + Trace::Trace( + const char* name, + Type type + ) + { + traceNumber = NextTraceID++; + traceType = (Byte)type; + traceName = name; + + lastFrameActivity = 0; + lastFractionActivity = 0.0f; + + trace_manager.Add(this); + } + + #if defined(USE_TIME_ANALYSIS) + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + void + Trace::PrintUsage(Scalar usage) + { + Check(this); + + DEBUG_STREAM << usage; + } + #endif + + //########################################################################## + //########################### BitTrace ############################### + //########################################################################## + + Byte + BitTrace::NextActiveLine = 0; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + BitTrace::BitTrace(const char* name): + Trace(name, BitType) + { + activeLine = NextActiveLine++; + #if defined(USE_ACTIVE_PROFILE) + DEBUG_STREAM << name << " used trace line " << (int)activeLine + << "!\n"; + if (!IsLineValidImplementation(activeLine)) + { + Fail("Invalid active trace line!"); + } + #endif + + BitTrace::ResetTrace(); + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + void + BitTrace::DumpTraceStatus() + { + Check(this); + DEBUG_STREAM << (int)activeLine << ((traceUp) ? " is On" : " is Off"); + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + void + BitTrace::ResetTrace() + { + #if defined(USE_TIME_ANALYSIS) + traceUp = False; + lastUpTime = 0.0; + totalUpTime = 0.0; + #endif + + #if defined(USE_ACTIVE_PROFILE) + ClearLineImplementation(activeLine); + #endif + } + + #if defined(USE_TIME_ANALYSIS) + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + void + BitTrace::StartTiming() + { + Check(this); + totalUpTime = 0.0; + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + Scalar + BitTrace::CalculateUsage( + long frame, + Scalar fraction, + double sample_time + ) + { + if (traceUp) + { + totalUpTime += frame - lastFrameActivity; + totalUpTime += fraction - lastFractionActivity; + } + Scalar result = totalUpTime / sample_time; + Check_Fpu(); + DEBUG_STREAM << setprecision(4) << totalUpTime / GetTicksPerSecond() + << "s, "; + return result; + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + void + BitTrace::PrintUsage(Scalar usage) + { + Check(this); + + DEBUG_STREAM << setprecision(4) << (usage*100.0f) << "% CPU"; + #if defined(USE_ACTIVE_PROFILE) + DEBUG_STREAM << " (active on line " << (int)activeLine << ')'; + #endif + } + + #endif + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + void + BitTrace::Set() + { + Check(this); + + if (!traceUp) + { + #if defined(USE_ACTIVE_PROFILE) + SetLineImplementation(activeLine); + #endif + + traceUp = True; + + #if defined(USE_TIME_ANALYSIS) || defined(USE_TRACE_LOG) + long frame = Now().ticks; + Scalar fraction = Get_Frame_Percent_Used(); + #endif + + #if defined(USE_TIME_ANALYSIS) + lastFrameActivity = frame; + lastFractionActivity = fraction; + #endif + + #if defined(USE_TRACE_LOG) + // Check(traceManager); + IncrementSampleCount(); + MemoryStream *log = GetTraceLog(); + if (log) + { + Check(log); + TraceSample *sample = (TraceSample*)log->GetPointer(); + sample->sampleType = TraceSample::GoingUp; + sample->traceNumber = traceNumber; + sample->sampleFrame = (Word)frame; + sample->sampleFraction = fraction; + log->AdvancePointer(sizeof(*sample)); + } + #endif + } + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + void + BitTrace::Clear() + { + Check(this); + + if (traceUp) + { + traceUp = False; + + #if defined(USE_TIME_ANALYSIS) || defined(USE_TRACE_LOG) + long frame = Now().ticks; + Scalar fraction = Get_Frame_Percent_Used(); + #endif + + #if defined(USE_TIME_ANALYSIS) + if (frame == lastFrameActivity && fraction < lastFractionActivity) + { + ++frame; + } + lastUpTime = frame - lastFrameActivity; + lastUpTime += fraction - lastFractionActivity; + Verify(lastUpTime >= 0.0f) + totalUpTime += lastUpTime; + Check_Fpu(); + #endif + + #if defined(USE_TRACE_LOG) + //Check(traceManager); + IncrementSampleCount(); + MemoryStream *log = GetTraceLog(); + if (log) + { + Check(log); + TraceSample *sample = (TraceSample*)log->GetPointer(); + sample->sampleType = TraceSample::GoingDown; + sample->traceNumber = traceNumber; + sample->sampleFrame = (Word)frame; + sample->sampleFraction = fraction; + log->AdvancePointer(sizeof(*sample)); + } + #endif + + #if defined(USE_ACTIVE_PROFILE) + ClearLineImplementation(activeLine); + #endif + } + } + + //########################################################################## + //######################## TraceManager ############################## + //########################################################################## + + TraceManager + trace_manager; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + TraceManager::TraceManager(): + traceChain(NULL) + { + sampleStartFrame = 0; + sampleStartFraction = 0.0f; + actualSampleCount = 0; + ignoredSampleCount = 0; + traceCount = 0; + activeTraceLog = NULL; + allocatedTraceLog = NULL; + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + TraceManager::~TraceManager() + { + Check(this); + + if (allocatedTraceLog) + { + Check(allocatedTraceLog); + allocatedTraceLog->Rewind(); + TraceSample *samples = (TraceSample*)allocatedTraceLog->GetPointer(); + Unregister_Object(allocatedTraceLog); + delete allocatedTraceLog; + activeTraceLog = allocatedTraceLog = NULL; + + Unregister_Pointer(samples); + delete[] samples; + } + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + Logical + TraceManager::TestInstance() const + { + return True; + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + void + TraceManager::Add(Trace *trace) + { + Check(this); + + traceCount = (Byte)(traceCount + 1); + traceChain.Add(trace); + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + void + TraceManager::DumpTracesStatus() + { + ChainIteratorOf traces(traceChain); + Trace *trace; + + while ((trace = traces.ReadAndNext()) != NULL) + { + Check(trace); + DEBUG_STREAM << trace->traceName << ": "; + trace->DumpTraceStatus(); + DEBUG_STREAM << endl; + } + DEBUG_STREAM << endl; + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + void + TraceManager::ResetTraces() + { + ChainIteratorOf traces(traceChain); + Trace *trace; + + while ((trace = traces.ReadAndNext()) != NULL) + { + Check(trace); + trace->ResetTrace(); + } + + #if defined(USE_TRACE_LOG) + actualSampleCount = 0; + ignoredSampleCount = 0; + if (allocatedTraceLog) + { + allocatedTraceLog->Rewind(); + } + #endif + } + + #if defined(USE_TIME_ANALYSIS) + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + void + TraceManager::StartTimingAnalysis() + { + sampleStartFrame = Now().ticks; + sampleStartFraction = Get_Frame_Percent_Used(); + + ChainIteratorOf traces(traceChain); + Trace *trace; + + while ((trace = traces.ReadAndNext()) != NULL) + { + Check(trace); + trace->StartTiming(); + trace->lastFrameActivity = sampleStartFrame; + trace->lastFractionActivity = sampleStartFraction; + } + + #if defined(USE_TRACE_LOG) + actualSampleCount = 0; + ignoredSampleCount = 0; + if (allocatedTraceLog) + { + allocatedTraceLog->Rewind(); + } + #endif + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + int + TraceManager::SnapshotTimingAnalysis(Logical print) + { + long now = Now().ticks; + float fraction = Get_Frame_Percent_Used(); + + double time = now - sampleStartFrame; + time += fraction - sampleStartFraction; + if (time < SMALL) + { + return False; + } + + ChainIteratorOf traces(traceChain); + Trace *trace; + + DEBUG_STREAM << "Sample length: " << setprecision(4) + << time/GetTicksPerSecond() << "s\n"; + while ((trace = traces.ReadAndNext()) != NULL) + { + Check(trace); + + if (print) + { + DEBUG_STREAM << trace->traceName << ": "; + Scalar usage = trace->CalculateUsage(now, fraction, time); + trace->PrintUsage(usage); + DEBUG_STREAM << endl; + } + + trace->StartTiming(); + trace->lastFrameActivity = now; + trace->lastFractionActivity = fraction; + } + + sampleStartFrame = now; + sampleStartFraction = fraction; + return True; + } + #endif + + #if defined(USE_TRACE_LOG) + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + void + TraceManager::CreateTraceLog( + size_t max_trace_count, + Logical start_logging + ) + { + Check(this); + Verify(!allocatedTraceLog); + TraceSample *samples = new TraceSample[max_trace_count]; + Register_Pointer(samples); + allocatedTraceLog = + new MemoryStream(samples, max_trace_count*sizeof(TraceSample)); + Register_Object(allocatedTraceLog); + if (start_logging) + { + activeTraceLog = allocatedTraceLog; + } + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + void + TraceManager::SaveTraceLog(const char* filename) + { + Check(this); + if (allocatedTraceLog) + { + Check(allocatedTraceLog); + + // + //-------------------------------------------------------- + // Rewind the memory stream and save it out in a disk file + //-------------------------------------------------------- + // + FileStream output(filename, True); + size_t size = allocatedTraceLog->GetBytesUsed(); + DEBUG_STREAM << ignoredSampleCount << " samples were ignored\n"; + if (size > 0) + { + DEBUG_STREAM << "Writing " << actualSampleCount + << " samples to trace log..."; + Byte trace_count = GetTraceCount(); + output << trace_count; + + ChainIteratorOf traces(traceChain); + Trace *trace; + while ((trace = traces.ReadAndNext()) != NULL) + { + output << trace->traceType; + const char* p = trace->traceName; + do + { + output << *p; + } while (*p++); + } + + output << size; + allocatedTraceLog->Rewind(); + output.WriteBytes(allocatedTraceLog->GetPointer(), size); + DEBUG_STREAM << "trace log written\n"; + } + + // + //------------------- + // Release the memory + //------------------- + // + TraceSample *samples = (TraceSample*)allocatedTraceLog->GetPointer(); + Unregister_Object(allocatedTraceLog); + delete allocatedTraceLog; + activeTraceLog = allocatedTraceLog = NULL; + + Unregister_Pointer(samples); + delete[] samples; + } + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + void + TraceManager::MarkTraceLog() + { + Check(this); + + if (activeTraceLog) + { + Check(activeTraceLog); + + long now = Now().ticks; + float fraction = Get_Frame_Percent_Used(); + + TraceSample *sample = (TraceSample*)activeTraceLog->GetPointer(); + sample->sampleType = TraceSample::Marker; + sample->sampleFrame = (Word)now; + sample->sampleFraction = fraction; + sample->traceNumber = 0; + activeTraceLog->AdvancePointer(sizeof(*sample)); + } + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + void + TraceManager::SuspendTraceLogging() + { + Check(this); + + if (activeTraceLog) + { + Check(activeTraceLog); + + long now = Now().ticks; + float fraction = Get_Frame_Percent_Used(); + + TraceSample *sample = (TraceSample*)activeTraceLog->GetPointer(); + sample->sampleType = TraceSample::SuspendSampling; + sample->sampleFrame = (Word)now; + sample->sampleFraction = fraction; + sample->traceNumber = 0; + activeTraceLog->AdvancePointer(sizeof(*sample)); + activeTraceLog = NULL; + } + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + void + TraceManager::ResumeTraceLogging() + { + Check(this); + + if (allocatedTraceLog && !activeTraceLog) + { + Check(allocatedTraceLog); + activeTraceLog = allocatedTraceLog; + + long now = Now().ticks; + float fraction = Get_Frame_Percent_Used(); + + TraceSample *sample = (TraceSample*)activeTraceLog->GetPointer(); + sample->sampleType = TraceSample::ResumeSampling; + sample->sampleFrame = (Word)now; + sample->sampleFraction = fraction; + sample->traceNumber = 0; + activeTraceLog->AdvancePointer(sizeof(*sample)); + } + } + + #endif + +#endif + diff --git a/CODE/RP/MUNGA/TRACE.HPP b/CODE/RP/MUNGA/TRACE.HPP new file mode 100644 index 0000000..e164c3f --- /dev/null +++ b/CODE/RP/MUNGA/TRACE.HPP @@ -0,0 +1,420 @@ +#if !defined(TRACE_HPP) +# define TRACE_HPP + +# if !defined(PLUG_HPP) +# include +# endif + +# if !defined(CHAIN_HPP) +# include +# endif + +# if !defined(TIME_HPP) +# include +# endif + +# if !defined(CONFIG_HPP) +# include +# endif + +# if defined(TRACE_ON) + + //####################################################################### + //################### TraceSample ################################# + //####################################################################### + + struct TraceSample + { + Scalar + sampleFraction; + Word + sampleFrame; + Byte + traceNumber, + sampleType; + + enum Type { + GoingUp = 0, + GoingDown, + Marker, + IntegerSnapshot, + ScalarSnapshot, + SuspendSampling, + ResumeSampling + }; + }; + + template struct SnapshotOf: + public TraceSample + { + T snapShot; + }; + + //####################################################################### + //######################### Trace ################################# + //####################################################################### + + class Trace: + public Plug + { + friend class TraceManager; + + public: + enum Type { + BitType, + IntegerType, + ScalarType + }; + + protected: + static Byte NextTraceID; + + const char + *traceName; + long + lastFrameActivity; + Scalar + lastFractionActivity; + Byte + traceNumber, + traceType; + + Trace( + const char* name, + Type type + ); + + MemoryStream* + GetTraceLog(); + void + IncrementSampleCount(); + + virtual void + DumpTraceStatus()=0; + virtual void + ResetTrace()=0; + + #if defined(USE_TIME_ANALYSIS) + virtual void + StartTiming()=0; + virtual Scalar + CalculateUsage( + long frame, + Scalar fraction, + double sample_time + )=0; + virtual void + PrintUsage(Scalar usage); + #endif + }; + + //####################################################################### + //######################## BitTrace ############################### + //####################################################################### + + class BitTrace: + public Trace + { + protected: + static Byte + NextActiveLine; + + Logical + traceUp; + double + lastUpTime, + totalUpTime; + Byte + activeLine; + + #if defined(USE_ACTIVE_PROFILE) + static void + SetLineImplementation(Byte line); + static void + ClearLineImplementation(Byte line); + static Logical + IsLineValidImplementation(Byte line); + #endif + + void + DumpTraceStatus(); + void + ResetTrace(); + #if defined(USE_TIME_ANALYSIS) + void + StartTiming(); + Scalar + CalculateUsage( + long frame, + Scalar fraction, + double sample_time + ); + void + PrintUsage(Scalar usage); + #endif + + public: + BitTrace(const char* name); + + void + Set(); + void + Clear(); + + double + GetLastUpTime() + {Check(this); return lastUpTime;} + double + GetTotalUpTime() + {Check(this); return totalUpTime;} + }; + + //####################################################################### + //######################## TraceOf ################################ + //####################################################################### + + template class TraceOf: + public Trace + { + protected: + double + weightedSum; + T + currentValue; + + TraceSample::Type + sampleType; + + void + DumpTraceStatus(); + void + ResetTrace(); + #if defined(USE_TIME_ANALYSIS) + void + StartTiming(); + Scalar + CalculateUsage( + long frame, + Scalar fraction, + double sample_time + ); + void + PrintUsage(Scalar usage); + #endif + + public: + TraceOf( + const char* name, + const T& initial_value, + Type trace_type, + TraceSample::Type sample_type + ); + + void + TakeSnapshot(const T& value); + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + template TraceOf::TraceOf( + const char* name, + const T& initial_value, + Type trace_type, + TraceSample::Type sample_type + ): + Trace(name, trace_type) + { + currentValue = initial_value; + sampleType = sample_type; + TraceOf::ResetTrace(); + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + template void + TraceOf::DumpTraceStatus() + { + Check(this); + DEBUG_STREAM << currentValue; + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + template void + TraceOf::ResetTrace() + { + #if defined(USE_TIME_ANALYSIS) + weightedSum = 0.0; + #endif + } + + #if defined(USE_TIME_ANALYSIS) + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + template void + TraceOf::StartTiming() + { + Check(this); + weightedSum = 0.0; + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + template Scalar + TraceOf::CalculateUsage( + long frame, + Scalar fraction, + double sample_time + ) + { + double last_part = frame - lastFrameActivity; + last_part += fraction - lastFractionActivity; + weightedSum += last_part * currentValue; + Scalar result = weightedSum / sample_time; + Check_Fpu(); + weightedSum = 0.0; + return result; + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + template void + TraceOf::PrintUsage(Scalar usage) + { + Check(this); + + DEBUG_STREAM << usage; + } + + #endif + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + template void + TraceOf::TakeSnapshot(const T& value) + { + Check(this); + + #if defined(USE_TIME_ANALYSIS) || defined(USE_TRACE_LOG) + long frame = Now().ticks; + Scalar fraction = Get_Frame_Percent_Used(); + #endif + + #if defined(USE_TIME_ANALYSIS) + double last_part = frame - lastFrameActivity; + last_part += fraction - lastFractionActivity; + weightedSum += last_part * currentValue; + lastFrameActivity = frame; + lastFractionActivity = fraction; + #endif + + currentValue = value; + + #if defined(USE_TRACE_LOG) + IncrementSampleCount(); + MemoryStream *log = GetTraceLog(); + if (log) + { + Check(log); + SnapshotOf *sample = (SnapshotOf*)log->GetPointer(); + sample->sampleType = (Byte)sampleType; + sample->traceNumber = traceNumber; + sample->sampleFrame = (Word)frame; + sample->sampleFraction = fraction; + sample->snapShot = currentValue; + log->AdvancePointer(sizeof(*sample)); + } + #endif + } + + //####################################################################### + //##################### TraceManager ############################## + //####################################################################### + + class TraceManager SIGNATURED + { + friend class Trace; + + protected: + ChainOf traceChain; + long sampleStartFrame; + Scalar sampleStartFraction; + int + actualSampleCount, + ignoredSampleCount; + MemoryStream + *allocatedTraceLog, + *activeTraceLog; + Byte traceCount; + + void + Add(Trace *trace); + + public: + TraceManager(); + ~TraceManager(); + + Byte + GetTraceCount() + {Check(this); return traceCount;} + void + DumpTracesStatus(); + void + ResetTraces(); + +# if defined(USE_TIME_ANALYSIS) + void + StartTimingAnalysis(); + int + SnapshotTimingAnalysis(Logical print=False); +# endif + +# if defined(USE_TRACE_LOG) + void + CreateTraceLog( + size_t max_trace_samples, + Logical start_sampling + ); + void + SaveTraceLog(const char* filename); + void + MarkTraceLog(); + void + SuspendTraceLogging(); + void + ResumeTraceLogging(); +# endif + + Logical + TestInstance() const; + }; + + extern TraceManager + trace_manager; + + inline MemoryStream* + Trace::GetTraceLog() + { + Check(this); Check(&trace_manager); + return trace_manager.activeTraceLog; + } + + inline void + Trace::IncrementSampleCount() + { + Check(this); Check(&trace_manager); + if (!trace_manager.activeTraceLog) + { + ++trace_manager.ignoredSampleCount; + } + else + { + ++trace_manager.actualSampleCount; + } + } + +# endif + +#endif + diff --git a/CODE/RP/MUNGA/TRACSTUB.CPP b/CODE/RP/MUNGA/TRACSTUB.CPP new file mode 100644 index 0000000..fb75f71 --- /dev/null +++ b/CODE/RP/MUNGA/TRACSTUB.CPP @@ -0,0 +1,38 @@ +#include +#pragma hdrstop + +#if !defined(HEAP_HPP) + #include +#endif + +void* + Get_Caller(int) +{ + return NULL; +} + +size_t + UserHeap::GetMainHeapInitialSize() +{ + return 0x200000; +} + +#if defined(USE_ACTIVE_PROFILE) + + void + BitTrace::SetLineImplementation(Byte) + { + } + + void + BitTrace::ClearLineImplementation(Byte) + { + } + + Logical + BitTrace::IsLineValidImplementation(Byte) + { + return True; + } + +#endif diff --git a/CODE/RP/MUNGA/TREE.CPP b/CODE/RP/MUNGA/TREE.CPP new file mode 100644 index 0000000..775190c --- /dev/null +++ b/CODE/RP/MUNGA/TREE.CPP @@ -0,0 +1,865 @@ +//===========================================================================// +// File: tree.cc // +// Project: MUNGA Brick: Connection Library // +// Contents: Implementation details of Tree class // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 10/01/94 ECH Initial coding. // +// 11/02/94 JMA Made compatible with SGI CC, merged with iterator // +// 11/03/94 ECH Made compatible with BC4.0 // +// 11/03/94 ECH Removed SGI warning // +// 11/05/94 JMA Made compatible with GNU C++ // +// 12/12/94 ECH Changed release handling // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// PROPRIETARY AND CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(TREE_HPP) + #include +#endif + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~ TreeNode ~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +// +//########################################################################### +// TreeNode +//########################################################################### +// +TreeNode::TreeNode( + Tree *tree, + Plug *plug +): + Link(tree, plug) +{ + less = NULL; + greater = NULL; + parent = NULL; +} + +// +//########################################################################### +// ~TreeNode +//########################################################################### +// +TreeNode::~TreeNode() +{ + Tree *tree = Cast_Object(Tree*, socket); + + Check(this); + Check(tree); + + // + //------------------------------------------- + // Notify iterators that deletion is occuring + //------------------------------------------- + // + tree->SendIteratorMemo(PlugRemoved, this); + + // + //----------------------------------- + // Tell the tree to release this node + //----------------------------------- + // + tree->SeverFromTreeNode(this); + + // + //------------------------------------------ + // Remove this link from any plug references + //------------------------------------------ + // + ReleaseFromPlug(); + + // + //------------------------------------------------------------- + // Tell the node to release this link. Note that this link + // is not referenced by the plug or the chain at this point in + // time. + //------------------------------------------------------------- + // + if (tree->GetReleaseNode() != NULL) + { + Check(tree->GetReleaseNode()); + tree->GetReleaseNode()->ReleaseLinkHandler(tree, plug); + } +} + +// +//########################################################################### +// TestInstance +//########################################################################### +// +Logical + TreeNode::TestInstance() const +{ + Link::TestInstance(); + + if (less != NULL) + { + Check_Signature(less); + } + if (greater != NULL) + { + Check_Signature(greater); + } + if (parent != NULL) + { + Check_Signature(parent); + } + return True; +} + +// +//########################################################################### +// SetupTreeLinks +//########################################################################### +// +void + TreeNode::SetupTreeLinks( + TreeNode *less, + TreeNode *greater, + TreeNode *parent + ) +{ + this->less = less; + this->greater = greater; + this->parent = parent; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~ Tree ~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +// +//########################################################################### +// Tree +//########################################################################### +// +Tree::Tree( + Node *node, + Logical has_unique_entries +): + SortedSocket(node, has_unique_entries) +{ + root = NULL; +} + +// +//########################################################################### +// ~Tree +//########################################################################### +// +Tree::~Tree() +{ + SetReleaseNode(NULL); + while (root != NULL) + { + Unregister_Object(root); + delete root; + } +} + +// +//########################################################################### +// TestInstance +//########################################################################### +// +Logical + Tree::TestInstance() const +{ + SortedSocket::TestInstance(); + + // + // Check root if not null + // + if (root != NULL) + { + Check(root); + } + return True; +} + +// +//########################################################################### +// AddImplementation +//########################################################################### +// +void + Tree::AddImplementation( + Plug *plug + ) +{ + AddValueImplementation(plug, NULL); +} + +// +//########################################################################### +// AddValueImplementation +//########################################################################### +// +void + Tree::AddValueImplementation( + Plug *plug, + const void *value + ) +{ + Check(this); + Check(plug); + + /* + * Verify that value has not been added + */ + Verify(HasUniqueEntries() ? SearchForValue(value) == NULL : (Logical)True); + + /* + * Make new tree node + */ + TreeNode *node; + + node = MakeTreeNode(plug, value); + Register_Object(node); + + /* + * Add to the tree and send iterators memo to + * update pointers + */ + AddTreeNode(node); + SendIteratorMemo(PlugAdded, node); +} + +// +//########################################################################### +// FindImplementation +//########################################################################### +// +Plug* + Tree::FindImplementation( + const void *value + ) +{ + TreeNode *node; + + if ((node = SearchForValue(value)) != NULL) + { + Check(node); + return node->GetPlug(); + } + return NULL; +} + +// +//########################################################################### +// MakeTreeNode +//########################################################################### +// +TreeNode* + Tree::MakeTreeNode( + Plug*, + const void* + ) +{ + Fail("Tree::MakeTreeNode - Shoule never reach here"); + return NULL; +} + +// +//########################################################################### +// CompareTreeNodes +//########################################################################### +// +int + Tree::CompareTreeNodes( + TreeNode*, + TreeNode* + ) +{ + Fail("Tree::CompareTreeNodes - Shoule never reach here"); + return 0; +} + +// +//########################################################################### +// CompareValueToTreeNode +//########################################################################### +// +int + Tree::CompareValueToTreeNode( + const void*, + TreeNode* + ) +{ + Fail("Tree::CompareValueToTreeNode - Shoule never reach here"); + return 0; +} + +// +//########################################################################### +// AddTreeNode +//########################################################################### +// +void + Tree::AddTreeNode( + TreeNode *newNode + ) +{ + Check(this); + Check(newNode); + + /* + * If root is NULL this is the first item + */ + if (root == NULL) + { + newNode->SetupTreeLinks(NULL, NULL, NULL); + root = newNode; + return; + } + + /* + * Search for insertion point + */ + TreeNode *node; + + node = root; + while (node != NULL) + { + Check(node); + + if (CompareTreeNodes(newNode, node) < 0) + { + if (node->less == NULL) + { + newNode->SetupTreeLinks(NULL, NULL, node); + node->less = newNode; + break; + } + else + node = node->less; + } + else + { + if (node->greater == NULL) + { + newNode->SetupTreeLinks(NULL, NULL, node); + node->greater = newNode; + break; + } + else + node = node->greater; + } + } +} + +// +//########################################################################### +// SeverFromTreeNode +//########################################################################### +// +void + Tree::SeverFromTreeNode( + TreeNode *node + ) +{ + Check(this); + Check(node); + + if (node->greater == NULL) + { + if (node->less == NULL) + { + // + //-------------------------------------------------------------------- + // The node has no subtrees + //-------------------------------------------------------------------- + // + if (node == root) + { + // + // Tree is now empty, set root to null + // + root = NULL; + } + else + { + // + // Set appropiate branch to NULL + // + Check(node->parent); + if (node->parent->less == node) + node->parent->less = NULL; + else + node->parent->greater = NULL; + } + } + else + { + // + //-------------------------------------------------------------------- + // The node has a less subtree + //-------------------------------------------------------------------- + // + Check(node->less); + + if (node == root) + { + // + // Node is root... Set subtree to new root + // + root = node->less; + node->less->parent = NULL; + } + else + { + // + // Node is not root + // Set parents pointer to subtree + // + Check( node->parent ); + if (node->parent->less == node) + { + node->parent->less = node->less; + } + else + { + node->parent->greater = node->less; + } + // + // Set subtree parent to node parent + // + node->less->parent = node->parent; + } + } + } + else { + if (node->less == NULL) + { + // + //-------------------------------------------------------------------- + // The node has a greater subtree + //-------------------------------------------------------------------- + // + Check( node->greater ); + if (node == root) + { + // + // Node is root + // Set subtree to new root + // + root = node->greater; + // + // Set new root to have null parent + // + node->greater->parent = NULL; + } + else + { + // + // Node is not root + // Set parents pointer to subtree + // + Check( node->parent ); + if (node->parent->less == node) + node->parent->less = node->greater; + else + node->parent->greater = node->greater; + // + // Set subtree parent to node parent + // + node->greater->parent = node->parent; + } + } + else + { + // + //-------------------------------------------------------------------- + // The node has lesser and greater sub-trees + //-------------------------------------------------------------------- + // + TreeNode *successor; + + Check(node->less); + Check(node->greater); + + successor = node->greater; + while (successor->less != NULL) + { + successor = successor->less; + Check(successor); + } + + // + // Set successor's parent to subtree + // + Check(successor->parent); + if (successor->parent->less == successor) + successor->parent->less = successor->greater; + else + successor->parent->greater = successor->greater; + + // + // Set successor's subtree to parent + // + if (successor->greater != NULL) + { + Check(successor->greater); + successor->greater->parent = successor->parent; + } + + // + // Place at node + // + successor->parent = node->parent; + successor->less = node->less; + successor->greater = node->greater; + + if (root == node) + { + // + // Node was root + // + root = successor; + } + else + { + // + // Set nodes parent to successor + // + Check(successor->parent); + if (successor->parent->less == node) + successor->parent->less = successor; + else + successor->parent->greater = successor; + } + + // + // Set subtrees parent to successor + // + if (successor->greater != NULL) + { + Check(successor->greater); + successor->greater->parent = successor; + } + if (successor->less != NULL) + { + Check(successor->less); + successor->less->parent = successor; + } + } + } +} + +// +//########################################################################### +// SearchForValue +//########################################################################### +// +TreeNode* + Tree::SearchForValue( + const void *value + ) +{ + TreeNode *node; + int ret; + + node = root; + while (node != NULL) + { + Check(node); + if ((ret = CompareValueToTreeNode(value, node)) == 0) + break; + node = (ret < 0) ? node->less : node->greater; + } + return node; +} + +// +//########################################################################### +// TreeIterator +//########################################################################### +// +TreeIterator::TreeIterator(Tree *tree): + SortedIterator(tree) +{ + First(); +} + +// +//########################################################################### +//########################################################################### +// +TreeIterator::~TreeIterator() +{ +} + +// +//########################################################################### +// TestInstance +//########################################################################### +// +Logical + TreeIterator::TestInstance() const +{ + SortedIterator::TestInstance(); + + if (currentNode != NULL) + { + Check(currentNode); + } + return True; +} + +// +//########################################################################### +// First +//########################################################################### +// +void + TreeIterator::First() +{ + TreeNode *node; + + node = Cast_Object(Tree*, socket)->root; + if (node != NULL) + { + Check(node); + while (node->less != NULL) + { + node = node->less; + Check(node); + } + } + currentNode = node; +} + +// +//########################################################################### +// Last +//########################################################################### +// +void + TreeIterator::Last() +{ + // + // Should never reach here + // + #ifdef __BCPLUSPLUS__ + #pragma warn -ccc + Verify(False); + #pragma warn +ccc + #endif +} + +// +//########################################################################### +// Next +//########################################################################### +// +void + TreeIterator::Next() +{ + TreeNode *node; + + if ((node = currentNode) == NULL) + return; + + Check(node); + if (node->greater != NULL) + { + node = node->greater; + Check(node); + while (node->less != NULL) + { + node = node->less; + Check(node); + } + currentNode = node; + return; + } + + currentNode = NULL; + while (node->parent != NULL) + { + Check(node->parent); + if (node == node->parent->less) + { + currentNode = node->parent; + return; + } + node = node->parent; + Check(node); + } +} + +// +//########################################################################### +// Previous +//########################################################################### +// +void + TreeIterator::Previous() +{ + // + // Should never reach here + // + #ifdef __BCPLUSPLUS__ + #pragma warn -ccc + Verify(False); + #pragma warn +ccc + #endif +} + +#if 0 +// +//########################################################################### +// ReadAndNextImplementation +//########################################################################### +// +void + *TreeIterator::ReadAndNextImplementation() +{ + void *plug; + + if ((plug = GetCurrentImplementation()) != NULL) + { + Next(); + } + return plug; +} +#endif + +#if 0 +// +//########################################################################### +// ReadAndPreviousImplementation +//########################################################################### +// +void + *TreeIterator::ReadAndPreviousImplementation() +{ + #ifdef __BCPLUSPLUS__ + #pragma warn -ccc + Verify(False); + #pragma warn +ccc + #endif + return(NULL); +} +#endif + +// +//########################################################################### +// GetCurrentImplementation +//########################################################################### +// +void + *TreeIterator::GetCurrentImplementation() +{ + if (currentNode != NULL) + { + Check(currentNode); + return currentNode->GetPlug(); + } + return NULL; +} + +// +//########################################################################### +// GetSize +//########################################################################### +// +CollectionSize + TreeIterator::GetSize() +{ + TreeIterator iterator(Cast_Object(Tree*, socket)); + CollectionSize i = 0; + + while (iterator.ReadAndNextImplementation() != NULL) + { + i++; + } + return(i); +} + +#if 0 +// +//########################################################################### +// GetNthImplementation +//########################################################################### +// +void + *TreeIterator::GetNthImplementation( + CollectionSize index + ) +{ + CollectionSize i = 0; + void *plug; + + First(); + while ((plug = GetCurrentImplementation()) != NULL) + { + if (i == index) + return plug; + Next(); + i++; + } + return NULL; +} +#endif + +// +//########################################################################### +// Remove +//########################################################################### +// +void + TreeIterator::Remove() +{ + if (currentNode != NULL) + { + Unregister_Object(currentNode); + delete currentNode; + } +} + +// +//########################################################################### +// FindImplementation +//########################################################################### +// +Plug* + TreeIterator::FindImplementation( + const void *value + ) +{ + TreeNode *node; + + if ((node = Cast_Object(Tree*, socket)->SearchForValue(value)) != NULL) + { + Check(node); + return (currentNode = node)->GetPlug(); + } + return NULL; +} + +// +//########################################################################### +// ReceiveMemo +//########################################################################### +// +void + TreeIterator::ReceiveMemo( + IteratorMemo memo, + void *content + ) +{ + if (memo == PlugRemoved) + { + if (content == currentNode) + Next(); + } +} + +#if defined(TEST_CLASS) +# include "tree.tcp" +#endif diff --git a/CODE/RP/MUNGA/TREE.HPP b/CODE/RP/MUNGA/TREE.HPP new file mode 100644 index 0000000..ad8fb35 --- /dev/null +++ b/CODE/RP/MUNGA/TREE.HPP @@ -0,0 +1,571 @@ +//===========================================================================// +// File: tree.hh // +// Project: MUNGA Brick: Connection Library // +// Contents: Interface specification of Tree class // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 10/01/94 ECH Initial coding. // +// 11/02/94 JMA Made compatible with SGI CC, merged with iterator // +// 11/03/94 ECH Made compatible with BC4.0 // +// 11/05/94 JMA Made compatible with GNU C++ // +// 12/12/94 ECH Changed release handling // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// PROPRIETARY AND CONFIDENTIAL // +//===========================================================================// + +#if !defined(TREE_HPP) +# define TREE_HPP + +# if !defined(NODE_HPP) +# include +# endif + +# if !defined(SRTSKT_HPP) +# include +# endif + +# if !defined(MEMBLOCK_HPP) +# include +# endif + + class Tree; + class TreeIterator; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ TreeNode ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class TreeNode: + public Link + { + friend class Tree; + friend class TreeIterator; + + public: + ~TreeNode(); + Logical + TestInstance() const; + + protected: + TreeNode( + Tree *tree, + Plug *plug + ); + + private: + void + SetupTreeLinks( + TreeNode *less, + TreeNode *greater, + TreeNode *parent + ); + + TreeNode *less; + TreeNode *greater; + TreeNode *parent; + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ TreeNodeOf ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + #define TREENODE_MEMORYBLOCK_ALLOCATION (100) + + template class TreeNodeOf: + public TreeNode + { + public: + TreeNodeOf( + Tree *tree, + Plug *plug, + const V &value + ); + ~TreeNodeOf(); + + void* + operator new(size_t); + void + operator delete(void *where); + + V + GetValue() + {return value;} + V* + GetValuePointer() + {return &value;} + + private: + static MemoryBlock + *allocatedMemory; + static CollectionSize + allocationCount; + + V value; + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~ TreeNodeOf templates ~~~~~~~~~~~~~~~~~~~~~~~~~ + + template MemoryBlock* + TreeNodeOf::allocatedMemory = NULL; + template CollectionSize + TreeNodeOf::allocationCount = 0; + + template + TreeNodeOf::TreeNodeOf( + Tree *tree, + Plug *plug, + const V &value + ): + TreeNode(tree, plug) + { + this->value = value; + } + + template + TreeNodeOf::~TreeNodeOf() + { + } + + #if 0 + template void* + TreeNodeOf::operator new(size_t) + { + if (allocatedMemory == NULL) + { + allocatedMemory = + new MemoryBlock( + sizeof(TreeNodeOf), + TREENODE_MEMORYBLOCK_ALLOCATION, + TREENODE_MEMORYBLOCK_ALLOCATION + ); + } + Check(allocatedMemory); + return allocatedMemory->New(); + } + + template void + TreeNodeOf::operator delete(void *where) + { + Check(allocatedMemory); + allocatedMemory->Delete(where); + } + #else + template void* + TreeNodeOf::operator new(size_t) + { + Verify(allocationCount >= 0); + if (allocationCount++ == 0) + { + allocatedMemory = + new MemoryBlock( + sizeof(TreeNodeOf), + TREENODE_MEMORYBLOCK_ALLOCATION, + TREENODE_MEMORYBLOCK_ALLOCATION, + "TreeNodeOf" + ); + Register_Object(allocatedMemory); + } + Verify(allocationCount < INT_MAX); + Check(allocatedMemory); + return allocatedMemory->New(); + } + + template void + TreeNodeOf::operator delete(void *where) + { + Check(allocatedMemory); + allocatedMemory->Delete(where); + if (--allocationCount == 0) + { + Unregister_Object(allocatedMemory); + delete allocatedMemory; + allocatedMemory = NULL; + } + Verify(allocationCount >= 0); + } + #endif + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~ Tree ~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class Tree: + public SortedSocket + { + friend class TreeNode; + friend class TreeIterator; + + public: + // + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // Public interface + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // + + // + //-------------------------------------------------------------------- + // Constructor, Destructor and testing + //-------------------------------------------------------------------- + // + Tree( + Node *node, + Logical has_unique_entries + ); + ~Tree(); + + Logical + TestInstance() const; + static void + TestClass(); + static void + ProfileClass(); + + protected: + // + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // Protected interface + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // + void + AddImplementation(Plug *); + void + AddValueImplementation( + Plug *plug, + const void *value + ); + Plug + *FindImplementation(const void *value); + + private: + // + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // Private interface + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // + virtual TreeNode* + MakeTreeNode( + Plug *plug, + const void *value + ); + virtual int + CompareTreeNodes( + TreeNode *link1, + TreeNode *link2 + ); + virtual int + CompareValueToTreeNode( + const void *value, + TreeNode *link + ); + + void + AddTreeNode(TreeNode *node); + void + SeverFromTreeNode(TreeNode *node); + TreeNode* + SearchForValue(const void *value); + + // + //-------------------------------------------------------------------- + // Private data + //-------------------------------------------------------------------- + // + TreeNode *root; + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~ TreeOf ~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + template class TreeOf: + public Tree + { + public: + // + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // Public interface + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // + TreeOf( + Node *node, + Logical has_unique_entries + ); + ~TreeOf(); + + // + //-------------------------------------------------------------------- + // Socket methods (see Socket for full listing) + //-------------------------------------------------------------------- + // + void + AddValue( + T plug, + const V &value + ) + {AddValueImplementation(plug, &value);} + T + Find(const V &value) + {return (T)FindImplementation(&value);} + + private: + // + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // Private interface + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // + TreeNode + *MakeTreeNode( + Plug *plug, + const void *value + ) + {return new TreeNodeOf(this, plug, *(V*)value);} + int + CompareTreeNodes( + TreeNode *link1, + TreeNode *link2 + ); + int + CompareValueToTreeNode( + const void *value, + TreeNode *link + ); + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~ TreeOf templates ~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + template + TreeOf::TreeOf( + Node *node, + Logical has_unique_entries + ): + Tree( + node, + has_unique_entries + ) + { + } + + template + TreeOf::~TreeOf() + { + } + + #if 0 + template int + TreeOf::CompareTreeNodes( + TreeNode *node1, + TreeNode *node2 + ) + { + V result = + Cast_Object(TreeNodeOf*, node1)->GetValue() - + Cast_Object(TreeNodeOf*, node2)->GetValue(); + + if (result == (V)0) + return 0; + return (result > (V)0) ? 1 : -1; + } + #else + template int + TreeOf::CompareTreeNodes( + TreeNode *node1, + TreeNode *node2 + ) + { + V *ptr1 = Cast_Object(TreeNodeOf*, node1)->GetValuePointer(); + V *ptr2 = Cast_Object(TreeNodeOf*, node2)->GetValuePointer(); + + Check_Pointer(ptr1); + Check_Pointer(ptr2); + + if (*ptr1 == *ptr2) + return 0; + else + return ((*ptr1 > *ptr2) ? 1 : -1); + } + #endif + + #if 0 + template int + TreeOf::CompareValueToTreeNode( + const void *value, + TreeNode *node + ) + { + Check_Pointer(value); + + V result = + *(V*)value - Cast_Object(TreeNodeOf*, node)->GetValue(); + + if (result == (V)0) + return 0; + return (result > (V)0) ? 1 : -1; + } + #else + template int + TreeOf::CompareValueToTreeNode( + const void *value, + TreeNode *node + ) + { + Check_Pointer(value); + + V *ptr = Cast_Object(TreeNodeOf*, node)->GetValuePointer(); + Check_Pointer(ptr); + + if (*(V*)value == *ptr) + return 0; + else + return (*(V*)value > *ptr) ? 1 : -1; + } + #endif + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~ TreeIterator ~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class TreeIterator: + public SortedIterator + { + public: + // + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // Public interface + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // + + // + //-------------------------------------------------------------------- + // Constructors, Destructor and testing + //-------------------------------------------------------------------- + // + TreeIterator(Tree *tree); + ~TreeIterator(); + Logical + TestInstance() const; + + // + //-------------------------------------------------------------------- + // Iterator methods (see Iterator for full listing) + //-------------------------------------------------------------------- + // + void + First(); + void + Next(); + CollectionSize + GetSize(); + void + Remove(); + + protected: + // + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // Protected interface + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // + void* + GetCurrentImplementation(); + Plug* + FindImplementation(const void *value); + + protected: + // + //-------------------------------------------------------------------- + // Protected data + //-------------------------------------------------------------------- + // + TreeNode + *currentNode; + + private: + // + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // Private interface + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // + void + Last(); // Marked as private so that clients do not use it + void + Previous(); // Marked as private so that clients do not use it + + void + ReceiveMemo( + IteratorMemo memo, + void *content + ); + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~ TreeIteratorOf ~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + template class TreeIteratorOf: + public TreeIterator + { + public: + // + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // Public interface + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // + + // + //-------------------------------------------------------------------- + // Constructors and Destructor + //-------------------------------------------------------------------- + // + TreeIteratorOf(TreeOf *tree); + TreeIteratorOf(TreeOf &tree); + ~TreeIteratorOf(); + + // + //-------------------------------------------------------------------- + // Iterator methods (see Iterator for full listing) + //-------------------------------------------------------------------- + // + T + ReadAndNext() + {return (T)ReadAndNextImplementation();} + T + GetCurrent() + {return (T)GetCurrentImplementation();} + T + GetNth(CollectionSize index) + {return (T)GetNthImplementation(index);} + T + Find(const V &value) + {return (T)FindImplementation(&value);} + V + GetValue() + {return Cast_Object(TreeNodeOf*, currentNode)->GetValue();} + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~ TreeIteratorOf templates ~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + template + TreeIteratorOf::TreeIteratorOf(TreeOf *tree): + TreeIterator(tree) + { + } + + template + TreeIteratorOf::TreeIteratorOf(TreeOf &tree): + TreeIterator(&tree) + { + } + + template + TreeIteratorOf::~TreeIteratorOf() + { + } + +#endif diff --git a/CODE/RP/MUNGA/TREE.TCP b/CODE/RP/MUNGA/TREE.TCP new file mode 100644 index 0000000..73b4c52 --- /dev/null +++ b/CODE/RP/MUNGA/TREE.TCP @@ -0,0 +1,521 @@ +//===========================================================================// +// File: tree.tst // +// Project: MUNGA Brick: Connection Library // +// Contents: test routines for Table class // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 10/01/94 ECH Initial coding. // +// 11/02/94 JMA Made compatible with SGI CC, used Time class instead of // +// clock_t // +// 11/03/94 ECH Made compatible with BC4.0 // +// 11/08/94 JMA Made compatible with GNU C++ // +//---------------------------------------------------------------------------// +// Copyright (C) 1994, Virtual World Entertainment, Inc. All Rights reserved // +// PROPRIETARY AND CONFIDENTIAL // +//===========================================================================// + +#include "time.hpp" + +class TreeTestPlug: + public Plug +{ +public: + int value; + + TreeTestPlug(int value); + ~TreeTestPlug(); +}; + +class TreeTestNode: + public Node +{ +public: + TreeOf tree1; + TreeOf tree2; + + TreeTestNode(); + ~TreeTestNode(); + + void VerifyOrder(); + void RunProfile(); + void RunTest(); +}; + +#define RandInt(x) (rand() % x + 1) + +TreeTestPlug::TreeTestPlug(int value) +{ + this->value = value; +} + +TreeTestPlug::~TreeTestPlug() +{ + this->value = -1; +} + +TreeTestNode::TreeTestNode(): + tree1(this, True), tree2(this, True) +{ +} + +TreeTestNode::~TreeTestNode() +{ +} + +// +//########################################################################### +// ProfileClass +//########################################################################### +// + +void + Tree::ProfileClass() +{ + TreeTestNode testNode; + Time startTicks = Now(); + + Test_Message("Tree::ProfileClass \n"); + + testNode.RunProfile(); + + Test_Message("Tree::ProfileClass elapsed = " << (Now() - startTicks) << endl); +} + +// +//########################################################################### +// TestClass +//########################################################################### +// + +void + Tree::TestClass() +{ + DEBUG_STREAM << "Starting Tree test...\n"; + + TreeTestNode testNode; + + testNode.RunTest(); +} + +// +//########################################################################### +// VerifyOrder +//########################################################################### +// +void + TreeTestNode::VerifyOrder() +{ + TreeIteratorOf iterator1(tree1); + TreeIteratorOf iterator2(tree2); + TreeTestPlug *testPlug1, *testPlug2; + int i, size; + + size = iterator1.GetSize(); + for (i = 1; i < size; i++) + { + testPlug1 = iterator1.GetNth(i-1); + testPlug2 = iterator2.GetNth(i); + Check(testPlug1); + Check(testPlug2); + + Verify(testPlug1->value < testPlug2->value); + } +} + +// +//########################################################################### +// RunProfile +//########################################################################### +// +void + TreeTestNode::RunProfile() +{ + TreeTestPlug *testPlug1, *testPlug2; + int values[TEST_CLASS]; + int i, j; + Time startTicks; + + /* + * Generate unique values, shuffle them + */ + for (i = 0; i < TEST_CLASS; i++) { + values[i] = i; + } + for (i = 0; i < TEST_CLASS; i++) { + int tmp; + + j = i + RandInt(TEST_CLASS - i) - 1; + tmp = values[j]; + values[j] = values[i]; + values[i] = tmp; + } + + // + //-------------------------------------------------------------------- + // Run timing tests + //-------------------------------------------------------------------- + // + + /* + * Create plugs and add to both sockets + */ + startTicks = Now(); + for (i = 0; i < TEST_CLASS; i++) + { + testPlug1 = new TreeTestPlug(values[i]); + Register_Object( testPlug1 ); + tree1.AddValue(testPlug1, values[i]); + tree2.AddValue(testPlug1, values[i]); + } + Test_Message("TreeTestNode::RunTest Create = " << (Now() - startTicks) << endl); + + /* + * Iterate over both sockets + */ + startTicks = Now(); + { + TreeIteratorOf iterator1(tree1); + TreeIteratorOf iterator2(tree2); + + Verify( iterator1.GetSize() == TEST_CLASS ); + Verify( iterator2.GetSize() == TEST_CLASS ); + + i = 0; + while ((testPlug1 = iterator1.ReadAndNext()) != NULL) + { + Check( testPlug1 ); + Verify( testPlug1->value == i ); + i++; + } + Verify( i == TEST_CLASS ); + + i = 0; + while ((testPlug1 = iterator2.ReadAndNext()) != NULL) + { + Check( testPlug1 ); + Verify( testPlug1->value == i ); + i++; + } + Verify( i == TEST_CLASS ); + } + Test_Message("TreeTestNode::RunTest Iterate = " << (Now() - startTicks) << endl); + + /* + * Find + */ + startTicks = Now(); + { + TreeIteratorOf iterator1(tree1); + TreeIteratorOf iterator2(tree2); + + for (i = 0; i < TEST_CLASS; i++) + { + testPlug1 = iterator1.Find(i); + testPlug2 = iterator2.Find(i); + + Check( testPlug1 ); + Check( testPlug2 ); + + Verify( testPlug1->value == i ); + Verify( testPlug2->value == i ); + + Verify( testPlug1 == testPlug2 ); + } + } + Test_Message("TreeTestNode::RunTest Find = " << (Now() - startTicks) << endl); + + /* + * Destroy from tree1, verify with tree2 + */ + startTicks = Now(); + { + TreeIteratorOf iterator1(tree1); + TreeIteratorOf iterator2(tree2); + + Verify( iterator1.GetSize() == TEST_CLASS ); + Verify( iterator2.GetSize() == TEST_CLASS ); + + i = 0; + while ((testPlug1 = iterator1.ReadAndNext()) != NULL) + { + Check( testPlug1 ); + Verify( testPlug1->value == i ); + i++; + + Unregister_Object(testPlug1); + delete(testPlug1); + } + Verify( i == TEST_CLASS ); + + Verify( iterator1.GetSize() == 0 ); + Verify( iterator2.GetSize() == 0 ); + } + Test_Message("TreeTestNode::RunTest Destroy = " << (Now() - startTicks) << endl); +} + +// +//########################################################################### +// RunTest +//########################################################################### +// +void + TreeTestNode::RunTest() +{ + TreeTestPlug *testPlug1, *testPlug2; + int values[TEST_CLASS]; + int i, j; +// Time startTicks; + + /* + * Generate unique values, shuffle them + */ + for (i = 0; i < TEST_CLASS; i++) { + values[i] = i; + } + for (i = 0; i < TEST_CLASS; i++) { + int tmp; + + j = i + RandInt(TEST_CLASS - i) - 1; + tmp = values[j]; + values[j] = values[i]; + values[i] = tmp; + } + + // + //-------------------------------------------------------------------- + // Stress tests + //-------------------------------------------------------------------- + // + + /* + * Create plugs and add to both sockets + */ + for (i = 0; i < TEST_CLASS; i++) + { + testPlug1 = new TreeTestPlug(values[i]); + Register_Object(testPlug1); + tree1.AddValue(testPlug1, values[i]); + tree2.AddValue(testPlug1, values[i]); + } + VerifyOrder(); + + /* + * Find + */ + { + for (i = 0; i < TEST_CLASS; i++) + { + testPlug1 = tree1.Find(i); + testPlug2 = tree2.Find(i); + + Check( testPlug1 ); + Check( testPlug2 ); + + Verify( testPlug1->value == i ); + Verify( testPlug2->value == i ); + + Verify( testPlug1 == testPlug2 ); + } + } + + /* + * Test first and last + */ + { + TreeIteratorOf iterator1(tree1); + TreeIteratorOf iterator2(tree2); + + Verify( iterator1.GetSize() == TEST_CLASS ); + Verify( iterator2.GetSize() == TEST_CLASS ); + + iterator1.First(); + iterator2.First(); + + testPlug1 = iterator1.GetCurrent(); + testPlug2 = iterator2.GetCurrent(); + Check( testPlug1 ); + Check( testPlug2 ); + + Verify( testPlug1 == testPlug2 ); + Verify( testPlug1 == iterator1.GetNth(0) ); + Verify( testPlug1 == iterator2.GetNth(0) ); + } + + /* + * Test next and prev + */ + { + TreeIteratorOf iterator1(tree1); + TreeIteratorOf iterator2(tree2); + + Verify( iterator1.GetSize() == TEST_CLASS ); + Verify( iterator2.GetSize() == TEST_CLASS ); + + i = 0; + while ((testPlug1 = iterator1.GetCurrent()) != NULL) + { + testPlug2 = iterator2.GetCurrent(); + + Check( testPlug1 ); + Check( testPlug2 ); + Verify( testPlug1 == testPlug2 ); + + Verify( testPlug1->value == i ); + Verify( testPlug2->value == i ); + + iterator1.Next(); + iterator2.Next(); + + i++; + } + Verify( i == TEST_CLASS ); + } + + /* + * Test read next and read prev + */ + { + TreeIteratorOf iterator1(tree1); + TreeIteratorOf iterator2(tree2); + + Verify( iterator1.GetSize() == TEST_CLASS ); + Verify( iterator2.GetSize() == TEST_CLASS ); + + i = 0; + while ((testPlug1 = iterator1.ReadAndNext()) != NULL) + { + testPlug2 = iterator2.ReadAndNext(); + + Check( testPlug1 ); + Check( testPlug2 ); + Verify( testPlug1 == testPlug2 ); + + Verify( testPlug1->value == i ); + Verify( testPlug2->value == i ); + + i++; + } + Verify( i == TEST_CLASS ); + } + + /* + * Test nth + */ + { + TreeIteratorOf iterator1(tree1); + TreeIteratorOf iterator2(tree2); + + Verify( iterator1.GetSize() == TEST_CLASS ); + Verify( iterator2.GetSize() == TEST_CLASS ); + + for (i = 0; i < TEST_CLASS; i++) + { + testPlug1 = iterator1.GetNth((int)i); + testPlug2 = iterator2.GetNth((int)i); + + Check( testPlug1 ); + Check( testPlug2 ); + Verify( testPlug1 == testPlug2 ); + + Verify( testPlug1->value == i ); + Verify( testPlug2->value == i ); + } + } + + /* + * Test Remove + */ + { + TreeIteratorOf iterator1(tree1); + TreeIteratorOf iterator2(tree2); + + Verify( iterator1.GetSize() == TEST_CLASS ); + Verify( iterator2.GetSize() == TEST_CLASS ); + + i = 0; + while ((testPlug1 = iterator1.GetCurrent()) != NULL) + { + Check( testPlug1 ); + Verify( testPlug1->value == i ); + + iterator1.Remove(); + + testPlug2 = iterator2.GetNth(0); + + Check( testPlug2 ); + Verify( testPlug2->value == i ); + Verify( testPlug1 == testPlug2 ); + + Unregister_Object(testPlug2); + delete testPlug2; + + i++; + VerifyOrder(); + } + Verify( i == TEST_CLASS ); + Verify( iterator1.GetSize() == 0 ); + Verify( iterator2.GetSize() == 0 ); + } + + /* + * Test random deletion + */ + /* + * Add plugs to both sockets + */ + { + TreeIteratorOf iterator1(tree1); + TreeIteratorOf iterator2(tree2); + + Verify( iterator1.GetSize() == 0 ); + Verify( iterator2.GetSize() == 0 ); + + for (i = 0; i < TEST_CLASS; i++) + { + testPlug1 = new TreeTestPlug(values[i]); + Register_Object( testPlug1 ); + tree1.AddValue(testPlug1, values[i]); + tree2.AddValue(testPlug1, values[i]); + + VerifyOrder(); + } + VerifyOrder(); + } + + /* + * Perform random deletion + */ + { + int size, index; + TreeIteratorOf iterator1(tree1); + TreeIteratorOf iterator2(tree2); + + Verify( iterator1.GetSize() == TEST_CLASS ); + Verify( iterator2.GetSize() == TEST_CLASS ); + + i = 0; + while((size = iterator1.GetSize()) != 0) + { + index = RandInt(size) - 1; + testPlug1 = iterator1.GetNth(index); + Check( testPlug1 ); + iterator1.Remove(); + + testPlug2 = iterator2.GetNth(index); + Check( testPlug2 ); + Verify( testPlug1 == testPlug2 ); + + Unregister_Object( testPlug2 ); + delete(testPlug2); + + i++; + VerifyOrder(); + } + Verify( i == TEST_CLASS ); + Verify( iterator1.GetSize() == 0 ); + Verify( iterator2.GetSize() == 0 ); + } +} + + diff --git a/CODE/RP/MUNGA/UNITVEC.CPP b/CODE/RP/MUNGA/UNITVEC.CPP new file mode 100644 index 0000000..53eecff --- /dev/null +++ b/CODE/RP/MUNGA/UNITVEC.CPP @@ -0,0 +1,66 @@ +//===========================================================================// +// File: unitvec.cc // +// Project: MUNGA Brick: Math Library // +// Contents: Implementation details for unit vector class // +//---------------------------------------------------------------------------// +// 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 // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(UNITVEC_HPP) + #include +#endif + +// +//############################################################################# +//############################################################################# +// +UnitVector& + UnitVector::Lerp( + const UnitVector&, // v1, + const UnitVector&, // v2, + Scalar // t + ) +{ + Check_Pointer(this); + Tell("UnitVector::Lerp stubbed out!\n"); + return *this; +} + +// +//############################################################################# +//############################################################################# +// +Logical + UnitVector::TestInstance() const +{ + Scalar length = Vector3D::LengthSquared(); + Scalar diff = 1.0f - length; + if (!Small_Enough(diff,2e-5)) + { + length = x*x + y*y + z*z; + diff = 1.0f - length; + if (!Small_Enough(diff,2e-5)) + { + Dump(*this); + Dump(length); + Dump(x*x + y*y + z*z); + Dump(diff); + return False; + } + } + return True; +} + +#if defined(TEST_CLASS) +# include "unitvec.tcp" +#endif + diff --git a/CODE/RP/MUNGA/UNITVEC.HPP b/CODE/RP/MUNGA/UNITVEC.HPP new file mode 100644 index 0000000..4c17f27 --- /dev/null +++ b/CODE/RP/MUNGA/UNITVEC.HPP @@ -0,0 +1,118 @@ +//===========================================================================// +// File: unitvec.hh // +// Project: MUNGA Brick: Math Library // +// Contents: Interface specification for unit vector class // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 11/19/94 JMA Initial coding. // +// 12/01/94 JMA Made compatible with SGI CC // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(UNITVEC_HPP) +# define UNITVEC_HPP + +# if !defined(VECTOR3D_HPP) +# include +# endif + + //~~~~~~~~~~~~~~~~~~~~~~~~~~ UnitVector ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class LinearMatrix; + + class UnitVector: + public Vector3D + { + public: + // + // Constructors + // + UnitVector() + {} + UnitVector( + Scalar x, + Scalar y, + Scalar z + ): + Vector3D(x,y,z) + {} + + // + // Assignment operators + // + UnitVector& + operator=(const UnitVector &vector) + {Check(&vector); Vector3D::operator=(vector); return *this;} + UnitVector& + operator=(const Vector3D& v) + {Vector3D::Normalize(v); return *this;} + + // + // Math operations + // + UnitVector& + Negate(const UnitVector &v) + {Check(&v); Vector3D::Negate(v); return *this;} + + Scalar + operator*(const Vector3D& v) const + {return Vector3D::operator*(v);} + + // + // Transforms + // + UnitVector& Multiply( + const UnitVector &v, + const LinearMatrix &m + ); + UnitVector& + operator*=(const LinearMatrix &m); + UnitVector& + MultiplyByInverse( + const UnitVector &v, + const LinearMatrix &m + ) + {Vector3D::MultiplyByInverse(v,m); return *this;} + + // + // Template support + // + UnitVector& + Lerp( + const UnitVector& v1, + const UnitVector& v2, + Scalar t + ); + + // + // Support functions + // + Logical + TestInstance() const; + static Logical + TestClass(); + + private: + static const UnitVector identity; + UnitVector& Negate(const Vector3D &V); + UnitVector& Add(const Vector3D& V1,const Vector3D& V2); + UnitVector& operator+=(const Vector3D& V); + UnitVector& Subtract(const Vector3D& V1,const Vector3D& V2); + UnitVector& operator-=(const Vector3D& V); + UnitVector& Cross(const Vector3D& V1,const Vector3D& V2); + UnitVector& Multiply(const Vector3D& V,Scalar Scale); + UnitVector& operator*=(Scalar Value); + UnitVector& Multiply(const Vector3D& V1,const Vector3D& V2); + UnitVector& operator*=(const Vector3D &V); + UnitVector& Multiply(const Vector3D &Source, const AffineMatrix &M); + UnitVector& MultiplyByInverse(const Vector3D &Source, const LinearMatrix &M); + UnitVector& Divide(const Vector3D& V,Scalar Scale); + UnitVector& operator/=(Scalar Value); + UnitVector& Combine(const Vector3D& V1,Scalar t1,const Vector3D& V2,Scalar t2); + }; + +#endif diff --git a/CODE/RP/MUNGA/UNITVEC.TCP b/CODE/RP/MUNGA/UNITVEC.TCP new file mode 100644 index 0000000..45a605d --- /dev/null +++ b/CODE/RP/MUNGA/UNITVEC.TCP @@ -0,0 +1,77 @@ +//===========================================================================// +// File: unitvec.tst // +// Project: MUNGA Brick: Math Library // +// Contents: Implementation details for unit vector class // +//---------------------------------------------------------------------------// +// 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 // +//===========================================================================// + +#if !defined(LINMTRX_HPP) + #include +#endif + +#if !defined(ROTATION_HPP) + #include +#endif + +// +//########################################################################### +//########################################################################### +// +Logical + UnitVector::TestClass() +{ + DEBUG_STREAM << "Starting UnitVector test...\n"; + + UnitVector + b; + const UnitVector + c(0.6f,0.0f,0.8f); + UnitVector + d(0.8f,-0.6f,0.0f); + + Test(c.x == 0.6f && c.y == 0.0f && c.z == 0.8f); + + Test(c[2] == c.z); + + b = c; + Test(b.x == c.x && b.y == c.y && b.z == c.z); + Test(Close_Enough(b,c)); + Test(b == c); + + b.Negate(c); + Test(b == UnitVector(-c.x,-c.y,-c.z)); + + Scalar f = c*d; + Test(Close_Enough(f,c.x*d.x + c.y*d.y + c.z*d.z)); + + LinearMatrix + m; + EulerAngles + r(PI_OVER_4,0.0f,0.0f); + m = r; + b.Multiply(c,m); + Test(b == UnitVector(c.x,c.y*m(1,1)+c.z*m(2,1),c.y*m(1,2)+c.z*m(2,2))); + b = c; + b *= m; + Test(b == UnitVector(c.x,c.y*m(1,1)+c.z*m(2,1),c.y*m(1,2)+c.z*m(2,2))); + + f = c.LengthSquared(); + Test(f == 1.0f); + f = c.Length(); + Test(f == 1.0f); + + Vector3D v(0.0f,1.2f,1.6f); + f = v.Length(); + b = v; + Test(b == UnitVector(v.x/f, v.y/f, v.z/f)); + + return True; +} + diff --git a/CODE/RP/MUNGA/UPDATE.CPP b/CODE/RP/MUNGA/UPDATE.CPP new file mode 100644 index 0000000..ac6757b --- /dev/null +++ b/CODE/RP/MUNGA/UPDATE.CPP @@ -0,0 +1,273 @@ +//===========================================================================// +// File: update.cc // +// Project: MUNGA Brick: Update Manager // +// Contents: // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 12/20/94 ECH Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(UPDATE_HPP) +# include +#endif + +#if !defined(APP_HPP) + #include +#endif + +#if !defined(HOSTMGR_HPP) + #include +#endif + +#if !defined(INTEREST_HPP) + #include +#endif + +#if !defined(ENTITY_HPP) + #include +#endif + +#if defined(TRACE_UPDATE_REPLICANTS) + static BitTrace Update_Replicants("Update Replicants"); + #define SET_UPDATE_REPLICANTS() Update_Replicants.Set() + #define CLEAR_UPDATE_REPLICANTS() Update_Replicants.Clear() +#else + #define SET_UPDATE_REPLICANTS() + #define CLEAR_UPDATE_REPLICANTS() +#endif + +#if defined(TRACE_UPDATE_MASTERS) + static BitTrace Update_Masters("Update Masters"); + #define SET_UPDATE_MASTERS() Update_Masters.Set() + #define CLEAR_UPDATE_MASTERS() Update_Masters.Clear() +#else + #define SET_UPDATE_MASTERS() + #define CLEAR_UPDATE_MASTERS() +#endif + +MemoryBlock + SimulationEncore::AllocatedMemory( + sizeof(SimulationEncore), + 10, + 10, + "Simulation Encores" + ); + +SimulationEncore::SimulationEncore( + Simulation *sim, + Simulation::Encore callback +) +{ + encoreSimulation = sim; + encoreCallback = callback; + runWatchers = True; +} + +SimulationEncore::~SimulationEncore() +{ +} + +// +//############################################################################# +//############################################################################# +// +UpdateManager::UpdateManager(): + simulationEncores(NULL) +{ +} + +// +//############################################################################# +//############################################################################# +// +UpdateManager::~UpdateManager() +{ + ChainIteratorOf encores(simulationEncores); + SimulationEncore *encore; + while ((encore = encores.ReadAndNext()) != NULL) + { + Unregister_Object(encore); + delete encore; + } +} + +// +//############################################################################# +//############################################################################# +// +Logical + UpdateManager::TestInstance() const +{ + Node::TestInstance(); + return True; +} + +// +//############################################################################# +//############################################################################# +// +void + UpdateManager::Execute(Time target_render_time) +{ + Check(this); + + // + //-------------------------------------------------------------------------- + // Execute the replicants and masters that are interesting and dynamic + //-------------------------------------------------------------------------- + // + Check(application); + Check(application->GetHostManager()); + + HostManager::DynamicReplicantEntityIterator + replicant_entity_iterator(application->GetHostManager()); + HostManager::DynamicMasterEntityIterator + master_entity_iterator(application->GetHostManager()); + + // + //-------------------------------------------------------------------------- + // Execute the replicants + //-------------------------------------------------------------------------- + // + SET_UPDATE_REPLICANTS(); + + Entity + *replicant; + + while ((replicant = replicant_entity_iterator.ReadAndNext()) != NULL) + { + Check(replicant); + if (replicant->IsReplicantExecutable()) + { + replicant->Execute(target_render_time); + } + } + + CLEAR_UPDATE_REPLICANTS(); + + // + //-------------------------------------------------------------------------- + // Execute the master entities, if they need to be updated then send + // update messages, and notify the interest manager of moved entities + //-------------------------------------------------------------------------- + // + SET_UPDATE_MASTERS(); + + Entity + *entity; + Entity::UpdateMessage + *update_message; + + while ((entity = master_entity_iterator.ReadAndNext()) != NULL) + { + Check(entity); + + // + //----------------------------------------------------------------------- + // If the entity is not interesting then skip it + //----------------------------------------------------------------------- + // + if (!entity->IsInteresting() || !entity->IsNonReplicantExecutable()) + { + continue; + } + + // + //----------------------------------------------------------------------- + // Run the execute method + //----------------------------------------------------------------------- + // + update_message = entity->Execute(target_render_time); + + // + //----------------------------------------------------------------------- + // Update the interest zone id + //----------------------------------------------------------------------- + // + Check(application); + Check(application->GetInterestManager()); + application->GetInterestManager()->EntityUpdateInterestZone(entity); + + // + //----------------------------------------------------------------------- + // If update message is not null then send the change + //----------------------------------------------------------------------- + // + if (update_message != NULL) + { + Check(update_message); + + Check(application); + application->GetInterestManager()->EntityUpdateReplicants( + entity, + update_message + ); + } + } + + // + //-------------------------------------------------------------------------- + // Lastly, run through and do any requested encores + //-------------------------------------------------------------------------- + // + ChainIteratorOf + encores(simulationEncores); + SimulationEncore + *encore; + + while ((encore = encores.ReadAndNext()) != NULL) + { + Check(encore); + Check(encore->encoreSimulation); + (encore->encoreSimulation->*encore->encoreCallback)(); + if (encore->runWatchers) + { + encore->encoreSimulation->ExecuteWatchers(); + encore->encoreSimulation->ClearWatcherDelay(); + } + Unregister_Object(encore); + delete encore; + } + CLEAR_UPDATE_MASTERS(); +} + +// +//############################################################################# +//############################################################################# +// +void + UpdateManager::RequestEncore( + Simulation *simulation, + Simulation::Encore encore + ) +{ + // + //---------------------------------------------------------------------- + // Make sure that we only run the watcher on a given simulation once per + // frame + //---------------------------------------------------------------------- + // + ChainIteratorOf encores(simulationEncores); + SimulationEncore *i; + while ((i = encores.ReadAndNext()) != NULL) + { + if (i->encoreSimulation == simulation && i->runWatchers) + { + i->runWatchers = False; + break; + } + } + + SimulationEncore *request = new SimulationEncore(simulation, encore); + Register_Object(request); + simulationEncores.Add(request); +} + diff --git a/CODE/RP/MUNGA/UPDATE.HPP b/CODE/RP/MUNGA/UPDATE.HPP new file mode 100644 index 0000000..a3c4ade --- /dev/null +++ b/CODE/RP/MUNGA/UPDATE.HPP @@ -0,0 +1,109 @@ +//===========================================================================// +// File: update.hh // +// Project: MUNGA Brick: Update Manager // +// Contents: // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 12/20/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(UPDATE_HPP) +# define UPDATE_HPP + +#if !defined(NODE_HPP) +# include +#endif + +#if !defined(TIME_HPP) +# include +#endif + +# if !defined(MEMBLOCK_HPP) +# include +# endif + +# if !defined(SIMULATE_HPP) +# include +# endif + + class UpdateManager; + + class SimulationEncore: + public Plug + { + friend class UpdateManager; + + private: + static MemoryBlock AllocatedMemory; + + void* + operator new(size_t) + {return AllocatedMemory.New();} + void + operator delete(void *where) + {AllocatedMemory.Delete(where);} + + Simulation *encoreSimulation; + Simulation::Encore encoreCallback; + Logical runWatchers; + + SimulationEncore( + Simulation *sim, + Simulation::Encore callback + ); + ~SimulationEncore(); + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ UpdateManager ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class UpdateManager: + public Node + { + public: + // + //-------------------------------------------------------------------- + // Construction, Destruction + //-------------------------------------------------------------------- + // + UpdateManager(); + ~UpdateManager(); + + Logical + TestInstance() const; + + // + //-------------------------------------------------------------------- + // Execute + // + // Perform update management functions + //-------------------------------------------------------------------- + // + void + Execute(Time target_render_time); + + // + //---------------------------------------------------------------------- + // CreateEncore + // + // Registers a callback to be executed after all entity performances are + // completed + //---------------------------------------------------------------------- + // + void + RequestEncore( + Simulation *simulation, + Simulation::Encore encore + ); + + protected: + ChainOf + simulationEncores; + }; + +#endif + diff --git a/CODE/RP/MUNGA/VCHAIN.CPP b/CODE/RP/MUNGA/VCHAIN.CPP new file mode 100644 index 0000000..cc1fa77 --- /dev/null +++ b/CODE/RP/MUNGA/VCHAIN.CPP @@ -0,0 +1,647 @@ +//===========================================================================// +// File: vchain.cc // +// Project: MUNGA Brick: Connection Library // +// Contents: Implementation details of VChain class // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 12/02/94 ECH Initial coding. // +// 12/12/94 ECH Changed release handling // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// PROPRIETARY AND CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(VCHAIN_HPP) + #include +#endif + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ VChainLink ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +// +//########################################################################### +// VChainLink +//########################################################################### +// +VChainLink::VChainLink( + VChain *vchain, + Plug *plug +): + Link(vchain, plug) +{ + next = NULL; + prev = NULL; +} + +// +//########################################################################### +// ~VChainLink +//########################################################################### +// +VChainLink::~VChainLink() +{ + VChain *vchain = Cast_Object(VChain*, socket); + + // + //------------------------------------------- + // Notify iterators that deletion is occuring + //------------------------------------------- + // + vchain->SendIteratorMemo(PlugRemoved, this); + + // + //--------------------------- + // Remove from existing links + //--------------------------- + // + if (prev != NULL) + { + Check(prev); + prev->next = next; + } + else + { + Check(vchain); + vchain->head = next; + } + if (next != NULL) + { + Check(next); + next->prev = prev; + } + else + { + Check(vchain); + vchain->tail = prev; + } + prev = next = NULL; + + // + //------------------------------------------ + // Remove this link from any plug references + //------------------------------------------ + // + ReleaseFromPlug(); + + // + //------------------------------------------------------------- + // Tell the node to release this link. Note that this link + // is not referenced by the plug or the chain at this point in + // time. + //------------------------------------------------------------- + // + if (vchain->GetReleaseNode() != NULL) + { + Check(vchain->GetReleaseNode()); + vchain->GetReleaseNode()->ReleaseLinkHandler(vchain, plug); + } +} + +// +//########################################################################### +// TestInstance +//########################################################################### +// +Logical + VChainLink::TestInstance() const +{ + Link::TestInstance(); + + if (next != NULL) + { + Check_Signature(next); + } + if (prev != NULL) + { + Check_Signature(prev); + } + + return True; +} + +// +//########################################################################### +// SetupVChainLinks +//########################################################################### +// +void + VChainLink::SetupVChainLinks( + VChainLink *next, + VChainLink *prev + ) +{ + this->next = next; + this->prev = prev; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ VChain ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +// +//########################################################################### +// VChain +//########################################################################### +// +VChain::VChain( + Node *node, + Logical has_unique_entries +): + SortedSocket(node, has_unique_entries) +{ + head = NULL; + tail = NULL; +} + +// +//########################################################################### +// ~VChain +//########################################################################### +// +VChain::~VChain() +{ + SetReleaseNode(NULL); + while (head != NULL) + { + Unregister_Object(head); + delete head; + } +} + +// +//########################################################################### +// TestInstance +//########################################################################### +// +Logical + VChain::TestInstance() const +{ + SortedSocket::TestInstance(); + + if (head != NULL) + { + Check(head); + } + if (tail != NULL) + { + Check(tail); + } + + return True; +} + +// +//########################################################################### +// MakeVChainLink +//########################################################################### +// +VChainLink + *VChain::MakeVChainLink( + Plug*, + const void* + ) +{ + Fail("VChain::MakeVChainLink - Should never reach here"); + return NULL; +} + +// +//########################################################################### +// CompareVChainLinks +//########################################################################### +// +int + VChain::CompareVChainLinks( + VChainLink*, + VChainLink* + ) +{ + Fail("VChain::CompareVChainLinks - Should never reach here"); + return 0; +} + +// +//########################################################################### +// CompareValueToVChainLink +//########################################################################### +// +int + VChain::CompareValueToVChainLink( + const void*, + VChainLink* + ) +{ + Fail("VChain::CompareValueToVChainLink - Should never reach here"); + return 0; +} + +// +//########################################################################### +// AddImplementation +//########################################################################### +// +void + VChain::AddImplementation( + Plug *plug + ) +{ + AddValueImplementation(plug, NULL); +} + +// +//########################################################################### +// AddValueImplementation +//########################################################################### +// +void + VChain::AddValueImplementation( + Plug *plug, + const void *value + ) +{ + VChainLink *link; + + // + //------------------------------------------------------------- + // Verify that value has not been added + //------------------------------------------------------------- + // + Verify(HasUniqueEntries() ? (SearchForValue(value) == NULL) : (Logical)True); + + // + //------------------------------------------------------------- + // Make new vchain link + //------------------------------------------------------------- + // + link = MakeVChainLink(plug, value); + Register_Object(link); + + // + //------------------------------------------------------------- + // Find insertion point for the new link + //------------------------------------------------------------- + // + if (head == NULL) + { + link->SetupVChainLinks(NULL, NULL); + head = link; + tail = link; + } + else + { + VChainLink *greater_link; + + Check(head); + Check(tail); + + for ( + greater_link = head; + greater_link != NULL; + greater_link = greater_link->next + ) + { + Check(greater_link); + if (CompareValueToVChainLink(value, greater_link) < 0) + break; + } + + if (greater_link == NULL) + { + // + // Add after tail + // + link->SetupVChainLinks(NULL, tail); + tail->next = link; + tail = link; + } + else if (greater_link == head) + { + // + // Add before head + // + link->SetupVChainLinks(head, NULL); + head->prev = link; + head = link; + } + else + { + // + // Add before greater_link + // + link->SetupVChainLinks(greater_link, greater_link->prev); + greater_link->prev->next = link; + greater_link->prev = link; + } + } + + SendIteratorMemo(PlugAdded, link); +} + +// +//########################################################################### +// FindImplementation +//########################################################################### +// +Plug* + VChain::FindImplementation( + const void *value + ) +{ + VChainLink *link; + + if ((link = SearchForValue(value)) != NULL) + { + Check(link); + return link->GetPlug(); + } + return NULL; +} + +// +//########################################################################### +// SearchForValue +//########################################################################### +// +VChainLink* + VChain::SearchForValue( + const void *value + ) +{ + VChainLink *link; + int ret; + + for (link = head; link != NULL; link = link->next) + { + Check(link); + if ((ret = CompareValueToVChainLink(value, link)) == 0) + break; + if (ret < 0) + return(NULL); + } + return link; +} + +// +//########################################################################### +// VChainIterator +//########################################################################### +// +VChainIterator::VChainIterator(VChain *vchain): + SortedIterator(vchain) +{ + Check(vchain); + currentLink = vchain->head; +} + +// +//########################################################################### +// VChainIterator +//########################################################################### +// +VChainIterator::VChainIterator(const VChainIterator *iterator): + SortedIterator(Cast_Object(VChain*, iterator->socket)) +{ + Check(iterator); + currentLink = iterator->currentLink; +} + +// +//########################################################################### +//########################################################################### +// +VChainIterator::~VChainIterator() +{ +} + +// +//########################################################################### +// TestInstance +//########################################################################### +// +Logical + VChainIterator::TestInstance() const +{ + SortedIterator::TestInstance(); + + if (currentLink != NULL) + { + Check(currentLink); + } + + return True; +} + +// +//########################################################################### +// First +//########################################################################### +// +void + VChainIterator::First() +{ + currentLink = Cast_Object(VChain*, socket)->head; +} + +// +//########################################################################### +// Last +//########################################################################### +// +void + VChainIterator::Last() +{ + currentLink = Cast_Object(VChain*, socket)->tail; +} + +// +//########################################################################### +// Next +//########################################################################### +// +void + VChainIterator::Next() +{ + Check(currentLink); + currentLink = currentLink->next; +} + +// +//########################################################################### +// Previous +//########################################################################### +// +void + VChainIterator::Previous() +{ + Check(currentLink); + currentLink = currentLink->prev; +} + +// +//########################################################################### +// ReadAndNextImplementation +//########################################################################### +// +void + *VChainIterator::ReadAndNextImplementation() +{ + if (currentLink != NULL) + { + Plug *plug; + + Check(currentLink); + plug = currentLink->GetPlug(); + currentLink = currentLink->next; + return plug; + } + return NULL; +} + +// +//########################################################################### +// ReadAndPreviousImplementation +//########################################################################### +// +void + *VChainIterator::ReadAndPreviousImplementation() +{ + if (currentLink != NULL) + { + Plug *plug; + + Check(currentLink); + plug = currentLink->plug; + currentLink = currentLink->prev; + return plug; + } + return NULL; +} + +// +//########################################################################### +// GetCurrentImplementation +//########################################################################### +// +void + *VChainIterator::GetCurrentImplementation() +{ + if (currentLink != NULL) + { + Check(currentLink); + return currentLink->GetPlug(); + } + return NULL; +} + +// +//########################################################################### +// GetSize +//########################################################################### +// +CollectionSize + VChainIterator::GetSize() +{ + VChainLink *link; + CollectionSize count; + + count = 0; + for ( + link = Cast_Object(VChain*, socket)->head; + link != NULL; + link = link->next + ) + { + Check(link); + count++; + } + return count; +} + +// +//########################################################################### +// GetNthImplementation +//########################################################################### +// +void + *VChainIterator::GetNthImplementation( + CollectionSize index + ) +{ + VChainLink *link; + CollectionSize count; + + count = 0; + for ( + link = Cast_Object(VChain*, socket)->head; + link != NULL; + link = link->next + ) + { + Check(link); + if (count == index) + { + currentLink = link; + return currentLink->GetPlug(); + } + count++; + } + return NULL; +} + +// +//########################################################################### +// Remove +//########################################################################### +// +void + VChainIterator::Remove() +{ + Check(currentLink); + Unregister_Object(currentLink); + delete currentLink; +} + +// +//########################################################################### +// FindImplementation +//########################################################################### +// +Plug* + VChainIterator::FindImplementation( + const void *value + ) +{ + VChainLink *link; + + if ((link = Cast_Object(VChain*, socket)->SearchForValue(value)) != NULL) + { + Check(link); + return (currentLink = link)->GetPlug(); + } + return NULL; +} + +// +//########################################################################### +// ReceiveMemo +//########################################################################### +// +void + VChainIterator::ReceiveMemo( + IteratorMemo memo, + void *content + ) +{ + if (memo == PlugRemoved) + { + if (content == currentLink) + { + Next(); + } + } +} + +#if defined(TEST_CLASS) +# include "vchain.tcp" +#endif diff --git a/CODE/RP/MUNGA/VCHAIN.HPP b/CODE/RP/MUNGA/VCHAIN.HPP new file mode 100644 index 0000000..db6091b --- /dev/null +++ b/CODE/RP/MUNGA/VCHAIN.HPP @@ -0,0 +1,631 @@ +//===========================================================================// +// File: vchain.hh // +// Project: MUNGA Brick: Connection Library // +// Contents: Interface specification of VChain class // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 12/02/94 ECH Initial coding. // +// 12/12/94 ECH Changed release handling // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// PROPRIETARY AND CONFIDENTIAL // +//===========================================================================// + +#if !defined(VCHAIN_HPP) +# define VCHAIN_HPP + +# if !defined(NODE_HPP) +# include +# endif + +# if !defined(SRTSKT_HPP) +# include +# endif + +# if !defined(MEMBLOCK_HPP) +# include +# endif + + class VChain; + class VChainIterator; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ VChainLink ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class VChainLink: + public Link + { + friend class VChain; + friend class VChainIterator; + + public: + ~VChainLink(); + Logical + TestInstance() const; + + protected: + VChainLink( + VChain *vchain, + Plug *plug + ); + + private: + void + SetupVChainLinks( + VChainLink *next, + VChainLink *prev + ); + + VChainLink *next; + VChainLink *prev; + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ VChainLinkOf ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + #define VCHAINLINK_MEMORYBLOCK_ALLOCATION (100) + + template class VChainLinkOf: + public VChainLink + { + public: + VChainLinkOf( + VChain *vchain, + Plug *plug, + const V &value + ); + ~VChainLinkOf(); + + void* + operator new(size_t); + void + operator delete(void *where); + + V + GetValue() + {return value;} + V* + GetValuePointer() + {return &value;} + + private: + static MemoryBlock + *allocatedMemory; + static CollectionSize + allocationCount; + + V value; + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~ VChainLinkOf templates ~~~~~~~~~~~~~~~~~~~~~~~~ + + template MemoryBlock* + VChainLinkOf::allocatedMemory = NULL; + template CollectionSize + VChainLinkOf::allocationCount = 0; + + template + VChainLinkOf::VChainLinkOf( + VChain *vchain, + Plug *plug, + const V &value + ): + VChainLink(vchain, plug) + { + this->value = value; + } + + template + VChainLinkOf::~VChainLinkOf() + { + } + + #if 0 + template void* + VChainLinkOf::operator new(size_t) + { + if (allocatedMemory == NULL) + { + allocatedMemory = + new MemoryBlock( + sizeof(VChainLinkOf), + VCHAINLINK_MEMORYBLOCK_ALLOCATION, + VCHAINLINK_MEMORYBLOCK_ALLOCATION + ); + } + Check(allocatedMemory); + return allocatedMemory->New(); + } + + template void + VChainLinkOf::operator delete(void *where) + { + Check(allocatedMemory); + allocatedMemory->Delete(where); + } + #else + template void* + VChainLinkOf::operator new(size_t) + { + Verify(allocationCount >= 0); + if (allocationCount++ == 0) + { + allocatedMemory = + new MemoryBlock( + sizeof(VChainLinkOf), + VCHAINLINK_MEMORYBLOCK_ALLOCATION, + VCHAINLINK_MEMORYBLOCK_ALLOCATION, + "VChainLinkOf" + ); + Register_Object(allocatedMemory); + } + Verify(allocationCount < INT_MAX); + Check(allocatedMemory); + return allocatedMemory->New(); + } + + template void + VChainLinkOf::operator delete(void *where) + { + Check(allocatedMemory); + allocatedMemory->Delete(where); + if (--allocationCount == 0) + { + Unregister_Object(allocatedMemory); + delete allocatedMemory; + allocatedMemory = NULL; + } + Verify(allocationCount >= 0); + } + #endif + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ VChain ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class VChain: + public SortedSocket + { + friend class VChainLink; + friend class VChainIterator; + + public: + // + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // Public interface + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // + + // + //-------------------------------------------------------------------- + // Constructor, Destructor and testing + //-------------------------------------------------------------------- + // + VChain( + Node *node, + Logical has_unique_entries + ); + ~VChain(); + + Logical + TestInstance() const; + static Logical + TestClass(); + static Logical + ProfileClass(); + + protected: + // + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // Protected interface + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // + void + AddImplementation(Plug *); + void + AddValueImplementation( + Plug *plug, + const void *value + ); + Plug + *FindImplementation(const void *value); + + private: + // + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // Private interface + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // + virtual VChainLink + *MakeVChainLink( + Plug *plug, + const void *value + ); + virtual int + CompareVChainLinks( + VChainLink *link1, + VChainLink *link2 + ); + virtual int + CompareValueToVChainLink( + const void *value, + VChainLink *link + ); + + VChainLink* + SearchForValue(const void *value); + + // + //-------------------------------------------------------------------- + // Private data + //-------------------------------------------------------------------- + // + VChainLink *head; + VChainLink *tail; + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ VChainOf ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + #define VCHAIN_MEMORYBLOCK_ALLOCATION (100) + + template class VChainOf: + public VChain + { + public: + // + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // Public interface + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // + VChainOf( + Node *node, + Logical has_unique_entries + ); + ~VChainOf(); + + void* + operator new(size_t); + void + operator delete(void *where); + + // + //-------------------------------------------------------------------- + // Socket methods (see Socket for full listing) + //-------------------------------------------------------------------- + // + void + AddValue( + T plug, + const V &value + ) + {AddValueImplementation(Cast_Object(Plug*,plug), &value);} + T + Find(const V &value) + {return (T)FindImplementation(&value);} + + private: + // + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // Private interface + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // + VChainLink + *MakeVChainLink( + Plug *plug, + const void *value + ) + {return new VChainLinkOf(this, plug, *(V*)value);} + int + CompareVChainLinks( + VChainLink *link1, + VChainLink *link2 + ); + int + CompareValueToVChainLink( + const void *value, + VChainLink *link + ); + + // + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // Private data + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // + static MemoryBlock + *allocatedMemory; + static CollectionSize + allocationCount; + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~ VChainOf templates ~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + template MemoryBlock* + VChainOf::allocatedMemory = NULL; + template CollectionSize + VChainOf::allocationCount = 0; + + template + VChainOf::VChainOf( + Node *node, + Logical has_unique_entries + ): + VChain( + node, + has_unique_entries + ) + { + } + + template + VChainOf::~VChainOf() + { + } + + template int + VChainOf::CompareVChainLinks( + VChainLink *node1, + VChainLink *node2 + ) + { + V *ptr1 = Cast_Object(VChainLinkOf*, node1)->GetValuePointer(); + V *ptr2 = Cast_Object(VChainLinkOf*, node2)->GetValuePointer(); + + Check_Pointer(ptr1); + Check_Pointer(ptr2); + + if (*ptr1 == *ptr2) + return 0; + else + return ((*ptr1 > *ptr2) ? 1 : -1); + } + + template int + VChainOf::CompareValueToVChainLink( + const void *value, + VChainLink *node + ) + { + Check_Pointer(value); + + V *ptr = Cast_Object(VChainLinkOf*, node)->GetValuePointer(); + Check_Pointer(ptr); + + if (*(V*)value == *ptr) + return 0; + else + return (*(V*)value > *ptr) ? 1 : -1; + } + + #if 0 + template void* + VChainOf::operator new(size_t) + { + if (allocatedMemory == NULL) + { + allocatedMemory = + new MemoryBlock( + sizeof(VChainOf), + VCHAIN_MEMORYBLOCK_ALLOCATION, + VCHAIN_MEMORYBLOCK_ALLOCATION + ); + } + Check(allocatedMemory); + return allocatedMemory->New(); + } + + template void + VChainOf::operator delete(void *where) + { + Check(allocatedMemory); + allocatedMemory->Delete(where); + } + #else + template void* + VChainOf::operator new(size_t) + { + Verify(allocationCount >= 0); + if (allocationCount++ == 0) + { + allocatedMemory = + new MemoryBlock( + sizeof(VChainOf), + VCHAIN_MEMORYBLOCK_ALLOCATION, + VCHAIN_MEMORYBLOCK_ALLOCATION, + "VChainOf" + ); + Register_Object(allocatedMemory); + } + Verify(allocationCount < INT_MAX); + Check(allocatedMemory); + return allocatedMemory->New(); + } + + template void + VChainOf::operator delete(void *where) + { + Check(allocatedMemory); + allocatedMemory->Delete(where); + if (--allocationCount == 0) + { + Unregister_Object(allocatedMemory); + delete allocatedMemory; + allocatedMemory = NULL; + } + Verify(allocationCount >= 0); + } + #endif + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~ VChainIterator ~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class VChainIterator: + public SortedIterator + { + public: + // + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // Public interface + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // + + // + //-------------------------------------------------------------------- + // Constructors, Destructor and testing + //-------------------------------------------------------------------- + // + VChainIterator(VChain *vchain); + VChainIterator(const VChainIterator *iterator); + ~VChainIterator(); + Logical + TestInstance() const; + + // + //-------------------------------------------------------------------- + // Iterator methods (see Iterator for full listing) + //-------------------------------------------------------------------- + // + void + First(); + void + Last(); + void + Next(); + void + Previous(); + CollectionSize + GetSize(); + void + Remove(); + + protected: + // + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // Protected interface + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // + void* + ReadAndNextImplementation(); + void* + ReadAndPreviousImplementation(); + void* + GetCurrentImplementation(); + void* + GetNthImplementation( + CollectionSize index + ); + Plug* + FindImplementation(const void *value); + + protected: + // + //-------------------------------------------------------------------- + // Protected data + //-------------------------------------------------------------------- + // + VChainLink + *currentLink; + + private: + // + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // Private interface + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // + void + ReceiveMemo( + IteratorMemo memo, + void *content + ); + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~ VChainIteratorOf ~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + template class VChainIteratorOf: + public VChainIterator + { + public: + // + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // Public interface + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // + + // + //-------------------------------------------------------------------- + // Constructors and Destructor + //-------------------------------------------------------------------- + // + VChainIteratorOf(VChainOf *vchain); + VChainIteratorOf(VChainOf &vchain); + VChainIteratorOf(const VChainIteratorOf &iterator); + ~VChainIteratorOf(); + + // + //-------------------------------------------------------------------- + // Iterator methods (see Iterator for full listing) + //-------------------------------------------------------------------- + // + T + ReadAndNext() + {return (T)ReadAndNextImplementation();} + T + ReadAndPrevious() + {return (T)ReadAndPreviousImplementation();} + T + GetCurrent() + {return (T)GetCurrentImplementation();} + T + GetNth(CollectionSize index) + {return (T)GetNthImplementation(index);} + T + Find(const V &value) + {return (T)FindImplementation(&value);} + V + GetValue() + {return Cast_Object(VChainLinkOf*, currentLink)->GetValue();} + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~ VChainIteratorOf templates ~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + template + VChainIteratorOf::VChainIteratorOf(VChainOf *vchain): + VChainIterator(vchain) + { + } + + template + VChainIteratorOf::VChainIteratorOf(VChainOf &vchain): + VChainIterator(&vchain) + { + } + + template + VChainIteratorOf::VChainIteratorOf( + const VChainIteratorOf &iterator + ): + VChainIterator(&iterator) + { + } + + template + VChainIteratorOf::~VChainIteratorOf() + { + } + +#endif diff --git a/CODE/RP/MUNGA/VCHAIN.TCP b/CODE/RP/MUNGA/VCHAIN.TCP new file mode 100644 index 0000000..9544a72 --- /dev/null +++ b/CODE/RP/MUNGA/VCHAIN.TCP @@ -0,0 +1,531 @@ +//===========================================================================// +// File: vchain.tst // +// Project: MUNGA Brick: Connection Library // +// Contents: test routines for VChain class // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 12/02/94 ECH Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1994, Virtual World Entertainment, Inc. All Rights reserved // +// PROPRIETARY AND CONFIDENTIAL // +//===========================================================================// + +#include "time.hpp" + +class VChainTestPlug: + public Plug +{ +public: + int value; + + VChainTestPlug(int value); + ~VChainTestPlug(); +}; + +class VChainTestNode: + public Node +{ +public: + VChainOf vchain1; + VChainOf vchain2; + + VChainTestNode(); + ~VChainTestNode(); + + void RunProfile(); + void RunTest(); +}; + +#define RandInt(x) (rand() % x + 1) + +VChainTestPlug::VChainTestPlug(int value) +{ + this->value = value; +} + +VChainTestPlug::~VChainTestPlug() +{ +} + +VChainTestNode::VChainTestNode(): + vchain1(this, True), vchain2(this, True) +{ +} + +VChainTestNode::~VChainTestNode() +{ +} + +// +//########################################################################### +// ProfileClass +//########################################################################### +// + +Logical + VChain::ProfileClass() +{ + VChainTestNode testNode; + Time startTicks = Now(); + + Test_Message("VChain::ProfileClass\n"); + + testNode.RunProfile(); + + Test_Message("VChain::ProfileClass elapsed = " << (Now() - startTicks) << endl); + return True; +} + +// +//########################################################################### +// TestClass +//########################################################################### +// + +Logical + VChain::TestClass() +{ + DEBUG_STREAM << "Starting VChain test...\n"; + + VChainTestNode testNode; + + testNode.RunTest(); + return True; +} + +void + VChainTestNode::RunProfile() +{ + VChainTestPlug *testPlug1, *testPlug2; + int values[TEST_CLASS]; + int i, j; + Time startTicks; + + /* + * Generate unique values, shuffle them + */ + for (i = 0; i < TEST_CLASS; i++) { + values[i] = i; + } + for (i = 0; i < TEST_CLASS; i++) { + int tmp; + + j = i + RandInt(TEST_CLASS - i) - 1; + tmp = values[j]; + values[j] = values[i]; + values[i] = tmp; + } + + // + //-------------------------------------------------------------------- + // Run timing tests + //-------------------------------------------------------------------- + // + + /* + * Create plugs and add to both sockets + */ + startTicks = Now(); + for (i = 0; i < TEST_CLASS; i++) + { + testPlug1 = new VChainTestPlug(values[i]); + Register_Object(testPlug1); + vchain1.AddValue(testPlug1, values[i]); + vchain2.AddValue(testPlug1, values[i]); + } + Test_Message("VChainTestNode::RunTest Create = " << (Now() - startTicks) << endl); + + /* + * Iterate over both sockets + */ + startTicks = Now(); + { + VChainIteratorOf iterator1(&vchain1); + VChainIteratorOf iterator2(&vchain2); + + Verify( iterator1.GetSize() == TEST_CLASS ); + Verify( iterator2.GetSize() == TEST_CLASS ); + + i = 0; + while ((testPlug1 = iterator1.ReadAndNext()) != NULL) + { + Check( testPlug1 ); + Verify( testPlug1->value == i ); + i++; + } + Verify( i == TEST_CLASS ); + + i = 0; + while ((testPlug1 = iterator2.ReadAndNext()) != NULL) + { + Check( testPlug1 ); + Verify( testPlug1->value == i ); + i++; + } + Verify( i == TEST_CLASS ); + } + Test_Message("VChainTestNode::RunTest Iterate = " << (Now() - startTicks) << endl); + + /* + * Find + */ + startTicks = Now(); + { + VChainIteratorOf iterator1(&vchain1); + VChainIteratorOf iterator2(&vchain2); + + for (i = 0; i < TEST_CLASS; i++) + { + testPlug1 = iterator1.Find(i); + testPlug2 = iterator2.Find(i); + + Check( testPlug1 ); + Check( testPlug2 ); + + Verify( testPlug1->value == i ); + Verify( testPlug2->value == i ); + + Verify( testPlug1 == testPlug2 ); + } + } + Test_Message("VChainTestNode::RunTest Find = " << (Now() - startTicks) << endl); + + /* + * Destroy from vchain1, verify with vchain2 + */ + startTicks = Now(); + { + VChainIteratorOf iterator1(&vchain1); + VChainIteratorOf iterator2(&vchain2); + + Verify( iterator1.GetSize() == TEST_CLASS ); + Verify( iterator2.GetSize() == TEST_CLASS ); + + i = 0; + while ((testPlug1 = iterator1.ReadAndNext()) != NULL) + { + Check( testPlug1 ); + Verify( testPlug1->value == i ); + i++; + + Unregister_Object( testPlug1 ); + delete(testPlug1); + } + Verify( i == TEST_CLASS ); + + Verify( iterator1.GetSize() == 0 ); + Verify( iterator2.GetSize() == 0 ); + } + Test_Message("VChainTestNode::RunTest Destroy = " << (Now() - startTicks) << endl); +} + +void + VChainTestNode::RunTest() +{ + VChainTestPlug *testPlug1, *testPlug2; + int values[TEST_CLASS]; + int i, j; +// Time startTicks; + + /* + * Generate unique values, shuffle them + */ + for (i = 0; i < TEST_CLASS; i++) { + values[i] = i; + } + for (i = 0; i < TEST_CLASS; i++) { + int tmp; + + j = i + RandInt(TEST_CLASS - i) - 1; + tmp = values[j]; + values[j] = values[i]; + values[i] = tmp; + } + + // + //-------------------------------------------------------------------- + // Stress tests + //-------------------------------------------------------------------- + // + + /* + * Create plugs and add to both sockets + */ + for (i = 0; i < TEST_CLASS; i++) + { + testPlug1 = new VChainTestPlug(values[i]); + Register_Object( testPlug1 ); + vchain1.AddValue(testPlug1, values[i]); + vchain2.AddValue(testPlug1, values[i]); + } + + /* + * Find + */ + { + for (i = 0; i < TEST_CLASS; i++) + { + testPlug1 = vchain1.Find(i); + testPlug2 = vchain2.Find(i); + + Check( testPlug1 ); + Check( testPlug2 ); + + Verify( testPlug1->value == i ); + Verify( testPlug2->value == i ); + + Verify( testPlug1 == testPlug2 ); + } + } + + /* + * Test first and last + */ + { + VChainIteratorOf iterator1(&vchain1); + VChainIteratorOf iterator2(&vchain2); + + Verify( iterator1.GetSize() == TEST_CLASS ); + Verify( iterator2.GetSize() == TEST_CLASS ); + + iterator1.First(); + iterator2.First(); + + testPlug1 = iterator1.GetCurrent(); + testPlug2 = iterator2.GetCurrent(); + Check( testPlug1 ); + Check( testPlug2 ); + + Verify( testPlug1 == testPlug2 ); + Verify( testPlug1 == iterator1.GetNth(0) ); + Verify( testPlug1 == iterator2.GetNth(0) ); + + iterator1.Last(); + iterator2.Last(); + + testPlug1 = iterator1.GetCurrent(); + testPlug2 = iterator2.GetCurrent(); + Check( testPlug1 ); + Check( testPlug2 ); + + Verify( testPlug1 == testPlug2 ); + Verify( testPlug1 == iterator1.GetNth(TEST_CLASS - 1) ); + Verify( testPlug1 == iterator2.GetNth(TEST_CLASS - 1) ); + } + + /* + * Test next and prev + */ + { + VChainIteratorOf iterator1(&vchain1); + VChainIteratorOf iterator2(&vchain2); + + Verify( iterator1.GetSize() == TEST_CLASS ); + Verify( iterator2.GetSize() == TEST_CLASS ); + + i = 0; + while ((testPlug1 = iterator1.GetCurrent()) != NULL) + { + testPlug2 = iterator2.GetCurrent(); + + Check( testPlug1 ); + Check( testPlug2 ); + Verify( testPlug1 == testPlug2 ); + + Verify( testPlug1->value == i ); + Verify( testPlug2->value == i ); + + iterator1.Next(); + iterator2.Next(); + + i++; + } + Verify( i == TEST_CLASS ); + + iterator1.Last(); + iterator2.Last(); + + i = TEST_CLASS-1; + while ((testPlug1 = iterator1.GetCurrent()) != NULL) + { + testPlug2 = iterator2.GetCurrent(); + + Check( testPlug1 ); + Check( testPlug2 ); + Verify( testPlug1 == testPlug2 ); + + Verify( testPlug1->value == i ); + Verify( testPlug2->value == i ); + + iterator1.Previous(); + iterator2.Previous(); + + i--; + } + Verify( i == -1 ); + } + + /* + * Test read next and read prev + */ + { + VChainIteratorOf iterator1(&vchain1); + VChainIteratorOf iterator2(&vchain2); + + Verify( iterator1.GetSize() == TEST_CLASS ); + Verify( iterator2.GetSize() == TEST_CLASS ); + + i = 0; + while ((testPlug1 = iterator1.ReadAndNext()) != NULL) + { + testPlug2 = iterator2.ReadAndNext(); + + Check( testPlug1 ); + Check( testPlug2 ); + Verify( testPlug1 == testPlug2 ); + + Verify( testPlug1->value == i ); + Verify( testPlug2->value == i ); + + i++; + } + Verify( i == TEST_CLASS ); + + iterator1.Last(); + iterator2.Last(); + + i = TEST_CLASS-1; + while ((testPlug1 = iterator1.ReadAndPrevious()) != NULL) + { + testPlug2 = iterator2.ReadAndPrevious(); + + Check( testPlug1 ); + Check( testPlug2 ); + Verify( testPlug1 == testPlug2 ); + + Verify( testPlug1->value == i ); + Verify( testPlug2->value == i ); + + i--; + } + Verify( i == -1 ); + } + + /* + * Test nth + */ + { + VChainIteratorOf iterator1(&vchain1); + VChainIteratorOf iterator2(&vchain2); + + Verify( iterator1.GetSize() == TEST_CLASS ); + Verify( iterator2.GetSize() == TEST_CLASS ); + + for ( + i = 0; + i < TEST_CLASS; + i++ + ) + { + testPlug1 = iterator1.GetNth((int)i); + testPlug2 = iterator2.GetNth((int)i); + + Check( testPlug1 ); + Check( testPlug2 ); + Verify( testPlug1 == testPlug2 ); + + Verify( testPlug1->value == i ); + Verify( testPlug2->value == i ); + } + } + + /* + * Test Remove + */ + { + VChainIteratorOf iterator1(&vchain1); + VChainIteratorOf iterator2(&vchain2); + + Verify( iterator1.GetSize() == TEST_CLASS ); + Verify( iterator2.GetSize() == TEST_CLASS ); + + i = 0; + while ((testPlug1 = iterator1.GetCurrent()) != NULL) + { + Check( testPlug1 ); + Verify( testPlug1->value == i ); + + iterator1.Remove(); + + testPlug2 = iterator2.GetNth(0); + + Check( testPlug2 ); + Verify( testPlug2->value == i ); + Verify( testPlug1 == testPlug2 ); + + Unregister_Object( testPlug2 ); + delete(testPlug2); + + i++; + } + Verify( i == TEST_CLASS ); + Verify( iterator1.GetSize() == 0 ); + Verify( iterator2.GetSize() == 0 ); + } + + /* + * Test random deletion + */ + { + /* + * Add plugs to both sockets + */ + VChainIteratorOf iterator1(vchain1); + VChainIteratorOf iterator2(vchain2); + + Verify( iterator1.GetSize() == 0 ); + Verify( iterator2.GetSize() == 0 ); + + for (i = 0; i < TEST_CLASS; i++) + { + testPlug1 = new VChainTestPlug(values[i]); + Register_Object( testPlug1 ); + vchain1.AddValue(testPlug1, values[i]); + vchain2.AddValue(testPlug1, values[i]); + } + } + + { + /* + * Perform random deletion + */ + int size, index; + VChainIteratorOf iterator1(vchain1); + VChainIteratorOf iterator2(vchain2); + + Verify( iterator1.GetSize() == TEST_CLASS ); + Verify( iterator2.GetSize() == TEST_CLASS ); + + i = 0; + while((size = iterator1.GetSize()) != 0) + { + index = RandInt(size) - 1; + testPlug1 = iterator1.GetNth(index); + Check( testPlug1 ); + iterator1.Remove(); + + testPlug2 = iterator2.GetNth(index); + Check( testPlug2 ); + Verify( testPlug1 == testPlug2 ); + + Unregister_Object( testPlug2 ); + delete(testPlug2); + + i++; + } + Verify( i == TEST_CLASS ); + Verify( iterator1.GetSize() == 0 ); + Verify( iterator2.GetSize() == 0 ); + } +} diff --git a/CODE/RP/MUNGA/VDATA.CPP b/CODE/RP/MUNGA/VDATA.CPP new file mode 100644 index 0000000..819479f --- /dev/null +++ b/CODE/RP/MUNGA/VDATA.CPP @@ -0,0 +1,158 @@ +//===========================================================================// +// File: vdata.cc // +// Project: MUNGA Brick: Connection Library // +// Contents: Implementation details for registered classes and virtual data // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- -----------------------------------------------------------// +// 11/03/94 ECH Initial coding. // +// 11/03/94 ECH Made compatible with BC4.0 // +// 11/08/94 ECH Made compatible with BC4.0 // +// 11/29/94 JMA Changed ClassIdentity to ClassID // +// 11/30/94 JMA Adapted to style changes // +// 12/01/94 JMA Made compatible with SGI CC // +// 12/12/94 ECH Changed class id access // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(VDATA_HPP) + #include +#endif + +#if !defined(OBJSTRM_HPP) + #include +#endif + +//############################################################################# +//####################### RegisteredClass ############################### +//############################################################################# + +// +//############################################################################# +// RegisteredClass +//############################################################################# +// +RegisteredClass::RegisteredClass(ClassID class_id) +{ + classID = class_id; +} + +// +//############################################################################# +// ~RegisteredClass +//############################################################################# +// +RegisteredClass::~RegisteredClass() +{ +} + +// +//############################################################################# +// RegisteredClass +//############################################################################# +// +RegisteredClass::RegisteredClass(ObjectStream *stream) +{ + ObjectID object_ID; + + MemoryStream_Read(stream, &classID); + Verify(classID != NullClassID); + MemoryStream_Read(stream, &object_ID); +} + +// +//############################################################################# +// BuildFromPage +//############################################################################# +// +void + RegisteredClass::BuildFromPage( + ObjectStream *stream, + NameList*, + ClassID class_ID, + ObjectID object_ID + ) +{ + *stream << class_ID << object_ID; +} + +// +//############################################################################# +// TestInstance +//############################################################################# +// +Logical + RegisteredClass::TestInstance() const +{ + return True; +} + +// +//############################################################################# +// GetClassID +//############################################################################# +// +RegisteredClass::ClassID + RegisteredClass::GetClassID(const CString &class_name_string) +{ + // + //-------------------------------------------------------------------------- + // HACK - Class name lookup could be perfromed via registration, for now, + // use if statements + //-------------------------------------------------------------------------- + // + #define COMPARE_AND_RETURN(class_name)\ + if (!strcmp(class_name_string, #class_name))\ + return class_name##ClassID; + + COMPARE_AND_RETURN(AudioStateTrigger); + COMPARE_AND_RETURN(AudioMotionScale); + COMPARE_AND_RETURN(AudioRenderer); + COMPARE_AND_RETURN(AudioLocation); + COMPARE_AND_RETURN(AudioMotionTrigger); + COMPARE_AND_RETURN(AudioControlMixer); + COMPARE_AND_RETURN(AudioHingeScale); + COMPARE_AND_RETURN(AudioControlSmoother); + COMPARE_AND_RETURN(AudioResourceSelector); + COMPARE_AND_RETURN(L4AudioCollisionTrigger); + COMPARE_AND_RETURN(AudioResourceIndex); + COMPARE_AND_RETURN(AudioScalarScale); + COMPARE_AND_RETURN(AudioControlSend); + COMPARE_AND_RETURN(L4AudioLocation); + COMPARE_AND_RETURN(DirectPatchSource); + COMPARE_AND_RETURN(Dynamic3DPatchSource); + COMPARE_AND_RETURN(PatchResource); + COMPARE_AND_RETURN(Static3DPatchSource); + COMPARE_AND_RETURN(AudioControlMultiplier); + COMPARE_AND_RETURN(AudioSampleAndHold); + COMPARE_AND_RETURN(AudioScalarTrigger); + COMPARE_AND_RETURN(AudioEnumerationTrigger); + COMPARE_AND_RETURN(AudioIntegerTrigger); + COMPARE_AND_RETURN(AudioLogicalTrigger); + COMPARE_AND_RETURN(AudioControlsButtonTrigger); + COMPARE_AND_RETURN(ExplosionResourceTable); + COMPARE_AND_RETURN(AudioIdleWatcher); + COMPARE_AND_RETURN(AudioControlEvent); + COMPARE_AND_RETURN(AudioControlSequence); + COMPARE_AND_RETURN(AudioControlSplitter); + COMPARE_AND_RETURN(AudioLFO); + COMPARE_AND_RETURN(AudioEnumerationDeltaTrigger); + COMPARE_AND_RETURN(AudioScalarDeltaTrigger); + COMPARE_AND_RETURN(AudioLevelOfDetail); + COMPARE_AND_RETURN(PatchLevelOfDetail); + COMPARE_AND_RETURN(AudioMessageWatcher); + COMPARE_AND_RETURN(AudioControlsButtonMessageWatcher); + + // + // Etc... + // + + return NullClassID; +} + diff --git a/CODE/RP/MUNGA/VECTOR3D.CPP b/CODE/RP/MUNGA/VECTOR3D.CPP new file mode 100644 index 0000000..0f3ee41 --- /dev/null +++ b/CODE/RP/MUNGA/VECTOR3D.CPP @@ -0,0 +1,479 @@ +//===========================================================================// +// File: vector3d.cc // +// Project: MUNGA Brick: Math Library // +// Contents: Implementation details for vector 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 // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(VECTOR3D_HPP) + #include +#endif + +#if !defined(LINMTRX_HPP) + #include +#endif + +#if !defined(CSTR_HPP) + #include +#endif + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~ AbstractVector3D ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +#if defined(USE_SIGNATURE) + int + Is_Signature_Bad(const volatile AbstractVector3D *) + { + return False; + } +#endif + +// +//########################################################################### +//########################################################################### +// +AbstractVector3D& + AbstractVector3D::operator=(const AbstractVector3D &vector) +{ + Check_Pointer(this); + Check(&vector); + + x = vector.x; + y = vector.y; + z = vector.z; + return *this; +} + +// +//########################################################################### +//########################################################################### +// +Logical + Small_Enough(const AbstractVector3D &V,Scalar e) +{ + Check(&V); + return + Small_Enough(V.x,e) + && Small_Enough(V.y,e) + && Small_Enough(V.z,e); +} + +// +//########################################################################### +//########################################################################### +// +Logical + Close_Enough( + const AbstractVector3D &V1, + const AbstractVector3D &V2, + Scalar e + ) +{ + Check(&V1); + Check(&V2); + return + Close_Enough(V1.x,V2.x,e) + && Close_Enough(V1.y,V2.y,e) + && Close_Enough(V1.z,V2.z,e); +} + +// +//########################################################################### +//########################################################################### +// +Logical + AbstractVector3D::TestInstance() const +{ + return True; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Vector3D ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +const Vector3D + Vector3D::Identity(0.0f,0.0f,0.0f); + +// +//########################################################################### +//########################################################################### +// +inline Vector3D& + Vector3D::operator=(const LBE3Vector3D &vector) +{ + Check_Pointer(this); + Check(&vector); + + x = vector.x; + y = vector.z; + z = vector.y; + return *this; +} + +// +//########################################################################### +//########################################################################### +// +inline Vector3D& + Vector3D::operator=(const TIVector3D &vector) +{ + Check_Pointer(this); + Check(&vector); + + x = vector.x; + y = vector.y; + z = -vector.z; + return *this; +} + +// +//########################################################################### +//########################################################################### +// +Vector3D& + Vector3D::Negate(const Vector3D &V) +{ + Check_Pointer(this); + Check(&V); + x = -V.x; + y = -V.y; + z = -V.z; + return *this; +} + +// +//########################################################################### +//########################################################################### +// +Vector3D& + Vector3D::Add( + const Vector3D& V1, + const Vector3D& V2 + ) +{ + Check_Pointer(this); + Check(&V1); + Check(&V2); + x = V1.x + V2.x; + y = V1.y + V2.y; + z = V1.z + V2.z; + return *this; +} + +// +//########################################################################### +//########################################################################### +// +Vector3D& + Vector3D::AddScaled( + const Vector3D& V1, + const Vector3D& V2, + Scalar scale + ) +{ + Check_Pointer(this); + Check(&V1); + Check(&V2); + + x = V1.x + V2.x*scale; + y = V1.y + V2.y*scale; + z = V1.z + V2.z*scale; + return *this; +} + +// +//########################################################################### +//########################################################################### +// +Vector3D& + Vector3D::Subtract(const Vector3D& V1,const Vector3D& V2) +{ + Check_Pointer(this); + Check(&V1); + Check(&V2); + x = V1.x - V2.x; + y = V1.y - V2.y; + z = V1.z - V2.z; + return *this; +} + +// +//########################################################################### +//########################################################################### +// +Vector3D& + Vector3D::Cross(const Vector3D& v1,const Vector3D& v2) +{ + Check_Pointer(this); + Check(&v1); + Check(&v2); + + Verify(this != &v1); + Verify(this != &v2); + + x = v1.y*v2.z - v1.z*v2.y; + y = v1.z*v2.x - v1.x*v2.z; + z = v1.x*v2.y - v1.y*v2.x; + return *this; +} + +// +//########################################################################### +//########################################################################### +// +Vector3D& + Vector3D::Multiply(const Vector3D& V,Scalar Scale) +{ + Check_Pointer(this); + Check(&V); + x = V.x * Scale; + y = V.y * Scale; + z = V.z * Scale; + return *this; +} + +// +//########################################################################### +//########################################################################### +// +Vector3D& + Vector3D::Multiply(const Vector3D& V1,const Vector3D& V2) +{ + Check_Pointer(this); + Check(&V1); + Check(&V2); + x = V1.x * V2.x; + y = V1.y * V2.y; + z = V1.z * V2.z; + return *this; +} + +// +//########################################################################### +//########################################################################### +// +Vector3D& + Vector3D::Divide(const Vector3D& V,Scalar Scale) +{ + Check_Pointer(this); + Check(&V); + Verify(!Small_Enough(Scale)); + x = V.x / Scale; + y = V.y / Scale; + z = V.z / Scale; + return *this; +} + +// +//########################################################################### +//########################################################################### +// +Vector3D& + Vector3D::Divide(const Vector3D& V1,const Vector3D& V2) +{ + Check_Pointer(this); + Check(&V1); + Check(&V2); + Verify(!Small_Enough(V2.x)); + Verify(!Small_Enough(V2.y)); + Verify(!Small_Enough(V2.z)); + x = V1.x / V2.x; + y = V1.y / V2.y; + z = V1.z / V2.z; + return *this; +} + +// +//########################################################################### +//########################################################################### +// +Vector3D& + Vector3D::Multiply(const Vector3D& v,const AffineMatrix& m) +{ + Check_Pointer(this); + Check(&v); + Check(&m); + Verify(this != &v); + + x = v.x*m(0,0) + v.y*m(1,0) + v.z*m(2,0); + y = v.x*m(0,1) + v.y*m(1,1) + v.z*m(2,1); + z = v.x*m(0,2) + v.y*m(1,2) + v.z*m(2,2); + return *this; +} + +// +//########################################################################### +//########################################################################### +// +Vector3D& + Vector3D::MultiplyByInverse( + const Vector3D& v, + const LinearMatrix& m + ) +{ + Check_Pointer(this); + Check(&v); + Check(&m); + Verify(this != &v); + + x = v.x*m(0,0) + v.y*m(0,1) + v.z*m(0,2); + y = v.x*m(1,0) + v.y*m(1,1) + v.z*m(1,2); + z = v.x*m(2,0) + v.y*m(2,1) + v.z*m(2,2); + return *this; +} + +// +//########################################################################### +//########################################################################### +// +Vector3D& + Vector3D::Normalize(const Vector3D &V) +{ + Check(this); + Scalar len = V.Length(); + Verify(len); + + x = V.x / len; + y = V.y / len; + z = V.z / len; + return *this; +} + +// +//########################################################################### +//########################################################################### +// +Vector3D& + Vector3D::Combine( + const Vector3D& V1, + Scalar t1, + const Vector3D& V2, + Scalar t2 + ) +{ + Check_Pointer(this); + Check(&V1); + Check(&V2); + + x = t1*V1.x + t2*V2.x; + y = t1*V1.y + t2*V2.y; + z = t1*V1.z + t2*V2.z; + return *this; +} + +// +//########################################################################### +//########################################################################### +// +ostream& + operator<<(ostream& Stream, const Vector3D& V) +{ + Check(&V); + return Stream << setprecision(4) << '<' << V.x << ',' + << V.y << ',' << V.z << '>'; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~ Vector3D functions ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +// +//########################################################################### +//########################################################################### +// +void + Convert_From_Ascii( + const char *str, + Vector3D *vector_3D + ) +{ + Check_Pointer(str); + Check_Signature(vector_3D); + + CString parse_string(str); + + Check_Pointer(parse_string.GetNthToken(0)); + vector_3D->x = atof(parse_string.GetNthToken(0)); + + Check_Pointer(parse_string.GetNthToken(1)); + vector_3D->y = atof(parse_string.GetNthToken(1)); + + Check_Pointer(parse_string.GetNthToken(2)); + vector_3D->z = atof(parse_string.GetNthToken(2)); + + Check(vector_3D); +} + +// +//########################################################################### +//########################################################################### +// +LBE3Vector3D& + LBE3Vector3D::operator=(const Vector3D& vector) +{ + Check_Pointer(this); + Check(&vector); + + x = vector.x; + y = vector.z; + z = vector.y; + return *this; +} + +// +//########################################################################### +//########################################################################### +// +LBE3Vector3D& + LBE3Vector3D::operator=(const TIVector3D &vector) +{ + Check_Pointer(this); + Check(&vector); + + x = vector.x; + y = -vector.z; + z = vector.y; + return *this; +} + +// +//########################################################################### +//########################################################################### +// +TIVector3D& + TIVector3D::operator=(const Vector3D &vector) +{ + Check_Pointer(this); + Check(&vector); + + x = vector.x; + y = vector.y; + z = -vector.z; + return *this; +} + +// +//########################################################################### +//########################################################################### +// +TIVector3D& + TIVector3D::operator=(const LBE3Vector3D &vector) +{ + Check_Pointer(this); + Check(&vector); + + x = vector.x; + y = vector.z; + z = -vector.y; + return *this; +} + +#if defined(TEST_CLASS) +# include "vector3d.tcp" +#endif + diff --git a/CODE/RP/MUNGA/VECTOR3D.HPP b/CODE/RP/MUNGA/VECTOR3D.HPP new file mode 100644 index 0000000..a50635e --- /dev/null +++ b/CODE/RP/MUNGA/VECTOR3D.HPP @@ -0,0 +1,421 @@ +//===========================================================================// +// File: vector3d.hh // +// Project: MUNGA Brick: Math Library // +// Contents: Interface specification for vector 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 // +//===========================================================================// + +#if !defined(VECTOR3D_HPP) +# define VECTOR3D_HPP + +# if !defined(MEMSTRM_HPP) +# include +# endif + +# if !defined(SCALAR_HPP) +# include +# endif + + class AbstractVector3D; + class Vector3D; + class LBE3Vector3D; + class TIVector3D; + class AffineMatrix; + class LinearMatrix; + class Matrix4x4; + class Point3D; + + enum Axes { + X_Axis, + Y_Axis, + Z_Axis, + W_Axis + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~ AbstractVector3D ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class AbstractVector3D + { + public: + Scalar + x, + y, + z; + + #if defined(USE_SIGNATURE) + friend int + Is_Signature_Bad(const volatile AbstractVector3D *p); + #endif + + // + // Assignment operators + // + AbstractVector3D& + operator=(const AbstractVector3D& v); + + // + // "Close-enough" comparators + // + friend Logical + Small_Enough( + const AbstractVector3D &v, + Scalar e=SMALL + ); + Logical + operator!() const + {return Small_Enough(*this, SMALL);} + + friend Logical + Close_Enough( + const AbstractVector3D &v1, + const AbstractVector3D &v2, + Scalar e=SMALL + ); + Logical + operator==(const AbstractVector3D& v) const + {return Close_Enough(*this,v,SMALL);} + Logical + operator!=(const AbstractVector3D& v) const + {return !Close_Enough(*this,v,SMALL);} + + Logical + TestInstance() const; + + protected: + AbstractVector3D() + {} + AbstractVector3D( + Scalar x, + Scalar y, + Scalar z + ): + x(x), + y(y), + z(z) + {} + }; + + inline MemoryStream& + MemoryStream_Read( + MemoryStream* stream, + AbstractVector3D *output + ) + {return stream->ReadBytes(output, sizeof(*output));} + inline MemoryStream& + MemoryStream_Write( + MemoryStream* stream, + const AbstractVector3D *input + ) + {return stream->WriteBytes(input, sizeof(*input));} + + class LBE3Vector3D; + class TIVector3D; + class AffineMatrix; + class LinearMatrix; + class Matrix4x4; + class Point3D; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Vector3D ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class Vector3D: + public AbstractVector3D + { + public: + static const Vector3D + Identity; + + // + // Constructors + // + Vector3D() + {} + Vector3D( + Scalar x, + Scalar y, + Scalar z + ): + AbstractVector3D(x,y,z) + {} + + // + // Assignment operators + // + Vector3D& + operator=(const Vector3D &vector) + { + Check_Pointer(this); Check(&vector); + AbstractVector3D::operator=(vector); return *this; + } + Vector3D& + operator=(const LBE3Vector3D &vector); + Vector3D& + operator=(const TIVector3D &vector); + + // Comparison operator (for sorting by length, GDU 1/26/96) + Logical + operator>(const Vector3D &v) const + { + Check(this); Check(&v); + return LengthSquared() > v.LengthSquared(); + } + Logical + operator<(const Vector3D &v) const + { + Check(this); Check(&v); + return LengthSquared() < v.LengthSquared(); + } + + // + // Indexing operations + // + const Scalar& + operator[](size_t index) const + {Check_Pointer(this); Warn(index>Z_Axis); return (&x)[index];} + Scalar& + operator[](size_t index) + {Check_Pointer(this); Warn(index>Z_Axis); return (&x)[index];} + + // + // The following operators all assume that this points to the destination + // of the operation results + // + Vector3D& + Negate(const Vector3D &v); + + Vector3D& + Add( + const Vector3D& v1, + const Vector3D& v2 + ); + Vector3D& + AddScaled( + const Vector3D& v1, + const Vector3D& v2, + Scalar scale + ); + Vector3D& + operator+=(const Vector3D& v) + {return Add(*this,v);} + + Vector3D& + Subtract( + const Vector3D& v1, + const Vector3D& v2 + ); + Vector3D& + operator-=(const Vector3D& v) + {return Subtract(*this,v);} + + Scalar + operator*(const Vector3D& v) const + {Check(this); Check(&v); return x*v.x + y*v.y + z*v.z;} + + Vector3D& + Cross( + const Vector3D& v1, + const Vector3D& v2 + ); + + Vector3D& + Multiply( + const Vector3D& v, + Scalar Scale + ); + Vector3D& + operator*=(Scalar v) + {return Multiply(*this,v);} + + Vector3D& + Multiply( + const Vector3D& v1, + const Vector3D& v2 + ); + Vector3D& + operator*=(const Vector3D &v) + {return Multiply(*this,v);} + + Vector3D& + Divide( + const Vector3D& v, + Scalar scale + ); + Vector3D& + operator/=(Scalar v) + {return Divide(*this,v);} + + Vector3D& + Divide( + const Vector3D& v1, + const Vector3D& v2 + ); + Vector3D& + operator/=(const Vector3D &v) + {return Divide(*this,v);} + + // + // Transform operators + // + Vector3D& + Multiply( + const Vector3D &v, + const AffineMatrix &m + ); + Vector3D& + operator*=(const AffineMatrix &m) + {Vector3D src(*this); return Multiply(src,m);} + Vector3D& + MultiplyByInverse( + const Vector3D &v, + const LinearMatrix &m + ); + + // + // Miscellaneous functions + // + Scalar + LengthSquared() const + {Check(this); return x*x + y*y + z*z;} + Scalar + Length() const + {return Sqrt(LengthSquared());} + + Vector3D& + Normalize(const Vector3D &v); + + Vector3D& + Combine( + const Vector3D& v1, + Scalar t1, + const Vector3D& v2, + Scalar t2 + ); + + // + // Template support + // + Vector3D& + Lerp( + const Vector3D& v1, + const Vector3D& v2, + Scalar t + ) + {return Combine(v1,1.0f-t,v2,t);} + + // + // Support functions + // + friend ostream& + operator<<( + ostream& stream, + const Vector3D& v + ); + static Logical + TestClass(); + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~ Vector3D functions ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + void + Convert_From_Ascii( + const char *str, + Vector3D *vector_3D + ); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~ LBE3Vector3D ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class LBE3Vector3D: + public AbstractVector3D + { + public: + // + // Constructors + // + LBE3Vector3D() + {} + LBE3Vector3D( + Scalar x, + Scalar y, + Scalar z + ): + AbstractVector3D(x,y,z) + {} + + // + // Assignment operators + // + LBE3Vector3D& + operator=(const LBE3Vector3D &vector) + { + Check_Pointer(this); Check(&vector); + AbstractVector3D::operator=(vector); return *this; + } + LBE3Vector3D& + operator=(const Vector3D& vector); + LBE3Vector3D& + operator=(const TIVector3D &vector); + + // + // Support functions + // + friend ostream& + operator<<( + ostream &stream, + const LBE3Vector3D &vector + ); + static Logical + TestClass(); + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~ TIVector3D ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class TIVector3D: + public AbstractVector3D + { + public: + // + // Constructors + // + TIVector3D() + {} + TIVector3D( + Scalar x, + Scalar y, + Scalar z + ): + AbstractVector3D(x,y,z) + {} + + // + // Assignment operators + // + TIVector3D& + operator=(const TIVector3D &vector) + { + Check_Pointer(this); Check(&vector); + AbstractVector3D::operator=(vector); return *this; + } + TIVector3D& + operator=(const Vector3D &vector); + TIVector3D& + operator=(const LBE3Vector3D &vector); + + // + // Support functions + // + friend ostream& + operator<<( + ostream &stream, + const TIVector3D &vector + ); + static Logical + TestClass(); + }; + +#endif diff --git a/CODE/RP/MUNGA/VECTOR3D.TCP b/CODE/RP/MUNGA/VECTOR3D.TCP new file mode 100644 index 0000000..1b758dc --- /dev/null +++ b/CODE/RP/MUNGA/VECTOR3D.TCP @@ -0,0 +1,185 @@ +//===========================================================================// +// File: vector.tst // +// Project: MUNGA Brick: Math Library // +// Contents: Test code for vector 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 + Vector3D::TestClass() +{ + DEBUG_STREAM << "Starting Vector3D test...\n"; + + const Vector3D + a(Identity); + Vector3D + b; + const Vector3D + c(1.0f,2.0f,3.0f); + Vector3D + d(2.0f,3.0f,1.0f); + + Test(!a.x && !a.y && !a.z); + Test(c.x == 1.0f && c.y == 2.0f && c.z == 3.0f); + + Test(c[2] == c.z); + Test(a[1] == a.y); + + Test(Small_Enough(a)); + Test(!a); + + b = c; + Test(b.x == c.x && b.y == c.y && b.z == c.z); + Test(Close_Enough(b,c)); + Test(b == c); + Test(a != b); + + b.Negate(c); + Test(b == Vector3D(-c.x,-c.y,-c.z)); + + b.Add(c,d); + Test(b == Vector3D(c.x+d.x,c.y+d.y,c.z+d.z)); + b = c; + b += d; + Test(b == Vector3D(c.x+d.x,c.y+d.y,c.z+d.z)); + + b.Subtract(d,c); + Test(b == Vector3D(d.x-c.x,d.y-c.y,d.z-c.z)); + b = d; + b -= c; + Test(b == Vector3D(d.x-c.x,d.y-c.y,d.z-c.z)); + + Scalar f = c*d; + Test(f == c.x*d.x + c.y*d.y + c.z*d.z); + + b.Cross(c,d); + Test(b == Vector3D(c.y*d.z-c.z*d.y,c.z*d.x-c.x*d.z,c.x*d.y-c.y*d.x)); + + f = 2.0f; + b.Multiply(c,f); + Test(b == Vector3D(f*c.x,f*c.y,f*c.z)); + b = c; + b *= f; + Test(b == Vector3D(f*c.x,f*c.y,f*c.z)); + + b.Multiply(c,d); + Test(b == Vector3D(c.x*d.x,c.y*d.y,c.z*d.z)); + b = c; + b *= d; + Test(b == Vector3D(c.x*d.x,c.y*d.y,c.z*d.z)); + + b.Divide(c,f); + Test(b == Vector3D(c.x/f,c.y/f,c.z/f)); + b = c; + b /= f; + Test(b == Vector3D(c.x/f,c.y/f,c.z/f)); + + b.Divide(c,d); + Test(b == Vector3D(c.x/d.x,c.y/d.y,c.z/d.z)); + b = c; + b /= d; + Test(b == Vector3D(c.x/d.x,c.y/d.y,c.z/d.z)); + + AffineMatrix + m(True); + EulerAngles + r(PI_OVER_4,0.0f,0.0f); + m = r; + b.Multiply(c,m); + Test(b == Vector3D(c.x,c.y*m(1,1)+c.z*m(2,1),c.y*m(1,2)+c.z*m(2,2))); + b = c; + b *= m; + Test(b == Vector3D(c.x,c.y*m(1,1)+c.z*m(2,1),c.y*m(1,2)+c.z*m(2,2))); + + Test(!a.LengthSquared()); + f = c.LengthSquared(); + Test(f == c.x*c.x + c.y*c.y + c.z*c.z); + f = c.Length(); + Test(Close_Enough(f,Sqrt(c.x*c.x + c.y*c.y + c.z*c.z))); + b.Normalize(c); + Test(b == Vector3D(c.x/f, c.y/f, c.z/f)); + + b.Combine(c,2.0f,d,2.0f); + Test(b == Vector3D(2.0f*(c.x+d.x),2.0f*(c.y+d.y),2.0f*(c.z+d.z))); + + b.Lerp(c,d,0.5f); + Test(b == Vector3D(0.5f*(c.x+d.x),0.5f*(c.y+d.y),0.5f*(c.z+d.z))); + + LBE3Vector3D lbe3(1.0f,2.0f,3.0f); + TIVector3D ti(1.0f,2.0f,3.0f); + + b = lbe3; + Test(b == Vector3D(lbe3.x,lbe3.z,lbe3.y)); + b = ti; + Test(b == Vector3D(ti.x,ti.y,-ti.z)); + + return True; +} + +// +//########################################################################### +//########################################################################### +// +Logical + LBE3Vector3D::TestClass() +{ + DEBUG_STREAM << "Starting LBE3Vector3D test...\n"; + + const LBE3Vector3D + a(1.0f,2.0f,3.0f); + LBE3Vector3D + b; + + b = a; + Test(b == a); + + Vector3D v(1.0f,2.0f,3.0f); + b = v; + Test(b == LBE3Vector3D(v.x,v.z,v.y)); + + TIVector3D ti(1.0f,2.0f,3.0f); + b = ti; + Test(b == LBE3Vector3D(ti.x, -ti.z, ti.y)); + + return True; +} + +// +//########################################################################### +//########################################################################### +// +Logical + TIVector3D::TestClass() +{ + DEBUG_STREAM << "Starting TIVector3D test...\n"; + + const TIVector3D + a(1.0f,2.0f,3.0f); + TIVector3D + b; + + b = a; + Test(b == a); + + Vector3D v(1.0f,2.0f,3.0f); + b = v; + Test(b == TIVector3D(v.x,v.y,-v.z)); + + LBE3Vector3D lbe3(1.0f,2.0f,3.0f); + b = lbe3; + Test(b == TIVector3D(lbe3.x, lbe3.z, -lbe3.y)); + + return True; +} + diff --git a/CODE/RP/MUNGA/VECTOR4D.CPP b/CODE/RP/MUNGA/VECTOR4D.CPP new file mode 100644 index 0000000..377eec4 --- /dev/null +++ b/CODE/RP/MUNGA/VECTOR4D.CPP @@ -0,0 +1,393 @@ +//===========================================================================// +// File: vector4d.cc // +// Project: MUNGA Brick: Math Library // +// Contents: Implementation details for vector 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 // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(VECTOR4D_HPP) + #include +#endif + +#if !defined(MATRIX_HPP) +# include +#endif + +#if !defined(POINT3D_HPP) +# include +#endif + +#if !defined(AFFNMTRX_HPP) +# include +#endif + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Vector4D ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +const Vector4D + Vector4D::Identity(0.0f,0.0f,0.0f,0.0f); + +#if defined(USE_SIGNATURE) + int + Is_Signature_Bad(const volatile Vector4D *) + { + return False; + } +#endif + +// +//########################################################################### +//########################################################################### +// +Vector4D& + Vector4D::operator=(const Vector4D &v) +{ + Check_Pointer(this); + Check(&v); + + x = v.x; + y = v.y; + z = v.z; + w = v.w; + return *this; +} + +// +//########################################################################### +//########################################################################### +// +Vector4D& + Vector4D::operator=(const Vector3D &v) +{ + Check_Pointer(this); + Check(&v); + + x = v.x; + y = v.y; + z = v.z; + w = 0.0f; + return *this; +} + +// +//########################################################################### +//########################################################################### +// +Vector4D& + Vector4D::operator=(const Point3D &p) +{ + Check_Pointer(this); + Check(&p); + + x = p.x; + y = p.y; + z = p.z; + w = 1.0f; + return *this; +} + +// +//########################################################################### +//########################################################################### +// +Logical + Small_Enough(const Vector4D &V,Scalar e) +{ + Check(&V); + return + Small_Enough(V.x,e) + && Small_Enough(V.y,e) + && Small_Enough(V.z,e) + && Small_Enough(V.w,e); +} + +// +//########################################################################### +//########################################################################### +// +Logical + Close_Enough(const Vector4D &V1, const Vector4D &V2, Scalar e) +{ + Check(&V1); + Check(&V2); + return + Close_Enough(V1.x,V2.x,e) + && Close_Enough(V1.y,V2.y,e) + && Close_Enough(V1.z,V2.z,e) + && Close_Enough(V1.w,V2.w,e); +} + +// +//########################################################################### +//########################################################################### +// +Vector4D& + Vector4D::Negate(const Vector4D &V) +{ + Check_Pointer(this); + Check(&V); + + x = -V.x; + y = -V.y; + z = -V.z; + w = -V.w; + return *this; +} + +// +//########################################################################### +//########################################################################### +// +Vector4D& + Vector4D::Add(const Vector4D& V1,const Vector4D& V2) +{ + Check_Pointer(this); + Check(&V1); + Check(&V2); + + x = V1.x + V2.x; + y = V1.y + V2.y; + z = V1.z + V2.z; + w = V1.w + V2.w; + return *this; +} + +// +//########################################################################### +//########################################################################### +// +Vector4D& + Vector4D::Subtract(const Vector4D& V1,const Vector4D& V2) +{ + Check_Pointer(this); + Check(&V1); + Check(&V2); + + x = V1.x - V2.x; + y = V1.y - V2.y; + z = V1.z - V2.z; + w = V1.w - V2.w; + return *this; +} + +// +//########################################################################### +//########################################################################### +// +Vector4D& + Vector4D::Multiply(const Vector4D& V,Scalar Scale) +{ + Check_Pointer(this); + Check(&V); + + x = V.x * Scale; + y = V.y * Scale; + z = V.z * Scale; + w = V.w * Scale; + return *this; +} + +// +//########################################################################### +//########################################################################### +// +Vector4D& + Vector4D::Multiply(const Vector4D& V1,const Vector4D& V2) +{ + Check_Pointer(this); + Check(&V1); + Check(&V2); + + x = V1.x * V2.x; + y = V1.y * V2.y; + z = V1.z * V2.z; + w = V1.w * V2.w; + return *this; +} + +// +//########################################################################### +//########################################################################### +// +Vector4D& + Vector4D::Divide(const Vector4D& V,Scalar Scale) +{ + Check_Pointer(this); + Check(&V); + Verify(!Small_Enough(Scale)); + + x = V.x / Scale; + y = V.y / Scale; + z = V.z / Scale; + w = V.w / Scale; + return *this; +} + +// +//########################################################################### +//########################################################################### +// +Vector4D& + Vector4D::Divide(const Vector4D& V1,const Vector4D& V2) +{ + Check_Pointer(this); + Check(&V1); + Check(&V2); + + Verify(!Small_Enough(V1.x)); + Verify(!Small_Enough(V1.y)); + Verify(!Small_Enough(V1.z)); + Verify(!Small_Enough(V1.w)); + + x = V1.x / V2.x; + y = V1.y / V2.y; + z = V1.z / V2.z; + w = V1.w / V2.w; + return *this; +} + +// +//########################################################################### +//########################################################################### +// +Vector4D& + Vector4D::Multiply( + const Vector4D& v, + const AffineMatrix& m + ) +{ + Check_Pointer(this); + Check(&v); + Check(&m); + Verify(this != &v); + + x = v.x*m(0,0) + v.y*m(1,0) + v.z*m(2,0) + v.w*m(3,0); + y = v.x*m(0,1) + v.y*m(1,1) + v.z*m(2,1) + v.w*m(3,1); + z = v.x*m(0,2) + v.y*m(1,2) + v.z*m(2,2) + v.w*m(3,2); + w = v.w; + return *this; +} + +// +//########################################################################### +//########################################################################### +// +Vector4D& + Vector4D::Multiply( + const Vector4D& v, + const Matrix4x4& m + ) +{ + Check_Pointer(this); + Check(&v); + Check(&m); + Verify(this != &v); + + x = v.x*m(0,0) + v.y*m(1,0) + v.z*m(2,0) + v.w*m(3,0); + y = v.x*m(0,1) + v.y*m(1,1) + v.z*m(2,1) + v.w*m(3,1); + z = v.x*m(0,2) + v.y*m(1,2) + v.z*m(2,2) + v.w*m(3,2); + w = v.x*m(0,3) + v.y*m(1,3) + v.z*m(2,3) + v.w*m(3,3); + return *this; +} + +// +//########################################################################### +//########################################################################### +// +Vector4D& + Vector4D::Multiply( + const Vector3D& v, + const Matrix4x4& m + ) +{ + Check_Pointer(this); + Check(&v); + Check(&m); + + x = v.x*m(0,0) + v.y*m(1,0) + v.z*m(2,0); + y = v.x*m(0,1) + v.y*m(1,1) + v.z*m(2,1); + z = v.x*m(0,2) + v.y*m(1,2) + v.z*m(2,2); + w = v.x*m(0,3) + v.y*m(1,3) + v.z*m(2,3); + return *this; +} + +// +//########################################################################### +//########################################################################### +// +Vector4D& + Vector4D::Multiply( + const Point3D& v, + const Matrix4x4& m + ) +{ + Check_Pointer(this); + Check(&v); + Check(&m); + + x = v.x*m(0,0) + v.y*m(1,0) + v.z*m(2,0) + m(3,0); + y = v.x*m(0,1) + v.y*m(1,1) + v.z*m(2,1) + m(3,1); + z = v.x*m(0,2) + v.y*m(1,2) + v.z*m(2,2) + m(3,2); + w = v.x*m(0,3) + v.y*m(1,3) + v.z*m(2,3) + m(3,3); + return *this; +} + +// +//########################################################################### +//########################################################################### +// +Vector4D& + Vector4D::Combine( + const Vector4D& V1, + Scalar t1, + const Vector4D& V2, + Scalar t2 + ) +{ + Check_Pointer(this); + Check(&V1); + Check(&V2); + + x = V1.x*t1 + V2.x*t2; + y = V1.y*t1 + V2.y*t2; + z = V1.z*t1 + V2.z*t2; + w = V1.w*t1 + V2.w*t2; + return *this; +} + +// +//########################################################################### +//########################################################################### +// +ostream& + operator<<(ostream& Stream, const Vector4D& V) +{ + Check(&V); + return Stream << setprecision(4) << '<' << V.x << ',' + << V.y << ',' << V.z << ',' << V.w << '>'; +} + +// +//########################################################################### +//########################################################################### +// +Logical + Vector4D::TestInstance() const +{ + return True; +} + +#if defined(TEST_CLASS) +# include "vector4d.tcp" +#endif + + diff --git a/CODE/RP/MUNGA/VECTOR4D.HPP b/CODE/RP/MUNGA/VECTOR4D.HPP new file mode 100644 index 0000000..4d40d8e --- /dev/null +++ b/CODE/RP/MUNGA/VECTOR4D.HPP @@ -0,0 +1,229 @@ +//===========================================================================// +// File: vector4d.hh // +// Project: MUNGA Brick: Math Library // +// Contents: Interface specification for vector 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 // +//===========================================================================// + +#if !defined(VECTOR4D_HPP) +# define VECTOR4D_HPP + +# if !defined(SCALAR_HPP) +# include +# endif + + class Vector3D; + class Point3D; + class AffineMatrix; + class Matrix4x4; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Vector4D ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class Vector4D + { + public: + Scalar + x, + y, + z, + w; + + #if defined(USE_SIGNATURE) + friend int + Is_Signature_Bad(const volatile Vector4D *); + #endif + + static const Vector4D + Identity; + + // + // Constructors + // + Vector4D() + {} + Vector4D( + Scalar X, + Scalar Y, + Scalar Z, + Scalar W) + {x=X; y=Y; z=Z; w=W;} + + // + // Assignment operators + // + Vector4D& + operator=(const Vector4D &v); + Vector4D& + operator=(const Vector3D &v); + Vector4D& + operator=(const Point3D &p); + + // + // Index operators + // + const Scalar& + operator[](size_t index) const + {Check_Pointer(this); Warn(index>W_Axis); return (&x)[index];} + Scalar& + operator[](size_t index) + {Check_Pointer(this); Warn(index>W_Axis); return (&x)[index];} + + friend Logical + Small_Enough(const Vector4D &v,Scalar e=SMALL); + Logical + operator!() const + {return Small_Enough(*this);} + + // + // "Close-enough" comparison operators + // + friend Logical + Close_Enough( + const Vector4D &v1, + const Vector4D &v2, + Scalar e=SMALL + ); + Logical + operator==(const Vector4D& v) const + {return Close_Enough(*this,v);} + Logical + operator!=(const Vector4D& v) const + {return !Close_Enough(*this,v);} + + // + // The following operators all assume that this points to the destination + // of the operation results + // + Vector4D& + Negate(const Vector4D &v); + + Vector4D& + Add( + const Vector4D& v1, + const Vector4D& v2 + ); + Vector4D& + operator+=(const Vector4D& v) + {return Add(*this,v);} + + Vector4D& + Subtract( + const Vector4D& v1, + const Vector4D& v2 + ); + Vector4D& + operator-=(const Vector4D& v) + {return Subtract(*this,v);} + + Scalar + operator*(const Vector4D& v) const + {Check(this); return x*v.x + y*v.y + z*v.z + w*v.w;} + + Vector4D& + Multiply( + const Vector4D& v, + Scalar scale + ); + Vector4D& + operator*=(Scalar v) + {return Multiply(*this,v);} + + Vector4D& + Multiply( + const Vector4D& v1, + const Vector4D& v2 + ); + Vector4D& + operator*=(const Vector4D &v) + {return Multiply(*this,v);} + + Vector4D& + Divide( + const Vector4D& v, + Scalar scale + ); + Vector4D& + operator/=(Scalar v) + {return Divide(*this,v);} + + Vector4D& + Divide( + const Vector4D& v1, + const Vector4D& v2 + ); + Vector4D& + operator/=(const Vector4D &v) + {return Divide(*this,v);} + + // + // Transforms + // + Vector4D& + Multiply( + const Vector4D &v, + const AffineMatrix &m + ); + Vector4D& + operator*=(const AffineMatrix &M) + {Vector4D src(*this); return Multiply(src,M);} + Vector4D& Multiply( + const Vector4D &v, + const Matrix4x4 &m + ); + Vector4D& + operator*=(const Matrix4x4 &m) + {Vector4D src(*this); return Multiply(src,m);} + Vector4D& Multiply( + const Vector3D &v, + const Matrix4x4 &m + ); + Vector4D& Multiply( + const Point3D &p, + const Matrix4x4 &m + ); + + // + // Support functions + // + Scalar + LengthSquared() const + {return operator*(*this);} + Scalar + Length() const + {return Sqrt(LengthSquared());} + + Vector4D& + Combine( + const Vector4D& v1, + Scalar t1, + const Vector4D& v2, + Scalar t2 + ); + + Vector4D& + Lerp( + const Vector4D& v1, + const Vector4D& v2, + Scalar t + ) + {return Combine(v1,1.0f-t,v2,t);} + + friend ostream& + operator<<( + ostream& stream, + const Vector4D& v + ); + Logical + TestInstance() const; + static Logical + TestClass(); + }; + +#endif diff --git a/CODE/RP/MUNGA/VECTOR4D.TCP b/CODE/RP/MUNGA/VECTOR4D.TCP new file mode 100644 index 0000000..5a58591 --- /dev/null +++ b/CODE/RP/MUNGA/VECTOR4D.TCP @@ -0,0 +1,140 @@ +//===========================================================================// +// File: vector4d.tst // +// Project: MUNGA Brick: Math Library // +// Contents: Test code for vector 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 // +//===========================================================================// + +#if !defined(ROTATION_HPP) + #include +#endif + +// +//########################################################################### +//########################################################################### +// +Logical + Vector4D::TestClass() +{ + DEBUG_STREAM << "Starting Vector4D test...\n"; + + const Vector4D + a(Identity); + Vector4D + b; + const Vector4D + c(1.0f,2.0f,3.0f,4.0f); + Vector4D + d(2.0f,3.0f,1.0f,4.0f); + + Test(!a.x && !a.y && !a.z && !a.w); + Test(c.x == 1.0f && c.y == 2.0f && c.z == 3.0f && c.w == 4.0f); + + Test(c[2] == c.z); + Test(a[1] == a.y); + + Test(Small_Enough(a)); + Test(!a); + + b = c; + Test(b.x == c.x && b.y == c.y && b.z == c.z && b.w == c.w); + Test(Close_Enough(b,c)); + Test(b == c); + Test(a != b); + + Point3D p(3.0f,2.0f,1.0f); + b = p; + Test(b == Vector4D(p.x,p.y,p.z,1.0f)); + + Vector3D v(-1.0f,3.0f,2.0f); + b = v; + Test(b == Vector4D(v.x,v.y,v.z,0.0f)); + + b.Negate(c); + Test(b == Vector4D(-c.x,-c.y,-c.z,-c.w)); + + b.Add(c,d); + Test(b == Vector4D(c.x+d.x,c.y+d.y,c.z+d.z,c.w+d.w)); + b = c; + b += d; + Test(b == Vector4D(c.x+d.x,c.y+d.y,c.z+d.z,c.w+d.w)); + + b.Subtract(d,c); + Test(b == Vector4D(d.x-c.x,d.y-c.y,d.z-c.z,d.w-c.w)); + b = d; + b -= c; + Test(b == Vector4D(d.x-c.x,d.y-c.y,d.z-c.z,d.w-c.w)); + + Scalar f = c*d; + Test(f == c.x*d.x + c.y*d.y + c.z*d.z + c.w*d.w); + + f = 2.0f; + b.Multiply(c,f); + Test(b == Vector4D(f*c.x,f*c.y,f*c.z,f*c.w)); + b = c; + b *= f; + Test(b == Vector4D(f*c.x,f*c.y,f*c.z,f*c.w)); + + b.Multiply(c,d); + Test(b == Vector4D(c.x*d.x,c.y*d.y,c.z*d.z,c.w*d.w)); + b = c; + b *= d; + Test(b == Vector4D(c.x*d.x,c.y*d.y,c.z*d.z,c.w*d.w)); + + b.Divide(c,f); + Test(b == Vector4D(c.x/f,c.y/f,c.z/f,c.w/f)); + b = c; + b /= f; + Test(b == Vector4D(c.x/f,c.y/f,c.z/f,c.w/f)); + + b.Divide(c,d); + Test(b == Vector4D(c.x/d.x,c.y/d.y,c.z/d.z,c.w/d.w)); + b = c; + b /= d; + Test(b == Vector4D(c.x/d.x,c.y/d.y,c.z/d.z,c.w/d.w)); + + AffineMatrix m; + EulerAngles r(PI_OVER_4,0.0f,0.0f); + m = r; + m = p; + b.Multiply(c,m); + Test(b == Vector4D(c.x+c.w*m(3,0),c.y*m(1,1)+c.z*m(2,1)+c.w*m(3,1),c.y*m(1,2)+c.z*m(2,2)+c.w*m(3,2),c.w)); + b = c; + b *= m; + Test(b == Vector4D(c.x+c.w*m(3,0),c.y*m(1,1)+c.z*m(2,1)+c.w*m(3,1),c.y*m(1,2)+c.z*m(2,2)+c.w*m(3,2),c.w)); + + Matrix4x4 m2; + m2 = m; + b.Multiply(c,m2); + Test(b == Vector4D(c.x+c.w*m2(3,0),c.y*m2(1,1)+c.z*m2(2,1)+c.w*m2(3,1),c.y*m2(1,2)+c.z*m2(2,2)+c.w*m2(3,2),c.w)); + b = c; + b *= m2; + Test(b == Vector4D(c.x+c.w*m2(3,0),c.y*m2(1,1)+c.z*m2(2,1)+c.w*m2(3,1),c.y*m2(1,2)+c.z*m2(2,2)+c.w*m2(3,2),c.w)); + + b.Multiply(v,m2); + Test(b == Vector4D(v.x,v.y*m2(1,1)+v.z*m2(2,1),v.y*m2(1,2)+v.z*m2(2,2),0.0f)); + b.Multiply(p,m2); + Test(b == Vector4D(p.x+m2(3,0),p.y*m2(1,1)+p.z*m2(2,1)+m2(3,1),p.y*m2(1,2)+p.z*m2(2,2)+m2(3,2),1.0f)); + + Test(!a.LengthSquared()); + f = c.LengthSquared(); + Test(f == c.x*c.x + c.y*c.y + c.z*c.z + c.w*c.w); + f = c.Length(); + Test(Close_Enough(f,Sqrt(c.LengthSquared()))); + + b.Combine(c,2.0f,d,2.0f); + Test(b == Vector4D(2.0f*(c.x+d.x),2.0f*(c.y+d.y),2.0f*(c.z+d.z),2.0f*(c.w+d.w))); + + b.Lerp(c,d,0.5f); + Test(b == Vector4D(0.5f*(c.x+d.x),0.5f*(c.y+d.y),0.5f*(c.z+d.z),0.5f*(c.w+d.w))); + + return True; +} + diff --git a/CODE/RP/MUNGA/VERIFY.HPP b/CODE/RP/MUNGA/VERIFY.HPP new file mode 100644 index 0000000..8ea27d1 --- /dev/null +++ b/CODE/RP/MUNGA/VERIFY.HPP @@ -0,0 +1,61 @@ +//===========================================================================// +// File: verify.hpp // +// Contents: verification fail routines // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 09/29/94 JMA Initial coding. // +// 11/01/94 JMA Made compatible with SGI CC // +// 11/03/94 ECH Made compatible with BC4.0 // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// PROPRIETARY AND CONFIDENTIAL // +//===========================================================================// + +#if !defined(VERIFY_HPP) +# define VERIFY_HPP + +# if defined(__BCPLUSPLUS__) + extern int + _matherr(struct exception *a); +# endif + + extern int + Fpu_Ok(); + extern void + Verify_Failed(char *message, char *file, int line); + extern void + Fail_To_Debugger(char *message, char *file, int line); + + class Signature + { + private: +# if DEBUG_LEVEL>0 + enum Mark + { + ok, + destroyed, + corrupted, + noMagic=(int)0xAB135795L, + magic=(int)0xFFED1231L + } mark; +# endif + + protected: + Signature(); + ~Signature(); + + public: + friend int + Is_Signature_Bad(const volatile Signature *p); + }; + +# if defined(USE_SIGNATURE) +# define SIGNATURED : public Signature +# else +# define SIGNATURED +# define Is_Signature_Bad(p) (False) +# endif + +#endif + diff --git a/CODE/RP/MUNGA/VIDREND.CPP b/CODE/RP/MUNGA/VIDREND.CPP new file mode 100644 index 0000000..8ef109f --- /dev/null +++ b/CODE/RP/MUNGA/VIDREND.CPP @@ -0,0 +1,283 @@ +//===========================================================================// +// File: vidrend.cc // +// Project: MUNGA Brick: Video Renderer Manager // +// Contents: Interface specification Video Renderer Manager // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 01/11/95 GAC Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(VIDREND_HPP) +# include +#endif + +#if !defined(APP_HPP) + #include +#endif + +#if !defined(ENTITY_HPP) + #include +#endif + +#if defined(USE_ONE_VIDEO_TRACE) || defined(TRACE_VIDEO_RENDERER) + BitTrace Video_Renderer("Video Renderer"); +#endif + +#if !defined(USE_ONE_VIDEO_TRACE) +# if defined(TRACE_VIDEO_BECOME_INTERESTING) + BitTrace Video_Become_Interesting("Video Become Interesting"); +# endif + +# if defined(TRACE_VIDEO_BECOME_UNINTERESTING) + BitTrace Video_Become_Uninteresting("Video Become Uninteresting"); +# endif +#endif + +// +//############################################################################# +// Constructor for the video renderer +//############################################################################# +// +VideoRenderer::VideoRenderer( + RendererRate calibration_rate, + RendererComplexity calibration_complexity, + RendererPriority calibration_priority, + InterestType interest_type, + InterestDepth depth_calibration +): + Renderer( + calibration_rate, + calibration_complexity, + calibration_priority, + interest_type, + depth_calibration + ) +{ + Disconnected_Eye = False; +} +// +//############################################################################# +// Destructor for the video renderer +//############################################################################# +// +VideoRenderer::~VideoRenderer() +{ +} +// +//############################################################################# +// This creates the data structures and loads up data for an entity that has +// become interesting to the renderer. +//############################################################################# +// +void + VideoRenderer::NotifyOfNewInterestingEntity(Entity *interesting_entity) +{ + ResourceDescription + *video_resource; + ResourceFile + *this_resource_file; + ResourceDescription::ResourceID + this_resource_ID; + ViewFrom + view_this_entity_from; + // + // Check the newly interesting entity, then determine what kind of view we want + // to construct for it by seeing if it is the linked entity and checking to + // see if the eye is disconnected at a higher renderer level. + // + SET_VIDEO_BECOME_INTERESTING(); + Check(interesting_entity); + if(Disconnected_Eye) + { + view_this_entity_from = outsideEntity; + } + else + { + if(interesting_entity == GetLinkedEntity()) + { + view_this_entity_from = insideEntity; + } + else + { + view_this_entity_from = outsideEntity; + } + } + // + // Try to fetch this entity's video resource, if there isn't one, we still + // call make renderables as something up above us may have code to construct + // some effects independant of the resource file. + // + Check(application); + this_resource_file = application->GetResourceFile(); + Check(this_resource_file); + this_resource_ID = interesting_entity->GetResourceID(); + video_resource = this_resource_file->SearchList( + this_resource_ID, + ResourceDescription::VideoModelResourceType); + // + // Call the make renderables process to convert the resource script into a + // set of renderables for this entity. + // + if (video_resource) + { + video_resource->Lock(); + } + MakeEntityRenderables( + interesting_entity, + video_resource, + view_this_entity_from + ); + if (video_resource) + { + video_resource->Unlock(); + } + + CLEAR_VIDEO_BECOME_INTERESTING(); +} +// +//############################################################################# +// This handles killing off of an entity that has become uninteresting. +//############################################################################# +// +void + VideoRenderer::NotifyOfBecomingUninterestingEntity(Entity *uninteresting_entity) +{ + SET_VIDEO_BECOME_UNINTERESTING(); + // + // Destroy the dynamic entities that go with this uninteresting Entity + // in the reverse order that they were created. + // + { + Entity::DynamicVideoSocketIterator + iterator(uninteresting_entity); + Component + *component; + + Check(&iterator); + iterator.Last(); + while ((component = iterator.ReadAndPrevious()) != NULL) + { + Unregister_Object(component); + delete component; + } + } + + // + // Destroy the static entities that go with this uninteresting Entity + // in the reverse order that they were created. + // + { + Entity::StaticVideoSocketIterator + iterator(uninteresting_entity); + Component + *component; + + Check(&iterator); + iterator.Last(); + while ((component = iterator.ReadAndPrevious()) != NULL) + { + Unregister_Object(component); + delete component; + } + } + + #if 0 + // + // Destroy all the static and dynamic entities that go with this uninteresting Entity + // in the same order they were created. This caused some problems for DPL in the past + // but it may no longer be the case. + // + + Entity::DynamicVideoSocketIterator iterator(uninteresting_entity); + iterator.DeletePlugs(); + + Entity::StaticVideoSocketIterator static_iterator(uninteresting_entity); + static_iterator.DeletePlugs(); + + uninteresting_entity->DeleteVideoWatchers(); + #endif + + CLEAR_VIDEO_BECOME_UNINTERESTING(); +} +// +//############################################################################# +// Execute Method, performs the rendering of one frame +//############################################################################# +// +void + VideoRenderer::ExecuteImplementation( + RendererComplexity, + RendererOrigin::InterestingEntityIterator * + ) +{ + Tell("VideoRenderer::ExecuteImplementation has been called\n"); +} +// +//############################################################################# +// This process is supposed to make the renderables for an object, when a higher +// level of this virtual can't figure out how to make something it calls down +// to the level below it. If we reach here then nobody could figure out what +// to do so we can print an error or information message. +//############################################################################# +// +void + VideoRenderer::MakeEntityRenderables( + Entity* my_entity, // The entity we are dealing with + ResourceDescription*, // Pointer to the video resource + ViewFrom) // Type of reference (inside/outside...etc.) +{ + switch (my_entity->GetClassID()) + { + // + // Scorezones are allowed to have no graphics. + // + case ScoreZoneClassID: + break; + // + // Default case complains about missing graphics + // + default: + DEBUG_STREAM<<"Entity "<entityID<<" class"<GetClassID(); + DEBUG_STREAM<<" couldn't figure out how to MakeEntityRenderables\n"; + break; + } +} +// +//############################################################################# +// Startup the implementation of the Division video renderer +//############################################################################# +// +void + VideoRenderer::LoadMissionImplementation(Mission*) +{ + Tell("VideoRenderer::StartImplementation has been called\n"); +} +void + VideoRenderer::ShutdownImplementation() +{ + Tell("VideoRenderer::StopImplementation has been called\n"); +} +void + VideoRenderer::SuspendImplementation() +{ + Tell("VideoRenderer::SuspendImplementation has been called\n"); +} +void + VideoRenderer::ResumeImplementation() +{ + Tell("VideoRenderer::ResumeImplementation has been called\n"); +} + +Logical + VideoRenderer::TestInstance() const +{ + return IsDerivedFrom(ClassDerivations); +} diff --git a/CODE/RP/MUNGA/VIDREND.HPP b/CODE/RP/MUNGA/VIDREND.HPP new file mode 100644 index 0000000..5559fc5 --- /dev/null +++ b/CODE/RP/MUNGA/VIDREND.HPP @@ -0,0 +1,150 @@ +//===========================================================================// +// File: vidrend.hh // +// Project: MUNGA Brick: Video Renderer Manager // +// Contents: Interface specification Video Renderer Manager // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 01/11/95 GAC Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(VIDREND_HPP) +# define VIDREND_HPP + +# if !defined(SLOT_HPP) +# include +# endif + +# if !defined(CHAIN_HPP) +# include +# endif + +# if !defined(RENDERER_HPP) +# include +# endif + +# if defined(TRACE_VIDEO_RENDERER) || defined(USE_ONE_VIDEO_TRACE) + extern BitTrace Video_Renderer; +# endif + +# if defined(TRACE_VIDEO_RENDERER) +# define SET_VIDEO_RENDERER() Video_Renderer.Set() +# define CLEAR_VIDEO_RENDERER() Video_Renderer.Clear() +# else +# define SET_VIDEO_RENDERER() +# define CLEAR_VIDEO_RENDERER() +# endif + +# if defined(TRACE_VIDEO_BECOME_INTERESTING) +# if defined(USE_ONE_VIDEO_TRACE) +# define SET_VIDEO_BECOME_INTERESTING() Video_Renderer.Set() +# define CLEAR_VIDEO_BECOME_INTERESTING() Video_Renderer.Clear() +# else + extern BitTrace Video_Become_Interesting; +# define SET_VIDEO_BECOME_INTERESTING() Video_Become_Interesting.Set() +# define CLEAR_VIDEO_BECOME_INTERESTING()\ + Video_Become_Interesting.Clear() +# endif +# else +# define SET_VIDEO_BECOME_INTERESTING() +# define CLEAR_VIDEO_BECOME_INTERESTING() +# endif + +# if defined(TRACE_VIDEO_BECOME_UNINTERESTING) +# if defined(USE_ONE_VIDEO_TRACE) +# define SET_VIDEO_BECOME_UNINTERESTING() Video_Renderer.Set() +# define CLEAR_VIDEO_BECOME_UNINTERESTING() Video_Renderer.Clear() +# else + extern BitTrace Video_Become_Uninteresting; +# define SET_VIDEO_BECOME_UNINTERESTING()\ + Video_Become_Uninteresting.Set() +# define CLEAR_VIDEO_BECOME_UNINTERESTING()\ + Video_Become_Uninteresting.Clear() +# endif +# else +# define SET_VIDEO_BECOME_UNINTERESTING() +# define CLEAR_VIDEO_BECOME_UNINTERESTING() +# endif + + class VideoRenderer: + public Renderer + { + public: + VideoRenderer( + RendererRate calibration_rate, + RendererComplexity calibration_complexity, + RendererPriority calibration_priority, + InterestType interest_type, + InterestDepth depth_calibration + ); + ~VideoRenderer(); + + Logical + TestInstance() const; + + // + //-------------------------------------------------------------------- + // NotifyOfNewInterestingEntity + // + // This method tells the renderer that a new entity will be in it's + // interest list the next time the Execute method is called. + //-------------------------------------------------------------------- + // + void + NotifyOfNewInterestingEntity(Entity *interesting_entity); + + void + NotifyOfBecomingUninterestingEntity(Entity *uninteresting_entity); + + private: + void + LoadMissionImplementation(Mission *mission); + void + ShutdownImplementation(); + void + SuspendImplementation(); + void + ResumeImplementation(); + void + ExecuteImplementation( + RendererComplexity complexity_update, + RendererOrigin::InterestingEntityIterator *iterator + ); + + protected: + + enum ViewFrom + { + outsideEntity, // The external view of an entity will be displayed + insideEntity, // The internal view of the entity will be displayed + collisionEntity // The collision solids of the entity will be displayed + }; + + // + //-------------------------------------------------------------------- + // MakeEntityRenderables + // + // This method is called to create the renderables for a given entity + // it must be provided by the hardware specific renderer. + //-------------------------------------------------------------------- + // + virtual void + MakeEntityRenderables( + Entity*, // The entity we are dealing with + ResourceDescription*, // Pointer to the video resource + ViewFrom // Type of reference (inside/outside...etc.) + ); + + Logical + Disconnected_Eye; // If this is true, we will construct an outside + // version of the viewpoint entity. This is so + // higher level renderers can fix the eye in one + // spot and watch the viewpoint entity drive around. + + }; + +#endif diff --git a/CODE/RP/MUNGA/VIDREND.TCP b/CODE/RP/MUNGA/VIDREND.TCP new file mode 100644 index 0000000..1a0f020 --- /dev/null +++ b/CODE/RP/MUNGA/VIDREND.TCP @@ -0,0 +1,21 @@ +//===========================================================================// +// File: vidrend.tst // +// Project: MUNGA Brick: Video Renderer Manager // +// Contents: Interface specification Video Renderer Manager // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 01/11/95 GAC Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +Logical + VideoRenderer::TestClass() + +{ + Tell("Starting VideoRenderer::TestClass\n"); + return False; +} diff --git a/CODE/RP/MUNGA/WATCHER.CPP b/CODE/RP/MUNGA/WATCHER.CPP new file mode 100644 index 0000000..a762577 --- /dev/null +++ b/CODE/RP/MUNGA/WATCHER.CPP @@ -0,0 +1,224 @@ +//===========================================================================// +// File: watcher.cc // +// 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 // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(WATCHER_HPP) +# include +#endif + +#if !defined(ENTITY_HPP) + #include +#endif + +#if !defined(CSTR_HPP) + #include +#endif + +#if !defined(OBJSTRM_HPP) + #include +#endif + +#if !defined(NAMELIST_HPP) + #include +#endif + +#if !defined(SUBSYSTM_HPP) + #include +#endif + +//############################################################################# +//########################## AttributeWatcher ########################### +//############################################################################# + +// +//############################################################################# +//############################################################################# +// +AttributeWatcher::~AttributeWatcher() +{ +} + +// +//############################################################################# +//############################################################################# +// +AttributeWatcher::AttributeWatcher( + PlugStream *stream, + Entity *entity +): + Component(stream) +{ + Check(stream); + Check(entity); + +#if 0 + // + // Get attribute ptr + // + int subsystem_ID; + DynamicMemoryStream_Read(stream, &subsystem_ID); + + Simulation *simulation; + if ((simulation = entity->GetSubsystem(subsystem_ID)) == NULL) + { + simulation = entity; + } + Check(simulation); + + Simulation::AttributeID attribute_ID; + DynamicMemoryStream_Read(stream, &attribute_ID); + attributePointer = simulation->GetAttributePointer(attribute_ID); + Check_Pointer(attributePointer); +#else + // + // HACK - Get attribute pointer using names + // + CString subsystem_name; + *stream >> subsystem_name; + + if ((simulation = entity->FindSubsystem(subsystem_name)) == NULL) + { + #if DEBUG_LEVEL>0 + { + CString entity_name("Entity"); + if (!(subsystem_name == entity_name)) + { + Dump(subsystem_name); + } + Verify(subsystem_name == entity_name); + } + #else + { + CString entity_name("Entity"); + if (!(subsystem_name == entity_name)) + { + DEBUG_STREAM << + "AttributeWatcher::AttributeWatcher - subsystem " << + subsystem_name << + "\n"; + Fail("AttributeWatcher::AttributeWatcher - subsystem not found\n"); + } + } + #endif + simulation = entity; + } + Check(simulation); + + CString attribute_name; + *stream >> attribute_name; + + #if DEBUG_LEVEL>2 + Tell("AttributeWatcher::AttributeWatcher - " << attribute_name << "\n"); + #endif + + attributePointer = simulation->GetAttributePointer(attribute_name); + + #if DEBUG_LEVEL>0 + if (attributePointer == NULL) + { + Dump(attribute_name); + } + #else + if (attributePointer == NULL) + { + DEBUG_STREAM << + "AttributeWatcher::AttributeWatcher - attribute " << + attribute_name << + "\n"; + Fail("AttributeWatcher::AttributeWatcher - attribute not found\n"); + } + #endif + + Check_Pointer(attributePointer); +#endif + + // + // Get other fields + // + *stream >> sendNotificationOnChange; + attributeChanged = False; +} + +// +//############################################################################# +// BuildFromPage +//############################################################################# +// +void + AttributeWatcher::BuildFromPage( + PlugStream *stream, + NameList *name_list, + ClassID class_ID, + ObjectID object_ID + ) +{ + Component::BuildFromPage(stream, name_list, class_ID, object_ID); + + // + // HACK - Store attribute pointer using names + // + MEM_STRM_WRITE_ENTRY(*stream, name_list, CString, subsystem); + MEM_STRM_WRITE_ENTRY(*stream, name_list, CString, attribute); + + // + // Store other fields + // + Logical send_notification_on_change = True; + *stream << send_notification_on_change; +} + +// +//############################################################################# +//############################################################################# +// +Logical + AttributeWatcher::TestInstance() const +{ + Component::TestInstance(); + Check(simulation); + Check_Pointer(attributePointer); + return True; +} + +// +//############################################################################# +//############################################################################# +// +Logical + AttributeWatcher::DidAttributeChange() +{ + if (attributeChanged) + { + attributeChanged = False; + return True; + } + return False; +} + +// +//############################################################################# +//############################################################################# +// +void + AttributeWatcher::SendNotificationOfChange() +{ + Fail("AttributeWatcher::SendNotificationOfChange - Should never reach here"); +} + +#ifdef TEST_CLASS +# include "watcher.tcp" +#endif + diff --git a/CODE/RP/MUNGA/WATCHER.HPP b/CODE/RP/MUNGA/WATCHER.HPP new file mode 100644 index 0000000..7471cc6 --- /dev/null +++ b/CODE/RP/MUNGA/WATCHER.HPP @@ -0,0 +1,337 @@ +//===========================================================================// +// File: watcher.hh // +// 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 // +//===========================================================================// + +#if !defined(WATCHER_HPP) +# define WATCHER_HPP + +# if !defined(CMPNNT_HPP) +# include +# endif + +# if !defined(SLOT_HPP) +# include +# endif + +# if !defined(MEMSTRM_HPP) +# include +# endif + + class PlugStream; + class Simulation; + class Entity; + + //########################################################################## + //########################### AttributeWatcher ####################### + //########################################################################## + + class AttributeWatcher: + public Component + { + public: + // + //----------------------------------------------------------------------- + // Destructor + //----------------------------------------------------------------------- + // + ~AttributeWatcher(); + + Logical + TestInstance() const; + + // + //----------------------------------------------------------------------- + // DidAttributeChange + // + // Returns True if attribute has changed since the last time + // DidAttributeChange was called. + //----------------------------------------------------------------------- + // + Logical + DidAttributeChange(); + + protected: + // + //----------------------------------------------------------------------- + // Constructor + //----------------------------------------------------------------------- + // + AttributeWatcher( + PlugStream *stream, + Entity *entity + ); + + // + //----------------------------------------------------------------------- + // SendNotificationOfChange + //----------------------------------------------------------------------- + // + virtual void + SendNotificationOfChange(); + + // + //----------------------------------------------------------------------- + // BuildFromPage + //----------------------------------------------------------------------- + // + static void + BuildFromPage( + PlugStream *stream, + NameList *name_list, + ClassID class_ID, + ObjectID object_ID + ); + + // + //----------------------------------------------------------------------- + // Protected data + //----------------------------------------------------------------------- + // + Simulation* + simulation; + void* + attributePointer; + Logical + attributeChanged; + Logical + sendNotificationOnChange; + }; + + //########################################################################## + //########################### AttributeWatcherOf ##################### + //########################################################################## + + template class AttributeWatcherOf: + public AttributeWatcher + { + public: + ~AttributeWatcherOf(); + + // + //----------------------------------------------------------------------- + // Accessors + //----------------------------------------------------------------------- + // + T + GetCurrentValue() + {return currentValue;} + T* + GetCurrentPointer() + {return ¤tValue;} + + // + //----------------------------------------------------------------------- + // Execute + //----------------------------------------------------------------------- + // + void + Execute(); + + // + //----------------------------------------------------------------------- + // PrimeWatcher + //----------------------------------------------------------------------- + // + void + PrimeWatcher(); + + protected: + // + //----------------------------------------------------------------------- + // Constructor + //----------------------------------------------------------------------- + // + AttributeWatcherOf( + PlugStream *stream, + Entity *entity + ); + + // + //----------------------------------------------------------------------- + // BuildFromPage + //----------------------------------------------------------------------- + // + static void + BuildFromPage( + PlugStream *stream, + NameList *name_list, + ClassID class_ID, + ObjectID object_ID + ); + + private: + // + //----------------------------------------------------------------------- + // InitializeCurrentValue + //----------------------------------------------------------------------- + // + void + InitializeCurrentValue(); + + // + //----------------------------------------------------------------------- + // GrabCurrentValue + //----------------------------------------------------------------------- + // + void + GrabCurrentValue(); + + // + //----------------------------------------------------------------------- + // DumpValue + //----------------------------------------------------------------------- + // + virtual void + DumpValue(const T *attribute_ptr); + + // + //----------------------------------------------------------------------- + // Private data + //----------------------------------------------------------------------- + // + T + currentValue; + #if DEBUG_LEVEL>0 + Logical + dumpValue; + #endif + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~ AttributeWatcherOf templates ~~~~~~~~~~~~~~~~~~~~ + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + template + AttributeWatcherOf::~AttributeWatcherOf() + { + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + template + AttributeWatcherOf::AttributeWatcherOf( + PlugStream *stream, + Entity *entity + ): + AttributeWatcher(stream, entity) + { + Check_Pointer(this); + + Logical dump_value; + + MemoryStream_Read(stream, &dump_value); + + #if DEBUG_LEVEL>0 + dumpValue = dump_value; + if (dumpValue) + { + Tell( + "AttributeWatcherOf::AttributeWatcherOf - " << + *(T*)attributePointer << + "\n" + ); + } + #endif + + InitializeCurrentValue(); + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + template void + AttributeWatcherOf::BuildFromPage( + PlugStream *stream, + NameList *name_list, + ClassID class_ID, + ObjectID object_ID + ) + { + Check(stream); + Check(name_list); + + AttributeWatcher::BuildFromPage(stream, name_list, class_ID, object_ID); + + // + // Store dump_value + // + MEM_STRM_WRITE_ENTRY(*stream, name_list, Logical, dump_value); + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + template void + AttributeWatcherOf::PrimeWatcher() + { + Check(this); + #if DEBUG_LEVEL>0 + if (dumpValue) + { + DumpValue((T*)attributePointer); + } + #endif + GrabCurrentValue(); + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + template void + AttributeWatcherOf::Execute() + { + Check(this); + + Check_Pointer(attributePointer); + if (!(currentValue == *(T*)attributePointer)) + { + #if DEBUG_LEVEL>0 + if (dumpValue) + { + DumpValue((T*)attributePointer); + } + #endif + GrabCurrentValue(); + } + Check_Fpu(); + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + template void + AttributeWatcherOf::InitializeCurrentValue() + { + Check_Pointer(attributePointer); + currentValue = *(T*)attributePointer; + Verify(currentValue == *(T*)attributePointer); + Check_Fpu(); + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + template void + AttributeWatcherOf::GrabCurrentValue() + { + InitializeCurrentValue(); + attributeChanged = True; + if (sendNotificationOnChange) + { + SendNotificationOfChange(); + } + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + #if DEBUG_LEVEL>0 + template void + AttributeWatcherOf::DumpValue(const T *attribute_ptr) + #else + template void + AttributeWatcherOf::DumpValue(const T*) + #endif + { + Check_Pointer(attribute_ptr); + Tell((void *)attribute_ptr << " = " << *attribute_ptr << "\n"); + } + +#endif + diff --git a/CODE/RP/MUNGA/WATCHER.TCP b/CODE/RP/MUNGA/WATCHER.TCP new file mode 100644 index 0000000..d0a8a45 --- /dev/null +++ b/CODE/RP/MUNGA/WATCHER.TCP @@ -0,0 +1,198 @@ +//===========================================================================// +// File: watcher.tst // +// Project: MUNGA Brick: // +// Contents: // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 01/03/94 ECH Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1994, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#include "entity.thp" + +#if 0 +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +class WatcherReceiver: + public Receiver +{ +//############################################################################# +// Shared Data Support +// +public: + SharedData* + GetSharedData() + {return (SharedData*)sharedData;} + + static Derivation ClassDerivations; + static SharedData DefaultData; + +//########################################################################## +// Message Support +// +private: + static const HandlerEntry MessageHandlerEntries[]; + +protected: + static MessageHandlerSet MessageHandlers; + +public: + void WatcherChangedHandler(WatcherChangedMessage *message); + +//########################################################################## +// Testing Support +// +public: + ReceiverAttributeWatcherOf + *linearOriginWatcher; + + void + Tester(); + +//########################################################################## +// Construction and Destruction +// +public: + WatcherReceiver(SharedData &virtual_data = DefaultData); + ~WatcherReceiver(); +}; + +//############################################################################# +// Shared Data Support +// +Derivation + WatcherReceiver::ClassDerivations(Entity::ClassDerivations,"WatcherReceiver"); + +WatcherReceiver::SharedData + WatcherReceiver::DefaultData( + WatcherReceiver::ClassDerivations, + WatcherReceiver::MessageHandlers + ); + +//############################################################################# +// Message Support +// +const Receiver::HandlerEntry + WatcherReceiver::MessageHandlerEntries[]= +{ + { + WatcherReceiver::WatcherChangedMessageID, + (WatcherReceiver::Handler)&WatcherReceiver::WatcherChangedHandler + } +}; + +WatcherReceiver::MessageHandlerSet + WatcherReceiver::MessageHandlers( + ELEMENTS(WatcherReceiver::MessageHandlerEntries), + WatcherReceiver::MessageHandlerEntries, + WatcherReceiver::MessageHandlers + ); + +void + WatcherReceiver::WatcherChangedHandler(WatcherChangedMessage *message) +{ + Check(message); + Check(message->changedWatcher); + Check(message->changedWatcher->GetLinkedSystem()); + Verify( + message->changedWatcher->GetAttributeID() == + Entity::LocalOriginAttributeID + ); +}; + +//############################################################################# +// Construction and Destruction +// + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +WatcherReceiver::WatcherReceiver(WatcherReceiver::SharedData &virtual_data): + Receiver(TrivialReceiverClassID, virtual_data) +{ + linearOriginWatcher = NULL; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +WatcherReceiver::~WatcherReceiver() +{ +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + WatcherReceiver::Tester() +{ +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + AttributeWatcher::TestClass() +{ + DEBUG_STREAM << "Starting Watcher test...\n"; + + // + //-------------- + // Create testEntity + //-------------- + // + TestEntity::MakeMessage + message( + TestEntity::MakeMessageID, + sizeof(TestEntity::MakeMessage), + TestEntity::TrivialEntityClassID, + 0, + TestEntity::DefaultFlags, + Origin::Identity + ); + TestEntity *testEntity = TestEntity::Make(&message); + Register_Object(testEntity); + + // + //------------------------ + // Create watcher receiver + //------------------------ + // + WatcherReceiver + watcherReceiver; + + // + //--------------- + // Create watcher + //--------------- + // + watcherReceiver.linearOriginWatcher = + new ReceiverAttributeWatcherOf( + testEntity, + Entity::LocalOriginAttributeID, + True, + &watcherReceiver + ); + Register_Object(watcherReceiver.linearOriginWatcher); + + // + //------------- + // Test watcher + //------------- + // + testEntity->Tester(); + Test(testEntity->localOrigin.linearPosition == Point3D(2.0f,2.0f,2.0f)); + Check(application); + application->ProcessAllEvents(); + + // + //----------------- + // Test destruction + //----------------- + // + Unregister_Object(testEntity); + delete testEntity; + + return True; +} +#endif diff --git a/CODE/RP/MUNGA/WRHOUS.CPP b/CODE/RP/MUNGA/WRHOUS.CPP new file mode 100644 index 0000000..b4fc268 --- /dev/null +++ b/CODE/RP/MUNGA/WRHOUS.CPP @@ -0,0 +1,185 @@ +//===========================================================================// +// File: wrhous.cc // +// Project: MUNGA Brick: Gauge Renderer Manager // +// Contents: // +// This object manages creation and deletion of dynamically-created objects // +// of which only on instantiation should exist. It is currently used // +// only by the gauge renderer. // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 08/01/95 CPB Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. All rights reserved // +// PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(WRHOUS_HPP) +# include +#endif + +// #define LOCAL_TEST + +#if defined(LOCAL_TEST) +# define Test_Tell(n) DEBUG_STREAM << n +#else +# define Test_Tell(n) +#endif + +//####################################################################### +// WarehouseObject +//####################################################################### +WarehouseObject::WarehouseObject( + const char *new_name, + Logical keep_forever +): + Plug(WarehouseObject::WarehouseObjectClassID) +{ + Test_Tell("WarehouseObject::WarehouseObject(" << new_name << "\n"); + Str_Copy(name, new_name, sizeof(name)); + resourceID = ResourceDescription::NullResourceType; + + referenceCount = 1; // at least one reference exists, otherwise no obj + keepForever = keep_forever; + Check_Fpu(); +} + +WarehouseObject::WarehouseObject( + ResourceDescription::ResourceID new_resource_id, + Logical keep_forever +): + Plug(WarehouseObject::WarehouseObjectClassID) +{ + Test_Tell("WarehouseObject::WarehouseObject(" << new_resource_id << "\n"); + name[0] = '\0'; + resourceID = new_resource_id; + + referenceCount = 1; // at least one reference exists, otherwise no obj + keepForever = keep_forever; + Check_Fpu(); +} + +WarehouseObject::~WarehouseObject() +{ + Check(this); + Check_Fpu(); +} + +Logical + WarehouseObject::TestInstance() const +{ + return True; +} + +//####################################################################### +// WarehouseBin +//####################################################################### +WarehouseBin::WarehouseBin() : + Node(WarehouseBin::WarehouseBinClassID), + instanceList(this) +{ + Test_Tell("WarehouseBin::WarehouseBin()\n"); + Check_Pointer(this); + + Check_Fpu(); +} + +WarehouseBin::~WarehouseBin() +{ + Check(this); +} + +Logical + WarehouseBin::TestInstance() const +{ + return True; +} + +WarehouseObject * + WarehouseBin::Find(const char *old_name) +{ + Check(this); + + ChainIteratorOf + i(instanceList); + + WarehouseObject + *object_instance; + + while ((object_instance=i.ReadAndNext()) != NULL) + { + Check(object_instance); + if (stricmp(object_instance->name, old_name) == 0) + { + Check_Fpu(); + return object_instance; + } + } + Check_Fpu(); + return NULL; +} + +WarehouseObject * + WarehouseBin::Find(ResourceDescription::ResourceID old_resource_id) +{ + Check(this); + + ChainIteratorOf + i(instanceList); + + WarehouseObject + *object_instance; + + while ((object_instance=i.ReadAndNext()) != NULL) + { + Check(object_instance); + if (object_instance->resourceID == old_resource_id) + { + Check_Fpu(); + return object_instance; + } + } + Check_Fpu(); + return NULL; +} + +//####################################################################### +// Warehouse +//####################################################################### +Warehouse::Warehouse() +{ + Test_Tell("Warehouse::Warehouse\n"); + Check_Pointer(this); +} + +Warehouse::~Warehouse() +{ + Test_Tell("Warehouse::~Warehouse\n"); + Check(this); + Purge(); + Check_Fpu(); +} + +void + Warehouse::Purge() +{ + Check(this); + + bitMapBin.Purge(); + pixelMap8Bin.Purge(); + palette8Bin.Purge(); + + Check_Fpu(); +} + + +Logical + Warehouse::TestInstance() const +{ + Check_Pointer(this); + return True; +} + diff --git a/CODE/RP/MUNGA/WRHOUS.HPP b/CODE/RP/MUNGA/WRHOUS.HPP new file mode 100644 index 0000000..1ace6f2 --- /dev/null +++ b/CODE/RP/MUNGA/WRHOUS.HPP @@ -0,0 +1,481 @@ +//===========================================================================// +// File: wrhous.hh // +// Project: MUNGA Brick: Gauge Renderer Manager // +// Contents: // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 08/01/95 CPB Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. All rights reserved // +// PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(WRHOUS_HPP) +# define WRHOUS_HPP + +# if !defined(RESOURCE_HPP) +# include +# endif + +# if !defined(CHAIN_HPP) +# include +# endif + +# if !defined(NODE_HPP) +# include +# endif + +# if !defined(PLUG_HPP) +# include +# endif + +# if !defined(GRAPH2D_HPP) +# include +# endif + + //####################################################################### + // WarehouseObject + //####################################################################### + class WarehouseObject : + public Plug + { + friend class WarehouseBin; + public: + WarehouseObject( + const char *new_name, + Logical keep_forever = False + ); + + WarehouseObject( + ResourceDescription::ResourceID new_resource_id, + Logical keep_forever = False + ); + + ~WarehouseObject(); + + Logical + TestInstance() const; + + void + SetKeepForever(Logical keep_forever) + { + Check(this); + keepForever = keep_forever; + } + + Logical + GetKeepForever() + { + Check(this); + return keepForever; + } + + void + Reference() + { + Check(this); + ++referenceCount; + } + + Logical + Unreference() // returns True if no longer referenced + { + Check(this); + return (Logical) ((--referenceCount) <= 0); + } + + + protected: + char + name[32]; + ResourceDescription::ResourceID + resourceID; + int + referenceCount; + Logical + keepForever; + }; + + //----------------------------------------------------------------------- + // WarehouseObjectOf + //----------------------------------------------------------------------- + template class WarehouseObjectOf: + public WarehouseObject + { + public: + WarehouseObjectOf( + const char *new_name, + T *new_pointer, + Logical keep_forever = False + ); + + WarehouseObjectOf( + ResourceDescription::ResourceID new_resource_id, + T *new_pointer, + Logical keep_forever = False + ); + + virtual ~WarehouseObjectOf(); + + Logical + TestInstance() const; + + T + *dataPointer; + }; + + template + WarehouseObjectOf::WarehouseObjectOf( + const char *new_name, + T *new_pointer, + Logical keep_forever + ): + WarehouseObject(new_name, keep_forever) + { + Register_Pointer(new_pointer); + dataPointer = new_pointer; + } + + template + WarehouseObjectOf::WarehouseObjectOf( + ResourceDescription::ResourceID new_resource_id, + T *new_pointer, + Logical keep_forever + ): + WarehouseObject(new_resource_id, keep_forever) + { + Register_Pointer(new_pointer); + dataPointer = new_pointer; + } + + template WarehouseObjectOf::~WarehouseObjectOf() + { + Check(dataPointer); + Unregister_Pointer(dataPointer); + delete dataPointer; + dataPointer = NULL; // safety check + } + + template Logical + WarehouseObjectOf::TestInstance() const + { + Check_Pointer(this); + Check_Pointer(dataPointer); + return WarehouseObject::TestInstance(); + } + + //####################################################################### + // WarehouseBin + //####################################################################### + class WarehouseBin : + public Node + { + public: + WarehouseBin(); + ~WarehouseBin(); + Logical + TestInstance() const; + void + Add(WarehouseObject *new_object) + { + Check(this); + Check_Pointer(new_object); + instanceList.Add(new_object); + } + + void + Remove(void *old_object); + WarehouseObject * + Find(const char *name); + WarehouseObject * + Find(ResourceDescription::ResourceID new_resource_id); + + protected: + ChainOf + instanceList; + }; + + + template class WarehouseBinOf : + public WarehouseBin + { + friend class WarehouseBin; + public: + WarehouseBinOf(); + ~WarehouseBinOf(); + + Logical + TestInstance() const; + + T* + Get( + const char *name, + Logical keep_forever = False + ); + + T* + Get( + ResourceDescription::ResourceID new_resource_id, + Logical keep_forever = False + ); + + T* + GetIfAlreadyExists( + const char *name + ); + + T* + GetIfAlreadyExists( + ResourceDescription::ResourceID new_resource_id + ); + + void + Release( + const char *name + ); + void + Release( + ResourceDescription::ResourceID new_resource_id + ); + + void + Purge(); + }; + + //-------------------------------------------------------------------- + template Logical + WarehouseBinOf::TestInstance() const + { + Check_Pointer(this); + return WarehouseBin::TestInstance(); + } + + //-------------------------------------------------------------------- + template + WarehouseBinOf::WarehouseBinOf() + : WarehouseBin() + { + } + + //-------------------------------------------------------------------- + template WarehouseBinOf::~WarehouseBinOf() + { + Check(this); + + Purge(); // remove EVERYTHING unconditionally + Check_Fpu(); + } + + //-------------------------------------------------------------------- + template T* + WarehouseBinOf::Get( + const char *name, + Logical keep_forever + ) + { + Check(this); + + WarehouseObjectOf + *instance = + (WarehouseObjectOf*) WarehouseBin::Find(name); + + if (instance != NULL) + { + instance->Reference(); + return instance->dataPointer; + } + else + { + T *new_object = T::Make(name); + + if (new_object != NULL) + { + Check(new_object); + // new_object is registered in the warehouseObject creator + instance = new WarehouseObjectOf( + name, + new_object, + keep_forever + ); + Register_Object(instance); + WarehouseBin::Add(instance); + return new_object; + } + } + return NULL; + } + + template T* + WarehouseBinOf::Get( + ResourceDescription::ResourceID new_resource_id, + Logical keep_forever + ) + { + Check(this); + + WarehouseObjectOf + *instance = + (WarehouseObjectOf*) WarehouseBin::Find(new_resource_id); + + if (instance != NULL) + { + instance->Reference(); + return instance->dataPointer; + } + else + { + T *new_object = T::Make(new_resource_id); + + if (new_object != NULL) + { + Check(new_object); + // new_object is registered in the warehouseObject creator + instance = new WarehouseObjectOf( + new_resource_id, + new_object, + keep_forever + ); + Register_Object(instance); + WarehouseBin::Add(instance); + return new_object; + } + } + return NULL; + } + + //-------------------------------------------------------------------- + template T* + WarehouseBinOf::GetIfAlreadyExists( + const char *name + ) + { + Check(this); + Check_Pointer(name); + + WarehouseObjectOf + *warehouse_object = (WarehouseObjectOf *) WarehouseBin::Find(name); + if (warehouse_object != NULL) + { + Check(warehouse_object); + warehouse_object->Reference(); + + Check(warehouse_object->dataPointer); + return warehouse_object->dataPointer; + } + return NULL; + } + + template T* + WarehouseBinOf::GetIfAlreadyExists( + ResourceDescription::ResourceID id + ) + { + Check(this); + + WarehouseObjectOf + *warehouse_object = (WarehouseObjectOf*) WarehouseBin::Find(id); + if (warehouse_object != NULL) + { + Check(warehouse_object); + warehouse_object->Reference(); + + Check(warehouse_object->dataPointer); + return warehouse_object->dataPointer; + } + return NULL; + } + + //-------------------------------------------------------------------- + template void + WarehouseBinOf::Release( + const char *name + ) + { + Check(this); + Check_Pointer(name); + + WarehouseObjectOf + *warehouse_object = (WarehouseObjectOf *) WarehouseBin::Find(name); + if (warehouse_object != NULL) + { + Check(warehouse_object); + if (warehouse_object->Unreference()) + { + if (warehouse_object->GetKeepForever() == False) + { + Unregister_Object(warehouse_object); + // the dataPointer is deregistered & deleted in the destructor + delete warehouse_object; + } + } + } + } + + template void + WarehouseBinOf::Release( + ResourceDescription::ResourceID id + ) + { + Check(this); + + WarehouseObjectOf + *warehouse_object = (WarehouseObjectOf *) WarehouseBin::Find(id); + if (warehouse_object != NULL) + { + Check(warehouse_object); + if (warehouse_object->Unreference()) + { + if (warehouse_object->GetKeepForever() == False) + { + Unregister_Object(warehouse_object); + // the dataPointer is deregistered & deleted in the destructor + delete warehouse_object; + } + } + } + } + + template void + WarehouseBinOf::Purge() + { + Check(this); + //------------------------------------------ + // Delete everything in the bin + //------------------------------------------ + ChainIteratorOf + i(instanceList); + + WarehouseObject + *object_instance; + + while ((object_instance=i.ReadAndNext()) != NULL) + { + Check(object_instance); + Unregister_Object(object_instance); + delete object_instance; + } + Check_Fpu(); + } + + //####################################################################### + // Warehouse + //####################################################################### + class Warehouse SIGNATURED + { + public: + Warehouse(); + virtual ~Warehouse(); + Logical + TestInstance() const; + virtual void + Purge(); + + WarehouseBinOf + bitMapBin; + WarehouseBinOf + pixelMap8Bin; + WarehouseBinOf + palette8Bin; + }; +#endif diff --git a/CODE/RP/MUNGA/mssccprj.scc b/CODE/RP/MUNGA/mssccprj.scc new file mode 100644 index 0000000..b760d70 --- /dev/null +++ b/CODE/RP/MUNGA/mssccprj.scc @@ -0,0 +1,5 @@ +SCC = This is a Source Code Control file + +[MUNGA.MAK] +SCC_Aux_Path = "M:\VWESS" +SCC_Project_Name = "$/Tesla_rp/MUNGA", FEVAAAAA diff --git a/CODE/RP/MUNGA/opt/ANGLE.obj b/CODE/RP/MUNGA/opt/ANGLE.obj new file mode 100644 index 0000000..58ca11c Binary files /dev/null and b/CODE/RP/MUNGA/opt/ANGLE.obj differ diff --git a/CODE/RP/MUNGA/opt/APPMSG.obj b/CODE/RP/MUNGA/opt/APPMSG.obj new file mode 100644 index 0000000..fecab7f Binary files /dev/null and b/CODE/RP/MUNGA/opt/APPMSG.obj differ diff --git a/CODE/RP/MUNGA/opt/AUDWGT.obj b/CODE/RP/MUNGA/opt/AUDWGT.obj new file mode 100644 index 0000000..4b0ddb6 Binary files /dev/null and b/CODE/RP/MUNGA/opt/AUDWGT.obj differ diff --git a/CODE/RP/MUNGA/opt/BOXLIST.obj b/CODE/RP/MUNGA/opt/BOXLIST.obj new file mode 100644 index 0000000..e82d1f9 Binary files /dev/null and b/CODE/RP/MUNGA/opt/BOXLIST.obj differ diff --git a/CODE/RP/MUNGA/opt/BOXSORT.obj b/CODE/RP/MUNGA/opt/BOXSORT.obj new file mode 100644 index 0000000..2fb836f Binary files /dev/null and b/CODE/RP/MUNGA/opt/BOXSORT.obj differ diff --git a/CODE/RP/MUNGA/opt/BOXSPHR.obj b/CODE/RP/MUNGA/opt/BOXSPHR.obj new file mode 100644 index 0000000..14f1ace Binary files /dev/null and b/CODE/RP/MUNGA/opt/BOXSPHR.obj differ diff --git a/CODE/RP/MUNGA/opt/CMPNNT.obj b/CODE/RP/MUNGA/opt/CMPNNT.obj new file mode 100644 index 0000000..38f22ed Binary files /dev/null and b/CODE/RP/MUNGA/opt/CMPNNT.obj differ diff --git a/CODE/RP/MUNGA/opt/COLOR.obj b/CODE/RP/MUNGA/opt/COLOR.obj new file mode 100644 index 0000000..011b526 Binary files /dev/null and b/CODE/RP/MUNGA/opt/COLOR.obj differ diff --git a/CODE/RP/MUNGA/opt/CONSOLE.obj b/CODE/RP/MUNGA/opt/CONSOLE.obj new file mode 100644 index 0000000..d46b037 Binary files /dev/null and b/CODE/RP/MUNGA/opt/CONSOLE.obj differ diff --git a/CODE/RP/MUNGA/opt/ENTITYID.obj b/CODE/RP/MUNGA/opt/ENTITYID.obj new file mode 100644 index 0000000..ae06886 Binary files /dev/null and b/CODE/RP/MUNGA/opt/ENTITYID.obj differ diff --git a/CODE/RP/MUNGA/opt/ENVIRNMT.obj b/CODE/RP/MUNGA/opt/ENVIRNMT.obj new file mode 100644 index 0000000..3508f17 Binary files /dev/null and b/CODE/RP/MUNGA/opt/ENVIRNMT.obj differ diff --git a/CODE/RP/MUNGA/opt/FILESTRM.obj b/CODE/RP/MUNGA/opt/FILESTRM.obj new file mode 100644 index 0000000..182fb62 Binary files /dev/null and b/CODE/RP/MUNGA/opt/FILESTRM.obj differ diff --git a/CODE/RP/MUNGA/opt/FILESTUB.obj b/CODE/RP/MUNGA/opt/FILESTUB.obj new file mode 100644 index 0000000..ced95a2 Binary files /dev/null and b/CODE/RP/MUNGA/opt/FILESTUB.obj differ diff --git a/CODE/RP/MUNGA/opt/INTORGN.obj b/CODE/RP/MUNGA/opt/INTORGN.obj new file mode 100644 index 0000000..551eab2 Binary files /dev/null and b/CODE/RP/MUNGA/opt/INTORGN.obj differ diff --git a/CODE/RP/MUNGA/opt/ITERATOR.obj b/CODE/RP/MUNGA/opt/ITERATOR.obj new file mode 100644 index 0000000..9c4bc1e Binary files /dev/null and b/CODE/RP/MUNGA/opt/ITERATOR.obj differ diff --git a/CODE/RP/MUNGA/opt/LINE.obj b/CODE/RP/MUNGA/opt/LINE.obj new file mode 100644 index 0000000..0328826 Binary files /dev/null and b/CODE/RP/MUNGA/opt/LINE.obj differ diff --git a/CODE/RP/MUNGA/opt/LINK.obj b/CODE/RP/MUNGA/opt/LINK.obj new file mode 100644 index 0000000..55320fa Binary files /dev/null and b/CODE/RP/MUNGA/opt/LINK.obj differ diff --git a/CODE/RP/MUNGA/opt/LINMTRX.obj b/CODE/RP/MUNGA/opt/LINMTRX.obj new file mode 100644 index 0000000..08e4697 Binary files /dev/null and b/CODE/RP/MUNGA/opt/LINMTRX.obj differ diff --git a/CODE/RP/MUNGA/opt/MEMBLOCK.obj b/CODE/RP/MUNGA/opt/MEMBLOCK.obj new file mode 100644 index 0000000..e1f160f Binary files /dev/null and b/CODE/RP/MUNGA/opt/MEMBLOCK.obj differ diff --git a/CODE/RP/MUNGA/opt/MEMSTRM.obj b/CODE/RP/MUNGA/opt/MEMSTRM.obj new file mode 100644 index 0000000..08afa9a Binary files /dev/null and b/CODE/RP/MUNGA/opt/MEMSTRM.obj differ diff --git a/CODE/RP/MUNGA/opt/MODE.obj b/CODE/RP/MUNGA/opt/MODE.obj new file mode 100644 index 0000000..b5415bf Binary files /dev/null and b/CODE/RP/MUNGA/opt/MODE.obj differ diff --git a/CODE/RP/MUNGA/opt/MOTION.obj b/CODE/RP/MUNGA/opt/MOTION.obj new file mode 100644 index 0000000..41b03fe Binary files /dev/null and b/CODE/RP/MUNGA/opt/MOTION.obj differ diff --git a/CODE/RP/MUNGA/opt/MTRXSTK.obj b/CODE/RP/MUNGA/opt/MTRXSTK.obj new file mode 100644 index 0000000..e9ca54d Binary files /dev/null and b/CODE/RP/MUNGA/opt/MTRXSTK.obj differ diff --git a/CODE/RP/MUNGA/opt/NAMELIST.obj b/CODE/RP/MUNGA/opt/NAMELIST.obj new file mode 100644 index 0000000..976656b Binary files /dev/null and b/CODE/RP/MUNGA/opt/NAMELIST.obj differ diff --git a/CODE/RP/MUNGA/opt/NODE.obj b/CODE/RP/MUNGA/opt/NODE.obj new file mode 100644 index 0000000..9ede06b Binary files /dev/null and b/CODE/RP/MUNGA/opt/NODE.obj differ diff --git a/CODE/RP/MUNGA/opt/NORMAL.obj b/CODE/RP/MUNGA/opt/NORMAL.obj new file mode 100644 index 0000000..56ab178 Binary files /dev/null and b/CODE/RP/MUNGA/opt/NORMAL.obj differ diff --git a/CODE/RP/MUNGA/opt/ORIGIN.obj b/CODE/RP/MUNGA/opt/ORIGIN.obj new file mode 100644 index 0000000..fe704d2 Binary files /dev/null and b/CODE/RP/MUNGA/opt/ORIGIN.obj differ diff --git a/CODE/RP/MUNGA/opt/PLANE.obj b/CODE/RP/MUNGA/opt/PLANE.obj new file mode 100644 index 0000000..9981500 Binary files /dev/null and b/CODE/RP/MUNGA/opt/PLANE.obj differ diff --git a/CODE/RP/MUNGA/opt/POINT3D.obj b/CODE/RP/MUNGA/opt/POINT3D.obj new file mode 100644 index 0000000..689263c Binary files /dev/null and b/CODE/RP/MUNGA/opt/POINT3D.obj differ diff --git a/CODE/RP/MUNGA/opt/RANDOM.obj b/CODE/RP/MUNGA/opt/RANDOM.obj new file mode 100644 index 0000000..b7cde26 Binary files /dev/null and b/CODE/RP/MUNGA/opt/RANDOM.obj differ diff --git a/CODE/RP/MUNGA/opt/RAY.obj b/CODE/RP/MUNGA/opt/RAY.obj new file mode 100644 index 0000000..1f60d51 Binary files /dev/null and b/CODE/RP/MUNGA/opt/RAY.obj differ diff --git a/CODE/RP/MUNGA/opt/RECT2D.obj b/CODE/RP/MUNGA/opt/RECT2D.obj new file mode 100644 index 0000000..f8f0569 Binary files /dev/null and b/CODE/RP/MUNGA/opt/RECT2D.obj differ diff --git a/CODE/RP/MUNGA/opt/RETICLE.obj b/CODE/RP/MUNGA/opt/RETICLE.obj new file mode 100644 index 0000000..3217a4a Binary files /dev/null and b/CODE/RP/MUNGA/opt/RETICLE.obj differ diff --git a/CODE/RP/MUNGA/opt/SCALAR.obj b/CODE/RP/MUNGA/opt/SCALAR.obj new file mode 100644 index 0000000..864cbf4 Binary files /dev/null and b/CODE/RP/MUNGA/opt/SCALAR.obj differ diff --git a/CODE/RP/MUNGA/opt/SFESKT.obj b/CODE/RP/MUNGA/opt/SFESKT.obj new file mode 100644 index 0000000..c6c4b32 Binary files /dev/null and b/CODE/RP/MUNGA/opt/SFESKT.obj differ diff --git a/CODE/RP/MUNGA/opt/SLOT.obj b/CODE/RP/MUNGA/opt/SLOT.obj new file mode 100644 index 0000000..fe638f0 Binary files /dev/null and b/CODE/RP/MUNGA/opt/SLOT.obj differ diff --git a/CODE/RP/MUNGA/opt/SOCKET.obj b/CODE/RP/MUNGA/opt/SOCKET.obj new file mode 100644 index 0000000..1532ac1 Binary files /dev/null and b/CODE/RP/MUNGA/opt/SOCKET.obj differ diff --git a/CODE/RP/MUNGA/opt/SPHERE.obj b/CODE/RP/MUNGA/opt/SPHERE.obj new file mode 100644 index 0000000..f7f75b5 Binary files /dev/null and b/CODE/RP/MUNGA/opt/SPHERE.obj differ diff --git a/CODE/RP/MUNGA/opt/SPLINE.obj b/CODE/RP/MUNGA/opt/SPLINE.obj new file mode 100644 index 0000000..b6b7b88 Binary files /dev/null and b/CODE/RP/MUNGA/opt/SPLINE.obj differ diff --git a/CODE/RP/MUNGA/opt/SRTSKT.obj b/CODE/RP/MUNGA/opt/SRTSKT.obj new file mode 100644 index 0000000..04b1ace Binary files /dev/null and b/CODE/RP/MUNGA/opt/SRTSKT.obj differ diff --git a/CODE/RP/MUNGA/opt/TESTALL.obj b/CODE/RP/MUNGA/opt/TESTALL.obj new file mode 100644 index 0000000..b01c729 Binary files /dev/null and b/CODE/RP/MUNGA/opt/TESTALL.obj differ diff --git a/CODE/RP/MUNGA/opt/TIME.obj b/CODE/RP/MUNGA/opt/TIME.obj new file mode 100644 index 0000000..6845ebd Binary files /dev/null and b/CODE/RP/MUNGA/opt/TIME.obj differ diff --git a/CODE/RP/MUNGA/opt/TIMESTUB.obj b/CODE/RP/MUNGA/opt/TIMESTUB.obj new file mode 100644 index 0000000..3cd22b3 Binary files /dev/null and b/CODE/RP/MUNGA/opt/TIMESTUB.obj differ diff --git a/CODE/RP/MUNGA/opt/TRACE.obj b/CODE/RP/MUNGA/opt/TRACE.obj new file mode 100644 index 0000000..14aeadd Binary files /dev/null and b/CODE/RP/MUNGA/opt/TRACE.obj differ diff --git a/CODE/RP/MUNGA/opt/TRACSTUB.obj b/CODE/RP/MUNGA/opt/TRACSTUB.obj new file mode 100644 index 0000000..bf6d345 Binary files /dev/null and b/CODE/RP/MUNGA/opt/TRACSTUB.obj differ diff --git a/CODE/RP/MUNGA/opt/UNITVEC.obj b/CODE/RP/MUNGA/opt/UNITVEC.obj new file mode 100644 index 0000000..a774ccc Binary files /dev/null and b/CODE/RP/MUNGA/opt/UNITVEC.obj differ diff --git a/CODE/RP/MUNGA/opt/opt.cfg b/CODE/RP/MUNGA/opt/opt.cfg new file mode 100644 index 0000000..e58e63c --- /dev/null +++ b/CODE/RP/MUNGA/opt/opt.cfg @@ -0,0 +1,34 @@ +-DLBE4;DEBUG_LEVEL=0;DEBUG_STREAM=cout;MESSAGE_BUFFERING=False +-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 +-Id:\tesla_rp\rp_l4;d:\tesla_rp\rp;d:\tesla_rp\munga_l4;d:\tesla_rp\munga_l4\libdpl;d:\tesla_rp\munga_l4\libdpl\dvs;d:\tesla_rp\munga_l4\libdpl\dpl;d:\tesla_rp\munga_l4\sos\bc4;d:\tesla_rp\munga_l4\netnub;d:\tesla_rp\munga;d:\bc5\include +-H +-H=mungaopt.csm +-Hc +-nd:\tesla_rp\munga\opt diff --git a/CODE/RP/MUNGA_L4/JOYSTICK.ASM b/CODE/RP/MUNGA_L4/JOYSTICK.ASM new file mode 100644 index 0000000..48258a9 --- /dev/null +++ b/CODE/RP/MUNGA_L4/JOYSTICK.ASM @@ -0,0 +1,147 @@ +.list +;=========================================================================== +; File: PCjoystk.asm +; Project: MUNGA +; Contents: PC joystick interface +;--------------------------------------------------------------------------- +; Date Who Modification +; -------- --- ----------------------------------------------------------- +; ??/??/?? JMA Initial coding +; 12/01/95 CPB Made pretty, expanded to four analog inputs (2 sticks). +; 01/20/95 CPB Added PC_Joystick_Mask +;--------------------------------------------------------------------------- +; Copyright (C) 1995, Virtual World Entertainment, Inc. All rights reserved +; PROPRIETARY and CONFIDENTIAL +;=========================================================================== + include l4asm.inc + include pcdpmi.inc + +;=========================================================================== +; Equates +;=========================================================================== + +JOYPORT EQU 0201h +XBIT1 EQU 00000001b +YBIT1 EQU 00000010b +XBIT2 EQU 00000100b +YBIT2 EQU 00001000b +BTTNA1 EQU 00010000b +BTTNB1 EQU 00100000b +BTTNA2 EQU 01000000b +BTTNB2 EQU 10000000b + +ANALOGBITS EQU XBIT1+YBIT1+XBIT2+YBIT2 +BUTTONBITS EQU BTTNA1+BTTNB1+BTTNA2+BTTNB2 + +;=========================================================================== +; Data segment +;=========================================================================== +BEGIN_DATA + + PUBLIC PC_Joystick1_Raw_X,PC_Joystick1_Raw_Y + PUBLIC PC_Joystick2_Raw_X,PC_Joystick2_Raw_Y + PUBLIC PC_Joystick_Mask,PC_Joystick_Buttons + PC_Joystick1_Raw_X dw 0 + PC_Joystick1_Raw_Y dw 0 + PC_Joystick2_Raw_X dw 0 + PC_Joystick2_Raw_Y dw 0 + PC_Joystick_Mask db ANALOGBITS + PC_Joystick_Buttons db 0 + +END_DATA + +;=========================================================================== +; Code segment +;=========================================================================== +BEGIN_CODE + +;------------------------------------------------------------------------- +; PC_Joystick_Poll(void) +; Reads joystick values, places values into public memory locations +;------------------------------------------------------------------------- +; Enter: +; (void) +;------------------------------------------------------------------------- +; Returns: +; (void) +;------------------------------------------------------------------------- +BEGIN_C_PROC PC_Joystick_Update + + BUILD_STACK_FRAME + + ;-------------------------------------------------------------- + ; Disable interrupts, saving the old state of interrupts + ;-------------------------------------------------------------- + DPMI_DISABLE_SAVE_INT ;pushes ax! + ;-------------------------------------------------------------- + ; Set up for timing loop + ;-------------------------------------------------------------- + mov dx,JOYPORT + xor cx,cx + ;-------------------------------------------------------------- + ; Clear the port and start reading + ;-------------------------------------------------------------- + mov ah,PC_Joystick_Mask ;load AH with all bits set, clear al + xor al,al + out dx,al ;trigger the timers + +check_again: + ;-------------------------------------------------------------- + ; Read the port, check for changes + ;-------------------------------------------------------------- + in al,dx ;read the status bits + and al,PC_Joystick_Mask ;remove non-analog bits + + xor al,ah ;check for a change + jz short no_change ;no change, hang out + ;-------------------------------------------------------------- + ; See what changed + ;-------------------------------------------------------------- + test al,XBIT1 + jz short no_x1_change + mov PC_Joystick1_Raw_X,cx +no_x1_change: + test al,YBIT1 + jz short no_y1_change + mov PC_Joystick1_Raw_Y,cx +no_y1_change: + test al,XBIT2 + jz short no_x2_change + mov PC_Joystick2_Raw_X,cx +no_x2_change: + test al,YBIT2 + jz short no_y2_change + mov PC_Joystick2_Raw_Y,cx +no_y2_change: + ;-------------------------------------------------------------- + ; See if we have read all the bits + ;-------------------------------------------------------------- + xor ah,al + jz short read_done + ;-------------------------------------------------------------- + ; Increment the count and check again + ;-------------------------------------------------------------- +no_change: + inc cx + cmp cx,2048 ;arbitrary limit + jnz check_again + ;-------------------------------------------------------------- + ; All done with analog values. Re-enable interrupts + ;-------------------------------------------------------------- +read_done: + DPMI_RESTORE_PREV_INT ;pops ax! + ;-------------------------------------------------------------- + ; Read the buttons + ;-------------------------------------------------------------- + in al,dx ;read the status bits + not al ;invert the bits (so 1=closed) + and al,BUTTONBITS ;remove extraneous bits + mov PC_Joystick_Buttons,al ;save the result + ;-------------------------------------------------------------- + ; Return + ;-------------------------------------------------------------- +END_C_PROC + +END_CODE + + END diff --git a/CODE/RP/MUNGA_L4/L4APP.HPP b/CODE/RP/MUNGA_L4/L4APP.HPP new file mode 100644 index 0000000..0247a0e --- /dev/null +++ b/CODE/RP/MUNGA_L4/L4APP.HPP @@ -0,0 +1,237 @@ +//===========================================================================// +// File: l4app.hpp // +// Project: MUNGA Brick: L4Application // +// Contents: Interface specification for L4Application // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 01/21/95 ECH Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1994, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide. // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(L4APP_HPP) +# define L4APP_HPP + +# if !defined(APP_HPP) +# include +# endif + + class DPLRenderer; + class L4AudioRenderer; + class L4GaugeRenderer; + class L4NetworkManager; + class LBE4ControlsManager; + class L4IcomManager; + + //########################################################################## + //######################## L4Application ############################# + //########################################################################## + + class L4Application: + public Application + { + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Construction, Destruction, and Testing + // + public: + L4Application( + ResourceFile *resource_file, + ApplicationID application_ID, + ClassID class_ID=L4ApplicationClassID, + SharedData &shared_data=DefaultData + ); + ~L4Application(); + + Logical + TestInstance() const; + + static Derivation ClassDerivations; + static SharedData DefaultData; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Command line parsing + // + public: + typedef Logical + (*TokenParser)(int *argument, int argc, char *argv[]); + static Logical + ParseToken( + int *argument, + int argc, + char *argv[] + ); + static Logical + ParseCommandLine( + int argc, + char *argv[], + TokenParser parser = &L4Application::ParseToken + ); + + static int + GetMissionReviewMode() + {return missionReviewMode;} + + static Logical + GetSeeSolids() + {return seeSolids;} + static unsigned long + GetNetworkCommonFlatAddress() + {return networkCommonFlatAddress;} + static CString + GetEggNotationFileName() + {return eggNotationFileName;} + static CString + GetRIOPlaybackFileName() + {return rioPlaybackFileName;} + static CString + GetRIORecordingFileName() + {return rioRecordingFileName;} + + protected: + static Logical + seeSolids; + static CString + eggNotationFileName; + static unsigned long + networkCommonFlatAddress; + static int + missionReviewMode; + static CString + rioPlaybackFileName; + static CString + rioRecordingFileName; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Execution control + // + public: + void + Initialize(); + void + InitializeTillConsole(); + + Entity* + MakeAndLinkViewpointEntity(Entity__MakeMessage *message); + + Entity* + MakeViewpointEntity(Entity__MakeMessage *message); + + void + Terminate(); + + void + TeslaCoil(Logical lights_on); + + void + PilotIllumination(Logical lights_on); // includes 'Tesla coil' + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Module accesors + // + public: + DPLRenderer* + GetVideoRenderer(); + + L4AudioRenderer* + GetAudioRenderer(); + + L4GaugeRenderer* + GetGaugeRenderer(); + + L4NetworkManager* + GetNetworkManager() + {return (L4NetworkManager*)Application::GetNetworkManager();} + LBE4ControlsManager* + GetControlsManager() + {return (LBE4ControlsManager*)Application::GetControlsManager();} + L4IcomManager* + GetIntercomManager() + {return (L4IcomManager*)Application::GetIntercomManager();} + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Public data + // + public: + char + *divisionParameters; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Module Creation + // + protected: + ModeManager* + MakeModeManager(); + + ControlsManager* + MakeControlsManager(); + + IcomManager* + MakeIntercomManager(); + + NetworkManager* + MakeNetworkManager(); + + VideoRenderer* + MakeVideoRenderer(); + + AudioRenderer* + MakeAudioRenderer(); + + GaugeRenderer* + MakeGaugeRenderer(); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Message Support + // + public: + enum + { + LightsOutMessageID = Application::NextMessageID, + NextMessageID + }; + + static const HandlerEntry + MessageHandlerEntries[]; + static MessageHandlerSet + MessageHandlers; + + void + LightsOutMessageHandler(Receiver::Message *message); + void + RunMissionMessageHandler(RunMissionMessage *message); + void + StopMissionMessageHandler(StopMissionMessage *message); + void // HACK - the 'int' is actually 'ControlsKey' + KeyCommandMessageHandler(ReceiverDataMessageOf *message); + }; + + extern L4Application * &l4_application; + + //~~~~~~~~~~~~~~~~~~~~~ L4Application inlines ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + inline DPLRenderer* + L4Application::GetVideoRenderer() + { + Check(this); + return (DPLRenderer*)videoRenderer; + } + + inline L4AudioRenderer* + L4Application::GetAudioRenderer() + { + Check(this); + return (L4AudioRenderer*)audioRenderer; + } + + inline L4GaugeRenderer* + L4Application::GetGaugeRenderer() + { + Check(this); + return (L4GaugeRenderer*)gaugeRenderer; + } + +#endif + diff --git a/CODE/RP/MUNGA_L4/L4APP.TCP b/CODE/RP/MUNGA_L4/L4APP.TCP new file mode 100644 index 0000000..d0bb29e --- /dev/null +++ b/CODE/RP/MUNGA_L4/L4APP.TCP @@ -0,0 +1,82 @@ +//===========================================================================// +// File: l4app.tcp // +// Contents: // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 03/09/95 ECH Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1994, Virtual World Entertainment, Inc. All Rights reserved // +// PROPRIETARY AND CONFIDENTIAL // +//===========================================================================// + +#include "l4app.thp" +#include "entity.thp" +#include "registry.hpp" + +//########################################################################## +//####################### L4TestApplication ########################## +//########################################################################## + +// +//############################################################################# +//############################################################################# +// +L4TestApplication::L4TestApplication(StreamableResourceFile *resource_file): + L4Application(resource_file, (ApplicationID)0) +{ +} + +// +//############################################################################# +//############################################################################# +// +L4TestApplication::~L4TestApplication() +{ +} + +// +//############################################################################# +//############################################################################# +// +Registry* + L4TestApplication::MakeRegistry() +{ + return new Registry; +} + +// +//############################################################################# +//############################################################################# +// +Entity* + L4TestApplication::MakeViewpointEntity(Entity::MakeMessage *message) +{ + return TestEntity::Make(message); +} + +//########################################################################## +//########################## L4TestMission ########################### +//########################################################################## + +// +//############################################################################# +//############################################################################# +// +L4TestMission::L4TestMission( + NotationFile *notation_file, + StreamableResourceFile *resources +): + Mission(notation_file, resources) +{ +} + +// +//############################################################################# +//############################################################################# +// +L4TestMission::~L4TestMission() +{ +} + + diff --git a/CODE/RP/MUNGA_L4/L4APP.THP b/CODE/RP/MUNGA_L4/L4APP.THP new file mode 100644 index 0000000..2449e63 --- /dev/null +++ b/CODE/RP/MUNGA_L4/L4APP.THP @@ -0,0 +1,50 @@ +//===========================================================================// +// File: l4app.thp // +// Contents: // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 03/09/95 ECH Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1994, Virtual World Entertainment, Inc. All Rights reserved // +// PROPRIETARY AND CONFIDENTIAL // +//===========================================================================// + +#if !defined(L4APP_THP) +# define L4APP_THP + +# if !defined(L4APP_HPP) +# include +# endif + +# if !defined(MISSION_HPP) +# include +# endif + + class L4TestApplication: + public L4Application + { + public: + L4TestApplication(StreamableResourceFile *resource_file); + ~L4TestApplication(); + + private: + Registry* + MakeRegistry(); + + Entity* + MakeViewpointEntity(Entity__MakeMessage*); + }; + + class L4TestMission: + public Mission + { + public: + L4TestMission( + NotationFile *notation_file, + StreamableResourceFile *resources + ); + ~L4TestMission(); + }; + +#endif diff --git a/CODE/RP/MUNGA_L4/L4ASM.INC b/CODE/RP/MUNGA_L4/L4ASM.INC new file mode 100644 index 0000000..e76b9cf --- /dev/null +++ b/CODE/RP/MUNGA_L4/L4ASM.INC @@ -0,0 +1,386 @@ +;=========================================================================== +; File: L4ASM.inc +; Project: MUNGA +; Contents: Assembler-dependent macros +;--------------------------------------------------------------------------- +; Date Who Modification +; -------- --- ----------------------------------------------------------- +; 03/01/95 CPB Initial coding +;--------------------------------------------------------------------------- +; Copyright (C) 1995, Virtual World Entertainment, Inc. All rights reserved +; PROPRIETARY and CONFIDENTIAL +;=========================================================================== +.xcref +?insideprocdef = 0 +?insidelocal = 0 + +;----------------------------------------------------------------- +; Generate assembler error message, stop assembly +;----------------------------------------------------------------- +.xcref ?error +?error macro msg + %out E R R O R ----- msg + .err +endm + + .386p + .model flat,c ;; just now added ,c + +;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +; HIDEOUS UGLY HACK to get around borland bug!!!!!!!!!!!!! +;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +ifndef __WATCOMC__ + __BCPLUSPLUS__ = 1 +endif + +;----------------------------------------------------------------- +; Begin the data segment +;----------------------------------------------------------------- +BEGIN_DATA MACRO + _DATA SEGMENT DWORD USE32 +ENDM + +;----------------------------------------------------------------- +; End the data segment +;----------------------------------------------------------------- +END_DATA MACRO + _DATA ENDS +ENDM + +;----------------------------------------------------------------- +; Begin the code segment +;----------------------------------------------------------------- +BEGIN_CODE MACRO + _TEXT SEGMENT DWORD USE32 +ENDM +;----------------------------------------------------------------- +; End the code segment +;----------------------------------------------------------------- +END_CODE MACRO + if ?insideprocdef + ?error + endif + + _TEXT ENDS +ENDM + +;----------------------------------------------------------------- +; Parse/Save/Restore multiple registers +;----------------------------------------------------------------- +?ax = 0000000000000001b +?eax = 0000000000000010b +?bx = 0000000000000100b +?ebx = 0000000000001000b +?cx = 0000000000010000b +?ecx = 0000000000100000b +?dx = 0000000001000000b +?edx = 0000000010000000b +?si = 0000000100000000b +?esi = 0000001000000000b +?di = 0000010000000000b +?edi = 0000100000000000b +?ds = 0001000000000000b +?es = 0010000000000000b +?fs = 0100000000000000b +?gs = 1000000000000000b + + +BUILDREGS MACRO reglist,bitval + ifb + exitm + endif + + irp areg, + ifidni , + bitval = bitval or ?ax + elseifidni , + bitval = bitval or ?eax + elseifidni , + bitval = bitval or ?bx + elseifidni , + bitval = bitval or ?ebx + elseifidni , + bitval = bitval or ?cx + elseifidni , + bitval = bitval or ?ecx + elseifidni , + bitval = bitval or ?dx + elseifidni , + bitval = bitval or ?edx + elseifidni , + bitval = bitval or ?si + elseifidni , + bitval = bitval or ?esi + elseifidni , + bitval = bitval or ?di + elseifidni , + bitval = bitval or ?edi + elseifidni , + bitval = bitval or ?ds + elseifidni , + bitval = bitval or ?es + elseifidni , + bitval = bitval or ?fs + elseifidni , + bitval = bitval or ?gs + else + ?error + endif + endm +ENDM + +PUSHREGS MACRO bits + if (bits and ?ax) + push ax + endif + if (bits and ?eax) + push eax + endif + if (bits and ?bx) + push bx + endif + if (bits and ?ebx) + push ebx + endif + if (bits and ?cx) + push cx + endif + if (bits and ?ecx) + push ecx + endif + if (bits and ?dx) + push dx + endif + if (bits and ?edx) + push edx + endif + if (bits and ?si) + push si + endif + if (bits and ?esi) + push esi + endif + if (bits and ?di) + push di + endif + if (bits and ?edi) + push edi + endif + if (bits and ?ds) + push ds + endif + if (bits and ?es) + push es + endif + if (bits and ?fs) + push fs + endif + if (bits and ?gs) + push gs + endif +ENDM + +POPREGS MACRO bits + if (bits and ?gs) + pop gs + endif + if (bits and ?fs) + pop fs + endif + if (bits and ?es) + pop es + endif + if (bits and ?ds) + pop ds + endif + if (bits and ?edi) + pop edi + endif + if (bits and ?di) + pop di + endif + if (bits and ?esi) + pop esi + endif + if (bits and ?si) + pop si + endif + if (bits and ?edx) + pop edx + endif + if (bits and ?dx) + pop dx + endif + if (bits and ?ecx) + pop ecx + endif + if (bits and ?cx) + pop cx + endif + if (bits and ?ebx) + pop ebx + endif + if (bits and ?bx) + pop bx + endif + if (bits and ?eax) + pop eax + endif + if (bits and ?ax) + pop ax + endif +ENDM + +;----------------------------------------------------------------- +; Begin a public "C" accessable routine +;----------------------------------------------------------------- +BEGIN_C_PROC MACRO name,regs + + if ?insideprocdef + ?error + endif + + ifdef __BCPLUSPLUS__ +;; _&name& PROC C NEAR + name PROC C NEAR +;; PUBLIC _&name& + PUBLIC name + + ENDNAME ¯o +;; _&name& &ENDP + name &ENDP + &endm + endif + + ifdef __WATCOMC__ + &name&_ PROC C NEAR ; NOTE no trailing '_' for stack-based fcn! + PUBLIC &name&_ + + ENDNAME ¯o + &name&_ &ENDP + &endm + endif + + ?argoffset = 8 + ?localoffset = 0 + ?regbits = 0 + ?insideprocdef = 1 + ?stackframerequired = 0 + ?stackframebuilt = 0 + BUILDREGS , +ENDM + +;----------------------------------------------------------------- +; Declare an input parameter +;----------------------------------------------------------------- +?DEF_ARG1 macro argname,argtype,ofst + argname EQU + ?stackframerequired = 1 +endm + +?DEF_ARG macro argname,argtype,argsize + ife ?insideprocdef + ?error + else + .xcref + ?DEF_ARG1 argname,,%?argoffset + ?argoffset = ?argoffset+argsize + .cref + endif +endm + +ARG_BYTE macro n + ?DEF_ARG ,,4 ;; NOTE: promoted to 32-bit INT +ENDM + +ARG_WORD macro n +?DEF_ARG ,,4 ;; NOTE: promoted to 32-bit INT +endm + +ARG_DWORD macro n + ?DEF_ARG ,,4 ;; NOTE: promoted to 32-bit INT +endm + +ARG_CPTR macro n + ?DEF_ARG ,,4 ;; NOTE: promoted to 32-bit INT +endm + +ARG_DPTR macro n + ?DEF_ARG ,,4 ;; NOTE: promoted to 32-bit INT +endm + +;----------------------------------------------------------------- +; Declare a local variable +;----------------------------------------------------------------- +?DEF_LOCAL1 macro lname,argtype,ofst + lname EQU + ?stackframerequired = 1 +endm + +?DEF_LOCAL macro localname,localtype,localsize + ife ?insideprocdef + ?error + else + .xcref + ?localoffset = ?localoffset+localsize + ?DEF_LOCAL1 localname,,%?localoffset + .cref + endif +endm + +LOCAL_BYTE macro n + ?DEF_LOCAL ,,4 +endm + +LOCAL_WORD macro n + ?DEF_LOCAL ,,4 +endm + +LOCAL_DWORD macro n + ?DEF_LOCAL ,,4 +endm + +LOCAL_CPTR macro n + ?DEF_LOCAL ,,4 +endm + +LOCAL_DPTR macro n + ?DEF_LOCAL ,,4 +endm + +BUILD_STACK_FRAME macro + ife ?insideprocdef + ?error + else + ENTER ?localoffset,0 + PUSHREGS ?regbits + ?stackframebuilt = 1 + endif +ENDM + +;----------------------------------------------------------------- +; End a public "C" accessable routine +;----------------------------------------------------------------- +END_C_PROC MACRO + ife ?insideprocdef + ?error <'END_C_PROC' mismatch> + else + if ?stackframerequired + ife ?stackframebuilt + ?error <'BUILD_STACK_FRAME' required in procedure> + endif + endif + + POPREGS ?regbits + if ?stackframebuilt + LEAVE + endif + ret + + ENDNAME + purge ENDNAME + ?insideprocdef = 0 + endif +ENDM + + diff --git a/CODE/RP/MUNGA_L4/L4AUDHDW.CPP b/CODE/RP/MUNGA_L4/L4AUDHDW.CPP new file mode 100644 index 0000000..7c39097 --- /dev/null +++ b/CODE/RP/MUNGA_L4/L4AUDHDW.CPP @@ -0,0 +1,1006 @@ +//===========================================================================// +// File: l4audhdw.hh // +// Project: MUNGA Brick: Audio Manager // +// Contents: Spec for audio manager // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 01/25/95 ECH Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1994, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(L4AUDHDW_HPP) +# include +#endif + +#if defined(AUDIO_HARDWARE) +# include +#endif + +#if defined(TRACE_AUDIO_RENDERER_MIDI) + BitTrace Audio_Renderer_MIDI("Audio Renderer MIDI"); +#endif + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ MPU Emulation ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +#define _inp inportb +#define _outp outportb + +#define MPUPort(x) ((x)+mpuAddx) +#define SBCPort(x) ((x)+srcAddx) + +/* DSP defines */ +#define MPU_ACK_OK 0xfe +#define MPU_RESET_CMD 0xff +#define MPU_ENTER_UART 0x3f + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ MIDIMessage ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +// +//############################################################################# +// TestInstance +//############################################################################# +// +Logical + MIDIMessage::TestInstance() const +{ + return True; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +ostream& + operator << ( + ostream &strm, + const MIDIMessage &midi_message + ) +{ + Check(&midi_message); + + strm << "["; + strm << (int)(midi_message.message[0] & 0x0F) << ","; + strm << (int)(midi_message.message[0] >> 4) << ","; + strm << (int)midi_message.message[1] << ","; + strm << (int)midi_message.message[2] << "]"; + + return strm; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ AudioChannel ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +// +//############################################################################# +//############################################################################# +// +AudioChannel::AudioChannel( + AudioChannelType audio_channel_type, + MIDIChannel midi_channel, + AudioCard *audio_card +) +{ + audioChannelType = audio_channel_type; + midiChannel = midi_channel; + voicesUsed = 0; + Check(audio_card); + audioCard = audio_card; +} + +// +//############################################################################# +//############################################################################# +// +AudioChannel::~AudioChannel() +{ + Verify(voicesUsed == 0); +} + +// +//############################################################################# +// TestInstance +//############################################################################# +// +Logical + AudioChannel::TestInstance() const +{ + Plug::TestInstance(); + Verify(voicesUsed >=0 && voicesUsed <= AWE_VOICE_COUNT); + Check(audioCard); + return True; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ AudioCard ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +// +//############################################################################# +// AudioCard +//############################################################################# +// +AudioCard::AudioCard(): + idleChannelSocket(NULL), + percussionChannelSocket(NULL) +{ + MIDIChannel channel; + + idleVoices = AWE_VOICE_COUNT; + for (channel = 0; channel < AWE_CHANNEL_COUNT; channel++) + { + AudioChannel *audio_channel; + + if (channel == AWE_PERCUSSIVE_CHANNEL) + { + audio_channel = + new AudioChannel( + PercussionAudioChannelType, + channel, + this + ); + Register_Object(audio_channel); + Check(&percussionChannelSocket); + percussionChannelSocket.Add(audio_channel); + } + else + { + audio_channel = + new AudioChannel( + InstrumentAudioChannelType, + channel, + this + ); + Register_Object(audio_channel); + Check(&idleChannelSocket); + idleChannelSocket.Add(audio_channel); + } + } +} + +// +//############################################################################# +// ~AudioCard +//############################################################################# +// +AudioCard::~AudioCard() +{ + // + // Delete the idle channels + // + { + ChainIteratorOf iterator(&idleChannelSocket); + + Check(&iterator); + Verify(idleVoices == AWE_VOICE_COUNT); + Verify(iterator.GetSize() == AWE_CHANNEL_COUNT - 1); + iterator.DeletePlugs(); + } + + // + // Delete the percussive channel + // + { + ChainIteratorOf iterator(&percussionChannelSocket); + + Check(&iterator); + Verify(idleVoices == AWE_VOICE_COUNT); + Verify(iterator.GetSize() == 1); + iterator.DeletePlugs(); + } +} + +// +//############################################################################# +// TestInstance +//############################################################################# +// +Logical + AudioCard::TestInstance() const +{ + Node::TestInstance(); + Verify(idleVoices >= 0 && idleVoices <= AWE_VOICE_COUNT); + Check(&idleChannelSocket); + return True; +} + +// +//############################################################################# +// Initialize +//############################################################################# +// +void + AudioCard::Initialize() +{ +#ifdef AUDIO_HARDWARE + Tell("AudioCard::Initialize - Start\n"); + + WORD wError; + + // + // Set the selector of the pointer to the driver memory for the + // MIDI driver to _NULL. this will tell the load driver routine + // to allocate new memory for the MIDI driver + // + #if defined(__BCPLUSPLUS__) + sSOSMIDIInitDriver.lpDriverMemory.sel = _NULL; + #else + sSOSMIDIInitDriver.lpDriverMemory = _NULL; + #endif + + // + // Setup the port for the MIDI driver to use + // + // sSOSMIDIHardware.wPort = _MIDI_DRIVER_PORT; + sSOSMIDIHardware.wPort = emuAddx; + + // + // Load and initialize the MIDI driver + // + wError = sosMIDIInitDriver( + _MIDI_DRIVER_TYPE, + &sSOSMIDIHardware, + &sSOSMIDIInitDriver, + &wDriverHandle + ); + if (wError) + { + cout << sosGetErrorString(wError); + Fail("AudioCard::Initialize - sosMIDIInitDriver failed\n"); + } + + Tell("AudioCard::Initialize - Finish\n"); +#endif +} + +// +//############################################################################# +// Close +//############################################################################# +// +void + AudioCard::Close() +{ +#ifdef AUDIO_HARDWARE + Check(this); + + sosMIDIAWE32ReleaseSBKFiles(wDriverHandle); + + // + // Reset the midi driver + // + sosMIDIResetDriver(wDriverHandle); + + // + // Uninitialize the midi driver and tell it to free the memory allocated + // for the driver + // + sosMIDIUnInitDriver(wDriverHandle, _TRUE); +#endif +} + +// +//############################################################################# +// GetEnvironmentSettings +//############################################################################# +// +void + AudioCard::GetEnvironmentSettings(char *env_str) +{ + WORD src_addx = 0xffff; + WORD irq_interrupt = 0xffff; + WORD dma_channel = 0xffff; + WORD mpu_addx = 0xffff; + WORD emu_addx = 0xffff; + + const char *sz_blaster; + + sz_blaster = getenv(env_str); + Check_Pointer(sz_blaster); + + while (*sz_blaster) { + if (*sz_blaster == 'a' || *sz_blaster == 'A') { + ++sz_blaster; + if (*sz_blaster) { + if (*sz_blaster == ':') + ++sz_blaster; + src_addx = GetHexWord(&sz_blaster); + } + } + if (*sz_blaster == 'i' || *sz_blaster == 'I') { + ++sz_blaster; + if (*sz_blaster) { + if (*sz_blaster == ':') + ++sz_blaster; + irq_interrupt = GetHexWord(&sz_blaster); + } + } + if (*sz_blaster == 'd' || *sz_blaster == 'D') { + ++sz_blaster; + if (*sz_blaster) { + if (*sz_blaster == ':') + ++sz_blaster; + dma_channel = GetHexWord(&sz_blaster); + } + } + if (*sz_blaster == 'e' || *sz_blaster == 'E') { + ++sz_blaster; + if (*sz_blaster) { + if (*sz_blaster == ':') + ++sz_blaster; + emu_addx = GetHexWord(&sz_blaster); + } + } + if (*sz_blaster == 'p' || *sz_blaster == 'P') { + ++sz_blaster; + if (*sz_blaster) { + if (*sz_blaster == ':') + ++sz_blaster; + mpu_addx = GetHexWord(&sz_blaster); + } + } + + // + // Skip until blank or end of string + // + while (*sz_blaster && *sz_blaster != ' ') + ++sz_blaster; + while (*sz_blaster == ' ') + ++sz_blaster; + } + + if (emu_addx == 0xffff) + emu_addx = (WORD)(src_addx + 0x400); + + srcAddx = src_addx; + irqInterrupt = irq_interrupt; + dmaChannel = dma_channel; + mpuAddx = mpu_addx; + emuAddx = emu_addx; + + #if DEBUG_LEVEL>0 + Tell("AudioCard::GetEnvironmentSettings: " << env_str << "\n"); + #if 0 + Dump(srcAddx); + Dump(irqInterrupt); + Dump(dmaChannel); + Dump(mpuAddx); + Dump(emuAddx); + #endif + printf(" srcAddx = %x\n", (unsigned)srcAddx); + printf(" irqInterrupt = %x\n", (unsigned)irqInterrupt); + printf(" dmaChannel = %x\n", (unsigned)dmaChannel); + printf(" mpuAddx = %x\n", (unsigned)mpuAddx); + printf(" emuAddx = %x\n", (unsigned)emuAddx); + #endif +} + +// +//############################################################################# +// InitMIDIReceive +// Initializes Sound Blaster to ready to receive data state. +//############################################################################# +// +Logical + AudioCard::InitMIDIReceive() +{ +#if 0 + volatile DWORD dwCount; + + for (dwCount=0; dwCount<0x2000; dwCount++) ; + dwCount = 0x2000; + while (dwCount && _inp(MPUPort(1)) & 0x40) --dwCount; + _outp(MPUPort(1), MPU_RESET_CMD); + + for (dwCount=0; dwCount<0x2000; dwCount++) ; + dwCount = 0x2000; + while (dwCount && _inp(MPUPort(1)) & 0x80) --dwCount; + _inp(MPUPort(0)); + + for (dwCount=0; dwCount<0x2000; dwCount++) ; + dwCount = 0x2000; + while (dwCount && _inp(MPUPort(1)) & 0x40) --dwCount; + _outp(MPUPort(1), MPU_RESET_CMD); + + for (dwCount=0; dwCount<0x2000; dwCount++) ; + dwCount = 0x2000; + while (dwCount && _inp(MPUPort(1)) & 0x80) --dwCount; + _inp(MPUPort(0)); + + for (dwCount=0; dwCount<0x2000; dwCount++) ; + dwCount = 0x2000; + while (dwCount && _inp(MPUPort(1)) & 0x40) --dwCount; + _outp(MPUPort(1), MPU_ENTER_UART); + + for (dwCount=0; dwCount<0x2000; dwCount++) ; + dwCount = 0x2000; + while (dwCount && _inp(MPUPort(1)) & 0x80) --dwCount; + if (!dwCount) return True; + if (_inp(MPUPort(0)) != MPU_ACK_OK) return True; + + // mask MPU-401 interrupt + _outp(SBCPort(0x4), 0x83); + _outp(SBCPort(0x5), _inp(SBCPort(0x5)) & ~0x04); +#endif + return False; +} + +// +//############################################################################# +// CloseMIDIReceive +//############################################################################# +// +void + AudioCard::CloseMIDIReceive() +{ +#if 0 + volatile DWORD dwCount; + + for (dwCount=0; dwCount<0x2000; dwCount++) ; + dwCount = 0x2000; + while (dwCount && _inp(MPUPort(1)) & 0x40) --dwCount; + _outp(MPUPort(1), MPU_RESET_CMD); + for (dwCount=0; dwCount<0x2000; dwCount++) ; + _inp(MPUPort(0)); + + for (dwCount=0; dwCount<0x2000; dwCount++) ; + dwCount = 0x2000; + while (dwCount && _inp(MPUPort(1)) & 0x40) --dwCount; + _outp(MPUPort(1), MPU_RESET_CMD); + for (dwCount=0; dwCount<0x2000; dwCount++) ; + _inp(MPUPort(0)); +#endif +} + +// +//############################################################################# +// IsMIDIAvailable +//############################################################################# +// +Logical + AudioCard::IsMIDIAvailable() +{ +#if 0 + return ((_inp(MPUPort(1)) & 0x80) == 0); +#endif + return False; +} + +// +//############################################################################# +// GetMIDIByte +//############################################################################# +// +MIDIValue + AudioCard::GetMIDIByte() +{ +#if 0 + return (_inp(MPUPort(0))); +#endif + return (MIDIValue)0; +} + +// +//############################################################################# +// InitializeChannels +//############################################################################# +// +void + AudioCard::InitializeChannels() +{ + Check(this); + + // + // Initialize idle channels + // + { + ChainIteratorOf iterator(&idleChannelSocket); + AudioChannel *channel; + + Check(&iterator); + Verify(iterator.GetSize() == (AWE_CHANNEL_COUNT-1)); + while ((channel = iterator.ReadAndNext()) != NULL) + { + Check(channel); + channel->SendPitchBendRange(MIDI_PITCH_BEND_RANGE); + } + } + + // + // Initialize percussive channels + // + { + ChainIteratorOf iterator(&percussionChannelSocket); + AudioChannel *channel; + + Check(&iterator); + Verify(iterator.GetSize() == 1); + channel = iterator.GetCurrent(); + Check(channel); + channel->SendPitchBendRange(MIDI_PITCH_BEND_RANGE); + } +} + +// +//############################################################################# +// LoadSBK +//############################################################################# +// +int + AudioCard::LoadSBK(const char *file_name) +{ +#ifdef AUDIO_HARDWARE + Check(this); + Check_Pointer(file_name); + + int ret; + + Tell("AudioCard::LoadSBK - " << file_name << "\n"); + ret = sosMIDIAWE32SetSBKFile(wDriverHandle, file_name); + Verify_And_Dump(ret >= 0, ret); + Tell("AudioCard::LoadSBK - Finished\n"); + return ret; +#else + return 1; +#endif +} + +// +//############################################################################# +// ReleaseAllBanks +//############################################################################# +// +void + AudioCard::ReleaseAllBanks() +{ +#ifdef AUDIO_HARDWARE + Check(this); + sosMIDIAWE32ReleaseSBKFiles(wDriverHandle); +#endif +} + +// +//############################################################################# +// MIDI methods +//############################################################################# +// + +// +//############################################################################# +//############################################################################# +// +void + AudioCard::SendPitchBend( + MIDIChannel channel, + MIDIPitchBend pitch_bend + ) +{ + MIDIMessage + message( + MIDI_PITCH_BEND_STATUS, + channel, + (MIDIValue)((pitch_bend+8192)%128), + (MIDIValue)((pitch_bend+8192)/128) + ); + SendMIDIMessage(&message, 3); +} + +// +//############################################################################# +//############################################################################# +// +void + AudioCard::SendPitchBendRange( + MIDIChannel channel, + MIDIValue sensitivity + ) +{ + SendController(channel, (MIDIValue)101, (MIDIValue)0); + SendController(channel, (MIDIValue)100, (MIDIValue)0); + SendController(channel, (MIDIValue)6, sensitivity); +} + +// +//############################################################################# +//############################################################################# +// +void + AudioCard::SendNRPN( + MIDIChannel channel, + MIDIValue param_number, + MIDINRPNValue value + ) +{ + // + // Set sound parameter + // + SendController(channel, (MIDIValue)99, (MIDIValue)127); + SendController(channel, (MIDIValue)98, param_number); + + // + // Set parameter value + // + SendController(channel, (MIDIValue)6, (MIDIValue)((value+8192)/128) ); + SendController(channel, (MIDIValue)38, (MIDIValue)((value+8192)%128) ); +} + +// +//############################################################################# +//############################################################################# +// +#define SYSEX_MACRO_LENGTH 11 + +Byte + chorus_sysex[SYSEX_MACRO_LENGTH] = + { + 0xF0, 0x41, 0x10, 0x42, 0x12, 0x40, 0x01, 0x38, 0x00, 0x00, 0xF7 + }; + +Byte + reverb_sysex[SYSEX_MACRO_LENGTH] = + { + 0xF0, 0x41, 0x10, 0x42, 0x12, 0x40, 0x01, 0x30, 0x00, 0x00, 0xF7 + }; + +void + AudioCard::SelectEffect( + MIDIEffectType type, + MIDIValue effect + ) +{ + switch (type) + { + case ChorusMIDIEffectType: + chorus_sysex[8] = effect; + SendSysex(chorus_sysex, SYSEX_MACRO_LENGTH); + break; + + case ReverbMIDIEffectType: + reverb_sysex[8] = effect; + SendSysex(reverb_sysex, SYSEX_MACRO_LENGTH); + break; + } +} + +// +//############################################################################# +//############################################################################# +// +void + AudioCard::SendSysex( + void *data, + size_t length + ) +{ +#ifdef AUDIO_HARDWARE + WORD wError; + + // + // Note - HMI can specify sysex channel via F0, F1, ..., FF + // + #if defined(__BCPLUSPLUS__) + wError = sosMIDISendMIDIData( + wDriverHandle, + (char*)data, + length + ); + #else + wError = sosMIDISendMIDIData( + wDriverHandle, + (Byte*)data, + length + ); + #endif + if (wError != _ERR_NO_ERROR) + { + Fail("AudioCard::SendSysex - wError != _ERR_NO_ERROR"); + } +#endif +} + +#if 0 +// +//############################################################################# +//############################################################################# +// +void + AudioCard::SendMIDIMessage(MIDIMessage *midi_message) +{ +#ifdef AUDIO_HARDWARE + SET_AUDIO_RENDERER_MIDI(); + + Check(midi_message); + + #if 0 + long now = Now(); + Tell(now << "\t" << (int)srcAddx << "\t" << *midi_message << "\t"); + Tell(idleVoices << "\n"); + #endif + + switch (midi_message->message[0] >> 4) { + case MIDI_NOTE_ON_STATUS: + case MIDI_NOTE_OFF_STATUS: + case MIDI_POLYKEY_STATUS: + case MIDI_CONTROLLER_STATUS: + case MIDI_PITCH_BEND_STATUS: + #if DEBUG_LEVEL>0 + { + Word wError = sosMIDISendMIDIData( + wDriverHandle, + (char*)midi_message->message, + 3 + ); + Verify(wError == _ERR_NO_ERROR); + } + #else + sosMIDISendMIDIData( + wDriverHandle, + (char*)midi_message->message, + 3 + ); + #endif + break; + + case MIDI_PROGRAM_CHANGE_STATUS: + case MIDI_CHANNEL_PRESSURE_STATUS: + #if DEBUG_LEVEL>0 + { + Word wError = sosMIDISendMIDIData( + wDriverHandle, + (char*)midi_message->message, + 2 + ); + Verify(wError == _ERR_NO_ERROR); + } + #else + sosMIDISendMIDIData( + wDriverHandle, + (char*)midi_message->message, + 2 + ); + #endif + break; + + default: + // + // Should never reach here + // + Fail("Should never reach here"); + break; + } + CLEAR_AUDIO_RENDERER_MIDI(); +#endif +} +#endif + +// +//############################################################################# +// Channel methods +//############################################################################# +// + +// +//############################################################################# +//############################################################################# +// +AudioChannel* + AudioCard::RequestAudioChannel(AudioVoiceCount voice_count) +{ + Check(this); + + // + // Monitor resource usage + // + #if 0 + #if DEBUG_LEVEL>0 + { + ChainIteratorOf iterator(&idleChannelSocket); + + if (voice_count > idleVoices || iterator.GetSize() == 0) + { + Tell("RequestAudioChannel - voices: " << idleVoices); + Tell(" channels: " << iterator.GetSize()); + Tell("\n"); + } + } + #endif + #endif + + // + // Are there enough voices to allocate + // + if (voice_count > idleVoices) + return NULL; + + // + // Allocate a channel + // + ChainIteratorOf iterator(&idleChannelSocket); + AudioChannel *audio_channel; + + Check(&iterator); + if ((audio_channel = iterator.GetCurrent()) != NULL) + { + Check(audio_channel); + iterator.Remove(); + idleVoices -= voice_count; + audio_channel->SetVoicesUsed(voice_count); + + return audio_channel; + } + return NULL; +} + +// +//############################################################################# +//############################################################################# +// +void + AudioCard::ReleaseAudioChannel(AudioChannel *audio_channel) +{ + Check(this); + Check(audio_channel); + + #if 0 + Tell("AudioCard::ReleaseAudioChannel - Released channel\n"); + Tell(" "); + Dump((int)audio_channel->GetChannelNumber()); + #endif + + // + // Add to idle list + // + idleVoices += audio_channel->GetVoicesUsed(); + Verify(idleVoices > 0 && idleVoices <= AWE_VOICE_COUNT); + audio_channel->SetVoicesUsed(0); + + idleChannelSocket.Add(audio_channel); +} + +// +//############################################################################# +// GetHexWord +//############################################################################# +// +WORD + AudioCard::GetHexWord(const char ** s) +{ + WORD n = 0; + + while (**s) { + if (**s >= '0' && **s <= '9') + n = (WORD)(n * 16 + (*(*s)++ - '0')); + else + if (**s >= 'a' && **s <= 'f') + n = (WORD)(n * 16 + (*(*s)++ - 'a') + 10); + else + if (**s >= 'A' && **s <= 'F') + n = (WORD)(n * 16 + (*(*s)++ - 'A') + 10); + else + break; + } + return n; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ AudioHardware ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +// +//############################################################################# +// AudioHardware +//############################################################################# +// +AudioHardware::AudioHardware() +{ +} + +// +//############################################################################# +// ~AudioHardware +//############################################################################# +// +AudioHardware::~AudioHardware() +{ +} + +// +//############################################################################# +// TestInstance +//############################################################################# +// +Logical + AudioHardware::TestInstance() const +{ + Node::TestInstance(); + Check(&frontCard); + Check(&rearCard); + return True; +} + +// +//############################################################################# +// Initialize +//############################################################################# +// +void + AudioHardware::Initialize() +{ +#ifdef AUDIO_HARDWARE + Tell("AudioHardware::Initialize - Start\n"); + + #if 0 + // + // initialize the TIMER system and tell it to call the DOS timer + // at a rate of 19 times/second. the actual rate is 18.2, but + // 19 is a good approximation. + // + if (getenv(TIMER_ENV) == NULL) // L4Time is not setting up timer + { + sosTIMERInitSystem(_TIMER_DOS_RATE, _SOS_DEBUG_NORMAL); + } + #endif + + // + // initialize the MIDI system + // + sosMIDIInitSystem((PSTR)_SOS_DRIVER_PATH, _SOS_DEBUG_NORMAL); + + // + // initialize the cards + // + frontCard.GetEnvironmentSettings(FRONT_CARD_ENV_VAR); + rearCard.GetEnvironmentSettings(REAR_CARD_ENV_VAR); + frontCard.Initialize(); + rearCard.Initialize(); + + // + // Setup standard channel attributes + // + frontCard.InitializeChannels(); + rearCard.InitializeChannels(); + + Tell("AudioHardware::Initialize - Finish\n"); +#endif +} + +// +//############################################################################# +// Close +//############################################################################# +// +void + AudioHardware::Close() +{ +#ifdef AUDIO_HARDWARE + Check(this); + + // + // Close the cards + // + frontCard.Close(); + rearCard.Close(); + + #if 0 + // + // Uninitialize the TIMER system and pass it the value to write to the + // timer chip to reset the timer, 0 is equivalent to 18.2 times/second + // which is the DOS clock rate. the calculation for the value to pass + // is 1193180/RATE. + // + if (getenv(TIMER_ENV) == NULL) // L4Time is not setting up timer + { + sosTIMERUnInitSystem(0); + } + sosTIMERUnInitSystem(0); + #endif + + // + // Uninitialize the MIDI system + // + sosMIDIUnInitSystem(); +#endif +} + +#ifdef TEST_CLASS +# include "l4audhdw.tcp" +#endif diff --git a/CODE/RP/MUNGA_L4/L4AUDHDW.HPP b/CODE/RP/MUNGA_L4/L4AUDHDW.HPP new file mode 100644 index 0000000..e972435 --- /dev/null +++ b/CODE/RP/MUNGA_L4/L4AUDHDW.HPP @@ -0,0 +1,821 @@ +//===========================================================================// +// File: l4audhdw.hh // +// Project: MUNGA Brick: Audio Manager // +// Contents: Spec for audio manager // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 01/25/95 ECH Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1994, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(L4AUDHDW_HPP) +# define L4AUDHDW_HPP + +# define AUDIO_HARDWARE + +# if !defined(STYLE_HPP) +# include +# endif + +# ifdef AUDIO_HARDWARE +# ifndef _SOS_MIDI_DEFINED +# include +# endif +# else + typedef Byte BYTE; + typedef Word WORD; +# endif + +# if !defined(NODE_HPP) +# include +# endif + +# if !defined(SCHAIN_HPP) +# include +# endif + +# if !defined(AUDIO_HPP) +# include +# endif + + #if defined(TRACE_AUDIO_RENDERER_MIDI) + extern BitTrace Audio_Renderer_MIDI("Audio Renderer MIDI"); + #define SET_AUDIO_RENDERER_MIDI() Audio_Renderer_MIDI.Set() + #define CLEAR_AUDIO_RENDERER_MIDI() Audio_Renderer_MIDI.Clear() + #else + #define SET_AUDIO_RENDERER_MIDI() + #define CLEAR_AUDIO_RENDERER_MIDI() + #endif + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ MIDI types ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + typedef unsigned char MIDIStatus; + typedef unsigned char MIDIChannel; + typedef unsigned char MIDIValue; + typedef int MIDIPitchBend; + typedef int MIDINRPNValue; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~ MIDI status ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + #define MIDI_CHANNEL_COUNT (16) + + #define MIDI_NOTE_OFF_STATUS ((MIDIValue)0x8) // 8 + #define MIDI_NOTE_ON_STATUS ((MIDIValue)0x9) // 9 + #define MIDI_POLYKEY_STATUS ((MIDIValue)0xa) // 10 + #define MIDI_CONTROLLER_STATUS ((MIDIValue)0xb) // 11 + #define MIDI_PROGRAM_CHANGE_STATUS ((MIDIValue)0xc) // 12 + #define MIDI_CHANNEL_PRESSURE_STATUS ((MIDIValue)0xd) // 13 + #define MIDI_PITCH_BEND_STATUS ((MIDIValue)0xe) // 14 + + //~~~~~~~~~~~~~~~~~~~~~~~~~~ MIDI controllers ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + #define MIDI_MAX_CONTROL_VALUE ((MIDIValue)127) + #define MIDI_MIN_CONTROL_VALUE ((MIDIValue)0) + + #define MIDI_LEFT_PAN_VALUE ((MIDIValue)0) + #define MIDI_CENTER_PAN_VALUE ((MIDIValue)63) + #define MIDI_RIGHT_PAN_VALUE ((MIDIValue)127) + + #define MIDI_VOLUME_CONTROL ((MIDIValue)7) + #define MIDI_PAN_CONTROL ((MIDIValue)10) + #define MIDI_REVERB_CONTROL ((MIDIValue)91) + #define MIDI_CHORUS_CONTROL ((MIDIValue)93) + #define MIDI_CONTROL_RESET ((MIDIValue)121) + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ MIDI notes ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + #define MIDI_DEFAULT_NOTE ((MIDIValue)60) + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ MIDI pitch ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + #define MIDI_PITCH_BEND_MAX ((MIDIPitchBend)8191) + #define MIDI_PITCH_BEND_RANGE ((MIDIValue)24) + #define MIDI_PITCH_BEND_CENTS (24*100) + #define MIDI_PITCH_PER_CENTS ((Scalar)MIDI_PITCH_BEND_MAX / \ + (Scalar)MIDI_PITCH_BEND_CENTS) + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ AWE NRPN ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + #define AWE_VOL_ATTACK_TIME_NRPN ((MIDIValue)11) + #define AWE_PITCH_NRPN ((MIDIValue)16) + #define AWE_FILTER_CUTOFF_NRPN ((MIDIValue)21) + + #define AWE_VOL_ATTACK_TIME_RANGE ((MIDINRPNValue)5940) // 0...5.9 secs + #define AWE_FILTER_CUTOFF_RANGE ((MIDINRPNValue)127) // 100...8000 Hz + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~ AWE effects ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + typedef enum { + ChorusMIDIEffectType, + ReverbMIDIEffectType + } MIDIEffectType; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~ AWE resources ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + #define AWE_VOICE_COUNT (32) + #define AWE_CHANNEL_COUNT (16) + #define AWE_PERCUSSIVE_CHANNEL (9) + + // + // Driver type to use + // + #define _MIDI_DRIVER_TYPE _MIDI_AWE32 + + // + // Path to the driver file + // + #define _SOS_DRIVER_PATH _NULL + + // + // AWE environment variables + // + #define FRONT_CARD_ENV_VAR "AWE_FRONT" + #define REAR_CARD_ENV_VAR "AWE_REAR" + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ MIDIMessage ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + #define MIDI_MESSAGE_SIZE (3) + + class MIDIMessage SIGNATURED + { + friend class AudioCard; + friend ostream& + operator << ( + ostream &strm, + const MIDIMessage &midi_message + ); + + public: + MIDIMessage( + MIDIStatus status, + MIDIChannel channel, + MIDIValue byte1, + MIDIValue byte2 = 0 + ); + ~MIDIMessage() {} + + Logical + TestInstance() const; + + private: + MIDIValue + message[MIDI_MESSAGE_SIZE]; + }; + + inline MIDIMessage::MIDIMessage( + MIDIStatus status, + MIDIChannel channel, + MIDIValue byte1, + MIDIValue byte2 + ) + { + message[0] = (MIDIValue)((status << 4) | channel); + message[1] = byte1; + message[2] = byte2; + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ AudioChannel ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + typedef enum + { + InstrumentAudioChannelType = 0, + PercussionAudioChannelType + } AudioChannelType; + + class AudioCard; + + class AudioChannel: + public Plug + { + public: + // + //-------------------------------------------------------------------- + // Constructor, Destructor, Testing + //-------------------------------------------------------------------- + // + AudioChannel( + AudioChannelType audio_channel_type, + MIDIChannel midi_channel, + AudioCard *audio_card + ); + ~AudioChannel(); + + Logical + TestInstance() const; + + // + //-------------------------------------------------------------------- + // Accessors + //-------------------------------------------------------------------- + // + AudioChannelType + GetAudioChannelType() + {return audioChannelType;} + MIDIChannel + GetChannelNumber() + {return midiChannel;} + void + SetVoicesUsed(AudioVoiceCount voices_used) + {voicesUsed = voices_used;} + AudioVoiceCount + GetVoicesUsed() + {return voicesUsed;} + + // + //-------------------------------------------------------------------- + // MIDI methods + //-------------------------------------------------------------------- + // + void + SendNoteOn( + MIDIValue key, + MIDIValue velocity + ); + void + SendNoteOff( + MIDIValue key, + MIDIValue velocity + ); + void + SendProgramChange( + MIDIValue program + ); + void + SendController( + MIDIValue controller, + MIDIValue value + ); + void + SendPolyKeyPressure( + MIDIValue key, + MIDIValue value + ); + void + SendChannelPressure( + MIDIValue value + ); + void + SendPitchBend( + MIDIPitchBend pitch_bend + ); + void + SendPitchBendRange( + MIDIValue sensitivity + ); + void + SendNRPN( + MIDIValue paramNumber, + MIDINRPNValue value + ); + void + SelectEffect( + MIDIEffectType type, + MIDIValue effect + ); + void + SelectBank( + MIDIValue bank + ); + + // + //-------------------------------------------------------------------- + // Release + //-------------------------------------------------------------------- + // + void + Release(); + + private: + // + //-------------------------------------------------------------------- + // Private data + //-------------------------------------------------------------------- + // + AudioChannelType + audioChannelType; + MIDIChannel + midiChannel; + AudioVoiceCount + voicesUsed; + AudioCard + *audioCard; + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ AudioCard ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class AudioCard: + public Node + { + friend class AudioHardware; + + public: + // + //-------------------------------------------------------------------- + // Constructor, Destructor, Testing + //-------------------------------------------------------------------- + // + AudioCard(); + ~AudioCard(); + + Logical + TestInstance() const; + + // + //-------------------------------------------------------------------- + // Public methods + //-------------------------------------------------------------------- + // + void + Initialize(); + void + Close(); + void + GetEnvironmentSettings(char *env_str); + + Logical + InitMIDIReceive(); + void + CloseMIDIReceive(); + Logical + IsMIDIAvailable(); + MIDIValue + GetMIDIByte(); + + void + InitializeChannels(); + int + LoadSBK(const char *file_name); + void + ReleaseAllBanks(); + + // + //-------------------------------------------------------------------- + // MIDI methods + //-------------------------------------------------------------------- + // + void + SendNoteOn( + MIDIChannel channel, + MIDIValue key, + MIDIValue velocity + ); + void + SendNoteOff( + MIDIChannel channel, + MIDIValue key, + MIDIValue velocity + ); + void + SendProgramChange( + MIDIChannel channel, + MIDIValue program + ); + void + SendController( + MIDIChannel channel, + MIDIValue controller, + MIDIValue value + ); + void + SendPolyKeyPressure( + MIDIChannel channel, + MIDIValue key, + MIDIValue value + ); + void + SendChannelPressure( + MIDIChannel channel, + MIDIValue value + ); + void + SendPitchBendRange( + MIDIChannel channel, + MIDIValue sensitivity + ); + void + SendPitchBend( + MIDIChannel channel, + MIDIPitchBend pitch_bend + ); + void + SendSysex( + void *data, + size_t length + ); + void + SendNRPN( + MIDIChannel channel, + MIDIValue paramNumber, + MIDINRPNValue value + ); + void + SelectEffect( + MIDIEffectType type, + MIDIValue effect + ); + void + SelectBank( + MIDIChannel channel, + MIDIValue bank + ); + void + SendMIDIMessage( + MIDIMessage *midi_message, + Word length + ); + + // + //-------------------------------------------------------------------- + // Channel methods + //-------------------------------------------------------------------- + // + AudioChannel* + RequestAudioChannel(AudioVoiceCount voice_count); + void + ReleaseAudioChannel(AudioChannel *audio_channel); + + private: + // + //-------------------------------------------------------------------- + // Private methods + //-------------------------------------------------------------------- + // + WORD + GetHexWord(const char ** s); + + // + //-------------------------------------------------------------------- + // Private data + //-------------------------------------------------------------------- + // + + // + // Card addresses + // + WORD srcAddx; + WORD irqInterrupt; + WORD dmaChannel; + WORD mpuAddx; + WORD emuAddx; + + // + // Structure for the MIDI driver initialization function + // Structure for the MIDI driver hardware + // + #ifdef AUDIO_HARDWARE + _SOS_MIDI_INIT_DRIVER sSOSMIDIInitDriver; + _SOS_MIDI_HARDWARE sSOSMIDIHardware; + #endif + + // + // Handle for the loaded MIDI driver + // + WORD wDriverHandle; + + // + // Number of free voices + // + AudioVoiceCount + idleVoices; + + // + // Idle channels + // + ChainOf + idleChannelSocket; + ChainOf + percussionChannelSocket; + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ AudioHardware ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class AudioHardware: + public Node + { + public: + // + //-------------------------------------------------------------------- + // Constructor, Destructor, Testing + //-------------------------------------------------------------------- + // + AudioHardware(); + ~AudioHardware(); + + Logical + TestInstance() const; + static Logical + TestClass(); + static Logical + ProfileClass(); + + // + //-------------------------------------------------------------------- + // Public methods + //-------------------------------------------------------------------- + // + void + Initialize(); + void + Close(); + + // + //-------------------------------------------------------------------- + // Card Access + //-------------------------------------------------------------------- + // + AudioCard* + GetFrontCard(); + + AudioCard* + GetRearCard(); + + private: + // + //-------------------------------------------------------------------- + // Private methods + //-------------------------------------------------------------------- + // + + // + //-------------------------------------------------------------------- + // Private data + //-------------------------------------------------------------------- + // + AudioCard + frontCard; + AudioCard + rearCard; + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~ AudioCard inlines ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + inline void + AudioCard::SendMIDIMessage( + MIDIMessage *midi_message, + Word length + ) + { + #ifdef AUDIO_HARDWARE + SET_AUDIO_RENDERER_MIDI(); + + Check_Signature(midi_message); + #if DEBUG_LEVEL>0 + switch (midi_message->message[0] >> 4) + { + case MIDI_NOTE_ON_STATUS: + case MIDI_NOTE_OFF_STATUS: + case MIDI_POLYKEY_STATUS: + case MIDI_CONTROLLER_STATUS: + case MIDI_PITCH_BEND_STATUS: + Verify(length == 3); + break; + + case MIDI_PROGRAM_CHANGE_STATUS: + case MIDI_CHANNEL_PRESSURE_STATUS: + Verify(length == 2); + break; + default: + Fail("Should never reach here"); + break; + } + #endif + + #if DEBUG_LEVEL>0 + { + Word wError = sosMIDISendMIDIData( + wDriverHandle, + (char*)midi_message->message, + length + ); + Verify(wError == _ERR_NO_ERROR); + } + #else + sosMIDISendMIDIData( + wDriverHandle, + (char*)midi_message->message, + length + ); + #endif + CLEAR_AUDIO_RENDERER_MIDI(); + #endif + } + + // + //-------------------------------------------------------------------- + // MIDI methods + //-------------------------------------------------------------------- + // + inline void + AudioCard::SendNoteOn( + MIDIChannel channel, + MIDIValue key, + MIDIValue velocity + ) + { + MIDIMessage message(MIDI_NOTE_ON_STATUS, channel, key, velocity); + SendMIDIMessage(&message, 3); + } + + inline void + AudioCard::SendNoteOff( + MIDIChannel channel, + MIDIValue key, + MIDIValue velocity + ) + { + MIDIMessage message(MIDI_NOTE_OFF_STATUS, channel, key, velocity); + SendMIDIMessage(&message, 3); + } + + inline void + AudioCard::SendProgramChange( + MIDIChannel channel, + MIDIValue program + ) + { + MIDIMessage message(MIDI_PROGRAM_CHANGE_STATUS, channel, program); + SendMIDIMessage(&message, 2); + } + + inline void + AudioCard::SendController( + MIDIChannel channel, + MIDIValue controller, + MIDIValue value + ) + { + MIDIMessage message(MIDI_CONTROLLER_STATUS, channel, controller, value); + SendMIDIMessage(&message, 3); + } + + inline void + AudioCard::SendPolyKeyPressure( + MIDIChannel channel, + MIDIValue key, + MIDIValue value + ) + { + MIDIMessage message(MIDI_POLYKEY_STATUS, channel, key, value); + SendMIDIMessage(&message, 3); + } + + inline void + AudioCard::SendChannelPressure( + MIDIChannel channel, + MIDIValue value + ) + { + MIDIMessage message(MIDI_CHANNEL_PRESSURE_STATUS, channel, value); + SendMIDIMessage(&message, 2); + } + + inline void + AudioCard::SelectBank( + MIDIChannel channel, + MIDIValue bank + ) + { + SendController(channel, (MIDIValue)0, bank); + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~ AudioChannel inlines ~~~~~~~~~~~~~~~~~~~~~~~~~~ + + // + //-------------------------------------------------------------------- + // MIDI methods + //-------------------------------------------------------------------- + // + inline void + AudioChannel::SendNoteOn( + MIDIValue key, + MIDIValue velocity + ) + { + Check(audioCard); + audioCard->SendNoteOn(midiChannel,key,velocity); + } + + inline void + AudioChannel::SendNoteOff( + MIDIValue key, + MIDIValue velocity + ) + { + Check(audioCard); + audioCard->SendNoteOff(midiChannel,key,velocity); + } + + inline void + AudioChannel::SendProgramChange( + MIDIValue program + ) + { + Check(audioCard); + audioCard->SendProgramChange(midiChannel,program); + } + + inline void + AudioChannel::SendController( + MIDIValue controller, + MIDIValue value + ) + { + Check(audioCard); + audioCard->SendController(midiChannel,controller,value); + } + + inline void + AudioChannel::SendPolyKeyPressure( + MIDIValue key, + MIDIValue value + ) + { + Check(audioCard); + audioCard->SendPolyKeyPressure(midiChannel,key,value); + } + + inline void + AudioChannel::SendChannelPressure( + MIDIValue value + ) + { + Check(audioCard); + audioCard->SendChannelPressure(midiChannel,value); + } + + inline void + AudioChannel::SendPitchBend( + MIDIPitchBend pitch_bend + ) + { + Check(audioCard); + audioCard->SendPitchBend(midiChannel,pitch_bend); + } + + inline void + AudioChannel::SendPitchBendRange( + MIDIValue sensitivity + ) + { + Check(audioCard); + audioCard->SendPitchBendRange(midiChannel,sensitivity); + } + + inline void + AudioChannel::SelectEffect( + MIDIEffectType type, + MIDIValue effect + ) + { + Check(audioCard); + audioCard->SelectEffect(type,effect); + } + + inline void + AudioChannel::SendNRPN( + MIDIValue paramNumber, + MIDINRPNValue value + ) + { + Check(audioCard); + audioCard->SendNRPN(midiChannel,paramNumber,value); + } + + inline void + AudioChannel::SelectBank( + MIDIValue bank + ) + { + Check(audioCard); + audioCard->SelectBank(midiChannel,bank); + } + + inline void + AudioChannel::Release() + { + Check(audioCard); + audioCard->ReleaseAudioChannel(this); + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~ AudioHardware inlines ~~~~~~~~~~~~~~~~~~~~~~~~~~ + + inline AudioCard* + AudioHardware::GetFrontCard() + { + Check(this); + return &frontCard; + } + + inline AudioCard* + AudioHardware::GetRearCard() + { + Check(this); + return &rearCard; + } + +#endif + diff --git a/CODE/RP/MUNGA_L4/L4AUDHDW.TCP b/CODE/RP/MUNGA_L4/L4AUDHDW.TCP new file mode 100644 index 0000000..c79b5ff --- /dev/null +++ b/CODE/RP/MUNGA_L4/L4AUDHDW.TCP @@ -0,0 +1,1854 @@ +//===========================================================================// +// File: audhdw.thh // +// Project: MUNGA Brick: Audio Manager // +// Contents: Spec for audio manager // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 01/25/95 ECH Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1994, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#include +#include +#include + +#define BUILD_NOISE_PHASE_TEST +//#define BUILD_TONE_PHASE_TEST +//#define BUILD_LOUDNESS_TEST +//#define BUILD_CHAN_TEST +//#define BUILD_SND_PLAY + +// +//############################################################################# +// TonePhaseTest +//############################################################################# +// +class TonePhaseTest SIGNATURED +{ +public: + typedef enum + { + InPhase = 1, + OutOfPhase, + FrontSpeakers, + RearSpeakers, + StartTone, + PrintMenu, + StopCurrentTest + } Command; + + TonePhaseTest(AudioHardware *audio_hardware); + Logical TestInstance() const; + void Run(); + void DoCommand(Command command); + + AudioHardware *audioHardware; + Command phaseCommand; + Command positionCommand; + short program; + Logical runningTest; +}; + +TonePhaseTest::TonePhaseTest(AudioHardware *audio_hardware) +{ + Check(audio_hardware); + audioHardware = audio_hardware; + phaseCommand = InPhase; + positionCommand = FrontSpeakers; + program = 0; + runningTest = False; +} + +Logical + TonePhaseTest::TestInstance() const +{ + Check(audioHardware); + return True; +} + +void + TonePhaseTest::Run() +{ + Check(this); + + Logical quit_test = False; + int input_char; + + // + // Load SBKs + // + Check(audioHardware); + audioHardware->GetFrontCard()->LoadSBK("tonephaz.sbk"); + audioHardware->GetRearCard()->LoadSBK("tonephaz.sbk"); + + DoCommand(PrintMenu); + + while (!quit_test) + { + // + // Get event from keyboard + // + if (kbhit()) + { + input_char = getch(); + if (input_char == '' && !runningTest) + { + quit_test = True; + continue; + } + else if (input_char == '' && runningTest) + { + DoCommand(StopCurrentTest); + DoCommand(PrintMenu); + } + else + { + Command input_command = (Command)(input_char - '0'); + + if (input_command >= InPhase && input_command <= StartTone) + { + DoCommand(StopCurrentTest); + DoCommand(input_command); + } + } + } + } +} + +void + TonePhaseTest::DoCommand(Command command) +{ + Check(this); + + Logical start_test = False; + + // + // Do the command + // + switch (command) + { + case InPhase: + Tell("In Phase\n"); + phaseCommand = InPhase; + break; + + case OutOfPhase: + Tell("Out Of Phase\n"); + phaseCommand = OutOfPhase; + break; + + case FrontSpeakers: + Tell("Front speakers\n"); + positionCommand = FrontSpeakers; + break; + + case RearSpeakers: + Tell("Rear speakers\n"); + positionCommand = RearSpeakers; + break; + + case StartTone: + Tell("Start Tone\n"); + if (phaseCommand == InPhase) + program = 0; + else + program = 1; + start_test = True; + break; + + case PrintMenu: + // + // Print menu + // + Tell("\n"); + Tell("<1> In Phase\n"); + Tell("<2> Out Of Phase\n"); + Tell("<3> Front speakers\n"); + Tell("<4> Rear speakers\n"); + Tell("<5> Start Tone\n"); + Tell(" to end\n\n"); + break; + + case StopCurrentTest: + if (runningTest) + { + Tell("End current test\n"); + if (positionCommand == FrontSpeakers) + { + audioHardware->GetFrontCard()->SendNoteOff(0, 60, 0); + } + else + { + audioHardware->GetRearCard()->SendNoteOff(0, 60, 0); + } + runningTest = False; + } + break; + } + + if (start_test) + { + if (positionCommand == FrontSpeakers) + { + audioHardware->GetFrontCard()->SendController(0, 121, 1); // Reset + audioHardware->GetFrontCard()->SendController(0, 0, 1); // Bank + audioHardware->GetFrontCard()->SendController(0, 91, 0); // Reverb + audioHardware->GetFrontCard()->SendController(0, 93, 0); // Chorus + audioHardware->GetFrontCard()->SendProgramChange(0, program); + audioHardware->GetFrontCard()->SendNoteOn(0, 60, 127); + } + else + { + audioHardware->GetRearCard()->SendController(0, 121, 1); // Reset + audioHardware->GetRearCard()->SendController(0, 0, 1); // Bank + audioHardware->GetRearCard()->SendController(0, 91, 0); // Reverb + audioHardware->GetRearCard()->SendController(0, 93, 0); // Chorus + audioHardware->GetRearCard()->SendProgramChange(0, program); + audioHardware->GetRearCard()->SendNoteOn(0, 60, 127); + } + runningTest = True; + } +} + +// +//############################################################################# +// NoisePhaseTest +//############################################################################# +// +class NoisePhaseTest SIGNATURED +{ +public: + typedef enum + { + InPhase = 1, + OutOfPhase, + FrontSpeakers, + RearSpeakers, + AllSpeakers, + LowNoise, + MidNoise, + HighNoise, + PrintMenu, + StopCurrentTest + } Command; + + NoisePhaseTest(AudioHardware *audio_hardware); + Logical TestInstance() const; + void Run(); + void DoCommand(Command command); + + AudioHardware *audioHardware; + Command phaseCommand; + Command positionCommand; + short program; + Logical runningTest; +}; + +NoisePhaseTest::NoisePhaseTest(AudioHardware *audio_hardware) +{ + Check(audio_hardware); + audioHardware = audio_hardware; + phaseCommand = InPhase; + positionCommand = FrontSpeakers; + program = 0; + runningTest = False; +} + +Logical + NoisePhaseTest::TestInstance() const +{ + Check(audioHardware); + return True; +} + +void + NoisePhaseTest::Run() +{ + Check(this); + + Logical quit_test = False; + int input_char; + + // + // Load SBKs + // + Check(audioHardware); + audioHardware->GetFrontCard()->LoadSBK("noizphaz.sbk"); + audioHardware->GetRearCard()->LoadSBK("noizphaz.sbk"); + + DoCommand(PrintMenu); + + while (!quit_test) + { + // + // Get event from keyboard + // + if (kbhit()) + { + input_char = getch(); + if (input_char == '' && !runningTest) + { + quit_test = True; + continue; + } + else if (input_char == '' && runningTest) + { + DoCommand(StopCurrentTest); + DoCommand(PrintMenu); + } + else + { + Command input_command = (Command)(input_char - '0'); + + if (input_command >= InPhase && input_command <= HighNoise) + { + DoCommand(StopCurrentTest); + DoCommand(input_command); + } + } + } + } +} + +void + NoisePhaseTest::DoCommand(Command command) +{ + Check(this); + + Logical start_test = False; + + // + // Do the command + // + switch (command) + { + case InPhase: + Tell("In Phase\n"); + phaseCommand = InPhase; + break; + + case OutOfPhase: + Tell("Out Of Phase\n"); + phaseCommand = OutOfPhase; + break; + + case FrontSpeakers: + Tell("Front speakers\n"); + positionCommand = FrontSpeakers; + break; + + case RearSpeakers: + Tell("Rear speakers\n"); + positionCommand = RearSpeakers; + break; + + case AllSpeakers: + Tell("All speakers\n"); + positionCommand = AllSpeakers; + break; + + case LowNoise: + Tell("Start Low noise\n"); + if (phaseCommand == InPhase) + program = 4; + else + program = 5; + start_test = True; + break; + + case MidNoise: + Tell("Start Med noise\n"); + if (phaseCommand == InPhase) + program = 2; + else + program = 3; + start_test = True; + break; + + case HighNoise: + Tell("Start High noise\n"); + if (phaseCommand == InPhase) + program = 0; + else + program = 1; + start_test = True; + break; + + case PrintMenu: + // + // Print menu + // + Tell("\n"); + Tell("<1> In Phase\n"); + Tell("<2> Out Of Phase\n"); + Tell("<3> Front speakers\n"); + Tell("<4> Rear speakers\n"); + Tell("<5> All speakers\n"); + Tell("<6> Start Low noise\n"); + Tell("<7> Start Med noise\n"); + Tell("<8> Start High noise\n"); + Tell(" to end\n\n"); + break; + + case StopCurrentTest: + if (runningTest) + { + Tell("End current test\n"); + + if (positionCommand == FrontSpeakers || positionCommand == AllSpeakers) + { + audioHardware->GetFrontCard()->SendNoteOff(0, 60, 0); + } + if (positionCommand == RearSpeakers || positionCommand == AllSpeakers) + { + audioHardware->GetRearCard()->SendNoteOff(0, 60, 0); + } + runningTest = False; + } + break; + } + + if (start_test) + { + if (positionCommand == FrontSpeakers || positionCommand == AllSpeakers) + { + audioHardware->GetFrontCard()->SendController(0, 121, 1); // Reset + audioHardware->GetFrontCard()->SendController(0, 0, 1); // Bank + audioHardware->GetFrontCard()->SendController(0, 91, 0); // Reverb + audioHardware->GetFrontCard()->SendController(0, 93, 0); // Chorus + audioHardware->GetFrontCard()->SendProgramChange(0, program); + audioHardware->GetFrontCard()->SendNoteOn(0, 60, 127); + } + if (positionCommand == RearSpeakers || positionCommand == AllSpeakers) + { + audioHardware->GetRearCard()->SendController(0, 121, 1); // Reset + audioHardware->GetRearCard()->SendController(0, 0, 1); // Bank + audioHardware->GetRearCard()->SendController(0, 91, 0); // Reverb + audioHardware->GetRearCard()->SendController(0, 93, 0); // Chorus + audioHardware->GetRearCard()->SendProgramChange(0, program); + audioHardware->GetRearCard()->SendNoteOn(0, 60, 127); + } + runningTest = True; + } +} + +// +//############################################################################# +// LoudnessTest +//############################################################################# +// +#define AWE_VOL_ENV_VAR "AWE_MASTER_VOLUME" + +class LoudnessTest SIGNATURED +{ +public: + typedef enum + { + SetLevel = 1, + PlayNoise, + StopNoise, + PrintMenu + } Command; + + LoudnessTest(AudioHardware *audio_hardware); + Logical TestInstance() const; + void Run(); + void DoCommand(Command command); + + AudioHardware *audioHardware; + Command command; + Logical runningTest; + int currentVolume; +}; + +LoudnessTest::LoudnessTest(AudioHardware *audio_hardware) +{ + char *loudness_environment; + + if ((loudness_environment = getenv(AWE_VOL_ENV_VAR)) == NULL) + currentVolume = 160; + else + currentVolume = atoi(loudness_environment); + + Check(audio_hardware); + audioHardware = audio_hardware; + command = PlayNoise; + runningTest = False; +} + +Logical + LoudnessTest::TestInstance() const +{ + Check(audioHardware); + return True; +} + +void + LoudnessTest::Run() +{ + Check(this); + + Logical quit_test = False; + int input_char; + + // + // Load SBKs + // + Check(audioHardware); + audioHardware->GetFrontCard()->LoadSBK("loudness.sbk"); + audioHardware->GetRearCard()->LoadSBK("loudness.sbk"); + + DoCommand(PrintMenu); + DoCommand(PlayNoise); + + while (!quit_test) + { + // + // Get event from keyboard + // + if (kbhit()) + { + input_char = getch(); + if (input_char == '') + { + DoCommand(StopNoise); + quit_test = True; + } + else + { + Command input_command = (Command)(input_char - '0'); + + if (input_command == SetLevel) + { + DoCommand(StopNoise); + DoCommand(SetLevel); + quit_test = True; + } + } + } + } +} + +void + LoudnessTest::DoCommand(Command command) +{ + Check(this); + + // + // Do the command + // + switch (command) + { + case PlayNoise: + audioHardware->GetFrontCard()->SendController(0, 121, 1); // Reset + audioHardware->GetFrontCard()->SendController(0, 0, 1); // Bank + audioHardware->GetFrontCard()->SendController(0, 91, 0); // Reverb + audioHardware->GetFrontCard()->SendController(0, 93, 0); // Chorus + audioHardware->GetFrontCard()->SendProgramChange(0, 0); + audioHardware->GetFrontCard()->SendNoteOn(0, 60, 127); + + audioHardware->GetRearCard()->SendController(0, 121, 1); // Reset + audioHardware->GetRearCard()->SendController(0, 0, 1); // Bank + audioHardware->GetRearCard()->SendController(0, 91, 0); // Reverb + audioHardware->GetRearCard()->SendController(0, 93, 0); // Chorus + audioHardware->GetRearCard()->SendProgramChange(0, 0); + audioHardware->GetRearCard()->SendNoteOn(0, 60, 127); + break; + + case StopNoise: + audioHardware->GetFrontCard()->SendNoteOff(0, 60, 0); + audioHardware->GetRearCard()->SendNoteOff(0, 60, 0); + break; + + case SetLevel: + { + // + // Read the specified input level + // + int input_level = -1; + + while (input_level < 0 || 255 < input_level) + { + Tell( + "\nSet Level (0-255) (Current Level=" << + currentVolume << + "): " + ); + cin >> input_level; + if (input_level < 0 || 255 < input_level) + { + Tell("Valid entries are 0 to 255.\n"); + } + } + + // + // Write the bat file + // + ofstream output_file("setvol.bat", ios::out); + + Verify(output_file); + output_file << "set " << AWE_VOL_ENV_VAR "=" << input_level << "\n"; + } + break; + + case PrintMenu: + // + // Print menu + // + Tell("\n"); + Tell("Current Level=" << currentVolume << "\n"); + Tell("\n"); + Tell("<1> Set Level\n"); + Tell(" to end\n\n"); + break; + } +} + +// +//############################################################################# +// TestClass +//############################################################################# +// +#define RAD360 (6.28318) + +Logical + AudioHardware::TestClass() +{ + AudioHardware audio_hardware; + + audio_hardware.Initialize(); + + // + //-------------------------------------------------------------------------- + // Noise Phase Test + //-------------------------------------------------------------------------- + // + #if defined(BUILD_NOISE_PHASE_TEST) + { + NoisePhaseTest noise_phase_test(&audio_hardware); + + noise_phase_test.Run(); + } + #endif + + // + //-------------------------------------------------------------------------- + // Tone Phase Test + //-------------------------------------------------------------------------- + // + #if defined(BUILD_TONE_PHASE_TEST) + { + TonePhaseTest tone_phase_test(&audio_hardware); + + tone_phase_test.Run(); + } + #endif + + // + //-------------------------------------------------------------------------- + // Loudness Test + //-------------------------------------------------------------------------- + // + #if defined(BUILD_LOUDNESS_TEST) + { + LoudnessTest loudness_test(&audio_hardware); + + loudness_test.Run(); + } + #endif + + // + //------------------------------------------------------------------ + // Revised Speaker Channel Test + //------------------------------------------------------------------ + // + #if defined(BUILD_CHAN_TEST) + { + clock_t end_time; + MIDIValue channel; + MIDIValue panValue; + MIDIValue program; + int speakSelect, front, rear, waitTime; + + speakSelect = 1; + waitTime = 4; + + // + // Load SBKs + // + audio_hardware.frontCard.LoadSBK("chantest.sbk"); + audio_hardware.rearCard.LoadSBK("chantest.sbk"); + + // + // Init channels + // + channel = 0; + { + // + // Set to second bank + // + + // Card 1 + audio_hardware.frontCard.SendController(channel, 121, 1); // Reset + audio_hardware.frontCard.SendController(channel, 0, 1); // Bank + audio_hardware.frontCard.SendController(channel, 91, 0); // Reverb + audio_hardware.frontCard.SendController(channel, 93, 0); // Chorus + + // Card 2 + audio_hardware.rearCard.SendController(channel, 121, 1); // Reset + audio_hardware.rearCard.SendController(channel, 0, 1); // Bank + audio_hardware.rearCard.SendController(channel, 91, 0); // Reverb + audio_hardware.rearCard.SendController(channel, 93, 0); // Chorus + } + + // + // Cycle through speaker channels + // + Tell("\n"); + Tell("<1> rear-left\n"); + Tell("<2> rear-center\n"); + Tell("<3> rear-right\n"); + Tell("<4> front & rear-left\n"); + Tell("<5> front & rear-center\n"); + Tell("<6> front & rear-right\n"); + Tell("<7> front-left\n"); + Tell("<8> front-center\n"); + Tell("<9> front-right\n"); + Tell(" to end\n\n"); + while (speakSelect != -1) + { + switch (speakSelect){ + case 1: + front = 0; + rear = 1; + panValue = 0; + Tell("Tones in rear-left\n"); + break; + case 2: + front = 0; + rear = 1; + panValue = 63; + Tell("Tones in rear-center\n"); + break; + case 3: + front = 0; + rear = 1; + panValue = 127; + Tell("Tones in rear-right\n"); + break; + case 4: + front = 1; + rear = 1; + panValue = 0; + Tell("Tones in front & rear-left\n"); + break; + case 5: + front = 1; + rear = 1; + panValue = 63; + Tell("Tones in front & rear-center\n"); + break; + case 6: + front = 1; + rear = 1; + panValue = 127; + Tell("Tones in front & rear-right\n"); + break; + case 7: + front = 1; + rear = 0; + panValue = 0; + Tell("Tones in front-left\n"); + break; + case 8: + front = 1; + rear = 0; + panValue = 63; + Tell("Tones in front-center\n"); + break; + case 9: + front = 1; + rear = 0; + panValue = 127; + Tell("Tones in front-right\n"); + break; + default: + break; + }; + + // Set Speaker Channel + if (front){ + //audio_hardware.frontCard.SendController(0, 121, 1); // Reset + //audio_hardware.frontCard.SendController(0, 0, 1); // Bank + audio_hardware.frontCard.SendProgramChange(0, 0); // Pgm + audio_hardware.frontCard.SendController(0, 10, panValue); // Pan + } + if (rear) { + //audio_hardware.rearCard.SendController(0, 121, 1); // Reset + //audio_hardware.rearCard.SendController(0, 0, 1); // Bank + audio_hardware.rearCard.SendProgramChange(0, 0); // Pgm + audio_hardware.rearCard.SendController(0, 10, panValue); // Pan + } + + // Play tones + for (program = 0; program < 7; program++) + { + // + // Set program + // + audio_hardware.frontCard.SendProgramChange(0, program); + audio_hardware.rearCard.SendProgramChange(0, program); + + // + // Play note + // + if (front) + audio_hardware.frontCard.SendNoteOn(0, 60, 127); + if (rear) + audio_hardware.rearCard.SendNoteOn(0, 60, 127); + + end_time = clock() + waitTime*CLOCKS_PER_SEC; + while (clock() < end_time) + { + } + + audio_hardware.frontCard.SendNoteOff(0, 60, 0); + audio_hardware.rearCard.SendNoteOff(0, 60, 0); + + if (kbhit()) + { + switch (getch()){ + case '': + speakSelect = -1; + break; + case '1': + speakSelect = 1; + break; + case '2': + speakSelect = 2; + break; + case '3': + speakSelect = 3; + break; + case '4': + speakSelect = 4; + break; + case '5': + speakSelect = 5; + break; + case '6': + speakSelect = 6; + break; + case '7': + speakSelect = 7; + break; + case '8': + speakSelect = 8; + break; + case '9': + speakSelect = 9; + break; + default: + break; + }; + break; + } + } + } + } + #endif + + // + //------------------------------------------------------------------ + // Sound Play Test + // + // Requires "test.sbk" + //------------------------------------------------------------------ + // + #if defined(BUILD_SND_PLAY) + { + MIDIValue channel; + MIDIValue progSelect; + int noteIsOn, prognum; + char ch; + + Tell("AudioHardware::TestClass\n"); + + // + // Load SBKs + // + audio_hardware.frontCard.LoadSBK("test.sbk"); + audio_hardware.rearCard.LoadSBK("test.sbk"); + + // + // Init channel + // Set to second bank + // + channel = 0; + + // Card 1 + audio_hardware.frontCard.SendController( + channel, MIDI_CONTROL_RESET, 1 + ); + audio_hardware.frontCard.SendController( + channel, MIDI_PAN_CONTROL, MIDI_CENTER_PAN_VALUE + ); + audio_hardware.frontCard.SendController( + channel, MIDI_REVERB_CONTROL, MIDI_MIN_CONTROL_VALUE + ); + audio_hardware.frontCard.SendController( + channel, MIDI_CHORUS_CONTROL, MIDI_MIN_CONTROL_VALUE + ); + audio_hardware.frontCard.SelectBank(channel, 1); + + // Card 2 + audio_hardware.rearCard.SendController( + channel, MIDI_CONTROL_RESET, 1 + ); + audio_hardware.rearCard.SendController( + channel, MIDI_PAN_CONTROL, MIDI_CENTER_PAN_VALUE + ); + audio_hardware.rearCard.SendController( + channel, MIDI_REVERB_CONTROL, MIDI_MIN_CONTROL_VALUE + ); + audio_hardware.rearCard.SendController( + channel, MIDI_CHORUS_CONTROL, MIDI_MIN_CONTROL_VALUE + ); + audio_hardware.rearCard.SelectBank(channel, 1); + + // + // Select program number + // + Tell("\nPlay program number (-1 to quit): "); + cin >> prognum; + progSelect = (MIDIValue)prognum; + Tell("\nPress to start or stop playing.\n"); + Tell("Hit to select a new program.\n"); + while (prognum != -1) + { + // Set Program + audio_hardware.frontCard.SendProgramChange(channel, progSelect); + audio_hardware.rearCard.SendProgramChange(channel, progSelect); + + audio_hardware.frontCard.SendNoteOn(channel, 60, 127); + audio_hardware.rearCard.SendNoteOn(channel, 60, 127); + noteIsOn = 1; + ch = (char)getch(); + + while (ch != ''){ + if (ch == ' ') + if (noteIsOn){ + Tell(" Note off\n"); + audio_hardware.frontCard.SendNoteOff(channel, 60, 0); + audio_hardware.rearCard.SendNoteOff(channel, 60, 0); + noteIsOn = 0; + } else { + Tell(" Note on\n"); + audio_hardware.frontCard.SendNoteOn(channel, 60, 127); + audio_hardware.rearCard.SendNoteOn(channel, 60, 127); + noteIsOn = 1; + } + ch = (char)getch(); + } + audio_hardware.frontCard.SendNoteOff(channel, 60, 0); + audio_hardware.rearCard.SendNoteOff(channel, 60, 0); + Tell("\nPlay program number (-1 to quit): "); + cin >> prognum; + progSelect = (MIDIValue)prognum; + } + } + #endif + + // + //------------------------------------------------------------------ + // Sequence through channels and notes + //------------------------------------------------------------------ + // + #if 0 + { + MIDIValue channel; + MIDIValue key; + + // + // Init channels + // + for (channel = 0; channel < 16; channel++) { + // + // Set to first bank, first program + // + + // Card 1 + audio_hardware.frontCard.SendController(channel, 0, 0); + audio_hardware.frontCard.SendProgramChange(channel, 0); + + // Card 2 + audio_hardware.rearCard.SendController(channel, 0, 0); + audio_hardware.rearCard.SendProgramChange(channel, 0); + } + + // + // Play sequence of keys + // + Tell("Sequence through channels and notes - Press ESC to stop\n"); + + for (channel = 0; channel < 16; channel++) + { + for (key = 60; key < 60+12; key++) + { + clock_t next_key_time; + + Tell("channel " << (int)channel << " key " << (int)key << "\n"); + + // Card 1 + audio_hardware.frontCard.SendNoteOn(channel, key, 127); + + // Card 2 + audio_hardware.rearCard.SendNoteOn(channel, key, 127); + + next_key_time = clock() + CLOCKS_PER_SEC/10; + while (clock() < next_key_time) + { + } + } + + for (key = 60; key < 60+12; key++) { + // Card 1 + audio_hardware.frontCard.SendNoteOff(channel, key, 127); + + // Card 2 + audio_hardware.rearCard.SendNoteOff(channel, key, 127); + } + + if (kbhit()) + { + if (getch() == '') + break; + } + } + } + #endif + + // + //------------------------------------------------------------------ + // Sequence through programs + //------------------------------------------------------------------ + // + #if 0 + { + clock_t end_time; + MIDIValue channel; + MIDIValue program; + + // + // Init channels + // + for (channel = 0; channel < 16; channel++) + { + // + // Set to second bank + // + + // Card 1 + audio_hardware.frontCard.SendController(channel, 121, 1); // Reset + audio_hardware.frontCard.SendController(channel, 0, 1); + + // Card 2 + audio_hardware.rearCard.SendController(channel, 121, 1); // Reset + audio_hardware.rearCard.SendController(channel, 0, 1); + } + + // + // Sequence through programs + // + for (program = 0; program < 128; program++) + { + // + // Set program + // + audio_hardware.frontCard.SendProgramChange(0, program); + audio_hardware.rearCard.SendProgramChange(0, program); + + Tell("Program " << (int)program << "\n"); + + // + // Play note + // + audio_hardware.frontCard.SendNoteOn(0, 60, 127); + audio_hardware.rearCard.SendNoteOn(0, 60, 127); + + end_time = clock() + 8*CLOCKS_PER_SEC; + while (clock() < end_time) + { + } + + audio_hardware.frontCard.SendNoteOff(0, 60, 0); + audio_hardware.rearCard.SendNoteOff(0, 60, 0); + + if (kbhit()) + { + if (getch() == '') + break; + } + } + } + #endif + + // + //------------------------------------------------------------------ + // Test front volume controller + //------------------------------------------------------------------ + // + #if 0 + { + clock_t start_time, period, end_time; + float fvol; + MIDIValue vol; + + // + // Modulate volume + // + Tell("Volume should be modulated in the front\n"); + + // Card 1 + audio_hardware.frontCard.SendController(0, 121, 1); // Reset + audio_hardware.frontCard.SendController(0, 0, 1); // Bank + audio_hardware.frontCard.SendProgramChange(0, 2); // Pgm + audio_hardware.frontCard.SendController(0, 10, 63); // Pan Center + audio_hardware.frontCard.SendNoteOn(0, 60, 127); + + period = 2*CLOCKS_PER_SEC; + start_time = clock(); + end_time = start_time + 4*period; + while (clock() < end_time) + { + fvol = sin(RAD360 * (float)(clock() - start_time) / (float)period); + fvol += 1.0; + fvol *= 63.0; + vol = fvol; + + // Card 1 + audio_hardware.frontCard.SendController(0, 7, vol); + + Tell(" vol " << (int)vol); + + if (kbhit()) + { + if (getch() == '') + break; + } + } + // Card 1 + audio_hardware.frontCard.SendNoteOff(0, 60, 0); + audio_hardware.frontCard.SendController(0, 7, 127); + Tell("\n"); + } + #endif + + // + //------------------------------------------------------------------ + // Test rear volume controller + //------------------------------------------------------------------ + // + #if 0 + { + clock_t start_time, period, end_time; + float fvol; + MIDIValue vol; + + // + // Modulate volume + // + Tell("Volume should be modulated in the rear\n"); + + // Card 2 + audio_hardware.rearCard.SendController(0, 121, 1); // Reset + audio_hardware.rearCard.SendController(0, 0, 1); // Bank + audio_hardware.rearCard.SendProgramChange(0, 2); // Pgm + audio_hardware.rearCard.SendController(0, 10, 63); // Pan Center + audio_hardware.rearCard.SendNoteOn(0, 60, 127); + + period = 2*CLOCKS_PER_SEC; + start_time = clock(); + end_time = start_time + 4*period; + while (clock() < end_time) + { + fvol = sin(RAD360 * (float)(clock() - start_time) / (float)period); + fvol += 1.0; + fvol *= 63.0; + vol = fvol; + + // Card 2 + audio_hardware.rearCard.SendController(0, 7, vol); + + Tell(" vol " << (int)vol); + + if (kbhit()) + { + if (getch() == '') + break; + } + } + // Card 2 + audio_hardware.rearCard.SendNoteOff(0, 60, 0); + audio_hardware.rearCard.SendController(0, 7, 127); + Tell("\n"); + } + #endif + + // + //------------------------------------------------------------------ + // Test pan controller + //------------------------------------------------------------------ + // + #if 0 + { + clock_t end_time; + + // Card 1 + audio_hardware.frontCard.SendController(0, 91, 0); // Reverb + audio_hardware.frontCard.SendController(0, 93, 0); // Chorus + + // Card 2 + audio_hardware.rearCard.SendController(0, 91, 0); // Reverb + audio_hardware.rearCard.SendController(0, 93, 0); // Chorus + + // + // Pan left + // + + // Card 1 + audio_hardware.frontCard.SendController(0, 121, 1); // Reset + audio_hardware.frontCard.SendController(0, 0, 1); // Bank + audio_hardware.frontCard.SendProgramChange(0, 0); // Pgm + audio_hardware.frontCard.SendController(0, 10, 0); // Pan left + audio_hardware.frontCard.SendNoteOn(0, 60, 127); + + // Card 2 + audio_hardware.rearCard.SendController(0, 121, 1); // Reset + audio_hardware.rearCard.SendController(0, 0, 1); // Bank + audio_hardware.rearCard.SendProgramChange(0, 0); // Pgm + audio_hardware.rearCard.SendController(0, 10, 0); // Pan left + audio_hardware.rearCard.SendNoteOn(0, 60, 127); + + Tell("Note should be panned left\n"); + + end_time = clock() + 4*CLOCKS_PER_SEC; + while (clock() < end_time) + { + } + + // Card 1 + audio_hardware.frontCard.SendNoteOff(0, 60, 0); + + // Card 2 + audio_hardware.rearCard.SendNoteOff(0, 60, 0); + + // + // Pan Right + // + + // Card 1 + audio_hardware.frontCard.SendController(0, 121, 1); // Reset + audio_hardware.frontCard.SendController(0, 0, 1); // Bank + audio_hardware.frontCard.SendProgramChange(0, 1); // Pgm + audio_hardware.frontCard.SendController(0, 10, 127); // Pan right + audio_hardware.frontCard.SendNoteOn(0, 60, 127); + + // Card 2 + audio_hardware.rearCard.SendController(0, 121, 1); // Reset + audio_hardware.rearCard.SendController(0, 0, 1); // Bank + audio_hardware.rearCard.SendProgramChange(0, 1); // Pgm + audio_hardware.rearCard.SendController(0, 10, 127); // Pan right + audio_hardware.rearCard.SendNoteOn(0, 60, 127); + + Tell("Note should be panned right\n"); + + end_time = clock() + 4*CLOCKS_PER_SEC; + while (clock() < end_time) + { + } + + // Card 1 + audio_hardware.frontCard.SendNoteOff(0, 60, 0); + + // Card 2 + audio_hardware.rearCard.SendNoteOff(0, 60, 0); + } + #endif + + // + //------------------------------------------------------------------ + // Test pitch bend + //------------------------------------------------------------------ + // + #if 0 + { + clock_t start_time, period, end_time; + float fpitch; + MIDIPitchBend pitch; + + // + // Modulate pitch + // + Tell("Pitch should be modulated\n"); + + // Card 1 + audio_hardware.frontCard.SendController(0, 121, 1); // Reset + audio_hardware.frontCard.SendController(0, 0, 1); // Bank + audio_hardware.frontCard.SendProgramChange(0, 2); // Pgm + audio_hardware.frontCard.SendController(0, 10, 63); // Pan Center + audio_hardware.frontCard.SendNoteOn(0, 60, 127); + + // Card 2 + audio_hardware.rearCard.SendController(0, 121, 1); // Reset + audio_hardware.rearCard.SendController(0, 0, 1); // Bank + audio_hardware.rearCard.SendProgramChange(0, 2); // Pgm + audio_hardware.rearCard.SendController(0, 10, 63); // Pan Center + audio_hardware.rearCard.SendNoteOn(0, 60, 127); + + period = 2*CLOCKS_PER_SEC; + start_time = clock(); + end_time = start_time + 4*period; + while (clock() < end_time) + { + fpitch = sin(RAD360 * (float)(clock() - start_time) / (float)period); + fpitch += 1.0; + fpitch *= 8191.0; + pitch = fpitch; + + // Card 1 + audio_hardware.frontCard.SendPitchBend(0, pitch); + + // Card 2 + audio_hardware.rearCard.SendPitchBend(0, pitch); + + Tell("pitch " << (int)pitch << "\n"); + + if (kbhit()) + { + if (getch() == '') + break; + } + } + + // Card 1 + audio_hardware.frontCard.SendNoteOff(0, 60, 0); + audio_hardware.frontCard.SendPitchBend(0, 8192); + + // Card 2 + audio_hardware.rearCard.SendNoteOff(0, 60, 0); + audio_hardware.rearCard.SendPitchBend(0, 8192); + } + #endif + + // + //------------------------------------------------------------------ + // Test pitch NRPN + //------------------------------------------------------------------ + // + #if 0 + { + clock_t start_time, period, end_time; + float fpitch; + MIDINRPNValue pitch; + + // + // Modulate pitch + // + Tell("Pitch should be modulated\n"); + + // Card 1 + audio_hardware.frontCard.SendController(0, 121, 1); // Reset + audio_hardware.frontCard.SendController(0, 0, 1); // Bank + audio_hardware.frontCard.SendProgramChange(0, 2); // Pgm + audio_hardware.frontCard.SendController(0, 10, 63); // Pan Center + audio_hardware.frontCard.SendNoteOn(0, 60, 127); + + // Card 2 + audio_hardware.rearCard.SendController(0, 121, 1); // Reset + audio_hardware.rearCard.SendController(0, 0, 1); // Bank + audio_hardware.rearCard.SendProgramChange(0, 2); // Pgm + audio_hardware.rearCard.SendController(0, 10, 63); // Pan Center + audio_hardware.rearCard.SendNoteOn(0, 60, 127); + + period = 2*CLOCKS_PER_SEC; + start_time = clock(); + end_time = start_time + 4*period; + while (clock() < end_time) + { + fpitch = sin(RAD360 * (float)(clock() - start_time) / (float)period); + fpitch *= 8191.0; + pitch = fpitch; + + // Card 1 + audio_hardware.frontCard.SendNRPN(0, 16, pitch); + + // Card 2 + audio_hardware.rearCard.SendNRPN(0, 16, pitch); + + Tell("pitch " << (int)pitch << "\n"); + + if (kbhit()) + { + if (getch() == '') + break; + } + } + + // Card 1 + audio_hardware.frontCard.SendNoteOff(0, 60, 0); + audio_hardware.frontCard.SendNRPN(0, 16, 0); + + // Card 2 + audio_hardware.rearCard.SendNoteOff(0, 60, 0); + audio_hardware.rearCard.SendNRPN(0, 16, 0); + } + #endif + + // + //------------------------------------------------------------------ + // Test filter cutoff NRPN + //------------------------------------------------------------------ + // + #if 0 + { + clock_t start_time, period, end_time; + float fcutoff; + MIDINRPNValue cutoff; + + // + // Modulate filter cutoff + // + Tell("Filter cutoff should be modulated\n"); + + // Card 1 + audio_hardware.frontCard.SendController(0, 121, 1); // Reset + audio_hardware.frontCard.SendController(0, 0, 1); // Bank + audio_hardware.frontCard.SendProgramChange(0, 2); // Pgm + audio_hardware.frontCard.SendController(0, 10, 63); // Pan Center + audio_hardware.frontCard.SendNoteOn(0, 60, 127); + + // Card 2 + audio_hardware.rearCard.SendController(0, 121, 1); // Reset + audio_hardware.rearCard.SendController(0, 0, 1); // Bank + audio_hardware.rearCard.SendProgramChange(0, 2); // Pgm + audio_hardware.rearCard.SendController(0, 10, 63); // Pan Center + audio_hardware.rearCard.SendNoteOn(0, 60, 127); + + period = 2*CLOCKS_PER_SEC; + start_time = clock(); + end_time = start_time + 4*period; + while (clock() < end_time) + { + fcutoff = sin(RAD360 * (float)(clock() - start_time) / (float)period); + fcutoff += 1.0; + fcutoff *= 63.0; + cutoff = fcutoff; + + // Card 1 + audio_hardware.frontCard.SendNRPN(0, 21, cutoff); + + // Card 2 + audio_hardware.rearCard.SendNRPN(0, 21, cutoff); + + Tell("cutoff " << (int)cutoff << "\n"); + + if (kbhit()) + { + if (getch() == '') + break; + } + } + + // Card 1 + audio_hardware.frontCard.SendNoteOff(0, 60, 0); + audio_hardware.frontCard.SendNRPN(0, 21, 127); + + // Card 2 + audio_hardware.rearCard.SendNoteOff(0, 60, 0); + audio_hardware.rearCard.SendNRPN(0, 21, 127); + } + #endif + + // + //------------------------------------------------------------------ + // Test reverb and chorus settings + //------------------------------------------------------------------ + // + #if 0 + { + clock_t end_time; + int i; + + // Card 1 + audio_hardware.frontCard.SendController(0, 121, 1); // Reset + audio_hardware.frontCard.SendController(0, 0, 0); // Bank + audio_hardware.frontCard.SendProgramChange(0, 0); // Pgm + audio_hardware.frontCard.SendController(0, 10, 63); // Pan Center + + // Card 2 + audio_hardware.rearCard.SendController(0, 121, 1); // Reset + audio_hardware.rearCard.SendController(0, 0, 0); // Bank + audio_hardware.rearCard.SendProgramChange(0, 0); // Pgm + audio_hardware.rearCard.SendController(0, 10, 63); // Pan Center + + // Card 1 + audio_hardware.frontCard.SendController(0, 91, 127); // Reverb + audio_hardware.frontCard.SendController(0, 93, 0); // Chorus + + // Card 2 + audio_hardware.rearCard.SendController(0, 91, 127); // Reverb + audio_hardware.rearCard.SendController(0, 93, 0); // Chorus + + for (i = 0; i < 8; i++) + { + #pragma warn -sig + audio_hardware.frontCard.SelectEffect(ReverbMIDIEffectType, i); // Reverb + audio_hardware.rearCard.SelectEffect(ReverbMIDIEffectType, i); // Reverb + #pragma warn +sig + + Tell("Reverb " << i << "\n"); + + audio_hardware.frontCard.SendNoteOn(0, 60, 127); + audio_hardware.rearCard.SendNoteOn(0, 60, 127); + + end_time = clock() + 3*CLOCKS_PER_SEC; + while (clock() < end_time) + { + } + audio_hardware.frontCard.SendNoteOff(0, 60, 0); + audio_hardware.rearCard.SendNoteOff(0, 60, 0); + + if (kbhit()) + { + if (getch() == '') + break; + } + } + + // Card 1 + audio_hardware.frontCard.SendController(0, 91, 0); // Reverb + audio_hardware.frontCard.SendController(0, 93, 127); // Chorus + + // Card 2 + audio_hardware.rearCard.SendController(0, 91, 0); // Reverb + audio_hardware.rearCard.SendController(0, 93, 127); // Chorus + + for (i = 0; i < 8; i++) + { + #pragma warn -sig + audio_hardware.frontCard.SelectEffect(ChorusMIDIEffectType, i); // Chorus + audio_hardware.rearCard.SelectEffect(ChorusMIDIEffectType, i); // Chorus + #pragma warn +sig + + Tell("Chorus " << i << "\n"); + + audio_hardware.frontCard.SendNoteOn(0, 60, 127); + audio_hardware.rearCard.SendNoteOn(0, 60, 127); + + end_time = clock() + 3*CLOCKS_PER_SEC; + while (clock() < end_time) + { + } + audio_hardware.frontCard.SendNoteOff(0, 60, 0); + audio_hardware.rearCard.SendNoteOff(0, 60, 0); + + if (kbhit()) + { + if (getch() == '') + break; + } + } + } + #endif + + // + // Close down + // + audio_hardware.Close(); + + return True; +} + +// +//############################################################################# +// ProfileClass +//############################################################################# +// +#define RAD360 (6.28318) + +Logical + AudioHardware::ProfileClass() +{ + AudioHardware audio_hardware; + + Tell("AudioHardware::ProfileClass\n"); + + // + // Init the audio hardware + // + audio_hardware.Initialize(); + + audio_hardware.frontCard.LoadSBK("test.sbk"); + audio_hardware.rearCard.LoadSBK("test.sbk"); + + // + //------------------------------------------------------------------ + // Sequence through channels and notes + //------------------------------------------------------------------ + // + #if 0 + { + clock_t start_timer, total_timer; + int number_of_calls; + MIDIValue channel; + MIDIValue key; + + // + // Init channels + // + for (channel = 0; channel < 16; channel++) { + // + // Set to first bank, first program + // + + // Card 1 + audio_hardware.frontCard.SendController(channel, 0, 0); + audio_hardware.frontCard.SendProgramChange(channel, 0); + + // Card 2 + audio_hardware.rearCard.SendController(channel, 0, 0); + audio_hardware.rearCard.SendProgramChange(channel, 0); + } + + // + // Play sequence of keys + // + Tell("Sequence through channels and notes\n"); + + total_timer = 0; + start_timer = clock(); + for (channel = 0; channel < 16; channel++) + { + for (key = 0; key < 128; key++) + { + // Card 1 + audio_hardware.frontCard.SendNoteOn(channel, key, 127); + + // Card 2 + audio_hardware.rearCard.SendNoteOn(channel, key, 127); + } + + for (key = 0; key < 128; key++) { + // Card 1 + audio_hardware.frontCard.SendNoteOff(channel, key, 127); + + // Card 2 + audio_hardware.rearCard.SendNoteOff(channel, key, 127); + } + } + total_timer += clock() - start_timer; + number_of_calls = 16 * 2 * 128 * 2; + Tell("Calls " << number_of_calls << " Duration " << total_timer << "\n"); + Tell( + "Calls 1000 Duration " << + (Scalar)total_timer / (Scalar)number_of_calls << + " secs\n" + ); + } + #endif + + // + //------------------------------------------------------------------ + // Test front volume controller + //------------------------------------------------------------------ + // + #if 0 + { + clock_t start_timer, total_timer; + int number_of_calls, i; + + // + // Modulate volume + // + Tell("Volume modulated in the front\n"); + + // Card 1 + audio_hardware.frontCard.SendController(0, 121, 1); // Reset + audio_hardware.frontCard.SendController(0, 0, 1); // Bank + audio_hardware.frontCard.SendProgramChange(0, 2); // Pgm + audio_hardware.frontCard.SendController(0, 10, 63); // Pan Center + audio_hardware.frontCard.SendNoteOn(0, 60, 127); + + number_of_calls = 100000; + i = 0; + total_timer = 0; + start_timer = clock(); + while (i < number_of_calls) + { + // Card 1 + audio_hardware.frontCard.SendController(0, 7, (MIDIValue)i); + i++; + } + total_timer += clock() - start_timer; + Tell("Calls " << number_of_calls << " Duration " << total_timer << "\n"); + Tell( + "Calls 1000 Duration " << + (Scalar)total_timer / (Scalar)number_of_calls << + " secs\n" + ); + + // Card 1 + audio_hardware.frontCard.SendNoteOff(0, 60, 0); + audio_hardware.frontCard.SendController(0, 7, 127); + } + #endif + + // + //------------------------------------------------------------------ + // Test pitch bend + //------------------------------------------------------------------ + // + #if 0 + { + clock_t start_timer, total_timer; + int number_of_calls, i; + + // + // Modulate pitch + // + Tell("Pitch modulated\n"); + + // Card 1 + audio_hardware.frontCard.SendController(0, 121, 1); // Reset + audio_hardware.frontCard.SendController(0, 0, 1); // Bank + audio_hardware.frontCard.SendProgramChange(0, 2); // Pgm + audio_hardware.frontCard.SendController(0, 10, 63); // Pan Center + audio_hardware.frontCard.SendNoteOn(0, 60, 127); + + number_of_calls = 100000; + i = 0; + total_timer = 0; + start_timer = clock(); + while (i < number_of_calls) + { + audio_hardware.frontCard.SendPitchBend(0, i); + i++; + } + total_timer += clock() - start_timer; + Tell("Calls " << number_of_calls << " Duration " << total_timer << "\n"); + Tell( + "Calls 1000 Duration " << + (Scalar)total_timer / (Scalar)number_of_calls << + " secs\n" + ); + + // Card 1 + audio_hardware.frontCard.SendNoteOff(0, 60, 0); + audio_hardware.frontCard.SendPitchBend(0, 8192); + } + #endif + + // + //------------------------------------------------------------------ + // Test pitch NRPN + //------------------------------------------------------------------ + // + #if 0 + { + clock_t start_timer, total_timer; + int number_of_calls, i; + + // + // Modulate pitch + // + Tell("Pitch NRPN modulated\n"); + + // Card 1 + audio_hardware.frontCard.SendController(0, 121, 1); // Reset + audio_hardware.frontCard.SendController(0, 0, 1); // Bank + audio_hardware.frontCard.SendProgramChange(0, 2); // Pgm + audio_hardware.frontCard.SendController(0, 10, 63); // Pan Center + audio_hardware.frontCard.SendNoteOn(0, 60, 127); + + number_of_calls = 100000; + i = 0; + total_timer = 0; + start_timer = clock(); + while (i < number_of_calls) + { + audio_hardware.frontCard.SendNRPN(0, 16, i); + i++; + } + total_timer += clock() - start_timer; + Tell("Calls " << number_of_calls << " Duration " << total_timer << "\n"); + Tell( + "Calls 1000 Duration " << + (Scalar)total_timer / (Scalar)number_of_calls << + " secs\n" + ); + + // Card 1 + audio_hardware.frontCard.SendNoteOff(0, 60, 0); + audio_hardware.frontCard.SendNRPN(0, 16, 0); + } + #endif + + // + //------------------------------------------------------------------ + // Test filter NRPN + //------------------------------------------------------------------ + // + #if 0 + { + clock_t start_timer, total_timer; + int number_of_calls, i; + + // + // Modulate pitch + // + Tell("Filter NRPN modulated\n"); + + // Card 1 + audio_hardware.frontCard.SendController(0, 121, 1); // Reset + audio_hardware.frontCard.SendController(0, 0, 1); // Bank + audio_hardware.frontCard.SendProgramChange(0, 2); // Pgm + audio_hardware.frontCard.SendController(0, 10, 63); // Pan Center + audio_hardware.frontCard.SendNoteOn(0, 60, 127); + + number_of_calls = 100000; + i = 0; + total_timer = 0; + start_timer = clock(); + while (i < number_of_calls) + { + audio_hardware.frontCard.SendNRPN(0, 21, i); + i++; + } + total_timer += clock() - start_timer; + Tell("Calls " << number_of_calls << " Duration " << total_timer << "\n"); + Tell( + "Calls 1000 Duration " << + (Scalar)total_timer / (Scalar)number_of_calls << + " secs\n" + ); + + // Card 1 + audio_hardware.frontCard.SendNoteOff(0, 60, 0); + audio_hardware.frontCard.SendNRPN(0, 21, 127); + } + #endif + + // + // Close down + // + audio_hardware.Close(); + + return True; +} + + diff --git a/CODE/RP/MUNGA_L4/L4AUDIO.CPP b/CODE/RP/MUNGA_L4/L4AUDIO.CPP new file mode 100644 index 0000000..0fbf625 --- /dev/null +++ b/CODE/RP/MUNGA_L4/L4AUDIO.CPP @@ -0,0 +1,2329 @@ +//===========================================================================// +// File: l4audio.cc // +// Project: MUNGA Brick: Audio Renderer // +// 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 +#pragma hdrstop + +#if !defined(L4AUDIO_HPP) +# include +#endif + +#if !defined(L4AUDLVL_HPP) +# include +#endif + +#if !defined(L4APP_HPP) +# include +#endif + +#if !defined(L4AUDRND_HPP) +# include +#endif + +#if !defined(NAMELIST_HPP) +# include +#endif + +//############################################################################# +//####################### L4AudioSpatialization ######################### +//############################################################################# + +// +//############################################################################# +//############################################################################# +// +L4AudioSpatialization::L4AudioSpatialization() +{ + azimuthOfSource = 0.0f; + + frontLeftScale = 0.0f; + frontRightScale = 0.0f; + rearLeftScale = 0.0f; + rearRightScale = 0.0f; + + frontLeftDelay = 0.0f; + frontRightDelay = 0.0f; + rearLeftDelay = 0.0f; + rearRightDelay = 0.0f; + + quadrant = Quadrant1; +} + +// +//############################################################################# +//############################################################################# +// +L4AudioSpatialization::~L4AudioSpatialization() +{ +} + +// +//############################################################################# +//############################################################################# +// +Logical + L4AudioSpatialization::TestInstance() const +{ + return True; +} + +// +//############################################################################# +//############################################################################# +// +void + L4AudioSpatialization::CalculateSpatialization(Radian azimuth_of_source) +{ + azimuthOfSource = azimuth_of_source; + + // + //--------------------------------------------------------------- + // Make azimuth usable for channel volume calculations + //--------------------------------------------------------------- + // + #define DEG_90 (90.0f*(RAD_PER_DEG)) + #define DEG_180 (180.0f*(RAD_PER_DEG)) + #define DEG_360 (360.0f*(RAD_PER_DEG)) + + azimuthOfSource = DEG_180 + azimuthOfSource; + if (azimuthOfSource > DEG_180) + azimuthOfSource = azimuthOfSource - DEG_360; + Verify( + azimuthOfSource <= DEG_180 && + azimuthOfSource >= -DEG_180 + ); + + // + //--------------------------------------------------------------- + // Channel volume scale and ITD calculations + //--------------------------------------------------------------- + // + + // + // Get audio head constants + // + L4AudioRenderer *audio_renderer; + AudioHead *audio_head; + + Check(application); + audio_renderer = + Cast_Object(L4AudioRenderer*, application->GetAudioRenderer()); + Check(audio_renderer); + audio_head = audio_renderer->GetAudioHead(); + Check(audio_head); + + // + // Init channel volume scale variables + // + const Radian azimuth_max = 45.0*RAD_PER_DEG; // HACK - should come from audio.ini + Scalar tangent_ratio; + + frontLeftScale = 0.0f; + frontRightScale = 0.0f; + rearLeftScale = 0.0f; + rearRightScale = 0.0f; + + // + // Init ITD parameters + // + const Scalar itd_delay = audio_head->GetITDDifference(); + + frontLeftDelay = 0.0f; + frontRightDelay = 0.0f; + rearLeftDelay = 0.0f; + rearRightDelay = 0.0f; + + // + //--------------------------------------------------------------- + // Quadrant 1 + //--------------------------------------------------------------- + // + if ( + azimuthOfSource > -azimuth_max && + azimuthOfSource < azimuth_max + ) + { + quadrant = Quadrant1; + + // volume scale + Verify(!Small_Enough(tan(azimuth_max))); + tangent_ratio = + (tan(azimuthOfSource) / tan(azimuth_max)) * 0.5f; + + frontLeftScale = Sqrt(0.5f + tangent_ratio); + frontRightScale = Sqrt(0.5f - tangent_ratio); + Verify(frontLeftScale >= 0.0f && frontLeftScale <= 1.0f); + Verify(frontRightScale >= 0.0f && frontRightScale <= 1.0f); + + // pitch offset + if (azimuthOfSource > 0.0f) + { + frontLeftDelay = itd_delay * tangent_ratio * 2.0f; + } + else + { + frontRightDelay = itd_delay * -tangent_ratio * 2.0f; + } + } + // + //--------------------------------------------------------------- + // Quadrant 2 + //--------------------------------------------------------------- + // + else if ( + azimuthOfSource > azimuth_max && + azimuthOfSource < (DEG_180 - azimuth_max) + ) + { + quadrant = Quadrant2; + + // volume scale + azimuthOfSource = azimuthOfSource - DEG_90; + + Verify(!Small_Enough(tan(DEG_90 - azimuth_max))); + tangent_ratio = + (tan(azimuthOfSource) / tan(DEG_90 - azimuth_max)) * 0.5f; + + rearLeftScale = Sqrt(0.5f + tangent_ratio); + frontLeftScale = Sqrt(0.5f - tangent_ratio); + Verify(rearLeftScale >= 0.0f && rearLeftScale <= 1.0f); + Verify(frontLeftScale >= 0.0f && frontLeftScale <= 1.0f); + + // pitch offset + if (azimuthOfSource > 0.0f) + { + rearLeftDelay = itd_delay * tangent_ratio * 2.0f; + } + else + { + frontLeftDelay = itd_delay * -tangent_ratio * 2.0f; + } + } + // + //--------------------------------------------------------------- + // Quadrant 3 + //--------------------------------------------------------------- + // + else if ( + azimuthOfSource > (DEG_180 - azimuth_max) || + azimuthOfSource < (-DEG_180 + azimuth_max) + ) + { + quadrant = Quadrant3; + + // volume scale + azimuthOfSource = azimuthOfSource - DEG_180; + + Verify(!Small_Enough(tan(azimuth_max))); + tangent_ratio = + (tan(azimuthOfSource) / tan(azimuth_max)) * 0.5f; + + rearRightScale = Sqrt(0.5f + tangent_ratio); + rearLeftScale = Sqrt(0.5f - tangent_ratio); + Verify(rearRightScale >= 0.0f && rearRightScale <= 1.0f); + Verify(rearLeftScale >= 0.0f && rearLeftScale <= 1.0f); + + // pitch offset + if (azimuthOfSource > -azimuth_max) + { + rearLeftDelay = -(itd_delay * tangent_ratio * 2.0f); + } + else + { + rearRightDelay = -(itd_delay * -tangent_ratio * 2.0f); + } + + #if 0 + Tell( + "azimuthOfSource " << azimuthOfSource << + " rearRightDelay " << rearRightDelay << + " rearLeftDelay " << rearLeftDelay << + "\n" + ); + #endif + } + // + //--------------------------------------------------------------- + // Quadrant 4 + //--------------------------------------------------------------- + // + else + { + quadrant = Quadrant4; + + Verify( + azimuthOfSource > (-DEG_180 + azimuth_max) && + azimuthOfSource < -azimuth_max + ); + + // volume scale + azimuthOfSource = azimuthOfSource + DEG_90; + + Verify(!Small_Enough(tan(DEG_90 - azimuth_max))); + tangent_ratio = + (tan(azimuthOfSource) / tan(DEG_90 - azimuth_max)) * 0.5f; + + frontRightScale = Sqrt(0.5f + tangent_ratio); + rearRightScale = Sqrt(0.5f - tangent_ratio); + Verify(frontRightScale >= 0.0f && frontRightScale <= 1.0f); + Verify(rearRightScale >= 0.0f && rearRightScale <= 1.0f); + + // pitch offset + if (azimuthOfSource > 0.0f) + { + frontRightDelay = itd_delay * tangent_ratio * 2.0f; + } + else + { + rearRightDelay = itd_delay * -tangent_ratio * 2.0f; + } + } + + #if 0 + Tell( + "FL " << frontLeftScale << + " FR " << frontRightScale << + " RL " << rearLeftScale << + " RR " << rearRightScale << + "\n" + ); + #endif + + #if 0 + Tell( + "Quadrant " << quadrant << + " FL " << frontLeftDelay << + " FR " << frontRightDelay << + " RL " << rearLeftDelay << + " RR " << rearRightDelay << + "\n" + ); + #endif + + Verify(frontLeftScale >= 0.0f && frontLeftScale <= 1.0f); + Verify(frontRightScale >= 0.0f && frontRightScale <= 1.0f); + Verify(rearLeftScale >= 0.0f && rearLeftScale <= 1.0f); + Verify(rearRightScale >= 0.0f && rearRightScale <= 1.0f); +} + +//############################################################################# +//######################### L4AudioLocation ############################# +//############################################################################# + +// +//############################################################################# +//############################################################################# +// +L4AudioLocation::L4AudioLocation( + PlugStream *stream, + Entity *entity +): + AudioLocation(stream, entity) +{ + L4AudioLocationX(); +} + +// +//############################################################################# +//############################################################################# +// +void + L4AudioLocation::L4AudioLocationX() +{ + // + // Get audio renderer frame duration + // + Check(application) + L4AudioRenderer *audio_renderer = + Cast_Object(L4AudioRenderer*, application->GetAudioRenderer()); + Check(audio_renderer); + + Time frame_duration = + audio_renderer->GetCalibrationFrameDuration(); + + // + // Init ITD pitch offset variables + // + lastITDFrameTime = Now(); + lastITDFrameTime -= frame_duration; + + currentFrontLeftDelay = 0.0f; + currentFrontRightDelay = 0.0f; + currentRearLeftDelay = 0.0f; + currentRearRightDelay = 0.0f; + + frontLeftITDPitchOffset = 0.0f; + frontRightITDPitchOffset = 0.0f; + rearLeftITDPitchOffset = 0.0f; + rearRightITDPitchOffset = 0.0f; +} + +// +//############################################################################# +//############################################################################# +// +L4AudioLocation::~L4AudioLocation() +{ +} + +// +//############################################################################# +//############################################################################# +// +Logical + L4AudioLocation::TestInstance() const +{ + AudioLocation::TestInstance(); + Check(&spatialization); + return True; +} + +// +//############################################################################# +//############################################################################# +// +void + L4AudioLocation::UpdateSpatialModelImplementation(AudioHead *audio_head) +{ + Check(this); + Check(audio_head); + + // + //--------------------------------------------------------------- + // Call inherited method + //--------------------------------------------------------------- + // + AudioLocation::UpdateSpatialModelImplementation(audio_head); + + // + //--------------------------------------------------------------- + // Catch case of head == source + //--------------------------------------------------------------- + // + if (IsHeadSource()) + { + spatialization.frontLeftScale = 1.0f; + spatialization.frontRightScale = 1.0f; + spatialization.rearLeftScale = 1.0f; + spatialization.rearRightScale = 1.0f; + + frontLeftITDPitchOffset = 0.0f; + frontRightITDPitchOffset = 0.0f; + rearLeftITDPitchOffset = 0.0f; + rearRightITDPitchOffset = 0.0f; + return; + } + + // + //--------------------------------------------------------------- + // Calculate channel spatialization + //--------------------------------------------------------------- + // + spatialization.CalculateSpatialization(GetAzimuthOfSource()); + + // + //--------------------------------------------------------------- + // Calculate ITD pitch offsets + //--------------------------------------------------------------- + // + const Scalar itd_pitch_offset_constant = + 0.003831f / 0.000002f; // period / delay // HACK - should come from audio head + + Time itd_delta_time; + + itd_delta_time = Now(); + itd_delta_time -= lastITDFrameTime; + lastITDFrameTime = Now(); + + frontLeftITDPitchOffset = 0.0f; + frontRightITDPitchOffset = 0.0f; + rearLeftITDPitchOffset = 0.0f; + rearRightITDPitchOffset = 0.0f; + + if (!Small_Enough((Scalar)itd_delta_time)) + { + if (currentFrontLeftDelay != spatialization.frontLeftDelay) + { + Verify(!Small_Enough((Scalar)itd_delta_time)); + + frontLeftITDPitchOffset = + itd_pitch_offset_constant * + (spatialization.frontLeftDelay - currentFrontLeftDelay) / + (Scalar)itd_delta_time; + currentFrontLeftDelay = spatialization.frontLeftDelay; + } + if (currentFrontRightDelay != spatialization.frontRightDelay) + { + Verify(!Small_Enough((Scalar)itd_delta_time)); + + frontRightITDPitchOffset = + itd_pitch_offset_constant * + (spatialization.frontRightDelay - currentFrontRightDelay) / + (Scalar)itd_delta_time; + currentFrontRightDelay = spatialization.frontRightDelay; + } + if (currentRearLeftDelay != spatialization.rearLeftDelay) + { + Verify(!Small_Enough((Scalar)itd_delta_time)); + + rearLeftITDPitchOffset = + itd_pitch_offset_constant * + (spatialization.rearLeftDelay - currentRearLeftDelay) / + (Scalar)itd_delta_time; + currentRearLeftDelay = spatialization.rearLeftDelay; + } + if (currentRearRightDelay != spatialization.rearRightDelay) + { + Verify(!Small_Enough((Scalar)itd_delta_time)); + + rearRightITDPitchOffset = + itd_pitch_offset_constant * + (spatialization.rearRightDelay - currentRearRightDelay) / + (Scalar)itd_delta_time; + currentRearRightDelay = spatialization.rearRightDelay; + } + } + + #if 0 + Tell( + "Quadrant " << spatialization.quadrant << + " FL " << frontLeftITDPitchOffset << + " FR " << frontRightITDPitchOffset << + " RL " << rearLeftITDPitchOffset << + " RR " << rearRightITDPitchOffset << + "\n" + ); + #endif + + // + //--------------------------------------------------------------- + // Check for source "between ears" + //--------------------------------------------------------------- + // + const Scalar ear_radius = + audio_head->GetDistanceBetweenEars() * 0.5; + Scalar distance_to_source_listener_plane = + GetDistanceToSourceListenerPlane(); + + if (distance_to_source_listener_plane < ear_radius) + { + Verify(!Small_Enough(ear_radius)); + + const Scalar proportion = + 0.5f * + (ear_radius - distance_to_source_listener_plane) / + ear_radius; + + Scalar powerA, powerB; + + #if DEBUG_LEVEL>0 + if (!(proportion >= 0.0f && proportion <= 1.0f)) + { + Dump(ear_radius); + Dump(distance_to_source_listener_plane); + Dump(proportion); + } + Verify(proportion >= 0.0f && proportion <= 1.0f); + #endif + + powerA = Sqrt(1.0f - proportion); + powerB = Sqrt(proportion); + Verify(powerA >= 0.0f && powerA <= 1.0f); + Verify(powerB >= 0.0f && powerB <= 1.0f); + + switch (spatialization.quadrant) + { + case L4AudioSpatialization::Quadrant1: + spatialization.rearLeftScale = spatialization.frontLeftScale * powerB; + spatialization.rearRightScale = spatialization.frontRightScale * powerB; + + spatialization.frontLeftScale *= powerA; + spatialization.frontRightScale *= powerA; + break; + + case L4AudioSpatialization::Quadrant2: + spatialization.rearRightScale = spatialization.rearLeftScale * powerB; + spatialization.frontRightScale = spatialization.frontLeftScale * powerB; + + spatialization.rearLeftScale *= powerA; + spatialization.frontLeftScale *= powerA; + break; + + case L4AudioSpatialization::Quadrant3: + spatialization.frontRightScale = spatialization.rearRightScale * powerB; + spatialization.frontLeftScale = spatialization.rearLeftScale * powerB; + + spatialization.rearRightScale *= powerA; + spatialization.rearLeftScale *= powerA; + break; + + case L4AudioSpatialization::Quadrant4: + spatialization.frontLeftScale = spatialization.frontRightScale * powerB; + spatialization.rearLeftScale = spatialization.rearRightScale * powerB; + + spatialization.frontRightScale *= powerA; + spatialization.rearRightScale *= powerA; + break; + } + + #if 0 + Tell( + "FL " << spatialization.frontLeftScale << + " FR " << spatialization.frontRightScale << + " RL " << spatialization.rearLeftScale << + " RR " << spatialization.rearRightScale << + "\n" + ); + #endif + } + + Verify(spatialization.frontLeftScale >= 0.0f && spatialization.frontLeftScale <= 1.0f); + Verify(spatialization.frontRightScale >= 0.0f && spatialization.frontRightScale <= 1.0f); + Verify(spatialization.rearLeftScale >= 0.0f && spatialization.rearLeftScale <= 1.0f); + Verify(spatialization.rearRightScale >= 0.0f && spatialization.rearRightScale <= 1.0f); +} + +//############################################################################# +//######################### AudioChannelSet ############################# +//############################################################################# + +AudioChannelSet AudioChannelSet::Null; + +// +//############################################################################# +//############################################################################# +// +AudioChannelSet::AudioChannelSet() +{ + for (int i = 0; i < AudioChannelSetSize; i++) + { + channels[i] = NULL; + enables[i] = False; + } +} + +// +//############################################################################# +//############################################################################# +// +Logical + AudioChannelSet::TestInstance() const +{ + for (int i = 0; i < AudioChannelSetSize; i++) + { + if (channels[i] != NULL) + { + Verify(enables[i] == True); + Check(channels[i]); + } + } + return True; +} + +// +//############################################################################# +//############################################################################# +// +void + AudioChannelSet::EnableAll() +{ + // + // Must set all channels to null and all enables to True + // + for (int i = 0; i < AudioChannelSetSize; i++) + { + channels[i] = NULL; + enables[i] = True; + } +} + +// +//############################################################################# +//############################################################################# +// +void + AudioChannelSet::ReleaseAll() +{ + // + // Must release all channels without changing enable values + // + for (int i = 0; i < AudioChannelSetSize; i++) + { + if (channels[i] != NULL) + { + Check(channels[i]); + channels[i]->Release(); + channels[i] = NULL; + } + } +} + +//############################################################################# +//########################## L4AudioSource ############################## +//############################################################################# + +// +//############################################################################# +//############################################################################# +// +L4AudioSource::L4AudioSource( + PlugStream *stream, + Entity *entity +): + AudioSource(stream, entity) +{ + L4AudioSourceX(); +} + +// +//############################################################################# +//############################################################################# +// +void + L4AudioSource::BuildFromPage( + PlugStream *stream, + NameList *name_list, + ClassID class_ID, + ObjectID object_ID + ) +{ + AudioSource::BuildFromPage(stream, name_list, class_ID, object_ID); +} + +// +//############################################################################# +//############################################################################# +// +void + L4AudioSource::L4AudioSourceX() +{ +} + +// +//############################################################################# +//############################################################################# +// +L4AudioSource::~L4AudioSource() +{ +} + +// +//############################################################################# +//############################################################################# +// +Logical + L4AudioSource::TestInstance() const +{ + AudioSource::TestInstance(); + Check(&channelSet); + return True; +} + +// +//############################################################################# +//############################################################################# +// +void + L4AudioSource::StopMessageImplementation() +{ + Check(this); + + AudioSource::StopMessageImplementation(); + + // + // Request stop from renderer + // + Check(application); + Cast_Object(L4AudioRenderer*, application->GetAudioRenderer())-> + StopRequest(this); +} + +// +//############################################################################# +//############################################################################# +// +void + L4AudioSource::SetAudioChannelSet(const AudioChannelSet &audio_channel_set) +{ + Check(this); + channelSet = audio_channel_set; +} + +// +//############################################################################# +//############################################################################# +// +const AudioChannelSet* + L4AudioSource::GetAudioChannelSet() +{ + Check(this); + return &channelSet; +} + +// +//############################################################################# +//############################################################################# +// +void + L4AudioSource::ReleaseChannels() +{ + Check(this); + channelSet.ReleaseAll(); +} + +//############################################################################# +//######################## DirectPatchSource ############################ +//############################################################################# + +// +//############################################################################# +//############################################################################# +// +DirectPatchSource::DirectPatchSource( + PlugStream *stream, + Entity *entity +): + L4AudioSource(stream, entity) +{ + MemoryStream_Read(stream, &audioPosition); + channel = NULL; +} + +// +//############################################################################# +//############################################################################# +// +void + DirectPatchSource::BuildFromPage( + PlugStream *stream, + NameList *name_list, + ClassID class_ID, + ObjectID object_ID + ) +{ + L4AudioSource::BuildFromPage(stream, name_list, class_ID, object_ID); + MEM_STRM_WRITE_ENTRY(*stream, name_list, Enumeration, position); +} + +// +//############################################################################# +//############################################################################# +// +DirectPatchSource::~DirectPatchSource() +{ +} + +// +//############################################################################# +//############################################################################# +// +Logical + DirectPatchSource::TestInstance() const +{ + L4AudioSource::TestInstance(); + if (channel != NULL) + { + Check(channel); + } + return True; +} + +// +//############################################################################# +//############################################################################# +// +void + DirectPatchSource::StartMessageImplementation() +{ + Check(this); + + L4AudioSource::StartMessageImplementation(); + + // + //-------------------------------------------------------------------------- + // Init channel set to requested channels + //-------------------------------------------------------------------------- + // + channelSet = AudioChannelSet::Null; + switch (audioPosition) + { + case FrontDirectPatchPosition: + case FrontLeftDirectPatchPosition: + case FrontRightDirectPatchPosition: + channelSet.EnableFrontLeft(True); + break; + + case RearDirectPatchPosition: + case RearLeftDirectPatchPosition: + case RearRightDirectPatchPosition: + channelSet.EnableRearLeft(True); + break; + } + + // + //-------------------------------------------------------------------------- + // Request start from renderer + //-------------------------------------------------------------------------- + // + Check(application); + Cast_Object(L4AudioRenderer*, application->GetAudioRenderer())-> + StartRequest(this); +} + +// +//############################################################################# +//############################################################################# +// +void + DirectPatchSource::StartImplementation() +{ + Check(this); + + // + //-------------------------------------------------------------------------- + // Call inherited method + //-------------------------------------------------------------------------- + // + L4AudioSource::StartImplementation(); + + // + //-------------------------------------------------------------------------- + // Remember the channel + //-------------------------------------------------------------------------- + // + Verify(channel == NULL); + switch (audioPosition) + { + case FrontDirectPatchPosition: + case FrontLeftDirectPatchPosition: + case FrontRightDirectPatchPosition: + channel = channelSet.GetFrontLeft(); + break; + + case RearDirectPatchPosition: + case RearLeftDirectPatchPosition: + case RearRightDirectPatchPosition: + channel = channelSet.GetRearLeft(); + break; + } + Check(channel); + + // + //-------------------------------------------------------------------------- + // Setup the channel + //-------------------------------------------------------------------------- + // + ExecuteWatchers(); + + // + // Turn the volume down while setting up the channel + // + channel->SendController(MIDI_VOLUME_CONTROL, MIDI_MIN_CONTROL_VALUE); + + // + // Set the channel to the bank and program + // + PatchResource *patch_resource; + + patch_resource = Cast_Object(PatchResource*, GetAudioResource()); + Check(patch_resource); + patch_resource->SetDistance(GetDistanceToSource()); + patch_resource->SetupPatch(channel); + + // + // Set the channel to default control values + // + channel->SendController(MIDI_REVERB_CONTROL, MIDI_MIN_CONTROL_VALUE); + channel->SendController(MIDI_CHORUS_CONTROL, MIDI_MIN_CONTROL_VALUE); + + switch (audioPosition) + { + case FrontDirectPatchPosition: + case RearDirectPatchPosition: + channel->SendController(MIDI_PAN_CONTROL, MIDI_CENTER_PAN_VALUE); + break; + case FrontLeftDirectPatchPosition: + case RearLeftDirectPatchPosition: + channel->SendController(MIDI_PAN_CONTROL, MIDI_LEFT_PAN_VALUE); + break; + case FrontRightDirectPatchPosition: + case RearRightDirectPatchPosition: + channel->SendController(MIDI_PAN_CONTROL, MIDI_RIGHT_PAN_VALUE); + break; + } + + // + // Set midi history to default control values + // + lastMIDIVolume = MIDI_MIN_CONTROL_VALUE; + lastMIDIPitchBend = 0; // Set by force update + lastMIDIFilterCutoff = MIDI_MAX_CONTROL_VALUE; // Set by patch load + + // + //-------------------------------------------------------------------------- + // Calculate attack time, velocity, and execute model + //-------------------------------------------------------------------------- + // + MIDIValue midi_velocity = + CalculateSourceAttackVolumeScale() * + (Scalar)MIDI_MAX_CONTROL_VALUE + 0.5f; + + if (UseSourceAttackTime()) + { + MIDINRPNValue midi_attack_time = + CalculateSourceAttackTime() * + (Scalar)AWE_VOL_ATTACK_TIME_RANGE + 0.5f; + + channel->SendNRPN(AWE_VOL_ATTACK_TIME_NRPN, midi_attack_time); + } + + ExecuteModel(True); + + // + //-------------------------------------------------------------------------- + // Start note + //-------------------------------------------------------------------------- + // + channel->SendNoteOn(GetCurrentNoteValue(), midi_velocity); + #if 0 + Tell("On " << (int)GetCurrentNoteValue() << "\n"); + #endif +} + +// +//############################################################################# +//############################################################################# +// +void + DirectPatchSource::StopImplementation() +{ + Check(this); + + // + // Stop note + // + Check(channel); + channel->SendNoteOff(GetCurrentNoteValue(), MIDI_MIN_CONTROL_VALUE); + channel = NULL; +} + +// +//############################################################################# +//############################################################################# +// +void + DirectPatchSource::ExecuteModel(Logical force_update) +{ + Check(this); + + // + //-------------------------------------------------------------------------- + // Apply pitch offset + //-------------------------------------------------------------------------- + // + const MIDIPitchBend pitch_resolution = 12; // HACK - should come from audio.ini + AudioPitchCents pitch_offset; + MIDIPitchBend midi_pitch_bend; + MIDIPitchBend pitch_difference; + + pitch_offset = CalculateSourcePitchOffset(); + midi_pitch_bend = (Scalar)pitch_offset * MIDI_PITCH_PER_CENTS + 0.5f; + Clamp(midi_pitch_bend, -MIDI_PITCH_BEND_MAX, MIDI_PITCH_BEND_MAX); + pitch_difference = lastMIDIPitchBend - midi_pitch_bend; + + if ((Abs(pitch_difference) >= pitch_resolution) || force_update) + { + lastMIDIPitchBend = midi_pitch_bend; + Check(channel); + channel->SendPitchBend(midi_pitch_bend); + } + + // + //-------------------------------------------------------------------------- + // Apply filter scale + //-------------------------------------------------------------------------- + // + if (UseSourceBrightnessScale()) + { + const MIDINRPNValue filter_resolution = 2;// HACK - should come from audio.ini + Scalar filter_scale; + PatchResource *patch_resource; + MIDINRPNValue max_midi_filter_cutoff; + MIDINRPNValue midi_filter_cutoff; + MIDINRPNValue filter_difference; + + filter_scale = CalculateSourceBrightnessScale(); + patch_resource = Cast_Object(PatchResource*, GetAudioResource()); + max_midi_filter_cutoff = patch_resource->GetMaxMIDIFilterCutoff(); + midi_filter_cutoff = filter_scale * (Scalar)max_midi_filter_cutoff + 0.5f; + filter_difference = lastMIDIFilterCutoff - midi_filter_cutoff; + + if (Abs(filter_difference) >= filter_resolution) + { + lastMIDIFilterCutoff = midi_filter_cutoff; + Check(channel); + channel->SendNRPN(AWE_FILTER_CUTOFF_NRPN, midi_filter_cutoff); + } + } + + // + //-------------------------------------------------------------------------- + // Apply volume scale + //-------------------------------------------------------------------------- + // + Scalar volume_scale; + const MIDIValue volume_resolution = 2; // HACK - should come from audio.ini + MIDIValue midi_volume; + int volume_difference; + + volume_scale = CalculateSourceVolumeScale(); + midi_volume = volume_scale * (Scalar)MIDI_MAX_CONTROL_VALUE + 0.5f; + volume_difference = lastMIDIVolume - midi_volume; + + if (Abs(volume_difference) >= volume_resolution) + { + lastMIDIVolume = midi_volume; + Check(channel); + channel->SendController(MIDI_VOLUME_CONTROL, midi_volume); + } +} + +//############################################################################# +//###################### Dynamic3DPatchSource ########################### +//############################################################################# + +// +//############################################################################# +//############################################################################# +// +Dynamic3DPatchSource::Dynamic3DPatchSource( + PlugStream *stream, + Entity *entity +): + L4AudioSource(stream, entity) +{ +} + +// +//############################################################################# +//############################################################################# +// +Dynamic3DPatchSource::~Dynamic3DPatchSource() +{ +} + +// +//############################################################################# +//############################################################################# +// +Logical + Dynamic3DPatchSource::TestInstance() const +{ + L4AudioSource::TestInstance(); + return True; +} + +// +//############################################################################# +//############################################################################# +// +void + Dynamic3DPatchSource::StartMessageImplementation() +{ + Check(this); + + L4AudioSource::StartMessageImplementation(); + + // + // Init channel set to requested channels + // + channelSet.EnableAll(); + + // + // Request start from renderer + // + Check(application); + Cast_Object(L4AudioRenderer*, application->GetAudioRenderer())-> + StartRequest(this); +} + +// +//############################################################################# +//############################################################################# +// +void + Dynamic3DPatchSource::StartImplementation() +{ + Check(this); + + // + //-------------------------------------------------------------------------- + // Call inherited method + //-------------------------------------------------------------------------- + // + L4AudioSource::StartImplementation(); + + // + //-------------------------------------------------------------------------- + // Get application, renderer and head pointers + //-------------------------------------------------------------------------- + // + L4AudioRenderer *audio_renderer; + AudioHead *audio_head; + + Check(application); + audio_renderer = + Cast_Object(L4AudioRenderer*, application->GetAudioRenderer()); + Check(audio_renderer); + audio_head = audio_renderer->GetAudioHead(); + Check(audio_head); + + // + //-------------------------------------------------------------------------- + // Setup the channel + //-------------------------------------------------------------------------- + // + ExecuteWatchers(); + + // + // Turn the volume down while setting up the channels + // + int i; + AudioChannel *channel; + + for (i = 0; i < AudioChannelSetSize; i++) + { + channel = channelSet.GetNth(i); + Check(channel); + channel->SendController(MIDI_VOLUME_CONTROL, MIDI_MIN_CONTROL_VALUE); + } + + // + // Set the channels to the bank and program + // + PatchResource *patch_resource; + + patch_resource = Cast_Object(PatchResource*, GetAudioResource()); + Check(patch_resource); + patch_resource->SetDistance(GetDistanceToSource()); + for (i = 0; i < AudioChannelSetSize; i++) + { + channel = channelSet.GetNth(i); + patch_resource->SetupPatch(channel); + } + + // + // Set the channels to default control values + // + MIDIValue midi_reverb_level = + audio_head->GetGlobalReverbScale() * + (Scalar)MIDI_MAX_CONTROL_VALUE + 0.5f; + + for (i = 0; i < AudioChannelSetSize; i++) + { + channel = channelSet.GetNth(i); + Check(channel); + channel->SendController(MIDI_REVERB_CONTROL, midi_reverb_level); + channel->SendController(MIDI_CHORUS_CONTROL, MIDI_MIN_CONTROL_VALUE); + } + + // + // Set the channels to correct pan + // + channel = channelSet.GetFrontLeft(); + Check(channel); + channel->SendController(MIDI_PAN_CONTROL, MIDI_LEFT_PAN_VALUE); + + channel = channelSet.GetFrontRight(); + Check(channel); + channel->SendController(MIDI_PAN_CONTROL, MIDI_RIGHT_PAN_VALUE); + + channel = channelSet.GetRearLeft(); + Check(channel); + channel->SendController(MIDI_PAN_CONTROL, MIDI_LEFT_PAN_VALUE); + + channel = channelSet.GetRearRight(); + Check(channel); + channel->SendController(MIDI_PAN_CONTROL, MIDI_RIGHT_PAN_VALUE); + + // + // Set midi history to default control values + // + lastFrontLeftMIDIVolume = MIDI_MIN_CONTROL_VALUE; + lastFrontRightMIDIVolume = MIDI_MIN_CONTROL_VALUE; + lastRearLeftMIDIVolume = MIDI_MIN_CONTROL_VALUE; + lastRearRightMIDIVolume = MIDI_MIN_CONTROL_VALUE; + lastFrontLeftMIDIPitchBend = 0; // Set by force update + lastFrontRightMIDIPitchBend = 0; // Set by force update + lastRearLeftMIDIPitchBend = 0; // Set by force update + lastRearRightMIDIPitchBend = 0; // Set by force update + lastMIDIFilterCutoff = MIDI_MAX_CONTROL_VALUE; // Set by patch + + // + //-------------------------------------------------------------------------- + // Calculate attack time, velocity, and execute model + //-------------------------------------------------------------------------- + // + MIDIValue midi_velocity = + CalculateSourceAttackVolumeScale() * + (Scalar)MIDI_MAX_CONTROL_VALUE + 0.5f; + + if (UseSourceAttackTime()) + { + MIDINRPNValue midi_attack_time = + CalculateSourceAttackTime() * + (Scalar)AWE_VOL_ATTACK_TIME_RANGE + 0.5f; + + for (i = 0; i < AudioChannelSetSize; i++) + { + channel = channelSet.GetNth(i); + Check(channel); + channel->SendNRPN(AWE_VOL_ATTACK_TIME_NRPN, midi_attack_time); + } + } + + ExecuteModel(True); + + // + //-------------------------------------------------------------------------- + // Start note + //-------------------------------------------------------------------------- + // + for (i = 0; i < AudioChannelSetSize; i++) + { + channel = channelSet.GetNth(i); + Check(channel); + channel->SendNoteOn(GetCurrentNoteValue(), midi_velocity); + } +} + +// +//############################################################################# +//############################################################################# +// +void + Dynamic3DPatchSource::StopImplementation() +{ + Check(this); + + // + // Stop note + // + AudioChannel *channel; + for (int i = 0; i < AudioChannelSetSize; i++) + { + channel = channelSet.GetNth(i); + Check(channel); + channel->SendNoteOff(GetCurrentNoteValue(), MIDI_MIN_CONTROL_VALUE); + } +} + +// +//############################################################################# +//############################################################################# +// +void + Dynamic3DPatchSource::ExecuteModel(Logical force_update) +{ + Check(this); + + // + //-------------------------------------------------------------------------- + // Call inherited method + //-------------------------------------------------------------------------- + // + L4AudioSource::Execute(); + + // + //-------------------------------------------------------------------------- + // Get audio resource + //-------------------------------------------------------------------------- + // + PatchResource *patch_resource; + + patch_resource = Cast_Object(PatchResource*, GetAudioResource()); + Check(patch_resource); + + // + //-------------------------------------------------------------------------- + // Get audio location + //-------------------------------------------------------------------------- + // + L4AudioLocation *audio_location; + + audio_location = Cast_Object(L4AudioLocation*, GetAudioLocation()); + Check(audio_location); + + // + //-------------------------------------------------------------------------- + // Render spatial model + //-------------------------------------------------------------------------- + // + AudioChannel *front_left_channel = channelSet.GetFrontLeft(); + AudioChannel *front_right_channel = channelSet.GetFrontRight(); + AudioChannel *rear_left_channel = channelSet.GetRearLeft(); + AudioChannel *rear_right_channel = channelSet.GetRearRight(); + + Check(front_left_channel); + Check(front_right_channel); + Check(rear_left_channel); + Check(rear_right_channel); + + // + // Apply distance attenuation to volume scale + // + Scalar volume_scale = CalculateSourceVolumeScale(); + + // + // Apply speaker scaling to volume and calculate MIDI volume + // + Scalar volume_temp; + MIDIValue front_left_midi_volume; + MIDIValue front_right_midi_volume; + MIDIValue rear_left_midi_volume; + MIDIValue rear_right_midi_volume; + + volume_temp = volume_scale * (Scalar)MIDI_MAX_CONTROL_VALUE; + + front_left_midi_volume = + audio_location->GetFrontLeftScale() * + volume_temp + 0.5f; + + front_right_midi_volume = + audio_location->GetFrontRightScale() * + volume_temp + 0.5f; + + rear_left_midi_volume = + audio_location->GetRearLeftScale() * + volume_temp + 0.5f; + + rear_right_midi_volume = + audio_location->GetRearRightScale() * + volume_temp + 0.5f; + + // + // Apply Doppler offset to pitch + // + Scalar pitch_offset; + + pitch_offset = CalculateSourcePitchOffset(); + pitch_offset += audio_location->GetDopplerCents(); + + // + // Apply ITD pitch offset and calculate MIDI pitch bend + // + MIDIPitchBend front_left_midi_pitch_bend; + MIDIPitchBend front_right_midi_pitch_bend; + MIDIPitchBend rear_left_midi_pitch_bend; + MIDIPitchBend rear_right_midi_pitch_bend; + + front_left_midi_pitch_bend = + (pitch_offset + audio_location->GetFrontLeftITDPitchOffset()) * + MIDI_PITCH_PER_CENTS + 0.5f; + + front_right_midi_pitch_bend = + (pitch_offset + audio_location->GetFrontRightITDPitchOffset()) * + MIDI_PITCH_PER_CENTS + 0.5f; + + rear_left_midi_pitch_bend = + (pitch_offset + audio_location->GetRearLeftITDPitchOffset()) * + MIDI_PITCH_PER_CENTS + 0.5f; + + rear_right_midi_pitch_bend = + (pitch_offset + audio_location->GetRearRightITDPitchOffset()) * + MIDI_PITCH_PER_CENTS + 0.5f; + + Clamp(front_left_midi_pitch_bend, -MIDI_PITCH_BEND_MAX, MIDI_PITCH_BEND_MAX); + Clamp(front_right_midi_pitch_bend, -MIDI_PITCH_BEND_MAX, MIDI_PITCH_BEND_MAX); + Clamp(rear_left_midi_pitch_bend, -MIDI_PITCH_BEND_MAX, MIDI_PITCH_BEND_MAX); + Clamp(rear_right_midi_pitch_bend, -MIDI_PITCH_BEND_MAX, MIDI_PITCH_BEND_MAX); + + // + // Apply high frequency scale to cutoff and calculate NRPN cutoff + // + Scalar filter_scale; + MIDINRPNValue max_midi_filter_cutoff; + MIDINRPNValue midi_filter_cutoff; + + filter_scale = CalculateSourceBrightnessScale(); + filter_scale *= audio_location->GetHighFreqCutoffScale(); + + max_midi_filter_cutoff = patch_resource->GetMaxMIDIFilterCutoff(); + midi_filter_cutoff = filter_scale * (Scalar)max_midi_filter_cutoff + 0.5f; + + // + //-------------------------------------------------------------------------- + // Send pitch bend + //-------------------------------------------------------------------------- + // + const MIDIPitchBend pitch_resolution = 2; + MIDIPitchBend pitch_difference; + + pitch_difference = front_left_midi_pitch_bend - lastFrontLeftMIDIPitchBend; + if (Abs(pitch_difference) >= pitch_resolution || force_update) + { + lastFrontLeftMIDIPitchBend = front_left_midi_pitch_bend; + front_left_channel->SendPitchBend(front_left_midi_pitch_bend); + } + + pitch_difference = front_right_midi_pitch_bend - lastFrontRightMIDIPitchBend; + if (Abs(pitch_difference) >= pitch_resolution || force_update) + { + lastFrontRightMIDIPitchBend = front_right_midi_pitch_bend; + front_right_channel->SendPitchBend(front_right_midi_pitch_bend); + } + + pitch_difference = rear_left_midi_pitch_bend - lastRearLeftMIDIPitchBend; + if (Abs(pitch_difference) >= pitch_resolution || force_update) + { + lastRearLeftMIDIPitchBend = rear_left_midi_pitch_bend; + rear_left_channel->SendPitchBend(rear_left_midi_pitch_bend); + } + + pitch_difference = rear_right_midi_pitch_bend - lastRearRightMIDIPitchBend; + if (Abs(pitch_difference) >= pitch_resolution || force_update) + { + lastRearRightMIDIPitchBend = rear_right_midi_pitch_bend; + rear_right_channel->SendPitchBend(rear_right_midi_pitch_bend); + } + + // + //-------------------------------------------------------------------------- + // Send MIDI volume + //-------------------------------------------------------------------------- + // + Logical front_left_turned_on = False; + Logical front_right_turned_on = False; + Logical rear_left_turned_on = False; + Logical rear_right_turned_on = False; + + if (front_left_midi_volume != lastFrontLeftMIDIVolume) + { + if (lastFrontLeftMIDIVolume == 0) + front_left_turned_on = True; + + lastFrontLeftMIDIVolume = front_left_midi_volume; + Check(front_left_channel); + front_left_channel->SendController( + MIDI_VOLUME_CONTROL, + front_left_midi_volume + ); + } + + if (front_right_midi_volume != lastFrontRightMIDIVolume) + { + if (lastFrontRightMIDIVolume == 0) + front_right_turned_on = True; + + lastFrontRightMIDIVolume = front_right_midi_volume; + Check(front_right_channel); + front_right_channel->SendController( + MIDI_VOLUME_CONTROL, + front_right_midi_volume + ); + } + + if (rear_left_midi_volume != lastRearLeftMIDIVolume) + { + if (lastRearLeftMIDIVolume == 0) + rear_left_turned_on = True; + + lastRearLeftMIDIVolume = rear_left_midi_volume; + Check(rear_left_channel); + rear_left_channel->SendController( + MIDI_VOLUME_CONTROL, + rear_left_midi_volume + ); + } + + if (rear_right_midi_volume != lastRearRightMIDIVolume) + { + if (lastRearRightMIDIVolume == 0) + rear_right_turned_on = True; + + lastRearRightMIDIVolume = rear_right_midi_volume; + Check(rear_right_channel); + rear_right_channel->SendController( + MIDI_VOLUME_CONTROL, + rear_right_midi_volume + ); + } + + // + //-------------------------------------------------------------------------- + // Send NRPN filter cutoff + //-------------------------------------------------------------------------- + // + const MIDIValue filter_resolution = 4; + MIDINRPNValue filter_difference; + Logical filter_changed; + + filter_difference = midi_filter_cutoff - lastMIDIFilterCutoff; + filter_changed = (Abs(filter_difference) >= filter_resolution); + + if ( + front_left_turned_on || + (filter_changed && front_left_midi_volume > 0) + ) + { + lastMIDIFilterCutoff = midi_filter_cutoff; + Check(front_left_channel); + front_left_channel->SendNRPN( + AWE_FILTER_CUTOFF_NRPN, + midi_filter_cutoff + ); + } + if ( + front_right_turned_on || + (filter_changed && front_right_midi_volume > 0) + ) + { + lastMIDIFilterCutoff = midi_filter_cutoff; + Check(front_right_channel); + front_right_channel->SendNRPN( + AWE_FILTER_CUTOFF_NRPN, + midi_filter_cutoff + ); + } + if ( + rear_left_turned_on || + (filter_changed && rear_left_midi_volume > 0) + ) + { + lastMIDIFilterCutoff = midi_filter_cutoff; + Check(rear_left_channel); + rear_left_channel->SendNRPN( + AWE_FILTER_CUTOFF_NRPN, + midi_filter_cutoff + ); + } + if ( + rear_right_turned_on || + (filter_changed && rear_right_midi_volume > 0) + ) + { + lastMIDIFilterCutoff = midi_filter_cutoff; + Check(rear_right_channel); + rear_right_channel->SendNRPN( + AWE_FILTER_CUTOFF_NRPN, + midi_filter_cutoff + ); + } +} + +// +//############################################################################# +//############################################################################# +// +AudioControlValue + Dynamic3DPatchSource::CalculateSourceVolumeScale() +{ + Check(this); + + // + // Call inherited method to calculate volume scale + // + Scalar + volume_scale = L4AudioSource::CalculateSourceVolumeScale(); + + // + // Update the spatial model that will result in the value + // for distance related volume attenuation + // + Check(application); + Check(application->GetAudioRenderer()); + UpdateSpatialModel(application->GetAudioRenderer()->GetAudioHead()); + + // + // Apply distance attenuation to the volume scale + // + Check(GetAudioLocation()); + volume_scale *= GetAudioLocation()->GetDistanceVolumeScale(); + return volume_scale; +} + +//############################################################################# +//####################### Static3DPatchSource ########################### +//############################################################################# + +// +//############################################################################# +//############################################################################# +// +Static3DPatchSource::Static3DPatchSource( + PlugStream *stream, + Entity *entity +): + L4AudioSource(stream, entity), + position(0.0f, 0.0f, 0.0f) +{ + MemoryStream_Read(stream, &useInternalSpatialization); +} + +// +//############################################################################# +//############################################################################# +// +Static3DPatchSource::~Static3DPatchSource() +{ +} + +// +//############################################################################# +//############################################################################# +// +void + Static3DPatchSource::BuildFromPage( + PlugStream *stream, + NameList *name_list, + ClassID class_ID, + ObjectID object_ID + ) +{ + L4AudioSource::BuildFromPage(stream, name_list, class_ID, object_ID); + + if (name_list->FindData("use_internal") != NULL) + { + MEM_STRM_WRITE_ENTRY(*stream, name_list, Logical, use_internal); + } + else + { + Logical use_internal = True; + MemoryStream_Write(stream, &use_internal); + } +} + +// +//############################################################################# +//############################################################################# +// +Logical + Static3DPatchSource::TestInstance() const +{ + L4AudioSource::TestInstance(); + if (useInternalSpatialization) + { + Check(&internalSpatialization); + } + return True; +} + +// +//############################################################################# +//############################################################################# +// +void + Static3DPatchSource::SetPosition(const Vector3D &vector3D) +{ + position = vector3D; +} + +// +//############################################################################# +//############################################################################# +// +void + Static3DPatchSource::StartMessageImplementation() +{ + Check(this); + + L4AudioSource::StartMessageImplementation(); + + // + //-------------------------------------------------------------------------- + // Get audio renderer + //-------------------------------------------------------------------------- + // + L4AudioRenderer *audio_renderer; + + Check(application); + audio_renderer = + Cast_Object(L4AudioRenderer*, application->GetAudioRenderer()); + Check(audio_renderer); + + // + //-------------------------------------------------------------------------- + // Update spatial parameters + //-------------------------------------------------------------------------- + // + if (useInternalSpatialization) + { + // + //----------------------------------------------------------------------- + // Calculate azimuth of position + //----------------------------------------------------------------------- + // + Radian azimuth_of_source; + + if (Small_Enough(position.x) && Small_Enough(position.z)) + { + azimuth_of_source = 0.0f; + } + else + { + Verify(!(Small_Enough(position.x) && Small_Enough(position.z))); + azimuth_of_source = Arctan(position.x, position.z); + } + Verify(azimuth_of_source <= PI && azimuth_of_source >= -PI); + + internalSpatialization.CalculateSpatialization(azimuth_of_source); + } + else + { + UpdateSpatialModel(audio_renderer->GetAudioHead()); + Cast_Object(L4AudioLocation*, GetAudioLocation())->GetSpatialization( + &internalSpatialization + ); + } + + // + //-------------------------------------------------------------------------- + // Init channel set to required channels + //-------------------------------------------------------------------------- + // + channelSet.EnableFrontLeft(False); + channelSet.EnableFrontRight(False); + channelSet.EnableRearLeft(False); + channelSet.EnableRearRight(False); + + switch (GetQuadrant()) + { + case L4AudioSpatialization::Quadrant1: + channelSet.EnableFrontLeft(True); + break; + + case L4AudioSpatialization::Quadrant2: + channelSet.EnableFrontLeft(True); + channelSet.EnableRearLeft(True); + break; + + case L4AudioSpatialization::Quadrant3: + channelSet.EnableRearLeft(True); + break; + + case L4AudioSpatialization::Quadrant4: + channelSet.EnableFrontRight(True); + channelSet.EnableRearRight(True); + break; + } + + // + //-------------------------------------------------------------------------- + // Request start from renderer + //-------------------------------------------------------------------------- + // + audio_renderer->StartRequest(this); +} + +// +//############################################################################# +//############################################################################# +// +void + Static3DPatchSource::StartImplementation() +{ + Check(this); + + L4AudioSource::StartImplementation(); + + // + //-------------------------------------------------------------------------- + // Get audio head constants + //-------------------------------------------------------------------------- + // + L4AudioRenderer *audio_renderer; + AudioHead *audio_head; + + Check(application); + audio_renderer = + Cast_Object(L4AudioRenderer*, application->GetAudioRenderer()); + Check(audio_renderer); + audio_head = audio_renderer->GetAudioHead(); + Check(audio_head); + + // + //-------------------------------------------------------------------------- + // Setup the channel + //-------------------------------------------------------------------------- + // + ExecuteWatchers(); + + // + // Turn the volume down while setting up the channels + // + int i; + AudioChannel *channel; + + for (i = 0; i < AudioChannelSetSize; i++) + { + if ((channel = channelSet.GetNth(i)) != NULL) + { + Check(channel); + channel->SendController(MIDI_VOLUME_CONTROL, MIDI_MIN_CONTROL_VALUE); + } + } + + // + // Set the channels to the bank and program + // + PatchResource *patch_resource; + + patch_resource = Cast_Object(PatchResource*, GetAudioResource()); + Check(patch_resource); + patch_resource->SetDistance(GetDistanceToSource()); + for (i = 0; i < AudioChannelSetSize; i++) + { + if ((channel = channelSet.GetNth(i)) != NULL) + { + patch_resource->SetupPatch(channel); + } + } + + // + // Set the channels to default control values + // + MIDIValue midi_reverb_level = + audio_head->GetGlobalReverbScale() * + (Scalar)MIDI_MAX_CONTROL_VALUE + 0.5f; + + for (i = 0; i < AudioChannelSetSize; i++) + { + if ((channel = channelSet.GetNth(i)) != NULL) + { + Check(channel); + channel->SendController(MIDI_REVERB_CONTROL, midi_reverb_level); + channel->SendController(MIDI_CHORUS_CONTROL, MIDI_MIN_CONTROL_VALUE); + } + } + + // + // Set the channels to correct pan + // + switch (GetQuadrant()) + { + case L4AudioSpatialization::Quadrant1: + { + const Radian azimuth_max = + 45.0*RAD_PER_DEG; // HACK - should come from head + const Scalar slope = + -(Scalar)MIDI_MAX_CONTROL_VALUE / (2.0f * azimuth_max); + const Scalar intercept = + (MIDI_MAX_CONTROL_VALUE * 0.5f); + MIDIValue + midi_pan; + + midi_pan = slope * GetAzimuthOfSource() + intercept; + Check(channelSet.GetFrontLeft()); + channelSet.GetFrontLeft()->SendController( + MIDI_PAN_CONTROL, + midi_pan + ); + } + break; + + case L4AudioSpatialization::Quadrant2: + { + Check(channelSet.GetFrontLeft()); + Check(channelSet.GetRearLeft()); + channelSet.GetFrontLeft()->SendController( + MIDI_PAN_CONTROL, + MIDI_MIN_CONTROL_VALUE + ); + channelSet.GetRearLeft()->SendController( + MIDI_PAN_CONTROL, + MIDI_MIN_CONTROL_VALUE + ); + } + break; + + case L4AudioSpatialization::Quadrant3: + { + const Radian azimuth_max = + 45.0*RAD_PER_DEG; // HACK - should come from head + const Scalar slope = + (Scalar)MIDI_MAX_CONTROL_VALUE / (2.0f * azimuth_max); + const Scalar intercept = + (MIDI_MAX_CONTROL_VALUE * 0.5f); + MIDIValue + midi_pan; + + midi_pan = slope * GetAzimuthOfSource() + intercept; + Check(channelSet.GetRearLeft()); + channelSet.GetRearLeft()->SendController( + MIDI_PAN_CONTROL, + midi_pan + ); + } + break; + + case L4AudioSpatialization::Quadrant4: + { + Check(channelSet.GetFrontRight()); + Check(channelSet.GetRearRight()); + channelSet.GetFrontRight()->SendController( + MIDI_PAN_CONTROL, + MIDI_MAX_CONTROL_VALUE + ); + channelSet.GetRearRight()->SendController( + MIDI_PAN_CONTROL, + MIDI_MAX_CONTROL_VALUE + ); + } + break; + } + + // + // Set midi history to default control values + // + lastFrontLeftMIDIVolume = MIDI_MIN_CONTROL_VALUE; + lastFrontRightMIDIVolume = MIDI_MIN_CONTROL_VALUE; + lastRearLeftMIDIVolume = MIDI_MIN_CONTROL_VALUE; + lastRearRightMIDIVolume = MIDI_MIN_CONTROL_VALUE; + lastMIDIPitchBend = 0; // Set by force update + lastMIDIFilterCutoff = MIDI_MAX_CONTROL_VALUE; // Set by patch + + // + //-------------------------------------------------------------------------- + // Calculate attack time, velocity, and execute model + //-------------------------------------------------------------------------- + // + MIDIValue midi_velocity = + CalculateSourceAttackVolumeScale() * + (Scalar)MIDI_MAX_CONTROL_VALUE + 0.5f; + + if (UseSourceAttackTime()) + { + MIDINRPNValue midi_attack_time = + CalculateSourceAttackTime() * + (Scalar)AWE_VOL_ATTACK_TIME_RANGE + 0.5f; + + for (i = 0; i < AudioChannelSetSize; i++) + { + if ((channel = channelSet.GetNth(i)) != NULL) + { + Check(channel); + channel->SendNRPN(AWE_VOL_ATTACK_TIME_NRPN, midi_attack_time); + } + } + } + + ExecuteModel(True); + + // + //-------------------------------------------------------------------------- + // Start note + //-------------------------------------------------------------------------- + // + for (i = 0; i < AudioChannelSetSize; i++) + { + if ((channel = channelSet.GetNth(i)) != NULL) + { + Check(channel); + channel->SendNoteOn(GetCurrentNoteValue(), midi_velocity); + } + } +} + +// +//############################################################################# +//############################################################################# +// +void + Static3DPatchSource::StopImplementation() +{ + Check(this); + + // + //------------------------------------------------------------ + // Stop note + //------------------------------------------------------------ + // + AudioChannel *channel; + + for (int i = 0; i < AudioChannelSetSize; i++) + { + if ((channel = channelSet.GetNth(i)) != NULL) + { + Check(channel); + channel->SendNoteOff(GetCurrentNoteValue(), MIDI_MIN_CONTROL_VALUE); + } + } +} + +// +//############################################################################# +//############################################################################# +// +void + Static3DPatchSource::ExecuteModel(Logical force_update) +{ + Check(this); + + // + //-------------------------------------------------------------------------- + // Get audio resource + //-------------------------------------------------------------------------- + // + PatchResource *patch_resource; + + patch_resource = Cast_Object(PatchResource*, GetAudioResource()); + Check(patch_resource); + + // + //-------------------------------------------------------------------------- + // Render spatial model + //-------------------------------------------------------------------------- + // + AudioChannel *front_left_channel = channelSet.GetFrontLeft(); + AudioChannel *front_right_channel = channelSet.GetFrontRight(); + AudioChannel *rear_left_channel = channelSet.GetRearLeft(); + AudioChannel *rear_right_channel = channelSet.GetRearRight(); + + // + // Apply volume scale offset + // + Scalar volume_scale = CalculateSourceVolumeScale(); + + // + // Apply pitch offset and calculate MIDI pitch bend + // + Scalar pitch_offset; + MIDIPitchBend midi_pitch_bend; + + pitch_offset = CalculateSourcePitchOffset(); + midi_pitch_bend = pitch_offset * MIDI_PITCH_PER_CENTS + 0.5f; + Clamp(midi_pitch_bend, -MIDI_PITCH_BEND_MAX, MIDI_PITCH_BEND_MAX); + + // + // Apply high frequency scale and calculate NRPN filter cutoff + // + Scalar filter_scale; + MIDINRPNValue max_midi_filter_cutoff; + MIDINRPNValue midi_filter_cutoff; + + filter_scale = CalculateSourceBrightnessScale(); + max_midi_filter_cutoff = patch_resource->GetMaxMIDIFilterCutoff(); + midi_filter_cutoff = filter_scale * (Scalar)max_midi_filter_cutoff + 0.5f; + + // + //-------------------------------------------------------------------------- + // Send pitch bend + //-------------------------------------------------------------------------- + // + const MIDIPitchBend pitch_resolution = 2; + MIDIPitchBend pitch_difference = midi_pitch_bend - lastMIDIPitchBend; + + if (Abs(pitch_difference) >= pitch_resolution || force_update) + { + lastMIDIPitchBend = midi_pitch_bend; + + switch (GetQuadrant()) + { + case L4AudioSpatialization::Quadrant1: + Check(front_left_channel); + front_left_channel->SendPitchBend(midi_pitch_bend); + break; + + case L4AudioSpatialization::Quadrant2: + Check(front_left_channel); + front_left_channel->SendPitchBend(midi_pitch_bend); + Check(rear_left_channel); + rear_left_channel->SendPitchBend(midi_pitch_bend); + break; + + case L4AudioSpatialization::Quadrant3: + Check(rear_left_channel); + rear_left_channel->SendPitchBend(midi_pitch_bend); + break; + + case L4AudioSpatialization::Quadrant4: + Check(front_right_channel); + front_right_channel->SendPitchBend(midi_pitch_bend); + Check(rear_right_channel); + rear_right_channel->SendPitchBend(midi_pitch_bend); + break; + } + } + + // + //-------------------------------------------------------------------------- + // Send NRPN filter cutoff + //-------------------------------------------------------------------------- + // + if (UseSourceBrightnessScale()) + { + const MIDIValue filter_resolution = 2; + MIDINRPNValue filter_difference; + + filter_difference = midi_filter_cutoff - lastMIDIFilterCutoff; + + if (Abs(filter_difference) >= filter_resolution) + { + lastMIDIFilterCutoff = midi_filter_cutoff; + + switch (GetQuadrant()) + { + case L4AudioSpatialization::Quadrant1: + Check(front_left_channel); + front_left_channel->SendNRPN( + AWE_FILTER_CUTOFF_NRPN, + midi_filter_cutoff + ); + break; + + case L4AudioSpatialization::Quadrant2: + Check(front_left_channel); + front_left_channel->SendNRPN( + AWE_FILTER_CUTOFF_NRPN, + midi_filter_cutoff + ); + Check(rear_left_channel); + rear_left_channel->SendNRPN( + AWE_FILTER_CUTOFF_NRPN, + midi_filter_cutoff + ); + break; + + case L4AudioSpatialization::Quadrant3: + Check(rear_left_channel); + rear_left_channel->SendNRPN( + AWE_FILTER_CUTOFF_NRPN, + midi_filter_cutoff + ); + break; + + case L4AudioSpatialization::Quadrant4: + Check(front_right_channel); + front_right_channel->SendNRPN( + AWE_FILTER_CUTOFF_NRPN, + midi_filter_cutoff + ); + Check(rear_right_channel); + rear_right_channel->SendNRPN( + AWE_FILTER_CUTOFF_NRPN, + midi_filter_cutoff + ); + break; + } + } + } + + // + //-------------------------------------------------------------------------- + // Send MIDI volume + //-------------------------------------------------------------------------- + // + switch (GetQuadrant()) + { + case L4AudioSpatialization::Quadrant1: + { + MIDIValue front_left_midi_volume = + volume_scale * + (Scalar)MIDI_MAX_CONTROL_VALUE + 0.5f; + + if (front_left_midi_volume != lastFrontLeftMIDIVolume) + { + lastFrontLeftMIDIVolume = front_left_midi_volume; + Check(front_left_channel); + front_left_channel->SendController( + MIDI_VOLUME_CONTROL, + front_left_midi_volume + ); + } + } + break; + + case L4AudioSpatialization::Quadrant2: + { + MIDIValue front_left_midi_volume = + volume_scale * GetFrontLeftScale() * + (Scalar)MIDI_MAX_CONTROL_VALUE + 0.5f; + + MIDIValue rear_left_midi_volume = + volume_scale * GetRearLeftScale() * + (Scalar)MIDI_MAX_CONTROL_VALUE + 0.5f; + + if (front_left_midi_volume != lastFrontLeftMIDIVolume) + { + lastFrontLeftMIDIVolume = front_left_midi_volume; + Check(front_left_channel); + front_left_channel->SendController( + MIDI_VOLUME_CONTROL, + front_left_midi_volume + ); + } + if (rear_left_midi_volume != lastRearLeftMIDIVolume) + { + lastRearLeftMIDIVolume = rear_left_midi_volume; + Check(rear_left_channel); + rear_left_channel->SendController( + MIDI_VOLUME_CONTROL, + rear_left_midi_volume + ); + } + } + break; + + case L4AudioSpatialization::Quadrant3: + { + MIDIValue rear_left_midi_volume = + volume_scale * + (Scalar)MIDI_MAX_CONTROL_VALUE + 0.5f; + + if (rear_left_midi_volume != lastRearLeftMIDIVolume) + { + lastRearLeftMIDIVolume = rear_left_midi_volume; + Check(rear_left_channel); + rear_left_channel->SendController( + MIDI_VOLUME_CONTROL, + rear_left_midi_volume + ); + } + } + break; + + case L4AudioSpatialization::Quadrant4: + { + MIDIValue front_right_midi_volume = + volume_scale * GetFrontRightScale() * + (Scalar)MIDI_MAX_CONTROL_VALUE + 0.5f; + + MIDIValue rear_right_midi_volume = + volume_scale * GetRearRightScale() * + (Scalar)MIDI_MAX_CONTROL_VALUE + 0.5f; + + if (front_right_midi_volume != lastFrontRightMIDIVolume) + { + lastFrontRightMIDIVolume = front_right_midi_volume; + Check(front_right_channel); + front_right_channel->SendController( + MIDI_VOLUME_CONTROL, + front_right_midi_volume + ); + } + if (rear_right_midi_volume != lastRearRightMIDIVolume) + { + lastRearRightMIDIVolume = rear_right_midi_volume; + Check(rear_right_channel); + rear_right_channel->SendController( + MIDI_VOLUME_CONTROL, + rear_right_midi_volume + ); + } + } + break; + } +} + + diff --git a/CODE/RP/MUNGA_L4/L4AUDIO.HPP b/CODE/RP/MUNGA_L4/L4AUDIO.HPP new file mode 100644 index 0000000..cb19ab7 --- /dev/null +++ b/CODE/RP/MUNGA_L4/L4AUDIO.HPP @@ -0,0 +1,819 @@ +//===========================================================================// +// File: l4audio.hh // +// Project: MUNGA Brick: Audio Renderer // +// Contents: // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 01/30/95 ECH Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(L4AUDIO_HPP) +# define L4AUDIO_HPP + +# if !defined(L4AUDHDW_HPP) +# include +# endif + +# if !defined(AUDIO_HPP) +# include +# endif + +# if !defined(AUDLOC_HPP) +# include +# endif + +# if !defined(AUDSRC_HPP) +# include +# endif + + //########################################################################## + //####################### L4AudioSpatialization ###################### + //########################################################################## + + class L4AudioSpatialization SIGNATURED + { + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Public types + // + public: + enum Quadrant + { + Quadrant1, + Quadrant2, + Quadrant3, + Quadrant4 + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Contstruction, Destruction, & Testing + // + public: + L4AudioSpatialization(); + ~L4AudioSpatialization(); + + Logical + TestInstance() const; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Spatialization calculations & results + // + public: + void + CalculateSpatialization(Radian azimuth_of_source); + + Radian + azimuthOfSource; + + Scalar + frontLeftScale, + frontRightScale, + rearLeftScale, + rearRightScale; + + Scalar + frontLeftDelay, + frontRightDelay, + rearLeftDelay, + rearRightDelay; + + Quadrant + quadrant; + }; + + //~~~~~~~~~~~~~~~~~~~~~~~ L4AudioSpatialization inlines ~~~~~~~~~~~~~~~~~~~~ + + inline MemoryStream& + MemoryStream_Read( + MemoryStream* stream, + L4AudioSpatialization::Quadrant *ptr + ) + { + return stream->ReadBytes(ptr, sizeof(*ptr)); + } + + inline MemoryStream& + MemoryStream_Write( + MemoryStream* stream, + const L4AudioSpatialization::Quadrant *ptr + ) + { + return stream->WriteBytes(ptr, sizeof(*ptr)); + } + + //########################################################################## + //######################### L4AudioLocation ########################## + //########################################################################## + + class L4AudioLocation: + public AudioLocation + { + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Construction, Destruction, Testing + // + public: + L4AudioLocation( + PlugStream *stream, + Entity *entity + ); + void + L4AudioLocationX(); + ~L4AudioLocation(); + + Logical + TestInstance() const; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Spatialization Accessors + // + public: + void + GetSpatialization(L4AudioSpatialization *the_spatialization) + {*the_spatialization = spatialization;} + + L4AudioSpatialization::Quadrant + GetQuadrant() + {return spatialization.quadrant;} + + Scalar + GetFrontLeftScale() + {return spatialization.frontLeftScale;} + Scalar + GetFrontRightScale() + {return spatialization.frontRightScale;} + Scalar + GetRearLeftScale() + {return spatialization.rearLeftScale;} + Scalar + GetRearRightScale() + {return spatialization.rearRightScale;} + + Scalar + GetFrontLeftITDPitchOffset() + {return frontLeftITDPitchOffset;} + Scalar + GetFrontRightITDPitchOffset() + {return frontRightITDPitchOffset;} + Scalar + GetRearLeftITDPitchOffset() + {return rearLeftITDPitchOffset;} + Scalar + GetRearRightITDPitchOffset() + {return rearRightITDPitchOffset;} + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Spatialization Implementation + // + public: + void + UpdateSpatialModelImplementation(AudioHead *audio_head); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Private data + // + private: + L4AudioSpatialization + spatialization; + + Time + lastITDFrameTime; + + Scalar + currentFrontLeftDelay, + currentFrontRightDelay, + currentRearLeftDelay, + currentRearRightDelay; + + AudioPitchCents + frontLeftITDPitchOffset, + frontRightITDPitchOffset, + rearLeftITDPitchOffset, + rearRightITDPitchOffset; + }; + + //########################################################################## + //######################### AudioChannelSet ########################## + //########################################################################## + + #define AUDIO_CHANNEL_SET_LENGTH (4) + + typedef int AudioChannelSetIndex; + const AudioChannelSetIndex AudioChannelSetSize = AUDIO_CHANNEL_SET_LENGTH; + + class AudioChannelSet SIGNATURED + { + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Construction, Destruction, & Testing + // + public: + AudioChannelSet(); + ~AudioChannelSet() {} + + Logical + TestInstance() const; + + static void + BuildFromPage( + PlugStream *stream, + NameList *name_list, + RegisteredClass::ClassID class_ID, + ObjectID object_ID + ); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Channel accesors + // + public: + void + SetFrontLeft(AudioChannel *audio_channel); + void + SetFrontRight(AudioChannel *audio_channel); + void + SetRearLeft(AudioChannel *audio_channel); + void + SetRearRight(AudioChannel *audio_channel); + + AudioChannel* + GetFrontLeft(); + AudioChannel* + GetFrontRight(); + AudioChannel* + GetRearLeft(); + AudioChannel* + GetRearRight(); + + void + SetNth( + AudioChannelSetIndex index, + AudioChannel *audio_channel + ); + AudioChannel* + GetNth(AudioChannelSetIndex index); + + void + ReleaseAll(); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Enable accesors + // + public: + void + EnableFrontLeft(Logical flag); + void + EnableFrontRight(Logical flag); + void + EnableRearLeft(Logical flag); + void + EnableRearRight(Logical flag); + + Logical + IsFrontLeftEnabled(); + Logical + IsFrontRightEnabled(); + Logical + IsRearLeftEnabled(); + Logical + IsRearRightEnabled(); + + void + EnableNth( + AudioChannelSetIndex index, + Logical flag + ); + void + EnableAll(); + Logical + IsNthEnabled(AudioChannelSetIndex index); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Null channel set + // + public: + static AudioChannelSet + Null; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Private data + // + private: + AudioChannel + *channels[AUDIO_CHANNEL_SET_LENGTH]; + Logical + enables[AUDIO_CHANNEL_SET_LENGTH]; + }; + + //########################################################################## + //########################## L4AudioSource ########################### + //########################################################################## + + class L4AudioSource: + public AudioSource + { + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Destruction, Testing + // + public: + ~L4AudioSource(); + + Logical + TestInstance() const; + + static void + BuildFromPage( + PlugStream *stream, + NameList *name_list, + ClassID class_ID, + ObjectID object_ID + ); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // AudioChannelSet methods + // + public: + void + SetAudioChannelSet(const AudioChannelSet &audio_channel_set); + const AudioChannelSet* + GetAudioChannelSet(); + + void + ReleaseChannels(); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Protected Constuction + // + protected: + L4AudioSource( + PlugStream *stream, + Entity *entity + ); + void + L4AudioSourceX(); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Protected Implementations + // + protected: + void + StopMessageImplementation(); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Protected Data + // + protected: + AudioChannelSet + channelSet; + }; + + //########################################################################## + //######################## DirectPatchSource ######################### + //########################################################################## + + enum DirectPatchPosition + { + FrontDirectPatchPosition = 0, + RearDirectPatchPosition = 1, + FrontLeftDirectPatchPosition = 2, + FrontRightDirectPatchPosition = 3, + RearLeftDirectPatchPosition = 4, + RearRightDirectPatchPosition = 5 + }; + + class DirectPatchSource: + public L4AudioSource + { + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Construction, Destruction, Testing + // + public: + DirectPatchSource( + PlugStream *stream, + Entity *entity + ); + ~DirectPatchSource(); + + Logical + TestInstance() const; + + static void + BuildFromPage( + PlugStream *stream, + NameList *name_list, + ClassID class_ID, + ObjectID object_ID + ); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // State implementations + // + public: + void + StartImplementation(); + void + StopImplementation(); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Protected Implementations + // + protected: + void + StartMessageImplementation(); + + void + ExecuteModel(Logical force_update); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Private data + // + private: + DirectPatchPosition + audioPosition; + AudioChannel + *channel; + + MIDIValue + lastMIDIVolume; + MIDIPitchBend + lastMIDIPitchBend; + MIDINRPNValue + lastMIDIFilterCutoff; + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~ DirectPatchSource inlines ~~~~~~~~~~~~~~~~~~~~ + + inline MemoryStream& + MemoryStream_Read( + MemoryStream *stream, + DirectPatchPosition *ptr + ) + { + return stream->ReadBytes(ptr, sizeof(*ptr)); + } + + inline MemoryStream& + MemoryStream_Write( + MemoryStream *stream, + const DirectPatchPosition *ptr + ) + { + return stream->WriteBytes(ptr, sizeof(*ptr)); + } + + //########################################################################## + //###################### Dynamic3DPatchSource ######################## + //########################################################################## + + class Dynamic3DPatchSource: + public L4AudioSource + { + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Construction, Destruction, Testing + // + public: + Dynamic3DPatchSource( + PlugStream *stream, + Entity *entity + ); + ~Dynamic3DPatchSource(); + + Logical + TestInstance() const; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Mix levels + // + public: + AudioControlValue + CalculateSourceVolumeScale(); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // State implementations + // + public: + void + StartImplementation(); + void + StopImplementation(); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Protected implementations + // + protected: + void + StartMessageImplementation(); + + void + ExecuteModel(Logical force_update); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Private data + // + private: + MIDIValue + lastFrontLeftMIDIVolume, + lastFrontRightMIDIVolume, + lastRearLeftMIDIVolume, + lastRearRightMIDIVolume; + + MIDIPitchBend + lastFrontLeftMIDIPitchBend, + lastFrontRightMIDIPitchBend, + lastRearLeftMIDIPitchBend, + lastRearRightMIDIPitchBend; + + MIDINRPNValue + lastMIDIFilterCutoff; + }; + + //########################################################################## + //####################### Static3DPatchSource ######################## + //########################################################################## + + class Static3DPatchSource: + public L4AudioSource + { + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Construction, Destruction, Testing + // + public: + Static3DPatchSource( + PlugStream *stream, + Entity *entity + ); + ~Static3DPatchSource(); + + Logical + TestInstance() const; + + static void + BuildFromPage( + PlugStream *stream, + NameList *name_list, + ClassID class_ID, + ObjectID object_ID + ); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // SetPosition + // + public: + void + SetPosition(const Vector3D &vector3D); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // State implementations + // + public: + void + StartImplementation(); + void + StopImplementation(); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Protected implementations + // + protected: + void + StartMessageImplementation(); + + void + ExecuteModel(Logical force_update); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Private Methods + // + private: + L4AudioSpatialization::Quadrant + GetQuadrant(); + Radian + GetAzimuthOfSource(); + + Scalar + GetFrontLeftScale(); + Scalar + GetFrontRightScale(); + Scalar + GetRearLeftScale(); + Scalar + GetRearRightScale(); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Private data + // + private: + Vector3D + position; + + Logical + useInternalSpatialization; + L4AudioSpatialization + internalSpatialization; + + MIDIValue + lastFrontLeftMIDIVolume, + lastFrontRightMIDIVolume, + lastRearLeftMIDIVolume, + lastRearRightMIDIVolume; + + MIDIPitchBend + lastMIDIPitchBend; + + MIDINRPNValue + lastMIDIFilterCutoff; + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~ Static3DPatchSource inlines ~~~~~~~~~~~~~~~~~~~~~ + + inline L4AudioSpatialization::Quadrant + Static3DPatchSource::GetQuadrant() + { + return internalSpatialization.quadrant; + } + + inline Radian + Static3DPatchSource::GetAzimuthOfSource() + { + return internalSpatialization.azimuthOfSource; + } + + inline Scalar + Static3DPatchSource::GetFrontLeftScale() + { + return internalSpatialization.frontLeftScale; + } + + inline Scalar + Static3DPatchSource::GetFrontRightScale() + { + return internalSpatialization.frontRightScale; + } + + inline Scalar + Static3DPatchSource::GetRearLeftScale() + { + return internalSpatialization.rearLeftScale; + } + + inline Scalar + Static3DPatchSource::GetRearRightScale() + { + return internalSpatialization.rearRightScale; + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~ AudioChannelSet inlines ~~~~~~~~~~~~~~~~~~~~~~ + + inline void + AudioChannelSet::SetFrontLeft(AudioChannel *audio_channel) + { + Check(this); + channels[0] = audio_channel; + } + + inline void + AudioChannelSet::SetFrontRight(AudioChannel *audio_channel) + { + Check(this); + channels[1] = audio_channel; + } + + inline void + AudioChannelSet::SetRearLeft(AudioChannel *audio_channel) + { + Check(this); + channels[2] = audio_channel; + } + + inline void + AudioChannelSet::SetRearRight(AudioChannel *audio_channel) + { + Check(this); + channels[3] = audio_channel; + } + + inline AudioChannel* + AudioChannelSet::GetFrontLeft() + { + Check(this); + return channels[0]; + } + + inline AudioChannel* + AudioChannelSet::GetFrontRight() + { + Check(this); + return channels[1]; + } + + inline AudioChannel* + AudioChannelSet::GetRearLeft() + { + Check(this); + return channels[2]; + } + + inline AudioChannel* + AudioChannelSet::GetRearRight() + { + Check(this); + return channels[3]; + } + + inline void + AudioChannelSet::SetNth( + AudioChannelSetIndex index, + AudioChannel *audio_channel + ) + { + Check(this); + Verify(index >=0 && index < AUDIO_CHANNEL_SET_LENGTH); + channels[index] = audio_channel; + } + + inline AudioChannel* + AudioChannelSet::GetNth(AudioChannelSetIndex index) + { + Check(this); + Verify(index >=0 && index < AUDIO_CHANNEL_SET_LENGTH); + return channels[index]; + } + + inline void + AudioChannelSet::EnableFrontLeft(Logical flag) + { + Check(this); + enables[0] = flag; + } + + inline void + AudioChannelSet::EnableFrontRight(Logical flag) + { + Check(this); + enables[1] = flag; + } + + inline void + AudioChannelSet::EnableRearLeft(Logical flag) + { + Check(this); + enables[2] = flag; + } + + inline void + AudioChannelSet::EnableRearRight(Logical flag) + { + Check(this); + enables[3] = flag; + } + + inline Logical + AudioChannelSet::IsFrontLeftEnabled() + { + Check(this); + return enables[0]; + } + + inline Logical + AudioChannelSet::IsFrontRightEnabled() + { + Check(this); + return enables[1]; + } + + inline Logical + AudioChannelSet::IsRearLeftEnabled() + { + Check(this); + return enables[2]; + } + + inline Logical + AudioChannelSet::IsRearRightEnabled() + { + Check(this); + return enables[3]; + } + + inline void + AudioChannelSet::EnableNth( + AudioChannelSetIndex index, + Logical flag + ) + { + Check(this); + Verify(index >=0 && index < AUDIO_CHANNEL_SET_LENGTH); + enables[index] = flag; + } + + inline Logical + AudioChannelSet::IsNthEnabled(AudioChannelSetIndex index) + { + Check(this); + Verify(index >=0 && index < AUDIO_CHANNEL_SET_LENGTH); + return enables[index]; + } + +#endif + diff --git a/CODE/RP/MUNGA_L4/L4AUDLVL.CPP b/CODE/RP/MUNGA_L4/L4AUDLVL.CPP new file mode 100644 index 0000000..20b83a5 --- /dev/null +++ b/CODE/RP/MUNGA_L4/L4AUDLVL.CPP @@ -0,0 +1,220 @@ +//===========================================================================// +// File: l4audlvl.cpp // +// Project: MUNGA Brick: Audio Renderer // +// 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 +#pragma hdrstop + +#if !defined(L4AUDLVL_HPP) +# include +#endif + +#if !defined(OBJSTRM_HPP) +# include +#endif + +#if !defined(NAMELIST_HPP) +# include +#endif + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~ PatchLevelOfDetail ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +#if DEBUG_LEVEL>0 + TableOf + PatchLevelOfDetail::patchTableSocket(NULL, True); +#endif + +// +//############################################################################# +//############################################################################# +// +PatchLevelOfDetail::PatchLevelOfDetail(PlugStream *stream): + AudioLevelOfDetail(stream) +{ + MemoryStream_Read(stream, &bankID); + MemoryStream_Read(stream, &patchID); + MemoryStream_Read(stream, &maxMIDIFilterCutoff); + + Warn(GetVoiceCount() > 4); // HACK - AWE appears to only play 1st 4 voices + + #ifdef LAB_ONLY + setupCount = 0; + #endif + + // + // Keep table of created patchs to verify that duplicates + // are not created, could move this to tool time + // + #if DEBUG_LEVEL>0 + unsigned int index_value = (bankID * 1000) + patchID; + if (patchTableSocket.Find(index_value) != NULL) + { + Dump((int)bankID); + Dump((int)patchID); + } + Verify(patchTableSocket.Find(index_value) == NULL); + patchTableSocket.AddValue(this, index_value); + #endif +} + +// +//############################################################################# +//############################################################################# +// +void + PatchLevelOfDetail::BuildFromPage( + PlugStream *stream, + NameList *name_list, + ClassID class_ID, + ObjectID object_ID + ) +{ + AudioLevelOfDetail::BuildFromPage(stream, name_list, class_ID, object_ID); + + // + // Store fields + // + MEM_STRM_WRITE_ENTRY(*stream, name_list, SBKBankID, bank_ID); + MEM_STRM_WRITE_ENTRY(*stream, name_list, SBKPatchID, patch_ID); + MEM_STRM_WRITE_ENTRY(*stream, name_list, MIDINRPNValue, max_filter_cutoff); +} + +// +//############################################################################# +//############################################################################# +// +PatchLevelOfDetail::~PatchLevelOfDetail() +{ + #ifdef LAB_ONLY + cout << "PatchLevelOfDetail::~PatchLevelOfDetail\t"; + cout << (int)bankID << ":" << (int)patchID << "\t"; + cout << "setupCount=\t" << setupCount << "\n"; + #endif +} + +// +//############################################################################# +//############################################################################# +// +Logical + PatchLevelOfDetail::TestInstance() const +{ + AudioLevelOfDetail::TestInstance(); + return True; +} + +// +//############################################################################# +//############################################################################# +// +void + PatchLevelOfDetail::SetupPatch(AudioChannel *channel) +{ + Check(this); + Check(channel); + + #ifdef LAB_ONLY + setupCount++; + #endif + + // + // Set the channel to the bank and program, reset patch controls + // + channel->SelectBank(bankID); + channel->SendProgramChange(patchID); + channel->SendController(MIDI_CONTROL_RESET, MIDI_MAX_CONTROL_VALUE); + + #if 0 + Tell((int)bankID << ":" << (int)patchID << "\n"); + #endif +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ PatchResource ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +// +//############################################################################# +//############################################################################# +// +PatchResource::PatchResource(PlugStream *stream): + AudioResource(stream) +{ +} + +// +//############################################################################# +//############################################################################# +// +void + PatchResource::BuildFromPage( + PlugStream *stream, + NameList *name_list, + ClassID class_ID, + ObjectID object_ID + ) +{ + AudioResource::BuildFromPage(stream, name_list, class_ID, object_ID); +} + +// +//############################################################################# +//############################################################################# +// +PatchResource::~PatchResource() +{ +} + +// +//############################################################################# +//############################################################################# +// +Logical + PatchResource::TestInstance() const +{ + AudioResource::TestInstance(); + return True; +} + +// +//############################################################################# +//############################################################################# +// +void + PatchResource::SetupPatch(AudioChannel *channel) +{ + Check(this); + Check(channel); + + PatchLevelOfDetail *patch_level_of_detail = + Cast_Object(PatchLevelOfDetail*, GetAudioLevelOfDetail()); + + Check(patch_level_of_detail); + patch_level_of_detail->SetupPatch(channel); +} + +// +//############################################################################# +//############################################################################# +// +MIDINRPNValue + PatchResource::GetMaxMIDIFilterCutoff() +{ + Check(this); + + PatchLevelOfDetail *patch_level_of_detail = + Cast_Object(PatchLevelOfDetail*, GetAudioLevelOfDetail()); + + Check(patch_level_of_detail); + return patch_level_of_detail->GetMaxMIDIFilterCutoff(); +} + + diff --git a/CODE/RP/MUNGA_L4/L4AUDLVL.HPP b/CODE/RP/MUNGA_L4/L4AUDLVL.HPP new file mode 100644 index 0000000..5b2c26c --- /dev/null +++ b/CODE/RP/MUNGA_L4/L4AUDLVL.HPP @@ -0,0 +1,142 @@ +//===========================================================================// +// File: l4audlvl.hpp // +// Project: MUNGA Brick: Audio Renderer // +// Contents: // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 01/30/95 ECH Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(L4AUDLVL_HPP) +# define L4AUDLVL_HPP + +# if !defined(AUDLVL_HPP) +# include +# endif + +# if !defined(L4AUDHDW_HPP) +# include +# endif + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~ PatchLevelOfDetail ~~~~~~~~~~~~~~~~~~~~~~~~~~ + + typedef MIDIValue SBKPatchID; + typedef MIDIValue SBKBankID; + + class PatchLevelOfDetail: + public AudioLevelOfDetail + { + public: + // + //----------------------------------------------------------------------- + // Construction, Destruction, Testing + //----------------------------------------------------------------------- + // + PatchLevelOfDetail(PlugStream *stream); + ~PatchLevelOfDetail(); + + Logical + TestInstance() const; + + // + //----------------------------------------------------------------------- + // BuildFromPage + //----------------------------------------------------------------------- + // + static void + BuildFromPage( + PlugStream *stream, + NameList *name_list, + ClassID class_ID, + ObjectID object_ID + ); + + // + //----------------------------------------------------------------------- + // Accessors + //----------------------------------------------------------------------- + // + void + SetupPatch(AudioChannel *channel); + + MIDINRPNValue + GetMaxMIDIFilterCutoff() + {return maxMIDIFilterCutoff;} + + private: + // + //----------------------------------------------------------------------- + // Private data + //----------------------------------------------------------------------- + // + SBKBankID + bankID; + SBKPatchID + patchID; + MIDINRPNValue + maxMIDIFilterCutoff; + + #ifdef LAB_ONLY + int + setupCount; + #endif + + // + // Keep table of created patchs to verify that duplicates + // are not created + // + #if DEBUG_LEVEL>0 + static TableOf + patchTableSocket; + #endif + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ PatchResource ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class PatchResource: + public AudioResource + { + public: + // + //----------------------------------------------------------------------- + // Construction, Destruction, Testing + //----------------------------------------------------------------------- + // + PatchResource(PlugStream *stream); + ~PatchResource(); + + Logical + TestInstance() const; + + // + //----------------------------------------------------------------------- + // BuildFromPage + //----------------------------------------------------------------------- + // + static void + BuildFromPage( + PlugStream *stream, + NameList *name_list, + ClassID class_ID, + ObjectID object_ID + ); + + // + //----------------------------------------------------------------------- + // Accessors + //----------------------------------------------------------------------- + // + void + SetupPatch(AudioChannel *channel); + + MIDINRPNValue + GetMaxMIDIFilterCutoff(); + }; + +#endif + diff --git a/CODE/RP/MUNGA_L4/L4AUDRES.CPP b/CODE/RP/MUNGA_L4/L4AUDRES.CPP new file mode 100644 index 0000000..09c2716 --- /dev/null +++ b/CODE/RP/MUNGA_L4/L4AUDRES.CPP @@ -0,0 +1,1019 @@ +//===========================================================================// +// File: l4audres.cpp // +// 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 // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(L4AUDRES_HPP) +# include +#endif + +#if !defined(L4AUDHDW_HPP) +# include +#endif + +#if !defined(L4AUDIO_HPP) +# include +#endif + +#if !defined(L4AUDLVL_HPP) +# include +#endif + +#if !defined(L4AUDWTR_HPP) +# include +#endif + +#if !defined(AUDCMP_HPP) +# include +#endif + +#if !defined(AUDSEQ_HPP) +# include +#endif + +#if !defined(AUDREND_HPP) +# include +#endif + +#if !defined(NAMELIST_HPP) +# include +#endif + +#if !defined(APP_HPP) +# include +#endif + +#if !defined(NOTATION_HPP) +# include +#endif + +//############################################################################# +//####################### AudioObjectStream ############################# +//############################################################################# + +// +//############################################################################# +// AudioObjectStream +//############################################################################# +// +AudioObjectStream::AudioObjectStream( + ResourceDescription *resource_description, + Entity *the_entity +): + PlugStream(resource_description) +{ + entity = the_entity; +} + +// +//############################################################################# +// AudioObjectStream +//############################################################################# +// +AudioObjectStream::AudioObjectStream() +{ + entity = NULL; +} + +// +//############################################################################# +// ~AudioObjectStream +//############################################################################# +// +AudioObjectStream::~AudioObjectStream() +{ +} + +// +//############################################################################# +// TestInstance +//############################################################################# +// +Logical + AudioObjectStream::TestInstance() const +{ + PlugStream::TestInstance(); + if (entity != NULL) + { + Check(entity); + } + return True; +} + +// +//############################################################################# +// MakeObjectImplementation +//############################################################################# +// +RegisteredClass* + AudioObjectStream::MakeObjectImplementation(Enumeration class_ID) +{ + Check(this); + Verify(class_ID != RegisteredClass::NullClassID); + + // + //----------------------------------------------------------------------- + // HACK - Constructors should be referenced through registration, for + // now just use a switch statement + //----------------------------------------------------------------------- + // + RegisteredClass *object; + + switch (class_ID) + { + // + // Static resources ... + // + case RegisteredClass::PatchLevelOfDetailClassID: + object = new PatchLevelOfDetail(this); + break; + + case RegisteredClass::PatchResourceClassID: + object = new PatchResource(this); + break; + + case RegisteredClass::AudioResourceIndexClassID: + object = new AudioResourceIndex(this); + break; + + // + // Location and sources ... + // + case RegisteredClass::L4AudioLocationClassID: + object = new L4AudioLocation(this, entity); + break; + + case RegisteredClass::DirectPatchSourceClassID: + object = new DirectPatchSource(this, entity); + break; + + case RegisteredClass::Dynamic3DPatchSourceClassID: + object = new Dynamic3DPatchSource(this, entity); + break; + + case RegisteredClass::Static3DPatchSourceClassID: + object = new Static3DPatchSource(this, entity); + break; + + // + // Audio components ... + // + case RegisteredClass::AudioControlMixerClassID: + object = new AudioControlMixer(this, entity); + break; + + case RegisteredClass::AudioControlMultiplierClassID: + object = new AudioControlMultiplier(this, entity); + break; + + case RegisteredClass::AudioResourceSelectorClassID: + object = new AudioResourceSelector(this, entity); + break; + + case RegisteredClass::AudioControlSmootherClassID: + object = new AudioControlSmoother(this, entity); + break; + + case RegisteredClass::AudioSampleAndHoldClassID: + object = new AudioSampleAndHold(this, entity); + break; + + case RegisteredClass::AudioControlSendClassID: + object = new AudioControlSend(this, entity); + break; + + case RegisteredClass::AudioControlSequenceClassID: + object = new AudioControlSequence(this, entity); + break; + + case RegisteredClass::AudioControlSplitterClassID: + object = new AudioControlSplitter(this, entity); + break; + + case RegisteredClass::AudioLFOClassID: + object = new AudioLFO(this, entity); + break; + + // + // Audio watchers ... + // + case RegisteredClass::AudioMotionTriggerClassID: + object = new AudioMotionTrigger(this, entity); + break; + + case RegisteredClass::AudioMotionScaleClassID: + object = new AudioMotionScale(this, entity); + break; + + case RegisteredClass::AudioHingeScaleClassID: + object = new AudioHingeScale(this, entity); + break; + + case RegisteredClass::AudioScalarTriggerClassID: + object = new AudioScalarTrigger(this, entity); + break; + + case RegisteredClass::AudioScalarScaleClassID: + object = new AudioScalarScale(this, entity); + break; + + case RegisteredClass::AudioLogicalTriggerClassID: + object = new AudioLogicalTrigger(this, entity); + break; + + case RegisteredClass::AudioEnumerationTriggerClassID: + object = new AudioEnumerationTrigger(this, entity); + break; + + case RegisteredClass::AudioIntegerTriggerClassID: + object = new AudioIntegerTrigger(this, entity); + break; + + case RegisteredClass::AudioControlsButtonTriggerClassID: + object = new AudioControlsButtonTrigger(this, entity); + break; + + case RegisteredClass::AudioStateTriggerClassID: + object = new AudioStateTrigger(this, entity); + break; + + case RegisteredClass::AudioIdleWatcherClassID: + object = new AudioIdleWatcher(this, entity); + break; + + case RegisteredClass::AudioEnumerationDeltaTriggerClassID: + object = new AudioEnumerationDeltaTrigger(this, entity); + break; + + case RegisteredClass::AudioScalarDeltaTriggerClassID: + object = new AudioScalarDeltaTrigger(this, entity); + break; + + case RegisteredClass::L4AudioCollisionTriggerClassID: + object = new L4AudioCollisionTrigger(this, entity); + break; + + case RegisteredClass::AudioMessageWatcherClassID: + object = new AudioMessageWatcher(this, entity); + break; + + case RegisteredClass::AudioControlsButtonMessageWatcherClassID: + object = new AudioControlsButtonMessageWatcher(this, entity); + break; + + // + // Inherited behavior + // + default: + object = PlugStream::MakeObjectImplementation(class_ID); + break; + } + return object; +} + +// +//############################################################################# +// CreatedObjectImplementation +//############################################################################# +// +void + AudioObjectStream::CreatedObjectImplementation( + RegisteredClass *object, + ObjectID object_ID + ) +{ + Check(this); + Check(object); + Verify(object_ID != NullObjectID); + + // + // Decide which index to add object to + // + switch (object->GetClassID()) + { + case RegisteredClass::PatchLevelOfDetailClassID: + case RegisteredClass::PatchResourceClassID: + case RegisteredClass::AudioResourceIndexClassID: + AddGlobalPlug(Cast_Object(Plug*, object), object_ID); + break; + + default: + AddLocalPlug(Cast_Object(Plug*, object), object_ID); + break; + } +} + +// +//############################################################################# +// BuildFromPageImplementation +//############################################################################# +// +void + AudioObjectStream::BuildFromPageImplementation( + NameList *name_list, + Enumeration class_ID_enumeration, + ObjectID object_ID + ) +{ + Check(this); + Verify(class_ID_enumeration != RegisteredClass::NullClassID); + Verify(object_ID != NullObjectID); + + // + //----------------------------------------------------------------------- + // HACK - Page interpreters should be referenced through registration, + // for now just use a switch statement + //----------------------------------------------------------------------- + // + RegisteredClass::ClassID + class_ID = (RegisteredClass::ClassID)class_ID_enumeration; + + switch (class_ID) + { + // + // Static resources ... + // + case RegisteredClass::PatchLevelOfDetailClassID: + PatchLevelOfDetail::BuildFromPage(this, name_list, class_ID, object_ID); + break; + + case RegisteredClass::PatchResourceClassID: + PatchResource::BuildFromPage(this, name_list, class_ID, object_ID); + break; + + case RegisteredClass::AudioResourceIndexClassID: + AudioResourceIndex::BuildFromPage(this, name_list, class_ID, object_ID); + break; + + // + // Location and sources ... + // + case RegisteredClass::L4AudioLocationClassID: + L4AudioLocation::BuildFromPage(this, name_list, class_ID, object_ID); + break; + + case RegisteredClass::DirectPatchSourceClassID: + DirectPatchSource::BuildFromPage(this, name_list, class_ID, object_ID); + break; + + case RegisteredClass::Dynamic3DPatchSourceClassID: + Dynamic3DPatchSource::BuildFromPage(this, name_list, class_ID, object_ID); + break; + + case RegisteredClass::Static3DPatchSourceClassID: + Static3DPatchSource::BuildFromPage(this, name_list, class_ID, object_ID); + break; + + // + // Audio components ... + // + case RegisteredClass::AudioControlMixerClassID: + AudioControlMixer::BuildFromPage(this, name_list, class_ID, object_ID); + break; + + case RegisteredClass::AudioControlMultiplierClassID: + AudioControlMultiplier::BuildFromPage(this, name_list, class_ID, object_ID); + break; + + case RegisteredClass::AudioResourceSelectorClassID: + AudioResourceSelector::BuildFromPage(this, name_list, class_ID, object_ID); + break; + + case RegisteredClass::AudioControlSmootherClassID: + AudioControlSmoother::BuildFromPage(this, name_list, class_ID, object_ID); + break; + + case RegisteredClass::AudioSampleAndHoldClassID: + AudioSampleAndHold::BuildFromPage(this, name_list, class_ID, object_ID); + break; + + case RegisteredClass::AudioControlSendClassID: + AudioControlSend::BuildFromPage(this, name_list, class_ID, object_ID); + break; + + case RegisteredClass::AudioControlSequenceClassID: + AudioControlSequence::BuildFromPage(this, name_list, class_ID, object_ID); + break; + + case RegisteredClass::AudioControlSplitterClassID: + AudioControlSplitter::BuildFromPage(this, name_list, class_ID, object_ID); + break; + + case RegisteredClass::AudioLFOClassID: + AudioLFO::BuildFromPage(this, name_list, class_ID, object_ID); + break; + + // + // Audio watchers ... + // + case RegisteredClass::AudioMotionTriggerClassID: + AudioMotionTrigger::BuildFromPage(this, name_list, class_ID, object_ID); + break; + + case RegisteredClass::AudioMotionScaleClassID: + AudioMotionScale::BuildFromPage(this, name_list, class_ID, object_ID); + break; + + case RegisteredClass::AudioHingeScaleClassID: + AudioHingeScale::BuildFromPage(this, name_list, class_ID, object_ID); + break; + + case RegisteredClass::AudioScalarTriggerClassID: + AudioScalarTrigger::BuildFromPage(this, name_list, class_ID, object_ID); + break; + + case RegisteredClass::AudioScalarScaleClassID: + AudioScalarScale::BuildFromPage(this, name_list, class_ID, object_ID); + break; + + case RegisteredClass::AudioLogicalTriggerClassID: + AudioLogicalTrigger::BuildFromPage(this, name_list, class_ID, object_ID); + break; + + case RegisteredClass::AudioEnumerationTriggerClassID: + AudioEnumerationTrigger::BuildFromPage(this, name_list, class_ID, object_ID); + break; + + case RegisteredClass::AudioIntegerTriggerClassID: + AudioIntegerTrigger::BuildFromPage(this, name_list, class_ID, object_ID); + break; + + case RegisteredClass::AudioControlsButtonTriggerClassID: + AudioControlsButtonTrigger::BuildFromPage(this, name_list, class_ID, object_ID); + break; + + case RegisteredClass::AudioStateTriggerClassID: + AudioStateTrigger::BuildFromPage(this, name_list, class_ID, object_ID); + break; + + case RegisteredClass::AudioIdleWatcherClassID: + AudioIdleWatcher::BuildFromPage(this, name_list, class_ID, object_ID); + break; + + case RegisteredClass::AudioEnumerationDeltaTriggerClassID: + AudioEnumerationDeltaTrigger::BuildFromPage(this, name_list, class_ID, object_ID); + break; + + case RegisteredClass::AudioScalarDeltaTriggerClassID: + AudioScalarDeltaTrigger::BuildFromPage(this, name_list, class_ID, object_ID); + break; + + case RegisteredClass::L4AudioCollisionTriggerClassID: + L4AudioCollisionTrigger::BuildFromPage(this, name_list, class_ID, object_ID); + break; + + case RegisteredClass::AudioMessageWatcherClassID: + AudioMessageWatcher::BuildFromPage(this, name_list, class_ID, object_ID); + break; + + case RegisteredClass::AudioControlsButtonMessageWatcherClassID: + AudioControlsButtonMessageWatcher::BuildFromPage(this, name_list, class_ID, object_ID); + break; + + // + // Inherited behavior + // + default: + PlugStream::BuildFromPageImplementation(name_list, class_ID, object_ID); + break; + } +} + +// +//############################################################################# +// BuiltFromPageImplementation +//############################################################################# +// +void + AudioObjectStream::BuiltFromPageImplementation( + Enumeration class_ID, + ObjectID object_ID, + const CString &object_name + ) +{ + Check(this); + Verify(class_ID != RegisteredClass::NullClassID); + Verify(object_ID != NullObjectID); + Check(&object_name); + + // + // Decide which index to add object to + // + if (object_name.Length() == 0) + return; + + switch (class_ID) + { + case RegisteredClass::PatchLevelOfDetailClassID: + case RegisteredClass::PatchResourceClassID: + case RegisteredClass::AudioResourceIndexClassID: + AddGlobalObjectID(object_ID, object_name); + break; + + default: + AddLocalObjectID(object_ID, object_name); + break; + } +} + +//############################################################################# +//###################### L4AudioResourceManager ######################### +//############################################################################# + +// +//############################################################################# +// L4AudioResourceManager +//############################################################################# +// +L4AudioResourceManager::L4AudioResourceManager() +{ +} + +// +//############################################################################# +// ~L4AudioResourceManager +//############################################################################# +// +L4AudioResourceManager::~L4AudioResourceManager() +{ +} + +// +//############################################################################# +// TestInstance +//############################################################################# +// +Logical + L4AudioResourceManager::TestInstance() const +{ + Node::TestInstance(); + return True; +} + +// +//############################################################################# +// PreloadResources +//############################################################################# +// +void + L4AudioResourceManager::PreloadResources( + NotationFile *notation_file, + AudioHardware *audio_hardware + ) +{ + Check(this); + Check(notation_file); + Check(audio_hardware); + + // + //---------------------------------------------------------------------- + // Load the sound banks + //---------------------------------------------------------------------- + // + NameList *name_list; + NameList::Entry *entry; + + Verify(notation_file->EntryCount("AudioResources") >= 2); + + name_list = notation_file->MakeEntryList("AudioResources"); + Register_Object(name_list); + entry = name_list->GetFirstEntry(); + Check(entry); + while (entry != NULL) + { + Check(entry); + if (entry->IsName("front_audio_resource")) + { + Check_Pointer(entry->GetChar()); + Check(audio_hardware->GetFrontCard()); + audio_hardware->GetFrontCard()->LoadSBK(entry->GetChar()); + } + else + { + Verify(entry->IsName("rear_audio_resource")); + Check_Pointer(entry->GetChar()); + Check(audio_hardware->GetRearCard()); + audio_hardware->GetRearCard()->LoadSBK(entry->GetChar()); + } + entry = entry->GetNextEntry(); + } + Unregister_Object(name_list); + delete name_list; + + // + //---------------------------------------------------------------------- + // Create static audio objects + //---------------------------------------------------------------------- + // + + // + // Get static audio stream resource + // + ResourceDescription *resource_description; + + Check(application); + Check(application->GetResourceFile()); + resource_description = + application->GetResourceFile()->FindResourceDescription( + "StaticAudioStream", + ResourceDescription::StaticAudioStreamResourceType + ); + Check(resource_description); + resource_description->Lock(); + + // + // Parse the audio object stream + // + AudioObjectStream audio_object_stream(resource_description, NULL); + + Check(&audio_object_stream); + audio_object_stream.CreateObjects(); + resource_description->Unlock(); +} + +// +//############################################################################# +// UnloadResources +//############################################################################# +// +void + L4AudioResourceManager::UnloadResources( + AudioHardware *audio_hardware + ) +{ + Check(this); + Check(audio_hardware); + + // + //---------------------------------------------------------------------- + // Release banks + //---------------------------------------------------------------------- + // + Check(audio_hardware->GetFrontCard()); + audio_hardware->GetFrontCard()->ReleaseAllBanks(); + Check(audio_hardware->GetRearCard()); + audio_hardware->GetRearCard()->ReleaseAllBanks(); +} + +// +//############################################################################# +// CreateStaticAudioStreamResource +//############################################################################# +// +ResourceDescription::ResourceID + L4AudioResourceManager::CreateStaticAudioStreamResource( + ResourceFile *resource_file + ) +{ + Check(resource_file); + + // + //---------------------------------------------------------------------- + // Open the notation file for the static stream resource + //---------------------------------------------------------------------- + // + Tell("Opening Audio Script audio\\static.scp\n"); + NotationFile notation_file("audio\\static.scp"); + Check(¬ation_file); + + // + //---------------------------------------------------------------------- + // Build the static audio object stream + //---------------------------------------------------------------------- + // + AudioObjectStream audio_object_stream; + + Check(&audio_object_stream); + audio_object_stream.BuildFromNotationFile(¬ation_file, resource_file); + Tell("Closed Audio Script\n"); + + // + //---------------------------------------------------------------------- + // Add the resource + //---------------------------------------------------------------------- + // + ResourceDescription *res_description; + + res_description = + resource_file->AddResourceMemoryStream( + "StaticAudioStream", + ResourceDescription::StaticAudioStreamResourceType, + 1, + ResourceDescription::Preload, + &audio_object_stream + ); + Check(res_description); + return res_description->resourceID; +} + +// +//############################################################################# +// CreateEntityAudioObjects +//############################################################################# +// +void + L4AudioResourceManager::CreateEntityAudioObjects( + Entity *entity, + AudioRepresentation audio_representation + ) +{ + Check(this); + Check(entity); + Verify( + audio_representation == InternalAudioRepresentation || + audio_representation == ExternalAudioRepresentation + ); + + // + //------------------------------------------------------------------------ + // Read the audio resource for this entity + //------------------------------------------------------------------------ + // + ResourceDescription *audio_resource_description; + + Check(application); + Check(application->GetResourceFile()); + audio_resource_description = + application->GetResourceFile()->SearchList( + entity->GetResourceID(), + ResourceDescription::AudioStreamListResourceType + ); + if (audio_resource_description == NULL) + return; + + // + //------------------------------------------------------------------------ + // Read the appropriate resource for an internal or external + // representation + //------------------------------------------------------------------------ + // + ResourceDescription *stream_resource_description; + + Check(application); + Check(application->GetResourceFile()); + Check(audio_resource_description); + stream_resource_description = + application->GetResourceFile()->SearchList( + audio_resource_description->resourceID, + (audio_representation == InternalAudioRepresentation) ? + ResourceDescription::InternalAudioStreamResourceType : + ResourceDescription::ExternalAudioStreamResourceType + ); + if (stream_resource_description == NULL) + return; + Check(stream_resource_description); + stream_resource_description->Lock(); + audio_resource_description->Lock(); + + // + //------------------------------------------------------------------------ + // Make the audio object stream + //------------------------------------------------------------------------ + // + AudioObjectStream + audio_object_stream( + stream_resource_description, + entity + ); + + Check(&audio_object_stream); + audio_object_stream.CreateObjects(); + stream_resource_description->Unlock(); + audio_resource_description->Unlock(); +} + +// +//############################################################################# +// DestroyEntityAudioObjects +//############################################################################# +// +void + L4AudioResourceManager::DestroyEntityAudioObjects(Entity *entity) +{ + Check(this); + Check(entity); + + // + //-------------------------------------------------------------------------- + // Stop and delete all audio objects + //-------------------------------------------------------------------------- + // + Entity::AudioSocketIterator + iterator(entity); + Component + *component; + AudioComponent + *audio_component; + + Check(&iterator); + while ((component = iterator.ReadAndNext()) != NULL) + { + audio_component = Cast_Object(AudioComponent*, component); + Check(audio_component); + audio_component->ReceiveControl(StopAudioControlID, 0.0f); + audio_component->ReceiveControl(FlushMessagesAudioControlID, 0.0f); + } + iterator.DeletePlugs(); +} + +// +//############################################################################# +// CreateModelAudioResource +//############################################################################# +// +ResourceDescription::ResourceID + L4AudioResourceManager::CreateModelAudioStreamResource( + ResourceFile *resource_file, + const char *model_name, + NotationFile *model_file, + const ResourceDirectories* + ) +{ + Check(resource_file); + Check_Pointer(model_name); + Check(model_file); + + const char *script_name = NULL; + ResourceDescription::ResourceID resource_id_list[3]; + size_t list_length = 0; + + resource_id_list[0] = ResourceDescription::NullResourceID; + resource_id_list[1] = ResourceDescription::NullResourceID; + resource_id_list[2] = ResourceDescription::NullResourceID; + + // + //-------------------------------------------------------------------------- + // Check for the external audio script + //-------------------------------------------------------------------------- + // + if (model_file->GetEntry("audio", "external", &script_name)) + { + // + // See if the resource already exists + // + ResourceDescription *res_description = + resource_file->FindResourceDescription( + script_name, + ResourceDescription::ExternalAudioStreamResourceType + ); + + // + //----------------------------------------------------------------------- + // If not, create it + //----------------------------------------------------------------------- + // + if (res_description == NULL) + { + // + // Make the file name + // + CString file_name(script_name); + CString prefix("audio\\"); + + file_name = prefix + file_name; + + // + // Build the memory stream + // + Tell("Opening Audio Script " << file_name << "\n"); + NotationFile script_file(file_name); + AudioObjectStream audio_object_stream; + + Check(&script_file); + Check(&audio_object_stream); + audio_object_stream.BuildFromNotationFile(&script_file, resource_file); + Tell("Closed Audio Script\n"); + + // + // Add the resource + // + res_description = + resource_file->AddResourceMemoryStream( + script_name, + ResourceDescription::ExternalAudioStreamResourceType, + 1, + ResourceDescription::Preload, + &audio_object_stream + ); + } + Check(res_description); + resource_id_list[list_length++] = res_description->resourceID; + } + + // + //-------------------------------------------------------------------------- + // Check for the internal audio script + //-------------------------------------------------------------------------- + // + if (model_file->GetEntry("audio", "internal", &script_name)) + { + // + // See if the resource already exists + // + ResourceDescription *res_description = + resource_file->FindResourceDescription( + script_name, + ResourceDescription::InternalAudioStreamResourceType + ); + + // + // If not, create it + // + if (res_description == NULL) + { + // + // Make the file name + // + CString file_name(script_name); + CString prefix("audio\\"); + + file_name = prefix + file_name; + + // + // Build the memory stream + // + Tell("Opening Audio Script " << file_name << "\n"); + NotationFile script_file(file_name); + AudioObjectStream audio_object_stream; + + Check(&script_file); + Check(&audio_object_stream); + audio_object_stream.BuildFromNotationFile(&script_file, resource_file); + Tell("Closed Audio Script\n"); + + // + // Add the resource + // + res_description = + resource_file->AddResourceMemoryStream( + script_name, + ResourceDescription::InternalAudioStreamResourceType, + 1, + ResourceDescription::Preload, + &audio_object_stream + ); + } + Check(res_description); + resource_id_list[list_length++] = res_description->resourceID; + } + + // + //-------------------------------------------------------------------------- + // Check for the audio entity model + //-------------------------------------------------------------------------- + // + const char *audio_entity_model = NULL; + + if (model_file->GetEntry("audio", "model", &audio_entity_model)) + { + // + // The resource should already exist + // + ResourceDescription *res_description = + resource_file->FindResourceDescription( + audio_entity_model, + ResourceDescription::ModelListResourceType + ); + if (res_description == NULL) + { + cout << "audio_entity_model == " << audio_entity_model; + Fail("L4AudioResourceManager::CreateModelAudioStreamResource - model not found"); + } + Check(res_description); + resource_id_list[list_length++] = res_description->resourceID; + } + + // + //-------------------------------------------------------------------------- + // If either script has been created, then create the resource list + //-------------------------------------------------------------------------- + // + if (list_length > 0) + { + ResourceDescription *res_description = + resource_file->AddResourceList( + model_name, + ResourceDescription::AudioStreamListResourceType, + 1, + ResourceDescription::Preload, + resource_id_list, + list_length + ); + Check(res_description); + return res_description->resourceID; + } + return ResourceDescription::NullResourceID; +} + diff --git a/CODE/RP/MUNGA_L4/L4AUDRES.HPP b/CODE/RP/MUNGA_L4/L4AUDRES.HPP new file mode 100644 index 0000000..3b72e4f --- /dev/null +++ b/CODE/RP/MUNGA_L4/L4AUDRES.HPP @@ -0,0 +1,185 @@ +//===========================================================================// +// File: l4audres.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(L4AUDRES_HPP) +# define L4AUDRES_HPP + +# if !defined(OBJSTRM_HH) +# include +# endif + +# if !defined(ENTITY_HPP) +# include +# endif + +# if !defined(AUDIO_HPP) +# include +# endif + + class AudioHardware; + + //########################################################################## + //###################### AudioObjectStream ########################### + //########################################################################## + + class AudioObjectStream: + public PlugStream + { + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Construction, Destruction and testing + // + public: + AudioObjectStream(); + AudioObjectStream( + ResourceDescription *resource_description, + Entity *entity + ); + ~AudioObjectStream(); + + Logical + TestInstance() const; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Implementations + // + private: + RegisteredClass* + MakeObjectImplementation(Enumeration class_ID); + + void + CreatedObjectImplementation( + RegisteredClass *object, + ObjectID object_ID + ); + + void + BuildFromPageImplementation( + NameList *entry_list, + Enumeration class_ID, + ObjectID object_ID + ); + + void + BuiltFromPageImplementation( + Enumeration class_ID, + ObjectID object_ID, + const CString &object_name_string + ); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Private data + // + private: + Entity *entity; + }; + + //########################################################################## + //#################### L4AudioResourceManager ######################## + //########################################################################## + + class L4AudioResourceManager: + public Node + { + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Construction, Destruction, Testing + // + public: + L4AudioResourceManager(); + ~L4AudioResourceManager(); + + Logical + TestInstance() const; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Static audio object methods + // + public: + // + //-------------------------------------------------------------------- + // PreloadResources + //-------------------------------------------------------------------- + // + void + PreloadResources( + NotationFile *notation_file, + AudioHardware *audio_hardware + ); + + // + //-------------------------------------------------------------------- + // UnloadResources + //-------------------------------------------------------------------- + // + void + UnloadResources( + AudioHardware *audio_hardware + ); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Static audio object methods - tool support + // + public: + // + //-------------------------------------------------------------------- + // CreateStaticAudioStreamResource + //-------------------------------------------------------------------- + // + static ResourceDescription::ResourceID + CreateStaticAudioStreamResource( + ResourceFile *resource_file + ); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Dynamic audio object methods + // + public: + // + //-------------------------------------------------------------------- + // CreateEntityAudioObjects + //-------------------------------------------------------------------- + // + void + CreateEntityAudioObjects( + Entity *entity, + AudioRepresentation audio_representation + ); + + // + //-------------------------------------------------------------------- + // DestroyEntityAudioObjects + //-------------------------------------------------------------------- + // + void + DestroyEntityAudioObjects(Entity *entity); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Dynamic audio object methods - tool support + // + public: + // + //-------------------------------------------------------------------- + // CreateModelAudioStreamResource + //-------------------------------------------------------------------- + // + static ResourceDescription::ResourceID + CreateModelAudioStreamResource( + ResourceFile *resource_file, + const char *model_name, + NotationFile *model_file, + const ResourceDirectories *directories + ); + }; + +#endif + diff --git a/CODE/RP/MUNGA_L4/L4AUDRND.CPP b/CODE/RP/MUNGA_L4/L4AUDRND.CPP new file mode 100644 index 0000000..4b3f67d --- /dev/null +++ b/CODE/RP/MUNGA_L4/L4AUDRND.CPP @@ -0,0 +1,1383 @@ +//===========================================================================// +// File: l4audrnd.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 +#pragma hdrstop + +#if !defined(L4AUDRND_HPP) +# include +#endif + +#if !defined(NOTATION_HPP) +# include +#endif + +// +//############################################################################# +// L4AudioRenderer +//############################################################################# +// +L4AudioRenderer::L4AudioRenderer( + RendererRate render_rate, + Logical mission_review_mode +): + AudioRenderer(render_rate), + runningAudioSourceSocket(NULL, False), + dormantAudioSourceSocket(NULL), + mixingAudioSourceSocket(NULL, False) +{ + missionReviewMode = mission_review_mode; + nextCalculateMixFrame = NullAudioFrameCount; +} + +// +//############################################################################# +// ~L4AudioRenderer +//############################################################################# +// +L4AudioRenderer::~L4AudioRenderer() +{ + // + //---------------------------------------------------------------------- + // Verify that all of entities have become uninteresting + //---------------------------------------------------------------------- + // + #if DEBUG_LEVEL>0 + { + RunningSourceIterator iterator(&runningAudioSourceSocket); + Verify(iterator.GetSize() == 0); + } + { + DormantSourceIterator iterator(&dormantAudioSourceSocket); + Verify(iterator.GetSize() == 0); + } + #endif + + // + //---------------------------------------------------------------------- + // Unload resources + //---------------------------------------------------------------------- + // + Check(&audioResourceManager); + audioResourceManager.UnloadResources(&audioHardware); + + // + //---------------------------------------------------------------------- + // Close audio hardware + //---------------------------------------------------------------------- + // + Check(&audioHardware); + audioHardware.Close(); +} + +// +//############################################################################# +// TestInstance +//############################################################################# +// +Logical + L4AudioRenderer::TestInstance() const +{ + AudioRenderer::TestInstance(); + + Check(&audioHardware); + Check(&runningAudioSourceSocket); + Check(&dormantAudioSourceSocket); + Check(&mixingAudioSourceSocket); + + return True; +} + +// +//############################################################################# +// Initialize +//############################################################################# +// +void + L4AudioRenderer::Initialize() +{ + Check(this); + + // + //---------------------------------------------------------------------- + // Call inherited method + //---------------------------------------------------------------------- + // + AudioRenderer::Initialize(); + + // + //---------------------------------------------------------------------- + // Get the audio head + //---------------------------------------------------------------------- + // + AudioHead *audio_head = GetAudioHead(); + Check(audio_head); + + // + //---------------------------------------------------------------------- + // Open the audio renderer notation file + //---------------------------------------------------------------------- + // + int ret; + CString audio_file_name; + + if (missionReviewMode) + { + audio_file_name = "audio\\audiomr.ini"; + } + else + { + audio_file_name = "audio\\audio.ini"; + } + + NotationFile notation_file(audio_file_name); + Check(¬ation_file); + + // + //---------------------------------------------------------------------- + // Define clipping sphere (m) + //---------------------------------------------------------------------- + // + Scalar clipping_radius; + + ret = notation_file.GetEntry( + "AudioRenderer", + "clipping_radius", + &clipping_radius + ); + if (!ret) + { + Fail("L4AudioRenderer::Initialize - clipping_radius not defined"); + } + Check(audio_head); + audio_head->DefineClippingSphere(clipping_radius); + + // + //---------------------------------------------------------------------- + // Distance to speakers or width of head entity (m) + //---------------------------------------------------------------------- + // + Scalar distance_between_ears; + ret = notation_file.GetEntry( + "AudioRenderer", + "distance_between_ears", + &distance_between_ears + ); + if (!ret) + { + Fail("L4AudioRenderer::Initialize - distance_between_ears not defined"); + } + Check(audio_head); + audio_head->SetDistanceBetweenEars(distance_between_ears); + + // + //---------------------------------------------------------------------- + // Define amplitude rolloff characteristics + //---------------------------------------------------------------------- + // + Scalar amplitude_rolloff; + Scalar amplitude_rolloff_knee; + Scalar amplitude_rolloff_distance_scale; + + ret = notation_file.GetEntry( + "AudioRenderer", + "amplitude_rolloff", + &litude_rolloff + ); + if (!ret) + { + Fail("L4AudioRenderer::Initialize - amplitude_rolloff not defined"); + } + ret = notation_file.GetEntry( + "AudioRenderer", + "amplitude_rolloff_distance_scale", + &litude_rolloff_distance_scale + ); + if (!ret) + { + Fail("L4AudioRenderer::Initialize - amplitude_rolloff_distance_scale not defined"); + } + ret = notation_file.GetEntry( + "AudioRenderer", + "amplitude_rolloff_knee", + &litude_rolloff_knee + ); + if (!ret) + { + Fail("L4AudioRenderer::Initialize - amplitude_rolloff_knee not defined"); + } + + Check(audio_head); + audio_head->ControlAmplitudeRollOff( + amplitude_rolloff, + amplitude_rolloff_knee, + amplitude_rolloff_distance_scale + ); + + // + //---------------------------------------------------------------------- + // Define high frequency rolloff characteristics + //---------------------------------------------------------------------- + // + Scalar high_frequency_rolloff; + Scalar high_frequency_rolloff_knee; + Scalar high_frequency_rolloff_distance_scale; + + ret = notation_file.GetEntry( + "AudioRenderer", + "high_frequency_rolloff", + &high_frequency_rolloff + ); + if (!ret) + { + Fail("L4AudioRenderer::Initialize - high_frequency_rolloff not defined"); + } + ret = notation_file.GetEntry( + "AudioRenderer", + "high_frequency_rolloff_knee", + &high_frequency_rolloff_knee + ); + if (!ret) + { + Fail("L4AudioRenderer::Initialize - high_frequency_rolloff_knee not defined"); + } + ret = notation_file.GetEntry( + "AudioRenderer", + "high_frequency_rolloff_distance_scale", + &high_frequency_rolloff_distance_scale + ); + if (!ret) + { + Fail("L4AudioRenderer::Initialize - high_frequency_rolloff_distance_scale not defined"); + } + + Check(audio_head); + audio_head->ControlHighFrequencyRollOff( + high_frequency_rolloff, + high_frequency_rolloff_knee, + high_frequency_rolloff_distance_scale + ); + + // + //---------------------------------------------------------------------- + // Define Doppler characterisitics + //---------------------------------------------------------------------- + // + Scalar doppler_range; + Scalar speed_of_sound; + + ret = notation_file.GetEntry( + "AudioRenderer", + "doppler_range", + &doppler_range + ); + if (!ret) + { + Fail("L4AudioRenderer::Initialize - doppler_range not defined"); + } + ret = notation_file.GetEntry( + "AudioRenderer", + "speed_of_sound", + &speed_of_sound + ); + if (!ret) + { + Fail("L4AudioRenderer::Initialize - speed_of_sound not defined"); + } + + Check(audio_head); + audio_head->ControlDopplerEffect( + doppler_range, + speed_of_sound + ); + + // + //---------------------------------------------------------------------- + // Define source compression characterisitics + //---------------------------------------------------------------------- + // + Scalar compression_exponent; + Scalar compression_scale; + + ret = notation_file.GetEntry( + "AudioRenderer", + "compression_exponent", + &compression_exponent + ); + if (!ret) + { + Fail("L4AudioRenderer::Initialize - compression_exponent not defined"); + } + ret = notation_file.GetEntry( + "AudioRenderer", + "compression_scale", + &compression_scale + ); + if (!ret) + { + Fail("L4AudioRenderer::Initialize - compression_scale not defined"); + } + + Check(audio_head); + audio_head->ControlSourceCompression( + compression_exponent, + compression_scale + ); + + // + //---------------------------------------------------------------------- + // Set ITD difference + //---------------------------------------------------------------------- + // + Scalar itd_difference; + + ret = notation_file.GetEntry( + "AudioRenderer", + "itd_difference", + &itd_difference + ); + if (!ret) + { + Fail("L4AudioRenderer::Initialize - itd_difference not defined"); + } + + Check(audio_head); + audio_head->SetITDDifference(itd_difference); + + // + //---------------------------------------------------------------------- + // Set global reverb scale + //---------------------------------------------------------------------- + // + Scalar global_reverb_scale; + + ret = notation_file.GetEntry( + "AudioRenderer", + "global_reverb_scale", + &global_reverb_scale + ); + if (!ret) + { + Fail("L4AudioRenderer::Initialize - global_reverb_scale not defined"); + } + + Check(audio_head); + audio_head->SetGlobalReverbScale(global_reverb_scale); + + // + //---------------------------------------------------------------------- + // Initialize the audio hardware + //---------------------------------------------------------------------- + // + Check(&audioHardware); + audioHardware.Initialize(); + + // + //---------------------------------------------------------------------- + // Preload resources + //---------------------------------------------------------------------- + // + Check(&audioResourceManager); + audioResourceManager.PreloadResources(¬ation_file, &audioHardware); +} + +// +//############################################################################# +// NotifyOfNewInterestingEntity +//############################################################################# +// +void + L4AudioRenderer::NotifyOfNewInterestingEntity(Entity *interesting_entity) +{ + SET_AUDIO_RENDERER(); + SET_AUDIO_RENDERER_CREATE_OBJECTS(); + + Check(this); + Check(interesting_entity); + + Entity *linked_entity = GetLinkedEntity(); + Check(linked_entity); + + AudioRepresentation audio_representation = + (AudioRepresentation)interesting_entity->GetAudioRepresentation( + linked_entity + ); + + Check(&audioResourceManager); + audioResourceManager.CreateEntityAudioObjects( + interesting_entity, + audio_representation + ); + + CLEAR_AUDIO_RENDERER_CREATE_OBJECTS(); + CLEAR_AUDIO_RENDERER(); +} + +// +//############################################################################# +// NotifyOfBecomingUninterestingEntity +//############################################################################# +// +void + L4AudioRenderer::NotifyOfBecomingUninterestingEntity( + Entity *uninteresting_entity + ) +{ + SET_AUDIO_RENDERER(); + SET_AUDIO_RENDERER_DESTROY_OBJECTS(); + + Check(this); + Check(uninteresting_entity); + + Check(&audioResourceManager); + audioResourceManager.DestroyEntityAudioObjects(uninteresting_entity); + + CLEAR_AUDIO_RENDERER_DESTROY_OBJECTS(); + CLEAR_AUDIO_RENDERER(); +} + +// +//############################################################################# +// LoadMissionImplementation +//############################################################################# +// +void + L4AudioRenderer::LoadMissionImplementation(Mission*) +{ + Check(this); +} + +// +//############################################################################# +// ShutdownImplementation +//############################################################################# +// +void + L4AudioRenderer::ShutdownImplementation() +{ + Check(this); +} + +// +//############################################################################# +// SuspendImplementation +//############################################################################# +// +void + L4AudioRenderer::SuspendImplementation() +{ + Check(this); +} + +// +//############################################################################# +// ResumeImplementation +//############################################################################# +// +void + L4AudioRenderer::ResumeImplementation() +{ + Check(this); +} + +// +//############################################################################# +// StartRequest +//############################################################################# +// +void + L4AudioRenderer::StartRequest(L4AudioSource *audio_source) +{ + Check(this); + Check(audio_source); + + // + //-------------------------------------------------------------------------- + // Verify that the source is stopped + //-------------------------------------------------------------------------- + // + Verify(audio_source->GetAudioSourceState() == StoppedAudioSourceState); + + // + //-------------------------------------------------------------------------- + // Request audio resources + //-------------------------------------------------------------------------- + // + Logical + resources_available; + AudioChannelSet + channel_set_result; + + resources_available = + RequestAudioResources( + audio_source, + &channel_set_result + ); + if (!resources_available) + { + if (audio_source->GetAudioRenderType() == SustainedAudioRenderType) + { + // + // Set state to dormant and add the source to the dormant list + // + audio_source->AssignAudioSourceState(DormantAudioSourceState); + dormantAudioSourceSocket.Add(audio_source); + } + return; + } + + // + //-------------------------------------------------------------------------- + // Start the audio source + //-------------------------------------------------------------------------- + // + + // + // Update source spatial model + // Set channel set of source + // Source start implementation + // Set state of source to running + // + audio_source->UpdateSpatialModel(GetAudioHead()); + audio_source->SetAudioChannelSet(channel_set_result); + audio_source->StartImplementation(); + audio_source->AssignAudioSourceState(RunningAudioSourceState); + + // + // Add source to the running list and the mixing list + // + runningAudioSourceSocket.AddValue( + audio_source, + audio_source->CalculateAudioWeighting() + ); + if ( + audio_source->GetAudioSourceMixPresence() != + ManualAudioSourceMixPresence + ) + { + mixingAudioSourceSocket.AddValue( + audio_source, + audio_source->GetAudioSourceMixPresence() + ); + } + #ifdef LAB_ONLY + sourceStartCount++; + #endif +} + +// +//############################################################################# +// StopRequest +//############################################################################# +// +void + L4AudioRenderer::StopRequest(L4AudioSource *audio_source) +{ + Check(this); + Check(audio_source); + + // + //-------------------------------------------------------------------------- + // Verify that the source is not stopped + //-------------------------------------------------------------------------- + // + Verify(audio_source->GetAudioSourceState() != StoppedAudioSourceState); + + // + //-------------------------------------------------------------------------- + // If state of the source is dormant or suspended + // Then set source to stop state and remove from dormant list + //-------------------------------------------------------------------------- + // + if ( + audio_source->GetAudioSourceState() == DormantAudioSourceState || + audio_source->GetAudioSourceState() == SuspendedAudioSourceState + ) + { + // + // Set state of source to stopped + // Verify that source is in dormant list + // Remove source from dormant list + // Verify that source is not in dormant list + // + audio_source->AssignAudioSourceState(StoppedAudioSourceState); + #if DEBUG_LEVEL>0 + { + DormantSourceIterator iterator(&dormantAudioSourceSocket); + Verify(iterator.IsPlugMember(audio_source) == True); + } + #endif + PlugIterator remover(audio_source); + remover.RemoveSocket(&dormantAudioSourceSocket); + #if DEBUG_LEVEL>0 + { + DormantSourceIterator iterator(&dormantAudioSourceSocket); + Verify(iterator.IsPlugMember(audio_source) == False); + } + #endif + return; + } + + // + //-------------------------------------------------------------------------- + // Stop the source + //-------------------------------------------------------------------------- + // + AudioSourceStopMaintenance(audio_source); +} + +// +//############################################################################# +// ExecuteImplementation +//############################################################################# +// +void + L4AudioRenderer::ExecuteImplementation( + RendererComplexity complexity_update, + RendererOrigin::InterestingEntityIterator *iterator + ) +{ + SET_AUDIO_RENDERER(); + SET_AUDIO_RENDERER_EXECUTE(); + + Check(this); + + AudioRenderer::ExecuteImplementation(complexity_update, iterator); + CalculateMix(); + RunningSourceCheckup(); + // RunningAudioSourceSort(); + DormantSourceCheckup(); + + CLEAR_AUDIO_RENDERER_EXECUTE(); + CLEAR_AUDIO_RENDERER(); +} + +// +//############################################################################# +// CalculateMix +//############################################################################# +// +void + L4AudioRenderer::CalculateMix() +{ + SET_AUDIO_CALCULATE_MIX(); + + // + //-------------------------------------------------------------------------- + // Is this the next calculate mix frame + //-------------------------------------------------------------------------- + // + #if 0 + if (nextCalculateMixFrame > GetAudioFrameCount()) + { + CLEAR_AUDIO_CALCULATE_MIX(); + return; + } + nextCalculateMixFrame = GetAudioFrameCount() + DefaultAudioFrameDelay; + #endif + + // + //-------------------------------------------------------------------------- + // Calculate the compression volume scaling + // + // For each source, calculate the amount to scale its volume by + // according to those sources which have a higher mix presence + //-------------------------------------------------------------------------- + // + { + AudioControlValue + compression_scale = 1.0f; + AudioControlValue + compression_effect = 0.0f; + AudioSourceMixPresence + current_mix_presence = MedAudioSourceMixPresence; + + MixingSourceIterator + iterator(&mixingAudioSourceSocket); + L4AudioSource + *audio_source; + + Check(GetAudioHead()); + Scalar comp_scale = GetAudioHead()->GetSourceCompressionScale(); + Scalar comp_exp = GetAudioHead()->GetSourceCompressionExponent(); + + // + // Get mix presence of the first source + // + if ((audio_source = iterator.GetCurrent()) != NULL) + { + Check(audio_source); + current_mix_presence = audio_source->GetAudioSourceMixPresence(); + } + + // + //----------------------------------------------------------------------- + // For each audio source, calculate the compression scale + //----------------------------------------------------------------------- + // + while ((audio_source = iterator.ReadAndNext()) != NULL) + { + Check(audio_source); + + // + //-------------------------------------------------------------------- + // If the mix presence of this source is greater then the last + // source then we have stepped to a lower mix presence. + //-------------------------------------------------------------------- + // + if ( + current_mix_presence != + audio_source->GetAudioSourceMixPresence() + ) + { + Verify( + current_mix_presence < + audio_source->GetAudioSourceMixPresence() + ); + current_mix_presence = audio_source->GetAudioSourceMixPresence(); + + // + // Calculate the compression scale for this mix presence + // + // scale = 1 - ((comp_scale*x)^comp_exp) + // + compression_scale = + 1.0f - pow(comp_scale * compression_effect, comp_exp); + Verify(compression_scale >= 0.0f && compression_scale <= 1.0f); + } + + // + //-------------------------------------------------------------------- + // Set the compression scale for this source + //-------------------------------------------------------------------- + // + audio_source->SetVolumeCompressionScale(compression_scale); + + // + //-------------------------------------------------------------------- + // Calculate the compression effect for this source + //-------------------------------------------------------------------- + // + AudioControlValue source_compression_effect; + + source_compression_effect = + audio_source->CalculateSourceCompressionEffect(); + Verify( + source_compression_effect >= 0.0f && + source_compression_effect <= 1.0f + ); + + // + //-------------------------------------------------------------------- + // Update the compression effect for this mix presence + //-------------------------------------------------------------------- + // + compression_effect = + Max(compression_effect, source_compression_effect); + Verify(compression_effect >= 0.0f && compression_effect <= 1.0f); + + #if 0 + Tell( + "compression_effect " << compression_effect << + " : compression_scale " << compression_scale << "\n" + ); + #endif + } + } + CLEAR_AUDIO_CALCULATE_MIX(); +} + +// +//############################################################################# +// RunningSourceCheckup +//############################################################################# +// +void + L4AudioRenderer::RunningSourceCheckup() +{ + SET_AUDIO_RUNNING_SOURCES(); + + // + //-------------------------------------------------------------------------- + // Iterate through all running sources + //-------------------------------------------------------------------------- + // + ChainOf + resort_socket(NULL); + RunningSourceIterator + running_iterator(&runningAudioSourceSocket); + L4AudioSource + *audio_source; + + while ((audio_source = running_iterator.GetCurrent()) != NULL) + { + Check(audio_source); + + // + //----------------------------------------------------------------------- + // If the source does not require maintenance then skip it + //----------------------------------------------------------------------- + // + if (!audio_source->RequiresMaintenance(GetAudioHead())) + { + running_iterator.Next(); + continue; + } + + // + //----------------------------------------------------------------------- + // If the source is clipped then either stop or suspend + //----------------------------------------------------------------------- + // + if (audio_source->IsAudioSourceClipped(GetAudioHead())) + { + if (audio_source->GetAudioRenderType() == TransientAudioRenderType) + { + AudioSourceStopMaintenance(audio_source); + } + else + { + Verify( + audio_source->GetAudioRenderType() == + SustainedAudioRenderType + ); + AudioSourceSuspendMaintenance(audio_source); + } + continue; + } + + // + //----------------------------------------------------------------------- + // If the source is finished playing then stop it + //----------------------------------------------------------------------- + // + if (audio_source->IsFinishedPlaying()) + { + AudioSourceStopMaintenance(audio_source); + continue; + } + + // + //----------------------------------------------------------------------- + // Recycle sustained sources + //----------------------------------------------------------------------- + // + if (audio_source->GetAudioRenderType() == SustainedAudioRenderType) + { + AudioTime duration_cutoff(15.0f); + + #if 0 + duration_cutoff = 15.0f; // HACK - should come from somewhere else + #endif + if (audio_source->GetCurrentRunningTime() > duration_cutoff) + { + audio_source->SuspendImplementation(); + audio_source->AssignAudioSourceState(SuspendedAudioSourceState); + audio_source->ResumeImplementation(); + audio_source->AssignAudioSourceState(RunningAudioSourceState); + running_iterator.Next(); + continue; + } + } + + // + //----------------------------------------------------------------------- + // Execute + //----------------------------------------------------------------------- + // + SET_AUDIO_EXECUTE_SOURCES(); + audio_source->Execute(); + CLEAR_AUDIO_EXECUTE_SOURCES(); + + // + //----------------------------------------------------------------------- + // Add to resort list if weight has changed + //----------------------------------------------------------------------- + // + if ( + audio_source->CalculateAudioWeighting() != + running_iterator.GetValue() + ) + { + running_iterator.Remove(); + resort_socket.Add(audio_source); + } + else + { + running_iterator.Next(); + } + } + + // + //-------------------------------------------------------------------------- + // Sort resort socket back into running socket + //-------------------------------------------------------------------------- + // + ChainIteratorOf + resort_iterator(&resort_socket); + + while ((audio_source = resort_iterator.ReadAndNext()) != NULL) + { + Check(audio_source); + Verify(running_iterator.IsPlugMember(audio_source) == False); + runningAudioSourceSocket.AddValue( + audio_source, + audio_source->CalculateAudioWeighting() + ); + } + + CLEAR_AUDIO_RUNNING_SOURCES(); +} + +// +//############################################################################# +// DormantSourceCheckup +//############################################################################# +// +void + L4AudioRenderer::DormantSourceCheckup() +{ + SET_AUDIO_DORMANT_SOURCES(); + + // + //-------------------------------------------------------------------------- + // Assemble the request socket + //-------------------------------------------------------------------------- + // + VChainOf + resume_request_socket(NULL, False); + DormantSourceIterator + dormant_iterator(&dormantAudioSourceSocket); + L4AudioSource + *audio_source; + + while ((audio_source = dormant_iterator.ReadAndNext()) != NULL) + { + Check(audio_source); + + // + // If the suspend gate is not up then it can not resume + // + if (!audio_source->CanResume(GetAudioHead())) + continue; + + // + // If the audio source is clipped then it can not resume + // + if (audio_source->IsAudioSourceClipped(GetAudioHead())) + continue; + + // + // Add to request socket + // + resume_request_socket.AddValue( + audio_source, + audio_source->CalculateAudioWeighting() + ); + } + + // + //-------------------------------------------------------------------------- + // Iterate through request socket + //-------------------------------------------------------------------------- + // + VChainIteratorOf + resume_request_iterator(&resume_request_socket); + + while ((audio_source = resume_request_iterator.GetCurrent()) != NULL) + { + Check(audio_source); + + // + // Request audio resources + // + AudioChannelSet + channel_set_result; + + if (!RequestAudioResources(audio_source, &channel_set_result)) + break; + + // + // Remove from dormant list and request list + // + PlugIterator remover(audio_source); + remover.RemoveSocket(&dormantAudioSourceSocket); + AudioWeighting audio_weighting = resume_request_iterator.GetValue(); + resume_request_iterator.Remove(); + + // + // Update Spatial model + // + audio_source->UpdateSpatialModel(GetAudioHead()); + + // + // Set channel set of source + // Source resume implementation + // Set state of source to running + // + audio_source->SetAudioChannelSet(channel_set_result); + audio_source->ResumeImplementation(); + audio_source->AssignAudioSourceState(RunningAudioSourceState); + + // + // Put on running socket and mixing socket + // + runningAudioSourceSocket.AddValue(audio_source, audio_weighting); + if ( + audio_source->GetAudioSourceMixPresence() != + ManualAudioSourceMixPresence + ) + { + mixingAudioSourceSocket.AddValue( + audio_source, + audio_source->GetAudioSourceMixPresence() + ); + } + } + CLEAR_AUDIO_DORMANT_SOURCES(); +} + +// +//############################################################################# +// AudioSourceStopMaintenance +//############################################################################# +// +void + L4AudioRenderer::AudioSourceStopMaintenance(L4AudioSource *source) +{ + Check(source); + Verify(source->GetAudioSourceState() == RunningAudioSourceState); + #if DEBUG_LEVEL>0 + { + RunningSourceIterator iterator(&runningAudioSourceSocket); + Verify(iterator.IsPlugMember(source) == True); + } + #endif + + source->StopImplementation(); + source->AssignAudioSourceState(StoppedAudioSourceState); + source->ReleaseChannels(); + + PlugIterator remover(source); + remover.RemoveSocket(&runningAudioSourceSocket); + remover.RemoveSocket(&mixingAudioSourceSocket); + + #if DEBUG_LEVEL>0 + { + RunningSourceIterator iterator(&runningAudioSourceSocket); + Verify(iterator.IsPlugMember(source) == False); + } + #endif +} + +// +//############################################################################# +// AudioSourceSuspendMaintenance +//############################################################################# +// +void + L4AudioRenderer::AudioSourceSuspendMaintenance(L4AudioSource *source) +{ + Check(source); + Verify(source->GetAudioRenderType() == SustainedAudioRenderType); + Verify(source->GetAudioSourceState() == RunningAudioSourceState); + #if DEBUG_LEVEL>0 + { + RunningSourceIterator iterator(&runningAudioSourceSocket); + Verify(iterator.IsPlugMember(source) == True); + } + #endif + + source->SuspendImplementation(); + source->AssignAudioSourceState(SuspendedAudioSourceState); + source->ReleaseChannels(); + + PlugIterator remover(source); + remover.RemoveSocket(&runningAudioSourceSocket); + remover.RemoveSocket(&mixingAudioSourceSocket); + + #if DEBUG_LEVEL>0 + { + RunningSourceIterator iterator(&runningAudioSourceSocket); + Verify(iterator.IsPlugMember(source) == False); + } + #endif + + dormantAudioSourceSocket.Add(source); +} + +// +//############################################################################# +// RequestAudioResources +//############################################################################# +// +Logical + L4AudioRenderer::RequestAudioResources( + L4AudioSource *audio_source, + AudioChannelSet *channel_set_result + ) +{ + Check(this); + Check(audio_source); + Check(channel_set_result); + + // + //-------------------------------------------------------------------------- + // This source must be within the culling volume + //-------------------------------------------------------------------------- + // + if (audio_source->IsAudioSourceClipped(GetAudioHead())) + return False; + + // + //-------------------------------------------------------------------------- + // Request audio channels for this source + //-------------------------------------------------------------------------- + // + Logical + resources_available; + + *channel_set_result = *audio_source->GetAudioChannelSet(); + Check(channel_set_result); + + resources_available = + RequestAudioChannels( + audio_source->GetAudioVoiceCount(), + channel_set_result + ); + + // + //-------------------------------------------------------------------------- + // If audio channels are not available then check running sources for + // lower weight sources + //-------------------------------------------------------------------------- + // + if (!resources_available) + { + RunningSourceIterator + iterator(&runningAudioSourceSocket); + L4AudioSource + *running_audio_source; + AudioWeighting + audio_source_weighting; + + iterator.Last(); + running_audio_source = iterator.GetCurrent(); + audio_source_weighting = audio_source->CalculateAudioWeighting(); + + // + //----------------------------------------------------------------------- + // while + // request for channels is not satisfied and + // there exist running sources that have lower weighting + //----------------------------------------------------------------------- + // + while ( + !resources_available && + running_audio_source != NULL && + audio_source_weighting < iterator.GetValue() // Actual value is inverted + ) + { + Check(running_audio_source); + Verify( + running_audio_source->GetAudioSourcePriority() <= + audio_source->GetAudioSourcePriority() + ); + + // + //-------------------------------------------------------------------- + // Collect Statistics + //-------------------------------------------------------------------- + // + #ifdef LAB_ONLY + if ( + running_audio_source->GetAudioSourcePriority() < + audio_source->GetAudioSourcePriority() + ) + { + resourceStealPriorityCount++; + } + else + { + Verify( + running_audio_source->GetAudioSourcePriority() == + audio_source->GetAudioSourcePriority() + ); + Warn( + running_audio_source->CalculateSourceVolumeScale() >= + audio_source->CalculateSourceVolumeScale() + ); + resourceStealVolumeCount++; + } + AudioTime duration_cutoff(0.1f); + if ( + running_audio_source->GetCurrentRunningTime() <= + duration_cutoff + ) + { + stealShortDurationCount++; + } + resourceStealCount++; + #endif + + // + //-------------------------------------------------------------------- + // If running source is transient + // Then stop the source + // Else suspend the source + //-------------------------------------------------------------------- + // + if ( + running_audio_source->GetAudioRenderType() == + TransientAudioRenderType + ) + { + AudioSourceStopMaintenance(running_audio_source); + } + else + { + Verify( + running_audio_source->GetAudioRenderType() == + SustainedAudioRenderType + ); + AudioSourceSuspendMaintenance(running_audio_source); + } + + // + //-------------------------------------------------------------------- + // Request resources again + //-------------------------------------------------------------------- + // + resources_available = + RequestAudioChannels( + audio_source->GetAudioVoiceCount(), + channel_set_result + ); + + iterator.Last(); + running_audio_source = iterator.GetCurrent(); + } + } + return resources_available; +} + +// +//############################################################################# +// RequestAudioChannels +//############################################################################# +// +Logical + L4AudioRenderer::RequestAudioChannels( + AudioVoiceCount voices_requested, + AudioChannelSet *channel_set_request + ) +{ + Check(this); + Check(channel_set_request); + + // + //---------------------------------------------------------------------- + // Attempt to allocate channels from audio hardware + //---------------------------------------------------------------------- + // + AudioChannel *channel; + Logical success = False; + AudioCard *front_card = GetFrontCard(); + AudioCard *rear_card = GetRearCard(); + + Check(front_card); + Check(rear_card); + + while (True) + { + if (channel_set_request->IsFrontLeftEnabled()) + { + if ((channel = + front_card->RequestAudioChannel(voices_requested)) == NULL) + break; + Check(channel); + channel_set_request->SetFrontLeft(channel); + } + + if (channel_set_request->IsFrontRightEnabled()) + { + if ((channel = + front_card->RequestAudioChannel(voices_requested)) == NULL) + break; + Check(channel); + channel_set_request->SetFrontRight(channel); + } + + if (channel_set_request->IsRearLeftEnabled()) + { + if ((channel = + rear_card->RequestAudioChannel(voices_requested)) == NULL) + break; + Check(channel); + channel_set_request->SetRearLeft(channel); + } + + if (channel_set_request->IsRearRightEnabled()) + { + if ((channel = + rear_card->RequestAudioChannel(voices_requested)) == NULL) + break; + Check(channel); + channel_set_request->SetRearRight(channel); + } + + success = True; + break; + } + + // + //---------------------------------------------------------------------- + // If did not succeed then release allocated channels + //---------------------------------------------------------------------- + // + if (!success) + { + channel_set_request->ReleaseAll(); + return False; + } + + // + //---------------------------------------------------------------------- + // else, return allocated channels + //---------------------------------------------------------------------- + // + return True; +} + +//~~~~~~~~~~~~~~~~~~~~~~ L4AudioRenderer profile bits ~~~~~~~~~~~~~~~~~~~~~~~~~ + +#if defined(TRACE_AUDIO_RENDERER_RUNNING_SOURCES) + BitTrace Audio_Renderer_Running_Sources("Audio Renderer Running Sources"); +#endif + +#if defined(TRACE_AUDIO_RENDERER_RUNNING_SORT) + BitTrace Audio_Renderer_Running_Sort("Audio Renderer Running Sort"); +#endif + +#if defined(TRACE_AUDIO_RENDERER_CALCULATE_MIX) + BitTrace Audio_Renderer_Calculate_Mix("Audio Renderer Calculate Mix"); +#endif + +#if defined(TRACE_AUDIO_RENDERER_EXECUTE_SOURCES) + BitTrace Audio_Renderer_Execute_Sources("Audio Renderer Execute Sources"); +#endif + +#if defined(TRACE_AUDIO_RENDERER_DORMANT_SOURCES) + BitTrace Audio_Renderer_Dormant_Sources("Audio Renderer Dormant Sources"); +#endif diff --git a/CODE/RP/MUNGA_L4/L4AUDRND.HPP b/CODE/RP/MUNGA_L4/L4AUDRND.HPP new file mode 100644 index 0000000..da4d2b5 --- /dev/null +++ b/CODE/RP/MUNGA_L4/L4AUDRND.HPP @@ -0,0 +1,231 @@ +//===========================================================================// +// File: l4audrnd.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(L4AUDRND_HPP) +# define L4AUDRND_HPP + +# if !defined(AUDREND_HPP) +# include +# endif + +# if !defined(L4AUDHDW_HPP) +# include +# endif + +# if !defined(L4AUDIO_HPP) +# include +# endif + +# if !defined(L4AUDRES_HPP) +# include +# endif + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ L4AudioRenderer ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class L4AudioRenderer: + public AudioRenderer + { + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Construction, Destruction, Testing + // + public: + L4AudioRenderer( + RendererRate render_rate, + Logical mission_review_mode + ); + ~L4AudioRenderer(); + + Logical + TestInstance() const; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Renderer support + // + public: + void + Initialize(); + + void + NotifyOfNewInterestingEntity(Entity *interesting_entity); + void + NotifyOfBecomingUninterestingEntity(Entity *uninteresting_entity); + + protected: + void + ExecuteImplementation( + RendererComplexity complexity_update, + RendererOrigin::InterestingEntityIterator *iterator + ); + + private: + void + LoadMissionImplementation(Mission *mission); + void + ShutdownImplementation(); + void + SuspendImplementation(); + void + ResumeImplementation(); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Audio hardware accessors + // + public: + AudioCard* + GetFrontCard(); + AudioCard* + GetRearCard(); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Audio Source support + // + public: + void + StartRequest(L4AudioSource *audio_source); + void + StopRequest(L4AudioSource *audio_source); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Private methods + // + private: + void + CalculateMix(); + void + RunningSourceCheckup(); + //void + // RunningAudioSourceSort(); + void + DormantSourceCheckup(); + void + AudioSourceStopMaintenance(L4AudioSource *source); + void + AudioSourceSuspendMaintenance(L4AudioSource *source); + + Logical + RequestAudioResources( + L4AudioSource *audio_source, + AudioChannelSet *channel_set_result + ); + Logical + RequestAudioChannels( + AudioVoiceCount voices_requested, + AudioChannelSet *channel_set_request + ); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Private data + // + private: + Logical + missionReviewMode; + + AudioHardware + audioHardware; + L4AudioResourceManager + audioResourceManager; + + AudioFrameCount + nextCalculateMixFrame; + + typedef VChainOf + RunningSourceSocket; + typedef VChainIteratorOf + RunningSourceIterator; + + RunningSourceSocket + runningAudioSourceSocket; + + typedef ChainOf + DormantSourceSocket; + typedef ChainIteratorOf + DormantSourceIterator; + + DormantSourceSocket + dormantAudioSourceSocket; + + typedef VChainOf + MixingSourceSocket; + typedef VChainIteratorOf + MixingSourceIterator; + + MixingSourceSocket + mixingAudioSourceSocket; + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~ L4AudioRenderer inlines ~~~~~~~~~~~~~~~~~~~~~~~~ + + inline AudioCard* + L4AudioRenderer::GetFrontCard() + { + Check(this); + return audioHardware.GetFrontCard(); + } + + inline AudioCard* + L4AudioRenderer::GetRearCard() + { + Check(this); + return audioHardware.GetRearCard(); + } + + //~~~~~~~~~~~~~~~~~~~~~~ L4AudioRenderer profile macros ~~~~~~~~~~~~~~~~~~~~ + + #if defined(TRACE_AUDIO_RENDERER_RUNNING_SOURCES) + extern BitTrace Audio_Renderer_Running_Sources; + #define SET_AUDIO_RUNNING_SOURCES() Audio_Renderer_Running_Sources.Set() + #define CLEAR_AUDIO_RUNNING_SOURCES() Audio_Renderer_Running_Sources.Clear() + #else + #define SET_AUDIO_RUNNING_SOURCES() + #define CLEAR_AUDIO_RUNNING_SOURCES() + #endif + + #if defined(TRACE_AUDIO_RENDERER_RUNNING_SORT) + extern BitTrace Audio_Renderer_Running_Sort; + #define SET_AUDIO_RUNNING_SORT() Audio_Renderer_Running_Sort.Set() + #define CLEAR_AUDIO_RUNNING_SORT() Audio_Renderer_Running_Sort.Clear() + #else + #define SET_AUDIO_RUNNING_SORT() + #define CLEAR_AUDIO_RUNNING_SORT() + #endif + + #if defined(TRACE_AUDIO_RENDERER_CALCULATE_MIX) + extern BitTrace Audio_Renderer_Calculate_Mix; + #define SET_AUDIO_CALCULATE_MIX() Audio_Renderer_Calculate_Mix.Set() + #define CLEAR_AUDIO_CALCULATE_MIX() Audio_Renderer_Calculate_Mix.Clear() + #else + #define SET_AUDIO_CALCULATE_MIX() + #define CLEAR_AUDIO_CALCULATE_MIX() + #endif + + #if defined(TRACE_AUDIO_RENDERER_EXECUTE_SOURCES) + extern BitTrace Audio_Renderer_Execute_Sources; + #define SET_AUDIO_EXECUTE_SOURCES() Audio_Renderer_Execute_Sources.Set() + #define CLEAR_AUDIO_EXECUTE_SOURCES() Audio_Renderer_Execute_Sources.Clear() + #else + #define SET_AUDIO_EXECUTE_SOURCES() + #define CLEAR_AUDIO_EXECUTE_SOURCES() + #endif + + #if defined(TRACE_AUDIO_RENDERER_DORMANT_SOURCES) + extern BitTrace Audio_Renderer_Dormant_Sources; + #define SET_AUDIO_DORMANT_SOURCES() Audio_Renderer_Dormant_Sources.Set() + #define CLEAR_AUDIO_DORMANT_SOURCES() Audio_Renderer_Dormant_Sources.Clear() + #else + #define SET_AUDIO_DORMANT_SOURCES() + #define CLEAR_AUDIO_DORMANT_SOURCES() + #endif + +#endif + diff --git a/CODE/RP/MUNGA_L4/L4AUDTUL.CPP b/CODE/RP/MUNGA_L4/L4AUDTUL.CPP new file mode 100644 index 0000000..14fc13d --- /dev/null +++ b/CODE/RP/MUNGA_L4/L4AUDTUL.CPP @@ -0,0 +1,83 @@ +//===========================================================================// +// File: l4audres.cpp // +// 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 // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(L4AUDRES_HPP) +# include +#endif + +#if !defined(L4TOOL_HPP) +# include +#endif + +#if !defined(L4AUDIO_HPP) +# include +#endif + +ResourceDescription::ResourceID + L4Tool::CreateModelAudioStreamResource( + ResourceFile *resource_file, + const char *model_name, + NotationFile *model_file, + const ResourceDirectories *directories + ) +{ + return + L4AudioResourceManager::CreateModelAudioStreamResource( + resource_file, + model_name, + model_file, + directories + ); +} + +ResourceDescription::ResourceID + L4Tool::CreateStaticAudioStreamResource( + ResourceFile *resource_file + ) +{ + return + L4AudioResourceManager::CreateStaticAudioStreamResource( + resource_file + ); +} + +// +//############################################################################# +//############################################################################# +// +void + L4AudioCreateSymbols::WriteEntryStream(ofstream &symbol_file) +{ + AudioCreateSymbols::WriteEntryStream(symbol_file); + + #define WRITE_ENTRY(name)\ + {\ + Verify(symbol_file);\ + symbol_file << #name;\ + symbol_file << "=";\ + symbol_file << name;\ + symbol_file << "\n";\ + } + + WRITE_ENTRY(FrontDirectPatchPosition); + WRITE_ENTRY(RearDirectPatchPosition); + WRITE_ENTRY(FrontLeftDirectPatchPosition); + WRITE_ENTRY(FrontRightDirectPatchPosition); + WRITE_ENTRY(RearLeftDirectPatchPosition); + WRITE_ENTRY(RearRightDirectPatchPosition); +} + diff --git a/CODE/RP/MUNGA_L4/L4AUDWTR.CPP b/CODE/RP/MUNGA_L4/L4AUDWTR.CPP new file mode 100644 index 0000000..db21e42 --- /dev/null +++ b/CODE/RP/MUNGA_L4/L4AUDWTR.CPP @@ -0,0 +1,210 @@ +//===========================================================================// +// File: l4audwtr.cpp // +// Project: MUNGA Brick: Audio Renderer // +// Contents: // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- -----------------------------------------------------------// +// 04/17/95 ECH Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(L4AUDWTR_HPP) +# include +#endif + +#if !defined(OBJSTRM_HPP) +# include +#endif + +#if !defined(NAMELIST_HPP) +# include +#endif + +//############################################################################# +//######################## L4AudioCollisionTrigger ###################### +//############################################################################# + +#if 0 +L4AudioCollisionTrigger::L4AudioCollisionTrigger( + StateIndicator *state_attribute_ptr, + Normal *normal_attribute_ptr, + Static3DPatchSource *audio_source, + Enumeration trigger_state, + AudioControlID control_ID, + AudioControlValue control_value, + Logical dump_value +): + AudioStateWatcher( + state_attribute_ptr, + audio_source, + L4AudioCollisionTriggerClassID, + dump_value + ) +{ + Check(normal_attribute_ptr); + normalAttributePtr = normal_attribute_ptr; + triggerState = trigger_state; + controlID = control_ID; + controlValue = control_value; + + PrimeWatcher(); +} +#endif + +// +//############################################################################# +//############################################################################# +// +L4AudioCollisionTrigger::~L4AudioCollisionTrigger() +{ +} + +// +//############################################################################# +//############################################################################# +// +L4AudioCollisionTrigger::L4AudioCollisionTrigger( + PlugStream *stream, + Entity *entity +): + AudioStateWatcher(stream, entity) +{ + // + // HACK - Get "normal" attribute pointer with names + // + CString attribute_name; + void *attribute_ptr; + + MemoryStream_Read(stream, &attribute_name); + Check(entity); + attribute_ptr = entity->GetAttributePointer(attribute_name); + normalAttributePtr = Cast_Object(Normal*, attribute_ptr); + + // + // Get other fields + // + MemoryStream_Read(stream, &triggerState); + MemoryStream_Read(stream, &controlID); + MemoryStream_Read(stream, &controlValue); + + PrimeWatcher(); +} + +// +//############################################################################# +//############################################################################# +// +void + L4AudioCollisionTrigger::BuildFromPage( + PlugStream *stream, + NameList *name_list, + ClassID class_ID, + ObjectID object_ID + ) +{ + AudioStateWatcher::BuildFromPage(stream, name_list, class_ID, object_ID); + + // + // HACK - Store "normal" attribute pointer with names + // + MEM_STRM_WRITE_ENTRY(*stream, name_list, CString, normal_attribute); + + // + // Store fields + // + MEM_STRM_WRITE_ENTRY(*stream, name_list, Enumeration, trigger_state); + MEM_STRM_WRITE_ENTRY(*stream, name_list, Enumeration, control_ID); + MEM_STRM_WRITE_ENTRY(*stream, name_list, AudioControlValue, control_value); +} + +// +//############################################################################# +//############################################################################# +// +Logical + L4AudioCollisionTrigger::TestInstance() const +{ + AudioStateWatcher::TestInstance(); + Check(normalAttributePtr); + return True; +} + +// +//############################################################################# +//############################################################################# +// +void + L4AudioCollisionTrigger::StateChanged( + Enumeration, + Enumeration new_state + ) +{ + if (new_state == triggerState) + { + // + // Get static 3D source + // + AudioComponent *audio_component; + Static3DPatchSource *audio_source; + + Check(&audioComponentSocket); + audio_component = audioComponentSocket.GetCurrent(); + Check(audio_component); + audio_source = Cast_Object(Static3DPatchSource*, audio_component); + Check(audio_source); + + // + // Get collision direction + // + Vector3D collision_direction(0.0f, 0.0f, 0.0f); + + Check(normalAttributePtr); + collision_direction -= *normalAttributePtr; + Check(&collision_direction); + audio_source->SetPosition(collision_direction); + + // + // Send control value + // + #if 1 + audio_component->ReceiveControl(controlID, controlValue); + #else + audio_component->PostReceiveControl(controlID, controlValue); + #endif + } +} + +// +//############################################################################# +//############################################################################# +// +#if DEBUG_LEVEL>0 +void + L4AudioCollisionTrigger::DumpValue(const StateIndicator *state_attribute_ptr) +#else +void + L4AudioCollisionTrigger::DumpValue(const StateIndicator*) +#endif +{ + // + // Get collision direction + // + Vector3D collision_direction(0.0f, 0.0f, 0.0f); + + Check(normalAttributePtr); + collision_direction -= *normalAttributePtr; + Check(&collision_direction); + + Tell( + "*state_attribute_ptr = " << *state_attribute_ptr << " : " << + "collision_direction = " << collision_direction << "\n" + ); +} + diff --git a/CODE/RP/MUNGA_L4/L4AUDWTR.HPP b/CODE/RP/MUNGA_L4/L4AUDWTR.HPP new file mode 100644 index 0000000..d2c6072 --- /dev/null +++ b/CODE/RP/MUNGA_L4/L4AUDWTR.HPP @@ -0,0 +1,113 @@ +//===========================================================================// +// File: l4audwtr.hpp // +// Project: MUNGA Brick: Audio Renderer // +// Contents: // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- -----------------------------------------------------------// +// 04/17/95 ECH Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(l4AUDWTR_HPP) +# define l4AUDWTR_HPP + +# if !defined(AUDWTHR_HPP) +# include +# endif + +# if !defined(L4AUDIO_HPP) +# include +# endif + +# if !defined(NORMAL_HPP) +# include +# endif + + //########################################################################## + //##################### L4AudioCollisionTrigger ###################### + //########################################################################## + + class L4AudioCollisionTrigger: + public AudioStateWatcher + { + public: + // + //-------------------------------------------------------------------- + // Constructor, Destructor + //-------------------------------------------------------------------- + // + #if 0 + L4AudioCollisionTrigger( + StateIndicator *state_attribute_ptr, + Normal *normal_attribute_ptr, + Static3DPatchSource *audio_source, + Enumeration trigger_state, + AudioControlID control_ID, + AudioControlValue control_value, + Logical dump_value + ); + #endif + L4AudioCollisionTrigger( + PlugStream *stream, + Entity *entity + ); + ~L4AudioCollisionTrigger(); + + Logical + TestInstance() const; + + // + //-------------------------------------------------------------------- + // BuildFromPage + //-------------------------------------------------------------------- + // + static void + BuildFromPage( + PlugStream *stream, + NameList *name_list, + RegisteredClass::ClassID class_ID, + ObjectID object_ID + ); + + protected: + // + //-------------------------------------------------------------------- + // StateChanged + //-------------------------------------------------------------------- + // + void + StateChanged( + Enumeration old_state, + Enumeration new_state + ); + + private: + // + //----------------------------------------------------------------------- + // DumpValue + //----------------------------------------------------------------------- + // + void + DumpValue(const StateIndicator *state_attribute_ptr); + + // + //-------------------------------------------------------------------- + // Private data + //-------------------------------------------------------------------- + // + Normal* + normalAttributePtr; + Enumeration + triggerState; + AudioControlID + controlID; + AudioControlValue + controlValue; + }; + +#endif + diff --git a/CODE/RP/MUNGA_L4/L4CTLTUL.CPP b/CODE/RP/MUNGA_L4/L4CTLTUL.CPP new file mode 100644 index 0000000..98b3d64 --- /dev/null +++ b/CODE/RP/MUNGA_L4/L4CTLTUL.CPP @@ -0,0 +1,31 @@ +//===========================================================================// +// File: l4video.cpp // +// Project: MUNGA Brick: Video Renderer Manager // +// Contents: Interface specification Video Renderer Manager // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 01/11/95 GAC Initial coding. // +// 07/11/95 KEO Modify video resource format. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide. // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL. // +//===========================================================================// + +#include + +#if !defined(L4CTRL_HPP) +# include +#endif + +#if !defined(L4TOOL_HPP) +# include +#endif + +PlatformTool::FindNameFunction + L4Tool::GetControlMappingFunction() +{ + return &LBE4ControlsManager::SetControlMappingID; +} + diff --git a/CODE/RP/MUNGA_L4/L4CTRL.CPP b/CODE/RP/MUNGA_L4/L4CTRL.CPP new file mode 100644 index 0000000..99b7431 --- /dev/null +++ b/CODE/RP/MUNGA_L4/L4CTRL.CPP @@ -0,0 +1,2429 @@ +//==========================================================================// +// File: controls.cc // +// Project: MUNGA Brick: Controls Manager // +// Contents: Interface specification for Controls // +//--------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ----------------------------------------------------------// +// 11/21/94 CPB Initial coding. // +//--------------------------------------------------------------------------// +// Copyright (C) 1994, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//==========================================================================// + +#include +#pragma hdrstop + +#if !defined(L4CTRL_HPP) +# include +#endif + +#if !defined(L4KEYBD_HPP) +# include +#endif + +#if !defined(L4APP_HPP) +# include +#endif + +// #define LOCAL_TEST + +#if defined(LOCAL_TEST) +# define Test_Tell(n) Tell(n << flush); +#else +# define Test_Tell(n) +#endif + +static const char *initFileName = "JOYSTICK.INI"; +#define RIO_SPOOL_SIZE 12000 + +//########################################################################### +//########################### Button type table ############################# +//########################################################################### +#define DARKBTN (char) 0 +#define AUTOBTN (char) 1 +#define MAPBTN (char) 2 + +static char + buttonType[LBE4ControlsManager::ButtonCount] = +{ + AUTOBTN, // ButtonAuxLowerLeft8=0x00 + AUTOBTN, // ButtonAuxLowerLeft7 + AUTOBTN, // ButtonAuxLowerLeft6, + AUTOBTN, // ButtonAuxLowerLeft5, + AUTOBTN, // ButtonAuxLowerLeft4, + AUTOBTN, // ButtonAuxLowerLeft3, + AUTOBTN, // ButtonAuxLowerLeft2, + AUTOBTN, // ButtonAuxLowerLeft1, + + AUTOBTN, // ButtonAuxLowerRight8=0x08 + AUTOBTN, // ButtonAuxLowerRight7, + AUTOBTN, // ButtonAuxLowerRight6, + AUTOBTN, // ButtonAuxLowerRight5, + AUTOBTN, // ButtonAuxLowerRight4, + AUTOBTN, // ButtonAuxLowerRight3, + AUTOBTN, // ButtonAuxLowerRight2, + AUTOBTN, // ButtonAuxLowerRight1, + + AUTOBTN, // ButtonSecondary1=0x10 + AUTOBTN, // ButtonSecondary2, + AUTOBTN, // ButtonSecondary3, + AUTOBTN, // ButtonSecondary4, + AUTOBTN, // ButtonSecondary5, + AUTOBTN, // ButtonSecondary6, + DARKBTN, // + DARKBTN, // + AUTOBTN, // ButtonSecondary7=0x18 + AUTOBTN, // ButtonSecondary8, + AUTOBTN, // ButtonSecondary9, + AUTOBTN, // ButtonSecondary10, + AUTOBTN, // ButtonSecondary11, + AUTOBTN, // ButtonSecondary12, + DARKBTN, // + DARKBTN, // + + AUTOBTN, // ButtonAuxUpperCenter8=0x20 + AUTOBTN, // ButtonAuxUpperCenter7, + AUTOBTN, // ButtonAuxUpperCenter6, + AUTOBTN, // ButtonAuxUpperCenter5, + AUTOBTN, // ButtonAuxUpperCenter4, + AUTOBTN, // ButtonAuxUpperCenter3, + AUTOBTN, // ButtonAuxUpperCenter2, + AUTOBTN, // ButtonAuxUpperCenter1, + + AUTOBTN, // ButtonAuxUpperLeft8=0x28 + AUTOBTN, // ButtonAuxUpperLeft7, + AUTOBTN, // ButtonAuxUpperLeft6, + AUTOBTN, // ButtonAuxUpperLeft5, + AUTOBTN, // ButtonAuxUpperLeft4, + AUTOBTN, // ButtonAuxUpperLeft3, + AUTOBTN, // ButtonAuxUpperLeft2, + AUTOBTN, // ButtonAuxUpperLeft1, + + AUTOBTN, // ButtonAuxUpperRight8=0x30 + AUTOBTN, // ButtonAuxUpperRight7, + AUTOBTN, // ButtonAuxUpperRight6, + AUTOBTN, // ButtonAuxUpperRight5, + AUTOBTN, // ButtonAuxUpperRight4, + AUTOBTN, // ButtonAuxUpperRight3, + AUTOBTN, // ButtonAuxUpperRight2, + AUTOBTN, // ButtonAuxUpperRight1, + + AUTOBTN, // ButtonPanic=0x38, + DARKBTN, // + DARKBTN, // + DARKBTN, // + DARKBTN, // ButtonDoor=0x3C, + DARKBTN, // + DARKBTN, // + + DARKBTN, // ButtonThrottle1=0x3F, + MAPBTN, // ButtonJoystickTrigger=0x40 + MAPBTN, // ButtonJoystickHatDown=0x41 + MAPBTN, // ButtonJoystickHatUp=0x42 + MAPBTN, // ButtonJoystickHatRight=0x43 + MAPBTN, // ButtonJoystickHatLeft=0x44 + MAPBTN, // ButtonJoystickPinky=0x45 + MAPBTN, // ButtonJoystickThumbLow=0x46 + MAPBTN // ButtonJoystickThumbHigh=0x47 +}; + +//########################################################################### +//############################ Joystick classes ############################# +//########################################################################### +Joystick::Joystick() +{ + NotationFile + init(initFileName); + + channel[0] = new FilterChannel( + &init, + FilterChannel::joystickXName, + 10,20,30 // bogus values in case file didn't previously exist + ); + Check(channel[0]); + + channel[1] = new FilterChannel( + &init, + FilterChannel::joystickYName, + 10,20,30 // bogus values in case file didn't previously exist + ); + Check(channel[1]); + + ButtonReleased = Joystick::NoButton; + ButtonPressed = Joystick::NoButton; + Check_Fpu(); +} + +Joystick::~Joystick() +{ + Check(this); + + NotationFile + init(initFileName); + + //------------------------------------------- + // Save DOS timestamp + //------------------------------------------- + time_t + dos_time; + time(&dos_time); + init.SetEntry("operator", "time", ctime(&dos_time)); + + for(int i=0; i<2; ++i) + { + Check(channel[i]); + delete channel[i]; + channel[i] = NULL; + } + Check_Fpu(); +} + +void + Joystick::BeginAlignment() +{ + Check(this); + for(int i=0; i<2; ++i) + { + Check(channel[i]); + channel[i]->BeginAlignment(); + } + Check_Fpu(); +} + +void + Joystick::EndAlignment() +{ + Check(this); + //------------------------------------------------------------ + // If channel was never adjusted, synthesize reasonable values + //------------------------------------------------------------ + NotationFile + init(initFileName); + EndAndSaveAlignment(&init); + + Check_Fpu(); +} + +void + Joystick::EndAndSaveAlignment(NotationFile *init_file) +{ + Check(this); + Check(init_file); + for(int i=0; i<2; ++i) + { + Check(channel[i]); + channel[i]->EndAlignment(init_file); + } + Check_Fpu(); +} + +void + Joystick::Update() +{ + Fail("Joystick::Update should not be called!\n"); +} + +void + Joystick::SetDeadBand(Scalar dead_band) +{ + Check(this); + for(int i=0; i<2; ++i) + { + Check(channel[i]); + channel[i]->SetDeadBand(dead_band); + } + Check_Fpu(); +} + +OrdinaryJoystick::OrdinaryJoystick() +{ + PC_Joystick_Mask = PCJ_Standard_Mask; + ExtendedValue.x = (Scalar) 0; + ExtendedValue.y = (Scalar) 0; + Check_Fpu(); +} + +OrdinaryJoystick::~OrdinaryJoystick() +{ + Check_Fpu(); +} + +void OrdinaryJoystick::Update() +{ + int newButtons, changedButtons; + + Check(this); + // + //--------------------------------------------------- + // Update analog values + //--------------------------------------------------- + // + PC_Joystick_Update(); + Check(channel[0]); + Value.x = channel[0]->Update(PC_Joystick1_Raw_X); + Check(channel[1]); + Value.y = channel[1]->Update(PC_Joystick1_Raw_Y); + // + //--------------------------------------------------- + // Handle button changes + //--------------------------------------------------- + // + newButtons = (int) PC_Joystick_Buttons; + changedButtons = newButtons ^ oldButtons; + + ButtonPressed = Joystick::NoButton; + ButtonReleased = Joystick::NoButton; + + if (changedButtons) + { + if (changedButtons & PCJ_Standard_Button1) + { + if (newButtons & PCJ_Standard_Button1) + { + ButtonPressed |= Joystick::Trigger; + } + else + { + ButtonReleased |= Joystick::Trigger; + } + } + if (changedButtons & PCJ_Standard_Button2) + { + if (newButtons & PCJ_Standard_Button2) + { + ButtonPressed |= Joystick::Thumb3; + } + else + { + ButtonReleased |= Joystick::Thumb3; + } + } + } + oldButtons = newButtons; + Check_Fpu(); +} + +Logical + Joystick::TestInstance() const +{ + return True; +} + +FlightStickPro::FlightStickPro() +{ + NotationFile + init(initFileName); + + throttle = new FilterChannel( + &init, + FilterChannel::throttleName, + 10,30 // bogus values in case file doesn't exist + ); + + Check(throttle); + + PC_Joystick_Mask = PCJ_FSP_Mask; + ExtendedValue.x = (Scalar) 0; + Check_Fpu(); +} + +FlightStickPro::~FlightStickPro() +{ + Check(this); + + NotationFile + init(initFileName); + //------------------------------------------- + // Save DOS timestamp + //------------------------------------------- + time_t + dos_time; + time(&dos_time); + init.SetEntry("operator", "time", ctime(&dos_time)); + + Check(throttle); + delete throttle; + throttle = NULL; + + Check_Fpu(); +} + +void FlightStickPro::Update() +{ + int newButtons; + + Check(this); + // + //--------------------------------------------------- + // Update analog values + //--------------------------------------------------- + // + PC_Joystick_Update(); + Check(channel[0]); + Value.x = channel[0]->Update(PC_Joystick1_Raw_X); + Check(channel[1]); + Value.y = channel[1]->Update(PC_Joystick1_Raw_Y); + + // Note inverted direction (below) for throttle + + Check(throttle); + ExtendedValue.y = 1.0 - throttle->Update(PC_Joystick2_Raw_Y); + // + //--------------------------------------------------- + // Handle button changes + //--------------------------------------------------- + // + newButtons = int (PC_Joystick_Buttons); + + ButtonPressed = Joystick::NoButton; + ButtonReleased = Joystick::NoButton; + + if (newButtons != oldButtons) + { + switch(oldButtons) + { + case PCJ_FSP_Up: ButtonReleased = Joystick::HatUp; break; + case PCJ_FSP_Down: ButtonReleased = Joystick::HatDown; break; + case PCJ_FSP_Left: ButtonReleased = Joystick::HatLeft; break; + case PCJ_FSP_Right: ButtonReleased = Joystick::HatRight; break; + case PCJ_FSP_Trigger: ButtonReleased = Joystick::Trigger; break; + case PCJ_FSP_LButton: ButtonReleased = Joystick::Thumb3; break; + case PCJ_FSP_RButton: ButtonReleased = Joystick::Thumb1; break; + case PCJ_FSP_CButton: ButtonReleased = Joystick::Thumb2; break; + } + switch(newButtons) + { + case PCJ_FSP_Up: ButtonPressed = Joystick::HatUp; break; + case PCJ_FSP_Down: ButtonPressed = Joystick::HatDown; break; + case PCJ_FSP_Left: ButtonPressed = Joystick::HatLeft; break; + case PCJ_FSP_Right: ButtonPressed = Joystick::HatRight; break; + case PCJ_FSP_Trigger: ButtonPressed = Joystick::Trigger; break; + case PCJ_FSP_LButton: ButtonPressed = Joystick::Thumb3; break; + case PCJ_FSP_RButton: ButtonPressed = Joystick::Thumb1; break; + case PCJ_FSP_CButton: ButtonPressed = Joystick::Thumb2; break; + } + oldButtons = newButtons; + } + Check_Fpu(); +} + +void + FlightStickPro::BeginAlignment() +{ + Check(this); + Check(throttle); + throttle->BeginAlignment(); + + Joystick::BeginAlignment(); + Check_Fpu(); +} + +void + FlightStickPro::EndAlignment() +{ + Check(this); + + NotationFile + init(initFileName); + + Check(throttle); + throttle->EndAlignment(&init); + + Joystick::EndAndSaveAlignment(&init); + + Check_Fpu(); +} + +ThrustMaster::ThrustMaster() +{ + PC_Joystick_Mask = PCJ_TM_Mask; + ExtendedValue.x = (Scalar) 0; + ExtendedValue.y = (Scalar) 0; + hatMax = 0; + prevHatState = 0; + Check_Fpu(); +} + +ThrustMaster::~ThrustMaster() +{ + Check_Fpu(); +} + +void ThrustMaster::Update() +{ + int newButtons, changedButtons; + int hat; + + Check(this); + // + //--------------------------------------------------- + // Update analog values + //--------------------------------------------------- + // + PC_Joystick_Update(); + Check(channel[0]); + Value.x = channel[0]->Update(PC_Joystick1_Raw_X); + Check(channel[1]); + Value.y = channel[1]->Update(PC_Joystick1_Raw_Y); + // + //--------------------------------------------------- + // Handle button changes + //--------------------------------------------------- + // + ButtonPressed = Joystick::NoButton; + ButtonReleased = Joystick::NoButton; + + newButtons = (int) PC_Joystick_Buttons; + changedButtons = newButtons ^ oldButtons; + + if (changedButtons) + { + if (changedButtons & PCJ_TM_Trigger) + { + if (newButtons & PCJ_TM_Trigger) + { + ButtonPressed |= Joystick::Trigger; + } + else + { + ButtonReleased |= Joystick::Trigger; + } + } + if (changedButtons & PCJ_TM_ThumbHigh) + { + if (newButtons & PCJ_TM_ThumbHigh) + { + ButtonPressed |= Joystick::Thumb3; + } + else + { + ButtonReleased |= Joystick::Thumb3; + } + } + if (changedButtons & PCJ_TM_ThumbMid) + { + if (newButtons & PCJ_TM_ThumbMid) + { + ButtonPressed |= Joystick::Thumb2; + } + else + { + ButtonReleased |= Joystick::Thumb2; + } + } + if (changedButtons & PCJ_TM_ThumbLow) + { + if (newButtons & PCJ_TM_ThumbLow) + { + ButtonPressed |= Joystick::Thumb1; + } + else + { + ButtonReleased |= Joystick::Thumb1; + } + } + oldButtons = newButtons; + } + // + //--------------------------------------------------- + // Handle "hat" changes + //--------------------------------------------------- + // + hat = PC_Joystick2_Raw_Y; + if (hatMax < hat) { hatMax = hat; } + if (hat > ((hatMax*7)>>3)) // Unpressed, near max. + { + newButtons = 0; + } + else if (hat > ((hatMax*5)>>3)) // HatLeft is about 3/4 max + { + newButtons = Joystick::HatLeft; + } + else if (hat > ((hatMax*3)>>3)) // HatDown is about 1/2 max + { + newButtons = Joystick::HatDown; + } + else if (hat > (hatMax>>3)) // HatRight is about 1/4 max + { + newButtons = Joystick::HatRight; + } + else // Must be hatUp (near zero) + { + newButtons = Joystick::HatUp; + } + if (newButtons != prevHatState) + { + ButtonReleased |= prevHatState; + ButtonPressed |= newButtons; + prevHatState = newButtons; + } + Check_Fpu(); +} + + +//######################################################################### +//########################## LBE4ControlsManager ########################## +//######################################################################### + +//--------------------------------------------------------------------------- +// Class derivation +//--------------------------------------------------------------------------- +Derivation + LBE4ControlsManager::ClassDerivations( + ControlsManager::ClassDerivations,"L4ControlsManager"); + +//--------------------------------------------------------------------------- +// Message support +//--------------------------------------------------------------------------- +//const Receiver::HandlerEntry +// LBE4ControlsManager::MessageHandlerEntries[]= +//{ +// MESSAGE_ENTRY(LBE4ControlsManager,BeginCalibration), +// MESSAGE_ENTRY(LBE4ControlsManager,EndCalibration) +//}; +// +//Receiver::MessageHandlerSet +// LBE4ControlsManager::MessageHandlers( +// ELEMENTS(LBE4ControlsManager::MessageHandlerEntries), +// LBE4ControlsManager::MessageHandlerEntries, +// ControlsManager::MessageHandlers +// ); +//--------------------------------------------------------------------------- +// Shared data +//--------------------------------------------------------------------------- +LBE4ControlsManager::SharedData + LBE4ControlsManager::DefaultData( + LBE4ControlsManager::ClassDerivations, + LBE4ControlsManager::MessageHandlers + ); +// +//############################################################################ +// LBE4ControlsManager +// +// Creator method +//---------------------------------------------------------------------------- +// Enter: virtualDataPtr +//############################################################################ +// +LBE4ControlsManager::LBE4ControlsManager(): + ControlsManager(L4ControlsManagerClassID, DefaultData) +{ + Check_Pointer(this); + // + //------------------------------------------------------------------------- + // configure + //------------------------------------------------------------------------- + // + flags.mouseExists = 0; + flags.keyboardExists = 0; + flags.joystickExists = 0; + flags.RIOExists = 0; + + virtualJoystickX = 0; + virtualJoystickY = 0; + + lastJoystickUpdate = 0L; + joystickType = LBE4ControlsManager::none; + + mousePointer = NULL; + joystickPointer = NULL; + rioPointer = NULL; + lastRioRequest = 0L; + primaryControlType = LBE4ControlsManager::None; + + char + *controlString(getenv("L4CONTROLS")); + + if (controlString != NULL) + { + // + //------------------------------------------------- + // parse environment variable, build configuration + //------------------------------------------------- + // + char + temp[128]; + char + *dest; + char + c; + int + noMore(0); + + do + { + // + // Get the next token + // Can't use strtok(), because RIO::RIO uses it, + // and it's not re-entrant. + // + + dest = temp; + if (noMore) + { + *dest = '\0'; + } + else + { + do + { + switch(c=*controlString++) + { + case '\0': + case '\n': + noMore = 1; + // deliberately falls through into next case + + case ',': + case ';': + c = '\0'; + // deliberately falls through into default case + + default: + *dest++=c; + break; + } + } + while (c != '\0'); + } + + if ( + (strcmpi(temp, "RIO") == 0)|| + (strcmpi(temp, "RIO:COM1") == 0) + ) + { + rioPointer = new RIO(RIO_COM1); + Check(rioPointer); + Register_Object(rioPointer); + flags.RIOExists = 1; + primaryControlType = LBE4ControlsManager::PrimaryRIO; + } + else if (strcmpi(temp, "RIO:COM2") == 0) + { + rioPointer = new RIO(RIO_COM2); + Check(rioPointer); + Register_Object(rioPointer); + flags.RIOExists = 1; + primaryControlType = LBE4ControlsManager::PrimaryRIO; + } + else if (strcmpi(temp, "KEYBOARD") == 0) + { + flags.keyboardExists = 1; + } + else if (strcmpi(temp, "MOUSE") == 0) + { + if (!flags.mouseExists) + { + flags.mouseExists = 1; + mousePointer = new Mouse; + Check(mousePointer); + Register_Object(mousePointer); + if (mousePointer->Errors) + { + Unregister_Object(mousePointer); + delete mousePointer; + mousePointer = NULL; + flags.mouseExists = 0; + } + } + } + else if (strcmpi(temp, "JOYSTICK") == 0) + { + flags.joystickExists = 1; + joystickType = LBE4ControlsManager::ordinary; + joystickPointer = new OrdinaryJoystick(); + Register_Object(joystickPointer); + primaryControlType = LBE4ControlsManager::PrimaryGenericJoystick; + } + else if (strcmpi(temp, "FLIGHTSTICKPRO") == 0) + { + flags.joystickExists = 1; + joystickType = LBE4ControlsManager::flightstickPro; + joystickPointer = new FlightStickPro(); + Register_Object(joystickPointer); + primaryControlType = LBE4ControlsManager::PrimaryFlightStickPro; + } + else if (strcmpi(temp, "THRUSTMASTER") == 0) + { + flags.joystickExists = 1; + joystickType = LBE4ControlsManager::thrustMaster; + joystickPointer = new ThrustMaster(); + Register_Object(joystickPointer); + primaryControlType = LBE4ControlsManager::PrimaryThrustMaster; + } + } + while (temp[0] != '\0'); + } + + //-------------------------------------------------- + // Clear all lamps (and reset analog I/O) + //-------------------------------------------------- + if (rioPointer != NULL) + { + Check(rioPointer); + rioPointer->GeneralReset(); + } + //-------------------------------------------------- + // Get mode mask for updating + //-------------------------------------------------- + Check(application); + Check(application->GetModeManager()); + ModeMask + mode_mask = application->GetModeManager()->GetModeMask(); + //-------------------------------------------------- + // Initialize scalar group + //-------------------------------------------------- + { + int + i; + ControlsScalar + initial_scalar = 0.0; + + for(i=0; iRewind(); + RIOStreamEvent + *start = (RIOStreamEvent*)rioStream->GetPointer(); + + Unregister_Object(rioStream); + delete rioStream; + + Unregister_Pointer(start); + delete[] start; + + rioStream = NULL; + streamEnabled = False; + } + + //-------------------------------------------------- + // Delete mouse + //-------------------------------------------------- + if (mousePointer != NULL) + { + Check(mousePointer); + Unregister_Object(mousePointer); + delete mousePointer; + mousePointer = NULL; + } + //-------------------------------------------------- + // Delete joystick + //-------------------------------------------------- + if (joystickPointer != NULL) + { + Check(joystickPointer); + Unregister_Object(joystickPointer); + delete joystickPointer; + joystickPointer = NULL; + } + //-------------------------------------------------- + // Delete string manager temporary groups + //-------------------------------------------------- + ExitControlsMode(); + //-------------------------------------------------- + // Delete RIO AFTER buttons! + // ...the 'autoManager' button class sends + // lamp commands when deleted. + //-------------------------------------------------- + if (rioPointer != NULL) + { + Check(rioPointer); + Unregister_Object(rioPointer); + delete rioPointer; + rioPointer = NULL; + } + + Check_Fpu(); +} + +// +//############################################################################# +// LocalShutdown +//############################################################################# +// +void + LBE4ControlsManager::LocalShutdown() +{ + Check_Pointer(this); + + if (rioPointer != NULL) + { + Check(rioPointer); + Unregister_Object(rioPointer); + delete rioPointer; + + rioPointer = NULL; + } + + ControlsManager::LocalShutdown(); + Check_Fpu(); +} + +// +//############################################################################ +// Remove +// +// Remove all controlsInstance records bearing the given ID +//############################################################################ +// +void + LBE4ControlsManager::Remove(ModeMask mode_mask) +{ + int i; + + Check(this); + for(i=0; i= 0); + Verify(lamp_number < LBE4ControlsManager::LampCount); + + rioPointer->SetLamp(lamp_number, (RIO::LampState) state); + } + Check_Fpu(); +} + +// +//############################################################################ +// Execute +// +// Execution method +//############################################################################ +// +void + LBE4ControlsManager::Execute() +{ + ControlsJoystick virtual_joystick; + ControlsKey keyValue; + ControlsMouse mouseValue; + Logical new_RIO_values(False); + + Check(this); + //-------------------------------------------------- + // Get mode mask for updating + //-------------------------------------------------- + Check(application); + Check(application->GetModeManager()); + ModeMask + mode_mask = application->GetModeManager()->GetModeMask(); + //------------------------------------------------------------------------- + // Process operator control mode + //------------------------------------------------------------------------- + // ManageControlsMode(); + + //------------------------------------------------------------------------- + // Process RIO + //------------------------------------------------------------------------- + if (flags.RIOExists) + { + Check(rioPointer); + + RIO::RIOEvent rio_event; + // + //------------------------------------ + // Request analog update + // (held down to 5 Hz unless reply + // is received: reply allows another + // request to be sent next invocation) + //------------------------------------ + // + if (!playbackMode) + { + Scalar + delta_t(Now() - lastRioRequest); + Scalar + limit; + static Logical + first_time = True; + + if (application->GetApplicationState() == Application::RunningMission) + { + limit = 15.0; // 0.2 + } + else + { + limit = 15.0; + } + + if (first_time) + { + first_time = False; + } + else + { + if (delta_t >= limit) // 5 Hz minimum rate, in case of no reply + { + //------------------------- + // Debugging aid + //------------------------- + long + time_in_ticks; + + time_in_ticks = lastRioRequest; + if (time_in_ticks != 0L) + { + DEBUG_STREAM << + "LBE4ControlsManager::Execute, lost RIO analog request\n"; + + extern Logical + iThinkIRQIsOn; + + extern int + pcspakCharactersSent; + + + DEBUG_STREAM << + "iThinkIRQIsOn =" << iThinkIRQIsOn << + ", actual state =" << PCSPAKIRQState() << + ", characters sent =" << pcspakCharactersSent << "\n"; + } + + rioPointer->RequestAnalogUpdate(); + lastRioRequest = Now(); + } + //------------------------- + // Debugging aid + //------------------------- + else if (delta_t < 0.0) + { + DEBUG_STREAM << + "LBE4ControlsManager::Execute, delta_t went negative (" << + delta_t << ")\n"; + + rioPointer->RequestAnalogUpdate(); + lastRioRequest = Now(); + } + } + } + + // + //------------------------------------ + // Process events + //------------------------------------ + // + while (GetNextRIOEvent(&rio_event)) + { + ProcessRIOEvent(rio_event, &new_RIO_values); + } + } + + // + //------------------------------------------------------------------------- + // Read physical joystick inputs, filter the values + //------------------------------------------------------------------------- + // + if (flags.joystickExists) + { + Scalar delta_t(((long)Now())-lastJoystickUpdate); + + if (delta_t > .05) + { + Check(joystickPointer); + joystickPointer->Update(); + joystickPointer->Value.x = -joystickPointer->Value.x; // HACK!!! + + lastJoystickUpdate = Now(); + } + } + + // + //------------------------------------------------------------------------- + // Read physical mouse inputs, generate virtual joystick values + //------------------------------------------------------------------------- + // + if (flags.mouseExists) + { + Check(mousePointer); + mousePointer->ReadCounters(&mouseValue.x, &mouseValue.y); + + virtualJoystickX += mouseValue.x; + virtualJoystickY += mouseValue.y; + + +# define MAXEXTENT 2048 // This is a guess. We'll have to try it and see. + + if (virtualJoystickX > MAXEXTENT) { virtualJoystickX = MAXEXTENT; } + if (virtualJoystickX < -MAXEXTENT) { virtualJoystickX = -MAXEXTENT; } + virtual_joystick.x = (Scalar) virtualJoystickX / (Scalar) MAXEXTENT; + + if (virtualJoystickY > MAXEXTENT) { virtualJoystickY = MAXEXTENT; } + if (virtualJoystickY < -MAXEXTENT) { virtualJoystickY = -MAXEXTENT; } + virtual_joystick.y = (Scalar) virtualJoystickY / (Scalar) MAXEXTENT; + } + + // + //------------------------------------------------------------------------- + // Update the scalar mapping groups using the analog values + //------------------------------------------------------------------------- + // + if (flags.RIOExists && new_RIO_values) + { + Check(rioPointer); + + Check(&scalarGroup[LBE4ControlsManager::ScalarThrottle]); + scalarGroup[LBE4ControlsManager::ScalarThrottle].Update( + &rioPointer->Throttle, mode_mask + ); + + Check(&scalarGroup[LBE4ControlsManager::ScalarLeftPedal]); + scalarGroup[LBE4ControlsManager::ScalarLeftPedal].Update( + &rioPointer->LeftPedal, mode_mask + ); + + Check(&scalarGroup[LBE4ControlsManager::ScalarRightPedal]); + scalarGroup[LBE4ControlsManager::ScalarRightPedal].Update( + &rioPointer->RightPedal, mode_mask + ); + + Check(&scalarGroup[LBE4ControlsManager::ScalarJoystickX]); + scalarGroup[LBE4ControlsManager::ScalarJoystickX].Update( + &rioPointer->JoystickX, mode_mask + ); + + Check(&scalarGroup[LBE4ControlsManager::ScalarJoystickY]); + scalarGroup[LBE4ControlsManager::ScalarJoystickY].Update( + &rioPointer->JoystickY, mode_mask + ); + } + else if (flags.joystickExists) + { + Check(&scalarGroup[LBE4ControlsManager::ScalarThrottle]); + scalarGroup[LBE4ControlsManager::ScalarThrottle].Update( + &joystickPointer->ExtendedValue.y, mode_mask + ); + + Check(&scalarGroup[LBE4ControlsManager::ScalarJoystickX]); + scalarGroup[LBE4ControlsManager::ScalarJoystickX].Update( + &joystickPointer->Value.x, mode_mask + ); + + Check(&scalarGroup[LBE4ControlsManager::ScalarJoystickY]); + scalarGroup[LBE4ControlsManager::ScalarJoystickY].Update( + &joystickPointer->Value.y, mode_mask + ); + } + + if (flags.mouseExists) + { + Check(&scalarGroup[LBE4ControlsManager::ScalarMouseX]); + scalarGroup[LBE4ControlsManager::ScalarMouseX].Update( + &virtual_joystick.x, mode_mask + ); + Check(&scalarGroup[LBE4ControlsManager::ScalarMouseY]); + scalarGroup[LBE4ControlsManager::ScalarMouseY].Update( + &virtual_joystick.y, mode_mask + ); + } + + // + //------------------------------------------------------------------------- + // Update the joystick mapping groups using the analog values + //------------------------------------------------------------------------- + // + if (flags.RIOExists && new_RIO_values) + { + Check(rioPointer); + + ControlsJoystick + stick; + + stick.x = rioPointer->JoystickX; + stick.y = rioPointer->JoystickY; + + Check(&joystickGroup[LBE4ControlsManager::JoystickPhysical]); + joystickGroup[LBE4ControlsManager::JoystickPhysical].Update( + &stick, mode_mask + ); + } + else if (flags.joystickExists) + { + Check(&joystickGroup[LBE4ControlsManager::JoystickPhysical]); + joystickGroup[LBE4ControlsManager::JoystickPhysical].Update( + &joystickPointer->Value, mode_mask + ); + } + + if (flags.mouseExists) + { + Check(&joystickGroup[LBE4ControlsManager::JoystickVirtual]); + joystickGroup[LBE4ControlsManager::JoystickVirtual].Update( + &virtual_joystick, mode_mask + ); + } + + // + //------------------------------------------------------------------------- + // Update the PC keyboard mapping group + //------------------------------------------------------------------------- + // + if (flags.keyboardExists) + { + keyValue = (ControlsKey) PC_Keyboard_Read(); + if (keyValue) + { + Check(&keyboardGroup[KeyboardPC]); + keyboardGroup[KeyboardPC].ForceUpdate(&keyValue, mode_mask); + + Check(&stringManager); + stringManager.Update(KeyboardPC, keyValue); + } + } + + // + //------------------------------------------------------------------------- + // Update the button mapping groups + //------------------------------------------------------------------------- + // + + // + //-------------------------- + // Joystick buttons + //-------------------------- + // + if (flags.joystickExists) + { + int i; + ControlsButton b; + + Check(joystickPointer); + + i = joystickPointer->ButtonReleased; + if(i != Joystick::NoButton) + { + if (i & Joystick::Trigger) + { + b = - ButtonJoystickTrigger - 1; + buttonGroup[ButtonJoystickTrigger].Update(&b, mode_mask); + } + if (i & Joystick::Thumb1) + { + b = - ButtonJoystickPinky - 1; + buttonGroup[ButtonJoystickPinky].Update(&b, mode_mask); + } + if (i & Joystick::Thumb2) + { + b = - ButtonJoystickThumbLow - 1; + buttonGroup[ButtonJoystickThumbLow].Update(&b, mode_mask); + } + if (i & Joystick::Thumb3) + { + b = - ButtonJoystickThumbHigh - 1; + buttonGroup[ButtonJoystickThumbHigh].Update(&b, mode_mask); + } + if (i & Joystick::HatUp) + { + b = - ButtonJoystickHatUp - 1; + buttonGroup[ButtonJoystickHatUp].Update(&b, mode_mask); + } + if (i & Joystick::HatDown) + { + b = - ButtonJoystickHatDown - 1; + buttonGroup[ButtonJoystickHatDown].Update(&b, mode_mask); + } + if (i & Joystick::HatLeft) + { + b = - ButtonJoystickHatLeft - 1; + buttonGroup[ButtonJoystickHatLeft].Update(&b, mode_mask); + } + if (i & Joystick::HatRight) + { + b = - ButtonJoystickHatRight - 1; + buttonGroup[ButtonJoystickHatRight].Update(&b, mode_mask); + } + } + + i = joystickPointer->ButtonPressed; + if(i != Joystick::NoButton) + { + if (i & Joystick::Trigger) + { + b = ButtonJoystickTrigger + 1; + buttonGroup[ButtonJoystickTrigger].Update(&b, mode_mask); + } + if (i & Joystick::Thumb1) + { + b = ButtonJoystickPinky + 1; + buttonGroup[ButtonJoystickPinky].Update(&b, mode_mask); + } + if (i & Joystick::Thumb2) + { + b = ButtonJoystickThumbLow + 1; + buttonGroup[ButtonJoystickThumbLow].Update(&b, mode_mask); + } + if (i & Joystick::Thumb3) + { + b = ButtonJoystickThumbHigh + 1; + buttonGroup[ButtonJoystickThumbHigh].Update(&b, mode_mask); + } + if (i & Joystick::HatUp) + { + b = ButtonJoystickHatUp + 1; + buttonGroup[ButtonJoystickHatUp].Update(&b, mode_mask); + } + if (i & Joystick::HatDown) + { + b = ButtonJoystickHatDown + 1; + buttonGroup[ButtonJoystickHatDown].Update(&b, mode_mask); + } + if (i & Joystick::HatLeft) + { + b = ButtonJoystickHatLeft + 1; + buttonGroup[ButtonJoystickHatLeft].Update(&b, mode_mask); + } + if (i & Joystick::HatRight) + { + b = ButtonJoystickHatRight + 1; + buttonGroup[ButtonJoystickHatRight].Update(&b, mode_mask); + } + } + } + + // + //-------------------------- + // Mouse buttons + //-------------------------- + // + if (flags.mouseExists) + { + int i, j, k; + ControlsButton b; + + k = mousePointer->ButtonCount; + + for( + i=0,j=LBE4ControlsManager::ButtonMouseLeft; + iButtonPressed(i)) + { + b = (ControlsButton) (j+1); + buttonGroup[j].Update(&b, mode_mask); + } + + if (mousePointer->ButtonReleased(i)) + { + b = (ControlsButton) (-j-1); + buttonGroup[j].Update(&b, mode_mask); + } + } + // + //------------------------------------------------------------------------- + // Update the mouse mapping group + //------------------------------------------------------------------------- + // + mouseGroup[0].Update(&mouseValue, mode_mask); + } + + // Tell("LBE4ControlsManager::Execute ends\n" << flush); + Check_Fpu(); +} + +// +//############################################################################ +// BeginAlignJoystick +// +// Start alignment process for joystick and analog inputs +//############################################################################ +// +void + LBE4ControlsManager::BeginAlignJoystick() +{ + Check(this); + + if (flags.joystickExists) + { + Check(joystickPointer); + joystickPointer->BeginAlignment(); + } + Check_Fpu(); +} + +// +//############################################################################ +// EndAlignJoystick +// +// End alignment process for joystick and analog inputs +//############################################################################ +// +void + LBE4ControlsManager::EndAlignJoystick() +{ + Check(this); + + if (flags.RIOExists) + { + Check(rioPointer); + rioPointer->ForceCenterJoystick(); + } + + if (flags.joystickExists) + { + Check(joystickPointer); + joystickPointer->EndAlignment(); + } + Check_Fpu(); +} + +void + LBE4ControlsManager::CenterRIOJoystick() +{ + Check(this); + + if (flags.RIOExists) + { + Check(rioPointer); + rioPointer->ForceCenterJoystick(); + } + + Check_Fpu(); +} + +void + LBE4ControlsManager::SetJoystickDeadBand(Scalar dead_band) +{ + Check(this); + + if (flags.RIOExists) + { + Check(rioPointer); + rioPointer->SetJoystickDeadBand(dead_band); + } + + if (flags.joystickExists) + { + Check(joystickPointer); + joystickPointer->SetDeadBand(dead_band); + } + + Check_Fpu(); +} + +void + LBE4ControlsManager::SetThrottleDeadBand(Scalar dead_band) +{ + Check(this); + + if (flags.RIOExists) + { + Check(rioPointer); + rioPointer->SetThrottleDeadBand(dead_band); + } + Check_Fpu(); +} + +void + LBE4ControlsManager::SetPedalsDeadBand(Scalar dead_band) +{ + Check(this); + + if (flags.RIOExists) + { + Check(rioPointer); + rioPointer->SetPedalsDeadBand(dead_band); + } + Check_Fpu(); +} + +const char* + LBE4ControlsManager::GetLampName(int lamp_number) +{ + const char + *lamp_name[] = + { + "AuxLowerRight8", + "AuxLowerRight7", + "AuxLowerRight6", + "AuxLowerRight5", + "AuxLowerRight4", + "AuxLowerRight3", + "AuxLowerRight2", + "AuxLowerRight1", + "AuxLowerLeft8", + "AuxLowerLeft7", + "AuxLowerLeft6", + "AuxLowerLeft5", + "AuxLowerLeft4", + "AuxLowerLeft3", + "AuxLowerLeft2", + "AuxLowerLeft1", + "Secondary1", //=0x10 + "Secondary2", + "Secondary3", + "Secondary4", + "Secondary5", + "Secondary6", + "TeslaRelay3", + "undefined_0x17", + "Secondary7", //=0x18 + "Secondary8", + "Secondary9", + "Secondary10", + "Secondary11", + "Secondary12", + "TeslaRelay1", + "TeslaRelay2", + "AuxUpperCenter8", //=0x20 + "AuxUpperCenter7", + "AuxUpperCenter6", + "AuxUpperCenter5", + "AuxUpperCenter4", + "AuxUpperCenter3", + "AuxUpperCenter2", + "AuxUpperCenter1", + "AuxUpperLeft8", //=0x28 + "AuxUpperLeft7", + "AuxUpperLeft6", + "AuxUpperLeft5", + "AuxUpperLeft4", + "AuxUpperLeft3", + "AuxUpperLeft2", + "AuxUpperLeft1", + "AuxUpperRight8", //=0x30 + "AuxUpperRight7", + "AuxUpperRight6", + "AuxUpperRight5", + "AuxUpperRight4", + "AuxUpperRight3", + "AuxUpperRight2", + "AuxUpperRight1", + "PanicButton", //=0x38 + "IcomAmpEnableRelay",//=0x39 + "IcomIncRelay", //=0x3A + "IcomPTTRelay", //=0x03B + "IcomDecRelay", //=0x3C + "undefined_0x3D", //=0x3D unimplemented convenience lamp + "FloorEntry" //=0x3E + }; + + if (lamp_number >= LampCount) + { + return "overrange"; + } + else if (lamp_number < 0) + { + return "underrange"; + } + else + { + return lamp_name[lamp_number]; + } +} + + +#define ID_ENTRY(name,group)\ + { #name , LBE4ControlsManager::##group, LBE4ControlsManager::##name } + +struct { + const char* controlName; + Enumeration + controlsGroup, + controlsElement; +} + Control_IDs[]= +{ + //----------------------------------------------- + // Throttle + //----------------------------------------------- + ID_ENTRY(ScalarThrottle,ScalarGroup), + ID_ENTRY(ButtonThrottle1,ButtonGroup), + + //----------------------------------------------- + // Pedals + //----------------------------------------------- + ID_ENTRY(ScalarLeftPedal,ScalarGroup), + ID_ENTRY(ScalarRightPedal,ScalarGroup), + + //----------------------------------------------- + // Joystick + //----------------------------------------------- + ID_ENTRY(JoystickPhysical,JoystickGroup), + ID_ENTRY(ButtonJoystickHatUp,ButtonGroup), + ID_ENTRY(ButtonJoystickHatDown,ButtonGroup), + ID_ENTRY(ButtonJoystickHatLeft,ButtonGroup), + ID_ENTRY(ButtonJoystickHatRight,ButtonGroup), + ID_ENTRY(ButtonJoystickTrigger,ButtonGroup), + ID_ENTRY(ButtonJoystickThumbHigh,ButtonGroup), + ID_ENTRY(ButtonJoystickThumbLow,ButtonGroup), + ID_ENTRY(ButtonJoystickPinky,ButtonGroup), + + //----------------------------------------------- + // Secondary buttons + //----------------------------------------------- + ID_ENTRY(ButtonSecondary1,ButtonGroup), + ID_ENTRY(ButtonSecondary2,ButtonGroup), + ID_ENTRY(ButtonSecondary3,ButtonGroup), + ID_ENTRY(ButtonSecondary4,ButtonGroup), + ID_ENTRY(ButtonSecondary5,ButtonGroup), + ID_ENTRY(ButtonSecondary6,ButtonGroup), + ID_ENTRY(ButtonSecondary7,ButtonGroup), + ID_ENTRY(ButtonSecondary8,ButtonGroup), + ID_ENTRY(ButtonSecondary9,ButtonGroup), + ID_ENTRY(ButtonSecondary10,ButtonGroup), + ID_ENTRY(ButtonSecondary11,ButtonGroup), + ID_ENTRY(ButtonSecondary12,ButtonGroup), + + //----------------------------------------------- + // Upper left auxiliary + //----------------------------------------------- + ID_ENTRY(ButtonAuxUpperLeft8,ButtonGroup), + ID_ENTRY(ButtonAuxUpperLeft7,ButtonGroup), + ID_ENTRY(ButtonAuxUpperLeft6,ButtonGroup), + ID_ENTRY(ButtonAuxUpperLeft5,ButtonGroup), + ID_ENTRY(ButtonAuxUpperLeft4,ButtonGroup), + ID_ENTRY(ButtonAuxUpperLeft3,ButtonGroup), + ID_ENTRY(ButtonAuxUpperLeft2,ButtonGroup), + ID_ENTRY(ButtonAuxUpperLeft1,ButtonGroup), + + //----------------------------------------------- + // Center auxiliary + //----------------------------------------------- + ID_ENTRY(ButtonAuxUpperCenter8,ButtonGroup), + ID_ENTRY(ButtonAuxUpperCenter7,ButtonGroup), + ID_ENTRY(ButtonAuxUpperCenter6,ButtonGroup), + ID_ENTRY(ButtonAuxUpperCenter5,ButtonGroup), + ID_ENTRY(ButtonAuxUpperCenter4,ButtonGroup), + ID_ENTRY(ButtonAuxUpperCenter3,ButtonGroup), + ID_ENTRY(ButtonAuxUpperCenter2,ButtonGroup), + ID_ENTRY(ButtonAuxUpperCenter1,ButtonGroup), + + //----------------------------------------------- + // Upper right auxiliary + //----------------------------------------------- + ID_ENTRY(ButtonAuxUpperRight8,ButtonGroup), + ID_ENTRY(ButtonAuxUpperRight7,ButtonGroup), + ID_ENTRY(ButtonAuxUpperRight6,ButtonGroup), + ID_ENTRY(ButtonAuxUpperRight5,ButtonGroup), + ID_ENTRY(ButtonAuxUpperRight4,ButtonGroup), + ID_ENTRY(ButtonAuxUpperRight3,ButtonGroup), + ID_ENTRY(ButtonAuxUpperRight2,ButtonGroup), + ID_ENTRY(ButtonAuxUpperRight1,ButtonGroup), + + //----------------------------------------------- + // Lower left auxiliary + //----------------------------------------------- + ID_ENTRY(ButtonAuxLowerLeft8,ButtonGroup), + ID_ENTRY(ButtonAuxLowerLeft7,ButtonGroup), + ID_ENTRY(ButtonAuxLowerLeft6,ButtonGroup), + ID_ENTRY(ButtonAuxLowerLeft5,ButtonGroup), + ID_ENTRY(ButtonAuxLowerLeft4,ButtonGroup), + ID_ENTRY(ButtonAuxLowerLeft3,ButtonGroup), + ID_ENTRY(ButtonAuxLowerLeft2,ButtonGroup), + ID_ENTRY(ButtonAuxLowerLeft1,ButtonGroup), + + //----------------------------------------------- + // Lower right auxiliary + //----------------------------------------------- + ID_ENTRY(ButtonAuxLowerRight8,ButtonGroup), + ID_ENTRY(ButtonAuxLowerRight7,ButtonGroup), + ID_ENTRY(ButtonAuxLowerRight6,ButtonGroup), + ID_ENTRY(ButtonAuxLowerRight5,ButtonGroup), + ID_ENTRY(ButtonAuxLowerRight4,ButtonGroup), + ID_ENTRY(ButtonAuxLowerRight3,ButtonGroup), + ID_ENTRY(ButtonAuxLowerRight2,ButtonGroup), + ID_ENTRY(ButtonAuxLowerRight1,ButtonGroup), + + //----------------------------------------------- + // Miscellaneous buttons + //----------------------------------------------- + ID_ENTRY(ButtonPanic,ButtonGroup), + ID_ENTRY(ButtonDoor,ButtonGroup) +}; + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +int + LBE4ControlsManager::SetControlMappingID( + const char *control_name, + ControlsMapping *mapping + ) +{ + Check_Pointer(control_name); + Check_Pointer(mapping); + + int i; + for (i=0; icontrolsGroup = Control_IDs[i].controlsGroup; + mapping->controlsElement = Control_IDs[i].controlsElement; + break; + } + } + Check_Fpu(); + return i < ELEMENTS(Control_IDs); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Lamp * + LBE4ControlsManager::MakeLinkedLamp( + int element, + ModeMask mode_mask + ) +{ + Check(this); + Check(application); + + if (application->GetGaugeRenderer() == NULL) + { + return NULL; + } + else + { + Check(application->GetGaugeRenderer()); + + //------------------------------------------ + // Create the lamp + //------------------------------------------ + L4LampManager + *lamp_manager = (L4LampManager *) application-> + GetGaugeRenderer()->GetLampManager(); + Check(lamp_manager); + + Lamp + *lamp = new L4Lamp( + element, + mode_mask, + lamp_manager + ); + Register_Object(lamp); + //------------------------------------------ + // Add button mapping to lamp + //------------------------------------------ + buttonGroup[element].Add( + mode_mask, + &((L4Lamp *)lamp)->automaticValue, + lamp + ); + + Check_Fpu(); + return lamp; + } +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + LBE4ControlsManager::CreateStreamedMappings( + Entity *player, + const int *control_mappings + ) +{ + Check(this); + Check_Pointer(control_mappings); + + int + controls_count = *control_mappings; + ++control_mappings; + + ControlsMapping + *mapping = (ControlsMapping*)control_mappings; + Simulation + *subsystem; + void + *attribute; + + for (int i=0; iGetSimulation(mapping->subsystemID); + Verify(subsystem); + + // + //--------------------------- + // Handle the direct mappings + //--------------------------- + // + int + element = mapping->controlsElement; + ModeMask + mode_mask = mapping->modeMask; + + if (mapping->mappingType == ControlsMapping::DirectMapping) + { + attribute = subsystem->GetAttributePointer(mapping->attributeID); + switch (mapping->controlsGroup) + { + case ScalarGroup: + scalarGroup[element].Add( + mode_mask, + (ControlsScalar*)attribute, + subsystem + ); + break; + case JoystickGroup: + joystickGroup[element].Add( + mode_mask, + (ControlsJoystick*)attribute, + subsystem + ); + break; + case ButtonGroup: + //---------------------------------------------- + // Add button + //---------------------------------------------- + buttonGroup[element].Add( + mode_mask, + (ControlsButton*)attribute, + subsystem + ); + //---------------------------------------------- + // Create associated lamp + //---------------------------------------------- + if(buttonType[element] == AUTOBTN) + { +# if DEBUG_LEVEL > 0 + Lamp * + lamp = +# endif + MakeLinkedLamp(element, mode_mask); + +# if DEBUG_LEVEL > 0 + if (lamp != NULL) + { + Check(lamp); + } +# endif + } + break; + default: + Fail("Unknown mapping group!\n"); + break; + } + } + + // + //-------------------------------------------------- + // Otherwise, it is an event mapping, so set that up + //-------------------------------------------------- + // + else if (mapping->mappingType == ControlsMapping::EventMapping) + { + Receiver::MessageID + msg_id = mapping->messageID; + + switch (mapping->controlsGroup) + { + case ScalarGroup: + scalarGroup[element].Add(mode_mask,subsystem,msg_id,subsystem); + break; + case JoystickGroup: + joystickGroup[element].Add(mode_mask,subsystem,msg_id,subsystem); + break; + case ButtonGroup: + //---------------------------------------------- + // Add button + //---------------------------------------------- + buttonGroup[element].Add( + mode_mask, + subsystem, + msg_id, + subsystem + ); + //---------------------------------------------- + // Create associated lamp + //---------------------------------------------- + if(buttonType[element] == AUTOBTN) + { +# if DEBUG_LEVEL > 0 + Lamp * + lamp = +# endif + MakeLinkedLamp(element, mode_mask); + +# if DEBUG_LEVEL > 0 + if (lamp != NULL) + { + Check(lamp); + } +# endif + } + break; + default: + Fail("Unknown mapping group!\n"); + break; + } + } + else + { + Fail("Unknown mapping type!\n"); + } + mapping = (ControlsMapping*)((char*)mapping + sizeof(ControlsMapping)); + } + Check_Fpu(); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + LBE4ControlsManager::EnterControlsMode( + L4ControlsMode new_mode, + Scalar time_until_exit, + Receiver::MessageID message_on_exit + ) +{ + Check(this); + l4ControlsMode = new_mode; + + exitModeTime = ((Scalar) Now()) + time_until_exit; + exitMessageID = message_on_exit; + + SetLamp(LampPanic, RIO::flashFast+RIO::state1Off+RIO::state2Bright); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + LBE4ControlsManager::ExitControlsMode() +{ + Check(this); + + l4ControlsMode = normalMode; + + int + i; + + for(i=0; i= exitModeTime) + { + Receiver::Message + message(exitMessageID, sizeof(Receiver__Message)); + + Dispatch(&message); + } + } +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + LBE4ControlsManager::TestInstance() const +{ + Verify(IsDerivedFrom(ClassDerivations)); + return ControlsManager::TestInstance(); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + LBE4ControlsManager::AnalogHasChanged() +{ + Check(this); + + Logical + result = False; + + if (rioPointer != NULL) + { + Check(rioPointer); + + result = (rioPointer->Throttle != previousThrottle); + result |= (rioPointer->LeftPedal != previousPedalLeft); + result |= (rioPointer->RightPedal != previousPedalRight); + result |= (rioPointer->JoystickX != previousJoystickX); + result |= (rioPointer->JoystickY != previousJoystickY); + + if (result) + { + previousThrottle = rioPointer->Throttle; + previousPedalLeft = rioPointer->LeftPedal; + previousPedalRight = rioPointer->RightPedal; + previousJoystickX = rioPointer->JoystickX; + previousJoystickY = rioPointer->JoystickY; + } + } + + Check_Fpu(); + return result; +} + +Logical + LBE4ControlsManager::GetNextRIOEvent(RIO::RIOEvent *rio_event) +{ + // + //------------------------------------------------- + // If we aren't in playback mode, read the real RIO + //------------------------------------------------- + // + if (!playbackMode) + { + Logical + result = rioPointer->GetNextEvent(rio_event); + //---------------------------------------------------------------------- + // If the RIO stream exists, and a rio event was added, + // store this event in the rioStream + //---------------------------------------------------------------------- + if (result && streamEnabled) + { + Check(rioStream); + if (rioStream->GetBytesRemaining() >= sizeof(RIOStreamEvent)) + { + Check(rioStream); + RIOStreamEvent + *event = (RIOStreamEvent*)rioStream->GetPointer(); + Check_Pointer(event); + + event->timeStamp.ticks = Now().ticks - streamStart.ticks; + + if (rio_event->Type == RIO::AnalogEvent) + { + if (AnalogHasChanged()) + { +DEBUG_STREAM << "AnalogEvent at" << event->timeStamp.ticks << "\n"; +DEBUG_STREAM << "Pointer=" << hex << event << dec << "\n"; + //---------------------------- + // Set the event type + //---------------------------- + event->eventType = analog; + //---------------------------- + // Get the analog state + //---------------------------- + event->data.analog.throttle = rioPointer->Throttle; + event->data.analog.pedalLeft = rioPointer->LeftPedal; + event->data.analog.pedalRight = rioPointer->RightPedal; + event->data.analog.joystickX = rioPointer->JoystickX; + event->data.analog.joystickY = rioPointer->JoystickY; + //---------------------------- + // Save the event + //---------------------------- + rioStream->AdvancePointer(sizeof(RIOStreamEvent)); + } + } + else + { +DEBUG_STREAM << "DigitalEvent at" << event->timeStamp.ticks << "\n"; +DEBUG_STREAM << "Pointer=" << hex << event << dec << "\n"; + //---------------------------- + // Set the event type + //---------------------------- + event->eventType = digital; + //---------------------------- + // Save the event + //---------------------------- + event->data.rioEvent = *rio_event; + rioStream->AdvancePointer(sizeof(RIOStreamEvent)); + } + } + } + return result; + } + + // + //---------------------------------------------------------------------- + // Otherwise, we are in playback mode, so get the next record out of the + // memory block + //---------------------------------------------------------------------- + // + else if (streamEnabled) + { + Check(rioStream); + if (rioStream->GetBytesRemaining() >= sizeof(RIOStreamEvent)) + { + RIOStreamEvent + *event = (RIOStreamEvent*)rioStream->GetPointer(); + + Check_Pointer(event); + Time + now; + + now.ticks = Now().ticks - streamStart.ticks; + + if (event->timeStamp.ticks <= now.ticks) + { +DEBUG_STREAM << "Event timestamp=" << event->timeStamp.ticks << "\n"; + switch(event->eventType) + { + case analog: +DEBUG_STREAM << "AnalogEvent\n"; + //---------------------------- + // Send event type ONLY + //---------------------------- + rio_event->Type = RIO::AnalogEvent; + //---------------------------- + // Restore the analog state + //---------------------------- + rioPointer->Throttle = event->data.analog.throttle; + rioPointer->LeftPedal = event->data.analog.pedalLeft; + rioPointer->RightPedal = event->data.analog.pedalRight; + rioPointer->JoystickX = event->data.analog.joystickX; + rioPointer->JoystickY = event->data.analog.joystickY; + break; + + case digital: +DEBUG_STREAM << "DigitalEvent\n"; + //---------------------------- + // Send the entire event + //---------------------------- + *rio_event = event->data.rioEvent; + break; + } + rioStream->AdvancePointer(sizeof(RIOStreamEvent)); + return True; + } + } + } + return False; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + LBE4ControlsManager::ProcessRIOEvent( + RIO::RIOEvent &rio_event, + Logical *new_RIO_values + ) +{ + //-------------------------------------------------- + // Get mode mask for updating + //-------------------------------------------------- + Check(application); + Check(application->GetModeManager()); + ModeMask + mode_mask = application->GetModeManager()->GetModeMask(); + ControlsButton temp; + + switch(rio_event.Type) + { + case RIO::ButtonPressedEvent: + Verify(rio_event.Data.Unit >= 0); + Verify(rio_event.Data.Unit < ButtonCount); + temp = rio_event.Data.Unit + 1; + + Check(&buttonGroup[rio_event.Data.Unit]); + buttonGroup[rio_event.Data.Unit].Update(&temp, mode_mask); + //---------------------------------------- + // Save 'pressed' mode mask for 'release' + //---------------------------------------- + buttonActivateModeMask[rio_event.Data.Unit] = mode_mask; + break; + + case RIO::ButtonReleasedEvent: + Verify(rio_event.Data.Unit >= 0); + Verify(rio_event.Data.Unit < ButtonCount); + temp = -rio_event.Data.Unit - 1; + + Check(&buttonGroup[rio_event.Data.Unit]); + //---------------------------------------- + // Use 'pressed' mode mask for 'release' + //---------------------------------------- + buttonGroup[rio_event.Data.Unit].Update( + &temp, + buttonActivateModeMask[rio_event.Data.Unit] + ); + break; + + case RIO::KeyEvent: + { + Verify(rio_event.Data.Keyboard.Unit >= 0); + Verify(rio_event.Data.Keyboard.Unit < KeyboardCount); + //-------------------------------------- + // Convert key to ASCII + //-------------------------------------- + ControlsKey + new_key = rio_event.Data.Keyboard.Key; + if (new_key <= 9) + { + new_key += '0'; + } + else + { + new_key += 'A'-10; + } + Test_Tell( + "LBE4ControlsManager::Execute, new_key=" << (int) new_key << + "\n" + ); + + Check(&keyboardGroup[rio_event.Data.Keyboard.Unit]); + keyboardGroup[rio_event.Data.Keyboard.Unit]. + ForceUpdate(&new_key, mode_mask); + + Check(&stringManager); + stringManager.Update( + rio_event.Data.Keyboard.Unit, + new_key + ); + } + break; + + case RIO::AnalogEvent: + lastRioRequest = 0L; // force another RIO update request + *new_RIO_values = True; + break; + } +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + LBE4ControlsManager::SaveRecording(const char* file_name) +{ + Check(this); + Check_Pointer(file_name); + Check(rioStream); + + FileStream + output(file_name, True); + size_t + length = rioStream->GetBytesUsed(); + if (length) + { + rioStream->Rewind(); + + output << length; + output << *rioStream; + } +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + LBE4ControlsManager::LoadPlayback(const char* file_name) +{ + Check(this); + Check_Pointer(file_name); + + FileStream + input(file_name); + Verify(input.IsFileOpened()); + + // + //------------------------------- + // Figure out how big the file is + //------------------------------- + // + size_t + spool_size = 0; + input >> spool_size; + Verify(spool_size); + Verify(spool_size <= RIO_SPOOL_SIZE * sizeof(RIOStreamEvent)); + + RIOStreamEvent + *events = new RIOStreamEvent[RIO_SPOOL_SIZE]; + Register_Pointer(events); + + Verify(rioStream == NULL); + rioStream = new MemoryStream(events, spool_size); + Register_Object(rioStream); + + input.ReadBytes(events, spool_size); +} + +#if defined(TEST_CLASS) +# include "l4ctrl.tcp" +#endif + diff --git a/CODE/RP/MUNGA_L4/L4CTRL.HPP b/CODE/RP/MUNGA_L4/L4CTRL.HPP new file mode 100644 index 0000000..a00d761 --- /dev/null +++ b/CODE/RP/MUNGA_L4/L4CTRL.HPP @@ -0,0 +1,692 @@ +//===========================================================================// +// File: L4ctrl.hpp // +// Project: MUNGA Brick: Applications-specific controls module // +// Contents: Interface specification for LBE4 Controls module // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- -----------------------------------------------------------// +// 12/21/94 CPB Initial coding. // +// 6/ 7/95 CPB Adjusted switch/lamp enumerations to match reality // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. All rights reserved // +// PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(L4CTRL_HPP) +# define L4CTRL_HPP + + class LBE4ControlsManager; + enum LBE4ControlsManager::LampCount; + +# if !defined(CONTROLS_HPP) +# include +# endif + +# if !defined(L4RIO_HPP) +# include +# endif + +# if !defined(L4KEYBD_HPP) +# include +# endif + +# if !defined(L4MOUSE_HPP) +# include +# endif + +# if !defined(L4JOYSTK_HPP) +# include +# endif + +# if !defined(L4LAMP_HPP) +# include +# endif + +# if !defined(TIME_HPP) +# include +# endif + +# if !defined(ENTITY_HPP) +# include +# endif + + class LBE4ControlsManager; + class L4MappableButtonManager; + + //######################################################################## + //############################ Joystick classes ########################## + //######################################################################## + class Joystick; + class OrdinaryJoystick; + class FlightStickPro; + class ThrustMaster; + + class Joystick SIGNATURED + { + friend class LBE4ControlsManager; + friend class OrdinaryJoystick; + friend class FlightStickPro; + friend class ThrustMaster; + + protected: + Joystick(); + + public: + virtual ~Joystick(); + virtual void + BeginAlignment(); + virtual void + EndAlignment(); + virtual void + Update(); + void + SetDeadBand(Scalar amount_of_deadband); + Logical + TestInstance() const; + + protected: + virtual void + EndAndSaveAlignment(NotationFile *init_file); + public: + enum ButtonState { + NoButton = 0, + Trigger = 0x01, + Thumb1 = 0x02, + Thumb2 = 0x04, + Thumb3 = 0x08, + HatUp = 0x10, + HatDown = 0x20, + HatLeft = 0x40, + HatRight = 0x80 + }; + Vector2DOf Value; + Vector2DOf ExtendedValue; + int ButtonReleased; + int ButtonPressed; + + protected: + FilterChannel *channel[2]; + int oldButtons; + }; + + class OrdinaryJoystick: + public Joystick + { + public: + OrdinaryJoystick(); + ~OrdinaryJoystick(); + void Update(); + }; + + class FlightStickPro: + public Joystick + { + public: + FlightStickPro(); + ~FlightStickPro(); + void Update(); + void + BeginAlignment(); + void + EndAlignment(); + protected: + FilterChannel + *throttle; + }; + + class ThrustMaster: + public Joystick + { + public: + ThrustMaster(); + ~ThrustMaster(); + void Update(); + + int hatMax, prevHatState; + }; + + + + enum RioStreamEventType + { + analog, + digital + }; + + struct RIOStreamEvent + { + Time timeStamp; + + RioStreamEventType eventType; + + union + { + struct + { + Scalar + joystickX, + joystickY, + throttle, + pedalLeft, + pedalRight; + } + analog; + + RIO::RIOEvent rioEvent; + } + data; + }; + + //######################################################################### + //########################## LBE4ControlsManager ########################## + //######################################################################### + + class LBE4ControlsManager: + public ControlsManager + { + friend class L4MappableButtonManager; // allows access to 'groupEnable' + + //------------------------------------------------------------------- + // Shared data support + //------------------------------------------------------------------- + public: + static Derivation ClassDerivations; + static SharedData DefaultData; + //------------------------------------------------------------------- + // Message support + //------------------------------------------------------------------- +// public: +// enum { +// BeginCalibrationMessageID=ControlsManager::NextMessageID, +// EndCalibrationMessageID, +// NextMessageID +// }; +// private: +// static const HandlerEntry MessageHandlerEntries[]; +// protected: +// static MessageHandlerSet MessageHandlers; + + //------------------------------------------------------------------- + // Construction/destruction/verification + //------------------------------------------------------------------- + public: + LBE4ControlsManager(); + ~LBE4ControlsManager(); + + static Logical + TestClass(); + Logical + TestInstance() const; + + void + LocalShutdown(); + + void + Execute(); + + //------------------------------------------------------------------- + // Message handlers + //------------------------------------------------------------------- +// void +// BeginCalibrationMessageHandler(Receiver::Message *message); +// void +// EndCalibrationMessageHandler(Receiver::Message *message); +// + //------------------------------------------------------------------- + // Control mapping methods + //------------------------------------------------------------------- + + void + Remove(ModeMask mode_mask); + + static int + SetControlMappingID( + const char *control_name, + ControlsMapping *mapping + ); + void + CreateStreamedMappings( + Entity *player, + const int *control_mappings + ); + + //------------------------------------------------------------------- + // Lamps + //------------------------------------------------------------------- + + // Commonly used combinations + enum + { + LampSolidOff = RIO::solid + RIO::state1Off + RIO::state2Off, + LampSolidDim = RIO::solid + RIO::state1Dim + RIO::state2Dim, + LampSolidBright = RIO::solid + RIO::state1Bright + RIO::state2Bright + }; + + // This is the order of the mapped lamps + // See also "GetLampName" + enum { + LampAuxLowerRight8=0x00, // Lower left auxiliary panel buttons + LampAuxLowerRight7, + LampAuxLowerRight6, + LampAuxLowerRight5, + LampAuxLowerRight4, + LampAuxLowerRight3, + LampAuxLowerRight2, + LampAuxLowerRight1, + + LampAuxLowerLeft8=0x08, // Lower right auxiliary panel buttons + LampAuxLowerLeft7, + LampAuxLowerLeft6, + LampAuxLowerLeft5, + LampAuxLowerLeft4, + LampAuxLowerLeft3, + LampAuxLowerLeft2, + LampAuxLowerLeft1, + + LampSecondary1=0x10, // Secondary panel buttons + LampSecondary2, + LampSecondary3, + LampSecondary4, + LampSecondary5, + LampSecondary6, + LampTesla1, // top? of three solid-state relays + LampTesla2, // middle? of three solid-state relays + + LampSecondary7=0x18, + LampSecondary8, + LampSecondary9, + LampSecondary10, + LampSecondary11, + LampSecondary12, + LampTesla3, // bottom of three solid-state relays + + LampAuxUpperCenter8=0x20, // Upper center auxiliary panel buttons + LampAuxUpperCenter7, + LampAuxUpperCenter6, + LampAuxUpperCenter5, + LampAuxUpperCenter4, + LampAuxUpperCenter3, + LampAuxUpperCenter2, + LampAuxUpperCenter1, + + LampAuxUpperLeft8=0x28, // Upper left auxiliary panel buttons + LampAuxUpperLeft7, + LampAuxUpperLeft6, + LampAuxUpperLeft5, + LampAuxUpperLeft4, + LampAuxUpperLeft3, + LampAuxUpperLeft2, + LampAuxUpperLeft1, + + LampAuxUpperRight8=0x30, // Upper right auxiliary panel buttons + LampAuxUpperRight7, + LampAuxUpperRight6, + LampAuxUpperRight5, + LampAuxUpperRight4, + LampAuxUpperRight3, + LampAuxUpperRight2, + LampAuxUpperRight1, + + LampIcomDecRelay = 0x38, + LampIcomAmpEnable = 0x39, + LampIcomIncRelay = 0x3A, + LampIcomPTTRelay = 0x03B, + + LampPanic=0x3D, + LampFloor=0x3E, // floor lamp (entry/exit) + LampUnused=0x3F, // unimplemented convenience lamp + + LampCount // the total number of defined lamps + }; + + Lamp * + MakeLinkedLamp( + int element, + ModeMask mode_mask = ModeManager::ModeAlwaysActive + ); + + void + SetLamp( + int lamp_number, + int state + ); + + static const char* + GetLampName(int lamp_number); + //------------------------------------------------------------------- + // Control groups + // Each control belongs to one of several groups (as in the + // enum below). + //------------------------------------------------------------------- + + enum { + ScalarGroup, + JoystickGroup, + KeyboardGroup, + ButtonGroup, + MouseGroup + }; + + //------------------------------------------------------------- + // Scalars + //------------------------------------------------------------- + + // This is the order of the mapped scalars + enum { + ScalarThrottle, + ScalarLeftPedal, ScalarRightPedal, + ScalarJoystickX, ScalarJoystickY, // 'real' joystick values + ScalarMouseX, ScalarMouseY, // 'virtual' joystick values + ScalarCount + }; + + ControlsUpdateManager + scalarGroup[ScalarCount]; + +public: + void + SetThrottleDeadBand(Scalar dead_band); + void + SetPedalsDeadBand(Scalar dead_band); + //------------------------------------------------------------- + // Joysticks + //------------------------------------------------------------- + void + BeginAlignJoystick(); + void + EndAlignJoystick(); + void + CenterRIOJoystick(); + void + SetJoystickDeadBand(Scalar dead_band); + + + // This is the order of the mapped joysticks + enum { + JoystickPhysical, // the 'real' joystick + JoystickVirtual, // a 'virtual' joystick driven by the PC mouse + JoystickCount + }; + + ControlsUpdateManager + joystickGroup[JoystickCount]; + + enum JoystickType + { + none, ordinary, flightstickPro, thrustMaster + }; + + JoystickType + joystickType; + + protected: + Joystick + *joystickPointer; + int + virtualJoystickX, virtualJoystickY; + long + lastJoystickUpdate; + + public: + //------------------------------------------------------------- + // Keyboards + //------------------------------------------------------------- + + // This is the order of the mapped keyboards + enum { + KeyboardPilot, // internal keypad used by the pilot + KeyboardExternal, // external keypad used by an operator + KeyboardPC, // PC keyboard + KeyboardCount + }; + + ControlsUpdateManager + keyboardGroup[KeyboardCount]; + + //------------------------------------------------------------- + // Buttons + //------------------------------------------------------------- + + // This is the order of the buttons + enum { + ButtonAuxLowerRight8=0x00, // Lower left auxiliary panel buttons + ButtonAuxLowerRight7, + ButtonAuxLowerRight6, + ButtonAuxLowerRight5, + ButtonAuxLowerRight4, + ButtonAuxLowerRight3, + ButtonAuxLowerRight2, + ButtonAuxLowerRight1, + + ButtonAuxLowerLeft8=0x08, // Lower right auxiliary panel buttons + ButtonAuxLowerLeft7, + ButtonAuxLowerLeft6, + ButtonAuxLowerLeft5, + ButtonAuxLowerLeft4, + ButtonAuxLowerLeft3, + ButtonAuxLowerLeft2, + ButtonAuxLowerLeft1, + + ButtonSecondary1=0x10, // Secondary panel buttons + ButtonSecondary2, + ButtonSecondary3, + ButtonSecondary4, + ButtonSecondary5, + ButtonSecondary6, + + ButtonSecondary7=0x18, + ButtonSecondary8, + ButtonSecondary9, + ButtonSecondary10, + ButtonSecondary11, + ButtonSecondary12, + + ButtonAuxUpperCenter8=0x20,// Upper center auxiliary panel buttons + ButtonAuxUpperCenter7, + ButtonAuxUpperCenter6, + ButtonAuxUpperCenter5, + ButtonAuxUpperCenter4, + ButtonAuxUpperCenter3, + ButtonAuxUpperCenter2, + ButtonAuxUpperCenter1, + + ButtonAuxUpperLeft8=0x28, // Upper left auxiliary panel buttons + ButtonAuxUpperLeft7, + ButtonAuxUpperLeft6, + ButtonAuxUpperLeft5, + ButtonAuxUpperLeft4, + ButtonAuxUpperLeft3, + ButtonAuxUpperLeft2, + ButtonAuxUpperLeft1, + + ButtonAuxUpperRight8=0x30, // Upper right auxiliary panel buttons + ButtonAuxUpperRight7, + ButtonAuxUpperRight6, + ButtonAuxUpperRight5, + ButtonAuxUpperRight4, + ButtonAuxUpperRight3, + ButtonAuxUpperRight2, + ButtonAuxUpperRight1, + + ButtonIcomHeadPluggedIn = 0x39, + ButtonIcomSensor = 0x3A, + ButtonIcomMikePluggedIn = 0x3B, + ButtonDoor=0x3C, + ButtonPanic=0x3D, + + ButtonThrottle1=0x3F, + + ButtonJoystickTrigger=0x40, // Joystick trigger button + FirstMappableButton=ButtonJoystickTrigger, + ButtonJoystickHatDown=0x41, // Joystick trigger hat down + ButtonJoystickHatUp=0x42, // Joystick trigger hat up + ButtonJoystickHatRight=0x43, // Joystick trigger hat left + ButtonJoystickHatLeft=0x44, // Joystick trigger hat left + + ButtonJoystickPinky=0x45, // Joystick lowest button + ButtonJoystickThumbLow=0x46, // Joystick middle thumb button + ButtonJoystickThumbHigh=0x47, // Joystick upper thumb button (by hat) + LastMappableButton=ButtonJoystickThumbHigh, + + // The PC keyboard buttons will eventually + // be added here. + + ButtonMouseLeft, // left mouse button + ButtonMouseRight, // right mouse button + ButtonMouseCenter, // center mouse button (if available) + + + ButtonCount // defines number of buttons + }; + ControlsUpdateManager + buttonGroup[ButtonCount]; + protected: + ModeMask + buttonActivateModeMask[ButtonCount]; + + //------------------------------------------------------------- + // Mouse + //------------------------------------------------------------- + public: + ControlsUpdateManager + mouseGroup[1]; // Yes, only one mouse. Get real. + + protected: + Mouse + *mousePointer; + + public: + //------------------------------------------------------------- + // Strings (matched keyboard input) + //------------------------------------------------------------- + ControlsStringManager + stringManager; + + public: + //------------------------------------------------------------------- + // RIO data + //------------------------------------------------------------------- + RIO + *rioPointer; + + protected: + Time + lastRioRequest; + + public: + //------------------------------------------------------------------- + // Current IO type + //------------------------------------------------------------------- + enum IOType + { + None = 0, + PrimaryGenericJoystick, + PrimaryThrustMaster, + PrimaryFlightStickPro, + PrimaryRIO + }; + + IOType + primaryControlType; + + //------------------------------------------------------------------- + // Existence flags + //------------------------------------------------------------------- + struct { + unsigned int mouseExists:1; + unsigned int keyboardExists:1; + unsigned int joystickExists:1; + unsigned int RIOExists:1; + }flags; + + //------------------------------------------------------------------- + // Operator controls + //------------------------------------------------------------------- + protected: + enum L4ControlsMode + { + normalMode = 0, + calibrationMode + }; + + void + EnterControlsMode( + L4ControlsMode new_mode, + Scalar time_until_exit, + Receiver::MessageID message_on_exit + ); + + void + ExitControlsMode(); + + void + ManageControlsMode(); + + L4ControlsMode + l4ControlsMode; + Time + exitModeTime; + Receiver::MessageID + exitMessageID; + + enum + { + maxStringIDs = 16 + }; + + ControlsStringID + temporaryStringID[maxStringIDs]; + + // + //-------------------- + // RIO Stream Spoofing + //-------------------- + // + public: + Logical + GetNextRIOEvent(RIO::RIOEvent *rio_event); + void + ProcessRIOEvent( + RIO::RIOEvent &rio_event, + Logical *new_RIO_values + ); + + void + StartRecording() + {Check(this); streamStart = Now(); streamEnabled=True;} + void + SaveRecording(const char* file_name); + void + LoadPlayback(const char* file_name); + void + StartPlayback() + {Check(this); streamStart = Now(); streamEnabled=True;} + + Logical + IsRecording() + {return rioStream && !playbackMode;} + Logical + IsPlayingBack() + {return rioStream && playbackMode;} + Logical + AnalogHasChanged(); + + protected: + MemoryStream + *rioStream; + Time + streamStart; + Logical + playbackMode; + Logical + streamEnabled; + Scalar + previousJoystickX, + previousJoystickY, + previousThrottle, + previousPedalLeft, + previousPedalRight; + }; + +#endif + diff --git a/CODE/RP/MUNGA_L4/L4CTRL.TCP b/CODE/RP/MUNGA_L4/L4CTRL.TCP new file mode 100644 index 0000000..404dfbf --- /dev/null +++ b/CODE/RP/MUNGA_L4/L4CTRL.TCP @@ -0,0 +1,448 @@ +//==========================================================================// +// File: lbe4ctrl.tst // +// Project: MUNGA Brick: LBE4 controls module // +// Contents: Test code for vector classes // +//--------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ----------------------------------------------------------// +// 12/26/94 CPB Initial coding. // +//--------------------------------------------------------------------------// +// Copyright (C) 1994, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//==========================================================================// + +#include +#include + +//########################################################################### +//############################# TestReceiver ################################ +//########################################################################### + +#if 0 +Derivation + TestControlsReceiver::ClassDerivations( + Receiver::ClassDerivations,"TestControlsReceiver" + ); + +TestControlsReceiver::SharedData + TestControlsReceiver::DefaultData( + TestControlsReceiver::ClassDerivations, + TestControlsReceiver::MessageHandlers + ); + +TestControlsReceiver::TestControlsReceiver( + TestControlsReceiver::ClassID class_ID, + TestControlsReceiver::SharedData &shared_data +): + Receiver(class_ID, shared_data) +{ + Check_Pointer(this); + keyValue = 0; + buttonValue = 0; + scalarValue = 0.0f; + joystickValue.x = 0.0f; + joystickValue.y = 0.0f; + mouseValue.x = 0; + mouseValue.y = 0; +} + +TestControlsReceiver::~TestControlsReceiver() +{ + Check(this); +} + +void +TestControlsReceiver::KeyboardMessageHandler( + ReceiverDataMessageOf *message +) +{ + Check(this); + Check_Pointer(message); + keyValue = message->dataContents; +} + +void +TestControlsReceiver::ScalarMessageHandler( + ReceiverDataMessageOf *message +) +{ + Check(this); + Check_Pointer(message); + scalarValue = message->dataContents; +} + +void +TestControlsReceiver::JoystickMessageHandler( + ReceiverDataMessageOf *message +) +{ + Check(this); + Check_Pointer(message); + joystickValue = message->dataContents; +} + +void +TestControlsReceiver::ButtonMessageHandler( + ReceiverDataMessageOf *message +) +{ + Check(this); + Check_Pointer(message); + buttonValue = message->dataContents; +} + +void +TestControlsReceiver::MouseMessageHandler( + ReceiverDataMessageOf *message +) +{ + Check(this); + Check_Pointer(message); + mouseValue += message->dataContents; +} + +const Receiver::HandlerEntry + TestControlsReceiver::MessageHandlerEntries[]= +{ + {TestControlsReceiver::KeyboardMessageID, + (Receiver::Handler)&TestControlsReceiver::KeyboardMessageHandler}, + {TestControlsReceiver::ScalarMessageID, + (Receiver::Handler)&TestControlsReceiver::ScalarMessageHandler}, + {TestControlsReceiver::JoystickMessageID, + (Receiver::Handler)&TestControlsReceiver::JoystickMessageHandler}, + {TestControlsReceiver::ButtonMessageID, + (Receiver::Handler)&TestControlsReceiver::ButtonMessageHandler}, + {TestControlsReceiver::MouseMessageID, + (Receiver::Handler)&TestControlsReceiver::MouseMessageHandler} +}; + +Receiver::MessageHandlerSet + TestControlsReceiver::MessageHandlers( + ELEMENTS(TestControlsReceiver::MessageHandlerEntries), + TestControlsReceiver::MessageHandlerEntries, + Receiver::MessageHandlers + ); +#endif + +// +//########################################################################### +//########################################################################### +// +Logical + LBE4ControlsManager::TestClass() +{ + Tell("Starting LBE4ControlsManager test...\n"); + +#if 0 + unsigned int fakeOwnerID(1); + + Check(application); + LBE4ControlsManager *controlsManager( + (LBE4ControlsManager *) application->GetControlsManager() + ); + Check(controlsManager); + + ControlsJoystick vector1; + Check(&vector1); + + TestControlsReceiver *my_receiver; + + my_receiver = new TestControlsReceiver(); + Check(my_receiver); + Register_Object(my_receiver); + + ControlsKey directKey = 0; + + // + //------------------------------------------------------------------- + // Keyboard test + //------------------------------------------------------------------- + // + controlsManager-> + keyboardGroup[LBE4ControlsManager::KeyboardPC]. + Add( + fakeOwnerID, + &directKey + ); + + controlsManager-> + keyboardGroup[LBE4ControlsManager::KeyboardPC]. + Add( + fakeOwnerID, + my_receiver, + TestControlsReceiver::KeyboardMessageID + ); + cout << "Key test: Press any PC keyboard key" << + " or ENTER to move to next test.\n"; + while (my_receiver->keyValue != 0x0D) + { + controlsManager->Execute(); // 'manually' call update + application->ProcessAllEvents(); // 'manually' process events + + if (my_receiver->keyValue != 0) + { + cout << my_receiver->keyValue << "\n"; + Test(directKey == my_receiver->keyValue); + + if (my_receiver->keyValue != 0x0D) + { + my_receiver->keyValue = 0; + } + } + } + // + //------------------------------------------------------------------- + // Joystick test + //------------------------------------------------------------------- + // + controlsManager-> + joystickGroup[LBE4ControlsManager::JoystickPhysical]. + Add( + fakeOwnerID, + my_receiver, + TestControlsReceiver::JoystickMessageID + ); + + cout << "Joystick test: Press ENTER to end.\n"; + cout << "Verify left is positive, backward is positive.\n"; + my_receiver->keyValue = 0; + while (my_receiver->keyValue != 0x0D) + { + char buffer[40]; + + controlsManager->Execute(); // 'manually' call update + application->ProcessAllEvents(); // 'manually' process events + + sprintf(buffer, "(%-6.5f, %-6.5f)\r", + my_receiver->joystickValue.x, + my_receiver->joystickValue.y + ); + cout << buffer; + } + cout << "\n"; + cout << "Joystick centering test: 'swizzle' the stick to its limits,\n"; + cout << "then center the joystick and press ENTER.\n"; + + controlsManager->BeginAlignJoystick(); + + my_receiver->keyValue = 0; + while (my_receiver->keyValue != 0x0D) + { + controlsManager->Execute(); // 'manually' call update + application->ProcessAllEvents(); // 'manually' process events + } + + controlsManager->EndAlignJoystick(); + + cout << "\n"; + cout << "Joystick centering test: verify centered, then press ENTER.\n"; + + my_receiver->keyValue = 0; + while (my_receiver->keyValue != 0x0D) + { + char buffer[40]; + + controlsManager->Execute(); // 'manually' call update + application->ProcessAllEvents(); // 'manually' process events + + sprintf(buffer, "(%-6.5f, %-6.5f)\r", + my_receiver->joystickValue.x, + my_receiver->joystickValue.y + ); + cout << buffer; + } + cout << "\n"; + + // + //------------------------------------------------------------------- + // Scalar test + //------------------------------------------------------------------- + // + controlsManager-> + scalarGroup[LBE4ControlsManager::ScalarJoystickX]. + Add( + fakeOwnerID, + my_receiver, + TestControlsReceiver::ScalarMessageID + ); + + cout << "Scalar test: Press ENTER to end.\n"; + cout << "Value displayed is joystick X axis.\n"; + my_receiver->keyValue = 0; + while (my_receiver->keyValue != 0x0D) + { + char buffer[40]; + + controlsManager->Execute(); // 'manually' call update + application->ProcessAllEvents(); // 'manually' process events + + sprintf(buffer, "(%-6.5f)\r", my_receiver->scalarValue); + cout << buffer; + } + cout << "\n"; + // + //------------------------------------------------------------------- + // Mouse test + //------------------------------------------------------------------- + // + controlsManager-> + mouseGroup[0]. + Add( + fakeOwnerID, + my_receiver, + TestControlsReceiver::MouseMessageID + ); + + cout << "Mouse test: Press ENTER to end.\n"; + my_receiver->keyValue = 0; + while (my_receiver->keyValue != 0x0D) + { + char buffer[40]; + + controlsManager->Execute(); // 'manually' call update + application->ProcessAllEvents(); // 'manually' process events + + sprintf(buffer, "(%-06d, %-06d)\r", + my_receiver->mouseValue.x, + my_receiver->mouseValue.y + ); + cout << buffer; + } + cout << "\n"; + // + //------------------------------------------------------------------- + // "Virtual" (mouse-driven) joystick test + //------------------------------------------------------------------- + // + ControlsJoystick fakeJoystick; + + controlsManager-> + joystickGroup[LBE4ControlsManager::JoystickVirtual]. + Add( + fakeOwnerID, + &fakeJoystick + ); + + cout << "Virtual (mouse) joystick test: Press ENTER to end.\n"; + cout << "Verify left is positive, backward is positive.\n"; + my_receiver->keyValue = 0; + while (my_receiver->keyValue != 0x0D) + { + char buffer[40]; + + controlsManager->Execute(); // 'manually' call update + application->ProcessAllEvents(); // 'manually' process events + + sprintf(buffer, "(%-6.5f, %-6.5f)\r", + fakeJoystick.x, + fakeJoystick.y + ); + cout << buffer; + } + cout << "\n"; + // + //------------------------------------------------------------------- + // Button test + //------------------------------------------------------------------- + // + controlsManager-> + buttonGroup[LBE4ControlsManager::ButtonJoystickHatUp]. + Add( + fakeOwnerID, + my_receiver, + TestControlsReceiver::ButtonMessageID + ); + controlsManager-> + buttonGroup[LBE4ControlsManager::ButtonJoystickHatDown]. + Add( + fakeOwnerID, + my_receiver, + TestControlsReceiver::ButtonMessageID + ); + + controlsManager-> + buttonGroup[LBE4ControlsManager::ButtonJoystickHatLeft]. + Add( + fakeOwnerID, + my_receiver, + TestControlsReceiver::ButtonMessageID + ); + controlsManager-> + buttonGroup[LBE4ControlsManager::ButtonJoystickHatRight]. + Add( + fakeOwnerID, + my_receiver, + TestControlsReceiver::ButtonMessageID + ); + controlsManager-> + buttonGroup[LBE4ControlsManager::ButtonJoystickTrigger]. + Add( + fakeOwnerID, + my_receiver, + TestControlsReceiver::ButtonMessageID + ); + controlsManager-> + buttonGroup[LBE4ControlsManager::ButtonJoystickThumbHigh]. + Add( + fakeOwnerID, + my_receiver, + TestControlsReceiver::ButtonMessageID + ); + + controlsManager-> + buttonGroup[LBE4ControlsManager::ButtonJoystickThumbLow]. + Add( + fakeOwnerID, + my_receiver, + TestControlsReceiver::ButtonMessageID + ); + controlsManager-> + buttonGroup[LBE4ControlsManager::ButtonJoystickPinky]. + Add( + fakeOwnerID, + my_receiver, + TestControlsReceiver::ButtonMessageID + ); + + cout << "Button test: Operate joystick buttons. Press ENTER to end.\n"; + my_receiver->keyValue = 0; + while (my_receiver->keyValue != 0x0D) + { + controlsManager->Execute(); // 'manually' call update + application->ProcessAllEvents(); // 'manually' process events + + if (my_receiver->buttonValue) + { + switch(my_receiver->buttonValue) + { + case ButtonJoystickHatUp: cout << "Press hat up\n"; break; + case -ButtonJoystickHatUp: cout << "Release hat up\n"; break; + case ButtonJoystickHatDown: cout << "Press hat down\n"; break; + case -ButtonJoystickHatDown: cout << "Release hat down\n"; break; + case ButtonJoystickHatLeft: cout << "Press hat left\n"; break; + case -ButtonJoystickHatLeft: cout << "Release hat left\n"; break; + case ButtonJoystickHatRight: cout << "Press hat right\n"; break; + case -ButtonJoystickHatRight: cout << "Release hat right\n"; break; + case ButtonJoystickTrigger: cout << "Press trigger\n"; break; + case -ButtonJoystickTrigger: cout << "Release trigger\n"; break; + case ButtonJoystickThumbHigh: cout << "Press thumb high\n"; break; + case -ButtonJoystickThumbHigh:cout << "Release thumb high\n"; break; + case ButtonJoystickThumbLow: cout << "Press thumb low\n"; break; + case -ButtonJoystickThumbLow: cout << "Release thumb low\n"; break; + case ButtonJoystickPinky: cout << "Press pinky\n"; break; + case -ButtonJoystickPinky: cout << "Release pinky\n"; break; + } + my_receiver->buttonValue = 0; + } + } + + controlsManager->Remove(fakeOwnerID); + + Unregister_Object(my_receiver); + delete my_receiver; +#endif + + return True; +} + diff --git a/CODE/RP/MUNGA_L4/L4CTRL.THP b/CODE/RP/MUNGA_L4/L4CTRL.THP new file mode 100644 index 0000000..f98566c --- /dev/null +++ b/CODE/RP/MUNGA_L4/L4CTRL.THP @@ -0,0 +1,88 @@ +//===========================================================================// +// File: controls.thh // +// Project: MUNGA Brick: Controls Module // +// Contents: Interface specification for Controls module // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- -----------------------------------------------------------// +// 12/12/94 CPB Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. All rights reserved // +// PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(LBE4_CONTROLS_THH) +# define LBE4_CONTROLS_THH + + //######################################################################### + //############################# TestReceiver ############################## + //######################################################################### + class TestControlsReceiver: + public Receiver + { + //######################################################################### + // Shared Data Support + // + public: + static Derivation ClassDerivations; + static SharedData DefaultData; + + //######################################################################### + // Construction and Destruction Support + // + public: + TestControlsReceiver( + ClassID class_ID=TrivialReceiverClassID, + SharedData &shared_data=DefaultData + ); + + ~TestControlsReceiver(); + + //########################################################################## + // Messaging Support + // + public: + enum { + KeyboardMessageID=Receiver::NextMessageID, + ScalarMessageID, + JoystickMessageID, + ButtonMessageID, + MouseMessageID, + NextMessageID + }; + + protected: + static const HandlerEntry + MessageHandlerEntries[]; + static MessageHandlerSet + MessageHandlers; + + void KeyboardMessageHandler(ReceiverDataMessageOf *); + void ScalarMessageHandler(ReceiverDataMessageOf *); + void JoystickMessageHandler(ReceiverDataMessageOf *); + void ButtonMessageHandler(ReceiverDataMessageOf *); + void MouseMessageHandler(ReceiverDataMessageOf *); + + //########################################################################## + // Test Support + // + public: + ControlsKey + keyValue; + + Scalar + scalarValue; + + ControlsJoystick + joystickValue; + + ControlsButton + buttonValue; + + ControlsMouse + mouseValue; + }; + + +#endif + diff --git a/CODE/RP/MUNGA_L4/L4DPLMEM.CPP b/CODE/RP/MUNGA_L4/L4DPLMEM.CPP new file mode 100644 index 0000000..2018661 --- /dev/null +++ b/CODE/RP/MUNGA_L4/L4DPLMEM.CPP @@ -0,0 +1,45 @@ +/* +This block of code is expected to override the memory allocater in the DPL library +*/ +#include +#pragma hdrstop + +#if !defined(L4VIDEO_HPP) +# include +#endif + +extern "C" +{ + void + *dpl_malloc ( int n_bytes ), + *dpl_calloc ( size_t n, size_t n_bytes ), + dpl_free ( void *ptr ), + dpl_free_all ( void ); +}; + +void *dpl_malloc ( int n_bytes ) +{ + Check_Pointer(DPLRenderer::DPLHeap); + return DPLRenderer::DPLHeap->Allocate(n_bytes); +} + +void *dpl_calloc ( size_t n, size_t n_bytes ) +{ + Check_Pointer(DPLRenderer::DPLHeap); + void *p = DPLRenderer::DPLHeap->Allocate(n * n_bytes); + memset ( p, 0x0, n_bytes*n ); + return p; +} + +void dpl_free ( void *ptr ) +{ + Check_Pointer(DPLRenderer::DPLHeap); + DPLRenderer::DPLHeap->Release(ptr); +} + +void dpl_free_all ( void ) +{ + Check_Pointer(DPLRenderer::DPLHeap); + DPLRenderer::DPLHeap->ReleaseAll(); +} + diff --git a/CODE/RP/MUNGA_L4/L4FILE.CPP b/CODE/RP/MUNGA_L4/L4FILE.CPP new file mode 100644 index 0000000..a30c98f --- /dev/null +++ b/CODE/RP/MUNGA_L4/L4FILE.CPP @@ -0,0 +1,210 @@ +#include +#pragma hdrstop + +#if !defined(FILESTRM_HPP) +# include +#endif + +#if !defined(L4NET_HPP) +# include +#endif + +#if !defined(NETNUB_HPP) +# include +#endif + +#include +#include +#include + +#define NETNUB_MARK 0x10000 + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +int + FileStream::OpenImplementation( + const char* filename, + Logical read_only + ) +{ + Check_Pointer(filename); + + if (Net_Common_Ptr && !read_only) + { + OpenFileRequestPtr request = + (OpenFileRequestPtr)Net_Common_Ptr->Shared_Memory_Buffer; + OpenFileReturnPtr status = + (OpenFileReturnPtr)Net_Common_Ptr->Shared_Memory_Buffer; + + Net_Common_Ptr->Function = NETNUB_OPEN_FILE; + Net_Common_Ptr->Buffer_Length = sizeof(*request); + Str_Copy(request->File_Name, filename, sizeof(request->File_Name)); + request->Access = O_CREAT|O_TRUNC|O_BINARY|2; + request->Model = S_IWRITE; + + NetNub::SendCommand(); + + int handle = status->File_Handle; + return handle|NETNUB_MARK; + } + else if (read_only) + { + return open(filename, O_BINARY|O_RDONLY); + } + else + { + return open(filename, O_BINARY|O_CREAT|O_TRUNC|O_WRONLY, S_IWRITE); + } +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + FileStream::CloseImplementation(int handle) +{ + if (handle&NETNUB_MARK) + { + Verify(Net_Common_Ptr); + CloseFileRequestPtr request = + (CloseFileRequestPtr)Net_Common_Ptr->Shared_Memory_Buffer; + + Net_Common_Ptr->Function = NETNUB_CLOSE_FILE; + Net_Common_Ptr->Buffer_Length = sizeof(*request); + request->File_Handle = (short)(handle&~NETNUB_MARK); + + NetNub::SendCommand(); + } + else + { + close(handle); + } +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +size_t + FileStream::SeekImplementation( + int file_handle, + size_t where, + Logical from_end + ) +{ + if (file_handle&NETNUB_MARK) + { + Verify(Net_Common_Ptr); + SeekFileRequestPtr request = + (SeekFileRequestPtr)Net_Common_Ptr->Shared_Memory_Buffer; + SeekFileReturnPtr status = + (SeekFileReturnPtr)Net_Common_Ptr->Shared_Memory_Buffer; + + Net_Common_Ptr->Function = NETNUB_SEEK_FILE; + Net_Common_Ptr->Buffer_Length = sizeof(*request); + request->File_Handle = (short)(file_handle&~NETNUB_MARK); + request->Seek_Mode = (short)((from_end) ? SEEK_END : SEEK_SET); + request->Seek_Offset = where; + + NetNub::SendCommand(); + + return status->Seek_Position; + } + else + { + return lseek(file_handle, (long)where, (from_end) ? SEEK_END : SEEK_SET); + } +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +size_t + FileStream::WriteImplementation( + int file_handle, + const void *buffer, + size_t length + ) +{ + Check_Pointer(buffer); + + if (file_handle&NETNUB_MARK) + { + Verify(Net_Common_Ptr); + WriteFileRequestPtr request = + (WriteFileRequestPtr)Net_Common_Ptr->Shared_Memory_Buffer; + #if DEBUG_LEVEL>0 + WriteFileReturnPtr status = + (WriteFileReturnPtr)Net_Common_Ptr->Shared_Memory_Buffer; + #endif + + size_t remaining = length; + char *where = (char*)buffer; + while (remaining) + { + size_t chunk = remaining; + Max_Clamp(chunk, MAX_TRANSFER_SIZE); + + Net_Common_Ptr->Function = NETNUB_WRITE_FILE; + Net_Common_Ptr->Buffer_Length = (unsigned short)(chunk + 4); + request->File_Handle = (short)(file_handle&~NETNUB_MARK); + request->Write_Length = (unsigned short)chunk; + Mem_Copy(request->Write_Data, where, chunk, SHARED_MEMORY_SIZE); + + NetNub::SendCommand(); + Verify(status->Bytes_Written == chunk); + + where += chunk; + remaining -= chunk; + } + return length; + } + else + { + return write(file_handle, buffer, length); + } +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +size_t + FileStream::ReadImplementation( + int file_handle, + void *buffer, + size_t length + ) +{ + Check_Pointer(buffer); + + if (file_handle&NETNUB_MARK) + { + Verify(Net_Common_Ptr); + ReadFileRequestPtr request = + (ReadFileRequestPtr)Net_Common_Ptr->Shared_Memory_Buffer; + ReadFileReturnPtr status = + (ReadFileReturnPtr)Net_Common_Ptr->Shared_Memory_Buffer; + + size_t remaining = length; + char *where = (char*)buffer; + while (remaining) + { + size_t chunk = remaining; + Max_Clamp(chunk, MAX_TRANSFER_SIZE); + + Net_Common_Ptr->Function = NETNUB_READ_FILE; + Net_Common_Ptr->Buffer_Length = sizeof(*request); + request->File_Handle = (short)(file_handle&~NETNUB_MARK); + request->Read_Length = (unsigned short)chunk; + + NetNub::SendCommand(); + Verify(chunk == Net_Common_Ptr->Buffer_Length); + + Mem_Copy(where, status->Read_Data, chunk, SHARED_MEMORY_SIZE); + + where += chunk; + remaining -= chunk; + } + return length; + } + else + { + return read(file_handle, buffer, length); + } +} + diff --git a/CODE/RP/MUNGA_L4/L4GAUIMA.CPP b/CODE/RP/MUNGA_L4/L4GAUIMA.CPP new file mode 100644 index 0000000..be00920 --- /dev/null +++ b/CODE/RP/MUNGA_L4/L4GAUIMA.CPP @@ -0,0 +1,1696 @@ +//===========================================================================// +// File: vectlist.cpp // +// Project: MUNGA Brick: Gauge Renderer // +// Contents: // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 05/19/95 CPB Initial coding. // +// 06/01/95 CPB Resourcified. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. All rights reserved // +// PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(FILEUTIL_HPP) +# include +#endif + +#if !defined(L4GAUIMA_HPP) +# include +#endif + +#if !defined(L4APP_HPP) +# include +#endif + +#if !defined(NOTATION_HPP) +# include +#endif + +#if !defined(NAMELIST_HPP) +# include +#endif + +// #define LOCAL_TEST + +#if defined(LOCAL_TEST) +# define Test_Tell(n) cout << n << flush +#else +# define Test_Tell(n) +#endif + + +//############################################################################ +// GroupAttribute +// - this is a private class used nowhere else. +// It is initialized from a .GAT notation file, after which it +// holds a list of attribute group names with associated color and +// attribute fields. It may then be searched to find the values for +// that attribute group. +//############################################################################ +class GroupAttribute SIGNATURED +{ +public: + enum + { + nameLength=64 + }; + + int color; + int attribute; + char name[nameLength]; + + GroupAttribute + *next; + + GroupAttribute(const char *new_name, int new_color, int new_attrib); + ~GroupAttribute() + {} + + Logical + TestInstance() const + { return True; } + + static Logical + Initialize(const char *gat_file_name); + static void + Terminate(); + static Logical + Search(const char *name, int *color, int *attribute); +protected: + static + GroupAttribute + *head; +}; + +GroupAttribute + *GroupAttribute::head; + +GroupAttribute::GroupAttribute( + const char *new_name, + int new_color, + int new_attrib +) +{ + Test_Tell( + "GroupAttribute::GroupAttribute(" << new_name << + ", " << new_color << + ", " << new_attrib << + ")\n" + ); + Check_Pointer(this); + Check_Pointer(new_name); + + name[0] = '\0'; // safety check + Str_Copy(name, new_name, nameLength-1); + name[nameLength-1] = '\0'; + + color = new_color; + attribute = new_attrib; + + next = head; + head = this; + Check_Fpu(); +} + +Logical + GroupAttribute::Initialize(const char *gat_filename) +{ + Test_Tell("GroupAttribute::Initialize(" << gat_filename << ")\n"); + Check_Pointer(gat_filename); + + Logical + result = False; + + //------------------------------------------------------------- + // Open the associated .GAT file + //------------------------------------------------------------- + NotationFile + *gat_file = new NotationFile(gat_filename); + Check(gat_file); + Register_Object(gat_file); + + //------------------------------------------------------------- + // Create group, attribute, color name lists + //------------------------------------------------------------- + NameList + *color_namelist = gat_file->MakeEntryList("colors"); + if (color_namelist == NULL) + { + DEBUG_STREAM << gat_filename << " has no 'colors' page!" << endl; + } + + NameList + *attribute_namelist = gat_file->MakeEntryList("attributes"); + if (attribute_namelist == NULL) + { + DEBUG_STREAM << gat_filename << " has no 'attributes' page!" << endl; + } + + NameList + *group_namelist = gat_file->MakeEntryList("groups"); + if (group_namelist == NULL) + { + DEBUG_STREAM << gat_filename << " has no 'groups' page!" << endl; + } + + if ( + (attribute_namelist != NULL) && + (color_namelist != NULL) && + (group_namelist != NULL) + ) + { + //------------------------------------------------------------- + // Register the name lists + //------------------------------------------------------------- + Register_Object(color_namelist); + Register_Object(attribute_namelist); + Register_Object(group_namelist); + //------------------------------------------------------------- + // Clear the chain header + //------------------------------------------------------------- + head = NULL; + //------------------------------------------------------------- + // For all group names, build a GroupAttribute object + //------------------------------------------------------------- + NameList::Entry + *group_entry, + *color_entry, + *attribute_entry; + int + i, + new_attribute, + new_color; + Logical + found; + + for ( + group_entry = group_namelist->GetFirstEntry(); + group_entry != NULL; + group_entry = group_entry->GetNextEntry() + ) + { + Check(group_entry); + + char + buffer[256]; + char + *dest, + *text = group_entry->GetChar(); + + new_attribute = 0; + new_color = 0; + + if (text == NULL) + { + DEBUG_STREAM << text << " is an empty .GAT group!" << endl; + } + else + { + //------------------------------------------------------------- + // Skip white space + //------------------------------------------------------------- + while (*text != '\0') + { + while (isspace(*text)) + { + ++text; + } + //------------------------------------------------------------- + // Parse out one name + //------------------------------------------------------------- + for ( + i=0,dest=buffer; + i<(sizeof(buffer)-1); + ++i,++dest,++text + ) + { + if (!isalnum(*text)) + { + break; + } + + *dest = *text; + } + *dest = '\0'; + + Test_Tell("attribute item= <" << buffer << ">\n"); + //------------------------------------------------------------- + // Search color list for name + //------------------------------------------------------------- + found = False; + + for ( + color_entry = color_namelist->GetFirstEntry(); + color_entry != NULL; + color_entry = color_entry->GetNextEntry() + ) + { + Check(color_entry); + if (strcmp(color_entry->GetName(), buffer) == 0) + { + Check_Pointer(color_entry->GetData()); + new_color = color_entry->GetAtoi(); + Test_Tell("color=" << new_color << "\n"); + found = True; + break; + } + } + if (! found) + { + //---------------------------------------------------------- + // Search attribute list for name + //---------------------------------------------------------- + found = False; + + for ( + attribute_entry =attribute_namelist->GetFirstEntry(); + attribute_entry != NULL; + attribute_entry = attribute_entry->GetNextEntry() + ) + { + Check(attribute_entry); + if (strcmp(attribute_entry->GetName(), buffer) == 0) + { + Check_Pointer(attribute_entry->GetData()); + new_attribute |= attribute_entry->GetAtoi(); + Test_Tell( + "attribute=" << hex << new_attribute << dec << ">\n" + ); + found = True; + break; + } + } + if (! found) + { + DEBUG_STREAM << + "Attribute '" << buffer << "' not found!" << endl; + } + } + } + } + Check(group_entry); + Check_Pointer(group_entry->GetName()); + +# if DEBUG_LEVEL == 0 + new GroupAttribute( + group_entry->GetName(), + new_color, + new_attribute + ); +# else + GroupAttribute + *group_attribute = + new GroupAttribute( + group_entry->GetName(), + new_color, + new_attribute + ); + Check(group_attribute); + Register_Object(group_attribute); + Test_Tell("object created\n"); +# endif + } + //------------------------------------------------------------- + // Release the name lists + //------------------------------------------------------------- + Test_Tell("loop finished, deleting namelists\n"); + Check(color_namelist); + Unregister_Object(color_namelist); + delete color_namelist; + + Check(attribute_namelist); + Unregister_Object(attribute_namelist); + delete attribute_namelist; + + Check(group_namelist); + Unregister_Object(group_namelist); + delete group_namelist; + + result = True; + } + //------------------------------------------------------------- + // Release the notation file + //------------------------------------------------------------- + Test_Tell("deleting .GAT notation file\n"); + Check(gat_file); + Unregister_Object(gat_file); + delete gat_file; + + Test_Tell("returning " << result <<"\n"); + Check_Fpu(); + return result; +} + +void + GroupAttribute::Terminate() +{ + Test_Tell("GroupAttribute::Terminate\n"); + GroupAttribute + *group_attribute, + *next; + + for( + group_attribute= head; + group_attribute != NULL; + group_attribute = next + ) + { + Check(group_attribute); + next = group_attribute->next; + + Unregister_Object(group_attribute); + delete group_attribute; + } + + head = NULL; + Test_Tell("Termination completed\n"); + Check_Fpu(); +} + + +Logical + GroupAttribute::Search(const char *name, int *color_dest, int *attrib_dest) +{ + Test_Tell("GroupAttribute::Search("<< name <<")\n"); + GroupAttribute + *group_attribute; + + for( + group_attribute= head; + group_attribute != NULL; + group_attribute = group_attribute->next + ) + { + Check(group_attribute); + if ( + strncmp( + name, + group_attribute->name, + GroupAttribute::nameLength + ) == 0 + ) + { + Test_Tell("Found!\n"); + *color_dest = group_attribute->color; + *attrib_dest = group_attribute->attribute; + Check_Fpu(); + return True; + } + } + Check_Fpu(); + return False; +} + +//############################################################################ +// L4GaugeImage +//############################################################################ + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Construction and Destruction +// +L4GaugeImage * + L4GaugeImage::Make(const char */*file_name*/) +{ + return NULL; // Gauge images come exclusively from resources +} + +L4GaugeImage * + L4GaugeImage::Make(ResourceDescription::ResourceID new_resource_id) +{ + Check(application); + Check(application->GetResourceFile()); + + L4GaugeImage + *image = NULL; + //------------------------------------------- + // Attempt to find the specified resource + //------------------------------------------- + ResourceDescription + *stream_resource_description = + application->GetResourceFile()->SearchList( + new_resource_id, + ResourceDescription::GaugeImageStreamResourceType + ); + + if (stream_resource_description == NULL) + { + Tell( + "L4GaugeImage::Make: resource ID '" << new_resource_id << + "' does not exist\n" + ); + } + else + { + //------------------------------------------- + // Found it, open a DynamicMemoryStream + //------------------------------------------- + Check(stream_resource_description); + stream_resource_description->Lock(); + MemoryStream + memory_stream( + stream_resource_description->resourceAddress, + stream_resource_description->resourceSize + ); + if (stream_resource_description->resourceAddress == NULL) + { + Tell("L4GaugeImage::Make: couldn't open stream\n"); + } + else + { + //------------------------------------------- + // Create the object + //------------------------------------------- + image = new L4GaugeImage(&memory_stream); + } + stream_resource_description->Unlock(); + } + Check_Fpu(); + return image; +} + +L4GaugeImage::L4GaugeImage(MemoryStream *mem_stream) +{ + Test_Tell("L4GaugeImage::L4GaugeImage\n"); + Check_Pointer(this); + Check(mem_stream); + + int + i; + + //------------------------------------------------------------- + // Read the number of vertices + //------------------------------------------------------------- + MemoryStream_Read(mem_stream, &vertexCount); + Verify(vertexCount > 0); + //------------------------------------------------------------- + // Allocate the vertex array + //------------------------------------------------------------- + vertexArray = new Point3D[vertexCount]; + Check_Pointer(vertexArray); + Register_Pointer(vertexArray); + //------------------------------------------------------------- + // Read in the vertex values + //------------------------------------------------------------- + for(i=0; i 0); + //------------------------------------------------------------- + // Allocate the LOD scales + //------------------------------------------------------------- + LODScales = new Scalar[LODCount]; + Check_Pointer(LODScales); + Register_Pointer(LODScales); + //------------------------------------------------------------- + // Read the LOD scales + //------------------------------------------------------------- + for(i=0; iGetEntry("gauge", "image", &gauge_filename) != 0) + { + //------------------------------------------------------------- + // It does, attempt to open the given notation file + //------------------------------------------------------------- + Tell("Opening gauge image " << gauge_filename << "\n"); + + char *gim_filename = + MakePathedFilename(directories->gaugeDirectory, gauge_filename); + Register_Pointer(gim_filename); + + NotationFile + *gim_file = new NotationFile(gim_filename); + Check(gim_file); + Register_Object(gim_file); + + //-------------------------------------------------------- + // Search for the name of the .GAT file + //-------------------------------------------------------- + const char + *gat_entry; + + if (gim_file->GetEntry("object", "gatfile", &gat_entry) == 0) + { + DEBUG_STREAM << "Missing .gat specification!" << endl; + } + else + { + //------------------------------------------------------------- + // Create the GroupAttribute data + //------------------------------------------------------------- + char *gat_filename = + MakePathedFilename(directories->gaugeDirectory, gat_entry); + Register_Pointer(gat_filename); + + if (GroupAttribute::Initialize(gat_filename)) + { + //------------------------------------------------------------- + // Create a dynamic memory stream, write out the data + // (note: the call to L4GaugeImage::DynamicMemoryStreamWrite() + // internally calls the dynamic stream writes for all of the + // 'owned' sub-parts as well) + //------------------------------------------------------------- + DynamicMemoryStream + *gim_stream = new DynamicMemoryStream(); + + Check(gim_stream); + Register_Object(gim_stream); + + if ( + L4GaugeImage::MemoryStreamWrite( + gim_stream, + gim_file + ) == True + ) + { + //------------------------------------------------------------- + // Create the resource description, assign an ID + //------------------------------------------------------------- + ResourceDescription + *res_desc_stream = + resource_file->ResourceFile::AddResourceMemoryStream( + model_name, + ResourceDescription::GaugeImageStreamResourceType, + 1, + ResourceDescription::Preload, + gim_stream + ); + + Check(res_desc_stream); + res_id = res_desc_stream->resourceID; + } + + //------------------------------------------------------------- + // Release the GroupAttribute data + //------------------------------------------------------------- + GroupAttribute::Terminate(); + + Check(gim_stream); + Unregister_Object(gim_stream); + delete gim_stream; + } + Check_Pointer(gat_filename); + Unregister_Pointer(gat_filename); + delete gat_filename; + } + //------------------------------------------------------------- + // Release variables + //------------------------------------------------------------- + Check(gim_file); + Unregister_Object(gim_file); + delete gim_file; + + Check_Pointer(gim_filename); + Unregister_Pointer(gim_filename); + delete gim_filename; + + Tell("Closed gauge image\n" << flush); + } + //------------------------------------------------------------- + // Return the new ResourceID + //------------------------------------------------------------- + Test_Tell("res_id = " << res_id << "\n"); + Check_Fpu(); + return res_id; +} + + +Logical + L4GaugeImage::MemoryStreamWrite( + MemoryStream *mem_stream, + NotationFile *gim_file + ) +{ + Test_Tell(" L4GaugeImage::MemoryStreamWrite(" << mem_stream << + ", " << gim_file << + ")\n" + ); + Check(mem_stream); + Check(gim_file); + + int + i; + //------------------------------------------------------------- + // 'result' is set to False if an error occurs. + //------------------------------------------------------------- + Logical + result = True; + //------------------------------------------------------------- + // Write the vertices + //------------------------------------------------------------- + NameList + *vertex_list = gim_file->MakeEntryList("vertices"); + + if (vertex_list == NULL) + { + DEBUG_STREAM << "No 'vertices' page in the .GIM file!" << endl; + result = False; + } + else + { + Check(vertex_list); + Register_Object(vertex_list); + //------------------------------------------------------------- + // Get the number of vertices + //------------------------------------------------------------- + int + vertex_count = vertex_list->EntryCount(); + + Test_Tell("vertex_count = " << vertex_count << "\n"); + if (vertex_count <= 0) + { + DEBUG_STREAM << + "The 'vertices' page in the .GIM file has no entries!" <GetFirstEntry(); + + for (int i=0; iGetChar(), &point_3d); + Test_Tell(" " << point_3d << "\n"); + MemoryStream_Write(mem_stream, &point_3d); + + vertex_entry = vertex_entry->GetNextEntry(); + } + } + //------------------------------------------------------------- + // Delete the vertex list + //------------------------------------------------------------- + Check(vertex_list); + Unregister_Object(vertex_list); + delete vertex_list; + } + + //------------------------------------------------------------- + // Write the levels of detail + //------------------------------------------------------------- + if (result == True) + { + NameList + *lod_namelist = gim_file->MakeEntryList("lods"); + + if (lod_namelist == NULL) + { + DEBUG_STREAM << "No 'lods' page in the .GIM file!" << endl; + result = False; + } + else + { + Check(lod_namelist); + Register_Object(lod_namelist); + //------------------------------------------------------------- + // Get the number of LOD's + //------------------------------------------------------------- + int + lod_count = lod_namelist->EntryCount(); + Test_Tell("lod_count = " << lod_count << "\n"); + if (lod_count <= 0) + { + DEBUG_STREAM << + "The 'lod' page in the .GIM file has no entries!" << endl; + result = False; + } + else + { + //------------------------------------------------------------- + // Write the number of LOD's to the stream + //------------------------------------------------------------- + MemoryStream_Write(mem_stream, &lod_count); + //------------------------------------------------------------- + // Write the LOD scales + //------------------------------------------------------------- + NameList::Entry + *scale_entry; + Scalar + scale; + + const char + *text; + + scale_entry = lod_namelist->GetFirstEntry(); + for (i=0; iGetChar(); + if (text == NULL) + { + DEBUG_STREAM << "Missing scale value!" << endl; + result = False; + break; + } + scale = (Scalar) atof(text); + + Test_Tell(" " << scale << "\n"); + MemoryStream_Write(mem_stream, &scale); + + scale_entry = scale_entry->GetNextEntry(); + } + //------------------------------------------------------------- + // Write the LOD lists + //------------------------------------------------------------- + scale_entry = lod_namelist->GetFirstEntry(); + for (i=0; iGetName() + ); + + if (result == False) + { + break; + } + + scale_entry = scale_entry->GetNextEntry(); + } + } + } + //------------------------------------------------------------- + // Delete the LOD list + //------------------------------------------------------------- + Check(lod_namelist); + Unregister_Object(lod_namelist); + delete lod_namelist; + } + Check_Fpu(); + return result; +} + + +void + L4GaugeImage::Draw( + Scalar LOD_value, // smaller = more detail (1.0 = 'normal') + Scalar scale_value, // metersPerPixel + GraphicsView *graphics_view, + int default_color, + AffineMatrix &localToView, + int boxed_color + ) +{ + Test_Tell( + "L4GaugeImage::Draw(" << scale_value << + ", " << graphics_view << + ", " << default_color << + ", " << localToView << + ", " << boxed_color << + ")\n" + ); + Check(this); + Check(graphics_view); + // localToView allowed to be NULL + Check_Pointer(LODScales); + Check_Pointer(LODList); + +# define VERTEX_ALLOTMENT 100 // HACK - I'm guessing this is big enough. + + Verify(vertexCount <= VERTEX_ALLOTMENT); + + static + Point3D + local_vertex_array[VERTEX_ALLOTMENT]; + + static + Logical + local_flag_array[VERTEX_ALLOTMENT]; + + int + lod_index; + + if (localToView == NULL) + { + return; + } + //------------------------------------------------------------- + // Find LOD index + //------------------------------------------------------------- + for(lod_index=0; lod_indexDraw( + graphics_view, + default_color, + localToView, + vertexArray, + local_vertex_array, + local_flag_array, + scale_value, + boxed_color + ); + } + Check_Fpu(); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Test Instance +// +Logical + L4GaugeImage::TestInstance() const +{ + return True; +} +//############################################################################ +// L4GaugeImageList +//############################################################################ + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Construction and Destruction +// +L4GaugeImageList::L4GaugeImageList(MemoryStream *mem_stream) +{ + Test_Tell("L4GaugeImageList::L4GaugeImageList\n"); + Check_Pointer(this); + Check(mem_stream); + + int + i; + + //------------------------------------------------------------- + // Read the number of primitives from the stream + //------------------------------------------------------------- + MemoryStream_Read(mem_stream, &primitiveCount); + Verify(primitiveCount > 0); + //------------------------------------------------------------- + // Allocate the primitive list + //------------------------------------------------------------- + primitiveList = new L4GaugeImagePrimitive*[primitiveCount]; + Check_Pointer(primitiveList); + Register_Pointer(primitiveList); + //------------------------------------------------------------- + // Read the primitives + //------------------------------------------------------------- + for(i=0; iMakeEntryList(page_name); + + if (primitive_list == NULL) + { + DEBUG_STREAM << "Can't find the '" << page_name << "' page in the .GIM file!" + << endl; + result = False; + } + else + { + Check(primitive_list); + Register_Object(primitive_list); + //------------------------------------------------------------- + // Get the number of primitives + //------------------------------------------------------------- + int + primitive_count = primitive_list->EntryCount(); + + Test_Tell(" primitive_count = " << primitive_count << "\n"); + if (primitive_count <= 0) + { + DEBUG_STREAM << "The '"<GetFirstEntry(); + for (i=0; iGetName(), + primitive_entry->GetChar() + ); + + if (result == False) + { + break; + } + + primitive_entry = primitive_entry->GetNextEntry(); + } + } + //------------------------------------------------------------- + // Delete the primitive list + //------------------------------------------------------------- + Check(primitive_list); + Unregister_Object(primitive_list); + delete primitive_list; + } + Check_Fpu(); + return result; +} + + + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Test Support +// +Logical + L4GaugeImageList::TestInstance() const +{ + return True; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + L4GaugeImageList::Draw( + GraphicsView *graphics_view, + int default_color, + AffineMatrix &localToView, + Point3D *untransformed_vertex_array, + Point3D *transformed_vertex_array, + Logical *transformed_flag_array, + Scalar scale_factor, + int boxed_color + ) +{ + Test_Tell( + "L4GaugeImageList::Draw(" << graphics_view << + ", " << default_color << + ", " << localToView << + ", " << untransformed_vertex_array << + ", " << transformed_vertex_array << + ", " << transformed_flag_array << + ", " << scale_factor << + ", " << boxed_color << + ")\n" + ); + Check(this); + Check(graphics_view); + Check(&localToView); + Check_Pointer(untransformed_vertex_array); + Check_Pointer(transformed_vertex_array); + Check_Pointer(transformed_flag_array); + + Check_Pointer(primitiveList); + + int + i; + L4GaugeImagePrimitive + **array_pointer = primitiveList; + + if (boxed_color != 0) + { + //-------------------------------------------------------- + // Initialize bounding box + //-------------------------------------------------------- + Rectangle2D + bounds(9999,9999,-9999,-9999); + //-------------------------------------------------------- + // Draw primitives, collect bounding data + //-------------------------------------------------------- + for(i=0; iDraw( + graphics_view, + default_color, + localToView, + untransformed_vertex_array, + transformed_vertex_array, + transformed_flag_array, + scale_factor, + &bounds + ); + } + //-------------------------------------------------------- + // Draw the bounding box + //-------------------------------------------------------- + graphics_view->SetColor(boxed_color); + + graphics_view->MoveToAbsolute( + bounds.bottomLeft.x-4, + bounds.bottomLeft.y-4 + ); + graphics_view->DrawRectangleToAbsolute( + bounds.topRight.x+4, + bounds.topRight.y+4 + ); + } + else + { + //-------------------------------------------------------- + // Just draw it + //-------------------------------------------------------- + for(i=0; iDraw( + graphics_view, + default_color, + localToView, + untransformed_vertex_array, + transformed_vertex_array, + transformed_flag_array, + scale_factor, + NULL + ); + } + } + Check_Fpu(); +} + +//############################################################################ +// L4GaugeImagePrimitive +//############################################################################ + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Construction and Destruction +// +L4GaugeImagePrimitive::L4GaugeImagePrimitive(MemoryStream *mem_stream) +{ + Test_Tell("L4GaugeImagePrimitive::L4GaugeImagePrimitive\n"); + Check_Pointer(this); + Check(mem_stream); + + int + i, + n; + //-------------------------------------------------------------- + // Read the primitive type ID, use the input stream accordingly + //-------------------------------------------------------------- + MemoryStream_Read(mem_stream, &n); + type = (primitiveType) n; + + switch(type) + { + case primitiveVector: + Test_Tell(" primitiveVector\n"); + //-------------------------------------------------------- + // Read the attribute and color + //-------------------------------------------------------- + MemoryStream_Read(mem_stream, &color); + MemoryStream_Read(mem_stream, &attributes); + Test_Tell(" color = " << color << "\n"); + Test_Tell(" attributes = " << hex << attributes << dec << "\n"); + //-------------------------------------------------------- + // Read the vertex index count + //-------------------------------------------------------- + MemoryStream_Read(mem_stream, &data.vector.indexCount); + Test_Tell(" indexCount = " << data.vector.indexCount << "\n"); + Verify(data.vector.indexCount > 0); + //-------------------------------------------------------- + // Allocate the index table + //-------------------------------------------------------- + data.vector.indexList = new int[data.vector.indexCount]; + Check_Pointer(data.vector.indexList); + Register_Pointer(data.vector.indexList); + //-------------------------------------------------------- + // Read the indices + //-------------------------------------------------------- + for(i=0; i 0) + int + check_length = strlen(data)+1; +# endif + + while(*scan != '\0') + { + Verify((scan-data) < check_length); + //-------------------------------------------------------- + // Skip white space + //-------------------------------------------------------- + while (isspace(*scan)) + { + ++scan; + } + //-------------------------------------------------------- + // Parse non-space string + //-------------------------------------------------------- + if (*scan == 'v') + { + int + n; + //-------------------------------------------------------- + // Convert to value, save in array + //-------------------------------------------------------- + ++scan; // ignore 'v' + for(n=0; isdigit(*scan); ++scan) + { + n = (n*10) + (*scan - '0'); + } + Test_Tell(" " << n << "\n"); + + if (index_count < MAX_INDICES) + { + index[index_count++] = n; + } + } + else if (*scan == 'a') + { + char + buffer[64], + *dest; + //-------------------------------------------------------- + // Collect the name + //-------------------------------------------------------- + for( + i=0, dest=buffer; + i<(sizeof(buffer)-1); + ++i,++scan,++dest + ) + { + if (isspace(*scan)) + { + break; + } + if (*scan == '\0') + { + break; + } + *dest = *scan; + } + *dest = '\0'; + //-------------------------------------------------------- + // Search for the name + //-------------------------------------------------------- + if ( + GroupAttribute::Search( + buffer, + &color_value, + &attribute_value + ) == False + ) + { + DEBUG_STREAM << "Couldn't find attribute group '" << + buffer << "'!" << endl; + } + } + } + //-------------------------------------------------------- + // Write the attributes + //-------------------------------------------------------- + Test_Tell(" color=" << color_value << "\n"); + MemoryStream_Write(mem_stream, &color_value); + Test_Tell(" attribute=" << attribute_value << "\n"); + MemoryStream_Write(mem_stream, &attribute_value); + //-------------------------------------------------------- + // Write the vertex index count + //-------------------------------------------------------- + if (index_count == 0) + { + DEBUG_STREAM << "No vertex indices in primitive!" << endl; + result = False; + } + else + { + Test_Tell(" index_count=" << index_count << "\n"); + MemoryStream_Write(mem_stream, &index_count); + //-------------------------------------------------------- + // Write the indices + //-------------------------------------------------------- + for(i=0; i < index_count; ++i) + { + MemoryStream_Write(mem_stream, &index[i]); + } + } + } + else + { + DEBUG_STREAM << "Unsupported primitive ("<< type_name << ") in .GIM file!" + << endl; + result = False; + } + Check_Fpu(); + return result; +} + + +//============================================================================ +// TestInstance +//============================================================================ +Logical + L4GaugeImagePrimitive::TestInstance() const +{ + return True; +} +//============================================================================ +// Draw +//============================================================================ +void + L4GaugeImagePrimitive::Draw( + GraphicsView *graphics_view, + int default_color, + AffineMatrix &localToView, + Point3D *untransformed_vertex_array, + Point3D *transformed_vertex_array, + Logical *transformed_flag_array, + Scalar scale_factor, + Rectangle2D *bounds + ) +{ + Test_Tell( + "L4GaugeImagePrimitive::Draw(" << graphics_view << + ", " << default_color << + ", " << localToView << + ", " << untransformed_vertex_array << + ", " << transformed_vertex_array << + ", " << transformed_flag_array << + ", " << scale_factor << + ", " << bounds << + ")\n" + ); + + Check(this); + Check(graphics_view); + Check(&localToView); + Check_Pointer(untransformed_vertex_array); + Check_Pointer(transformed_vertex_array); + Check_Pointer(transformed_flag_array); + + //----------------------------------------------- + // Draw primitive + //----------------------------------------------- + switch(type) + { + case primitiveVector: + if (data.vector.indexCount > 1) + { + //----------------------------------------------- + // Set color + //----------------------------------------------- + if (color != 0) + { + default_color = color; + } + graphics_view->SetColor(default_color); + + int + i, + *index_pointer(data.vector.indexList), + index; + Point3D + *dest; + //----------------------------------------------- + // Move to starting point + //----------------------------------------------- + index = *index_pointer++; + + dest = &transformed_vertex_array[index]; + + TransformVertex( + localToView, + untransformed_vertex_array[index], + dest, + transformed_flag_array[index], + scale_factor, + bounds + ); + + + Test_Tell("Start at " << index << "=" << *dest << "\n"); + graphics_view->MoveToAbsolute((int)dest->x,(int)dest->z); + //----------------------------------------------- + // Draw subsequent lines + //----------------------------------------------- + for(i=data.vector.indexCount-1; i>0; --i) + { + index = *index_pointer++; + + dest = &transformed_vertex_array[index]; + + TransformVertex( + localToView, + untransformed_vertex_array[index], + dest, + transformed_flag_array[index], + scale_factor, + bounds + ); + + Test_Tell("Draw to " << index << "=" << *dest << "\n"); + graphics_view->DrawLineToAbsolute((int)(dest->x),(int)(dest->z)); + } + } + break; + default: + Warn("L4GaugeImagePrimitive::Draw: Evil type_id!"); + break; + } + Check_Fpu(); +} + +void + L4GaugeImagePrimitive::TransformVertex( + AffineMatrix &local_to_view, + Point3D &untransformed_vertex, + Point3D *transformed_vertex, + Logical &transformed_flag, + Scalar scale_factor, + Rectangle2D *bounds + ) +{ + Check(this); + Check_Pointer(transformed_vertex); + + //----------------------------------------- + // Transform only if not already done + //----------------------------------------- + if (! transformed_flag) + { + if (attributes & attributeUnscaled) + { + //----------------------------------------- + // Unscaled: pre-multiply by scaling factor + //----------------------------------------- + Point3D + temp; + + temp = untransformed_vertex; + temp *= scale_factor; + Check_Fpu(); + + transformed_vertex->Multiply( + temp, + local_to_view + ); + Check_Fpu(); + } + else + { + //----------------------------------------- + // Normally scaled: transform the vertex + //----------------------------------------- + transformed_vertex->Multiply( + untransformed_vertex, + local_to_view + ); + Check_Fpu(); + } + + //----------------------------------------- + // Round, and fix 'y' sign + //----------------------------------------- + transformed_vertex->x += .5; + transformed_vertex->z = -transformed_vertex->z + .5; + + //----------------------------------------------- + // Set the 'transformed' flag + //----------------------------------------------- + transformed_flag = True; + } + + //----------------------------------------------- + // Accumulate bounds + //----------------------------------------------- + if (bounds != NULL) + { + if (transformed_vertex->x < bounds->bottomLeft.x) + { + bounds->bottomLeft.x = transformed_vertex->x; + } + if (transformed_vertex->x > bounds->topRight.x) + { + bounds->topRight.x = transformed_vertex->x; + } + + if (transformed_vertex->z < bounds->bottomLeft.y) + { + bounds->bottomLeft.y = transformed_vertex->z; + } + if (transformed_vertex->z > bounds->topRight.y) + { + bounds->topRight.y = transformed_vertex->z; + } + } + Check_Fpu(); +} + + + diff --git a/CODE/RP/MUNGA_L4/L4GAUIMA.HPP b/CODE/RP/MUNGA_L4/L4GAUIMA.HPP new file mode 100644 index 0000000..5839586 --- /dev/null +++ b/CODE/RP/MUNGA_L4/L4GAUIMA.HPP @@ -0,0 +1,279 @@ +//===========================================================================// +// File: l4gauima.hpp // +// Project: MUNGA Brick: Gauge Renderer // +// Contents: // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 05/19/95 CPB Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. All rights reserved // +// PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(L4GAUIMA_HPP) +# define L4GAUIMA_HPP + +# if !defined(ENTITY_HPP) +# include "entity.hpp" +# endif + +# if !defined(AFFNMTRX_HPP) +# include "affnmtrx.hpp" +# endif + +# if !defined(GRAPH2D_HPP) +# include "graph2d.hpp" +# endif + +# if !defined(MEMSTRM_HPP) +# include "memstrm.hpp" +# endif + + class L4GaugeImage; + class L4GaugeImageList; + class L4GaugeImagePrimitive; + + class L4GaugeImageListResource; + class L4GaugeImagePrimitiveResource; + class L4GaugeImageResource; + + + + //####################################################################### + // L4GaugeImage + //####################################################################### + class L4GaugeImage SIGNATURED + { + public: + //-------------------------------------------------------------------- + // Create L4GaugeImage from memory stream + //-------------------------------------------------------------------- + L4GaugeImage(MemoryStream *mem_stream); + + static L4GaugeImage * + Make(const char *file_name); + static L4GaugeImage * + Make(ResourceDescription::ResourceID new_resource_id); + //-------------------------------------------------------------------- + // Destructor + //-------------------------------------------------------------------- + ~L4GaugeImage(); + //-------------------------------------------------------------------- + // TestInstance + //-------------------------------------------------------------------- + Logical + TestInstance() const; + + //-------------------------------------------------------------------- + // CreateL4GaugeImageStream + //-------------------------------------------------------------------- + static ResourceDescription::ResourceID + CreateL4GaugeImageStream( + ResourceFile *resource_file, + const char *model_name, + NotationFile *model_file, + const ResourceDirectories *directories + ); + + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + void + Draw( + Scalar LOD_value, // smaller = more detail (1.0 = 'normal') + Scalar scale_value, // metersPerPixel + GraphicsView *graphics_view, + int default_color, + AffineMatrix &localToView, + int boxed_color = 0 + ); + + protected: + static Logical + MemoryStreamWrite( + MemoryStream *mem_stream, + NotationFile *gim_file + ); + + //==================================================================== + // Protected data + //==================================================================== + int + vertexCount, // number of vertices in vertexArray + LODCount; // number of seperate LOD's + Point3D + *vertexArray; // pointer to array of vertices + Scalar + *LODScales; // pointer to array of scalar 'scale' values + L4GaugeImageList + **LODList; + // LODList points to an array of pointers to + // L4GaugeImageLists. + }; + + //####################################################################### + // L4GaugeImageList + //####################################################################### + class L4GaugeImageList SIGNATURED + { + friend class L4GaugeImage; + + protected: + //-------------------------------------------------------------------- + // Create L4GaugeList from memory stream + //-------------------------------------------------------------------- + L4GaugeImageList(MemoryStream *mem_stream); + + //-------------------------------------------------------------------- + // Destructor + //-------------------------------------------------------------------- + ~L4GaugeImageList(); + //-------------------------------------------------------------------- + // TestInstance + //-------------------------------------------------------------------- + Logical + TestInstance() const; + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + static Logical + MemoryStreamWrite( + MemoryStream *mem_stream, + NotationFile *gim_file, + const char *page_name + ); + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + void + Draw( + GraphicsView *graphics_view, + int default_color, + AffineMatrix &localToView, + Point3D *untransformed_vertex_array, + Point3D *transformed_vertex_array, + Logical *transformed_flag_array, + Scalar scale_factor, + int boxed_color + ); + + //==================================================================== + // Protected data + //==================================================================== + int + primitiveCount; // number of primitives in primitiveList + L4GaugeImagePrimitive + **primitiveList; + // primitiveList points to an array of pointers to + // L4GaugeImagePrimitives. + }; + + //####################################################################### + // L4GaugeImagePrimitive + //####################################################################### + class L4GaugeImagePrimitive SIGNATURED + { + friend class L4GaugeImageList; + + protected: + //-------------------------------------------------------------------- + // Create L4GaugeImagePrimitive from memory stream + //-------------------------------------------------------------------- + L4GaugeImagePrimitive(MemoryStream *mem_stream); + static int + CreateL4GaugeImagePrimitiveResource( + NotationFile *gim_file, + const char *gim_name, + const ResourceDirectories *directories, + char *primitive_data, + L4GaugeImagePrimitiveResource *prim_res + ); + + //-------------------------------------------------------------------- + // Destructor + //-------------------------------------------------------------------- + ~L4GaugeImagePrimitive(); + //-------------------------------------------------------------------- + // TestInstance + //-------------------------------------------------------------------- + Logical + TestInstance() const; + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + static Logical + MemoryStreamWrite( + MemoryStream *mem_stream, + const char *type_name, + const char *data + ); + + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + void + Draw( + GraphicsView *graphics_view, + int default_color, + AffineMatrix &localToView, + Point3D *untransformed_vertex_array, + Point3D *transformed_vertex_array, + Logical *transformed_flag_array, + Scalar scale_factor, + Rectangle2D *bounds + ); + + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + void + TransformVertex( + AffineMatrix &local_to_view, + Point3D &untransformed_vertex, + Point3D *transformed_vertex, + Logical &transformed_flag, + Scalar scale_factor, + Rectangle2D *bounds + ); + + //-------------------------------------------------------------------- + // These are the supported attribute types. + //-------------------------------------------------------------------- + enum + { + attributeNormal=0, + attributeUnscaled=0x0001 + }; + //-------------------------------------------------------------------- + // These are the supported primitive types. + //-------------------------------------------------------------------- + enum primitiveType + { + primitiveVector=0, + numberOfTypes + }; + + //==================================================================== + // Protected data + //==================================================================== + int + attributes, // general attributes + color; // a specially parsed attribute + + primitiveType + type; // the primitive's type + + union + { + //-------------------------------- + // type = primitiveVector + //-------------------------------- + struct + { + int + indexCount, // the number of indices + *indexList; // pointer to an array of indices + } + vector; + } + data; + + }; + +#endif + diff --git a/CODE/RP/MUNGA_L4/L4GAUIMM.HPP b/CODE/RP/MUNGA_L4/L4GAUIMM.HPP new file mode 100644 index 0000000..7d2d545 --- /dev/null +++ b/CODE/RP/MUNGA_L4/L4GAUIMM.HPP @@ -0,0 +1,7 @@ +//===========================================================================// +// File: l4gaures.hpp // +// Project: MUNGA Brick: Gauge Renderer Manager // +// Contents: // +//===========================================================================// + +// OBSOLETED ON 8-4-95 by cpb. Functionality now contained in L4WRHOUS.HPP diff --git a/CODE/RP/MUNGA_L4/L4GAUTUL.CPP b/CODE/RP/MUNGA_L4/L4GAUTUL.CPP new file mode 100644 index 0000000..90ea793 --- /dev/null +++ b/CODE/RP/MUNGA_L4/L4GAUTUL.CPP @@ -0,0 +1,122 @@ +//===========================================================================// +// File: vectlist.cpp // +// Project: MUNGA Brick: Gauge Renderer // +// Contents: // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 05/19/95 CPB Initial coding. // +// 06/01/95 CPB Resourcified. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. All rights reserved // +// PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#include + +#if !defined(L4GAUIMA_HPP) +# include +#endif + +#if !defined(GAUGALRM_HPP) +# include +#endif + +#if !defined(L4TOOL_HPP) +# include +#endif + +ResourceDescription::ResourceID + L4Tool::CreateModelGaugeImageStreamResource( + ResourceFile *resource_file, + const char *model_name, + NotationFile *model_file, + const ResourceDirectories *directories + ) +{ + return + L4GaugeImage::CreateL4GaugeImageStream( + resource_file, + model_name, + model_file, + directories + ); +} + +ResourceDescription::ResourceID + L4Tool::CreateModelGaugeMissionReviewStreamResource( + ResourceFile *resource_file, + const char *model_name, + NotationFile *model_file, + const ResourceDirectories */*directories*/ + ) +{ + Check(resource_file); + Check_Pointer(model_name); + Check(model_file); + //Check_Pointer(directories); + + ResourceDescription::ResourceID + res_id = ResourceDescription::NullResourceID; + + //---------------------------------------------------------------------- + // Check to see if the model has a mission review page + //---------------------------------------------------------------------- + const char + *pixelmap_name; + + if ( + model_file->GetEntry( + "gaugeMissionReview", + "pixelmap", + &pixelmap_name + ) + ) + { + //------------------------------------------------------------- + // Create a dynamic memory stream, write out the data + //------------------------------------------------------------- + DynamicMemoryStream + *stream = new DynamicMemoryStream(); + + Check(stream); + Register_Object(stream); + + int + length = strlen(pixelmap_name); + MemoryStream_Write(stream, &length); + + for( ; length>0; --length, ++pixelmap_name) + { + MemoryStream_Write(stream, (char *) pixelmap_name); + } + //------------------------------------------------------------- + // Create the resource description, assign an ID + //------------------------------------------------------------- + ResourceDescription + *res_desc_stream = + resource_file->ResourceFile::AddResourceMemoryStream( + model_name, + ResourceDescription::GaugeMissionReviewStreamResourceType, + 1, + ResourceDescription::Preload, + stream + ); + + Check(res_desc_stream); + res_id = res_desc_stream->resourceID; + + Check(stream); + Unregister_Object(stream); + delete stream; + + cout << "GaugeMissionReview res_id = " << res_id << "\n"; + } + //------------------------------------------------------------- + // Return the new ResourceID + //------------------------------------------------------------- + Check_Fpu(); + return res_id; +} + + diff --git a/CODE/RP/MUNGA_L4/L4GREND.CPP b/CODE/RP/MUNGA_L4/L4GREND.CPP new file mode 100644 index 0000000..32b1d90 --- /dev/null +++ b/CODE/RP/MUNGA_L4/L4GREND.CPP @@ -0,0 +1,858 @@ +//===========================================================================// +// File: l4grend.cc // +// Project: MUNGA Brick: LBE4 Gauge Renderer // +// Contents: // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 02/10/95 CPB Initial coding. // +// 04/12/95 CPB Moved BuildGraphicsPorts in from RP/BTL4GRND.CPP. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. All rights reserved // +// PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(L4APP_HPP) +# include +#endif + +#if !defined(TIME_HPP) +# include // for profiling +#endif + +#if !defined(L4GREND_HPP) +# include +#endif + +#if !defined(L4GAUGE_HPP) +# include +#endif + +#if !defined(MISSION_HPP) +# include +#endif + +#if !defined(L4PLASMA_HPP) +# include +#endif + +#if !defined(NOTATION_HPP) +# include +#endif + +// #define LOCAL_TEST + +#if defined(LOCAL_TEST) +# define Test_Tell(n) cout << n +#else +# define Test_Tell(n) +#endif + +// +//############################################################################# +// L4MethodDescription list +//############################################################################# +// +MethodDescription + ChainToPrevious = METHOD_DESCRIPTION_CHAIN(NULL); // Null:end of chain + +MethodDescription + *L4MethodDescription[] = + { + &MakeConfigMethodDescription, + &MakeExternConfigMethodDescription, + &BackgroundReconfig::methodDescription, + &BackgroundLine::methodDescription, + &BackgroundRect::methodDescription, + &BackgroundFilledRect::methodDescription, + &BackgroundPixelmap::methodDescription, + &BackgroundBitmap::methodDescription, + &NumericDisplayScalar::methodDescription, + &NumericDisplaySpeed::methodDescription, + &NumericDisplayInteger::methodDescription, + &DigitalClock::methodDescription, + &RankAndScore::methodDescription, + &BarGraphSolidScalar::methodDescription, + &BarGraphPixelMapScalar::methodDescription, + &ColorState::methodDescription, + &TwoState::methodDescription, + &SegmentArcNormalized::methodDescription, + &ChainToPrevious + }; + +// +//############################################################################# +// L4GaugeRenderer +//############################################################################# +// +L4GaugeRenderer::L4GaugeRenderer(): + GaugeRenderer() +{ + // + //--------------------------------------------------------------------- + // Ensure that graphicsDisplay is NULL + //--------------------------------------------------------------------- + // + graphicsDisplay = NULL; + externalDisplay = NULL; + + palettesAreActive = True; + scrambleVideoFlag = False; + + char + *mode_string = getenv("L4GAUGE"); + // + //--------------------------------------------------------------------- + // NOTE that L4Application::Initialize() searches for the environment + // variable "L4GAUGE" to determine whether or not to create + // a gauge renderer. + //--------------------------------------------------------------------- + // + if (mode_string != NULL) + { + // + //--------------------------------------------------------------------- + // Attempt to initialize external display + //--------------------------------------------------------------------- + // + char + *plasma_string = getenv("L4PLASMA"); + + if (plasma_string != NULL) + { + if (strnicmp(plasma_string, "COM2", 4) == 0) + { + Tell("Plasma display created on COM2\n"); + externalDisplay = new PlasmaDisplay(PCS_COM2); + } + else + { + Tell("Plasma display created on COM1\n"); + externalDisplay = new PlasmaDisplay(PCS_COM1); + } + + if (externalDisplay != NULL) + { + Register_Object(externalDisplay); + } + } + // + //--------------------------------------------------------------------- + // Attempt to initialize main display + //--------------------------------------------------------------------- + //------------------------------------------------- + // Search notation file for specified resolution + //------------------------------------------------- + // + NotationFile + notation_file("GAUGE\\L4GAUGE.INI"); + + if (!notation_file.PageExists(mode_string)) + { + Tell("L4GaugeRenderer::L4GaugeRenderer - '" << + mode_string << + "' not found in L4GAUGE.INI!\n" + ); + } + else + { + // + //------------------------------------------------- + // Requested resolution exists, read parameters + //------------------------------------------------- + // + int + mode(0), + width(640), + height(480), + page_size(64), + gran(64), + bpl(640*2), + pfp(0), + special(0), + q(0); + + q += notation_file.GetEntry(mode_string, "mode", &mode); + q += notation_file.GetEntry(mode_string, "width", &width); + q += notation_file.GetEntry(mode_string, "height", &height); + q += notation_file.GetEntry(mode_string, "sizeInKB", &page_size); + q += notation_file.GetEntry(mode_string, "granularityInKB", &gran); + q += notation_file.GetEntry(mode_string, "bytesPerLine", &bpl); + q += notation_file.GetEntry(mode_string, "pageFcnPtr", &pfp); + q += notation_file.GetEntry(mode_string, "special", &special); + + if (q == 8) + { + graphicsDisplay = new + SVGA16( + mode, + width, + height, + page_size, + gran, + bpl, + pfp, + special + ); + if (graphicsDisplay != NULL) + { + Register_Object(graphicsDisplay); + } + } + } + } + Check_Fpu(); +} + +// +//############################################################################# +// ~L4GaugeRenderer +//############################################################################# +// +L4GaugeRenderer::~L4GaugeRenderer() +{ +# if defined (LOCAL_TEST) + Tell("L4GaugeRenderer::~L4GaugeRenderer()\n"); +# endif + Check(this); + + int i; + + //---------------------------------------------------- + // Make sure all gauges removed first + //---------------------------------------------------- + Remove(0); + //---------------------------------------------------- + // Delete the graphics ports + //---------------------------------------------------- + for(i=0; iUpdatePalette(); + } + + Check_Fpu(); +} + +// +//############################################################################# +// ExecuteImplementation +//############################################################################# +// +Logical + L4GaugeRenderer::ExecuteBackgroundDisplayUpdate() +{ + Check(this); + + Logical + result = False; // False == 'all done' + + //-------------------------------------------------------- + // Update external annunciator + // + // Allow the plasma display to continue if there's + // more background time available. + // + // This method is still called if taskmode is set to + // 'foreground'. If it's called in 'foreground' mode, + // it really means that we're still waiting for foreground + // to begin processing, so we might as well update the + // external display (if needed). + //-------------------------------------------------------- + if (externalDisplay != NULL) + { + Check(externalDisplay); + result = externalDisplay->Update(False); // returns 'False' if done + } + //------------------------------------------------------- + // Update display ONLY in 'copy' mode + //-------------------------------------------------------- + if (taskMode == copy) + { + if (graphicsDisplay != NULL) + { + Check(graphicsDisplay); + + if (graphicsDisplay->Update(False) == False) + { + //-------------------------------------------------------- + // Tell executionImplementation that we're basically done. + //-------------------------------------------------------- + taskMode = foreground; + } + else + { + result = True; // We're not done yet! + } + } + } + return result; +} + +// +//############################################################################# +// NotifyOfNewInterestingEntity +//############################################################################# +// +void + L4GaugeRenderer::NotifyOfNewInterestingEntity( + Entity *interesting_entity + ) +{ + SET_GAUGE_RENDERER(); + Check(this); + Check(interesting_entity); + //---------------------------------------------- + // Make sure gaugeImage exists for entity + //---------------------------------------------- + Check(warehousePointer); + + ((L4Warehouse*)warehousePointer)->gaugeImageBin.Get( + interesting_entity->GetResourceID() + ); + //---------------------------------------------- + // Update gaugeRenderer + //---------------------------------------------- + GaugeRenderer::NotifyOfNewInterestingEntity(interesting_entity); + Check_Fpu(); + CLEAR_GAUGE_RENDERER(); +} + +// +//############################################################################# +// NotifyOfBecomingUninterestingEntity +//############################################################################# +// +void + L4GaugeRenderer::NotifyOfBecomingUninterestingEntity( + Entity *uninteresting_entity + ) +{ + SET_GAUGE_RENDERER(); + Check(this); + Check(uninteresting_entity); + //---------------------------------------------- + // Remove gaugeImage if no longer used + //---------------------------------------------- + Check(warehousePointer); + + ((L4Warehouse*)warehousePointer)->gaugeImageBin.Release( + uninteresting_entity->GetResourceID() + ); + //---------------------------------------------- + // Update gaugeRenderer + //---------------------------------------------- + GaugeRenderer::NotifyOfBecomingUninterestingEntity(uninteresting_entity); + Check_Fpu(); + CLEAR_GAUGE_RENDERER(); +} + +// +//############################################################################# +// BuildGraphicsPort +//############################################################################# +// +void + L4GaugeRenderer::BuildGraphicsPort( + int port_number, + const char *name, + int rotation, + int bitAllocation, + SVGA16::PaletteID palette_ID, + L4GraphicsPort::ChannelEnableID enable_ID, + Palette8 *palette + ) +{ + Test_Tell("L4GaugeRenderer::BuildGraphicsPort\n"); + Check(this); + + if (graphicsDisplay != NULL) + { + Test_Tell("...non-NULL display\n"); + Verify(port_number < maximumGraphicsPorts); + Verify(port_number >= 0); + Test_Tell("...port_number= " << port_number << "\n"); + // + //--------------------------------------------------------- + // If it already exists, delete it + //--------------------------------------------------------- + // + L4GraphicsPort + *graphics_port = (L4GraphicsPort *) graphicsPort[port_number]; + + if (graphics_port != NULL) + { + Test_Tell("...deleting existing port\n"); + Check(graphics_port); + Unregister_Object(graphics_port); + delete graphics_port; + } + // + //--------------------------------------------------------- + // Attempt to create it + //--------------------------------------------------------- + // + graphicsPort[port_number] = new L4GraphicsPort( + (Video16BitBuffered *) graphicsDisplay, + name, + rotation, + bitAllocation, + palette_ID, + enable_ID + ); + + graphics_port = (L4GraphicsPort *) graphicsPort[port_number]; + + Test_Tell("...new port at " << graphics_port << "\n"); + // + //--------------------------------------------------------- + // If created, register it and build the palette + //--------------------------------------------------------- + // + if (graphics_port != NULL) + { + Check(graphics_port); + Register_Object(graphics_port); + // + // Set the palette for the port + // (Note: secondary uses lowest 8 bits) + // + if ((bitAllocation > 0) && (bitAllocation < 0x0100)) + { + Test_Tell("...secondary\n"); + graphics_port->SetSecondaryPalette(palette); + } + else + { + Test_Tell("...auxiliary\n"); + graphics_port->SetAuxiliaryPalette(); + } + } + } + Check_Fpu(); +} + +// +//############################################################################# +// RemapGraphicsPort +//############################################################################# +// +void + L4GaugeRenderer::RemapGraphicsPort( + int port_number, + SVGA16::PaletteID palette_ID, + L4GraphicsPort::ChannelEnableID enable_ID, + Palette8 *palette + ) +{ + Check(this); + Test_Tell("L4GaugeRenderer::RemapGraphicsPort\n"); + + if (graphicsDisplay != NULL) + { + Test_Tell("...non-NULL display\n"); + Verify(port_number < maximumGraphicsPorts); + Verify(port_number >= 0); + Test_Tell("...port_number= " << port_number << "\n"); + //--------------------------------------------------------- + // If it exists, change the palette ID and set the palette + //--------------------------------------------------------- + L4GraphicsPort + *graphics_port = (L4GraphicsPort *) graphicsPort[port_number]; + + if (graphics_port != NULL) + { + Check(graphics_port); + // + // Set the palette ID + // + graphics_port->SetPaletteID(palette_ID); + graphics_port->SetEnableID(enable_ID); + + // + // Set the palette for the port + // (Note: secondary uses lowest 8 bits) + // + + int + bit_mask = graphics_port->GetBitMask(); + + if (bit_mask & 0x00FF) // must be secondary + { + Test_Tell("...secondary\n"); + Verify(palette != NULL); + graphics_port->SetSecondaryPalette(palette); + } + else + { + Test_Tell("...auxiliary\n"); + graphics_port->SetAuxiliaryPalette(); + } + } + } + Check_Fpu(); +} + +// +//############################################################################# +// BuildExternalGraphicsPort +//############################################################################# +// +void + L4GaugeRenderer::BuildExternalGraphicsPort( + int port_number, + const char *name, + int /*bitAllocation*/ + ) +{ + Check(this); + Test_Tell( + "L4GaugeRenderer::BuildExternalGraphicsPort(" << port_number << ")\n" + ); + + if (externalDisplay != NULL) + { + Test_Tell("...non-NULL display\n"); + Verify(port_number < maximumGraphicsPorts); + Verify(port_number >= 0); + Test_Tell("...port_number= " << port_number << "\n"); + // + //--------------------------------------------------------- + // If it already exists, delete it + //--------------------------------------------------------- + // + L4GraphicsPort + *graphics_port = (L4GraphicsPort *) graphicsPort[port_number]; + + if (graphics_port != NULL) + { + Test_Tell("...deleting existing port\n"); + Check(graphics_port); + Unregister_Object(graphics_port); + delete graphics_port; + } + // + //--------------------------------------------------------- + // Attempt to create it + //--------------------------------------------------------- + // + graphicsPort[port_number] = new L4BytePort( + (Video8BitBuffered *) externalDisplay, + name, + 0 // rotation + ); + + graphics_port = (L4GraphicsPort *) graphicsPort[port_number]; + + Test_Tell("...new port at " << graphics_port << "\n"); + // + //--------------------------------------------------------- + // If created, register it + //--------------------------------------------------------- + // + if (graphics_port != NULL) + { + Check(graphics_port); + Register_Object(graphics_port); + } + } + Check_Fpu(); +} + +// +//############################################################################# +// FadeToWhite, FadeToGame +//############################################################################# +// +void + L4GaugeRenderer::FadeToWhite(Scalar number_of_seconds) +{ + Check(this); + Verify(number_of_seconds >= 0.0); // zero is allowed (instant change) + +// cout << "L4GaugeRenderer::FadeToWhite(" << number_of_seconds << ")\n"; + + if (graphicsDisplay != NULL) + { + Check(graphicsDisplay); + ((SVGA16 *)graphicsDisplay)->FadeToWhite(number_of_seconds); + } + Check_Fpu(); +} + +void + L4GaugeRenderer::FadeToNormal(Scalar number_of_seconds) +{ + Check(this); + Verify(number_of_seconds >= 0.0); // zero is allowed (instant change) + +// cout << "L4GaugeRenderer::FadeToNormal(" << number_of_seconds << ")\n"; + + if (graphicsDisplay != NULL) + { + Check(graphicsDisplay); + ((SVGA16 *)graphicsDisplay)->FadeToPalettes(number_of_seconds); + } + Check_Fpu(); +} + +// +//############################################################################# +// Configure +//############################################################################# +// +void + L4GaugeRenderer::ConfigureForModel( + const char *configuration_name, + Entity *entity + ) +{ + Check(this); + Check_Pointer(configuration_name); + + Test_Tell( + "L4GaugeRenderer::ConfigureForModel(" << + configuration_name << ", " << + entity << ")\n" + ); + + Check(application); + Check(entity); + + Mission + *mission = application->GetCurrentMission(); + Check(mission); + + const char + *model_name = mission->GetGameModel(); + Check_Pointer(model_name); + + char + full_name[64]; + + Str_Copy(full_name, model_name, sizeof(full_name)); + Str_Cat(full_name, configuration_name, sizeof(full_name)); + + Test_Tell( + "L4GaugeRenderer::ConfigureForModel, full_name=" << full_name << + ")\n" + ); + + Configure(full_name, entity); + Check_Fpu(); +} + +// +//############################################################################# +// SpecialEffect +//############################################################################# +// +void + L4GaugeRenderer::SpecialEffect( + VideoEffectType type, + Scalar duration + ) +{ + Check(this); + + switch (type) + { + case scrambleVideo: + if (graphicsDisplay != NULL) + { + scrambleVideoFlag = True; + scrambleVideoTimeout = ((Scalar)Now()) + duration; + + Check(graphicsDisplay); + ((SVGA16*) graphicsDisplay)->FunkyVideo(True); + } + break; + + // other modes go here + + } + Check_Fpu(); +} + +void + L4GaugeRenderer::ProcessVideoEffects() +{ + Check(this); + Check(graphicsDisplay); + + Time + now = Now(); + + if (scrambleVideoFlag) + { + if (now >= scrambleVideoTimeout) + { + scrambleVideoFlag = False; + ((SVGA16*) graphicsDisplay)->FunkyVideo(False); + } + } + + Check_Fpu(); +} + +//-------------------------------------------------------------------- +// Profiling support +//-------------------------------------------------------------------- +Scalar + L4GaugeRenderer::GetCurrentFramePercentage() +{ + Check(this); + return Get_Frame_Percent_Used(); +} + + + + diff --git a/CODE/RP/MUNGA_L4/L4GREND.HPP b/CODE/RP/MUNGA_L4/L4GREND.HPP new file mode 100644 index 0000000..d96d9af --- /dev/null +++ b/CODE/RP/MUNGA_L4/L4GREND.HPP @@ -0,0 +1,182 @@ +//===========================================================================// +// File: l4gauge.hh // +// Project: MUNGA Brick: LBE4 Gauge Renderer // +// Contents: // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 02/10/95 CPB Initial coding. // +// 04/12/95 CPB Moved BuildGraphicsPorts in from RP/BTL4GRND.HPP. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. All rights reserved // +// PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(L4GREND_HPP) +# define L4GREND_HPP + +# if !defined(GAUGREND_HPP) +# include +# endif + +# if !defined(L4VB16_HPP) +# include +# endif + +# if !defined(L4PLASMA_HPP) +# include +# endif + +# if !defined(L4GAUIMA_HPP) +# include +# endif + +# if !defined(L4WRHOUS_HPP) +# include +# endif + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~ L4GaugeRenderer ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class L4GaugeRenderer: + public GaugeRenderer + { + public: + + //-------------------------------------------------------------------- + // Construction, Destruction, Testing + //-------------------------------------------------------------------- + L4GaugeRenderer(); + ~L4GaugeRenderer(); + + void + LocalEmergencyShutdown(); + + Logical + TestInstance() const; + + //-------------------------------------------------------------------- + // Profiling support + //-------------------------------------------------------------------- + protected: + Scalar + GetCurrentFramePercentage(); + //-------------------------------------------------------------------- + // GraphicsPort methods + //-------------------------------------------------------------------- + public: + void + BuildGraphicsPort( + int port_number, + const char *name, + int rotation, + int bitAllocation, + SVGA16::PaletteID palette_ID, + L4GraphicsPort::ChannelEnableID enable_ID, + Palette8 *palette + ); + + void + RemapGraphicsPort( + int port_number, + SVGA16::PaletteID palette_ID, + L4GraphicsPort::ChannelEnableID enable_ID, + Palette8 *palette + ); + + void + BuildExternalGraphicsPort( + int port_number, + const char *name, + int bitAllocation + ); + + // + //-------------------------------------------------------------------- + // 'palette ramping' + //-------------------------------------------------------------------- + // + void + FadeToWhite(Scalar number_of_seconds); + void + FadeToNormal(Scalar number_of_seconds); + // + //-------------------------------------------------------------------- + // Accessors + //-------------------------------------------------------------------- + // + GraphicsDisplay + *GetExternalDisplay() + { + Check(this); + return externalDisplay; + } + + // + //-------------------------------------------------------------------- + // Configuration + //-------------------------------------------------------------------- + // + void + ConfigureForModel( + const char *configuration_name, + Entity *entity + ); + // + //-------------------------------------------------------------------- + // ExecuteImplementation + //-------------------------------------------------------------------- + // + protected: + void + ExecuteForeground(); + Logical + ExecuteBackgroundDisplayUpdate(); + void + LoadMissionImplementation( + Mission *mission + ); + virtual void + NotifyOfNewInterestingEntity(Entity *entity); + virtual void + NotifyOfBecomingUninterestingEntity(Entity *entity); + void + ShutdownImplementation(); + void + SuspendImplementation(); + void + ResumeImplementation(); + // + //-------------------------------------------------------------------- + // Video effects + //-------------------------------------------------------------------- + // + public: + void + SpecialEffect(VideoEffectType type, Scalar duration); + + protected: + + void + ProcessVideoEffects(); + + // + //-------------------------------------------------------------------- + // Protected data + //-------------------------------------------------------------------- + // + protected: + Logical + palettesAreActive; + + GraphicsDisplay + *graphicsDisplay, + *externalDisplay; + + Logical + scrambleVideoFlag; + Time + scrambleVideoTimeout; + }; + + +#endif diff --git a/CODE/RP/MUNGA_L4/L4HOST.CPP b/CODE/RP/MUNGA_L4/L4HOST.CPP new file mode 100644 index 0000000..bde4310 --- /dev/null +++ b/CODE/RP/MUNGA_L4/L4HOST.CPP @@ -0,0 +1,61 @@ +//===========================================================================// +// File: l4host.cpp // +// Project: MUNGA Brick: Connection Library // +// Contents: additional L4 data types and functions for hosts // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 04/09/95 GAC Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(L4HOST_HPP) +# include +#endif + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Constructor for l4host +// +L4Host::L4Host( + HostID host_ID, + HostType host_type, + NetworkAddress network_address, + unsigned long network_socket, + const CString &net_name): + Host( + host_ID, + host_type, + network_address), + SymbolicName(net_name) +{ + NetworkSocket = network_socket; + // ConnectStatus = NoNetworkConnectionStatus; + pad_head = 0; + pad_tail = 0; + pad_size = L4HOST_PAD_BUFFER_SIZE; + #if defined(TRACE_SEND_BUFFER) + sprintf(sendBufferTraceName,"Send Buffer %d",network_address&0xff); + sendBufferTrace = + new TraceOf( + sendBufferTraceName, + 0, + Trace::IntegerType, + TraceSample::IntegerSnapshot + ); + Register_Object(sendBufferTrace); + sendBufferTrace->TakeSnapshot(4096); + #endif +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Destructor for l4host +// +L4Host::~L4Host() +{ +} + diff --git a/CODE/RP/MUNGA_L4/L4HOST.HPP b/CODE/RP/MUNGA_L4/L4HOST.HPP new file mode 100644 index 0000000..c9bfcb6 --- /dev/null +++ b/CODE/RP/MUNGA_L4/L4HOST.HPP @@ -0,0 +1,115 @@ +//===========================================================================// +// File: l4host.hpp // +// Project: MUNGA Brick: Connection Library // +// Contents: additional L4 data types and functions for hosts // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 04/09/95 GAC Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(L4HOST_HPP) +# define L4HOST_HPP + +# if !defined(HOST_HPP) +# include "host.hpp" +# endif + +# if !defined(CSTR_HPP) +# include "cstr.hpp" +# endif + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ L4Host ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +#define L4HOST_PAD_BUFFER_SIZE 4096 + + // + //-------------------------------------------------------------------- + // L4Host + // + // Derived from Host, so we can add a place to store the host's network + // socket pointer. + //-------------------------------------------------------------------- + // + + class L4Host: + public Host + { + public: + // + //-------------------------------------------------------------------- + // Construction, Destruction, and testing + //-------------------------------------------------------------------- + // + L4Host( + HostID host_ID, + HostType host_type, + NetworkAddress network_address, + unsigned long NetworkSocket, + const CString &net_name); + ~L4Host(); + // + //-------------------------------------------------------------------- + // Accessors + //-------------------------------------------------------------------- + // +#if 0 + enum ConnectionStatus + { + NoNetworkConnectionStatus, // Initial state, host just created with no net link + OpeningConnectionStatus, // Waiting for completion of an active open to this host + ListeningConnectionStatus, // Waiting for this host to connect to us + OnLineConnectionStatus // Host is on-line and ready + }; + ConnectionStatus + GetConnectStatus() + {return ConnectStatus;} + void + SetConnectStatus(ConnectionStatus new_status) + {ConnectStatus = new_status;} +#endif + unsigned long + GetNetworkSocket() + {return NetworkSocket;} + void + SetNetworkSocket(unsigned long net_socket) + {NetworkSocket = net_socket;} + CString + GetSymbolicName() + {return SymbolicName;} + // + // Nasty to make these things public but I'll have to clean them later + // + public: + #if defined(TRACE_SEND_BUFFER) + TraceOf + *sendBufferTrace; + char + sendBufferTraceName[50]; + #endif + char + pad_buffer[L4HOST_PAD_BUFFER_SIZE]; // a place to buffer up messages + unsigned short + pad_size, // total size of the pad buffer + pad_head, // circular buffer pointers for keeping track of the + pad_tail; // data in the pad buffer. + // + //-------------------------------------------------------------------- + // Private data + //-------------------------------------------------------------------- + // + private: + unsigned long + NetworkSocket; // address of the network socket this host uses +#if 0 + ConnectionStatus + ConnectStatus; // current connection status +#endif + CString + SymbolicName; // Text version of net address from egg + }; +#endif diff --git a/CODE/RP/MUNGA_L4/L4ICOM.CPP b/CODE/RP/MUNGA_L4/L4ICOM.CPP new file mode 100644 index 0000000..4a56209 --- /dev/null +++ b/CODE/RP/MUNGA_L4/L4ICOM.CPP @@ -0,0 +1,1054 @@ +//===========================================================================// +// File: icom.cpp // +// Project: MUNGA Brick: Controls // +// Contents: Interface specification for intercom class // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 08/18/95 CPB Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(L4ICOM_HPP) +# include +#endif + +#if !defined(L4HOST_HPP) +# include +#endif + +#if !defined(L4APP_HPP) +# include +#endif + +#if !defined(L4GREND_HPP) +# include +#endif + +#if !defined(HOSTMGR_HPP) +# include +#endif + +//----------------------------------------------------------- +// Timing values (in seconds) for CB button control +// All values derived experimentally +//----------------------------------------------------------- +#define SEEK_STEP_TIME 0.28 // seek step delay +#define NORMAL_STEP_TIME 0.05 // normal step delay +#define BEEP_TIME 0.2 // length of beep + +//----------------------------------------------------------- +// Special code & data to test recalibration: +// set to '1' to create and use 'home' button +//----------------------------------------------------------- +#if 1 +# define HOMETEST + static ControlsButton + resetButton; + enum + { + resetButtonNumber = LBE4ControlsManager::ButtonSecondary6 + }; +#endif +//----------------------------------------------------------- +// Debugging aid +//----------------------------------------------------------- +#if 0 +# define LOCAL_TEST +# define Test_Tell(n) cout << n << flush; +#else +# define Test_Tell(n) +#endif + +//----------------------------------------------------------- +// Button/lamp assignments +//----------------------------------------------------------- +static int + channelButtonNumber[L4Icom::numberOfChannels] = + { + LBE4ControlsManager::ButtonAuxUpperCenter1, + LBE4ControlsManager::ButtonAuxUpperCenter2, + LBE4ControlsManager::ButtonAuxUpperCenter3, + LBE4ControlsManager::ButtonAuxUpperCenter4, + LBE4ControlsManager::ButtonAuxUpperCenter5, + LBE4ControlsManager::ButtonAuxUpperCenter6, + LBE4ControlsManager::ButtonAuxUpperCenter7 + }; + +#if 0 + enum + { + // + // TEST I/O + // + pttButtonNumber = LBE4ControlsManager::ButtonAuxUpperCenter8, + homeSensorInput = LBE4ControlsManager::ButtonPanic, + pttRelayOutput = LBE4ControlsManager::ButtonAuxLowerRight5, + ampEnableOutput = LBE4ControlsManager::ButtonAuxLowerRight6, + IncrementRelayOutput = LBE4ControlsManager::ButtonAuxLowerRight7, + DecrementRelayOutput = LBE4ControlsManager::ButtonAuxLowerRight8 + }; +#else + enum + { + // + // These are the "real" assignments + // + pttButtonNumber = LBE4ControlsManager::ButtonAuxUpperCenter8, + homeSensorInput = LBE4ControlsManager::ButtonIcomSensor, + pttRelayOutput = LBE4ControlsManager::LampIcomPTTRelay, + ampEnableOutput = LBE4ControlsManager::LampIcomAmpEnable, + IncrementRelayOutput = LBE4ControlsManager::LampIcomIncRelay, + DecrementRelayOutput = LBE4ControlsManager::LampIcomDecRelay + }; +#endif + +//----------------------------------------------------------- +// Handy routine to mute audio output +//----------------------------------------------------------- +void + amp_enable(LBE4ControlsManager * controls_manager, Logical on) +{ + controls_manager->SetLamp( + ampEnableOutput, + (on ? + LBE4ControlsManager::LampSolidBright : + LBE4ControlsManager::LampSolidOff + ) + ); + Check_Fpu(); +} + +//########################################################################## +//############################ L4Icom ################################ +//########################################################################## + +//--------------------------------------------------------------------- +// Creator +//--------------------------------------------------------------------- +L4Icom::L4Icom(HostID host_id, int channel_offset) +: +Icom(host_id,0) +{ + Test_Tell("L4Icom::L4Icom(" << host_id << ", " << channel_offset << ")\n"); + Check_Pointer(this); + //-------------------------------------- + // Initialize values + //-------------------------------------- + channelOffset = channel_offset; + + Check(application); + controlsManager = (LBE4ControlsManager *) + application->GetControlsManager(); + Check(controlsManager); + + hardwareChannel = Icom::undefinedChannel; + previousChannel = Icom::undefinedChannel; + previousPTTStatus = False; + //-------------------------------------- + // Clear controls inputs + //-------------------------------------- + homeSensor = 0; + channelButton = 0; + pttButton = 0; + //-------------------------------------- + // Enable only if allowed + //-------------------------------------- + char + *controlString(getenv("L4INTERCOM")); + + if (controlString != NULL) + { + //-------------------------------------- + // Seek channel 40, move to 1st channel + //-------------------------------------- + Recalibrate(); + } + else + { + //-------------------------------------- + // Don't even try. + //-------------------------------------- + state = disabled; + } + + Check_Fpu(); +} + +//--------------------------------------------------------------------- +// Destructor +//--------------------------------------------------------------------- +L4Icom::~L4Icom() +{ + Test_Tell("L4Icom::~L4Icom()\n"); + Check(this); + //-------------------------------------- + // Make sure intercom is turned off + //-------------------------------------- + SetPTTStatusValue(False); + amp_enable(controlsManager, False); + //-------------------------------------- + // Make note of failure state + //-------------------------------------- + if (state == failed) + { + Tell("L4Icom::~L4Icom(), Icom had failed!\n"); + NotationFile + *failureFile = new NotationFile("FAILURE.LOG"); + Check(failureFile); + + failureFile->SetEntry("Intercom","seekError",1); + + delete failureFile; + } + //-------------------------------------- + // The plug automatically unlinks + // from the L4Icom Manager upon deletion. + //-------------------------------------- + Check_Fpu(); +} + +//--------------------------------------------------------------------- +// Test instance +//--------------------------------------------------------------------- +Logical + L4Icom::TestInstance() const +{ + Icom::TestInstance(); + Check_Fpu(); + return True; +} + +//--------------------------------------------------------------------- +// SetChannelValue +//--------------------------------------------------------------------- +void + L4Icom::SetChannelValue(int new_channel) +{ + Test_Tell("L4Icom::SetChannelValue(" << new_channel << ")\n"); + Check(this); + + if ((state != disabled) && (state != failed)) + { + //-------------------------------------- + // Call overridden method + //-------------------------------------- + Icom::SetChannelValue(new_channel); + } + + Check_Fpu(); +} + +//--------------------------------------------------------------------- +// Set PTTStatusValue +//--------------------------------------------------------------------- +void + L4Icom::SetPTTStatusValue(Logical new_ptt) +{ + Test_Tell("L4Icom::SetPTTStatusValue(" << new_ptt << ")\n"); + Check(this); + + if (state == onChannel) + { + //-------------------------------------- + // Call overridden method + //-------------------------------------- + Icom::SetPTTStatusValue(new_ptt); + //-------------------------------------- + // Turn on/off PTT output and lamp + //-------------------------------------- + if (previousPTTStatus != PTTStatus) + { + previousPTTStatus = PTTStatus; + + Check(controlsManager); + int + relay_output = + PTTStatus ? + LBE4ControlsManager::LampSolidBright : + LBE4ControlsManager::LampSolidOff; + + controlsManager->SetLamp(pttRelayOutput, relay_output); + + controlsManager->SetLamp( + pttButtonNumber, + (PTTStatus ? + LBE4ControlsManager::LampSolidBright : + LBE4ControlsManager::LampSolidDim + ) + ); + } + } + + Check_Fpu(); +} + +//--------------------------------------------------------------------- +// SetPACaptiveValue +//--------------------------------------------------------------------- +void + L4Icom::SetPACaptiveValue(Logical new_pa) +{ + Test_Tell("L4Icom::SetPACaptiveValue(" << new_pa << ")\n"); + Check(this); + + //----------------------------------------------- + // If entering captivity, disable channel select + //----------------------------------------------- + if (new_pa && (!PACaptive)) + { + //-------------------------------------- + // Call overridden method + //-------------------------------------- + Icom::SetPACaptiveValue(new_pa); + //-------------------------------------- + // turn off PTT lamp + //-------------------------------------- + controlsManager->SetLamp( + pttButtonNumber, + LBE4ControlsManager::LampSolidOff + ); + //-------------------------------------- + // Turn off channel indicators + //-------------------------------------- + ChannelSelectState(False); + } + //----------------------------------------------- + // If exiting captivity, enable channel select + //----------------------------------------------- + if ((!new_pa) && PACaptive) + { + //-------------------------------------- + // Call overridden method + //-------------------------------------- + // This must be done BEFORE + // attempting to set the PTT status! + // (hence the duplicated call) + //-------------------------------------- + Icom::SetPACaptiveValue(new_pa); + + ChannelSelectState(True); + previousPTTStatus = 2; // non-Logical value, forces update + SetPTTStatusValue(PTTStatus); // force hardware update + } + + Check_Fpu(); +} + +//--------------------------------------------------------------------- +// Recalibrate +//--------------------------------------------------------------------- +void + L4Icom::Recalibrate() +{ + Test_Tell("L4Icom::Recalibrate()\n"); + Check(this); + + seekRequired = False; + timeAccumulator = 0.0; + seekCount = 84; // twice around plus a few more + ChannelSelectState(False); // Turn off selection lamps + amp_enable(controlsManager, False); // turn off the speaker + state = seek40; + + Check_Fpu(); +} + +//--------------------------------------------------------------------- +// Update +//--------------------------------------------------------------------- +void + L4Icom::Update(Scalar delta_t) +{ + Test_Tell("L4Icom::Update(" << delta_t << ")\n"); + Check(this); + + //------------------------------------------------------------------ + // Do nothing if disabled or failed! + //------------------------------------------------------------------ + if ((state == disabled) || (state == failed)) + { + Check_Fpu(); + return; + } + //------------------------------------------------------------------ + // PTT control + //------------------------------------------------------------------ + if (state == onChannel) + { + if (pttButton > 0) + { + SetPTTStatus(True); + pttButton = 0; + } + else if (pttButton < 0) + { + SetPTTStatus(False); + pttButton = 0; + } + } + else if (previousPTTStatus) + { + SetPTTStatus(False); + } + + //------------------------------------------------------------------ + // Channel selection + //------------------------------------------------------------------ + if (channelSelectEnabled) + { + //-------------------------------------- + // Process button if pressed + //-------------------------------------- + if (channelButton > 0) + { + //-------------------------------------- + // Convert button press to icom channel + //-------------------------------------- + int + button_number = channelButton - 1, // convert to button number + new_channel = Icom::undefinedChannel; + + for(int i=0; i 0) + { + //------------------------------------------- + // Found 40! + //------------------------------------------- + Test_Tell("--> reachedChannel\n"); + hardwareChannel = (40-1); + state = reachedChannel; + //------------------------------------------- + // Display auxiliary intercom labels + //------------------------------------------- + { + Check(application); + + L4GaugeRenderer + *gauge_renderer = ((L4Application *)application)-> + GetGaugeRenderer(); + Check(gauge_renderer); + + gauge_renderer->Configure("intercomEnable", (Entity *) NULL); + } + //------------------------------------------- + // Everybody starts up on the 'first' channel + //------------------------------------------- + if (PACaptive) + { + channelBeforePA = channelOffset; + } + else + { + ChannelSelectState(True); + SetChannel(channelOffset); + } + //------------------------------------------- + // Update the lamp display + //------------------------------------------- + ChannelStatusUpdate(); + } + //------------------------------------------- + // Try next channel + //------------------------------------------- + else + { + DecrementChannel(); + } + } + break; + + //--------------------------------------------------- + case offChannel: + if (WaitedLongEnough(NORMAL_STEP_TIME)) + { + int + delta = channel - hardwareChannel; + if (delta == 0) + { + state = reachedChannel; + } + else + { + //------------------------------------------- + // Choose direction, modulo 40 + //------------------------------------------- + // channel = desired channel + // hardwareChannel = current channel + //------------------------------------------- + if (delta > 20) + { + delta -= 40; + } + else if (delta < -20) + { + delta += 40; + } + + if (delta < 0) + { + DecrementChannel(); + } + else + { + IncrementChannel(); + } + //------------------------------------------- + // Update the lamp display + //------------------------------------------- + ChannelStatusUpdate(); + } + } + break; + + //--------------------------------------------------- + // reachedChannel: this is a delay to allow to CB + // to finish "beeping" before the audio is turned on. + //--------------------------------------------------- + case reachedChannel: + if (WaitedLongEnough(BEEP_TIME)) + { + Test_Tell("L4Icom::Update, reachedChannel --> onChannel\n"); + amp_enable(controlsManager, True); + state = onChannel; + } + break; + //--------------------------------------------------- + case onChannel: + Test_Tell("L4Icom::Update, onChannel\n"); + + if (channel != hardwareChannel) + { + state = offChannel; + timeAccumulator = NORMAL_STEP_TIME; // bypass the delay + amp_enable(controlsManager, False); // mute the output + } + break; + //--------------------------------------------------- + case disabled: + case failed: + break; + } + Check_Fpu(); +} + +//--------------------------------------------------------------------- +// LongEnough +//--------------------------------------------------------------------- +Logical + L4Icom::WaitedLongEnough(Scalar delay_time) +{ + Test_Tell("L4Icom::WaitedLongEnough(" << delay_time >> ") "); + Check(this); + + //------------------------------------------- + // Check to see if delayed long enough + //------------------------------------------- + if (timeAccumulator >= delay_time) + { + Test_Tell("long enough!\n"); + timeAccumulator = 0.0; + Check_Fpu(); + return True; + } + else + { + Test_Tell("\n"); + Check_Fpu(); + return False; + } +} + +//--------------------------------------------------------------------- +// IncrementChannel +//--------------------------------------------------------------------- +void + L4Icom::IncrementChannel() +{ + Test_Tell("L4Icom::IncrementChannel()\n"); + Check(this); + Check(controlsManager); + + //-------------------------------------- + // Increment the channel number counter + //-------------------------------------- + if (++hardwareChannel > (40-1)) + { + hardwareChannel = 0; + } + //-------------------------------------- + // Press the 'inc' button on the CB + //-------------------------------------- + controlsManager->SetLamp( + IncrementRelayOutput, + LBE4ControlsManager::LampSolidBright + ); + //-------------------------------------- + // ...and again, for a fixed delay + //-------------------------------------- + controlsManager->SetLamp( + IncrementRelayOutput, + LBE4ControlsManager::LampSolidBright + ); + //-------------------------------------- + // Release the 'inc' button on the CB + //-------------------------------------- + controlsManager->SetLamp( + IncrementRelayOutput, + LBE4ControlsManager::LampSolidOff + ); + Check_Fpu(); +} + +//--------------------------------------------------------------------- +// DecrementChannel +//--------------------------------------------------------------------- +void + L4Icom::DecrementChannel() +{ + Test_Tell("L4Icom::DecrementChannel()\n"); + Check(this); + Check(controlsManager); + + //-------------------------------------- + // Decrement the channel number counter + //-------------------------------------- + if (--hardwareChannel < 0) + { + hardwareChannel = (40-1); + } + //-------------------------------------- + // Press the 'dec' button on the CB + //-------------------------------------- + controlsManager->SetLamp( + DecrementRelayOutput, + LBE4ControlsManager::LampSolidBright + ); + //-------------------------------------- + // ...and again, for a fixed delay + //-------------------------------------- + controlsManager->SetLamp( + DecrementRelayOutput, + LBE4ControlsManager::LampSolidBright + ); + //-------------------------------------- + // Release the 'dec' button on the CB + //-------------------------------------- + controlsManager->SetLamp( + DecrementRelayOutput, + LBE4ControlsManager::LampSolidOff + ); + Check_Fpu(); +} + +//--------------------------------------------------------------------- +// ChannelStatusUpdate +//--------------------------------------------------------------------- +void + L4Icom::ChannelStatusUpdate() +{ + Test_Tell("L4Icom::ChannelStatusUpdate()\n"); + Check(this); + Check(controlsManager); + + int + logical_channel_number; + + if (channelSelectEnabled) + { + //-------------------------------------- + // Has the channel changed? + //-------------------------------------- + if (previousChannel != hardwareChannel) + { + //---------------------------------------- + // Yes. Is the previous channel undefined? + //---------------------------------------- + if (previousChannel != Icom::undefinedChannel) + { + //-------------------------------------- + // No, set previous button to dim + //-------------------------------------- + logical_channel_number = previousChannel - channelOffset; + if (logical_channel_number < L4Icom::numberOfChannels) + { + controlsManager->SetLamp( + channelButtonNumber[logical_channel_number], + LBE4ControlsManager::LampSolidDim + ); + } + } + previousChannel = hardwareChannel; + //-------------------------------------- + // Is the new channel undefined? + //-------------------------------------- + if (previousChannel != Icom::undefinedChannel) + { + //-------------------------------------- + // No, set current button to bright + //-------------------------------------- + logical_channel_number = hardwareChannel - channelOffset; + if (logical_channel_number < L4Icom::numberOfChannels) + { + controlsManager->SetLamp( + channelButtonNumber[logical_channel_number], + LBE4ControlsManager::LampSolidBright + ); + } + } + } + } + Check_Fpu(); +} + +//--------------------------------------------------------------------- +// ChannelSelectState +//--------------------------------------------------------------------- +void + L4Icom::ChannelSelectState(Logical state) +{ + Test_Tell("L4Icom::ChannelStatusUpdate(" << state << ")\n"); + Check(this); + Check(controlsManager); + + int + i, + logical_channel_number; + + if ((state != disabled) && (state != failed)) + { + channelSelectEnabled = True; + + for(i=0; iSetLamp( + channelButtonNumber[i], + (i==logical_channel_number ? + LBE4ControlsManager::LampSolidBright : + LBE4ControlsManager::LampSolidDim + ) + ); + } + } + else + { + channelSelectEnabled = False; + + for(i=0; iSetLamp( + channelButtonNumber[i], + LBE4ControlsManager::LampSolidOff + ); + } + } + Check_Fpu(); +} + +//########################################################################## +//######################## L4IcomManager ############################# +//########################################################################## + +//-------------------------------------------------------------------------- +// Virtual Data support +// + +Derivation + L4IcomManager::ClassDerivations( + IcomManager::ClassDerivations, + "L4IcomManager" + ); + +L4IcomManager::SharedData + L4IcomManager::DefaultData( + L4IcomManager::ClassDerivations, + L4IcomManager::MessageHandlers + ); + +//-------------------------------------------------------------------------- +// Creator +// + +L4IcomManager::L4IcomManager( + SharedData &shared_data +): + IcomManager(shared_data), + localIcom(NULL) +{ + Test_Tell("L4IcomManager::L4IcomManager()\n"); + Check_Pointer(this); + + previousUpdateTime = Now(); + + Check_Fpu(); +} + +//-------------------------------------------------------------------------- +// Destructor +// +L4IcomManager::~L4IcomManager() +{ + Test_Tell("L4IcomManager::~L4IcomManager()\n"); + Check(this); + + // We don't need to delete the local Icom object: it's a member + // of the instanceList in the IcomManager class, which is deleted + // by the IcomManager destructor. + + Check_Fpu(); +} + +//-------------------------------------------------------------------------- +Logical + L4IcomManager::TestInstance() const +{ + return IsDerivedFrom(ClassDerivations); +} + +//-------------------------------------------------------------------------- +L4Icom * + L4IcomManager::MakeIcom(HostID host_id, int /*unit_number*/) +{ + Test_Tell("L4IcomManager::MakeIcom(" << host_id << ")\n"); + Check(this); + + //------------------------------------------ + // Create, register icom object + //------------------------------------------ + L4Icom + *icom = new L4Icom(host_id, 0); // HACK - eventually set channel offset based on cockpit group! + Check(icom); + Register_Object(icom); + //------------------------------------------ + // Add to global list + //------------------------------------------ + instanceList.Add(icom); + //------------------------------------------ + // Get local host ID + // (we need to do because the local host is + // created quite late in the whole process) + //------------------------------------------ + Check(application); + HostManager + *host_manager = application->GetHostManager(); + Check(host_manager); + Host + *local_host = host_manager->GetLocalHost(); + Check(local_host); + HostID + local_host_id = local_host->GetHostID(); + //------------------------------------------ + // If assigned to a local host, make + // this intercom object local as well + //------------------------------------------ + Test_Tell( + "L4IcomManager::MakeIcom local_host_id = " << local_host_id << "\n" + ); + Test_Tell( + "L4IcomManager::MakeIcom host_id = " << host_id << "\n" + ); + if (host_id == local_host_id) + { + Test_Tell("L4IcomManager::MakeIcom, set local icom\n"); + //----------------------------------------------------------------- + // Set localIcom socket + //----------------------------------------------------------------- + Verify(localIcom.GetCurrent() == NULL); + localIcom.AddPlug(icom); + //----------------------------------------------------------------- + // Add connections + //----------------------------------------------------------------- +#if 0 + Check(icom->controlsManager); + ControlsUpdateManager + *button_pointer; + //------------------------------------------ + // Add connection to home sensor + //------------------------------------------ + button_pointer = &icom->controlsManager->buttonGroup[homeSensorInput]; + Check(button_pointer); + button_pointer->Add( + ModeManager::ModeAlwaysActive, &icom->homeSensor, icom + ); + //------------------------------------------ + // Add connections to channel buttons + //------------------------------------------ + for(int i=0; icontrolsManager->buttonGroup[channelButtonNumber[i]]; + Check(button_pointer); + button_pointer->Add( + L4ModeManager::ModeIntercom, &icom->channelButton, icom + ); + icom->controlsManager->MakeLinkedLamp(channelButtonNumber[i]); + } +# if defined(HOMETEST) + //------------------------------------------ + // Add connection to reset button + //------------------------------------------ + button_pointer = + &icom->controlsManager->buttonGroup[resetButtonNumber]; + Check(button_pointer); + button_pointer->Add( + ModeManager::ModeAlwaysActive, &resetButton, icom + ); + + resetButton = 0; +# endif + //------------------------------------------ + // Add connection to PTT button + //------------------------------------------ + button_pointer = &icom->controlsManager->buttonGroup[pttButtonNumber]; + Check(button_pointer); + button_pointer->Add( + ModeManager::ModeAlwaysActive, &icom->pttButton, icom + ); + icom->controlsManager->MakeLinkedLamp(pttButtonNumber); +#endif + } + + Check_Fpu(); + return icom; +} + +//-------------------------------------------------------------------------- +void + L4IcomManager::LoadMission(Mission *mission) +{ + Check(this); + IcomManager::LoadMission(mission); + Check_Fpu(); +} + +//-------------------------------------------------------------------------- +void + L4IcomManager::Shutdown() +{ + Check(this); + IcomManager::Shutdown(); + Check_Fpu(); +} + +//-------------------------------------------------------------------------- +void + L4IcomManager::Execute() +{ +// Test_Tell("L4IcomManager::Execute()\n"); + Check(this); + + Scalar + delta_t; + Time + right_now; + +# if defined(HOMETEST) + //------------------------------------------ + // If reset button pressed, recalibrate + //------------------------------------------ + if (resetButton > 0) + { + resetButton = 0; + + L4Icom + *local_icom = localIcom.GetCurrent(); + + if (local_icom != NULL) + { + cout << "L4IcomManager::Execute, Reset!!!!!\n"; + local_icom->Recalibrate(); + } + } +# endif + //------------------------------------------ + // Get time, generate delta_t + //------------------------------------------ + right_now = Now(); + delta_t = (Scalar) (right_now - previousUpdateTime); + + if (delta_t > 0.0) + { + previousUpdateTime = right_now; + //------------------------------------------ + // Process local icom object + //------------------------------------------ + L4Icom + *local_icom = localIcom.GetCurrent(); + + if (local_icom != NULL) + { + local_icom->Update(delta_t); + } + } + Check_Fpu(); +} diff --git a/CODE/RP/MUNGA_L4/L4ICOM.HPP b/CODE/RP/MUNGA_L4/L4ICOM.HPP new file mode 100644 index 0000000..8edc7be --- /dev/null +++ b/CODE/RP/MUNGA_L4/L4ICOM.HPP @@ -0,0 +1,194 @@ +//===========================================================================// +// File: icom.hpp // +// Project: MUNGA Brick: Controls // +// Contents: Interface specification for intercom class // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 08/14/95 CPB Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(L4ICOM_HPP) +# define L4ICOM_HPP + +# if !defined(ICOM_HPP) +# include +# endif + +# if !defined(L4CTRL_HPP) +# include +# endif + +# if !defined(TIME_HPP) +# include +# endif + + //########################################################################## + //############################ L4Icom ################################ + //########################################################################## + class L4Icom: + public Icom + { + friend class L4IcomManager; + + public: + L4Icom(HostID host_id, int channel_offset); + ~L4Icom(); // base destructor is virtual + Logical + TestInstance() const; + + //-------------------------------------------------- + // Channel offset accessor + //-------------------------------------------------- + int + GetChannelOffset() + { + Check(this); + return channelOffset; + } + //-------------------------------------------------- + // public data + //-------------------------------------------------- + ControlsButton + pttButton; + + enum + { + numberOfChannels=7 + }; + + protected: + //-------------------------------------------------- + // These methods are used to locally set the value + // for the channel, PTT, and PA status. + // + // The difference between these methods and the + // public methods defined in the base class is that + // these methods are called by both the base class + // public routines and the event receiver to actually + // set the values involved. Making them virtual + // allows derived classes to be notified of changes + // (but also requires that all derived classes + // explicitly call the overridden methods!) + //-------------------------------------------------- + void + SetChannelValue(int new_channel); // base method is virtual + void + SetPTTStatusValue(Logical new_ptt); // base method is virtual + void + SetPACaptiveValue(Logical new_pa); // base method is virtual + //-------------------------------------------------- + // Recalibrate hardware + //-------------------------------------------------- + void + Recalibrate(); + //-------------------------------------------------- + // Hardware control method + //-------------------------------------------------- + void + Update(Scalar delta_t); + + private: + Logical + WaitedLongEnough(Scalar how_long); + void + IncrementChannel(); + void + DecrementChannel(); + void + ChannelStatusUpdate(); + void + ChannelSelectState(Logical state); + //-------------------------------------------------- + // Protected data + //-------------------------------------------------- + protected: + LBE4ControlsManager + *controlsManager; + + ControlsButton + homeSensor, + channelButton; + Scalar + timeAccumulator; + int + hardwareChannel, + previousChannel, + channelOffset, + seekCount; + int + previousPTTStatus; + Logical + channelSelectEnabled, + seekRequired; + enum + { + disabled = -2, + failed = -1, + seek40, + offChannel, + reachedChannel, + onChannel, + } + state; + }; + + //########################################################################## + //######################## L4IcomManager ############################# + //########################################################################## + class L4IcomManager: + public IcomManager + { + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Shared data Support + // + public: + static Derivation ClassDerivations; + static SharedData DefaultData; + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Construction and Destruction + // + public: + L4IcomManager( + SharedData &shared_data=DefaultData + ); + ~L4IcomManager(); // base destructor is virtual + + Logical + TestInstance() const; + + L4Icom * + MakeIcom(HostID host_id, int unit_number=0); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // LoadMission, Shutdown methods + // ...these are declared virtual in ICOM.HPP and must chain back to + // the previous methods. + // + public: + void + LoadMission(Mission *mission); + void + Shutdown(); + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Periodic update function + // + void + Execute(); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // protected data + // + protected: + Time + previousUpdateTime; + + SlotOf + localIcom; + }; + +#endif diff --git a/CODE/RP/MUNGA_L4/L4JOYSTK.HPP b/CODE/RP/MUNGA_L4/L4JOYSTK.HPP new file mode 100644 index 0000000..b366452 --- /dev/null +++ b/CODE/RP/MUNGA_L4/L4JOYSTK.HPP @@ -0,0 +1,118 @@ +//===========================================================================// +// File: PCjoystk.hh // +// Project: MUNGA Brick: Platform-specific IO // +// Contents: PC joystick interface routines // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- -----------------------------------------------------------// +// ??/??/?? JMA Initial coding. // +// 01/04/95 CPB Made pretty. // +// 01/20/95 CPB Added PC_Joystick_Mask // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. All rights reserved // +// PROPRIETARY and CONFIDENTIAL // +//===========================================================================// +#if !defined(L4JOYSTK_HPP) + +# define L4JOYSTK_HPP + +# if !defined(STYLE_HPP) +# include "c:\source\munga\style.hpp" +# endif + +# define PCJ1_Button1 0x10 +# define PCJ1_Button2 0x20 +# define PCJ2_Button1 0x40 +# define PCJ2_Button2 0x80 +# define PC_All_Buttons 0xF0 + + // These are used to build "mask" values, below +# define PCJ_AnalogChannel1 0x01 +# define PCJ_AnalogChannel2 0x02 +# define PCJ_AnalogChannel3 0x04 +# define PCJ_AnalogChannel4 0x08 +# define PC_All_Analog 0x0F + + // Definitions for standard old 2-axis joystick +# define PCJ_Standard_Button1 0x10 +# define PCJ_Standard_Button2 0x20 +# define PCJ_Standard_Mask PCJ_AnalogChannel1|PCJ_AnalogChannel2 + + // Definitions for Flightstick Pro (CH products) + // + // These states are mutually exclusive and ordered by decreasing + // priority (only the highest priority state is returned). + // Yes, this means that you cannot activate two states at a time: + // while you hold the "thumb joystick", you cannot fire. +# define PCJ_FSP_Up 0xF0 // "thumb joystick" up +# define PCJ_FSP_Down 0x70 // "thumb joystick" down +# define PCJ_FSP_Left 0x30 // "thumb joystick" left +# define PCJ_FSP_Right 0xB0 // "thumb joystick" right +# define PCJ_FSP_Trigger 0x10 // Trigger +# define PCJ_FSP_LButton 0x20 // Leftmost button +# define PCJ_FSP_RButton 0x40 // Rightmost button +# define PCJ_FSP_CButton 0x80 // Center button + +# define PCJ_FSP_Mask PCJ_AnalogChannel1|PCJ_AnalogChannel2|\ + PCJ_AnalogChannel4 + + // Handy equates for reading the analog values +# define PCJ_FSP_X PC_Joystick1_Raw_X; +# define PCJ_FSP_Y PC_Joystick1_Raw_Y; +# define PCJ_FSP_Dial PC_Joystick2_Raw_Y; + + // Definitions for Thrustmaster + // + // The "hat" actually is connected to resistors on + // analog channel 3. + // Full value is open + // Up is low value + // Down is 1/2 value + // Left is 3/4 value + // Right is 1/4 value + // +# define PCJ_TM_Trigger 0x10 // Trigger +# define PCJ_TM_ThumbHigh 0x20 // Button next to "hat" +# define PCJ_TM_ThumbMid 0x40 // Button halfway down stick +# define PCJ_TM_ThumbLow 0x80 // Lowest thumb button + +# define PCJ_TM_Mask PCJ_AnalogChannel1|PCJ_AnalogChannel2|\ + PCJ_AnalogChannel4 + + // Handy equates for reading the analog values +# define PCJ_FSP_X PC_Joystick1_Raw_X; +# define PCJ_FSP_Y PC_Joystick1_Raw_Y; +# define PCJ_FSP_Dial PC_Joystick2_Raw_Y; + + + extern "C" Word PC_Joystick1_Raw_X, PC_Joystick1_Raw_Y; + extern "C" Word PC_Joystick2_Raw_X, PC_Joystick2_Raw_Y; + extern "C" Byte PC_Joystick_Buttons; + + // + // The PC_Joystick_Mask defaults at power-up to all four channels. + // It should be set according to one of the PCJ_...Mask values from above. + // This will speed up joystick updates by ignoring unused analog channels. + // + extern "C" Byte PC_Joystick_Mask; + + extern "C" void PC_Joystick_Update(void); + + extern "C" void test1(void); + extern "C" void test2(Byte a, Word b, LWord l, char *p); + extern "C" void test3(void); + extern "C" void test4(Byte a, Word b, LWord l, char *p); + + // + // In watcom, force stack-based addressing + // + +# if defined(__WATCOMC__) +# pragma aux PC_Joystick_Update parm []; +# pragma aux test1 parm []; +# pragma aux test2 parm []; +# pragma aux test3 parm []; +# pragma aux test4 parm []; +# endif + +#endif diff --git a/CODE/RP/MUNGA_L4/L4KEYBD.CPP b/CODE/RP/MUNGA_L4/L4KEYBD.CPP new file mode 100644 index 0000000..97ecbe3 --- /dev/null +++ b/CODE/RP/MUNGA_L4/L4KEYBD.CPP @@ -0,0 +1,37 @@ +//===========================================================================// +// File: PCkeybd.cc // +// Project: MUNGA Brick: Platform-specific IO // +// Contents: PC keyboard interface // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- -----------------------------------------------------------// +// 01/19/95 CPB Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. All rights reserved // +// PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#include +#include + +int PC_Keyboard_Read(void) +{ + int c; + + if (!kbhit()) // if keyboard has not been hit, return zero + { + return(0); + } + else + { + c = getch(); // keyboard was hit, get code + if (c == 0) // zero: next character is extended code + { + c = getch() | 0x0100; // flag as extended + } + return(c); // return the value + } +} diff --git a/CODE/RP/MUNGA_L4/L4KEYBD.HPP b/CODE/RP/MUNGA_L4/L4KEYBD.HPP new file mode 100644 index 0000000..2c563fe --- /dev/null +++ b/CODE/RP/MUNGA_L4/L4KEYBD.HPP @@ -0,0 +1,142 @@ +//===========================================================================// +// File: l4keybd.hpp // +// Project: MUNGA Brick: Platform-specific IO // +// Contents: PC keyboard interface // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- -----------------------------------------------------------// +// 01/19/95 CPB Initial coding. // +// 11/16/95 KEO Add additional keycodes. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide. // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL. // +//===========================================================================// +#if !defined(L4KEYBD_HPP) +# define L4KEYBD_HPP + +# if !defined(STYLE_HPP) +# include +# endif + // + //---------------------------------------------------------------- + // Handy keycode definitions + //---------------------------------------------------------------- + // +# define PCK_ESC 0x001B // "escape" key +# define PCK_ENTER 0x000D // the ever-popular "enter" key +# define PCK_TAB 0x0009 // the obvious "tab" key + // + //---------------------------------------------------------------- + // Extended keycodes: function keys + //---------------------------------------------------------------- + // +# define PCK_F1 0x013B +# define PCK_F2 0x013C +# define PCK_F3 0x013D +# define PCK_F4 0x013E +# define PCK_F5 0x013F +# define PCK_F6 0x0140 +# define PCK_F7 0x0141 +# define PCK_F8 0x0142 +# define PCK_F9 0x0143 +# define PCK_F10 0x0144 +# define PCK_F11 0x0185 +# define PCK_F12 0x0186 + // + //---------------------------------------------------------------- + // Extended keycodes: ctrl-function keys + //---------------------------------------------------------------- + // +# define PCK_CTL_F1 0x015E +# define PCK_CTL_F2 0x015F +# define PCK_CTL_F3 0x0160 +# define PCK_CTL_F4 0x0161 +# define PCK_CTL_F5 0x0162 +# define PCK_CTL_F6 0x0163 +# define PCK_CTL_F7 0x0164 +# define PCK_CTL_F8 0x0165 +# define PCK_CTL_F9 0x0166 +# define PCK_CTL_F10 0x0167 +# define PCK_CTL_F11 0x0189 +# define PCK_CTL_F12 0x018A + // + //---------------------------------------------------------------- + // Extended keycodes: alt-function keys + //---------------------------------------------------------------- + // +# define PCK_ALT_F1 0x0168 +# define PCK_ALT_F2 0x0169 +# define PCK_ALT_F3 0x016A +# define PCK_ALT_F4 0x016B +# define PCK_ALT_F5 0x016C +# define PCK_ALT_F6 0x016D +# define PCK_ALT_F7 0x016E +# define PCK_ALT_F8 0x016F +# define PCK_ALT_F9 0x0170 +# define PCK_ALT_F10 0x0171 +# define PCK_ALT_F11 0x018B +# define PCK_ALT_F12 0x018C + // + //---------------------------------------------------------------- + // Extended keycodes: cursor keys (numeric keypad WITH NUMLOCK OFF!) + //---------------------------------------------------------------- + // +# define PCK_INS 0x0152 +# define PCK_DEL 0x0153 +# define PCK_HOME 0x0147 +# define PCK_UP 0x0148 +# define PCK_PGUP 0x0149 +# define PCK_LEFT 0x014B +# define PCK_RIGHT 0x014D +# define PCK_END 0x014F +# define PCK_DOWN 0x0150 +# define PCK_PGDN 0x0151 + // + //---------------------------------------------------------------- + // Extended keycodes: ctrl-cursor keys + //---------------------------------------------------------------- + // +# define PCK_CTL_INS 0x0192 +# define PCK_CTL_DEL 0x0193 +# define PCK_CTL_HOME 0x0177 +# define PCK_CTL_UP 0x018D +# define PCK_CTL_PGUP 0x0184 +# define PCK_CTL_LEFT 0x0173 +# define PCK_CTL_RIGHT 0x0174 +# define PCK_CTL_END 0x0175 +# define PCK_CTL_DOWN 0x0191 +# define PCK_CTL_PGDN 0x0176 + // + //---------------------------------------------------------------- + // Extended keycodes: alt-cursor keys + //---------------------------------------------------------------- + // +# define PCK_ALT_INS 0x01A2 +# define PCK_ALT_DEL 0x01A3 +# define PCK_ALT_HOME 0x0197 +# define PCK_ALT_UP 0x0198 +# define PCK_ALT_PGUP 0x0199 +# define PCK_ALT_LEFT 0x019B +# define PCK_ALT_RIGHT 0x019D +# define PCK_ALT_END 0x019F +# define PCK_ALT_DOWN 0x01A0 +# define PCK_ALT_PGDN 0x01A1 + // + //---------------------------------------------------------------- + // Extended keycodes: alt-keys + //---------------------------------------------------------------- + // +# define PCK_ALT_W 0x0111 +# define PCK_ALT_R 0x0113 +# define PCK_ALT_P 0x0119 +# define PCK_ALT_F 0x0121 +# define PCK_ALT_K 0x0125 +# define PCK_ALT_V 0x012F +# define PCK_ALT_SLASH 0x0135 + + extern int PC_Keyboard_Read(void); // returns code or zero if no key + +#endif +//===========================================================================// + diff --git a/CODE/RP/MUNGA_L4/L4LAMP.CPP b/CODE/RP/MUNGA_L4/L4LAMP.CPP new file mode 100644 index 0000000..baa62c1 --- /dev/null +++ b/CODE/RP/MUNGA_L4/L4LAMP.CPP @@ -0,0 +1,411 @@ +//===========================================================================// +// File: l4lamp.cpp // +// Project: MUNGA Brick: LBE4 Gauge Renderer // +// Contents: LBE4 Lamp manager code // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 02/19/96 CPB Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1996, Virtual World Entertainment, Inc. All rights reserved // +// PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#define PRELOAD_ART + +#if !defined(VDATA_HPP) +# include +#endif + +#if !defined(L4LAMP_HPP) +# include +#endif + +#if !defined(L4WRHOUS_HPP) +# include +#endif + +// #define LOCAL_TEST + +#if defined(LOCAL_TEST) +# define Test_Tell(n) cout << n +#else +# define Test_Tell(n) +#endif + +//######################################################################### +//############################# L4LampManager ############################# +//######################################################################### +L4LampManager::L4LampManager(LBE4ControlsManager *controls_manager): + LampManager() +{ + Check(controls_manager); + controlsManager = controls_manager; + + previousLampState = new int[LBE4ControlsManager::LampCount]; + Register_Pointer(previousLampState); + lampActiveFlag = new Logical[LBE4ControlsManager::LampCount]; + Register_Pointer(lampActiveFlag); + //----------------------------------------- + // Clear L4 lamp state tables + //----------------------------------------- + int + i; + + Check_Pointer(previousLampState); + for(i=0; i< LBE4ControlsManager::LampCount; ++i) + { + previousLampState[i] = RIO::solid + RIO::state1Off + RIO::state2Off; + } + Check_Fpu(); +} + +L4LampManager::~L4LampManager() +{ + Check(this); + + Unregister_Pointer(previousLampState); + delete[] previousLampState; + previousLampState = NULL; + + Unregister_Pointer(lampActiveFlag); + delete[] lampActiveFlag; + lampActiveFlag = NULL; + + Check_Fpu(); +} + +Logical + L4LampManager::TestInstance() const +{ + Check_Fpu(); + return LampManager::TestInstance(); +} + +void + L4LampManager::Update(ModeMask current_mode_mask) +{ + Check(this); + Logical + flush_inactive_lamps = (current_mode_mask != previousModeMask); + int + i; + + if (flush_inactive_lamps) + { + //--------------------------------------- + // Mark all lamps as inactive + //--------------------------------------- + Check_Pointer(lampActiveFlag); + for(i=0; i< LBE4ControlsManager::LampCount; ++i) + { + lampActiveFlag[i] = False; + } + } + //--------------------------------------- + // Update LampManager, set lamp outputs, + // and mark active lamps + //--------------------------------------- + LampManager::Update(current_mode_mask); + + if (flush_inactive_lamps) + { + //--------------------------------------- + // Turn off inactive lamps + //--------------------------------------- + Check_Pointer(lampActiveFlag); + for(i=0; i< LBE4ControlsManager::LampCount; ++i) + { + if (lampActiveFlag[i] == False) + { + AssertNewLampValue(i, RIO::solid+RIO::state1Off+RIO::state2Off); + } + } + } + Check_Fpu(); +} + +void + L4LampManager::AssertNewLampValue(int lamp_number, int lamp_value) +{ + Check(this); + + Verify(lamp_number >= 0); + Verify(lamp_number < LBE4ControlsManager::LampCount); + //-------------------------------------- + // Update external hardware + //-------------------------------------- + Check_Pointer(previousLampState); + if (previousLampState[lamp_number] != lamp_value) + { + previousLampState[lamp_number] = lamp_value; + //-------------------------------------- + // Send RIO command to update L4 lamp + //-------------------------------------- + Check(controlsManager); + controlsManager->SetLamp(lamp_number, lamp_value); + } + + Check_Fpu(); +} + +//######################################################################### +//################################ L4Lamp ################################# +//######################################################################### +L4Lamp::L4Lamp( + LampID lamp_number, + ModeMask mode_mask, + L4LampManager *lamp_manager +) : + Lamp(lamp_number, mode_mask, (LampManager *) lamp_manager) +{ + automatic = True; + automaticValue = (ControlsButton) 0; + previousAutomaticValue = automaticValue; + + SetState(LampStateDim); + + Check_Fpu(); +} + +L4Lamp::~L4Lamp() +{ + Check(this); + SetState(LampStateOff); + Check_Fpu(); +} + +Logical + L4Lamp::TestInstance() const +{ + return Lamp::TestInstance(); +} + +void + L4Lamp::SetAutomaticOperation(Logical automatic_flag) +{ + Check(this); + automatic = automatic_flag; + Check_Fpu(); +} + +void + L4Lamp::Update(Logical force_notification) +{ + Check(this); + + //-------------------------------------- + // Tell manager we're still active + //-------------------------------------- + if (lampID >= 0) + { + if (lampID < LBE4ControlsManager::LampCount) + { + Check_Pointer(((L4LampManager *)manager)->lampActiveFlag); + ((L4LampManager *)manager)->lampActiveFlag[lampID] = True; + } + } + //-------------------------------------- + // Update state if automatic + //-------------------------------------- + if (automatic) + { + if (previousAutomaticValue != automaticValue) + { + previousAutomaticValue = automaticValue; + + if (previousAutomaticValue > 0) + { + SetState(LampStateOn); + } + else + { + SetState(LampStateDim); + } + } + else if (force_notification) + { + NotifyOfStateChange(); + } + } + else if (force_notification) + { + NotifyOfStateChange(); + } + Check_Fpu(); +} + +void + L4Lamp::NotifyOfStateChange() +{ + Check(this); + Check((L4LampManager *) manager); + + int + output_value; + + if (alertActive) + { + switch(previousState) + { + default: + output_value = RIO::flashFast + RIO::state1Off + RIO::state2Dim; + break; + + case LampStateDim: + case LampStateOn: + output_value = RIO::flashFast + RIO::state1Dim + RIO::state2Bright; + break; + } + } + else + { + switch(previousState) + { + default: + output_value = RIO::solid + RIO::state1Off + RIO::state2Off; + break; + + case LampStateDim: + output_value = RIO::solid + RIO::state1Dim + RIO::state2Dim; + break; + + case LampStateOn: + output_value = RIO::solid + RIO::state1Bright + RIO::state2Bright; + break; + } + } + + ((L4LampManager *) manager)->AssertNewLampValue(lampID, output_value); + Check_Fpu(); +} + +//######################################################################### +//############################# L4VirtualLamp ############################# +//######################################################################### +L4GraphicLamp::L4GraphicLamp( + LampID lamp_id, + ModeMask mode_mask, + GaugeRenderer *the_renderer, + int graphics_port_number, + int left, int bottom, + const char *map_name, + int bg_color, int fg_color, + Logical opaque_flag +) : + GraphicLamp( + lamp_id, + mode_mask, + the_renderer->GetLampManager(), + the_renderer, + graphics_port_number + ) +{ + //-------------------------------------------- + // Build copy of map name + //-------------------------------------------- + Check_Pointer(map_name); + mapName = new char[strlen(map_name)+1]; + Register_Pointer(mapName); + strcpy(mapName, map_name); + //-------------------------------------------- + // Get the image + //-------------------------------------------- +# if defined(PRELOAD_ART) + Check(renderer); + L4Warehouse + *warehouse = (L4Warehouse *) renderer->warehousePointer; + Check(warehouse); + + warehouse->bitMapBin.Get(mapName); +# endif + + opaque = opaque_flag; + bgColor = bg_color; + fgColor = fg_color; + localView.SetOrigin(left, bottom); + Check_Fpu(); +} + +L4GraphicLamp::~L4GraphicLamp() +{ + Check(this); + Check_Pointer(mapName); + //-------------------------------------------- + // Release the preloaded image + //-------------------------------------------- +# if defined(PRELOAD_ART) + Check(renderer); + L4Warehouse + *warehouse = (L4Warehouse *) renderer->warehousePointer; + Check(warehouse); + + warehouse->bitMapBin.Release(mapName); +# endif + //-------------------------------------------- + // Delete the copy of the name + //-------------------------------------------- + Check_Pointer(mapName); + delete[] mapName; + mapName = NULL; + Check_Fpu(); +} + +Logical + L4GraphicLamp::TestInstance() const +{ + return GraphicLamp::TestInstance(); +} + +void + L4GraphicLamp::NotifyOfStateChange() +{ + Check(this); + //-------------------------------------------- + // Get the bitmap + //-------------------------------------------- + Check(renderer); + L4Warehouse + *warehouse = (L4Warehouse *) renderer->warehousePointer; + Check(warehouse); + + BitMap + *bitmap = warehouse->bitMapBin.Get(mapName); + + if (bitmap != NULL) + { + Check(bitmap); + //-------------------------------------------- + // Set the color + //-------------------------------------------- + if (previousState <= LampStateOff) + { + localView.SetColor(bgColor); + } + else + { + localView.SetColor(fgColor); + } + //-------------------------------------------- + // Draw the bitmap + //-------------------------------------------- + if (opaque) + { + localView.DrawBitMapOpaque(bgColor, 0, bitmap); + } + else + { + localView.DrawBitMap(0, bitmap); + } + //-------------------------------------------- + // Release the bitmap + //-------------------------------------------- + Check(warehouse); + warehouse->bitMapBin.Release(mapName); + } + Check_Fpu(); +} + diff --git a/CODE/RP/MUNGA_L4/L4LAMP.HPP b/CODE/RP/MUNGA_L4/L4LAMP.HPP new file mode 100644 index 0000000..c137cb1 --- /dev/null +++ b/CODE/RP/MUNGA_L4/L4LAMP.HPP @@ -0,0 +1,169 @@ +//===========================================================================// +// File: l4lamp.hpp // +// Project: MUNGA Brick: Gauge Module // +// Contents: Interface specification for L4 Lamps // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- -----------------------------------------------------------// +// 02/16/96 CPB Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1996, Virtual World Entertainment, Inc. All rights reserved // +// PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(L4LAMP_HPP) +# define L4LAMP_HPP + + class L4LampManager; + class L4Lamp; + class L4GraphicLamp; + +# if !defined(LAMP_HPP) +# include "lamp.hpp" +# endif + +# if !defined(L4CTRL_HPP) +# include "l4ctrl.hpp" +# endif + + //######################################################################### + //############################# L4LampManager ############################# + //######################################################################### + class L4LampManager: + public LampManager + { + friend class L4Lamp; + //---------------------------------------------------------------------- + // Public methods + //---------------------------------------------------------------------- + public: + L4LampManager(LBE4ControlsManager *controls_manager); + ~L4LampManager(); + + Logical + TestInstance() const; + + virtual void + Update(ModeMask current_mode_mask); + //---------------------------------------------------------------------- + // Protected methods + //---------------------------------------------------------------------- + protected: + void + AssertNewLampValue(int lamp_number, int lamp_value); + + //---------------------------------------------------------------------- + // Protected data + //---------------------------------------------------------------------- + protected: + LBE4ControlsManager + *controlsManager; + int + *previousLampState; + Logical + *lampActiveFlag; + }; + + //######################################################################### + //################################ L4Lamp ################################# + //######################################################################### + class L4Lamp : + public Lamp + { + //---------------------------------------------------------------------- + // Public methods + //---------------------------------------------------------------------- + public: + enum + { + LampStateDim = Lamp::NextLampState, + NextLampState + }; + + L4Lamp( + LampID lamp_number, + ModeMask mode_mask, + L4LampManager *lamp_manager + ); + + ~L4Lamp(); + + Logical + TestInstance() const; + + void + SetAutomaticOperation(Logical automatic_flag = True); + + protected: + //---------------------------------------------------------------------- + // Protected methods + //---------------------------------------------------------------------- + void + Update(Logical force_notify_of_state_change = False); + void + NotifyOfStateChange(); + //---------------------------------------------------------------------- + // Public data + //---------------------------------------------------------------------- + public: + ControlsButton + automaticValue; // controls lampState if 'automatic' is true + //---------------------------------------------------------------------- + // Protected data + //---------------------------------------------------------------------- + protected: + ControlsButton + previousAutomaticValue; + Logical + automatic; + int + alertValue; + }; + + //######################################################################### + //############################# L4GraphicLamp ############################# + //######################################################################### + class L4GraphicLamp : + public GraphicLamp + { + //---------------------------------------------------------------------- + // Public methods + //---------------------------------------------------------------------- + public: + L4GraphicLamp( + LampID lamp_number, + ModeMask mode_mask, + GaugeRenderer *renderer, + int graphics_port_number, + int left, int bottom, + const char *bitmap_name, + int bg_color, int fg_color, + Logical opaque_flag = True + ); + + ~L4GraphicLamp(); + + Logical + TestInstance() const; + + protected: + //---------------------------------------------------------------------- + // Protected methods + //---------------------------------------------------------------------- + void + NotifyOfStateChange(); + //---------------------------------------------------------------------- + // Protected data + //---------------------------------------------------------------------- + protected: + Logical + opaque; + char + *mapName; + int + bgColor, + fgColor; + }; + +#endif + diff --git a/CODE/RP/MUNGA_L4/L4MOUSE.CPP b/CODE/RP/MUNGA_L4/L4MOUSE.CPP new file mode 100644 index 0000000..5f9384a --- /dev/null +++ b/CODE/RP/MUNGA_L4/L4MOUSE.CPP @@ -0,0 +1,188 @@ +//===========================================================================// +// File: PCmouse.cc // +// Project: MUNGA Brick: Platform-specific IO // +// Contents: PC mouse interface // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- -----------------------------------------------------------// +// 01/24/95 CPB Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. All rights reserved // +// PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(L4MOUSE_HPP) +# include +#endif + +#define MOUSEINT 0x33 + +// +//############################################################################ +// Creator - reset the driver and check for existence +// +//############################################################################ +// +Mouse::Mouse() +{ + Check_Pointer(this); + + // + //----------------------------------------------- + // Reset driver and read status + //----------------------------------------------- + // + _AX = 0; + geninterrupt(MOUSEINT); + + // + //----------------------------------------------- + // AX will be zero if error, 0xFFFF if ok. + // BX is the number of buttons. + //----------------------------------------------- + // + if (_AX == 0xFFFF) + { + ButtonCount = _BX; + Errors = 0; + } + else + { + Errors = 1; + ButtonCount = 0; + } + Check_Fpu(); +} + +Logical + Mouse::TestInstance() const +{ + return True; +} + +// +//############################################################################ +// ReadCounters - return how many 'mickeys' the mouse has moved +// since the last call +//############################################################################ +// +void + Mouse::ReadCounters(int *xp, int *yp) +{ + Check(this); + Check_Pointer(xp); + Check_Pointer(yp); + + if (Errors) + { + *xp = 0; + *yp = 0; + } + else + { + // + //----------------------------------------------- + // Read motion counters + //----------------------------------------------- + // + _AX = 0x000B; + geninterrupt(MOUSEINT); + + // + //----------------------------------------------- + // CX = UNSIGNED x counter, + // DX = UNSIGNED y counter. + // These must be converted to signed values. + //----------------------------------------------- + // + int a = _CX; + int b = _DX; + if (a & 0x8000) + { + a |= (int)(~65535L); + } + if (b & 0x8000) + { + b |= (int)(~65535L); + } + + *xp = a; + *yp = b; + } + Check_Fpu(); +} + +// +//############################################################################ +// ButtonPressed - return the number of times a given button was pressed +// since the last call +//############################################################################ +// +int + Mouse::ButtonPressed(int buttonNum) +{ + Check(this); + if (Errors) + { + return 0; + } + else + { + // + //----------------------------------------------- + // Read button press data + //----------------------------------------------- + // + _AX = 0x0005; + _BX = (unsigned short) buttonNum; + geninterrupt(MOUSEINT); + + // + //----------------------------------------------- + // AX = current button states + // BX = number of times pressed since last call + //----------------------------------------------- + // + return (int) _BX; + } +} + +// +//############################################################################ +// ButtonReleased - return the number of times a given button was released +// since the last call +//############################################################################ +// +int + Mouse::ButtonReleased(int buttonNum) +{ + Check(this); + if (Errors) + { + return 0; + } + else + { + // + //----------------------------------------------- + // Read button press data + //----------------------------------------------- + // + _AX = 0x0006; + _BX = (unsigned short) buttonNum; + geninterrupt(MOUSEINT); + + // + //----------------------------------------------- + // AX = current button states + // BX = number of times pressed since last call + //----------------------------------------------- + // + return _BX; + } +} + + diff --git a/CODE/RP/MUNGA_L4/L4MOUSE.HPP b/CODE/RP/MUNGA_L4/L4MOUSE.HPP new file mode 100644 index 0000000..9474fc5 --- /dev/null +++ b/CODE/RP/MUNGA_L4/L4MOUSE.HPP @@ -0,0 +1,37 @@ +//===========================================================================// +// File: PCMouse.hh // +// Project: MUNGA Brick: Platform-specific IO // +// Contents: PC mouse interface class // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- -----------------------------------------------------------// +// 01/30/95 CPB Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. All rights reserved // +// PROPRIETARY and CONFIDENTIAL // +//===========================================================================// +#if !defined(L4MOUSE_HPP) + + #define L4MOUSE_HPP + + #if !defined(STYLE_HPP) + #include + #endif + + class Mouse SIGNATURED + { + public: + Mouse(); + ~Mouse() + {} + void ReadCounters(int *xp, int *yp); + int ButtonPressed(int buttonNum); + int ButtonReleased(int buttonNum); + Logical + TestInstance() const; + + int ButtonCount; // number of buttons on mouse + int Errors; // non-zero if bad things happened + }; + +#endif diff --git a/CODE/RP/MUNGA_L4/L4MPPR.CPP b/CODE/RP/MUNGA_L4/L4MPPR.CPP new file mode 100644 index 0000000..da802bb --- /dev/null +++ b/CODE/RP/MUNGA_L4/L4MPPR.CPP @@ -0,0 +1,393 @@ +//===========================================================================// +// File: L4mppr.cc // +// Project: MUNGA Brick: Hardware-specific controls module // +// Contents: Implementation specification for L4 mapper // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- -----------------------------------------------------------// +// 06/20/95 JM Initial Coding // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. All rights reserved // +// PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(L4MPPR_HPP) +# include +#endif + +#if !defined(L4CTRL_HPP) +# include +#endif + +#if !defined(L4KEYBD_HPP) +# include +#endif + +#if !defined(APP_HPP) +# include +#endif + +#define PEDAL_SCALE 2.0f + +//########################################################################## +//#################### CameraL4Mapper ####################### +//########################################################################## + +//############################################################################# +// Shared Data Support +// + +CameraL4Mapper::SharedData + CameraL4Mapper::DefaultData( + CameraL4Mapper::ClassDerivations, + CameraL4Mapper::MessageHandlers, + CameraL4Mapper::AttributeIndex, + CameraL4Mapper::StateCount + ); +Derivation + CameraL4Mapper::ClassDerivations( + CameraControlsMapper::ClassDerivations, + "CameraL4Mapper" + ); + +//############################################################################# +// Messaging Support +// +const Receiver::HandlerEntry + CameraL4Mapper::MessageHandlerEntries[]= +{ + MESSAGE_ENTRY(CameraL4Mapper, Keypress) +}; + +CameraL4Mapper::MessageHandlerSet + CameraL4Mapper::MessageHandlers( + ELEMENTS(CameraL4Mapper::MessageHandlerEntries), + CameraL4Mapper::MessageHandlerEntries, + CameraControlsMapper::MessageHandlers + ); + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + CameraL4Mapper::KeypressMessageHandler( + ReceiverDataMessageOf *message + ) +{ + Check(this); + Check(message); + LBE4ControlsManager *controls = + Cast_Object(LBE4ControlsManager*,application->GetControlsManager()); + + switch (message->dataContents) + { + case PCK_F1: + Tell("Aligning Joystick...\n"); + controls->BeginAlignJoystick(); + break; + case PCK_F2: + Tell("Joystick Aligned...\n"); + controls->EndAlignJoystick(); + break; + + case '>': + rightPedal = 1.0f; + break; + case '<': + leftPedal = 1.0f; + break; + case ' ': + leftPedal = rightPedal = 0.0f; + break; + + default: + CameraControlsMapper::KeypressMessageHandler(message); + break; + } +} + +//############################################################################# +// Model Support +// +void + CameraL4Mapper::InterpretControls(Scalar) +{ + // + //---------------------------------------- + // Sum the pedal inputs + //---------------------------------------- + // + pedalsPosition = rightPedal - leftPedal; + pedalsPosition *= PEDAL_SCALE; +} + +//############################################################################# +// Construction and Destruction Support +// + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +CameraL4Mapper::CameraL4Mapper( + CameraShip *owner, + int subsystem_ID, + SubsystemResource *subsystem_resource, + SharedData &shared_data + ) + : CameraControlsMapper(owner, subsystem_ID, subsystem_resource, shared_data) +{ + SetPerformance(&CameraL4Mapper::InterpretControls); + + leftPedal = 0.0f; + rightPedal = 0.0f; + + LBE4ControlsManager *controls = + Cast_Object(LBE4ControlsManager*,application->GetControlsManager()); + + controls + ->joystickGroup[LBE4ControlsManager::JoystickPhysical] + .Add(ModeManager::ModeAlwaysActive, &stickPosition, this); + + controls + ->buttonGroup[LBE4ControlsManager::ButtonJoystickTrigger] + .Add(ModeManager::ModeAlwaysActive, &driveCamera, this); + + controls + ->buttonGroup[LBE4ControlsManager::ButtonJoystickThumbHigh] + .Add(ModeManager::ModeAlwaysActive, &slideOrClamp, this); + + controls + ->buttonGroup[LBE4ControlsManager::ButtonJoystickHatLeft] + .Add( + ModeManager::ModeAlwaysActive, + this, + DecrementCameraMessageID, + this + ); + + controls + ->buttonGroup[LBE4ControlsManager::ButtonJoystickHatRight] + .Add( + ModeManager::ModeAlwaysActive, + this, + IncrementCameraMessageID, + this + ); + + controls + ->buttonGroup[LBE4ControlsManager::ButtonJoystickPinky] + .Add( + ModeManager::ModeAlwaysActive, + this, + DeleteCameraInstanceMessageID, + this + ); + + controls + ->buttonGroup[LBE4ControlsManager::ButtonJoystickThumbLow] + .Add( + ModeManager::ModeAlwaysActive, + this, + CreateCameraInstanceMessageID, + this + ); + + controls + ->keyboardGroup[LBE4ControlsManager::KeyboardPC] + .Add( + ModeManager::ModeAlwaysActive, + this, + KeypressMessageID, + this + ); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +CameraL4Mapper::~CameraL4Mapper() +{ +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + CameraL4Mapper::TestInstance() const +{ + return IsDerivedFrom(ClassDerivations); +} + +//########################################################################## +//#################### CameraThrustmasterMapper ####################### +//########################################################################## + +//############################################################################# +// Shared Data Support +// + +CameraThrustmasterMapper::SharedData + CameraThrustmasterMapper::DefaultData( + CameraThrustmasterMapper::ClassDerivations, + CameraThrustmasterMapper::MessageHandlers, + CameraThrustmasterMapper::AttributeIndex, + CameraThrustmasterMapper::StateCount + ); +Derivation + CameraThrustmasterMapper::ClassDerivations( + CameraL4Mapper::ClassDerivations, + "CameraThrustmasterMapper" + ); + +//############################################################################# +// Model Support +// +void + CameraThrustmasterMapper::InterpretControls(Scalar time_slice) +{ + // + //---------------------------------------- + // Use the hat buttons to set the throttle + //---------------------------------------- + // + if (throttleUp > 0) + { + throttlePosition = 1.0f; + reverseThrust = 0; + } + else if (throttleDown > 0) + { + throttlePosition = 1.0f; + reverseThrust = 1; + } + else + { + throttlePosition = 0.0f; + reverseThrust = 0; + } + + CameraL4Mapper::InterpretControls(time_slice); +} + +//############################################################################# +// Construction and Destruction Support +// + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +CameraThrustmasterMapper::CameraThrustmasterMapper( + CameraShip *owner, + int subsystem_ID, + SubsystemResource *subsystem_resource, + SharedData &shared_data + ) + : CameraL4Mapper(owner, subsystem_ID, subsystem_resource, shared_data) +{ + SetPerformance(&CameraThrustmasterMapper::InterpretControls); + + throttleUp = throttleDown = 0; + + LBE4ControlsManager *controls = + Cast_Object(LBE4ControlsManager*,application->GetControlsManager()); + + controls + ->buttonGroup[LBE4ControlsManager::ButtonJoystickHatUp] + .Add(ModeManager::ModeAlwaysActive, &throttleUp, this); + + controls + ->buttonGroup[LBE4ControlsManager::ButtonJoystickHatDown] + .Add(ModeManager::ModeAlwaysActive, &throttleDown, this); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +CameraThrustmasterMapper::~CameraThrustmasterMapper() +{ +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + CameraThrustmasterMapper::TestInstance() const +{ + return IsDerivedFrom(ClassDerivations); +} + +//############################################################################# +//################################ RIOMapper ################################## +//############################################################################# + +//############################################################################# +// Shared Data Support +// +CameraRIOMapper::SharedData + CameraRIOMapper::DefaultData( + CameraRIOMapper::ClassDerivations, + CameraRIOMapper::MessageHandlers, + CameraRIOMapper::AttributeIndex, + CameraRIOMapper::StateCount + ); + +Derivation + CameraRIOMapper::ClassDerivations( + CameraL4Mapper::ClassDerivations, + "CameraRIOMapper" + ); + +//############################################################################# +// Construction and Destruction Support +// + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +CameraRIOMapper::CameraRIOMapper( + CameraShip *owner, + int subsystem_ID, + SubsystemResource *subsystem_resource, + SharedData &shared_data +): + CameraL4Mapper(owner, subsystem_ID, subsystem_resource, shared_data) +{ + LBE4ControlsManager *controls = + Cast_Object(LBE4ControlsManager*,application->GetControlsManager()); + + // + //----------------- + // Throttle mapping + //----------------- + // + controls + ->scalarGroup[LBE4ControlsManager::ScalarThrottle] + .Add(ModeManager::ModeAlwaysActive, &throttlePosition, this); + + controls + ->buttonGroup[LBE4ControlsManager::ButtonThrottle1] + .Add(ModeManager::ModeAlwaysActive, &reverseThrust, this); + + // + //-------------- + // Pedal mapping + //-------------- + // + controls + ->scalarGroup[LBE4ControlsManager::ScalarLeftPedal] + .Add(ModeManager::ModeAlwaysActive, &leftPedal, this); + + controls + ->scalarGroup[LBE4ControlsManager::ScalarRightPedal] + .Add(ModeManager::ModeAlwaysActive, &rightPedal, this); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +CameraRIOMapper::~CameraRIOMapper() +{ +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + CameraRIOMapper::TestInstance() const +{ + return IsDerivedFrom(ClassDerivations); +} + diff --git a/CODE/RP/MUNGA_L4/L4MPPR.HPP b/CODE/RP/MUNGA_L4/L4MPPR.HPP new file mode 100644 index 0000000..2243c20 --- /dev/null +++ b/CODE/RP/MUNGA_L4/L4MPPR.HPP @@ -0,0 +1,174 @@ +//===========================================================================// +// File: L4mppr.hpp. // +// Project: MUNGA Brick: Hardware-specific controls module // +// Contents: Interface specification for L4 mapper // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- -----------------------------------------------------------// +// 06/20/95 JM Initial Coding // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. All rights reserved // +// PROPRIETARY and CONFIDENTIAL // +//===========================================================================// +#if !defined(L4MPPR_HPP) +# define L4MPPR_HPP + +#if !defined (CONTROLS_HPP) +# include "controls.hpp" +#endif + +#if !defined (CAMMPPR_HPP) +# include "cammppr.hpp" +#endif + + //########################################################################## + //#################### CameraL4Mapper ####################### + //########################################################################## + class CameraL4Mapper : + public CameraControlsMapper + { + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Shared Data Support + // + public: + static Derivation ClassDerivations; + static SharedData DefaultData; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Messaging Support + // + public: + void + KeypressMessageHandler(ReceiverDataMessageOf *message); + + protected: + static const HandlerEntry + MessageHandlerEntries[]; + static MessageHandlerSet + MessageHandlers; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Model Support + // + public: + typedef void + (CameraL4Mapper::*Performance)(Scalar time_slice); + + void + InterpretControls(Scalar time_slice); + + void + SetPerformance(Performance performance) + { + Check(this); + activePerformance = (Simulation::Performance)performance; + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Construction and Destruction Support + // + public: + CameraL4Mapper( + CameraShip *owner, + int subsystem_ID, + SubsystemResource *subsystem_resource, + SharedData &shared_data = DefaultData + ); + ~CameraL4Mapper(); + + Logical + TestInstance() const; + + protected: + ControlsScalar + leftPedal, + rightPedal; + }; + + //########################################################################## + //#################### CameraThrustmasterMapper ####################### + //########################################################################## + + class CameraThrustmasterMapper : + public CameraL4Mapper + { + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Shared Data Support + // + public: + static Derivation ClassDerivations; + static SharedData DefaultData; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Model Support + // + public: + typedef void + (CameraThrustmasterMapper::*Performance)(Scalar time_slice); + + void + InterpretControls(Scalar time_slice); + + void + SetPerformance(Performance performance) + { + Check(this); + activePerformance = (Simulation::Performance)performance; + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Construction and Destruction Support + // + public: + CameraThrustmasterMapper( + CameraShip *owner, + int subsystem_ID, + SubsystemResource *subsystem_resource, + SharedData &shared_data = DefaultData + ); + ~CameraThrustmasterMapper(); + + Logical + TestInstance() const; + + protected: + ControlsButton + throttleUp, + throttleDown; + }; + + //########################################################################## + //########################### CameraRIOMapper ######################## + //########################################################################## + + class CameraRIOMapper : + public CameraL4Mapper + { + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Shared Data Support + // + public: + static Derivation ClassDerivations; + static SharedData DefaultData; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Construction and Destruction Support + // + public: + CameraRIOMapper( + CameraShip *owner, + int subsystem_ID, + SubsystemResource *subsystem_resource, + SharedData &shared_data = DefaultData + ); + ~CameraRIOMapper(); + + Logical + TestInstance() const; + }; + +#endif + + + diff --git a/CODE/RP/MUNGA_L4/L4MSSN.CPP b/CODE/RP/MUNGA_L4/L4MSSN.CPP new file mode 100644 index 0000000..1e46677 --- /dev/null +++ b/CODE/RP/MUNGA_L4/L4MSSN.CPP @@ -0,0 +1,228 @@ +//===========================================================================// +// File: l4msson.cc // +// Project: MUNGA Brick: Application // +// Contents: Implementation Details for missions // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 02/19/95 JMA Initial coding. // +// 09/12/95 JM Put Back in Munga Added Munga L4 level Player Data // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// +#if 0 +// THIS FILE IS OBSOLETE AS OF 11-1-95 cpb + + +#include "l4munga.hpp" + +#if !defined(L4MSSN_HPP) +# include "l4mssn.hpp" +#endif + +#if !defined(L4HOST_HPP) +# include "l4host.hpp" +#endif + +#if !defined(MISSION_HPP) +# include "mission.hpp" +#endif + +//########################################################################## +//########################## L4Mission ################################ +//########################################################################## + +// +//############################################################################# +//############################################################################# +// +L4Mission::L4Mission( + NotationFile *notation_file, + ResourceFile *resources +): + Mission(notation_file, resources) +{ + for(int i=0; i < Player::numberOfNameBitmaps; ++i) + { + nameBitmap[i] = NULL; + } +} + +// +//############################################################################# +//############################################################################# +// +L4Mission::~L4Mission() +{ + for(int i=0; iGetHostManager(); + Check(host_manager); + L4Host *host = (L4Host*)host_manager->GetLocalHost(); + Check(host); + CString player_node = host->GetSymbolicName(); + + // + //----------------- + // Get Vehicle name + //----------------- + // + gameModel = NULL; + const char* player_model = NULL; + notation_file->GetEntry(player_node, "vehicle", &player_model); + if (!player_model) + { + DEBUG_STREAM << "Error: vehicle not specified!\n"; + Exit(1); + } + Check_Pointer(player_model); + gameModel = strdup(player_model); + Register_Pointer(gameModel); + // + //----------------- + // Get DropZone name + //----------------- + // + dropZoneName = NULL; + const char* drop_zone = NULL; + notation_file->GetEntry(player_node, "dropzone", &drop_zone); + if (!drop_zone) + { + DEBUG_STREAM << "Error: dropzone not specified!\n"; + Exit(1); + } + Check_Pointer(drop_zone); + dropZoneName = strdup(drop_zone); + Register_Pointer(dropZoneName); + // + //------------------ + // Set DropZone Host + //------------------ + // + dropZoneHost = False; + notation_file->GetEntry(player_node, "loadzones", &dropZoneHost); + // + //----------------- + // Get Color name + //----------------- + // + colorName = NULL; + const char* color_name = NULL; + notation_file->GetEntry(player_node, "color", &color_name); + if (!color_name) + { + DEBUG_STREAM << "Error: color not specified!\n"; + Exit(1); + } + Check_Pointer(color_name); + colorName = strdup(color_name); + Register_Pointer(colorName); + // + //----------------- + // Get Badge name + //----------------- + // + badgeName = NULL; + const char* badge_name = NULL; + notation_file->GetEntry(player_node, "badge", &badge_name); + if (!badge_name) + { + DEBUG_STREAM << "Error: badge not specified!\n"; + Exit(1); + } + Check_Pointer(badge_name); + badgeName = strdup(badge_name); + Register_Pointer(badgeName); + + // + //----------------------------------------------- + // Get the Role name "General" if not listed + //----------------------------------------------- + // + positionName = NULL; + const char* position_name = NULL; + notation_file->GetEntry(player_node, "position", &position_name); + if(!position_name) + { + position_name = strdup("General"); + } + Check_Pointer(position_name); + positionName = strdup(position_name); + Register_Pointer(positionName); + // + //--------------------------------------- + // Assign an integer value for the teamID + //--------------------------------------- + // + const char* team_name; + notation_file->GetEntry(player_node, "team", &team_name); + int team_count; + + NameList + *team_namelist = notation_file->MakeEntryList("teams"); + + teamID = -1; + if (team_namelist) + { + Register_Object(team_namelist); + team_count = team_namelist->EntryCount(); + if(team_count) + { + int current_id=0; + NameList::Entry *team_entry = team_namelist->GetFirstEntry(); + while(team_entry) + { + if (strcmp(team_name, team_entry->GetChar()) == 0) + { + teamID = current_id; + break; + } + current_id++; + team_entry = team_entry->GetNextEntry(); + } + } + Unregister_Object(team_namelist); + delete team_namelist; + } +} + +// +//############################################################################# +//############################################################################# +// +Logical + L4Mission::TestInstance() const +{ + Mission::TestInstance(); + return True; +} +#endif diff --git a/CODE/RP/MUNGA_L4/L4MSSN.HPP b/CODE/RP/MUNGA_L4/L4MSSN.HPP new file mode 100644 index 0000000..7014ba1 --- /dev/null +++ b/CODE/RP/MUNGA_L4/L4MSSN.HPP @@ -0,0 +1,50 @@ +//===========================================================================// +// File: l4mssn.hh // +// Project: MUNGA Brick: Application // +// Contents: Implementation Details for missions // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 02/19/95 JMA Initial coding. // +// 09/12/95 JM Put Back in Munga & Added Munga L4 level Player Data // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// +#if !defined (L4MSSN_HPP) + #define L4MSSN_HPP + +# if !defined(MISSION_HPP) +# include "mission.hpp" +# endif + +#if 0 +// THIS FILE IS OBSOLETE AS OF 11-1-95 cpb + +//########################################################################## +//########################## L4Mission ################################ +//########################################################################## + + +class L4Mission : + public Mission +{ + public: + + L4Mission( + NotationFile *notation_file, + ResourceFile *resources + ); + ~L4Mission(); + + void + SetPlayerData(NotationFile *notation_file); + + Logical + TestInstance() const; + +}; + +#endif +#endif diff --git a/CODE/RP/MUNGA_L4/L4NET.HPP b/CODE/RP/MUNGA_L4/L4NET.HPP new file mode 100644 index 0000000..43ef469 --- /dev/null +++ b/CODE/RP/MUNGA_L4/L4NET.HPP @@ -0,0 +1,464 @@ +//===========================================================================// +// File: l4net.hh // +// Project: MUNGA Brick: Network Manager // +// Contents: Interface specification for network brick // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 03/02/95 GAC Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// PROPRIETARY AND CONFIDENTIAL // +//===========================================================================// + +#if !defined(L4NET_HPP) +# define L4NET_HPP + +# if !defined(L4HOST_HPP) +# include +# endif + +# if !defined(NETWORK_HPP) +# include +# endif + +# if !defined(NETNUB_HPP) +# include +# endif + +# if !defined(HOSTMGR_HPP) +# include +# endif + + class NotationFile; + class L4NetworkManager__ReceiveEggFileMessage; + class L4NetworkManager__AcknowledgeEggFileMessage; + class L4NetworkManager__HostConnectedMessage; + class L4NetworkManager__HostDisconnectedMessage; + + class NetNub + { + friend int + Netnub_Open_File( + const char* filename, + int access, + unsigned int model + ); + friend int + Netnub_Write_File( + int handle, + void *buffer, + size_t length + ); + friend int + Netnub_Close_File(int handle); + + public: + static void + SendCommand(); + }; + + extern Netcom_Ptr + Net_Common_Ptr; + + //~~~~~~~~~~~~~~~~~~~~~ MessageQueue__SendRequest ~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class MessageQueue__SendRequest: + public Plug + { + friend class HostMessageBuffer__MessageQueue; + friend class L4NetworkManager__MessageBuffer; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Private methods + // + private: + MessageQueue__SendRequest( + NetworkClient::ClientID client_ID, + Receiver::Message *message + ); + ~MessageQueue__SendRequest(); + + Logical + TestInstance() const; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Private data + // + private: + NetworkClient::ClientID + clientID; + Receiver::Message + *messageToSend; + }; + + //~~~~~~~~~~~~~~~~~~~ HostMessageBuffer__MessageQueue ~~~~~~~~~~~~~~~~~~~~~~ + + class HostMessageBuffer__MessageQueue: + public Node + { + friend class L4NetworkManager__MessageBuffer; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Private methods + // + private: + HostMessageBuffer__MessageQueue(HostID host_ID); + ~HostMessageBuffer__MessageQueue(); + + Logical + TestInstance() const; + + void + AddSendRequest( + NetworkClient::ClientID client_ID, + Receiver::Message *message + ); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Private data + // + private: + HostID + hostID; + + typedef MessageQueue__SendRequest + SendRequest; + ChainOf + sendRequestSocket; + }; + + //~~~~~~~~~~~~~~~~~~ L4NetworkManager__MessageBuffer ~~~~~~~~~~~~~~~~~~~~~~~ + + class L4NetworkManager__MessageBuffer: + public Node + { + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Public methods + // + public: + L4NetworkManager__MessageBuffer(L4NetworkManager *network_manager); + ~L4NetworkManager__MessageBuffer(); + + Logical + TestInstance() const; + + Logical + IsEmpty(); + void + AddSendRequest( + HostID host_ID, + NetworkClient::ClientID client_ID, + Receiver::Message *message + ); + void + AttemptToSend(); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Private data + // + private: + L4NetworkManager + *networkManager; + typedef HostMessageBuffer__MessageQueue + MessageQueue; + TableOf + messageQueueSocket; + IteratorPosition + currentQueueIndex; + CollectionSize + bufferSize; + #ifdef LAB_ONLY + CollectionSize + messageCount, + maxBufferSize; + #endif + }; + + inline Logical + L4NetworkManager__MessageBuffer::IsEmpty() + { + Check(this); + return (bufferSize == 0); + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~ l4Network manager~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class L4NetworkManager: + public NetworkManager + { + friend class L4NetworkManager__MessageBuffer; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Constructor, Destructor, Testing + // + public: + L4NetworkManager(); + ~L4NetworkManager(); + + static Logical + TestClass(); + Logical + TestInstance() const; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Network message methods + // + public: + void + Send( + Message *what, + ClientID to, + HostID host_ID); + void + ExclusiveBroadcast( + Message *what, + ClientID to + ); + + void + StartConnecting(Mission *mission); + + Logical + Shutdown(); + + Logical + CheckBuffers(NetworkPacket *packet); + + void + RemovePacket(NetworkPacket *packet); + + Logical + ExecuteBackground(); + + void + Marker(char *marker_text); + + void + Mode(NetworkMode myMode); + + void + CreateConsoleHost(); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Network maintenance support + // + public: + int + netPlayerCount; + + enum NetworkState + { + NormalState, + ConsoleOnly + }; + + enum NetworkStartupMode + { + SlaveMode, + MasterMode + }; + + unsigned long + CheckSocket(unsigned long socket); + unsigned long + ResolveAddress(CString host_name); + unsigned long + GetMyAddress(); + unsigned long + OpenConnection( + int connection_type, // NETNUB_TCP_LISTEN or NETNUB_TCP_OPEN + int local_port, + int remote_port, + int internet_address + ); + void + CloseConnection(unsigned long socket_ptr); // socket address from netnub (to close) + Logical + GetNextMungaPacket( + NetworkPacket *network_packet, + HostManager::RemoteHostIterator* all_iterator + ); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Shared Data support + // + public: + static Derivation ClassDerivations; + static SharedData DefaultData; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Message Support + // + public: + // + // Message IDs + // + enum + { + AcknowledgeEggFileMessageID = NetworkManager::NextMessageID, + HostConnectedMessageID, + HostDisconnectedMessageID, + NextMessageID + }; + + // + // Message types + // + typedef L4NetworkManager__AcknowledgeEggFileMessage + AcknowledgeEggFileMessage; + typedef L4NetworkManager__HostConnectedMessage + HostConnectedMessage; + typedef L4NetworkManager__HostDisconnectedMessage + HostDisconnectedMessage; + // + // Message table + // + static const HandlerEntry + MessageHandlerEntries[]; + + static MessageHandlerSet + MessageHandlers; + + void + ReceiveEggFileMessageHandler( + ReceiveEggFileMessage *EggMessage + ); + void + AcknowledgeEggFileMessageHandler( + AcknowledgeEggFileMessage *AcknowledgeEgg + ); + void + HostConnectedMessageHandler( + HostConnectedMessage *HostConnected + ); + void + HostDisconnectedMessageHandler( + HostDisconnectedMessage *ConsoleDisconnect + ); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Private methods + // + private: + typedef ChainOf + DroppedMessageHostSocket; + typedef ChainIteratorOf + DroppedMessageHostIterator; + + Logical + SendMessageToNetnub( + Message *message, + ClientID client_ID, + HostID host_ID + ); + void + SendBatchedMessageToNetnub( + Message *message, + ClientID client, + DroppedMessageHostSocket *dropped_message_host_socket + ); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Private Data + // + private: + int + numberOfMungaHostsConnected, + numberOfConsoleHostsConnected, + remoteHostCount; + NetworkStartupMode + networkStartupMode; + Logical + eggAcknowledged; + NetworkState + currentNetworkState; + L4Host + *myConsoleHost; + HostID + nextOpenHostID; + IteratorPosition + lastHostIteratorPosition; + + typedef L4NetworkManager__MessageBuffer + MessageBuffer; + MessageBuffer + messageBuffer; + }; + + //~~~~~~~~~~~~~~~~~~~~~~ L4NetworkManager inlines ~~~~~~~~~~~~~~~~~~~~~~~~~~ + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // L4NetworkManager__AcknowledgeEggFileMessage + // This message is sent back to the console to acknowledge receipt of the + // egg, it indicates this computer has established all it's connections and + // the console can procede with the next host + // + class L4NetworkManager__AcknowledgeEggFileMessage: + public NetworkManager::Message + { + public: + L4NetworkManager__AcknowledgeEggFileMessage(): + NetworkManager::Message( + L4NetworkManager::AcknowledgeEggFileMessageID, + sizeof(L4NetworkManager__AcknowledgeEggFileMessage) + ){} + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // L4NetworkManager__HostConnectedMessage + // This message is generated internally by CheckBuffers and indicates that + // a host has connected up to us. This is an INTERNAL message only and is + // not ment to be sent on the network. + class L4NetworkManager__HostConnectedMessage: + public NetworkManager::Message + { + public: + L4NetworkManager__HostConnectedMessage(HostID host_id, + unsigned long network_address, + unsigned long stream_pointer): + NetworkManager::Message( + L4NetworkManager::HostConnectedMessageID, + sizeof(L4NetworkManager__HostConnectedMessage) + ), hostID(host_id), + networkAddress(network_address), + streamPointer(stream_pointer) {} + + HostID + hostID; + unsigned long + networkAddress; + unsigned long + streamPointer; + }; + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // L4NetworkManager__HostDisconnectedMessage + // The console is expected to send us this message if it disconnects from us + // for any reason. This allows the local host to setup the internal state + // so the game will auto start even if the console can't stay connected to us + // for some reason (for example, the console simulator in the game code can't + // connect to more than one host at once). + // !!! CheckBuffers should poll the connection state of all the streams and + // generate this message automatically whenever a host drops off the net. + // !!! HACK At the moment this message is always treated as if it came from + // the console host, so it should only be sent down the console stream. + // + class L4NetworkManager__HostDisconnectedMessage: + public NetworkManager::Message + { + public: + L4NetworkManager__HostDisconnectedMessage(HostID host_id, + unsigned long stream_pointer): + NetworkManager::Message( + L4NetworkManager::HostDisconnectedMessageID, + sizeof(L4NetworkManager__HostDisconnectedMessage) + ), hostID(host_id), + streamPointer(stream_pointer) {} + HostID + hostID; + unsigned long + streamPointer; + }; + + +#endif diff --git a/CODE/RP/MUNGA_L4/L4NET.TCP b/CODE/RP/MUNGA_L4/L4NET.TCP new file mode 100644 index 0000000..7a2f268 --- /dev/null +++ b/CODE/RP/MUNGA_L4/L4NET.TCP @@ -0,0 +1,418 @@ + +#include "receiver.hpp" +#include "network.hpp" +#include "l4net.hpp" +#include "time.hpp" +#include "l4net.hpp" +extern "C" +{ + getch(); +} +// +//############################################################################## +//################# L4NetworkManager ####################### +//############################################################################## + +Logical + L4NetworkManager::TestClass() +{ +#if 0 + + + + + struct Track + { + long + departureTics; + HostID + sentBy; + long + serialNo; + char + name[120]; + }test_mess; + + + struct Traffic + { + //HostID + // echoedBy; + long + //currSerialNo, + //currArrivalTicks, + prevSerialNo, + prevArrivalTicks, + travelTimeTicksMax, + travelTimeTicksMin; + short + maxBunchSize, + bunchAmount; + long + //packets_sent, + packets_received; + + long + sequenceErrors; + }; + + Traffic traffic[10];//application->GetNetworkManager()->netPlayerCount]; + // ??? + + HostManager::RemoteHostIterator + remote_hosts(application->GetHostManager()); + Host + *this_host; + while ((this_host = remote_hosts.ReadAndNext()) != NULL) + { + Check(this_host); + HostID + this_hostID = this_host->GetHostID(); + traffic[this_hostID].prevSerialNo = 0; + traffic[this_hostID].prevArrivalTicks = 0; + traffic[this_hostID].travelTimeTicksMax= -1; + traffic[this_hostID].travelTimeTicksMin= 0x0fffffff; + traffic[this_hostID].maxBunchSize = 0; + traffic[this_hostID].bunchAmount = 0; + traffic[this_hostID].packets_received = 0; + traffic[this_hostID].sequenceErrors = 0; + + } + + HostID + my_hostID = application->GetHostManager()->GetLocalHostID(); + traffic[my_hostID].prevSerialNo = 0; + traffic[my_hostID].prevArrivalTicks = 0; + traffic[my_hostID].travelTimeTicksMax= -1; + traffic[my_hostID].travelTimeTicksMin= 0x0fffffff; + traffic[my_hostID].maxBunchSize = 0; + traffic[my_hostID].bunchAmount = 0; + traffic[my_hostID].packets_received = 0; + traffic[my_hostID].sequenceErrors = 0; + + + +// +//------------------------------------------- +// Get environmental variables: +// packet_period, packets_amount, echo_packet, print_packet +//------------------------------------------- +// + Scalar + packet_period, //sent + receive_period; //receive + long + packets_amount; + Logical + echo_packet, //=True, + print_packet; //=False; + int + broadcast_packet; //1 + char + *pp = getenv("PERIOD"); + if (pp != NULL) + { + packet_period = atof(pp); + } + else + { + packet_period = 1.0f; + } +cout<<"PERIOD = "< + what(Receiver::AnyMessageID, + sizeof(ReceiverDataMessageOf), + test_mess + ); + + Byte + message_buffer[NETWORKMANAGER_BUFFER_SIZE]; //512 + #if sizeof(NetworkPacketHeader) + sizeof(ReceiverDataMessageOf) >= \ + NETWORKMANAGER_BUFFER_SIZE + #error NETWORKMANAGER_BUFFER_SIZE too small! + #endif + + + NetworkPacket + *p = (NetworkPacket*)message_buffer; + + cout << "Packet size = " << + " sizeof(NetworkPacketHeader) + sizeof(ReceiverDataMessageOf) = " << + (sizeof(NetworkPacketHeader) + sizeof(ReceiverDataMessageOf)) << + endl; + + + Time + timer = Now(); + timer += 2.0f;//packet_period; //at the beginning it listens for 2 secs + + Time + receive_timer = Now(); + while(1) + { + + + //------------------------------------------------------------- + // Send + //------------------------------------------------------------- + if (packets < packets_amount) + { + if (timer < Now()) + { + packets++; + what.dataContents.serialNo++; + + //-------------------------- + //test testing sequence error + //-------------------------- + //if (what.dataContents.serialNo==5) + //{ + // what.dataContents.serialNo=6; + //} + + Time + departureTime = Now(); + what.dataContents.departureTics = departureTime.ticks; + + Check(application); + Check(application->GetNetworkManager()); + + for (int b=0; b + GetNetworkManager()-> + ExclusiveBroadcast( + &what, + NetworkManagerClientID + ); + } + + timer = Now(); + timer += packet_period; + + + } + } + else + { + if (packets == packets_amount) + { + packets++; + //----------------- + // set time to catch up left packets + //----------------- + timer = Now(); + timer += 2.0f; + } + else + { + if (timer < Now()) + { + //-------- + // exit + //-------- + break; + } + } + } + + //------------------------------------------------------------- + // Receive + //------------------------------------------------------------- + if (receive_timer < Now()) + { + + if (application->GetNetworkManager()->CheckBuffers(p)) + { + if (p->clientID != NetworkManagerClientID) + { + cout<<"p->messageData.messageID= "<messageData.messageID<messageData.messageLength= "<messageData.messageLength<clientID == NetworkManagerClientID) + //&& (p->messageData.messageID == Receiver::AnyMessageID) + //&& (p->messageData.messageLength == sizeof(ReceiverDataMessageOf)) + ) + { + Verify(p->messageData.messageID == Receiver::AnyMessageID); + Verify(p->messageData.messageLength == sizeof(ReceiverDataMessageOf)); + ReceiverDataMessageOf* + what_ptr = (ReceiverDataMessageOf*)(&p->messageData); + if (print_packet) + { + cout<dataContents.name<dataContents.sentBy != my_hostID)) + { + //----------------------------------------------------- + // Got their packet - Send back + //----------------------------------------------------- + Str_Copy(what_ptr->dataContents.name, + "RETURNED PACKET", + sizeof(what_ptr->dataContents.name) + ); + Check(application); + Check(application->GetNetworkManager()); + application-> + GetNetworkManager()-> + Send(what_ptr, + NetworkManagerClientID, + p->fromHost + ); + } + + + if (what_ptr->dataContents.sentBy == my_hostID) + { + //----------------------------------------------------- + // Got our own returned packet + // + // - Check serialNo; Get travel time; ... + //----------------------------------------------------- + traffic[p->fromHost].packets_received++; + //---------------- + // Get travel time + //---------------- + Time + travelTime = Now(); + travelTime.ticks -= what_ptr->dataContents.departureTics; + traffic[p->fromHost].travelTimeTicksMax = + Max(travelTime.ticks, traffic[p->fromHost].travelTimeTicksMax); + traffic[p->fromHost].travelTimeTicksMin = + Min(travelTime.ticks, traffic[p->fromHost].travelTimeTicksMin); + + //---------------- + // Check serialNo + //---------------- + if (what_ptr->dataContents.serialNo != + traffic[p->fromHost].prevSerialNo + 1) + { + traffic[p->fromHost].sequenceErrors++; + } + traffic[p->fromHost].prevSerialNo = what_ptr->dataContents.serialNo; + + } + } + } + + receive_timer = Now(); + receive_timer += receive_period; + } + }//while + + + if (broadcast_packet) + { + remote_hosts.First(); + while ((this_host = remote_hosts.ReadAndNext()) != NULL) + { + Check(this_host); + HostID + this_hostID = this_host->GetHostID(); + cout + <<"From " + < +# endif + +# if defined(TRACE_RIO_RECEIVE_PACKET) + extern BitTrace RIO_Receive_Packet; +# define SET_RIO_RECEIVE_PACKET() RIO_Receive_Packet.Set() +# define CLEAR_RIO_RECEIVE_PACKET() RIO_Receive_Packet.Clear() +# else +# define SET_RIO_RECEIVE_PACKET() +# define CLEAR_RIO_RECEIVE_PACKET() +# endif + +# if defined(TRACE_RIO_SEND_PACKET) + extern BitTrace RIO_Send_Packet; +# define SET_RIO_SEND_PACKET() RIO_Send_Packet.Set() +# define CLEAR_RIO_SEND_PACKET() RIO_Send_Packet.Clear() +# else +# define SET_RIO_SEND_PACKET() +# define CLEAR_RIO_SEND_PACKET() +# endif + + class PCSerialPacket; + class PCSerialPacketScanner; + + enum + { + PCSPAKInitErrDPMI = -2, + PCSPAKInitErrAlloc = -1, + PCSPAKInitOk = 0 + }; + + extern "C" int // see error codes, above + PCSPAKInit( + PCSerialPacket *ptr, + Word rate, + Word port, + Word intnum, + Byte *rxLength, + Word rxMaximum, + Byte *txLength, + Word txMaximum + ); + + extern "C" void + PCSPAKTerm( + PCSerialPacket *ptr + ); + + extern "C" Logical + PCSPAKTestInstance( + PCSerialPacket *ptr + ); + + extern "C" int + PCSPAKReceive( + PCSerialPacket *ptr, + Byte *destPtr + ); + + extern "C" void + PCSPAKSend( + PCSerialPacket *ptr, + Byte *srcPtr + ); + + extern "C" int + PCSPAKActive( + PCSerialPacket *ptr + ); + + extern "C" Word + PCSPAKErrors( + PCSerialPacket *ptr + ); + + extern "C" Logical + PCSPAKIRQState(); + + extern "C" int + PCSPAKIsSignatureBad( + const volatile PCSerialPacket *ptr + ); + + extern "C" int + PCSPAKReceiveCount( + PCSerialPacket *ptr + ); + + extern "C" int + PCSPAKTransmitCount( + PCSerialPacket *ptr + ); + + extern "C" void + PCSPAKSetDTR( + PCSerialPacket *ptr, + Logical on + ); + + // WARNING**WARNING**WARNING**WARNING**WARNING**WARNING**WARNING**WARNING + // Do NOT change ANY of the following lines without making + // corresponding changes in PCSerial.asm! PCSPAK.hh exists + // ONLY to inform C++ compilers of the data and structures + // used by PCSPAK.asm! + // WARNING**WARNING**WARNING**WARNING**WARNING**WARNING**WARNING**WARNING + + // These are purposely grouped as two parameters in one equate. + // The standard PC COM ports ALWAYS use these combinations. +# define PCSP_COM1 0x3F8,0x0C // portAddress,interruptNumber +# define PCSP_COM2 0x2F8,0x0B +# define PCSP_COM3 0x3E8,0X0C +# define PCSP_COM4 0x2E8,0x0B + + // Data rates +# define PCSP_300 0x0180 // 300 Baud +# define PCSP_1200 0x0060 // 1200 Baud +# define PCSP_2400 0x0030 // 2400 Baud +# define PCSP_9600 0x000C // 9600 Baud +# define PCSP_19P2 0x0006 // 19200 Baud +# define PCSP_38P4 0x0003 // 38400 Baud +# define PCSP_115K 0x0001 // 115,200 Baud (not supported on all PC's) + + // This is for INTERNAL USE only (reflects structure in .ASM file) + struct PCSerPackBuf + { + Word head, tail, tempHead, tempTail, count, tempIn, tempOut; + Byte data[512]; // was 256 before 7-13-95 cpb + // WARNING: make ABSOLUTELY SURE this matches pcspak.asm + }; + + class PCSerialPacket + { + friend class PCSerialPacketScanner; + + public: + PCSerialPacket() + { } + + ~PCSerialPacket() + { + PCSPAKTerm(this); + } + + // Only call Initialize(...) ONCE during the lifetime of the object! + int + Initialize( + Word rate, + Word port, + Word intNum, + Byte *rxLengths, + Word rxCount, + Byte *txLengths, + Word txCount + ) + { + return PCSPAKInit( + this, + rate, + port, + intNum, + rxLengths, + rxCount, + txLengths, + txCount + ); + } + + Logical + TestInstance() + { return PCSPAKTestInstance(this); } + + int + ReceivePacket(Byte *destPtr) // returns len (zero if none) + { + SET_RIO_RECEIVE_PACKET(); + int result = PCSPAKReceive(this, destPtr); + CLEAR_RIO_RECEIVE_PACKET(); + return result; + } + + void + SendPacket(Byte *srcPtr) // sends packet + { + SET_RIO_SEND_PACKET(); + PCSPAKSend(this, srcPtr); + CLEAR_RIO_SEND_PACKET(); + } + + // error bits returned by PCSerialPacket::Errors() + enum ErrorBits { + overrunError=0x0002, + parityError=0x0004, + framingError=0x0008, + breakDetect=0x0010, + initError=0x0100, + txEarlyReply=0x0200, + txAbandonPacket=0x0400, + txRestart=0x0800, + txNakReply=0x1000, + rxSequenceError=0x2000, + rxChecksumError=0x4000, + rxCommandError=0x8000 + }; + + int + ReceiveQueueCount() + { return PCSPAKReceiveCount(this); } + + int + TransmitQueueCount() + { return PCSPAKTransmitCount(this); } + + void + SetDTR(Logical on) + { PCSPAKSetDTR(this, on); } + + int + IsActive() + { return PCSPAKActive(this); } + + Word + Errors() // returns error value, clears it + { return PCSPAKErrors(this); } + +# if defined(USE_SIGNATURE) + friend int + Is_Signature_Bad(const volatile PCSerialPacket *ptr) + { return PCSPAKIsSignatureBad(ptr); } +# endif + + protected: + Word portBase; + Word Error; + + Byte enabled; + Byte txHoldOff; + Byte txReply; + Byte txState; + Byte txCount; + Byte txResetCount; + Byte txErrorCount; + Byte txIdleCount; + Byte txChecksum; + Byte txMaximum; + + Byte rxFlags; + Byte rxState; + Byte rxCount; + Byte rxChecksum; + Byte rxMaximum; + + LWord txLengthPtr; + LWord rxLengthPtr; + + LWord intDataPtr; +// LWord hackCount; //WGR previously missing: seen in pcspak.asm + + PCSerPackBuf txBuf; + PCSerPackBuf rxBuf; + }; + +#endif + diff --git a/CODE/RP/MUNGA_L4/L4PLASMA.CPP b/CODE/RP/MUNGA_L4/L4PLASMA.CPP new file mode 100644 index 0000000..75579ab --- /dev/null +++ b/CODE/RP/MUNGA_L4/L4PLASMA.CPP @@ -0,0 +1,333 @@ +//===========================================================================// +// File: L4plasma.cpp // +// Project: MUNGA Brick: Applications-specific controls module // +// Contents: Interface specification for plasma display // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- -----------------------------------------------------------// +// 02/08/95 CPB Initial coding. // +// 06/15/95 CPB Changed to Video8BitBuffered, added transmission. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. All rights reserved // +// PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(L4PLASMA_HPP) +# include +#endif + +#if !defined(TIME_HPP) +# include +#endif + +//######################################################################## +//############################# PlasmaDisplay ############################ +//######################################################################## +PlasmaDisplay::PlasmaDisplay( + Word port, + Word int_num +): + Video8BitBuffered(plasmaWidth, plasmaHeight) +{ + //------------------------------------ + // Create serial interface + //------------------------------------ + pc_serial = new PCSerial(PCS_9600, PCS_N81, port, int_num); + if (pc_serial != NULL) + { + Register_Object(pc_serial); + pc_serial->FlowControlEnable(False); + //------------------------------------ + // Turn off the cursor + //------------------------------------ + static char + cursorOffString[] = { 27 /*ESC*/, 'G', (char) 0x00 }; + + pc_serial->SendString(cursorOffString, 3); + } + //------------------------------------ + // Clear update flag array + //------------------------------------ + currentTransferLine = 0; + updateInProgress = False; + + for(int i=0; iTransmitCharCount() <= 0) + { + if (!pc_serial->IsActive()) + { + break; + } + } + } + //--------------------------------------------------------------------- + // Delete the serial interface + //--------------------------------------------------------------------- + Unregister_Object(pc_serial); + delete pc_serial; + } + Check_Fpu(); +} + +Logical + PlasmaDisplay::TestInstance() const +{ + return Video8BitBuffered::TestInstance(); +} + +void + PlasmaDisplay::ShowInstance(char *indent) +{ + cout << indent << "Plasma:\n"; + + char + temp[80]; + + Str_Copy(temp,indent, 80); + Str_Cat(temp,"...", 80); + + Video8BitBuffered::ShowInstance(temp); + Check_Fpu(); +} + + +void + sendLine( + PCSerial *pc_serial, + int line_number, + Byte *source_pointer, + int source_width + ) +{ + char + graphics[32]; // We only need 16...the extra is just in case. + int + x, + index; + Byte + byte, + byte_bit; + //-------------------------------------------- + // Send header + //-------------------------------------------- + graphics[0] = (char) 27; // ascii ESC + graphics[1] = 'P'; // graphics command + graphics[2] = (char) 0; // screen number + graphics[3] = (char) line_number; // Y position + graphics[4] = (char) 0; // X BYTE position + graphics[5] = (char) ((source_width+7)>>3); // width in bytes + graphics[6] = (char) 1; + + pc_serial->SendString(graphics, 7); + //-------------------------------------------- + // Send data + //-------------------------------------------- + byte = 0; + byte_bit = 0x80; + index = 0; + for(x=0; x>= 1; + // + // If entire byte collected, send it + // + if (byte_bit == 0) + { + Verify(index < sizeof(graphics)); + graphics[index++] = byte; + byte = 0; + byte_bit = 0x80; + } + } + // + // End of source line: send remaining bits + // + if (byte_bit != 0x80) + { + graphics[index++] = byte; + } + // + // Send graphics data + // + pc_serial->SendString(graphics, index); + Check_Fpu(); +} + +void + PlasmaDisplay::Scan(Logical forceAll) +{ + Word + changed_line = (Word) forceAll, + *changed_line_pointer = changedLine; + char + *update_pointer=updateFlag; + int + y; + + for(y=0; yTransmitCharCount() == 0) + { + total_count = plasmaHeight; + transfer_count = 4; + while(transfer_count>0) + { + //----------------------------------------- + // Transfer a line if it's ready + //----------------------------------------- + if (updateFlag[currentTransferLine]) + { + //----------------------------------------- + // Decrement the 'transfer count' + //----------------------------------------- + --transfer_count; + //----------------------------------------- + // Clear the 'update' flag + //----------------------------------------- + updateFlag[currentTransferLine] = 0; + //----------------------------------------- + // Send the line data to the display + //----------------------------------------- + sendLine( + pc_serial, + currentTransferLine, + pixelBuffer->Data.MapPointer + + (pixelBuffer->Data.Size.x * currentTransferLine), + pixelBuffer->Data.Size.x + ); + } + //----------------------------------------- + // Increment currentTransferLine + //----------------------------------------- + if (++currentTransferLine >= plasmaHeight) + { + currentTransferLine = 0; + } + //----------------------------------------- + // Reset to top if all lines scanned + //----------------------------------------- + if (--total_count < 0) + { + currentTransferLine = 0; // reset to top line + updateInProgress = False; + result = False; // False == 'all data sent' + break; + } + } + } + } + Check_Fpu(); + return result; +} + +void + PlasmaDisplay::WaitForUpdate() +{ + Time + end_time; + + end_time = Now(); + end_time += 5.0; // We'll wait this many seconds to update the display- + + while (updateInProgress) + { + Update(False); + + if (Now() >= end_time) + { + break; + } + } + Check_Fpu(); +} + + + + + + + + + diff --git a/CODE/RP/MUNGA_L4/L4PLASMA.HPP b/CODE/RP/MUNGA_L4/L4PLASMA.HPP new file mode 100644 index 0000000..c6bb04c --- /dev/null +++ b/CODE/RP/MUNGA_L4/L4PLASMA.HPP @@ -0,0 +1,70 @@ +//===========================================================================// +// File: L4plasma.hpp // +// Project: MUNGA Brick: Applications-specific controls module // +// Contents: Interface specification for plasma display // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- -----------------------------------------------------------// +// 04/20/95 CPB Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. All rights reserved // +// PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(L4PLASMA_HPP) +# define L4PLASMA_HPP + +# if !defined(L4VB8_HPP) +# include +# endif + +# if !defined(L4SERIAL_HPP) +# include +# endif + + //######################################################################## + //################################ Plasma ################################ + //######################################################################## + class PlasmaDisplay : + public Video8BitBuffered + { + public: + enum + { + plasmaWidth=128, + plasmaHeight=32 + }; + + PlasmaDisplay(Word port, Word int_num); + + ~PlasmaDisplay(); + + Logical + TestInstance() const; + + void + ShowInstance(char *indent); + + Logical + Update(Logical forceall); + + void + WaitForUpdate(); + + protected: + void + Scan(Logical forceall); + + Logical + forceAll, + updateInProgress; + + PCSerial + *pc_serial; + int + currentTransferLine; + char + updateFlag[32]; + }; + +#endif diff --git a/CODE/RP/MUNGA_L4/L4RIO.CPP b/CODE/RP/MUNGA_L4/L4RIO.CPP new file mode 100644 index 0000000..0d4e443 --- /dev/null +++ b/CODE/RP/MUNGA_L4/L4RIO.CPP @@ -0,0 +1,1675 @@ +//===========================================================================// +// File: RIO.cc // +// Project: MUNGA Brick: Platform-specific IO // +// Contents: Remote I/O interface // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- -----------------------------------------------------------// +// 01/30/95 CPB Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. All rights reserved // +// PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(L4RIO_HPP) +# include +#endif + +#if !defined(L4CTRL_HPP) +# include +#endif + +#if defined(TRACE_RIO_RECEIVE_PACKET) + BitTrace RIO_Receive_Packet("RIO Receive Packet"); +#endif + +#if defined(TRACE_RIO_SEND_PACKET) + BitTrace RIO_Send_Packet("RIO Send Packet); +#endif + +#if defined(DEBUG) +# define Test_Tell(n) DEBUG_STREAM << n +#else +# define Test_Tell(n) +#endif + +#define default_deadband_value 0.03 + +static Byte RIOLengths[] = { + 0, // CheckRequest + 0, // VersionRequest + 0, // AnalogRequest + 1, // ResetRequest + 2, // LampRequest + 2, // CheckReply + 2, // VersionReply + 10, // AnalogReply + 1, // ButtonPressed + 1, // ButtonReleased + 2, // KeyPressed + 2, // KeyReleased + 1 // TestModeChange +}; + +Byte RIO::reply_check_string[] = {RIO::CheckReply, 3, 2 }; +Byte RIO::reply_version_string[] = {RIO::VersionReply, 1, 23}; +Byte RIO::reply_button_press_string[] = {RIO::ButtonPressed, 22}; +Byte RIO::reply_button_release_string[]= {RIO::ButtonReleased, 22}; +Byte RIO::reply_key_press_string[] = {RIO::KeyPressed, 0, 4}; +Byte RIO::reply_key_release_string[] = {RIO::KeyReleased, 0, 4}; +Byte RIO::reply_test_enter_string[] = {RIO::TestModeChange, 1}; +Byte RIO::reply_test_exit_string[] = {RIO::TestModeChange, 0}; +Byte RIO::reply_analog_string[] = +{ + RIO::AnalogReply, 1, 0, 2, 0, 3, 0, 4, 0, 5, 0 +}; + +// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Utilities ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +int + CombinePair(Byte low_value, Byte high_value) +{ + int result; + + result = ((int) (low_value & 0x7F)) | (((int) high_value) << 7); + if (result & 0x2000) + { + result |= ~0x3FFF; + } + Check_Fpu(); + return result; +} + + +void + BoardError(NotationFile *notation_file, char *type, int position) +{ + Check(notation_file); + Check_Pointer(type); + + char + where[40]; + + sprintf(where, "%s@Slot=%d:Address=%d", type, position >> 3, position & 7); + notation_file->AppendEntry("RIOBoardErrors", "error", where); + Check_Fpu(); +} + +//########################################################################### +//############################ Joystick classes ############################# +//########################################################################### +const char *FilterChannel::highName = "high"; +const char *FilterChannel::centerName = "center"; +const char *FilterChannel::lowName = "low"; +const char *FilterChannel::joystickXName = "JoystickX"; +const char *FilterChannel::joystickYName = "JoystickY"; +const char *FilterChannel::throttleName = "Throttle"; +const char *FilterChannel::leftPedalName = "LeftPedal"; +const char *FilterChannel::rightPedalName = "RightPedal"; + +FilterChannel::FilterChannel(): + average(5,0) +{ + valuesFromFile = False; + previousValue = 0; + polarity = unipolar; + mode = unaligned; + deadbandScalar = default_deadband_value; + + lowerDeadband = 0; + upperDeadband = 0; + + Check_Fpu(); +} + +FilterChannel::FilterChannel( + NotationFile *init_file, + const char *page_name, + int default_min, int default_max +): + average(5,0) +{ + valuesFromFile = True; + previousValue = 0; + polarity = unipolar; + mode = normal; + deadbandScalar = default_deadband_value; + + pageName = page_name; + min = default_min; + max = default_max; + //------------------------------------------- + // Attempt to read calibration values from + // the notation file. If the values don't + // exist, then create them from the defaults. + //------------------------------------------- + if (init_file->GetEntry(pageName, highName, &max) == 0) + { + init_file->SetEntry(pageName, highName, default_max); + } + + if (init_file->GetEntry(pageName, lowName, &min) == 0) + { + init_file->SetEntry(pageName, lowName, default_min); + } + + center = (max-min)/2; + + Check_Fpu(); +} + +FilterChannel::FilterChannel( + NotationFile *init_file, + const char *page_name, + int default_min, int default_center, int default_max +): + average(5,0) +{ + valuesFromFile = True; + previousValue = 0; + polarity = bipolar; + mode = normal; + deadbandScalar = default_deadband_value; + + pageName = page_name; + min = default_min; + center = default_center; + max = default_max; + + //------------------------------------------- + // Attempt to read calibration values from + // the notation file. If the values don't + // exist, then create them from the defaults. + //------------------------------------------- + + if (init_file->GetEntry(pageName, highName, &max) == 0) + { + init_file->SetEntry(pageName, highName, default_max); + } + + if (init_file->GetEntry(pageName, centerName, ¢er) == 0) + { + init_file->SetEntry(pageName, centerName, default_center); + } + + if (init_file->GetEntry(pageName, lowName, &min) == 0) + { + init_file->SetEntry(pageName, lowName, default_min); + } + + CalculateDeadBands(); + + Check_Fpu(); +} + +FilterChannel::~FilterChannel() +{ + Check(this); + Check_Fpu(); +} + +void + FilterChannel::SetPolarity(PolarMode newPolarity) +{ + Check(this); + polarity = newPolarity; + + // HACK - filterchannel must be realigned when changing to bipolar! + + Check_Fpu(); +} + +void + FilterChannel::SetDeadBand(Scalar dead_band) +{ + Check(this); + + deadbandScalar = fabs(dead_band); + //--------------------------------------------------------- + // Recalculate deadbands and ranges if needed + //--------------------------------------------------------- + if (mode == normal) + { + CalculateDeadBands(); + } + Check_Fpu(); +} + +void + FilterChannel::BeginAlignment() +{ + Check(this); + //--------------------------------------------------------- + // Set bogus min/max, force update + //--------------------------------------------------------- + mode = unaligned; + min = 10000; + max = -10000; + Check_Fpu(); +} + +void + FilterChannel::EndAlignment(NotationFile *init_file) +{ + Check(this); + //--------------------------------------------------------- + // Save the most recent value as the center + //--------------------------------------------------------- + center = previousValue; + //------------------------------------------------------------ + // If channel was never adjusted, synthesize reasonable values + //------------------------------------------------------------ + // I don't trust abs(): saw weirdness. + int + delta = max-min; + if (delta < 0) + { + delta = -delta; + } + + if (delta < 10) + { + if (polarity == bipolar) + { + min = center-100; + max = center+100; + } + else + { + min = 0; + max = 100; + } + } + else + { + int + setback = delta/33; // move the edges in by 3% + + max -= setback; + min += setback; + } + //--------------------------------------------------------- + // Save the new values + //--------------------------------------------------------- + if (valuesFromFile) + { + if (init_file != NULL) + { + init_file->SetEntry(pageName, highName, max); + init_file->SetEntry(pageName, lowName, min); + + if (polarity == bipolar) + { + init_file->SetEntry(pageName, centerName, center); + } + } + } + //--------------------------------------------------------- + // Calculate real deadband values + //--------------------------------------------------------- + CalculateDeadBands(); + //--------------------------------------------------------- + // Go to normal mode + //--------------------------------------------------------- + mode = normal; + + Check_Fpu(); +} + +Scalar + FilterChannel::Update(int value) +{ + Check(this); + + Scalar + result = 0.0; + + previousValue = value; + + //--------------------------------------------------------- + // Generate average, use for min/max determination + //--------------------------------------------------------- + average.Add(value); + { + int + the_average = average.CalculateOlympicAverage(); + + if (the_average < min) { min = the_average; } + if (the_average > max) { max = the_average; } + } + //--------------------------------------------------------- + // Perform position calculations + //--------------------------------------------------------- + switch (polarity) + { + case unipolar: + { + //--------------------------------------------------------- + // Subtract 'min' from current value + //--------------------------------------------------------- + value -= min; + //--------------------------------------------------------- + // Subtract deadband value + //--------------------------------------------------------- + int + deadband_adjustment = (int) ((max-min)*deadbandScalar); + + value -= deadband_adjustment; + if (value > 0) + { + int + adjusted_maximum = max-deadband_adjustment; + + if (adjusted_maximum > 0) + { + result = ((Scalar)value)/adjusted_maximum; + } + } + } + break; + + case bipolar: + if (mode == unaligned) + { + //--------------------------------------------------------- + // Use 1/2 (max-min) as temporary center + //--------------------------------------------------------- + center = (max-min) >> 1; + //--------------------------------------------------------- + // Set temporary deadband values + //--------------------------------------------------------- + upperDeadband = (int) ((max-min)*deadbandScalar); + lowerDeadband= upperDeadband; + } + //--------------------------------------------------------- + // Adjust for center + //--------------------------------------------------------- + value -= center; + //--------------------------------------------------------- + // Generate scaled results + //--------------------------------------------------------- + if (value < 0) + { + value += lowerDeadband; + if (value < 0) + { + if (lowerRange > 0) + { + if (value <= -lowerRange) + { + result = -1.0; + } + else + { + result = ((Scalar) value)/lowerRange; + } + } + } + } + else + { + value -= upperDeadband; + if (value > 0) + { + if (upperRange > 0) + { + if (value >= upperRange) + { + result = 1.0; + } + else + { + result = ((Scalar) value)/upperRange; + } + } + } + } + break; + } + //--------------------------------------------------------- + // Return result + //--------------------------------------------------------- + Check_Fpu(); + +# if defined(DEBUG) + DEBUG_STREAM << pageName << ":" << value << "=" << result << "\n"; +# endif + + return result; +} + +Logical + FilterChannel::TestInstance() const +{ + return True; +} + +void + FilterChannel::CalculateDeadBands() +{ + Check(this); + + lowerDeadband = (int) ((center-min)*deadbandScalar + .5); + lowerRange = center - (min+lowerDeadband); + + upperDeadband = (int) ((max-center)*deadbandScalar + .5); + upperRange = (max-upperDeadband) - center; + +# if defined(DEBUG) + DEBUG_STREAM << "pageName =" << pageName <<"\n"; + DEBUG_STREAM << "min =" << min <<"\n"; + DEBUG_STREAM << "center=" << center <<"\n"; + DEBUG_STREAM << "max= " << max <<"\n"; + DEBUG_STREAM << "lowerDeadband= " << lowerDeadband <<"\n"; + DEBUG_STREAM << "lowerRange = " << lowerRange <<"\n"; + DEBUG_STREAM << "upperDeadband= " << upperDeadband <<"\n"; + DEBUG_STREAM << "upperRange = " << upperRange <<"\n"; +# endif + + Check_Fpu(); +} + + +// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ranger ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Ranger::Ranger( + const char *page_name, + int hardware_min, + int hardware_max, + Scalar deadband +){ + Check_Pointer(this); + + pageName = page_name; + hardwareMinimum = hardware_min; + hardwareMaximum = hardware_max; + + SetDeadBand(deadband); + //------------------------------------------------------------ + // We ASSUME that the control is at rest (center for joystick) + //------------------------------------------------------------ + ForceToZero(); + + Check_Fpu(); +} + +Ranger::~Ranger() +{ + Check(this); + Check_Fpu(); +} + +Logical + Ranger::TestInstance() const +{ + Check_Fpu(); + return True; +} + +void + Ranger::SetDeadBand(Scalar dead_band) +{ + Check(this); + + deadbandInteger = + (int)((hardwareMaximum - hardwareMinimum) * fabs(dead_band)); + + Check_Fpu(); +} + +void + Ranger::ForceToZero() +{ + Check(this); + sampledInputFlag = False; + Check_Fpu(); +} + +Scalar + Ranger::Update(int input) +{ + Check(this); + int + range; + Scalar + result = ((Scalar) 0); + + Verify(hardwareMaximum > hardwareMinimum); + //------------------------------------------------------------ + // Uncentered processing: slide offset to keep value + // within the proscribed range + //------------------------------------------------------------ + if (hardwareMinimum >= 0) // this designates an uncentered Ranger + { + //--------------------------------------------------------- + // Sample current input for offset value + //--------------------------------------------------------- + if (!sampledInputFlag) + { + sampledInputFlag = True; + + offset = -input; + //------------------------------------------ + // Initialize to reasonable values + //------------------------------------------ + highestInput = (hardwareMaximum*3)/4; + lowestInput = hardwareMinimum; + } + //------------------------------------------------------------ + // Add offset + //------------------------------------------------------------ + input += offset; + //------------------------------------------------------------ + // Slide offset if needed + //------------------------------------------------------------ + if (input > hardwareMaximum) + { + offset -= input-hardwareMaximum; + input = hardwareMaximum; + } + else if (input < hardwareMinimum) + { + offset -= input-hardwareMinimum; + input = hardwareMinimum; + } + //----------------------------------------------------------------- + // Keep track of limit (lowestValue will always be hardwareMinimum) + //----------------------------------------------------------------- + if (input > highestInput) + { + highestInput = input; + } + //------------------------------------------------------------ + // Generate scaled result + //------------------------------------------------------------ + input -= hardwareMinimum; // normalize to zero + + if (input > deadbandInteger) + { + range = highestInput - lowestInput - deadbandInteger; + + if (range > 0) + { + result = ((Scalar)(input-deadbandInteger))/(Scalar)range; + } + } + } + //------------------------------------------------------------ + // Centered processing: keep max, min of input to + // determine total range + //------------------------------------------------------------ + else + { + //--------------------------------------------------------- + // Sample current input for offset value + //--------------------------------------------------------- + if (!sampledInputFlag) + { + sampledInputFlag = True; + //------------------------------------------ + // Set offset such that this is the new zero + //------------------------------------------ + offset = -input; + //------------------------------------------ + // Initialize to reasonable values... + // ...add offset to reflect true limits + // that are available with this offset + //------------------------------------------ + // HardwareMinimum is known to be negative because of 'if' statement + Verify(hardwareMaximum > 0); + + highestInput = (hardwareMaximum*3)/4 + offset; + lowestInput = (hardwareMinimum*3)/4 + offset; + } + //------------------------------------------------------------ + // Adjust for offset + //------------------------------------------------------------ + input += offset; + + if (input > highestInput) + { + highestInput = input; + } + if (input < lowestInput) + { + lowestInput = input; + } + //--------------------------------------- + // Let's make sure before we continue... + //--------------------------------------- + Verify(highestInput >= lowestInput); + Verify(input <= highestInput); + Verify(input >= lowestInput); + //------------------------------------------------------------ + // Generate scaled result + //------------------------------------------------------------ + if (input < -deadbandInteger) + { + //--------------------------------------- + // Generate range + //--------------------------------------- + range = abs(lowestInput) - deadbandInteger; + //--------------------------------------- + // Generate scaled result + //--------------------------------------- + if (range > 0) + { + result = ((Scalar)(input+deadbandInteger))/(Scalar)range; + } + } + else if (input > deadbandInteger) + { + //--------------------------------------- + // Generate range + //--------------------------------------- + range = abs(highestInput) - deadbandInteger; + //--------------------------------------- + // Generate scaled result + //--------------------------------------- + if (range > 0) + { + result = ((Scalar)(input-deadbandInteger))/(Scalar)range; + } + } + } + + if (result > ((Scalar) 1.0)) + { + DEBUG_STREAM << + "Too high!" << + " input=" << input << " result=" << result << "\n" << + + pageName << + " offset=" << offset << + " lowestInput=" << lowestInput << + " highestInput=" << highestInput << + " deadbandInteger=" << deadbandInteger << + " range=" << range << + "\n"; + + result = ((Scalar) 1.0); +//Fail("Ranger::Update above 1.0"); + } + else if (result < ((Scalar)-1.0)) + { + DEBUG_STREAM << + "Too low!" << + " input=" << input << " result=" << result << "\n" << + + pageName << + " lowestInput=" << lowestInput << + " highestInput=" << highestInput << + " deadbandInteger=" << deadbandInteger << + " range=" << range << + "\n"; + + result = ((Scalar)-1.0); +//Fail("Ranger::Update below -1.0"); + } + + Verify(result <= ((Scalar) 1.0)); + Verify(result >= ((Scalar) -1.0)); + + Check_Fpu(); + return result; +} + +void + Ranger::Statistics(NotationFile *failure_file) +{ + Check(this); + Check(failure_file); + + int + range = highestInput - lowestInput, + hardware_range = hardwareMaximum - hardwareMinimum; + + Verify(hardware_range > 0); + + Scalar + range_percentage = ((Scalar) range)/hardware_range; + //--------------------------------- + // Report slippage + //--------------------------------- + if (range_percentage > (Scalar) 1.1) // allow 10% overrange + { + failure_file->SetEntry(pageName, "Overrange", range_percentage); + } + //--------------------------------- + // Report low range + //--------------------------------- + if (range_percentage < (Scalar) .50) + { + failure_file->SetEntry(pageName, "UnderRange", range_percentage); + } + Check_Fpu(); +} + +//######################################################################## +//############################### RIO #################################### +//######################################################################## + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Constructor +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +RIO::RIO(Word port, Word intNum, Logical perform_tests): + PCSerialPacket() +{ + Tell("RIO initialization: variables\n"); + Check_Pointer(this); + + // + //--------------------------------------------------------------------- + // Initialize values + //--------------------------------------------------------------------- + // + TestModeActive = 0; + + Throttle = (Scalar) 0; + LeftPedal = (Scalar) 0; + RightPedal = (Scalar) 0; + JoystickX = (Scalar) 0; + JoystickY = (Scalar) 0; + + remoteRetryCount = 0; + remoteAbandonCount = 0; + remoteFullBufferCount = 0; + lineErrorCount = 0; + overrunCount = 0; + abandonCount = 0; + operational = True; +// discardCount = 0; + + failureFile = NULL; + failureFileOpenCount = 0; + // + //--------------------------------------------------------------------- + // Clear error log + //--------------------------------------------------------------------- + // + OpenFailureFile(); + Check(failureFile); + failureFile->DeletePage("RIOBoardErrors"); + failureFile->DeletePage("RIODeadLamps"); + failureFile->DeletePage("RIOErrors"); + CloseFailureFile(); + // + //--------------------------------------------------------------------- + // Read value ranges from notation file, initialize rangers + // + // Order of integers is: minimum, maximum, end-zone-range, deadband + //--------------------------------------------------------------------- + // + { +// NotationFile +// stat_file((const char *) "RIO.INI"); + + leftPedalRanger = new Ranger("LeftPedal", 0, 470, .0); + Register_Object(leftPedalRanger); + + rightPedalRanger = new Ranger("RightPedal", 0, 470, .0); + Register_Object(rightPedalRanger); + + throttleRanger = new Ranger("Throttle", 0, 800, .05); + Register_Object(throttleRanger); + + joystickXRanger = new Ranger("JoystickX", -96, 96, .05); + Register_Object(joystickXRanger); + + joystickYRanger = new Ranger("JoystickY", -97, 108, .05); + Register_Object(joystickYRanger); + } + // + //--------------------------------------------------------------------- + // Start the PCSerialPacket + //--------------------------------------------------------------------- + // + int + status = PCSerialPacket::Initialize( + PCSP_9600, + port, + intNum, + (Byte *) RIOLengths, + 13, + (Byte *) RIOLengths, + 13 + ); + + switch(status) + { + case PCSPAKInitOk: + // silent if OK + break; + case PCSPAKInitErrDPMI: + DEBUG_STREAM << "RIO::RIO DPMI error!\n"; + break; + case PCSPAKInitErrAlloc: + DEBUG_STREAM << "RIO::RIO buffer allocation error!\n"; + break; + default: + DEBUG_STREAM << "RIO::RIO unexpected init result=" << status << "!\n"; + break; + } + +#if 0 + extern Byte previousIMR, previousISR, previousIRR; + extern Byte middleIMR, middleISR, middleIRR; + extern Byte postIMR, postISR, postIRR; + extern Byte pcspakLSR, pcspakIER, pcspakIIR; + + DEBUG_STREAM << + hex << + "previousIMR=" << (int) (previousIMR & 0xFF) << + ", mid=" << (int) (middleIMR & 0xFF) << + ", post=" << (int) (postIMR & 0xFF) << "\n" << + + "previousISR=" << (int) (previousISR & 0xFF) << + ", mid=" << (int) (middleISR & 0xFF) << + ", post=" << (int) (postISR & 0xFF) << "\n" << + + "previousIRR=" << (int) (previousIRR & 0xFF) << + ", mid=" << (int) (middleIRR & 0xFF) << + ", post=" << (int) (postIRR & 0xFF) << "\n" << + + "pcspakLSR=" << (int) (pcspakLSR & 0xFF) << + ", pcspakIER=" << (int) (pcspakIER & 0xFF) << + ", pcspakIIR was=" << (int) (pcspakIIR & 0xFF) << "\n" << + dec; +#endif + + MajorRevision = 0xFF; + MinorRevision = 0xFF; + + if (perform_tests) + { + // + //--------------------------------------------------------------------- + // Reset remote I/O board + //--------------------------------------------------------------------- + // + Time + when; + int + bomb = 0; + + RIOEvent + dummy_event; + + Tell("RIO initialization: reset board\n"); + + // Reset RIO board + SetDTR(True); // Assert reset + when = Now(); + for(when += .1; Now() < when; ); + + SetDTR(False); // Retract reset + when = Now(); + for(when += 1.0; Now() < when; ); + + // + //--------------------------------------------------------------------- + // Wait for test mode to start (or bomb out) + //--------------------------------------------------------------------- + // + Tell("RIO initialization: check board\n"); + RequestCheck(); + + when = Now(); + when += 5.0; + while (!TestModeActive) + { + if (Now() > when) + { + bomb = 1; + DEBUG_STREAM << "RIO never came back from check request!\n"; + break; + } + GetNextEvent(&dummy_event); + } + // + //--------------------------------------------------------------------- + // Wait for test mode to finish (or bomb out) + //--------------------------------------------------------------------- + // + if (!bomb) + { + when = Now(); + when += 5.0; + while (TestModeActive) + { + if (Now() > when) + { + bomb = 1; + DEBUG_STREAM << "RIO never came back from test mode!\n"; + break; + } + GetNextEvent(&dummy_event); + } + } + // + //--------------------------------------------------------------------- + // Get version (or bomb out) + //--------------------------------------------------------------------- + // + + if (!bomb) + { + RequestVersion(); + when = Now(); + when += 5.0; + while (MajorRevision == 0xFF) + { + if (Now() > when) + { + DEBUG_STREAM << "RIO never came back from version request!\n"; + break; + } + GetNextEvent(&dummy_event); + } + } + } + + Tell("RIO initialization finished\n"); + Check_Fpu(); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Destructor +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +extern int historyIndex; +extern Byte history[]; + +enum +{ + txFlag=1, + rxFlag=2, + eventFlag=3 +}; + +enum +{ + IRQ_EVENT=0, + IRQ_EVENT_RX=1, + IRQ_EVENT_TX=2, + IRQ_EVENT_MSR=3, + IRQ_EVENT_LSR=4, + IRQ_EVENT_BOGUS=5, + + TX_EVENT_RESTART=10, + TX_EVENT_ABANDON=11, + TX_EVENT_DONE=12, + TX_EVENT_ACK=13, + TX_EVENT_NAK=14, + TX_EVENT_EARLY=15, + TX_EVENT_EMPTY=16, + TX_EVENT_KICK=17, + + RX_EVENT_FULL=20, + RX_EVENT_NOT_CMD=21, + RX_EVENT_FULLBODY=22, + RX_EVENT_NAK=23, + RX_EVENT_CKSMERR=24, + RX_EVENT_OK=25 +}; + +RIO::~RIO() +{ + Check(this); + +#if 0 + //--------------------------------------------------------------------- + // Save serial history for debugging + //--------------------------------------------------------------------- + // If you enable this, set KEEP_HISTORY in PCSPAK.ASM to '1' as well. + // Otherwise you will be viewing nonexistent history data. + const char + *commandName[13] = + { + "CheckReq", //=0x80 + "VersionReq", + "AnalogReq", + "ResetReq", + "LampReq", + "CheckReply", + "VersionReply", + "AnalogReply", + "ButtonPressed", + "ButtonReleased", + "KeyPressed", + "KeyReleased", + "TestModeChange" + }; + + + int i, type, j; + + cout << flush; + printf("tx\t\trx\t\tevent\n"); + printf("-----\t-----\t\t---------------------\n"); + for(i=0; i= 0x80) && (j <= 0x8C)) + { + printf("%s", commandName[j-0x80]); + } + else + { + printf("%02X", j); + } + printf("\n"); + break; + } + break; + case rxFlag: + printf("\t\t"); + switch(j) + { + case 0xFC: printf("ACK\n"); break; + case 0xFD: printf("NAK\n"); break; + case 0xFE: printf("RST\n"); break; + case 0xFF: printf("IDL\n"); break; + default: + if ((j >= 0x80) && (j <= 0x8C)) + { + printf("%s", commandName[j-0x80]); + } + else + { + printf("%02X", j); + } + printf("\n"); + break; + } + break; + case eventFlag: + printf("\t\t\t\t"); + switch(j) + { + case IRQ_EVENT: printf("IRQ entry\n"); break; + case IRQ_EVENT_RX: printf("IRQ_EVENT_RX\n"); break; + case IRQ_EVENT_TX: printf("IRQ_EVENT_TX\n"); break; + case IRQ_EVENT_MSR: printf("IRQ_EVENT_MSR\n"); break; + case IRQ_EVENT_LSR: printf("IRQ_EVENT_LSR\n"); break; + case IRQ_EVENT_BOGUS: printf("IRQ_EVENT_BOGUS\n"); break; + + case TX_EVENT_RESTART: printf("TX_EVENT_RESTART\n"); break; + case TX_EVENT_ABANDON: printf("TX_EVENT_ABANDON\n"); break; + case TX_EVENT_DONE: printf("TX_EVENT_DONE\n"); break; + case TX_EVENT_ACK: printf("TX_EVENT_ACK\n"); break; + case TX_EVENT_NAK: printf("TX_EVENT_NAK\n"); break; + case TX_EVENT_EARLY: printf("TX_EVENT_EARLY\n"); break; + case TX_EVENT_EMPTY: printf("TX_EVENT_EMPTY\n"); break; + case TX_EVENT_KICK: printf("TX_EVENT_KICK\n"); break; + + case RX_EVENT_FULL: printf("RX_EVENT_FULL\n"); break; + case RX_EVENT_NOT_CMD: printf("RX_EVENT_NOT_CMD\n"); break; + case RX_EVENT_FULLBODY: printf("RX_EVENT_FULLBODY\n"); break; + case RX_EVENT_NAK: printf("RX_EVENT_NAK\n"); break; + case RX_EVENT_CKSMERR: printf("RX_EVENT_CKSMERR\n"); break; + case RX_EVENT_OK: printf("RX_EVENT_OK\n"); break; + default: printf("unknown event %02X\n", j); break; + } + break; + } + } + fflush(stdout); +#endif + + //--------------------------------------------------------------------- + // Flush data to RIO + //--------------------------------------------------------------------- + RIOEvent + dummy_event; + + // This odd sequence of allocation, setting, and adding is necessary: + // if you try to combine them, the compiler gets confused as to which + // method to invoke for 'Now()'. + Time + then; + then = Now(); + then += 5.0; + while (Now() < then) + { + //------------------------------------------------- + // Drop out of loop when all packets have been + // transmitted and the last character has been sent + //------------------------------------------------- + if (TransmitQueueCount() <= 0) + { + if (!IsActive()) + { + break; + } + } + GetNextEvent(&dummy_event); + } + + //--------------------------------------------------------------------- + // Update failure log + //--------------------------------------------------------------------- +#if LOG_RIO_DATA + OpenFailureFile(); + Check(failureFile); + + failureFile->SetEntry("RIO","lineErrors",lineErrorCount); + failureFile->SetEntry("RIO","abandonedPackets",abandonCount); + failureFile->SetEntry("RIO","overruns",overrunCount); + failureFile->SetEntry("RIO","remoteRetry",remoteRetryCount); + failureFile->SetEntry("RIO","remoteAbandon",remoteAbandonCount); + failureFile->SetEntry("RIO","remoteFullBuffer",remoteFullBufferCount); + + CloseFailureFile(); +#endif + + //------------------------------------------- + // Update ranger statistics, delete rangers + //------------------------------------------- + { +// NotationFile +// stat_file((const char *) "RIO.INI"); + + Check(leftPedalRanger); +// leftPedalRanger->Statistics(&stat_file); + Unregister_Object(leftPedalRanger); + delete leftPedalRanger; + leftPedalRanger = NULL; + + Check(rightPedalRanger); +// rightPedalRanger->Statistics(&stat_file); + Unregister_Object(rightPedalRanger); + delete rightPedalRanger; + rightPedalRanger = NULL; + + Check(throttleRanger); +// throttleRanger->Statistics(&stat_file); + Unregister_Object(throttleRanger); + delete throttleRanger; + throttleRanger = NULL; + + Check(joystickXRanger); +// joystickXRanger->Statistics(&stat_file); + Unregister_Object(joystickXRanger); + delete joystickXRanger; + joystickXRanger = NULL; + + Check(joystickYRanger); +// joystickYRanger->Statistics(&stat_file); + Unregister_Object(joystickYRanger); + delete joystickYRanger; + joystickYRanger = NULL; + } + Check_Fpu(); +} + +Logical + RIO::TestInstance() const +{ + return True; +} + +extern Byte pic_isr, pic_imr, pic_irr; +extern Byte uart_iir; +extern Byte pcspak_active,pcspak_rxState,pcspak_txState; +extern Word pcspak_head,pcspak_tail; +extern Word pcspak_tempHead,pcspak_tempTail,pcspak_count; + +extern "C" void + PCSPAKState(PCSerialPacket *ptr); + +Logical + RIO::GetNextEvent(RIOEvent *destination) +{ + Check(this); + + Byte receive_buffer[256]; + Logical reply, looping; + Word errors; + +//PCSPAKState(this); +// +//cout << flush; +//printf( +// "RIO isr=%02X imr=%02X irr=%02X, iir=%02X, a=%1d c=%04X ts=%1d rs=%1d e=%X\n", +// pic_isr, pic_imr, pic_irr, +// uart_iir, +// pcspak_active, +// pcspak_count, +// pcspak_txState, pcspak_rxState, +// pcspak_tempHead,pcspak_tempTail, +// Errors() +//); +//fflush(stdout); + + if (! operational) + { + return False; + } + + errors = Errors(); + if (errors) + { + if (errors & PCSerialPacket::initError) + { + NotationFile + failure((const char *) "FAILURE.LOG"); + + failure.SetEntry("RIOErrors","error","initialization"); + operational = False; + } + else + { + if (errors & PCSerialPacket::txAbandonPacket) + { +//cout << "RIO:: packet abandoned\n"; + ++abandonCount; + } + if (errors & PCSerialPacket::overrunError) + { +//cout << "RIO:: overrun\n"; + ++overrunCount; + } + if (errors & + ( + PCSerialPacket::parityError | + PCSerialPacket::framingError | + PCSerialPacket::overrunError + ) + ) + { + ++lineErrorCount; + } + } + } + + do + { + looping = False; + + reply = ReceivePacket(receive_buffer); + if (reply) + { + switch(receive_buffer[0]) + { + case CheckReply: + switch(receive_buffer[1]) + { + case BoardMissing: + OpenFailureFile(); + BoardError(failureFile,"missing_board",(int) receive_buffer[2]); + CloseFailureFile(); + break; + + case BoardBad: + OpenFailureFile(); + BoardError(failureFile,"dead_board",(int) receive_buffer[2]); + CloseFailureFile(); + break; + + case LampBad: + OpenFailureFile(); + Check(failureFile); + failureFile->AppendEntry( + "RIODeadLamps", + "lamp", + LBE4ControlsManager::GetLampName((int) receive_buffer[2]) + ); + CloseFailureFile(); + break; + + case RestartCount: + remoteRetryCount += receive_buffer[2]; + break; + + case AbandonCount: + remoteAbandonCount += receive_buffer[2]; + break; + + case FullBufferCount: + remoteFullBufferCount += receive_buffer[2]; + break; + } + looping = True; // status events not sent to host + break; + + case VersionReply: + destination->Type = RIO::VersionEvent; + MajorRevision = receive_buffer[1]; + MinorRevision = receive_buffer[2]; + break; + + case AnalogReply: + destination->Type = RIO::AnalogEvent; + // + // NOTE: no data is sent in this packet. + // The application is expected to directly read + // the values in the object. + // + + //---------------------------------------- + // Discard the next N analog packets + // (set by ForceCenterJoystick) + //---------------------------------------- +// if (discardCount) +// { +// --discardCount; +// } +// else + { + Check(throttleRanger); + Throttle = throttleRanger->Update( + // Note (-): Throttle counts BACKWARDS + -CombinePair(receive_buffer[1], receive_buffer[2]) + ); + + Check(leftPedalRanger); + LeftPedal = leftPedalRanger->Update( + CombinePair(receive_buffer[3], receive_buffer[4]) + ); + + Check(rightPedalRanger); + RightPedal = rightPedalRanger->Update( + CombinePair(receive_buffer[5], receive_buffer[6]) + ); + + Check(joystickYRanger); + JoystickY = joystickYRanger->Update( + CombinePair(receive_buffer[7], receive_buffer[8]) + ); + + Check(joystickXRanger); + JoystickX = joystickXRanger->Update( + CombinePair(receive_buffer[9], receive_buffer[10]) + ); + } + break; + + case ButtonPressed: + destination->Type = RIO::ButtonPressedEvent; + destination->Data.Unit = receive_buffer[1]; + break; + + case ButtonReleased: + destination->Type = RIO::ButtonReleasedEvent; + destination->Data.Unit = receive_buffer[1]; + break; + + case KeyPressed: + destination->Type = RIO::KeyEvent; + destination->Data.Keyboard.Unit = receive_buffer[1]; + destination->Data.Keyboard.Key = receive_buffer[2]; + break; + + case TestModeChange: + if (receive_buffer[1] != 0) + { + Tell("RIO entered test mode\n"); + TestModeActive = 1; + + OpenFailureFile(); + Check(failureFile); + failureFile->DeletePage("RIOBoardErrors"); + failureFile->DeletePage("RIODeadLamps"); + } + else + { + Tell("RIO exited test mode\n"); + TestModeActive = 0; + CloseFailureFile(); + } + looping = True; // this event not sent to host + break; + + default: // discard unused or bogus packets + looping = True; + break; + } + } + } + while (looping); + + Check_Fpu(); + return reply; +} + +void + RIO::ForceCenterJoystick() +{ + Check(this); + +// ResetVerticalJoystick(); +// ResetHorizontalJoystick(); + //------------------------------------------- + // Make sure we don't use 'old' data + // (skip the next two packets) + // ...why 2? Just to make sure... + //------------------------------------------- +// discardCount = 2; + + Check(joystickXRanger); + joystickXRanger->ForceToZero(); + + Check(joystickYRanger); + joystickYRanger->ForceToZero(); + + Check_Fpu(); +} + +void + RIO::SetJoystickDeadBand(Scalar dead_band) +{ + Check(this); + + Check(joystickXRanger); + joystickXRanger->SetDeadBand(dead_band); + + Check(joystickYRanger); + joystickYRanger->SetDeadBand(dead_band); + + Check_Fpu(); +} + +void + RIO::SetThrottleDeadBand(Scalar dead_band) +{ + Check(this); + + Check(throttleRanger); + throttleRanger->SetDeadBand(dead_band); + + Check_Fpu(); +} + +void + RIO::SetPedalsDeadBand(Scalar dead_band) +{ + Check(this); + + Check(leftPedalRanger); + leftPedalRanger->SetDeadBand(dead_band); + + Check(rightPedalRanger); + rightPedalRanger->SetDeadBand(dead_band); + + Check_Fpu(); +} + +void + RIO::RequestCheck() +{ + Check(this); + static Byte request_check_string[] = { RIO::CheckRequest }; + + if (operational && !TestModeActive) + { + SendPacket((Byte *) request_check_string); + } + Check_Fpu(); +} + +void + RIO::RequestVersion() +{ + Check(this); + static Byte request_version_string[] = { RIO::VersionRequest }; + + if (operational && !TestModeActive) + { + SendPacket((Byte *) request_version_string); + } + Check_Fpu(); +} + +void + RIO::RequestAnalogUpdate() +{ + Check(this); + static Byte request_analog_string[] = { RIO::AnalogRequest }; + + if (operational && !TestModeActive) + { + SendPacket((Byte *) request_analog_string); + } + Check_Fpu(); +} + +void + RIO::GeneralReset() +{ + Check(this); + static Byte request_reset_string[] = { RIO::ResetRequest, 0 }; + + if (operational && !TestModeActive) + { + SendPacket((Byte *) request_reset_string); + } + Check_Fpu(); +} + +void + RIO::ResetThrottle() +{ + Check(this); + static Byte request_throttle_string[] = { RIO::ResetRequest, 1 }; + + if (operational && !TestModeActive) + { + SendPacket((Byte *) request_throttle_string); + } + Check_Fpu(); +} + +void + RIO::ResetLeftPedal() +{ + Check(this); + static Byte request_lpedal_string[] = { RIO::ResetRequest, 2 }; + + if (operational && !TestModeActive) + { + SendPacket((Byte *) request_lpedal_string); + } + Check_Fpu(); +} + +void + RIO::ResetRightPedal() +{ + Check(this); + static Byte request_rpedal_string[] = { RIO::ResetRequest, 3 }; + + if (operational && !TestModeActive) + { + SendPacket((Byte *) request_rpedal_string); + } + Check_Fpu(); +} + +void + RIO::ResetVerticalJoystick() +{ + Check(this); + static Byte request_vstick_string[] = { RIO::ResetRequest, 4 }; + + if (operational && !TestModeActive) + { + SendPacket((Byte *) request_vstick_string); + } + Check_Fpu(); +} + +void + RIO::ResetHorizontalJoystick() +{ + Check(this); + static Byte request_hstick_string[] = { RIO::ResetRequest, 5 }; + + if (operational && !TestModeActive) + { + SendPacket((Byte *) request_hstick_string); + } + Check_Fpu(); +} + +void + RIO::SetLamp(int lampNumber, int state) +{ + Check(this); + static Byte request_lamp_string[] = { RIO::LampRequest, 0, 0 }; + + if (operational) + { + request_lamp_string[1] = (Byte) (lampNumber & 0x7F); + request_lamp_string[2] = (Byte) (state & 0x7F); + SendPacket((Byte *) request_lamp_string); + } + Check_Fpu(); +} + +void + RIO::OpenFailureFile() +{ + Check(this); + + if (failureFileOpenCount == 0) + { + failureFile = new NotationFile("FAILURE.LOG"); + Check(failureFile); + Register_Object(failureFile); + } + ++failureFileOpenCount; + Check_Fpu(); +} + +void + RIO::CloseFailureFile() +{ + Check(this); + + --failureFileOpenCount; + if (failureFileOpenCount <= 0) + { + failureFileOpenCount = 0; + + Check(failureFile); + Unregister_Object(failureFile); + delete failureFile; + } + Check_Fpu(); +} + diff --git a/CODE/RP/MUNGA_L4/L4RIO.HPP b/CODE/RP/MUNGA_L4/L4RIO.HPP new file mode 100644 index 0000000..9262b4f --- /dev/null +++ b/CODE/RP/MUNGA_L4/L4RIO.HPP @@ -0,0 +1,342 @@ +//===========================================================================// +// File: RIO.hh // +// Project: MUNGA Brick: Platform-specific IO // +// Contents: Remote I/O interface class // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- -----------------------------------------------------------// +// 01/30/95 CPB Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. All rights reserved // +// PROPRIETARY and CONFIDENTIAL // +//===========================================================================// +#if !defined(L4RIO_HPP) + +# define L4RIO_HPP + +# if !defined(L4PCSPAK_HPP) +# include "l4pcspak.hpp" +# endif + +# if !defined(NOTATION_HPP) +# include +# endif + +# if !defined(AVERAGE_HPP) +# include +# endif + + // These are purposely grouped as two parameters in one equate + // (See PCSPAK.HH). + // The standard PC COM ports ALWAYS use these combinations. +# define RIO_COM1 PCSP_COM1 +# define RIO_COM2 PCSP_COM2 +# define RIO_COM3 PCSP_COM3 +# define RIO_COM4 PCSP_COM4 + + + class FilterChannel SIGNATURED + { + public: + static const char *highName; + static const char *centerName; + static const char *lowName; + static const char *joystickXName; + static const char *joystickYName; + static const char *throttleName; + static const char *leftPedalName; + static const char *rightPedalName; + + enum AlignMode { unaligned, normal }; + enum PolarMode { unipolar, bipolar }; + + FilterChannel(); + FilterChannel( + NotationFile *init_file, + const char *page_name, + int default_min, int default_max + ); + FilterChannel( + NotationFile *init_file, + const char *page_name, + int default_min, int default_center, int default_max + ); + ~FilterChannel(); + void + SetPolarity(PolarMode newPolarity); + void + SetDeadBand(Scalar amount_of_deadband); + virtual void + BeginAlignment(); + virtual void + EndAlignment(NotationFile *init_file=NULL); + virtual Scalar + Update(int value); + Logical + TestInstance() const; + + protected: + void + CalculateDeadBands(); + + const char *pageName; + PolarMode polarity; + AlignMode mode; + int previousValue, min, max, center; + int lowerRange, lowerDeadband; + int upperRange, upperDeadband; + Scalar deadbandScalar; + Logical valuesFromFile; + AverageOf average; + }; + + + class RIO; + + class Ranger SIGNATURED + { + friend class RIO; + protected: + Ranger( + const char *page_name, + int default_min, + int default_max, + Scalar deadband_scalar + ); + + ~Ranger(); + + void + ForceToZero(); + void + SetDeadBand(Scalar amount_of_deadband); + Scalar + Update(int input); + Logical + TestInstance() const; + void + Statistics(NotationFile *stat_file); + + const char + *pageName; + Logical + sampledInputFlag; + int + offset, + hardwareMinimum, + hardwareMaximum, + hardwareRange, + deadbandInteger, + highestInput, + lowestInput; + }; + + class RIO : + public PCSerialPacket + { + protected: + enum RIOCommand{ + CheckRequest=0x80, + VersionRequest, + AnalogRequest, + ResetRequest, + LampRequest, + CheckReply, + VersionReply, + AnalogReply, + ButtonPressed, + ButtonReleased, + KeyPressed, + KeyReleased, + TestModeChange + }; + + public: + enum RIOStatusType { + BoardOk=0, BoardMissing=1, BoardBad=2, + LampBad=3, + RestartCount=4, AbandonCount=5, FullBufferCount=6 + }; + + enum LampState{ + solid=0, flashSlow=1, flashMed=2, flashFast=3, + state1Off=0x00, state1Dim=0x04, state1Bright=0x0C, + state2Off=0x00, state2Dim=0x10, state2Bright=0x30, + }; + + enum RIOEventType { + ButtonPressedEvent, + ButtonReleasedEvent, + KeyEvent, + AnalogEvent, + VersionEvent + }; + + struct RIOKeyPair + { + int Unit; + int Key; + }; + + struct RIOEvent + { + RIOEventType Type; + union + { + int Unit; + RIOKeyPair Keyboard; + }Data; + }; + + RIO(Word port, Word intNum, Logical perform_tests = True); + ~RIO(); + + Logical + TestInstance() const; + + Logical + GetNextEvent(RIOEvent *destinationPointer); + + void + ForceCenterJoystick(), + SetJoystickDeadBand(Scalar dead_band), + SetThrottleDeadBand(Scalar dead_band), + SetPedalsDeadBand(Scalar dead_band); + + void + RequestCheck(), + RequestVersion(), + RequestAnalogUpdate(); + + void + GeneralReset(), + ResetThrottle(), + ResetLeftPedal(), + ResetRightPedal(), + ResetVerticalJoystick(), + ResetHorizontalJoystick(); + + void + SetLamp(int lampNumber, int state); + + void + TestCheckReply(int type, int location) + { + RIO::reply_check_string[1] = (Byte) (type & 0x7F); + RIO::reply_check_string[2] = (Byte) (location & 0x7F); + SendPacket((Byte *)reply_check_string); + } + + void + TestVersionReply(int major, int minor) + { + RIO::reply_version_string[1] = (Byte) (major & 0x7F); + RIO::reply_version_string[2] = (Byte) (minor & 0x7F); + SendPacket((Byte *)reply_version_string); + } + + void + TestAnalogReply() + { + SendPacket((Byte *)reply_analog_string); + } + + void + TestButtonPressed(int button) + { + RIO::reply_button_press_string[1] = (Byte) (button & 0x7F); + SendPacket((Byte *)reply_button_press_string); + } + + void + TestButtonReleased(int button) + { + RIO::reply_button_release_string[1] = (Byte) (button & 0x7F); + SendPacket((Byte *)reply_button_release_string); + } + + void + TestKeyPressed(int board, int key) + { + RIO::reply_key_press_string[1] = (Byte) (board & 0x7F); + RIO::reply_key_press_string[2] = (Byte) (key & 0x7F); + SendPacket((Byte *)reply_key_press_string); + } + + void + TestKeyReleased(int board, int key) + { + RIO::reply_key_release_string[1] = (Byte) (board & 0x7F); + RIO::reply_key_release_string[2] = (Byte) (key & 0x7F); + SendPacket((Byte *)reply_key_release_string); + } + + void + TestEnterTestMode() + {SendPacket((Byte *)reply_test_enter_string);} + + void + TestExitTestMode() + {SendPacket((Byte *)reply_test_exit_string);} + + int + ReceiveQueueCount() + { return PCSerialPacket::ReceiveQueueCount(); } + + int + TransmitQueueCount() + { return PCSerialPacket::TransmitQueueCount(); } + + int + TestModeActive; + + Scalar + Throttle, LeftPedal, RightPedal, JoystickX, JoystickY; + + int + MajorRevision, MinorRevision; + + int remoteRetryCount; + int remoteAbandonCount; + int remoteFullBufferCount; + int lineErrorCount; + int abandonCount; + int overrunCount; + + int discardCount; // used by BeginAnalogCalibration() + + protected: + void + OpenFailureFile(); + + void + CloseFailureFile(); + + void + CheckErrors(); + + Logical + operational; + Ranger + *leftPedalRanger, *rightPedalRanger; + Ranger + *throttleRanger; + Ranger + *joystickXRanger, *joystickYRanger; + NotationFile + *failureFile; + int + failureFileOpenCount; + + static Byte reply_check_string[]; + static Byte reply_version_string[]; + static Byte reply_analog_string[]; + static Byte reply_button_press_string[]; + static Byte reply_button_release_string[]; + static Byte reply_key_press_string[]; + static Byte reply_key_release_string[]; + static Byte reply_test_enter_string[]; + static Byte reply_test_exit_string[]; + }; + +#endif diff --git a/CODE/RP/MUNGA_L4/L4SERIAL.ASM b/CODE/RP/MUNGA_L4/L4SERIAL.ASM new file mode 100644 index 0000000..e42bf5a --- /dev/null +++ b/CODE/RP/MUNGA_L4/L4SERIAL.ASM @@ -0,0 +1,1248 @@ +;=========================================================================== +; File: L$SERIAL.asm +; Project: MUNGA +; Contents: PC serial driver +;--------------------------------------------------------------------------- +; Date Who Modification +; -------- --- ----------------------------------------------------------- +; 01/16/95 CPB Initial coding +;--------------------------------------------------------------------------- +; Copyright (C) 1994, Virtual World Entertainment, Inc. +; All Rights reserved worldwide +; This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL +;=========================================================================== + +THE_WAY_IT_WAS equ 0 + + include l4asm.inc + include pcserial.inc + include pcpic.inc + include pcdpmi.inc +;=========================================================================== +; Equates +;=========================================================================== + +TICK MACRO ;debugging macro: ticks the speaker + + push dx + push ax + + mov dx,061h + in al,dx + + xor al,002h + out dx,al + + nop + nop + nop + + xor al,002h + out dx,al + + pop ax + pop dx +ENDM + +SPKR_SET MACRO ;debugging macro + + push dx + push ax + + mov dx,061h + in al,dx + + or al,002h + out dx,al + + pop ax + pop dx +ENDM + +SPKR_RESET MACRO ;debugging macro + + push dx + push ax + + mov dx,061h + in al,dx + + and al,(NOT 002h) + out dx,al + + pop ax + pop dx +ENDM + +SPKR_TOGGLE MACRO ;debugging macro + + push dx + push ax + + mov dx,061h + in al,dx + + xor al,002h + out dx,al + + pop ax + pop dx +ENDM + +;------------------------------------------------------------------------- +; Command buffer equates +; +; WARNING**WARNING**WARNING**WARNING**WARNING**WARNING**WARNING**WARNING +; Any modifications to this structure MUST be +; reflected in L4SERIAL.hpp!! +; +; BE ESPECIALLY CAREFUL IF 'BUFSIZE' IS CHANGED! +; +; WARNING**WARNING**WARNING**WARNING**WARNING**WARNING**WARNING**WARNING +;------------------------------------------------------------------------- +SERIALBUFSIZE EQU 1024 ;buffer size (must be power of 2) + +SERIALBUF STRUC + head dw 0 + tail dw 0 + count dw 0 + + data db SERIALBUFSIZE dup (?) +SERIALBUF ENDS + +;------------------------------------------------ +; SERBUFINIT macro +; Initializes SERIALBUF structure +;------------------------------------------------ +; Enter: +; esi = pointer to object containing SERIALBUF +; name = offset to SERIALBUF within object +;------------------------------------------------ +; Side effects: +; (none) +;------------------------------------------------ +SERBUFINIT MACRO name ;enter with object pointer in esi + + add esi,name ;;build SERIALBUF pointer in esi + + mov head[esi],0 + mov tail[esi],0 + mov count[esi],0 + + sub esi,name ;;restore esi +ENDM + +;------------------------------------------------ +; SERBUFPUT_AL macro +; Puts character in AL into SERIALBUF +;------------------------------------------------ +; Enter: +; esi = pointer to object containing SERIALBUF +; name = offset to SERIALBUF within object +;------------------------------------------------ +; Side effects: +; ebx modified +;------------------------------------------------ +SERBUFPUT_AL MACRO name + + add esi,name ;;build SERIALBUF pointer in esi + + xor ebx,ebx ;;get 'head' offset in ebx + mov bx,head[esi] + add esi,ebx ;;add to base + mov data[esi],al ;;write the data + sub esi,ebx ;;restore SERIALBUF pointer + + inc bx ;;bump 'head' + and bx,SERIALBUFSIZE-1 ;;limit it + mov head[esi],bx ;;save the new 'head' offset + + inc count[esi] ;;update the character count + + sub esi,name ;;restore esi +ENDM + +;------------------------------------------------ +; SERBUFGET_AL macro +; Gets character into AL from SERIALBUF +;------------------------------------------------ +; Enter: +; esi = pointer to object containing SERIALBUF +; name = offset to SERIALBUF within object +;------------------------------------------------ +; Side effects: +; ebx modified +;------------------------------------------------ +SERBUFGET_AL MACRO name + + add esi,name ;;build SERIALBUF pointer in ecx + + xor ebx,ebx ;;get 'tail' offset in ebx + mov bx,tail[esi] + + add esi,ebx ;;add to base + mov al,data[esi] ;;read the data + sub esi,ebx ;;restore SERIALBUF pointer + + inc bx ;;bump 'tail' + and bx,SERIALBUFSIZE-1 ;;limit it + mov tail[esi],bx ;;save the new 'tail' offset + + dec count[esi] ;;update the character count + + sub esi,name ;;restore esi +ENDM + +;------------------------------------------------ +; SERBUFSPACE_IN macro +; Returns input bytes available in SERIALBUF +;------------------------------------------------ +; Enter: +; esi = pointer to object containing SERIALBUF +; name = offset to SERIALBUF within object +; reg = register to use +;------------------------------------------------ +; Side effects: +; ax contains number of bytes available +;------------------------------------------------ +SERBUFSPACE_IN MACRO name,reg + + add esi,name ;;build SERIALBUF pointer in ecx + mov reg,SERIALBUFSIZE + sub reg,count[esi] + sub esi,name ;;restore esi +ENDM + +;------------------------------------------------ +; SERBUFSPACE_OUT macro +; Returns output bytes available in SERIALBUF +;------------------------------------------------ +; Enter: +; esi = pointer to object containing SERIALBUF +; name = offset to SERIALBUF within object +;------------------------------------------------ +; Side effects: +; ax contains number of bytes available +;------------------------------------------------ +SERBUFSPACE_OUT MACRO name + + add esi,name ;;build SERIALBUF pointer in ecx + mov ax,count[esi] + sub esi,name ;;restore esi +ENDM + +;------------------------------------------------------------------------- +; IRQ data equates +;------------------------------------------------------------------------- + +IRQDATA STRUC + irqHandler dd ? + irqThis dd ? + + irqOldOffset dd ? ;THE ORDER OF THESE TWO IS CRITICAL. + irqOldSelector dw ? ;See the interrupt handlers near the end. + + irqPort dw ? + + irqNum db ? + irqPICbit db ? + irqOldPICbits db ? + irqPadByte db ? +IRQDATA ENDS +;------------------------------------------------------------------------- +; PCSERIAL object equates +; +; WARNING**WARNING**WARNING**WARNING**WARNING**WARNING**WARNING**WARNING +; Any modifications to this structure MUST be +; reflected in PCSERIAL.hpp!! +; WARNING**WARNING**WARNING**WARNING**WARNING**WARNING**WARNING**WARNING +;------------------------------------------------------------------------- + +; +; Lower eight bits reserved for UART status +; +ERR_INIT EQU 0000000100000000b + +PCSERIAL STRUC + portBase dw ? ;base port address + ErrorValue dw ? + enabled db ? ;set if rx/tx enabled + txFlow db ? + flowOverride db ? + intDataPtr dd ? ;pointer to IRQDATA structure + + txBuf SERIALBUF <> + rxBuf SERIALBUF <> +PCSERIAL ENDS + +;=========================================================================== +; Data segment +;=========================================================================== +BEGIN_DATA + +data_selector dw ? +irq_com1 IRQDATA +irq_com2 IRQDATA +irq_com3 IRQDATA +irq_com4 IRQDATA + + public uartLSR,uartIER,uartIIR +uartLSR db 0 +uartIER db 0 +uartIIR db 0 + +END_DATA +;=========================================================================== +; Code segment +;=========================================================================== +BEGIN_CODE + +;------------------------------------------------------------------------- +; PCSerialInit() +; Constructor for serial driver interface +;------------------------------------------------------------------------- +; Enter: +; init_this = pointer to object +; init_rate = data rate +; init_format = data format +; init_port = address of serial port +; init_irq_num = interrupt number +;------------------------------------------------------------------------- +; Returns: +; (nothing) +;------------------------------------------------------------------------- +BEGIN_C_PROC PCSerialInit + + ARG_DPTR init_this + ARG_WORD init_rate + ARG_WORD init_format + ARG_WORD init_port + ARG_WORD init_irq_num + + BUILD_STACK_FRAME + ;-------------------------------------------------------------- + ; Save off the data selector so we can get it back later. + ;-------------------------------------------------------------- + ; ...In flat mode, CS and DS overlap, but CS is write-protected + ; and DS isn't. Therefore we can write DS to [data_selector] + ; and read it back from CS later. + ;-------------------------------------------------------------- + mov [data_selector],ds + ;-------------------------------------------------------------- + ; Disable interrupts + ;-------------------------------------------------------------- + DPMI_DISABLE_SAVE_INT ;pushes ax! + ;-------------------------------------------------------------- + ; Point ESI at object data + ;-------------------------------------------------------------- + mov esi,init_this + ;-------------------------------------------------------------- + ; Clear the data buffers + ;-------------------------------------------------------------- + SERBUFINIT rxBuf ;assumes esi points to object + SERBUFINIT txBuf ;assumes esi points to object + ;-------------------------------------------------------------- + ; Initialize values + ;-------------------------------------------------------------- + xor eax,eax + mov enabled[esi],al ;clear 'enabled' flag + mov ErrorValue[esi],ax ;clear errors + mov txFlow[esi],al ;flow control off + mov flowOverride[esi],al ;...use flow control + mov intDataPtr[esi],eax ;(flag as not allocated) + + mov ax,init_port ;get the port address + mov portBase[esi],ax ;save it + ;-------------------------------------------------------------- + ; Find unused IRQDATA structure + ;-------------------------------------------------------------- + mov ecx,4 + mov edi,OFFSET irq_com1 +searchLoop: + mov ax,irqPort[edi] ;is irqPort equal to zero? + je short searchDone ;yes, use this structure + add edi,SIZE IRQDATA ;no, move to next one + loop searchLoop + + mov ErrorValue[esi],ERR_INIT ;allocation failed, set errors! + jmp allocFailed + +searchDone: + mov ax,init_port ;save port address + mov irqPort[edi],ax + + mov ax,init_irq_num ;save interrupt number + mov irqNum[edi],al + ;-------------------------------------------------------------- + ; Save init_this in irq structure, irqPtr in "this" structure + ;-------------------------------------------------------------- + mov irqThis[edi],esi + mov intDataPtr[esi],edi + ;-------------------------------------------------------------- + ; Save the old PROTECTED MODE interrupt vector + ;-------------------------------------------------------------- + mov bl,irqNum[edi] ;bl has interrupt number + DPMI_GET_PROT_VECTOR ;returns cx:edx + mov irqOldSelector[edi],cx + mov irqOldOffset[edi],edx + ;-------------------------------------------------------------- + ; Set the new PROTECTED MODE interrupt vector + ;-------------------------------------------------------------- + mov bx,init_irq_num ;bl has interrupt number + mov cx,cs ;cx:edx has selector:offset + mov edx,irqHandler[edi] + DPMI_SET_PROT_VECTOR + jnc short allocOk ;carry clear, allocation succeeded + + mov ErrorValue[esi],ERR_INIT ;allocation failed, set errors! + jmp allocFailed +allocOk: + ;-------------------------------------------------------------- + ; Set baud rate + ;-------------------------------------------------------------- + mov dx,init_port ;get port address from stack + mov cx,init_rate ;set data rate + SETBAUD_CX ;macro from PCSERIAL.INC + ;-------------------------------------------------------------- + ; Set data format + ;-------------------------------------------------------------- + mov ax,init_format + SETFORMAT_AL +;##################################################################################### +IF THE_WAY_IT_WAS + ;-------------------------------------------------------------- + ; Clear interrupt sources, initialize flow control + ;-------------------------------------------------------------- + in al,dx ;read input, clear input irq + + add dx,UART_IIR ;point to interrupt ident reg + in al,dx ;read IIR to clear tx interrupt + in al,dx + in al,dx + sub dx,UART_IIR ;restore dx + + add dx,UART_MSR ;point to MSR + in al,dx ;read modem status reg to clear IRQ + sub dx,UART_MSR ;restore dx + + and al,UART_MSR_CTS ;save flow control bit (cts) + mov txFlow[esi],al + ;-------------------------------------------------------------- + ; Enable interrupts in PIC + ;-------------------------------------------------------------- + PIC_IMR_TO_AL ;save old PIC bits for termination test + mov irqOldPICbits[edi],al + + mov ax,init_irq_num ;get interrupt number + cmp ax,0000Ch ;COM1? + jnz short mustBeCom2 ;no, must be COM2 + mov bl,PIC_COM1COM3 ;yes, get COM1, COM3 enable + jmp short hasPicBits +mustBeCom2: + mov bl,PIC_COM2COM4 ;get COM2, COM4 enable +hasPicBits: + mov irqPICbit[edi],bl ;save for termination + ASSERT_PIC_REG bl + ;-------------------------------------------------------------- + ; Enable UART interrupts, RTS, and DTR + ;-------------------------------------------------------------- + ASSERT_IER UART_IER_RDR+UART_IER_THR+UART_IER_LSR+UART_IER_MSR + ASSERT_MCR UART_MCR_IRQ+UART_MCR_RTS+UART_MCR_DTR +;##################################################################################### +else + ;-------------------------------------------------------------- + ; Initialize PIC + ;-------------------------------------------------------------- + ;----------------------------- + ; Get master PIC data: + ; enable bit in bl, + ; interrupt number in bh + ;----------------------------- + mov ax,init_irq_num ;get interrupt number + cmp ax,0000Ch ;COM1? + jnz short mustBeCom2 ;no, must be COM2 + + mov bl,PIC_COM1COM3 ;yes, get COM1, COM3 enable... + mov bh,OCW2_SPEC_EOI+4 ;...and PIC specific EOI + jmp short hasPicBits + +mustBeCom2: + mov bl,PIC_COM2COM4 ;get COM2, COM4 enable... + mov bh,OCW2_SPEC_EOI+3 ;...and PIC specific EOI +hasPicBits: + mov irqPICbit[edi],bl ;save for termination + ;----------------------------- + ; Enable interrupts in PIC + ;----------------------------- + ASSERT_PIC_REG bl + ;----------------------------- + ; Make sure PIC interrupt + ; request is cleared + ;----------------------------- + mov al,bh ;output the specific EOI + out PIC_MASTER_0,al + ;-------------------------------------------------------------- + ; Initialize UART + ;-------------------------------------------------------------- + mov dx,init_port ;get port address from stack + ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ; Diagnostics values + ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + add dx,UART_IIR + in al,dx + mov uartIIR,al + sub dx,UART_IIR + ;----------------------------- + ; Disable UART interrupts + ;----------------------------- + RETRACT_MCR UART_MCR_IRQ ;This clears irq into PIC + ;----------------------------- + ; Disable all UART interrupt + ; sources. Not mandatory, + ; but a safe practice. + ;----------------------------- + RETRACT_IER UART_IER_ALL + ;----------------------------- + ; Enable UART interrupt sources + ;----------------------------- + ASSERT_IER UART_IER_ALL + ;----------------------------- + ; Enable UART interrupts, RTS + ;----------------------------- + ASSERT_MCR UART_MCR_IRQ+UART_MCR_RTS+UART_MCR_DTR + ;----------------------------- + ; Clear UART interrupt sources + ;----------------------------- + in al,dx ;clear receiver interrupt (read inputs) + in al,dx + + add dx,UART_MSR ;read modem status reg to clear IRQ + in al,dx ;discard the result + sub dx,UART_MSR + + add dx,UART_LSR ;read line status reg to clear IRQ + in al,dx ;read value + mov uartLSR,al ;(save for diagnostics) + sub dx,UART_LSR + ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ; Diagnostics values + ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + add dx,UART_IER + in al,dx + mov uartIER,al + sub dx,UART_IER +;##################################################################################### +endif + ;-------------------------------------------------------------- + ; Mark as 'enabled' + ;-------------------------------------------------------------- + mov enabled[esi],1 + +allocFailed: + ;-------------------------------------------------------------- + ; Reenable the old interrupt state and return + ;-------------------------------------------------------------- + DPMI_RESTORE_PREV_INT ;pops ax! +END_C_PROC + + +;------------------------------------------------------------------------- +; PCSerialTerm() +; Destructor for serial packet interface +;------------------------------------------------------------------------- +; Enter: +; (this) = pointer to object +;------------------------------------------------------------------------- +; Returns: +; int zero if ok +;------------------------------------------------------------------------- +BEGIN_C_PROC PCSerialTerm + + ARG_DPTR term_this + BUILD_STACK_FRAME + + ;-------------------------------------------------------------- + ; Disable interrupts + ;-------------------------------------------------------------- + DPMI_DISABLE_SAVE_INT ;pushes ax! + ;-------------------------------------------------------------- + ; Get "this" pointer + ;-------------------------------------------------------------- + mov esi,term_this + mov eax,esi ;is it NULL? + or eax,eax + jz short skipError1 ;OHMIGOSH!! EXIT!!! + ;-------------------------------------------------------------- + ; Turn off RTS, DTR, and interrupts + ;-------------------------------------------------------------- + mov dx,portBase[esi] + RETRACT_MCR UART_MCR_IRQ+UART_MCR_RTS+UART_MCR_DTR + + ; NOTE: from this point on, interrupts CANNOT occur from the UART. + + ;-------------------------------------------------------------- + ; If improperly allocated, skip 'release' + ;-------------------------------------------------------------- + mov eax,intDataPtr[esi] ;get pointer to IRQ data + or eax,eax + jz short skipError2 ;null pointer, skip release + + mov edi,eax ;place pointer in edi + ;-------------------------------------------------------------- + ; Mark IRQDATA record as unused + ;-------------------------------------------------------------- + mov irqPort[edi],0 + ;-------------------------------------------------------------- + ; Restore the old PROTECTED MODE interrupt vector + ;-------------------------------------------------------------- + mov bl,irqNum[edi] ;bl has interrupt number + mov cx,irqOldSelector[edi] ;cx:edx has selector:offset + mov edx,irqOldOffset[edi] + DPMI_SET_PROT_VECTOR + ;-------------------------------------------------------------- + ; Disable PIC channel + ;-------------------------------------------------------------- + mov bl,irqPICbit[edi] ;get our PIC bit + +;; mov al,irqOldPICbits[edi] ;get old PIC bits +;; not al ;invert (zero=on) +;; and al,bl ;was it enabled before we got to it? +;; jnz skipRetract ;yes, leave it enabled + + RETRACT_PIC bl ;no, turn it off + +skipRetract: + + xor eax,eax + jmp short skipRestore +skipError1: + mov eax,1 + jmp short skipRestore +skipError2: + mov eax,2 +skipRestore: + ;-------------------------------------------------------------- + ; Reenable the old interrupt state and return + ;-------------------------------------------------------------- + DPMI_RESTORE_PREV_INT ;pops ax! + + + ;;this routine does not properly return status yet + +END_C_PROC + +;------------------------------------------------------------------------- +; PCSerialReceive() +; Returns characters if available +;------------------------------------------------------------------------- +; Enter: +; rp_this = pointer to object +; Byte *destPtr = pointer to 128-byte destination buffer +; max_characters = size of destination buffer +;------------------------------------------------------------------------- +; Returns: +; int number of characters +;------------------------------------------------------------------------- +BEGIN_C_PROC PCSerialReceive + + ARG_DPTR rp_this + ARG_DPTR rp_dest + ARG_DWORD rp_maximum + BUILD_STACK_FRAME + + ;-------------------------------------------------------------- + ; Get "this" pointer + ;-------------------------------------------------------------- + mov esi,rp_this + mov eax,esi ;is it NULL? + or eax,eax + jz short spr_done ;OHMIGOSH!! EXIT!!! + ;-------------------------------------------------------------- + ; Skip if disabled + ;-------------------------------------------------------------- + cmp enabled[esi],0 ;if disabled, don't even try + jne short recvOK + + xor eax,eax + jmp short spr_done +recvOK: + ;-------------------------------------------------------------- + ; Check character count + ;-------------------------------------------------------------- + xor edx,edx ;clear top of edx + mov dx,rxBuf.count[esi] ;get # of characters in dx + or dx,dx ;empty? + jz short spr_done ;yes, return zero + ;-------------------------------------------------------------- + ; Limit to maximum + ;-------------------------------------------------------------- + mov ecx,rp_maximum ;get the maximum + cmp edx,ecx ;total > max? + jle short recvNoLimit ;no, use total + mov edx,ecx ;yes, limit to maximum +recvNoLimit: +;;; ;-------------------------------------------------------------- +;;; ; Disable interrupts +;;; ;-------------------------------------------------------------- +;;; DPMI_DISABLE_INT + ;-------------------------------------------------------------- + ; Transfer data from buffer + ;-------------------------------------------------------------- + mov ecx,edx ;place count in ecx + mov edi,rp_dest ;get pointer to destination + cld ;make sure direction is ok +spr_loop: + SERBUFGET_AL rxBuf ;get character into al + stosb ;save it + loop spr_loop +;;; ;-------------------------------------------------------------- +;;; ; Reenable the old interrupt state +;;; ;-------------------------------------------------------------- +;;; DPMI_RESTORE_PREV_INT ;pops ax! + +spr_done: + mov eax,edx ;place count in eax + ;-------------------------------------------------------------- + ; Return count in eax + ;-------------------------------------------------------------- +END_C_PROC + +;------------------------------------------------------------------------- +; PCSerialFlowControl() +; Turns transmit fow control on or off +;------------------------------------------------------------------------- +; Enter: +; sp_this = pointer to object +; int count = non-zero = on +;------------------------------------------------------------------------- +; Returns: +; void +;------------------------------------------------------------------------- +BEGIN_C_PROC PCSerialFlowControl + + ARG_DPTR sf_this + ARG_DWORD sf_enable + + BUILD_STACK_FRAME + ;-------------------------------------------------------------- + ; Get "this" pointer + ;-------------------------------------------------------------- + mov esi,sf_this + mov eax,esi ;is it NULL? + or eax,eax + jz short sfDone ;OHMIGOSH!! EXIT!!! + ;-------------------------------------------------------------- + ; If enabled, turn it on: else, turn it off + ;-------------------------------------------------------------- + cmp sf_enable,0 + je short sfOff + + mov flowOverride[esi],0 ;turn it on (disable override) + jmp short sfDone +sfOff: + mov flowOverride[esi],1 ;turn it off (enable override) +sfDone: +END_C_PROC + +;------------------------------------------------------------------------- +; PCSerialSend() +; Transmits serial buffer +;------------------------------------------------------------------------- +; Enter: +; sp_this = pointer to object +; Byte *sp_src = pointer to source buffer +; int count = number of bytes to send +;------------------------------------------------------------------------- +; Returns: +; void +;------------------------------------------------------------------------- +BEGIN_C_PROC PCSerialSend + + ARG_DPTR sp_this + ARG_DPTR sp_src + ARG_DWORD sp_count + + BUILD_STACK_FRAME + ;-------------------------------------------------------------- + ; Get "this" pointer + ;-------------------------------------------------------------- + mov esi,sp_this + mov eax,esi ;is it NULL? + or eax,eax + jz short sendSkip ;OHMIGOSH!! EXIT!!! + ;-------------------------------------------------------------- + ; Wait for sufficient room + ;-------------------------------------------------------------- + cmp enabled[esi],0 ;if disabled, don't even try + je short sendSkip + + mov ecx,sp_count ;get request count + cmp ecx,SERIALBUFSIZE ;too big? + jge short sendSkip ;yes, don't even try! + +spt_wait: + SERBUFSPACE_IN txBuf,ax ;get buffer 'in' space + cmp ax,cx ;enough room? + jb short spt_wait ;no, hang out + ;-------------------------------------------------------------- + ; Disable interrupts + ;-------------------------------------------------------------- + DPMI_DISABLE_SAVE_INT ;pushes ax! + ;-------------------------------------------------------------- + ; Copy data into tx buffer + ;-------------------------------------------------------------- + mov edi,sp_src ;get pointer to source +spt_loop: + mov al,[edi] ;get the byte + inc edi ;increment the source pointer + SERBUFPUT_AL txBuf ;place it in the buffer + loop spt_loop + + mov dx,portBase[esi] ;set dx to port base address + call StartSending ;attempt to start tx interrupt + ;-------------------------------------------------------------- + ; Reenable the old interrupt state + ;-------------------------------------------------------------- + DPMI_RESTORE_PREV_INT ;pops ax! +sendSkip: +END_C_PROC + +;------------------------------------------------------------------------- +; PCSerialActive() +; Returns transmitter 'active' state (=0 when all transmission is done). +;------------------------------------------------------------------------- +; Enter: +; pa_this = pointer to object +;------------------------------------------------------------------------- +; Returns: +; int errors +;------------------------------------------------------------------------- +BEGIN_C_PROC PCSerialActive + + ARG_DPTR pa_this + BUILD_STACK_FRAME + ;-------------------------------------------------------------- + ; Get "this" pointer + ;-------------------------------------------------------------- + mov esi,pa_this + mov eax,esi ;is it NULL? + or eax,eax + jz short actNULL ;OHMIGOSH!! EXIT!!! + ;-------------------------------------------------------------- + ; Get 'active' status + ; + ; The LSR register has two bits reflecting the + ; transmitter state: + ; THR = transmit holding register (1=empty) + ; TSR = transmit serial register (1=empty) + ; + ; The transmission is completely finished when both of these + ; bits are high. + ;-------------------------------------------------------------- + xor eax,eax ;clear top of eax + + mov dx,portBase[esi] ;get the port base + add dx,UART_LSR ;get LSR + in al,dx + ;;sub dx,UART_LSR ;we usually subtract, no need here + + and al,UART_LSR_THR+UART_LSR_TSR ; remove all but THR,TSR + xor al,UART_LSR_THR+UART_LSR_TSR ; invert the bits +actNULL: +END_C_PROC + +;------------------------------------------------------------------------- +; PCSerialErrors() +; Returns error bits: zero indicates no errors. +; The error code is cleared by this call as well. +;------------------------------------------------------------------------- +; Enter: +; pe_this = pointer to object +;------------------------------------------------------------------------- +; Returns: +; int errors +;------------------------------------------------------------------------- +BEGIN_C_PROC PCSerialErrors + + ARG_DPTR pe_this + BUILD_STACK_FRAME + ;-------------------------------------------------------------- + ; Get "this" pointer + ;-------------------------------------------------------------- + mov esi,pe_this + mov eax,esi ;is it NULL? + or eax,eax + jz short errNULL ;OHMIGOSH!! EXIT!!! + ;-------------------------------------------------------------- + ; Get, clear error word + ;-------------------------------------------------------------- + mov ax,ErrorValue[esi] ;init error? + and ax,ERR_INIT + jnz short haveInitError ;yes, don't clear it + + xor ax,ax ;no, go ahead and clear it + xchg ax,ErrorValue[esi] +haveInitError: + and eax,0FFFFh ;make sure top of eax is clear +errNULL: +END_C_PROC + +;------------------------------------------------------------------------- +; PCSerialTestInstance() +;------------------------------------------------------------------------- +; Enter: +; (this) = pointer to object +;------------------------------------------------------------------------- +; Returns: +; int True +;------------------------------------------------------------------------- +BEGIN_C_PROC PCSerialTestInstance + mov eax,1 + ret +END_C_PROC + +;------------------------------------------------------------------------- +; PCSerialIsSignatureBad() +;------------------------------------------------------------------------- +; Enter: +; (this) = pointer to object +;------------------------------------------------------------------------- +; Returns: +; int False +;------------------------------------------------------------------------- +BEGIN_C_PROC PCSerialIsSignatureBad + mov eax,0 + ret +END_C_PROC + +;------------------------------------------------------------------------- +; PCSerialReceiveCount() +;------------------------------------------------------------------------- +; Enter: +; (this) = pointer to object +;------------------------------------------------------------------------- +; Returns: +; int number of items in receive queue +;------------------------------------------------------------------------- +BEGIN_C_PROC PCSerialReceiveCount + + ARG_DPTR prc_this + BUILD_STACK_FRAME + + mov esi,prc_this + xor eax,eax + mov ax,rxBuf.count[esi] +END_C_PROC + +;------------------------------------------------------------------------- +; PCSerialTransmitCount() +;------------------------------------------------------------------------- +; Enter: +; (this) = pointer to object +;------------------------------------------------------------------------- +; Returns: +; int number of items in transmit queue +;------------------------------------------------------------------------- +BEGIN_C_PROC PCSerialTransmitCount + + ARG_DPTR ptc_this + BUILD_STACK_FRAME + + mov esi,ptc_this + xor eax,eax + mov ax,txBuf.count[esi] +END_C_PROC + +;------------------------------------------------------------------------- +; PCSerialSetRate(Word baud) +; Set new data rate for serial object +;------------------------------------------------------------------------- +; Enter: +; (this) = pointer to object +; baud = new data rate +;------------------------------------------------------------------------- +; Returns: +; (void) +;------------------------------------------------------------------------- +BEGIN_C_PROC PCSerialSetRate + + ARG_DPTR ssr_this + ARG_WORD ssr_rate + BUILD_STACK_FRAME + + ;-------------------------------------------------------------- + ; Get "this" pointer + ;-------------------------------------------------------------- + mov esi,ssr_this + ;-------------------------------------------------------------- + ; Set baud rate + ;-------------------------------------------------------------- + mov dx,portBase[esi] ;get port base address + mov cx,ssr_rate ;get data rate from stack + SETBAUD_CX ;macro from PCSERIAL.INC +END_C_PROC + +;------------------------------------------------------------------------- +; PCSerialSetDataFormat(Word dataFormat) +; Set new data format for serial object +;------------------------------------------------------------------------- +; Enter: +; (this) = pointer to object +; baud = new data format +;------------------------------------------------------------------------- +; Returns: +; (void) +;------------------------------------------------------------------------- +BEGIN_C_PROC PCSerialSetDataFormat + + ARG_DPTR sdf_this + ARG_WORD sdf_format + BUILD_STACK_FRAME + + ;-------------------------------------------------------------- + ; Get "this" pointer + ;-------------------------------------------------------------- + mov esi,sdf_this + ;-------------------------------------------------------------- + ; Set data format + ;-------------------------------------------------------------- + mov dx,portBase[esi] ;get port base address + mov ax,sdf_format + SETFORMAT_AL +END_C_PROC + +;------------------------------------------------------------------------- +; PCSerialLineStatus() +; Return state of line status register +;------------------------------------------------------------------------- +; Enter: +; (this) = pointer to object +;------------------------------------------------------------------------- +; Returns: +; int line status +;------------------------------------------------------------------------- +BEGIN_C_PROC PCSerialModemStatus + + ARG_DPTR sls_this + BUILD_STACK_FRAME + + ;-------------------------------------------------------------- + ; Get "this" pointer + ;-------------------------------------------------------------- + mov esi,sls_this + ;-------------------------------------------------------------- + ; Get LSR data + ;-------------------------------------------------------------- + xor eax,eax ;clear returned value + + mov dx,portBase[esi] ;get port base address + add dx,UART_MSR + in al,dx +END_C_PROC + +;------------------------------------------------------------------------- +; StartSending - attempt to start transmitter (if allowed) +; ...called from the receive interrupt routine and PCSerialSend. +;------------------------------------------------------------------------- +; Enter: +; ESI = pointer to PCSERIAL structure +; DX = UART base address +;------------------------------------------------------------------------- +; Returns: +; (void) +;------------------------------------------------------------------------- +; Side effects: +; Modifies al, bx +;------------------------------------------------------------------------- +StartSending PROC NOLANGUAGE NEAR + + add dx,UART_LSR ;get THR bit from LSR + in al,dx + sub dx,UART_LSR + + test al,UART_LSR_THR ;is there anything in the holding reg? + jz sptNoKick ;yes, interrupt will occur later + + cmp flowOverride[esi],0 ;use flow control? + jne sptNow ;no, just do it + cmp txFlow[esi],0 ;if flow control off, don't start! + je short sptNoKick +sptNow: + SERBUFGET_AL txBuf ;get a character from the buffer + out dx,al ;send it + +sptNoKick: + ret +StartSending ENDP + +;------------------------------------------------------------------------- +; Interrupt handlers +;------------------------------------------------------------------------- +IntHandler PROC NOLANGUAGE NEAR + ASSUME cs:_TEXT + +IntCom1: + pushad + mov edi,OFFSET irq_com1 ;point EDI at IRQDATA structure + call IntMain + popad + iret +;;; jmp cs:fword ptr [irq_com1.irqOldOffset] +IntCom2: + pushad + mov edi,OFFSET irq_com2 ;point EDI at IRQDATA structure + call IntMain + popad + iret +;;; jmp cs:fword ptr [irq_com2.irqOldOffset] +IntCom3: + pushad + mov edi,OFFSET irq_com3 ;point EDI at IRQDATA structure + call IntMain + popad + iret +;;; jmp cs:fword ptr [irq_com3.irqOldOffset] +IntCom4: + pushad + mov edi,OFFSET irq_com4 ;point EDI at IRQDATA structure + call IntMain + popad + iret +;;; jmp cs:fword ptr [irq_com4.irqOldOffset] + + ;-------------------------------------------------------------- + ; Serial interrupt handler main body + ;-------------------------------------------------------------- +IntMain: + push ds ;save registers + push es + mov ds,cs:[data_selector] ;get our DS + ASSUME ds:_DATA + +;;; SPKR_SET ;********************************************* + + ;-------------------------------------------------------------- + ; Get pointer to PCSERIAL structure, UART base address + ;-------------------------------------------------------------- + mov esi,irqThis[edi] + mov dx,irqPort[edi] + ;-------------------------------------------------------------- + ; Process all pending operations + ;-------------------------------------------------------------- +procLoop: + add dx,UART_IIR ;point to interrupt ident reg + in al,dx ;get interrupt source ID + sub dx,UART_IIR ;restore dx + + cmp al,001h ;if LSB is set, no interrupt + je procDone + ;-------------------------------------------------------------- + ; Receive character + ;-------------------------------------------------------------- + cmp al,UART_IIR_RDR ;receiver ready? + jne short procNoRx ;no, skip it + + in al,dx ;get character + SERBUFPUT_AL rxBuf ;save command character in buffer + jmp short procLoop +procNoRx: + ;-------------------------------------------------------------- + ; Send character + ;-------------------------------------------------------------- + cmp al,UART_IIR_THR ;transmitter ready? + jne short procNoTx ;no, skip it + + cmp txBuf.count[esi],0 ;any data to send? + je short procTxOff ;no, skip it + + cmp flowOverride[esi],0 ;use flow control? + jne procNow ;no, just do it + cmp txFlow[esi],0 ;flow enabled? + je short procTxOff ;no, skip it +procNow: + SERBUFGET_AL txBuf ;get a character from the buffer + out dx,al ;send it + jmp short procLoop + ;------------------------------ + ; Couldn't send, just exit + ;------------------------------ +procTxOff: + jmp procLoop + +procNoTx: + ;-------------------------------------------------------------- + ; Process modem status register change + ;-------------------------------------------------------------- + cmp al,UART_IIR_MSR ;MSR change? + jne short procNoMSR ;no, skip it + + add dx,UART_MSR ;read modem status reg to clear IRQ + in al,dx + sub dx,UART_MSR + + test al,UART_MSR_DCTS ;CTS changed? + jz short procNoDCTS + + test al,UART_MSR_CTS ;CTS active? + jz short procCTSoff + ;------------------------------ + ; Turn flow control on + ;------------------------------ + mov txFlow[esi],1 + + add dx,UART_LSR ;get THR bit from LSR + in al,dx + sub dx,UART_LSR + + test al,UART_LSR_THR ;is there anything in the holding reg? + jz procNoDCTS ;yes, must be active + + cmp txBuf.count[esi],0 ;any data to send? + je short procNoDCTS ;no, skip it + call StartSending ;yes, restart sending + jmp short procNoDCTS +procCTSoff: + ;------------------------------ + ; Turn flow control off + ;------------------------------ + mov txFlow[esi],0 +procNoDCTS: + jmp procLoop +procNoMSR: + ;-------------------------------------------------------------- + ; Process line status register change (error or break) + ;-------------------------------------------------------------- + ;MUST BE LSR CHANGE. No need to check IIR. + +;; cmp al,UART_IIR_LSR ;LSR change? +;; jne short procNoLSR ;no, skip it + + add dx,UART_LSR ;read line status reg to clear IRQ + in al,dx ;read value + sub dx,UART_LSR + + and ax,UART_LSR_ERRS ;remove non-error bits + or ErrorValue[esi],ax ;OR with current error state + jmp procLoop +procDone: + ;-------------------------------------------------------------- + ; PIC port write + ; (allows future interrupts to occur) + ;-------------------------------------------------------------- + PIC_RESET_MASTER + ;-------------------------------------------------------------- + ; Restore registers, return from SUBROUTINE (not interrupt!) + ;-------------------------------------------------------------- +;;; SPKR_RESET ;********************************************* + + pop es + pop ds + ret + +IntHandler ENDP + +END_CODE + + END + + diff --git a/CODE/RP/MUNGA_L4/L4SERIAL.HPP b/CODE/RP/MUNGA_L4/L4SERIAL.HPP new file mode 100644 index 0000000..fb78fe5 --- /dev/null +++ b/CODE/RP/MUNGA_L4/L4SERIAL.HPP @@ -0,0 +1,260 @@ +//===========================================================================// +// File: L4Serial.hh // +// Project: MUNGA Brick: Platform-specific IO // +// Contents: PC serial interface class // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- -----------------------------------------------------------// +// 01/04/95 CPB Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1994, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// +#if !defined(L4SERIAL_HPP) + +# define L4SERIAL_HPP + +# if !defined(STYLE_HPP) +# include +# endif + + // WARNING**WARNING**WARNING**WARNING**WARNING**WARNING**WARNING**WARNING + // Do NOT change ANY of the following lines without making + // corresponding changes in PCSerial.asm! PCSerial.hh exists + // ONLY to inform C++ compilers of the data and structures + // used by PCSerial.asm! + // WARNING**WARNING**WARNING**WARNING**WARNING**WARNING**WARNING**WARNING + + // These are purposely grouped as two parameters in one equate. + // The standard PC COM ports ALWAYS use these combinations. + #define PCS_COM1 0x3F8,0x0C // portAddress,interruptNumber + #define PCS_COM2 0x2F8,0x0B + #define PCS_COM3 0x3E8,0X0C + #define PCS_COM4 0x2E8,0x0B + + // Data rates + #define PCS_300 0x0180 // 300 Baud + #define PCS_1200 0x0060 // 1200 Baud + #define PCS_2400 0x0030 // 2400 Baud + #define PCS_9600 0x000C // 9600 Baud + #define PCS_19P2 0x0006 // 19200 Baud + #define PCS_38P4 0x0003 // 38400 Baud + #define PCS_115K 0x0001 // 115,200 Baud (not supported on all PC's) + + // Data formats + #define PCS5D 0x0000 // 5 data bits + #define PCS6D 0x0001 // 6 data bits + #define PCS7D 0x0002 // 7 data bits + #define PCS8D 0x0003 // 8 data bits + + #define PCS1S 0x0000 // one stop bit + #define PCS2S 0x0004 // two stop bits + + #define PCSNP 0x0000 // no parity + #define PCSOP 0x0008 // odd parity + #define PCSEP 0x0018 // even parity + #define PCSMP 0x0028 // mark parity (untested) + #define PCSSP 0x0038 // space parity (untested) + + // some popular combinations- + #define PCS_N81 (PCS8D|PCS1S|PCSNP) // no parity, 8 data, 1 stop + #define PCS_E81 (PCS8D|PCS1S|PCSEP) // even parity, 8 data, 1 stop + #define PCS_O81 (PCS8D|PCS1S|PCSOP) // odd parity, 8 data, 1 stop + + // Flow control +// #define PCS_NOFLOWCTRL 0x0000 // no flow control + + // error bits returned by PC_Serial::Errors() + #define PCS_ERR_OVERRUN 0x0002 + #define PCS_ERR_PARITY 0x0004 + #define PCS_ERR_FRAMING 0x0008 + #define PCS_ERR_BREAK 0x0010 + #define PCS_ERR_ALLOC 0x0100 // failed at slot allocation + #define PCS_ERR_INIT 0x0200 // failed DPMI initialization + #define PCS_ERR_TXOVER 0x0400 // overran transmit buffer + #define PCS_ERR_RXOVER 0x0500 // overran receive buffer + + // bits returned by PC_Serial::ModemStatus() + + // (1st four bits not defined yet, but non-zero) + #define PCS_MS_CTS 0x0010 + #define PCS_MS_DSR 0x0020 + #define PCS_MS_RI 0x0040 + #define PCS_MS_DCD 0x0080 + + + class PCSerial; + + extern "C" void + PCSerialInit( + PCSerial *pc_serial, + Word data_rate, + Word data_format, + Word port, + Word irq_num + ); + + extern "C" int + PCSerialTerm( + PCSerial *pc_serial + ); + + extern "C" int + PCSerialReceive( + PCSerial *pc_serial, + char *destination, + int destination_length + ); + + extern "C" void + PCSerialSend( + PCSerial *pc_serial, + char *source, + int source_length + ); + + extern "C" int + PCSerialErrors( + PCSerial *pc_serial + ); + + extern "C" int + PCSerialActive( + PCSerial *pc_serial + ); + + extern "C" int + PCSerialTestInstance( + PCSerial *pc_serial + ); + + extern "C" int + PCSerialIsSignatureBad( + const volatile PCSerial *pc_serial + ); + + extern "C" int + PCSerialReceiveCount( + PCSerial *pc_serial + ); + + extern "C" int + PCSerialTransmitCount( + PCSerial *pc_serial + ); + + extern "C" void + PCSerialSetRate( + PCSerial *pc_serial, + Word rate + ); + + extern "C" void + PCSerialSetDataFormat( + PCSerial *pc_serial, + Word format + ); + + extern "C" void + PCSerialFlowControl( + PCSerial *pc_serial, + int enable + ); + + extern "C" int + PCSerialModemStatus( + PCSerial *pc_serial + ); + + class PCSerial + { + + public: + PCSerial(Word rate, Word format, Word port, Word int_num) + { PCSerialInit(this, rate, format, port, int_num); } + + ~PCSerial() + { + if (this == NULL) + { + cout << "~PCSerial has been passed a NULL pointer\n"; + } + else + { + PCSerialTerm(this); + } + } + + Logical + TestInstance() + { return PCSerialTestInstance(this); } + + int + ReceiveString(char *destPtr, int maxLen) // returns length + { return PCSerialReceive(this, destPtr, maxLen); } + + void + FlowControlEnable(Logical onOff) + { PCSerialFlowControl(this, (int) onOff); } + + void + SendString(char *srcPtr, int length) + { PCSerialSend(this, srcPtr, length); } + + // error bits returned by PCSerial::Errors() + enum ErrorBits { + overrunError=0x0002, + parityError=0x0004, + framingError=0x0008, + breakDetect=0x0010, + initError=0x0100 + }; + + int + ReceiveCharCount() + { return PCSerialReceiveCount(this); } + + int + TransmitCharCount() + { return PCSerialTransmitCount(this); } + + int + Errors() // returns error value, clears it + { return PCSerialErrors(this); } + + int + IsActive() + { return PCSerialActive(this); } + + int + ModemStatus() + { return PCSerialModemStatus(this); } + +# if defined(USE_SIGNATURE) + friend int + Is_Signature_Bad(const volatile PCSerial *ptr) + { return PCSerialIsSignatureBad(ptr); } +# endif + +// protected: + + Word portBase; + Word errorValue; + Byte enabled; + Byte txFlow; + Byte flowOverride; + LWord intDataPtr; + LWord hackCount; + + // This is for INTERNAL USE only (reflects structure in .ASM file) + struct PCSerBuf + { + Word head, tail, count; + Byte data[1024]; + } + txBuf, rxBuf; + + }; + +#endif diff --git a/CODE/RP/MUNGA_L4/L4SPLR.HPP b/CODE/RP/MUNGA_L4/L4SPLR.HPP new file mode 100644 index 0000000..03f91f2 --- /dev/null +++ b/CODE/RP/MUNGA_L4/L4SPLR.HPP @@ -0,0 +1,234 @@ +//===========================================================================// +// 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(L4SPLR_HPP) +# define L4SPLR_HPP + +# if !defined(L4NET_HPP) +# include +# endif + +# if !defined(L4APP_HPP) +# include +# endif + +# if !defined(SPOOLER_HPP) +# include +# endif + +# if !defined(INTEREST_HPP) +# include +# endif + +# if !defined(APPTASK_HPP) +# include +# endif + + //########################################################################## + //#################### SpoolingInterestManager ######################### + //########################################################################## + + class SpoolingInterestManager: + public InterestManager + { + public: + SpoolingInterestManager(); + ~SpoolingInterestManager(); + + void + LoadInterestArenas(Mission *mission); + void + LoadMission(Mission *mission); + void + ReceiveNetworkPacket( + NetworkPacket *packet, + Receiver::Message *packet_message + ); + void + Shutdown(); + }; + + //########################################################################## + //################### L4SpoolingNetworkManager ######################### + //########################################################################## + + class L4SpoolingNetworkManager: + public L4NetworkManager + { + public: + L4SpoolingNetworkManager(); + ~L4SpoolingNetworkManager(); + + void + ReceiveNetworkPacket( + NetworkPacket *packet, + Receiver::Message *packet_message + ); + void + StartConnecting(Mission *mission); + }; + + //########################################################################## + //################### L4PlaybackNetworkManager ######################### + //########################################################################## + + class L4PlaybackNetworkManager: + public NetworkManager + { + public: + L4PlaybackNetworkManager(); + ~L4PlaybackNetworkManager(); + + void + StartConnecting(Mission *mission); + + Logical + Shutdown(); + + Logical + CheckBuffers(NetworkPacket*); + }; + + //########################################################################## + //################### L4SpoolingApplication ########################## + //########################################################################## + + class L4SpoolingApplication: + public L4Application + { + public: + L4SpoolingApplication( + ResourceFile *resource, + ApplicationID application_ID + ); + ~L4SpoolingApplication(); + + SpoolingInterestManager* + GetInterestManager() + { + return + (SpoolingInterestManager*)Application::GetInterestManager(); + } + + L4SpoolingNetworkManager* + GetNetworkManager() + { + return + (L4SpoolingNetworkManager*)Application::GetNetworkManager(); + } + + MissionReviewApplicationManager* + GetApplicationManager() + { + return + (MissionReviewApplicationManager*) + Application::GetApplicationManager(); + } + + protected: + Registry* + MakeRegistry(); + InterestManager* + MakeInterestManager(); + NetworkManager* + MakeNetworkManager(); + + Mission* + MakeMission( + NotationFile *notation_file, + ResourceFile *resources + ); + + VideoRenderer* + MakeVideoRenderer(); + AudioRenderer* + MakeAudioRenderer(); + GaugeRenderer* + MakeGaugeRenderer(); + + Entity* + MakeViewpointEntity(Entity__MakeMessage *); + + void + Initialize(); + void + LoadBackgroundTasks(); + Logical + Shutdown(); + + + void + ReceiveNetworkPacket( + NetworkPacket *packet, + Receiver::Message *packet_message + ); + + Logical + ExecuteForeground( + Time start_of_frame, + Scalar frame_duration + ); + void + ExecuteBackgroundTask(); + + protected: + Logical + missionSpooled; + + public: + static Derivation ClassDerivations; + static SharedData DefaultData; + + static const HandlerEntry + MessageHandlerEntries[]; + static MessageHandlerSet + MessageHandlers; + + void + LoadMissionMessageHandler(Message *message); + void + RunMissionMessageHandler(RunMissionMessage *message); + void + StopMissionMessageHandler(StopMissionMessage *message); + void + AbortMissionMessageHandler(AbortMissionMessage *message); + + Logical + TestInstance() const; + }; + + extern L4SpoolingApplication * &l4_spooling_application; + + //########################################################################## + //######################## SpoolerTask ############################### + //########################################################################## + + class SpoolerTask: + public ApplicationTask + { + public: + SpoolerTask(); + ~SpoolerTask(); + + void + Execute(); + + virtual void + DispatchPacket(NetworkPacket *packet); + virtual long + GetTimeBias(); + }; + +#endif + diff --git a/CODE/RP/MUNGA_L4/L4SVGA16.ASM b/CODE/RP/MUNGA_L4/L4SVGA16.ASM new file mode 100644 index 0000000..94fd017 --- /dev/null +++ b/CODE/RP/MUNGA_L4/L4SVGA16.ASM @@ -0,0 +1,654 @@ +;=========================================================================== +; File: L4SVGA16.asm +; Project: MUNGA +; Contents: SVGA 16-bit buffered graphics operations +;--------------------------------------------------------------------------- +; Date Who Modification +; -------- --- ----------------------------------------------------------- +; 03/08/95 CPB Initial coding (started from VGAbuf8.asm) +;--------------------------------------------------------------------------- +; Copyright (C) 1995, Virtual World Entertainment, Inc. +; All Rights reserved worldwide +; This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL +;=========================================================================== + + include l4asm.inc + include pcdpmi.inc +;=========================================================================== +; Equates +;=========================================================================== + +;-------------------------------------------------------------- +; VGA CRTC registers (in color mode: monochrome is different!) +; monochrome is 3B4/3B5 respectively +;-------------------------------------------------------------- +CRTC_INDEX equ 03D4h +CRTC_DATA equ 03D5h + +CRTC_INDEX_HTOTAL equ 00h +CRTC_INDEX_HDISPENEND equ 01h +CRTC_INDEX_HBSTART equ 02h +CRTC_INDEX_HBEND equ 03h +CRTC_INDEX_HRSTART equ 04h +CRTC_INDEX_HREND equ 05h +CRTC_INDEX_VTOTAL equ 06h +CRTC_INDEX_OVERFLOW equ 07h +CRTC_INDEX_PRSCAN equ 08h +CRTC_INDEX_MAXSCAN equ 09h +CRTC_INDEX_CUR_START equ 0Ah +CRTC_INDEX_CUR_END equ 0Bh +CRTC_INDEX_STARTHIGH equ 0Ch +CRTC_INDEX_STARTLOW equ 0Dh +CRTC_INDEX_CURSORHIGH equ 0Eh +CRTC_INDEX_CURSORLOW equ 0Fh +CRTC_INDEX_VRSTART equ 10h +CRTC_INDEX_VREND equ 11h ;;bit 7=1 to write-protect 0..7 +CRTC_INDEX_VDENABEND equ 12h +CRTC_INDEX_OFFSET equ 13h +CRTC_INDEX_UNDERLINE equ 14h +CRTC_INDEX_VBSTART equ 15h +CRTC_INDEX_VBEND equ 16h +CRTC_INDEX_MODECTL equ 17h +CRTC_INDEX_LINECMP equ 18h + +;-------------------------------------------------------------- +; VGA sequencer registers +;-------------------------------------------------------------- +SRX equ 03C4h +SRDATA equ 03C5h + +SR0 equ 000h ;reset +SR1 equ 001h ;clocking mode +SR2 equ 002h ;plane mask +SR3 equ 003h ;character map select +SR4 equ 004h ;memory mode +;-------------------------------------------------------------- +; VGA graphics controller registers +;-------------------------------------------------------------- +GRX equ 03CEh +GRDATA equ 03CFh + +GR0 equ 000h ;set/reset +GR1 equ 001h ;set/reset enable +GR2 equ 002h ;color compare +GR3 equ 003h ;data rotate +GR4 equ 004h ;read map select +GR5 equ 005h ;mode +GR6 equ 006h ;miscellaneous +GR7 equ 007h ;color don't care +GR8 equ 008h ;bit mask +;-------------------------------------------------------------- +; VGA attribute controller registers +;-------------------------------------------------------------- +ARX equ 03C0h ;???? +ARDATA equ 03C1h + +PEL_WRITE_ADDR equ 03C8h ;write begins "write" operation +PEL_READ_ADDR equ 03C7h ;write begins "read" operation +PEL_STATE equ 03C7h ;read returns DAC state +PEL_DATA equ 03C9h + +;-------------------------------------------------------------- +; VWE LBE4 video splitter board addresses +;-------------------------------------------------------------- +VWE_HC_ON equ 031Ah ;write to this port turns on high-color divider +VWE_HC_OFF equ 0319h ;write to this port turns off high-color divider + +;-------------------------------------------------------------- +; Video buffer base address +;-------------------------------------------------------------- +VIDEO_BUFFER EQU 0000h +VIDEO_SEGMENT EQU 0A000h +BIOS_SEGMENT EQU 0C000h + +;=========================================================================== +; Macros +;=========================================================================== + +;=========================================================================== +; Structures +;=========================================================================== + +PixelMap STRUC + pmX dd ? + pmY dd ? + pmPtr dd ? +PixelMap ENDS + +BitMap STRUC + bmX dd ? + bmY dd ? + bmWords dd ? + bmPtr dd ? +BitMap ENDS + +;=========================================================================== +; Data segment +;=========================================================================== +BEGIN_DATA + + regs DPMIrealModeRegs <> + video_descriptor dw ? + + pageFunction dd ? ;THE ORDER OF THESE TWO IS CRITICAL! + BIOS_descriptor dw ? ;(they constitute a far pointer in 32-bits) + + bitMapFcn dd ? ;used by Buf16DrawBitMap + + tempColor db 256*3 dup () + +;; testWord dw 0 + + + badVideoActive db 0 ;flag indicating deliberately bad video is on + crtc_htotal db ? ;horizontal total + + +END_DATA + +;=========================================================================== +; Code segment +;=========================================================================== +BEGIN_CODE + +;------------------------------------------------------------------------- +; SVGASetMode() +; Set requested VESA display mode +;------------------------------------------------------------------------- +; Enter: +; LWord mode = requested display mode +;------------------------------------------------------------------------- +; Returns: +; (void) +;------------------------------------------------------------------------- +BEGIN_C_PROC SVGASetMode + ARG_DWORD sm_mode + ARG_CPTR sm_ptr + + BUILD_STACK_FRAME + + mov eax,sm_ptr + mov pageFunction,eax + + mov eax,sm_mode + cmp eax,0100h + jae short smUseVESA + + ;-------------------------------------------------------------- + ; Prepare for BIOS call + ;-------------------------------------------------------------- + ;ah=00 for mode set, al=mode + mov regs.realEAX,eax + jmp short smGo + +smUseVESA: + ;-------------------------------------------------------------- + ; Prepare for VESA call + ;-------------------------------------------------------------- + mov ax,04F02h ;ah=4F for VESA, al=02 for set mode + mov regs.realEAX,eax + + mov eax,sm_mode ;bx = mode + mov regs.realEBX,eax + ;-------------------------------------- + ; Simulate real interrupt through DPMI + ;-------------------------------------- +smGo: + mov bx,010h ;bh=0, bl=interrupt number + xor cx,cx ;copy zero words from stack + + mov ax,ds ;es:edi points to regs + mov es,ax ;es:edi points to regs + mov edi,OFFSET regs + + DPMI_SIMULATE_REAL_INT + + ;-------------------------------------------------------------- + ; Generate descriptor for video buffer at segment A000 + ;-------------------------------------------------------------- + mov bx,VIDEO_SEGMENT ;segment to map + DPMI_MAP_SEG_TO_DESC + mov video_descriptor,ax + +END_C_PROC + +;------------------------------------------------------------------------- +; SVGAFunkyVideo() +; Deliberately create bad video sync +;------------------------------------------------------------------------- +; Enter: +; LWord mode = on/off (MUNGA "Logical") +;------------------------------------------------------------------------- +; Returns: +; (void) +;------------------------------------------------------------------------- +BEGIN_C_PROC SVGAFunkyVideo + ARG_DWORD fv_mode + + BUILD_STACK_FRAME + + ;-------------------------------------------------------------- + ; Enable writing to lowest seven CRTC registers + ;-------------------------------------------------------------- + mov dx,CRTC_INDEX ;point to vrend register + mov al,CRTC_INDEX_VREND + out dx,al + + mov dx,CRTC_DATA ;get the current setting + in al,dx + mov cl,al ;save in cl + + and al,07Fh ;turn off MSB (turns off write-protect) + out dx,al ;write it out + ;-------------------------------------------------------------- + ; Point to CRTC htotal register + ;-------------------------------------------------------------- + mov dx,CRTC_INDEX ;point to htotal register + mov al,CRTC_INDEX_HTOTAL + out dx,al + + mov dx,CRTC_DATA ;point dx at data port + ;-------------------------------------------------------------- + ; Set or restore? + ;-------------------------------------------------------------- + mov eax,fv_mode + or eax,eax + je short bvOff + + mov al,badVideoActive ;already in bad video? + or al,al + jnz bvExit ;yes, bail out + + mov badVideoActive,1 ;flag as 'bad' + ;-------------------------------------------------------------- + ; Read CRTC value, save it + ;-------------------------------------------------------------- + in al,dx ;get the current setting + mov crtc_htotal,al + ;-------------------------------------------------------------- + ; Set screwed up CRTC value + ;-------------------------------------------------------------- + sub al,9 ;generate funky htotal + out dx,al ;write it out + jmp short bvExit + ;-------------------------------------------------------------- + ; Restore proper CRTC value + ;-------------------------------------------------------------- +bvOff: + mov al,crtc_htotal + out dx,al + + mov badVideoActive,0 ;flag as 'good' +bvExit: + ;-------------------------------------------------------------- + ; Restore VREND register + ;-------------------------------------------------------------- + mov dx,CRTC_INDEX ;point to vrend register + mov al,CRTC_INDEX_VREND + out dx,al + + mov dx,CRTC_DATA + mov al,cl ;get the old value + out dx,al ;write it out + +END_C_PROC + +;------------------------------------------------------------------------- +; SVGASetSplitterClock() +; Turn on/off special VWE splitter clock divider +;------------------------------------------------------------------------- +; Enter: +; LWord state = requested clock mode (True:on, False:off) +;------------------------------------------------------------------------- +; Returns: +; (void) +;------------------------------------------------------------------------- +BEGIN_C_PROC SVGASetSplitterClock + + ARG_DWORD state + + BUILD_STACK_FRAME + + mov eax,state + or eax,eax + jz short ssc_off + ;-------------------------------------------------------------- + ; Turn on special splitter card clock divider + ;-------------------------------------------------------------- + mov dx,VWE_HC_ON + jmp short ssc_write + ;-------------------------------------------------------------- + ; Turn off special splitter card clock divider + ;-------------------------------------------------------------- +ssc_off: + mov dx,VWE_HC_OFF +ssc_write: + out dx,al ;any value will do + +END_C_PROC + +;------------------------------------------------------------------------- +; SVGASetPage() +; Set SVGA display page +;------------------------------------------------------------------------- +; Enter: +; int page = requested SVGA page +;------------------------------------------------------------------------- +; Returns: +; (void) +;------------------------------------------------------------------------- +BEGIN_C_PROC SVGASetPage + + ARG_DWORD sp_page + + BUILD_STACK_FRAME + + mov edx,sp_page + and edx,00FFh ;remove upper bits + + mov bx,0000h ;bh=set bank, bl=window # + mov ax,4F05h ;int 10h function 4F subfcn 05 + +;; cmp pageFunction,0 ;does the direct call exist? +;; je setBankIrq ;no, use interrupt + +;; call cs:fword ptr [pageFunction] ;THIS DOES NOT WORK, +;; jmp setBankRest ;I suspect we must use a DPMI call. + +;;setBankIrq: + mov ax,04F05h ;ah=4F for VESA, al=05 for set bank + mov regs.realEAX,eax + + xor eax,eax ;bh = subfunction, bl=window + mov regs.realEBX,eax + + mov regs.realEDX,edx ;dx = addr in granularity units + + mov bx,010h ;bh=0, bl=interrupt number + xor cx,cx ;copy zero words from stack + + mov ax,ds ;es:edi points to regs + mov es,ax + mov edi,OFFSET regs + + DPMI_SIMULATE_REAL_INT +END_C_PROC + +;------------------------------------------------------------------------- +; SVGATransfer32() +; Copy modified portions of buffer to SVGA display buffer +;------------------------------------------------------------------------- +; Enter: +; LWord offset = offset into display buffer +; Word *ptr = pointer to source pixels +; LWord bits = bits indicating which pixels to write +;------------------------------------------------------------------------- +; Returns: +; int number of bits transferred +;------------------------------------------------------------------------- +BEGIN_C_PROC SVGATransfer32 + + ARG_DWORD t_dest_offset + ARG_DPTR t_source_ptr + ARG_DWORD t_bits + + BUILD_STACK_FRAME + ;----------------------------- + ; Get source ptr in ds:si + ;----------------------------- + mov esi,t_source_ptr + ;----------------------------- + ; Get dest ptr in es:di + ;----------------------------- + mov ax,video_descriptor ;es:di points to destination + mov es,ax + mov edi,t_dest_offset + ;----------------------------- + ; Clear bit count + ;----------------------------- + xor edx,edx + ;----------------------------- + ; Check 32 pixels + ;----------------------------- + mov ebx,t_bits ;bx has bits + mov ecx,32 + cld ;make sure esi, edi are INCREMENTED +tx_loop: + lodsw ;get source word + shl ebx,1 ;is bit set? + jnc tx_nope ;no, don't copy + ;----------------------------- + ; Bit set, copy the pixel + ;----------------------------- +;; mov ax,testWord +;; inc ax +;; mov testWord,ax + + stosw ;yes, copy + inc edx ;increment bit count + loop tx_loop + jmp short tx_done + ;----------------------------- + ; Bit clear, skip the pixel + ;----------------------------- +tx_nope: + add edi,2 + loop tx_loop +tx_done: + ;----------------------------- + ; All done, exit + ;----------------------------- + mov eax,edx ;return count in eax +END_C_PROC + +;------------------------------------------------------------------------- +; SVGATransfer32x() +; Copy LOWER BYTE of modified portions of buffer to SVGA display buffer +;------------------------------------------------------------------------- +; Enter: +; LWord offset = offset into display buffer +; Word *ptr = pointer to source pixels +; LWord bits = bits indicating which pixels to write +;------------------------------------------------------------------------- +; Returns: +; int number of bits transferred +;------------------------------------------------------------------------- +BEGIN_C_PROC SVGATransfer32x + + ARG_DWORD t_dest_offsetx + ARG_DPTR t_source_ptrx + ARG_DWORD t_bitsx + + BUILD_STACK_FRAME + ;----------------------------- + ; Get source ptr in ds:si + ;----------------------------- + mov esi,t_source_ptrx + ;----------------------------- + ; Get dest ptr in es:di + ;----------------------------- + mov ax,video_descriptor ;es:di points to destination + mov es,ax + mov edi,t_dest_offsetx + ;----------------------------- + ; Clear bit count + ;----------------------------- + xor edx,edx + ;----------------------------- + ; Check 32 pixels + ;----------------------------- + mov ebx,t_bitsx ;bx has bits + mov ecx,32 + cld ;make sure esi, edi are INCREMENTED +tx_loopx: + lodsw ;get source word + shl ebx,1 ;is bit set? + jnc tx_nopex ;no, don't copy + ;----------------------------- + ; Bit set, copy the pixel + ;----------------------------- + stosb ;yes, copy LOWER BYTE + inc edx ;increment bit count + loop tx_loopx + jmp short tx_donex + ;----------------------------- + ; Bit clear, skip the pixel + ;----------------------------- +tx_nopex: + inc edi ;; LOWER BYTE ONLY + loop tx_loopx +tx_donex: + ;----------------------------- + ; All done, exit + ;----------------------------- + mov eax,edx ;return count in eax +END_C_PROC + +;------------------------------------------------------------------------- +; SVGAZeroPalette(port) +; Clear entire 256-color palette in hardware +; ASSUMES that the port is correct. +;------------------------------------------------------------------------- +; Enter: +; Word port = base port address +;------------------------------------------------------------------------- +; Returns: +; (void) +;------------------------------------------------------------------------- +BEGIN_C_PROC SVGAZeroPalette + ARG_WORD zp_port + + BUILD_STACK_FRAME + ;-------------------------------------------------------------- + ; Signal CLUT that color data will be written + ;-------------------------------------------------------------- + mov dx,zp_port ;get port base address + + xor al,al ;start with color zero + add dx,2 ;move to "write address" register + out dx,al ;set the address + ;-------------------------------------------------------------- + ; Write the color data + ;-------------------------------------------------------------- + inc dx ;move to "data" register + mov ecx,256*3 ;clear entire palette +zpLoop: + out dx,al + loop zpLoop +END_C_PROC + +;------------------------------------------------------------------------- +; SVGAWriteFullPalette(palette_ptr, port) +; Write entire 256-color palette to hardware +; ASSUMES that the palette pointer is correct. +; ASSUMES that the port is correct. +;------------------------------------------------------------------------- +; Enter: +; Palette8 *wp_source = pointer to FIRST COLOR TRIPLET +; Word port = base port address +;------------------------------------------------------------------------- +; Returns: +; (void) +;------------------------------------------------------------------------- +BEGIN_C_PROC SVGAWriteFullPalette + ARG_DPTR wfp_source + ARG_WORD wfp_port + + BUILD_STACK_FRAME + ;-------------------------------------------------------------- + ; Convert color bytes to 6-bit VGA palette values + ;-------------------------------------------------------------- + mov esi,wfp_source ;get pointer to FIRST TRIPLET + mov edi,offset tempColor + mov ecx,256*3 ;transfer entire palette + cld ;make sure the pointers INCREMENT! +wfpLoop: + lodsb ;get the byte + shr al,2 ;change to six bits + stosb ;save the shifted data + loop wfpLoop ;do 'em all + ;-------------------------------------------------------------- + ; Signal CLUT that color data will be written + ;-------------------------------------------------------------- + mov dx,wfp_port ;get port base address + + xor al,al ;start with color zero + add dx,2 ;move to "write address" register + out dx,al ;set the address + ;-------------------------------------------------------------- + ; Write the color data + ;-------------------------------------------------------------- + inc dx ;move to "data" register + + mov esi,offset tempColor ;point to shifted data + mov ecx,256*3 ;transfer entire palette + rep outsb +END_C_PROC + +;------------------------------------------------------------------------- +; SVGAReadFullPalette(palette_ptr, port) +; Read entire 256-color palette from hardware +; ASSUMES that the palette pointer is correct. +; ASSUMES that the port is correct. +;------------------------------------------------------------------------- +; Enter: +; Palette8 *rp_dest = pointer to FIRST COLOR TRIPLET +; Word port = base port address +;------------------------------------------------------------------------- +; Returns: +; (void) +;------------------------------------------------------------------------- +BEGIN_C_PROC SVGAReadFullPalette + ARG_DPTR rfp_dest + ARG_WORD rfp_port + + BUILD_STACK_FRAME + ;-------------------------------------------------------------- + ; Signal CLUT that color data will be read + ;-------------------------------------------------------------- + mov dx,rfp_port ;get port base address + + xor al,al ;start with color zero + add dx,1 ;move to "read address" register + out dx,al ;set the address + ;-------------------------------------------------------------- + ; Read the color data + ;-------------------------------------------------------------- + add dx,2 ;move to "data" register + mov edi,rfp_dest ;point to destination + mov ecx,256*3 ;transfer entire palette +rfpLoop: + in al,dx ;get the color + shl al,2 ;convert to 8-bit data + stosb ;save it + loop rfpLoop +END_C_PROC + +;------------------------------------------------------------------------- +; SVGAWritePaletteMask(port, mask) +; Set hardware palette mask +; ASSUMES that the port is correct. +;------------------------------------------------------------------------- +; Enter: +; Word port = base port address +; Byte mask = new mask value +;------------------------------------------------------------------------- +; Returns: +; (void) +;------------------------------------------------------------------------- +BEGIN_C_PROC SVGAWritePaletteMask + ARG_WORD wpm_port + ARG_BYTE wpm_mask + + BUILD_STACK_FRAME + ;-------------------------------------------------------------- + ; Write the mask + ;-------------------------------------------------------------- + mov dx,wpm_port ;get port base address + mov al,wpm_mask + out dx,al +END_C_PROC + +END_CODE + END + diff --git a/CODE/RP/MUNGA_L4/L4TIME.CPP b/CODE/RP/MUNGA_L4/L4TIME.CPP new file mode 100644 index 0000000..14acb51 --- /dev/null +++ b/CODE/RP/MUNGA_L4/L4TIME.CPP @@ -0,0 +1,153 @@ +#include +#pragma hdrstop + +#if !defined(L4TIME_HPP) +# include +#endif + +#include +#include + +//############################################################################# +//########################### System Clock ############################## +//############################################################################# + +SystemClock + SystemClock::timer; +Scalar + SystemClock::ticksPerSecond; + +volatile long fast_time=0L; +WORD timer_handler_handle=0xFFFF; + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + Timer_Handler() +{ + ++fast_time; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +long + SystemClock::GetRTC() +{ + if (timer_handler_handle == 0xFFFF) + { + // + //---------------------------------------------------------------------- + // Read the BIOS time. If it is less than the value it was last time we + // read it, then we have crossed midnight. All the clock values start + // over again, so we will subtract 24 hours worth of ticks from when we + // started the application, allowing the application to simply see the + // clock continue to get bigger, regardless of the boundary condition + //---------------------------------------------------------------------- + // + static long last_time=0L; + long new_time = biostime(0, 0L); + if (new_time < last_time) + { + fast_time -= 1573040L; + } + last_time = new_time; + return new_time - fast_time; + } + else + { + return fast_time; + } +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +SystemClock::SystemClock() +{ + // + //------------------------------- + // Initialize the timer variables + //------------------------------- + // + pauseStart = 0L; + pauseTime = 0L; + + // + //------------------------------ + // Initialize the platform timer + //------------------------------ + // + fast_time = 0L; + char *time_options = getenv(TIMER_ENV); + if (time_options && !strcmp(time_options,USE_SOS_TIMER)) + { + #if DEBUG_LEVEL>0 + WORD err = sosTIMERInitSystem(_TIMER_DOS_RATE, _SOS_DEBUG_NORMAL); + Verify(err == _ERR_NO_ERROR); + err = + sosTIMERRegisterEvent(28, Timer_Handler, &timer_handler_handle); + Verify(err == _ERR_NO_ERROR); + #else + sosTIMERInitSystem(_TIMER_DOS_RATE, _SOS_DEBUG_NORMAL); + sosTIMERRegisterEvent(28, Timer_Handler, &timer_handler_handle); + #endif + ticksPerSecond = 28.0f; + } + else + { + ticksPerSecond = 1193180.0f / 65536.0f; + fast_time = biostime(0, 0L); + } +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + SystemClock::Shutdown() +{ + if (timer_handler_handle != 0xFFFF) + { + #if DEBUG_LEVEL>0 + WORD err = sosTIMERRemoveEvent(timer_handler_handle); + Verify(err == _ERR_NO_ERROR); + err = sosTIMERUnInitSystem(0); + Verify(err == _ERR_NO_ERROR); + #else + sosTIMERRemoveEvent(timer_handler_handle); + sosTIMERUnInitSystem(0); + #endif + } +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +#define TIMER_CONTROL 0x43 +#define GET_TIMER0 0xC2 +#define TIMER0_PORT 0x40 +#define OUTPUT_BIT 0x80 + +#undef inportb +#undef outportb + +float + Get_Frame_Percent_Used() +{ + outportb(TIMER_CONTROL, GET_TIMER0); + int half = inportb(TIMER0_PORT) & OUTPUT_BIT; + int subtick = ((int)inportb(TIMER0_PORT)) >> 1; + subtick += (((int)inportb(TIMER0_PORT)) << 7); + + if (timer_handler_handle == 0xFFFF) + { + subtick += half << 8; + return (65535 - subtick) / 65536.0f; + } + else + { + if (half) + { + subtick += _wTIMERValue >> 1; + } + return (_wTIMERValue - 1 - subtick) / (float)_wTIMERValue; + } +} + diff --git a/CODE/RP/MUNGA_L4/L4TIME.HPP b/CODE/RP/MUNGA_L4/L4TIME.HPP new file mode 100644 index 0000000..f94c572 --- /dev/null +++ b/CODE/RP/MUNGA_L4/L4TIME.HPP @@ -0,0 +1,12 @@ + +#if !defined(L4TIME_HPP) +# define L4TIME_HPP + +# if !defined(TIME_HPP) +# include +# endif + +# define TIMER_ENV "L4TIMER" +# define USE_SOS_TIMER "FAST" + +#endif diff --git a/CODE/RP/MUNGA_L4/L4TOOL.HPP b/CODE/RP/MUNGA_L4/L4TOOL.HPP new file mode 100644 index 0000000..ad7113c --- /dev/null +++ b/CODE/RP/MUNGA_L4/L4TOOL.HPP @@ -0,0 +1,89 @@ +//===========================================================================// +// 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(L4TOOL_HPP) +# define L4TOOL_HPP + +# if !defined(TOOL_HPP) +# include +# endif + +# if !defined(AUDTOOLS_HPP) +# include +# endif + + class L4Tool: + public PlatformTool + { + public: + ResourceDescription::ResourceID + CreateModelVideoStreamResource( + ResourceFile *resource_file, + const char *model_name, + NotationFile *model_file, + const ResourceDirectories *directories + ); + + ResourceDescription::ResourceID + CreateModelAudioStreamResource( + ResourceFile *resource_file, + const char *model_name, + NotationFile *model_file, + const ResourceDirectories *directories + ); + + ResourceDescription::ResourceID + CreateModelGaugeStreamResource( + ResourceFile *resource_file, + const char *model_name, + NotationFile *model_file, + const ResourceDirectories *directories + ); + + ResourceDescription::ResourceID + CreateModelGaugeImageStreamResource( + ResourceFile *resource_file, + const char *model_name, + NotationFile *model_file, + const ResourceDirectories *directories + ); + + ResourceDescription::ResourceID + CreateModelGaugeMissionReviewStreamResource( + ResourceFile *resource_file, + const char *model_name, + NotationFile *model_file, + const ResourceDirectories *directories + ); + + ResourceDescription::ResourceID + CreateStaticAudioStreamResource( + ResourceFile *resource_file + ); + + FindNameFunction + GetControlMappingFunction(); + }; + + //########################################################################## + //##################### AudioCreateSymbols ########################### + //########################################################################## + + class L4AudioCreateSymbols: + public AudioCreateSymbols + { + protected: + void + WriteEntryStream(ofstream &symbol_file); + }; + +#endif + diff --git a/CODE/RP/MUNGA_L4/L4TRACE.CPP b/CODE/RP/MUNGA_L4/L4TRACE.CPP new file mode 100644 index 0000000..312afc3 --- /dev/null +++ b/CODE/RP/MUNGA_L4/L4TRACE.CPP @@ -0,0 +1,133 @@ +#include +#pragma hdrstop + +#if !defined(STYLE_HPP) +# include +#endif + +void* + Get_Caller(int level) +{ + char *address = (char*)_EBP; + while (level--) + { + Check_Pointer(address); + address = *(char**)address; + } + Check_Pointer(address); + return *(char**)(address+4); +} + +#if defined(USE_ACTIVE_PROFILE) +# undef inportb +# undef outportb + +// +// table of data representing bits on the parallel port at 0x378 (usually LPT1) +// DO NOT ALTER THIS DATA - IT REQUIRES LOTS OF SCHEMATIC TRACING TO DUPLICATE +// + struct ParallelBit + { + unsigned int port; + Byte mask; + int sense; + }; + + ParallelBit + Bit_Table[12] = + { + {0x378, 0x80, 0x00}, + {0x378, 0x40, 0x00}, + {0x378, 0x20, 0x00}, + {0x378, 0x10, 0x00}, + {0x37a, 0x08, 0x01}, + {0x37a, 0x04, 0x00}, + {0x37a, 0x02, 0x01}, + {0x37a, 0x01, 0x01}, + {0x378, 0x08, 0x00}, + {0x378, 0x04, 0x00}, + {0x378, 0x02, 0x00}, + {0x378, 0x01, 0x00} + }; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + void + BitTrace::SetLineImplementation(Byte line) + { + Verify(line < ELEMENTS(Bit_Table)); + + // + //------------------------------------------------------------------ + // read the current value of the appropriate port + //------------------------------------------------------------------ + // + Byte port_value = inportb(Bit_Table[line].port); + + // + //------------------------------------------------------------------ + // set the appropriate bit, taking into account the hardware sense + //------------------------------------------------------------------ + // + if (!Bit_Table[line].sense) + { + port_value |= Bit_Table[line].mask; + } + else + { + port_value &= (Byte)(~Bit_Table[line].mask); + } + + // + //------------------------------------------------------------------ + // put the modified value into the appropriate port + //------------------------------------------------------------------ + // + outportb(Bit_Table[line].port, port_value); + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + void + BitTrace::ClearLineImplementation(Byte line) + { + Verify(line < ELEMENTS(Bit_Table)); + + // + //------------------------------------------------------------------ + // read the current value of the appropriate port + //------------------------------------------------------------------ + // + Byte port_value = inportb(Bit_Table[line].port); + + // + //------------------------------------------------------------------ + // clear the appropriate bit, taking into account the hardware sense + //------------------------------------------------------------------ + // + if (!Bit_Table[line].sense) + { + port_value &= (Byte)(~Bit_Table[line].mask); + } + else + { + port_value |= Bit_Table[line].mask; + } + + // + //------------------------------------------------------------------ + // put the modified value into the appropriate port + //------------------------------------------------------------------ + // + outportb(Bit_Table[line].port, port_value); + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + Logical + BitTrace::IsLineValidImplementation(Byte line) + { + return line +#pragma hdrstop + +#if !defined(STYLE_HPP) +# include +#endif + +char GlobalEggFileName[80]; + +int + main() +{ + #if defined(TEST_CLASS) + Start_Registering(); + + // + //------------------ + // Test time manager + //------------------ + // + #if 0 + Time::TestClass(); + #endif + + // + //------------------------------------------------- + // Test gauges and gauge manager + //------------------------------------------------- + // + #if 0 + { + L4Gauge::TestClass(); + + cout << "Gauge test...\n" << flush; + VGA320x200x8 *display; + display = new VGA320x200x8; + Check(display); + Register_Object(display); + + GraphicsPort *port; + port = new GraphicsPort(display); + Check(port); + Register_Object(port); + + Scalar + value(-1.0f); + + Scalar + direction(0.002f); + + BarGraphVerticalScalar *bar; + bar = new + BarGraphVerticalScalar( + NULL, + 0, + port, + 20,20,30,180, + 1, 2, + (Scalar) -1, + (Scalar) 1, + &value + ); + Check(bar); + Register_Object(bar); + + while (!kbhit()) + { + value += direction; + if (value >= 1.0f) + { + value = 1.0f; + direction = - direction; + } + else if (value <= -1.0f) + { + value = -1.0f; + direction = - direction; + } + bar->UpdateParameters(); + bar->Execute(); + display->Update(0); + } + getch(); + + Check(bar); + Unregister_Object(bar); + delete bar; + + Check(port); + Unregister_Object(port); + delete port; + + Check(display); + Unregister_Object(display); + delete display; + } + #endif + + // + //------------------------------------------------- + // Test Audio Hardware + //------------------------------------------------- + // + #if 0 + { + char *blaster1, *blaster2; + + blaster1 = getenv(FRONT_CARD_ENV_VAR); + blaster2 = getenv(REAR_CARD_ENV_VAR); + + //cout << "Audio test...\n" << flush; + + Check_Pointer(blaster1); + Check_Pointer(blaster2); + + AudioHardware::TestClass(); + // AudioHardware::ProfileClass(); + } + #endif + + // + //-------------------------------------------- + // Stop registering, and tell us about its use + //-------------------------------------------- + // + Stop_Registering(); + Tell("Exiting\n"); + #endif + + return 0; +} diff --git a/CODE/RP/MUNGA_L4/L4VB16.CPP b/CODE/RP/MUNGA_L4/L4VB16.CPP new file mode 100644 index 0000000..93d90ab --- /dev/null +++ b/CODE/RP/MUNGA_L4/L4VB16.CPP @@ -0,0 +1,5500 @@ +//===========================================================================// +// File: L4vb16.cpp // +// Project: MUNGA Brick: Applications-specific controls module // +// Contents: Interface specification for buffered 16-bit display // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- -----------------------------------------------------------// +// 02/08/95 CPB Initial coding. // +// 11/01/95 CPB Removed 128 color limitation on auxiliary displays // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. All rights reserved // +// PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(L4VB16_HPP) +# include +#endif + +#if defined(TRACE_SCREEN_COPY) + static BitTrace Screen_Copy("Screen Copy"); + #define SET_SCREEN_COPY() Screen_Copy.Set() + #define CLEAR_SCREEN_COPY() Screen_Copy.Clear() +#else + #define SET_SCREEN_COPY() + #define CLEAR_SCREEN_COPY() +#endif + +#define BLIT_STATISTICS + +#if defined(BLIT_STATISTICS) + static int + dirtyPixelCount, + transferPixelCount, + overflowPixelCount; +#endif + +//#define DEBUG + +#if defined(DEBUG) + static Logical + printFlag=True; +# define Diag_on printFlag=True +# define Diag_off printFlag=False +# define Diag_Tell(stuff) if(printFlag){cout << stuff;} +#else +# define Diag_on +# define Diag_off +# define Diag_Tell(n) +#endif + +extern "C" void + SVGASetMode( + int mode, + LWord pageFlipFcnpointer + ); + +extern "C" void + SVGASetPage( + int page + ); + +extern "C" int + SVGATransfer32( + int dest_offset, + Word *source_pointer, + LWord changed_bits + ); + +extern "C" int + SVGATransfer32x( + int dest_offset, + Word *source_pointer, + LWord changed_bits + ); + +extern "C" void + SVGASetSplitterClock( + Logical state + ); + +extern "C" void + SVGAZeroPalette( + Word DAC_port + ); + +extern "C" void + SVGAWriteFullPalette( + Byte *firstColorByte, + Word DAC_port + ); + +extern "C" void + SVGAReadFullPalette( + Byte *firstColorByte, + Word DAC_port + ); + +extern "C" void + SVGAWritePaletteMask( + Word DAC_port, + Byte new_mask + ); + +extern "C" void + SVGAFunkyVideo( + Logical on_off + ); + + + +//######################################################################## +//############################# BitWrangler ############################## +//######################################################################## +// +// A "bitwrangler" manages a group of bits by segregating them into two groups: +// "active", and "inactive". Active bits are those specified within a given +// bit mask as "ones", and inactive bits are those specified as "zeros". +// +// Once initialized, the bitwrangler may be requested to increment either +// the active bit field or the inactive bit field: the "carry" is propagated +// from the least significant bit through the most significant bit, and if +// an overflow is generated it is returned as "False". +// +// Why in the world would anyone want such a bizarre object? +// It's used here to generate palettes and translation tables according +// to bit allocations for a GraphicsPort. "Unused" colors are easily +// found and set to proper values. +// +class BitWrangler +{ +public: + BitWrangler(int bit_mask, int total_length); + ~BitWrangler() + {} + void ResetActive(); + void ResetInactive(); + Logical IncrementActive(); + Logical IncrementInactive(); + int NumberOfActiveBits(); + int NumberOfInactiveBits(); + + int Value; +protected: + int length; + int bitMask; +}; + +// +// Bitwrangler initialization +// +BitWrangler::BitWrangler(int bit_mask, int total_length) +{ + Verify(bit_mask != 0); + + bitMask = bit_mask; + length = total_length; + Value = 0; + Check_Fpu(); +} + +// +// Reset all "active" bits to zero +// +void + BitWrangler::ResetActive() +{ + Value &= ~ bitMask; + Check_Fpu(); +} + +// +// Reset all "inactive" bits to zero +// +void + BitWrangler::ResetInactive() +{ + Value &= bitMask; + Check_Fpu(); +} + +// +// Increment the "active" bit field, and return "false" if overflow +// +Logical + BitWrangler::IncrementActive() +{ + int single_bit; + int count(length); + + for(single_bit=1; count>0; --count, single_bit <<= 1) + { + // + // If it's an active bit, process it + // + if (bitMask & single_bit) + { + // + // Invert the bit + // + Value ^= single_bit; + // + // If the bit is now set, it was zero, so exit + // + if (Value & single_bit) + { + Check_Fpu(); + return True; + } + } + } + // + // All the active bits are set, so return false + // + Check_Fpu(); + return False; +} + +// +// Increment the "inactive" bit field, and return "false" if overflow +// +Logical + BitWrangler::IncrementInactive() +{ + int single_bit; + int count(length); + int inverse_mask(~bitMask); + + for(single_bit=1; count>0; --count, single_bit <<= 1) + { + // + // If it's an inactive bit, process it + // + if (inverse_mask & single_bit) + { + // + // Invert the bit + // + Value ^= single_bit; + // + // If the bit is now set, it was zero, so exit + // + if (Value & single_bit) + { + Check_Fpu(); + return True; + } + } + } + // + // All the inactive bits are set, so return false + // + Check_Fpu(); + return False; +} + +// +// Return the number of "active" bits +// +int + BitWrangler::NumberOfActiveBits() +{ + int count(0), temp(bitMask); + + while(temp != 0) + { + ++count; + + temp = temp & (temp-1); + } + + Check_Fpu(); + return count; +} + +// +// Return the number of "inactive" bits +// +int + BitWrangler::NumberOfInactiveBits() +{ + Check_Fpu(); + return length-NumberOfActiveBits(); +} + +//######################################################################## +//######################### Video16BitBuffered ########################### +//######################################################################## +// +//NOTE: the application assumes that the origin is in the lower left +// corner of the display, and all parameters passed to these routines +// use the application's coordinate system. +// +// All of the methods here convert these values to the SCREEN +// coordinate system, with the origin in the UPPER LEFT corner of +// the display. +// + +//=================================================================== +// Creator +//=================================================================== +Video16BitBuffered::Video16BitBuffered(int x, int y): + GraphicsDisplay(x, y), + pixelBuffer(x, y) +{ +# if defined(DEBUG) + Tell( + "Video16BitBuffered::Video16BitBuffered()\n" + ); +# endif + int + i, + changed_size; + + Verify(pixelBuffer.Data.MapPointer != NULL); + + height = y; + width = x; + changedBitWidth = (width >> 5); + changed_size = height * changedBitWidth; + + maximumY = height-1; + maximumX = width-1; + //--------------------------------------------------------- + // Create 'changedLine' and 'changedBit' arrays + //--------------------------------------------------------- + changedLine = new Byte[height]; + changedBit = new LWord[changed_size]; + + if (changedLine == NULL || changedBit == NULL) + { +# if defined(DEBUG) + Tell("INVALID!\n"); +# endif + valid = False; + return; + } + else + { + Register_Pointer(changedLine); + Register_Pointer(changedBit); + valid = True; + } + +# if defined(DEBUG) + Tell("changedLine=" << changedLine << "\n"); + Tell("changedBit=" << changedBit << "\n"); +# endif + + //--------------------------------------------------------- + // Clear the 'changedBit' array + //--------------------------------------------------------- + memset(changedLine, 0, height); + //--------------------------------------------------------- + // Clear the 'changedBit' array + //--------------------------------------------------------- + LWord + *bit_dest; + + for (i=changed_size,bit_dest=changedBit; i>0; --i,++bit_dest) + { + *bit_dest = (LWord) 0; + } + Check_Fpu(); +} + +//=================================================================== +// Destructor +//=================================================================== +Video16BitBuffered::~Video16BitBuffered() +{ + Check(this); + + if (changedLine != NULL) + { + Unregister_Pointer(changedLine); + delete changedLine; + changedLine = NULL; + } + + if (changedBit != NULL) + { + Unregister_Pointer(changedBit); + delete changedBit; + changedBit = NULL; + } + Check_Fpu(); +} + + +//=================================================================== +// TestInstance +//=================================================================== +Logical + Video16BitBuffered::TestInstance() const +{ + return True; +} + +//=================================================================== +// ShowInstance +//=================================================================== +void + Video16BitBuffered::ShowInstance( + char *indent + ) +{ + cout << indent << "Video16BitBuffered:\n"; + + Check(this); + + char + temp[80]; + + Str_Copy(temp,indent, 80); + Str_Cat(temp,"...", 80); + + cout << temp << "width =" << width << "\n"; + cout << temp << "height =" << height << "\n"; + cout << temp << "maximumX =" << maximumX << "\n"; + cout << temp << "maximumY =" << maximumY << "\n"; + cout << temp << "changedLine=" << changedLine << "\n"; + cout << temp << "changedBit =" << changedBit << "\n"; + + pixelBuffer.ShowInstance(temp); + GraphicsDisplay::ShowInstance(temp); + Check_Fpu(); +} + + +//=================================================================== +// buildDestPointer +//=================================================================== +void + Video16BitBuffered::buildDestPointer( + int screenX, + int screenY, + Word **pixel_pointer, + LWord **changed_bit_pointer, + LWord *changed_bit + ) +{ + Verify(valid); + + Verify(pixel_pointer != NULL); + Verify(changed_bit_pointer != NULL); + Verify(changed_bit != NULL); + + Verify(screenX >= 0); + Verify(screenX < width); + Verify(screenY >= 0); + Verify(screenY < height); + + *pixel_pointer = pixelBuffer.Data.MapPointer + + screenX + + (screenY * width); + Verify(*pixel_pointer >= pixelBuffer.Data.MapPointer); + Verify(*pixel_pointer < &pixelBuffer.Data.MapPointer[height*width]); + + *changed_bit_pointer = changedBit + + (screenX >> 5) + + (screenY * changedBitWidth); + Verify(*changed_bit_pointer >= changedBit); + Verify(*changed_bit_pointer < &changedBit[height*changedBitWidth]); + + *changed_bit = 1L << (0x1F - (screenX & 0x1F)); + Verify(*changed_bit != 0L); + + Diag_Tell( + "Video16BitBuffered::buildDestPointer(" << screenX << + ", " << screenY << hex << + ") = pix " << *pixel_pointer << + ", cbp " << *changed_bit_pointer << + ", cb " << *changed_bit << dec << + "\n" + ); + Diag_Tell("changedBitWidth=" << changedBitWidth << "\n"); + + Check_Fpu(); +} + +//=================================================================== +// MarkChangedLines +//=================================================================== +#if defined(BLIT_STATISTICS) +# define SET_CHANGED(pointer, bits) *pointer |= bits; ++dirtyPixelCount +#else +# define SET_CHANGED(pointer, bits) *pointer |= bits +#endif + +#define LEFT_CHANGED(pointer, bits) \ + bits <<= 1; \ + if (bits == 0) { --pointer; bits=0x00000001L; } + +#define RIGHT_CHANGED(pointer, bits) \ + bits >>= 1; \ + if (bits == 0) { ++pointer; bits=0x80000000L; } + +#define UP_CHANGED(pointer, bits) pointer -= changedBitWidth +#define DOWN_CHANGED(pointer, bits) pointer += changedBitWidth + + +#define LEFT_DEST(pointer) --pointer +#define RIGHT_DEST(pointer) ++pointer +#define UP_DEST(pointer) pointer -= width +#define DOWN_DEST(pointer) pointer += width + +#define LEFT_SOURCE(pointer,map) --pointer +#define RIGHT_SOURCE(pointer,map) ++pointer +#define UP_SOURCE(pointer,map) pointer -= map->Data.Size.x +#define DOWN_SOURCE(pointer,map) pointer += map->Data.Size.x + + + +#define LEFT_BITMAP(pointer,bits) \ + bits <<= 1; \ + if (bits == 0) { --pointer; bits=0x0001; } + +#define RIGHT_BITMAP(pointer, bits) \ + bits >>= 1; \ + if (bits == 0) { ++pointer; bits=0x8000; } + +#define UP_BITMAP(pointer,map) pointer -= map->Data.WidthInWords +#define DOWN_BITMAP(pointer,map) pointer += map->Data.WidthInWords + + +// +// Inputs are in DISPLAY COORDINATES, i.e., (0,0) in top left corner! +// +void + Video16BitBuffered::MarkChangedLines( + int start, + int stop + ) +{ + Check(this); + Diag_Tell( + "Video16BitBuffered::MarkChangedLines(" << start << + ", " << stop << + ")\n" + ); + + if (start > stop) + { +# if defined(DEBUG) + Tell("MarkChangedLines FLIPPING\n"); +# endif + int temp; + + temp = start; + start = stop; + stop = temp; + } + + Verify(start >= 0); + Verify(start <= maximumY); + Verify(stop >= 0); + Verify(stop <= maximumY); + + //------------------------------------------------ + // Set the flag for each changed line + //------------------------------------------------ + Verify(stop >= start); + memset(&changedLine[start], 1, stop-start+1); + + Check_Fpu(); +} + +//=================================================================== +// DrawPoint +//=================================================================== +void + Video16BitBuffered::DrawPoint( + int color, + int bitmask, + Enumeration operation, + int x, int y + ) +{ + Check(this); + Verify(x >= bounds.bottomLeft.x); + Verify(x <= bounds.topRight.x); + Verify(y >= bounds.bottomLeft.y); + Verify(y <= bounds.topRight.y); + + Word + *dest_pointer; + LWord + *changed_pointer; + LWord + changed_bit; + //--------------------------------------------------------- + // If pixelbuffer is invalid, do nothing + //--------------------------------------------------------- + if (!valid) + { + Check_Fpu(); + return; + } + //--------------------------------------------------------- + // Convert to screen co-ordinates + //--------------------------------------------------------- + y = maximumY - y; + +# if defined(DEBUG) + Tell("x=" << x << ", y=" << y << "\n"); +# endif + + Verify(x >= 0); + Verify(x < width); + Verify(y >= 0); + Verify(y < height); + //--------------------------------------------------------- + // Update changedLine array + //--------------------------------------------------------- + MarkChangedLines(y, y); + //--------------------------------------------------------- + // We really need inverse bitmap here + //--------------------------------------------------------- + bitmask = ~bitmask; + //--------------------------------------------------------- + // Create pointers + //--------------------------------------------------------- + buildDestPointer( + x, y, + &dest_pointer, + &changed_pointer, + &changed_bit + ); + //--------------------------------------------------------- + // Write the point + //--------------------------------------------------------- + switch (operation) + { + case GraphicsDisplay::Replace: + *dest_pointer = (Word)((*dest_pointer & bitmask) | color); + break; + + case GraphicsDisplay::And: + *dest_pointer &= (Word) color; + break; + + case GraphicsDisplay::Or: + *dest_pointer |= (Word) color; + break; + + case GraphicsDisplay::Xor: + *dest_pointer ^= (Word) color; + break; + } + SET_CHANGED(changed_pointer, changed_bit); + Check_Fpu(); +} + +//=================================================================== +// DrawLine +//=================================================================== +void + Video16BitBuffered::DrawLine( + int color, + int bitmask, + Enumeration operation, + int x1, int y1, + int x2, int y2, + Logical include_last_pixel + ) +{ +# if defined(DEBUG) + Tell( + "Video16BitBuffered::DrawLine(" << color << + ", " << bitmask << + ", " << operation << + ", " << x1 << "," << y1 << "," << x2 << "," << y2 << + ", " << include_last_pixel << + "\n" + ); +# endif + + Check(this); + + Verify(x1 >= bounds.bottomLeft.x); + Verify(x1 <= bounds.topRight.x); + Verify(y1 >= bounds.bottomLeft.y); + Verify(y1 <= bounds.topRight.y); + + Verify(x2 >= bounds.bottomLeft.x); + Verify(x2 <= bounds.topRight.x); + Verify(y2 >= bounds.bottomLeft.y); + Verify(y2 <= bounds.topRight.y); + + enum + { + negative_delta_x = 1, + negative_delta_y = 2, + delta_y_greater = 0, + delta_x_greater = 4 + }; + + long + length, + rate, + accumulator; + + int + octant, + delta_x, + delta_y; + + Word + *dest_pointer; + LWord + *changed_pointer; + LWord + changed_bit; + + //--------------------------------------------------------- + // If pixelbuffer is invalid, do nothing + //--------------------------------------------------------- + if (!valid) + { + Check_Fpu(); + return; + } + //--------------------------------------------------------- + // Route to DrawPoint if single pixel + //--------------------------------------------------------- + if (x1 == x2 && y1 == y2) + { + if (include_last_pixel) + { + DrawPoint(color, bitmask, operation, x1, y1); + } + return; + } + //--------------------------------------------------------- + // Convert to screen co-ordinates + //--------------------------------------------------------- + y1 = maximumY - y1; + y2 = maximumY - y2; + //--------------------------------------------------------- + // Ensure that endpoints are legitimate + //--------------------------------------------------------- + Verify(x1 >= 0); + Verify(x1 < width); + Verify(x2 >= 0); + Verify(x2 < width); + + Verify(y1 >= 0); + Verify(y1 < height); + Verify(y2 >= 0); + Verify(y2 < height); + +# if defined(DEBUG) + Tell( + "Transformed coordinates=" << x1 << "," << y1 << + "," << x2 << "," << y2 << + "\n" + ); +# endif + //--------------------------------------------------------- + // Update changedLine array + //--------------------------------------------------------- + MarkChangedLines(y1, y2); + //--------------------------------------------------------- + // We really need inverse bitmap here + //--------------------------------------------------------- + bitmask = ~bitmask; + //--------------------------------------------------------- + // Determine which octant to use + //--------------------------------------------------------- + octant = 0; + + delta_x = x2 - x1; + if (delta_x < 0) + { +# if defined(DEBUG) + Tell("negative dx\n"); +# endif + octant |= negative_delta_x; + delta_x = - delta_x; + } + + delta_y = y2 - y1; + if (delta_y < 0) + { +# if defined(DEBUG) + Tell("negative dy\n"); +# endif + octant |= negative_delta_y; + delta_y = - delta_y; + } + + if (delta_x > delta_y) + { +# if defined(DEBUG) + Tell("dx > dy\n"); +# endif + octant |= delta_x_greater; + } +# if defined(DEBUG) + Tell( + "dx=" << delta_x << + ", dy=" << delta_y << + ", octant=" << octant << + ", color=" << color << + "\n" + ); +# endif + //--------------------------------------------------------- + // Prepare to draw line + //--------------------------------------------------------- + buildDestPointer( + x1, y1, + &dest_pointer, + &changed_pointer, + &changed_bit + ); + + accumulator = 1024L; // preset accumulator to 1/2 full + //--------------------------------------------------------- + // Draw the line! + //--------------------------------------------------------- + switch (octant) + { + case delta_y_greater: + //------------------------------------- + // delta y greater + // positive delta x + // positive delta y + // + // + + // \ & + // \ & + //------------------------------------- + length = delta_y; + if (!include_last_pixel) + { + -- length; + } + + Verify(delta_y > 0); + rate = (delta_x*2048L)/delta_y; + +# if defined(DEBUG) + Tell( + "delta_y_greater, length=" << length << + ", rate=" << rate << + "\n" + ); +# endif + Verify(rate >= 0L); + Verify(rate <= 2048L); + for ( ; length>0; --length) + { + switch (operation) + { + case GraphicsDisplay::Replace: + *dest_pointer = (Word) ((*dest_pointer & bitmask) | color); + break; + + case GraphicsDisplay::And: + *dest_pointer &= (Word) color; + break; + + case GraphicsDisplay::Or: + *dest_pointer |= (Word) color; + break; + + case GraphicsDisplay::Xor: + *dest_pointer ^= (Word) color; + break; + } +# if defined(DEBUG) + Tell( + length << + ", accum=" << accumulator << + ", dest_pointer=" << dest_pointer << + "\n" + ); +# endif + SET_CHANGED(changed_pointer, changed_bit); + + DOWN_DEST(dest_pointer); + DOWN_CHANGED(changed_pointer, changed_bit); + + accumulator += rate; + if (accumulator > 2048L) + { +# if defined(DEBUG) + Tell("OVERFLOW\n"); +# endif + accumulator -= 2048L; + RIGHT_DEST(dest_pointer); + RIGHT_CHANGED(changed_pointer, changed_bit); + } + } + break; + + case delta_y_greater+negative_delta_x: + //------------------------------------- + // delta y greater + // negative delta x + // positive delta y + // + // + + // / + // / + //------------------------------------- + length = delta_y; + if (!include_last_pixel) + { + -- length; + } + rate = (delta_x*2048L)/delta_y; + +# if defined(DEBUG) + Tell( + "delta_y_greater+negative_delta_x, length=" << length << + ", rate=" << rate << + "\n" + ); +# endif + Verify(rate >= 0L); + Verify(rate <= 2048L); + Verify(length >= 0); + for ( ; length>0; --length) + { + switch (operation) + { + case GraphicsDisplay::Replace: + *dest_pointer = (Word) ((*dest_pointer & bitmask) | color); + break; + + case GraphicsDisplay::And: + *dest_pointer &= (Word) color; + break; + + case GraphicsDisplay::Or: + *dest_pointer |= (Word) color; + break; + + case GraphicsDisplay::Xor: + *dest_pointer ^= (Word) color; + break; + } +# if defined(DEBUG) + Tell( + length << + ", accum=" << accumulator << + ", dest_pointer=" << dest_pointer << + "\n" + ); +# endif + SET_CHANGED(changed_pointer, changed_bit); + + DOWN_DEST(dest_pointer); + DOWN_CHANGED(changed_pointer, changed_bit); + + accumulator += rate; + if (accumulator > 2048L) + { +# if defined(DEBUG) + Tell("OVERFLOW\n"); +# endif + accumulator -= 2048L; + LEFT_DEST(dest_pointer); + LEFT_CHANGED(changed_pointer, changed_bit); + } + } + break; + + case delta_y_greater+negative_delta_y: + //------------------------------------- + // delta y greater + // positive delta x + // negative delta y + // + // / + // / + // + + //------------------------------------- + length = delta_y; + if (!include_last_pixel) + { + -- length; + } + rate = (delta_x*2048L)/delta_y; + +# if defined(DEBUG) + Tell( + "delta_y_greater+negative_delta_y, length=" << length << + ", rate=" << rate << + "\n" + ); +# endif + Verify(rate >= 0L); + Verify(rate <= 2048L); + Verify(length >= 0); + for ( ; length>0; --length) + { + switch (operation) + { + case GraphicsDisplay::Replace: + *dest_pointer = (Word) ((*dest_pointer & bitmask) | color); + break; + + case GraphicsDisplay::And: + *dest_pointer &= (Word) color; + break; + + case GraphicsDisplay::Or: + *dest_pointer |= (Word) color; + break; + + case GraphicsDisplay::Xor: + *dest_pointer ^= (Word) color; + break; + } +# if defined(DEBUG) + Tell( + length << + ", accum=" << accumulator << + ", dest_pointer=" << dest_pointer << + "\n" + ); +# endif + SET_CHANGED(changed_pointer, changed_bit); + + UP_DEST(dest_pointer); + UP_CHANGED(changed_pointer, changed_bit); + + accumulator += rate; + if (accumulator > 2048L) + { +# if defined(DEBUG) + Tell("OVERFLOW\n"); +# endif + accumulator -= 2048L; + RIGHT_DEST(dest_pointer); + RIGHT_CHANGED(changed_pointer, changed_bit); + } + } + break; + + case delta_y_greater+negative_delta_x+negative_delta_y: + //------------------------------------- + // delta y greater + // negative delta x + // negative delta y + // + // \ & + // \ & + // + + //------------------------------------- + length = delta_y; + if (!include_last_pixel) + { + -- length; + } + rate = (delta_x*2048L)/delta_y; + +# if defined(DEBUG) + Tell( + "delta_y_greater+negative_delta_x+negative_delta_y, length=" << + length << + ", rate=" << rate << + "\n" + ); +# endif + Verify(rate >= 0L); + Verify(rate <= 2048L); + Verify(length >= 0); + for ( ; length>0; --length) + { + switch (operation) + { + case GraphicsDisplay::Replace: + *dest_pointer = (Word) ((*dest_pointer & bitmask) | color); + break; + + case GraphicsDisplay::And: + *dest_pointer &= (Word) color; + break; + + case GraphicsDisplay::Or: + *dest_pointer |= (Word) color; + break; + + case GraphicsDisplay::Xor: + *dest_pointer ^= (Word) color; + break; + } +# if defined(DEBUG) + Tell( + length << + ", accum=" << accumulator << + ", dest_pointer=" << dest_pointer << + "\n" + ); +# endif + SET_CHANGED(changed_pointer, changed_bit); + + UP_DEST(dest_pointer); + UP_CHANGED(changed_pointer, changed_bit); + + accumulator += rate; + if (accumulator > 2048L) + { +# if defined(DEBUG) + Tell("OVERFLOW\n"); +# endif + accumulator -= 2048L; + LEFT_DEST(dest_pointer); + LEFT_CHANGED(changed_pointer, changed_bit); + } + } + break; + + case delta_x_greater: + //------------------------------------- + // delta x greater + // positive delta x + // positive delta y + // + // +---___ + // + // + //------------------------------------- + length = delta_x; + if (!include_last_pixel) + { + -- length; + } + rate = (delta_y*2048L)/delta_x; + +# if defined(DEBUG) + Tell( + "delta_x_greater, length=" << length << + ", rate=" << rate << + "\n" + ); +# endif + Verify(rate >= 0L); + Verify(rate <= 2048L); + Verify(length >= 0); + for ( ; length>0; --length) + { + switch (operation) + { + case GraphicsDisplay::Replace: + *dest_pointer = (Word) ((*dest_pointer & bitmask) | color); + break; + + case GraphicsDisplay::And: + *dest_pointer &= (Word) color; + break; + + case GraphicsDisplay::Or: + *dest_pointer |= (Word) color; + break; + + case GraphicsDisplay::Xor: + *dest_pointer ^= (Word) color; + break; + } +# if defined(DEBUG) + Tell( + length << + ", accum=" << accumulator << + ", dest_pointer=" << dest_pointer << + "\n" + ); +# endif + SET_CHANGED(changed_pointer, changed_bit); + + RIGHT_DEST(dest_pointer); + RIGHT_CHANGED(changed_pointer, changed_bit); + + accumulator += rate; + if (accumulator > 2048L) + { +# if defined(DEBUG) + Tell("OVERFLOW\n"); +# endif + accumulator -= 2048L; + DOWN_DEST(dest_pointer); + DOWN_CHANGED(changed_pointer, changed_bit); + } + } + break; + + case delta_x_greater+negative_delta_x: + //------------------------------------- + // delta x greater + // negative delta x + // positive delta y + // + // ___---+ + // + // + //------------------------------------- + length = delta_x; + if (!include_last_pixel) + { + -- length; + } + rate = (delta_y*2048L)/delta_x; + +# if defined(DEBUG) + Tell( + "delta_x_greater+negative_delta_x, length=" << length << + ", rate=" << rate << + "\n" + ); +# endif + Verify(rate >= 0L); + Verify(rate <= 2048L); + Verify(length >= 0); + for ( ; length>0; --length) + { + switch (operation) + { + case GraphicsDisplay::Replace: + *dest_pointer = (Word) ((*dest_pointer & bitmask) | color); + break; + + case GraphicsDisplay::And: + *dest_pointer &= (Word) color; + break; + + case GraphicsDisplay::Or: + *dest_pointer |= (Word) color; + break; + + case GraphicsDisplay::Xor: + *dest_pointer ^= (Word) color; + break; + } +# if defined(DEBUG) + Tell( + length << + ", accum=" << accumulator << + ", dest_pointer=" << dest_pointer << + "\n" + ); +# endif + SET_CHANGED(changed_pointer, changed_bit); + + LEFT_DEST(dest_pointer); + LEFT_CHANGED(changed_pointer, changed_bit); + + accumulator += rate; + if (accumulator > 2048L) + { +# if defined(DEBUG) + Tell("OVERFLOW\n"); +# endif + accumulator -= 2048L; + DOWN_DEST(dest_pointer); + DOWN_CHANGED(changed_pointer, changed_bit); + } + } + break; + + case delta_x_greater+negative_delta_y: + //------------------------------------- + // delta x greater + // positive delta x + // negative delta y + // + // +___--- + // + // + //------------------------------------- + length = delta_x; + if (!include_last_pixel) + { + -- length; + } + rate = (delta_y*2048L)/delta_x; + +# if defined(DEBUG) + Tell( + "delta_x_greater+negative_delta_y, length=" << length << + ", rate=" << rate << + "\n" + ); +# endif + Verify(rate >= 0L); + Verify(rate <= 2048L); + Verify(length >= 0); + for ( ; length>0; --length) + { + switch (operation) + { + case GraphicsDisplay::Replace: + *dest_pointer = (Word) ((*dest_pointer & bitmask) | color); + break; + + case GraphicsDisplay::And: + *dest_pointer &= (Word) color; + break; + + case GraphicsDisplay::Or: + *dest_pointer |= (Word) color; + break; + + case GraphicsDisplay::Xor: + *dest_pointer ^= (Word) color; + break; + } +# if defined(DEBUG) + Tell( + length << + ", accum=" << accumulator << + ", dest_pointer=" << dest_pointer << + "\n" + ); +# endif + SET_CHANGED(changed_pointer, changed_bit); + + RIGHT_DEST(dest_pointer); + RIGHT_CHANGED(changed_pointer, changed_bit); + + accumulator += rate; + if (accumulator > 2048L) + { +# if defined(DEBUG) + Tell("OVERFLOW\n"); +# endif + accumulator -= 2048L; + UP_DEST(dest_pointer); + UP_CHANGED(changed_pointer, changed_bit); + } + } + break; + + case delta_x_greater+negative_delta_x+negative_delta_y: + //------------------------------------- + // delta x greater + // negative delta x + // negative delta y + // + // ---___+ + // + // + //------------------------------------- + length = delta_x; + if (!include_last_pixel) + { + -- length; + } + rate = (delta_y*2048L)/delta_x; + +# if defined(DEBUG) + Tell( + "delta_x_greater+negative_delta_x+negative_delta_y, length=" << + length << + ", rate=" << rate << + "\n" + ); +# endif + Verify(rate >= 0L); + Verify(rate <= 2048L); + Verify(length >= 0); + for ( ; length>0; --length) + { + switch (operation) + { + case GraphicsDisplay::Replace: + *dest_pointer = (Word) ((*dest_pointer & bitmask) | color); + break; + + case GraphicsDisplay::And: + *dest_pointer &= (Word) color; + break; + + case GraphicsDisplay::Or: + *dest_pointer |= (Word) color; + break; + + case GraphicsDisplay::Xor: + *dest_pointer ^= (Word) color; + break; + } +# if defined(DEBUG) + Tell( + length << + ", accum=" << accumulator << + ", dest_pointer=" << dest_pointer << + "\n" + ); +# endif + SET_CHANGED(changed_pointer, changed_bit); + + LEFT_DEST(dest_pointer); + LEFT_CHANGED(changed_pointer, changed_bit); + + accumulator += rate; + if (accumulator > 2048L) + { +# if defined(DEBUG) + Tell("OVERFLOW\n"); +# endif + accumulator -= 2048L; + UP_DEST(dest_pointer); + UP_CHANGED(changed_pointer, changed_bit); + } + } + break; + } + Check_Fpu(); +} + +//=================================================================== +// DrawFilledRectangle +//=================================================================== +void + Video16BitBuffered::DrawFilledRectangle( + int color, + int bitmask, + Enumeration operation, + int x1, int y1, + int x2, int y2 + ) +{ +# if defined(DEBUG) + Tell("Video16BitBuffered::DrawFilledRectangle(" << + color << ", " << + hex << bitmask << ", " << dec << + operation << ", " << + x1 << ", " << + y1 << ", " << + x2 << ", " << + y2 << ", " << + ")\n"); +# endif + Check(this); + Verify(x1 >= bounds.bottomLeft.x); + Verify(x1 <= bounds.topRight.x); + Verify(y1 >= bounds.bottomLeft.y); + Verify(y1 <= bounds.topRight.y); + + Verify(x2 >= bounds.bottomLeft.x); + Verify(x2 <= bounds.topRight.x); + Verify(y2 >= bounds.bottomLeft.y); + Verify(y2 <= bounds.topRight.y); + + Word + *dest_pointer; + LWord + *init_changed_pointer, + *changed_pointer; + LWord + init_changed_bit, + changed_bit; + int + x, + dest_fixup, + rect_width, + rect_height; + + //--------------------------------------------------------- + // If pixelbuffer is invalid, do nothing + //--------------------------------------------------------- + if (!valid) + { + Check_Fpu(); + return; + } + //--------------------------------------------------------- + // Convert to screen co-ordinates + //--------------------------------------------------------- + y1 = maximumY - y1; + y2 = maximumY - y2; + //--------------------------------------------------------- + // Ensure that rectangle is properly specified + //--------------------------------------------------------- + if (x2 < x1) + { + int temp; + + temp = x1; + x1 = x2; + x2 = temp; + } + + if (y2 < y1) + { + int temp; + + temp = y1; + y1 = y2; + y2 = temp; + } + //--------------------------------------------------------- + // Verify that values are legitimate + //--------------------------------------------------------- + Verify(pixelBuffer.Data.MapPointer != NULL); + + Verify(x1 >= 0); + Verify(x1 <= x2); + Verify(x2 < width); + + Verify(y1 >= 0); + Verify(y1 <= y2); + Verify(y2 < height); + //--------------------------------------------------------- + // Update changedLine array + //--------------------------------------------------------- + MarkChangedLines(y1, y2); + //--------------------------------------------------------- + // We really need inverse bitmap here + //--------------------------------------------------------- + bitmask = ~bitmask; + //--------------------------------------------------------- + // Prepare to fill + //--------------------------------------------------------- +# if defined(DEBUG) + Tell( + "x1=" << x1 << ", " << "y1=" << y1 << "\n" << + "x2=" << x2 << ", " << "y2=" << y2 << "\n" << + flush + ); +# endif + buildDestPointer( + x1, y1, + &dest_pointer, + &init_changed_pointer, + &init_changed_bit + ); + + rect_height = y2 - y1 + 1; + rect_width = x2 - x1 + 1; + dest_fixup = width - rect_width; + +# if defined(DEBUG) + Tell( + "rect_height=" << rect_height << "\n" << + "rect_width=" << rect_width << "\n" << + "dest_fixup=" << dest_fixup << "\n" << + flush + ); +# endif + //--------------------------------------------------------- + // Fill the rectangle + //--------------------------------------------------------- + switch(operation) + { + case GraphicsDisplay::Replace: + for( ; rect_height>0; --rect_height) + { + changed_bit = init_changed_bit; + changed_pointer = init_changed_pointer; + DOWN_CHANGED(init_changed_pointer, init_changed_bit); + for(x=rect_width; x>0; --x) + { + *dest_pointer = (Word) ((*dest_pointer & bitmask) | color); + dest_pointer++; + SET_CHANGED(changed_pointer, changed_bit); + RIGHT_CHANGED(changed_pointer, changed_bit); + } + dest_pointer += dest_fixup; + } + break; + + case GraphicsDisplay::And: + for( ; rect_height>0; --rect_height) + { + changed_bit = init_changed_bit; + changed_pointer = init_changed_pointer; + DOWN_CHANGED(init_changed_pointer, init_changed_bit); + for(x=rect_width; x>0; --x) + { + *dest_pointer++ &= (Word) color; + SET_CHANGED(changed_pointer, changed_bit); + RIGHT_CHANGED(changed_pointer, changed_bit); + } + dest_pointer += dest_fixup; + } + break; + + case GraphicsDisplay::Or: + for( ; rect_height>0; --rect_height) + { + changed_bit = init_changed_bit; + changed_pointer = init_changed_pointer; + DOWN_CHANGED(init_changed_pointer, init_changed_bit); + for(x=rect_width; x>0; --x) + { + *dest_pointer++ |= (Word) color; + SET_CHANGED(changed_pointer, changed_bit); + RIGHT_CHANGED(changed_pointer, changed_bit); + } + dest_pointer += dest_fixup; + } + break; + + case GraphicsDisplay::Xor: + for( ; rect_height>0; --rect_height) + { + changed_bit = init_changed_bit; + changed_pointer = init_changed_pointer; + DOWN_CHANGED(init_changed_pointer, init_changed_bit); + for(x=rect_width; x>0; --x) + { + *dest_pointer++ ^= (Word) color; + SET_CHANGED(changed_pointer, changed_bit); + RIGHT_CHANGED(changed_pointer, changed_bit); + } + dest_pointer += dest_fixup; + } + break; + } + Check_Fpu(); +} + + +void + Video16BitBuffered::DrawText( + int /*color*/, + int /*bitmask*/, + Enumeration /*operation*/, + Logical /*opaque*/, + int /*rotation*/, + Enumeration /*fontNumber*/, + Logical /*vertical*/, + GraphicsDisplay::Justification /*justification*/, + Rectangle2D */*clippingRectanglepointer*/, + char */*stringPointer*/ + ) +{ +# if defined(DEBUG) + Tell("Video16BitBuffered::DrawText()\n"); +# endif + Check(this); + //--------------------------------------------------------- + // If pixelbuffer is invalid, do nothing + //--------------------------------------------------------- + Check_Fpu(); + if (!valid) + { + return; + } +} + +//=================================================================== +// DrawBitMap +//=================================================================== +void + Video16BitBuffered::DrawBitMap( + int color, + int bitmask, + Enumeration operation, + int rotation, + int x, int y, + BitMap *bitmap, + int sLeft, int sBottom, int sRight, int sTop + ) +{ +# if defined(DEBUG) + Tell( + "Video16BitBuffered::DrawBitMap(<" << + x << ", " << + y << ">,<" << + sLeft << ", " << + sBottom << ", " << + sRight << ", " << + sTop << ">" << + ")\n" + ); +# endif + Check(this); + Verify(x >= bounds.bottomLeft.x); + Verify(x <= bounds.topRight.x); + Verify(y >= bounds.bottomLeft.y); + Verify(y <= bounds.topRight.y); + + int + map_width, + map_height, + map_max_y, + bits, + bit_test, + first_bit_test; + + Word + *source_pointer_begin, + *source_pointer, + *dest_pointer_begin, + *dest_pointer; + + LWord + changed_bit_begin, + changed_bit, + *changed_pointer_begin, + *changed_pointer; + + //--------------------------------------------------------- + // If pixelbuffer is invalid, do nothing + //--------------------------------------------------------- + if (!valid) + { + Check_Fpu(); + return; + } + //--------------------------------------------------------- + // Ensure that source rectangle is properly specified + //--------------------------------------------------------- + Verify(bitmap != NULL); + + Verify(sLeft >= 0); + Verify(sLeft <= sRight); + Verify(sRight < bitmap->Data.Size.x); + + Verify(sBottom >= 0); + Verify(sBottom <= sTop); + Verify(sTop < bitmap->Data.Size.y); + //--------------------------------------------------------- + // Convert to screen co-ordinates + //--------------------------------------------------------- + y = maximumY - y; + + map_max_y = bitmap->Data.Size.y-1; + sTop = map_max_y - sTop; + sBottom = map_max_y - sBottom; + + map_width = sRight - sLeft + 1; + map_height = sBottom - sTop + 1; + +# if defined(DEBUG) + Tell("x=" << x << ", y=" << y << "\n"); + Tell("sTop=" << sTop << ", sBottom=" << sBottom << "\n"); + Tell("map_width=" << map_width << ", map_height=" << map_height << "\n"); +# endif + + Verify(map_width > 0); + Verify(map_width <= bitmap->Data.Size.x); + Verify(map_height > 0); + Verify(map_height <= bitmap->Data.Size.y); + + Verify(x >= 0); + Verify(x < width); + Verify(y >= 0); + Verify(y < height); + + //--------------------------------------------------------- + // We really need inverse bitmap here + //--------------------------------------------------------- + bitmask = ~bitmask; + //--------------------------------------------------------- + // Prepare to draw bitmap + //--------------------------------------------------------- + Verify(pixelBuffer.Data.MapPointer != NULL); + + source_pointer_begin = + bitmap->Data.MapPointer + + (sLeft >> 4) + + (sBottom * bitmap->Data.WidthInWords); + + first_bit_test = 1 << (15-(sLeft & 15)); + + buildDestPointer( + x, y, + &dest_pointer_begin, + &changed_pointer_begin, + &changed_bit_begin + ); + + switch (rotation) + { + default: + //-------------------------------------------- + // transparent bitmap, zero degrees + // .-----. + // | | + // | | + // Y | + // #X----. + //-------------------------------------------- +# if defined(DEBUG) + Tell( + "zero: xp=" << (x+map_width-1) << + ", yp=" << (y-map_height+1) << + "\n" + ); +# endif + Verify(x+map_width-1 >= 0); + Verify(x+map_width-1 < width); + Verify(y-map_height+1 >= 0); + Verify(y-map_height+1 < height); + + MarkChangedLines(y-map_height+1, y); + + for(y=map_height; y>0; --y) + { + source_pointer = source_pointer_begin; + changed_pointer = changed_pointer_begin; + changed_bit = changed_bit_begin; + dest_pointer = dest_pointer_begin; + + UP_BITMAP(source_pointer_begin, bitmap); + UP_CHANGED(changed_pointer_begin, changed_bit_begin); + UP_DEST(dest_pointer_begin); + + bit_test = first_bit_test; + bits = *source_pointer++; + for(x=map_width; x>0; --x,bit_test>>=1) + { + if (bit_test == 0) + { + bit_test = 0x8000; + bits = *source_pointer++; + } + + if (bits & bit_test) + { + switch (operation) + { + case GraphicsDisplay::Replace: + *dest_pointer = (Word)((*dest_pointer & bitmask) | color); + break; + + case GraphicsDisplay::And: + *dest_pointer &= (Word) color; + break; + + case GraphicsDisplay::Or: + *dest_pointer |= (Word) color; + break; + + case GraphicsDisplay::Xor: + *dest_pointer ^= (Word) color; + break; + } + SET_CHANGED(changed_pointer, changed_bit); + } + RIGHT_CHANGED(changed_pointer, changed_bit); + RIGHT_DEST(dest_pointer); + } + } + break; + + case 90: + //-------------------------------------------- + // Transparent bitmap, 90 degrees + // #Y----. + // X | + // | | + // | | + // .-----. + //-------------------------------------------- +# if defined(DEBUG) + Tell("90 xp=" << (x+map_height) << ", yp=" << (y+map_width) << "\n"); +# endif + Verify(x+map_height >= 0); + Verify(x+map_height < width); + Verify(y+map_width >= 0); + Verify(y+map_width < height); + + MarkChangedLines(y, y+map_width); + + for(y=map_height; y>0; --y) + { + source_pointer = source_pointer_begin; + changed_pointer = changed_pointer_begin; + changed_bit = changed_bit_begin; + dest_pointer = dest_pointer_begin; + + UP_BITMAP(source_pointer_begin, bitmap); + RIGHT_CHANGED(changed_pointer_begin, changed_bit_begin); + RIGHT_DEST(dest_pointer_begin); + + bit_test = first_bit_test; + bits = *source_pointer++; + + for(x=map_width; x>0; --x,bit_test>>=1) + { + if (bit_test == 0) + { + bit_test = 0x8000; + bits = *source_pointer++; + } + + if (bits & bit_test) + { + switch (operation) + { + case GraphicsDisplay::Replace: + *dest_pointer = (Word) ((*dest_pointer & bitmask) | color); + break; + + case GraphicsDisplay::And: + *dest_pointer &= (Word) color; + break; + + case GraphicsDisplay::Or: + *dest_pointer |= (Word) color; + break; + + case GraphicsDisplay::Xor: + *dest_pointer ^= (Word) color; + break; + } + SET_CHANGED(changed_pointer, changed_bit); + } + DOWN_CHANGED(changed_pointer, changed_bit); + DOWN_DEST(dest_pointer); + } + } + break; + + case 180: + //-------------------------------------------- + // Transparent bitmap, 180 degrees + // .----X# + // | Y + // | | + // | | + // .-----. + //-------------------------------------------- +# if defined(DEBUG) + Tell("xp=" << (x-map_width+1) << ", yp=" << (y+map_height) << "\n"); +# endif + Verify(x-map_width+1 >= 0); + Verify(x-map_width+1 < width); + Verify(y+map_height >= 0); + Verify(y+map_height < height); + + MarkChangedLines(y, y+map_height); + + for(y=map_height; y>0; --y) + { + source_pointer = source_pointer_begin; + changed_pointer = changed_pointer_begin; + changed_bit = changed_bit_begin; + dest_pointer = dest_pointer_begin; + + UP_BITMAP(source_pointer_begin, bitmap); + DOWN_CHANGED(changed_pointer_begin, changed_bit_begin); + DOWN_DEST(dest_pointer_begin); + + bit_test = first_bit_test; + bits = *source_pointer++; + + for(x=map_width; x>0; --x,bit_test>>=1) + { + if (bit_test == 0) + { + bit_test = 0x8000; + bits = *source_pointer++; + } + + if (bits & bit_test) + { + switch (operation) + { + case GraphicsDisplay::Replace: + *dest_pointer = (Word)((*dest_pointer & bitmask) | color); + break; + + case GraphicsDisplay::And: + *dest_pointer &= (Word) color; + break; + + case GraphicsDisplay::Or: + *dest_pointer |= (Word) color; + break; + + case GraphicsDisplay::Xor: + *dest_pointer ^= (Word) color; + break; + } + SET_CHANGED(changed_pointer, changed_bit); + } + LEFT_CHANGED(changed_pointer, changed_bit); + LEFT_DEST(dest_pointer); + } + } + break; + + case 270: + //-------------------------------------------- + // Transparent bitmap, 270 degrees + // .-----. + // | | + // | X + // | | + // .--Y--# + //-------------------------------------------- +# if defined(DEBUG) + Tell("xp=" << (x-map_height) << ", yp=" << (y-(map_width-1)) << "\n"); +# endif + + if (x-map_height < 0) + { + Tell("x-map_height = " << (x - map_height) << "\n"); + return; + } + + Verify(x-map_height >= 0); + Verify(x-map_height < width); + Verify(y-(map_width-1) >= 0); + Verify(y-(map_width-1) < height); + + MarkChangedLines(y-(map_width-1), y); + + for(y=map_height; y>0; --y) + { + source_pointer = source_pointer_begin; + changed_pointer = changed_pointer_begin; + changed_bit = changed_bit_begin; + dest_pointer = dest_pointer_begin; + + UP_BITMAP(source_pointer_begin, bitmap); + LEFT_CHANGED(changed_pointer_begin, changed_bit_begin); + LEFT_DEST(dest_pointer_begin); + + bit_test = first_bit_test; + bits = *source_pointer++; + + for(x=map_width; x>0; --x,bit_test>>=1) + { + Verify(dest_pointer >= pixelBuffer.Data.MapPointer); + Verify(dest_pointer < pixelBuffer.Data.MapPointer+ + (width*height)); + + Verify(changed_pointer >= changedBit); + Verify(changed_pointer < changedBit+(changedBitWidth*height)); + + if (bit_test == 0) + { + bit_test = 0x8000; + bits = *source_pointer++; + } + + if (bits & bit_test) + { + switch (operation) + { + case GraphicsDisplay::Replace: + *dest_pointer = (Word)((*dest_pointer & bitmask) | color); + break; + + case GraphicsDisplay::And: + *dest_pointer &= (Word) color; + break; + + case GraphicsDisplay::Or: + *dest_pointer |= (Word) color; + break; + + case GraphicsDisplay::Xor: + *dest_pointer ^= (Word) color; + break; + } + SET_CHANGED(changed_pointer, changed_bit); + } + UP_CHANGED(changed_pointer, changed_bit_begin); + UP_DEST(dest_pointer); + } + } + break; + } + Check_Fpu(); +} + +//=================================================================== +// DrawBitMapOpaque +//=================================================================== +void + Video16BitBuffered::DrawBitMapOpaque( + int foreground, + int background, + int bitmask, + Enumeration operation, + int rotation, + int x, int y, + BitMap *bitmap, + int sLeft, int sBottom, int sRight, int sTop + ) +{ + Check(this); + +Diag_on; + Diag_Tell( + "Video16BitBuffered::DrawBitMapOpaque(<" << x << + ", " << y << + ">,<" << sLeft << + ", " << sBottom << + ", " << sRight << + ", " << sTop << + ">)\n" + ); + Verify(x >= bounds.bottomLeft.x); + Verify(x <= bounds.topRight.x); + Verify(y >= bounds.bottomLeft.y); + Verify(y <= bounds.topRight.y); + + int + map_width, + map_height, + map_max_y, + bits, + bit_test, + first_bit_test; + + Word + *source_pointer_begin, + *source_pointer, + *dest_pointer_begin, + *dest_pointer; + + LWord + changed_bit_begin, + changed_bit, + *changed_pointer_begin, + *changed_pointer; + + Word + color; + + //--------------------------------------------------------- + // If pixelbuffer is invalid, do nothing + //--------------------------------------------------------- + if (!valid) + { + Check_Fpu(); + return; + } + //--------------------------------------------------------- + // Ensure that source rectangle is properly specified + //--------------------------------------------------------- + Verify(bitmap != NULL); + + Verify(sLeft >= 0); + Verify(sLeft <= sRight); + Verify(sRight < bitmap->Data.Size.x); + + Verify(sBottom >= 0); + Verify(sBottom <= sTop); + Verify(sTop < bitmap->Data.Size.y); + //--------------------------------------------------------- + // Convert to screen co-ordinates + //--------------------------------------------------------- + y = maximumY - y; + + map_max_y = bitmap->Data.Size.y-1; + sTop = map_max_y - sTop; + sBottom = map_max_y - sBottom; + + map_width = sRight - sLeft + 1; + map_height = sBottom - sTop + 1; + +Diag_off; + Diag_Tell("x=" << x << ", y=" << y << "\n"); + Diag_Tell("sTop=" << sTop << ", sBottom=" << sBottom << "\n"); + Diag_Tell( + "map_width=" << map_width << + ", map_height=" << map_height << + "\n" + ); +Diag_on; + + Verify(map_width > 0); + Verify(map_width <= bitmap->Data.Size.x); + Verify(map_height > 0); + Verify(map_height <= bitmap->Data.Size.y); + + Verify(x >= 0); + Verify(x < width); + Verify(y >= 0); + Verify(y < height); + + //--------------------------------------------------------- + // We really need inverse bitmap here + //--------------------------------------------------------- + bitmask = ~bitmask; + //--------------------------------------------------------- + // Prepare to draw bitmap + //--------------------------------------------------------- + Verify(pixelBuffer.Data.MapPointer != NULL); + + source_pointer_begin = + bitmap->Data.MapPointer + + (sLeft >> 4) + + (sBottom * bitmap->Data.WidthInWords); + + first_bit_test = 1 << (15-(sLeft & 15)); + + buildDestPointer( + x, y, + &dest_pointer_begin, + &changed_pointer_begin, + &changed_bit_begin + ); + + //--------------------------------------------------------- + // The bitmap is always read left-to-right, bottom-to-top. + // We write it to the screen in different directions + // based on the rotation. + //--------------------------------------------------------- + switch (rotation) + { + default: + //-------------------------------------------- + // opaque bitmap, zero degrees + // .-----. + // | | + // | | + // Y | + // #X----. + //-------------------------------------------- +# if defined(DEBUG) + Tell( + "zero: xp=" << (x+map_width) << + ", yp=" << (y-map_height+1) << + "\n" + ); +# endif + Verify(x+map_width >= 0); + Verify(x+map_width <= width); // HACK? <, or <=? + Verify(y-map_height+1 >= 0); + Verify(y-map_height+1 < height); + + MarkChangedLines(y-map_height+1, y); + + for(y=map_height; y>0; --y) + { + source_pointer = source_pointer_begin; + changed_pointer = changed_pointer_begin; + changed_bit = changed_bit_begin; + dest_pointer = dest_pointer_begin; + + UP_BITMAP(source_pointer_begin, bitmap); + UP_CHANGED(changed_pointer_begin, changed_bit_begin); + UP_DEST(dest_pointer_begin); + + bit_test = first_bit_test; + bits = *source_pointer++; + + for(x=map_width; x>0; --x,bit_test>>=1) + { + if (bit_test == 0) + { + bit_test = 0x8000; + bits = *source_pointer++; + } + + if (bits & bit_test) + { + color = (Word) foreground; + } + else + { + color = (Word) background; + } + { + switch (operation) + { + case GraphicsDisplay::Replace: + *dest_pointer = (Word)((*dest_pointer & bitmask) | color); + break; + + case GraphicsDisplay::And: + *dest_pointer &= (Word) color; + break; + + case GraphicsDisplay::Or: + *dest_pointer |= (Word) color; + break; + + case GraphicsDisplay::Xor: + *dest_pointer ^= (Word) color; + break; + } + SET_CHANGED(changed_pointer, changed_bit); + } + RIGHT_CHANGED(changed_pointer, changed_bit); + RIGHT_DEST(dest_pointer); + } + } + break; + + case 90: + //-------------------------------------------- + // opaque bitmap, 90 degrees + // #--Y--. + // | | + // X | + // | | + // .-----. + //-------------------------------------------- +# if defined(DEBUG) + Tell("90 xp=" << (x+map_height) << ", yp=" << (y+map_width) << "\n"); +# endif + Verify(x+map_height >= 0); + Verify(x+map_height < width); + Verify(y+map_width >= 0); + Verify(y+map_width < height); + + MarkChangedLines(y, y+map_width); + + for(y=map_height; y>0; --y) + { + source_pointer = source_pointer_begin; + changed_pointer = changed_pointer_begin; + changed_bit = changed_bit_begin; + dest_pointer = dest_pointer_begin; + + UP_BITMAP(source_pointer_begin, bitmap); + RIGHT_CHANGED(changed_pointer_begin, changed_bit_begin); + RIGHT_DEST(dest_pointer_begin); + + bit_test = first_bit_test; + bits = *source_pointer++; + + for(x=map_width; x>0; --x,bit_test>>=1) + { + if (bit_test == 0) + { + bit_test = 0x8000; + bits = *source_pointer++; + } + + if (bits & bit_test) + { + color = (Word) foreground; + } + else + { + color = (Word) background; + } + { + switch (operation) + { + case GraphicsDisplay::Replace: + *dest_pointer = (Word) ((*dest_pointer & bitmask) | color); + break; + + case GraphicsDisplay::And: + *dest_pointer &= (Word) color; + break; + + case GraphicsDisplay::Or: + *dest_pointer |= (Word) color; + break; + + case GraphicsDisplay::Xor: + *dest_pointer ^= (Word) color; + break; + } + SET_CHANGED(changed_pointer, changed_bit); + } + DOWN_CHANGED(changed_pointer, changed_bit); + DOWN_DEST(dest_pointer); + } + } + break; + + case 180: + //-------------------------------------------- + // opaque bitmap, 180 degrees + // .----X# + // | Y + // | | + // | | + // .-----. + //-------------------------------------------- +# if defined(DEBUG) + Tell("xp=" << (x-map_width+1) << ", yp=" << (y+map_height) << "\n"); +# endif + Verify(x-map_width+1 >= 0); + Verify(x-map_width+1 < width); + Verify(y+map_height >= 0); + Verify(y+map_height < height); + + MarkChangedLines(y, y+map_height); + + for(y=map_height; y>0; --y) + { + source_pointer = source_pointer_begin; + changed_pointer = changed_pointer_begin; + changed_bit = changed_bit_begin; + dest_pointer = dest_pointer_begin; + + UP_BITMAP(source_pointer_begin, bitmap); + DOWN_CHANGED(changed_pointer_begin, changed_bit_begin); + DOWN_DEST(dest_pointer_begin); + + bit_test = first_bit_test; + bits = *source_pointer++; + + for(x=map_width; x>0; --x,bit_test>>=1) + { + if (bit_test == 0) + { + bit_test = 0x8000; + bits = *source_pointer++; + } + + if (bits & bit_test) + { + color = (Word) foreground; + } + else + { + color = (Word) background; + } + { + switch (operation) + { + case GraphicsDisplay::Replace: + *dest_pointer = (Word)((*dest_pointer & bitmask) | color); + break; + + case GraphicsDisplay::And: + *dest_pointer &= (Word) color; + break; + + case GraphicsDisplay::Or: + *dest_pointer |= (Word) color; + break; + + case GraphicsDisplay::Xor: + *dest_pointer ^= (Word) color; + break; + } + SET_CHANGED(changed_pointer, changed_bit); + } + LEFT_CHANGED(changed_pointer, changed_bit); + LEFT_DEST(dest_pointer); + } + } + break; + + case 270: + //-------------------------------------------- + // opaque bitmap, 270 degrees + // .-----. + // | | + // | X + // | | + // .--Y--# + //-------------------------------------------- +# if defined(DEBUG) + Tell( + "xp=" << (x-map_height+1) << + ", yp=" << (y-(map_width-1)) << + "\n" + ); +# endif + + Verify(x-map_height >= 0); + Verify(x-map_height < width); + Verify(y-(map_width-1) >= 0); + Verify(y-(map_width-1) < height); + + Diag_Tell( + "(y-(map_width-1))=" << (y-(map_width-1)) << + ", y=" << y << + "," + ); + + MarkChangedLines(y-(map_width-1), y); + + for(y=map_height; y>0; --y) + { + source_pointer = source_pointer_begin; + changed_pointer = changed_pointer_begin; + changed_bit = changed_bit_begin; + dest_pointer = dest_pointer_begin; + + UP_BITMAP(source_pointer_begin, bitmap); + LEFT_CHANGED(changed_pointer_begin, changed_bit_begin); + LEFT_DEST(dest_pointer_begin); + + bit_test = first_bit_test; + bits = *source_pointer++; + + for(x=map_width; x>0; --x,bit_test>>=1) + { + Verify(dest_pointer >= pixelBuffer.Data.MapPointer); + Verify(dest_pointer < pixelBuffer.Data.MapPointer+ + (width*height)); + + Verify(changed_pointer >= changedBit); + Verify(changed_pointer < changedBit+(changedBitWidth*height)); + + if (bit_test == 0) + { + bit_test = 0x8000; + bits = *source_pointer++; + } + + if (bits & bit_test) + { + color = (Word) foreground; + } + else + { + color = (Word) background; + } + { + switch (operation) + { + case GraphicsDisplay::Replace: + *dest_pointer = (Word)((*dest_pointer & bitmask) | color); + break; + + case GraphicsDisplay::And: + *dest_pointer &= (Word) color; + break; + + case GraphicsDisplay::Or: + *dest_pointer |= (Word) color; + break; + + case GraphicsDisplay::Xor: + *dest_pointer ^= (Word) color; + break; + } + SET_CHANGED(changed_pointer, changed_bit); + } + UP_CHANGED(changed_pointer, changed_bit_begin); + UP_DEST(dest_pointer); + } + } + Diag_Tell( + "changed_pointer=" << changed_pointer << dec << + "\n" + ); + + break; + } + Check_Fpu(); +Diag_off; +} + +//=================================================================== +// DrawPixelMap8 +//=================================================================== +void + Video16BitBuffered::DrawPixelMap8( + int *translation_table, + int bitmask, + Enumeration operation, + Logical opaque, + int rotation, + int x, int y, + PixelMap8 *pixelmap, + int sLeft, int sBottom, int sRight, int sTop + ) +{ +# if defined(DEBUG) + Tell( + "Video16BitBuffered::DrawPixelMap8(<" << + x << ", " << + y << ">,<" << + sLeft << ", " << + sBottom << ", " << + sRight << ", " << + sTop << ">" << + ")\n" + ); +# endif + Check(this); + Verify(x >= bounds.bottomLeft.x); + Verify(x <= bounds.topRight.x); + Verify(y >= bounds.bottomLeft.y); + Verify(y <= bounds.topRight.y); + + int + map_width, + map_height, + map_max_y; + + Byte + source_data, + *source_pointer_begin, + *source_pointer; + + Word + *dest_pointer_begin, + *dest_pointer; + + LWord + changed_bit_begin, + changed_bit, + *changed_pointer_begin, + *changed_pointer; + + Word + color; + //--------------------------------------------------------- + // If pixelbuffer is invalid, do nothing + //--------------------------------------------------------- + if (!valid) + { + Check_Fpu(); + return; + } + //--------------------------------------------------------- + // Ensure that source rectangle is properly specified + //--------------------------------------------------------- + Verify(pixelmap != NULL); + + Verify(sLeft >= 0); + Verify(sLeft <= sRight); + Verify(sRight < pixelmap->Data.Size.x); + + Verify(sBottom >= 0); + Verify(sBottom <= sTop); + Verify(sTop < pixelmap->Data.Size.y); + //--------------------------------------------------------- + // Convert to screen co-ordinates + //--------------------------------------------------------- + y = maximumY - y; + + map_max_y = pixelmap->Data.Size.y-1; + sTop = map_max_y - sTop; + sBottom = map_max_y - sBottom; + + map_width = sRight - sLeft + 1; + map_height = sBottom - sTop + 1; + +# if defined(DEBUG) + Tell("x=" << x << ", y=" << y << "\n"); + Tell("sTop=" << sTop << ", sBottom=" << sBottom << "\n"); + Tell("map_width=" << map_width << ", map_height=" << map_height << "\n"); +# endif + + Verify(map_width > 0); + Verify(map_width <= pixelmap->Data.Size.x); + Verify(map_height > 0); + Verify(map_height <= pixelmap->Data.Size.y); + + Verify(x >= 0); + Verify(x < width); + Verify(y >= 0); + Verify(y < height); + + //--------------------------------------------------------- + // We really need inverse bitmap here + //--------------------------------------------------------- + bitmask = ~bitmask; + //--------------------------------------------------------- + // Prepare to draw bitmap + //--------------------------------------------------------- + Verify(pixelBuffer.Data.MapPointer != NULL); + + source_pointer_begin = + pixelmap->Data.MapPointer + + sLeft + + (sBottom * pixelmap->Data.Size.x); + + buildDestPointer( + x, y, + &dest_pointer_begin, + &changed_pointer_begin, + &changed_bit_begin + ); + + if (opaque) + { + switch (rotation) + { + default: + //-------------------------------------------- + // Opaque pixelmap, zero degrees + // .-----. + // | | + // | | + // Y | + // #X----. + //-------------------------------------------- +# if defined(DEBUG) + Tell( + "Opaque zero: xp=" << (x+map_width) << + ", yp=" << (y-map_height+1) << + "\n" + ); +# endif + Verify(x+map_width >= 0); + Verify(x+map_width < width); + Verify(y-map_height+1 >= 0); + Verify(y-map_height+1 < height); + + MarkChangedLines(y-map_height+1, y); + + for(y=map_height; y>0; --y) + { + source_pointer = source_pointer_begin; + changed_pointer = changed_pointer_begin; + changed_bit = changed_bit_begin; + dest_pointer = dest_pointer_begin; + + UP_SOURCE(source_pointer_begin, pixelmap); + UP_CHANGED(changed_pointer_begin, changed_bit_begin); + UP_DEST(dest_pointer_begin); + + for(x=map_width; x>0; --x) + { + source_data = *source_pointer++; //SOURCE_RIGHT + { + color = (Word) translation_table[source_data]; + switch(operation) + { + case GraphicsDisplay::Replace: + *dest_pointer = (Word)((*dest_pointer & bitmask) | color); + break; + + case GraphicsDisplay::And: + *dest_pointer &= color; + break; + + case GraphicsDisplay::Or: + *dest_pointer |= color; + break; + + case GraphicsDisplay::Xor: + *dest_pointer ^= color; + break; + } + SET_CHANGED(changed_pointer, changed_bit); + } + RIGHT_CHANGED(changed_pointer, changed_bit); + RIGHT_DEST(dest_pointer); + } + } + break; + + case 90: + //-------------------------------------------- + // Opaque pixelmap, 90 degrees + // #Y----. + // X | + // | | + // | | + // .-----. + //-------------------------------------------- +# if defined(DEBUG) + Tell( + "Opaque 90: xp=" << (x+map_height) << + ", yp=" << (y+map_width) << + "\n" + ); +# endif + Verify(x+map_height >= 0); + Verify(x+map_height < width); + Verify(y+map_width >= 0); + Verify(y+map_width < height); + + MarkChangedLines(y, y+map_width); + + for(y=map_height; y>0; --y) + { + source_pointer = source_pointer_begin; + changed_pointer = changed_pointer_begin; + changed_bit = changed_bit_begin; + dest_pointer = dest_pointer_begin; + + UP_SOURCE(source_pointer_begin, pixelmap); + RIGHT_CHANGED(changed_pointer_begin, changed_bit_begin); + RIGHT_DEST(dest_pointer_begin); + + for(x=map_width; x>0; --x) + { + source_data = *source_pointer++; //SOURCE_RIGHT + { + color = (Word) translation_table[source_data]; + switch(operation) + { + case GraphicsDisplay::Replace: + *dest_pointer = (Word) ((*dest_pointer & bitmask) | color); + break; + + case GraphicsDisplay::And: + *dest_pointer &= color; + break; + + case GraphicsDisplay::Or: + *dest_pointer |= color; + break; + + case GraphicsDisplay::Xor: + *dest_pointer ^= color; + break; + } + SET_CHANGED(changed_pointer, changed_bit); + } + DOWN_CHANGED(changed_pointer, changed_bit); + DOWN_DEST(dest_pointer); + } + } + break; + + case 180: + //-------------------------------------------- + // Opaque pixelmap, 180 degrees + // .----X# + // | Y + // | | + // | | + // .-----. + //-------------------------------------------- +# if defined(DEBUG) + Tell( + "Opaque 180: xp=" << (x-map_width+1) << + ", yp=" << (y+map_height) << + "\n" + ); +# endif + Verify(x-map_width+1 >= 0); + Verify(x-map_width+1 < width); + Verify(y+map_height >= 0); + Verify(y+map_height < height); + + MarkChangedLines(y, y+map_height); + + for(y=map_height; y>0; --y) + { + source_pointer = source_pointer_begin; + changed_pointer = changed_pointer_begin; + changed_bit = changed_bit_begin; + dest_pointer = dest_pointer_begin; + + UP_SOURCE(source_pointer_begin, pixelmap); + DOWN_CHANGED(changed_pointer_begin, changed_bit_begin); + DOWN_DEST(dest_pointer_begin); + + for(x=map_width; x>0; --x) + { + source_data = *source_pointer++; //SOURCE_RIGHT + { + color = (Word) translation_table[source_data]; + switch(operation) + { + case GraphicsDisplay::Replace: + *dest_pointer = (Word)((*dest_pointer & bitmask) | color); + break; + + case GraphicsDisplay::And: + *dest_pointer &= color; + break; + + case GraphicsDisplay::Or: + *dest_pointer |= color; + break; + + case GraphicsDisplay::Xor: + *dest_pointer ^= color; + break; + } + SET_CHANGED(changed_pointer, changed_bit); + } + LEFT_CHANGED(changed_pointer, changed_bit); + LEFT_DEST(dest_pointer); + } + } + break; + + case 270: + //-------------------------------------------- + // Opaque pixelmap, 270 degrees + // .-----. + // | | + // | X + // | | + // .--Y--# + //-------------------------------------------- +# if defined(DEBUG) + Tell("Opaque 270: x=" << x << ", y=" << y << "\n"); + Tell( + "xp=" << (x-map_height) << + ", yp=" << (y-(map_width-1)) << + "\n" + ); +# endif + Verify(x-map_height-1 >= 0); + Verify(x-map_height-1 < width); + Verify(y-(map_width-1) >= 0); + Verify(y-(map_width-1) < height); + + MarkChangedLines(y-(map_width-1), y); + + for(y=map_height ; y>0; --y) + { + source_pointer = source_pointer_begin; + changed_pointer = changed_pointer_begin; + changed_bit = changed_bit_begin; + dest_pointer = dest_pointer_begin; + + UP_SOURCE(source_pointer_begin, pixelmap); + LEFT_CHANGED(changed_pointer_begin, changed_bit_begin); + LEFT_DEST(dest_pointer_begin); + + for(x=map_width; x>0; --x) + { + Verify(dest_pointer >= pixelBuffer.Data.MapPointer); + Verify(dest_pointer < pixelBuffer.Data.MapPointer+ + (width*height)); + + Verify(changed_pointer >= changedBit); + Verify(changed_pointer < changedBit+(changedBitWidth*height)); + + source_data = *source_pointer++; //SOURCE_RIGHT + { + color = (Word) translation_table[source_data]; + switch(operation) + { + case GraphicsDisplay::Replace: + *dest_pointer = (Word)((*dest_pointer & bitmask) | color); + break; + + case GraphicsDisplay::And: + *dest_pointer &= color; + break; + + case GraphicsDisplay::Or: + *dest_pointer |= color; + break; + + case GraphicsDisplay::Xor: + *dest_pointer ^= color; + break; + } + SET_CHANGED(changed_pointer, changed_bit); + } + UP_CHANGED(changed_pointer, changed_bit_begin); + UP_DEST(dest_pointer); + } + } + break; + } + } + else + { + switch (rotation) + { + default: + //-------------------------------------------- + // Transparent pixelmap, zero degrees + // .-----. + // | | + // | | + // Y | + // #X----. + //-------------------------------------------- +# if defined(DEBUG) + Tell( + "transparent zero: xp=" << (x+map_width) << + ", yp=" << (y-map_height+1) << + "\n" + ); +# endif + Verify(x+map_width >= 0); + Verify(x+map_width < width); + Verify(y-map_height+1 >= 0); + Verify(y-map_height+1 < height); + + MarkChangedLines(y-map_height+1, y); + + for(y=map_height; y>0; --y) + { + source_pointer = source_pointer_begin; + changed_pointer = changed_pointer_begin; + changed_bit = changed_bit_begin; + dest_pointer = dest_pointer_begin; + + UP_SOURCE(source_pointer_begin, pixelmap); + UP_CHANGED(changed_pointer_begin, changed_bit_begin); + UP_DEST(dest_pointer_begin); + + for(x=map_width; x>0; --x) + { + source_data = *source_pointer++; //SOURCE_RIGHT + if (source_data) + { + color = (Word) translation_table[source_data]; + switch(operation) + { + case GraphicsDisplay::Replace: + *dest_pointer = (Word)((*dest_pointer & bitmask) | color); + break; + + case GraphicsDisplay::And: + *dest_pointer &= color; + break; + + case GraphicsDisplay::Or: + *dest_pointer |= color; + break; + + case GraphicsDisplay::Xor: + *dest_pointer ^= color; + break; + } + SET_CHANGED(changed_pointer, changed_bit); + } + RIGHT_CHANGED(changed_pointer, changed_bit); + RIGHT_DEST(dest_pointer); + } + } + break; + + case 90: + //-------------------------------------------- + // Transparent pixelmap, 90 degrees + // #Y----. + // X | + // | | + // | | + // .-----. + //-------------------------------------------- +# if defined(DEBUG) + Tell( + "transparent 90: xp=" << (x+map_height) << + ", yp=" << (y+map_width) << + "\n" + ); +# endif + Verify(x+map_height >= 0); + Verify(x+map_height < width); + Verify(y+map_width >= 0); + Verify(y+map_width < height); + + MarkChangedLines(y, y+map_width); + + for(y=map_height; y>0; --y) + { + source_pointer = source_pointer_begin; + changed_pointer = changed_pointer_begin; + changed_bit = changed_bit_begin; + dest_pointer = dest_pointer_begin; + + UP_SOURCE(source_pointer_begin, pixelmap); + RIGHT_CHANGED(changed_pointer_begin, changed_bit_begin); + RIGHT_DEST(dest_pointer_begin); + + for(x=map_width; x>0; --x) + { + source_data = *source_pointer++; //SOURCE_RIGHT + if (source_data) + { + color = (Word) translation_table[source_data]; + switch(operation) + { + case GraphicsDisplay::Replace: + *dest_pointer = (Word) ((*dest_pointer & bitmask) | color); + break; + + case GraphicsDisplay::And: + *dest_pointer &= color; + break; + + case GraphicsDisplay::Or: + *dest_pointer |= color; + break; + + case GraphicsDisplay::Xor: + *dest_pointer ^= color; + break; + } + SET_CHANGED(changed_pointer, changed_bit); + } + DOWN_CHANGED(changed_pointer, changed_bit); + DOWN_DEST(dest_pointer); + } + } + break; + + case 180: + //-------------------------------------------- + // Transparent pixelmap, 180 degrees + // .----X# + // | Y + // | | + // | | + // .-----. + //-------------------------------------------- +# if defined(DEBUG) + Tell( + "transparent 180: xp=" << (x-map_width+1) << + ", yp=" << (y+map_height) << + "\n" + ); +# endif + Verify(x-map_width+1 >= 0); + Verify(x-map_width+1 < width); + Verify(y+map_height >= 0); + Verify(y+map_height < height); + + MarkChangedLines(y, y+map_height); + + for(y=map_height; y>0; --y) + { + source_pointer = source_pointer_begin; + changed_pointer = changed_pointer_begin; + changed_bit = changed_bit_begin; + dest_pointer = dest_pointer_begin; + + UP_SOURCE(source_pointer_begin, pixelmap); + DOWN_CHANGED(changed_pointer_begin, changed_bit_begin); + DOWN_DEST(dest_pointer_begin); + + for(x=map_width; x>0; --x) + { + source_data = *source_pointer++; //SOURCE_RIGHT + if (source_data) + { + color = (Word) translation_table[source_data]; + switch(operation) + { + case GraphicsDisplay::Replace: + *dest_pointer = (Word)((*dest_pointer & bitmask) | color); + break; + + case GraphicsDisplay::And: + *dest_pointer &= color; + break; + + case GraphicsDisplay::Or: + *dest_pointer |= color; + break; + + case GraphicsDisplay::Xor: + *dest_pointer ^= color; + break; + } + SET_CHANGED(changed_pointer, changed_bit); + } + LEFT_CHANGED(changed_pointer, changed_bit); + LEFT_DEST(dest_pointer); + } + } + break; + + case 270: + //-------------------------------------------- + // Transparent pixelmap, 270 degrees + // .-----. + // | | + // | X + // | | + // .--Y--# + //-------------------------------------------- +# if defined(DEBUG) + Tell("transparent 270: x=" << x << ", y=" << y << "\n"); + Tell( + "xp=" << (x-map_height) << + ", yp=" << (y-(map_width-1)) << + "\n" + ); +# endif + Verify(x-(map_height-1) >= 0); + Verify(x-(map_height-1) < width); + Verify(y-(map_width-1) >= 0); + Verify(y-(map_width-1) < height); + + MarkChangedLines(y-(map_width-1), y); + + for(y=map_height ; y>0; --y) + { + source_pointer = source_pointer_begin; + changed_pointer = changed_pointer_begin; + changed_bit = changed_bit_begin; + dest_pointer = dest_pointer_begin; + + UP_SOURCE(source_pointer_begin, pixelmap); + LEFT_CHANGED(changed_pointer_begin, changed_bit_begin); + LEFT_DEST(dest_pointer_begin); + + for(x=map_width; x>0; --x) + { + Verify(dest_pointer >= pixelBuffer.Data.MapPointer); + Verify(dest_pointer < pixelBuffer.Data.MapPointer+ + (width*height)); + + Verify(changed_pointer >= changedBit); + Verify(changed_pointer < changedBit+(changedBitWidth*height)); + + source_data = *source_pointer++; //SOURCE_RIGHT + if (source_data) + { + color = (Word) translation_table[source_data]; + switch(operation) + { + case GraphicsDisplay::Replace: + *dest_pointer = (Word)((*dest_pointer & bitmask) | color); + break; + + case GraphicsDisplay::And: + *dest_pointer &= color; + break; + + case GraphicsDisplay::Or: + *dest_pointer |= color; + break; + + case GraphicsDisplay::Xor: + *dest_pointer ^= color; + break; + } + SET_CHANGED(changed_pointer, changed_bit); + } + UP_CHANGED(changed_pointer, changed_bit_begin); + UP_DEST(dest_pointer); + } + } + break; + } + } + Check_Fpu(); +} + +//=================================================================== +// DrawPixelMap8SingleColor +//=================================================================== +void + Video16BitBuffered::DrawPixelMap8SingleColor( + int color, + int bitmask, + Enumeration operation, + int rotation, + int x, int y, + PixelMap8 *pixelmap, + int sLeft, int sBottom, int sRight, int sTop + ) +{ +# if defined(DEBUG) + Tell( + "Video16BitBuffered::DrawPixelMap8SingleColor(<" << + x << ", " << + y << ">,<" << + sLeft << ", " << + sBottom << ", " << + sRight << ", " << + sTop << ">" << + ")\n" + ); +# endif + Check(this); + Verify(x >= bounds.bottomLeft.x); + Verify(x <= bounds.topRight.x); + Verify(y >= bounds.bottomLeft.y); + Verify(y <= bounds.topRight.y); + + int + map_width, + map_height, + map_max_y; + + Byte + source_data, + *source_pointer_begin, + *source_pointer; + + Word + *dest_pointer_begin, + *dest_pointer; + + LWord + changed_bit_begin, + changed_bit, + *changed_pointer_begin, + *changed_pointer; + + //--------------------------------------------------------- + // If pixelbuffer is invalid, do nothing + //--------------------------------------------------------- + if (!valid) + { + Check_Fpu(); + return; + } + //--------------------------------------------------------- + // Ensure that source rectangle is properly specified + //--------------------------------------------------------- + Verify(pixelmap != NULL); + + Verify(sLeft >= 0); + Verify(sLeft <= sRight); + Verify(sRight < pixelmap->Data.Size.x); + + Verify(sBottom >= 0); + Verify(sBottom <= sTop); + Verify(sTop < pixelmap->Data.Size.y); + //--------------------------------------------------------- + // Convert to screen co-ordinates + //--------------------------------------------------------- + y = maximumY - y; + + map_max_y = pixelmap->Data.Size.y-1; + sTop = map_max_y - sTop; + sBottom = map_max_y - sBottom; + + map_width = sRight - sLeft + 1; + map_height = sBottom - sTop + 1; + +# if defined(DEBUG) + Tell("x=" << x << ", y=" << y << "\n"); + Tell("sTop=" << sTop << ", sBottom=" << sBottom << "\n"); + Tell("map_width=" << map_width << ", map_height=" << map_height << "\n"); +# endif + + Verify(map_width > 0); + Verify(map_width <= pixelmap->Data.Size.x); + Verify(map_height > 0); + Verify(map_height <= pixelmap->Data.Size.y); + + + Verify(x >= 0); + Verify(x < width); + Verify(y >= 0); + Verify(y < height); + + //--------------------------------------------------------- + // We really need inverse bitmap here + //--------------------------------------------------------- + bitmask = ~bitmask; + //--------------------------------------------------------- + // Prepare to draw bitmap + //--------------------------------------------------------- + Verify(pixelBuffer.Data.MapPointer != NULL); + + source_pointer_begin = + pixelmap->Data.MapPointer + + sLeft + + (sBottom * pixelmap->Data.Size.x); + + buildDestPointer( + x, y, + &dest_pointer_begin, + &changed_pointer_begin, + &changed_bit_begin + ); + + { + switch (rotation) + { + default: + //-------------------------------------------- + // Single-color pixelmap, zero degrees + // .-----. + // | | + // | | + // Y | + // #X----. + //-------------------------------------------- +# if defined(DEBUG) + Tell( + "Single-color zero: xp=" << (x+map_width) << + ", yp=" << (y-map_height+1) << + "\n" + ); +# endif + Verify(x+map_width >= 0); + Verify(x+map_width < width); + Verify(y-map_height+1 >= 0); + Verify(y-map_height+1 < height); + + MarkChangedLines(y-map_height+1, y); + + for(y=map_height; y>0; --y) + { + source_pointer = source_pointer_begin; + changed_pointer = changed_pointer_begin; + changed_bit = changed_bit_begin; + dest_pointer = dest_pointer_begin; + + UP_SOURCE(source_pointer_begin, pixelmap); + UP_CHANGED(changed_pointer_begin, changed_bit_begin); + UP_DEST(dest_pointer_begin); + + for(x=map_width; x>0; --x) + { + source_data = *source_pointer++; //SOURCE_RIGHT + if (source_data) + { + switch(operation) + { + case GraphicsDisplay::Replace: + *dest_pointer = (Word)((*dest_pointer & bitmask) | color); + break; + + case GraphicsDisplay::And: + *dest_pointer &= (Word) color; + break; + + case GraphicsDisplay::Or: + *dest_pointer |= (Word) color; + break; + + case GraphicsDisplay::Xor: + *dest_pointer ^= (Word) color; + break; + } + SET_CHANGED(changed_pointer, changed_bit); + } + RIGHT_CHANGED(changed_pointer, changed_bit); + RIGHT_DEST(dest_pointer); + } + } + break; + + case 90: + //-------------------------------------------- + // Single-color pixelmap, 90 degrees + // #Y----. + // X | + // | | + // | | + // .-----. + //-------------------------------------------- +# if defined(DEBUG) + Tell( + "Single-color 90: xp=" << (x+map_height) << + ", yp=" << (y+map_width) << + "\n" + ); +# endif + Verify(x+map_height >= 0); + Verify(x+map_height < width); + Verify(y+map_width >= 0); + Verify(y+map_width < height); + + MarkChangedLines(y, y+map_width); + + for(y=map_height; y>0; --y) + { + source_pointer = source_pointer_begin; + changed_pointer = changed_pointer_begin; + changed_bit = changed_bit_begin; + dest_pointer = dest_pointer_begin; + + UP_SOURCE(source_pointer_begin, pixelmap); + RIGHT_CHANGED(changed_pointer_begin, changed_bit_begin); + RIGHT_DEST(dest_pointer_begin); + + for(x=map_width; x>0; --x) + { + source_data = *source_pointer++; //SOURCE_RIGHT + if (source_data) + { + switch(operation) + { + case GraphicsDisplay::Replace: + *dest_pointer = (Word) ((*dest_pointer & bitmask) | color); + break; + + case GraphicsDisplay::And: + *dest_pointer &= (Word) color; + break; + + case GraphicsDisplay::Or: + *dest_pointer |= (Word) color; + break; + + case GraphicsDisplay::Xor: + *dest_pointer ^= (Word) color; + break; + } + SET_CHANGED(changed_pointer, changed_bit); + } + DOWN_CHANGED(changed_pointer, changed_bit); + DOWN_DEST(dest_pointer); + } + } + break; + + case 180: + //-------------------------------------------- + // Single-color pixelmap, 180 degrees + // .----X# + // | Y + // | | + // | | + // .-----. + //-------------------------------------------- +# if defined(DEBUG) + Tell( + "Single-color 180: xp=" << (x-map_width+1) << + ", yp=" << (y+map_height) << + "\n" + ); +# endif + Verify(x-map_width+1 >= 0); + Verify(x-map_width+1 < width); + Verify(y+map_height >= 0); + Verify(y+map_height < height); + + MarkChangedLines(y, y+map_height); + + for(y=map_height; y>0; --y) + { + source_pointer = source_pointer_begin; + changed_pointer = changed_pointer_begin; + changed_bit = changed_bit_begin; + dest_pointer = dest_pointer_begin; + + UP_SOURCE(source_pointer_begin, pixelmap); + DOWN_CHANGED(changed_pointer_begin, changed_bit_begin); + DOWN_DEST(dest_pointer_begin); + + for(x=map_width; x>0; --x) + { + source_data = *source_pointer++; //SOURCE_RIGHT + if (source_data) + { + switch(operation) + { + case GraphicsDisplay::Replace: + *dest_pointer = (Word)((*dest_pointer & bitmask) | color); + break; + + case GraphicsDisplay::And: + *dest_pointer &= (Word) color; + break; + + case GraphicsDisplay::Or: + *dest_pointer |= (Word) color; + break; + + case GraphicsDisplay::Xor: + *dest_pointer ^= (Word) color; + break; + } + SET_CHANGED(changed_pointer, changed_bit); + } + LEFT_CHANGED(changed_pointer, changed_bit); + LEFT_DEST(dest_pointer); + } + } + break; + + case 270: + //-------------------------------------------- + // Single-color pixelmap, 270 degrees + // .-----. + // | | + // | X + // | | + // .--Y--# + //-------------------------------------------- +# if defined(DEBUG) + Tell("Single-color 270: x=" << x << ", y=" << y << "\n"); + Tell( + "xp=" << (x-map_height) << + ", yp=" << (y-map_width) << + "\n" + ); +# endif + Verify(x-map_height >= 0); + Verify(x-map_height < width); + Verify(y-map_width >= 0); + Verify(y-map_width < height); + + MarkChangedLines(y-map_width, y); + + for(y=map_height ; y>0; --y) + { + source_pointer = source_pointer_begin; + changed_pointer = changed_pointer_begin; + changed_bit = changed_bit_begin; + dest_pointer = dest_pointer_begin; + + UP_SOURCE(source_pointer_begin, pixelmap); + LEFT_CHANGED(changed_pointer_begin, changed_bit_begin); + LEFT_DEST(dest_pointer_begin); + + for(x=map_width; x>0; --x) + { + Verify(dest_pointer >= pixelBuffer.Data.MapPointer); + Verify(dest_pointer < pixelBuffer.Data.MapPointer+ + (width*height)); + + Verify(changed_pointer >= changedBit); + Verify(changed_pointer < changedBit+(changedBitWidth*height)); + + source_data = *source_pointer++; //SOURCE_RIGHT + if (source_data) + { + switch(operation) + { + case GraphicsDisplay::Replace: + *dest_pointer = (Word)((*dest_pointer & bitmask) | color); + break; + + case GraphicsDisplay::And: + *dest_pointer &= (Word) color; + break; + + case GraphicsDisplay::Or: + *dest_pointer |= (Word) color; + break; + + case GraphicsDisplay::Xor: + *dest_pointer ^= (Word) color; + break; + } + SET_CHANGED(changed_pointer, changed_bit); + } + UP_CHANGED(changed_pointer, changed_bit_begin); + UP_DEST(dest_pointer); + } + } + break; + } + } + Check_Fpu(); +} + +//######################################################################## +//############################ SVGA640x480x16 ############################ +//######################################################################## +SVGA16::SVGA16( + int mode, + int init_width, + int init_height, + int mem_page_size, + int mem_granularity, + int bytes_per_line, + int page_function_pointer, + int special_interface +):Video16BitBuffered(init_width, init_height) +{ +# if defined(DEBUG) + Tell("SVGA16::SVGA16()\n"); +# endif + + pageSize = mem_page_size * 1024; + Verify(mem_granularity > 0); + pageDelta = mem_page_size/mem_granularity; + widthInBytes = bytes_per_line; + pageFcnPtr = page_function_pointer; + specialInterface = special_interface; // currently unused + + currentPageNumber = -1; + + // + // Set video mode + // + SVGASetMode(mode, pageFcnPtr); + // + // Set VWE video splitter clock divider + // + SVGASetSplitterClock(True); + + //------------------------------------------------------------------------ + // Initialize palettes + //------------------------------------------------------------------------ + FadeToWhite(0.0); + //------------------------------------------------------------------------ + // Initialize palette data + //------------------------------------------------------------------------ + // The +2 causes Adam's decoded Palette addresses to "match up" + // with the address definitions used by the standard VGA palette port. + // Adam's port decoder design uses: + // xx00 = write address port + // xx01 = data port + // xx10 = pixel mask port + // xx11 = read address port + // The standard VGA/SVGA ports are: + // 03C6 = ......0110 = xx10 = pixel mask port + // 03C7 = ......0111 = xx11 = read address port + // 03C8 = ......1000 = xx00 = write address port + // 03C9 = ......1001 = xx01 = data port + // Adam's ports are: + // 0300 = secondary palette + // 0308 = auxiliary palette 1 + // 0310 = auxiliary palette 2 + // By adding 2 to "Adam's" port assignments, they match with a VGA: + // 0302/030A/0312 = xx10 = pixel mask port + // 0303/030B/0313 = xx11 = read address port + // 0304/030C/0314 = xx00 = write address port + // 0305/030D/0315 = xx01 = data port + + // See L4VB16.hpp, class SVGA16 for an enumeration of palettes + // matching this table. + + static Word port_addr[PaletteCount] = { + 0x3C6, // NativePalette + 0x300+2, // SecondaryPalette + 0x308+2, // AuxiliaryPalette1 + 0x310+2 // AuxiliaryPalette2 + }; + + SVGA16Palette + *palette_pointer = &palette[0]; + for(int i=0; ihardwarePort = port_addr[i]; + palette_pointer->modified = False; + palette_pointer->flashAccumulator = 0.0; + palette_pointer->flashRate = 0.0; + palette_pointer->previousMaskState = -1; + + for(j=0; jmask[j] = 0xFF; + } + + if (port_addr[i] != 0x3C6) + { + SVGAZeroPalette(port_addr[i]); + } + } + //--------------------------------------------------------- + // Prepare update values + //--------------------------------------------------------- + currentPageNumber = -1; + + ResetUpdatePosition(); + +# if defined(BLIT_STATISTICS) + dirtyPixelCount = 0; + transferPixelCount = 0; + overflowPixelCount = 0; +# endif + //--------------------------------------------------------- + // Clear the display + //--------------------------------------------------------- +# if defined(DEBUG) + Tell("Valid, drawing rectangle-\n" << flush); +# endif + DrawFilledRectangle( + 0, + 0xFFFF, + GraphicsDisplay::Replace, + 0, 0, + maximumX, maximumY + ); +# if defined(DEBUG) + Tell("About to update-\n" << flush); +# endif + Update(False); + Check_Fpu(); +} + +SVGA16::~SVGA16() +{ +# if defined(DEBUG) + Tell("SVGA16::~SVGA16()\n"); +# endif + Check(this); + //--------------------------------------------------------- + // Eventually wait for fade (if any) to complete?? + //--------------------------------------------------------- + + //--------------------------------------------------------- + // Set video mode + //--------------------------------------------------------- + SVGASetMode(3, 0); +# if defined(BLIT_STATISTICS) + double + ratio; + + if (transferPixelCount == 0) + { + ratio = (double) 0; + } + else + { + ratio = ((double) dirtyPixelCount) / transferPixelCount; + } + + //------------------------------------------------------ + // Print statistics + //------------------------------------------------------ + DEBUG_STREAM << + "SVGA16::~SVGA16: pixel management statistics ------------" << + "\nNumber of dirty pixels =" << dirtyPixelCount << + "\nNumber of transferred pixels=" << transferPixelCount << + "\nTimes overflowed =" << overflowPixelCount << + "\nRatio =" << ratio << + "\n-------------------------------------------------------\n"; +# endif + //--------------------------------------------------------- + // Set VWE video splitter clock divider + //--------------------------------------------------------- + SVGASetSplitterClock(False); + Check_Fpu(); +} + +Logical + SVGA16::TestInstance() const +{ + return Video16BitBuffered::TestInstance(); +} + +void + SVGA16::ShowInstance(char *indent) +{ + cout << indent << "SVGA16:\n"; + + char + temp[80]; + + Str_Copy(temp,indent, 80); + Str_Cat(temp,"...", 80); + + cout << temp << "SVGA16:\n"; + Video16BitBuffered::ShowInstance(temp); + Check_Fpu(); +} + +Logical + SVGA16::Update(Logical forceAll) +{ + SET_SCREEN_COPY(); + Diag_Tell("SVGA16::Update(" << forceAll << ")\n"); + Check(this); + + //--------------------------------------------------------- + // If pixelbuffer is invalid, do nothing + //--------------------------------------------------------- + if (!valid) + { + CLEAR_SCREEN_COPY(); + return False; // Do no more! + } + //--------------------------------------------------------- + // Mark all lines as changed if commanded + //--------------------------------------------------------- + if (forceAll) + { + memset(changedLine, 1, height); + } + + int + previous_line_number = lineNumber; + + long + dest_size, + dest_line_size; + + //--------------------------------------------------------- + // Calculate sizes based on specialInterface + //--------------------------------------------------------- + if (specialInterface) + { + dest_size = 32L; // BYTE offset! + dest_line_size = width; + } + else + { + dest_size = 32L << 1; // WORD offset! + dest_line_size = width << 1; + } + //--------------------------------------------------------- + // Process lines for as long as we can + //--------------------------------------------------------- +#if 0 // Let's process just a few lines for background loop processing... + while (Get_Frame_Percent_Used() < .65f) +#endif + { + //--------------------------------------------------------- + // Do a couple of lines before checking time again + //--------------------------------------------------------- + for(int line_limit=15; line_limit > 0; ) + { + //--------------------------------------------------------- + // Check for changed line, clear the flag + //--------------------------------------------------------- + Verify(changedLinePointer < &changedLine[height]); + + int + changed_line = *changedLinePointer; + *changedLinePointer++ = 0; + + if (changed_line) + { + Diag_Tell(height << ":"); + //--------------------------------------------------------- + // Pixels on this line have been changed + //--------------------------------------------------------- + --line_limit; + //--------------------------------------------------------- + // Check 'dirty' LWords: if set, scan for changed pixels + //--------------------------------------------------------- + for(int x=0; x= pageSize) + { + destOffset -= pageSize; + nextPageNumber += pageDelta; + } + } + Diag_Tell("\n"); + } + else + { + //--------------------------------------------------------- + // Line has not changed, skip over it + //--------------------------------------------------------- +#if defined(CHECK_FOR_DIRT) + Logical + dirty_flag = False; + + for(int x=0; x= pageSize) + { + destOffset -= pageSize; + nextPageNumber += pageDelta; + } + } + if (dirty_flag) + { + Tell( + "SVGA16::Update: Unexpected dirty bits in line " << + lineNumber << + "\n!" + ); + } +#else + changedBitPointer += changedBitWidth; + sourcePointer += width; + destOffset += dest_line_size; + + if (destOffset >= pageSize) + { + destOffset -= pageSize; + nextPageNumber += pageDelta; + } +#endif + } + +# if defined(BLIT_STATISTICS) + //--------------------------------- + // Keep values within a sane range + //--------------------------------- + if ( + (transferPixelCount > 0x10000000) + || + (dirtyPixelCount > 0x10000000) + ) + { + transferPixelCount >>= 1; + dirtyPixelCount >>= 1; + ++overflowPixelCount; + } +# endif + //--------------------------------------------------------- + // Check for wrap + //--------------------------------------------------------- + if (++lineNumber >= height) + { + ResetUpdatePosition(); + } + //--------------------------------------------------------- + // If back to beginning, exit loop + //--------------------------------------------------------- + if (lineNumber == previous_line_number) + { + Check_Fpu(); + CLEAR_SCREEN_COPY(); + return False; // All done + } + } + } + Check_Fpu(); + CLEAR_SCREEN_COPY(); + return True; // True == 'more to do' +} + +void + SVGA16::ResetUpdatePosition() +{ + lineNumber = 0; + + sourcePointer = pixelBuffer.Data.MapPointer; + + changedLinePointer = changedLine; + changedBitPointer = changedBit; + + nextPageNumber = 0; + destOffset = 0L; +} + +void + SVGA16::FadeToPalettes(Scalar fade_time) +{ + Check(this); + + previousFadeTime = Now(); + paletteFadeState = fadeToColor; + + if(Small_Enough(fade_time)) + { + fadeUnitsPerSecond = 0.0; + fadeAlpha = 1.0; + } + else + { + fadeUnitsPerSecond = (1.0/fade_time); + } + Check_Fpu(); +} + +void + SVGA16::FadeToWhite(Scalar fade_time) +{ + Check(this); + + previousFadeTime = Now(); + paletteFadeState = fadeToWhite; + + if(Small_Enough(fade_time)) + { + fadeUnitsPerSecond = 0.0; + fadeAlpha = 0.0; + } + else + { + fadeUnitsPerSecond = (1.0/fade_time); + } + Check_Fpu(); +} + +void + generateFade( + SVGA16Palette *source, + Scalar alpha + ) +{ + Check_Pointer(source); + + if (alpha < 0.0) + { + alpha = 0.0; + } + else if (alpha > 1.0) + { + alpha = 1.0; + } + + Palette8 + temp; +// Scalar +// inverse_alpha = (1.0 - alpha) * 255.0; + int + i; + + for(i=0; i<256; ++i) + { + temp.Color[i].Red = (Byte) +// (inverse_alpha + (source->paletteData.Color[i].Red * alpha)); + ((source->paletteData.Color[i].Red * alpha)); + temp.Color[i].Green = (Byte) +// (inverse_alpha + (source->paletteData.Color[i].Green * alpha)); + ((source->paletteData.Color[i].Green * alpha)); + temp.Color[i].Blue = (Byte) +// (inverse_alpha + (source->paletteData.Color[i].Blue * alpha)); + ((source->paletteData.Color[i].Blue * alpha)); + } + + SVGAWriteFullPalette( // in L4SVGA16.ASM + &temp.Color[0].Red, + source->hardwarePort + ); + Check_Fpu(); +} + +void + SVGA16::FlashPalette( + int palette_number, + Scalar rate, + unsigned char *stateList + ) +{ + Check(this); + Verify(palette_number >= 0); + Verify(palette_number < PaletteCount); + + SVGA16Palette + *palette_pointer = &palette[palette_number]; + + //------------------------------------------------- + // Adjust rate so value becomes "cycles per second" + //------------------------------------------------- + palette_pointer->flashRate = rate * (Scalar) SVGA16Palette::maskStates; + //------------------------------------------------- + // Copy the mask values + //------------------------------------------------- + for (int i=0; imask[i] = *stateList++; + } + Check_Fpu(); +} + +void + SVGA16::UnflashPalette( + int palette_number + ) +{ + Check(this); + Verify(palette_number >= 0); + Verify(palette_number < PaletteCount); + + SVGA16Palette + *palette_pointer = &palette[palette_number]; + + palette_pointer->flashRate = 0.0; + palette_pointer->flashAccumulator = 0.0; + palette_pointer->previousMaskState = -1; + SVGAWritePaletteMask(palette_pointer->hardwarePort, 0xFF); + + Check_Fpu(); +} + +void + SVGA16::UpdatePalette() +{ + Check(this); + + int + i, + mask_state; + SVGA16Palette + *palette_pointer; + + //-------------------------------------------------------- + // Update time values + //-------------------------------------------------------- + Time + right_now = Now(); + Scalar + delta_t = (Scalar) (right_now - previousFadeTime); + + previousFadeTime = right_now; + if (delta_t <= 0.0) + { + return; + } + //-------------------------------------------------------- + // Set palette masks + //-------------------------------------------------------- + palette_pointer = &palette[0]; + for(i=0; iflashRate != 0.0) + { + palette_pointer->flashAccumulator += + palette_pointer->flashRate * delta_t; + + while (palette_pointer->flashAccumulator >= + (Scalar) SVGA16Palette::maskStates) + { + palette_pointer->flashAccumulator -= + (Scalar) SVGA16Palette::maskStates; + } + + mask_state = (int) palette_pointer->flashAccumulator; + + if (mask_state != palette_pointer->previousMaskState) + { + palette_pointer->previousMaskState = mask_state; + + SVGAWritePaletteMask( + palette_pointer->hardwarePort, + palette_pointer->mask[mask_state] + ); + } + } + } + //-------------------------------------------------------- + // Fade palettes + //-------------------------------------------------------- + palette_pointer = &palette[0]; + for(i=0; imodified) + { + palette_pointer->modified = False; + + SVGAWriteFullPalette( + &palette_pointer->paletteData.Color[0].Red, + palette_pointer->hardwarePort + ); + } + } + else + { + //-------------------------------------------------------- + // Discard 'modified' flag (we use the local values for + // fade in/out, and in the 'white' state we don't care, + // because we'll have to fade back in anyway) + //-------------------------------------------------------- + palette_pointer->modified = False; + //-------------------------------------------------------- + // Perform fade (or stay white) + //-------------------------------------------------------- + switch(paletteFadeState) + { + case fadeToWhite: + fadeAlpha -= (delta_t * fadeUnitsPerSecond); + generateFade(palette_pointer, fadeAlpha); + + if (fadeAlpha <= 0.0) + { + fadeAlpha = 0.0; + paletteFadeState = whitePalette; + } + break; + + case whitePalette: + break; + + case fadeToColor: + fadeAlpha += (delta_t * fadeUnitsPerSecond); + generateFade(palette_pointer, fadeAlpha); + + if (fadeAlpha >= 1.0) + { + fadeAlpha = 1.0; + paletteFadeState = staticPalette; + } + break; + } + } + } + Check_Fpu(); +} + +void + SVGA16::FunkyVideo(Logical on_off) +{ + Check(this); + SVGAFunkyVideo(on_off); + Check_Fpu(); +} + +//######################################################################## +//########################### L4GraphicsPort ############################# +//######################################################################## + +L4GraphicsPort::L4GraphicsPort( + Video16BitBuffered *graphics_display, + const char *name, + int rotation, + int bit_mask, + SVGA16::PaletteID palette_ID, + L4GraphicsPort::ChannelEnableID channel_enable +):GraphicsPort(graphics_display, name) +{ + int + bit_test; + // + // Save the base rotation value + // + baseRotation = rotation; + // + // Save the paletteID and channel enable + // + paletteID = palette_ID; + channelEnable = channel_enable; + // + // Save the bitMask + // + bitMask = bit_mask; + Verify (bitMask != 0); + // + // Count the number of active bits in the bitMask + // + for(bit_test=0x8000,numberOfBits=0; bit_test!=0; bit_test>>=1) + { + if (bit_test & bitMask) + { + ++numberOfBits; + } + } + // + // Initialize conversion constants + // + maximumX = bounds.topRight.x - bounds.bottomLeft.x; + maximumY = bounds.topRight.y - bounds.bottomLeft.y; + // + // Overwrite the GraphicsPort::bounds data with rotated values + // for GraphView's benefit + // + switch(baseRotation) + { + default: + // do nothing + break; + + case 90: + case 270: + if (graphics_display != NULL) + { + Check(graphics_display); + bounds.bottomLeft.x = graphics_display->bounds.bottomLeft.y; + bounds.bottomLeft.y = graphics_display->bounds.bottomLeft.x; + bounds.topRight.x = graphics_display->bounds.topRight.y; + bounds.topRight.y = graphics_display->bounds.topRight.x; + } + break; + } + + for(int j=0; j<256; ++j) + { + myColor[j] = NULL; + } + + Check_Fpu(); +} + +L4GraphicsPort::~L4GraphicsPort() +{ + Check(this); + Check_Fpu(); +} + +Logical + L4GraphicsPort::TestInstance() const +{ + return True; +} + +void + L4GraphicsPort::ShowInstance(char *indent) +{ + Check(this); + + cout << indent << "L4GraphicsPort:\n"; + + char + temp[80]; + + Str_Copy(temp,indent, 80); + Str_Cat(temp,"...", 80); + + cout << temp << "bitMask =" << bitMask << "\n"; + cout << temp << "baseRotation =" << baseRotation << "\n"; + cout << temp << "maximumX =" << maximumX << "\n"; + cout << temp << "maximumY =" << maximumY << "\n"; + cout << temp << "bounds =" << bounds << "\n"; + cout << flush; + GraphicsPort::ShowInstance(temp); + Check_Fpu(); +} + +void + L4GraphicsPort::SetColor( + PaletteTriplet *source_triplet, + int color_index + ) +{ + Check(this); + Check_Pointer(source_triplet); + Verify(color_index >= 0); + Verify(color_index < 256); + + switch(channelEnable) + { + case L4GraphicsPort::DirectColor: + case L4GraphicsPort::BlankColor: + break; + default: + BuildSecondaryColor(source_triplet, color_index); + break; + } + Check_Fpu(); +} + +void + L4GraphicsPort::SetSecondaryPalette( + Palette8 *source_palette + ) +{ + Check(this); + Check(source_palette); + + if (graphicsDisplay == NULL) + { + return; + } + + switch(channelEnable) + { + case L4GraphicsPort::DirectColor: + BuildDirectTranslation(source_palette); + break; + case L4GraphicsPort::BlankColor: + BlankPalette(); + BuildSecondaryTranslation(); + break; + default: + BuildSecondaryPalette(source_palette); + BuildSecondaryTranslation(); + break; + } + Check_Fpu(); +} + + +void + L4GraphicsPort::SetAuxiliaryPalette() +{ + Check(this); + + if (graphicsDisplay == NULL) + { + return; + } + + switch(channelEnable) + { + case L4GraphicsPort::DirectColor: + //--------------------------------------------------------------- + // Set translation table for direct color mode + //--------------------------------------------------------------- + { + Palette8 + monochrome_palette; + + PaletteTriplet + black, + white; + + black.Red = 0; + black.Green = 0; + black.Blue = 0; + + white.Red = 255; + white.Green = 255; + white.Blue = 255; + + monochrome_palette.BuildColorRange(0,255,black, white); + + BuildDirectTranslation(&monochrome_palette); + } + break; + + case L4GraphicsPort::BlankColor: + BlankPalette(); + BuildAuxiliaryTranslation(); + break; + + default: + BuildAuxiliaryPalette(); + BuildAuxiliaryTranslation(); + break; + } + Check_Fpu(); +} + + +void + L4GraphicsPort::DrawPoint( + int color, + Enumeration operation, + int x, int y + ) +{ + Check(this); + + if (graphicsDisplay == NULL) + { + Check_Fpu(); + return; + } + + Check(graphicsDisplay); + + int + xp, yp; + + convertPortPair(&xp, &yp, x, y); + + graphicsDisplay-> + DrawPoint( + translationTable[color], + bitMask, + operation, + xp+bounds.bottomLeft.x, yp+bounds.bottomLeft.y + ); + Check_Fpu(); +} + +void + L4GraphicsPort::DrawLine( + int color, + Enumeration operation, + int x1, int y1, + int x2, int y2, + Logical include_last_pixel + ) +{ + Check(this); + + if (graphicsDisplay == NULL) + { + Check_Fpu(); + return; + } + + Check(graphicsDisplay); + + int + x1p, y1p, + x2p, y2p; + + convertPortPair(&x1p, &y1p, x1, y1); + convertPortPair(&x2p, &y2p, x2, y2); + + graphicsDisplay-> + DrawLine( + translationTable[color], + bitMask, + operation, + x1p+bounds.bottomLeft.x, y1p+bounds.bottomLeft.y, + x2p+bounds.bottomLeft.x, y2p+bounds.bottomLeft.y, + include_last_pixel + ); + Check_Fpu(); +} + +void + L4GraphicsPort::DrawFilledRectangle( + int color, + Enumeration operation, + int x1, int y1, + int x2, int y2 + ) +{ + Check(this); + + if (graphicsDisplay == NULL) + { + Check_Fpu(); + return; + } + + Check(graphicsDisplay); + + int + x1p, y1p, + x2p, y2p; + + convertPortPair(&x1p, &y1p, x1, y1); + convertPortPair(&x2p, &y2p, x2, y2); + + graphicsDisplay-> + DrawFilledRectangle( + translationTable[color], + bitMask, + operation, + x1p+bounds.bottomLeft.x, y1p+bounds.bottomLeft.y, + x2p+bounds.bottomLeft.x, y2p+bounds.bottomLeft.y + ); + Check_Fpu(); +} + +void + L4GraphicsPort::DrawText( + int /*color*/, + Enumeration /*operation*/, + Logical /*opaque*/, + int /*rotation*/, + Enumeration /*fontNumber*/, + Logical /*vertical*/, + GraphicsDisplay::Justification /*justification*/, + Rectangle2D */*clippingRectanglepointer*/, + char */*stringPointer*/ + ) +{ +} + +void + L4GraphicsPort::DrawBitMap( + int color, + Enumeration operation, + int rotation, + int x, int y, + BitMap *bitmap, + int sLeft, int sBottom, int sRight, int sTop + ) +{ + Check(this); + + if (graphicsDisplay == NULL) + { + Check_Fpu(); + return; + } + + Check(graphicsDisplay); + + if (bitmap == NULL) + { + Check_Fpu(); + return; + } + + if (bitmap->Data.MapPointer == NULL) + { + Check_Fpu(); + return; + } + + Check(bitmap); + + int + xp, yp; + + convertPortPair(&xp, &yp, x, y); + + rotation += baseRotation; + while (rotation < 0) { rotation += 360; } + while (rotation >= 360) { rotation -= 360; } + + graphicsDisplay-> + DrawBitMap( + translationTable[color], + bitMask, + operation, + rotation, + xp+bounds.bottomLeft.x, yp+bounds.bottomLeft.y, + bitmap, + sLeft, sBottom, sRight, sTop + ); + Check_Fpu(); +} + +void + L4GraphicsPort::DrawBitMapOpaque( + int color, + int background, + Enumeration operation, + int rotation, + int x, int y, + BitMap *bitmap, + int sLeft, int sBottom, int sRight, int sTop + ) +{ + Check(this); + + if (graphicsDisplay == NULL) + { + Check_Fpu(); + return; + } + + Check(graphicsDisplay); + + if (bitmap == NULL) + { + Check_Fpu(); + return; + } + + if (bitmap->Data.MapPointer == NULL) + { + Check_Fpu(); + return; + } + + Check(bitmap); + + int + xp, yp; + + convertPortPair(&xp, &yp, x, y); + + rotation += baseRotation; + while (rotation < 0) { rotation += 360; } + while (rotation >= 360) { rotation -= 360; } + + graphicsDisplay-> + DrawBitMapOpaque( + translationTable[color], + translationTable[background], + bitMask, + operation, + rotation, + xp+bounds.bottomLeft.x, yp+bounds.bottomLeft.y, + bitmap, + sLeft, sBottom, sRight, sTop + ); +} + +void + L4GraphicsPort::DrawPixelMap8( + Enumeration operation, + Logical opaque, + int rotation, + int x, int y, + PixelMap8 *pixelmap, + int sLeft, int sBottom, int sRight, int sTop + ) +{ + Check(this); + + if (graphicsDisplay == NULL) + { + Check_Fpu(); + return; + } + + Check(graphicsDisplay); + + if (pixelmap == NULL) + { + Check_Fpu(); + return; + } + + if (pixelmap->Data.MapPointer == NULL) + { + Check_Fpu(); + return; + } + + Check(pixelmap); + + int + xp, yp; + + convertPortPair(&xp, &yp, x, y); + + rotation += baseRotation; + while (rotation < 0) { rotation += 360; } + while (rotation >= 360) { rotation -= 360; } + + graphicsDisplay-> + DrawPixelMap8( + translationTable, + bitMask, + operation, + opaque, + rotation, + xp+bounds.bottomLeft.x, yp+bounds.bottomLeft.y, + pixelmap, + sLeft, sBottom, sRight, sTop + ); + Check_Fpu(); +} + +void + L4GraphicsPort::DrawPixelMap8SingleColor( + int color, + Enumeration operation, + int rotation, + int x, int y, + PixelMap8 *pixelmap, + int sLeft, int sBottom, int sRight, int sTop + ) +{ + Check(this); + + if (graphicsDisplay == NULL) + { + Check_Fpu(); + return; + } + + Check(graphicsDisplay); + + if (pixelmap == NULL) + { + Check_Fpu(); + return; + } + + if (pixelmap->Data.MapPointer == NULL) + { + Check_Fpu(); + return; + } + + Check(pixelmap); + + int + xp, yp; + + convertPortPair(&xp, &yp, x, y); + + rotation += baseRotation; + while (rotation < 0) { rotation += 360; } + while (rotation >= 360) { rotation -= 360; } + + graphicsDisplay-> + DrawPixelMap8SingleColor( + translationTable[color], + bitMask, + operation, + rotation, + xp+bounds.bottomLeft.x, yp+bounds.bottomLeft.y, + pixelmap, + sLeft, sBottom, sRight, sTop + ); + Check_Fpu(); +} + +void + L4GraphicsPort::convertPortPair( + int *xp, + int *yp, + int x, + int y + ) +{ + switch(baseRotation) + { + default: + *xp = x; + *yp = y; + break; + + case 90: + *xp = y; + *yp = maximumY - x; + break; + + case 180: + *xp = maximumX - x; + *yp = maximumY - y; + break; + + case 270: + *xp = maximumX - y; + *yp = x; + break; + } + Check_Fpu(); +} + +// +//--------------------------------------------------------------------------- +// This method generates a translation table specifically for writing +// to a "direct" color mode display, in which colors are represented +// as 5 red bits, 6 green bits, and 5 blue bits in a display word. +//--------------------------------------------------------------------------- +// +void + L4GraphicsPort::BuildDirectTranslation( + Palette8 *source_palette + ) +{ + PaletteTriplet + *source_data(source_palette->Color); + + int + *dest(translationTable); + + int + red_bits, + green_bits, + blue_bits, + i; + + // + // Force to all bits (just to be sure) + // + bitMask = 0xFFFF; + + for(i=256; i>0; --i,++source_data) + { + red_bits = source_data->Red >> 3; + green_bits = source_data->Green >> 2; + blue_bits = source_data->Blue >> 3; + + *dest++ = (red_bits << 11)|(green_bits << 5) | blue_bits; + } + Check_Fpu(); +} + +// +//--------------------------------------------------------------------------- +// This method combines palettes from multiple L4GraphicsPorts. +// If several ports have palettes mapped onto the same RGB display, then +// the most recently built palette has precedence over the previous one(s). +// +// Palettes are assumed to always have 256 colors. +//--------------------------------------------------------------------------- +// +void + L4GraphicsPort::BuildSecondaryPalette( + Palette8 *source_palette + ) +{ + Verify (bitMask != 0); + + if (graphicsDisplay == NULL) + { + return; + } + Check(graphicsDisplay); + Check(source_palette); + + + int + byte_mask(bitMask & 0xFF); + Verify (byte_mask != 0); + + BitWrangler + wrangler(byte_mask, 8); + + PaletteTriplet + *source_triplet, + *destination_triplet; + + SVGA16Palette + *svga_palette(&((SVGA16 *) graphicsDisplay)->palette[paletteID]); + + source_triplet = &source_palette->Color[0]; + + //------------------------------------------- + // Clear the 'owned color' flags + //------------------------------------------- + for(int j=0; j<256; ++j) + { + myColor[wrangler.Value] = 0; + } + + // + // If any of the ...TransparentZero modes are used, + // leave color zero undefined for this bit group by + // skipping over it + // + if (channelEnable & 0x80) + { + ++source_triplet; + wrangler.IncrementActive(); + } + + // + // Fill in the color table for this palette set + // + do + { + //------------------------------------------- + // Write all destination colors + //------------------------------------------- + do + { + //------------------------------------------- + // Set the 'owned color' flag + //------------------------------------------- + myColor[wrangler.Value] = 1; + //------------------------------------------- + // Get destination pointer + //------------------------------------------- + destination_triplet = + &svga_palette->paletteData.Color[wrangler.Value]; + //------------------------------------------- + // Copy color data + //------------------------------------------- + switch(channelEnable) + { + case RedChannel: + case RedChannelTransparentZero: + destination_triplet->Red = source_triplet->Red; + break; + + case GreenChannel: + case GreenChannelTransparentZero: + destination_triplet->Green = source_triplet->Green; + break; + + case BlueChannel: + case BlueChannelTransparentZero: + destination_triplet->Blue = source_triplet->Blue; + break; + + case AllChannels: + case AllChannelsTransparentZero: + *destination_triplet = *source_triplet; + break; + } + } + while (wrangler.IncrementInactive()); + //------------------------------------------- + // Bump the source pointer + //------------------------------------------- + ++source_triplet; + } + while (wrangler.IncrementActive()); + + svga_palette->paletteData.Valid = True; + svga_palette->modified = True; + + Check_Fpu(); +} + +// +//--------------------------------------------------------------------------- +// This method combines palettes from multiple L4GraphicsPorts. +// If several ports have palettes mapped onto the same RGB display, then +// the most recently built palette has precedence over the previous one(s). +// +// Palettes are assumed to always have 256 colors. +//--------------------------------------------------------------------------- +// +void + L4GraphicsPort::BuildSecondaryColor( + PaletteTriplet *source_triplet, + int dest_color_number + ) +{ + Verify (bitMask != 0); + + if (graphicsDisplay == NULL) + { + return; + } + Check(graphicsDisplay); + Check_Pointer(source_triplet); + + int + byte_mask(bitMask & 0xFF); + Verify (byte_mask != 0); + + BitWrangler + wrangler(byte_mask, 8); + + int + destination_color = 0; + + PaletteTriplet + *destination_triplet; + + SVGA16Palette + *svga_palette(&((SVGA16 *) graphicsDisplay)->palette[paletteID]); + + //------------------------------------------- + // If any of the ...TransparentZero modes are used, + // leave color zero undefined for this bit group by + // skipping over it + //------------------------------------------- + if (channelEnable & 0x80) + { + ++destination_color; + wrangler.IncrementActive(); + } + + //------------------------------------------- + // Set the color value + //------------------------------------------- + do + { + //------------------------------------------- + // Write all destination colors + //------------------------------------------- + if (destination_color == dest_color_number) + { + //------------------------------------------- + // Write all destination colors + //------------------------------------------- + do + { + //------------------------------------------- + // Do we own this color? Skip if unowned + //------------------------------------------- + if (myColor[wrangler.Value]) + { + //------------------------------------------- + // Copy color data + //------------------------------------------- + destination_triplet = + &svga_palette->paletteData.Color[wrangler.Value]; + + switch(channelEnable) + { + case RedChannel: + case RedChannelTransparentZero: + destination_triplet->Red = source_triplet->Red; + break; + + case GreenChannel: + case GreenChannelTransparentZero: + destination_triplet->Green = source_triplet->Green; + break; + + case BlueChannel: + case BlueChannelTransparentZero: + destination_triplet->Blue = source_triplet->Blue; + break; + + case AllChannels: + case AllChannelsTransparentZero: + *destination_triplet = *source_triplet; + break; + } + } + } + while (wrangler.IncrementInactive()); + //------------------------------------------- + // Only doing one color, so exit the loop + //------------------------------------------- + break; + } + //------------------------------------------- + // Bump the color counter + //------------------------------------------- + ++destination_color; + } + while (wrangler.IncrementActive()); + + svga_palette->paletteData.Valid = True; + svga_palette->modified = True; + + Check_Fpu(); +} + +// +//--------------------------------------------------------------------------- +// This method combines palettes from multiple L4GraphicsPorts. +// If several ports have palettes mapped on top of another, then +// the most recently built palette has precedence over the previous one(s). +//--------------------------------------------------------------------------- +// +void + L4GraphicsPort::BuildAuxiliaryPalette() +{ + Verify (bitMask != 0); + + if (graphicsDisplay == NULL) + { + return; + } + Check(graphicsDisplay); + + + int + byte_mask((bitMask >> 8) & 0xFF); + + Verify (byte_mask != 0); + BitWrangler + wrangler(byte_mask, 8); + + int + rate, + accumulator; + + Byte + color_value; + + PaletteTriplet + *destination_triplet; + + SVGA16Palette + *svga_palette(&((SVGA16 *) graphicsDisplay)->palette[paletteID]); + + Verify(((1< 0); + rate = (255<<5)/((1<> 5); + accumulator += rate; + + do + { + destination_triplet = &svga_palette->paletteData. + Color[wrangler.Value]; + + switch(channelEnable) + { + case RedChannel: + case RedChannelTransparentZero: + destination_triplet->Red = color_value; + break; + + case GreenChannel: + case GreenChannelTransparentZero: + destination_triplet->Green = color_value; + break; + + case BlueChannel: + case BlueChannelTransparentZero: + destination_triplet->Blue = color_value; + break; + + case AllChannels: + case AllChannelsTransparentZero: + destination_triplet->Red = color_value; + destination_triplet->Green = color_value; + destination_triplet->Blue = color_value; + break; + } + } + while (wrangler.IncrementInactive()); + } + while (wrangler.IncrementActive()); + + svga_palette->paletteData.Valid = True; + svga_palette->modified = True; + +# if defined(TESTPALETTE) + cout << "L4GraphicsPort::BuildAuxiliaryPalette for port " << + hex << svga_palette->hardwarePort << "\n"; + for(int i=0; i<256; ++i) + { + if ((i & 0x03) == 0) + { + cout << dec << "\n" << i << ":" << hex; + } + cout << svga_palette->paletteData.Color[i] << " "; + } + cout << "\n"; + { + Palette8 + temp; + + SVGAReadFullPalette( + &temp.Color[0].Red, + svga_palette->hardwarePort + ); + + cout << "L4GraphicsPort::BuildAuxiliaryPalette, read back\n"; + for(int i=0; i<256; ++i) + { + if ((i & 0x03) == 0) + { + cout << dec << "\n" << i << ":" << hex; + } + cout << temp.Color[i] << " "; + } + cout << "\n"; + } +# endif + Check_Fpu(); +} + +// +//--------------------------------------------------------------------------- +// This sets 'owned' color values in a palette to zero. +//--------------------------------------------------------------------------- +// +void + L4GraphicsPort::BlankPalette() +{ + Verify (bitMask != 0); + + if (graphicsDisplay == NULL) + { + return; + } + Check(graphicsDisplay); + + int + byte_mask((bitMask >> 8) & 0xFF); + + Verify (byte_mask != 0); + BitWrangler + wrangler(byte_mask, 8); + + Byte + color_value; + + PaletteTriplet + *destination_triplet; + + SVGA16Palette + *svga_palette(&((SVGA16 *) graphicsDisplay)->palette[paletteID]); + + Verify(((1< 0); + + color_value = 0; + do + { + do + { + destination_triplet = &svga_palette->paletteData. + Color[wrangler.Value]; + + switch(channelEnable) + { + case RedChannel: + case RedChannelTransparentZero: + destination_triplet->Red = color_value; + break; + + case GreenChannel: + case GreenChannelTransparentZero: + destination_triplet->Green = color_value; + break; + + case BlueChannel: + case BlueChannelTransparentZero: + destination_triplet->Blue = color_value; + break; + + case AllChannels: + case AllChannelsTransparentZero: + destination_triplet->Red = color_value; + destination_triplet->Green = color_value; + destination_triplet->Blue = color_value; + break; + } + } + while (wrangler.IncrementInactive()); + } + while (wrangler.IncrementActive()); + + svga_palette->paletteData.Valid = True; + svga_palette->modified = True; + + Check_Fpu(); +} + +// +//--------------------------------------------------------------------------- +// This method generates a translation table for the secondary display, +// using a previously set palette and channel. +// +// Palettes are assumed to always have 256 colors. +//--------------------------------------------------------------------------- +// +void + L4GraphicsPort::BuildSecondaryTranslation() +{ + Verify((bitMask & 0xFF) != 0); + + BitWrangler + wrangler(bitMask & 0xFF, 8); + + int + *destination(translationTable); + + do + { + *destination++ = wrangler.Value; + } + while (wrangler.IncrementActive()); + Check_Fpu(); +} + + +// +//--------------------------------------------------------------------------- +// This method generates a translation table for the auxiliary displays. +// +// Palettes are assumed to always have 256 colors (0=black, 255=white). +//--------------------------------------------------------------------------- +// +void + L4GraphicsPort::BuildAuxiliaryTranslation() +{ + Verify(numberOfBits != 0); + Verify(numberOfBits <= 8); + + int + byte_mask((bitMask >> 8) & 0xFF); + Verify(byte_mask != 0); + + BitWrangler + wrangler(byte_mask, 8); + int + *destination(translationTable); + int + currentValue; + + // + // Generate lookup table + // + do + { + currentValue = wrangler.Value << 8; + + do + { + *destination++ = currentValue; + } + while (wrangler.IncrementInactive()); + } + while (wrangler.IncrementActive()); + +# if defined(TESTPALETTE) + cout << "L4GraphicsPort::BuildAuxiliaryTranslation\n"; + for(int i=0; i<256; ++i) + { + if ((i & 0x07) == 0) + { + cout << "\n" << dec << i << ":" << hex; + } + cout << translationTable[i] << " "; + } + cout << "\n"; +# endif + Check_Fpu(); +} + + + + + + + + + + diff --git a/CODE/RP/MUNGA_L4/L4VB16.HPP b/CODE/RP/MUNGA_L4/L4VB16.HPP new file mode 100644 index 0000000..c2cef6e --- /dev/null +++ b/CODE/RP/MUNGA_L4/L4VB16.HPP @@ -0,0 +1,505 @@ +//===========================================================================// +// File: L4V16.hpp // +// Project: MUNGA Brick: Applications-specific controls module // +// Contents: Interface specification for 16-bit video display // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- -----------------------------------------------------------// +// 02/08/95 CPB Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. All rights reserved // +// PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(L4VB16_HPP) +# define L4VB16_HPP + +# if !defined(GRAPH2D_HPP) +# include +# endif + +# if !defined(TIME_HPP) +# include +# endif + + class L4graphicsPort; + + //######################################################################## + //######################### Video16BitBuffered ########################### + //######################################################################## + // + // X/Y values passed to these routines are assumed to be in + // the VIDEO DISPLAY COORDINATE SYSTEM, with (0,0) at the top left. + // + class Video16BitBuffered : + public GraphicsDisplay + { + public: + Video16BitBuffered(int x, int y); + + ~Video16BitBuffered(); + + Logical + TestInstance() const; + + void + ShowInstance(char *indent); + + void + DrawPoint( + int color, + int bitmask, + Enumeration operation, + int x, int y + ); + + void + DrawLine( + int color, + int bitmask, + Enumeration operation, + int x1, int y1, + int x2, int y2, + Logical include_last_pixel + ); + + void + DrawFilledRectangle( + int color, + int bitmask, + Enumeration operation, + int x1, int y1, + int x2, int y2 + ); + + void + DrawText( + int color, + int bitmask, + Enumeration operation, + Logical opaque, + int rotation, + Enumeration fontNumber, + Logical vertical, + GraphicsDisplay::Justification justification, + Rectangle2D *clippingRectanglePtr, + char *stringPointer + ); + + void + DrawBitMap( + int color, + int bitmask, + Enumeration operation, + int rotation, + int x, int y, + BitMap *bitmap, + int sx1, int sy1, int sx2, int sy2 // these are SOURCE coordinates + ); + + void + DrawBitMapOpaque( + int color, + int background, + int bitmask, + Enumeration operation, + int rotation, + int x, int y, + BitMap *bitmap, + int sx1, int sy1, int sx2, int sy2 // these are SOURCE coordinates + ); + + void + DrawPixelMap8( + int *translation_table, + int bitmask, + Enumeration operation, + Logical opaque, + int rotation, + int x, int y, + PixelMap8 *pixelmap, + int sx1, int sy1, int sx2, int sy2 // these are SOURCE coordinates + ); + + void + DrawPixelMap8SingleColor( + int color, + int bitmask, + Enumeration operation, + int rotation, + int x, int y, + PixelMap8 *pixelmap, + int sx1, int sy1, int sx2, int sy2 // these are SOURCE coordinates + ); + + protected: + void + MarkChangedLines(int screenTop, int screenBottom); + + void + buildDestPointer( + int x, int y, + Word **pixelPointer, + LWord **changed_bit_pointer, + LWord *changed_bit + ); + + Logical + valid; + int + width, + changedBitWidth, + height, + maximumX, + maximumY; + + PixelMap16 + pixelBuffer; + Byte + *changedLine; + LWord + *changedBit; + }; + + + //######################################################################## + //################################ SVGA16 ################################ + //######################################################################## + struct SVGA16Palette + { + Word + hardwarePort; + Logical + modified; + Palette8 + paletteData; + Scalar + flashAccumulator, + flashRate; + + enum PaletteID + { + maskStates=4 + }; + unsigned char + mask[maskStates]; + int + previousMaskState; + }; + + + class SVGA16 : + public Video16BitBuffered + { + friend class L4GraphicsPort; // for palette access + + public: + + enum PaletteID { + NativePalette=0, + SecondaryPalette, + AuxiliaryPalette1, + AuxiliaryPalette2, + PaletteCount + }; + + SVGA16( + int mode, + int width, + int height, + int page_size, + int mem_granularity, + int bytes_per_line, + int page_function_pointer, + int special_interface + ); + + ~SVGA16(); + + Logical + TestInstance() const; + + void + ShowInstance(char *indent); + + Logical + Update(Logical forceall); + void + UpdatePalette(); + + void + FadeToPalettes(Scalar fade_time); + void + FadeToWhite(Scalar fade_time); + void + FlashPalette( + int palette_number, + Scalar rate, + unsigned char *stateList + ); + void + UnflashPalette(int palette_number); + + void + FunkyVideo(Logical on_off); + + protected: + void + ResetUpdatePosition(); + + int + pageSize, + pageDelta, + widthInBytes, + pageFcnPtr, + specialInterface; + + int + currentPageNumber, + nextPageNumber, + lineNumber; + long + destOffset; + Byte + *changedLinePointer; + Word + *sourcePointer; + LWord + *changedBitPointer; + + enum PaletteFadeState + { + staticPalette, + fadeToWhite, + whitePalette, + fadeToColor + }; + + PaletteFadeState + paletteFadeState; + Scalar + fadeAlpha, + fadeUnitsPerSecond; + Time + previousFadeTime; + + // This array is closely linked to the PaletteID enumeration, above + SVGA16Palette + palette[PaletteCount]; + }; + + //######################################################################## + //########################## L4GraphicsPort ############################## + //######################################################################## + // + // X/Y values passed to these routines are assumed to be in + // the GRAPHICS COORDINATE SYSTEM, with (0,0) at the bottom left. + // + class L4GraphicsPort : + public GraphicsPort + { + public: + enum ChannelEnableID { + RedChannel, + GreenChannel, + BlueChannel, + AllChannels, + + DirectColor, + BlankColor, + + RedChannelTransparentZero=0x80, + GreenChannelTransparentZero, + BlueChannelTransparentZero, + AllChannelsTransparentZero + }; + + L4GraphicsPort( + Video16BitBuffered *graphics_display, + const char *name, + int rotation, + int bit_mask, + SVGA16::PaletteID palette_ID, + L4GraphicsPort::ChannelEnableID channel_enable + ); + + ~L4GraphicsPort(); + + Logical + TestInstance() const; + + void + ShowInstance(char *indent); + + void + SetSecondaryPalette( + Palette8 *source_palette + ); + + void + SetAuxiliaryPalette(); + + void + SetColor( + PaletteTriplet *source_color, + int color_index + ); + + void + DrawPoint( + int color, + Enumeration operation, + int x, int y + ); + + void + DrawLine( + int color, + Enumeration operation, + int x1, int y1, + int x2, int y2, + Logical include_last_pixel + ); + + void + DrawFilledRectangle( + int color, + Enumeration operation, + int x1, int y1, + int x2, int y2 + ); + + void + DrawText( + int color, + Enumeration operation, + Logical opaque, + int rotation, + Enumeration fontNumber, + Logical vertical, + GraphicsDisplay::Justification justification, + Rectangle2D *clippingRectanglePtr, + char *stringPointer + ); + + void + DrawBitMap( + int color, + Enumeration operation, + int rotation, + int x, int y, + BitMap *bitmap, + int sx1, int sy1, int sx2, int sy2 // these are SOURCE coordinates + ); + + void + DrawBitMapOpaque( + int color, + int background, + Enumeration operation, + int rotation, + int x, int y, + BitMap *bitmap, + int sx1, int sy1, int sx2, int sy2 // these are SOURCE coordinates + ); + + void + DrawPixelMap8( + Enumeration operation, + Logical opaque, + int rotation, + int x, int y, + PixelMap8 *pixelmap, + int sx1, int sy1, int sx2, int sy2 // these are SOURCE coordinates + ); + + void + DrawPixelMap8SingleColor( + int color, + Enumeration operation, + int rotation, + int x, int y, + PixelMap8 *pixelmap, + int sx1, int sy1, int sx2, int sy2 // these are SOURCE coordinates + ); + + void + SetPaletteID(SVGA16::PaletteID palette_ID) + { + Check(this); + paletteID = palette_ID; + } + + void + SetEnableID(L4GraphicsPort::ChannelEnableID channel_enable) + { + Check(this); + channelEnable = channel_enable; + } + + int + GetBitMask() + { + Check(this); + return bitMask; + } + + protected: + void + convertPortPair( + int *xp, + int *yp, + int x, + int y + ); + + void + BuildDirectTranslation( + Palette8 *source_palette + ); + + void + BuildSecondaryPalette( + Palette8 *source_palette + ); + + void + BuildAuxiliaryPalette(); + + void + BuildSecondaryTranslation(); + + void + BuildAuxiliaryTranslation(); + + void + BlankPalette(); + + void + BuildSecondaryColor( + PaletteTriplet *source_triplet, + int color_number + ); + //------------------------------------------------------------ + // Protected data + //------------------------------------------------------------ + int + translationTable[256]; + unsigned char + myColor[256]; + + int + baseRotation, + bitMask, + numberOfBits, + maximumX, + maximumY; + + SVGA16::PaletteID + paletteID; + + L4GraphicsPort::ChannelEnableID + channelEnable; + }; + +#endif diff --git a/CODE/RP/MUNGA_L4/L4VB8.CPP b/CODE/RP/MUNGA_L4/L4VB8.CPP new file mode 100644 index 0000000..d94b0b1 --- /dev/null +++ b/CODE/RP/MUNGA_L4/L4VB8.CPP @@ -0,0 +1,3035 @@ +//===========================================================================// +// File: L4vb16.cpp // +// Project: MUNGA Brick: Applications-specific controls module // +// Contents: Interface specification for buffered 16-bit display // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- -----------------------------------------------------------// +// 02/08/95 CPB Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. All rights reserved // +// PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(L4VB8_HPP) +# include +#endif + +//######################################################################## +//######################### Video8BitBuffered ########################### +//######################################################################## +// +//NOTE: the application assumes that the origin is in the lower left +// corner of the display, and all parameters passed to these routines +// use the application's coordinate system. +// +// All of the methods here convert these values to the SCREEN +// coordinate system, with the origin in the UPPER LEFT corner of +// the display. +// + +//=================================================================== +// Creator +//=================================================================== +Video8BitBuffered::Video8BitBuffered(int x, int y): + GraphicsDisplay(x, y) + { +# if defined(DEBUG) + Tell( + "Video8BitBuffered::Video8BitBuffered()\n" + ); +# endif + int + i; + Word + *line_dest; + + pixelBuffer = new PixelMap8(x, y); + Check(pixelBuffer); + Verify(pixelBuffer->Data.MapPointer != NULL); + Register_Object(pixelBuffer); + createdPixelmap = True; + + height = y; + width = x; + + maximumY = height-1; + maximumX = width-1; + //--------------------------------------------------------- + // Create 'changedLine' array + //--------------------------------------------------------- + changedLine = new Word[height]; + Register_Pointer(changedLine); + valid = True; + + //--------------------------------------------------------- + // Clear the 'changedLine' array + //--------------------------------------------------------- + for (i=height,line_dest=changedLine; i>0; --i,++line_dest) + { + *line_dest = 0; + } + Check_Fpu(); +} + +Video8BitBuffered::Video8BitBuffered(PixelMap8 *pixel_buffer): + GraphicsDisplay(pixel_buffer->Data.Size.x, pixel_buffer->Data.Size.y) +{ +# if defined(DEBUG) + Tell( + "Video8BitBuffered::Video8BitBuffered()\n" + ); +# endif + int + i; + Word + *line_dest; + + pixelBuffer = pixel_buffer; + Verify(pixelBuffer->Data.MapPointer != NULL); + createdPixelmap = False; + + height = pixelBuffer->Data.Size.y; + width = pixelBuffer->Data.Size.x; + + maximumY = height-1; + maximumX = width-1; + //--------------------------------------------------------- + // Create 'changedLine' array + //--------------------------------------------------------- + changedLine = new Word[height]; + Register_Pointer(changedLine); + +# if defined(DEBUG) + Tell("changedLine=" << changedLine << "\n"); +# endif + + if (changedLine == NULL) + { +# if defined(DEBUG) + Tell("INVALID!\n"); +# endif + valid = False; + return; + } + else + { + Register_Pointer(changedLine); + valid = True; + } + //--------------------------------------------------------- + // Clear the 'changedLine' array + //--------------------------------------------------------- + for (i=height,line_dest=changedLine; i>0; --i,++line_dest) + { + *line_dest = 0; + } + Check_Fpu(); +} + +//=================================================================== +// Destructor +//=================================================================== +Video8BitBuffered::~Video8BitBuffered() +{ + Check(this); + + if (changedLine != NULL) + { + Unregister_Pointer(changedLine); + delete changedLine; + changedLine = NULL; + } + + if (createdPixelmap) + { + if (pixelBuffer != NULL) + { + Check(pixelBuffer); + Unregister_Object(pixelBuffer); + delete pixelBuffer; + pixelBuffer = NULL; + } + createdPixelmap = False; + } + + Check_Fpu(); +} + + +//=================================================================== +// TestInstance +//=================================================================== +Logical + Video8BitBuffered::TestInstance() const +{ + return True; +} + +//=================================================================== +// ShowInstance +//=================================================================== +void + Video8BitBuffered::ShowInstance( + char *indent + ) +{ + cout << indent << "Video8BitBuffered:\n"; + + Check(this); + + char + temp[80]; + + Str_Copy(temp,indent, 80); + Str_Cat(temp,"...", 80); + + cout << temp << "width =" << width << "\n"; + cout << temp << "height =" << height << "\n"; + cout << temp << "maximumX =" << maximumX << "\n"; + cout << temp << "maximumY =" << maximumY << "\n"; + cout << temp << "changedLine=" << changedLine << "\n"; + + pixelBuffer->ShowInstance(temp); + GraphicsDisplay::ShowInstance(temp); + Check_Fpu(); +} + + +//=================================================================== +// buildDestPointer +//=================================================================== +void + Video8BitBuffered::buildDestPointer( + int screenX, + int screenY, + Byte **pixel_pointer + ) +{ + Verify(valid); + + Verify(pixel_pointer != NULL); + + Verify(screenX >= 0); + Verify(screenX < width); + Verify(screenY >= 0); + Verify(screenY < height); + + *pixel_pointer = pixelBuffer->Data.MapPointer + + screenX + + (screenY * width); + Verify(*pixel_pointer >= pixelBuffer->Data.MapPointer); + Verify(*pixel_pointer < &pixelBuffer->Data.MapPointer[height*width]); + + Check_Fpu(); +} +#define LEFT_DEST(pointer) --pointer +#define RIGHT_DEST(pointer) ++pointer +#define UP_DEST(pointer) pointer -= width +#define DOWN_DEST(pointer) pointer += width + +#define LEFT_SOURCE(pointer,map) --pointer +#define RIGHT_SOURCE(pointer,map) ++pointer +#define UP_SOURCE(pointer,map) pointer -= map->Data.Size.x +#define DOWN_SOURCE(pointer,map) pointer += map->Data.Size.x + +#define LEFT_BITMAP(pointer,bits) \ + bits <<= 1; \ + if (bits == 0) { --pointer; bits=0x0001; } + +#define RIGHT_BITMAP(pointer, bits) \ + bits >>= 1; \ + if (bits == 0) { ++pointer; bits=0x8000; } + +#define UP_BITMAP(pointer,map) pointer -= map->Data.WidthInWords +#define DOWN_BITMAP(pointer,map) pointer += map->Data.WidthInWords + +#define WRITEPIXEL(dest_pointer, operation, color) \ + switch (operation) \ + {\ + case GraphicsDisplay::Replace:\ + *dest_pointer = (Byte)color;\ + break;\ + case GraphicsDisplay::And:\ + *dest_pointer &= (Byte) color;\ + break;\ + case GraphicsDisplay::Or:\ + *dest_pointer |= (Byte) color;\ + break;\ + case GraphicsDisplay::Xor:\ + *dest_pointer ^= (Byte) color;\ + break;\ + } + +//=================================================================== +// MarkChangedLines +//=================================================================== +// +// Inputs are in DISPLAY COORDINATES, i.e., (0,0) in top left corner! +// +void + Video8BitBuffered::MarkChangedLines( + int start, + int stop + ) +{ +# if defined(DEBUG) + Tell( + "Video8BitBuffered::MarkChangedLines(" << start << ", " << stop << + ")\n" + ); +# endif + Check(this); + + if (start > stop) + { +# if defined(DEBUG) + Tell("MarkChangedLines FLIPPING\n"); +# endif + int temp; + + temp = start; + start = stop; + stop = temp; + } + + Verify(start >= 0); + Verify(start <= maximumY); + Verify(stop >= 0); + Verify(stop <= maximumY); + + ++changedLine[start]; + + // + // Always include at least one line + // + if (stop < maximumY) + { + --changedLine[stop+1]; + } + + Check_Fpu(); +} + +//=================================================================== +// DrawPoint +//=================================================================== +void + Video8BitBuffered::DrawPoint( + int color, + int /*bitmask*/, + Enumeration operation, + int x, int y + ) +{ + Check(this); + Verify(x >= bounds.bottomLeft.x); + Verify(x <= bounds.topRight.x); + Verify(y >= bounds.bottomLeft.y); + Verify(y <= bounds.topRight.y); + + Byte + *dest_pointer; + //--------------------------------------------------------- + // If pixelbuffer is invalid, do nothing + //--------------------------------------------------------- + if (!valid) + { + Check_Fpu(); + return; + } + //--------------------------------------------------------- + // Convert to screen co-ordinates + //--------------------------------------------------------- + y = maximumY - y; + +# if defined(DEBUG) + Tell("x=" << x << ", y=" << y << "\n"); +# endif + + Verify(x >= 0); + Verify(x < width); + Verify(y >= 0); + Verify(y < height); + //--------------------------------------------------------- + // Update changedLine array + //--------------------------------------------------------- + MarkChangedLines(y, y); + //--------------------------------------------------------- + // We really need inverse bitmap here + //--------------------------------------------------------- +// bitmask = ~bitmask; + //--------------------------------------------------------- + // Create pointers + //--------------------------------------------------------- + buildDestPointer( + x, y, + &dest_pointer + ); + //--------------------------------------------------------- + // Write the point + //--------------------------------------------------------- + WRITEPIXEL(dest_pointer, operation, color) + Check_Fpu(); +} + +//=================================================================== +// DrawLine +//=================================================================== +void + Video8BitBuffered::DrawLine( + int color, + int /*bitmask*/, + Enumeration operation, + int x1, int y1, + int x2, int y2, + Logical include_last_pixel + ) +{ +# if defined(DEBUG) + Tell( + "Video8BitBuffered::DrawLine(" << color << + ", " << bitmask << + ", " << operation << + ", " << x1 << "," << y1 << "," << x2 << "," << y2 << + ", " << include_last_pixel << + "\n" + ); +# endif + + Check(this); + + Verify(x1 >= bounds.bottomLeft.x); + Verify(x1 <= bounds.topRight.x); + Verify(y1 >= bounds.bottomLeft.y); + Verify(y1 <= bounds.topRight.y); + + Verify(x2 >= bounds.bottomLeft.x); + Verify(x2 <= bounds.topRight.x); + Verify(y2 >= bounds.bottomLeft.y); + Verify(y2 <= bounds.topRight.y); + + enum + { + negative_delta_x = 1, + negative_delta_y = 2, + delta_y_greater = 0, + delta_x_greater = 4 + }; + + long + length, + rate, + accumulator; + + int + octant, + delta_x, + delta_y; + + Byte + *dest_pointer; + //--------------------------------------------------------- + // If pixelbuffer is invalid, do nothing + //--------------------------------------------------------- + if (!valid) + { + Check_Fpu(); + return; + } + //--------------------------------------------------------- + // Route to DrawPoint if single pixel + //--------------------------------------------------------- + if (x1 == x2 && y1 == y2) + { + if (include_last_pixel) + { + DrawPoint(color, 0 /*bitmask*/, operation, x1, y1); + } + Check_Fpu(); + return; + } + //--------------------------------------------------------- + // Convert to screen co-ordinates + //--------------------------------------------------------- + y1 = maximumY - y1; + y2 = maximumY - y2; + //--------------------------------------------------------- + // Ensure that endpoints are legitimate + //--------------------------------------------------------- + Verify(x1 >= 0); + Verify(x1 < width); + Verify(x2 >= 0); + Verify(x2 < width); + + Verify(y1 >= 0); + Verify(y1 < height); + Verify(y2 >= 0); + Verify(y2 < height); + +# if defined(DEBUG) + Tell( + "Transformed coordinates=" << x1 << "," << y1 << + "," << x2 << "," << y2 << + "\n" + ); +# endif + //--------------------------------------------------------- + // Update changedLine array + //--------------------------------------------------------- + MarkChangedLines(y1, y2); + //--------------------------------------------------------- + // We really need inverse bitmap here + //--------------------------------------------------------- +// bitmask = ~bitmask; + //--------------------------------------------------------- + // Determine which octant to use + //--------------------------------------------------------- + octant = 0; + + delta_x = x2 - x1; + if (delta_x < 0) + { +# if defined(DEBUG) + Tell("negative dx\n"); +# endif + octant |= negative_delta_x; + delta_x = - delta_x; + } + + delta_y = y2 - y1; + if (delta_y < 0) + { +# if defined(DEBUG) + Tell("negative dy\n"); +# endif + octant |= negative_delta_y; + delta_y = - delta_y; + } + + if (delta_x > delta_y) + { +# if defined(DEBUG) + Tell("dx > dy\n"); +# endif + octant |= delta_x_greater; + } +# if defined(DEBUG) + Tell( + "dx=" << delta_x << + ", dy=" << delta_y << + ", octant=" << octant << + ", color=" << color << + "\n" + ); +# endif + //--------------------------------------------------------- + // Prepare to draw line + //--------------------------------------------------------- + buildDestPointer( + x1, y1, + &dest_pointer + ); + + accumulator = 1024L; // preset accumulator to 1/2 full + //--------------------------------------------------------- + // Draw the line! + //--------------------------------------------------------- + switch (octant) + { + case delta_y_greater: + //------------------------------------- + // delta y greater + // positive delta x + // positive delta y + // + // + + // \ & + // \ & + //------------------------------------- + length = delta_y; + if (!include_last_pixel) + { + -- length; + } + + Verify(delta_y > 0); + rate = (delta_x*2048L)/delta_y; + +# if defined(DEBUG) + Tell( + "delta_y_greater, length=" << length << + ", rate=" << rate << + "\n" + ); +# endif + Verify(rate >= 0L); + Verify(rate <= 2048L); + for ( ; length>0; --length) + { + WRITEPIXEL(dest_pointer, operation, color) +# if defined(DEBUG) + Tell( + length << + ", accum=" << accumulator << + ", dest_pointer=" << dest_pointer << + "\n" + ); +# endif + DOWN_DEST(dest_pointer); + + accumulator += rate; + if (accumulator > 2048L) + { +# if defined(DEBUG) + Tell("OVERFLOW\n"); +# endif + accumulator -= 2048L; + RIGHT_DEST(dest_pointer); + } + } + break; + + case delta_y_greater+negative_delta_x: + //------------------------------------- + // delta y greater + // negative delta x + // positive delta y + // + // + + // / + // / + //------------------------------------- + length = delta_y; + if (!include_last_pixel) + { + -- length; + } + rate = (delta_x*2048L)/delta_y; + +# if defined(DEBUG) + Tell( + "delta_y_greater+negative_delta_x, length=" << length << + ", rate=" << rate << + "\n" + ); +# endif + Verify(rate >= 0L); + Verify(rate <= 2048L); + Verify(length >= 0); + for ( ; length>0; --length) + { + WRITEPIXEL(dest_pointer, operation, color) +# if defined(DEBUG) + Tell( + length << + ", accum=" << accumulator << + ", dest_pointer=" << dest_pointer << + "\n" + ); +# endif + DOWN_DEST(dest_pointer); + + accumulator += rate; + if (accumulator > 2048L) + { +# if defined(DEBUG) + Tell("OVERFLOW\n"); +# endif + accumulator -= 2048L; + LEFT_DEST(dest_pointer); + } + } + break; + + case delta_y_greater+negative_delta_y: + //------------------------------------- + // delta y greater + // positive delta x + // negative delta y + // + // / + // / + // + + //------------------------------------- + length = delta_y; + if (!include_last_pixel) + { + -- length; + } + rate = (delta_x*2048L)/delta_y; + +# if defined(DEBUG) + Tell( + "delta_y_greater+negative_delta_y, length=" << length << + ", rate=" << rate << + "\n" + ); +# endif + Verify(rate >= 0L); + Verify(rate <= 2048L); + Verify(length >= 0); + for ( ; length>0; --length) + { + WRITEPIXEL(dest_pointer, operation, color) +# if defined(DEBUG) + Tell( + length << + ", accum=" << accumulator << + ", dest_pointer=" << dest_pointer << + "\n" + ); +# endif + UP_DEST(dest_pointer); + + accumulator += rate; + if (accumulator > 2048L) + { +# if defined(DEBUG) + Tell("OVERFLOW\n"); +# endif + accumulator -= 2048L; + RIGHT_DEST(dest_pointer); + } + } + break; + + case delta_y_greater+negative_delta_x+negative_delta_y: + //------------------------------------- + // delta y greater + // negative delta x + // negative delta y + // + // \ & + // \ & + // + + //------------------------------------- + length = delta_y; + if (!include_last_pixel) + { + -- length; + } + rate = (delta_x*2048L)/delta_y; + +# if defined(DEBUG) + Tell( + "delta_y_greater+negative_delta_x+negative_delta_y, length=" << + length << + ", rate=" << rate << + "\n" + ); +# endif + Verify(rate >= 0L); + Verify(rate <= 2048L); + Verify(length >= 0); + for ( ; length>0; --length) + { + WRITEPIXEL(dest_pointer, operation, color) +# if defined(DEBUG) + Tell( + length << + ", accum=" << accumulator << + ", dest_pointer=" << dest_pointer << + "\n" + ); +# endif + UP_DEST(dest_pointer); + + accumulator += rate; + if (accumulator > 2048L) + { +# if defined(DEBUG) + Tell("OVERFLOW\n"); +# endif + accumulator -= 2048L; + LEFT_DEST(dest_pointer); + } + } + break; + + case delta_x_greater: + //------------------------------------- + // delta x greater + // positive delta x + // positive delta y + // + // +---___ + // + // + //------------------------------------- + length = delta_x; + if (!include_last_pixel) + { + -- length; + } + rate = (delta_y*2048L)/delta_x; + +# if defined(DEBUG) + Tell( + "delta_x_greater, length=" << length << + ", rate=" << rate << + "\n" + ); +# endif + Verify(rate >= 0L); + Verify(rate <= 2048L); + Verify(length >= 0); + for ( ; length>0; --length) + { + WRITEPIXEL(dest_pointer, operation, color) +# if defined(DEBUG) + Tell( + length << + ", accum=" << accumulator << + ", dest_pointer=" << dest_pointer << + "\n" + ); +# endif + RIGHT_DEST(dest_pointer); + + accumulator += rate; + if (accumulator > 2048L) + { +# if defined(DEBUG) + Tell("OVERFLOW\n"); +# endif + accumulator -= 2048L; + DOWN_DEST(dest_pointer); + } + } + break; + + case delta_x_greater+negative_delta_x: + //------------------------------------- + // delta x greater + // negative delta x + // positive delta y + // + // ___---+ + // + // + //------------------------------------- + length = delta_x; + if (!include_last_pixel) + { + -- length; + } + rate = (delta_y*2048L)/delta_x; + +# if defined(DEBUG) + Tell( + "delta_x_greater+negative_delta_x, length=" << length << + ", rate=" << rate << + "\n" + ); +# endif + Verify(rate >= 0L); + Verify(rate <= 2048L); + Verify(length >= 0); + for ( ; length>0; --length) + { + WRITEPIXEL(dest_pointer, operation, color) +# if defined(DEBUG) + Tell( + length << + ", accum=" << accumulator << + ", dest_pointer=" << dest_pointer << + "\n" + ); +# endif + LEFT_DEST(dest_pointer); + + accumulator += rate; + if (accumulator > 2048L) + { +# if defined(DEBUG) + Tell("OVERFLOW\n"); +# endif + accumulator -= 2048L; + DOWN_DEST(dest_pointer); + } + } + break; + + case delta_x_greater+negative_delta_y: + //------------------------------------- + // delta x greater + // positive delta x + // negative delta y + // + // +___--- + // + // + //------------------------------------- + length = delta_x; + if (!include_last_pixel) + { + -- length; + } + rate = (delta_y*2048L)/delta_x; + +# if defined(DEBUG) + Tell( + "delta_x_greater+negative_delta_y, length=" << length << + ", rate=" << rate << + "\n" + ); +# endif + Verify(rate >= 0L); + Verify(rate <= 2048L); + Verify(length >= 0); + for ( ; length>0; --length) + { + WRITEPIXEL(dest_pointer, operation, color) +# if defined(DEBUG) + Tell( + length << + ", accum=" << accumulator << + ", dest_pointer=" << dest_pointer << + "\n" + ); +# endif + RIGHT_DEST(dest_pointer); + + accumulator += rate; + if (accumulator > 2048L) + { +# if defined(DEBUG) + Tell("OVERFLOW\n"); +# endif + accumulator -= 2048L; + UP_DEST(dest_pointer); + } + } + break; + + case delta_x_greater+negative_delta_x+negative_delta_y: + //------------------------------------- + // delta x greater + // negative delta x + // negative delta y + // + // ---___+ + // + // + //------------------------------------- + length = delta_x; + if (!include_last_pixel) + { + -- length; + } + rate = (delta_y*2048L)/delta_x; + +# if defined(DEBUG) + Tell( + "delta_x_greater+negative_delta_x+negative_delta_y, length=" << + length << + ", rate=" << rate << + "\n" + ); +# endif + Verify(rate >= 0L); + Verify(rate <= 2048L); + Verify(length >= 0); + for ( ; length>0; --length) + { + WRITEPIXEL(dest_pointer, operation, color) +# if defined(DEBUG) + Tell( + length << + ", accum=" << accumulator << + ", dest_pointer=" << dest_pointer << + "\n" + ); +# endif + LEFT_DEST(dest_pointer); + + accumulator += rate; + if (accumulator > 2048L) + { +# if defined(DEBUG) + Tell("OVERFLOW\n"); +# endif + accumulator -= 2048L; + UP_DEST(dest_pointer); + } + } + break; + } + Check_Fpu(); +} + +//=================================================================== +// DrawFilledRectangle +//=================================================================== +void + Video8BitBuffered::DrawFilledRectangle( + int color, + int /*bitmask*/, + Enumeration operation, + int x1, int y1, + int x2, int y2 + ) +{ +# if defined(DEBUG) + Tell("Video8BitBuffered::DrawFilledRectangle(" << + color << ", " << + hex << bitmask << ", " << dec << + operation << ", " << + x1 << ", " << + y1 << ", " << + x2 << ", " << + y2 << ", " << + ")\n"); +# endif + Check(this); + Verify(x1 >= bounds.bottomLeft.x); + Verify(x1 <= bounds.topRight.x); + Verify(y1 >= bounds.bottomLeft.y); + Verify(y1 <= bounds.topRight.y); + + Verify(x2 >= bounds.bottomLeft.x); + Verify(x2 <= bounds.topRight.x); + Verify(y2 >= bounds.bottomLeft.y); + Verify(y2 <= bounds.topRight.y); + + Byte + *dest_pointer; + int + x, + dest_fixup, + rect_width, + rect_height; + + //--------------------------------------------------------- + // If pixelbuffer is invalid, do nothing + //--------------------------------------------------------- + if (!valid) + { + Check_Fpu(); + return; + } + //--------------------------------------------------------- + // Convert to screen co-ordinates + //--------------------------------------------------------- + y1 = maximumY - y1; + y2 = maximumY - y2; + //--------------------------------------------------------- + // Ensure that rectangle is properly specified + //--------------------------------------------------------- + if (x2 < x1) + { + int temp; + + temp = x1; + x1 = x2; + x2 = temp; + } + + if (y2 < y1) + { + int temp; + + temp = y1; + y1 = y2; + y2 = temp; + } + //--------------------------------------------------------- + // Verify that values are legitimate + //--------------------------------------------------------- + Verify(pixelBuffer->Data.MapPointer != NULL); + + Verify(x1 >= 0); + Verify(x1 <= x2); + Verify(x2 < width); + + Verify(y1 >= 0); + Verify(y1 <= y2); + Verify(y2 < height); + //--------------------------------------------------------- + // Update changedLine array + //--------------------------------------------------------- + MarkChangedLines(y1, y2); + //--------------------------------------------------------- + // We really need inverse bitmap here + //--------------------------------------------------------- +// bitmask = ~bitmask; + //--------------------------------------------------------- + // Prepare to fill + //--------------------------------------------------------- +# if defined(DEBUG) + Tell( + "x1=" << x1 << ", " << "y1=" << y1 << "\n" << + "x2=" << x2 << ", " << "y2=" << y2 << "\n" << + flush + ); +# endif + buildDestPointer(x1, y1, &dest_pointer); + + rect_height = y2 - y1 + 1; + rect_width = x2 - x1 + 1; + dest_fixup = width - rect_width; + +# if defined(DEBUG) + Tell( + "rect_height=" << rect_height << "\n" << + "rect_width=" << rect_width << "\n" << + "dest_fixup=" << dest_fixup << "\n" << + flush + ); +# endif + //--------------------------------------------------------- + // Fill the rectangle + //--------------------------------------------------------- + switch(operation) + { + case GraphicsDisplay::Replace: + for( ; rect_height>0; --rect_height) + { + for(x=rect_width; x>0; --x) + { + *dest_pointer = (Byte) color; + dest_pointer++; + } + dest_pointer += dest_fixup; + } + break; + + case GraphicsDisplay::And: + for( ; rect_height>0; --rect_height) + { + for(x=rect_width; x>0; --x) + { + *dest_pointer++ &= (Byte) color; + } + dest_pointer += dest_fixup; + } + break; + + case GraphicsDisplay::Or: + for( ; rect_height>0; --rect_height) + { + for(x=rect_width; x>0; --x) + { + *dest_pointer++ |= (Byte) color; + } + dest_pointer += dest_fixup; + } + break; + + case GraphicsDisplay::Xor: + for( ; rect_height>0; --rect_height) + { + for(x=rect_width; x>0; --x) + { + *dest_pointer++ ^= (Byte) color; + } + dest_pointer += dest_fixup; + } + break; + } + Check_Fpu(); +} + + +void + Video8BitBuffered::DrawText( + int /*color*/, + int /*bitmask*/, + Enumeration /*operation*/, + Logical /*opaque*/, + int /*rotation*/, + Enumeration /*fontNumber*/, + Logical /*vertical*/, + GraphicsDisplay::Justification /*justification*/, + Rectangle2D */*clippingRectanglepointer*/, + char */*stringPointer*/ + ) +{ +# if defined(DEBUG) + Tell("Video8BitBuffered::DrawText()\n"); +# endif + Check(this); + //--------------------------------------------------------- + // If pixelbuffer is invalid, do nothing + //--------------------------------------------------------- + Check_Fpu(); + if (!valid) + { + return; + } +} + +//=================================================================== +// DrawBitMap +//=================================================================== +void + Video8BitBuffered::DrawBitMap( + int color, + int /*bitmask*/, + Enumeration operation, + int rotation, + int x, int y, + BitMap *bitmap, + int sLeft, int sBottom, int sRight, int sTop + ) +{ +# if defined(DEBUG) + Tell( + "Video8BitBuffered::DrawBitMap(<" << + x << ", " << + y << ">,<" << + sLeft << ", " << + sBottom << ", " << + sRight << ", " << + sTop << ">" << + ")\n" + ); +# endif + Check(this); + Verify(x >= bounds.bottomLeft.x); + Verify(x <= bounds.topRight.x); + Verify(y >= bounds.bottomLeft.y); + Verify(y <= bounds.topRight.y); + + int + map_width, + map_height, + map_max_y, + bits, + bit_test, + first_bit_test; + + Word + *source_pointer_begin, + *source_pointer; + Byte + *dest_pointer_begin, + *dest_pointer; + + //--------------------------------------------------------- + // If pixelbuffer is invalid, do nothing + //--------------------------------------------------------- + if (!valid) + { + Check_Fpu(); + return; + } + //--------------------------------------------------------- + // Ensure that source rectangle is properly specified + //--------------------------------------------------------- + Verify(bitmap != NULL); + + Verify(sLeft >= 0); + Verify(sLeft <= sRight); + Verify(sRight < bitmap->Data.Size.x); + + Verify(sBottom >= 0); + Verify(sBottom <= sTop); + Verify(sTop < bitmap->Data.Size.y); + //--------------------------------------------------------- + // Convert to screen co-ordinates + //--------------------------------------------------------- + y = maximumY - y; + + map_max_y = bitmap->Data.Size.y-1; + sTop = map_max_y - sTop; + sBottom = map_max_y - sBottom; + + map_width = sRight - sLeft + 1; + map_height = sBottom - sTop + 1; + +# if defined(DEBUG) + Tell("x=" << x << ", y=" << y << "\n"); + Tell("sTop=" << sTop << ", sBottom=" << sBottom << "\n"); + Tell("map_width=" << map_width << ", map_height=" << map_height << "\n"); +# endif + + Verify(map_width > 0); + Verify(map_width <= bitmap->Data.Size.x); + Verify(map_height > 0); + Verify(map_height <= bitmap->Data.Size.y); + + Verify(x >= 0); + Verify(x < width); + Verify(y >= 0); + Verify(y < height); + + //--------------------------------------------------------- + // We really need inverse bitmap here + //--------------------------------------------------------- +// bitmask = ~bitmask; + //--------------------------------------------------------- + // Prepare to draw bitmap + //--------------------------------------------------------- + Verify(pixelBuffer->Data.MapPointer != NULL); + + source_pointer_begin = + bitmap->Data.MapPointer + + (sLeft >> 4) + + (sBottom * bitmap->Data.WidthInWords); + + first_bit_test = 1 << (15-(sLeft & 15)); + + buildDestPointer( + x, y, + &dest_pointer_begin + ); + + switch (rotation) + { + default: + //-------------------------------------------- + // transparent bitmap, zero degrees + // .-----. + // | | + // | | + // Y | + // #X----. + //-------------------------------------------- +# if defined(DEBUG) + Tell("zero: xp=" << (x+map_width-1) << ", yp=" << (y-map_height+1) << "\n"); +# endif + Verify(x+map_width-1 >= 0); + Verify(x+map_width-1 < width); + Verify(y-map_height+1 >= 0); + Verify(y-map_height+1 < height); + + MarkChangedLines(y-map_height+1, y); + + for(y=map_height; y>0; --y) + { + source_pointer = source_pointer_begin; + dest_pointer = dest_pointer_begin; + + UP_BITMAP(source_pointer_begin, bitmap); + UP_DEST(dest_pointer_begin); + + bit_test = first_bit_test; + bits = *source_pointer++; + for(x=map_width; x>0; --x,bit_test>>=1) + { + Verify(dest_pointer >= pixelBuffer->Data.MapPointer); + Verify(dest_pointer < pixelBuffer->Data.MapPointer+ + (width*height)); + + if (bit_test == 0) + { + bit_test = 0x8000; + bits = *source_pointer++; + } + + if (bits & bit_test) + { + WRITEPIXEL(dest_pointer, operation, color) + } + RIGHT_DEST(dest_pointer); + } + } + break; + + case 90: + //-------------------------------------------- + // Transparent bitmap, 90 degrees + // #Y----. + // X | + // | | + // | | + // .-----. + //-------------------------------------------- +# if defined(DEBUG) + Tell("90 xp=" << (x+map_height) << ", yp=" << (y+map_width) << "\n"); +# endif + Verify(x+map_height >= 0); + Verify(x+map_height < width); + Verify(y+map_width >= 0); + Verify(y+map_width < height); + + MarkChangedLines(y, y+map_width); + + for(y=map_height; y>0; --y) + { + source_pointer = source_pointer_begin; + dest_pointer = dest_pointer_begin; + + UP_BITMAP(source_pointer_begin, bitmap); + RIGHT_DEST(dest_pointer_begin); + + bit_test = first_bit_test; + bits = *source_pointer++; + + for(x=map_width; x>0; --x,bit_test>>=1) + { + Verify(dest_pointer >= pixelBuffer->Data.MapPointer); + Verify(dest_pointer < pixelBuffer->Data.MapPointer+ + (width*height)); + + if (bit_test == 0) + { + bit_test = 0x8000; + bits = *source_pointer++; + } + + if (bits & bit_test) + { + WRITEPIXEL(dest_pointer, operation, color) + } + DOWN_DEST(dest_pointer); + } + } + break; + + case 180: + //-------------------------------------------- + // Transparent bitmap, 180 degrees + // .----X# + // | Y + // | | + // | | + // .-----. + //-------------------------------------------- +# if defined(DEBUG) + Tell("xp=" << (x-map_width+1) << ", yp=" << (y+map_height) << "\n"); +# endif + Verify(x-map_width+1 >= 0); + Verify(x-map_width+1 < width); + Verify(y+map_height >= 0); + Verify(y+map_height < height); + + MarkChangedLines(y, y+map_height); + + for(y=map_height; y>0; --y) + { + source_pointer = source_pointer_begin; + dest_pointer = dest_pointer_begin; + + UP_BITMAP(source_pointer_begin, bitmap); + DOWN_DEST(dest_pointer_begin); + + bit_test = first_bit_test; + bits = *source_pointer++; + + for(x=map_width; x>0; --x,bit_test>>=1) + { + Verify(dest_pointer >= pixelBuffer->Data.MapPointer); + Verify(dest_pointer < pixelBuffer->Data.MapPointer+ + (width*height)); + + if (bit_test == 0) + { + bit_test = 0x8000; + bits = *source_pointer++; + } + + if (bits & bit_test) + { + WRITEPIXEL(dest_pointer, operation, color) + } + LEFT_DEST(dest_pointer); + } + } + break; + + case 270: + //-------------------------------------------- + // Transparent bitmap, 270 degrees + // .-----. + // | | + // | X + // | | + // .--Y--# + //-------------------------------------------- +# if defined(DEBUG) + Tell("xp=" << (x-map_height) << ", yp=" << (y-(map_width-1)) << "\n"); +# endif + + Verify(x-map_height >= 0); + Verify(x-map_height < width); + Verify(y-(map_width-1) >= 0); + Verify(y-(map_width-1) < height); + + MarkChangedLines(y-(map_width-1), y); + + for(y=map_height; y>0; --y) + { + source_pointer = source_pointer_begin; + dest_pointer = dest_pointer_begin; + + UP_BITMAP(source_pointer_begin, bitmap); + LEFT_DEST(dest_pointer_begin); + + bit_test = first_bit_test; + bits = *source_pointer++; + + for(x=map_width; x>0; --x,bit_test>>=1) + { + Verify(dest_pointer >= pixelBuffer->Data.MapPointer); + Verify(dest_pointer < pixelBuffer->Data.MapPointer+ + (width*height)); + + if (bit_test == 0) + { + bit_test = 0x8000; + bits = *source_pointer++; + } + + if (bits & bit_test) + { + WRITEPIXEL(dest_pointer, operation, color) + } + UP_DEST(dest_pointer); + } + } + break; + } + Check_Fpu(); +} + +//=================================================================== +// DrawBitMapOpaque +//=================================================================== +void + Video8BitBuffered::DrawBitMapOpaque( + int foreground, + int background, + int /*bitmask*/, + Enumeration operation, + int rotation, + int x, int y, + BitMap *bitmap, + int sLeft, int sBottom, int sRight, int sTop + ) +{ +# if defined(DEBUG) + Tell( + "Video8BitBuffered::DrawBitMapOpaque(<" << + x << ", " << + y << ">,<" << + sLeft << ", " << + sBottom << ", " << + sRight << ", " << + sTop << ">" << + ")\n" + ); +# endif + Check(this); + Verify(x >= bounds.bottomLeft.x); + Verify(x <= bounds.topRight.x); + Verify(y >= bounds.bottomLeft.y); + Verify(y <= bounds.topRight.y); + + int + map_width, + map_height, + map_max_y, + bits, + bit_test, + first_bit_test; + + Word + *source_pointer_begin, + *source_pointer; + Byte + *dest_pointer_begin, + *dest_pointer; + Byte + color; + + //--------------------------------------------------------- + // If pixelbuffer is invalid, do nothing + //--------------------------------------------------------- + if (!valid) + { + Check_Fpu(); + return; + } + //--------------------------------------------------------- + // Ensure that source rectangle is properly specified + //--------------------------------------------------------- + Verify(bitmap != NULL); + + Verify(sLeft >= 0); + Verify(sLeft <= sRight); + Verify(sRight < bitmap->Data.Size.x); + + Verify(sBottom >= 0); + Verify(sBottom <= sTop); + Verify(sTop < bitmap->Data.Size.y); + //--------------------------------------------------------- + // Convert to screen co-ordinates + //--------------------------------------------------------- + y = maximumY - y; + + map_max_y = bitmap->Data.Size.y-1; + sTop = map_max_y - sTop; + sBottom = map_max_y - sBottom; + + map_width = sRight - sLeft + 1; + map_height = sBottom - sTop + 1; + +# if defined(DEBUG) + Tell("x=" << x << ", y=" << y << "\n"); + Tell("sTop=" << sTop << ", sBottom=" << sBottom << "\n"); + Tell("map_width=" << map_width << ", map_height=" << map_height << "\n"); +# endif + + Verify(map_width > 0); + Verify(map_width <= bitmap->Data.Size.x); + Verify(map_height > 0); + Verify(map_height <= bitmap->Data.Size.y); + + Verify(x >= 0); + Verify(x < width); + Verify(y >= 0); + Verify(y < height); + + //--------------------------------------------------------- + // We really need inverse bitmap here + //--------------------------------------------------------- +// bitmask = ~bitmask; + //--------------------------------------------------------- + // Prepare to draw bitmap + //--------------------------------------------------------- + Verify(pixelBuffer->Data.MapPointer != NULL); + + source_pointer_begin = + bitmap->Data.MapPointer + + (sLeft >> 4) + + (sBottom * bitmap->Data.WidthInWords); + + first_bit_test = 1 << (15-(sLeft & 15)); + + buildDestPointer( + x, y, + &dest_pointer_begin + ); + + switch (rotation) + { + default: + //-------------------------------------------- + // opaque bitmap, zero degrees + // .-----. + // | | + // | | + // Y | + // #X----. + //-------------------------------------------- +# if defined(DEBUG) + Tell("zero: xp=" << (x+map_width) << ", yp=" << (y-map_height+1) << "\n"); +# endif + Verify(x+map_width >= 0); + Verify(x+map_width <= width); // HACK? <, or <=? + Verify(y-map_height+1 >= 0); + Verify(y-map_height+1 < height); + + MarkChangedLines(y-map_height+1, y); + + for(y=map_height; y>0; --y) + { + source_pointer = source_pointer_begin; + dest_pointer = dest_pointer_begin; + + UP_BITMAP(source_pointer_begin, bitmap); + UP_DEST(dest_pointer_begin); + + bit_test = first_bit_test; + bits = *source_pointer++; + + for(x=map_width; x>0; --x,bit_test>>=1) + { + if (bit_test == 0) + { + bit_test = 0x8000; + bits = *source_pointer++; + } + + if (bits & bit_test) + { + color = (Byte) foreground; + } + else + { + color = (Byte) background; + } + WRITEPIXEL(dest_pointer, operation, color) + RIGHT_DEST(dest_pointer); + } + } + break; + + case 90: + //-------------------------------------------- + // opaque bitmap, 90 degrees + // #Y----. + // X | + // | | + // | | + // .-----. + //-------------------------------------------- +# if defined(DEBUG) + Tell("90 xp=" << (x+map_height) << ", yp=" << (y+map_width) << "\n"); +# endif + Verify(x+map_height >= 0); + Verify(x+map_height < width); + Verify(y+map_width >= 0); + Verify(y+map_width < height); + + MarkChangedLines(y, y+map_width); + + for(y=map_height; y>0; --y) + { + source_pointer = source_pointer_begin; + dest_pointer = dest_pointer_begin; + + UP_BITMAP(source_pointer_begin, bitmap); + RIGHT_DEST(dest_pointer_begin); + + bit_test = first_bit_test; + bits = *source_pointer++; + + for(x=map_width; x>0; --x,bit_test>>=1) + { + if (bit_test == 0) + { + bit_test = 0x8000; + bits = *source_pointer++; + } + + if (bits & bit_test) + { + color = (Byte) foreground; + } + else + { + color = (Byte) background; + } + WRITEPIXEL(dest_pointer, operation, color) + DOWN_DEST(dest_pointer); + } + } + break; + + case 180: + //-------------------------------------------- + // opaque bitmap, 180 degrees + // .----X# + // | Y + // | | + // | | + // .-----. + //-------------------------------------------- +# if defined(DEBUG) + Tell("xp=" << (x-map_width+1) << ", yp=" << (y+map_height) << "\n"); +# endif + Verify(x-map_width+1 >= 0); + Verify(x-map_width+1 < width); + Verify(y+map_height >= 0); + Verify(y+map_height < height); + + MarkChangedLines(y, y+map_height); + + for(y=map_height; y>0; --y) + { + source_pointer = source_pointer_begin; + dest_pointer = dest_pointer_begin; + + UP_BITMAP(source_pointer_begin, bitmap); + DOWN_DEST(dest_pointer_begin); + + bit_test = first_bit_test; + bits = *source_pointer++; + + for(x=map_width; x>0; --x,bit_test>>=1) + { + if (bit_test == 0) + { + bit_test = 0x8000; + bits = *source_pointer++; + } + + if (bits & bit_test) + { + color = (Byte) foreground; + } + else + { + color = (Byte) background; + } + WRITEPIXEL(dest_pointer, operation, color) + LEFT_DEST(dest_pointer); + } + } + break; + + case 270: + //-------------------------------------------- + // opaque bitmap, 270 degrees + // .-----. + // | | + // | X + // | | + // .--Y--# + //-------------------------------------------- +# if defined(DEBUG) + Tell("xp=" << (x-map_height+1) << ", yp=" << (y-(map_width-1)) << "\n"); +# endif + + Verify(x-map_height >= 0); + Verify(x-map_height < width); + Verify(y-(map_width-1) >= 0); + Verify(y-(map_width-1) < height); + + MarkChangedLines(y-(map_width-1), y); + + for(y=map_height; y>0; --y) + { + source_pointer = source_pointer_begin; + dest_pointer = dest_pointer_begin; + + UP_BITMAP(source_pointer_begin, bitmap); + LEFT_DEST(dest_pointer_begin); + + bit_test = first_bit_test; + bits = *source_pointer++; + + for(x=map_width; x>0; --x,bit_test>>=1) + { + Verify(dest_pointer >= pixelBuffer->Data.MapPointer); + Verify(dest_pointer < pixelBuffer->Data.MapPointer+ + (width*height)); + + if (bit_test == 0) + { + bit_test = 0x8000; + bits = *source_pointer++; + } + + if (bits & bit_test) + { + color = (Byte) foreground; + } + else + { + color = (Byte) background; + } + WRITEPIXEL(dest_pointer, operation, color) + UP_DEST(dest_pointer); + } + } + break; + } + Check_Fpu(); +} + +//=================================================================== +// DrawPixelMap8 +//=================================================================== +void + Video8BitBuffered::DrawPixelMap8( + int */*translation_table*/, + int /*bitmask*/, + Enumeration operation, + Logical opaque, + int rotation, + int x, int y, + PixelMap8 *pixelmap, + int sLeft, int sBottom, int sRight, int sTop + ) +{ +# if defined(DEBUG) + Tell( + "Video8BitBuffered::DrawPixelMap8(<" << + x << ", " << + y << ">,<" << + sLeft << ", " << + sBottom << ", " << + sRight << ", " << + sTop << ">" << + ")\n" + ); +# endif + Check(this); + Verify(x >= bounds.bottomLeft.x); + Verify(x <= bounds.topRight.x); + Verify(y >= bounds.bottomLeft.y); + Verify(y <= bounds.topRight.y); + + int + map_width, + map_height, + map_max_y; + + Byte + color, + *source_pointer_begin, + *source_pointer, + *dest_pointer_begin, + *dest_pointer; + + //--------------------------------------------------------- + // If pixelbuffer is invalid, do nothing + //--------------------------------------------------------- + if (!valid) + { + Check_Fpu(); + return; + } + //--------------------------------------------------------- + // Ensure that source rectangle is properly specified + //--------------------------------------------------------- + Verify(pixelmap != NULL); + + Verify(sLeft >= 0); + Verify(sLeft <= sRight); + Verify(sRight < pixelmap->Data.Size.x); + + Verify(sBottom >= 0); + Verify(sBottom <= sTop); + Verify(sTop < pixelmap->Data.Size.y); + //--------------------------------------------------------- + // Convert to screen co-ordinates + //--------------------------------------------------------- + y = maximumY - y; + + map_max_y = pixelmap->Data.Size.y-1; + sTop = map_max_y - sTop; + sBottom = map_max_y - sBottom; + + map_width = sRight - sLeft + 1; + map_height = sBottom - sTop + 1; + +# if defined(DEBUG) + Tell("x=" << x << ", y=" << y << "\n"); + Tell("sTop=" << sTop << ", sBottom=" << sBottom << "\n"); + Tell("map_width=" << map_width << ", map_height=" << map_height << "\n"); +# endif + + Verify(map_width > 0); + Verify(map_width <= pixelmap->Data.Size.x); + Verify(map_height > 0); + Verify(map_height <= pixelmap->Data.Size.y); + + Verify(x >= 0); + Verify(x < width); + Verify(y >= 0); + Verify(y < height); + + //--------------------------------------------------------- + // We really need inverse bitmap here + //--------------------------------------------------------- +// bitmask = ~bitmask; + //--------------------------------------------------------- + // Prepare to draw bitmap + //--------------------------------------------------------- + Verify(pixelBuffer->Data.MapPointer != NULL); + + source_pointer_begin = + pixelmap->Data.MapPointer + + sLeft + + (sBottom * pixelmap->Data.Size.x); + + buildDestPointer( + x, y, + &dest_pointer_begin + ); + + if (opaque) + { + switch (rotation) + { + default: + //-------------------------------------------- + // Opaque pixelmap, zero degrees + // .-----. + // | | + // | | + // Y | + // #X----. + //-------------------------------------------- +# if defined(DEBUG) + Tell( + "Opaque zero: xp=" << (x+map_width) << + ", yp=" << (y-map_height+1) << "\n" + ); +# endif + Verify(x+map_width >= 0); + Verify(x+map_width < width); + Verify(y-map_height+1 >= 0); + Verify(y-map_height+1 < height); + + MarkChangedLines(y-map_height+1, y); + + for(y=map_height; y>0; --y) + { + source_pointer = source_pointer_begin; + dest_pointer = dest_pointer_begin; + + UP_SOURCE(source_pointer_begin, pixelmap); + UP_DEST(dest_pointer_begin); + + for(x=map_width; x>0; --x) + { + color = *source_pointer++; //SOURCE_RIGHT + WRITEPIXEL(dest_pointer, operation, color) + RIGHT_DEST(dest_pointer); + } + } + break; + + case 90: + //-------------------------------------------- + // Opaque pixelmap, 90 degrees + // #Y----. + // X | + // | | + // | | + // .-----. + //-------------------------------------------- +# if defined(DEBUG) + Tell( + "Opaque 90: xp=" << (x+map_height) << + ", yp=" << (y+map_width) << "\n" + ); +# endif + Verify(x+map_height >= 0); + Verify(x+map_height < width); + Verify(y+map_width >= 0); + Verify(y+map_width < height); + + MarkChangedLines(y, y+map_width); + + for(y=map_height; y>0; --y) + { + source_pointer = source_pointer_begin; + dest_pointer = dest_pointer_begin; + + UP_SOURCE(source_pointer_begin, pixelmap); + RIGHT_DEST(dest_pointer_begin); + + for(x=map_width; x>0; --x) + { + color = *source_pointer++; //SOURCE_RIGHT + WRITEPIXEL(dest_pointer, operation, color) + DOWN_DEST(dest_pointer); + } + } + break; + + case 180: + //-------------------------------------------- + // Opaque pixelmap, 180 degrees + // .----X# + // | Y + // | | + // | | + // .-----. + //-------------------------------------------- +# if defined(DEBUG) + Tell( + "Opaque 180: xp=" << (x-map_width+1) << + ", yp=" << (y+map_height) << "\n" + ); +# endif + Verify(x-map_width+1 >= 0); + Verify(x-map_width+1 < width); + Verify(y+map_height >= 0); + Verify(y+map_height < height); + + MarkChangedLines(y, y+map_height); + + for(y=map_height; y>0; --y) + { + source_pointer = source_pointer_begin; + dest_pointer = dest_pointer_begin; + + UP_SOURCE(source_pointer_begin, pixelmap); + DOWN_DEST(dest_pointer_begin); + + for(x=map_width; x>0; --x) + { + color = *source_pointer++; //SOURCE_RIGHT + WRITEPIXEL(dest_pointer, operation, color) + LEFT_DEST(dest_pointer); + } + } + break; + + case 270: + //-------------------------------------------- + // Opaque pixelmap, 270 degrees + // .-----. + // | | + // | X + // | | + // .--Y--# + //-------------------------------------------- +# if defined(DEBUG) + Tell("Opaque 270: x=" << x << ", y=" << y << "\n"); + Tell("xp=" << x-map_height << ", yp=" << y-(map_width-1) << "\n"); +# endif + Verify(x-map_height >= 0); + Verify(x-map_height < width); + Verify(y-(map_width-1) >= 0); + Verify(y-(map_width-1) < height); + + MarkChangedLines(y-(map_width-1), y); + + for(y=map_height ; y>0; --y) + { + source_pointer = source_pointer_begin; + dest_pointer = dest_pointer_begin; + + UP_SOURCE(source_pointer_begin, pixelmap); + LEFT_DEST(dest_pointer_begin); + + for(x=map_width; x>0; --x) + { + Verify(dest_pointer >= pixelBuffer->Data.MapPointer); + Verify(dest_pointer < pixelBuffer->Data.MapPointer+ + (width*height)); + + color = *source_pointer++; //SOURCE_RIGHT + WRITEPIXEL(dest_pointer, operation, color) + UP_DEST(dest_pointer); + } + } + break; + } + } + else + { + switch (rotation) + { + default: + //-------------------------------------------- + // Transparent pixelmap, zero degrees + // .-----. + // | | + // | | + // Y | + // #X----. + //-------------------------------------------- +# if defined(DEBUG) + Tell( + "transparent zero: xp=" << (x+map_width) << + ", yp=" << (y-map_height+1) << "\n" + ); +# endif + Verify(x+map_width >= 0); + Verify(x+map_width < width); + Verify(y-map_height+1 >= 0); + Verify(y-map_height+1 < height); + + MarkChangedLines(y-map_height+1, y); + + for(y=map_height; y>0; --y) + { + source_pointer = source_pointer_begin; + dest_pointer = dest_pointer_begin; + + UP_SOURCE(source_pointer_begin, pixelmap); + UP_DEST(dest_pointer_begin); + + for(x=map_width; x>0; --x) + { + color = *source_pointer++; //SOURCE_RIGHT + if (color) + { + WRITEPIXEL(dest_pointer, operation, color) + } + RIGHT_DEST(dest_pointer); + } + } + break; + + case 90: + //-------------------------------------------- + // Transparent pixelmap, 90 degrees + // #Y----. + // X | + // | | + // | | + // .-----. + //-------------------------------------------- +# if defined(DEBUG) + Tell( + "transparent 90: xp=" << (x+map_height) << + ", yp=" << (y+map_width) << "\n" + ); +# endif + Verify(x+map_height >= 0); + Verify(x+map_height < width); + Verify(y+map_width >= 0); + Verify(y+map_width < height); + + MarkChangedLines(y, y+map_width); + + for(y=map_height; y>0; --y) + { + source_pointer = source_pointer_begin; + dest_pointer = dest_pointer_begin; + + UP_SOURCE(source_pointer_begin, pixelmap); + RIGHT_DEST(dest_pointer_begin); + + for(x=map_width; x>0; --x) + { + color = *source_pointer++; //SOURCE_RIGHT + if (color) + { + WRITEPIXEL(dest_pointer, operation, color) + } + DOWN_DEST(dest_pointer); + } + } + break; + + case 180: + //-------------------------------------------- + // Transparent pixelmap, 180 degrees + // .----X# + // | Y + // | | + // | | + // .-----. + //-------------------------------------------- +# if defined(DEBUG) + Tell( + "transparent 180: xp=" << (x-map_width+1) << + ", yp=" << (y+map_height) << "\n" + ); +# endif + Verify(x-map_width+1 >= 0); + Verify(x-map_width+1 < width); + Verify(y+map_height >= 0); + Verify(y+map_height < height); + + MarkChangedLines(y, y+map_height); + + for(y=map_height; y>0; --y) + { + source_pointer = source_pointer_begin; + dest_pointer = dest_pointer_begin; + + UP_SOURCE(source_pointer_begin, pixelmap); + DOWN_DEST(dest_pointer_begin); + + for(x=map_width; x>0; --x) + { + color = *source_pointer++; //SOURCE_RIGHT + if (color) + { + WRITEPIXEL(dest_pointer, operation, color) + } + LEFT_DEST(dest_pointer); + } + } + break; + + case 270: + //-------------------------------------------- + // Transparent pixelmap, 270 degrees + // .-----. + // | | + // | X + // | | + // .--Y--# + //-------------------------------------------- +# if defined(DEBUG) + Tell("transparent 270: x=" << x << ", y=" << y << "\n"); + Tell("xp=" << x-map_height << ", yp=" << y-(map_width-1) << "\n"); +# endif + Verify(x-map_height >= 0); + Verify(x-map_height < width); + Verify(y-(map_width-1) >= 0); + Verify(y-(map_width-1) < height); + + MarkChangedLines(y-(map_width-1), y); + + for(y=map_height ; y>0; --y) + { + source_pointer = source_pointer_begin; + dest_pointer = dest_pointer_begin; + + UP_SOURCE(source_pointer_begin, pixelmap); + LEFT_DEST(dest_pointer_begin); + + for(x=map_width; x>0; --x) + { + Verify(dest_pointer >= pixelBuffer->Data.MapPointer); + Verify(dest_pointer < pixelBuffer->Data.MapPointer+ + (width*height)); + + color = *source_pointer++; //SOURCE_RIGHT + if (color) + { + WRITEPIXEL(dest_pointer, operation, color) + } + UP_DEST(dest_pointer); + } + } + break; + } + } + Check_Fpu(); +} + +//=================================================================== +// DrawPixelMap8SingleColor +//=================================================================== +void + Video8BitBuffered::DrawPixelMap8SingleColor( + int color, + int /*bitmask*/, + Enumeration operation, + int rotation, + int x, int y, + PixelMap8 *pixelmap, + int sLeft, int sBottom, int sRight, int sTop + ) +{ +# if defined(DEBUG) + Tell( + "Video8BitBuffered::DrawPixelMap8SingleColor(<" << + x << ", " << + y << ">,<" << + sLeft << ", " << + sBottom << ", " << + sRight << ", " << + sTop << ">" << + ")\n" + ); +# endif + Check(this); + Verify(x >= bounds.bottomLeft.x); + Verify(x <= bounds.topRight.x); + Verify(y >= bounds.bottomLeft.y); + Verify(y <= bounds.topRight.y); + + int + map_width, + map_height, + map_max_y; + + Byte + source_data, + *source_pointer_begin, + *source_pointer, + *dest_pointer_begin, + *dest_pointer; + + //--------------------------------------------------------- + // If pixelbuffer is invalid, do nothing + //--------------------------------------------------------- + if (!valid) + { + Check_Fpu(); + return; + } + //--------------------------------------------------------- + // Ensure that source rectangle is properly specified + //--------------------------------------------------------- + Verify(pixelmap != NULL); + + Verify(sLeft >= 0); + Verify(sLeft <= sRight); + Verify(sRight < pixelmap->Data.Size.x); + + Verify(sBottom >= 0); + Verify(sBottom <= sTop); + Verify(sTop < pixelmap->Data.Size.y); + //--------------------------------------------------------- + // Convert to screen co-ordinates + //--------------------------------------------------------- + y = maximumY - y; + + map_max_y = pixelmap->Data.Size.y-1; + sTop = map_max_y - sTop; + sBottom = map_max_y - sBottom; + + map_width = sRight - sLeft + 1; + map_height = sBottom - sTop + 1; + +# if defined(DEBUG) + Tell("x=" << x << ", y=" << y << "\n"); + Tell("sTop=" << sTop << ", sBottom=" << sBottom << "\n"); + Tell("map_width=" << map_width << ", map_height=" << map_height << "\n"); +# endif + + Verify(map_width > 0); + Verify(map_width <= pixelmap->Data.Size.x); + Verify(map_height > 0); + Verify(map_height <= pixelmap->Data.Size.y); + + Verify(x >= 0); + Verify(x < width); + Verify(y >= 0); + Verify(y < height); + + //--------------------------------------------------------- + // We really need inverse bitmap here + //--------------------------------------------------------- +// bitmask = ~bitmask; + //--------------------------------------------------------- + // Prepare to draw bitmap + //--------------------------------------------------------- + Verify(pixelBuffer->Data.MapPointer != NULL); + + source_pointer_begin = + pixelmap->Data.MapPointer + + sLeft + + (sBottom * pixelmap->Data.Size.x); + + buildDestPointer( + x, y, + &dest_pointer_begin + ); + + { + switch (rotation) + { + default: + //-------------------------------------------- + // Single-color pixelmap, zero degrees + // .-----. + // | | + // | | + // Y | + // #X----. + //-------------------------------------------- +# if defined(DEBUG) + Tell( + "Single-color zero: xp=" << (x+map_width) << + ", yp=" << (y-map_height+1) << "\n" + ); +# endif + Verify(x+map_width >= 0); + Verify(x+map_width < width); + Verify(y-map_height+1 >= 0); + Verify(y-map_height+1 < height); + + MarkChangedLines(y-map_height+1, y); + + for(y=map_height; y>0; --y) + { + source_pointer = source_pointer_begin; + dest_pointer = dest_pointer_begin; + + UP_SOURCE(source_pointer_begin, pixelmap); + UP_DEST(dest_pointer_begin); + + for(x=map_width; x>0; --x) + { + source_data = *source_pointer++; //SOURCE_RIGHT + if (source_data) + { + WRITEPIXEL(dest_pointer, operation, color) + } + RIGHT_DEST(dest_pointer); + } + } + break; + + case 90: + //-------------------------------------------- + // Single-color pixelmap, 90 degrees + // #Y----. + // X | + // | | + // | | + // .-----. + //-------------------------------------------- +# if defined(DEBUG) + Tell( + "Single-color 90: xp=" << (x+map_height) << + ", yp=" << (y+map_width) << "\n" + ); +# endif + Verify(x+map_height >= 0); + Verify(x+map_height < width); + Verify(y+map_width >= 0); + Verify(y+map_width < height); + + MarkChangedLines(y, y+map_width); + + for(y=map_height; y>0; --y) + { + source_pointer = source_pointer_begin; + dest_pointer = dest_pointer_begin; + + UP_SOURCE(source_pointer_begin, pixelmap); + RIGHT_DEST(dest_pointer_begin); + + for(x=map_width; x>0; --x) + { + source_data = *source_pointer++; //SOURCE_RIGHT + if (source_data) + { + WRITEPIXEL(dest_pointer, operation, color) + } + DOWN_DEST(dest_pointer); + } + } + break; + + case 180: + //-------------------------------------------- + // Single-color pixelmap, 180 degrees + // .----X# + // | Y + // | | + // | | + // .-----. + //-------------------------------------------- +# if defined(DEBUG) + Tell( + "Single-color 180: xp=" << (x-map_width+1) << + ", yp=" << (y+map_height) << "\n" + ); +# endif + Verify(x-map_width+1 >= 0); + Verify(x-map_width+1 < width); + Verify(y+map_height >= 0); + Verify(y+map_height < height); + + MarkChangedLines(y, y+map_height); + + for(y=map_height; y>0; --y) + { + source_pointer = source_pointer_begin; + dest_pointer = dest_pointer_begin; + + UP_SOURCE(source_pointer_begin, pixelmap); + DOWN_DEST(dest_pointer_begin); + + for(x=map_width; x>0; --x) + { + source_data = *source_pointer++; //SOURCE_RIGHT + if (source_data) + { + WRITEPIXEL(dest_pointer, operation, color) + } + LEFT_DEST(dest_pointer); + } + } + break; + + case 270: + //-------------------------------------------- + // Single-color pixelmap, 270 degrees + // .-----. + // | | + // | X + // | | + // .--Y--# + //-------------------------------------------- +# if defined(DEBUG) + Tell("Single-color 270: x=" << x << ", y=" << y << "\n"); + Tell("xp=" << x-map_height << ", yp=" << y-map_width << "\n"); +# endif + Verify(x-map_height >= 0); + Verify(x-map_height < width); + Verify(y-map_width >= 0); + Verify(y-map_width < height); + + MarkChangedLines(y-map_width, y); + + for(y=map_height ; y>0; --y) + { + source_pointer = source_pointer_begin; + dest_pointer = dest_pointer_begin; + + UP_SOURCE(source_pointer_begin, pixelmap); + LEFT_DEST(dest_pointer_begin); + + for(x=map_width; x>0; --x) + { + Verify(dest_pointer >= pixelBuffer->Data.MapPointer); + Verify(dest_pointer < pixelBuffer->Data.MapPointer+ + (width*height)); + + source_data = *source_pointer++; //SOURCE_RIGHT + if (source_data) + { + WRITEPIXEL(dest_pointer, operation, color) + } + UP_DEST(dest_pointer); + } + } + break; + } + } + Check_Fpu(); +} + +//######################################################################## +//########################### L4BytePort ############################# +//######################################################################## + +L4BytePort::L4BytePort( + Video8BitBuffered *graphics_display, + const char *name, + int rotation +):GraphicsPort(graphics_display, name) +{ + // + // Save the base rotation value + // + baseRotation = rotation; + // + // Initialize conversion constants + // + maximumX = bounds.topRight.x - bounds.bottomLeft.x; + maximumY = bounds.topRight.y - bounds.bottomLeft.y; + // + // Overwrite the GraphicsPort::bounds data with rotated values + // for GraphView's benefit + // + switch(baseRotation) + { + default: + // do nothing + break; + + case 90: + case 270: + if (graphics_display != NULL) + { + Check(graphics_display); + bounds.bottomLeft.x = graphics_display->bounds.bottomLeft.y; + bounds.bottomLeft.y = graphics_display->bounds.bottomLeft.x; + bounds.topRight.x = graphics_display->bounds.topRight.y; + bounds.topRight.y = graphics_display->bounds.topRight.x; + } + break; + } + Check_Fpu(); +} + +L4BytePort::~L4BytePort() +{ + Check(this); + Check_Fpu(); +} + +Logical + L4BytePort::TestInstance() const +{ + return True; +} + +void + L4BytePort::ShowInstance(char *indent) +{ + Check(this); + + cout << indent << "L4BytePort:\n"; + + char + temp[80]; + + Str_Copy(temp,indent, 80); + Str_Cat(temp,"...", 80); + + cout << temp << "baseRotation =" << baseRotation << "\n"; + cout << temp << "maximumX =" << maximumX << "\n"; + cout << temp << "maximumY =" << maximumY << "\n"; + cout << temp << "bounds =" << bounds << "\n"; + cout << flush; + GraphicsPort::ShowInstance(temp); + Check_Fpu(); +} + +void + L4BytePort::DrawPoint( + int color, + Enumeration operation, + int x, int y + ) +{ + Check(this); + + if (graphicsDisplay == NULL) + { + Check_Fpu(); + return; + } + + Check(graphicsDisplay); + + int + xp, yp; + + convertPortPair(&xp, &yp, x, y); + + graphicsDisplay-> + DrawPoint( + color, + 0, + operation, + xp+bounds.bottomLeft.x, yp+bounds.bottomLeft.y + ); + Check_Fpu(); +} + +void + L4BytePort::DrawLine( + int color, + Enumeration operation, + int x1, int y1, + int x2, int y2, + Logical include_last_pixel + ) +{ + Check(this); + + if (graphicsDisplay == NULL) + { + Check_Fpu(); + return; + } + + Check(graphicsDisplay); + + int + x1p, y1p, + x2p, y2p; + + convertPortPair(&x1p, &y1p, x1, y1); + convertPortPair(&x2p, &y2p, x2, y2); + + graphicsDisplay-> + DrawLine( + color, + 0, + operation, + x1p+bounds.bottomLeft.x, y1p+bounds.bottomLeft.y, + x2p+bounds.bottomLeft.x, y2p+bounds.bottomLeft.y, + include_last_pixel + ); + Check_Fpu(); +} + +void + L4BytePort::DrawFilledRectangle( + int color, + Enumeration operation, + int x1, int y1, + int x2, int y2 + ) +{ + Check(this); + + if (graphicsDisplay == NULL) + { + Check_Fpu(); + return; + } + + Check(graphicsDisplay); + + int + x1p, y1p, + x2p, y2p; + + convertPortPair(&x1p, &y1p, x1, y1); + convertPortPair(&x2p, &y2p, x2, y2); + + graphicsDisplay-> + DrawFilledRectangle( + color, + 0, + operation, + x1p+bounds.bottomLeft.x, y1p+bounds.bottomLeft.y, + x2p+bounds.bottomLeft.x, y2p+bounds.bottomLeft.y + ); + Check_Fpu(); +} + +void + L4BytePort::DrawText( + int /*color*/, + Enumeration /*operation*/, + Logical /*opaque*/, + int /*rotation*/, + Enumeration /*fontNumber*/, + Logical /*vertical*/, + GraphicsDisplay::Justification /*justification*/, + Rectangle2D */*clippingRectanglepointer*/, + char */*stringPointer*/ + ) +{ +} + +void + L4BytePort::DrawBitMap( + int color, + Enumeration operation, + int rotation, + int x, int y, + BitMap *bitmap, + int sLeft, int sBottom, int sRight, int sTop + ) +{ + Check(this); + + if (graphicsDisplay == NULL) + { + Check_Fpu(); + return; + } + + Check(graphicsDisplay); + + if (bitmap == NULL) + { + Check_Fpu(); + return; + } + + if (bitmap->Data.MapPointer == NULL) + { + Check_Fpu(); + return; + } + + Check(bitmap); + + int + xp, yp; + + convertPortPair(&xp, &yp, x, y); + + rotation += baseRotation; + while (rotation < 0) { rotation += 360; } + while (rotation >= 360) { rotation -= 360; } + + graphicsDisplay-> + DrawBitMap( + color, + 0, + operation, + rotation, + xp+bounds.bottomLeft.x, yp+bounds.bottomLeft.y, + bitmap, + sLeft, sBottom, sRight, sTop + ); + Check_Fpu(); +} + +void + L4BytePort::DrawBitMapOpaque( + int color, + int background, + Enumeration operation, + int rotation, + int x, int y, + BitMap *bitmap, + int sLeft, int sBottom, int sRight, int sTop + ) +{ + Check(this); + + if (graphicsDisplay == NULL) + { + Check_Fpu(); + return; + } + + Check(graphicsDisplay); + + if (bitmap == NULL) + { + Check_Fpu(); + return; + } + + if (bitmap->Data.MapPointer == NULL) + { + Check_Fpu(); + return; + } + + Check(bitmap); + + int + xp, yp; + + convertPortPair(&xp, &yp, x, y); + + rotation += baseRotation; + while (rotation < 0) { rotation += 360; } + while (rotation >= 360) { rotation -= 360; } + + graphicsDisplay-> + DrawBitMapOpaque( + color, + background, + 0, + operation, + rotation, + xp+bounds.bottomLeft.x, yp+bounds.bottomLeft.y, + bitmap, + sLeft, sBottom, sRight, sTop + ); +} + +void + L4BytePort::DrawPixelMap8( + Enumeration operation, + Logical opaque, + int rotation, + int x, int y, + PixelMap8 *pixelmap, + int sLeft, int sBottom, int sRight, int sTop + ) +{ + Check(this); + + if (graphicsDisplay == NULL) + { + Check_Fpu(); + return; + } + + Check(graphicsDisplay); + + if (pixelmap == NULL) + { + Check_Fpu(); + return; + } + + if (pixelmap->Data.MapPointer == NULL) + { + Check_Fpu(); + return; + } + + Check(pixelmap); + + int + xp, yp; + + convertPortPair(&xp, &yp, x, y); + + rotation += baseRotation; + while (rotation < 0) { rotation += 360; } + while (rotation >= 360) { rotation -= 360; } + + graphicsDisplay-> + DrawPixelMap8( + NULL, + 0, + operation, + opaque, + rotation, + xp+bounds.bottomLeft.x, yp+bounds.bottomLeft.y, + pixelmap, + sLeft, sBottom, sRight, sTop + ); + Check_Fpu(); +} + +void + L4BytePort::DrawPixelMap8SingleColor( + int color, + Enumeration operation, + int rotation, + int x, int y, + PixelMap8 *pixelmap, + int sLeft, int sBottom, int sRight, int sTop + ) +{ + Check(this); + + if (graphicsDisplay == NULL) + { + Check_Fpu(); + return; + } + + Check(graphicsDisplay); + + if (pixelmap == NULL) + { + Check_Fpu(); + return; + } + + if (pixelmap->Data.MapPointer == NULL) + { + Check_Fpu(); + return; + } + + Check(pixelmap); + + int + xp, yp; + + convertPortPair(&xp, &yp, x, y); + + rotation += baseRotation; + while (rotation < 0) { rotation += 360; } + while (rotation >= 360) { rotation -= 360; } + + graphicsDisplay-> + DrawPixelMap8SingleColor( + color, + 0, + operation, + rotation, + xp+bounds.bottomLeft.x, yp+bounds.bottomLeft.y, + pixelmap, + sLeft, sBottom, sRight, sTop + ); + Check_Fpu(); +} + +void + L4BytePort::convertPortPair( + int *xp, + int *yp, + int x, + int y + ) +{ + switch(baseRotation) + { + default: + *xp = x; + *yp = y; + break; + + case 90: + *xp = y; + *yp = maximumY - x; + break; + + case 180: + *xp = maximumX - x; + *yp = maximumY - y; + break; + + case 270: + *xp = maximumX - y; + *yp = x; + break; + } + Check_Fpu(); +} + + + + + + + + + + diff --git a/CODE/RP/MUNGA_L4/L4VB8.HPP b/CODE/RP/MUNGA_L4/L4VB8.HPP new file mode 100644 index 0000000..9d95b25 --- /dev/null +++ b/CODE/RP/MUNGA_L4/L4VB8.HPP @@ -0,0 +1,278 @@ +//===========================================================================// +// File: L4V16.hpp // +// Project: MUNGA Brick: Applications-specific controls module // +// Contents: Interface specification for 16-bit video display // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- -----------------------------------------------------------// +// 02/08/95 CPB Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. All rights reserved // +// PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(L4VB8_HPP) +# define L4VB8_HPP + +# if !defined(GRAPH2D_HPP) +# include +# endif + + //######################################################################## + //######################### Video8BitBuffered ########################### + //######################################################################## + // + // X/Y values passed to these routines are assumed to be in + // the VIDEO DISPLAY COORDINATE SYSTEM, with (0,0) at the top left. + // + class Video8BitBuffered : + public GraphicsDisplay + { + public: + Video8BitBuffered(int x, int y); + Video8BitBuffered(PixelMap8 *pixel_map); + + ~Video8BitBuffered(); + + Logical + TestInstance() const; + + void + ShowInstance(char *indent); + + void + DrawPoint( + int color, + int bitmask, + Enumeration operation, + int x, int y + ); + + void + DrawLine( + int color, + int bitmask, + Enumeration operation, + int x1, int y1, + int x2, int y2, + Logical include_last_pixel + ); + + void + DrawFilledRectangle( + int color, + int bitmask, + Enumeration operation, + int x1, int y1, + int x2, int y2 + ); + + void + DrawText( + int color, + int bitmask, + Enumeration operation, + Logical opaque, + int rotation, + Enumeration fontNumber, + Logical vertical, + GraphicsDisplay::Justification justification, + Rectangle2D *clippingRectanglePtr, + char *stringPointer + ); + + void + DrawBitMap( + int color, + int bitmask, + Enumeration operation, + int rotation, + int x, int y, + BitMap *bitmap, + int sx1, int sy1, int sx2, int sy2 // these are SOURCE coordinates + ); + + void + DrawBitMapOpaque( + int color, + int background, + int bitmask, + Enumeration operation, + int rotation, + int x, int y, + BitMap *bitmap, + int sx1, int sy1, int sx2, int sy2 // these are SOURCE coordinates + ); + + void + DrawPixelMap8( + int *translation_table, + int bitmask, + Enumeration operation, + Logical opaque, + int rotation, + int x, int y, + PixelMap8 *pixelmap, + int sx1, int sy1, int sx2, int sy2 // these are SOURCE coordinates + ); + + void + DrawPixelMap8SingleColor( + int color, + int bitmask, + Enumeration operation, + int rotation, + int x, int y, + PixelMap8 *pixelmap, + int sx1, int sy1, int sx2, int sy2 // these are SOURCE coordinates + ); + + protected: + void + MarkChangedLines(int screenTop, int screenBottom); + + void + buildDestPointer( + int x, int y, + Byte **pixelPointer + ); + + Logical + valid, + createdPixelmap; + int + width, + height, + maximumX, + maximumY; + + public: + PixelMap8 + *pixelBuffer; + protected: + Word + *changedLine; + }; + + + //######################################################################## + //########################## L4BytePort ############################## + //######################################################################## + // + // X/Y values passed to these routines are assumed to be in + // the GRAPHICS COORDINATE SYSTEM, with (0,0) at the bottom left. + // + class L4BytePort : + public GraphicsPort + { + public: + L4BytePort( + Video8BitBuffered *graphics_display, + const char *name, + int rotation + ); + + ~L4BytePort(); + + Logical + TestInstance() const; + + void + ShowInstance(char *indent); + + void + DrawPoint( + int color, + Enumeration operation, + int x, int y + ); + + void + DrawLine( + int color, + Enumeration operation, + int x1, int y1, + int x2, int y2, + Logical include_last_pixel + ); + + void + DrawFilledRectangle( + int color, + Enumeration operation, + int x1, int y1, + int x2, int y2 + ); + + void + DrawText( + int color, + Enumeration operation, + Logical opaque, + int rotation, + Enumeration fontNumber, + Logical vertical, + GraphicsDisplay::Justification justification, + Rectangle2D *clippingRectanglePtr, + char *stringPointer + ); + + void + DrawBitMap( + int color, + Enumeration operation, + int rotation, + int x, int y, + BitMap *bitmap, + int sx1, int sy1, int sx2, int sy2 // these are SOURCE coordinates + ); + + void + DrawBitMapOpaque( + int color, + int background, + Enumeration operation, + int rotation, + int x, int y, + BitMap *bitmap, + int sx1, int sy1, int sx2, int sy2 // these are SOURCE coordinates + ); + + void + DrawPixelMap8( + Enumeration operation, + Logical opaque, + int rotation, + int x, int y, + PixelMap8 *pixelmap, + int sx1, int sy1, int sx2, int sy2 // these are SOURCE coordinates + ); + + void + DrawPixelMap8SingleColor( + int color, + Enumeration operation, + int rotation, + int x, int y, + PixelMap8 *pixelmap, + int sx1, int sy1, int sx2, int sy2 // these are SOURCE coordinates + ); + protected: + void + convertPortPair( + int *xp, + int *yp, + int x, + int y + ); + + //------------------------------------------------------------ + // Protected data + //------------------------------------------------------------ + int + baseRotation, + maximumX, + maximumY; + }; + +#endif diff --git a/CODE/RP/MUNGA_L4/L4VIDEO.CPP b/CODE/RP/MUNGA_L4/L4VIDEO.CPP new file mode 100644 index 0000000..959aaa2 --- /dev/null +++ b/CODE/RP/MUNGA_L4/L4VIDEO.CPP @@ -0,0 +1,6708 @@ +//===========================================================================// +// File: l4video.cpp // +// Project: MUNGA Brick: Video Renderer Manager // +// Contents: Interface specification Video Renderer Manager // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 01/11/95 GAC Initial coding. // +// 07/11/95 KEO Modify video resource format. // +// 02/08/96 KEO Add rubble entry to video resource. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995-1996, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide. // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL. // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(DOOR_HPP) +# include +#endif + +#if !defined(DOORFRAM_HPP) +# include +#endif + +#if !defined(EYECANDY_HPP) +# include +#endif + +#if !defined(L4VIDRND_HPP) +# include +#endif + +#if !defined(L4VIDEO_HPP) +# include +#endif + +#if !defined(MATRIX_HPP) +# include +#endif + +#if !defined(MOVER_HPP) +# include +#endif + +#if !defined(JMOVER_HPP) +# include +#endif + +#if !defined(PLAYER_HPP) +# include +#endif + +#if !defined(CAMSHIP_HPP) +# include +#endif + +#if !defined(DIRECTOR_HPP) +# include +#endif + +#if !defined(MISSION_HPP) +# include +#endif + +#if !defined(CULTURAL_HPP) +# include +#endif + +#if !defined(NTTMGR_HPP) +# include +#endif + +#if !defined(APP_HPP) +# include +#endif + +#include + +// +// Includes for the DPL libraries +// +#include +#include +#include +#include +#include +// +// You can enable or disable these traces here for quicker rebuilding during +// profile testing, but for production they should be all turned off! +// +//#define TRACE_VIDEO_CULL_SETUP +//#define TRACE_VIDEO_VEHICLE_RENDERABLES +// #define TRACE_VIDEO_ALL_RENDERABLES +// +// These are other traces you can use to extract data +// +#if defined(TRACE_VIDEO_LOAD_OBJECT) + static BitTrace Video_Load_Object("Video Load Object"); + #define SET_VIDEO_LOAD_OBJECT() Video_Load_Object.Set() + #define CLEAR_VIDEO_LOAD_OBJECT() Video_Load_Object.Clear() +#else + #define SET_VIDEO_LOAD_OBJECT() + #define CLEAR_VIDEO_LOAD_OBJECT() +#endif + +#if defined(TRACE_VIDEO_CONSTRUCT_ROOT) + static BitTrace Video_Construct_Root("Video Construct Root"); + #define SET_VIDEO_CONSTRUCT_ROOT() Video_Construct_Root.Set() + #define CLEAR_VIDEO_CONSTRUCT_ROOT() Video_Construct_Root.Clear() +#else + #define SET_VIDEO_CONSTRUCT_ROOT() + #define CLEAR_VIDEO_CONSTRUCT_ROOT() +#endif +// +// This is the time spent fetching and processing the pickpoint information +// from the DPL renderer. +// +#if defined(TRACE_VIDEO_PICKPOINT) + static BitTrace Video_Pickpoint("Video Pickpoint"); + #define SET_VIDEO_PICKPOINT() Video_Pickpoint.Set() + #define CLEAR_VIDEO_PICKPOINT() Video_Pickpoint.Clear() +#else + #define SET_VIDEO_PICKPOINT() + #define CLEAR_VIDEO_PICKPOINT() +#endif +// +// Traces the time spent setting up the video culling parameters +// +#if defined(TRACE_VIDEO_CULL_SETUP) + static BitTrace Video_Cull_Setup("Video Cull Setup"); +# define SET_VIDEO_CULL_SETUP() Video_Cull_Setup.Set() +# define CLEAR_VIDEO_CULL_SETUP() Video_Cull_Setup.Clear() +#else +# define SET_VIDEO_CULL_SETUP() +# define CLEAR_VIDEO_CULL_SETUP() +#endif +// +// This trace covers the entire time spent executing renderables as one +// transition. It goes up when the execute implimentation starts running +// over the all iterator and goes down when it's done. +// +#if defined(TRACE_VIDEO_RENDERABLES) + static BitTrace Video_Renderables("Video Renderables"); + #define SET_VIDEO_RENDERABLES() Video_Renderables.Set() + #define CLEAR_VIDEO_RENDERABLES() Video_Renderables.Clear() +#else + #define SET_VIDEO_RENDERABLES() + #define CLEAR_VIDEO_RENDERABLES() +#endif +// +// Traces time spent executing renderables that belong to a vehicle entity +// (currently Mech, VTV or BTPlayer) +// +#if defined(TRACE_VIDEO_VEHICLE_RENDERABLES) + static BitTrace Video_Vehicle_Renderables("Video Vehicle Renderables"); +# define SET_VIDEO_VEHICLE_RENDERABLES() Video_Vehicle_Renderables.Set() +# define CLEAR_VIDEO_VEHICLE_RENDERABLES() Video_Vehicle_Renderables.Clear() +#else +# define SET_VIDEO_VEHICLE_RENDERABLES() +# define CLEAR_VIDEO_VEHICLE_RENDERABLES() +#endif +// +// This trace will transition as each individual renderable is executed. +// It will buzz and cause serious impact to the accuracy of the trace but is +// good for identifying time-eating individual renderables +// +#if defined(TRACE_VIDEO_ALL_RENDERABLES) + static BitTrace Video_All_Renderables("Video All Renderables"); +# define SET_VIDEO_ALL_RENDERABLES() Video_All_Renderables.Set() +# define CLEAR_VIDEO_ALL_RENDERABLES() Video_All_Renderables.Clear() +#else +# define SET_VIDEO_ALL_RENDERABLES() +# define CLEAR_VIDEO_ALL_RENDERABLES() +#endif +// +// This is the routine that does a DPL_FlushArticulations on the batch of +// DCS's that we've been holding during rendering, flushing them all to +// the card in a big batch +// +#if defined(TRACE_VIDEO_BATCH_FLUSH) + static BitTrace Video_Batch_Flush("Video Batch Flush"); +# define SET_VIDEO_BATCH_FLUSH() Video_Batch_Flush.Set() +# define CLEAR_VIDEO_BATCH_FLUSH() Video_Batch_Flush.Clear() +#else +# define SET_VIDEO_BATCH_FLUSH() +# define CLEAR_VIDEO_BATCH_FLUSH() +#endif +// +// This trace shows the time spent doing the "frame done" processing where the +// renderer waits for the DPL card to become ready and then issues a command +// to start the scene drawing. An additional batch flush can happen here. +// If USE_ONE_VIDEO_TRACE is turned on, data from this trace will show up as +// part of the Video_Renderer trace. +// +#if defined(TRACE_VIDEO_RENDERER_FRAME_DONE) +# if defined(USE_ONE_VIDEO_TRACE) +# define SET_VIDEO_RENDERER_FRAME_DONE() Video_Renderer.Set() +# define CLEAR_VIDEO_RENDERER_FRAME_DONE() Video_Renderer.Clear() +# else + static BitTrace Video_Renderer_Frame_Done("Video Renderer Frame Done"); +# define SET_VIDEO_RENDERER_FRAME_DONE() Video_Renderer_Frame_Done.Set() +# define CLEAR_VIDEO_RENDERER_FRAME_DONE() Video_Renderer_Frame_Done.Clear() +# endif +#else +# define SET_VIDEO_RENDERER_FRAME_DONE() +# define CLEAR_VIDEO_RENDERER_FRAME_DONE() +#endif +// +// The following traces are specifically designed for profileing the low level +// DPL routines in Division's libraries. You need to link to a special "profile" +// version of the division libraries for these to work. If you enable them +// with a production libdpl you will get NO traces. If you disable them and +// try to link to a profile version of libdpl you will get link errors. Sorry +// but this is the most efficient way of connecting the c++ trace routines to +// the C code of division's libraries. +// +// There are switches in the DPL libraries that handle turning these functions +// on and off in the profile version. +// +//#define TRACE_DPL_LOAD_OBJECT +//#define TRACE_DPL_TRANSPUTER_LINK // will buzz +//#define TRACE_DPL_DO_OUTSW // will buzz +//#define TRACE_DPL_OUTINT32 // will buzz + +#if defined(TRACE_DPL_LOAD_OBJECT) + static BitTrace DPL_Load_Object("DPL Load Object"); + + extern "C" + { + void Set_DPL_Load_Object(); + void Clear_DPL_Load_Object(); + } + + void + Set_DPL_Load_Object() + { + DPL_Load_Object.Set(); + } + + void + Clear_DPL_Load_Object() + { + DPL_Load_Object.Clear(); + } +#endif + +#if defined(TRACE_DPL_TRANSPUTER_LINK) + static BitTrace DPL_Transputer_Link("DPL Transputer Link"); + + extern "C" + { + void Set_DPL_Transputer_Link(); + void Clear_DPL_Transputer_Link(); + } + + void + Set_DPL_Transputer_Link() + { + DPL_Transputer_Link.Set(); + } + + void + Clear_DPL_Transputer_Link() + { + DPL_Transputer_Link.Clear(); + } +#endif + +#if defined(TRACE_DPL_DO_OUTSW) + static BitTrace DPL_do_outsw("DPL do_outsw"); + + extern "C" + { + void Set_DPL_do_outsw(); + void Clear_DPL_do_outsw(); + } + + void + Set_DPL_do_outsw() + { + DPL_do_outsw.Set(); + } + + void + Clear_DPL_do_outsw() + { + DPL_do_outsw.Clear(); + } +#endif + +#if defined(TRACE_DPL_OUTINT32) + static BitTrace DPL_outint32("DPL outint32"); + + extern "C" + { + void Set_DPL_outint32(); + void Clear_DPL_outint32(); + } + + void + Set_DPL_outint32() + { + DPL_outint32.Set(); + } + + void + Clear_DPL_outint32() + { + DPL_outint32.Clear(); + } +#endif + +// +// The following trace will probably be obsolete soon +// + +#if 0 +#if defined(TRACE_VIDEO_FIRST_FRAME_DONE) + static BitTrace Video_First_Frame_Done("Video First Frame Done"); +# define SET_VIDEO_FIRST_FRAME_DONE() Video_First_Frame_Done.Set() +# define CLEAR_VIDEO_FIRST_FRAME_DONE() Video_First_Frame_Done.Clear() +#else +# define SET_VIDEO_FIRST_FRAME_DONE() +# define CLEAR_VIDEO_FIRST_FRAME_DONE() +#endif +#endif + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Definitions of various debugging switches +// +#define DEBUG_SPECIAL_CALLBACK 0 // 0 = none, 1 = print special, 2 = real noisy +#define DEBUG_CREATE_CALLBACK 0 // 0 = none, +#define PRINT_THE_PFX False // Set to true and the pfx definition will print when it is read in. +#define RAPID_SECT_PIXEL True // True if you want to use the rapidsectpixel call for intersections +#define PARTICLE_TEST False // True to issue a stream of particles at the detected intersect point +#define PRINT_PICKPOINT_TEST False // True to print data whenever the intersect changes +#define NOISY_RENDERER False // True enables a lot of printouts as the renderer makes/kills object +#define USE_TRACKER_STRUCTURE False // True to enable the full tracker structure that holds damage zone names & such +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Definitions of system constants used only in this file +// +#define MAX_SPECIAL_ARGUMENTS 25 // Maximum number of arguments a "special" callback can handle +#define MAX_SPECIAL_SIZE 512 // Maximum size (characters) of a "special" +#define dpl_arg_sep '~' // seperator used when parsing dpl argument string +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Entity + *Entity_Being_Created = 0; // !!! temp, till callback handlers become a class +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// These extern "c" routines and constants are from startdpl or from dpl +// itself and need to be here. +// +extern "C" { + extern const int + x_size, // x size of the screen (from startdpl) + y_size; // y size of the screen (startdpl) + void + dpl_TexmapTexels2D ( // A routine from DPL we normally couldn't access + dpl_TEXMAP *tm, + uint32 *texels, + int32 u_size, + int32 v_size, + int32 bytes_per_texel); + int + screen_resolution( // Sets up the screen resolution (startdpl) + char *dpl_argv ), + explode_args( // Parses DPLARG system environmental (startdpl) + char **argv, + char *dpl_args, + char sep ); + char + *dpl_TypeToString( // Converts a DPL type code into a string (libdpl) + dpl_TYPE t); + int32 + dpl_DrawSceneComplete(void); // missing definition (libdpl) +}; +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// see DPLReportPerfStats() +extern "C" const int32 __sect_time; +extern "C" const int32 __last_cull_time; +extern "C" const int32 __last_draw_time; +extern "C" const int32 __last_frame_time; +extern "C" const int32 __last_pxpl_time; +extern "C" const int32 __last_frame_prims; + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// dump_frame_buffer() declaration +void dump_frame_buffer( + dpl_VIEW *eye, + int32 x_size, + int32 y_size, + Logical antialias); + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// The following are definitions of DPL callback functions. These are called +// by the dpl file loader as it is loading graphics files so we can do material +// substitution and set special attributes on geometry & such. +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// The "special" callback is called whenever a "special" field is processed in +// incomming geometry. +// dPL special callback function type. +// typedef void (dpl_SPECIAL_CALLBACK)(dpl_TYPE type, void *handle, +// char8 *special, uint32 special_len); + +static void + TestSpecialCallBack( + dpl_TYPE type, + void *handle, + char8 *special, + uint32 special_len) +{ + char + *args[MAX_SPECIAL_ARGUMENTS], + **argptr, + *argstring; + int + argcount; + float + u0, + v0, + du, + dv; + int32 + immunity; + char +// NameBuff[80], + TempBuff[MAX_SPECIAL_SIZE + 1]; + #if USE_TRACKER_STRUCTURE + dpl_tracker + *this_tracker; + #endif + + if(special_len > MAX_SPECIAL_SIZE) + { + DEBUG_STREAM<<"SPECIAL was bigger than "< MAX_SPECIAL_SIZE); + } + strncpy(TempBuff, special,special_len); + TempBuff[special_len] = 0; + if(TempBuff[special_len-1] != 0) + { + DEBUG_STREAM<<"Caution, the following SPECIAL was not null terminated\n"; + printf("SPECIAL->%08x: %s, %s\n", handle, dpl_TypeToString(type), TempBuff); + } + #if DEBUG_SPECIAL_CALLBACK >= 1 + printf("SPECIAL->%08x: %s, %s\n", handle, dpl_TypeToString(type), TempBuff); + #endif +// +// Scan all the argument start points into an array for easier processing. +// also avoids non-reentrand problem with strtok +// + argstring = TempBuff; + for(argcount = 0; argcount= 2 + Tell("Calling SetObjectAdditiveLODs on an object\n"); + #endif + // REMOVE dpl_SetObjectAdditiveLODs to run with older renderers + dpl_SetObjectAdditiveLODs ( (dpl_OBJECT *)handle); + } + } + break; + case dpl_type_lod: + break; + case dpl_type_geogroup: + #if USE_TRACKER_STRUCTURE + this_tracker = (dpl_tracker *)dpl_GetAppSpecific(handle); + #endif + for(argptr = args; + *argptr; + argptr++) + { + if (strncmp(*argptr, "dz_", 3) == 0) + { + #if DEBUG_SPECIAL_CALLBACK >= 2 + Tell("Doing SPECIAL GEOGROUP Damage zone "); + #endif + + #if USE_TRACKER_STRUCTURE + if (this_tracker) + { + #if DEBUG_SPECIAL_CALLBACK >= 2 + Tell("marked\n"); + #endif + strncpy(this_tracker->dz_name, *argptr, MAX_DZ_NAME_LENGTH); + this_tracker->dz_name[MAX_DZ_NAME_LENGTH - 1] = 0; + #endif + //--------------------------------------------- + // lookup damage zone index in global namelist + //--------------------------------------------- + if (Entity_Being_Created->damageZones) + { + Check_Pointer(Entity_Being_Created->damageZones); + + int + damage_zone_index; + + damage_zone_index = + Entity_Being_Created->GetDamageZoneIndex(*argptr); + + if (damage_zone_index != -1) + { + #if USE_TRACKER_STRUCTURE + this_tracker->Damage_Zone_Number = damage_zone_index; + #else + if(dpl_GetAppSpecific(handle)) + Fail("AppSpecific already set\n"); + dpl_PutAppSpecific(handle, (void *)(damage_zone_index+1)); + #endif + } + else + { + DEBUG_STREAM << endl << "Damage zone '" << + *argptr << "' not in table." << endl; + } + } + #if USE_TRACKER_STRUCTURE + } + else + { + #if DEBUG_SPECIAL_CALLBACK >= 2 + Tell("NOT marked\n"); + #endif + } + #endif + } + else if(strcmp(*argptr,"PUNCH") == 0) + { + #if DEBUG_SPECIAL_CALLBACK >= 2 + Tell("Doing SPECIAL GEOGROUP Punchize\n"); + #endif + dpl_Punchize((dpl_GEOGROUP *)handle); + } + else if(strcmp(*argptr,"DAMAGE") == 0) + { + #if DEBUG_SPECIAL_CALLBACK >= 2 + Tell("Doing SPECIAL GEOGROUP damagize\n"); + #endif + if(*(++argptr)) + { + int + status; + dpl_MATERIAL *damagize_material = dpl_LookupMaterial ( *argptr, dpl_lookup_normal, &status ); + if(damagize_material) + { + dpl_Damagize((dpl_GEOGROUP *)handle, damagize_material); + } + else + { + DEBUG_STREAM<<"SPECIAL GEOGROUP DAMAGE couldn't find material "<<*argptr<<"\n"; + Verify(damagize_material); + } + } + else + { + DEBUG_STREAM<<"SPECIAL GEOGROUP DAMAGE no material name \n"; + Verify(*argptr); + } + } + else if(strcmp(*argptr,"WIREFRAME") == 0) + { + #if DEBUG_SPECIAL_CALLBACK >= 2 + Tell("Doing SPECIAL GEOGROUP WIREFRAME\n"); + #endif + dpl_SetGeogroupWireframe((dpl_GEOGROUP *)handle, True); + } + else if(strcmp(*argptr,"GEOMETRIZE") == 0) + { + #if DEBUG_SPECIAL_CALLBACK >= 2 + Tell("Doing SPECIAL GEOGROUP geometrize\n"); + #endif + if(*(++argptr)) + { + dpl_GEOMETRY + *geometry_ptr; + long + geometrize_code; + int + geometry_id = 0; + sscanf( + *argptr, + "%lx", + &geometrize_code); + do + { + geometry_ptr = dpl_GetGeogroupGeometry((dpl_GEOGROUP *)handle,geometry_id); + if(geometry_ptr) + { + dpl_Geometrize(geometry_ptr,geometrize_code); + } + geometry_id++; + } while(geometry_ptr); + } + else + { + DEBUG_STREAM<<"SPECIAL GEOGROUP GEOMETRIZE has no geometrize code\n"; + Verify(*argptr); + } + } + else if(strcmp(*argptr,"DRAWLAST") == 0) + { + #if DEBUG_SPECIAL_CALLBACK >= 2 + Tell("Doing SPECIAL GEOGROUP DRAWLAST\n"); + #endif + dpl_SetGeogroupDrawLast((dpl_GEOGROUP *)handle, True); + dpl_FlushGeogroup((dpl_GEOGROUP *)handle); + } + else if(strcmp(*argptr,"BLINK") == 0) + { + #if DEBUG_SPECIAL_CALLBACK >= 2 + Tell("SPECIAL GEOGROUP BLINK is not supported\n"); + #endif + } + else + { + DEBUG_STREAM<<"SPECIAL GEOGROUP "<<*argptr<<" is not a geogroup modifier\n"; + } + } + break; + case dpl_type_geometry: + break; + case dpl_type_material: + for(argptr = args; + *argptr; + argptr++) + { + if(strcmp(*argptr,"IMMUNE") == 0) + { + #if DEBUG_SPECIAL_CALLBACK >= 2 + Tell("Doing SPECIAL MATERIAL IMMUNE\n"); + #endif + if(*(++argptr)) + { + immunity = atol(*argptr); + dpl_SetMaterialFogImmunity ( (dpl_MATERIAL *)handle, immunity ); + dpl_FlushMaterial((dpl_MATERIAL *)handle); + } + else + { + DEBUG_STREAM<<"SPECIAL MATERIAL IMMUNE has no immune code\n"; + Verify(*argptr); + } + } + else + { + DEBUG_STREAM<<"SPECIAL MATERIAL "<<*argptr<<" is not a material modifier\n"; + } + } + break; + case dpl_type_texture: + for(argptr = args; + *argptr; + argptr++) + { + if(strcmp(*argptr,"SCROLL") == 0) + { + #if DEBUG_SPECIAL_CALLBACK >= 2 + Tell("Doing SCROLL\n"); + #endif + u0 = v0 = du = dv = 0.0; + if(*(++argptr)) + u0 = atof(*argptr); + else + { + DEBUG_STREAM<<"SPECIAL TECTURE SCROLL missing u0\n"; + Verify(*argptr); + } + if(*(++argptr)) + v0 = atof(*argptr); + else + { + DEBUG_STREAM<<"SPECIAL TECTURE SCROLL missing v0\n"; + Verify(*argptr); + } + if(*(++argptr)) + du = atof(*argptr); + else + { + DEBUG_STREAM<<"SPECIAL TECTURE SCROLL missing du\n"; + Verify(*argptr); + } + if(*(++argptr)) + dv = atof(*argptr); + else + { + DEBUG_STREAM<<"SPECIAL TECTURE SCROLL missing dv\n"; + Verify(*argptr); + } + dpl_SetTextureScroll ( + (dpl_TEXTURE *)handle, + u0, + v0, + du, + dv); + dpl_FlushTexture((dpl_TEXTURE *)handle); + } + else if(strcmp(*argptr,"FAKESIZE") == 0) + { + #if DEBUG_SPECIAL_CALLBACK >= 2 + Tell("Doing SPECIAL TEXURE FAKESIZE\n"); + #endif + int + size, offset; + if(*(++argptr)) + size = atoi(*argptr); + else + { + DEBUG_STREAM<<"SPECIAL TEXTURE FAKESIZE missing size\n"; + Verify(*argptr); + } + if(*(++argptr)) + offset = atoi(*argptr); + else + { + DEBUG_STREAM<<"SPECIAL TEXTURE FAKESIZE missing offset\n"; + Verify(*argptr); + } + dpl_FakeTextureSize((dpl_TEXTURE *)handle,size,offset); + dpl_FlushTexture((dpl_TEXTURE *)handle); + } + else + { + DEBUG_STREAM<<"SPECIAL TEXTURE "<<*argptr<<" is not a texture modifier\n"; + } + } + break; + case dpl_type_texmap: + break; + case dpl_type_ramp: + break; + } +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// The TestCreateCallBack callback is called whenever a dpl node of the indicated +// type is created while loading a DPL graphics file. +/* dPL create/delete callback function type. */ +//typedef void (dpl_CREATE_DELETE_CALLBACK)(dpl_TYPE type, void *handle); + +static void + TestCreateCallBack( + dpl_TYPE type, + #if DEBUG_CREATE_CALLBACK>=1 + void *handle + #else + void * + #endif + ) +{ + // + // get a pointer to the node structure (first part of most dpl types) + // + #if DEBUG_CREATE_CALLBACK >=1 + printf("CREATE->%08x: %s\n", handle, dpl_TypeToString(type)); + #endif + switch(type) + { + case dpl_type_error: + break; + case dpl_type_scene: + break; + case dpl_type_zones: + break; + case dpl_type_view: + break; + case dpl_type_instance: + break; + case dpl_type_dcs: + break; + case dpl_type_light: + break; + case dpl_type_object: + break; + case dpl_type_lod: + break; + case dpl_type_geogroup: + #if USE_TRACKER_STRUCTURE + { + dpl_tracker *this_tracker = new dpl_tracker; + this_tracker->This_Entity = Entity_Being_Created; + this_tracker->dz_name[0] = 0; + this_tracker->Damage_Zone_Number = -1; // no damage zone (default) + if(dpl_GetAppSpecific(handle)) + DEBUG_STREAM<<"app_specific hook already set!\n"; + dpl_PutAppSpecific(handle, this_tracker); + + break; + } + #endif + case dpl_type_geometry: + break; + case dpl_type_material: + break; + case dpl_type_texture: + break; + case dpl_type_texmap: + break; + case dpl_type_ramp: + break; + } +} + +//############################################################################# +// Code to setup and handle material substitutions. +//############################################################################# +// +NameList + *materialSubstitutionList = NULL; + +/* dPL material name callback function type. */ +//typedef char8 *(dpl_MATERIAL_NAME_CALLBACK)(char8 *mat_name); +char8* + substituteMaterial( + char8 *source + ) +{ + static char + buffer[MATERIAL_NAME_BUFFER_LENGTH]; + NameList::Entry + *entry; + const char + *search, + *replace, + *pc; + int + len; + //---------------------------------------------- + // perform text substitution + // first match in the sub list gets substituted + // materialSubstitutionList is a pre-prepared global namelist. + //---------------------------------------------- + entry = materialSubstitutionList->GetFirstEntry(); + while (entry) + { + search = entry->GetName(); + if (search && *search && (pc = strstr(source, search)) != NULL) + { + replace = entry->GetChar(); + *buffer = '\0'; + + len = pc - source; + while (*replace == '<') + { + ++replace; + --len; + } + if (len > 0) + { + strncat(buffer, source, len); + } + + pc += strlen(search); + len = strlen(replace); + while (len && *(replace+len-1) == '>') + { + --len; + if (*pc) { ++pc; } + } + if (len > 0) + { + strncat(buffer, replace, len); + } + + Str_Cat(buffer, pc, MATERIAL_NAME_BUFFER_LENGTH); + Str_Copy(source, buffer, MATERIAL_NAME_BUFFER_LENGTH); + break; + } + entry = entry->GetNextEntry(); + } + return source; +} +//----------------------------------------------------------------------------- +//--------------------------DPL video resource object-------------------------- +//----------------------------------------------------------------------------- +//############################################################################# +//############################ L4VideoObject ############################ +//############################################################################# + +L4VideoObject::L4VideoObject( + const char *filename, + ResourceType resource_type, + Enumeration renderer_modes, // RendererModes + float blink_period, + float percent_time_on +) +{ + Check_Pointer(filename); + + Str_Copy(objectFilename, filename, sizeof(objectFilename)); + //--------------------------------------------------------------- + // pad objectFilename with nulls so all .res files are identical + //--------------------------------------------------------------- + char + *p = objectFilename + strlen(filename) + 1, + *c = objectFilename + sizeof(objectFilename); + + for (; p < c; ++p) + { *p = '\0'; } + + resourceType = resource_type; + rendererModes = renderer_modes; + blinkPeriod = blink_period; + percentTimeOn = percent_time_on; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +L4VideoObject::~L4VideoObject() +{ +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + L4VideoObject::TestInstance() const +{ + Verify( strlen(objectFilename) < sizeof(objectFilename) ); + return True; +} + +//############################################################################# +//######################## L4VideoObjectWrapper ######################### +//############################################################################# + +L4VideoObjectWrapper::L4VideoObjectWrapper( + L4VideoObject *video_object, + Logical delete_object +) +{ + Check_Pointer(video_object); // do not use Check() + + videoObject = video_object; + deleteObject = delete_object; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +L4VideoObjectWrapper::~L4VideoObjectWrapper() +{ + if (deleteObject) + { + Unregister_Pointer(videoObject); + delete videoObject; + } +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + L4VideoObjectWrapper::TestInstance() const +{ + if (videoObject) + { + Check_Pointer(videoObject); // do not use Check() + } + return True; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// static +int + L4VideoObjectWrapper::BuildVideoObjectChainFromResource( + ChainOf *video_chain, + ResourceDescription *video_resource + ) +{ + //do not Check(this) - static + Check(video_chain); + Check(video_resource); + + const char + *video_pointer; + int + object_count, + index; + long + object_size; + L4VideoObject + *video_object; + L4VideoObjectWrapper + *video_wrapper; + + //---------------------------------------------------- + // convert video resource into chain of video objects + //---------------------------------------------------- + video_pointer = (char *)video_resource->resourceAddress; + Check_Pointer(video_pointer); + + object_count = *((int *)video_pointer); + video_pointer += sizeof(int); + + object_size = sizeof(L4VideoObject); + Verify( video_resource->resourceSize == sizeof(int) + object_count * object_size ); + + //Tell("video chain: ("<GetObjectFilename()<<"' 0x"<GetRendererModes()); + + video_wrapper = new L4VideoObjectWrapper(video_object, False); + Register_Object(video_wrapper); + + video_chain->Add(video_wrapper); + } + + //Tell(dec<<"\n"); + + return object_count; +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// static +void + L4VideoObjectWrapper::DeleteVideoObjectChain( + ChainOf *video_chain + ) +{ + //do not Check(this) - static + Check(video_chain); + + ChainIteratorOf + video_iterator(video_chain); + L4VideoObjectWrapper + *video_wrapper; + + while ((video_wrapper = video_iterator.ReadAndNext()) != NULL) + { + Check(video_wrapper); + + Unregister_Object(video_wrapper); + delete video_wrapper; + } + return; +} + +//----------------------------------------------------------------------------- +//-------------------Actual DPL video renderer starts below-------------------- +//----------------------------------------------------------------------------- + +UserHeap* DPLRenderer::DPLHeap = NULL; + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Constructor for DPLRenderer +// +DPLRenderer::DPLRenderer( + RendererRate calibration_rate, + RendererComplexity calibration_complexity, + RendererPriority calibration_priority, + InterestType interest_type, + InterestDepth depth_calibration +): + VideoRenderer( + calibration_rate, + calibration_complexity, + calibration_priority, + interest_type, + depth_calibration + ), + projectile_list(NULL), + dplObjectCacheSocket(NULL, False), + dplJointToDCSTranslatorSocket(NULL,False), + dplRenderableSocket(NULL) +{ + char + Eye_Type[50], + *Eye_Arg, // Controls generation of the eye point + *DPL_Arg; // Points to DPLARG environment pointer once we get it + int + psfx_number; +// int +// i; // Temporary loop counter + float + eye_x, + eye_y, + eye_z, + eye_x_rot, + eye_y_rot, + eye_z_rot; +// +// Initialize a bunch of the variables to their starting values +// + eyeRelative = False; + completeCycleNeeded = False; + lastAppState = 0; + fogUpdating = True; + fogRed = 0.0f; + fogBlue = 0.0f; + fogGreen = 0.0f; + fogNear = 0.0f; + fogFar = 0.0f; + searchLightFogRed = 0.0f; + searchLightFogGreen = 0.0f; + searchLightFogBlue = 0.0f; + searchLightFogNear = 0.0f; + searchLightFogFar = 0.0f; + noSearchLightFogRed = 0.0f; + noSearchLightFogGreen = 0.0f; + noSearchLightFogBlue = 0.0f; + noSearchLightFogNear = 0.0f; + noSearchLightFogFar = 0.0f; + clipNear = 0.0f; + clipFar = 0.0f; + backgroundRed = 0.0f; + backgroundGreen = 0.0f; + backgroundBlue = 0.0f; + viewAngle = 30.0f; + dplMainView = NULL; + dplDeathZone = NULL; + dplMainZone = NULL; + vehicleReticle = NULL; + dplHitInstance = NULL; + dplHitDCS = NULL; + dplHitGeoGroup = NULL; + dplHitGeometry = NULL; + delayedDCSCount = 0; + myUniqueID = 0; + ambientLight = NULL; + sceneLightDCS = NULL; + sceneLight = NULL; + sceneLightCount = 0; + + worldToEyeMatrix = LinearMatrix::Identity; // the current world to eye transform for our linked entity + currentFrameTime = Now(); // the time at the start of renderable execution + + Verify(!DPLHeap); + DPLHeap = new UserHeap("DPL Heap", 2000000); + Register_Object(DPLHeap); + + // + // Clear the myPSFXDescriptons array to all zeros so we can detect attempts + // to use uninitialized items. + // + for( psfx_number = 0; psfx_number < MAX_PSFX_COUNT; psfx_number++) + { + myPSFXDescriptons[psfx_number] = NULL; + } +// +// These guys will come out of a world environment variable eventually +// + eye_x = 0.0f; + eye_y = 10.0f; + eye_z = 0.0f; + eye_x_rot = 0.0f; + eye_y_rot = 0.0f; + eye_z_rot = 0.0f; +// +// Get pointers to environmentals containing DPL startup arguments and +// eye positioning information. If L4EYES is present set the renderer +// variable that controls the hooking up of the eye position. +// + Eye_Type[0] = 0; + DPL_Arg = getenv("DPLARG"); + Eye_Arg = getenv("L4EYES"); + if(Eye_Arg) + { + sscanf( + Eye_Arg, + "%f %f %f %f %f %f %s", + &eye_x, + &eye_y, + &eye_z, + &eye_x_rot, + &eye_y_rot, + &eye_z_rot, + Eye_Type); + + printf("%f, %f, %f %f, %f, %f\n", + eye_x, + eye_y, + eye_z, + eye_x_rot, + eye_y_rot, + eye_z_rot); + + Disconnected_Eye = True; // tells vidrend:: to request outside view of linked entity + if(*Eye_Type == 'r') + { + DEBUG_STREAM<<"DPLRenderer::DPLRenderer Eye will be offset relative to vehicle\n"; + eyeRelative = True; + } + } +// +// If the argument was empty, we can't render !!! should exit sensiblly +// + if(!DPL_Arg) + { + DEBUG_STREAM << "DPLARG must be set for the Division card to come up\n"; + Verify(DPL_Arg); + } +// +// If we're still here, try to interpret and setup the screen resolution +// requested by DPLARG. The screen_resolution function is Phil's routine +// in startdpl. +// + if (screen_resolution ( DPL_Arg ) == 0) + { + DEBUG_STREAM << "DPLARG is bad, I couldn't understand video format\n"; + Verify(DPL_Arg); + } +// +// Breakdown the DPLARGS string using expload_args from startdpl, then feed +// the results to the dpl_Init routine to get DPL up and running. +// + char *argv[32]; + int argc = explode_args ( argv, DPL_Arg, dpl_arg_sep ); + dpl_Init ( argc, argv ); + // + // Setup the file paths for geometry and texture loading + // +// dpl_SetObjectFilePath ( ".\\video", "\\video", "..\\video" ); +// dpl_SetTexmapFilePath ( ".\\video", "\\video", "..\\video" ); +// dpl_SetMaterialFilePath ( ".\\video", "\\video", "..\\video" ); +// dpl_SetObjectFilePath ( ".\\video", "", "" ); +// cout<tex = dpl_LookupTexture ( cp, dpl_lookup_normal, &status ); + #if PRINT_THE_PFX + printf ( "texture => %s\n", cp ); + #endif + // + // The remander of these statements get the rest of the PFX data + // + cp = fgets ( line, 255, fp ); + status = sscanf ( cp, + "%x %d %f %f\n", + &psfx_info->identifier, &psfx_info->maximum_issue, &psfx_info->release_period, &psfx_info->rate ); + if(status < 4) + { + cout<<"pfx file "<px, &psfx_info->py, &psfx_info->pz, &psfx_info->pv ); + if(status < 4) + { + cout<<"pfx file "<velx, &psfx_info->vely, &psfx_info->velz, + &psfx_info->velxv, &psfx_info->velyv, &psfx_info->velzv ); + if(status < 6) + { + cout<<"pfx file "<rad, &psfx_info->radv, &psfx_info->exp, &psfx_info->expv, &psfx_info->dexp, &psfx_info->dexpv ); + if(status < 6) + { + cout<<"pfx file "<accelx, &psfx_info->accely, &psfx_info->accelz, + &psfx_info->accelxv, &psfx_info->accelyv, &psfx_info->accelzv ); + if(status < 6) + { + cout<<"pfx file "<atten, &psfx_info->attenv ); + if(status < 2) + { + cout<<"pfx file "<sRi,&psfx_info->sGi,&psfx_info->sBi,&psfx_info->sAi,&psfx_info->sRiv,&psfx_info->sGiv,&psfx_info->sBiv,&psfx_info->sAiv ); + if(status < 8) + { + cout<<"pfx file "<sRo,&psfx_info->sGo,&psfx_info->sBo,&psfx_info->sAo,&psfx_info->sRov,&psfx_info->sGov,&psfx_info->sBov,&psfx_info->sAov ); + if(status < 8) + { + cout<<"pfx file "<eRi,&psfx_info->eGi,&psfx_info->eBi,&psfx_info->eAi,&psfx_info->eRiv,&psfx_info->eGiv,&psfx_info->eBiv,&psfx_info->eAiv ); + if(status < 8) + { + cout<<"pfx file "<eRo,&psfx_info->eGo,&psfx_info->eBo,&psfx_info->eAo,&psfx_info->eRov,&psfx_info->eGov,&psfx_info->eBov,&psfx_info->eAov ); + if(status < 8) + { + cout<<"pfx file "<colour_warp, &psfx_info->alpha_warp ); + if(status < 2) + { + cout<<"pfx file "<dur, &psfx_info->durv ); + if(status < 2) + { + cout<<"pfx file "<\n" ); + /*{{{ trace the psfx*/ + printf ( "psfx_info->tex = 0x%x\n", + psfx_info->tex ); + printf ( "identifier = 0x%x ", + psfx_info->identifier ); + printf ( "maximum_issue = %d ", + psfx_info->maximum_issue ); + printf ( "release_period = %f\n", + psfx_info->release_period ); + printf ( "rate = %f ", + psfx_info->rate ); + printf ( "px = %f ", + psfx_info->px ); + printf ( "py = %f ", + psfx_info->py ); + printf ( "pz = %f ", + psfx_info->pz ); + printf ( "pv = %f\n", + psfx_info->pv ); + printf ( "velx = %f ", + psfx_info->velx ); + printf ( "vely = %f ", + psfx_info->vely ); + printf ( "velz = %f\n", + psfx_info->velz ); + printf ( "velxv = %f ", + psfx_info->velxv ); + printf ( "velyv = %f ", + psfx_info->velyv ); + printf ( "velzv = %f\n", + psfx_info->velzv ); + printf ( "rad = %f ", + psfx_info->rad ); + printf ( "radv = %f\n", + psfx_info->radv ); + printf ( "exp = %f ", + psfx_info->exp ); + printf ( "expv = %f ", + psfx_info->expv ); + printf ( "dexp = %f ", + psfx_info->dexp ); + printf ( "dexpv = %f\n", + psfx_info->dexpv ); + printf ( "accelx = %f ", + psfx_info->accelx ); + printf ( "accely = %f ", + psfx_info->accely ); + printf ( "accelz = %f ", + psfx_info->accelz ); + printf ( "accelxv = %f ", + psfx_info->accelxv ); + printf ( "accelyv = %f ", + psfx_info->accelyv ); + printf ( "accelzv = %f\n", + psfx_info->accelzv ); + printf ( "atten = %f ", + psfx_info->atten ); + printf ( "attenv = %f\n", + psfx_info->attenv ); + printf ( "sRi = %f ", + psfx_info->sRi ); + printf ( "sGi = %f ", + psfx_info->sGi ); + printf ( "sBi = %f ", + psfx_info->sBi ); + printf ( "sAi = %f\n", + psfx_info->sAi ); + printf ( "sRiv = %f ", + psfx_info->sRiv ); + printf ( "sGiv = %f ", + psfx_info->sGiv ); + printf ( "sBiv = %f ", + psfx_info->sBiv ); + printf ( "sAiv = %f\n", + psfx_info->sAiv ); + printf ( "sRo = %f ", + psfx_info->sRo ); + printf ( "sGo = %f ", + psfx_info->sGo ); + printf ( "sBo = %f ", + psfx_info->sBo ); + printf ( "sAo = %f\n", + psfx_info->sAo ); + printf ( "sRov = %f ", + psfx_info->sRov ); + printf ( "sGov = %f ", + psfx_info->sGov ); + printf ( "sBov = %f ", + psfx_info->sBov ); + printf ( "sAov = %f\n", + psfx_info->sAov ); + printf ( "eRi = %f ", + psfx_info->eRi ); + printf ( "eGi = %f ", + psfx_info->eGi ); + printf ( "eBi = %f ", + psfx_info->eBi ); + printf ( "eAi = %f\n", + psfx_info->eAi ); + printf ( "eRiv = %f ", + psfx_info->eRiv ); + printf ( "eGiv = %f ", + psfx_info->eGiv ); + printf ( "eBiv = %f ", + psfx_info->eBiv ); + printf ( "eAiv = %f\n", + psfx_info->eAiv ); + printf ( "eRo = %f ", + psfx_info->eRo ); + printf ( "eGo = %f ", + psfx_info->eGo ); + printf ( "eBo = %f ", + psfx_info->eBo ); + printf ( "eAo = %f\n", + psfx_info->eAo ); + printf ( "eRov = %f ", + psfx_info->eRov ); + printf ( "eGov = %f ", + psfx_info->eGov ); + printf ( "eBov = %f ", + psfx_info->eBov ); + printf ( "eAov = %f\n", + psfx_info->eAov ); + printf ( "colour_warp = %f ", + psfx_info->colour_warp ); + printf ( "alpha_warp = %f ", + psfx_info->alpha_warp ); + printf ( "dur = %f ", + psfx_info->dur ); + printf ( "durv = %f\n", + psfx_info->durv ); + #endif + return(psfx_info); +} +// +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// New INI file handler +// routine to read in an environment from a notation file and setup lights, +// spfx and such... +// +void + DPLRenderer::DPLReadINIPage( + NotationFile *master_notation_file, + const char *starting_page_name, + Mission *mission, + Logical debug_printing) +{ + float + red, + green, + blue, + x_rotate, + y_rotate, + z_rotate; + NameList + *cache_namelist, + *light_namelist, + *psfx_namelist, + *specialfx_namelist, + *include_pages, + *path_pages; + NameList::Entry + *entry; + const char + *next_include_page_name, + *TempStringPtr, + *compare_source; + + if (debug_printing) + cout<<"DPLReadINIPage processing "<MakeEntryList(starting_page_name, "objectpath")) != NULL) + { + Register_Object(path_pages); + // + // Recursively process all the include pages + // + for( entry = path_pages->GetFirstEntry(); + entry; + entry = entry->GetNextEntry()) + { + dpl_AddToObjectFilePath((char *)entry->dataReference, dpl_path_user); + if (debug_printing) + { + DEBUG_STREAM << "objectpath '" << dpl_GetObjectFilePath() << "'" << endl; + } + } + Unregister_Object(path_pages); + delete path_pages; + } + if ((path_pages = master_notation_file->MakeEntryList(starting_page_name, "texmappath")) != NULL) + { + Register_Object(path_pages); + // + // Recursively process all the include pages + // + for( entry = path_pages->GetFirstEntry(); + entry; + entry = entry->GetNextEntry()) + { + dpl_AddToTexmapFilePath((char *)entry->dataReference, dpl_path_user); + if (debug_printing) + { + DEBUG_STREAM << "texmappath '" << dpl_GetTexmapFilePath() << "'" << endl; + } + } + Unregister_Object(path_pages); + delete path_pages; + } + if ((path_pages = master_notation_file->MakeEntryList(starting_page_name, "materialpath")) != NULL) + { + Register_Object(path_pages); + // + // Recursively process all the include pages + // + for( entry = path_pages->GetFirstEntry(); + entry; + entry = entry->GetNextEntry()) + { + dpl_AddToMaterialFilePath((char *)entry->dataReference, dpl_path_user); + if (debug_printing) + { + DEBUG_STREAM << "materialpath '" << dpl_GetMaterialFilePath() << "'" << endl; + } + } + Unregister_Object(path_pages); + delete path_pages; + } + + if (master_notation_file->GetEntry(starting_page_name, "priorityobjectpath", &TempStringPtr)) + { + dpl_AddToObjectFilePath((char *)TempStringPtr, dpl_path_system); + if (debug_printing) + { DEBUG_STREAM << "priorityobjectpath '" << TempStringPtr << "'" << endl; } + } + if (master_notation_file->GetEntry(starting_page_name, "prioritytexmappath", &TempStringPtr)) + { + dpl_AddToTexmapFilePath((char *)TempStringPtr, dpl_path_system); + if (debug_printing) + { DEBUG_STREAM << "prioritytexmappath '" << TempStringPtr << "'" << endl; } + } + if (master_notation_file->GetEntry(starting_page_name, "prioritymaterialpath", &TempStringPtr)) + { + dpl_AddToMaterialFilePath((char *)TempStringPtr, dpl_path_system); + if (debug_printing) + { DEBUG_STREAM << "prioritymaterialpath '" << TempStringPtr << "'" << endl; } + } + // + // Get a the list of dpl objects that should be loaded into cache and load them + // + if ((cache_namelist = master_notation_file->MakeEntryList(starting_page_name, "cache")) != NULL) + { + dpl_OBJECT + *dpl_a_object; + Register_Object(cache_namelist); + for( entry = cache_namelist->GetFirstEntry(); + entry; + entry = entry->GetNextEntry()) + { + dpl_a_object = dpl_LoadObject((char *)entry->dataReference, dpl_load_normal); + if(!dpl_a_object) + DEBUG_STREAM<<"Unable to cache "<<(char *)entry->dataReference<<"\n"; + else + { + if(debug_printing) + cout<<"Caching "<<(char *)entry->dataReference<<"\n"; + } + } + Unregister_Object(cache_namelist); + delete cache_namelist; + } + // + // Setup the clip range + // + if(master_notation_file->GetEntry(starting_page_name, "clip" ,&TempStringPtr)) + { + sscanf( + TempStringPtr, + "%f %f", + &clipNear, + &clipFar); + dpl_SetViewClipPlanes ( dplMainView, clipNear, clipFar ); + if(debug_printing) + cout<<"Clip Range "<GetEntry(starting_page_name, "backgnd" ,&TempStringPtr)) + { + sscanf( + TempStringPtr, + "%f %f %f", + &backgroundRed, + &backgroundGreen, + &backgroundBlue); + dpl_SetViewBackGround ( dplMainView, backgroundRed, backgroundGreen, backgroundBlue); + if(debug_printing) + cout<<"Background Color "<GetEntry(starting_page_name, "viewangle" ,&TempStringPtr)) + { + sscanf( + TempStringPtr, + "%f", + &viewAngle); + dpl_SetPipeWindow (0, 0, 0, x_size, y_size); + SetViewAngle(viewAngle); + dpl_SetViewPipe ( dplMainView, 0); + if(debug_printing) + cout<<"View Angle "<GetEntry(starting_page_name, "fog" ,&TempStringPtr)) + { + sscanf( + TempStringPtr, + "%f %f %f %f %f", + &fogNear, + &fogFar, + &fogRed, + &fogGreen, + &fogBlue); + searchLightFogRed = fogRed; + searchLightFogGreen = fogGreen; + searchLightFogBlue = fogBlue; + searchLightFogNear = fogNear; + searchLightFogFar = fogFar; + noSearchLightFogRed = fogRed; + noSearchLightFogGreen = fogGreen; + noSearchLightFogBlue = fogBlue; + noSearchLightFogNear = fogNear; + noSearchLightFogFar = fogFar; + // Force a 0-0 black fog on startup + dpl_SetViewFog (dplMainView, dpl_fog_type_pixel_lin, 0.0, 0.0, 0.0, 0.01, 0.05 ); + if(debug_printing) + cout<<"Fog "<GetEntry(starting_page_name, "nosearchlightfog" ,&TempStringPtr)) + { + sscanf( + TempStringPtr, + "%f %f %f %f %f", + &noSearchLightFogNear, + &noSearchLightFogFar, + &noSearchLightFogRed, + &noSearchLightFogGreen, + &noSearchLightFogBlue); + if(debug_printing) + cout<<"nosearchlightfog "<GetEntry(starting_page_name, "ambient" ,&TempStringPtr)) + { + sscanf( + TempStringPtr, + "%f %f %f ", + &red, + &green, + &blue); + ambientLight = dpl_NewLight(); + Register_Pointer(ambientLight); + + dpl_SetLightType ( ambientLight, dpl_light_type_ambient ); + dpl_SetLightColor ( ambientLight, red, green, blue ); + dpl_FlushLight ( ambientLight ); + if(debug_printing) + cout<<"Ambient Light "<MakeEntryList(starting_page_name, "light")) != NULL) + { + Register_Object(light_namelist); + // + // HACK !!! All the lights must (temporarily) be defined on a single page. + // The lights and their DCS's should really be stored in a light object on + // a chain, or as an actual entity in the simulation. This line will throw + // an exception if this rule is violated + // + if(light_namelist->EntryCount() != 0) + { + if(sceneLightCount != 0) + { + Fail("All lights must be defined on a single INI file page!\n"); + } + // + // Create storage space for the dpl_LIGHT and dpl_DCS structures + // + sceneLightCount = light_namelist->EntryCount(); + if (sceneLightCount) + { + sceneLightDCS = new (dpl_DCS (*[sceneLightCount])); + Register_Pointer(sceneLightDCS); + sceneLight = new (dpl_LIGHT (*[sceneLightCount])); + Register_Pointer(sceneLight); + } + int current_entry(0); + for( entry = light_namelist->GetFirstEntry(); + entry; + entry = entry->GetNextEntry(), ++current_entry) + { + // + // Read the parameters for the light + // + sscanf( + (char *)entry->dataReference, + "%f %f %f %f %f %f", + &red, + &green, + &blue, + &x_rotate, + &y_rotate, + &z_rotate); + if(debug_printing) + cout<<"Light "<<(char *)entry->dataReference<<"\n"; + // + // Create and rotate a dcs to hold the light, and the light itself + // + Verify(current_entry <= sceneLightCount); + sceneLight[current_entry] = dpl_NewLight(); + Register_Pointer(sceneLight[current_entry]); + sceneLightDCS[current_entry] = dpl_NewDCS(); + Register_Pointer(sceneLightDCS[current_entry]); + + dpl_AddDCSToScene ( sceneLightDCS[current_entry] ); + dpl_SetLightType ( sceneLight[current_entry], dpl_light_type_directional ); + dpl_SetLightColor ( sceneLight[current_entry], red, green, blue); + dpl_SetLightDCS ( sceneLight[current_entry], sceneLightDCS[current_entry] ); + dpl_RotateDCS ( sceneLightDCS[current_entry], z_rotate, dpl_Z ); + dpl_RotateDCS ( sceneLightDCS[current_entry], x_rotate, dpl_X ); + dpl_RotateDCS ( sceneLightDCS[current_entry], y_rotate, dpl_Y ); + dpl_FlushLight ( sceneLight[current_entry] ); + dpl_FlushDCS ( sceneLightDCS[current_entry] ); + } + } + // + // Get rid of the light entry list + // + Unregister_Object(light_namelist); + delete light_namelist; + } + // + // Get a the list of PSFX effects we should load into RAM + // + if ((psfx_namelist = master_notation_file->MakeEntryList(starting_page_name, "psfx")) != NULL) + { + const char + *psfx_file_name; + int + psfx_number; + Register_Object(psfx_namelist); + // + // create all the PSFX on the current page + // + for( entry = psfx_namelist->GetFirstEntry(); + entry; + entry = entry->GetNextEntry()) + { + psfx_number = atoi(entry->GetName()+4); + psfx_file_name = entry->GetChar(); + if(debug_printing) + cout<<"psfx"< MAX_PSFX_COUNT-1) + { + Fail("PSFX id number was not in the allowed range"); + } + // + // See if we are overwriting an existing psfx + // + if(myPSFXDescriptons[psfx_number]) + { + cout<<"psfx#"<MakeEntryList(starting_page_name, "specialfx")) != NULL) + { + char + *texture_name; + const char + *effect_page_name; + int + status, + spfx_number, + spfx_type, + spfx_count, + spfx_repeats; + float + spfx_size, + spfx_velocity, + spfx_bias, + spfx_y_off, + spfx_cook_r, + spfx_cook_g, + spfx_cook_b, + spfx_varience, + spfx_gravity, + spfx_cool, + spfx_ocool; + dpl_TEXTURE + *effect_texture; + + Register_Object(specialfx_namelist); + // + // create all the effects on the current page + // + for( entry = specialfx_namelist->GetFirstEntry(); + entry; + entry = entry->GetNextEntry()) + { + spfx_number = atoi(entry->GetName()+9); + // + // Get the page with this effect on it + // + effect_page_name = entry->GetChar(); + if(debug_printing) + cout<<"specialfx"<GetEntry(effect_page_name, "type", &spfx_type); + master_notation_file->GetEntry(effect_page_name, "size", &spfx_size); + master_notation_file->GetEntry(effect_page_name, "velocity", &spfx_velocity); + master_notation_file->GetEntry(effect_page_name, "v_bias", &spfx_bias); + master_notation_file->GetEntry(effect_page_name, "y_off", &spfx_y_off); + master_notation_file->GetEntry(effect_page_name, "variance", &spfx_varience); + master_notation_file->GetEntry(effect_page_name, "gravity", &spfx_gravity); + master_notation_file->GetEntry(effect_page_name, "count", &spfx_count); + master_notation_file->GetEntry(effect_page_name, "repeats", &spfx_repeats); + master_notation_file->GetEntry(effect_page_name, "cook", &TempStringPtr); + sscanf( + TempStringPtr, + "%f %f %f", + &spfx_cook_r, + &spfx_cook_g, + &spfx_cook_b); + master_notation_file->GetEntry(effect_page_name, "cool", &TempStringPtr); + sscanf( + TempStringPtr, + "%f %f", + &spfx_cool, + &spfx_ocool); + // + // install the effect + // + master_notation_file->GetEntry(effect_page_name, "texture" ,&TempStringPtr); + texture_name = SKIPPY_CAST(char*, TempStringPtr); + effect_texture = dpl_LookupTexture ( texture_name, dpl_lookup_normal, &status ); + + if (effect_texture == NULL) + DEBUG_STREAM<<"couldn't find texture "<MakeEntryList(starting_page_name, "include")) != NULL) + { + Register_Object(include_pages); + // + // Recursively process all the include pages + // + for( entry = include_pages->GetFirstEntry(); + entry; + entry = entry->GetNextEntry()) + { + // Get the name of the next include page + next_include_page_name = (char *)entry->dataReference; + // Process the next page recursively through this routine + DPLReadINIPage( + master_notation_file, + next_include_page_name, + mission, + debug_printing); + if(debug_printing) + cout<<"DPLReadINIPage returned to "<GetEntry(starting_page_name, "compare" ,&compare_source)) + { + Logical + match; + NameList + *branch_pages; + CString + compare_strings[10], + wild_card("*"), + token_string, + target_string, + master_compare_string(compare_source); + int + token_count; + ResourceFile + *this_resource_file; + // + // Get a pointer to our resource file so we can find the name of the map + // resource later in this process. + // + Check(application); + this_resource_file = application->GetResourceFile(); + Check(this_resource_file); + // + // Print the compare string + // + if(debug_printing) + cout<<"compare = "<FindResourceDescription(mission->GetMapID()))->resourceName; +// cout<GetMissionTime(); +// cout<GetMissionWeather(); +// cout<GetScenarioName(); +// cout<MakeEntryList(starting_page_name,"branch"); + Register_Object(branch_pages); + for( entry = branch_pages->GetFirstEntry(); + entry; + entry = entry->GetNextEntry()) + { + CString + branch_command, + match_string; + int + compare_token; + // + // Get the text of the branch command and print it + // + branch_command = (char *)entry->dataReference; + if(debug_printing) + cout<<"branch = "<GetFileName() << + "' NO MATCH FOUND!!" << endl; + } + } +} +// +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Read environment +// routine to read in an environment from a notation file and setup lights, +// spfx and such... +// +void + DPLRenderer::DPLReadEnvironment(Mission *mission) +{ + char + *L4DPLcfg; +// const char +// *cc; + + NotationFile + *renderer_environment; + + Logical + debug_printing; + // + // Get the name of the notation file from an environmental + // + L4DPLcfg = getenv("L4DPLCFG"); + if (!L4DPLcfg) + { + DEBUG_STREAM<<"L4DPLCFG not defined, using dpldflt.ini!\n"; + L4DPLcfg = "dpldflt.ini"; + } + // + // Read the environment out of a notation file + // + renderer_environment = new NotationFile(L4DPLcfg); + Register_Object(renderer_environment); + if (renderer_environment->PageCount() == 0) + { + DEBUG_STREAM<<"Renderer config notation file "<PageCount() == 0); + } + // + // Register the notation file and check it + // + Check(renderer_environment); + if (renderer_environment->PageExists("main")) + { + if (!(renderer_environment->GetLogicalEntry("main", "debug", &debug_printing))) + { + debug_printing=False; + } + DPLReadINIPage( + renderer_environment, + "main", + mission, + debug_printing); +#if 0 + if ((cc = dpl_GetObjectFilePath()) == NULL || *cc == NULL) + { + dpl_SetObjectFilePath ( ".\\video", NULL, NULL ); + } + if ((cc = dpl_GetTexmapFilePath()) == NULL || *cc == NULL) + { + dpl_SetTexmapFilePath ( ".\\video", NULL, NULL ); + } + if ((cc = dpl_GetMaterialFilePath()) == NULL || *cc == NULL) + { + dpl_SetMaterialFilePath ( ".\\video", NULL, NULL ); + } +#endif + } + else + { + if (!(renderer_environment->GetLogicalEntry("dpl_config", "debug", &debug_printing))) + { + debug_printing=False; + } + cout<<"READING OLD FORMAT INI FILE '"<< + renderer_environment->GetFileName()<< + "'---hope this works\n"; + dpl_SetObjectFilePath ( ".\\video", NULL, NULL ); + dpl_SetTexmapFilePath ( ".\\video", NULL, NULL ); + dpl_SetMaterialFilePath ( ".\\video", NULL, NULL ); + DPLReadINIPage( + renderer_environment, + "dpl_config", + mission, + debug_printing); + } + if (debug_printing) + { + DEBUG_STREAM << "ObjectFilePath '" << dpl_GetObjectFilePath() << "'" << endl; + DEBUG_STREAM << "TexmapFilePath '" << dpl_GetTexmapFilePath() << "'" << endl; + DEBUG_STREAM << "MaterialFilePath '" << dpl_GetMaterialFilePath() << "'" << endl; + } + // + // Close the notation file + // + Verify( !renderer_environment->IsDirty() ); + Unregister_Object(renderer_environment); + delete renderer_environment; + // + // Flush all the things we've set/changed here + // + dpl_FlushView ( dplMainView); + return; +} +// +//############################################################################# +// Destructor for the video renderer +//############################################################################# +// +DPLRenderer::~DPLRenderer() +{ + int + psfx_number; + //------------------------------------------------------ + // release allocated memory used by dump_frame_buffer() + //------------------------------------------------------ + dump_frame_buffer(NULL, NULL, NULL, NULL); + // + // Delete any memory allocated to hold psfx effect descriptions + // + for( psfx_number = 0; psfx_number < MAX_PSFX_COUNT; psfx_number++) + { + if(myPSFXDescriptons[psfx_number]) + { + delete myPSFXDescriptons[psfx_number]; + Unregister_Pointer(myPSFXDescriptons[psfx_number]); + myPSFXDescriptons[psfx_number] = NULL; + } + } + // + //~~~~~~~~~~~~~~~~~~ + // Delete all Lights + //~~~~~~~~~~~~~~~~~~ + // + if (ambientLight) + { + Check_Pointer(ambientLight); + Unregister_Pointer(ambientLight); + dpl_DeleteLight(ambientLight); + } + if (sceneLightDCS && sceneLight) + { + Check_Pointer(sceneLightDCS); + for(int ii=0;ii= 1); + Verify(load_position <=12); + Check(bitmap_to_load); + Check_Pointer(local_storage); + // + // Figure out the position to start copying the data at + // + word_pointer = bitmap_to_load->Data.MapPointer; + if(load_position & 0x1) + { + pixel_pointer = local_storage + 4096; + } + else + { + pixel_pointer = local_storage; + } + // + // Find the bit position to merge the data into + // + switch(load_position) + { + case 1: + case 2: + turn_on = 0x0000f000; + turn_off = 0xffff0fff; + break; + case 3: + case 4: + turn_on = 0x00000f00; + turn_off = 0xfffff0ff; + break; + case 5: + case 6: + turn_on = 0x00f00000; + turn_off = 0xff0fffff; + break; + case 7: + case 8: + turn_on = 0x000f0000; + turn_off = 0xfff0ffff; + break; + case 9: + case 10: + turn_on = 0xf0000000; + turn_off = 0x0fffffff; + break; + case 11: + case 12: + turn_on = 0x0f000000; + turn_off = 0xf0ffffff; + break; + } + // + // Actually process the texels + // + bit_number = 15; + for(y = 0; y < 32; y++) + { + for(x = 0; x < 128; x++) + { + if((*word_pointer & (1< + dplMainZone, // DPL Zone this stuff will live in (for culling) + dpl_isect_mode_obj, // type of intersections to do on this object + NULL); // intersection mask for the object + Register_Object(this_root); + // + // Select which script to construct + // + switch(script_select) + { + case 0: // Shock wave + { + // + // Load object(s) we will be using for the explosions + // + object_1 = dpl_LoadObject("shock.bgf", dpl_load_normal); + // + // Setup control variables and transforms we need + // + Vector3D scaling_velocity_1(3.5, 3.5, 3.5); + Vector3D velocity_accel_1(0.0, 0.0, 0.0); + LinearMatrix explosion_1_offset(True); + // + // Create the scaling explosion renderables + // + ScalingExplosionRenderable *explosion_1 = + new ScalingExplosionRenderable( + entity, // Entity to attach the renderable to + ScalingExplosionRenderable::Dynamic, // How/when to execute the renderable + object_1, // This will be the scaling explosion object + dplMainZone, // DPL Zone this stuff will live in (for culling) + dpl_isect_mode_obj, // type of intersections to do on this object + NULL, // intersection mask for the object + this_root->GetDCS(), // the parent DCS we will be offsetting from + &explosion_1_offset, // offset matrix to be applied prior to joint DCS + &scaling_velocity_1, // Effect control vector, Y is acceleration, X, Z are velocity + &velocity_accel_1, + 0.0f, + NULL); // -.25 gravity is normal + Register_Object(explosion_1); + // + // Create a sweep renderable to drive the material morph + // + SweepRenderable *sweep_1 = + new SweepRenderable( + entity, // Entity to attach the renderable to + SweepRenderable::Dynamic, // How/when to execute the renderable + 0.5f, // How long to take to sweep from 0 to 1 + 1, // number of times to cycle before stopping + NULL); + Register_Object(sweep_1); + // + // Lookup a texture that we can use for the morphing materials + // + int + status; + dpl_TEXTURE *effect_texture = + dpl_LookupTexture ( "btfx:firesmoke1_scr_tex", dpl_lookup_normal, &status ); + if (effect_texture == NULL) + DEBUG_STREAM<<"couldn't find texture btfx:firesmoke1_scr_tex for an effect\n"; + // + // Setup a morph material renderable for each explosion shape + // + MorphMaterialRenderable *morph_material_1 = + new MorphMaterialRenderable( + entity, // Entity to attach the renderable to + MorphMaterialRenderable::Dynamic, // How/when to execute the renderable + 1.0f,1.0f,1.0f, // Material's ambient component + 1.0f,1.0f,1.0f, // Material's emissive component + 1.0f,1.0f,1.0f, // Material's diffuse component + 0.0f,0.0f,0.0f,0.0, // Material's specular component + 4.0f,0.2f,-0.05f, // Material's opacity + effect_texture, // Material's texture pointer + 0.0f, // Material's Z dither value + 0, // Material's Fog Imunity value + 0.5f,0.5f,0.5f, // Material's ambient component + 0.5f,0.5f,0.5f, // Material's emissive component + 0.5f,0.5f,0.5f, // Material's diffuse component + 0.0f,0.0f,0.0f,0.0, // Material's specular component +// 0.25f,0.25f,-0.05f, // Material's opacity + 0.1f,0.1f,-0.05f, // Material's opacity + 0.0f, // Material's Z dither value + sweep_1->GetSweepAttribute()); + Register_Object(morph_material_1); + dpl_INSTANCE *explosion_1_instance = dpl_GetDCSInstance(explosion_1->GetDCS(), 1); + if(!explosion_1_instance) + Fail("explosion_1_instance came back null\n"); + dpl_SetInstanceFrontMaterial(explosion_1_instance, morph_material_1->GetMaterial()); + dpl_FlushInstance(explosion_1_instance); + break; + } + case 1: // Big explosion + { + // + // Load object(s) we will be using for the explosions + // + object_1 = dpl_LoadObject("exp.bgf", dpl_load_normal); + // + // Setup control variables and transforms we need + // + Vector3D scaling_velocity_1(0.15, 0.15, 0.15); + Vector3D scaling_velocity_2(0.18, 0.22, 0.18); + Vector3D velocity_accel_1(0.0, 0.0, 0.0); + Vector3D velocity_accel_2(0.0, 0.0, 0.0); + LinearMatrix explosion_1_offset(True); + LinearMatrix explosion_2_offset(True); + Point3D explosion_2_translate(0.0f, 0.0f, 0.0f); + EulerAngles explosion_2_rotate(0.0f, 1.0f, 0.0f); + explosion_2_offset = explosion_2_rotate; + explosion_2_offset = explosion_2_translate; + // + // Create the scaling explosion renderables + // + ScalingExplosionRenderable *explosion_1 = + new ScalingExplosionRenderable( + entity, // Entity to attach the renderable to + ScalingExplosionRenderable::Dynamic, // How/when to execute the renderable + object_1, // This will be the scaling explosion object + dplMainZone, // DPL Zone this stuff will live in (for culling) + dpl_isect_mode_obj, // type of intersections to do on this object + NULL, // intersection mask for the object + this_root->GetDCS(), // the parent DCS we will be offsetting from + &explosion_1_offset, // offset matrix to be applied prior to joint DCS + &scaling_velocity_1, // Effect control vector, Y is acceleration, X, Z are velocity + &velocity_accel_1, + 0.0f, + NULL); // -.25 gravity is normal + Register_Object(explosion_1); + ScalingExplosionRenderable *explosion_2 = + new ScalingExplosionRenderable( + entity, // Entity to attach the renderable to + ScalingExplosionRenderable::Dynamic, // How/when to execute the renderable + object_1, // This will be the scaling explosion object + dplMainZone, // DPL Zone this stuff will live in (for culling) + dpl_isect_mode_obj, // type of intersections to do on this object + NULL, // intersection mask for the object + this_root->GetDCS(), // the parent DCS we will be offsetting from + &explosion_2_offset, // offset matrix to be applied prior to joint DCS + &scaling_velocity_2, // Effect control vector, Y is acceleration, X, Z are velocity + &velocity_accel_2, + 0.0f, + NULL); + Register_Object(explosion_2); + // + // Create a sweep renderable to drive the material morph + // + SweepRenderable *sweep_1 = + new SweepRenderable( + entity, // Entity to attach the renderable to + SweepRenderable::Dynamic, // How/when to execute the renderable + 3.0f, + 1, // number of times to cycle before stopping + NULL); // How long to take to sweep from 0 to 1 + Register_Object(sweep_1); + SweepRenderable *sweep_2 = + new SweepRenderable( + entity, // Entity to attach the renderable to + SweepRenderable::Dynamic, // How/when to execute the renderable + 2.0f, + 1, // number of times to cycle before stopping + NULL); // How long to take to sweep from 0 to 1 + Register_Object(sweep_2); + // + // Lookup a texture that we can use for the morphing materials + // + int + status; + dpl_TEXTURE *effect_texture = + dpl_LookupTexture ( "btfx:firesmoke1_scr_tex", dpl_lookup_normal, &status ); + if (effect_texture == NULL) + DEBUG_STREAM<<"couldn't find texture btfx:firesmoke1_scr_tex for an effect\n"; + // + // Setup a morph material renderable for each explosion shape + // + #if 0 + 0.9f,0.0f,0.0f, // Material's ambient component + 1.0f,1.0f,0.0f, // Material's emissive component + 1.0f,0.7f,0.2f, // Material's diffuse component + 0.0f,0.0f,0.0f,0.0, // Material's specular component + 8.0f,0.2f,-0.05f, // Material's opacity + #endif + MorphMaterialRenderable *morph_material_1 = + new MorphMaterialRenderable( + entity, // Entity to attach the renderable to + MorphMaterialRenderable::Dynamic, // How/when to execute the renderable + 0.9f,0.0f,0.0f, // Material's ambient component + 1.0f,0.2f,0.0f, // Material's emissive component + 1.0f,0.2f,0.0f, // Material's diffuse component + 0.0f,0.0f,0.0f,0.0, // Material's specular component + 10.0f,0.6f,-0.05f, // Material's opacity + effect_texture, // Material's texture pointer + 0.0f, // Material's Z dither value + 0, // Material's Fog Imunity value + 0.3f,0.0f,0.0f, // Material's ambient component + 0.5f,0.0f,0.0f, // Material's emissive component + 0.2f,0.0f,0.0f, // Material's diffuse component + 0.0f,0.0f,0.0f,0.0, // Material's specular component + 0.25f,0.25f,-0.05f, // Material's opacity + 15.0f, // Material's Z dither value + sweep_1->GetSweepAttribute()); + Register_Object(morph_material_1); + MorphMaterialRenderable *morph_material_2 = + new MorphMaterialRenderable( + entity, // Entity to attach the renderable to + MorphMaterialRenderable::Dynamic, // How/when to execute the renderable + 0.9f,0.0f,0.0f, // Material's ambient component + 1.0f,0.6f,0.3f, // Material's emissive component + 1.0f,0.4f,0.2f, // Material's diffuse component + 0.0f,0.0f,0.0f,0.0, // Material's specular component + 8.0f,0.2f,-0.05f, // Material's opacity + effect_texture, // Material's texture pointer + 0.0f, // Material's Z dither value + 0, // Material's Fog Imunity value + 0.1f,0.0f,0.0f, // Material's ambient component + 0.0f,0.0f,0.0f, // Material's emissive component + 0.1f,0.0f,0.0f, // Material's diffuse component + 0.0f,0.0f,0.0f,0.0, // Material's specular component + 0.25f,0.25f,-0.05f, // Material's opacity + 15.0f, // Material's Z dither value + sweep_2->GetSweepAttribute()); + Register_Object(morph_material_2); + // + // Override the materials in the two explosion shapes using these morph materials + // + dpl_INSTANCE *explosion_1_instance = dpl_GetDCSInstance(explosion_1->GetDCS(), 1); + dpl_INSTANCE *explosion_2_instance = dpl_GetDCSInstance(explosion_2->GetDCS(), 1); + + if(!explosion_1_instance) + Fail("explosion_1_instance came back null\n"); + if(!explosion_2_instance) + Fail("explosion_2_instance came back null\n"); + + dpl_SetInstanceFrontMaterial(explosion_1_instance, morph_material_1->GetMaterial()); + dpl_SetInstanceFrontMaterial(explosion_2_instance, morph_material_2->GetMaterial()); + + dpl_FlushInstance(explosion_1_instance); + dpl_FlushInstance(explosion_2_instance); + break; + } + case 2: // Big explosion + { + // + // Load object(s) we will be using for the explosions + // + object_1 = dpl_LoadObject("exp.bgf", dpl_load_normal); + // + // Setup control variables and transforms we need + // + Vector3D scaling_velocity_1(1.0, 0.2, 1.0); + Vector3D scaling_velocity_2(0.75, 0.75, 0.75); + Vector3D velocity_accel_1(-0.00725, -0.004, -0.00725); +// Vector3D velocity_accel_1(-0.00925, -0.00925, -0.00925); + Vector3D velocity_accel_2(-0.01388, -0.01388, -0.01388); + LinearMatrix explosion_1_offset(True); + LinearMatrix explosion_2_offset(True); + Point3D explosion_2_translate(0.0f, 0.0f, 0.0f); + EulerAngles explosion_2_rotate(0.0f, 1.0f, 0.0f); + explosion_2_offset = explosion_2_rotate; + explosion_2_offset = explosion_2_translate; + // + // Create the scaling explosion renderables + // + ScalingExplosionRenderable *explosion_1 = + new ScalingExplosionRenderable( + entity, // Entity to attach the renderable to + ScalingExplosionRenderable::Dynamic, // How/when to execute the renderable + object_1, // This will be the scaling explosion object + dplMainZone, // DPL Zone this stuff will live in (for culling) + dpl_isect_mode_obj, // type of intersections to do on this object + NULL, // intersection mask for the object + this_root->GetDCS(), // the parent DCS we will be offsetting from + &explosion_1_offset, // offset matrix to be applied prior to joint DCS + &scaling_velocity_1, // Effect control vector, Y is acceleration, X, Z are velocity + &velocity_accel_1, + 0.0f, + NULL); // -.25 gravity is normal + Register_Object(explosion_1); + ScalingExplosionRenderable *explosion_2 = + new ScalingExplosionRenderable( + entity, // Entity to attach the renderable to + ScalingExplosionRenderable::Dynamic, // How/when to execute the renderable + object_1, // This will be the scaling explosion object + dplMainZone, // DPL Zone this stuff will live in (for culling) + dpl_isect_mode_obj, // type of intersections to do on this object + NULL, // intersection mask for the object + this_root->GetDCS(), // the parent DCS we will be offsetting from + &explosion_2_offset, // offset matrix to be applied prior to joint DCS + &scaling_velocity_2, // Effect control vector, Y is acceleration, X, Z are velocity + &velocity_accel_2, + 0.0f, + NULL); + Register_Object(explosion_2); + // + // Create a sweep renderable to drive the material morph + // + SweepRenderable *sweep_1 = + new SweepRenderable( + entity, // Entity to attach the renderable to + SweepRenderable::Dynamic, // How/when to execute the renderable + 3.0f, // How long to take to sweep from 0 to 1 + 1, // number of times to cycle before stopping + NULL); + Register_Object(sweep_1); + SweepRenderable *sweep_2 = + new SweepRenderable( + entity, // Entity to attach the renderable to + SweepRenderable::Dynamic, // How/when to execute the renderable + 2.0f, // How long to take to sweep from 0 to 1 + 1, // number of times to cycle before stopping + NULL); + Register_Object(sweep_2); + // + // Lookup a texture that we can use for the morphing materials + // + int + status; + dpl_TEXTURE *effect_texture = + dpl_LookupTexture ( "btfx:firesmoke1_scr_tex", dpl_lookup_normal, &status ); + if (effect_texture == NULL) + DEBUG_STREAM<<"couldn't find texture btfx:firesmoke1_scr_tex for an effect\n"; + // + // Setup a morph material renderable for each explosion shape + // + #if 0 + 0.9f,0.0f,0.0f, // Material's ambient component + 1.0f,1.0f,0.0f, // Material's emissive component + 1.0f,0.7f,0.2f, // Material's diffuse component + 0.0f,0.0f,0.0f,0.0, // Material's specular component + 8.0f,0.2f,-0.05f, // Material's opacity + #endif + MorphMaterialRenderable *morph_material_1 = + new MorphMaterialRenderable( + entity, // Entity to attach the renderable to + MorphMaterialRenderable::Dynamic, // How/when to execute the renderable + 0.9f,0.0f,0.0f, // Material's ambient component + 1.0f,0.2f,0.0f, // Material's emissive component + 1.0f,0.2f,0.0f, // Material's diffuse component + 0.0f,0.0f,0.0f,0.0, // Material's specular component + 8.0f,0.2f,-0.05f, // Material's opacity + effect_texture, // Material's texture pointer + 0.0f, // Material's Z dither value + 0, // Material's Fog Imunity value + 0.3f,0.0f,0.0f, // Material's ambient component + 0.5f,0.0f,0.0f, // Material's emissive component + 0.2f,0.0f,0.0f, // Material's diffuse component + 0.0f,0.0f,0.0f,0.0, // Material's specular component + 0.25f,0.25f,-0.05f, // Material's opacity + 15.0f, // Material's Z dither value + sweep_1->GetSweepAttribute()); + Register_Object(morph_material_1); + MorphMaterialRenderable *morph_material_2 = + new MorphMaterialRenderable( + entity, // Entity to attach the renderable to + MorphMaterialRenderable::Dynamic, // How/when to execute the renderable + 0.9f,0.0f,0.0f, // Material's ambient component + 1.0f,0.6f,0.4f, // Material's emissive component + 1.0f,0.3f,0.2f, // Material's diffuse component + 0.0f,0.0f,0.0f,0.0, // Material's specular component + 8.0f,0.2f,-0.05f, // Material's opacity + effect_texture, // Material's texture pointer + 0.0f, // Material's Z dither value + 0, // Material's Fog Imunity value + 0.1f,0.0f,0.0f, // Material's ambient component + 0.0f,0.0f,0.0f, // Material's emissive component + 0.0f,0.0f,0.0f, // Material's diffuse component + 0.0f,0.0f,0.0f,0.0, // Material's specular component + 0.25f,0.25f,-0.05f, // Material's opacity + 15.0f, // Material's Z dither value + sweep_2->GetSweepAttribute()); + Register_Object(morph_material_2); + // + // Override the materials in the two explosion shapes using these morph materials + // + dpl_INSTANCE *explosion_1_instance = dpl_GetDCSInstance(explosion_1->GetDCS(), 1); + dpl_INSTANCE *explosion_2_instance = dpl_GetDCSInstance(explosion_2->GetDCS(), 1); + + if(!explosion_1_instance) + Fail("explosion_1_instance came back null\n"); + if(!explosion_2_instance) + Fail("explosion_2_instance came back null\n"); + + dpl_SetInstanceFrontMaterial(explosion_1_instance, morph_material_1->GetMaterial()); + dpl_SetInstanceFrontMaterial(explosion_2_instance, morph_material_2->GetMaterial()); + + dpl_FlushInstance(explosion_1_instance); + dpl_FlushInstance(explosion_2_instance); + break; + } + case 3: // Sparks + { + // + // Load object(s) we will be using for the explosions + // + object_1 = dpl_LoadObject("spk1.bgf", dpl_load_normal); + // + // Setup control variables and transforms we need + // + Vector3D scaling_velocity_1(0.1, 0.1, 0.1); + Vector3D velocity_accel_1(0.0, 0.0, 0.0); + LinearMatrix explosion_1_offset(True); + // + // Create the scaling explosion renderables + // + ScalingExplosionRenderable *explosion_1 = + new ScalingExplosionRenderable( + entity, // Entity to attach the renderable to + ScalingExplosionRenderable::Dynamic, // How/when to execute the renderable + object_1, // This will be the scaling explosion object + dplMainZone, // DPL Zone this stuff will live in (for culling) + dpl_isect_mode_obj, // type of intersections to do on this object + NULL, // intersection mask for the object + this_root->GetDCS(), // the parent DCS we will be offsetting from + &explosion_1_offset, // offset matrix to be applied prior to joint DCS + &scaling_velocity_1, // Effect control vector, Y is acceleration, X, Z are velocity + &velocity_accel_1, + -0.15f, + NULL); // -.25 gravity is normal + Register_Object(explosion_1); + // + // Create a sweep renderable to drive the material morph + // + SweepRenderable *sweep_1 = + new SweepRenderable( + entity, // Entity to attach the renderable to + SweepRenderable::Dynamic, // How/when to execute the renderable + 0.5f, // How long to take to sweep from 0 to 1 + 1, // number of times to cycle before stopping + NULL); + Register_Object(sweep_1); + // + // Lookup a texture that we can use for the morphing materials + // + int + status; + dpl_TEXTURE *effect_texture = + dpl_LookupTexture ( "btfx:firesmoke1_scr_tex", dpl_lookup_normal, &status ); + if (effect_texture == NULL) + DEBUG_STREAM<<"couldn't find texture btfx:firesmoke1_scr_tex for an effect\n"; + // + // Setup a morph material renderable for each explosion shape + // + MorphMaterialRenderable *morph_material_1 = + new MorphMaterialRenderable( + entity, // Entity to attach the renderable to + MorphMaterialRenderable::Dynamic, // How/when to execute the renderable + 1.0f,1.0f,0.0f, // Material's ambient component + 1.0f,1.0f,0.0f, // Material's emissive component + 1.0f,1.0f,0.0f, // Material's diffuse component + 0.0f,0.0f,0.0f,0.0, // Material's specular component + 1.0f,1.0f,1.0f, // Material's opacity + effect_texture, // Material's texture pointer + 0.0f, // Material's Z dither value + 2, // Material's Fog Imunity value + 0.9f,0.0f,0.0f, // Material's ambient component + 0.9f,0.0f,0.0f, // Material's emissive component + 0.9f,0.0f,0.0f, // Material's diffuse component + 0.0f,0.0f,0.0f,0.0, // Material's specular component + 1.0f,1.0f,1.0f, // Material's opacity + 0.0f, // Material's Z dither value + sweep_1->GetSweepAttribute()); + Register_Object(morph_material_1); + dpl_INSTANCE *explosion_1_instance = dpl_GetDCSInstance(explosion_1->GetDCS(), 1); + if(!explosion_1_instance) + Fail("explosion_1_instance came back null\n"); + dpl_SetInstanceFrontMaterial(explosion_1_instance, morph_material_1->GetMaterial()); + dpl_FlushInstance(explosion_1_instance); + break; + } + case 4: // A huge mech explodes (yawn) + { + Point3D null_offset(0.0f, 0.0f, 0.0f); + LinearMatrix null_offset_matrix(True); + Point3D local_height(0.0f, 6.2f, 0.0f); // height of Thor + LinearMatrix local_offset(True); + local_offset = local_height; + DPLStaticChildRenderable *local_root = + new DPLStaticChildRenderable( + entity, + dplMainZone, + NULL, + dpl_isect_mode_obj, + NULL, + local_offset, + this_root->GetDCS()); + Register_Object(local_root); + // + // Load morph sources we need for the effect + // + dpl_OBJECT *thor_debris_object = dpl_LoadObject("thrdbr.bgf", dpl_load_normal); + dpl_OBJECT *large_debris_object = dpl_LoadObject("ldbr.bgf", dpl_load_normal); + dpl_OBJECT *small_flames_object = dpl_LoadObject("flamesml.bgf", dpl_load_normal); + // + // Load morph targets we need for the effect + // + //------------------------------------------------ + // Renderables to handle the chunks and fireballs + //------------------------------------------------ +#if 0 + OneShotDelayRenderable *fireball_delay = + new OneShotDelayRenderable( + entity, // Entity to attach the renderable to + OneShotDelayRenderable::Dynamic, // How/when to execute the renderable + 0.25f); // How long to wait before raising the trigger + Register_Object(fireball_delay); + Point3D my_offset(0.0, 4.0, 0.0); + #if DEBUG_LEVEL > 0 + DPLPSFXRenderable* initial_boom = + #endif + new DPLPSFXRenderable( + entity, // Entity to attach the renderable to + DPLPSFXRenderable::Dynamic, // How/when to execute the renderable + fireball_delay->GetTriggerAttribute(), // address containing the trigger + myPSFXDescriptons[7], // pointer to the PFX description + this_root->GetDCS(), // DCS the effect is relative to (may be NULL) + &my_offset); // Offset (or world coordinants if DCS is NULL) + Register_Object(initial_boom); + #if DEBUG_LEVEL > 0 + DPLEffectRenderable *chunks_effect = + #endif + new DPLEffectRenderable( + entity, // Entity to attach the renderable to + OneShotDelayRenderable::Dynamic, // How/when to execute the renderable + fireball_delay->GetTriggerAttribute(), // address containing the trigger + 3, // Chunks // DPL effect number to trigger + local_root->GetDCS(), // DCS the effect is relative to (may be NULL) + &null_offset); // Offset (or world coordinants if DCS is NULL) + Register_Object(chunks_effect); + Point3D fireball_offset(1.0f, 5.0f, 1.0f); + #if DEBUG_LEVEL > 0 + DPLEffectRenderable *fireball_effect = + #endif + new DPLEffectRenderable( + entity, // Entity to attach the renderable to + OneShotDelayRenderable::Dynamic, // How/when to execute the renderable + fireball_delay->GetTriggerAttribute(), // address containing the trigger + 15, // Fireball // DPL effect number to trigger + local_root->GetDCS(), // DCS the effect is relative to (may be NULL) + &fireball_offset); // Offset (or world coordinants if DCS is NULL) + Register_Object(fireball_effect); +#endif + OneShotDelayRenderable *fireball_delay_2 = + new OneShotDelayRenderable( + entity, // Entity to attach the renderable to + OneShotDelayRenderable::Dynamic, // How/when to execute the renderable + 0.55f); // How long to wait before raising the trigger + Register_Object(fireball_delay_2); + Point3D fireball_offset_2(-1.0f, 5.0f, -1.0f); + #if DEBUG_LEVEL > 0 + DPLEffectRenderable *fireball_effect_2 = + #endif + new DPLEffectRenderable( + entity, // Entity to attach the renderable to + OneShotDelayRenderable::Dynamic, // How/when to execute the renderable + fireball_delay_2->GetTriggerAttribute(), // address containing the trigger + 15, // Fireball // DPL effect number to trigger + local_root->GetDCS(), // DCS the effect is relative to (may be NULL) + &fireball_offset_2); // Offset (or world coordinants if DCS is NULL) + Register_Object(fireball_effect_2); + //----------------------------------------------- + // Renderables to handle static debris + //----------------------------------------------- + OneShotDelayRenderable *static_debris_delay = + new OneShotDelayRenderable( + entity, // Entity to attach the renderable to + OneShotDelayRenderable::Dynamic, // How/when to execute the renderable + 0.25f); // How long to wait before raising the trigger + Register_Object(static_debris_delay); + DPLStaticChildRenderable *mech_debris = + new DPLStaticChildRenderable( + entity, + dplMainZone, + thor_debris_object, + dpl_isect_mode_obj, + NULL, + null_offset_matrix, + this_root->GetDCS()); + Register_Object(mech_debris); + #if DEBUG_LEVEL > 0 + MakeDCSFall *mech_debris_fall = + #endif + new MakeDCSFall( + entity, // Entity to attach the renderable to + MakeDCSFall::Dynamic, // How/when to execute the renderable + mech_debris->GetDCS(), // the DCS to control + -0.025f, // Gravity in meters/sec squared + static_debris_delay->GetTriggerAttribute()); // true if the instance is on, false if off + Register_Object(mech_debris_fall); + // Find the instance with the static_thr in it and hook up the instance switch + dpl_INSTANCE *mech_debris_instance = dpl_GetDCSInstance(mech_debris->GetDCS(), 1); + #if DEBUG_LEVEL > 0 + InstanceSwitchRenderable *mech_debris_instance_switch = + #endif + new InstanceSwitchRenderable( + entity, // Entity to attach the renderable to + InstanceSwitchRenderable::Dynamic, // How/when to execute the renderable + mech_debris_instance, // the instance to control + True, // Instance is on when trigger is... + static_debris_delay->GetTriggerAttribute()); + Register_Object(mech_debris_instance_switch); + + DPLStaticChildRenderable *large_debris = + new DPLStaticChildRenderable( + entity, + dplMainZone, + large_debris_object, + dpl_isect_mode_obj, + NULL, + null_offset_matrix, + mech_debris->GetDCS()); + Register_Object(large_debris); + // Find the instance with the static_thr in it and hook up the instance switch + dpl_INSTANCE *large_debris_instance = dpl_GetDCSInstance(large_debris->GetDCS(), 1); + #if DEBUG_LEVEL > 0 + InstanceSwitchRenderable *large_debris_instance_switch = + #endif + new InstanceSwitchRenderable( + entity, // Entity to attach the renderable to + InstanceSwitchRenderable::Dynamic, // How/when to execute the renderable + large_debris_instance, // the instance to control + True, // Instance is on when trigger is... + static_debris_delay->GetTriggerAttribute()); + Register_Object(large_debris_instance_switch); + //----------------------------------------------- + // Renderables to handle fires + //----------------------------------------------- + OneShotDelayRenderable *fires_delay = + new OneShotDelayRenderable( + entity, // Entity to attach the renderable to + OneShotDelayRenderable::Dynamic, // How/when to execute the renderable + 0.25f); // How long to wait before raising the trigger + Register_Object(fires_delay); + DPLStaticChildRenderable *fires = + new DPLStaticChildRenderable( + entity, + dplMainZone, + NULL, + dpl_isect_mode_obj, + NULL, + null_offset_matrix, + this_root->GetDCS()); + Register_Object(fires); + #if DEBUG_LEVEL > 0 + MakeDCSFall *fires_fall = + #endif + new MakeDCSFall( + entity, // Entity to attach the renderable to + MakeDCSFall::Dynamic, // How/when to execute the renderable + fires->GetDCS(), // the DCS to control + -0.01f, // Gravity in meters/sec squared + fires_delay->GetTriggerAttribute()); // true if the instance is on, false if off + Register_Object(fires_fall); + DPLStaticChildRenderable *small_flames = + new DPLStaticChildRenderable( + entity, + dplMainZone, + small_flames_object, + dpl_isect_mode_obj, + NULL, + null_offset_matrix, + fires->GetDCS()); + Register_Object(small_flames); + // Find the instance with the static_thr in it and hook up the instance switch + dpl_INSTANCE *small_flames_instance = dpl_GetDCSInstance(small_flames->GetDCS(), 1); + #if DEBUG_LEVEL > 0 + InstanceSwitchRenderable *small_flames_instance_switch = + #endif + new InstanceSwitchRenderable( + entity, // Entity to attach the renderable to + InstanceSwitchRenderable::Dynamic, // How/when to execute the renderable + small_flames_instance, // the instance to control + True, // Instance is on when trigger is... + fires_delay->GetTriggerAttribute()); + Register_Object(small_flames_instance_switch); + + dpl_OBJECT *big_flames_object = dpl_LoadObject("flamebig.bgf", dpl_load_normal); + DPLStaticChildRenderable *big_flames = + new DPLStaticChildRenderable( + entity, + dplMainZone, + big_flames_object, + dpl_isect_mode_obj, + NULL, + null_offset_matrix, + fires->GetDCS()); + Register_Object(big_flames); + // Make big flames object billboard along y-axis + dpl_SetDCSReorientAxes(big_flames->GetDCS(), dpl_reorient_axes_y); + dpl_FlushDCS(big_flames->GetDCS()); + // Find the instance with the static_thr in it and hook up the instance switch + dpl_INSTANCE *big_flames_instance = dpl_GetDCSInstance(big_flames->GetDCS(), 1); + #if DEBUG_LEVEL > 0 + InstanceSwitchRenderable *big_flames_instance_switch = + #endif + new InstanceSwitchRenderable( + entity, // Entity to attach the renderable to + InstanceSwitchRenderable::Dynamic, // How/when to execute the renderable + big_flames_instance, // the instance to control + True, // Instance is on when trigger is... + fires_delay->GetTriggerAttribute()); + Register_Object(big_flames_instance_switch); + // + // These renderables create the rising smoke column using a pfx effect. + // +#if 0 + Point3D my_offset2(0.0, 5.0, 0.0); + #if DEBUG_LEVEL > 0 + OnePSFXRenderable *this_effect= + #endif + new OnePSFXRenderable( + entity, // Entity to attach the renderable to + OnePSFXRenderable::Static, // How/when to execute the renderable + myPSFXDescriptons[1], // name of file with the PFX description in it + this_root->GetDCS(), // DCS the effect is relative to (may be NULL) + &my_offset2); // Offset (or world coordinants if DCS is NULL) + Register_Object(this_effect); +#endif + break; + } + //---------------------------------------- + case 5: // Sfx #105 - Delayed ground hit + //---------------------------------------- + { + // + // Create the delayed ground hit renderables + // + Point3D null_offset(0.0f, 0.0f, 0.0f); + OneShotDelayRenderable *ground_hit_delay = + new OneShotDelayRenderable( + entity, // Entity to attach the renderable to + OneShotDelayRenderable::Dynamic, // How/when to execute the renderable + 0.15f); // How long to wait before raising the trigger + Register_Object(ground_hit_delay); + #if DEBUG_LEVEL > 0 + DPLEffectRenderable *ground_hit_effect = + #endif + new DPLEffectRenderable( + entity, // Entity to attach the renderable to + OneShotDelayRenderable::Dynamic, // How/when to execute the renderable + ground_hit_delay->GetTriggerAttribute(), // address containing the trigger + 12, // GroundHit // DPL effect number to trigger + this_root->GetDCS(), // DCS the effect is relative to (may be NULL) + &null_offset); // Offset (or world coordinants if DCS is NULL) + Register_Object(ground_hit_effect); + break; + } + //------------------------------------------ + case 6: // Sfx #106 - Thor death explosion + //------------------------------------------ + { + #if 0 + int status; // used with dpl calls + Point3D null_offset(0.0f, 0.0f, 0.0f); + LinearMatrix null_offset_matrix(True); + Point3D local_height(0.0f, 6.2f, 0.0f); // height of Thor + LinearMatrix local_offset(True); + local_offset = local_height; + DPLStaticChildRenderable *local_root = + new DPLStaticChildRenderable( + entity, + dplMainZone, + NULL, + dpl_isect_mode_obj, + NULL, + local_offset, + this_root->GetDCS()); + Register_Object(local_root); +#if 0 + //vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv + // + // Show static thor (TEMPORARY for testing) + // + dpl_OBJECT *static_thr_object = dpl_LoadObject("thr.bgf", dpl_load_normal); + DPLStaticChildRenderable *static_thr = + new DPLStaticChildRenderable( + entity, + dplMainZone, + static_thr_object, + dpl_isect_mode_obj, + NULL, + null_offset_matrix, + local_root->GetDCS()); + Register_Object(static_thr); + // This defines how long the static_thr stays visible + OneShotDelayRenderable *static_thr_delay = + new OneShotDelayRenderable( + entity, // Entity to attach the renderable to + OneShotDelayRenderable::Dynamic, // How/when to execute the renderable + 0.5f); // How long to wait before raising the trigger + // Find the instance with the static_thr in it and hook up the instance switch + dpl_INSTANCE *static_thr_instance = dpl_GetDCSInstance(static_thr->GetDCS(), 1); + InstanceSwitchRenderable *static_thr_instance_switch = + new InstanceSwitchRenderable( + entity, // Entity to attach the renderable to + InstanceSwitchRenderable::Dynamic, // How/when to execute the renderable + static_thr_instance, // the instance to control + False, // Instance is on when trigger is... + static_thr_delay->GetTriggerAttribute()); + // + //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +#endif + // + // Load objects we will be using for the explosion effect + // + DPLObjectWrapper *flash_object_wrapper = + new DPLObjectWrapper( + entity, // Entity to attach the renderable to + "exdisk_A.bgf", // Name of the DPL object to load into the wrapper + dpl_load_nocache); // Type of loading to perform on this object + Register_Object(flash_object_wrapper); + dpl_OBJECT *flash_object_a = flash_object_wrapper->GetDPLObject(); + dpl_OBJECT *flash_object_b = dpl_LoadObject("exdisk_B.bgf", dpl_load_normal); + dpl_OBJECT *flash_object_c = dpl_LoadObject("exdisk_C.bgf", dpl_load_normal); + DPLObjectWrapper *debris_object_wrapper = + new DPLObjectWrapper( + entity, // Entity to attach the renderable to + "thrtor_A.bgf", // Name of the DPL object to load into the wrapper + dpl_load_nocache); // Type of loading to perform on this object + Register_Object(debris_object_wrapper); + dpl_OBJECT *morph_debris_a = debris_object_wrapper->GetDPLObject(); + dpl_OBJECT *morph_debris_b = dpl_LoadObject("thrtor_B.bgf", dpl_load_normal); + dpl_OBJECT *morph_debris_c = dpl_LoadObject("thrtor_C.bgf", dpl_load_normal); + DPLObjectWrapper *hips_object_wrapper = + new DPLObjectWrapper( + entity, // Entity to attach the renderable to + "thrhip_A.bgf", // Name of the DPL object to load into the wrapper + dpl_load_nocache); // Type of loading to perform on this object + Register_Object(hips_object_wrapper); + dpl_OBJECT *morph_hips_a = hips_object_wrapper->GetDPLObject(); + dpl_OBJECT *morph_hips_b = dpl_LoadObject("thrhip_B.bgf", dpl_load_normal); + dpl_OBJECT *morph_hips_c = dpl_LoadObject("thrhip_C.bgf", dpl_load_normal); + dpl_OBJECT *thor_debris_object = dpl_LoadObject("thrdbr.bgf", dpl_load_normal); + dpl_OBJECT *large_debris_object = dpl_LoadObject("ldbr.bgf", dpl_load_normal); + dpl_OBJECT *small_flames_object = dpl_LoadObject("flamesml.bgf", dpl_load_normal); + dpl_OBJECT *big_flames_object = dpl_LoadObject("flamebig.bgf", dpl_load_normal); + //---------------------------------------------- + // Renderables to perform morphing flash object + //---------------------------------------------- + SweepRenderable *flash_morph_sweep = + new SweepRenderable( + entity, // Entity to attach the renderable to + SweepRenderable::Dynamic, // How/when to execute the renderable + 1.0f, // How long to take to sweep from 0 to 1 + 1, // number of times to cycle before stopping + NULL, // trigger + -0.5f, // Initial value + 2.0f); // Final value + ChildMorphRenderable *flash_morph = + new ChildMorphRenderable( + entity, // Entity to attach the renderable to + ChildMorphRenderable::Dynamic, // How/when to execute the renderable + flash_object_a, // destination + flash_object_b, // start object + flash_object_c, // end object + flash_morph_sweep->GetSweepAttribute(), // pointer to control variable + dpl_morph_vertices | dpl_morph_colors, // Defines type of morph to do + dplMainZone, // DPL Zone this stuff will live in (for culling) + dpl_isect_mode_obj, // type of intersections to do on this object + NULL, // intersection mask for the object + this_root->GetDCS()); // the parent DCS we will be offsetting from + // Make flash object billboard along y-axis + dpl_SetDCSReorientAxes(flash_morph->GetDCS(), dpl_reorient_axes_y); + dpl_FlushDCS(flash_morph->GetDCS()); + // This defines how long the flash stays up + OneShotDelayRenderable *flash_delay = + new OneShotDelayRenderable( + entity, // Entity to attach the renderable to + OneShotDelayRenderable::Dynamic, // How/when to execute the renderable + 1.0f); // How long to wait before raising the trigger + Register_Object(flash_delay); + // Find the instance with the flash in it and hook up the instance switch + dpl_INSTANCE *flash_morph_instance = dpl_GetDCSInstance(flash_morph->GetDCS(), 1); + InstanceSwitchRenderable *flash_instance_switch = + new InstanceSwitchRenderable( + entity, // Entity to attach the renderable to + InstanceSwitchRenderable::Dynamic, // How/when to execute the renderable + flash_morph_instance, // the instance to control + False, // Instance is on when trigger is... + flash_delay->GetTriggerAttribute()); + //--------------------------------------------------- + // Create a material morph to fade flash object away + //--------------------------------------------------- + OneShotDelayRenderable *flash_fade_delay = + new OneShotDelayRenderable( + entity, // Entity to attach the renderable to + OneShotDelayRenderable::Dynamic, // How/when to execute the renderable + 0.5f); // How long to wait before raising the trigger + SweepRenderable *flash_fade_sweep = + new SweepRenderable( + entity, // Entity to attach the renderable to + SweepRenderable::Dynamic, // How/when to execute the renderable + 0.4f, // How long to take to sweep from 0 to 1 + 1, // number of times to cycle before stopping + flash_fade_delay->GetTriggerAttribute()); // trigger variable + Register_Object(flash_fade_sweep); + // Lookup texture for smoke column + dpl_TEXTURE *flash_texture = + dpl_LookupTexture("btfx:bexp9_tex", dpl_lookup_normal, &status); + if (flash_texture == NULL) + DEBUG_STREAM<<"couldn't find texture btfx:bexp9_tex for an effect\n"; + // + MorphMaterialRenderable *flash_fade_material = + new MorphMaterialRenderable( + entity, // Entity to attach the renderable to + MorphMaterialRenderable::Dynamic, // How/when to execute the renderable + 1.0f,1.0f,1.0f, // Material's ambient component + 1.0f,1.0f,1.0f, // Material's emissive component + 1.0f,1.0f,1.0f, // Material's diffuse component + 0.0f,0.0f,0.0f,0.0f, // Material's specular component + 1.0f,1.0f,1.0f, // Material's opacity + flash_texture, // Material's texture pointer + 0.0f, // Material's Z dither value + 1, // Material's Fog Imunity value + 1.0f,1.0f,1.0f, // Material's ambient component + 1.0f,1.0f,1.0f, // Material's emissive component + 1.0f,1.0f,1.0f, // Material's diffuse component + 0.0f,0.0f,0.0f,0.0f, // Material's specular component + 0.0f,0.0f,0.0f, // Material's opacity + 0.0f, // Material's Z dither value + flash_fade_sweep->GetSweepAttribute()); + Register_Object(flash_fade_material); +// dpl_INSTANCE *flash_morph_instance = dpl_GetDCSInstance(flash_morph->GetDCS(), 1); + if (!flash_morph_instance) + Fail("flash_morph_instance came back null\n"); + dpl_SetInstanceFrontMaterial(flash_morph_instance, flash_fade_material->GetMaterial()); + dpl_FlushInstance(flash_morph_instance); + //------------------------------------------------ + // Renderables to handle the chunks and fireballs + //------------------------------------------------ + OneShotDelayRenderable *fireball_delay = + new OneShotDelayRenderable( + entity, // Entity to attach the renderable to + OneShotDelayRenderable::Dynamic, // How/when to execute the renderable + 0.25f); // How long to wait before raising the trigger + Register_Object(fireball_delay); + DPLEffectRenderable *chunks_effect = + new DPLEffectRenderable( + entity, // Entity to attach the renderable to + OneShotDelayRenderable::Dynamic, // How/when to execute the renderable + fireball_delay->GetTriggerAttribute(), // address containing the trigger + 3, // Chunks // DPL effect number to trigger + local_root->GetDCS(), // DCS the effect is relative to (may be NULL) + &null_offset); // Offset (or world coordinants if DCS is NULL) + Register_Object(chunks_effect); + Point3D fireball_offset(1.0f, 5.0f, 1.0f); + DPLEffectRenderable *fireball_effect = + new DPLEffectRenderable( + entity, // Entity to attach the renderable to + OneShotDelayRenderable::Dynamic, // How/when to execute the renderable + fireball_delay->GetTriggerAttribute(), // address containing the trigger + 15, // Fireball // DPL effect number to trigger + local_root->GetDCS(), // DCS the effect is relative to (may be NULL) + &fireball_offset); // Offset (or world coordinants if DCS is NULL) + Register_Object(fireball_effect); + OneShotDelayRenderable *fireball_delay_2 = + new OneShotDelayRenderable( + entity, // Entity to attach the renderable to + OneShotDelayRenderable::Dynamic, // How/when to execute the renderable + 0.55f); // How long to wait before raising the trigger + Register_Object(fireball_delay_2); + Point3D fireball_offset_2(-1.0f, 5.0f, -1.0f); + DPLEffectRenderable *fireball_effect_2 = + new DPLEffectRenderable( + entity, // Entity to attach the renderable to + OneShotDelayRenderable::Dynamic, // How/when to execute the renderable + fireball_delay_2->GetTriggerAttribute(), // address containing the trigger + 15, // Fireball // DPL effect number to trigger + local_root->GetDCS(), // DCS the effect is relative to (may be NULL) + &fireball_offset_2); // Offset (or world coordinants if DCS is NULL) + Register_Object(fireball_effect_2); + //------------------------------------------------------ + // Renderables to handle the torso debris explode morph + //------------------------------------------------------ + OneShotDelayRenderable *morph_debris_delay = + new OneShotDelayRenderable( + entity, // Entity to attach the renderable to + OneShotDelayRenderable::Dynamic, // How/when to execute the renderable + 0.25f, // How long to wait before raising the trigger + 4.25f); // Duration of trigger + SweepRenderable *debris_morph_sweep = + new SweepRenderable( + entity, // Entity to attach the renderable to + SweepRenderable::Dynamic, // How/when to execute the renderable + 4.0f, // How long to take to sweep from 0 to 1 + 1, // number of times to cycle before stopping + morph_debris_delay->GetTriggerAttribute(), // trigger variable + 0.0f, // initial value of sweep + 9.0f, // final value of sweep + SweepRenderable::Y_SQR_X); // function to apply + ChildMorphRenderable *debris_morph = + new ChildMorphRenderable( + entity, // Entity to attach the renderable to + ChildMorphRenderable::Dynamic, // How/when to execute the renderable + morph_debris_a, // destination + morph_debris_b, // start object + morph_debris_c, // end object + debris_morph_sweep->GetSweepAttribute(), // pointer to control variable + dpl_morph_vertices, // Defines type of morph to do + dplMainZone, // DPL Zone this stuff will live in (for culling) + dpl_isect_mode_obj, // type of intersections to do on this object + NULL, // intersection mask for the object + local_root->GetDCS()); // the parent DCS we will be offsetting from + MakeDCSFall *debris_make_fall = + new MakeDCSFall( + entity, // Entity to attach the renderable to + MakeDCSFall::Dynamic, // How/when to execute the renderable + debris_morph->GetDCS(), // the DCS to control + -9.81f, // Gravity in meters/sec squared + morph_debris_delay->GetTriggerAttribute()); // true if the instance is on, false if off + // Find the instance with the debris in it and hook up the instance switch + dpl_INSTANCE *debris_morph_instance = dpl_GetDCSInstance(debris_morph->GetDCS(), 1); + InstanceSwitchRenderable *debris_morph_instance_switch = + new InstanceSwitchRenderable( + entity, // Entity to attach the renderable to + InstanceSwitchRenderable::Dynamic, // How/when to execute the renderable + debris_morph_instance, // the instance to control + True, // Instance is on when trigger is... + morph_debris_delay->GetTriggerAttribute()); + //----------------------------------------------------- + // Renderables to handle the hips debris explode morph + //----------------------------------------------------- + ChildMorphRenderable *hips_morph = + new ChildMorphRenderable( + entity, // Entity to attach the renderable to + ChildMorphRenderable::Dynamic, // How/when to execute the renderable + morph_hips_a, // destination + morph_hips_b, // start object + morph_hips_c, // end object + debris_morph_sweep->GetSweepAttribute(), // pointer to control variable + dpl_morph_vertices, // Defines type of morph to do + dplMainZone, // DPL Zone this stuff will live in (for culling) + dpl_isect_mode_obj, // type of intersections to do on this object + NULL, // intersection mask for the object + local_root->GetDCS()); // the parent DCS we will be offsetting from + MakeDCSFall *hips_make_fall = + new MakeDCSFall( + entity, // Entity to attach the renderable to + MakeDCSFall::Dynamic, // How/when to execute the renderable + hips_morph->GetDCS(), // the DCS to control + -9.81f, // Gravity in meters/sec squared + morph_debris_delay->GetTriggerAttribute()); // true if the instance is on, false if off + // Find the instance with the debris in it and hook up the instance switch + dpl_INSTANCE *hips_morph_instance = dpl_GetDCSInstance(hips_morph->GetDCS(), 1); + InstanceSwitchRenderable *hips_morph_instance_switch = + new InstanceSwitchRenderable( + entity, // Entity to attach the renderable to + InstanceSwitchRenderable::Dynamic, // How/when to execute the renderable + hips_morph_instance, // the instance to control + True, // Instance is on when trigger is... + morph_debris_delay->GetTriggerAttribute()); + //----------------------------------------------- + // Renderables to handle static debris and fires + //----------------------------------------------- + OneShotDelayRenderable *static_debris_delay = + new OneShotDelayRenderable( + entity, // Entity to attach the renderable to + OneShotDelayRenderable::Dynamic, // How/when to execute the renderable + 0.25f); // How long to wait before raising the trigger + DPLStaticChildRenderable *mech_debris = + new DPLStaticChildRenderable( + entity, + dplMainZone, + thor_debris_object, + dpl_isect_mode_obj, + NULL, + null_offset_matrix, + this_root->GetDCS()); + Register_Object(mech_debris); + MakeDCSFall *mech_debris_fall = + new MakeDCSFall( + entity, // Entity to attach the renderable to + MakeDCSFall::Dynamic, // How/when to execute the renderable + mech_debris->GetDCS(), // the DCS to control + -0.01f, // Gravity in meters/sec squared + static_debris_delay->GetTriggerAttribute()); // true if the instance is on, false if off + // Find the instance with the static_thr in it and hook up the instance switch + dpl_INSTANCE *mech_debris_instance = dpl_GetDCSInstance(mech_debris->GetDCS(), 1); + InstanceSwitchRenderable *mech_debris_instance_switch = + new InstanceSwitchRenderable( + entity, // Entity to attach the renderable to + InstanceSwitchRenderable::Dynamic, // How/when to execute the renderable + mech_debris_instance, // the instance to control + True, // Instance is on when trigger is... + static_debris_delay->GetTriggerAttribute()); + + DPLStaticChildRenderable *large_debris = + new DPLStaticChildRenderable( + entity, + dplMainZone, + large_debris_object, + dpl_isect_mode_obj, + NULL, + null_offset_matrix, + mech_debris->GetDCS()); + Register_Object(large_debris); + // Find the instance with the static_thr in it and hook up the instance switch + dpl_INSTANCE *large_debris_instance = dpl_GetDCSInstance(large_debris->GetDCS(), 1); + InstanceSwitchRenderable *large_debris_instance_switch = + new InstanceSwitchRenderable( + entity, // Entity to attach the renderable to + InstanceSwitchRenderable::Dynamic, // How/when to execute the renderable + large_debris_instance, // the instance to control + True, // Instance is on when trigger is... + static_debris_delay->GetTriggerAttribute()); + + DPLStaticChildRenderable *small_flames = + new DPLStaticChildRenderable( + entity, + dplMainZone, + small_flames_object, + dpl_isect_mode_obj, + NULL, + null_offset_matrix, + mech_debris->GetDCS()); + Register_Object(small_flames); + // Find the instance with the static_thr in it and hook up the instance switch + dpl_INSTANCE *small_flames_instance = dpl_GetDCSInstance(small_flames->GetDCS(), 1); + InstanceSwitchRenderable *small_flames_instance_switch = + new InstanceSwitchRenderable( + entity, // Entity to attach the renderable to + InstanceSwitchRenderable::Dynamic, // How/when to execute the renderable + small_flames_instance, // the instance to control + True, // Instance is on when trigger is... + static_debris_delay->GetTriggerAttribute()); + + DPLStaticChildRenderable *big_flames = + new DPLStaticChildRenderable( + entity, + dplMainZone, + big_flames_object, + dpl_isect_mode_obj, + NULL, + null_offset_matrix, + mech_debris->GetDCS()); + Register_Object(big_flames); + // Make big flames object billboard along y-axis + dpl_SetDCSReorientAxes(big_flames->GetDCS(), dpl_reorient_axes_y); + dpl_FlushDCS(big_flames->GetDCS()); + // Find the instance with the static_thr in it and hook up the instance switch + dpl_INSTANCE *big_flames_instance = dpl_GetDCSInstance(big_flames->GetDCS(), 1); + InstanceSwitchRenderable *big_flames_instance_switch = + new InstanceSwitchRenderable( + entity, // Entity to attach the renderable to + InstanceSwitchRenderable::Dynamic, // How/when to execute the renderable + big_flames_instance, // the instance to control + True, // Instance is on when trigger is... + static_debris_delay->GetTriggerAttribute()); + //------------------------------------------------------------- + // Renderables to handle the rising smoke column (first shape) + //------------------------------------------------------------- +#if 1 + OneShotDelayRenderable *first_one_shot = + new OneShotDelayRenderable( + entity, // Entity to attach the renderable to + OneShotDelayRenderable::Dynamic, // How/when to execute the renderable + 0.0f); // How long to wait before raising the trigger + Register_Object(first_one_shot); + Point3D my_offset(0.0, 6.0, 0.0); + #if DEBUG_LEVEL > 0 + DPLPSFXRenderable* this_effect = + #endif + new DPLPSFXRenderable( + entity, // Entity to attach the renderable to + DPLPSFXRenderable::Dynamic, // How/when to execute the renderable + first_one_shot->GetTriggerAttribute(), // address containing the trigger + myPSFXDescriptons[1], // pointer to the PFX description + this_root->GetDCS(), // DCS the effect is relative to (may be NULL) + &my_offset); // Offset (or world coordinants if DCS is NULL) + Register_Object(this_effect); + +// the below code will be removed in favor of PFX effects once they are tested +#else +// OneShotDelayRenderable *smoke_1_morph_delay = +// new OneShotDelayRenderable( +// entity, // Entity to attach the renderable to +// OneShotDelayRenderable::Dynamic, // How/when to execute the renderable +// 0.25f); // How long to wait before raising the trigger + SweepRenderable *smoke_1_sweep = + new SweepRenderable( + entity, // Entity to attach the renderable to + SweepRenderable::Dynamic, // How/when to execute the renderable + 40.0f, // How long to take to sweep from 0 to 1 + 1, // number of times to cycle before stopping + static_debris_delay->GetTriggerAttribute(), + 0.2f, + 2.5f); + ChildMorphRenderable *smoke_1_morph = + new ChildMorphRenderable( + entity, // Entity to attach the renderable to + ChildMorphRenderable::Dynamic, // How/when to execute the renderable + smoke_1_a, // destination + smoke_b, // start object + smoke_c, // end object + smoke_1_sweep->GetSweepAttribute(), // pointer to control variable + dpl_morph_vertices, // Defines type of morph to do + dplMainZone, // DPL Zone this stuff will live in (for culling) + dpl_isect_mode_obj, // type of intersections to do on this object + NULL, // intersection mask for the object + this_root->GetDCS()); // the parent DCS we will be offsetting from + // Find the instance with the flash in it and hook up the instance switch + dpl_INSTANCE *smoke_1_instance = dpl_GetDCSInstance(smoke_1_morph->GetDCS(), 1); + InstanceSwitchRenderable *smoke_1_instance_switch = + new InstanceSwitchRenderable( + entity, // Entity to attach the renderable to + InstanceSwitchRenderable::Dynamic, // How/when to execute the renderable + smoke_1_instance, // the instance to control + True, // Instance is on when trigger is... + static_debris_delay->GetTriggerAttribute()); + //-------------------------------------------------------------- + // Renderables to handle the rising smoke column (second shape) + //-------------------------------------------------------------- +#if 0 + OneShotDelayRenderable *smoke_2_morph_delay = + new OneShotDelayRenderable( + entity, // Entity to attach the renderable to + OneShotDelayRenderable::Dynamic, // How/when to execute the renderable + 6.0f); // How long to wait before raising the trigger + SweepRenderable *smoke_2_sweep = + new SweepRenderable( + entity, // Entity to attach the renderable to + SweepRenderable::Dynamic, // How/when to execute the renderable + 30.0f, // How long to take to sweep from 0 to 1 + 1, // number of times to cycle before stopping + smoke_2_morph_delay->GetTriggerAttribute(), + 0.1f, + 1.0f); + ChildMorphRenderable *smoke_2_morph = + new ChildMorphRenderable( + entity, // Entity to attach the renderable to + ChildMorphRenderable::Dynamic, // How/when to execute the renderable + smoke_2_a, // destination + smoke_b, // start object + smoke_c, // end object + smoke_2_sweep->GetSweepAttribute(), // pointer to control variable + dpl_morph_vertices, // Defines type of morph to do + dplMainZone, // DPL Zone this stuff will live in (for culling) + dpl_isect_mode_obj, // type of intersections to do on this object + NULL, // intersection mask for the object + this_root->GetDCS()); // the parent DCS we will be offsetting from + // Find the instance with the flash in it and hook up the instance switch + dpl_INSTANCE *smoke_2_instance = dpl_GetDCSInstance(smoke_2_morph->GetDCS(), 1); + InstanceSwitchRenderable *smoke_2_morph_instance_switch = + new InstanceSwitchRenderable( + entity, // Entity to attach the renderable to + InstanceSwitchRenderable::Dynamic, // How/when to execute the renderable + smoke_2_instance, // the instance to control + True, // Instance is on when trigger is... + smoke_2_morph_delay->GetTriggerAttribute()); +#endif + //------------------------------------------- + // Set dither Z on material for smoke column + //------------------------------------------- + dpl_MATERIAL *damage_material = + dpl_LookupMaterial ("btfx:smoke1_mtl", + dpl_lookup_normal, + &status); + if (damage_material == 0) + { + cout << "couldn't find material\n"; + } + else + { + dpl_SetMaterialDitherZ(damage_material, 10.0f); + dpl_FlushMaterial(damage_material); + } + //--------------------------------------------------- + // Create a material morph to fade smoke column away + //--------------------------------------------------- + OneShotDelayRenderable *smoke_fade_delay = + new OneShotDelayRenderable( + entity, // Entity to attach the renderable to + OneShotDelayRenderable::Dynamic, // How/when to execute the renderable + 25.0f); // How long to wait before raising the trigger + SweepRenderable *smoke_fade_sweep = + new SweepRenderable( + entity, // Entity to attach the renderable to + SweepRenderable::Dynamic, // How/when to execute the renderable + 18.5f, // How long to take to sweep from 0 to 1 + 1, // number of times to cycle before stopping + smoke_fade_delay->GetTriggerAttribute()); // trigger variable + Register_Object(smoke_fade_sweep); + // Lookup texture for smoke column + dpl_TEXTURE *smoke_texture = + dpl_LookupTexture("btfx:smoke1_scr_tex", dpl_lookup_normal, &status); + if (smoke_texture == NULL) + DEBUG_STREAM<<"couldn't find texture btfx:smoke1_scr_tex for an effect\n"; + // + MorphMaterialRenderable *smoke_fade_material = + new MorphMaterialRenderable( + entity, // Entity to attach the renderable to + MorphMaterialRenderable::Dynamic, // How/when to execute the renderable + 1.0f,1.0f,1.0f, // Material's ambient component + 0.7f,0.4f,0.4f, // Material's emissive component + 0.3714f,0.2899f,0.3714f, // Material's diffuse component + 0.0f,0.0f,0.0f,0.0f, // Material's specular component + 0.7f,0.99f,0.0f, // Material's opacity + smoke_texture, // Material's texture pointer + 10.0f, // Material's Z dither value + 3, // Material's Fog Imunity value + 1.0f,1.0f,1.0f, // Material's ambient component + 0.7f,0.4f,0.4f, // Material's emissive component + 0.3714f,0.2899f,0.3714f, // Material's diffuse component + 0.0f,0.0f,0.0f,0.0f, // Material's specular component + 0.0f,0.99f,0.0f, // Material's opacity + 10.0f, // Material's Z dither value + smoke_fade_sweep->GetSweepAttribute()); + Register_Object(smoke_fade_material); +// dpl_INSTANCE *smoke_1_instance = dpl_GetDCSInstance(smoke_1_morph->GetDCS(), 1); + if (!smoke_1_instance) + Fail("smoke_1_instance came back null\n"); + dpl_SetInstanceFrontMaterial(smoke_1_instance, smoke_fade_material->GetMaterial()); + dpl_FlushInstance(smoke_1_instance); +#endif + #else + DEBUG_STREAM <<"Explosion effect 104 called, this is disabled and shouldn't be used!\n"; + #endif + break; + } + default: + { + break; + } + } +} +// +//############################################################################# +// MakeEntityRenderables handles creating all the renderables necessary to +// display an object. This routine contains default behaviors for creating +// some types of simple objects. The idea is that if a higher level routine +// can't figure out how to make renderables for something this routine will be +// called and the default behavior will be used. +//############################################################################# +// +void + DPLRenderer::MakeEntityRenderables( + Entity *entity, // The entity we are dealing with + ResourceDescription *model_resource, // Pointer to the video resource + ViewFrom view_type) // Type of reference (inside/outside...etc.) +{ + char + *object_filename; + #if DEBUG_LEVEL > 0 + int + object_count; + #endif + L4VideoObject // should be const + *video_object; + L4VideoObjectWrapper + *video_wrapper; + ChainOf + video_chain(NULL); + L4VideoObject::ResourceType + resource_type; + dpl_DCS + *my_root_dcs; + Enumeration // L4VideoObject::RendererModes + renderer_modes; + // + // Set the Entity_Being_Created global so the C language callback will + // be able to mark the geometry with damage zone values if necessary. + // + Entity_Being_Created = entity; + my_root_dcs = NULL; + // + // convert video resource into chain of video objects and make an iterator + // for that chain + // + if (model_resource) + { + #if DEBUG_LEVEL > 0 + object_count = + #endif + L4VideoObjectWrapper::BuildVideoObjectChainFromResource( + &video_chain, + model_resource + ); + } + ChainIteratorOf + video_iterator(video_chain); + // + // Switch to allow us to have scripts at this level for constructing certain + // types of video objects (whether or not they have a video resource) + // + switch (entity->GetClassID()) + { + // + // Dropzones have no graphical appearance so we do nothing + // + case DropZoneClassID: + break; + // + // Player objects have no graphical appearance unless one is created + // at a higher (game specific) level, so we do nothing here. + // + case PlayerClassID: + break; + // this entity has no visual appearance + case AudioEntityClassID: + break; + // + // Cultural and landmark are the only ones with "destroyed" processing + // This is similar to the default case but does not allow us to be + // inside the entity, does not allow us to be a mover, + // + case CulturalIconClassID: + case LandmarkClassID: + { + dpl_INSTANCE + *this_instance; + dpl_OBJECT + *this_object; + dpl_ISECT_MODE + intersect_mode; + uint32 + intersect_mask; + LinearMatrix + offset_matrix = LinearMatrix::Identity; + dpl_DCS + *root_DCS, + *this_DCS; + // + // Make sure the object has a video resource + // + if (!model_resource) + { + VideoRenderer::MakeEntityRenderables(entity, model_resource, view_type); + Entity_Being_Created = NULL; + return; + } + intersect_mode = dpl_isect_mode_geometry; + intersect_mask = INTERSECT_ALL; + Logical + first_object = True; + video_iterator.First(); + while ((video_wrapper = video_iterator.ReadAndNext()) != NULL) + { + video_object = video_wrapper->GetVideoObject(); + object_filename = video_object->GetObjectFilename(); + resource_type = video_object->GetResourceType(); + renderer_modes = video_object->GetRendererModes(); + + #if NOISY_RENDERER + Tell("L4VIDEO.cpp loading object " << object_filename); + Tell(" type " << resource_type); + Tell(" mode 0x" < + dplMainZone, // DPL Zone this stuff will live in (for culling) + intersect_mode, // type of intersections to do on this object + intersect_mask); // intersection mask for the object + Register_Object(this_static_root); + root_DCS = this_static_root->GetDCS(); + //------------------------------------------------------ + // if root object billboards (all others billboard too) + //------------------------------------------------------ + this_DCS = root_DCS; + this_instance = this_static_root->GetInstance(); + // + // Set my_root_dcs because we want this guy's hiearchy to be marked + // with his entity pointer + // + my_root_dcs = root_DCS; + } + else + { + if (renderer_modes | L4VideoObject::BillboardObject) + { + //------------------------------------------ + // attach additional object to separate DCS + // because it is billboarded + //------------------------------------------ + DPLStaticChildRenderable *this_child = + new DPLStaticChildRenderable( + entity, + dplMainZone, + this_object, + intersect_mode, + intersect_mask, + offset_matrix, + root_DCS); + Register_Object(this_child); + this_DCS = this_child->GetDCS(); + this_instance = this_child->GetInstance(); + } + else + { + //---------------------------------------- + // attach additional objects to root_DCS + // (HACK) temporary implementation (HACK) + //---------------------------------------- + DCSInstanceRenderable *another_instance = + new DCSInstanceRenderable( + entity, // Entity to attach the renderable to + DCSInstanceRenderable::Static, // How/when to execute the renderable + this_object, // object to connect to the instance + root_DCS, // the DCS to add the instance to + intersect_mode, // type of intersections to do on this object + intersect_mask, // intersection mask for the object + True); // initial visibility setting + Register_Object(another_instance); + this_DCS = NULL; + this_instance = another_instance->GetInstance(); + } + } + // + // Hook up the object to an instance switch renderable responsive to state + // + StateIndicator* simulation_state = + (StateIndicator *)entity->GetAttributePointer("SimulationState"); + switch(resource_type) + { + case L4VideoObject::Object: + { + #if DEBUG_LEVEL > 0 + StateInstanceSwitchRenderable *undamaged_state = + #endif + new StateInstanceSwitchRenderable( + entity, // Entity to attach the renderable to + StateInstanceSwitchRenderable::Watcher, // How/when to execute the renderable + this_instance, // the instance to control + False, // true to turn on in this state, false for off + simulation_state, // State dial we use to control the on/off + CulturalIcon::BurningState); // State that we look for + Register_Object(undamaged_state); + break; + } + case L4VideoObject::Rubble: + { + #if DEBUG_LEVEL > 0 + StateInstanceSwitchRenderable *undamaged_state = + #endif + new StateInstanceSwitchRenderable( + entity, // Entity to attach the renderable to + StateInstanceSwitchRenderable::Watcher, // How/when to execute the renderable + this_instance, // the instance to control + True, // true to turn on in this state, false for off + simulation_state, // State dial we use to control the on/off + CulturalIcon::BurningState); // State that we look for + Register_Object(undamaged_state); + break; + } + } + //---------------------------------- + // billboard object if so indicated + //---------------------------------- + if (this_DCS && (renderer_modes & L4VideoObject::BillboardObject)) + { + int + axes = dpl_reorient_axes_none; + + if (renderer_modes & L4VideoObject::BillboardXAxis) + { + axes |= dpl_reorient_axes_x; + } + if (renderer_modes & L4VideoObject::BillboardYAxis) + { + axes |= dpl_reorient_axes_y; + } + if (renderer_modes & L4VideoObject::BillboardZAxis) + { + axes |= dpl_reorient_axes_z; + } + dpl_SetDCSReorientAxes(this_DCS, (dpl_REORIENT_AXES)axes); + dpl_FlushDCS(this_DCS); + } + } + break; + } + // + // Case to handle rivets using the fast projectile code + // + case RivetClassID: + { + dpl_OBJECT + *this_object; + video_iterator.First(); + video_wrapper = video_iterator.ReadAndNext(); + Check(video_wrapper); + video_object = video_wrapper->GetVideoObject(); + Check_Pointer(video_object); + object_filename = video_object->GetObjectFilename(); + this_object = dpl_LoadObject(object_filename, dpl_load_normal); + #if DEBUG_LEVEL > 0 + ProjectileRootRenderable *projectile = + #endif + new ProjectileRootRenderable( + entity, // Entity to attach the renderable to + ProjectileRootRenderable::Dynamic, // How/when to execute the renderable + this_object, // object to hang on the DCS, may be a list later + dplMainZone); // DPL Zone this stuff will live in (for culling) + Register_Object(projectile); + break; + } + // + // Script for generating renderables for eyecandy + // + case EyeCandyClassID: + { + int effect_number; + + RootRenderable *this_root = + new RootRenderable( + entity, // Entity to attach the renderable to + RootRenderable::Dynamic, // How/when to execute the renderable + NULL, // object to hang on the DCS, may be a list later + dplMainZone, // DPL Zone this stuff will live in (for culling) + dpl_isect_mode_obj, // type of intersections to do on this object + NULL); // intersection mask for the object + Register_Object(this_root); + StateIndicator* simulation_state = (StateIndicator *)entity->GetAttributePointer("SimulationState"); + + video_iterator.First(); + while ((video_wrapper = video_iterator.ReadAndNext()) != NULL) + { + video_object = video_wrapper->GetVideoObject(); + effect_number = atoi(video_object->GetObjectFilename()); + #if DEBUG_LEVEL > 0 + DPLSFXRenderable *this_effect = + #endif + new DPLSFXRenderable( + entity, // Entity to attach the effect to + dplMainZone, // DPL zone everything will be in + Point3D::Identity, // Point offset from the parent DCS + this_root->GetDCS(), // Parent DCS (can be NULL for world) + simulation_state, // Trigger effect when this state changes + EyeCandy::effectOn, // Trigger effect when in this state + effect_number, // Type of effect to trigger + .01); // Effect repeat speed. + Register_Object(this_effect); + } + break; + } + // + // Script for generating an explosion of type specified in the resource file + // + case ExplosionClassID: + { + int effect_number; + + video_iterator.First(); + while ((video_wrapper = video_iterator.ReadAndNext()) != NULL) + { + video_object = video_wrapper->GetVideoObject(); + effect_number = atoi(video_object->GetObjectFilename()); + if(effect_number < 100 || effect_number >= 1000) + { + DPLIndependantEffect( + entity->localOrigin.linearPosition, + effect_number); + } + else + { + ExplosionScripts( + entity, // The entity we are dealing with + model_resource, // Pointer to the video resource + view_type, // Type of reference (inside/outside...etc.) + effect_number - 100); + } + } + break; + } + case CameraDirectorClassID: + { + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Create the CameraDirector HUD Renderable if not a Replicant + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + if (entity->GetInstance() == CameraDirector::MasterInstance) + { + CameraDirector *camera_director = (CameraDirector*) entity; + Check_Pointer(camera_director); + + int *player_index = &camera_director->goalPlayerIndex; + Check_Pointer(player_index); + + Logical *display_rank_window = &camera_director->displayRankingWindow; + Check_Pointer(display_rank_window); + + #if DEBUG_LEVEL > 0 + CameraShipHUDRenderable *my_camera_hud = + #endif + new CameraShipHUDRenderable( + entity, + CameraShipHUDRenderable::Dynamic, + player_index, + display_rank_window + ); + Register_Object(my_camera_hud); + } + break; + } + // + // Script for a drivable camera, the camera is invisible to other players + // + case CameraShipClassID: + { + if(view_type == insideEntity) + { + // + // Build an empty root renderable and an eye renderable + // + RootRenderable *this_root = + new RootRenderable( + entity, // Entity to attach the renderable to + RootRenderable::Dynamic, // How/when to execute the renderable + NULL, // object to hang on the DCS, may be a list later + dplMainZone, // DPL Zone this stuff will live in (for culling) + dpl_isect_mode_obj, // type of intersections to do on this object + NULL); // intersection mask for the object + Register_Object(this_root); + + #if DEBUG_LEVEL > 0 + DPLEyeRenderable* this_eye = + #endif + new DPLEyeRenderable( + entity, + dplMainZone, + LinearMatrix::Identity, + this_root->GetDCS(), + dplMainView, + NULL + ); + Register_Object(this_eye); + } + break; + } + // + // Script for doorframe, so it can be used in any game + // + case DoorFrameClassID: + { + Verify( object_count == 6 ); + //------------------------------------------------ + // First video object is root shape for the door + // followed by left door shape, right door shape, + // door lights, left door lights, and right door + // lights. + //------------------------------------------------ + dpl_OBJECT + *object, + *left, + *right, + *object_lights, + *left_lights, + *right_lights; + int object_number = 0; + + video_iterator.First(); + while ((video_wrapper = video_iterator.ReadAndNext()) != NULL) + { + video_object = video_wrapper->GetVideoObject(); + object_filename = video_object->GetObjectFilename(); + + #if NOISY_RENDERER + Tell("L4VIDEO.cpp loading door object "<GetSubsystem(0); + Point3D* left_door_position = &left_door_sub->currentPosition; + Door *right_door_sub = (Door*) entity->GetSubsystem(1); + Point3D* right_door_position = &right_door_sub->currentPosition; + RootRenderable *door_sill = + new RootRenderable( + entity, // Entity to attach the renderable to + RootRenderable::Static, // How/when to execute the renderable + object, // object to hang on the DCS, may be a list later + dplMainZone, // DPL Zone this stuff will live in (for culling) + dpl_isect_mode_obj, // type of intersections to do on this object + NULL); // intersection mask for the object + Register_Object(door_sill); + // + // Set my_root_dcs because we want this guy's hiearchy to be marked + // with his entity pointer + // + my_root_dcs = door_sill->GetDCS(); + LinearMatrix my_ident(True); + DPLChildPointRenderable* left_door = + new DPLChildPointRenderable( + entity, + dplMainZone, + left, + dpl_isect_mode_obj, + NULL, + my_ident, + door_sill->GetDCS(), + left_door_position); + Register_Object(left_door); + DPLChildPointRenderable* right_door = + new DPLChildPointRenderable( + entity, + dplMainZone, + right, + dpl_isect_mode_obj, + NULL, + my_ident, + door_sill->GetDCS(), + right_door_position); + Register_Object(right_door); + #if DEBUG_LEVEL > 0 + DCSInstanceRenderable *door_sill_lights_instance = + #endif + new DCSInstanceRenderable( + entity, // Entity to attach the renderable to + DCSInstanceRenderable::Static, // How/when to execute the renderable + object_lights, // object to connect to the instance + door_sill->GetDCS(), // the DCS to add the instance to + dpl_isect_mode_obj, // type of intersections to do on this object + NULL, // intersection mask for the object + True); // initial visibility setting + Register_Object(door_sill_lights_instance); + #if DEBUG_LEVEL > 0 + DCSInstanceRenderable *left_door_lights_instance = + #endif + new DCSInstanceRenderable( + entity, // Entity to attach the renderable to + DCSInstanceRenderable::Static, // How/when to execute the renderable + left_lights, // object to connect to the instance + left_door->GetDCS(), // the DCS to add the instance to + dpl_isect_mode_obj, // type of intersections to do on this object + NULL, // intersection mask for the object + True); // initial visibility setting + Register_Object(left_door_lights_instance); + #if DEBUG_LEVEL > 0 + DCSInstanceRenderable *right_door_lights_instance = + #endif + new DCSInstanceRenderable( + entity, // Entity to attach the renderable to + DCSInstanceRenderable::Static, // How/when to execute the renderable + right_lights, // object to connect to the instance + right_door->GetDCS(), // the DCS to add the instance to + dpl_isect_mode_obj, // type of intersections to do on this object + NULL, // intersection mask for the object + True); // initial visibility setting + Register_Object(right_door_lights_instance); + break; + } + // + // This is the script run on anything that isn't already listed above + // + default: + { + dpl_OBJECT + *this_object; + dpl_ISECT_MODE + intersect_mode; + uint32 + intersect_mask; + LinearMatrix + offset_matrix = LinearMatrix::Identity; + dpl_DCS + *root_DCS, + *this_DCS; + // + // First, establish that this level doesn't know what to do + // if the object has no video resource. + // + if (!model_resource) + { + VideoRenderer::MakeEntityRenderables(entity, model_resource, view_type); + Entity_Being_Created = NULL; + return; + } + // + // If we're inside the entity, set up the intersect mode and mask so we + // won't intersect ourselves with the pickpoint. Other items get full + // geometry intersection. + // + if (view_type == insideEntity) + { + intersect_mode = dpl_isect_mode_obj; + intersect_mask = NULL; + } + else + { + intersect_mode = dpl_isect_mode_geometry; + intersect_mask = INTERSECT_ALL; + } + + Logical + first_object = True; + + video_iterator.First(); + while ((video_wrapper = video_iterator.ReadAndNext()) != NULL) + { + video_object = video_wrapper->GetVideoObject(); + object_filename = video_object->GetObjectFilename(); + resource_type = video_object->GetResourceType(); + renderer_modes = video_object->GetRendererModes(); + + #if NOISY_RENDERER + Tell("L4VIDEO.cpp loading object " << object_filename); + Tell(" type " << resource_type); + Tell(" mode 0x" <IsDerivedFrom(Mover::ClassDerivations)) + { + // + // It's a mover, construct it with a dynamic root renderable so it can move + // also remember it's DCS so we can hook other shapes to it later. + // + SET_VIDEO_CONSTRUCT_ROOT(); + RootRenderable *this_root = + new RootRenderable( + entity, // Entity to attach the renderable to + RootRenderable::Dynamic, // How/when to execute the renderable + this_object, // object to hang on the DCS, may be a list later + dplMainZone, // DPL Zone this stuff will live in (for culling) + intersect_mode, // type of intersections to do on this object + intersect_mask); // intersection mask for the object + Register_Object(this_root); + CLEAR_VIDEO_CONSTRUCT_ROOT(); + + root_DCS = this_root->GetDCS(); + } + else + { + // + // It's a static, construct it with a static RootRenderable and + // remember it's DCS so we can hook other shapes to it later. + // + RootRenderable *this_static_root = + new RootRenderable( + entity, // Entity to attach the renderable to + RootRenderable::Static, // How/when to execute the renderable + this_object, // object to hang on the DCS, may be a list later + dplMainZone, // DPL Zone this stuff will live in (for culling) + intersect_mode, // type of intersections to do on this object + intersect_mask); // intersection mask for the object + Register_Object(this_static_root); + root_DCS = this_static_root->GetDCS(); + } + // + // Set my_root_dcs because we want this guy's hiearchy to be marked + // with his entity pointer + // + my_root_dcs = root_DCS; + // + // If we are inside the entity, then we must build an eyepoint for it too. + // since there is no special construction, we build the eyepoint with a + // zero offset. + // + if (view_type == insideEntity) + { + EulerAngles *eyepoint_rotation = + (EulerAngles *)entity->GetAttributePointer("EyepointRotation"); + #if DEBUG_LEVEL > 0 + DPLEyeRenderable *this_eye = + #endif + new DPLEyeRenderable( + entity, + dplMainZone, + LinearMatrix::Identity, + root_DCS, + dplMainView, + eyepoint_rotation); + Register_Object(this_eye); + } + //------------------------------------------------------ + // if root object billboards (all others billboard too) + //------------------------------------------------------ + this_DCS = root_DCS; + } + else + { + if (renderer_modes | L4VideoObject::BillboardObject) + { + //------------------------------------------ + // attach additional object to separate DCS + // because it is billboarded + //------------------------------------------ + DPLStaticChildRenderable *this_child = + new DPLStaticChildRenderable( + entity, + dplMainZone, + this_object, + intersect_mode, + intersect_mask, + offset_matrix, + root_DCS); + Register_Object(this_child); + this_DCS = this_child->GetDCS(); + } + else + { + //---------------------------------------- + // attach additional objects to root_DCS + // (HACK) temporary implementation (HACK) + //---------------------------------------- + #if DEBUG_LEVEL > 0 + DCSInstanceRenderable *another_instance = + #endif + new DCSInstanceRenderable( + entity, // Entity to attach the renderable to + DCSInstanceRenderable::Static, // How/when to execute the renderable + this_object, // object to connect to the instance + root_DCS, // the DCS to add the instance to + intersect_mode, // type of intersections to do on this object + intersect_mask, // intersection mask for the object + True); // initial visibility setting + Register_Object(another_instance); + this_DCS = NULL; + } + } + //---------------------------------- + // billboard object if so indicated + //---------------------------------- + if (this_DCS && (renderer_modes & L4VideoObject::BillboardObject)) + { + int + axes = dpl_reorient_axes_none; + + if (renderer_modes & L4VideoObject::BillboardXAxis) + { + axes |= dpl_reorient_axes_x; + } + if (renderer_modes & L4VideoObject::BillboardYAxis) + { + axes |= dpl_reorient_axes_y; + } + if (renderer_modes & L4VideoObject::BillboardZAxis) + { + axes |= dpl_reorient_axes_z; + } + dpl_SetDCSReorientAxes(this_DCS, (dpl_REORIENT_AXES)axes); + dpl_FlushDCS(this_DCS); + } + } + break; + } + } + // + // release the video chain memory + // + L4VideoObjectWrapper::DeleteVideoObjectChain(&video_chain); + // + // Clear the entity pointer passed to the callback system + // + Entity_Being_Created = NULL; + // + // If my_root_dcs is non-null, mark the entity's DCS hiearchy with it's + // entity pointer. + // + if(my_root_dcs) + { + MarkDCSHiearchy(my_root_dcs,entity); +#if 0 + if(entity->GetClassID() == DemolitionPackClassID) + { + Point3D temp_point(0.0,0.0,0.0); + #if DEBUG_LEVEL > 0 + OnePSFXRenderable *this_effect= + #endif + new OnePSFXRenderable( + entity, // Entity to attach the renderable to + OnePSFXRenderable::Static, // How/when to execute the renderable + myPSFXDescriptons[3], // name of file with the PFX description in it + my_root_dcs, // DCS the effect is relative to (may be NULL) + &temp_point); // Offset (or world coordinants if DCS is NULL) + Register_Object(this_effect); + } +#endif + } + Check_Fpu(); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// This should be called prior to the rendering of a frame to setup the culling +// data the renderer keeps (mostly the world to eye transform) +// +void + DPLRenderer::SetupCull() +{ + Entity + *linked_entity; + LinearMatrix + site_to_world, + world_to_site, + eye_rotation, + eye_inverted; + EntitySegment + *eyepoint_segment; + EulerAngles + *eyepoint_rotation; + // + // To test the functionality, this is not as efficient as it could be. + // when it gets fully patched into the renderer it will be improved. + // + // Figure out what type of entity this is. + // + linked_entity = GetLinkedEntity(); + eyepoint_rotation = (EulerAngles*)linked_entity->GetAttributePointer("EyepointRotation"); + if(linked_entity->IsDerivedFrom(JointedMover::ClassDerivations)) + { + JointedMover + *linked_jointed_mover; + + linked_jointed_mover = Cast_Object(JointedMover*, linked_entity); + eyepoint_segment = linked_jointed_mover->GetSegment("siteeyepoint"); + if(!eyepoint_segment) + { + Fail("DPLRenderer::SetupCull jointed mover had no siteeyepoint\n"); + } + if(!eyepoint_rotation) + { + Fail("DPLRenderer::SetupCull jointed mover had no EyepointRotation attribute\n"); + } + linked_jointed_mover->GetSegmentToWorld(*eyepoint_segment, &site_to_world); + if(eyepoint_rotation) + { + world_to_site.Invert(site_to_world); + eye_rotation = *eyepoint_rotation; + eye_inverted.Invert(eye_rotation); + worldToEyeMatrix.Multiply(world_to_site, eye_inverted); + } + else + { + worldToEyeMatrix.Invert(site_to_world); + } + } + else + { + site_to_world = linked_entity->localOrigin; + if(eyepoint_rotation) + { + world_to_site.Invert(site_to_world); + eye_rotation = *eyepoint_rotation; + eye_inverted.Invert(eye_rotation); + worldToEyeMatrix.Multiply(world_to_site, eye_inverted); + } + else + { + worldToEyeMatrix.Invert(site_to_world); + } + } +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +void + DPLRenderer::ResetStatistics() +{ + total_cull = 0; + total_draw = 0; + total_pixelplanes = 0; + total_frame_time = 0; + frame_count = 0; + target_frame_time = 56000; + target_frame_count= 0; + report_time = currentFrameTime + 60.0f; +} +void + DPLRenderer::ReportStatistics() +{ + if(frame_count != 0) + { + cout<<"Frames "<GetApplicationState(); + if(application->GetApplicationState() != lastAppState) + { + switch(current_app_state) + { + case Application::RunningMission: + dpl_SetViewFog( + dplMainView, + dpl_fog_type_pixel_lin, + fogRed, + fogGreen, + fogBlue, + fogNear, + fogFar ); + dpl_FlushView(dplMainView); + dpl_DisableSyncOnCreate(); + break; + case Application::StoppingMission: +#if 0 + dpl_SetViewFog( + dplMainView, + dpl_fog_type_pixel_lin, + 0.0, + 0.0, + 0.0, + 0.1, + 0.2 ); + dpl_FlushView(dplMainView); +#endif + break; + } + lastAppState = current_app_state; + } +// +// !!!! This may be the WRONG place to do this, but we'll try it +// + // extern dpl_INSTANCE *dpl_SectPixel(dpl_VIEW *, float32, float32, uint32, + // float32 *, float32 *, float32 *, + // dpl_DCS **, dpl_GEOGROUP **, dpl_GEOMETRY **); + // extern dpl_INSTANCE *dpl_RapidSectPixel(float32, float32, float32, uint32, + // float32 *, float32 *, float32 *, + // dpl_DCS **, dpl_GEOGROUP **, dpl_GEOMETRY **); + // + // If there is a reticle pointer defined, do the pickpoint processing + // + SET_VIDEO_PICKPOINT(); + if(vehicleReticle) + { + // + // Check the reticle structure to make sure it's ok, then see if pick + // point processing is turned on. + // + Check(vehicleReticle); + if(vehicleReticle->pickPointingOn) + { + // + // Remember the last thing we were targeted on, then go ahead and do the + // intersection call. + // + #if PRINT_PICKPOINT_TEST + old_instance = dplHitInstance; + old_damage_zone = vehicleReticle->targetDamageZone; + #endif + #if RAPID_SECT_PIXEL + dplHitInstance = dpl_RapidSectPixel ( + (((vehicleReticle->reticlePosition.x*aspectRatio)/2.0) + 0.5), // go from reticle coordinant system + (((vehicleReticle->reticlePosition.y*aspectRatio)/2.0) + 0.5), // to the screen coordinant system. + 1.0e5, + INTERSECT_ALL, + &vehicleReticle->rayIntersection.x, + &vehicleReticle->rayIntersection.y, + &vehicleReticle->rayIntersection.z, + &dplHitDCS, + &dplHitGeoGroup, + &dplHitGeometry); + #else + dplHitInstance = dpl_SectPixel ( + dplMainView, + (vehicleReticle->reticlePosition.x/2.0) + 0.5, // go from reticle coordinant system + (vehicleReticle->reticlePosition.y/2.0) + 0.5, // to the screen coordinant system. + INTERSECT_ALL, + &vehicleReticle->rayIntersection.x, + &vehicleReticle->rayIntersection.y, + &vehicleReticle->rayIntersection.z, + &dplHitDCS, + &dplHitGeoGroup, + &dplHitGeometry); + #endif + } + else + { + // + // When pickpoint is off, we should return something sensable + // + dplHitInstance = 0; + } + // + // Set the reticle variables based on whether we hit anything or not + // + if(dplHitInstance) + { + #if PARTICLE_TEST + DPLIndependantEffect( + vehicleReticle->rayIntersection, + 1); + #endif + vehicleReticle->targetEntity = (Entity *)dpl_GetAppSpecific(dplHitDCS); + #if USE_TRACKER_STRUCTURE + this_tracker = (dpl_tracker *)dpl_GetAppSpecific(dplHitGeoGroup); + #endif + if(dpl_GetAppSpecific(dplHitGeoGroup)) + { + #if USE_TRACKER_STRUCTURE + vehicleReticle->targetDamageZone = this_tracker->Damage_Zone_Number; + #else + vehicleReticle->targetDamageZone = ((int)dpl_GetAppSpecific(dplHitGeoGroup))-1; + #endif + +// vehicleReticle->targetEntity = this_tracker->This_Entity; + } + else + { + vehicleReticle->targetDamageZone = -1; +// vehicleReticle->targetEntity = NULL; + } + } + else + { + vehicleReticle->targetDamageZone = -1; + vehicleReticle->targetEntity = NULL; + } + + #if PRINT_PICKPOINT_TEST + //------------------------------------------ + // code for testing and debugging pickpoint + //------------------------------------------ + // If the object we are targeted on changes, we will print out the data + if(dplHitInstance) + { + if( old_instance != dplHitInstance || old_damage_zone != vehicleReticle->targetDamageZone) + { + cout<<"instance app specific="<targetEntity) + cout<<"Target Class="<targetEntity->GetClassID()<<"\n"; + #if USE_TRACKER_STRUCTURE + cout<<"Damage zone #="<targetDamageZone<<" "<dz_name<<"\n"; + #else + cout<<"Damage zone #="<targetDamageZone<<"\n"; + #endif + } + } + #endif + } + CLEAR_VIDEO_PICKPOINT(); + // + // Setup the video culling system, this generates the world to eye matrix for + // the currently linked entity and sets the current frame time to Now() + // + #if VIDEO_CULLING + SET_VIDEO_CULL_SETUP(); + SetupCull(); + CLEAR_VIDEO_CULL_SETUP(); + #endif + // + // If we've asked the system to count renderables, setup the total count + // + SET_VIDEO_RENDERABLES(); + #if COUNT_RENDERABLES + int + renderable_socket_count; + renderable_socket_count = 0; + #endif + // + // Execute all the dynamic renderables attached to this renderer. + // + SChainIteratorOf renderable_iterator(&dplRenderableSocket); + while ((component = renderable_iterator.ReadAndNext()) != NULL) + { + #if COUNT_RENDERABLES + renderable_socket_count++; + #endif + SET_VIDEO_ALL_RENDERABLES(); + component->Execute(); + CLEAR_VIDEO_ALL_RENDERABLES(); + } + // + // Flip trace for all renderables and report renderable count if enabled + // + CLEAR_VIDEO_RENDERABLES(); + #if COUNT_RENDERABLES + cout<<"dplRenderableSocket "<ReadAndNext()) != NULL) + { + // + // If enabled, flip this trace on vehicle or player renderables + // + #if defined(TRACE_VIDEO_VEHICLE_RENDERABLES) + if( entity->GetClassID() == MechClassID || + entity->GetClassID() == VTVClassID || + entity->GetClassID() == BTPlayerClassID) + { + SET_VIDEO_VEHICLE_RENDERABLES(); + } + #endif + // + // Create an iterator to iterate over all the dynamic video components + // in this entity. If renderable counting is turned on, initialize + // a counter for this entities renderables + // + Entity::DynamicVideoSocketIterator component_iterator(entity); + component_count=0; + // + // Iterate through all the dynamic video components for this entity + // + while ((component = component_iterator.ReadAndNext()) != NULL) + { + // + // Execute each of the entities components + // + SET_VIDEO_ALL_RENDERABLES(); + component->Execute(); + CLEAR_VIDEO_ALL_RENDERABLES(); + component_count++; + } + // + // If renderable counting is on, report how many renderables this entity + // had and update the totals + // + if(component_count != 0) + { + cout<<"Class "<GetClassID()<<" had "<GetClassID() == MechClassID || + entity->GetClassID() == VTVClassID || + entity->GetClassID() == BTPlayerClassID) + { + CLEAR_VIDEO_VEHICLE_RENDERABLES(); + } + #endif + } + if(total_components != 0) + cout<<"Renderables in entity sockets "<GetSize()<<" in the all iterator\n"; + #endif + // + // Do a batch DCS flush if we need to + // + DPLDoDCSBatchFlush(); + // + // We use the complete cycle handler to take care of calling DrawScene as soon as + // the renderer completes the the frame it's working on. + // + completeCycleNeeded = True; + CLEAR_VIDEO_RENDERER(); + + CompleteCycle(); +} +// +//############################################################################# +// DPLDelayDCSFlush and DPLDoDCSBatchFlush queue up a list of DCS pointers +// for later flushing in one big batch. +//############################################################################# +// +void + DPLRenderer::DPLDelayDCSFlush( + dpl_DCS *my_dcs) // The DCS we want to remember for later +{ + // + // Make sure the array hasn't become overfilled somehow and make + // sure the DCS is valid. + // + Verify(delayedDCSCount <= DELAY_DCS_FLUSH_ARRAY_SIZE); + Check_Pointer(my_dcs); + // + // If the array is full, flush it out to make space for this DCS + // + if(delayedDCSCount == DELAY_DCS_FLUSH_ARRAY_SIZE) + { + DPLDoDCSBatchFlush(); + } + // + // Add the New DCS to the list + // + delayDCSFlushArray[delayedDCSCount++] = my_dcs; +} +void + DPLRenderer::DPLDoDCSBatchFlush() // Flush the dcs's remembered by DPLDelayDCSFlush +{ + SET_VIDEO_BATCH_FLUSH(); + // + // Make sure the array hasn't become overfilled somehow + // + Verify(delayedDCSCount <= DELAY_DCS_FLUSH_ARRAY_SIZE); + // + // Flush the array and reset the counters that go with it + // + if(delayedDCSCount != 0) + { + delayDCSFlushArray[delayedDCSCount] = NULL; + dpl_FlushDCSArticulations(delayDCSFlushArray); + delayedDCSCount = 0; + } + CLEAR_VIDEO_BATCH_FLUSH(); +} +// +//############################################################################# +// DPLReportFreeMemory writes current free memory in graphics card to any +// output stream. +//############################################################################# +// +void + DPLRenderer::DPLReportFreeMemory(ostream &output) +{ + output << "Free memory in card: " << dpl_FreeMemory() << " bytes." << endl; + return; +} +// +//############################################################################# +// DPLReportPerfStats writes performance statistics to cout (stdout). +//############################################################################# +// +void + DPLRenderer::DPLReportPerfStats(ostream &output) +{ + //----------------------------------------------------- + // HACK - copied from camera.c must re-copy if changed + // + // case '?': + // printf ("sect time %d dcs 0x%x inst 0x%x\n", + // __sect_time, sect_dcs, sect_inst ); + //----------------------------------------------------- + output << "sect time " << __sect_time << + " dcs and inst not available" << endl; + + //------------------------------------------------------------ + // HACK - copied from dpl_vpx.c must re-copy if changed + // + // void dpl_PerfStats(void) + // printf ( "cull %d draw %d frame %d pxpl %d prims %d\n", + // __last_cull_time, + // __last_draw_time, + // __last_frame_time, + // __last_pxpl_time, + // __last_frame_prims ); + //------------------------------------------------------------ + output << + "cull " << __last_cull_time << + " draw " << __last_draw_time << + " frame " << __last_frame_time << + " pxpl " << __last_pxpl_time << + " prims " << __last_frame_prims << + endl; + if(statistics_started) + { + ReportStatistics(); + } + else + { + ResetStatistics(); + statistics_started = True; + } + return; +} +// +//############################################################################# +// DPLToggleWireframe toggles the state of dpl global wireframe. +//############################################################################# +// +void + DPLRenderer::DPLToggleWireframe() +{ + static Logical wireframe_on = 0; + + if ((wireframe_on ^= 1) != 0) + { + DEBUG_STREAM << "wireframe ON" << endl; + dpl_SetRenderProperty(dpl_render_prop_wireframe, dpl_render_value_on, NULL ); + } + else + { + DEBUG_STREAM << "wireframe OFF" << endl; + dpl_SetRenderProperty(dpl_render_prop_wireframe, dpl_render_value_off, NULL ); + } +} +// +//############################################################################# +// DPLTogglePVision toggles the state of dpl "predator" vision. +//############################################################################# +// +void + DPLRenderer::DPLTogglePVision() +{ + static Logical pvision_on = 0; + dpl_EXPLOSION_EFFECT_INFO sfx_info; + + sfx_info.x = sfx_info.y = sfx_info.z = 0; + if ((pvision_on ^= 1) != 0) + { + DEBUG_STREAM << "pvision ON" << endl; + sfx_info.type = -1; + } + else + { + DEBUG_STREAM << "pvision OFF" << endl; + sfx_info.type = -2; + } + dpl_Effect(dpl_effect_type_explosion, NULL, &sfx_info); + return; +} +// +//############################################################################# +// DPLFrameDump writes screen image to targa file. +//############################################################################# +// +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// oneD_filter() antialiased framegrab support +void + oneD_filter( + uint32 *linebuffer, + unsigned short *rframe, + unsigned short *gframe, + unsigned short *bframe, + int32 y, + int32 x_size + ) +{ + int32 + pos, + i, + r, g, b; + unsigned char + *clinebuf = (unsigned char *)linebuffer; + + pos = y * x_size; + + for (i=0; i> 8) & 0xff); + *clinebuf++ = (unsigned char)((g >> 8) & 0xff); + *clinebuf++ = (unsigned char)((b >> 8) & 0xff); + } + return; +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// dump_frame_buffer() +void + dump_frame_buffer( + dpl_VIEW *eye, + int32 x_size, + int32 y_size, + Logical antialias + ) +{ + //do not check eye here + + //---------------------------------------- + // control variable and operating buffers + //---------------------------------------- + static uint32 + dumped_frames = 0, + *line_buffer = NULL; + static unsigned short + *rframebuffer = NULL, + *gframebuffer = NULL, + *bframebuffer = NULL; + + if (eye == NULL) + { + //-------------------------- + // release allocated memory + //-------------------------- + if (line_buffer) + { + Unregister_Pointer(line_buffer); + delete line_buffer; + } + if (rframebuffer) + { + Unregister_Pointer(rframebuffer); + delete rframebuffer; + } + if (gframebuffer) + { + Unregister_Pointer(gframebuffer); + delete gframebuffer; + } + if (bframebuffer) + { + Unregister_Pointer(bframebuffer); + delete bframebuffer; + } + return; + } + Check_Pointer(eye); + + //----------------------------------------------------------------- + // AA kernel definition: + // + // normalized screen coordinates are -1.0 .. +1.0 + // these map (in NTSC) to 705 and 512. + // So a pixel in x is + // 2.0 / 704 = 2.841e-3 + // in y = 3.906e-3 + // for the re-use 5-sample kernel we displace by 0.5 pixels ... + //----------------------------------------------------------------- + static const int32 kernel_size = 4; + + static const float xk = 2.0f / x_size; + static const float yk = 2.0f / y_size; + static const float ox = xk / 4.0f; + static const float oy = yk / 4.0f; + static const float jx = 0.0f; // ox / 4.0f + static const float jy = 0.0f; // oy / 4.0f + + static const float x_kernel[4] = { -(ox+jx), ox-jx, jx-ox, jx+ox }; + static const float y_kernel[4] = { oy-jy, oy+jy, -(jy+oy), jy-oy }; + static const int kernel_weights[4] = { 64, 64, 64, 64 }; + + //--------------------- + // operating variables + //--------------------- + int32 passes = (antialias)?kernel_size:1; + int32 size = x_size * y_size; + int32 frameptr; + int32 i, x, y; + + DEBUG_STREAM << "Dump frame buffer (antialias=" << + ((antialias)?"True":"False") << ") - press Esc to cancel." << endl; + + //---------------------------- + // allocate operating buffers + //---------------------------- + if (line_buffer == NULL) + { + //----------------------------------------------------------------------- + // NOTE - must call dump_frame_buffer(NULL, NULL, NULL, NULL) to release + //----------------------------------------------------------------------- + line_buffer = new uint32[1024]; + Register_Pointer(line_buffer); + rframebuffer = new unsigned short[size]; + Register_Pointer(rframebuffer); + gframebuffer = new unsigned short[size]; + Register_Pointer(gframebuffer); + bframebuffer = new unsigned short[size]; + Register_Pointer(bframebuffer); + } + + //------------------------------ + // clear out r g b framebuffers + //------------------------------ + frameptr = 0; + for (i=0; i> 8) & 0xff); + tga_hdr[14] = (unsigned char)(y_size & 0xff); + tga_hdr[15] = (unsigned char)((y_size >> 8) & 0xff); + + tga_hdr[16] = 0x18; + tga_hdr[17] = 0x00; + + DEBUG_STREAM << "Writing image to file '" << fname << "' . . . "; + fp = fopen(fname, "wb"); + fwrite(tga_hdr, 18, 1, fp); + + for (y=0; y report_time) + { + ReportStatistics(); + report_time = currentFrameTime + 60.0f; + } + } + #if DEBUG_LEVEL > 0 + // + // Code to try and measure average frame rate + // Only active for builds above d0 + // + current = Now(); + FrameCount ++; + if((current - StartSample) > 10.0f) + { + float frame_rate; + frame_rate = FrameCount / (current-StartSample); + if(frame_rate < 28.0f) + printf("%4.2f fps\n", frame_rate); + StartSample = Now(); + FrameCount = 0; + } + #endif + // + // We've started the next frame, so indicate we don't need to do this again. + // + completeCycleNeeded = False; + CLEAR_VIDEO_RENDERER_FRAME_DONE(); + return True; + } + CLEAR_VIDEO_RENDERER_FRAME_DONE(); + } + return False; +} +// +//############################################################################# +// DPLIndependantPFX lets you start up an effect in absolute space that is +// run to termination automatically by the renderer. +//############################################################################# +// +void + DPLRenderer::DPLIndependantPFX( + Point3D location, // Location in space to trigger the effect + dpl_PARTICLESTART_EFFECT_INFO *psfx_definition, // Description of the pfx + dpl_DCS *my_DCS, // Optional DCS to link to + int subid) // inserted into third byte of effect id. + +{ + // we put our id into the lower 16 bits because (at least) the upper 8 bits are flags + // HACK...for testing pfx bug + + dpl_PARTICLESTART_EFFECT_INFO + tempParticle; + tempParticle = *psfx_definition; + tempParticle.identifier = (psfx_definition->identifier & 0xffff0000) | GetUniqueID() | ((subid<<16) & 0x00ff0000); + tempParticle.px = location.x; + tempParticle.py = location.y; + tempParticle.pz = location.z; + dpl_Effect ( dpl_effect_type_particlestart, my_DCS, &tempParticle ); +// cout<<"psfx identifier used was "<= 1000) + { + effect_number -= 1000; + if(effect_number < 0 || effect_number > MAX_PSFX_COUNT-1) + { + Fail("PSFX id number was not in the allowed range"); + } + DPLIndependantPFX(location,myPSFXDescriptons[effect_number],my_DCS,subid); + return; + } + dpl_EXPLOSION_EFFECT_INFO + my_explosion; + + my_explosion.type = effect_number; + my_explosion.x = location.x; + my_explosion.y = location.y; + my_explosion.z = location.z; + dpl_Effect ( dpl_effect_type_explosion, my_DCS, &my_explosion ); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + DPLRenderer::SetViewAngle(Degree new_angle) +{ + Check(this); + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Convert From Degree To Radian + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + Radian view_angle; + view_angle = new_angle; + viewAngle = view_angle; + viewRatio = tan(viewAngle/2.0f); + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Calc Aspect Ratio and Set View Projection + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + aspectRatio = (float) y_size / (float) x_size; + dpl_SetViewProjection ( dplMainView, -1.0f, -aspectRatio, 1.0f, aspectRatio, 1.0f/viewRatio); + dpl_FlushView(dplMainView); +} +// +//############################################################################# +// Startup the implementation of the Division video renderer +//############################################################################# +// +void + DPLRenderer::LoadMissionImplementation(Mission *mission) +{ + Check(this); + Tell("DPLVideoRenderer::StartImplementation has been called\n"); + DPLReadEnvironment(mission); + + LoadNameBitmaps(); +} +//############################################################################## +// Name Bitmap Support +// + +void + DPLRenderer::SortAndReloadNameBitmaps() +{ + Check(this); + + uint32 *worst_case_texels = MakeBitSliceStorage(); + Register_Pointer(worst_case_texels); + + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Get the Entity Group of Players + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + EntityGroup *player_group = application->GetEntityManager()->FindGroup("Players"); + Check(player_group); + ChainIteratorOf player_iterator(player_group->groupMembers); + Player *current_player; + BitMap *name_bitmap; + while((current_player = (Player*) player_iterator.ReadAndNext() ) != NULL) + { + Check(current_player); + name_bitmap = application->GetCurrentMission()-> + GetLargeNameBitmap(current_player->playerBitmapIndex); + if (name_bitmap && current_player->IsScoringPlayer()) + { + Check(name_bitmap); + LoadBitSliceTexture( + name_bitmap, // MUNGA 1 bit bitmap to load + (current_player->playerRanking + 1), // Position to load bitmap into + worst_case_texels // 8192 longword array for storage of the texmap + ); + } + } + LoadOrdinalBitmaps(worst_case_texels); + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Flush all bitmaps down to the card + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + FlushBitSliceTexture(worst_case_texels); + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Free the temporary memory the texmaps used + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + Unregister_Pointer(worst_case_texels); + free(worst_case_texels); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + DPLRenderer::LoadOrdinalBitmaps(unsigned int *worst_case_texels) +{ + Check(this); + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Check if we have a Director on this machine, + // if so, create load the ordinal Bitmaps only + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + // + if ( + (application->GetMissionPlayer()->GetInstance() == CameraDirector::MasterInstance) && + (application->GetMissionPlayer()->IsDerivedFrom(CameraDirector::ClassDerivations)) + ) + { + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Make Sure index is in the right place + // in case < 8 players!!!! + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + int index = 9; + for(int ii=1;ii<5;++ii) + { + // + //~~~~~~~~~~~~~~~~~~ + // Index Starts at 1 + //~~~~~~~~~~~~~~~~~~ + // + BitMap *ordinal_bitmap = application->GetCurrentMission()->GetOrdinalBitmap(ii); + Check(ordinal_bitmap); + LoadBitSliceTexture( + ordinal_bitmap, // MUNGA 1 bit bitmap to load + index, // Position to load bitmap into + worst_case_texels // 8192 longword array for storage of the texmap + ); + ++index; + } + } +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +unsigned int* + DPLRenderer::MakeBitSliceStorage() +{ + Check(this); + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Allocate some temporary memory + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + uint32 *worst_case_texels = new uint32[128*64]; + if(!worst_case_texels) + { + Fail("Could not allocate RAM for worst case texels\n"); + } + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Zero Out Memory so Empty Texture space is Black + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + for(int ii=0;ii<8192;++ii) + { + worst_case_texels[ii] = 0; + } + + return worst_case_texels; +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + DPLRenderer::LoadNameBitmaps() +{ + Check(this); + + uint32 *worst_case_texels = MakeBitSliceStorage(); + Register_Pointer(worst_case_texels); + + int player_count; + player_count = application->GetCurrentMission()->GetPlayerCount(); + Check(application); + Check(application->GetCurrentMission()); + + BitMap *name_bitmap; + for (int ii=0;iiGetCurrentMission()->GetLargeNameBitmap(ii+1); + if (name_bitmap) + { + Check(name_bitmap); + LoadBitSliceTexture( + name_bitmap, // MUNGA 1 bit bitmap to load + ii+1, // Position to load bitmap into + worst_case_texels // 8192 longword array for storage of the texmap + ); + } + } + LoadOrdinalBitmaps(worst_case_texels); + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Flush all bitmaps down to the card + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + FlushBitSliceTexture(worst_case_texels); + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Free the temporary memory the texmaps used + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + Unregister_Pointer(worst_case_texels); + delete[] worst_case_texels; +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + DPLRenderer::ShutdownImplementation() +{ + Tell("DPLVideoRenderer::StopImplementation has been called\n"); + dpl_EnableSyncOnCreate(); + SChainIteratorOf projectile_iterator(&projectile_list); + TreeIteratorOf cache_iterator(&dplObjectCacheSocket); +#if defined(LAB_ONLY) + cout<<"max projectiles "<objectPointer; + delete my_cache_line; + + // + // Return the object pointer + // + return(object_pointer); +} + +void + DPLRenderer::PutCachedObject( + const CString &object_name, // Name of the object we will cache + dpl_OBJECT *object_pointer) // pointer to the object being cached +{ + // + // Create the cache line data structure + // + #if 0 + typedef PlugOf DPLObjectCacheLine; + + DPLObjectCacheLine *my_cache_line = new DPLObjectCacheLine(object_pointer); + #endif + + DPLObjectCacheLine *my_cache_line = + new DPLObjectCacheLine( + object_name, + object_pointer); + Register_Object(my_cache_line); + + // + // Store this cache line in the cache + // + dplObjectCacheSocket.AddValue(my_cache_line, object_name); + +} +//----------------------------------------------------------------------------- +//--------------------------Projectile Speedup--------------------------------- +//----------------------------------------------------------------------------- +InnerProjectileRenderable* + DPLRenderer::GetProjectile( + dpl_OBJECT *graphical_object, // object to hang on the DCS, may be a list later + dpl_ZONE *this_zone) // DPL Zone this stuff will live in (for culling) +{ + InnerProjectileRenderable + *return_projectile; + dpl_INSTANCE + *temp_instance; + // + // Are there projectiles in the list? + // + SChainIteratorOf iterator(&projectile_list); + if ((return_projectile = iterator.GetCurrent()) != NULL) + { + // Yes, remove it from the list set it's instance and return it + iterator.Remove(); + temp_instance = return_projectile->GetInstance(); + if(graphical_object != dpl_GetInstanceObject(temp_instance)) + { + dpl_SetInstanceObject (temp_instance, graphical_object); + dpl_FlushInstance (temp_instance); + } + return(return_projectile); + } + else + { + // no, make a new one and return that + InnerProjectileRenderable *projectile = + new InnerProjectileRenderable( + graphical_object, // object to hang on the DCS, may be a list later + this_zone); // DPL Zone this stuff will live in (for culling) + return(projectile); + } + +} +void + DPLRenderer::ReleaseProjectile( + InnerProjectileRenderable* inner_projectile) +{ + // add the projectile back to the list + projectile_list.Add(inner_projectile); +} +//----------------------------------------------------------------------------- +//--------------------------Joint to DCS translator---------------------------- +//----------------------------------------------------------------------------- +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// DPLJointToDCSTranslator is a class that contains a joint number to dcs +// pointer translation table. This lets a renderer find the dcs that goes +// with a particular segment. +// + DPLJointToDCSTranslator::DPLJointToDCSTranslator( + Entity *entity, // The entity to translate + dpl_DCS *dcs_array[]) // Array of DCS's to translate +{ + JointedMover + *my_jointed_mover; + // + // Make sure this is a jointed mover, then cast the entity pointer over + // + if (entity->IsDerivedFrom(JointedMover::ClassDerivations)) + { + my_jointed_mover = (JointedMover*)entity; + } + else + { + Fail("DPLJointToDCSTranslator was called on an entity NOT a JointedMover\n"); + } + // + // Find out how many joints the entity has, then allocate enough RAM for a + // DCS pointer to every joint. + // + JointSubsystem* joint_subsystem = my_jointed_mover->GetJointSubsystem(); + Check(joint_subsystem); + translation_array = new (dpl_DCS(*[joint_subsystem->GetJointCount()])); + Register_Pointer(translation_array); + // + // Setup to iterate the entity segment table + // + EntitySegment::SegmentTableIterator segment_iterator(my_jointed_mover->segmentTable); + EntitySegment *current_segment; + while ((current_segment = segment_iterator.ReadAndNext()) != NULL) + { + // + // For each segment, see if it has a joint index, if it does, put the + // DCS for that joint into the translation array + // + Check(current_segment); + int joint_index = current_segment->GetJointIndex(); + if(joint_index != -1) + { + translation_array[joint_index] = dcs_array[current_segment->GetIndex()]; + } + } +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +DPLJointToDCSTranslator::~DPLJointToDCSTranslator() +{ + Unregister_Pointer(translation_array); + delete[] translation_array; + translation_array = NULL; +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Logical + DPLJointToDCSTranslator::TestInstance() const +{ + return True; +} +//----------------------------------------------------------------------------- +//--------------------------Resource creation support-------------------------- +//----------------------------------------------------------------------------- +//############################################################################# +//############# DPLRenderer::CreateModelVideoStreamResource ############# +//############################################################################# + +ResourceDescription::ResourceID + DPLRenderer::CreateModelVideoStreamResource( + ResourceFile *resource_file, + const char *model_name, + NotationFile *model_file, + const ResourceDirectories * /*directories*/ + ) +{ + ResourceDescription *res_description = + resource_file->FindResourceDescription( + model_name, + ResourceDescription::VideoModelResourceType + ); + + if (res_description == NULL) + { + NameList *video_entries = model_file->MakeEntryList("video"); + + if (video_entries != NULL) + { + Register_Object(video_entries); + + //---------------------------------------------- + // parse video model data and store in resource + //---------------------------------------------- + Tell("Building video resource for model '" << model_name << "'.\n"); + + NameList::Entry + *entry, + *next_entry; + const char + *entry_name, + *entry_pointer, + *argument_start; + int + length; + char + argument[40], + *argument_pointer; + L4VideoObject::ResourceType + resource_type; + Enumeration //(see L4VideoObject::RendererModes) + renderer_modes; + enum + { + parsing_filename, + seeking_switch, + parsing_switch, + parsing_billboard + } state; + L4VideoObject + *video_object; + L4VideoObjectWrapper + *video_wrapper; + ChainOf + video_chain(NULL); + char + *video_stream, + *video_pointer; + int + object_count; + long + object_size, + stream_length; + + //------------------------------------------------ + // parse each entry in [video] page of model file + //------------------------------------------------ + next_entry = video_entries->GetFirstEntry(); + while (next_entry) + { + entry = next_entry; + Check(entry); + next_entry = entry->GetNextEntry(); // so 'continue' works + entry_name = entry->GetName(); + if (entry_name && *entry_name) + { + //-------------------------------------------- + // could be "skeleton" or "object" or comment + //-------------------------------------------- + if (strcmp(entry_name, "object") == 0) + { + resource_type = L4VideoObject::Object; + } + else if (strcmp(entry_name, "rubble") == 0) + { + resource_type = L4VideoObject::Rubble; + } + else if (strcmp(entry_name, "skeleton") == 0) + { + resource_type = L4VideoObject::Skeleton; + } + else if (Comment_Line(entry_name)) + { + // do nothing - skip comments + continue; + } + else if (strncmp(entry_name, "skeleton", 8) == 0) + { + // do nothing - skip temporary skeleton entries + continue; + } + else if (strncmp(entry_name, "destroyed", 9) == 0) + { + // do nothing - skip destroyed skeleton entries + continue; + } + else if (strncmp(entry_name, "dzm", 3) == 0) + { + // do nothing - skip damage zone material entries + continue; + } + else + { +// resource_type = L4VideoObject::Unknown; + DEBUG_STREAM << "Unknown entry '" << entry_name << + "' in model '" << model_name << "' ignored." << endl; + continue; + } + //--------------------------------- + // parse and process each argument + //--------------------------------- + entry_pointer = entry->GetChar(); + while (entry_pointer && *entry_pointer) + { + //------------------------- + // skip leading whitespace + //------------------------- + while (*entry_pointer != '\0' && isspace(*entry_pointer)) + { + ++entry_pointer; + } + //--------------------------- + // exit loop if nothing left + //--------------------------- + if (*entry_pointer == '\0') + { + break; + } + //------------------------------------------- + // parse the next argument into local buffer + //------------------------------------------- + argument_start = entry_pointer; + while (*entry_pointer != '\0' && !isspace(*entry_pointer)) + { + ++entry_pointer; + } + length = entry_pointer - argument_start; + Verify( length < sizeof(argument) ); + strncpy(argument, argument_start, length); + argument[length] = '\0'; + //---------------------- + // parse local argument + //---------------------- + argument_pointer = argument; + renderer_modes = L4VideoObject::Normal; + state = parsing_filename; + while (*argument_pointer != '\0') + { + switch (state) + { + case parsing_filename: + switch (*argument_pointer) + { + #if 0 + case '.': + if ((resource_type == L4VideoObject::Object) || + (resource_type == L4VideoObject::Rubble)) + { + *argument_pointer = '\0'; // terminate filename + state = seeking_switch; + } + break; + #endif + case '/': + *argument_pointer = '\0'; // terminate filename + state = parsing_switch; + break; + default: + // later check for valid filename character... + break; + } + break; + case seeking_switch: + if (*argument_pointer == '/') + { state = parsing_switch; } + break; + case parsing_switch: + switch (*argument_pointer) + { + case 'b': + case 'B': + state = parsing_billboard; + break; + case 'i': + case 'I': + renderer_modes |= L4VideoObject::IntersectImmune; + state = seeking_switch; + break; + default: + state = seeking_switch; + break; + } + break; + case parsing_billboard: + switch (*argument_pointer) + { + case 'x': + case 'X': + renderer_modes |= L4VideoObject::BillboardXAxis; + break; + case 'y': + case 'Y': + renderer_modes |= L4VideoObject::BillboardYAxis; + break; + case 'z': + case 'Z': + renderer_modes |= L4VideoObject::BillboardZAxis; + break; + case '/': + state = parsing_switch; + break; + default: + state = seeking_switch; + break; + } + break; + // no default: + } + ++argument_pointer; + } + //----------------------------------------------- + // create video resource object and add to chain + //----------------------------------------------- + video_object = + new L4VideoObject( + argument, + resource_type, + renderer_modes + ); + Register_Pointer(video_object); // not _Object! + + video_wrapper = + new L4VideoObjectWrapper( + video_object, + True // delete object when done + ); + Register_Object(video_wrapper); + + //Tell(" adding video object '"< + video_iterator(video_chain); + + object_count = video_iterator.GetSize(); + + object_size = sizeof(L4VideoObject); + stream_length = sizeof(int) + object_count * object_size; + + video_stream = new char[stream_length]; + Register_Pointer(video_stream); + + video_pointer = video_stream; + *((int *)video_pointer) = object_count; + video_pointer += sizeof(int); + + Tell(" count " <GetVideoObject(); + *((L4VideoObject *)video_pointer) = *video_object; + video_pointer += object_size; + } + //-------------------------------------------------- + // store stream of video resources in resource file + //-------------------------------------------------- + res_description = + resource_file->AddResource( + model_name, + ResourceDescription::VideoModelResourceType, + 1, + ResourceDescription::Preload, + video_stream, + stream_length + ); + //-------------------------- + // release allocated memory + //-------------------------- + // video_chain + L4VideoObjectWrapper::DeleteVideoObjectChain(&video_chain); + // video_stream + Unregister_Pointer(video_stream); + delete video_stream; + // video_entries + Unregister_Object(video_entries); + delete video_entries; + } + else + { + //------------------------------- + // no [video] page in model file + //------------------------------- + return (ResourceDescription::NullResourceID); + } + } + return (res_description->resourceID); +} +//===========================================================================// + diff --git a/CODE/RP/MUNGA_L4/L4VIDEO.HPP b/CODE/RP/MUNGA_L4/L4VIDEO.HPP new file mode 100644 index 0000000..f05ca2b --- /dev/null +++ b/CODE/RP/MUNGA_L4/L4VIDEO.HPP @@ -0,0 +1,637 @@ +//===========================================================================// +// File: l4video.hpp // +// Project: MUNGA Brick: Video Renderer Manager // +// Contents: Interface specification Video Renderer Manager // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 01/11/95 GAC Initial coding. // +// 07/11/95 KEO Modify video resource format. // +// 02/08/96 KEO Add rubble entry to video resource. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995-1996, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide. // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL. // +//===========================================================================// + +#if !defined(L4VIDEO_HPP) +# define L4VIDEO_HPP + +# if !defined(VIDREND_HPP) +# include +# endif + +# if !defined(ROTATION_HPP) +# include +# endif + +# if !defined(RETICLE_HPP) +# include +# endif + +# if !defined(GRAPH2D_HPP) +# include +# endif + +# if !defined(SIMULATE_HPP) +# include +# endif + +# if !defined(L4VIDRND_HPP) +# include +# endif + +# if !defined(TREE_HPP) +# include +# endif + +# if !defined(TABLE_HPP) +# include +# endif + +#include +#include + + class NotationFile; + +#define INTERSECT_ALL (0xFFFFFFFF) + + //########################################################################## + // Declaration of dpl callback function that performs in-place text + // substitution on all material names before they are looked up. + // There must be at least MATERIAL_NAME_LENGTH bytes available at source! + // +#define MATERIAL_NAME_BUFFER_LENGTH 256 + + char8* + substituteMaterial(char8 *source); + + //########################################################################## + // This structure is attached to DPL nodes so we can put information in them + // on what entity the node is part of and what damage zone it belongs to. + // +#define MAX_DZ_NAME_LENGTH 25 + + struct dpl_tracker + { + Entity + *This_Entity; // The entity this is part of + char + dz_name[MAX_DZ_NAME_LENGTH]; // this is temporary, to make testing easier + int + Damage_Zone_Number; // number of this damage zone + }; + +//----------------------------------------------------------------------------- +//--------------------------DPL video resource object-------------------------- +//----------------------------------------------------------------------------- + //########################################################################## + //########################## L4VideoObject ########################### + //########################################################################## + +#define MAX_OBJECT_FILENAME_LENGTH 15 + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // This class gets stored in a resource so it is derived from nothing. + // + class L4VideoObject + { + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Construction, Destruction and testing + // + public: + enum ResourceType + { + Unknown, + Skeleton, + Object, + Rubble, + VidFile + }; + enum RendererModes // bit flags + { + Normal = 0x000, + BillboardXAxis = 0x001, + BillboardYAxis = 0x002, + BillboardZAxis = 0x004, + BillboardObject = (BillboardXAxis | BillboardYAxis | BillboardZAxis), + BlinkObject = 0x008, + IntersectImmune = 0x010 + }; + +// L4VideoObject(); + L4VideoObject( + const char *filename, + ResourceType resource_type, + Enumeration renderer_modes, // RendererModes + float blink_period = 0.0f, + float percent_time_on = 0.0f + ); + ~L4VideoObject(); + + const char* + GetObjectFilename() const + { return objectFilename; } + char* + GetObjectFilename() + { return objectFilename; } + ResourceType + GetResourceType() const + { return resourceType; } + Enumeration // RendererModes + GetRendererModes() const + { return rendererModes; } + + Logical + TestInstance() const; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Implementations + // +// private: + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Private data + // + private: + char + objectFilename[MAX_OBJECT_FILENAME_LENGTH]; + ResourceType + resourceType; + Enumeration // RendererModes + rendererModes; // bit flags (see RendererModes) + float + blinkPeriod, // cycle length in seconds + percentTimeOn; // percent of cycle on + }; + + //########################################################################## + //####################### L4VideoObjectWrapper ####################### + //########################################################################## + + class L4VideoObjectWrapper: + public Plug + { + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Construction, Destruction and testing + // + public: +// L4VideoObjectWrapper(); + L4VideoObjectWrapper( + L4VideoObject *video_object, + Logical delete_object = False + ); + ~L4VideoObjectWrapper(); + + L4VideoObject* + GetVideoObject() const + { Check(this); return videoObject; } + + Logical + TestInstance() const; + + static int + BuildVideoObjectChainFromResource( + ChainOf *video_chain, + ResourceDescription *video_resource + ); + static void + DeleteVideoObjectChain( + ChainOf *video_chain + ); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Implementations + // +// public: + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Private data + // + private: + L4VideoObject + *videoObject; + Logical + deleteObject; + }; + +// +//----------------------------------------------------------------------------- +//--------------Actual DPL video renderer class starts below------------------- +//----------------------------------------------------------------------------- +// + class DPLObjectCacheLine: + public Plug + { + public: + DPLObjectCacheLine( + const CString &object_name, + dpl_OBJECT *object_ptr) + { + objectName = object_name; + objectPointer = object_ptr; + }; + + ~DPLObjectCacheLine(){}; + + Logical + TestInstance() const + { + Check(&objectName); + Check_Pointer(objectPointer); + + return True; + }; + + CString + objectName; + dpl_OBJECT + *objectPointer; + }; + + class DPLJointToDCSTranslator: + public Plug + { + public: + DPLJointToDCSTranslator( + Entity *entity, // The entity to translate + dpl_DCS *dcs_array[]); // Array of DCS's to translate + + ~DPLJointToDCSTranslator(); + + Logical + TestInstance() const; + + int + DCSCount; + dpl_DCS + **translation_array; // array to translate from joint # to DCS* + }; + + //########################################################################## + //########################### DPLRenderer ############################ + //########################################################################## +#define DELAY_DCS_FLUSH_ARRAY_SIZE 100 +#define MAX_PSFX_COUNT 40 + class DPLRenderer: + public VideoRenderer + { + public: + // + // Construction, Destruction and test instance declarations + // + DPLRenderer( + RendererRate calibration_rate, + RendererComplexity calibration_complexity, + RendererPriority calibration_priority, + InterestType interest_type, + InterestDepth depth_calibration); + + ~DPLRenderer(); + + Logical + TestInstance() const; + // + // These routines are the renderer side of the culling system, they are + // used to setup the stored data on the eyepoint's transformation matrices + // + inline Scalar + GetCurrentFrameTime() + {return(currentFrameTime);} // Returns the time at the start of the frame + + inline LinearMatrix* + GetWorldToEyeMatrix() + {return(&worldToEyeMatrix);} // Returns the world to eye matrix (for culling) + inline Scalar + GetViewRatio() + {return(viewRatio);} // Returns tan(viewAngle/2.0) + void + SetupCull(); // Sets up the WorldToEyeMatrix each frame + // + // These routines manage the renderer's list of renderables that need to be + // executed each frame. For the moment these routines just blindly add and + // remove the items from the dplRenderableSocket + // + void + AddDynamicRenderable(Component *my_renderable); + void + RemoveDynamicRenderable(Component *my_renderable); + // + // These routines are used for tracking target frame time + // + void + ResetStatistics(); + void + ReportStatistics(); + // + // Other renderer stuff + // + dpl_ZONE* + MakeNewZone(); + + void + MarkDCSHiearchy( + dpl_DCS *root_DCS, + Entity *entity); + void + FlushBitSliceTexture( + unsigned int *local_storage); + void + LoadBitSliceTexture( + BitMap *bitmap_to_load, // MUNGA 1 bit bitmap to load + int load_position, // Position to load bitmap into + unsigned int *local_storage); // 8192 longword array for storage of the texmap + + void + SetViewAngle(Degree new_angle); + + unsigned int* + MakeBitSliceStorage(); + + void + SortAndReloadNameBitmaps(); + + void + LoadNameBitmaps(); + + void + LoadOrdinalBitmaps(unsigned int *local_storage); + + void + DPLIndependantEffect( + Point3D location, // Location of the effect in world space + int effect_number, // DPL effect number to trigger at this location + dpl_DCS *my_dcs = NULL, + int subid = 0); // inserted into third byte of effect id. + + void + DPLIndependantPFX( + Point3D location, // Location in space to trigger the effect + dpl_PARTICLESTART_EFFECT_INFO *psfx_definition, // Description of the pfx + dpl_DCS *my_dcs = NULL, // optional DCS to issue from + int subid = 0); // inserted into third byte of effect id. + + void + DPLDelayDCSFlush( + dpl_DCS *my_dcs); // The DCS we want to remember for later + + void + DPLDoDCSBatchFlush(); // Flush the dcs's remembered by DPLDelayDCSFlush + + void + DPLReportFreeMemory(ostream &output); // Report current free memory in card + + void + DPLReportPerfStats(ostream &output); // Report performance statistics + + void + DPLToggleWireframe(); // Toggle state of dpl wireframe + + void + DPLTogglePVision(); // Toggle state of dpl pvision + + void + DPLFrameDump(Logical antialias); // Write framedump to targa file + + Logical + CompleteCycle(); + + InnerProjectileRenderable* + GetProjectile( + dpl_OBJECT *graphical_object, // object to hang on the DCS, may be a list later + dpl_ZONE *this_zone); // DPL Zone this stuff will live in (for culling) + + void + ReleaseProjectile( + InnerProjectileRenderable *inner_projectile); + + int + GetUniqueID(); + + dpl_PARTICLESTART_EFFECT_INFO* + ReadPSFX( + const char *file_name); // Name of the file containing the PSFX description + + dpl_OBJECT* + GetCachedObject( + const CString &object_name); // Name of the object we want to get + + void + PutCachedObject( + const CString &object_name, // Name of the object we will cache + dpl_OBJECT *object_pointer); // pointer to the object being cached + + static ResourceDescription::ResourceID + CreateModelVideoStreamResource( + ResourceFile *resource_file, + const char *model_name, + NotationFile *model_file, + const ResourceDirectories *directories); + + void + CacheExplosionScripts( + int script_select); // The script to be cached + + enum FogStyle + { + updateFogSetting, + noUpdateFogSetting, + searchLightOnFogStyle, + searchLightOffFogStyle, + winnersCircleFogStyle + }; + + void + SetFogStyle(FogStyle my_fog); + + void + GetCurrentFogSettings( + float *fogRed, + float *fogGreen, + float *fogBlue, + float *fogNear, + float *fogFar); + private: + void + ExplosionScripts( + Entity *entity, // The entity we are dealing with + ResourceDescription *model_resource, // Pointer to the video resource + ViewFrom view_type, // Type of reference (inside/outside...etc.) + int script_select); + void + DPLRenderer::DPLReadINIPage( + NotationFile *master_notation_file, + const char *starting_page_name, + Mission *mission, + Logical debug_print); + + void + DPLRenderer::DPLReadEnvironment(Mission *mission); + void + ShutdownImplementation(); + void + SuspendImplementation(); + void + ResumeImplementation(); + void + ExecuteImplementation( + RendererComplexity complexity_update, + RendererOrigin::InterestingEntityIterator *iterator + ); + + + protected: + + void + LoadMissionImplementation(Mission *mission); + + // + // These variables hold some culling related information + // + + LinearMatrix + worldToEyeMatrix; // the current world to eye transform for our linked entity + Scalar + currentFrameTime; // the time at the start of renderable execution + + // + // These variables are used for tracking target frame time + // + unsigned long + total_cull, + total_draw, + total_pixelplanes, + total_frame_time, + target_frame_time, + frame_count, + target_frame_count; + Logical + statistics_started; + Scalar + report_time; + // + // The rest of the renderer's variables. + // + + Time + StartSample; // For generating a framerate printout + + Logical + fogUpdating, + eyeRelative, // True if the eye will be relative to the linked entity origin + completeCycleNeeded; // True when we are waiting for DPL to be ready for the next frame + + int + myUniqueID, // Generates a unique 16 bit id value for PSFX use + lastAppState; // For keeping track of what the application is doing + + float + aspectRatio, // aspect ratio of the screen + FrameCount, // For keeping track of framerate + // Fog is setup as standard fog used for vehicles without simulated lights + // and used when a vehicle with lights has them switched on. This setting + // is replicated into the "noSearchLight" setting so vehicles with lights + // will always get this setting if the environment doesn't specifically say + // that headlight simulation will work. + fogRed, // Fog setting to use when vehicle lights are on + fogBlue, // This is the default for vehicles with no lights + fogGreen, + fogNear, + fogFar, + searchLightFogRed, // Fog setting to use when vehicle lights are on + searchLightFogBlue, + searchLightFogGreen, + searchLightFogNear, + searchLightFogFar, + noSearchLightFogRed, // Fog setting to use when vehicle lights are off + noSearchLightFogBlue, + noSearchLightFogGreen, + noSearchLightFogNear, + noSearchLightFogFar, + clipNear, // Near clipping plane (from INI file) + clipFar, // Far clipping plane (from INI file) + backgroundRed, // Background color (from INI file) + backgroundGreen, + backgroundBlue, + viewAngle, // Viewing angle (from INI file) + viewRatio; // This is tan(viewAngle/2.0f) (handy for culling) + + dpl_DCS + *dplTestEyeDCS; // A DCS we temporarily hook our eye on (for testing) + + void + MakeEntityRenderables( + Entity *this_entity, // The entity we are dealing with + ResourceDescription *model_resource, // Pointer to the video resource + ViewFrom type); // Type of reference (inside/outside...etc.) + + dpl_VIEW + *dplMainView; // The DPL view we create at the beginning and use for our eye + + dpl_ZONE + *dplDeathZone, // The DPL zone that holds our vehicle (for death effect) + *dplMainZone; // The DPL zone that holds the rest of the world + + Reticle + *vehicleReticle; // Pointer to our vehicle's reticle if one exists. + + dpl_DCS + *delayDCSFlushArray[DELAY_DCS_FLUSH_ARRAY_SIZE+1]; + int + delayedDCSCount; + dpl_PARTICLESTART_EFFECT_INFO + *myPSFXDescriptons[MAX_PSFX_COUNT]; + // + // This information is captured from the pickpoint when it is enabled + // + dpl_INSTANCE + *dplHitInstance; + dpl_DCS + *dplHitDCS; + dpl_GEOGROUP + *dplHitGeoGroup; + dpl_GEOMETRY + *dplHitGeometry; + // + // This information holds the list of projectile renderables + // + SChainOf + projectile_list; + // + // This holds the list of cached objects + // + TreeOf + dplObjectCacheSocket; + // + // This holds the list of jointed mover DCS tables + // + TableOf + dplJointToDCSTranslatorSocket; + // + // This chain contains the list of active renderables + // + SChainOf + dplRenderableSocket; + +public: + // + // Store Lights for Later Revision + // + dpl_LIGHT + *ambientLight, + **sceneLight; // Array of all the lights + + dpl_DCS + **sceneLightDCS; // Array of DCS's for Lights + + int + sceneLightCount; + + static UserHeap + *DPLHeap; + }; + +#endif + +//===========================================================================// + diff --git a/CODE/RP/MUNGA_L4/L4VIDEO.TCP b/CODE/RP/MUNGA_L4/L4VIDEO.TCP new file mode 100644 index 0000000..1ca787c --- /dev/null +++ b/CODE/RP/MUNGA_L4/L4VIDEO.TCP @@ -0,0 +1,75 @@ +//===========================================================================// +// File: vidrend.tst // +// Project: MUNGA Brick: Video Renderer Manager // +// Contents: Interface specification Video Renderer Manager // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 01/11/95 GAC Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#include "entity.thh" + +Logical + VideoRenderer::TestClass() + +{ + + Tell("Starting VideoRenderer::TestClass\n"); +#if 0 +// Create the message that will be used to make my entities + + TestEntity::MakeMessage + message1( + TestEntity::MakeMessageID, + sizeof(TestEntity::MakeMessage), + TestEntity::TrivialEntityClassID, + TestEntity::DefaultFlags, + LinearOrigin::Identity + ); + +// Send the message that creates the entity in Entity_1 + + message1.localOrigin.translation.z = -30.0f; + + Entity* Entity_1 = TestEntity::Make(&message1); + + Register_Object(Entity_1); + + // Push the origin in the message forward 30 meters + + message1.localOrigin.translation.z = 30.0f; + + // Create the second entity 30 meters in front of the first + + Entity* Entity_2 = TestEntity::Make(&message1); + + Register_Object(Entity_2); + +// create more + + message1.localOrigin.translation.z = 0.0f; + message1.localOrigin.translation.x = 30.0f; + Entity* Entity_3 = TestEntity::Make(&message1); + Register_Object(Entity_3); + + + message1.localOrigin.translation.x = -30.0f; + Entity* Entity_4 = TestEntity::Make(&message1); + Register_Object(Entity_4); + + message1.localOrigin.translation.x = 0.0f; + message1.localOrigin.translation.y = 30.0f; + Entity* Entity_5 = TestEntity::Make(&message1); + Register_Object(Entity_5); + + message1.localOrigin.translation.y = -30.0f; + Entity* Entity_6 = TestEntity::Make(&message1); + Register_Object(Entity_6); +#endif + return False; +} diff --git a/CODE/RP/MUNGA_L4/L4VIDPER.CPP b/CODE/RP/MUNGA_L4/L4VIDPER.CPP new file mode 100644 index 0000000..e01ce0f --- /dev/null +++ b/CODE/RP/MUNGA_L4/L4VIDPER.CPP @@ -0,0 +1,484 @@ +//===========================================================================// +// File: l4vidper.cpp // +// Project: MUNGA Brick: Video Renderer Manager // +// Contents: Interface specification Video performance monitoring tools // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 03/5/96 GAC initial coding // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#include "l4munga.hpp" +#if !defined(L4VIDPER_HPP) +# include "l4vidper.hpp" +#endif + +extern "C" const int32 __sect_time; +extern "C" const int32 __last_cull_time; +extern "C" const int32 __last_draw_time; +extern "C" const int32 __last_frame_time; +extern "C" const int32 __last_pxpl_time; +extern "C" const int32 __last_frame_prims; + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Constructor for the StripChartRenderable +// Used to performance monitor a variable that can change every frame +// +StripChartRenderable::StripChartRenderable( + Entity *entity, // Entity to attach the renderable to + ExecutionType execution_type, // How/when to execute the renderable + dpl_VIEW *this_view, // the view associated with our eye + float left, + float right, + float top, + float bottom, + int max_samples, // The number of samples to hold + int max_value, // The maximum value allowed + int min_value, // the minimum value allowed + int *value_to_chart, // the value we will be graphing + int update_interval // How frequently (in frames) to update the graphics +): + VideoRenderable(entity, execution_type) +{ + int + i; + // + // Save the incoming data inside this class + // + myView = this_view; + myLeft = left; + myRight = right; + myTop = top; + myBottom = bottom; + myMaxSamples = max_samples; + myMaxValue = max_value; + myMinValue = min_value; + myValue = value_to_chart; + myUpdateInterval = update_interval; + myFrameCount = 0; + myCurrentSample = 0; + // + // Allocate the RAM to store the values we are charting and clear them out + // + myValueStorage = new int[max_samples]; + if(!myValueStorage) + Fail("stripchart couldn't allocate value storage\n"); + + Check_Pointer(myValueStorage); + for(i = 0; i= myUpdateInterval) + { + myFrameCount = 0; + // + // Figure the scale factor for the graph + // + float + current_x, + current_y, + x_increment, + y_increment; + x_increment = (myRight - myLeft)/ (float)(myMaxSamples); + y_increment = (myBottom - myTop)/((float)myMaxValue - (float)myMinValue); + dpl2d_OpenDisplayList (myDisplayList, dpl2d_open_mode_clear); + dpl2d_AddFullScreenClipRegion (myDisplayList); + dpl2d_AddSetColor (myDisplayList, 0.0f, 0.75f, 0.0f); + dpl2d_AddOpenPolyline (myDisplayList); + dpl2d_AddPoint (myDisplayList, myLeft, myBottom); + dpl2d_AddPoint (myDisplayList, myRight, myBottom); + dpl2d_AddPoint (myDisplayList, myRight, myTop); + dpl2d_AddPoint (myDisplayList, myLeft, myTop); + dpl2d_AddPoint (myDisplayList, myLeft, myBottom); + dpl2d_AddClosePolyline (myDisplayList); + dpl2d_AddOpenPolyline (myDisplayList); + current_x = myLeft; + for(i = 0; i < myMaxSamples; i++) + { + current_y = myBottom-((float)myValueStorage[i] * y_increment); + dpl2d_AddPoint(myDisplayList,current_x,current_y); + current_x += x_increment; + } + dpl2d_AddClosePolyline (myDisplayList); + dpl2d_AddOpenLines (myDisplayList); + dpl2d_AddPoint (myDisplayList, + myLeft + (x_increment*myCurrentSample), + myBottom); + dpl2d_AddPoint (myDisplayList, + myLeft + (x_increment*myCurrentSample), + myTop); + dpl2d_AddCloseLines (myDisplayList); + dpl2d_CloseDisplayList (myDisplayList); + dpl2d_FlushDisplayList (myDisplayList); + } + // + // Update the current sample pointer + // + myCurrentSample ++; + if(myCurrentSample >= myMaxSamples) + myCurrentSample = 0; + + // + // Call the execute method in our parent + // + VideoRenderable::Execute(); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Constructor for the RendererChartRenderable +// Used to performance monitor a variable that can change every frame +// +RendererChartRenderable::RendererChartRenderable( + Entity *entity, // Entity to attach the renderable to + ExecutionType execution_type, // How/when to execute the renderable + dpl_VIEW *this_view, // the view associated with our eye + float left, + float right, + float top, + float bottom, + int max_samples, // The number of samples to hold + int max_value, // The maximum value allowed + int min_value, // the minimum value allowed + int update_interval // How frequently (in frames) to update the graphics +): + VideoRenderable(entity, execution_type) +{ + int + i; + // + // Save the incoming data inside this class + // + myView = this_view; + myLeft = left; + myRight = right; + myTop = top; + myBottom = bottom; + myMaxSamples = max_samples; + myMaxValue = max_value; + myMinValue = min_value; + myUpdateInterval = update_interval; + myFrameCount = 0; + myCurrentSample = 0; + // + // Allocate the RAM to store the values we are charting and clear them out + // + myCullStorage = new int[max_samples]; + myDrawStorage = new int[max_samples]; + myFrameStorage = new int[max_samples]; + myPixelPlanesStorage = new int[max_samples]; + myPrimativeStorage = new int[max_samples]; + if(!myCullStorage || !myDrawStorage || !myFrameStorage || !myPixelPlanesStorage || !myPrimativeStorage) + Fail("RendererChartRenderable couldn't allocate storage\n"); + + Check_Pointer(myValueStorage); + for(i = 0; i= myUpdateInterval) + { + myFrameCount = 0; + // + // Figure the scale factor for the graph + // + float + current_x, + current_y, + x_increment, + y_increment; + x_increment = (myRight - myLeft)/ (float)(myMaxSamples); + y_increment = (myBottom - myTop)/((float)myMaxValue - (float)myMinValue); + dpl2d_OpenDisplayList (myDisplayList, dpl2d_open_mode_clear); + dpl2d_AddFullScreenClipRegion (myDisplayList); + dpl2d_AddSetLineWidth (myDisplayList,1.0); + dpl2d_AddSetColor (myDisplayList, 0.0f, 0.75f, 0.0f); + dpl2d_AddOpenPolyline (myDisplayList); + dpl2d_AddPoint (myDisplayList, myLeft, myBottom); + dpl2d_AddPoint (myDisplayList, myRight, myBottom); + dpl2d_AddPoint (myDisplayList, myRight, myTop); + dpl2d_AddPoint (myDisplayList, myLeft, myTop); + dpl2d_AddPoint (myDisplayList, myLeft, myBottom); + dpl2d_AddClosePolyline (myDisplayList); + // + // Draw the primative count trace + // + dpl2d_AddOpenLines (myDisplayList); + dpl2d_AddPoint(myDisplayList,myLeft, myBottom + (500.0f * y_increment * 50.0f)); + dpl2d_AddPoint(myDisplayList,myRight, myBottom + (500.0f * y_increment * 50.0f)); + dpl2d_AddPoint(myDisplayList,myLeft, myBottom + (1000.0f * y_increment * 50.0f)); + dpl2d_AddPoint(myDisplayList,myRight, myBottom + (1000.0f * y_increment * 50.0f)); + dpl2d_AddCloseLines (myDisplayList); + dpl2d_AddOpenPolyline (myDisplayList); + current_x = myLeft; + for(i = 0; i < myMaxSamples; i++) + { + current_y = myBottom+((float)myPrimativeStorage[i] * y_increment * 50.0f); + dpl2d_AddPoint(myDisplayList,current_x,current_y); + current_x += x_increment; + } + dpl2d_AddClosePolyline (myDisplayList); + // + // Draw the frame time trace + // + dpl2d_AddSetColor (myDisplayList, 0.75f, 0.75f, 0.75f); + dpl2d_AddOpenPolyline (myDisplayList); + current_x = myLeft; + for(i = 0; i < myMaxSamples; i++) + { + current_y = myBottom-((float)myFrameStorage[i] * y_increment); + dpl2d_AddPoint(myDisplayList,current_x,current_y); + current_x += x_increment; + } + dpl2d_AddClosePolyline (myDisplayList); + // + // Draw the draw time trace + // + dpl2d_AddSetColor (myDisplayList, 0.75f, 0.0f, 0.0f); + dpl2d_AddOpenPolyline (myDisplayList); + current_x = myLeft; + for(i = 0; i < myMaxSamples; i++) + { + current_y = myBottom-((float)myDrawStorage[i] * y_increment); + dpl2d_AddPoint(myDisplayList,current_x,current_y); + current_x += x_increment; + } + dpl2d_AddClosePolyline (myDisplayList); + // + // Draw the pixel planes time trace + // + dpl2d_AddSetColor (myDisplayList, 0.0f, 0.0f, 0.75f); + dpl2d_AddOpenPolyline (myDisplayList); + current_x = myLeft; + for(i = 0; i < myMaxSamples; i++) + { + current_y = myBottom-((float)myPixelPlanesStorage[i] * y_increment); + dpl2d_AddPoint(myDisplayList,current_x,current_y); + current_x += x_increment; + } + dpl2d_AddClosePolyline (myDisplayList); + // + // Stack the cull time on top of the draw + // + dpl2d_AddSetColor (myDisplayList, 0.0f, 0.75f, 0.0f); + dpl2d_AddOpenPolyline (myDisplayList); + current_x = myLeft; + for(i = 0; i < myMaxSamples; i++) + { + current_y = myBottom-(((float)myCullStorage[i] + (float)myDrawStorage[i]) * y_increment); + dpl2d_AddPoint(myDisplayList,current_x,current_y); + current_x += x_increment; + } + dpl2d_AddClosePolyline (myDisplayList); + // + // Draw a line indicating the current time + // + dpl2d_AddOpenLines (myDisplayList); + dpl2d_AddPoint (myDisplayList, + myLeft + (x_increment*myCurrentSample), + myBottom); + dpl2d_AddPoint (myDisplayList, + myLeft + (x_increment*myCurrentSample), + myTop); + dpl2d_AddCloseLines (myDisplayList); + // + // If there is a pre existing dlist, insert a call to it here + // + if(mySystemDisplayList) + { + dpl2d_AddCallDisplayList (myDisplayList, mySystemDisplayList ); + } + // + // Close up the display list and flush it + // + dpl2d_CloseDisplayList (myDisplayList); + dpl2d_FlushDisplayList (myDisplayList); + } + // + // Update the current sample pointer + // + myCurrentSample ++; + if(myCurrentSample >= myMaxSamples) + myCurrentSample = 0; + + // + // Call the execute method in our parent + // + VideoRenderable::Execute(); +} diff --git a/CODE/RP/MUNGA_L4/L4VIDPER.HPP b/CODE/RP/MUNGA_L4/L4VIDPER.HPP new file mode 100644 index 0000000..5e2c8d6 --- /dev/null +++ b/CODE/RP/MUNGA_L4/L4VIDPER.HPP @@ -0,0 +1,148 @@ +//===========================================================================// +// File: l4vidper.hpp // +// Project: MUNGA Brick: Video Renderer Manager // +// Contents: Interface specification Video performance monitoring renderables// +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 03/05/96 GAC initial code // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(L4VIDPER_HPP) +# define L4VIDPER_HPP + +# if !defined(L4VIDRND_HPP) +# include "l4vidrnd.hpp" +# endif + +# if !defined(ROTATION_HPP) +# include +# endif + +# if !defined(RETICLE_HPP) +# include +# endif + +# if !defined(SIMULATE_HPP) +# include +# endif + +# if !defined(LINMTRX_HPP) +# include +# endif + +#include +#include +#include + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// StripChartRenderable +// + class StripChartRenderable: + public VideoRenderable + { + public: + StripChartRenderable( + Entity *entity, // Entity to attach the renderable to + ExecutionType execution_type, // How/when to execute the renderable + dpl_VIEW *this_view, // the view associated with our eye + float left, + float right, + float top, + float bottom, + int max_samples, // The number of samples to hold + int max_value, // The maximum value allowed + int min_value, // the minimum value allowed + int *value_to_chart, // the value we will be graphing + int update_interval); // How frequently (in frames) to update the graphics + + ~StripChartRenderable(); + + Logical + TestInstance() const; + + void + Execute(); + + protected: + dpl_VIEW + *myView; + dpl2d_DISPLAY + *mySystemDisplayList, + *myDisplayList; + int + myMaxSamples, + myMaxValue, + myMinValue, + *myValue, + *myValueStorage, + myUpdateInterval, + myFrameCount, + myCurrentSample; + float + myLeft, + myRight, + myTop, + myBottom; + + }; +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// RendererChartRenderable +// + class RendererChartRenderable: + public VideoRenderable + { + public: + RendererChartRenderable( + Entity *entity, // Entity to attach the renderable to + ExecutionType execution_type, // How/when to execute the renderable + dpl_VIEW *this_view, // the view associated with our eye + float left, + float right, + float top, + float bottom, + int max_samples, // The number of samples to hold + int max_value, // The maximum value allowed + int min_value, // the minimum value allowed + int update_interval); // How frequently (in frames) to update the graphics + + ~RendererChartRenderable(); + + Logical + TestInstance() const; + + void + Execute(); + + protected: + dpl_VIEW + *myView; + dpl2d_DISPLAY + *mySystemDisplayList, + *myDisplayList; + int + *myCullStorage, + *myDrawStorage, + *myFrameStorage, + *myPixelPlanesStorage, + *myPrimativeStorage, + myMaxSamples, + myMaxValue, + myMinValue, + myUpdateInterval, + myFrameCount, + myCurrentSample; + float + myLeft, + myRight, + myTop, + myBottom; + + }; + + +#endif \ No newline at end of file diff --git a/CODE/RP/MUNGA_L4/L4VIDRND.CPP b/CODE/RP/MUNGA_L4/L4VIDRND.CPP new file mode 100644 index 0000000..dbebff0 --- /dev/null +++ b/CODE/RP/MUNGA_L4/L4VIDRND.CPP @@ -0,0 +1,6725 @@ +//===========================================================================// +// File: l4vidrnd.cpp // +// Project: MUNGA Brick: Video Renderer Manager // +// Contents: Interface specification Video Renderer Manager // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 07/08/95 GAC Took renderables out of l4video and moved them here // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(L4VIDRND_HPP) +# include +#endif + +#if !defined(VECTOR2D_HPP) +# include +#endif + +#if !defined(MATRIX_HPP) +# include +#endif + +#if !defined(MOVER_HPP) +# include +#endif + +#if !defined(PLAYER_HPP) +# include +#endif + +#if !defined(L4VIDEO_HPP) +# include +#endif + +#if !defined(NTTMGR_HPP) +# include +#endif + +#if !defined(l4APP_HPP) +# include +#endif + +#include +#include +#include +#include +#include + +#if defined(TRACE_VIDEO_MECH_CULL_RENDERABLE) + static BitTrace Video_Mech_Cull_Renderable("Video Mech Cull Renderable"); + #define SET_VIDEO_MECH_CULL_RENDERABLE() Video_Mech_Cull_Renderable.Set() + #define CLEAR_VIDEO_MECH_CULL_RENDERABLE() Video_Mech_Cull_Renderable.Clear() +#else + #define SET_VIDEO_MECH_CULL_RENDERABLE() + #define CLEAR_VIDEO_MECH_CULL_RENDERABLE() +#endif + +// +// Below allows the use of DPLDelayDCSFlush to be on or off +// +#if 1 +# define HACK_DPL_FLUSH_DCS(a)\ + {L4Application *l4_application = Cast_Object(L4Application*, application);\ + Check(l4_application);\ + l4_application->GetVideoRenderer()->DPLDelayDCSFlush(a);} +# define DPL_FLUSH_DCS(a)\ + {myRenderer->DPLDelayDCSFlush(a);} +#else +# define DPL_FLUSH_DCS(a)\ + dpl_FlushDCS(a) +# define HACK_DPL_FLUSH_DCS(a)\ + dpl_FlushDCS(a) +#endif + +// +// All renderables that need to use "Now()" should use renderer frame time +// as it should be much quicker (it returns the time at the start of the +// frame execution. All the renderables should know which renderer they belong +// to, but since many don't, this macro will supply the time from the default one +// +#define GET_CURRENT_FRAME_TIME() \ +{L4Application *l4_application = Cast_Object(L4Application*, application);\ +Check(l4_application);\ +l4_application->GetVideoRenderer()->GetCurrentFrameTime();} + +//===========================================================================// +//===========================================================================// +//===========================================================================// +//===========================================================================// +// All the stuff between these big ugly bars is the new video component stuff// +//===========================================================================// +//===========================================================================// +//===========================================================================// +//===========================================================================// +// +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~This is a special class to speed up projectiles~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Constructor for InnerProjectileRenderable +// +InnerProjectileRenderable::InnerProjectileRenderable( + dpl_OBJECT *graphical_object, // object to hang on the DCS, may be a list later + dpl_ZONE *this_zone // DPL Zone this stuff will live in (for culling) +): + Component(TrivialNodeClassID) // Inherited constructor +{ + // + // Check incoming data + // + Check_Pointer(this_zone); + Check_Pointer(graphical_object); + // + // Construct the hiearchy the projectile needs to be renderable + // + myDCS = dpl_NewDCS (); + myInstance = dpl_NewInstance(); + Check_Pointer (myDCS); + Check_Pointer (myInstance); + dpl_SetDCSZone (myDCS, this_zone); + dpl_SetInstanceObject (myInstance, graphical_object); + dpl_SetInstanceIntersect (myInstance, dpl_isect_mode_obj ); + dpl_SetInstanceSectMask (myInstance, NULL ); + dpl_SetInstanceVisibility (myInstance, 1 ); + dpl_AddInstanceToDCS (myDCS, myInstance ); + dpl_AddDCSToScene (myDCS ); + dpl_FlushInstance (myInstance); + dpl_FlushDCS (myDCS); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Destructor for InnerProjectileRenderable +// +InnerProjectileRenderable::~InnerProjectileRenderable() +{ + // + // Check our structure before we do anything + // + Check(this); + // + // Delete the instance(s) hanging on the DCS (if any) + // NOTE: we may want to iterate through all the instances here using DPL routines + // + dpl_RemoveInstanceFromDCS(myDCS, myInstance); + dpl_RemoveDCSFromScene(myDCS); + dpl_DeleteInstance(myInstance); + // + // Delete the DCS + // + dpl_DeleteDCS(myDCS); + myDCS = NULL; +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// TestInstance for the InnerProjectileRenderable +// +Logical + InnerProjectileRenderable::TestInstance() const +{ + // + // Call our parent's TestInstance first + // + Component::TestInstance(); + // + // Test our own variables + // + Check_Pointer(myInstance); + Check_Pointer(myDCS); + return True; +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Constructor for ProjectileRootRenderable +// +ProjectileRootRenderable::ProjectileRootRenderable( + Entity *entity, // Entity to attach the renderable to + ExecutionType execution_type, // How/when to execute the renderable + dpl_OBJECT *graphical_object, // object to hang on the DCS, may be a list later + dpl_ZONE *this_zone // DPL Zone this stuff will live in (for culling) +): +VideoRenderable(entity, execution_type) +{ + // + // Check the incoming pointers + // + Check_Pointer(graphical_object); + Check_Pointer(this_zone); + // + // Get a projectile renderable we can use + // + L4Application *l4_application = Cast_Object(L4Application*, application); + Check(l4_application); + myInnerProjectile = l4_application->GetVideoRenderer()->GetProjectile( + graphical_object, + this_zone); + Check(myInnerProjectile); + // + // Set the DCS matrix and flush it + // + float32* tempMatrix = dpl_GetDCSMatrix( myInnerProjectile->GetDCS()); + Check_Pointer ( tempMatrix ); + *(Matrix4x4*)tempMatrix = myEntity->localToWorld; + DPL_FLUSH_DCS ( myInnerProjectile->GetDCS()); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Destructor for ProjectileRootRenderable +// +ProjectileRootRenderable::~ProjectileRootRenderable() +{ + // + // Check our structure before we do anything + // + Check(this); + // + // return our inner renderable to the pool + // + Point3D infinity(0.0f, 10000.0f, 0.0f); + float32* tempMatrix = dpl_GetDCSMatrix(myInnerProjectile->GetDCS()); + Check_Pointer (tempMatrix); + *(Matrix4x4*)tempMatrix = infinity; + DPL_FLUSH_DCS ( myInnerProjectile->GetDCS() ); + L4Application *l4_application = Cast_Object(L4Application*, application); + Check(l4_application); + l4_application->GetVideoRenderer()->ReleaseProjectile(myInnerProjectile); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// TestInstance for the ProjectileRootRenderable +// +Logical + ProjectileRootRenderable::TestInstance() const +{ + // + // Call our parent's TestInstance first + // + VideoRenderable::TestInstance(); + // + // Test our own variables + // + Check(&oldLocalToWorld); + return True; +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Execute for the ProjectileRootRenderable +// Nothing to execute here so we just pass it down to the next lower level. +// +void + ProjectileRootRenderable::Execute() +{ + + // + // Check our variables + // + Check(this); + // + // If our entity has changed it's localToWorld matrix, update DPL + // + if(oldLocalToWorld != myEntity->localToWorld) + { + oldLocalToWorld = myEntity->localToWorld; + float32* tempMatrix = dpl_GetDCSMatrix(myInnerProjectile->GetDCS()); + Check_Pointer (tempMatrix); + *(Matrix4x4*)tempMatrix = oldLocalToWorld; + DPL_FLUSH_DCS ( myInnerProjectile->GetDCS() ); + } + // + // Call the next lower execute method + // + #if DEBUG_LEVEL > 0 + VideoRenderable::Execute(); + #endif +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Constructor for DPLObjectWrapper +// +DPLObjectWrapper::DPLObjectWrapper( + Entity *entity, // Entity to attach the renderable to + const CString &name, // Name of the DPL object to load into the wrapper + dpl_LOAD_MODE cache_mode // DPL Zone this stuff will live in (for culling) +): +VideoRenderable(entity, DPLObjectWrapper::Static) +{ + // + // Check the incoming pointers + // + Check(&name); + // + // Load the DPL object into the wrapper, try to get the object pointer from + // the cache, if it isn't there, do a regular load. + // + if(cache_mode == dpl_load_nocache) + { + L4Application *l4_application = Cast_Object(L4Application*, application); + Check(l4_application); + myDPLObject = l4_application->GetVideoRenderer()->GetCachedObject(name); + if(!myDPLObject) + { + myDPLObject = dpl_LoadObject(name, cache_mode); + } + } + else + { + myDPLObject = dpl_LoadObject(name, cache_mode); + } + myCacheMode = cache_mode; + myDPLObjectName = name; +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Destructor for DPLObjectWrapper +// +DPLObjectWrapper::~DPLObjectWrapper() +{ + // + // Check our structure before we do anything + // + Check(this); + // + // Handle the unloading of DPL objects + // + if(myCacheMode == dpl_load_nocache) + { + // + // If this object was not cached, we will eventually return it to the video + // renderer's list of unused uncached objects for later use by someone else + // + L4Application *l4_application = Cast_Object(L4Application*, application); + Check(l4_application); + l4_application->GetVideoRenderer()->PutCachedObject(myDPLObjectName, myDPLObject); + } + else + { + // + // Do nothing (should unload the object) + // + //dpl_UnloadObject(myDPLObject); + } + myDPLObject = NULL; +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// TestInstance for the DPLObjectWrapper +// +Logical + DPLObjectWrapper::TestInstance() const +{ + // + // Call our parent's TestInstance first + // + VideoRenderable::TestInstance(); + // + // Test our own variables + // + Check_Pointer(myDPLObject); + Check(&myDPLObjectName); + return True; +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Execute for the DPLObjectWrapper +// Nothing to execute here so we just pass it down to the next lower level. +// +void + DPLObjectWrapper::Execute() +{ + + // + // Check our variables + // + Check(this); + // + // Call the next lower execute method + // + #if DEBUG_LEVEL > 0 + VideoRenderable::Execute(); + #endif + +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~New Class Hiearchy for Renderables~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Constructor for VideoRenderable +// +VideoRenderable::VideoRenderable( + Entity *entity, // Entity to attach the renderable to + ExecutionType execution_type // How/when to execute the renderable +): + Component(TrivialNodeClassID) // Inherited constructor +{ + // + // Check incoming data + // + Check(entity); + // + // Remember the entity and execution type + // + myEntity = entity; + myExecutionType = execution_type; + // + // HACK HACK HACK + // This initializes the video renderable's pointer back to the renderer that + // owns it so it can get information from that renderer. The renderer pointer + // really should be passed in as an argument, this is a concession to avoid + // spending the time to edit all references to the renderer so they support + // a new argument. This will be fixed later, for now we know there is only + // on renderer so we grab the application pointer and get the video renderer + // from it. + // + L4Application *l4_application = Cast_Object(L4Application*, application); + Check(l4_application); + myRenderer = l4_application->GetVideoRenderer(); + // + // Register us as static or dynamic + // + switch(myExecutionType) + { + case Static: + myEntity->AddStaticVideoComponent(this); + break; + case Dynamic: +// myEntity->AddDynamicVideoComponent(this); + myEntity->AddStaticVideoComponent(this); + myRenderer->AddDynamicRenderable(this); + break; + case Watcher: + myEntity->AddStaticVideoComponent(this); + break; + case Dependant: + myEntity->AddStaticVideoComponent(this); + break; + default: + Fail("VideoRenderable--Illegal execution type\n"); + break; + } +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Destructor for VideoRenderable +// +VideoRenderable::~VideoRenderable() +{ + // + // Check our structure before we do anything + // + Check(this); + // + // Nothing else to do here + // +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// TestInstance for the VideoRenderable +// +Logical + VideoRenderable::TestInstance() const +{ + // + // Call our parent's TestInstance first + // + Component::TestInstance(); + // + // Test our own variables + // + Check(myEntity); + Check(myRenderer); + Verify(myExecutionType >= Static && myExecutionType <= Dependant); + return True; +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Execute for the VideoRenderable +// This method just checks to be sure we are not trying to execute a static +// renderable, then returns. +// +void + VideoRenderable::Execute() +{ + // + // Check our variables + // + Check(this); + // + // Make sure we are not trying to execute a static renderable + // + #if DEBUG_LEVEL > 0 + if(myExecutionType == Static) + { + Fail("VideoRenderable--someone executed a STATIC renderable\n"); + } + #endif +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Constructor for the ChildLightRenderable +// +// This renderable is used to connect a light as a child of an existing DCS +// the light isn't setup to move on it's own and creates a DCS only for the +// purpose of offsetting it from it's parent. +// +ChildLightRenderable::ChildLightRenderable( + Entity *entity, // Entity to attach the renderable to + ExecutionType execution_type, // How/when to execute the renderable + dpl_ZONE *this_zone, // DPL Zone this stuff will live in (for culling) + dpl_DCS *parent_DCS, // the parent DCS we will be offsetting from + LinearMatrix *offset_matrix, // offset matrix to be applied prior to joint DCS + Scalar red, // light color + Scalar green, + Scalar blue, + Scalar inner_radius, + Scalar outer_radius, + dpl_LIGHT_TYPE light_type, + int light_mask +): + VideoRenderable(entity, execution_type) +{ + // + // Check the inbound data + // + Check_Pointer(this_zone); + Check_Pointer(parent_DCS); + Check(offset_matrix); + // + // Remember the interesting parameters + // + myZone = this_zone; + myParentDCS = parent_DCS; + myOffsetMatrix = *offset_matrix; + // + // Create the dpl DCS and the light that we will be using + // + myDCS = dpl_NewDCS (); + myLight = dpl_NewLight(); + Check_Pointer(myDCS); + Check_Pointer(myLight); + // + // Setup light type and color + // + dpl_SetLightType (myLight, light_type ); + dpl_SetLightColor (myLight, red, green, blue ); + dpl_SetLightDCS (myLight, myDCS ); + dpl_SetLightRadii (myLight, inner_radius, outer_radius ); + dpl_SetLightLightingMask (myLight, light_mask); + // + // Connect the DCS just created to a parent + // + dpl_AddDCSToDCS ( myParentDCS, myDCS ); + // + // Set the DCS into the requested zone for culling + // + dpl_SetDCSZone ( myDCS, this_zone ); + // + // Load up the DCS matrix with the supplied matrix + // + float32* tempMatrix = dpl_GetDCSMatrix(myDCS); + Check_Pointer(tempMatrix); + *(Matrix4x4*)tempMatrix = myOffsetMatrix; + // + // Flip the light around to point the correct direction + // +// dpl_RotateDCS ( myDCS, 180.0f, dpl_Y ); + // + // Flush out the instance and DCS + // + dpl_FlushLight ( myLight); + dpl_FlushDCS ( myDCS ); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Destructor for ChildLightRenderable +// +ChildLightRenderable::~ChildLightRenderable() +{ + Check(this); + dpl_DeleteDCS(myDCS); + dpl_DeleteLight(myLight); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// TestInstance for the ChildLightRenderable +// +Logical + ChildLightRenderable::TestInstance() const +{ + Component::TestInstance(); + + Check_Pointer(myDCS); + Check_Pointer(myParentDCS); + Check_Pointer(myLight); + Check(&myOffsetMatrix); + return True; +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Execute method for ChildLightRenderable +// +void + ChildLightRenderable::Execute() +{ + // This might eventually handle turning the light on and off + + // + // Call the next lower execute method + // + #if DEBUG_LEVEL > 0 + VideoRenderable::Execute(); + #endif +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Constructor for DCSObjectRenderable +// +DCSObjectRenderable::DCSObjectRenderable( + Entity *entity, // Entity to attach the renderable to + ExecutionType execution_type, // How/when to execute the renderable + dpl_OBJECT *graphical_object, // object to hang on the DCS, may be a list later + dpl_ZONE *this_zone, // DPL Zone this stuff will live in (for culling) + dpl_ISECT_MODE intersect_mode, // type of intersections to do on this object + uint32 intersect_mask // intersection mask for the object +): + VideoRenderable(entity, execution_type) +{ + // + // Check incoming data + // + #if DEBUG_LEVEL > 0 + if(graphical_object) + Check_Pointer(graphical_object); // allowed to be null + #endif + Check_Pointer(this_zone); + // + // Remember my dpl object, intersect and offset data + // + myDPLObject = graphical_object; + myDPLZone = this_zone; + myIntersectMode = intersect_mode; + myIntersectMask = intersect_mask; + myDCS = NULL; + myInstance = NULL; + // + // We need to construct a DCS node here and remember it. The next class up is + // expected to handle the flushing and connecting of structure so we just setup + // the DCS and zone information here, leaving flushing to someone else. + // + myDCS = dpl_NewDCS (); + + Check_Pointer ( myDCS ); + dpl_SetDCSZone ( myDCS, myDPLZone ); + // + // Construct the instance(s) and hang them on the DCS. Since we may be building + // more than one instance, we have to take care of flushing them here. + // + if(myDPLObject) + { + myInstance = dpl_NewInstance(); + + Check_Pointer ( myInstance); + dpl_SetInstanceObject ( myInstance, myDPLObject); + dpl_SetInstanceIntersect ( myInstance, myIntersectMode ); + dpl_SetInstanceSectMask ( myInstance, myIntersectMask ); + dpl_SetInstanceVisibility ( myInstance, 1 ); + dpl_AddInstanceToDCS ( myDCS, myInstance ); + + dpl_FlushInstance ( myInstance ); + } +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Destructor for DCSObjectRenderable +// +DCSObjectRenderable::~DCSObjectRenderable() +{ + // + // Check our structure before we do anything + // + Check(this); + // + // Delete the instance(s) hanging on the DCS (if any) + // NOTE: we may want to iterate through all the instances here using DPL routines + // + if(myInstance) + { + dpl_RemoveInstanceFromDCS(myDCS, myInstance); + dpl_DeleteInstance(myInstance); + } + // + // Delete the DCS + // + dpl_DeleteDCS(myDCS); + myDCS = NULL; +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// TestInstance for the DCSObjectRenderable +// +Logical + DCSObjectRenderable::TestInstance() const +{ + // + // Call our parent's TestInstance first + // + VideoRenderable::TestInstance(); + // + // Test our own variables + // + #if DEBUG_LEVEL > 0 + if(myDPLObject) + Check_Pointer(myDPLObject); + if(myInstance) + Check_Pointer(myInstance); + #endif + Check_Pointer(myDPLZone); + Check_Pointer(myDCS); + return True; +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Execute for the DCSObjectRenderable +// Nothing to execute here so we just pass it down to the next lower level. +// +void + DCSObjectRenderable::Execute() +{ + // + // Check our variables + // + Check(this); + // + // Call the next lower execute method + // + #if DEBUG_LEVEL > 0 + VideoRenderable::Execute(); + #endif +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Constructor for DCSInstanceRenderable +// +DCSInstanceRenderable::DCSInstanceRenderable( + Entity *entity, // Entity to attach the renderable to + ExecutionType execution_type, // How/when to execute the renderable + dpl_OBJECT *graphical_object, // object to connect to the instance + dpl_DCS *parent_DCS, // the DCS to add the instance to + dpl_ISECT_MODE intersect_mode, // type of intersections to do on this object + uint32 intersect_mask, // intersection mask for the object + Logical visible // initial visibility setting +): + VideoRenderable(entity, execution_type) +{ + // + // Check incoming data + // + Check_Pointer(graphical_object); + Check_Pointer(parent_DCS); + // + // Remember my dpl object, intersect and offset data + // + myDPLObject = graphical_object; + myIntersectMode = intersect_mode; + myIntersectMask = intersect_mask; + myDCS = parent_DCS; + myInstance = dpl_NewInstance(); + Check_Pointer(myInstance); + // + // Construct the instance(s) and hang them on the parent DCS + // + dpl_SetInstanceObject ( myInstance, myDPLObject); + dpl_SetInstanceIntersect ( myInstance, myIntersectMode ); + dpl_SetInstanceSectMask ( myInstance, myIntersectMask ); + dpl_SetInstanceVisibility ( myInstance, visible ); + dpl_AddInstanceToDCS ( myDCS, myInstance ); + dpl_FlushInstance ( myInstance ); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Destructor for DCSInstanceRenderable +// +DCSInstanceRenderable::~DCSInstanceRenderable() +{ + // + // Check our structure before we do anything + // + Check(this); + // + // Disconnect the instance from the DCS and delete the instance + // + dpl_RemoveInstanceFromDCS(myDCS, myInstance); + dpl_DeleteInstance(myInstance); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// TestInstance for the DCSInstanceRenderable +// +Logical + DCSInstanceRenderable::TestInstance() const +{ + // + // Call our parent's TestInstance first + // + VideoRenderable::TestInstance(); + // + // Test our own variables + // + Check_Pointer(myDPLObject); + Check_Pointer(myInstance); + Check_Pointer(myDCS); + return True; +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Execute for the DCSInstanceRenderable +// Nothing to execute here so we just pass it down to the next lower level. +// +void + DCSInstanceRenderable::Execute() +{ + // + // Check our variables + // + Check(this); + // + // Call the next lower execute method + // + #if DEBUG_LEVEL > 0 + VideoRenderable::Execute(); + #endif +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Constructor for RootRenderable +// +RootRenderable::RootRenderable( + Entity *entity, // Entity to attach the renderable to + ExecutionType execution_type, // How/when to execute the renderable + dpl_OBJECT *graphical_object, // object to hang on the DCS, may be a list later + dpl_ZONE *this_zone, // DPL Zone this stuff will live in (for culling) + dpl_ISECT_MODE intersect_mode, // type of intersections to do on this object + uint32 intersect_mask // intersection mask for the object +): +DCSObjectRenderable( + entity, // Entity to attach the renderable to + execution_type, // How/when to execute the renderable + graphical_object, // object to hang on the DCS, may be a list later + this_zone, // DPL Zone this stuff will live in (for culling) + intersect_mode, // type of intersections to do on this object + intersect_mask) // intersection mask for the object +{ + // + // All the incoming data will have been checked by DCSObjectRenderable + // already, so we don't have to check anything locally. + // + // + // Initialize our variables + // + oldLocalToWorld = myEntity->localToWorld; + // + // Now we finish the work of hooking up and initializing the root renderable + // Add the DCS to the scene and initialize it's matrix with the localToWorld + // transformation from our entity + // + dpl_AddDCSToScene ( myDCS ); + + float32* tempMatrix = dpl_GetDCSMatrix( myDCS ); + Check_Pointer ( tempMatrix ); + *(Matrix4x4*)tempMatrix = myEntity->localToWorld; + + dpl_FlushDCS ( myDCS ); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Destructor for RootRenderable +// +RootRenderable::~RootRenderable() +{ + // + // Check our structure before we do anything + // + Check(this); + // + // Remove the DCS from the scene, deletion of the DCS and it's instances is + // handled by our parent class. + // + dpl_RemoveDCSFromScene(myDCS); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// TestInstance for the RootRenderable +// +Logical + RootRenderable::TestInstance() const +{ + // + // Call our parent's TestInstance first + // + DCSObjectRenderable::TestInstance(); + // + // Test our own variables + // + Check(&oldLocalToWorld); + return True; +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Execute for the RootRenderable +// Nothing to execute here so we just pass it down to the next lower level. +// +void + RootRenderable::Execute() +{ + + // + // Check our variables + // + Check(this); + // + // If our entity has changed it's localToWorld matrix, update DPL + // + if(oldLocalToWorld != myEntity->localToWorld) + { + oldLocalToWorld = myEntity->localToWorld; + float32* tempMatrix = dpl_GetDCSMatrix(myDCS); + Check_Pointer (tempMatrix); + *(Matrix4x4*)tempMatrix = oldLocalToWorld; + DPL_FLUSH_DCS ( myDCS ); + } + // + // Call the execute method in our parent + // + DCSObjectRenderable::Execute(); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Constructor for ChildOffsetRenderable +// +ChildOffsetRenderable::ChildOffsetRenderable( + Entity *entity, // Entity to attach the renderable to + ExecutionType execution_type, // How/when to execute the renderable + dpl_OBJECT *graphical_object, // object to hang on the DCS, may be a list later + dpl_ZONE *this_zone, // DPL Zone this stuff will live in (for culling) + dpl_ISECT_MODE intersect_mode, // type of intersections to do on this object + uint32 intersect_mask, // intersection mask for the object + dpl_DCS *parent_DCS, // the parent DCS we will be offsetting from + LinearMatrix *offset_matrix // offset matrix to be applied prior to joint DCS +): +DCSObjectRenderable( + entity, // Entity to attach the renderable to + execution_type, // How/when to execute the renderable + graphical_object, // object to hang on the DCS, may be a list later + this_zone, // DPL Zone this stuff will live in (for culling) + intersect_mode, // type of intersections to do on this object + intersect_mask) // intersection mask for the object +{ + // + // Check incoming data not handled by lower levels + // + Check(offset_matrix); + // + // Remember my offset matrix + // + myOffsetMatrix = *offset_matrix; + myOffsetDCS = NULL; + myParentDCS = parent_DCS; + // + // We construct the offset DCS node and link the DCS carrying our our + // graphical instances to it. + // + myOffsetDCS = dpl_NewDCS (); + Check_Pointer ( myOffsetDCS ); + dpl_SetDCSZone ( myDCS, myDPLZone ); + dpl_AddDCSToDCS ( myOffsetDCS, myDCS ); + // + // Now we connect that DCS to our parent + // + dpl_AddDCSToDCS ( myParentDCS, myOffsetDCS); + // + // Then fill in the offset DCS and flush it + // + float32* tempMatrix = dpl_GetDCSMatrix( myOffsetDCS ); + Check_Pointer ( tempMatrix ); + *(Matrix4x4*)tempMatrix = myOffsetMatrix; + dpl_FlushDCS ( myOffsetDCS ); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Destructor for ChildOffsetRenderable +// +ChildOffsetRenderable::~ChildOffsetRenderable() +{ + // + // Check our structure before we do anything + // + Check(this); + // + // Delete the connection to our parent DCS + // + dpl_RemoveDCSFromDCS(myParentDCS, myOffsetDCS); + // + // Delete the static DCS and it's connections to the dynamic one + // + dpl_RemoveDCSFromDCS(myOffsetDCS, myDCS); + dpl_DeleteDCS(myOffsetDCS); + myOffsetDCS = NULL; +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// TestInstance for the ChildOffsetRenderable +// +Logical + ChildOffsetRenderable::TestInstance() const +{ + // + // Call our parent's TestInstance first + // + DCSObjectRenderable::TestInstance(); + // + // Test our own variables + // + Check_Pointer(myParentDCS); + Check_Pointer(myOffsetDCS); + Check(&myOffsetMatrix); + return True; +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Execute for the ChildOffsetRenderable +// Nothing to execute here so we just pass it down to the next lower level. +// +void + ChildOffsetRenderable::Execute() +{ + // + // Check our variables + // + Check(this); + // + // Call the next lower execute method + // + DCSObjectRenderable::Execute(); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Constructor for HingeRenderable +// +#define SINGLE_AXIS_HINGE True + +HingeRenderable::HingeRenderable( + Entity *entity, // Entity to attach the renderable to + ExecutionType execution_type, // How/when to execute the renderable + dpl_OBJECT *graphical_object, // object to hang on the DCS, may be a list later + dpl_ZONE *this_zone, // DPL Zone this stuff will live in (for culling) + dpl_ISECT_MODE intersect_mode, // type of intersections to do on this object + uint32 intersect_mask, // intersection mask for the object + dpl_DCS *parent_DCS, // the parent DCS we will be offsetting from + LinearMatrix *offset_matrix, // offset matrix to be applied prior to joint DCS + const Hinge *my_hinge // Hinge attribute we will use to control the joint +): +ChildOffsetRenderable( + entity, // Entity to attach the renderable to + execution_type, // How/when to execute the renderable + graphical_object, // object to hang on the DCS, may be a list later + this_zone, // DPL Zone this stuff will live in (for culling) + intersect_mode, // type of intersections to do on this object + intersect_mask, // intersection mask for the object + parent_DCS, // the parent DCS we will be offsetting from + offset_matrix) // offset matrix to be applied prior to joint DCS +{ + // + // Check the incomming data + // + Check(my_hinge); + // + // Initialize our variables + // + myHinge = my_hinge; + oldHinge = *my_hinge; + // + // Dump the initial value of the hing into the DCS our instances are attached + // to, then flush it out. We have to copy the hinge to a quaternion because + // the math library doesn't support direct assignment of hing to matrix yet. + // +#if SINGLE_AXIS_HINGE + SinCosPair + temp_sin_cos_pair; + temp_sin_cos_pair = myHinge->rotationAmount; + switch(myHinge->axisNumber) + { + case X_Axis: + dpl_SetDCSXAxis(myDCS, temp_sin_cos_pair.sine, temp_sin_cos_pair.cosine); + break; + case Y_Axis: + dpl_SetDCSYAxis(myDCS, temp_sin_cos_pair.sine, temp_sin_cos_pair.cosine); + break; + case Z_Axis: + dpl_SetDCSZAxis(myDCS, temp_sin_cos_pair.sine, temp_sin_cos_pair.cosine); + break; + } +#else + Quaternion + temp_quaternion; + float32 + *temp_matrix; + temp_matrix = dpl_GetDCSMatrix( myDCS ); + Check_Pointer( temp_matrix ); + temp_quaternion = oldHinge; + *(Matrix4x4*)temp_matrix = temp_quaternion; +#endif + dpl_FlushDCS ( myDCS ); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Destructor for HingeRenderable +// +HingeRenderable::~HingeRenderable() +{ + // + // Check our structure before we do anything + // + Check(this); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// TestInstance for the HingeRenderable +// +Logical + HingeRenderable::TestInstance() const +{ + // + // Call our parent's TestInstance first + // + ChildOffsetRenderable::TestInstance(); + // + // Test our own variables + // + Check(myHinge); + Check(&oldHinge); + return True; +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Execute for the HingeRenderable +// Nothing to execute here so we just pass it down to the next lower level. +// +void + HingeRenderable::Execute() +{ + // + // Check our variables + // + Check(this); + // + // If the hinge we're watching has changed, update our matrix + // + if(oldHinge != *myHinge) + { + oldHinge = *myHinge; +#if SINGLE_AXIS_HINGE + SinCosPair + temp_sin_cos_pair; + temp_sin_cos_pair = myHinge->rotationAmount; + switch(myHinge->axisNumber) + { + case X_Axis: + dpl_SetDCSXAxis(myDCS, temp_sin_cos_pair.sine, temp_sin_cos_pair.cosine); + break; + case Y_Axis: + dpl_SetDCSYAxis(myDCS, temp_sin_cos_pair.sine, temp_sin_cos_pair.cosine); + break; + case Z_Axis: + dpl_SetDCSZAxis(myDCS, temp_sin_cos_pair.sine, temp_sin_cos_pair.cosine); + break; + } +#else + Quaternion + temp_quaternion; + float32 + *temp_matrix; + temp_matrix = dpl_GetDCSMatrix( myDCS ); + Check_Pointer( temp_matrix ); + temp_quaternion = oldHinge; + *(Matrix4x4*)temp_matrix = temp_quaternion; +#endif + DPL_FLUSH_DCS ( myDCS ); + } + // + // Call the execute method in our parent + // + ChildOffsetRenderable::Execute(); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Constructor for BallJointRenderable +// +BallJointRenderable::BallJointRenderable( + Entity *entity, // Entity to attach the renderable to + ExecutionType execution_type, // How/when to execute the renderable + dpl_OBJECT *graphical_object, // object to hang on the DCS, may be a list later + dpl_ZONE *this_zone, // DPL Zone this stuff will live in (for culling) + dpl_ISECT_MODE intersect_mode, // type of intersections to do on this object + uint32 intersect_mask, // intersection mask for the object + dpl_DCS *parent_DCS, // the parent DCS we will be offsetting from + LinearMatrix *offset_matrix, // offset matrix to be applied prior to joint DCS + const EulerAngles *my_euler // Euler angles to control rotation of the ball joint +): +ChildOffsetRenderable( + entity, // Entity to attach the renderable to + execution_type, // How/when to execute the renderable + graphical_object, // object to hang on the DCS, may be a list later + this_zone, // DPL Zone this stuff will live in (for culling) + intersect_mode, // type of intersections to do on this object + intersect_mask, // intersection mask for the object + parent_DCS, // the parent DCS we will be offsetting from + offset_matrix) // offset matrix to be applied prior to joint DCS +{ + float32 + *temp_matrix; + // + // Check the incomming data + // + Check(my_euler); + // + // Initialize our variables + // + myEuler = my_euler; + oldEuler = *my_euler; + // + // Dump the initial value of the euler angles into the DCS our instances are attached + // to, then flush it out. + // + temp_matrix = dpl_GetDCSMatrix( myDCS ); + Check_Pointer( temp_matrix ); + *(Matrix4x4*)temp_matrix = oldEuler; + dpl_FlushDCS ( myDCS ); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Destructor for BallJointRenderable +// +BallJointRenderable::~BallJointRenderable() +{ + // + // Check our structure before we do anything + // + Check(this); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// TestInstance for the BallJointRenderable +// +Logical + BallJointRenderable::TestInstance() const +{ + // + // Call our parent's TestInstance first + // + ChildOffsetRenderable::TestInstance(); + // + // Test our own variables + // + Check(myEuler); + Check(&oldEuler); + return True; +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Execute for the BallJointRenderable +// +void + BallJointRenderable::Execute() +{ + float32 + *temp_matrix; + // + // Check our variables + // + Check(this); + // + // If the hinge we're watching has changed, update our matrix + // + if(oldEuler != *myEuler) + { + oldEuler = *myEuler; + temp_matrix = dpl_GetDCSMatrix( myDCS ); + Check_Pointer( temp_matrix ); + *(Matrix4x4*)temp_matrix = oldEuler; + DPL_FLUSH_DCS ( myDCS ); + } + // + // Call the execute method in our parent + // + ChildOffsetRenderable::Execute(); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Constructor for BallTranslateJointRenderable +// +BallTranslateJointRenderable::BallTranslateJointRenderable( + Entity *entity, // Entity to attach the renderable to + ExecutionType execution_type, // How/when to execute the renderable + dpl_OBJECT *graphical_object, // object to hang on the DCS, may be a list later + dpl_ZONE *this_zone, // DPL Zone this stuff will live in (for culling) + dpl_ISECT_MODE intersect_mode, // type of intersections to do on this object + uint32 intersect_mask, // intersection mask for the object + dpl_DCS *parent_DCS, // the parent DCS we will be offsetting from + LinearMatrix *offset_matrix, // offset matrix to be applied prior to joint DCS + const EulerAngles *my_euler, // Euler angles to control rotation of the ball joint + const Point3D *my_translation // offset for the translation part of the joint +): +ChildOffsetRenderable( + entity, // Entity to attach the renderable to + execution_type, // How/when to execute the renderable + graphical_object, // object to hang on the DCS, may be a list later + this_zone, // DPL Zone this stuff will live in (for culling) + intersect_mode, // type of intersections to do on this object + intersect_mask, // intersection mask for the object + parent_DCS, // the parent DCS we will be offsetting from + offset_matrix) // offset matrix to be applied prior to joint DCS +{ + AffineMatrix + tempAffine(True); + + float32 + *temp_matrix; + // + // Check the incomming data + // + Check(my_euler); + Check(my_translation); + // + // Initialize our variables + // + myEuler = my_euler; + oldEuler = *my_euler; + myTranslation = my_translation; + oldTranslation = *my_translation; + // + // Dump the initial value of the euler angles into the DCS our instances are attached + // to, then flush it out. + // + temp_matrix = dpl_GetDCSMatrix( myDCS ); + Check_Pointer( temp_matrix ); + tempAffine = oldTranslation; + tempAffine = oldEuler; + *(Matrix4x4*)temp_matrix = tempAffine; + dpl_FlushDCS ( myDCS ); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Destructor for BallTranslateJointRenderable +// +BallTranslateJointRenderable::~BallTranslateJointRenderable() +{ + // + // Check our structure before we do anything + // + Check(this); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// TestInstance for the BallTranslateJointRenderable +// +Logical + BallTranslateJointRenderable::TestInstance() const +{ + // + // Call our parent's TestInstance first + // + ChildOffsetRenderable::TestInstance(); + // + // Test our own variables + // + Check(myEuler); + Check(&oldEuler); + return True; +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Execute for the BallTranslateJointRenderable +// +void + BallTranslateJointRenderable::Execute() +{ + float32 + *temp_matrix; + // + // Check our variables + // + Check(this); + // + // If the hinge we're watching has changed, update our matrix + // + if(oldEuler != *myEuler || oldTranslation != *myTranslation) + { + oldEuler = *myEuler; + oldTranslation = *myTranslation; + temp_matrix = dpl_GetDCSMatrix( myDCS ); + Check_Pointer( temp_matrix ); + AffineMatrix tempAffine(True); + tempAffine = oldTranslation; + tempAffine = oldEuler; + *(Matrix4x4*)temp_matrix = tempAffine; + DPL_FLUSH_DCS ( myDCS ); + } + // + // Call the execute method in our parent + // + ChildOffsetRenderable::Execute(); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Constructor for SpinScaleQuatRenderable +// +SpinScaleQuatRenderable::SpinScaleQuatRenderable( + Entity *entity, // Entity to attach the renderable to + ExecutionType execution_type, // How/when to execute the renderable + dpl_OBJECT *graphical_object, // object to hang on the DCS, may be a list later + dpl_ZONE *this_zone, // DPL Zone this stuff will live in (for culling) + dpl_ISECT_MODE intersect_mode, // type of intersections to do on this object + uint32 intersect_mask, // intersection mask for the object + dpl_DCS *parent_DCS, // the parent DCS we will be offsetting from + LinearMatrix *offset_matrix, // offset matrix to be applied prior to joint DCS + Quaternion *rotation_quaternion,// rotates the object + Vector3D *scale_vector, // Scales the object + Logical *visible, // turns the object on and off + Scalar z_spin_rate // spins the object about z (radians/frame) +): +ChildOffsetRenderable( + entity, // Entity to attach the renderable to + execution_type, // How/when to execute the renderable + graphical_object, // object to hang on the DCS, may be a list later + this_zone, // DPL Zone this stuff will live in (for culling) + intersect_mode, // type of intersections to do on this object + intersect_mask, // intersection mask for the object + parent_DCS, // the parent DCS we will be offsetting from + offset_matrix) // offset matrix to be applied prior to joint DCS +{ + // + // Check the inbound data + // + Check(rotation_quaternion); + Check(scale_vector); + Check_Pointer(visible); + // + // Remember the entity that this renderable is attached to and the + // orientation matrix that offsets it to the correct position. + // + myRotationQuaternion = rotation_quaternion; + myScaleVector = scale_vector; + myVisible = visible; + myZSpinRate = z_spin_rate; + OldVisible = *visible; + OldZSpin = 0; + // + // Setup the dcs matrix to it's initial state + // + float32* tempMatrix = dpl_GetDCSMatrix( myDCS ); + Check_Pointer ( tempMatrix ); + AffineMatrix tempAffine(True); + tempAffine *= (*myScaleVector); + tempAffine *= (*myRotationQuaternion); + *(Matrix4x4*)tempMatrix = tempAffine; + dpl_FlushDCS ( myDCS ); + // + // Set the instance visibility correctly + // + dpl_SetInstanceVisibility ( myInstance, OldVisible ); + dpl_FlushInstance ( myInstance ); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Destructor for SpinScaleQuatRenderable +// +SpinScaleQuatRenderable::~SpinScaleQuatRenderable() +{ + // + // Check our structure before we do anything + // + Check(this); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// TestInstance for the SpinScaleQuatRenderable +// +Logical + SpinScaleQuatRenderable::TestInstance() const +{ + // + // Call our parent's TestInstance first + // + ChildOffsetRenderable::TestInstance(); + return True; +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Execute for the SpinScaleQuatRenderable +// Nothing to execute here so we just pass it down to the next lower level. +// +void + SpinScaleQuatRenderable::Execute() +{ + // + // Check our variables + // + Check(this); + // + // Load up the DCS matrix with the localToWorld matrix from the entity + // then flush out the new DCS + // + if(OldVisible != *myVisible) + { + OldVisible = *myVisible; + dpl_SetInstanceVisibility ( myInstance, OldVisible ); + dpl_FlushInstance ( myInstance ); + } + // + // If the beam is visible, we have to update it + // + if(OldVisible) + { + OldZSpin += myZSpinRate; + if(OldZSpin > TWO_PI) + OldZSpin -= TWO_PI; + Hinge temp_hinge(Z_Axis, OldZSpin); + + float32* tempMatrix = dpl_GetDCSMatrix( myDCS ); + Check_Pointer ( tempMatrix ); + + AffineMatrix tempAffine(True); + Quaternion temp_quaternion; + temp_quaternion = temp_hinge; + tempAffine = temp_quaternion; + tempAffine *= (*myScaleVector); + temp_quaternion = *myRotationQuaternion; + tempAffine *= temp_quaternion; + *(Matrix4x4*)tempMatrix = tempAffine; + DPL_FLUSH_DCS ( myDCS ); + } + // + // Call the execute method in our parent + // + ChildOffsetRenderable::Execute(); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Constructor for POVTranslocateRenderable +// +POVTranslocateRenderable::POVTranslocateRenderable( + Entity *entity, // Entity to attach the renderable to + ExecutionType execution_type, // How/when to execute the renderable + dpl_ZONE *this_zone, // DPL zone the world is in + dpl_ZONE *death_zone, // DPL zone the player's VTV and death effect are in + dpl_DCS *parent_DCS, // the parent DCS we will be offsetting from + StateIndicator *effect_trigger, // State dial we use to control the translocation + unsigned effect_control_state // State that controls start/end of the effect +): + VideoRenderable(entity, execution_type) +{ +#define COLLAPSE_TIME 1.0f // Time in seconds for initial collapse +#define COLLAPSE_START_SCALE 30.0f // Scale factor of the sphere when we start collapse +#define EXPAND_TIME 1.0f // Time that expansion of the sphere should take +#define EXPAND_END_SCALE 100.0f // Scale factor of the sphere when expansion ends +#define ROTATE_RATE (0.5f * (0.01745329222222)) +#define ROTATE_LIMIT (20.0f * (0.01745329222222)) +#define TRANSLATE_RATE 0.2f +#define TRANSLATE_LIMIT 2.0f + // HACK HACK HACK this should be removed once red planet is checked out + if(execution_type != Watcher) + cout<<"POVTranslocateRenderable wants to be a watcher and isn't!\n"; + // + // Check the inbound data, note that the parent DCS could be a null pointer + // + Check_Pointer(this_zone); + Check_Pointer(death_zone); + Check_Pointer(parent_DCS); + Check(effect_trigger); + // + // Remember the entity and DCS this renderable is attached to + // + myZone = this_zone; + myDeathZone = death_zone; + myParentDCS = parent_DCS; + myEffectTrigger = effect_trigger; + myEffectControlState = effect_control_state; + myState = IdleState; + myRotateY = 0.0f; + myRotateYSpeed = TRANSLATE_RATE; + // + // Load up the object we're going to use for the translocation + // + dpl_OBJECT* myTranslocateSphere = dpl_LoadObject ( "tsphere.bgf", dpl_load_normal ); + Check_Pointer(myTranslocateSphere); + // + // Setup a DCS that we can put the sphere on so it can be rotated and scaled + // around the VTV. Attach the sphere to this DCS but make it invisible. + // + myInstance = dpl_NewInstance(); + myDCS = dpl_NewDCS(); + Check_Pointer (myInstance); + Check_Pointer (myDCS); + dpl_AddDCSToDCS (myParentDCS, myDCS); + dpl_SetDCSZone (myDCS, myDeathZone); + dpl_SetInstanceObject (myInstance, myTranslocateSphere); + dpl_SetInstanceIntersect (myInstance, dpl_isect_mode_obj); + dpl_SetInstanceSectMask (myInstance, NULL); + dpl_SetInstanceVisibility (myInstance, False); + dpl_AddInstanceToDCS (myDCS, myInstance); + dpl_FlushInstance (myInstance); + dpl_FlushDCS (myDCS); + // + // Connect us to the state dial's watcher hook + // + myEffectTrigger->AddVideoWatcher(this); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Destructor for POVTranslocationRenderable +// +POVTranslocateRenderable::~POVTranslocateRenderable() +{ + Check(this); + // + // Disconnect the structure we have setup + // + dpl_RemoveDCSFromDCS(myParentDCS, myDCS); + dpl_RemoveInstanceFromDCS(myDCS,myInstance); + // + // Delete the DPL elements we created + // + dpl_DeleteInstance(myInstance); + dpl_DeleteDCS(myDCS); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// TestInstance for the POVTranslocateRenderable +// +Logical + POVTranslocateRenderable::TestInstance() const +{ + VideoRenderable::TestInstance(); + + Check_Pointer(myZone); + Check_Pointer(myDeathZone); + Check_Pointer(myParentDCS); + Check(myEffectTrigger); + Check_Pointer(myInstance); + Check_Pointer(myDCS); + Verify(myState >= IdleState && myState <= ExpandRevealState); + return True; +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Execute method for POVTranslocateRenderable. +// +void + POVTranslocateRenderable::Execute() +{ + + float32 + *tempMatrix; + Scalar + elapsed_time, + current_time, + percent_time_left, + percent_time_used, + scale_factor; + unsigned + current_trigger_state; + // + // Get the current state and the current time for later use + // + Check(myEffectTrigger); + current_trigger_state = myEffectTrigger->GetState(); + current_time = myRenderer->GetCurrentFrameTime(); + // + // State engine (running off myState) to manage running of the death effect + // +// cout<<"POVTranslocateRenderable::Execute\n"; + switch(myState) + { + // + // IdleState waits for a transition in the effect control state and starts + // the effect state machine when it detects one. + // + case IdleState: + { + if(current_trigger_state == myEffectControlState) + { + myState = InitialCollapseState; + myCollapseEnd = current_time + COLLAPSE_TIME; + dpl_SetInstanceVisibility (myInstance, True); + dpl_FlushInstance (myInstance); + myRenderer->AddDynamicRenderable(this); +// cout<<"POVTranslocateRenderable::Going Dynamic\n"; + } + break; + } + // + // This case handles ending the screen flash when we need to + // + case FlashScreenState: + { + myState = InitialCollapseState; + break; + } + // + // InitialCollapseState handles reducing the sphere from its max size down + // to one over a period of time. We figure the percentage of the time + // left then multiply it by the size the sphere started at to get the + // scale factor. + // + case InitialCollapseState: + { + percent_time_left = (myCollapseEnd - current_time)/COLLAPSE_TIME; + // + // See how much time is left in the effect. + // + if(percent_time_left <= 0.0f) + { + // + // Time's up! Go to WaitForReincarnate state, force scale factor to + // 1.0, and turn off the outside world + // + scale_factor = 1.0f; + dpl_SetZoneAllViewsOff (myZone); + dpl_FlushZone (myZone); + myCollapseEnd = current_time; + myState = WaitForReincarnateState; + } + else + { + // + // Recalculate the scale factor based on time left + // + scale_factor = (percent_time_left * COLLAPSE_START_SCALE) + 1.0f; + } + // + // Build a scaling identity matrix based on our scale factor + // + AffineMatrix tempAffine(True); + tempAffine(0,0) = scale_factor; + tempAffine(1,1) = scale_factor; + tempAffine(2,2) = scale_factor; + // + // Put the scale matrix into the DCS and flush it. + // + tempMatrix = dpl_GetDCSMatrix( myDCS ); + Check_Pointer ( tempMatrix ); + *(Matrix4x4*)tempMatrix = tempAffine; + DPL_FLUSH_DCS (myDCS); + break; + } + // + // WaitForReincarnateState waits till we the trigger state switches off + // then does what we want to get us back into the world. + // + case WaitForReincarnateState: + { + if(current_trigger_state != myEffectControlState) + { + // + // Switch the world back on, then change states + // + dpl_SetZoneAllViewsOn (myZone); + dpl_FlushZone (myZone); + myState = ExpandRevealState; + myCollapseEnd = current_time + EXPAND_TIME; + } + else + { + // + // Mess with the DCS to make the tunnel effect more pronounced + // + elapsed_time = current_time - myCollapseEnd; + Point3D temp_point( + (cos(elapsed_time * 3.33) * TRANSLATE_LIMIT), + (sin(elapsed_time * 2.5) * TRANSLATE_LIMIT), + 0.0); + tempMatrix = dpl_GetDCSMatrix( myDCS ); + Check_Pointer( tempMatrix ); + *(Matrix4x4*)tempMatrix = temp_point; + DPL_FLUSH_DCS(myDCS); + } + break; + } + // + // ExpandRevealState expands the sphere rapidly in size to reveal the world + // getting rid of the sphere when it hits a maximum size. + // + case ExpandRevealState: + { + // + // In case we get killed again while in this state, I watch for + // a change back into the trigger state and retrigger the + // effect if it shows up + // + if(current_trigger_state == myEffectControlState) + { + myState = InitialCollapseState; + myCollapseEnd = current_time + COLLAPSE_TIME; +// dpl_SetInstanceVisibility (myInstance, True); +// dpl_FlushInstance (myInstance); +// myRenderer->AddDynamicRenderable(this); +// cout<<"POVTranslocateRenderable::Going Dynamic\n"; + } + percent_time_used = 1.0f - ((myCollapseEnd - current_time)/EXPAND_TIME); + if(percent_time_used >= 1.0f) + { + dpl_SetInstanceVisibility (myInstance, False); + dpl_FlushInstance (myInstance); + myState = IdleState; + scale_factor = 1.0f; + myRenderer->RemoveDynamicRenderable(this); +// cout<<"POVTranslocateRenderable::Going Static\n"; + } + else + { + scale_factor = (percent_time_used * EXPAND_END_SCALE) + 1.0f; + } + // + // Build a scaling identity matrix based on our scale factor + // + AffineMatrix tempAffine(True); + tempAffine(0,0) = scale_factor; + tempAffine(1,1) = scale_factor; + tempAffine(2,2) = scale_factor; + // + // Put the scale matrix into the DCS and flush it. + // + tempMatrix = dpl_GetDCSMatrix( myDCS ); + Check_Pointer ( tempMatrix ); + *(Matrix4x4*)tempMatrix = tempAffine; + DPL_FLUSH_DCS (myDCS); + break; + } + } +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Constructor for POVStartEndRenderable This handles the effect we use when +// the mission begins and ends (different from death) +// +POVStartEndRenderable::POVStartEndRenderable( + Entity *entity, // Entity to attach the renderable to + ExecutionType execution_type, // How/when to execute the renderable + dpl_ZONE *this_zone, // DPL zone the world is in + dpl_ZONE *death_zone, // DPL zone the player's VTV and death effect are in + dpl_VIEW *this_view, // The view containing our eye + StateIndicator *effect_trigger, // State dial we use to control the translocation + float red_fog, // Fog color + float green_fog, + float blue_fog, + float near_fog, // The near fog plane + float far_fog, // The far fog plane + unsigned start_mission_state, // State that signals start of mission + unsigned end_mission_state // State that signals end of mission +): + VideoRenderable(entity, execution_type) +{ +#define FLASH_TIME (0.1f) // Time the screen will stay stark white +#define FADE_IN_TIME (1.0f) // Time to fade from white to the world +#define FADE_OUT_TIME (1.0f) // Time to fade to black at the end of the game + // HACK HACK HACK this should be removed once red planet is checked out + if(execution_type != Watcher) + cout<<"POVStartEndRenderable wants to be a watcher and isn't!\n"; + // + // Check the inbound data, note that the parent DCS could be a null pointer + // + Check_Pointer(this_zone); + Check_Pointer(death_zone); + Check_Pointer(this_view); + Check(effect_trigger); + // + // Remember the entity and DCS this renderable is attached to + // + myZone = this_zone; + myDeathZone = death_zone; + myEffectTrigger = effect_trigger; + myView = this_view; + myState = WaitForStartState; + myFogRed = red_fog; + myFogGreen = green_fog; + myFogBlue = blue_fog; + myFogNear = near_fog; + myFogFar = far_fog; + myStartMissionState = start_mission_state; + myEndMissionState = end_mission_state; + myRenderer->SetFogStyle(DPLRenderer::noUpdateFogSetting); + // + // Connect us to the state dial's watcher hook + // + myEffectTrigger->AddVideoWatcher(this); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Destructor for POVStartEndRenderable +// +POVStartEndRenderable::~POVStartEndRenderable() +{ + Check(this); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// TestInstance for the POVStartEndRenderable +// +Logical + POVStartEndRenderable::TestInstance() const +{ + VideoRenderable::TestInstance(); + + Check_Pointer(myZone); + Check_Pointer(myDeathZone); + Check(myEffectTrigger); + Verify(myState >= WaitForStartState && myState <= FadeOutState); + Verify(myFogRed >= 0.0f && myFogRed <= 1.0f); + Verify(myFogGreen >= 0.0f && myFogGreen <= 1.0f); + Verify(myFogBlue >= 0.0f && myFogBlue <= 1.0f); + + return True; +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Execute method for POVStartEndRenderable. +// +void + POVStartEndRenderable::Execute() +{ + Scalar + current_time, + percent_time_left, + percent_time_used; + unsigned + current_trigger_state; + // + // Get the current state and the current time for later use + // + Check(myEffectTrigger); + current_trigger_state = myEffectTrigger->GetState(); + current_time = myRenderer->GetCurrentFrameTime(); + // + // State engine (running off myState) to manage running of the death effect + // +// cout<<"POVStartEndRenderable::Executing\n"; + switch(myState) + { + // + // WaitForStartState waits for the state that signals the start of the mission + // then sends the screen to full white by manipulating the fog color and limits. + // + case WaitForStartState: + { + myRenderer->SetFogStyle(DPLRenderer::noUpdateFogSetting); + if(current_trigger_state == myStartMissionState) + { + myState = FlashScreenState; + myStateTimer = current_time + FLASH_TIME; + dpl_SetViewFog( + myView, + dpl_fog_type_pixel_lin, + 1.0, + 1.0, + 1.0, + 0.01, + 0.05 ); + dpl_FlushView(myView); + myRenderer->AddDynamicRenderable(this); +// cout<<"POVStartEndRenderable::Going Dynamic\n"; + } + break; + } + // + // FlashScreenState is a state we park in for a short time so the screen will + // stay white for more than one frame. + // + case FlashScreenState: + { + if(myStateTimer <= current_time) + { + myStateTimer = current_time + FADE_IN_TIME; + myState = FadeInState; + } + break; + } + // + // FadeInState fades the fog color down from white to what it's supposed to + // be, while sweeping the fog ranges out to their proper ranges. + // + case FadeInState: + { + percent_time_left = (myStateTimer - current_time)/FADE_IN_TIME; + if(percent_time_left <= 0.0f) + { + percent_time_left = 0.0f; + myState = MissionRunningState; + myRenderer->SetFogStyle(DPLRenderer::updateFogSetting); + myRenderer->RemoveDynamicRenderable(this); +// cout<<"POVStartEndRenderable::Going Static\n"; + + } + percent_time_used = 1.0f - percent_time_left; + myRenderer->GetCurrentFogSettings( + &myFogRed, + &myFogGreen, + &myFogBlue, + &myFogNear, + &myFogFar); + dpl_SetViewFog( + myView, + dpl_fog_type_pixel_lin, + myFogRed + ((1.0f - myFogRed) * percent_time_left), + myFogGreen + ((1.0f - myFogGreen) * percent_time_left), + myFogBlue + ((1.0f - myFogBlue) * percent_time_left), + (myFogNear * percent_time_used) + 0.01f, + (myFogFar * percent_time_used) + 0.05f); + dpl_FlushView(myView); + break; + } + // + // MissionRunningState is where we park while the mission is going on, waiting + // for the state that signals the end of the game + // + case MissionRunningState: + { + if(current_trigger_state == myEndMissionState) + { + myState = FadeOutState; + myStateTimer = current_time + FADE_OUT_TIME; + myRenderer->SetFogStyle(DPLRenderer::noUpdateFogSetting); + myRenderer->AddDynamicRenderable(this); +// cout<<"POVStartEndRenderable::Going Dynamic\n"; + } + break; + } + // + // FadeOutState handles doing a fade-to-black at the end of the game + // + case FadeOutState: + { + percent_time_left = (myStateTimer - current_time)/FADE_OUT_TIME; + if(percent_time_left <= 0.0f) + { + myState = WaitForStartState; + percent_time_left = 0.0f; + myRenderer->RemoveDynamicRenderable(this); +// cout<<"POVStartEndRenderable::Going Static\n"; + } + myRenderer->GetCurrentFogSettings( + &myFogRed, + &myFogGreen, + &myFogBlue, + &myFogNear, + &myFogFar); + dpl_SetViewFog( + myView, + dpl_fog_type_pixel_lin, + myFogRed * percent_time_left, + myFogGreen * percent_time_left, + myFogBlue * percent_time_left, + (myFogNear * percent_time_left) + 0.01f, + (myFogFar * percent_time_left) + 0.05f); + dpl_FlushView(myView); + break; + } + } +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Constructor for the ReticleRenderable +// This produces a movable crosshair reticle that can be either static or +// dynamic. If static, it will position the graphic at wherever the reticle +// points when we construct this. +// +ReticleRenderable::ReticleRenderable( + Entity *entity, // Entity to attach the renderable to + ExecutionType execution_type, // How/when to execute the renderable + Reticle **my_reticle, // points to renderable reticle pointer that points to entity's reticle + dpl_VIEW *this_view // the view associated with our eye +): + VideoRenderable(entity, execution_type) +{ + dpl2d_MATRIX + my_2d_matrix; +// +// Check the inbound data +// + Check_Pointer(my_reticle); + Check_Pointer(*my_reticle); + Check_Pointer(this_view); +// +// Remember the entity that this renderable is attached to +// + rendererReticle = my_reticle; + myReticle = *my_reticle; + myView = this_view; + myOldReticlePosition = myReticle->reticlePosition; + myOldReticleState = myReticle->reticleState; +// +// Build a main 2d display list with the reticle graphic in it, this should call +// a second display list that contains just a position command so only a short +// display list needs to be remade to move the cursor. +// + myReticleDisplayList = dpl2d_NewDisplayList(); + myPositionDisplayList = dpl2d_NewDisplayList(); + dpl2d_OpenDisplayList (myReticleDisplayList, dpl2d_open_mode_clear); + dpl2d_AddCallDisplayList(myReticleDisplayList, myPositionDisplayList ); + dpl2d_AddFullScreenClipRegion (myReticleDisplayList); + dpl2d_AddSetColor (myReticleDisplayList, 0.0f, 0.5f, 0.0f); + dpl2d_AddOpenLines (myReticleDisplayList); + dpl2d_AddPoint (myReticleDisplayList, -0.08f, 0.0f); + dpl2d_AddPoint (myReticleDisplayList, -0.02f, 0.0f); + dpl2d_AddPoint (myReticleDisplayList, 0.02f, 0.0f); + dpl2d_AddPoint (myReticleDisplayList, 0.08f, 0.0f); + dpl2d_AddPoint (myReticleDisplayList, 0.0f, -0.08f); + dpl2d_AddPoint (myReticleDisplayList, 0.0f, -0.02f); + dpl2d_AddPoint (myReticleDisplayList, 0.0f, 0.02f); + dpl2d_AddPoint (myReticleDisplayList, 0.0f, 0.08f); + dpl2d_AddCloseLines (myReticleDisplayList); + dpl2d_CloseDisplayList (myReticleDisplayList); + + dpl2d_OpenDisplayList (myPositionDisplayList, dpl2d_open_mode_clear); + dpl2d_IdMatrix (my_2d_matrix); + dpl2d_TranslateMatrix (my_2d_matrix, myReticle->reticlePosition.x, myReticle->reticlePosition.y ); + dpl2d_AddSetMatrix (myPositionDisplayList,my_2d_matrix ); + dpl2d_CloseDisplayList (myPositionDisplayList); + + dpl2d_FlushDisplayList (myReticleDisplayList); + dpl2d_FlushDisplayList (myPositionDisplayList); + // + // If the reticle is turned on bind the display list to our eyepoint + // + if(myOldReticleState == Reticle::ReticleOn) + { + dpl2d_SetViewDisplayList ( myView, myReticleDisplayList ); + dpl_FlushView ( myView ); + } +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Destructor for the ReticleRenderable +// +ReticleRenderable::~ReticleRenderable() +{ + // + // Make sure our structure is still in one piece + // + Check(this); + // + // Unhook the display list from the view, then delete both lists + // + dpl2d_SetViewDisplayList ( myView, NULL ); + dpl_FlushView ( myView ); + dpl2d_DeleteDisplayList(myReticleDisplayList); + dpl2d_DeleteDisplayList(myPositionDisplayList); + // + // Unhook the renderer's pickpoint stuff from this renderable + // + *rendererReticle = NULL; +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// TestInstance for the DPLDrawReticleRenderable +// Not much to check here, the entity and DCS pointers must be valid while +// the instance is allowed to be NULL +// +Logical + ReticleRenderable::TestInstance() const +{ + VideoRenderable::TestInstance(); + Check_Pointer(myReticle); + Check_Pointer(rendererReticle); + Check_Pointer(myView); + return True; +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Execute for the ReticleRenderable +// Nothing to execute here so we just pass it down to the next lower level. +// +void + ReticleRenderable::Execute() +{ + dpl2d_MATRIX + my_2d_matrix; + // + // See if the reticle state has changed + // + if(myOldReticleState != myReticle->reticleState) + { + // + // Send the reticle into the appropriate state + // + myOldReticleState = myReticle->reticleState; + switch(myOldReticleState) + { + case Reticle::ReticleOff: + dpl2d_SetViewDisplayList ( myView, NULL ); + dpl_FlushView ( myView ); + break; + case Reticle::ReticleOn: + dpl2d_SetViewDisplayList ( myView, myReticleDisplayList ); + dpl_FlushView ( myView ); + break; + } + } + // + // See if the reticle has moved + // + if(myOldReticlePosition != myReticle->reticlePosition) + { + myOldReticlePosition = myReticle->reticlePosition; + // + // Re-create the display list that positions the reticle + // + dpl2d_OpenDisplayList( + myPositionDisplayList, + dpl2d_open_mode_clear); + dpl2d_IdMatrix(my_2d_matrix); + dpl2d_TranslateMatrix( + my_2d_matrix, + myOldReticlePosition.x, + myOldReticlePosition.y ); + dpl2d_AddSetMatrix( + myPositionDisplayList, + my_2d_matrix ); + dpl2d_CloseDisplayList(myPositionDisplayList); + dpl2d_FlushDisplayList(myPositionDisplayList); + } + // + // Call the execute method in our parent + // + #if DEBUG_LEVEL > 0 + VideoRenderable::Execute(); + #endif +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Constructor for the CameraShipHUDRenderable +// +CameraShipHUDRenderable::CameraShipHUDRenderable( + Entity *entity, + ExecutionType execution_type, + int *player_index, + Logical *display_ranking_window +) : + VideoRenderable(entity, execution_type) +{ + Check_Pointer(player_index); + Check_Pointer(display_ranking_window); + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Read in PlayerName Geometry + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + playerNameObject[0] = dpl_LoadObject("PNAME1.bgf", dpl_load_normal); + playerNameObject[1] = dpl_LoadObject("PNAME2.bgf", dpl_load_normal); + playerNameObject[2] = dpl_LoadObject("PNAME3.bgf", dpl_load_normal); + playerNameObject[3] = dpl_LoadObject("PNAME4.bgf", dpl_load_normal); + playerNameObject[4] = dpl_LoadObject("PNAME5.bgf", dpl_load_normal); + playerNameObject[5] = dpl_LoadObject("PNAME6.bgf", dpl_load_normal); + playerNameObject[6] = dpl_LoadObject("PNAME7.bgf", dpl_load_normal); + playerNameObject[7] = dpl_LoadObject("PNAME8.bgf", dpl_load_normal); + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Read in Ordinal Rankings Geometry + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + ordinalObject[0] = dpl_LoadObject("PLACE1.bgf", dpl_load_normal); + ordinalObject[1] = dpl_LoadObject("PLACE2.bgf", dpl_load_normal); + ordinalObject[2] = dpl_LoadObject("PLACE3.bgf", dpl_load_normal); + ordinalObject[3] = dpl_LoadObject("PLACE4.bgf", dpl_load_normal); + ordinalObject[4] = dpl_LoadObject("PLACE5.bgf", dpl_load_normal); + ordinalObject[5] = dpl_LoadObject("PLACE6.bgf", dpl_load_normal); + ordinalObject[6] = dpl_LoadObject("PLACE7.bgf", dpl_load_normal); + ordinalObject[7] = dpl_LoadObject("PLACE8.bgf", dpl_load_normal); + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Initialize CameraFollowing + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + followedPlayerIndex = player_index; + oldFollowedPlayerIndex = -1; + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Create One DCS for a Camera Following Name Bitmap + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + followedNameDCS = dpl_NewDCS(); + followedNameInstance = dpl_NewInstance(); + dpl_ScaleDCS ( followedNameDCS, 0.20f, 0.20f, 1.0f ); + dpl_TranslateDCS ( followedNameDCS, 0.0f, -0.15f, -0.5f ); + dpl_SetDCSIgnoreGeo ( followedNameDCS, 1 ); + dpl_SetDCSTraversal ( followedNameDCS, 0x7 ); + dpl_AddDCSToScene ( followedNameDCS ); + dpl_SetInstanceObject ( followedNameInstance, playerNameObject[0] ); + dpl_AddInstanceToDCS ( followedNameDCS, followedNameInstance ); + dpl_SetInstanceVisibility ( followedNameInstance, 1 ); + dpl_FlushInstance ( followedNameInstance ); + dpl_FlushDCS ( followedNameDCS ); + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Create One DCS for Camera Following Ordinal Ranking Bitmap + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + followedOrdinalDCS = dpl_NewDCS(); + followedOrdinalInstance = dpl_NewInstance(); + dpl_AddDCSToDCS ( followedNameDCS, followedOrdinalDCS ); + dpl_SetInstanceObject ( followedOrdinalInstance, ordinalObject[0] ); + dpl_AddInstanceToDCS ( followedOrdinalDCS, followedOrdinalInstance ); + dpl_SetDCSIgnoreGeo ( followedOrdinalDCS, 1 ); + dpl_SetDCSTraversal ( followedOrdinalDCS, 0x7 ); + dpl_TranslateDCS ( followedOrdinalDCS, -0.75f, 0.0f, 0.0f ); + dpl_SetInstanceVisibility ( followedOrdinalInstance, 0 ); + dpl_FlushInstance ( followedOrdinalInstance ); + dpl_FlushDCS ( followedOrdinalDCS ); + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Create the Ranking Window + //~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + displayRankingWindow = display_ranking_window; + oldDisplayRankingWindow = False; + + Scalar rank_window_y; + rank_window_y = 0.16f; + + rankingWindowDCS = dpl_NewDCS(); + dpl_ScaleDCS ( rankingWindowDCS, 0.12f, 0.12f, 1.0f ); + dpl_TranslateDCS ( rankingWindowDCS, 0.22f, rank_window_y, -0.5f ); + dpl_SetDCSIgnoreGeo ( rankingWindowDCS, 1 ); + dpl_SetDCSTraversal ( rankingWindowDCS, 0x7 ); + dpl_AddDCSToScene ( rankingWindowDCS ); + dpl_FlushDCS ( rankingWindowDCS ); + + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Initialize the pointer's to the player Ranks + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + playerRank = NULL; + oldPlayerRank = NULL; + nameDCS = NULL; + rankDCS = NULL; + nameInstance = NULL; + rankInstance = NULL; + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // See How Many Regular Players and CameraShip Players! + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + playerCount = 0; + Check(application); + EntityManager *entity_mgr = application->GetEntityManager(); + Check(entity_mgr); + EntityGroup *player_group = entity_mgr->FindGroup("Players"); + if (player_group) + { + Check(player_group); + ChainIteratorOf player_iterator(player_group->groupMembers); + playerCount = player_iterator.GetSize(); + } + + EntityGroup *camera_player_group = entity_mgr->FindGroup("CameraPlayers"); + int camera_player_count=0; + if (camera_player_group) + { + Check(player_group); + ChainIteratorOf camera_iterator(camera_player_group->groupMembers); + camera_player_count = camera_iterator.GetSize(); + } + + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Make the Arrays for Ranking the size of regular and cameras players + // summed up. This is necessary since GameMachineHost type of Camera + // Ships also have a bitmapIndex! + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + if (playerCount) + { + camera_player_count += playerCount; + Verify(camera_player_count <= MAX_PLAYER_NAMES); + playerRank = new (int (*[camera_player_count])); + Register_Pointer(playerRank); + Player *active_player; + if(player_group) + { + Check(player_group); + ChainIteratorOf player_iterator(player_group->groupMembers); + while ((active_player = (Player*) player_iterator.ReadAndNext()) != NULL) + { + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // PlayerRank Array indexed by bitmapIndex + // holds that player's ranking + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + Check(active_player); + Verify( + active_player->playerBitmapIndex > 0 + && active_player->playerBitmapIndex <= MAX_PLAYER_NAMES + ); + playerRank[active_player->playerBitmapIndex - 1] = + &active_player->playerRanking ; + } + } + if (camera_player_group) + { + ChainIteratorOf camera_iterator(camera_player_group->groupMembers); + while ((active_player = (Player*) camera_iterator.ReadAndNext()) != NULL) + { + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // PlayerRank Array indexed by bitmapIndex + // holds that player's ranking + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + Check(active_player); + Verify( + active_player->playerBitmapIndex > 0 + && active_player->playerBitmapIndex <= MAX_PLAYER_NAMES + ); + playerRank[active_player->playerBitmapIndex - 1] = + &active_player->playerRanking ; + } + } + // + //~~~~~~~~~~~~~~~~~~~~~~~~~ + // Initialize OldPlayerRank + //~~~~~~~~~~~~~~~~~~~~~~~~~ + // + oldPlayerRank = new int[camera_player_count]; + Register_Pointer(oldPlayerRank); + + int ii; + for(ii=0; ii= 0); +#if 0 + if ( + oldPlayerRank[oldFollowedPlayerIndex] + != *playerRank[oldFollowedPlayerIndex] + ) + { + // + //~~~~~~~~~~~~~~~~~~~~~~~~ + // Change the bitmap shown + //~~~~~~~~~~~~~~~~~~~~~~~~ + // + Verify( + oldPlayerRank[oldFollowedPlayerIndex] >= 0 + && oldPlayerRank[oldFollowedPlayerIndex] < playerCount + ); + dpl_SetInstanceObject ( + followedOrdinalInstance, + ordinalObject[*playerRank[oldFollowedPlayerIndex]] + ); + dpl_FlushInstance ( followedOrdinalInstance ); + } +#endif + + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Update the Rankings for All Players + // whenever they change! + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + for(int ii=0;ii= 0 && oldPlayerRank[ii] < playerCount); + + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Name instance corresponds to rank + // playerNameobject corresponds to playerBitmapIndex + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + dpl_SetInstanceObject( + nameInstance[oldPlayerRank[ii]], + playerNameObject[ii] + ); + dpl_FlushInstance ( nameInstance[oldPlayerRank[ii]] ); + } + } + + // + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Toggle Ranking Window Visibility + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // + if (oldDisplayRankingWindow != *displayRankingWindow) + { + oldDisplayRankingWindow = *displayRankingWindow; + for(int ii=0;iiGetApplicationState() == Application::StoppingMission || + application->GetApplicationState() == Application::EndingMission) + { + dpl_SetInstanceVisibility ( followedOrdinalInstance, 0 ); + dpl_SetInstanceVisibility ( followedNameInstance, 0 ); + dpl_FlushInstance ( followedOrdinalInstance ); + dpl_FlushInstance ( followedNameInstance ); + } +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + CameraShipHUDRenderable::TestInstance() const +{ + VideoRenderable::TestInstance(); + return True; +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Constructor for DCSMorphObjectRenderable +// +DCSMorphObjectRenderable::DCSMorphObjectRenderable( + Entity *entity, // Entity to attach the renderable to + ExecutionType execution_type, // How/when to execute the renderable + dpl_OBJECT *destination_object, // destination + dpl_OBJECT *start_object, // start object + dpl_OBJECT *end_object, // end object + Scalar *morph_control, // pointer to control variable + int32 morph_mode, // Defines type of morph to do + dpl_ZONE *this_zone, // DPL Zone this stuff will live in (for culling) + dpl_ISECT_MODE intersect_mode, // type of intersections to do on this object + uint32 intersect_mask // intersection mask for the object +): + VideoRenderable(entity, execution_type) +{ + // + // Check incoming data + // + Check_Pointer(destination_object); + Check_Pointer(start_object); + Check_Pointer(end_object); + Check_Pointer(morph_control); + Check_Pointer(this_zone); + // + // Remember my dpl object, intersect and offset data + // + myDPLObject = destination_object; + myStartObject = start_object; + myEndObject = end_object; + myMorphControl = morph_control; + oldMorphControl = *myMorphControl; + myMorphMode = morph_mode; + myDPLZone = this_zone; + myIntersectMode = intersect_mode; + myIntersectMask = intersect_mask; + myDCS = NULL; + myInstance = NULL; + // + // We need to construct a DCS node here and remember it. The next class up is + // expected to handle the flushing and connecting of structure so we just setup + // the DCS and zone information here, leaving flushing to someone else. + // + myDCS = dpl_NewDCS (); + Check_Pointer ( myDCS ); + dpl_SetDCSZone ( myDCS, myDPLZone ); + // + // Construct the instance(s) and hang them on the DCS. Since we may be building + // more than one instance, we have to take care of flushing them here. + // + myInstance = dpl_NewInstance(); + Check_Pointer ( myInstance); + dpl_SetInstanceObject ( myInstance, myDPLObject); + dpl_SetInstanceIntersect ( myInstance, myIntersectMode ); + dpl_SetInstanceSectMask ( myInstance, myIntersectMask ); + dpl_SetInstanceVisibility ( myInstance, 1 ); + dpl_AddInstanceToDCS ( myDCS, myInstance ); + dpl_FlushInstance ( myInstance ); + // + // Setup the morph and do the initial morph to get the destination object + //-------------------------------------------------------------------------- + // NOTE: dpl_MorphObject seems to have Start and End objects reversed + // so they are reversed here as well...(two negatives make positive) + //-------------------------------------------------------------------------- + dpl_MorphObject(myDPLObject,myStartObject,myEndObject,oldMorphControl,myMorphMode); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Destructor for DCSMorphObjectRenderable +// +DCSMorphObjectRenderable::~DCSMorphObjectRenderable() +{ + // + // Check our structure before we do anything + // + Check(this); + // + // Delete the instance(s) hanging on the DCS (if any) + // NOTE: we may want to iterate through all the instances here using DPL routines + // + dpl_RemoveInstanceFromDCS(myDCS, myInstance); + dpl_DeleteInstance(myInstance); + // + // Delete the DCS + // + dpl_DeleteDCS(myDCS); + myDCS = NULL; +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// TestInstance for the DCSMorphObjectRenderable +// +Logical + DCSMorphObjectRenderable::TestInstance() const +{ + // + // Call our parent's TestInstance first + // + VideoRenderable::TestInstance(); + // + // Test our own variables + // + Check_Pointer(myDPLObject); + Check_Pointer(myStartObject); + Check_Pointer(myEndObject); + Check_Pointer(myMorphControl); + Check_Pointer(myDPLZone); + Check_Pointer(myDCS); + Check_Pointer(myInstance); + return True; +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Execute for the DCSMorphObjectRenderable +// If the morph control variable has changed, we re-do the morph +// +void + DCSMorphObjectRenderable::Execute() +{ + // + // Check our variables + // + Check(this); + // + // See if the morph control varaible has changed + // + if(oldMorphControl != *myMorphControl) + { + oldMorphControl = *myMorphControl; + //-------------------------------------------------------------------------- + // NOTE: dpl_MorphObject seems to have Start and End objects reversed + // so they are reversed here as well...(two negatives make positive) + //-------------------------------------------------------------------------- + + dpl_MorphObject(myDPLObject,myStartObject,myEndObject,oldMorphControl,myMorphMode); + } + // + // Call the next lower execute method + // + #if DEBUG_LEVEL > 0 + VideoRenderable::Execute(); + #endif +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Constructor for RootMorphRenderable +// +RootMorphRenderable::RootMorphRenderable( + Entity *entity, // Entity to attach the renderable to + ExecutionType execution_type, // How/when to execute the renderable + dpl_OBJECT *destination_object, // destination + dpl_OBJECT *start_object, // start object + dpl_OBJECT *end_object, // end object + Scalar *morph_control, // pointer to control variable + int32 morph_mode, // Defines type of morph to do + dpl_ZONE *this_zone, // DPL Zone this stuff will live in (for culling) + dpl_ISECT_MODE intersect_mode, // type of intersections to do on this object + uint32 intersect_mask // intersection mask for the object +): +DCSMorphObjectRenderable( + entity, // Entity to attach the renderable to + execution_type, // How/when to execute the renderable + destination_object, // destination + start_object, // start object + end_object, // end object + morph_control, // pointer to control variable + morph_mode, // Defines type of morph to do + this_zone, // DPL Zone this stuff will live in (for culling) + intersect_mode, // type of intersections to do on this object + intersect_mask) // intersection mask for the object +{ + // + // All the incoming data will have been checked by DCSObjectRenderable + // already, so we don't have to check anything locally. + // + // + // Initialize our variables + // + oldLocalToWorld = myEntity->localToWorld; + // + // Now we finish the work of hooking up and initializing the root renderable + // Add the DCS to the scene and initialize it's matrix with the localToWorld + // transformation from our entity + // + dpl_AddDCSToScene ( myDCS ); + float32* tempMatrix = dpl_GetDCSMatrix( myDCS ); + Check_Pointer ( tempMatrix ); + *(Matrix4x4*)tempMatrix = myEntity->localToWorld; + dpl_FlushDCS ( myDCS ); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Destructor for RootMorphRenderable +// +RootMorphRenderable::~RootMorphRenderable() +{ + // + // Check our structure before we do anything + // + Check(this); + // + // Remove the DCS from the scene, deletion of the DCS and it's instances is + // handled by our parent class. + // + dpl_RemoveDCSFromScene(myDCS); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// TestInstance for the RootMorphRenderable +// +Logical + RootMorphRenderable::TestInstance() const +{ + // + // Call our parent's TestInstance first + // + DCSMorphObjectRenderable::TestInstance(); + // + // Test our own variables + // + Check(&oldLocalToWorld); + return True; +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Execute for the RootMorphRenderable +// Nothing to execute here so we just pass it down to the next lower level. +// +void + RootMorphRenderable::Execute() +{ + // + // Check our variables + // + Check(this); + // + // If our entity has changed it's localToWorld matrix, update DPL + // + if(oldLocalToWorld != myEntity->localToWorld) + { + oldLocalToWorld = myEntity->localToWorld; + float32* tempMatrix = dpl_GetDCSMatrix(myDCS); + Check_Pointer (tempMatrix); + *(Matrix4x4*)tempMatrix = oldLocalToWorld; + DPL_FLUSH_DCS ( myDCS ); + } + // + // Call the execute method in our parent + // + DCSMorphObjectRenderable::Execute(); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Constructor for ChildMorphRenderable +// +ChildMorphRenderable::ChildMorphRenderable( + Entity *entity, // Entity to attach the renderable to + ExecutionType execution_type, // How/when to execute the renderable + dpl_OBJECT *destination_object, // destination + dpl_OBJECT *start_object, // start object + dpl_OBJECT *end_object, // end object + Scalar *morph_control, // pointer to control variable + int32 morph_mode, // Defines type of morph to do + dpl_ZONE *this_zone, // DPL Zone this stuff will live in (for culling) + dpl_ISECT_MODE intersect_mode, // type of intersections to do on this object + uint32 intersect_mask, // intersection mask for the object + dpl_DCS *parent_DCS // the parent DCS we will be offsetting from +): +DCSMorphObjectRenderable( + entity, // Entity to attach the renderable to + execution_type, // How/when to execute the renderable + destination_object, // destination + start_object, // start object + end_object, // end object + morph_control, // pointer to control variable + morph_mode, // Defines type of morph to do + this_zone, // DPL Zone this stuff will live in (for culling) + intersect_mode, // type of intersections to do on this object + intersect_mask) // intersection mask for the object +{ + // + // All the incoming data will have been checked by DCSObjectRenderable + // already, so we don't have to check anything locally. + // + Check_Pointer(parent_DCS); + // + // Now we finish the work of hooking up and initializing the root renderable + // Add the DCS to the scene and initialize it's matrix with the localToWorld + // transformation from our entity + // + dpl_AddDCSToDCS ( parent_DCS, myDCS ); + dpl_FlushDCS ( myDCS ); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Destructor for ChildMorphRenderable +// +ChildMorphRenderable::~ChildMorphRenderable() +{ + // + // Check our structure before we do anything + // + Check(this); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// TestInstance for the ChildMorphRenderable +// +Logical + ChildMorphRenderable::TestInstance() const +{ + // + // Call our parent's TestInstance first + // + DCSMorphObjectRenderable::TestInstance(); + // + // Test our own variables + // + return True; +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Execute for the ChildMorphRenderable +// Nothing to execute here so we just pass it down to the next lower level. +// +void + ChildMorphRenderable::Execute() +{ + // + // Check our variables + // + Check(this); + // + // Call the execute method in our parent + // + DCSMorphObjectRenderable::Execute(); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Constructor for ScalingExplosionRenderable +// +ScalingExplosionRenderable::ScalingExplosionRenderable( + Entity *entity, // Entity to attach the renderable to + ExecutionType execution_type, // How/when to execute the renderable + dpl_OBJECT *graphical_object, // This will be the scaling explosion object + dpl_ZONE *this_zone, // DPL Zone this stuff will live in (for culling) + dpl_ISECT_MODE intersect_mode, // type of intersections to do on this object + uint32 intersect_mask, // intersection mask for the object + dpl_DCS *parent_DCS, // the parent DCS we will be offsetting from + LinearMatrix *offset_matrix, // offset matrix to be applied prior to joint DCS + Vector3D *control_vector, // Effect control velocity vector + Vector3D *accel_vector, // rate of change of control vector + Scalar gravity, + int *trigger // doesn't run till the trigger comes up +): +ChildOffsetRenderable( + entity, // Entity to attach the renderable to + execution_type, // How/when to execute the renderable + graphical_object, // object to hang on the DCS, may be a list later + this_zone, // DPL Zone this stuff will live in (for culling) + intersect_mode, // type of intersections to do on this object + intersect_mask, // intersection mask for the object + parent_DCS, // the parent DCS we will be offsetting from + offset_matrix) // offset matrix to be applied prior to joint DCS +{ + // + // Check the incoming data + // + Check(control_vector); + #if DEBUG_LEVEL > 0 + if(trigger) + Check_Pointer(trigger); + #endif + // + // Initialize our variables + // + myScalingVector.x = 0.01; + myScalingVector.y = 0.01; + myScalingVector.z = 0.01; + myVelocityVector = *control_vector; + myVelocityChange = *accel_vector; + myGravity = gravity; + myVelocity = 0.0f; + myTranslation.x = 0.0; + myTranslation.y = 0.0; + myTranslation.z = 0.0; + myTrigger = trigger; + // + // Initialize the matrix in this dcs + // + float32* tempMatrix = dpl_GetDCSMatrix( myDCS ); + Check_Pointer ( tempMatrix ); + AffineMatrix tempAffine(True); + tempAffine *= myScalingVector; + tempAffine *= myTranslation; + *(Matrix4x4*)tempMatrix = tempAffine; + dpl_FlushDCS ( myDCS ); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Destructor for ScalingExplosionRenderable +// +ScalingExplosionRenderable::~ScalingExplosionRenderable() +{ + // + // Check our structure before we do anything + // + Check(this); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// TestInstance for the ScalingExplosionRenderable +// +Logical + ScalingExplosionRenderable::TestInstance() const +{ + // + // Call our parent's TestInstance first + // + DCSObjectRenderable::TestInstance(); + // + // Test our own variables + // + Check(&myScalingVector); + Check(&myVelocityVector); + return True; +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Execute for the ScalingExplosionRenderable +// Nothing to execute here so we just pass it down to the next lower level. +// +void + ScalingExplosionRenderable::Execute() +{ + // + // Check our variables + // + Check(this); + if(!myTrigger || *myTrigger != 0) + { + // + // Apply the scaling factor to the object + // + myVelocityVector += myVelocityChange; + myScalingVector += myVelocityVector; + myVelocity += myGravity; + myTranslation.y += myVelocity; + // + // Initialize the matrix in this dcs + // + float32* tempMatrix = dpl_GetDCSMatrix( myDCS ); + Check_Pointer ( tempMatrix ); + AffineMatrix tempAffine(True); + tempAffine *= myScalingVector; + tempAffine *= myTranslation; + *(Matrix4x4*)tempMatrix = tempAffine; + DPL_FLUSH_DCS ( myDCS ); + // + // Call the execute method in our parent + // + ChildOffsetRenderable::Execute(); + } +} +// +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Micro Renderables +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +// From here to the row of === is pretty kludgy stuff to allow dave to prototype +// some explosion stuff. +// I expect to replace most of it within a week with the all-new micro +// renderable system. +// +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Constructor for DependantRenderable +// This is a class of renderable that has other dependant renderables which it +// will execute on command. This is a base for this type of renderable and is +// not ment to be used by itself. +// +DependantRenderable::DependantRenderable( + Entity *entity, // Entity to attach the renderable to + ExecutionType execution_type // How/when to execute the renderable +): + VideoRenderable(entity, execution_type), + dependantRenderableSocket(NULL) +{ + // Check incoming data + // Initialize variables +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Destructor for DependantRenderable +DependantRenderable::~DependantRenderable() +{ + // Check our structure before we do anything + Check(this); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// TestInstance for the DependantRenderable +Logical + DependantRenderable::TestInstance() const +{ + // Call our parent's TestInstance first + VideoRenderable::TestInstance(); + // Now do our checking + Check(&dependantRenderableSocket); + return True; +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// AddDependantRenderable for the DependantRenderable +// This adds an existing renderable as a dependant on this renderable so it +// will be run when this renderable is executed. +void + DependantRenderable::AddDependantRenderable(Component *dependant) +{ + Check(dependant); + dependantRenderableSocket.Add(dependant); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Execute for the DependantRenderable +void + DependantRenderable::Execute() +{ + Component + *dependant; + // + // Make an iterator for our components then execute them all + // +// cout<<"DependantRenderable::Execute()\n"; + SChainIteratorOf dependant_iterator(&dependantRenderableSocket); + while ((dependant = dependant_iterator.ReadAndNext()) != NULL) + { + dependant->Execute(); +// cout<<"dependant->Execute();\n"; + } + + // Call the next lower execute method + #if DEBUG_LEVEL > 0 + VideoRenderable::Execute(); + #endif +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Constructor for ScalarTriggerRenderable +// Whenever "watched_value" changes by "watched_precision" the dependants of this +// renderable will be called. +// +ScalarTriggerRenderable::ScalarTriggerRenderable( + Entity *entity, // Entity to attach the renderable to + ExecutionType execution_type, // How/when to execute the renderable + Scalar *watched_value, // we run dependants when this changes + Scalar watched_precision // watched_value must change by this much +): + DependantRenderable(entity, execution_type) +{ + // + // Check incoming data + // + Check_Pointer(watched_value); + // + // Initialize variables + // + myWatchedValue = watched_value; + myOldWatchedValue = *myWatchedValue; + myPrecision = watched_precision; +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Destructor for ScalarTriggerRenderable +ScalarTriggerRenderable::~ScalarTriggerRenderable() +{ + // Check our structure before we do anything + Check(this); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// TestInstance for the ScalarTriggerRenderable +Logical + ScalarTriggerRenderable::TestInstance() const +{ + // Call our parent's TestInstance first + DependantRenderable::TestInstance(); + // Now do our checking + Check_Pointer(myWatchedValue); + return True; +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Execute for the ScalarTriggerRenderable +void + ScalarTriggerRenderable::Execute() +{ + Check(this); + // + // If there hasn't been a significant enough change, return right now + // + if(Abs((*myWatchedValue - myOldWatchedValue)) < myPrecision) + return; + // + // Update my watcher data, then call my parent to execute the dependants + // + myOldWatchedValue = *myWatchedValue; + DependantRenderable::Execute(); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Constructor for TimeCullRenderable +// This renderable will run all it's dependants at a set frequency based on +// a clock value supplied by the culling system. +// +TimeCullRenderable::TimeCullRenderable( + Entity *entity, // Entity to attach the renderable to + ExecutionType execution_type, // How/when to execute the renderable + Scalar delay_between_runs // Time delay between executions of dependants +): + DependantRenderable(entity, execution_type) +{ + // + // Check incoming data + // + // + // Initialize the renderable, set clock so this will execute the first time + // it's called. + // + delayBetweenRuns = delay_between_runs; + nextRunTime = myRenderer->GetCurrentFrameTime(); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Destructor for TimeCullRenderable +TimeCullRenderable::~TimeCullRenderable() +{ + // Check our structure before we do anything + Check(this); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// TestInstance for the TimeCullRenderable +Logical + TimeCullRenderable::TestInstance() const +{ + // Call our parent's TestInstance first + DependantRenderable::TestInstance(); + // Now do our checking + return True; +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Execute for the TimeCullRenderable +void + TimeCullRenderable::Execute() +{ + Check(this); + // + // If it's time, call my parent to execute the dependants + // + if(nextRunTime <= myRenderer->GetCurrentFrameTime()) + { + nextRunTime = myRenderer->GetCurrentFrameTime() + delayBetweenRuns; + DependantRenderable::Execute(); +// cout<<"Time Cull ran dependants\n"; + } +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +MechCullRenderable::MechCullRenderable( + Entity *entity, // Entity to attach the renderable to + ExecutionType execution_type, // How/when to execute the renderable + Logical always_run_all, // If true, disable culling and run everything + dpl_ZONE *my_zone // Switch off this zone when the mech goes off screen +): + DependantRenderable(entity, execution_type), + legRenderableSocket(NULL) +{ + Check_Pointer(my_zone); + myAlwaysRunAll = always_run_all; + myZone = my_zone; + myMechWasVisible = True; + myNextRootUpdate = myRenderer->GetCurrentFrameTime(); + myNextLegUpdate = myRenderer->GetCurrentFrameTime(); + myRootUpdateRate = 0.0; + myLegUpdateRate = 0.0; +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Destructor for MechCullRenderable +MechCullRenderable::~MechCullRenderable() +{ + // Check our structure before we do anything + Check(this); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// AddDependantLegRenderable for the MechCullRenderable +// This adds an existing renderable as a dependant of the leg chain. +void + MechCullRenderable::AddDependantLegRenderable(Component *dependant) +{ + Check(dependant); + legRenderableSocket.Add(dependant); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// TestInstance for the MechCullRenderable +Logical + MechCullRenderable::TestInstance() const +{ + // Call our parent's TestInstance first + DependantRenderable::TestInstance(); + // Now do our checking + Check_Pointer(myZone); + return True; +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Execute for the MechCullRenderable +void + MechCullRenderable::Execute() +{ + #define CULL_VOLUME_SIZE 11.0 // Assume mech (or other object) fills 10 meter bubble + Scalar + current_time; + Point3D + target_point; + Component + *dependant; + + Check(this); + // + // If we've been told to always run everything, do so. I don't flip the + // profile bit here because I only want to time the actual cull algorithim. + // + if(myAlwaysRunAll) + { + DependantRenderable::Execute(); + SChainIteratorOf dependant_iterator(&legRenderableSocket); + while ((dependant = dependant_iterator.ReadAndNext()) != NULL) + { + dependant->Execute(); + } + myMechWasVisible = True; + return; + } + SET_VIDEO_MECH_CULL_RENDERABLE(); + // + // Continue on to do the full culling process + // + current_time = myRenderer->GetCurrentFrameTime(); + // + // Transform this entities position into eye space + // + target_point = myEntity->localOrigin.linearPosition; + target_point *= (*myRenderer->GetWorldToEyeMatrix()); + Check(this); + // + // See if this is inside the viewing volume + // HACK, viewing volume is hard coded here for now + // negative z goes into the screen + // + // See if it's behind me + // + if((target_point.z - CULL_VOLUME_SIZE) >= 0.0f) + { + if(myMechWasVisible) + { + myMechWasVisible = False; + dpl_SetZoneAllViewsOff (myZone); + dpl_FlushZone (myZone); + // + // Set the root rate to slow and the leg rate to stopped + // + myRootUpdateRate = 1.0f; + myLegUpdateRate = 60.0f; + myNextRootUpdate = current_time + myRootUpdateRate; + myNextLegUpdate = current_time + myLegUpdateRate; + } + } + else + { + // + // Fix up the Z so objects very close behind us (close enough they might + // stick into our view) will be properly culled. + // + if(target_point.z >= 0) + target_point.z = 0.1; + else + target_point.z = Abs(target_point.z); + Check(this); + // + // See if the object's volume is to the left or right of the culling + // volume. + // + if(((Abs(target_point.x)-CULL_VOLUME_SIZE)/target_point.z) > myRenderer->GetViewRatio()) + { + // + // If we were visible before, we're not any more + // + Check(this); + if(myMechWasVisible) + { + myMechWasVisible = False; + dpl_SetZoneAllViewsOff (myZone); + dpl_FlushZone (myZone); + // + // Set the root rate to slow and the leg rate to stopped + // + myRootUpdateRate = 1.0f; + myLegUpdateRate = 60.0f; + myNextRootUpdate = current_time + myRootUpdateRate; + myNextLegUpdate = current_time + myLegUpdateRate; + } + } + else + { + // + // If we were invisible before, we're visible now + // + Check(this); + if(!myMechWasVisible) + { + myMechWasVisible = True; + dpl_SetZoneAllViewsOn (myZone); + dpl_FlushZone (myZone); + // + // Set the various update rates appropriately and force an update + // + myRootUpdateRate = 0.0; + myNextRootUpdate = current_time; + myNextLegUpdate = current_time; + } + // + // Set the leg update rate based on range (really should be a formulia) + // + if(target_point.z < 500.0f) + myLegUpdateRate = 0.0; + else + myLegUpdateRate = 0.25; + } + } + // + // Flip the trace bit here because I don't want to include the cost of the + // dependant renderables. + // + CLEAR_VIDEO_MECH_CULL_RENDERABLE(); + // + // Use the data already calculated to determine which of the dependant + // renderable groups we should execute. + // + if(myNextLegUpdate <= current_time) + { + myNextLegUpdate = current_time + myLegUpdateRate; + // + // Execute all the leg renderables + // + SChainIteratorOf dependant_iterator(&legRenderableSocket); + while ((dependant = dependant_iterator.ReadAndNext()) != NULL) + { + dependant->Execute(); + } + } + if(myNextRootUpdate <= current_time) + { + myNextRootUpdate = current_time + myRootUpdateRate; + DependantRenderable::Execute(); + } + return; +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Constructor for InstanceSwitchRenderable +InstanceSwitchRenderable::InstanceSwitchRenderable( + Entity *entity, // Entity to attach the renderable to + ExecutionType execution_type, // How/when to execute the renderable + dpl_INSTANCE *this_instance, // the instance to control + Logical sense, // instance on when trigger is.... + int *trigger // true if the instance is on, false if off +): + VideoRenderable(entity, execution_type) +{ + // Check incoming data + Check_Pointer(this_instance); + Check_Pointer(trigger); + // Initialize variables + mySense = sense; + myInstance = this_instance; + myTriggerAttribute = trigger; + oldTriggerAttribute = *myTriggerAttribute; + if(mySense == oldTriggerAttribute) + { + dpl_SetInstanceVisibility ( myInstance, 1 ); + } + else + { + dpl_SetInstanceVisibility ( myInstance, 0 ); + } + dpl_FlushInstance ( myInstance ); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Destructor for InstanceSwitchRenderable +InstanceSwitchRenderable::~InstanceSwitchRenderable() +{ + // Check our structure before we do anything + Check(this); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// TestInstance for the InstanceSwitchRenderable +Logical + InstanceSwitchRenderable::TestInstance() const +{ + // Call our parent's TestInstance first + VideoRenderable::TestInstance(); + Check_Pointer(myInstance); + Check_Pointer(myTriggerAttribute); + return True; +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Execute for the InstanceSwitchRenderable +void + InstanceSwitchRenderable::Execute() +{ + // Check our variables + Check(this); + if(*myTriggerAttribute != oldTriggerAttribute) + { + oldTriggerAttribute = *myTriggerAttribute; + if(mySense == oldTriggerAttribute) + { + dpl_SetInstanceVisibility ( myInstance, 1 ); + } + else + { + dpl_SetInstanceVisibility ( myInstance, 0 ); + } + dpl_FlushInstance ( myInstance ); + } + // Call the next lower execute method + #if DEBUG_LEVEL > 0 + VideoRenderable::Execute(); + #endif +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// StateInstanceSwitchRenderable is designed to be a watcher that connects to +// a state dial. Whenever the state dial changes we are called and check to +// see if the trigger state has been entered. If we are in the trigger state +// we will change the instance visibility based on the sense variable passed +// into the constructor. This lets you have an instance on while in a +// certain state or off while in that state and on in others. +// Messages Sent: None +// Messages Received: None +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Constructor for StateInstanceSwitchRenderable +// +StateInstanceSwitchRenderable::StateInstanceSwitchRenderable( + Entity *entity, // Entity to attach the renderable to + ExecutionType execution_type, // How/when to execute the renderable + dpl_INSTANCE *this_instance, // the instance to control + Logical sense, // true to turn on in this state, false for off + StateIndicator *state_dial, // State dial we use to control the on/off + unsigned trigger_state // State that we look for +): + VideoRenderable(entity, execution_type) +{ + // + // Check incoming data for correctness + // + Check_Pointer(this_instance); + Check(state_dial); + // + // Initialize variables + // + myInstance = this_instance; + mySense = sense; + myStateDial = state_dial; + myTriggerState = trigger_state; + // + // Put the instance in the proper state and flush it + // + if(myStateDial->GetState() == myTriggerState) + { + if(mySense == True) + myLastInstanceState = True; + else + myLastInstanceState = False; + } + else + { + if(mySense == True) + myLastInstanceState = False; + else + myLastInstanceState = True; + } + dpl_SetInstanceVisibility ( myInstance, myLastInstanceState ); + dpl_FlushInstance ( myInstance ); + // + // Connect us to the state dial's watcher hook + // + state_dial->AddVideoWatcher(this); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Destructor for StateInstanceSwitchRenderable +StateInstanceSwitchRenderable::~StateInstanceSwitchRenderable() +{ + // Check our structure before we do anything + Check(this); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// TestInstance for the StateInstanceSwitchRenderable +Logical + StateInstanceSwitchRenderable::TestInstance() const +{ + // Call our parent's TestInstance first + VideoRenderable::TestInstance(); + Check_Pointer(myInstance); + Check(myStateDial); + return True; +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Execute for the StateInstanceSwitchRenderable --- called by the state dial +// watcher hook when the state changes. The state dial won't call us if unless +// the state actually changes so there is no need to filter transitions between +// two identical states. +// +void + StateInstanceSwitchRenderable::Execute() +{ + unsigned + new_state; + // + // Check our variables + // + Check(this); + // + // See what state we should go into + // + if(myStateDial->GetState() == myTriggerState) + { + if(mySense == True) + new_state = True; + else + new_state = False; + } + else + { + if(mySense == True) + new_state = False; + else + new_state = True; + } + if(new_state != myLastInstanceState) + { + myLastInstanceState = new_state; + dpl_SetInstanceVisibility ( myInstance, myLastInstanceState ); + dpl_FlushInstance ( myInstance ); + } + // Call the next lower execute method + #if DEBUG_LEVEL > 0 + VideoRenderable::Execute(); + #endif +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Constructor for MakeDCSFall +MakeDCSFall::MakeDCSFall( + Entity *entity, // Entity to attach the renderable to + ExecutionType execution_type, // How/when to execute the renderable + dpl_DCS *this_DCS, // the DCS to control + Scalar gravity, // Gravity in meters/sec squared + int *trigger // true if the instance is on, false if off +): + VideoRenderable(entity, execution_type) +{ + // Check incoming data + Check_Pointer(this_DCS); + Check_Pointer(trigger); + // + // Was an input trigger provided? + // + if(trigger) + { + // Yes, remember a pointer to it and it's state + myTrigger = trigger; + oldMyTrigger = *myTrigger; + } + else + { + // No, point it at a fake trigger that is turned on + fakeTrigger = 1; + myTrigger = &fakeTrigger; + oldMyTrigger = 0; + } + // + // Initialize other variables + // + myDCS = this_DCS; + myDisplacement = Point3D::Identity; + myHalfAcceleration = gravity/2.0f; +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Destructor for MakeDCSFall +MakeDCSFall::~MakeDCSFall() +{ + // Check our structure before we do anything + Check(this); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// TestInstance for the MakeDCSFall +Logical + MakeDCSFall::TestInstance() const +{ + // Call our parent's TestInstance first + VideoRenderable::TestInstance(); + return True; +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Execute for the MakeDCSFall +void + MakeDCSFall::Execute() +{ + // Check our variables + Check(this); + // + // Look for an edge in the trigger input + // + if(*myTrigger != oldMyTrigger) + { + // + // A transition from zero to nonzero resets the DCS position and + // starts us falling again. + // + if(oldMyTrigger == 0) + { + myFallStart = myRenderer->GetCurrentFrameTime(); + myDisplacement = Point3D::Identity; + } + oldMyTrigger = *myTrigger; + } + // + // If the trigger is nonzero and the sweep isn't at 1 yet, update + // the sweep values. + // + if(oldMyTrigger != 0) + { + Scalar + elapsed_time, + current_time; + // Figure displacement do to gravity... 0.5 * a * t^2 + // note that we've already taken a * 0.5 in the constructor + current_time = myRenderer->GetCurrentFrameTime(); + elapsed_time = current_time - myFallStart; + myDisplacement.y = myHalfAcceleration * (elapsed_time * elapsed_time); + float32* tempMatrix = dpl_GetDCSMatrix(myDCS); + Check_Pointer (tempMatrix); + *(Matrix4x4*)tempMatrix = myDisplacement; + DPL_FLUSH_DCS ( myDCS ); + } + // Call the next lower execute method + #if DEBUG_LEVEL > 0 + VideoRenderable::Execute(); + #endif +} +//============================================================================= +#if 0 +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Constructor for SquareWaveRenderable +SquareWaveRenderable::SquareWaveRenderable( + Entity *entity, // Entity to attach the renderable to + ExecutionType execution_type, // How/when to execute the renderable + Scalar time_false, // time to spend in zero state + Scalar time_true, // time to spend in one state + int *trigger // starts square wave when it goes to 1 + int start_state // state we start in + int cycles // number of transitions before we stop +): + VideoRenderable(entity, execution_type) +{ + if(trigger) + { + // Yes, remember a pointer to it and it's state + myTriggerInput = trigger; + oldTriggerInput = *myTrigger; + } + else + { + // No, point it at a fake trigger that is turned on + fakeTrigger = 1; + myTriggerInput = &fakeTrigger; + oldTriggerInput = 0; + } + // Initialize variables + myTriggerInput = trigger; + oldTriggerInput = 0; + myNextStateChange = 0; + myTimeFalse = time_false; + myTimeTrue = time_true; + myTriggerAttribute = start_state; + myCyclesLeft = cycles; +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Destructor for SquareWaveRenderable +SquareWaveRenderable::~SquareWaveRenderable() +{ + // Check our structure before we do anything + Check(this); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// TestInstance for the SquareWaveRenderable +Logical + SquareWaveRenderable::TestInstance() const +{ + // Call our parent's TestInstance first + VideoRenderable::TestInstance(); + Verify(myTriggerTime > 0.0f); + return True; +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Execute for the SquareWaveRenderable +void + SquareWaveRenderable::Execute() +{ + Scalar + current_time; + // Check our variables + Check(this); + + if(*myTriggerInput != oldTriggerInput && oldTriggerInput == 0) + { + if(myStartState) + { + myNextStateChange = myRenderer->GetCurrentFrameTime(); + myNextStateChange += myTimeTrue; + myTriggerAttribute = True; + } + else + { + myNextStateChange = myRenderer->GetCurrentFrameTime(); + myNextStateChange += myTimeFalse; + myTriggerAttribute = False; + } + myCyclesLeft = myCycles; + } + + if(*myTriggerInput == 1 && myCyclesLeft > 0) + { + current_time = myRenderer->GetCurrentFrameTime(); + if(current_time >= myNextStateChange) + { + myCyclesLeft--; + myTriggerAttribute = (!myTriggerAttribute); + if(myTriggerAttribute) + { + myNextStateChange = myRenderer->GetCurrentFrameTime(); + myNextStateChange += myTimeTrue; + } + else + { + myNextStateChange = myRenderer->GetCurrentFrameTime(); + myNextStateChange += myTimeFalse; + } + } + } + // Call the next lower execute method + #if DEBUG_LEVEL > 0 + VideoRenderable::Execute(); + #endif +} +#endif +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Constructor for OneShotDelayRenderable +// This renderable delays for a fixed amount after it's creation, then turns on +// a trigger attribute. It is used for the triggering of other renderables a +// fixed time after an object is created. +OneShotDelayRenderable::OneShotDelayRenderable( + Entity *entity, // Entity to attach the renderable to + ExecutionType execution_type, // How/when to execute the renderable + Scalar delay_time, // How long to wait before raising the trigger + Scalar duration_time // How long trigger is up (0.0 == stay up) +): + VideoRenderable(entity, execution_type) +{ + // Check incoming data + Verify(delay_time >= 0.0f); + Verify(duration_time >= 0.0f); + // Initialize variables + myState = WaitingForTriggerTime; + myEndTimeFlag = !Small_Enough(duration_time); + myTriggerTime = myRenderer->GetCurrentFrameTime(); + myTriggerTime += delay_time; + myTriggerEndTime = myTriggerTime + duration_time; + myTriggerAttribute = NULL; +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Destructor for OneShotDelayRenderable +OneShotDelayRenderable::~OneShotDelayRenderable() +{ + // Check our structure before we do anything + Check(this); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// TestInstance for the OneShotDelayRenderable +Logical + OneShotDelayRenderable::TestInstance() const +{ + // Call our parent's TestInstance first + VideoRenderable::TestInstance(); + Verify(myTriggerTime > 0.0f); + Verify(myTriggerEndTime >= myTriggerTime); + return True; +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Execute for the OneShotDelayRenderable +void + OneShotDelayRenderable::Execute() +{ + Scalar + current_time; + // Check our variables + Check(this); + if (myState != WaitingForEternity) + { + current_time = myRenderer->GetCurrentFrameTime(); + // putting this here insures that the one-time will always spend + // at least one frame at True before resetting. + if (myState == WaitingForTriggerTime) + { + if (current_time > myTriggerTime) + { + myTriggerAttribute = 1; + if (myEndTimeFlag) + { + myState = WaitingForTriggerEndTime; + } + else + { + myState = WaitingForEternity; + myRenderer->RemoveDynamicRenderable(this); + } + } + } + else if (myState == WaitingForTriggerEndTime) + { + if (current_time > myTriggerEndTime) + { + myTriggerAttribute = NULL; + myState = WaitingForEternity; + myRenderer->RemoveDynamicRenderable(this); + } + } + else + { + Dump(myState); + Fail("invalid myState"); + } + } + // Call the next lower execute method + #if DEBUG_LEVEL > 0 + VideoRenderable::Execute(); + #endif +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Constructor for SweepRenderable +// When triggered this renderable sweeps it's output attribute from 0.0 to 1.0 +// over a preset time interval. Used for controling morphs. +SweepRenderable::SweepRenderable( + Entity *entity, // Entity to attach the renderable to + ExecutionType execution_type, // How/when to execute the renderable + Scalar delay_time, // How long to take to sweep from 0 to 1 + int cycles, // number of times to cycle before stopping + int *trigger, // When it goes from 0 to 1 it resets the sweep generator + Scalar start_value, // Initial value of sweep (default = 0.0f) + Scalar end_value, // Final value of sweep (default = 1.0f) + SweepFunction sweep_function // Function applied to sweep +): + VideoRenderable(entity, execution_type) +{ + // + // Verify incoming data + // + Verify(delay_time >= 0.0f); + Verify(start_value <= end_value); + if (sweep_function == Y_SQR_X) + { Verify(start_value >= 0.0f); } + // + // Was an input trigger provided? + // + if(trigger) + { + // Yes, remember a pointer to it and it's state + myTrigger = trigger; + oldMyTrigger = *myTrigger; + } + else + { + // No, point it at a fake trigger that is turned on + fakeTrigger = 1; + myTrigger = &fakeTrigger; + oldMyTrigger = 0; + } + // + // Initialize other variables + // + mySweepFunction = sweep_function; + myStartValue = start_value; + myEndValue = end_value; + myCycleCount = cycles; + mySweepTime = delay_time; + mySweepAttribute = myStartValue; +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Destructor for SweepRenderable +SweepRenderable::~SweepRenderable() +{ + // Check our structure before we do anything + Check(this); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// TestInstance for the SweepRenderable +Logical + SweepRenderable::TestInstance() const +{ + // Call our parent's TestInstance first + VideoRenderable::TestInstance(); + Verify(mySweepTime >= 0.0f) + Verify((mySweepAttribute >= myStartValue) && (mySweepAttribute <= myEndValue)); + return True; +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Execute for the SweepRenderable +void + SweepRenderable::Execute() +{ + // Check our variables + Check(this); + // + // Look for an edge in the trigger input + // + if(*myTrigger != oldMyTrigger) + { + // + // A transition from zero to nonzero resets all the sweep parameters + // and starts the process over again. + // + if(oldMyTrigger == 0) + { + // A transition from zero to nonzero causes a reset of sweep timers + // and starts the sweep running. + mySweepStart = myRenderer->GetCurrentFrameTime(); + mySweepAttribute = myStartValue; + myCyclesLeft = myCycleCount; + } + oldMyTrigger = *myTrigger; + } + // + // If the trigger is nonzero and the sweep isn't at 1 yet, update + // the sweep values. + // + if(oldMyTrigger != 0 && myCyclesLeft > 0) + { + Scalar + current_time; + // putting this here insures that the sweep will always spend one frame at + // {EndValue} before resetting. + current_time = myRenderer->GetCurrentFrameTime(); + if(mySweepAttribute >= myEndValue) + { + myCyclesLeft--; + if(myCyclesLeft > 0) + { mySweepStart = current_time; } + } + mySweepAttribute = myStartValue + (myEndValue - myStartValue) * + (current_time - mySweepStart) / mySweepTime; + if (mySweepFunction == Y_SQR_X) + { + mySweepAttribute = Sqrt(mySweepAttribute); + } +// else if (mySweepFunction == Y_ ) +// { +// } + if(mySweepAttribute > myEndValue) + { mySweepAttribute = myEndValue; } + } + // Call the next lower execute method + #if DEBUG_LEVEL > 0 + VideoRenderable::Execute(); + #endif +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Constructor for PullFogRenderable +// This routine handles swapping the fog settings in and out when you +// turn headlight systems on and off. +// +PullFogRenderable::PullFogRenderable( + Entity *entity, // Entity to attach the renderable to + ExecutionType execution_type, // How/when to execute the renderable + Logical *light_1, + Logical *light_2 // address containing the trigger +): + VideoRenderable(entity, execution_type) +{ + // + // Check the inbound data, note that the parent DCS could be a null pointer + // + Check_Pointer(light_1); + myLight1 = light_1; + myOldLight1 = !(*myLight1); + if(light_2 == NULL) + { + myLight2 = myLight1; + } + else + { + Check_Pointer(light_2); + myLight2 = light_2; + } + myOldLight2 = !(*myLight2); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Destructor for PullFogRenderable +// +PullFogRenderable::~PullFogRenderable() +{ + Check(this); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// TestInstance for the PullFogRenderable +// +Logical + PullFogRenderable::TestInstance() const +{ + VideoRenderable::TestInstance(); + Check_Pointer(myLight1); + Check_Pointer(myLight2); + return True; +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Execute method for PullFogRenderable. +// +void + PullFogRenderable::Execute() +{ + Check(this); + if(*myLight1 != myOldLight1 || *myLight2 != myOldLight2) + { + myOldLight1 = *myLight1; + myOldLight2 = *myLight2; + if(myOldLight1 || myOldLight2) + { + myRenderer->SetFogStyle(DPLRenderer::searchLightOnFogStyle); + } + else + { + myRenderer->SetFogStyle(DPLRenderer::searchLightOffFogStyle); + } + } + // Call the next lower execute method + #if DEBUG_LEVEL > 0 + VideoRenderable::Execute(); + #endif +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Constructor for DPLEffectRenderable +// This routine handles the creation of a DPL special effect whenever the +// trigger attribute changes. This is an edge triggered renderable and will +// generate an effect on ANY form of state change. The only way to effect the +// size and speed of the effect is by way of the DPL effect tables. +// +DPLEffectRenderable::DPLEffectRenderable( + Entity *entity, // Entity to attach the renderable to + ExecutionType execution_type, // How/when to execute the renderable + int *trigger, // address containing the trigger + int effect_type, // DPL effect number to trigger + dpl_DCS *effect_DCS, // DCS the effect is relative to (may be NULL) + Point3D *offset_point // Offset (or world coordinants if DCS is NULL) + +): + VideoRenderable(entity, execution_type) +{ + // + // Check the inbound data, note that the parent DCS could be a null pointer + // + Check_Pointer(trigger); + Verify(effect_type >= 0); + #if DEBUG_LEVEL > 0 + if(effect_DCS != NULL) + Check_Pointer(effect_DCS); + #endif + Check(offset_point); + // + // Initialze the local variables + // + myTrigger = trigger; + oldMyTrigger = *myTrigger; + myEffectType = effect_type; + myEffectDCS = effect_DCS; + myEffectOffset = *offset_point; +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Destructor for DPLEffectRenderable +// +DPLEffectRenderable::~DPLEffectRenderable() +{ + Check(this); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// TestInstance for the DPLEffectRenderable +// +Logical + DPLEffectRenderable::TestInstance() const +{ + VideoRenderable::TestInstance(); + Check_Pointer(myTrigger); + Verify(myEffectType >= 0); + #if DEBUG_LEVEL > 0 + if(myEffectDCS != NULL) + Check_Pointer(myEffectDCS); + #endif + Check(&myEffectOffset); + return True; +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Execute method for DPLEffectRenderable. +// +void + DPLEffectRenderable::Execute() +{ + Check_Pointer(myTrigger); + if(*myTrigger != oldMyTrigger) + { + dpl_EXPLOSION_EFFECT_INFO my_explosion; + oldMyTrigger = *myTrigger; + my_explosion.type = myEffectType; + my_explosion.x = myEffectOffset.x; + my_explosion.y = myEffectOffset.y; + my_explosion.z = myEffectOffset.z; + dpl_Effect ( dpl_effect_type_explosion, myEffectDCS, &my_explosion ); + } + // Call the next lower execute method + #if DEBUG_LEVEL > 0 + VideoRenderable::Execute(); + #endif +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Constructor for DPLPSFXRenderable +// This routine triggers a pfx whenever the trigger attribute goes true. +// since pfx effects have built-in durations we don't attempt to do any repeats +// or other controls here, we just start one and kill it if the entity dies. +// +DPLPSFXRenderable::DPLPSFXRenderable( + Entity *entity, // Entity to attach the renderable to + ExecutionType execution_type, // How/when to execute the renderable + int *trigger, // address containing the trigger + dpl_PARTICLESTART_EFFECT_INFO *psfx_definition, // name of file with the PFX description in it + dpl_DCS *effect_DCS, // DCS the effect is relative to (may be NULL) + Point3D *offset_point // Offset (or world coordinants if DCS is NULL) + +): + VideoRenderable(entity, execution_type) +{ + // + // Check the inbound data, note that the parent DCS could be a null pointer + // + Check_Pointer(trigger); + #if DEBUG_LEVEL > 0 + if(effect_DCS != NULL) + Check_Pointer(effect_DCS); + #endif + Check(offset_point); + if(!psfx_definition) + { + Fail("A pfx was not defined in the .ini file\n"); + } + // + // Initialze the local variables + // + myTrigger = trigger; + myOldTrigger = *myTrigger; + myEffectDCS = effect_DCS; + myEffectOffset = *offset_point; + myPSFXInfo = *psfx_definition; +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Destructor for DPLPSFXRenderable +// +DPLPSFXRenderable::~DPLPSFXRenderable() +{ + // !!!!HACK Note that because the effect id changes every time we start one, + // the destructor will only stop the last PFX played. We should probably + // be keeping track of all the ID's we've sent down to make sure everything + // attached to the DCS gets properly killed. + Check(this); + dpl_Effect ( dpl_effect_type_particlestop, NULL, &myPSFXInfo ); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// TestInstance for the DPLPSFXRenderable +// +Logical + DPLPSFXRenderable::TestInstance() const +{ + VideoRenderable::TestInstance(); + Check_Pointer(myTrigger); + #if DEBUG_LEVEL > 0 + if(myEffectDCS != NULL) + Check_Pointer(myEffectDCS); + #endif + Check(&myEffectOffset); + return True; +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Execute method for DPLPSFXRenderable. +// +void + DPLPSFXRenderable::Execute() +{ + Check_Pointer(myTrigger); + if(*myTrigger != myOldTrigger) + { + myOldTrigger = *myTrigger; + if(myOldTrigger == True) + { + // we put our id into the lower 16 bits because (at least) the upper 8 bits are flags + L4Application *l4_application = Cast_Object(L4Application*, application); + Check(l4_application); + myPSFXInfo.identifier = + (myPSFXInfo.identifier & 0xffff0000) | + l4_application->GetVideoRenderer()->GetUniqueID(); + dpl_Effect ( dpl_effect_type_particlestart, myEffectDCS, &myPSFXInfo ); + } + } + // Call the next lower execute method + #if DEBUG_LEVEL > 0 + VideoRenderable::Execute(); + #endif +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Constructor for DPLPSFXStateRenderable +// This routine triggers a pfx whenever a state dial transitions to a designated +// state. +// NOTE this currently does NOT trigger if the state dial is in the trigger state +// when this renderable is created. +// +DPLPSFXStateRenderable::DPLPSFXStateRenderable( + Entity *entity, // Entity to attach the renderable to + ExecutionType execution_type, // How/when to execute the renderable + StateIndicator *effect_trigger, // Trigger effect when this state changes + unsigned my_trigger, // The state to edge trigger on + dpl_PARTICLESTART_EFFECT_INFO *psfx_definition, // name of file with the PFX description in it + dpl_DCS *effect_DCS, // DCS the effect is relative to (may be NULL) + Point3D *offset_point // Offset (or world coordinants if DCS is NULL) +): + VideoRenderable(entity, execution_type) +{ + // + // Check the inbound data, note that the parent DCS could be a null pointer + // + Check(effect_trigger); + Check_Pointer(psfx_definition); + #if DEBUG_LEVEL > 0 + if(effect_DCS != NULL) + Check_Pointer(effect_DCS); + #endif + Check(offset_point); + if(!psfx_definition) + { + Fail("A pfx was not defined in the .ini file\n"); + } + // + // Initialze the local variables + // + myTriggerState = my_trigger; + myStateDial = effect_trigger; + myEffectDCS = effect_DCS; + myEffectOffset = *offset_point; + myPSFXInfo = *psfx_definition; + // + // Add us to the state's watcher socket + // + effect_trigger->AddVideoWatcher(this); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Destructor for DPLPSFXStateRenderable +// +DPLPSFXStateRenderable::~DPLPSFXStateRenderable() +{ + // !!!!HACK Note that because the effect id changes every time we start one, + // the destructor will only stop the last PFX played. We should probably + // be keeping track of all the ID's we've sent down to make sure everything + // attached to the DCS gets properly killed. + Check(this); + dpl_Effect ( dpl_effect_type_particlestop, NULL, &myPSFXInfo ); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// TestInstance for the DPLPSFXStateRenderable +// +Logical + DPLPSFXStateRenderable::TestInstance() const +{ + VideoRenderable::TestInstance(); + #if DEBUG_LEVEL > 0 + if(myEffectDCS != NULL) + Check_Pointer(myEffectDCS); + #endif + Check(&myEffectOffset); + Check(myStateDial); + return True; +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Execute method for DPLPSFXStateRenderable. +// Note that this will get called by the state dial, not by the renderer +// +void + DPLPSFXStateRenderable::Execute() +{ + Check(myStateDial); + // + // If the state dial is in the right state, trigger + // + if(myStateDial->GetState() == myTriggerState) + { + // we put our id into the lower 16 bits because (at least) the upper 8 bits are flags + L4Application *l4_application = Cast_Object(L4Application*, application); + Check(l4_application); + myPSFXInfo.identifier = + (myPSFXInfo.identifier & 0xffff0000) | + l4_application->GetVideoRenderer()->GetUniqueID(); + dpl_Effect ( dpl_effect_type_particlestart, myEffectDCS, &myPSFXInfo ); + } + // + // Call the next lower execute method + // + #if DEBUG_LEVEL > 0 + VideoRenderable::Execute(); + #endif +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Constructor for DPLMaterialRenderable +// This renderable creates a DPL Material structure and encapsulates it so +// it will be properly deleted when the object it's part of gets deleted. +DPLMaterialRenderable::DPLMaterialRenderable( + Entity *entity, // Entity to attach the renderable to + ExecutionType execution_type, // How/when to execute the renderable + Scalar ambient_red, // Material's ambient component + Scalar ambient_green, + Scalar ambient_blue, + Scalar emissive_red, // Material's emissive component + Scalar emissive_green, + Scalar emissive_blue, + Scalar diffuse_red, // Material's diffuse component + Scalar diffuse_green, + Scalar diffuse_blue, + Scalar specular_red, // Material's specular component + Scalar specular_green, + Scalar specular_blue, + Scalar specular_shininess, + Scalar opacity_red, // Material's opacity + Scalar opacity_green, + Scalar opacity_blue, + dpl_TEXTURE *texture, // Material's texture pointer + Scalar z_dither, // Material's Z dither value + int fog_immune // Material's Fog Imunity value +): + VideoRenderable(entity, execution_type) +{ + // Check input pointers + #if DEBUG_LEVEL > 0 + if(texture) + Check_Pointer(texture); + #endif + // Create and initialize the DPL material + myMaterial = dpl_NewMaterial(); + Check_Pointer(myMaterial); + // + // Materials should be static most of the time, if they are dynamic it means someone + // inheriting from us is going to try and modify the material. So if we are dynamic + // we leave the rest of this stuff for that routine to do + // + if(execution_type == DPLMaterialRenderable::Static) + { + dpl_SetMaterialAmbient (myMaterial, ambient_red, ambient_green, ambient_blue); + dpl_SetMaterialEmissive (myMaterial, emissive_red, emissive_green, emissive_blue); + dpl_SetMaterialDiffuse (myMaterial, diffuse_red, diffuse_green, diffuse_blue); + dpl_SetMaterialSpecular (myMaterial, specular_red, specular_green, specular_blue, specular_shininess); + dpl_SetMaterialOpacity (myMaterial, opacity_red, opacity_green, opacity_blue); + if(texture) + dpl_SetMaterialTexture(myMaterial, texture); + if(z_dither) + dpl_SetMaterialDitherZ(myMaterial, z_dither); + if(fog_immune) + dpl_SetMaterialFogImmunity(myMaterial,fog_immune); + dpl_FlushMaterial(myMaterial); + } +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Destructor for DPLMaterialRenderable +DPLMaterialRenderable::~DPLMaterialRenderable() +{ + // Check our structure before we do anything + Check(this); + dpl_DeleteMaterial(myMaterial); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// TestInstance for the DPLMaterialRenderable +Logical + DPLMaterialRenderable::TestInstance() const +{ + // Call our parent's TestInstance first + VideoRenderable::TestInstance(); + Check_Pointer(myMaterial); + return True; +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Execute for the DPLMaterialRenderable +void + DPLMaterialRenderable::Execute() +{ + Check(this); + // Call the next lower execute method + #if DEBUG_LEVEL > 0 + VideoRenderable::Execute(); + #endif +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Constructor for MorphMaterialRenderable +// This renderable takes two material specifications and loads up a third +// material with a morph between the first two. +MorphMaterialRenderable::MorphMaterialRenderable( + Entity *entity, // Entity to attach the renderable to + ExecutionType execution_type, // How/when to execute the renderable + Scalar ambient_red_1, // Material's ambient component + Scalar ambient_green_1, + Scalar ambient_blue_1, + Scalar emissive_red_1, // Material's emissive component + Scalar emissive_green_1, + Scalar emissive_blue_1, + Scalar diffuse_red_1, // Material's diffuse component + Scalar diffuse_green_1, + Scalar diffuse_blue_1, + Scalar specular_red_1, // Material's specular component + Scalar specular_green_1, + Scalar specular_blue_1, + Scalar specular_shininess_1, + Scalar opacity_red_1, // Material's opacity + Scalar opacity_green_1, + Scalar opacity_blue_1, + dpl_TEXTURE *texture_1, // Material's texture pointer + Scalar z_dither_1, // Material's Z dither value + int fog_immune_1, // Material's Fog Imunity value + Scalar ambient_red_2, // Material's ambient component + Scalar ambient_green_2, + Scalar ambient_blue_2, + Scalar emissive_red_2, // Material's emissive component + Scalar emissive_green_2, + Scalar emissive_blue_2, + Scalar diffuse_red_2, // Material's diffuse component + Scalar diffuse_green_2, + Scalar diffuse_blue_2, + Scalar specular_red_2, // Material's specular component + Scalar specular_green_2, + Scalar specular_blue_2, + Scalar specular_shininess_2, + Scalar opacity_red_2, // Material's opacity + Scalar opacity_green_2, + Scalar opacity_blue_2, + Scalar z_dither_2, // Material's Z dither value + Scalar *morph_control +): +DPLMaterialRenderable( + entity, // Entity to attach the renderable to + execution_type, + ambient_red_1, ambient_green_1, ambient_blue_1, // Material's ambient component + emissive_red_1, emissive_green_1, emissive_blue_1, // Material's emissive component + diffuse_red_1, diffuse_green_1, diffuse_blue_1, // Material's diffuse component + specular_red_1, specular_green_1, specular_blue_1, specular_shininess_1, // Material's specular component + opacity_red_1, opacity_green_1, opacity_blue_1, // Material's opacity + texture_1, // Material's texture pointer + z_dither_1, // Material's Z dither value + fog_immune_1) // Material's Fog Imunity value +{ + Scalar + Weight1, + Weight2; + // + // Remember the parameters of the two materials we are morphing between + // + myAmbientRed1 = ambient_red_1; // Material's ambient component + myAmbientGreen1 = ambient_green_1; + myAmbientBlue1 = ambient_blue_1; + myEmissiveRed1 = emissive_red_1; // Material's emissive component + myEmissiveGreen1 = emissive_green_1; + myEmissiveBlue1 = emissive_blue_1; + myDiffuseRed1 = diffuse_red_1; // Material's diffuse component + myDiffuseGreen1 = diffuse_green_1; + myDiffuseBlue1 = diffuse_blue_1; + mySpecularRed1 = specular_red_1; // Material's specular component + mySpecularGreen1 = specular_green_1; + mySpecularBlue1 = specular_blue_1; + mySpecularShininess1 = specular_shininess_1; + myOpacityRed1 = opacity_red_1; // Material's opacity + myOpacityGreen1 = opacity_green_1; + myOpacityBlue1 = opacity_blue_1; + myTexture1 = texture_1; // Material's texture pointer + myZDither1 = z_dither_1; // Material's Z dither value + myFogImmune1 = fog_immune_1; // Material's Fog Imunity value + myAmbientRed2 = ambient_red_2; // Material's ambient component + myAmbientGreen2 = ambient_green_2; + myAmbientBlue2 = ambient_blue_2; + myEmissiveRed2 = emissive_red_2; // Material's emissive component + myEmissiveGreen2 = emissive_green_2; + myEmissiveBlue2 = emissive_blue_2; + myDiffuseRed2 = diffuse_red_2; // Material's diffuse component + myDiffuseGreen2 = diffuse_green_2; + myDiffuseBlue2 = diffuse_blue_2; + mySpecularRed2 = specular_red_2; // Material's specular component + mySpecularGreen2 = specular_green_2; + mySpecularBlue2 = specular_blue_2; + mySpecularShininess2 = specular_shininess_2; + myOpacityRed2 = opacity_red_2; // Material's opacity + myOpacityGreen2 = opacity_green_2; + myOpacityBlue2 = opacity_blue_2; + myZDither2 = z_dither_2; // Material's Z dither value + myMorphControl = morph_control; + oldMorphControl = *morph_control; + // + // Calculate the target material + // + Weight1 = 1.0 - oldMorphControl; + Weight2 = oldMorphControl; + myAmbientRed = (myAmbientRed1*Weight1) + (myAmbientRed2*Weight2); + myAmbientGreen = (myAmbientGreen1*Weight1) + (myAmbientGreen2*Weight2); + myAmbientBlue = (myAmbientBlue1*Weight1) + (myAmbientBlue2*Weight2); + myEmissiveRed = (myEmissiveRed1*Weight1) + (myEmissiveRed2*Weight2); + myEmissiveGreen = (myEmissiveGreen1*Weight1) + (myEmissiveGreen2*Weight2); + myEmissiveBlue = (myEmissiveBlue1*Weight1) + (myEmissiveBlue2*Weight2); + myDiffuseRed = (myDiffuseRed1*Weight1) + (myDiffuseRed2*Weight2); + myDiffuseGreen = (myDiffuseGreen1*Weight1) + (myDiffuseGreen2*Weight2); + myDiffuseBlue = (myDiffuseBlue1*Weight1) + (myDiffuseBlue2*Weight2); + mySpecularRed = (mySpecularRed1*Weight1) + (mySpecularRed2*Weight2); + mySpecularGreen = (mySpecularGreen1*Weight1) + (mySpecularGreen2*Weight2); + mySpecularBlue = (mySpecularBlue1*Weight1) + (mySpecularBlue2*Weight2); + mySpecularShininess = (mySpecularShininess1*Weight1) + (mySpecularShininess2*Weight2); + myOpacityRed = (myOpacityRed1*Weight1) + (myOpacityRed2*Weight2); + myOpacityGreen = (myOpacityGreen1*Weight1) + (myOpacityGreen2*Weight2); + myOpacityBlue = (myOpacityBlue1*Weight1) + (myOpacityBlue2*Weight2); + myZDither = (myZDither1*Weight1) + (myZDither2*Weight2); + // + // Initialize the target material + // + dpl_SetMaterialAmbient (myMaterial, myAmbientRed, myAmbientGreen, myAmbientBlue); + dpl_SetMaterialEmissive (myMaterial, myEmissiveRed, myEmissiveGreen, myEmissiveBlue); + dpl_SetMaterialDiffuse (myMaterial, myDiffuseRed, myDiffuseGreen, myDiffuseBlue); + dpl_SetMaterialSpecular (myMaterial, mySpecularRed, mySpecularGreen, mySpecularBlue, mySpecularShininess); + dpl_SetMaterialOpacity (myMaterial, myOpacityRed, myOpacityGreen, myOpacityBlue); + if(myTexture1) + dpl_SetMaterialTexture(myMaterial, myTexture1); + if(myZDither) + dpl_SetMaterialDitherZ(myMaterial,myZDither); + if(myFogImmune1) + dpl_SetMaterialFogImmunity(myMaterial,myFogImmune1); + dpl_FlushMaterial(myMaterial); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Destructor for MorphMaterialRenderable +MorphMaterialRenderable::~MorphMaterialRenderable() +{ + // Check our structure before we do anything + Check(this); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// TestInstance for the MorphMaterialRenderable +Logical + MorphMaterialRenderable::TestInstance() const +{ + // Call our parent's TestInstance first + VideoRenderable::TestInstance(); + return True; +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Execute for the MorphMaterialRenderable +void + MorphMaterialRenderable::Execute() +{ + Scalar + Weight1, + Weight2; + + Check(this); + // See if the morph control variable has changed + if(oldMorphControl != *myMorphControl) + { + // + // Re-calculate the target material + // + oldMorphControl = *myMorphControl; + Weight1 = 1.0 - oldMorphControl; + Weight2 = oldMorphControl; + myAmbientRed = (myAmbientRed1*Weight1) + (myAmbientRed2*Weight2); + myAmbientGreen = (myAmbientGreen1*Weight1) + (myAmbientGreen2*Weight2); + myAmbientBlue = (myAmbientBlue1*Weight1) + (myAmbientBlue2*Weight2); + myEmissiveRed = (myEmissiveRed1*Weight1) + (myEmissiveRed2*Weight2); + myEmissiveGreen = (myEmissiveGreen1*Weight1) + (myEmissiveGreen2*Weight2); + myEmissiveBlue = (myEmissiveBlue1*Weight1) + (myEmissiveBlue2*Weight2); + myDiffuseRed = (myDiffuseRed1*Weight1) + (myDiffuseRed2*Weight2); + myDiffuseGreen = (myDiffuseGreen1*Weight1) + (myDiffuseGreen2*Weight2); + myDiffuseBlue = (myDiffuseBlue1*Weight1) + (myDiffuseBlue2*Weight2); + mySpecularRed = (mySpecularRed1*Weight1) + (mySpecularRed2*Weight2); + mySpecularGreen = (mySpecularGreen1*Weight1) + (mySpecularGreen2*Weight2); + mySpecularBlue = (mySpecularBlue1*Weight1) + (mySpecularBlue2*Weight2); + mySpecularShininess = (mySpecularShininess1*Weight1) + (mySpecularShininess2*Weight2); + myOpacityRed = (myOpacityRed1*Weight1) + (myOpacityRed2*Weight2); + myOpacityGreen = (myOpacityGreen1*Weight1) + (myOpacityGreen2*Weight2); + myOpacityBlue = (myOpacityBlue1*Weight1) + (myOpacityBlue2*Weight2); + myZDither = (myZDither1*Weight1) + (myZDither2*Weight2); + // + // Reset the target material and flush it + // Note we don't try to morph texture or fog immune + // + dpl_SetMaterialAmbient (myMaterial, myAmbientRed, myAmbientGreen, myAmbientBlue); + dpl_SetMaterialEmissive (myMaterial, myEmissiveRed, myEmissiveGreen, myEmissiveBlue); + dpl_SetMaterialDiffuse (myMaterial, myDiffuseRed, myDiffuseGreen, myDiffuseBlue); + dpl_SetMaterialSpecular (myMaterial, mySpecularRed, mySpecularGreen, mySpecularBlue, mySpecularShininess); + dpl_SetMaterialOpacity (myMaterial, myOpacityRed, myOpacityGreen, myOpacityBlue); + if(myZDither) + dpl_SetMaterialDitherZ(myMaterial,myZDither); + dpl_FlushMaterial(myMaterial); + } + // Call the next lower execute method + #if DEBUG_LEVEL > 0 + VideoRenderable::Execute(); + #endif +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Constructor for DPLDamageMaterialRenderable +// This renderable handles modifying a material in response to damage. We +// get the pointer to an existing DPL material on startup and we get out +// color and texture settings from that +DPLDamageMaterialRenderable::DPLDamageMaterialRenderable( + Entity *entity, // Entity to attach the renderable to + ExecutionType execution_type, // How/when to execute the renderable + dpl_MATERIAL *damage_material, // The material we want to control + Scalar *damage_attribute, // The attribute containing the current damage level + Scalar damage_percent // Degradation factor to make damaged material +): + VideoRenderable(entity, execution_type) +{ + Scalar + Weight1, + Weight2; + + Check_Pointer(damage_material); + Check_Pointer(damage_attribute); + Verify(damage_percent >= 0.0f && damage_percent <= 1.0f); + // + // Grab the material's components, remember them and figure the target colors + // + myMaterial = damage_material; + myDamageAttribute = damage_attribute; + oldDamageAttribute = *myDamageAttribute; + dpl_GetMaterialAmbient (myMaterial, &myAmbientRed1, &myAmbientGreen1, &myAmbientBlue1); + dpl_GetMaterialEmissive (myMaterial, &myEmissiveRed1, &myEmissiveGreen1, &myEmissiveBlue1); + dpl_GetMaterialDiffuse (myMaterial, &myDiffuseRed1, &myDiffuseGreen1, &myDiffuseBlue1); + dpl_GetMaterialSpecular (myMaterial, &mySpecularRed1, &mySpecularGreen1, &mySpecularBlue1, &mySpecularShininess1); + dpl_GetMaterialOpacity (myMaterial, &myOpacityRed1, &myOpacityGreen1, &myOpacityBlue1); + myAmbientRed2 = damage_percent * myAmbientRed1; // Material's ambient component + myAmbientGreen2 = damage_percent * myAmbientGreen1; + myAmbientBlue2 = damage_percent * myAmbientBlue1; + myEmissiveRed2 = damage_percent * myEmissiveRed1; // Material's emissive component + myEmissiveGreen2 = damage_percent * myEmissiveGreen1; + myEmissiveBlue2 = damage_percent * myEmissiveBlue1; + myDiffuseRed2 = damage_percent * myDiffuseRed1; // Material's diffuse component + myDiffuseGreen2 = damage_percent * myDiffuseGreen1; + myDiffuseBlue2 = damage_percent * myDiffuseBlue1; + mySpecularRed2 = damage_percent * mySpecularRed1; // Material's specular component + mySpecularGreen2 = damage_percent * mySpecularGreen1; + mySpecularBlue2 = damage_percent * mySpecularBlue1; + mySpecularShininess2 = damage_percent * mySpecularShininess1; + myOpacityRed2 = damage_percent * myOpacityRed1; // Material's opacity + myOpacityGreen2 = damage_percent * myOpacityGreen1; + myOpacityBlue2 = damage_percent * myOpacityBlue1; + // + // Calculate the target material using the current level of damage + // + Weight1 = 1.0f - oldDamageAttribute; + Weight2 = oldDamageAttribute; + myAmbientRed = (myAmbientRed1*Weight1) + (myAmbientRed2*Weight2); + myAmbientGreen = (myAmbientGreen1*Weight1) + (myAmbientGreen2*Weight2); + myAmbientBlue = (myAmbientBlue1*Weight1) + (myAmbientBlue2*Weight2); + myEmissiveRed = (myEmissiveRed1*Weight1) + (myEmissiveRed2*Weight2); + myEmissiveGreen = (myEmissiveGreen1*Weight1) + (myEmissiveGreen2*Weight2); + myEmissiveBlue = (myEmissiveBlue1*Weight1) + (myEmissiveBlue2*Weight2); + myDiffuseRed = (myDiffuseRed1*Weight1) + (myDiffuseRed2*Weight2); + myDiffuseGreen = (myDiffuseGreen1*Weight1) + (myDiffuseGreen2*Weight2); + myDiffuseBlue = (myDiffuseBlue1*Weight1) + (myDiffuseBlue2*Weight2); + mySpecularRed = (mySpecularRed1*Weight1) + (mySpecularRed2*Weight2); + mySpecularGreen = (mySpecularGreen1*Weight1) + (mySpecularGreen2*Weight2); + mySpecularBlue = (mySpecularBlue1*Weight1) + (mySpecularBlue2*Weight2); + mySpecularShininess = (mySpecularShininess1*Weight1)+ (mySpecularShininess2*Weight2); + myOpacityRed = (myOpacityRed1*Weight1) + (myOpacityRed2*Weight2); + myOpacityGreen = (myOpacityGreen1*Weight1) + (myOpacityGreen2*Weight2); + myOpacityBlue = (myOpacityBlue1*Weight1) + (myOpacityBlue2*Weight2); + // + // Set the target material + // + dpl_SetMaterialAmbient (myMaterial, myAmbientRed, myAmbientGreen, myAmbientBlue); + dpl_SetMaterialEmissive (myMaterial, myEmissiveRed, myEmissiveGreen, myEmissiveBlue); + dpl_SetMaterialDiffuse (myMaterial, myDiffuseRed, myDiffuseGreen, myDiffuseBlue); + dpl_SetMaterialSpecular (myMaterial, mySpecularRed, mySpecularGreen, mySpecularBlue, mySpecularShininess); +// dpl_SetMaterialOpacity (myMaterial, myOpacityRed, myOpacityGreen, myOpacityBlue); + dpl_FlushMaterial(myMaterial); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Destructor for DPLDamageMaterialRenderable +DPLDamageMaterialRenderable::~DPLDamageMaterialRenderable() +{ + // Check our structure before we do anything + Check(this); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// TestInstance for the DPLDamageMaterialRenderable +Logical + DPLDamageMaterialRenderable::TestInstance() const +{ + // Call our parent's TestInstance first + VideoRenderable::TestInstance(); + Check_Pointer(myMaterial); + return True; +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Execute for the DPLDamageMaterialRenderable +void + DPLDamageMaterialRenderable::Execute() +{ + Scalar + Weight1, + Weight2; + + Check(this); + if(oldDamageAttribute != *myDamageAttribute) + { + // + // Re-calculate the target material + // + oldDamageAttribute = *myDamageAttribute; + Weight1 = 1.0 - oldDamageAttribute; + Weight2 = oldDamageAttribute; + myAmbientRed = (myAmbientRed1*Weight1) + (myAmbientRed2*Weight2); + myAmbientGreen = (myAmbientGreen1*Weight1) + (myAmbientGreen2*Weight2); + myAmbientBlue = (myAmbientBlue1*Weight1) + (myAmbientBlue2*Weight2); + myEmissiveRed = (myEmissiveRed1*Weight1) + (myEmissiveRed2*Weight2); + myEmissiveGreen = (myEmissiveGreen1*Weight1) + (myEmissiveGreen2*Weight2); + myEmissiveBlue = (myEmissiveBlue1*Weight1) + (myEmissiveBlue2*Weight2); + myDiffuseRed = (myDiffuseRed1*Weight1) + (myDiffuseRed2*Weight2); + myDiffuseGreen = (myDiffuseGreen1*Weight1) + (myDiffuseGreen2*Weight2); + myDiffuseBlue = (myDiffuseBlue1*Weight1) + (myDiffuseBlue2*Weight2); + mySpecularRed = (mySpecularRed1*Weight1) + (mySpecularRed2*Weight2); + mySpecularGreen = (mySpecularGreen1*Weight1) + (mySpecularGreen2*Weight2); + mySpecularBlue = (mySpecularBlue1*Weight1) + (mySpecularBlue2*Weight2); + mySpecularShininess = (mySpecularShininess1*Weight1)+ (mySpecularShininess2*Weight2); + myOpacityRed = (myOpacityRed1*Weight1) + (myOpacityRed2*Weight2); + myOpacityGreen = (myOpacityGreen1*Weight1) + (myOpacityGreen2*Weight2); + myOpacityBlue = (myOpacityBlue1*Weight1) + (myOpacityBlue2*Weight2); + // + // Reset the target material and flush it + // + dpl_SetMaterialAmbient (myMaterial, myAmbientRed, myAmbientGreen, myAmbientBlue); + dpl_SetMaterialEmissive (myMaterial, myEmissiveRed, myEmissiveGreen, myEmissiveBlue); + dpl_SetMaterialDiffuse (myMaterial, myDiffuseRed, myDiffuseGreen, myDiffuseBlue); + dpl_SetMaterialSpecular (myMaterial, mySpecularRed, mySpecularGreen, mySpecularBlue, mySpecularShininess); +// dpl_SetMaterialOpacity (myMaterial, myOpacityRed, myOpacityGreen, myOpacityBlue); + dpl_FlushMaterial(myMaterial); + } + // Call the next lower execute method + #if DEBUG_LEVEL > 0 + VideoRenderable::Execute(); + #endif +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~End of the new renderable class hiearchy~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~Dynamic Renderables~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~these renderables allow things to change after construction~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +//############################################################################# +// This is the DPLEyeRenderable class. This is a DYNAMIC renderable that +// places the renderer's eyepoint relative to some other DCS/renderable. +// At the moment the eyepoint won't actually move in response to an argument +// but this will be changed after we have something to hook the eye to. +//############################################################################# +// +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Constructor for the DPLEyeRenderable +// All the arguments are required. +// +DPLEyeRenderable::DPLEyeRenderable( + Entity* This_Entity, + dpl_ZONE* This_Zone, + const LinearMatrix& Offset_Matrix, + dpl_DCS* Parent_DCS, + dpl_VIEW* This_View, + EulerAngles* eyepoint_rotation // Pointer to attribute that contains eye rotations +): + Component(TrivialNodeClassID) +{ + // + // Check the inbound data + // + Check(This_Entity); + Check_Pointer(This_Zone); + Check(&Offset_Matrix); + Check_Pointer(Parent_DCS); + Check_Pointer(This_View); + #if DEBUG_LEVEL > 0 + if(eyepoint_rotation) + Check(eyepoint_rotation); + #endif + // + // Remember the entity that this renderable is attached to and the + // orientation matrix that sets the eye location + // + myEntity = This_Entity; + myParentDCS = Parent_DCS; + myOrientationMatrix = Offset_Matrix; + myEyepointRotation = eyepoint_rotation; + if(myEyepointRotation) + { + oldEyepointRotation = *myEyepointRotation; + } + else + { + oldEyepointRotation = NULL; + } + // + // Create the dpl DCS for this renderable, connect it to it's parent + // and set it into the current zone. + // + myDCS = dpl_NewDCS (); + Check_Pointer(myDCS); + dpl_AddDCSToDCS ( myParentDCS, myDCS ); + dpl_SetDCSZone ( myDCS, This_Zone ); + // + // Load up the DCS matrix with the supplied matrix + // + LinearMatrix rotation_matrix(True); + if(myEyepointRotation) + { + rotation_matrix = *myEyepointRotation; + } + rotation_matrix *= myOrientationMatrix; + float32* dplMatrix = dpl_GetDCSMatrix(myDCS); + Check_Pointer(dplMatrix); + *((Matrix4x4*)dplMatrix) = rotation_matrix; + // + // float32* tempMatrix = dpl_GetDCSMatrix(myDCS); + // Check_Pointer(tempMatrix); + // *(Matrix4x4*)tempMatrix = OrientationMatrix; + // + // Flush out the instance and DCS + // + dpl_SetViewDCS ( This_View, myDCS); + dpl_FlushView ( This_View); + dpl_FlushDCS ( myDCS ); + +// myEntity->AddDynamicVideoComponent(this); +// +// HACK HACK this needs to be folded back into the new videorenderable hiearchy + myEntity->AddStaticVideoComponent(this); + L4Application *l4_application = Cast_Object(L4Application*, application); + Check(l4_application); + l4_application->GetVideoRenderer()->AddDynamicRenderable(this); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Destructor for DPLEyeRenderable +// After calling this the eyepoint must be relocated to another DCS before +// the execute method of the renderer is called. +// +DPLEyeRenderable::~DPLEyeRenderable() +{ + Check(this); +// Below is probably unnecessary as the parent should be destroyed too +// but Phil is making a patch to allow us to check that. +// dpl_RemoveDCSFromDCS(myParentDCS, myDCS); + dpl_DeleteDCS(myDCS); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// TestInstance for the DPLEyeRenderable +// +Logical + DPLEyeRenderable::TestInstance() const +{ + Component::TestInstance(); + + Check_Pointer(myDCS); + Check_Pointer(myParentDCS); + Check(&myOrientationMatrix); + Check(myEntity); + if(myEyepointRotation) + { + Check(myEyepointRotation); + } + return True; +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Execute method for DPLEyeRenderable. +// +void + DPLEyeRenderable::Execute() +{ + // + //---------------------------------------------------------------------- + // If we have an eyepoint rotation specified, generate a new matrix each + // time based upon the setting of the eyepoint rotation + //---------------------------------------------------------------------- + // + if (myEyepointRotation) + { + if(*myEyepointRotation != oldEyepointRotation) + { + oldEyepointRotation = *myEyepointRotation; + Check(myEyepointRotation); + LinearMatrix rotation_matrix(True); + rotation_matrix = *myEyepointRotation; + rotation_matrix *= myOrientationMatrix; + float32* dplMatrix = dpl_GetDCSMatrix(myDCS); + Check_Pointer(dplMatrix); + *((Matrix4x4*)dplMatrix) = rotation_matrix; + HACK_DPL_FLUSH_DCS(myDCS); + } + } +} +// +//############################################################################# +// This is the DPLChildPointRenderable class. This is a dynamic renderable that +// lets you build a translating joint between two objects. If you supply a +// NULL Graphic_Object pointer when constructing the renderable it will be +// built without hooking up an instance of a graphical object. +//############################################################################# +// +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Constructor for the DPLChildPointRenderable +// +DPLChildPointRenderable::DPLChildPointRenderable( + Entity* This_Entity, + dpl_ZONE* This_Zone, + dpl_OBJECT* Graphic_Object, + dpl_ISECT_MODE Intersect_Mode, + uint32 Intersect_Mask, + const LinearMatrix &Offset_Matrix, + dpl_DCS *Parent_DCS, + Point3D *my_point +): + Component(TrivialNodeClassID) +{ +// +// Check the inbound data +// + Check(This_Entity); + Check_Pointer(This_Zone); + #if DEBUG_LEVEL > 0 + if(Graphic_Object != NULL) + Check_Pointer(Graphic_Object); + #endif + Check(&Offset_Matrix); + Check_Pointer(Parent_DCS); + Check(my_point); +// +// Remember the entity that this renderable is attached to and the +// orientation matrix that sets the eye location +// + myEntity = This_Entity; + myParentDCS = Parent_DCS; + myPoint = my_point; + OrientationMatrix = Offset_Matrix; + OldPoint = *my_point; +// +// Create the dpl DCS, add it to the parent DCS, set it into the current zone, +// and stuff the orientation matrix into it +// + myOffsetDCS = dpl_NewDCS(); + Check_Pointer ( myOffsetDCS ); + dpl_AddDCSToDCS ( myParentDCS, myOffsetDCS ); + dpl_SetDCSZone ( myOffsetDCS, This_Zone ); + + myDCS = dpl_NewDCS(); + Check_Pointer ( myDCS ); + dpl_AddDCSToDCS ( myOffsetDCS, myDCS ); + dpl_SetDCSZone ( myDCS, This_Zone ); +// +// Setup the offset matrix in the offset DCS +// + float32* tempMatrix = dpl_GetDCSMatrix( myOffsetDCS ); + Check_Pointer ( tempMatrix ); + *(Matrix4x4*)tempMatrix = OrientationMatrix; +// +// Setup the initial state of the hinge joint +// + float32* tempMatrix2 = dpl_GetDCSMatrix( myDCS ); + Check_Pointer ( tempMatrix2 ); + *(Matrix4x4*)tempMatrix2 = *myPoint; +// +// If there was a graphic, create an instance with that graphic in it and link +// it to the DCS. +// + if(Graphic_Object == NULL) + { + myInstance = NULL; + } + else + { + myInstance = dpl_NewInstance(); + Check_Pointer ( myInstance ); + dpl_SetInstanceObject ( myInstance, Graphic_Object ); + dpl_SetInstanceIntersect ( myInstance, Intersect_Mode ); + dpl_SetInstanceSectMask ( myInstance, Intersect_Mask ); + dpl_SetInstanceVisibility ( myInstance, 1 ); + dpl_AddInstanceToDCS ( myDCS, myInstance ); + dpl_FlushInstance ( myInstance ); + } +// +// Flush out the DCS and add this to the static component list +// + dpl_FlushDCS ( myOffsetDCS ); + dpl_FlushDCS ( myDCS ); +// myEntity->AddDynamicVideoComponent(this); +// +// HACK HACK this needs to be folded back into the new videorenderable hiearchy + myEntity->AddStaticVideoComponent(this); + L4Application *l4_application = Cast_Object(L4Application*, application); + Check(l4_application); + l4_application->GetVideoRenderer()->AddDynamicRenderable(this); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Destructor for the DPLChildPointRenderable +// + +DPLChildPointRenderable::~DPLChildPointRenderable() +{ + Check(this); +// Below is probably unnecessary as the parent should be destroyed too +// but Phil is making a patch to allow us to check that. +// dpl_RemoveDCSFromDCS(myParentDCS, myDCS); + + dpl_DeleteDCS(myDCS); + dpl_DeleteDCS(myOffsetDCS); + if(myInstance != NULL) + { + dpl_DeleteInstance(myInstance); + } +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Execute for the DPLChildPointRenderable +// This method should really use a watcher to make sure the position of the +// object has changed before updating the DCS matrix. +// +void + DPLChildPointRenderable::Execute() +{ + Check(this); +// +// Load up the DCS matrix with the localToWorld matrix from the entity +// then flush out the new DCS +// + if(OldPoint != *myPoint) + { + OldPoint = *myPoint; + float32* tempMatrix2 = dpl_GetDCSMatrix( myDCS ); + Check_Pointer ( tempMatrix2 ); + *(Matrix4x4*)tempMatrix2 = OldPoint; + HACK_DPL_FLUSH_DCS ( myDCS ); + } +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// TestInstance for the DPLChildPointRenderable +// +Logical + DPLChildPointRenderable::TestInstance() const +{ + Component::TestInstance(); + + Check_Pointer ( myDCS ); + Check_Pointer ( myParentDCS ); + Check_Pointer ( myOffsetDCS ); + Check(myPoint); + if(myInstance != NULL) + { + Check_Pointer(myInstance); + } + Check(&OrientationMatrix); + Check(myEntity); + + return True; +} +// +//############################################################################# +// This is the DPLScaleRenderable class. This is a dynamic renderable that +// lets you scale everything downstream of it in the hiearchy. It is also +// setup to switch it's own instances on and off based on the value in visible. +//############################################################################# +// +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Constructor for the DPLScaleRenderable +// +DPLScaleRenderable::DPLScaleRenderable( + Entity* This_Entity, + dpl_ZONE* This_Zone, + dpl_OBJECT* Graphic_Object, + dpl_ISECT_MODE Intersect_Mode, + uint32 Intersect_Mask, + const LinearMatrix &Offset_Matrix, + dpl_DCS *Parent_DCS, + Vector3D *scale_vector, + Logical *visible +): + Component(TrivialNodeClassID) +{ +// +// Check the inbound data +// + Check(This_Entity); + Check_Pointer(This_Zone); + Check_Pointer(Graphic_Object); + Check(&Offset_Matrix); + Check_Pointer(Parent_DCS); + Check(scale_vector); + Check_Pointer(visible); +// +// Remember the entity that this renderable is attached to and the +// orientation matrix that offsets it to the correct position. +// + myEntity = This_Entity; + myParentDCS = Parent_DCS; + myScaleVector = scale_vector; + myVisible = visible; + OffsetMatrix = Offset_Matrix; + OldScaleVector = *scale_vector; + OldVisible = *visible; +// +// Create the dpl DCS, add it to the parent DCS, set it into the current zone, +// and stuff the orientation matrix into it +// + myDCS = dpl_NewDCS(); + Check_Pointer ( myDCS ); + dpl_AddDCSToDCS ( myParentDCS, myDCS ); + dpl_SetDCSZone ( myDCS, This_Zone ); +// +// Setup the dcs matrix to it's initial state +// + float32* tempMatrix = dpl_GetDCSMatrix( myDCS ); + Check_Pointer ( tempMatrix ); + AffineMatrix tempAffine(True); + tempAffine *= OldScaleVector; + tempAffine *= OffsetMatrix; + *(Matrix4x4*)tempMatrix = tempAffine; +// +// If there was a graphic, create an instance with that graphic in it and link +// it to the DCS. +// + myInstance = dpl_NewInstance(); + Check_Pointer ( myInstance ); + dpl_SetInstanceObject ( myInstance, Graphic_Object ); + dpl_SetInstanceIntersect ( myInstance, Intersect_Mode ); + dpl_SetInstanceSectMask ( myInstance, Intersect_Mask ); + dpl_SetInstanceVisibility ( myInstance, OldVisible ); + dpl_AddInstanceToDCS ( myDCS, myInstance ); + dpl_FlushInstance ( myInstance ); +// +// Flush out the DCS and add this to the static component list +// + dpl_FlushDCS ( myDCS ); +// myEntity->AddDynamicVideoComponent(this); +// +// HACK HACK this needs to be folded back into the new videorenderable hiearchy + myEntity->AddStaticVideoComponent(this); + L4Application *l4_application = Cast_Object(L4Application*, application); + Check(l4_application); + l4_application->GetVideoRenderer()->AddDynamicRenderable(this); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Destructor for the DPLScaleRenderable +// + +DPLScaleRenderable::~DPLScaleRenderable() +{ + Check(this); +// Below is probably unnecessary as the parent should be destroyed too +// but Phil is making a patch to allow us to check that. +// dpl_RemoveDCSFromDCS(myParentDCS, myDCS); + + dpl_DeleteDCS(myDCS); + dpl_DeleteInstance(myInstance); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Execute for the DPLScaleRenderable +// This method should really use a watcher to make sure the position of the +// object has changed before updating the DCS matrix. +// +void + DPLScaleRenderable::Execute() +{ + Check(this); +// +// Load up the DCS matrix with the localToWorld matrix from the entity +// then flush out the new DCS +// + if(OldVisible != *myVisible) + { + OldVisible = *myVisible; + dpl_SetInstanceVisibility ( myInstance, OldVisible ); + dpl_FlushInstance ( myInstance ); + } + + if(OldScaleVector != *myScaleVector) + { + OldScaleVector = *myScaleVector; + float32* tempMatrix2 = dpl_GetDCSMatrix( myDCS ); + Check_Pointer ( tempMatrix2 ); + AffineMatrix tempAffine(True); + tempAffine *= OldScaleVector; + tempAffine *= OffsetMatrix; + *(Matrix4x4*)tempMatrix2 = tempAffine; + HACK_DPL_FLUSH_DCS ( myDCS ); + } +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// TestInstance for the DPLChildRenderable +// +Logical + DPLScaleRenderable::TestInstance() const +{ + Component::TestInstance(); + + Check_Pointer ( myDCS ); + Check_Pointer ( myParentDCS ); + Check_Pointer(myInstance); + Check(&OffsetMatrix); + Check(myEntity); + Check(myScaleVector); + + return True; +} +// +//############################################################################# +// This is the DPLScaleQuatRenderable class. This is a dynamic renderable that +// lets you control joint position with a Quaternion, Scale with a vector and +// switch the instance on and off with a logical. +//############################################################################# +// +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Constructor for the DPLScaleQuatRenderable +// +DPLScaleQuatRenderable::DPLScaleQuatRenderable( + Entity* This_Entity, + dpl_ZONE* This_Zone, + dpl_OBJECT* Graphic_Object, + dpl_ISECT_MODE Intersect_Mode, + uint32 Intersect_Mask, + const LinearMatrix &Offset_Matrix, + dpl_DCS *Parent_DCS, + Quaternion *rotation_quaternion, + Vector3D *scale_vector, + Logical *visible +): + Component(TrivialNodeClassID) +{ + Quaternion my_quat; +// +// Check the inbound data +// + Check(This_Entity); + Check_Pointer(This_Zone); + Check_Pointer(Graphic_Object); + Check(&Offset_Matrix); + Check_Pointer(Parent_DCS); + Check(rotation_quaternion); + Check(scale_vector); + Check_Pointer(visible); +// +// Remember the entity that this renderable is attached to and the +// orientation matrix that offsets it to the correct position. +// + myEntity = This_Entity; + myParentDCS = Parent_DCS; + myRotationQuaternion = rotation_quaternion; + myScaleVector = scale_vector; + myVisible = visible; + OffsetMatrix = Offset_Matrix; + OldRotationQuaternion = *rotation_quaternion; + OldScaleVector = *scale_vector; + OldVisible = *visible; +// +// Create the dpl DCS, add it to the parent DCS, set it into the current zone, +// and stuff the orientation matrix into it +// + myDCS = dpl_NewDCS(); + Check_Pointer ( myDCS ); + dpl_AddDCSToDCS ( myParentDCS, myDCS ); + dpl_SetDCSZone ( myDCS, This_Zone ); +// +// Setup the dcs matrix to it's initial state +// + float32* tempMatrix = dpl_GetDCSMatrix( myDCS ); + Check_Pointer ( tempMatrix ); + AffineMatrix tempAffine(True); +// tempAffine.Multiply(OldRotationQuaternion,OffsetMatrix); + tempAffine *= OldScaleVector; + tempAffine *= OldRotationQuaternion; + tempAffine *= OffsetMatrix; + *(Matrix4x4*)tempMatrix = tempAffine; +// +// If there was a graphic, create an instance with that graphic in it and link +// it to the DCS. +// + myInstance = dpl_NewInstance(); + Check_Pointer ( myInstance ); + dpl_SetInstanceObject ( myInstance, Graphic_Object ); + dpl_SetInstanceIntersect ( myInstance, Intersect_Mode ); + dpl_SetInstanceSectMask ( myInstance, Intersect_Mask ); + dpl_SetInstanceVisibility ( myInstance, OldVisible ); + dpl_AddInstanceToDCS ( myDCS, myInstance ); + dpl_FlushInstance ( myInstance ); +// +// Flush out the DCS and add this to the static component list +// + dpl_FlushDCS ( myDCS ); +// myEntity->AddDynamicVideoComponent(this); +// +// HACK HACK this needs to be folded back into the new videorenderable hiearchy + myEntity->AddStaticVideoComponent(this); + L4Application *l4_application = Cast_Object(L4Application*, application); + Check(l4_application); + l4_application->GetVideoRenderer()->AddDynamicRenderable(this); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Destructor for the DPLScaleQuatRenderable +// + +DPLScaleQuatRenderable::~DPLScaleQuatRenderable() +{ + Check(this); +// Below is probably unnecessary as the parent should be destroyed too +// but Phil is making a patch to allow us to check that. +// dpl_RemoveDCSFromDCS(myParentDCS, myDCS); + + dpl_DeleteDCS(myDCS); + dpl_DeleteInstance(myInstance); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Execute for the DPLScaleQuatRenderable +// This method should really use a watcher to make sure the position of the +// object has changed before updating the DCS matrix. +// +void + DPLScaleQuatRenderable::Execute() +{ + Check(this); +// +// Load up the DCS matrix with the localToWorld matrix from the entity +// then flush out the new DCS +// + if(OldVisible != *myVisible) + { + OldVisible = *myVisible; + dpl_SetInstanceVisibility ( myInstance, OldVisible ); + dpl_FlushInstance ( myInstance ); + } + + // + // The memcmp below is sort of a HACK but all I really care about is if the + // value in the quaternion has been changed since last time I saw it, this + // seems to be the easiest way to find out as JM hasn't written an == operator + // + if((OldScaleVector != *myScaleVector) || + (memcmp(&OldRotationQuaternion,myRotationQuaternion, sizeof(Quaternion)) != 0)) + { + OldScaleVector = *myScaleVector; + OldRotationQuaternion = *myRotationQuaternion; + float32* tempMatrix2 = dpl_GetDCSMatrix( myDCS ); + Check_Pointer ( tempMatrix2 ); + AffineMatrix tempAffine(True); +// tempAffine.Multiply(OldRotationQuaternion,OffsetMatrix); + tempAffine *= OldScaleVector; + tempAffine *= OldRotationQuaternion; + tempAffine *= OffsetMatrix; + *(Matrix4x4*)tempMatrix2 = tempAffine; + HACK_DPL_FLUSH_DCS ( myDCS ); + } +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// TestInstance for the DPLScaleQuatRenderable +// +Logical + DPLScaleQuatRenderable::TestInstance() const +{ + Component::TestInstance(); + + Check_Pointer ( myDCS ); + Check_Pointer ( myParentDCS ); + Check_Pointer(myInstance); + Check(&OffsetMatrix); + Check(myEntity); + Check(myRotationQuaternion); + Check(myScaleVector); + Check_Pointer(myVisible); + + return True; +} +// +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~Static Renderables~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~these renderables remain constant after construction~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +// +//############################################################################# +// This is the DPLStaticChildRenderable class. This is a STATIC renderable that +// lets you build a DCS that is a child of a pre-existing DCS. If you supply a +// NULL Graphic_Object pointer when constructing the renderable it will be +// built without hooking up an instance of a graphical object. +//############################################################################# +// +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Constructor for the DPLStaticChildRenderable +// +DPLStaticChildRenderable::DPLStaticChildRenderable( + Entity* This_Entity, + dpl_ZONE* This_Zone, + dpl_OBJECT* Graphic_Object, + dpl_ISECT_MODE Intersect_Mode, + uint32 Intersect_Mask, + const LinearMatrix& Offset_Matrix, + dpl_DCS* Parent_DCS +): + Component(TrivialNodeClassID) +{ +// +// Check the inbound data +// + Check(This_Entity); + Check_Pointer(This_Zone); + Check(&Offset_Matrix); + Check_Pointer(Parent_DCS); + #if DEBUG_LEVEL > 0 + if(Graphic_Object != NULL) + Check_Pointer(Graphic_Object); + #endif +// +// Remember the entity that this renderable is attached to and the +// orientation matrix that sets the eye location +// + myEntity = This_Entity; + myParentDCS = Parent_DCS; + OrientationMatrix = Offset_Matrix; +// +// Create the dpl DCS, add it to the parent DCS, set it into the current zone, +// and stuff the orientation matrix into it +// + myDCS = dpl_NewDCS (); + Check_Pointer ( myDCS ); + dpl_AddDCSToDCS ( myParentDCS, myDCS ); + dpl_SetDCSZone ( myDCS, This_Zone ); + float32* tempMatrix = dpl_GetDCSMatrix( myDCS ); + Check_Pointer ( tempMatrix ); + *(Matrix4x4*)tempMatrix = OrientationMatrix; +// +// If there was a graphic, create an instance with that graphic in it and link +// it to the DCS. +// + if(Graphic_Object == NULL) + { + myInstance = NULL; + } + else + { + myInstance = dpl_NewInstance(); + Check_Pointer ( myInstance ); + dpl_SetInstanceObject ( myInstance, Graphic_Object ); + dpl_SetInstanceIntersect ( myInstance, Intersect_Mode ); + dpl_SetInstanceSectMask ( myInstance, Intersect_Mask ); + dpl_SetInstanceVisibility ( myInstance, 1 ); + dpl_AddInstanceToDCS ( myDCS, myInstance ); + dpl_FlushInstance ( myInstance ); + } +// +// Flush out the DCS and add this to the static component list +// + dpl_FlushDCS ( myDCS ); + myEntity->AddStaticVideoComponent(this); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Destructor for the DPLStaticChildRenderable +// + +DPLStaticChildRenderable::~DPLStaticChildRenderable() +{ + Check(this); +// Below is probably unnecessary as the parent should be destroyed too +// but Phil is making a patch to allow us to check that. +// dpl_RemoveDCSFromDCS(myParentDCS, myDCS); + + dpl_DeleteDCS(myDCS); + if(myInstance != NULL) + { + dpl_DeleteInstance(myInstance); + } +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// TestInstance for the DPLStaticChildRenderable +// +Logical + DPLStaticChildRenderable::TestInstance() const +{ + Component::TestInstance(); + + Check_Pointer(myDCS); + Check_Pointer(myParentDCS); + if(myInstance != NULL) + { + Check_Pointer(myInstance); + } + Check(&OrientationMatrix); + Check(myEntity); + + return True; +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~Special Effects Renderables~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//############################################################################# +// This is the DPLSFXRenderable class. This renderable is used to trigger a +// special effect in the world. The effect can be relative to a DCS or can be +// positioned in world coordinants by passing NULL as Parent_DCS. The trigger +// is a specific attribute entering a specific state. The effect will be +// generated repeatedly till the trigger changes state. +// +// This renderable is useful for triggering one-shot effects like puffs of smoke +// from guns or for triggering effects that the renderer will automatically +// repeat on it's own. +//############################################################################# +#define DPLSFXRenderable_MAX_RATE 28.0 // Repeat rate when speed = 1.0 +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Constructor for DPLSFXRenderable +// +DPLSFXRenderable::DPLSFXRenderable( + Entity *This_Entity, // Entity to attach the effect to + dpl_ZONE* , //*This_Zone, // DPL zone everything will be in + const Point3D &Offset_Point, // Point offset from the parent DCS + dpl_DCS *Parent_DCS, // Parent DCS (can be NULL for world) + StateIndicator *Effect_Trigger, // Trigger effect when this state changes + int Trigger_State, // Trigger effect when in this state + int Effect_Type, // Type of effect to trigger + Scalar Repeat_Speed // Effect repeat speed. +): + Component(TrivialNodeClassID) +{ +// +// Check the inbound data, note that the parent DCS could be a null pointer +// + Check(This_Entity); +// Check_Pointer(This_Zone); + Check(&Offset_Point); + #if DEBUG_LEVEL > 0 + if(Parent_DCS != NULL) + Check_Pointer(Parent_DCS); + #endif + Check(Effect_Trigger); +// +// Remember the entity and DCS this renderable is attached to +// + myEntity = This_Entity; + myParentDCS = Parent_DCS; + myOffsetPoint = Offset_Point; + myEffectTrigger = Effect_Trigger; + myEffectTriggerOld = myEffectTrigger->GetState(); + myEffectTriggerState = Trigger_State; + myEffectType = Effect_Type; + myRepeatSpeed = 1.0/(Repeat_Speed * DPLSFXRenderable_MAX_RATE); + myLastEffect = 0.0; +// +// Register this effect as a dynamic renderable of the entity +// +// myEntity->AddDynamicVideoComponent(this); +// +// HACK HACK this needs to be folded back into the new videorenderable hiearchy + myEntity->AddStaticVideoComponent(this); + L4Application *l4_application = Cast_Object(L4Application*, application); + Check(l4_application); + l4_application->GetVideoRenderer()->AddDynamicRenderable(this); + +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Destructor for DPLSFXRenderable +// +DPLSFXRenderable::~DPLSFXRenderable() +{ + Check(this); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// TestInstance for the DPLSFXRenderable +// +Logical + DPLSFXRenderable::TestInstance() const +{ + Component::TestInstance(); + + Check(myEntity); + #if DEBUG_LEVEL > 0 + if(myParentDCS != NULL) + Check_Pointer(myParentDCS); + #endif + Check(&myOffsetPoint) + Check_Pointer(myEffectTrigger); + return True; +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Execute method for DPLSFXRenderable. +// This watches the pre-assigned attribute pointer and triggers a special effect +// whenever that attribute changes. +// +void + DPLSFXRenderable::Execute() +{ + Scalar + current_time; + // + // Check data we're going to use. + // + #if DEBUG_LEVEL > 0 + if(myParentDCS != NULL) + Check_Pointer(myParentDCS); + #endif + Check_Pointer(myEffectTrigger); + // + // Is the attribute in the trigger state? + // + if(myEffectTrigger->GetState() == myEffectTriggerState) + { + // + // The effect is on, see if this is an edge + // + if(myEffectTriggerOld != myEffectTrigger->GetState()) + { + // + // An edge, reset the repeat timers so we will get an effect right now. + // + myLastEffect = 0.0; + } + // + // Is it time for another effect yet? + // + current_time = Now(); + if((myLastEffect + myRepeatSpeed) < current_time) + { + // + // Trigger the effect + // + dpl_EXPLOSION_EFFECT_INFO my_explosion; + my_explosion.type = myEffectType; + my_explosion.x = myOffsetPoint.x; + my_explosion.y = myOffsetPoint.y; + my_explosion.z = myOffsetPoint.z; + dpl_Effect ( dpl_effect_type_explosion, myParentDCS, &my_explosion ); + myLastEffect = current_time; + } + } + myEffectTriggerOld = myEffectTrigger->GetState(); +} +//############################################################################# +// This is the DPLRepeatSFXRenderable class. This renderable is used to trigger +// a special effect that repeats periodically with the repeat rate under program +// control. The most common use will probably be generating smoke trails. If +// the density argument is set to zero, no smoke will be generated. +//############################################################################# +#define DPLRepeatSFXRenderable_MAX_RATE 5.0 +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Constructor for DPLRepeatSFXRenderable +// +DPLRepeatSFXRenderable::DPLRepeatSFXRenderable( + Entity *This_Entity, + dpl_ZONE* , //*This_Zone, + const Point3D &Offset_Point, + dpl_DCS *Parent_DCS, // offset is relative to this + int Effect_Type, // type code for the effect + Scalar *Speed +): + Component(TrivialNodeClassID) +{ +// +// Check the inbound data +// + Check(This_Entity); +// Check_Pointer(This_Zone); + Check(&Offset_Point); + #if DEBUG_LEVEL > 0 + if(Parent_DCS != NULL) + Check_Pointer(Parent_DCS); // it is allowed to be null + #endif + Check_Pointer(Speed); +// +// Remember the entity and DCS this renderable is attached to +// + myEntity = This_Entity; + myParentDCS = Parent_DCS; + myOffsetPoint = Offset_Point; + myEffectType = Effect_Type; + mySpeed = Speed; + myLastSmoke = 0.0; +// +// Setup as a dynamic renderable +// +// myEntity->AddDynamicVideoComponent(this); +// +// HACK HACK this needs to be folded back into the new videorenderable hiearchy + myEntity->AddStaticVideoComponent(this); + L4Application *l4_application = Cast_Object(L4Application*, application); + Check(l4_application); + l4_application->GetVideoRenderer()->AddDynamicRenderable(this); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Destructor for DPLRepeatSFXRenderable +// +DPLRepeatSFXRenderable::~DPLRepeatSFXRenderable() +{ + Check(this); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// TestInstance for the DPLRepeatSFXRenderable +// +Logical + DPLRepeatSFXRenderable::TestInstance() const +{ + Component::TestInstance(); + + Check(myEntity); + #if DEBUG_LEVEL > 0 + if(myParentDCS != NULL) + Check_Pointer(myParentDCS); // it is allowed to be null + #endif + Check(&myOffsetPoint); + Check_Pointer(mySpeed); + return True; +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Execute method for DPLRepeatSFXRenderable. +// This watches the pre-assigned attribute pointer and triggers a special effect +// whenever that attribute changes. +// +void + DPLRepeatSFXRenderable::Execute() +{ +#define MAX_REPEAT_RATE 5.0 + Scalar + current_time; + // + // If speed is zero, the effect is turned off so we do nothing + // + if(*mySpeed == 0.0) + { + myLastSmoke = 0.0; + return; + } + // + // Figure how often we should generate smoke, speed ranges from 0 to 1, with + // 1 being the fastest + // + current_time = Now(); + if((myLastSmoke + (1.0/((*mySpeed) * DPLRepeatSFXRenderable_MAX_RATE))) < current_time) + { + dpl_EXPLOSION_EFFECT_INFO my_explosion; + myLastSmoke = current_time; + my_explosion.type = myEffectType; + my_explosion.x = myOffsetPoint.x; + my_explosion.y = myOffsetPoint.y; + my_explosion.z = myOffsetPoint.z; + dpl_Effect ( dpl_effect_type_explosion, myParentDCS, &my_explosion ); + } +} +//############################################################################# +// This is the DPLTranslocationRenderable class. This renderable handles the +// entire process of doing a UFT translocation effect from the perspective of +// people watching the player. This renderable is connected to the player object +// and manages positioning itself in the world based on information from that +// object. HACK HACK HACK (this will be obsolete when RP is fixed) +//############################################################################# +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Constructor for DPLTranslocationRenderable +// +DPLTranslocationRenderable::DPLTranslocationRenderable( + Entity *This_Entity, // Entity to attach the effect to + dpl_ZONE *This_Zone, // DPL zone everything will be in + StateIndicator *Effect_Trigger, // Trigger effects off of this state dial + Point3D *Drop_Zone_Location, // Attribute that holds where the new drop will be + unsigned Drop_Zone_State +): + Component(TrivialNodeClassID) +{ +// +// Check the inbound data, note that the parent DCS could be a null pointer +// + Check(This_Entity); + Check_Pointer(This_Zone); + Check(Effect_Trigger); + Check(Drop_Zone_Location); +// +// Remember the entity and DCS this renderable is attached to +// + myEntity = This_Entity; + myZone = This_Zone; + myEffectTrigger = Effect_Trigger; + myEffectTriggerOld = myEffectTrigger->GetState(); + myDropZoneLocation = Drop_Zone_Location; + myDropZoneState = Drop_Zone_State; + myState = IdleState; +// +// Load up the object we're going to use for the translocation +// + dpl_OBJECT* myTranslocateSphere = dpl_LoadObject ( "tsphere", dpl_load_normal ); + Check_Pointer(myTranslocateSphere); +// +// Setup a DCS that we can put the effect on so it can be rotated, scaled and +// placed anywhere we want in the world. +// + myInstance = dpl_NewInstance(); + myDCS = dpl_NewDCS(); + Check_Pointer (myInstance); + Check_Pointer (myDCS); + dpl_AddDCSToScene (myDCS); + dpl_SetDCSZone (myDCS, myZone); + dpl_SetInstanceObject (myInstance, myTranslocateSphere); + dpl_SetInstanceIntersect (myInstance, dpl_isect_mode_obj); + dpl_SetInstanceSectMask (myInstance, NULL); + dpl_SetInstanceVisibility (myInstance, False); + dpl_AddInstanceToDCS (myDCS, myInstance); + dpl_FlushInstance (myInstance); + dpl_FlushDCS (myDCS); +// +// Register this effect as a dynamic renderable of the entity +// +// myEntity->AddDynamicVideoComponent(this); +// +// HACK HACK this needs to be folded back into the new videorenderable hiearchy + myEntity->AddStaticVideoComponent(this); + L4Application *l4_application = Cast_Object(L4Application*, application); + Check(l4_application); + l4_application->GetVideoRenderer()->AddDynamicRenderable(this); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Destructor for DPLTranslocationRenderable +// +DPLTranslocationRenderable::~DPLTranslocationRenderable() +{ + Check(this); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// TestInstance for the DPLTranslocationRenderable +// +Logical + DPLTranslocationRenderable::TestInstance() const +{ + Component::TestInstance(); + + Check(myEntity); + Check(myEffectTrigger); + Check_Pointer(myZone); + Check(myDropZoneLocation); + return True; +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Execute method for DPLTranslocationRenderable. +// Note that the states listed here are temporary for testing and will be changed +// to player based effects as things are finalized. +// +void + DPLTranslocationRenderable::Execute() +{ + Scalar + current_time, + scale_factor; + unsigned + current_trigger_state; + // + // Check data we're going to use and get our current state to a local variable + // + Check_Pointer(myEffectTrigger); + current_trigger_state = myEffectTrigger->GetState(); + // HACK, because this renderable doesn't know what renderer it's on yet. + {L4Application *l4_application = Cast_Object(L4Application*, application); + Check(l4_application); + current_time = l4_application->GetVideoRenderer()->GetCurrentFrameTime();} +// current_time = myRenderer->GetCurrentFrameTime(); + // + // Simple state engine to manage the death/translocation effect + // + switch(myState) + { + case IdleState: + { + // + // Watch for transition to the dropzone acquired state + // + if(current_trigger_state == myDropZoneState) + { + myState = InitialExpandState; + myEffectTimer = current_time; + scale_factor = current_time - myEffectTimer; + if(scale_factor < 0.05f) + scale_factor = 0.05f; + float32* tempMatrix = dpl_GetDCSMatrix( myDCS ); + Check_Pointer ( tempMatrix ); + AffineMatrix tempAffine(True); + tempAffine(0,0) = scale_factor; + tempAffine(1,1) = scale_factor; + tempAffine(2,2) = scale_factor; + tempAffine = *myDropZoneLocation; + *(Matrix4x4*)tempMatrix = tempAffine; + dpl_SetInstanceVisibility (myInstance, True); + dpl_FlushInstance (myInstance); + HACK_DPL_FLUSH_DCS (myDCS); + } + break; + } + case InitialExpandState: + { + scale_factor = current_time - myEffectTimer; + if(scale_factor < 0.05f) + scale_factor = 0.05f; + if(scale_factor >= 1.0) + { + scale_factor = 1.0; + myState = HoldAtSizeState; + } + // Below is a hack to build a scaling identity matrix + float32* tempMatrix2 = dpl_GetDCSMatrix( myDCS ); + Check_Pointer ( tempMatrix2 ); + AffineMatrix tempAffine(True); + tempAffine(0,0) = scale_factor; + tempAffine(1,1) = scale_factor; + tempAffine(2,2) = scale_factor; + tempAffine = *myDropZoneLocation; + *(Matrix4x4*)tempMatrix2 = tempAffine; + HACK_DPL_FLUSH_DCS (myDCS); + break; + } + case HoldAtSizeState: + { + if((current_time - myEffectTimer) >= 3.0) + { + myState = ColapseState; + myEffectTimer = current_time + 1.0; + } + break; + } + case ColapseState: + { + scale_factor = myEffectTimer - current_time; + if(scale_factor < 0.05f) + { + scale_factor = 0.05f; + dpl_SetInstanceVisibility (myInstance, False); + dpl_FlushInstance (myInstance); + myState = IdleState; + } + // Below is a hack to build a scaling identity matrix + float32* tempMatrix2 = dpl_GetDCSMatrix( myDCS ); + Check_Pointer ( tempMatrix2 ); + AffineMatrix tempAffine(True); + tempAffine(0,0) = scale_factor; + tempAffine(1,1) = scale_factor; + tempAffine(2,2) = scale_factor; + tempAffine = *myDropZoneLocation; + *(Matrix4x4*)tempMatrix2 = tempAffine; + HACK_DPL_FLUSH_DCS (myDCS); + break; + } + } +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// This is brand new stuff as of 5/12/96 +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Constructor for OnePSFXRenderable +// This renderable triggers off a single PSFX effect and then hangs around and +// kills the effect when the renderable goes away. This is useful for things +// like missiles which you want to leave a smoke trail that stops if the object +// is destroyed. You REALLY want to do this whenever you attach an effect to +// a DCS since if the DCS goes away the DPL renderer will go wackey. +// +OnePSFXRenderable::OnePSFXRenderable( + Entity *entity, // Entity to attach the renderable to + ExecutionType execution_type, // How/when to execute the renderable + dpl_PARTICLESTART_EFFECT_INFO *psfx_definition, // name of file with the PFX description in it + dpl_DCS *effect_DCS, // DCS the effect is relative to (may be NULL) + Point3D *offset_point // Offset (or world coordinants if DCS is NULL) +): + VideoRenderable(entity, execution_type) +{ + // + // Check the inbound data, note that the parent DCS could be a null pointer + // + #if DEBUG_LEVEL > 0 + if(effect_DCS != NULL) + Check_Pointer(effect_DCS); + #endif + Check(offset_point); + if(!psfx_definition) + { + Fail("A pfx was not defined in the .ini file\n"); + } + // + // Initialze the local variables + // + myPSFXInfo = *psfx_definition; + // + // Start the PFX immediately + // + myPSFXInfo.identifier = (myPSFXInfo.identifier & 0xffff0000) | myRenderer->GetUniqueID(); + dpl_Effect ( dpl_effect_type_particlestart, effect_DCS, &myPSFXInfo ); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Destructor for OnePSFXRenderable +// +OnePSFXRenderable::~OnePSFXRenderable() +{ + // + // Since this renderable only sends one PSFX ID down, we only have to kill + // one PSFX, no need to track how many are spawned. + // + Check(this); + dpl_Effect ( dpl_effect_type_particlestop, NULL, &myPSFXInfo ); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// TestInstance for the OnePSFXRenderable +// +Logical + OnePSFXRenderable::TestInstance() const +{ + VideoRenderable::TestInstance(); + return True; +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Execute method for OnePSFXRenderable. +// +void + OnePSFXRenderable::Execute() +{ + // Call the next lower execute method + #if DEBUG_LEVEL > 0 + VideoRenderable::Execute(); + #endif +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Constructor for TranslocationRenderable +// This renderable does the UFT translocation effect from the perspective of +// someone else watching the person translocating. We connect this to the +// player object and uses information from that object to position itself. +// +TranslocationRenderable::TranslocationRenderable( + Entity *entity, // Entity to attach the renderable to + ExecutionType execution_type, // How/when to execute the renderable + dpl_ZONE *this_zone, // DPL zone everything will be in + StateIndicator *effect_trigger, // Trigger effects off of this state dial + Point3D *drop_zone_location, // Attribute that holds where the new drop will be + unsigned drop_zone_state // State that indicates drop zone is valid (starts effect) +): + VideoRenderable(entity, execution_type) +{ +// +// Check the inbound data, note that the parent DCS could be a null pointer +// + Check_Pointer(this_zone); + Check(effect_trigger); + Check(drop_zone_location); +// +// Remember the entity and DCS this renderable is attached to +// + myZone = this_zone; + myEffectTrigger = effect_trigger; + myDropZoneLocation = drop_zone_location; + myDropZoneState = drop_zone_state; + myState = IdleState; +// +// Load up the object we're going to use for the translocation +// + dpl_OBJECT* myTranslocateSphere = dpl_LoadObject ( "tsphere", dpl_load_normal ); + Check_Pointer(myTranslocateSphere); +// +// Setup a DCS that we can put the effect on so it can be rotated, scaled and +// placed anywhere we want in the world. +// + myInstance = dpl_NewInstance(); + myDCS = dpl_NewDCS(); + Check_Pointer (myInstance); + Check_Pointer (myDCS); + dpl_AddDCSToScene (myDCS); + dpl_SetDCSZone (myDCS, myZone); + dpl_SetInstanceObject (myInstance, myTranslocateSphere); + dpl_SetInstanceIntersect (myInstance, dpl_isect_mode_obj); + dpl_SetInstanceSectMask (myInstance, NULL); + dpl_SetInstanceVisibility (myInstance, False); + dpl_AddInstanceToDCS (myDCS, myInstance); + dpl_FlushInstance (myInstance); + dpl_FlushDCS (myDCS); +// +// Plug us into the watcher hook of the effect trigger state dial +// + myEffectTrigger->AddVideoWatcher(this); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Destructor for TranslocationRenderable +// +TranslocationRenderable::~TranslocationRenderable() +{ + Check(this); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// TestInstance for the TranslocationRenderable +// +Logical + TranslocationRenderable::TestInstance() const +{ + Component::TestInstance(); + + Check(myEffectTrigger); + Check_Pointer(myZone); + Check(myDropZoneLocation); + return True; +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Execute method for TranslocationRenderable. +// Note that the states listed here are temporary for testing and will be changed +// to player based effects as things are finalized. +// +void + TranslocationRenderable::Execute() +{ + Scalar + current_time, + scale_factor; + unsigned + current_trigger_state; + // + // Check data we're going to use and get our current state to a local variable + // + Check(myEffectTrigger); + current_trigger_state = myEffectTrigger->GetState(); + current_time = myRenderer->GetCurrentFrameTime(); + // + // Simple state engine to manage the death/translocation effect + // +// cout<<"TranslocationRenderable::Execute\n"; + switch(myState) + { + case IdleState: + { + // + // Watch for transition to the dropzone acquired state + // + if(current_trigger_state == myDropZoneState) + { + myState = InitialExpandState; + myEffectTimer = current_time; + scale_factor = current_time - myEffectTimer; + if(scale_factor < 0.05f) + scale_factor = 0.05f; + float32* tempMatrix = dpl_GetDCSMatrix( myDCS ); + Check_Pointer ( tempMatrix ); + AffineMatrix tempAffine(True); + tempAffine(0,0) = scale_factor; + tempAffine(1,1) = scale_factor; + tempAffine(2,2) = scale_factor; + tempAffine = *myDropZoneLocation; + *(Matrix4x4*)tempMatrix = tempAffine; + dpl_SetInstanceVisibility (myInstance, True); + dpl_FlushInstance (myInstance); + DPL_FLUSH_DCS (myDCS); + myRenderer->AddDynamicRenderable(this); +// cout<<"TranslocationRenderable Going Dynamic\n"; + } + break; + } + case InitialExpandState: + { + scale_factor = current_time - myEffectTimer; + if(scale_factor < 0.05f) + scale_factor = 0.05f; + if(scale_factor >= 1.0) + { + scale_factor = 1.0; + myState = HoldAtSizeState; + } + // Below is a hack to build a scaling identity matrix + float32* tempMatrix2 = dpl_GetDCSMatrix( myDCS ); + Check_Pointer ( tempMatrix2 ); + AffineMatrix tempAffine(True); + tempAffine(0,0) = scale_factor; + tempAffine(1,1) = scale_factor; + tempAffine(2,2) = scale_factor; + tempAffine = *myDropZoneLocation; + *(Matrix4x4*)tempMatrix2 = tempAffine; + DPL_FLUSH_DCS (myDCS); + break; + } + case HoldAtSizeState: + { + if((current_time - myEffectTimer) >= 3.0) + { + myState = ColapseState; + myEffectTimer = current_time + 1.0; + } + break; + } + case ColapseState: + { + scale_factor = myEffectTimer - current_time; + if(scale_factor < 0.05f) + { + scale_factor = 0.05f; + dpl_SetInstanceVisibility (myInstance, False); + dpl_FlushInstance (myInstance); + myState = IdleState; + myRenderer->RemoveDynamicRenderable(this); +// cout<<"TranslocationRenderable Going Static\n"; + } + // Below is a hack to build a scaling identity matrix + float32* tempMatrix2 = dpl_GetDCSMatrix( myDCS ); + Check_Pointer ( tempMatrix2 ); + AffineMatrix tempAffine(True); + tempAffine(0,0) = scale_factor; + tempAffine(1,1) = scale_factor; + tempAffine(2,2) = scale_factor; + tempAffine = *myDropZoneLocation; + *(Matrix4x4*)tempMatrix2 = tempAffine; + DPL_FLUSH_DCS (myDCS); + break; + } + } +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Constructor for SpinScaleQuatWatcherRenderable +// +SpinScaleQuatWatcherRenderable::SpinScaleQuatWatcherRenderable( + Entity *entity, // Entity to attach the renderable to + ExecutionType execution_type, // How/when to execute the renderable + dpl_OBJECT *graphical_object, // object to hang on the DCS, may be a list later + dpl_ZONE *this_zone, // DPL Zone this stuff will live in (for culling) + dpl_ISECT_MODE intersect_mode, // type of intersections to do on this object + uint32 intersect_mask, // intersection mask for the object + dpl_DCS *parent_DCS, // the parent DCS we will be offsetting from + LinearMatrix *offset_matrix, // offset matrix to be applied prior to joint DCS + StateIndicator *control, // the state dial that controls this renderable + unsigned effect_trigger_state,// the state that turns on the renderable + Quaternion *rotation_quaternion,// rotates the object + Vector3D *scale_vector, // Scales the object + Scalar z_spin_rate // spins the object about z (radians/frame) + ): +ChildOffsetRenderable( + entity, // Entity to attach the renderable to + execution_type, // How/when to execute the renderable + graphical_object, // object to hang on the DCS, may be a list later + this_zone, // DPL Zone this stuff will live in (for culling) + intersect_mode, // type of intersections to do on this object + intersect_mask, // intersection mask for the object + parent_DCS, // the parent DCS we will be offsetting from + offset_matrix) // offset matrix to be applied prior to joint DCS +{ + // + // Check the inbound data + // + Check(control); + Check(rotation_quaternion); + Check(scale_vector); + // + // Remember the entity that this renderable is attached to and the + // orientation matrix that offsets it to the correct position. + // + myControl = control; + myTriggerState = effect_trigger_state; + myVisible = False; + myRotationQuaternion = rotation_quaternion; + myScaleVector = scale_vector; + myZSpinRate = z_spin_rate; + OldZSpin = 0; + // + // Setup the dcs matrix to it's initial state + // + float32* tempMatrix = dpl_GetDCSMatrix( myDCS ); + Check_Pointer ( tempMatrix ); + AffineMatrix tempAffine(True); + tempAffine *= (*myScaleVector); + tempAffine *= (*myRotationQuaternion); + *(Matrix4x4*)tempMatrix = tempAffine; + dpl_FlushDCS ( myDCS ); + // + // Set the instance visibility correctly + // + dpl_SetInstanceVisibility ( myInstance, myVisible ); + dpl_FlushInstance ( myInstance ); +// +// Plug us into the watcher hook of the effect trigger state dial +// + myControl->AddVideoWatcher(this); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Destructor for SpinScaleQuatWatcherRenderable +// +SpinScaleQuatWatcherRenderable::~SpinScaleQuatWatcherRenderable() +{ + // + // Check our structure before we do anything + // + Check(this); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// TestInstance for the SpinScaleQuatWatcherRenderable +// +Logical + SpinScaleQuatWatcherRenderable::TestInstance() const +{ + // + // Call our parent's TestInstance first + // + ChildOffsetRenderable::TestInstance(); + Check(myControl); + return True; +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Execute for the SpinScaleQuatWatcherRenderable +// Nothing to execute here so we just pass it down to the next lower level. +// +void + SpinScaleQuatWatcherRenderable::Execute() +{ + // + // Check our variables + // + Check(this); + // + // Check data we're going to use and get our current state to a local variable + // +// cout<<"SpinScaleQuatWatcherRenderable::Execute "<GetState()<<"\n"; + if(myControl->GetState() == myTriggerState) + { + // + // We're in the trigger state, if we aren't already visible, make us + // visible and dynamic now. + // + if(!myVisible) + { + myVisible = True; + dpl_SetInstanceVisibility ( myInstance, True ); + dpl_FlushInstance ( myInstance ); + myRenderer->AddDynamicRenderable(this); +// cout<<"SpinScaleQuatWatcherRenderable Going Dynamic\n"; + } + // + // Now update the beam + // + OldZSpin += myZSpinRate; + if(OldZSpin > TWO_PI) + OldZSpin -= TWO_PI; + Hinge temp_hinge(Z_Axis, OldZSpin); + + float32* tempMatrix = dpl_GetDCSMatrix( myDCS ); + Check_Pointer ( tempMatrix ); + + AffineMatrix tempAffine(True); + Quaternion temp_quaternion; + temp_quaternion = temp_hinge; + tempAffine = temp_quaternion; + tempAffine *= (*myScaleVector); + tempAffine *= (*myRotationQuaternion); + *(Matrix4x4*)tempMatrix = tempAffine; + DPL_FLUSH_DCS ( myDCS ); + } + else + { + // + // We've left the trigger state, so if we're visible we make the beam + // invisible and go static. + // + if(myVisible) + { + myVisible = False; + dpl_SetInstanceVisibility ( myInstance, False ); + dpl_FlushInstance ( myInstance ); + myRenderer->RemoveDynamicRenderable(this); +// cout<<"SpinScaleQuatWatcherRenderable Going Static\n"; + } + } + // + // Call the execute method in our parent + // + ChildOffsetRenderable::Execute(); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Constructor for ScaleQuatWatcherRenderable +// +ScaleQuatWatcherRenderable::ScaleQuatWatcherRenderable( + Entity *entity, // Entity to attach the renderable to + ExecutionType execution_type, // How/when to execute the renderable + dpl_OBJECT *graphical_object, // object to hang on the DCS, may be a list later + dpl_ZONE *this_zone, // DPL Zone this stuff will live in (for culling) + dpl_ISECT_MODE intersect_mode, // type of intersections to do on this object + uint32 intersect_mask, // intersection mask for the object + dpl_DCS *parent_DCS, // the parent DCS we will be offsetting from + LinearMatrix *offset_matrix, // offset matrix to be applied prior to joint DCS + StateIndicator *control, // the state dial that controls this renderable + unsigned effect_trigger_state,// the state that turns on the renderable + Quaternion *rotation_quaternion,// rotates the object + Vector3D *scale_vector // Scales the object +): +ChildOffsetRenderable( + entity, // Entity to attach the renderable to + execution_type, // How/when to execute the renderable + graphical_object, // object to hang on the DCS, may be a list later + this_zone, // DPL Zone this stuff will live in (for culling) + intersect_mode, // type of intersections to do on this object + intersect_mask, // intersection mask for the object + parent_DCS, // the parent DCS we will be offsetting from + offset_matrix) // offset matrix to be applied prior to joint DCS +{ + // + // Check the inbound data + // + Check(control); + Check(rotation_quaternion); + Check(scale_vector); + // + // Remember the entity that this renderable is attached to and the + // orientation matrix that offsets it to the correct position. + // + myControl = control; + myTriggerState = effect_trigger_state; + myVisible = False; + myRotationQuaternion = rotation_quaternion; + myScaleVector = scale_vector; + // + // Setup the dcs matrix to it's initial state + // + float32* tempMatrix = dpl_GetDCSMatrix( myDCS ); + Check_Pointer ( tempMatrix ); + AffineMatrix tempAffine(True); + tempAffine *= (*myScaleVector); + tempAffine *= (*myRotationQuaternion); + *(Matrix4x4*)tempMatrix = tempAffine; + dpl_FlushDCS ( myDCS ); + // + // Set the instance visibility correctly + // + dpl_SetInstanceVisibility ( myInstance, myVisible ); + dpl_FlushInstance ( myInstance ); +// +// Plug us into the watcher hook of the effect trigger state dial +// + myControl->AddVideoWatcher(this); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Destructor for ScaleQuatWatcherRenderable +// +ScaleQuatWatcherRenderable::~ScaleQuatWatcherRenderable() +{ + // + // Check our structure before we do anything + // + Check(this); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// TestInstance for the ScaleQuatWatcherRenderable +// +Logical + ScaleQuatWatcherRenderable::TestInstance() const +{ + // + // Call our parent's TestInstance first + // + ChildOffsetRenderable::TestInstance(); + Check(myControl); + return True; +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Execute for the ScaleQuatWatcherRenderable +// Nothing to execute here so we just pass it down to the next lower level. +// +void + ScaleQuatWatcherRenderable::Execute() +{ + // + // Check our variables + // + Check(this); + // + // Check data we're going to use and get our current state to a local variable + // + //cout<<"ScaleQuatWatcherRenderable::Execute "<GetState()<<"\n"; + if(myControl->GetState() == myTriggerState) + { + // + // We're in the trigger state, if we aren't already visible, make us + // visible and dynamic now. + // + if(!myVisible) + { + myVisible = True; + dpl_SetInstanceVisibility ( myInstance, True ); + dpl_FlushInstance ( myInstance ); + myRenderer->AddDynamicRenderable(this); +// cout<<"ScaleQuatWatcherRenderable Going Dynamic\n"; + } + // + // Now update the beam + // + float32* tempMatrix = dpl_GetDCSMatrix( myDCS ); + Check_Pointer ( tempMatrix ); + AffineMatrix tempAffine(True); + tempAffine *= (*myScaleVector); + tempAffine *= (*myRotationQuaternion); + *(Matrix4x4*)tempMatrix = tempAffine; + DPL_FLUSH_DCS ( myDCS ); + } + else + { + // + // We've left the trigger state, so if we're visible we make the beam + // invisible and go static. + // + if(myVisible) + { + myVisible = False; + dpl_SetInstanceVisibility ( myInstance, False ); + dpl_FlushInstance ( myInstance ); + myRenderer->RemoveDynamicRenderable(this); +// cout<<"ScaleQuatWatcherRenderable Going Static\n"; + } + } +// if(*myTest != myVisible) +// { +// cout<<"myTest="<<*myTest<<" myVisible="< +# endif + +# if !defined(RETICLE_HPP) +# include +# endif + +# if !defined(SIMULATE_HPP) +# include +# endif + +# if !defined(LINMTRX_HPP) +# include +# endif + +# if !defined(CSTR_HPP) +# include +# endif + +# if !defined(SLOT_HPP) +# include +# endif + +#include +#include +#include +//===========================================================================// +//===========================================================================// +//===========================================================================// +//===========================================================================// +// All the stuff between these big ugly bars is the new video component stuff// + + typedef enum + { + NullVideoControlID = 0, + StartVideoControlID = 1, + StopVideoControlID = 2, + } VideoControlID; + + typedef enum + { + StaticVideoExecutionType = 0, + DynamicVideoExecutionType = 1, + WatcherVideoExecutionType = 2, + } VideoExecutionType; + + typedef enum + { + NotDPLComponentType = 0, + } DPLComponentType; + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Video component base class +// + class VideoComponent: + public Component + { + public: + // + //-------------------------------------------------------------------- + // Construction, Destruction, Testing + //-------------------------------------------------------------------- + // + VideoComponent( + Entity *entity, // Entity to attach the renderable to + VideoExecutionType execution_type); // How/when to execute the renderable + + ~VideoComponent(); + + Logical + TestInstance() const; + // + //-------------------------------------------------------------------- + // Add, handles establishing graphical hiearchal links between + // things like DCS's, Instances, geometry and so on. This does not + // establish a control path, only a graphical hiearchy. For each + // target type that something can be added to there is also an + // AddMeToTYPE(component) virtual (ie: AddMeToDCS) + //-------------------------------------------------------------------- + // + virtual void + Add( + VideoComponent *component_to_add); + virtual void + AddMeToDCS( + VideoComponent *component_to_add) + {Fail("Don't know how to add this component to a DCS\n");}; + virtual void + AddMeToInstance( + VideoComponent *component_to_add) + {Fail("Don't know how to add this component to an Instance\n");}; + virtual void + AddMeToScene( + VideoComponent *component_to_add) + {Fail("Don't know how to add this component to a Scene\n");}; + // + //-------------------------------------------------------------------- + // Connect, connects a control path between us and the component + // in the argument. The path goes from us to that element. + //-------------------------------------------------------------------- + // + virtual void + Connect( + VideoComponent *component_to_connect); + // + //-------------------------------------------------------------------- + // ReceiveControl, called by people connected to us to send control + // inputs to us. For the moment we will have several virtuals that + // accept different control types. + //-------------------------------------------------------------------- + // + virtual void + ReceiveControl( + VideoControlID control_ID, + Scalar control_value + ); + // + //-------------------------------------------------------------------- + // Execute + //-------------------------------------------------------------------- + // + void + Execute(); + + protected: + #if DEBUG_LEVEL > 0 + VideoExecutionType + myExecutionType; // We use this to test if the component is in the wrong list + #endif + + SlotOf + videoComponentSocket; + }; +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// DPLDCSWrapper class +// + class DPLDCSWrapper: + public VideoComponent + { + public: + // + //-------------------------------------------------------------------- + // Construction, Destruction, Testing + //-------------------------------------------------------------------- + // + DPLDCSWrapper( + Entity *entity, // Entity to attach the renderable to + VideoExecutionType execution_type, // How/when to execute the renderable + LinearMatrix initial_matrix); // Initial value to put into the matrix + + ~DPLDCSWrapper(); + + Logical + TestInstance() const; + + void + Add( + VideoComponent *component_to_add); + void + Connect( + VideoComponent *component_to_connect); + void + ReceiveControl( + VideoControlID control_ID, + Scalar control_value + ); + void + Execute(); + + protected: + dpl_DCS + *my_DCS; + }; + +//===========================================================================// +//===========================================================================// +//===========================================================================// +//===========================================================================// +// +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~New Class Hiearchy for Renderables~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Video renderable base class +// + class VideoRenderable: + public Component + { + public: + enum ExecutionType + { + Static = 0, + Dynamic, + Watcher, + Dependant, + NextExecutionType + }; + + VideoRenderable( + Entity *entity, // Entity to attach the renderable to + ExecutionType execution_type); // How/when to execute the renderable + + ~VideoRenderable(); + + Logical + TestInstance() const; + + void + Execute(); + + protected: + DPLRenderer + *myRenderer; // The renderer that owns this renderable + + Entity + *myEntity; // The entity we are linked to + + ExecutionType + myExecutionType; // How/when to execute the renderable + }; +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~This is a special class to speed up projectiles~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + class InnerProjectileRenderable: + public Component + { + public: + InnerProjectileRenderable( + dpl_OBJECT *graphical_object, // object to hang on the DCS, may be a list later + dpl_ZONE *this_zone); // DPL Zone this stuff will live in (for culling) + + ~InnerProjectileRenderable(); + + Logical + TestInstance() const; + + dpl_DCS* + GetDCS() + {return myDCS;} + + dpl_INSTANCE* + GetInstance() + {return myInstance;} + + protected: + dpl_DCS + *myDCS; + dpl_INSTANCE + *myInstance; + }; + + class ProjectileRootRenderable: + public VideoRenderable + { + public: + ProjectileRootRenderable( + Entity *entity, // Entity to attach the renderable to + ExecutionType execution_type, // How/when to execute the renderable + dpl_OBJECT *graphical_object, // object to hang on the DCS, may be a list later + dpl_ZONE *this_zone); // DPL Zone this stuff will live in (for culling) + + ~ProjectileRootRenderable(); + + Logical + TestInstance() const; + + void + Execute(); + protected: + InnerProjectileRenderable + *myInnerProjectile; + LinearMatrix + oldLocalToWorld; // The value of this matrix the last time through + }; +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// ChildLightRenderable +// This renderable is used to connect a light as a child of an existing DCS +// the light isn't setup to move on it's own and creates a DCS only for the +// purpose of offsetting it from it's parent. +// + class ChildLightRenderable: + public VideoRenderable + { + public: + + ChildLightRenderable( + Entity *entity, // Entity to attach the renderable to + ExecutionType execution_type, // How/when to execute the renderable + dpl_ZONE *this_zone, // DPL Zone this stuff will live in (for culling) + dpl_DCS *parent_DCS, // the parent DCS we will be offsetting from + LinearMatrix *offset_matrix, // offset matrix to be applied prior to joint DCS + Scalar red, // light color + Scalar green, + Scalar blue, + Scalar inner_radius, + Scalar outer_radius, + dpl_LIGHT_TYPE light_type, + int light_mask); + + ~ChildLightRenderable(); + + Logical + TestInstance() const; + + void + Execute(); + + protected: + dpl_LIGHT + *myLight; + dpl_DCS + *myDCS, + *myParentDCS; + dpl_ZONE + *myZone; + LinearMatrix + myOffsetMatrix; + }; + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// DPLObjectWrapper is a wrapper class that holds on to one of DPL's objects +// so it can be deleted properly at a later time. +// + class DPLObjectWrapper: + public VideoRenderable + { + public: + DPLObjectWrapper( + Entity *entity, // Entity to attach the renderable to + const CString &name, // Name of the DPL object to load into the wrapper + dpl_LOAD_MODE cache_mode); // DPL Zone this stuff will live in (for culling) + + ~DPLObjectWrapper(); + + Logical + TestInstance() const; + + dpl_OBJECT* + GetDPLObject() + {return myDPLObject;} + + CString* + GetDPLObjectName() + {return &myDPLObjectName;} + + void + Execute(); + + protected: + CString + myDPLObjectName; + dpl_LOAD_MODE + myCacheMode; + dpl_OBJECT + *myDPLObject; + }; +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// DCSObjectRenderable a subclass not intended to be used on it's own, it +// encapsulates the information that follows a DCS node around. Parameters +// marked with are allowed to be passed in as NULL values. +// + class DCSObjectRenderable: + public VideoRenderable + { + public: + DCSObjectRenderable( + Entity *entity, // Entity to attach the renderable to + ExecutionType execution_type, // How/when to execute the renderable + dpl_OBJECT *graphical_object, // object to hang on the DCS, may be a list later + dpl_ZONE *this_zone, // DPL Zone this stuff will live in (for culling) + dpl_ISECT_MODE intersect_mode, // type of intersections to do on this object + uint32 intersect_mask); // intersection mask for the object + + ~DCSObjectRenderable(); + + Logical + TestInstance() const; + + dpl_DCS* + GetDCS() + {return myDCS;} + dpl_INSTANCE* + GetInstance() + {return myInstance;} + + void + Execute(); + + protected: + dpl_OBJECT + *myDPLObject; + dpl_ZONE + *myDPLZone; + dpl_ISECT_MODE + myIntersectMode; + uint32 + myIntersectMask; + dpl_DCS + *myDCS; // The dpl DCS we create to hold the instance of this object + dpl_INSTANCE + *myInstance; // Instance that we hang on the DCS + }; +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// DCSInstanceRenderable Creates a DPL instance and binds it to a DCS. This +// is mainly used to insure these instances will be deleted properly when the +// object goes away. +// + class DCSInstanceRenderable: + public VideoRenderable + { + public: + DCSInstanceRenderable( + Entity *entity, // Entity to attach the renderable to + ExecutionType execution_type, // How/when to execute the renderable + dpl_OBJECT *graphical_object, // object to connect to the instance + dpl_DCS *parent_DCS, // the DCS to add the instance to + dpl_ISECT_MODE intersect_mode, // type of intersections to do on this object + uint32 intersect_mask, // intersection mask for the object + Logical visible); // initial visibility setting + + ~DCSInstanceRenderable(); + + Logical + TestInstance() const; + + dpl_INSTANCE* + GetInstance() + {return myInstance;} + + void + Execute(); + + protected: + dpl_OBJECT + *myDPLObject; + dpl_ISECT_MODE + myIntersectMode; + uint32 + myIntersectMask; + dpl_DCS + *myDCS; // The dpl DCS we create to hold the instance of this object + dpl_INSTANCE + *myInstance; // Instance that we hang on the DCS + }; +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// RootRenderable handles an entity that is assumed to be attached at the root +// of the DCS hiearchy. That is, it's connected to the scene rather than to +// another DCS. The root automatically connects up to entity->localToWorld +// + class RootRenderable: + public DCSObjectRenderable + { + public: + RootRenderable( + Entity *entity, // Entity to attach the renderable to + ExecutionType execution_type, // How/when to execute the renderable + dpl_OBJECT *graphical_object, // object to hang on the DCS, may be a list later + dpl_ZONE *this_zone, // DPL Zone this stuff will live in (for culling) + dpl_ISECT_MODE intersect_mode, // type of intersections to do on this object + uint32 intersect_mask); // intersection mask for the object + + ~RootRenderable(); + + Logical + TestInstance() const; + + void + Execute(); + + protected: + LinearMatrix + oldLocalToWorld; // The value of this matrix the last time through + + }; +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// ChildOffsetRenderable is an intermediate layer that establishes a DCS to handle +// a static offset matrix to be applied prior to the DCS that actually carries +// joint and geometry information. This is not intended to ever be used +// directly. +// + class ChildOffsetRenderable: + public DCSObjectRenderable + { + public: + ChildOffsetRenderable( + Entity *entity, // Entity to attach the renderable to + ExecutionType execution_type, // How/when to execute the renderable + dpl_OBJECT *graphical_object, // object to hang on the DCS, may be a list later + dpl_ZONE *this_zone, // DPL Zone this stuff will live in (for culling) + dpl_ISECT_MODE intersect_mode, // type of intersections to do on this object + uint32 intersect_mask, // intersection mask for the object + dpl_DCS *parent_DCS, // the parent DCS we will be offsetting from + LinearMatrix *offset_matrix); // offset matrix to be applied prior to joint DCS + + ~ChildOffsetRenderable(); + + Logical + TestInstance() const; + + void + Execute(); + + protected: + LinearMatrix + myOffsetMatrix; // The offset to apply prior to the joint DCS + dpl_DCS + *myParentDCS, // Pointer to our parent DCS + *myOffsetDCS; // The dpl DCS we create to hold the offset from our parent. + }; +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// HingeRenderable Handles controlling a joint by way of a munga HINGE class +// attribute. +// + class HingeRenderable: + public ChildOffsetRenderable + { + public: + HingeRenderable( + Entity *entity, // Entity to attach the renderable to + ExecutionType execution_type, // How/when to execute the renderable + dpl_OBJECT *graphical_object, // object to hang on the DCS, may be a list later + dpl_ZONE *this_zone, // DPL Zone this stuff will live in (for culling) + dpl_ISECT_MODE intersect_mode, // type of intersections to do on this object + uint32 intersect_mask, // intersection mask for the object + dpl_DCS *parent_DCS, // the parent DCS we will be offsetting from + LinearMatrix *offset_matrix, // offset matrix to be applied prior to joint DCS + const Hinge *my_hinge); // Hinge attribute we will use to control the joint + + ~HingeRenderable(); + + Logical + TestInstance() const; + + void + Execute(); + + protected: + const Hinge + *myHinge; // Pointer to the hinge attribute we use to modify the DCS + Hinge + oldHinge; // Copy of the last value of hinge + }; +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// SpinScaleQuatRenderable Handles creates a spinning scaled quaternion controlled +// effect. +// + class SpinScaleQuatRenderable: + public ChildOffsetRenderable + { + public: + SpinScaleQuatRenderable( + Entity *entity, // Entity to attach the renderable to + ExecutionType execution_type, // How/when to execute the renderable + dpl_OBJECT *graphical_object, // object to hang on the DCS, may be a list later + dpl_ZONE *this_zone, // DPL Zone this stuff will live in (for culling) + dpl_ISECT_MODE intersect_mode, // type of intersections to do on this object + uint32 intersect_mask, // intersection mask for the object + dpl_DCS *parent_DCS, // the parent DCS we will be offsetting from + LinearMatrix *offset_matrix, // offset matrix to be applied prior to joint DCS + Quaternion *rotation_quaternion,// rotates the object + Vector3D *scale_vector, // Scales the object + Logical *visible, // turns the object on and off + Scalar z_spin_rate); // spins the object about z (radians/frame) + + ~SpinScaleQuatRenderable(); + + Logical + TestInstance() const; + + void + Execute(); + + protected: + Quaternion + *myRotationQuaternion; + Vector3D + *myScaleVector; + Logical + *myVisible, + OldVisible; + Scalar + myZSpinRate, + OldZSpin; + }; +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// BallJointRenderable Handles controlling a joint by way of a munga eulers +// + class BallJointRenderable: + public ChildOffsetRenderable + { + public: + BallJointRenderable( + Entity *entity, // Entity to attach the renderable to + ExecutionType execution_type, // How/when to execute the renderable + dpl_OBJECT *graphical_object, // object to hang on the DCS, may be a list later + dpl_ZONE *this_zone, // DPL Zone this stuff will live in (for culling) + dpl_ISECT_MODE intersect_mode, // type of intersections to do on this object + uint32 intersect_mask, // intersection mask for the object + dpl_DCS *parent_DCS, // the parent DCS we will be offsetting from + LinearMatrix *offset_matrix, // offset matrix to be applied prior to joint DCS + const EulerAngles *my_euler); // Euler angles to control rotation of the ball joint + + ~BallJointRenderable(); + + Logical + TestInstance() const; + + void + Execute(); + + protected: + const EulerAngles + *myEuler; // Pointer to the hinge attribute we use to modify the DCS + EulerAngles + oldEuler; // Copy of the last value of hinge + }; +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// BallTranslateJointRenderable Handles controlling a joint by way of a munga eulers +// + class BallTranslateJointRenderable: + public ChildOffsetRenderable + { + public: + BallTranslateJointRenderable( + Entity *entity, // Entity to attach the renderable to + ExecutionType execution_type, // How/when to execute the renderable + dpl_OBJECT *graphical_object, // object to hang on the DCS, may be a list later + dpl_ZONE *this_zone, // DPL Zone this stuff will live in (for culling) + dpl_ISECT_MODE intersect_mode, // type of intersections to do on this object + uint32 intersect_mask, // intersection mask for the object + dpl_DCS *parent_DCS, // the parent DCS we will be offsetting from + LinearMatrix *offset_matrix, // offset matrix to be applied prior to joint DCS + const EulerAngles *my_euler, // Euler angles to control rotation of the ball joint + const Point3D *my_translation); // offset for the translation part of the joint + + ~BallTranslateJointRenderable(); + + Logical + TestInstance() const; + + void + Execute(); + + protected: + const Point3D + *myTranslation; + Point3D + oldTranslation; + + const EulerAngles + *myEuler; // Pointer to the hinge attribute we use to modify the DCS + EulerAngles + oldEuler; // Copy of the last value of hinge + }; +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// POVTranslocateRenderable generates a translocation effect from the point of +// view of a player. + class POVTranslocateRenderable: + public VideoRenderable // from the POV of the player + { + public: + POVTranslocateRenderable( + Entity *entity, // Entity to attach the renderable to + ExecutionType execution_type, // How/when to execute the renderable + dpl_ZONE *this_zone, // DPL zone the world is in + dpl_ZONE *death_zone, // DPL zone the player's VTV and death effect are in + dpl_DCS *parent_DCS, // the parent DCS we will be offsetting from + StateIndicator *effect_trigger, // State dial we use to control the translocation + unsigned effect_control_state); // State that controls start/end of the effect + + ~POVTranslocateRenderable(); + + Logical + TestInstance() const; + + void + Execute(); + + protected: + enum TranslocateState + { + IdleState, + FlashScreenState, + InitialCollapseState, + WaitForReincarnateState, + ExpandRevealState + }; + + TranslocateState + myState; + + int + myEffectControlState; + + Scalar + myRotateY, + myRotateYSpeed, + myCollapseEnd; + + StateIndicator + *myEffectTrigger; // trigger effect when this changes + + dpl_INSTANCE + *myInstance; + + dpl_DCS + *myParentDCS, // Pointer to our parent DCS + *myDCS; + + dpl_ZONE + *myDeathZone, + *myZone; + + }; +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// POVStartEndRenderable generates a translocation effect from the point of +// view of a player. + class POVStartEndRenderable: + public VideoRenderable // from the POV of the player + { + public: + POVStartEndRenderable( + Entity *entity, // Entity to attach the renderable to + ExecutionType execution_type, // How/when to execute the renderable + dpl_ZONE *this_zone, // DPL zone the world is in + dpl_ZONE *death_zone, // DPL zone the player's VTV and death effect are in + dpl_VIEW *this_view, // The view containing our eye + StateIndicator *effect_trigger, // State dial we use to control the translocation + float red_fog, // Fog color + float green_fog, + float blue_fog, + float near_fog, // The near fog plane + float far_fog, // The far fog plane + unsigned start_mission_state, // State that signals start of mission + unsigned end_mission_state); // State that signals end of mission + + ~POVStartEndRenderable(); + + Logical + TestInstance() const; + + void + Execute(); + + protected: + enum StartEndState + { + WaitForStartState, + FlashScreenState, + FadeInState, + MissionRunningState, + FadeOutState + }; + + StartEndState + myState; + + int + myStartMissionState, // Signals mission is starting but player can't move yet + myEndMissionState; // Signals mission is ending + + float + myFogRed, + myFogGreen, + myFogBlue, + myFogNear, + myFogFar; + + Scalar + myStateTimer; + + StateIndicator + *myEffectTrigger; // trigger effect when this changes + + dpl_ZONE + *myDeathZone, + *myZone; + + dpl_VIEW + *myView; + + }; +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// ReticleRenderable drawing a static or dynamic reticle in the 2D layer of the +// screen. +// + class ReticleRenderable: + public VideoRenderable + { + public: + ReticleRenderable( + Entity *entity, // Entity to attach the renderable to + ExecutionType execution_type, // How/when to execute the renderable + Reticle **my_reticle, // points to renderable reticle pointer that points to entity's reticle + dpl_VIEW *this_view); // the view associated with our eye + + ~ReticleRenderable(); + + Logical + TestInstance() const; + + void + Execute(); + + protected: + + Vector2DOf + myOldReticlePosition; // Last known position of the reticle + + Reticle::ReticleState + myOldReticleState; // Last known state of the reticle + + Reticle + **rendererReticle, // Points to renderer's reticle pointer + *myReticle; // Points directly to reticle in entity + + dpl_VIEW + *myView; + + dpl2d_DISPLAY + *myReticleDisplayList, + *myPositionDisplayList; + + }; +#define MAX_PLAYER_NAMES 12 +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Shows Player bitmap for the CameraShip +// +// + class CameraShipHUDRenderable : + public VideoRenderable + { + public: + + CameraShipHUDRenderable( + Entity *entity, + ExecutionType execution_type, + int *player_index, + Logical *display_ranking_window + ); + + ~CameraShipHUDRenderable(); + + Logical + TestInstance() const; + + void + Execute(); + + protected: + + int + playerCount; + + int + oldFollowedPlayerIndex, + *followedPlayerIndex; + + int + **playerRank, + *oldPlayerRank; + + Logical + *displayRankingWindow, + oldDisplayRankingWindow; + + dpl_OBJECT + *playerNameObject[MAX_PLAYER_NAMES], + *ordinalObject[MAX_PLAYER_NAMES]; + + dpl_DCS + *followedNameDCS, + *followedOrdinalDCS; + + dpl_INSTANCE + *followedNameInstance, + *followedOrdinalInstance; + + dpl_DCS + *rankingWindowDCS, + **nameDCS, + **rankDCS; + + dpl_INSTANCE + **nameInstance, + **rankInstance; + }; + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// This class is used to store a stack of threat vectors +// + class VectorStackElement: + public Plug + { + public: + VectorStackElement( + float add_time, // Time when this threat was added + Vector2DOf *vector_to_stack) // The vector to stack up + {myAddTime = add_time; myVector = *vector_to_stack;myRecent=True;} + + ~VectorStackElement(){}; + + Logical + TestInstance() const + {Check(&myVector);return(True);} + + Vector2DOf + myVector; + float + myAddTime; + Logical + myRecent; + }; +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// DCSMorphObjectRenderable a subclass not intended to be used on it's own, it +// encapsulates the information that needed to construct a destination dpl_Object +// by morphing two existing objects into it. +// + class DCSMorphObjectRenderable: + public VideoRenderable + { + public: + DCSMorphObjectRenderable( + Entity *entity, // Entity to attach the renderable to + ExecutionType execution_type, // How/when to execute the renderable + dpl_OBJECT *destination_object, // destination + dpl_OBJECT *start_object, // start object + dpl_OBJECT *end_object, // end object + Scalar *morph_control, // pointer to control variable + int32 morph_mode, // Defines type of morph to do + dpl_ZONE *this_zone, // DPL Zone this stuff will live in (for culling) + dpl_ISECT_MODE intersect_mode, // type of intersections to do on this object + uint32 intersect_mask); // intersection mask for the object + + ~DCSMorphObjectRenderable(); + + Logical + TestInstance() const; + + dpl_DCS* + GetDCS() + {return myDCS;} + + void + Execute(); + + protected: + int32 + myMorphMode; + Scalar + oldMorphControl, + *myMorphControl; + dpl_OBJECT + *myStartObject, + *myEndObject, + *myDPLObject; + dpl_ZONE + *myDPLZone; + dpl_ISECT_MODE + myIntersectMode; + uint32 + myIntersectMask; + dpl_DCS + *myDCS; // The dpl DCS we create to hold the instance of this object + dpl_INSTANCE + *myInstance; // Instance that we hang on the DCS + }; +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// ScalingExplosionRenderable Handles controlling a joint by way of a munga HINGE class +// attribute. +// + class ScalingExplosionRenderable: + public ChildOffsetRenderable + { + public: + ScalingExplosionRenderable( + Entity *entity, // Entity to attach the renderable to + ExecutionType execution_type, // How/when to execute the renderable + dpl_OBJECT *graphical_object, // This will be the scaling explosion object + dpl_ZONE *this_zone, // DPL Zone this stuff will live in (for culling) + dpl_ISECT_MODE intersect_mode, // type of intersections to do on this object + uint32 intersect_mask, // intersection mask for the object + dpl_DCS *parent_DCS, // the parent DCS we will be offsetting from + LinearMatrix *offset_matrix, // offset matrix to be applied prior to joint DCS + Vector3D *control_vector, // Effect control vector, Y is acceleration, X, Z are velocity + Vector3D *accel_vector, // rate of change of control vector + Scalar gravity, + int *trigger); + + ~ScalingExplosionRenderable(); + + Logical + TestInstance() const; + + void + Execute(); + + protected: + int + *myTrigger; + Scalar + myVelocity, + myGravity; + Point3D + myTranslation; + Vector3D + myVelocityChange, + myScalingVector, // Controls scaling of the explosion + myVelocityVector; // Scaling velocity (rate of change) + }; +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// RootMorphRenderable handles an entity that is assumed to be attached at the root +// of the DCS hiearchy. That is, it's connected to the scene rather than to +// another DCS. The root automatically connects up to entity->localToWorld +// + class RootMorphRenderable: + public DCSMorphObjectRenderable + { + public: + RootMorphRenderable( + Entity *entity, // Entity to attach the renderable to + ExecutionType execution_type, // How/when to execute the renderable + dpl_OBJECT *destination_object, // destination + dpl_OBJECT *start_object, // start object + dpl_OBJECT *end_object, // end object + Scalar *morph_control, // pointer to control variable + int32 morph_mode, // Defines type of morph to do + dpl_ZONE *this_zone, // DPL Zone this stuff will live in (for culling) + dpl_ISECT_MODE intersect_mode, // type of intersections to do on this object + uint32 intersect_mask); // intersection mask for the object + + ~RootMorphRenderable(); + + Logical + TestInstance() const; + + void + Execute(); + + protected: + LinearMatrix + oldLocalToWorld; // The value of this matrix the last time through + + }; +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// ChildMorphRenderable +// + class ChildMorphRenderable: + public DCSMorphObjectRenderable + { + public: + ChildMorphRenderable( + Entity *entity, // Entity to attach the renderable to + ExecutionType execution_type, // How/when to execute the renderable + dpl_OBJECT *destination_object, // destination + dpl_OBJECT *start_object, // start object + dpl_OBJECT *end_object, // end object + Scalar *morph_control, // pointer to control variable + int32 morph_mode, // Defines type of morph to do + dpl_ZONE *this_zone, // DPL Zone this stuff will live in (for culling) + dpl_ISECT_MODE intersect_mode, // type of intersections to do on this object + uint32 intersect_mask, // intersection mask for the object + dpl_DCS *parent_DCS); // the parent DCS we will be offsetting from + + ~ChildMorphRenderable(); + + Logical + TestInstance() const; + + void + Execute(); + + protected: + + }; +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// OneShotDelayRenderable +// This renderable delays for a fixed amount after it's creation, then turns on +// a trigger attribute. It is used for the triggering of other renderables a +// fixed time after an object is created. + + class OneShotDelayRenderable: + public VideoRenderable + { + public: + OneShotDelayRenderable( + Entity *entity, // Entity to attach the renderable to + ExecutionType execution_type, // How/when to execute the renderable + Scalar delay_time, // How long to wait before raising the trigger + Scalar duration_time = 0.0f // How long trigger is up (0.0 == stay up) + ); + + ~OneShotDelayRenderable(); + + Logical + TestInstance() const; + + int* + GetTriggerAttribute() + {return &myTriggerAttribute;} + + void + Execute(); + + protected: + enum + { + WaitingForTriggerTime, + WaitingForTriggerEndTime, + WaitingForEternity + } myState; + Logical + myEndTimeFlag; + Scalar + myTriggerTime, + myTriggerEndTime; + int + myTriggerAttribute; + }; +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// SweepRenderable +// When triggered this renderable sweeps it's output attribute from 0.0 to 1.0 +// over a preset time interval. Used for controling morphs. + class SweepRenderable: + public VideoRenderable + { + public: + enum SweepFunction + { + Y_EQUALS_X = 0, + Y_SQR_X + }; + + SweepRenderable( + Entity *entity, // Entity to attach the renderable to + ExecutionType execution_type, // How/when to execute the renderable + Scalar delay_time, // How long to take to sweep from 0 to 1 + int cycles, // number of times to cycle before stopping + int *trigger, // Starts the sweep generator when it goes 1 + Scalar start_value = 0.0f, // Initial value of sweep + Scalar end_value = 1.0f, // Final value of sweep + SweepFunction sweep_function = Y_EQUALS_X // function applied to sweep + ); + + ~SweepRenderable(); + + Logical + TestInstance() const; + + Scalar* + GetSweepAttribute() + {return &mySweepAttribute;} + + void + Execute(); + + protected: + int + fakeTrigger, + oldMyTrigger, + *myTrigger, + myCycleCount, + myCyclesLeft; + SweepFunction + mySweepFunction; + Scalar + myStartValue, + myEndValue, + mySweepStart, + mySweepTime, + mySweepAttribute; + }; +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// DPLEffectRenderable +// This routine handles the creation of a DPL special effect whenever the +// trigger attribute changes. This is an edge triggered renderable and will +// generate an effect on ANY form of state change. The only way to effect the +// size and speed of the effect is by way of the DPL effect tables. + + class DPLEffectRenderable: + public VideoRenderable + { + public: + DPLEffectRenderable( + Entity *entity, // Entity to attach the renderable to + ExecutionType execution_type, // How/when to execute the renderable + int *trigger, // address containing the trigger + int effect_type, // DPL effect number to trigger + dpl_DCS *effect_DCS, // DCS the effect is relative to (may be NULL) + Point3D *offset_point); // Offset (or world coordinants if DCS is NULL) + + ~DPLEffectRenderable(); + + Logical + TestInstance() const; + + void + Execute(); + + protected: + int + *myTrigger, + oldMyTrigger, + myEffectType; + dpl_DCS + *myEffectDCS; + Point3D + myEffectOffset; + }; +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + class PullFogRenderable: + public VideoRenderable + { + public: + PullFogRenderable( + Entity *entity, // Entity to attach the renderable to + ExecutionType execution_type, // How/when to execute the renderable + Logical *light_1, + Logical *light_2); // address containing the trigger + ~PullFogRenderable(); + Logical + TestInstance() const; + void + Execute(); + protected: + Logical + *myLight1, + *myLight2, + myOldLight1, + myOldLight2; + }; +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// DPLPSFXRenderable +// This routine handles the creation of a DPL special effect whenever the +// trigger attribute changes. This is an edge triggered renderable and will +// generate an effect on ANY form of state change. The only way to effect the +// size and speed of the effect is by way of the DPL effect tables. + + class DPLPSFXRenderable: + public VideoRenderable + { + public: + DPLPSFXRenderable( + Entity *entity, // Entity to attach the renderable to + ExecutionType execution_type, // How/when to execute the renderable + int *trigger, // address containing the trigger + dpl_PARTICLESTART_EFFECT_INFO *psfx_definition, // name of file with the PFX description in it + dpl_DCS *effect_DCS, // DCS the effect is relative to (may be NULL) + Point3D *offset_point); // Offset (or world coordinants if DCS is NULL) + + ~DPLPSFXRenderable(); + + Logical + TestInstance() const; + + void + Execute(); + + protected: + dpl_PARTICLESTART_EFFECT_INFO + myPSFXInfo; + int + *myTrigger, + myOldTrigger; + dpl_DCS + *myEffectDCS; + Point3D + myEffectOffset; + }; +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Constructor for DPLPSFXStateRenderable +// This routine triggers a pfx whenever a state dial transitions to a designated +// state. +// NOTE this currently does NOT trigger if the state dial is in the trigger state +// when this renderable is created. +// + + class DPLPSFXStateRenderable: + public VideoRenderable + { + public: + + DPLPSFXStateRenderable( + Entity *entity, // Entity to attach the renderable to + ExecutionType execution_type, // How/when to execute the renderable + StateIndicator *effect_trigger, // Trigger effect when this state changes + unsigned my_trigger, // The state to edge trigger on + dpl_PARTICLESTART_EFFECT_INFO *psfx_definition, // name of file with the PFX description in it + dpl_DCS *effect_DCS, // DCS the effect is relative to (may be NULL) + Point3D *offset_point); // Offset (or world coordinants if DCS is NULL) + + ~DPLPSFXStateRenderable(); + + Logical + TestInstance() const; + + void + Execute(); + + protected: + dpl_PARTICLESTART_EFFECT_INFO + myPSFXInfo; + unsigned + myTriggerState; + StateIndicator + *myStateDial; + dpl_DCS + *myEffectDCS; + Point3D + myEffectOffset; + }; +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// DPLMaterialRenderable +// This renderable creates a DPL Material structure and encapsulates it so +// it will be properly deleted when the object it's part of gets deleted. + class DPLMaterialRenderable: + public VideoRenderable + { + public: + DPLMaterialRenderable( + Entity *entity, // Entity to attach the renderable to + ExecutionType execution_type, // How/when to execute the renderable + Scalar ambient_red, // Material's ambient component + Scalar ambient_green, + Scalar ambient_blue, + Scalar emissive_red, // Material's emissive component + Scalar emissive_green, + Scalar emissive_blue, + Scalar diffuse_red, // Material's diffuse component + Scalar diffuse_green, + Scalar diffuse_blue, + Scalar specular_red, // Material's specular component + Scalar specular_green, + Scalar specular_blue, + Scalar specular_shininess, + Scalar opacity_red, // Material's opacity + Scalar opacity_green, + Scalar opacity_blue, + dpl_TEXTURE *texture, // Material's texture pointer + Scalar z_dither, // Material's Z dither value + int fog_immune); // Material's Fog Imunity value + + ~DPLMaterialRenderable(); + + dpl_MATERIAL* + GetMaterial() + {return myMaterial;} + + Logical + TestInstance() const; + + void + Execute(); + + protected: + dpl_MATERIAL + *myMaterial; + }; +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Constructor for MorphMaterialRenderable +// This renderable takes two material specifications and loads up a third +// material with a morph between the first two. + class MorphMaterialRenderable: + public DPLMaterialRenderable + { + public: + MorphMaterialRenderable( + Entity *entity, // Entity to attach the renderable to + ExecutionType execution_type, // How/when to execute the renderable + Scalar ambient_red_1, // Material's ambient component + Scalar ambient_green_1, + Scalar ambient_blue_1, + Scalar emissive_red_1, // Material's emissive component + Scalar emissive_green_1, + Scalar emissive_blue_1, + Scalar diffuse_red_1, // Material's diffuse component + Scalar diffuse_green_1, + Scalar diffuse_blue_1, + Scalar specular_red_1, // Material's specular component + Scalar specular_green_1, + Scalar specular_blue_1, + Scalar specular_shininess_1, + Scalar opacity_red_1, // Material's opacity + Scalar opacity_green_1, + Scalar opacity_blue_1, + dpl_TEXTURE *texture_1, // Material's texture pointer + Scalar z_dither_1, // Material's Z dither value + int fog_immune_1, // Material's Fog Imunity value + Scalar ambient_red_2, // Material's ambient component + Scalar ambient_green_2, + Scalar ambient_blue_2, + Scalar emissive_red_2, // Material's emissive component + Scalar emissive_green_2, + Scalar emissive_blue_2, + Scalar diffuse_red_2, // Material's diffuse component + Scalar diffuse_green_2, + Scalar diffuse_blue_2, + Scalar specular_red_2, // Material's specular component + Scalar specular_green_2, + Scalar specular_blue_2, + Scalar specular_shininess_2, + Scalar opacity_red_2, // Material's opacity + Scalar opacity_green_2, + Scalar opacity_blue_2, + Scalar z_dither_2, // Material's Z dither value + Scalar *morph_control); + + ~MorphMaterialRenderable(); + + dpl_MATERIAL* + GetMaterial() + {return myMaterial;} + + Logical + TestInstance() const; + + void + Execute(); + + protected: + int + myFogImmune1; + dpl_TEXTURE + *myTexture1; + + Scalar + myAmbientRed1, + myAmbientGreen1, + myAmbientBlue1, + myEmissiveRed1, + myEmissiveGreen1, + myEmissiveBlue1, + myDiffuseRed1, + myDiffuseGreen1, + myDiffuseBlue1, + mySpecularRed1, + mySpecularGreen1, + mySpecularBlue1, + mySpecularShininess1, + myOpacityRed1, + myOpacityGreen1, + myOpacityBlue1, + myZDither1, + myAmbientRed2, + myAmbientGreen2, + myAmbientBlue2, + myEmissiveRed2, + myEmissiveGreen2, + myEmissiveBlue2, + myDiffuseRed2, + myDiffuseGreen2, + myDiffuseBlue2, + mySpecularRed2, + mySpecularGreen2, + mySpecularBlue2, + mySpecularShininess2, + myOpacityRed2, + myOpacityGreen2, + myOpacityBlue2, + myZDither2, + *myMorphControl, + oldMorphControl, + myAmbientRed, + myAmbientGreen, + myAmbientBlue, + myEmissiveRed, + myEmissiveGreen, + myEmissiveBlue, + myDiffuseRed, + myDiffuseGreen, + myDiffuseBlue, + mySpecularRed, + mySpecularGreen, + mySpecularBlue, + mySpecularShininess, + myOpacityRed, + myOpacityGreen, + myOpacityBlue, + myZDither; + }; +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Constructor for DPLDamageMaterialRenderable +// This renderable handles modifying a material in response to damage. We +// get the pointer to an existing DPL material on startup and we get out +// color and texture settings from that + class DPLDamageMaterialRenderable: + public VideoRenderable + { + public: + DPLDamageMaterialRenderable( + Entity *entity, // Entity to attach the renderable to + ExecutionType execution_type, // How/when to execute the renderable + dpl_MATERIAL *damage_material, // The material we want to control + Scalar *damage_attribute, // The attribute containing the current damage level + Scalar damage_percent); // Degradation factor to make damaged material + + ~DPLDamageMaterialRenderable(); + + Logical + TestInstance() const; + + void + Execute(); + + protected: + dpl_MATERIAL + *myMaterial; + Scalar + *myDamageAttribute, + oldDamageAttribute, + myAmbientRed1, + myAmbientGreen1, + myAmbientBlue1, + myEmissiveRed1, + myEmissiveGreen1, + myEmissiveBlue1, + myDiffuseRed1, + myDiffuseGreen1, + myDiffuseBlue1, + mySpecularRed1, + mySpecularGreen1, + mySpecularBlue1, + mySpecularShininess1, + myOpacityRed1, + myOpacityGreen1, + myOpacityBlue1, + myAmbientRed2, + myAmbientGreen2, + myAmbientBlue2, + myEmissiveRed2, + myEmissiveGreen2, + myEmissiveBlue2, + myDiffuseRed2, + myDiffuseGreen2, + myDiffuseBlue2, + mySpecularRed2, + mySpecularGreen2, + mySpecularBlue2, + mySpecularShininess2, + myOpacityRed2, + myOpacityGreen2, + myOpacityBlue2, + myAmbientRed, + myAmbientGreen, + myAmbientBlue, + myEmissiveRed, + myEmissiveGreen, + myEmissiveBlue, + myDiffuseRed, + myDiffuseGreen, + myDiffuseBlue, + mySpecularRed, + mySpecularGreen, + mySpecularBlue, + mySpecularShininess, + myOpacityRed, + myOpacityGreen, + myOpacityBlue; + }; +// From here to the row of ### is pretty kludgy stuff to allow dave to prototype +// some explosion stuff. +// I expect to replace most of it within a week with the all-new micro +// renderable system. +// +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// InstanceSwitchRenderable + class InstanceSwitchRenderable: + public VideoRenderable + { + public: + InstanceSwitchRenderable( + Entity *entity, // Entity to attach the renderable to + ExecutionType execution_type, // How/when to execute the renderable + dpl_INSTANCE *this_instance, // the instance to control + Logical sense, // instance on when trigger is.... + int *trigger); // true if the instance is on, false if off + + ~InstanceSwitchRenderable(); + + Logical + TestInstance() const; + + void + Execute(); + + protected: + Logical + mySense; + dpl_INSTANCE + *myInstance; + int + *myTriggerAttribute, + oldTriggerAttribute; + }; +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// StateInstanceSwitchRenderable + class StateInstanceSwitchRenderable: + public VideoRenderable + { + public: + StateInstanceSwitchRenderable( + Entity *entity, // Entity to attach the renderable to + ExecutionType execution_type, // How/when to execute the renderable + dpl_INSTANCE *this_instance, // the instance to control + Logical sense, // true to turn on in this state, false for off + StateIndicator *state_dial, // State dial we use to control the on/off + unsigned trigger_state); // State that we look for + + ~StateInstanceSwitchRenderable(); + + Logical + TestInstance() const; + + void + Execute(); + + protected: + Logical + myLastInstanceState, + mySense; + dpl_INSTANCE + *myInstance; + unsigned + myTriggerState; + StateIndicator + *myStateDial; + + }; +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// MakeDCSFall + class MakeDCSFall: + public VideoRenderable + { + public: + MakeDCSFall( + Entity *entity, // Entity to attach the renderable to + ExecutionType execution_type, // How/when to execute the renderable + dpl_DCS *this_DCS, // the DCS to control + Scalar gravity, // Gravity in meters/sec squared + int *trigger); // true if the instance is on, false if off + + ~MakeDCSFall(); + + Logical + TestInstance() const; + + void + Execute(); + + protected: + dpl_DCS + *myDCS; + int + *myTrigger, + fakeTrigger, + oldMyTrigger; + Point3D + myDisplacement; + Scalar + myFallStart, + myHalfAcceleration; + }; + + +// +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~End of the new renderable class hiearchy~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~Dynamic Renderables~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// + //########################################################################## + class DPLEyeRenderable: // this renderable handles a dynamic eyepoint + public Component + { + public: + DPLEyeRenderable( + Entity* This_Entity, + dpl_ZONE* This_Zone, + const LinearMatrix& Offset_Matrix, + dpl_DCS* Parent_DCS, + dpl_VIEW* This_View, + EulerAngles* eyepoint_rotation + ); + ~DPLEyeRenderable(); + + dpl_DCS* + GetDCS() + {return myDCS;} + + Logical + TestInstance() const; + + protected: + + void + Execute(); + + dpl_DCS + *myDCS, + *myParentDCS; + + LinearMatrix + myOrientationMatrix; + + EulerAngles + *myEyepointRotation, + oldEyepointRotation; + + Entity + *myEntity; + }; + + //########################################################################## + class DPLChildPointRenderable: // this is a child DCS carrying an instance + public Component + { + public: + DPLChildPointRenderable( + Entity *This_Entity, + dpl_ZONE *This_Zone, + dpl_OBJECT *Graphic_Object, + dpl_ISECT_MODE Intersect_Mode, + uint32 Intersect_Mask, + const LinearMatrix &Offset_Matrix, + dpl_DCS *Parent_DCS, + Point3D *my_point + ); + ~DPLChildPointRenderable(); + + dpl_DCS* + GetDCS() + {return myDCS;} + + Logical + TestInstance() const; + + protected: + + void + Execute(); + + dpl_DCS + *myOffsetDCS, + *myDCS, + *myParentDCS; + + dpl_INSTANCE + *myInstance; + + LinearMatrix + OrientationMatrix; + + Entity + *myEntity; + Point3D + *myPoint, + OldPoint; + }; + //########################################################################## + class DPLScaleRenderable: // This is a DCS that responds to scaling + public Component + { + public: + DPLScaleRenderable( + Entity *This_Entity, + dpl_ZONE *This_Zone, + dpl_OBJECT *Graphic_Object, + dpl_ISECT_MODE Intersect_Mode, + uint32 Intersect_Mask, + const LinearMatrix &Offset_Matrix, + dpl_DCS *Parent_DCS, + Vector3D *my_scale_vector, + Logical *visible + ); + ~DPLScaleRenderable(); + +// dpl_DCS* // we don't allow this (yet) because it prevents +// GetDCS() // people from hooking up children to this renderable +// {return myDCS;} + + Logical + TestInstance() const; + + protected: + + void + Execute(); + Logical + *myVisible, + OldVisible; + dpl_DCS + *myDCS, + *myParentDCS; + + dpl_INSTANCE + *myInstance; + + AffineMatrix + OffsetMatrix; + + Entity + *myEntity; + + Vector3D + *myScaleVector, + OldScaleVector; + }; + //########################################################################## + class DPLScaleQuatRenderable: // This is a DCS that responds to scaling and quaterninons + public Component + { + public: + DPLScaleQuatRenderable( + Entity *This_Entity, + dpl_ZONE *This_Zone, + dpl_OBJECT *Graphic_Object, + dpl_ISECT_MODE Intersect_Mode, + uint32 Intersect_Mask, + const LinearMatrix &Offset_Matrix, + dpl_DCS *Parent_DCS, + Quaternion *rotation_quaternion, + Vector3D *my_scale_vector, + Logical *visible + ); + ~DPLScaleQuatRenderable(); + +// dpl_DCS* // we don't allow this (yet) because it prevents +// GetDCS() // people from hooking up children to this renderable +// {return myDCS;} + + Logical + TestInstance() const; + + protected: + + void + Execute(); + + Logical + *myVisible, + OldVisible; + + dpl_DCS + *myDCS, + *myParentDCS; + + dpl_INSTANCE + *myInstance; + + AffineMatrix + OffsetMatrix; + + Entity + *myEntity; + + Quaternion + *myRotationQuaternion, + OldRotationQuaternion; + + Vector3D + *myScaleVector, + OldScaleVector; + }; +// +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~Static Renderables~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~these renderables remain constant after construction~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// + //########################################################################## + class DPLStaticChildRenderable: // this is a child DCS carrying an instance + public Component + { + public: + DPLStaticChildRenderable( + Entity *This_Entity, + dpl_ZONE *This_Zone, + dpl_OBJECT *Graphic_Object, + dpl_ISECT_MODE Intersect_Mode, + uint32 Intersect_Mask, + const LinearMatrix &Offset_Matrix, + dpl_DCS *Parent_DCS + ); + ~DPLStaticChildRenderable(); + + dpl_DCS* + GetDCS() + {return myDCS;} + + dpl_INSTANCE* + GetInstance() + {return myInstance;} + + Logical + TestInstance() const; + + protected: + + void + Execute(){}; + + dpl_DCS + *myDCS, + *myParentDCS; + + dpl_INSTANCE + *myInstance; + + LinearMatrix + OrientationMatrix; + + Entity + *myEntity; + }; +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~Special Effects Renderables~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + class DPLSFXRenderable: // A renderable that spawns special effects + public Component + { + public: + DPLSFXRenderable( + Entity *This_Entity, // Entity to attach the effect to + dpl_ZONE *This_Zone, // DPL zone everything will be in + const Point3D &Offset_Point, // Point offset from the parent DCS + dpl_DCS *Parent_DCS, // Parent DCS (can be NULL for world) + StateIndicator *Effect_Trigger, // Trigger effect when this attribute changes + int Trigger_State, // Trigger effect when in this state + int Effect_Type, // Type of effect to trigger + Scalar Repeat_Speed // Effect repeat speed. + ); + + ~DPLSFXRenderable(); + + dpl_DCS* + GetDCS() + {return myParentDCS;} + + Logical + TestInstance() const; + + protected: + + void + Execute(); + + int + myEffectType, + myEffectTriggerState, + myEffectTriggerOld; + + StateIndicator + *myEffectTrigger; // trigger effect when this changes + + dpl_DCS + *myParentDCS; + + Point3D + myOffsetPoint; + + Scalar + myRepeatSpeed, + myLastEffect; + + Entity + *myEntity; + }; +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + class DPLRepeatSFXRenderable: // A renderable that spawns special effects + public Component + { + public: + DPLRepeatSFXRenderable( + Entity *This_Entity, + dpl_ZONE *This_Zone, + const Point3D &Offset_Point, + dpl_DCS *Parent_DCS, // offset is relative to this + int Effect_Type, // type code for the effect + Scalar *Speed + ); + + ~DPLRepeatSFXRenderable(); + + dpl_DCS* + GetDCS() + {return myParentDCS;} + + Logical + TestInstance() const; + + protected: + + void + Execute(); + + Entity + *myEntity; + + dpl_DCS + *myParentDCS; + + Point3D + myOffsetPoint; + + int + myEffectType; + + Scalar + *mySpeed, + myLastSmoke; + }; +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + class DPLTranslocationRenderable: // A renderable for the UFT translocation efffec + public Component // from the POV of the player + { + public: + DPLTranslocationRenderable( + Entity *This_Entity, // Entity to attach the effect to + dpl_ZONE *This_Zone, // DPL zone everything will be in + StateIndicator *Effect_Trigger, // Trigger effects off of this state dial + Point3D *Drop_Zone_Location, // Attribute that holds where the new drop will be + unsigned Drop_Zone_State + ); + + ~DPLTranslocationRenderable(); + +// dpl_DCS* +// GetDCS() +// {return myParentDCS;} + + Logical + TestInstance() const; + + protected: + enum TranslocateState + { + IdleState, + InitialExpandState, + HoldAtSizeState, + ColapseState + }; + + TranslocateState + myState; + + void + Execute(); + + int + myDropZoneState, + myEffectType, + myEffectTriggerOld; + + Scalar + myEffectTimer; + + StateIndicator + *myEffectTrigger; // trigger effect when this changes + + dpl_INSTANCE + *myInstance; + + dpl_DCS + *myDCS; + + dpl_ZONE + *myZone; + + Entity + *myEntity; + + Point3D + *myDropZoneLocation; + }; +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// This is brand new stuff as of 5/12/96 +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// DependantRenderable +// This is a class of renderable that has other dependant renderables which it +// will execute on command. This is a base for this type of renderable and is +// not ment to be used by itself. +// + class DependantRenderable: + public VideoRenderable + { + public: + DependantRenderable( + Entity *entity, // Entity to attach the renderable to + ExecutionType execution_type // How/when to execute the renderable + ); + + ~DependantRenderable(); + + void + AddDependantRenderable(Component *dependant); + + Logical + TestInstance() const; + + void + Execute(); + + protected: + SChainOf + dependantRenderableSocket; + }; +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// ScalarTriggerRenderable +// This renderable will run all it's dependants whenever a scalar value that +// it's watching changes. +// + class ScalarTriggerRenderable: + public DependantRenderable + { + public: + ScalarTriggerRenderable( + Entity *entity, // Entity to attach the renderable to + ExecutionType execution_type, // How/when to execute the renderable + Scalar *watched_value, // we run dependants when this changes + Scalar watched_precision // watched_value must change by this much + ); + + ~ScalarTriggerRenderable(); + + Logical + TestInstance() const; + + void + Execute(); + + protected: + Scalar + *myWatchedValue, // Pointer to the Scalar we're watching + myOldWatchedValue, // The last value of that scalar we saw + myPrecision; // Change must be at least this big to register + + }; +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// TimeCullRenderable +// This renderable will run all it's dependants at a set frequency based on +// a clock value supplied by the culling system. +// + class TimeCullRenderable: + public DependantRenderable + { + public: + TimeCullRenderable( + Entity *entity, // Entity to attach the renderable to + ExecutionType execution_type, // How/when to execute the renderable + Scalar delay_between_runs // Time delay between executions of dependants + ); + + ~TimeCullRenderable(); + + Logical + TestInstance() const; + + void + Execute(); + + protected: + Scalar + nextRunTime, + delayBetweenRuns; + }; +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// MechCullRenderable +// + class MechCullRenderable: + public DependantRenderable + { + public: + MechCullRenderable( + Entity *entity, // Entity to attach the renderable to + ExecutionType execution_type, // How/when to execute the renderable + Logical always_run_all, // If true, disable culling and run everything + dpl_ZONE *my_zone // Switch off this zone when the mech goes off screen + ); + + ~MechCullRenderable(); + + Logical + TestInstance() const; + void + AddDependantLegRenderable(Component *dependant); + void + Execute(); + + protected: + Logical + myMechWasVisible, + myAlwaysRunAll; + dpl_ZONE + *myZone; + Scalar + myNextRootUpdate, + myRootUpdateRate, + myNextLegUpdate, + myLegUpdateRate; + SChainOf + legRenderableSocket; + }; +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Constructor for OnePSFXRenderable +// This renderable triggers off a single PSFX effect and then hangs around and +// kills the effect when the renderable goes away. This is useful for things +// like missiles which you want to leave a smoke trail that stops if the object +// is destroyed. You REALLY want to do this whenever you attach an effect to +// a DCS since if the DCS goes away the DPL renderer will go wackey. +// + + class OnePSFXRenderable: + public VideoRenderable + { + public: + OnePSFXRenderable( + Entity *entity, // Entity to attach the renderable to + ExecutionType execution_type, // How/when to execute the renderable + dpl_PARTICLESTART_EFFECT_INFO *psfx_definition, // name of file with the PFX description in it + dpl_DCS *effect_DCS, // DCS the effect is relative to (may be NULL) + Point3D *offset_point); // Offset (or world coordinants if DCS is NULL) + + ~OnePSFXRenderable(); + + Logical + TestInstance() const; + + void + Execute(); + + protected: + dpl_PARTICLESTART_EFFECT_INFO + myPSFXInfo; + }; +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Constructor for TranslocationRenderable +// This renderable does the UFT translocation effect from the perspective of +// someone else watching the person translocating. We connect this to the +// player object and uses information from that object to position itself. +// + class TranslocationRenderable: + public VideoRenderable + { + public: + TranslocationRenderable( + Entity *entity, // Entity to attach the renderable to + ExecutionType execution_type, // How/when to execute the renderable + dpl_ZONE *this_zone, // DPL zone everything will be in + StateIndicator *effect_trigger, // Trigger effects off of this state dial + Point3D *drop_zone_location, // Attribute that holds where the new drop will be + unsigned drop_zone_state // State that indicates drop zone is valid (starts effect) + ); + + ~TranslocationRenderable(); + + Logical + TestInstance() const; + + protected: + enum TranslocateState + { + IdleState, + InitialExpandState, + HoldAtSizeState, + ColapseState + }; + + TranslocateState + myState; + + void + Execute(); + + int + myDropZoneState, + myEffectType; + + Scalar + myEffectTimer; + + StateIndicator + *myEffectTrigger; // trigger effect when this changes + + dpl_INSTANCE + *myInstance; + + dpl_DCS + *myDCS; + + dpl_ZONE + *myZone; + + Point3D + *myDropZoneLocation; + }; +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// SpinScaleQuatWatcherRenderable This is used to create a laser style effect +// that has a directional control, scale and an axial spin at a pre-set speed +// (used for PPC's) +// + class SpinScaleQuatWatcherRenderable: + public ChildOffsetRenderable + { + public: + SpinScaleQuatWatcherRenderable( + Entity *entity, // Entity to attach the renderable to + ExecutionType execution_type, // How/when to execute the renderable + dpl_OBJECT *graphical_object, // object to hang on the DCS, may be a list later + dpl_ZONE *this_zone, // DPL Zone this stuff will live in (for culling) + dpl_ISECT_MODE intersect_mode, // type of intersections to do on this object + uint32 intersect_mask, // intersection mask for the object + dpl_DCS *parent_DCS, // the parent DCS we will be offsetting from + LinearMatrix *offset_matrix, // offset matrix to be applied prior to joint DCS + StateIndicator *control, // the state dial that controls this renderable + unsigned effect_trigger_state,// the state that turns on the renderable + Quaternion *rotation_quaternion,// rotates the object + Vector3D *scale_vector, // Scales the object + Scalar z_spin_rate); // spins the object about z (radians/frame) + + ~SpinScaleQuatWatcherRenderable(); + + Logical + TestInstance() const; + + void + Execute(); + + protected: + StateIndicator + *myControl; + unsigned + myTriggerState; + Quaternion + *myRotationQuaternion; + Vector3D + *myScaleVector; + Logical + myVisible; + Scalar + myZSpinRate, + OldZSpin; + }; +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// ScaleQuatWatcherRenderable This is used to create a laser style effect +// that has a directional control and scaling +// + class ScaleQuatWatcherRenderable: + public ChildOffsetRenderable + { + public: + ScaleQuatWatcherRenderable( + Entity *entity, // Entity to attach the renderable to + ExecutionType execution_type, // How/when to execute the renderable + dpl_OBJECT *graphical_object, // object to hang on the DCS, may be a list later + dpl_ZONE *this_zone, // DPL Zone this stuff will live in (for culling) + dpl_ISECT_MODE intersect_mode, // type of intersections to do on this object + uint32 intersect_mask, // intersection mask for the object + dpl_DCS *parent_DCS, // the parent DCS we will be offsetting from + LinearMatrix *offset_matrix, // offset matrix to be applied prior to joint DCS + StateIndicator *control, // the state dial that controls this renderable + unsigned effect_trigger_state,// the state that turns on the renderable + Quaternion *rotation_quaternion,// rotates the object + Vector3D *scale_vector); // Scales the object + + ~ScaleQuatWatcherRenderable(); + + Logical + TestInstance() const; + + void + Execute(); + + protected: + StateIndicator + *myControl; + unsigned + myTriggerState; + Quaternion + *myRotationQuaternion; + Vector3D + *myScaleVector; + Logical + myVisible; + }; + + +#endif diff --git a/CODE/RP/MUNGA_L4/L4VIDTUL.CPP b/CODE/RP/MUNGA_L4/L4VIDTUL.CPP new file mode 100644 index 0000000..edd5607 --- /dev/null +++ b/CODE/RP/MUNGA_L4/L4VIDTUL.CPP @@ -0,0 +1,43 @@ +//===========================================================================// +// File: l4video.cpp // +// Project: MUNGA Brick: Video Renderer Manager // +// Contents: Interface specification Video Renderer Manager // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 01/11/95 GAC Initial coding. // +// 07/11/95 KEO Modify video resource format. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide. // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL. // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(L4VIDEO_HPP) +# include +#endif + +#if !defined(L4TOOL_HPP) +# include +#endif + +ResourceDescription::ResourceID + L4Tool::CreateModelVideoStreamResource( + ResourceFile *resource_file, + const char *model_name, + NotationFile *model_file, + const ResourceDirectories *directories + ) +{ + return + DPLRenderer::CreateModelVideoStreamResource( + resource_file, + model_name, + model_file, + directories + ); +} + diff --git a/CODE/RP/MUNGA_L4/L4WRHOUS.CPP b/CODE/RP/MUNGA_L4/L4WRHOUS.CPP new file mode 100644 index 0000000..7f283a3 --- /dev/null +++ b/CODE/RP/MUNGA_L4/L4WRHOUS.CPP @@ -0,0 +1,63 @@ +//===========================================================================// +// File: wrhous.cc // +// Project: MUNGA Brick: Gauge Renderer Manager // +// Contents: // +// This object manages creation and deletion of dynamically-created objects // +// of which only on instantiation should exist. It is currently used // +// only by the gauge renderer. // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 08/01/95 CPB Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. All rights reserved // +// PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#include + +#if !defined(L4WRHOUS_HPP) +# include +#endif + +// #define LOCAL_TEST + +#if defined(LOCAL_TEST) +# define Test_Tell(n) DEBUG_STREAM << n +#else +# define Test_Tell(n) +#endif + +//####################################################################### +// Warehouse +//####################################################################### +L4Warehouse::L4Warehouse() : + Warehouse() +{ + Check_Pointer(this); + Check_Fpu(); +} + +L4Warehouse::~L4Warehouse() +{ + Check(this); + Check_Fpu(); +} + +void + L4Warehouse::Purge() +{ + Check(this); + + gaugeImageBin.Purge(); + Warehouse::Purge(); + + Check_Fpu(); +} + +Logical + L4Warehouse::TestInstance() const +{ + return Warehouse::TestInstance(); +} + diff --git a/CODE/RP/MUNGA_L4/L4WRHOUS.HPP b/CODE/RP/MUNGA_L4/L4WRHOUS.HPP new file mode 100644 index 0000000..15905d3 --- /dev/null +++ b/CODE/RP/MUNGA_L4/L4WRHOUS.HPP @@ -0,0 +1,42 @@ +//===========================================================================// +// File: wrhous.hh // +// Project: MUNGA Brick: Gauge Renderer Manager // +// Contents: // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 08/01/95 CPB Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. All rights reserved // +// PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(L4WRHOUS_HPP) +# define L4WRHOUS_HPP + +# if !defined(WRHOUS_HPP) +# include "wrhous.hpp" +# endif + +# if !defined(L4GAUIMA_HPP) +# include "l4gauima.hpp" +# endif + + //####################################################################### + // L4Warehouse + //####################################################################### + class L4Warehouse : + public Warehouse + { + public: + L4Warehouse(); + ~L4Warehouse(); + Logical + TestInstance() const; + void + Purge(); + + WarehouseBinOf + gaugeImageBin; + }; +#endif diff --git a/CODE/RP/MUNGA_L4/MUNGAL4.HPP b/CODE/RP/MUNGA_L4/MUNGAL4.HPP new file mode 100644 index 0000000..0a00c84 --- /dev/null +++ b/CODE/RP/MUNGA_L4/MUNGAL4.HPP @@ -0,0 +1,28 @@ +#if !defined(MUNGAL4_HPP) +# define MUNGAL4_HPP + +# if !defined(MUNGA_HPP) +# include +# endif + +# define __DPMI32__ +# include + +# if !defined(NO_PRECOMPILED_HEADERS) + +# if !defined(GRAPH2D_HPP) +# include +# endif + +# if !defined(L4HOST_HPP) +# include +# endif + +# if !defined(L4APP_HPP) +# include +# endif + +# endif + +#endif + diff --git a/CODE/RP/MUNGA_L4/NETSHARE.ASM b/CODE/RP/MUNGA_L4/NETSHARE.ASM new file mode 100644 index 0000000..138c308 --- /dev/null +++ b/CODE/RP/MUNGA_L4/NETSHARE.ASM @@ -0,0 +1,138 @@ +;=========================================================================== +; Data segment +;=========================================================================== +.386p +.MODEL flat + +_DATA SEGMENT DWORD USE32 + Selector dw 0000 ;got from _mapRMBuff + +; EXTRN C Shared_Memory_Buffer :DATAPTR + EXTRN C Function_Ptr :DATAPTR + EXTRN C Buffer_Length_Ptr :DATAPTR + EXTRN C Net_Common_Ptr :DATAPTR + + EXTRN C baseadr:WORD ;real mode segment of structure + EXTRN C offs:WORD ;real mode offset of structure + +; EXTRN C RMShared_Memory_Buffer_Off :WORD + EXTRN C RMBuffer_Length_Off :WORD + EXTRN C RMFunction_Off :WORD + + +_DATA ENDS + +;=========================================================================== +; Code segment +;=========================================================================== +_TEXT SEGMENT DWORD USE32 + +;########################################################################### +_mapRMBuff PROC CPP NEAR USES EAX EBX ECX EDX es +PUBLIC _mapRMBuff + +;-------------------------------------------------------------------------- +; Map descriptor (i.e selector) to real mode memory +;-------------------------------------------------------------------------- + mov ax, 0002h + mov bx, baseadr + INT 31h + mov Selector, ax +;-------------------------------------------------------------------------- +; Examine everything +;-------------------------------------------------------------------------- +;Check base address in cx:edx +; mov ax, 0006h +; mov bx, Selector +; INT 31h + +;Check segment limit in ax +; lsl ax, Selector + +;Examine Access Rights in ax +; lar ax, Selector + + + ret +ENDP _mapRMBuff + + +;########################################################################### +_getRMBuff PROC CPP NEAR USES EAX EBX ECX EDX edi esi es +PUBLIC _getRMBuff + + +;get counter for Block copy from real mode address + mov es, Selector + mov di, RMBuffer_Length_Off + xor ecx, ecx + mov cx, WORD PTR es:[di] + add cx, 6 ;include Function,Status,Buffer_Length to Block + +;get Block address + mov di, RMFunction_Off ;real mode Block + mov esi, Function_Ptr ;protected mode Block +CopyBlock: + xor eax, eax + mov al, es:[di] ;BYTE PTR es:[edi] + mov BYTE PTR [esi], al ;copy to protected mode + inc di + inc esi + loopnz CopyBlock + + + ret +ENDP _getRMBuff + +;########################################################################### +_setRMBuff PROC CPP NEAR USES EAX EBX ECX EDX edi esi es +PUBLIC _setRMBuff + +;Copy from protected mode address + mov es, Selector + mov di, RMFunction_Off + mov esi, Function_Ptr + xor ecx, ecx + mov ebx, [Buffer_Length_Ptr];counter + mov cx, [ebx] + add cx, 6 ;include Function,Status,Buffer_Length to Block +CopyBlk: + xor eax, eax + mov al, [esi] + mov es:[di], eax ;copy to real mode + inc di + inc esi + loopnz CopyBlk + + + ret +ENDP _setRMBuff + +;########################################################################### +_getRMNumbers PROC CPP NEAR USES EAX EBX ECX EDX edi esi es +PUBLIC _getRMNumbers + +;Copy from protected mode address + mov es, Selector +;get counter for Block copy from real mode address + xor ecx, ecx + mov cx, 6 ;sizeof long Version_Number and short Interrupt_Number + +;get Block address + mov di, offs ;real mode Block + mov esi, Net_Common_Ptr ;protected mode Block +CopyBl: + xor eax, eax + mov al, es:[di] + mov BYTE PTR [esi], al ;copy to protected mode + inc di + inc esi + loopnz CopyBl + + + ret +ENDP _getRMNumbers + +_TEXT ENDS +END + diff --git a/CODE/RP/MUNGA_L4/NetNub/ANALYSIS.CPP b/CODE/RP/MUNGA_L4/NetNub/ANALYSIS.CPP new file mode 100644 index 0000000..760e0e7 --- /dev/null +++ b/CODE/RP/MUNGA_L4/NetNub/ANALYSIS.CPP @@ -0,0 +1,239 @@ +//===========================================================================// +// File: analysis.cpp // +// Project: MUNGA Brick: none // +// Contents: Utilities for using logic analyzer with parallel port dongle // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 04/19/94 WGR Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. All Rights reserved // +// PROPRIETARY AND CONFIDENTIAL // +//===========================================================================// + +#if !defined(PROFILE_HPP) +# include "analysis.hpp" +#endif + +#if defined(USE_PROFILE_ANALYSIS) +# if defined(USE_TIME_ANALYSIS) +# error NETNUB may not use time analysis! +# endif + +# include +# include + +// +// these macros must be undefined for Borland to access the inp & outportb functions +// +# undef inportb +# undef outportb + +# define TRACE_COUNT 12 + +# if defined(USE_PROFILE_ANALYSIS) + + // + // table of data representing bits on the parallel port at 0x378 (usually LPT1) + // DO NOT ALTER THIS DATA - IT REQUIRES LOTS OF SCHEMATIC TRACING TO DUPLICATE + // + const struct parallelbit + { + unsigned int port; + unsigned char mask; + int sense; + } + bitTable[12] = + { + {0x378, 0x80, 0x00}, + {0x378, 0x40, 0x00}, + {0x378, 0x20, 0x00}, + {0x378, 0x10, 0x00}, + {0x37a, 0x08, 0x01}, + {0x37a, 0x04, 0x00}, + {0x37a, 0x02, 0x01}, + {0x37a, 0x01, 0x01}, + {0x378, 0x08, 0x00}, + {0x378, 0x04, 0x00}, + {0x378, 0x02, 0x00}, + {0x378, 0x01, 0x00} + }; + + // + //############################################################################# + //############################################################################# + // + void + Analysis_Status() + { + int i; + printf("Active traces:"); + for (i=0; i<12; ++i) + { + if (Read_Analysis(i)) + { + printf(" %i", i); + } + } + printf("\n"); + } + + // + //############################################################################# + // Set one of the 12 outputable bits of the parallel port at 0x378 (usually + // LPT1), taking into account the hardware sense of the bit + //############################################################################# + // + void + Set_Analysis(int bit) + { + // + //------------------------------------------------------------------ + // read the current value of the appropriate port + //------------------------------------------------------------------ + // + int port_value; + port_value = inportb(bitTable[bit].port); + + // + //------------------------------------------------------------------ + // set the appropriate bit, taking into account the hardware sense + //------------------------------------------------------------------ + // + if (bitTable[bit].sense == 0) + { + port_value |= bitTable[bit].mask; + } + else + { + port_value &= ~(bitTable[bit].mask); + } + + // + //------------------------------------------------------------------ + // put the modified value into the appropriate port + //------------------------------------------------------------------ + // + outportb(bitTable[bit].port,(unsigned char)port_value); + } + + // + //############################################################################# + // Clear one of the 12 outputable bits of the parallel port at 0x378 (usually + // LPT1, taking into account the hardware sense of the bit. + //############################################################################# + // + void + Clear_Analysis(int bit) + { + // + //------------------------------------------------------------------ + // read the current value of the appropriate port + //------------------------------------------------------------------ + // + int port_value; + port_value = inportb(bitTable[bit].port); + + // + //------------------------------------------------------------------ + // clear the appropriate bit, taking into account the hardware sense + //------------------------------------------------------------------ + // + if (bitTable[bit].sense == 0) + { + port_value &= ~(bitTable[bit].mask); + } + else + { + port_value |= bitTable[bit].mask; + } + + // + //------------------------------------------------------------------ + // put the modified value into the appropriate port + //------------------------------------------------------------------ + // + outportb(bitTable[bit].port,(unsigned char)port_value); + } + + // + //############################################################################# + // Toggle one of the 12 outputable bits of the parallel port at 0x378 (usually + // LPT1, taking into account the hardware sense of the bit. + //############################################################################# + // + int + Read_Analysis(int bit) + { + // + //------------------------------------------------------------------ + // read the current value of the appropriate port + //------------------------------------------------------------------ + // + int port_value; + port_value = inportb(bitTable[bit].port); + + // + //--------------------------- + // Read the bit appropriately + //--------------------------- + // + port_value &= bitTable[bit].mask; + if (bitTable[bit].sense) + { + port_value ^= bitTable[bit].mask; + } + + // + //------------------------------------------------------------------ + // return the bit's state + //------------------------------------------------------------------ + // + return port_value != 0; + } + + // + //############################################################################# + // Clear all of the 12 outputable bits of the parallel port at 0x378. + //############################################################################# + // + void + Reset_Analysis(void) + { + // + //------------------------------------------------------------------ + // clear all 12 outputable bits of the parallel port + // at 0x378 (usually LPT1) + //------------------------------------------------------------------ + // + int i; + for (i = 0; i < 12; i++) + { + Clear_Analysis(i); + } + } + + // + //############################################################################# + // Test all of the 12 outputable bits of the parallel port at 0x378. + //############################################################################# + // + void + Test_Analysis(void) + { + // + //------------------------------------------------------------------ + // toggle (twice) all 12 outputable bits of the parallel port + // at 0x378 (usually LPT1) + //------------------------------------------------------------------ + // + int i; + for (i = 0; i < 12; i++) Clear_Analysis(i); + for (i = 0; i < 12; i++) Set_Analysis(i); + for (i = 0; i < 12; i++) Clear_Analysis(i); + } + +# endif + +#endif + diff --git a/CODE/RP/MUNGA_L4/NetNub/ANALYSIS.HPP b/CODE/RP/MUNGA_L4/NetNub/ANALYSIS.HPP new file mode 100644 index 0000000..fa4d71f --- /dev/null +++ b/CODE/RP/MUNGA_L4/NetNub/ANALYSIS.HPP @@ -0,0 +1,58 @@ +#if !defined(ANALYSIS_HPP) +# define ANALYSIS_HPP + + // + //############################################################################# + // Set one of the 12 outputable bits of the parallel port at 0x378 (usually + // LPT1), taking into account the hardware sense of the bit + //############################################################################# + // + void + Set_Analysis(int bit); + + // + //############################################################################# + // Clear one of the 12 outputable bits of the parallel port at 0x378 (usually + // LPT1, taking into account the hardware sense of the bit. + //############################################################################# + // + void + Clear_Analysis(int bit); + + // + //############################################################################# + // Read the state of one of the 12 outputable bits of the parallel port at + // 0x378 (usually LPT1, taking into account the hardware sense of the bit. + //############################################################################# + // + int + Read_Analysis(int bit); + + // + //############################################################################# + // Clear all of the 12 outputable bits of the parallel port at 0x378. + //############################################################################# + // + + void + Reset_Analysis(void); + + // + //############################################################################# + // Test all of the 12 outputable bits of the parallel port at 0x378. + //############################################################################# + // + void + Test_Analysis(void); + + // + //############################################################################# + // Print the bit numbers of any active bit of the 12 outputable bits of the + // parallel port at 0x378 + //############################################################################# + // + void + Analysis_Status(void); + +#endif + diff --git a/CODE/RP/MUNGA_L4/NetNub/NETNUB.HPP b/CODE/RP/MUNGA_L4/NetNub/NETNUB.HPP new file mode 100644 index 0000000..23a3fc8 --- /dev/null +++ b/CODE/RP/MUNGA_L4/NetNub/NETNUB.HPP @@ -0,0 +1,387 @@ +//===========================================================================// +// File: netnub.hpp // +// Project: MUNGA real mode network nub // +// Contents: Implementation details for the Affine matrices // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 03/27/95 GAC Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1994-1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(NETNUB_HPP) +# define NETNUB_HPP + +// Version number of the netcom common block + +#define NETCOM_VERSION 11 + +// Maximum size of send and receive buffers (one ethernet packet) + +#define MAX_TRANSFER_SIZE 0xFF00U +#define SHARED_MEMORY_SIZE (MAX_TRANSFER_SIZE+4) + +// Function codes (set by protected mode app before calling our interrupt) + +#define NETNUB_UNDEFINED (-1) // Netnub sets this function code after each operation is done +#define NETNUB_STATUS 0 // Lets the netnub run and return status +#define NETNUB_SEND_PACKET 1 // Send the packet in the buffer +#define NETNUB_RECEIVE_PACKET 2 // Return a packet in the buffer +#define NETNUB_TCP_OPEN 3 // Opens a TCP stream to another computer +#define NETNUB_TCP_LISTEN 4 // Queue's a TCP listen that we can accept a connection on +#define NETNUB_TCP_CLOSE 5 // Closes a TCP stream +#define NETNUB_RESOLVE_ADDRESS 6 // Resolves a text IP address into a 32 bit number +#define NETNUB_CHECK_SOCKET 7 // Checks a socket to see if anyone has connected yet +#define NETNUB_UDP_OPEN 8 // Opens a UDP socket +#define NETNUB_UDP_READ 9 // Returns a UDP record +#define NETNUB_UDP_SEND 10 // Returns a UDP record +#define NETNUB_MARKER_TEXT 11 // Writes the text supplied to standard out +#define NETNUB_OPEN_FILE 12 +#define NETNUB_WRITE_FILE 13 +#define NETNUB_CLOSE_FILE 14 +#define NETNUB_MULTIPLE_SEND 15 // The has a request to send to multiple streams +#define NETNUB_MULTIPLE_RECEIVE 16 // Request to receive from several streams at once +#define NETNUB_SET_SWITCHES 17 // Set the netnub runtime switches +#define NETNUB_READ_FILE 18 +#define NETNUB_SEEK_FILE 19 +#define NETNUB_TCP_TICK 20 + +// Status returns from the netnub + +#define NETNUB_PARTIAL_TRANSMIT (-5) // Some part of a packet was not sent (very fatal) +#define NETNUB_DATA_DUMPED (-4) // Data was dumped on the floor to avoid blocking +#define NETNUB_STREAM_DISCONNECTED (-3) // Stream has been disconnected at the remote end +#define NETNUB_RESOLVE_ERROR (-2) // Unable to resolve an internet address +#define NETNUB_ERROR (-1) // Unspecified error (something broke) +#define NETNUB_OK 0 // No error (everything ok) +#define NETNUB_RECEIVED_PACKET 1 // A packet has been received and is in the buffer +#define NETNUB_TCP_CONNECTED 2 // Notifys us that someone connected to the socket + +// Netcom shared memory structure, used to pass commands and packets between the +// real and protected mode part of the application. This structure should be +// allocated in the real mode application. +// +// IMPORTANT: The Version Number field must stay in the same place and should be +// checked by the protected mode app to make sure it was spawned by a real mode +// server with a matching Version Number. This prevents the real and protected +// mode applications from accidentally getting out of sync. +// +// NOTE: More data will eventually be added, but it will be at the END of the +// structure so as not to mess up any machine code. + +struct Netcom + { + long + Version_Number; // Version number of real mode netnub + short + Interrupt_Number, // Interrupt number to use for communcations + Function, // * Function code (from protected mode app) + Status; // * Current status of the netnub + unsigned short + Buffer_Length; // * Length of data in shared memory buffer + char + Shared_Memory_Buffer[SHARED_MEMORY_SIZE]; // * Data to send (from protected mode app) + }; + +// NOTE: Fields marked with a * should be copied from real to protected mode, +// the interrupt called, then on return they should be copied back. It is never +// necessary to copy more than "Buffer_Length" bytes of the Shared_Memory_Buffer. +// +// Typedef for a pointer to the netcom structure + +typedef Netcom *Netcom_Ptr; + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Description of operations +// +// Regardless of what function is being sent, the machine code procedure +// should always copy to real mode all the fields marked with a * before +// calling the interrupt. On return from the interrupt all these fields should +// be copied back from real to protected mode. It is never necessary to copy +// more than "Buffer_Length" bytes of the Shared_Memory_Buffer. If "Buffer_Length" +// is zero, the copy of shared memory should be skipped. +// +// For each function code there can be two structures. One will be the format +// of data in the Shared_Memory_Buffer for a "request" and the other for a reply +// to that request. Either may be omitted if not necessary. When Shared_Memory_Buffer +// is received by either the protected mode or real mode part of the application +// it will be "cast" into the proper structure based on the function code. +// Note that some of these structures have only one data entry in them, they were +// made structures to allow for future expansion. +// +// After processing each function the real mode netnub will set the Function +// code to NETNUB_UNDEFINED so it can detect if the protected mode program +// has forgotten to set the function code for any reason. +// +// A Function of NETNUB_RECEIVE_PACKET can result in either a packet or a connect +// being returned. +// +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +struct SetSwitchesRequest +{ + int + blocking_switch; // Setting of the blocking/non blocking mode +}; +typedef SetSwitchesRequest *SetSwitchesRequestPtr; +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +struct StatusReturn +{ + unsigned long + My_Net_Address; +}; + +typedef StatusReturn *StatusReturnPtr; + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Structure in Shared_Memory_Buffer for a receive data packet + +struct ReceivePacketRequest + { + unsigned long + Socket_Ptr; // Socket pointer, see note above + }; + +typedef ReceivePacketRequest *ReceivePacketRequestPtr; + +#define MAX_RECEIVE_DATA_SIZE 1600 +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +#define MULTIPLE_RECEIVE_PACKET_MAX 10 + +struct MultipleReceivePacketRequest + { + unsigned long // It's a long to insure structure alignment is predictable + Socket_Count; // Number of sockets in the list below + unsigned long + Socket_Ptrs[MULTIPLE_RECEIVE_PACKET_MAX]; // Contains socket pointers + }; + +typedef MultipleReceivePacketRequest *MultipleReceivePacketRequestPtr; + +struct MultipleReceivePacketReturn + { + unsigned long // It's a long to insure structure alignment is predictable + Socket_Count; // Number of sockets in the list below + unsigned long // long so it matches the format of MultipleSendPacketRequest + Status[MULTIPLE_RECEIVE_PACKET_MAX]; // length or error code for this socket + char + Received_Data[4]; + }; +typedef MultipleReceivePacketReturn *MultipleReceivePacketReturnPtr; + +#define MULTIPLE_RECEIVE_BUFFER_SIZE(data_size) (data_size + sizeof(MultipleReceivePacketReturn)-4) +#define MULTIPLE_RECEIVE_DATA_SIZE(buffer_size) (buffer_size - sizeof(MultipleReceivePacketReturn)+4) + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +struct SendPacketRequest + { + unsigned long + Socket_Ptr; // Socket pointer, see note above + char + Send_Data[4]; // !!! set to 4 to insure word alignment + }; + +#define SEND_BUFFER_SIZE(data_size) ((data_size) + sizeof(SendPacketRequest) - 4) +#define SEND_DATA_SIZE(buffer_size) ((buffer_size) - sizeof(SendPacketRequest) + 4) +#define MAX_SEND_DATA_SIZE (1604 - sizeof(SendPacketRequest)) + +struct SendPacketReturn + { + unsigned long + Send_Buffer_Used; // Number of bytes in the send buffer + }; + +typedef SendPacketReturn *SendPacketReturnPtr; +typedef SendPacketRequest *SendPacketRequestPtr; + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// This command sends the same data to multiple destinations +// +#define MULTIPLE_SEND_PACKET_MAX 10 + +struct MultipleSendPacketRequest + { + unsigned long // It's a long to insure structure alignment is predictable + Socket_Count; // Number of sockets to send to + unsigned long + Socket_Ptrs[MULTIPLE_SEND_PACKET_MAX]; // Contains socket pointers + char + Send_Data[4]; // !!! set to 4 to insure word alignment + }; + +struct MultipleSendPacketReturn + { + unsigned long // It's a long to insure structure alignment is predictable + Socket_Count; // Number of sockets to send to + unsigned long // long so it matches the format of MultipleSendPacketRequest + Errors[MULTIPLE_SEND_PACKET_MAX]; // Contains socket pointers + unsigned long + Send_Buffer_Used[MULTIPLE_SEND_PACKET_MAX]; // Number of bytes in the send buffer + }; + +#define MULTIPLE_SEND_BUFFER_SIZE(data_size) (data_size + sizeof(MultipleSendPacketRequest) - 4) +#define MULTIPLE_SEND_DATA_SIZE(buffer_size) (buffer_size - sizeof(MultipleSendPacketRequest) + 4) +#define MAX_MULTIPLE_SEND_DATA_SIZE (MAX_TRANSFER_SIZE - sizeof(MultipleSendPacketRequest) + 4) + +typedef MultipleSendPacketRequest *MultipleSendPacketRequestPtr; +typedef MultipleSendPacketReturn *MultipleSendPacketReturnPtr; + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +struct ResolveReturn + { + unsigned long + Internet_Address; // 32 bit internet address (if no error) + }; + +typedef ResolveReturn *ResolveReturnPtr; + +struct TCPOpenRequest + { + short + Local_Port, // Local port number + Remote_Port; // Remote port number + unsigned long + Internet_Address; // Internet address to connect with + unsigned long + Socket_Ptr; // tcp_Socket address (at least 4300 bytes) if 0 netnub will try to allocate one + }; + +struct TCPOpenReturn + { + unsigned long + Socket_Ptr; // pointer to the socket opened or error number + }; + +typedef TCPOpenRequest *TCPOpenRequestPtr; +typedef TCPOpenReturn *TCPOpenReturnPtr; + +struct TCPCloseRequest + { + unsigned long + Socket_Ptr; // pointer to the socket to be closed + }; +typedef TCPCloseRequest *TCPCloseRequestPtr; + +struct TCPCheckSocketRequest + { + unsigned long + Socket_Ptr; // pointer to the socket to be checked + }; + +struct TCPCheckSocketReturn + { + unsigned long + Socket_Net_Address; // Net address of the person who connected + }; + +typedef TCPCheckSocketRequest *TCPCheckSocketRequestPtr; +typedef TCPCheckSocketReturn *TCPCheckSocketReturnPtr; + +struct UDPOpenRequest + { + short + Local_Port, // Local port number + Remote_Port; // Remote port number + unsigned long + Internet_Address; // Internet address to connect with + unsigned long + Socket_Ptr; // UDP_Socket address (at least 2200 bytes) if 0 netnub will try to allocate one + }; + +struct UDPOpenReturn + { + unsigned long + Socket_Ptr; // pointer to the socket opened or error number + }; + +typedef UDPOpenRequest *UDPOpenRequestPtr; +typedef UDPOpenReturn *UDPOpenReturnPtr; + +struct OpenFileRequest + { + char + File_Name[80]; + short + Access; + unsigned short + Model; + }; + +struct OpenFileReturn + { + short + File_Handle; + }; + +typedef OpenFileRequest *OpenFileRequestPtr; +typedef OpenFileReturn *OpenFileReturnPtr; + +struct CloseFileRequest + { + short + File_Handle; + }; + +typedef CloseFileRequest *CloseFileRequestPtr; + +struct WriteFileRequest + { + short + File_Handle; + unsigned short + Write_Length; + char + Write_Data[4]; + }; + +struct WriteFileReturn + { + unsigned short + Bytes_Written; + }; + +typedef WriteFileRequest *WriteFileRequestPtr; +typedef WriteFileReturn *WriteFileReturnPtr; + +struct ReadFileRequest + { + short + File_Handle; + unsigned short + Read_Length; + }; + +struct ReadFileReturn + { + char + Read_Data[4]; + }; + +typedef ReadFileRequest *ReadFileRequestPtr; +typedef ReadFileReturn *ReadFileReturnPtr; + +struct SeekFileRequest + { + short + File_Handle; + short + Seek_Mode; + long + Seek_Offset; + }; + +struct SeekFileReturn + { + long + Seek_Position; + }; + +typedef SeekFileRequest *SeekFileRequestPtr; +typedef SeekFileReturn *SeekFileReturnPtr; + +#endif diff --git a/CODE/RP/MUNGA_L4/NetNub/NOPAUSE.CPP b/CODE/RP/MUNGA_L4/NetNub/NOPAUSE.CPP new file mode 100644 index 0000000..54c325d --- /dev/null +++ b/CODE/RP/MUNGA_L4/NetNub/NOPAUSE.CPP @@ -0,0 +1,72 @@ +/* NOPAUSE.CPP - Disable Pause. + (C) Copyright 1991 + By Thomas Astin CIS: 73407,3427 Prodigy: RNVN08A + All rights reserved. */ + +/* Disable pause by intercepting interrupt 9 and blocking pause scan codes.*/ + +/* NOTE: This program worked fine on the machine upon which it was + developed and tested. Use at your own risk. The author is + not responsible for any damage, system failure, or the like + as a result of executing this code. + + Compiles under Borland C++. Code may require modifications for + use with other compilers. +*/ + + +#include +#include + +/* Protos */ +void interrupt NewInt9(...); +void ExitFunc(void); + +/* exit func in case ^C */ +#pragma exit ExitFunc + +/* Defines */ +#define KbdIn 0x60 +#define KbdCtl 0x61 +#define MaxChkIdx 3 + +/* Globals */ +unsigned char ChkArray[MaxChkIdx] = {0xE1,0x1D,0x45}; +unsigned char ChkIdx=0; +unsigned char CurScan=0; +void interrupt (*OldInt9)(...)=NULL; + +void interrupt NewInt9(...) // int 9 handler +{ + CurScan=inportb(KbdIn); // get scan code + if (CurScan==ChkArray[ChkIdx++]) { // check scan code array + if (ChkIdx>=MaxChkIdx) { // last match? + ChkIdx=0; // get ready for next time + + asm in al,KbdCtl // restore keyboard + asm mov ah,al + asm or al,80h + asm jmp temp1 + temp1: + asm out KbdCtl,al + asm xchg ah,al + asm jmp temp2 + temp2: + asm out KbdCtl,al + asm mov al,20h // Issue EOI + asm out 20h,al + + return; + } + } + else + ChkIdx=0; // start over + + OldInt9(); // call original int 9 +} + +void ExitFunc(void) +{ + if (OldInt9!=NULL) + setvect(9,OldInt9); // restore int 9 +} \ No newline at end of file diff --git a/CODE/RP/MUNGA_L4/NetNub/PROFILE.HPP b/CODE/RP/MUNGA_L4/NetNub/PROFILE.HPP new file mode 100644 index 0000000..f311d3f --- /dev/null +++ b/CODE/RP/MUNGA_L4/NetNub/PROFILE.HPP @@ -0,0 +1,715 @@ +//===========================================================================// +// File: profile .hpp // +// Project: MUNGA Brick: none // +// Contents: Bit definitions for logic analyser profiling of routines // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 06/01/95 GAC Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. All Rights reserved // +// PROPRIETARY AND CONFIDENTIAL // +//===========================================================================// + +#if !defined(PROFILE_HPP) +# define PROFILE_HPP + +# if !defined(CLEAN_BUILD) +# define CLEAN_BUILD 0 +# endif + +# if DEBUG_LEVEL>=3 +# define USE_PROFILE_ANALYSIS // Enables trace activity +//# define USE_TIME_ANALYSIS // Enables trace time statistics +//# define USE_TIME_LOG // Enables logging functions +//# define USE_FPU_ANALYSIS // Enables entity FPU checks +//# define USE_MEMORY_ANALYSIS // Enables heap statistics +# elif DEBUG_LEVEL==2 +# define USE_PROFILE_ANALYSIS // Enables trace activity +//# define USE_TIME_ANALYSIS // Enables trace time statistics +//# define USE_TIME_LOG // Enables logging functions +//# define USE_FPU_ANALYSIS // Enables entity FPU checks +# define USE_MEMORY_ANALYSIS // Enables heap statistics +# elif CLEAN_BUILD==0 +//# define USE_PROFILE_ANALYSIS // Enables trace activity +# define USE_TIME_ANALYSIS // Enables trace time statistics +//# define USE_TIME_LOG // Enables logging functions +# define USE_FPU_ANALYSIS // Enables entity FPU checks +# define USE_MEMORY_ANALYSIS // Enables heap statistics +# endif + +# if !defined(ANALYSIS_HPP) +# include "analysis.hpp" +# endif + + //*******************************************************************// + //*******************************************************************// + // IMPORTANT!!! // + // Remember that trace numbers go from 0 to 11, that's all you get. // + //*******************************************************************// + //*******************************************************************// + + // + // ---Place enabled defines below ---- + // + +# if defined(USE_PROFILE_ANALYSIS) || defined(USE_TIME_ANALYSIS) + #define ANALYSIS_FOREGROUND_PROCESSING 0 + #define TRACE_0 "Foreground Processing" + + #define ANALYSIS_UPDATE_MANAGER 1 + #define TRACE_1 "Update Manager" + + #define ANALYSIS_UPDATE_REPLICANTS 2 + #define TRACE_2 "Update Replicants" + + #define ANALYSIS_SEND_PACKET 3 + #define TRACE_3 "Send Packet" + + #define ANALYSIS_RENDERER_MANAGER 4 + #define TRACE_4 "Renderer Manager" + + #define ANALYSIS_VIDEO_EXECUTE_IMPLEMENTATION 5 + #define ANALYSIS_VIDEO_FIRST_FRAME_DONE 5 + #define ANALYSIS_VIDEO_RENDERER_FRAME_DONE 5 + #define ANALYSIS_VIDEO_BECOME_UNINTERESTING 5 + #define TRACE_5 "Video Renderer" + + #define ANALYSIS_VIDEO_BATCH_FLUSH 6 + #define TRACE_6 "Video Batch Flush" + + #define ANALYSIS_AUDIO_RENDERER 7 + #define TRACE_7 "Audio Renderer" + + #define ANALYSIS_GAUGE_RENDERER 8 + #define TRACE_8 "Gauge Renderer" + + #define ANALYSIS_SCREEN_COPY 9 + #define TRACE_9 "Gauge Screen Copy" + + #define ANALYSIS_PROCESS_EVENT 10 + #define TRACE_10 "Process Event" + + #define ANALYSIS_ROUTE_PACKET 11 + #define TRACE_11 "Route Packet" + + // + // Unused definitions + // +/* + #define ANALYSIS_UPDATE_MASTERS 3 + #define ANALYSIS_EXECUTE_ENTITY 4 + #define ANALYSIS_PERFORM_ENTITY 5 + #define ANALYSIS_PERFORM_SUBSYSTEMS 6 + #define ANALYSIS_EXECUTE_WATCHERS 7 + #define ANALYSIS_JOINT_PERFORMANCE 8 + #define ANALYSIS_CHECK_BUFFERS 11 + #define ANALYSIS_CALL_NETNUB 6 + #define ANALYSIS_APP_MGR 11 + #define ANALYSIS_COMPLETE_CYCLES 3 + #define ANALYSIS_DEATH_ROW 4 + #define ANALYSIS_APP_INITIALIZE 7 + #define ANALYSIS_INTEREST_MANAGER 8 + #define ANALYSIS_LOAD_SOUNDBANK 9 + #define ANALYSIS_WAIT_FOR_DROP 9 + + // + // Defines for profiling the video system + // If you want to see all video activity on the same trace, put all the + // defines marked with a * on the same trace and turn the rest off. + // The indenting below shows how the calls are nested, to get sensable output never + // put a call and one of it's nested children on the same trace. + // + #define ANALYSIS_VIDEO_EXECUTE_IMPLEMENTATION 9 // * Video renderer execute implimentation running. + #define ANALYSIS_VIDEO_PICKPOINT 9 // Call to the RapidSectPixel or SectPixel + #define ANALYSIS_VIDEO_RENDERERABLES 9 // All calls to video renderable execute methods + #define ANALYSIS_VIDEO_MORPH_SEND 9 // A call to MorphObject in ChildMorphRenderable + #define ANALYSIS_VIDEO_FIRST_FRAME_DONE 9 // * A call to dpl_DrawSceneComplete at the end of Video execute loop + #define ANALYSIS_VIDEO_BATCH_FLUSH 9 // * Set whenever dpl_FlushArticulations is called + #define ANALYSIS_VIDEO_RENDERER_FRAME_DONE 9 // * Set whenever we check to see if a frame is done + #define ANALYSIS_VIDEO_BECOME_INTERESTING 9 // * video renderer become interesting processes. + #define ANALYSIS_VIDEO_LOAD_OBJECT 9 // load object in default MakeEntityRenderables + #define ANALYSIS_VIDEO_CONSTRUCT_ROOT 9 // root renderable in default MakeEntityRenderables + #define ANALYSIS_VIDEO_NEW_DCS 9 // dpl_NewDCS call in RootRenderable constructor + #define ANALYSIS_VIDEO_NEW_INSTANCE 9 // dpl_NewINSTANCE call in RootRenderable constructor + #define ANALYSIS_VIDEO_FLUSH_INSTANCE 9 // dpl_FlushInstance call in RootRenderable constructor + #define ANALYSIS_VIDEO_ADD_DCS_TO_SCENE 9 // dpl_AddDCSToScene call in RootRenderable constructor + #define ANALYSIS_VIDEO_FLUSH_DCS 9 // dpl_FlushDCS call in RootRenderable constructor + #define ANALYSIS_VIDEO_BECOME_UNINTERESTING 9 // * Marks video renderer become uninteresting processes. +*/ + // without changes to asmpkt.asm! +# endif + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Macro definitions ... these make sure that profile.hpp is not forgotten +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +//~~~~~~~~~~~~~~~~~~~~~~~~~ Application Profiling ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +#if defined(ANALYSIS_FOREGROUND_PROCESSING) +# define SET_ANALYSIS_FOREGROUND_PROCESSING()\ + Set_Analysis(ANALYSIS_FOREGROUND_PROCESSING) +# define CLEAR_ANALYSIS_FOREGROUND_PROCESSING()\ + Clear_Analysis(ANALYSIS_FOREGROUND_PROCESSING) +#else +# define SET_ANALYSIS_FOREGROUND_PROCESSING() +# define CLEAR_ANALYSIS_FOREGROUND_PROCESSING() +#endif + +#if defined(ANALYSIS_RENDERER_MANAGER) +# define SET_ANALYSIS_RENDERER_MANAGER()\ + Set_Analysis(ANALYSIS_RENDERER_MANAGER) +# define CLEAR_ANALYSIS_RENDERER_MANAGER()\ + Clear_Analysis(ANALYSIS_RENDERER_MANAGER) +#else +# define SET_ANALYSIS_RENDERER_MANAGER() +# define CLEAR_ANALYSIS_RENDERER_MANAGER() +#endif + +#if defined(ANALYSIS_PROCESS_EVENT) +# define SET_ANALYSIS_PROCESS_EVENT()\ + Set_Analysis(ANALYSIS_PROCESS_EVENT) +# define CLEAR_ANALYSIS_PROCESS_EVENT()\ + Clear_Analysis(ANALYSIS_PROCESS_EVENT) +#else +# define SET_ANALYSIS_PROCESS_EVENT() +# define CLEAR_ANALYSIS_PROCESS_EVENT() +#endif + +#if defined(ANALYSIS_COMPLETE_CYCLES) +# define SET_ANALYSIS_COMPLETE_CYCLES()\ + Set_Analysis(ANALYSIS_COMPLETE_CYCLES) +# define CLEAR_ANALYSIS_COMPLETE_CYCLES()\ + Clear_Analysis(ANALYSIS_COMPLETE_CYCLES) +#else +# define SET_ANALYSIS_COMPLETE_CYCLES() +# define CLEAR_ANALYSIS_COMPLETE_CYCLES() +#endif + +#if defined(ANALYSIS_DEATH_ROW) +# define SET_ANALYSIS_DEATH_ROW()\ + Set_Analysis(ANALYSIS_DEATH_ROW) +# define CLEAR_ANALYSIS_DEATH_ROW()\ + Clear_Analysis(ANALYSIS_DEATH_ROW) +#else +# define SET_ANALYSIS_DEATH_ROW() +# define CLEAR_ANALYSIS_DEATH_ROW() +#endif + +#if defined(ANALYSIS_APP_MGR) +# define SET_ANALYSIS_APP_MGR()\ + Set_Analysis(ANALYSIS_APP_MGR) +# define CLEAR_ANALYSIS_APP_MGR()\ + Clear_Analysis(ANALYSIS_APP_MGR) +#else +# define SET_ANALYSIS_APP_MGR() +# define CLEAR_ANALYSIS_APP_MGR() +#endif + +//~~~~~~~~~~~~~~~~~~~~~~~~~~ Network Profiling ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +#if defined(ANALYSIS_ROUTE_PACKET) +# define SET_ANALYSIS_ROUTE_PACKET()\ + Set_Analysis(ANALYSIS_ROUTE_PACKET) +# define CLEAR_ANALYSIS_ROUTE_PACKET()\ + Clear_Analysis(ANALYSIS_ROUTE_PACKET) +#else +# define SET_ANALYSIS_ROUTE_PACKET() +# define CLEAR_ANALYSIS_ROUTE_PACKET() +#endif + +#if defined(ANALYSIS_SEND_PACKET) +# define SET_ANALYSIS_SEND_PACKET()\ + Set_Analysis(ANALYSIS_SEND_PACKET) +# define CLEAR_ANALYSIS_SEND_PACKET()\ + Clear_Analysis(ANALYSIS_SEND_PACKET) +#else +# define SET_ANALYSIS_SEND_PACKET() +# define CLEAR_ANALYSIS_SEND_PACKET() +#endif + +#if defined(ANALYSIS_CHECK_BUFFERS) +# define SET_ANALYSIS_CHECK_BUFFERS()\ + Set_Analysis(ANALYSIS_CHECK_BUFFERS) +# define CLEAR_ANALYSIS_CHECK_BUFFERS()\ + Clear_Analysis(ANALYSIS_CHECK_BUFFERS) +#else +# define SET_ANALYSIS_CHECK_BUFFERS() +# define CLEAR_ANALYSIS_CHECK_BUFFERS() +#endif + +#if defined(ANALYSIS_CALL_NETNUB) +# define SET_ANALYSIS_CALL_NETNUB()\ + Set_Analysis(ANALYSIS_CALL_NETNUB) +# define CLEAR_ANALYSIS_CALL_NETNUB()\ + Clear_Analysis(ANALYSIS_CALL_NETNUB) +#else +# define SET_ANALYSIS_CALL_NETNUB() +# define CLEAR_ANALYSIS_CALL_NETNUB() +#endif + +//~~~~~~~~~~~~~~~~~~~~~~~~~~ Entity Profiling ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +#if defined(ANALYSIS_UPDATE_MANAGER) +# define SET_ANALYSIS_UPDATE_MANAGER()\ + Set_Analysis(ANALYSIS_UPDATE_MANAGER) +# define CLEAR_ANALYSIS_UPDATE_MANAGER()\ + Clear_Analysis(ANALYSIS_UPDATE_MANAGER) +#else +# define SET_ANALYSIS_UPDATE_MANAGER() +# define CLEAR_ANALYSIS_UPDATE_MANAGER() +#endif + +#if defined(ANALYSIS_UPDATE_REPLICANTS) +# define SET_ANALYSIS_UPDATE_REPLICANTS()\ + Set_Analysis(ANALYSIS_UPDATE_REPLICANTS) +# define CLEAR_ANALYSIS_UPDATE_REPLICANTS()\ + Clear_Analysis(ANALYSIS_UPDATE_REPLICANTS) +#else +# define SET_ANALYSIS_UPDATE_REPLICANTS() +# define CLEAR_ANALYSIS_UPDATE_REPLICANTS() +#endif + +#if defined(ANALYSIS_UPDATE_MASTERS) +# define SET_ANALYSIS_UPDATE_MASTERS()\ + Set_Analysis(ANALYSIS_UPDATE_MASTERS) +# define CLEAR_ANALYSIS_UPDATE_MASTERS()\ + Clear_Analysis(ANALYSIS_UPDATE_MASTERS) +#else +# define SET_ANALYSIS_UPDATE_MASTERS() +# define CLEAR_ANALYSIS_UPDATE_MASTERS() +#endif + +#if defined(ANALYSIS_EXECUTE_ENTITY) +# define SET_ANALYSIS_EXECUTE_ENTITY()\ + Set_Analysis(ANALYSIS_EXECUTE_ENTITY) +# define CLEAR_ANALYSIS_EXECUTE_ENTITY()\ + Clear_Analysis(ANALYSIS_EXECUTE_ENTITY) +#else +# define SET_ANALYSIS_EXECUTE_ENTITY() +# define CLEAR_ANALYSIS_EXECUTE_ENTITY() +#endif + +#if defined(ANALYSIS_PERFORM_ENTITY) +# define SET_ANALYSIS_PERFORM_ENTITY()\ + Set_Analysis(ANALYSIS_PERFORM_ENTITY) +# define CLEAR_ANALYSIS_PERFORM_ENTITY()\ + Clear_Analysis(ANALYSIS_PERFORM_ENTITY) +#else +# define SET_ANALYSIS_PERFORM_ENTITY() +# define CLEAR_ANALYSIS_PERFORM_ENTITY() +#endif + +#if defined(ANALYSIS_PERFORM_SUBSYSTEMS) +# define SET_ANALYSIS_PERFORM_SUBSYSTEMS()\ + Set_Analysis(ANALYSIS_PERFORM_SUBSYSTEMS) +# define CLEAR_ANALYSIS_PERFORM_SUBSYSTEMS()\ + Clear_Analysis(ANALYSIS_PERFORM_SUBSYSTEMS) +#else +# define SET_ANALYSIS_PERFORM_SUBSYSTEMS() +# define CLEAR_ANALYSIS_PERFORM_SUBSYSTEMS() +#endif + +#if defined(ANALYSIS_EXECUTE_WATCHERS) +# define SET_ANALYSIS_EXECUTE_WATCHERS()\ + Set_Analysis(ANALYSIS_EXECUTE_WATCHERS) +# define CLEAR_ANALYSIS_EXECUTE_WATCHERS()\ + Clear_Analysis(ANALYSIS_EXECUTE_WATCHERS) +#else +# define SET_ANALYSIS_EXECUTE_WATCHERS() +# define CLEAR_ANALYSIS_EXECUTE_WATCHERS() +#endif + +#if defined(ANALYSIS_JOINT_PERFORMANCE) +# define SET_ANALYSIS_JOINT_PERFORMANCE()\ + Set_Analysis(ANALYSIS_JOINT_PERFORMANCE) +# define CLEAR_ANALYSIS_JOINT_PERFORMANCE()\ + Clear_Analysis(ANALYSIS_JOINT_PERFORMANCE) +#else +# define SET_ANALYSIS_JOINT_PERFORMANCE() +# define CLEAR_ANALYSIS_JOINT_PERFORMANCE() +#endif + +//~~~~~~~~~~~~~~~~~~~~~~ Video Renderer Profiling ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +#if defined(ANALYSIS_VIDEO_NEW_INSTANCE) +# define SET_ANALYSIS_VIDEO_NEW_INSTANCE()\ + Set_Analysis(ANALYSIS_VIDEO_NEW_INSTANCE) +# define CLEAR_ANALYSIS_VIDEO_NEW_INSTANCE()\ + Clear_Analysis(ANALYSIS_VIDEO_NEW_INSTANCE) +#else +# define SET_ANALYSIS_VIDEO_NEW_INSTANCE() +# define CLEAR_ANALYSIS_VIDEO_NEW_INSTANCE() +#endif + +#if defined(ANALYSIS_VIDEO_NEW_DCS) +# define SET_ANALYSIS_VIDEO_NEW_DCS()\ + Set_Analysis(ANALYSIS_VIDEO_NEW_DCS) +# define CLEAR_ANALYSIS_VIDEO_NEW_DCS()\ + Clear_Analysis(ANALYSIS_VIDEO_NEW_DCS) +#else +# define SET_ANALYSIS_VIDEO_NEW_DCS() +# define CLEAR_ANALYSIS_VIDEO_NEW_DCS() +#endif + +#if defined(ANALYSIS_VIDEO_FLUSH_INSTANCE) +# define SET_ANALYSIS_VIDEO_FLUSH_INSTANCE()\ + Set_Analysis(ANALYSIS_VIDEO_FLUSH_INSTANCE) +# define CLEAR_ANALYSIS_VIDEO_FLUSH_INSTANCE()\ + Clear_Analysis(ANALYSIS_VIDEO_FLUSH_INSTANCE) +#else +# define SET_ANALYSIS_VIDEO_FLUSH_INSTANCE() +# define CLEAR_ANALYSIS_VIDEO_FLUSH_INSTANCE() +#endif + +#if defined(ANALYSIS_VIDEO_ADD_DCS_TO_SCENE) +# define SET_ANALYSIS_VIDEO_ADD_DCS_TO_SCENE()\ + Set_Analysis(ANALYSIS_VIDEO_ADD_DCS_TO_SCENE) +# define CLEAR_ANALYSIS_VIDEO_ADD_DCS_TO_SCENE()\ + Clear_Analysis(ANALYSIS_VIDEO_ADD_DCS_TO_SCENE) +#else +# define SET_ANALYSIS_VIDEO_ADD_DCS_TO_SCENE() +# define CLEAR_ANALYSIS_VIDEO_ADD_DCS_TO_SCENE() +#endif + +#if defined(ANALYSIS_VIDEO_FLUSH_DCS) +# define SET_ANALYSIS_VIDEO_FLUSH_DCS()\ + Set_Analysis(ANALYSIS_VIDEO_FLUSH_DCS) +# define CLEAR_ANALYSIS_VIDEO_FLUSH_DCS()\ + Clear_Analysis(ANALYSIS_VIDEO_FLUSH_DCS) +#else +# define SET_ANALYSIS_VIDEO_FLUSH_DCS() +# define CLEAR_ANALYSIS_VIDEO_FLUSH_DCS() +#endif + +#if defined(ANALYSIS_VIDEO_CONSTRUCT_ROOT) +# define SET_ANALYSIS_VIDEO_CONSTRUCT_ROOT()\ + Set_Analysis(ANALYSIS_VIDEO_CONSTRUCT_ROOT) +# define CLEAR_ANALYSIS_VIDEO_CONSTRUCT_ROOT()\ + Clear_Analysis(ANALYSIS_VIDEO_CONSTRUCT_ROOT) +#else +# define SET_ANALYSIS_VIDEO_CONSTRUCT_ROOT() +# define CLEAR_ANALYSIS_VIDEO_CONSTRUCT_ROOT() +#endif + +#if defined(ANALYSIS_VIDEO_LOAD_OBJECT) +# define SET_ANALYSIS_VIDEO_LOAD_OBJECT()\ + Set_Analysis(ANALYSIS_VIDEO_LOAD_OBJECT) +# define CLEAR_ANALYSIS_VIDEO_LOAD_OBJECT()\ + Clear_Analysis(ANALYSIS_VIDEO_LOAD_OBJECT) +#else +# define SET_ANALYSIS_VIDEO_LOAD_OBJECT() +# define CLEAR_ANALYSIS_VIDEO_LOAD_OBJECT() +#endif + +#if defined(ANALYSIS_VIDEO_FIRST_FRAME_DONE) +# define SET_ANALYSIS_VIDEO_FIRST_FRAME_DONE()\ + Set_Analysis(ANALYSIS_VIDEO_FIRST_FRAME_DONE) +# define CLEAR_ANALYSIS_VIDEO_FIRST_FRAME_DONE()\ + Clear_Analysis(ANALYSIS_VIDEO_FIRST_FRAME_DONE) +#else +# define SET_ANALYSIS_VIDEO_FIRST_FRAME_DONE() +# define CLEAR_ANALYSIS_VIDEO_FIRST_FRAME_DONE() +#endif + +#if defined(ANALYSIS_VIDEO_MORPH_SEND) +# define SET_ANALYSIS_VIDEO_MORPH_SEND()\ + Set_Analysis(ANALYSIS_VIDEO_MORPH_SEND) +# define CLEAR_ANALYSIS_VIDEO_MORPH_SEND()\ + Clear_Analysis(ANALYSIS_VIDEO_MORPH_SEND) +#else +# define SET_ANALYSIS_VIDEO_MORPH_SEND() +# define CLEAR_ANALYSIS_VIDEO_MORPH_SEND() +#endif + +#if defined(ANALYSIS_VIDEO_EXECUTE_IMPLEMENTATION) +# define SET_ANALYSIS_VIDEO_EXECUTE_IMPLEMENTATION()\ + Set_Analysis(ANALYSIS_VIDEO_EXECUTE_IMPLEMENTATION) +# define CLEAR_ANALYSIS_VIDEO_EXECUTE_IMPLEMENTATION()\ + Clear_Analysis(ANALYSIS_VIDEO_EXECUTE_IMPLEMENTATION) +#else +# define SET_ANALYSIS_VIDEO_EXECUTE_IMPLEMENTATION() +# define CLEAR_ANALYSIS_VIDEO_EXECUTE_IMPLEMENTATION() +#endif + +#if defined(ANALYSIS_VIDEO_RENDERER_FRAME_DONE) +# define SET_ANALYSIS_VIDEO_RENDERER_FRAME_DONE()\ + Set_Analysis(ANALYSIS_VIDEO_RENDERER_FRAME_DONE) +# define CLEAR_ANALYSIS_VIDEO_RENDERER_FRAME_DONE()\ + Clear_Analysis(ANALYSIS_VIDEO_RENDERER_FRAME_DONE) +#else +# define SET_ANALYSIS_VIDEO_RENDERER_FRAME_DONE() +# define CLEAR_ANALYSIS_VIDEO_RENDERER_FRAME_DONE() +#endif + +#if defined(ANALYSIS_VIDEO_BECOME_INTERESTING) +# define SET_ANALYSIS_VIDEO_BECOME_INTERESTING()\ + Set_Analysis(ANALYSIS_VIDEO_BECOME_INTERESTING) +# define CLEAR_ANALYSIS_VIDEO_BECOME_INTERESTING()\ + Clear_Analysis(ANALYSIS_VIDEO_BECOME_INTERESTING) +#else +# define SET_ANALYSIS_VIDEO_BECOME_INTERESTING() +# define CLEAR_ANALYSIS_VIDEO_BECOME_INTERESTING() +#endif + +#if defined(ANALYSIS_VIDEO_BECOME_UNINTERESTING) +# define SET_ANALYSIS_VIDEO_BECOME_UNINTERESTING()\ + Set_Analysis(ANALYSIS_VIDEO_BECOME_UNINTERESTING) +# define CLEAR_ANALYSIS_VIDEO_BECOME_UNINTERESTING()\ + Clear_Analysis(ANALYSIS_VIDEO_BECOME_UNINTERESTING) +#else +# define SET_ANALYSIS_VIDEO_BECOME_UNINTERESTING() +# define CLEAR_ANALYSIS_VIDEO_BECOME_UNINTERESTING() +#endif + +#if defined(ANALYSIS_VIDEO_RENDERERABLES) +# define SET_ANALYSIS_VIDEO_RENDERERABLES()\ + Set_Analysis(ANALYSIS_VIDEO_RENDERERABLES) +# define CLEAR_ANALYSIS_VIDEO_RENDERERABLES()\ + Clear_Analysis(ANALYSIS_VIDEO_RENDERERABLES) +#else +# define SET_ANALYSIS_VIDEO_RENDERERABLES() +# define CLEAR_ANALYSIS_VIDEO_RENDERERABLES() +#endif + +#if defined(ANALYSIS_VIDEO_BATCH_FLUSH) +# define SET_ANALYSIS_VIDEO_BATCH_FLUSH()\ + Set_Analysis(ANALYSIS_VIDEO_BATCH_FLUSH) +# define CLEAR_ANALYSIS_VIDEO_BATCH_FLUSH()\ + Clear_Analysis(ANALYSIS_VIDEO_BATCH_FLUSH) +#else +# define SET_ANALYSIS_VIDEO_BATCH_FLUSH() +# define CLEAR_ANALYSIS_VIDEO_BATCH_FLUSH() +#endif + +#if defined(ANALYSIS_VIDEO_PICKPOINT) +# define SET_ANALYSIS_VIDEO_PICKPOINT()\ + Set_Analysis(ANALYSIS_VIDEO_PICKPOINT) +# define CLEAR_ANALYSIS_VIDEO_PICKPOINT()\ + Clear_Analysis(ANALYSIS_VIDEO_PICKPOINT) +#else +# define SET_ANALYSIS_VIDEO_PICKPOINT() +# define CLEAR_ANALYSIS_VIDEO_PICKPOINT() +#endif + +//~~~~~~~~~~~~~~~~~~~~~~ Audio Renderer Profiling ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +#if defined(ANALYSIS_AUDIO_RENDERER) +# define SET_ANALYSIS_AUDIO_RENDERER()\ + Set_Analysis(ANALYSIS_AUDIO_RENDERER) +# define CLEAR_ANALYSIS_AUDIO_RENDERER()\ + Clear_Analysis(ANALYSIS_AUDIO_RENDERER) +#else +# define SET_ANALYSIS_AUDIO_RENDERER() +# define CLEAR_ANALYSIS_AUDIO_RENDERER() +#endif + +#if defined(ANALYSIS_AUDIO_RENDERER_MIDI) +# define SET_ANALYSIS_AUDIO_RENDERER_MIDI()\ + Set_Analysis(ANALYSIS_AUDIO_RENDERER_MIDI) +# define CLEAR_ANALYSIS_AUDIO_RENDERER_MIDI()\ + Clear_Analysis(ANALYSIS_AUDIO_RENDERER_MIDI) +#else +# define SET_ANALYSIS_AUDIO_RENDERER_MIDI() +# define CLEAR_ANALYSIS_AUDIO_RENDERER_MIDI() +#endif + +//~~~~~~~~~~~~~~~~~~~~~~ Controls Manager Profiling ~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +#if defined(ANALYSIS_RIO_ANALOG_REQUEST) +# define SET_ANALYSIS_RIO_ANALOG_REQUEST()\ + Set_Analysis(ANALYSIS_RIO_ANALOG_REQUEST) +# define CLEAR_ANALYSIS_RIO_ANALOG_REQUEST()\ + Clear_Analysis(ANALYSIS_RIO_ANALOG_REQUEST) +#else +# define SET_ANALYSIS_RIO_ANALOG_REQUEST() +# define CLEAR_ANALYSIS_RIO_ANALOG_REQUEST() +#endif + +#if defined(ANALYSIS_RIO_PROCESS_EVENT) +# define SET_ANALYSIS_RIO_PROCESS_EVENT()\ + Set_Analysis(ANALYSIS_RIO_PROCESS_EVENT) +# define CLEAR_ANALYSIS_RIO_PROCESS_EVENT()\ + Clear_Analysis(ANALYSIS_RIO_PROCESS_EVENT) +#else +# define SET_ANALYSIS_RIO_PROCESS_EVENT() +# define CLEAR_ANALYSIS_RIO_PROCESS_EVENT() +#endif + +#if defined(ANALYSIS_JOYSTICK) +# define SET_ANALYSIS_JOYSTICK() Set_Analysis(ANALYSIS_JOYSTICK) +# define CLEAR_ANALYSIS_JOYSTICK() Clear_Analysis(ANALYSIS_JOYSTICK) +#else +# define SET_ANALYSIS_JOYSTICK() +# define CLEAR_ANALYSIS_JOYSTICK() +#endif + +#if defined(ANALYSIS_MOUSE) +# define SET_ANALYSIS_MOUSE() Set_Analysis(ANALYSIS_MOUSE) +# define CLEAR_ANALYSIS_MOUSE() Clear_Analysis(ANALYSIS_MOUSE) +#else +# define SET_ANALYSIS_MOUSE() +# define CLEAR_ANALYSIS_MOUSE() +#endif + +#if defined(ANALYSIS_SCALAR_UPDATE) +# define SET_ANALYSIS_SCALAR_UPDATE() Set_Analysis(ANALYSIS_SCALAR_UPDATE) +# define CLEAR_ANALYSIS_SCALAR_UPDATE() Clear_Analysis(ANALYSIS_SCALAR_UPDATE) +#else +# define SET_ANALYSIS_SCALAR_UPDATE() +# define CLEAR_ANALYSIS_SCALAR_UPDATE() +#endif + +#if defined(ANALYSIS_JOYSTICK_UPDATE) +# define SET_ANALYSIS_JOYSTICK_UPDATE() Set_Analysis(ANALYSIS_JOYSTICK_UPDATE) +# define CLEAR_ANALYSIS_JOYSTICK_UPDATE()\ + Clear_Analysis(ANALYSIS_JOYSTICK_UPDATE) +#else +# define SET_ANALYSIS_JOYSTICK_UPDATE() +# define CLEAR_ANALYSIS_JOYSTICK_UPDATE() +#endif + +#if defined(ANALYSIS_KEYBOARD_UPDATE) +# define SET_ANALYSIS_KEYBOARD_UPDATE() Set_Analysis(ANALYSIS_KEYBOARD_UPDATE) +# define CLEAR_ANALYSIS_KEYBOARD_UPDATE()\ + Clear_Analysis(ANALYSIS_KEYBOARD_UPDATE) +#else +# define SET_ANALYSIS_KEYBOARD_UPDATE() +# define CLEAR_ANALYSIS_KEYBOARD_UPDATE() +#endif + +#if defined(ANALYSIS_JOYSTICK_BUTTON_UPDATE) +# define SET_ANALYSIS_JOYSTICK_BUTTON_UPDATE()\ + Set_Analysis(ANALYSIS_JOYSTICK_BUTTON_UPDATE) +# define CLEAR_ANALYSIS_JOYSTICK_BUTTON_UPDATE()\ + Clear_Analysis(ANALYSIS_JOYSTICK_BUTTON_UPDATE) +#else +# define SET_ANALYSIS_JOYSTICK_BUTTON_UPDATE() +# define CLEAR_ANALYSIS_JOYSTICK_BUTTON_UPDATE() +#endif + +#if defined(ANALYSIS_MOUSE_BUTTON_UPDATE) +# define SET_ANALYSIS_MOUSE_BUTTON_UPDATE()\ + Set_Analysis(ANALYSIS_MOUSE_BUTTON_UPDATE) +# define CLEAR_ANALYSIS_MOUSE_BUTTON_UPDATE()\ + Clear_Analysis(ANALYSIS_MOUSE_BUTTON_UPDATE) +#else +# define SET_ANALYSIS_MOUSE_BUTTON_UPDATE() +# define CLEAR_ANALYSIS_MOUSE_BUTTON_UPDATE() +#endif + +#if defined(ANALYSIS_BACKGROUND_ROUTE_PACKET) +# define SET_ANALYSIS_BACKGROUND_ROUTE_PACKET()\ + Set_Analysis(ANALYSIS_BACKGROUND_ROUTE_PACKET) +# define CLEAR_ANALYSIS_BACKGROUND_ROUTE_PACKET()\ + Clear_Analysis(ANALYSIS_BACKGROUND_ROUTE_PACKET) +#else +# define SET_ANALYSIS_BACKGROUND_ROUTE_PACKET() +# define CLEAR_ANALYSIS_BACKGROUND_ROUTE_PACKET() +#endif + +#if defined(ANALYSIS_RIO_DELETE_RIO) +# define SET_ANALYSIS_RIO_DELETE_RIO()\ + Set_Analysis(ANALYSIS_RIO_DELETE_RIO) +# define CLEAR_ANALYSIS_RIO_DELETE_RIO()\ + Clear_Analysis(ANALYSIS_RIO_DELETE_RIO) +#else +# define SET_ANALYSIS_RIO_DELETE_RIO() +# define CLEAR_ANALYSIS_RIO_DELETE_RIO() +#endif + +#if defined(ANALYSIS_RIO_SEND_PACKET) +# define SET_ANALYSIS_RIO_SEND_PACKET()\ + Set_Analysis(ANALYSIS_RIO_SEND_PACKET) +# define CLEAR_ANALYSIS_RIO_SEND_PACKET()\ + Clear_Analysis(ANALYSIS_RIO_SEND_PACKET) +#else +# define SET_ANALYSIS_RIO_SEND_PACKET() +# define CLEAR_ANALYSIS_RIO_SEND_PACKET() +#endif + +#if defined(ANALYSIS_RIO_RECEIVE_PACKET) +# define SET_ANALYSIS_RIO_RECEIVE_PACKET()\ + Set_Analysis(ANALYSIS_RIO_RECEIVE_PACKET) +# define CLEAR_ANALYSIS_RIO_RECEIVE_PACKET()\ + Clear_Analysis(ANALYSIS_RIO_RECEIVE_PACKET) +#else +# define SET_ANALYSIS_RIO_RECEIVE_PACKET() +# define CLEAR_ANALYSIS_RIO_RECEIVE_PACKET() +#endif + +#if defined(ANALYSIS_RIO_ANALOG_UPDATE) +# define SET_ANALYSIS_RIO_ANALOG_UPDATE()\ + Set_Analysis(ANALYSIS_RIO_ANALOG_UPDATE) +# define CLEAR_ANALYSIS_RIO_ANALOG_UPDATE()\ + Clear_Analysis(ANALYSIS_RIO_ANALOG_UPDATE) +#else +# define SET_ANALYSIS_RIO_ANALOG_UPDATE() +# define CLEAR_ANALYSIS_RIO_ANALOG_UPDATE() +#endif + +#if defined(ANALYSIS_RIO_MISC_REQUEST) +# define SET_ANALYSIS_RIO_MISC_REQUEST()\ + Set_Analysis(ANALYSIS_RIO_MISC_REQUEST) +# define CLEAR_ANALYSIS_RIO_MISC_REQUEST()\ + Clear_Analysis(ANALYSIS_RIO_MISC_REQUEST) +#else +# define SET_ANALYSIS_RIO_MISC_REQUEST() +# define CLEAR_ANALYSIS_RIO_MISC_REQUEST() +#endif + +#if defined(ANALYSIS_RIO_RESET_STICK) +# define SET_ANALYSIS_RIO_RESET_STICK()\ + Set_Analysis(ANALYSIS_RIO_RESET_STICK) +# define CLEAR_ANALYSIS_RIO_RESET_STICK()\ + Clear_Analysis(ANALYSIS_RIO_RESET_STICK) +#else +# define SET_ANALYSIS_RIO_RESET_STICK() +# define CLEAR_ANALYSIS_RIO_RESET_STICK() +#endif + +#if defined(ANALYSIS_PERFORM) +# define SET_ANALYSIS_PERFORM() Set_Analysis(ANALYSIS_PERFORM) +# define CLEAR_ANALYSIS_PERFORM() Clear_Analysis(ANALYSIS_PERFORM) +#else +# define SET_ANALYSIS_PERFORM() +# define CLEAR_ANALYSIS_PERFORM() +#endif + +#if defined(ANALYSIS_APP_INITIALIZE) +# define SET_ANALYSIS_APP_INITIALIZE() Set_Analysis(ANALYSIS_APP_INITIALIZE) +# define CLEAR_ANALYSIS_APP_INITIALIZE() Clear_Analysis(ANALYSIS_APP_INITIALIZE) +#else +# define SET_ANALYSIS_APP_INITIALIZE() +# define CLEAR_ANALYSIS_APP_INITIALIZE() +#endif + + +#if defined(ANALYSIS_WAIT_FOR_DROP) +# define SET_ANALYSIS_WAIT_FOR_DROP() Set_Analysis(ANALYSIS_WAIT_FOR_DROP) +# define CLEAR_ANALYSIS_WAIT_FOR_DROP() Clear_Analysis(ANALYSIS_WAIT_FOR_DROP) +#else +# define SET_ANALYSIS_WAIT_FOR_DROP() +# define CLEAR_ANALYSIS_WAIT_FOR_DROP() +#endif + +#if defined(ANALYSIS_GAUGE_RENDERER) +# define SET_ANALYSIS_GAUGE_RENDERER() Set_Analysis(ANALYSIS_GAUGE_RENDERER) +# define CLEAR_ANALYSIS_GAUGE_RENDERER()\ + Clear_Analysis(ANALYSIS_GAUGE_RENDERER) +#else +# define SET_ANALYSIS_GAUGE_RENDERER() +# define CLEAR_ANALYSIS_GAUGE_RENDERER() +#endif + +#if defined(ANALYSIS_SCREEN_COPY) +# define SET_ANALYSIS_SCREEN_COPY() Set_Analysis(ANALYSIS_SCREEN_COPY) +# define CLEAR_ANALYSIS_SCREEN_COPY() Clear_Analysis(ANALYSIS_SCREEN_COPY) +#else +# define SET_ANALYSIS_SCREEN_COPY() +# define CLEAR_ANALYSIS_SCREEN_COPY() +#endif + +#endif diff --git a/CODE/RP/MUNGA_L4/NetNub/include/BOOTP.H b/CODE/RP/MUNGA_L4/NetNub/include/BOOTP.H new file mode 100644 index 0000000..081580a --- /dev/null +++ b/CODE/RP/MUNGA_L4/NetNub/include/BOOTP.H @@ -0,0 +1,73 @@ + +/* + * Bootstrap Protocol (BOOTP) + * Based on RFC 951. + */ + + +#define BOOTREQUEST 1 /* bootp.bp_op */ +#define BOOTREPLY 2 + +/* + * structure for send and receives + */ +typedef struct bootp { + byte bp_op; /* packet op code / message type. */ + byte bp_htype; /* hardware address type, 1 = 10 mb ethernet */ + byte bp_hlen; /* hardware address len, eg '6' for 10mb eth */ + byte bp_hops; /* client sets to zero, optionally used by + gateways in cross-gateway booting. */ + longword bp_xid; /* transaction ID, a random number */ + word bp_secs; /* filled in by client, seconds elapsed since + client started trying to boot. */ + word bp_spare; + longword bp_ciaddr; /* client IP address filled in by client if known*/ + longword bp_yiaddr; /* 'your' (client) IP address + filled by server if client doesn't know */ + longword bp_siaddr; /* server IP address returned in bootreply */ + longword bp_giaddr; /* gateway IP address, + used in optional cross-gateway booting. */ + byte bp_chaddr[16]; /* client hardware address, filled by client */ + byte bp_sname[64]; /* optional server host name, null terminated*/ + + byte bp_file[128]; /* boot file name, null terminated string + 'generic' name or null in bootrequest, + fully qualified directory-path + name in bootreply. */ + byte bp_vend[ 64]; /* optional vendor-specific area */ +}; + + +extern struct bootp _bootp; +extern word sock_inactive; + +/* + * UDP port numbers, server and client. + */ +#define IPPORT_BOOTPS 67 +#define IPPORT_BOOTPC 68 + + +/******** the following is stolen from NCSA which came from CUTCP *********/ +/* I have not implemented these, but someone may wish to in the future so */ +/* I kept them around. */ +/**************************************************************************/ + +/* + * "vendor" data permitted for Stanford boot clients. + */ +struct vend { + byte v_magic[4]; /* magic number */ + longword v_flags; /* flags/opcodes, etc. */ + byte v_unused[56]; /* currently unused */ +}; + +#define VM_STANFORD "STAN" /* v_magic for Stanford */ +/*#define VM_RFC1048 "\143\202\123\143" /* 94.11.20 */ + +/* v_flags values */ +#define VF_PCBOOT 1 /* an IBMPC or Mac wants environment info */ +#define VF_HELP 2 /* help me, I'm not registered */ +#define TAG_BOOTFILE_SIZE 13 /* tag used by vend fields rfc 1048 */ + + diff --git a/CODE/RP/MUNGA_L4/NetNub/include/COPYRIGH.H b/CODE/RP/MUNGA_L4/NetNub/include/COPYRIGH.H new file mode 100644 index 0000000..01877e9 --- /dev/null +++ b/CODE/RP/MUNGA_L4/NetNub/include/COPYRIGH.H @@ -0,0 +1,110 @@ +/* + * WATTCP - TCP/IP library routines + * + * Copyright (c) 1990, 1991, 1992, 1993 Erick Engelke + * + * Portions Copyright (c) 1993 Quentin Smart + * Portions Copyright (c) 1991 University of Waterloo + * Portions Copyright (c) 1990 National Center for Supercomputer Applications + * Portions Copyright (c) 1990 Clarkson University + * Portions Copyright (c) 1983, 1986, Imagen Corporation + * + * This software is distributed in the hope that it will be useful, + * but without any warranty; without even the implied warranty of + * merchantability or fitness for a particular purpose. + * + * RESTRICTIONS + * ------------ + * You may freely use this library to produce programs which you may give + * away or sell in source format, or as compiled executables, or both. + * + * You may not sell this library or a portion thereof or distribute modified + * versions the library code in either source or OBJect or LIBrary format + * without written permission from the author. The author still maintains + * copyright privileges and will assert the privileges of ownership for + * purposes of royalties such distributions. + * + * Portions of this code were written or enhanced by others and offerred + * to me for distribution in WATTCP under my copyright. To my knowledge, + * all copyrights exercised are listed at the top of this file. If this + * is incorrect, please contact me so I can rectify the situation. + * + * + * OFFICIAL SITE + * ------------- + * The official distribution site for WATTCP (and many other TCP goodies) + * is dorm.rutgers.edu in pub/msdos/wattcp (thanks Jim!) + * + * That is where I upload the latest libraries, my own free applications + * and other applications I have collected and find useful. + * + * + * DOCUMENTATION + * ------------- + * A programmer's reference manual I wrote is now available from the + * publisher. They provide no additional support and cannot help + * you with any aspect of the software. But they do pay a royalty + * to me which has been used to compensate my costs for developing + * this software and extending it, so I am very appreciative. + * + * That manual is copyrighted and protected by international law. + * It may not be copied without the authors permission. And its + * sale does not constitute a warranty or an automatic license to + * use WATTCP beyond the terms described in this file. + * + * For payment they accept credit cards, cheques, checks, money orders + * and P.O.s. Credit card orders can be processed over the telephone. + * + * Note that they are located in Canada and mail to them MAY REQUIRE + * additional postage depending on where you live. Also, be sure to + * use the entire address, including the last line. Canada is a heck + * of a large country and that line really makes a difference. + * + * Prices are listed in US dollars for convienence to our many + * international readers. The value charged on credit card items + * will be the equivalent in Canadian dollars at the exchange rate + * of the day. + * + * WATTCP Manual $ 40 US funds for each manual orderred + * ---------- + * Shipping + Handling $ 5 US funds to North America + * (Air Mail) or $ 10 US funds to anywhere else in the world + * + * ADD $ 20 US funds IF YOU ARE USING PURCHASE ORDERS + * in which case payment is due in 30 days. + * Not necessary for cheques, credit cards, etc. + * ---------- + * + * WATTCP Manual + * c/o Supro Network Software Inc. + * P.O. Box 18, + * Warsaw, Ont. + * CANADA + * K0L 3A0 + * + * Phone (705) 652-1572 and be certain to mention that you are talking + * about the WATTCP manual. + * + * Please note, I am not involved in the processing loop for the manual + * and cannot tell you of the status of your order. Use Supro's number + * instead. + * + * + * Developers' Meeting Place + * ------------------------- + * Many of the key people involved in WATTCP frequent the + * comp.protocols.tcp-ip.ibmpc Usenet newgroup, and there + * are several people there who can answer most any question. + * + * If you need my personal attention (I seem to have less and less + * available) you will have to Email my address below. I cannot take + * phone calls relating to WATTCP at my place of occupation. + * + * + * Erick Engelke erick@dorm.rutgers.edu + * 48 Daytona St. + * Kitchener, Ont. + * Canada + * + */ +#define WATTCP_C "WATTCP_C" diff --git a/CODE/RP/MUNGA_L4/NetNub/include/ELIB.H b/CODE/RP/MUNGA_L4/NetNub/include/ELIB.H new file mode 100644 index 0000000..b6d3b1a --- /dev/null +++ b/CODE/RP/MUNGA_L4/NetNub/include/ELIB.H @@ -0,0 +1,25 @@ +void outch( char ch ); /* print character to stdio */ +void outs( char far *s); /* print a ASCIIZ string to stdio */ +void outsn( char far *s,int n); /* print a string with len max n */ +void outhex( char ch ); +void outhexes( char far *ch, int n ); +void qmove( void far * src, void far * dest, int len ); +int qcmp( void far *src, void far *dest, int len ); +void _keep( int status, int paragraphs ); +int sem_up( void far * ptr ); +unsigned long set_timeout( unsigned int seconds ); +unsigned long set_ttimeout( unsigned int ticks ); +int chk_timeout( unsigned long timeout ); + +unsigned long intel( unsigned long ); +unsigned short intel16( unsigned short ); +unsigned inchksum( void far *ptr, int len); /* IP checksum */ + +/* + * qmsg.c + */ +void dputch( char x ); +void dmsg( char *s ); +void dhex1int( int x ); +void dhex2int( int x ); +void dhex4int( int x ); diff --git a/CODE/RP/MUNGA_L4/NetNub/include/ETHDEV.H b/CODE/RP/MUNGA_L4/NetNub/include/ETHDEV.H new file mode 100644 index 0000000..f8149f2 --- /dev/null +++ b/CODE/RP/MUNGA_L4/NetNub/include/ETHDEV.H @@ -0,0 +1,16 @@ +/* + * + * Ethernet Interface + */ + +extern byte *_eth_FormatPacket(), *_eth_WaitPacket(); + +typedef struct ether { + byte dest[6]; /* destination ethernet address */ + byte src[6]; /* source ethernet address */ + word type; + byte data[ 1500 ]; +}; + + +#define ETH_MIN 60 /* Minimum Ethernet packet size */ diff --git a/CODE/RP/MUNGA_L4/NetNub/include/ICMP.H b/CODE/RP/MUNGA_L4/NetNub/include/ICMP.H new file mode 100644 index 0000000..01bfdc5 --- /dev/null +++ b/CODE/RP/MUNGA_L4/NetNub/include/ICMP.H @@ -0,0 +1,101 @@ + +#ifndef _wattcp_icmp_h +#define _wattcp_icmp_h + +//#include +#include + +typedef struct icmp_unused { + byte type; + byte code; + word checksum; + longword unused; + in_Header ip; + byte spares[ 8 ]; +}; + +typedef struct icmp_pointer { + byte type; + byte code; + word checksum; + byte pointer; + byte unused[ 3 ]; + in_Header ip; +}; +typedef struct icmp_ip { + byte type; + byte code; + word checksum; + longword ipaddr; + in_Header ip; +}; +typedef struct icmp_echo { + byte type; + byte code; + word checksum; + word identifier; + word sequence; + longword index; +}; + +typedef struct icmp_timestamp { + byte type; + byte code; + word checksum; + word identifier; + word sequence; + longword original; /* original timestamp */ + longword receive; /* receive timestamp */ + longword transmit; /* transmit timestamp */ +}; + +typedef struct icmp_info { + byte type; + byte code; + word checksum; + word identifier; + word sequence; +}; + +typedef union { + struct icmp_unused unused; + struct icmp_pointer pointer; + struct icmp_ip ip; + struct icmp_echo echo; + struct icmp_timestamp timestamp; + struct icmp_info info; +} icmp_pkt; + +typedef struct _pkt { + in_Header in; + icmp_pkt icmp; + in_Header data; +}; + +#define ICMPTYPE_ECHOREPLY 0 +#define ICMPTYPE_UNREACHABLE 3 +#define ICMPTYPE_TIMEEXCEEDED 11 + +typedef enum ICMP_UnreachableCodes +{ + ICMP_UNREACH_NET = 0, + ICMP_UNREACH_HOST = 1, + ICMP_UNREACH_PROTO = 2, + ICMP_UNREACH_PORT = 3, + ICMP_UNREACH_FRAGNEEDED = 4, + ICMP_UNREACH_SRCROUTEFAILED = 5 +}; + +typedef enum ICMP_TimeExceededCodes +{ + ICMP_EXCEEDED_TTL = 0, + ICMP_EXCEEDED_FRAGREASM = 1 +}; + +/* a user-installed ICMP handler */ +typedef int (*icmp_handler_type)( in_Header *ip ); + +/* install a user ICMP handler, or NULL to disable */ +void set_icmp_handler( icmp_handler_type user_handler ); + +#endif /* ndef _wattcp_icmp_h */ diff --git a/CODE/RP/MUNGA_L4/NetNub/include/STATE.RST b/CODE/RP/MUNGA_L4/NetNub/include/STATE.RST new file mode 100644 index 0000000..fa131ce --- /dev/null +++ b/CODE/RP/MUNGA_L4/NetNub/include/STATE.RST @@ -0,0 +1,13 @@ +[edit-] +screen=80 25 +toggles=1 1 0 1 0 0 +srch= +src= +rpl= +file=c:\tcpip\include\bootp.h 1 23 2 28 +[brief] +file=c:\tcpip\include\bootp.h 1 23 2 28 1 22 78 1 c=0 +file=c:\tcpip\include\wattcp.h 1 1 1 1 +file=c:\tcpip\include\copyrigh.h 1 67 1 67 +[shared-] +pmark=c:\tcpip\include\bootp.h 2 28 diff --git a/CODE/RP/MUNGA_L4/NetNub/include/TCP.H b/CODE/RP/MUNGA_L4/NetNub/include/TCP.H new file mode 100644 index 0000000..ef31670 --- /dev/null +++ b/CODE/RP/MUNGA_L4/NetNub/include/TCP.H @@ -0,0 +1,98 @@ + +/* + * Waterloo TCP + * + * Copyright (c) 1990, 1991, 1992, 1993 Erick Engelke + * + * Portions copyright others, see copyright.h for details. + * + * This library is free software; you can use it or redistribute under + * the terms of the license included in LICENSE.H. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * file LICENSE.H for more details. + * + */ +#ifndef _wattcp_tcp_h +#define _wattcp_tcp_h + +#ifndef WTCP_VER + +#define __WATTCP_USER__ /* Not compiling the kernel itself, hide some stuff */ + +#include + +/* handle some early dumb naming conventions */ +#define dbuginit() dbug_init() + +/* Kernal version (major major minor minor) */ +#define WTCP_VER 0x0102 + +/* + * Typedefs and constants + */ + +struct in_addr { + longword s_addr; +}; + +/* + * BSD-style socket info routines -- bsdname.c + */ +int getpeername( sock_type *s, void *dest, int *len ); +int getsockname( sock_type *s, void *dest, int *len ); +char *getdomainname( char *name, int length ); +char *setdomainname( char *string ); +char *gethostname( char *name, int len ); +char *sethostname( char *name ); +void psocket( sock_type *s ); + +/* + * ICMP-related stuff -- pcicmp.c + */ +/* + * Send an icmp echo request using specified ttl and tos. + * if(icmp_id != NULL) store copy of the id there + */ +int _send_ping( longword host, longword countnum, byte ttl, + byte tos, longword *theid ); +/* backward compatibility */ +#define _ping( h, c ) _send_ping( h, c, 250, 0, NULL ) +longword _chk_ping( longword host , longword *ptr); + +/* + * Daemons -- wattcpd.c + */ +int addwattcpd( void (*p)( void ) ); +int delwattcpd( void (*p)( void ) ); + +/* + * Background net I/O processing -- netback.c + */ +void backgroundon( void ); +void backgroundoff(void); +void backgroundfn( void (*fn)() ); + +/* + * More background processing -- pcintr.c + */ +void wintr_enable( void ); +void wintr_disable( void ); +void wintr_shutdown( void ); +void wintr_init( void ); + +/* + * Socket stats -- pcstat.c + */ +int sock_stats( sock_type *s, word *days, word *inactive, word *cwindow, word *avg, word *sd ); + +/* + * Debug test routine -- test.c + */ +void debugpsocketlen( void ); + +#endif /* WTCP_VER */ + +#endif /* ndef _wattcp_tcp_h */ diff --git a/CODE/RP/MUNGA_L4/NetNub/include/TCP.MOD b/CODE/RP/MUNGA_L4/NetNub/include/TCP.MOD new file mode 100644 index 0000000..ce53a9a --- /dev/null +++ b/CODE/RP/MUNGA_L4/NetNub/include/TCP.MOD @@ -0,0 +1,288 @@ +/* + * Waterloo TCP + * + * Copyright (c) 1990, 1991, 1992, 1993 Erick Engelke + * + * Portions copyright others, see copyright.h for details. + * + * This library is free software; you can use it or redistribute under + * the terms of the license included in LICENSE.H. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * file LICENSE.H for more details. + * + */ +#ifndef WTCP_VER +extern "C" { +/* handle some early dumb naming conventions */ +#define dbuginit() dbug_init() + +/* Kernal version (major major minor minor) */ +#define WTCP_VER 0x0102 + +/* + * Typedefs and constants + */ + +#ifndef byte +typedef unsigned char byte; +#endif byte +#ifndef word +typedef unsigned int word; +#endif word +#ifndef longword +typedef unsigned long longword; +#endif longword + +typedef struct { + byte undoc[ 4300 ]; +} tcp_Socket; + +typedef struct { + byte undoc[ 2200 ]; +} udp_Socket; + + +typedef struct sockaddr { + word s_type; + word s_port; + longword s_ip; + byte s_spares[6]; /* unused in TCP realm */ +}; + +#define sockaddr_in sockaddr + +typedef struct in_addr { + longword s_addr; +}; + + +#define MAX_COOKIES 10 +#define MAX_NAMESERVERS 10 + +#define TCP_MODE_BINARY 0 +#define TCP_MODE_ASCII 1 +#define UDP_MODE_CHK 0 /*default to checksum */ +#define UDP_MODE_NOCHK 2 +#define TCP_MODE_NAGLE 0 /* Nagle algorithm */ +#define TCP_MODE_NONAGLE 4 + +extern sock_init(); +/* + * s is the pointer to a udp or tcp socket + */ +extern sock_read(void *s, byte *dp, int len ); +extern sock_fastread(void *s, byte *dp, int len ); +extern sock_write(void *s, byte *dp, int len); +extern void sock_enqueue(void *s, byte *dp, int len); +extern sock_fastwrite(void *s, byte *dp, int len ); +extern sock_flush( void *s ); +extern sock_flushnext( void *s); +extern sock_puts( void *s, byte *dp ); +extern word sock_gets( void *s, byte *dp, int n ); +extern byte sock_putc( void *s, byte c ); +extern byte sock_getc( void *s ); +extern word sock_dataready( void *s ); +extern sock_close( void *s ); +extern sock_abort( void *s ); +extern sock_printf( void *s, char *format, ... ); +extern sock_scanf( void *s, char *format, ... ); +extern sock_mode( void *s, word mode ); /* see TCP_MODE_... */ +extern void db_write( char *msg ); +extern void dbug_init(); +extern void dbug_printf(char *,... ); + +/* + * TCP or UDP specific stuff, must be used for open's and listens, but + * sock stuff is used for everything else + */ +typedef int(*UDPdataHandlerType)(udp_Socket *s, byte *dp, int len, void *ph, void *up); +typedef int(*TCPdataHandlerType)(tcp_Socket *s, byte *dp, int len); + +extern int udp_open(void *s, word lport, longword ina, word port, UDPdataHandlerType); +extern int tcp_open(void *s, word lport, longword ina, word port, TCPdataHandlerType); +extern tcp_listen(void *s, word lport, longword ina, word port, TCPdataHandlerType, word timeout); +extern int tcp_established(void *s); +extern char *rip( char *s ); +extern longword resolve( char *name); +/* + * less general functions + */ +extern longword aton( char *text ); +extern int isaddr( char *text ); +extern tcp_cbreak( word mode ); +extern longword intel( longword x ); +extern word intel16( word x ); + +/* + * timers + */ + +extern void ip_timer_init( void *s , word delayseconds ); +extern word ip_timer_expired( void *s ); + /* + * TCP/IP system variables - do not change these since they + * are not necessarily the source variables, instead use + * ip_Init function + */ +extern longword my_ip_addr; +extern longword sin_mask; /* eg. 0xfffffe00L */ +extern word sock_delay; + + /* + * tcp_init/tcp_shutdown + * - init/kill all tcp and lower services + * - only call if you do not use sock_init + * (NOT RECOMMENDED) + */ +extern tcp_shutdown(); +extern tcp_Init(); + +/* + * things you probably won't need to know about + */ + /* + * sock_debugdump + * - dump some socket control block parameters + * used for testing the kernal, not recommended + */ +extern sock_debugdump( void *s); + /* + * tcp_config - read a configuration file + * - if special path desired, call after sock_init() + * - null reads path from executable + * see sock_init(); + */ +extern tcp_config( char *path ); + /* + * tcp_tick - called periodically by user application in sock_wait_... + * - returns 1 when our socket closes + */ +extern tcp_tick( void *s ); + /* + * Retransmitter - called periodically to perform tcp retransmissions + * - normally called from tcp_tick, you have to be pretty + * low down to use this one + */ +extern tcp_Retransmitter(); + /* + * tcp_set_debug_state - set 1 or reset 0 - depends on what I have done + */ +extern tcp_set_debug_state( word x ); + + +extern int _last_cookie; +extern longword _cookie[MAX_COOKIES]; + + /* + * name domain constants + */ + +extern char *def_domain; +extern longword def_nameservers[ MAX_NAMESERVERS ]; + + +extern word wathndlcbrk; +extern word watcbroke; +/* + * sock_wait_... macros + */ +/* + * sock_wait_established() + * - waits then aborts if timeout on s connection + * sock_wait_input() + * - waits for received input on s + * - may not be valid input for sock_Gets... check returned length + * sock_tick() + * - do tick and jump on abort + * sock_wait_closed(); + * - discards all received data + * + * jump to sock_err with contents of *statusptr set to + * 1 on closed + * -1 on timeout + * + */ +extern int _ip_delay0( void *s, int seconds, int (*fn)(), void *statusptr ); +extern int _ip_delay1( void *s, int seconds, int (*fn)(), void *statusptr ); +extern int _ip_delay2( void *s, int seconds, int (*fn)(), void *statusptr ); + +extern unsigned long set_timeout( unsigned int seconds ); +extern unsigned long set_ttimeout( unsigned int ticks ); +extern int chk_timeout( unsigned long timeout ); + + + +extern int tcp_tick( void *s ); + +#define sock_wait_established( s, seconds, fn, statusptr ) \ + if (_ip_delay0( s, seconds, fn, statusptr )) goto sock_err; +#define sock_wait_input( s, seconds, fn , statusptr ) \ + if (_ip_delay1( s, seconds, fn, statusptr )) goto sock_err; +#define sock_tick( s, statusptr ) \ + if ( !tcp_tick(s)) { if (statusptr) *statusptr = 1 ; goto sock_err; } +#define sock_wait_closed(s, seconds, fn, statusptr )\ + if (_ip_delay2( s, seconds, fn, statusptr )) goto sock_err; + +/* user initialization file */ +extern void (*usr_init)(); + +extern void outs( char far * string ); +extern longword aton( char * string); +extern int _ping( longword host , longword countnum ); +extern longword _chk_ping( longword host , longword *ptr); +extern void _arp_register( longword use, longword instead_of ); + + + +extern void _eth_init(); +extern byte *_eth_formatpacket( void *eth_dest, word eth_type ); +extern void _eth_send( word len); +extern void _eth_free( void *buf); +extern byte *_eth_arrived( word *type_ptr); +extern void _eth_release(); + + + +/* bsd-similar stuff */ + +extern int sock_rbsize( void *s ); +extern int sock_rbused( void *s ); +extern int sock_rbleft( void *s ); +extern int sock_tbsize( void *s ); +extern int sock_tbused( void *s ); +extern int sock_tbleft( void *s ); + + +extern _chk_socket( tcp_Socket *s ); +extern char *inet_ntoa( char *s, longword x ); +extern char *psocket( tcp_Socket *s ); +extern longword inet_addr( char *s ); +extern char *sockerr( tcp_Socket *s ); +extern char *sockstate( tcp_Socket *s ); +extern getpeername( tcp_Socket *s, void *dest, int *len ); +extern getsockname( tcp_Socket *s, void *dest, int *len ); +extern longword gethostid(); +extern longword sethostid( longword ip ); +extern char *getdomainname( char *name, int length ); +extern char *setdomainname( char *string ); +extern char *gethostname( char *name, int length ); +extern char *sethostname( char *string ); +extern word ntohs( word a ); +extern word htons( word a ); +extern longword ntohl( longword x ); +extern longword htonl( longword x ); + +extern void _arp_register( longword use, longword instead_of ); +extern int _arp_resolve( longword ina, void *ethap, int nowait ); + +extern _survivebootp; +extern int sock_established( tcp_Socket *s); +extern sock_stats( tcp_Socket *s, word *days, word *inactive, word *cwindow, word *avg, word *sd ); +extern int addwattcpd( void (*p)() ); +extern int delwattcpd( void (*p)() ); +extern int tap_add( void *socket, void *userid ); +}; +#endif /* WTCP_VER */ diff --git a/CODE/RP/MUNGA_L4/NetNub/include/WATTCP.H b/CODE/RP/MUNGA_L4/NetNub/include/WATTCP.H new file mode 100644 index 0000000..4ea59f1 --- /dev/null +++ b/CODE/RP/MUNGA_L4/NetNub/include/WATTCP.H @@ -0,0 +1,735 @@ + +#ifndef _wattcp_wattcp_h +#define _wattcp_wattcp_h + +/* + * Are we compiling the kernel? + * or an application using the kernel? + */ +#if !defined(__WATTCP_USER__) +#define __WATTCP_KERNEL__ +#endif + +/* + * Note that some stuff is not available to user applications. + * This is generally detail you shouldn't need to worry about, + * and best stay away from to preserve the kernel integrity. + * Note also that there is a lot of other stuff that should probably + * be protected but isn't. + */ + +#define WATTCPH + +/* these are visible for select.c routine return values */ +#define SOCKESTABLISHED 1 +#define SOCKDATAREADY 2 +#define SOCKCLOSED 4 + +#if defined(__WATTCP_KERNEL__) + +#define IP_TYPE 0x0008 + +/* +#define DEBUG +*/ + +#include +#include + +#define MAX_GATE_DATA 12 +#define MAX_STRING 50 /* most strings are limited */ +#endif /* defined(__WATTCP_KERNEL__) */ + +#define MAX_NAMESERVERS 10 +#define MAX_COOKIES 10 + +#if defined(__WATTCP_KERNEL__) + +#define MAXVJSA 1440 /* 10 s */ +#define MAXVJSD 360 /* 10 s */ +#define SAFETYTCP 0x538f25a3L +#define SAFETYUDP 0x3e45e154L +#define TRUE 1 +#define true TRUE +#define FALSE 0 +#define false FALSE + +#define EL_INUSE 0x0001 +#define EL_DELAY 0x0002 +#define EL_TCP 0x0004 +#define EL_SERVER 0x0008 +#define EL_ASCII 0x0010 +#define EL_NEVER 0x0020 + +/* These are Ethernet protocol numbers but I use them for other things too */ +#define UDP_PROTO 0x11 +#define TCP_PROTO 0x06 +#define ICMP_PROTO 0x01 + +#endif /* defined(__WATTCP_KERNEL__) */ + +#define TCP_MODE_BINARY 0 /* default mode */ +#define TCP_MODE_ASCII 1 +#define UDP_MODE_CHK 0 /* default to having checksums */ +#define UDP_MODE_NOCHK 2 /* turn off checksums */ +#define TCP_MODE_NAGLE 0 /* Nagle algorithm */ +#define TCP_MODE_NONAGLE 4 + +typedef unsigned long longword; /* 32 bits */ +typedef unsigned short word; /* 16 bits */ +typedef unsigned char byte; /* 8 bits */ + +typedef struct { byte eaddr[6]; } eth_address; // 94.11.19 -- made an array + +#if defined(__WATTCP_KERNEL__) + +/* undesirable */ +extern longword MsecClock(); +#define clock_ValueRough() MsecClock() + +#define TICKS_SEC 18 + +#define checksum( p, len) inchksum( p, len ) + +#define PD_ETHER 1 +#define PD_SLIP 6 + +extern word sock_inactive; /* in pcbootp.c */ +extern word _pktdevclass; +extern word _mss; +extern word _bootptimeout; /* in pcbootp.c */ +extern longword _bootphost; /* in pcbootp.c */ +extern word _bootpon; + +/* The Ethernet header */ +typedef struct { + eth_address destination; + eth_address source; + word type; +} eth_Header; + +/* The Internet Header: */ +typedef struct { + unsigned hdrlen : 4; + unsigned ver : 4; + byte tos; + word length; + word identification; + word frags; + byte ttl; + byte proto; + word checksum; + longword source; + longword destination; +} in_Header; + + +#define in_GetVersion(ip) ( (ip)->ver ) +#define in_GetHdrlen(ip) ( (ip)->hdrlen ) /* 32 bit word size */ +#define in_GetHdrlenBytes(ip) ( in_GetHdrlen(ip) << 2 ) /* 8 bit byte size */ +#define in_GetTos(ip) ( (ip)->tos) + +#define in_GetTTL(ip) ((ip)->ttl) +#define in_GetProtocol(ip) ((ip)->proto ) + +typedef struct { + word srcPort; + word dstPort; + word length; + word checksum; +} udp_Header; + +#define UDP_LENGTH ( sizeof( udp_Header )) + +typedef struct { + word srcPort; + word dstPort; + longword seqnum; + longword acknum; + word flags; + word window; + word checksum; + word urgentPointer; +} tcp_Header; + +#define tcp_FlagFIN 0x0001 +#define tcp_FlagSYN 0x0002 +#define tcp_FlagRST 0x0004 +#define tcp_FlagPUSH 0x0008 +#define tcp_FlagACK 0x0010 +#define tcp_FlagURG 0x0020 +#define tcp_FlagDO 0xF000 +#define tcp_GetDataOffset(tp) (intel16((tp)->flags) >> 12) + +#endif /* defined(__WATTCP_KERNEL__) + +/* The TCP/UDP Pseudo Header */ +typedef struct { + longword src; + longword dst; + byte mbz; + byte protocol; + word length; + word checksum; +} tcp_PseudoHeader; + + +/* A datahandler for tcp or udp sockets */ +typedef int (*dataHandler_t)( void *s, byte *data, int len, tcp_PseudoHeader *pseudohdr, void *protohdr ); +/* A socket function for delay routines */ +typedef int (*sockfunct_t)( void *s ); + +#if defined(__WATTCP_KERNEL__) +/* + * TCP states, from tcp manual. + * Note: close-wait state is bypassed by automatically closing a connection + * when a FIN is received. This is easy to undo. + */ +#define tcp_StateLISTEN 0 /* listening for connection */ +#define tcp_StateSYNSENT 1 /* syn sent, active open */ +#define tcp_StateSYNREC 2 /* syn received, synack+syn sent. */ +#define tcp_StateESTAB 3 /* established */ +#define tcp_StateESTCL 4 /* established, but will FIN */ +#define tcp_StateFINWT1 5 /* sent FIN */ +#define tcp_StateFINWT2 6 /* sent FIN, received FINACK */ +#define tcp_StateCLOSWT 7 /* received FIN waiting for close */ +#define tcp_StateCLOSING 8 /* sent FIN, received FIN (waiting for FINACK) */ +#define tcp_StateLASTACK 9 /* fin received, finack+fin sent */ +#define tcp_StateTIMEWT 10 /* dally after sending final FINACK */ +#define tcp_StateCLOSEMSL 11 +#define tcp_StateCLOSED 12 /* finack received */ + + +#endif + +#define tcp_MaxBufSize 4096 // was 2048 and inside the __WATTCP_KERNEL__ ifdef /* maximum bytes to buffer on input */ + +#if defined(__WATTCP_KERNEL__) +/* + * UDP socket definition + */ +typedef struct _udp_socket { + struct _udp_socket *next; + word ip_type; /* always set to UDP_PROTO */ + char *err_msg; /* null when all is ok */ + char *usr_name; + void (*usr_yield)( void ); + byte rigid; + byte stress; + word sock_mode; /* a logical OR of bits */ + longword usertimer; /* ip_timer_set, ip_timer_timeout */ + dataHandler_t dataHandler; + eth_address hisethaddr; /* peer's ethernet address */ + longword hisaddr; /* peer's internet address */ + word hisport; /* peer's UDP port */ + longword myaddr; + word myport; + word locflags; + + int queuelen; + byte *queue; + + int rdatalen; /* must be signed */ + word maxrdatalen; + byte *rdata; + byte rddata[ tcp_MaxBufSize + 1]; /* if dataHandler = 0, len == 512 */ + longword safetysig; +} udp_Socket; +#else /* __WATTCP_USER */ +/* + * Don't give users access to the fields. + */ +typedef struct { + byte undoc[ tcp_MaxBufSize + 152]; // was [2200]; +} udp_Socket; +#endif /* __WATTCP_USER__ */ + +#if defined(__WATTCP_KERNEL__) +/* + * TCP Socket definition + */ +typedef struct _tcp_socket { + struct _tcp_socket *next; + word ip_type; /* always set to TCP_PROTO */ + char *err_msg; + char *usr_name; + void (*usr_yield)(void); + byte rigid; + byte stress; + word sock_mode; /* a logical OR of bits */ + + longword usertimer; /* ip_timer_set, ip_timer_timeout */ + dataHandler_t dataHandler; /* called with incoming data */ + eth_address hisethaddr; /* ethernet address of peer */ + longword hisaddr; /* internet address of peer */ + word hisport; /* tcp ports for this connection */ + longword myaddr; + word myport; + word locflags; + + int queuelen; + byte *queue; + + int rdatalen; /* must be signed */ + word maxrdatalen; + byte *rdata; + byte rddata[tcp_MaxBufSize+1]; /* received data */ + longword safetysig; + word state; /* connection state */ + + longword acknum; + longword seqnum; /* data ack'd and sequence num */ + long timeout; /* timeout, in milliseconds */ + byte unhappy; /* flag, indicates retransmitting segt's */ + byte recent; /* 1 if recently transmitted */ + word flags; /* tcp flags word for last packet sent */ + + word window; /* other guy's window */ + int datalen; /* number of bytes of data to send */ + /* must be signed */ + int unacked; /* unacked data */ + + byte cwindow; /* Van Jacobson's algorithm */ + byte wwindow; + + word vj_sa; /* VJ's alg, standard average */ + word vj_sd; /* VJ's alg, standard deviation */ + longword vj_last; /* last transmit time */ + word rto; + byte karn_count; /* count of packets */ + byte tos; /* priority */ + /* retransmission timeout proceedure */ + /* these are in clock ticks */ + longword rtt_lasttran; /* last transmission time */ + longword rtt_smooth; /* smoothed round trip time */ + longword rtt_delay; /* delay for next transmission */ + longword rtt_time; /* time of next transmission */ + + word mss; + longword inactive_to; /* for the inactive flag */ + int sock_delay; + + byte data[tcp_MaxBufSize+1]; /* data to send */ +} tcp_Socket; +#else /* __WATTCP_USER */ +/* + * Don't give users access to the fields. + */ +typedef struct { + byte undoc[((tcp_MaxBufSize*2)+204)]; // WAS [ 4300 ]; +} tcp_Socket; +#endif /* __WATTCP_USER__ */ + +#if defined(__WATTCP_KERNEL__) +/* sock_type used for socket io */ +typedef union { + udp_Socket udp; + tcp_Socket tcp; +} sock_type; +#else /* __WATTCP_USER__ */ +typedef void sock_type; +#endif /* __WATTCP_USER__ */ + +/* similar to UNIX */ +struct sockaddr { + word s_type; + word s_port; + longword s_ip; + byte s_spares[6]; /* unused in TCP realm */ +}; +#define sockaddr_in sockaddr + + /* + * TCP/IP system variables - do not change these since they + * are not necessarily the source variables, instead use + * ip_Init function + */ +extern longword my_ip_addr; +extern longword sin_mask; /* eg. 0xfffffe00L */ +extern word sock_delay; + +#if defined(__WATTCP_KERNEL__) +extern eth_address _eth_addr; +extern eth_address _eth_brdcast; +#endif + + +#if defined(__WATTCP_KERNEL__) +/* + * ARP definitions + */ +#define arp_TypeEther 0x100 /* ARP type of Ethernet address */ + +/* arp op codes */ +#define ARP_REQUEST 0x0100 +#define ARP_REPLY 0x0200 + +/* + * Arp header + */ +typedef struct { + word hwType; + word protType; + word hwProtAddrLen; // hw and prot addr len + word opcode; + eth_address srcEthAddr; + longword srcIPAddr; + eth_address dstEthAddr; + longword dstIPAddr; +} arp_Header; + +#define ETH_MSS 1400 // MSS for Ethernet + +byte *fragment( in_Header * ip ); +void timeout_frags( void ); + +#endif + + +/* + * Ethernet interface -- pcsed.c + */ +void _eth_init( void ); +byte *_eth_formatpacket( eth_address *eth_dest, word eth_type ); +int _eth_send( word len ); +void _eth_free( void *buf ); +byte *_eth_arrived( word *type_ptr ); +void _eth_release( void ); +#if defined(__WATTCP_KERNEL__) +extern void *_eth_hardware( byte *p ); +#endif + + +/* + * timers -- pctcp.c + */ +void ip_timer_init( sock_type *s, int delayseconds ); +int ip_timer_expired( sock_type *s ); +longword MsecClock( void ); + + +/* + * sock_init() -- initialize wattcp libraries -- sock_ini.c + */ +void sock_init(void); +void sock_exit( void ); /* normally called via atexit() in sock_init() */ + + + /* + * tcp_init/tcp_shutdown -- pctcp.c + * - init/kill all tcp and lower services + * - only call if you do not use sock_init + * (NOT RECOMMENDED) + */ +void tcp_shutdown(void); +void tcp_init(void); + +/* + * things you probably won't need to know about + */ + /* + * sock_debugdump -- sock_dbu.c + * - dump some socket control block parameters + * used for testing the kernal, not recommended + */ +void sock_debugdump( sock_type *s ); + /* + * tcp_config - read a configuration file + * - if special path desired, call after sock_init() + * - null reads path from executable + * see sock_init(); + */ +int tcp_config( char *path ); + /* + * tcp_tick - called periodically by user application in sock_wait_... + * - returns 1 when our socket closes + */ +int tcp_tick( sock_type *s ); + /* + * Retransmitter - called periodically to perform tcp retransmissions + * - normally called from tcp_tick, you have to be pretty + * low down to use this one + */ +void tcp_Retransmitter(void); + /* + * tcp_set_debug_state - set 1 or reset 0 - depends on what I have done + */ +void tcp_set_debug_state( int x ); + +/* + * check for bugs -- pctcp.c + */ +int tcp_checkfor( sock_type *t ); + +/* + * Timeout routines. + */ +unsigned long set_timeout( unsigned int seconds ); +unsigned long set_ttimeout( unsigned int ticks ); +int chk_timeout( unsigned long timeout ); + +/* + * socket macros + */ + +/* + * sock_wait_established() + * - waits then aborts if timeout on s connection + * sock_wait_input() + * - waits for received input on s + * - may not be valid input for sock_gets... check returned length + * sock_tick() + * - do tick and jump on abort + * sock_wait_closed(); + * - discards all received data + * + * jump to sock_err with contents of *statusptr set to + * 1 on closed + * -1 on timeout + * + */ + +int _ip_delay0( sock_type *s, int timeoutseconds, sockfunct_t fn, int *statusptr ); +int _ip_delay1( sock_type *s, int timeoutseconds, sockfunct_t fn, int *statusptr); +int _ip_delay2( sock_type *s, int timeoutseconds, sockfunct_t fn, int *statusptr); + + +#if defined(__WATTCP_KERNEL__) +#define set_mstimeout( x ) (set_timeout(0)+ (x / 55)) +#endif /* defined(__WATTCP_KERNEL__) */ + +#define sock_wait_established( s, seconds, fn, statusptr ) \ + if (_ip_delay0( s, seconds, fn, statusptr )) goto sock_err; +#define sock_wait_input( s, seconds, fn , statusptr ) \ + if (_ip_delay1( s, seconds, fn, statusptr )) goto sock_err; +#define sock_tick( s, statusptr ) \ + if ( !tcp_tick(s)) { *statusptr = 1 ; goto sock_err; } +#define sock_wait_closed(s, seconds, fn, statusptr )\ + if (_ip_delay2( s, seconds, fn, statusptr )) goto sock_err; + +/* + * TCP or UDP specific stuff, must be used for open's and listens, but + * sock stuff is used for everything else -- pctcp.c + */ +int tcp_open( tcp_Socket *s, word lport, longword ina, word port, dataHandler_t datahandler ); +int udp_open( udp_Socket *s, word lport, longword ina, word port, dataHandler_t datahandler ); +int tcp_listen( tcp_Socket *s, word lport, longword ina, word port, dataHandler_t datahandler, word timeout ); +int tcp_established( tcp_Socket *s ); + +/* + * Clean up a string -- pctcp.c + */ +char *rip( char *s); + +/* + * Name service / name lookup routines -- udp_dom.c + */ +longword resolve( char *name ); +int reverse_addr_lookup( longword ipaddr, char *name ); + +/* + * less general functions + */ +longword intel( longword x ); +word intel16( word x ); +longword MsecClock( void ); + +/* + * Ctrl-break handling -- pc_cbrk.c + */ +void tcp_cbrk( int mode ); + +void outs( char far * string ); + +#if defined(__WATTCP_KERNEL__) +/* icmp handler -- pcicmp.c */ +int icmp_handler( in_Header *ip ); +#endif + + +/* + * ARP -- pcarp.c + */ +#if defined(__WATTCP_KERNEL__) +void _arp_add_gateway( char *data, longword ip ); +int _arp_handler( arp_Header *in ); +#endif +void _arp_register( longword use, longword instead_of ); +void _arp_tick( longword ip ); /* kernel only? */ +int _arp_resolve( longword ina, eth_address *ethap, int nowait ); + + + +/* + * Packet -- pcpkt.c + * + * These probably shouldn't be visible to user app code. + */ +eth_address *_pkt_eth_init( void ); +int pkt_send( char *buffer, int length ); +void pkt_buf_wipe( void ); +void pkt_buf_release( char *ptr ); +void * pkt_received( void ); +void pkt_release( void ); + +#if defined(__WATTCP_KERNEL__) +void _add_server( int *counter, int max, longword *array, longword value ); +extern word debug_on; +#endif + + +/* + * pcbsd.c + */ +int _chk_socket( sock_type *s ); +char *inet_ntoa( char *s, longword x ); +longword inet_addr( char *s ); +char *sockerr( sock_type *s ); +char *sockstate( sock_type *s ); +longword gethostid( void ); +longword sethostid( longword ip ); +word ntohs( word a ); +word htons( word a ); +longword ntohl( longword x ); +longword htonl( longword x ); + + +#if defined(__WATTCP_KERNEL__) +void *_tcp_lookup( longword hisip, word hisport, word myport ); + +void _tcp_cancel( in_Header *ip, int code, char *msg, longword dummyip ); +void _udp_cancel( in_Header *ip ); + +int _dobootp(void); +#endif + + +/* + * General socket I/O -- pctcp.c + */ +word sock_mode( sock_type *, word); /* see TCP_MODE_... */ +void sock_abort( sock_type *); +void tcp_sendsoon( tcp_Socket *s ); +int sock_fastwrite( sock_type *, byte *, int ); +int sock_write( sock_type *, byte *, int ); +int sock_read( sock_type *, byte *, int ); +int sock_fastread( sock_type *, byte *, int ); +int sock_gets( sock_type *, byte *, int ); +void sock_close( sock_type *s ); + +byte sock_putc( sock_type *s, byte c ); +int sock_getc( sock_type *s ); +int sock_puts( sock_type *s, byte *dp ); +int sock_gets(sock_type *, byte *, int ); + +int sock_setbuf( sock_type *s, byte *dp, int len ); + +int sock_yield( tcp_Socket *s, void (*fn)( void ) ); + + +/* + * s is the pointer to a udp or tcp socket + */ + + +/* + * Socket text output/input routines -- sock_prn.c + */ +int sock_printf( sock_type *s, char *format, ... ); +int sock_scanf( sock_type *s, char *format, ... ); + + +/* + * Misc. socket I/O -- pctcp.c + */ +int sock_setbuf( sock_type *s, byte *dp, int len ); +int sock_enqueue( sock_type *s, byte *dp, int len ); +void sock_noflush( sock_type *s ); +void sock_flush( sock_type *s ); +void sock_flushnext( sock_type *s); +int sock_dataready( sock_type *s ); +int sock_established( sock_type *s ); +void sock_sturdy( sock_type *s, int level ); + + +/* + * Debug output -- pcdbug.c + */ +void db_write( char *msg ); +void db_open( void ); +void db_close( void ); +void dbug_printf( char *, ... ); +void dbug_init( void ); +void dbug_init( void ); + + + +/* + * Socket Select -- select.c + */ +int sock_sselect( sock_type *s, int waitstate ); + + + +/* + * recv routines -- pcrecv.c + */ +int sock_recv_init( sock_type *s, void *space, word len ); +int sock_recv_from( sock_type *s, long *hisip, word *hisport, char *buffer, int len, word flags ); +int sock_recv( sock_type *s, char *buffer, int len, word flags ); + + +/* + * bsd-similar stuff -- pcbuf.c + */ +int sock_rbsize( sock_type *s ); +int sock_rbused( sock_type *s ); +int sock_rbleft( sock_type *s ); +int sock_tbsize( sock_type *s ); +int sock_tbused( sock_type *s ); +int sock_tbleft( sock_type *s ); +int sock_preread( sock_type *s, byte *dp, int len ); + + +/* + * Name conversion stuff -- udp_nds.c + */ +longword aton( char *text ); +int isaddr( char *text ); + +/* + * Configuration -- pcconfig.c + */ +char *_inet_atoeth( char *src, byte *eth ); +void _add_server( int *counter, int max, longword *array, longword value ); +int tcp_config( char *path ); + + /* + * name domain constants + */ + +extern char *def_domain; +extern longword def_nameservers[ MAX_NAMESERVERS ]; + +extern word wathndlcbrk; +extern word watcbroke; + +/* user initialization file */ +extern void (*usr_init)(char *name, char *value); + +extern int _survivebootp; + +extern int _last_cookie; +extern longword _cookie[MAX_COOKIES]; + +extern int _last_nameserver; +extern char *_hostname; + +/* + * Elib stuff + */ +int isstring( char *string, unsigned stringlen ); /* isstring.c */ + + + +#endif /* ndef _wattcp_wattcp_h */ diff --git a/CODE/RP/MUNGA_L4/NetNub/include/vssver.scc b/CODE/RP/MUNGA_L4/NetNub/include/vssver.scc new file mode 100644 index 0000000..cb5d540 Binary files /dev/null and b/CODE/RP/MUNGA_L4/NetNub/include/vssver.scc differ diff --git a/CODE/RP/MUNGA_L4/NetNub/lib/WATTCPLG.LIB b/CODE/RP/MUNGA_L4/NetNub/lib/WATTCPLG.LIB new file mode 100644 index 0000000..fbbe1fe Binary files /dev/null and b/CODE/RP/MUNGA_L4/NetNub/lib/WATTCPLG.LIB differ diff --git a/CODE/RP/MUNGA_L4/NetNub/lib/vssver.scc b/CODE/RP/MUNGA_L4/NetNub/lib/vssver.scc new file mode 100644 index 0000000..2303893 Binary files /dev/null and b/CODE/RP/MUNGA_L4/NetNub/lib/vssver.scc differ diff --git a/CODE/RP/MUNGA_L4/NetNub/mssccprj.scc b/CODE/RP/MUNGA_L4/NetNub/mssccprj.scc new file mode 100644 index 0000000..224058a --- /dev/null +++ b/CODE/RP/MUNGA_L4/NetNub/mssccprj.scc @@ -0,0 +1,5 @@ +SCC = This is a Source Code Control file + +[netnub.mak] +SCC_Aux_Path = "M:\VWESS" +SCC_Project_Name = "$/Tesla_rp/MUNGA_L4/NetNub", DGWAAAAA diff --git a/CODE/RP/MUNGA_L4/NetNub/netnub.mak b/CODE/RP/MUNGA_L4/NetNub/netnub.mak new file mode 100644 index 0000000..e436129 --- /dev/null +++ b/CODE/RP/MUNGA_L4/NetNub/netnub.mak @@ -0,0 +1,95 @@ +.autodepend +.suffixes: .cpp + +!include make.cfg + +!ifndef NETNUB_ROOT +!error NETNUB_ROOT macro is not defined +!endif + +INCLUDE_PATH = $(NETNUB_ROOT)\include;$(NETNUB_ROOT);$(BC_ROOT)\include +LIBRARY_PATH = $(NETNUB_ROOT)\lib;$(BC_ROOT)\lib +.path.obj = $(NETNUB_ROOT)\obj +.path.lib = $(LIBRARY_PATH) + +CFG_FILE = $(NETNUB_ROOT)\netnub.cfg +OBJ_PREFIX = $(NETNUB_ROOT)\obj\\ + +#------------------------------------------------------------------------------ +# targets +# +all: $(CFG_FILE) $(NETNUB_ROOT)\netnub.exe + +clean: + del $(NETNUB_ROOT)\obj\*.obj + del $(NETNUB_ROOT)\*.exe + +assemble: + @echo No assembly targets + +#------------------------------------------------------------------------------ +# Implicit rules +# +LINK_OPTIONS = -Tde -c -L$(LIBRARY_PATH) +BCC = bcc + +$(CFG_FILE): $(NETNUB_ROOT)\netnub.mak + copy &&| +-DMSDOS;NETNUB;USE_PROFILE_ANALYSIS;CLEAN_BUILD=1 +-b +-r +-ff +-AT +-k- +-N- +-v- +-3 +-V +-Jg +-x- +-RT- +-O2 +-Ot +-Oc +-Og +-O +-Ol +-Z +-Ob +-Oe +-Oi +-Om +-Op +-Ov +-w +-c +-ml +-I$(INCLUDE_PATH) +-n$(NETNUB_ROOT)\obj +| $(CFG_FILE) + +{$(NETNUB_ROOT)}.cpp{$(NETNUB_ROOT)\obj}.obj: + $(BCC) @$(CFG_FILE) $< >>error.log + +#------------------------------------------------------------------------------ +# Test program +# +NETNUB_OBJS = \ + ?netnub.obj \ + ?analysis.obj \ + ?nopause.obj + +$(NETNUB_ROOT)\netnub.exe:\ + $(NETNUB_OBJS:?=) $(NETNUB_ROOT)\lib\wattcplg.lib + tlink @&&| +$(LINK_OPTIONS) + +$(BC_ROOT)\lib\c0l.obj+ +$(NETNUB_OBJS:?=$(OBJ_PREFIX)) +$<,$* +wattcplg.lib+ +emu.lib+ +mathl.lib+ +cl.lib +| >>error.log + +$(NETNUB_OBJS:?=): $(CFG_FILE) diff --git a/CODE/RP/MUNGA_L4/NetNub/vssver.scc b/CODE/RP/MUNGA_L4/NetNub/vssver.scc new file mode 100644 index 0000000..d4d3c97 Binary files /dev/null and b/CODE/RP/MUNGA_L4/NetNub/vssver.scc differ diff --git a/CODE/RP/MUNGA_L4/PCDPMI.INC b/CODE/RP/MUNGA_L4/PCDPMI.INC new file mode 100644 index 0000000..c7b13cc --- /dev/null +++ b/CODE/RP/MUNGA_L4/PCDPMI.INC @@ -0,0 +1,192 @@ +;=========================================================================== +; File: PCDPMI.INC +; Project: MUNGA +; Contents: PC DPMI equates (TASM) +;--------------------------------------------------------------------------- +; Date Who Modification +; -------- --- ----------------------------------------------------------- +; 01/04/95 CPB Initial coding +;--------------------------------------------------------------------------- +; Copyright (C) 1994, Virtual World Entertainment, Inc. +; All Rights reserved worldwide +; This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL +;=========================================================================== + +DPMIrealModeRegs STRUC + realEDI dd ? + realESI dd ? + realEBP dd ? + realUnused dd 0 ;reserved, should be zero + realEBX dd ? + realEDX dd ? + realECX dd ? + realEAX dd ? + realStatus dw ? + realES dw ? + realDS dw ? + realFS dw 0 ;reserved, should be zero + realGS dw 0 ;reserved, should be zero + realIP dw 0 ;reserved, should be zero + realCS dw 0 ;reserved, should be zero + realSP dw ? + realSS dw ? +DPMIrealModeRegs ENDS + +DPMI_GET_CPU_MODE MACRO ;returns ax=0 if protected mode + mov ax,1686h + int 2Fh +ENDM + +DPMI_ALLOCATE_LDT MACRO + mov ax,0000h + int 31h +ENDM + +DPMI_FREE_LDT MACRO + mov ax,0001h + int 31h +ENDM + +DPMI_MAP_SEG_TO_DESC MACRO + mov ax,0002h + int 31h +ENDM + +DPMI_GET_SELECT_INC MACRO + mov ax,0003h + int 31h +ENDM + +DPMI_GET_SEGMENT_BASE MACRO + mov ax,0006h + int 31h +ENDM + +DPMI_SET_SEGMENT_BASE MACRO + mov ax,0007h + int 31h +ENDM + +DPMI_SET_SEGMENT_LIMIT MACRO + mov ax,0008h + int 31h +ENDM + +DPMI_SET_DESC_RIGHTS MACRO + mov ax,0009h + int 31h +ENDM + +DPMI_CREATE_ALIAS_DESC MACRO + mov ax,000Ah + int 31h +ENDM + +DPMI_GET_DESC MACRO + mov ax,000Bh + int 31h +ENDM + +DPMI_SET_DESC MACRO + mov ax,000Ch + int 31h +ENDM + +DPMI_GET_REAL_VECTOR MACRO + mov ax,0200h + int 31h +ENDM + +DPMI_SET_REAL_VECTOR MACRO + mov ax,0201h + int 31h +ENDM + +DPMI_GET_EXCEPT_VECTOR MACRO + mov ax,0202h + int 31h +ENDM + +DPMI_SET_EXCEPT_VECTOR MACRO + mov ax,0203h + int 31h +ENDM + +DPMI_GET_PROT_VECTOR MACRO + mov ax,0204h + int 31h +ENDM + +DPMI_SET_PROT_VECTOR MACRO + mov ax,0205h + int 31h +ENDM + +DPMI_SIMULATE_REAL_INT MACRO + mov ax,0300h + int 31h +ENDM + +DPMI_CALL_REAL_FAR MACRO + mov ax,0301h + int 31h +ENDM + +DPMI_CALL_REAL_IRET MACRO + mov ax,0302h + int 31h +ENDM + +DPMI_ALLOC_REAL_CALLBK MACRO + mov ax,0303h + int 31h +ENDM + +DPMI_FREE_REAL_CALLBK MACRO + mov ax,0304h + int 31h +ENDM + +DPMI_GET_STATE_SRADDR MACRO + mov ax,0305h + int 31h +ENDM + +DPMI_GET_RAW_MODE_SW MACRO + mov ax,0306h + int 31h +ENDM + +DPMI_GET_DPMI_VERSION MACRO + mov ax,0400h + int 31h +ENDM + +DPMI_BAD_VERSION equ 0400h + +DPMI_DISABLE_INT MACRO + mov ax,0900h + int 31h +ENDM + +DPMI_ENABLE_INT MACRO + mov ax,0901h + int 31h +ENDM + +DPMI_DISABLE_SAVE_INT MACRO + mov ax,0900h + int 31h + push ax +ENDM +DPMI_RESTORE_PREV_INT MACRO + pop ax + int 31h +ENDM + +DPMI_INT_STATE MACRO + mov ax,0902h + int 31h +ENDM + + diff --git a/CODE/RP/MUNGA_L4/PCPIC.INC b/CODE/RP/MUNGA_L4/PCPIC.INC new file mode 100644 index 0000000..1952bad --- /dev/null +++ b/CODE/RP/MUNGA_L4/PCPIC.INC @@ -0,0 +1,82 @@ +;=========================================================================== +; File: PCPIC.INC +; Project: MUNGA +; Contents: PC Peripheral Interrupt Controller equates (TASM) +;--------------------------------------------------------------------------- +; Date Who Modification +; -------- --- ----------------------------------------------------------- +; 01/04/95 CPB Initial coding +;--------------------------------------------------------------------------- +; Copyright (C) 1994, Virtual World Entertainment, Inc. +; All Rights reserved worldwide +; This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL +;=========================================================================== + +PIC_MASTER_0 EQU 020h +PIC_MASTER_1 EQU 021h + +PIC_SLAVE_0 EQU 0A0h +PIC_SLAVE_1 EQU 0A1h + + +PIC_TIMERTICK EQU 00000001b ;PIC:system timer tick +PIC_KEYBOARD EQU 00000010b ;PIC:keyboard +PIC_CASCADE EQU 00000100b ;PIC:cascade to secondary PIC +PIC_COM2COM4 EQU 00001000b ;PIC:COM2, COM4 (shared) +PIC_COM1COM3 EQU 00010000b ;PIC:COM1, COM3 (shared) +PIC_LPT2 EQU 00100000b ;PIC:LPT2 +PIC_DISKETTE EQU 01000000b ;PIC:diskette controller +PIC_LPT1 EQU 10000000b ;PIC:LPT1 + +OCW2_NONSPEC_EOI EQU 00100000b ;OCW2: non-specific EOI +OCW2_SPEC_EOI EQU 01100000b ;OCW2: specific EOI (set lowest 3 bits) + +OCW3_READ_IRR EQU 00001010b ;OCW3:read IRR +OCW3_READ_ISR EQU 00001011b ;OCW3:read ISR + +ASSERT_PIC MACRO theseBits + in al,PIC_MASTER_1 + and al,NOT theseBits ;;clear bit(s) to enable + out PIC_MASTER_1,al +ENDM + +ASSERT_PIC_REG MACRO reg + not reg + in al,PIC_MASTER_1 + and al,reg ;;clear bit(s) to enable + out PIC_MASTER_1,al + not reg +ENDM + +RETRACT_PIC MACRO theseBits + in al,PIC_MASTER_1 + or al,theseBits ;;set bit(s) to disable + out PIC_MASTER_1,al +ENDM + +PIC_RESET_MASTER MACRO + mov al,OCW2_NONSPEC_EOI + out PIC_MASTER_0,al ;;unspecified EOI to master PIC +ENDM + +PIC_RESET_SLAVE MACRO + mov al,OCW2_NONSPEC_EOI + out PIC_SLAVE_0,al ;;unspecified EOI to slave PIC + out PIC_MASTER_0,al ;;unspecified EOI to master PIC +ENDM + +PIC_ISR_TO_AL MACRO + mov al,OCW3_READ_ISR + out PIC_MASTER_0,al + in al,PIC_MASTER_0 ;;reads IMR byte +ENDM + +PIC_IRR_TO_AL MACRO + mov al,OCW3_READ_IRR + out PIC_MASTER_0,al + in al,PIC_MASTER_0 ;;reads IMR byte +ENDM + +PIC_IMR_TO_AL MACRO + in al,PIC_MASTER_1 ;;reads IMR byte +ENDM diff --git a/CODE/RP/MUNGA_L4/PCSERIAL.INC b/CODE/RP/MUNGA_L4/PCSERIAL.INC new file mode 100644 index 0000000..f91fa18 --- /dev/null +++ b/CODE/RP/MUNGA_L4/PCSERIAL.INC @@ -0,0 +1,266 @@ +;=========================================================================== +; File: PCSERIAL.INC +; Project: MUNGA +; Contents: PC serial interface equates (TASM) +;--------------------------------------------------------------------------- +; Date Who Modification +; -------- --- ----------------------------------------------------------- +; 01/04/95 CPB Initial coding +;--------------------------------------------------------------------------- +; Copyright (C) 1994, Virtual World Entertainment, Inc. +; All Rights reserved worldwide +; This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL +;=========================================================================== + +; +; UART register definitions +; +; --- LSR bit low +UART_DATA EQU 0 ;Transmitter holding/receiver data register +UART_IER EQU 1 ;Interrupt enable register +; --- LSR bit high +UART_BRDL EQU 0 ;Low byte, data rate divisor +UART_BRDH EQU 1 ;High byte, data rate divisor +; --- LSR bit "don't care" +UART_IIR EQU 2 ;Interrupt identification register +UART_LCR EQU 3 ;Line control register +UART_MCR EQU 4 ;Modem control register +UART_LSR EQU 5 ;Line status register +UART_MSR EQU 6 ;Modem status register + +UART_COM1_BASE EQU 03F8h ;COM1 port address +UART_COM2_BASE EQU 02F8h ;COM2 port address +UART_COM3_BASE EQU 03E8h ;COM3 port address +UART_COM4_BASE EQU 02E8h ;COM4 port address + +UART_300BAUD EQU 0180h ;Data rate definitions +UART_1200BAUD EQU 0060h +UART_2400BAUD EQU 0030h +UART_9600BAUD EQU 000Ch +UART_19KBAUD EQU 0006h ;19,200 Baud +UART_38KBAUD EQU 0003h ;38,400 Baud +UART_115KBAUD EQU 0001h ;115,200 Baud + +UART_IER_RDR EQU 00000001b ;IER:receiver data available +UART_IER_THR EQU 00000010b ;IER:transmit hold register empty +UART_IER_LSR EQU 00000100b ;IER:data error or receipt of break +UART_IER_MSR EQU 00001000b ;IER:MSR has changed + +UART_IER_RX EQU 00001101b ;IER:all internal receiver sources +UART_IER_ALL EQU 00001111b ;IER:all internal sources + +UART_IIR_DONE EQU 00000001b ;IIR:zero if interrupt pending + +UART_IIR_MSR EQU 00000000b ;IIR:MSR has changed +UART_IIR_THR EQU 00000010b ;IIR:THR is empty +UART_IIR_RDR EQU 00000100b ;IIR:data available in RDR +UART_IIR_LSR EQU 00000110b ;IIR:data error or receipt of break + +UART_LCR_5 EQU 00000000b ;LCR:5 data bits +UART_LCR_6 EQU 00000001b ;LCR:6 data bits +UART_LCR_7 EQU 00000010b ;LCR:7 data bits +UART_LCR_8 EQU 00000011b ;LCR:8 data bits + +UART_LCR_S1 EQU 00000000b ;LCR:one stop bit +UART_LCR_S2 EQU 00000100b ;LCR:1.5 stop for 5 bits, else 2 stop bits + +UART_LCR_NP EQU 00000000b ;LCR:no parity +UART_LCR_OP EQU 00001000b ;LCR:odd parity +UART_LCR_EP EQU 00011000b ;LCR:even parity +UART_LCR_MP EQU 00101000b ;LCR:mark parity? (always set) +UART_LCR_SP EQU 00111000b ;LCR:space parity? (always clear) + +UART_LCR_BRK EQU 01000000b ;LCR:transmit break + +UART_LCR_ALT EQU 10000000b ;LCR:allows access to data rate registers + +UART_MCR_DTR EQU 00000001b ;MCR:activate DTR output +UART_MCR_RTS EQU 00000010b ;MCR:activate RTS output +UART_MCR_USR EQU 00000100b ;MCR:activate user output line #1 +UART_MCR_IRQ EQU 00001000b ;MCR:enable interrupts (user output line #2) +UART_MCR_LBT EQU 00010000b ;MCR:enable loopback testing + +UART_LSR_RDR EQU 00000001b ;LSR:data available in RDR +UART_LSR_OE EQU 00000010b ;LSR:overrun error +UART_LSR_PE EQU 00000100b ;LSR:parity error +UART_LSR_FE EQU 00001000b ;LSR:framing error +UART_LSR_BRK EQU 00010000b ;LSR:break detect +UART_LSR_THR EQU 00100000b ;LSR:THR is empty +UART_LSR_TSR EQU 01000000b ;LSR:TSR is empty +UART_LSR_ERRS EQU UART_LSR_OE+UART_LSR_PE+UART_LSR_FE+UART_LSR_BRK + +UART_MSR_DCTS EQU 00000001b ;MSR:delta CTS (CTS has changed) +UART_MSR_DDSR EQU 00000010b ;MSR:delta DSR (DSR has changed) +UART_MSR_DRI EQU 00000100b ;MSR:delta RI (RI has changed) +UART_MSR_DDCD EQU 00001000b ;MSR:delta DCD (DCD has changed) +UART_MSR_CTS EQU 00010000b ;MSR:CTS status +UART_MSR_DSR EQU 00100000b ;MSR:DSR status +UART_MSR_RI EQU 01000000b ;MSR:RI status +UART_MSR_DCD EQU 10000000b ;MSR:DCD status + +;------------------------------------------------------------------------- +; ASSERT_MCR macro - asserts ("turns on") selected MCR bits +;------------------------------------------------------------------------- +; Enter: +; DX = base port address for UART +; theseBits = MCR bits to assert (see UART_MCR_... definitions, above) +;------------------------------------------------------------------------- +; Returns: +; (nothing) +;------------------------------------------------------------------------- +ASSERT_MCR MACRO theseBits + add dx,UART_MCR ;move to MCR register + in al,dx ;get contents + or al,theseBits ;turn on bit(s) + out dx,al + sub dx,UART_MCR ;restore dx +ENDM + +;------------------------------------------------------------------------- +; RETRACT_MCR macro - retracts ("turns off") selected MCR bits +;------------------------------------------------------------------------- +; Enter: +; DX = base port address for UART +; theseBits = MCR bits to assert (see UART_MCR_... definitions, above) +;------------------------------------------------------------------------- +; Returns: +; (nothing) +;------------------------------------------------------------------------- +RETRACT_MCR MACRO theseBits + add dx,UART_MCR ;move to MCR register + in al,dx ;get contents + and al,NOT (theseBits) ;turn off bit(s) + out dx,al + sub dx,UART_MCR ;restore dx +ENDM + +;------------------------------------------------------------------------- +; ASSERT_IER macro - asserts ("turns on") selected IER bits +;------------------------------------------------------------------------- +; Enter: +; DX = base port address for UART +; theseBits = MCR bits to assert (see UART_IER_... definitions, above) +;------------------------------------------------------------------------- +; Returns: +; (nothing) +;------------------------------------------------------------------------- +ASSERT_IER MACRO theseBits + add dx,UART_IER ;move to IER register + in al,dx ;get contents + or al,theseBits ;turn on bit(s) + out dx,al + sub dx,UART_IER ;restore dx +ENDM + +;------------------------------------------------------------------------- +; RETRACT_IER macro - retracts ("turns off") selected IER bits +;------------------------------------------------------------------------- +; Enter: +; DX = base port address for UART +; theseBits = MCR bits to assert (see UART_IER_... definitions, above) +;------------------------------------------------------------------------- +; Returns: +; (nothing) +;------------------------------------------------------------------------- +RETRACT_IER MACRO theseBits + add dx,UART_IER ;move to IER register + in al,dx ;get contents + and al,NOT (theseBits) ;turn off bit(s) + out dx,al + sub dx,UART_IER ;restore dx +ENDM + +;------------------------------------------------------------------------- +; ASSERT_IIR macro - asserts ("turns on") selected IIR bits +;------------------------------------------------------------------------- +; Enter: +; DX = base port address for UART +; theseBits = MCR bits to assert (see UART_IIR_... definitions, above) +;------------------------------------------------------------------------- +; Returns: +; (nothing) +;------------------------------------------------------------------------- +ASSERT_IIR MACRO theseBits + add dx,UART_IIR ;move to IIR register + in al,dx ;get contents + or al,theseBits ;turn on bit(s) + out dx,al + sub dx,UART_IIR ;restore dx +ENDM + +;------------------------------------------------------------------------- +; RETRACT_IIR macro - retracts ("turns off") selected IIR bits +;------------------------------------------------------------------------- +; Enter: +; DX = base port address for UART +; theseBits = MCR bits to assert (see UART_IIR_... definitions, above) +;------------------------------------------------------------------------- +; Returns: +; (nothing) +;------------------------------------------------------------------------- +RETRACT_IIR MACRO theseBits + add dx,UART_IIR ;move to IIR register + in al,dx ;get contents + and al,NOT (theseBits) ;turn off bit(s) + out dx,al + sub dx,UART_IIR ;restore dx +ENDM + +;------------------------------------------------------------------------- +; SETFORMAT_AL macro - sets LCR from al +;------------------------------------------------------------------------- +; Enter: +; DX = base port address for UART +; AL = LCR bits to set (see UART_LCR... definitions, above) +;------------------------------------------------------------------------- +; Returns: +; (nothing) +;------------------------------------------------------------------------- +SETFORMAT_AL MACRO + add dx,UART_LCR ;move to UART_LCR + out dx,al + sub dx,UART_LCR ;restore base address +ENDM + +;------------------------------------------------------------------------- +; SETBAUD_CX macro - sets data rate +;------------------------------------------------------------------------- +; Enter: +; DX = base port address for UART +; CX = data rate value +;------------------------------------------------------------------------- +; Returns: +; (nothing) +;------------------------------------------------------------------------- +; Side effects: +; Modifies AL +;------------------------------------------------------------------------- +SETBAUD_CX MACRO + ;--------------------------------- + ; Select baud rate division registers + ;--------------------------------- + add dx,UART_LCR ;turn on UART_LCR_ALT + in al,dx + or al,UART_LCR_ALT + out dx,al + sub dx,UART_LCR ;restore base address + ;--------------------------------- + ; Set baud rate division registers + ;--------------------------------- + mov al,cl ;get low divisor in al + out dx,al ;write to BRDL + inc dx ;move to high divisor address + mov al,ch ;get high divisor in al + out dx,al ;write to BRDH + dec dx ;restore base address + ;--------------------------------- + ; Deselect baud rate division registers + ;--------------------------------- + add dx,UART_LCR ;turn off UART_LCR_ALT + in al,dx + and al,NOT UART_LCR_ALT + out dx,al + sub dx,UART_LCR ;restore base address +ENDM + +;end of PCSERIAL.INC diff --git a/CODE/RP/MUNGA_L4/PCSPAK.ASM b/CODE/RP/MUNGA_L4/PCSPAK.ASM new file mode 100644 index 0000000..e05c2d0 --- /dev/null +++ b/CODE/RP/MUNGA_L4/PCSPAK.ASM @@ -0,0 +1,2044 @@ +;=========================================================================== +; File: PCSPAK.asm +; Project: MUNGA +; Contents: PC serial packet driver +;--------------------------------------------------------------------------- +; Date Who Modification +; -------- --- ----------------------------------------------------------- +; 01/16/95 CPB Initial coding +;--------------------------------------------------------------------------- +; Copyright (C) 1994, Virtual World Entertainment, Inc. +; All Rights reserved worldwide +; This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL +;=========================================================================== + + include l4asm.inc + include pcserial.inc + include pcpic.inc + include pcdpmi.inc + +;=========================================================================== +;; Diagnostics flags +;=========================================================================== +KEEP_HISTORY equ 0 +DIE_ON_ERROR equ 1 +DIE_ON_OVERFLOW equ 1 +WATCH_IRQ equ 1 + +THE_WAY_IT_WAS equ 0 + +;=========================================================================== +; Equates +;=========================================================================== +if DIE_ON_ERROR + + DISABLE_AND_DIE MACRO val ;debugging macro: crash to debugger + ;-------------------------------------------------------------- + ; Disable UART interrupt + ;-------------------------------------------------------------- + mov dx,global_serial_port + RETRACT_MCR UART_MCR_IRQ+UART_MCR_RTS + ; NOTE: from this point on, interrupts CANNOT occur from the UART. + ;-------------------------------------------------------------- + ; Send non-specific EOI just in case we're in IRQ routine + ;-------------------------------------------------------------- + PIC_RESET_MASTER + ;-------------------------------------------------------------- + ; Okay, NOW die. + ;-------------------------------------------------------------- + push eax ;save ax + push edx ;save dx + mov edx,0FFFFFFFFh ;crash loudly + mov eax,val + mov [edx],eax + ENDM + +else + DISABLE_AND_DIE MACRO val + ENDM + +endif + + +if WATCH_IRQ + + IRQ_WATCH MACRO val + mov iThinkIRQIsOn,val + ENDM + + IRQ_WATCH_ENTRY MACRO + push iThinkIRQIsOn + mov iThinkIRQIsOn,0 + ENDM + + IRQ_WATCH_EXIT MACRO + pop iThinkIRQIsOn + ENDM + +else + + IRQ_WATCH MACRO val + ENDM + + IRQ_WATCH_ENTRY MACRO + ENDM + + IRQ_WATCH_EXIT MACRO + ENDM + +endif + +TICK MACRO ;debugging macro: ticks the speaker + + push dx + push ax + + mov dx,061h + in al,dx + + xor al,002h + out dx,al + + nop + nop + nop + + xor al,002h + out dx,al + + pop ax + pop dx +ENDM + +SPKR_SET MACRO ;debugging macro + + push dx + push ax + + mov dx,061h + in al,dx + + or al,002h + out dx,al + + pop ax + pop dx +ENDM + +SPKR_RESET MACRO ;debugging macro + + push dx + push ax + + mov dx,061h + in al,dx + + and al,(NOT 002h) + out dx,al + + pop ax + pop dx +ENDM + +SPKR_TOGGLE MACRO ;debugging macro + + push dx + push ax + + mov dx,061h + in al,dx + + xor al,002h + out dx,al + + pop ax + pop dx +ENDM + +;------------------------------------------------------------------------- +; Command buffer equates +; +; WARNING**WARNING**WARNING**WARNING**WARNING**WARNING**WARNING**WARNING +; Any modifications to this structure MUST be +; reflected in L4PCSPAK.hpp!! +; +; BE ESPECIALLY CAREFUL IF 'BUFSIZE' IS CHANGED! +; +; WARNING**WARNING**WARNING**WARNING**WARNING**WARNING**WARNING**WARNING +;------------------------------------------------------------------------- +COMBUFSIZE EQU 512 ;;;1024 ;buffer size (must be power of 2) + ;; was 256 before 7-13-95 cpb +COMBUF STRUC + head dw 0 + tail dw 0 + tempHead dw 0 + tempTail dw 0 + + count dw 0 + tempIn dw 0 + tempOut dw 0 + + data db COMBUFSIZE dup (?) +COMBUF ENDS + +;------------------------------------------------ +; COM_INIT macro +; Initializes COMBUF structure +;------------------------------------------------ +; Enter: +; esi = pointer to object containing COMBUF +; name = offset to COMBUF within object +;------------------------------------------------ +; Side effects: +; (none) +;------------------------------------------------ +COM_INIT MACRO name ;enter with object pointer in esi + + add esi,name ;;build COMBUF pointer in esi + + mov head[esi],0 + mov tempHead[esi],0 + mov tempTail[esi],0 + mov tail[esi],0 + + mov count[esi],0 + mov tempIn[esi],0 + mov tempOut[esi],0 + + sub esi,name ;;restore esi +ENDM + +;------------------------------------------------ +; COM_PUT_AL macro +; 'Temporarily' puts character in AL into COMBUF +;------------------------------------------------ +; Enter: +; esi = pointer to object containing COMBUF +; name = offset to COMBUF within object +;------------------------------------------------ +; Side effects: +; ebx modified +;------------------------------------------------ +COM_PUT_AL MACRO name + LOCAL label1 + LOCAL label2 + + add esi,name ;;build COMBUF pointer in esi + + cmp tempIn[esi],COMBUFSIZE + +if DIE_ON_OVERFLOW + jb label1 + DISABLE_AND_DIE 8 +endif + jge label2 +label1: + + inc tempIn[esi] ;;increment 'tempIn' count + + xor ebx,ebx ;;get 'tempHead' offset in ebx + mov bx,tempHead[esi] + add esi,ebx ;;add to base + mov data[esi],al ;;write the data + sub esi,ebx ;;restore COMBUF pointer + + inc bx ;;bump 'tempHead' + and bx,COMBUFSIZE-1 ;;limit it + mov tempHead[esi],bx ;;save the new 'tempHead' offset +label2: + sub esi,name ;;restore esi +ENDM + +;------------------------------------------------ +; COM_RESTORE_IN macro +; Discards characters 'temporarily' placed in COMBUF +;------------------------------------------------ +; Enter: +; esi = pointer to object containing COMBUF +; name = offset to COMBUF within object +;------------------------------------------------ +; Side effects: +; bx modified +;------------------------------------------------ +COM_RESTORE_IN MACRO name + + add esi,name ;;build COMBUF pointer in ecx + + mov tempIn[esi],0 ;;clear the 'tempIn' count + + mov bx,head[esi] ;;restore 'tempHead' index + mov tempHead[esi],bx + + sub esi,name ;;restore esi +ENDM + +;------------------------------------------------ +; COM_ACCEPT_IN macro +; Accepts characters 'temporarily' placed in COMBUF +;------------------------------------------------ +; Enter: +; esi = pointer to object containing COMBUF +; name = offset to COMBUF within object +;------------------------------------------------ +; Side effects: +; bx modified +;------------------------------------------------ +COM_ACCEPT_IN MACRO name + + add esi,name ;;build COMBUF pointer in ecx + + xor bx,bx ;;prepare for exchange + xchg bx,tempIn[esi] ;;get, clear 'tempIn' count + add count[esi],bx ;;add to current count + + mov bx,tempHead[esi] ;;set the new head offset + mov head[esi],bx + + sub esi,name ;;restore esi +ENDM + +;------------------------------------------------ +; COM_GET_AL macro +; 'Temporarily' gets character into AL from COMBUF +;------------------------------------------------ +; Enter: +; esi = pointer to object containing COMBUF +; name = offset to COMBUF within object +;------------------------------------------------ +; Side effects: +; ebx modified +;------------------------------------------------ +COM_GET_AL MACRO name + + add esi,name ;;build COMBUF pointer in ecx + + inc tempOut[esi] ;;inc 'tempOut' count + + xor ebx,ebx ;;get 'tempTail' offset in ebx + mov bx,tempTail[esi] + + add esi,ebx ;;add to base + mov al,data[esi] ;;read the data + sub esi,ebx ;;restore COMBUF pointer + + inc bx ;;bump 'tempTail' + and bx,COMBUFSIZE-1 ;;limit it + mov tempTail[esi],bx ;;save the new 'tempTail' offset + + sub esi,name ;;restore esi +ENDM + +;------------------------------------------------ +; COM_RESTORE_OUT macro +; Restores characters 'temporarily' removed from COMBUF +;------------------------------------------------ +; Enter: +; esi = pointer to object containing COMBUF +; name = offset to COMBUF within object +;------------------------------------------------ +; Side effects: +; bx modified +;------------------------------------------------ +COM_RESTORE_OUT MACRO name + + add esi,name ;;build COMBUF pointer in ecx + + mov tempOut[esi],0 ;;clear the 'tempOut' count + + mov bx,tail[esi] ;;restore 'tempTail' index + mov tempTail[esi],bx + + sub esi,name ;;restore esi +ENDM + +;------------------------------------------------ +; COM_ACCEPT_OUT macro +; Discards characters 'temporarily' removed from COMBUF +;------------------------------------------------ +; Enter: +; esi = pointer to object containing COMBUF +; name = offset to COMBUF within object +;------------------------------------------------ +; Side effects: +; bx modified +;------------------------------------------------ +COM_ACCEPT_OUT MACRO name + + add esi,name ;;build COMBUF pointer in ecx + + xor ax,ax ;;prepare for exchange + xchg ax,tempOut[esi] ;;get, clear 'tempOut' count + sub count[esi],ax ;;subtract from current count + + mov ax,tempTail[esi] ;;set the new tail offset + mov tail[esi],ax + + sub esi,name ;;restore esi +ENDM + +;------------------------------------------------ +; COM_EAT_PACKET macro +; Discards entire buffer item from COMBUF +;------------------------------------------------ +; Enter: +; esi = pointer to object containing COMBUF +; ebx = pointer to command length table +; name = offset to COMBUF within object +;------------------------------------------------ +; Side effects: +; ax modified +;------------------------------------------------ +COM_EAT_PACKET MACRO name + + add esi,name ;;build COMBUF pointer in esi + + push ebx + xor ebx,ebx ;;get 'tail' offset in ebx + mov bx,tail[esi] + add esi,ebx ;;add to base + mov al,data[esi] ;;read the packet command byte + sub esi,ebx ;;restore COMBUF pointer + pop ebx + + and al,07fh ;;remove the MSB + xlatb ;;convert packet command to length + xor ah,ah ;;convert packet length to unsigned word + inc ax ;;include the command byte + sub count[esi],ax ;;subtract from count + + add ax,tail[esi] ;;move the tail + and ax,COMBUFSIZE-1 ;;limit it + mov tail[esi],ax ;;save it + mov tempTail[esi],ax ;;set the new tempTail index + + mov tempOut[esi],0 ;;clear the 'tempOut' count also + + sub esi,name ;;restore esi + +ENDM + +;------------------------------------------------ +; COM_SPACE_IN macro +; Returns input bytes available in COMBUF +;------------------------------------------------ +; Enter: +; esi = pointer to object containing COMBUF +; name = offset to COMBUF within object +; reg = register to use +;------------------------------------------------ +; Side effects: +; ax contains number of bytes available +;------------------------------------------------ +COM_SPACE_IN MACRO name,reg + + add esi,name ;;build COMBUF pointer in ecx + mov reg,COMBUFSIZE + sub reg,count[esi] + sub reg,tempIn[esi] + sub esi,name ;;restore esi +ENDM + +;------------------------------------------------ +; COM_SPACE_OUT macro +; Returns output bytes available in COMBUF +;------------------------------------------------ +; Enter: +; esi = pointer to object containing COMBUF +; name = offset to COMBUF within object +;------------------------------------------------ +; Side effects: +; ax contains number of bytes available +;------------------------------------------------ +COM_SPACE_OUT MACRO name + + add esi,name ;;build COMBUF pointer in ecx + mov ax,count[esi] + sub ax,tempOut[esi] + sub esi,name ;;restore esi +ENDM + +;------------------------------------------------------------------------- +; IRQ data equates +;------------------------------------------------------------------------- + +IRQDATA STRUC + irqHandler dd ? + irqThis dd ? + + irqOldOffset dd ? ;THE ORDER OF THESE TWO IS CRITICAL. + irqOldSelector dw ? ;See the interrupt handlers near the end. + + irqPort dw ? + + irqNum db ? + irqPICbit db ? + irqOldPICbits db ? + irqPadByte db ? +IRQDATA ENDS +;------------------------------------------------------------------------- +; PCSPAK object equates +; +; WARNING**WARNING**WARNING**WARNING**WARNING**WARNING**WARNING**WARNING +; Any modifications to this structure MUST be +; reflected in PCSPAK.hh!! +; WARNING**WARNING**WARNING**WARNING**WARNING**WARNING**WARNING**WARNING +;------------------------------------------------------------------------- + +TX_IDLE_STATE EQU 0 +TX_RESTART_STATE EQU 1 +TX_BODY_STATE EQU 2 +TX_WAIT_STATE EQU 3 + +RX_IDLE_STATE EQU 0 +RX_ACTIVE_STATE EQU 1 + +; +; Lower eight bits reserved for UART status +; +ERR_INIT EQU 0000000100000000b +TX_EARLY_ERR EQU 0000001000000000b +TX_ABANDON EQU 0000010000000000b +TX_RESTART EQU 0000100000000000b +TX_NAK EQU 0001000000000000b +RX_SEQ_ERR EQU 0010000000000000b +RX_BAD_CHECKSUM EQU 0100000000000000b +RX_COM_ERR EQU 1000000000000000b + +TXMAXRESET EQU 3 +TXMAXERROR EQU 3 +TXMAXIDLE EQU 4 + + ; 080h...0FBh ;command codes +MAX_COMMAND_CHAR EQU 0FBh ;largest command code allowed +ACK_CHAR EQU 0FCh +NAK_CHAR EQU 0FDh +RESTART_CHAR EQU 0FEh +IDLE_CHAR EQU 0FFh + +RX_ACK_BIT EQU 00000001b +RX_NAK_BIT EQU 00000010b + +PCSPAK STRUC + portBase dw ? ;base port address + ErrorValue dw ? + + enabled db ? ;set if rx/tx enabled + txHoldOff db ? + txReply db ? + txState db ? + txCount db ? + txResetCount db ? + txErrorCount db ? + txIdleCount db ? + txChecksum db ? + txMaximum db ? + + rxFlags db ? + rxState db ? + rxCount db ? + rxChecksum db ? + rxMaximum db ? + + txTablePtr dd ? + rxTablePtr dd ? + + intDataPtr dd ? ;pointer to IRQDATA structure + + txBuf COMBUF <> + rxBuf COMBUF <> +PCSPAK ENDS + +HISTORYSIZE equ 256 + +IRQ_EVENT equ 0 +IRQ_EVENT_RX equ 1 +IRQ_EVENT_TX equ 2 +IRQ_EVENT_MSR equ 3 +IRQ_EVENT_LSR equ 4 +IRQ_EVENT_BOGUS equ 5 + +TX_EVENT_RESTART equ 10 +TX_EVENT_ABANDON equ 11 +TX_EVENT_DONE equ 12 +TX_EVENT_ACK equ 13 +TX_EVENT_NAK equ 14 +TX_EVENT_EARLY equ 15 +TX_EVENT_EMPTY equ 16 +TX_EVENT_KICK equ 17 + +RX_EVENT_FULL equ 20 +RX_EVENT_NOT_CMD equ 21 +RX_EVENT_FULLBODY equ 22 +RX_EVENT_NAK equ 23 +RX_EVENT_CKSMERR equ 24 +RX_EVENT_OK equ 25 + +if KEEP_HISTORY + + SAVE_TX MACRO + LOCAL skip + + push ax + push ebx + + mov ebx,historyIndex + cmp ebx,HISTORYSIZE + jge skip + + mov ah,01h + mov history[ebx],ax + add ebx,2 + mov historyIndex,ebx + + inc pcspakCharactersSent ;;keep a running count +skip: + pop ebx + pop ax + ENDM + + SAVE_RX MACRO + LOCAL skip + + push ax + push ebx + + mov ebx,historyIndex + cmp ebx,HISTORYSIZE + jge skip + + mov ah,02h + mov history[ebx],ax + add ebx,2 + mov historyIndex,ebx + +skip: + pop ebx + pop ax + ENDM + + SAVE_EVENT MACRO marker + LOCAL skip + + push ax + push ebx + + mov ebx,historyIndex + cmp ebx,HISTORYSIZE + jge skip + + mov ah,03h + mov al,marker + mov history[ebx],ax + add ebx,2 + mov historyIndex,ebx + +skip: + pop ebx + pop ax + ENDM +else + SAVE_TX MACRO + inc pcspakCharactersSent ;;keep a running count + ENDM + + SAVE_RX MACRO + ENDM + + SAVE_EVENT MACRO marker + ENDM +endif + +;=========================================================================== +; Data segment +;=========================================================================== +BEGIN_DATA + +data_selector dw ? +irq_com1 IRQDATA +irq_com2 IRQDATA +irq_com3 IRQDATA +irq_com4 IRQDATA + + public historyIndex +historyIndex dd 0 + + public history +if KEEP_HISTORY + history dw HISTORYSIZE dup(0) +else + history dw 0 +endif + + public iThinkIRQIsOn +iThinkIRQIsOn dd 0 + + public pcspakCharactersSent +pcspakCharactersSent dd 0 + + public previousIMR,previousISR,previousIRR +previousIMR db 0 +previousISR db 0 +previousIRR db 0 + + public middleIMR,middleISR,middleIRR +middleIMR db 0 +middleISR db 0 +middleIRR db 0 + + public postIMR,postISR,postIRR +postIMR db 0 +postISR db 0 +postIRR db 0 + + public pcspakLSR,pcspakIER,pcspakIIR +pcspakLSR db 0 +pcspakIER db 0 +pcspakIIR db 0 + + + +global_serial_port dw 0 + +END_DATA +;=========================================================================== +; Code segment +;=========================================================================== +BEGIN_CODE + +;------------------------------------------------------------------------- +; PCSPAKInit() +; Constructor for serial packet driver interface +;------------------------------------------------------------------------- +; Enter: +; init_this = pointer to object +; init_port = address of serial port +; init_irq_num = interrupt number +; init_rx_len = pointer to (byte) receive length table +; init_tx_len = pointer to (byte) transmit length table +;------------------------------------------------------------------------- +; Returns: +; 1 if ok, +; -1 if IRQ's all used, +; -2 if DPMI error, +; -3 if really weird bogus error, +; else IIR value +;------------------------------------------------------------------------- +BEGIN_C_PROC PCSPAKInit + + ARG_DPTR init_this + ARG_WORD init_rate + ARG_WORD init_port + ARG_WORD init_irq_num + ARG_DPTR init_rx_len + ARG_WORD init_rx_count + ARG_DPTR init_tx_len + ARG_WORD init_tx_count + + LOCAL_DWORD return_status + + BUILD_STACK_FRAME + + mov return_status,0 ;everything's OK + ;-------------------------------------------------------------- + ; Save off the data selector so we can get it back later. + ;-------------------------------------------------------------- + ; ...In flat mode, CS and DS overlap, but CS is write-protected + ; and DS isn't. Therefore we can write DS to [data_selector] + ; and read it back from CS later. + ;-------------------------------------------------------------- + mov [data_selector],ds + ;-------------------------------------------------------------- + ; Disable interrupts + ;-------------------------------------------------------------- + DPMI_DISABLE_SAVE_INT ;pushes ax! + IRQ_WATCH 0 + ;-------------------------------------------------------------- + ; Point ESI at object data + ;-------------------------------------------------------------- + mov esi,init_this + ;-------------------------------------------------------------- + ; Clear the data buffers + ;-------------------------------------------------------------- + COM_INIT rxBuf ;assumes esi points to object + COM_INIT txBuf ;assumes esi points to object + ;-------------------------------------------------------------- + ; Initialize values + ;-------------------------------------------------------------- + xor eax,eax + mov enabled[esi],al ;clear 'enabled' flag + + mov txHoldOff[esi],al ;flag as not held off + mov txReply[esi],al ;clear 'reply' char + mov rxFlags[esi],al ;clear receive flags (ack/nak) + mov ErrorValue[esi],ax ;clear errors + mov intDataPtr[esi],eax ;(flag as not allocated) + + mov historyIndex,eax + + mov al,TX_IDLE_STATE ;initialize to idle state + mov txState[esi],al + + mov al,RX_IDLE_STATE ;initialize to idle state + mov rxState[esi],al + + mov ax,init_port ;get the port address + mov portBase[esi],ax ;save it + + mov eax,init_tx_len ;set dialect transmit table pointer + mov txTablePtr[esi],eax + + mov ax,init_tx_count ;set maximum dialect transmit index + mov txMaximum[esi],al + + mov eax,init_rx_len ;set dialect receive table pointer + mov rxTablePtr[esi],eax + + mov ax,init_rx_count ;set maximum dialect receive index + mov rxMaximum[esi],al + ;-------------------------------------------------------------- + ; Find unused IRQDATA structure + ;-------------------------------------------------------------- + mov ecx,4 + mov edi,OFFSET irq_com1 +searchLoop: + mov ax,irqPort[edi] ;is irqPort equal to zero? + je short searchDone ;yes, use this structure + add edi,SIZE IRQDATA ;no, move to next one + loop searchLoop + + mov ErrorValue[esi],ERR_INIT ;allocation failed, set errors! + mov return_status,-1 ;return an error code + jmp allocFailed + +searchDone: + mov ax,init_port ;save port address + mov irqPort[edi],ax + mov global_serial_port,ax ;save in case of crash + + mov ax,init_irq_num ;save interrupt number + mov irqNum[edi],al + ;-------------------------------------------------------------- + ; Save init_this in irq structure, irqPtr in "this" structure + ;-------------------------------------------------------------- + mov irqThis[edi],esi + mov intDataPtr[esi],edi + ;-------------------------------------------------------------- + ; Save the old PROTECTED MODE interrupt vector + ;-------------------------------------------------------------- + mov bl,irqNum[edi] ;bl has interrupt number + DPMI_GET_PROT_VECTOR ;returns cx:edx + mov irqOldSelector[edi],cx + mov irqOldOffset[edi],edx + ;-------------------------------------------------------------- + ; Set the new PROTECTED MODE interrupt vector + ;-------------------------------------------------------------- + mov bx,init_irq_num ;bl has interrupt number + mov cx,cs ;cx:edx has selector:offset + mov edx,irqHandler[edi] + DPMI_SET_PROT_VECTOR + jnc short allocOk ;carry clear, allocation succeeded + + mov ErrorValue[esi],ERR_INIT ;allocation failed, set errors! + mov return_status,-2 ;return an error code + jmp allocFailed +allocOk: + ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ; Diagnostics values + ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + PIC_IMR_TO_AL + mov previousIMR,al + PIC_ISR_TO_AL + mov previousISR,al + PIC_IRR_TO_AL + mov previousIRR,al + ;-------------------------------------------------------------- + ; Initialize PIC + ;-------------------------------------------------------------- + ;----------------------------- + ; Get master PIC data: + ; enable bit in bl, + ; interrupt number in bh + ;----------------------------- + mov ax,init_irq_num ;get interrupt number + cmp ax,0000Ch ;COM1? + jnz short mustBeCom2 ;no, must be COM2 + + mov bl,PIC_COM1COM3 ;yes, get COM1, COM3 enable... + mov bh,OCW2_SPEC_EOI+4 ;...and PIC specific EOI + jmp short hasPicBits + +mustBeCom2: + mov bl,PIC_COM2COM4 ;get COM2, COM4 enable... + mov bh,OCW2_SPEC_EOI+3 ;...and PIC specific EOI +hasPicBits: + mov irqPICbit[edi],bl ;save for termination + ;----------------------------- + ; Enable interrupts in PIC + ;----------------------------- + ASSERT_PIC_REG bl + ;----------------------------- + ; Make sure PIC interrupt + ; request is cleared + ;----------------------------- + mov al,bh ;output the specific EOI + out PIC_MASTER_0,al + ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ; Diagnostics values + ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + PIC_IMR_TO_AL + mov middleIMR,al + PIC_ISR_TO_AL + mov middleISR,al + PIC_IRR_TO_AL + mov middleIRR,al + ;-------------------------------------------------------------- + ; Initialize UART + ;-------------------------------------------------------------- + mov dx,init_port ;get port address from stack + ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ; Diagnostics values + ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + add dx,UART_IIR + in al,dx + mov pcspakIIR,al + sub dx,UART_IIR + ;----------------------------- + ; Disable UART interrupts + ;----------------------------- + RETRACT_MCR UART_MCR_IRQ ;This clears irq into PIC + ;----------------------------- + ; Disable all UART interrupt + ; sources. Not mandatory, + ; but a safe practice. + ;----------------------------- + RETRACT_IER UART_IER_ALL + ;----------------------------- + ; Set baud rate + ; Side effect: the divisor + ; latch access bit is cleared + ;----------------------------- + mov cx,init_rate ;set data rate + SETBAUD_CX ;macro from PCSERIAL.INC + ;----------------------------- + ; Set data format: + ; 8 data bits, + ; 1 stop bit, + ; no parity + ; Side effect: the divisor + ; latch access bit is cleared + ;----------------------------- + mov al,UART_LCR_8+UART_LCR_S1+UART_LCR_NP + SETFORMAT_AL + + + ;----------------------------- + ; Enable UART interrupt sources + ;----------------------------- + ASSERT_IER UART_IER_ALL + ;----------------------------- + ; Enable UART interrupts, RTS + ;----------------------------- + ASSERT_MCR UART_MCR_IRQ+UART_MCR_RTS + ;----------------------------- + ; Clear UART interrupt sources + ;----------------------------- + in al,dx ;clear receiver interrupt (read inputs) + in al,dx + +;; mov al,IDLE_CHAR ; clear transmit interrupt +;; out dx,al +;; out dx,al + + add dx,UART_MSR ;read modem status reg to clear IRQ + in al,dx ;discard the result + sub dx,UART_MSR + + add dx,UART_LSR ;read line status reg to clear IRQ + in al,dx ;read value + mov pcspakLSR,al ;(save for diagnostics) + sub dx,UART_LSR + ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ; Diagnostics values + ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + add dx,UART_IER + in al,dx + mov pcspakIER,al + sub dx,UART_IER + + PIC_IMR_TO_AL + mov postIMR,al + PIC_ISR_TO_AL + mov postISR,al + PIC_IRR_TO_AL + mov postIRR,al + ;-------------------------------------------------------------- + ; Mark as 'enabled' + ;-------------------------------------------------------------- + mov enabled[esi],1 + +allocFailed: + ;-------------------------------------------------------------- + ; Reenable the old interrupt state and return + ;-------------------------------------------------------------- + DPMI_RESTORE_PREV_INT ;pops ax! + IRQ_WATCH 1 + + mov eax,return_status + +END_C_PROC + +;------------------------------------------------------------------------- +; PCSPAKTerm() +; Destructor for serial packet interface +;------------------------------------------------------------------------- +; Enter: +; (this) = pointer to object +;------------------------------------------------------------------------- +; Returns: +; (nothing) +;------------------------------------------------------------------------- +BEGIN_C_PROC PCSPAKTerm + + ARG_DPTR term_this + BUILD_STACK_FRAME + + ;-------------------------------------------------------------- + ; Disable interrupts + ;-------------------------------------------------------------- + DPMI_DISABLE_SAVE_INT ;pushes ax! + IRQ_WATCH 0 + ;-------------------------------------------------------------- + ; Get "this" pointer + ;-------------------------------------------------------------- + mov esi,term_this + mov eax,esi ;is it NULL? + or eax,eax + jz short skipRestore ;OHMIGOSH!! EXIT!!! + ;-------------------------------------------------------------- + ; Turn off RTS and interrupts + ;-------------------------------------------------------------- + mov dx,portBase[esi] + RETRACT_MCR UART_MCR_IRQ+UART_MCR_RTS + + ; NOTE: from this point on, interrupts CANNOT occur from the UART. + + ;-------------------------------------------------------------- + ; If improperly allocated, skip 'release' + ;-------------------------------------------------------------- + mov eax,intDataPtr[esi] ;get pointer to IRQ data + or eax,eax + jz short skipRestore ;null pointer, skip release + + mov edi,eax ;place pointer in edi + ;-------------------------------------------------------------- + ; Mark IRQDATA record as unused + ;-------------------------------------------------------------- + mov irqPort[edi],0 + ;-------------------------------------------------------------- + ; Restore the old PROTECTED MODE interrupt vector + ;-------------------------------------------------------------- + mov bl,irqNum[edi] ;bl has interrupt number + mov cx,irqOldSelector[edi] ;cx:edx has selector:offset + mov edx,irqOldOffset[edi] + DPMI_SET_PROT_VECTOR + ;-------------------------------------------------------------- + ; Disable PIC channel + ;-------------------------------------------------------------- + mov bl,irqPICbit[edi] ;get our PIC bit + RETRACT_PIC bl ;no, turn it off +skipRestore: + ;-------------------------------------------------------------- + ; Reenable the old interrupt state and return + ;-------------------------------------------------------------- + DPMI_RESTORE_PREV_INT ;pops ax! + IRQ_WATCH 1 + +END_C_PROC + +;------------------------------------------------------------------------- +; PCSPAKReceive() +; Returns packet if available +;------------------------------------------------------------------------- +; Enter: +; rp_this = pointer to object +; Byte *destPtr = pointer to 128-byte destination buffer +;------------------------------------------------------------------------- +; Returns: +; int packetSize (or zero if no packet available) +;------------------------------------------------------------------------- +BEGIN_C_PROC PCSPAKReceive + + ARG_DPTR rp_this + ARG_DPTR rp_dest + BUILD_STACK_FRAME + + ;-------------------------------------------------------------- + ; Get "this" pointer + ;-------------------------------------------------------------- + mov esi,rp_this + mov eax,esi ;is it NULL? + or eax,eax + jz spr_done ;OHMIGOSH!! EXIT!!! + ;-------------------------------------------------------------- + ; Skip if disabled + ;-------------------------------------------------------------- + mov al,enabled[esi] ;if disabled, don't even try + or al,al + jnz short recvOK + + xor eax,eax + jmp spr_done +recvOK: + ;-------------------------------------------------------------- + ; Check character count: non-zero indicates entire packet + ;-------------------------------------------------------------- + xor eax,eax ;clear top of eax + mov ax,rxBuf.count[esi] ;get # of characters in ax + or ax,ax ;empty? + jz spr_done ;yes, return zero +;;; ;-------------------------------------------------------------- +;;; ; Disable interrupts +;;; ;-------------------------------------------------------------- +;;; DPMI_DISABLE_INT +;;; IRQ_WATCH 0 + ;-------------------------------------------------------------- + ; Get buffer length + ;-------------------------------------------------------------- + mov edi,rp_dest ;get pointer to destination + cld ;make sure direction is ok + + xor eax,eax ;clear top of ax + COM_GET_AL rxBuf ;get character into al + ;-------------------------------------------------------------- + ; Verify first char is a valid command character + ;-------------------------------------------------------------- + test al,080h ;1st character = command (high bit set)? + jnz short sprOk + + DISABLE_AND_DIE 9 + xor eax,eax + jmp short spr_done +sprOk: + stosb ;save it + and al,07Fh ;remove MSB + mov ebx,rxTablePtr[esi] ;point bx at length table + xlatb ;translate into length + xor ecx,ecx ;set ecx from al + mov cl,al + mov edx,ecx ;save in edx + inc edx ;return at least one character + ;-------------------------------------------------------------- + ; Transfer data from buffer + ;-------------------------------------------------------------- + or cx,cx ;if no additional characters, skip + jz short spr_skip +spr_loop: + COM_GET_AL rxBuf ;get character into al + stosb ;save in buffer + loop spr_loop +spr_skip: + COM_ACCEPT_OUT rxBuf ;accept all 'taken' characters +;;; ;-------------------------------------------------------------- +;;; ; Reenable the old interrupt state +;;; ;-------------------------------------------------------------- +;;; DPMI_RESTORE_PREV_INT ;pops ax! +;;; IRQ_WATCH 1 + + mov eax,edx ;place count in eax + ;-------------------------------------------------------------- + ; Return count in eax + ;-------------------------------------------------------------- +spr_done: +END_C_PROC + +;------------------------------------------------------------------------- +; PCSPAKSend() +; Transmits packet +;------------------------------------------------------------------------- +; Enter: +; sp_this = pointer to object +; Byte *sp_src = pointer to (up to) 128-byte source buffer +;------------------------------------------------------------------------- +; Returns: +; void +;------------------------------------------------------------------------- +BEGIN_C_PROC PCSPAKSend + + ARG_DPTR sp_this + ARG_DPTR sp_src + + BUILD_STACK_FRAME + ;-------------------------------------------------------------- + ; Get "this" pointer + ;-------------------------------------------------------------- + mov esi,sp_this + mov eax,esi ;is it NULL? + or eax,eax + jz sendSkip ;OHMIGOSH!! EXIT!!! + ;-------------------------------------------------------------- + ; Wait for sufficient room + ;-------------------------------------------------------------- + mov al,enabled[esi] ;if disabled, don't even try + or al,al + jz sendSkip + +;;; SET_LPT 5 + + mov edi,sp_src ;get pointer to source + mov al,[edi] ;get the command byte + and al,07Fh ;remove MSB + mov ebx,txTablePtr[esi] ;set ebx to point to length table + xlatb ;get the length in al + xor ecx,ecx ;move al to ecx + mov cl,al + inc cx ;add one for command byte +spt_wait: + COM_SPACE_IN txBuf,ax ;get buffer 'in' space + cmp ax,cx ;enough room? + jae spt_space ;yes, continue + + DISABLE_AND_DIE 0 + jmp short spt_wait + +spt_space: + ;-------------------------------------------------------------- + ; Disable interrupts + ;-------------------------------------------------------------- + DPMI_DISABLE_SAVE_INT ;pushes ax! + IRQ_WATCH 0 + ;-------------------------------------------------------------- + ; Copy data into tx buffer + ;-------------------------------------------------------------- +spt_loop: + mov al,[edi] ;get the byte + inc edi ;increment the source pointer + COM_PUT_AL txBuf ;place it in the buffer + loop spt_loop + + COM_ACCEPT_IN txBuf ;accept all 'placed' characters + mov dx,portBase[esi] ;set dx to port base address + call StartSending ;attempt to start tx interrupt + ;-------------------------------------------------------------- + ; Reenable the old interrupt state + ;-------------------------------------------------------------- + DPMI_RESTORE_PREV_INT ;pops ax! + IRQ_WATCH 1 + +;;; CLEAR_LPT 5 + +sendSkip: +END_C_PROC + +;------------------------------------------------------------------------- +; PCSPAKActive() +; Returns transmitter 'active' state (=0 when all transmission is done). +;------------------------------------------------------------------------- +; Enter: +; pa_this = pointer to object +;------------------------------------------------------------------------- +; Returns: +; int errors +;------------------------------------------------------------------------- +BEGIN_C_PROC PCSPAKActive + + ARG_DPTR pa_this + BUILD_STACK_FRAME + ;-------------------------------------------------------------- + ; Get "this" pointer + ;-------------------------------------------------------------- + mov esi,pa_this + mov eax,esi ;is it NULL? + or eax,eax + jz short actNULL ;OHMIGOSH!! EXIT!!! + ;-------------------------------------------------------------- + ; Get 'active' status + ; + ; The LSR register has two bits reflecting the + ; transmitter state: + ; THR = transmit holding register (1=empty) + ; TSR = transmit serial register (1=empty) + ; + ; The transmission is completely finished when both of these + ; bits are high. + ;-------------------------------------------------------------- + xor eax,eax ;clear top of eax + + mov dx,portBase[esi] ;get the port base + add dx,UART_LSR ;get LSR + in al,dx + ;;sub dx,UART_LSR ;we usually subtract, no need here + + and al,UART_LSR_THR+UART_LSR_TSR ; remove all but THR,TSR + xor al,UART_LSR_THR+UART_LSR_TSR ; invert the bits +actNULL: +END_C_PROC + +;------------------------------------------------------------------------- +; PCSPAKErrors() +; Returns error bits: zero indicates no errors. +; The error code is cleared by this call as well. +;------------------------------------------------------------------------- +; Enter: +; pe_this = pointer to object +;------------------------------------------------------------------------- +; Returns: +; int errors +;------------------------------------------------------------------------- +BEGIN_C_PROC PCSPAKErrors + + ARG_DPTR pe_this + BUILD_STACK_FRAME + ;-------------------------------------------------------------- + ; Get "this" pointer + ;-------------------------------------------------------------- + mov esi,pe_this + mov eax,esi ;is it NULL? + or eax,eax + jz short errNULL ;OHMIGOSH!! EXIT!!! + ;-------------------------------------------------------------- + ; Get, clear error word + ;-------------------------------------------------------------- + mov ax,ErrorValue[esi] ;init error? + and ax,ERR_INIT + jnz short haveInitError ;yes, don't clear it + + xor ax,ax ;no, go ahead and clear it + xchg ax,ErrorValue[esi] +haveInitError: + and eax,0FFFFh ;make sure top of eax is clear +errNULL: +END_C_PROC + +;------------------------------------------------------------------------- +; PCSPAKIRQState() +; Returns IRQ state +;------------------------------------------------------------------------- +; Enter: +; (void) +;------------------------------------------------------------------------- +; Returns: +; int state +;------------------------------------------------------------------------- +BEGIN_C_PROC PCSPAKIRQState + + BUILD_STACK_FRAME + + DPMI_INT_STATE + and eax,0FFh ;make sure top of eax is clear +END_C_PROC + +;------------------------------------------------------------------------- +; PCSPAKTestInstance() +;------------------------------------------------------------------------- +; Enter: +; (this) = pointer to object +;------------------------------------------------------------------------- +; Returns: +; int True +;------------------------------------------------------------------------- +BEGIN_C_PROC PCSPAKTestInstance + mov eax,1 + ret +END_C_PROC + +;------------------------------------------------------------------------- +; PCSPAKIsSignatureBad() +;------------------------------------------------------------------------- +; Enter: +; (this) = pointer to object +;------------------------------------------------------------------------- +; Returns: +; int False +;------------------------------------------------------------------------- +BEGIN_C_PROC PCSPAKIsSignatureBad + mov eax,0 + ret +END_C_PROC + +;------------------------------------------------------------------------- +; PCSPAKReceiveCount() +;------------------------------------------------------------------------- +; Enter: +; (this) = pointer to object +;------------------------------------------------------------------------- +; Returns: +; int number of items in receive queue +;------------------------------------------------------------------------- +BEGIN_C_PROC PCSPAKReceiveCount + + ARG_DPTR prc_this + BUILD_STACK_FRAME + + mov esi,prc_this + xor eax,eax + mov ax,rxBuf.count[esi] +END_C_PROC + +;------------------------------------------------------------------------- +; PCSPAKTransmitCount() +;------------------------------------------------------------------------- +; Enter: +; (this) = pointer to object +;------------------------------------------------------------------------- +; Returns: +; int number of items in transmit queue +;------------------------------------------------------------------------- +BEGIN_C_PROC PCSPAKTransmitCount + + ARG_DPTR ptc_this + BUILD_STACK_FRAME + + mov esi,ptc_this + xor eax,eax + mov ax,txBuf.count[esi] +END_C_PROC + + +;------------------------------------------------------------------------- +; PCSPAKSetDTR() +;------------------------------------------------------------------------- +; Enter: +; (this) = pointer to object +; on = zero to retract DTR, non-zero to assert DTR +;------------------------------------------------------------------------- +; Returns: +; int number of items in transmit queue +;------------------------------------------------------------------------- +BEGIN_C_PROC PCSPAKSetDTR + + ARG_DPTR sdtr_this + ARG_DWORD sdtr_on + BUILD_STACK_FRAME + ;-------------------------------------------------------------- + ; Get "this" pointer + ;-------------------------------------------------------------- + mov esi,sdtr_this + mov eax,esi ;is it NULL? + or eax,eax + jz short sdtrExit ;OHMIGOSH!! EXIT!!! + + mov dx,portBase[esi] ;get the port base + ;-------------------------------------------------------------- + ; Get "on" + ;-------------------------------------------------------------- + cmp sdtr_on,0 + je sdtrOff + ;-------------------------------------------------------------- + ; Assert DTR + ;-------------------------------------------------------------- + ASSERT_MCR UART_MCR_DTR + jmp short sdtrExit + ;-------------------------------------------------------------- + ; Retract DTR + ;-------------------------------------------------------------- +sdtrOff: + RETRACT_MCR UART_MCR_DTR +sdtrExit: + +END_C_PROC + +;------------------------------------------------------------------------- +; StartSending - attempt to start transmitter (if allowed) +; ...called from the receive interrupt routine and PCSPAK::sendPacket. +;------------------------------------------------------------------------- +; Enter: +; ESI = pointer to PCSPAK structure +; DX = UART base address +;------------------------------------------------------------------------- +; Returns: +; (void) +;------------------------------------------------------------------------- +; Side effects: +; Modifies register AL +;------------------------------------------------------------------------- +StartSending PROC NOLANGUAGE NEAR + + add dx,UART_LSR ;get THR bit from LSR + in al,dx + sub dx,UART_LSR + + test al,UART_LSR_THR ;is there anything in the holding reg? + jz sptNoKick ;yes, interrupt will occur later + + SAVE_EVENT TX_EVENT_KICK + call SendChar ;restart transmitter +sptNoKick: + ret +StartSending ENDP + +;------------------------------------------------------------------------- +; SendChar - send character through UART +; ...called from the interrupt routine and PCSPAK::sendCommand. +;------------------------------------------------------------------------- +; Enter: +; ESI = pointer to PCSPAK structure +; DX = UART base address +;------------------------------------------------------------------------- +; Returns: +; (void) +;------------------------------------------------------------------------- +; Side effects: +; registers EAX, EBX, ECX modified +;------------------------------------------------------------------------- +SendChar PROC NOLANGUAGE NEAR +;;; SET_LPT 6 + + ;-------------------------------------------------------------- + ; Send reply character if one is waiting + ;-------------------------------------------------------------- + cmp txReply[esi],0 ;"reply" character waiting? + je noReply ;no, continue + + xor al,al ;prepare for exchange + xchg al,txReply[esi] ;get and clear the "reply" character + out dx,al ;yes, send the reply character + SAVE_TX + jmp sendDone ;done for now. +noReply: + ;-------------------------------------------------------------- + ; Enter the appropriate state handler + ;-------------------------------------------------------------- + mov al,txState[esi] ;get the transmit state + + cmp al,TX_IDLE_STATE ;idle state? + je short txIdleState ;yes, go to it + + cmp al,TX_BODY_STATE ;"body" state? + je txBodyState ;yes, go to it + + cmp al,TX_WAIT_STATE ;"wait" state? + je txWaitState ;yes, go to it + + cmp al,TX_RESTART_STATE ;restart state? + je short txRestartState ;yes, go to it + + DISABLE_AND_DIE 1 + jmp txWaitState ;must be "wait" state + ;-------------------------------------------------------------- + ; Transmitter idle state + ;-------------------------------------------------------------- +txIdleState: + cmp txHoldOff[esi],0 ;If transmitter 'held off', do nothing + jne short txIsIdle + + cmp txBuf.count[esi],0 ;input buffer available? + jne short txIdleAvail ;yes, send something +txIsIdle: + SAVE_EVENT TX_EVENT_EMPTY ;nothing to send, just return + jmp sendDone + +txIdleAvail: + ;--------------------------- + ; Buffer ready, start + ;--------------------------- + mov txResetCount[esi],TXMAXRESET ;set the 'reset' counter + mov txErrorCount[esi],TXMAXERROR ;set the 'error' counter + + ;...deliberately fall through into 'txRestartState' + + ;-------------------------------------------------------------- + ; Transmitter restart state + ;-------------------------------------------------------------- +txRestartState: + COM_GET_AL txBuf ;assumes esi points to object + + cmp al,07Fh ;is it a command? + jbe short txRestartBad ;no, discard it + + mov ah,al ;transfer to ah + and ah,07Fh ;remove MSB + cmp ah,txMaximum[esi] ;legitimate command? + jb short txRestartOk ;yes + +txRestartBad: + DISABLE_AND_DIE 2 + COM_ACCEPT_OUT txBuf ;eat the character + mov txState[esi],TX_IDLE_STATE ;move to the "idle" state + jmp sendDone + +txRestartOk: + out dx,al ;transmit the command character + mov txChecksum[esi],al ;begin a new checksum count + SAVE_TX + + mov al,ah ;move AND'ed value back to al + mov ebx,txTablePtr[esi] ;get length table pointer into ebx + xlatb ;look up length + inc al ;include the command byte + mov txCount[esi],al ;save the length + + mov txState[esi],TX_BODY_STATE ;move to the "body" state + jmp sendDone + + ;-------------------------------------------------------------- + ; Transmitter "body" state + ; Send message body, then checksum (unless interrupted by ACK/NAK) + ;-------------------------------------------------------------- +txBodyState: + ;--------------------------- + ; Interrupted by ACK/NAK? + ;--------------------------- + cmp rxFlags[esi],0 ;flag set? + je txBodySend ;no, send normal body + + COM_RESTORE_OUT txBuf ;interrupted, reset 'out' pointer + + mov al,rxFlags[esi] ;get flags + mov rxFlags[esi],0 ;clear them + + test al,RX_ACK_BIT ;was it an ACK? + jne short txBodyNak ;no + or ErrorValue[esi],TX_EARLY_ERR ;yes, set error flag +txBodyNak: + SAVE_EVENT TX_EVENT_EARLY + ;--------------------------- + ; Restart or die + ;--------------------------- + dec txResetCount[esi] ;check the restart count + jl short txBodyGiveUp ;if too many errors, give up + ;--------------------------- + ; Attempt restart + ;--------------------------- + mov al,RESTART_CHAR ;no, send restart character + out dx,al + SAVE_TX + + mov txState[esi],TX_RESTART_STATE ;move to the "restart" state + jmp sendDone + ;--------------------------- + ; Too many errors, die! + ;--------------------------- +txBodyGiveUp: + SAVE_EVENT TX_EVENT_ABANDON + or ErrorValue[esi],TX_ABANDON ;set error flag + mov ebx,txTablePtr[esi] ;get pointer to length table + COM_EAT_PACKET txBuf ;discard current packet + jmp txIdleState ;start another packet + ;--------------------------- + ; Send body or checksum + ;--------------------------- +txBodySend: + dec txCount[esi] ;is buffer done? + jle txBodyCheck ;yes, send checksum + ;--------------------------- + ; Send a body character + ;--------------------------- + COM_GET_AL txBuf ;get a character from the buffer + + cmp al,07Fh ;legitimate body char? + jbe txBodyOk ;yes, continue + DISABLE_AND_DIE 3 + and al,07Fh ;prevent bad data from becoming command +txBodyOk: + out dx,al ;send it + add txChecksum[esi],al ;add to the checksum + SAVE_TX + jmp sendDone + ;--------------------------- + ; End of body, send checksum + ;--------------------------- +txBodyCheck: + mov al,txChecksum[esi] ;get the checksum + and al,07Fh ;limit it + out dx,al ;send it + SAVE_TX + SAVE_EVENT TX_EVENT_DONE + ;--------------------------- + ; prepare for "wait" state + ;--------------------------- + mov txIdleCount[esi],TXMAXIDLE ;set the idle counter + mov txState[esi],TX_WAIT_STATE ;move to the "wait" state + jmp sendDone + + ;-------------------------------------------------------------- + ; Transmitter "wait" state + ; Waits for reply from other end + ;-------------------------------------------------------------- +txWaitState: + xor al,al ;prepare to exchange flags + xchg al,rxFlags[esi] ;get flags, also clear them + or al,al ;flags clear? + jz txWaitMore ;yes, keep waiting + + test al,RX_ACK_BIT ;ACK? + jz short txWaitNak ;no, process NAK + ;--------------------------- + ; ACK, buffer received OK + ;--------------------------- + SAVE_EVENT TX_EVENT_ACK + COM_ACCEPT_OUT txBuf ;yes, good transmission. Discard packet. + mov txState[esi],TX_IDLE_STATE ;move to the "idle" state + jmp txIdleState ;start another buffer + ;--------------------------- + ; NAK! + ;--------------------------- +txWaitNak: + SAVE_EVENT TX_EVENT_ACK + or ErrorValue[esi],TX_NAK ;set error flag + COM_RESTORE_OUT txBuf ;restore output pointers + + dec txErrorCount[esi] ;check the error count + jl txWaitGiveUp ;if too many errors, give up + jmp txRestartState ;no, resend it + ;--------------------------- + ; Keep waiting + ;--------------------------- +txWaitMore: + dec txIdleCount[esi] ;have we waited too long? + jl short txWaitDone ;yes, attempt to restart + + mov al,IDLE_CHAR ;no, send idle character + out dx,al + SAVE_TX + jmp sendDone + ;--------------------------- + ; Attempt restart + ;--------------------------- +txWaitDone: + SAVE_EVENT TX_EVENT_RESTART + or ErrorValue[esi],TX_RESTART ;set error flag + COM_RESTORE_OUT txBuf ;restore output pointers + + dec txResetCount[esi] ;too many restarts? + jl short txWaitGiveUp ;yes, abandon buffer + + mov al,RESTART_CHAR ;no, send restart character + out dx,al + SAVE_TX + + mov txIdleCount[esi],TXMAXIDLE ;reset the idle counter + mov txState[esi],TX_RESTART_STATE ;move to the "idle" state + jmp short sendDone + ;--------------------------- + ; Give up + ;--------------------------- +txWaitGiveUp: + SAVE_EVENT TX_EVENT_ABANDON + or ErrorValue[esi],TX_ABANDON ;set error flag + mov ebx,txTablePtr[esi] ;get pointer to length table + COM_EAT_PACKET txBuf ;discard the packet + mov txState[esi],TX_IDLE_STATE ;move to the "idle" state + jmp txIdleState ;start another packet + +sendDone: +;;; CLEAR_LPT 6 + + ret + +SendChar ENDP + +;------------------------------------------------------------------------- +; RecvChar - receive character from UART +;------------------------------------------------------------------------- +; Enter: +; ESI = pointer to PCSPAK structure +; DX = UART base address +; AL = character +;------------------------------------------------------------------------- +; Returns: +; (void) +;------------------------------------------------------------------------- +; Side effects: +; registers EAX, EBX, ECX modified +;------------------------------------------------------------------------- +RecvChar PROC NOLANGUAGE NEAR + SAVE_RX + ;-------------------------------------------------------------- + ; Process universal special characters: ACK, NAK, IDLE + ;-------------------------------------------------------------- + test al,080h ;MSB set? + jz short rcNotSpecial ;no, can't be special character + ;------------------------------ + ; IDLE + ;------------------------------ + cmp al,IDLE_CHAR ;IDLE character? + jne short rcNotIdle ;no + jmp recvDone ;yes, ignore it +rcNotIdle: + ;------------------------------ + ; ACK + ;------------------------------ + cmp al,ACK_CHAR ;ACK character? + jne short rcNotAck ;no + or rxFlags[esi],RX_ACK_BIT ;yes, flag for transmitter + jmp recvDone +rcNotAck: + ;------------------------------ + ; NAK + ;------------------------------ + cmp al,NAK_CHAR ;NAK character? + jne short rcNotNak ;no + or rxFlags[esi],RX_NAK_BIT ;yes, flag for transmitter + jmp recvDone +rcNotNak: +rcNotSpecial: + ;-------------------------------------------------------------- + ; Process state-dependent characters + ;-------------------------------------------------------------- + cmp rxState[esi],0 ;test the state + jne rxActive ;non-zero, so active + ;-------------------------------------------------------------- + ; Receiver "idle" state + ; Wait for command character + ;-------------------------------------------------------------- + test al,080h ;is it a control character? + jnz short rxIdleSpecial ;yes, process it + + or ErrorValue[esi],RX_SEQ_ERR ;Not expecting data, so error. + jmp recvDone + +rxIdleSpecial: + cmp al,RESTART_CHAR ;restart? + je recvDone ;yes, discard it + + COM_SPACE_IN rxBuf,bx ;get remaining space + or bx,bx ;zero? + jnz short rxIdleSpace ;no, continue + + SAVE_EVENT RX_EVENT_FULL + DISABLE_AND_DIE 4 + or ErrorValue[esi],RX_COM_ERR ;error. Set flag. + jmp recvDone + +rxIdleSpace: + mov ah,al ;move to ah for testing + and ah,07Fh ;remove MSB + cmp ah,rxMaximum[esi] ;legitimate command? + jb short rxIdleOk ;yes, continue + + SAVE_EVENT RX_EVENT_NOT_CMD + DISABLE_AND_DIE 5 + or ErrorValue[esi],RX_COM_ERR ;no. + jmp recvDone +rxIdleOk: + COM_PUT_AL rxBuf ;save command character in buffer + mov rxChecksum[esi],al ;start a new receive checksum + + mov al,ah ;put ah back into al + mov ebx,rxTablePtr[esi] ;get length table pointer into ebx + xlatb ;look up length + inc al ;include the command byte + mov rxCount[esi],al ;save the length + + mov rxState[esi],RX_ACTIVE_STATE ;change to "active" state + jmp recvDone + + ;-------------------------------------------------------------- + ; Receiver "active" state + ; Place N characters into buffer, test checksum, and reply + ;-------------------------------------------------------------- +rxActive: + test al,080h ;control character? + jz short rxActiveData ;no, therefore data + + or ErrorValue[esi],RX_SEQ_ERR ;yes, error. Set error flag + COM_RESTORE_IN rxBuf ;Discard received data + ;------------------------------ + ; Process control char + ;------------------------------ + cmp al,RESTART_CHAR ;restart character? + je rxActiveAbandon ;yes, abandon received data + + SAVE_EVENT RX_EVENT_NAK + mov al,NAK_CHAR ;error, tell transmitter to send NAK + jmp rxActiveReply + ;------------------------------ + ; Process data + ;------------------------------ +rxActiveData: + dec rxCount[esi] ;check the receive count + jle rxActiveCheck ;if end of message, process checksum + ;------------------------------ + ; Enough space in buffer? + ;------------------------------ + COM_SPACE_IN rxBuf,bx ;get remaining space + + or bx,bx ;zero? + jnz short rxActiveSpace ;no, continue + + SAVE_EVENT RX_EVENT_FULLBODY + DISABLE_AND_DIE 6 ;crash hard (if enabled) + or ErrorValue[esi],RX_COM_ERR ;error. Set flag. + COM_RESTORE_IN rxBuf ;Discard received data + jmp rxActiveAbandon ;give up on packet + +rxActiveSpace: + ;------------------------------ + ; Save data in buffer + ;------------------------------ + add rxChecksum[esi],al ;update the checksum + COM_PUT_AL rxBuf ;save the character + jmp recvDone + ;------------------------------ + ; Test checksum + ;------------------------------ +rxActiveCheck: + mov bl,rxChecksum[esi] ;get the checksum + and bl,07Fh ;remove MSB + cmp al,bl ;checksum OK? + je short rxActiveOk ;yes! + ;------------------------------ + ; Buffer error + ;------------------------------ + SAVE_EVENT RX_EVENT_CKSMERR + or ErrorValue[esi],RX_BAD_CHECKSUM ;error. Set flag. + COM_RESTORE_IN rxBuf ;Discard received data + mov al,NAK_CHAR ;tell transmitter to send NAK + jmp short rxActiveReply + ;------------------------------ + ; Buffer OK + ;------------------------------ +rxActiveOk: + SAVE_EVENT RX_EVENT_OK + COM_ACCEPT_IN rxBuf ;accept the received data + mov al,ACK_CHAR ;tell transmitter to send ACK + +rxActiveReply: + mov txReply[esi],al + call StartSending ;restart transmitter if needed + ;------------------------------ + ; Return to inactive state + ;------------------------------ +rxActiveAbandon: + mov rxState[esi],RX_IDLE_STATE +recvDone: + ret +RecvChar ENDP + +;------------------------------------------------------------------------- +; Interrupt handlers +;------------------------------------------------------------------------- +IntHandler PROC NOLANGUAGE NEAR + ASSUME cs:_TEXT + +IntCom1: + pushad + mov edi,OFFSET irq_com1 ;point EDI at IRQDATA structure + call IntMain + popad + iret + ;jmp cs:fword ptr [irq_com1.irqOldOffset] +IntCom2: + pushad + mov edi,OFFSET irq_com2 ;point EDI at IRQDATA structure + call IntMain + popad + iret + ;jmp cs:fword ptr [irq_com2.irqOldOffset] +IntCom3: + pushad + mov edi,OFFSET irq_com3 ;point EDI at IRQDATA structure + call IntMain + popad + iret + ;jmp cs:fword ptr [irq_com3.irqOldOffset] +IntCom4: + pushad + mov edi,OFFSET irq_com4 ;point EDI at IRQDATA structure + call IntMain + popad + iret + ;jmp cs:fword ptr [irq_com4.irqOldOffset] + + ;-------------------------------------------------------------- + ; Serial interrupt handler main body + ;-------------------------------------------------------------- +IntMain: + push ds ;save registers + push es + mov ds,cs:[data_selector] ;get our DS + ASSUME ds:_DATA + + IRQ_WATCH_ENTRY +;;; SPKR_SET ;********************************************* + + SAVE_EVENT IRQ_EVENT + ;-------------------------------------------------------------- + ; Get pointer to PCSPAK structure, UART base address + ;-------------------------------------------------------------- + mov esi,irqThis[edi] + mov dx,irqPort[edi] + ;-------------------------------------------------------------- + ; Get status in al + ;-------------------------------------------------------------- +procLoop: + add dx,UART_IIR ;point to interrupt ident reg + in al,dx ;get interrupt source ID + sub dx,UART_IIR ;restore dx + ;-------------------------------------------------------------- + ; Receive character + ;-------------------------------------------------------------- + cmp al,UART_IIR_RDR ;receiver ready? + jne short procNoRx ;no, skip it + + in al,dx ;get character + call RecvChar ;process it + jmp short procLoop +procNoRx: + ;-------------------------------------------------------------- + ; Send character + ;-------------------------------------------------------------- + cmp al,UART_IIR_THR ;transmitter ready? + jne short procNoTx ;no, skip it + + call SendChar ;send a character if available + jmp short procLoop +procNoTx: + ;-------------------------------------------------------------- + ; Process modem status register change + ; + ; We currently ignore it. We could someday implement + ; DTR/CTS/... flow control here if we desire. + ;-------------------------------------------------------------- + cmp al,UART_IIR_MSR ;MSR change? + jne short procNoMSR ;no, skip it + + SAVE_EVENT IRQ_EVENT_MSR + add dx,UART_MSR ;read modem status reg to clear IRQ + in al,dx ;discard the result + sub dx,UART_MSR + jmp procLoop +procNoMSR: + ;-------------------------------------------------------------- + ; Process line status register change (error or break) + ;-------------------------------------------------------------- + cmp al,UART_IIR_LSR ;LSR change? + jne short procNoLSR ;no, skip it + + SAVE_EVENT IRQ_EVENT_LSR + add dx,UART_LSR ;read line status reg to clear IRQ + in al,dx ;read value + sub dx,UART_LSR + + and ax,UART_LSR_ERRS ;remove non-error bits + or ErrorValue[esi],ax ;OR with current error state + jmp procLoop +procNoLSR: + ;-------------------------------------------------------------- + ; Check for UART done + ;-------------------------------------------------------------- + cmp al,001h ;if LSB is set, no interrupt + je short procDone + SAVE_EVENT IRQ_EVENT_BOGUS + DISABLE_AND_DIE 7 ;weird state, flag error +procDone: + ;-------------------------------------------------------------- + ; PIC port write + ; (allows future interrupts to occur) + ;-------------------------------------------------------------- + PIC_RESET_MASTER + ;-------------------------------------------------------------- + ; Restore registers, return from SUBROUTINE (not interrupt!) + ;-------------------------------------------------------------- + IRQ_WATCH_EXIT +;;; SPKR_RESET ;********************************************* + + pop es + pop ds + ret + +IntHandler ENDP + +END_CODE + + END diff --git a/CODE/RP/MUNGA_L4/SOSMAWE.C b/CODE/RP/MUNGA_L4/SOSMAWE.C new file mode 100644 index 0000000..89d73ab --- /dev/null +++ b/CODE/RP/MUNGA_L4/SOSMAWE.C @@ -0,0 +1,458 @@ +/**************************************************************************** + + File : sosmawe.c + + Purpose : Module to handle AWE32 .SBK file uploads + + Date : 1-20-95 + + Programmer(s) : Don Fowler + + Last Updated : 1-29-95 + +**************************************************************************** + Copyright(c) 1992,1995 Human Machine Interfaces + All Rights Reserved +****************************************************************************/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "sosm.h" +#include "sosmawe.h" + +// maximum number of .SBK files that can be set on the chip +#define _MAX_SBKS 0x10 + +// offset into slot list for .SBK files to start +#define _SBK_SLOT_OFFSET 0x01 + +// size of buffer needed to read in a chunk of .SBK file +#define _READ_BUFFER_SIZE 0x2000 + +// pointer to preset data for awe32 +#ifdef __BORLANDC__ +PSTR _lpSOSMIDIAwe32PresetBuffer[ _SOS_MIDI_MAX_DRIVERS ][ _MAX_SBKS ] = { +#else +LPSTR _lpSOSMIDIAwe32PresetBuffer[ _SOS_MIDI_MAX_DRIVERS ][ _MAX_SBKS ] = { +#endif + + { _NULL, _NULL, _NULL, _NULL, _NULL, _NULL, _NULL, _NULL, + _NULL, _NULL, _NULL, _NULL, _NULL, _NULL, _NULL, _NULL }, + { _NULL, _NULL, _NULL, _NULL, _NULL, _NULL, _NULL, _NULL, + _NULL, _NULL, _NULL, _NULL, _NULL, _NULL, _NULL, _NULL }, + { _NULL, _NULL, _NULL, _NULL, _NULL, _NULL, _NULL, _NULL, + _NULL, _NULL, _NULL, _NULL, _NULL, _NULL, _NULL, _NULL }, + { _NULL, _NULL, _NULL, _NULL, _NULL, _NULL, _NULL, _NULL, + _NULL, _NULL, _NULL, _NULL, _NULL, _NULL, _NULL, _NULL }, + { _NULL, _NULL, _NULL, _NULL, _NULL, _NULL, _NULL, _NULL, + _NULL, _NULL, _NULL, _NULL, _NULL, _NULL, _NULL, _NULL } + + }; + +// index into list of presets to the currently available slot, +// start the index at 0 to leave slot 0 open for general midi +// rom on the AWE32 +WORD _wSOSMIDIAwe32PresetIndex[ _SOS_MIDI_MAX_DRIVERS ] = { + + _SBK_SLOT_OFFSET, _SBK_SLOT_OFFSET, _SBK_SLOT_OFFSET, + _SBK_SLOT_OFFSET, _SBK_SLOT_OFFSET + }; + +/*************************************************************************** + +Function : WORD sosMIDIAWE32SetSBKFile + +Parameters : WORD hDriver + Handle of SOS driver to set SBK file on. + PSTR szFileName + Name of .SBK file to set. + +Returns : -1 if error; otherwise, slot that the .SBK file was + assigned to on the AWE32. + +Description : Stream a .SBK file onto the awe32 and return the slot + streamed to. + +****************************************************************************/ + +#pragma warn -def +#pragma warn -sus +#pragma warn -pia + +WORD sosMIDIAWE32SetSBKFile( WORD hDriver, const char *szFileName ) +{ + WORD wIndex; + WORD hFile; + WORD wReadSize; + PSTR pDataPtr; +#ifdef __BORLANDC__ + SFAR lpTemp; +#endif + + // attempt to find a slot to use for the .SBK file + if( _wSOSMIDIAwe32PresetIndex[ hDriver ] == ( _MAX_SBKS - 1 ) ) + return( -1 ); + + // attempt to open the sbk file + if( ( hFile = open( ( const char * )szFileName, O_RDONLY | O_BINARY ) ) == -1 ) + return( -2 ); + + // attempt to allocate a buffer to use for transfer + if( ( pDataPtr = ( PSTR )malloc( _READ_BUFFER_SIZE ) ) == NULL ) + { + // close the file + close( hFile ); + + // return an error + return( -3 ); + } + + // open the awe32 stream +#ifdef __BORLANDC__ + if( ( wReadSize = sosMIDIDRVCall32Func( _lpSOSMIDIDrvFunction[ hDriver ][ 5 ], + lpTemp, _wSOSMIDIAwe32PresetIndex[ hDriver ], 0x00 ) ) == -1 ) +#else + if( ( wReadSize = _lpSOSMIDIDrvFunction[ hDriver ][ 5 ]( _NULL, + _wSOSMIDIAwe32PresetIndex[ hDriver ], 0x00 ) ) == -1 ) +#endif + { + // free the previously allocated memory + free( pDataPtr ); + + // close the file + close( hFile ); + + // return error + return( -4 ); + } + + // read in a chunk of data from the file + if( read( hFile, pDataPtr, wReadSize ) == -1 ) + return( -5 ); + + // get the sample data seek location +#ifdef __BORLANDC__ + lpTemp.sel = getDS(); + lpTemp.off = pDataPtr; + if( ( wIndex = sosMIDIDRVCall32Func( _lpSOSMIDIDrvFunction[ hDriver ][ 8 ], + lpTemp, _wSOSMIDIAwe32PresetIndex[ hDriver ], 0x00 ) ) == -1 ) +#else + if( ( wIndex = _lpSOSMIDIDrvFunction[ hDriver ][ 8 ]( ( LPSTR )pDataPtr, + _wSOSMIDIAwe32PresetIndex[ hDriver ], 0x00 ) ) == -1 ) +#endif + { + // free the previously allocated memory + free( pDataPtr ); + + // close the file + close( hFile ); + + // return error + return( -6 ); + } + + // seek the file to the sample location + if( lseek( hFile, wIndex, SEEK_SET ) == -1 ) + { + // close the file + close( hFile ); + + // free the preset memory + free( ( PSTR )_lpSOSMIDIAwe32PresetBuffer[ hDriver ][ _wSOSMIDIAwe32PresetIndex[ hDriver ] ] ); + + // return an error + return( -7 ); + } + + // send chunks of data to the driver + do + { + // read in a chunk of data from the file + if( read( hFile, pDataPtr, wReadSize ) == -1 ) + return( -8 ); + + // send the data to the driver +#ifdef __BORLANDC__ + lpTemp.sel = getDS(); + lpTemp.off = pDataPtr; + if( ( wReadSize = sosMIDIDRVCall32Func( _lpSOSMIDIDrvFunction[ hDriver ] + [ 6 ], lpTemp, _wSOSMIDIAwe32PresetIndex[ hDriver ], 0x00 ) ) == -1 ) +#else + if( ( wReadSize = _lpSOSMIDIDrvFunction[ hDriver ][ 6 ]( + ( LPSTR )pDataPtr, _wSOSMIDIAwe32PresetIndex[ hDriver ], 0x00 ) ) == -1 ) +#endif + { + // close the file + close( hFile ); + + // free the memory + free( pDataPtr ); + + // return an error + return( -9 ); + } + } while( wReadSize ); + + // free the temporary memory buffer + free( pDataPtr ); + + // get the preset data size +#ifdef __BORLANDC__ + wReadSize = sosMIDIDRVCall32Func( _lpSOSMIDIDrvFunction[ hDriver ][ 7 ], + lpTemp, 0x00, 0x00 ); +#else + wReadSize = _lpSOSMIDIDrvFunction[ hDriver ][ 7 ]( _NULL, 0x00, 0x00 ); +#endif + + // get the preset location in the file +#ifdef __BORLANDC__ + lpTemp.sel = getDS(); + lpTemp.off = &wIndex; + sosMIDIDRVCall32Func( _lpSOSMIDIDrvFunction[ hDriver ][ 9 ], lpTemp, + 0x00, 0x00 ); +#else + _lpSOSMIDIDrvFunction[ hDriver ][ 9 ]( ( LPSTR )&wIndex, 0x00, 0x00 ); +#endif + + // allocate the memory for the preset information +#ifdef __BORLANDC__ + if( !( _lpSOSMIDIAwe32PresetBuffer[ hDriver ][ _wSOSMIDIAwe32PresetIndex[ hDriver ] ] = + ( PSTR )malloc( wReadSize ) ) ) +#else + if( !( _lpSOSMIDIAwe32PresetBuffer[ hDriver ][ _wSOSMIDIAwe32PresetIndex[ hDriver ] ] = + ( LPSTR )malloc( wReadSize ) ) ) +#endif + { + // close the file + close( hFile ); + + // return an error + return( -10 ); + } + + // seek the file to the preset location + if( lseek( hFile, wIndex, SEEK_SET ) == -1 ) + { + // close the file + close( hFile ); + + // free the preset memory + free( ( PSTR )_lpSOSMIDIAwe32PresetBuffer[ hDriver ][ _wSOSMIDIAwe32PresetIndex[ hDriver ] ] ); + + // return an error + return( -11 ); + } + + // read in the preset information + if( read( hFile, ( PSTR )_lpSOSMIDIAwe32PresetBuffer[ hDriver ][ + _wSOSMIDIAwe32PresetIndex[ hDriver ] ], wReadSize ) == -1 ) + { + // close the file + close( hFile ); + + // free the preset memory + free( ( PSTR )_lpSOSMIDIAwe32PresetBuffer[ hDriver ][ _wSOSMIDIAwe32PresetIndex[ hDriver ] ] ); + + // return an error + return( -12 ); + } + + // send the preset information to the driver +#ifdef __BORLANDC__ + lpTemp.sel = getDS(); + lpTemp.off = _lpSOSMIDIAwe32PresetBuffer[ hDriver ][ _wSOSMIDIAwe32PresetIndex[ hDriver ] ]; + if( ( sosMIDIDRVCall32Func( _lpSOSMIDIDrvFunction[ hDriver ][ 10 ], + lpTemp, 0x00, 0x00 ) ) == -1 ) +#else + if( ( _lpSOSMIDIDrvFunction[ hDriver ][ 10 ]( ( LPSTR ) + _lpSOSMIDIAwe32PresetBuffer[ hDriver ][ _wSOSMIDIAwe32PresetIndex[ hDriver ] ], 0x00, 0x00 ) ) == -1 ) +#endif + { + // free the preset memory + free( ( PSTR )_lpSOSMIDIAwe32PresetBuffer[ hDriver ][ _wSOSMIDIAwe32PresetIndex[ hDriver ] ] ); + + // close the file + close( hFile ); + + // return an error + return( -13 ); + } + + // close the SBK file + close( hFile ); + + // increment the preset buffer index to the next available slot + _wSOSMIDIAwe32PresetIndex[ hDriver ]++; + + // return no error + return( _wSOSMIDIAwe32PresetIndex[ hDriver ] ); +} + +#pragma warn .def +#pragma warn .sus +#pragma warn .pia + +/*************************************************************************** + +Function : WORD sosMIDIAWE32ReleaseAllSBKFiles + +Parameters : WORD hDriver + Handle of SOS driver to release .SBK files from + +Returns : -1 if error; otherwise, _ERR_NO_ERROR + +Description : Release all of the memory associated to the .SBK files + uploaded to the awe32. + +****************************************************************************/ + +#pragma warn -def + +WORD sosMIDIAWE32ReleaseSBKFiles( WORD hDriver ) +{ + WORD wIndex; +#ifdef __BORLANDC__ + SFAR lpTemp; +#endif + + // call the driver to release all of the .SBK files +#ifdef __BORLANDC__ + if( sosMIDIDRVCall32Func( _lpSOSMIDIDrvFunction[ hDriver ][ 9 ], lpTemp, + 0x01, 0x00 ) == -1 ) +#else + if( _lpSOSMIDIDrvFunction[ hDriver ][ 9 ]( ( LPSTR )_NULL, 0x01, 0x00 ) + == -1 ) +#endif + return( -1 ); + + // free the memory allocated for the awe32 preset information + for( wIndex = _SBK_SLOT_OFFSET; wIndex < _wSOSMIDIAwe32PresetIndex[ hDriver ]; + wIndex++ ) + free( ( PSTR )_lpSOSMIDIAwe32PresetBuffer[ hDriver ][ wIndex ] ); + + // reset the available slot index + _wSOSMIDIAwe32PresetIndex[ hDriver ] = _SBK_SLOT_OFFSET; + + // return no error + return( _ERR_NO_ERROR ); +} + +#pragma warn .def + +/*************************************************************************** + +Function : WORD sosMIDIAWE32NoteOn + +Parameters : WORD hDriver + Handle of SOS driver + WORD wSlot + .SBK file slot to associate patch to + WORD wChannel + Channel to use + WORD wPatch + Patch to use + WORD wNote + MIDI relative pitch to use + WORD wVelocity + Velocity to use + +Returns : -1 if error; otherwise, _ERR_NO_ERROR + +Description : Turn a note on + +****************************************************************************/ + +#pragma warn -sig + +WORD sosMIDIAWE32NoteOn( WORD hDriver, WORD wSlot, WORD wChannel, + WORD wPatch, WORD wNote, WORD wVelocity ) +{ + BYTE szMIDIData[ 0x10 ]; + + // setup the midi data structure to associate a slot to a channel + szMIDIData[ 0 ] = 0xb0 | wChannel; + szMIDIData[ 1 ] = 0x00; + szMIDIData[ 2 ] = wSlot; +#ifdef __BORLANDC__ + sosMIDISendMIDIData( hDriver, ( PSTR )szMIDIData, 0x03 ); +#else + sosMIDISendMIDIData( hDriver, ( LPSTR )szMIDIData, 0x03 ); +#endif + + // select the patch for the channel + szMIDIData[ 0 ] = 0xc0 | wChannel; + szMIDIData[ 1 ] = wPatch; +#ifdef __BORLANDC__ + sosMIDISendMIDIData( hDriver, ( PSTR )szMIDIData, 0x02 ); +#else + sosMIDISendMIDIData( hDriver, ( LPSTR )szMIDIData, 0x02 ); +#endif + + // turn the note on with the correct pitch and attack + szMIDIData[ 0 ] = 0x90 | wChannel; + szMIDIData[ 1 ] = wNote; + szMIDIData[ 2 ] = wVelocity; +#ifdef __BORLANDC__ + sosMIDISendMIDIData( hDriver, ( PSTR )szMIDIData, 0x02 ); +#else + sosMIDISendMIDIData( hDriver, ( LPSTR )szMIDIData, 0x02 ); +#endif + + // return no error + return( _ERR_NO_ERROR ); +} + +#pragma warn .sig + +/*************************************************************************** + +Function : WORD sosMIDIAWE32NoteOff + +Parameters : WORD hDriver + Handle of SOS driver + WORD wChannel + Channel to use + WORD wNote + MIDI relative pitch to use + +Returns : -1 if error; otherwise, _ERR_NO_ERROR + +Description : Turn a note on + +****************************************************************************/ + +#pragma warn -sig + +WORD sosMIDIAWE32NoteOff( WORD hDriver, WORD wChannel, WORD wNote ) +{ + BYTE szMIDIData[ 0x10 ]; + + // turn the note off + szMIDIData[ 0 ] = 0x90 | wChannel; + szMIDIData[ 1 ] = wNote; + szMIDIData[ 2 ] = 0x00; +#ifdef __BORLANDC__ + sosMIDISendMIDIData( hDriver, ( PSTR )szMIDIData, 0x03 ); +#else + sosMIDISendMIDIData( hDriver, ( LPSTR )szMIDIData, 0x03 ); +#endif + + // return no error + return( _ERR_NO_ERROR ); +} + +#pragma warn .sig + + + + + + + diff --git a/CODE/RP/MUNGA_L4/SOSMAWE.H b/CODE/RP/MUNGA_L4/SOSMAWE.H new file mode 100644 index 0000000..cf8f1e6 --- /dev/null +++ b/CODE/RP/MUNGA_L4/SOSMAWE.H @@ -0,0 +1,16 @@ + +#include "sosm.h" + +#ifdef __cplusplus // HACK - ECH 96/01/26 +extern "C" { +#endif + +WORD sosMIDIAWE32SetSBKFile( WORD, const char *szFileName ); +WORD sosMIDIAWE32ReleaseSBKFiles( WORD ); +WORD sosMIDIAWE32NoteOn( WORD, WORD, WORD, WORD, WORD, WORD ); +WORD sosMIDIAWE32NoteOff( WORD, WORD, WORD ); + +#ifdef __cplusplus // HACK - ECH 96/01/26 +} +#endif + diff --git a/CODE/RP/MUNGA_L4/SPEAKER.HPP b/CODE/RP/MUNGA_L4/SPEAKER.HPP new file mode 100644 index 0000000..7151f17 --- /dev/null +++ b/CODE/RP/MUNGA_L4/SPEAKER.HPP @@ -0,0 +1,9 @@ +#include +#include +#undef inp +#undef outp + +#define SPKSET outp(0x61,(2 | inp(0x61))) +#define SPKCLR outp(0x61,((~2) & inp(0x61))) + + diff --git a/CODE/RP/MUNGA_L4/STARTDPL.C b/CODE/RP/MUNGA_L4/STARTDPL.C new file mode 100644 index 0000000..038fbe9 --- /dev/null +++ b/CODE/RP/MUNGA_L4/STARTDPL.C @@ -0,0 +1,275 @@ +#include +#include +#include +#include + +int x_size=832, + y_size=512; + +#define dpl_arg_sep '~' + +float near_clip=4.0f, far_clip=2000.0f; + +/*{{{ static char *find_dpl_arg ( char *dpl_arg, char *find_arg )*/ +static char *find_dpl_arg ( char *dpl_arg, char *find_arg ) +{ + char *check=dpl_arg, *ret=NULL; + int len=strlen(find_arg); + + while (*check) { + /* printf ("checking %s with %s, %d chars\n", find_arg, check, len ); */ + if (strncmp (check, find_arg, len) == 0) { + /* found it ? */ + /* printf ("preliminary match, on %s\n", check ); */ + while ((*check) != dpl_arg_sep) { + if ((*check) == 0x0) return NULL; + /* printf ("skipping %c\n", *check ); */ + check++; + } + check++; + if ((*check) == 0x0) return NULL; + else { + /* printf ("match, returning %s!\n", check ); */ + return check; + } + } + else check++; + } + return NULL; +} +/*}}} */ + +/*{{{ int screen_resolution ( dpl_argv )*/ +int screen_resolution ( char *dpl_argv ) +{ + char *video=find_dpl_arg ( dpl_argv, "video" ); + + if (video == NULL) return 0; + + if (strncmp ( video, "ntsc", 4 ) == 0) { + x_size=704; + y_size=480; + return 1; + } + + if (strncmp ( video, "ntsc_rgb", 4 ) == 0) { + x_size=704; + y_size=480; + return 1; + } + + if (strncmp ( video, "vga", 3 ) == 0) { + x_size=640; + y_size=480; + return 1; + } + + if (strncmp ( video, "pal", 3 ) == 0) { + x_size=832; + y_size=512; + return 1; + } + + if (strncmp ( video, "pal_rgb", 7 ) == 0) { + x_size=832; + y_size=512; + return 1; + } + + if (strncmp ( video, "hires", 5 ) == 0) { + x_size=1024; + y_size=768; + return 1; + } + + if (strncmp ( video, "svga", 4 ) == 0) { + x_size=832; + y_size=512; + return 1; + } + + if (strncmp ( video, "nucolor", 7 ) == 0) { + x_size=640; + y_size=480; + return 1; + } + + if (strncmp ( video, "kaiser", 6 ) == 0) { + x_size=832; + y_size=256; + return 1; + } + + else { + printf ("Unknown video format %s\n", video ); + x_size=640; + y_size=480; + return 0; + + } +} +/*}}} */ + +/*{{{ dpl_ZONE *initialize_eyes ( char *dpl_args, int stereo,*/ +dpl_ZONE *initialize_eyes ( int stereo, + dpl_VIEW **lye, + dpl_VIEW **rye, + float fog_near ) +{ + dpl_DCS *d; + dpl_ZONE *z; + dpl_VIEW *eye; + float fog_far; + + if (fog_near > far_clip) + fog_far=fog_near+256; + else + fog_far=far_clip; + + + printf ("initialize eyes\n" ); + + z=dpl_NewZone(); + + printf ("create 1st view\n" ); + + *lye = dpl_NewView(); + + if ((*lye) == NULL) { + printf ("NULL eye\n" ); + return NULL; + } + + eye=*lye; + + d=dpl_NewDCS(); + dpl_SetViewDCS(eye, d); + + dpl_SetZoneAllViewsOn ( z ); +// dpl_AddZoneToScene ( z ); + dpl_SetViewClipPlanes ( eye, near_clip, far_clip ); + dpl_SetViewBackGround ( eye, 0.4f, 0.6f, 0.9f ); + dpl_SetViewFog ( eye, 0, 0.5f, 0.5f, 0.6f, fog_near, fog_far ); + dpl_SetViewPort ( eye, 0, 0, x_size-1, y_size-1 ); + dpl_SetViewProjection ( eye, + -1.0f, -1.0f, 1.0f, 1.0f, + 1.3f ); + dpl_AddViewToScene ( eye ); + + dpl_FlushDCS(d); + dpl_FlushView(eye); + dpl_FlushZone(z); + + if (stereo == 0) { + *rye=NULL; + } + else { + printf ("create 2nd view\n" ); + *rye = dpl_NewView(); + if ((*rye) == NULL) { + printf ("NULL rye\n" ); + return NULL; + } + + eye=*rye; + + d=dpl_NewDCS(); + dpl_SetViewDCS(eye, d); + + dpl_SetViewClipPlanes ( eye, near_clip, far_clip ); + dpl_SetViewBackGround ( eye, 0.4f, 0.6f, 0.9f ); + dpl_SetViewFog ( eye, 0, 0.5f, 0.5f, 0.6f, fog_near, fog_far ); + dpl_SetViewPort ( eye, 0, 0, x_size-1, y_size-1 ); + dpl_SetViewProjection ( eye, + -1.0f, -1.0f, 1.0f, 1.0f, + 1.3f ); + dpl_AddViewToScene ( eye ); + + dpl_FlushDCS(d); + dpl_FlushView(eye); + } + return z; +} +/*}}} */ + +/*{{{ static char *explode_an_arg( char *dpl_args, char **where, char sep )*/ +static char *explode_an_arg( char *dpl_args, char **where, char sep ) +{ + int explode=1, good_chars=0; + char *arg0=dpl_args; + + + while (explode) { + if (*dpl_args == sep) { + /*{{{ a separator*/ + /* end of a string */ + if (good_chars) { + *where=malloc(good_chars+1); + memcpy ( *where, arg0, good_chars ); + (*where)[good_chars]=0x0; + dpl_args++; + } + else { + *where=malloc(1); + (*where)[0]=0x0; + dpl_args++; + } + /*}}} */ + explode=0; + } + else if (*dpl_args) { + good_chars++; + dpl_args++; + } + else { + /*{{{ end of whole dpl_args string*/ + if (good_chars) { + *where=malloc(good_chars+1); + memcpy ( *where, arg0, good_chars ); + (*where)[good_chars]=0x0; + explode=0; /* ensure we return pointer to (char) 0x0 */ + } + else return NULL; + /*}}} */ + } + } + return dpl_args; +} +/*}}} */ +/*{{{ static int explode_args ( char **argv, char *dpl_args, char dpl_arg_sep )*/ +int explode_args ( char **argv, char *dpl_args, char sep ) +{ + int argc=0; + + while (*dpl_args) { + dpl_args=explode_an_arg(dpl_args, &argv[argc], sep); + if (dpl_args) + argc++; + else + return argc; + } + return argc; +} +/*}}} */ + +/*{{{ dpl_ZONE *initialize_all ( char *dpl_args,*/ +dpl_ZONE *initialize_all ( char *dpl_args, + int stereo, + dpl_VIEW **lye, + dpl_VIEW **rye, + float fog_near ) +{ + dpl_ZONE *z; + char *argv[32]; + int argc=0; + + argc = explode_args ( argv, dpl_args, dpl_arg_sep ); + + dpl_Init ( argc, argv ); + + z = initialize_eyes ( stereo, lye, rye, fog_near ); + + return z; +} +/*}}} */ + diff --git a/CODE/RP/MUNGA_L4/joystick.OBJ b/CODE/RP/MUNGA_L4/joystick.OBJ new file mode 100644 index 0000000..0387528 Binary files /dev/null and b/CODE/RP/MUNGA_L4/joystick.OBJ differ diff --git a/CODE/RP/MUNGA_L4/l4serial.OBJ b/CODE/RP/MUNGA_L4/l4serial.OBJ new file mode 100644 index 0000000..c04f244 Binary files /dev/null and b/CODE/RP/MUNGA_L4/l4serial.OBJ differ diff --git a/CODE/RP/MUNGA_L4/l4svga16.OBJ b/CODE/RP/MUNGA_L4/l4svga16.OBJ new file mode 100644 index 0000000..0456098 Binary files /dev/null and b/CODE/RP/MUNGA_L4/l4svga16.OBJ differ diff --git a/CODE/RP/MUNGA_L4/libDPL/LIBDPL.LIB b/CODE/RP/MUNGA_L4/libDPL/LIBDPL.LIB new file mode 100644 index 0000000..2eb4c1d Binary files /dev/null and b/CODE/RP/MUNGA_L4/libDPL/LIBDPL.LIB differ diff --git a/CODE/RP/MUNGA_L4/libDPL/VREND.MNG b/CODE/RP/MUNGA_L4/libDPL/VREND.MNG new file mode 100644 index 0000000..4f084f9 Binary files /dev/null and b/CODE/RP/MUNGA_L4/libDPL/VREND.MNG differ diff --git a/CODE/RP/MUNGA_L4/libDPL/VREND2.BTL b/CODE/RP/MUNGA_L4/libDPL/VREND2.BTL new file mode 100644 index 0000000..1d247f9 Binary files /dev/null and b/CODE/RP/MUNGA_L4/libDPL/VREND2.BTL differ diff --git a/CODE/RP/MUNGA_L4/libDPL/VREND3.BTL b/CODE/RP/MUNGA_L4/libDPL/VREND3.BTL new file mode 100644 index 0000000..d8bde5a Binary files /dev/null and b/CODE/RP/MUNGA_L4/libDPL/VREND3.BTL differ diff --git a/CODE/RP/MUNGA_L4/libDPL/VREND4.BTL b/CODE/RP/MUNGA_L4/libDPL/VREND4.BTL new file mode 100644 index 0000000..875b290 Binary files /dev/null and b/CODE/RP/MUNGA_L4/libDPL/VREND4.BTL differ diff --git a/CODE/RP/MUNGA_L4/libDPL/VREND5.BTL b/CODE/RP/MUNGA_L4/libDPL/VREND5.BTL new file mode 100644 index 0000000..fd72eb5 Binary files /dev/null and b/CODE/RP/MUNGA_L4/libDPL/VREND5.BTL differ diff --git a/CODE/RP/MUNGA_L4/libDPL/VREND6.BTL b/CODE/RP/MUNGA_L4/libDPL/VREND6.BTL new file mode 100644 index 0000000..6a6bfd5 Binary files /dev/null and b/CODE/RP/MUNGA_L4/libDPL/VREND6.BTL differ diff --git a/CODE/RP/MUNGA_L4/libDPL/VREND7.BTL b/CODE/RP/MUNGA_L4/libDPL/VREND7.BTL new file mode 100644 index 0000000..91b75e9 Binary files /dev/null and b/CODE/RP/MUNGA_L4/libDPL/VREND7.BTL differ diff --git a/CODE/RP/MUNGA_L4/libDPL/VREND8.BTL b/CODE/RP/MUNGA_L4/libDPL/VREND8.BTL new file mode 100644 index 0000000..6d7114c Binary files /dev/null and b/CODE/RP/MUNGA_L4/libDPL/VREND8.BTL differ diff --git a/CODE/RP/MUNGA_L4/libDPL/VREND9.BTL b/CODE/RP/MUNGA_L4/libDPL/VREND9.BTL new file mode 100644 index 0000000..9403ff5 Binary files /dev/null and b/CODE/RP/MUNGA_L4/libDPL/VREND9.BTL differ diff --git a/CODE/RP/MUNGA_L4/libDPL/VRENDMON.BTL b/CODE/RP/MUNGA_L4/libDPL/VRENDMON.BTL new file mode 100644 index 0000000..eda5fed Binary files /dev/null and b/CODE/RP/MUNGA_L4/libDPL/VRENDMON.BTL differ diff --git a/CODE/RP/MUNGA_L4/libDPL/VRNOSTEX.MNG b/CODE/RP/MUNGA_L4/libDPL/VRNOSTEX.MNG new file mode 100644 index 0000000..630e1ee Binary files /dev/null and b/CODE/RP/MUNGA_L4/libDPL/VRNOSTEX.MNG differ diff --git a/CODE/RP/MUNGA_L4/libDPL/dpl/DPL.H b/CODE/RP/MUNGA_L4/libDPL/dpl/DPL.H new file mode 100644 index 0000000..fb23edc --- /dev/null +++ b/CODE/RP/MUNGA_L4/libDPL/dpl/DPL.H @@ -0,0 +1,590 @@ +/***************************************************************************** + + PROJECT: + dPL + + FILE: + dpl.h + + CONTENTS: + Public include with function prototypes. + +*****************************************************************************/ + +#ifndef _DPL_H +#define _DPL_H + +/* include type definitions */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Create Elements */ + +extern dpl_ZONE *dpl_NewZone(void); +extern dpl_VIEW *dpl_NewView(void); +extern dpl_DCS *dpl_NewDCS(void); +extern dpl_INSTANCE *dpl_NewInstance(void); +extern dpl_LIGHT *dpl_NewLight(void); +extern dpl_TEXTURE *dpl_NewTexture(void); +extern dpl_TEXMAP *dpl_NewTexmap(void); +extern dpl_MATERIAL *dpl_NewMaterial(void); +extern dpl_OBJECT *dpl_NewObject(void); +extern dpl_LOD *dpl_NewLod(void); +extern dpl_GEOGROUP *dpl_NewGeogroup(void); +extern dpl_GEOMETRY *dpl_NewGeometry(void); +extern dpl_RAMP *dpl_NewRamp(void); + +/* Connect Structure */ + +extern void dpl_AddViewToScene(dpl_VIEW *v); +extern void dpl_AddDCSToScene(dpl_DCS *d); +extern void dpl_AddDCSToDCS(dpl_DCS *parent, dpl_DCS *child); +extern void dpl_AddInstanceToDCS(dpl_DCS *d, dpl_INSTANCE *i); +extern void dpl_AddLodToObject(dpl_OBJECT *o, dpl_LOD *l); +extern void dpl_AddGeogroupToLod(dpl_LOD *l, dpl_GEOGROUP *gg); +extern void dpl_AddGeometryToGeogroup(dpl_GEOGROUP *gg, dpl_GEOMETRY *g); + +/* Querry Structure */ + +extern dpl_VIEW *dpl_GetSceneView(int32 n); +extern dpl_DCS *dpl_GetSceneDCS(int32 n); +extern dpl_DCS *dpl_GetDCSChildDCS(dpl_DCS *parent, int32 n); +extern dpl_DCS *dpl_GetDCSParentDCS(dpl_DCS *child); +extern dpl_INSTANCE *dpl_GetDCSInstance(dpl_DCS *d, int32 n); +extern dpl_LOD *dpl_GetObjectLod(dpl_OBJECT *o, int32 n); +extern dpl_GEOGROUP *dpl_GetLodGeogroup(dpl_LOD *l, int32 n); +extern dpl_GEOMETRY *dpl_GetGeogroupGeometry(dpl_GEOGROUP *gg, int32 n); + +/* Disonnect Structure */ + +extern void dpl_RemoveViewFromScene(dpl_VIEW *v); +extern void dpl_RemoveDCSFromScene(dpl_DCS *d); +extern void dpl_RemoveDCSFromDCS(dpl_DCS *parent, dpl_DCS *child); +extern void dpl_RemoveInstanceFromDCS(dpl_DCS *d, dpl_INSTANCE *i); +extern void dpl_RemoveLodFromObject(dpl_OBJECT *o, dpl_LOD *lod); +extern void dpl_RemoveGeogroupFromLod(dpl_LOD *l, dpl_GEOGROUP *gg); +extern void dpl_RemoveGeometryFromGeogroup(dpl_GEOGROUP *gg, dpl_GEOMETRY *g); + +/* Delete Elements */ + +extern void dpl_DeleteZone(dpl_ZONE *z); +extern void dpl_DeleteView(dpl_VIEW *v); +extern void dpl_DeleteDCS(dpl_DCS *d); +extern void dpl_DeleteInstance(dpl_INSTANCE *i); +extern void dpl_DeleteLight(dpl_LIGHT *l); +extern void dpl_DeleteTexture(dpl_TEXTURE *t); +extern void dpl_DeleteTexmap(dpl_TEXMAP *tm); +extern void dpl_DeleteMaterial(dpl_MATERIAL *m); +extern void dpl_DeleteObject(dpl_OBJECT *o); +extern void dpl_DeleteLod(dpl_LOD *l); +extern void dpl_DeleteGeogroup(dpl_GEOGROUP *gg); +extern void dpl_DeleteGeometry(dpl_GEOMETRY *g); +extern void dpl_DeleteRamp(dpl_RAMP *); + +/* Scene Coherence */ + +extern void dpl_FlushZone(dpl_ZONE *z); +extern void dpl_FlushView(dpl_VIEW *v); +extern void dpl_FlushDCS(dpl_DCS *d); +extern void dpl_FlushInstance(dpl_INSTANCE *i); +extern void dpl_FlushLight(dpl_LIGHT *l); +extern void dpl_FlushTexture(dpl_TEXTURE *t); +extern void dpl_FlushTexmap(dpl_TEXMAP *tm); +extern void dpl_FlushMaterial(dpl_MATERIAL *m); +extern void dpl_FlushObject(dpl_OBJECT *o); +extern void dpl_FlushLod(dpl_LOD *l); +extern void dpl_FlushGeogroup(dpl_GEOGROUP *gg); +extern void dpl_FlushGeometry(dpl_GEOMETRY *g); +extern void dpl_FlushRamp(dpl_RAMP *); + +/* Modal Render Changes */ + +/* Render modes may be set and querried using these functions, this enables + modes like; wireframe rendering, single buffered rendering and the + graphical display of performance information. */ + +extern void dpl_SetRenderProperty(dpl_RENDER_PROP prp, dpl_RENDER_VALUE val, + void *data); +extern dpl_RENDER_VALUE dpl_GetRenderProperty(dpl_RENDER_PROP prp, + void *data); +extern void dpl_SetPipeWindow(int32 pipe, + int32 x0, int32 y0, int32 x1, int32 y1); +extern void dpl_GetPipeWindow(int32 pipe, + int32 *x0, int32 *y0, int32 *x1, int32 *y1); +extern void dpl_SetWindowName(int32 pipe, char8 *name); +extern char8 *dpl_GetWindowName(int32 pipe); +extern void dpl_SetDesktopStereo(int32 pipe, int32 mode); +extern int32 dpl_GetDesktopStereo(int32 pipe); +extern void dpl_SetFrameRate(float32 rate); +extern float32 dpl_GetFrameRate(void); + +/* Direct Render Calls */ + +/* These calls render the scene to all views and allow the application to + lock and therefore synch to the frame rate. In multi processor SGI + implementations this will lock to the cull rather than the render + process. */ + +extern void dpl_DrawScene(void); +extern void dpl_WaitSceneComplete(void); +extern int32 dpl_DrawSceneComplete(void); + +/* DCS */ + +/* Positional information may be set in a DCS in the form of a 4x4 matrix. */ + +extern void dpl_SetDCSMatrix(dpl_DCS *d, float32 *m); +extern float32 *dpl_GetDCSMatrix(dpl_DCS *d); + +/* DCS nodes may be billboarded around any set of axes. This makes them + automatically orient towards the view reguardless of their position + relative to the viewpoint. Multiple axes may be set by adding or bitwise + oring the axis definitions together. */ + +extern void dpl_SetDCSReorientAxes(dpl_DCS *d, dpl_REORIENT_AXES a); +extern dpl_REORIENT_AXES dpl_GetDCSReorientAxes(dpl_DCS *d); + +/* For switching and lighting model purposes a DCS has an associated zone + which it occupies. */ + +extern void dpl_SetDCSZone(dpl_DCS *d, dpl_ZONE *z); +extern dpl_ZONE *dpl_GetDCSZone(dpl_DCS *d); + +/* Zone */ + +/* Zones provide a means of controlling geometry switching on a per view + basis and may be used to associate groups of light sources with + particular DCS hierarchies. */ + +/* Sets rendering of the zone on for all views */ +extern void dpl_SetZoneAllViewsOn(dpl_ZONE *z); + +/* Sets rendering of the zone off for all views */ +extern void dpl_SetZoneAllViewsOff(dpl_ZONE *z); + +/* Sets rendering of the zone for the specified view on */ +extern void dpl_SetZoneViewOn(dpl_ZONE *z, dpl_VIEW *v); + +/* Sets rendering of the zone for the specified view off */ +extern void dpl_SetZoneViewOff(dpl_ZONE *z, dpl_VIEW *v); + +/* gets the rendering status of the zone in the view */ +extern int32 dpl_GetZoneView(dpl_ZONE *z, dpl_VIEW *v); + +/* sets all 32 views for this zone based on a bitmask*/ +extern void dpl_SetZoneBitmask(dpl_ZONE *z, uint32 m); + +/* gets a bitmask of all 32 views for this zone */ +extern uint32 dpl_GetZoneBitmask(dpl_ZONE *z); + +/* Instance */ + +/* Instances provide a means of copying an object without explicitly + recreating it in the database. All instances therefore reference an + object, any object may be multiply referenced by several instances. + Material overrides may be applied to all geometry below an instance. + Any material override applied to an instance will change the material + of those geosets which have no lock applied to the material or geoset. */ + +extern void dpl_SetInstanceObject(dpl_INSTANCE *, dpl_OBJECT *); + +extern dpl_OBJECT *dpl_GetInstanceObject(dpl_INSTANCE *); + +extern void dpl_SetInstanceForceLOD(dpl_INSTANCE *i, dpl_LOD *l); + +extern dpl_LOD *dpl_GetInstanceForceLOD(dpl_INSTANCE *i); + +extern void dpl_SetInstanceVisibility(dpl_INSTANCE *i, int32 v); + +extern int32 dpl_GetInstanceVisibility(dpl_INSTANCE *i); + +extern void dpl_SetInstanceIntersect(dpl_INSTANCE *i, dpl_ISECT_MODE m); + +extern dpl_ISECT_MODE dpl_GetInstanceIntersect(dpl_INSTANCE *i); + +extern void dpl_SetInstanceSectMask(dpl_INSTANCE *i, uint32 mask); + +extern uint32 dpl_GetInstanceSectMask(dpl_INSTANCE *i); + + +/* Object */ + +/* Objects contain lod nodes which switch according to ranging information + associated wit the object */ + +extern void dpl_SetObjectLodRange(dpl_OBJECT *o, + int32 transition, float32 range); + +extern void dpl_InvalidateObjectLodRanges(dpl_OBJECT *o); + +extern float32 dpl_GetObjectLodRange(dpl_OBJECT *o, int32 transition); + +extern void dpl_SetObjectLodHotSpot(dpl_OBJECT *o, + float32 x, float32 y, float32 z); + +extern void dpl_GetObjectLodHotSpot(dpl_OBJECT *o, + float32 *x, float32 *y, float32 *z); + +extern void dpl_SetObjectLodFadeRange(dpl_OBJECT *o, float32 range); + +extern float32 dpl_GetObjectLodFadeRange(dpl_OBJECT *o); + +extern void dpl_SetInstanceFrontMaterial(dpl_INSTANCE *i, dpl_MATERIAL *m); +extern void dpl_SetInstanceBackMaterial(dpl_INSTANCE *i, dpl_MATERIAL *m); +extern dpl_MATERIAL *dpl_GetInstanceFrontMaterial(dpl_INSTANCE *i); +extern dpl_MATERIAL *dpl_GetInstanceBackMaterial(dpl_INSTANCE *i); + +/* Light */ + +extern void dpl_SetLightDCS(dpl_LIGHT *, dpl_DCS *); +extern dpl_DCS *dpl_GetLightDCS(dpl_LIGHT *); +extern void dpl_SetLightType(dpl_LIGHT *l, dpl_LIGHT_TYPE t); +extern dpl_LIGHT_TYPE dpl_GetLightType(dpl_LIGHT *l); +extern void dpl_SetLightColor(dpl_LIGHT *l, float32 r, float32 g, float32 b); +extern void dpl_GetLightColor(dpl_LIGHT *l, + float32 *r, float32 *g, float32 *b); +extern void dpl_SetLightRadii(dpl_LIGHT *l, float32 r0, float32 r1); +extern void dpl_GetLightRadii(dpl_LIGHT *l, float32 *r0,float32 *r1); +extern void dpl_SetLightUmbra(dpl_LIGHT *l, float32 exp, float32 th); +extern void dpl_GetLightUmbra(dpl_LIGHT *l, float32 *exp, float32 *th); + +/* View */ + +extern void dpl_ViewShare(dpl_VIEW *master, dpl_VIEW *slave); +extern void dpl_SetViewDCS(dpl_VIEW *v, dpl_DCS *d); +extern dpl_DCS *dpl_GetViewDCS(dpl_VIEW *v); +extern void dpl_SetViewClipPlanes(dpl_VIEW *v, float32 hither, float32 yon); +extern void dpl_GetViewClipPlanes(dpl_VIEW *v, float32 *hither, float32 *yon); +extern void dpl_SetViewBackGround(dpl_VIEW *v, + float32 r, float32 g, float32 b); +extern void dpl_GetViewBackGround(dpl_VIEW *v, + float32 *r, float32 *g, float32 *b); +extern void dpl_SetViewFog(dpl_VIEW *v, dpl_FOG_TYPE enable, + float32 r, float32 g, float32 b, float32 neer, float32 phar); +extern void dpl_GetViewFog(dpl_VIEW *v, dpl_FOG_TYPE *enable, + float32 *r, float32 *g, float32 *b, float32 *neer, float32 *phar); +extern void dpl_SetViewPipe(dpl_VIEW *v, int32 pipe); +extern int32 dpl_GetViewPipe(dpl_VIEW *v); +extern void dpl_SetViewPort(dpl_VIEW *v, + float32 x0, float32 y0, float32 x1, float32 y1); +extern void dpl_GetViewPort(dpl_VIEW *v, + float32 *x0, float32 *y0, float32 *x1, float32 *y1); +extern void dpl_SetViewProjection(dpl_VIEW *v, float32 x0, float32 y0, + float32 x1, float32 y1, float32 zeye); +extern void dpl_GetViewProjection(dpl_VIEW *v, float32 *x0, float32 *y0, + float32 *x1, float32 *y1, float32 *zeye); +extern void dpl_SetViewNumber(dpl_VIEW *v, int32 n); +extern int32 dpl_GetViewNumber(dpl_VIEW *v); +extern void dpl_SetViewZClearOnly(dpl_VIEW *v, int32 mode); +extern int32 dpl_GetViewZClearOnly(dpl_VIEW *v); + +/* Material */ + +/* Various illumination properties of a material may be set independently. */ + +extern void dpl_SetMaterialAmbient(dpl_MATERIAL *m, + float32 r, float32 g, float32 b); + +extern void dpl_GetMaterialAmbient(dpl_MATERIAL *m, + float32 *r, float32 *g, float32 *b); + +extern void dpl_SetMaterialEmissive(dpl_MATERIAL *m, + float32 r, float32 g, float32 b); + +extern void dpl_GetMaterialEmissive(dpl_MATERIAL *m, + float32 *r, float32 *g, float32 *b); + +extern void dpl_SetMaterialDiffuse(dpl_MATERIAL *m, + float32 r, float32 g, float32 b); + +extern void dpl_GetMaterialDiffuse(dpl_MATERIAL *m, + float32 *r, float32 *g, float32 *b); + +extern void dpl_SetMaterialSpecular(dpl_MATERIAL *m, + float32 r, float32 g, float32 b, float32 shininess); + +extern void dpl_GetMaterialSpecular(dpl_MATERIAL *m, + float32 *r, float32 *g, float32 *b, float32 *shininess); + +extern void dpl_SetMaterialOpacity(dpl_MATERIAL *m, + float32 r, float32 g, float32 b); + +extern void dpl_GetMaterialOpacity(dpl_MATERIAL *m, + float32 *r, float32 *g, float32 *b); + +extern void dpl_SetMaterialTexture(dpl_MATERIAL *m, dpl_TEXTURE *t); + +extern dpl_TEXTURE *dpl_GetMaterialTexture(dpl_MATERIAL *m); + +extern void dpl_SetMaterialEnvironment(dpl_MATERIAL *m, dpl_TEXTURE *t); + +extern dpl_TEXTURE *dpl_GetMaterialEnvironment(dpl_MATERIAL *m); + +extern void dpl_SetMaterialRamp(dpl_MATERIAL *, dpl_RAMP *); + +extern dpl_RAMP *dpl_GetMaterialRamp(dpl_MATERIAL *); + +/* Texture */ +/* Texture manipulation commands allow control over the various modes + associated with applying texmaps to polygons. Particular importance is + attached to the dpl_FlushTexture() function listed in a previous section. + Potentially, many of the mode changes associated with these commands + require a prohibitive ammount of time to be applied on some systems. + With write-back cacheing it is likely that applications will have to + flush a texture on most platforms before any modifications take effect, + this should be done as infrequently as possible, prefferably after all + modifications have been requested. Functions below allow various + properties to be set to particular parameter values. Hopefully this leads + to a flexible and extensible interface. For a list of properties see the + enumerated type definitions earlier in this document. */ + +extern void dpl_SetTextureProperty(dpl_TEXTURE *t, + dpl_TEX_PROP prp, dpl_TEX_VALUE val, void *data); + +extern dpl_TEX_VALUE dpl_GetTextureProperty(dpl_TEXTURE *t, + dpl_TEX_PROP prp, void *data); + +extern void dpl_SetTextureTexmap(dpl_TEXTURE *t, dpl_TEXMAP *tm); + +extern dpl_TEXMAP *dpl_GetTextureTexmap(dpl_TEXTURE *t); + +/* Texmap */ +/* These functions allow the creation of texmaps both from image files on + disk and from image data in memory. Using the high level loading + function eliminates the need to set the texmap dimensions. + Finally it is important to remember that this may be information used + to create a texture and not actual texture itself (I think this applies + to all target platforms & others may make a copy), so the texel memory + should be freed after the call. */ + +extern void dpl_SetTexmapEdgeSize(dpl_TEXMAP *, int32, int32); + +extern void dpl_GetTexmapEdgeSize(dpl_TEXMAP *tm, int32 *u, int32 *v); + +extern void dpl_SetTexmapTexelSize(dpl_TEXMAP *, int32); + +extern int32 dpl_GetTexmapTexelSize(dpl_TEXMAP *tm); + +extern void dpl_UpdateTexmapTexels2D(dpl_TEXMAP *, uint8 *, int32, int32); + +extern void dpl_GetTexmapTexels2D(dpl_TEXMAP *, uint8 *, int32, int32); + +/* throws away the texmap and saves some resources */ +extern void dpl_InvalidateTexels(dpl_TEXMAP *tm); + +/* Geogroup */ + +/* A material lock may be placed at the level of the geogroup which will + prevent material chain operations or override commands affecting its + material. */ + +/* set a geogroups front material */ +extern void dpl_SetGeogroupFrontMaterial(dpl_GEOGROUP *g, dpl_MATERIAL *m); + +/* set a geogroups back material */ +extern void dpl_SetGeogroupBackMaterial(dpl_GEOGROUP *g, dpl_MATERIAL *m); + +/* get a geogroups front material */ +extern dpl_MATERIAL *dpl_GetGeogroupFrontMaterial(dpl_GEOGROUP *g); + +/* get a geogroups back material */ +extern dpl_MATERIAL *dpl_GetGeogroupBackMaterial(dpl_GEOGROUP *g); + +/* lock a geogroups material */ +extern void dpl_SetGeogroupMaterialLockOn(dpl_GEOGROUP *m); + +/* unlock a geogroups material */ +extern void dpl_SetGeogroupMaterialLockOff(dpl_GEOGROUP *m); + +/* find out if a geogroups material is locked */ +extern int32 dpl_GetGeogroupMaterialLock(dpl_GEOGROUP *m); + +/* set decal displace value */ +void dpl_SetGeogroupDecalDisplace(dpl_GEOGROUP *, int32); + +/* returns decal displace on */ +int32 dpl_GetGeogroupDecalDisplace(dpl_GEOGROUP *); + +/* set wireframe TRUE or filled FALSE */ +void dpl_SetGeogroupWireframe(dpl_GEOGROUP *, int32); + +/* return wireframe TRUE or filled FALSE */ +int32 dpl_GetGeogroupWireframe(dpl_GEOGROUP *); + + +/* Geometry */ + +/* Functions are provided to create renderable database geometry from arrays + of co-ordinate information and connection lists. This is done by + specifying which type of geometry is required first. Next the vertex type + of the geometry is specified, then number of vertices. + Once this is done the vertices are passed vertice values may be set + in blocks of arbitrary sizes. + This information may be followed by an edge connection list or text + string or nothing depending on the type of geometry. Finally the geometry + is flushed to greate the requested primitives. Subsequent reads and + writes of this geometry information are possible. Of particular + importance to the creation of the geometric primitives is the type of + vertex being sent to the renderer. This determines how the primitive is + drawn in the scene, (cooked, illuminated, textured), and prepares the dPL + creation functions to expect vertex information in a particular form. + Vertex properties which may be set using the type specification function + above are enumerated as dpl_VERTEX_TYPE. These types may be added or + bitwise OR'd together to prepare dPL to receive the information. When the + contiguous block of vertices is passed the dPL uses the vertex type as a + guide to the size of each vertex and what information it holds. */ + + +/* determine the type of geometry to be held */ +extern void dpl_SetGeometryGeoType(dpl_GEOMETRY *g, dpl_GEO_TYPE gt); + +/* read the type of geometry held */ +extern dpl_GEO_TYPE dpl_GetGeometryGeoType(dpl_GEOMETRY *g); + +/* sets vertex type prior to creation, also determines space */ +extern void dpl_SetGeometryVertexType(dpl_GEOMETRY *g, dpl_VERTEX_TYPE vt); + +/* gets vertex type */ +extern dpl_VERTEX_TYPE dpl_GetGeometryVertexType(dpl_GEOMETRY *g); + +/* sets the number of vertices in the geometry */ +extern void dpl_SetGeometryNumVertices(dpl_GEOMETRY *g, int32 n); + +/* obtains the vertex count for geometry */ +extern int32 dpl_GetGeometryNumVertices(dpl_GEOMETRY *g); + +/* set values in n vertices starting from offset */ +extern void dpl_UpdateGeometryVertices(dpl_GEOMETRY *g, + float32 *v, int32 offset, int32 n); + +/* sends an edge connection list for some forms of geometry */ +extern void dpl_AddGeometryConnections(dpl_GEOMETRY *g, int32 *c, + int32 numpolys, int32 polysize); + +/* sends a strip connection list. */ +extern void dpl_AddGeometryStrip(dpl_GEOMETRY *g, int32 *c, + int32 numpolys, int32 polysize); + +/* sends a text string for display as text by geometry */ +extern void dpl_SetGeometryText(dpl_GEOMETRY *g, char8 *text); + +/* obtains n geometry vertices starting at offset */ +extern void dpl_GetGeometryVertices(dpl_GEOMETRY *g, + float32 *v, int32 offset, int32 n); + +/* gets the text string being displayed by text geometry */ +extern char8 *dpl_GetGeometryText(dpl_GEOMETRY *g); + +/* optimises and freezes geometry */ +extern void dpl_OptimiseGeometry(dpl_GEOMETRY *); + +/* set geometry subdivisions */ +extern void dpl_SetGeometryDice(dpl_GEOMETRY *, uint16, uint16); + +/* querry geometry subdivisions */ +extern void dpl_GetGeometryDice(dpl_GEOMETRY *, uint16 *, uint16 *); + +/* set the texture for textured font */ +void dpl_SetFontTexture(dpl_TEXTURE *); + +/* get the texture for textured font */ +dpl_TEXTURE *dpl_GetFontTexture(void); + +/* Setup & Cleanup */ + +extern int32 dpl_Init(int32 argc, char8 **argv); + +extern void dpl_Config(void); + +extern void dpl_Exit(int32 exit_code); + +/* Reporting Control */ + +extern void dpl_SetWarningLevel(dpl_WARN_LEVEL w); + +extern int32 dpl_GetWarningLevel(void); + +extern char8 *dpl_Version(void); + +/* these functions return types with defined contents */ + +extern dpl_STATISTICS *dpl_Statistics(void); + +extern dpl_STATUS *dpl_Status(void); + +dpl_CAPABILITY *dpl_GetCapability(void); + +/* Frame Store Query */ +/* These functions obtain a packed array of 8 bit red, green, blue & alpha + colour information from the currently displayed frame store associated + with a dpl_VIEW. A single pixel from the image is stored in each + unsigned integer in the hexadecimal form 0xRRGGBBAA, as can be seen the + high order 8 bits contain red, then green is stored then blue followed + by alpha information in the lowest order 8 bits. What is written to the + alpha bits is not specified at this stage but these may ultimately yield + useful information. Pixels will be written left to right(internal fast + loop) bottom to top(outside slow loop). The first function will return a + malloc'd block of packed information and returns it's size based on the + information in the dpl_VIEW structure, the application should free this + block when done with the image. The second function expects to be passed + the memory address of a contiguous block of memory where the write is to + be made and the dimensions of the required image, specifying the start + position and image size allows a portion of the frame store to be copied + to memory. There should be enough information allocated in the memory + block for an image of the requested size to be written. Values for display + portions incompatible with the dpl_VIEW information will produce undefined + results. */ + +extern uint32 *dpl_GetFrameStore(dpl_VIEW *v, int32 *x, int32 *y); + +extern void dpl_ReadFrameStore(dpl_VIEW *v, uint32 *pixels, + int32 startx, int32 starty, int32 sizex, int32 sizey); + +/* Intersection Functions */ +/* Intersection functions are used to determine the point of intersection + between a vector and the database contents. Vectors may be specified in + world co-ordinates or as a position on the viewport of a dpl_VIEW. + Depending upon the intersect mode set for the database instance + intersected, some of the fields may not return valid values. */ + +extern dpl_INSTANCE *dpl_SectVector(float32, float32, float32, + float32, float32, float32, uint32, + float32 *, float32 *, float32 *, + dpl_DCS **, dpl_GEOGROUP **, dpl_GEOMETRY **); +extern dpl_INSTANCE *dpl_SectPixel(dpl_VIEW *, float32, float32, uint32, + float32 *, float32 *, float32 *, + dpl_DCS **, dpl_GEOGROUP **, dpl_GEOMETRY **); + +/* Special Effects */ + +/* Provision is made for special effects to be requested by an application. + The idea here is that common rendering effects which might eat bandwidth + to the renderer or prove difficult to code using dPL can be implemented + in the renderer and initiated with a single high level dPL request then + left to look pretty: fire and forget rendering effects. Only explosions + have been considered so far but this interface may be extended as new + requirements arise. */ + +/* request an effect of the desired type and here's the type specific data + for the effect */ + +extern void *dpl_Effect(dpl_EFFECT_TYPE e, dpl_DCS *d, void *data); + +/* ramp stuff */ + +extern void dpl_SetRampComponents(dpl_RAMP *ramp, + float32 r0, float32 g0, float32 b0, + float32 r1, float32 g1, float32 b1); + +extern void dpl_GetRampComponents(dpl_RAMP *ramp, + float32 *r0, float32 *g0, float32 *b0, + float32 *r1, float32 *g1, float32 *b1); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/CODE/RP/MUNGA_L4/libDPL/dpl/DPLTYPES.H b/CODE/RP/MUNGA_L4/libDPL/dpl/DPLTYPES.H new file mode 100644 index 0000000..65733b0 --- /dev/null +++ b/CODE/RP/MUNGA_L4/libDPL/dpl/DPLTYPES.H @@ -0,0 +1,387 @@ +/***************************************************************************** + + PROJECT: + dPL + + FILE: + dpltypes.h + + CONTENTS: + Public type definitions for the dPL library. + +*****************************************************************************/ + +#ifndef _DPL_TYPES_H +#define _DPL_TYPES_H + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* dpl_TYPE definitions are used as tokenised identifiers for the various + coarse dPL database elements. */ + +typedef enum dpl_TYPE +{ + dpl_type_error, + dpl_type_scene, + dpl_type_zones, + dpl_type_view, + dpl_type_instance, + dpl_type_dcs, + dpl_type_light, + dpl_type_object, + dpl_type_lod, + dpl_type_geogroup, + dpl_type_geometry, + dpl_type_material, + dpl_type_texture, + dpl_type_texmap, + dpl_type_ramp +} dpl_TYPE; + +/* dpl_LIGHT_TYPE definitions are light type tokens identifying the behaviour + of a particular dPL light. */ + +typedef enum dpl_LIGHT_TYPE +{ + dpl_light_type_error, + dpl_light_type_disable, + dpl_light_type_ambient, + dpl_light_type_directional, + dpl_light_type_point, + dpl_light_type_conical +} dpl_LIGHT_TYPE; + +/* dpl_GEO_TYPE indicates which form of data a geometry database element + represents. */ + +typedef enum dpl_GEO_TYPE +{ + dpl_geo_type_error, + dpl_geo_type_empty, + dpl_geo_type_tristrip, + dpl_geo_type_polystrip, + dpl_geo_type_polygon, + dpl_geo_type_pmesh, + dpl_geo_type_string, + dpl_geo_type_lines, + dpl_geo_type_polyline, + dpl_geo_type_polypoints, + dpl_geo_type_spheres +} dpl_GEO_TYPE; + +/* dpl_ISECT_MODE is used to determine how detailed an intersection + calculation is to be performed by the renderer for a given instance, + providing a means of controlling the amount of time taken to obtain + intersection information. */ + +typedef enum dpl_ISECT_MODE +{ + dpl_isect_mode_error, + dpl_isect_mode_obj, + dpl_isect_mode_geogroup, + dpl_isect_mode_geometry +} dpl_ISECT_MODE; + +/* dpl_MORPH_MODE selects a mode of interpolation between the low level + geometry. */ + +typedef enum dpl_MORPH_MODE +{ + dpl_morph_mode_error, + dpl_morph_mode_simple, + dpl_morph_mode_blend +} dpl_MORPH_MODE; + +/* dpl_TEX_PROP are the various properties of a texture which may be + manipulated to control a texmaps application over polygons. */ + +typedef enum dpl_TEX_PROP +{ + dpl_tex_prop_error, + dpl_tex_prop_spheremap, + dpl_tex_prop_wrap, + dpl_tex_prop_wrapu, + dpl_tex_prop_wrapv, + dpl_tex_prop_minfilter, + dpl_tex_prop_magfilter, + dpl_tex_prop_alpha, + dpl_tex_prop_detail, + dpl_tex_prop_reduce, + dpl_tex_prop_bitslice +} dpl_TEX_PROP; + +/* dpl_TEX_VALUE are the values which may be assigned to the texture property + fields in a texture elements. */ + +typedef enum dpl_TEX_VALUE +{ + dpl_tex_value_error, + dpl_tex_value_on, + dpl_tex_value_off, + dpl_tex_value_repeat, + dpl_tex_value_clamp, + dpl_tex_value_select, + dpl_tex_value_blend, + dpl_tex_value_cut, + dpl_tex_value_blendcut, + dpl_tex_value_point, + dpl_tex_value_bilinear, + dpl_tex_value_trilinear, + dpl_tex_value_bicubic, + dpl_tex_value_sharpen, + dpl_tex_value_mipmap_point, + dpl_tex_value_mipmap_linear, + dpl_tex_value_mipmap_bilinear, + dpl_tex_value_mipmap_trilinear, + dpl_tex_value_mipmap_quadlinear, + dpl_tex_value_slice_mode0, + dpl_tex_value_slice_mode1, + dpl_tex_value_slice_mode2, + dpl_tex_value_slice_mode3, + dpl_tex_value_slice_mode4, + dpl_tex_value_slice_mode5, + dpl_tex_value_slice_mode6, + dpl_tex_value_slice_mode7, + dpl_tex_value_slice_mode8 +} dpl_TEX_VALUE; + +/* dpl_RENDER_PROP specifies global rendering properties which may be set to + affect output in all views. */ + +typedef enum dpl_RENDER_PROP +{ + dpl_render_prop_error, + dpl_render_prop_wireframe, + dpl_render_prop_report, + dpl_render_prop_singlebuffer, + dpl_render_prop_framerate, + dpl_render_prop_antialias, + dpl_render_prop_windowed, + dpl_render_prop_textured, + dpl_render_prop_LODscale, + dpl_render_prop_phase +} dpl_RENDER_PROP; + +/* dpl_RENDER_VALUE defines the values which may be used to set the render + properties. */ + +typedef enum dpl_RENDER_VALUE +{ + dpl_render_value_error, + dpl_render_value_on, + dpl_render_value_off, + dpl_render_value_increase, + dpl_render_value_decrease, + dpl_render_value_lock, + dpl_render_value_float, + dpl_render_value_free, + dpl_render_value_limit +} dpl_RENDER_VALUE; + +/* dpl_VERTEX_TYPE definitions are light type tokens identifying the behaviour + of a particular dPL light. */ + +typedef enum dpl_VERTEX_TYPE +{ + dpl_vertex_type_error = 0x00, + dpl_vertex_coord = 0x01, + dpl_vertex_normal = 0x02, + dpl_vertex_rgba = 0x04, + dpl_vertex_luminance = 0x08, + dpl_vertex_texture2D = 0x10, + dpl_vertex_texture3D = 0x20, + dpl_vertex_radius = 0x40 +} dpl_VERTEX_TYPE; + +/* dpl_REORIENT_AXES may be combined with an OR operation to switch billboard + axes at DCS nodes. */ + +typedef enum dpl_REORIENT_AXES +{ + dpl_reorient_axes_none = 0x00, + dpl_reorient_axes_x = 0x01, + dpl_reorient_axes_y = 0x02, + dpl_reorient_axes_z = 0x04 +} dpl_REORIENT_AXES; + +/* dpl_EFFECT_TYPE definitions are used in high level requests for specific + types of effect from the dpl renderer. */ + +typedef enum dpl_EFFECT_TYPE +{ + dpl_effect_type_explosion, + dpl_effect_type_particlestart, + dpl_effect_type_particlestop, + dpl_effect_type_particle +} dpl_EFFECT_TYPE; + +/* dpl_WARN_LEVEL defines the various warning levels avaliable from the + renderer */ + +typedef enum dpl_WARN_LEVEL +{ + dpl_warn_fatal, + dpl_warn_warn, + dpl_warn_notice, + dpl_warn_info, + dpl_warn_debug, + dpl_warn_fp_debug +} dpl_WARN_LEVEL; + +/* dpl_FOG_TYPE defines the various types of fog which can be applied to + a dpl_VIEW, support for the various types is platform dependent */ +typedef enum dpl_FOG_TYPE +{ + dpl_fog_type_error, /* error (feedback from querry) */ + dpl_fog_type_off, /* turn off fog for view */ + dpl_fog_type_vertex_lin, /* apply linear fog per vertex */ + dpl_fog_type_vertex_exp, /* exponential fog */ + dpl_fog_type_vertex_exp2, /* exponential squared fog */ + dpl_fog_type_pixel_lin, /* apply linear fog per pixel */ + dpl_fog_type_pixel_exp, /* exponential fog */ + dpl_fog_type_pixel_exp2 /* exponential squared fog */ +} dpl_FOG_TYPE; + +typedef struct s_dpldcs dpl_DCS; + +typedef struct s_dplview dpl_VIEW; + +typedef struct s_dpllight dpl_LIGHT; + +typedef struct s_dplzone dpl_ZONE; + +typedef struct s_dplmtl dpl_MATERIAL; + +typedef struct s_dplramp dpl_RAMP; + +typedef struct s_dpltexture dpl_TEXTURE; + +typedef struct s_dpltexmap dpl_TEXMAP; + +typedef struct s_dplinstance dpl_INSTANCE; + +typedef struct s_dplobject dpl_OBJECT; + +typedef struct s_dpllod dpl_LOD; + +typedef struct s_dplgeogroup dpl_GEOGROUP; + +typedef struct s_dplgeometry dpl_GEOMETRY; + +typedef void *dpl_LOAD_FUNCTION(char8 *); + +typedef struct dpl_EXPLOSION_EFFECT_INFO { + float32 x, y, z; /* positional information */ + int32 type; /* existing explosion options */ + dpl_TEXTURE *tex; /* explosion texture */ +} dpl_EXPLOSION_EFFECT_INFO; + +typedef struct dpl_PARTICLESTART_EFFECT_INFO { + int32 identifier; /* the identifying tag of this effect */ + + int32 maximum_issue; /* maximum number to be released */ + float32 release_period; /* the period for which particles will be + released */ + float32 rate; /* the rate at which particles will be + released */ + + float32 px, py, pz, pv; /* position of release and radius of the + variation in position */ + + float32 velx, vely, velz; /* initial velocity of particles */ + float32 velxv, velyv, velzv; /* variation of particle velocity */ + + float32 rad, radv; /* size of particle radius and variation in + the particle radius */ + float32 exp, expv; /* rate of expansion and variation in that + rate */ + float32 dexp, dexpv; /* rate of change of expansion and variation + in that rate */ + + float32 accelx, accely, accelz; /* acceleration of particles */ + float32 accelxv, accelyv, accelzv;/* and its variation */ + float32 atten, attenv; /* resistance to particle motion and it's + variation*/ + + float32 sRi, sGi, sBi, sAi; /* start colour interior */ + float32 sRiv, sGiv, sBiv, sAiv; /* and its variation */ + float32 sRo, sGo, sBo, sAo; /* start colour exterior */ + float32 sRov, sGov, sBov, sAov; /* and its variation */ + + float32 eRi, eGi, eBi, eAi; /* end colour interior */ + float32 eRiv, eGiv, eBiv, eAiv; /* and its variation */ + float32 eRo, eGo, eBo, eAo; /* end colour exterior */ + float32 eRov, eGov, eBov, eAov; /* and its variation */ + + float32 colour_warp; /* a warp factor allowing the interpolation + of the above colours to be weighted towards + the beginning or end using a gamma function + 1.0 = no weighting */ + + float32 alpha_warp; /* a warp factor for alpha (as above) */ + + float32 dur, durv; /* duration and variation in duration of + particles */ + + dpl_TEXTURE *tex; /* particle texture (if supported) */ +} dpl_PARTICLESTART_EFFECT_INFO; + +typedef struct dpl_PARTICLESTOP_EFFECT_INFO { + int32 identifier; /* the identifying tag of all effects + you want to stop */ +} dpl_PARTICLESTOP_EFFECT_INFO; + +typedef struct dpl_PARTICLE_EFFECT_INFO { + float32 px, py, pz; /* position of release */ + float32 velx, vely, velz; /* initial velocity of particle */ + float32 rad; /* size of particle radius */ + float32 exp; /* rate of expansion */ + float32 dexp; /* rate of change of expansion and variation */ + + float32 accelx, accely, accelz; /* acceleration of particle */ + + float32 atten; /* resistance to particle motion */ + + float32 sRi, sGi, sBi, sAi; /* start colour interior */ + float32 sRo, sGo, sBo, sAo; /* start colour exterior */ + + float32 eRi, eGi, eBi, eAi; /* end colour interior */ + float32 eRo, eGo, eBo, eAo; /* end colour exterior */ + + float32 colour_warp; /* a warp factor allowing the interpolation + of the above colours to be weighted towards + the beginning or end using a gamma function + 1.0 = no weighting */ + + float32 alpha_warp; /* a warp factor for alpha (as above) */ + + float32 dur; /* duration of particle */ + + dpl_TEXTURE *tex; /* particle texture (if supported) */ +} dpl_PARTICLE_EFFECT_INFO; + +typedef struct dpl_STATISTICS { + float32 framerate; +} dpl_STATISTICS; + +typedef struct dpl_STATUS { + int32 state; +} dpl_STATUS; + +typedef struct dpl_CAPABILITY { + /* is textured rendering supported */ + int32 textured_rendering; + /* is texture font specification supported */ + int32 font_texture_update; +} dpl_CAPABILITY; + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/CODE/RP/MUNGA_L4/libDPL/dpl/DPLUTILS.H b/CODE/RP/MUNGA_L4/libDPL/dpl/DPLUTILS.H new file mode 100644 index 0000000..e0e54c2 --- /dev/null +++ b/CODE/RP/MUNGA_L4/libDPL/dpl/DPLUTILS.H @@ -0,0 +1,408 @@ +/* + * ---------------------------------------------------------------------------- + * + * Copyright 1994 Division Limited. + * All Rights Reserved + * + * + * System : + * Module : + * Object Name : $RCSfile: dplutils.h,v $ + * Revision : $Revision: 1.3 $ + * Date : $Date: 1995/05/19 09:23:43 $ + * Author : $Author: nga $ + * + * Description : + * + * Notes : + * + * History : + * + * $Log: dplutils.h,v $ + * Revision 1.3 1995/05/19 09:23:43 nga + * Added texture enable/disable functions. + * + * Revision 1.2 1995/04/26 20:09:51 nga + * Added "special" functions. + * + * Revision 1.1 1995/03/10 15:58:16 nga + * Initial revision + * + * ---------------------------------------------------------------------------- + */ + +#ifndef _DPLUTILS_H +#define _DPLUTILS_H + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * !!! - temporary definitions to make PP5 build. + */ + +#define dpl_SetExtnGeoLoadFunc dpl_SetExtnObjectLoadFunc +#define dpl_SetExtnTexLoadFunc dpl_SetExtnTexmapLoadFunc +#define dpl_b2zRead NULL + + +/* + * Types. + */ + +/* dPL load mode. */ +typedef enum +{ + dpl_load_normal = 0x00, + dpl_load_nocache = 0x01, + dpl_load_noload = 0x02, + dpl_load_noreference = 0x04 +} dpl_LOAD_MODE; + +/* dPL look up mode. */ +typedef enum +{ + dpl_lookup_normal = 0x00, + dpl_lookup_nocreate = 0x01, + dpl_lookup_define = 0x02, + dpl_lookup_noreference = 0x04 +} dpl_LOOKUP_MODE; + +/* dPL path type. */ +typedef enum +{ + dpl_path_system, + dpl_path_user, + dpl_path_offset +} dpl_PATH_TYPE; + +/* dPL create/delete callback function type. */ +typedef void (dpl_CREATE_DELETE_CALLBACK)(dpl_TYPE type, void *handle); + +/* dPL special callback function type. */ +typedef void (dpl_SPECIAL_CALLBACK)(dpl_TYPE type, void *handle, + char8 *special, uint32 special_len); + +/* dPL material name callback function type. */ +typedef char8 *(dpl_MATERIAL_NAME_CALLBACK)(char8 *mat_name); + + +/* + * Prototypes. + */ + +extern void +dpl_SetObjectFileCacheSize(uint32 size); + +extern uint32 +dpl_GetObjectFileCacheSize(void); + +extern void +dpl_SetTexmapFileCacheSize(uint32 size); + +extern uint32 +dpl_GetTexmapFileCacheSize(void); + +extern void +dpl_SetMaterialFileCacheSize(uint32 size); + +extern uint32 +dpl_GetMaterialFileCacheSize(void); + +extern void +dpl_SetMaterialItemCacheSize(uint32 size); + +extern uint32 +dpl_GetMaterialItemCacheSize(void); + +extern void +dpl_SetHandleCacheSize(uint32 size); + +extern uint32 +dpl_GetHandleCacheSize(void); + +/* Add a path to object search path. */ +extern void +dpl_AddToObjectFilePath(char8 *path, dpl_PATH_TYPE type); + +/* Set entire object search path. */ +extern void +dpl_SetObjectFilePath(char8 *sys_path, char8 *user_path, char8 *offset); + +/* Get entire object search path. */ +extern char8 * +dpl_GetObjectFilePath(void); + +/* Associate an extension with a object load function. */ +extern void +dpl_SetExtnObjectLoadFunc(char8 *extn, dpl_LOAD_FUNCTION *load_func); + +/* Get a load function associated with an extension. */ +extern dpl_LOAD_FUNCTION * +dpl_GetExtnObjectLoadFunc(char8 *e); + +/* Get object file extensions. */ +extern char8 * +dpl_GetObjectFileExtns(void); + +/* Add a path to texmap search path. */ +extern void +dpl_AddToTexmapFilePath(char8 *path, dpl_PATH_TYPE type); + +/* Set entire texmap search path. */ +extern void +dpl_SetTexmapFilePath(char8 *sys_path, char8 *user_path, char8 *offset); + +/* Get entire texmap search path. */ +extern char8 * +dpl_GetTexmapFilePath(void); + +/* Associate an extension with a texmap load function. */ +extern void +dpl_SetExtnTexmapLoadFunc(char8 *extn, dpl_LOAD_FUNCTION *load_func); + +/* Get a load function associated with an extension. */ +extern dpl_LOAD_FUNCTION * +dpl_GetExtnTexmapLoadFunc(char8 *e); + +/* Get texmap file extensions. */ +extern char8 * +dpl_GetTexmapFileExtns(void); + +/* Add a path to material search path. */ +extern void +dpl_AddToMaterialFilePath(char8 *path, dpl_PATH_TYPE type); + +/* Set entire material search path. */ +extern void +dpl_SetMaterialFilePath(char8 *sys_path, char8 *user_path, char8 *offset); + +/* Get entire material search path. */ +extern char8 * +dpl_GetMaterialFilePath(void); + +/* Set texture load enable. */ +void +dpl_SetTextureLoadEnable(int32 i); + +/* Get texture load enable. */ +int32 +dpl_GetTextureLoadEnable(void); + +/* Set detail texture load enable. */ +void +dpl_SetDetailTextureLoadEnable(int32 i); + +/* Get detail texture load enable. */ +int32 +dpl_GetDetailTextureLoadEnable(void); + + +/* + * Built-in load functions. + */ + +/* bgf object file reader. */ +extern void * +dpl_bgfRead(char8 *); + +/* vtx texmap file reader. */ +extern void * +dpl_vtxRead(char8 *); + +/* SGI texmap file reader. */ +extern void * +dpl_sgiRead(char8 *); + +/* TGA texmap file reader. */ +extern void * +dpl_tgaRead(char8 *); + + +/* + * Find file & perform the loading function, based on extension returning + * NULL where the load fails. + */ + +extern dpl_OBJECT * +dpl_LoadObject(char8 *fname, dpl_LOAD_MODE mode); + +extern void +dpl_UnloadObject(dpl_OBJECT *o); + +extern dpl_TEXMAP * +dpl_LoadTexmap(char8 *fname, dpl_LOAD_MODE mode); + +extern void +dpl_UnloadTexmap(dpl_TEXMAP *t); + + +/* + * dPL lookup functions. + */ + +extern dpl_MATERIAL * +dpl_LookupMaterial(char8 *name, dpl_LOOKUP_MODE mode, int32 *status); + +extern void +dpl_ReferenceMaterial(dpl_MATERIAL *m); + +extern void +dpl_UnreferenceMaterial(dpl_MATERIAL *m); + +extern char8 * +dpl_LookupMaterialName(dpl_MATERIAL *m); + +extern dpl_MATERIAL * +dpl_GetFirstMaterial(char8 **name); + +extern dpl_MATERIAL * +dpl_GetNextMaterial(char8 **name); + +extern dpl_TEXTURE * +dpl_LookupTexture(char8 *name, dpl_LOOKUP_MODE mode, int32 *status); + +extern void +dpl_ReferenceTexture(dpl_TEXTURE *t); + +extern void +dpl_UnreferenceTexture(dpl_TEXTURE *t); + +extern char8 * +dpl_LookupTextureName(dpl_TEXTURE *t); + +extern dpl_TEXTURE * +dpl_GetFirstTexture(char8 **name); + +extern dpl_TEXTURE * +dpl_GetNextTexture(char8 **name); + +extern dpl_RAMP * +dpl_LookupRamp(char8 *name, dpl_LOOKUP_MODE mode, int32 *status); + +extern void +dpl_ReferenceRamp(dpl_RAMP *r); + +extern void +dpl_UnreferenceRamp(dpl_RAMP *r); + +extern char8 * +dpl_LookupRampName(dpl_RAMP *r); + +extern dpl_RAMP * +dpl_GetFirstRamp(char8 **name); + +extern dpl_RAMP * +dpl_GetNextRamp(char8 **name); + +extern dpl_LOD * +dpl_LookupLod(dpl_OBJECT *object, char8 *name, dpl_LOOKUP_MODE mode, + int32 *status); + +extern void +dpl_ReferenceLod(dpl_LOD *l); + +extern void +dpl_UnreferenceLod(dpl_LOD *l); + +extern char8 * +dpl_LookupLodName(dpl_LOD *l); + +extern dpl_LOD * +dpl_GetFirstLod(char8 **name); + +extern dpl_LOD * +dpl_GetNextLod(char8 **name); + +extern dpl_GEOGROUP * +dpl_LookupGeogroup(dpl_OBJECT *object, char8 *name, dpl_LOOKUP_MODE mode, + int32 *status); + +extern void +dpl_ReferenceGeogroup(dpl_GEOGROUP *g); + +extern void +dpl_UnreferenceGeogroup(dpl_GEOGROUP *g); + +extern dpl_GEOGROUP * +dpl_GetFirstGeogroup(char8 **name); + +extern dpl_GEOGROUP * +dpl_GetNextGeogroup(char8 **name); + +extern char8 * +dpl_LookupGeogroupName(dpl_GEOGROUP *g); + +extern char8 * +dpl_LookupGeogroupSpecial(dpl_GEOGROUP *g, uint32 *len); + +extern char8 * +dpl_LookupObjectFileName(dpl_OBJECT *o); + +extern char8 * +dpl_LookupObjectName(dpl_OBJECT *o); + +extern char8 * +dpl_LookupObjectSpecial(dpl_OBJECT *o, uint32 *len); + +extern char8 * +dpl_LookupTexmapFileName(dpl_TEXMAP *t); + + +/* + * dPL callback function. + */ + +extern void +dpl_SetCreateNodeCallback(dpl_CREATE_DELETE_CALLBACK *func); + +extern dpl_CREATE_DELETE_CALLBACK * +dpl_GetCreateNodeCallback(void); + +extern void +dpl_SetDeleteNodeCallback(dpl_CREATE_DELETE_CALLBACK *func); + +extern dpl_CREATE_DELETE_CALLBACK * +dpl_GetDeleteNodeCallback(void); + +extern void +dpl_SetSpecialCallback(dpl_SPECIAL_CALLBACK *func); + +extern dpl_SPECIAL_CALLBACK * +dpl_GetSpecialCallback(void); + +extern void +dpl_SetMaterialNameCallback(dpl_MATERIAL_NAME_CALLBACK *func); + +extern dpl_MATERIAL_NAME_CALLBACK * +dpl_GetMaterialNameCallback(void); + + +/* + * dPL error and warning message function. + */ + +extern void +dpl_SetWarnLogFile(FILE *fp); + +extern void +dpl_Warn(dpl_WARN_LEVEL l, char8 *format, ...); + + +/* + * dPL Utilities version. + */ + +extern char8 * +dpl_UtilsVersion(void); + +#ifdef __cplusplus +} +#endif + + +#endif /* _DPLUTILS_H */ diff --git a/CODE/RP/MUNGA_L4/libDPL/dpl/DPL_2D.H b/CODE/RP/MUNGA_L4/libDPL/dpl/DPL_2D.H new file mode 100644 index 0000000..76259c5 --- /dev/null +++ b/CODE/RP/MUNGA_L4/libDPL/dpl/DPL_2D.H @@ -0,0 +1,123 @@ +#ifndef dpl_2d_h +#define dpl_2d_h +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#define WORDS_PER_DISPLAY_CHUNK 30 + +typedef struct s_dpl2d_display { + void *remote; + struct s_dpl2d_display *next; + struct s_dpl2d_display *tail; + int32 size; + int32 open; + int32 data[WORDS_PER_DISPLAY_CHUNK]; +} dpl2d_DISPLAY; + +typedef enum dpl2d_OPEN_MODE +{ + dpl2d_open_mode_error, + dpl2d_open_mode_clear, + dpl2d_open_mode_append +} dpl2d_OPEN_MODE; + +typedef enum dpl2d_CLIP_MODE +{ + dpl2d_clip_mode_error, + dpl2d_clip_mode_OR, + dpl2d_clip_mode_AND, + dpl2d_clip_mode_XOR, + dpl2d_clip_mode_SET, + dpl2d_clip_mode_CLEAR +} dpl2d_CLIP_MODE; + +typedef int32 *dpl_2d_snapshot; + +typedef float32 dpl2d_MATRIX [6]; + +/* displaylist creation, destruction */ + +extern dpl2d_DISPLAY *dpl2d_NewDisplayList ( void ); + +extern int32 dpl2d_DeleteDisplayList ( dpl2d_DISPLAY *display ); + +extern int32 dpl2d_OpenDisplayList ( dpl2d_DISPLAY *display, dpl2d_OPEN_MODE append ); + +extern int32 dpl2d_CloseDisplayList ( dpl2d_DISPLAY *display ); + +extern int32 dpl2d_FlushDisplayList ( dpl2d_DISPLAY *display ); + +extern int32 dpl2d_AddOpenPolyline ( dpl2d_DISPLAY *display ); + +extern int32 dpl2d_AddClosePolyline ( dpl2d_DISPLAY *display ); + +extern int32 dpl2d_AddOpenLines ( dpl2d_DISPLAY *display ); + +extern int32 dpl2d_AddCloseLines ( dpl2d_DISPLAY *display ); + +extern int32 dpl2d_AddOpenPolypoint ( dpl2d_DISPLAY *display ); + +extern int32 dpl2d_AddClosePolypoint ( dpl2d_DISPLAY *display ); + +extern int32 dpl2d_AddPoint ( dpl2d_DISPLAY *display, float32 x, float32 y ); + +extern int32 dpl2d_AddCircle( dpl2d_DISPLAY *display, float32 x, float32 y, float32 r, int32 filled ); + +extern int32 dpl2d_AddPushState ( dpl2d_DISPLAY *display ); + +extern int32 dpl2d_AddPopState ( dpl2d_DISPLAY *display ); + +extern int32 dpl2d_AddSetColor ( dpl2d_DISPLAY *display, float32 r, float32 g, float32 b ); + +extern int32 dpl2d_AddSetAlpha ( dpl2d_DISPLAY *display, float32 a ); + +extern int32 dpl2d_AddSetMatrix ( dpl2d_DISPLAY *display, dpl2d_MATRIX ); + +extern int32 dpl2d_AddConcatMatrix ( dpl2d_DISPLAY *display, dpl2d_MATRIX, int32 post ); + +extern int32 dpl2d_AddSetLineWidth ( dpl2d_DISPLAY *display, + float32 w ); + +/* clip region support */ +extern int32 dpl2d_AddFullScreenClipRegion ( dpl2d_DISPLAY *display ); + +extern int32 dpl2d_AddClearClipRegion ( dpl2d_DISPLAY *display ); + +extern int32 dpl2d_AddOpenClipPolygon ( dpl2d_DISPLAY *display ); + +extern int32 dpl2d_AddCloseClipPolygon ( dpl2d_DISPLAY *display, + dpl2d_CLIP_MODE mode ); + +extern int32 dpl2d_AddClipCircle ( dpl2d_DISPLAY *display, + float32 x, float32 y, float32 rad, + dpl2d_CLIP_MODE mode ); + + +extern int32 dpl2d_AddCallDisplayList ( dpl2d_DISPLAY *display, + dpl2d_DISPLAY *sub_display ); + +extern int32 dpl2d_SetViewDisplayList ( dpl_VIEW *v, dpl2d_DISPLAY *disp ); + +extern dpl2d_DISPLAY *dpl2d_GetViewDisplayList ( dpl_VIEW *v ); + +/* and now the 2-D matrix support */ + +extern void dpl2d_IdMatrix ( dpl2d_MATRIX m ); +extern void dpl2d_TranslateMatrix ( dpl2d_MATRIX m, + float32 x, float32 y ); +extern void dpl2d_RotateMatrix ( dpl2d_MATRIX m, + float32 angle ); +extern void dpl2d_ScaleMatrix ( dpl2d_MATRIX m, + float32 sx, float32 sy ); +extern void dpl2d_ConcatMatrix ( dpl2d_MATRIX m, + dpl2d_MATRIX a, + dpl2d_MATRIX b ); + +#ifdef __cplusplus +} +#endif +#endif + diff --git a/CODE/RP/MUNGA_L4/libDPL/dpl/DPL_PRIV.H b/CODE/RP/MUNGA_L4/libDPL/dpl/DPL_PRIV.H new file mode 100644 index 0000000..3160f04 --- /dev/null +++ b/CODE/RP/MUNGA_L4/libDPL/dpl/DPL_PRIV.H @@ -0,0 +1,531 @@ +#ifndef dpltyp_h +#define dpltyp_h +#ifdef __cplusplus +extern "C" { +#endif + +/* ************************************************** + + Copyright DIVISION Limited (c) 1994 + All rights reserved + + + File : dpltypes.h + Project : dpl interface + Author : PJA + Date : 18/6/94 + + Function: Flesh out all the datatypes + + History : Rev 1.0, 18 / 06 / 1994 + 1.1, 22 / 06 / 1994 fixed unimplementable lists by + introducing dpl_superlist + 1.2, 27 / 06 / 1994 dislocated heirarchy from instances + and dropped back to matrix-only DCS + 2.0 16 / 11 / 1994 angusification started + + **************************** */ + +#include +#include + +#define OFF_SITE 1 + +#ifdef i860 +#define REMOTE 1 +#endif + +#define dpl_arg_sep '~' + +#define dcs_node_enable 0x1 +#define dcs_subtree_enable 0x2 +#define dcs_no_view_concat 0x4 + +#define dcs_billboard_x 0x8 +#define dcs_billboard_y 0x10 +#define dcs_billboard_z 0x20 +#define dcs_explode_geo 0x40 +#define dcs_ignore_geo 0x80 + +#define dcs_inherit_lmodel 0x100 +#define dcs_force_eval_lmodel 0x200 +#define dcs_near_field 0x400 +#define dcs_bounded 0x800 +#define dcs_backwards 0x1000 +#define dcs_uniform_scale 0x2000 + +#define dpl_draw_faceted 0x0000 +#define dpl_draw_smooth 0x0001 +#define dpl_draw_colored 0x0002 +#define dpl_draw_luminance 0x0004 +#define dpl_draw_textured 0x0008 +#define dpl_draw_3dtextured 0x0010 +#define dpl_draw_front 0x0200 +#define dpl_draw_back 0x0400 +#define dpl_draw_edges 0x0800 +#define dpl_draw_wireframe 0x1000 +#define dpl_draw_last 0x2000 +#define dpl_draw_envmapped 0x4000 +#define dpl_draw_flipped 0x8000 +#define dpl_draw_f_emissive 0x0020 +#define dpl_draw_b_emissive 0x0040 + +#define dpl_X 0 +#define dpl_Y 1 +#define dpl_Z 2 +#define dpl_W 3 + +#ifdef _DOS +#define dpl_path_separator '\\' +#else +#define dpl_path_separator '/' +#endif + +/* + NOTE in rpc implementations, the rather large overhead + of the dpl_node dplnode is never passed over to the + remote renderer, its just in the host space for management +*/ + +typedef struct s_dplnode* (*node_create_function)( void ); + +typedef struct s_dplnode { + int32 clean; + void *app_specific; + void *remote; /* this MUST be 1st word of REMOTE data */ + dpl_TYPE type_check; +} dpl_node; + +typedef struct s_dplremote_node { + void *remote; + dpl_TYPE type_check; +} dpl_remote_node; + +#ifdef REMOTE +#define dpl_node dpl_remote_node +#endif + +typedef struct s_dpl_chain_node { + dpl_node node; + struct s_dpl_chain_node *next_node; + struct s_dpldcs *dcs; +} dpl_chain_node; + +typedef int32 (*load_function)( dpl_node *, char * ); + +typedef struct s_dpllist { + dpl_node *item; + dpl_TYPE type_check; + struct s_dpllist *next; + struct s_dpllist *prev; +} dpl_list; + +/* + the dpl_superlist is used as the head node for + dpl_lists +*/ + +typedef struct s_dplsuperlist { + dpl_node *dplnode; + + dpl_list *last_accessed; + dpl_list *head; + dpl_list *tail; +} dpl_superlist; + +typedef float32 dpl_POINT [4]; +typedef float32 dpl_MATRIX[4][4]; + +typedef union { + double dbl_MATRIX[8]; + dpl_MATRIX matrix; +} dpl_dblMATRIX; + +/* introduce local datatypes */ + + +/* + +The renderer is currently blowing off way too much storage on the card, +which stands to sense when each polygon is around 144 bytes, 80 bytes for the +vertex and 64 for the connection structure. The currently unused datatypes +below will eventually attempt to buy back a lot of storage by moving away +from linked lists and towards packed structures + +*/ + + +typedef struct s_rvert { + dpl_POINT position; /* 0 */ + dpl_POINT normcol; /* 16 */ + float32 texcoords [3]; /* 32 */ + struct s_rvert *next; /* 44 */ + dpl_POINT xform_posn; /* 48 */ + float32 rendered_color[3]; /* 64 */ + int32 touched; /* 76 */ +} dpl_VERTEX; + +typedef struct s_conn { + struct s_conn *next; /* 0 */ + int32 n_verts; /* 4 */ + dpl_VERTEX* indices[6]; /* 8 */ + dpl_POINT planeEqn; /* 32 */ + float32 rendered_color[3]; /* 48 */ + int32 touched; /* 60 */ +} dpl_CONNECTION; + + +/* we will only use this structure for polys, not spheres, + so the W-coordinate (radius) holds the touched word + */ + +typedef struct s_ivert { + float32 position[3]; /* 3 */ + int32 touched; /* 4 */ + dpl_POINT normcol; /* 8 */ + float32 texcoords [2]; /* 10 total = 40 bytes */ +} dpl_idealVERTEX; + +typedef struct s_iconn { + dpl_POINT planeEqn; /* 4 */ + dpl_idealVERTEX* indices[6]; /* 10 */ +} dpl_idealCONNECTION; /* total 40 bytes */ + +typedef struct s_oconn { + float planeEqn[3]; + int touched; + int indices[6]; +} dpl_outputCONNECTION; /* total 40 bytes */ + + +/* + it looks like we can drop polygon storage down to 80 bytes + per poly, rather than 144, so we can achieve around 80% more + database storage + + the assumption is that we use connection[3] == NULL as the triangle + spotter. is this iffy? it lets us keep hexes for performance. + + planeEqn[3] = touched for output conns, so we have 32 bytes, giving + a 72 byte triangle and _doubling_ storage. + + in order to make this work, we will need a single PMESH of worst-case + size hanging round in memory. So xforming and lighting will no longer + happen in-place, but the destination for the work will always be the + same area of memory. So we'll get better cache and page coherence. + + It is recommended that we drop PMESH size from 6 to 4. + + The VERTEX pointers in the connection structure must now become + byte indices, so we just add on the base address of the VERTEX + structure. + + The only problem is special effects - the sphere effects are just dealt + with by keeping spherelists in the old vertex format; triangle effects + may be more difficult to deal with. + + */ + + + +/* flesh out the datatypes in dpltypes.h */ + +#if 0 +struct s_dpl_statistics { + float32 polys_in_last_frame; + float32 last_edit_time; + float32 last_cull_time; + float32 last_frame_time; + float32 last_frame_time_sb; + float32 polys_per_second; + float32 polys_per_second_sb; +} dpl_STATISTICS; + +#endif + +struct s_dpldcs { + dpl_node dplnode; + dpl_chain_node *nodes; + struct s_dplzone *zone; + dpl_MATRIX matrix; + int32 traversal; /* overload billboards in here for compactness */ + struct s_dpldcs *parent; + struct s_dpldcs *sibling; + struct s_dpldcs *child; + int32 lighting_mask; + dpl_POINT bounds[2]; +#ifdef REMOTE + dpl_dblMATRIX invModel; + float sphere_scale, sphere_big_scale; +#endif +} ; +struct s_dplzone { + dpl_node dplnode; + + int32 view_enable; +} ; +struct s_dplview { + dpl_chain_node dplnode; + + int32 view_id; + int32 pipe; + float32 x0, y0, x1, y1, zeye; + float32 x_size, y_size; + float32 hither_clip; + float32 yon_clip; + float32 back_color[3]; + int32 fog_enable; + float32 fog[5]; /* near, phar, r, g, b */ + struct s_dplview *share_view; + void *display_2d; +} ; +struct s_dpllight { + dpl_chain_node dplnode; + + dpl_LIGHT_TYPE light_type; + float32 color [3]; + float32 radius [2]; /* for radial lights */ + float32 umbra [2]; /* for conical lights */ + int32 lighting_mask; +#ifdef REMOTE + float32 position[3]; +#endif +}; +struct s_dpltexture { + dpl_node dplnode; + + struct s_dpltexmap *texmap; + + int32 minify; + int32 magnify; + int32 alpha; + int32 wrap_u; + int32 wrap_v; + int32 detail; + float32 u0; + float32 v0; + float32 du; + float32 dv; + float32 animate_time; + int32 bitslice; + int32 delta_size; + int32 delta_offs; +}; +struct s_dpltexmap { + dpl_node dplnode; + + int32 *texels; + int32 u_size; + int32 v_size; + int32 bits_per_texel; + int32 alpha; +#ifdef REMOTE + int32 hwareSize; + int32 hwareOffs; + int32 bilinear; + void *cell; +#endif +}; +struct s_dplmtl { + dpl_node dplnode; + + struct s_dpltexture *texture; + struct s_dpltexture *environment; + int32 immunity; + struct s_dplramp *ramp; + float32 emissive [3]; + float32 ambient [3]; + float32 diffuse [3]; + float32 opacity [3]; + float32 specular [4]; + float32 dither; +#ifdef REMOTE + float surf_opacity; + float *specular_table; + int32 pxpl5_cntl_word; + float du, dv; + float alpha_c, alpha_r; + int32 alpha_texture; + int32 cull_frame; +#endif +}; +struct s_dplramp { + dpl_node dplnode; + + float32 color0 [3]; + float32 color1 [3]; + int32 cntl_word; +}; +struct s_dplinstance { + dpl_chain_node dplnode; + + dpl_ISECT_MODE intersectmode; + int32 visibility; + struct s_dplobject *object; + struct s_dpllod *forcelod; + struct s_dplmtl *f_material; + struct s_dplmtl *b_material; + int32 intersect_mask; + int32 wireframe; +#ifdef REMOTE + int32 frame_count; + int32 last_LOD_index; +#endif +}; +#define MAX_LODS_PER_OBJECT 16 + +struct s_dplobject { + dpl_node dplnode; + + dpl_superlist lod_list; + dpl_POINT lod_hot_spot; + float32 lod_ranges[MAX_LODS_PER_OBJECT]; + float32 lod_fade_range; + int32 invalid_lods; + int32 clone; +#ifdef REMOTE + int32 lod_count; + float32 bounds[2][4]; + dpl_POINT sphere_bounds; +#endif +}; +struct s_dpllod { + dpl_node dplnode; + + float32 bounds[2][4]; + struct s_dplobject *parent; + dpl_superlist geogroup_list; + float32 hot_spot[3]; +#ifdef REMOTE + dpl_POINT sphere_bounds; +#endif +}; +struct s_dplgeogroup { + dpl_node dplnode; + + float32 bounds[2][4]; + struct s_dpllod *parent; + int32 draw_mode; + dpl_superlist geometry_list; + struct s_dplmtl *f_material; + struct s_dplmtl *b_material; + float32 decal_offs; + int32 lock; +#ifdef REMOTE + dpl_POINT sphere_bounds; + int32 clean; +#endif +}; +struct s_dplgeometry { + dpl_node dplnode; + + dpl_GEO_TYPE geometry_type; + dpl_VERTEX_TYPE vertex_type; + int32 num_vertices; + struct s_dplgeogroup *parent; + dpl_CONNECTION *connections; + dpl_VERTEX *vertices; + float lineWidth, pointSize; + +#ifdef REMOTE + int32 variable_alpha; + int32 n_connections; + int32 n_vertices; + dpl_CONNECTION *connection_tail; + dpl_VERTEX *vertex_tail; + int32 packed; +#endif + +}; +#if 0 +struct s_dpl_status { + int32 ok; +} dpl_STATUS; +#endif + + +/* ****************************************** + + BEWARE ! ! ! ! ! + + FOR REASONS OF STORAGE AND APPLICATIONS EFFICIENCY, THE FOLLOWING + DATA TYPES ARE N O T SUPERSETS OF DPL_NODE + + BE CAREFUL DEALING WITH VERTICES + +*/ + +/* typedefs for tracing performance */ + +typedef struct s_dpl_version { + int32 host; + int32 major_version; + int32 minor_version; + int32 firmware_major_version; + int32 firmware_minor_version; + char detailed[256]; +} dpl_VERSION; + +/* ********************************************************** + a scene contains a list of root-node dcs's, a list of zones + and a list of views + */ + +typedef struct s_dplscene { + dpl_node dplnode; + + dpl_superlist zone_list; + dpl_superlist view_list; + dpl_superlist dcs_list; + dpl_superlist light_list; +} dpl_SCENE; + +typedef enum { + dpl_artic_matrix, + dpl_artic_singleX, + dpl_artic_singleY, + dpl_artic_singleZ, + dpl_artic_quaternion +} dpl_ARTICULATION; + +/* additional geometry types - keep small for switch optim */ + +#define vpx_geo_type_f_t_dam 16 +#define vpx_geo_type_sca 17 +#define vpx_geo_type_undamage 18 +#define vpx_geo_type_f_t_undam 19 +#define vpx_geo_type_damage_set 20 + +#define dpl_morph_vertices 0x1 +#define dpl_morph_normals 0x2 +#define dpl_morph_texcoords 0x4 +#define dpl_morph_colors 0x8 + + + +typedef void (*vfptr)(); + +extern void * +dpl_svtRead(char8 *, int32 bilinear ); + +extern void * +dpl_bilRead(char8 *); + +extern void * +dpl_glmRead(char8 *); + +extern void +dpl_explodeTexels ( dpl_TEXMAP *tm, + int32 *dest_texels, + uint8 *src_texels, + int32 n_texels, + int32 start, int32 bilinear ); + + +#define POLY_FBITS 12 +#define SPHERE_FBITS 24 + +#ifdef __cplusplus +} +#endif +#endif diff --git a/CODE/RP/MUNGA_L4/libDPL/dpl/DPL_VPX.H b/CODE/RP/MUNGA_L4/libDPL/dpl/DPL_VPX.H new file mode 100644 index 0000000..9c88d95 --- /dev/null +++ b/CODE/RP/MUNGA_L4/libDPL/dpl/DPL_VPX.H @@ -0,0 +1,220 @@ +#ifndef dpl_vpx_h +#define dpl_vpx_h + +#ifdef __cplusplus +extern "C" { +#endif + +#define VPX 1 +#include + +extern void +dpl_SetDeferredDeletes ( int32 d ); + +extern void +dpl_SetTextureScroll ( dpl_TEXTURE *t, float u, float v, float du, float dv ); + +extern void +dpl_SetGeomScaleFactor ( float32 geomscale ); + +extern void +dpl_SetDCSTraversal ( dpl_DCS *d, int32 trav ); + +extern void dpl_SetDCSXAxis ( dpl_DCS *d, float32 sin, float32 cos ); +extern void dpl_SetDCSYAxis ( dpl_DCS *d, float32 sin, float32 cos ); +extern void dpl_SetDCSZAxis ( dpl_DCS *d, float32 sin, float32 cos ); + +extern void +dpl_SetDCSQuaternion ( dpl_DCS *d, float32 *quaternion_stuff, float32 *xlate ); + +extern void +dpl_FlushDCSArticulations ( dpl_DCS **d ); + +extern void +dpl_SetObjectAdditiveLODs ( dpl_OBJECT *o ); + +extern void +dpl_SetMaterialDitherZ ( dpl_MATERIAL *m, float32 dither ); + +extern void +dpl_install_sfx ( int32 sfx_code, + dpl_TEXTURE *t, + int32 bang_type, + float frag_size, + float frag_velocity, + float vertical_bias, + float switch_off, + float cook_r, + float cook_g, + float cook_b, + float variance, + float gravity, + float cool, + float opacity_cool, + int32 fragments, + int32 iterations, + int32 immunity ); + +extern void +dpl_SetMaterialFogImmunity ( dpl_MATERIAL *m, int32 immunity ); + +extern void dpl_SetDCSExplodeGeo ( dpl_DCS *d, int32 on ); +extern void dpl_SetDCSIgnoreGeo ( dpl_DCS *d, int32 on ); +extern void dpl_SetDCSInheritLmodel ( dpl_DCS *d, int32 on ); +extern void dpl_SetDCSForceEvalLmodel ( dpl_DCS *d, int32 on ); + +extern void dpl_Damagize ( dpl_GEOGROUP *, dpl_MATERIAL *); +extern void dpl_UnDamagize ( dpl_GEOGROUP * ); +extern void dpl_Punchize ( dpl_GEOGROUP * ); +extern void dpl_Geometrize ( dpl_GEOMETRY *, int32 triangle_code ); + +extern dpl_INSTANCE * +dpl_RapidSectPixel ( float32 xp, float32 yp, + float32 radius, + uint32 mask, + float32 *xi, float32 *yi, float32 *zi, + dpl_DCS **d, dpl_GEOGROUP **gg, dpl_GEOMETRY ** g); + +extern void +dpl_RandomTable ( char *table ); + +extern int32 * +dpl_TouchNode ( int32 *list, void *n ); + +extern int32 +dpl_FlushNodes ( int32 *list ); + +extern void +dpl_SetMinRetraces ( int32 retraces ); + +extern void +dpl_KillEffectAtDCS ( dpl_DCS *dcs ); + +void +dpl_KillParticlefxRange ( int32 min, int32 max ); + +extern void +dpl_RedrawScene ( void ); + +extern void +dpl_PutAppSpecific ( void *node, void *app_specific ); + +extern void* +dpl_GetAppSpecific ( void *node ); + +extern void +dpl_MorphObject ( dpl_OBJECT *dest, + dpl_OBJECT *start, + dpl_OBJECT *end, + float32 alpha, + int32 morph_mode ); +extern void +dpl_MorphGeometry ( dpl_GEOMETRY *dest, + dpl_GEOMETRY *start, + dpl_GEOMETRY *end, + float32 alpha, + int32 morph_mode ); +extern void +dpl_MorphMaterial ( dpl_MATERIAL *dest, + dpl_MATERIAL *start, + dpl_MATERIAL *end, + float32 alpha, + int32 morph_mode ); + +extern void +dpl_TimedMorphObject ( dpl_OBJECT *dest, + dpl_OBJECT *start, + dpl_OBJECT *end, + float32 time, + int32 morph_mode, + float32 a, + float32 b, + float32 c, + float32 d ); +extern void +dpl_TimedMorphMaterial ( dpl_MATERIAL *dest, + dpl_MATERIAL *start, + dpl_MATERIAL *end, + float32 time, + int32 morph_mode, + float32 a, + float32 b, + float32 c, + float32 d ); + + +extern void dpl_SFXTexels2D ( dpl_TEXMAP *tm, + uint32 *texels ); + +extern void dpl_FakeTextureSize ( dpl_TEXTURE *t, int32 delta_size, int32 delta_offs ); + +extern void dpl_SetDCSLightingMask ( dpl_DCS *d, int32 mask ); +extern int32 dpl_GetDCSLightingMask ( dpl_DCS *d ); + +extern void dpl_SetLightLightingMask ( dpl_LIGHT *d, int32 mask ); +extern int32 dpl_GetLightLightingMask ( dpl_LIGHT *d ); + +extern void dpl_SetDCSNearField ( dpl_DCS *d, int32 on ); + +extern int32 +dpl_FreeMemory ( void ); + +extern int +dpl_bslReplace ( char8 *name, dpl_TEXTURE *tex ); + +extern void +dpl_tgaReplace(char8 *file, dpl_TEXTURE *tex ); + +extern void +dpl_DisableSyncOnCreate ( void ); + +extern void +dpl_EnableSyncOnCreate ( void ); + +extern void +dpl_SetDCSBound(dpl_DCS *d, float *minimax ); + +extern float32 +dpl_GetDCSBound(dpl_DCS *d ); + +extern void +dpl_PerfStats ( void ); + +extern void +dpl_SetLodStress ( float32 s ); + +extern +void dpl_SetGeogroupDrawLast(dpl_GEOGROUP *gg, int32 last_on); + +extern +int32 dpl_GetGeogroupDrawLast(dpl_GEOGROUP * gg); + +extern +void dpl_GetObjectBounds( dpl_OBJECT *o, float32 *b ); + +int32 +dpl_GetGeometryNumConnections(dpl_GEOMETRY *g ); + +void +dpl_GetGeometryConnections ( dpl_GEOMETRY *g, + int32 *v, + int32 offset, + int32 n ); + + +extern void +dpl_SetGeometryShadowVolume ( dpl_GEOMETRY *g ); + +extern void +dpl_SetGeometryLightVolume ( dpl_GEOMETRY *g, int imm ); + +extern void +dpl_CleanupGeogroup ( dpl_GEOGROUP *gg, int renorm_facets ); + +extern void +dpl_ReInit(void); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/CODE/RP/MUNGA_L4/libDPL/dpl/MATRIX.H b/CODE/RP/MUNGA_L4/libDPL/dpl/MATRIX.H new file mode 100644 index 0000000..593d92c --- /dev/null +++ b/CODE/RP/MUNGA_L4/libDPL/dpl/MATRIX.H @@ -0,0 +1,47 @@ +#ifndef matrix_h +#define matrix_h +#ifdef __cplusplus +extern "C" { +#endif + +/* ************************************************** + + Copyright DIVISION Limited (c) 1994 + All rights reserved + + + File : dpl.h + Project : dpl interface + Author : PJA + Date : 18/6/94 + + Function: Introduces all the datatypes and functions + used by the dpl interface + + History : Rev 1.0, 18 / 06 / 1994 + +**************************** */ + +#include +#include +#include + +extern void dpl_SetAngleMode( int degrees ); +extern void dpl_IdMatrix ( dpl_MATRIX m ); +extern void dpl_Translate ( dpl_MATRIX m, float32 dx, float32 dy, float32 dz ); +extern void dpl_Rotate ( dpl_MATRIX m, float32 angle, int32 axis ); +extern void dpl_Scale ( dpl_MATRIX m, float32 x, float32 y, float32 z ); +extern void dpl_Concat ( dpl_MATRIX m, dpl_MATRIX a, dpl_MATRIX b ); +extern void dpl_Invert ( dpl_MATRIX inverse, dpl_MATRIX mat ); +extern void dpl_XformPoint ( dpl_POINT q, dpl_POINT p, dpl_MATRIX m ); + +extern void dpl_IdMatrixDCS ( dpl_DCS *d ); +extern void dpl_TranslateDCS ( dpl_DCS *d, float32 dx, float32 dy, float32 dz ); +extern void dpl_RotateDCS ( dpl_DCS *d, float32 angle, int32 axis ); +extern void dpl_ScaleDCS ( dpl_DCS *d, float32 x, float32 y, float32 z ); + + +#ifdef __cplusplus +} +#endif +#endif diff --git a/CODE/RP/MUNGA_L4/libDPL/dpl/vpx/DPL2DTAG.H b/CODE/RP/MUNGA_L4/libDPL/dpl/vpx/DPL2DTAG.H new file mode 100644 index 0000000..5987cd5 --- /dev/null +++ b/CODE/RP/MUNGA_L4/libDPL/dpl/vpx/DPL2DTAG.H @@ -0,0 +1,33 @@ +#ifndef dpl_2dtag_h +#define dpl_2dtag_h + +typedef enum { + dpl2d_open_polyline, + dpl2d_close_polyline, + dpl2d_open_polypoint, + dpl2d_close_polypoint, + dpl2d_open_polygon, + dpl2d_close_polygon, + dpl2d_open_lines, + dpl2d_close_lines, + dpl2d_point, + dpl2d_circle, + + dpl2d_open_clip_polygon, + dpl2d_close_clip_polygon, + dpl2d_clip_circle, + dpl2d_clip_full, + dpl2d_clip_none, + + dpl2d_set_drawcolor, + dpl2d_set_matrix, + dpl2d_concat_matrix, + dpl2d_push_state, + dpl2d_pop_state, + + dpl2d_call_displaylist, + dpl2d_set_linewidth, + dpl2d_set_alpha +} dpl_2d_tag; + +#endif diff --git a/CODE/RP/MUNGA_L4/libDPL/dpl/vpx/DPL_MEM.H b/CODE/RP/MUNGA_L4/libDPL/dpl/vpx/DPL_MEM.H new file mode 100644 index 0000000..a41f650 --- /dev/null +++ b/CODE/RP/MUNGA_L4/libDPL/dpl/vpx/DPL_MEM.H @@ -0,0 +1,24 @@ +#ifndef dpl_mem_h +#define dpl_mem_h + +#ifdef __cplusplus +extern "C" { +#endif + +extern void *dpl_malloc ( int n_bytes ); +extern void *dpl_calloc ( size_t n, size_t size ); +extern void dpl_free ( void *ptr ); +extern void dpl_free_all ( void ); + +extern void dpl_tracemem ( void ); + +#ifndef dpl_mem_c +#define free dpl_free +#define malloc dpl_malloc +#define calloc dpl_calloc +#endif + +#ifdef __cplusplus +} +#endif +#endif diff --git a/CODE/RP/MUNGA_L4/libDPL/dpl/vpx/MATRIX.H b/CODE/RP/MUNGA_L4/libDPL/dpl/vpx/MATRIX.H new file mode 100644 index 0000000..593d92c --- /dev/null +++ b/CODE/RP/MUNGA_L4/libDPL/dpl/vpx/MATRIX.H @@ -0,0 +1,47 @@ +#ifndef matrix_h +#define matrix_h +#ifdef __cplusplus +extern "C" { +#endif + +/* ************************************************** + + Copyright DIVISION Limited (c) 1994 + All rights reserved + + + File : dpl.h + Project : dpl interface + Author : PJA + Date : 18/6/94 + + Function: Introduces all the datatypes and functions + used by the dpl interface + + History : Rev 1.0, 18 / 06 / 1994 + +**************************** */ + +#include +#include +#include + +extern void dpl_SetAngleMode( int degrees ); +extern void dpl_IdMatrix ( dpl_MATRIX m ); +extern void dpl_Translate ( dpl_MATRIX m, float32 dx, float32 dy, float32 dz ); +extern void dpl_Rotate ( dpl_MATRIX m, float32 angle, int32 axis ); +extern void dpl_Scale ( dpl_MATRIX m, float32 x, float32 y, float32 z ); +extern void dpl_Concat ( dpl_MATRIX m, dpl_MATRIX a, dpl_MATRIX b ); +extern void dpl_Invert ( dpl_MATRIX inverse, dpl_MATRIX mat ); +extern void dpl_XformPoint ( dpl_POINT q, dpl_POINT p, dpl_MATRIX m ); + +extern void dpl_IdMatrixDCS ( dpl_DCS *d ); +extern void dpl_TranslateDCS ( dpl_DCS *d, float32 dx, float32 dy, float32 dz ); +extern void dpl_RotateDCS ( dpl_DCS *d, float32 angle, int32 axis ); +extern void dpl_ScaleDCS ( dpl_DCS *d, float32 x, float32 y, float32 z ); + + +#ifdef __cplusplus +} +#endif +#endif diff --git a/CODE/RP/MUNGA_L4/libDPL/dpl/vpx/TRICODER.H b/CODE/RP/MUNGA_L4/libDPL/dpl/vpx/TRICODER.H new file mode 100644 index 0000000..1b36a00 --- /dev/null +++ b/CODE/RP/MUNGA_L4/libDPL/dpl/vpx/TRICODER.H @@ -0,0 +1,35 @@ +#ifndef tricoder_h +#define tricoder_h + +#ifdef __cplusplus +extern "C" { +#endif + +#define triangle_intro_bits 0x0f + +#define triangle_opacity_intro 0x01 +#define triangle_unopacity_intro 0x02 +#define triangle_dmg_set_intro 0x03 +#define triangle_dmg_clear_intro 0x04 +#define triangle_sca_intro 0x05 +#define triangle_dmg2enbl_intro 0x06 +#define triangle_undmg2enbl_intro 0x07 +#define triangle_bright32_intro 0x08 +#define triangle_dark32_intro 0x09 +#define triangle_fifty_intro 0x0a +#define triangle_surfopacity_intro 0x0b +#define triangle_albright32_intro 0x0c +#define triangle_aldark32_intro 0x0d +#define triangle_albrightfog_intro 0x0e + +#define triangle_texture_bit 0x010 +#define triangle_dither_bit 0x020 +#define triangle_gouraud_bit 0x040 +#define triangle_enbl2dmg_bit 0x080 +#define triangle_white_bit 0x100 +#define triangle_emiss_bit 0x200 + +#ifdef __cplusplus +} +#endif +#endif diff --git a/CODE/RP/MUNGA_L4/libDPL/dpl/vpx/VR_PROT.H b/CODE/RP/MUNGA_L4/libDPL/dpl/vpx/VR_PROT.H new file mode 100644 index 0000000..bcd5b4c --- /dev/null +++ b/CODE/RP/MUNGA_L4/libDPL/dpl/vpx/VR_PROT.H @@ -0,0 +1,95 @@ +#ifndef vr_prot_h +#define vr_prot_h +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum vr_action { + vr_init_action, + + vr_create_action, + vr_delete_action, + vr_flush_action, + + vr_sect_pixel_action, + vr_sect_vector_action, + + vr_dcs_nest_action, + vr_dcs_link_action, + vr_dcs_prune_action, + + vr_draw_scene_action, + vr_draw_scene_complete_action, + + vr_list_add_action, + vr_list_remove_action, + + vr_morph_action, + + vr_version_action, + vr_statistics_action, + vr_readpixels_action, + + vr_hspcode_action, + vr_860code_action, + vr_860data_action, + vr_860bss_action, + vr_860args_action, + + vr_set_geom_text_action, + vr_update_geom_verts_action, + vr_get_geom_verts_action, + vr_add_geom_connections_action, + vr_set_texmap_texels_action, + vr_sfx_action, + vr_install_sfx_action, + vr_psfx_action, + vr_install_psfx_action, + vr_flush_dcs_artic_action, + vr_damage_action, + vr_random_table_action, + vr_gamma_table_action, + vr_kill_sfx_action, + vr_geometrize_action, + vr_clone_object_action, + vr_set_sect_pixel_action, + vr_set_warning_action, + vr_set_render_prop_action, + vr_create_2d_display_action, + vr_delete_2d_display_action, + vr_flush_2d_display_action, + vr_freemem_action, + vr_sync_action, + vr_get_bounds_action, + vr_get_geom_connections_action, + vr_get_geom_numconnections_action, + vr_cleanup_gg_action, + vr_clear_dcs_action, + vr_remove_dcs_action, + vr_add_dcs_action +} vr_action; + +/* some i860 states for transputer-side monitoring */ + +#define state_vr_rcv_wait_lock 0 +#define state_vr_rcv_wait_ack 1 +#define state_vr_send_wait_lock 2 +#define state_vr_send_wait_ack 3 +#define state_vr_dma_wait_lock 4 +#define state_vr_dma_wait_ack 5 +#define state_vr_dma_spin_lock 6 +#define state_vr_texels_wait_lock 7 +#define state_vr_texels_wait_ack 8 +#define state_vr_texels_spin_lock 9 +#define state_vr_cull 10 +#define state_vr_draw 11 + +#define state_monitor 0 + +#define set_state(a,b,c) if (state_monitor) set_i860_state(a,b,c) +#define aux_state(a,b,c) if (state_monitor) set_i860_auxstate(a,b,c) + +#ifdef __cplusplus +} +#endif +#endif diff --git a/CODE/RP/MUNGA_L4/libDPL/dpl/vpx/vssver.scc b/CODE/RP/MUNGA_L4/libDPL/dpl/vpx/vssver.scc new file mode 100644 index 0000000..60709fa Binary files /dev/null and b/CODE/RP/MUNGA_L4/libDPL/dpl/vpx/vssver.scc differ diff --git a/CODE/RP/MUNGA_L4/libDPL/dpl/vssver.scc b/CODE/RP/MUNGA_L4/libDPL/dpl/vssver.scc new file mode 100644 index 0000000..9720518 Binary files /dev/null and b/CODE/RP/MUNGA_L4/libDPL/dpl/vssver.scc differ diff --git a/CODE/RP/MUNGA_L4/libDPL/dsys/DIVTYPES.DEF b/CODE/RP/MUNGA_L4/libDPL/dsys/DIVTYPES.DEF new file mode 100644 index 0000000..0b14825 --- /dev/null +++ b/CODE/RP/MUNGA_L4/libDPL/dsys/DIVTYPES.DEF @@ -0,0 +1,75 @@ +/* + * PROJECT: DVS + * SUBSYSTEM: VL + * MODULE: basictypes.def + * + * File: $RCSfile: divtypes.def,v $ + * Revision: $Revision: 2.3 $ + * Date: $Date: 1995/04/27 10:40:16 $ + * Author: $Author: jeff $ + * RCS Ident: $Id: divtypes.def,v 2.3 1995/04/27 10:40:16 jeff beta $ + * + * FUNCTION: + * This module is used to hold the parameterised definitions of the basic + * types used throughout the system for all the machines supported. When + * porting to a new architecture all type stuff should be modified in + * here. There should be no machine dependant code anywhere else! + * + * each of the basic type int8 uint8 etc, etc is defined in terms of + * standard ansi 'C' types here, and given a enum name for conveniance. + * + * char8 is used for cases where the signedness of the byte is irelevent + * such as in character strings etc. + * The format is DEF_TYPE ( , , ) + * + * $Log: divtypes.def,v $ + * Revision 2.3 1995/04/27 10:40:16 jeff + * *** empty log message *** + * + * Revision 2.2 1994/09/08 12:35:33 jeff + * added windows basic types. + * + * Revision 2.1 1994/04/08 13:50:14 jeff + * Importded from 2.0 tree. + * + * + * Copyright (c) 1994 Division Ltd. + * + * All Rights Reserved. + * + * This Document may not, in whole or in part, be copied, + * photocopied, reproduced, translated, or reduced to any + * electronic medium or machine readable form without prior + * written consent from Division Ltd. + */ + +#if defined (_WIN31) + +DEF_TYPE( CHAR8, char8, char) +DEF_TYPE( INT8, int8, signed char) +DEF_TYPE( UINT8, uint8, unsigned char) +DEF_TYPE( INT16, int16, signed int) +DEF_TYPE( UINT16, uint16, unsigned int) +DEF_TYPE( INT32, int32, signed long) +DEF_TYPE( UINT32, uint32, unsigned long) +DEF_TYPE( FLOAT32, float32, float) +DEF_TYPE( FLOAT64, float64, double) + +#else + +DEF_TYPE( CHAR8, char8, char) +DEF_TYPE( INT8, int8, signed char) +DEF_TYPE( UINT8, uint8, unsigned char) +DEF_TYPE( INT16, int16, signed short) +DEF_TYPE( UINT16, uint16, unsigned short) +DEF_TYPE( INT32, int32, signed int) +DEF_TYPE( UINT32, uint32, unsigned int) +DEF_TYPE( FLOAT32, float32, float) +DEF_TYPE( FLOAT64, float64, double) + +#endif + +/* + * Note we may need to put ifdefs back in here for some machines IE 64Bit + * processors ? + */ diff --git a/CODE/RP/MUNGA_L4/libDPL/dsys/DIVTYPES.H b/CODE/RP/MUNGA_L4/libDPL/dsys/DIVTYPES.H new file mode 100644 index 0000000..694be94 --- /dev/null +++ b/CODE/RP/MUNGA_L4/libDPL/dsys/DIVTYPES.H @@ -0,0 +1,73 @@ +/* + * PROJECT: DVS + * SUBSYSTEM: vl + * MODULE: divtypes.h + * + * File: $RCSfile: divtypes.h,v $ + * Revision: $Revision: 2.11 $ + * Date: $Date: 1995/05/18 09:36:22 $ + * Author: $Author: jeff $ + * RCS Ident: $Id: divtypes.h,v 2.11 1995/05/18 09:36:22 jeff beta $ + * + * FUNCTION: + * + * This file contains standard type definitions used by all higher + * levels in the system. + * + * Copyright (c) 1994 Division Ltd. + * + * All Rights Reserved. + * + * This Document may not, in whole or in part, be copied, + * photocopied, reproduced, translated, or reduced to any + * electronic medium or machine readable form without prior + * written consent from Division Ltd. + */ +#ifndef _DIVTYPES_H +#define _DIVTYPES_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * mangle the divtypes.def file to get machine specific low level + * definitions for all our basic types. + */ +#define DEF_TYPE(a,b,c) typedef c b; +#include +#undef DEF_TYPE + +/* + * generate an enum list of all the symbolic values for the types. + */ +#define DEF_TYPE(a,b,c) a, +typedef enum dpDivType { +#include +LAST_TYPE +} dpDivType; +#undef DEF_TYPE +#define BASIC_TYPE_CNT ((int)LAST_TYPE) + +/* + * A structure to define the names etc of the basic types for internal + * use. + */ +typedef struct dpTypeSpec{ + char8 endian16[3]; + char8 endian32[5]; + struct { + char8 *name; + uint32 size; + uint32 alignment; + }Sizes[BASIC_TYPE_CNT]; +} dpTypeSpec; + +extern void dpGenDivTypes(dpTypeSpec *spec); + +#ifdef __cplusplus +} +#endif +#endif /* _DIVTYPES_H */ + + diff --git a/CODE/RP/MUNGA_L4/libDPL/dsys/DIVVERS.H b/CODE/RP/MUNGA_L4/libDPL/dsys/DIVVERS.H new file mode 100644 index 0000000..a7d07a5 --- /dev/null +++ b/CODE/RP/MUNGA_L4/libDPL/dsys/DIVVERS.H @@ -0,0 +1,54 @@ +/* + * PROJECT: DVS + * SUBSYSTEM: dp + * MODULE: divvers.c + * + * File: $RCSfile: divvers.h,v $ + * Revision: $Revision: 1.6 $ + * Date: $Date: 1995/05/18 09:36:22 $ + * Author: $Author: jeff $ + * RCS Ident: $Id: divvers.h,v 1.6 1995/05/18 09:36:22 jeff beta $ + * + * FUNCTION: + * macro to aid the printing of version no's for components. + * + * Copyright (c) 1995 Division Ltd. + * + * All Rights Reserved. + * + * This Document may not, in whole or in part, be copied, + * photocopied, reproduced, translated, or reduced to any + * electronic medium or machine readable form without prior + * written consent from Division Ltd. + */ +#ifndef _DIVVERS_H +#define _DIVVERS_H + +#include +#define divVersion(filep,module,description,version) \ +do { \ + static int done = 0; \ + static char *vstring = "@(#)Division dVS. " module " - " description \ + ". Version " version ". " __DATE__ ; \ + if (done == 0) { \ + fprintf (stdout, "%s\n", &vstring [4]); \ + if (filep) \ + fprintf (filep, "%s\n", &vstring [4]); \ + } \ + done = 1; \ +} while (0) + +#define div3rdPartyVersion(filep,party,description,version,date) \ +do { \ + static int done = 0; \ + static char *vstring = party ". " description \ + ". Version " version ". " date ; \ + if (done == 0) { \ + fprintf (stdout, "%s\n", vstring); \ + if (filep) \ + fprintf (filep, "%s\n", vstring ); \ + } \ + done = 1; \ +} while (0) + +#endif diff --git a/CODE/RP/MUNGA_L4/libDPL/dsys/DLINK.H b/CODE/RP/MUNGA_L4/libDPL/dsys/DLINK.H new file mode 100644 index 0000000..138f9b1 --- /dev/null +++ b/CODE/RP/MUNGA_L4/libDPL/dsys/DLINK.H @@ -0,0 +1,258 @@ +/******************************************************************************/ +/* */ +/* ###### ### # # ### ##### ### ####### # # */ +/* # # # # # # # # # # # ## # */ +/* # # # # # # # # # # # # # */ +/* # # # # # # ##### # # # # # # */ +/* # # # # # # # # # # # # # */ +/* # # # # # # # # # # # # ## */ +/* ###### ### # ### ##### ### ####### # # */ +/* */ +/* # ##### ##### ####### */ +/* ## # # # # # */ +/* # # # # # # # */ +/* # ###### ###### ###### */ +/* # # # # */ +/* # # # # # # # */ +/* ##### ##### ##### ##### */ +/* */ +/* Copyright (c) Division Limited. All rights reserved */ +/* */ +/* This Document may not, in whole or in part, be copied, photocopied, */ +/* reproduced, translated, or reduced to any electronic medium or machine */ +/* readable form without prior written consent from Division Ltd. */ +/* */ +/******************************************************************************/ + +#if !defined _DLINK_H_ +#define _DLINK_H_ + + +#if defined __cplusplus +extern "C" { +#endif + +/* This is the interface between dlink and the user. */ +/* It keeps track of which device we are talking to (via the */ +/* device driver file descriptor. It also keeps track of the protocol mode */ + +#if defined _UNIX + +typedef struct dbi_interface *DBI_INTERFACE_PTR; +typedef struct dbi_interface +{ + int fd; + int protocol; + +} DBI_INTERFACE; + +#else /* NOT _UNIX */ + +typedef void *DBI_INTERFACE_PTR; /* Redirect into the linkio structures */ + +#endif /* _UNIX */ + + + + + + + + + + + + +/* Open a dLink Device */ +/* On a success, returns a pointer that acts as a handle for all further operations. */ +/* When operations on this handle are finished, dlink_closeDevice should be called to */ +/* off any resources associated with the handle. In the unix world, dlink_initDevice */ +/* should be passed a filename that corresponds to the device being used. eg. /dev/dbi01 */ +/* Will return NULL, and print a message on error */ + +extern DBI_INTERFACE_PTR dlink_initDevice (char *deviceName); + + + + + + +/* Close a dLink Device */ +/* Attempts to free off any resources associated with a dLink device handle */ +/* which is passed into the routine. Returns 0 on success. On error, will print */ +/* a message and return (-1). */ +/* After a successful dlink_closeDevice, the dLink device pointer is no longer valid. */ + +extern int dlink_closeDevice (DBI_INTERFACE_PTR interface); + + + + + + +/* Reset the device associated with the dLink device handle. */ +/* This has the effect of resetting the hardware that is associated with the dLink */ +/* device handle passed into the routine. */ +/* Will return 0 on success, or print a message and return (-1) on error */ + +extern int dlink_resetDevice (DBI_INTERFACE_PTR interface); + + + + + + + +/* Write RAW data */ +/* Similar to the UNIX write system call. */ +/* Attempts to write nob bytes of data starting from the address in data to */ +/* the device associated with the dLink device handle passed in. */ +/* Returns the number of bytes written. */ +/* If an error occurs, will print a message and return (-1). */ + +extern int dlink_write (DBI_INTERFACE_PTR interface, char *data, unsigned int nob); + + + + + + + + + +/* Read RAW data */ +/* Similar to the UNIX read system call. */ +/* Attempts to read nob bytes of data starting to the address in data from */ +/* the device associated with the dLink device handle passed in. */ +/* Returns the number of bytes read. */ +/* If an error occurs, will print a message and return (-1). */ + +extern int dlink_read (DBI_INTERFACE_PTR interface, char *data, unsigned int nob); + + + + + + + + + +/* See if the link is ready */ +/* If there is input from the device waiting will return non-zero, */ +/* otherwise will return zero. */ +extern int dlink_inputReady (DBI_INTERFACE_PTR interface); + + + + + + + + + + + + + + + + + + +/* Send out a protocol packet */ +/* Attempts to send a protocol packet to the device associated with the dLink */ +/* device handle passed to the routine. */ +/* Parameters are as follows; + + interface dLink device handle. + data Address of data. + nob Number of bytes to send. Must be a multiple of 4, + and no more than 1020 bytes, as defined by the + protocol used. + protocolTag A protocol tag that will be interpreted by the + user code at the destination process. + target The ID of the destination process. Can be 0x0 to 0xFF, + where 0xFF is a broadcast message. + toIserver 0 for a non-Iserver message, 1 for a packet destined for + an Iserver. + needsFlipping. Specifies whether the data is affected by machine Endian + properties. If set to 1, dLink will automatically flip + the data on despatch. dLink will only do this if the + host machine is reverse endian to the destination. + If either needsFlipping is 0, or the host machined is the + same endian to the destination, no byte flipping is + performed. + + Returns 0 on success, or -1 and a message on error. */ + +extern int dlink_sendProtocolPacket (DBI_INTERFACE_PTR interface, + char *data, unsigned int nob, + int protocolTag, + int target, int toIserver, + int needsFlipping); + + + + + + + + +/* Receive a protocol packet */ +/* Attempts to read a protocol packet from the device associated with the dLink */ +/* device handle passed to the routine. */ +/* Parameters are as follows; + + interface dLink device handle. + data Address of where the data is to be read. + nob Pointer to the number of bytes actually received. + + protocolTag Currently not used. Pass in NULL. + target Pointer to the ID of the sender of the data. + toIserver Pointer saying whether the message was from an Iserver. + 1 will be placed here if the message is from an Iserver, + 0 otherwise. + needsFlipping. Specifies whether the data is affected by machine Endian + properties. If set to 1, dLink will automatically flip + the data on arrival. dLink will only do this if the + host machine is reverse endian to the destination. + If either needsFlipping is 0, or the host machined is the + same endian to the destination, no byte flipping is + performed. +*/ +/* Returns 0 on success, or -1 and a message on error. */ + +extern int dlink_recvProtocolPacket (DBI_INTERFACE_PTR interface, + char *data, unsigned int *nob, + int *protocolTag, + int *target, int *fromIserver, + int needsFlipping); + + + + + + + + + + +/* Switch dLink Error messages to come from the given */ +/* file descriptor. If the descriptor is NULL, then */ +/* error messages will be switched off */ +/* Parameters are as follows; + + fd Pointer to a file descriptor. If the pointer is NULL + then dlink error messages will be switched off, otherwise + dlink error messages will be sent over the given file + descriptor after the call. +*/ + +extern void dlink_setErrorFile (FILE *fd); + + +#if defined __cplusplus +} +#endif + +#endif diff --git a/CODE/RP/MUNGA_L4/libDPL/dsys/DM.H b/CODE/RP/MUNGA_L4/libDPL/dsys/DM.H new file mode 100644 index 0000000..4b4c836 --- /dev/null +++ b/CODE/RP/MUNGA_L4/libDPL/dsys/DM.H @@ -0,0 +1,635 @@ +/* + * PROJECT: DVS + * SUBSYSTEM: matrix/linear algebra mosdule + * MODULE: dmtypes.h + * + * File: $RCSfile: dm.h,v $ + * Revision: $Revision: 2.23 $ + * Date: $Date: 1995/05/18 09:46:38 $ + * Author: $Author: jeff $ + * RCS Ident: $Id: dm.h,v 2.23 1995/05/18 09:46:38 jeff beta $ + * + * FUNCTION: + * This file contains the external declarations of the dm library + * routines and types. + * + * + * Copyright (c) 1994 Division Ltd. + * + * All Rights Reserved. + * + * This Document may not, in whole or in part, be copied, + * photocopied, reproduced, translated, or reduced to any + * electronic medium or machine readable form without prior + * written consent from Division Ltd. + */ +#ifndef _DMTYPES_H +#define _DMTYPES_H + +#include + +#if defined(_TRANSPUTER) || defined(_I860) +/* + * These are not defined on transputers. + */ +#define M_E 2.71828182845904523540 +#define M_LOG2E 1.44269504088896340740 +#define M_LOG10E 0.43429448190325182765 +#define M_LN2 0.69314718055994530942 +#define M_LN10 2.30258509299404568402 +#define M_PI 3.14159265358979323846 +#define M_PI_2 1.57079632679489661923 +#define M_PI_4 0.78539816339744830962 +#define M_1_PI 0.31830988618379067154 +#define M_2_PI 0.63661977236758134308 +#define M_2_SQRTPI 1.12837916709551257390 +#define M_SQRT2 1.41421356237309504880 +#define M_SQRT1_2 0.70710678118654752440 +#endif + +#ifdef _TRANSPUTER +#include +#else +#include +#endif + +#ifdef _I860 +#define const /*broken pgcc doesn't understand const properly*/ +#endif + +/* Windows mathf functions. */ +#if defined(_WIN31) || defined(_DOS) +#define fabsf(x) (float) fabs((double)(x)) +#define sqrtf(x) (float) sqrt((double)(x)) +#define sinf(x) (float) sin((double)(x)) +#define cosf(x) (float) cos((double)(x)) +#define asinf(x) (float) asin((double)(x)) +#define acosf(x) (float) acos((double)(x)) +#endif + + +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif +/* + * The basic linear algebra types. + */ +typedef enum { + DM_X = 0, + DM_Y = 1, + DM_Z = 2, + DM_W = 3, + DM_PITCH = 0, + DM_YAW = 1, + DM_ROLL = 2 +} dmIndex; + +typedef float32 dmVector[3]; +typedef float32 dmScale[3]; +typedef float32 dmPoint[3]; +typedef float32 dmEuler[3]; +typedef float32 dmQuaternion[4]; +typedef float32 dmMatrix[4][4]; + +typedef struct { + dmMatrix pos; + dmVector linearVel; + dmVector linearAccn; + dmVector angularVel; + dmVector angularAccn; +} dmPosition, *dmPosition_Ptr; + +/* + * Small value used to check floating point values for equality + * or smallness. This number is withing 2 bits of the smallest + * representable relative differance between two numbers. + */ +#define DM_EPSILON ((float32)(FLT_EPSILON * 4.0f)) + +/* + * fast macros for common ops. + */ +#define dmSqr(x) ((x) * (x)) + +#define dmCrossProd3(r,a,b) \ +do { \ + float32 _ax = (a)[DM_X], _bx = (b)[DM_X]; \ + float32 _ay = (a)[DM_Y], _by = (b)[DM_Y]; \ + float32 _az = (a)[DM_Z], _bz = (b)[DM_Z]; \ + \ + (r)[DM_X] = (_ay * _bz) - (_az * _by); \ + (r)[DM_Y] = (_az * _bx) - (_ax * _bz); \ + (r)[DM_Z] = (_ax * _by) - (_ay * _bx); \ +} while (0) + +#define dmDotProd3(x, y) ( ((x)[DM_X] * (y)[DM_X]) \ + + ((x)[DM_Y] * (y)[DM_Y]) \ + + ((x)[DM_Z] * (y)[DM_Z])) + +#define dmDotProd4(x, y) ( ((x)[DM_X] * (y)[DM_X]) \ + + ((x)[DM_Y] * (y)[DM_Y]) \ + + ((x)[DM_Z] * (y)[DM_Z]) \ + + ((x)[DM_W] * (y)[DM_W])) + +#define dmLength3(x) sqrtf( dmSqr(x[DM_X]) \ + +dmSqr(x[DM_Y]) \ + +dmSqr(x[DM_Z])) + +#define dmVectorCrossProd(r,a,b) dmCrossProd3((r),(a),(b)) +#define dmVectorDotProd(a,b) dmDotProd3((a),(b)) +#define dmVectorLength(a) dmLength3(a) + + + +#define dmScaleInvert(d,s) (((d)[DM_X] = 1.0f/(s)[DM_X]), \ + ((d)[DM_Y] = 1.0f/(s)[DM_Y]), \ + ((d)[DM_Z] = 1.0f/(s)[DM_Z])) + +#define dmVectorInvert(d,s) (((d)[DM_X] = -(s)[DM_X]), \ + ((d)[DM_Y] = -(s)[DM_Y]), \ + ((d)[DM_Z] = -(s)[DM_Z])) + + +#define dmDegToRad(x) ((x) * ((float32) M_PI / 180.0)) +#define dmRadToDeg(x) ((x) * ((float32) M_1_PI * 180.0)) + + + +/* + * Optimised and Safe trig functions. + */ +extern void dmSinCosf(float32 *s, + float32 *c, + float32 angle); +extern float32 dmSafeAtan2(float32 opposite, + float32 adjacent); + +/* + * Copy functions + */ +#ifdef _TRANSPUTER +#include +#define dmMatCopy(d,s) memcpy(d,s,sizeof(dmMatrix)) +#define dmQuatCopy(d,s) memcpy(d,s,sizeof(dmQuaternion)) +#define dmEulerCopy(d,s) memcpy(d,s,sizeof(dmEuler)) +#define dmVectorCopy(d,s) memcpy(d,s,sizeof(dmVector)) +#define dmPointCopy(d,s) memcpy(d,s,sizeof(dmPoint)) +#define dmScaleCopy(d,s) memcpy(d,s,sizeof(dmScale)) +#define dmPosCopy(d,s) ((d) = (s)) +#define __dmCopy3(d,s) memcpy(d,s,3 * sizeof(float32)) +#define __dmCopy4(d,s) memcpy(d,s,4 * sizeof(float32)) +#else +#define __dmCopy3(d,s) do { \ + (d)[DM_X] = (s)[DM_X]; \ + (d)[DM_Y] = (s)[DM_Y]; \ + (d)[DM_Z] = (s)[DM_Z]; \ +} while (0) + +#define __dmCopy4(d,s) do { \ + (d)[DM_X] = (s)[DM_X]; \ + (d)[DM_Y] = (s)[DM_Y]; \ + (d)[DM_Z] = (s)[DM_Z]; \ + (d)[DM_W] = (s)[DM_W]; \ +} while (0) + +#define dmMatCopy(d,s) do { \ + __dmCopy4((d)[DM_X],(s)[DM_X]); \ + __dmCopy4((d)[DM_Y],(s)[DM_Y]); \ + __dmCopy4((d)[DM_Z],(s)[DM_Z]); \ + __dmCopy4((d)[DM_W],(s)[DM_W]); \ +} while (0) + +#define dmQuatCopy(d,s) __dmCopy4(d,s) +#define dmEulerCopy(d,s) __dmCopy3(d,s) +#define dmVectorCopy(d,s) __dmCopy3(d,s) +#define dmPointCopy(d,s) __dmCopy3(d,s) +#define dmScaleCopy(d,s) __dmCopy3(d,s) + +#define dmPosCopy(d,s) (*(d) = *(s)) +#endif + +/* + * Ident functions. + */ +#define dmMatIdent(m) dmMatCopy(m, dmIdentM) +#define dmQuatIdent(q) dmQuatCopy(q, dmIdentQ) +#define dmEulerIdent(e) dmEulerCopy(e, dmIdentE) +#define dmVectorIdent(v) dmVectorCopy(v, dmIdentV) +#define dmPointIdent(p) dmPointCopy(p, dmIdentP) +#define dmScaleIdent(s) dmScaleCopy(s, dmIdentS) +#define dmPosIdent(p) dmPosCopy(p, &dmIdentPos) + +extern const dmMatrix dmIdentM; +extern const dmQuaternion dmIdentQ; +extern const dmEuler dmIdentE; +extern const dmVector dmIdentV; +extern const dmPoint dmIdentP; +extern const dmScale dmIdentS; +extern const dmPosition dmIdentPos; + +extern void (dmMatIdent)(dmMatrix mat); +extern void (dmQuatIdent)(dmQuaternion q); +extern void (dmEulerIdent)(dmEuler e); +extern void (dmVectorIdent)(dmVector s); +extern void (dmPointIdent)(dmPoint s); +extern void (dmScaleIdent)(dmScale s); +extern void (dmPosIdent)(dmPosition_Ptr p); + +/* + * initialisation functions + */ +#define dmEulerSet(e,p,y,r) ((e)[DM_PITCH] = (p), \ + (e)[DM_YAW] = (y), \ + (e)[DM_ROLL] = (r)) + +#define dmEulerSetD(e,p,y,r) ((e)[DM_PITCH] = dmDegToRad(p), \ + (e)[DM_YAW] = dmDegToRad(y), \ + (e)[DM_ROLL] = dmDegToRad(r)) + +#define dmQuatSet(q,x,y,z,w) ((q)[DM_X] = (x), \ + (q)[DM_Y] = (y), \ + (q)[DM_Z] = (z), \ + (q)[DM_W] = (w)) + +#define dmPointSet(p,x,y,z) ((p)[DM_X] = (x), \ + (p)[DM_Y] = (y), \ + (p)[DM_Z] = (z)) + +#define dmVectorSet(v,x,y,z) ((v)[DM_X] = (x), \ + (v)[DM_Y] = (y), \ + (v)[DM_Z] = (z)) + +#define dmScaleSet(s,x,y,z) ((s)[DM_X] = (x), \ + (s)[DM_Y] = (y), \ + (s)[DM_Z] = (z)) + + +extern void (dmEulerSet)(dmEuler e, + float32 pitch, + float32 yaw, + float32 roll); +extern void (dmEulerSetD)(dmEuler e, + float32 pitch, + float32 yaw, + float32 roll); +extern void (dmQuatSet)(dmQuaternion q, + float32 x, + float32 y, + float32 z, + float32 w); +extern void (dmPointSet)(dmPoint p, + float32 x, + float32 y, + float32 z); +extern void (dmVectorSet)(dmVector p, + float32 x, + float32 y, + float32 z); +extern void (dmScaleSet)(dmScale p, + float32 x, + float32 y, + float32 z); + +/* + * Matrix generation functions + */ +#define dmMatFromScale(m,s) do { \ + dmMatIdent(m); \ + (m)[DM_X][DM_X] = s[DM_X]; \ + (m)[DM_Y][DM_Y] = s[DM_Y]; \ + (m)[DM_Z][DM_Z] = s[DM_Z]; \ +} while (0) + +#define dmMatFromEuler(m,e) do { \ + dmQuaternion __q; \ + dmQuatFromEuler(__q,e); \ + dmMatFromQuat(m,__q); \ +} while (0) + +#define dmMatFromPoint(m,p) do { \ + dmMatIdent(m); \ + m[DM_W][DM_X] = p[DM_X]; \ + m[DM_W][DM_Y] = p[DM_Y]; \ + m[DM_W][DM_Z] = p[DM_Z]; \ +} while (0) + +#define dmMatFromPointEulerScale(m, p,e,s) do { \ + dmMatFromScale(m,s); \ + dmMatRotEuler(m,e); \ + m[DM_W][DM_X] = p[DM_X]; \ + m[DM_W][DM_Y] = p[DM_Y]; \ + m[DM_W][DM_Z] = p[DM_Z]; \ +} while (0) + +#define dmMatFromPointQuatScale(m, p,q,s) do { \ + dmMatFromScale(m,s); \ + dmMatRotQuat(m,q); \ + m[DM_W][DM_X] = p[DM_X]; \ + m[DM_W][DM_Y] = p[DM_Y]; \ + m[DM_W][DM_Z] = p[DM_Z]; \ +} while (0) + +extern void dmMatFromQuat( dmMatrix mat, + const dmQuaternion quat); +extern void dmMatFromGeneralQuat( dmMatrix mat, + const dmQuaternion quat); +extern void (dmMatFromEuler)( dmMatrix m, + const dmEuler e); +extern void (dmMatFromScale)( dmMatrix m, + const dmScale s); +extern void (dmMatFromPoint)( dmMatrix m, + const dmPoint p); +extern void (dmMatFromPointEulerScale)( dmMatrix m, + const dmPoint p, + const dmEuler e, + const dmScale s); +extern void (dmMatFromPointQuatScale)( dmMatrix m, + const dmPoint p, + const dmQuaternion q, + const dmScale s); + + + +/* + * matrix manipulation functions. + */ +#define dmMatRotQuat(m,q) do { \ + dmMatrix __m; \ + dmMatFromQuat(__m, (q)); \ + dmMatMultH((m),(m),__m); \ +} while (0) + +#define dmMatRotEuler(m, e) do { \ + dmMatrix __m; \ + dmMatFromEuler(__m,e); \ + dmMatMultH((m), (m), __m); \ +} while (0) + + +extern void dmMatRotX(dmMatrix m, + float32 angle); +extern void dmMatRotY(dmMatrix m, + float32 angle); +extern void dmMatRotZ(dmMatrix m, + float32 angle); + +extern void (dmMatRotEuler)( dmMatrix m, + const dmEuler e); +extern void (dmMatRotQuat)( dmMatrix m, + const dmQuaternion q); +extern void dmMatScale( dmMatrix m, + const dmScale s); + +extern void dmMatXlate( dmMatrix m, + const dmVector v); + +extern void dmMatInvertH( dmMatrix inv, + const dmMatrix mat); + +extern void dmMatMultH( dmMatrix res, + const dmMatrix left, + const dmMatrix right); + +extern int dmMatInvert( dmMatrix inv, + const dmMatrix mat); + +extern void dmMatMult( dmMatrix res, + const dmMatrix left, + const dmMatrix right); + +/* + * Quaternion manipulation ops. + */ +#define dmQuatNorm(x) do { \ + if ((x)[DM_W] < 0.0f) { \ + (x)[DM_X] = -(x)[DM_X]; \ + (x)[DM_Y] = -(x)[DM_Y]; \ + (x)[DM_Z] = -(x)[DM_Z]; \ + (x)[DM_W] = -(x)[DM_W]; \ + } \ +}while(0) + +extern void dmQuatInvert( dmQuaternion res, + const dmQuaternion q); +extern void dmQuatMult( dmQuaternion res, + const dmQuaternion left, + const dmQuaternion right); +extern void dmQuatMake( dmQuaternion quat, + const dmVector axis, + float32 angle); +extern void dmQuatMakeUnitAxis( dmQuaternion rot, + const dmVector axis, + float angle); +extern void (dmQuatNorm)(dmQuaternion q); + + +/* + * Conversions between Euler angles and + * quaternions. + */ + +extern void dmQuatFromEuler( dmQuaternion quat, + const dmEuler erot); + +extern void dmEulerFromQuat( dmEuler e, + const dmQuaternion q); + + +/* + * Functions to split matricies in various ways. + */ + +#define dmPointFromMat(p,m) dmPointQuatScaleFromMat((p), NULL, NULL, (m)) +#define dmScaleFromMat(s,m) dmPointQuatScaleFromMat(NULL, NULL, (s), (m)) +#define dmQuatFromMat(q,m) dmPointQuatScaleFromMat(NULL, (q), NULL, (m)) +#define dmEulerFromMat(e,m) dmPointEulerScaleFromMat(NULL, (e), NULL, (m)) + +extern int (dmQuatFromMat)( dmQuaternion quat, + const dmMatrix mat); +extern int (dmEulerFromMat)( dmEuler e, + const dmMatrix m); +extern int (dmPointFromMat)( dmPoint p, + const dmMatrix m); +extern int (dmScaleFromMat)( dmScale s, + const dmMatrix m); + +extern int dmPointQuatScaleFromMat( dmPoint p, + dmQuaternion q, + dmScale s, + const dmMatrix m); + +extern int dmPointEulerScaleFromMat( dmPoint p, + dmEuler e, + dmScale s, + const dmMatrix m); + +/* + * Functions to manipulate vectors and points + * using matricies, quaternions, rotations and scales + */ +#define __dmAdd3(r,a,b) ((r)[DM_X] = (a)[DM_X] + (b)[DM_X], \ + (r)[DM_Y] = (a)[DM_Y] + (b)[DM_Y], \ + (r)[DM_Z] = (a)[DM_Z] + (b)[DM_Z]) +#define __dmSub3(r,a,b) ((r)[DM_X] = (a)[DM_X] - (b)[DM_X], \ + (r)[DM_Y] = (a)[DM_Y] - (b)[DM_Y], \ + (r)[DM_Z] = (a)[DM_Z] - (b)[DM_Z]) +#define __dmScale3(r,a,b) ((r)[DM_X] = (a)[DM_X] * (b)[DM_X], \ + (r)[DM_Y] = (a)[DM_Y] * (b)[DM_Y], \ + (r)[DM_Z] = (a)[DM_Z] * (b)[DM_Z]) + +#define __dmScaleScalar3(r,a,b) ((r)[DM_X] = (a)[DM_X] * b, \ + (r)[DM_Y] = (a)[DM_Y] * b, \ + (r)[DM_Z] = (a)[DM_Z] * b) + + +#define __dmRotEuler3(r,a,b) \ +do { \ + dmQuaternion __q; \ + dmQuatFromEuler(__q,b); \ + __dmRotQuat3((r),(a),__q); \ +} while (0) + +extern void __dmRotQuat3( float32 *r, + const float32 *a, + const dmQuaternion q); + +#define dmVectorAdd(r,a,b) __dmAdd3(r,a,b) +#define dmVectorSub(r,a,b) __dmSub3(r,a,b) +#define dmPointSub(r,a,b) __dmSub3(r,a,b) +#define dmPointAddVector(r,a,b) __dmAdd3(r,a,b) + +#define dmVectorScale(r,a,b) __dmScale3(r,a,b) +#define dmPointScale(r,a,b) __dmScale3(r,a,b) +#define dmVectorScaleScalar(r,a,b) __dmScaleScalar3(r,a,b) +#define dmVectorRotQuat(r,v,q) __dmRotQuat3(r,v,q) +#define dmPointRotQuat(r,p,q) __dmRotQuat3(r,p,q) + +#define dmVectorRotEuler(r,v,e) __dmRotEuler3(r,v,e) +#define dmPointRotEuler(r,p,e) __dmRotEuler3(r,p,e) + + +extern void (dmVectorAdd)( dmVector r, + const dmVector a, + const dmVector b); + +extern void (dmVectorSub)( dmVector r, + const dmVector a, + const dmVector b); + +extern void (dmPointSub)( dmVector r, + const dmPoint a, + const dmPoint b); + +extern void (dmPointAddVector)( dmPoint r, + const dmPoint a, + const dmVector b); + +extern void (dmVectorScale)( dmVector r, + const dmVector a, + const dmScale b); + +extern void (dmVectorScaleScalar)( dmVector r, + const dmVector a, + float32 b); + +extern void (dmPointScale)( dmPoint r, + const dmPoint a, + const dmScale b); + +extern void (dmVectorRotQuat)( dmVector r, + const dmVector v, + const dmQuaternion); + +extern void (dmVectorRotEuler)( dmVector r, + const dmEuler e, + const dmVector v); + + +extern void (dmPointRotQuat)( dmPoint r, + const dmPoint p, + const dmQuaternion q); +extern void (dmPointRotEuler)( dmPoint r, + const dmPoint p, + const dmEuler e); + +extern void dmVectorXformMat( dmVector r, + const dmVector v, + const dmMatrix m); +extern void dmPointXformMat( dmPoint r, + const dmPoint v, + const dmMatrix m); + + + +/* + * Dead reckoning et al. Actually most of these functions only + * deal with zero order stuff. + */ + +#define dmPosFromMat(p,m) do { \ + dmMatCopy((p)->pos, m); \ + dmVectorIdent((p)->linearVel); \ + dmVectorIdent((p)->linearAccn); \ + dmVectorIdent((p)->angularVel); \ + dmVectorIdent((p)->angularAccn); \ +} while (0) + +#define dmPosFromPointEulerScale(p,p2,e,s) do { \ + dmMatFromPointEulerScale((p)->pos,(p2),(e),(s)); \ + dmVectorIdent((p)->linearVel); \ + dmVectorIdent((p)->linearAccn); \ + dmVectorIdent((p)->angularVel); \ + dmVectorIdent((p)->angularAccn); \ +}while(0) + +#define dmPosFromPointQuatScale(p,p2,q,s) do { \ + dmMatFromPointQuatScale((p)->pos,(p2),(q),(s)); \ + dmVectorIdent((p)->linearVel); \ + dmVectorIdent((p)->linearAccn); \ + dmVectorIdent((p)->angularVel); \ + dmVectorIdent((p)->angularAccn); \ +}while(0) + +extern void (dmPosFromMat)( dmPosition_Ptr p, + const dmMatrix m); +extern void (dmPosFromPointEulerScale)( dmPosition_Ptr p, + const dmPoint p2, + const dmEuler e, + const dmScale s); +extern void (dmPosFromPointQuatScale)( dmPosition_Ptr p, + const dmPoint p2, + const dmQuaternion q, + const dmScale s); + +extern void dmDeadReckon( dmMatrix m, + float32 time, + const dmPosition_Ptr pos); +/* + * + * given four points a, b, c, d defining two line segments AB and CD, + * generate a matrix m that will transform AB to CD. + * If the length of either line segment is zero, the results are undefined. + */ +extern void dmPointToPoint(dmMatrix m, + dmPoint a, + dmPoint b, + dmPoint c, + dmPoint d); + + + +/* + * version function + */ +extern void dmVersion(FILE *fp); + + + +#ifdef __cplusplus +} +#endif +#endif /*_DMTYPES_H */ diff --git a/CODE/RP/MUNGA_L4/libDPL/dsys/DP.H b/CODE/RP/MUNGA_L4/libDPL/dsys/DP.H new file mode 100644 index 0000000..c9660c9 --- /dev/null +++ b/CODE/RP/MUNGA_L4/libDPL/dsys/DP.H @@ -0,0 +1,47 @@ +/* + * PROJECT: dVS + * SUBSYSTEM: dp + * MODULE: dp.h + * + * + * File: $RCSfile: dp.h,v $ + * Revision: $Revision: 2.9 $ + * Date: $Date: 1995/05/18 09:36:22 $ + * Author: $Author: jeff $ + * RCS Ident: $Id: dp.h,v 2.9 1995/05/18 09:36:22 jeff beta $ + * + * FUNCTION: + * + * + * Copyright (c) 1994 Division Ltd. + * + * All Rights Reserved. + * + * This Document may not, in whole or in part, be copied, photocopied, + * reproduced, translated, or reduced to any electronic medium or + * machine readable form without prior written consent from Division + * Ltd. + */ + +#ifndef _DP_H +#define _DP_H 1 + +#ifdef _cplusplus +extern "C" { +#endif + +#if defined (_UNIX) +#include +#elif defined (_TRANSPUTER) || defined (_I860) +#include +#elif defined (_WIN31) +#include +#else +#error "Unknown processor type " +#endif + +#ifdef _cplusplus +} +#endif + +#endif /* _DP_H */ diff --git a/CODE/RP/MUNGA_L4/libDPL/dsys/DS.H b/CODE/RP/MUNGA_L4/libDPL/dsys/DS.H new file mode 100644 index 0000000..b5fd2f6 --- /dev/null +++ b/CODE/RP/MUNGA_L4/libDPL/dsys/DS.H @@ -0,0 +1,48 @@ +/* + * PROJECT: + * SUBSYSTEM: + * MODULE: + * + * FILE: $RCSfile: ds.h,v $ + * REVISION: $Revision: 1.6 $ + * Date: $Date: 1995/05/18 09:39:38 $ + * Author: $Author: jeff $ + * RCS Ident: $Id: ds.h,v 1.6 1995/05/18 09:39:38 jeff beta $ + * + * FUNCTION: + * + * Copyright (c) 1994 Division Ltd. + * + * All Rights Reserved. + * + * This Document may not, in whole or in part, be copied, + * photocopied, reproduced, translated, or reduced to any + * electronic medium or machine readable form without prior + * written consent from Division Ltd. + */ + +#ifndef _DS_H +#define _DS_H + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct +{ + char *string; +}DStringTraverseInfo; + +extern void dsVersion(FILE *fp); +char *dStringFromOptions (char *string, int *size, char *name, ...); +char *dStringFirstString (char *string, DStringTraverseInfo *info); +char *dStringNextOption (char *option, DStringTraverseInfo *info); + + +#define DS_END_OF_OPTIONS '\0' + + +#ifdef __cplusplus +} +#endif +#endif /*_DS_H */ diff --git a/CODE/RP/MUNGA_L4/libDPL/dsys/DTCP.H b/CODE/RP/MUNGA_L4/libDPL/dsys/DTCP.H new file mode 100644 index 0000000..54a6fd4 --- /dev/null +++ b/CODE/RP/MUNGA_L4/libDPL/dsys/DTCP.H @@ -0,0 +1,165 @@ +/* + * PROJECT: dvs + * SUBSYSTEM: net + * MODULE: dtcp.h + * + * File: $RCSfile: dtcp.h,v $ + * Revision: $Revision: 1.3 $ + * Date: $Date: 1995/03/10 17:09:52 $ + * Author: $Author: john $ + * RCS Ident: $Id: dtcp.h,v 1.3 1995/03/10 17:09:52 john Exp $ + * + * FUNCTION: + * header file for host independant socket access. + * + * $Log: dtcp.h,v $ + * Revision 1.3 1995/03/10 17:09:52 john + * *** empty log message *** + * + * Revision 1.2 1995/01/13 16:09:46 jeff + * ci for new build system. + * + * Revision 1.1 1994/12/05 09:33:35 jeff + * First post-manager check in. + * + * + * Copyright (c) 1994 Division Ltd. + * + * All Rights Reserved. + * + * This Document may not, in whole or in part, be copied, + * photocopied, reproduced, translated, or reduced to any + * electronic medium or machine readable form without prior + * written consent from Division Ltd. + */ +#ifndef __DTCP_H +#define __DTCP_H + +#include +#include +#include +#include +#ifdef _IRIX5 +#include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include + +# ifdef __cplusplus +extern "C" { +# endif + + +#if defined ( _SYSV42) +#ifdef _DVS_AGENT +#define TCP_TLI + +#else +#define TCP_BSD +#endif +#else +#if defined (_HPUX) || defined (_IRIX) +#define TCP_BSD +#else +#error Undefined system type +#endif +#endif + +#ifdef TCP_TLI +#include +#include + +#define dsock_open dsock_tli_open +#define dsock_bind_listen dsock_tli_bind_listen +#define dsock_buffer_size dsock_tli_buffer_size +#define dsock_select_io dsock_tli_select_io +#define dsock_async_io dsock_tli_async_io +#define dsock_async_signal dsock_tli_async_signal +#define dsock_allow_broadcast dsock_tli_allow_broadcast +#define dsock_set_timeout dsock_tli_set_timeout +#define dsock_sendto dsock_tli_sendto +#define dsock_recvfrom dsock_tli_recvfrom +#define dsock_send dsock_tli_send +#define dsock_recv dsock_tli_recv +#define dsock_getFirst_socket dsock_tli_getFirst_socket +#define dsock_getNext_socket dsock_tli_getNext_socket +#define dsock_connect dsock_tli_connect +#define dsock_connect_addr dsock_tli_connect_addr +#define dsock_listen_accept dsock_tli_listen_accept +#define dsock_acceptClose dsock_tli_acceptClose +#define dsock_recvConnect dsock_tli_recvConnect +#define dsock_enableAsyncWrite dsock_tli_enableAsyncWrite +#define dsock_disableAsyncWrite dsock_tli_diableAsyncWrite +#define dsock_close dsock_tli_close +#define dsock_error dsock_tli_error +#define dsock_errno dsock_tli_errno +#endif + +#include + +#define DTCP_UDP 0x00000001 +#define DTCP_TCP 0x00000002 + +#define DTCP_INET 0x00000001 +#define DTCP_UNIX 0x00000002 + +#define DTCP_READ 1 +#define DTCP_WRITE 2 +#define DTCP_EXCEPTION 3 +#define DTCP_ERR 4 +#define DTCP_HUP 5 + +#define DTCP_LISTEN -2 +#define DTCP_CONNECT -3 +#define DTCP_DATA -4 +#define DTCP_EXDATA -5 +#define DTCP_DISCONNECT -6 +#define DTCP_ERROR -7 +#define DTCP_UDERR -8 +#define DTCP_ORDREL -9 +#define DTCP_TIMEOUT -10 + + +void dsockVersion(FILE *fp); +int dsock_open(int family, int type); +int dsock_bind_listen(int sock, int family, int inet_addr, short *port, int qlength); +int dsock_buffer_size(int sock, int bufferSize); +void dsock_select_io(int sock); +int dsock_async_io(int sock); +int dsock_async_signal(void); +int dsock_allow_broadcast (int sock); +void dsock_set_timeout(struct timeval *t); +int dsock_sendto (int sock, void *msg, int size, struct sockaddr_in *dst); +int dsock_recvfrom (int sock, void *msg, int size, struct sockaddr_in *from); +int dsock_send (int sock, void *msg, int size); +int dsock_recv (int sock, void *msg, int size); +int dsock_getFirst_socket (int *ioType); +int dsock_getNext_socket (int *ioType); +int dsock_connect(int sock, struct sockaddr_in *dst); +int dsock_connect_addr(int sock, int family, int inet_addr, short *port ); +int dsock_listen_accept(int sock, struct sockaddr_in *addr); +int dsock_acceptClose(int fd); +int dsock_recvConnect(int fd); +int dsock_enableAsyncWrite(int fd); +int dsock_disableAsyncWrite(int fd); +int dsock_close(int fd); + + +void dsock_error(char *string); +int32 dsock_flipWord(int32 value); +int16 dsock_flipShort(int16 value); + +extern int dsock_errno; + + +# ifdef __cplusplus +} +# endif +#endif /* DTCP_H */ diff --git a/CODE/RP/MUNGA_L4/libDPL/dsys/DU.H b/CODE/RP/MUNGA_L4/libDPL/dsys/DU.H new file mode 100644 index 0000000..47a6915 --- /dev/null +++ b/CODE/RP/MUNGA_L4/libDPL/dsys/DU.H @@ -0,0 +1,214 @@ +/* + * PROJECT: DVS + * SUBSYSTEM: du + * MODULE: du.h + * + * File: $RCSfile: du.h,v $ + * Revision: $Revision: 2.17 $ + * Date: $Date: 1995/05/18 09:40:33 $ + * Author: $Author: jeff $ + * RCS Ident: $Id: du.h,v 2.17 1995/05/18 09:40:33 jeff beta $ + * + * FUNCTION: + * external declarations of functions in the du library. + * + * + * Copyright (c) 1994 Division Ltd. + * + * All Rights Reserved. + * + * This Document may not, in whole or in part, be copied, + * photocopied, reproduced, translated, or reduced to any + * electronic medium or machine readable form without prior + * written consent from Division Ltd. + */ +#ifndef _DU_H +#define _DU_H + +#include + +#include + +#ifdef _WIN31 +#include +#define malloc farmalloc +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * searching fopen/searching flook functions. + */ + +#define SF_READ 1 +#define SF_WRITE 2 +#define SF_EXEC 4 +#define SF_EXIST 8 + +typedef enum { DU_PATH_SYSTEM, DU_PATH_USER, DU_PATH_OFFSET } duPathType; + +typedef struct duPathIterator +{ + void *entry; +} duPathIterator; + +extern void duVersion(FILE *fp); + +extern void *duConvertPathToTable(char *sysPath, + char *userPath, + char *offset); +extern void *duAddPathToTable(void *table, + char *path, + duPathType type); +extern FILE *duSearchingFopen(char *fileName, + void *pathList, + char **extensions, + char *mode, + char *fullPath, + int maxFullPathSize, + int *extensionIndex, + int absolute); +extern int duSearchingFlook(char *fileName, + void *pathList, + char **extensions, + int32 mode, + char *fullPath, + int maxFullPathSize, + int *extensionIndex, + int absolute); +char *duPathIterateInit(duPathIterator *iter, void *table); +char *duPathIterate(duPathIterator *iter); +void *duPathRemoveEntry(void *table, char *entry); +void duPathDelete(void *table); +void duSfSearchPath(char *searchPath); +void duSfSearchVariable(char *searchVariable); + +/* + * Functions for efficient allocation of many identically sized blocks. + */ + +/* + * many small chunks are allocated at once. One of these + * structures manages that. + */ +typedef struct duBlkAllocChunk duBlkAllocChunk; + +/* + * the block header. Contains house keeping info for the block allocator. + */ +typedef struct duBlkCtrl { + duBlkAllocChunk *freeChunks; /* Ptr to linked list of free blocks */ + void *freeList; /* Pointer to the free list */ + uint32 totalItems; /* Total number of block items */ + uint32 freeItems; /* Total number of free items */ + uint32 chunkSize; /* Number of items to alloc at once */ + uint32 itemAlign; /* Alignment of units in bytes. */ + uint32 itemSize; /* Size of items in bytes */ +} duBlkCtrl; +extern void duBlkAllocConstruct(duBlkCtrl *ctrlBlock, + uint32 is, + uint32 cs, + uint32 align); +typedef void* (*duAllocFunc)(uint32); +typedef void (*duFreeFunc)(void*); + +extern void duBlkAllocDestruct(duBlkCtrl *ctrlBlock, + duFreeFunc ffunc); +extern void *duBlkAlloc(duBlkCtrl *ctrlBlock, + duAllocFunc afunc); +extern void duBlkFree(duBlkCtrl *ctrlBlock, void *item); + +/* + * Functions to manipulate hash tables. + */ +typedef int32 (*duHfunc)(void *key, int32 size); +typedef int (*duCfunc)(void *a, void *b); +typedef struct duHashElem duHashElem; +typedef struct duHashTab duHashTab; + +/* + * the following is used if iterating over all the elements in a hash + * table. It keeps track of where in the table you are for use with the + * iteration functions. + */ +typedef struct duHashIterator { + duHashTab *h; + int32 bucket; + duHashElem *e; +} duHashIterator; + +extern void *duHashLookup (duHashTab *t, void *key); +extern void duHashInstall (duHashTab *t, void *key, void *datum); + +#define duHashRemove(t, key) duHashRemoveK((t), (key), NULL) +#define duHashRemoveK(t, key, old) duHashRemoveKDatum ((t), (key), NULL, (old) ) + +extern void *duHashRemoveKDatum (duHashTab *t, void *key, void *d, void **old_key); +extern duHashTab *duNewHashTab (int32 Size, duHfunc hashfun, + duCfunc cmpfun); +extern void duDeleteHashTab (duHashTab *t); + +#define duHashIterateInit(iter, t) \ + duHashIterateInitK(iter, t, NULL) + +#define duHashIterate(iter) \ + duHashIterateK(iter, NULL) + +extern void *duHashIterateInitK (duHashIterator *iter, duHashTab *t, + void **key); +extern void *duHashIterateK (duHashIterator *iter, void **key); + + + + +void __duVerboseStart(int level); +void __duDebugStart(int level, char *file, int line); +void __duVerboseMessage(char *format, ...); +uint32 duVerbose_SetLevel(uint32 level); +uint32 duVerbose_GetLevel(void) ; +uint32 duDebug_SetLevel(uint32 level); +uint32 duDebug_GetLevel(void); +FILE *duDebug_SetLogFile(FILE *, int mode); +char *duDebug_SetName(char *, int mode); +void duDebug_Quiet(void); +void duDebug_VeryQuiet(void); +void duDebug_Noisy(void); +void duWarn(char *format, ...); +void duError(char *format, ...); +void duFatal(char *format, ...); + +extern uint32 __duVerbose_level; +extern uint32 __duDebug_level; + +#define DU_DEBUG_DONT_OVERIDE 0 +#define DU_DEBUG_OVERIDE 1 + +#define duVerbose(x,y) do { \ + if (__duVerbose_level & (x)) \ + { \ + __duVerboseStart(x); \ + __duVerboseMessage y; \ + } \ + } while (0) + +#ifdef NDEBUG +#undef duDebug +#define duDebug(x,y) ((void)0) +#else +#undef duDebug +#define duDebug(x,y) do { \ + if (__duDebug_level & (x)) \ + { \ + __duDebugStart(x, __FILE__, __LINE__); \ + __duVerboseMessage y; \ + } \ + } while (0) +#endif + + +#ifdef __cplusplus +} +#endif +#endif /*_DU_H */ diff --git a/CODE/RP/MUNGA_L4/libDPL/dsys/FILELIB.H b/CODE/RP/MUNGA_L4/libDPL/dsys/FILELIB.H new file mode 100644 index 0000000..1a5857c --- /dev/null +++ b/CODE/RP/MUNGA_L4/libDPL/dsys/FILELIB.H @@ -0,0 +1,315 @@ +/* +-- ---------------------------------------------------------------------------- +-- +-- Copyright 1995 Division Limited. +-- All Rights Reserved +-- +-- +-- System : +-- Module : +-- Object Name : $RCSfile: filelib.h,v $ +-- Revision : $Revision: 1.9 $ +-- Date : $Date: 95/05/16 13:46:20 $ +-- Author : $Author: bill $ +-- +-- Description +-- +-- Notes +-- +-- History +-- +-- +-- ---------------------------------------------------------------------------- +*/ + +#ifndef __FILELIB_H__ +#define __FILELIB_H__ + +#include + +#ifndef _PFILE +#ifdef _PF_LOCAL +#include "pfile.h" +#else +#include +#endif +#endif + +/*****************************************************************************/ +/* filelib error numbers */ +#define dflENO_READ 0x2001 +#define dflENO_WRITE 0x2002 +#define dflENO_CPATH 0x2003 +#define dflENO_CNAME 0x2004 +#define dflENO_PERMIT 0x2005 +#define dflENO_DIR 0x2006 +#define dflENO_RMFILE 0x2007 +#define dflENO_RMDIR 0x2008 +#define dflENO_USAGE 0x2009 + +#define dfl_STDIN_NAME "stdin" +#define dfl_STDOUT_NAME "stdout" + +extern char *progname ; + +#define dfl_SET_TO_LITTLE 0 +#define dfl_SET_TO_BIG 1 + +#define dflPATHDIV '/' +#define dflREPPATHDIV '\\' + +#ifndef _UNIX +#define dflDRIVEDIV ':' +#endif + +/**************************************************************************** + * File reading and writing routines. + */ + +typedef struct dflFILETYPE +{ + char *name ; + FILE *fp ; + int32 endian ; + char *buf, *bufEnd; + int32 remain ; + int32 filePos, endPos ; +} dflFILE, *dflFILEPTR ; + +#define dfl_BUFFER_SIZE 8192 + +void +dflSetEndian(dflFILEPTR file, int32 OutEndian) ; +dflFILEPTR +dflOpen(char *name, char *mode, int32 OutEndian) ; +int32 +dflClose(dflFILEPTR file) ; + +/**************************************************************************** + * File reading routines + */ +int32 +dflSeek(dflFILEPTR fl, int32 offset, int32 whence) ; +int32 +dflUngetc(char c, dflFILEPTR fl); +int32 +_dflGetc(dflFILEPTR fl) ; +int32 +_dflRead(void *ptr, int32 size, dflFILEPTR fl) ; + +#define dflTell(fl) ((fl)->filePos - (fl)->remain) +#define dflGetc(fl) \ + (((fl)->remain) ? \ + ((int32) *((fl)->bufEnd - ((fl)->remain)--)) : \ + _dflGetc(fl)) +#define dflRead(ptr,size,fl) \ + (((fl)->remain >= (size)) ? \ + ( memcpy((ptr),((fl)->bufEnd - (fl)->remain),(size)) , \ + (fl)->remain -= (size), (int32) dpgSUCCESS) : \ + _dflRead(ptr,size,fl)) + +#define dflError(fl) ((int32) ferror(fl->fp)) + + +int32 +dflRead1byte(dflFILEPTR fl, void *dest) ; +int32 +dflReadn1byte(dflFILEPTR fl, int32 n, void *dest) ; +int32 +dflRead2byte(dflFILEPTR fl, void *dest) ; +int32 +dflReadn2byte(dflFILEPTR fl, int32 n, void *dest) ; +int32 +dflRead4byte(dflFILEPTR fl, void *dest) ; +int32 +dflReadn4byte(dflFILEPTR fl, int32 n, void *dest) ; +int32 +dflRead8byte(dflFILEPTR fl, void *dest) ; +int32 +dflReadn8byte(dflFILEPTR fl, int32 n, void *dest) ; + +/**************************************************************************** + * File writing routines + */ + +void +dflWriteint8(dflFILEPTR fl, int8 i) ; +void +dflWriteuint8(dflFILEPTR fl, uint8 i) ; +void +dflWriteint16(dflFILEPTR fl, int16 i) ; +void +dflWriteuint16(dflFILEPTR fl, uint16 i) ; +void +dflWriteint32(dflFILEPTR fl, int32 i) ; +void +dflWritefloat32(dflFILEPTR fl, float32 f) ; +void +dflWritefloat64(dflFILEPTR fl, float64 f) ; +void +dflWritestr(dflFILEPTR fl, void *source, int32 size) ; + + +/*************************************************************************** + * File name manipulation routines + * + * Major re-write on 11/2/95 due to the introduction of material files. This + * led to the need of hierarchical break down of files from all geometry + * converters (i.e. dxf2vdi). As they all use the same structure the routines + * have been placed into this library. + */ +/***************************************************************************** +* PLEASE NOTE:- These file name manipulation routines expect unix style * +* names, even on dos, a simple call to dflFormatName should * +* solve any potential problems. * +*****************************************************************************/ + +/**************************************************************************** + * dflFormatName + * + * Converts all file names to unix style, i.e. all '\\' to '/' + * Should be called for every file name! + */ +void +dflFormatName(char *name) ; + +/**************************************************************************** + * dflSplitName - splits the given file name into is 3 constituent parts. + * If path, body or ext are NULL, no problems, that part isn't done. + * returns dymanically allocated strings, the path will have the closing + * '/' and neither the body ext will have the dividing '.' + */ +void +dflSplitName(char *FName, char **path, char **body, char **ext) ; + +/***************************************************************************** + * dflComposeName - Opposite to SplitName, i.e. given the 3 parts, it joins + * them together. Any of them can be NULL. If the body starts with a '/' then + * the path is ignored. if the path doesnt end with a '/' then one is inserted + * if the extension is NULL or "" then no '.' is inserted at the end of body. + */ +char * +dflComposeName(char *path, char *body, char *ext) ; + +/**************************************************************************** + * dflCreateName - same as dflComposeName, only excepts 3 paths and joins + * them together, any can be NULL. + */ +char * +dflCreateName(char *basePath, char *midPath, char *extPath, + char *base, char *ext) ; + +/*************************************************************************** + * dflBackupName - Checks for existance of the file 'filename', if it exists, + * it creates a backup filename 'BackName' by either inserting the + * "division.sav" directory into the path, or if the environment variable + * ${division.sav} is set then it is asumed to be the absolute output path + * and the base name of 'filename' is appended. If the file 'BackName' exists + * then it is removed, and 'filename' is moved to 'BackName'. + * + * Returns -1 if an error occured or the number of paths created. + * 'BackName is a dynamically allocated string which must be freed be the + * user + */ +int32 +dflBackupName(char *filename, char **Backup) ; + +/**************************************************************************** + * dflRemoveBackup - removes everything generated from a call to dflBackupName + * Requires the return value to determine how many directories are to be + * removed. If backing up 2 or more files it is important to Remove the backup + * in an reversed order, soley because the first one will have created any + * required directies and its return value will be non zero, these directies + * can only be removed after all the the backup files have been removed. + * returns dpgERROR if failed to remove something, else returns dpgSUCCESS + */ +int32 +dflRemoveBackup(char *backName, int32 noDirs) ; + +/**************************************************************************** + * dflTempName - Creates a temporary file name based on the given file name. + * returns NULL on failure, dynamically allocated string otherwise. + */ +char * +dflTempName(char *fname) ; + +#define dflUSEMID 0x01 +#define dflASCII 0x02 +#define dflLIBRARY 0x04 +char * +dflCreateVtxName(char *basePath, int32 useMid, char *extPath, char *base) ; +char * +dflCreateBgfName(char *basePath, int32 useMid, char *extPath, char *base, + dpfFILETYPE OutMode) ; +char * +dflCreateBmfName(char *basePath, int32 useMid, char *extPath, char *base, + dpfFILETYPE OutMode, int libOut) ; +char * +dflCreateVdiName(char *basePath, int32 useMid, char *extPath, char *base, + int libOut) ; + +/************************************************************************** + * Create Path + * creates a single path given the path string, last path must terminate in + * a '/' else it will not be tested for. + * + * Return -1 on an error (dpgERROR), else the number of directories created. + */ +int32 +dflCreatePath(char *path) ; +/************************************************************************** + * dflCreatePaths - Sets up the division path structure given the base and + * extended paths and whether to use mid paths, all required + * paths are created, which includes material, geometry, texture, vdifiles + * and the vdi library path. + */ +int32 +dflCreatePaths(char *basePath, int32 useMid, char *extPath) ; + +/************************************************************************ + * dflCreateBaseName + * creates a base name (bit between the path and the extension) ready + * for a Compose or CreateName. if the numb is less than zero, it is + * ignored, if dosName is non-zero then the output name will be no long + * than 8 chars. + */ +char * +dflCreateBaseName(char *base, int32 numb, int32 dosName) ; + + +#define byte8_flip(p) do { \ + char ___t; \ + ___t=p[0]; \ + p[0]=p[7]; \ + p[7]=___t; \ + ___t=p[1]; \ + p[1]=p[6]; \ + p[6]=___t; \ + ___t=p[2]; \ + p[2]=p[5]; \ + p[5]=___t; \ + ___t=p[3]; \ + p[3]=p[4]; \ + p[4]=___t; \ +} while (0) + +#define byte4_flip(p) do { \ + char ___t; \ + ___t=p[0]; \ + p[0]=p[3]; \ + p[3]=___t; \ + ___t=p[1]; \ + p[1]=p[2]; \ + p[2]=___t; \ +} while (0) + +#define byte2_flip(p) do { \ + char ___t; \ + ___t=p[0]; \ + p[0]=p[1]; \ + p[1]=___t; \ +} while (0) + + +#endif /* __FILELIB_H__ */ + diff --git a/CODE/RP/MUNGA_L4/libDPL/dsys/GETPARAM.H b/CODE/RP/MUNGA_L4/libDPL/dsys/GETPARAM.H new file mode 100644 index 0000000..4bb85b9 --- /dev/null +++ b/CODE/RP/MUNGA_L4/libDPL/dsys/GETPARAM.H @@ -0,0 +1,73 @@ +/* +-- ---------------------------------------------------------------------------- +-- +-- Copyright 1995 Division Limited. +-- All Rights Reserved +-- +-- +-- System : +-- Module : +-- Object Name : $RCSfile: getparam.h,v $ +-- Revision : $Revision: 1.6 $ +-- Date : $Date: 95/04/27 23:01:16 $ +-- Author : $Author: bill $ +-- +-- Description +-- +-- Notes +-- +-- History +-- +-- +-- ---------------------------------------------------------------------------- +*/ + +#ifndef __GETPARAM_H__ +#define __GETPARAM_H__ + +#ifdef _PF_LOCAL +#include "pgeneral.h" +#else +#include +#endif + +/*****************************************************************************/ +/* getparam error numbers */ +#define dgpENO_STREXP 0x3001 +#define dgpENO_UNKOPT 0x3002 +#define dgpENO_USAGE 0x3003 +#define dgpENO_RSRCF 0x3004 + +/**************************************************************************** + * getparam monitor numbers */ +#define dgpMON_OPTIONS 0x00001000 +#define dgpMON_FILES 0x00002000 + + +#define dgp_END 0 +#define dgp_NO_STR 1 +#define dgp_D_STR 2 +#define dgp_DJOIN_STR 3 +#define dgp_DAFTER_STR 4 +#define dgp_DBOTH_STR 5 +#define dgp_O_STR 6 +#define dgp_OJOIN_STR 7 +#define dgp_OAFTER_STR 8 +#define dgp_OBOTH_STR 9 + +typedef struct { + char optname[15] ; + int32 opttype ; + int32 optreturn ; +} dgpTABLE, *dgpTABLEPTR ; + +extern char *progname ; + +int32 +dgpGetopt(int32 argc, char *argv[], dgpTABLEPTR table, + int32 *NoFiles, char **files[], char **str1, char **str2) ; + +void +dgpFreeFiles(int32 NoFiles, char *files[]) ; + +#endif /* __GETPARAM_H__ */ diff --git a/CODE/RP/MUNGA_L4/libDPL/dsys/MAPFILE.H b/CODE/RP/MUNGA_L4/libDPL/dsys/MAPFILE.H new file mode 100644 index 0000000..4c13dcd --- /dev/null +++ b/CODE/RP/MUNGA_L4/libDPL/dsys/MAPFILE.H @@ -0,0 +1,99 @@ +/* +-- ---------------------------------------------------------------------------- +-- +-- Copyright 1994 Division Limited. +-- All Rights Reserved +-- +-- +-- System : +-- Module : +-- Object Name : $RCSfile: mapfile.h,v $ +-- Revision : $Revision: 1.3 $ +-- Date : $Date: 95/04/27 23:01:16 $ +-- Author : $Author: bill $ +-- +-- Description +-- +-- Notes +-- +-- History +-- +-- +-- ---------------------------------------------------------------------------- +*/ + +#ifndef __MAPFILE_H__ +#define __MAPFILE_H__ + +#ifdef _PF_LOCAL +#include "ptool.h" +#else +#include +#endif + +/* Error Numbers */ +#define dmpENO_OPEN 0x50001 +#define dmpENO_FORM 0x50002 + +typedef struct dmpMATFILETYPE +{ + char *name ; + dpfFILEPTR file ; + struct dmpMATFILETYPE *next ; +} dmpMATFILE, *dmpMATFILEPTR ; + +typedef struct dmpBLOCKTYPE +{ + char *name ; + int32 ignore ; + struct dmpBLOCKTYPE *next ; +} dmpBLOCK, *dmpBLOCKPTR ; + +typedef struct dmpMAPPINGTYPE +{ + char *from, *to ; + int32 gotMat ; + int32 gotText ; + dptTEXTURE text ; + struct dmpMAPPINGTYPE *next ; +} dmpMAPPING, *dmpMAPPINGPTR ; + +typedef struct +{ + dmpMATFILEPTR materials ; + dmpMAPPINGPTR mappings ; + dmpBLOCKPTR blocks ; +} dmpFILE, *dmpFILEPTR ; + +dmpFILEPTR +dmpCreateFile(void) ; +dmpMATFILEPTR +dmpCreateMatFile(void) ; +int32 +dmpAddMatFile(dmpFILEPTR mp, dmpMATFILEPTR mat) ; +dmpBLOCKPTR +dmpCreateBlock(void) ; +int32 +dmpAddBlock(dmpFILEPTR mp, dmpBLOCKPTR blk) ; +dmpMAPPINGPTR +dmpCreateMapping(void) ; +int32 +dmpAddMapping(dmpFILEPTR mp, dmpMAPPINGPTR map) ; +void +dmpFreeFile(dmpFILEPTR mp) ; +dmpMAPPINGPTR +dmpFindMapping(dmpFILEPTR mp, char *name) ; +dpfMATERIALPTR +dmpFindMaterial(dmpFILEPTR mp, char *name) ; +dpfTEXTUREPTR +dmpFindTexture(dmpFILEPTR mp, char *name) ; +dmpBLOCKPTR +dmpFindBlock(dmpFILEPTR mp, char *name) ; + +int32 +dmpGetMapFile(dmpFILEPTR mp, char *fileName) ; +int32 +dmpSaveFile(char *name, dmpFILEPTR file) ; + + +#endif /* __MAPFILE */ diff --git a/CODE/RP/MUNGA_L4/libDPL/dsys/PARSER.H b/CODE/RP/MUNGA_L4/libDPL/dsys/PARSER.H new file mode 100644 index 0000000..29fb536 --- /dev/null +++ b/CODE/RP/MUNGA_L4/libDPL/dsys/PARSER.H @@ -0,0 +1,122 @@ +/* + * PROJECT: + * SUBSYSTEM: + * MODULE: + * + * FILE: $RCSfile: parser.h,v $ + * REVISION: $Revision: 1.8 $ + * Date: $Date: 1995/05/18 09:41:31 $ + * Author: $Author: jeff $ + * RCS Ident: $Id: parser.h,v 1.8 1995/05/18 09:41:31 jeff beta $ + * + * FUNCTION: + * + * Copyright (c) 1994 Division Ltd. + * + * All Rights Reserved. + * + * This Document may not, in whole or in part, be copied, + * photocopied, reproduced, translated, or reduced to any + * electronic medium or machine readable form without prior + * written consent from Division Ltd. + */ +#ifndef _PARSER_H +#define _PARSER_H + +#ifdef __cplusplus +extern "C" { +#endif +#define PARSER_MAX_TOKEN_SIZE 2048 +#define PARSER_MATCH_CASE 0 +#define PARSER_ANY_CASE 1 + +/* + * macros for testing char classes + */ +#define PARSER_LEX_START 1 +#define PARSER_LEX_CONTINUE 2 +#define parserStartChar(f,x) ((f)->LexClass[(x)] & PARSER_LEX_START ) +#define parserContinueChar(f,x) ((f)->LexClass[(x)] & PARSER_LEX_CONTINUE ) + +/* + * tokens returned by parser functions + */ +#define PARSER_OK 0 +#define PARSER_ERR -1 +#define PARSER_EOF -2 +#define PARSER_STRING -3 +#define PARSER_INT -4 +#define PARSER_FLOAT -5 +#define PARSER_PUSH -6 +#define PARSER_POP -7 +#define PARSER_QUOTED_STRING -8 + +/* + * used to hold pre-processing state info. + * Contents are not made public. + */ +typedef struct pprocState pprocState; + +typedef struct dParseKeyTab +{ + int tok; + char *name; + int matchCase; +} dParseKeyTab; + + +typedef struct dParseFile +{ + int errorFlag; + int seeIncludes; + int pushedBackToken; + float fpNumber; + long iNumber; + char *buffer; + int bufSize; + int bufPos; + dParseKeyTab *keyTab; + int charNo; + pprocState *ppstate; + char LexClass[128]; +} dParseFile, *dParseFilePtr; + +extern void parserVersion(FILE *openfp); +extern dParseFilePtr parserCreate(char *name, + FILE *openfp, + dParseKeyTab *keyTable, + int bufferSize, + FILE *(*fileFinder)(const char *), + const char *startChars, + const char *continueChars, + int seeIncludes); +extern void parserDestroy(dParseFilePtr fptr); + +extern dParseFilePtr parserOpenFile(char *name, + FILE *fp, + dParseKeyTab *keyTable, + int bufferSize, + FILE *(*fileFinder)(const char *), + const char *startChars, + const char *continueChars, + int seeIncludes); +extern void parserCloseFile(dParseFilePtr fPtr); + +extern int parserGetc(dParseFilePtr fptr); +extern int parserUngetc(dParseFilePtr fptr, char c); + +extern char *parserTokenToString(dParseFilePtr fptr, const int token); +extern int parserPushToken(dParseFilePtr fptr, const int token); +extern int parserNextToken(dParseFilePtr fptr); + +extern char *parserMatchString(dParseFilePtr fptr); +extern int parserMatchInt(dParseFilePtr fptr, int *num); +extern int parserMatchFloat(dParseFilePtr fptr, float *num); +extern int parserMatchCharacter(dParseFilePtr fptr, char c); + +extern const char *parserCurrentFile(dParseFilePtr fptr); +extern int parserCurrentLine(dParseFilePtr fptr); +#ifdef __cplusplus +} +#endif +#endif diff --git a/CODE/RP/MUNGA_L4/libDPL/dsys/PFBIZTAG.H b/CODE/RP/MUNGA_L4/libDPL/dsys/PFBIZTAG.H new file mode 100644 index 0000000..3f2f10c --- /dev/null +++ b/CODE/RP/MUNGA_L4/libDPL/dsys/PFBIZTAG.H @@ -0,0 +1,197 @@ +/* + * PROJECT: + * SUBSYSTEM: + * MODULE: + * + * File: $RCSfile: pfbiztag.h,v $ + * Revision: $Revision: 1.13 $ + * Date: $Date: 1995/10/06 10:47:30 $ + * Author: $Author: bill $ + * RCS Ident: $Id: pfbiztag.h,v 1.13 1995/10/06 10:47:30 bill Exp $ + * + * FUNCTION: + * + * Copyright (c) 1995 Division Ltd. + * + * All Rights Reserved. + * + * This Document may not, in whole or in part, be copied, + * photocopied, reproduced, translated, or reduced to any + * electronic medium or machine readable form without prior + * written consent from Division Ltd. + */ +#ifndef __PFBIZTAG_H__ +#define __PFBIZTAG_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +/* PUBLIC DEFINES =======================================*/ +/* Biz v1.0 tag defines */ +#define dpf_BIZ_PATCH 34 +#define dpf_BIZ_STRIP 35 +#define dpf_BIZ_TRISTRIP 0 +#define dpf_BIZ_POLYSTRIP 1 +#define dpf_BIZ_DONE 37 + +/* Biz v2.x tag defines */ +#define dpfB_0_COMMENT_TAG 0x0000 +#define dpfB_HEADER_TAG 0x0003 +#define dpfB_PROPAGATED_COMMENT_TAG 0x0004 +#define dpfB_BIZ_DONE 0x0005 +#define dpfB_TEXTURE_TAG 0x0010 +#define dpfB_TEXTURE_MAP_TAG 0x0011 +#define dpfB_TEXTURE_MINIFY_TAG 0x0012 +#define dpfB_TEXTURE_MAGNIFY_TAG 0x0013 +#define dpfB_TEXTURE_ALPHA_TAG 0x0014 +#define dpfB_TEXTURE_WRAP_U_TAG 0x0015 +#define dpfB_TEXTURE_WRAP_V_TAG 0x0016 +#define dpfB_TEXTURE_DETAIL_TAG 0x0017 +#define dpfB_TEXTURE_BITSLICE_TAG 0x0018 +#define dpfB_MATERIAL_TAG 0x0020 +#define dpfB_MATERIAL_TEXTURE_TAG 0x0021 +#define dpfB_MATERIAL_ENVIRONMENT_TAG 0x0022 +#define dpfB_MATERIAL_AMBIENT_TAG 0x0023 +#define dpfB_MATERIAL_DIFFUSE_TAG 0x0024 +#define dpfB_MATERIAL_SPECULAR_TAG 0x0025 +#define dpfB_MATERIAL_EMISSIVE_TAG 0x0026 +#define dpfB_MATERIAL_OPACITY_TAG 0x0027 +#define dpfB_MATERIAL_RAMP_TAG 0x0028 +#define dpfB_RAMP_TAG 0x0030 +#define dpfB_RAMP_DATA_TAG 0x0031 +#define dpfB_OBJECT_TAG 0x0040 +#define dpfB_LOD_TAG 0x0041 +#define dpfB_PATCH_TAG 0x0042 +#define dpfB_POLYGON_TAG 0x0043 +#define dpfB_TRISTRIP_TAG 0x0044 +#define dpfB_POLYSTRIP_TAG 0x0045 +#define dpfB_PMESH_TAG 0x0046 +#define dpfB_CONNECTION_LIST_TAG 0x0047 +#define dpfB_SPHERE_LIST_TAG 0x0048 +#define dpfB_SPHERE_TAG 0x0049 +#define dpfB_LINE_TAG 0x004a +#define dpfB_TEXT_TAG 0x004b +#define dpfB_TEXT_STRING_TAG 0x004c +#define dpfB_PCONN_LIST_TAG 0x004d +#define dpfB_PSTRIP_LIST_TAG 0x004e +#define dpfB_POINT_LIST_TAG 0x0050 + +#define dpfB_BOUND_TAG 0x0070 +#define dpfB_BBOX_TAG 0x0071 +#define dpfB_BSPHERE_TAG 0x0072 + +#define dpfB_LINE_NODE_TAG 0x0080 +#define dpfB_VERTEX_XYZ_TAG 0x0080 +#define dpfB_VERTEX_XYZ_N_TAG 0x0081 +#define dpfB_VERTEX_XYZ_RGBA_TAG 0x0082 +#define dpfB_VERTEX_XYZ_UV_TAG 0x0088 +#define dpfB_VERTEX_XYZ_N_UV_TAG 0x0089 +#define dpfB_VERTEX_XYZ_RGBA_UV_TAG 0x008A + +#define dpfB_2_COMMENT_TAG 0x2000 +#define dpfB_VERSION_TAG 0x2002 +#define dpfB_DATE_TAG 0x2003 +#define dpfB_TIME_TAG 0x2004 +#define dpfB_SCALE_TAG 0x2005 +#define dpfB_PRECISION_TAG 0x2006 +#define dpfB_FILETYPE_TAG 0x2007 +#define dpfB_SV_NAME_TAG 0x2008 +#define dpfB_MATERIAL_NAME_TAG 0x2008 +#define dpfB_RAMP_NAME_TAG 0x2008 +#define dpfB_TEXTURE_NAME_TAG 0x2008 +#define dpfB_UNIT_TAG 0x2009 +#define dpfB_SCOPE_TAG 0x200a +#define dpfB_SV_F_MATERIAL_TAG 0x2030 +#define dpfB_SV_B_MATERIAL_TAG 0x2031 +#define dpfB_SV_PLANE_TAG 0x2032 +#define dpfB_SV_DRAW_MODE_TAG 0x2033 +#define dpfB_SV_DECAL_TAG 0x2034 +#define dpfB_SV_FACETED_TAG 0x2035 +#define dpfB_SV_VERTEX_TAG 0x2036 +#define dpfB_SV_SPECIAL_TAG 0x2037 +#define dpfB_SV_LOCK_TAG 0x2039 +#define dpfB_SPHERE_DICE_V_TAG 0x2040 +#define dpfB_SPHERE_DICE_U_TAG 0x2041 +#define dpfB_LINE_THICKNESS_TAG 0x2042 +#define dpfB_TEXT_FONT_TAG 0x2043 +#define dpfB_TEXT_SCALE_TAG 0x2044 +#define dpfB_TEXT_ORIENTATION_TAG 0x2045 + +#define dpfB_LOD_DISTANCE_TAG 0x2046 +#define dpfB_LOD_REFERENCE_TAG 0x2047 +#define dpfB_LOD_TRANSITION_TAG 0x2048 + +#define dpfB_POINT_SIZE_TAG 0x2049 + +#define dpfB_BAUTO_TAG 0x2070 +#define dpfB_BLODNAME_TAG 0x2071 +#define dpfB_BOBJNAME_TAG 0x2072 + +#define dpfB_NO_DEF_TAGS 256 +#define dpfB_NO_CON_TAGS 256 + +#define dpfValidTag(tag) \ + ((((tag) & 0x1fff) > 0x00ff) ? 0 : \ + ((tag) & 0x2000) ? dpfB_CON_TAG_INFO[(tag) & 0x00ff] : \ + dpfB_DEF_TAG_INFO[(tag) & 0x00ff] ) + +/* PUBLIC TYPES =========================================*/ + + +/* PUBLIC VARIABLES ======================================*/ + + +extern uint8 dpfB_DEF_TAG_INFO[dpfB_NO_DEF_TAGS] ; +extern uint8 dpfB_CON_TAG_INFO[dpfB_NO_DEF_TAGS] ; + + +#ifdef _dpf_INCLUDE_BIZ_TABLE + +uint8 dpfB_DEF_TAG_INFO[dpfB_NO_DEF_TAGS] = { + 1, 1, 1, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, + 3, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, + 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 3, 1, 3, 3, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, + 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +} ; +uint8 dpfB_CON_TAG_INFO[dpfB_NO_DEF_TAGS] = { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +} ; + +#endif + +/* PUBLIC FUNCTIONS ======================================*/ + + +#ifdef __cplusplus +} +#endif + +#endif /*__PFBIZTAG_H__ */ diff --git a/CODE/RP/MUNGA_L4/libDPL/dsys/PFILE.H b/CODE/RP/MUNGA_L4/libDPL/dsys/PFILE.H new file mode 100644 index 0000000..2794741 --- /dev/null +++ b/CODE/RP/MUNGA_L4/libDPL/dsys/PFILE.H @@ -0,0 +1,1166 @@ +/**************************************************************************** + * + * Copyright 1995 Division Limited. + * All Rights Reserved + * + * + * System : + * Module : + * Object Name : $RCSfile: pfile.h,v $ + * Revision : $Revision: 1.15 $ + * Date : $Date: 95/05/16 13:46:35 $ + * Author : $Author: bill $ + * Last Modified : <110595.1427> + * + * Description + * + * Notes + * + * History + * + * $Log: pfile.h,v $ + * Revision 1.15 95/05/16 13:46:35 bill + * Added 1) dos. 2) STRIP_LIST. 3) POINTLIST. 4) biz->bgf + * + * Revision 1.14 95/04/27 23:01:16 bill + * Major ci for 3.0 Alpha (new: pgeneral, dm) + * + * + **************************************************************************** + * + * Copyright (c) 1995 Division Ltd. + * + * All Rights Reserved. + * + * This Document may not, in whole or in part, be copied, + * photocopied, reproduced, translated, or reduced to any + * electronic medium or machine readable form without prior + * written consent from Division Ltd. + ****************************************************************************/ + +#ifndef __PFILE_H__ +#define __PFILE_H__ + +#ifdef _PF_LOCAL +#include "pgeneral.h" +#else +#include +#endif + +#include + +/*****************************************************************************/ +/* pfile error numbers */ +#define dpfENO_ROPEN 0x8001 +#define dpfENO_READ 0x8002 +#define dpfENO_WOPEN 0x8003 +#define dpfENO_WRITE 0x8004 +#define dpfENO_CLOSE 0x8005 +#define dpfENO_FORM 0x8006 +#define dpfENO_VALUE 0x8007 +#define dpfENO_USAGE 0x8008 +#define dpfENO_NULL 0x8009 +#define dpfENO_CONV 0x800A + +/*****************************************************************************/ +/* pfile warning levels */ +#define dpfWARN_BADFILE 2 +#define dpfWARN_PROBLEM 3 +/*****************************************************************************/ +/* pfile monitor flags */ +#define dpfMON_READ 0x00100000 +#define dpfMON_WRITE 0x00200000 + +/*****************************************************************************/ +/* Useful constants */ +#define dpf_ALLOW_B2Z 1 +#define dpf_ALLOW_BMF 2 +#define dpf_ALLOW_ALL 3 + +/* max min ranges for types */ +#define dpfRGB_MAX (float32) 1.0 +#define dpfRGB_MIN (float32) 0.0 +#define dpfALPHA_MAX (float32) 1.0 +#define dpfALPHA_MIN (float32) 0.0 +#define dpfV1POWER_MAX (float32) 32.0 +#define dpfV1POWER_MIN (float32) 1.0 +#define dpfV2POWER_MAX (float32) 128.0 +#define dpfV2POWER_MIN (float32) 1.0 +#define dpfOPACITY_MAX (float32) 1.0 +#define dpfOPACITY_MIN (float32) 0.0 +#define dpfDICE_MAX 65565 +#define dpfDICE_MIN 3 +#define dpfDICE_DETER 0 +#define dpfTHICK_MAX 255 +#define dpfTHICK_MIN 1 + +/*****************************************************************************/ +/* Different vertex types */ +#define dpf_VERT_NONE (uint8) 0x0000 +#define dpf_VERT_NORMALS (uint8) 0x0001 +#define dpf_VERT_RGBA (uint8) 0x0002 +#define dpf_VERT_LUMINANCE (uint8) 0x0004 +#define dpf_VERT_TEXTURE (uint8) 0x0008 +#define dpf_VERT_THREED_TEXTURE (uint8) 0x0010 + +/*****************************************************************************/ +/* Different Geometry Types */ +#define dpf_GEOM_UNDEFINED (int32) 0x0000 +#define dpf_GEOM_POLYGON (int32) 0x0043 +#define dpf_GEOM_TRISTRIP (int32) 0x0044 +#define dpf_GEOM_POLYSTRIP (int32) 0x0045 +#define dpf_GEOM_PMESH (int32) 0x0046 +#define dpf_GEOM_SPHERE (int32) 0x0048 +#define dpf_GEOM_LINE (int32) 0x004A +#define dpf_GEOM_TEXT (int32) 0x004B +#define dpf_GEOM_POINT (int32) 0x0050 + +/*****************************************************************************/ +/* Unit conversion scaling factors */ +#define dpfINCHtoMM 25.4 +#define dpfMMtoINCH (1.0/dpfINCHtoMM) +#define dpfINCHtoM 0.0254 +#define dpfMtoINCH (1.0/dpfINCHtoM) + +/*****************************************************************************/ +/* types. */ +/* must never have double precision without global changes */ +/* +#define dpf_DOUBLE_PRECISION +*/ + +typedef enum +{ /* used for indexing arrays, identifying axies etc etc */ + dpf_PITCH = 0, dpf_YAW = 1, dpf_ROLL = 2, + dpfERGBA = 4, dpf_R = 0, dpf_G = 1, dpf_B = 2, + dpf_A = 3, dpf_POWER=3, dpf_LUM = 0, + dpfETEXT = 2, dpf_U = 0, dpf_V = 1, + dpfETHREEDTEXT = 3 +} coord; + +typedef int32 dpfIVECTOR[3] ; /* Generic 4 elem vector. */ +typedef float32 dpfRGBA[dpfERGBA]; +typedef float32 dpfTEXT[dpfETEXT] ; +typedef float32 dpfTHREEDTEXT[dpfETHREEDTEXT] ; + +typedef enum {dpf_B2Z_FILE, dpf_V2Z_FILE, + dpf_VIZ_FILE, dpf_BIZ_FILE, + dpf_UNKNOWN_FILE } dpfFILETYPE; + +typedef enum {dpf_FILE_GEOMETRY=0, dpf_FILE_MATERIAL=1 } dpfFILEFORMAT; + +typedef enum {dpfREAD, dpfWRITE} dpfFILEMODE; + +/* New enumerated types */ +typedef enum { dpf_MIN_DEFAULT=0, dpf_MIN_POINT_SAMPLED=1, + dpf_MIN_BILINEAR=2, dpf_MIN_TRILINEAR=3, + dpf_MIN_MIP_MAP_LINEAR=4, dpf_MIN_MIP_MAP_BILINEAR=5, + dpf_MIN_MIP_MAP_TRILINEAR=6, dpf_MIN_MIP_MAP_QUADLINEAR=7, + dpf_MIN_MIP_MAP_POINT_SAMPLED=8 } dpfMINIFY; +typedef enum { dpf_MAG_DEFAULT=0, dpf_MAG_POINT_SAMPLED=1, + dpf_MAG_BILINEAR=2, dpf_MAG_TRILINEAR=3, + dpf_MAG_BICUBIC=4, dpf_MAG_SHARPEN=5 } dpfMAGNIFY; +typedef enum { dpf_ALPHA_BLEND=0, dpf_ALPHA_CUT=1, + dpf_ALPHA_BLEND_CUT=2 } dpfALPHA ; +typedef enum { dpf_WRAP_REPEAT=0, dpf_WRAP_CLAMP=1, dpf_WRAP_SELECT=2 } dpfWRAP ; +typedef enum { dpf_DETAIL_NONE=0, dpf_DETAIL_ADD=1, + dpf_DETAIL_MODULATE=2 } dpfDETAIL ; +typedef enum { dpf_TRANS_SNAP=0, dpf_TRANS_BLEND=1 } dpfTRANSITION ; +typedef enum { dpf_MAT_NONE=0, dpf_MAT_NAMED=1, + dpf_MAT_DEFAULT=2, dpf_MAT_F_MATERIAL=3 } dpfMATTYPE ; +typedef enum { dpf_MATTXT_NONE=0, dpf_MATTXT_DEFAULT=1, + dpf_MATTXT_NAMED=2 } dpfMATTXTTYPE ; +typedef enum { dpf_PLANE_NORMAL=0, dpf_PLANE_UNDERLAY=1, + dpf_PLANE_OVERLAY=2 } dpfPLANE ; +typedef enum { dpf_FACET_NONE=0, dpf_FACET_BACKFACE=1, + dpf_FACET_FRONTFACE=2, dpf_FACET_TWOFACED=3 } dpfFACET ; +typedef enum { dpf_DM_FILLED=0, dpf_DM_WIREFRAME=1, dpf_DM_DOTTED=2 } dpfDRAWMODE ; +typedef enum { dpf_PREC_SINGLE=0, dpf_PREC_DOUBLE=1 } dpfPRECISION ; +typedef enum { dpf_UNIT_INCH=0, dpf_UNIT_METRE=1 } dpfUNIT ; +typedef enum { dpf_FONT_QUICK=0, dpf_FONT_BITMAP=1, dpf_FONT_VECTOR=2, + dpf_FONT_POLY_2D=3, dpf_FONT_POLY_3D=4, dpf_FONT_TEXTURE=5 } dpfFONT ; +typedef enum { dpf_AUTO_OFF=0, dpf_AUTO_ON=1 } dpfAUTO ; +typedef enum { dpf_LOCK_OFF=0, dpf_LOCK_ON=1 } dpfLOCK ; + +struct dpfSTRINGTYPE ; +typedef struct dpfSTRINGTYPE *dpfSTRINGPTR ; + +struct dpfSURFACETYPE ; +typedef struct dpfSURFACETYPE *dpfSURFACEPTR; + +struct dpfBOUNDTYPE ; +typedef struct dpfBOUNDTYPE *dpfBOUNDPTR ; + +struct dpfTEXTURETYPE ; +typedef struct dpfTEXTURETYPE *dpfTEXTUREPTR ; + +struct dpfRAMPTYPE ; +typedef struct dpfRAMPTYPE *dpfRAMPPTR ; + +struct dpfMATERIALTYPE ; +typedef struct dpfMATERIALTYPE *dpfMATERIALPTR ; + +struct dpfVERTEXTYPE ; +typedef struct dpfVERTEXTYPE *dpfVERTEXPTR ; + +struct dpfSLISTTYPE; +typedef struct dpfSLISTTYPE *dpfSLISTPTR ; + +struct dpfCLISTTYPE; +typedef struct dpfCLISTTYPE *dpfCLISTPTR ; + +struct dpfSPHERENODETYPE ; +typedef struct dpfSPHERENODETYPE *dpfSPHERENODEPTR ; + +struct dpfTEXTNODETYPE ; +typedef struct dpfTEXTNODETYPE *dpfTEXTNODEPTR ; + +struct dpfPOLYGONTYPE ; +typedef struct dpfPOLYGONTYPE *dpfPOLYGONPTR ; + +struct dpfGEOMETRYTYPE ; +typedef struct dpfGEOMETRYTYPE *dpfGEOMETRYPTR ; + +struct dpfPATCHTYPE ; +typedef struct dpfPATCHTYPE *dpfPATCHPTR ; + +struct dpfLODTYPE ; +typedef struct dpfLODTYPE *dpfLODPTR ; + +struct dpfOBJECTTYPE ; +typedef struct dpfOBJECTTYPE *dpfOBJECTPTR ; + +struct dpfHEADERTYPE ; +typedef struct dpfHEADERTYPE *dpfHEADERPTR ; + +struct dpfFILE_TYPE ; +typedef struct dpfFILE_TYPE *dpfFILEPTR ; + +/* ptools declaration */ + +struct dptTRIANGLETYPE ; +typedef struct dptTRIANGLETYPE *dptTRIANGLEPTR ; +struct dptMESHTYPE ; +typedef struct dptMESHTYPE *dptMESHPTR ; + +/*****************************************************************************/ +/* Externally callable Functions. */ +/*****************************************************************************/ +/* Useful macros */ + +#define dpfRGBCmp(a,b) memcmp(a, b, sizeof(float32)*3) +#define dpfRGBACmp(a,b) memcmp(a, b, sizeof(dpfRGBA)) +#define dpfTextCmp(a,b) memcmp(a, b, sizeof(float32)*2) +#define dpfRGBACpy(a,b) memcpy(a, b, sizeof(dpfRGBA)) +#define dpfTextCpy(a,b) memcpy(a, b, sizeof(dpfTEXT)) + +#define dpfBadFloat(f) (((*(long *)&(f) & 0x7f800000L)==0x7f800000L)) + +/*****************************************************************************/ +/* pfsurfac Surfaces */ +void +dpfInitSurface(dpfSURFACEPTR); /* Set to dpfINITSURFACE */ +void +dpfReinitSurface(dpfSURFACEPTR surf); +void +dpfCpySurface(dpfSURFACEPTR surf1, dpfSURFACEPTR surf2) ; +int32 +dpfCmpSurface(dpfSURFACEPTR s1, dpfSURFACEPTR s2) ; +/* if s1 == s2 then return 0, else return non-zero */ + + +/* Set surface characturistics */ +void +dpfSetSurface(dpfSURFACEPTR surf, dpfSURFACEPTR source) ; +/* Set material name literally sets the name to the given pointer, +** so make sure it dynamically allocated and not used by anything else! +** If in doubt use copy name which creates a new dynamically allocated name. +*/ +void +dpfSetSurfaceName(dpfSURFACEPTR surf, char *name) ; +void +dpfSetSurfaceF_Material(dpfSURFACEPTR surf, dpfMATTYPE Material, char *MatName) ; +void +dpfSetSurfaceB_Material(dpfSURFACEPTR surf, dpfMATTYPE Material, char *MatName) ; +void +dpfSetSurfaceVertex(dpfSURFACEPTR surf, uint8 Characturistic, uint8 State) ; +void +dpfSetSurfacePlane(dpfSURFACEPTR surf, dpfPLANE Plane) ; +void +dpfSetSurfaceFacet(dpfSURFACEPTR surf, dpfFACET Facet) ; +void +dpfSetSurfaceDecal(dpfSURFACEPTR surf, int32 decal) ; +void +dpfSetSurfaceDrawMode(dpfSURFACEPTR surf, dpfDRAWMODE DrawMode, uint8 Width) ; +void +dpfSetSurfaceLock(dpfSURFACEPTR surf, dpfLOCK lock) ; +void +dpfSetSurfaceSpecial(dpfSURFACEPTR surf, dpfSTRINGPTR Special) ; + +/* Get surface characturistics */ +/* Returns a pointer to THE name. so don't destroy */ +char * +dpfGetSurfaceName(dpfSURFACEPTR surf) ; +dpfMATTYPE +dpfGetSurfaceF_Material(dpfSURFACEPTR surf, char **MatName) ; +dpfMATTYPE +dpfGetSurfaceB_Material(dpfSURFACEPTR surf, char **MatName) ; +uint8 +dpfGetSurfaceVertex(dpfSURFACEPTR surf) ; +dpfPLANE +dpfGetSurfacePlane(dpfSURFACEPTR surf) ; +dpfFACET +dpfGetSurfaceFacet(dpfSURFACEPTR surf) ; +int32 +dpfGetSurfaceDecal(dpfSURFACEPTR surf) ; +dpfDRAWMODE +dpfGetSurfaceDrawMode(dpfSURFACEPTR surf, uint8 *Width) ; +dpfLOCK +dpfGetSurfaceLock(dpfSURFACEPTR surf) ; +dpfSTRINGPTR +dpfGetSurfaceSpecial(dpfSURFACEPTR surf) ; + + +/* pfvertex Vertices & VertLists */ +/* Vertices */ +void +dpfSetVertexFlag(uint8 vflag, uint8 textCook, uint8 overRide) ; +uint8 +dpfCheckVertexFlag(uint8 vflag, uint8 useOverRide) ; +dpfVERTEXPTR +dpfCreateVertex(void); +dpfVERTEXPTR +dpfCreateVertexBlock(int32 numVerts); +int32 +dpfCreateVertexTable(dpfGEOMETRYPTR geom, dpfVERTEXPTR **table) ; +int32 +dpfAddVertex(dpfGEOMETRYPTR geom, dpfVERTEXPTR vertex) ; +int32 +dpfUnlinkVertex(dpfVERTEXPTR); +int32 +dpfFreeVertex(dpfVERTEXPTR); +int32 +dpfFreeVertexList(dpfVERTEXPTR vert) ; +void +dpfKillVertices() ; + +/* The following calls are used to loop through all the vertices in a +** geometry. Get Previous has to search a list to find the previous so it +** can be slow. +*/ +int32 +dpfGetVertexCount(dpfGEOMETRYPTR geom) ; +dpfVERTEXPTR +dpfGetFrstVertex(dpfGEOMETRYPTR geom) ; +dpfVERTEXPTR +dpfGetNextVertex(dpfVERTEXPTR vertex) ; +dpfVERTEXPTR +dpfGetPrevVertex(dpfVERTEXPTR vertex) ; +dpfVERTEXPTR +dpfGetNthVertex(dpfGEOMETRYPTR geom, int32 Nth) ; + + +/* Vertex info */ +void +dpfGetVertexPoint(dpfVERTEXPTR, dmVector) ; +void +dpfGetVertexNormal(dpfVERTEXPTR, dmVector) ; +void +dpfGetVertexColour(dpfVERTEXPTR, dpfRGBA) ; +void +dpfGetVertexTexture(dpfVERTEXPTR, dpfTEXT) ; + +void +dpfSetVertexPoint(dpfVERTEXPTR, dmVector) ; +void +dpfSetVertexNormal(dpfVERTEXPTR, dmVector) ; +void +dpfSetVertexColour(dpfVERTEXPTR, dpfRGBA) ; +void +dpfSetVertexTexture(dpfVERTEXPTR, dpfTEXT) ; + +/* Pmesh functions */ +/* Connection List's */ +dpfCLISTPTR +dpfCreateCList(int32 pcount, int32 fcount); +int32 +dpfAddCList(dpfGEOMETRYPTR geom, dpfCLISTPTR cList) ; +int32 +dpfUnlinkCList(dpfCLISTPTR); +int32 +dpfFreeCList(dpfCLISTPTR); +int32 +dpfFreeCListList(dpfCLISTPTR cList) ; + +/* The following calls are used to loop through all the vertLists in a +** geometry. Get Previous has to search a list to find the previous so it +** can be slow. +*/ +int32 +dpfGetCListCount(dpfGEOMETRYPTR geom) ; +dpfCLISTPTR +dpfGetFrstCList(dpfGEOMETRYPTR geom) ; +dpfCLISTPTR +dpfGetNextCList(dpfCLISTPTR cList) ; +dpfCLISTPTR +dpfGetPrevCList(dpfCLISTPTR cList) ; + +/* VertList Info */ +int32 +dpfGetCListPCount(dpfCLISTPTR cList) ; +int32 +dpfGetCListFCount(dpfCLISTPTR cList) ; +int32 * +dpfCreateCListFace(dpfCLISTPTR cList) ; +int32 * +dpfGetCListFace(dpfCLISTPTR cList, int32 fno) ; +void +dpfSetCListFace(dpfCLISTPTR cList, int32 fno, int32 *verts) ; +int32 +dpfFreeCListFace(dpfCLISTPTR cList, int32 fno) ; + +/* Strip List's */ +dpfSLISTPTR +dpfCreateSList(int32 pcount, int32 vcount); +int32 +dpfAddSList(dpfGEOMETRYPTR geom, dpfSLISTPTR sList) ; +int32 +dpfUnlinkSList(dpfSLISTPTR); +int32 +dpfFreeSList(dpfSLISTPTR); +int32 +dpfFreeSListList(dpfSLISTPTR sList) ; + +/* The following calls are used to loop through all the Strip Lists in a +** geometry. Get Previous has to search a list to find the previous so it +** can be slow. +*/ +int32 +dpfGetSListCount(dpfGEOMETRYPTR geom) ; +dpfSLISTPTR +dpfGetFrstSList(dpfGEOMETRYPTR geom) ; +dpfSLISTPTR +dpfGetNextSList(dpfSLISTPTR sList) ; +dpfSLISTPTR +dpfGetPrevSList(dpfSLISTPTR sList) ; + +/* Strip List Info */ +int32 +dpfGetSListPCount(dpfSLISTPTR sList) ; +int32 +dpfGetSListVCount(dpfSLISTPTR sList) ; +int32 +dpfAddSListVertex(dpfSLISTPTR sList, int32 vertNo) ; +int32 * +dpfGetSListVertex(dpfSLISTPTR sList, int32 vno) ; +void +dpfSetSListVertex(dpfSLISTPTR sList, int32 vno, int32 vertNo) ; + + +/* Sphere's */ +dpfSPHERENODEPTR +dpfCreateSphereNode(void); +dpfSPHERENODEPTR +dpfCreateSphereNodeBlock(int32 numVLists) ; +int32 +dpfAddSphereNode(dpfGEOMETRYPTR geom, dpfSPHERENODEPTR vertex) ; +int32 +dpfUnlinkSphereNode(dpfSPHERENODEPTR); +int32 +dpfFreeSphereNode(dpfSPHERENODEPTR); +int32 +dpfFreeSphereNodeList(dpfSPHERENODEPTR vertList) ; + + +/* The following calls are used to loop through all the spheres in a +** geometry. Get Previous has to search a list to find the previous so it +** can be slow. +*/ +int32 +dpfGetSphereNodeCount(dpfGEOMETRYPTR geom) ; +dpfSPHERENODEPTR +dpfGetFrstSphereNode(dpfGEOMETRYPTR geom) ; +dpfSPHERENODEPTR +dpfGetNextSphereNode(dpfSPHERENODEPTR vertList) ; +dpfSPHERENODEPTR +dpfGetPrevSphereNode(dpfSPHERENODEPTR vertList) ; + +/* Sphere Info */ +void +dpfGetSphereDice(dpfGEOMETRYPTR geom, uint8 *u_dice, uint8 *v_dice) ; +void +dpfSetSphereDice(dpfGEOMETRYPTR geom, uint8 u_dice, uint8 v_dice) ; + +float32 +dpfGetSphereNodeData(dpfSPHERENODEPTR vertList, dmVector point) ; +void +dpfSetSphereNodeData(dpfSPHERENODEPTR vertList, float32 radius, + dmVector point) ; + +/* Text */ +dpfTEXTNODEPTR +dpfCreateTextNode(void) ; +dpfTEXTNODEPTR +dpfCreateTextNodeBlock(int32 numTexts) ; +int32 +dpfUnlinkTextNode(dpfTEXTNODEPTR text) ; +int32 +dpfAddTextNode(dpfGEOMETRYPTR geom, dpfTEXTNODEPTR text) ; +int32 +dpfFreeTextNode(dpfTEXTNODEPTR text) ; +int32 +dpfFreeTextNodeList(dpfTEXTNODEPTR text) ; + +/* move through text list */ +int32 +dpfGetTextNodeCount(dpfGEOMETRYPTR geom) ; +dpfTEXTNODEPTR +dpfGetFrstTextNode(dpfGEOMETRYPTR geom) ; +dpfTEXTNODEPTR +dpfGetNextTextNode(dpfTEXTNODEPTR text) ; +dpfTEXTNODEPTR +dpfGetPrevTextNode(dpfTEXTNODEPTR text) ; + +/* Get and set text global info */ +dpfFONT +dpfGetTextFont(dpfGEOMETRYPTR geom) ; +void +dpfGetTextOrientation(dpfGEOMETRYPTR geom, dmVector orn) ; +void +dpfGetTextScale(dpfGEOMETRYPTR geom, dmVector scale) ; +void +dpfSetTextFont(dpfGEOMETRYPTR geom, dpfFONT font) ; +void +dpfSetTextOrientation(dpfGEOMETRYPTR geom, dmVector orn) ; +void +dpfSetTextScale(dpfGEOMETRYPTR geom, dmVector scale) ; + +/* get and set text node info */ +void +dpfGetTextNodePoint(dpfTEXTNODEPTR text, dmVector point) ; +char * +dpfGetTextNodeString(dpfTEXTNODEPTR text) ; +void +dpfSetTextNodePoint(dpfTEXTNODEPTR text, dmVector point) ; +void +dpfSetTextNodeString(dpfTEXTNODEPTR text, char *str1) ; + +/* Get and set line global info */ +uint8 +dpfGetLineThickness(dpfGEOMETRYPTR geom) ; +void +dpfSetLineThickness(dpfGEOMETRYPTR geom, uint8 thickness) ; + +/* pfgeomet Geometry & strips & pmeshes etc */ +dpfGEOMETRYPTR +dpfCreatePoint(void) ; +dpfGEOMETRYPTR +dpfCreatePolygon(void) ; +dpfGEOMETRYPTR +dpfCreateTristrip(void); +dpfGEOMETRYPTR +dpfCreatePolystrip(void); +dpfGEOMETRYPTR +dpfCreatePmesh(void); +dpfGEOMETRYPTR +dpfCreateSphere(void); +dpfGEOMETRYPTR +dpfCreateLine(void) ; +dpfGEOMETRYPTR +dpfCreateText(void) ; +int32 +dpfAddGeometry(dpfPATCHPTR patch, dpfGEOMETRYPTR geom) ; +int32 +dpfUnlinkGeometry(dpfGEOMETRYPTR geometry) ; +int32 +dpfFreeGeometry(dpfGEOMETRYPTR); +int32 +dpfFreeFileGeometries(dpfFILEPTR file) ; +int32 +dpfTurnGeometry2Pmesh(dpfGEOMETRYPTR geom) ; + +/* The following calls are used to loop through all the geometries in a +** file. Get Previous has to search a list to find the previous so it +** can be slow. +*/ +dpfPATCHPTR +dpfGetGeometryParent(dpfGEOMETRYPTR geom) ; +dpfGEOMETRYPTR +dpfGetFrstGeometry(dpfPATCHPTR patch) ; +dpfGEOMETRYPTR +dpfGetNextGeometry(dpfGEOMETRYPTR geom) ; +dpfGEOMETRYPTR +dpfGetPrevGeometry(dpfGEOMETRYPTR geom) ; + +/* Geometry info */ +int32 +dpfGetGeometryType(dpfGEOMETRYPTR geom) ; + +/* pfpatch patches */ +dpfPATCHPTR +dpfCreatePatch(void) ; +int32 +dpfAddPatch(dpfLODPTR lod, dpfPATCHPTR patch) ; +int32 +dpfJoinPatch(dpfPATCHPTR patch1, dpfPATCHPTR patch2) ; +int32 +dpfUnlinkPatch(dpfPATCHPTR) ; +int32 +dpfFreePatch(dpfPATCHPTR) ; + +/* The following calls are used to loop through all the patches in an +** LOD. Get Previous has to search a list to find the previous so it +** can be slow. +*/ +dpfLODPTR +dpfGetPatchParent(dpfPATCHPTR patch) ; +dpfPATCHPTR +dpfGetFrstPatch(dpfLODPTR object) ; +dpfPATCHPTR +dpfGetNextPatch(dpfPATCHPTR patch) ; +dpfPATCHPTR +dpfGetPrevPatch(dpfPATCHPTR patch) ; + +/* Get surface pointer for the surface setting and getting calls */ +dpfSURFACEPTR +dpfGetPatchSurface(dpfPATCHPTR patch) ; + +/* pflod LODs */ +dpfLODPTR +dpfCreateLOD(void) ; +int32 +dpfAddLOD(dpfOBJECTPTR object, dpfLODPTR lod) ; +int32 +dpfJoinLOD(dpfLODPTR lod1, dpfLODPTR lod2) ; +int32 +dpfUnlinkLOD(dpfLODPTR) ; +int32 +dpfFreeLOD(dpfLODPTR) ; +int32 +dpfCmpLOD(dpfLODPTR lod1, dpfLODPTR lod2) ; + +/* The following calls are used to loop through all the lods in a +** file. Get Previous has to search a list to find the previous so it +** can be slow. +*/ +dpfOBJECTPTR +dpfGetLODParent(dpfLODPTR) ; +dpfLODPTR +dpfGetFrstLOD(dpfOBJECTPTR) ; +dpfLODPTR +dpfGetNextLOD(dpfLODPTR) ; +dpfLODPTR +dpfGetPrevLOD(dpfLODPTR) ; + +/* LOD info */ +char * +dpfGetLODName(dpfLODPTR lod) ; +void +dpfGetLODDistance(dpfLODPTR lod, float32 *InDist, float32 *OutDist) ; +dpfTRANSITION +dpfGetLODTransition(dpfLODPTR lod) ; +int32 +dpfGetLODReference(dpfLODPTR lod, dmVector reference) ; + +void +dpfSetLODName(dpfLODPTR lod, char *name) ; +void +dpfSetLODDistance(dpfLODPTR lod, float32 InDist, float32 OutDist) ; +void +dpfSetLODTransition(dpfLODPTR lod, dpfTRANSITION Transition) ; +void +dpfSetLODReference(dpfLODPTR lod, int32 referenceFlag, dmVector reference) ; + + +/* pfobject objects */ +dpfOBJECTPTR +dpfCreateObject(void) ; +int32 +dpfAddObject(dpfFILEPTR file, dpfOBJECTPTR object) ; +int32 +dpfJoinObject(dpfOBJECTPTR object1, dpfOBJECTPTR object2) ; +int32 +dpfUnlinkObject(dpfOBJECTPTR) ; +int32 +dpfFreeObject(dpfOBJECTPTR) ; + +/* The following calls are used to loop through all the objects in a +** file. Get Previous has to search a list to find the previous so it +** can be slow. +*/ +dpfFILEPTR +dpfGetObjectParent(dpfOBJECTPTR) ; +dpfOBJECTPTR +dpfGetFrstObject(dpfFILEPTR) ; +dpfOBJECTPTR +dpfGetNextObject(dpfOBJECTPTR) ; +dpfOBJECTPTR +dpfGetPrevObject(dpfOBJECTPTR) ; + +/* Get surface pointer for the surface setting and getting calls */ +dpfSURFACEPTR +dpfGetObjectSurface(dpfOBJECTPTR object) ; + +/* pffile file structure */ +int32 +dpfGetAllFile(char *name, dpfFILEPTR *file, uint8 verMajor, uint8 verMinor) ; +dpfFILEPTR +dpfOpenAllFile(char *name, uint8 verMajor, uint8 verMinor) ; +int32 +dpfGetAllFileBody(dpfFILEPTR file) ; +int32 +dpfGetFile(char *name, dpfFILEPTR *file) ; +dpfFILEPTR +dpfOpenFile(char *name) ; +int32 +dpfGetFileBody(dpfFILEPTR file) ; + +int32 +dpfPutAllFile(char *name, dpfFILEPTR Sfile, dpfFILEPTR matFile) ; +int32 +dpfPutAllFileBody(dpfFILEPTR Dfile,dpfFILEPTR Sfile, dpfFILEPTR matFile) ; +int32 +dpfPutFile(char *name, dpfFILEPTR Sfile) ; +int32 +dpfPutFileBody(dpfFILEPTR Dfile,dpfFILEPTR Sfile) ; +dpfFILEPTR +dpfOpenNewFile(char *name, dpfFILEFORMAT form, dpfFILETYPE fileType) ; + +dpfFILEPTR +dpfCreateFile(char *name) ; +int32 +dpfJoinFile(dpfFILEPTR file1, dpfFILEPTR file2) ; +int32 +dpfCloseFile(dpfFILEPTR file) ; +int32 +dpfFreeFile(dpfFILEPTR) ; +int32 +dpfKillFile(dpfFILEPTR file) ; + +/* File info */ +dpfFILETYPE +dpfGetFileType(dpfFILEPTR file) ; +dpfFILEFORMAT +dpfGetFileFormat(dpfFILEPTR file) ; +char * +dpfGetFileName(dpfFILEPTR file) ; + +/* File info */ +void +dpfSetFileType(dpfFILEPTR file, dpfFILETYPE type) ; +void +dpfSetFileFormat(dpfFILEPTR file,dpfFILEFORMAT format) ; + +/* pfinfo information on struction, read and written */ +int32 +dpfCountFileContent(dpfFILEPTR file) ; +int32 +dpfGetFileNoMaterials(dpfFILEPTR file) ; +int32 +dpfGetFileNoTextures(dpfFILEPTR file) ; +int32 +dpfGetFileNoRamps(dpfFILEPTR file) ; +int32 +dpfGetFileNoObjects(dpfFILEPTR file) ; +int32 +dpfGetFileNoLODs(dpfFILEPTR file) ; +int32 +dpfGetFileNoPatches(dpfFILEPTR file) ; +int32 +dpfGetFileNoGeometries(dpfFILEPTR file) ; +int32 +dpfGetFileNoPolystrips(dpfFILEPTR file) ; +int32 +dpfGetFileNoTristrips(dpfFILEPTR file) ; +int32 +dpfGetFileNoPmeshes(dpfFILEPTR file) ; +int32 +dpfGetFileNoSLists(dpfFILEPTR file) ; +int32 +dpfGetFileNoSFaces(dpfFILEPTR file) ; +int32 +dpfGetFileSFtimesP(dpfFILEPTR file) ; +int32 +dpfGetFileNoCLists(dpfFILEPTR file) ; +int32 +dpfGetFileNoCFaces(dpfFILEPTR file) ; +int32 +dpfGetFileCFtimesP(dpfFILEPTR file) ; +int32 +dpfGetFileNoVertices(dpfFILEPTR file) ; +int32 +dpfGetFileNoTriangles(dpfFILEPTR file) ; +int32 +dpfGetFileTotNoTriangles(dpfFILEPTR file) ; +int32 +dpfGetFileNoSphereLists(dpfFILEPTR file) ; +int32 +dpfGetFileNoSpheres(dpfFILEPTR file) ; +int32 +dpfGetFileNoPointLists(dpfFILEPTR file) ; +int32 +dpfGetFileNoPoints(dpfFILEPTR file) ; +int32 +dpfGetFileNoLines(dpfFILEPTR file) ; +int32 +dpfGetFileNoLineNodes(dpfFILEPTR file) ; +int32 +dpfGetFileNoTexts(dpfFILEPTR file) ; +int32 +dpfGetFileNoTextStrings(dpfFILEPTR file) ; +int32 +dpfGetFileNoPolygons(dpfFILEPTR file) ; +int32 +dpfGetFileNoPolygonVertices(dpfFILEPTR file) ; + + +/* pfmaterl materials */ +dpfMATERIALPTR +dpfCreateMaterial(void) ; +char * +dpfCreateMaterialName(char *extPath, char *library, char *mname) ; +void +dpfCpyMaterial(dpfMATERIALPTR mat1, dpfMATERIALPTR mat2) ; +int32 +dpfCmpMaterial(dpfMATERIALPTR mat1, dpfMATERIALPTR mat2) ; +dpfMATERIALPTR +dpfAddMaterial(dpfFILEPTR file, dpfMATERIALPTR mat) ; +dpfMATERIALPTR +dpfAddV1Material(dpfFILEPTR file, dpfMATERIALPTR mat) ; +int32 +dpfFreeMaterial(dpfMATERIALPTR mat) ; + +dpfFILEPTR +dpfGetMaterialParent(dpfMATERIALPTR mat) ; +dpfMATERIALPTR +dpfGetFrstMaterial(dpfFILEPTR file) ; +dpfMATERIALPTR +dpfGetNextMaterial(dpfMATERIALPTR mat) ; +dpfMATERIALPTR +dpfGetPrevMaterial(dpfMATERIALPTR mat) ; +dpfMATERIALPTR +dpfFindMaterial(dpfFILEPTR fp, char *matName) ; + +/* Set material name literally sets the name to the given pointer, +** so make sure it dynamically allocated and not used by anything else! +** If in doubt use copy name which creates a new dynamically allocated name. +*/ +void +dpfSetMaterialName(dpfMATERIALPTR mat, char *name) ; +void +dpfSetMaterialTexture(dpfMATERIALPTR mat, dpfMATTXTTYPE TxtType, char *name) ; +void +dpfSetMaterialRamp(dpfMATERIALPTR mat, char *name) ; +void +dpfSetMaterialAmbient(dpfMATERIALPTR mat,dpfRGBA colour) ; +void +dpfSetMaterialDiffuse(dpfMATERIALPTR mat,dpfRGBA colour) ; +void +dpfSetMaterialSpecular(dpfMATERIALPTR mat,dpfRGBA colour) ; +void +dpfSetMaterialEmissive(dpfMATERIALPTR mat,dpfRGBA colour) ; +void +dpfSetMaterialOpacity(dpfMATERIALPTR mat,dpfRGBA colour) ; + +/* Returns a pointer to THE name. so don't destroy */ +char * +dpfGetMaterialName(dpfMATERIALPTR mat) ; +dpfMATTXTTYPE +dpfGetMaterialTexture(dpfMATERIALPTR mat, char **name) ; +char * +dpfGetMaterialRamp(dpfMATERIALPTR mat) ; +void +dpfGetMaterialAmbient(dpfMATERIALPTR mat,dpfRGBA colour) ; +void +dpfGetMaterialDiffuse(dpfMATERIALPTR mat,dpfRGBA colour) ; +void +dpfGetMaterialSpecular(dpfMATERIALPTR mat,dpfRGBA colour) ; +void +dpfGetMaterialEmissive(dpfMATERIALPTR mat,dpfRGBA colour) ; +void +dpfGetMaterialOpacity(dpfMATERIALPTR mat,dpfRGBA colour) ; + + +/* pfile General file loading calls */ +void +dpfErrorOn(void) ; +void +dpfErrorOff(void) ; +void +dpfDebugOn(void) ; +void +dpfDebugOff(void) ; + +/* Names and Strings and things */ +char * +dpfCreateName(char *name) ; +char * +dpfDuplicateName(char *name) ; +void +dpfFreeName(char *name) ; +/* the return from cmp is similar to strcmp, ie 0 if the same, else non-zero */ +int32 +dpfCmpName(char *name1, char *name2) ; + +/* Strings can have '\0' in them, so the first byte is the string length */ +/* Create uses the str as its string, copy mallocs more space and copies +** in the string str +*/ +dpfSTRINGPTR +dpfCreateString(void) ; +dpfSTRINGPTR +dpfDuplicateString(dpfSTRINGPTR str) ; +int32 +dpfSetString(dpfSTRINGPTR str, int32 Length, uint8 *theStr) ; +void +dpfFreeString(dpfSTRINGPTR str) ; +/* the return from cmp is similar to strcmp, ie 0 if the same, else non-zero */ +int32 +dpfCmpString(dpfSTRINGPTR str1, dpfSTRINGPTR str2) ; +int32 +dpfGetStringLength(dpfSTRINGPTR str) ; +uint8 * +dpfGetStringString(dpfSTRINGPTR str) ; + +/* pfcheck checks input values */ +float32 +dpfCheckRGB(float32 colour) ; +float32 +dpfCheckAlpha(float32 alpha) ; +float32 +dpfCheckV1Power(float32 power) ; +float32 +dpfCheckPower(float32 power) ; +float32 +dpfCheckOpacity(float32 opacity) ; +uint16 +dpfCheckDice(uint16 dice) ; + +/* ramp stuff */ +dpfRAMPPTR +dpfCreateRamp(void); +int32 +dpfCmpRamp(dpfRAMPPTR r1, dpfRAMPPTR r2) ; +dpfRAMPPTR +dpfAddRamp(dpfFILEPTR file, dpfRAMPPTR r) ; +int32 +dpfFreeRamp(dpfRAMPPTR r) ; + +dpfFILEPTR +dpfGetRampParent(dpfRAMPPTR mat) ; +dpfRAMPPTR +dpfGetFrstRamp(dpfFILEPTR file) ; +dpfRAMPPTR +dpfGetNextRamp(dpfRAMPPTR mat) ; +dpfRAMPPTR +dpfGetPrevRamp(dpfRAMPPTR mat) ; +dpfRAMPPTR +dpfFindRamp(dpfFILEPTR fp, char *rampName) ; + +void +dpfSetRampName(dpfRAMPPTR r, char *a); +void +dpfSetRampData(dpfRAMPPTR r, dpfRGBA a, dpfRGBA b); +char * +dpfGetRampName(dpfRAMPPTR r); +void +dpfGetRampData(dpfRAMPPTR r, dpfRGBA data0, dpfRGBA data1) ; + +/* new boundary stuff */ +dpfBOUNDPTR +dpfCreateBound(void) ; +int32 +dpfUnlinkBound(dpfBOUNDPTR bound) ; +int32 +dpfAddFileBound(dpfFILEPTR file, dpfBOUNDPTR bound) ; +int32 +dpfAddBoundBound(dpfBOUNDPTR prnt, dpfBOUNDPTR bound) ; +int32 +dpfFreeBound(dpfBOUNDPTR bound) ; +dpfFILEPTR +dpfGetBoundFile(dpfBOUNDPTR bound) ; +dpfBOUNDPTR +dpfGetBoundParent(dpfBOUNDPTR bound) ; +dpfBOUNDPTR +dpfGetFileBound(dpfFILEPTR file) ; +dpfBOUNDPTR +dpfGetFrstBound(dpfBOUNDPTR bound) ; +dpfBOUNDPTR +dpfGetNextBound(dpfBOUNDPTR bound) ; +dpfBOUNDPTR +dpfGetPrevBound(dpfBOUNDPTR bound) ; +void +dpfSetBoundSphere(dpfBOUNDPTR bound, int32 present, float32 radius, + dmVector point) ; +void +dpfSetBoundBox(dpfBOUNDPTR bound,int32 present,dmVector bMin,dmVector bMax, dmVector orien) ; +void +dpfSetBoundPmesh(dpfBOUNDPTR bound, dpfGEOMETRYPTR pmesh) ; +void +dpfSetBoundAuto(dpfBOUNDPTR bound, uint8 Auto) ; +void +dpfSetBoundLODName(dpfBOUNDPTR bound, char *name) ; +void +dpfSetBoundObjectName(dpfBOUNDPTR bound, char *name) ; +int32 +dpfGetBoundSphere(dpfBOUNDPTR bound, float32 *radius, dmVector point) ; +int32 +dpfGetBoundBox(dpfBOUNDPTR bound, dmVector bMin, dmVector bMax, dmVector orien) ; +dpfGEOMETRYPTR +dpfGetBoundPmesh(dpfBOUNDPTR bound) ; +uint8 +dpfGetBoundAuto(dpfBOUNDPTR bound) ; +void +dpfCalcBBoxInitialize(dpfBOUNDPTR bound) ; +void +dpfCalcPointBBox(dmVector vec, dmVector MinVec, dmVector MaxVec) ; +int32 +dpfCalcGeometryBBox(dpfGEOMETRYPTR geom, dpfBOUNDPTR bound) ; +int32 +dpfCalcPatchBBox(dpfPATCHPTR patch, dpfBOUNDPTR bound) ; +int32 +dpfCalcLODBBox(dpfLODPTR lod, dpfBOUNDPTR bound) ; +int32 +dpfCalcBBox(dpfFILEPTR file, dpfBOUNDPTR bound) ; +int32 +dpfCalcGeometryBSphere(dpfGEOMETRYPTR geom, dpfBOUNDPTR bound) ; +int32 +dpfCalcPatchBSphere(dpfPATCHPTR patch, dpfBOUNDPTR bound) ; +int32 +dpfCalcBSphere(dpfFILEPTR file, dpfBOUNDPTR bound) ; +int32 +dpfCheckBound(dpfFILEPTR file) ; + +/*** texture stuff ***/ +dpfTEXTUREPTR +dpfCreateTexture(void); +int32 +dpfCpyTexture(dpfTEXTUREPTR txt1, dpfTEXTUREPTR txt2) ; +int32 +dpfCmpTexture(dpfTEXTUREPTR txt1, dpfTEXTUREPTR txt2) ; +dpfTEXTUREPTR +dpfAddTexture(dpfFILEPTR file, dpfTEXTUREPTR txt) ; +int32 +dpfUnlinkTexture(dpfTEXTUREPTR txt) ; +int32 +dpfFreeTexture(dpfTEXTUREPTR txt) ; + +dpfFILEPTR +dpfGetTextureParent(dpfTEXTUREPTR txt) ; +dpfTEXTUREPTR +dpfGetFrstTexture(dpfFILEPTR file) ; +dpfTEXTUREPTR +dpfGetNextTexture(dpfTEXTUREPTR txt) ; +dpfTEXTUREPTR +dpfGetPrevTexture(dpfTEXTUREPTR txt) ; +dpfTEXTUREPTR +dpfFindTexture(dpfFILEPTR fp, char *txtName) ; + +void +dpfSetTextureName(dpfTEXTUREPTR t, char *a); +void +dpfSetTextureMap(dpfTEXTUREPTR t, char *a); +void +dpfSetTextureWrap(dpfTEXTUREPTR t, int32 a); +void +dpfSetTextureUWrap(dpfTEXTUREPTR t, int32 a); +void +dpfSetTextureVWrap(dpfTEXTUREPTR t, int32 a); +void +dpfSetTextureDetail(dpfTEXTUREPTR t, dpfDETAIL detail, char *name) ; +void +dpfSetTextureMinify(dpfTEXTUREPTR t, int32 a); +void +dpfSetTextureMagnify(dpfTEXTUREPTR t, int32 a); +void +dpfSetTextureAlpha(dpfTEXTUREPTR t, int32 a); +void +dpfSetTextureBitslice(dpfTEXTUREPTR t, uint8 a); + +char * +dpfGetTextureName(dpfTEXTUREPTR t) ; +char * +dpfGetTextureMap(dpfTEXTUREPTR t) ; +void +dpfGetTextureWrap(dpfTEXTUREPTR t, int32 a) ; +dpfWRAP +dpfGetTextureUWrap(dpfTEXTUREPTR t) ; +dpfWRAP +dpfGetTextureVWrap(dpfTEXTUREPTR t) ; +dpfDETAIL +dpfGetTextureDetail(dpfTEXTUREPTR t, char **name) ; +dpfMINIFY +dpfGetTextureMinify(dpfTEXTUREPTR t) ; +dpfMAGNIFY +dpfGetTextureMagnify(dpfTEXTUREPTR t) ; +dpfALPHA +dpfGetTextureAlpha(dpfTEXTUREPTR t) ; +uint8 +dpfGetTextureBitslice(dpfTEXTUREPTR t) ; + + +/*** header stuff ***/ +void +dpfSetFileVersion(dpfFILEPTR f, uint8 i, uint8 j); +void +dpfSetFileDate(dpfFILEPTR f, uint8 i, uint8 j, uint8 k); +void +dpfSetFileTime(dpfFILEPTR f, uint8 i, uint8 j); +void +dpfSetFileUnit(dpfFILEPTR f, dpfUNIT i); +void +dpfSetFileScale(dpfFILEPTR f, float32 i); +void +dpfSetFilePrecision(dpfFILEPTR f, dpfPRECISION i); +void +dpfSetHeaderComment(dpfFILEPTR f, dpfSTRINGPTR i); + +void +dpfGetLibraryVersion(uint8 *i, uint8 *j) ; +int32 +dpfGetFileVersion(dpfFILEPTR f, uint8 *verMajor, uint8 *verMinor) ; +int32 +dpfGetFileDate(dpfFILEPTR f, uint8 *dpfday, uint8 *dpfmonth, uint8 *dpfyear) ; +int32 +dpfGetFileTime(dpfFILEPTR f, uint8 *dpfhours, uint8 *dpfminutes) ; +dpfUNIT +dpfGetFileUnit(dpfFILEPTR f) ; +float32 +dpfGetFileScale(dpfFILEPTR f) ; +dpfPRECISION +dpfGetFilePrecision(dpfFILEPTR f) ; +dpfSTRINGPTR +dpfGetFileComment(dpfFILEPTR f) ; + +/**************** callbacks *******************/ +/* The following functions are used to set callbacks + * for each of several structures. They are called when + * a structure has been completed and would normally be + * linked into the file structure. The procedure is passed + * a pointer to the structure to do with as it wishes and + * returns an integer value. If the return value is 1 the + * structure is freed, otherwise it is linked into the + * file structure as usual. + */ + + +/* new whizzy v1.0 -> v2.0 texture name converter stuff */ +struct dpfVISTEXTURETYPE ; +typedef struct dpfVISTEXTURETYPE *dpfVISTEXTUREPTR; + +dpfVISTEXTUREPTR +dpfCreateV1TextureList(char *mazName) ; +void +dpfSetFileVisList(dpfFILEPTR file, dpfVISTEXTUREPTR visList) ; +void +dpfConvertV1Texture(dpfFILEPTR Sfp, dpfMATERIALPTR Fmat, dpfMATERIALPTR Bmat) ; +void +dpfFreeV1TextureList(dpfVISTEXTUREPTR visList) ; + + +int32 +dpfCheckFile(dpfFILEPTR file) ; + + +#endif /* __PFILE_H__ */ + diff --git a/CODE/RP/MUNGA_L4/libDPL/dsys/PFPARSER.H b/CODE/RP/MUNGA_L4/libDPL/dsys/PFPARSER.H new file mode 100644 index 0000000..426483b --- /dev/null +++ b/CODE/RP/MUNGA_L4/libDPL/dsys/PFPARSER.H @@ -0,0 +1,97 @@ +/* + * PROJECT: + * SUBSYSTEM: + * MODULE: + * + * FILE: $RCSfile: pfparser.h,v $ + * REVISION: $Revision: 1.3 $ + * Date: $Date: 95/04/27 23:01:16 $ + * Author: $Author: bill $ + * RCS Ident: $Id: pfparser.h,v 1.3 95/04/27 23:01:16 bill Exp $ + * + * FUNCTION: + * + * Copyright (c) 1994 Division Ltd. + * + * All Rights Reserved. + * + * This Document may not, in whole or in part, be copied, + * photocopied, reproduced, translated, or reduced to any + * electronic medium or machine readable form without prior + * written consent from Division Ltd. + */ + +#ifndef __PFPARSER_H__ +#define __PFPARSER_H__ + +#include +#ifdef _PF_LOCAL +#include "pgeneral.h" +#else +#include +#endif + +#define dpp_MATCH_CASE 0 +#define dpp_ANY_CASE 1 + +/* On calls which either succeed or fail, dpgSUCCESS (0) or dpgERROR (-1) + * is returned. On calls to get next token however the following + * return values are also used + */ +#define dppEOF -2 +#define dppSTRING -3 +#define dppNUMBER -4 + +typedef struct dppKEYTAB +{ + int32 tok; + char *name; + int32 matchCase; +} dppKEYTAB ; + + +typedef struct dppFILE +{ + int32 lineNo; + int32 errorFlag; + char *fileName; + FILE *file; + char *whites ; + char comment ; + int32 pushedBackToken; + float number; + char *buffer; + int32 bufSize; + int32 bufPos; + dppKEYTAB *keyTab; +} dppFILE, *dppFILEPTR ; + + + +dppFILEPTR +dppOpenFile (char *name, FILE *fp, const char *whites, char comment, + dppKEYTAB *keyTable, int32 bufferSize); +void +dppCloseFile (dppFILEPTR fPtr); +char * +dppTokenToString (dppFILEPTR fptr, const int32 token); +int32 +dppPushToken (dppFILEPTR fptr, const int32 token); +int32 +dppNextToken (dppFILEPTR fptr); +int32 +dppReadToNextChar(dppFILEPTR fPtr, char endChr) ; +char * +dppMatchString (dppFILEPTR fptr); +int32 +dppMatchInt (dppFILEPTR fptr, int32 *num); +int32 +dppMatchFloat (dppFILEPTR fptr, float *num); +int32 +dppMatchCharacter (dppFILEPTR fptr, char c); +void +dppMoveToNextLine(dppFILEPTR fptr) ; + + +#endif /* __PFPARSER_H__ */ + diff --git a/CODE/RP/MUNGA_L4/libDPL/dsys/PGENERAL.H b/CODE/RP/MUNGA_L4/libDPL/dsys/PGENERAL.H new file mode 100644 index 0000000..7d390d7 --- /dev/null +++ b/CODE/RP/MUNGA_L4/libDPL/dsys/PGENERAL.H @@ -0,0 +1,183 @@ +/* + * ---------------------------------------------------------------------------- + * + * Copyright 1995 Division Limited. + * All Rights Reserved + * + * + * System : + * Module : + * Object Name : $RCSfile: pgeneral.h,v $ + * Revision : $Revision: 1.1 $ + * Date : $Date: 95/04/27 23:01:16 $ + * Author : $Author: bill $ + * Last Modified : <260495.2024> + * + * Description + * + * Notes + * + * History + * + * + * ---------------------------------------------------------------------------- + */ + +/* + * The following functions are provided in this module + * + * Return flags - to be used in all libs and converters + * dpgSUCCESS=0, dpgERROR=-1 + * + * Verbose output setup (special "stderr" & "stdout") + * dpgSetOutput(n) + * + * Verbose warning setup and usage + * dpgSetWarnLevel(n) + * dpgWarn(n,(print stuff)) + * + * Verbose error setup and usage + * variable dpgErrNo - set to the last error num ; + * dpgSetErrorLevel(n) + * dpgError(num, n,(print stuff)) + * + * Verbose monitering setup and usage + * dpgSetMonitorFlag(n) + * dpgMonitor(flag,(print stuff)) + * + * Verbose bad parameter passed error handler + * dpgBadAddress(addr,String) + * + * Dying routine, outputs to the log and if not stderr, out to stderr + * dpgDie(level,(print stuff)) + * + * malloc and calloc routines that print out an error and exit on failure. + * dpgMalloc(size,string) + * dpgRealloc(pnt,size,string) + * dpgCalloc(nel,size,string) + * + * dm macro Extensions + * + */ + +#ifndef __PGENERAL_H__ +#define __PGENERAL_H__ + +#include +#include + +/* The program name must be defined and setup by the program */ +extern char *progname ; + +#define dpgSUCCESS 0 +#define dpgERROR -1 + +/* General error numbers */ + +#define dpgENO_NULL 0x1001 +#define dpgENO_ROPEN 0x1002 +#define dpgENO_READ 0x1003 +#define dpgENO_WOPEN 0x1004 +#define dpgENO_WRITE 0x1005 + +/* Verbose output setup (special "stderr" & "stdout") - returns dpgERROR + * if couldn't open the file, SUCCESS otherwise + */ +extern FILE *dpgLog ; + +int32 +dpgSetOutput(char *name) ; +#define dpgFlush() fflush(dpgLog) +/* internal functions */ + +/* If the next variable is non-zero then when any printing is done, a new + * line will be inserted and the variable will be reset to 0 */ +extern int32 dpgNewLine ; +#define dpgSetNewLine(v) (dpgNewLine=(v)) + +/* Verbose warning setup and usage */ +extern int32 dpgWarnLvl ; + +/* general printing routine */ +extern void dpgPrint(char *format, ...) ; +void +dpgPrintActivity(int32 Cur, int32 Tot) ; + +#define dpgIncWarnLevel() (dpgWarnLvl++) +#define dpgSetWarnLevel(n) (dpgWarnLvl = n) + +extern int32 __dpgWarn(char *format, ...) ; +#define dpgWarn(lvl,p) \ +((lvl <= dpgWarnLvl) ? (__dpgWarn p):dpgSUCCESS) + +/* Verbose error setup and usage */ +extern int32 dpgErrorLvl ; +extern int32 dpgErrNo ; + +#define dpgIncErrorLevel() (dpgErrorLvl++) +#define dpgSetErrorLevel(n) (dpgErrorLvl = n) +extern int32 __dpgError(char *format, ...) ; +#define dpgError(num,lvl,p) \ +((dpgErrNo = num),((lvl <= dpgErrorLvl) ? (__dpgError p):dpgERROR)) + +/* Verbose monitor setup and usage */ +extern int32 dpgMonitorFlg ; + +#define dpgSetMonitorFlag(n) (dpgMonitorFlg = n) +extern int32 __dpgMonitor(char *format, ...) ; +#define dpgMonitor(flag,p) \ +((flag & dpgMonitorFlg) ? (__dpgMonitor p):dpgSUCCESS) +#define dpgTestMonitor(flag) \ +((flag & dpgMonitorFlg) ? dpgERROR:dpgSUCCESS) + +/* Dying routine, outputs to the log and if not stderr, out to stderr - exits + */ +extern void dpgDie(char *format, ...) ; + +#define dpgQDie() \ +do { \ + fprintf(stderr,"Press q to quit.\n") ; \ + if(getchar() == 'q') \ + dpgDie("User requested death\n") ; \ +} while(0) + +/* Verbose bad parameter passed error handler - returns ERROR if addr is + * NULL also does dpgError, returns SUCCESS otherwise + */ +int32 +__dpgBadAddress(char *posStr) ; +#define dpgBadAddress(addr,posStr) \ +((addr == NULL) ? __dpgBadAddress(posStr) : dpgSUCCESS) + + + +/* malloc and calloc routines that print out an error and exit on failure. */ +void * +dpgMalloc(size_t size, char *posStr) ; +void * +dpgRealloc(void *pnt, size_t size, char *posStr) ; +void * +dpgCalloc(size_t noElm, size_t size, char *posStr) ; + + +/* The following are useful dm extensions */ + +#define dmVectorSqrLen(a) \ + (dmSqr((a)[DM_X]) + dmSqr((a)[DM_Y]) + dmSqr((a)[DM_Z])) + +#define dmVectorLen(a) dmVectorLength(a) + +#define dmVectorUnit(a) \ +do { \ + float32 mod ; \ + mod = dmLength3(a) ; \ + (a)[DM_X] /= mod ; \ + (a)[DM_Y] /= mod ; \ + (a)[DM_Z] /= mod ; \ +} while (0) + +#define dmVectorCmp(a,b) memcmp(a,b,sizeof(dmVector)) + + +#endif /* __PGENERAL_H__ */ + diff --git a/CODE/RP/MUNGA_L4/libDPL/dsys/PIMAGE.H b/CODE/RP/MUNGA_L4/libDPL/dsys/PIMAGE.H new file mode 100644 index 0000000..885c49c --- /dev/null +++ b/CODE/RP/MUNGA_L4/libDPL/dsys/PIMAGE.H @@ -0,0 +1,199 @@ +/* + * PROJECT: + * SUBSYSTEM: + * MODULE: + * + * File: $RCSfile: pimage.h,v $ + * Revision: $Revision: 1.5 $ + * Date: $Date: 95/04/27 23:01:16 $ + * Author: $Author: bill $ + * RCS Ident: $Id: pimage.h,v 1.5 95/04/27 23:01:16 bill Exp $ + * + * FUNCTION: + * + * + * $Log: pimage.h,v $ + * Revision 1.5 95/04/27 23:01:16 bill + * Major ci for 3.0 Alpha (new: pgeneral, dm) + * + * Revision 1.4 95/03/21 14:50:22 bill + * Adding the global opacity setter + * + * Revision 1.3 1995/03/10 19:03:01 bill + * Ci for beta release of v2.1 dvs -> dsys change + * + * Revision 1.2 1995/03/10 18:43:29 bill + * Ci for beta release of v2.1 + * + * Revision 1.1 1995/03/06 10:24:34 bill + * Initial revision + * + * Revision 1.4 1994/11/09 17:49:06 bill + * texture type was int32 instead of uint8, read wronge + * + * Revision 1.3 1994/08/30 17:18:09 bill + * Altered -t so it sets the background opacity to a given value (-ve is + * default and preserves inta, rgba and svt opacity values, sets rest to + * 255). + * Also added sgi save -> rgba format. + * + * Revision 1.2 1994/05/13 12:08:51 bill + * File name changing for release. pfile.h->pfile2.h, __pfile.h->__pfile2.h, ptools.h->ptools2.h, __ptools.h->__ptools2.h, filelib.h->filelib2.h, getparam.h->getprm.h. + * + * Revision 1.1 1994/04/15 15:43:18 bill + * new pfile and ptools that cope with spheres lines text and polygons, also uses new FL extension pfl & PF extension dpf + * + * Revision 1.1 1994/02/16 20:30:34 bill + * General edit + * + * + * Copyright (c) 1992 Division Ltd. + * + * All Rights Reserved. + * + * This Document may not, in whole or in part, be copied, + * photocopied, reproduced, translated, or reduced to any + * electronic medium or machine readable form without prior + * written consent from Division Ltd. + */ +#ifndef __PIMAGE_H__ +#define __PIMAGE_H__ + +#include + +extern char *progname ; + +/**************************************************************************** + * pimage error numbers */ +#define dpiENO_OPEN 0x7001 +#define dpiENO_READ 0x7002 +#define dpiENO_WRITE 0x7003 +#define dpiENO_CLOSE 0x7004 +#define dpiENO_NULL 0x7005 +#define dpiENO_FORM 0x7006 + +/**************************************************************************** + * pimage error numbers */ +#define dpiWARN_PROB 2 + +/**************************************************************************** + * pimage monitor numbers */ +#define dpiMON_POS 0x00010000 +#define dpiMON_PALLET 0x00020000 +#define dpiMON_IMAGE 0x00040000 + +#define VTX_ALLOW_VTX 1 +#define VTX_ALLOW_SVT 2 +#define VTX_ALLOW_OTHER 4 +#define VTX_ALLOW_DIV 3 +#define VTX_ALLOW_ALL 7 + +#define VTX_WIDTH_EIGHT (uint8)1 + +#define VTXcmpIRGB(s1,s2) memcmp(s1,s2,3) +#define VTXcmpIRGBA(s1,s2) memcmp(s1,s2,4) +#define VTXcpyIRGBA(dd,ss) memcpy(dd,ss,sizeof(VTXIRGBA)) + +typedef enum { VTX_GIF_FILE, VTX_BMP_FILE, VTX_SGI_FILE, + VTX_SVT_FILE, VTX_TGA_FILE, VTX_TIF_FILE, + VTX_VTX_FILE, VTX_BSL_FILE, VTX_UNKNOWN_FILE } VTX_IMG_TYPE ; + +typedef enum { VTX_PREC_SINGLE=0, VTX_PREC_DOUBLE=1 } VTXPRECISION ; +/* bsl types */ +#define dpiBSLNOTYPES 9 +typedef enum {dpiBSLTYPE_MONO0=0, dpiBSLTYPE_MONO1=1, dpiBSLTYPE_MONO2=2, + dpiBSLTYPE_MONO3=3, dpiBSLTYPE_MONO4=4, dpiBSLTYPE_MONO5=5, + dpiBSLTYPE_BILINEAR=6, + dpiBSLTYPE_RGB=7, dpiBSLTYPE_RGBA=8 } dpiBSLTYPE ; + +typedef enum VTXcoord { /* used for indexing arrays, identifying axies etc */ + VTXERGBA = 4, VTX_R = 0, VTX_G = 1, VTX_B = 2, VTX_A=3 +} VTXcoord; + +typedef struct +{ + uint8 col[VTXERGBA]; +}VTXIRGBA ; + +typedef struct +{ + float32 col[VTXERGBA]; +}VTXFRGBA ; + +typedef float32 VTXBOXFILTER[3][3] ; + + +struct VTXTEXTURETYPE ; +typedef struct VTXTEXTURETYPE *VTXTEXTUREPTR ; + +struct VTXHEADERTYPE ; +typedef struct VTXHEADERTYPE *VTXHEADERPTR ; + +struct VTXFILETYPE ; +typedef struct VTXFILETYPE *VTXFILEPTR ; + +int32 +VTXgetFile(char *name, VTXFILEPTR *file, int32 allowFile) ; +VTXFILEPTR +VTXopenFile(char *name, int32 allowFile) ; +int32 +VTXgetFileBody(VTXFILEPTR file) ; +int32 +VTXcloseFile(VTXFILEPTR file) ; +int32 +VTXfreeFile(VTXFILEPTR file) ; + +int32 +VTXputFile(char *name, VTXFILEPTR Sfile, VTX_IMG_TYPE fileType) ; +VTXFILEPTR +VTXopenNewFile(char *name, VTX_IMG_TYPE fileType) ; +int32 +VTXputFileBody(VTXFILEPTR Dfile, VTXFILEPTR Sfile) ; + +VTXFILEPTR +VTXcreateFile(char *name) ; +VTXTEXTUREPTR +VTXcreateTexture(void) ; +void +VTXcreateData(VTXTEXTUREPTR texture) ; + +VTXTEXTUREPTR +VTXgetTexture(VTXFILEPTR file) ; +void +VTXgetTextureSize(VTXTEXTUREPTR vtx, int32 *u, int32 *v) ; +uint8 +VTXgetTextureType(VTXTEXTUREPTR vtx) ; +void +VTXgetTextureBgColour(VTXTEXTUREPTR vtx, VTXIRGBA *col) ; +void +VTXsetTextureType(VTXTEXTUREPTR vtx, uint8 type) ; +void +VTXsetTextureBgColour(VTXTEXTUREPTR vtx, VTXIRGBA *col) ; +int32 +VTXaddTexture(VTXFILEPTR file, VTXTEXTUREPTR text) ; + +void +VTXfreeTexture(VTXTEXTUREPTR texture) ; + + +/* returns non-zero on error, zero otherwise. new_quads points to the same or +** a new array of quads. +*/ +int32 +VTXinterpolate(VTXTEXTUREPTR vtx, int32 new_width, int32 new_height) ; +int32 +VTXboxFilter(VTXTEXTUREPTR file, VTXBOXFILTER BoxF) ; +/* if Opacity is < 0 then the alpha is just initialised, else it is set to + * it (range 0 -> 255) + */ +int32 +VTXsetTransparency(VTXTEXTUREPTR vtx, int32 glOpacity, int32 bgOpacity) ; + + +VTXFILEPTR +VTXcreateBSL(char *name, int32 u, int32 v, int32 w) ; +int32 +VTXmergeBSL(VTXFILEPTR Dfp, int32 type, VTXFILEPTR Sfp) ; + +#endif /* __PIMAGE_H__ */ + diff --git a/CODE/RP/MUNGA_L4/libDPL/dsys/PTOOL.H b/CODE/RP/MUNGA_L4/libDPL/dsys/PTOOL.H new file mode 100644 index 0000000..49ba459 --- /dev/null +++ b/CODE/RP/MUNGA_L4/libDPL/dsys/PTOOL.H @@ -0,0 +1,666 @@ +/**************************************************************************** + * + * Copyright 1995 Division Limited. + * All Rights Reserved + * + * + * System : + * Module : + * Object Name : $RCSfile: ptool.h,v $ + * Revision : $Revision: 1.18 $ + * Date : $Date: 95/05/16 13:47:00 $ + * Author : $Author: bill $ + * Last Modified : <150595.1203> + * + * Description + * + * Notes + * + * History + * + * $Log: ptool.h,v $ + * Revision 1.18 95/05/16 13:47:00 bill + * Added 1) dos. 2) STRIP_LIST. 3) POINTLIST. 4) biz->bgf + * + * Revision 1.17 95/04/27 23:01:16 bill + * Major ci for 3.0 Alpha (new: pgeneral, dm) + * + * + **************************************************************************** + * + * Copyright (c) 1995 Division Ltd. + * + * All Rights Reserved. + * + * This Document may not, in whole or in part, be copied, + * photocopied, reproduced, translated, or reduced to any + * electronic medium or machine readable form without prior + * written consent from Division Ltd. + ****************************************************************************/ + +#ifndef __PTOOL_H__ +#define __PTOOL_H__ + +#ifdef _PF_LOCAL +#include "pfile.h" +#else +#include +#endif + +/*****************************************************************************/ +/* pfile error numbers */ +#define dptENO_NOTIMP 0x8001 +#define dptENO_FORM 0x8002 +#define dptENO_VALUE 0x8003 +#define dptENO_USAGE 0x8004 +#define dptENO_NULL 0x8005 +#define dptENO_INTER 0x8006 +#define dptENO_GRAPH 0x8007 + +/*****************************************************************************/ +/* ptool monitor flags */ +#define dptMON_ALL 0x01000000 + +void +dptGetLibraryVersion(uint8 *M, uint8 *m) ; + +/* returns 0 if the triangle is small, 1 and the normal otherwise +*/ +int32 +dptCalcVTriNorm(dmVector pnt1, dmVector pnt2, dmVector pnt3, + dmVector normal) ; +int32 +dptCalcTriNorm(dpfVERTEXPTR vert1, dpfVERTEXPTR vert2, dpfVERTEXPTR vert3, + dmVector normal) ; +void +dptMatMultVector(dmVector OutVec, dmVector vec, dmMatrix mat) ; + + +/* + * FILE __ptmesh.c + * Creates and saves meshes + */ +#define dpt_OPT_PMESH 0x010000 +#define dpt_OPT_PSTRIP 0x020000 + +dptMESHPTR +dptCreateMesh(int32 hash_size, int32 normals) ; +void +dptFreeMesh(dptMESHPTR mesh) ; +void +dptGetMeshStats(dptMESHPTR mesh) ; +int32 +dptGetMeshNoTriangles(dptMESHPTR mesh) ; +int32 +dptGetMeshNoVertices(dptMESHPTR mesh) ; +int32 +dptGetMeshNoDropTri(dptMESHPTR mesh) ; + +int32 +dptMeshLoadFile(dptMESHPTR mesh, dpfFILEPTR file) ; +int32 +dptMeshLoadObject(dptMESHPTR mesh, dpfOBJECTPTR object) ; +int32 +dptMeshLoadLOD(dptMESHPTR mesh, dpfLODPTR LOD) ; +int32 +dptMeshLoadPatch(dptMESHPTR mesh, dpfPATCHPTR patch) ; +int32 +dptMeshLoadGeometry(dptMESHPTR mesh, dpfGEOMETRYPTR geom) ; +int32 +dptMeshLoadTriangle(dptMESHPTR mesh, dpfVERTEXPTR vert1, dpfVERTEXPTR vert2, + dpfVERTEXPTR vert3) ; + +int32 +dptMeshCalcFaceNormals(dptMESHPTR mesh) ; +void +dptMeshSetVertexPoint(dptMESHPTR mesh, dpfVERTEXPTR vert, dmVector point) ; + +int32 +dptMeshUnloadPatch(dpfPATCHPTR patch, dptMESHPTR mesh, int32 usePmesh) ; +int32 +dptMeshUnloadLOD(dpfLODPTR LOD, dptMESHPTR mesh, int32 usePmesh) ; +int32 +dptMeshUnloadMesh(dptMESHPTR mesh, int32 usePmesh) ; + +/* +** Octize utilitises +** +** must load the file into a mesh using dptMeshLoadFile etc. +** Then use dptOctizeMesh to octize followed by +** dptUnloadOctizedMeshSingle or dptUnloadOctizedMeshMulti +** for single and All file outputs. +*/ +int32 +dptOctizeMesh(dptMESHPTR mesh, dpfIVECTOR div, dmVector Min, dmVector Dif) ; +int32 +dptSpatialiseMesh(dptMESHPTR mesh) ; + +int32 +dptUnloadDividedMeshSingle(dptMESHPTR mesh, int32 octPos, + int32 usePmesh, int32 *noTriangles) ; +int32 +dptUnloadOctizedMeshSingle(dptMESHPTR mesh, dpfIVECTOR pos, + int32 usePmesh, int32 *noTriangles) ; +int32 +dptUnloadDividedMeshAll(dptMESHPTR mesh, int32 usePmesh) ; + + +/* + * File ptbbox + * Gets bounding box of files, objects, patches & geoms + * + * dpfBbox??? must have the MaxVec and MinVec initialized by the user + * before it is first called. + * dpfGetbbox??? Initializes itself, and gets the bounding box and + * difference vector for the structure. + */ +int32 +dptGetBBoxGeometry(dpfGEOMETRYPTR geom, dmVector MaxVec, dmVector MinVec, + dmVector differ) ; +int32 +dptGetBBoxPatch(dpfPATCHPTR patch, dmVector MaxVec, dmVector MinVec, + dmVector differ) ; +int32 +dptGetBBoxLOD(dpfLODPTR LOD, dmVector MaxVec, dmVector MinVec, + dmVector differ) ; +int32 +dptGetBBoxFile(dpfFILEPTR file, dmVector MaxVec, dmVector MinVec, + dmVector differ) ; + +/* + * File ptscale + * scales files, objects, patches & geoms + */ +/* NOTE! :- If dptScaleGeometry or Patch is used it is up to the USER to +** scale all LOD reference points !!! DON'T FORGET. +*/ +int32 +dptScaleGeometry(dpfGEOMETRYPTR geom, int32 normals, dmVector scale) ; +int32 +dptScalePatch(dpfPATCHPTR patch, dmVector scale) ; +int32 +dptScaleObject(dpfOBJECTPTR object, dmVector scale) ; +int32 +dptScaleFile(dpfFILEPTR file, dmVector scale) ; +int32 +dptChangeFileUnit(dpfFILEPTR file, dpfUNIT unit) ; + +int32 +dptScaleNPGeometry(dpfGEOMETRYPTR geom, dmVector scale, dpfIVECTOR NP) ; +int32 +dptScaleNPPatch(dpfPATCHPTR patch, dmVector scale, dpfIVECTOR NP) ; +int32 +dptScaleNPObject(dpfOBJECTPTR object, dmVector scale, dpfIVECTOR NP) ; +int32 +dptScaleNPFile(dpfFILEPTR file, dmVector scale, dpfIVECTOR NP) ; + +/* + * File ptxlate + * translates files, objects, patches & geoms + */ +/* NOTE! :- If dptTranslateGeometry or Patch is used it is up to the USER to +** scale all LOD reference points !!! DON'T FORGET. +*/ +int32 +dptTranslateGeometry(dpfGEOMETRYPTR geom, dmVector trn) ; +int32 +dptTranslatePatch(dpfPATCHPTR patch, dmVector trn) ; +int32 +dptTranslateLOD(dpfLODPTR LOD, dmVector trn) ; +int32 +dptTranslateObject(dpfOBJECTPTR object, dmVector trn) ; +int32 +dptTranslateFile(dpfFILEPTR file, dmVector trn) ; + +/* + * File ptcentre + * Centre's given file + */ +int32 +dptCentreFile(dpfFILEPTR file) ; + +/* + * File ptcoales + * coalesces short patches into longer ones + * reduces file size, execution time + */ +int32 +dptCoalesceLOD(dpfLODPTR LOD) ; +int32 +dptCoalesceObject(dpfOBJECTPTR obj, int32 coalesceLODs, int32 coalesceGEOMs) ; +int32 +dptCoalesceFile(dpfFILEPTR file, int32 coalesceLODs, int32 coalesceGEOMs) ; + +/* + * File pttextur + * Places planar texture co-ordinates on given file + */ +#define dpt_TEXTURE_PLANE 0 +#define dpt_TEXTURE_AXIAL 1 +#define dpt_TEXTURE_CYLINDER 2 + +typedef struct +{ + int32 method ; + int32 noWraps ; + int32 gotSize, gotRef ; + int32 Cswap ; + int32 Uco, Vco ; + int32 axes[3] ; + float32 Usize, Vsize ; + float32 Cangle, Coffset ; + dmVector reference ; + + int32 distort ; +} dptTEXTURE, *dptTEXTUREPTR ; + + +void +dptCorrectTriangleTexture(dptMESHPTR mesh, dpfPATCHPTR patch, + dpfVERTEXPTR vert1, dpfVERTEXPTR vert2, + dpfVERTEXPTR vert3, int32 noWraps, int32 *distort) ; +dpfGEOMETRYPTR +dptCorrectGeometryTexture(dpfGEOMETRYPTR geom, int32 noWraps, int32 *distort) ; + +int32 +dptTextureInit(dptTEXTUREPTR txt, int32 method, int32 NoWraps, int32 gotSize, + int32 gotRef, dmVector MinVec, dmVector differ, + float32 Usize, float32 Vsize, dmVector reference, int32 Uco, + int32 Vco, int32 *axes, int32 Cswap, float32 Cangle) ; +int32 +dptTextureFileInit(dpfFILEPTR file, dptTEXTUREPTR txt, int32 method, + int32 NoWraps, int32 gotSize, int32 gotRef, float32 Usize, + float32 Vsize, dmVector reference, int32 Uco, int32 Vco, + int32 *axes, int32 Cswap, float32 Cangle) ; +dpfGEOMETRYPTR +dptTextureGeometry(dpfGEOMETRYPTR geom, dptTEXTUREPTR txt) ; +int32 +dptTexturePatch(dpfPATCHPTR ptch, dptTEXTUREPTR txt) ; +int32 +dptTextureLOD(dpfLODPTR LOD, dptTEXTUREPTR txt) ; +int32 +dptTextureFile(dpfFILEPTR file, dptTEXTUREPTR txt) ; + +/* + * File __ptrot.c + * rotates files, objects, patches & geoms + * Order the rotations are performed are the same as MAZ + * ie Z, X then Y + */ +/* Matrix point transformers. + * Transforms (Xforms) files using a 4x4 homogeneous matrix, + * Note that translations are performed, hence the use of dmPntXformMat + * + * Used directly by the dptRotate functions. + */ +#define dptVectorXformMat(OutVec,vec,mat) dmPointXformMat(OutVec,vec,mat) +extern void +(dptVectorXformMat)(dmVector OutVec, dmVector vec, dmMatrix mat) ; +int32 +dptXformGeometry(dpfGEOMETRYPTR geom, int32 Normals, dmMatrix rotate) ; +int32 +dptXformPatch(dpfPATCHPTR patch, dmMatrix rotate) ; +int32 +dptXformObject(dpfOBJECTPTR object, dmMatrix rotate) ; +int32 +dptXformFile(dpfFILEPTR file, dmMatrix rotate) ; + +/***************************************************************************** +* NOTE! :- If dptRotateGeometry or Patch is used it is up to the USER to * +* scale all LOD reference points !!! DON'T FORGET. * +*****************************************************************************/ +/* + * Rotation functions use the Xform functions directly, so error messages + * will be dptXform's. + */ +extern void +dptRotateSetup(dmMatrix outMat, dmVector inRot) ; +#define dptRotateGeometry(geom,Normals,rotate) \ + dptXformGeometry(geom,Normals,rotate) +#define dptRotatePatch(patch,rotate) \ + dptXformPatch(patch,rotate) +#define dptRotateObject(object,rotate) \ + dptXformObject(object,rotate) +#define dptRotateFile(file,rotate) \ + dptXformFile(file,rotate) + +/* + * File __pticon.h + * Centre's and scales a given file to produce an icon + */ + +#define dpt_ICONSIZE 1.0 + +int32 +dptIconizeFile(dpfFILEPTR file, float32 size) ; + +/* + * File __ptrond.h + * Rounds given file to the given number of sig. figures + * if the given number is <= 0 then default is used. + */ + +#define dpt_DEFAULTSIGFIG 6 +#define dpt_DEFAULTDPS 4 +#define dpt_DEFAULTWRAP 1 + +int32 +dptRoundFvertex(dpfFILEPTR file, int32 SigFig, int32 dps) ; + +int32 +dptFuzzyJoinFile(dpfFILEPTR file, float32 Dist, int32 WarnDis) ; + +int32 +dptJoinMeshTriangles(dptMESHPTR mesh, float32 distTol, float32 angTol, + int32 *joinCount, int32 Verbose) ; +int32 +dptJoinPatchTriangles(dpfPATCHPTR patch, int32 hash_size, int32 usePmesh, + float32 distTol, float32 angTol, int32 *joinCount, + int32 Verbose) ; + + +typedef struct +{ + /* Check setup parameters */ + int32 dps ; /* decimal places to check to */ + int32 NoWraps ; /* maximum no. of texture wraps */ + int32 autoFix ; /* autoFix on if non-zero */ + int32 disableText ; /* don't fix textures if non-zero */ + int32 splitGeom ; /* if non-zero the split triangle */ + /* rather than distort texture */ + int32 Verbose ; /* run with verbose */ + + /* Things calculated on setup */ + float32 MulFac ; /* Normal modulus accuracy mul factor*/ + + /* No. things found empty */ + int32 emptyLod ; + int32 emptyPatch ; + int32 emptyGeom ; + + /* LOD error report */ + int32 badDummy ; /* got a dummy with other lods */ + int32 badOrder ; /* lods in wrong order - flag only */ + int32 distSame ; /* switch-in == out count */ + int32 distSwap ; /* switch-in > out count */ + int32 overLap ; /* lod switch in overlaps others out */ + + /* geometry bad report */ + int32 badPmeshT ; /* No of bad pmesh triangle connects */ + int32 badSphere ; /* No of spheres with bad radii */ + int32 badLine ; /* No of 0 length lines */ + int32 badPoint ; /* No. points with nans, inc. lod ref*/ + int32 badNorm ; /* No. normals with bad mod */ + int32 badCook ; /* No. rgb's out of range */ + int32 badText ; /* no. nan | text co-ords out of wrap*/ + float32 maxText ; /* the maximum range of a texture */ + + /* boundary report */ + int32 badBBox ; + int32 badBSphere ; + int32 badBPmesh ; + + int32 isBad ; /* Summary flag - if true then error found */ + + /* auto-fix output */ + int32 dropLod ; /* No dropped lods as empty */ + int32 dropPatch ; /* No dropped patches as empty */ + int32 dropGeom ; /* No dropped geometries as empty */ + int32 dropTri ; /* No tri's dropped because duff */ + /* duff cos nan's or pmesh connect */ + int32 dropLine ; /* No lines's dropped cos len = 0 */ + int32 dropSphere ; /* No tri's dropped cos radius = 0 */ + + int32 dropBPart ; /* No B box, sphere and pmeshes drop */ + int32 dropBound ; /* No bounds dropped */ + + int32 normDistort ; /* No normal 0 or nan mods */ + int32 textDistort ; /* No texture distorts (0 if split) */ + int32 newTriCnt ; /* No new tris created from splitting*/ + + int32 isAwful ; /* Summary flag - if true then Distortion */ + +} dptCHECK, *dptCHECKPTR ; + + +int32 +dptCheckLODs(dpfFILEPTR file, dptCHECKPTR check) ; +int32 +dptCheckPatch(dpfPATCHPTR patch, dptCHECKPTR check) ; +void +dptCheckSetup(dptCHECKPTR check, int32 dps, int32 NoWraps, int32 autoFix, + int32 disableText, int32 verbose) ; +int32 +dptCheckFile(dpfFILEPTR file, dptCHECKPTR check, int32 dps, int32 NoWraps, + int32 autoFix, int32 disableText, int32 verbose) ; + +int32 +dptNormalizeMesh(dptMESHPTR mesh, float32 Tolerence, int32 Verbose) ; +int32 +dptNormalPatch(dpfPATCHPTR patch, int32 hash_size, float32 Tolerence, + int32 usePmesh, int32 *DropTri, int32 Verbose) ; + + +/* reduce a patch + * NOTE :- + * Method is a bit field using the following #defines + * verbose is a bit field 0x02=Prompt, 0x04=GL, non-zero=% + */ +#define dptRDC_DUPS 0x0001 +#define dptRDC_DUPD 0x0002 +#define dptRDC_SQUR 0x0004 +#define dptRDC_180 0x0008 +#define dptRDC_360 0x0010 + +int32 +dptReducePatch(dpfPATCHPTR patch, int32 hash_size, float32 Cook_Tol, + float32 Norm_Tol, float32 Tri_Tol, float32 Edge_Tol, + int32 *DropTri, int32 NoIter, int32 usePmesh, int32 Method, + int32 Verbose, float32 WarmInc) ; + +/* +** Reduces the number of faces in a cylinder. +** Tolerences :- +** MaxRadiusTol +** RatioTol - The maximum ratio between the largest and +** smallest end edges. +** NormTol - How correctly shaped the pairs are. +** MaxNoFaces - Max faces in a cylinder -> 2* no of trian. +** MinNoFaces - Min faces in a cylinder +** FinNoFaces - Final no faces. +*/ + + +/* The cylinder structure + * The following rules must be adhered to if blast is to correctly re-create + * them. + * 1) there are 2 different types of cylinders, flat (disks and ring) and + * non-flat (cones and tubes). + * 2) flat cylinders must have a length of 0.0, the larger ring must be + * stored in slot 0 and inner ring or centre in slot 1. PlnNorm and + * CenLine must be the same and point in the direction it is facing. + * Flipping the centLine direction and facing bit in flags (bit 1) + * can be used to change its orientation + * 3) Non-flat tubes have a non-zero length, the CentLine is the direct + * needed to go for the centre point of ring in slot 0 to the centre + * of ring in slot 1. Bit 1 of flags indicates where the cylinder is + * in or outwardly facing, set if in. + * 4) flat disk cylinders are automatically converted to cylinder ends if + * an apropriate cylinder is found. + * 5) Bit 2 of flags gives the orientation of the cylinder in the pipe, if + * set then it is facing the other way. + * 6) Bit 3-5 of flags indicates the part got of a cylinder + * 7) the plane normals must point outwards of a tube if inwardly facing, + * or inwardly if inwardly facing. With a ring, the large radius ring must + * point in the direction the ring faces and it will join that way, the + * smaller must point the oposite way. + */ +#define dptBLAST_FACE 0x0001 +#define dptBLAST_DIR 0x0002 +#define dptBLAST_BODY 0x0004 +#define dptBLAST_END1 0x0008 +#define dptBLAST_END2 0x0010 +#define dptBLAST_DISK 0x0020 +#define dptBLAST_CONE 0x0040 +#define dptBLAST_RING 0x0080 +#define dptBLAST_TUBE 0x0100 + +typedef struct dptCYLINDER_str +{ + int32 noFaces ; + int32 flags ; + float32 Length ; + dmVector CentLine ; + + float32 Radius[2] ; + dmVector Centre[2] ; + dmVector PlnNorm[2] ; + + struct dptCYLINDER_str *next ; + +} dptCYLINDER, *dptCYLINDER_ptr ; + + +typedef struct dptCYLLIST_str +{ + int32 flags[2] ; + int32 NoVert ; + float32 maxRadius ; + float32 minRadius ; + float32 Radius[2] ; + dmVector Centre[2] ; + dmVector PlnNorm[2] ; + dptCYLINDER_ptr EndCyl[2] ; + + struct dptCYLLIST_str *next ; +} dptCYLLIST, *dptCYLLIST_ptr ; + + +typedef struct +{ + dptMESHPTR curMesh ; + dpfPATCHPTR curPatch ; + + int32 BBlast ; + float32 BMaxSideTol ; + float32 BRatioTol ; + float32 BEdgeTol ; + float32 BNormTol ; + + int32 CBlast ; + int32 CStats ; + int32 CMinFcs ; + int32 CMaxFcs ; + int32 CNoRanges ; + float32 *CMinRad ; + float32 *CMaxRad ; + int32 *CFinFcs ; + + /* to be filled */ + int32 KeepParts ; + float32 CRatioTol ; + float32 CNormTol ; + float32 CCentDif ; + float32 CRadDif ; + float32 CTurnTol ; + + /* to be left alone */ + float32 TurnTol ; + float32 cNorm0Tol ; + float32 cNorm90Tol ; + dptCYLLIST_ptr CList_hd, CList_tl ; + dpfVERTEXPTR *TopVerts, *BotVerts ; + +} dptBLAST, *dptBLASTPTR ; + + +int32 +dptBlastPatch(dpfPATCHPTR patch, int32 hash_size, dptBLASTPTR blast, + int32 usePmesh, int32 *DropTri, int32 Verbose) ; + + +int32 +dptTinyKillMesh(dptMESHPTR mesh,float32 Angl_Tol, + int32 Verbose, int32 *SmallTri) ; +int32 +dptTinyKillPatch(dpfPATCHPTR patch, int32 hash_size, + float32 Angl_Tol, int32 usePmesh, + int32 *DropTri, int32 Verbose) ; + + +/* +** ptflip - module to flip the trangle direction face +*/ +int32 +dptFlipAllGeometry(dpfGEOMETRYPTR geom, int32 flipNormals) ; +int32 +dptFlipAllPatch(dpfPATCHPTR patch, int32 flipNormals) ; +int32 +dptFlipAllObject(dpfOBJECTPTR object, int32 flipNormals) ; +int32 +dptFlipAllFile(dpfFILEPTR file, int32 flipNormals) ; + +int32 +dptFlipRightMesh(dptMESHPTR mesh, int32 *flipCount, int32 Verbose) ; +int32 +dptFlipRightPatch(dpfPATCHPTR patch, int32 hash_size, int32 usePmesh, + int32 *DropTri, int32 *flipCount, int32 Verbose) ; + +/* +** hedgehog a given file +*/ +int32 +dptCreateVisualMaterials(dpfFILEPTR file) ; +int32 +dptAddVertexNormalVisual(dpfFILEPTR file, char *matLib, float32 Pscale, + float32 Bscale) ; +int32 +dptAddBoundBoxVisual(dpfFILEPTR file, char *matLib) ; +int32 +dptAddBoundSphereVisual(dpfFILEPTR file, char *matLib, + int32 udice, int32 vdice) ; +int32 +dptAddBoundPmeshVisual(dpfFILEPTR file, char *matLib) ; + +int32 +dptRmvVertexNormalVisual(dpfFILEPTR file) ; +int32 +dptRmvBoundBoxVisual(dpfFILEPTR file) ; +int32 +dptRmvBoundSphereVisual(dpfFILEPTR file) ; +int32 +dptRmvBoundPmeshVisual(dpfFILEPTR file) ; + +int32 +dptCookGeometry(dpfGEOMETRYPTR geom, dpfRGBA col) ; +int32 +dptCookFile(dpfFILEPTR file) ; + +/* Boundary stuff */ +int32 +dptCalcMinBBox(dpfFILEPTR file, int32 res, dpfBOUNDPTR bound) ; +int32 +dptCreateBoundary(dpfFILEPTR file, int32 minBBoxRes, int32 doHierarchy, + int32 keepPmesh, int32 hashSize) ; + +/* Tessellate a polygon, allowing for concavity. + * + * The pmesh must already contain all the required vertices, noPnts is + * a count of the number of points in the polygon (doesnt have to be the + * number of vertices), and vrtlst is an int array of size noPnts giving + * the pmesh vert numbr for the nth point. + * Assumes that the polygon is closed, so vrtlst[0] != vrtLst[noPnts-1] + * should be true. + */ +int32 +dptPolyTessellate(dpfGEOMETRYPTR pmesh, int32 noPnts, int32 *vrtLst) ; + +/* graphics routines */ +int32 +dptInitGraphics(char *name) ; +int32 +dptInitView(dmVector boxMin, dmVector boxDif) ; +int32 +dptEndView(void) ; + +#endif /* __PTOOL_H__ */ diff --git a/CODE/RP/MUNGA_L4/libDPL/dsys/VDIFILE.H b/CODE/RP/MUNGA_L4/libDPL/dsys/VDIFILE.H new file mode 100644 index 0000000..2cd11f9 --- /dev/null +++ b/CODE/RP/MUNGA_L4/libDPL/dsys/VDIFILE.H @@ -0,0 +1,229 @@ +/* +-- ---------------------------------------------------------------------------- +-- +-- Copyright 1995 Division Limited. +-- All Rights Reserved +-- +-- +-- System : +-- Module : +-- Object Name : $RCSfile: vdifile.h,v $ +-- Revision : $Revision: 1.4 $ +-- Date : $Date: 95/04/27 23:01:16 $ +-- Author : $Author: bill $ +-- +-- Description +-- +-- Notes +-- +-- History +-- +-- +-- ---------------------------------------------------------------------------- +*/ + +#ifndef __VDIFILE_H__ + +#define __VDIFILE_H__ + +#ifdef _PF_LOCAL +#include "pfile.h" +#else +#include +#endif + +/* vdifile error numbers */ + + +#define dvf_OBJECT_TYPE 0x01 /* if flag bit set then obj in scene */ +#define dvf_PARENT_TYPE 0x02 /* if flag bit set then obj is parent */ +#define dvf_OBJECT_LIB 0x04 /* if flag bit set obj is a library */ + +#define dvf_TABSIZE 4 + +typedef enum { dvfLIGHT_AMBIENT, dvfLIGHT_DIRECT } dvfLIGHTTYPE ; +typedef enum { dvfSTATE_ON=0, dvfSTATE_OFF } dvfSTATE ; + +extern char *progname ; + +typedef struct dvfMFILETYPE +{ + char *name ; + dpfFILEPTR file ; + struct dvfMFILETYPE *next ; +} dvfMFILE, *dvfMFILEPTR ; + +typedef struct +{ + /* lighting stuff */ + dvfLIGHTTYPE lightType ; + dvfSTATE lightState ; + dpfRGBA colour ; +} dvfLIGHT, *dvfLIGHTPTR ; + +typedef struct dvfOBJECTTYPE +{ + /* Object name, library file name, template name and comment */ + char *name ; + char *libName ; + char *tempName ; + char *comment ; + + /* position in the world relative to parent */ + dmPoint point ; + dmScale scale ; + dmEuler orien ; + + /* visual info */ + char *geomName ; + dpfFILEPTR geometry ; + dvfSTATE geomState ; /* if ON then visible else invisble */ + + /* Light setting of the object */ + dvfLIGHTPTR light ; + + /* User data - do what you want with these. + * Guaranteed to be initialised to 0s and NULLs + */ + int32 userFlags ; + void *userData ; + int32 userFlags2 ; + void *userData2 ; + + /* internal flags */ + int32 flags ; + struct dvfOBJECTTYPE *child_hd, *child_tl ; + struct dvfOBJECTTYPE *next, *objParent ; + struct dvfFILETYPE *fileParent ; +} dvfOBJECT, *dvfOBJECTPTR ; + + +typedef struct dvfFILETYPE +{ + char *fileName, *sceneName ; + char *basePath, *extPath ; + FILE *fp ; + int32 useMid, type ; + int32 disLight ; + int32 tab ; + + int32 userFlags ; + void *userData ; + + dvfOBJECTPTR defs_hd, defs_tl ; + dvfOBJECTPTR scene_hd, scene_tl ; + dvfMFILEPTR mfile_hd ; + dpfFILETYPE outType ; +} dvfFILE, *dvfFILEPTR ; + + +/* Copies sname into dname, correcting any bad characters to '_' + * + * Note:- if the name starts with a non alpha character (inc numeric), + * it is illegal so a pre-pending 'A' is added. For this reason + * dname must be 1 character bigger than sname. + * + * dname can been sname! (if so ensure sname is 1 character bigger) + */ +void +dvfCorrectName(char *dname, char *sname) ; + +/* File setup and saving ****************************************************/ +dvfFILEPTR +dvfCreateFile(void) ; +int32 +dvfSaveFile(dvfFILEPTR file) ; +int32 +dvfFreeFile(dvfFILEPTR file) ; + + +int32 +dvfSetFileName(dvfFILEPTR file, char *name) ; +/* if type is non-zero then the file is a library and saved with the + * extension of .vdl + */ +#define dvfSetFileType(f,t) ((f)->type = t) +#define dvfDisableDefaultLighting(f) ((f)->disLight = 1) +int32 +dvfSetFilePaths(dvfFILEPTR file, dpfFILETYPE outType, char *basePath, + int32 useMid, char *extPath) ; +#define dvfGetFileSceneName(f) ((f)->sceneName) +#define dvfGetFileFileName(f) ((f)->fileName) + +/* Material File calls ******************************************************/ +dvfMFILEPTR +dvfCreateMaterialFile(void) ; +int32 +dvfAddMaterialFile(dvfFILEPTR file, dvfMFILEPTR mfile) ; +int32 +dvfSetMaterialFileName(dvfMFILEPTR mfile, char *name) ; + +/* OBJECT Functions *********************************************************/ +dvfOBJECTPTR +dvfCreateObject(void) ; +void +dvfUnlinkObject(dvfOBJECTPTR object) ; + +/* adding object to the hierarchy */ +int32 +dvfAddDefinitionObject(dvfFILEPTR file, dvfOBJECTPTR object) ; +int32 +dvfAddSceneObject(dvfFILEPTR file, dvfOBJECTPTR object) ; +int32 +dvfAddObjectObject(dvfOBJECTPTR parent, dvfOBJECTPTR object) ; + +/* setting object information */ +int32 +dvfSetObjectName(dvfOBJECTPTR object, char *name) ; +int32 +dvfSetObjectGeometryName(dvfOBJECTPTR object, char *name) ; +#define dvfSetObjectGeometryState(o,s) ((o)->geomState = s) +int32 +dvfSetObjectGeometryFile(dvfOBJECTPTR object, dpfFILEPTR file) ; +int32 +dvfSetObjectLight(dvfOBJECTPTR object, dvfLIGHTPTR light) ; +#define dvfSetObjectPoint(o,p) dmVectorCopy((o)->point,p) +#define dvfSetObjectScale(o,s) dmVectorCopy((o)->scale,s) +#define dvfSetObjectOrien(o,r) dmVectorCopy((o)->orien,r) + +/* Getting information back again */ +#define dvfGetObjectName(o) ((o)->name) +#define dvfGetObjectObjectParent(o) ((o)->objParent) +#define dvfGetObjectFileParent(o) ((o)->fileParent) +#define dvfGetObjectGeometryName(o) ((o)->geomName) +#define dvfGetObjectGeometryFile(o) ((o)->geometry) +#define dvfGetObjectLight(o) ((o)->light) +#define dvfGetObjectPoint(o,p) dmVectorCopy(p,(o)->point) +#define dvfGetObjectScale(o,s) dmVectorCopy(s,(o)->scale) +#define dvfGetObjectOrien(o,r) dmVectorCopy(r,(o)->orien) +#define dvfGetObjectGeometryState(o) ((o)->geomState) + +/* The next makes it a UseLibrary if the file name is not NULL or + * a defineLibrary if NULL + */ +int32 +dvfSetObjectLibrary(dvfOBJECTPTR object, char *filename) ; +/* Sets the library name and object name the use as a Template */ +int32 +dvfSetObjectTemplate(dvfOBJECTPTR object, char *library, char *oname) ; +int32 +dvfSaveFreeGeometry(dvfFILEPTR file, dvfOBJECTPTR object) ; +int32 +dvfFreeObject(dvfOBJECTPTR object) ; +/* Dont use the following as it doesnt up-date pointers */ +int32 +dvfFreeObjectList(dvfOBJECTPTR object) ; + +/* Light Functions **********************************************************/ +dvfLIGHTPTR +dvfCreateLight(void) ; + +#define dvfGetLightType(l) ((l)->lightType) +#define dvfGetLightState(l) ((l)->lightState) +#define dvfGetLightColour(l,c) (dpfRGBCpy(c,(l)->light)) + +#define dvfSetLightType(l,t) ((l)->lightType = t) +#define dvfSetLightState(l,s) ((l)->lightState = s) +#define dvfSetLightColour(l,c) (dpfRGBACpy((l)->colour,c)) + +#endif /* __VDIFILE_H__ */ diff --git a/CODE/RP/MUNGA_L4/libDPL/dsys/__PFILE.H b/CODE/RP/MUNGA_L4/libDPL/dsys/__PFILE.H new file mode 100644 index 0000000..45d8905 --- /dev/null +++ b/CODE/RP/MUNGA_L4/libDPL/dsys/__PFILE.H @@ -0,0 +1,603 @@ +/**************************************************************************** + * + * Copyright 1995 Division Limited. + * All Rights Reserved + * + * + * System : + * Module : + * Object Name : $RCSfile: __pfile.h,v $ + * Revision : $Revision: 1.15 $ + * Date : $Date: 95/05/16 13:46:17 $ + * Author : $Author: bill $ + * Last Modified : <120595.1125> + * + * Description + * + * Notes + * + * History + * + * $Log: __pfile.h,v $ + * Revision 1.15 95/05/16 13:46:17 bill + * Added 1) dos. 2) STRIP_LIST. 3) POINTLIST. 4) biz->bgf + * + * Revision 1.14 95/04/27 23:01:16 bill + * Major ci for 3.0 Alpha (new: pgeneral, dm) + * + * + **************************************************************************** + * + * Copyright (c) 1995 Division Ltd. + * + * All Rights Reserved. + * + * This Document may not, in whole or in part, be copied, + * photocopied, reproduced, translated, or reduced to any + * electronic medium or machine readable form without prior + * written consent from Division Ltd. + ****************************************************************************/ + +#ifndef ____PFILE_H__ +#define ____PFILE_H__ + +#include + +#ifdef _PF_LOCAL +#include "filelib.h" +#include "pfile.h" +#else +#include +#include +#endif + + +/* Constant ID strings */ +#define dpfBIZIDstrLen 31 +#define dpfBIZIDstr "biz v1.0 (c) DIVISION Ltd 1992" +#define dpfVIZIDstr "/* viz v1.0 (c) DIVISION Ltd 1992 */\n" + +#define dpfB2ZIDstrLen 8 +#define dpfB2ZIDstr "DIV-BIZ2" +#define dpfV2ZIDstrLen 8 +#define dpfV2ZIDstr "DIV-VIZ2" +#define dpfBMFIDstrLen 8 +#define dpfBMFIDstr "DIV-BMF2" +#define dpfVMFIDstrLen 8 +#define dpfVMFIDstr "DIV-VMF2" + +/* ver change */ +/* 2.00 Initial pfile version */ +/* 2.01 Replairs to pmesh tag and section length tests */ +/* 2.02 pmesh extended to have polygons of upto 255 faces */ +/* 2.03 boundary information added */ +/* 2.04 Line definition change, can now be textured cooked & normalized */ +/* 2.05 Introduction of material libraries */ +/* 2.06 pgeneral way of doing things */ +/* 2.07 STRIP_LISTs and POINTLISTs added to format */ +#define dpf_LIBRARY_MAJOR_VER 2 +#define dpf_LIBRARY_MINOR_VER 07 + +#define dpfSTDINName "Std In" +#define dpfSTDOUTName "Std Out" + +/* new biz v2 max depth constant */ +#define dpf_MAX_DEPTH 10 + +/* load in basic types, struct names and procedure heading which +** can be externally called. +*/ + +#define dpfVBLKSIZE 1024 + +extern uint8 dpfVERTFLAG ; +extern uint8 dpfVERTSIZE ; +extern uint8 dpfVERTNORM ; +extern uint8 dpfVERTRGBA ; +extern uint8 dpfVERTTEXT ; +extern uint8 dpfVERTOVER ; + +/* Now define all the internal structures */ +typedef int32 dpfTOKEN ; + +/* The following is for the new wizzy v1.0 -> v2.0 texture converter */ +typedef struct dpfVISTEXTURETYPE +{ + char *visName ; + char *F_textName, *F_textMap ; + char *B_textName, *B_textMap ; + + struct dpfVISTEXTURETYPE *next ; +} dpfVISTEXTURE ; + + +typedef struct dpfSTRINGTYPE +{ + int32 length ; + uint8 *string ; +} dpfSTRING ; + +typedef struct dpfTEXTURETYPE +{ + char *textName ; + char *fileName ; + + dpfMINIFY minify ; + dpfMAGNIFY magnify ; + dpfALPHA alpha ; + dpfWRAP wrap_U, wrap_V ; + dpfDETAIL detail ; + char *detailName; + uint8 bitslice ; + dpfSTRINGPTR special ; + int32 dataLength ; + struct dpfFILE_TYPE *file; + struct dpfTEXTURETYPE *next ; + +} dpfTEXTURE ; + + +typedef struct dpfRAMPTYPE +{ + char *name ; + dpfRGBA data[2] ; + + dpfSTRINGPTR special ; + int32 dataLength ; + + struct dpfFILE_TYPE *file; + struct dpfRAMPTYPE *next ; +} dpfRAMP ; + +typedef struct dpfMATERIALTYPE +{ + char *name ; + + dpfMATTXTTYPE textureType ; + char *textureName ; + char *rampName ; + dpfRGBA ambient, + diffuse, + specular, + emissive, + opacity ; + dpfSTRINGPTR special ; + int32 dataLength ; + struct dpfFILE_TYPE *file; + struct dpfMATERIALTYPE *next ; + +} dpfMATERIAL ; + + +typedef struct dpfSURFACETYPE +{ + char *name ; + dpfMATTYPE F_Material ; + dpfMATTYPE B_Material ; + char *F_MatName ; + char *B_MatName ; + + dpfPLANE plane ; + dpfFACET facet ; + int32 decal ; + dpfDRAWMODE drawMode ; + uint8 width ; + uint8 vertex ; + dpfLOCK lock ; + dpfSTRINGPTR special ; + +} dpfSURFACE ; + +typedef struct dpfVERTEXTYPE { + struct dpfVERTEXTYPE *next ; + union { + struct dpfGEOMETRYTYPE *geom ; + struct dptTRILISTTYPE *triList ; + } ptr ; + uint8 vertex ; + uint8 flag ; + unsigned short count ; + float32 data[3] ; +} dpfVERTEX ; + +typedef struct dpfVERTBLK { + struct dpfVERTBLK *next ; + dpfVERTEX vert[dpfVBLKSIZE] ; +} dpfVERTBLK, *dpfVERTBLKPTR ; + + +/************************************************************* +* The Following are type defs for the ptmesh utility * +*************************************************************/ + +typedef struct dptTRILISTTYPE +{ + struct dptTRIANGLETYPE *triangle ; + struct dptTRILISTTYPE *next ; +} dptTRILIST, *dptTRILISTPTR ; + +typedef struct dptCONNECTTYPE +{ + struct dptTRIANGLETYPE *connection ; + int32 p1 ; + struct dptCONNECTTYPE *next ; +} dptCONNECT, *dptCONNECTPTR ; + +typedef struct dptTRIANGLETYPE +{ + dpfPATCHPTR patch ; + dpfVERTEXPTR points[3] ; + dptCONNECTPTR connections ; + dmVector normal ; + /* Beware of using the octPos flag. it is used in the flipper, octize, + ** spatial divide and the unloading of meshes + */ + int32 octPos ; + struct dptTRIANGLETYPE *next, *prev ; +} dptTRIANGLE ; + +typedef struct +{ + dpfPATCHPTR patch ; + dptTRIANGLEPTR LTrian, RTrian ; + int32 LVertNo, RVertNo ; + int32 ROrient, LOrient ; + int32 noVerts ; + int32 octPos ; +} dptSAVEBLOCK, *dptSAVEBLOCKPTR ; + +typedef struct dptMESHTYPE { + dpfVERTEXPTR *hash_tbl ; + dptTRIANGLEPTR trian_hd, trian_tl ; + dpfGEOMETRYPTR geom_hd, geom_tl ; + duBlkCtrl conBC, trilBC, trisBC ; + int32 hash_size, normals ; + int32 No_trian, No_verts ; + int32 noGroups ; + int32 DropTri ; +} dptMESH ; + + +/************************************************************/ + + +typedef struct dpfCLISTTYPE +{ + int32 pcount ; + int32 fcount ; + int32 DataLength ; + struct dpfGEOMETRYTYPE *geom; + struct dpfCLISTTYPE *next ; + int32 *faces ; +} dpfCLIST ; + +typedef struct dpfSLISTTYPE +{ + int32 pcount ; + int32 vcount ; + int32 DataLength ; + struct dpfGEOMETRYTYPE *geom; + struct dpfSLISTTYPE *next ; + int32 *faces ; +} dpfSLIST ; + +/* 4th float of point (point[dpf_U]) is used as radius */ +typedef struct dpfSPHERENODETYPE +{ + dmVector point ; + float32 radius ; + struct dpfGEOMETRYTYPE *geom; + struct dpfSPHERENODETYPE *next ; + int32 *block ; +} dpfSPHERENODE ; + +typedef struct dpfTEXTNODETYPE +{ + dmVector point ; + char *string ; + struct dpfGEOMETRYTYPE *geom; + struct dpfTEXTNODETYPE *next ; + int32 *block ; +} dpfTEXTNODE ; + +typedef struct dpfSTRIPTYPE { + dpfVERTEXPTR point_hd, point_tl ; + union + { + uint8 thickness ; + float32 size ; + } data ; + int32 noVertex, pDataLength ; +} dpfSTRIP, *dpfSTRIPPTR ; + +typedef struct dpfPMESHTYPE { + dpfVERTEXPTR point_hd, point_tl ; + dpfCLISTPTR cList_hd, cList_tl ; + dpfSLISTPTR sList_hd, sList_tl ; + int32 noVertex, pDataLength ; + int32 noCList, clDataLength ; + int32 noSList, slDataLength ; +} dpfPMESH, *dpfPMESHPTR ; + +typedef struct dpfSPHERETYPE { + uint16 dice_u, dice_v ; + dpfSPHERENODEPTR sphere_hd, sphere_tl ; + int32 noSphereNode, sDataLength ; +} dpfSPHERE, *dpfSPHEREPTR ; + +typedef struct dpfLETTEXTTYPE { + dpfFONT font ; + dmVector scale, orientation ; + dpfTEXTNODEPTR text_hd, text_tl ; + int32 noTextNode, tDataLength ; +} dpfLETTEXT, *dpfLETTEXTPTR ; + +typedef struct dpfGEOMETRYTYPE +{ + int32 geomType ; + union + { + dpfSTRIPPTR strip ; + dpfPMESHPTR pmesh ; + dpfSPHEREPTR sphere ; + dpfLETTEXTPTR text ; + } u_data ; + int32 dataLength ; + struct dpfPATCHTYPE *patch; + struct dpfGEOMETRYTYPE *next ; +} dpfGEOMETRY ; + + +typedef struct dpfPATCHTYPE { + dpfSURFACE surface; + dpfGEOMETRYPTR geom_hd; + dpfGEOMETRYPTR geom_tl; + int32 dataLength ; + struct dpfLODTYPE *LOD ; + struct dpfPATCHTYPE *next; +} dpfPATCH ; + +typedef struct dpfLODTYPE +{ + char *name ; + float32 inDist, outDist ; + dpfTRANSITION transition ; + int32 referenceFlag ; + dmVector reference ; + dpfPATCHPTR patch_hd; + dpfPATCHPTR patch_tl; + dpfSTRINGPTR special ; + int32 dataLength ; + struct dpfOBJECTTYPE *object; + struct dpfLODTYPE *next ; +} dpfLOD ; + +typedef struct dpfOBJECTTYPE { + dpfSURFACE surface; + dpfLODPTR LOD_hd; + dpfLODPTR LOD_tl; + int32 dataLength ; + struct dpfOBJECTTYPE *next; + struct dpfFILE_TYPE *file; +} dpfOBJECT ; + +typedef struct dpfHEADERTYPE +{ + uint8 verMajor, verMinor; + uint8 day, month, year ; + uint8 hours, minutes ; + uint8 headerLoaded ; + float32 scale ; + dpfPRECISION precision ; + dpfSTRINGPTR comment ; + dpfUNIT unit ; + dpfSTRINGPTR special ; + int32 dataLength ; + dpfFILEFORMAT type; +} dpfHEADER ; + + +typedef struct dpfBOUNDTYPE +{ + char *objectName ; + char *LODName ; + dpfAUTO Auto ; + + uint8 gotBSphere ; + dmVector sphPoint ; + float32 sphRadius ; + + uint8 gotBBox ; + dmVector boxMax, boxMin ; + dmVector boxOrien ; + + dpfGEOMETRYPTR pmesh ; + + dpfSTRINGPTR special ; + int32 dataLength ; + + dpfBOUNDPTR child_hd ; + dpfBOUNDPTR child_tl ; + + dpfBOUNDPTR next ; + dpfBOUNDPTR parent ; + dpfFILEPTR file ; +} dpfBOUND ; + + +/* dpfFILETYPE => dpfFILE_TYPE to stop conflict */ +typedef struct dpfFILE_TYPE +{ + dpfHEADER header ; + + dpfFILETYPE type; + dpfFILEMODE mode; + char *fileName ; + dflFILEPTR fl ; + int32 lineNo, newMaterialCount ; + int32 dataLength, blockDepth, blockEnd[dpf_MAX_DEPTH] ; + + dpfTEXTUREPTR texture_hd ; + dpfTEXTUREPTR texture_tl ; + dpfMATERIALPTR material_hd ; + dpfMATERIALPTR material_tl ; + dpfRAMPPTR ramp_hd ; + dpfRAMPPTR ramp_tl ; + + dpfBOUNDPTR bound ; + + dpfOBJECTPTR object_hd; + dpfOBJECTPTR object_tl; + + dpfTOKEN curtok; + int32 curtag; + float32 semfloat ; + int32 semint ; + + int32 noMaterials, noTextures, noRamps ; + int32 noObjects, noLODs, noPatches ; + int32 noGeometries, noPmeshes ; + int32 noCLists, noCFaces, cFtimesP ; + int32 noSLists, noSFaces, sFtimesP ; + int32 noPolystrips, noTristrips ; + int32 noPolygons, noPolyVerts ; + int32 noVertices, noVertLists, noTriangles ; + int32 noSphereLists, noSpheres ; + int32 noPointLists, noPoints ; + int32 noLineLists, noLines ; + int32 noTextLists, noTexts ; + + dpfVISTEXTUREPTR visList ; + int32 mazSearched ; + char *FtextName, *BtextName ; + uint8 forceVer ; +} dpfFILE ; + +/*****************************************************************************/ +/* Global variables and macros */ +/*****************************************************************************/ + +/* Internal functions */ + +extern int32 (*dpfReadFloatP)(dpfFILEPTR file,float32 *dest); +extern int32 (*dpfReadnFloatP)(dpfFILEPTR file, int32 n, float32 *dest); + +/* Reading data */ +int32 +dpfReadFloatPSS(dpfFILEPTR file,float32 *dest) ; +int32 +dpfReadFloatPSD(dpfFILEPTR file,float32 *dest) ; +int32 +dpfReadFloatPDS(dpfFILEPTR file,float64 *dest) ; +int32 +dpfReadFloatPDD(dpfFILEPTR file,float64 *dest) ; + +int32 +dpfReadnFloatPSS(dpfFILEPTR file,int32 n, float32 *dest) ; +int32 +dpfReadnFloatPSD(dpfFILEPTR file,int32 n, float32 *dest) ; +int32 +dpfReadnFloatPDS(dpfFILEPTR file,int32 n, float64 *dest) ; +int32 +dpfReadnFloatPDD(dpfFILEPTR file,int32 n, float64 *dest) ; + +#define dpfRead1byte(file,dest) dflRead1byte(file->fl,(void *)(dest)) +#define dpfReadn1byte(file,n,dest) dflReadn1byte(file->fl,n,(void *)(dest)) +#define dpfRead2byte(file,dest) dflRead2byte(file->fl,(void *)(dest)) +#define dpfReadn2byte(file,n,dest) dflReadn2byte(file->fl,n,(void *)(dest)) +#define dpfRead4byte(file,dest) dflRead4byte(file->fl,(void *)(dest)) +#define dpfReadn4byte(file,n,dest) dflReadn4byte(file->fl,n,(void *)(dest)) +#define dpfRead8byte(file,dest) dflRead8byte(file->fl,(void *)(dest)) +#define dpfReadn8byte(file,n,dest) dflReadn8byte(file->fl,n,(void *)(dest)) + +/* Writing data */ +#define dpfFwriteint8(file,i) dflWriteint8(file->fl,i) +#define dpfFwriteuint8(file,i) dflWriteuint8(file->fl,i) +#define dpfFwriteint16(file,i) dflWriteint16(file->fl,i) +#define dpfFwriteuint16(file,i) dflWriteuint16(file->fl,i) +#define dpfFwriteint32(file,i) dflWriteint32(file->fl,i) +#define dpfFwritefloat32(file,f) dflWritefloat32(file->fl,f) +#define dpfFwritefloat64(file,f) dflWritefloat64(file->fl,f) +void +dpfFwriteFloatP(dpfFILEPTR file, float32 f) ; + +/* pfcheck checks input values */ +int32 +dpfRgbNotUnit(dpfRGBA r) ; +int32 +dpfRgbNotZero(dpfRGBA r) ; +float32 +dpfCheckRGBValue(dpfFILEPTR file, float32) ; +float32 +dpfCheckAlphaValue(dpfFILEPTR file, float32) ; +float32 +dpfCheckV1PowerValue(dpfFILEPTR file, float32) ; +float32 +dpfCheckV2PowerValue(dpfFILEPTR file, float32) ; +float32 +dpfCheckOpacityValue(dpfFILEPTR file, float32) ; +#define dpfV12v2PowerConvert(p) p +#define dpfV22v1PowerConvert(p) \ + ((p > dpfV1POWER_MAX) ? dpfV1POWER_MAX:p) + +/* Dirty data structure stuff */ +/* Does not unlink from structure so be careful */ +int32 +dpfFreeVertexList(dpfVERTEXPTR vert) ; +int32 +dpfFreeCListList(dpfCLISTPTR cList) ; +int32 +dpfFreeGeometryList(dpfGEOMETRYPTR geometry) ; +int32 +dpfFreeSurfaceNames(dpfSURFACEPTR surface) ; +int32 +dpfFreePatchList(dpfPATCHPTR patch) ; +int32 +dpfFreeLODList(dpfLODPTR lod) ; +int32 +dpfFreeObjectList(dpfOBJECTPTR object) ; + +int32 +dpfFreeBoundList(dpfBOUNDPTR bound) ; +int32 +dpfFreeTextureList(dpfTEXTUREPTR txt) ; +int32 +dpfFreeMaterialList(dpfMATERIALPTR mat) ; +int32 +dpfFreeRampList(dpfRAMPPTR ramp) ; + + +/* Use setSurface, not copySurface, does not free name memory if +** dest suface has already got names +*/ +void +dpfCopySurface(dpfSURFACEPTR dest, dpfSURFACEPTR source); + +dpfFILETYPE +dpfIdentifyFile(dflFILEPTR fp) ; + + +int32 +dpfGetB1FileBody(dpfFILEPTR file) ; +int32 +dpfGetV1FileBody(dpfFILEPTR file) ; +int32 +dpfGetB2FileBody(dpfFILEPTR file) ; +int32 +dpfGetV2FileBody(dpfFILEPTR file) ; +int32 +dpfPutB1FileBody(dpfFILEPTR Dfile, dpfFILEPTR Sfile, dpfFILEPTR matFile) ; +int32 +dpfPutV1FileBody(dpfFILEPTR Dfile, dpfFILEPTR Sfile, dpfFILEPTR matFile) ; +int32 +dpfPutB2FileBody(dpfFILEPTR dest, dpfFILEPTR infile) ; +int32 +dpfPutV2FileBody(dpfFILEPTR dest, dpfFILEPTR infile) ; + +void +dpfConvertV1Texture(dpfFILEPTR Sfp, dpfMATERIALPTR Fmat, dpfMATERIALPTR Bmat) ; + +void +VIZsetLexdfl(dflFILEPTR fl); + +#endif /* ____PFILE_H__ */ diff --git a/CODE/RP/MUNGA_L4/libDPL/dsys/__PTOOL.H b/CODE/RP/MUNGA_L4/libDPL/dsys/__PTOOL.H new file mode 100644 index 0000000..6741a49 --- /dev/null +++ b/CODE/RP/MUNGA_L4/libDPL/dsys/__PTOOL.H @@ -0,0 +1,84 @@ +/* +-- ---------------------------------------------------------------------------- +-- +-- Copyright 1995 Division Limited. +-- All Rights Reserved +-- +-- +-- System : +-- Module : +-- Object Name : $RCSfile: __ptool.h,v $ +-- Revision : $Revision: 1.11 $ +-- Date : $Date: 95/05/16 13:46:18 $ +-- Author : $Author: bill $ +-- +-- Description +-- +-- Notes +-- +-- History +-- +-- +-- ---------------------------------------------------------------------------- +*/ +/* __ptools2.h */ +#ifndef ____PTOOL_H__ +#define ____PTOOL_H__ + +#ifdef _PF_LOCAL +#include "ptool.h" +#else +#include +#endif + +/* ver change */ +/* 2.01 Initial version for tools library */ +/* 2.02 New line definitions and coping with texture etc */ +/* 2.03 New material stuff */ +/* 2.04 New STRIP_LIST and POINTLIST */ +#define dpt_LIBRARY_MAJOR_VER 2 +#define dpt_LIBRARY_MINOR_VER 04 + +#define dpt_TINY_float32 1.0e-24 + + + +/************************************************************* +* ptmesh Routines used by other dptOols * +*************************************************************/ + +dpfVERTEXPTR +dptCreateVertex(void) ; +dpfVERTEXPTR +dptMeshAddVertex ( dptMESHPTR mesh, dpfVERTEXPTR Fvert ) ; +dpfVERTEXPTR +dptMeshAddNewVertex(dptMESHPTR mesh, dpfPATCHPTR patch, dmVector point, + dmVector norm, dpfRGBA col, dpfTEXT text) ; +dptTRIANGLEPTR +dptMeshAddTriangle(dptMESHPTR mesh, dpfPATCHPTR patch, dpfVERTEXPTR vert1, + dpfVERTEXPTR vert2, dpfVERTEXPTR vert3) ; +void +dptMeshRemoveTriangle(dptMESHPTR mesh, dptTRIANGLEPTR trian) ; +void +dptMeshUnloadGeometry(dptTRIANGLEPTR start, dptMESHPTR mesh, dpfPATCHPTR patch, + int32 usePmesh) ; +void +dptMeshDisconnectTriangle(dptMESHPTR mesh, dptTRIANGLEPTR trian) ; +void +dptMeshConnectTriangle(dptMESHPTR mesh, dptTRIANGLEPTR trian) ; +void +dptAddGeometryPatch(dptMESHPTR mesh, dpfGEOMETRYPTR geom) ; + + +/* reduce a mesh, used in ptbound */ +int32 +dptrReduceMesh(dptMESHPTR mesh, float32 Norm_tol, float32 Edge_tol, + int32 Verbose) ; + +/* defined in ptreduce, used also in ptflip */ +dptTRIANGLEPTR +dptGetTriangleDuplicate(dptTRIANGLEPTR tri) ; + +#endif /* ____PTOOL_H__ */ + + diff --git a/CODE/RP/MUNGA_L4/libDPL/dsys/vssver.scc b/CODE/RP/MUNGA_L4/libDPL/dsys/vssver.scc new file mode 100644 index 0000000..72c019d Binary files /dev/null and b/CODE/RP/MUNGA_L4/libDPL/dsys/vssver.scc differ diff --git a/CODE/RP/MUNGA_L4/libDPL/dvs/DM.H b/CODE/RP/MUNGA_L4/libDPL/dvs/DM.H new file mode 100644 index 0000000..0e94c68 --- /dev/null +++ b/CODE/RP/MUNGA_L4/libDPL/dvs/DM.H @@ -0,0 +1,29 @@ +/* + * PROJECT: + * SUBSYSTEM: + * MODULE: + * + * File: $RCSfile: dm.h,v $ + * Revision: $Revision: 1.3 $ + * Date: $Date: 1995/05/18 09:48:43 $ + * Author: $Author: jeff $ + * RCS Ident: $Id: dm.h,v 1.3 1995/05/18 09:48:43 jeff beta $ + * + * FUNCTION: + * + * + * + * Copyright (c) 1995 Division Ltd. + * + * All Rights Reserved. + * + * This Document may not, in whole or in part, be copied, + * photocopied, reproduced, translated, or reduced to any + * electronic medium or machine readable form without prior + * written consent from Division Ltd. + */ +#ifndef _DVS_DM_H +#define _DVS_DM_H +#include +#include +#endif /*_DVS_DM_H */ diff --git a/CODE/RP/MUNGA_L4/libDPL/dvs/DMELEM.H b/CODE/RP/MUNGA_L4/libDPL/dvs/DMELEM.H new file mode 100644 index 0000000..e327747 --- /dev/null +++ b/CODE/RP/MUNGA_L4/libDPL/dvs/DMELEM.H @@ -0,0 +1,132 @@ +/* + * WARNING: machine generated code. + * + * do NOT edit this file, edit the + * original '.epp' file and regenerate this + * one. + */ + +#ifndef ____DMELEM_H +#define ____DMELEM_H + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Instance number access macros. + */ + + + +/* + * Generated function declarations. + */ +extern int32 ModuleDmInit ( void ); + +extern InstanceNo (VLCreate_dmVector)(float32 *data, VLTime *time, VLUpdateMode mode); +extern VLStatus (VLDelete_dmVector)(InstanceNo ino, VLUpdateMode mode); +extern VLStatus (VLUpdate_dmVector)(InstanceNo ino, float32 *data, VLTime *time, VLUpdateMode mode); +extern VLStatus (VLExtract_dmVector)(InstanceNo ino , float32 *data, VLTime *utime); + +extern InstanceNo (VLCreate_dmPoint)(float32 *data, VLTime *time, VLUpdateMode mode); +extern VLStatus (VLDelete_dmPoint)(InstanceNo ino, VLUpdateMode mode); +extern VLStatus (VLUpdate_dmPoint)(InstanceNo ino, float32 *data, VLTime *time, VLUpdateMode mode); +extern VLStatus (VLExtract_dmPoint)(InstanceNo ino , float32 *data, VLTime *utime); + +extern InstanceNo (VLCreate_dmEuler)(float32 *data, VLTime *time, VLUpdateMode mode); +extern VLStatus (VLDelete_dmEuler)(InstanceNo ino, VLUpdateMode mode); +extern VLStatus (VLUpdate_dmEuler)(InstanceNo ino, float32 *data, VLTime *time, VLUpdateMode mode); +extern VLStatus (VLExtract_dmEuler)(InstanceNo ino , float32 *data, VLTime *utime); + +extern InstanceNo (VLCreate_dmQuaternion)(float32 *data, VLTime *time, VLUpdateMode mode); +extern VLStatus (VLDelete_dmQuaternion)(InstanceNo ino, VLUpdateMode mode); +extern VLStatus (VLUpdate_dmQuaternion)(InstanceNo ino, float32 *data, VLTime *time, VLUpdateMode mode); +extern VLStatus (VLExtract_dmQuaternion)(InstanceNo ino , float32 *data, VLTime *utime); + +extern InstanceNo (VLCreate_dmScale)(float32 *data, VLTime *time, VLUpdateMode mode); +extern VLStatus (VLDelete_dmScale)(InstanceNo ino, VLUpdateMode mode); +extern VLStatus (VLUpdate_dmScale)(InstanceNo ino, float32 *data, VLTime *time, VLUpdateMode mode); +extern VLStatus (VLExtract_dmScale)(InstanceNo ino , float32 *data, VLTime *utime); + +extern InstanceNo (VLCreate_dmMatrix)(float32 *data, VLTime *time, VLUpdateMode mode); +extern VLStatus (VLDelete_dmMatrix)(InstanceNo ino, VLUpdateMode mode); +extern VLStatus (VLUpdate_dmMatrix)(InstanceNo ino, float32 *data, VLTime *time, VLUpdateMode mode); +extern VLStatus (VLExtract_dmMatrix)(InstanceNo ino , float32 *data, VLTime *utime); + +extern InstanceNo (VLCreate_dmPosition)(dmPosition *data, VLTime *time, VLUpdateMode mode); +extern VLStatus (VLDelete_dmPosition)(InstanceNo ino, VLUpdateMode mode); +extern VLStatus (VLUpdate_dmPosition)(InstanceNo ino, dmPosition *data, VLTime *time, VLUpdateMode mode); +extern VLStatus (VLExtract_dmPosition)(InstanceNo ino , dmPosition *data, VLTime *utime); + +#ifdef __VL_INLINE_ACCESS__ +#define VLCreate_dmVector( d, t, m) vlCreateInstance(el_dmVector, 0, (d),(t),(m)) +#define VLDelete_dmVector(i,m) vlDeleteInstance((i),(m)) +#define VLUpdate_dmVector( i, d, t, m) vlUpdateInstance((i),(d),(t),(m)) +#define VLExtract_dmVector(i,d,t) vlExtractInstance((i),(d),(t)) + +#define VLCreate_dmPoint( d, t, m) vlCreateInstance(el_dmPoint, 0, (d),(t),(m)) +#define VLDelete_dmPoint(i,m) vlDeleteInstance((i),(m)) +#define VLUpdate_dmPoint( i, d, t, m) vlUpdateInstance((i),(d),(t),(m)) +#define VLExtract_dmPoint(i,d,t) vlExtractInstance((i),(d),(t)) + +#define VLCreate_dmEuler( d, t, m) vlCreateInstance(el_dmEuler, 0, (d),(t),(m)) +#define VLDelete_dmEuler(i,m) vlDeleteInstance((i),(m)) +#define VLUpdate_dmEuler( i, d, t, m) vlUpdateInstance((i),(d),(t),(m)) +#define VLExtract_dmEuler(i,d,t) vlExtractInstance((i),(d),(t)) + +#define VLCreate_dmQuaternion( d, t, m) vlCreateInstance(el_dmQuaternion, 0, (d),(t),(m)) +#define VLDelete_dmQuaternion(i,m) vlDeleteInstance((i),(m)) +#define VLUpdate_dmQuaternion( i, d, t, m) vlUpdateInstance((i),(d),(t),(m)) +#define VLExtract_dmQuaternion(i,d,t) vlExtractInstance((i),(d),(t)) + +#define VLCreate_dmScale( d, t, m) vlCreateInstance(el_dmScale, 0, (d),(t),(m)) +#define VLDelete_dmScale(i,m) vlDeleteInstance((i),(m)) +#define VLUpdate_dmScale( i, d, t, m) vlUpdateInstance((i),(d),(t),(m)) +#define VLExtract_dmScale(i,d,t) vlExtractInstance((i),(d),(t)) + +#define VLCreate_dmMatrix( d, t, m) vlCreateInstance(el_dmMatrix, 0, (d),(t),(m)) +#define VLDelete_dmMatrix(i,m) vlDeleteInstance((i),(m)) +#define VLUpdate_dmMatrix( i, d, t, m) vlUpdateInstance((i),(d),(t),(m)) +#define VLExtract_dmMatrix(i,d,t) vlExtractInstance((i),(d),(t)) + +#define VLCreate_dmPosition( d, t, m) vlCreateInstance(el_dmPosition, 0, (d),(t),(m)) +#define VLDelete_dmPosition(i,m) vlDeleteInstance((i),(m)) +#define VLUpdate_dmPosition( i, d, t, m) vlUpdateInstance((i),(d),(t),(m)) +#define VLExtract_dmPosition(i,d,t) vlExtractInstance((i),(d),(t)) + +#endif +/* + * Symbolic element names. + */ +extern const ElementHandle el_dmVector; +extern const ElementHandle el_dmPoint; +extern const ElementHandle el_dmEuler; +extern const ElementHandle el_dmQuaternion; +extern const ElementHandle el_dmScale; +extern const ElementHandle el_dmMatrix; +extern const ElementHandle el_dmPosition; + +static const int ElCountDm = 7; + +/* + * Epp declaraions. NOT 'C' - hence the ifdef guard! + */ +#ifdef __EPP__ +%% +extern atomic element dmVector; +extern atomic element dmPoint; +extern atomic element dmEuler; +extern atomic element dmQuaternion; +extern atomic element dmScale; +extern atomic element dmMatrix; +extern atomic element dmPosition; +%% +#endif/* __EPP__ */ +#ifdef __cplusplus +} +#endif +#endif /* ____DMELEM_H */ diff --git a/CODE/RP/MUNGA_L4/libDPL/dvs/VC.H b/CODE/RP/MUNGA_L4/libDPL/dvs/VC.H new file mode 100644 index 0000000..a6bbad8 --- /dev/null +++ b/CODE/RP/MUNGA_L4/libDPL/dvs/VC.H @@ -0,0 +1,818 @@ +/* + * PROJECT: + * SUBSYSTEM: + * MODULE: + * + * FILE: $RCSfile: vctools.h,v $ + * REVISION: $Revision: 1.1 $ + * Date: $Date: 95/05/18 10:24:08 $ + * Author: $Author: john $ + * RCS Ident: $Id: vctools.h,v 0.10 1994/10/05 12:51:14 john Exp jon $ + * + * FUNCTION: + * + * Copyright (c) 1992 Division Ltd. + * + * All Rights Reserved. + * + * This Document may not, in whole or in part, be copied, + * photocopied, reproduced, translated, or reduced to any + * electronic medium or machine reable form without prior + * written consent from Division Ltd. + */ + +#ifndef _VCTOOLS_H_ +#define _VCTOOLS_H_ +#ifdef NDEBUG +#define NVCDEBUG 1 +#endif + +#include +#include +#include +#include /* VL definitions */ +#include +#include +#include +#include +#include + +# ifdef __cplusplus +extern "C" { +# endif + +#ifdef _LIB_VC +#include /* VC constant defintions */ +#include "_vcdefs.h" +#include "_vctypes.h" +#include /* VC Type definitions */ +#include +#include +#include + + +#if !defined ( __EPP__) && !defined (_VCELEMEN_C) +#include /* VC Element definitions */ +#endif + +#include "_vcstruct.h" +#include "vcstruct.h" +#include /* Object definitions */ +#include /* Verbose reporting. */ +#include +#include +#include +#include +#include "_vctools.h" +#include "vcmacros.h" +#else + +#include /* VC constant defintions */ +#include +#include /* VC Type definitions */ +#include /* VC Type definitions */ +#include +#include +#if !defined ( __EPP__) && !defined (_VCELEMEN_C) +#include /* VC Element definitions */ +#endif +#include +#include +#include /* Object definitions */ +#include /* Verbose reporting. */ +#include +#include +#include +#include +#include +#endif +/* + * Function definitions + */ +/* + *Create & Initialisation routines + */ +void vcVersion (FILE *fp); + +ActorId VC_InitActor(int *argc, char **argv, char *actorName, + VCActorConfig *actorConfig, uint32 mode, + VC_VersionFunc versionFunc); + +ActorId VC_InitApplication(int *argc, char **argv, VC_VersionFunc versionFunc); +int VCErrorInit(char *agentName, char *actorName, int verboseLevel, int debugLevel, + int log, char *log_ext); + + +/* + * Callback routines + */ + +void VC_MainLoop (void); +void VC_ProcessEvent (VLAction action, VLEventData *eventData); + + +void *VC_GetCallbackHandle(void); + +void *VCSignal_AttachCallback (int sigNum, VC_SignalFunc callback, void *data); +void *VC_AttachExitCallback(VC_ExitFunc function, void *data); +void *VCTimer_AttachPeriodicCallback (float t, VCTimer_Func function, void *data); +void *VCTimer_AttachExpiringCallback (float t, VCTimer_Func function, void *data) ; +int VCTimer_DetachCallback(void *callbackHandle); + +void *VCTimer_AttachCallback (VLTime *time, VLTimerMode mode, + VCTimer_Func function, void *data); +void *VCStream_AttachCallback (int streamId, VC_StreamFunc function, void *data); +void *_VC_AttachCreateCallback (ElementHandle elem, InstanceNo inst, VC_CallbackFunc callback, void *data); +void *_VC_AttachDeleteCallback (ElementHandle elem, InstanceNo inst, VC_CallbackFunc callback, void *data); +void *_VC_AttachUpdateCallback (ElementHandle elem, InstanceNo inst, VC_CallbackFunc callback, void *data); +int VCSignal_DetachCallback (int sigNum, void *callbackHandle); +int VC_DetachExitCallback(void *callbackHandle); +int VCStream_DetachCallback (int streamId, void *callbackHandle); +int _VC_DetachCreateCallback (void *callbackHandle, ElementHandle Element, InstanceNo inst); +int _VC_DetachUpdateCallback (void *callbackHandle, ElementHandle element, InstanceNo instNo); +int _VC_DetachDeleteCallback (void *callbackHandle, ElementHandle element, InstanceNo inst); + +/* + * Miscellaneous routines + */ +int VCPosition_MakePointEulerScale (VCPositionData *pos, dmPoint p, dmEuler e, dmScale s); +int VCPosition_ChangePointEulerScale (VCPositionData *pos, dmPoint p, dmEuler e, dmScale s); +uint32 VC_GetNewVcId(void); +void vcInitEnvironment(void); + + +/* + * Name table stuff + */ +duHashTab *VCInstanceTable_Create(int numEntries); +void VCInstanceTable_Delete(duHashTab *table); +void *VCInstanceTable_Get(duHashTab *table, InstanceNo inst, + int *status); +int VCInstanceTable_Attach(duHashTab *table, InstanceNo inst, void + *data, int flags); +void *VCInstanceTable_Detach(duHashTab *table, InstanceNo inst, + int *status); + + +int VCActor_InitResource (char *nameExtension, char *type, uint32 mode, + VCResource_AllocateFunc allocateFunc, + VCAttribute_InvalidFunc deAllocateFunc, + VCAttribute_RelocateFunc relocateFunc, + VCAttribute_Func updateFunc, void *data); + + +/* + * Body handling functions + */ + +int VCBody_Link (VCBody *body, VCEntity *entity, uint32 linkMode); +int VCBody_Unlink(VCBody *body, uint32 unlinkMode); +VCAttribute *VCBody_GetBodyPart (VCBody *body, char *limbName); +int VCBody_Set (VCBody *body, VCBodyFlyInfoData *flyForward, VCBodyFlyInfoData *flyBackward, + VCBodyFlyInfoData *flyUp, VCBodyFlyInfoData *flyDown, VCBodyFlyInfoData *flyLeft, + VCBodyFlyInfoData *flyRight, VCBodyFlyInfoData *rotLeft, VCBodyFlyInfoData *rotRight, + VCBodyFlyInfoData *rotUp, VCBodyFlyInfoData *rotDown, uint32 *verticalFlyKeyCode, + uint32 *altFlyKeyCode, VCEntity *flyDirectionLimb, VCEntity *altFlyDirectionLimb, + VCEntity *altFlyLimb, uint32 setFlyMode, uint32 clearFlyMode); +int VCBody_Get (VCBody *body, uint32 *actorId, VCBodyFlyInfoData *flyForward, VCBodyFlyInfoData *flyBackward, + VCBodyFlyInfoData *flyUp, VCBodyFlyInfoData *flyDown, VCBodyFlyInfoData *flyLeft, + VCBodyFlyInfoData *flyRight, VCBodyFlyInfoData *rotLeft, VCBodyFlyInfoData *rotRight, + VCBodyFlyInfoData *rotUp, VCBodyFlyInfoData *rotDown, uint32 *verticalFlyKeyCode, + uint32 *altFlyKeyCode, VCEntity **flyDirectionLimb, VCEntity **altFlyDirectionLimb, + VCEntity **altFlyLimb, uint32 *flyMode, char **name, + char **user, char **role); +int VCBody_SetData (VCBody *body, VCBodyData *bodyData); +int VCBody_GetData (VCBody *body, VCBodyData *bodyData); + + + +int VCBody_GetAbsolutePosition(VCBody *body, dmMatrix mat); +int VCBody_SetPosition(VCBody *body, VCAttribute *bodyPart, dmPoint point, dmEuler rotation, dmScale scale, + VCEntity *entity, uint32 flags); + +int VCBody_SetSlowSpeed(VCBody *body, float minSpeed); +int VCBody_SetMaxSpeed(VCBody *body, float maxSpeed); +int VCBody_SetFastSpeed(VCBody *body, float fastSpeed); +int VCBody_SetAcceleration(VCBody *body, float acceleration); +int VCBody_SetSlowRotation(VCBody *body, float minRot); +int VCBody_SetFastRotation(VCBody *body, float fastRot); +int VCBody_SetMaxRotation(VCBody *body, float maxRot); +int VCBody_SetRotateAcceleration(VCBody *body, float acceleration); +int VCBody_SetFlyForwardInfo(VCBody *body, VCBodyFlyInfoData *flyData); +int VCBody_SetFlyBackwardInfo(VCBody *body, VCBodyFlyInfoData *flyData); +int VCBody_SetFlyLeftInfo(VCBody *body, VCBodyFlyInfoData *flyData); +int VCBody_SetFlyRightInfo(VCBody *body, VCBodyFlyInfoData *flyData); +int VCBody_SetFlyUpInfo(VCBody *body, VCBodyFlyInfoData *flyData); +int VCBody_SetFlyDownInfo(VCBody *body, VCBodyFlyInfoData *flyData); +int VCBody_SetRotLeftInfo(VCBody *body, VCBodyFlyInfoData *flyData); +int VCBody_SetRotRightInfo(VCBody *body, VCBodyFlyInfoData *flyData); +int VCBody_SetRotUpInfo(VCBody *body, VCBodyFlyInfoData *flyData); +int VCBody_SetRotDownInfo(VCBody *body, VCBodyFlyInfoData *flyData); +int VCBody_SetVerticalFlyKeyCode(VCBody *body, uint32 keyCode); +int VCBody_SetAltFlyKeyCode(VCBody *body, uint32 keyCode); +int VCBody_SetFlyDirectionLimb(VCBody *body, VCEntity *flyLimb); +int VCBody_SetAltFlyDirectionLimb(VCBody *body, VCEntity *flyLimb); +int VCBody_SetAltFlyLimb(VCBody *body, VCEntity *flyLimb); +int VCBody_SetFlyMode(VCBody *body, uint32 flyMode); +int VCBody_ModifyFlyMode(VCBody *body, uint32 setFlyMode, uint32 clearFlyMode); +int VCBody_GetActorId(VCBody *body, uint32 *actorId); +int VCBody_GetFlyForwardInfo(VCBody *body, VCBodyFlyInfoData *flyData); +int VCBody_GetFlyBackwardInfo(VCBody *body, VCBodyFlyInfoData *flyData); +int VCBody_GetFlyLeftInfo(VCBody *body, VCBodyFlyInfoData *flyData); +int VCBody_GetFlyRightInfo(VCBody *body, VCBodyFlyInfoData *flyData); +int VCBody_GetFlyUpInfo(VCBody *body, VCBodyFlyInfoData *flyData); +int VCBody_GetFlyDownInfo(VCBody *body, VCBodyFlyInfoData *flyData); +int VCBody_GetRotLeftInfo(VCBody *body, VCBodyFlyInfoData *flyData); +int VCBody_GetRotRightInfo(VCBody *body, VCBodyFlyInfoData *flyData); +int VCBody_GetRotUpInfo(VCBody *body, VCBodyFlyInfoData *flyData); +int VCBody_GetRotDownInfo(VCBody *body, VCBodyFlyInfoData *flyData); +int VCBody_GetVerticalFlyKeyCode(VCBody *body, uint32 *keyCode); +int VCBody_GetAltFlyKeyCode(VCBody *body, uint32 *keyCode); +int VCBody_GetFlyDirectionLimb(VCBody *body, VCEntity **flyLimb); +int VCBody_GetAltFlyDirectionLimb(VCBody *body, VCEntity **flyLimb); +int VCBody_GetAltFlyLimb(VCBody *body, VCEntity **flyLimb); +int VCBody_GetFlyMode(VCBody *body, uint32 *flyMode); +int VCBody_GetName(VCBody *body, char **name); +int VCBody_GetUser(VCBody *body, char **user); +int VCBody_GetRole(VCBody *body, char **role); +int VCBody_SetVisualResourceBackgroundColour(VCBody *body, VCColour colour); +int VCBody_SetVisualResourceNearClip(VCBody *body, float32 nearClip); +int VCBody_SetVisualResourceFarClip(VCBody *body, float32 farClip); +int VCBody_SetVisualResourceFogColour(VCBody *body, VCColour colour, uint32 fogType, uint32 fogMode); +int VCBody_SetVisualResourceNearFog(VCBody *body, float32 nearFog); +int VCBody_SetVisualResourceFarFog(VCBody *body, float32 farFog); +int VCBody_SetAudioResourceResourceFile(VCBody *body, char *resourceFile); +int VCBody_SetAudioResourceVolume(VCBody *body, float32 volume); +int VCBody_SetAudioResourceSpreadingRollOff(VCBody *body, float32 spreadingRollOff); +int VCBody_SetAudioResourceAtmosphericAbsorption(VCBody *body, float32 atmosphericAbsorption); + + +void *VCBody_AttachAttributeCallback (VCBody *body, char *limbName, + ElementHandle element, VCBody_AttributeFunc func, + void *data); +int VC_UseBody(char *name); +void *VC_AttachBodyCreateCallback(VCBody_CreateFunc func , void *data); + + +void *VCBody_AttachInputCallback (VCBody *body, char *limbName, uint32 keyCode, uint32 maxKeyCode, + VCBody_InputFunc func, void *data); +void *VCBody_AttachCollisionCallback (VCBody *body, char *limbName, VCBody_CollisionFunc func, + void *data); +void *VCBody_AttachBodyPartCreateCallback(VCBody *body, VCBody_CreateBodyPartFunc func, + void *data); +int VCEntity_Pick (VCEntity *entity , VCAttribute *bodyPart, + VCEntity_DropFunc dropFunc, void *data); +int VCEntity_Drop(VCEntity *entity, VCAttribute *bodyPart); + + +VCBody *VC_GetFirstBody(VC_Traverse *traverseInfo); +VCBody *VC_GetNextBody(VC_Traverse *traverseInfo); +VCBody * VCAttribute_GetBody (VCAttribute *attribute); +VCAttribute *VCBody_GetFirstAttribute (VCBody *body, char *limbName, ElementHandle elem, + VC_Traverse *traverseInfo); +VCAttribute *VCBody_GetNextAttribute (VC_Traverse *traverseInfo); + + +/* + * Hierarchy function routines + */ + +int VC_SetObjectTableSize(int tabsize); +int VCEntity_GetDefaultNumAttributes(void); +int VCEntity_SetDefaultNumAttributes( int numAttributes); +void VCEntityAposInvalid(VCEntity *entity); +int VCAttribute_Get(VCAttribute *attribute, int doExtract); +VCAttribute *VCAttribute_Create(ElementHandle type, InstanceNo inst); +int32 VCAttribute_Delete(VCAttribute *attribute); +VCEntity *VCEntity_Create (VCPositionData *posp, uint32 count ); +int VCEntity_Delete ( VCEntity *entity , uint32 mode); +int VCEntity_SetRelocateMode (VCEntity *entity,int mode); +int VCEntity_GetRelocateMode (VCEntity *entity); +int VCEntity_AttachAttribute (VCEntity *entity, VCAttribute *attribute); +int VCEntity_DetachAttribute (VCEntity *entity, VCAttribute *attribute); +int VCEntity_Link (VCEntity *parent, VCEntity *child, uint32 mode); +int VCEntity_Unlink ( VCEntity *child, uint32 mode); +VCEntity *VCEntity_GetRoot ( VCEntity *entity); +VCEntity *VC_GetFirstEntity ( VCEntity *entity, uint32 incEntity, VC_Traverse *traverse); +VCEntity *VC_GetNextEntity ( VC_Traverse *traverseInfo ); +int VCEntity_GetAbsolutePosition ( VCEntity *entity, dmMatrix mat) ; +void VCEntity_TraverseInOrder(VCEntity *entity, VCEntity_TraverseFunc func, void *data); +void VCEntity_TraversePostOrder(VCEntity *entity, VCEntity_TraverseFunc func, void *data); + +void *VCAttribute_AttachCreateCallback(VCAttribute *attribute, ElementHandle element, + VCAttribute_Func func, void *data); +void *VCAttribute_AttachDeleteCallback(VCAttribute *attribute, ElementHandle element, + VCAttribute_Func func, void *data); +void *VCAttribute_AttachUpdateCallback(VCAttribute *attribute, ElementHandle element, + VCAttribute_Func func, void *data); +int VCAttribute_DetachCreateCallback(VCAttribute *attribute, ElementHandle element, + void *callbackHandle); +int VCAttribute_DetachUpdateCallback(VCAttribute *attribute, ElementHandle element, + void *callbackHandle); +int VCAttribute_DetachDeleteCallback(VCAttribute *attribute, ElementHandle element, + void *callbackHandle); +int VCEntity_DetachAttributeRelocateCallback(ElementHandle element, VCAttribute *attribute, + void *callbackHandle); +void *VCEntity_AttachAttributeRelocateCallback (ElementHandle element, VCAttribute *attribute, + uint32 mode, VCAttribute_RelocateFunc func, + VCAttribute_InvalidFunc inValidFunc, void *data); +int VCEntity_DetachAttributeCreateCallback(VCEntity *entity, void *callbackHandle); +int VCEntity_DetachAttributeUpdateCallback(VCEntity *entity, void *callbackHandle); + +void *VCEntity_AttachAttributeCreateCallback(VCEntity *entity, VCEntity_AttributeFunc func, + void *data); +void *VCEntity_AttachAttributeUpdateCallback(VCEntity *entity, VCEntity_AttributeFunc func, + void *data); + +int VCEntity_DetachRelocateCallback(VCEntity *entity,void *callbackHandle); +void *VCEntity_AttachRelocateCallback(VCEntity *entity, uint32 mode, VCEntity_RelocateFunc func, + VCEntity_InvalidFunc invalidFunc, void *data); + +VCEntity *VCAttribute_GetFirstEntity(VCAttribute *attribute, VC_Traverse *traverse); +VCEntity *VCAttribute_GetNextEntity(VC_Traverse *traverse); + +int _VCList_AttachUserData(VCUserDataList **list, uint32 vcId, void *data); +void *_VCList_GetUserData(VCUserDataList *list, uint32 vcId); +void *_VCList_DetachUserData(VCUserDataList **list, uint32 vcId); + +int VCEntity_SetAbsolutePosition(VCEntity *entity, VCPositionData *pos); +int VCEntity_SetPosition(VCEntity *entity, VCPositionData *pos); +int VCEntity_SetPositionMatrix(VCEntity *entity, dmMatrix mat); +int VCEntity_SetPositionPoint(VCEntity *entity, dmPoint p); +int VCEntity_SetPositionEuler(VCEntity *entity, dmEuler e); +int VCEntity_SetPositionScale(VCEntity *entity, dmScale s); +int VCEntity_SetPositionEulerScale(VCEntity *entity, dmEuler e, dmScale s); +int VCEntity_SetPositionPointEulerScale(VCEntity *entity, dmPoint p, dmEuler e, dmScale s); +int VCEntity_GetPosition(VCEntity *entity, VCPosition **position); +VCPositionData *VCEntity_GetPositionData(VCEntity *); +int VCEntity_GetPositionPointEulerScale(VCEntity *entity, dmPoint p, + dmEuler e, dmScale s); +int VCEntity_SetPositionLinearVelocity(VCEntity *entity, const dmVector velocity); +int VCEntity_SetPositionLinearAcceleration(VCEntity *entity, const dmVector acceleration); +int VCEntity_SetPositionAngularVelocity(VCEntity *entity, const dmVector velocity); +int VCEntity_SetPositionAngularAcceleration(VCEntity *entity, const dmVector acceleration); +VCAttribute *VCEntity_GetFirstAttribute (VCEntity *entity, ElementHandle elem, + VC_Traverse *traverseInfo); +VCAttribute *VCEntity_GetNextAttribute (VC_Traverse *traverseInfo); +int VCEntity_UpdatePosition(VCEntity *entity); + +void *VCCollision_AttachCreateCallback(VCCollision *collision, VCCollision_Func func, void *data); +void *VCCollision_AttachUpdateCallback(VCCollision *collision, VCCollision_Func func, void *data); +void *VCCollision_AttachDeleteCallback(VCCollision *collision, VCCollision_Func func, void *data); +int VCCollision_DetachCreateCallback(VCCollision *collision, void *callbackHandle); +int VCCollision_DetachUpdateCallback(VCCollision *collision, void *callbackHandle); +int VCCollision_DetachDeleteCallback(VCCollision *collision, void *callbackHandle); +void VCCollision_SetCacheMode(VCCollision *collision, uint32 cacheMode); +uint32 VCCollision_GetCacheMode(VCCollision *collision); + +VCCollision *VCCollision_Create(VCAttribute *attribute, VCCollisionReportData *collReportData, + int numCollisionsReported, int numCollisions); +int VCCollision_Get(VCCollision *collision, VCAttribute **attribute, VCCollisionReportData **collReportData, + int *numCollisionsReported, int *numCollisions); +VCCollision *VCCollision_Set(VCAttribute *attribute, VCCollisionReportData *collReportData, + int numCollisionsReported, int *numCollisions); +VCCollisionReportData *VCCollision_GetFirstCollisionReport(VCCollision *collision, VC_Traverse *traverseInfo); +VCCollisionReportData *VCCollision_GetNextCollisionReport(VC_Traverse *traverseInfo); +int VCCollision_Delete(VCCollision *item); + +void VCIntersection_SetCacheMode(VCIntersection *intersection, uint32 cacheMode); +uint32 VCIntersection_GetCacheMode(VCIntersection *intersection); +void *VCIntersection_AttachCreateCallback(VCIntersection *intersection, VCIntersection_Func func, + void *data); +void *VCIntersection_AttachUpdateCallback(VCIntersection *intersection, VCIntersection_Func func, + void *data); +void *VCIntersection_AttachDeleteCallback(VCIntersection *intersection, VCIntersection_Func func, + void *data); +int VCIntersection_DetachCreateCallback(VCIntersection *intersection, void *callbackHandle); +int VCIntersection_DetachUpdateCallback(VCIntersection *intersection, void *callbackHandle); +int VCIntersection_DetachDeleteCallback(VCIntersection *intersection, void *callbackHandle); +VCIntersection *VCIntersection_Create(VCAttribute *attribute, VCIntersectionReportData *intersectReportData, + int numIntersectionsReported, int numIntersections); +int VCIntersection_Get(VCIntersection *intersection, VCAttribute **attribute, + VCIntersectionReportData **intersectReportData, + int *numIntersectionsReported, int *numIntersections); +VCIntersectionReportData *VCIntersection_GetFirstIntersectionReport(VCIntersection *intersection, + VC_Traverse *traverse); +VCIntersectionReportData *VCIntersection_GetNextIntersectionReport(VC_Traverse *traverse); +int VCIntersection_Delete(VCIntersection *item); + + + + +void VCMaterial_SetCacheMode (VCMaterial *item, uint32 newCacheMode); +uint32 VCMaterial_GetCacheMode (VCMaterial *item); +void *VCMaterial_AttachCreateCallback(VCMaterial *item, VCMaterial_Func func, void *data); +void *VCMaterial_AttachUpdateCallback(VCMaterial *item, VCMaterial_Func func, void *data); +void *VCMaterial_AttachDeleteCallback(VCMaterial *item, VCMaterial_Func func, void *data); +int VCMaterial_DetachCreateCallback(VCMaterial *item, void *callbackHandle); +int VCMaterial_DetachUpdateCallback(VCMaterial *item, void *callbackHandle); +int VCMaterial_DetachDeleteCallback(VCMaterial *item, void *callbackHandle); +VCMaterial *VCMaterial_Create (char *name, uint32 mode, VCColor ambient, VCColor diffuse, + VCSpecular specular, VCColor emissive, + VCColor opacity, char *textureName, char *ramp); +VCMaterial *VCMaterial_CreateData (VCMaterialData *materialData); +int VCMaterial_Get (VCMaterial *item, char **name, uint32 *mode, + VCColor ambient, VCColor diffuse, + VCSpecular specular, VCColor emissive, + VCColor opacity, char **textureName, + char **ramp); +int VCMaterial_GetData (VCMaterial *item, VCMaterialData *materialData); +int VCMaterial_SetData (VCMaterial *item,VCMaterialData *materialData); +int VCMaterial_Set (VCMaterial *item, char *name, uint32 setMode, + uint32 clearMode, VCColor ambient, VCColor diffuse, + VCSpecular specular, VCColor emissive, VCColor opacity, + char *textureName, char *ramp); +int VCMaterial_ModifyMode (VCMaterial *item, uint32 setMode, uint32 clearMode); +int VCMaterial_SetName (VCMaterial *item, char *name); +int VCMaterial_SetMode (VCMaterial *item, uint32 mode); +int VCMaterial_SetAmbient (VCMaterial *item, VCColour ambient); +int VCMaterial_SetDiffuse (VCMaterial *item, VCColour diffuse); +int VCMaterial_SetSpecular (VCMaterial *item, VCSpecular specular); +int VCMaterial_SetEmissive (VCMaterial *item, VCColour emissive); +int VCMaterial_SetOpacity (VCMaterial *item, VCColour opacity); +int VCMaterial_SetTexture (VCMaterial *item, char *texture); +int VCMaterial_SetRamp (VCMaterial *item, char *ramp); + +int VCMaterial_GetName (VCMaterial *item, char **name); +int VCMaterial_GetMode (VCMaterial *item, uint32 *mode); +int VCMaterial_GetAmbient (VCMaterial *item, VCColour ambient); +int VCMaterial_GetDiffuse (VCMaterial *item, VCColour diffuse); +int VCMaterial_GetSpecular (VCMaterial *item, VCSpecular specular); +int VCMaterial_GetEmissive (VCMaterial *item, VCColour emissive); +int VCMaterial_GetOpacity (VCMaterial *item, VCColour opacity); +int VCMaterial_GetTexture (VCMaterial *item, char **texture); +int VCMaterial_GetRamp (VCMaterial *item, char **ramp); +int VCMaterial_Delete (VCMaterial *item); + + +void VCTexture_SetCacheMode (VCTexture *item, uint32 newCacheMode); +uint32 VCTexture_GetCacheMode (VCTexture *item); +void *VCTexture_AttachCreateCallback (VCTexture *item, VCTexture_Func func, void *data); +void *VCTexture_AttachUpdateCallback (VCTexture *item, VCTexture_Func func, void *data); +void *VCTexture_AttachDeleteCallback (VCTexture *item, VCTexture_Func func, void *data); +int VCTexture_DetachCreateCallback (VCTexture *item, void *callbackHandle); +int VCTexture_DetachUpdateCallback (VCTexture *item, void *callbackHandle); +int VCTexture_DetachDeleteCallback (VCTexture *item, void *callbackHandle); +VCTexture *VCTexture_Create (char *name, uint32 mode, uint8 minify, uint8 magnify, + uint8 alpha, uint8 wrapU, uint8 wrapV, + uint8 detailType, char *textureMap, char *detailMap); +VCTexture *VCTexture_CreateData (VCTextureData *textureData); +int VCTexture_Get (VCTexture *item, char **name, uint32 *mode, uint8 *minify, + uint8 *magnify, uint8 *alpha, + uint8 *wrapU, uint8 *wrapV, uint8 *detailType, + char **textureMap, char **detailMap); +int VCTexture_GetData (VCTexture *item, VCTextureData *textureData); +int VCTexture_SetData (VCTexture *item,VCTextureData *textureData); +int VCTexture_Set (VCTexture *item, char *name, uint32 setMode, + uint32 clearMode, uint8 *minify, uint8 *magnify, + uint8 *alpha, uint8 *wrapU, uint8 *wrapV, uint8 *detailType, + char *textureMap, char *detailMap); +int VCTexture_ModifyMode (VCTexture *item, uint32 setMode, uint32 clearMode); +int VCTexture_SetName (VCTexture *item, char *name); +int VCTexture_SetMode (VCTexture *item, uint32 mode); +int VCTexture_SetMinify (VCTexture *item, uint8 minify); +int VCTexture_SetMagnify (VCTexture *item, uint8 magnify); +int VCTexture_SetAlpha (VCTexture *item, uint8 alpha); +int VCTexture_SetWrapU (VCTexture *item, uint8 wrapU); +int VCTexture_SetWrapV (VCTexture *item, uint8 wrapV); +int VCTexture_SetDetailType (VCTexture *item, uint8 detailType); +int VCTexture_SetTextureMap (VCTexture *item, char *textureMap); +int VCTexture_SetDetailMap (VCTexture *item, char *detailMap); +int VCTexture_GetName (VCTexture *item, char **name); +int VCTexture_GetMode (VCTexture *item, uint32 *mode); +int VCTexture_GetMinify (VCTexture *item, uint8 *minify); +int VCTexture_GetMagnify (VCTexture *item, uint8 *magnify); +int VCTexture_GetAlpha (VCTexture *item, uint8 *alpha); +int VCTexture_GetWrapU (VCTexture *item, uint8 *wrapU); +int VCTexture_GetWrapV (VCTexture *item, uint8 *wrapV); +int VCTexture_GetDetailType (VCTexture *item, uint8 *detailType); +int VCTexture_GetTextureMap (VCTexture *item, char **textureMap); +int VCTexture_GetDetailMap (VCTexture *item, char **detailMap); +int VCTexture_Delete (VCTexture *item); + +void VCInput_SetCacheMode (VCInput *item, uint32 newCacheMode); +uint32 VCInput_GetCacheMode (VCInput *item); +VCInput *_VC_GetInput (InstanceNo inst); +void *VCInput_AttachCreateCallback (VCInput *item, VCInput_Func func, void *data); +void *VCInput_AttachUpdateCallback (VCInput *item, uint32 minKeyCode, uint32 maxKeyCode, + VCInput_UpdateFunc func, void *data); +void *VCInput_AttachDeleteCallback (VCInput *item, VCInput_Func func, void *data); +int VCInput_DetachCreateCallback (VCInput *item, void *callbackHandle); + +int VCInput_DetachUpdateCallback (VCInput *item, void *callbackHandle); +int VCInput_DetachDeleteCallback (VCInput *item, void *callbackHandle); +VCInput *VCInput_Create (uint32 size); +int VCInput_Append(VCInput *item, uint32 keyCode, int doUpdate); +int VCInput_Update(VCInput *item); +int VCInput_Delete(VCInput *item); + + + + + + +void VCTracker_SetCacheMode(VCTracker *item, uint32 newCacheMode); +uint32 VCTracker_GetCacheMode(VCTracker *item); +void *VCTracker_AttachCreateCallback(VCTracker *item, VCTracker_Func func, void *data); +void *VCTracker_AttachUpdateCallback(VCTracker *item, VCTracker_Func func, void *data); +void *VCTracker_AttachDeleteCallback(VCTracker *item, VCTracker_Func func, void *data); +int VCTracker_DetachCreateCallback(VCTracker *item, void *callbackHandle); +int VCTracker_DetachUpdateCallback(VCTracker *item, void *callbackHandle); +int VCTracker_DetachDeleteCallback(VCTracker *item, void *callbackHandle); +VCTracker *VCTracker_Create(char *name, uint32 updateRate, uint32 transmissionDelay, dmPoint sourcePosition, + dmEuler sourceEuler, uint32 baudRate, char *deviceType); +VCTracker *VCTracker_CreateData(VCTrackerData *trackerData); +int VCTracker_Get(VCTracker *item, char **name, uint32 *updateRate, uint32 *transmissionDelay, dmPoint sourcePosition, + dmEuler sourceEuler, uint32 *baudRate, char **deviceType); +int VCTracker_GetData(VCTracker *item, VCTrackerData *trackerData); +int VCTracker_SetData (VCTracker *item,VCTrackerData *trackerData); +int VCTracker_Set(VCTracker *item, char *name, uint32 *updateRate, uint32 *transmissionDelay, dmPoint sourcePosition, + dmEuler sourceEuler, uint32 *baudRate, char *deviceType); +int VCTracker_SetName(VCTracker *item, char *name); +int VCTracker_SetUpdateRate(VCTracker *item, uint32 updateRate); +int VCTracker_SetTransmissionDelay(VCTracker *item, uint32 transmissionDelay); +int VCTracker_SetSourcePosition(VCTracker *item, dmPoint sourcePosition); +int VCTracker_SetSourceEuler(VCTracker *item, dmPoint sourceEuler); +int VCTracker_SetBaudRate(VCTracker *item, uint32 baudRate); +int VCTracker_SetDeviceType(VCTracker *item, char *deviceType); +int VCTracker_GetName(VCTracker *item, char **name); +int VCTracker_GetUpdateRate(VCTracker *item, uint32 *updateRate); +int VCTracker_GetTransmissionDelay(VCTracker *item, uint32 *transmissionDelay); +int VCTracker_GetSourcePosition(VCTracker *item, dmPoint sourcePosition); +int VCTracker_GetSourceEuler(VCTracker *item, dmPoint sourceEuler); +int VCTracker_GetBaudRate(VCTracker *item, uint32 *baudRate); +int VCTracker_GetDeviceType(VCTracker *item, char **deviceType); +int VCTracker_Delete(VCTracker *item); + + +void VCPosition_SetCacheMode (VCPosition *item, uint32 newCacheMode); +uint32 VCPosition_GetCacheMode(VCPosition *item); +void *VCPosition_AttachCreateCallback(VCPosition *item, VCPosition_Func func, void *data); +void *VCPosition_AttachUpdateCallback(VCPosition *item, VCPosition_Func func, void *data); +void *VCPosition_AttachDeleteCallback(VCPosition *item, VCPosition_Func func, void *data); +int VCPosition_DetachCreateCallback(VCPosition *item, void *callbackHandle); +int VCPosition_DetachUpdateCallback(VCPosition *item, void *callbackHandle); +int VCPosition_DetachDeleteCallback(VCPosition *item, void *callbackHandle); +VCPosition *VCPosition_Create(dmPosition *pos, uint32 mode); +VCPosition *VCPosition_CreateData(VCPositionData *positionData); +int VCPosition_Get(VCPosition *item, dmPosition *pos, uint32 *mode); +int VCPosition_GetData(VCPosition *item, VCPositionData *positionData); +int VCPosition_SetData (VCPosition *item,VCPositionData *positionData); +int VCPosition_Set(VCPosition *item, dmPosition *pos, uint32 setMode, uint32 clearMode); +int VCPosition_Delete(VCPosition *item); + + +void VCXWindowId_SetCacheMode(VCXWindowId *item, uint32 newCacheMode); +uint32 VCXWindowId_GetCacheMode(VCXWindowId *item); +void * VCXWindowId_AttachCreateCallback(VCXWindowId *item, VCXWindowId_Func func, void *data); +void * VCXWindowId_AttachUpdateCallback(VCXWindowId *item, VCXWindowId_Func func, void *data); +void * VCXWindowId_AttachDeleteCallback(VCXWindowId *item, VCXWindowId_Func func, void *data); +int VCXWindowId_DetachCreateCallback(VCXWindowId *item, void *callbackHandle); +int VCXWindowId_DetachUpdateCallback(VCXWindowId *item, void *callbackHandle); +int VCXWindowId_DetachDeleteCallback(VCXWindowId *item, void *callbackHandle); +VCXWindowId * VCXWindowId_Create(char *name, uint32 windowId, char *serverName); +VCXWindowId * VCXWindowId_CreateData(VCXWindowIdData *xwindowidData); +int VCXWindowId_Get(VCXWindowId *item, char **name, uint32 *windowId, char **serverName); +int VCXWindowId_GetData(VCXWindowId *item, VCXWindowIdData *xwindowidData); +int VCXWindowId_SetData (VCXWindowId *item,VCXWindowIdData *xwindowidData); +int VCXWindowId_Set(VCXWindowId *item, char *name, uint32 *windowId, char *serverName); +int VCXWindowId_SetName(VCXWindowId *item, char *name); +int VCXWindowId_SetWindowId(VCXWindowId *item, uint32 windowId); +int VCXWindowId_SetServerName(VCXWindowId *item, char *serverName); +int VCXWindowId_GetName(VCXWindowId *item, char **name); +int VCXWindowId_GetWindowId(VCXWindowId *item, uint32 *windowId); +int VCXWindowId_GetServerName(VCXWindowId *item, char **serverName); +int VCXWindowId_Delete(VCXWindowId *item); + + +void VCPseudoGravity_SetCacheMode(VCPseudoGravity *item, uint32 newCacheMode); + +uint32 VCPseudoGravity_GetCacheMode(VCPseudoGravity *item); + +void * VCPseudoGravity_AttachCreateCallback(VCPseudoGravity *item, VCPseudoGravity_Func func, void *data); + +void * VCPseudoGravity_AttachUpdateCallback(VCPseudoGravity *item, VCPseudoGravity_Func func, void *data); + +void * VCPseudoGravity_AttachDeleteCallback(VCPseudoGravity *item, VCPseudoGravity_Func func, void *data); + +int VCPseudoGravity_DetachCreateCallback(VCPseudoGravity *item, void *callbackHandle); + +int VCPseudoGravity_DetachUpdateCallback(VCPseudoGravity *item, void *callbackHandle); + +int VCPseudoGravity_DetachDeleteCallback(VCPseudoGravity *item, void *callbackHandle); + +VCPseudoGravity * VCPseudoGravity_Create(uint32 mode, dmVector direction, float32 gravity); + +VCPseudoGravity * VCPseudoGravity_CreateData(VCPseudoGravityData *pseudoGravityData); + +int VCPseudoGravity_Get(VCPseudoGravity *item, uint32 *mode, dmVector direction, float32 *gravity); + +int VCPseudoGravity_GetData(VCPseudoGravity *item, VCPseudoGravityData *pseudoGravityData); + +int VCPseudoGravity_SetData (VCPseudoGravity *item,VCPseudoGravityData *pseudoGravityData); + +int VCPseudoGravity_Set(VCPseudoGravity *item, uint32 setMode, uint32 clearMode, dmVector direction, + float32 *gravity); + +int VCPseudoGravity_ModifyMode(VCPseudoGravity *item, uint32 setMode, uint32 clearMode); +int VCPseudoGravity_SetMode(VCPseudoGravity *item, uint32 mode); + +int VCPseudoGravity_SetDirection(VCPseudoGravity *item, dmVector direction); + +int VCPseudoGravity_SetGravity(VCPseudoGravity *item, float32 gravity); + +int VCPseudoGravity_GetMode(VCPseudoGravity *item, uint32 *mode); + +int VCPseudoGravity_GetDirection(VCPseudoGravity *item, dmVector direction); + +int VCPseudoGravity_GetGravity(VCPseudoGravity *item, float32 *gravity); + +int VCPseudoGravity_Delete(VCPseudoGravity *item); + + + +void VCVisualViewResource_SetCacheMode(VCVisualViewResource *item, uint32 newCacheMode); +uint32 VCVisualViewResource_GetCacheMode(VCVisualViewResource *item); +VCVisualViewResource *_VCVisualViewResource_GetViewFromAttribute(VCAttribute *attribute); +VCAttribute *_VCVisualViewResource_GetAttribute(VCVisualViewResource *view); +void *VCVisualViewResource_AttachCreateCallback(VCVisualViewResource *item, VCVisualViewResource_Func func, void *data); +void *VCVisualViewResource_AttachUpdateCallback(VCVisualViewResource *item, VCVisualViewResource_Func func, void *data); +void *VCVisualViewResource_AttachDeleteCallback(VCVisualViewResource *item, VCVisualViewResource_Func func, void *data); +int VCVisualViewResource_DetachCreateCallback(VCVisualViewResource *item, void *callbackHandle); +int VCVisualViewResource_DetachUpdateCallback(VCVisualViewResource *item, void *callbackHandle); +int VCVisualViewResource_DetachDeleteCallback(VCVisualViewResource *item, void *callbackHandle); +VCVisualViewResource *VCVisualViewResource_Create(char *name, VCAttribute *visualResource, uint32 mode, + dmPoint offset, dmEuler orientation, float32 size[2]); +VCVisualViewResource *VCVisualViewResource_CreateData(VCVisualViewResourceData *viewData); +int VCVisualViewResource_Get(VCVisualViewResource *item, char **name, VCAttribute **visualResource, + uint32 *mode, dmPoint offset, dmEuler orientation, float32 size[2]); +int VCVisualViewResource_GetData(VCVisualViewResource *item, VCVisualViewResourceData *viewData); +int VCVisualViewResource_SetData (VCVisualViewResource *item,VCVisualViewResourceData *viewData); +int VCVisualViewResource_Set(VCVisualViewResource *item, VCAttribute *visualResource, + uint32 setMode, uint32 clearMode, dmPoint offset, + dmEuler orientation, float32 size[2]); + +int VCVisualViewResource_Delete(VCVisualViewResource *item); +int VCVisualViewResource_SetVisualResource(VCVisualViewResource *item, VCAttribute *visualResource); +int VCVisualViewResource_SetMode(VCVisualViewResource *item, uint32 mode); +int VCVisualViewResource_ModifyMode(VCVisualViewResource *item, uint32 setMode, uint32 clearMode); +int VCVisualViewResource_SetOffset(VCVisualViewResource *item, dmPoint offset); +int VCVisualViewResource_SetOrientation(VCVisualViewResource *item, dmEuler orientation); +int VCVisualViewResource_SetSize(VCVisualViewResource *item, float32 size[2]); +int VCVisualViewResource_GetName(VCVisualViewResource *item, char **name); +int VCVisualViewResource_GetVisualResource(VCVisualViewResource *item, VCAttribute **visualResource); +int VCVisualViewResource_GetMode(VCVisualViewResource *item, uint32 *mode); +int VCVisualViewResource_GetOffset(VCVisualViewResource *item, dmPoint offset); +int VCVisualViewResource_GetOrientation(VCVisualViewResource *item, dmEuler orientation); +int VCVisualViewResource_GetSize(VCVisualViewResource *item, float32 size[2]); + +VCVisualViewResource *VCVisualViewResource_GetFirst(VCAttribute *visualResource, VC_Traverse *traverseInfo); +VCVisualViewResource *VCVisualViewResource_GetNext(VC_Traverse *traverseInfo); + + + + + +VCEntity *VC_ConstructAudioVoice(char *voice, VCAttribute **audioAttribute); +VCEntity *VC_ConstructAudioData(VCAudioData *audioData, VCAttribute **audioAttribute); +VCEntity *VC_ConstructLightAmbient(VCColour colour, VCAttribute **lightAttribute); +VCEntity *VC_ConstructLightDirectional(VCColour colour, VCAttribute **lightAttribute); +VCEntity *VC_ConstructLightPoint(VCColour colour, VCAttribute **lightAttribute); +VCEntity *VC_ConstructLightSpot(VCColour colour, float32 exponent, float32 theta, + VCAttribute **lightAttribute); +VCEntity *VC_ConstructLightData(VCLightData *lightData, VCAttribute **lightAttribute); +VCEntity *VC_ConstructVisualGeometry(char *geometry, int collidable, VCAttribute **visualAttribute, + VCAttribute **boundaryAttribute); +VCEntity *VC_ConstructVisualData(VCVisualData *visualData, int collidable, VCAttribute **visualAttribute, + VCAttribute **boundaryAttribute); + + +void VCSync_SetCacheMode(VCSync *item, uint32 newCacheMode); +uint32 VCSync_GetCacheMode(VCSync *item); +void *VC_AttachSyncCallbacks(char *actorName, char *actorType, VCSync_Func updateFunc, + VCSync_Func deleteFunc, void *data); +int VC_DetachSyncCallbacks( void *callbackHandle); +VCSync *VCSync_Create(char *name, char *actorType, VCTime *time); +int VCSync_Get(VCSync *item, char **name, char **actorType, VCTime *time); +int VCSync_Set(VCSync *item, VCTime *time); +int VCSync_SetTime(VCSync *item, VCTime *time); +int VCSync_GetName(VCSync *item, char **name); +int VCSync_GetActorType(VCSync *item, char **type); +int VCSync_GetTime(VCSync *item, VCTime *time); +int VCSync_Delete(VCSync *item); + + +void VCCollideMonitor_SetCacheMode (VCCollideMonitor *item, uint32 newCacheMode); +uint32 VCCollideMonitor_GetCacheMode (VCCollideMonitor *item); +void *VCCollideMonitor_AttachCreateCallback (VCCollideMonitor *item, VCCollideMonitor_Func func, void *data); +void *VCCollideMonitor_AttachUpdateCallback (VCCollideMonitor *item, VCCollideMonitor_Func func, void *data); +void *VCCollideMonitor_AttachDeleteCallback (VCCollideMonitor *item, VCCollideMonitor_Func func, void *data); +int VCCollideMonitor_DetachCreateCallback (VCCollideMonitor *item, void *callbackHandle); +int VCCollideMonitor_DetachUpdateCallback (VCCollideMonitor *item, void *callbackHandle); +int VCCollideMonitor_DetachDeleteCallback (VCCollideMonitor *item, void *callbackHandle); +VCCollideMonitor *VCCollideMonitor_CreateData (VCCollideMonitorData *collideMonitorData); +int VCCollideMonitor_GetData (VCCollideMonitor *item, VCCollideMonitorData *collideMonitorData); +int VCCollideMonitor_SetData (VCCollideMonitor *item,VCCollideMonitorData *collideMonitorData); +int VCCollideMonitor_Delete (VCCollideMonitor *item); + +void VCTrackerMonitor_SetCacheMode (VCTrackerMonitor *item, uint32 newCacheMode); +uint32 VCTrackerMonitor_GetCacheMode (VCTrackerMonitor *item); +void *VCTrackerMonitor_AttachCreateCallback (VCTrackerMonitor *item, VCTrackerMonitor_Func func, void *data); +void *VCTrackerMonitor_AttachUpdateCallback (VCTrackerMonitor *item, VCTrackerMonitor_Func func, void *data); +void *VCTrackerMonitor_AttachDeleteCallback (VCTrackerMonitor *item, VCTrackerMonitor_Func func, void *data); +int VCTrackerMonitor_DetachCreateCallback (VCTrackerMonitor *item, void *callbackHandle); +int VCTrackerMonitor_DetachUpdateCallback (VCTrackerMonitor *item, void *callbackHandle); +int VCTrackerMonitor_DetachDeleteCallback (VCTrackerMonitor *item, void *callbackHandle); +VCTrackerMonitor *VCTrackerMonitor_CreateData (VCTrackerMonitorData *trackerMonitorData); +int VCTrackerMonitor_GetData (VCTrackerMonitor *item, VCTrackerMonitorData *trackerMonitorData); +int VCTrackerMonitor_SetData (VCTrackerMonitor *item,VCTrackerMonitorData *trackerMonitorData); +int VCTrackerMonitor_Delete (VCTrackerMonitor *item); + +void VCVisualMonitor_SetCacheMode (VCVisualMonitor *item, uint32 newCacheMode); +uint32 VCVisualMonitor_GetCacheMode (VCVisualMonitor *item); +void *VCVisualMonitor_AttachCreateCallback (VCVisualMonitor *item, VCVisualMonitor_Func func, void *data); +void *VCVisualMonitor_AttachUpdateCallback (VCVisualMonitor *item, VCVisualMonitor_Func func, void *data); +void *VCVisualMonitor_AttachDeleteCallback (VCVisualMonitor *item, VCVisualMonitor_Func func, void *data); +int VCVisualMonitor_DetachCreateCallback (VCVisualMonitor *item, void *callbackHandle); +int VCVisualMonitor_DetachUpdateCallback (VCVisualMonitor *item, void *callbackHandle); +int VCVisualMonitor_DetachDeleteCallback (VCVisualMonitor *item, void *callbackHandle); +VCVisualMonitor *VCVisualMonitor_CreateData (VCVisualMonitorData *visualMonitorData); +int VCVisualMonitor_GetData (VCVisualMonitor *item, VCVisualMonitorData *visualMonitorData); +int VCVisualMonitor_SetData (VCVisualMonitor *item,VCVisualMonitorData *visualMonitorData); +int VCVisualMonitor_Delete (VCVisualMonitor *item); + +void VCRadiator_SetCacheMode(VCRadiator *item, uint32 newCacheMode); +uint32 VCRadiator_GetCacheMode(VCRadiator *item); +void *VCRadiator_AttachCreateCallback(VCRadiator *item, VCRadiator_Func func, void *data); +void *VCRadiator_AttachUpdateCallback(VCRadiator *item, VCRadiator_Func func, void *data); +void *VCRadiator_AttachDeleteCallback(VCRadiator *item, VCRadiator_Func func, void *data); +int VCRadiator_DetachCreateCallback(VCRadiator *item, void *callbackHandle); +int VCRadiator_DetachUpdateCallback(VCRadiator *item, void *callbackHandle); +int VCRadiator_DetachDeleteCallback(VCRadiator *item, void *callbackHandle); +VCRadiator *VCRadiator_Create (char *name, int32 numPoints, float32 points[VC_RADIATOR_MAX_POINTS]); +VCRadiator *VCRadiator_CreateData(VCRadiatorData *radiatorData); +int VCRadiator_Get (VCRadiator *item, char **name, int32 *numPoints, float32 points[VC_RADIATOR_MAX_POINTS]); +int VCRadiator_GetData(VCRadiator *item, VCRadiatorData *radiatorData); +int VCRadiator_SetData (VCRadiator *item,VCRadiatorData *radiatorData); +int VCRadiator_Set (VCRadiator *radiator, char *name, int32 *numPoints, float32 points[VC_RADIATOR_MAX_POINTS]); +int VCRadiator_SetName(VCRadiator *radiator, char *name); +int VCRadiator_SetNumPoints(VCRadiator *radiator, int32 numPoints); +int VCRadiator_SetPoints(VCRadiator *radiator, float32 points[VC_RADIATOR_MAX_POINTS]); +int VCRadiator_GetName(VCRadiator *radiator, char **name); +int VCRadiator_GetNumPoints(VCRadiator *radiator, int32 *numPoints); +int VCRadiator_GetPoints(VCRadiator *radiator, float32 points[VC_RADIATOR_MAX_POINTS]); +int VCRadiator_Delete(VCRadiator *item); + +void VCRamp_SetCacheMode(VCRamp *item, uint32 newCacheMode); +uint32 VCRamp_GetCacheMode(VCRamp *item); +void *VCRamp_AttachCreateCallback(VCRamp *item, VCRamp_Func func, void *data); +void *VCRamp_AttachUpdateCallback(VCRamp *item, VCRamp_Func func, void *data); +void *VCRamp_AttachDeleteCallback(VCRamp *item, VCRamp_Func func, void *data); +int VCRamp_DetachCreateCallback(VCRamp *item, void *callbackHandle); +int VCRamp_DetachUpdateCallback(VCRamp *item, void *callbackHandle); +int VCRamp_DetachDeleteCallback(VCRamp *item, void *callbackHandle); +VCRamp *VCRamp_Create(char *name, uint32 mode, VCColour minRgb, VCColour maxRgb); +VCRamp *VCRamp_CreateData(VCRampData *rampData); +int VCRamp_Get(VCRamp *item, char **name, uint32 *mode, VCColour minRgb, VCColour maxRgb); +int VCRamp_GetData(VCRamp *item, VCRampData *rampData); +int VCRamp_SetData (VCRamp *item,VCRampData *rampData); +int VCRamp_Set(VCRamp *item, char *name, uint32 setMode, uint32 clearMode, VCColour minRgb, VCColour maxRgb); +int VCRamp_ModifyMode(VCRamp *item, uint32 setMode, uint32 clearMode); +int VCRamp_SetName(VCRamp *item, char *name); +int VCRamp_SetMode(VCRamp *item, uint32 mode); +int VCRamp_SetMinRgb (VCRamp *item, VCColour minRgb); +int VCRamp_SetMaxRgb (VCRamp *item, VCColour maxRgb); +int VCRamp_GetName(VCRamp *item, char **name); +int VCRamp_GetMode(VCRamp *item, uint32 *mode); +int VCRamp_GetMinRgb (VCRamp *item, VCColour minRgb); +int VCRamp_GetMaxRgb (VCRamp *item, VCColour maxRgb); +int VCRamp_Delete(VCRamp *item); + + + + + +int VC_StartGroup(void); +int VC_StopGroup(void); +int32 VC_GetGroup(void); + +int VC_DetachGroupCallback(void *callbackHandle); +void *VC_AttachGroupCallback(VC_GroupFunc function, void *data); + +char *VC_ErrorString(int errno, int errType); +void VC_Perror(char *message); +void VCPrintBadMatrixSplit(dmMatrix mat, char *func, char *file, int line); + +extern VCAttribute *VCFindAttribute (const InstanceNo attrIno); +extern VCEntity * VCFindObject( const InstanceNo obj_ino); + +extern char *VCApplicationName; +extern char *VCDomainName; +extern char *VCDomainExtName; +extern FILE *VCLogFilePtr; +extern int vcerrno; +extern int vcErrType; +# ifdef __cplusplus +} +# endif +#endif diff --git a/CODE/RP/MUNGA_L4/libDPL/dvs/VCBODAPP.H b/CODE/RP/MUNGA_L4/libDPL/dvs/VCBODAPP.H new file mode 100644 index 0000000..97aa8e7 --- /dev/null +++ b/CODE/RP/MUNGA_L4/libDPL/dvs/VCBODAPP.H @@ -0,0 +1,47 @@ + +typedef struct +{ + int state; + void *collideEntity; + void *pickEntity; + void *pickRelocateHandle; + void *relocateData; +}VCBodyPartAppInfo; + +typedef struct +{ + VCEntity *entity; + VCAttribute *bodyPart; + VCBody *body; +}VCBodyAppCallbackData; + +typedef struct +{ + VCAttribute *bodyPart; + VCBody *body; +}VCBodyAppRelocateData; + + +#define VC_BODYAPP_COLLIDED 0x00000001 +#define VC_BODYAPP_PICK_PRESSED 0x00000002 + +typedef void (*VCBodyTouchFunc)(VCBodyAppCallbackData *callbackData, void *data); +typedef void (*VCBodyUnTouchFunc)(VCBodyAppCallbackData *callbackData, void *data); +typedef void (*VCBodyPickFunc)(VCBodyAppCallbackData *callbackData, void *data); +typedef void (*VCBodyDropFunc)(VCBodyAppCallbackData *callbackData, void *data); +typedef void (*VCBodyMoveFunc)(VCBodyAppCallbackData *callbackData, void *data); + +typedef struct +{ + void *touchFunc; + void *unTouchFunc; + void *pickFunc; + void *dropFunc; + void *moveFunc; +} VCBodyFuncInfo; + +void *VCBody_AttachInteractionCallbacks(VCBody *body, VCBodyTouchFunc touchFunc, + VCBodyUnTouchFunc unTouchFunc, VCBodyPickFunc pickFunc, + VCBodyDropFunc dropFunc, VCBodyMoveFunc moveFunc, void *data); + +void VCBody_DetachInteractionCallbacks(VCBody *body, void *callbackHandle); diff --git a/CODE/RP/MUNGA_L4/libDPL/dvs/VCDATA.H b/CODE/RP/MUNGA_L4/libDPL/dvs/VCDATA.H new file mode 100644 index 0000000..19d07a6 --- /dev/null +++ b/CODE/RP/MUNGA_L4/libDPL/dvs/VCDATA.H @@ -0,0 +1,60 @@ + +#define VCEntity_AttachUserData(e,i,d) _VCList_AttachUserData(&((e)->systemData->userData),i,d) +#define VCEntity_GetUserData(e,i) _VCList_GetUserData((e)->systemData->userData,i) +#define VCEntity_DetachUserData(e,i) _VCList_DetachUserData(&((e)->systemData->userData),i) + +#define VCEntityAttribute_AttachUserData(e,o,i,d) _VCList_AttachUserData(&((e)->attributes[o].userDataList),i,d) +#define VCEntityAttribute_GetUserData(e,o,i) _VCList_GetUserData ((e)->attributes[o].userDataList,i) +#define VCEntityAttribute_DetachUserData(e,o,i) _VCList_DetachUserData (&((e)->attributes[o].userDataList),i) +#define VCAttribute_AttachUserData(a,i,d) _VCList_AttachUserData(&((a)->userDataList),i,d) +#define VCAttribute_GetUserData(a,i) _VCList_GetUserData((a)->userDataList,i) +#define VCAttribute_DetachUserData(a,i) _VCList_DetachUserData(&((a)->userDataList),i) +#define VCMaterial_AttachUserData(a,i,d) _VCList_AttachUserData(&((a)->userDataList),i,d) +#define VCMaterial_GetUserData(a,i) _VCList_GetUserData((a)->userDataList,i) +#define VCMaterial_DetachUserData(a,i) _VCList_DetachUserData(&((a)->userDataList),i) +#define VCCollision_AttachUserData(a,i,d) _VCList_AttachUserData(&((a)->userDataList),i,d) +#define VCCollision_GetUserData(a,i) _VCList_GetUserData((a)->userDataList,i) +#define VCCollision_DetachUserData(a,i) _VCList_DetachUserData(&((a)->userDataList),i) +#define VCTexture_AttachUserData(a,i,d) _VCList_AttachUserData(&((a)->userDataList),i,d) +#define VCTexture_GetUserData(a,i) _VCList_GetUserData((a)->userDataList,i) +#define VCTexture_DetachUserData(a,i) _VCList_DetachUserData(&((a)->userDataList),i) +#define VCInput_AttachUserData(a,i,d) _VCList_AttachUserData(&((a)->userDataList),i,d) +#define VCInput_GetUserData(a,i) _VCList_GetUserData((a)->userDataList,i) +#define VCInput_DetachUserData(a,i) _VCList_DetachUserData(&((a)->userDataList),i) +#define VCIntersection_AttachUserData(a,i,d) _VCList_AttachUserData(&((a)->userDataList),i,d) +#define VCIntersection_GetUserData(a,i) _VCList_GetUserData((a)->userDataList,i) +#define VCIntersection_DetachUserData(a,i) _VCList_DetachUserData(&((a)->userDataList),i) +#define VCTracker_AttachUserData(a,i,d) _VCList_AttachUserData(&((a)->userDataList),i,d) +#define VCTracker_GetUserData(a,i) _VCList_GetUserData((a)->userDataList,i) +#define VCTracker_DetachUserData(a,i) _VCList_DetachUserData(&((a)->userDataList),i) +#define VCPosition_AttachUserData(a,i,d) _VCList_AttachUserData(&((a)->userDataList),i,d) +#define VCPosition_GetUserData(a,i) _VCList_GetUserData((a)->userDataList,i) +#define VCPosition_DetachUserData(a,i) _VCList_DetachUserData(&((a)->userDataList),i) +#define VCXWindowId_AttachUserData(a,i,d) _VCList_AttachUserData(&((a)->userDataList),i,d) +#define VCXWindowId_GetUserData(a,i) _VCList_GetUserData((a)->userDataList,i) +#define VCXWindowId_DetachUserData(a,i) _VCList_DetachUserData(&((a)->userDataList),i) +#define VCPseudoGravity_AttachUserData(a,i,d) _VCList_AttachUserData(&((a)->userDataList),i,d) +#define VCPseudoGravity_GetUserData(a,i) _VCList_GetUserData((a)->userDataList,i) +#define VCPseudoGravity_DetachUserData(a,i) _VCList_DetachUserData(&((a)->userDataList),i) +#define VCVisualViewResource_AttachUserData(a,i,d) _VCList_AttachUserData(&((a)->attribute->userDataList),i,d) +#define VCVisualViewResource_GetUserData(a,i) _VCList_GetUserData((a)->attribute->userDataList,i) +#define VCVisualViewResource_DetachUserData(a,i) _VCList_DetachUserData(&((a)->attribute->userDataList),i) +#define VCSync_AttachUserData(a,i,d) _VCList_AttachUserData(&((a)->userDataList),i,d) +#define VCSync_GetUserData(a,i) _VCList_GetUserData((a)->userDataList,i) +#define VCSync_DetachUserData(a,i) _VCList_DetachUserData(&((a)->userDataList),i) +#define VCCollideMonitor_AttachUserData(a,i,d) _VCList_AttachUserData(&((a)->userDataList),i,d) +#define VCCollideMonitor_GetUserData(a,i) _VCList_GetUserData((a)->userDataList,i) +#define VCCollideMonitor_DetachUserData(a,i) _VCList_DetachUserData(&((a)->userDataList),i) +#define VCTrackerMonitor_AttachUserData(a,i,d) _VCList_AttachUserData(&((a)->userDataList),i,d) +#define VCTrackerMonitor_GetUserData(a,i) _VCList_GetUserData((a)->userDataList,i) +#define VCTrackerMonitor_DetachUserData(a,i) _VCList_DetachUserData(&((a)->userDataList),i) +#define VCVisualMonitor_AttachUserData(a,i,d) _VCList_AttachUserData(&((a)->userDataList),i,d) +#define VCVisualMonitor_GetUserData(a,i) _VCList_GetUserData((a)->userDataList,i) +#define VCVisualMonitor_DetachUserData(a,i) _VCList_DetachUserData(&((a)->userDataList),i) +#define VCRadiator_AttachUserData(a,i,d) _VCList_AttachUserData(&((a)->userDataList),i,d) +#define VCRadiator_GetUserData(a,i) _VCList_GetUserData((a)->userDataList,i) +#define VCRadiator_DetachUserData(a,i) _VCList_DetachUserData(&((a)->userDataList),i) +#define VCRamp_AttachUserData(a,i,d) _VCList_AttachUserData(&((a)->userDataList),i,d) +#define VCRamp_GetUserData(a,i) _VCList_GetUserData((a)->userDataList,i) +#define VCRamp_DetachUserData(a,i) _VCList_DetachUserData(&((a)->userDataList),i) + diff --git a/CODE/RP/MUNGA_L4/libDPL/dvs/VCDEFS.H b/CODE/RP/MUNGA_L4/libDPL/dvs/VCDEFS.H new file mode 100644 index 0000000..487b2e2 --- /dev/null +++ b/CODE/RP/MUNGA_L4/libDPL/dvs/VCDEFS.H @@ -0,0 +1,597 @@ +/* + * PROJECT: + * SUBSYSTEM: + * MODULE: + * + * FILE: $RCSfile: vcdefs.h,v $ + * REVISION: $Revision: 1.1 $ + * Date: $Date: 95/05/18 10:24:10 $ + * Author: $Author: john $ + * RCS Ident: $Id: vcdefs.h,v 1.3 1995/03/22 12:23:51 jeff Exp $ + * + * FUCTION: + * + * + * + * + * Copyright (c) 1992 Division Ltd. + * + * All Rights Reserved. + * + * This Document may not, in whole or in part, be copied, + * photocopied, reproduced, translated, or reduced to any + * electronic medium or machine readable form without prior + * written consent from Division Ltd. + */ + +/*--- Local sizing constants */ + +#define VC_RED 0 +#define VC_GREEN 1 +#define VC_BLUE 2 +#define VC_MAX_OBJECT_ATTRIBUTES 6 + +#define VC_ERRTYPE_NONE 0 +#define VC_ERRTYPE_VL 1 +#define VC_ERRTYPE_DM 2 +#define VC_ERRTYPE_VC 3 +#define VC_ERRTYPE_SYSTEM 4 + +#define VC_MAX_SIGNALS 32 + +#define VC_MAX_SENSORS 4 + +#define VC_RADIATOR_MAX_POINTS 36 +#define VC_RADIATOR_NAME_LENGTH 16 + +#define VC_LIGHT_ENABLE 0x00000004 + +#define VC_LIGHT_MODE_MASK 0x00000003 +#define VC_LIGHT_MODE_DIRECTIONAL 0x00000000 +#define VC_LIGHT_MODE_POINT 0x00000001 +#define VC_LIGHT_MODE_AMBIENT 0x00000002 +#define VC_LIGHT_MODE_SPOT 0x00000003 + +#define VC_LOD_NAME_LENGTH 8 + +#define VC_NO_INSTANCES -1 +#define VC_ALL_INSTANCES 0 +#define VC_FIRST_ATTRIBUTE -1 +#define VC_ALL_ATTRIBUTES -1 + +#define VC_ALL_ELEMENTS 0 +/* + * Values for Visible field in Visual object + */ + +#define VC_ALL_MODES 0xffffffff +#define VC_VISIBLE 0x01 +#define VC_VISUAL_ENABLE 0x01 +#define VC_RMODE_POLYGONAL 0x00 +#define VC_RMODE_WIREFRAME 0x02 +#define VC_RMODE_SPARE1 0x04 +#define VC_RMODE_SPARE2 0x06 +#define VC_VISUAL_BILLBOARD 0x08 +#define VC_VISUAL_NOVECTINTERSECT 0x10 + +#define VC_RMODE_MASK 0x06 + + + +#define VC_VISUALVIEW_MODE_MASK 0x03 +#define VC_VISUALVIEW_RELATIVE_MODE_MASK 0x04 + +#define VC_VISUALVIEW_MODE_MONO 0x00 +#define VC_VISUALVIEW_MODE_LEFT 0x01 +#define VC_VISUALVIEW_MODE_RIGHT 0x02 +#define VC_VISUALVIEW_RELATIVE_MODE_HEAD 0x00 +#define VC_VISUALVIEW_RELATIVE_MODE_EYE 0x04 +#define VC_VISUALVIEW_ENABLE 0x08 + + +#define VC_VISUALRESOURCE_FOG_MASK 0x00070000 +#define VC_VISUALRESOURCE_FOG_MODE_MASK 0x00000010 +#define VC_VISUALRESOURCE_PHASE_MODE_MASK 0x00003000 +#define VC_VISUALRESOURCE_RENDERMODE_MASK 0x00000001 + +#define VC_VISUALRESOURCE_MODE_POLYGONAL 0x00000000 +#define VC_VISUALRESOURCE_MODE_WIREFRAME 0x00000001 +#define VC_VISUALRESOURCE_MODE_STATISTICS 0x00000002 +#define VC_VISUALRESOURCE_MODE_TEXTURE 0x00000004 +#define VC_VISUALRESOURCE_MODE_SINGLE_BUF 0x00000008 +#define VC_VISUALRESOURCE_FOG_MODE_PIXEL 0x00000000 +#define VC_VISUALRESOURCE_FOG_MODE_VERTEX 0x00000010 +#define VC_VISUALRESOURCE_PHASE_MODE_LOCK 0x00000000 +#define VC_VISUALRESOURCE_PHASE_MODE_FLOAT 0x00001000 +#define VC_VISUALRESOURCE_PHASE_MODE_FREE 0x00002000 +#define VC_VISUALRESOURCE_PHASE_MODE_LIMIT 0x00003000 +#define VC_VISUALRESOURCE_ENABLE 0x00008000 +#define VC_VISUALRESOURCE_FOG_DISABLED 0x00000000 +#define VC_VISUALRESOURCE_FOG_LINEAR 0x00010000 +#define VC_VISUALRESOURCE_FOG_EXP 0x00020000 +#define VC_VISUALRESOURCE_FOG_EXP_SQUARED 0x00030000 +#define VC_VISUALRESOURCE_Z_CLEAR_ONLY 0x00080000 + + + +#define VC_NOT_PICKED 3 +#define VC_NOT_DROPPED VC_NOT_PICKED +#define VC_FOUND_DEFAULT 2 +#define VC_FOUND_EXPLICIT 1 +#define VC_OK 0 +#define VC_ERR -1 +#define VC_NOT_FOUND -1 +#define VC_EXISTS -2 +#define VC_BAD_ARGS -3 +#define VC_BAD_ACTOR VL_BAD_ACTOR +/* + * flags to VCAddInstance + */ +#define VC_ADD 0 +#define VC_OVERRIDE 1 +#define VC_FAIL 2 + +#define VC_X 0 +#define VC_Y 1 +#define VC_Z 2 +#define VC_W 3 + +#define VC_MIN_X 0 +#define VC_MIN_Y 1 +#define VC_MIN_Z 2 +#define VC_MAX_X 3 +#define VC_MAX_Y 4 +#define VC_MAX_Z 5 + +#define VC_BOUND_ROT_X 6 +#define VC_BOUND_ROT_Y 7 +#define VC_BOUND_ROT_Z 8 + +#define VC_BOUND_SIZE 9 + + +#define VC_MIN_PITCH 0 +#define VC_MIN_YAW 1 +#define VC_MIN_ROLL 2 +#define VC_MAX_PITCH 3 +#define VC_MAX_YAW 4 +#define VC_MAX_ROLL 5 + +#define VC_RADIUS 3 + +#define VC_CONSTRAIN_ENABLE 0x80000000 +#define VC_CONSTRAIN_MODE_MASK 0x7fffffff + +#define VC_CONSTRAIN_NORMAL 0 +#define VC_CONSTRAIN_HINGE_X 1 +#define VC_CONSTRAIN_HINGE_Y 2 +#define VC_CONSTRAIN_HINGE_Z 3 + + + +#define VC_PICK_CONSTRAINED 0x00000000 +#define VC_PICK_NON_CONSTRAINED 0x00000001 +#define VC_PICK_DROP 0x00000002 +#define VC_PICK_IDLE 0x00000003 + +#define VC_PICK_COMMAND_MASK 0x0000000f + + +/* + * Mice input port types + */ +#define VC_SERIAL 1 +#define VC_PARALLEL 2 +#define VC_PIO 3 + +#define VC_PV100_MOUSE 1 +#define VC_PV200_MOUSE 2 +#define VC_LOGITECH_MOUSE 3 +#define VC_SPACEBALL_MOUSE 4 + + +#define VC_HOOK_ATTACH_MASK 0x0000000f +#define VC_HOOK_DETACH_MASK 0x000000f0 + +#define VC_ATTACH_ABSOLUTE 0x00000001 +#define VC_ATTACH_RELATIVE 0x00000002 +#define VC_DETACH_ABSOLUTE 0x00000010 +#define VC_DETACH_RELATIVE 0x00000020 + +#define VC_LINK_LEAVE_POSITION 0x00000000 +#define VC_LINK_ADJUST_POSITION 0x00000001 +#define VC_LINK_QUIET 0x00000002 +#define VC_UNLINK_LEAVE_POSITION 0x00000000 +#define VC_UNLINK_ADJUST_POSITION 0x00000001 +#define VC_UNLINK_QUIET 0x00000002 +#define VC_UNLINK_DONT_FIX_PARENT_INTEREST 0x00000010 + +#define VC_LOCK_X_VAL 0x00000001 +#define VC_LOCK_Y_VAL 0x00000002 +#define VC_LOCK_Z_VAL 0x00000004 +#define VC_LOCK_X 0x00000010 +#define VC_LOCK_Y 0x00000020 +#define VC_LOCK_Z 0x00000040 +#define VC_LOCK_ROLL_VAL 0x00000100 +#define VC_LOCK_PITCH_VAL 0x00000200 +#define VC_LOCK_YAW_VAL 0x00000400 +#define VC_LOCK_ROLL 0x00001000 +#define VC_LOCK_PITCH 0x00002000 +#define VC_LOCK_YAW 0x00004000 +#define VC_LOCK_FIXED 0x00010000 + +/* + * Body Values + */ + +#define VC_BODY_USE_ENTITY_TRANSLATION 0x00000001 +#define VC_ALL_BODIES -1 + +#define VC_BODY_FLY_ENABLED 0x00000001 +#define VC_BODY_FLY_VERTICAL 0x00000002 +#define VC_BODY_FLY_VERTICAL_ALWAYS 0x00000004 +#define VC_BODY_FLY_FORWARD_SLOW 0x00000008 +#define VC_BODY_FLY_FORWARD_FAST 0x00000010 +#define VC_BODY_FLY_FORWARD_ACCELERATE 0x00000020 +#define VC_BODY_FLY_BACKWARD_SLOW 0x00000040 +#define VC_BODY_FLY_BACKWARD_FAST 0x00000080 +#define VC_BODY_FLY_BACKWARD_ACCELERATE 0x00000100 + +#define VC_BODY_ROT_LEFT_SLOW 0x00000200 +#define VC_BODY_ROT_LEFT_FAST 0x00000400 +#define VC_BODY_ROT_LEFT_ACCELERATE 0x00000800 +#define VC_BODY_ROT_RIGHT_SLOW 0x00001000 +#define VC_BODY_ROT_RIGHT_FAST 0x00002000 +#define VC_BODY_ROT_RIGHT_ACCELERATE 0x00004000 + +#define VC_BODY_FLY_LEFT_SLOW 0x00008000 +#define VC_BODY_FLY_LEFT_FAST 0x00010000 +#define VC_BODY_FLY_LEFT_ACCELERATE 0x00020000 +#define VC_BODY_FLY_RIGHT_SLOW 0x00040000 +#define VC_BODY_FLY_RIGHT_FAST 0x00080000 +#define VC_BODY_FLY_RIGHT_ACCELERATE 0x00100000 + +#define VC_BODY_FLY_UP_SLOW 0x00200000 +#define VC_BODY_FLY_UP_FAST 0x00400000 +#define VC_BODY_FLY_UP_ACCELERATE 0x00800000 +#define VC_BODY_FLY_DOWN_SLOW 0x01000000 +#define VC_BODY_FLY_DOWN_FAST 0x02000000 +#define VC_BODY_FLY_DOWN_ACCELERATE 0x04000000 + + + + +/* + * Flags for new VCActorInit call - MG, March 23, '94 + * + */ + +#define VC_INIT_NOUSER 0x001 /* Don't get user information */ +#define VC_INIT_NOCONFIG 0x002 /* Don't do actor configuration */ + +/* + * Sensor Resource update Mode values + */ + +#define VC_MODE_IMMEDIATE 1 +#define VC_MODE_INDIRECT 2 + +/* + * VCObject Update Modes + */ + +#define VC_REPORT_LOCAL_UPDATES 0x00000001 +#define VC_REPORT_REMOTE_UPDATES 0x00000002 + +/* + * flags for VCPosition mode bit + */ + +#define VC_DEAD_RECKON 0x00000001 + +/* + * Flags passed into VCRelocateHandler & relocate functions + */ + +#define VC_REPORT_ABSOLUTE_POSITION 0x00000000 +#define VC_REPORT_RELATIVE_POSITION 0x00000001 +#define VC_REPORT_DONT_DEAD_RECKON 0x00000002 +#define VC_REPORT_DELAY_RELOCATE 0x00000004 +#define VC_REPORT_POSITION_IN_ENTITY 0x00000010 +#define VC_REPORT_ALL_ENTITIES 0x00000020 + +/* + * Flags to VCDestruct + */ + +#define VC_DESTRUCT_FORCE 0x00000001 +#define VC_DESTRUCT_ATTRIBUTES 0x00000002 +#define VC_DESTRUCT_CHILDREN 0x00000004 + +#define VC_RELOCATE_FIRST_REPORT 0x00000001 +#define VC_RELOCATE_ABSOLUTE 0x00000002 +#define VC_RELOCATE_RELATIVE 0x00000004 +#define VC_RELOCATE_LINKAGE_CHANGE 0x00000008 + +#define VC_HANDLED 0 +#define VC_NOT_HANDLED 1 + +#define VC_COLLISION_ENABLE 0x01 +/* +* Don't know what to do with this +#define VC_COLLISION_SOLID 0x02 +*/ +#define VC_COLLISION_HIERACHY_DISABLE 0x04 +#define VC_COLLISION_PICKABLE 0x08 +#define VC_COLLISION_PICKING 0x10 +#define VC_COLLISION_QUIET 0x20 +#define VC_COLLISION_INV_QUIET 0x40 + +#define VC_COLLISION_SIMPLE 0x000 +#define VC_COLLISION_RADIUS 0x100 +#define VC_COLLISION_GEOMETRY 0x200 +#define VC_COLLISION_BBOX 0x300 + +#define VC_COLLISION_MODE_MASK 0x300 + +#define VC_COLLISION_BOUNDS_VALID 0x400 +#define VC_COLLISION_ZONE 0x800 +#define VC_COLLISION_NO_POSITION 0x1000 +#define VC_COLLISION_NO_VECTOR 0x2000 +#define VC_COLLISION_NO_TIME 0x4000 + +#define VC_COLLISION_RETURN_MASK 0xf0000 +#define VC_COLLISION_RETURN_NONE 0x00000 +#define VC_COLLISION_RETURN_BBOX 0x10000 +#define VC_COLLISION_RETURN_RADIUS 0x20000 +#define VC_COLLISION_RETURN_VALID 0x100000 +#define VC_ATTRIBUTE_MODE_DONT_CACHE 0x000 +#define VC_ATTRIBUTE_MODE_CACHE 0x001 + +#define VC_AUDIORESOURCE_SPREADINGROLLOFF_VALID 0x00000010 +#define VC_AUDIORESOURCE_ATMOSPHERICABSORPTION_VALID 0x00000020 + +#define VC_AUDIO_ENABLE 0x01 +#define VC_AUDIO_ZONED 0x02 +#define VC_AUDIO_SPATIAL_OFF 0x04 + +#define VC_AUDIO_PRIORITY_LOCKED -1 +#define VC_AUDIO_MAX_PRIORITY 127 + + +#define VC_SENSOR_ENABLE 0x00000001 +#define VC_SENSOR_MODE_RELATIVE 0x00000002 +#define VC_SENSOR_FILTER_ENABLE 0x00000004 +#define VC_SENSOR_POSITION_SHARED 0x00000008 +#define VC_SENSOR_REPORT_MASK 0x000000f0 +#define VC_SENSOR_REPORT_NORMAL 0x00000010 +#define VC_SENSOR_REPORT_INTERPOLATE 0x00000020 +#define VC_SENSOR_REPORT_DEADRECKON_1 0x00000030 +#define VC_SENSOR_REPORT_DEADRECKON_2 0x00000040 +#define VC_SENSOR_REPORT_ENABLE 0x00000100 + +#define VC_MATERIAL_ENABLE 0x00000001 + +/* + * Value for texture mode + */ + +#define VC_TEXTURE_ENABLE 0x00000001 + +/* + * Values fot texture minify field + */ + +#define VC_TEXTURE_MIN_POINT_SAMPLED 0x01 +#define VC_TEXTURE_MIN_BILINEAR 0x02 +#define VC_TEXTURE_MIN_TRILINEAR 0x03 +#define VC_TEXTURE_MIN_MIP_MAP_POINT_SAMPLED 0x04 +#define VC_TEXTURE_MIN_MIP_MAP_LINEAR 0x05 +#define VC_TEXTURE_MIN_MIP_MAP_BILINEAR 0x06 +#define VC_TEXTURE_MIN_MIP_MAP_TRILINEAR 0x07 +#define VC_TEXTURE_MIN_MIP_MAP_QUADLINEAR 0x08 + +/* + * Values fot texture magnify field + */ + +#define VC_TEXTURE_MAG_POINT_SAMPLED 0x01 +#define VC_TEXTURE_MAG_BILINEAR 0x02 +#define VC_TEXTURE_MAG_TRILINEAR 0x03 +#define VC_TEXTURE_MAG_BICUBIC 0x04 +#define VC_TEXTURE_MAG_SHARPEN 0x05 + +/* + * Values fot texture alpha field + */ + +#define VC_TEXTURE_ALPHA_BLEND 0x01 +#define VC_TEXTURE_ALPHA_CUT 0x02 +#define VC_TEXTURE_ALPHA_BLEND_CUT 0x03 + +/* + * Values fot texture wrapu/wrapv fields + */ + +#define VC_TEXTURE_WRAP_REPEAT 0x00 +#define VC_TEXTURE_WRAP_CLAMP 0x01 +#define VC_TEXTURE_WRAP_SELECT 0x02 + +/* + * Values fot texture detailType field + */ +#define VC_TEXTURE_DETAIL_ADD 0x01 +#define VC_TEXTURE_DETAIL_MODULATE 0x02 + + + +/* + * Viz query status values + */ + +#define VC_VISUALQUERY_OK 0x00000001 +#define VC_VISUALQUERY_FAIL 0x00000002 + +#define VC_VISUALQUERY_MASK 0xffffff00 + +#define VC_VISUALQUERY_NO_SUBJECT 0x00000100 +#define VC_VISUALQUERY_NOT_FOUND 0x00000200 + +/* + * Viz query modes + */ + +#define VC_VISUALQUERY_OFF 0x00000000 +#define VC_VISUALQUERY_MATERIAL_NAMES 0x00000001 +#define VC_VISUALQUERY_TEXTURE_NAMES 0x00000002 +#define VC_VISUALQUERY_RAMP_NAMES 0x00000003 +#define VC_VISUALQUERY_LOD_NAMES 0x00000004 +#define VC_VISUALQUERY_PATCH_NAMES 0x00000005 +#define VC_VISUALQUERY_MATERIAL 0x00000006 +#define VC_VISUALQUERY_TEXTURE 0x00000007 +#define VC_VISUALQUERY_LOD 0x00000008 + +#define VC_VECTORINTERSECT_ENABLE 0x00000001 +#define VC_VECTORINTERSECT_REPORT_CONTINUOUS 0x00000002 +#define VC_VECTORINTERSECT_REPORT_RELATIVE 0x00000004 + +#define VC_VISUALEFFECT_ENABLE 0x0001 +#define VC_VISUALEFFECT_MODE_MASK 0x0ff0 +#define VC_VISUALEFFECT_MODE_EXPLOSION 0x0010 + + +#define VC_VERBOSE 0x00010000 +#define VC_VERBOSE_MATSPLIT 0x00020000 +#define VC_ZONE_ALL_ACTORS -1 +#define VC_ZONE_VISUAL 0x00000001 +#define VC_ZONE_COLLIDE 0x00000002 +#define VC_ZONE_PHYSICS 0x00000004 +#define VC_ZONE_AUDIO 0x00000008 +#define VC_ZONE_BODY 0x00000010 + +#define VC_ZONE_ENABLE_MASK 0x0000000F +#define VC_ZONE_ENABLED 0x00000000 +#define VC_ZONE_DISABLED 0x00000001 + +/* + * turn on things in a VCDynamics + */ +#define VC_DYNAMICS_ENABLE 0x00000001 +#define VC_DYNAMICS_INERTIA_MASK 0x6 +#define VC_DYNAMICS_INERTIA_POINT_MASS 0x2 +#define VC_DYNAMICS_INERTIA_DISTRIBUTED_MASS 0x4 + +#define VC_DYNAMICS_BOUNCE_MASK 0x00000018 +#define VC_DYNAMICS_BOUNCE_DISBALED 0 +#define VC_DYNAMICS_BOUNCE_SIMPLE 0x00000008 +#define VC_DYNAMICS_BOUNCE_COMPLEX 0x00000010 + +#define VC_DYNAMICS_GRAVITATIONAL_MASS 0x00000020 + + +/* + * indecies into arrays of + * values from an inertial tensor + */ +#define VC_I_XX 0 +#define VC_I_YY 1 +#define VC_I_ZZ 2 +#define VC_I_XY 3 +#define VC_I_YZ 4 +#define VC_I_XZ 5 + +/* + * turn on a VCForce as a force or pure torque (mutually exclusive). + * define whether it acts in local coordinante space (default) + * or world coordinate space. + */ +#define VC_FORCE_MODE_MASK 0x00000003 + +#define VC_FORCE_FORCE 0x00000001 +#define VC_FORCE_TORQUE 0x00000002 +#define VC_FORCE_WCS 0x00000004 +/* + * enable a pseudo-gravitational field + */ +#define VC_PSEUDO_GRAVITY_ENABLE 0x00000001 + +#define VC_LOD_ENABLE 0x000000001 +#define VC_LOD_DYNAMIC 0x000000002 + +#define VC_GEOGROUP_ENABLE 0x00000001 +#define VC_GEOGROUP_DYNAMIC 0x00000002 + +#define VC_GEOGROUP_VERTEX_ONLY 0x00000000 +#define VC_GEOGROUP_VERTEX_NORMALS 0x00000001 +#define VC_GEOGROUP_VERTEX_RGBA 0x00000002 +#define VC_GEOGROUP_VERTEX_LUMINANCE 0x00000004 +#define VC_GEOGROUP_VERTEX_2D_TEXTURE 0x00000008 +#define VC_GEOGROUP_VERTEX_3D_TEXTURE 0x00000010 +#define VC_GEOGROUP_VERTEX_RADIUS 0x00000020 + +#define VC_GEOGROUP_DRAWMODE_SOLID 0x00000000 +#define VC_GEOGROUP_DRAWMODE_WIREFRAME 0x00000001 +#define VC_GEOGROUP_DRAWMODE_DOTTED 0x00000002 + +#define VC_GEOGROUP_LOCK_OFF 0x00000000 +#define VC_GEOGROUP_LOCK_ON 0x00000001 + +#define VC_GEOMETRY_ENABLE 0x00000040 +#define VC_GEOMETRY_TYPE_MASK 0x0000003f + +#define VC_GEOMETRY_TYPE_TRISTRIP 0x00000000 +#define VC_GEOMETRY_TYPE_POLYSTRIP 0x00000001 +#define VC_GEOMETRY_TYPE_POLYGON 0x00000002 +#define VC_GEOMETRY_TYPE_LINE 0x00000003 +#define VC_GEOMETRY_TYPE_SPHERELIST 0x00000004 +#define VC_GEOMETRY_TYPE_PMESH 0x00000005 +#define VC_GEOMETRY_TYPE_TEXT 0x00000006 + +#define VC_GEOMETRY_SPHERELIST_DICE_U 0xfff00000 +#define VC_GEOMETRY_SPHERELIST_DICE_U_SHIFT 20 +#define VC_GEOMETRY_SPHERELIST_DICE_V 0x000fff00 +#define VC_GEOMETRY_SPHERELIST_DICE_V_SHIFT 8 + +#define VC_GEOMETRY_LINE_THICKNESS 0x0000ff00 +#define VC_GEOMETRY_LINE_THICKNESS_SHIFT 8 + +#define VC_CONNECTION_PCOUNT_SHIFT 8 +#define VC_CONNECTION_PCOUNT_MASK 0x0000ff00 + +#define VC_GROUP_START 0 +#define VC_GROUP_END 1 + +#define VC_RAMP_ENABLE 0x00000001 + + +#define VC_INPUTRESOURCE_ENABLE 0x00000001 + + + +#define VC_CACHEMODE_DEFAULT 0 +#define VC_CACHEMODE_DO_CACHE 1 +#define VC_CACHEMODE_DONT_CACHE 2 + + +#define VC_DEBUG_HARCHY 0x00020000 +#define VC_DEBUG_HARCHY_EXTRA 0x00040000 +#define VC_DEBUG_RESOURCE 0x00080000 +#define VC_DEBUG_ENTITY 0x00100000 +#define VC_DEBUG_PICK 0x00200000 +#define VC_DEBUG_BODY_TRAVERSE 0x00400000 +#define VC_DEBUG_ATTRIBUTE 0x00800000 +#define VC_DEBUG_INPUT 0x01000000 +#define VC_DEBUG_TIMER 0x02000000 +#define VC_DEBUG_BODY_RESOURCE 0x04000000 + +#if defined (_TRANSPUTER) || defined (_IRIX) +#define VCWARNING(x) VC_Warn ( #x" at line %d of %s\n",__LINE__, __FILE__) + +#else +#define VCWARNING(x) {int WARNING = #x; \ + VC_Warn ( #x" at line %d of %s\n",__LINE__, __FILE__);} +#endif + +#define VCAwaitEvent(a,m) {_VCDoneWaitEvent = 1;VLAwaitEvent(a,m); } + + diff --git a/CODE/RP/MUNGA_L4/libDPL/dvs/VCDTYPES.H b/CODE/RP/MUNGA_L4/libDPL/dvs/VCDTYPES.H new file mode 100644 index 0000000..d616acc --- /dev/null +++ b/CODE/RP/MUNGA_L4/libDPL/dvs/VCDTYPES.H @@ -0,0 +1,394 @@ +/*************************************************************************** + * + * PROJECT: dVS + * SUBSYSTEM: VC Toolkit. + * MODULE: VC Type definitions. + * + *************************************************************************** + * + * File: $RCSfile: vctypes.h,v $ + * Revision: $Revision: 1.1 $ + * Date: $Date: 95/05/18 10:24:11 $ + * Author: $Author: john $ + * RCS Ident: $Id: vctypes.h,v 1.1 1995/03/10 14:52:46 john Exp $ + * + * FUNCTION: + * + * + * + ************************************************************************** + * * + * Copyright (c) 1995 Division Ltd. * + * * + * All Rights Reserved. * + * * + * This Document may not, in whole or in part, be copied, photocopied, * + * reproduced, translated, or reduced to any electronic medium or * + * machine readable form without prior written consent from Division * + * Ltd. * + * * + *************************************************************************/ + +#ifndef _VCDTYPES_H +#define _VCDTYPES_H +typedef float32 VCColour[3]; + +#define VCColor VCColour /* For our American Friends !! */ +typedef struct +{ + uint32 secs; + uint32 uSecs; +}VCTime; + +typedef struct +{ + dmPosition dmPos; + uint32 mode; +}VCPositionData; + +typedef struct +{ + uint32 mode; + float32 frameRate; + float32 iod; + float32 convergence; + VCColour background; + float32 nearClip; + float32 farClip; + VCColour fogColour; + float32 nearFog; + float32 farFog; + float32 lodScale; + uint32 actorId; + char *name; +}VCVisualResourceData; + +typedef struct +{ + VCAttribute *visualResource; + uint32 mode; + dmPoint offset; + dmEuler orientation; + float32 size[2]; + char *name; +} VCVisualViewResourceData; + + +typedef struct +{ + uint32 mode; + uint32 flags; + float32 translation[6]; + float32 rotation[6]; +} VCConstraintsData; + +typedef struct +{ + uint32 mode; + VCInput *input; + char *name; +}VCInputResourceData; + +typedef struct { + uint32 mode; + VCTracker *tracker; + uint32 sensorId; + float32 translationScale[3]; + float32 rotationScale[3]; + float32 rotationCurveOrder[3]; + float32 translationCurveOrder[3]; + dmPoint prePosition; + dmPoint postPosition; + dmEuler preEuler; + dmEuler postEuler; + float32 relativeSphere[6]; + VCPosition *position; + VCConstraintsData constraints; + char *name; +} VCSensorResourceData; + +typedef struct +{ + uint32 updateRate; + uint32 transmissionDelay; + dmPoint sourcePosition; + dmEuler sourceEuler; + uint32 baudRate; + char *deviceType; + char *name; +}VCTrackerData; + + +typedef struct +{ + uint32 mode; + VCColour colour; + float32 exponent; + float32 theta; +}VCLightData; + +typedef struct +{ + uint32 mode; + uint32 intersectMask; + VCDynamicVisual *dynamicVisual; + char *geometryName; + char *frontMaterial; + char *backMaterial; + char *lod; +} VCVisualData; + +typedef struct +{ + VCAttribute *boundaryAttr; + uint16 flags; + dmPoint point; + dmVector direction; + VCTime time; +} VCCollisionReportData; + +typedef struct +{ + VCAttribute *boundary; + uint32 numberCollisions; + uint32 numberReportedCollisions; + VCCollisionReportData *collReportData; +}VCCollisionData; + +typedef struct +{ + float32 bound[VC_BOUND_SIZE]; + uint32 mode; + int32 numberCollisions; + VCCollision *collision; + VCDynamicVisual *dynamicVisual; + char *geometry; + char *lod; +}VCBoundaryData; + +typedef struct +{ + VCEntity *entity; + VCAttribute *visual; + InstanceNo patch; + dmPoint point; +}VCIntersectionReportData; + +typedef struct +{ + VCAttribute *vectorIntersect; + uint32 numberIntersections; + uint32 numberReportedIntersections; + VCIntersectionReportData *collReportData; +}VCIntersectionData; + +typedef struct +{ + uint32 mode; + float32 length; + uint32 intersectMask; + int32 numberIntersections; + VCIntersection *intersection; +}VCVectorIntersectData; + + + + +typedef struct +{ + uint32 mode; + int32 loopCount; + float32 gain; + uint16 play; + uint8 velocity; + int8 priority; + char *voice; + char *radiatorName; + char *radiatorFileName; +} VCAudioData; + +typedef struct +{ + uint32 mode; + float32 iad; + float32 volume; + float32 spreadingRollOff; + float32 atmosphericAbsorption; + float32 worldScale; + char *name; + char *hrtf; + char *resourceFile; +} VCAudioResourceData; + +typedef struct +{ + VCEntity *pickEntity; + uint32 mode; + uint32 pickActorId; +}VCPickObjectData; + +typedef struct +{ + uint32 mode; + VCColour ambient; + VCColour diffuse; + VCSpecular specular; + VCColour emissive; + VCColour opacity; + char *name; + char *textureName; + char *ramp; +} VCMaterialData; + +typedef struct +{ + uint32 mode; + uint8 minify; + uint8 magnify; + uint8 alpha; + uint8 wrapU; + uint8 wrapV; + uint8 detailType; + char *name; + char *textureMap; + char *detailMap; +} VCTextureData; + +typedef struct +{ + uint32 actorId; + char *name; + uint32 numAliases; + char **aliases; +} VCBodyPartData; + +typedef struct +{ + char8 *name; + int32 numPoints; + float32 points[VC_RADIATOR_MAX_POINTS]; +} VCRadiatorData; + +typedef struct +{ + uint32 mode; + uint32 type; + dmPoint offset; + float32 info[72]; + char *texture; +}VCVisualEffectData; + +typedef struct +{ + uint32 mode; + uint32 actorMask; +}VCZoneData; + +typedef struct +{ + uint32 mode; + float32 iMass; + float32 gMass; + dmPoint centre; + float32 iTensor[6]; + float32 spring; + float32 damper; + float32 staticFriction; + float32 dynamicFriction; +}VCDynamicsData; + +typedef struct +{ + uint32 mode; + dmVector force; + dmPoint point; +} VCForceData; + +typedef struct +{ + uint32 windowId; + char *serverName; + char *actorName; +} VCXWindowIdData; + +typedef struct +{ + uint32 mode; + dmVector direction; + float32 gravity; +}VCPseudoGravityData; + + +typedef struct +{ + float32 slow_speed; + float32 fast_speed; + float32 acceleration; + float32 max_speed; + uint32 slow_key; + uint32 fast_key; + uint32 accelerate_key; +}VCBodyFlyInfoData; + +typedef struct +{ + uint32 actorId; + VCEntity *bodyRoot; + VCEntity *bodyPosEntity; + VCBodyFlyInfoData fly_forward; + VCBodyFlyInfoData fly_backward; + VCBodyFlyInfoData fly_up; + VCBodyFlyInfoData fly_down; + VCBodyFlyInfoData fly_left; + VCBodyFlyInfoData fly_right; + VCBodyFlyInfoData rot_left; + VCBodyFlyInfoData rot_right; + VCBodyFlyInfoData rot_up; + VCBodyFlyInfoData rot_down; + uint32 verticalFly_key; + uint32 altFly_key; + VCEntity *flyDirectionLimb; + VCEntity *altFlyDirectionLimb; + VCEntity *altFlyLimb; + uint32 flyMode; + char *name; + char *user; + char *role; +} VCBodyData; + +typedef struct +{ + float32 objectInRate; + float32 objectInActive; + float32 objectTests; + char *name; +}VCCollideMonitorData; + +typedef struct +{ + float32 sensorRate[VC_MAX_SENSORS]; + int sensorBaseNumber; + char *name; +}VCTrackerMonitorData; + +typedef struct +{ + float32 headUpdateRate; /* No updates / second */ + float32 geometryUpdates; /* No updates / second */ + float32 frameRate; /* No frames drawn/second */ + float32 drawRate; /* Tri's per second */ + char8 *name; /* Name of the actor. */ +}VCVisualMonitorData; + +typedef struct +{ + uint32 mode; + VCColour minRgb; + VCColour maxRgb; + char* name; +} VCRampData; + +#endif + + + diff --git a/CODE/RP/MUNGA_L4/libDPL/dvs/VCDYNAM.H b/CODE/RP/MUNGA_L4/libDPL/dvs/VCDYNAM.H new file mode 100644 index 0000000..24e4ba6 --- /dev/null +++ b/CODE/RP/MUNGA_L4/libDPL/dvs/VCDYNAM.H @@ -0,0 +1,538 @@ +/*************************************************************************** + * + * PROJECT: dVS + * SUBSYSTEM: VC Toolkit. + * MODULE: VC Type definitions (dynamic geometry). + * + *************************************************************************** + * + * File: $RCSfile: vcdynam.h,v $ + * Revision: $Revision: 1.1 $ + * Date: $Date: 95/05/18 10:24:12 $ + * Author: $Author: john $ + * RCS Ident: $Id: vcdynam.h,v 1.1 1995/03/10 14:52:46 steve Exp $ + * + * FUNCTION: + * + * + * + ************************************************************************** + * * + * Copyright (c) 1992 Division Ltd. * + * * + * All Rights Reserved. * + * * + * This Document may not, in whole or in part, be copied, photocopied, * + * reproduced, translated, or reduced to any electronic medium or * + * machine readable form without prior written consent from Division * + * Ltd. * + * * + *************************************************************************/ + +#ifndef _VCDYNTYPES_H +#define _VCDYNTYPES_H + +/* defines */ + + +/* typedefs */ + +typedef struct VCDynamicVisual_CallbackData VCDynamicVisual_CallbackData; +typedef void (*VCDynamicVisual_Func) (VCDynamicVisual_CallbackData *attributeData, void *data); +typedef struct VCLod_CallbackData VCLod_CallbackData; +typedef void (*VCLod_Func) (VCLod_CallbackData *attributeData, void *data); +typedef struct VCGeogroup_CallbackData VCGeogroup_CallbackData; +typedef void (*VCGeogroup_Func) (VCGeogroup_CallbackData *attributeData, void *data); +typedef struct VCGeometry_CallbackData VCGeometry_CallbackData; +typedef void (*VCGeometry_Func) (VCGeometry_CallbackData *attributeData, void *data); +typedef struct VCText_CallbackData VCText_CallbackData; +typedef void (*VCText_Func) (VCText_CallbackData *attributeData, void *data); +typedef struct VCConnectionList_CallbackData VCConnectionList_CallbackData; +typedef void (*VCConnectionList_Func) (VCConnectionList_CallbackData *attributeData, void *data); + + +typedef struct VCDynamicVisual_Traverse VCDynamicVisual_Traverse; +typedef struct VCLod_Traverse VCLod_Traverse; +typedef struct VCGeogroup_Traverse VCGeogroup_Traverse; +typedef struct VCGeometry_Traverse VCGeometry_Traverse; + +typedef enum { + VC_GEOMETRY_ALL=0x10, + VC_SPHERELIST=VC_GEOMETRY_TYPE_SPHERELIST, + VC_TRISTRIP=VC_GEOMETRY_TYPE_TRISTRIP, + VC_POLYSTRIP=VC_GEOMETRY_TYPE_POLYSTRIP, + VC_POLYGON=VC_GEOMETRY_TYPE_POLYGON, + VC_STRING=VC_GEOMETRY_TYPE_TEXT, + VC_VECTOR=VC_GEOMETRY_TYPE_LINE, + VC_PMESH=VC_GEOMETRY_TYPE_PMESH +} VCGeometry_Type; + +typedef enum { + VC_VERTEX_ALL = 0xff, + VC_VERTEX_XYZ = VC_GEOGROUP_VERTEX_ONLY, + VC_VERTEX_N =(VC_GEOGROUP_VERTEX_ONLY | VC_GEOGROUP_VERTEX_NORMALS), + VC_VERTEX_RGBA =(VC_GEOGROUP_VERTEX_ONLY | VC_GEOGROUP_VERTEX_RGBA), + VC_VERTEX_LA =(VC_GEOGROUP_VERTEX_ONLY | VC_GEOGROUP_VERTEX_LUMINANCE), + VC_VERTEX_UV =(VC_GEOGROUP_VERTEX_ONLY | VC_GEOGROUP_VERTEX_2D_TEXTURE), + VC_VERTEX_UVW =(VC_GEOGROUP_VERTEX_ONLY | VC_GEOGROUP_VERTEX_3D_TEXTURE), + VC_VERTEX_NUV =(VC_GEOGROUP_VERTEX_ONLY | VC_GEOGROUP_VERTEX_NORMALS | VC_GEOGROUP_VERTEX_2D_TEXTURE), + VC_VERTEX_RGBAUV =(VC_GEOGROUP_VERTEX_ONLY | VC_GEOGROUP_VERTEX_RGBA | VC_GEOGROUP_VERTEX_2D_TEXTURE), + VC_VERTEX_LAUV =(VC_GEOGROUP_VERTEX_ONLY | VC_GEOGROUP_VERTEX_LUMINANCE | VC_GEOGROUP_VERTEX_2D_TEXTURE), + VC_VERTEX_SPHERE =(VC_GEOGROUP_VERTEX_ONLY | VC_GEOGROUP_VERTEX_RADIUS) +} VCVertex_Type; + +typedef float VCVertexXYZ[3]; +typedef float VCVertexN[6]; +typedef float VCVertexRGBA[7]; +typedef float VCVertexLA[5]; +typedef float VCVertexUV[5]; +typedef float VCVertexUVW[6]; +typedef float VCVertexNUV[8]; +typedef float VCVertexRGBAUV[9]; +typedef float VCVertexLAUV[7]; +typedef float VCVertexSphere[4]; + +typedef float *VCVertex; +typedef uint32 *VCConnection; + +typedef void (*VCDynamicVisual_TraverseFunc) (VCDynamicVisual *item, void *data); +typedef void (*VCLod_TraverseFunc) (VCLod *item, void *data); +typedef void (*VCGeogroup_TraverseFunc) (VCGeogroup *item, void *data); +typedef void (*VCGeometry_TraverseFunc) (VCGeometry *item, void *data); + +/* structures */ + +typedef struct { + uint32 faceCount; + uint32 noConnections; + VCConnection data; +} VCConnectionData; + +typedef struct { + VCConnectionList *connection; + int currentIndex, size, total, currentConnection; + VCConnectionData *connectData; + VCConnection data; +} VCConnection_Reference; + +typedef struct { + VCGeometry *geometry; + int currentIndex, size; + float distance; + VCVertex data; +} VCVertex_Reference; + +typedef struct { + float min[3]; + float max[3]; + float center[3]; +} VCGeometry_BoundBox; + +struct VCDynamicVisual +{ + + InstanceNo ino; + char *name; + uint32 status; + uint32 cacheMode; + void *instanceData; + uint32 instanceDataSize; + uint32 instanceDataCount; + VCUserDataList *userDataList; + VCCallbackFunctions *createFunctionList; + VCCallbackFunctions *deleteFunctionList; + VCCallbackFunctions *updateFunctionList; + void *createCallbackHandle; + void *updateCallbackHandle; + void *deleteCallbackHandle; + + VCLod *lod; /* pointer to child LOD */ + void *octreeData; /* for future expansion */ + VCAttribute *attribute; /* pointer to parent */ + +}; + +struct VCLod +{ + + InstanceNo ino; + char *name; + uint32 status; + uint32 cacheMode; + void *instanceData; + uint32 instanceDataSize; + uint32 instanceDataCount; + VCUserDataList *userDataList; + VCCallbackFunctions *createFunctionList; + VCCallbackFunctions *deleteFunctionList; + VCCallbackFunctions *updateFunctionList; + void *createCallbackHandle; + void *updateCallbackHandle; + void *deleteCallbackHandle; + + VCLod *next; /* LODs implemented as linked list */ + VCGeogroup *geogroup; /* pointer to child geogroup */ + void *octreeData; /* for future expansion */ + struct VCDynamicVisual *dvisual; /* pointer to parent */ + +}; + +struct VCGeogroup +{ + + InstanceNo ino; + char *name; + uint32 status; + uint32 cacheMode; + void *instanceData; + uint32 instanceDataSize; + uint32 instanceDataCount; + VCUserDataList *userDataList; + VCCallbackFunctions *createFunctionList; + VCCallbackFunctions *deleteFunctionList; + VCCallbackFunctions *updateFunctionList; + void *createCallbackHandle; + void *updateCallbackHandle; + void *deleteCallbackHandle; + + VCGeogroup *next; /* GEOGROUPs implemented as linked list */ + VCGeometry *geometry; /* pointer to child geometry */ + void *octreeData; /* for future expansion */ + VCGeometry_BoundBox *boundingBox; /* define extents of attached geometry */ + VCLod *lod; /* pointer to parent */ + VCVertex_Type vertexFormat; /* copy of geogroup setting */ + +}; + +struct VCGeometry +{ + + InstanceNo ino; + char *name; + uint32 status; + uint32 cacheMode; + void *instanceData; + uint32 instanceDataSize; + uint32 instanceDataCount; + VCUserDataList *userDataList; + VCCallbackFunctions *createFunctionList; + VCCallbackFunctions *deleteFunctionList; + VCCallbackFunctions *updateFunctionList; + void *createCallbackHandle; + void *updateCallbackHandle; + void *deleteCallbackHandle; + + VCGeometry *next; /* GEOMETRY implemented as linked list */ + void *octreeData; /* for future expansion */ + VCGeogroup *geogroup; /* pointer to parent */ + + VCGeometry_Type type; /* used to extract instanceData */ + VCVertex_Type vertexFormat; /* copy of geogroup setting */ + VCGeometry_BoundBox *boundingBox; /* define extents of attached geometry */ + VCConnectionList *connectionList; /* linked list for Pmeshes */ + +}; + +struct VCConnectionList +{ + + InstanceNo ino; + char *name; + uint32 status; + uint32 cacheMode; + void *instanceData; + uint32 instanceDataSize; + uint32 instanceDataCount; + VCUserDataList *userDataList; + VCCallbackFunctions *createFunctionList; + VCCallbackFunctions *deleteFunctionList; + VCCallbackFunctions *updateFunctionList; + void *createCallbackHandle; + void *updateCallbackHandle; + void *deleteCallbackHandle; + + VCConnectionData *connectData; + VCGeometry *geometry; /* pointer to parent */ + +}; + +struct VCDynamicVisual_CallbackData { + VCDynamicVisual *dvisual; +}; + +struct VCLod_CallbackData { + VCLod *lod; +}; + +struct VCGeogroup_CallbackData { + VCGeogroup *geogroup; +}; + +struct VCGeometry_CallbackData { + VCGeometry *geometry; +}; + +struct VCText_CallbackData { + VCGeometry *geometry; +}; + +struct VCConnectionList_CallbackData { + VCConnectionList *connectionList; + VCGeometry *geometry; +}; + +struct VCDynamicVisual_Traverse { + VCDynamicVisual *dvisual; + VCLod *current; +}; + +struct VCLod_Traverse { + VCLod *lod; + VCGeogroup *current; + VCVertex_Type search; +}; + +struct VCGeogroup_Traverse { + VCGeogroup *geogroup; + VCGeometry *current; + VCGeometry_Type search; +}; + +struct VCGeometry_Traverse { + VCGeometry *geometry; + VCConnectionList *current; +}; + + +/* macros */ + + +#define VCSphereList_Delete(g) VCGeometry_Delete(g) +#define VCSphereList_ModifyVertexList(g) VCGeometry_Modify(g) +#define VCSphereList_Flush(g) VCGeometry_Flush(g) +#define VCSphereList_Create(n,v) VCGeometry_Create(VC_SPHERELIST, \ + VC_VERTEX_SPHERE,n,v,0,NULL) +#define VCGeogroup_AddSphereList(g, n,v) VCGeogroup_AddGeometry(g, \ + VC_SPHERELIST,\ + VC_VERTEX_SPHERE,n,v,0,NULL) + +#define VCPolystrip_Delete(g) VCGeometry_Delete(g) +#define VCPolystrip_ModifyVertexList(g) VCGeometry_Modify(g) +#define VCPolystrip_Flush(g) VCGeometry_Flush(g) +#define VCPolystrip_Create(t,n,v) VCGeometry_Create(VC_POLYSTRIP, \ + t,n,v,0,NULL) +#define VCGeogroup_AddPolystrip(g,t,n,v) VCGeogroup_AddGeometry(g, \ + VC_POLYSTRIP,\ + t,n,v,0,NULL) + +#define VCTristrip_Delete(g) VCGeometry_Delete(g) +#define VCTristrip_ModifyVertexList(g) VCGeometry_Modify(g) +#define VCTristrip_Flush(g) VCGeometry_Flush(g) +#define VCTristrip_Create(t,n,v) VCGeometry_Create(VC_TRISTRIP, \ + t,n,v,0,NULL) +#define VCGeogroup_AddTristrip(g,t,n,v) VCGeogroup_AddGeometry(g, \ + VC_TRISTRIP,\ + t,n,v,0,NULL) + +#define VCPolygon_Delete(g) VCGeometry_Delete(g) +#define VCPolygon_ModifyVertexList(g) VCGeometry_Modify(g) +#define VCPolygon_Flush(g) VCGeometry_Flush(g) +#define VCPolygon_Create(t,n,v) VCGeometry_Create(VC_POLYGON, \ + t,n,v,0,NULL) +#define VCGeogroup_AddPolygon(g,t,n,v) VCGeogroup_AddGeometry(g, \ + VC_POLYGON,\ + t,n,v,0,NULL) + +#define VCVector_Delete(g) VCGeometry_Delete(g) +#define VCVector_ModifyVertexList(g) VCGeometry_Modify(g) +#define VCVector_Flush(g) VCGeometry_Flush(g) +#define VCVector_Create(t,n,v) VCGeometry_Create(VC_VECTOR, \ + t,n,v,0,NULL) +#define VCGeogroup_AddVector(g,t,n,v) VCGeogroup_AddGeometry(g, \ + VC_VECTOR,\ + t,n,v,0,NULL) + +#define VCPmesh_Delete(g) VCGeometry_Delete(g) +#define VCPmesh_ModifyVertexList(g) VCGeometry_Modify(g) +#define VCPmesh_FlushVertexList(g) VCGeometry_Flush(g) +#define VCPmesh_Create(t,n,v,c,l) VCGeometry_Create(VC_PMESH, \ + t,n,v,c,l) +#define VCGeogroup_AddPmesh(g,t,n,v,c,l) VCGeogroup_AddGeometry(g, \ + VC_PMESH,\ + t,n,v,c,l) + +#define VCString_Delete(g) VCText_Delete(g) +#define VCString_Create(s,f,p,o,c) VCText_Create(s,-1,f,p,o,c) +#define VCString_CreateSized(s,z,f,p,o,c) VCText_Create(s,z,f,p,o,c) +#define VCGeogroup_AddString(g,s,z,f,p,o,c) VCGeogroup_AddText(g,s,z,f,p,o,c) +#define VCString_SetMode(g,m) VCText_ModifyMode(g,m,0) +#define VCString_ModifyMode(g,m,c) VCText_ModifyMode(g,m,c) +#define VCString_GetMode(g,m) VCText_GetMode(g,m) +#define VCString_GetFont(g,m) VCText_GetFont(g,m) +#define VCString_GetText(g,m) VCText_GetText(g,m) +#define VCString_GetPositionOrientationScale(g,p,o,s) VCText_GetPositionOrientationScale(g,p,o,s) +#define VCString_SetFont(g,m) VCText_SetFont(g,m) +#define VCString_SetText(g,m) VCText_SetText(g,m) +#define VCString_SetPositionOrientationScale(g,p,o,s) VCText_SetPositionOrientationScale(g,p,o,s) + +#define VCGeogroup_AttachPmesh(g,p) VCGeogroup_AttachGeometry(g,p) +#define VCGeogroup_AttachTristrip(g,p) VCGeogroup_AttachGeometry(g,p) +#define VCGeogroup_AttachPolystrip(g,p) VCGeogroup_AttachGeometry(g,p) +#define VCGeogroup_AttachPolygon(g,p) VCGeogroup_AttachGeometry(g,p) +#define VCGeogroup_AttachVector(g,p) VCGeogroup_AttachGeometry(g,p) +#define VCGeogroup_AttachString(g,p) VCGeogroup_AttachGeometry(g,p) +#define VCGeogroup_AttachSphereList(g,p) VCGeogroup_AttachGeometry(g,p) + +#define VCGeogroup_DetachPmesh(g,p) VCGeogroup_DetachGeometry(g,p) +#define VCGeogroup_DetachTristrip(g,p) VCGeogroup_DetachGeometry(g,p) +#define VCGeogroup_DetachPolystrip(g,p) VCGeogroup_DetachGeometry(g,p) +#define VCGeogroup_DetachPolygon(g,p) VCGeogroup_DetachGeometry(g,p) +#define VCGeogroup_DetachVector(g,p) VCGeogroup_DetachGeometry(g,p) +#define VCGeogroup_DetachString(g,p) VCGeogroup_DetachGeometry(g,p) +#define VCGeogroup_DetachSphereList(g,p) VCGeogroup_DetachGeometry(g,p) +#define VCEntity_AddDynamicVisual(e,v,f,b) VCEntity_AddVisual(e, NULL, v, \ + VC_VISIBLE | VC_RMODE_POLYGONAL, NULL, f, b, 0xffffffff) + +/* prototypes */ +VCDynamicVisual *VCDynamicVisual_Create(char *, uint32); +VCLod *VCDynamicVisual_AddLod(VCDynamicVisual *, char *, float, float, dmPoint); +int VCDynamicVisual_AttachLod(VCDynamicVisual *, VCLod *); +int VCDynamicVisual_DetachLod(VCDynamicVisual *, VCLod *); +VCLod *VCDynamicVisual_GetFirstLod(VCDynamicVisual *item, VCDynamicVisual_Traverse *trv); +VCLod *VCDynamicVisual_GetNextLod(VCDynamicVisual_Traverse *trv); +VCLod *VCDynamicVisual_GetIndexedLod(VCDynamicVisual *item, int index, + VCDynamicVisual_Traverse *trv); +VCLod *VCDynamicVisual_GetNamedLod(VCDynamicVisual *item, char *name, + VCDynamicVisual_Traverse *trv); +int VCDynamicVisual_ApplyPerLod(VCDynamicVisual *item, VCLod_TraverseFunc func, + void *data); +int VCDynamicVisual_ApplyPerGeogroup(VCDynamicVisual *item, VCGeogroup_TraverseFunc func, + void *data); +int VCDynamicVisual_ApplyPerGeometry(VCDynamicVisual *item, VCGeometry_TraverseFunc func, + void *data); +int VCDynamicVisual_GetNearestVertex(VCDynamicVisual *, dmPoint, float, + VCVertex_Reference *); + +VCLod *VCLod_Create(char *, float, float, dmPoint); +int VCLod_Get(VCLod *, char **, float *in, float *out, dmPoint reference); +int VCLod_Set(VCLod *lod, char *, float *in, float *out, dmPoint reference); +int VCLod_SetInOutDistance(VCLod *lod, float in, float out); +int VCLod_SetReference(VCLod *lod, dmPoint reference); +int VCLod_SetName(VCLod *lod, char *); +int VCLod_GetName(VCLod *lod, char **); +int VCLod_GetInOutDistance(VCLod *lod, float *in, float *out); +int VCLod_GetReference(VCLod *lod, dmPoint reference); +int VCLod_GetMode(VCLod *, uint32 *mode); +int VCLod_ModifyMode(VCLod *, uint32 setMode, uint32 clearMode); +int VCLod_AttachLod(VCLod *lod, VCLod *child); +int VCLod_DetachLod(VCLod *lod, VCLod *child); +int VCLod_AttachGeogroup(VCLod *lod, VCGeogroup *geogroup); +int VCLod_DetachGeogroup(VCLod *lod, VCGeogroup *geogroup); +VCGeogroup *VCLod_AddGeogroup(VCLod *lod, + VCVertex_Type, uint32, uint8, uint8, uint8, uint8, + char *, char *); +VCGeogroup *VCLod_GetFirstGeogroup(VCLod *lod, VCVertex_Type search, + VCLod_Traverse *traverse); +VCGeogroup *VCLod_GetNextGeogroup(VCLod_Traverse *traverse); +int VCLod_GetNearestVertex(VCLod *lod, dmPoint point, float dist, + VCVertex_Reference *ref); +int VCLod_ApplyPerGeogroup(VCLod *lod, VCGeogroup_TraverseFunc func, + void *data); +int VCLod_ApplyPerGeometry(VCLod *lod, VCGeometry_TraverseFunc func, + void *data); + + +VCGeogroup *VCGeogroup_Create(VCVertex_Type, uint32, uint8, uint8, uint8, uint8, + char *, char *); +int VCGeogroup_Get(VCGeogroup *group, VCVertex_Type *format, + uint32 *decal, uint8 *faceted, uint8 *lock, + uint8 *drawMode, uint8 *drawWidth, + char **fmat, char **bmat); +int VCGeogroup_Set(VCGeogroup *group, + uint32 *decal, uint8 *faceted, uint8 *lock, + uint8 *drawMode, uint8 *drawWidth, + VCVertex_Type *format, char *fmat, char *bmat); +int VCGeogroup_SetFrontMaterial(VCGeogroup *group, char *fmat); +int VCGeogroup_SetBackMaterial(VCGeogroup *group, char *bmat); +int VCGeogroup_SetMaterialAll(VCGeogroup *group, char *fmat, char *bmat); +int VCGeogroup_SetVertexFormat(VCGeogroup *group, VCVertex_Type format); +int VCGeogroup_SetMode(VCGeogroup *group, uint32 mode); +int VCGeogroup_ModifyMode(VCGeogroup *group, uint32 setMode, uint32 clearMode); +int VCGeogroup_GetMode(VCGeogroup *group, uint32 *mode); +int VCGeogroup_GetFrontMaterial(VCGeogroup *group, char **fmat); +int VCGeogroup_GetBackMaterial(VCGeogroup *group, char **bmat); +int VCGeogroup_GetMaterialAll(VCGeogroup *group, char **fmat, char **bmat); +int VCGeogroup_GetVertexFormat(VCGeogroup *group, VCVertex_Type *format); +int VCGeogroup_AttachGeometry(VCGeogroup *geogroup, VCGeometry *geometry); +int VCGeogroup_DetachGeometry(VCGeogroup *geogroup, VCGeometry *geometry); +VCGeometry *VCGeogroup_GetFirstGeometry(VCGeogroup *geogroup, VCGeometry_Type search, + VCGeogroup_Traverse *traverse); +VCGeometry *VCGeogroup_GetNextGeometry(VCGeogroup_Traverse *traverse); +int VCGeogroup_SetBoundBox(VCGeogroup *geogroup, VCGeometry_BoundBox *bbox); +int VCGeogroup_GetNearestVertex(VCGeogroup *geogroup, dmPoint point, float dist, + VCVertex_Reference *ref); +int VCGeogroup_ApplyPerGeometry(VCGeogroup *group, VCGeometry_TraverseFunc func, + void *data); + +VCGeometry *VCGeometry_Create(VCGeometry_Type, VCVertex_Type, uint32, VCVertex, + uint32, VCConnectionData *); +int VCGeometry_Get(VCGeometry *geometry, uint32 *mode, uint32 *noVertices); +int VCGeometry_Set(VCGeometry *geometry, uint32 setMode, uint32 clearMode, + uint32 noVertices, VCVertex data); +int VCPmesh_SetVertexList(VCGeometry *geometry, uint32 noVertices, VCVertex data); +int VCPmesh_GetNoVertices(VCGeometry *geometry, uint32 *noVertices); +int VCTristrip_SetVertexList(VCGeometry *geometry, uint32 noVertices, VCVertex data); +int VCTristrip_GetNoVertices(VCGeometry *geometry, uint32 *noVertices); +int VCPolystrip_SetVertexList(VCGeometry *geometry, uint32 noVertices, VCVertex data); +int VCPolystrip_GetNoVertices(VCGeometry *geometry, uint32 *noVertices); +int VCPolygon_SetVertexList(VCGeometry *geometry, uint32 noVertices, VCVertex data); +int VCPolygon_GetNoVertices(VCGeometry *geometry, uint32 *noVertices); +int VCVector_SetVertexList(VCGeometry *geometry, uint32 noVertices, VCVertex data); +int VCVector_SetThickness(VCGeometry *geometry, uint32 thickness); +int VCVector_GetThickness(VCGeometry *geometry, uint32 *thick); +int VCVector_GetNoVertices(VCGeometry *geometry, uint32 *noVertices); +int VCSphereList_SetVertexList(VCGeometry *geometry, uint32 noVertices, VCVertex data); +int VCSphereList_SetDicingHints(VCGeometry *geometry, uint32 dice_u, uint32 dice_v); +int VCSphereList_GetDicingHints(VCGeometry *geometry, uint32 *dice_u, uint32 *dice_v); +int VCSphereList_GetNoVertices(VCGeometry *geometry, uint32 *noVertices); +int VCGeometry_Modify(VCGeometry *geometry, uint32 noVertices, VCVertex data); +int VCGeometry_Flush(VCGeometry *geometry); +int VCGeometry_AttachConnectionList(VCGeometry *geom, VCConnectionList *connect); +int VCGeometry_GetFirstVertex(VCGeometry *geometry, VCVertex_Reference *ref); +int VCGeometry_GetNextVertex(VCVertex_Reference *ref); +int VCGeometry_GetIndexedVertex(VCGeometry *geometry, uint32 index, + VCVertex_Reference *ref); +VCConnectionList *VCGeometry_GetFirstConnectionList(VCGeometry *geometry, + VCGeometry_Traverse *traverse); +VCConnectionList *VCGeometry_GetNextConnectionList(VCGeometry_Traverse *traverse); +int VCGeometry_SetBoundBox(VCGeometry *geometry, VCGeometry_BoundBox *box); +int VCGeometry_GetNearestVertex(VCGeometry *geometry, dmPoint point, float dist, + VCVertex_Reference *ref); + +VCGeometry *VCText_Create(char *, uint32, uint8, dmPoint, dmEuler, dmScale); +int VCText_ModifyMode(VCGeometry *geometry, uint32 setMode, uint32 clearMode); +int VCText_Set(VCGeometry *geometry, uint8 *font, dmPoint pos, + dmEuler orient, dmScale scale, char *text); +int VCText_Get(VCGeometry *geometry, uint8 *font, dmPoint pos, dmEuler orient, + dmScale scale, char **text); +int VCText_GetMode(VCGeometry *geometry, uint32 *mode); +int VCText_SetFont(VCGeometry *geometry, uint8 font); +int VCText_SetPositionOrientationScale(VCGeometry *geometry, dmPoint pos, + dmEuler orient, dmScale scale); +int VCText_SetText(VCGeometry *geometry, char *text); +int VCText_GetFont(VCGeometry *geometry, uint8 *font); +int VCText_GetPositionOrientationScale(VCGeometry *geometry, dmPoint pos, + dmEuler orient, dmScale scale); +int VCText_GetText(VCGeometry *geometry, char **text); + +VCConnectionList *VCConnectionList_Create(uint32, VCConnectionData *); +int VCConnectionList_Get(VCConnectionList *connect, uint32 *noConnections, VCConnectionData **); +VCConnectionList *VCPmesh_AddConnectionList(VCGeometry *, uint32, VCConnectionData *); +int VCConnectionList_GetFirstConnection(VCConnectionList *connect, + VCConnection_Reference *ref); +int VCConnectionList_GetNextConnection(VCConnection_Reference *ref); +int VCPmesh_GetConnectionData(VCGeometry *, uint32 *, VCConnectionData **); +int VCPmesh_GetFirstConnection(VCGeometry *, VCConnection_Reference *); +int VCPmesh_GetNextConnection(VCConnection_Reference *); + +#endif diff --git a/CODE/RP/MUNGA_L4/libDPL/dvs/VCELEMEN.H b/CODE/RP/MUNGA_L4/libDPL/dvs/VCELEMEN.H new file mode 100644 index 0000000..f809685 --- /dev/null +++ b/CODE/RP/MUNGA_L4/libDPL/dvs/VCELEMEN.H @@ -0,0 +1,840 @@ +/* + * WARNING: machine generated code. + * + * do NOT edit this file, edit the + * original '.epp' file and regenerate this + * one. + */ + +#ifndef ____VCELEMEN_H +#define ____VCELEMEN_H + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Instance number access macros. + */ +#define VL_VCObjectPosition_vcPos_ino(x) ((x)+1) +#define VL_VCObjectPosition_parent_ino(x) ((x)+2) +#define VL_VCObject_pos_ino(x) ((x)+1) +#define VL_VCObject_pos_vcPos_ino(x) ((x)+2) +#define VL_VCObject_pos_parent_ino(x) ((x)+3) +#define VL_VCObject_attributes_ino(x) ((x)+4) +#define VL_VCGeometry_header_ino(x) ((x)+1) +#define VL_VCGeometry_vertices_ino(x) ((x)+2) +#define VL_VCText_header_ino(x) ((x)+1) +#define VL_VCText_text_ino(x) ((x)+2) +#define VL_VCConnectionList_header_ino(x) ((x)+1) +#define VL_VCConnectionList_connections_ino(x) ((x)+2) + + + +/* + * Generated function declarations. + */ +extern int32 ModuleVCInit ( void ); + +extern InstanceNo (VLCreateVCTime)(VCTime *data, VLTime *time, VLUpdateMode mode); +extern VLStatus (VLDeleteVCTime)(InstanceNo ino, VLUpdateMode mode); +extern VLStatus (VLUpdateVCTime)(InstanceNo ino, VCTime *data, VLTime *time, VLUpdateMode mode); +extern VLStatus (VLExtractVCTime)(InstanceNo ino , VCTime *data, VLTime *utime); + +extern InstanceNo (VLCreateVCColour)(float32 *data, VLTime *time, VLUpdateMode mode); +extern VLStatus (VLDeleteVCColour)(InstanceNo ino, VLUpdateMode mode); +extern VLStatus (VLUpdateVCColour)(InstanceNo ino, float32 *data, VLTime *time, VLUpdateMode mode); +extern VLStatus (VLExtractVCColour)(InstanceNo ino , float32 *data, VLTime *utime); + +extern InstanceNo (VLCreate_VCPosition)(_VCPosition *data, VLTime *time, VLUpdateMode mode); +extern VLStatus (VLDelete_VCPosition)(InstanceNo ino, VLUpdateMode mode); +extern VLStatus (VLUpdate_VCPosition)(InstanceNo ino, _VCPosition *data, VLTime *time, VLUpdateMode mode); +extern VLStatus (VLExtract_VCPosition)(InstanceNo ino , _VCPosition *data, VLTime *utime); + +extern InstanceNo (VLCreate_VCObjectPosition)(_VCObjectPosition *data, VLTime *time, VLUpdateMode mode); +extern VLStatus (VLDelete_VCObjectPosition)(InstanceNo ino, VLUpdateMode mode); +extern VLStatus (VLUpdate_VCObjectPosition)(InstanceNo ino, _VCObjectPosition *data, VLTime *time, VLUpdateMode mode); +extern VLStatus (VLExtract_VCObjectPosition)(InstanceNo ino , _VCObjectPosition *data, VLTime *utime); + +extern VLStatus (VLUpdate_VCObjectPosition_vcPos)(InstanceNo ino, _VCPosition *data, VLTime *time, VLUpdateMode mode); +extern VLStatus (VLExtract_VCObjectPosition_vcPos)(InstanceNo ino , _VCPosition *data, VLTime *utime); + +extern VLStatus (VLUpdate_VCObjectPosition_parent)(InstanceNo ino, uint32 *data, VLTime *time, VLUpdateMode mode); +extern VLStatus (VLExtract_VCObjectPosition_parent)(InstanceNo ino , uint32 *data, VLTime *utime); + +extern InstanceNo (VLCreate_VCObject)(_VCObject *data, VLTime *time, VLUpdateMode mode); +extern VLStatus (VLDelete_VCObject)(InstanceNo ino, VLUpdateMode mode); +extern VLStatus (VLUpdate_VCObject)(InstanceNo ino, _VCObject *data, VLTime *time, VLUpdateMode mode); +extern VLStatus (VLExtract_VCObject)(InstanceNo ino , _VCObject *data, VLTime *utime); + +extern VLStatus (VLUpdate_VCObject_pos)(InstanceNo ino, _VCObjectPosition *data, VLTime *time, VLUpdateMode mode); +extern VLStatus (VLExtract_VCObject_pos)(InstanceNo ino , _VCObjectPosition *data, VLTime *utime); + +extern VLStatus (VLUpdate_VCObject_pos_vcPos)(InstanceNo ino, _VCPosition *data, VLTime *time, VLUpdateMode mode); +extern VLStatus (VLExtract_VCObject_pos_vcPos)(InstanceNo ino , _VCPosition *data, VLTime *utime); + +extern VLStatus (VLUpdate_VCObject_pos_parent)(InstanceNo ino, uint32 *data, VLTime *time, VLUpdateMode mode); +extern VLStatus (VLExtract_VCObject_pos_parent)(InstanceNo ino , uint32 *data, VLTime *utime); + +extern VLStatus (VLUpdate_VCObject_attributes)(InstanceNo ino, uint32 *data, VLTime *time, VLUpdateMode mode); +extern VLStatus (VLExtract_VCObject_attributes)(InstanceNo ino , uint32 *data, VLTime *utime); + +extern InstanceNo (VLCreate_VCConstraints)(_VCConstraints *data, VLTime *time, VLUpdateMode mode); +extern VLStatus (VLDelete_VCConstraints)(InstanceNo ino, VLUpdateMode mode); +extern VLStatus (VLUpdate_VCConstraints)(InstanceNo ino, _VCConstraints *data, VLTime *time, VLUpdateMode mode); +extern VLStatus (VLExtract_VCConstraints)(InstanceNo ino , _VCConstraints *data, VLTime *utime); + +extern InstanceNo (VLCreate_VCZone)(_VCZone *data, VLTime *time, VLUpdateMode mode); +extern VLStatus (VLDelete_VCZone)(InstanceNo ino, VLUpdateMode mode); +extern VLStatus (VLUpdate_VCZone)(InstanceNo ino, _VCZone *data, VLTime *time, VLUpdateMode mode); +extern VLStatus (VLExtract_VCZone)(InstanceNo ino , _VCZone *data, VLTime *utime); + +extern InstanceNo (VLCreate_VCVisualMonitor)(_VCVisualMonitor *data, VLTime *time, VLUpdateMode mode, int32 count); +extern VLStatus (VLDelete_VCVisualMonitor)(InstanceNo ino, VLUpdateMode mode); +extern VLStatus (VLUpdate_VCVisualMonitor)(InstanceNo ino, _VCVisualMonitor *data, VLTime *time, VLUpdateMode mode, uint32 count); +extern VLStatus (VLExtract_VCVisualMonitor)(InstanceNo ino , _VCVisualMonitor *data, VLTime *utime); + +extern InstanceNo (VLCreate_VCConfigRequest)(_VCConfigRequest *data, VLTime *time, VLUpdateMode mode, int32 count); +extern VLStatus (VLDelete_VCConfigRequest)(InstanceNo ino, VLUpdateMode mode); +extern VLStatus (VLUpdate_VCConfigRequest)(InstanceNo ino, _VCConfigRequest *data, VLTime *time, VLUpdateMode mode, uint32 count); +extern VLStatus (VLExtract_VCConfigRequest)(InstanceNo ino , _VCConfigRequest *data, VLTime *utime); + +extern InstanceNo (VLCreate_VCConfigReply)(_VCConfigReply *data, VLTime *time, VLUpdateMode mode, int32 count); +extern VLStatus (VLDelete_VCConfigReply)(InstanceNo ino, VLUpdateMode mode); +extern VLStatus (VLUpdate_VCConfigReply)(InstanceNo ino, _VCConfigReply *data, VLTime *time, VLUpdateMode mode, uint32 count); +extern VLStatus (VLExtract_VCConfigReply)(InstanceNo ino , _VCConfigReply *data, VLTime *utime); + +extern InstanceNo (VLCreate_VCUser)(_VCUser *data, VLTime *time, VLUpdateMode mode, int32 count); +extern VLStatus (VLDelete_VCUser)(InstanceNo ino, VLUpdateMode mode); +extern VLStatus (VLUpdate_VCUser)(InstanceNo ino, _VCUser *data, VLTime *time, VLUpdateMode mode, uint32 count); +extern VLStatus (VLExtract_VCUser)(InstanceNo ino , _VCUser *data, VLTime *utime); + +extern InstanceNo (VLCreate_VCResource)(_VCResource *data, VLTime *time, VLUpdateMode mode, int32 count); +extern VLStatus (VLDelete_VCResource)(InstanceNo ino, VLUpdateMode mode); +extern VLStatus (VLUpdate_VCResource)(InstanceNo ino, _VCResource *data, VLTime *time, VLUpdateMode mode, uint32 count); +extern VLStatus (VLExtract_VCResource)(InstanceNo ino , _VCResource *data, VLTime *utime); + +extern InstanceNo (VLCreate_VCResourceRequest)(_VCResourceRequest *data, VLTime *time, VLUpdateMode mode); +extern VLStatus (VLDelete_VCResourceRequest)(InstanceNo ino, VLUpdateMode mode); +extern VLStatus (VLUpdate_VCResourceRequest)(InstanceNo ino, _VCResourceRequest *data, VLTime *time, VLUpdateMode mode); +extern VLStatus (VLExtract_VCResourceRequest)(InstanceNo ino , _VCResourceRequest *data, VLTime *utime); + +extern InstanceNo (VLCreate_VCAudio)(_VCAudio *data, VLTime *time, VLUpdateMode mode, int32 count); +extern VLStatus (VLDelete_VCAudio)(InstanceNo ino, VLUpdateMode mode); +extern VLStatus (VLUpdate_VCAudio)(InstanceNo ino, _VCAudio *data, VLTime *time, VLUpdateMode mode, uint32 count); +extern VLStatus (VLExtract_VCAudio)(InstanceNo ino , _VCAudio *data, VLTime *utime); + +extern InstanceNo (VLCreate_VCRadiator)(_VCRadiator *data, VLTime *time, VLUpdateMode mode); +extern VLStatus (VLDelete_VCRadiator)(InstanceNo ino, VLUpdateMode mode); +extern VLStatus (VLUpdate_VCRadiator)(InstanceNo ino, _VCRadiator *data, VLTime *time, VLUpdateMode mode); +extern VLStatus (VLExtract_VCRadiator)(InstanceNo ino , _VCRadiator *data, VLTime *utime); + +extern InstanceNo (VLCreate_VCAudioResource)(_VCAudioResource *data, VLTime *time, VLUpdateMode mode, int32 count); +extern VLStatus (VLDelete_VCAudioResource)(InstanceNo ino, VLUpdateMode mode); +extern VLStatus (VLUpdate_VCAudioResource)(InstanceNo ino, _VCAudioResource *data, VLTime *time, VLUpdateMode mode, uint32 count); +extern VLStatus (VLExtract_VCAudioResource)(InstanceNo ino , _VCAudioResource *data, VLTime *utime); + +extern InstanceNo (VLCreate_VCVisual)(_VCVisual *data, VLTime *time, VLUpdateMode mode, int32 count); +extern VLStatus (VLDelete_VCVisual)(InstanceNo ino, VLUpdateMode mode); +extern VLStatus (VLUpdate_VCVisual)(InstanceNo ino, _VCVisual *data, VLTime *time, VLUpdateMode mode, uint32 count); +extern VLStatus (VLExtract_VCVisual)(InstanceNo ino , _VCVisual *data, VLTime *utime); + +extern InstanceNo (VLCreate_VCMaterial)(_VCMaterial *data, VLTime *time, VLUpdateMode mode, int32 count); +extern VLStatus (VLDelete_VCMaterial)(InstanceNo ino, VLUpdateMode mode); +extern VLStatus (VLUpdate_VCMaterial)(InstanceNo ino, _VCMaterial *data, VLTime *time, VLUpdateMode mode, uint32 count); +extern VLStatus (VLExtract_VCMaterial)(InstanceNo ino , _VCMaterial *data, VLTime *utime); + +extern InstanceNo (VLCreate_VCRamp)(_VCRamp *data, VLTime *time, VLUpdateMode mode, int32 count); +extern VLStatus (VLDelete_VCRamp)(InstanceNo ino, VLUpdateMode mode); +extern VLStatus (VLUpdate_VCRamp)(InstanceNo ino, _VCRamp *data, VLTime *time, VLUpdateMode mode, uint32 count); +extern VLStatus (VLExtract_VCRamp)(InstanceNo ino , _VCRamp *data, VLTime *utime); + +extern InstanceNo (VLCreate_VCTexture)(_VCTexture *data, VLTime *time, VLUpdateMode mode, int32 count); +extern VLStatus (VLDelete_VCTexture)(InstanceNo ino, VLUpdateMode mode); +extern VLStatus (VLUpdate_VCTexture)(InstanceNo ino, _VCTexture *data, VLTime *time, VLUpdateMode mode, uint32 count); +extern VLStatus (VLExtract_VCTexture)(InstanceNo ino , _VCTexture *data, VLTime *utime); + +extern InstanceNo (VLCreate_VCLight)(_VCLight *data, VLTime *time, VLUpdateMode mode); +extern VLStatus (VLDelete_VCLight)(InstanceNo ino, VLUpdateMode mode); +extern VLStatus (VLUpdate_VCLight)(InstanceNo ino, _VCLight *data, VLTime *time, VLUpdateMode mode); +extern VLStatus (VLExtract_VCLight)(InstanceNo ino , _VCLight *data, VLTime *utime); + +extern InstanceNo (VLCreate_VCVisualResource)(_VCVisualResource *data, VLTime *time, VLUpdateMode mode, int32 count); +extern VLStatus (VLDelete_VCVisualResource)(InstanceNo ino, VLUpdateMode mode); +extern VLStatus (VLUpdate_VCVisualResource)(InstanceNo ino, _VCVisualResource *data, VLTime *time, VLUpdateMode mode, uint32 count); +extern VLStatus (VLExtract_VCVisualResource)(InstanceNo ino , _VCVisualResource *data, VLTime *utime); + +extern InstanceNo (VLCreate_VCVisualViewResource)(_VCVisualViewResource *data, VLTime *time, VLUpdateMode mode, int32 count); +extern VLStatus (VLDelete_VCVisualViewResource)(InstanceNo ino, VLUpdateMode mode); +extern VLStatus (VLUpdate_VCVisualViewResource)(InstanceNo ino, _VCVisualViewResource *data, VLTime *time, VLUpdateMode mode, uint32 count); +extern VLStatus (VLExtract_VCVisualViewResource)(InstanceNo ino , _VCVisualViewResource *data, VLTime *utime); + +extern InstanceNo (VLCreate_VCIntersectionReport)(_VCIntersectionReport *data, VLTime *time, VLUpdateMode mode); +extern VLStatus (VLDelete_VCIntersectionReport)(InstanceNo ino, VLUpdateMode mode); +extern VLStatus (VLUpdate_VCIntersectionReport)(InstanceNo ino, _VCIntersectionReport *data, VLTime *time, VLUpdateMode mode); +extern VLStatus (VLExtract_VCIntersectionReport)(InstanceNo ino , _VCIntersectionReport *data, VLTime *utime); + +extern InstanceNo (VLCreate_VCIntersectionState)(_VCIntersectionState *data, VLTime *time, VLUpdateMode mode, int32 count); +extern VLStatus (VLDelete_VCIntersectionState)(InstanceNo ino, VLUpdateMode mode); +extern VLStatus (VLUpdate_VCIntersectionState)(InstanceNo ino, _VCIntersectionState *data, VLTime *time, VLUpdateMode mode, uint32 count); +extern VLStatus (VLExtract_VCIntersectionState)(InstanceNo ino , _VCIntersectionState *data, VLTime *utime); + +extern InstanceNo (VLCreate_VCVectorIntersect)(_VCVectorIntersect *data, VLTime *time, VLUpdateMode mode); +extern VLStatus (VLDelete_VCVectorIntersect)(InstanceNo ino, VLUpdateMode mode); +extern VLStatus (VLUpdate_VCVectorIntersect)(InstanceNo ino, _VCVectorIntersect *data, VLTime *time, VLUpdateMode mode); +extern VLStatus (VLExtract_VCVectorIntersect)(InstanceNo ino , _VCVectorIntersect *data, VLTime *utime); + +extern InstanceNo (VLCreate_VCVisualEffect)(_VCVisualEffect *data, VLTime *time, VLUpdateMode mode, int32 count); +extern VLStatus (VLDelete_VCVisualEffect)(InstanceNo ino, VLUpdateMode mode); +extern VLStatus (VLUpdate_VCVisualEffect)(InstanceNo ino, _VCVisualEffect *data, VLTime *time, VLUpdateMode mode, uint32 count); +extern VLStatus (VLExtract_VCVisualEffect)(InstanceNo ino , _VCVisualEffect *data, VLTime *utime); + +extern InstanceNo (VLCreate_VCDynamicVisual)(_VCDynamicVisual *data, VLTime *time, VLUpdateMode mode, int32 count); +extern VLStatus (VLDelete_VCDynamicVisual)(InstanceNo ino, VLUpdateMode mode); +extern VLStatus (VLUpdate_VCDynamicVisual)(InstanceNo ino, _VCDynamicVisual *data, VLTime *time, VLUpdateMode mode, uint32 count); +extern VLStatus (VLExtract_VCDynamicVisual)(InstanceNo ino , _VCDynamicVisual *data, VLTime *utime); + +extern InstanceNo (VLCreate_VCLod)(_VCLod *data, VLTime *time, VLUpdateMode mode, int32 count); +extern VLStatus (VLDelete_VCLod)(InstanceNo ino, VLUpdateMode mode); +extern VLStatus (VLUpdate_VCLod)(InstanceNo ino, _VCLod *data, VLTime *time, VLUpdateMode mode, uint32 count); +extern VLStatus (VLExtract_VCLod)(InstanceNo ino , _VCLod *data, VLTime *utime); + +extern InstanceNo (VLCreate_VCGeogroup)(_VCGeogroup *data, VLTime *time, VLUpdateMode mode, int32 count); +extern VLStatus (VLDelete_VCGeogroup)(InstanceNo ino, VLUpdateMode mode); +extern VLStatus (VLUpdate_VCGeogroup)(InstanceNo ino, _VCGeogroup *data, VLTime *time, VLUpdateMode mode, uint32 count); +extern VLStatus (VLExtract_VCGeogroup)(InstanceNo ino , _VCGeogroup *data, VLTime *utime); + +extern InstanceNo (VLCreate_VCGeometryHeader)(_VCGeometryHeader *data, VLTime *time, VLUpdateMode mode); +extern VLStatus (VLDelete_VCGeometryHeader)(InstanceNo ino, VLUpdateMode mode); +extern VLStatus (VLUpdate_VCGeometryHeader)(InstanceNo ino, _VCGeometryHeader *data, VLTime *time, VLUpdateMode mode); +extern VLStatus (VLExtract_VCGeometryHeader)(InstanceNo ino , _VCGeometryHeader *data, VLTime *utime); + +extern InstanceNo (VLCreate_VCGeometry)(_VCGeometry *data, VLTime *time, VLUpdateMode mode, int32 count); +extern VLStatus (VLDelete_VCGeometry)(InstanceNo ino, VLUpdateMode mode); +extern VLStatus (VLUpdate_VCGeometry)(InstanceNo ino, _VCGeometry *data, VLTime *time, VLUpdateMode mode, uint32 count); +extern VLStatus (VLExtract_VCGeometry)(InstanceNo ino , _VCGeometry *data, VLTime *utime); + +extern VLStatus (VLUpdate_VCGeometry_header)(InstanceNo ino, _VCGeometryHeader *data, VLTime *time, VLUpdateMode mode); +extern VLStatus (VLExtract_VCGeometry_header)(InstanceNo ino , _VCGeometryHeader *data, VLTime *utime); + +extern VLStatus (VLUpdate_VCGeometry_vertices)(InstanceNo ino, float32 *data, VLTime *time, VLUpdateMode mode, uint32 count); +extern VLStatus (VLExtract_VCGeometry_vertices)(InstanceNo ino , float32 *data, VLTime *utime); + +extern InstanceNo (VLCreate_VCTextData)(_VCTextData *data, VLTime *time, VLUpdateMode mode, int32 count); +extern VLStatus (VLDelete_VCTextData)(InstanceNo ino, VLUpdateMode mode); +extern VLStatus (VLUpdate_VCTextData)(InstanceNo ino, _VCTextData *data, VLTime *time, VLUpdateMode mode, uint32 count); +extern VLStatus (VLExtract_VCTextData)(InstanceNo ino , _VCTextData *data, VLTime *utime); + +extern InstanceNo (VLCreate_VCText)(_VCText *data, VLTime *time, VLUpdateMode mode, int32 count); +extern VLStatus (VLDelete_VCText)(InstanceNo ino, VLUpdateMode mode); +extern VLStatus (VLUpdate_VCText)(InstanceNo ino, _VCText *data, VLTime *time, VLUpdateMode mode, uint32 count); +extern VLStatus (VLExtract_VCText)(InstanceNo ino , _VCText *data, VLTime *utime); + +extern VLStatus (VLUpdate_VCText_header)(InstanceNo ino, _VCGeometryHeader *data, VLTime *time, VLUpdateMode mode); +extern VLStatus (VLExtract_VCText_header)(InstanceNo ino , _VCGeometryHeader *data, VLTime *utime); + +extern VLStatus (VLUpdate_VCText_text)(InstanceNo ino, _VCTextData *data, VLTime *time, VLUpdateMode mode, uint32 count); +extern VLStatus (VLExtract_VCText_text)(InstanceNo ino , _VCTextData *data, VLTime *utime); + +extern InstanceNo (VLCreate_VCConnectionListHeader)(_VCConnectionListHeader *data, VLTime *time, VLUpdateMode mode); +extern VLStatus (VLDelete_VCConnectionListHeader)(InstanceNo ino, VLUpdateMode mode); +extern VLStatus (VLUpdate_VCConnectionListHeader)(InstanceNo ino, _VCConnectionListHeader *data, VLTime *time, VLUpdateMode mode); +extern VLStatus (VLExtract_VCConnectionListHeader)(InstanceNo ino , _VCConnectionListHeader *data, VLTime *utime); + +extern InstanceNo (VLCreate_VCConnectionList)(_VCConnectionList *data, VLTime *time, VLUpdateMode mode, int32 count); +extern VLStatus (VLDelete_VCConnectionList)(InstanceNo ino, VLUpdateMode mode); +extern VLStatus (VLUpdate_VCConnectionList)(InstanceNo ino, _VCConnectionList *data, VLTime *time, VLUpdateMode mode, uint32 count); +extern VLStatus (VLExtract_VCConnectionList)(InstanceNo ino , _VCConnectionList *data, VLTime *utime); + +extern VLStatus (VLUpdate_VCConnectionList_header)(InstanceNo ino, _VCConnectionListHeader *data, VLTime *time, VLUpdateMode mode); +extern VLStatus (VLExtract_VCConnectionList_header)(InstanceNo ino , _VCConnectionListHeader *data, VLTime *utime); + +extern VLStatus (VLUpdate_VCConnectionList_connections)(InstanceNo ino, uint32 *data, VLTime *time, VLUpdateMode mode, uint32 count); +extern VLStatus (VLExtract_VCConnectionList_connections)(InstanceNo ino , uint32 *data, VLTime *utime); + +extern InstanceNo (VLCreate_VCCollisionReport)(_VCCollisionReport *data, VLTime *time, VLUpdateMode mode); +extern VLStatus (VLDelete_VCCollisionReport)(InstanceNo ino, VLUpdateMode mode); +extern VLStatus (VLUpdate_VCCollisionReport)(InstanceNo ino, _VCCollisionReport *data, VLTime *time, VLUpdateMode mode); +extern VLStatus (VLExtract_VCCollisionReport)(InstanceNo ino , _VCCollisionReport *data, VLTime *utime); + +extern InstanceNo (VLCreate_VCCollisionState)(_VCCollisionState *data, VLTime *time, VLUpdateMode mode, int32 count); +extern VLStatus (VLDelete_VCCollisionState)(InstanceNo ino, VLUpdateMode mode); +extern VLStatus (VLUpdate_VCCollisionState)(InstanceNo ino, _VCCollisionState *data, VLTime *time, VLUpdateMode mode, uint32 count); +extern VLStatus (VLExtract_VCCollisionState)(InstanceNo ino , _VCCollisionState *data, VLTime *utime); + +extern InstanceNo (VLCreate_VCBoundary)(_VCBoundary *data, VLTime *time, VLUpdateMode mode, int32 count); +extern VLStatus (VLDelete_VCBoundary)(InstanceNo ino, VLUpdateMode mode); +extern VLStatus (VLUpdate_VCBoundary)(InstanceNo ino, _VCBoundary *data, VLTime *time, VLUpdateMode mode, uint32 count); +extern VLStatus (VLExtract_VCBoundary)(InstanceNo ino , _VCBoundary *data, VLTime *utime); + +extern InstanceNo (VLCreate_VCBodyPart)(_VCBodyPart *data, VLTime *time, VLUpdateMode mode, int32 count); +extern VLStatus (VLDelete_VCBodyPart)(InstanceNo ino, VLUpdateMode mode); +extern VLStatus (VLUpdate_VCBodyPart)(InstanceNo ino, _VCBodyPart *data, VLTime *time, VLUpdateMode mode, uint32 count); +extern VLStatus (VLExtract_VCBodyPart)(InstanceNo ino , _VCBodyPart *data, VLTime *utime); + +extern InstanceNo (VLCreate_VCBodyMonitor)(_VCBodyMonitor *data, VLTime *time, VLUpdateMode mode, int32 count); +extern VLStatus (VLDelete_VCBodyMonitor)(InstanceNo ino, VLUpdateMode mode); +extern VLStatus (VLUpdate_VCBodyMonitor)(InstanceNo ino, _VCBodyMonitor *data, VLTime *time, VLUpdateMode mode, uint32 count); +extern VLStatus (VLExtract_VCBodyMonitor)(InstanceNo ino , _VCBodyMonitor *data, VLTime *utime); + +extern InstanceNo (VLCreate_VCBodyFlyInfo)(_VCBodyFlyInfo *data, VLTime *time, VLUpdateMode mode); +extern VLStatus (VLDelete_VCBodyFlyInfo)(InstanceNo ino, VLUpdateMode mode); +extern VLStatus (VLUpdate_VCBodyFlyInfo)(InstanceNo ino, _VCBodyFlyInfo *data, VLTime *time, VLUpdateMode mode); +extern VLStatus (VLExtract_VCBodyFlyInfo)(InstanceNo ino , _VCBodyFlyInfo *data, VLTime *utime); + +extern InstanceNo (VLCreate_VCBody)(_VCBody *data, VLTime *time, VLUpdateMode mode, int32 count); +extern VLStatus (VLDelete_VCBody)(InstanceNo ino, VLUpdateMode mode); +extern VLStatus (VLUpdate_VCBody)(InstanceNo ino, _VCBody *data, VLTime *time, VLUpdateMode mode, uint32 count); +extern VLStatus (VLExtract_VCBody)(InstanceNo ino , _VCBody *data, VLTime *utime); + +extern InstanceNo (VLCreate_VCPickObject)(_VCPickObject *data, VLTime *time, VLUpdateMode mode); +extern VLStatus (VLDelete_VCPickObject)(InstanceNo ino, VLUpdateMode mode); +extern VLStatus (VLUpdate_VCPickObject)(InstanceNo ino, _VCPickObject *data, VLTime *time, VLUpdateMode mode); +extern VLStatus (VLExtract_VCPickObject)(InstanceNo ino , _VCPickObject *data, VLTime *utime); + +extern InstanceNo (VLCreate_VCTrackerMonitor)(_VCTrackerMonitor *data, VLTime *time, VLUpdateMode mode, int32 count); +extern VLStatus (VLDelete_VCTrackerMonitor)(InstanceNo ino, VLUpdateMode mode); +extern VLStatus (VLUpdate_VCTrackerMonitor)(InstanceNo ino, _VCTrackerMonitor *data, VLTime *time, VLUpdateMode mode, uint32 count); +extern VLStatus (VLExtract_VCTrackerMonitor)(InstanceNo ino , _VCTrackerMonitor *data, VLTime *utime); + +extern InstanceNo (VLCreate_VCCollideMonitor)(_VCCollideMonitor *data, VLTime *time, VLUpdateMode mode, int32 count); +extern VLStatus (VLDelete_VCCollideMonitor)(InstanceNo ino, VLUpdateMode mode); +extern VLStatus (VLUpdate_VCCollideMonitor)(InstanceNo ino, _VCCollideMonitor *data, VLTime *time, VLUpdateMode mode, uint32 count); +extern VLStatus (VLExtract_VCCollideMonitor)(InstanceNo ino , _VCCollideMonitor *data, VLTime *utime); + +extern InstanceNo (VLCreate_VCSensorResource)(_VCSensorResource *data, VLTime *time, VLUpdateMode mode, int32 count); +extern VLStatus (VLDelete_VCSensorResource)(InstanceNo ino, VLUpdateMode mode); +extern VLStatus (VLUpdate_VCSensorResource)(InstanceNo ino, _VCSensorResource *data, VLTime *time, VLUpdateMode mode, uint32 count); +extern VLStatus (VLExtract_VCSensorResource)(InstanceNo ino , _VCSensorResource *data, VLTime *utime); + +extern InstanceNo (VLCreate_VCTracker)(_VCTracker *data, VLTime *time, VLUpdateMode mode, int32 count); +extern VLStatus (VLDelete_VCTracker)(InstanceNo ino, VLUpdateMode mode); +extern VLStatus (VLUpdate_VCTracker)(InstanceNo ino, _VCTracker *data, VLTime *time, VLUpdateMode mode, uint32 count); +extern VLStatus (VLExtract_VCTracker)(InstanceNo ino , _VCTracker *data, VLTime *utime); + +extern InstanceNo (VLCreate_VCInputResource)(_VCInputResource *data, VLTime *time, VLUpdateMode mode, int32 count); +extern VLStatus (VLDelete_VCInputResource)(InstanceNo ino, VLUpdateMode mode); +extern VLStatus (VLUpdate_VCInputResource)(InstanceNo ino, _VCInputResource *data, VLTime *time, VLUpdateMode mode, uint32 count); +extern VLStatus (VLExtract_VCInputResource)(InstanceNo ino , _VCInputResource *data, VLTime *utime); + +extern InstanceNo (VLCreate_VCInput)(_VCInput *data, VLTime *time, VLUpdateMode mode, int32 count); +extern VLStatus (VLDelete_VCInput)(InstanceNo ino, VLUpdateMode mode); +extern VLStatus (VLUpdate_VCInput)(InstanceNo ino, _VCInput *data, VLTime *time, VLUpdateMode mode, uint32 count); +extern VLStatus (VLExtract_VCInput)(InstanceNo ino , _VCInput *data, VLTime *utime); + +extern InstanceNo (VLCreate_VCXWindowId)(_VCXWindowId *data, VLTime *time, VLUpdateMode mode, int32 count); +extern VLStatus (VLDelete_VCXWindowId)(InstanceNo ino, VLUpdateMode mode); +extern VLStatus (VLUpdate_VCXWindowId)(InstanceNo ino, _VCXWindowId *data, VLTime *time, VLUpdateMode mode, uint32 count); +extern VLStatus (VLExtract_VCXWindowId)(InstanceNo ino , _VCXWindowId *data, VLTime *utime); + +extern InstanceNo (VLCreate_VCQuery)(_VCQuery *data, VLTime *time, VLUpdateMode mode); +extern VLStatus (VLDelete_VCQuery)(InstanceNo ino, VLUpdateMode mode); +extern VLStatus (VLUpdate_VCQuery)(InstanceNo ino, _VCQuery *data, VLTime *time, VLUpdateMode mode); +extern VLStatus (VLExtract_VCQuery)(InstanceNo ino , _VCQuery *data, VLTime *utime); + +extern InstanceNo (VLCreate_VCResponse)(_VCResponse *data, VLTime *time, VLUpdateMode mode); +extern VLStatus (VLDelete_VCResponse)(InstanceNo ino, VLUpdateMode mode); +extern VLStatus (VLUpdate_VCResponse)(InstanceNo ino, _VCResponse *data, VLTime *time, VLUpdateMode mode); +extern VLStatus (VLExtract_VCResponse)(InstanceNo ino , _VCResponse *data, VLTime *utime); + +extern InstanceNo (VLCreate_VCVisualQuery)(_VCVisualQuery *data, VLTime *time, VLUpdateMode mode); +extern VLStatus (VLDelete_VCVisualQuery)(InstanceNo ino, VLUpdateMode mode); +extern VLStatus (VLUpdate_VCVisualQuery)(InstanceNo ino, _VCVisualQuery *data, VLTime *time, VLUpdateMode mode); +extern VLStatus (VLExtract_VCVisualQuery)(InstanceNo ino , _VCVisualQuery *data, VLTime *utime); + +extern InstanceNo (VLCreate_VCDynamics)(_VCDynamics *data, VLTime *time, VLUpdateMode mode); +extern VLStatus (VLDelete_VCDynamics)(InstanceNo ino, VLUpdateMode mode); +extern VLStatus (VLUpdate_VCDynamics)(InstanceNo ino, _VCDynamics *data, VLTime *time, VLUpdateMode mode); +extern VLStatus (VLExtract_VCDynamics)(InstanceNo ino , _VCDynamics *data, VLTime *utime); + +extern InstanceNo (VLCreate_VCForce)(_VCForce *data, VLTime *time, VLUpdateMode mode); +extern VLStatus (VLDelete_VCForce)(InstanceNo ino, VLUpdateMode mode); +extern VLStatus (VLUpdate_VCForce)(InstanceNo ino, _VCForce *data, VLTime *time, VLUpdateMode mode); +extern VLStatus (VLExtract_VCForce)(InstanceNo ino , _VCForce *data, VLTime *utime); + +extern InstanceNo (VLCreate_VCPseudoGravity)(_VCPseudoGravity *data, VLTime *time, VLUpdateMode mode); +extern VLStatus (VLDelete_VCPseudoGravity)(InstanceNo ino, VLUpdateMode mode); +extern VLStatus (VLUpdate_VCPseudoGravity)(InstanceNo ino, _VCPseudoGravity *data, VLTime *time, VLUpdateMode mode); +extern VLStatus (VLExtract_VCPseudoGravity)(InstanceNo ino , _VCPseudoGravity *data, VLTime *utime); + +extern InstanceNo (VLCreate_VCSync)(_VCSync *data, VLTime *time, VLUpdateMode mode, int32 count); +extern VLStatus (VLDelete_VCSync)(InstanceNo ino, VLUpdateMode mode); +extern VLStatus (VLUpdate_VCSync)(InstanceNo ino, _VCSync *data, VLTime *time, VLUpdateMode mode, uint32 count); +extern VLStatus (VLExtract_VCSync)(InstanceNo ino , _VCSync *data, VLTime *utime); + +#ifdef __VL_INLINE_ACCESS__ +#define VLCreateVCTime( d, t, m) vlCreateInstance(el_VCTime, 0, (d),(t),(m)) +#define VLDeleteVCTime(i,m) vlDeleteInstance((i),(m)) +#define VLUpdateVCTime( i, d, t, m) vlUpdateInstance((i),(d),(t),(m)) +#define VLExtractVCTime(i,d,t) vlExtractInstance((i),(d),(t)) + +#define VLCreateVCColour( d, t, m) vlCreateInstance(el_VCColour, 0, (d),(t),(m)) +#define VLDeleteVCColour(i,m) vlDeleteInstance((i),(m)) +#define VLUpdateVCColour( i, d, t, m) vlUpdateInstance((i),(d),(t),(m)) +#define VLExtractVCColour(i,d,t) vlExtractInstance((i),(d),(t)) + +#define VLCreate_VCPosition( d, t, m) vlCreateInstance(el__VCPosition, 0, (d),(t),(m)) +#define VLDelete_VCPosition(i,m) vlDeleteInstance((i),(m)) +#define VLUpdate_VCPosition( i, d, t, m) vlUpdateInstance((i),(d),(t),(m)) +#define VLExtract_VCPosition(i,d,t) vlExtractInstance((i),(d),(t)) + +#define VLCreate_VCObjectPosition( d, t, m) vlCreateInstance(el__VCObjectPosition, 0, (d),(t),(m)) +#define VLDelete_VCObjectPosition(i,m) vlDeleteInstance((i),(m)) +#define VLUpdate_VCObjectPosition( i, d, t, m) vlUpdateInstance((i),(d),(t),(m)) +#define VLExtract_VCObjectPosition(i,d,t) vlExtractInstance((i),(d),(t)) + +#define VLUpdate_VCObjectPosition_vcPos( i, d, t, m) vlUpdateInstance((i) + 1,(d),(t),(m)) +#define VLExtract_VCObjectPosition_vcPos(i, d, t) vlExtractInstance((i) + 1,(d),(t)) + + +#define VLUpdate_VCObjectPosition_parent( i, d, t, m) vlUpdateInstance((i) + 2,(d),(t),(m)) +#define VLExtract_VCObjectPosition_parent(i, d, t) vlExtractInstance((i) + 2,(d),(t)) + + +#define VLCreate_VCObject( d, t, m) vlCreateInstance(el__VCObject, 0, (d),(t),(m)) +#define VLDelete_VCObject(i,m) vlDeleteInstance((i),(m)) +#define VLUpdate_VCObject( i, d, t, m) vlUpdateInstance((i),(d),(t),(m)) +#define VLExtract_VCObject(i,d,t) vlExtractInstance((i),(d),(t)) + +#define VLUpdate_VCObject_pos( i, d, t, m) vlUpdateInstance((i) + 1,(d),(t),(m)) +#define VLExtract_VCObject_pos(i, d, t) vlExtractInstance((i) + 1,(d),(t)) + + +#define VLUpdate_VCObject_pos_vcPos( i, d, t, m) vlUpdateInstance((i) + 2,(d),(t),(m)) +#define VLExtract_VCObject_pos_vcPos(i, d, t) vlExtractInstance((i) + 2,(d),(t)) + + +#define VLUpdate_VCObject_pos_parent( i, d, t, m) vlUpdateInstance((i) + 3,(d),(t),(m)) +#define VLExtract_VCObject_pos_parent(i, d, t) vlExtractInstance((i) + 3,(d),(t)) + + +#define VLUpdate_VCObject_attributes( i, d, t, m) vlUpdateInstance((i) + 4,(d),(t),(m)) +#define VLExtract_VCObject_attributes(i, d, t) vlExtractInstance((i) + 4,(d),(t)) + + +#define VLCreate_VCConstraints( d, t, m) vlCreateInstance(el__VCConstraints, 0, (d),(t),(m)) +#define VLDelete_VCConstraints(i,m) vlDeleteInstance((i),(m)) +#define VLUpdate_VCConstraints( i, d, t, m) vlUpdateInstance((i),(d),(t),(m)) +#define VLExtract_VCConstraints(i,d,t) vlExtractInstance((i),(d),(t)) + +#define VLCreate_VCZone( d, t, m) vlCreateInstance(el__VCZone, 0, (d),(t),(m)) +#define VLDelete_VCZone(i,m) vlDeleteInstance((i),(m)) +#define VLUpdate_VCZone( i, d, t, m) vlUpdateInstance((i),(d),(t),(m)) +#define VLExtract_VCZone(i,d,t) vlExtractInstance((i),(d),(t)) + +#define VLCreate_VCVisualMonitor(d, t, m, c) vlCreateDynamicInstance(el__VCVisualMonitor,0,(d),(t),(m),(c)) +#define VLDelete_VCVisualMonitor(i,m) vlDeleteInstance((i),(m)) +#define VLUpdate_VCVisualMonitor( i, d, t, m, c) vlUpdateDynamicInstance((i),(d),(t),(m),(c)) +#define VLExtract_VCVisualMonitor(i, d, t) vlExtractInstance((i),(d),(t)) + +#define VLCreate_VCConfigRequest(d, t, m, c) vlCreateDynamicInstance(el__VCConfigRequest,0,(d),(t),(m),(c)) +#define VLDelete_VCConfigRequest(i,m) vlDeleteInstance((i),(m)) +#define VLUpdate_VCConfigRequest( i, d, t, m, c) vlUpdateDynamicInstance((i),(d),(t),(m),(c)) +#define VLExtract_VCConfigRequest(i, d, t) vlExtractInstance((i),(d),(t)) + +#define VLCreate_VCConfigReply(d, t, m, c) vlCreateDynamicInstance(el__VCConfigReply,0,(d),(t),(m),(c)) +#define VLDelete_VCConfigReply(i,m) vlDeleteInstance((i),(m)) +#define VLUpdate_VCConfigReply( i, d, t, m, c) vlUpdateDynamicInstance((i),(d),(t),(m),(c)) +#define VLExtract_VCConfigReply(i, d, t) vlExtractInstance((i),(d),(t)) + +#define VLCreate_VCUser(d, t, m, c) vlCreateDynamicInstance(el__VCUser,0,(d),(t),(m),(c)) +#define VLDelete_VCUser(i,m) vlDeleteInstance((i),(m)) +#define VLUpdate_VCUser( i, d, t, m, c) vlUpdateDynamicInstance((i),(d),(t),(m),(c)) +#define VLExtract_VCUser(i, d, t) vlExtractInstance((i),(d),(t)) + +#define VLCreate_VCResource(d, t, m, c) vlCreateDynamicInstance(el__VCResource,0,(d),(t),(m),(c)) +#define VLDelete_VCResource(i,m) vlDeleteInstance((i),(m)) +#define VLUpdate_VCResource( i, d, t, m, c) vlUpdateDynamicInstance((i),(d),(t),(m),(c)) +#define VLExtract_VCResource(i, d, t) vlExtractInstance((i),(d),(t)) + +#define VLCreate_VCResourceRequest( d, t, m) vlCreateInstance(el__VCResourceRequest, 0, (d),(t),(m)) +#define VLDelete_VCResourceRequest(i,m) vlDeleteInstance((i),(m)) +#define VLUpdate_VCResourceRequest( i, d, t, m) vlUpdateInstance((i),(d),(t),(m)) +#define VLExtract_VCResourceRequest(i,d,t) vlExtractInstance((i),(d),(t)) + +#define VLCreate_VCAudio(d, t, m, c) vlCreateDynamicInstance(el__VCAudio,0,(d),(t),(m),(c)) +#define VLDelete_VCAudio(i,m) vlDeleteInstance((i),(m)) +#define VLUpdate_VCAudio( i, d, t, m, c) vlUpdateDynamicInstance((i),(d),(t),(m),(c)) +#define VLExtract_VCAudio(i, d, t) vlExtractInstance((i),(d),(t)) + +#define VLCreate_VCRadiator( d, t, m) vlCreateInstance(el__VCRadiator, 0, (d),(t),(m)) +#define VLDelete_VCRadiator(i,m) vlDeleteInstance((i),(m)) +#define VLUpdate_VCRadiator( i, d, t, m) vlUpdateInstance((i),(d),(t),(m)) +#define VLExtract_VCRadiator(i,d,t) vlExtractInstance((i),(d),(t)) + +#define VLCreate_VCAudioResource(d, t, m, c) vlCreateDynamicInstance(el__VCAudioResource,0,(d),(t),(m),(c)) +#define VLDelete_VCAudioResource(i,m) vlDeleteInstance((i),(m)) +#define VLUpdate_VCAudioResource( i, d, t, m, c) vlUpdateDynamicInstance((i),(d),(t),(m),(c)) +#define VLExtract_VCAudioResource(i, d, t) vlExtractInstance((i),(d),(t)) + +#define VLCreate_VCVisual(d, t, m, c) vlCreateDynamicInstance(el__VCVisual,0,(d),(t),(m),(c)) +#define VLDelete_VCVisual(i,m) vlDeleteInstance((i),(m)) +#define VLUpdate_VCVisual( i, d, t, m, c) vlUpdateDynamicInstance((i),(d),(t),(m),(c)) +#define VLExtract_VCVisual(i, d, t) vlExtractInstance((i),(d),(t)) + +#define VLCreate_VCMaterial(d, t, m, c) vlCreateDynamicInstance(el__VCMaterial,0,(d),(t),(m),(c)) +#define VLDelete_VCMaterial(i,m) vlDeleteInstance((i),(m)) +#define VLUpdate_VCMaterial( i, d, t, m, c) vlUpdateDynamicInstance((i),(d),(t),(m),(c)) +#define VLExtract_VCMaterial(i, d, t) vlExtractInstance((i),(d),(t)) + +#define VLCreate_VCRamp(d, t, m, c) vlCreateDynamicInstance(el__VCRamp,0,(d),(t),(m),(c)) +#define VLDelete_VCRamp(i,m) vlDeleteInstance((i),(m)) +#define VLUpdate_VCRamp( i, d, t, m, c) vlUpdateDynamicInstance((i),(d),(t),(m),(c)) +#define VLExtract_VCRamp(i, d, t) vlExtractInstance((i),(d),(t)) + +#define VLCreate_VCTexture(d, t, m, c) vlCreateDynamicInstance(el__VCTexture,0,(d),(t),(m),(c)) +#define VLDelete_VCTexture(i,m) vlDeleteInstance((i),(m)) +#define VLUpdate_VCTexture( i, d, t, m, c) vlUpdateDynamicInstance((i),(d),(t),(m),(c)) +#define VLExtract_VCTexture(i, d, t) vlExtractInstance((i),(d),(t)) + +#define VLCreate_VCLight( d, t, m) vlCreateInstance(el__VCLight, 0, (d),(t),(m)) +#define VLDelete_VCLight(i,m) vlDeleteInstance((i),(m)) +#define VLUpdate_VCLight( i, d, t, m) vlUpdateInstance((i),(d),(t),(m)) +#define VLExtract_VCLight(i,d,t) vlExtractInstance((i),(d),(t)) + +#define VLCreate_VCVisualResource(d, t, m, c) vlCreateDynamicInstance(el__VCVisualResource,0,(d),(t),(m),(c)) +#define VLDelete_VCVisualResource(i,m) vlDeleteInstance((i),(m)) +#define VLUpdate_VCVisualResource( i, d, t, m, c) vlUpdateDynamicInstance((i),(d),(t),(m),(c)) +#define VLExtract_VCVisualResource(i, d, t) vlExtractInstance((i),(d),(t)) + +#define VLCreate_VCVisualViewResource(d, t, m, c) vlCreateDynamicInstance(el__VCVisualViewResource,0,(d),(t),(m),(c)) +#define VLDelete_VCVisualViewResource(i,m) vlDeleteInstance((i),(m)) +#define VLUpdate_VCVisualViewResource( i, d, t, m, c) vlUpdateDynamicInstance((i),(d),(t),(m),(c)) +#define VLExtract_VCVisualViewResource(i, d, t) vlExtractInstance((i),(d),(t)) + +#define VLCreate_VCIntersectionReport( d, t, m) vlCreateInstance(el__VCIntersectionReport, 0, (d),(t),(m)) +#define VLDelete_VCIntersectionReport(i,m) vlDeleteInstance((i),(m)) +#define VLUpdate_VCIntersectionReport( i, d, t, m) vlUpdateInstance((i),(d),(t),(m)) +#define VLExtract_VCIntersectionReport(i,d,t) vlExtractInstance((i),(d),(t)) + +#define VLCreate_VCIntersectionState(d, t, m, c) vlCreateDynamicInstance(el__VCIntersectionState,0,(d),(t),(m),(c)) +#define VLDelete_VCIntersectionState(i,m) vlDeleteInstance((i),(m)) +#define VLUpdate_VCIntersectionState( i, d, t, m, c) vlUpdateDynamicInstance((i),(d),(t),(m),(c)) +#define VLExtract_VCIntersectionState(i, d, t) vlExtractInstance((i),(d),(t)) + +#define VLCreate_VCVectorIntersect( d, t, m) vlCreateInstance(el__VCVectorIntersect, 0, (d),(t),(m)) +#define VLDelete_VCVectorIntersect(i,m) vlDeleteInstance((i),(m)) +#define VLUpdate_VCVectorIntersect( i, d, t, m) vlUpdateInstance((i),(d),(t),(m)) +#define VLExtract_VCVectorIntersect(i,d,t) vlExtractInstance((i),(d),(t)) + +#define VLCreate_VCVisualEffect(d, t, m, c) vlCreateDynamicInstance(el__VCVisualEffect,0,(d),(t),(m),(c)) +#define VLDelete_VCVisualEffect(i,m) vlDeleteInstance((i),(m)) +#define VLUpdate_VCVisualEffect( i, d, t, m, c) vlUpdateDynamicInstance((i),(d),(t),(m),(c)) +#define VLExtract_VCVisualEffect(i, d, t) vlExtractInstance((i),(d),(t)) + +#define VLCreate_VCDynamicVisual(d, t, m, c) vlCreateDynamicInstance(el__VCDynamicVisual,0,(d),(t),(m),(c)) +#define VLDelete_VCDynamicVisual(i,m) vlDeleteInstance((i),(m)) +#define VLUpdate_VCDynamicVisual( i, d, t, m, c) vlUpdateDynamicInstance((i),(d),(t),(m),(c)) +#define VLExtract_VCDynamicVisual(i, d, t) vlExtractInstance((i),(d),(t)) + +#define VLCreate_VCLod(d, t, m, c) vlCreateDynamicInstance(el__VCLod,0,(d),(t),(m),(c)) +#define VLDelete_VCLod(i,m) vlDeleteInstance((i),(m)) +#define VLUpdate_VCLod( i, d, t, m, c) vlUpdateDynamicInstance((i),(d),(t),(m),(c)) +#define VLExtract_VCLod(i, d, t) vlExtractInstance((i),(d),(t)) + +#define VLCreate_VCGeogroup(d, t, m, c) vlCreateDynamicInstance(el__VCGeogroup,0,(d),(t),(m),(c)) +#define VLDelete_VCGeogroup(i,m) vlDeleteInstance((i),(m)) +#define VLUpdate_VCGeogroup( i, d, t, m, c) vlUpdateDynamicInstance((i),(d),(t),(m),(c)) +#define VLExtract_VCGeogroup(i, d, t) vlExtractInstance((i),(d),(t)) + +#define VLCreate_VCGeometryHeader( d, t, m) vlCreateInstance(el__VCGeometryHeader, 0, (d),(t),(m)) +#define VLDelete_VCGeometryHeader(i,m) vlDeleteInstance((i),(m)) +#define VLUpdate_VCGeometryHeader( i, d, t, m) vlUpdateInstance((i),(d),(t),(m)) +#define VLExtract_VCGeometryHeader(i,d,t) vlExtractInstance((i),(d),(t)) + +#define VLCreate_VCGeometry(d, t, m, c) vlCreateDynamicInstance(el__VCGeometry,0,(d),(t),(m),(c)) +#define VLDelete_VCGeometry(i,m) vlDeleteInstance((i),(m)) +#define VLUpdate_VCGeometry( i, d, t, m, c) vlUpdateDynamicInstance((i),(d),(t),(m),(c)) +#define VLExtract_VCGeometry(i, d, t) vlExtractInstance((i),(d),(t)) + +#define VLUpdate_VCGeometry_header( i, d, t, m) vlUpdateInstance((i) + 1,(d),(t),(m)) +#define VLExtract_VCGeometry_header(i, d, t) vlExtractInstance((i) + 1,(d),(t)) + + +#define VLUpdate_VCGeometry_vertices( i, d, t, m,c) vlUpdateDynamicInstance((i) + 2,(d),(t),(m),(c)) +#define VLExtract_VCGeometry_vertices(i, d, t) vlExtractInstance((i) + 2,(d),(t)) + + +#define VLCreate_VCTextData(d, t, m, c) vlCreateDynamicInstance(el__VCTextData,0,(d),(t),(m),(c)) +#define VLDelete_VCTextData(i,m) vlDeleteInstance((i),(m)) +#define VLUpdate_VCTextData( i, d, t, m, c) vlUpdateDynamicInstance((i),(d),(t),(m),(c)) +#define VLExtract_VCTextData(i, d, t) vlExtractInstance((i),(d),(t)) + +#define VLCreate_VCText(d, t, m, c) vlCreateDynamicInstance(el__VCText,0,(d),(t),(m),(c)) +#define VLDelete_VCText(i,m) vlDeleteInstance((i),(m)) +#define VLUpdate_VCText( i, d, t, m, c) vlUpdateDynamicInstance((i),(d),(t),(m),(c)) +#define VLExtract_VCText(i, d, t) vlExtractInstance((i),(d),(t)) + +#define VLUpdate_VCText_header( i, d, t, m) vlUpdateInstance((i) + 1,(d),(t),(m)) +#define VLExtract_VCText_header(i, d, t) vlExtractInstance((i) + 1,(d),(t)) + + +#define VLUpdate_VCText_text( i, d, t, m,c) vlUpdateDynamicInstance((i) + 2,(d),(t),(m),(c)) +#define VLExtract_VCText_text(i, d, t) vlExtractInstance((i) + 2,(d),(t)) + + +#define VLCreate_VCConnectionListHeader( d, t, m) vlCreateInstance(el__VCConnectionListHeader, 0, (d),(t),(m)) +#define VLDelete_VCConnectionListHeader(i,m) vlDeleteInstance((i),(m)) +#define VLUpdate_VCConnectionListHeader( i, d, t, m) vlUpdateInstance((i),(d),(t),(m)) +#define VLExtract_VCConnectionListHeader(i,d,t) vlExtractInstance((i),(d),(t)) + +#define VLCreate_VCConnectionList(d, t, m, c) vlCreateDynamicInstance(el__VCConnectionList,0,(d),(t),(m),(c)) +#define VLDelete_VCConnectionList(i,m) vlDeleteInstance((i),(m)) +#define VLUpdate_VCConnectionList( i, d, t, m, c) vlUpdateDynamicInstance((i),(d),(t),(m),(c)) +#define VLExtract_VCConnectionList(i, d, t) vlExtractInstance((i),(d),(t)) + +#define VLUpdate_VCConnectionList_header( i, d, t, m) vlUpdateInstance((i) + 1,(d),(t),(m)) +#define VLExtract_VCConnectionList_header(i, d, t) vlExtractInstance((i) + 1,(d),(t)) + + +#define VLUpdate_VCConnectionList_connections( i, d, t, m,c) vlUpdateDynamicInstance((i) + 2,(d),(t),(m),(c)) +#define VLExtract_VCConnectionList_connections(i, d, t) vlExtractInstance((i) + 2,(d),(t)) + + +#define VLCreate_VCCollisionReport( d, t, m) vlCreateInstance(el__VCCollisionReport, 0, (d),(t),(m)) +#define VLDelete_VCCollisionReport(i,m) vlDeleteInstance((i),(m)) +#define VLUpdate_VCCollisionReport( i, d, t, m) vlUpdateInstance((i),(d),(t),(m)) +#define VLExtract_VCCollisionReport(i,d,t) vlExtractInstance((i),(d),(t)) + +#define VLCreate_VCCollisionState(d, t, m, c) vlCreateDynamicInstance(el__VCCollisionState,0,(d),(t),(m),(c)) +#define VLDelete_VCCollisionState(i,m) vlDeleteInstance((i),(m)) +#define VLUpdate_VCCollisionState( i, d, t, m, c) vlUpdateDynamicInstance((i),(d),(t),(m),(c)) +#define VLExtract_VCCollisionState(i, d, t) vlExtractInstance((i),(d),(t)) + +#define VLCreate_VCBoundary(d, t, m, c) vlCreateDynamicInstance(el__VCBoundary,0,(d),(t),(m),(c)) +#define VLDelete_VCBoundary(i,m) vlDeleteInstance((i),(m)) +#define VLUpdate_VCBoundary( i, d, t, m, c) vlUpdateDynamicInstance((i),(d),(t),(m),(c)) +#define VLExtract_VCBoundary(i, d, t) vlExtractInstance((i),(d),(t)) + +#define VLCreate_VCBodyPart(d, t, m, c) vlCreateDynamicInstance(el__VCBodyPart,0,(d),(t),(m),(c)) +#define VLDelete_VCBodyPart(i,m) vlDeleteInstance((i),(m)) +#define VLUpdate_VCBodyPart( i, d, t, m, c) vlUpdateDynamicInstance((i),(d),(t),(m),(c)) +#define VLExtract_VCBodyPart(i, d, t) vlExtractInstance((i),(d),(t)) + +#define VLCreate_VCBodyMonitor(d, t, m, c) vlCreateDynamicInstance(el__VCBodyMonitor,0,(d),(t),(m),(c)) +#define VLDelete_VCBodyMonitor(i,m) vlDeleteInstance((i),(m)) +#define VLUpdate_VCBodyMonitor( i, d, t, m, c) vlUpdateDynamicInstance((i),(d),(t),(m),(c)) +#define VLExtract_VCBodyMonitor(i, d, t) vlExtractInstance((i),(d),(t)) + +#define VLCreate_VCBodyFlyInfo( d, t, m) vlCreateInstance(el__VCBodyFlyInfo, 0, (d),(t),(m)) +#define VLDelete_VCBodyFlyInfo(i,m) vlDeleteInstance((i),(m)) +#define VLUpdate_VCBodyFlyInfo( i, d, t, m) vlUpdateInstance((i),(d),(t),(m)) +#define VLExtract_VCBodyFlyInfo(i,d,t) vlExtractInstance((i),(d),(t)) + +#define VLCreate_VCBody(d, t, m, c) vlCreateDynamicInstance(el__VCBody,0,(d),(t),(m),(c)) +#define VLDelete_VCBody(i,m) vlDeleteInstance((i),(m)) +#define VLUpdate_VCBody( i, d, t, m, c) vlUpdateDynamicInstance((i),(d),(t),(m),(c)) +#define VLExtract_VCBody(i, d, t) vlExtractInstance((i),(d),(t)) + +#define VLCreate_VCPickObject( d, t, m) vlCreateInstance(el__VCPickObject, 0, (d),(t),(m)) +#define VLDelete_VCPickObject(i,m) vlDeleteInstance((i),(m)) +#define VLUpdate_VCPickObject( i, d, t, m) vlUpdateInstance((i),(d),(t),(m)) +#define VLExtract_VCPickObject(i,d,t) vlExtractInstance((i),(d),(t)) + +#define VLCreate_VCTrackerMonitor(d, t, m, c) vlCreateDynamicInstance(el__VCTrackerMonitor,0,(d),(t),(m),(c)) +#define VLDelete_VCTrackerMonitor(i,m) vlDeleteInstance((i),(m)) +#define VLUpdate_VCTrackerMonitor( i, d, t, m, c) vlUpdateDynamicInstance((i),(d),(t),(m),(c)) +#define VLExtract_VCTrackerMonitor(i, d, t) vlExtractInstance((i),(d),(t)) + +#define VLCreate_VCCollideMonitor(d, t, m, c) vlCreateDynamicInstance(el__VCCollideMonitor,0,(d),(t),(m),(c)) +#define VLDelete_VCCollideMonitor(i,m) vlDeleteInstance((i),(m)) +#define VLUpdate_VCCollideMonitor( i, d, t, m, c) vlUpdateDynamicInstance((i),(d),(t),(m),(c)) +#define VLExtract_VCCollideMonitor(i, d, t) vlExtractInstance((i),(d),(t)) + +#define VLCreate_VCSensorResource(d, t, m, c) vlCreateDynamicInstance(el__VCSensorResource,0,(d),(t),(m),(c)) +#define VLDelete_VCSensorResource(i,m) vlDeleteInstance((i),(m)) +#define VLUpdate_VCSensorResource( i, d, t, m, c) vlUpdateDynamicInstance((i),(d),(t),(m),(c)) +#define VLExtract_VCSensorResource(i, d, t) vlExtractInstance((i),(d),(t)) + +#define VLCreate_VCTracker(d, t, m, c) vlCreateDynamicInstance(el__VCTracker,0,(d),(t),(m),(c)) +#define VLDelete_VCTracker(i,m) vlDeleteInstance((i),(m)) +#define VLUpdate_VCTracker( i, d, t, m, c) vlUpdateDynamicInstance((i),(d),(t),(m),(c)) +#define VLExtract_VCTracker(i, d, t) vlExtractInstance((i),(d),(t)) + +#define VLCreate_VCInputResource(d, t, m, c) vlCreateDynamicInstance(el__VCInputResource,0,(d),(t),(m),(c)) +#define VLDelete_VCInputResource(i,m) vlDeleteInstance((i),(m)) +#define VLUpdate_VCInputResource( i, d, t, m, c) vlUpdateDynamicInstance((i),(d),(t),(m),(c)) +#define VLExtract_VCInputResource(i, d, t) vlExtractInstance((i),(d),(t)) + +#define VLCreate_VCInput(d, t, m, c) vlCreateDynamicInstance(el__VCInput,0,(d),(t),(m),(c)) +#define VLDelete_VCInput(i,m) vlDeleteInstance((i),(m)) +#define VLUpdate_VCInput( i, d, t, m, c) vlUpdateDynamicInstance((i),(d),(t),(m),(c)) +#define VLExtract_VCInput(i, d, t) vlExtractInstance((i),(d),(t)) + +#define VLCreate_VCXWindowId(d, t, m, c) vlCreateDynamicInstance(el__VCXWindowId,0,(d),(t),(m),(c)) +#define VLDelete_VCXWindowId(i,m) vlDeleteInstance((i),(m)) +#define VLUpdate_VCXWindowId( i, d, t, m, c) vlUpdateDynamicInstance((i),(d),(t),(m),(c)) +#define VLExtract_VCXWindowId(i, d, t) vlExtractInstance((i),(d),(t)) + +#define VLCreate_VCQuery( d, t, m) vlCreateInstance(el__VCQuery, 0, (d),(t),(m)) +#define VLDelete_VCQuery(i,m) vlDeleteInstance((i),(m)) +#define VLUpdate_VCQuery( i, d, t, m) vlUpdateInstance((i),(d),(t),(m)) +#define VLExtract_VCQuery(i,d,t) vlExtractInstance((i),(d),(t)) + +#define VLCreate_VCResponse( d, t, m) vlCreateInstance(el__VCResponse, 0, (d),(t),(m)) +#define VLDelete_VCResponse(i,m) vlDeleteInstance((i),(m)) +#define VLUpdate_VCResponse( i, d, t, m) vlUpdateInstance((i),(d),(t),(m)) +#define VLExtract_VCResponse(i,d,t) vlExtractInstance((i),(d),(t)) + +#define VLCreate_VCVisualQuery( d, t, m) vlCreateInstance(el__VCVisualQuery, 0, (d),(t),(m)) +#define VLDelete_VCVisualQuery(i,m) vlDeleteInstance((i),(m)) +#define VLUpdate_VCVisualQuery( i, d, t, m) vlUpdateInstance((i),(d),(t),(m)) +#define VLExtract_VCVisualQuery(i,d,t) vlExtractInstance((i),(d),(t)) + +#define VLCreate_VCDynamics( d, t, m) vlCreateInstance(el__VCDynamics, 0, (d),(t),(m)) +#define VLDelete_VCDynamics(i,m) vlDeleteInstance((i),(m)) +#define VLUpdate_VCDynamics( i, d, t, m) vlUpdateInstance((i),(d),(t),(m)) +#define VLExtract_VCDynamics(i,d,t) vlExtractInstance((i),(d),(t)) + +#define VLCreate_VCForce( d, t, m) vlCreateInstance(el__VCForce, 0, (d),(t),(m)) +#define VLDelete_VCForce(i,m) vlDeleteInstance((i),(m)) +#define VLUpdate_VCForce( i, d, t, m) vlUpdateInstance((i),(d),(t),(m)) +#define VLExtract_VCForce(i,d,t) vlExtractInstance((i),(d),(t)) + +#define VLCreate_VCPseudoGravity( d, t, m) vlCreateInstance(el__VCPseudoGravity, 0, (d),(t),(m)) +#define VLDelete_VCPseudoGravity(i,m) vlDeleteInstance((i),(m)) +#define VLUpdate_VCPseudoGravity( i, d, t, m) vlUpdateInstance((i),(d),(t),(m)) +#define VLExtract_VCPseudoGravity(i,d,t) vlExtractInstance((i),(d),(t)) + +#define VLCreate_VCSync(d, t, m, c) vlCreateDynamicInstance(el__VCSync,0,(d),(t),(m),(c)) +#define VLDelete_VCSync(i,m) vlDeleteInstance((i),(m)) +#define VLUpdate_VCSync( i, d, t, m, c) vlUpdateDynamicInstance((i),(d),(t),(m),(c)) +#define VLExtract_VCSync(i, d, t) vlExtractInstance((i),(d),(t)) + +#endif +/* + * Symbolic element names. + */ +extern const ElementHandle el_VCTime; +extern const ElementHandle el_VCColour; +extern const ElementHandle el__VCPosition; +extern const ElementHandle el__VCObjectPosition; +extern const ElementHandle el__VCObject; +extern const ElementHandle el__VCConstraints; +extern const ElementHandle el__VCZone; +extern const ElementHandle el__VCVisualMonitor; +extern const ElementHandle el__VCConfigRequest; +extern const ElementHandle el__VCConfigReply; +extern const ElementHandle el__VCUser; +extern const ElementHandle el__VCResource; +extern const ElementHandle el__VCResourceRequest; +extern const ElementHandle el__VCAudio; +extern const ElementHandle el__VCRadiator; +extern const ElementHandle el__VCAudioResource; +extern const ElementHandle el__VCVisual; +extern const ElementHandle el__VCMaterial; +extern const ElementHandle el__VCRamp; +extern const ElementHandle el__VCTexture; +extern const ElementHandle el__VCLight; +extern const ElementHandle el__VCVisualResource; +extern const ElementHandle el__VCVisualViewResource; +extern const ElementHandle el__VCIntersectionReport; +extern const ElementHandle el__VCIntersectionState; +extern const ElementHandle el__VCVectorIntersect; +extern const ElementHandle el__VCVisualEffect; +extern const ElementHandle el__VCDynamicVisual; +extern const ElementHandle el__VCLod; +extern const ElementHandle el__VCGeogroup; +extern const ElementHandle el__VCGeometryHeader; +extern const ElementHandle el__VCGeometry; +extern const ElementHandle el__VCTextData; +extern const ElementHandle el__VCText; +extern const ElementHandle el__VCConnectionListHeader; +extern const ElementHandle el__VCConnectionList; +extern const ElementHandle el__VCCollisionReport; +extern const ElementHandle el__VCCollisionState; +extern const ElementHandle el__VCBoundary; +extern const ElementHandle el__VCBodyPart; +extern const ElementHandle el__VCBodyMonitor; +extern const ElementHandle el__VCBodyFlyInfo; +extern const ElementHandle el__VCBody; +extern const ElementHandle el__VCPickObject; +extern const ElementHandle el__VCTrackerMonitor; +extern const ElementHandle el__VCCollideMonitor; +extern const ElementHandle el__VCSensorResource; +extern const ElementHandle el__VCTracker; +extern const ElementHandle el__VCInputResource; +extern const ElementHandle el__VCInput; +extern const ElementHandle el__VCXWindowId; +extern const ElementHandle el__VCQuery; +extern const ElementHandle el__VCResponse; +extern const ElementHandle el__VCVisualQuery; +extern const ElementHandle el__VCDynamics; +extern const ElementHandle el__VCForce; +extern const ElementHandle el__VCPseudoGravity; +extern const ElementHandle el__VCSync; + +static const int ElCountVC = 58; + +/* + * Epp declaraions. NOT 'C' - hence the ifdef guard! + */ +#ifdef __EPP__ +%% +extern atomic element VCTime; +extern atomic element VCColour; +extern atomic element _VCPosition; +extern element _VCObjectPosition; +extern element _VCObject; +extern atomic element _VCConstraints; +extern atomic element _VCZone; +extern atomic element _VCVisualMonitor; +extern atomic element _VCConfigRequest; +extern atomic element _VCConfigReply; +extern atomic element _VCUser; +extern atomic element _VCResource; +extern atomic element _VCResourceRequest; +extern atomic element _VCAudio; +extern atomic element _VCRadiator; +extern atomic element _VCAudioResource; +extern atomic element _VCVisual; +extern atomic element _VCMaterial; +extern atomic element _VCRamp; +extern atomic element _VCTexture; +extern atomic element _VCLight; +extern atomic element _VCVisualResource; +extern atomic element _VCVisualViewResource; +extern atomic element _VCIntersectionReport; +extern atomic element _VCIntersectionState; +extern atomic element _VCVectorIntersect; +extern atomic element _VCVisualEffect; +extern atomic element _VCDynamicVisual; +extern atomic element _VCLod; +extern atomic element _VCGeogroup; +extern atomic element _VCGeometryHeader; +extern element _VCGeometry; +extern atomic element _VCTextData; +extern element _VCText; +extern atomic element _VCConnectionListHeader; +extern element _VCConnectionList; +extern atomic element _VCCollisionReport; +extern atomic element _VCCollisionState; +extern atomic element _VCBoundary; +extern atomic element _VCBodyPart; +extern atomic element _VCBodyMonitor; +extern atomic element _VCBodyFlyInfo; +extern atomic element _VCBody; +extern atomic element _VCPickObject; +extern atomic element _VCTrackerMonitor; +extern atomic element _VCCollideMonitor; +extern atomic element _VCSensorResource; +extern atomic element _VCTracker; +extern atomic element _VCInputResource; +extern atomic element _VCInput; +extern atomic element _VCXWindowId; +extern atomic element _VCQuery; +extern atomic element _VCResponse; +extern atomic element _VCVisualQuery; +extern atomic element _VCDynamics; +extern atomic element _VCForce; +extern atomic element _VCPseudoGravity; +extern atomic element _VCSync; +%% +#endif/* __EPP__ */ +#ifdef __cplusplus +} +#endif +#endif /* ____VCELEMEN_H */ diff --git a/CODE/RP/MUNGA_L4/libDPL/dvs/VCELTYPE.H b/CODE/RP/MUNGA_L4/libDPL/dvs/VCELTYPE.H new file mode 100644 index 0000000..776192b --- /dev/null +++ b/CODE/RP/MUNGA_L4/libDPL/dvs/VCELTYPE.H @@ -0,0 +1,629 @@ +/* + PROJET: + SUBSYSTEM: + MODULE: + + FILE: $RCSfile: vceltype.h,v $ + REVISION: $Revision: 1.1 $ + Date: $Date: 95/05/18 10:24:13 $ + Author: $Author: john $ + RCS Ident: $Id: vceltype.h,v 1.1 1995/03/10 14:52:46 john Exp $ + + FUNCTION: + + + + + Copyright (c) 1992 Division Ltd. + + All Rights Reserved. + + This Document may not, in whole or in part, be copied, + photocopied, reproduced, translated, or reduced to and + electronic medium or machine readable form without prior + written consent from Division Ltd. +*/ +#ifndef VCELTYPE_H +#define VCELTYPE_H +#ifdef _LIB_VC +#include + +#else +#include +#endif + + +#define InstanceNo uint32 /* Define InstanceNo as a basic type !! */ + +#ifndef VCColor +typedef float32 VCColour[3]; +#endif +#ifndef _VCDTYPES_H +typedef struct +{ + uint32 secs; + uint32 uSecs; +}VCTime; +#endif +/* +typedef VCPositionData _VCPosition; +*/ + +/* +typedef struct +{ + uint32 secs; + uint32 uSecs; +}VCTime; +*/ + +typedef struct +{ + dmPosition dmPos; + uint32 mode; +}_VCPosition; + +typedef struct +{ + _VCPosition vcPos; + uint32 parent; +}_VCObjectPosition; + + +typedef struct +{ + uint32 mode; + int32 loopCnt; + float32 gain; + uint16 play; + uint8 velocity; + int8 priority; + char8 voice[1]; +}_VCAudio; + + +typedef struct +{ + char8 name[VC_RADIATOR_NAME_LENGTH]; + int32 numPoints; + float32 points[VC_RADIATOR_MAX_POINTS]; +} _VCRadiator; + + +typedef struct +{ + uint32 mode; + uint32 flags; + float32 point[6]; + float32 rotation[6]; +} _VCConstraints; + +typedef struct +{ + uint32 mode; + uint32 intersectMask; + InstanceNo dynamicIno; + char8 geometry[1]; +} _VCVisual; + + +typedef struct +{ + uint32 mode; + float32 ambient[3]; + float32 diffuse[3]; + float32 specular[4]; + float32 emissive[3]; + float32 opacity[3]; + char8 name[1]; +} _VCMaterial; + +typedef struct +{ + uint32 mode; + uint8 minify; + uint8 magnify; + uint8 alpha; + uint8 wrapU; + uint8 wrapV; + uint8 detailType; + char8 name[1]; +} _VCTexture; + +typedef struct +{ + InstanceNo boundaryIno; + uint16 flags; + dmPoint point; + dmVector direction; + VCTime time; +} _VCCollisionReport; + +typedef struct +{ + InstanceNo myBoundaryIno; + uint32 numberCollisions; + _VCCollisionReport collisions[1]; +} _VCCollisionState; + + +typedef struct +{ + float32 bound[VC_BOUND_SIZE]; + uint32 mode; + int32 numberCollisions; + InstanceNo collisionStateIno; + InstanceNo dynamicVisual; + char8 geometry[1]; +} _VCBoundary; + +/* +typedef struct VCLightData _VCLight; +*/ + +typedef struct +{ + uint32 mode; + VCColour colour; + float32 exponent; + float32 theta; +}_VCLight; + + + +typedef struct +{ + _VCObjectPosition pos; + InstanceNo attributes[VC_MAX_OBJECT_ATTRIBUTES]; +}_VCObject; + +typedef struct +{ + uint32 actorId; + char8 name[1]; +} _VCBodyPart; + +typedef struct +{ + float32 headUpdateRate; /* No updates / second */ + float32 geometryUpdates; /* No updates / second */ + float32 frameRate; /* No frames drawn/second */ + float32 drawRate; /* Tri's per second */ + char8 name[1]; /* Name of the actor. */ +}_VCVisualMonitor; + + +typedef struct +{ + float32 sensorRate[VC_MAX_SENSORS]; /* Sensor updates per second */ + uint32 sensorBaseNumber; + char8 name[1]; /* Name of the actor. */ +}_VCTrackerMonitor; + +typedef struct { + uint32 updateRate; + uint32 transmissionDelay; + dmPoint sourcePosition; + dmEuler sourceEuler; + uint32 baudRate; + char8 name[1]; +} _VCTracker; + +typedef struct { + uint32 mode; + InstanceNo trackerIno; + uint32 sensorId; + float32 scaleTranslate[3]; + float32 scaleRotate[3]; + float32 rotationCurveOrder[3]; + float32 translationCurveOrder[3]; + dmPoint prePosition; + dmPoint postPosition; + dmEuler preEuler; + dmEuler postEuler; + float32 relativeSphere[6]; + InstanceNo positionIno; + _VCConstraints constraints; + char8 name[1]; /* Name of the actor. */ +} _VCSensorResource; + +typedef struct +{ + uint32 mode; + InstanceNo inputIno; + char8 name[1]; /* Name of the actor. */ +} _VCInputResource; + +typedef struct +{ + float32 objectInRate; /* Object updates per second */ + float32 objectInActive; /* Objects that are collidable per second */ + float32 objectTests; /* Number of collision tests per second */ + char8 name[1]; /* Name of the actor. */ +} _VCCollideMonitor; + + +typedef struct +{ + char8 name[1]; /* Name of the actor. */ +} _VCBodyMonitor; + +typedef struct +{ + uint32 mode; + float32 frameRate; + float32 iod; + float32 convergence; + float32 background[3]; + float32 nearClip; + float32 farClip; + float32 fogColour[3]; + float32 nearFog; + float32 farFog; + float32 lodScale; + uint32 actorId; + char8 name[1]; +} _VCVisualResource; + + +typedef struct +{ + InstanceNo visualResourceIno; + uint32 mode; + dmPoint offset; + dmEuler orientation; + float32 size[2]; + char8 name[1]; +} _VCVisualViewResource; + + +typedef struct +{ + float32 slow_speed; + float32 fast_speed; + float32 acceleration; + float32 max_speed; + uint32 slow_key; + uint32 fast_key; + uint32 accelerate_key; +}_VCBodyFlyInfo; + +typedef struct +{ + uint32 actorId; + InstanceNo bodyRoot; + InstanceNo bodyPosObject; + _VCBodyFlyInfo fly_forward; + _VCBodyFlyInfo fly_backward; + _VCBodyFlyInfo fly_up; + _VCBodyFlyInfo fly_down; + _VCBodyFlyInfo fly_left; + _VCBodyFlyInfo fly_right; + _VCBodyFlyInfo rot_left; + _VCBodyFlyInfo rot_right; + _VCBodyFlyInfo rot_up; + _VCBodyFlyInfo rot_down; + uint32 verticalFly_key; + uint32 altFly_key; + InstanceNo flyDirectionLimb; + InstanceNo altFlyDirectionLimb; + InstanceNo altFlyLimb; + uint32 flyMode; + char8 name[1]; +} _VCBody; + +typedef struct +{ + InstanceNo ino; + char8 name[1]; +} _VCConfigRequest; + +typedef struct +{ + InstanceNo user; + int32 verbose; + int32 enable; + char8 log[4]; + char8 config[1]; +} _VCConfigReply; + +typedef struct +{ + char8 name[1]; +} _VCUser; + +typedef struct +{ + InstanceNo resourceIno; + uint8 allocated; + char8 name[1]; +}_VCResource; + +typedef struct +{ + InstanceNo resource; + int32 updated; + InstanceNo serverResource; + uint32 resourceType; +} _VCResourceRequest; + +typedef struct +{ + uint32 mode; + float32 iad; + float32 volume; + float32 spreadingRollOff; + float32 atmosphericAbsorption; + float32 worldScale; + char8 name[1]; +} _VCAudioResource; + +typedef struct +{ + uint32 numWraps; + int32 head; + uint32 input[1]; +}_VCInput; + +typedef struct +{ + InstanceNo pickInstance; + uint32 mode; + uint32 pickActorId; +}_VCPickObject; + +typedef struct { + uint32 windowId; /* Identity of the window */ + char8 name [1]; /* Name of the resource. */ +} _VCXWindowId; + +typedef struct { + + uint32 actorId; + uint32 mode; + InstanceNo subject; +} _VCQuery; + +typedef struct { + uint32 status; + InstanceNo result; +} _VCResponse; + +typedef struct { + _VCQuery query; + _VCResponse response; +} _VCVisualQuery; + +typedef struct +{ + InstanceNo object; + InstanceNo visual; + InstanceNo patch; + dmPoint point; +} _VCIntersectionReport; + +typedef struct +{ + InstanceNo myVectorIntersectIno; + uint32 numberIntersections; + _VCIntersectionReport intersections[1]; +} _VCIntersectionState; + +typedef struct +{ + uint32 mode; + float32 length; + uint32 intersectMask; + int32 numberIntersections; + InstanceNo intersectStateIno; +}_VCVectorIntersect; + +typedef struct +{ + uint32 mode; + uint32 type; + dmPoint offset; + float32 data[72]; + char8 texture[1]; +}_VCVisualEffect; + +typedef struct +{ + uint32 mode; + float32 iMass; + float32 gMass; + dmPoint centre; + float32 iTensor[6]; + float32 spring; + float32 damper; + float32 staticFriction; + float32 dynamicFriction; +}_VCDynamics; + + +typedef struct +{ + uint32 mode; + dmVector force; + dmPoint point; +} _VCForce; + +typedef struct +{ + uint32 mode; + dmVector direction; + float32 gravity; +}_VCPseudoGravity; + +typedef struct +{ + uint32 mode; + uint32 actorMask; +}_VCZone; + +typedef struct +{ + uint32 mode; + InstanceNo lod; + char8 name[1]; +} _VCDynamicVisual; + +typedef struct +{ + uint32 mode; + float32 in; + float32 out; + dmPoint reference; + InstanceNo next; + char8 name[1]; +} _VCLod; + +typedef struct +{ + uint32 mode; + uint8 faceted; + uint8 vertexFormat; + uint8 lock; + uint8 drawMode; + uint8 drawWidth; + int32 decal; + InstanceNo lod; + char8 name[1]; +} _VCGeogroup; + +typedef struct +{ + uint32 mode; + uint32 numVertices; + InstanceNo geogroup; +} _VCGeometryHeader; + +typedef struct +{ + _VCGeometryHeader header; + float32 vertices[1]; +} _VCGeometry; + +typedef struct +{ + uint8 font; + dmPoint position; + dmEuler orientation; + dmScale scale; + char8 text[1]; +} _VCTextData; + +typedef struct +{ + _VCGeometryHeader header; + _VCTextData text; +} _VCText; + +typedef struct +{ + uint32 numConnections; + uint32 mode; + InstanceNo geometry; +} _VCConnectionListHeader; + +typedef struct +{ + _VCConnectionListHeader header; + uint32 connections[1]; +} _VCConnectionList; + +typedef struct +{ + VCTime time; + char8 name[1]; +} _VCSync; + +typedef struct +{ + uint32 mode; + VCColour minRgb; + VCColour maxRgb; + char8 name[1]; +} _VCRamp; + + + + +#undef InstanceNo /* Remove local Instance Number definition */ +#define el_VCPosition el__VCPosition +#define el_VCObjectPosition el__VCObjectPosition +#define el_VCObject el__VCObject +#define el_VCConstraints el__VCConstraints +#define el_VCZone el__VCZone + +#define el_VCVisualMonitor el__VCVisualMonitor +#define el_VCConfigRequest el__VCConfigRequest +#define el_VCConfigReply el__VCConfigReply +#define el_VCUser el__VCUser +#define el_VCResource el__VCResource +#define el_VCResourceRequest el__VCResourceRequest + +#define el_VCAudio el__VCAudio +#define el_VCRadiator el__VCRadiator +#define el_VCAudioResource el__VCAudioResource + + +#define el_VCVisual el__VCVisual +#define el_VCMaterial el__VCMaterial +#define el_VCTexture el__VCTexture +#define el_VCLight el__VCLight +#define el_VCVisualResource el__VCVisualResource +#define el_VCVisualViewResource el__VCVisualViewResource + +#define el_VCIntersect el__VCIntersect +#define el_VCVectorIntersect el__VCVectorIntersect + +#define el_VCIntersectionReport el__VCIntersectionReport +#define el_VCIntersectionState el__VCIntersectionState +#define el_VCNewVectorIntersect el__VCNewVectorIntersect + +#define el_VCVisualEffect el__VCVisualEffect + +#define el_VCCollisionReport el__VCCollisionReport +#define el_VCCollisionState el__VCCollisionState +#define el_VCBoundary el__VCBoundary + +#define el_VCBodyPart el__VCBodyPart +#define el_VCBodyMonitor el__VCBodyMonitor +#define el_VCBodyFlyInfo el__VCBodyFlyInfo +#define el_VCBody el__VCBody +#define el_VCPickObject el__VCPickObject + +#define el_VCTrackerMonitor el__VCTrackerMonitor +#define el_VCCollideMonitor el__VCCollideMonitor + + +#define el_VCSensorResource el__VCSensorResource +#define el_VCTracker el__VCTracker + +#define el_VCInputResource el__VCInputResource +#define el_VCInput el__VCInput + +#define el_VCXWindowId el__VCXWindowId + +#define el_VCQuery el__VCQuery +#define el_VCResponse el__VCResponse +#define el__VCResponse el__VCResponse +#define el_VCVisualQuery el__VCVisualQuery + +#define el_VCDynamics el__VCDynamics +#define el_VCForce el__VCForce +#define el_VCPseudoGravity el__VCPseudoGravity + +#define el_VCDynamicVisual el__VCDynamicVisual +#define el_VCLod el__VCLod +#define el_VCGeogroup el__VCGeogroup +#define el_VCGeometryHeader el__VCGeometryHeader +#define el_VCGeometry el__VCGeometry +#define el_VCTextData el__VCTextData +#define el_VCText el__VCText +#define el_VCConnectionListHeader el__VCConnectionListHeader +#define el_VCConnectionList el__VCConnectionList +#define el_VCSync el__VCSync +#define el_VCRamp el__VCRamp +#endif /* VCELTYPE_H */ diff --git a/CODE/RP/MUNGA_L4/libDPL/dvs/VCERROR.H b/CODE/RP/MUNGA_L4/libDPL/dvs/VCERROR.H new file mode 100644 index 0000000..0097c68 --- /dev/null +++ b/CODE/RP/MUNGA_L4/libDPL/dvs/VCERROR.H @@ -0,0 +1,33 @@ +/* +-- ---------------------------------------------------------------------------- +-- +-- Copyright 1994 Division Limited. +-- All Rights Reserved +-- +-- +-- System : dVS 2.1 +-- Module : libvc +-- Object Name : $RCSfile: vcerror.h,v $ +-- Revision : $Revision: 1.1 $ +-- Date : $Date: 95/05/18 10:24:15 $ +-- Author : $Author: john $ +-- +-- Description +-- Vcerror routines. +-- +-- Notes +-- +-- History +-- +-- +-- ---------------------------------------------------------------------------- +*/ + +#ifndef __VCERROR_H__ +#define __VCERROR_H__ + +void VC_Warn(char *format, ...); +void VC_Error(char *format, ...); +void VC_Fatal(char *format, ...); + +#endif /* __VCERROR_H__ */ diff --git a/CODE/RP/MUNGA_L4/libDPL/dvs/VCINPDEF.H b/CODE/RP/MUNGA_L4/libDPL/dvs/VCINPDEF.H new file mode 100644 index 0000000..8a8b0e4 --- /dev/null +++ b/CODE/RP/MUNGA_L4/libDPL/dvs/VCINPDEF.H @@ -0,0 +1,71 @@ +/* + * PROJECT: + * SUBSYSTEM: + * MODULE: + * + * FILE: $RCSfile: vcinpdef.h,v $ + * REVISION: $Revision: 1.1 $ + * Date: $Date: 95/05/18 10:24:16 $ + * Author: $Author: john $ + * RCS Ident: $Id: vcinpdef.h,v 1.1 1995/03/10 14:52:46 john Exp $ + * + * FUNCTION: + * + * Copyright (c) 1994 Division Ltd. + * + * All Rights Reserved. + * + * This Document may not, in whole or in part, be copied, + * photocopied, reproduced, translated, or reduced to any + * electronic medium or machine readable form without prior + * written consent from Division Ltd. + */ + + +/* + * define the modifier values + */ +#define VC_INPUT_RELEASE 0x00010000 +#define VC_INPUT_PRESS 0x00020000 +#define VC_MODIFIER_0 0x00100000 +#define VC_MODIFIER_1 0x00200000 +#define VC_MODIFIER_2 0x00400000 +#define VC_MODIFIER_3 0x00800000 +#define VC_MODIFIER_4 0x01000000 +#define VC_MODIFIER_5 0x02000000 +#define VC_MODIFIER_6 0x04000000 +#define VC_MODIFIER_7 0x08000000 + +#define VC_MODIFIER_CTRL VC_MODIFIER_0 +#define VC_MODIFIER_ALT VC_MODIFIER_1 +#define VC_MODIFIER_ESC VC_MODIFIER_2 + +#define VC_INPUT_CODE_MASK 0x0000ffff +#define VC_INPUT_TYPE 0x000f0000 +#define VC_INPUT_MODIFIER_MASK 0x0ff00000 +#define VC_INPUT_ALL_KEYS 0x0000ffff +#define VC_INPUT_SINGLE_KEY 0x00000000 + +#define VC_BUTTON_0 0x0080 +#define VC_BUTTON_1 0x0081 +#define VC_BUTTON_2 0x0082 +#define VC_BUTTON_3 0x0083 +#define VC_BUTTON_4 0x0084 +#define VC_BUTTON_5 0x0085 +#define VC_BUTTON_6 0x0086 +#define VC_BUTTON_7 0x0087 +#define VC_BUTTON_8 0x0088 +#define VC_BUTTON_9 0x0089 +#define VC_BUTTON_10 0x008a +#define VC_BUTTON_11 0x008b +#define VC_BUTTON_12 0x008c +#define VC_BUTTON_13 0x008d +#define VC_BUTTON_14 0x008e +#define VC_BUTTON_15 0x008f + + + + + + + diff --git a/CODE/RP/MUNGA_L4/libDPL/dvs/VCMACROS.H b/CODE/RP/MUNGA_L4/libDPL/dvs/VCMACROS.H new file mode 100644 index 0000000..701838c --- /dev/null +++ b/CODE/RP/MUNGA_L4/libDPL/dvs/VCMACROS.H @@ -0,0 +1,33 @@ +/* + * PROJECT: + * SUBSYSTEM: + * MODULE: + * + * FILE: $RCSfile: vctools.h,v $ + * REVISION: $Revision: 1.1 $ + * Date: $Date: 95/05/18 10:24:16 $ + * Author: $Author: john $ + * RCS Ident: $Id: vctools.h,v 0.10 1994/10/05 12:51:14 john Exp jon $ + * + * FUNCTION: + * + * Copyright (c) 1995 Division Ltd. + * + * All Rights Reserved. + * + * This Document may not, in whole or in part, be copied, + * photocopied, reproduced, translated, or reduced to any + * electronic medium or machine reable form without prior + * written consent from Division Ltd. + */ + + + +#ifndef _VCMACROS_H_ +#define _VCMACROS_H_ + +#define VC_GetEntityRelocateMode() VCEntity_GetRelocateMode(NULL) +#define VC_SetEntityRelocateMode(m) VCEntity_SetRelocateMode(NULL,m) +#define VCBody_SetVisualResourceBackgroundColor(b,c) VCBody_SetVisualResourceBackgroundColour(b,c) +#define VCBody_SetVisualResourceFogColor(b,c,t,m) VCBody_SetVisualResourceFogColour(b,c,t,m) +#endif diff --git a/CODE/RP/MUNGA_L4/libDPL/dvs/VCOBJECT.H b/CODE/RP/MUNGA_L4/libDPL/dvs/VCOBJECT.H new file mode 100644 index 0000000..5d9db00 --- /dev/null +++ b/CODE/RP/MUNGA_L4/libDPL/dvs/VCOBJECT.H @@ -0,0 +1,686 @@ +/*************************************************************************** + * <210493.1436> + * PROJECT: dVS + * SUBSYSTEM: VCTools. + * MODULE: VC Object definitions. + * + *************************************************************************** + * + * File: $RCSfile: vcobject.h,v $ + * Revision: $Revision: 1.1 $ + * Date: $Date: 95/05/18 10:24:17 $ + * Author: $Author: john $ + * RCS Ident: $Id: vcobject.h,v 1.1 1995/03/10 14:52:46 john Exp $ + * Creator: Jon Green. + * + * + * + ************************************************************************** + * * + * Copyright (c) 1992,1993,1994,1995 Division Ltd. * + * * + * All Rights Reserved. * + * * + * This Document may not, in whole or in part, be copied, photocopied, * + * reproduced, translated, or reduced to any electronic medium or * + * machine readable form without prior written consent from Division * + * Ltd. * + * * + *************************************************************************/ + +/*--- Include Definitions */ + +#ifndef _VCOBJECT_H +#define _VCOBJECT_H 1 + +/* Spin functions */ +#define VCEntity_SpinX(e,a) VCEntity_Spin(e,VC_X,a) +#define VCEntity_SpinY(e,a) VCEntity_Spin(e,VC_Y,a) +#define VCEntity_SpinZ(e,a) VCEntity_Spin(e,VC_Z,a) + +int VCEntity_Rotate (VCEntity *e, dmPoint centre, int axis, float angle); +int VCEntity_RotateX (VCEntity *e, float angle); +int VCEntity_RotateY (VCEntity *e, float angle); +int VCEntity_RotateZ (VCEntity *e, float angle); + + +int VCEntity_Spin (VCEntity *e, int axis, float angle); +int VCEntity_Scale (VCEntity *e, float sx, float sy, float sz); +int VCEntity_Resize (VCEntity *entity, float sx, float sy, float sz); +int VCEntity_Translate (VCEntity *e, float dx, float dy, float dz); + + +VCAttribute *VCVisual_Create (char *visual_name, VCDynamicVisual *dynamicVIsual, uint32 mode, char *lod, + char *frontMaterial, char *backMaterial, + uint32 intersectMask); +int VCVisual_Set (VCAttribute *attribute, char *visual_name, VCDynamicVisual *dynamicVisual, + uint32 setMode, uint32 clearMode, char *lod, char *frontMaterial, + char *backMaterial, uint32 setIntersectMask, + uint32 clearIntersectMask); +int VCVisual_Get (VCAttribute *attribute, char **visual_name, + VCDynamicVisual **dynamicVisual, + uint32 *mode, char **lod, char **frontMaterial, char **backMaterial, + uint32 *intersectMask); +VCAttribute *VCVisual_CreateData (VCVisualData *visualData); +int VCVisual_SetData (VCAttribute *attribute,VCVisualData *visualData); +int VCVisual_GetData (VCAttribute *attribute, VCVisualData *visualData); + +VCAttribute *VCEntity_AddVisual (VCEntity *entity, char *visual_name, VCDynamicVisual *DynamicVisual, + uint32 mode, char *lod, + char *frontMaterial, char *backMaterial, uint32 intersectMask); +VCAttribute *VCEntity_AddVisualData(VCEntity *entity, VCVisualData *visualData); +int VCVisual_SetGeometry (VCAttribute *attribute, char *visual_name); +int VCVisual_SetDynamicVisual (VCAttribute *attribute, VCDynamicVisual *dynamicVisual); +int VCVisual_SetMode (VCAttribute *attribute, uint32 mode); +int VCVisual_ModifyMode (VCAttribute *attribute, uint32 setMode, uint32 clearMode); +int VCVisual_SetFrontMaterial (VCAttribute *attribute, char *frontMaterial); +int VCVisual_SetBackMaterial (VCAttribute *attribute, char *backMaterial); +int VCVisual_SetLod (VCAttribute *attribute, char *lod); +int VCVisual_SetIntersectMask (VCAttribute *attribute, uint32 intersectMask); +int VCVisual_ModifyIntersectMask (VCAttribute *attribute, uint32 setIntersectMask, + uint32 clearIntersectMask); + +int VCVisual_GetGeometry (VCAttribute *attribute, char **visual_name); +int VCVisual_GetDynamicVisual (VCAttribute *attribute, VCDynamicVisual **dynamicVisual); +int VCVisual_GetMode (VCAttribute *attribute, uint32 *mode); +int VCVisual_GetFrontMaterial (VCAttribute *attribute, char **frontMaterial); +int VCVisual_GetBackMaterial (VCAttribute *attribute, char **backMaterial); +int VCVisual_GetLod (VCAttribute *attribute, char **lod); +int VCVisual_GetIntersectMask (VCAttribute *attribute, uint32 *intersectMask); + +#define VCEntity_AddVisualGeometry(e,g) VCEntity_AddVisual(e, g, NULL, VC_VISIBLE | VC_RMODE_POLYGONAL, NULL, NULL, NULL, 0xffffffff) +#define VCEntity_DetachVisual(e,a) VCEntity_DetachAttribute(e,a) +#define VCVisual_CreateGeometry(g) VCVisual_Create( g, NULL, VC_VISIBLE|VC_RMODE_POLYGONAL, NULL, NULL, NULL, NULL) +#define VCVisual_Delete(a) VCAttribute_Delete(a) + + +VCAttribute *VCBodyPart_Create (char *bodyPart_name, uint32 actorId); +VCAttribute *VCBodyPart_CreateData (VCBodyPartData *bodyPart); +VCAttribute *VCEntity_AddBodyPartData(VCEntity *entity, VCBodyPartData *data); +VCAttribute *VCEntity_AddBodyPart (VCEntity *entity, char *bodyPart_name, uint32 actorId); +int VCBodyPart_Set (VCAttribute *attribute, char *bodyPart_name, + uint32 *actorId); +int VCBodyPart_SetData (VCAttribute *attribute, VCBodyPartData *bodyPart); +int VCBodyPart_SetName (VCAttribute *attribute, char *name); +int VCBodyPart_Get (VCAttribute *attribute, char **bodyPart_name, + uint32 *actorId); +int VCBodyPart_GetData (VCAttribute *attribute, VCBodyPartData *bodyPart); +int VCBodyPart_GetName (VCAttribute *attribute, char **name); +int VCBodyPart_GetActorId (VCAttribute *attribute, uint32 *actorId); + +#define VCEntity_DetachBodyPart(e,a) VCEntity_DetachAttribute(e, a) +#define VCBodyPart_Delete(a) VCAttribute_Delete(a) + +VCAttribute *VCPickObject_Create (VCEntity *entity, uint32 mode, uint32 actorId); +VCAttribute *VCPickObject_CreateData (VCPickObjectData *pickData); +int VCPickObject_Set (VCAttribute *attribute, VCEntity *entity, + uint32 setMode, uint32 clearMode, uint32 *actorId); +int VCPickObject_SetData (VCAttribute *attribute, VCPickObjectData *pickData); +int VCPickObject_Get (VCAttribute *attribute, VCEntity **entity, + uint32 *mode, uint32 *actorId); +int VCPickObject_GetData (VCAttribute *attribute, VCPickObjectData *pickData); +VCAttribute *VCEntity_AddPickObjectData(VCEntity *entity, VCPickObjectData *data); +VCAttribute *VCEntity_AddPickObject (VCEntity *entity, VCEntity *pickingEntity, uint32 mode, + uint32 pickActorId); + +#define VCEntity_DetachPickObject(e,a) VCEntity_DetachAttribute(e,a) +#define VCPickObject_Delete(a) VCAttribute_Delete(a) + + + +int VCPickObject_SetMode (VCAttribute *attribute, uint32 mode); +int VCPickObject_ModifyMode (VCAttribute *attribute, uint32 setMode, uint32 clearMode); +int VCPickObject_SetPickingEntity (VCAttribute *attribute, VCEntity *entity); +int VCPickObject_SetActorId (VCAttribute *attribute, uint32 actorId); +int VCPickObject_GetMode (VCAttribute *attribute, uint32 *mode); +int VCPickObject_GetPickingEntity (VCAttribute *attribute, VCEntity **entity); +int VCPickObject_GetActorId (VCAttribute *attribute, uint32 *actorId); + + +VCAttribute *VCBoundary_Create (char *geometry, VCDynamicVisual *dynamicVisual, float32 bounds[VC_BOUND_SIZE], + uint32 mode, char *lod , int numCollisions); +VCAttribute *VCBoundary_CreateData (VCBoundaryData *boundaryData); +int VCBoundary_Set (VCAttribute *attribute, char *geometry, VCDynamicVisual *dynamicVisual, + float32 bounds[VC_BOUND_SIZE], uint32 setMode, uint32 clearMode, char *lod , + int32 *numberCollisions); +int VCBoundary_SetData (VCAttribute *attribute, VCBoundaryData *boundaryData); +int VCBoundary_Get (VCAttribute *attribute, char **geometry, VCDynamicVisual **dynamicVisual, + float32 bounds[VC_BOUND_SIZE], uint32 *mode, char **lod, int32 *numberCollisions, + VCCollision **collision); +int VCBoundary_GetData (VCAttribute *attribute, VCBoundaryData *boundaryData); +VCAttribute *VCEntity_AddBoundaryData(VCEntity *entity, VCBoundaryData *data); +VCAttribute *VCEntity_AddBoundary (VCEntity *entity, char *geometry, VCDynamicVisual *dynamicVisual, + float32 bounds[VC_BOUND_SIZE], uint32 mode, char *lod, int numCollisions ); +int VCBoundary_Delete(VCAttribute *attribute); + +#define VCEntity_DetachBoundary(e,a) VCEntity_DetachAttribute(e, a) +#define VCBoundary_CreateBbox(g) VCBoundary_Create(g,NULL,NULL, VC_COLLISION_ENABLE | VC_COLLISION_BBOX, NULL, 1) +#define VCBoundary_CreateRadius(g) VCBoundary_Create(g,NULL,NULL, VC_COLLISION_ENABLE | VC_COLLISION_RADIUS, NULL, 1) +#define VCBoundary_CreateGeometry(g) VCBoundary_Create(g,NULL,NULL, VC_COLLISION_ENABLE | VC_COLLISION_GEOMETRY, NULL, 1) +#define VCEntity_AddBoundaryBbox(e,g) VCEntity_AddBoundary(e,g,NULL,NULL, VC_COLLISION_ENABLE | VC_COLLISION_BBOX, NULL, 1) +#define VCEntity_AddBoundaryRadius(e,g) VCEntity_AddBoundary(e, g,NULL,NULL, VC_COLLISION_ENABLE | VC_COLLISION_RADIUS, NULL, 1) +#define VCEntity_AddBoundaryGeometry(e,g) VCEntity_AddBoundary(e, g,NULL,NULL, VC_COLLISION_ENABLE | VC_COLLISION_GEOMETRY, NULL, 1) + + +int VCBoundary_ModifyMode(VCAttribute *attribute, uint32 setMode, uint32 clearMode); +int VCBoundary_SetGeometry(VCAttribute *attribute, char *geometry); +int VCBoundary_SetDynamicVisual(VCAttribute *attribute, VCDynamicVisual *dynamicGeometry); +int VCBoundary_SetBounds(VCAttribute *attribute, float32 bounds[VC_BOUND_SIZE]); +int VCBoundary_SetMode(VCAttribute *attribute, uint32 mode); +int VCBoundary_SetLod(VCAttribute *attribute, char *lod); +int VCBoundary_SetNumberCollisions(VCAttribute *attribute, int32 numberCollisions); +int VCBoundary_GetGeometry(VCAttribute *attribute, char **geometry); +int VCBoundary_GetBounds(VCAttribute *attribute, float32 bounds[VC_BOUND_SIZE]); +int VCBoundary_GetMode(VCAttribute *attribute, uint32 *mode); +int VCBoundary_GetLod(VCAttribute *attribute, char **lod); +int VCBoundary_GetNumberCollisions(VCAttribute *attribute, int32 *numberCollisions); +int VCBoundary_GetCollision(VCAttribute *attribute, VCCollision **collision); +int VCBoundary_GetDynamicVisual(VCAttribute *attribute, VCDynamicVisual **dynamicGeometry); +void *VCBoundary_AttachCollisionCreateCallback(VCAttribute *boundary, VCCollision_Func func, void *data); +void *VCBoundary_AttachCollisionUpdateCallback(VCAttribute *boundary, VCCollision_Func func, void *data); +void *VCBoundary_AttachCollisionDeleteCallback(VCAttribute *boundary, VCCollision_Func func, void *data); +int VCBoundary_DetachCollisionCreateCallback(VCAttribute *boundary, void *callbackHandle); +int VCBoundary_DetachCollisionUpdateCallback(VCAttribute *boundary, void *callbackHandle); +int VCBoundary_DetachCollisionDeleteCallback(VCAttribute *boundary, void *callbackHandle); + +VCAttribute *VCLight_Create (uint32 mode, VCColour colour, float exponent, float theta); +VCAttribute *VCLight_CreateData (VCLightData *lightData); +int VCLight_Get (VCAttribute *attribute, uint32 *mode, VCColour colour, + float *exponent, float *theta); +int VCLight_GetData (VCAttribute *attribute, VCLightData *lightData); +VCAttribute *VCEntity_AddLightData(VCEntity *entity, VCLightData *data); +VCAttribute *VCEntity_AddLight (VCEntity *entity, uint32 mode, float32 *colour, + float exponent, float theta); +int VCLight_Set (VCAttribute *attribute, uint32 setMode, uint32 clearMode, + VCColour colour, float *exponent, float *theta); +int VCLight_SetData (VCAttribute *attribute, VCLightData *lightData); +int VCLight_SetMode (VCAttribute *attribute, uint32 mode); +int VCLight_ModifyMode (VCAttribute *attribute, uint32 setMode, uint32 clearMode); +int VCLight_SetColour (VCAttribute *attribute, VCColour colour); +int VCLight_SetUmbra (VCAttribute *attribute, float32 exponent, float theta); + +int VCLight_GetMode (VCAttribute *attribute, uint32 *mode); +int VCLight_GetColour (VCAttribute *attribute, VCColour colour); +int VCLight_GetUmbra (VCAttribute *attribute, float32 *exponent, float32 *theta); + +#define VCEntity_DetachLight(e,a) VCEntity_DetachAttribute(e,a) +#define VCLight_Delete(a) VCAttribute_Delete(a) +#define VCLight_SetColor(a,c) VCLight_SetColour(a,c) +#define VCLight_GetColor(a,c) VCLight_GetColour(a,c) + +#define VCEntity_AddLightDirectional(e,c) VCEntity_AddLight(e, VC_LIGHT_ENABLE | VC_LIGHT_MODE_DIRECTIONAL, c, 0.0f, 0.0f) +#define VCEntity_AddLightAmbient(e,c) VCEntity_AddLight(e, VC_LIGHT_ENABLE | VC_LIGHT_MODE_AMBIENT, c, 0.0f, 0.0f) +#define VCEntity_AddLightPoint(e,c) VCEntity_AddLight(e, VC_LIGHT_ENABLE | VC_LIGHT_MODE_POINT, c, 0.0f, 0.0f) +#define VCEntity_AddLightSpot(e,c,x,t) VCEntity_AddLight(e, VC_LIGHT_ENABLE | VC_LIGHT_MODE_SPOT, c, x, t) + +#define VCLight_CreateDirectional(c) VCLight_Create(VC_LIGHT_ENABLE | VC_LIGHT_MODE_DIRECTIONAL, c, 0.0f, 0.0f) +#define VCLight_CreateAmbient(c) VCLight_Create(VC_LIGHT_ENABLE | VC_LIGHT_MODE_AMBIENT, c, 0.0f, 0.0f) +#define VCLight_CreatePoint(c) VCLight_Create(VC_LIGHT_ENABLE | VC_LIGHT_MODE_POINT, c, 0.0f, 0.0f) +#define VCLight_CreateSpot(c,x,t) VCLight_Create(VC_LIGHT_ENABLE | VC_LIGHT_MODE_SPOT, c, x, t) + +VCAttribute *VCAudio_Create (char *voice, float32 gain, uint8 velocity, + uint32 mode, int32 loopCnt, int8 priority, + char *radiatorName, char *radiatorFileName); +VCAttribute *VCEntity_AddAudioData(VCEntity *entity, VCAudioData *data); +VCAttribute *VCEntity_AddAudio (VCEntity *entity, char *voice, float32 gain, uint8 velocity, + uint32 mode, int32 loopCnt, int8 priority, + char * radiatorName, char *radiatorFileName); +int VCAudio_Set (VCAttribute *attribute, char *voice, + float32 *gain, uint8 *velocity, uint32 setMode, + uint32 clearMode, uint8 play, int32 *loopCnt, int8 *priority, + char *radiatorName, char *radiatorFileName); +int VCAudio_Get (VCAttribute *attribute, char **voice, + float32 *gain, uint8 *velocity, uint32 *mode, + int32 *loopCnt, int8 *priority, + char **radiatorName, char **radiatorFileName); +VCAttribute *VCAudio_CreateData (VCAudioData *audioData); +int VCAudio_GetData (VCAttribute *attribute, VCAudioData *audioData); +int VCAudio_SetData (VCAttribute *attribute, VCAudioData *audioData); + +int VCAudio_SetVoice (VCAttribute *attribute, char *voice); +int VCAudio_SetMode (VCAttribute *attribute, uint32 mode); +int VCAudio_ModifyMode (VCAttribute *attribute, uint32 setMode, uint32 clearMode); +int VCAudio_SetGain (VCAttribute *attribute, float32 gain); +int VCAudio_SetVelocity (VCAttribute *attribute, uint8 velocity); +int VCAudio_SetLoopCount (VCAttribute *attribute, int32 loopCnt); +int VCAudio_SetPriority (VCAttribute *attribute, int8 priority); +int VCAudio_SetRadiatorName(VCAttribute *attribute, char *radiator); +int VCAudio_SetRadiatorFile(VCAttribute *attribute, char *radiator); +int VCAudio_Start (VCAttribute *attribute); +int VCAudio_Stop (VCAttribute *attribute); + +int VCAudio_GetVoice (VCAttribute *attribute, char **voice); +int VCAudio_GetMode (VCAttribute *attribute, uint32 *mode); +int VCAudio_GetGain (VCAttribute *attribute, float32 *gain); +int VCAudio_GetVelocity (VCAttribute *attribute, uint8 *velocity); +int VCAudio_GetLoopCount (VCAttribute *attribute, int32 *loopCount); +int VCAudio_GetPriority (VCAttribute *attribute, int8 *priority); +int VCAudio_GetRadiatorName(VCAttribute *attribute, char **radiator); +int VCAudio_GetRadiatorFile(VCAttribute *attribute, char **radiator); + + +#define VCEntity_AddAudioVoice(e,v) VCEntity_AddAudio(e, v, 0, 80, 0, 1, 0, NULL, NULL) +#define VCEntity_DetachAudio(e,a) VCEntity_DetachAttribute(e,a) +#define VCAudio_CreateVoice(v) VCAudio_Create( v, 0, 80, 0, 1, 0, NULL, NULL) +#define VCAudio_Delete(a) VCAttribute_Delete(a) + +VCAttribute *VCConstraints_Create (uint32 mode, uint32 flags, float32 points[6], + float32 rotation[6]); +VCAttribute *VCConstraints_CreateData (VCConstraintsData *constraintsData); +int VCConstraints_Get (VCAttribute *attribute, uint32 *mode, uint32 *flags, + float32 points[6], float32 rotation[6]); +int VCConstraints_GetData (VCAttribute *attribute, VCConstraintsData *constraintsData); + +VCAttribute *VCEntity_AddConstraintsData(VCEntity *entity, VCConstraintsData *data); +VCAttribute *VCEntity_AddConstraints(VCEntity *entity, uint32 mode, uint32 flags, + float32 points[6], float32 rotation[6]); +int VCConstraints_Set (VCAttribute *attribute, uint32 setMode, + uint32 clearMode, uint32 setFlags, uint32 clearFlags, + float32 points[6], float32 rotation[6]); +int VCConstraints_SetData (VCAttribute *attribute, VCConstraintsData *constraintsData); + +int VCConstraints_SetMode (VCAttribute *attribute, uint32 mode); +int VCConstraints_ModifyMode (VCAttribute *attribute, uint32 setMode, uint32 clearMode); +int VCConstraints_ModifyFlags (VCAttribute *attribute, uint32 setFlags, uint32 clearFlags); +int VCConstraints_SetFlags (VCAttribute *attribute, uint32 flags); +int VCConstraints_SetPoint (VCAttribute *attribute, float32 point[6]); +int VCConstraints_SetRotation (VCAttribute *attribute, float32 rotation[6]); +int VCConstraints_GetMode (VCAttribute *attribute, uint32 *mode); +int VCConstraints_GetFlags (VCAttribute *attribute, uint32 *flags); +int VCConstraints_GetPoint (VCAttribute *attribute, float32 point[6]); +int VCConstraints_GetRotation (VCAttribute *attribute, float32 rotation[6]); + + + + + +VCAttribute *VCEntity_AddConstraintsHinge(VCEntity *entity, uint32 axis, float32 min, float32 max); +VCAttribute *VCEntity_AddConstraintsHingeX(VCEntity *entity, float32 min, float32 max); +VCAttribute *VCEntity_AddConstraintsHingeY(VCEntity *entity, float32 min, float32 max); +VCAttribute *VCEntity_AddConstraintsHingeZ(VCEntity *entity, float32 min, float32 max); + +VCAttribute *VCEntity_AddConstraintsTranslate(VCEntity *entity, uint32 axis, float32 min, float32 max); +VCAttribute *VCEntity_AddConstraintsTranslateX(VCEntity *entity, float32 min, float32 max); +VCAttribute *VCEntity_AddConstraintsTranslateY(VCEntity *entity, float32 min, float32 max); +VCAttribute *VCEntity_AddConstraintsTranslateZ(VCEntity *entity, float32 min, float32 max); + +VCAttribute *VCEntity_AddConstraintsRotate(VCEntity *entity, uint32 axis, float32 min, float32 max); +VCAttribute *VCEntity_AddConstraintsRotateX(VCEntity *entity, float32 min, float32 max); +VCAttribute *VCEntity_AddConstraintsRotateY(VCEntity *entity, float32 min, float32 max); +VCAttribute *VCEntity_AddConstraintsRotateZ(VCEntity *entity, float32 min, float32 max); + +VCAttribute *VCConstraints_CreateHinge(uint32 axis, float32 min, float32 max); +VCAttribute *VCConstraints_CreateHingeX(float32 min, float32 max); +VCAttribute *VCConstraints_CreateHingeY(float32 min, float32 max); +VCAttribute *VCConstraints_CreateHingeZ(float32 min, float32 max); +VCAttribute *VCConstraints_CreateTranslate(uint32 axis, float32 min, float32 max); +VCAttribute *VCConstraints_CreateTranslateX(float32 min, float32 max); +VCAttribute *VCConstraints_CreateTranslateY(float32 min, float32 max); +VCAttribute *VCConstraints_CreateTranslateZ(float32 min, float32 max); +VCAttribute *VCConstraints_CreateRotate(uint32 axis, float32 min, float32 max); +VCAttribute *VCConstraints_CreateRotateX(float32 min, float32 max); +VCAttribute *VCConstraints_CreateRotateY(float32 min, float32 max); +VCAttribute *VCConstraints_CreateRotateZ(float32 min, float32 max); + +#define VCEntity_DetachConstraints(e,a) VCEntity_DetachAttribute(e,a) +#define VCConstraints_Delete(a) VCAttribute_Delete(a) + +VCAttribute *VCVisualResource_Create (char *name, uint32 mode, float32 frameRate, float32 iod, + float32 convergence, VCColour backGround, + float32 nearClip, float32 farClip, VCColour fogColour, + float32 nearFlog, float32 farFog, float32 lodScale, + uint32 actorId); +VCAttribute *VCVisualResource_CreateData (VCVisualResourceData *visualResource); +int VCVisualResource_Get (VCAttribute *attribute, char **name, uint32 *mode, + float32 *frameRate, float32 *iod, float32 *convergence, + VCColour backGround, float32 *nearClip, float32 *farClip, + VCColour fogColour, float32 *nearFog, float32 *farFog, + float32 *lodScale, uint32 *actorId); +int VCVisualResource_GetData (VCAttribute *attribute, VCVisualResourceData *visualResource); +int VCVisualResource_Set (VCAttribute *attribute, uint32 setMode, + uint32 clearMode, float32 *frameRate, float32 *iod, + float32 *convergence, VCColour backGround, + float32 *nearClip, float32 *farClip, VCColour fogColour, + float32 *nearFog, float32 *farFog, float32 *lodScale); +int VCVisualResource_SetData (VCAttribute *attribute, VCVisualResourceData *visualResource); +VCAttribute *VCEntity_AddVisualResourceData(VCEntity *entity, VCVisualResourceData *data); +VCAttribute *VCEntity_AddVisualResource (VCEntity *entity, char *name, uint32 mode, + float32 frameRate, float32 iod, float32 convergence, + VCColour backGround, float32 nearClip, float32 farClip, + VCColour fogColour, float32 nearFlog, float32 farFog, + float32 lodScale, uint32 actorId); + +#define VCEntity_DetachVisualResource(e,a) VCEntity_DetachAttribute(e,a) +#define VCVisualResource_Delete(a) VCAttribute_Delete(a) + +int VCVisualResource_SetMode (VCAttribute *attribute, uint32 mode); +int VCVisualResource_ModifyMode (VCAttribute *attribute, uint32 setMode, uint32 clearMode); +int VCVisualResource_SetFrameRate (VCAttribute *attribute, float32 frameRate); +int VCVisualResource_SetIod (VCAttribute *attribute, float32 iod); +int VCVisualResource_SetConvergence (VCAttribute *attribute, float32 convergence); +int VCVisualResource_SetBackground (VCAttribute *attribute, VCColour backGround); +int VCVisualResource_SetNearClip (VCAttribute *attribute, float32 nearClip); +int VCVisualResource_SetFarClip (VCAttribute *attribute, float32 farClip); +int VCVisualResource_SetFogColour (VCAttribute *attribute, VCColour fogColour); +int VCVisualResource_SetNearFog (VCAttribute *attribute, float32 nearFog); +int VCVisualResource_SetFarFog (VCAttribute *attribute, float32 farFog); +int VCVisualResource_SetLodScale (VCAttribute *attribute, float32 lodScale); +int VCVisualResource_GetName (VCAttribute *attribute, char **name); +int VCVisualResource_GetMode (VCAttribute *attribute, uint32 *mode); +int VCVisualResource_GetFrameRate (VCAttribute *attribute, float32 *frameRate); +int VCVisualResource_GetIod (VCAttribute *attribute, float32 *iod); +int VCVisualResource_GetConvergence (VCAttribute *attribute, float32 *convergence); +int VCVisualResource_GetBackground (VCAttribute *attribute, VCColour backGround); +int VCVisualResource_GetNearClip (VCAttribute *attribute, float32 *nearClip); +int VCVisualResource_GetFarClip (VCAttribute *attribute, float32 *farClip); +int VCVisualResource_GetFogColour (VCAttribute *attribute, VCColour fogColour); +int VCVisualResource_GetNearFog (VCAttribute *attribute, float32 *nearFog); +int VCVisualResource_GetFarFog (VCAttribute *attribute, float32 *farFog); +int VCVisualResource_GetLodScale(VCAttribute *attribute, float32 *lodScale); +int VCVisualResource_GetActorId(VCAttribute *attribute, uint32 *actorId); + +#define VCVisualResource_SetFogColor(a,c) VCVisualResource_SetFogColour(a,c) +#define VCVisualResource_GetFogColor(a,c) VCVisualResource_GetFogColour(a,c) + +VCAttribute *VCAudioResource_Create (char *name, uint32 mode, float32 iad, float32 volume, + float32 spreadingRollOff, float32 atmosAbsorb,char *hrtf, + char *resourceFileName); +VCAttribute *VCAudioResource_CreateData (VCAudioResourceData *audioData); +VCAttribute *VCEntity_AddAudioResourceData(VCEntity *entity, VCAudioResourceData *data); +VCAttribute *VCEntity_AddAudioResource (VCEntity *entity, char *name, uint32 mode, float32 iad, + float32 volume, float32 spreadingRollOff, float32 atmosAbsorb, + char *hrtf, char *resourceFileName); +int VCAudioResource_Set (VCAttribute *attribute, uint32 setMode, + uint32 clearMode, float32 *iad, float32 *volume, + float32 *spreadingRollOff, float32 *atmosphericAbsorption, + char *hrtf, char *resourceFileName); +int VCAudioResource_SetData (VCAttribute *attribute,VCAudioResourceData *audioData); +int VCAudioResource_Get (VCAttribute *attribute, char **name, uint32 *mode, + float32 *iad, float32 *volume, + float32 *spreadingRollOff, float32 *atmosphericAbsorption, + char **hrtf, char **resourceFileName); +int VCAudioResource_GetData (VCAttribute *attribute,VCAudioResourceData *audioData); +#define VCEntity_DetachAudioResource(e,a) VCEntity_DetachAttribute(e,a) +#define VCAudioResource_Delete(a) VCAttribute_Delete(a) + +int VCAudioResource_SetIad (VCAttribute *attribute, float32 iad); +int VCAudioResource_SetMode (VCAttribute *attribute, uint32 mode); +int VCAudioResource_ModifyMode (VCAttribute *attribute, uint32 setMode, uint32 clearMode); +int VCAudioResource_SetVolume (VCAttribute *attribute, float32 volume); +int VCAudioResource_SetHrtf (VCAttribute *attribute, char *hrtf); +int VCAudioResource_SetResourceFileName (VCAttribute *attribute, char *resourceName); +int VCAudioResource_SetSpreadingRollOff (VCAttribute *attribute, float32 spreadingRollOff); +int VCAudioResource_SetAtmosphericAbsorption (VCAttribute *attribute, + float32 atmosphericAbsorption); + +int VCAudioResource_GetName (VCAttribute *attribute, char **name); +int VCAudioResource_GetMode (VCAttribute *attribute, uint32 *mode); +int VCAudioResource_GetIad (VCAttribute *attribute, float32 *iad); +int VCAudioResource_GetVolume (VCAttribute *attribute, float32 *volume); +int VCAudioResource_GetHrtf (VCAttribute *attribute, char **hrtf); +int VCAudioResource_GetResourceFileName (VCAttribute *attribute, char **resourceName); +int VCAudioResource_GetSpreadingRollOff (VCAttribute *attribute, + float32 *spreadingRollOff); +int VCAudioResource_GetAtmosphericAbsorption (VCAttribute *attribute, + float32 *atomsphericAbsorption); + + + +VCAttribute *VCInputResource_Create (char *name, uint32 mode, VCInput *input); +VCAttribute *VCInputResource_CreateData (VCInputResourceData *inputData); +VCAttribute *VCEntity_AddInputResourceData(VCEntity *entity, VCInputResourceData *data); +VCAttribute *VCEntity_AddInputResource (VCEntity *entity, char *name, uint32 mode, VCInput *input); +int VCInputResource_Set (VCAttribute *attribute, uint32 setMode, + uint32 clearMode, VCInput *input); +int VCInputResource_SetData (VCAttribute *attribute, VCInputResourceData *inputData); +int VCInputResource_Get (VCAttribute *attribute, char **name, + uint32 *mode, VCInput **input); +int VCInputResource_GetData (VCAttribute *attribute, VCInputResourceData *inputData); +int VCInputResource_SetMode (VCAttribute *attribute, uint32 mode); +int VCInputResource_ModifyMode (VCAttribute *attribute, uint32 setMode, uint32 clearMode); +int VCInputResource_GetName (VCAttribute *attribute, char **name); +int VCInputResource_GetMode (VCAttribute *attribute, uint32 *mode); +int VCInputResource_GetInput (VCAttribute *attribute, VCInput **input); + + +#define VCEntity_DetachInputResource(e,a) VCEntity_DetachAttribute(e,a) +#define VCInputResource_Delete(a) VCAttribute_Delete(a) + +VCAttribute *VCSensorResource_Create (char *name, uint32 mode, VCTracker *tracker, uint32 sensorId, + float32 scaleTranslate[3], float32 scaleRotate[3], + float32 translationCurveOrder[3], float32 rotationCurveOrder[3], + dmPoint prePosition, dmPoint postPosition, dmEuler preEuler, + dmEuler postEuler, float32 relativeSphere[6], VCPosition *position, + VCConstraintsData *constraints); +VCAttribute *VCSensorResource_CreateData (VCSensorResourceData *sensorData); +VCAttribute *VCEntity_AddSensorResourceData(VCEntity *entity, VCSensorResourceData *data); +VCAttribute *VCEntity_AddSensorResource (VCEntity *entity, char *name, uint32 mode, VCTracker *tracker, + uint32 sensorId, float32 scaleTranslate[3], + float32 scaleRotate[3],float32 translationCurveOrder[3], + float32 rotationCurveOrder[3], dmPoint prePosition, + dmPoint postPosition, dmEuler preEuler, dmEuler postEuler, + float32 relativeSphere[6], + VCPosition *position, VCConstraintsData *constraints); + +int VCSensorResource_Set (VCAttribute *attribute, uint32 setMode, uint32 clearMode, + float32 scaleTranslate[3], + float32 scaleRotate[3], float32 translationCurveOrder[3], + float32 rotationCurveOrder[3], dmPoint prePosition, + dmPoint postPosition, dmEuler preEuler, dmEuler postEuler, + float32 relativeSphere[6], VCPosition *position, + VCConstraintsData *constraints); +int VCSensorResource_SetData (VCAttribute *attribute, VCSensorResourceData *sensorData); +int VCSensorResource_Get (VCAttribute *attribute, char **name, + uint32 *mode, VCTracker **tracker, uint32 *sensorId, + float32 scaleTranslate[3], float32 scaleRotate[3], + float32 translationCurveOrder[3], float32 rotationCurveOrder[3], + dmPoint prePosition, dmPoint postPosition, dmEuler preEuler, + dmEuler postEuler, float32 relativeSphere[6], + VCPosition **position, VCConstraintsData *constraints); +int VCSensorResource_GetData (VCAttribute *attribute, VCSensorResourceData *sensorData); + + +#define VCEntity_DetachSensorResource(e,a) VCEntity_DetachAttribute(e,a) +#define VCSensorResource_Delete(a) VCAttribute_Delete(a) + +int VCSensorResource_ModifyMode(VCAttribute *attribute, uint32 setMode, uint32 clearMode); +int VCSensorResource_SetMode(VCAttribute *attribute, uint32 mode); +int VCSensorResource_SetTranslationScale(VCAttribute *attribute, float32 scaleTranslate[3]); +int VCSensorResource_SetRotationScale(VCAttribute *attribute, float32 scaleRotate[3]); +int VCSensorResource_SetTranslationCurveOrder(VCAttribute *attribute, float32 curveOrder[3]); +int VCSensorResource_SetRotationCurveOrder(VCAttribute *attribute, float32 curveOrder[3]); +int VCSensorResource_SetPrePosition(VCAttribute *attribute, dmPoint prePosition); +int VCSensorResource_SetPostPosition(VCAttribute *attribute, dmPoint postPosition); +int VCSensorResource_SetPreEuler(VCAttribute *attribute, dmEuler preEuler); +int VCSensorResource_SetPostEuler(VCAttribute *attribute, dmEuler postEuler); +int VCSensorResource_SetRelativeSphere(VCAttribute *attribute, float32 relativeSphere[6]); +int VCSensorResource_SetPosition(VCAttribute *attribute, VCPosition *pos); +int VCSensorResource_SetConstraints(VCAttribute *attribute, VCConstraintsData *constraints); +int VCSensorResource_GetName(VCAttribute *attribute, char **name); +int VCSensorResource_GetMode(VCAttribute *attribute, uint32 *mode); +int VCSensorResource_GetTracker(VCAttribute *attribute, VCTracker **tracker); +int VCSensorResource_GetSensorId(VCAttribute *attribute, uint32 *sensorId); +int VCSensorResource_GetTranslationScale(VCAttribute *attribute, float32 scaleTranslate[3]); +int VCSensorResource_GetRotationScale(VCAttribute *attribute, float32 scaleRotate[3]); +int VCSensorResource_GetTranslationCurveOrder(VCAttribute *attribute, float32 curveOrder[3]); +int VCSensorResource_GetRotationCurveOrder(VCAttribute *attribute, float32 curveOrder[3]); +int VCSensorResource_GetPrePosition(VCAttribute *attribute, dmPoint prePosition); +int VCSensorResource_GetPostPosition(VCAttribute *attribute, dmPoint postPosition); +int VCSensorResource_GetPreEuler(VCAttribute *attribute, dmEuler preEuler); +int VCSensorResource_GetPostEuler(VCAttribute *attribute, dmEuler postEuler); +int VCSensorResource_GetRelativeSphere(VCAttribute *attribute, float32 relativeSphere[6]); +int VCSensorResource_GetPosition(VCAttribute *attribute, VCPosition **pos); +int VCSensorResource_GetConstraints(VCAttribute *attribute, VCConstraintsData *constraints); + + +VCAttribute *VCVectorIntersect_Create (uint32 mode, float32 length, uint32 mask, + int32 numIntersections); +VCAttribute *VCVectorIntersect_CreateData (VCVectorIntersectData *intersectData); + +VCAttribute *VCEntity_AddVectorIntersectData(VCEntity *entity, VCVectorIntersectData *data); +VCAttribute *VCEntity_AddVectorIntersect (VCEntity *entity, uint32 mode, float32 length, + uint32 mask, int32 numIntersections); +int VCVectorIntersect_Set (VCAttribute *attribute, uint32 setMode, + uint32 clearMode, float32 *length, uint32 setMask, + uint32 clearMaks, int32 *numIntersections); +int VCVectorIntersect_SetData (VCAttribute *attribute, VCVectorIntersectData *intersectData); +int VCVectorIntersect_Get (VCAttribute *attribute, uint32 *mode, + float32 *length, uint32 *mask, int32 *numIntersections, + VCIntersection **intersection); +int VCVectorIntersect_GetData (VCAttribute *attribute, VCVectorIntersectData *intersectData); +int VCVectorIntersect_Delete(VCAttribute *attribute); +#define VCEntity_DetachVectorIntersect(e,a) VCEntity_DetachAttribute(e,a) + + +int VCVectorIntersect_SetMode (VCAttribute *attribute, uint32 mode); +int VCVectorIntersect_ModifyMode (VCAttribute *attribute, uint32 setMode, uint32 clearMode); +int VCVectorIntersect_SetLength (VCAttribute *attribute, float32 kength); +int VCVectorIntersect_SetIntersectMask (VCAttribute *attribute, uint32 mask); +int VCVectorIntersect_ModifyIntersectMask (VCAttribute *attribute, uint32 setMask, + uint32 clearMask); +int VCVectorIntersect_SetNumberIntersections (VCAttribute *attribute, int32 numIntersections); +int VCVectorIntersect_SetIntersection (VCAttribute *attribute, VCIntersection *intersection); + +int VCVectorIntersect_GetMode (VCAttribute *attribute, uint32 *mode); +int VCVectorIntersect_GetLength (VCAttribute *attribute, float32 *length); +int VCVectorIntersect_GetIntersectMask (VCAttribute *attribute, uint32 *mask); +int VCVectorIntersect_GetNumberIntersections (VCAttribute *attribute, int32 numIntersections); +int VCVectorIntersect_GetIntersection (VCAttribute *attribute, VCIntersection **intersection); +void *VCVectorIntersect_AttachIntersectionCreateCallback(VCAttribute *intersect, + VCIntersection_Func func, void *data); +void *VCVectorIntersect_AttachIntersectionUpdateCallback(VCAttribute *intersect, + VCIntersection_Func func, void *data); +void *VCVectorIntersect_AttachIntersectionDeleteCallback(VCAttribute *intersect, + VCIntersection_Func func, void *data); + +int VCVectorIntersect_DetachIntersectionCreateCallback(VCAttribute *intersect, void *callbackHandle); +int VCVectorIntersect_DetachIntersectionUpdateCallback(VCAttribute *intersect, void *callbackHandle); + +int VCVectorIntersect_DetachIntersectionDeleteCallback(VCAttribute *intersect, void *callbackHandle); + + + + + + +VCAttribute *VCVisualEffect_Create (uint32 mode, uint32 type, dmPoint offset, float32 *data, + char *texture); +VCAttribute *VCVisualEffect_CreateData (VCVisualEffectData *visEffectData); +VCAttribute *VCEntity_AddVisualEffectData(VCEntity *entity, VCVisualEffectData *data); +VCAttribute *VCEntity_AddVisualEffect (VCEntity *entity, uint32 mode, uint32 type, + dmPoint offset, float *data, char *texture); +int VCVisualEffect_Set (VCAttribute *attribute, uint32 setMode, uint32 clearMode, + uint32 *type, dmPoint offset, float data[72], char *texture); +int VCVisualEffect_SetData (VCAttribute *attribute,VCVisualEffectData *visEffectData); +int VCVisualEffect_Get (VCAttribute *attribute, uint32 *mode, uint32 *type, + dmPoint offset, float32 data[72], char **texture); +int VCVisualEffect_GetData (VCAttribute *attribute,VCVisualEffectData *visEffectData); +#define VCEntity_DetachVisualEffect(e,a) VCEntity_DetachAttribute(e,a) +#define VCVisualEffect_Delete(a) VCAttribute_Delete(a) +#define VCEntity_AddVisualEffectExplosion(e,t,o,te) VCEntity_AddVisualEffect(e,VC_VISUALEFFECT_MODE_EXPLOSION,t,o,NULL,te) +#define VCVisualEffect_CreateExplosion(t,o,te) VCVisualEffect_Create(VC_VISUALEFFECT_MODE_EXPLOSION,t,o,NULL,te) +#define VCVisualEffect_StartExplosion(a,o) VCVisualEffect_Set(a,VC_VISUALEFFECT_ENABLE,0,NULL,o,NULL,NULL) + +int VCVisualEffect_SetMode (VCAttribute *attribute, uint32 mode); +int VCVisualEffect_ModifyMode (VCAttribute *attribute, uint32 setMode, uint32 clearMode); +int VCVisualEffect_SetType (VCAttribute *attribute, uint32 type); +int VCVisualEffect_SetOffset (VCAttribute *attribute, dmPoint offset); +int VCVisualEffect_SetInfo (VCAttribute *attribute, float32 info[72]); +int VCVisualEffect_SetTexture (VCAttribute *attribute, char *texture); + +int VCVisualEffect_GetMode (VCAttribute *attribute, uint32 *mode); +int VCVisualEffect_GetType (VCAttribute *attribute, uint32 *type); +int VCVisualEffect_GetOffset (VCAttribute *attribute, dmPoint offset); +int VCVisualEffect_GetInfo (VCAttribute *attribute, float32 info[72]); +int VCVisualEffect_GetTexture (VCAttribute *attribute, char **texture); + + +VCAttribute *VCDynamics_Create (uint32 mode, float32 imass, float32 gmass, dmPoint centre, + float32 *iTensor, float32 spring, float32 damper, + float32 sFriction, float32 dFriction); +VCAttribute *VCDynamics_CreateData (VCDynamicsData *dynamicData); +int VCDynamics_Get (VCAttribute *attribute, uint32 *mode, float32 *imass, + float32 *gmass, dmPoint centre, float32 itensor[6], + float32 *spring, float32 *damper, float32 *sFriction, + float32 *dFricition); +int VCDynamics_GetData (VCAttribute *attribute, VCDynamicsData *dynamicData); +VCAttribute *VCEntity_AddDynamicsData(VCEntity *entity, VCDynamicsData *data); +VCAttribute *VCEntity_AddDynamics (VCEntity *entity, uint32 mode, float32 imass, float32 gmass, + dmPoint centre, float32 *iTensor, float32 spring, + float32 damper, float32 sFriction, float32 dFriction); +int VCDynamics_Set (VCAttribute *attribute, uint32 setMode, + uint32 clearMode, float32 *imass, float32 *gmass, + dmPoint centre, float32 *iTensor, float32 *spring, + float32 *damper, float32 *sFriction, float32 *dFriction); +int VCDynamics_SetData (VCAttribute *attribute, VCDynamicsData *dynamicData); +#define VCEntity_DetachDynamics(e,a) VCEntity_DetachAttribute(e,a) +#define VCDynamics_Delete(a) VCAttribute_Delete(a) + +int VCDynamics_SetMode (VCAttribute *attribute, uint32 mode); +int VCDynamics_ModifyMode (VCAttribute *attribute, uint32 setMode, uint32 clearMode); +int VCDynamics_SetImass (VCAttribute *attribute, float32 imass); +int VCDynamics_SetGmass (VCAttribute *attribute, float32 gmass); +int VCDynamics_SetCentre (VCAttribute *attribute, dmPoint centre); +int VCDynamics_SetItensor (VCAttribute *attribute, float32 *itensor); +int VCDynamics_SetSpring (VCAttribute *attribute, float32 spring); +int VCDynamics_SetDamper (VCAttribute *attribute, float32 damper); +int VCDynamics_SetStaticFriction (VCAttribute *attribute, float32 sFriction); +int VCDynamics_SetDynamicFriction (VCAttribute *attribute, float32 dFriction); +int VCDynamics_GetMode (VCAttribute *attribute, uint32 *mode); +int VCDynamics_GetImass (VCAttribute *attribute, float32 *imass); +int VCDynamics_GetGmass (VCAttribute *attribute, float32 *gmass); +int VCDynamics_GetCentre (VCAttribute *attribute, dmPoint centre); +int VCDynamics_GetItensor (VCAttribute *attribute, float32 itensor[6]); +int VCDynamics_GetSpring (VCAttribute *attribute, float32 *spring); +int VCDynamics_GetDamper (VCAttribute *attribute, float32 *damper); +int VCDynamics_GetStaticFriction (VCAttribute *attribute, float32 *sFriction); +int VCDynamics_GetDynamicFriction (VCAttribute *attribute, float32 *dFriction); + + +VCAttribute *VCForce_Create (uint32 mode, dmVector force, dmPoint point); +VCAttribute *VCForce_CreateData (VCForceData *forceData); +int VCForce_Get (VCAttribute *attribute, uint32 *mode, dmVector force, dmPoint point); +int VCForce_GetData (VCAttribute *attribute, VCForceData *forceData); +VCAttribute *VCEntity_AddForceData(VCEntity *entity, VCForceData *data); +VCAttribute *VCEntity_AddForce (VCEntity *entity, uint32 mode, dmVector force, dmPoint point); +int VCForce_Set (VCAttribute *attribute, uint32 setMode, + uint32 clearMode, dmVector force, dmPoint point); +int VCForce_SetData (VCAttribute *attribute, VCForceData *forceData); + + + +#define VCEntity_DetachForce(e,a) VCEntity_DetachAttribute(e,a) +#define VCForce_Delete(a) VCAttribute_Delete(a) + +int VCForce_SetMode (VCAttribute *attribute, uint32 mode); +int VCForce_ModifyMode (VCAttribute *attribute, uint32 setMode, uint32 clearMode); +int VCForce_SetForce (VCAttribute *attribute, dmVector force); +int VCForce_SetPoint (VCAttribute *attribute, dmPoint point); +int VCForce_GetMode (VCAttribute *attribute, uint32 *mode); +int VCForce_GetForce (VCAttribute *attribute, dmVector force); +int VCForce_GetPoint (VCAttribute *attribute, dmPoint point); + + + +VCAttribute *VCZone_Create (uint32 mode, uint32 actorMask); +VCAttribute *VCZone_CreateData (VCZoneData *zoneData); +int VCZone_Get (VCAttribute *attribute, uint32 *mode, uint32 *actorMask); +int VCZone_GetData (VCAttribute *attribute, VCZoneData *zoneData); +VCAttribute *VCEntity_AddZoneData(VCEntity *entity, VCZoneData *data); +VCAttribute *VCEntity_AddZone (VCEntity *entity, uint32 mode, uint32 actorMask); +int32 VCZone_Set (VCAttribute *attribute, uint32 setMode, + uint32 clearMode, uint32 setActorMask, uint32 clearActorMask); +int VCZone_SetData (VCAttribute *attribute, VCZoneData *zoneData); +#define VCEntity_DetachZone(e,a) VCEntity_DetachAttribute(e,a) +#define VCZone_Delete(a) VCAttribute_Delete(a) + +int VCZone_SetMode (VCAttribute *attribute, uint32 mode); +int VCZone_ModifyMode (VCAttribute *attribute, uint32 setMode, uint32 clearMode); +int VCZone_SetActorMask (VCAttribute *attribute, uint32 mask); +int VCZone_ModifyActorMask (VCAttribute *attribute, uint32 setMask, uint32 clearMask); +int VCZone_GetMode(VCAttribute *attribute, uint32 *mode); +int VCZone_GetActorMask(VCAttribute *attribute, uint32 *mask); + + + +#endif /* _VCOBJECT_H */ diff --git a/CODE/RP/MUNGA_L4/libDPL/dvs/VCSTRUCT.H b/CODE/RP/MUNGA_L4/libDPL/dvs/VCSTRUCT.H new file mode 100644 index 0000000..57097e9 --- /dev/null +++ b/CODE/RP/MUNGA_L4/libDPL/dvs/VCSTRUCT.H @@ -0,0 +1,215 @@ + +struct VCActorConfig +{ + char *actorName; + char *domainName; + char *domainExtName; + char *userName; + char *userDir; + char *logName; + char *configData; + int32 verbose; + int32 enable; + int32 testMode; + FILE *fpLog; +}; + +struct VCBodyCreate_CallbackData +{ + VCBody *body; +}; + +struct VCBodyAttribute_CallbackData +{ + VCBody *body; + VCAttribute *bodyPart; + VCAttribute *attribute; +}; + +struct VCBodyPartCreate_CallbackData +{ + VCBody *body; + VCAttribute *bodyPart; +}; + +struct VCTimer_CallbackData +{ + uint32 dummy; +}; + + +struct VCExit_CallbackData +{ + uint32 dummy; +}; + +struct VCGroup_CallbackData +{ + uint32 operation; +}; + + + +struct VCBodyInput_CallbackData +{ + VCBody *body; + VCAttribute *bodyPart; + uint32 keyCode; +}; + +struct VCBodyCollision_CallbackData +{ + VCBody *body; + VCAttribute *bodyPart; + VCCollision *collision; +}; + +struct VCInput_UpdateCallbackData +{ + VCInput *input; + VCAttribute *inputResource; + uint32 keyCode; +}; + +struct VCInput_CallbackData +{ + VCInput *input; + VCAttribute *inputResource; + uint32 keyCode; +}; + + +struct VCEntityRelocate_CallbackData +{ + VCEntity *entity; + VCPositionData *pos; + uint32 flags; +}; + +struct VCEntityInvalid_CallbackData +{ + VCEntity *entity; +}; + +struct VCAttributeRelocate_CallbackData +{ + VCEntity *entity; + int32 index; + VCAttribute *attribute; + VCPositionData *pos; + uint32 flags; +}; + +struct VCEntityAttribute_CallbackData +{ + VCEntity *entity; + int32 index; + VCAttribute *attribute; +}; + +struct VCAttribute_CallbackData +{ + VCAttribute *attribute; +}; + +struct VCCollision_CallbackData +{ + VCCollision *collision; +}; + +struct VCIntersection_CallbackData +{ + VCIntersection *intersection; +}; + +struct VCMaterial_CallbackData +{ + VCMaterial *material; +}; + +struct VCRadiator_CallbackData +{ + VCRadiator *radiator; +}; + +struct VCXWindowId_CallbackData +{ + VCXWindowId *xwindowId; +}; + +struct VCVisualViewResource_CallbackData +{ + VCVisualViewResource *view; +}; + +struct VCPseudoGravity_CallbackData +{ + VCPseudoGravity *pseudoGravity; +}; + +struct VCResourceAllocate_CallbackData +{ + char *name; +}; + + +struct VCPosition_CallbackData +{ + VCPosition *position; +}; + +struct VCTracker_CallbackData +{ + VCTracker *tracker; +}; + +struct VCSync_CallbackData +{ + VCSync *sync; +}; + +struct VCCollideMonitor_CallbackData +{ + VCCollideMonitor *collideMonitor; +}; + +struct VCTrackerMonitor_CallbackData +{ + VCTrackerMonitor *trackerMonitor; +}; + +struct VCVisualMonitor_CallbackData +{ + VCVisualMonitor *visualMonitor; +}; + +struct VCTexture_CallbackData +{ + VCTexture *texture; +}; + +struct VCRamp_CallbackData +{ + VCRamp *ramp; +}; + +typedef struct +{ + char *configName; + uint32 debug; + char *nameExt; + int logging; + char *logExt; + char *domainName; + int testMode; + uint32 verbose; +}VCCommandLineOptions ; + + +struct VCEntityDrop_CallbackData +{ + VCBody *body; + VCAttribute *bodyPart; + VCEntity *droppedEntity; +}; + diff --git a/CODE/RP/MUNGA_L4/libDPL/dvs/VCTYPES.H b/CODE/RP/MUNGA_L4/libDPL/dvs/VCTYPES.H new file mode 100644 index 0000000..9849304 --- /dev/null +++ b/CODE/RP/MUNGA_L4/libDPL/dvs/VCTYPES.H @@ -0,0 +1,178 @@ +/*************************************************************************** + * + * PROJECT: dVS + * SUBSYSTEM: VC Toolkit. + * MODULE: VC Type definitions. + * + *************************************************************************** + * + * File: $RCSfile: vctypes.h,v $ + * Revision: $Revision: 1.1 $ + * Date: $Date: 95/05/18 10:24:19 $ + * Author: $Author: john $ + * RCS Ident: $Id: vctypes.h,v 1.1 1995/03/10 14:52:46 john Exp $ + * + * FUNCTION: + * + * + * + ************************************************************************** + * * + * Copyright (c) 1992 Division Ltd. * + * * + * All Rights Reserved. * + * * + * This Document may not, in whole or in part, be copied, photocopied, * + * reproduced, translated, or reduced to any electronic medium or * + * machine readable form without prior written consent from Division * + * Ltd. * + * * + *************************************************************************/ + +#ifndef _VCTYPES_H +#define _VCTYPES_H + +typedef struct VCBody VCBody; +typedef struct VCEntity VCEntity; +typedef struct VCAttribute VCAttribute; +typedef struct VCCollision VCCollision; +typedef struct VCIntersection VCIntersection; +typedef struct VCMaterial VCMaterial; +typedef struct VCRadiator VCRadiator; +typedef struct VCXWindowId VCXWindowId; +typedef struct VCVisualViewResource VCVisualViewResource; +typedef struct VCPseudoGravity VCPseudoGravity; +typedef struct VCTexture VCTexture; +typedef struct VCRamp VCRamp; +typedef struct VCInput VCInput; +typedef struct VCPosition VCPosition; +typedef struct VCTracker VCTracker; +typedef struct VCSync VCSync; +typedef struct VCMonitor VCCollideMonitor; +typedef struct VCMonitor VCTrackerMonitor; +typedef struct VCMonitor VCVisualMonitor; +typedef struct VCDynamicVisual VCDynamicVisual; +typedef struct VCLod VCLod; +typedef struct VCGeogroup VCGeogroup; +typedef struct VCGeometry VCGeometry; +typedef struct VCConnectionList VCConnectionList; + + +typedef struct VCCollisionReport_Traverse VCCollisionReport_Traverse; +typedef struct VCIntersectionReport_Traverse VCIntersectionReport_Traverse; +typedef struct VCEntity_Traverse VCEntity_Traverse; +typedef struct VCActorConfig VCActorConfig; +typedef struct VCEntity_AttributeTraverse VCEntity_AttributeTraverse; +typedef struct VCAttribute_EntityTraverse VCAttribute_EntityTraverse; + +typedef struct VCBody_Traverse VCBody_Traverse; +typedef struct VCBody_AttributeTraverse VCBody_AttributeTraverse; +typedef struct VCVisualView_Traverse VCVisualView_Traverse; +typedef struct VCUserDataList VCUserDataList; + +typedef struct VCCallbackFunctions VCCallbackFunctions; +typedef struct VCBodyCreate_CallbackData VCBodyCreate_CallbackData; +typedef struct VCBodyInput_CallbackData VCBodyInput_CallbackData; +typedef struct VCBodyCollision_CallbackData VCBodyCollision_CallbackData; +typedef struct VCBodyAttribute_CallbackData VCBodyAttribute_CallbackData; +typedef struct VCBodyPartCreate_CallbackData VCBodyPartCreate_CallbackData; + +typedef struct VLSignalEvent VCSignal_CallbackData; +typedef struct VLStreamEvent VCStream_CallbackData; +typedef struct VCResourceAllocate_CallbackData VCResourceAllocate_CallbackData; +typedef struct VCCollision_CallbackData VCCollision_CallbackData; +typedef struct VCIntersection_CallbackData VCIntersection_CallbackData; +typedef struct VCMaterial_CallbackData VCMaterial_CallbackData; +typedef struct VCRadiator_CallbackData VCRadiator_CallbackData; +typedef struct VCXWindowId_CallbackData VCXWindowId_CallbackData; +typedef struct VCVisualViewResource_CallbackData VCVisualViewResource_CallbackData; +typedef struct VCPseudoGravity_CallbackData VCPseudoGravity_CallbackData; +typedef struct VCPosition_CallbackData VCPosition_CallbackData; +typedef struct VCTracker_CallbackData VCTracker_CallbackData; +typedef struct VCSync_CallbackData VCSync_CallbackData; +typedef struct VCCollideMonitor_CallbackData VCCollideMonitor_CallbackData; +typedef struct VCTrackerMonitor_CallbackData VCTrackerMonitor_CallbackData; +typedef struct VCVisualMonitor_CallbackData VCVisualMonitor_CallbackData; +typedef struct VCTexture_CallbackData VCTexture_CallbackData; +typedef struct VCRamp_CallbackData VCRamp_CallbackData; +typedef struct VCInput_CallbackData VCInput_CallbackData; +typedef struct VCInput_UpdateCallbackData VCInput_UpdateCallbackData; +typedef struct VCAttribute_CallbackData VCAttribute_CallbackData; +typedef struct VCEntityRelocate_CallbackData VCEntityRelocate_CallbackData; +typedef struct VCEntityInvalid_CallbackData VCEntityInvalid_CallbackData; +typedef struct VCAttributeRelocate_CallbackData VCAttributeRelocate_CallbackData; +typedef struct VCEntityAttribute_CallbackData VCAttributeInvalid_CallbackData; +typedef struct VCEntityAttribute_CallbackData VCEntityAttribute_CallbackData; +typedef struct VCEntityDrop_CallbackData VCEntityDrop_CallbackData; +typedef struct VCTimer_CallbackData VCTimer_CallbackData; +typedef struct VCExit_CallbackData VCExit_CallbackData; +typedef struct VCGroup_CallbackData VCGroup_CallbackData; +typedef float32 VCSpecular[4]; + +/* + * function types for general callback routines + */ + +typedef void (*VC_SignalFunc) (VCSignal_CallbackData *callbackData, void *data); +typedef void (*VC_ExitFunc) (VCExit_CallbackData *callbackData, void *data); +typedef void (*VC_GroupFunc) (VCGroup_CallbackData *callbackData, void *data); +typedef void (*VC_StreamFunc) (VCStream_CallbackData *streamData, void *data); +typedef void (*VC_CallbackFunc) (VLInstanceEvent *instanceData, void *data); + +/* + * function types for body routines + */ + +typedef void (*VC_VersionFunc) (FILE *fp); +typedef void (*VCBody_CreateFunc) (VCBodyCreate_CallbackData *bodyData, void *data); +typedef void (*VCBody_CreateBodyPartFunc) (VCBodyPartCreate_CallbackData *callbackData, void *data); +typedef void (*VCBody_AttributeFunc) (VCBodyAttribute_CallbackData *callbackData, void *data); +typedef void (*VCBody_InputFunc) (VCBodyInput_CallbackData *callbackData, void *data); +typedef void (*VCBody_CollisionFunc) (VCBodyCollision_CallbackData *callbackData, void *data); +typedef void (*VCEntity_DropFunc) (VCEntityDrop_CallbackData *callbackData, void *data); + +/* + * function types for Resource routines + */ + +typedef VCAttribute *(*VCResource_AllocateFunc) (VCResourceAllocate_CallbackData *callbackData, void *data); + +/* + * function types for vchierarchy routines + */ + +typedef void (*VCEntity_TraverseFunc) (VCEntity * entity, void *data); +typedef void (*VCEntity_Func) (VCEntity *entity, int32 index, void *data); +typedef void (*VCAttribute_Func) (VCAttribute_CallbackData *attributeData, void *data); +typedef void (*VCAttribute_RelocateFunc) (VCAttributeRelocate_CallbackData *entityData, void *data); +typedef void (*VCEntity_RelocateFunc) (VCEntityRelocate_CallbackData *entityData, void *data); +typedef void (*VCEntity_InvalidFunc) (VCEntityInvalid_CallbackData *entityData, void *data); +typedef void (*VCEntity_AttributeFunc) (VCEntityAttribute_CallbackData *attributeData, void *data); +typedef void (*VCAttribute_InvalidFunc) (VCAttributeInvalid_CallbackData *atttributeData, void *data); +typedef void (*VCCollision_Func) (VCCollision_CallbackData *callbackData, void *data); +typedef void (*VCIntersection_Func) (VCIntersection_CallbackData *callbackData, void *data); +typedef void (*VCMaterial_Func) (VCMaterial_CallbackData *attributeData, void *data); +typedef void (*VCRadiator_Func) (VCRadiator_CallbackData *attributeData, void *data); +typedef void (*VCXWindowId_Func) (VCXWindowId_CallbackData *attributeData, void *data); +typedef void (*VCVisualViewResource_Func) (VCVisualViewResource_CallbackData *attributeData, void *data); +typedef void (*VCPseudoGravity_Func) (VCPseudoGravity_CallbackData *attributeData, void *data); +typedef void (*VCPosition_Func) (VCPosition_CallbackData *attributeData, void *data); +typedef void (*VCTracker_Func) (VCTracker_CallbackData *attributeData, void *data); +typedef void (*VCSync_Func) (VCSync_CallbackData *attributeData, void *data); +typedef void (*VCCollideMonitor_Func) (VCCollideMonitor_CallbackData *attributeData, void *data); +typedef void (*VCTrackerMonitor_Func) (VCTrackerMonitor_CallbackData *attributeData, void *data); +typedef void (*VCVisualMonitor_Func) (VCVisualMonitor_CallbackData *attributeData, void *data); +typedef void (*VCInput_Func) (VCInput_CallbackData *attributeData, void *data); +typedef void (*VCInput_UpdateFunc) (VCInput_UpdateCallbackData *attributeData, void *data); +typedef void (*VCTexture_Func) (VCTexture_CallbackData *callbackData, void *data); +typedef void (*VCRamp_Func) (VCRamp_CallbackData *callbakData, void *data); +typedef void (*VCTimer_Func) (VCTimer_CallbackData *callbackData, void *data); + +typedef int (VCCallback_QueryFunc) (void *callbackQueryData, void *systemData, void *callbackData); + + + +#endif + + + diff --git a/CODE/RP/MUNGA_L4/libDPL/dvs/VCVBOSE.H b/CODE/RP/MUNGA_L4/libDPL/dvs/VCVBOSE.H new file mode 100644 index 0000000..fe24cca --- /dev/null +++ b/CODE/RP/MUNGA_L4/libDPL/dvs/VCVBOSE.H @@ -0,0 +1,100 @@ +/*************************************************************************** + * <110793.1226> + * PROJECT: dVS + * SUBSYSTEM: + * MODULE: + * + *************************************************************************** + * + * File: $RCSfile: vcvbose.h,v $ + * Revision: $Revision: 1.1 $ + * Date: $Date: 95/05/18 10:24:20 $ + * Author: $Author: john $ + * RCS Ident: $Id: vcvbose.h,v 1.1 1995/03/10 14:52:46 john Exp $ + * Creator: Jon Green. + * + * FUNCTION: + * + * + * $Log: vcvbose.h,v $ + * Revision 1.1 95/05/18 10:24:20 10:24:20 john (John Harvey) + * Initial revision + * + * Revision 1.1 1995/03/10 14:52:46 john + * Initial revision + * + * Revision 0.6 94/10/05 12:51:43 12:51:43 john (John Harvey) + * Save JH on holiday. - Jon. + * + * Revision 0.5 94/03/30 15:17:49 15:17:49 mark (Mark Greening) + * New VCActorInit and error routines + * + * Revision 0.4 1993/09/24 11:24:53 jon + * Release 2.0.4 + * + * Revision 1.1 93/07/28 14:12:08 jon + * Initial revision + * + * + ************************************************************************** + * * + * Copyright (c) 1992 Division Ltd. * + * * + * All Rights Reserved. * + * * + * This Document may not, in whole or in part, be copied, photocopied, * + * reproduced, translated, or reduced to any electronic medium or * + * machine readable form without prior written consent from Division * + * Ltd. * + * * + *************************************************************************/ + +/*--- Include Definitions */ + +#ifndef _VCVBOSE_H +#define _VCVBOSE_H 1 + +/*--- Include Files */ + +/*--- External References */ + +extern void __vcVerboseStart(int level); +extern void __vcDebugStart(int level, char *file, int line); +extern void __vcVerboseMessage(char *format, ...); +extern uint32 __vcverbose_level; +extern uint32 __vcdebug_level; + +/*--- Local Macro Definitions */ + +#define VC_Verbose(x,y) do { \ + if (__vcverbose_level & (x)) \ + { \ + __vcVerboseStart(x); \ + __vcVerboseMessage y; \ + } \ + } while (0) + +#ifdef NVCDEBUG +#undef VC_Debug +#define VC_Debug(x,y) ((void)0) + +#else +#define VC_Debug(x,y) do { \ + if (__vcdebug_level & (x)) \ + { \ + __vcDebugStart(x, __FILE__, __LINE__); \ + __vcVerboseMessage y; \ + } \ + } while (0) +#endif + +#define VCVerbose_SetLevel(x) (__vcverbose_level = (x)) +#define VCVerbose_GetLevel __vcverbose_level +#define VCDebug_SetLevel(x) (__vcdebug_level = (x)) +#define VCDebug_GetLevel __vcdebug_level + +/*--- Local Type Definitions */ + +/*--- Local Variable Declarations */ + +#endif /* _VCVBOSE_H */ diff --git a/CODE/RP/MUNGA_L4/libDPL/dvs/VL.H b/CODE/RP/MUNGA_L4/libDPL/dvs/VL.H new file mode 100644 index 0000000..1f230a6 --- /dev/null +++ b/CODE/RP/MUNGA_L4/libDPL/dvs/VL.H @@ -0,0 +1,476 @@ +/* + * PROJECT: DVS + * SUBSYSTEM: vl + * MODULE: vl.h + * + * File: $RCSfile: vl.h,v $ + * Revision: $Revision: 1.23 $ + * Date: $Date: 1995/05/18 09:43:47 $ + * Author: $Author: jeff $ + * RCS Ident: $Id: vl.h,v 1.23 1995/05/18 09:43:47 jeff beta $ + * + * FUNCTION: + * + * This file contains all the external definitions needed to use + * the vl library. + * + * Copyright (c) 1994 Division Ltd. + * + * All Rights Reserved. + * + * This Document may not, in whole or in part, be copied, + * photocopied, reproduced, translated, or reduced to any + * electronic medium or machine readable form without prior + * written consent from Division Ltd. + */ +#ifndef _VL_H +#define _VL_H + +#include + +#ifndef _VLTYPES_H +#include +#endif + +/* + * type for return of event info + */ +typedef union VLEventData VLEventData; +typedef struct VLInstanceEvent VLInstanceEvent; + +typedef struct VLSignalEvent VLSignalEvent; +typedef struct VLStreamEvent VLStreamEvent; +typedef struct VLInstInterestEvent VLInstInterestEvent; +typedef struct VLElemInterestEvent VLElemInterestEvent; +typedef struct VLElementConfirmEvent VLElementConfirmEvent; +typedef struct VLElemCreateEvent VLElemCreateEvent; +typedef struct VLTimeServiceEvent VLTimeServiceEvent; +typedef struct VLPeerEvent VLPeerEvent; +typedef struct VLBadEvent VLBadEvent; + + +struct VLInstanceEvent{ + ElementHandle handle; + InstanceNo ino; + int32 repCount; +}; + +struct VLSignalEvent{ + uint32 signal; +}; + +struct VLStreamEvent { + void *buf; + VLStreamId id; + int32 type; +}; + +struct VLInstInterestEvent{ + InstanceNo ino; + uint32 type; + ActorId actor; + EventQ queue; +}; + +struct VLElemInterestEvent{ + ElementHandle handle; + uint32 type; + ActorId actor; + EventQ queue; +}; + +struct VLElementConfirmEvent{ + ElementHandle reference; + ElementHandle confirmed; +}; + +struct VLElemCreateEvent{ + ElementHandle handle; + uint32 descSize; +}; + +struct VLTimeServiceEvent{ + VLTime time; + ActorId who; +}; + +struct VLPeerEvent{ + ActorId peer; +}; + +struct VLBadEvent { + VLStatus stat; +}; + +union VLEventData { + VLInstanceEvent instanceEvent; + VLSignalEvent signalEvent; + VLStreamEvent streamEvent; + VLInstInterestEvent instInterestEvent; + VLElemInterestEvent elemInterestEvent; + VLElementConfirmEvent elementConfirmEvent; + VLElemCreateEvent elemCreateEvent; + VLTimeServiceEvent timeServiceEvent; + VLPeerEvent peerEvent; + VLBadEvent badEvent; +}; + +/* + * fundemenatal element handles, always around. + */ +extern const ElementHandle el_char8; +extern const ElementHandle el_int8; +extern const ElementHandle el_uint8; +extern const ElementHandle el_int16; +extern const ElementHandle el_uint16; +extern const ElementHandle el_int32; +extern const ElementHandle el_uint32; +extern const ElementHandle el_float32; +extern const ElementHandle el_float64; + +/* + * get the version + */ +extern void vlVersion(FILE *fp); + +/* + * Connecting to a database, finding out name etc. + */ +extern ActorId VLAttachActor(const char8 *agentName); +extern VLStatus VLDetachActor(VLExitMode); +extern uint32 VLDomainName(char8 *name, uint32 maxNameLen); +extern AgentId VLDomainId(void); + + +/* + * Creating elements + */ +extern VLStatus VLCreateElement(int32 (*efunc)(void)); + + +/* how epp generated code defines elements.. + * For error free code.. + * + * THIS ROUTINE IS FOR USE BY EPP-GENERATED CODE + * ONLY! + * That is why its name is prefixed with 'vl' not 'VL'. + */ +extern ElementHandle vlCreateElement(char8 *name, + int32 size, + int32 alignment, + int32 atomic, + int32 dynamic, + int32 subelems, ...); + +/* + * extract an element description into a buffer + * that could be transmited to a remote data base and + * used to recreate the element there. Used by agents + * to exchange element information. + */ +extern VLStatus VLExtractElemDesc(ElementHandle h, + ElementDesc *d); + + +/* + * take an element description, probably transmitted from a remote + * machine, and create an element from it. Such an element cannot be + * properly used on the local database, without a 'vlCreateElement()' + * being performed, as offset and alignment information (which is machine + * dependant) is not available here, but the form will be created here + * with a valid element handle. This will speed up future + * vlCreateElement(), or ' VLCreateElemFromDesc()' calls at this database. + * + * THIS CREATE IS ASYNCHRONOUS. + * + * If the element creation needs to be further negotiated with a peer + * database, then a potential for deadlock in the database coms exists. + * To avoid this, VLCreateElemFromDesc() always returns imediately, with + * no status. All return info is put onto the event queue for async handling. + */ +extern VLStatus VLPeerElement(ElementDesc *d, EventQ q); + +/* + * Setting the database peer. + */ +extern VLStatus VLSetPeerActor(EventQ q); + +/* + * Arrange to get an event when the peer attatches to the database, + * error status if there will be no peer. + */ +extern VLStatus VLGetPeerActor(void); + +/* + * check to see if tha database is a master or not. + */ +extern int VLIsMasterP(void); + +/* + * Define the data format (alignment, endianess etc) of a remote + * database to this database. Return value is used to identify + * the source type of remote machines for updates with reformating. + * returns negative if there is any form of error. + */ +extern VLFormat VLDefineFormat(dpTypeSpec *s); + + +/* + * The following calls are needed to find out when a time keeper has + * connected, and to set up the timekeeper, used on those systems that + * use a timekeeper. on systems that have a local timer, these calls will + * always fail. + */ +extern VLStatus VLGetTimeKeeper(void); +extern VLStatus VLSetTimeKeeper(EventQ q); + +/* + * used by a timekeeper to wakeup actors waiting on alarms, on systems + * without a timekeeper this funcion will still work. returns + * VL_ERR_BAD_AGENT if the actor id is not recognised. + */ +extern VLStatus VLWakeUpActor(ActorId actor); + +/* + * change the state of an element to confirmed. This may involve a change + * of element handle , from 'oldh' to 'newh'. To delete an element awaiting + * confirmation set the 'newh' element handle to 0. Will return + * VL_ERR_BAD_ELEM if 'oldh' is not waiting for confirmation or is not an + * element. else returns VL_ERR_OK. + */ +extern VLStatus VLConfirmElement(ElementHandle oldh, ElementHandle newh); + + +/* + * requesting info about other actors interest at this database. + */ +#define VLRegisterElementInterest() VLQRegisterElementInterest(0) +#define VLDeRegisterElementInterest() VLQDeRegisterElementInterest(0) + +extern VLStatus (VLRegisterElementInterest)(void); +extern VLStatus (VLDeRegisterElementInterest)(void); +extern VLStatus VLQRegisterElementInterest(EventQ q); +extern VLStatus VLQDeRegisterElementInterest(EventQ q); +extern VLStatus VLRequestElementInterest(EventQ q, ElementHandle h); + +#define VLRegisterInstanceInterest(x) VLQRegisterInstanceInterest(0,x) +#define VLDeRegisterInstanceInterest(x) VLQDeRegisterInstanceInterest(0,x) + +extern VLStatus (VLRegisterInstanceInterest)(AgentId id); +extern VLStatus (VLDeRegisterInstanceInterest)(AgentId id); +extern VLStatus VLQRegisterInstanceInterest(EventQ q, AgentId); +extern VLStatus VLQDeRegisterInstanceInterest(EventQ q, AgentId); + + +/* + * Low-level routines to create/delete/update/extract + * instances from the database. + * + * THESE ROUTINES SHOULD BE CALLED FROM EPP-GENERATED CODE ONLY + * + * Epp will write type-safe access routines for you, + * + * USE THEM. + */ +#define vlCreateInstance(e,i,d,t,m) vlQCreateDynamicFormattedInstance( 0,(e),(i),(d),(t),(m),-1, -1 ) +#define vlCreateDynamicInstance(e,i,d,t,m,c) vlQCreateDynamicFormattedInstance( 0,(e),(i),(d),(t),(m),-1, (c)) +#define vlQCreateInstance(q,e,i,d,t,m) vlQCreateDynamicFormattedInstance((q),(e),(i),(d),(t),(m),-1, -1 ) +#define vlQCreateDynamicInstance(q,e,i,d,t,m,c) vlQCreateDynamicFormattedInstance((q),(e),(i),(d),(t),(m),-1, (c)) + +extern InstanceNo (vlCreateInstance)(ElementHandle elem, + InstanceNo ino, + void *data, + VLTime *vtime, + VLUpdateMode mode); +extern InstanceNo (vlQCreateInstance)(EventQ qid, + ElementHandle elem, + InstanceNo ino, + void *data, + VLTime *vtime, + VLUpdateMode mode); + +extern InstanceNo (vlCreateDynamicInstance)(ElementHandle elem, + InstanceNo ino, + void *data, + VLTime *vtime, + VLUpdateMode mode, + int32 count); + +extern InstanceNo (vlQCreateDynamicInstance)(EventQ qid, + ElementHandle elem, + InstanceNo ino, + void *data, + VLTime *vtime, + VLUpdateMode mode, + int32 count); + +extern InstanceNo vlQCreateDynamicFormattedInstance(EventQ qid, + ElementHandle elem, + InstanceNo ino, + void *data, + VLTime *vtime, + VLUpdateMode mode, + VLFormat format, + int32 count); + +#define vlDeleteInstance(i,m) vlQDeleteInstance(0,(i),(m)) + +extern VLStatus (vlDeleteInstance)(InstanceNo ino, + VLUpdateMode mode); +extern VLStatus vlQDeleteInstance(EventQ qid, + InstanceNo ino, + VLUpdateMode mode); + +extern VLStatus vlUpdateInstance(InstanceNo ino, + void *data, + VLTime *vtime, + VLUpdateMode mode); + +extern VLStatus vlQUpdateInstance(EventQ qid, + InstanceNo ino, + void *data, + VLTime *vtime, + VLUpdateMode mode); + +extern VLStatus vlUpdateDynamicInstance(InstanceNo ino, + void *data, + VLTime *vtime, + VLUpdateMode mode, + int32 count); + +extern VLStatus vlQUpdateDynamicInstance(EventQ qid, + InstanceNo ino, + void *data, + VLTime *vtime, + VLUpdateMode mode, + int32 count); + +extern VLStatus vlQUpdateInstanceFormat(EventQ qid, + VLFormat format, + InstanceNo ino, + void *data, + VLTime *vtime, + VLUpdateMode mode, + int32 count); + + +extern VLStatus vlExtractInstance(InstanceNo ino, + void *data, + VLTime *vtime); + + + + +/* + * Miscellaneous instance routines + */ +extern ElementHandle VLInstanceType(InstanceNo ino); +extern uint32 VLInstanceSize(InstanceNo ino, uint32 *icount); +extern int32 VLInstanceOwnership(InstanceNo ino); +extern void *VLInstanceAddress(InstanceNo ino, + VLStatus *status, + VLTime *time, + VLUpdateMode mode, + uint32 count); +extern VLStatus VLInstanceUpdate(InstanceNo ino, + VLTime *vtime, + VLUpdateMode mode); + + +/* + * (de)registering of interest in elements and instances. + */ +#define VLRegisterElement(e, t) VLQRegisterElement(0,(e),(t)) +#define VLDeRegisterElement(e, t) VLQDeRegisterElement(0,(e),(t)) +#define VLRegisterInstance(i, t) VLQRegisterInstance(0,(i),(t)) +#define VLDeRegisterInstance(i, t) VLQDeRegisterInstance(0,(i),(t)) + +extern VLStatus (VLRegisterElement)(ElementHandle e, uint32 type); +extern VLStatus (VLDeRegisterElement)(ElementHandle e, uint32 type); +extern VLStatus (VLRegisterInstance)(InstanceNo ino, uint32 type); +extern VLStatus (VLDeRegisterInstance)(InstanceNo ino, uint32 type); + +extern VLStatus VLQRegisterElement(EventQ q, + ElementHandle e, + uint32 type); +extern VLStatus VLQDeRegisterElement(EventQ q, + ElementHandle e, + uint32 type); +extern VLStatus VLQRegisterInstance(EventQ q, + InstanceNo ino, + uint32 type); +extern VLStatus VLQDeRegisterInstance(EventQ q, + InstanceNo ino, + uint32 type); + + +/* + * Events, and their queues. + */ +#define VLAwaitEvent(e,w) VLQAwaitEvent((e),NULL,(w)) + +extern VLAction (VLAwaitEvent)(VLEventData *ev, + VLWaitMode wait); +extern VLAction VLQAwaitEvent(VLEventData *ev, + EventQ *q, + VLWaitMode wait); +extern VLAction VLSnoopEvent(EventQ qid,VLEventData *ev); + +extern EventQ VLNewEventQueue(void); +extern VLStatus VLDeleteEventQueue(EventQ q); +extern VLStatus VLBlockEventQueue(EventQ q); +extern VLStatus VLClearEventQueue(EventQ q); + + +/* + * signals + */ +extern void VLSigSet(int32 sig); +extern void VLSigUnset(int32 sig); + +/* + * Stream operations + */ +extern VLStreamId VLStreamOpen(char8 *name, + int32 buflen, + void *buffer, + char8 *format ); +extern VLStatus VLStreamWrite(VLStreamId streamId, + int32 type, + uint32 length, + void *data ); +extern VLStatus VLStreamClose(VLStreamId streamId ); + +/* + * Locking and groups + */ +extern VLStatus VLLock(void); +extern VLStatus VLUnlock(void); +extern int32 VLLockStatus(void); + +extern int32 VLGroup(void); +extern int32 VLUnGroup(void); +extern int32 VLGroupStatus(void); + +/* + * Virtual time and timers + */ +extern VLStatus VLVirtualTime(VLTime *t); +extern VLStatus VLSetVirtualTimeSkew(VLTime *t); +extern VLStatus VLGetVirtualTimeSkew(VLTime *t); + +#define VLAddVtimes(r,a,b) dpAddVtimes(r,a,b) +#define VLSubVtimes(r,a,b) dpSubVtimes(r,a,b) + +extern void (VLAddVtimes)(VLTime *r, VLTime *a, VLTime *b); +extern void (VLSubVtimes)(VLTime *r, VLTime *a, VLTime *b); + +extern VLStatus VLTimer(VLTime *period, VLTimerMode mode); + +/* + * converting status numbers, element handles to meaningful messages + */ +extern const char *VLErrorString(VLStatus s); +extern const char *VLElementName(ElementHandle h); + +#endif /* _VL_H */ diff --git a/CODE/RP/MUNGA_L4/libDPL/dvs/VLTYPES.H b/CODE/RP/MUNGA_L4/libDPL/dvs/VLTYPES.H new file mode 100644 index 0000000..a9306d1 --- /dev/null +++ b/CODE/RP/MUNGA_L4/libDPL/dvs/VLTYPES.H @@ -0,0 +1,161 @@ +/* + * PROJECT: DVS + * SUBSYSTEM: vl + * MODULE: vltypes.h + * + * File: $RCSfile: vltypes.h,v $ + * Revision: $Revision: 1.8 $ + * Date: $Date: 1995/05/18 09:43:47 $ + * Author: $Author: jeff $ + * RCS Ident: $Id: vltypes.h,v 1.8 1995/05/18 09:43:47 jeff beta $ + * + * FUNCTION: + * This file contain the definitions of low-level types that are used + * throughout the vl system. These are all integers under a different + * guise. + * + * Copyright (c) 1994 Division Ltd. + * + * All Rights Reserved. + * + * This Document may not, in whole or in part, be copied, + * photocopied, reproduced, translated, or reduced to any + * electronic medium or machine readable form without prior + * written consent from Division Ltd. + */ +#ifndef _VLTYPES_H +#define _VLTYPES_H + +#include +#include + + +/* + * The basic id type. all the specific id types are typedefed from this. + */ +typedef uint32 IdType; + +typedef IdType InstanceNo; +typedef IdType ElementHandle; +typedef int32 EventQ; +typedef IdType AgentId; +typedef uint16 ActorId; +/*the max number of actors is */ +#define VL_MAX_ACTORS 65534 + +/* ... a bad actorid is indicated by */ +#define VL_BAD_ACTOR ((ActorId) 65535) + +/* ... 'all actors' is indicated by */ +#define VL_ALL_ACTORS ((ActorId) 65535) + + + +typedef void (* VLSigFunc)(int32 sig); + +typedef IdType VLStreamId; +#ifndef VLSTREAM_MAX +#define VLSTREAM_MAX 21 +#endif + +typedef dpVtime VLTime; + +/* + * typedef for passing element descriptions around. + */ +typedef uint32 ElementDesc; + + +/* + * typedefs containing all of the magic flags that might be passed into + * vl, or returned as a status. + */ +typedef enum { + VL_NO_SYNC = 0x00000001, + VL_LOCAL = 0x00000002, + VL_GLOBAL = 0x00000004, + VL_TIME = 0x00000008 +} VLUpdateMode; + +typedef enum { + VL_NOISY = 0x00000000, + VL_QUIET = 0x00000100, + VL_AUDIO_MASK = 0x00000100 +} VLAudibility; + +#define VL_ACTION_NONE 0x00000000 +#define VL_ACTION_CREATE 0x00001000 +#define VL_ACTION_DELETE 0x00002000 +#define VL_ACTION_UPDATE 0x00004000 + +#define VL_ACTION_SIGNAL 0x00010000 +#define VL_ACTION_STREAM 0x00020000 + +#define VL_ACTION_IREG 0x00030000 +#define VL_ACTION_IDEREG 0x00040000 + +#define VL_ACTION_EREG 0x00050000 +#define VL_ACTION_EDEREG 0x00060000 + +#define VL_ACTION_ECREATE 0x00070000 +#define VL_ACTION_EDELETE 0x00080000 +#define VL_ACTION_ECONFIRM 0x00090000 + +#define VL_ACTION_GROUP 0x000a0000 +#define VL_ACTION_UNGROUP 0x000b0000 + +#define VL_ACTION_TIMEOUT 0x000c0000 +#define VL_ACTION_ALARM_REQ 0x000d0000 +#define VL_ACTION_TICK_REQ 0x000e0000 + +#define VL_ACTION_PEER 0x000f0000 +#define VL_ACTION_EXIT 0x00100000 +#define VL_ACTION_BAD 0xffff0000 +typedef uint32 VLAction; + +/* + * index used to identify different format rules + * (endinaess alignment etc) + */ +typedef int32 VLFormat; + +/* update vlerr.c if these are changed */ +typedef enum { + VL_ERR_OK, + VL_ERR_BAD_AGENT, + VL_ERR_BAD_DOMAIN, + VL_ERR_BAD_ELEM, + VL_ERR_BAD_INST, + VL_ERR_BAD_STREAM, + + VL_ERR_BAD_QUEUE, + VL_ERR_BAD_ACTION, + VL_ERR_NOT_SLAVE, + VL_ERR_ALREADY_PEERED, + VL_ERR_TIME, + VL_ERR_FORMAT, + VL_ERR_SEMAPHORE, + VL_ERR_NO_MEM, + VL_ERR_LAST +}VLStatus; + +typedef enum { + VL_DETACH_ACTOR, + VL_DETACH_AGENT, + VL_DETACH_LOCAL, + VL_DETACH_GLOBAL +}VLExitMode; + +typedef enum { + VL_TIME_ALARM, + VL_TIME_TICK, + VL_TIME_OFF +} VLTimerMode; + +typedef enum { + VL_POLL_EVENT, + VL_WAIT_EVENT +} VLWaitMode; + + +#endif /*_VLTYPES_H */ diff --git a/CODE/RP/MUNGA_L4/libDPL/dvs/_VCSTRUC.H b/CODE/RP/MUNGA_L4/libDPL/dvs/_VCSTRUC.H new file mode 100644 index 0000000..2b9a2a8 --- /dev/null +++ b/CODE/RP/MUNGA_L4/libDPL/dvs/_VCSTRUC.H @@ -0,0 +1,569 @@ +#ifndef __VCSTRUCT_H +#define __VSTRUCT_H +struct VCAttribute { + ElementHandle type; /* The element handle */ + InstanceNo ino; + VCEntity *first; + int index; + uint32 mode; + uint32 cacheMode; + uint32 registerMode; + void *instanceData; + uint32 instanceDataSize; + uint32 instanceDataCount; + VCUserDataList *userDataList; + VCCallbackFunctions *createFunctionList; + VCCallbackFunctions *deleteFunctionList; + VCCallbackFunctions *updateFunctionList; + void *createCallbackHandle; + void *updateCallbackHandle; + void *deleteCallbackHandle; +}; + +struct VCCollision +{ + InstanceNo ino; + uint32 status; + uint32 instanceCount; + uint32 collReportCount; + uint32 cacheMode; + void *instanceData; + uint32 instanceDataSize; + uint32 instanceDataCount; + VCCollisionReportData *collReportData; + uint32 collReportDataSize; + uint32 collReportDataCount; + uint32 numCollisionsReported; + VCUserDataList *userDataList; + VCCallbackFunctions *createFunctionList; + VCCallbackFunctions *deleteFunctionList; + VCCallbackFunctions *updateFunctionList; + void *createCallbackHandle; + void *updateCallbackHandle; + void *deleteCallbackHandle; +}; + +struct VCIntersection +{ + InstanceNo ino; + uint32 status; + uint32 instanceCount; + uint32 intersectReportCount; + uint32 cacheMode; + void *instanceData; + uint32 instanceDataSize; + uint32 instanceDataCount; + VCIntersectionReportData *intersectReportData; + uint32 intersectReportDataSize; + uint32 intersectReportDataCount; + uint32 numIntersectionsReported; + VCUserDataList *userDataList; + VCCallbackFunctions *createFunctionList; + VCCallbackFunctions *deleteFunctionList; + VCCallbackFunctions *updateFunctionList; + void *createCallbackHandle; + void *updateCallbackHandle; + void *deleteCallbackHandle; +}; + +struct VCPosition +{ + InstanceNo ino; + VCEntity *entity; + uint32 status; + uint32 cacheMode; + void *instanceData; + VCUserDataList *userDataList; + VCCallbackFunctions *createFunctionList; + VCCallbackFunctions *deleteFunctionList; + VCCallbackFunctions *updateFunctionList; + void *createCallbackHandle; + void *updateCallbackHandle; + void *deleteCallbackHandle; +}; + +struct VCXWindowId +{ + InstanceNo ino; + uint32 status; + uint32 cacheMode; + void *instanceData; + uint32 instanceDataSize; + uint32 instanceDataCount; + VCUserDataList *userDataList; + VCCallbackFunctions *createFunctionList; + VCCallbackFunctions *deleteFunctionList; + VCCallbackFunctions *updateFunctionList; + void *createCallbackHandle; + void *updateCallbackHandle; + void *deleteCallbackHandle; +}; + +struct VCVisualViewResource +{ + InstanceNo ino; + VCAttribute *attribute; + VCCallbackFunctions *createFunctionList; + VCCallbackFunctions *deleteFunctionList; + VCCallbackFunctions *updateFunctionList; + void *createCallbackHandle; + void *updateCallbackHandle; + void *deleteCallbackHandle; +}; + + +struct VCPseudoGravity +{ + InstanceNo ino; + uint32 status; + uint32 cacheMode; + void *instanceData; + VCUserDataList *userDataList; + VCCallbackFunctions *createFunctionList; + VCCallbackFunctions *deleteFunctionList; + VCCallbackFunctions *updateFunctionList; + void *createCallbackHandle; + void *updateCallbackHandle; + void *deleteCallbackHandle; +}; + +struct VCMaterial +{ + + InstanceNo ino; + char *name; + uint32 status; + uint32 cacheMode; + void *instanceData; + uint32 instanceDataSize; + uint32 instanceDataCount; + VCUserDataList *userDataList; + VCCallbackFunctions *createFunctionList; + VCCallbackFunctions *deleteFunctionList; + VCCallbackFunctions *updateFunctionList; + void *createCallbackHandle; + void *updateCallbackHandle; + void *deleteCallbackHandle; +}; + +struct VCRadiator +{ + + InstanceNo ino; + char *name; + uint32 status; + uint32 cacheMode; + void *instanceData; + VCUserDataList *userDataList; + VCCallbackFunctions *createFunctionList; + VCCallbackFunctions *deleteFunctionList; + VCCallbackFunctions *updateFunctionList; + void *createCallbackHandle; + void *updateCallbackHandle; + void *deleteCallbackHandle; +}; + + + +struct VCTexture +{ + InstanceNo ino; + char *name; + uint32 status; + uint32 cacheMode; + void *instanceData; + uint32 instanceDataSize; + uint32 instanceDataCount; + VCUserDataList *userDataList; + VCCallbackFunctions *createFunctionList; + VCCallbackFunctions *deleteFunctionList; + VCCallbackFunctions *updateFunctionList; + void *createCallbackHandle; + void *updateCallbackHandle; + void *deleteCallbackHandle; +}; + +struct VCRamp +{ + InstanceNo ino; + char *name; + uint32 status; + uint32 cacheMode; + void *instanceData; + uint32 instanceDataSize; + uint32 instanceDataCount; + VCUserDataList *userDataList; + VCCallbackFunctions *createFunctionList; + VCCallbackFunctions *deleteFunctionList; + VCCallbackFunctions *updateFunctionList; + void *createCallbackHandle; + void *updateCallbackHandle; + void *deleteCallbackHandle; +}; + +struct VCInput +{ + InstanceNo ino; + uint32 status; + uint32 cacheMode; + void *instanceData; + uint32 instanceDataSize; + uint32 instanceDataCount; + VCUserDataList *userDataList; + VCCallbackFunctions *createFunctionList; + VCCallbackFunctions *deleteFunctionList; + VCCallbackFunctions *updateFunctionList; + void *createCallbackHandle; + void *updateCallbackHandle; + void *deleteCallbackHandle; + uint32 numWraps; + uint32 head; +}; + +struct VCTracker +{ + InstanceNo ino; + char *name; + uint32 status; + uint32 cacheMode; + void *instanceData; + uint32 instanceDataSize; + uint32 instanceDataCount; + VCUserDataList *userDataList; + VCCallbackFunctions *createFunctionList; + VCCallbackFunctions *deleteFunctionList; + VCCallbackFunctions *updateFunctionList; + void *createCallbackHandle; + void *updateCallbackHandle; + void *deleteCallbackHandle; +}; + +struct VCSync +{ + VCSync *next; + InstanceNo ino; + uint32 status; + uint32 cacheMode; + void *instanceData; + uint32 instanceDataSize; + uint32 instanceDataCount; + VCUserDataList *userDataList; + VCCallbackFunctions *createFunctionList; + VCCallbackFunctions *deleteFunctionList; + VCCallbackFunctions *updateFunctionList; + void *createCallbackHandle; + void *updateCallbackHandle; + void *deleteCallbackHandle; +}; + +struct VCMonitor +{ + InstanceNo ino; + char *name; + uint32 status; + uint32 cacheMode; + void *instanceData; + uint32 instanceDataSize; + uint32 instanceDataCount; + VCUserDataList *userDataList; + VCCallbackFunctions *createFunctionList; + VCCallbackFunctions *deleteFunctionList; + VCCallbackFunctions *updateFunctionList; + void *createCallbackHandle; + void *updateCallbackHandle; + void *deleteCallbackHandle; +}; + +typedef struct +{ + VCAttribute *attribute; + VCEntity *next; + int32 index; + int32 flags; + VCUserDataList *userDataList; +} VCAttributeData; + +typedef struct VCEntityData +{ + dmMatrix apos; + VCEntity *newParent; + uint32 traverseMode; + VCCallbackFunctions *createFuncList; + VCCallbackFunctions *updateFuncList; + VCCallbackFunctions *deleteFuncList; + VCUserDataList *userData; + void *vcPosCallbackInfo; + void *objPosCallbackInfo; + VCCallbackFunctions *entityRelocateCallbackList; + uint32 entityRelocateMode; +} VCEntityData; + +struct VCEntity { + VCEntity *parent; /* Local parental ptr */ + VCEntity *child; /* Local child ptr */ + VCEntity *sibling; /* Local sibling ptr */ + _VCObject *object; /* Hierarchy VL data */ + InstanceNo ino; /* VCObject Instance No */ + VCEntityData *systemData; + int numAttributes; + VCAttributeData *attributes;/* Hierarchy data objects */ +}; + + +typedef struct +{ + VCColour backgroundColour; + int backgroundColourSet; + float32 nearClip; + int nearClipSet; + float32 farClip; + int farClipSet; + VCColour fogColour; + uint32 fogMode; + int fogColourSet; + float32 nearFog; + int nearFogSet; + float32 farFog; + int farFogSet; + + void *callbackHandle; + +}_VCBodyVisResInfo; + +typedef struct +{ + char *resourceFile; + float32 volume; + int volumeSet; + float32 spreadingRollOff; + int spreadingRollOffSet; + float32 atmosphericAbsorption; + int atmosphericAbsorptionSet; + void *callbackHandle; +}_VCBodyAudioResInfo; + + +struct VCBody +{ + VCBody *next; + _VCBody *body; + uint32 bodySize; + uint32 bodyCount; + VCEntity *rootEntity; + VCEntity *bodyPosEntity; + InstanceNo ino; + VCCallbackFunctions *bodyPartCreateList; + _VCBodyPartList *bodyPartList; + VCCallbackFunctions *attributeFuncList; + VCCallbackFunctions *inputFuncList; + VCCallbackFunctions *collisionFuncList; + _VCBodyVisResInfo visualInfo; + _VCBodyAudioResInfo audioInfo; +}; + + +struct _VCBody_InputFuncData +{ + uint32 minKeyCode; + uint32 maxKeyCode; + char *limbName; +}; + +struct _VCBody_CollideFuncData +{ + char *limbName; +}; + +struct _VCInput_FuncData +{ + uint32 minKeyCode; + uint32 maxKeyCode; +}; + +struct VCUserDataList +{ + VCUserDataList *next; + uint32 vcId; + void *data; +}; + + +struct VCCollisionReport_Traverse +{ + uint32 instanceCount; + VCCollision *collision; + uint32 nextOffset; +}; + +struct VCIntersectionReport_Traverse +{ + uint32 instanceCount; + VCIntersection *intersection; + uint32 nextOffset; +}; + + + +struct VCEntity_Traverse +{ + VCEntity *currentObject; /* Current hierarchy pos */ + VCEntity *startObject; /* Start hierarchy pos */ +}; + +struct VCAttribute_EntityTraverse +{ + VCEntity *entity; + int32 index; +}; + +struct VCEntity_AttributeTraverse +{ + VCEntity *entity; + int32 nextIndex; + ElementHandle element; +}; + +struct VCBody_Traverse +{ + VCBody *body; +}; + +struct VCVisualView_Traverse +{ + duHashIterator hashIter; + VCAttribute *visResource; +}; + + +struct VCBody_AttributeTraverse +{ + VCBody *body; + char *limbName; /* Request limb */ + ElementHandle element; + _VCBodyPartList *currentBodyPart; + int currentAttribute; + VCBody *currentBody; + VCBody_Traverse bodyTraverseInfo; +}; + + + +struct VCCallbackFunctions +{ + VCCallbackFunctions *next; + VC_CallbackFunc function; + void *data; + void *systemData; +}; + +typedef union +{ + VCEntity_Traverse entityT; + VCEntity_AttributeTraverse entityAttributeT; + VCAttribute_EntityTraverse attributeEntityT; + VCBody_Traverse bodyT; + VCBody_AttributeTraverse bodyAttributeT; + VCCollisionReport_Traverse collReportT; + VCIntersectionReport_Traverse intersectReportT; + VCVisualView_Traverse viewT; +}VC_Traverse; + +typedef struct +{ + ElementHandle element; + char *limbName; +} _VCAttributeElementData; + +typedef struct +{ + InstanceNo inst; + VCCallbackFunctions *functionList; +} _VCInstCallback; + +typedef struct +{ + VCBody *body; + _VCBodyPartList *bodyPart; +}_VCBodyPartInfo; + + +struct _VCTimer_CallbackInfo +{ + VLTime lastTime; + VLTime time; + VLTimerMode mode; +}; + +struct _VCBodyPartList +{ + _VCBodyPartList *next; + VCAttribute *bodyPartAttr; + VCBody *body; + uint32 inputNeeded; +/* + VCEntity *pickedObject; + VCEntity_DropFunc dropFunc; + void *dropData; + VCAttribute *pickAttr; +*/ +}; + +typedef struct +{ + VCAttribute *bodyPartAttr; + VCBody *body; + VCEntity_DropFunc dropFunc; + void *dropData; + VCPickObjectData pickObject; +}_VCBodyPickInfo; + + + +typedef struct +{ + VCCallbackFunctions *relocateFunctionList; + VCCallbackFunctions *createFunctionList; + VCCallbackFunctions *invalidFunctionList; + VCCallbackFunctions *updateFunctionList; + VCCallbackFunctions *deleteFunctionList; + void *createCallbackHandle; + void *updateCallbackHandle; + void *deleteCallbackHandle; + uint32 relocateMode; +} _VCObjectFunctions; + +typedef struct +{ + _VCObjectFunctions functions; + int explicitInstances; + duHashTab *instTable; + ElementHandle element; + uint32 registered; +} _VCAttributeCallback; + +typedef struct +{ + _VCAttributeCallback *callbackList; + int32 listSize; +} _VCAttributeCallbackList; + +typedef struct +{ + void *relocateCallbackHandle; + void *invalidCallbackHandle; +}_VCEntityRelocateCallbackHandles; + + +typedef struct _VCSyncCallbackInfo +{ + struct _VCSyncCallbackInfo *next; + char *actorName; + char *actorType; + VCSync_Func updateFunc; + VCSync_Func deleteFunc; + void *data; +}_VCSyncCallbackInfo; + + + +#endif diff --git a/CODE/RP/MUNGA_L4/libDPL/dvs/_VCTYPES.H b/CODE/RP/MUNGA_L4/libDPL/dvs/_VCTYPES.H new file mode 100644 index 0000000..ad9bc88 --- /dev/null +++ b/CODE/RP/MUNGA_L4/libDPL/dvs/_VCTYPES.H @@ -0,0 +1,10 @@ +#ifndef __VCTYPES_H +#define __VCTYPES_H + +typedef struct _VCTimer_CallbackInfo _VCTimer_CallbackInfo; +typedef struct _VCBodyPartList _VCBodyPartList; +typedef struct _VCBody_InputFuncData _VCBody_InputFuncData; +typedef struct _VCBody_CollideFuncData _VCBody_CollideFuncData; +typedef struct _VCInput_FuncData _VCInput_FuncData; + +#endif diff --git a/CODE/RP/MUNGA_L4/libDPL/dvs/vssver.scc b/CODE/RP/MUNGA_L4/libDPL/dvs/vssver.scc new file mode 100644 index 0000000..a1b4652 Binary files /dev/null and b/CODE/RP/MUNGA_L4/libDPL/dvs/vssver.scc differ diff --git a/CODE/RP/MUNGA_L4/libDPL/vssver.scc b/CODE/RP/MUNGA_L4/libDPL/vssver.scc new file mode 100644 index 0000000..01c84d1 Binary files /dev/null and b/CODE/RP/MUNGA_L4/libDPL/vssver.scc differ diff --git a/CODE/RP/MUNGA_L4/mssccprj.scc b/CODE/RP/MUNGA_L4/mssccprj.scc new file mode 100644 index 0000000..565025d --- /dev/null +++ b/CODE/RP/MUNGA_L4/mssccprj.scc @@ -0,0 +1,5 @@ +SCC = This is a Source Code Control file + +[mungal4.mak] +SCC_Aux_Path = "M:\VWESS" +SCC_Project_Name = "$/Tesla_rp/MUNGA_L4", QYVAAAAA diff --git a/CODE/RP/MUNGA_L4/mungal4.mak b/CODE/RP/MUNGA_L4/mungal4.mak new file mode 100644 index 0000000..6f565fa --- /dev/null +++ b/CODE/RP/MUNGA_L4/mungal4.mak @@ -0,0 +1,160 @@ +.autodepend +.cacheautodepend +.suffixes: .asm .cpp .c + +!ifndef BTYPE +!error BTYPE macro not supplied +!endif + +!ifndef BPATH +!error BPATH macro not supplied +!endif + +!include make.cfg +!include $(BPATH) + +!ifndef MUNGAL4_ROOT +!error MUNGAL4_ROOT macro is not defined +!endif + +TARGET_DIR = $(MUNGAL4_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 = l4$(BTYPE).csm + +#------------------------------------------------------------------------------ +# Library targets +# +all: $(CFG_FILE) $(TARGET_DIR)\l4tstall.exe + +clean: + del $(TARGET_DIR)\*.obj + del $(TARGET_DIR)\*.lib + del $(TARGET_DIR)\*.exe + del $(TARGET_DIR)\*.bak + del $(TARGET_DIR)\*.cfg + +#------------------------------------------------------------------------------ +# 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 + +{$(MUNGAL4_ROOT)}.asm{$(TARGET_DIR)}.obj: + tasm32 -ml $(TASM_OPTIONS) -i$(MUNGAL4_ROOT) $<,$@ >>error.log + +#------------------------------------------------------------------------------ +# Test program +# +$(TARGET_DIR)\l4tstall.exe: \ + $(MUNGAL4_ROOT)\mungal4.mak $(TARGET_DIR)\l4stub.lib stub.lib munga.lib\ + $(TARGET_DIR)\mungal4.lib l4tstall.obj $(DPL_ROOT)\libdpl.lib\ + $(BTYPE).mak + tlink32 @&&| +$(LINK_OPTIONS) + +$(STARTUP_OBJ)+ +$(TARGET_DIR)\l4tstall.obj +$<,$* +$(TARGET_DIR)\l4stub.lib+ +stub.lib+ +munga.lib+ +$(TARGET_DIR)\mungal4.lib+ +$(DPL_ROOT)\libdpl.lib+ +$(STARTUP_LIBS) +| >>error.log + +l4tstall.obj: $(CFG_FILE) + +#------------------------------------------------------------------------------ +# Stub library +# +L4STUB_OBJS = \ + ?l4trace.obj \ + ?l4file.obj \ + ?l4time.obj + +$(L4STUB_OBJS:?=): $(CFG_FILE) + +$(TARGET_DIR)\l4stub.lib: $(L4STUB_OBJS:?=) $(MUNGAL4_ROOT)\mungal4.mak + tlib $@ $(LIB_OPTIONS) @&&| +$(L4STUB_OBJS:?=$(LIB_PREFIX)) +| >>error.log + +#------------------------------------------------------------------------------ +# MUNGAL4 library +# +ASSEMBLY_OBJS = \ + ?netshare.obj \ + ?l4serial.obj \ + ?l4svga16.obj \ + ?joystick.obj \ + ?pcspak.obj + +assemble: $(ASSEMBLY_OBJS:?=) + del $(TARGET_DIR)\mungal4.lib + +MUNGAL4_OBJS = \ + ?l4host.obj \ + ?l4net.obj \ + ?l4dplmem.obj \ + ?l4vidrnd.obj \ + ?l4video.obj \ + ?startdpl.obj \ + ?sosmawe.obj \ + ?l4audhdw.obj \ + ?l4audio.obj \ + ?l4audlvl.obj \ + ?l4audwtr.obj \ + ?l4audres.obj \ + ?l4audrnd.obj \ + ?l4wrhous.obj \ + ?l4vb8.obj \ + ?l4vb16.obj \ + ?l4gauima.obj \ + ?l4grend.obj \ + ?l4gauge.obj \ + ?l4lamp.obj \ + ?l4plasma.obj \ + ?l4ctrl.obj \ + ?l4keybd.obj \ + ?l4mouse.obj \ + ?l4rio.obj \ + ?l4mppr.obj \ + ?l4app.obj \ + ?l4splr.obj \ + ?l4icom.obj \ + ?l4vidtul.obj \ + ?l4audtul.obj \ + ?l4gautul.obj \ + ?l4ctltul.obj + +$(MUNGAL4_OBJS:?=): $(CFG_FILE) + +$(TARGET_DIR)\mungal4.lib:\ + $(MUNGAL4_ROOT)\mungal4.mak $(MUNGAL4_OBJS:?=)\ + $(SOS_ROOT)\sosdbxc.lib $(SOS_ROOT)\sosmbxc.lib + @del $(TARGET_DIR)\mungal4.lib + tlib $@ $(LIB_OPTIONS) @&&| +$(MUNGAL4_OBJS:?=$(LIB_PREFIX)) & +$(ASSEMBLY_OBJS:?=$(LIB_PREFIX)) & +-+$(SOS_ROOT)\sosdbxc.lib & +-+$(SOS_ROOT)\sosmbxc.lib +| >>error.log diff --git a/CODE/RP/MUNGA_L4/netshare.OBJ b/CODE/RP/MUNGA_L4/netshare.OBJ new file mode 100644 index 0000000..039ebdc Binary files /dev/null and b/CODE/RP/MUNGA_L4/netshare.OBJ differ diff --git a/CODE/RP/MUNGA_L4/opt/L4DPLMEM.obj b/CODE/RP/MUNGA_L4/opt/L4DPLMEM.obj new file mode 100644 index 0000000..832c8a9 Binary files /dev/null and b/CODE/RP/MUNGA_L4/opt/L4DPLMEM.obj differ diff --git a/CODE/RP/MUNGA_L4/opt/L4HOST.obj b/CODE/RP/MUNGA_L4/opt/L4HOST.obj new file mode 100644 index 0000000..5197683 Binary files /dev/null and b/CODE/RP/MUNGA_L4/opt/L4HOST.obj differ diff --git a/CODE/RP/MUNGA_L4/opt/L4KEYBD.obj b/CODE/RP/MUNGA_L4/opt/L4KEYBD.obj new file mode 100644 index 0000000..1cece0f Binary files /dev/null and b/CODE/RP/MUNGA_L4/opt/L4KEYBD.obj differ diff --git a/CODE/RP/MUNGA_L4/opt/L4MOUSE.obj b/CODE/RP/MUNGA_L4/opt/L4MOUSE.obj new file mode 100644 index 0000000..15f462d Binary files /dev/null and b/CODE/RP/MUNGA_L4/opt/L4MOUSE.obj differ diff --git a/CODE/RP/MUNGA_L4/opt/L4TIME.obj b/CODE/RP/MUNGA_L4/opt/L4TIME.obj new file mode 100644 index 0000000..a9a4cca Binary files /dev/null and b/CODE/RP/MUNGA_L4/opt/L4TIME.obj differ diff --git a/CODE/RP/MUNGA_L4/opt/L4TRACE.obj b/CODE/RP/MUNGA_L4/opt/L4TRACE.obj new file mode 100644 index 0000000..b459a71 Binary files /dev/null and b/CODE/RP/MUNGA_L4/opt/L4TRACE.obj differ diff --git a/CODE/RP/MUNGA_L4/opt/L4TSTALL.obj b/CODE/RP/MUNGA_L4/opt/L4TSTALL.obj new file mode 100644 index 0000000..f04c70d Binary files /dev/null and b/CODE/RP/MUNGA_L4/opt/L4TSTALL.obj differ diff --git a/CODE/RP/MUNGA_L4/opt/SOSMAWE.obj b/CODE/RP/MUNGA_L4/opt/SOSMAWE.obj new file mode 100644 index 0000000..ffb56d5 Binary files /dev/null and b/CODE/RP/MUNGA_L4/opt/SOSMAWE.obj differ diff --git a/CODE/RP/MUNGA_L4/opt/STARTDPL.obj b/CODE/RP/MUNGA_L4/opt/STARTDPL.obj new file mode 100644 index 0000000..9a7b8ce Binary files /dev/null and b/CODE/RP/MUNGA_L4/opt/STARTDPL.obj differ diff --git a/CODE/RP/MUNGA_L4/opt/joystick.OBJ b/CODE/RP/MUNGA_L4/opt/joystick.OBJ new file mode 100644 index 0000000..0387528 Binary files /dev/null and b/CODE/RP/MUNGA_L4/opt/joystick.OBJ differ diff --git a/CODE/RP/MUNGA_L4/opt/l4serial.OBJ b/CODE/RP/MUNGA_L4/opt/l4serial.OBJ new file mode 100644 index 0000000..c04f244 Binary files /dev/null and b/CODE/RP/MUNGA_L4/opt/l4serial.OBJ differ diff --git a/CODE/RP/MUNGA_L4/opt/l4svga16.OBJ b/CODE/RP/MUNGA_L4/opt/l4svga16.OBJ new file mode 100644 index 0000000..0456098 Binary files /dev/null and b/CODE/RP/MUNGA_L4/opt/l4svga16.OBJ differ diff --git a/CODE/RP/MUNGA_L4/opt/netshare.OBJ b/CODE/RP/MUNGA_L4/opt/netshare.OBJ new file mode 100644 index 0000000..039ebdc Binary files /dev/null and b/CODE/RP/MUNGA_L4/opt/netshare.OBJ differ diff --git a/CODE/RP/MUNGA_L4/opt/opt.cfg b/CODE/RP/MUNGA_L4/opt/opt.cfg new file mode 100644 index 0000000..dddd471 --- /dev/null +++ b/CODE/RP/MUNGA_L4/opt/opt.cfg @@ -0,0 +1,34 @@ +-DLBE4;DEBUG_LEVEL=0;DEBUG_STREAM=cout;MESSAGE_BUFFERING=False +-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 +-Id:\tesla_rp\rp_l4;d:\tesla_rp\rp;d:\tesla_rp\munga_l4;d:\tesla_rp\munga_l4\libdpl;d:\tesla_rp\munga_l4\libdpl\dvs;d:\tesla_rp\munga_l4\libdpl\dpl;d:\tesla_rp\munga_l4\sos\bc4;d:\tesla_rp\munga_l4\netnub;d:\tesla_rp\munga;d:\bc5\include +-H +-H=l4opt.csm +-Hc +-nd:\tesla_rp\munga_l4\opt diff --git a/CODE/RP/MUNGA_L4/pcspak.OBJ b/CODE/RP/MUNGA_L4/pcspak.OBJ new file mode 100644 index 0000000..05be875 Binary files /dev/null and b/CODE/RP/MUNGA_L4/pcspak.OBJ differ diff --git a/CODE/RP/MUNGA_L4/sos/HMIMDRV.386 b/CODE/RP/MUNGA_L4/sos/HMIMDRV.386 new file mode 100644 index 0000000..e0c8760 Binary files /dev/null and b/CODE/RP/MUNGA_L4/sos/HMIMDRV.386 differ diff --git a/CODE/RP/MUNGA_L4/sos/SOSDBXC.LIB b/CODE/RP/MUNGA_L4/sos/SOSDBXC.LIB new file mode 100644 index 0000000..a65a0fb Binary files /dev/null and b/CODE/RP/MUNGA_L4/sos/SOSDBXC.LIB differ diff --git a/CODE/RP/MUNGA_L4/sos/SOSDWXCR.LIB b/CODE/RP/MUNGA_L4/sos/SOSDWXCR.LIB new file mode 100644 index 0000000..089238c Binary files /dev/null and b/CODE/RP/MUNGA_L4/sos/SOSDWXCR.LIB differ diff --git a/CODE/RP/MUNGA_L4/sos/SOSDWXCS.LIB b/CODE/RP/MUNGA_L4/sos/SOSDWXCS.LIB new file mode 100644 index 0000000..3b5f111 Binary files /dev/null and b/CODE/RP/MUNGA_L4/sos/SOSDWXCS.LIB differ diff --git a/CODE/RP/MUNGA_L4/sos/SOSMAWE.C b/CODE/RP/MUNGA_L4/sos/SOSMAWE.C new file mode 100644 index 0000000..3eb8843 --- /dev/null +++ b/CODE/RP/MUNGA_L4/sos/SOSMAWE.C @@ -0,0 +1,443 @@ +/**************************************************************************** + + File : sosmawe.c + + Purpose : Module to handle AWE32 .SBK file uploads + + Date : 1-20-95 + + Programmer(s) : Don Fowler + + Last Updated : 1-29-95 + +**************************************************************************** + Copyright(c) 1992,1995 Human Machine Interfaces + All Rights Reserved +****************************************************************************/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "sosm.h" + +WORD sosMIDIAWE32SetSBKFile( WORD, PSTR ); +WORD sosMIDIAWE32ReleaseSBKFiles( WORD ); +WORD sosMIDIAWE32NoteOn( WORD, WORD, WORD, WORD, WORD, WORD ); +WORD sosMIDIAWE32NoteOff( WORD, WORD, WORD ); + +// maximum number of .SBK files that can be set on the chip +#define _MAX_SBKS 0x10 + +// offset into slot list for .SBK files to start +#define _SBK_SLOT_OFFSET 0x01 + +// size of buffer needed to read in a chunk of .SBK file +#define _READ_BUFFER_SIZE 0x2000 + +// pointer to preset data for awe32 +#ifdef BORLAND +PSTR _lpSOSMIDIAwe32PresetBuffer[ _SOS_MIDI_MAX_DRIVERS ][ _MAX_SBKS ] = { +#else +LPSTR _lpSOSMIDIAwe32PresetBuffer[ _SOS_MIDI_MAX_DRIVERS ][ _MAX_SBKS ] = { +#endif + + { _NULL, _NULL, _NULL, _NULL, _NULL, _NULL, _NULL, _NULL, + _NULL, _NULL, _NULL, _NULL, _NULL, _NULL, _NULL, _NULL }, + { _NULL, _NULL, _NULL, _NULL, _NULL, _NULL, _NULL, _NULL, + _NULL, _NULL, _NULL, _NULL, _NULL, _NULL, _NULL, _NULL }, + { _NULL, _NULL, _NULL, _NULL, _NULL, _NULL, _NULL, _NULL, + _NULL, _NULL, _NULL, _NULL, _NULL, _NULL, _NULL, _NULL }, + { _NULL, _NULL, _NULL, _NULL, _NULL, _NULL, _NULL, _NULL, + _NULL, _NULL, _NULL, _NULL, _NULL, _NULL, _NULL, _NULL }, + { _NULL, _NULL, _NULL, _NULL, _NULL, _NULL, _NULL, _NULL, + _NULL, _NULL, _NULL, _NULL, _NULL, _NULL, _NULL, _NULL } + + }; + +// index into list of presets to the currently available slot, +// start the index at 0 to leave slot 0 open for general midi +// rom on the AWE32 +WORD _wSOSMIDIAwe32PresetIndex[ _SOS_MIDI_MAX_DRIVERS ] = { + + _SBK_SLOT_OFFSET, _SBK_SLOT_OFFSET, _SBK_SLOT_OFFSET, + _SBK_SLOT_OFFSET, _SBK_SLOT_OFFSET + }; + +/*************************************************************************** + +Function : WORD sosMIDIAWE32SetSBKFile + +Parameters : WORD hDriver + Handle of SOS driver to set SBK file on. + PSTR szFileName + Name of .SBK file to set. + +Returns : -1 if error; otherwise, slot that the .SBK file was + assigned to on the AWE32. + +Description : Stream a .SBK file onto the awe32 and return the slot + streamed to. + +****************************************************************************/ + +WORD sosMIDIAWE32SetSBKFile( WORD hDriver, PSTR szFileName ) +{ + WORD wIndex; + WORD hFile; + WORD wReadSize; + PSTR pDataPtr; +#ifdef BORLAND + SFAR lpTemp; +#endif + + // attempt to find a slot to use for the .SBK file + if( _wSOSMIDIAwe32PresetIndex[ hDriver ] == ( _MAX_SBKS - 1 ) ) + return( -1 ); + + // attempt to open the sbk file + if( ( hFile = open( ( const char * )szFileName, O_RDONLY | O_BINARY ) ) == -1 ) + return( -1 ); + + // attempt to allocate a buffer to use for transfer + if( !( pDataPtr = ( PSTR )malloc( _READ_BUFFER_SIZE ) ) ) + { + // close the file + close( hFile ); + + // return an error + return( -1 ); + } + + // open the awe32 stream +#ifdef BORLAND + if( ( wReadSize = sosMIDIDRVCall32Func( _lpSOSMIDIDrvFunction[ hDriver ][ 5 ], + lpTemp, _wSOSMIDIAwe32PresetIndex[ hDriver ], 0x00 ) ) == -1 ) +#else + if( ( wReadSize = _lpSOSMIDIDrvFunction[ hDriver ][ 5 ]( _NULL, + _wSOSMIDIAwe32PresetIndex[ hDriver ], 0x00 ) ) == -1 ) +#endif + { + // free the previously allocated memory + free( pDataPtr ); + + // close the file + close( hFile ); + + // return error + return( -1 ); + } + + // read in a chunk of data from the file + if( read( hFile, pDataPtr, wReadSize ) == -1 ) + return( -1 ); + + // get the sample data seek location +#ifdef BORLAND + lpTemp.sel = getDS(); + lpTemp.off = pDataPtr; + if( ( wIndex = sosMIDIDRVCall32Func( _lpSOSMIDIDrvFunction[ hDriver ][ 8 ], + lpTemp, _wSOSMIDIAwe32PresetIndex[ hDriver ], 0x00 ) ) == -1 ) +#else + if( ( wIndex = _lpSOSMIDIDrvFunction[ hDriver ][ 8 ]( ( LPSTR )pDataPtr, + _wSOSMIDIAwe32PresetIndex[ hDriver ], 0x00 ) ) == -1 ) +#endif + { + // free the previously allocated memory + free( pDataPtr ); + + // close the file + close( hFile ); + + // return error + return( -1 ); + } + + // seek the file to the sample location + if( lseek( hFile, wIndex, SEEK_SET ) == -1 ) + { + // close the file + close( hFile ); + + // free the preset memory + free( ( PSTR )_lpSOSMIDIAwe32PresetBuffer[ hDriver ][ _wSOSMIDIAwe32PresetIndex[ hDriver ] ] ); + + // return an error + return( -1 ); + } + + // send chunks of data to the driver + do + { + // read in a chunk of data from the file + if( read( hFile, pDataPtr, wReadSize ) == -1 ) + return( -1 ); + + // send the data to the driver +#ifdef BORLAND + lpTemp.sel = getDS(); + lpTemp.off = pDataPtr; + if( ( wReadSize = sosMIDIDRVCall32Func( _lpSOSMIDIDrvFunction[ hDriver ] + [ 6 ], lpTemp, _wSOSMIDIAwe32PresetIndex[ hDriver ], 0x00 ) ) == -1 ) +#else + if( ( wReadSize = _lpSOSMIDIDrvFunction[ hDriver ][ 6 ]( + ( LPSTR )pDataPtr, _wSOSMIDIAwe32PresetIndex[ hDriver ], 0x00 ) ) == -1 ) +#endif + { + // close the file + close( hFile ); + + // free the memory + free( pDataPtr ); + + // return an error + return( -1 ); + } + } while( wReadSize ); + + // free the temporary memory buffer + free( pDataPtr ); + + // get the preset data size +#ifdef BORLAND + wReadSize = sosMIDIDRVCall32Func( _lpSOSMIDIDrvFunction[ hDriver ][ 7 ], + lpTemp, 0x00, 0x00 ); +#else + wReadSize = _lpSOSMIDIDrvFunction[ hDriver ][ 7 ]( _NULL, 0x00, 0x00 ); +#endif + + // get the preset location in the file +#ifdef BORLAND + lpTemp.sel = getDS(); + lpTemp.off = &wIndex; + sosMIDIDRVCall32Func( _lpSOSMIDIDrvFunction[ hDriver ][ 9 ], lpTemp, + 0x00, 0x00 ); +#else + _lpSOSMIDIDrvFunction[ hDriver ][ 9 ]( ( LPSTR )&wIndex, 0x00, 0x00 ); +#endif + + // allocate the memory for the preset information +#ifdef BORLAND + if( !( _lpSOSMIDIAwe32PresetBuffer[ hDriver ][ _wSOSMIDIAwe32PresetIndex[ hDriver ] ] = + ( PSTR )malloc( wReadSize ) ) ) +#else + if( !( _lpSOSMIDIAwe32PresetBuffer[ hDriver ][ _wSOSMIDIAwe32PresetIndex[ hDriver ] ] = + ( LPSTR )malloc( wReadSize ) ) ) +#endif + { + // close the file + close( hFile ); + + // return an error + return( -1 ); + } + + // seek the file to the preset location + if( lseek( hFile, wIndex, SEEK_SET ) == -1 ) + { + // close the file + close( hFile ); + + // free the preset memory + free( ( PSTR )_lpSOSMIDIAwe32PresetBuffer[ hDriver ][ _wSOSMIDIAwe32PresetIndex[ hDriver ] ] ); + + // return an error + return( -1 ); + } + + // read in the preset information + if( read( hFile, ( PSTR )_lpSOSMIDIAwe32PresetBuffer[ hDriver ][ + _wSOSMIDIAwe32PresetIndex[ hDriver ] ], wReadSize ) == -1 ) + { + // close the file + close( hFile ); + + // free the preset memory + free( ( PSTR )_lpSOSMIDIAwe32PresetBuffer[ hDriver ][ _wSOSMIDIAwe32PresetIndex[ hDriver ] ] ); + + // return an error + return( -1 ); + } + + // send the preset information to the driver +#ifdef BORLAND + lpTemp.sel = getDS(); + lpTemp.off = _lpSOSMIDIAwe32PresetBuffer[ hDriver ][ _wSOSMIDIAwe32PresetIndex[ hDriver ] ]; + if( ( sosMIDIDRVCall32Func( _lpSOSMIDIDrvFunction[ hDriver ][ 10 ], + lpTemp, 0x00, 0x00 ) ) == -1 ) +#else + if( ( _lpSOSMIDIDrvFunction[ hDriver ][ 10 ]( ( LPSTR ) + _lpSOSMIDIAwe32PresetBuffer[ hDriver ][ _wSOSMIDIAwe32PresetIndex[ hDriver ] ], 0x00, 0x00 ) ) == -1 ) +#endif + { + // free the preset memory + free( ( PSTR )_lpSOSMIDIAwe32PresetBuffer[ hDriver ][ _wSOSMIDIAwe32PresetIndex[ hDriver ] ] ); + + // close the file + close( hFile ); + + // return an error + return( -1 ); + } + + // close the SBK file + close( hFile ); + + // increment the preset buffer index to the next available slot + _wSOSMIDIAwe32PresetIndex[ hDriver ]++; + + // return no error + return( _wSOSMIDIAwe32PresetIndex[ hDriver ] ); +} + +/*************************************************************************** + +Function : WORD sosMIDIAWE32ReleaseAllSBKFiles + +Parameters : WORD hDriver + Handle of SOS driver to release .SBK files from + +Returns : -1 if error; otherwise, _ERR_NO_ERROR + +Description : Release all of the memory associated to the .SBK files + uploaded to the awe32. + +****************************************************************************/ + +WORD sosMIDIAWE32ReleaseSBKFiles( WORD hDriver ) +{ + WORD wIndex; +#ifdef BORLAND + SFAR lpTemp; +#endif + + // call the driver to release all of the .SBK files +#ifdef BORLAND + if( sosMIDIDRVCall32Func( _lpSOSMIDIDrvFunction[ hDriver ][ 9 ], lpTemp, + 0x01, 0x00 ) == -1 ) +#else + if( _lpSOSMIDIDrvFunction[ hDriver ][ 9 ]( ( LPSTR )_NULL, 0x01, 0x00 ) + == -1 ) +#endif + return( -1 ); + + // free the memory allocated for the awe32 preset information + for( wIndex = _SBK_SLOT_OFFSET; wIndex < _wSOSMIDIAwe32PresetIndex[ hDriver ]; + wIndex++ ) + free( ( PSTR )_lpSOSMIDIAwe32PresetBuffer[ hDriver ][ wIndex ] ); + + // reset the available slot index + _wSOSMIDIAwe32PresetIndex[ hDriver ] = _SBK_SLOT_OFFSET; + + // return no error + return( _ERR_NO_ERROR ); +} + +/*************************************************************************** + +Function : WORD sosMIDIAWE32NoteOn + +Parameters : WORD hDriver + Handle of SOS driver + WORD wSlot + .SBK file slot to associate patch to + WORD wChannel + Channel to use + WORD wPatch + Patch to use + WORD wNote + MIDI relative pitch to use + WORD wVelocity + Velocity to use + +Returns : -1 if error; otherwise, _ERR_NO_ERROR + +Description : Turn a note on + +****************************************************************************/ + +WORD sosMIDIAWE32NoteOn( WORD hDriver, WORD wSlot, WORD wChannel, + WORD wPatch, WORD wNote, WORD wVelocity ) +{ + BYTE szMIDIData[ 0x10 ]; + + // setup the midi data structure to associate a slot to a channel + szMIDIData[ 0 ] = 0xb0 | wChannel; + szMIDIData[ 1 ] = 0x00; + szMIDIData[ 2 ] = wSlot; +#ifdef BORLAND + sosMIDISendMIDIData( hDriver, ( PSTR )szMIDIData, 0x03 ); +#else + sosMIDISendMIDIData( hDriver, ( LPSTR )szMIDIData, 0x03 ); +#endif + + // select the patch for the channel + szMIDIData[ 0 ] = 0xc0 | wChannel; + szMIDIData[ 1 ] = wPatch; +#ifdef BORLAND + sosMIDISendMIDIData( hDriver, ( PSTR )szMIDIData, 0x02 ); +#else + sosMIDISendMIDIData( hDriver, ( LPSTR )szMIDIData, 0x02 ); +#endif + + // turn the note on with the correct pitch and attack + szMIDIData[ 0 ] = 0x90 | wChannel; + szMIDIData[ 1 ] = wNote; + szMIDIData[ 2 ] = wVelocity; +#ifdef BORLAND + sosMIDISendMIDIData( hDriver, ( PSTR )szMIDIData, 0x02 ); +#else + sosMIDISendMIDIData( hDriver, ( LPSTR )szMIDIData, 0x02 ); +#endif + + // return no error + return( _ERR_NO_ERROR ); +} + +/*************************************************************************** + +Function : WORD sosMIDIAWE32NoteOff + +Parameters : WORD hDriver + Handle of SOS driver + WORD wChannel + Channel to use + WORD wNote + MIDI relative pitch to use + +Returns : -1 if error; otherwise, _ERR_NO_ERROR + +Description : Turn a note on + +****************************************************************************/ + +WORD sosMIDIAWE32NoteOff( WORD hDriver, WORD wChannel, WORD wNote ) +{ + BYTE szMIDIData[ 0x10 ]; + + // turn the note off + szMIDIData[ 0 ] = 0x90 | wChannel; + szMIDIData[ 1 ] = wNote; + szMIDIData[ 2 ] = 0x00; +#ifdef BORLAND + sosMIDISendMIDIData( hDriver, ( PSTR )szMIDIData, 0x03 ); +#else + sosMIDISendMIDIData( hDriver, ( LPSTR )szMIDIData, 0x03 ); +#endif + + // return no error + return( _ERR_NO_ERROR ); +} + + + + + + + + diff --git a/CODE/RP/MUNGA_L4/sos/SOSMBXC.LIB b/CODE/RP/MUNGA_L4/sos/SOSMBXC.LIB new file mode 100644 index 0000000..65c1e57 Binary files /dev/null and b/CODE/RP/MUNGA_L4/sos/SOSMBXC.LIB differ diff --git a/CODE/RP/MUNGA_L4/sos/SOSMW1CR.LIB b/CODE/RP/MUNGA_L4/sos/SOSMW1CR.LIB new file mode 100644 index 0000000..e010468 Binary files /dev/null and b/CODE/RP/MUNGA_L4/sos/SOSMW1CR.LIB differ diff --git a/CODE/RP/MUNGA_L4/sos/SOSMWXCR.LIB b/CODE/RP/MUNGA_L4/sos/SOSMWXCR.LIB new file mode 100644 index 0000000..02b407a Binary files /dev/null and b/CODE/RP/MUNGA_L4/sos/SOSMWXCR.LIB differ diff --git a/CODE/RP/MUNGA_L4/sos/SOSMWXCS.LIB b/CODE/RP/MUNGA_L4/sos/SOSMWXCS.LIB new file mode 100644 index 0000000..ced690f Binary files /dev/null and b/CODE/RP/MUNGA_L4/sos/SOSMWXCS.LIB differ diff --git a/CODE/RP/MUNGA_L4/sos/bc4/SOS.H b/CODE/RP/MUNGA_L4/sos/bc4/SOS.H new file mode 100644 index 0000000..ae5dbae --- /dev/null +++ b/CODE/RP/MUNGA_L4/sos/bc4/SOS.H @@ -0,0 +1,554 @@ +/**************************************************************************** + + File : sos.h + + Programmer(s) : Don Fowler, Nick Skrepetos + Date : + + Purpose : Include Files For Zortech C++ Compiler + + Last Updated : + +**************************************************************************** + Copyright(c) 1993,1994 Human Machine Interfaces + All Rights Reserved +****************************************************************************/ + +#ifndef _SOS_DEFINED +#define _SOS_DEFINED +#include "sosdefs.h" + +#pragma pack(4) + +typedef struct +{ + PSTR off; + WORD sel; +} SFAR; + +// error definition for sound operating system +#define _SOS_ERR -1 + +// number of drivers allowed to be open at one time +#define _SOS_MAX_DRIVERS 5 + +// structure definition for the capabilities +typedef struct _tagCAPABILITIES +{ + BYTE szDeviceName[ 32 ]; // device name + WORD wDeviceVersion; // device version + WORD wBitsPerSample; // bits per sound sample + WORD wChannels; // stereo/mono sound card + WORD wMinRate; // minimum rate + WORD wMaxRate; // maximum rate + WORD wMixerOnBoard; // board contains mixer + WORD wMixerFlags; // mixer capabilities + WORD wFlags; // miscellaneous flags + SFAR lpPortList; // list of usable ports + SFAR lpDMAList; // list of usable dma channels + SFAR lpIRQList; // list of usable irq channels + SFAR lpRateList; // list of usable rates, -1 if any in min to max + WORD fBackground; // foreground or background driver + WORD wDeviceID; // ID for the device + WORD wTimerID; // ID for the timer + +} _SOS_CAPABILITIES; + +// far pointer to the device capabilities structure +typedef _SOS_CAPABILITIES * PSOSDEVICECAPS; + +// flag types for driver +#define _FLAGS_SIGNED 0x8000 + +// devices that can be loaded +#define _SOUND_BLASTER_8_MONO 0xe000 +#define _SOUND_BLASTER_8_ST 0xe001 +#define _SBPRO_8_ST _SOUND_BLASTER_8_ST +#define _SBPRO_8_MONO 0xe00f +#define _SOUND_MASTER_II_8_MONO 0xe002 +#define _MV_PAS_8_MONO 0xe003 +#define _MV_PAS_16_MONO 0xe004 +#define _MV_PAS_8_ST 0xe005 +#define _MV_PAS_16_ST 0xe006 +#define _ADLIB_GOLD_8_ST 0xe007 +#define _ADLIB_GOLD_16_ST 0xe008 +#define _ADLIB_GOLD_8_MONO 0xe009 +#define _ADLIB_GOLD_16_MONO 0xe00a +#define _MICROSOFT_8_MONO 0xe00b +#define _MICROSOFT_8_ST 0xe00c +#define _MICROSOFT_16_MONO 0xe00d +#define _MICROSOFT_16_ST 0xe00e +#define _SOUND_SOURCE_8_MONO_PC 0xe010 +#define _SOUND_SOURCE_8_MONO_TANDY 0xe011 +#define _GENERAL_PORT_8_MONO 0xe012 +#define _GENERAL_PORT_8_MONO_R 0xe013 +#define _SIERRA_8_MONO 0xe014 +#define _SB16_8_MONO 0xe015 +#define _SB16_8_ST 0xe016 +#define _SB16_16_MONO 0xe017 +#define _SB16_16_ST 0xe018 +#define _ESS_AUDIODRIVE_8_MONO 0xe019 +#define _ESS_AUDIODRIVE_8_ST 0xe01a +#define _ESS_AUDIODRIVE_16_MONO 0xe01b +#define _ESS_AUDIODRIVE_16_ST 0xe01c +#define _SOUNDSCAPE_8_MONO 0xe01d +#define _SOUNDSCAPE_8_ST 0xe01e +#define _SOUNDSCAPE_16_MONO 0xe01f +#define _SOUNDSCAPE_16_ST 0xe020 +#define _RAP10_8_MONO 0xe021 +#define _RAP10_16_MONO 0xe022 +#define _GUS_8_MONO 0xe023 +#define _GUS_8_ST 0xe024 +#define _GUS_16_MONO 0xe025 +#define _GUS_16_ST 0xe026 +#define _GUS_MAX_8_MONO 0xe027 +#define _GUS_MAX_8_ST 0xe028 +#define _GUS_MAX_16_MONO 0xe029 +#define _GUS_MAX_16_ST 0xe02a +#define _WAVEJAMMER_8_MONO 0xe02b +#define _WAVEJAMMER_8_ST 0xe02c +#define _WAVEJAMMER_16_MONO 0xe02d +#define _WAVEJAMMER_16_ST 0xe02e +#define _TEMPOCS_8_MONO 0xe02f +#define _TEMPOCS_8_ST 0xe030 +#define _TEMPOCS_16_MONO 0xe031 +#define _TEMPOCS_16_ST 0xe032 +#define _WAVEJAMMERCD_8_MONO 0xe033 +#define _WAVEJAMMERCD_8_ST 0xe034 +#define _WAVEJAMMERCD_16_MONO 0xe035 +#define _WAVEJAMMERCD_16_ST 0xe036 +#define _SOUND_BLASTER_8_MONO_R 0xe050 +#define _MICROSOFT_8_MONO_R 0xe051 +#define _SOUND_MASTER_II_8_MONO_R 0xe052 +#define _ADLIB_GOLD_8_MONO_R 0xe053 +#define _MV_PAS_8_MONO_R 0xe054 +#define _RAP10_8_MONO_R 0xe058 +#define _RAP10_16_MONO_R 0xe059 +#define _SB16_8_MONO_R 0xe05a +#define _SB16_8_ST_R 0xe05b +#define _SB16_16_MONO_R 0xe05c +#define _SB16_16_ST_R 0xe05d +#define _MV_PAS_16_MONO_R 0xe060 +#define _SOUNDSCAPE_8_MONO_R 0xe061 +#define _SOUNDSCAPE_8_ST_R 0xe062 +#define _SOUNDSCAPE_16_MONO_R 0xe063 +#define _SOUNDSCAPE_16_ST_R 0xe064 +#define _ESS_AUDIODRIVE_8_MONO_R 0xe065 +#define _ESS_AUDIODRIVE_8_ST_R 0xe066 +#define _ESS_AUDIODRIVE_16_MONO_R 0xe067 +#define _ESS_AUDIODRIVE_16_ST_R 0xe068 +#define _SPEECH_THING_8_MONO 0xe090 +#define _YAMAHA_8_MONO 0xe106 +#define _INT_SPEAKER_8_MONO 0xe107 + +// call indexes for the loadable drivers +enum +{ + _DRV_INIT, + _DRV_UNINIT, + _DRV_SETRATE, + _DRV_SETACTION, + _DRV_START, + _DRV_STOP, + _DRV_PAUSE, + _DRV_RESUME, + _DRV_CAPABILITIES, + _DRV_PLAY_FOREGROUND, + _DRV_GET_FILL_INFO, + _DRV_GET_CALL_FUNCTIONS, + _DRV_SET_CALL_FUNCTIONS +}; + +// fill info +typedef struct _tagFillInfo + { + + SFAR lpFillHandler; // pointer to fill handler + SFAR lpDMAFillCount; // pointer to dma count + SFAR lpSampleList; // pointer to sample list + SFAR lpDMAMasterVolume; // pointer to dma count + + } _SOS_FILL_INFO; + +// caps info structure +typedef struct _tagCapsInfo + { + + SFAR lpPortList; // pointer to port list + SFAR lpDMAList; // pointer to DMA list + SFAR lpIRQList; // pointer to IRQ list + SFAR lpRateList; // pointer to rate list + + } _SOS_CAPS_INFO; + +// maximum number of available voice +#define _MAX_VOICES 32 + +// structure definition +typedef struct _tagSAMPLE +{ + SFAR samplePtr; // pointer to data buffer + SFAR sampleData; // pointer to active data + SFAR sampleLoopPtr; // pointer for loop back + + WORD sampleLength; // length of sample + WORD sampleIndex; // index into sample + WORD sampleLoopLength; // length of loop + + WORD sampleBytesLeft; // bytes left to play in sample + + WORD sampleLoopPoint; // byte count for loop point + WORD sampleLoopEndLength; // length of remaining chunk + + short sampleFlags; // control sample + short sampleVolume; // volume control + short sampleID; // sample ID + + short sampleChannel; // channel to play sample on + short sampleLoopCount; // loop count + short sampleLastFill; // last fill position + SFAR sampleCallback; // callback function for sample + + WORD samplePitchAdd; + short samplePitchFraction; + + short samplePort; // port to use for non-dma digitized + + WORD sampleTotalBytes; + WORD sampleByteLength; + + short samplePanLocation; + short samplePanSpeed; + short samplePanDirection; + short samplePanStart; + short samplePanEnd; + + short sampleDelayBytes; + short sampleDelayRepeat; + + WORD sampleADPCMPredicted; + short sampleADPCMIndex; + + short sampleRootNoteMIDI; + + WORD sampleTemp1; + +} _SOS_SAMPLE; + +// enumeration for left or right channel +enum +{ + _LEFT_CHANNEL, + _RIGHT_CHANNEL, + _CENTER_CHANNEL, + _INTERLEAVED +}; + +// enumeration for foreground and background +enum +{ + _FOREGROUND, + _BACKGROUND +}; + +// defines for the sample flags +#define _ACTIVE 0x8000 +#define _LOOPING 0x4000 +#define _FIRST_TIME 0x2000 +#define _PENDING_RELEASE 0x1000 +#define _CONTINUE_BLOCK 0x0800 +#define _PITCH_SHIFT 0x0400 +#define _PANNING 0x0200 +#define _VOLUME 0x0100 +#define _TRANSLATE16TO8 0x0080 +#define _STAGE_LOOP 0x0040 +#define _TRANSLATE8TO16 0x0020 +#define _STEREOTOMONO 0x0010 + +// defines for the wParam flags +#define _SINGLE_SAMPLE 0x01 + +#define _SOS_DCAPS_AUTO_REINIT 0x01 +#define _SOS_DCAPS_MPU_401 0x02 +#define _SOS_DCAPS_OPL2 0x04 +#define _SOS_DCAPS_OPL3 0x08 +#define _SOS_DCAPS_OPL4 0x10 +#define _SOS_DCAPS_WAVETABLE 0x20 +#define _SOS_DCAPS_DL_SAMPLES 0x40 +#define _SOS_DCAPS_FIFO_DEVICE 0x80 +#define _SOS_DCAPS_ENV_NEEDED 0x100 +#define _SOS_DCAPS_PSEUDO_DMA1 0x200 +#define _SOS_DCAPS_SIGNED_DATA 0x8000 + +// file header structure +typedef struct +{ + // name ID + BYTE szName[ 32 ]; + + // number of drivers in the file + WORD wDrivers; + + // offset of first driver + WORD lOffset; + + // size of the file + WORD lFileSize; + +} _FILEHEADER; + +// driver header structure +typedef struct +{ + // name ID + BYTE szName[ 32 ]; + + // offset of next driver + WORD lNextDriver; + + // size of current driver + WORD wSize; + + // id for the current device + WORD wDeviceID; + + // id for the type of DOS extender + WORD wExtenderType; + +} _DRIVERHEADER; + +// device hardware information +typedef struct +{ + // port to be used + WORD wPort; + + // irq to use + WORD wIRQ; + + // dma channel to se + WORD wDMA; + + // extra parameter + WORD wParam; + +} _SOS_HARDWARE; + +// structure definition for start sample +typedef struct +{ + // pointer to sample + PSTR pSamplePtr; + WORD wFiller2; + + // size of the sample + WORD dwSampleSize; + + // number of times to loop the sample -1 is infinite + WORD wLoopCount; + + // channel to play sample on + WORD wChannel; + + // volume to play sample at + WORD wVolume; + + // id for the sample + WORD wSampleID; + + // far pointer to the callback function + VOID ( cdecl *pCallback )( WORD, WORD, WORD ); + WORD wFiller1; + + // port to use if driver is a non-dma background driver + WORD wSamplePort; + + // flags field + WORD wSampleFlags; + + // total length of sample including loops, etc.. + WORD dwSampleByteLength; + + // loop point for the sample + WORD dwSampleLoopPoint; + WORD dwSampleLoopLength; + + // pitch shifting components + WORD dwSamplePitchAdd; + WORD wSamplePitchFraction; + + // pan components + WORD wSamplePanLocation; + WORD wSamplePanSpeed; + WORD wSamplePanDirection; + WORD wSamplePanStart; + WORD wSamplePanEnd; + + // delay parts + WORD wSampleDelayBytes; + WORD wSampleDelayRepeat; + + // compression components + WORD dwSampleADPCMPredicted; + WORD wSampleADPCMIndex; + + // root note for pitch shifting + WORD wSampleRootNoteMIDI; + + // filler for future upgrades + WORD dwSampleTemp1; + WORD dwSampleTemp2; + WORD dwSampleTemp3; + +} _SOS_START_SAMPLE; + +// structure for initializing a driver +typedef struct +{ + WORD wBufferSize; + SFAR lpBuffer; + BOOL wAllocateBuffer; + WORD wSampleRate; + WORD wParam; + LONG dwParam; + SFAR lpFillHandler; + SFAR lpDriverMemory; + SFAR lpDriverMemoryCS; + SFAR lpTimerMemory; + SFAR lpTimerMemoryCS; + VOID ( *pFillHandler )( VOID ); + WORD wTimerID; + WORD wPhysical; + +} _SOS_INIT_DRIVER; + +// define for the timer types to use +#define _SOS_NORMAL_TIMER 0x00 + +// enumeration for the timer types +enum +{ + _TIMER_8_MONO = 0x1000, + _TIMER_8_ST, + _TIMER_16_MONO, + _TIMER_16_ST, + _TIMER_8_MONO_ULAW, + _TIMER_8_ST_ULAW, + _TIMER_16_MONO_ULAW, + _TIMER_16_ST_ULAW, + _TIMER_8_MONO_REC, + _TIMER_8_MONO_ULAW_REC, + _TIMER_UNDEFINED_1, + _TIMER_UNDEFINED_2, + _TIMER_UNDEFINED_3, + _TIMER_UNDEFINED_4, + _TIMER_UNDEFINED_5, + _TIMER_UNDEFINED_6, + _TIMER_UNDEFINED_7, + _TIMER_UNDEFINED_8, + _TIMER_UNDEFINED_9, + _TIMER_UNDEFINED_A, + _TIMER_UNDEFINED_B, + _TIMER_UNDEFINED_C, + _TIMER_UNDEFINED_D, + _TIMER_UNDEFINED_E, + _TIMER_UNDEFINED_F, + _TIMER_UNDEFINED_10, + _TIMER_UNDEFINED_11, + _TIMER_UNDEFINED_12, + _TIMER_UNDEFINED_13, + _TIMER_UNDEFINED_14, + _TIMER_UNDEFINED_15, + _TIMER_UNDEFINED_16, + _TIMER_8_SOUND_SOURCE, + _TIMER_8_SOUND_SOURCE_TANDY, + _TIMER_8_GENERAL_PORT, + _TIMER_8_GENERAL_PORT_REC +}; + +// define for no slots available +#define _ERR_NO_SLOTS ( WORD )-1 + +// error codes for the system +enum +{ + _ERR_NO_ERROR, + _ERR_DRIVER_NOT_LOADED, + _ERR_INVALID_POINTER, + _ERR_DETECT_INITIALIZED, + _ERR_FAIL_ON_FILE_OPEN, + _ERR_MEMORY_FAIL, + _ERR_INVALID_DRIVER_ID, + _ERR_NO_DRIVER_FOUND, + _ERR_DETECTION_FAILURE, + _ERR_DRIVER_LOADED, + _ERR_INVALID_HANDLE, + _ERR_NO_HANDLES, + _ERR_PAUSED, + _ERR_NOT_PAUSED, + _ERR_INVALID_DATA, + _ERR_DRV_FILE_FAIL, + _ERR_INVALID_PORT, + _ERR_INVALID_IRQ, + _ERR_INVALID_DMA, + _ERR_INVALID_DMA_IRQ +}; + +// maximum number of timer events that can be registered +#define _TIMER_MAX_EVENTS 0x10 + +// flags for the debugging system +#define _SOS_DEBUG_NORMAL 0x0000 +#define _SOS_DEBUG_NO_TIMER 0x0001 +#define _SOS_TIMER_DPMI 0x0002 + +// define for types of DOS extenders +#define _SOS_RATIONAL 0x8000 +#define _SOS_FLASHTECK 0x4000 + +// defines for the types of timers for different +// dos extenders +#define _SOS_TIMER_NEAR 0x8000 +#define _SOS_TIMER_FAR 0x4000 + +// values for callback information +enum +{ + _SAMPLE_PROCESSED, + _SAMPLE_LOOPING, + _SAMPLE_DONE +}; + +// define for special 18.2 callback rate to dos +#define _TIMER_DOS_RATE 0xff00 + +#pragma pack() + +#pragma pack( 1 ) +typedef struct +{ + unsigned region_size; + unsigned offset; + unsigned segment; + unsigned short number_available; + unsigned short number_used; + unsigned page0; + +} EVDS_STRUCT; + +typedef struct +{ + unsigned region_size; + unsigned offset; + unsigned short segment; + unsigned short ID; + unsigned physical; + +} VDS_STRUCT; + +#pragma pack() + +#include "sosdata.h" +#include "sosfnct.h" + +#endif diff --git a/CODE/RP/MUNGA_L4/sos/bc4/SOS.INC b/CODE/RP/MUNGA_L4/sos/bc4/SOS.INC new file mode 100644 index 0000000..3d967d6 --- /dev/null +++ b/CODE/RP/MUNGA_L4/sos/bc4/SOS.INC @@ -0,0 +1,192 @@ +;*************************************************************************** +; general equates +;*************************************************************************** +_MAX_VOICES equ 32 +_ERR_NO_SLOTS equ -1 +_ERR_NO_ERROR equ 0 +_ERR_INVALID_HANDLE equ 10 +_TRUE equ 1 +_FALSE equ 0 + +;*************************************************************************** +; macro definitions follow +;*************************************************************************** + +; macro for function start +CFuncStart macro + + push ebx + push ecx + push edx + push esi + push edi + push es + + endm + +; macro for function end +CFuncEnd macro + + pop es + pop edi + pop esi + pop edx + pop ecx + pop ebx + + endm + +;*************************************************************************** +; equates for sample flags +;*************************************************************************** +_ACTIVE equ 8000h +_LOOPING equ 4000h +_FIRST_TIME equ 2000h +_PENDING_RELEASE equ 1000h +_CONTINUE_BLOCK equ 0800h +_PITCH_SHIFT equ 0400h +_PANNING equ 0200h +_VOLUME equ 0100h +_TRANSLATE16TO8 equ 0080h +_STAGE_LOOP equ 0040h +_TRANSLATE8TO16 equ 0020h +_STEREOTOMONO equ 0010h +_SKIP_PROCESSED_CB equ 0008h +_SKIP_LOOP_CB equ 0004h +_SKIP_DONE_CB equ 0002h + +;*************************************************************************** +; data stucture definitions follow. +;*************************************************************************** + +_SOS_START_SAMPLE struc + + ; pointer to sample data + pSamplePtr dd 0 + dd 0 + + ; size of the sample + dwSampleSize dd 0 + + ; loop count + wLoopCount dd 0 + + ; channel + wChannel dd 0 + + ; volume + wVolume dd 0 + + ; sample ID + wSampleID dd 0 + + ; call back + pCallback dd 0 + dd 0 + + ; port + wSamplePort dd 0 + + ; flags + wSampleFlags dd 0 + + ; length in bytes + dwSampleByteLength dd 0 + + ; loop point for sample + dwSampleLoopPoint dd 0 + dwSampleLoopLength dd 0 + + ; pitch shifting components + dwSamplePitchAdd dd 0 + wSamplePitchFraction dd 0 + + ; panning components + wSamplePanLocation dd 0 + wSamplePanSpeed dd 0 + wSamplePanDirection dd 0 + wSamplePanStart dd 0 + wSamplePanEnd dd 0 + + ; delay components + wSampleDelayBytes dd 0 + wSampleDelayRepeat dd 0 + + ; compression components + dwSampleADPCMPredict dd 0 + wSampleADPCMIndex dd 0 + + ; root note for MIDI + wSampleRootNoteMIDI dd 0 + + ; filler + dwSampleTemp1 dd 0 + dwSampleTemp2 dd 0 + dwSampleTemp3 dd 0 + + ends + +sampleStartSize equ type _SOS_START_SAMPLE + +; this structure is used inside the timer handlers +timerSAMPLE struc + + samplePtr dq 0 ; pointer to sample data + sampleDataPtr dq 0 ; pointer to active data + sampleLoopPtr dq 0 ; pointer to loop back + + sampleLength dd 0 ; DWORD length of sample + sampleIndex dd 0 ; DWORD index into sample + sampleLoopLength dd 0 ; DWORD length of loop segment + + sampleBytesLeft dd 0 ; bytes left to play + + sampleLoopPoint dd 0 ; byte count for loop point + sampleLoopEndLength dd 0 ; length of end loop point + + sampleFlags dw 0 ; sample flags + sampleVolume dw 0 ; sample attinuation value + sampleID dw 0 ; sample ID value + + sampleChannel dw 0 ; current play channel + sampleLoopCount dw 0 ; loop count + sampleLastFill dw 0 ; last point of filling + sampleCallback dq 0 ; call back function + + samplePitchAdd dd 0 ; pitch shift value + samplePitchFraction dw 0 ; sample pitch fraction + + samplePort dw 0 ; port for non-DMA device + + sampleTotalBytes dd 0 ; total bytes processed + sampleByteLength dd 0 ; actual length of sample + + samplePanLocation dw 0 ; location of pan + samplePanSpeed dw 0 ; speed of pan + samplePanDirection dw 0 ; pan direction +- 1.. + samplePanStart dw 0 ; pan start + samplePanEnd dw 0 ; pan end + + sampleDelayBytes dw 0 ; bytes for delay + sampleDelayRepeat dw 0 ; number of repeats + + sampleADPCMPredicted dd 0 ; predicted value + sampleADPCMIndex dw 0 ; index into table + + sampleRootNoteMIDI dw 0 ; root note for sample + + sampleFraction dw 0 ; reserved + +timerSAMPLE ends + +timerSAMPLESize equ type timerSAMPLE + +; structure to represent a "far" pointer w/selector and offset +SFAR struc + + ; selector and offset + wOffset dd 0 + wSelector dd 0 + +SFAR ends + diff --git a/CODE/RP/MUNGA_L4/sos/bc4/SOSDATA.H b/CODE/RP/MUNGA_L4/sos/bc4/SOSDATA.H new file mode 100644 index 0000000..2aa0f23 --- /dev/null +++ b/CODE/RP/MUNGA_L4/sos/bc4/SOSDATA.H @@ -0,0 +1,112 @@ +/**************************************************************************** + + File : sosdata.h + + Programmer(s) : Don Fowler, Nick Skrepetos + Date : + + Purpose : Include Files For Zortech C++ Compiler + + Last Updated : + +**************************************************************************** + Copyright(c) 1993,1994 Human Machine Interfaces + All Rights Reserved +****************************************************************************/ + +#ifndef _SOS_DATA +#define _SOS_DATA + +#include + +#pragma pack(4) +extern WORD _sosDIGIData_Start; +extern WORD _sosDIGIData_End; +extern WORD _wSOSDriverLinear[]; +extern WORD _wSOSTimerLinear[]; +extern SFAR _lpSOSDriver[]; +extern SFAR _lpSOSTimer[]; +extern SFAR _lpSOSDriverCS[]; +extern SFAR _lpSOSTimerCS[]; +extern BOOL _wSOSDriverLoaded[]; +extern BOOL _wSOSTimerLoaded[]; +extern BOOL _wSOSDriverInitialized[]; +extern WORD _wSOSOutputRate[]; +extern WORD _wSOSDMABuffersize[]; +extern LONG _dwSOSDMABufferPhysical[]; +extern SFAR _lpSOSDMABuffer[]; +extern BOOL _wTimerUsed; +extern SFAR _lpSOSFillHandler[]; +extern WORD _wSOSTimerType[]; +extern WORD _wSOSDriverType[]; +extern SFAR _lpSOSSampleList[][ _MAX_VOICES ]; +extern SFAR _lpSOSDMAIrqCount[]; +extern SFAR _lpSOSDMAFillCount[]; +extern WORD _wSOSTmrNextCount; +extern SFAR _lpSOSOldTimer; +extern WORD _wSOSDriverID[]; +extern _SOS_CAPABILITIES _sSOSDriverCaps[]; +extern WORD _wSOSDMAPortList[]; +extern BYTE _bSOSDMAChannel[]; +extern _SOS_INIT_DRIVER _sSOSDIGIInitDriver[]; +extern BYTE _pSOSDriverPath[]; +extern BYTE _pSOSTempDriverPath[]; +extern BOOL _wTIMERUsed; +extern WORD _wTIMERValue; +extern VOID ( * _pTIMEREvents[] )( VOID ); +extern WORD _wTIMEREventRate[]; +extern WORD _dwTIMEREventFraction[]; +extern WORD _dwTIMEREventFractionCurrent[]; +extern BYTE _bSOSMIDITimerSongHandler[]; +extern BYTE _bSOSMIDISongHandle; +extern WORD _wSOSTimerMemHandle[]; +extern WORD _wSOSDriverMemHandle[]; +extern WORD _wSOSRealSeg[]; +extern VOID ( *_pSOSFillHandlerThunks[] )( VOID ); + +extern _FILEHEADER sDETFileHeader; +extern _DRIVERHEADER sDETDriverHeader; +extern _FILEHEADER sLOADFileHeader; +extern _DRIVERHEADER sLOADDriverHeader; +extern BOOL wDETInitialized; +extern WORD wDETLinear; +extern SFAR lpDETDriverBuffer; +extern SFAR lpDETDriverBufferCS; +extern WORD hDETFile; +extern DWORD dwDETDriverIndex; +extern WORD wDETDriverIndexCur; +extern WORD wDETMemHandle; +extern _SOS_CAPABILITIES * pDETDeviceCaps; +extern _SOS_CAPABILITIES sDETCaps; +extern PSTR _pSOSErrorStrings[]; +extern BOOL wSOSBufferAllocated[]; +extern BOOL wSOSSystemInitialized; +extern VDS_STRUCT sSOSVDSInfo; +extern _SOS_FILL_INFO _sSOSFillInfo; +extern WORD _wSOSTimerEventIndex; +extern WORD _wSOSTimerEntered; +extern WORD _wSOSDriverSize[]; +extern WORD _wSOSTimerSize[]; +extern PSTR pDETBuffer; + +#ifdef __cplusplus +extern "C" { +#endif +extern WORD _sosDIGIData1_Start; +extern WORD _sosDIGIData1_End; +extern WORD _sosDIGIData2_Start; +extern WORD _sosDIGIData2_End; +extern BYTE _bTIMERInstalled; +extern BYTE _bTIMERDPMI; +extern WORD wDetectPort; +extern WORD wDetectIRQ; +extern WORD wDetectDMA; +extern WORD wDetectParam; +#ifdef __cplusplus +} +#endif + +#pragma pack() + +#endif + diff --git a/CODE/RP/MUNGA_L4/sos/bc4/SOSDEFS.H b/CODE/RP/MUNGA_L4/sos/bc4/SOSDEFS.H new file mode 100644 index 0000000..67b6cb6 --- /dev/null +++ b/CODE/RP/MUNGA_L4/sos/bc4/SOSDEFS.H @@ -0,0 +1,65 @@ +/**************************************************************************** + + File : sosdefs.h + + Programmer(s) : Don Fowler, Nick Skrepetos + Date : + + Purpose : Include Files For Zortech C++ Compiler + + Last Updated : + +**************************************************************************** + Copyright(c) 1993,1994 Human Machine Interfaces + All Rights Reserved +****************************************************************************/ + + +#ifndef _SOSDEFS_DEFINED +#define _SOSDEFS_DEFINED + +#undef _TRUE +#undef _FALSE +#undef _NULL +enum + { + _FALSE, + _TRUE + }; + +#define _NULL 0 + +#ifndef VOID +#define VOID void +#endif +typedef int BOOL; +typedef unsigned int UINT; +typedef unsigned char BYTE; +typedef unsigned WORD; +#ifndef LONG +typedef signed long LONG; +#endif +typedef unsigned long DWORD; + +typedef BYTE * PBYTE; +typedef char * PSTR; +typedef WORD * PWORD; +typedef LONG * PLONG; +typedef VOID * PVOID; + +typedef BYTE * LPBYTE; +typedef BYTE * LPSTR; +typedef WORD * LPWORD; +typedef LONG * LPLONG; +typedef VOID * LPVOID; + +typedef BYTE * HPBYTE; +typedef BYTE * HPSTR; +typedef WORD * HPWORD; +typedef LONG * HPLONG; +typedef VOID * HPVOID; + +typedef unsigned HANDLE; + +#endif + diff --git a/CODE/RP/MUNGA_L4/sos/bc4/SOSFNCT.H b/CODE/RP/MUNGA_L4/sos/bc4/SOSFNCT.H new file mode 100644 index 0000000..bc04a6b --- /dev/null +++ b/CODE/RP/MUNGA_L4/sos/bc4/SOSFNCT.H @@ -0,0 +1,209 @@ +/**************************************************************************** + + File : sosfnct.h + + Programmer(s) : Don Fowler, Nick Skrepetos + Date : + + Purpose : Include Files For Zortech C++ Compiler + + Last Updated : + +**************************************************************************** + Copyright(c) 1993,1994 Human Machine Interfaces + All Rights Reserved +****************************************************************************/ + +#ifndef _SOS_FUNCTIONS +#define _SOS_FUNCTIONS + +#pragma pack(4) + +#ifdef __cplusplus // HACK - ECH 96/01/26 +extern "C" { +#endif + +VOID sosDIGILockMemory ( VOID ); +VOID sosDIGIUnLockMemory ( VOID ); +WORD sosDIGIInitSystem ( PSTR, WORD ); +WORD sosDIGIUnInitSystem ( VOID ); +WORD sosDIGIInitDriver ( WORD, _SOS_HARDWARE *, + _SOS_INIT_DRIVER *, WORD * ); +WORD sosDIGIUnInitDriver ( WORD, BOOL, BOOL ); +WORD sosDIGILoadDriver ( WORD, WORD, SFAR *, SFAR *, PSTR, PSTR, WORD * ); +WORD sosDIGIUnLoadDriver ( WORD ); +WORD sosDIGIGetDeviceCaps ( WORD, PSOSDEVICECAPS ); + +#ifdef PHARLAP +WORD sosDIGIAllocateBuffer ( WORD , WORD *, WORD *, SFAR * ); +#else +WORD sosDIGIAllocateBuffer ( WORD , WORD *, WORD *, SFAR * ); +#endif + +WORD sosDIGIStopSample ( WORD, WORD ); +WORD sosDIGISamplesPlaying ( WORD ); +BOOL sosDIGISampleDone ( WORD, WORD ); +BOOL sosDIGISampleFilling ( WORD, WORD ); +WORD sosDIGIStartSample ( WORD, _SOS_START_SAMPLE * ); +WORD sosDIGIContinueSample ( WORD, WORD, _SOS_START_SAMPLE * ); + + +WORD sosDIGIDetectInit ( PSTR ); +WORD sosDIGIDetectUnInit ( VOID ); +WORD sosDIGIDetectFindHardware ( WORD, _SOS_CAPABILITIES *, WORD * ); +WORD sosDIGIDetectFindFirst ( _SOS_CAPABILITIES *, WORD * ); +WORD sosDIGIDetectFindNext ( _SOS_CAPABILITIES *, WORD * ); +WORD sosDIGIDetectGetSettings ( _SOS_HARDWARE * ); +WORD sosDIGIDetectGetCaps ( WORD, _SOS_CAPABILITIES * ); +WORD sosDIGIDetectVerifySettings( _SOS_HARDWARE * ); +PSTR sosGetErrorString ( WORD ); + +WORD sosDIGILoadTimer ( WORD , SFAR *, SFAR *, PSTR, PSTR, WORD * ); +WORD sosDIGIUnLoadTimer ( WORD ); + +WORD sosTIMERRegisterEvent ( WORD, VOID ( * )( VOID ), WORD * ); +WORD sosTIMERInitSystem ( WORD, WORD ); +WORD sosTIMERUnInitSystem ( WORD ); +WORD sosTIMERSetRate ( WORD ); +WORD sosTIMERRemoveEvent ( WORD ); +WORD sosTIMERAlterEventRate ( WORD, WORD ); +WORD sosTIMERGetEventRate ( WORD ); +VOID sosTIMEROldHandler ( VOID ); +VOID sosTIMERHandler ( VOID ); +VOID sosFillThunk0 ( VOID ); +VOID sosFillThunk1 ( VOID ); +VOID sosFillThunk2 ( VOID ); +VOID sosFillThunk3 ( VOID ); +VOID sosFillThunk4 ( VOID ); + +// functions in soscntl.c +WORD sosDIGISetSampleVolume ( WORD, WORD, WORD ); +WORD sosDIGIGetSampleVolume ( WORD, WORD ); +WORD sosDIGISetChannel ( WORD, WORD, WORD ); +WORD sosDIGIGetChannel ( WORD, WORD ); +WORD sosDIGIGetBytesProcessed ( WORD, WORD ); +WORD sosDIGIGetLoopCount ( WORD, WORD ); +WORD sosDIGISetPanLocation ( WORD, WORD, WORD ); +WORD sosDIGIGetPanLocation ( WORD, WORD ); +DWORD sosDIGISetPitch ( WORD, WORD, DWORD ); +DWORD sosDIGIGetPitch ( WORD, WORD ); +WORD sosDIGIGetDMAPosition ( WORD ); +WORD sosDIGISetPanSpeed ( WORD, WORD, WORD ); +WORD sosDIGIGetPanSpeed ( WORD, WORD ); +WORD sosDIGIGetSampleID ( WORD, WORD ); +WORD sosDIGIGetSampleHandle ( WORD, WORD ); +WORD sosDIGISetMasterVolume ( WORD, WORD ); +#ifdef PHARLAP +VOID sosFreeVDSPage ( WORD, WORD, LONG ); +WORD sosAllocVDSPage ( SFAR *, WORD *, WORD * ); +extern int cdecl sosRealAlloc( int, int *, int * ); +extern void cdecl sosDRVFarMemCopy( LPSTR, LPSTR, WORD ); +extern int cdecl sosGetCS ( VOID ); +extern int cdecl sosGetES ( VOID ); +#else +WORD sosAllocVDSPage ( SFAR *, WORD *, WORD * ); +VOID sosFreeVDSPage ( WORD, WORD, LONG ); +extern int cdecl sosRealAlloc( int, int *, int * ); +extern int cdecl sosRealFree ( int ); +#endif + +extern BOOL cdecl _sos_read ( WORD, SFAR, WORD, WORD * ); +#ifdef __cplusplus // HACK - ECH 96/01/26 +} +#endif + +#ifdef __cplusplus +extern "C" { +#endif +// sos driver functions +extern int cdecl sosDRVLockMemory ( DWORD, DWORD ); +extern int cdecl sosDRVUnLockMemory ( DWORD, DWORD ); +extern void cdecl sosDRVGetCapsInfo ( SFAR, SFAR, _SOS_CAPABILITIES * ); +extern void cdecl sosDetDRVGetCapsInfo ( SFAR, SFAR, _SOS_CAPABILITIES * ); +extern void cdecl sosDRVGetCapsPtr ( SFAR, SFAR, _SOS_CAPABILITIES * ); +extern void cdecl sosDRVInit ( SFAR, SFAR, int, int, int, int, int, int ); +extern void cdecl sosDRVStart ( SFAR, SFAR, int, int ); +extern void cdecl sosDRVSetRate ( SFAR, SFAR, int ); +extern void cdecl sosDRVSetAction ( SFAR, SFAR ); +extern void cdecl sosDRVStop ( SFAR, SFAR ); +extern void cdecl sosDRVUnInit ( SFAR, SFAR ); +extern void cdecl sosDRVGetFillInfo ( SFAR, SFAR, SFAR, int, int, int, _SOS_FILL_INFO * ); +extern void cdecl sosFillSampleStructs ( PSTR, SFAR ); +extern WORD cdecl sosDetDRVExist ( SFAR, SFAR ); +extern WORD cdecl sosDetDRVGetSettings ( SFAR, SFAR ); +extern WORD cdecl sosCreateAliasCS ( SFAR, SFAR * ); +extern WORD cdecl sosDetDRVVerifySettings( SFAR, WORD, WORD, WORD, SFAR ); +extern WORD cdecl sosDIGIInitForWindows( WORD ); +extern WORD cdecl sosDIGIUnInitForWindows( WORD ); +extern WORD cdecl sosAllocateFarMem ( WORD, PSTR, WORD *, SFAR * ); +extern VOID cdecl sosFreeSelector ( SFAR, DWORD ); +extern WORD cdecl sosMAKEDOSPtr ( PSTR, SFAR * ); +extern VOID cdecl sosDetDRVSetEnvString ( DWORD, PSTR ); +extern PSTR cdecl sosDetDRVGetEnvString ( DWORD ); +extern VOID cdecl sosDetDRVEnvStringInit ( SFAR, SFAR ); +extern VOID cdecl sosDRVSetupCallFunctions( SFAR, SFAR, SFAR, SFAR ); +extern WORD cdecl sosDRVGetFreeMemory ( VOID ); +extern WORD cdecl sosDRVAllocVDSStruct ( WORD, WORD *, WORD * ); +extern WORD cdecl sosDRVFreeVDSStruct ( WORD, WORD ); +extern WORD cdecl sosDRVIsWindowsActive ( VOID ); +extern WORD cdecl sosDRVVDSGetBuffer ( WORD ); +extern WORD cdecl sosDRVVDSFreeBuffer ( WORD ); +extern WORD cdecl sosSetupVDSBufferSize( WORD, WORD ); +extern WORD cdecl sfmemcpy( PSTR, WORD, WORD ); +extern WORD cdecl sfmemcpy1( PSTR, WORD, WORD ); +extern WORD cdecl getDS( VOID ); +extern WORD cdecl getCS( VOID ); +extern WORD cdecl sosDRVMakeDMASelector ( WORD ); +extern WORD cdecl sosDRVFreeDMASelector ( WORD ); +extern WORD cdecl sosSetPageAccess ( WORD, WORD ); +extern VOID cdecl sosCopyToFarMem ( SFAR, PSTR, WORD ); +extern VOID cdecl sosDRVCallFillHandler ( SFAR ); +extern VOID cdecl sosInitDMABuffer( SFAR, WORD, WORD ); +extern VOID cdecl sosDIGISetupDS( VOID ); + +extern void cdecl sosTIMERDRVInit( int wRate, void ( * )( void ) ); +extern void cdecl sosTIMERDRVUnInit( void ); +extern void cdecl sosTIMERDRVHandler( void ); +extern void cdecl sosTIMERDRVFHandler( void ); +extern void cdecl sosTIMERDRVEnable( void ); +extern void cdecl sosTIMERDRVDisable( void ); +extern void cdecl sosTIMERDRVCallOld( void ); +extern void cdecl sosTIMERDRVSetRate( WORD ); +extern void cdecl sosDIGITimer_Start( void ); +extern void cdecl sosDIGITimer_End( void ); +extern void cdecl sosDIGIDrv_Start( void ); +extern void cdecl sosDIGIDrv_End( void ); +extern void cdecl sosInt3( void ); +extern void cdecl sosFARRet( WORD ); +extern void cdecl sosDIGIFARRet( VOID ); +#ifdef __cplusplus +} +#endif + +// memory locking prototypes +VOID sosDIGICaps_Start( VOID ); +VOID sosDIGICaps_End( VOID ); +VOID sosDIGIErr_Start( VOID ); +VOID sosDIGIErr_End( VOID ); +VOID sosDIGITmr_Start( VOID ); +VOID sosDIGITmr_End( VOID ); +VOID sosDIGIStart_Start( VOID ); +VOID sosDIGIStart_End( VOID ); +VOID sosDIGIPlyng_Start( VOID ); +VOID sosDIGIPlyng_End( VOID ); +VOID sosDIGIRate_Start( VOID ); +VOID sosDIGIRate_End( VOID ); +VOID sosDIGIDone_Start( VOID ); +VOID sosDIGIDone_End( VOID ); +VOID sosDIGIDetec_Start( VOID ); +VOID sosDIGIDetec_End( VOID ); +VOID sosDIGIInit_Start( VOID ); +VOID sosDIGIInit_End( VOID ); +VOID sosDIGILoad_Start( VOID ); +VOID sosDIGILoad_End( VOID ); +VOID sosDIGICntl_Start( VOID ); +VOID sosDIGICntl_End( VOID ); + +#pragma pack() + +#endif diff --git a/CODE/RP/MUNGA_L4/sos/bc4/SOSM.H b/CODE/RP/MUNGA_L4/sos/bc4/SOSM.H new file mode 100644 index 0000000..6d02ccd --- /dev/null +++ b/CODE/RP/MUNGA_L4/sos/bc4/SOSM.H @@ -0,0 +1,450 @@ +/**************************************************************************** + + File : sosm.h + + Programmer(s) : Don Fowler, Nick Skrepetos + Date : + + Purpose : Include Files For Zortech C++ Compiler + + Last Updated : + +**************************************************************************** + Copyright(c) 1993,1994 Human Machine Interfaces + All Rights Reserved +****************************************************************************/ + +#ifndef _SOS_MIDI_DEFINED +#define _SOS_MIDI_DEFINED + +#include "sosdefs.h" +#include "sos.h" + +#pragma pack(4) + +#define _SOS_MIDI_ERR -1 + +// number of drivers allowed to be open at one time +#define _SOS_MIDI_MAX_DRIVERS 5 + +// maximum number of allowed channels +#define _SOS_MIDI_MAX_CHANNELS 0x10 + +// structure definition for the capabilities +typedef struct +{ + BYTE szDeviceName[ 32 ]; // device name + WORD wDeviceVersion; // device version + WORD wFlags; // miscellaneous flags + WORD wProcessData; // process data before sending to driver + SFAR lpPortList; // list of usable ports + SFAR lpIRQList; // list of usable irq channels + WORD wDeviceID; // ID for the device + +} _SOS_MIDI_CAPABILITIES; + +// call indexes for the loadable drivers +enum +{ + _DRV_MIDI_GET_CAPS, + _DRV_MIDI_GET_CALL_TABLE, + _DRV_MIDI_SPECIAL1 +}; + +// file header for the driver +typedef struct +{ + // name ID + BYTE szName[ 32 ]; + + // number of drivers in the file + WORD wDrivers; + + // offset of first driver + WORD lOffset; + + // size of the file + WORD lFileSize; + +} _MIDIFILEHEADER; + +// driver header structure +typedef struct +{ + // name ID + BYTE szName[ 32 ]; + + // offset of next driver + WORD lNextDriver; + + // size of current driver + WORD wSize; + + // id for the current device + WORD wDeviceID; + + // id for the extender type + WORD wExtenderType; + +} _MIDIDRIVERHEADER; + +// device hardware information +typedef struct +{ + // port to be used + WORD wPort; + + // IRQ for the board + WORD wIRQ; + + // extra parameter + WORD wParam; + +} _SOS_MIDI_HARDWARE; + +// structure for initializing a digital driver +typedef struct +{ + // ID for the digital driver + WORD wDriverID; + + // timer rate to use + WORD wTimerRate; + + // timer callback rate to use + WORD wTimerCallbackRate; + + // max voices for the driver to use + WORD wMaxVoices; + + // velocity sensing flag + WORD wVelocitySensing; + + // init driver info + _SOS_INIT_DRIVER * sDIGIDriverInfo; + + // hardware information + _SOS_HARDWARE * sDIGIHardwareInfo; + +} _SOS_MIDI_DIGI_INIT_DRIVER; + +// structure for initializing a driver +typedef struct +{ + // type of driver to use if using a digital driver + WORD wDIGIDriverID; + + // pointer to driver memory + SFAR lpDriverMemory; + SFAR lpDriverMemoryCS; + + // pointer to digital driver initialization information + _SOS_MIDI_DIGI_INIT_DRIVER * sDIGIInitInfo; + + // miscellaneous WORD parameter for driver + WORD wParam; + + // miscellaneous DWORD parameter for driver + DWORD dwParam; + +} _SOS_MIDI_INIT_DRIVER; + +// structure for starting a song +typedef struct +{ + // pointer to song memory + BYTE * pSongData; + + // pointer to callback function for pertinent song information + VOID ( * pSongCallback )( WORD ); + +} _SOS_MIDI_INIT_SONG; + +// define to indicate that track mapping can be used +// from the midi file for the song +#define _MIDI_MAP_TRACK 0xff + +// MIDI channel to device mapping structure +typedef struct +{ + // track to device mapping information + WORD wTrackDevice[ 32 ]; + +} _SOS_MIDI_TRACK_DEVICE; + +// MIDI channel to device mapping structure +typedef struct +{ + // track to device mapping information + WORD wTrackDevice[ 32 ][ 5 ]; + +} _SOS_MIDI_TRACK_DEVICE1; + +// header for the NDMF format MIDI file +typedef struct +{ + // ID for the file + BYTE szFileID[ 32 ]; + + WORD dwBranchOffset; + WORD temp1; + WORD temp2; + WORD temp3; + +// // name of the instrument file to use with the song +// BYTE szInstrumentFile[ 16 ]; + + // number of tracks in the song + WORD wNDMFTracks; + + // ticks/quarter note song is used at + WORD wTicksQuarterNote; + + // tempo + WORD wTempo; + + // time for song to play at current tempo + WORD wTimeToPlay; + + // channel mapping priority information + WORD wChannelPriority[ _SOS_MIDI_MAX_CHANNELS ]; + + // channel mapping information + _SOS_MIDI_TRACK_DEVICE1 sTrackMap; + + // array of flags for which controllers to restore on a loop/branch + BYTE bCtrlRestore[ 128 ]; + + // pointer to callback function for song to call with + // pertinent information + VOID ( * pSongCallback )( WORD ); + WORD wFiller; + +} _NDMF_FILE_HEADER; + +// header for the tracks in the NDMF format MIDI file +typedef struct +{ + // track number + WORD wTrackNumber; + + // length of the track + WORD wTrackLength; + + // channel used on the track + WORD wChannel; + +} _NDMF_TRACK_HEADER; + +// MIDI event structure +typedef struct +{ + // dummy name to access midi data from + BYTE bMidiData[ 256 ]; + +} _NDMF_MIDI_EVENT; + +// maximum number of songs that can be played at any time +#define _SOS_MIDI_MAX_SONGS 8 + +// maximum number of tracks that can be used +#define _SOS_MIDI_MAX_TRACKS 32 + +// number of driver functions +#define _SOS_MIDI_DRV_FUNCTIONS 13 + +// enumeration for all of the drv functions +enum +{ + _MIDI_DRV_SEND_DATA, + _MIDI_DRV_INIT, + _MIDI_DRV_UNINIT, + _MIDI_DRV_RESET, + _MIDI_DRV_SET_INST_DATA +}; + +// defines for the loadable driver ids +#define _MIDI_SOUND_MASTER_II 0xa000 +#define _MIDI_MPU_401 0xa001 +#define _MIDI_FM 0xa002 +#define _MIDI_OPL2 0xa002 +#define _MIDI_CALLBACK 0xa003 +#define _MIDI_MT_32 0xa004 +#define _MIDI_DIGI 0xa005 +#define _MIDI_INTERNAL_SPEAKER 0xa006 +#define _MIDI_WAVE_TABLE_SYNTH 0xa007 +#define _MIDI_AWE32 0xa008 +#define _MIDI_OPL3 0xa009 +#define _MIDI_GUS 0xa00a + +// structure for the hmi instrument file header +typedef struct +{ + // file id type + BYTE szFileID[ 32 ]; + + // file version + WORD wFileVersion; + + // size of the file + WORD dwFileSize; + +} _HMI_INS_FILE_HEADER; + + +// define for identifying a drum instrument +#define _SOS_MIDI_DRUM_INS ( short )0x8000 + +// maximum number of timer events that can be registered +#define _TIMER_MAX_EVENTS 0x10 + +// structure for digital driver queue element +typedef struct _tagQueueElement +{ + // handle for the sample + WORD wSampleHandle; + + // id for the sample + WORD wSampleID; + + // velocity for the sample + WORD wVelocity; + + // channel for the sample + WORD wChannel; + +} _DIGI_QUEUE_ELEMENT; + +// maximum number of instruments that can be set in the +// digital driver +#define _MAX_INS 128 + +// define for the maximum number of times a channel can be stolen +#define _SOS_MIDI_MAX_LEVELS 0x04 + +// structure for MIDI information to be stored on the local stack +// when a channel is stolen +typedef struct +{ + // used element + BYTE bUsed; + + // last pitch bend information sent + BYTE bPitchBend; + + // channel volume + BYTE bChannelVolume; + + // instrument information + BYTE bInstrument; + + // sustain pedal + BYTE bSustain; + +} _SOS_MIDI_CHANNEL_DATA; + +// flags for the debugging system +#define _SOS_DEBUG_NORMAL 0x0000 +#define _SOS_DEBUG_NO_TIMER 0x0001 + +// ID for 32 bit MIDI file +#define _SOS_MIDI_FILE_ID "HMIMIDIP" + +// structure for branch location controller +typedef struct +{ + // offset from start of track data + WORD dwOffset; + + // branch ID number + BYTE bBranchID; + + // current instrument + BYTE bInstrument; + + // current loop count for temporary storage + // so that a track can be looped without + // needing any data from the program + BYTE bLoopCount; + + // number of controller messages stored + BYTE bCtrlChangeCount; + + // offset of control change information from start of file + WORD lpCtrlChangeData; + WORD lpCtrlChangeDataTemp; + + // reserved fields + WORD wReserved1; + WORD wReserved2; + +} _SOS_BRANCH_POINT; + +#define _SOS_MIDI_FADE_IN 0x01 +#define _SOS_MIDI_FADE_OUT 0x02 +#define _SOS_MIDI_FADE_OUT_STOP 0x04 + +// structure for digital drums to use to store midi information +typedef struct +{ + // current volume + WORD wVolume; + + // current pan position + WORD wPanPosition; + + // reserved + DWORD dwReserved; + +} _SOS_MIDI_DIGI_CHANNEL; + +// instrument file header structure +typedef struct +{ + // file ID + BYTE szID[ 32 ]; + + // file version + WORD wVersion; + + // instruments in file + WORD wInstruments; + + // list of pointers to start sample structures + SFAR * lpStartSample[ _MAX_INS ]; + + DWORD temp1; + DWORD temp2; + +} _WAVE_FILE_HEADER; + +#pragma pack() + +// define for the busy error returned from send data +#define _ERR_DRIVER_BUSY 0xf000 + +// defines for the looping branch controllers +#define _SOS_SET_FLAG 103 +#define _SOS_RESET_FLAG 104 +#define _SOS_BRANCH1 108 +#define _SOS_BRANCH2 109 +#define _SOS_BRANCH3 110 +#define _SOS_BRANCH4 111 +#define _SOS_BRANCH5 112 +#define _SOS_BRANCH6 113 +#define _SOS_BRANCH7 114 +#define _SOS_BRANCH8 115 +#define _SOS_BRANCH9 116 +#define _SOS_BRANCH10 117 +#define _SOS_BRANCH11 118 +#define _SOS_BRANCH12 119 +#define _SOS_BRANCH13 120 +#define _SOS_BRANCH14 121 + +// define for the program change controller flag +#define _SOS_PROGRAM_CHANGE_FLAG 108 + +#include "sosmdata.h" +#include "sosmfnct.h" + +#endif diff --git a/CODE/RP/MUNGA_L4/sos/bc4/SOSMAWE.H b/CODE/RP/MUNGA_L4/sos/bc4/SOSMAWE.H new file mode 100644 index 0000000..e6322ad --- /dev/null +++ b/CODE/RP/MUNGA_L4/sos/bc4/SOSMAWE.H @@ -0,0 +1,16 @@ + +#include "sosm.h" + +#ifdef __cplusplus // HACK - ECH 96/01/26 +extern "C" { +#endif + +WORD sosMIDIAWE32SetSBKFile( WORD, PSTR ); +WORD sosMIDIAWE32ReleaseSBKFiles( WORD ); +WORD sosMIDIAWE32NoteOn( WORD, WORD, WORD, WORD, WORD, WORD ); +WORD sosMIDIAWE32NoteOff( WORD, WORD, WORD ); + +#ifdef __cplusplus // HACK - ECH 96/01/26 +} +#endif + diff --git a/CODE/RP/MUNGA_L4/sos/bc4/SOSMDATA.H b/CODE/RP/MUNGA_L4/sos/bc4/SOSMDATA.H new file mode 100644 index 0000000..d302647 --- /dev/null +++ b/CODE/RP/MUNGA_L4/sos/bc4/SOSMDATA.H @@ -0,0 +1,125 @@ +/**************************************************************************** + + File : sosmdata.h + + Programmer(s) : Don Fowler, Nick Skrepetos + Date : + + Purpose : Include Files For Zortech C++ Compiler + + Last Updated : + +**************************************************************************** + Copyright(c) 1993,1994 Human Machine Interfaces + All Rights Reserved +****************************************************************************/ + + +#ifndef _SOS_MIDI_DATA +#define _SOS_MIDI_DATA + +#include "sos.h" + +#pragma pack(4) + +extern WORD _wSOSMIDIDriverLinear[]; +extern SFAR _lpSOSMIDIDriver[]; +extern SFAR _lpSOSMIDIDriverCS[]; +extern WORD _wSOSMIDIMemHandle[]; +extern BOOL _wSOSMIDIDriverLoaded[]; +extern WORD _wSOSMIDIDriverType[]; +extern WORD _wSOSMIDIDriverID[]; +extern DWORD _dwSOSMIDITrackDeltaCurrent[][_SOS_MIDI_MAX_TRACKS]; +extern WORD _wSOSMIDIActiveTracks[]; +extern WORD _wSOSMIDITotalTracks[]; +extern DWORD _dwSOSMIDITrackDeltaTime[][_SOS_MIDI_MAX_TRACKS]; +extern WORD _wSOSMIDISongPaused[]; +extern WORD _wSOSMIDISongMuted[]; +extern BOOL _wSOSMIDISongActive[]; +extern BYTE _bSOSMIDIEventSize[]; +extern BYTE _bSOSMIDIEventSizeControl[]; +extern _SOS_MIDI_CAPABILITIES * _pSOSMIDIDriverCaps[]; +extern _SOS_MIDI_TRACK_DEVICE * _sSOSMIDITrackMap[]; +extern _NDMF_MIDI_EVENT * _pSOSMIDITrack[][_SOS_MIDI_MAX_TRACKS]; +extern SFAR _lpSOSMIDIDrvFunction[ _SOS_MIDI_MAX_DRIVERS ][ _SOS_MIDI_DRV_FUNCTIONS ]; +extern _NDMF_FILE_HEADER * _sSOSMIDISongHeader[]; +extern _SOS_INIT_DRIVER _sSOSDIGIInitDriver[]; +extern WORD _wSOSMIDIEventHandle[]; +extern BYTE _szSOSMIDIDrvFile[]; +extern _MIDIFILEHEADER _sSOSMIDIDRVFileHeader; +extern _MIDIDRIVERHEADER _sSOSMIDIDRVDriverHeader; +extern BOOL _wSOSMIDISysInititalized; +extern SFAR _lpSOSMIDICBCKDrvFunctions[]; +extern VOID ( cdecl *_pSOSMIDICBCKFunctions )( SFAR, WORD, WORD ); +extern WORD _wMIDIDIGISampleQueueHead[]; +extern WORD _wMIDIDIGISampleQueueTail[]; +extern WORD _wMIDIDIGIMaxSamples[]; +extern WORD _wMIDIDIGIUsedSamples[]; +extern _DIGI_QUEUE_ELEMENT _sMIDIDIGIQueue[][ _MAX_VOICES ]; + + +extern SFAR _lpMIDIDIGIDrvFunctions[]; +extern _SOS_START_SAMPLE * _sMIDIDIGIStartSample[][ _MAX_INS ]; +extern _HMI_INS_FILE_HEADER * _sMIDIDIGIInsFileHeader[]; +extern WORD _wMIDIDIGIDriverHandle[]; +extern WORD _wMIDIDIGIDriverInitialized[]; +extern WORD _wMIDIDIGITimerEventHandle[]; +extern WORD _wMIDIDIGIDriverInitMIDI[]; +extern WORD _wMIDIDIGIVelocitySensing[]; +extern BYTE _szMIDIDIGIInsFileID[]; + +extern BYTE _bSOSMIDIMasterVolume; +extern BYTE _bSOSMIDIDeviceChannelVolume[][ _SOS_MIDI_MAX_CHANNELS ]; +extern BYTE _bSOSMIDIMT32SendData; + +extern SFAR lpFake; +extern WORD wFake; + +extern _NDMF_TRACK_HEADER *_pSOSMIDITrackHeaders[][ _SOS_MIDI_MAX_TRACKS ]; +extern BYTE _bSOSMIDIChannelRemap[][ _SOS_MIDI_MAX_SONGS ][ _SOS_MIDI_MAX_CHANNELS ]; +extern BYTE _bSOSMIDIChannelPriority[][ _SOS_MIDI_MAX_CHANNELS ]; +extern BYTE _bSOSMIDIOwnerChannel[][ _SOS_MIDI_MAX_CHANNELS ]; +extern BYTE _bSOSMIDIOwnerSong[][ _SOS_MIDI_MAX_CHANNELS ]; +extern _SOS_MIDI_CHANNEL_DATA _sSOSMIDIChannelData[][ _SOS_MIDI_MAX_CHANNELS ][ _SOS_MIDI_MAX_LEVELS ]; +extern BYTE _bSOSMIDIChannelDataIndex[][ _SOS_MIDI_MAX_SONGS ][ _SOS_MIDI_MAX_CHANNELS ]; +extern BYTE _bSOSMIDIData[]; +extern BYTE _bSOSMIDIData1[]; +extern BYTE _bSOSMIDIDeviceLowPriority[]; +extern WORD _wSOSMIDIChannelStealing; +extern BYTE _bSOSMIDIDeviceChannelActive[][ _SOS_MIDI_MAX_CHANNELS ]; +extern BYTE _bSOSMIDIDeviceChannelAvailable[][ _SOS_MIDI_MAX_CHANNELS ]; +extern BYTE _bSOSMIDISongHandle; +extern BYTE _szMIDIMIDIFileID[]; +extern BYTE _pSOSMIDIDriverPath[]; +extern BYTE _pSOSMIDITempDriverPath[]; +extern WORD sosMIDIData_Start; +extern WORD sosMIDIData_End; +extern WORD _wSOSGravisTimerHandle; +extern WORD _wSOSMIDISongVolume[]; + +extern _SOS_BRANCH_POINT * _pMIDIBranchData[][ _SOS_MIDI_MAX_TRACKS ]; +extern WORD ( *_pSOSMIDIBranchCallback[] )( WORD, BYTE, BYTE ); +extern WORD ( *_pSOSMIDILoopCallback[] )( WORD, BYTE, BYTE, BYTE ); +extern WORD ( *_pSOSMIDITriggerCallback[][ 127 ] )( WORD, BYTE, BYTE ); +extern BYTE _bSOSMIDIBranchOccurred; + +extern WORD _wSOSMIDIVolumeFadeDirection[]; +extern DWORD _dwSOSMIDIVolumeFadeFraction[]; +extern DWORD _dwSOSMIDIVolumeFadeVolume[]; +extern WORD _wSOSMIDIVolumeFadeTicks[]; +extern BYTE _bSOSMIDIHandleVolumeFade[]; +extern WORD _wSOSDIGIMIDIHandle[]; +extern SFAR _lpSOSMIDIGusFunction; + +extern _SOS_MIDI_DIGI_CHANNEL _sMIDIDIGIChannel[]; + +extern SFAR _lpMIDIWAVEDrvFunctions[]; +extern WORD _wSOSMIDIChannelMuted[][ _SOS_MIDI_MAX_CHANNELS ]; + +extern BYTE _szPLYMIDIBuffer[]; +extern WORD _wPLYMIDIBufferIndex; +extern WORD _wSOSMIDIDriverSize[]; + +#pragma pack() + +#endif diff --git a/CODE/RP/MUNGA_L4/sos/bc4/SOSMFNCT.H b/CODE/RP/MUNGA_L4/sos/bc4/SOSMFNCT.H new file mode 100644 index 0000000..5e91d77 --- /dev/null +++ b/CODE/RP/MUNGA_L4/sos/bc4/SOSMFNCT.H @@ -0,0 +1,190 @@ +/**************************************************************************** + + File : sosmfnct.h + + Programmer(s) : Don Fowler, Nick Skrepetos + Date : + + Purpose : Include Files For Zortech C++ Compiler + + Last Updated : + +**************************************************************************** + Copyright(c) 1993,1994 Human Machine Interfaces + All Rights Reserved +****************************************************************************/ + +#ifndef _SOS_MIDI_FUNCTIONS +#define _SOS_MIDI_FUNCTIONS + +#pragma pack(4) + +#ifdef __cplusplus // HACK - ECH 96/01/26 +extern "C" { +#endif + +WORD sosMIDILockMemory ( VOID ); +WORD sosMIDIUnLockMemory ( VOID ); +WORD sosMIDIGetDeviceCaps ( WORD, _SOS_MIDI_CAPABILITIES * ); +WORD sosMIDIInitSystem ( PSTR, WORD ); +WORD sosMIDIUnInitSystem ( VOID ); +WORD sosMIDIInitDriver ( WORD, _SOS_MIDI_HARDWARE *, + _SOS_MIDI_INIT_DRIVER *, WORD * ); +WORD sosMIDIUnInitDriver ( WORD, BOOL ); +WORD sosMIDILoadDriver ( WORD, WORD, SFAR *, SFAR *, PSTR, PSTR, WORD * ); +WORD sosMIDIUnLoadDriver ( WORD ); +WORD sosMIDIInitSong ( _SOS_MIDI_INIT_SONG *, + _SOS_MIDI_TRACK_DEVICE *, + WORD * ); +WORD sosMIDIUnInitSong ( WORD ); +WORD sosMIDIResetSong ( WORD, _SOS_MIDI_INIT_SONG * ); +WORD sosMIDIStartSong ( WORD ); +WORD sosMIDIStopSong ( WORD ); +WORD sosMIDIPauseSong ( WORD, WORD ); +WORD sosMIDIMuteSong ( WORD ); +WORD sosMIDIUnMuteSong ( WORD ); +WORD sosMIDIResumeSong ( WORD ); +BOOL sosMIDISongDone ( WORD ); +WORD sosMIDISongAlterTempo ( WORD, WORD ); +WORD sosMIDIGetDeltaTime ( PSTR, DWORD * ); +WORD sosMIDISongGetTimeToPlay ( WORD ); +BYTE * sosMIDINormalizePtr ( BYTE * ); +WORD sosMIDISetInsData ( WORD, PSTR, WORD ); +WORD sosMIDIResetDriver ( WORD ); +BOOL sosMIDIHandleMIDIData ( WORD, PSTR, WORD, WORD ); +WORD sosMIDISendMIDIData ( WORD, PSTR, WORD ); +VOID sosMIDISetTrackState ( WORD, WORD, WORD ); + +// compiled in drivers function interface +VOID digiGetCallTable ( WORD * ); +VOID callbackGetCallTable ( WORD * ); + +WORD cdecl callbackSendData ( SFAR, WORD, WORD ); +WORD cdecl callbackInit ( SFAR, WORD, WORD ); +WORD cdecl callbackUnInit ( SFAR, WORD, WORD ); +WORD cdecl callbackReset ( SFAR, WORD, WORD ); +WORD cdecl callbackSetInstrumentData ( SFAR, WORD, WORD ); + +// function prototypes +WORD cdecl digiSendData ( SFAR, WORD, WORD ); +WORD cdecl digiInit ( SFAR, WORD, WORD ); +WORD cdecl digiUnInit ( SFAR, WORD, WORD ); +WORD cdecl digiReset ( SFAR, WORD, WORD ); +WORD cdecl digiSetInstrumentData ( SFAR, WORD, WORD ); + +VOID waveGetCallTable ( WORD * ); +WORD cdecl waveSendData ( SFAR, WORD, WORD ); +WORD cdecl waveInit ( SFAR, WORD, WORD ); +WORD cdecl waveUnInit ( SFAR, WORD, WORD ); +WORD cdecl waveReset ( SFAR, WORD, WORD ); +WORD cdecl waveSetInstrumentData ( SFAR, WORD, WORD ); +VOID cdecl waveSampleCallback( WORD, WORD, WORD ); + +WORD cdecl callbackSendDataStub ( SFAR, WORD, WORD ); +WORD cdecl callbackInitStub ( SFAR, WORD, WORD ); +WORD cdecl callbackUnInitStub ( SFAR, WORD, WORD ); +WORD cdecl callbackResetStub ( SFAR, WORD, WORD ); +WORD cdecl callbackSetInstrumentDataStub ( SFAR, WORD, WORD ); + +// function prototypes +WORD cdecl digiSendDataStub ( SFAR, WORD, WORD ); +WORD cdecl digiInitStub ( SFAR, WORD, WORD ); +WORD cdecl digiUnInitStub ( SFAR, WORD, WORD ); +WORD cdecl digiResetStub ( SFAR, WORD, WORD ); +WORD cdecl digiSetInstrumentDataStub ( SFAR, WORD, WORD ); + +WORD cdecl waveSendDataStub ( SFAR, WORD, WORD ); +WORD cdecl waveInitStub ( SFAR, WORD, WORD ); +WORD cdecl waveUnInitStub ( SFAR, WORD, WORD ); +WORD cdecl waveResetStub ( SFAR, WORD, WORD ); +WORD cdecl waveSetInstrumentDataStub ( SFAR, WORD, WORD ); + +VOID digiQueueInit ( WORD, WORD ); +VOID digiQueueUnInit ( WORD ); +WORD digiQueueAddItem ( WORD, WORD, WORD, WORD, WORD ); +WORD digiQueueGetItem ( WORD, WORD ); +WORD digiQueueGetItemWAVE ( WORD ); +WORD digiQueueDeleteItem ( WORD, WORD ); +WORD digiQueueDeleteItemWAVE ( WORD, WORD ); +WORD digiQueueDeleteItemMIDI ( WORD, WORD, WORD ); +WORD digiQueueFindItemMIDI ( WORD, WORD, WORD ); + +// function prototypes +VOID cdecl digiSampleCallback( WORD, WORD, WORD ); + +WORD sosMIDIRegisterBranchFunction ( WORD, WORD ( * )( WORD, BYTE, BYTE ) ); +WORD sosMIDIRegisterLoopFunction ( WORD, WORD ( * )( WORD, BYTE, BYTE, BYTE ) ); +WORD sosMIDIRegisterTriggerFunction( WORD, BYTE, WORD ( * )( WORD, BYTE, BYTE ) ); +WORD sosMIDIBranchToTrackLocation ( WORD, BYTE, BYTE ); +WORD sosMIDIBranchToSongLocation ( WORD, BYTE ); + +//#ifdef __cplusplus // ECH +//extern "C" { +//#endif + +extern void cdecl sosMIDIDRVGetCapsInfo( SFAR, SFAR, PSTR ); +extern void cdecl sosMIDIDRVGetCapsPtr ( SFAR, SFAR, PSTR ); +extern void cdecl sosMIDIDRVGetFuncsPtr( SFAR, SFAR, PSTR ); +extern VOID cdecl sosMIDIDRVSpecialFunction( SFAR, SFAR, WORD, SFAR * ); +extern WORD cdecl xgetES( void ); + +extern WORD cdecl sosMIDIDRVCall32Func( SFAR, SFAR, WORD, WORD ); + +//#ifdef __cplusplus // ECH +//} +//#endif + +BOOL sosMIDIResetChannelStealing ( WORD ); +WORD sosMIDIEnableChannelStealing( WORD ); +VOID sosMIDISongHandler( VOID ); + +WORD sosMIDISetMT32InsData ( WORD, PSTR, WORD ); +WORD sosMIDISetMasterVolume ( BYTE ); +VOID sosMIDIMT32Timer ( VOID ); + +WORD sosMIDISetSongVolume ( WORD, BYTE ); +WORD sosMIDIFadeSong ( WORD, WORD, WORD, BYTE, BYTE, WORD ); +VOID sosMIDIGusFunction( VOID ); +VOID sosMIDIGusFunction1( SFAR ); + +// functions for memory locking +VOID sosMIDICaps_Start( VOID ); +VOID sosMIDICaps_End( VOID ); +VOID sosMIDICbck_Start( VOID ); +VOID sosMIDICbck_End( VOID ); +VOID sosMIDIDigi_Start( VOID ); +VOID sosMIDIDigi_End( VOID ); +VOID sosMIDIDone_Start( VOID ); +VOID sosMIDIDone_End( VOID ); +VOID sosMIDIDq_Start( VOID ); +VOID sosMIDIDq_End( VOID ); +VOID sosMIDIInit_Start( VOID ); +VOID sosMIDIInit_End( VOID ); +VOID sosMIDIIns_Start( VOID ); +VOID sosMIDIIns_End( VOID ); +VOID sosMIDILoad_Start( VOID ); +VOID sosMIDILoad_End( VOID ); +VOID sosMIDIPause_Start( VOID ); +VOID sosMIDIPause_End( VOID ); +VOID sosMIDIPtr_Start( VOID ); +VOID sosMIDIPtr_End( VOID ); +VOID sosMIDISong_Start( VOID ); +VOID sosMIDISong_End( VOID ); +VOID sosMIDISt_Start( VOID ); +VOID sosMIDISt_End( VOID ); +VOID sosMIDITmpo_Start( VOID ); +VOID sosMIDITmpo_End( VOID ); +VOID sosMIDITmr_Start( VOID ); +VOID sosMIDITmr_End( VOID ); +VOID sosMIDIAWE_Start( VOID ); +VOID sosMIDIAWE_End( VOID ); + +void StringOut( BYTE X, BYTE Y, BYTE * String, BYTE Color ); + +#ifdef __cplusplus // HACK - ECH 96/01/26 +} +#endif + +#pragma pack() + +#endif diff --git a/CODE/RP/MUNGA_L4/sos/bc4/SOSRES.H b/CODE/RP/MUNGA_L4/sos/bc4/SOSRES.H new file mode 100644 index 0000000..91050dd --- /dev/null +++ b/CODE/RP/MUNGA_L4/sos/bc4/SOSRES.H @@ -0,0 +1,110 @@ +/**************************************************************************** + + File : sosres.h + + Programmer(s) : Don Fowler, Nick Skrepetos + Date : + + Purpose : Include Files For Zortech C++ Compiler + + Last Updated : + +**************************************************************************** + Copyright(c) 1993,1994 Human Machine Interfaces + All Rights Reserved +****************************************************************************/ + +#define _SOS_RESOURCE +#ifndef _SOS_RESOURCE +#define _SOS_RESOURCE + +// structure for resource file header +typedef struct +{ + // file version + WORD wVersion; + + // file size + LONG dwFileSize; + + // number of resources in file + WORD wResCount; + + // offset of resource data from top of file + LONG dwResOffset; + + // offset of sync track from top of file + LONG dwSyncTrackOffset; + +} _RES_FILE_HEADER; + +// structure for resource block header +typedef struct +{ + // resource id + WORD wID; + + // resource type + WORD wResType; + + // offset of next block + LONG dwNextBlock; + + // size of the current resource information + LONG dwResSize; + + // rate to play block at + WORD wBlockRate; + + // id for the sync track to use + WORD wSyncTrackID; + +} _RES_BLOCK_HEADER; + +// structure for sync mark tag +typedef struct _tagSYNCMARK +{ + // ID of the type of mark being used + WORD wID; + + // location in data of sync mark + LONG dwSyncOffset; + + // length of sync block + LONG dwSyncSize; + + // start sample data + _SOS_START_SAMPLE sampleData; + +} _RES_SYNCMARK; + +typedef union +{ + // structure for sync mark tag + _RES_SYNCMARK syncMark; + +} _RES_TAG; + +// union for filter information for prepareWave +typedef union +{ + // filter type + WORD wFilterID; + + // structure for volume + struct volume + { + WORD wVolume; + }; + + // structure for delay + struct delay + { + WORD wDelaySamples; + }; + +} _SOS_FILTER; + + +#endif + diff --git a/CODE/RP/MUNGA_L4/sos/bc4/vssver.scc b/CODE/RP/MUNGA_L4/sos/bc4/vssver.scc new file mode 100644 index 0000000..342f5d0 Binary files /dev/null and b/CODE/RP/MUNGA_L4/sos/bc4/vssver.scc differ diff --git a/CODE/RP/MUNGA_L4/sos/vssver.scc b/CODE/RP/MUNGA_L4/sos/vssver.scc new file mode 100644 index 0000000..3ba43d8 Binary files /dev/null and b/CODE/RP/MUNGA_L4/sos/vssver.scc differ diff --git a/CODE/RP/MUNGA_L4/sos/wc/SOS.H b/CODE/RP/MUNGA_L4/sos/wc/SOS.H new file mode 100644 index 0000000..419448f --- /dev/null +++ b/CODE/RP/MUNGA_L4/sos/wc/SOS.H @@ -0,0 +1,553 @@ +/**************************************************************************** + + File : sos.h + + Programmer(s) : Don Fowler, Nick Skrepetos + Date : + + Purpose : Include Files For Zortech C++ Compiler + + Last Updated : + +**************************************************************************** + Copyright(c) 1993,1994 Human Machine Interfaces + All Rights Reserved +****************************************************************************/ + +#ifndef _SOS_DEFINED +#define _SOS_DEFINED +#include "sosdefs.h" + +#pragma pack(4) + +// error definition for sound operating system +#define _SOS_ERR -1 + +// number of drivers allowed to be open at one time +#define _SOS_MAX_DRIVERS 5 + +// structure definition for the capabilities +typedef struct _tagCAPABILITIES +{ + BYTE szDeviceName[ 32 ]; // device name + WORD wDeviceVersion; // device version + WORD wBitsPerSample; // bits per sound sample + WORD wChannels; // stereo/mono sound card + WORD wMinRate; // minimum rate + WORD wMaxRate; // maximum rate + WORD wMixerOnBoard; // board contains mixer + WORD wMixerFlags; // mixer capabilities + WORD wFlags; // miscellaneous flags + short far * lpPortList; // list of usable ports + short far * lpDMAList; // list of usable dma channels + short far * lpIRQList; // list of usable irq channels + short far * lpRateList; // list of usable rates, -1 if any in min to max + WORD fBackground; // foreground or background driver + WORD wDeviceID; // ID for the device + WORD wTimerID; // ID for the timer + +} _SOS_CAPABILITIES; + +// far pointer to the device capabilities structure +typedef _SOS_CAPABILITIES far * LPSOSDEVICECAPS; + +// flag types for driver +#define _FLAGS_SIGNED 0x8000 + +// devices that can be loaded +#define _SOUND_BLASTER_8_MONO 0xe000 +#define _SOUND_BLASTER_8_ST 0xe001 +#define _SBPRO_8_ST _SOUND_BLASTER_8_ST +#define _SBPRO_8_MONO 0xe00f +#define _SOUND_MASTER_II_8_MONO 0xe002 +#define _MV_PAS_8_MONO 0xe003 +#define _MV_PAS_16_MONO 0xe004 +#define _MV_PAS_8_ST 0xe005 +#define _MV_PAS_16_ST 0xe006 +#define _ADLIB_GOLD_8_ST 0xe007 +#define _ADLIB_GOLD_16_ST 0xe008 +#define _ADLIB_GOLD_8_MONO 0xe009 +#define _ADLIB_GOLD_16_MONO 0xe00a +#define _MICROSOFT_8_MONO 0xe00b +#define _MICROSOFT_8_ST 0xe00c +#define _MICROSOFT_16_MONO 0xe00d +#define _MICROSOFT_16_ST 0xe00e +#define _SOUND_SOURCE_8_MONO_PC 0xe010 +#define _SOUND_SOURCE_8_MONO_TANDY 0xe011 +#define _GENERAL_PORT_8_MONO 0xe012 +#define _GENERAL_PORT_8_MONO_R 0xe013 +#define _SIERRA_8_MONO 0xe014 +#define _SB16_8_MONO 0xe015 +#define _SB16_8_ST 0xe016 +#define _SB16_16_MONO 0xe017 +#define _SB16_16_ST 0xe018 +#define _ESS_AUDIODRIVE_8_MONO 0xe019 +#define _ESS_AUDIODRIVE_8_ST 0xe01a +#define _ESS_AUDIODRIVE_16_MONO 0xe01b +#define _ESS_AUDIODRIVE_16_ST 0xe01c +#define _SOUNDSCAPE_8_MONO 0xe01d +#define _SOUNDSCAPE_8_ST 0xe01e +#define _SOUNDSCAPE_16_MONO 0xe01f +#define _SOUNDSCAPE_16_ST 0xe020 +#define _RAP10_8_MONO 0xe021 +#define _RAP10_16_MONO 0xe022 +#define _GUS_8_MONO 0xe023 +#define _GUS_8_ST 0xe024 +#define _GUS_16_MONO 0xe025 +#define _GUS_16_ST 0xe026 +#define _GUS_MAX_8_MONO 0xe027 +#define _GUS_MAX_8_ST 0xe028 +#define _GUS_MAX_16_MONO 0xe029 +#define _GUS_MAX_16_ST 0xe02a +#define _WAVEJAMMER_8_MONO 0xe02b +#define _WAVEJAMMER_8_ST 0xe02c +#define _WAVEJAMMER_16_MONO 0xe02d +#define _WAVEJAMMER_16_ST 0xe02e +#define _TEMPOCS_8_MONO 0xe02f +#define _TEMPOCS_8_ST 0xe030 +#define _TEMPOCS_16_MONO 0xe031 +#define _TEMPOCS_16_ST 0xe032 +#define _WAVEJAMMERCD_8_MONO 0xe033 +#define _WAVEJAMMERCD_8_ST 0xe034 +#define _WAVEJAMMERCD_16_MONO 0xe035 +#define _WAVEJAMMERCD_16_ST 0xe036 +#define _SOUND_BLASTER_8_MONO_R 0xe050 +#define _MICROSOFT_8_MONO_R 0xe051 +#define _SOUND_MASTER_II_8_MONO_R 0xe052 +#define _ADLIB_GOLD_8_MONO_R 0xe053 +#define _MV_PAS_8_MONO_R 0xe054 +#define _RAP10_8_MONO_R 0xe058 +#define _RAP10_16_MONO_R 0xe059 +#define _SB16_8_MONO_R 0xe05a +#define _SB16_8_ST_R 0xe05b +#define _SB16_16_MONO_R 0xe05c +#define _SB16_16_ST_R 0xe05d +#define _MV_PAS_16_MONO_R 0xe060 +#define _SOUNDSCAPE_8_MONO_R 0xe061 +#define _SOUNDSCAPE_8_ST_R 0xe062 +#define _SOUNDSCAPE_16_MONO_R 0xe063 +#define _SOUNDSCAPE_16_ST_R 0xe064 +#define _ESS_AUDIODRIVE_8_MONO_R 0xe065 +#define _ESS_AUDIODRIVE_8_ST_R 0xe066 +#define _ESS_AUDIODRIVE_16_MONO_R 0xe067 +#define _ESS_AUDIODRIVE_16_ST_R 0xe068 +#define _SPEECH_THING_8_MONO 0xe090 +#define _YAMAHA_8_MONO 0xe106 +#define _INT_SPEAKER_8_MONO 0xe107 + +// call indexes for the loadable drivers +enum +{ + _DRV_INIT, + _DRV_UNINIT, + _DRV_SETRATE, + _DRV_SETACTION, + _DRV_START, + _DRV_STOP, + _DRV_PAUSE, + _DRV_RESUME, + _DRV_CAPABILITIES, + _DRV_PLAY_FOREGROUND, + _DRV_GET_FILL_INFO, + _DRV_GET_CALL_FUNCTIONS, + _DRV_SET_CALL_FUNCTIONS +}; + +// fill info +typedef struct _tagFillInfo + { + + LPSTR lpFillHandler; // pointer to fill handler + LPWORD lpDMAFillCount; // pointer to dma count + LPSTR lpSampleList; // pointer to sample list + LPWORD lpDMAMasterVolume; // pointer to dma count + + } _SOS_FILL_INFO; + +// caps info structure +typedef struct _tagCapsInfo + { + + LPSTR lpPortList; // pointer to port list + LPSTR lpDMAList; // pointer to DMA list + LPSTR lpIRQList; // pointer to IRQ list + LPSTR lpRateList; // pointer to rate list + + } _SOS_CAPS_INFO; + +// maximum number of available voice +#define _MAX_VOICES 32 + +// structure definition +typedef struct _tagSAMPLE +{ + LPSTR samplePtr; // pointer to data buffer + LPSTR sampleData; // pointer to active data + LPSTR sampleLoopPtr; // pointer for loop back + + WORD sampleLength; // length of sample + WORD sampleIndex; // index into sample + WORD sampleLoopLength; // length of loop + + WORD sampleBytesLeft; // bytes left to play in sample + + WORD sampleLoopPoint; // byte count for loop point + WORD sampleLoopEndLength; // length of remaining chunk + + short sampleFlags; // control sample + short sampleVolume; // volume control + short sampleID; // sample ID + + short sampleChannel; // channel to play sample on + short sampleLoopCount; // loop count + short sampleLastFill; // last fill position + VOID ( far cdecl * sampleCallback )( WORD, WORD, WORD ); // callback function for sample + + WORD samplePitchAdd; + short samplePitchFraction; + + short samplePort; // port to use for non-dma digitized + + WORD sampleTotalBytes; + WORD sampleByteLength; + + short samplePanLocation; + short samplePanSpeed; + short samplePanDirection; + short samplePanStart; + short samplePanEnd; + + short sampleDelayBytes; + short sampleDelayRepeat; + + WORD sampleADPCMPredicted; + short sampleADPCMIndex; + + short sampleRootNoteMIDI; + + WORD sampleTemp1; + +} _SOS_SAMPLE; + +// enumeration for left or right channel +enum +{ + _LEFT_CHANNEL, + _RIGHT_CHANNEL, + _CENTER_CHANNEL, + _INTERLEAVED +}; + +// enumeration for foreground and background +enum +{ + _FOREGROUND, + _BACKGROUND +}; + +// defines for the sample flags +#define _ACTIVE 0x8000 +#define _LOOPING 0x4000 +#define _FIRST_TIME 0x2000 +#define _PENDING_RELEASE 0x1000 +#define _CONTINUE_BLOCK 0x0800 +#define _PITCH_SHIFT 0x0400 +#define _PANNING 0x0200 +#define _VOLUME 0x0100 +#define _TRANSLATE16TO8 0x0080 +#define _STAGE_LOOP 0x0040 +#define _TRANSLATE8TO16 0x0020 +#define _STEREOTOMONO 0x0010 + +// defines for the wParam flags +#define _SINGLE_SAMPLE 0x01 + +#define _SOS_DCAPS_AUTO_REINIT 0x01 +#define _SOS_DCAPS_MPU_401 0x02 +#define _SOS_DCAPS_OPL2 0x04 +#define _SOS_DCAPS_OPL3 0x08 +#define _SOS_DCAPS_OPL4 0x10 +#define _SOS_DCAPS_WAVETABLE 0x20 +#define _SOS_DCAPS_DL_SAMPLES 0x40 +#define _SOS_DCAPS_FIFO_DEVICE 0x80 +#define _SOS_DCAPS_ENV_NEEDED 0x100 +#define _SOS_DCAPS_PSEUDO_DMA1 0x200 +#define _SOS_DCAPS_SIGNED_DATA 0x8000 + +// file header structure +typedef struct +{ + // name ID + BYTE szName[ 32 ]; + + // number of drivers in the file + WORD wDrivers; + + // offset of first driver + WORD lOffset; + + // size of the file + WORD lFileSize; + +} _FILEHEADER; + +// driver header structure +typedef struct +{ + // name ID + BYTE szName[ 32 ]; + + // offset of next driver + WORD lNextDriver; + + // size of current driver + WORD wSize; + + // id for the current device + WORD wDeviceID; + + // id for the type of DOS extender + WORD wExtenderType; + +} _DRIVERHEADER; + +// device hardware information +typedef struct +{ + // port to be used + WORD wPort; + + // irq to use + WORD wIRQ; + + // dma channel to se + WORD wDMA; + + // extra parameter + WORD wParam; + +} _SOS_HARDWARE; + +// structure definition for start sample +typedef struct +{ + // pointer to sample + LPSTR lpSamplePtr; + + // size of the sample + WORD dwSampleSize; + + // number of times to loop the sample -1 is infinite + WORD wLoopCount; + + // channel to play sample on + WORD wChannel; + + // volume to play sample at + WORD wVolume; + + // id for the sample + WORD wSampleID; + + // far pointer to the callback function + VOID ( far cdecl *lpCallback )( WORD, WORD, WORD ); + + // port to use if driver is a non-dma background driver + WORD wSamplePort; + + // flags field + WORD wSampleFlags; + + // total length of sample including loops, etc.. + WORD dwSampleByteLength; + + // loop point for the sample + WORD dwSampleLoopPoint; + WORD dwSampleLoopLength; + + // pitch shifting components + WORD dwSamplePitchAdd; + WORD wSamplePitchFraction; + + // pan components + WORD wSamplePanLocation; + WORD wSamplePanSpeed; + WORD wSamplePanDirection; + WORD wSamplePanStart; + WORD wSamplePanEnd; + + // delay parts + WORD wSampleDelayBytes; + WORD wSampleDelayRepeat; + + // compression components + WORD dwSampleADPCMPredicted; + WORD wSampleADPCMIndex; + + // root note for pitch shifting + WORD wSampleRootNoteMIDI; + + // filler for future upgrades + WORD dwSampleTemp1; + WORD dwSampleTemp2; + WORD dwSampleTemp3; + +} _SOS_START_SAMPLE; + +// structure for initializing a driver +typedef struct +{ + WORD wBufferSize; + LPSTR lpBuffer; + BOOL wAllocateBuffer; + WORD wSampleRate; + WORD wParam; + LONG dwParam; + VOID ( far *lpFillHandler )( VOID ); + LPSTR lpDriverMemory; + LPSTR lpDriverMemoryCS; + LPSTR lpTimerMemory; + LPSTR lpTimerMemoryCS; + WORD wTimerID; + WORD wPhysical; + +} _SOS_INIT_DRIVER; + +// define for the timer types to use +#define _SOS_NORMAL_TIMER 0x00 + +// enumeration for the timer types +enum +{ + _TIMER_8_MONO = 0x1000, + _TIMER_8_ST, + _TIMER_16_MONO, + _TIMER_16_ST, + _TIMER_8_MONO_ULAW, + _TIMER_8_ST_ULAW, + _TIMER_16_MONO_ULAW, + _TIMER_16_ST_ULAW, + _TIMER_8_MONO_REC, + _TIMER_8_MONO_ULAW_REC, + _TIMER_UNDEFINED_1, + _TIMER_UNDEFINED_2, + _TIMER_UNDEFINED_3, + _TIMER_UNDEFINED_4, + _TIMER_UNDEFINED_5, + _TIMER_UNDEFINED_6, + _TIMER_UNDEFINED_7, + _TIMER_UNDEFINED_8, + _TIMER_UNDEFINED_9, + _TIMER_UNDEFINED_A, + _TIMER_UNDEFINED_B, + _TIMER_UNDEFINED_C, + _TIMER_UNDEFINED_D, + _TIMER_UNDEFINED_E, + _TIMER_UNDEFINED_F, + _TIMER_UNDEFINED_10, + _TIMER_UNDEFINED_11, + _TIMER_UNDEFINED_12, + _TIMER_UNDEFINED_13, + _TIMER_UNDEFINED_14, + _TIMER_UNDEFINED_15, + _TIMER_UNDEFINED_16, + _TIMER_8_SOUND_SOURCE, + _TIMER_8_SOUND_SOURCE_TANDY, + _TIMER_8_GENERAL_PORT, + _TIMER_8_GENERAL_PORT_REC +}; + +// define for no slots available +#define _ERR_NO_SLOTS ( WORD )-1 + +// error codes for the system +enum +{ + _ERR_NO_ERROR, + _ERR_DRIVER_NOT_LOADED, + _ERR_INVALID_POINTER, + _ERR_DETECT_INITIALIZED, + _ERR_FAIL_ON_FILE_OPEN, + _ERR_MEMORY_FAIL, + _ERR_INVALID_DRIVER_ID, + _ERR_NO_DRIVER_FOUND, + _ERR_DETECTION_FAILURE, + _ERR_DRIVER_LOADED, + _ERR_INVALID_HANDLE, + _ERR_NO_HANDLES, + _ERR_PAUSED, + _ERR_NOT_PAUSED, + _ERR_INVALID_DATA, + _ERR_DRV_FILE_FAIL, + _ERR_INVALID_PORT, + _ERR_INVALID_IRQ, + _ERR_INVALID_DMA, + _ERR_INVALID_DMA_IRQ, +// STREAM + _ERR_STREAM_PLAYING, + _ERR_STREAM_EMPTY, + _ERR_STREAM_PAUSED, + _ERR_STREAM_NOT_PAUSED +// END +}; + +// maximum number of timer events that can be registered +#define _TIMER_MAX_EVENTS 0x10 + +// flags for the debugging system +#define _SOS_DEBUG_NORMAL 0x0000 +#define _SOS_DEBUG_NO_TIMER 0x0001 +#define _SOS_TIMER_DPMI 0x0002 + +// define for types of DOS extenders +#define _SOS_RATIONAL 0x8000 +#define _SOS_FLASHTECK 0x4000 + +// defines for the types of timers for different +// dos extenders +#define _SOS_TIMER_NEAR 0x8000 +#define _SOS_TIMER_FAR 0x4000 + +// values for callback information +enum +{ + _SAMPLE_PROCESSED, + _SAMPLE_LOOPING, + _SAMPLE_DONE +}; + +// define for special 18.2 callback rate to dos +#define _TIMER_DOS_RATE 0xff00 + +#pragma pack() + +#pragma aux int_3 = "int 3" + +#pragma pack( 1 ) +typedef struct +{ + unsigned region_size; + unsigned offset; + unsigned segment; + unsigned short number_available; + unsigned short number_used; + unsigned page0; + +} EVDS_STRUCT; + +typedef struct +{ + unsigned region_size; + unsigned offset; + unsigned short segment; + unsigned short ID; + unsigned physical; + +} VDS_STRUCT; + +#pragma pack() + +#include "sosdata.h" +#include "sosfnct.h" + +#endif diff --git a/CODE/RP/MUNGA_L4/sos/wc/SOSDATA.H b/CODE/RP/MUNGA_L4/sos/wc/SOSDATA.H new file mode 100644 index 0000000..b2db154 --- /dev/null +++ b/CODE/RP/MUNGA_L4/sos/wc/SOSDATA.H @@ -0,0 +1,110 @@ +/**************************************************************************** + + File : sosdata.h + + Programmer(s) : Don Fowler, Nick Skrepetos + Date : + + Purpose : Include Files For Zortech C++ Compiler + + Last Updated : + +**************************************************************************** + Copyright(c) 1993,1994 Human Machine Interfaces + All Rights Reserved +****************************************************************************/ + +#ifndef _SOS_DATA +#define _SOS_DATA + +#include + +#pragma pack(4) +extern WORD _sosDIGIData_Start; +extern WORD _sosDIGIData_End; +extern WORD _wSOSDriverLinear[]; +extern WORD _wSOSTimerLinear[]; +extern LPSTR _lpSOSDriver[]; +extern LPSTR _lpSOSTimer[]; +extern LPSTR _lpSOSDriverCS[]; +extern LPSTR _lpSOSTimerCS[]; +extern BOOL _wSOSDriverLoaded[]; +extern BOOL _wSOSTimerLoaded[]; +extern BOOL _wSOSDriverInitialized[]; +extern WORD _wSOSOutputRate[]; +extern WORD _wSOSDMABuffersize[]; +extern LONG _dwSOSDMABufferPhysical[]; +extern LPSTR _lpSOSDMABuffer[]; +extern BOOL _wTimerUsed; +extern VOID ( far *_lpSOSFillHandler[] )( VOID ); +extern WORD _wSOSTimerType[]; +extern WORD _wSOSDriverType[]; +extern _SOS_SAMPLE far * _lpSOSSampleList[][ _MAX_VOICES ]; +extern LPWORD _lpSOSDMAIrqCount[]; +extern LPWORD _lpSOSDMAFillCount[]; +extern WORD _wSOSTmrNextCount; +extern VOID ( interrupt far *_lpSOSOldTimer )( VOID ); +extern WORD _wSOSDriverID[]; +extern _SOS_CAPABILITIES _sSOSDriverCaps[]; +extern WORD _wSOSDMAPortList[]; +extern BYTE _bSOSDMAChannel[]; +extern _SOS_INIT_DRIVER _sSOSDIGIInitDriver[]; +extern BYTE _pSOSDriverPath[]; +extern BYTE _pSOSTempDriverPath[]; +extern BOOL _wTIMERUsed; +extern WORD _wTIMERValue; +extern VOID ( far * _lpTIMEREvents[] )( VOID ); +extern WORD _wTIMEREventRate[]; +extern WORD _dwTIMEREventFraction[]; +extern WORD _dwTIMEREventFractionCurrent[]; +extern BYTE _bSOSMIDITimerSongHandler[]; +extern BYTE _bSOSMIDISongHandle; +extern WORD _wSOSTimerMemHandle[]; +extern WORD _wSOSDriverMemHandle[]; +extern WORD _wSOSRealSeg[]; + +extern _FILEHEADER _sDETFileHeader; +extern _DRIVERHEADER _sDETDriverHeader; +extern _FILEHEADER sLOADFileHeader; +extern _DRIVERHEADER sLOADDriverHeader; +extern BOOL _wDETInitialized; +extern WORD _wDETLinear; +extern LPSTR _lpDETDriverBuffer; +extern LPSTR _lpDETDriverBufferCS; +extern WORD _hDETFile; +extern DWORD _dwDETDriverIndex; +extern WORD _wDETDriverIndexCur; +extern WORD _wDETMemHandle; +extern LPSOSDEVICECAPS _lpDETDeviceCaps; +extern _SOS_CAPABILITIES _sDETCaps; +extern PSTR _pSOSErrorStrings[]; +extern BOOL _wSOSBufferAllocated[]; +extern BOOL _wSOSSystemInitialized; +extern VDS_STRUCT _sSOSVDSInfo; +extern _SOS_FILL_INFO _sSOSFillInfo; +extern WORD _wSOSTimerEventIndex; +extern WORD _wSOSTimerEntered; +extern WORD _wSOSDriverSize[]; +extern WORD _wSOSTimerSize[]; + +#ifdef __cplusplus +extern "C" { +#endif +extern WORD _sosDIGIData1_Start; +extern WORD _sosDIGIData1_End; +extern WORD _sosDIGIData2_Start; +extern WORD _sosDIGIData2_End; +extern BYTE _bTIMERInstalled; +extern BYTE _bTIMERDPMI; +extern WORD wDetectPort; +extern WORD wDetectIRQ; +extern WORD wDetectDMA; +extern WORD wDetectParam; +#ifdef __cplusplus +} +#endif + +#pragma pack() + +#endif + diff --git a/CODE/RP/MUNGA_L4/sos/wc/SOSDEFS.H b/CODE/RP/MUNGA_L4/sos/wc/SOSDEFS.H new file mode 100644 index 0000000..e5792cb --- /dev/null +++ b/CODE/RP/MUNGA_L4/sos/wc/SOSDEFS.H @@ -0,0 +1,65 @@ +/**************************************************************************** + + File : sosdefs.h + + Programmer(s) : Don Fowler, Nick Skrepetos + Date : + + Purpose : Include Files For Zortech C++ Compiler + + Last Updated : + +**************************************************************************** + Copyright(c) 1993,1994 Human Machine Interfaces + All Rights Reserved +****************************************************************************/ + + +#ifndef _SOSDEFS_DEFINED +#define _SOSDEFS_DEFINED + +#undef _TRUE +#undef _FALSE +#undef _NULL +enum + { + _FALSE, + _TRUE + }; + +#define _NULL 0 + +#ifndef VOID +#define VOID void +#endif +typedef int BOOL; +typedef unsigned int UINT; +typedef unsigned char BYTE; +typedef unsigned WORD; +#ifndef LONG +typedef signed long LONG; +#endif +typedef unsigned long DWORD; + +typedef BYTE * PBYTE; +typedef char near * PSTR; +typedef WORD * PWORD; +typedef LONG * PLONG; +typedef VOID * PVOID; + +typedef BYTE far * LPBYTE; +typedef BYTE far * LPSTR; +typedef WORD far * LPWORD; +typedef LONG far * LPLONG; +typedef VOID far * LPVOID; + +typedef BYTE huge * HPBYTE; +typedef BYTE huge * HPSTR; +typedef WORD huge * HPWORD; +typedef LONG huge * HPLONG; +typedef VOID huge * HPVOID; + +typedef unsigned HANDLE; + +#endif + diff --git a/CODE/RP/MUNGA_L4/sos/wc/SOSFNCT.H b/CODE/RP/MUNGA_L4/sos/wc/SOSFNCT.H new file mode 100644 index 0000000..5af1642 --- /dev/null +++ b/CODE/RP/MUNGA_L4/sos/wc/SOSFNCT.H @@ -0,0 +1,208 @@ +/**************************************************************************** + + File : sosfnct.h + + Programmer(s) : Don Fowler, Nick Skrepetos + Date : + + Purpose : Include Files For Zortech C++ Compiler + + Last Updated : + +**************************************************************************** + Copyright(c) 1993,1994 Human Machine Interfaces + All Rights Reserved +****************************************************************************/ + +#ifndef _SOS_FUNCTIONS +#define _SOS_FUNCTIONS + +#ifdef __cplusplus // ECH +extern "C" { +#endif + +#pragma pack(4) + +WORD sosDIGILockMemory ( VOID ); +WORD sosDIGIUnLockMemory ( VOID ); +WORD sosDIGIInitSystem ( LPSTR, WORD ); +WORD sosDIGIUnInitSystem ( VOID ); +WORD sosDIGIInitDriver ( WORD, _SOS_HARDWARE far *, + _SOS_INIT_DRIVER far *, WORD far * ); +WORD sosDIGIUnInitDriver ( WORD, BOOL, BOOL ); +WORD sosDIGILoadDriver ( WORD, WORD, LPSTR far *, LPSTR far *, PSTR, PSTR, WORD * ); +WORD sosDIGIUnLoadDriver ( WORD ); +WORD sosDIGIGetDeviceCaps ( WORD, LPSOSDEVICECAPS ); + +#ifdef PHARLAP +LPSTR sosDIGIAllocateBuffer ( WORD , WORD *, WORD * ); +#else +LPSTR sosDIGIAllocateBuffer ( WORD , WORD *, WORD * ); +#endif + +WORD sosDIGIStopSample ( WORD, WORD ); +WORD sosDIGISamplesPlaying ( WORD ); +BOOL sosDIGISampleDone ( WORD, WORD ); +BOOL sosDIGISampleFilling ( WORD, WORD ); +WORD sosDIGIStartSample ( WORD, _SOS_START_SAMPLE far * ); +WORD sosDIGIContinueSample ( WORD, WORD, _SOS_START_SAMPLE far * ); + + +WORD sosDIGIDetectInit ( LPSTR ); +WORD sosDIGIDetectUnInit ( VOID ); +WORD sosDIGIDetectFindHardware ( WORD, _SOS_CAPABILITIES far *, WORD far * ); +WORD sosDIGIDetectFindFirst ( _SOS_CAPABILITIES far *, WORD far * ); +WORD sosDIGIDetectFindNext ( _SOS_CAPABILITIES far *, WORD far * ); +WORD sosDIGIDetectGetSettings ( _SOS_HARDWARE far * ); +WORD sosDIGIDetectGetCaps ( WORD, _SOS_CAPABILITIES far * ); +WORD sosDIGIDetectVerifySettings( _SOS_HARDWARE far * ); +PSTR sosGetErrorString ( WORD ); + +WORD sosDIGILoadTimer ( WORD , LPSTR far *, LPSTR far *, PSTR, PSTR, WORD * ); +WORD sosDIGIUnLoadTimer ( WORD ); + +WORD sosTIMERRegisterEvent ( WORD wCallRate, VOID ( far * lpTimerEvent )( VOID ), WORD far *lpTimerHandle ); +WORD sosTIMERInitSystem ( WORD, WORD ); +WORD sosTIMERUnInitSystem ( WORD ); +WORD sosTIMERSetRate ( WORD ); +WORD sosTIMERRemoveEvent ( WORD ); +WORD sosTIMERAlterEventRate ( WORD, WORD ); +WORD sosTIMERGetEventRate ( WORD ); +VOID far sosTIMEROldHandler ( VOID ); +VOID far sosTIMERHandler ( VOID ); + +// functions in soscntl.c +WORD sosDIGISetSampleVolume ( WORD, WORD, WORD ); +WORD sosDIGIGetSampleVolume ( WORD, WORD ); +WORD sosDIGISetChannel ( WORD, WORD, WORD ); +WORD sosDIGIGetChannel ( WORD, WORD ); +WORD sosDIGIGetBytesProcessed ( WORD, WORD ); +WORD sosDIGIGetLoopCount ( WORD, WORD ); +WORD sosDIGISetPanLocation ( WORD, WORD, WORD ); +WORD sosDIGIGetPanLocation ( WORD, WORD ); +DWORD sosDIGISetPitch ( WORD, WORD, DWORD ); +DWORD sosDIGIGetPitch ( WORD, WORD ); +WORD sosDIGIGetDMAPosition ( WORD ); +WORD sosDIGISetPanSpeed ( WORD, WORD, WORD ); +WORD sosDIGIGetPanSpeed ( WORD, WORD ); +WORD sosDIGIGetSampleID ( WORD, WORD ); +WORD sosDIGIGetSampleHandle ( WORD, WORD ); +WORD sosDIGISetMasterVolume ( WORD, WORD ); +#ifdef PHARLAP +VOID sosFreeVDSPage ( unsigned short, unsigned short, DWORD ); +WORD sosAllocVDSPage ( unsigned short *, unsigned short *, DWORD * ); +#else +WORD sosAllocVDSPage ( LPSTR *, WORD *, WORD * ); +VOID sosFreeVDSPage ( WORD, WORD, LONG ); +#endif + +//#ifdef __cplusplus // ECH +//extern "C" { +//#endif + +#ifdef PHARLAP +extern int cdecl sosRealFree ( int ); +extern BOOL cdecl _sos_read( WORD, LPSTR, WORD, WORD * ); +extern int cdecl sosRealAlloc( int, int *, int * ); +extern void cdecl sosDRVFarMemCopy( LPSTR, LPSTR, WORD ); +extern int cdecl sosGetCS( VOID ); +extern int cdecl sosGetES( VOID ); +#else +extern int cdecl sosRealAlloc ( int, int *, int * ); +extern int cdecl sosRealFree ( int ); +#endif + +// sos driver functions +extern WORD cdecl sosDRVLockMemory ( DWORD, DWORD ); +extern WORD cdecl sosDRVUnLockMemory ( DWORD, DWORD ); +extern void cdecl sosDRVGetCapsInfo ( LPSTR, LPSTR, _SOS_CAPABILITIES far * ); +extern void cdecl sosDetDRVGetCapsInfo ( LPSTR, LPSTR, _SOS_CAPABILITIES far * ); +extern void cdecl sosDRVGetCapsPtr ( LPSTR, LPSTR, _SOS_CAPABILITIES far * ); +extern void cdecl sosDRVInit ( LPSTR, LPSTR, int, int, int, int, int, int ); +extern void cdecl sosDRVStart ( LPSTR, LPSTR, int, int ); +extern void cdecl sosDRVSetRate ( LPSTR, LPSTR, int ); +extern void cdecl sosDRVSetAction ( LPSTR, LPSTR ); +extern void cdecl sosDRVStop ( LPSTR, LPSTR ); +extern void cdecl sosDRVUnInit ( LPSTR, LPSTR ); +extern void cdecl sosDRVGetFillInfo ( LPSTR, LPSTR, LPSTR, int, int, int, _SOS_FILL_INFO * ); +extern void cdecl sosFillSampleStructs ( PSTR, LPSTR ); +extern WORD cdecl sosDetDRVExist ( LPSTR, LPSTR ); +extern WORD cdecl sosDetDRVGetSettings ( LPSTR, LPSTR ); +extern WORD cdecl sosDetDRVVerifySettings( LPSTR, WORD, WORD, WORD, LPSTR ); +extern WORD cdecl sosDIGIInitForWindows( WORD ); +extern WORD cdecl sosDIGIUnInitForWindows( WORD ); +extern LPSTR cdecl sosAllocateFarMem ( WORD, PSTR, WORD * ); +extern LPSTR cdecl sosCreateAliasCS ( LPSTR ); +extern VOID cdecl sosFreeSelector ( LPSTR, DWORD ); +extern LPSTR cdecl sosMAKEDOSPtr ( PSTR ); +extern VOID cdecl sosDetDRVSetEnvString ( DWORD, PSTR ); +extern PSTR cdecl sosDetDRVGetEnvString ( DWORD ); +extern VOID cdecl sosDetDRVEnvStringInit ( LPSTR, LPSTR ); +extern VOID cdecl sosDRVSetupCallFunctions( LPSTR, LPSTR, LPSTR, LPSTR ); +extern WORD cdecl sosDRVGetFreeMemory ( VOID ); +extern WORD cdecl sosDRVAllocVDSStruct ( WORD, WORD *, WORD * ); +extern WORD cdecl sosDRVFreeVDSStruct ( WORD, WORD ); +extern WORD cdecl sosDRVIsWindowsActive ( VOID ); +extern WORD cdecl sosDRVVDSGetBuffer ( WORD ); +extern WORD cdecl sosDRVVDSFreeBuffer ( WORD ); +extern WORD cdecl getDS( VOID ); +extern WORD cdecl sosDRVMakeDMASelector ( WORD ); +extern WORD cdecl sosDRVFreeDMASelector ( WORD ); + + +extern void cdecl sosTIMERDRVInit( int wRate, void ( far * )( void ) ); +extern void cdecl sosTIMERDRVUnInit( void ); +extern void cdecl sosTIMERDRVHandler( void ); +extern void cdecl sosTIMERDRVFHandler( void ); +extern void cdecl sosTIMERDRVEnable( void ); +extern void cdecl sosTIMERDRVDisable( void ); +extern void cdecl sosTIMERDRVCallOld( void ); +extern void cdecl sosTIMERDRVSetRate( WORD ); +extern void cdecl sosDIGITimer_Start( void ); +extern void cdecl sosDIGITimer_End( void ); +extern void cdecl sosDIGIDrv_Start( void ); +extern void cdecl sosDIGIDrv_End( void ); +//#ifdef __cplusplus //ECH +//} +//#endif + +// external functions for handling system initialization and +// uninitialization +WORD sosEXDIGInitDriver ( WORD, WORD, WORD, LPSTR, + _SOS_HARDWARE far *, WORD * ); +WORD sosEXDIGIUnInitDriver ( VOID ); + +WORD sosEXDETFindDriver ( WORD, LPSTR, _SOS_HARDWARE far *, + _SOS_CAPABILITIES far * ); + +// memory locking prototypes +VOID sosDIGICaps_Start( VOID ); +VOID sosDIGICaps_End( VOID ); +VOID sosDIGIErr_Start( VOID ); +VOID sosDIGIErr_End( VOID ); +VOID sosDIGITmr_Start( VOID ); +VOID sosDIGITmr_End( VOID ); +VOID sosDIGIStart_Start( VOID ); +VOID sosDIGIStart_End( VOID ); +VOID sosDIGIPlyng_Start( VOID ); +VOID sosDIGIPlyng_End( VOID ); +VOID sosDIGIRate_Start( VOID ); +VOID sosDIGIRate_End( VOID ); +VOID sosDIGIDone_Start( VOID ); +VOID sosDIGIDone_End( VOID ); +VOID sosDIGIDetec_Start( VOID ); +VOID sosDIGIDetec_End( VOID ); +VOID sosDIGIInit_Start( VOID ); +VOID sosDIGIInit_End( VOID ); +VOID sosDIGILoad_Start( VOID ); +VOID sosDIGILoad_End( VOID ); +VOID sosDIGICntl_Start( VOID ); +VOID sosDIGICntl_End( VOID ); + +#pragma pack() + +#ifdef __cplusplus // ECH +} +#endif + +#endif diff --git a/CODE/RP/MUNGA_L4/sos/wc/SOSM.H b/CODE/RP/MUNGA_L4/sos/wc/SOSM.H new file mode 100644 index 0000000..183175e --- /dev/null +++ b/CODE/RP/MUNGA_L4/sos/wc/SOSM.H @@ -0,0 +1,455 @@ +/**************************************************************************** + + File : sosm.h + + Programmer(s) : Don Fowler, Nick Skrepetos + Date : + + Purpose : Include Files For Zortech C++ Compiler + + Last Updated : + +**************************************************************************** + Copyright(c) 1993,1994 Human Machine Interfaces + All Rights Reserved +****************************************************************************/ + +#ifndef _SOS_MIDI_DEFINED +#define _SOS_MIDI_DEFINED + +#include "sosdefs.h" +#include "sos.h" + +#pragma pack(4) + +#define _SOS_MIDI_ERR -1 + +// number of drivers allowed to be open at one time +#define _SOS_MIDI_MAX_DRIVERS 5 + +// maximum number of allowed channels +#define _SOS_MIDI_MAX_CHANNELS 0x10 + +// structure definition for the capabilities +typedef struct +{ + BYTE szDeviceName[ 32 ]; // device name + WORD wDeviceVersion; // device version + WORD wFlags; // miscellaneous flags + WORD wProcessData; // process data before sending to driver + short far * lpPortList; // list of usable ports + short far * lpIRQList; // list of usable irq channels + WORD wDeviceID; // ID for the device + +} _SOS_MIDI_CAPABILITIES; + +#define LPSOSMIDIDEVICECAPS _SOS_MIDI_CAPABILITIES far * + +// call indexes for the loadable drivers +enum +{ + _DRV_MIDI_GET_CAPS, + _DRV_MIDI_GET_CALL_TABLE, + _DRV_MIDI_SPECIAL1 +}; + +// file header for the driver +typedef struct +{ + // name ID + BYTE szName[ 32 ]; + + // number of drivers in the file + WORD wDrivers; + + // offset of first driver + WORD lOffset; + + // size of the file + WORD lFileSize; + +} _MIDIFILEHEADER; + +// driver header structure +typedef struct +{ + // name ID + BYTE szName[ 32 ]; + + // offset of next driver + WORD lNextDriver; + + // size of current driver + WORD wSize; + + // id for the current device + WORD wDeviceID; + + // id for the extender type + WORD wExtenderType; + +} _MIDIDRIVERHEADER; + +// device hardware information +typedef struct +{ + // port to be used + WORD wPort; + + // IRQ for the board + WORD wIRQ; + + // extra parameter + WORD wParam; + +} _SOS_MIDI_HARDWARE; + +// structure for initializing a digital driver +typedef struct +{ + // ID for the digital driver + WORD wDriverID; + + // timer rate to use + WORD wTimerRate; + + // timer callback rate to use + WORD wTimerCallbackRate; + + // max voices for the driver to use + WORD wMaxVoices; + + // velocity sensing flag + WORD wVelocitySensing; + + // init driver info + _SOS_INIT_DRIVER far * sDIGIDriverInfo; + + // hardware information + _SOS_HARDWARE far * sDIGIHardwareInfo; + +} _SOS_MIDI_DIGI_INIT_DRIVER; + +// structure for initializing a driver +typedef struct +{ + // type of driver to use if using a digital driver + WORD wDIGIDriverID; + + // pointer to driver memory + VOID far * lpDriverMemory; + VOID far * lpDriverMemoryCS; + + // pointer to digital driver initialization information + _SOS_MIDI_DIGI_INIT_DRIVER far * sDIGIInitInfo; + + // miscellaneous WORD parameter for driver + WORD wParam; + + // miscellaneous DWORD parameter for driver + DWORD dwParam; + +} _SOS_MIDI_INIT_DRIVER; + +// structure for starting a song +typedef struct +{ + // pointer to song memory + BYTE _huge * lpSongData; + + // pointer to callback function for pertinent song information + VOID ( far * lpSongCallback )( WORD ); + +} _SOS_MIDI_INIT_SONG; + +// define to indicate that track mapping can be used +// from the midi file for the song +#define _MIDI_MAP_TRACK 0xff + +// MIDI channel to device mapping structure +typedef struct +{ + // track to device mapping information + WORD wTrackDevice[ 32 ]; + +} _SOS_MIDI_TRACK_DEVICE; + +// MIDI channel to device mapping structure +typedef struct +{ + // track to device mapping information + WORD wTrackDevice[ 32 ][ 5 ]; + +} _SOS_MIDI_TRACK_DEVICE1; + +// NEW +// header for the NDMF format MIDI file +typedef struct +{ + // ID for the file + BYTE szFileID[ 32 ]; + + WORD dwBranchOffset; + WORD temp1; + WORD temp2; + WORD temp3; + +// // name of the instrument file to use with the song +// BYTE szInstrumentFile[ 16 ]; + + // number of tracks in the song + WORD wNDMFTracks; + + // ticks/quarter note song is used at + WORD wTicksQuarterNote; + + // tempo + WORD wTempo; + + // time for song to play at current tempo + WORD wTimeToPlay; + + // channel mapping priority information + WORD wChannelPriority[ _SOS_MIDI_MAX_CHANNELS ]; + + // channel mapping information + _SOS_MIDI_TRACK_DEVICE1 sTrackMap; + + // array of flags for which controllers to restore on a loop/branch + BYTE bCtrlRestore[ 128 ]; + + // pointer to callback function for song to call with + // pertinent information + VOID ( far * lpSongCallback )( WORD ); + +} _NDMF_FILE_HEADER; +// END + +// header for the tracks in the NDMF format MIDI file +typedef struct +{ + // track number + WORD wTrackNumber; + + // length of the track + WORD wTrackLength; + + // channel used on the track + WORD wChannel; + +} _NDMF_TRACK_HEADER; + +// MIDI event structure +typedef struct +{ + // dummy name to access midi data from + BYTE bMidiData[ 256 ]; + +} _NDMF_MIDI_EVENT; + +// maximum number of songs that can be played at any time +#define _SOS_MIDI_MAX_SONGS 8 + +// maximum number of tracks that can be used +#define _SOS_MIDI_MAX_TRACKS 32 + +// number of driver functions +#define _SOS_MIDI_DRV_FUNCTIONS 13 + +// enumeration for all of the drv functions +enum +{ + _MIDI_DRV_SEND_DATA, + _MIDI_DRV_INIT, + _MIDI_DRV_UNINIT, + _MIDI_DRV_RESET, + _MIDI_DRV_SET_INST_DATA +}; + +// defines for the loadable driver ids +#define _MIDI_SOUND_MASTER_II 0xa000 +#define _MIDI_MPU_401 0xa001 +#define _MIDI_FM 0xa002 +#define _MIDI_OPL2 0xa002 +#define _MIDI_CALLBACK 0xa003 +#define _MIDI_MT_32 0xa004 +#define _MIDI_DIGI 0xa005 +#define _MIDI_INTERNAL_SPEAKER 0xa006 +#define _MIDI_WAVE_TABLE_SYNTH 0xa007 +#define _MIDI_AWE32 0xa008 +#define _MIDI_OPL3 0xa009 +#define _MIDI_GUS 0xa00a + +// structure for the hmi instrument file header +typedef struct +{ + // file id type + BYTE szFileID[ 32 ]; + + // file version + WORD wFileVersion; + + // size of the file + WORD dwFileSize; + +} _HMI_INS_FILE_HEADER; + + +// define for identifying a drum instrument +#define _SOS_MIDI_DRUM_INS ( short )0x8000 + +// maximum number of timer events that can be registered +#define _TIMER_MAX_EVENTS 0x10 + +// structure for digital driver queue element +typedef struct _tagQueueElement +{ + // handle for the sample + WORD wSampleHandle; + + // id for the sample + WORD wSampleID; + + // velocity for the sample + WORD wVelocity; + + // channel for the sample + WORD wChannel; + +} _DIGI_QUEUE_ELEMENT; + +// maximum number of instruments that can be set in the +// digital driver +#define _MAX_INS 128 + +// define for the maximum number of times a channel can be stolen +#define _SOS_MIDI_MAX_LEVELS 0x04 + +// structure for MIDI information to be stored on the local stack +// when a channel is stolen +typedef struct +{ + // used element + BYTE bUsed; + + // last pitch bend information sent + BYTE bPitchBend; + + // channel volume + BYTE bChannelVolume; + + // instrument information + BYTE bInstrument; + + // sustain pedal + BYTE bSustain; + +} _SOS_MIDI_CHANNEL_DATA; + +// flags for the debugging system +#define _SOS_DEBUG_NORMAL 0x0000 +#define _SOS_DEBUG_NO_TIMER 0x0001 + +// ID for 32 bit MIDI file +#define _SOS_MIDI_FILE_ID "HMIMIDIP" + +// structure for branch location controller +typedef struct +{ + // offset from start of track data + WORD dwOffset; + + // branch ID number + BYTE bBranchID; + + // current instrument + BYTE bInstrument; + + // current loop count for temporary storage + // so that a track can be looped without + // needing any data from the program + BYTE bLoopCount; + + // number of controller messages stored + BYTE bCtrlChangeCount; + + // offset of control change information from start of file + WORD lpCtrlChangeData; + WORD lpCtrlChangeDataTemp; + + // reserved fields + WORD wReserved1; + WORD wReserved2; + +} _SOS_BRANCH_POINT; + +#define _SOS_MIDI_FADE_IN 0x01 +#define _SOS_MIDI_FADE_OUT 0x02 +#define _SOS_MIDI_FADE_OUT_STOP 0x04 + +// structure for digital drums to use to store midi information +typedef struct +{ + // current volume + WORD wVolume; + + // current pan position + WORD wPanPosition; + + // reserved + DWORD dwReserved; + +} _SOS_MIDI_DIGI_CHANNEL; + +// instrument file header structure +typedef struct +{ + // file ID + BYTE szID[ 32 ]; + + // file version + WORD wVersion; + + // instruments in file + WORD wInstruments; + + // list of pointers to start sample structures + _SOS_START_SAMPLE far * lpStartSample[ _MAX_INS ]; + + DWORD temp1; + DWORD temp2; + +} _WAVE_FILE_HEADER; + +#pragma pack() + +// define for the busy error returned from send data +#define _ERR_DRIVER_BUSY 0xf000 + +// NEW +// defines for the looping branch controllers +#define _SOS_SET_FLAG 103 +#define _SOS_RESET_FLAG 104 +#define _SOS_BRANCH1 108 +#define _SOS_BRANCH2 109 +#define _SOS_BRANCH3 110 +#define _SOS_BRANCH4 111 +#define _SOS_BRANCH5 112 +#define _SOS_BRANCH6 113 +#define _SOS_BRANCH7 114 +#define _SOS_BRANCH8 115 +#define _SOS_BRANCH9 116 +#define _SOS_BRANCH10 117 +#define _SOS_BRANCH11 118 +#define _SOS_BRANCH12 119 +#define _SOS_BRANCH13 120 +#define _SOS_BRANCH14 121 + +// define for the program change controller flag +#define _SOS_PROGRAM_CHANGE_FLAG 108 + +// END +#include "sosmdata.h" +#include "sosmfnct.h" + +#endif diff --git a/CODE/RP/MUNGA_L4/sos/wc/SOSMDATA.H b/CODE/RP/MUNGA_L4/sos/wc/SOSMDATA.H new file mode 100644 index 0000000..46808df --- /dev/null +++ b/CODE/RP/MUNGA_L4/sos/wc/SOSMDATA.H @@ -0,0 +1,125 @@ +/**************************************************************************** + + File : sosmdata.h + + Programmer(s) : Don Fowler, Nick Skrepetos + Date : + + Purpose : Include Files For Zortech C++ Compiler + + Last Updated : + +**************************************************************************** + Copyright(c) 1993,1994 Human Machine Interfaces + All Rights Reserved +****************************************************************************/ + + +#ifndef _SOS_MIDI_DATA +#define _SOS_MIDI_DATA + +#include "sos.h" + +#pragma pack(4) + +extern WORD _wSOSMIDIDriverLinear[]; +extern LPSTR _lpSOSMIDIDriver[]; +extern LPSTR _lpSOSMIDIDriverCS[]; +extern WORD _wSOSMIDIMemHandle[]; +extern BOOL _wSOSMIDIDriverLoaded[]; +extern WORD _wSOSMIDIDriverType[]; +extern WORD _wSOSMIDIDriverID[]; +extern DWORD _dwSOSMIDITrackDeltaCurrent[][_SOS_MIDI_MAX_TRACKS]; +extern WORD _wSOSMIDIActiveTracks[]; +extern WORD _wSOSMIDITotalTracks[]; +extern DWORD _dwSOSMIDITrackDeltaTime[][_SOS_MIDI_MAX_TRACKS]; +extern WORD _wSOSMIDISongPaused[]; +extern WORD _wSOSMIDISongMuted[]; +extern BOOL _wSOSMIDISongActive[]; +extern BYTE _bSOSMIDIEventSize[]; +extern BYTE _bSOSMIDIEventSizeControl[]; +extern _SOS_MIDI_CAPABILITIES far * _lpSOSMIDIDriverCaps[]; +extern _SOS_MIDI_TRACK_DEVICE far * _sSOSMIDITrackMap[]; +extern _NDMF_MIDI_EVENT _huge * _lpSOSMIDITrack[][_SOS_MIDI_MAX_TRACKS]; +extern WORD ( cdecl far *_lpSOSMIDIDrvFunction[ _SOS_MIDI_MAX_DRIVERS ][ _SOS_MIDI_DRV_FUNCTIONS ] )( LPSTR, WORD, WORD ); +extern _NDMF_FILE_HEADER far * _sSOSMIDISongHeader[]; +extern _SOS_INIT_DRIVER _sSOSDIGIInitDriver[]; +extern WORD _wSOSMIDIEventHandle[]; +extern BYTE _szSOSMIDIDrvFile[]; +extern _MIDIFILEHEADER _sSOSMIDIDRVFileHeader; +extern _MIDIDRIVERHEADER _sSOSMIDIDRVDriverHeader; +extern BOOL _wSOSMIDISysInititalized; +extern WORD ( cdecl far *_lpSOSMIDICBCKDrvFunctions[] )( LPSTR, WORD, WORD ); +extern VOID ( cdecl far *_lpSOSMIDICBCKFunctions )( LPSTR, WORD, WORD ); +extern WORD _wMIDIDIGISampleQueueHead[]; +extern WORD _wMIDIDIGISampleQueueTail[]; +extern WORD _wMIDIDIGIMaxSamples[]; +extern WORD _wMIDIDIGIUsedSamples[]; +extern _DIGI_QUEUE_ELEMENT _sMIDIDIGIQueue[][ _MAX_VOICES ]; + + +extern WORD ( cdecl far *_lpMIDIDIGIDrvFunctions[] )( LPSTR, WORD, WORD ); +extern _SOS_START_SAMPLE far * _sMIDIDIGIStartSample[][ _MAX_INS ]; +extern _HMI_INS_FILE_HEADER far * _sMIDIDIGIInsFileHeader[]; +extern WORD _wMIDIDIGIDriverHandle[]; +extern WORD _wMIDIDIGIDriverInitialized[]; +extern WORD _wMIDIDIGITimerEventHandle[]; +extern WORD _wMIDIDIGIDriverInitMIDI[]; +extern WORD _wMIDIDIGIVelocitySensing[]; +extern BYTE _szMIDIDIGIInsFileID[]; + +extern BYTE _bSOSMIDIMasterVolume; +extern BYTE _bSOSMIDIDeviceChannelVolume[][ _SOS_MIDI_MAX_CHANNELS ]; +extern BYTE _bSOSMIDIMT32SendData; + +extern LPSTR lpFake; +extern WORD wFake; + +extern _NDMF_TRACK_HEADER _huge *_lpSOSMIDITrackHeaders[][ _SOS_MIDI_MAX_TRACKS ]; +extern BYTE _bSOSMIDIChannelRemap[][ _SOS_MIDI_MAX_SONGS ][ _SOS_MIDI_MAX_CHANNELS ]; +extern BYTE _bSOSMIDIChannelPriority[][ _SOS_MIDI_MAX_CHANNELS ]; +extern BYTE _bSOSMIDIOwnerChannel[][ _SOS_MIDI_MAX_CHANNELS ]; +extern BYTE _bSOSMIDIOwnerSong[][ _SOS_MIDI_MAX_CHANNELS ]; +extern _SOS_MIDI_CHANNEL_DATA _sSOSMIDIChannelData[][ _SOS_MIDI_MAX_CHANNELS ][ _SOS_MIDI_MAX_LEVELS ]; +extern BYTE _bSOSMIDIChannelDataIndex[][ _SOS_MIDI_MAX_SONGS ][ _SOS_MIDI_MAX_CHANNELS ]; +extern BYTE _bSOSMIDIData[]; +extern BYTE _bSOSMIDIData1[]; +extern BYTE _bSOSMIDIDeviceLowPriority[]; +extern WORD _wSOSMIDIChannelStealing; +extern BYTE _bSOSMIDIDeviceChannelActive[][ _SOS_MIDI_MAX_CHANNELS ]; +extern BYTE _bSOSMIDIDeviceChannelAvailable[][ _SOS_MIDI_MAX_CHANNELS ]; +extern BYTE _bSOSMIDISongHandle; +extern BYTE _szMIDIMIDIFileID[]; +extern BYTE _pSOSMIDIDriverPath[]; +extern BYTE _pSOSMIDITempDriverPath[]; +extern WORD sosMIDIData_Start; +extern WORD sosMIDIData_End; +extern WORD ( cdecl far *_lpSOSMIDIAWEDrvFunctions[5] )( LPSTR, WORD, WORD ); +extern WORD _wSOSGravisTimerHandle; +extern WORD _wSOSMIDISongVolume[]; + +extern _SOS_BRANCH_POINT far * _lpMIDIBranchData[][ _SOS_MIDI_MAX_TRACKS ]; +extern WORD ( far *_lpSOSMIDIBranchCallback[] )( WORD, BYTE, BYTE ); +extern WORD ( far *_lpSOSMIDILoopCallback[] )( WORD, BYTE, BYTE, BYTE ); +extern WORD ( far *_lpSOSMIDITriggerCallback[][ 127 ] )( WORD, BYTE, BYTE ); +extern BYTE _bSOSMIDIBranchOccurred; + +extern WORD _wSOSMIDIVolumeFadeDirection[]; +extern DWORD _dwSOSMIDIVolumeFadeFraction[]; +extern DWORD _dwSOSMIDIVolumeFadeVolume[]; +extern WORD _wSOSMIDIVolumeFadeTicks[]; +extern BYTE _bSOSMIDIHandleVolumeFade[]; +extern WORD _wSOSDIGIMIDIHandle[]; + +extern _SOS_MIDI_DIGI_CHANNEL _sMIDIDIGIChannel[]; + +extern WORD ( cdecl far *_lpMIDIWAVEDrvFunctions[] )( LPSTR, WORD, WORD ); +extern WORD _wSOSMIDIChannelMuted[][ _SOS_MIDI_MAX_CHANNELS ]; + +extern BYTE _szPLYMIDIBuffer[]; +extern WORD _wPLYMIDIBufferIndex; +extern WORD _wSOSMIDIDriverSize[]; + +#pragma pack() + +#endif diff --git a/CODE/RP/MUNGA_L4/sos/wc/SOSMFNCT.H b/CODE/RP/MUNGA_L4/sos/wc/SOSMFNCT.H new file mode 100644 index 0000000..0a0298c --- /dev/null +++ b/CODE/RP/MUNGA_L4/sos/wc/SOSMFNCT.H @@ -0,0 +1,175 @@ +/**************************************************************************** + + File : sosmfnct.h + + Programmer(s) : Don Fowler, Nick Skrepetos + Date : + + Purpose : Include Files For Zortech C++ Compiler + + Last Updated : + +**************************************************************************** + Copyright(c) 1993,1994 Human Machine Interfaces + All Rights Reserved +****************************************************************************/ + +#ifndef _SOS_MIDI_FUNCTIONS +#define _SOS_MIDI_FUNCTIONS + +#ifdef __cplusplus // ECH +extern "C" { +#endif + +#pragma pack(4) + +VOID interrupt far sosMIDITimerHandler ( VOID ); +WORD sosMIDILockMemory ( VOID ); +WORD sosMIDIUnLockMemory ( VOID ); +WORD sosMIDIGetDeviceCaps ( WORD, LPSOSMIDIDEVICECAPS ); +WORD sosMIDIInitSystem ( LPSTR, WORD ); +WORD sosMIDIUnInitSystem ( VOID ); +WORD sosMIDIInitDriver ( WORD, _SOS_MIDI_HARDWARE far *, + _SOS_MIDI_INIT_DRIVER far *, WORD far * ); +WORD sosMIDIUnInitDriver ( WORD, BOOL ); +WORD sosMIDILoadDriver ( WORD, WORD, LPSTR far *, LPSTR far *, PSTR, PSTR, WORD * ); +WORD sosMIDIUnLoadDriver ( WORD ); +WORD sosMIDIInitSong ( _SOS_MIDI_INIT_SONG far *, + _SOS_MIDI_TRACK_DEVICE far *, + WORD far * ); +WORD sosMIDIUnInitSong ( WORD ); +WORD sosMIDIResetSong ( WORD, _SOS_MIDI_INIT_SONG far * ); +WORD sosMIDIStartSong ( WORD ); +WORD sosMIDIStopSong ( WORD ); +WORD sosMIDIPauseSong ( WORD, WORD ); +WORD sosMIDIMuteSong ( WORD ); +WORD sosMIDIUnMuteSong ( WORD ); +WORD sosMIDIResumeSong ( WORD ); +BOOL sosMIDISongDone ( WORD ); +WORD sosMIDISongAlterTempo ( WORD, WORD ); +WORD sosMIDIGetDeltaTime ( LPSTR, DWORD far * ); +WORD sosMIDISongGetTimeToPlay ( WORD ); +BYTE _huge * sosMIDINormalizePtr ( BYTE _huge * ); +WORD sosMIDISetInsData ( WORD, LPSTR, WORD ); +WORD sosMIDIResetDriver ( WORD ); +BOOL sosMIDIHandleMIDIData ( WORD, LPSTR, WORD, WORD ); +WORD sosMIDISendMIDIData ( WORD, LPSTR, WORD ); +// NEW +VOID sosMIDISetTrackState ( WORD, WORD, WORD ); +// END + +// compiled in drivers function interface +LPSTR digiGetCallTable ( VOID ); +LPSTR callbackGetCallTable ( VOID ); +LPSTR aweGetCallTable ( VOID ); + +WORD cdecl far callbackSendData ( LPSTR, WORD, WORD ); +WORD cdecl far callbackInit ( LPSTR, WORD, WORD ); +WORD cdecl far callbackUnInit ( LPSTR, WORD, WORD ); +WORD cdecl far callbackReset ( LPSTR, WORD, WORD ); +WORD cdecl far callbackSetInstrumentData ( LPSTR, WORD, WORD ); + +WORD cdecl far aweSendData ( LPSTR, WORD, WORD ); +WORD cdecl far aweInit ( LPSTR, WORD, WORD ); +WORD cdecl far aweUnInit ( LPSTR, WORD, WORD ); +WORD cdecl far aweReset ( LPSTR, WORD, WORD ); +WORD cdecl far aweSetInstrumentData ( LPSTR, WORD, WORD ); + +// function prototypes +WORD cdecl far digiSendData ( LPSTR, WORD, WORD ); +WORD cdecl far digiInit ( LPSTR, WORD, WORD ); +WORD cdecl far digiUnInit ( LPSTR, WORD, WORD ); +WORD cdecl far digiReset ( LPSTR, WORD, WORD ); +WORD cdecl far digiSetInstrumentData ( LPSTR, WORD, WORD ); + +LPSTR waveGetCallTable ( VOID ); +WORD cdecl far waveSendData ( LPSTR, WORD, WORD ); +WORD cdecl far waveInit ( LPSTR, WORD, WORD ); +WORD cdecl far waveUnInit ( LPSTR, WORD, WORD ); +WORD cdecl far waveReset ( LPSTR, WORD, WORD ); +WORD cdecl far waveSetInstrumentData ( LPSTR, WORD, WORD ); +VOID cdecl far waveSampleCallback( WORD, WORD, WORD ); + +VOID digiQueueInit ( WORD, WORD ); +VOID digiQueueUnInit ( WORD ); +WORD digiQueueAddItem ( WORD, WORD, WORD, WORD, WORD ); +WORD digiQueueGetItem ( WORD, WORD ); +WORD digiQueueGetItemWAVE ( WORD ); +WORD digiQueueDeleteItem ( WORD, WORD ); +WORD digiQueueDeleteItemWAVE ( WORD, WORD ); +WORD digiQueueDeleteItemMIDI ( WORD, WORD, WORD ); +WORD digiQueueFindItemMIDI ( WORD, WORD, WORD ); + +// function prototypes +VOID cdecl far digiSampleCallback( WORD, WORD, WORD ); + +WORD sosMIDIRegisterBranchFunction ( WORD, WORD ( far * )( WORD, BYTE, BYTE ) ); +WORD sosMIDIRegisterLoopFunction ( WORD, WORD ( far * )( WORD, BYTE, BYTE, BYTE ) ); +WORD sosMIDIRegisterTriggerFunction( WORD, BYTE, WORD ( far * )( WORD, BYTE, BYTE ) ); +WORD sosMIDIBranchToTrackLocation ( WORD, BYTE, BYTE ); +WORD sosMIDIBranchToSongLocation ( WORD, BYTE ); + +//#ifdef __cplusplus // ECH +//extern "C" { +//#endif + +extern void cdecl sosMIDIDRVGetCapsInfo( LPSTR, LPSTR, _SOS_MIDI_CAPABILITIES far * ); +extern void cdecl sosMIDIDRVGetCapsPtr ( LPSTR, LPSTR, _SOS_MIDI_CAPABILITIES far * ); +extern void cdecl sosMIDIDRVGetFuncsPtr( LPSTR, LPSTR, LPSTR ); +extern LPSTR cdecl sosMIDIDRVSpecialFunction( LPSTR, LPSTR, WORD ); +extern WORD cdecl xgetES( void ); + +//#ifdef __cplusplus // ECH +//} +//#endif + +BOOL sosMIDIResetChannelStealing ( WORD ); +WORD sosMIDIEnableChannelStealing( WORD ); +VOID far sosMIDISongHandler( VOID ); + +WORD sosMIDISetMT32InsData ( WORD, LPSTR, WORD ); +WORD sosMIDISetMasterVolume ( BYTE ); +VOID far sosMIDIMT32Timer ( VOID ); + +WORD sosMIDISetSongVolume ( WORD, BYTE ); +WORD sosMIDIFadeSong ( WORD, WORD, WORD, BYTE, BYTE, WORD ); + +// functions for memory locking +VOID sosMIDICaps_Start( VOID ); +VOID sosMIDICaps_End( VOID ); +VOID sosMIDICbck_Start( VOID ); +VOID sosMIDICbck_End( VOID ); +VOID sosMIDIDigi_Start( VOID ); +VOID sosMIDIDigi_End( VOID ); +VOID sosMIDIDone_Start( VOID ); +VOID sosMIDIDone_End( VOID ); +VOID sosMIDIDq_Start( VOID ); +VOID sosMIDIDq_End( VOID ); +VOID sosMIDIInit_Start( VOID ); +VOID sosMIDIInit_End( VOID ); +VOID sosMIDIIns_Start( VOID ); +VOID sosMIDIIns_End( VOID ); +VOID sosMIDILoad_Start( VOID ); +VOID sosMIDILoad_End( VOID ); +VOID sosMIDIPause_Start( VOID ); +VOID sosMIDIPause_End( VOID ); +VOID sosMIDIPtr_Start( VOID ); +VOID sosMIDIPtr_End( VOID ); +VOID sosMIDISong_Start( VOID ); +VOID sosMIDISong_End( VOID ); +VOID sosMIDISt_Start( VOID ); +VOID sosMIDISt_End( VOID ); +VOID sosMIDITmpo_Start( VOID ); +VOID sosMIDITmpo_End( VOID ); +VOID sosMIDITmr_Start( VOID ); +VOID sosMIDITmr_End( VOID ); + +void StringOut( BYTE X, BYTE Y, BYTE * String, BYTE Color ); + +#pragma pack() + +#ifdef __cplusplus // ECH +} +#endif + +#endif diff --git a/CODE/RP/MUNGA_L4/sos/wc/SOSRES.H b/CODE/RP/MUNGA_L4/sos/wc/SOSRES.H new file mode 100644 index 0000000..91050dd --- /dev/null +++ b/CODE/RP/MUNGA_L4/sos/wc/SOSRES.H @@ -0,0 +1,110 @@ +/**************************************************************************** + + File : sosres.h + + Programmer(s) : Don Fowler, Nick Skrepetos + Date : + + Purpose : Include Files For Zortech C++ Compiler + + Last Updated : + +**************************************************************************** + Copyright(c) 1993,1994 Human Machine Interfaces + All Rights Reserved +****************************************************************************/ + +#define _SOS_RESOURCE +#ifndef _SOS_RESOURCE +#define _SOS_RESOURCE + +// structure for resource file header +typedef struct +{ + // file version + WORD wVersion; + + // file size + LONG dwFileSize; + + // number of resources in file + WORD wResCount; + + // offset of resource data from top of file + LONG dwResOffset; + + // offset of sync track from top of file + LONG dwSyncTrackOffset; + +} _RES_FILE_HEADER; + +// structure for resource block header +typedef struct +{ + // resource id + WORD wID; + + // resource type + WORD wResType; + + // offset of next block + LONG dwNextBlock; + + // size of the current resource information + LONG dwResSize; + + // rate to play block at + WORD wBlockRate; + + // id for the sync track to use + WORD wSyncTrackID; + +} _RES_BLOCK_HEADER; + +// structure for sync mark tag +typedef struct _tagSYNCMARK +{ + // ID of the type of mark being used + WORD wID; + + // location in data of sync mark + LONG dwSyncOffset; + + // length of sync block + LONG dwSyncSize; + + // start sample data + _SOS_START_SAMPLE sampleData; + +} _RES_SYNCMARK; + +typedef union +{ + // structure for sync mark tag + _RES_SYNCMARK syncMark; + +} _RES_TAG; + +// union for filter information for prepareWave +typedef union +{ + // filter type + WORD wFilterID; + + // structure for volume + struct volume + { + WORD wVolume; + }; + + // structure for delay + struct delay + { + WORD wDelaySamples; + }; + +} _SOS_FILTER; + + +#endif + diff --git a/CODE/RP/MUNGA_L4/sos/wc/vssver.scc b/CODE/RP/MUNGA_L4/sos/wc/vssver.scc new file mode 100644 index 0000000..faf0de0 Binary files /dev/null and b/CODE/RP/MUNGA_L4/sos/wc/vssver.scc differ diff --git a/CODE/RP/MUNGA_L4/vssver.scc b/CODE/RP/MUNGA_L4/vssver.scc new file mode 100644 index 0000000..52c9964 Binary files /dev/null and b/CODE/RP/MUNGA_L4/vssver.scc differ diff --git a/CODE/RP/OPT.mak b/CODE/RP/OPT.mak new file mode 100644 index 0000000..2f58a56 --- /dev/null +++ b/CODE/RP/OPT.mak @@ -0,0 +1,47 @@ +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 = /P32 + +$(CFG_FILE): opt.mak make.cfg $(BPATH) + copy &&| +-DLBE4;DEBUG_LEVEL=0;DEBUG_STREAM=cout;MESSAGE_BUFFERING=False +-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) diff --git a/CODE/RP/RP/BLOCKER.HPP b/CODE/RP/RP/BLOCKER.HPP new file mode 100644 index 0000000..bba37b4 --- /dev/null +++ b/CODE/RP/RP/BLOCKER.HPP @@ -0,0 +1,90 @@ +//===========================================================================// +// File: blocker.hh // +// Project: Red Planet // +// Contents: Blocker Implementation for Martian football // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 05/09/95 JM Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// +#if !defined(BLOCKER_HPP) +# define BLOCKER_HPP + +# if !defined(CRUSHER_HPP) +# include +# endif + + //########################################################################## + //########################### Blocker ################################ + //########################################################################## +class Blocker: + public Crusher + { + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Shared Data support + // + public: + static Derivation ClassDerivations; + static SharedData DefaultData; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Message Support + // + private: + static const HandlerEntry MessageHandlerEntries[]; + + protected: + static MessageHandlerSet MessageHandlers; + + public: + void + DropZoneReplyMessageHandler(DropZone__ReplyMessage *message); + void + ScoreMessageHandler(RPPlayer::ScoreMessage *message); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Model Support + // + public: + + typedef void + (Blocker::*Performance)(Scalar time_slice); + + void + SetPerformance(Performance performance) + { + Check(this); + activePerformance = (Simulation::Performance)performance; + } + + void + PlayerSimulation(Scalar time_slice); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Construction and Destruction + // + public: + + static Blocker* + Make(MakeMessage *creation_message); + + Blocker( + MakeMessage *creation_message, + SharedData &shared_data = DefaultData + ); + ~Blocker(); + + Logical + TestInstance() const; + + void + AddOffensivePlayer(OffensivePlayer &offensive_player); + + + }; + +#endif diff --git a/CODE/RP/RP/BOOSTER.HPP b/CODE/RP/RP/BOOSTER.HPP new file mode 100644 index 0000000..9f23aa4 --- /dev/null +++ b/CODE/RP/RP/BOOSTER.HPP @@ -0,0 +1,174 @@ +//===========================================================================// +// File: booster.hh // +// Project: Red Planet // +// Contents: Interface specification for vectored thrust vehicles // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 03/13/95 JM Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(BOOSTER_HPP) +# define BOOSTER_HPP + +# if !defined(VTVSUB_HPP) +# include +# endif + + //########################################################################## + //##################### Booster::SubsystemResource ################### + //########################################################################## + + struct Booster__SubsystemResource: + public VTVSubsystem::SubsystemResource + { + int boosterCount; + Scalar + burnTime, + boosterAcceleration; + }; + + //########################################################################## + //############################ Booster ############################### + //########################################################################## + + class Booster: + public VTVSubsystem + { + friend class VTV; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Messageing Support + // + public: + enum { + ActivateMessageID = VTVSubsystem::NextMessageID, + ConfigureMappablesMessageID, + ChooseButtonMessageID, + NextMessageID + }; + + void + ActivateMessageHandler( + ReceiverDataMessageOf *message + ); + void + ConfigureMappablesMessageHandler( + ReceiverDataMessageOf *message + ); + void + ChooseButtonMessageHandler( + ReceiverDataMessageOf *message + ); + + protected: + static const HandlerEntry + MessageHandlerEntries[]; + static MessageHandlerSet + MessageHandlers; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Shared Data support + // + public: + static Derivation ClassDerivations; + static SharedData DefaultData; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Attribute Support + // + public: + enum { + BurnTimeRemainingAttributeID = VTVSubsystem::NextAttributeID, + BoostersRemainingAttributeID, + ScaleFactorAttributeID, + SmokeDensityAttributeID, + PercentDoneAttributeID, + NextAttributeID + }; + + private: + static const IndexEntry AttributePointers[]; + + protected: + static AttributeIndexSet AttributeIndex; + + // + // public attribute declarations go here + // + public: + Scalar burnTimeRemaining; + Scalar boostersRemaining; + Vector3D scaleFactor; + Scalar smokeDensity; + Scalar percentDone; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Model Support + // + public: + enum { + BoosterBurning = Subsystem::StateCount, + StateCount + }; + + typedef void + (Booster::*Performance)(Scalar time_slice); + + void + BoosterSimulation(Scalar time_slice); + + void + SetPerformance(Performance performance) + { + Check(this); + activePerformance = (Simulation::Performance)performance; + } + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Damage Support + // + void + DeathReset(int reset_command); + void + DeathShutdown(int shutdown_command); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Construction and Destruction + // + public: + typedef Booster__SubsystemResource SubsystemResource; + + static int + CreateStreamedSubsystem( + NotationFile *model_file, + const char *model_name, + const char *subsystem_name, + SubsystemResource *subsystem_resource, + NotationFile *subsystem_file, + const ResourceDirectories *directories + ); + + Booster( + VTV *owner, + int subsystem_ID, + SubsystemResource *subsystem_resource + ); + ~Booster(); + + Logical + TestInstance() const; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Local data for the Booster class + // + protected: + Scalar burnTimeMax; + Scalar acceleration; + int maxBoosters; + }; + +#endif diff --git a/CODE/RP/RP/CRUSHER.HPP b/CODE/RP/RP/CRUSHER.HPP new file mode 100644 index 0000000..91c3f08 --- /dev/null +++ b/CODE/RP/RP/CRUSHER.HPP @@ -0,0 +1,98 @@ +//===========================================================================// +// File: crusher.hh // +// Project: Red Planet // +// Contents: Crusher Implementation for Martian football // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 05/09/95 JM Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// +#if !defined(CRUSHER_HPP) +# define CRUSHER_HPP + +# if !defined(RPPLAYER_HPP) +# include +# endif + + //########################################################################## + //########################### Crusher ################################ + //########################################################################## +class Crusher: + public RPPlayer + { + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Shared Data support + // + public: + static Derivation ClassDerivations; + static SharedData DefaultData; + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Message Support + // + private: + static const HandlerEntry MessageHandlerEntries[]; + + protected: + static MessageHandlerSet MessageHandlers; + + public: + void + DropZoneReplyMessageHandler(DropZone__ReplyMessage *message); + void + ScoreZoneReplyMessageHandler(ScoreZone__ReplyMessage *message); + void + ScoreMessageHandler(RPPlayer::ScoreMessage *message); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Model Support + // + public: + + typedef void + (Crusher::*Performance)(Scalar time_slice); + + void + SetPerformance(Performance performance) + { + Check(this); + activePerformance = (Simulation::Performance)performance; + } + + void + PlayerSimulation(Scalar time_slice); + + RPPlayer + *teamRunner, + *enemyRunner; + + void + InitTeamRunner(); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Construction and Destruction + // + public: + static Crusher* + Make(MakeMessage *creation_message); + + Crusher( + MakeMessage *creation_message, + SharedData &shared_data = DefaultData + ); + ~Crusher(); + + Logical + TestInstance() const; + + void + AddOffensivePlayer(OffensivePlayer &offensive_player); + + void + PointVTVTowardGoal(); + }; + +#endif diff --git a/CODE/RP/RP/DEMOPACK.HPP b/CODE/RP/RP/DEMOPACK.HPP new file mode 100644 index 0000000..0395ed4 --- /dev/null +++ b/CODE/RP/RP/DEMOPACK.HPP @@ -0,0 +1,142 @@ +//===========================================================================// +// File: demopack.hpp // +// Project: Red Planet // +// Contents: Interface specification for vectored thrust vehicles // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 03/11/95 GAC Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(DEMOPACK_HPP) +# define DEMOPACK_HPP + +# if !defined(RIVET_HPP) +# include +# endif + + struct DemolitionPack__ModelResource : + public Rivet::ModelResource + { + Scalar + blastRadiusSquared; + Scalar + detectionRadiusSquared; + Scalar + fuseTime; + Scalar + concussiveForce; + }; + + //########################################################################## + //#################### DemolitionPack ############################# + //########################################################################## + + class DemolitionPack : + public Rivet + { + public: + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Shared Data support + // + public: + static Derivation ClassDerivations; + static SharedData DefaultData; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Attribute Support + // + #if 0 + public: + enum { + NextAttributeID + }; + + private: + static const IndexEntry AttributePointers[]; + + protected: + static AttributeIndexSet AttributeIndex; + #endif + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Model support + // + public: + enum { + DefaultFlags = Mover::DefaultFlags|NoCollisionTestFlag + }; + + typedef void (DemolitionPack::*Performance)(Scalar time_slice); + + void + SetPerformance(Performance performance) + { + Check(this); + activePerformance = (Simulation::Performance)performance; + } + + void + MoveAndHunt(Scalar time_slice); + void + Hunt(Scalar time_slice); + void + ProcessCollision( + Scalar time_slice, + BoxedSolidCollision &collision, + const Point3D &old_position, + Damage *damage + ); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Construction and Destruction + // + public: + typedef DemolitionPack__ModelResource ModelResource; + + static DemolitionPack* + Make(MakeMessage *creation_message); + + DemolitionPack( + MakeMessage *creation_message, + SharedData &virtual_data = DefaultData + ); + ~DemolitionPack(); + + Logical + TestInstance() const; + + static int + CreateModelResource( + ResourceFile *resource_file, + const char *model_name, + NotationFile *model_file, + const ResourceDirectories *directories, + ModelResource* model = NULL + ); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Local Data + // + public: + Scalar + blastRadiusSquared; + + Scalar + detectionRadiusSquared; + + Scalar + fuseTime; + + Scalar + concussiveForce; + }; + + + +#endif + diff --git a/CODE/RP/RP/DEMOPACK.bak b/CODE/RP/RP/DEMOPACK.bak new file mode 100644 index 0000000..651dca8 --- /dev/null +++ b/CODE/RP/RP/DEMOPACK.bak @@ -0,0 +1,144 @@ +//===========================================================================// +// File: demopack.hpp // +// Project: Red Planet // +// Contents: Interface specification for vectored thrust vehicles // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 03/11/95 GAC Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(DEMOPACK_HPP) +# define DEMOPACK_HPP + +# if !defined(RIVET_HPP) +# include +# endif + + struct DemolitionPack__ModelResource : + public Rivet::ModelResource + { + Scalar + blastRadiusSquared; + Scalar + detectionRadiusSquared; + Scalar + fuseTime; + Scalar + concussiveForce; + }; + + //########################################################################## + //#################### DemolitionPack ############################# + //########################################################################## + + class DemolitionPack : + public Rivet + { + public: + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Shared Data support + // + public: + static Derivation ClassDerivations; + static SharedData DefaultData; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Attribute Support + // + #if 0 + public: + enum { + NextAttributeID + }; + + private: + static const IndexEntry AttributePointers[]; + + protected: + static AttributeIndexSet AttributeIndex; + #endif + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Model support + // + public: + enum { + DefaultFlags = Mover::DefaultFlags|NoCollisionTestFlag + }; + + typedef void (DemolitionPack::*Performance)(Scalar time_slice); + + void + SetPerformance(Performance performance) + { + Check(this); + activePerformance = (Simulation::Performance)performance; + } + + void + MoveAndHunt(Scalar time_slice); + void + SelfDestruct(Scalar time_slice); + void + Hunt(Scalar time_slice); + void + ProcessCollision( + Scalar time_slice, + BoxedSolidCollision &collision, + const Point3D &old_position, + Damage *damage + ); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Construction and Destruction + // + public: + typedef DemolitionPack__ModelResource ModelResource; + + static DemolitionPack* + Make(MakeMessage *creation_message); + + DemolitionPack( + MakeMessage *creation_message, + SharedData &virtual_data = DefaultData + ); + ~DemolitionPack(); + + Logical + TestInstance() const; + + static int + CreateModelResource( + ResourceFile *resource_file, + const char *model_name, + NotationFile *model_file, + const ResourceDirectories *directories, + ModelResource* model = NULL + ); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Local Data + // + public: + Scalar + blastRadiusSquared; + + Scalar + detectionRadiusSquared; + + Scalar + fuseTime; + + Scalar + concussiveForce; + }; + + + +#endif + diff --git a/CODE/RP/RP/RP.HPP b/CODE/RP/RP/RP.HPP new file mode 100644 index 0000000..3f1fccd --- /dev/null +++ b/CODE/RP/RP/RP.HPP @@ -0,0 +1,22 @@ +#if !defined(RP_HPP) +# define RP_HPP + +# if !defined(MUNGA_HPP) +# include +# endif + +# if !defined(NO_PRECOMPILED_HEADERS) +# if !defined(VTVSUB_HPP) +# include +# endif + +# if !defined(VTV_HPP) +# include +# endif + +# if !defined(VTVMPPR_HPP) +# include +# endif +# endif + +#endif diff --git a/CODE/RP/RP/RPCNSL.CPP b/CODE/RP/RP/RPCNSL.CPP new file mode 100644 index 0000000..40f2464 --- /dev/null +++ b/CODE/RP/RP/RPCNSL.CPP @@ -0,0 +1,99 @@ +//===========================================================================// +// 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 +#pragma hdrstop + +#if !defined(RPCNSL_HPP) +# include +#endif + +//~~~~~~~~~~~~~~~~~~ ConsolePlayerVTVScoredMessage ~~~~~~~~~~~~~~~~~~~~~~ +ConsolePlayerVTVScoredMessage:: + ConsolePlayerVTVScoredMessage(HostID player_host_ID): + NetworkClient::Message( + ConsolePlayerVTVScoredMessageID, + sizeof(ConsolePlayerVTVScoredMessage) + ) +{ + playerHostID = player_host_ID; +} + +//~~~~~~~~~~~~~~~~~~ ConsolePlayerVTVKilledMessage ~~~~~~~~~~~~~~~~~~~~~~ +ConsolePlayerVTVKilledMessage:: + ConsolePlayerVTVKilledMessage( + HostID player_host_ID, + HostID killer_host_ID + ): + NetworkClient::Message( + ConsolePlayerVTVKilledMessageID, + sizeof(ConsolePlayerVTVKilledMessage) + ) +{ + playerHostID = player_host_ID; + killerHostID = killer_host_ID; +} + +//~~~~~~~~~~~~~~~~~~ ConsolePlayerVTVBoosterMessage ~~~~~~~~~~~~~~~~~~~~~~ +ConsolePlayerVTVBoosterMessage:: + ConsolePlayerVTVBoosterMessage( + HostID player_host_ID, + int booster_on + ): + NetworkClient::Message( + ConsolePlayerVTVBoosterMessageID, + sizeof(ConsolePlayerVTVBoosterMessage) + ) +{ + playerHostID = player_host_ID; + boosterOn = booster_on; +} + +//~~~~~~~~~~~~~~~~~~ ConsolePlayerVTVScoreUpdateMessage ~~~~~~~~~~~~~~~~~~~~ +ConsolePlayerVTVScoreUpdateMessage:: + ConsolePlayerVTVScoreUpdateMessage( + HostID player_host_ID, + int score + ): + NetworkClient::Message( + ConsolePlayerVTVScoreUpdateMessageID, + sizeof(ConsolePlayerVTVScoreUpdateMessage) + ) +{ + playerHostID = player_host_ID; + playerScore = score; +} + +//~~~~~~~~~~~~~~~~~~ ConsolePlayerVTVDamagedMessage ~~~~~~~~~~~~~~~~~~~~~~ +ConsolePlayerVTVDamagedMessage:: + ConsolePlayerVTVDamagedMessage( + HostID player_host_ID, + HostID damager_host_ID, + int loss, + int points_transfered + ): + NetworkClient::Message( + ConsolePlayerVTVDamagedMessageID, + sizeof(ConsolePlayerVTVDamagedMessage) + ) +{ + playerHostID = player_host_ID; + damagerHostID = damager_host_ID; + damageLoss = loss; + pointsTransfered = points_transfered; +} + +//============================================================================== diff --git a/CODE/RP/RP/RPDIRECT.HPP b/CODE/RP/RP/RPDIRECT.HPP new file mode 100644 index 0000000..095a4ba --- /dev/null +++ b/CODE/RP/RP/RPDIRECT.HPP @@ -0,0 +1,80 @@ +//===========================================================================// +// File: rpdirect.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 // +// -------- --- ---------------------------------------------------------- // +// 12/12/95 JM Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined (RPDIRECT_HPP) +#define RPDIRECT_HPP + +# if !defined (DIRECTOR_HPP) +# include +# endif + + class RPPlayer; + + class RPCameraDirector : + public CameraDirector + { + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Shared Data support + // + public: + + static Derivation ClassDerivations; + static SharedData DefaultData; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Simulation Support + // + public: + typedef void + (RPCameraDirector::*Performance)(Scalar time_slice); + + void + SetPerformance(Performance performance) + { + Check(this); + activePerformance = (Simulation::Performance)performance; + } + + void + CreateRPCameraShip(Scalar); + + void + BeARPDirector(Scalar); + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Construction and Destruction Support + // + RPCameraDirector( + MakeMessage *creation_message, + SharedData &virtual_data = DefaultData + ); + + static RPCameraDirector* + RPCameraDirector::Make(CameraDirector::MakeMessage *creation_message); + + ~RPCameraDirector(); + + Logical + TestInstance() const; + + protected: + RPPlayer + *currentWatchedPlayer; + + Logical + martianFootball; + }; + +#endif diff --git a/CODE/RP/RP/RPMSSN.CPP b/CODE/RP/RP/RPMSSN.CPP new file mode 100644 index 0000000..6bb1539 --- /dev/null +++ b/CODE/RP/RP/RPMSSN.CPP @@ -0,0 +1,49 @@ +//===========================================================================// +// File: rpmssn.cc // +// Project: Red Planet // +// Contents: Implementation Details for missions // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 06/19/95 JM Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(RPMSSN_HPP) +# include +#endif + +//########################################################################## +//########################### Mission ################################ +//########################################################################## + +RPMission::RPMission( + NotationFile *notation_file, + ResourceFile *resource_file +): + Mission(notation_file, resource_file) +{ + Check(notation_file); + Check(resource_file); + +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +RPMission::~RPMission() +{ + +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + RPMission::SetPlayerData(NotationFile*) +{ + Fail("RPMission::SetPlayerData shouldn't be reached\n"); +} + diff --git a/CODE/RP/RP/RPMSSN.HPP b/CODE/RP/RP/RPMSSN.HPP new file mode 100644 index 0000000..264449a --- /dev/null +++ b/CODE/RP/RP/RPMSSN.HPP @@ -0,0 +1,51 @@ +//===========================================================================// +// File: rpmission.hh // +// Project: MUNGA Brick: Application // +// Contents: Interface specification for missions // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 05/19/95 JM Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(RPMSSN_HPP) +# define RPMSSN_HPP + +# if !defined(MISSION_HPP) +# include +# endif + + //########################################################################## + //########################### Mission ################################ + //########################################################################## + + + class RPMission : + public Mission + { + + public: + RPMission( + NotationFile *notation_file, + ResourceFile *resources + ); + + ~RPMission(); + + void + SetPlayerData(NotationFile *notation_file); + + Logical + ScoreCompressionOn() + { Check(this); return scoreCompression;} + + protected: + Logical + scoreCompression; + }; + +#endif diff --git a/CODE/RP/RP/RPREG.HPP b/CODE/RP/RP/RPREG.HPP new file mode 100644 index 0000000..9b03743 --- /dev/null +++ b/CODE/RP/RP/RPREG.HPP @@ -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(RPREG_HPP) +# define RPREG_HPP + +# if !defined(REGISTRY_HPP) +# include +# endif + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Registry ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + // + //-------------------------------------------------------------------- + // Registry + // + // Provides construction methods for entities. + // Provides access to a classes static data. + //-------------------------------------------------------------------- + // + + class RPRegistry: + public Registry + { + public: + // + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // Public interface + //-------------------------------------------------------------------- + //-------------------------------------------------------------------- + // + + // + //-------------------------------------------------------------------- + // Construction, Destruction, and testing + //-------------------------------------------------------------------- + // + RPRegistry(ResourceFile *resources); + ~RPRegistry(); + + // + //-------------------------------------------------------------- + // 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 diff --git a/CODE/RP/RP/RPTOOL.CPP b/CODE/RP/RP/RPTOOL.CPP new file mode 100644 index 0000000..b3a1ee3 --- /dev/null +++ b/CODE/RP/RP/RPTOOL.CPP @@ -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 +#pragma hdrstop + +#if !defined(RPTOOL_HPP) +# include +#endif + +#if !defined(FILEUTIL_HPP) +# include +#endif + +#if !defined(VTV_HPP) +# include +#endif + +#if !defined(SCORZONE_HPP) +# include +#endif + +#if !defined(RIVET_HPP) +# include +#endif + +#if !defined(DEMOPACK_HPP) +# include +#endif + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + RPTool::CreateMakeMessage( + const char* class_name, + Entity::MakeMessage *creation_message, + NotationFile *model_file, + const ResourceDirectories *directories + ) +{ + if (!stricmp(class_name,"VTVClassID")) + { + VTV::CreateMakeMessage( + (VTV::MakeMessage*)creation_message, + model_file, + directories + ); + return True; + } + else if (!stricmp(class_name,"ScoreZoneClassID")) + { + ScoreZone::CreateMakeMessage( + (ScoreZone::MakeMessage*)creation_message, + model_file, + directories + ); + return True; + } + + return + ApplicationTool::CreateMakeMessage( + class_name, + creation_message, + model_file, + directories + ); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +void + RPTool::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, "VTVClassID")) + { +#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", "RPVh"); + ops_file->AppendEntry(ops_file_data, NULL, (char *)NULL); +#endif + + model_resources.gameResourceID = + VTV::CreateModelResource( + resource_file, + model_name, + model_file, + directories + ); + model_resources.subsystemResourceID = + VTV::CreateSubsystemStream( + resource_file, + model_name, + model_file, + directories + ); + model_resources.skeletonResourceID = + VTV::CreateSkeletonStream( + resource_file, + model_name, + model_file, + directories + ); + model_resources.damageZoneResourceID = + VTV::CreateDamageZoneStream( + resource_file, + model_name, + model_file, + directories + ); + } + else if (!stricmp(model_class, "RivetClassID")) + { + model_resources.gameResourceID = + Rivet::CreateModelResource( + resource_file, + model_name, + model_file, + directories + ); + } + else if (!stricmp(model_class, "DemolitionPackClassID")) + { + model_resources.gameResourceID = + DemolitionPack::CreateModelResource( + resource_file, + model_name, + model_file, + directories + ); + } + else if (!stricmp(model_class, "ScoreZoneClassID")) + { + model_resources.gameResourceID = + ScoreZone::CreateModelResource( + resource_file, + model_name, + model_file, + directories + ); + } + else + { + ApplicationTool::CreateModelResource( + model_resources, + model_class, + resource_file, + model_name, + model_file, + directories + ); + } +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +ResourceDescription::ResourceID + RPTool::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, "VTVClassID")) + { + return + VTV::CreateControlMappingStream( + mapping_name, + mapping_file, + platformTool->GetControlMappingFunction(), + resource_file, + model_name, + model_file, + directories, + current_tool + ); + } + else + { + return -1; + } +} + diff --git a/CODE/RP/RP/RPTOOL.HPP b/CODE/RP/RP/RPTOOL.HPP new file mode 100644 index 0000000..fd19196 --- /dev/null +++ b/CODE/RP/RP/RPTOOL.HPP @@ -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(RPTOOL_HPP) +# define RPTOOL_HPP + +# if !defined(TOOL_HPP) +# include +# endif + + //########################################################################## + //############################ RPTool ################################ + //########################################################################## + + class RPTool: + 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: + RPTool(PlatformTool *platform): + ApplicationTool(platform) + {} + }; + +#endif + diff --git a/CODE/RP/RP/RUNNER.HPP b/CODE/RP/RP/RUNNER.HPP new file mode 100644 index 0000000..cf63122 --- /dev/null +++ b/CODE/RP/RP/RUNNER.HPP @@ -0,0 +1,94 @@ +//===========================================================================// +// File: runner.hh // +// Project: Red Planet // +// Contents: Runner Implementation for Martian football // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 05/09/95 JM Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// +#if !defined(RUNNER_HPP) +# define RUNNER_HPP + +# if !defined(RPPLAYER_HPP) +# include +# endif + + //########################################################################## + //########################### Runner ################################ + //########################################################################## +class Runner: + public RPPlayer + { + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Shared Data support + // + public: + static Derivation ClassDerivations; + static SharedData DefaultData; + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Message Support + // + private: + static const HandlerEntry MessageHandlerEntries[]; + + protected: + static MessageHandlerSet MessageHandlers; + + public: + void + ScoreZoneReplyMessageHandler(ScoreZone__ReplyMessage *message); + void + ScoreMessageHandler(ScoreMessage *message); + void + VehicleDeadMessageHandler(VehicleDeadMessage *message); + void + DropZoneReplyMessageHandler(DropZone__ReplyMessage *message); + + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Model Support + // + public: + + typedef void + (Runner::*Performance)(Scalar time_slice); + + void + SetPerformance(Performance performance) + { + Check(this); + activePerformance = (Simulation::Performance)performance; + } + + Time + dropZonePenaltyOver; + Scalar + scoreMultiplier; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Construction and Destruction + // + public: + Runner( + MakeMessage *creation_message, + SharedData &shared_data = DefaultData + ); + ~Runner() {} + + Logical + TestInstance() const; + + static Runner* + Make(MakeMessage *creation_message); + + void + AddOffensivePlayer(OffensivePlayer &offensive_player); + + }; + +#endif diff --git a/CODE/RP/RP/THRUSTER.HPP b/CODE/RP/RP/THRUSTER.HPP new file mode 100644 index 0000000..394e573 --- /dev/null +++ b/CODE/RP/RP/THRUSTER.HPP @@ -0,0 +1,161 @@ +//===========================================================================// +// File: vtvpwr.hh // +// Project: Red Planet // +// Contents: Interface specification for vectored thrust vehicles // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 01/23/95 JMA Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(THRUSTER_HPP) +# define THRUSTER_HPP + +# if !defined(VTVSUB_HPP) +# include +# endif + + class Joint; + + //########################################################################## + //################## Thruster::SubsystemResource ##################### + //########################################################################## + + struct Thruster__SubsystemResource: + public Subsystem::SubsystemResource + { + int jointIndex; + Scalar maxThrusterRotationRate; + Logical primeThruster; + }; + + //########################################################################## + //################### Thruster::UpdateRecord #################### + //########################################################################## + + struct Thruster__UpdateRecord : + public VTVSubsystem::UpdateRecord + { + Scalar + thrusterRotation; + }; + + //########################################################################## + //############################ Thruster ############################## + //########################################################################## + + class Thruster: + public Subsystem + { + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Shared Data support + // + public: + static Derivation ClassDerivations; + static SharedData DefaultData; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Message Support + // + #if 0 + private: + static const HandlerEntry MessageHandlerEntries[]; + + protected: + static MessageHandlerSet MessageHandlers; + #endif + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Attribute Support + // + public: + enum { + ThrusterOffsetAttributeID = Subsystem::NextAttributeID, + ThrusterPositionAttributeID, + CurrentAccelerationAttributeID, + CurrentHeightAttributeID, + MaxThrusterRotationRateAttributeID, + MomentArmAttributeID, + MomentArmLengthAttributeID, + NextAttributeID + }; + + private: + static const IndexEntry AttributePointers[]; + + protected: + static AttributeIndexSet AttributeIndex; + + // + // public attribute declarations go here + // + public: + Point3D thrusterOffset; + Joint *thrusterPosition; + Scalar + currentAcceleration, + currentHeight, + maxThrusterRotationRate, + powerScale, + momentArmLength; + Vector3D + momentArm; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Model Support + // + public: + typedef void + (Thruster::*Performance)(Scalar time_slice); + typedef Thruster__UpdateRecord UpdateRecord; + + void + PrimeThruster(Scalar time_slice); + void + SlaveThruster(Scalar time_slice); + void + PrimeDeadReckon(Scalar time_slice); + void + SlaveDeadReckon(Scalar time_slice); + + void + SetPerformance(Performance performance) + { + Check(this); + activePerformance = (Simulation::Performance)performance; + } + + VTV* + GetEntity() + {Check(this); return Cast_Object(VTV*, Subsystem::GetEntity());} + + protected: + void + WriteUpdateRecord(Simulation::UpdateRecord *message, int update_model); + void + ReadUpdateRecord(Simulation::UpdateRecord *message); + + Scalar + updatedPosition; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Construction and Destruction + // + public: + typedef Thruster__SubsystemResource SubsystemResource; + Thruster( + VTV *owner, + int subsystem_ID, + SubsystemResource *subsystem_resource + ); + ~Thruster(); + + Logical + TestInstance() const; + }; + +#endif diff --git a/CODE/RP/RP/VTVPWR.CPP b/CODE/RP/RP/VTVPWR.CPP new file mode 100644 index 0000000..71a6822 --- /dev/null +++ b/CODE/RP/RP/VTVPWR.CPP @@ -0,0 +1,154 @@ +//===========================================================================// +// File: vtvpwr.cc // +// Project: Red Planet // +// Contents: Implementation details of vectored thrust vehicles // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 01/23/95 JMA Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(VTVPWR_HPP) +# include +#endif + +#if !defined(THRUSTER_HPP) +# include +#endif + +#if !defined(VTV_HPP) +# include +#endif + +//############################################################################# +// Shared Data Support +// +VTVPower::SharedData + VTVPower::DefaultData( + VTVPower::ClassDerivations, + VTVPower::MessageHandlers, + VTVPower::AttributeIndex, + VTVPower::StateCount + ); + +Derivation + VTVPower::ClassDerivations( + Subsystem::ClassDerivations, + "VTVPower" + ); + +//############################################################################# +// Attribute Support +// +const VTVPower::IndexEntry + VTVPower::AttributePointers[]= +{ + ATTRIBUTE_ENTRY(VTVPower, MaxAccelerationOutput, maxAccelerationOutput) +}; + +VTVPower::AttributeIndexSet + VTVPower::AttributeIndex( + ELEMENTS(VTVPower::AttributePointers), + VTVPower::AttributePointers, + Subsystem::AttributeIndex + ); + +//############################################################################# +// Model Support +// +void + VTVPower::PowerSimulation(Scalar) +{ + Check(this); + + // + //-------------------------------------------------------------------------- + // Get pointers to the other subsystems we will have to deal with inside the + // VTV + //-------------------------------------------------------------------------- + // + VTV* vtv = GetEntity(); + Check(vtv); + Scalar average_moment_arm = 0.0f; + + // + //--------------------------------------- + // Find out the average moment arm length + //--------------------------------------- + // + JointSubsystem *joint_subsystem = vtv->GetJointSubsystem(); + Check(joint_subsystem); + Verify(joint_subsystem->GetJointCount()); + + int i; + for (i=0; iGetSubsystem(VTV::Thruster1Subsystem + i); + + if(thruster != NULL) + { + average_moment_arm += thruster->momentArmLength; + } + } + average_moment_arm /= joint_subsystem->GetJointCount(); + Scalar average_accel = maxAccelerationOutput / joint_subsystem->GetJointCount(); + Check_Fpu(); + + for (i=0; iGetSubsystem(VTV::Thruster1Subsystem + i); + + if(thruster != NULL) + { + Check(thruster); + Verify(!Small_Enough(thruster->momentArmLength)); + thruster->powerScale = average_moment_arm / thruster->momentArmLength; + thruster->currentAcceleration = average_accel * thruster->powerScale; + } + } + Check_Fpu(); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +VTVPower::VTVPower( + VTV *entity, + int subsystem_ID, + SubsystemResource *subsystem_resource +): + Subsystem(entity, subsystem_ID, subsystem_resource, DefaultData) +{ + if (entity->GetInstance() != VTV::ReplicantInstance) + { + SetPerformance(&VTVPower::PowerSimulation); + } + + maxAccelerationOutput = subsystem_resource->maxAcceleration; + Check_Fpu(); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +VTVPower::~VTVPower() +{ + Check(this); + Check_Fpu(); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + VTVPower::TestInstance() const +{ + return IsDerivedFrom(ClassDerivations); +} + diff --git a/CODE/RP/RP/VTVPWR.HPP b/CODE/RP/RP/VTVPWR.HPP new file mode 100644 index 0000000..1ab987f --- /dev/null +++ b/CODE/RP/RP/VTVPWR.HPP @@ -0,0 +1,118 @@ +//===========================================================================// +// File: vtvpwr.hh // +// Project: Red Planet // +// Contents: Interface specification for vectored thrust vehicles // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 01/23/95 JMA Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(VTVPWR_HPP) +# define VTVPWR_HPP + +# if !defined(VTVSUB_HPP) +# include +# endif + + //########################################################################## + //#################### Subsystem::SubsystemResource ################## + //########################################################################## + + struct VTVPower__SubsystemResource: + public Subsystem::SubsystemResource + { + Scalar + maxAcceleration; + }; + + //########################################################################## + //############################ VTVPower ############################## + //########################################################################## + + class VTVPower: + public Subsystem + { + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Shared Data support + // + public: + static Derivation ClassDerivations; + static SharedData DefaultData; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Message Support + // + #if 0 + private: + static const HandlerEntry MessageHandlerEntries[]; + + protected: + static MessageHandlerSet MessageHandlers; + #endif + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Attribute Support + // + public: + enum { + MaxAccelerationOutputAttributeID = Subsystem::NextAttributeID, + NextAttributeID + }; + + private: + static const IndexEntry AttributePointers[]; + + protected: + static AttributeIndexSet AttributeIndex; + + // + // public attribute declarations go here + // + public: + Scalar + maxAccelerationOutput; + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Model Support + // + public: + typedef void + (VTVPower::*Performance)(Scalar time_slice); + + void + PowerSimulation(Scalar time_slice); + + void + SetPerformance(Performance performance) + { + Check(this); + activePerformance = (Simulation::Performance)performance; + } + + VTV* + GetEntity() + {Check(this); return Cast_Object(VTV*, Subsystem::GetEntity());} + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + // Construction and Destruction + // + public: + typedef VTVPower__SubsystemResource SubsystemResource; + + VTVPower( + VTV *owner, + int subsystem_ID, + SubsystemResource *subsystem + ); + ~VTVPower(); + + Logical + TestInstance() const; + }; + +#endif diff --git a/CODE/RP/RP/VTVSUB.CPP b/CODE/RP/RP/VTVSUB.CPP new file mode 100644 index 0000000..686f754 --- /dev/null +++ b/CODE/RP/RP/VTVSUB.CPP @@ -0,0 +1,174 @@ +//===========================================================================// +// File: subsystm.cc // +// Project: MUNGA Brick: Entity Manager // +// Contents: Interface specification of entity subsystem class // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 01/24/95 JMA Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. All Rights reserved // +// PROPRIETARY AND CONFIDENTIAL // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(VTVSUB_HPP) +# include +#endif + +#if !defined(VTV_HPP) +# include +#endif + +#if !defined(APP_HPP) +# include +#endif + +#if !defined(VTVMPPR_HPP) +# include +#endif + +VTVSubsystem::SharedData + VTVSubsystem::DefaultData( + VTVSubsystem::ClassDerivations, + VTVSubsystem::MessageHandlers, + VTVSubsystem::AttributeIndex, + VTVSubsystem::StateCount + ); +Derivation + VTVSubsystem::ClassDerivations(Subsystem::ClassDerivations,"VTVSubsystem"); + +//############################################################################# +// Messaging Support +// +//const Receiver::HandlerEntry +// VTVSubsystem::MessageHandlerEntries[]= +//{ +//}; +// +//Receiver::MessageHandlerSet +// VTVSubsystem::MessageHandlers( +// ELEMENTS(VTVSubsystem::MessageHandlerEntries), +// VTVSubsystem::MessageHandlerEntries, +// Subsystem::MessageHandlers +// ); + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +VTVSubsystem::VTVSubsystem( + VTV *entity, + int subsystem_ID, + SubsystemResource *model, + SharedData &shared_data, + // these two fields added 12-28-95 by cpb + void *control_destination, + Receiver::MessageID message_id +): + Subsystem(entity, subsystem_ID, model, shared_data) +{ + controlDestination = control_destination; + controlMessageID = message_id; + Check_Fpu(); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +VTVSubsystem::~VTVSubsystem() +{ + Check(this); + Check_Fpu(); +} + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +Logical + VTVSubsystem::TestInstance() const +{ + return IsDerivedFrom(ClassDerivations); +} + +void + VTVSubsystem::EnterConfiguration( + ControlsButton *direct_target, + Receiver *receiver, + Receiver::MessageID active_message_id, + Receiver::MessageID config_message_id + ) +{ + Check(this); + + Check(application); + ControlsManager + *controls_mgr = application->GetControlsManager(); + Check(controls_mgr); + + //------------------------------------------- + // Tell controls mgr that we're configuring + //------------------------------------------- + controls_mgr->StartMappableButtonsConfigure( + direct_target, // direct mapping (if used) + receiver, // targeted receiver + receiver, // dependant + active_message_id, // activation message ID (if used) + (ModeMask) 0, // remove_mode_mask + (ModeMask) 0 // add_mode_mask + ); + + //----------------------------------------------------------- + // Create temporary mappings for configuration + //----------------------------------------------------------- + Check(GetEntity()); + + VTVControlsMapper + *mapper = (VTVControlsMapper*) GetEntity()->GetSubsystem( + VTV::ControlsMapperSubsystem + ); + + if (mapper != NULL) + { + Check(mapper); + + mapper->CreateTemporaryEventMappings( + receiver, + config_message_id + ); + } + Check_Fpu(); +} + +void + VTVSubsystem::ExitConfiguration() +{ + Check(application); + ControlsManager + *controls_mgr = application->GetControlsManager(); + Check(controls_mgr); + + //------------------------------------------------ + // Tell controls mgr we're through + //------------------------------------------------ + controls_mgr->StopMappableButtonsConfigure( + (ModeMask) 0, // remove_mode_mask + (ModeMask) 0 // add_mode_mask + ); + //----------------------------------------------------------- + // Remove temporary mappings for configuration + //----------------------------------------------------------- + Check(GetEntity()); + + VTVControlsMapper + *mapper = (VTVControlsMapper*) GetEntity()->GetSubsystem( + VTV::ControlsMapperSubsystem + ); + + if (mapper != NULL) + { + Check(mapper); + + mapper->RemoveTemporaryEventMappings(); + } + Check_Fpu(); +} + diff --git a/CODE/RP/RP/VTVSUB.HPP b/CODE/RP/RP/VTVSUB.HPP new file mode 100644 index 0000000..85e7e64 --- /dev/null +++ b/CODE/RP/RP/VTVSUB.HPP @@ -0,0 +1,102 @@ +//===========================================================================// +// File: subsystm.hh // +// Project: MUNGA Brick: Entity Manager // +// Contents: Interface specification of entity subsystem class // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 01/24/95 JMA Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. All Rights reserved // +// PROPRIETARY AND CONFIDENTIAL // +//===========================================================================// + +#if !defined(VTVSUB_HPP) +# define VTVSUB_HPP + +# if !defined(SUBSYSTM_HPP) +# include +# endif + +# if !defined(CONTROLS_HPP) +# include +# endif + + class VTV; + + //########################################################################## + //######################## Subsystem ################################# + //########################################################################## + + class VTVSubsystem: + public Subsystem + { + friend class VTV; + + //########################################################################## + // Shared Data Support + // + public: + static Derivation ClassDerivations; + static SharedData DefaultData; + + //########################################################################## + // Messaging support + // + + // No messages handled here + + //########################################################################## + // Construction and Destruction Support + // + public: + ~VTVSubsystem(); + + Logical + TestInstance() const; + + protected: + VTVSubsystem( + VTV *entity, + int subsystem_id, + SubsystemResource *model, + SharedData &shared_data, + // these two fields added 12-28-95 by cpb + void *control_destination = NULL, + Receiver::MessageID message_id = (Receiver::MessageID) 0 + ); + + //########################################################################## + // Model support + // + public: + VTV* + GetEntity() + {return (VTV*)Subsystem::GetEntity();} + + //########################################################################## + // Mapping support + // + protected: + void + EnterConfiguration( + ControlsButton *direct_target, + Receiver *receiver, + Receiver::MessageID active_message_id, + Receiver::MessageID config_message_id + ), + ExitConfiguration(); + + // 'controlDestination' is a pointer to the "thing" that a button + // is mapped to (if 'direct-mapped'), and 'controlMessageID' indicates + // the message ID that the button is mapped to (if 'event-mapped'). + // These values must be set appropriately in order for gauges to be + // able to determine ownership of mapped buttons. + void + *controlDestination; // OBSOLETE? + + Receiver::MessageID // OBSOLETE? + controlMessageID; + }; + +#endif diff --git a/CODE/RP/RP/mssccprj.scc b/CODE/RP/RP/mssccprj.scc new file mode 100644 index 0000000..e25ffe7 --- /dev/null +++ b/CODE/RP/RP/mssccprj.scc @@ -0,0 +1,5 @@ +SCC = This is a Source Code Control file + +[rp.mak] +SCC_Aux_Path = "M:\VWESS" +SCC_Project_Name = "$/Tesla_rp/RP", CKWAAAAA diff --git a/CODE/RP/RP/opt/opt.cfg b/CODE/RP/RP/opt/opt.cfg new file mode 100644 index 0000000..a06163c --- /dev/null +++ b/CODE/RP/RP/opt/opt.cfg @@ -0,0 +1,34 @@ +-DLBE4;DEBUG_LEVEL=0;DEBUG_STREAM=cout;MESSAGE_BUFFERING=False +-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 +-Id:\tesla_rp\rp_l4;d:\tesla_rp\rp;d:\tesla_rp\munga_l4;d:\tesla_rp\munga_l4\libdpl;d:\tesla_rp\munga_l4\libdpl\dvs;d:\tesla_rp\munga_l4\libdpl\dpl;d:\tesla_rp\munga_l4\sos\bc4;d:\tesla_rp\munga_l4\netnub;d:\tesla_rp\munga;d:\bc5\include +-H +-H=rpopt.csm +-Hc +-nd:\tesla_rp\rp\opt diff --git a/CODE/RP/RP/rp.mak b/CODE/RP/RP/rp.mak new file mode 100644 index 0000000..d83f152 --- /dev/null +++ b/CODE/RP/RP/rp.mak @@ -0,0 +1,96 @@ +.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 RP_ROOT +!error RP_ROOT macro is not defined +!endif + +TARGET_DIR = $(RP_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 = rp$(BTYPE).csm + +#------------------------------------------------------------------------------ +# Library targets +# +all: $(CFG_FILE) $(TARGET_DIR)\rp.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 + +{$(RP_ROOT)}.asm{$(TARGET_DIR)}.obj: + tasm32 -ml $(TASM_OPTIONS) -i$(RP_ROOT) $<,$@ >>error.log + +#------------------------------------------------------------------------------ +# Red Planet library +# +RP_OBJS = \ + ?vtvsub.obj \ + ?vtv.obj \ + ?vtvmppr.obj \ + ?vtvpwr.obj \ + ?thruster.obj \ + ?booster.obj \ + ?chute.obj \ + ?weapsys.obj \ + ?rivet.obj \ + ?demopack.obj \ + ?rpplayer.obj \ + ?rpdirect.obj \ + ?crusher.obj \ + ?runner.obj \ + ?blocker.obj \ + ?scorzone.obj \ + ?rpreg.obj \ + ?rpmssn.obj \ + ?rpcnsl.obj \ + ?rptool.obj + +$(RP_OBJS:?=): $(CFG_FILE) + +$(TARGET_DIR)\rp.lib: $(RP_OBJS:?=) $(RP_ROOT)\rp.mak + tlib $@ $(LIB_OPTIONS) @&&| +$(RP_OBJS:?=$(LIB_PREFIX)) +| >>error.log diff --git a/CODE/RP/RP/vssver.scc b/CODE/RP/RP/vssver.scc new file mode 100644 index 0000000..bda2ba7 Binary files /dev/null and b/CODE/RP/RP/vssver.scc differ diff --git a/CODE/RP/RPL4.PTH b/CODE/RP/RPL4.PTH new file mode 100644 index 0000000..3ee0bd5 --- /dev/null +++ b/CODE/RP/RPL4.PTH @@ -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 RP_ROOT +!error RP_ROOT macro is not defined +!endif + +INCLUDE_PATH = $(RPL4_ROOT);$(RP_ROOT);$(MUNGAL4_ROOT);$(DPL_ROOT);$(DPL_ROOT)\dvs;$(DPL_ROOT)\dpl;$(SOS_ROOT)\bc4;$(NETNUB_ROOT);$(MUNGA_ROOT);$(BC_ROOT)\include +LIBRARY_PATH = $(RPL4_ROOT)\$(BTYPE);$(RP_ROOT)\$(BTYPE);$(MUNGAL4_ROOT)\$(BTYPE);$(DPL_ROOT);$(MUNGA_ROOT)\$(BTYPE);$(BC_ROOT)\lib diff --git a/CODE/RP/RP_L4/RPL4.HPP b/CODE/RP/RP_L4/RPL4.HPP new file mode 100644 index 0000000..044cd12 --- /dev/null +++ b/CODE/RP/RP_L4/RPL4.HPP @@ -0,0 +1,12 @@ +#if !defined(RPL4_HPP) +# define RPL4_HPP + +# if !defined(RP_HPP) +# include +# endif + +# if !defined(MUNGAL4_HPP) +# include +# endif + +#endif diff --git a/CODE/RP/RP_L4/RPL4APP.HPP b/CODE/RP/RP_L4/RPL4APP.HPP new file mode 100644 index 0000000..8d9ef10 --- /dev/null +++ b/CODE/RP/RP_L4/RPL4APP.HPP @@ -0,0 +1,64 @@ +//===========================================================================// +// 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(RPL4APP_HPP) +# define RPL4APP_HPP + +# if !defined(L4APP_HPP) +# include +# endif + + //########################################################################## + //###################### RP4L4Application ############################ + //########################################################################## + + class RPL4Application: + public L4Application + { + public: + RPL4Application( + ResourceFile *resource_file, + ClassID class_ID=L4ApplicationClassID, + SharedData &shared_data=DefaultData + ); + ~RPL4Application(); + + private: + Registry* + MakeRegistry(); + + VideoRenderer* + MakeVideoRenderer(); + + AudioRenderer* + MakeAudioRenderer(); + + GaugeRenderer* + MakeGaugeRenderer(); + + ModeManager* + MakeModeManager(); + + Mission* + MakeMission( + NotationFile *notation_file, + ResourceFile *resources + ); + + Entity* + MakeViewpointEntity(Entity__MakeMessage *); + }; + +#endif + diff --git a/CODE/RP/RP_L4/RPL4ARND.CPP b/CODE/RP/RP_L4/RPL4ARND.CPP new file mode 100644 index 0000000..5daf716 --- /dev/null +++ b/CODE/RP/RP_L4/RPL4ARND.CPP @@ -0,0 +1,46 @@ +//===========================================================================// +// File: rpl4arnd.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 +#pragma hdrstop + +#if !defined(RPL4ARND_HPP) +# include +#endif + +// +//############################################################################# +// RPL4AudioRenderer +//############################################################################# +// +RPL4AudioRenderer::RPL4AudioRenderer( + RendererRate render_rate, + Logical mission_review_mode +): + L4AudioRenderer( + render_rate, + mission_review_mode + ) +{ +} + +// +//############################################################################# +// ~RPL4AudioRenderer +//############################################################################# +// +RPL4AudioRenderer::~RPL4AudioRenderer() +{ +} + diff --git a/CODE/RP/RP_L4/RPL4ARND.HPP b/CODE/RP/RP_L4/RPL4ARND.HPP new file mode 100644 index 0000000..41c9534 --- /dev/null +++ b/CODE/RP/RP_L4/RPL4ARND.HPP @@ -0,0 +1,41 @@ +//===========================================================================// +// File: rpl4arnd.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(RPL4ARND_HPP) +# define RPL4ARND_HPP + +# if !defined(L4AUDRND_HPP) +# include +# endif + + //~~~~~~~~~~~~~~~~~~~~~~~~~ RPL4AudioRenderer ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class RPL4AudioRenderer: + public L4AudioRenderer + { + public: + // + //----------------------------------------------------------------------- + // Construction, Destruction, Testing + //----------------------------------------------------------------------- + // + RPL4AudioRenderer( + RendererRate render_rate, + Logical mission_review_mode + ); + ~RPL4AudioRenderer(); + }; + +#endif + diff --git a/CODE/RP/RP_L4/RPL4GRND.HPP b/CODE/RP/RP_L4/RPL4GRND.HPP new file mode 100644 index 0000000..dd54cd1 --- /dev/null +++ b/CODE/RP/RP_L4/RPL4GRND.HPP @@ -0,0 +1,62 @@ +//===========================================================================// +// 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(RPL4GRND_HPP) +# define RPL4GRND_HPP + +# if !defined(L4GREND_HPP) +# include +# endif + + + //~~~~~~~~~~~~~~~~~~~~~~~~~~ RPL4GaugeRenderer ~~~~~~~~~~~~~~~~~~~~~~~~~~ + + class RPL4GaugeRenderer: + public L4GaugeRenderer + { + public: + + // + //-------------------------------------------------------------------- + // Construction, Destruction, Testing + //-------------------------------------------------------------------- + // + RPL4GaugeRenderer(); + ~RPL4GaugeRenderer(); + + Logical + TestInstance() const; + + void + NotifyOfNewInterestingEntity(Entity *entity); + void + NotifyOfBecomingUninterestingEntity(Entity *entity); + // + //-------------------------------------------------------------------- + // LoadMissionImplementation + // ShutdownImplementation + // SuspendImplementation + // ResumeImplementation + // + // These are virtual functions defined by the Renderer class. + // Derived classes must call these methods. + //-------------------------------------------------------------------- + // + void + LoadMissionImplementation(Mission *mission); + void + ShutdownImplementation(); + }; + +#endif + diff --git a/CODE/RP/RP_L4/RPL4MODE.CPP b/CODE/RP/RP_L4/RPL4MODE.CPP new file mode 100644 index 0000000..2c257cc --- /dev/null +++ b/CODE/RP/RP_L4/RPL4MODE.CPP @@ -0,0 +1,84 @@ +//==========================================================================// +// File: RPL4MODE.CPP // +// Project: MUNGA Brick: Controls Manager // +// Contents: Interface specification for BT LBE4 Controls // +//--------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ----------------------------------------------------------// +// 03/08/96 CPB Built from BTL4MODE.CPP // +//--------------------------------------------------------------------------// +// Copyright (C) 1994-1996, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//==========================================================================// + +#include +#pragma hdrstop + +#if !defined(RPL4MODE_HPP) +# include +#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[] = + { + {"ModeNonConfig", RPL4ModeManager::ModeNonConfig}, + {"ModeConfigReady", RPL4ModeManager::ModeConfigReady}, + {"ModeConfigOn", RPL4ModeManager::ModeConfigOn}, + {"ModePreset1", RPL4ModeManager::ModePreset1}, + {"ModePreset2", RPL4ModeManager::ModePreset2}, + {"ModePreset3", RPL4ModeManager::ModePreset3}, + {"ModePreset4", RPL4ModeManager::ModePreset4}, + {"ModePreset5", RPL4ModeManager::ModePreset5}, + {"ModePreset6", RPL4ModeManager::ModePreset6}, + {"ModeBasic", RPL4ModeManager::ModeBasic}, + {"ModeStandard", RPL4ModeManager::ModeStandard}, + {"ModeIntercom", RPL4ModeManager::ModeIntercom}, + {"ModeConfiguring", RPL4ModeManager::ModeConfiguring}, + { NULL, (ModeMask)0} + }; + +Logical + RPL4ModeManager::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); +} + + diff --git a/CODE/RP/RP_L4/RPL4MODE.HPP b/CODE/RP/RP_L4/RPL4MODE.HPP new file mode 100644 index 0000000..1ce9b39 --- /dev/null +++ b/CODE/RP/RP_L4/RPL4MODE.HPP @@ -0,0 +1,98 @@ +//===========================================================================// +// File: rpl4mode.hpp // +// Project: Battletech // +// Contents: RPL4 controls // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 03/08/96 CPB Created from BRL4MODE.HPP // +//---------------------------------------------------------------------------// +// Copyright (C) 1996, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(RPL4MODE_HPP) +# define RPL4MODE_HPP + +# if !defined(MODE_HPP) +# include +# endif + + + //######################################################################### + //########################## RPL4ControlsManager ########################## + //######################################################################### + class RPL4ModeManager: + public ModeManager + { + public: + enum + { + }; + //------------------------------------------------------------------- + // Construction/destruction/verification + //------------------------------------------------------------------- + public: + RPL4ModeManager(ModeMask initial_mask): + ModeManager(initial_mask) + {} + + //------------------------------------------------------------------- + // Mode control + //------------------------------------------------------------------- + enum + { + ModeNonConfigBit = ModeManager::nextModeBit, + ModeConfigReadyBit, + ModeConfigOnBit, + ModePreset1Bit, + ModePreset2Bit, + ModePreset3Bit, + ModePreset4Bit, + ModePreset5Bit, + ModePreset6Bit, + + ModeBasicBit, + ModeStandardBit, + + ModeIntercomBit + }; + enum + { + ModePreset1 = 1L< +# endif + + //########################################################################## + //########################### RPL4Mission ############################ + //########################################################################## + + class RPL4Mission: + public RPMission + { + public: + RPL4Mission( + NotationFile *notation_file, + ResourceFile *resources + ); + ~RPL4Mission(); + + Logical + TestInstance() const; + + void + SetPlayerData(NotationFile *notation_file); + }; + +#endif diff --git a/CODE/RP/RP_L4/RPL4PB.HPP b/CODE/RP/RP_L4/RPL4PB.HPP new file mode 100644 index 0000000..e2814c8 --- /dev/null +++ b/CODE/RP/RP_L4/RPL4PB.HPP @@ -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(RPL4PB_HPP) +# define RPL4PB_HPP + +# if !defined(RPL4APP_HPP) +# include +# endif + +# if !defined(L4SPLR_HPP) +# include +# endif + + //########################################################################## + //####################### RPSpoolerTask ############################## + //########################################################################## + + class RPSpoolerTask: + public SpoolerTask + { + public: + RPSpoolerTask(); + ~RPSpoolerTask(); + + void + DispatchPacket(NetworkPacket *packet); + long + GetTimeBias(); + }; + + //########################################################################## + //#################### RPPlaybackApplication ########################## + //########################################################################## + + class RPL4PlaybackApplication: + public RPL4Application + { + public: + RPL4PlaybackApplication( + ResourceFile *resource, + SpoolFile *spool_file = NULL + ); + ~RPL4PlaybackApplication(); + + 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 diff --git a/CODE/RP/RP_L4/RPL4TOOL.CPP b/CODE/RP/RP_L4/RPL4TOOL.CPP new file mode 100644 index 0000000..b31a7f9 --- /dev/null +++ b/CODE/RP/RP_L4/RPL4TOOL.CPP @@ -0,0 +1,158 @@ +//===========================================================================// +// File: rp4lbe4.cc // +// 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 // +//===========================================================================// + +#include +#pragma hdrstop + +#if !defined(RPTOOL_HPP) +# include +#endif + +#if !defined(RPL4MODE_HPP) +# include +#endif + +#if !defined(L4TOOL_HPP) +# include +#endif + +#if !defined(RPL4VER_HPP) +# include +#endif + + +class RPL4Tool: +public L4Tool +{ +public: + RPL4Tool(); + ~RPL4Tool(); + + Logical + ConvertStringToModeMask( + const char *string, + ModeMask *returned_value_ptr + ); + +protected: + RPL4ModeManager + *modeManager; +}; + +//---------------------------------------------------------------------- +RPL4Tool::RPL4Tool() : + L4Tool() +{ + Check_Pointer(this); + + modeManager = new RPL4ModeManager(RPL4ModeManager::ModeInitial); + Register_Object(modeManager); + +// gaugeAlarmManager = new RPL4GaugeAlarmManager(); +// Register_Object(gaugeAlarmManager); + Check_Fpu(); +} + +//---------------------------------------------------------------------- +RPL4Tool::~RPL4Tool() +{ +// Check(this); +// Unregister_Object(gaugeAlarmManager); +// delete gaugeAlarmManager; +// gaugeAlarmManager = NULL; + + Unregister_Object(modeManager); + delete modeManager; + modeManager = NULL; + Check_Fpu(); +} + +//---------------------------------------------------------------------- +Logical + RPL4Tool::ConvertStringToModeMask( + const char *name, + ModeMask *returned_value + ) +{ +// Check(this); + + Check_Pointer(name); + Check_Pointer(returned_value); + Check(modeManager); + + Check_Fpu(); + return modeManager->ModeStringLookup(name, returned_value); +} + +//########################################################################## +//################## RP4L4Application Globals ######################## +//########################################################################## + +extern const char* const ProgName; +const char* const ProgName = "rpl4tool"; + +// +//############################################################################# +// main +//############################################################################# +// +int + main(int argc, char *argv[]) +{ + int status; + if (argc < 3) + { +Usage: + DEBUG_STREAM << "Building Usage: rpl4tool -b rpl4.bld [res2.bld]\n" + << " Listing Usage: rpl4tool -l rpl4.res [res2.res ...]\n"; + status = 1; + } + else + { + RPL4Tool + rpl4_tool; + RPTool + rp_l4_tool(&rpl4_tool); + L4AudioCreateSymbols + create_symbols; + + if (!strcmp(argv[1], "-b")) + { + status = + rp_l4_tool.BuildResources( + argc-1, + &argv[1], + create_symbols, + MINOR_DATA_VERSION + ); + } + else if (!strcmp(argv[1], "-l")) + { + status = + rp_l4_tool.ListResources( + argc-1, + &argv[1] + ); + } + else + { + DEBUG_STREAM << "Error: Unknown tool switch!\n"; + goto Usage; + } + } + + Stop_Registering(); + return status; +} + diff --git a/CODE/RP/RP_L4/RPL4VER.HPP b/CODE/RP/RP_L4/RPL4VER.HPP new file mode 100644 index 0000000..60ce3ff --- /dev/null +++ b/CODE/RP/RP_L4/RPL4VER.HPP @@ -0,0 +1,11 @@ +#if !defined(RPL4VER_HPP) +# define RPL4VER_HPP + +# define MAJOR_DATA_VERSION 3 +# define RELEASE_VERSION 0 +# define MINOR_DATA_VERSION 2 + +#endif + + + diff --git a/CODE/RP/RP_L4/RPL4VID.HPP b/CODE/RP/RP_L4/RPL4VID.HPP new file mode 100644 index 0000000..dc88fd6 --- /dev/null +++ b/CODE/RP/RP_L4/RPL4VID.HPP @@ -0,0 +1,83 @@ +//===========================================================================// +// File: rpl4vid.hh // +// Project: MUNGA Brick: Video Renderer Manager // +// Contents: Wrapper class for including rp scripts into video renderer // +//---------------------------------------------------------------------------// +// Date Who Modification // +// -------- --- ---------------------------------------------------------- // +// 02/12/95 GAC Initial coding. // +//---------------------------------------------------------------------------// +// Copyright (C) 1995, Virtual World Entertainment, Inc. // +// All Rights reserved worldwide // +// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // +//===========================================================================// + +#if !defined(RPL4VID_HPP) +# define RPL4VID_HPP + +# if !defined(L4VIDEO_HPP) +# include +# endif + +# include +# include + +//########################################################################## +//########################################################################## + + class RPL4VideoRenderer: + public DPLRenderer + { + public: + RPL4VideoRenderer( + RendererRate calibration_rate, + RendererComplexity calibration_complexity, + RendererPriority calibration_priority, + InterestType interest_type, + InterestDepth depth_calibration + ); + ~RPL4VideoRenderer(); + char + SetupMaterialSubstitutionList( + Entity* entity, + ViewFrom view_type); // The entity we will be substituting for. + void + TearDownMaterialSubstitutionList(); + + protected: + int + vtvsExpected, + vtvCount; + + void + LoadMissionImplementation(Mission *mission); + + void + MakeEntityRenderables( + Entity *this_entity, // The entity we are dealing with + ResourceDescription *model_resource, // Pointer to the video resource + ViewFrom type); // Type of reference (inside/outside...etc.) + + dpl_DCS* + ReadSKLFile( + Entity *entity, // The entity we are dealing with + ResourceDescription *model_resource, // Pointer to the video resource + ViewFrom type, // type of reference to create + char skeleton_type // TEMPORARY!!!! to handle color substitutions + ); + + void + RecurseSKLFile( + Entity *entity, + dpl_DCS *parentDCS, + NotationFile *mech_skeleton, + const char *page_name, + int recursion_depth, + ViewFrom type, // type of reference to create !!! should be enum + int *joint_counter, + dpl_LOAD_MODE cache_mode + ); + + }; + +#endif diff --git a/CODE/RP/RP_L4/mssccprj.scc b/CODE/RP/RP_L4/mssccprj.scc new file mode 100644 index 0000000..7418774 --- /dev/null +++ b/CODE/RP/RP_L4/mssccprj.scc @@ -0,0 +1,5 @@ +SCC = This is a Source Code Control file + +[rpL4.mak] +SCC_Aux_Path = "M:\VWESS" +SCC_Project_Name = "$/Tesla_rp/RP_L4", QNWAAAAA diff --git a/CODE/RP/RP_L4/opt/opt.cfg b/CODE/RP/RP_L4/opt/opt.cfg new file mode 100644 index 0000000..91784cc --- /dev/null +++ b/CODE/RP/RP_L4/opt/opt.cfg @@ -0,0 +1,34 @@ +-DLBE4;DEBUG_LEVEL=0;DEBUG_STREAM=cout;MESSAGE_BUFFERING=False +-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 +-Id:\tesla_rp\rp_l4;d:\tesla_rp\rp;d:\tesla_rp\munga_l4;d:\tesla_rp\munga_l4\libdpl;d:\tesla_rp\munga_l4\libdpl\dvs;d:\tesla_rp\munga_l4\libdpl\dpl;d:\tesla_rp\munga_l4\sos\bc4;d:\tesla_rp\munga_l4\netnub;d:\tesla_rp\munga;d:\bc5\include +-H +-H=rpl4opt.csm +-Hc +-nd:\tesla_rp\rp_l4\opt diff --git a/CODE/RP/RP_L4/rpL4.mak b/CODE/RP/RP_L4/rpL4.mak new file mode 100644 index 0000000..3c93a09 --- /dev/null +++ b/CODE/RP/RP_L4/rpL4.mak @@ -0,0 +1,134 @@ +.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 RPL4_ROOT +!error RPL4_ROOT macro is not defined +!endif + +TARGET_DIR = $(RPL4_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 = rpl4$(BTYPE).csm + +#------------------------------------------------------------------------------ +# Library targets +# +all: $(CFG_FILE) $(TARGET_DIR)\rpl4$(BTYPE).exe $(TARGET_DIR)\rpl4tool.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 + +{$(RPL4_ROOT)}.asm{$(TARGET_DIR)}.obj: + tasm32 -ml $(TASM_OPTIONS) -i$(RPL4_ROOT) $<,$@ >>error.log + +#------------------------------------------------------------------------------ +# Game +# +$(TARGET_DIR)\rpl4$(BTYPE).exe: \ + $(RPL4_ROOT)\rpl4.mak l4stub.lib stub.lib $(BTYPE).mak munga.lib\ + mungal4.lib rp.lib $(TARGET_DIR)\rpl4.lib $(TARGET_DIR)\rpl4.obj\ + $(DPL_ROOT)\libdpl.lib + tlink32 @&&| +$(LINK_OPTIONS) + +$(STARTUP_OBJ)+ +$(TARGET_DIR)\rpl4.obj +$<,$* +l4stub.lib+ +stub.lib+ +munga.lib+ +mungal4.lib+ +$(DPL_ROOT)\libdpl.lib+ +rp.lib+ +$(TARGET_DIR)\rpl4.lib+ +$(STARTUP_LIBS) +| >>error.log + +rpl4.obj: $(CFG_FILE) + +#------------------------------------------------------------------------------ +# Tools +# +$(TARGET_DIR)\rpl4tool.exe: \ + $(RPL4_ROOT)\rpl4.mak $(TARGET_DIR)\rpl4tool.obj l4stub.lib stub.lib\ + $(BTYPE).mak munga.lib mungal4.lib rp.lib $(TARGET_DIR)\rpl4.lib\ + $(DPL_ROOT)\libdpl.lib + tlink32 @&&| +$(LINK_OPTIONS) + +$(STARTUP_OBJ)+ +$(TARGET_DIR)\rpl4tool.obj +$<,$* +l4stub.lib+ +stub.lib+ +munga.lib+ +mungal4.lib+ +$(DPL_ROOT)\libdpl.lib+ +rp.lib+ +$(TARGET_DIR)\rpl4.lib+ +$(STARTUP_LIBS) +| >>error.log + +rpl4tool.obj: $(CFG_FILE) + +#------------------------------------------------------------------------------ +# Red Planet library +# +RPL4_OBJS = \ + ?rpl4mode.obj \ + ?rpl4gaug.obj \ + ?rpl4grnd.obj \ + ?rpl4vid.obj \ + ?rpl4mppr.obj \ + ?rpl4arnd.obj \ + ?rpl4mssn.obj \ + ?rpl4app.obj \ + ?rpl4pb.obj + +$(RPL4_OBJS:?=): $(CFG_FILE) + +$(TARGET_DIR)\rpl4.lib: $(RPL4_OBJS:?=) $(RPL4_ROOT)\rpl4.mak + tlib $@ $(LIB_OPTIONS) @&&| +$(RPL4_OBJS:?=$(LIB_PREFIX)) +| >>error.log diff --git a/CODE/RP/RP_L4/vssver.scc b/CODE/RP/RP_L4/vssver.scc new file mode 100644 index 0000000..265a8c4 Binary files /dev/null and b/CODE/RP/RP_L4/vssver.scc differ diff --git a/CODE/RP/clropt.bat b/CODE/RP/clropt.bat new file mode 100644 index 0000000..7a9b453 --- /dev/null +++ b/CODE/RP/clropt.bat @@ -0,0 +1,5 @@ +del d:\tesla_rp\munga\opt\*.* +del d:\tesla_rp\munga_l4\opt\*.* +copy d:\tesla_rp\munga_l4\*.obj d:\tesla_rp\munga_l4\opt +del d:\tesla_rp\rp\opt\*.* +del d:\tesla_rp\rp_l4\opt\*.* diff --git a/CODE/RP/d1.mak b/CODE/RP/d1.mak new file mode 100644 index 0000000..2a9b298 --- /dev/null +++ b/CODE/RP/d1.mak @@ -0,0 +1,32 @@ +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 + +$(CFG_FILE): d2s.mak make.cfg $(BPATH) + copy &&| +-DLAB_ONLY;LBE4;DEBUG_LEVEL=1;DEBUG_STREAM=cout +-DMESSAGE_BUFFERING=False +-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) diff --git a/CODE/RP/d2s.mak b/CODE/RP/d2s.mak new file mode 100644 index 0000000..7949dfe --- /dev/null +++ b/CODE/RP/d2s.mak @@ -0,0 +1,34 @@ +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 +-DMESSAGE_BUFFERING=False +-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) diff --git a/CODE/RP/d3s.mak b/CODE/RP/d3s.mak new file mode 100644 index 0000000..3ac94b5 --- /dev/null +++ b/CODE/RP/d3s.mak @@ -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 = /P128 + +$(CFG_FILE): opt.mak make.cfg $(BPATH) + copy &&| +-DLBE4;DEBUG_LEVEL=2;DEBUG_STREAM=cout;MEMORY_REGISTER;USE_SIGNATURE +-DMESSAGE_BUFFERING=False +-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) diff --git a/CODE/RP/example.cfg b/CODE/RP/example.cfg new file mode 100644 index 0000000..a6083d9 --- /dev/null +++ b/CODE/RP/example.cfg @@ -0,0 +1,9 @@ +BC_ROOT = c:\bc5 +DPL_ROOT = e:\libdpl +SOS_ROOT = e:\sos\awe32 +NETNUB_ROOT = e:\source\netnub +STARTUP_ROOT = e:\teslarp +MUNGA_ROOT = e:\munga +RP_ROOT = e:\teslarp\rp + +BCC_OPT = bcc32i diff --git a/CODE/RP/make.cfg b/CODE/RP/make.cfg new file mode 100644 index 0000000..92d467a --- /dev/null +++ b/CODE/RP/make.cfg @@ -0,0 +1,12 @@ +BC_ROOT = d:\bc5 +DPL_ROOT = d:\tesla_rp\munga_l4\libdpl +SOS_ROOT = d:\tesla_rp\munga_l4\sos +NETNUB_ROOT = d:\tesla_rp\munga_l4\netnub +STARTUP_ROOT = d:\tesla_rp +MUNGA_ROOT = d:\tesla_rp\munga +RP_ROOT = d:\tesla_rp\rp + +MUNGAL4_ROOT = d:\tesla_rp\munga_l4 +RPL4_ROOT = d:\tesla_rp\rp_l4 + +BCC_OPT = bcc32i diff --git a/CODE/RP/mssccprj.scc b/CODE/RP/mssccprj.scc new file mode 100644 index 0000000..f9968b0 --- /dev/null +++ b/CODE/RP/mssccprj.scc @@ -0,0 +1,21 @@ +SCC = This is a Source Code Control file + +[D0.mak] +SCC_Aux_Path = "M:\VWESS" +SCC_Project_Name = "$/Tesla_rp", LDVAAAAA + +[d1.mak] +SCC_Aux_Path = "M:\VWESS" +SCC_Project_Name = "$/Tesla_rp", LDVAAAAA + +[d2s.mak] +SCC_Aux_Path = "M:\VWESS" +SCC_Project_Name = "$/Tesla_rp", LDVAAAAA + +[d3s.mak] +SCC_Aux_Path = "M:\VWESS" +SCC_Project_Name = "$/Tesla_rp", LDVAAAAA + +[OPT.mak] +SCC_Aux_Path = "M:\VWESS" +SCC_Project_Name = "$/Tesla_rp", LDVAAAAA diff --git a/CODE/RP/opt.bat b/CODE/RP/opt.bat new file mode 100644 index 0000000..68053b3 --- /dev/null +++ b/CODE/RP/opt.bat @@ -0,0 +1,11 @@ +@echo off +del error.log +make -r -DBTYPE=opt -DBPATH=rpl4.pth -fmunga\munga.mak %1 %2 %3 %4 %5 +if errorlevel 1 goto done +make -r -DBTYPE=opt -DBPATH=rpl4.pth -fmunga_l4\mungal4.mak %1 %2 %3 %4 %5 +if errorlevel 1 goto done +make -r -DBTYPE=opt -DBPATH=rpl4.pth -frp\rp.mak %1 %2 %3 %4 %5 +if errorlevel 1 goto done +make -r -DBTYPE=opt -DBPATH=rpl4.pth -frp_l4\rpl4.mak %1 %2 %3 %4 %5 +:done + diff --git a/CODE/RP/opt.cfg b/CODE/RP/opt.cfg new file mode 100644 index 0000000..27a44b4 --- /dev/null +++ b/CODE/RP/opt.cfg @@ -0,0 +1,13 @@ +BC_ROOT = d:\bc5 +DPL_ROOT = d:\tesla_rp\munga_l4\libdpl +SOS_ROOT = d:\tesla_rp\munga_l4\sos +NETNUB_ROOT = d:\tesla_rp\munga_l4\netnub +STARTUP_ROOT = d:\tesla_rp +MUNGA_ROOT = d:\tesla_rp\munga +RP_ROOT = d:\tesla_rp\rp + +MUNGAL4_ROOT = d:\tesla_rp\munga_l4 +RPL4_ROOT = d:\tesla_rp\rp_l4 + +BCC = bcc32 +BCC_OPT = bcc32i diff --git a/CODE/RP/transfr.bat b/CODE/RP/transfr.bat new file mode 100644 index 0000000..5d5ccf7 --- /dev/null +++ b/CODE/RP/transfr.bat @@ -0,0 +1 @@ +copy \tesla_rp\rp_l4\opt\rpl4opt.exe a: diff --git a/CODE/RP/vssver.scc b/CODE/RP/vssver.scc new file mode 100644 index 0000000..b92faa5 Binary files /dev/null and b/CODE/RP/vssver.scc differ diff --git a/CONTENT/BT/32STUB.EXE b/CONTENT/BT/32STUB.EXE new file mode 100644 index 0000000..8747672 Binary files /dev/null and b/CONTENT/BT/32STUB.EXE differ diff --git a/CONTENT/BT/ANIM.BAT b/CONTENT/BT/ANIM.BAT new file mode 100644 index 0000000..2230542 --- /dev/null +++ b/CONTENT/BT/ANIM.BAT @@ -0,0 +1,64 @@ +call .\btcam\btcam01.bat %1 %2 +ren dump0.tga %201.tga +call .\btcam\btcam02.bat %1 %2 +ren dump0.tga %202.tga +call .\btcam\btcam03.bat %1 %2 +ren dump0.tga %203.tga +call .\btcam\btcam04.bat %1 %2 +ren dump0.tga %204.tga +call .\btcam\btcam05.bat %1 %2 +ren dump0.tga %205.tga +call .\btcam\btcam06.bat %1 %2 +ren dump0.tga %206.tga +call .\btcam\btcam07.bat %1 %2 +ren dump0.tga %207.tga +call .\btcam\btcam08.bat %1 %2 +ren dump0.tga %208.tga +call .\btcam\btcam09.bat %1 %2 +ren dump0.tga %209.tga +call .\btcam\btcam10.bat %1 %2 +ren dump0.tga %210.tga +call .\btcam\btcam11.bat %1 %2 +ren dump0.tga %211.tga +call .\btcam\btcam12.bat %1 %2 +ren dump0.tga %212.tga +call .\btcam\btcam13.bat %1 %2 +ren dump0.tga %213.tga +call .\btcam\btcam14.bat %1 %2 +ren dump0.tga %214.tga +call .\btcam\btcam15.bat %1 %2 +ren dump0.tga %215.tga +call .\btcam\btcam16.bat %1 %2 +ren dump0.tga %216.tga +call .\btcam\btcam17.bat %1 %2 +ren dump0.tga %217.tga +call .\btcam\btcam18.bat %1 %2 +ren dump0.tga %218.tga +call .\btcam\btcam19.bat %1 %2 +ren dump0.tga %219.tga +call .\btcam\btcam20.bat %1 %2 +ren dump0.tga %220.tga +call .\btcam\btcam21.bat %1 %2 +ren dump0.tga %221.tga +call .\btcam\btcam22.bat %1 %2 +ren dump0.tga %222.tga +call .\btcam\btcam23.bat %1 %2 +ren dump0.tga %223.tga +call .\btcam\btcam24.bat %1 %2 +ren dump0.tga %224.tga +call .\btcam\btcam25.bat %1 %2 +ren dump0.tga %225.tga +call .\btcam\btcam26.bat %1 %2 +ren dump0.tga %226.tga +call .\btcam\btcam27.bat %1 %2 +ren dump0.tga %227.tga +call .\btcam\btcam28.bat %1 %2 +ren dump0.tga %228.tga +call .\btcam\btcam29.bat %1 %2 +ren dump0.tga %229.tga +call .\btcam\btcam30.bat %1 %2 +ren dump0.tga %230.tga +call .\btcam\btcam31.bat %1 %2 +ren dump0.tga %231.tga +call .\btcam\btcam32.bat %1 %2 +ren dump0.tga %232.tga diff --git a/CONTENT/BT/ANIM1.BAT b/CONTENT/BT/ANIM1.BAT new file mode 100644 index 0000000..8048a0f --- /dev/null +++ b/CONTENT/BT/ANIM1.BAT @@ -0,0 +1,2 @@ +call .\btcam\btcam01.bat %1 %2 +ren dump0.tga %201.tga diff --git a/CONTENT/BT/ANIMCAM.BAT b/CONTENT/BT/ANIMCAM.BAT new file mode 100644 index 0000000..8048a0f --- /dev/null +++ b/CONTENT/BT/ANIMCAM.BAT @@ -0,0 +1,2 @@ +call .\btcam\btcam01.bat %1 %2 +ren dump0.tga %201.tga diff --git a/CONTENT/BT/ANIMS/AVABMP.ANI b/CONTENT/BT/ANIMS/AVABMP.ANI new file mode 100644 index 0000000..b3955ec --- /dev/null +++ b/CONTENT/BT/ANIMS/AVABMP.ANI @@ -0,0 +1,110 @@ +[LAB_ONLY] + +[HEADER] +framecount=3 +framerate=30 +skeletonfile=ava.skl +jointcount=16 + +[Time] +frame1=0 +frame8=0.233333 +frame15=0.466667 + +[JointIndices] +jointlocal=0 +jointhip=1 +jointrshoulder=4 +jointlshoulder=6 +jointlknee=11 +jointlthigh=10 +jointrknee=17 +jointrankle=18 +jointrinnertoe=20 +jointrbacktoe=19 +jointroutertoe=21 +jointrthigh=16 +jointloutertoe=14 +jointlbacktoe=13 +jointlinnertoe=15 +jointlankle=12 + +[JointType] +jointlocal=balltranslate +jointhip=hingex +jointrshoulder=hingex +jointlshoulder=hingex +jointlknee=hingex +jointlthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointrinnertoe=hingex +jointrbacktoe=hingex +jointroutertoe=hingex +jointrthigh=hingex +jointloutertoe=hingex +jointlbacktoe=hingex +jointlinnertoe=hingex +jointlankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointhip=-0.193679 0.000000 0.000000 +jointrshoulder=0.193679 0.000000 0.000000 +jointlshoulder=0.193679 0.000000 0.000000 +jointlknee=-0.815243 0.000000 0.000000 +jointlthigh=-0.557059 0.000000 0.000000 +jointrknee=-0.131127 0.000000 0.000000 +jointrankle=0.052430 0.000000 0.000000 +jointrinnertoe=-0.314596 0.000000 0.000000 +jointrbacktoe=-0.717941 0.000000 0.000000 +jointroutertoe=-0.314596 0.000000 0.000000 +jointrthigh=1.080533 0.000000 0.000000 +jointloutertoe=-0.733736 0.000000 0.000000 +jointlbacktoe=0.627778 0.000000 0.000000 +jointlinnertoe=-0.732578 0.000000 0.000000 +jointlankle=0.129235 0.000000 0.000000 +[frame8] +jointlocal=0.000000 0.000000 0.000000 +jointhip=0.436332 0.000000 0.000000 +jointrshoulder=0.000000 0.000000 0.000000 +jointlshoulder=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 0.000000 +jointrbacktoe=0.000000 0.000000 0.000000 +jointroutertoe=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 0.000000 +jointlbacktoe=0.000000 0.000000 0.000000 +jointlinnertoe=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +[frame15] +jointlocal=0.000000 0.000000 0.000000 +jointhip=0.000000 0.000000 0.000000 +jointrshoulder=0.000000 0.000000 0.000000 +jointlshoulder=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 0.000000 +jointrbacktoe=0.000000 0.000000 0.000000 +jointroutertoe=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 0.000000 +jointlbacktoe=0.000000 0.000000 0.000000 +jointlinnertoe=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame8=0.000000 -5.364000 0.000000 +frame15=0.000000 -5.364000 0.000000 + +[KeyJointPos] +frame1=0.000000 0.743033 0.000000 +frame8=0.000000 0.000000 0.000000 +frame15=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/AVAGSLI.ANI b/CONTENT/BT/ANIMS/AVAGSLI.ANI new file mode 100644 index 0000000..bcb24f1 --- /dev/null +++ b/CONTENT/BT/ANIMS/AVAGSLI.ANI @@ -0,0 +1,160 @@ +[LAB_ONLY] + +[HEADER] +framecount=8 +framerate=30 +skeletonfile=ava.skl +jointcount=11 + +[Time] +frame1=0 +frame4=0.1 +frame7=0.2 +frame10=0.3 +frame13=0.4 +frame17=0.533333 +frame21=0.666667 +frame25=0.8 + +[JointIndices] +jointlocal=0 +jointlknee=11 +jointlthigh=10 +jointrknee=17 +jointrankle=18 +jointrthigh=16 +jointloutertoe=14 +jointlbacktoe=13 +jointlinnertoe=15 +jointlankle=12 +jointshakey=3 + +[JointType] +jointlocal=balltranslate +jointlknee=hingex +jointlthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointrthigh=hingex +jointloutertoe=hingex +jointlbacktoe=hingex +jointlinnertoe=hingex +jointlankle=hingex +jointshakey=ball + +[frame1] +jointlocal=0.000000 0.000000 -0.015708 +jointlknee=0.624845 0.000000 0.000000 +jointlthigh=-0.688908 0.000000 0.000000 +jointrknee=0.164190 0.000000 0.000000 +jointrankle=-0.104642 0.000000 0.000000 +jointrthigh=-0.055603 0.000000 0.000000 +jointloutertoe=-1.156281 0.000000 0.000000 +jointlbacktoe=0.646453 0.000000 0.000000 +jointlinnertoe=-1.156281 0.000000 0.000000 +jointlankle=-0.601941 0.000000 0.000000 +jointshakey=0.000000 0.000000 -0.015708 +[frame4] +jointlocal=0.000000 0.000000 -0.013744 +jointlknee=0.639649 0.000000 0.000000 +jointlthigh=-0.681898 0.000000 0.000000 +jointrknee=0.107575 0.000000 0.000000 +jointrankle=0.061760 0.000000 0.000000 +jointrthigh=-0.162317 0.000000 0.000000 +jointloutertoe=-1.156281 0.000000 0.000000 +jointlbacktoe=0.646453 0.000000 0.000000 +jointlinnertoe=-1.156281 0.000000 0.000000 +jointlankle=-0.516602 0.000000 0.000000 +jointshakey=0.000000 0.000000 -0.013744 +[frame7] +jointlocal=0.000000 0.000000 -0.011781 +jointlknee=0.654453 0.000000 0.000000 +jointlthigh=-0.674887 0.000000 0.000000 +jointrknee=0.025968 0.000000 0.000000 +jointrankle=0.155107 0.000000 0.000000 +jointrthigh=-0.179694 0.000000 0.000000 +jointloutertoe=-1.156281 0.000000 0.000000 +jointlbacktoe=0.646453 0.000000 0.000000 +jointlinnertoe=-1.156281 0.000000 0.000000 +jointlankle=-0.431262 0.000000 0.000000 +jointshakey=0.000000 0.000000 -0.011781 +[frame10] +jointlocal=0.000000 0.000000 -0.009817 +jointlknee=0.654830 0.000000 0.000000 +jointlthigh=-0.647667 0.000000 0.000000 +jointrknee=-0.004694 0.000000 0.000000 +jointrankle=0.192683 0.000000 0.000000 +jointrthigh=-0.186794 0.000000 0.000000 +jointloutertoe=-0.900055 0.000000 0.000000 +jointlbacktoe=0.503202 0.000000 0.000000 +jointlinnertoe=-0.900055 0.000000 0.000000 +jointlankle=-0.345923 0.000000 0.000000 +jointshakey=0.000000 0.000000 -0.009817 +[frame13] +jointlocal=0.000000 0.000000 -0.007854 +jointlknee=0.595505 0.000000 0.000000 +jointlthigh=-0.554510 0.000000 0.000000 +jointrknee=-0.012814 0.000000 0.000000 +jointrankle=0.181539 0.000000 0.000000 +jointrthigh=-0.167016 0.000000 0.000000 +jointloutertoe=-0.643830 0.000000 0.000000 +jointlbacktoe=0.359952 0.000000 0.000000 +jointlinnertoe=-0.643830 0.000000 0.000000 +jointlankle=-0.263634 0.000000 0.000000 +jointshakey=0.000000 0.000000 -0.007854 +[frame17] +jointlocal=0.000000 0.000000 -0.005236 +jointlknee=0.416737 0.000000 0.000000 +jointlthigh=-0.353160 0.000000 0.000000 +jointrknee=-0.023641 0.000000 0.000000 +jointrankle=0.166681 0.000000 0.000000 +jointrthigh=-0.140645 0.000000 0.000000 +jointloutertoe=-0.302197 0.000000 0.000000 +jointlbacktoe=0.168952 0.000000 0.000000 +jointlinnertoe=-0.302197 0.000000 0.000000 +jointlankle=-0.200647 0.000000 0.000000 +jointshakey=0.000000 0.000000 -0.005236 +[frame21] +jointlocal=0.000000 0.000000 -0.002618 +jointlknee=0.147888 0.000000 0.000000 +jointlthigh=-0.132173 0.000000 0.000000 +jointrknee=-0.011821 0.000000 0.000000 +jointrankle=0.083341 0.000000 0.000000 +jointrthigh=-0.070322 0.000000 0.000000 +jointloutertoe=-0.074884 0.000000 0.000000 +jointlbacktoe=0.034765 0.000000 0.000000 +jointlinnertoe=-0.074884 0.000000 0.000000 +jointlankle=-0.081259 0.000000 0.000000 +jointshakey=0.000000 0.000000 -0.002618 +[frame25] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 0.000000 +jointlbacktoe=0.000000 0.000000 0.000000 +jointlinnertoe=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame4=0.034515 -5.360000 5.741997 +frame7=0.034515 -5.360000 2.842979 +frame10=0.034515 -5.360000 1.192016 +frame13=0.034515 -5.360000 0.097008 +frame17=0.034515 -5.360000 -1.144495 +frame21=0.034515 -5.360000 -2.652769 +frame25=0.034515 -5.360000 -2.432242 + +[KeyJointPos] +frame1=0.000000 -0.190440 0.000000 +frame4=0.000000 -0.131726 0.000000 +frame7=0.000000 -0.073012 0.000000 +frame10=0.000000 -0.055344 0.000000 +frame13=0.000000 -0.037676 0.000000 +frame17=0.000000 -0.014119 0.000000 +frame21=0.000000 -0.007060 0.000000 +frame25=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/AVAGSRI.ANI b/CONTENT/BT/ANIMS/AVAGSRI.ANI new file mode 100644 index 0000000..6c1ac28 --- /dev/null +++ b/CONTENT/BT/ANIMS/AVAGSRI.ANI @@ -0,0 +1,160 @@ +[LAB_ONLY] + +[HEADER] +framecount=8 +framerate=30 +skeletonfile=ava.skl +jointcount=11 + +[Time] +frame1=0 +frame4=0.1 +frame7=0.2 +frame10=0.3 +frame13=0.4 +frame17=0.533333 +frame21=0.666667 +frame25=0.8 + +[JointIndices] +jointlocal=0 +jointlknee=11 +jointlthigh=10 +jointrknee=17 +jointrankle=18 +jointrinnertoe=20 +jointrbacktoe=19 +jointroutertoe=21 +jointrthigh=16 +jointlankle=12 +jointshakey=3 + +[JointType] +jointlocal=balltranslate +jointlknee=hingex +jointlthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointrinnertoe=hingex +jointrbacktoe=hingex +jointroutertoe=hingex +jointrthigh=hingex +jointlankle=hingex +jointshakey=ball + +[frame1] +jointlocal=0.000000 0.000000 0.015708 +jointlknee=0.164190 0.000000 0.000000 +jointlthigh=-0.055603 0.000000 0.000000 +jointrknee=0.624845 0.000000 0.000000 +jointrankle=-0.601941 0.000000 0.000000 +jointrinnertoe=-1.156281 0.000000 0.000000 +jointrbacktoe=0.646453 0.000000 0.000000 +jointroutertoe=-1.156281 0.000000 0.000000 +jointrthigh=-0.688908 0.000000 0.000000 +jointlankle=-0.104642 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.015708 +[frame4] +jointlocal=0.000000 0.000000 0.013744 +jointlknee=0.140489 0.000000 0.000000 +jointlthigh=-0.180649 0.000000 0.000000 +jointrknee=0.639649 0.000000 0.000000 +jointrankle=-0.516602 0.000000 0.000000 +jointrinnertoe=-1.156281 0.000000 0.000000 +jointrbacktoe=0.646453 0.000000 0.000000 +jointroutertoe=-1.156281 0.000000 0.000000 +jointrthigh=-0.681898 0.000000 0.000000 +jointlankle=0.040697 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.013744 +[frame7] +jointlocal=0.000000 0.000000 0.011781 +jointlknee=-0.000379 0.000000 0.000000 +jointlthigh=-0.162719 0.000000 0.000000 +jointrknee=0.654453 0.000000 0.000000 +jointrankle=-0.431262 0.000000 0.000000 +jointrinnertoe=-1.156281 0.000000 0.000000 +jointrbacktoe=0.646453 0.000000 0.000000 +jointroutertoe=-1.156281 0.000000 0.000000 +jointrthigh=-0.674887 0.000000 0.000000 +jointlankle=0.167199 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.011781 +[frame10] +jointlocal=0.000000 0.000000 0.009817 +jointlknee=-0.000316 0.000000 0.000000 +jointlthigh=-0.135599 0.000000 0.000000 +jointrknee=0.654830 0.000000 0.000000 +jointrankle=-0.345923 0.000000 0.000000 +jointrinnertoe=-0.900055 0.000000 0.000000 +jointrbacktoe=0.503202 0.000000 0.000000 +jointroutertoe=-0.900055 0.000000 0.000000 +jointrthigh=-0.647667 0.000000 0.000000 +jointlankle=0.139332 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.009817 +[frame13] +jointlocal=0.000000 0.000000 0.007854 +jointlknee=-0.000253 0.000000 0.000000 +jointlthigh=-0.108479 0.000000 0.000000 +jointrknee=0.595505 0.000000 0.000000 +jointrankle=-0.263634 0.000000 0.000000 +jointrinnertoe=-0.643830 0.000000 0.000000 +jointrbacktoe=0.359952 0.000000 0.000000 +jointroutertoe=-0.643830 0.000000 0.000000 +jointrthigh=-0.554510 0.000000 0.000000 +jointlankle=0.111466 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.007854 +[frame17] +jointlocal=0.000000 0.000000 0.005236 +jointlknee=-0.000169 0.000000 0.000000 +jointlthigh=-0.072320 0.000000 0.000000 +jointrknee=0.416737 0.000000 0.000000 +jointrankle=-0.200647 0.000000 0.000000 +jointrinnertoe=-0.302197 0.000000 0.000000 +jointrbacktoe=0.168952 0.000000 0.000000 +jointroutertoe=-0.302197 0.000000 0.000000 +jointrthigh=-0.353160 0.000000 0.000000 +jointlankle=0.074310 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.005236 +[frame21] +jointlocal=0.000000 0.000000 0.002618 +jointlknee=-0.000084 0.000000 0.000000 +jointlthigh=-0.036160 0.000000 0.000000 +jointrknee=0.147888 0.000000 0.000000 +jointrankle=-0.081259 0.000000 0.000000 +jointrinnertoe=-0.074884 0.000000 0.000000 +jointrbacktoe=0.034765 0.000000 0.000000 +jointroutertoe=-0.074884 0.000000 0.000000 +jointrthigh=-0.132173 0.000000 0.000000 +jointlankle=0.037155 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.002618 +[frame25] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 0.000000 +jointrbacktoe=0.000000 0.000000 0.000000 +jointroutertoe=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame4=0.034515 -5.360000 5.741997 +frame7=0.034515 -5.360000 2.842979 +frame10=0.034515 -5.360000 1.192016 +frame13=0.034515 -5.360000 0.097008 +frame17=0.034515 -5.360000 -1.144495 +frame21=0.034515 -5.360000 -2.652769 +frame25=0.034515 -5.360000 -2.432242 + +[KeyJointPos] +frame1=0.000000 -0.190440 0.000000 +frame4=0.000000 -0.131726 0.000000 +frame7=0.000000 -0.073012 0.000000 +frame10=0.000000 -0.055344 0.000000 +frame13=0.000000 -0.037676 0.000000 +frame17=0.000000 -0.014119 0.000000 +frame21=0.000000 -0.007060 0.000000 +frame25=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/BATBMP.ANI b/CONTENT/BT/ANIMS/BATBMP.ANI new file mode 100644 index 0000000..f1b0601 --- /dev/null +++ b/CONTENT/BT/ANIMS/BATBMP.ANI @@ -0,0 +1,110 @@ +[LAB_ONLY] + +[HEADER] +framecount=3 +framerate=30 +skeletonfile=vul.skl +jointcount=16 + +[Time] +frame1=0 +frame8=0.233333 +frame15=0.466667 + +[JointIndices] +jointlocal=0 +jointhip=1 +jointrshoulder=4 +jointlshoulder=6 +jointlknee=13 +jointlthigh=12 +jointrknee=19 +jointrankle=20 +jointrinnertoe=22 +jointrbacktoe=21 +jointroutertoe=23 +jointrthigh=18 +jointloutertoe=16 +jointlbacktoe=15 +jointlinnertoe=17 +jointlankle=14 + +[JointType] +jointlocal=balltranslate +jointhip=hingex +jointrshoulder=hingex +jointlshoulder=hingex +jointlknee=hingex +jointlthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointrinnertoe=hingex +jointrbacktoe=hingex +jointroutertoe=hingex +jointrthigh=hingex +jointloutertoe=hingex +jointlbacktoe=hingex +jointlinnertoe=hingex +jointlankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointhip=-0.193679 0.000000 0.000000 +jointrshoulder=0.193679 0.000000 0.000000 +jointlshoulder=0.193679 0.000000 0.000000 +jointlknee=-0.815243 0.000000 0.000000 +jointlthigh=-0.557059 0.000000 0.000000 +jointrknee=-0.131127 0.000000 0.000000 +jointrankle=0.052430 0.000000 0.000000 +jointrinnertoe=-0.314596 0.000000 0.000000 +jointrbacktoe=-0.717941 0.000000 0.000000 +jointroutertoe=-0.314596 0.000000 0.000000 +jointrthigh=1.080533 0.000000 0.000000 +jointloutertoe=-0.733736 0.000000 0.000000 +jointlbacktoe=0.627778 0.000000 0.000000 +jointlinnertoe=-0.732578 0.000000 0.000000 +jointlankle=0.129235 0.000000 0.000000 +[frame8] +jointlocal=0.000000 0.000000 0.000000 +jointhip=0.436332 0.000000 0.000000 +jointrshoulder=0.000000 0.000000 0.000000 +jointlshoulder=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 0.000000 +jointrbacktoe=0.000000 0.000000 0.000000 +jointroutertoe=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 0.000000 +jointlbacktoe=0.000000 0.000000 0.000000 +jointlinnertoe=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +[frame15] +jointlocal=0.000000 0.000000 0.000000 +jointhip=0.000000 0.000000 0.000000 +jointrshoulder=0.000000 0.000000 0.000000 +jointlshoulder=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 0.000000 +jointrbacktoe=0.000000 0.000000 0.000000 +jointroutertoe=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 0.000000 +jointlbacktoe=0.000000 0.000000 0.000000 +jointlinnertoe=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame8=0.000000 -5.364000 0.000000 +frame15=0.000000 -5.364000 0.000000 + +[KeyJointPos] +frame1=0.000000 0.743033 0.000000 +frame8=0.000000 0.000000 0.000000 +frame15=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/BATGSLI.ANI b/CONTENT/BT/ANIMS/BATGSLI.ANI new file mode 100644 index 0000000..c0e617e --- /dev/null +++ b/CONTENT/BT/ANIMS/BATGSLI.ANI @@ -0,0 +1,160 @@ +[LAB_ONLY] + +[HEADER] +framecount=8 +framerate=30 +skeletonfile=vul.skl +jointcount=11 + +[Time] +frame1=0 +frame4=0.1 +frame7=0.2 +frame10=0.3 +frame13=0.4 +frame17=0.533333 +frame21=0.666667 +frame25=0.8 + +[JointIndices] +jointlocal=0 +jointlknee=13 +jointlthigh=12 +jointrknee=19 +jointrankle=20 +jointrthigh=18 +jointloutertoe=16 +jointlbacktoe=15 +jointlinnertoe=17 +jointlankle=14 +jointshakey=3 + +[JointType] +jointlocal=balltranslate +jointlknee=hingex +jointlthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointrthigh=hingex +jointloutertoe=hingex +jointlbacktoe=hingex +jointlinnertoe=hingex +jointlankle=hingex +jointshakey=ball + +[frame1] +jointlocal=0.000000 0.000000 -0.015708 +jointlknee=0.624845 0.000000 0.000000 +jointlthigh=-0.688908 0.000000 0.000000 +jointrknee=0.164190 0.000000 0.000000 +jointrankle=-0.104642 0.000000 0.000000 +jointrthigh=-0.055603 0.000000 0.000000 +jointloutertoe=-1.156281 0.000000 0.000000 +jointlbacktoe=0.646453 0.000000 0.000000 +jointlinnertoe=-1.156281 0.000000 0.000000 +jointlankle=-0.601941 0.000000 0.000000 +jointshakey=0.000000 0.000000 -0.015708 +[frame4] +jointlocal=0.000000 0.000000 -0.013744 +jointlknee=0.639649 0.000000 0.000000 +jointlthigh=-0.681898 0.000000 0.000000 +jointrknee=0.107575 0.000000 0.000000 +jointrankle=0.061760 0.000000 0.000000 +jointrthigh=-0.162317 0.000000 0.000000 +jointloutertoe=-1.156281 0.000000 0.000000 +jointlbacktoe=0.646453 0.000000 0.000000 +jointlinnertoe=-1.156281 0.000000 0.000000 +jointlankle=-0.516602 0.000000 0.000000 +jointshakey=0.000000 0.000000 -0.013744 +[frame7] +jointlocal=0.000000 0.000000 -0.011781 +jointlknee=0.654453 0.000000 0.000000 +jointlthigh=-0.674887 0.000000 0.000000 +jointrknee=0.025968 0.000000 0.000000 +jointrankle=0.155107 0.000000 0.000000 +jointrthigh=-0.179694 0.000000 0.000000 +jointloutertoe=-1.156281 0.000000 0.000000 +jointlbacktoe=0.646453 0.000000 0.000000 +jointlinnertoe=-1.156281 0.000000 0.000000 +jointlankle=-0.431262 0.000000 0.000000 +jointshakey=0.000000 0.000000 -0.011781 +[frame10] +jointlocal=0.000000 0.000000 -0.009817 +jointlknee=0.654830 0.000000 0.000000 +jointlthigh=-0.647667 0.000000 0.000000 +jointrknee=-0.004694 0.000000 0.000000 +jointrankle=0.192683 0.000000 0.000000 +jointrthigh=-0.186794 0.000000 0.000000 +jointloutertoe=-0.900055 0.000000 0.000000 +jointlbacktoe=0.503202 0.000000 0.000000 +jointlinnertoe=-0.900055 0.000000 0.000000 +jointlankle=-0.345923 0.000000 0.000000 +jointshakey=0.000000 0.000000 -0.009817 +[frame13] +jointlocal=0.000000 0.000000 -0.007854 +jointlknee=0.595505 0.000000 0.000000 +jointlthigh=-0.554510 0.000000 0.000000 +jointrknee=-0.012814 0.000000 0.000000 +jointrankle=0.181539 0.000000 0.000000 +jointrthigh=-0.167016 0.000000 0.000000 +jointloutertoe=-0.643830 0.000000 0.000000 +jointlbacktoe=0.359952 0.000000 0.000000 +jointlinnertoe=-0.643830 0.000000 0.000000 +jointlankle=-0.263634 0.000000 0.000000 +jointshakey=0.000000 0.000000 -0.007854 +[frame17] +jointlocal=0.000000 0.000000 -0.005236 +jointlknee=0.416737 0.000000 0.000000 +jointlthigh=-0.353160 0.000000 0.000000 +jointrknee=-0.023641 0.000000 0.000000 +jointrankle=0.166681 0.000000 0.000000 +jointrthigh=-0.140645 0.000000 0.000000 +jointloutertoe=-0.302197 0.000000 0.000000 +jointlbacktoe=0.168952 0.000000 0.000000 +jointlinnertoe=-0.302197 0.000000 0.000000 +jointlankle=-0.200647 0.000000 0.000000 +jointshakey=0.000000 0.000000 -0.005236 +[frame21] +jointlocal=0.000000 0.000000 -0.002618 +jointlknee=0.147888 0.000000 0.000000 +jointlthigh=-0.132173 0.000000 0.000000 +jointrknee=-0.011821 0.000000 0.000000 +jointrankle=0.083341 0.000000 0.000000 +jointrthigh=-0.070322 0.000000 0.000000 +jointloutertoe=-0.074884 0.000000 0.000000 +jointlbacktoe=0.034765 0.000000 0.000000 +jointlinnertoe=-0.074884 0.000000 0.000000 +jointlankle=-0.081259 0.000000 0.000000 +jointshakey=0.000000 0.000000 -0.002618 +[frame25] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 0.000000 +jointlbacktoe=0.000000 0.000000 0.000000 +jointlinnertoe=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame4=0.034515 -5.360000 5.741997 +frame7=0.034515 -5.360000 2.842979 +frame10=0.034515 -5.360000 1.192016 +frame13=0.034515 -5.360000 0.097008 +frame17=0.034515 -5.360000 -1.144495 +frame21=0.034515 -5.360000 -2.652769 +frame25=0.034515 -5.360000 -2.432242 + +[KeyJointPos] +frame1=0.000000 -0.190440 0.000000 +frame4=0.000000 -0.131726 0.000000 +frame7=0.000000 -0.073012 0.000000 +frame10=0.000000 -0.055344 0.000000 +frame13=0.000000 -0.037676 0.000000 +frame17=0.000000 -0.014119 0.000000 +frame21=0.000000 -0.007060 0.000000 +frame25=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/BATGSRI.ANI b/CONTENT/BT/ANIMS/BATGSRI.ANI new file mode 100644 index 0000000..ce72bf7 --- /dev/null +++ b/CONTENT/BT/ANIMS/BATGSRI.ANI @@ -0,0 +1,160 @@ +[LAB_ONLY] + +[HEADER] +framecount=8 +framerate=30 +skeletonfile=vul.skl +jointcount=11 + +[Time] +frame1=0 +frame4=0.1 +frame7=0.2 +frame10=0.3 +frame13=0.4 +frame17=0.533333 +frame21=0.666667 +frame25=0.8 + +[JointIndices] +jointlocal=0 +jointlknee=13 +jointlthigh=12 +jointrknee=19 +jointrankle=20 +jointrinnertoe=22 +jointrbacktoe=21 +jointroutertoe=23 +jointrthigh=18 +jointlankle=14 +jointshakey=3 + +[JointType] +jointlocal=balltranslate +jointlknee=hingex +jointlthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointrinnertoe=hingex +jointrbacktoe=hingex +jointroutertoe=hingex +jointrthigh=hingex +jointlankle=hingex +jointshakey=ball + +[frame1] +jointlocal=0.000000 0.000000 0.015708 +jointlknee=0.164190 0.000000 0.000000 +jointlthigh=-0.055603 0.000000 0.000000 +jointrknee=0.624845 0.000000 0.000000 +jointrankle=-0.601941 0.000000 0.000000 +jointrinnertoe=-1.156281 0.000000 0.000000 +jointrbacktoe=0.646453 0.000000 0.000000 +jointroutertoe=-1.156281 0.000000 0.000000 +jointrthigh=-0.688908 0.000000 0.000000 +jointlankle=-0.104642 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.015708 +[frame4] +jointlocal=0.000000 0.000000 0.013744 +jointlknee=0.140489 0.000000 0.000000 +jointlthigh=-0.180649 0.000000 0.000000 +jointrknee=0.639649 0.000000 0.000000 +jointrankle=-0.516602 0.000000 0.000000 +jointrinnertoe=-1.156281 0.000000 0.000000 +jointrbacktoe=0.646453 0.000000 0.000000 +jointroutertoe=-1.156281 0.000000 0.000000 +jointrthigh=-0.681898 0.000000 0.000000 +jointlankle=0.040697 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.013744 +[frame7] +jointlocal=0.000000 0.000000 0.011781 +jointlknee=-0.000379 0.000000 0.000000 +jointlthigh=-0.162719 0.000000 0.000000 +jointrknee=0.654453 0.000000 0.000000 +jointrankle=-0.431262 0.000000 0.000000 +jointrinnertoe=-1.156281 0.000000 0.000000 +jointrbacktoe=0.646453 0.000000 0.000000 +jointroutertoe=-1.156281 0.000000 0.000000 +jointrthigh=-0.674887 0.000000 0.000000 +jointlankle=0.167199 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.011781 +[frame10] +jointlocal=0.000000 0.000000 0.009817 +jointlknee=-0.000316 0.000000 0.000000 +jointlthigh=-0.135599 0.000000 0.000000 +jointrknee=0.654830 0.000000 0.000000 +jointrankle=-0.345923 0.000000 0.000000 +jointrinnertoe=-0.900055 0.000000 0.000000 +jointrbacktoe=0.503202 0.000000 0.000000 +jointroutertoe=-0.900055 0.000000 0.000000 +jointrthigh=-0.647667 0.000000 0.000000 +jointlankle=0.139332 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.009817 +[frame13] +jointlocal=0.000000 0.000000 0.007854 +jointlknee=-0.000253 0.000000 0.000000 +jointlthigh=-0.108479 0.000000 0.000000 +jointrknee=0.595505 0.000000 0.000000 +jointrankle=-0.263634 0.000000 0.000000 +jointrinnertoe=-0.643830 0.000000 0.000000 +jointrbacktoe=0.359952 0.000000 0.000000 +jointroutertoe=-0.643830 0.000000 0.000000 +jointrthigh=-0.554510 0.000000 0.000000 +jointlankle=0.111466 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.007854 +[frame17] +jointlocal=0.000000 0.000000 0.005236 +jointlknee=-0.000169 0.000000 0.000000 +jointlthigh=-0.072320 0.000000 0.000000 +jointrknee=0.416737 0.000000 0.000000 +jointrankle=-0.200647 0.000000 0.000000 +jointrinnertoe=-0.302197 0.000000 0.000000 +jointrbacktoe=0.168952 0.000000 0.000000 +jointroutertoe=-0.302197 0.000000 0.000000 +jointrthigh=-0.353160 0.000000 0.000000 +jointlankle=0.074310 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.005236 +[frame21] +jointlocal=0.000000 0.000000 0.002618 +jointlknee=-0.000084 0.000000 0.000000 +jointlthigh=-0.036160 0.000000 0.000000 +jointrknee=0.147888 0.000000 0.000000 +jointrankle=-0.081259 0.000000 0.000000 +jointrinnertoe=-0.074884 0.000000 0.000000 +jointrbacktoe=0.034765 0.000000 0.000000 +jointroutertoe=-0.074884 0.000000 0.000000 +jointrthigh=-0.132173 0.000000 0.000000 +jointlankle=0.037155 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.002618 +[frame25] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 0.000000 +jointrbacktoe=0.000000 0.000000 0.000000 +jointroutertoe=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame4=0.034515 -5.360000 5.741997 +frame7=0.034515 -5.360000 2.842979 +frame10=0.034515 -5.360000 1.192016 +frame13=0.034515 -5.360000 0.097008 +frame17=0.034515 -5.360000 -1.144495 +frame21=0.034515 -5.360000 -2.652769 +frame25=0.034515 -5.360000 -2.432242 + +[KeyJointPos] +frame1=0.000000 -0.190440 0.000000 +frame4=0.000000 -0.131726 0.000000 +frame7=0.000000 -0.073012 0.000000 +frame10=0.000000 -0.055344 0.000000 +frame13=0.000000 -0.037676 0.000000 +frame17=0.000000 -0.014119 0.000000 +frame21=0.000000 -0.007060 0.000000 +frame25=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/BATSQUI.ANI b/CONTENT/BT/ANIMS/BATSQUI.ANI new file mode 100644 index 0000000..33c389d --- /dev/null +++ b/CONTENT/BT/ANIMS/BATSQUI.ANI @@ -0,0 +1,274 @@ +[LAB_ONLY] + +[HEADER] +framecount=22 +framerate=30 +skeletonfile=vul.skl +jointcount=7 + +[Time] +frame1=0 +frame2=0.0333333 +frame3=0.0666667 +frame4=0.1 +frame5=0.133333 +frame6=0.166667 +frame7=0.2 +frame8=0.233333 +frame9=0.266667 +frame10=0.3 +frame11=0.333333 +frame12=0.366667 +frame13=0.4 +frame14=0.433333 +frame15=0.466667 +frame16=0.5 +frame17=0.533333 +frame18=0.566667 +frame19=0.6 +frame20=0.633333 +frame21=0.666667 +frame22=0.7 + +[JointIndices] +jointlocal=0 +jointlknee=13 +jointlthigh=12 +jointrknee=19 +jointrankle=20 +jointrthigh=18 +jointlankle=14 + +[JointType] +jointlocal=balltranslate +jointlknee=hingex +jointlthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointrthigh=hingex +jointlankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=1.136585 0.000000 0.000000 +jointlthigh=-0.672123 0.000000 0.000000 +jointrknee=1.133350 0.000000 0.000000 +jointrankle=-0.463022 0.000000 0.000000 +jointrthigh=-0.670343 0.000000 0.000000 +jointlankle=-0.466802 0.000000 0.000000 +[frame2] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=1.127001 0.000000 0.000000 +jointlthigh=-0.666810 0.000000 0.000000 +jointrknee=1.124969 0.000000 0.000000 +jointrankle=-0.459694 0.000000 0.000000 +jointrthigh=-0.664463 0.000000 0.000000 +jointlankle=-0.460762 0.000000 0.000000 +[frame3] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=1.112134 0.000000 0.000000 +jointlthigh=-0.657801 0.000000 0.000000 +jointrknee=1.109138 0.000000 0.000000 +jointrankle=-0.452046 0.000000 0.000000 +jointrthigh=-0.655773 0.000000 0.000000 +jointlankle=-0.455156 0.000000 0.000000 +[frame4] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=1.087249 0.000000 0.000000 +jointlthigh=-0.640215 0.000000 0.000000 +jointrknee=1.084610 0.000000 0.000000 +jointrankle=-0.442492 0.000000 0.000000 +jointrthigh=-0.640946 0.000000 0.000000 +jointlankle=-0.448518 0.000000 0.000000 +[frame5] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=1.057497 0.000000 0.000000 +jointlthigh=-0.621301 0.000000 0.000000 +jointrknee=1.054797 0.000000 0.000000 +jointrankle=-0.432206 0.000000 0.000000 +jointrthigh=-0.619613 0.000000 0.000000 +jointlankle=-0.434976 0.000000 0.000000 +[frame6] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=1.014933 0.000000 0.000000 +jointlthigh=-0.593052 0.000000 0.000000 +jointrknee=1.012841 0.000000 0.000000 +jointrankle=-0.418315 0.000000 0.000000 +jointrthigh=-0.592000 0.000000 0.000000 +jointlankle=-0.422150 0.000000 0.000000 +[frame7] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.967082 0.000000 0.000000 +jointlthigh=-0.559964 0.000000 0.000000 +jointrknee=0.965171 0.000000 0.000000 +jointrankle=-0.403281 0.000000 0.000000 +jointrthigh=-0.558750 0.000000 0.000000 +jointlankle=-0.405372 0.000000 0.000000 +[frame8] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.915327 0.000000 0.000000 +jointlthigh=-0.530088 0.000000 0.000000 +jointrknee=0.914486 0.000000 0.000000 +jointrankle=-0.381388 0.000000 0.000000 +jointrthigh=-0.529662 0.000000 0.000000 +jointlankle=-0.383304 0.000000 0.000000 +[frame9] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.851866 0.000000 0.000000 +jointlthigh=-0.489450 0.000000 0.000000 +jointrknee=0.851407 0.000000 0.000000 +jointrankle=-0.359873 0.000000 0.000000 +jointrthigh=-0.489228 0.000000 0.000000 +jointlankle=-0.361341 0.000000 0.000000 +[frame10] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.784969 0.000000 0.000000 +jointlthigh=-0.450349 0.000000 0.000000 +jointrknee=0.783792 0.000000 0.000000 +jointrankle=-0.333466 0.000000 0.000000 +jointrthigh=-0.449588 0.000000 0.000000 +jointlankle=-0.334922 0.000000 0.000000 +[frame11] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.706923 0.000000 0.000000 +jointlthigh=-0.402363 0.000000 0.000000 +jointrknee=0.705787 0.000000 0.000000 +jointrankle=-0.303228 0.000000 0.000000 +jointrthigh=-0.401644 0.000000 0.000000 +jointlankle=-0.304623 0.000000 0.000000 +[frame12] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.624086 0.000000 0.000000 +jointlthigh=-0.352457 0.000000 0.000000 +jointrknee=0.622983 0.000000 0.000000 +jointrankle=-0.270173 0.000000 0.000000 +jointrthigh=-0.351778 0.000000 0.000000 +jointlankle=-0.271510 0.000000 0.000000 +[frame13] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.538815 0.000000 0.000000 +jointlthigh=-0.302151 0.000000 0.000000 +jointrknee=0.537741 0.000000 0.000000 +jointrankle=-0.235141 0.000000 0.000000 +jointrthigh=-0.301506 0.000000 0.000000 +jointlankle=-0.236417 0.000000 0.000000 +[frame14] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.453733 0.000000 0.000000 +jointlthigh=-0.252834 0.000000 0.000000 +jointrknee=0.452688 0.000000 0.000000 +jointrankle=-0.199367 0.000000 0.000000 +jointrthigh=-0.252216 0.000000 0.000000 +jointlankle=-0.200577 0.000000 0.000000 +[frame15] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.372492 0.000000 0.000000 +jointlthigh=-0.206458 0.000000 0.000000 +jointrknee=0.371476 0.000000 0.000000 +jointrankle=-0.164535 0.000000 0.000000 +jointrthigh=-0.205863 0.000000 0.000000 +jointlankle=-0.165670 0.000000 0.000000 +[frame16] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.297943 0.000000 0.000000 +jointlthigh=-0.164417 0.000000 0.000000 +jointrknee=0.296954 0.000000 0.000000 +jointrankle=-0.132380 0.000000 0.000000 +jointrthigh=-0.163902 0.000000 0.000000 +jointlankle=-0.133491 0.000000 0.000000 +[frame17] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.207059 0.000000 0.000000 +jointlthigh=-0.113710 0.000000 0.000000 +jointrknee=0.206186 0.000000 0.000000 +jointrankle=-0.092335 0.000000 0.000000 +jointrthigh=-0.113215 0.000000 0.000000 +jointlankle=-0.093257 0.000000 0.000000 +[frame18] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.141663 0.000000 0.000000 +jointlthigh=-0.077377 0.000000 0.000000 +jointrknee=0.140933 0.000000 0.000000 +jointrankle=-0.063568 0.000000 0.000000 +jointrthigh=-0.077079 0.000000 0.000000 +jointlankle=-0.064466 0.000000 0.000000 +[frame19] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.085265 0.000000 0.000000 +jointlthigh=-0.047059 0.000000 0.000000 +jointrknee=0.086492 0.000000 0.000000 +jointrankle=-0.041205 0.000000 0.000000 +jointrthigh=-0.046155 0.000000 0.000000 +jointlankle=-0.035754 0.000000 0.000000 +[frame20] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.043865 0.000000 0.000000 +jointlthigh=-0.023349 0.000000 0.000000 +jointrknee=0.044458 0.000000 0.000000 +jointrankle=-0.023335 0.000000 0.000000 +jointrthigh=-0.022692 0.000000 0.000000 +jointlankle=-0.021418 0.000000 0.000000 +[frame21] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.014700 0.000000 0.000000 +jointlthigh=-0.008241 0.000000 0.000000 +jointrknee=0.015780 0.000000 0.000000 +jointrankle=-0.007626 0.000000 0.000000 +jointrthigh=-0.008988 0.000000 0.000000 +jointlankle=-0.006474 0.000000 0.000000 +[frame22] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame2=0.000000 -5.359992 0.000000 +frame3=0.000000 -5.359983 0.000000 +frame4=0.000000 -5.359975 0.000000 +frame5=0.000000 -5.359966 0.000000 +frame6=0.000000 -5.359958 0.000000 +frame7=0.000000 -5.359949 0.000000 +frame8=0.000000 -5.359941 0.000000 +frame9=0.000000 -5.359932 0.000000 +frame10=0.000000 -5.359923 0.000000 +frame11=0.000000 -5.359915 0.000000 +frame12=0.000000 -5.359906 0.000000 +frame13=0.000000 -5.359898 0.000000 +frame14=0.000000 -5.359889 0.000000 +frame15=0.000000 -5.359880 0.000000 +frame16=0.000000 -5.359872 0.000000 +frame17=0.000000 -5.359863 0.000000 +frame18=0.000000 -5.359855 0.000000 +frame19=0.000000 -5.359846 0.000000 +frame20=0.000000 -5.359837 0.000000 +frame21=0.000000 -5.359828 0.000000 +frame22=0.000000 -5.359820 0.000000 + +[KeyJointPos] +frame1=0.000000 -2.216833 0.000000 +frame2=0.000000 -2.195398 0.000000 +frame3=0.000000 -2.162425 0.000000 +frame4=0.000000 -2.105240 0.000000 +frame5=0.000000 -2.032550 0.000000 +frame6=0.000000 -1.936822 0.000000 +frame7=0.000000 -1.833350 0.000000 +frame8=0.000000 -1.711781 0.000000 +frame9=0.000000 -1.557159 0.000000 +frame10=0.000000 -1.402537 0.000000 +frame11=0.000000 -1.247914 0.000000 +frame12=0.000000 -1.093292 0.000000 +frame13=0.000000 -0.938670 0.000000 +frame14=0.000000 -0.784048 0.000000 +frame15=0.000000 -0.629426 0.000000 +frame16=0.000000 -0.474804 0.000000 +frame17=0.000000 -0.320579 0.000000 +frame18=0.000000 -0.214742 0.000000 +frame19=0.000000 -0.128087 0.000000 +frame20=0.000000 -0.062031 0.000000 +frame21=0.000000 -0.018886 0.000000 +frame22=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/BLHBBLI.ANI b/CONTENT/BT/ANIMS/BLHBBLI.ANI new file mode 100644 index 0000000..e8c5432 --- /dev/null +++ b/CONTENT/BT/ANIMS/BLHBBLI.ANI @@ -0,0 +1,166 @@ +[LAB_ONLY] + +[HEADER] +framecount=10 +framerate=30 +skeletonfile=blh.skl +jointcount=9 + +[Time] +frame1=0 +frame2=0.0333333 +frame4=0.1 +frame5=0.133333 +frame7=0.2 +frame8=0.233333 +frame9=0.266667 +frame11=0.333333 +frame13=0.4 +frame15=0.466667 + +[JointIndices] +jointlocal=0 +jointshakey=1 +jointrthigh=10 +jointrknee=11 +jointrankle=13 +jointlthigh=6 +jointlknee=7 +jointlankle=9 +jointshakey2=15 + +[JointType] +jointlocal=balltranslate +jointshakey=ball +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointshakey2=ball + +[frame1] +jointlocal=0.000000 0.000000 -0.011345 +jointshakey=0.000000 0.000000 -0.011345 +jointrthigh=-0.483395 0.000000 0.000000 +jointrknee=-0.035667 0.000000 0.000000 +jointrankle=0.503541 0.000000 0.000000 +jointlthigh=-0.881215 0.000000 0.000000 +jointlknee=0.885870 0.000000 0.000000 +jointlankle=-2.098462 0.000000 0.000000 +jointshakey2=0.000000 0.000000 -0.011345 +[frame2] +jointlocal=0.000000 0.000000 -0.009724 +jointshakey=0.000000 0.000000 -0.009724 +jointrthigh=-0.391620 0.000000 0.000000 +jointrknee=-0.008118 0.000000 0.000000 +jointrankle=0.406632 0.000000 0.000000 +jointlthigh=-1.156911 0.000000 0.000000 +jointlknee=0.891125 0.000000 0.000000 +jointlankle=-2.120627 0.000000 0.000000 +jointshakey2=0.000000 0.000000 -0.009724 +[frame4] +jointlocal=0.000000 0.000000 -0.006483 +jointshakey=0.000000 0.000000 -0.006483 +jointrthigh=-0.202029 0.000000 0.000000 +jointrknee=0.036042 0.000000 0.000000 +jointrankle=0.160057 0.000000 0.000000 +jointlthigh=-1.557850 0.000000 0.000000 +jointlknee=0.794758 0.000000 0.000000 +jointlankle=-1.504774 0.000000 0.000000 +jointshakey2=0.000000 0.000000 -0.006483 +[frame5] +jointlocal=0.000000 0.000000 -0.004862 +jointshakey=0.000000 0.000000 -0.004862 +jointrthigh=-0.096053 0.000000 0.000000 +jointrknee=0.031463 0.000000 0.000000 +jointrankle=0.064957 0.000000 0.000000 +jointlthigh=-1.547451 0.000000 0.000000 +jointlknee=0.499082 0.000000 0.000000 +jointlankle=-0.932844 0.000000 0.000000 +jointshakey2=0.000000 0.000000 -0.004862 +[frame7] +jointlocal=0.000000 0.000000 -0.001621 +jointshakey=0.000000 0.000000 -0.001621 +jointrthigh=0.161337 0.000000 0.000000 +jointrknee=-0.002242 0.000000 0.000000 +jointrankle=-0.268123 0.000000 0.000000 +jointlthigh=-1.467630 0.000000 0.000000 +jointlknee=0.245496 0.000000 0.000000 +jointlankle=-0.217931 0.000000 0.000000 +jointshakey2=0.000000 0.000000 -0.001621 +[frame8] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointrthigh=0.328700 0.000000 0.000000 +jointrknee=-0.077642 0.000000 0.000000 +jointrankle=-0.413138 0.000000 0.000000 +jointlthigh=-1.277356 0.000000 0.000000 +jointlknee=0.001317 0.000000 0.000000 +jointlankle=0.139525 0.000000 0.000000 +jointshakey2=0.000000 0.000000 0.000000 +[frame9] +jointlocal=0.000000 0.000000 0.001621 +jointshakey=0.000000 0.000000 0.001621 +jointrthigh=0.496063 0.000000 0.000000 +jointrknee=-0.153042 0.000000 0.000000 +jointrankle=-0.558153 0.000000 0.000000 +jointlthigh=-1.037884 0.000000 0.000000 +jointlknee=-0.273359 0.000000 0.000000 +jointlankle=0.496981 0.000000 0.000000 +jointshakey2=0.000000 0.000000 0.001621 +[frame11] +jointlocal=0.000000 0.000000 0.004862 +jointshakey=0.000000 0.000000 0.004862 +jointrthigh=-0.000005 0.000000 0.000000 +jointrknee=0.320198 0.000000 0.000000 +jointrankle=-0.823633 0.000000 0.000000 +jointlthigh=-0.862392 0.000000 0.000000 +jointlknee=-0.184599 0.000000 0.000000 +jointlankle=0.494275 0.000000 0.000000 +jointshakey2=0.000000 0.000000 0.004862 +[frame13] +jointlocal=0.000000 0.000000 0.008103 +jointshakey=0.000000 0.000000 0.008103 +jointrthigh=-0.500569 0.000000 0.000000 +jointrknee=0.803209 0.000000 0.000000 +jointrankle=-1.421921 0.000000 0.000000 +jointlthigh=-0.686900 0.000000 0.000000 +jointlknee=-0.095840 0.000000 0.000000 +jointlankle=0.491570 0.000000 0.000000 +jointshakey2=0.000000 0.000000 0.008103 +[frame15] +jointlocal=0.000000 0.000000 0.011345 +jointshakey=0.000000 0.000000 0.011345 +jointrthigh=-0.881215 0.000000 0.000000 +jointrknee=0.885870 0.000000 0.000000 +jointrankle=-2.098462 0.000000 0.000000 +jointlthigh=-0.511408 0.000000 0.000000 +jointlknee=-0.007081 0.000000 0.000000 +jointlankle=0.488865 0.000000 0.000000 +jointshakey2=0.000000 0.000000 0.011345 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame2=0.000000 -5.358000 -20.975988 +frame4=0.000000 -5.358000 -20.504982 +frame5=0.000000 -5.358000 -17.790009 +frame7=0.000000 -5.358000 -19.602015 +frame8=0.000000 -5.358000 -19.602015 +frame9=0.000000 -5.358000 -19.601948 +frame11=0.000000 -5.358000 -24.595015 +frame13=0.000000 -5.358000 -24.594999 +frame15=0.000000 -5.358000 -24.594999 + +[KeyJointPos] +frame1=0.000000 0.312800 0.000000 +frame2=0.000000 0.312800 0.000000 +frame4=0.000000 0.184000 0.000000 +frame5=0.000000 0.055200 0.000000 +frame7=0.000000 -0.156400 0.000000 +frame8=0.000000 -0.262200 0.000000 +frame9=0.000000 -0.368000 0.000000 +frame11=0.000000 -0.140990 0.000000 +frame13=0.000000 0.086020 0.000000 +frame15=0.000000 0.313030 0.000000 diff --git a/CONTENT/BT/ANIMS/BLHBBRI.ANI b/CONTENT/BT/ANIMS/BLHBBRI.ANI new file mode 100644 index 0000000..12fd935 --- /dev/null +++ b/CONTENT/BT/ANIMS/BLHBBRI.ANI @@ -0,0 +1,166 @@ +[LAB_ONLY] + +[HEADER] +framecount=10 +framerate=30 +skeletonfile=blh.skl +jointcount=9 + +[Time] +frame1=0 +frame2=0.0333333 +frame4=0.1 +frame5=0.133333 +frame7=0.2 +frame8=0.233333 +frame9=0.266667 +frame11=0.333333 +frame13=0.4 +frame15=0.466667 + +[JointIndices] +jointlocal=0 +jointshakey=1 +jointrthigh=10 +jointrknee=11 +jointrankle=13 +jointlthigh=6 +jointlknee=7 +jointlankle=9 +jointshakey2=15 + +[JointType] +jointlocal=balltranslate +jointshakey=ball +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointshakey2=ball + +[frame1] +jointlocal=0.000000 0.000000 0.011345 +jointshakey=0.000000 0.000000 0.011345 +jointrthigh=-0.881215 0.000000 0.000000 +jointrknee=0.885870 0.000000 0.000000 +jointrankle=-2.098462 0.000000 0.000000 +jointlthigh=-0.483395 0.000000 0.000000 +jointlknee=-0.035667 0.000000 0.000000 +jointlankle=0.503541 0.000000 0.000000 +jointshakey2=0.000000 0.000000 0.011345 +[frame2] +jointlocal=0.000000 0.000000 0.009724 +jointshakey=0.000000 0.000000 0.009724 +jointrthigh=-1.156911 0.000000 0.000000 +jointrknee=0.891125 0.000000 0.000000 +jointrankle=-2.120627 0.000000 0.000000 +jointlthigh=-0.391620 0.000000 0.000000 +jointlknee=-0.008118 0.000000 0.000000 +jointlankle=0.406632 0.000000 0.000000 +jointshakey2=0.000000 0.000000 0.009724 +[frame4] +jointlocal=0.000000 0.000000 0.006483 +jointshakey=0.000000 0.000000 0.006483 +jointrthigh=-1.557850 0.000000 0.000000 +jointrknee=0.794758 0.000000 0.000000 +jointrankle=-1.504774 0.000000 0.000000 +jointlthigh=-0.202029 0.000000 0.000000 +jointlknee=0.036042 0.000000 0.000000 +jointlankle=0.160057 0.000000 0.000000 +jointshakey2=0.000000 0.000000 0.006483 +[frame5] +jointlocal=0.000000 0.000000 0.004862 +jointshakey=0.000000 0.000000 0.004862 +jointrthigh=-1.547451 0.000000 0.000000 +jointrknee=0.499082 0.000000 0.000000 +jointrankle=-0.932844 0.000000 0.000000 +jointlthigh=-0.096053 0.000000 0.000000 +jointlknee=0.031463 0.000000 0.000000 +jointlankle=0.064957 0.000000 0.000000 +jointshakey2=0.000000 0.000000 0.004862 +[frame7] +jointlocal=0.000000 0.000000 0.001621 +jointshakey=0.000000 0.000000 0.001621 +jointrthigh=-1.467630 0.000000 0.000000 +jointrknee=0.245496 0.000000 0.000000 +jointrankle=-0.217932 0.000000 0.000000 +jointlthigh=0.161337 0.000000 0.000000 +jointlknee=-0.002242 0.000000 0.000000 +jointlankle=-0.268123 0.000000 0.000000 +jointshakey2=0.000000 0.000000 0.001621 +[frame8] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointrthigh=-1.277356 0.000000 0.000000 +jointrknee=0.001317 0.000000 0.000000 +jointrankle=0.139525 0.000000 0.000000 +jointlthigh=0.328700 0.000000 0.000000 +jointlknee=-0.077642 0.000000 0.000000 +jointlankle=-0.413138 0.000000 0.000000 +jointshakey2=0.000000 0.000000 0.000000 +[frame9] +jointlocal=0.000000 0.000000 -0.001621 +jointshakey=0.000000 0.000000 -0.001621 +jointrthigh=-1.037884 0.000000 0.000000 +jointrknee=-0.273359 0.000000 0.000000 +jointrankle=0.496981 0.000000 0.000000 +jointlthigh=0.496063 0.000000 0.000000 +jointlknee=-0.153042 0.000000 0.000000 +jointlankle=-0.558153 0.000000 0.000000 +jointshakey2=0.000000 0.000000 -0.001621 +[frame11] +jointlocal=0.000000 0.000000 -0.004862 +jointshakey=0.000000 0.000000 -0.004862 +jointrthigh=-0.862048 0.000000 0.000000 +jointrknee=-0.185118 0.000000 0.000000 +jointrankle=0.494701 0.000000 0.000000 +jointlthigh=-0.000005 0.000000 0.000000 +jointlknee=0.320198 0.000000 0.000000 +jointlankle=-0.823633 0.000000 0.000000 +jointshakey2=0.000000 0.000000 -0.004862 +[frame13] +jointlocal=0.000000 0.000000 -0.008103 +jointshakey=0.000000 0.000000 -0.008103 +jointrthigh=-0.686211 0.000000 0.000000 +jointrknee=-0.096877 0.000000 0.000000 +jointrankle=0.492422 0.000000 0.000000 +jointlthigh=-0.500569 0.000000 0.000000 +jointlknee=0.803209 0.000000 0.000000 +jointlankle=-1.421921 0.000000 0.000000 +jointshakey2=0.000000 0.000000 -0.008103 +[frame15] +jointlocal=0.000000 0.000000 -0.011345 +jointshakey=0.000000 0.000000 -0.011345 +jointrthigh=-0.510374 0.000000 0.000000 +jointrknee=-0.008636 0.000000 0.000000 +jointrankle=0.490143 0.000000 0.000000 +jointlthigh=-0.881215 0.000000 0.000000 +jointlknee=0.885870 0.000000 0.000000 +jointlankle=-2.098462 0.000000 0.000000 +jointshakey2=0.000000 0.000000 -0.011345 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame2=0.000000 -5.358000 -20.975988 +frame4=0.000000 -5.358000 -20.504982 +frame5=0.000000 -5.358000 -17.790009 +frame7=0.000000 -5.358000 -19.602015 +frame8=0.000000 -5.358000 -19.602015 +frame9=0.000000 -5.358000 -19.601948 +frame11=0.000000 -5.358000 -24.595015 +frame13=0.000000 -5.358000 -24.594999 +frame15=0.000000 -5.358000 -24.594999 + +[KeyJointPos] +frame1=0.000000 0.312800 0.000000 +frame2=0.000000 0.312800 0.000000 +frame4=0.000000 0.184000 0.000000 +frame5=0.000000 0.055200 0.000000 +frame7=0.000000 -0.156400 0.000000 +frame8=0.000000 -0.262200 0.000000 +frame9=0.000000 -0.368000 0.000000 +frame11=0.000000 -0.140990 0.000000 +frame13=0.000000 0.086020 0.000000 +frame15=0.000000 0.313030 0.000000 diff --git a/CONTENT/BT/ANIMS/BLHBMP.ANI b/CONTENT/BT/ANIMS/BLHBMP.ANI new file mode 100644 index 0000000..467377b --- /dev/null +++ b/CONTENT/BT/ANIMS/BLHBMP.ANI @@ -0,0 +1,70 @@ +[LAB_ONLY] + +[HEADER] +framecount=3 +framerate=30 +skeletonfile=blh.skl +jointcount=8 + +[Time] +frame1=0 +frame8=0.233333 +frame15=0.466667 + +[JointIndices] +jointlocal=0 +jointshakey=1 +jointrthigh=10 +jointrknee=11 +jointrankle=13 +jointlthigh=6 +jointlknee=7 +jointlankle=9 + +[JointType] +jointlocal=balltranslate +jointshakey=ball +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointrthigh=0.944220 0.000000 0.000000 +jointrknee=-0.387435 0.000000 0.000000 +jointrankle=-0.037888 0.000000 0.000000 +jointlthigh=-0.438282 0.000000 0.000000 +jointlknee=-1.050563 0.000000 0.000000 +jointlankle=-1.625223 0.000000 0.000000 +[frame8] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.436332 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +[frame15] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame8=0.000000 -5.358000 0.000000 +frame15=0.000000 -5.358000 0.000000 + +[KeyJointPos] +frame1=0.000000 0.966000 0.000000 +frame8=0.000000 0.000000 0.000000 +frame15=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/BLHBMPI.ANI b/CONTENT/BT/ANIMS/BLHBMPI.ANI new file mode 100644 index 0000000..467377b --- /dev/null +++ b/CONTENT/BT/ANIMS/BLHBMPI.ANI @@ -0,0 +1,70 @@ +[LAB_ONLY] + +[HEADER] +framecount=3 +framerate=30 +skeletonfile=blh.skl +jointcount=8 + +[Time] +frame1=0 +frame8=0.233333 +frame15=0.466667 + +[JointIndices] +jointlocal=0 +jointshakey=1 +jointrthigh=10 +jointrknee=11 +jointrankle=13 +jointlthigh=6 +jointlknee=7 +jointlankle=9 + +[JointType] +jointlocal=balltranslate +jointshakey=ball +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointrthigh=0.944220 0.000000 0.000000 +jointrknee=-0.387435 0.000000 0.000000 +jointrankle=-0.037888 0.000000 0.000000 +jointlthigh=-0.438282 0.000000 0.000000 +jointlknee=-1.050563 0.000000 0.000000 +jointlankle=-1.625223 0.000000 0.000000 +[frame8] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.436332 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +[frame15] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame8=0.000000 -5.358000 0.000000 +frame15=0.000000 -5.358000 0.000000 + +[KeyJointPos] +frame1=0.000000 0.966000 0.000000 +frame8=0.000000 0.000000 0.000000 +frame15=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/BLHGSLI.ANI b/CONTENT/BT/ANIMS/BLHGSLI.ANI new file mode 100644 index 0000000..2de0631 --- /dev/null +++ b/CONTENT/BT/ANIMS/BLHGSLI.ANI @@ -0,0 +1,127 @@ +[LAB_ONLY] + +[HEADER] +framecount=7 +framerate=30 +skeletonfile=blh.skl +jointcount=9 + +[Time] +frame1=0 +frame6=0.166667 +frame11=0.333333 +frame12=0.366667 +frame17=0.533333 +frame23=0.733333 +frame29=0.933333 + +[JointIndices] +jointlocal=0 +jointshakey=1 +jointrthigh=10 +jointrknee=11 +jointrankle=13 +jointlthigh=6 +jointlknee=7 +jointlankle=9 +jointshakey2=15 + +[JointType] +jointlocal=balltranslate +jointshakey=ball +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointshakey2=ball + +[frame1] +jointlocal=0.000000 0.000000 -0.015708 +jointshakey=0.000000 0.000000 -0.015708 +jointrthigh=-0.092965 0.000000 0.000000 +jointrknee=-0.234668 0.000000 0.000000 +jointrankle=0.323729 0.000000 0.000000 +jointlthigh=-0.612296 0.000000 0.000000 +jointlknee=-0.087057 0.000000 0.000000 +jointlankle=-1.970442 0.000000 0.000000 +jointshakey2=0.000000 0.000000 -0.015708 +[frame6] +jointlocal=0.000000 0.000000 -0.012903 +jointshakey=0.000000 0.000000 -0.012903 +jointrthigh=-0.232338 0.000000 0.000000 +jointrknee=-0.151913 0.000000 0.000000 +jointrankle=0.399820 0.000000 0.000000 +jointlthigh=-1.200451 0.000000 0.000000 +jointlknee=0.487456 0.000000 0.000000 +jointlankle=-1.381585 0.000000 0.000000 +jointshakey2=0.000000 0.000000 -0.012903 +[frame11] +jointlocal=0.000000 0.000000 -0.010098 +jointshakey=0.000000 0.000000 -0.010098 +jointrthigh=-0.288573 0.000000 0.000000 +jointrknee=-0.062971 0.000000 0.000000 +jointrankle=0.355908 0.000000 0.000000 +jointlthigh=-1.661529 0.000000 0.000000 +jointlknee=0.976344 0.000000 0.000000 +jointlankle=-0.900531 0.000000 0.000000 +jointshakey2=0.000000 0.000000 -0.010098 +[frame12] +jointlocal=0.000000 0.000000 -0.009537 +jointshakey=0.000000 0.000000 -0.009537 +jointrthigh=-0.289623 0.000000 0.000000 +jointrknee=-0.047877 0.000000 0.000000 +jointrankle=0.342128 0.000000 0.000000 +jointlthigh=-1.707007 0.000000 0.000000 +jointlknee=1.044620 0.000000 0.000000 +jointlankle=-0.824160 0.000000 0.000000 +jointshakey2=0.000000 0.000000 -0.009537 +[frame17] +jointlocal=0.000000 0.000000 -0.006732 +jointshakey=0.000000 0.000000 -0.006732 +jointrthigh=-0.294873 0.000000 0.000000 +jointrknee=0.027594 0.000000 0.000000 +jointrankle=0.273231 0.000000 0.000000 +jointlthigh=-1.333983 0.000000 0.000000 +jointlknee=0.904337 0.000000 0.000000 +jointlankle=-0.442308 0.000000 0.000000 +jointshakey2=0.000000 0.000000 -0.006732 +[frame23] +jointlocal=0.000000 0.000000 -0.003366 +jointshakey=0.000000 0.000000 -0.003366 +jointrthigh=-0.146715 0.000000 0.000000 +jointrknee=0.013267 0.000000 0.000000 +jointrankle=0.137972 0.000000 0.000000 +jointlthigh=-0.469528 0.000000 0.000000 +jointlknee=0.435919 0.000000 0.000000 +jointlankle=-0.342685 0.000000 0.000000 +jointshakey2=0.000000 0.000000 -0.003366 +[frame29] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointrthigh=0.001444 0.000000 0.000000 +jointrknee=-0.001060 0.000000 0.000000 +jointrankle=0.002712 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointshakey2=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame6=0.000000 -5.358000 2.734200 +frame11=0.000000 -5.358000 -0.616196 +frame12=0.000000 -5.358000 -2.200012 +frame17=0.000000 -5.358000 -2.200001 +frame23=0.000000 -5.358000 -4.012757 +frame29=0.000000 -5.358000 -4.012747 + +[KeyJointPos] +frame1=0.000000 0.722200 0.000000 +frame6=0.000000 0.565202 0.000000 +frame11=0.000000 0.408204 0.000000 +frame12=0.000000 0.382038 0.000000 +frame17=0.000000 0.251206 0.000000 +frame23=0.000000 0.125603 0.000000 +frame29=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/BLHGSRI.ANI b/CONTENT/BT/ANIMS/BLHGSRI.ANI new file mode 100644 index 0000000..b206fef --- /dev/null +++ b/CONTENT/BT/ANIMS/BLHGSRI.ANI @@ -0,0 +1,127 @@ +[LAB_ONLY] + +[HEADER] +framecount=7 +framerate=30 +skeletonfile=blh.skl +jointcount=9 + +[Time] +frame1=0 +frame6=0.166667 +frame11=0.333333 +frame12=0.366667 +frame17=0.533333 +frame23=0.733333 +frame29=0.933333 + +[JointIndices] +jointlocal=0 +jointshakey=1 +jointrthigh=10 +jointrknee=11 +jointrankle=13 +jointlthigh=6 +jointlknee=7 +jointlankle=9 +jointshakey2=15 + +[JointType] +jointlocal=balltranslate +jointshakey=ball +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointshakey2=ball + +[frame1] +jointlocal=0.000000 0.000000 0.015708 +jointshakey=0.000000 0.000000 0.015708 +jointrthigh=-0.612296 0.000000 0.000000 +jointrknee=-0.087057 0.000000 0.000000 +jointrankle=-1.970442 0.000000 0.000000 +jointlthigh=-0.092965 0.000000 0.000000 +jointlknee=-0.234668 0.000000 0.000000 +jointlankle=0.323729 0.000000 0.000000 +jointshakey2=0.000000 0.000000 0.015708 +[frame6] +jointlocal=0.000000 0.000000 0.012903 +jointshakey=0.000000 0.000000 0.012903 +jointrthigh=-1.200451 0.000000 0.000000 +jointrknee=0.487456 0.000000 0.000000 +jointrankle=-1.381585 0.000000 0.000000 +jointlthigh=-0.250535 0.000000 0.000000 +jointlknee=-0.130181 0.000000 0.000000 +jointlankle=0.396345 0.000000 0.000000 +jointshakey2=0.000000 0.000000 0.012903 +[frame11] +jointlocal=0.000000 0.000000 0.010098 +jointshakey=0.000000 0.000000 0.010098 +jointrthigh=-1.661529 0.000000 0.000000 +jointrknee=0.976344 0.000000 0.000000 +jointrankle=-0.900531 0.000000 0.000000 +jointlthigh=-0.302300 0.000000 0.000000 +jointlknee=-0.046811 0.000000 0.000000 +jointlankle=0.353495 0.000000 0.000000 +jointshakey2=0.000000 0.000000 0.010098 +[frame12] +jointlocal=0.000000 0.000000 0.009537 +jointshakey=0.000000 0.000000 0.009537 +jointrthigh=-1.707007 0.000000 0.000000 +jointrknee=1.044620 0.000000 0.000000 +jointrankle=-0.824160 0.000000 0.000000 +jointlthigh=-0.302505 0.000000 0.000000 +jointlknee=-0.032703 0.000000 0.000000 +jointlankle=0.339857 0.000000 0.000000 +jointshakey2=0.000000 0.000000 0.009537 +[frame17] +jointlocal=0.000000 0.000000 0.006732 +jointshakey=0.000000 0.000000 0.006732 +jointrthigh=-1.333983 0.000000 0.000000 +jointrknee=0.904337 0.000000 0.000000 +jointrankle=-0.442308 0.000000 0.000000 +jointlthigh=-0.303532 0.000000 0.000000 +jointlknee=0.037837 0.000000 0.000000 +jointlankle=0.271664 0.000000 0.000000 +jointshakey2=0.000000 0.000000 0.006732 +[frame23] +jointlocal=0.000000 0.000000 0.003366 +jointshakey=0.000000 0.000000 0.003366 +jointrthigh=-0.469528 0.000000 0.000000 +jointrknee=0.435919 0.000000 0.000000 +jointrankle=-0.342685 0.000000 0.000000 +jointlthigh=-0.151350 0.000000 0.000000 +jointlknee=0.018789 0.000000 0.000000 +jointlankle=0.136604 0.000000 0.000000 +jointshakey2=0.000000 0.000000 0.003366 +[frame29] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlthigh=0.000832 0.000000 0.000000 +jointlknee=-0.000259 0.000000 0.000000 +jointlankle=0.001544 0.000000 0.000000 +jointshakey2=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame6=0.000000 -5.358000 2.734200 +frame11=0.000000 -5.358000 -0.616196 +frame12=0.000000 -5.358000 -2.200012 +frame17=0.000000 -5.358000 -2.200001 +frame23=0.000000 -5.358000 -4.012757 +frame29=0.000000 -5.358000 -4.012747 + +[KeyJointPos] +frame1=0.000000 0.722200 0.000000 +frame6=0.000000 0.565202 0.000000 +frame11=0.000000 0.408204 0.000000 +frame12=0.000000 0.382038 0.000000 +frame17=0.000000 0.251206 0.000000 +frame23=0.000000 0.125603 0.000000 +frame29=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/BLHRRL.ANI b/CONTENT/BT/ANIMS/BLHRRL.ANI new file mode 100644 index 0000000..d102c61 --- /dev/null +++ b/CONTENT/BT/ANIMS/BLHRRL.ANI @@ -0,0 +1,120 @@ +[LAB_ONLY] + +[HEADER] +framecount=8 +framerate=30 +skeletonfile=blh.skl +jointcount=7 + +[Time] +frame1=0 +frame2=0.0333333 +frame3=0.0666667 +frame4=0.1 +frame5=0.133333 +frame6=0.166667 +frame9=0.266667 +frame13=0.4 + +[JointIndices] +jointlocal=0 +jointrthigh=10 +jointrknee=11 +jointrankle=13 +jointlthigh=6 +jointlknee=7 +jointlankle=9 + +[JointType] +jointlocal=balltranslate +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointrthigh=0.913783 0.000000 0.000000 +jointrknee=-0.922394 0.000000 0.000000 +jointrankle=0.009104 0.000000 0.000000 +jointlthigh=-1.646139 0.000000 0.000000 +jointlknee=0.811337 0.000000 0.000000 +jointlankle=-2.235732 0.000000 0.000000 +[frame2] +jointlocal=0.000000 0.000000 0.000000 +jointrthigh=0.033921 0.000000 0.000000 +jointrknee=-0.144865 0.000000 0.000000 +jointrankle=0.111274 0.000000 0.000000 +jointlthigh=-1.313519 0.000000 0.000000 +jointlknee=0.822435 0.000000 0.000000 +jointlankle=-2.235732 0.000000 0.000000 +[frame3] +jointlocal=0.000000 0.000000 0.000000 +jointrthigh=-0.487371 0.000000 0.000000 +jointrknee=0.070899 0.000000 0.000000 +jointrankle=0.414381 0.000000 0.000000 +jointlthigh=-0.980899 0.000000 0.000000 +jointlknee=0.833533 0.000000 0.000000 +jointlankle=-2.235732 0.000000 0.000000 +[frame4] +jointlocal=0.000000 0.000000 0.000000 +jointrthigh=-0.730501 0.000000 0.000000 +jointrknee=-0.029180 0.000000 0.000000 +jointrankle=0.761325 0.000000 0.000000 +jointlthigh=-0.460708 0.000000 0.000000 +jointlknee=0.806560 0.000000 0.000000 +jointlankle=-1.408641 0.000000 0.000000 +[frame5] +jointlocal=0.000000 0.000000 0.000000 +jointrthigh=-0.958308 0.000000 0.000000 +jointrknee=-0.105959 0.000000 0.000000 +jointrankle=0.491211 0.000000 0.000000 +jointlthigh=0.128830 0.000000 0.000000 +jointlknee=0.338377 0.000000 0.000000 +jointlankle=-0.933974 0.000000 0.000000 +[frame6] +jointlocal=0.000000 0.000000 0.000000 +jointrthigh=-1.050454 0.000000 0.000000 +jointrknee=-0.137614 0.000000 0.000000 +jointrankle=-0.173533 0.000000 0.000000 +jointlthigh=0.718367 0.000000 0.000000 +jointlknee=-0.129807 0.000000 0.000000 +jointlankle=-0.459306 0.000000 0.000000 +[frame9] +jointlocal=0.000000 0.000000 0.000000 +jointrthigh=-0.438282 0.000000 0.000000 +jointrknee=-1.050563 0.000000 0.000000 +jointrankle=-1.625223 0.000000 0.000000 +jointlthigh=0.944220 0.000000 0.000000 +jointlknee=-0.387435 0.000000 0.000000 +jointlankle=-0.037888 0.000000 0.000000 +[frame13] +jointlocal=0.000000 0.000000 0.000000 +jointrthigh=-1.646139 0.000000 0.000000 +jointrknee=0.811337 0.000000 0.000000 +jointrankle=-2.235732 0.000000 0.000000 +jointlthigh=0.915212 0.000000 0.000000 +jointlknee=-0.926681 0.000000 0.000000 +jointlankle=0.013650 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame2=0.000031 -5.358000 62.185360 +frame3=0.000061 -5.358000 62.185589 +frame4=0.000000 -5.358000 58.268970 +frame5=0.000031 -5.358000 62.376011 +frame6=0.000061 -5.358000 62.376026 +frame9=0.000061 -5.358000 63.496014 +frame13=0.000000 -5.358000 59.948219 + +[KeyJointPos] +frame1=0.000000 0.607200 0.000000 +frame2=0.000000 0.386400 0.000000 +frame3=0.000000 0.165600 0.000000 +frame4=0.000000 -0.165637 0.000000 +frame5=0.000000 0.147182 0.000000 +frame6=0.000000 0.460000 0.000000 +frame9=0.000000 0.966000 0.000000 +frame13=0.000000 0.607200 0.000000 diff --git a/CONTENT/BT/ANIMS/BLHRRLI.ANI b/CONTENT/BT/ANIMS/BLHRRLI.ANI new file mode 100644 index 0000000..7dd8330 --- /dev/null +++ b/CONTENT/BT/ANIMS/BLHRRLI.ANI @@ -0,0 +1,153 @@ +[LAB_ONLY] + +[HEADER] +framecount=9 +framerate=30 +skeletonfile=blh.skl +jointcount=9 + +[Time] +frame1=0 +frame2=0.0333333 +frame3=0.0666667 +frame4=0.1 +frame5=0.133333 +frame6=0.166667 +frame7=0.2 +frame9=0.266667 +frame13=0.4 + +[JointIndices] +jointlocal=0 +jointshakey=1 +jointrthigh=10 +jointrknee=11 +jointrankle=13 +jointlthigh=6 +jointlknee=7 +jointlankle=9 +jointshakey2=15 + +[JointType] +jointlocal=balltranslate +jointshakey=ball +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointshakey2=ball + +[frame1] +jointlocal=0.000000 0.000000 -0.015708 +jointshakey=0.000000 0.000000 -0.015708 +jointrthigh=0.913783 0.000000 0.000000 +jointrknee=-0.922394 0.000000 0.000000 +jointrankle=0.009104 0.000000 0.000000 +jointlthigh=-1.646139 0.000000 0.000000 +jointlknee=0.811337 0.000000 0.000000 +jointlankle=-2.235732 0.000000 0.000000 +jointshakey2=0.000000 0.000000 -0.015708 +[frame2] +jointlocal=0.000000 0.000000 -0.013090 +jointshakey=0.000000 0.000000 -0.013090 +jointrthigh=0.033921 0.000000 0.000000 +jointrknee=-0.144865 0.000000 0.000000 +jointrankle=0.111274 0.000000 0.000000 +jointlthigh=-1.313519 0.000000 0.000000 +jointlknee=0.822435 0.000000 0.000000 +jointlankle=-2.235732 0.000000 0.000000 +jointshakey2=0.000000 0.000000 -0.013090 +[frame3] +jointlocal=0.000000 0.000000 -0.010472 +jointshakey=0.000000 0.000000 -0.010472 +jointrthigh=-0.487371 0.000000 0.000000 +jointrknee=0.070899 0.000000 0.000000 +jointrankle=0.414381 0.000000 0.000000 +jointlthigh=-0.980899 0.000000 0.000000 +jointlknee=0.833533 0.000000 0.000000 +jointlankle=-2.235732 0.000000 0.000000 +jointshakey2=0.000000 0.000000 -0.010472 +[frame4] +jointlocal=0.000000 0.000000 -0.007854 +jointshakey=0.000000 0.000000 -0.007854 +jointrthigh=-0.730501 0.000000 0.000000 +jointrknee=-0.029180 0.000000 0.000000 +jointrankle=0.761325 0.000000 0.000000 +jointlthigh=-0.460708 0.000000 0.000000 +jointlknee=0.806560 0.000000 0.000000 +jointlankle=-1.408641 0.000000 0.000000 +jointshakey2=0.000000 0.000000 -0.007854 +[frame5] +jointlocal=0.000000 0.000000 -0.005236 +jointshakey=0.000000 0.000000 -0.005236 +jointrthigh=-0.958308 0.000000 0.000000 +jointrknee=-0.105959 0.000000 0.000000 +jointrankle=0.491211 0.000000 0.000000 +jointlthigh=0.128830 0.000000 0.000000 +jointlknee=0.338377 0.000000 0.000000 +jointlankle=-0.933974 0.000000 0.000000 +jointshakey2=0.000000 0.000000 -0.005236 +[frame6] +jointlocal=0.000000 0.000000 -0.002618 +jointshakey=0.000000 0.000000 -0.002618 +jointrthigh=-1.050454 0.000000 0.000000 +jointrknee=-0.137614 0.000000 0.000000 +jointrankle=-0.173533 0.000000 0.000000 +jointlthigh=0.718367 0.000000 0.000000 +jointlknee=-0.129807 0.000000 0.000000 +jointlankle=-0.459306 0.000000 0.000000 +jointshakey2=0.000000 0.000000 -0.002618 +[frame7] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointrthigh=-0.846397 0.000000 0.000000 +jointrknee=-0.441930 0.000000 0.000000 +jointrankle=-0.657430 0.000000 0.000000 +jointlthigh=0.793651 0.000000 0.000000 +jointlknee=-0.215683 0.000000 0.000000 +jointlankle=-0.318833 0.000000 0.000000 +jointshakey2=0.000000 0.000000 0.000000 +[frame9] +jointlocal=0.000000 0.000000 0.005236 +jointshakey=0.000000 0.000000 0.005236 +jointrthigh=-0.438282 0.000000 0.000000 +jointrknee=-1.050563 0.000000 0.000000 +jointrankle=-1.625223 0.000000 0.000000 +jointlthigh=0.944220 0.000000 0.000000 +jointlknee=-0.387435 0.000000 0.000000 +jointlankle=-0.037888 0.000000 0.000000 +jointshakey2=0.000000 0.000000 0.005236 +[frame13] +jointlocal=0.000000 0.000000 0.015708 +jointshakey=0.000000 0.000000 0.015708 +jointrthigh=-1.646139 0.000000 0.000000 +jointrknee=0.811337 0.000000 0.000000 +jointrankle=-2.235732 0.000000 0.000000 +jointlthigh=0.915212 0.000000 0.000000 +jointlknee=-0.926681 0.000000 0.000000 +jointlankle=0.013650 0.000000 0.000000 +jointshakey2=0.000000 0.000000 0.015708 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame2=0.000031 -5.358000 62.185360 +frame3=0.000061 -5.358000 62.185589 +frame4=0.000000 -5.358000 58.268970 +frame5=0.000031 -5.358000 62.376011 +frame6=0.000061 -5.358000 62.376026 +frame7=0.000061 -5.358000 63.495945 +frame9=0.000061 -5.358000 63.496044 +frame13=0.000000 -5.358000 59.948219 + +[KeyJointPos] +frame1=0.000000 0.607200 0.000000 +frame2=0.000000 0.386400 0.000000 +frame3=0.000000 0.165600 0.000000 +frame4=0.000000 -0.165637 0.000000 +frame5=0.000000 0.147182 0.000000 +frame6=0.000000 0.460000 0.000000 +frame7=0.000000 0.628666 0.000000 +frame9=0.000000 0.966000 0.000000 +frame13=0.000000 0.607200 0.000000 diff --git a/CONTENT/BT/ANIMS/BLHRRR.ANI b/CONTENT/BT/ANIMS/BLHRRR.ANI new file mode 100644 index 0000000..a85cb28 --- /dev/null +++ b/CONTENT/BT/ANIMS/BLHRRR.ANI @@ -0,0 +1,120 @@ +[LAB_ONLY] + +[HEADER] +framecount=8 +framerate=30 +skeletonfile=blh.skl +jointcount=7 + +[Time] +frame1=0 +frame2=0.0333333 +frame3=0.0666667 +frame4=0.1 +frame5=0.133333 +frame6=0.166667 +frame9=0.266667 +frame13=0.4 + +[JointIndices] +jointlocal=0 +jointrthigh=10 +jointrknee=11 +jointrankle=13 +jointlthigh=6 +jointlknee=7 +jointlankle=9 + +[JointType] +jointlocal=balltranslate +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointrthigh=-1.646139 0.000000 0.000000 +jointrknee=0.811337 0.000000 0.000000 +jointrankle=-2.235732 0.000000 0.000000 +jointlthigh=0.905533 0.000000 0.000000 +jointlknee=-0.913097 0.000000 0.000000 +jointlankle=0.008695 0.000000 0.000000 +[frame2] +jointlocal=0.000000 0.000000 0.000000 +jointrthigh=-1.313519 0.000000 0.000000 +jointrknee=0.822435 0.000000 0.000000 +jointrankle=-2.235732 0.000000 0.000000 +jointlthigh=0.045056 0.000000 0.000000 +jointlknee=-0.149901 0.000000 0.000000 +jointlankle=0.106518 0.000000 0.000000 +[frame3] +jointlocal=0.000000 0.000000 0.000000 +jointrthigh=-0.980899 0.000000 0.000000 +jointrknee=0.833533 0.000000 0.000000 +jointrankle=-2.235732 0.000000 0.000000 +jointlthigh=-0.475314 0.000000 0.000000 +jointlknee=0.074334 0.000000 0.000000 +jointlankle=0.400612 0.000000 0.000000 +[frame4] +jointlocal=0.000000 0.000000 0.000000 +jointrthigh=-0.708351 0.000000 0.000000 +jointrknee=0.944061 0.000000 0.000000 +jointrankle=-1.299600 0.000000 0.000000 +jointlthigh=-0.737044 0.000000 0.000000 +jointlknee=-0.016193 0.000000 0.000000 +jointlankle=0.753521 0.000000 0.000000 +[frame5] +jointlocal=0.000000 0.000000 0.000000 +jointrthigh=-0.156865 0.000000 0.000000 +jointrknee=0.553850 0.000000 0.000000 +jointrankle=-0.863317 0.000000 0.000000 +jointlthigh=-0.875330 0.000000 0.000000 +jointlknee=-0.198671 0.000000 0.000000 +jointlankle=0.576409 0.000000 0.000000 +[frame6] +jointlocal=0.000000 0.000000 0.000000 +jointrthigh=0.394621 0.000000 0.000000 +jointrknee=0.163639 0.000000 0.000000 +jointrankle=-0.427033 0.000000 0.000000 +jointlthigh=-0.971846 0.000000 0.000000 +jointlknee=-0.255521 0.000000 0.000000 +jointlankle=-0.009223 0.000000 0.000000 +[frame9] +jointlocal=0.000000 0.000000 0.000000 +jointrthigh=0.944220 0.000000 0.000000 +jointrknee=-0.387435 0.000000 0.000000 +jointrankle=-0.037888 0.000000 0.000000 +jointlthigh=-0.438282 0.000000 0.000000 +jointlknee=-1.050563 0.000000 0.000000 +jointlankle=-1.625223 0.000000 0.000000 +[frame13] +jointlocal=0.000000 0.000000 0.000000 +jointrthigh=0.915212 0.000000 0.000000 +jointrknee=-0.926681 0.000000 0.000000 +jointrankle=0.013650 0.000000 0.000000 +jointlthigh=-1.646139 0.000000 0.000000 +jointlknee=0.811337 0.000000 0.000000 +jointlankle=-2.235732 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame2=0.000000 -5.358000 61.180569 +frame3=0.000000 -5.358000 61.180454 +frame4=0.000000 -5.358000 59.691013 +frame5=0.000000 -5.358000 61.553982 +frame6=0.000000 -5.358000 61.553997 +frame9=0.000000 -5.358000 62.921978 +frame13=0.000000 -5.358000 61.106274 + +[KeyJointPos] +frame1=0.000000 0.608948 0.000000 +frame2=0.000000 0.387297 0.000000 +frame3=0.000000 0.165646 0.000000 +frame4=0.000000 -0.165637 0.000000 +frame5=0.000000 0.147182 0.000000 +frame6=0.000000 0.460000 0.000000 +frame9=0.000000 0.966000 0.000000 +frame13=0.000000 0.607200 0.000000 diff --git a/CONTENT/BT/ANIMS/BLHRRRI.ANI b/CONTENT/BT/ANIMS/BLHRRRI.ANI new file mode 100644 index 0000000..5be3b31 --- /dev/null +++ b/CONTENT/BT/ANIMS/BLHRRRI.ANI @@ -0,0 +1,153 @@ +[LAB_ONLY] + +[HEADER] +framecount=9 +framerate=30 +skeletonfile=blh.skl +jointcount=9 + +[Time] +frame1=0 +frame2=0.0333333 +frame3=0.0666667 +frame4=0.1 +frame5=0.133333 +frame6=0.166667 +frame7=0.2 +frame9=0.266667 +frame13=0.4 + +[JointIndices] +jointlocal=0 +jointshakey=1 +jointrthigh=10 +jointrknee=11 +jointrankle=13 +jointlthigh=6 +jointlknee=7 +jointlankle=9 +jointshakey2=15 + +[JointType] +jointlocal=balltranslate +jointshakey=ball +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointshakey2=ball + +[frame1] +jointlocal=0.000000 0.000000 0.015708 +jointshakey=0.000000 0.000000 0.015708 +jointrthigh=-1.646139 0.000000 0.000000 +jointrknee=0.811337 0.000000 0.000000 +jointrankle=-2.235732 0.000000 0.000000 +jointlthigh=0.905533 0.000000 0.000000 +jointlknee=-0.913097 0.000000 0.000000 +jointlankle=0.008695 0.000000 0.000000 +jointshakey2=0.000000 0.000000 0.015708 +[frame2] +jointlocal=0.000000 0.000000 0.013090 +jointshakey=0.000000 0.000000 0.013090 +jointrthigh=-1.313519 0.000000 0.000000 +jointrknee=0.822435 0.000000 0.000000 +jointrankle=-2.235732 0.000000 0.000000 +jointlthigh=0.045056 0.000000 0.000000 +jointlknee=-0.149901 0.000000 0.000000 +jointlankle=0.106518 0.000000 0.000000 +jointshakey2=0.000000 0.000000 0.013090 +[frame3] +jointlocal=0.000000 0.000000 0.010472 +jointshakey=0.000000 0.000000 0.010472 +jointrthigh=-0.980899 0.000000 0.000000 +jointrknee=0.833533 0.000000 0.000000 +jointrankle=-2.235732 0.000000 0.000000 +jointlthigh=-0.475314 0.000000 0.000000 +jointlknee=0.074334 0.000000 0.000000 +jointlankle=0.400612 0.000000 0.000000 +jointshakey2=0.000000 0.000000 0.010472 +[frame4] +jointlocal=0.000000 0.000000 0.007854 +jointshakey=0.000000 0.000000 0.007854 +jointrthigh=-0.708351 0.000000 0.000000 +jointrknee=0.944061 0.000000 0.000000 +jointrankle=-1.299600 0.000000 0.000000 +jointlthigh=-0.737044 0.000000 0.000000 +jointlknee=-0.016193 0.000000 0.000000 +jointlankle=0.753521 0.000000 0.000000 +jointshakey2=0.000000 0.000000 0.007854 +[frame5] +jointlocal=0.000000 0.000000 0.005236 +jointshakey=0.000000 0.000000 0.005236 +jointrthigh=-0.156865 0.000000 0.000000 +jointrknee=0.553850 0.000000 0.000000 +jointrankle=-0.863317 0.000000 0.000000 +jointlthigh=-0.875330 0.000000 0.000000 +jointlknee=-0.198671 0.000000 0.000000 +jointlankle=0.576409 0.000000 0.000000 +jointshakey2=0.000000 0.000000 0.005236 +[frame6] +jointlocal=0.000000 0.000000 0.002618 +jointshakey=0.000000 0.000000 0.002618 +jointrthigh=0.394621 0.000000 0.000000 +jointrknee=0.163639 0.000000 0.000000 +jointrankle=-0.427033 0.000000 0.000000 +jointlthigh=-0.971846 0.000000 0.000000 +jointlknee=-0.255521 0.000000 0.000000 +jointlankle=-0.009223 0.000000 0.000000 +jointshakey2=0.000000 0.000000 0.002618 +[frame7] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointrthigh=0.577820 0.000000 0.000000 +jointrknee=-0.020052 0.000000 0.000000 +jointrankle=-0.297318 0.000000 0.000000 +jointlthigh=-0.793992 0.000000 0.000000 +jointlknee=-0.520535 0.000000 0.000000 +jointlankle=-0.547889 0.000000 0.000000 +jointshakey2=0.000000 0.000000 0.000000 +[frame9] +jointlocal=0.000000 0.000000 -0.005236 +jointshakey=0.000000 0.000000 -0.005236 +jointrthigh=0.944220 0.000000 0.000000 +jointrknee=-0.387435 0.000000 0.000000 +jointrankle=-0.037888 0.000000 0.000000 +jointlthigh=-0.438282 0.000000 0.000000 +jointlknee=-1.050563 0.000000 0.000000 +jointlankle=-1.625223 0.000000 0.000000 +jointshakey2=0.000000 0.000000 -0.005236 +[frame13] +jointlocal=0.000000 0.000000 -0.015708 +jointshakey=0.000000 0.000000 -0.015708 +jointrthigh=0.915212 0.000000 0.000000 +jointrknee=-0.926681 0.000000 0.000000 +jointrankle=0.013650 0.000000 0.000000 +jointlthigh=-1.646139 0.000000 0.000000 +jointlknee=0.811337 0.000000 0.000000 +jointlankle=-2.235732 0.000000 0.000000 +jointshakey2=0.000000 0.000000 -0.015708 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame2=0.000000 -5.358000 61.180569 +frame3=0.000000 -5.358000 61.180454 +frame4=0.000000 -5.358000 59.691013 +frame5=0.000000 -5.358000 61.553982 +frame6=0.000000 -5.358000 61.553997 +frame7=0.000000 -5.358000 62.921909 +frame9=0.000000 -5.358000 62.922009 +frame13=0.000000 -5.358000 61.106274 + +[KeyJointPos] +frame1=0.000000 0.608948 0.000000 +frame2=0.000000 0.387297 0.000000 +frame3=0.000000 0.165646 0.000000 +frame4=0.000000 -0.165637 0.000000 +frame5=0.000000 0.147182 0.000000 +frame6=0.000000 0.460000 0.000000 +frame7=0.000000 0.628666 0.000000 +frame9=0.000000 0.966000 0.000000 +frame13=0.000000 0.607200 0.000000 diff --git a/CONTENT/BT/ANIMS/BLHSQI.ANI b/CONTENT/BT/ANIMS/BLHSQI.ANI new file mode 100644 index 0000000..e69de29 diff --git a/CONTENT/BT/ANIMS/BLHSQT.ANI b/CONTENT/BT/ANIMS/BLHSQT.ANI new file mode 100644 index 0000000..e69de29 diff --git a/CONTENT/BT/ANIMS/BLHWWLI.ANI b/CONTENT/BT/ANIMS/BLHWWLI.ANI new file mode 100644 index 0000000..25c2c7f --- /dev/null +++ b/CONTENT/BT/ANIMS/BLHWWLI.ANI @@ -0,0 +1,166 @@ +[LAB_ONLY] + +[HEADER] +framecount=10 +framerate=30 +skeletonfile=blh.skl +jointcount=9 + +[Time] +frame1=0 +frame3=0.0666667 +frame5=0.133333 +frame7=0.2 +frame8=0.233333 +frame11=0.333333 +frame12=0.366667 +frame13=0.4 +frame14=0.433333 +frame15=0.466667 + +[JointIndices] +jointlocal=0 +jointshakey=1 +jointrthigh=10 +jointrknee=11 +jointrankle=13 +jointlthigh=6 +jointlknee=7 +jointlankle=9 +jointshakey2=15 + +[JointType] +jointlocal=balltranslate +jointshakey=ball +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointshakey2=ball + +[frame1] +jointlocal=0.000000 0.000000 -0.011345 +jointshakey=0.000000 0.000000 -0.011345 +jointrthigh=-0.469333 0.000000 0.000000 +jointrknee=-0.053226 0.000000 0.000000 +jointrankle=0.520976 0.000000 0.000000 +jointlthigh=-0.881215 0.000000 0.000000 +jointlknee=0.885870 0.000000 0.000000 +jointlankle=-2.098462 0.000000 0.000000 +jointshakey2=0.000000 0.000000 -0.011345 +[frame3] +jointlocal=0.000000 0.000000 -0.008103 +jointshakey=0.000000 0.000000 -0.008103 +jointrthigh=-0.715355 0.000000 0.000000 +jointrknee=-0.086325 0.000000 0.000000 +jointrankle=0.688497 0.000000 0.000000 +jointlthigh=-0.500569 0.000000 0.000000 +jointlknee=0.803209 0.000000 0.000000 +jointlankle=-1.421921 0.000000 0.000000 +jointshakey2=0.000000 0.000000 -0.008103 +[frame5] +jointlocal=0.000000 0.000000 -0.004862 +jointshakey=0.000000 0.000000 -0.004862 +jointrthigh=-0.881203 0.000000 0.000000 +jointrknee=-0.203308 0.000000 0.000000 +jointrankle=0.721332 0.000000 0.000000 +jointlthigh=0.013902 0.000000 0.000000 +jointlknee=0.317421 0.000000 0.000000 +jointlankle=-0.745380 0.000000 0.000000 +jointshakey2=0.000000 0.000000 -0.004862 +[frame7] +jointlocal=0.000000 0.000000 -0.001621 +jointshakey=0.000000 0.000000 -0.001621 +jointrthigh=-1.031465 0.000000 0.000000 +jointrknee=-0.287056 0.000000 0.000000 +jointrankle=0.528395 0.000000 0.000000 +jointlthigh=0.528374 0.000000 0.000000 +jointlknee=-0.168368 0.000000 0.000000 +jointlankle=-0.068839 0.000000 0.000000 +jointshakey2=0.000000 0.000000 -0.001621 +[frame8] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointrthigh=-1.321586 0.000000 0.000000 +jointrknee=0.056924 0.000000 0.000000 +jointrankle=0.056542 0.000000 0.000000 +jointlthigh=0.372267 0.000000 0.000000 +jointlknee=-0.118410 0.000000 0.000000 +jointlankle=-0.035390 0.000000 0.000000 +jointshakey2=0.000000 0.000000 0.000000 +[frame11] +jointlocal=0.000000 0.000000 0.004862 +jointshakey=0.000000 0.000000 0.004862 +jointrthigh=-1.547451 0.000000 0.000000 +jointrknee=0.499082 0.000000 0.000000 +jointrankle=-1.114445 0.000000 0.000000 +jointlthigh=-0.096053 0.000000 0.000000 +jointlknee=0.031463 0.000000 0.000000 +jointlankle=0.064957 0.000000 0.000000 +jointshakey2=0.000000 0.000000 0.004862 +[frame12] +jointlocal=0.000000 0.000000 0.006483 +jointshakey=0.000000 0.000000 0.006483 +jointrthigh=-1.557850 0.000000 0.000000 +jointrknee=0.794758 0.000000 0.000000 +jointrankle=-1.504774 0.000000 0.000000 +jointlthigh=-0.194077 0.000000 0.000000 +jointlknee=0.028565 0.000000 0.000000 +jointlankle=0.166990 0.000000 0.000000 +jointshakey2=0.000000 0.000000 0.006483 +[frame13] +jointlocal=0.000000 0.000000 0.008103 +jointshakey=0.000000 0.000000 0.008103 +jointrthigh=-1.357380 0.000000 0.000000 +jointrknee=0.842942 0.000000 0.000000 +jointrankle=-1.812701 0.000000 0.000000 +jointlthigh=-0.312433 0.000000 0.000000 +jointlknee=0.032400 0.000000 0.000000 +jointlankle=0.280169 0.000000 0.000000 +jointshakey2=0.000000 0.000000 0.008103 +[frame14] +jointlocal=0.000000 0.000000 0.009724 +jointshakey=0.000000 0.000000 0.009724 +jointrthigh=-1.156911 0.000000 0.000000 +jointrknee=0.891125 0.000000 0.000000 +jointrankle=-2.120627 0.000000 0.000000 +jointlthigh=-0.397537 0.000000 0.000000 +jointlknee=-0.004036 0.000000 0.000000 +jointlankle=0.399534 0.000000 0.000000 +jointshakey2=0.000000 0.000000 0.009724 +[frame15] +jointlocal=0.000000 0.000000 0.011345 +jointshakey=0.000000 0.000000 0.011345 +jointrthigh=-0.881215 0.000000 0.000000 +jointrknee=0.885870 0.000000 0.000000 +jointrankle=-2.098462 0.000000 0.000000 +jointlthigh=-0.475248 0.000000 0.000000 +jointlknee=-0.046545 0.000000 0.000000 +jointlankle=0.515596 0.000000 0.000000 +jointshakey2=0.000000 0.000000 0.011345 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame3=0.000000 -5.358000 25.004480 +frame5=0.000000 -5.358000 25.004509 +frame7=0.000000 -5.358000 25.004513 +frame8=0.000000 -5.358000 19.503023 +frame11=0.000000 -5.358000 19.503000 +frame12=0.000000 -5.358000 17.424032 +frame13=0.000000 -5.358000 20.797464 +frame14=0.000000 -5.358000 20.797464 +frame15=0.000000 -5.358000 21.207048 + +[KeyJointPos] +frame1=0.000000 0.312800 0.000000 +frame3=0.000000 0.085736 0.000000 +frame5=0.000000 -0.141327 0.000000 +frame7=0.000000 -0.368391 0.000000 +frame8=0.000000 -0.262493 0.000000 +frame11=0.000000 0.055200 0.000000 +frame12=0.000000 0.184046 0.000000 +frame13=0.000000 0.248515 0.000000 +frame14=0.000000 0.312984 0.000000 +frame15=0.000000 0.313030 0.000000 diff --git a/CONTENT/BT/ANIMS/FIRBBL.ANI b/CONTENT/BT/ANIMS/FIRBBL.ANI new file mode 100644 index 0000000..92e643d --- /dev/null +++ b/CONTENT/BT/ANIMS/FIRBBL.ANI @@ -0,0 +1,98 @@ +[LAB_ONLY] + +[HEADER] +framecount=6 +framerate=30 +skeletonfile=fir.skl +jointcount=7 + +[Time] +frame1=0 +frame5=0.133333 +frame7=0.2 +frame11=0.333333 +frame14=0.433333 +frame15=0.466667 + +[JointIndices] +jointlocal=0 +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 + +[JointType] +jointlocal=balltranslate +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.763780 0.000000 0.000000 +jointlknee=-0.532840 0.000000 0.000000 +jointlankle=0.108070 0.000000 0.000000 +jointrthigh=-0.418111 0.000000 0.000000 +jointrknee=-0.537532 0.000000 0.000000 +jointrankle=0.565459 0.000000 0.000000 +[frame5] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.673966 0.000000 0.000000 +jointlknee=-1.257710 0.000000 0.000000 +jointlankle=0.364032 0.000000 0.000000 +jointrthigh=-0.163670 0.000000 0.000000 +jointrknee=-0.373118 0.000000 0.000000 +jointrankle=0.538588 0.000000 0.000000 +[frame7] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.508908 0.000000 0.000000 +jointlknee=-1.544571 0.000000 0.000000 +jointlankle=0.519323 0.000000 0.000000 +jointrthigh=0.111861 0.000000 0.000000 +jointrknee=-0.554559 0.000000 0.000000 +jointrankle=0.444672 0.000000 0.000000 +[frame11] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.002580 0.000000 0.000000 +jointlknee=-1.424117 0.000000 0.000000 +jointlankle=-0.107811 0.000000 0.000000 +jointrthigh=0.514499 0.000000 0.000000 +jointrknee=-0.623838 0.000000 0.000000 +jointrankle=0.107433 0.000000 0.000000 +[frame14] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.357375 0.000000 0.000000 +jointlknee=-0.718334 0.000000 0.000000 +jointlankle=0.464505 0.000000 0.000000 +jointrthigh=0.701460 0.000000 0.000000 +jointrknee=-0.555590 0.000000 0.000000 +jointrankle=0.107911 0.000000 0.000000 +[frame15] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.357393 0.000000 0.000000 +jointlknee=-0.643986 0.000000 0.000000 +jointlankle=0.583579 0.000000 0.000000 +jointrthigh=0.763780 0.000000 0.000000 +jointrknee=-0.532840 0.000000 0.000000 +jointrankle=0.108070 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.363000 0.000000 +frame5=0.000000 -5.363000 -12.991726 +frame7=0.000000 -5.363000 -12.836402 +frame11=0.000000 -5.363000 -12.512773 +frame14=0.000000 -5.363000 -11.923128 +frame15=0.000000 -5.363000 -11.923128 + +[KeyJointPos] +frame1=0.000000 -0.601440 0.000000 +frame5=0.000000 -0.383815 0.000000 +frame7=0.000000 -0.275000 0.000000 +frame11=0.000000 -0.340310 0.000000 +frame14=0.000000 -0.535078 0.000000 +frame15=0.000000 -0.600000 0.000000 diff --git a/CONTENT/BT/ANIMS/FIRBBLI.ANI b/CONTENT/BT/ANIMS/FIRBBLI.ANI new file mode 100644 index 0000000..2cd8d72 --- /dev/null +++ b/CONTENT/BT/ANIMS/FIRBBLI.ANI @@ -0,0 +1,106 @@ +[LAB_ONLY] + +[HEADER] +framecount=6 +framerate=30 +skeletonfile=fir.skl +jointcount=8 + +[Time] +frame1=0 +frame5=0.133333 +frame7=0.2 +frame11=0.333333 +frame14=0.433333 +frame15=0.466667 + +[JointIndices] +jointlocal=0 +jointshakey=3 +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 + +[JointType] +jointlocal=balltranslate +jointshakey=ball +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.763780 0.000000 0.000000 +jointlknee=-0.532840 0.000000 0.000000 +jointlankle=0.108070 0.000000 0.000000 +jointrthigh=-0.418111 0.000000 0.000000 +jointrknee=-0.537532 0.000000 0.000000 +jointrankle=0.565459 0.000000 0.000000 +[frame5] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.673966 0.000000 0.000000 +jointlknee=-1.257710 0.000000 0.000000 +jointlankle=0.364032 0.000000 0.000000 +jointrthigh=-0.163670 0.000000 0.000000 +jointrknee=-0.373118 0.000000 0.000000 +jointrankle=0.538588 0.000000 0.000000 +[frame7] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.508908 0.000000 0.000000 +jointlknee=-1.544571 0.000000 0.000000 +jointlankle=0.519323 0.000000 0.000000 +jointrthigh=0.111861 0.000000 0.000000 +jointrknee=-0.554559 0.000000 0.000000 +jointrankle=0.444672 0.000000 0.000000 +[frame11] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.002580 0.000000 0.000000 +jointlknee=-1.424117 0.000000 0.000000 +jointlankle=-0.107811 0.000000 0.000000 +jointrthigh=0.514499 0.000000 0.000000 +jointrknee=-0.623838 0.000000 0.000000 +jointrankle=0.107433 0.000000 0.000000 +[frame14] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.357375 0.000000 0.000000 +jointlknee=-0.718334 0.000000 0.000000 +jointlankle=0.464505 0.000000 0.000000 +jointrthigh=0.701460 0.000000 0.000000 +jointrknee=-0.555590 0.000000 0.000000 +jointrankle=0.107911 0.000000 0.000000 +[frame15] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.357393 0.000000 0.000000 +jointlknee=-0.643986 0.000000 0.000000 +jointlankle=0.583579 0.000000 0.000000 +jointrthigh=0.763780 0.000000 0.000000 +jointrknee=-0.532840 0.000000 0.000000 +jointrankle=0.108070 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.363000 0.000000 +frame5=0.000000 -5.363000 -12.991726 +frame7=0.000000 -5.363000 -12.836402 +frame11=0.000000 -5.363000 -12.512773 +frame14=0.000000 -5.363000 -11.923128 +frame15=0.000000 -5.363000 -11.923128 + +[KeyJointPos] +frame1=0.000000 -0.601440 0.000000 +frame5=0.000000 -0.383815 0.000000 +frame7=0.000000 -0.275000 0.000000 +frame11=0.000000 -0.340310 0.000000 +frame14=0.000000 -0.535078 0.000000 +frame15=0.000000 -0.600000 0.000000 diff --git a/CONTENT/BT/ANIMS/FIRBBR.ANI b/CONTENT/BT/ANIMS/FIRBBR.ANI new file mode 100644 index 0000000..6197630 --- /dev/null +++ b/CONTENT/BT/ANIMS/FIRBBR.ANI @@ -0,0 +1,98 @@ +[LAB_ONLY] + +[HEADER] +framecount=6 +framerate=30 +skeletonfile=fir.skl +jointcount=7 + +[Time] +frame1=0 +frame5=0.133333 +frame7=0.2 +frame11=0.333333 +frame14=0.433333 +frame15=0.466667 + +[JointIndices] +jointlocal=0 +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 + +[JointType] +jointlocal=balltranslate +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.457177 0.000000 0.000000 +jointlknee=-0.462128 0.000000 0.000000 +jointlankle=0.540994 0.000000 0.000000 +jointrthigh=0.763780 0.000000 0.000000 +jointrknee=-0.532840 0.000000 0.000000 +jointrankle=0.108070 0.000000 0.000000 +[frame5] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.167772 0.000000 0.000000 +jointlknee=-0.362777 0.000000 0.000000 +jointlankle=0.531823 0.000000 0.000000 +jointrthigh=0.629743 0.000000 0.000000 +jointrknee=-1.172511 0.000000 0.000000 +jointrankle=0.324397 0.000000 0.000000 +[frame7] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.110712 0.000000 0.000000 +jointlknee=-0.555463 0.000000 0.000000 +jointlankle=0.445209 0.000000 0.000000 +jointrthigh=0.510915 0.000000 0.000000 +jointrknee=-1.545156 0.000000 0.000000 +jointrankle=0.513874 0.000000 0.000000 +[frame11] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.514499 0.000000 0.000000 +jointlknee=-0.623838 0.000000 0.000000 +jointlankle=0.107433 0.000000 0.000000 +jointrthigh=-0.002580 0.000000 0.000000 +jointrknee=-1.424117 0.000000 0.000000 +jointrankle=-0.107811 0.000000 0.000000 +[frame14] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.701460 0.000000 0.000000 +jointlknee=-0.555590 0.000000 0.000000 +jointlankle=0.107911 0.000000 0.000000 +jointrthigh=-0.398043 0.000000 0.000000 +jointrknee=-0.639230 0.000000 0.000000 +jointrankle=0.423710 0.000000 0.000000 +[frame15] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.763780 0.000000 0.000000 +jointlknee=-0.532840 0.000000 0.000000 +jointlankle=0.108070 0.000000 0.000000 +jointrthigh=-0.549325 0.000000 0.000000 +jointrknee=-0.265173 0.000000 0.000000 +jointrankle=0.445083 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.363000 0.000000 +frame5=0.000000 -5.363000 -12.991726 +frame7=0.000000 -5.363000 -12.836402 +frame11=0.000000 -5.363000 -12.512773 +frame14=0.000000 -5.363000 -11.923128 +frame15=0.000000 -5.363000 -11.923128 + +[KeyJointPos] +frame1=0.000000 -0.601440 0.000000 +frame5=0.000000 -0.383815 0.000000 +frame7=0.000000 -0.275000 0.000000 +frame11=0.000000 -0.340310 0.000000 +frame14=0.000000 -0.535078 0.000000 +frame15=0.000000 -0.600000 0.000000 diff --git a/CONTENT/BT/ANIMS/FIRBBRI.ANI b/CONTENT/BT/ANIMS/FIRBBRI.ANI new file mode 100644 index 0000000..ff6740c --- /dev/null +++ b/CONTENT/BT/ANIMS/FIRBBRI.ANI @@ -0,0 +1,106 @@ +[LAB_ONLY] + +[HEADER] +framecount=6 +framerate=30 +skeletonfile=fir.skl +jointcount=8 + +[Time] +frame1=0 +frame5=0.133333 +frame7=0.2 +frame11=0.333333 +frame14=0.433333 +frame15=0.466667 + +[JointIndices] +jointlocal=0 +jointshakey=3 +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 + +[JointType] +jointlocal=balltranslate +jointshakey=ball +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.457177 0.000000 0.000000 +jointlknee=-0.462128 0.000000 0.000000 +jointlankle=0.540994 0.000000 0.000000 +jointrthigh=0.763780 0.000000 0.000000 +jointrknee=-0.532840 0.000000 0.000000 +jointrankle=0.108070 0.000000 0.000000 +[frame5] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.167772 0.000000 0.000000 +jointlknee=-0.362777 0.000000 0.000000 +jointlankle=0.531823 0.000000 0.000000 +jointrthigh=0.629743 0.000000 0.000000 +jointrknee=-1.172511 0.000000 0.000000 +jointrankle=0.324397 0.000000 0.000000 +[frame7] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.110712 0.000000 0.000000 +jointlknee=-0.555463 0.000000 0.000000 +jointlankle=0.445209 0.000000 0.000000 +jointrthigh=0.510915 0.000000 0.000000 +jointrknee=-1.545156 0.000000 0.000000 +jointrankle=0.513874 0.000000 0.000000 +[frame11] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.514499 0.000000 0.000000 +jointlknee=-0.623838 0.000000 0.000000 +jointlankle=0.107433 0.000000 0.000000 +jointrthigh=-0.002580 0.000000 0.000000 +jointrknee=-1.424117 0.000000 0.000000 +jointrankle=-0.107811 0.000000 0.000000 +[frame14] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.701460 0.000000 0.000000 +jointlknee=-0.555590 0.000000 0.000000 +jointlankle=0.107911 0.000000 0.000000 +jointrthigh=-0.398043 0.000000 0.000000 +jointrknee=-0.639230 0.000000 0.000000 +jointrankle=0.423710 0.000000 0.000000 +[frame15] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.763780 0.000000 0.000000 +jointlknee=-0.532840 0.000000 0.000000 +jointlankle=0.108070 0.000000 0.000000 +jointrthigh=-0.549325 0.000000 0.000000 +jointrknee=-0.265173 0.000000 0.000000 +jointrankle=0.445083 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.363000 0.000000 +frame5=0.000000 -5.363000 -12.991726 +frame7=0.000000 -5.363000 -12.836402 +frame11=0.000000 -5.363000 -12.512773 +frame14=0.000000 -5.363000 -11.923128 +frame15=0.000000 -5.363000 -11.923128 + +[KeyJointPos] +frame1=0.000000 -0.601440 0.000000 +frame5=0.000000 -0.383815 0.000000 +frame7=0.000000 -0.275000 0.000000 +frame11=0.000000 -0.340310 0.000000 +frame14=0.000000 -0.535078 0.000000 +frame15=0.000000 -0.600000 0.000000 diff --git a/CONTENT/BT/ANIMS/FIRBMP.ANI b/CONTENT/BT/ANIMS/FIRBMP.ANI new file mode 100644 index 0000000..473ef80 --- /dev/null +++ b/CONTENT/BT/ANIMS/FIRBMP.ANI @@ -0,0 +1,80 @@ +[LAB_ONLY] + +[HEADER] +framecount=3 +framerate=30 +skeletonfile=fir.skl +jointcount=10 + +[Time] +frame1=0 +frame8=0.233333 +frame15=0.466667 + +[JointIndices] +jointlocal=0 +jointhip=1 +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 +jointrshoulder=7 +jointlshoulder=5 + +[JointType] +jointlocal=balltranslate +jointhip=hingex +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointrshoulder=hingex +jointlshoulder=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointhip=-0.296706 0.000000 0.000000 +jointlthigh=-0.422979 0.000000 0.000000 +jointlknee=-1.440987 0.000000 0.000000 +jointlankle=-0.529400 0.000000 0.000000 +jointrthigh=0.996014 0.000000 0.000000 +jointrknee=-0.315163 0.000000 0.000000 +jointrankle=0.114052 0.000000 0.000000 +jointrshoulder=0.296706 0.000000 0.000000 +jointlshoulder=0.296706 0.000000 0.000000 +[frame8] +jointlocal=0.000000 0.000000 0.000000 +jointhip=0.436332 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointrshoulder=0.000000 0.000000 0.000000 +jointlshoulder=0.000000 0.000000 0.000000 +[frame15] +jointlocal=0.000000 0.000000 0.000000 +jointhip=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointrshoulder=0.000000 0.000000 0.000000 +jointlshoulder=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.363000 0.000000 +frame8=0.000000 -5.363000 0.000000 +frame15=0.000000 -5.363000 0.000000 + +[KeyJointPos] +frame1=0.000000 0.380000 0.000000 +frame8=0.000000 0.000000 0.000000 +frame15=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/FIRBMPI.ANI b/CONTENT/BT/ANIMS/FIRBMPI.ANI new file mode 100644 index 0000000..b898137 --- /dev/null +++ b/CONTENT/BT/ANIMS/FIRBMPI.ANI @@ -0,0 +1,85 @@ +[LAB_ONLY] + +[HEADER] +framecount=3 +framerate=30 +skeletonfile=fir.skl +jointcount=11 + +[Time] +frame1=0 +frame8=0.233333 +frame15=0.466667 + +[JointIndices] +jointlocal=0 +jointhip=1 +jointshakey=3 +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 +jointrshoulder=7 +jointlshoulder=5 + +[JointType] +jointlocal=balltranslate +jointhip=hingex +jointshakey=ball +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointrshoulder=hingex +jointlshoulder=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointhip=-0.296706 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.422979 0.000000 0.000000 +jointlknee=-1.440987 0.000000 0.000000 +jointlankle=-0.529400 0.000000 0.000000 +jointrthigh=0.996014 0.000000 0.000000 +jointrknee=-0.315163 0.000000 0.000000 +jointrankle=0.114052 0.000000 0.000000 +jointrshoulder=0.296706 0.000000 0.000000 +jointlshoulder=0.296706 0.000000 0.000000 +[frame8] +jointlocal=0.000000 0.000000 0.000000 +jointhip=0.436332 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointrshoulder=0.000000 0.000000 0.000000 +jointlshoulder=0.000000 0.000000 0.000000 +[frame15] +jointlocal=0.000000 0.000000 0.000000 +jointhip=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointrshoulder=0.000000 0.000000 0.000000 +jointlshoulder=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.363000 0.000000 +frame8=0.000000 -5.363000 0.000000 +frame15=0.000000 -5.363000 0.000000 + +[KeyJointPos] +frame1=0.000000 0.380000 0.000000 +frame8=0.000000 0.000000 0.000000 +frame15=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/FIRBSL.ANI b/CONTENT/BT/ANIMS/FIRBSL.ANI new file mode 100644 index 0000000..7b52307 --- /dev/null +++ b/CONTENT/BT/ANIMS/FIRBSL.ANI @@ -0,0 +1,140 @@ +[LAB_ONLY] + +[HEADER] +framecount=8 +framerate=30 +skeletonfile=fir.skl +jointcount=9 + +[Time] +frame1=0 +frame6=0.166667 +frame9=0.266667 +frame12=0.366667 +frame15=0.466667 +frame25=0.8 +frame31=1 +frame34=1.1 + +[JointIndices] +jointlocal=0 +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 +jointrshoulder=7 +jointlshoulder=5 + +[JointType] +jointlocal=balltranslate +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointrshoulder=hingex +jointlshoulder=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.763780 0.000000 0.000000 +jointlknee=-0.532840 0.000000 0.000000 +jointlankle=0.108070 0.000000 0.000000 +jointrthigh=-0.561200 0.000000 0.000000 +jointrknee=-0.258838 0.000000 0.000000 +jointrankle=0.485029 0.000000 0.000000 +jointrshoulder=0.122173 0.000000 0.000000 +jointlshoulder=0.122173 0.000000 0.000000 +[frame6] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.875508 0.000000 0.000000 +jointlknee=-0.908795 0.000000 0.000000 +jointlankle=0.212593 0.000000 0.000000 +jointrthigh=-0.461823 0.000000 0.000000 +jointrknee=-0.249036 0.000000 0.000000 +jointrankle=0.478193 0.000000 0.000000 +jointrshoulder=0.105205 0.000000 0.000000 +jointlshoulder=0.105205 0.000000 0.000000 +[frame9] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.866584 0.000000 0.000000 +jointlknee=-1.030950 0.000000 0.000000 +jointlankle=0.258820 0.000000 0.000000 +jointrthigh=-0.402196 0.000000 0.000000 +jointrknee=-0.243155 0.000000 0.000000 +jointrankle=0.474091 0.000000 0.000000 +jointrshoulder=0.095023 0.000000 0.000000 +jointlshoulder=0.095023 0.000000 0.000000 +[frame12] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.773891 0.000000 0.000000 +jointlknee=-1.015089 0.000000 0.000000 +jointlankle=0.286267 0.000000 0.000000 +jointrthigh=-0.342570 0.000000 0.000000 +jointrknee=-0.237274 0.000000 0.000000 +jointrankle=0.469989 0.000000 0.000000 +jointrshoulder=0.084842 0.000000 0.000000 +jointlshoulder=0.084842 0.000000 0.000000 +[frame15] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.701432 0.000000 0.000000 +jointlknee=-1.016918 0.000000 0.000000 +jointlankle=0.303888 0.000000 0.000000 +jointrthigh=-0.279805 0.000000 0.000000 +jointrknee=-0.234046 0.000000 0.000000 +jointrankle=0.429638 0.000000 0.000000 +jointrshoulder=0.074661 0.000000 0.000000 +jointlshoulder=0.074661 0.000000 0.000000 +[frame25] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.371350 0.000000 0.000000 +jointlknee=-0.755977 0.000000 0.000000 +jointlankle=0.293959 0.000000 0.000000 +jointrthigh=-0.070588 0.000000 0.000000 +jointrknee=-0.223285 0.000000 0.000000 +jointrankle=0.295133 0.000000 0.000000 +jointrshoulder=0.040724 0.000000 0.000000 +jointlshoulder=0.040724 0.000000 0.000000 +[frame31] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.051151 0.000000 0.000000 +jointlknee=-0.219175 0.000000 0.000000 +jointlankle=0.166608 0.000000 0.000000 +jointrthigh=-0.023529 0.000000 0.000000 +jointrknee=-0.074428 0.000000 0.000000 +jointrankle=0.098378 0.000000 0.000000 +jointrshoulder=0.013575 0.000000 0.000000 +jointlshoulder=0.013575 0.000000 0.000000 +[frame34] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointrshoulder=0.000000 0.000000 0.000000 +jointlshoulder=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.363000 0.000000 +frame6=0.000000 -5.363000 -3.141383 +frame9=0.000000 -5.363000 -3.141379 +frame12=0.000000 -5.363000 -3.141382 +frame15=0.000000 -5.363505 -3.109339 +frame25=0.000000 -5.365190 -3.109338 +frame31=0.000000 -5.365190 -2.860754 +frame34=0.000000 -5.365190 -2.860753 + +[KeyJointPos] +frame1=0.000000 -0.600000 0.000000 +frame6=0.000000 -0.481936 0.000000 +frame9=0.000000 -0.411098 0.000000 +frame12=0.000000 -0.340260 0.000000 +frame15=0.000000 -0.289433 0.000000 +frame25=0.000000 -0.120010 0.000000 +frame31=0.000000 -0.040003 0.000000 +frame34=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/FIRBSLI.ANI b/CONTENT/BT/ANIMS/FIRBSLI.ANI new file mode 100644 index 0000000..2002876 --- /dev/null +++ b/CONTENT/BT/ANIMS/FIRBSLI.ANI @@ -0,0 +1,150 @@ +[LAB_ONLY] + +[HEADER] +framecount=8 +framerate=30 +skeletonfile=fir.skl +jointcount=10 + +[Time] +frame1=0 +frame6=0.166667 +frame9=0.266667 +frame12=0.366667 +frame15=0.466667 +frame25=0.8 +frame31=1 +frame34=1.1 + +[JointIndices] +jointlocal=0 +jointshakey=3 +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 +jointrshoulder=7 +jointlshoulder=5 + +[JointType] +jointlocal=balltranslate +jointshakey=ball +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointrshoulder=hingex +jointlshoulder=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.763780 0.000000 0.000000 +jointlknee=-0.532840 0.000000 0.000000 +jointlankle=0.108070 0.000000 0.000000 +jointrthigh=-0.561200 0.000000 0.000000 +jointrknee=-0.258838 0.000000 0.000000 +jointrankle=0.485029 0.000000 0.000000 +jointrshoulder=0.122173 0.000000 0.000000 +jointlshoulder=0.122173 0.000000 0.000000 +[frame6] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.875508 0.000000 0.000000 +jointlknee=-0.908795 0.000000 0.000000 +jointlankle=0.212593 0.000000 0.000000 +jointrthigh=-0.461823 0.000000 0.000000 +jointrknee=-0.249036 0.000000 0.000000 +jointrankle=0.478193 0.000000 0.000000 +jointrshoulder=0.105205 0.000000 0.000000 +jointlshoulder=0.105205 0.000000 0.000000 +[frame9] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.866584 0.000000 0.000000 +jointlknee=-1.030950 0.000000 0.000000 +jointlankle=0.258820 0.000000 0.000000 +jointrthigh=-0.402196 0.000000 0.000000 +jointrknee=-0.243155 0.000000 0.000000 +jointrankle=0.474091 0.000000 0.000000 +jointrshoulder=0.095023 0.000000 0.000000 +jointlshoulder=0.095023 0.000000 0.000000 +[frame12] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.773891 0.000000 0.000000 +jointlknee=-1.015089 0.000000 0.000000 +jointlankle=0.286267 0.000000 0.000000 +jointrthigh=-0.342570 0.000000 0.000000 +jointrknee=-0.237274 0.000000 0.000000 +jointrankle=0.469989 0.000000 0.000000 +jointrshoulder=0.084842 0.000000 0.000000 +jointlshoulder=0.084842 0.000000 0.000000 +[frame15] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.701432 0.000000 0.000000 +jointlknee=-1.016918 0.000000 0.000000 +jointlankle=0.303888 0.000000 0.000000 +jointrthigh=-0.279805 0.000000 0.000000 +jointrknee=-0.234046 0.000000 0.000000 +jointrankle=0.429638 0.000000 0.000000 +jointrshoulder=0.074661 0.000000 0.000000 +jointlshoulder=0.074661 0.000000 0.000000 +[frame25] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.371350 0.000000 0.000000 +jointlknee=-0.755977 0.000000 0.000000 +jointlankle=0.293959 0.000000 0.000000 +jointrthigh=-0.070588 0.000000 0.000000 +jointrknee=-0.223285 0.000000 0.000000 +jointrankle=0.295133 0.000000 0.000000 +jointrshoulder=0.040724 0.000000 0.000000 +jointlshoulder=0.040724 0.000000 0.000000 +[frame31] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.051151 0.000000 0.000000 +jointlknee=-0.219175 0.000000 0.000000 +jointlankle=0.166608 0.000000 0.000000 +jointrthigh=-0.023529 0.000000 0.000000 +jointrknee=-0.074428 0.000000 0.000000 +jointrankle=0.098378 0.000000 0.000000 +jointrshoulder=0.013575 0.000000 0.000000 +jointlshoulder=0.013575 0.000000 0.000000 +[frame34] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointrshoulder=0.000000 0.000000 0.000000 +jointlshoulder=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.363000 0.000000 +frame6=0.000000 -5.363000 -3.141383 +frame9=0.000000 -5.363000 -3.141379 +frame12=0.000000 -5.363000 -3.141382 +frame15=0.000000 -5.363505 -3.109339 +frame25=0.000000 -5.365190 -3.109338 +frame31=0.000000 -5.365190 -2.860754 +frame34=0.000000 -5.365190 -2.860753 + +[KeyJointPos] +frame1=0.000000 -0.600000 0.000000 +frame6=0.000000 -0.481936 0.000000 +frame9=0.000000 -0.411098 0.000000 +frame12=0.000000 -0.340260 0.000000 +frame15=0.000000 -0.289433 0.000000 +frame25=0.000000 -0.120010 0.000000 +frame31=0.000000 -0.040003 0.000000 +frame34=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/FIRBSR.ANI b/CONTENT/BT/ANIMS/FIRBSR.ANI new file mode 100644 index 0000000..c8de866 --- /dev/null +++ b/CONTENT/BT/ANIMS/FIRBSR.ANI @@ -0,0 +1,120 @@ +[LAB_ONLY] + +[HEADER] +framecount=8 +framerate=30 +skeletonfile=fir.skl +jointcount=7 + +[Time] +frame1=0 +frame6=0.166667 +frame9=0.266667 +frame12=0.366667 +frame15=0.466667 +frame25=0.8 +frame31=1 +frame34=1.1 + +[JointIndices] +jointlocal=0 +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 + +[JointType] +jointlocal=balltranslate +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.561200 0.000000 0.000000 +jointlknee=-0.258838 0.000000 0.000000 +jointlankle=0.485029 0.000000 0.000000 +jointrthigh=0.763780 0.000000 0.000000 +jointrknee=-0.532840 0.000000 0.000000 +jointrankle=0.108070 0.000000 0.000000 +[frame6] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.461823 0.000000 0.000000 +jointlknee=-0.249036 0.000000 0.000000 +jointlankle=0.478193 0.000000 0.000000 +jointrthigh=0.875508 0.000000 0.000000 +jointrknee=-0.908795 0.000000 0.000000 +jointrankle=0.212593 0.000000 0.000000 +[frame9] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.402196 0.000000 0.000000 +jointlknee=-0.243155 0.000000 0.000000 +jointlankle=0.474091 0.000000 0.000000 +jointrthigh=0.866584 0.000000 0.000000 +jointrknee=-1.030950 0.000000 0.000000 +jointrankle=0.258820 0.000000 0.000000 +[frame12] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.342570 0.000000 0.000000 +jointlknee=-0.237274 0.000000 0.000000 +jointlankle=0.469989 0.000000 0.000000 +jointrthigh=0.773891 0.000000 0.000000 +jointrknee=-1.015089 0.000000 0.000000 +jointrankle=0.286267 0.000000 0.000000 +[frame15] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.279805 0.000000 0.000000 +jointlknee=-0.234046 0.000000 0.000000 +jointlankle=0.429638 0.000000 0.000000 +jointrthigh=0.701432 0.000000 0.000000 +jointrknee=-1.016918 0.000000 0.000000 +jointrankle=0.303888 0.000000 0.000000 +[frame25] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.070588 0.000000 0.000000 +jointlknee=-0.223285 0.000000 0.000000 +jointlankle=0.295133 0.000000 0.000000 +jointrthigh=0.371350 0.000000 0.000000 +jointrknee=-0.755977 0.000000 0.000000 +jointrankle=0.293959 0.000000 0.000000 +[frame31] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.023529 0.000000 0.000000 +jointlknee=-0.074428 0.000000 0.000000 +jointlankle=0.098378 0.000000 0.000000 +jointrthigh=0.051151 0.000000 0.000000 +jointrknee=-0.219175 0.000000 0.000000 +jointrankle=0.166608 0.000000 0.000000 +[frame34] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.067951 0.000000 0.000000 +jointrknee=-0.135274 0.000000 0.000000 +jointrankle=0.067535 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.363000 0.000000 +frame6=0.000000 -5.363000 -3.141383 +frame9=0.000000 -5.363000 -3.141379 +frame12=0.000000 -5.363000 -3.141382 +frame15=0.000000 -5.363505 -3.109339 +frame25=0.000000 -5.365190 -3.109338 +frame31=0.000000 -5.365190 -2.860754 +frame34=0.000000 -5.365190 -2.860753 + +[KeyJointPos] +frame1=0.000000 -0.600000 0.000000 +frame6=0.000000 -0.481936 0.000000 +frame9=0.000000 -0.411098 0.000000 +frame12=0.000000 -0.340260 0.000000 +frame15=0.000000 -0.289433 0.000000 +frame25=0.000000 -0.120010 0.000000 +frame31=0.000000 -0.040003 0.000000 +frame34=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/FIRBSRI.ANI b/CONTENT/BT/ANIMS/FIRBSRI.ANI new file mode 100644 index 0000000..640a4af --- /dev/null +++ b/CONTENT/BT/ANIMS/FIRBSRI.ANI @@ -0,0 +1,130 @@ +[LAB_ONLY] + +[HEADER] +framecount=8 +framerate=30 +skeletonfile=fir.skl +jointcount=8 + +[Time] +frame1=0 +frame6=0.166667 +frame9=0.266667 +frame12=0.366667 +frame15=0.466667 +frame25=0.8 +frame31=1 +frame34=1.1 + +[JointIndices] +jointlocal=0 +jointshakey=3 +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 + +[JointType] +jointlocal=balltranslate +jointshakey=ball +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.561200 0.000000 0.000000 +jointlknee=-0.258838 0.000000 0.000000 +jointlankle=0.485029 0.000000 0.000000 +jointrthigh=0.763780 0.000000 0.000000 +jointrknee=-0.532840 0.000000 0.000000 +jointrankle=0.108070 0.000000 0.000000 +[frame6] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.461823 0.000000 0.000000 +jointlknee=-0.249036 0.000000 0.000000 +jointlankle=0.478193 0.000000 0.000000 +jointrthigh=0.875508 0.000000 0.000000 +jointrknee=-0.908795 0.000000 0.000000 +jointrankle=0.212593 0.000000 0.000000 +[frame9] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.402196 0.000000 0.000000 +jointlknee=-0.243155 0.000000 0.000000 +jointlankle=0.474091 0.000000 0.000000 +jointrthigh=0.866584 0.000000 0.000000 +jointrknee=-1.030950 0.000000 0.000000 +jointrankle=0.258820 0.000000 0.000000 +[frame12] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.342570 0.000000 0.000000 +jointlknee=-0.237274 0.000000 0.000000 +jointlankle=0.469989 0.000000 0.000000 +jointrthigh=0.773891 0.000000 0.000000 +jointrknee=-1.015089 0.000000 0.000000 +jointrankle=0.286267 0.000000 0.000000 +[frame15] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.279805 0.000000 0.000000 +jointlknee=-0.234046 0.000000 0.000000 +jointlankle=0.429638 0.000000 0.000000 +jointrthigh=0.701432 0.000000 0.000000 +jointrknee=-1.016918 0.000000 0.000000 +jointrankle=0.303888 0.000000 0.000000 +[frame25] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.070588 0.000000 0.000000 +jointlknee=-0.223285 0.000000 0.000000 +jointlankle=0.295133 0.000000 0.000000 +jointrthigh=0.371350 0.000000 0.000000 +jointrknee=-0.755977 0.000000 0.000000 +jointrankle=0.293959 0.000000 0.000000 +[frame31] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.023529 0.000000 0.000000 +jointlknee=-0.074428 0.000000 0.000000 +jointlankle=0.098378 0.000000 0.000000 +jointrthigh=0.051151 0.000000 0.000000 +jointrknee=-0.219175 0.000000 0.000000 +jointrankle=0.166608 0.000000 0.000000 +[frame34] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.067951 0.000000 0.000000 +jointrknee=-0.135274 0.000000 0.000000 +jointrankle=0.067535 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.363000 0.000000 +frame6=0.000000 -5.363000 -3.141383 +frame9=0.000000 -5.363000 -3.141379 +frame12=0.000000 -5.363000 -3.141382 +frame15=0.000000 -5.363505 -3.109339 +frame25=0.000000 -5.365190 -3.109338 +frame31=0.000000 -5.365190 -2.860754 +frame34=0.000000 -5.365190 -2.860753 + +[KeyJointPos] +frame1=0.000000 -0.600000 0.000000 +frame6=0.000000 -0.481936 0.000000 +frame9=0.000000 -0.411098 0.000000 +frame12=0.000000 -0.340260 0.000000 +frame15=0.000000 -0.289433 0.000000 +frame25=0.000000 -0.120010 0.000000 +frame31=0.000000 -0.040003 0.000000 +frame34=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/FIRGGL.ANI b/CONTENT/BT/ANIMS/FIRGGL.ANI new file mode 100644 index 0000000..dc1f1e1 --- /dev/null +++ b/CONTENT/BT/ANIMS/FIRGGL.ANI @@ -0,0 +1,142 @@ +[LAB_ONLY] + +[HEADER] +framecount=10 +framerate=30 +skeletonfile=fir.skl +jointcount=7 + +[Time] +frame1=0 +frame4=0.1 +frame6=0.166667 +frame8=0.233333 +frame9=0.266667 +frame10=0.3 +frame11=0.333333 +frame13=0.4 +frame17=0.533333 +frame20=0.633333 + +[JointIndices] +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 +jointlocal=0 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate + +[frame1] +jointlthigh=-0.056411 0.000000 0.000000 +jointlknee=-0.233080 0.000000 0.000000 +jointlankle=0.287536 0.000000 0.000000 +jointrthigh=-0.049463 0.000000 0.000000 +jointrknee=-0.814273 0.000000 0.000000 +jointrankle=-0.499957 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.026180 +[frame4] +jointlthigh=0.219437 0.000000 0.000000 +jointlknee=-0.745695 0.000000 0.000000 +jointlankle=0.349263 0.000000 0.000000 +jointrthigh=-0.206844 0.000000 0.000000 +jointrknee=-0.536251 0.000000 0.000000 +jointrankle=-0.599763 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.010472 +[frame6] +jointlthigh=0.295355 0.000000 0.000000 +jointlknee=-0.626783 0.000000 0.000000 +jointlankle=0.508165 0.000000 0.000000 +jointrthigh=-0.379766 0.000000 0.000000 +jointrknee=-0.461936 0.000000 0.000000 +jointrankle=-0.457974 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame8] +jointlthigh=0.546616 0.000000 0.000000 +jointlknee=-0.509837 0.000000 0.000000 +jointlankle=0.344439 0.000000 0.000000 +jointrthigh=-0.526442 0.000000 0.000000 +jointrknee=-0.448430 0.000000 0.000000 +jointrankle=-0.435926 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.015513 +[frame9] +jointlthigh=0.508453 0.000000 0.000000 +jointlknee=-0.121196 0.000000 0.000000 +jointlankle=0.212120 0.000000 0.000000 +jointrthigh=-0.599781 0.000000 0.000000 +jointrknee=-0.441676 0.000000 0.000000 +jointrankle=-0.424902 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.023270 +[frame10] +jointlthigh=0.551284 0.000000 0.000000 +jointlknee=-0.371516 0.000000 0.000000 +jointlankle=0.118813 0.000000 0.000000 +jointrthigh=-0.786215 0.000000 0.000000 +jointrknee=-0.160967 0.000000 0.000000 +jointrankle=-0.664480 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.031270 +[frame11] +jointlthigh=0.594115 0.000000 0.000000 +jointlknee=-0.621836 0.000000 0.000000 +jointlankle=0.025506 0.000000 0.000000 +jointrthigh=-0.818299 0.000000 0.000000 +jointrknee=-0.206802 0.000000 0.000000 +jointrankle=-0.645807 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.039270 +[frame13] +jointlthigh=0.497082 0.000000 0.000000 +jointlknee=-0.857665 0.000000 0.000000 +jointlankle=0.360449 0.000000 0.000000 +jointrthigh=-0.637836 0.000000 0.000000 +jointrknee=-0.439298 0.000000 0.000000 +jointrankle=-0.615832 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.038695 +[frame17] +jointlthigh=0.184588 0.000000 0.000000 +jointlknee=-0.702327 0.000000 0.000000 +jointlankle=0.513223 0.000000 0.000000 +jointrthigh=-0.301938 0.000000 0.000000 +jointrknee=-0.673879 0.000000 0.000000 +jointrankle=-0.591792 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.033906 +[frame20] +jointlthigh=-0.028855 0.000000 0.000000 +jointlknee=-0.307846 0.000000 0.000000 +jointlankle=0.334679 0.000000 0.000000 +jointrthigh=-0.049463 0.000000 0.000000 +jointrknee=-0.814273 0.000000 0.000000 +jointrankle=-0.499957 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.026180 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame4=0.000000 -5.350000 3.302994 +frame6=0.000000 -5.350000 9.516019 +frame8=0.000000 -5.350000 13.032018 +frame9=0.000000 -5.350000 13.031955 +frame10=0.000000 -5.355160 22.120516 +frame11=0.000000 -5.360320 22.120459 +frame13=0.000000 -5.350000 13.375512 +frame17=0.000000 -5.350000 8.910740 +frame20=0.000000 -5.350000 3.376008 + +[KeyJointPos] +frame1=-0.165129 0.097180 0.000000 +frame4=-0.068400 0.322626 0.000000 +frame6=0.000000 0.223580 0.000000 +frame8=-0.093185 -0.202556 0.000000 +frame9=-0.134822 -0.416108 0.000000 +frame10=-0.172866 -0.682463 0.000000 +frame11=-0.206658 -0.949037 0.000000 +frame13=-0.210781 -0.764277 0.000000 +frame17=-0.202274 -0.245332 0.000000 +frame20=-0.165129 0.097180 0.000000 diff --git a/CONTENT/BT/ANIMS/FIRGGLI.ANI b/CONTENT/BT/ANIMS/FIRGGLI.ANI new file mode 100644 index 0000000..e7efceb --- /dev/null +++ b/CONTENT/BT/ANIMS/FIRGGLI.ANI @@ -0,0 +1,154 @@ +[LAB_ONLY] + +[HEADER] +framecount=10 +framerate=30 +skeletonfile=fir.skl +jointcount=8 + +[Time] +frame1=0 +frame4=0.1 +frame6=0.166667 +frame8=0.233333 +frame9=0.266667 +frame10=0.3 +frame11=0.333333 +frame13=0.4 +frame17=0.533333 +frame20=0.633333 + +[JointIndices] +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=-0.056411 0.000000 0.000000 +jointlknee=-0.233080 0.000000 0.000000 +jointlankle=0.287536 0.000000 0.000000 +jointrthigh=-0.049463 0.000000 0.000000 +jointrknee=-0.814273 0.000000 0.000000 +jointrankle=-0.499957 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.015708 +jointshakey=0.000000 0.000000 0.015708 +[frame4] +jointlthigh=0.219437 0.000000 0.000000 +jointlknee=-0.745695 0.000000 0.000000 +jointlankle=0.349263 0.000000 0.000000 +jointrthigh=-0.206844 0.000000 0.000000 +jointrknee=-0.536251 0.000000 0.000000 +jointrankle=-0.599763 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.003665 +jointshakey=0.000000 0.000000 0.003665 +[frame6] +jointlthigh=0.295355 0.000000 0.000000 +jointlknee=-0.626783 0.000000 0.000000 +jointlankle=0.508165 0.000000 0.000000 +jointrthigh=-0.379766 0.000000 0.000000 +jointrknee=-0.461936 0.000000 0.000000 +jointrankle=-0.457974 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.004363 +jointshakey=0.000000 0.000000 -0.004363 +[frame8] +jointlthigh=0.546616 0.000000 0.000000 +jointlknee=-0.509837 0.000000 0.000000 +jointlankle=0.344439 0.000000 0.000000 +jointrthigh=-0.526442 0.000000 0.000000 +jointrknee=-0.448430 0.000000 0.000000 +jointrankle=-0.435926 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.004363 +jointshakey=0.000000 0.000000 0.004363 +[frame9] +jointlthigh=0.508453 0.000000 0.000000 +jointlknee=-0.121196 0.000000 0.000000 +jointlankle=0.212120 0.000000 0.000000 +jointrthigh=-0.599781 0.000000 0.000000 +jointrknee=-0.441676 0.000000 0.000000 +jointrankle=-0.424902 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.008727 +jointshakey=0.000000 0.000000 0.008727 +[frame10] +jointlthigh=0.551284 0.000000 0.000000 +jointlknee=-0.371516 0.000000 0.000000 +jointlankle=0.118813 0.000000 0.000000 +jointrthigh=-0.786215 0.000000 0.000000 +jointrknee=-0.160967 0.000000 0.000000 +jointrankle=-0.664480 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.013090 +jointshakey=0.000000 0.000000 0.013090 +[frame11] +jointlthigh=0.594115 0.000000 0.000000 +jointlknee=-0.621836 0.000000 0.000000 +jointlankle=0.025506 0.000000 0.000000 +jointrthigh=-0.818299 0.000000 0.000000 +jointrknee=-0.206802 0.000000 0.000000 +jointrankle=-0.645807 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.017453 +jointshakey=0.000000 0.000000 0.017453 +[frame13] +jointlthigh=0.497082 0.000000 0.000000 +jointlknee=-0.857665 0.000000 0.000000 +jointlankle=0.360449 0.000000 0.000000 +jointrthigh=-0.637836 0.000000 0.000000 +jointrknee=-0.439298 0.000000 0.000000 +jointrankle=-0.615832 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.017065 +jointshakey=0.000000 0.000000 0.017065 +[frame17] +jointlthigh=0.184588 0.000000 0.000000 +jointlknee=-0.702327 0.000000 0.000000 +jointlankle=0.513223 0.000000 0.000000 +jointrthigh=-0.301938 0.000000 0.000000 +jointrknee=-0.673879 0.000000 0.000000 +jointrankle=-0.591792 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.016290 +jointshakey=0.000000 0.000000 0.016290 +[frame20] +jointlthigh=-0.028855 0.000000 0.000000 +jointlknee=-0.307846 0.000000 0.000000 +jointlankle=0.334679 0.000000 0.000000 +jointrthigh=-0.049463 0.000000 0.000000 +jointrknee=-0.814273 0.000000 0.000000 +jointrankle=-0.499957 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.015708 +jointshakey=0.000000 0.000000 0.015708 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame4=0.000000 -5.350000 3.302994 +frame6=0.000000 -5.350000 9.516019 +frame8=0.000000 -5.350000 13.032018 +frame9=0.000000 -5.350000 13.031955 +frame10=0.000000 -5.355160 22.120516 +frame11=0.000000 -5.360320 22.120459 +frame13=0.000000 -5.350000 13.375512 +frame17=0.000000 -5.350000 8.910740 +frame20=0.000000 -5.350000 3.376008 + +[KeyJointPos] +frame1=0.000000 0.099342 0.000000 +frame4=0.000000 0.322984 0.000000 +frame6=0.000000 0.223580 0.000000 +frame8=0.000000 -0.201833 0.000000 +frame9=0.000000 -0.414539 0.000000 +frame10=0.000000 -0.679760 0.000000 +frame11=0.000000 -0.944979 0.000000 +frame13=0.000000 -0.760198 0.000000 +frame17=0.000000 -0.241902 0.000000 +frame20=0.000000 0.099342 0.000000 diff --git a/CONTENT/BT/ANIMS/FIRGGR.ANI b/CONTENT/BT/ANIMS/FIRGGR.ANI new file mode 100644 index 0000000..6ea4683 --- /dev/null +++ b/CONTENT/BT/ANIMS/FIRGGR.ANI @@ -0,0 +1,142 @@ +[LAB_ONLY] + +[HEADER] +framecount=10 +framerate=30 +skeletonfile=fir.skl +jointcount=7 + +[Time] +frame1=0 +frame4=0.1 +frame6=0.166667 +frame8=0.233333 +frame9=0.266667 +frame10=0.3 +frame11=0.333333 +frame13=0.4 +frame17=0.533333 +frame20=0.633333 + +[JointIndices] +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 +jointlocal=0 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate + +[frame1] +jointlthigh=-0.049463 0.000000 0.000000 +jointlknee=-0.814273 0.000000 0.000000 +jointlankle=-0.499957 0.000000 0.000000 +jointrthigh=-0.056411 0.000000 0.000000 +jointrknee=-0.233080 0.000000 0.000000 +jointrankle=0.287536 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.026180 +[frame4] +jointlthigh=-0.206844 0.000000 0.000000 +jointlknee=-0.536251 0.000000 0.000000 +jointlankle=-0.599763 0.000000 0.000000 +jointrthigh=0.219437 0.000000 0.000000 +jointrknee=-0.745695 0.000000 0.000000 +jointrankle=0.349263 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.010472 +[frame6] +jointlthigh=-0.379766 0.000000 0.000000 +jointlknee=-0.461936 0.000000 0.000000 +jointlankle=-0.457974 0.000000 0.000000 +jointrthigh=0.295355 0.000000 0.000000 +jointrknee=-0.626783 0.000000 0.000000 +jointrankle=0.508165 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame8] +jointlthigh=-0.526442 0.000000 0.000000 +jointlknee=-0.448430 0.000000 0.000000 +jointlankle=-0.435926 0.000000 0.000000 +jointrthigh=0.546616 0.000000 0.000000 +jointrknee=-0.509837 0.000000 0.000000 +jointrankle=0.344439 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.015513 +[frame9] +jointlthigh=-0.599781 0.000000 0.000000 +jointlknee=-0.441676 0.000000 0.000000 +jointlankle=-0.424902 0.000000 0.000000 +jointrthigh=0.508453 0.000000 0.000000 +jointrknee=-0.121196 0.000000 0.000000 +jointrankle=0.212120 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.023270 +[frame10] +jointlthigh=-0.786215 0.000000 0.000000 +jointlknee=-0.160967 0.000000 0.000000 +jointlankle=-0.664480 0.000000 0.000000 +jointrthigh=0.551284 0.000000 0.000000 +jointrknee=-0.371516 0.000000 0.000000 +jointrankle=0.118813 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.031270 +[frame11] +jointlthigh=-0.818299 0.000000 0.000000 +jointlknee=-0.206802 0.000000 0.000000 +jointlankle=-0.645807 0.000000 0.000000 +jointrthigh=0.594115 0.000000 0.000000 +jointrknee=-0.621836 0.000000 0.000000 +jointrankle=0.025506 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.039270 +[frame13] +jointlthigh=-0.637836 0.000000 0.000000 +jointlknee=-0.439298 0.000000 0.000000 +jointlankle=-0.615832 0.000000 0.000000 +jointrthigh=0.497082 0.000000 0.000000 +jointrknee=-0.857665 0.000000 0.000000 +jointrankle=0.360449 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.038695 +[frame17] +jointlthigh=-0.301938 0.000000 0.000000 +jointlknee=-0.673879 0.000000 0.000000 +jointlankle=-0.591792 0.000000 0.000000 +jointrthigh=0.184588 0.000000 0.000000 +jointrknee=-0.702327 0.000000 0.000000 +jointrankle=0.513223 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.033906 +[frame20] +jointlthigh=-0.049463 0.000000 0.000000 +jointlknee=-0.814273 0.000000 0.000000 +jointlankle=-0.499957 0.000000 0.000000 +jointrthigh=-0.028855 0.000000 0.000000 +jointrknee=-0.307846 0.000000 0.000000 +jointrankle=0.334679 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.026180 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame4=0.000000 -5.350000 3.302994 +frame6=0.000000 -5.350000 9.516019 +frame8=0.000000 -5.350000 13.032018 +frame9=0.000000 -5.350000 13.031955 +frame10=0.000000 -5.355160 22.120516 +frame11=0.000000 -5.360320 22.120459 +frame13=0.000000 -5.350000 13.375512 +frame17=0.000000 -5.350000 8.910740 +frame20=0.000000 -5.350000 3.376008 + +[KeyJointPos] +frame1=0.165129 0.097180 0.000000 +frame4=0.068400 0.322626 0.000000 +frame6=0.000000 0.223580 0.000000 +frame8=0.093185 -0.202556 0.000000 +frame9=0.134822 -0.416108 0.000000 +frame10=0.172866 -0.682463 0.000000 +frame11=0.206658 -0.949037 0.000000 +frame13=0.210781 -0.764277 0.000000 +frame17=0.202274 -0.245332 0.000000 +frame20=0.165129 0.097180 0.000000 diff --git a/CONTENT/BT/ANIMS/FIRGGRI.ANI b/CONTENT/BT/ANIMS/FIRGGRI.ANI new file mode 100644 index 0000000..13ba890 --- /dev/null +++ b/CONTENT/BT/ANIMS/FIRGGRI.ANI @@ -0,0 +1,154 @@ +[LAB_ONLY] + +[HEADER] +framecount=10 +framerate=30 +skeletonfile=fir.skl +jointcount=8 + +[Time] +frame1=0 +frame4=0.1 +frame6=0.166667 +frame8=0.233333 +frame9=0.266667 +frame10=0.3 +frame11=0.333333 +frame13=0.4 +frame17=0.533333 +frame20=0.633333 + +[JointIndices] +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=-0.049463 0.000000 0.000000 +jointlknee=-0.814273 0.000000 0.000000 +jointlankle=-0.499957 0.000000 0.000000 +jointrthigh=-0.056411 0.000000 0.000000 +jointrknee=-0.233080 0.000000 0.000000 +jointrankle=0.287536 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.015708 +jointshakey=0.000000 0.000000 -0.015708 +[frame4] +jointlthigh=-0.206844 0.000000 0.000000 +jointlknee=-0.536251 0.000000 0.000000 +jointlankle=-0.599763 0.000000 0.000000 +jointrthigh=0.219437 0.000000 0.000000 +jointrknee=-0.745695 0.000000 0.000000 +jointrankle=0.349263 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.003665 +jointshakey=0.000000 0.000000 -0.003665 +[frame6] +jointlthigh=-0.379766 0.000000 0.000000 +jointlknee=-0.461936 0.000000 0.000000 +jointlankle=-0.457974 0.000000 0.000000 +jointrthigh=0.295355 0.000000 0.000000 +jointrknee=-0.626783 0.000000 0.000000 +jointrankle=0.508165 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.004363 +jointshakey=0.000000 0.000000 0.004363 +[frame8] +jointlthigh=-0.526442 0.000000 0.000000 +jointlknee=-0.448430 0.000000 0.000000 +jointlankle=-0.435926 0.000000 0.000000 +jointrthigh=0.546616 0.000000 0.000000 +jointrknee=-0.509837 0.000000 0.000000 +jointrankle=0.344439 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.004363 +jointshakey=0.000000 0.000000 -0.004363 +[frame9] +jointlthigh=-0.599781 0.000000 0.000000 +jointlknee=-0.441676 0.000000 0.000000 +jointlankle=-0.424902 0.000000 0.000000 +jointrthigh=0.508453 0.000000 0.000000 +jointrknee=-0.121196 0.000000 0.000000 +jointrankle=0.212120 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.008727 +jointshakey=0.000000 0.000000 -0.008727 +[frame10] +jointlthigh=-0.786215 0.000000 0.000000 +jointlknee=-0.160967 0.000000 0.000000 +jointlankle=-0.664480 0.000000 0.000000 +jointrthigh=0.551284 0.000000 0.000000 +jointrknee=-0.371516 0.000000 0.000000 +jointrankle=0.118813 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.013090 +jointshakey=0.000000 0.000000 -0.013090 +[frame11] +jointlthigh=-0.818299 0.000000 0.000000 +jointlknee=-0.206802 0.000000 0.000000 +jointlankle=-0.645807 0.000000 0.000000 +jointrthigh=0.594115 0.000000 0.000000 +jointrknee=-0.621836 0.000000 0.000000 +jointrankle=0.025506 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.017453 +jointshakey=0.000000 0.000000 -0.017453 +[frame13] +jointlthigh=-0.637836 0.000000 0.000000 +jointlknee=-0.439298 0.000000 0.000000 +jointlankle=-0.615832 0.000000 0.000000 +jointrthigh=0.497082 0.000000 0.000000 +jointrknee=-0.857665 0.000000 0.000000 +jointrankle=0.360449 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.017065 +jointshakey=0.000000 0.000000 -0.017065 +[frame17] +jointlthigh=-0.301938 0.000000 0.000000 +jointlknee=-0.673879 0.000000 0.000000 +jointlankle=-0.591792 0.000000 0.000000 +jointrthigh=0.184588 0.000000 0.000000 +jointrknee=-0.702327 0.000000 0.000000 +jointrankle=0.513223 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.016290 +jointshakey=0.000000 0.000000 -0.016290 +[frame20] +jointlthigh=-0.049463 0.000000 0.000000 +jointlknee=-0.814273 0.000000 0.000000 +jointlankle=-0.499957 0.000000 0.000000 +jointrthigh=-0.028855 0.000000 0.000000 +jointrknee=-0.307846 0.000000 0.000000 +jointrankle=0.334679 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.015708 +jointshakey=0.000000 0.000000 -0.015708 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame4=0.000000 -5.350000 3.302994 +frame6=0.000000 -5.350000 9.516019 +frame8=0.000000 -5.350000 13.032018 +frame9=0.000000 -5.350000 13.031955 +frame10=0.000000 -5.355160 22.120516 +frame11=0.000000 -5.360320 22.120459 +frame13=0.000000 -5.350000 13.375512 +frame17=0.000000 -5.350000 8.910740 +frame20=0.000000 -5.350000 3.376008 + +[KeyJointPos] +frame1=0.000000 0.099342 0.000000 +frame4=0.000000 0.322984 0.000000 +frame6=0.000000 0.223580 0.000000 +frame8=0.000000 -0.201833 0.000000 +frame9=0.000000 -0.414539 0.000000 +frame10=0.000000 -0.679760 0.000000 +frame11=0.000000 -0.944979 0.000000 +frame13=0.000000 -0.760198 0.000000 +frame17=0.000000 -0.241902 0.000000 +frame20=0.000000 0.099342 0.000000 diff --git a/CONTENT/BT/ANIMS/FIRGSLI.ANI b/CONTENT/BT/ANIMS/FIRGSLI.ANI new file mode 100644 index 0000000..9ebea33 --- /dev/null +++ b/CONTENT/BT/ANIMS/FIRGSLI.ANI @@ -0,0 +1,106 @@ +[LAB_ONLY] + +[HEADER] +framecount=6 +framerate=30 +skeletonfile=fir.skl +jointcount=8 + +[Time] +frame1=0 +frame7=0.2 +frame9=0.266667 +frame11=0.333333 +frame15=0.466667 +frame23=0.733333 + +[JointIndices] +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=-0.037374 0.000000 0.000000 +jointlknee=-0.854337 0.000000 0.000000 +jointlankle=-0.471860 0.000000 0.000000 +jointrthigh=-0.094758 0.000000 0.000000 +jointrknee=-0.129419 0.000000 0.000000 +jointrankle=0.226978 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.015708 +jointshakey=0.000000 0.000000 -0.015708 +[frame7] +jointlthigh=0.068051 0.000000 0.000000 +jointlknee=-1.036499 0.000000 0.000000 +jointlankle=-0.081358 0.000000 0.000000 +jointrthigh=-0.068915 0.000000 0.000000 +jointrknee=-0.094123 0.000000 0.000000 +jointrankle=0.165075 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.011424 +jointshakey=0.000000 0.000000 -0.011424 +[frame9] +jointlthigh=0.081073 0.000000 0.000000 +jointlknee=-1.015152 0.000000 0.000000 +jointlankle=0.023671 0.000000 0.000000 +jointrthigh=-0.060300 0.000000 0.000000 +jointrknee=-0.082358 0.000000 0.000000 +jointrankle=0.144441 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.009996 +jointshakey=0.000000 0.000000 -0.009996 +[frame11] +jointlthigh=0.099666 0.000000 0.000000 +jointlknee=-1.043461 0.000000 0.000000 +jointlankle=0.186181 0.000000 0.000000 +jointrthigh=-0.051686 0.000000 0.000000 +jointrknee=-0.070592 0.000000 0.000000 +jointrankle=0.123806 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.008568 +jointshakey=0.000000 0.000000 -0.008568 +[frame15] +jointlthigh=0.106684 0.000000 0.000000 +jointlknee=-0.881667 0.000000 0.000000 +jointlankle=0.332216 0.000000 0.000000 +jointrthigh=-0.034457 0.000000 0.000000 +jointrknee=-0.047062 0.000000 0.000000 +jointrankle=0.082538 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.005712 +jointshakey=0.000000 0.000000 -0.005712 +[frame23] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame7=0.000000 -5.350000 1.304002 +frame9=0.000000 -5.350000 -0.133510 +frame11=0.000000 -5.350000 -0.133495 +frame15=0.000000 -5.350000 -1.709998 +frame23=0.000000 -5.350000 -2.894625 + +[KeyJointPos] +frame1=0.000000 0.099342 0.000000 +frame7=0.000000 0.066186 0.000000 +frame9=0.000000 0.052961 0.000000 +frame11=0.000000 0.047995 0.000000 +frame15=0.000000 0.033093 0.000000 +frame23=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/FIRGSRI.ANI b/CONTENT/BT/ANIMS/FIRGSRI.ANI new file mode 100644 index 0000000..5a643ff --- /dev/null +++ b/CONTENT/BT/ANIMS/FIRGSRI.ANI @@ -0,0 +1,106 @@ +[LAB_ONLY] + +[HEADER] +framecount=6 +framerate=30 +skeletonfile=fir.skl +jointcount=8 + +[Time] +frame1=0 +frame7=0.2 +frame9=0.266667 +frame11=0.333333 +frame15=0.466667 +frame23=0.733333 + +[JointIndices] +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=-0.094758 0.000000 0.000000 +jointlknee=-0.129419 0.000000 0.000000 +jointlankle=0.226978 0.000000 0.000000 +jointrthigh=-0.037374 0.000000 0.000000 +jointrknee=-0.854337 0.000000 0.000000 +jointrankle=-0.471860 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.015708 +jointshakey=0.000000 0.000000 0.015708 +[frame7] +jointlthigh=-0.062440 0.000000 0.000000 +jointlknee=-0.111529 0.000000 0.000000 +jointlankle=0.176080 0.000000 0.000000 +jointrthigh=0.068051 0.000000 0.000000 +jointrknee=-1.036499 0.000000 0.000000 +jointrankle=-0.081358 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.011424 +jointshakey=0.000000 0.000000 0.011424 +[frame9] +jointlthigh=-0.051668 0.000000 0.000000 +jointlknee=-0.105565 0.000000 0.000000 +jointlankle=0.159114 0.000000 0.000000 +jointrthigh=0.081073 0.000000 0.000000 +jointrknee=-1.015152 0.000000 0.000000 +jointrankle=0.023671 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.009996 +jointshakey=0.000000 0.000000 0.009996 +[frame11] +jointlthigh=-0.040895 0.000000 0.000000 +jointlknee=-0.099601 0.000000 0.000000 +jointlankle=0.142147 0.000000 0.000000 +jointrthigh=0.099666 0.000000 0.000000 +jointrknee=-1.043461 0.000000 0.000000 +jointrankle=0.186181 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.008568 +jointshakey=0.000000 0.000000 0.008568 +[frame15] +jointlthigh=-0.019351 0.000000 0.000000 +jointlknee=-0.087674 0.000000 0.000000 +jointlankle=0.108215 0.000000 0.000000 +jointrthigh=0.106684 0.000000 0.000000 +jointrknee=-0.881667 0.000000 0.000000 +jointrankle=0.332216 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.005712 +jointshakey=0.000000 0.000000 0.005712 +[frame23] +jointlthigh=0.023739 0.000000 0.000000 +jointlknee=-0.063820 0.000000 0.000000 +jointlankle=0.040350 0.000000 0.000000 +jointrthigh=0.061303 0.000000 0.000000 +jointrknee=-0.165001 0.000000 0.000000 +jointrankle=0.104694 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame7=0.000000 -5.350000 1.304002 +frame9=0.000000 -5.350000 -0.133510 +frame11=0.000000 -5.350000 -0.133495 +frame15=0.000000 -5.350000 -1.709998 +frame23=0.000000 -5.350000 -2.894625 + +[KeyJointPos] +frame1=0.000000 0.099342 0.000000 +frame7=0.000000 0.066186 0.000000 +frame9=0.000000 0.052961 0.000000 +frame11=0.000000 0.047995 0.000000 +frame15=0.000000 0.033093 0.000000 +frame23=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/FIRRRL.ANI b/CONTENT/BT/ANIMS/FIRRRL.ANI new file mode 100644 index 0000000..3a34a5a --- /dev/null +++ b/CONTENT/BT/ANIMS/FIRRRL.ANI @@ -0,0 +1,87 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=fir.skl +jointcount=7 + +[Time] +frame1=0 +frame3=0.0666667 +frame5=0.133333 +frame10=0.3 +frame15=0.466667 + +[JointIndices] +jointlocal=0 +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 + +[JointType] +jointlocal=balltranslate +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.220568 0.000000 0.000000 +jointlknee=-1.578886 0.000000 0.000000 +jointlankle=0.520927 0.000000 0.000000 +jointrthigh=0.408901 0.000000 0.000000 +jointrknee=-0.388051 0.000000 0.000000 +jointrankle=-0.021774 0.000000 0.000000 +[frame3] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.519267 0.000000 0.000000 +jointlknee=-1.587195 0.000000 0.000000 +jointlankle=0.608116 0.000000 0.000000 +jointrthigh=0.013721 0.000000 0.000000 +jointrknee=-0.750172 0.000000 0.000000 +jointrankle=0.738035 0.000000 0.000000 +[frame5] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=1.251680 0.000000 0.000000 +jointlknee=-1.602998 0.000000 0.000000 +jointlankle=0.012005 0.000000 0.000000 +jointrthigh=-0.369797 0.000000 0.000000 +jointrknee=-0.660626 0.000000 0.000000 +jointrankle=0.221044 0.000000 0.000000 +[frame10] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.996014 0.000000 0.000000 +jointlknee=-0.315163 0.000000 0.000000 +jointlankle=0.114052 0.000000 0.000000 +jointrthigh=-0.422979 0.000000 0.000000 +jointrknee=-1.440987 0.000000 0.000000 +jointrankle=-0.529400 0.000000 0.000000 +[frame15] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.408901 0.000000 0.000000 +jointlknee=-0.388051 0.000000 0.000000 +jointlankle=-0.021774 0.000000 0.000000 +jointrthigh=-0.045188 0.000000 0.000000 +jointrknee=-1.753532 0.000000 0.000000 +jointrankle=0.520927 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.363000 0.000000 +frame3=0.000000 -5.363000 38.401505 +frame5=0.000000 -5.363000 37.318493 +frame10=0.000000 -5.363000 39.082203 +frame15=0.000000 -5.363000 41.769611 + +[KeyJointPos] +frame1=0.000000 -0.220070 0.000000 +frame3=0.000000 -0.661920 0.000000 +frame5=0.000000 -0.220070 0.000000 +frame10=0.000000 0.380350 0.000000 +frame15=0.000000 -0.220000 0.000000 diff --git a/CONTENT/BT/ANIMS/FIRRRLI.ANI b/CONTENT/BT/ANIMS/FIRRRLI.ANI new file mode 100644 index 0000000..f5c9e13 --- /dev/null +++ b/CONTENT/BT/ANIMS/FIRRRLI.ANI @@ -0,0 +1,94 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=fir.skl +jointcount=8 + +[Time] +frame1=0 +frame3=0.0666667 +frame5=0.133333 +frame10=0.3 +frame15=0.466667 + +[JointIndices] +jointlocal=0 +jointshakey=3 +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 + +[JointType] +jointlocal=balltranslate +jointshakey=ball +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.220568 0.000000 0.000000 +jointlknee=-1.578886 0.000000 0.000000 +jointlankle=0.520927 0.000000 0.000000 +jointrthigh=0.408901 0.000000 0.000000 +jointrknee=-0.388051 0.000000 0.000000 +jointrankle=-0.021774 0.000000 0.000000 +[frame3] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.519267 0.000000 0.000000 +jointlknee=-1.587195 0.000000 0.000000 +jointlankle=0.608116 0.000000 0.000000 +jointrthigh=0.013721 0.000000 0.000000 +jointrknee=-0.750172 0.000000 0.000000 +jointrankle=0.738035 0.000000 0.000000 +[frame5] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=1.251680 0.000000 0.000000 +jointlknee=-1.602998 0.000000 0.000000 +jointlankle=0.012005 0.000000 0.000000 +jointrthigh=-0.369797 0.000000 0.000000 +jointrknee=-0.660626 0.000000 0.000000 +jointrankle=0.221044 0.000000 0.000000 +[frame10] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.996014 0.000000 0.000000 +jointlknee=-0.315163 0.000000 0.000000 +jointlankle=0.114052 0.000000 0.000000 +jointrthigh=-0.422979 0.000000 0.000000 +jointrknee=-1.440987 0.000000 0.000000 +jointrankle=-0.529400 0.000000 0.000000 +[frame15] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.408901 0.000000 0.000000 +jointlknee=-0.388051 0.000000 0.000000 +jointlankle=-0.021774 0.000000 0.000000 +jointrthigh=-0.045188 0.000000 0.000000 +jointrknee=-1.753532 0.000000 0.000000 +jointrankle=0.520927 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.363000 0.000000 +frame3=0.000000 -5.363000 38.401505 +frame5=0.000000 -5.363000 37.318493 +frame10=0.000000 -5.363000 39.082203 +frame15=0.000000 -5.363000 41.769611 + +[KeyJointPos] +frame1=0.000000 -0.220070 0.000000 +frame3=0.000000 -0.661920 0.000000 +frame5=0.000000 -0.220070 0.000000 +frame10=0.000000 0.380350 0.000000 +frame15=0.000000 -0.220000 0.000000 diff --git a/CONTENT/BT/ANIMS/FIRRRR.ANI b/CONTENT/BT/ANIMS/FIRRRR.ANI new file mode 100644 index 0000000..324fe0d --- /dev/null +++ b/CONTENT/BT/ANIMS/FIRRRR.ANI @@ -0,0 +1,87 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=fir.skl +jointcount=7 + +[Time] +frame1=0 +frame3=0.0666667 +frame5=0.133333 +frame10=0.3 +frame15=0.466667 + +[JointIndices] +jointlocal=0 +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 + +[JointType] +jointlocal=balltranslate +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.408901 0.000000 0.000000 +jointlknee=-0.388051 0.000000 0.000000 +jointlankle=-0.021774 0.000000 0.000000 +jointrthigh=-0.045188 0.000000 0.000000 +jointrknee=-1.753532 0.000000 0.000000 +jointrankle=0.520927 0.000000 0.000000 +[frame3] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.014113 0.000000 0.000000 +jointlknee=-0.750825 0.000000 0.000000 +jointlankle=0.737932 0.000000 0.000000 +jointrthigh=0.519267 0.000000 0.000000 +jointrknee=-1.587195 0.000000 0.000000 +jointrankle=0.608116 0.000000 0.000000 +[frame5] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.395999 0.000000 0.000000 +jointlknee=-0.606619 0.000000 0.000000 +jointlankle=0.194431 0.000000 0.000000 +jointrthigh=1.251680 0.000000 0.000000 +jointrknee=-1.602998 0.000000 0.000000 +jointrankle=0.012005 0.000000 0.000000 +[frame10] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.422979 0.000000 0.000000 +jointlknee=-1.440987 0.000000 0.000000 +jointlankle=-0.529400 0.000000 0.000000 +jointrthigh=0.996014 0.000000 0.000000 +jointrknee=-0.315163 0.000000 0.000000 +jointrankle=0.114052 0.000000 0.000000 +[frame15] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.045188 0.000000 0.000000 +jointlknee=-1.753532 0.000000 0.000000 +jointlankle=0.520927 0.000000 0.000000 +jointrthigh=0.408901 0.000000 0.000000 +jointrknee=-0.388051 0.000000 0.000000 +jointrankle=-0.021774 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.363000 0.000000 +frame3=0.000000 -5.363000 38.935486 +frame5=0.000000 -5.363000 37.492500 +frame10=0.000000 -5.363000 39.383995 +frame15=0.000000 -5.363000 41.687992 + +[KeyJointPos] +frame1=0.000000 -0.220000 0.000000 +frame3=0.000000 -0.660000 0.000000 +frame5=0.000000 -0.220000 0.000000 +frame10=0.000000 0.380000 0.000000 +frame15=0.000000 -0.220000 0.000000 diff --git a/CONTENT/BT/ANIMS/FIRRRRI.ANI b/CONTENT/BT/ANIMS/FIRRRRI.ANI new file mode 100644 index 0000000..f2d8878 --- /dev/null +++ b/CONTENT/BT/ANIMS/FIRRRRI.ANI @@ -0,0 +1,94 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=fir.skl +jointcount=8 + +[Time] +frame1=0 +frame3=0.0666667 +frame5=0.133333 +frame10=0.3 +frame15=0.466667 + +[JointIndices] +jointlocal=0 +jointshakey=3 +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 + +[JointType] +jointlocal=balltranslate +jointshakey=ball +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.408901 0.000000 0.000000 +jointlknee=-0.388051 0.000000 0.000000 +jointlankle=-0.021774 0.000000 0.000000 +jointrthigh=-0.045188 0.000000 0.000000 +jointrknee=-1.753532 0.000000 0.000000 +jointrankle=0.520927 0.000000 0.000000 +[frame3] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.014113 0.000000 0.000000 +jointlknee=-0.750825 0.000000 0.000000 +jointlankle=0.737932 0.000000 0.000000 +jointrthigh=0.519267 0.000000 0.000000 +jointrknee=-1.587195 0.000000 0.000000 +jointrankle=0.608116 0.000000 0.000000 +[frame5] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.395999 0.000000 0.000000 +jointlknee=-0.606619 0.000000 0.000000 +jointlankle=0.194431 0.000000 0.000000 +jointrthigh=1.251680 0.000000 0.000000 +jointrknee=-1.602998 0.000000 0.000000 +jointrankle=0.012005 0.000000 0.000000 +[frame10] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.422979 0.000000 0.000000 +jointlknee=-1.440987 0.000000 0.000000 +jointlankle=-0.529400 0.000000 0.000000 +jointrthigh=0.996014 0.000000 0.000000 +jointrknee=-0.315163 0.000000 0.000000 +jointrankle=0.114052 0.000000 0.000000 +[frame15] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.045188 0.000000 0.000000 +jointlknee=-1.753532 0.000000 0.000000 +jointlankle=0.520927 0.000000 0.000000 +jointrthigh=0.408901 0.000000 0.000000 +jointrknee=-0.388051 0.000000 0.000000 +jointrankle=-0.021774 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.363000 0.000000 +frame3=0.000000 -5.363000 38.935486 +frame5=0.000000 -5.363000 37.492500 +frame10=0.000000 -5.363000 39.383995 +frame15=0.000000 -5.363000 41.687992 + +[KeyJointPos] +frame1=0.000000 -0.220000 0.000000 +frame3=0.000000 -0.660000 0.000000 +frame5=0.000000 -0.220000 0.000000 +frame10=0.000000 0.380000 0.000000 +frame15=0.000000 -0.220000 0.000000 diff --git a/CONTENT/BT/ANIMS/FIRRWL.ANI b/CONTENT/BT/ANIMS/FIRRWL.ANI new file mode 100644 index 0000000..7eba6d7 --- /dev/null +++ b/CONTENT/BT/ANIMS/FIRRWL.ANI @@ -0,0 +1,94 @@ +[LAB_ONLY] + +[HEADER] +framecount=4 +framerate=30 +skeletonfile=fir.skl +jointcount=10 + +[Time] +frame1=0 +frame3=0.0666667 +frame7=0.2 +frame9=0.266667 + +[JointIndices] +jointlocal=0 +jointhip=1 +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 +jointrshoulder=7 +jointlshoulder=5 + +[JointType] +jointlocal=balltranslate +jointhip=hingex +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointrshoulder=hingex +jointlshoulder=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointhip=-0.122173 0.000000 0.000000 +jointlthigh=-0.045188 0.000000 0.000000 +jointlknee=-1.753532 0.000000 0.000000 +jointlankle=0.520927 0.000000 0.000000 +jointrthigh=0.417493 0.000000 0.000000 +jointrknee=-0.408109 0.000000 0.000000 +jointrankle=-0.009100 0.000000 0.000000 +jointrshoulder=0.296706 0.000000 0.000000 +jointlshoulder=0.296706 0.000000 0.000000 +[frame3] +jointlocal=0.000000 0.000000 0.000000 +jointhip=-0.084842 0.000000 0.000000 +jointlthigh=0.305459 0.000000 0.000000 +jointlknee=-1.474681 0.000000 0.000000 +jointlankle=0.660375 0.000000 0.000000 +jointrthigh=0.326904 0.000000 0.000000 +jointrknee=-0.690684 0.000000 0.000000 +jointrankle=0.364294 0.000000 0.000000 +jointrshoulder=0.253073 0.000000 0.000000 +jointlshoulder=0.253073 0.000000 0.000000 +[frame7] +jointlocal=0.000000 0.000000 0.000000 +jointhip=-0.040724 0.000000 0.000000 +jointlthigh=0.686574 0.000000 0.000000 +jointlknee=-0.979039 0.000000 0.000000 +jointlankle=0.315547 0.000000 0.000000 +jointrthigh=-0.150802 0.000000 0.000000 +jointrknee=-0.612981 0.000000 0.000000 +jointrankle=0.495899 0.000000 0.000000 +jointrshoulder=0.165806 0.000000 0.000000 +jointlshoulder=0.165806 0.000000 0.000000 +[frame9] +jointlocal=0.000000 0.000000 0.000000 +jointhip=0.000000 0.000000 0.000000 +jointlthigh=0.763780 0.000000 0.000000 +jointlknee=-0.532840 0.000000 0.000000 +jointlankle=0.108070 0.000000 0.000000 +jointrthigh=-0.389655 0.000000 0.000000 +jointrknee=-0.574130 0.000000 0.000000 +jointrankle=0.561701 0.000000 0.000000 +jointrshoulder=0.122173 0.000000 0.000000 +jointlshoulder=0.122173 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.363000 0.000000 +frame3=0.000000 -5.363000 16.108131 +frame7=0.000000 -5.363000 16.108133 +frame9=0.000000 -5.363000 16.108130 + +[KeyJointPos] +frame1=0.000000 -0.220000 0.000000 +frame3=0.000000 -0.315000 0.000000 +frame7=0.000000 -0.505000 0.000000 +frame9=0.000000 -0.600000 0.000000 diff --git a/CONTENT/BT/ANIMS/FIRRWLI.ANI b/CONTENT/BT/ANIMS/FIRRWLI.ANI new file mode 100644 index 0000000..011c888 --- /dev/null +++ b/CONTENT/BT/ANIMS/FIRRWLI.ANI @@ -0,0 +1,100 @@ +[LAB_ONLY] + +[HEADER] +framecount=4 +framerate=30 +skeletonfile=fir.skl +jointcount=11 + +[Time] +frame1=0 +frame3=0.0666667 +frame7=0.2 +frame9=0.266667 + +[JointIndices] +jointlocal=0 +jointhip=1 +jointshakey=3 +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 +jointrshoulder=7 +jointlshoulder=5 + +[JointType] +jointlocal=balltranslate +jointhip=hingex +jointshakey=ball +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointrshoulder=hingex +jointlshoulder=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointhip=-0.122173 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.045188 0.000000 0.000000 +jointlknee=-1.753532 0.000000 0.000000 +jointlankle=0.520927 0.000000 0.000000 +jointrthigh=0.417493 0.000000 0.000000 +jointrknee=-0.408109 0.000000 0.000000 +jointrankle=-0.009100 0.000000 0.000000 +jointrshoulder=0.296706 0.000000 0.000000 +jointlshoulder=0.296706 0.000000 0.000000 +[frame3] +jointlocal=0.000000 0.000000 0.000000 +jointhip=-0.084842 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.305459 0.000000 0.000000 +jointlknee=-1.474681 0.000000 0.000000 +jointlankle=0.660375 0.000000 0.000000 +jointrthigh=0.326904 0.000000 0.000000 +jointrknee=-0.690684 0.000000 0.000000 +jointrankle=0.364294 0.000000 0.000000 +jointrshoulder=0.253073 0.000000 0.000000 +jointlshoulder=0.253073 0.000000 0.000000 +[frame7] +jointlocal=0.000000 0.000000 0.000000 +jointhip=-0.040724 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.686574 0.000000 0.000000 +jointlknee=-0.979039 0.000000 0.000000 +jointlankle=0.315547 0.000000 0.000000 +jointrthigh=-0.150802 0.000000 0.000000 +jointrknee=-0.612981 0.000000 0.000000 +jointrankle=0.495899 0.000000 0.000000 +jointrshoulder=0.165806 0.000000 0.000000 +jointlshoulder=0.165806 0.000000 0.000000 +[frame9] +jointlocal=0.000000 0.000000 0.000000 +jointhip=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.763780 0.000000 0.000000 +jointlknee=-0.532840 0.000000 0.000000 +jointlankle=0.108070 0.000000 0.000000 +jointrthigh=-0.389655 0.000000 0.000000 +jointrknee=-0.574130 0.000000 0.000000 +jointrankle=0.561701 0.000000 0.000000 +jointrshoulder=0.122173 0.000000 0.000000 +jointlshoulder=0.122173 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.363000 0.000000 +frame3=0.000000 -5.363000 16.108131 +frame7=0.000000 -5.363000 16.108133 +frame9=0.000000 -5.363000 16.108130 + +[KeyJointPos] +frame1=0.000000 -0.220000 0.000000 +frame3=0.000000 -0.315000 0.000000 +frame7=0.000000 -0.505000 0.000000 +frame9=0.000000 -0.600000 0.000000 diff --git a/CONTENT/BT/ANIMS/FIRRWR.ANI b/CONTENT/BT/ANIMS/FIRRWR.ANI new file mode 100644 index 0000000..7d9e953 --- /dev/null +++ b/CONTENT/BT/ANIMS/FIRRWR.ANI @@ -0,0 +1,94 @@ +[LAB_ONLY] + +[HEADER] +framecount=4 +framerate=30 +skeletonfile=fir.skl +jointcount=10 + +[Time] +frame1=0 +frame3=0.0666667 +frame7=0.2 +frame9=0.266667 + +[JointIndices] +jointlocal=0 +jointhip=1 +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 +jointrshoulder=7 +jointlshoulder=5 + +[JointType] +jointlocal=balltranslate +jointhip=hingex +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointrshoulder=hingex +jointlshoulder=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointhip=-0.122173 0.000000 0.000000 +jointlthigh=0.417493 0.000000 0.000000 +jointlknee=-0.408109 0.000000 0.000000 +jointlankle=-0.009100 0.000000 0.000000 +jointrthigh=-0.045188 0.000000 0.000000 +jointrknee=-1.753532 0.000000 0.000000 +jointrankle=0.520927 0.000000 0.000000 +jointrshoulder=0.296706 0.000000 0.000000 +jointlshoulder=0.296706 0.000000 0.000000 +[frame3] +jointlocal=0.000000 0.000000 0.000000 +jointhip=-0.084842 0.000000 0.000000 +jointlthigh=0.326904 0.000000 0.000000 +jointlknee=-0.690684 0.000000 0.000000 +jointlankle=0.364294 0.000000 0.000000 +jointrthigh=0.305459 0.000000 0.000000 +jointrknee=-1.474681 0.000000 0.000000 +jointrankle=0.660375 0.000000 0.000000 +jointrshoulder=0.253073 0.000000 0.000000 +jointlshoulder=0.253073 0.000000 0.000000 +[frame7] +jointlocal=0.000000 0.000000 0.000000 +jointhip=-0.040724 0.000000 0.000000 +jointlthigh=-0.150947 0.000000 0.000000 +jointlknee=-0.612709 0.000000 0.000000 +jointlankle=0.495774 0.000000 0.000000 +jointrthigh=0.686574 0.000000 0.000000 +jointrknee=-0.979039 0.000000 0.000000 +jointrankle=0.315547 0.000000 0.000000 +jointrshoulder=0.165806 0.000000 0.000000 +jointlshoulder=0.165806 0.000000 0.000000 +[frame9] +jointlocal=0.000000 0.000000 0.000000 +jointhip=0.000000 0.000000 0.000000 +jointlthigh=-0.389872 0.000000 0.000000 +jointlknee=-0.573721 0.000000 0.000000 +jointlankle=0.561514 0.000000 0.000000 +jointrthigh=0.763780 0.000000 0.000000 +jointrknee=-0.532840 0.000000 0.000000 +jointrankle=0.108070 0.000000 0.000000 +jointrshoulder=0.122173 0.000000 0.000000 +jointlshoulder=0.122173 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.363000 0.000000 +frame3=0.000000 -5.363000 16.108131 +frame7=0.000000 -5.363000 16.108133 +frame9=0.000000 -5.363000 16.108130 + +[KeyJointPos] +frame1=0.000000 -0.220000 0.000000 +frame3=0.000000 -0.315000 0.000000 +frame7=0.000000 -0.505000 0.000000 +frame9=0.000000 -0.600000 0.000000 diff --git a/CONTENT/BT/ANIMS/FIRRWRI.ANI b/CONTENT/BT/ANIMS/FIRRWRI.ANI new file mode 100644 index 0000000..a5cc25c --- /dev/null +++ b/CONTENT/BT/ANIMS/FIRRWRI.ANI @@ -0,0 +1,100 @@ +[LAB_ONLY] + +[HEADER] +framecount=4 +framerate=30 +skeletonfile=fir.skl +jointcount=11 + +[Time] +frame1=0 +frame3=0.0666667 +frame7=0.2 +frame9=0.266667 + +[JointIndices] +jointlocal=0 +jointhip=1 +jointshakey=3 +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 +jointrshoulder=7 +jointlshoulder=5 + +[JointType] +jointlocal=balltranslate +jointhip=hingex +jointshakey=ball +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointrshoulder=hingex +jointlshoulder=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointhip=-0.122173 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.417493 0.000000 0.000000 +jointlknee=-0.408109 0.000000 0.000000 +jointlankle=-0.009100 0.000000 0.000000 +jointrthigh=-0.045188 0.000000 0.000000 +jointrknee=-1.753532 0.000000 0.000000 +jointrankle=0.520927 0.000000 0.000000 +jointrshoulder=0.296706 0.000000 0.000000 +jointlshoulder=0.296706 0.000000 0.000000 +[frame3] +jointlocal=0.000000 0.000000 0.000000 +jointhip=-0.084842 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.326904 0.000000 0.000000 +jointlknee=-0.690684 0.000000 0.000000 +jointlankle=0.364294 0.000000 0.000000 +jointrthigh=0.305459 0.000000 0.000000 +jointrknee=-1.474681 0.000000 0.000000 +jointrankle=0.660375 0.000000 0.000000 +jointrshoulder=0.253073 0.000000 0.000000 +jointlshoulder=0.253073 0.000000 0.000000 +[frame7] +jointlocal=0.000000 0.000000 0.000000 +jointhip=-0.040724 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.150947 0.000000 0.000000 +jointlknee=-0.612709 0.000000 0.000000 +jointlankle=0.495774 0.000000 0.000000 +jointrthigh=0.686574 0.000000 0.000000 +jointrknee=-0.979039 0.000000 0.000000 +jointrankle=0.315547 0.000000 0.000000 +jointrshoulder=0.165806 0.000000 0.000000 +jointlshoulder=0.165806 0.000000 0.000000 +[frame9] +jointlocal=0.000000 0.000000 0.000000 +jointhip=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.389872 0.000000 0.000000 +jointlknee=-0.573721 0.000000 0.000000 +jointlankle=0.561514 0.000000 0.000000 +jointrthigh=0.763780 0.000000 0.000000 +jointrknee=-0.532840 0.000000 0.000000 +jointrankle=0.108070 0.000000 0.000000 +jointrshoulder=0.122173 0.000000 0.000000 +jointlshoulder=0.122173 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.363000 0.000000 +frame3=0.000000 -5.363000 16.108131 +frame7=0.000000 -5.363000 16.108133 +frame9=0.000000 -5.363000 16.108130 + +[KeyJointPos] +frame1=0.000000 -0.220000 0.000000 +frame3=0.000000 -0.315000 0.000000 +frame7=0.000000 -0.505000 0.000000 +frame9=0.000000 -0.600000 0.000000 diff --git a/CONTENT/BT/ANIMS/FIRSBL.ANI b/CONTENT/BT/ANIMS/FIRSBL.ANI new file mode 100644 index 0000000..0388fc2 --- /dev/null +++ b/CONTENT/BT/ANIMS/FIRSBL.ANI @@ -0,0 +1,109 @@ +[LAB_ONLY] + +[HEADER] +framecount=7 +framerate=30 +skeletonfile=fir.skl +jointcount=7 + +[Time] +frame1=0 +frame4=0.1 +frame7=0.2 +frame10=0.3 +frame19=0.6 +frame29=0.933333 +frame59=1.93333 + +[JointIndices] +jointlocal=0 +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 + +[JointType] +jointlocal=balltranslate +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +[frame4] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.135013 0.000000 0.000000 +jointlknee=-0.398570 0.000000 0.000000 +jointlankle=0.269854 0.000000 0.000000 +jointrthigh=0.190482 0.000000 0.000000 +jointrknee=-0.291442 0.000000 0.000000 +jointrankle=0.100491 0.000000 0.000000 +[frame7] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.196845 0.000000 0.000000 +jointlknee=-0.672041 0.000000 0.000000 +jointlankle=0.384920 0.000000 0.000000 +jointrthigh=0.292077 0.000000 0.000000 +jointrknee=-0.400632 0.000000 0.000000 +jointrankle=0.109270 0.000000 0.000000 +[frame10] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.149373 0.000000 0.000000 +jointlknee=-0.812927 0.000000 0.000000 +jointlankle=0.499984 0.000000 0.000000 +jointrthigh=0.378688 0.000000 0.000000 +jointrknee=-0.479798 0.000000 0.000000 +jointrankle=0.101976 0.000000 0.000000 +[frame19] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.082742 0.000000 0.000000 +jointlknee=-1.032703 0.000000 0.000000 +jointlankle=0.582278 0.000000 0.000000 +jointrthigh=0.573997 0.000000 0.000000 +jointrknee=-0.534008 0.000000 0.000000 +jointrankle=-0.041745 0.000000 0.000000 +[frame29] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.415072 0.000000 0.000000 +jointlknee=-0.525407 0.000000 0.000000 +jointlankle=0.556978 0.000000 0.000000 +jointrthigh=0.763780 0.000000 0.000000 +jointrknee=-0.532840 0.000000 0.000000 +jointrankle=0.108070 0.000000 0.000000 +[frame59] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.415072 0.000000 0.000000 +jointlknee=-0.525407 0.000000 0.000000 +jointlankle=0.556978 0.000000 0.000000 +jointrthigh=0.763780 0.000000 0.000000 +jointrknee=-0.532840 0.000000 0.000000 +jointrankle=0.108070 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.365190 0.000000 +frame4=0.000000 -5.364946 -2.143002 +frame7=0.000000 -5.364703 -2.143002 +frame10=0.000000 -5.364460 -2.143001 +frame19=0.000000 -5.363730 -2.565333 +frame29=0.000000 -5.363000 -3.367201 +frame59=0.000000 -5.363000 -3.135200 + +[KeyJointPos] +frame1=0.000000 0.000000 0.000000 +frame4=0.000000 -0.066667 0.000000 +frame7=0.000000 -0.133334 0.000000 +frame10=0.000000 -0.200000 0.000000 +frame19=0.000000 -0.400000 0.000000 +frame29=0.000000 -0.600000 0.000000 +frame59=0.000000 -0.600000 0.000000 diff --git a/CONTENT/BT/ANIMS/FIRSBLI.ANI b/CONTENT/BT/ANIMS/FIRSBLI.ANI new file mode 100644 index 0000000..740d592 --- /dev/null +++ b/CONTENT/BT/ANIMS/FIRSBLI.ANI @@ -0,0 +1,118 @@ +[LAB_ONLY] + +[HEADER] +framecount=7 +framerate=30 +skeletonfile=fir.skl +jointcount=8 + +[Time] +frame1=0 +frame4=0.1 +frame7=0.2 +frame10=0.3 +frame19=0.6 +frame29=0.933333 +frame59=1.93333 + +[JointIndices] +jointlocal=0 +jointshakey=3 +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 + +[JointType] +jointlocal=balltranslate +jointshakey=ball +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +[frame4] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.135013 0.000000 0.000000 +jointlknee=-0.398570 0.000000 0.000000 +jointlankle=0.269854 0.000000 0.000000 +jointrthigh=0.190482 0.000000 0.000000 +jointrknee=-0.291442 0.000000 0.000000 +jointrankle=0.100491 0.000000 0.000000 +[frame7] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.196845 0.000000 0.000000 +jointlknee=-0.672041 0.000000 0.000000 +jointlankle=0.384920 0.000000 0.000000 +jointrthigh=0.292077 0.000000 0.000000 +jointrknee=-0.400632 0.000000 0.000000 +jointrankle=0.109270 0.000000 0.000000 +[frame10] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.149373 0.000000 0.000000 +jointlknee=-0.812927 0.000000 0.000000 +jointlankle=0.499984 0.000000 0.000000 +jointrthigh=0.378688 0.000000 0.000000 +jointrknee=-0.479798 0.000000 0.000000 +jointrankle=0.101976 0.000000 0.000000 +[frame19] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.082742 0.000000 0.000000 +jointlknee=-1.032703 0.000000 0.000000 +jointlankle=0.582278 0.000000 0.000000 +jointrthigh=0.573997 0.000000 0.000000 +jointrknee=-0.534008 0.000000 0.000000 +jointrankle=-0.041745 0.000000 0.000000 +[frame29] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.415072 0.000000 0.000000 +jointlknee=-0.525407 0.000000 0.000000 +jointlankle=0.556978 0.000000 0.000000 +jointrthigh=0.763780 0.000000 0.000000 +jointrknee=-0.532840 0.000000 0.000000 +jointrankle=0.108070 0.000000 0.000000 +[frame59] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.415072 0.000000 0.000000 +jointlknee=-0.525407 0.000000 0.000000 +jointlankle=0.556978 0.000000 0.000000 +jointrthigh=0.763780 0.000000 0.000000 +jointrknee=-0.532840 0.000000 0.000000 +jointrankle=0.108070 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.365190 0.000000 +frame4=0.000000 -5.364946 -2.143002 +frame7=0.000000 -5.364703 -2.143002 +frame10=0.000000 -5.364460 -2.143001 +frame19=0.000000 -5.363730 -2.565333 +frame29=0.000000 -5.363000 -3.367201 +frame59=0.000000 -5.363000 -3.135200 + +[KeyJointPos] +frame1=0.000000 0.000000 0.000000 +frame4=0.000000 -0.066667 0.000000 +frame7=0.000000 -0.133334 0.000000 +frame10=0.000000 -0.200000 0.000000 +frame19=0.000000 -0.400000 0.000000 +frame29=0.000000 -0.600000 0.000000 +frame59=0.000000 -0.600000 0.000000 diff --git a/CONTENT/BT/ANIMS/FIRSBR.ANI b/CONTENT/BT/ANIMS/FIRSBR.ANI new file mode 100644 index 0000000..c2171eb --- /dev/null +++ b/CONTENT/BT/ANIMS/FIRSBR.ANI @@ -0,0 +1,109 @@ +[LAB_ONLY] + +[HEADER] +framecount=7 +framerate=30 +skeletonfile=fir.skl +jointcount=7 + +[Time] +frame1=0 +frame4=0.1 +frame7=0.2 +frame10=0.3 +frame19=0.6 +frame29=0.933333 +frame59=1.93333 + +[JointIndices] +jointlocal=0 +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 + +[JointType] +jointlocal=balltranslate +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +[frame4] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.190482 0.000000 0.000000 +jointlknee=-0.291442 0.000000 0.000000 +jointlankle=0.100491 0.000000 0.000000 +jointrthigh=0.135013 0.000000 0.000000 +jointrknee=-0.398570 0.000000 0.000000 +jointrankle=0.271039 0.000000 0.000000 +[frame7] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.292077 0.000000 0.000000 +jointlknee=-0.400632 0.000000 0.000000 +jointlankle=0.109270 0.000000 0.000000 +jointrthigh=0.196845 0.000000 0.000000 +jointrknee=-0.672041 0.000000 0.000000 +jointrankle=0.384920 0.000000 0.000000 +[frame10] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.199762 0.000000 0.000000 +jointlknee=-0.122017 0.000000 0.000000 +jointlankle=-0.076047 0.000000 0.000000 +jointrthigh=0.149373 0.000000 0.000000 +jointrknee=-0.812927 0.000000 0.000000 +jointrankle=0.499984 0.000000 0.000000 +[frame19] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.573997 0.000000 0.000000 +jointlknee=-0.534008 0.000000 0.000000 +jointlankle=-0.041745 0.000000 0.000000 +jointrthigh=-0.082742 0.000000 0.000000 +jointrknee=-1.032703 0.000000 0.000000 +jointrankle=0.582278 0.000000 0.000000 +[frame29] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.763780 0.000000 0.000000 +jointlknee=-0.532840 0.000000 0.000000 +jointlankle=0.108070 0.000000 0.000000 +jointrthigh=-0.415072 0.000000 0.000000 +jointrknee=-0.525407 0.000000 0.000000 +jointrankle=0.556978 0.000000 0.000000 +[frame59] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.763780 0.000000 0.000000 +jointlknee=-0.532840 0.000000 0.000000 +jointlankle=0.108070 0.000000 0.000000 +jointrthigh=-0.415072 0.000000 0.000000 +jointrknee=-0.525407 0.000000 0.000000 +jointrankle=0.556978 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.365190 0.000000 +frame4=0.000000 -5.364946 -2.143002 +frame7=0.000000 -5.364703 -2.143002 +frame10=0.000000 -5.364460 -2.143001 +frame19=0.000000 -5.363730 -2.565333 +frame29=0.000000 -5.363000 -3.367201 +frame59=0.000000 -5.363000 -3.135200 + +[KeyJointPos] +frame1=0.000000 0.000000 0.000000 +frame4=0.000000 -0.066667 0.000000 +frame7=0.000000 -0.133334 0.000000 +frame10=0.000000 -0.200000 0.000000 +frame19=0.000000 -0.400000 0.000000 +frame29=0.000000 -0.600000 0.000000 +frame59=0.000000 -0.600000 0.000000 diff --git a/CONTENT/BT/ANIMS/FIRSBRI.ANI b/CONTENT/BT/ANIMS/FIRSBRI.ANI new file mode 100644 index 0000000..8918fdd --- /dev/null +++ b/CONTENT/BT/ANIMS/FIRSBRI.ANI @@ -0,0 +1,118 @@ +[LAB_ONLY] + +[HEADER] +framecount=7 +framerate=30 +skeletonfile=fir.skl +jointcount=8 + +[Time] +frame1=0 +frame4=0.1 +frame7=0.2 +frame10=0.3 +frame19=0.6 +frame29=0.933333 +frame59=1.93333 + +[JointIndices] +jointlocal=0 +jointshakey=3 +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 + +[JointType] +jointlocal=balltranslate +jointshakey=ball +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +[frame4] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.190482 0.000000 0.000000 +jointlknee=-0.291442 0.000000 0.000000 +jointlankle=0.100491 0.000000 0.000000 +jointrthigh=0.135013 0.000000 0.000000 +jointrknee=-0.398570 0.000000 0.000000 +jointrankle=0.271039 0.000000 0.000000 +[frame7] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.292077 0.000000 0.000000 +jointlknee=-0.400632 0.000000 0.000000 +jointlankle=0.109270 0.000000 0.000000 +jointrthigh=0.196845 0.000000 0.000000 +jointrknee=-0.672041 0.000000 0.000000 +jointrankle=0.384920 0.000000 0.000000 +[frame10] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.199762 0.000000 0.000000 +jointlknee=-0.122017 0.000000 0.000000 +jointlankle=-0.076047 0.000000 0.000000 +jointrthigh=0.149373 0.000000 0.000000 +jointrknee=-0.812927 0.000000 0.000000 +jointrankle=0.499984 0.000000 0.000000 +[frame19] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.573997 0.000000 0.000000 +jointlknee=-0.534008 0.000000 0.000000 +jointlankle=-0.041745 0.000000 0.000000 +jointrthigh=-0.082742 0.000000 0.000000 +jointrknee=-1.032703 0.000000 0.000000 +jointrankle=0.582278 0.000000 0.000000 +[frame29] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.763780 0.000000 0.000000 +jointlknee=-0.532840 0.000000 0.000000 +jointlankle=0.108070 0.000000 0.000000 +jointrthigh=-0.415072 0.000000 0.000000 +jointrknee=-0.525407 0.000000 0.000000 +jointrankle=0.556978 0.000000 0.000000 +[frame59] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.763780 0.000000 0.000000 +jointlknee=-0.532840 0.000000 0.000000 +jointlankle=0.108070 0.000000 0.000000 +jointrthigh=-0.415072 0.000000 0.000000 +jointrknee=-0.525407 0.000000 0.000000 +jointrankle=0.556978 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.365190 0.000000 +frame4=0.000000 -5.364946 -2.143002 +frame7=0.000000 -5.364703 -2.143002 +frame10=0.000000 -5.364460 -2.143001 +frame19=0.000000 -5.363730 -2.565333 +frame29=0.000000 -5.363000 -3.367201 +frame59=0.000000 -5.363000 -3.135200 + +[KeyJointPos] +frame1=0.000000 0.000000 0.000000 +frame4=0.000000 -0.066667 0.000000 +frame7=0.000000 -0.133334 0.000000 +frame10=0.000000 -0.200000 0.000000 +frame19=0.000000 -0.400000 0.000000 +frame29=0.000000 -0.600000 0.000000 +frame59=0.000000 -0.600000 0.000000 diff --git a/CONTENT/BT/ANIMS/FIRSWL.ANI b/CONTENT/BT/ANIMS/FIRSWL.ANI new file mode 100644 index 0000000..ecdda73 --- /dev/null +++ b/CONTENT/BT/ANIMS/FIRSWL.ANI @@ -0,0 +1,87 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=fir.skl +jointcount=7 + +[Time] +frame1=0 +frame10=0.3 +frame23=0.733333 +frame34=1.1 +frame64=2.1 + +[JointIndices] +jointlocal=0 +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 + +[JointType] +jointlocal=balltranslate +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +[frame10] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.432606 0.000000 0.000000 +jointlknee=-0.820387 0.000000 0.000000 +jointlankle=0.300443 0.000000 0.000000 +jointrthigh=-0.213646 0.000000 0.000000 +jointrknee=-0.005362 0.000000 0.000000 +jointrankle=0.213883 0.000000 0.000000 +[frame23] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.647784 0.000000 0.000000 +jointlknee=-0.806660 0.000000 0.000000 +jointlankle=0.175491 0.000000 0.000000 +jointrthigh=-0.437360 0.000000 0.000000 +jointrknee=-0.037040 0.000000 0.000000 +jointrankle=0.379963 0.000000 0.000000 +[frame34] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.763780 0.000000 0.000000 +jointlknee=-0.532840 0.000000 0.000000 +jointlankle=0.108070 0.000000 0.000000 +jointrthigh=-0.549325 0.000000 0.000000 +jointrknee=-0.265173 0.000000 0.000000 +jointrankle=0.445083 0.000000 0.000000 +[frame64] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.763780 0.000000 0.000000 +jointlknee=-0.532840 0.000000 0.000000 +jointlankle=0.108070 0.000000 0.000000 +jointrthigh=-0.504240 0.000000 0.000000 +jointrknee=-0.357518 0.000000 0.000000 +jointrankle=0.491385 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.365190 0.000000 +frame10=0.000000 -5.365190 3.496686 +frame23=0.000000 -5.363000 2.669077 +frame34=0.000000 -5.363000 3.141382 +frame64=0.000000 -5.363000 3.001030 + +[KeyJointPos] +frame1=0.000000 0.000000 0.000000 +frame10=0.000000 -0.120010 0.000000 +frame23=0.000000 -0.340260 0.000000 +frame34=0.000000 -0.600000 0.000000 +frame64=0.000000 -0.600000 0.000000 diff --git a/CONTENT/BT/ANIMS/FIRSWLI.ANI b/CONTENT/BT/ANIMS/FIRSWLI.ANI new file mode 100644 index 0000000..ee8b62f --- /dev/null +++ b/CONTENT/BT/ANIMS/FIRSWLI.ANI @@ -0,0 +1,94 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=fir.skl +jointcount=8 + +[Time] +frame1=0 +frame10=0.3 +frame23=0.733333 +frame34=1.1 +frame64=2.1 + +[JointIndices] +jointlocal=0 +jointshakey=3 +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 + +[JointType] +jointlocal=balltranslate +jointshakey=ball +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +[frame10] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.432606 0.000000 0.000000 +jointlknee=-0.820387 0.000000 0.000000 +jointlankle=0.300443 0.000000 0.000000 +jointrthigh=-0.213646 0.000000 0.000000 +jointrknee=-0.005362 0.000000 0.000000 +jointrankle=0.213883 0.000000 0.000000 +[frame23] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.647784 0.000000 0.000000 +jointlknee=-0.806660 0.000000 0.000000 +jointlankle=0.175491 0.000000 0.000000 +jointrthigh=-0.437360 0.000000 0.000000 +jointrknee=-0.037040 0.000000 0.000000 +jointrankle=0.379963 0.000000 0.000000 +[frame34] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.763780 0.000000 0.000000 +jointlknee=-0.532840 0.000000 0.000000 +jointlankle=0.108070 0.000000 0.000000 +jointrthigh=-0.549325 0.000000 0.000000 +jointrknee=-0.265173 0.000000 0.000000 +jointrankle=0.445083 0.000000 0.000000 +[frame64] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.763780 0.000000 0.000000 +jointlknee=-0.532840 0.000000 0.000000 +jointlankle=0.108070 0.000000 0.000000 +jointrthigh=-0.504240 0.000000 0.000000 +jointrknee=-0.357518 0.000000 0.000000 +jointrankle=0.491385 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.365190 0.000000 +frame10=0.000000 -5.365190 3.496686 +frame23=0.000000 -5.363000 2.669077 +frame34=0.000000 -5.363000 3.141382 +frame64=0.000000 -5.363000 3.001030 + +[KeyJointPos] +frame1=0.000000 0.000000 0.000000 +frame10=0.000000 -0.120010 0.000000 +frame23=0.000000 -0.340260 0.000000 +frame34=0.000000 -0.600000 0.000000 +frame64=0.000000 -0.600000 0.000000 diff --git a/CONTENT/BT/ANIMS/FIRSWR.ANI b/CONTENT/BT/ANIMS/FIRSWR.ANI new file mode 100644 index 0000000..3d045e7 --- /dev/null +++ b/CONTENT/BT/ANIMS/FIRSWR.ANI @@ -0,0 +1,87 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=fir.skl +jointcount=7 + +[Time] +frame1=0 +frame10=0.3 +frame23=0.733333 +frame34=1.1 +frame64=2.1 + +[JointIndices] +jointlocal=0 +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 + +[JointType] +jointlocal=balltranslate +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +[frame10] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.213646 0.000000 0.000000 +jointlknee=-0.005362 0.000000 0.000000 +jointlankle=0.213883 0.000000 0.000000 +jointrthigh=0.432606 0.000000 0.000000 +jointrknee=-0.820387 0.000000 0.000000 +jointrankle=0.300443 0.000000 0.000000 +[frame23] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.437360 0.000000 0.000000 +jointlknee=-0.037040 0.000000 0.000000 +jointlankle=0.379963 0.000000 0.000000 +jointrthigh=0.647784 0.000000 0.000000 +jointrknee=-0.806660 0.000000 0.000000 +jointrankle=0.175491 0.000000 0.000000 +[frame34] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.549325 0.000000 0.000000 +jointlknee=-0.265173 0.000000 0.000000 +jointlankle=0.445083 0.000000 0.000000 +jointrthigh=0.763780 0.000000 0.000000 +jointrknee=-0.532840 0.000000 0.000000 +jointrankle=0.108070 0.000000 0.000000 +[frame64] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.504240 0.000000 0.000000 +jointlknee=-0.357518 0.000000 0.000000 +jointlankle=0.491385 0.000000 0.000000 +jointrthigh=0.763780 0.000000 0.000000 +jointrknee=-0.532840 0.000000 0.000000 +jointrankle=0.108070 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.365190 0.000000 +frame10=0.000000 -5.365190 3.496686 +frame23=0.000000 -5.363000 2.669077 +frame34=0.000000 -5.363000 3.141382 +frame64=0.000000 -5.363000 3.001030 + +[KeyJointPos] +frame1=0.000000 0.000000 0.000000 +frame10=0.000000 -0.120010 0.000000 +frame23=0.000000 -0.340260 0.000000 +frame34=0.000000 -0.600000 0.000000 +frame64=0.000000 -0.600000 0.000000 diff --git a/CONTENT/BT/ANIMS/FIRSWRI.ANI b/CONTENT/BT/ANIMS/FIRSWRI.ANI new file mode 100644 index 0000000..d985c10 --- /dev/null +++ b/CONTENT/BT/ANIMS/FIRSWRI.ANI @@ -0,0 +1,94 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=fir.skl +jointcount=8 + +[Time] +frame1=0 +frame10=0.3 +frame23=0.733333 +frame34=1.1 +frame64=2.1 + +[JointIndices] +jointlocal=0 +jointshakey=3 +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 + +[JointType] +jointlocal=balltranslate +jointshakey=ball +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +[frame10] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.213646 0.000000 0.000000 +jointlknee=-0.005362 0.000000 0.000000 +jointlankle=0.213883 0.000000 0.000000 +jointrthigh=0.432606 0.000000 0.000000 +jointrknee=-0.820387 0.000000 0.000000 +jointrankle=0.300443 0.000000 0.000000 +[frame23] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.437360 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlknee=-0.037040 0.000000 0.000000 +jointlankle=0.379963 0.000000 0.000000 +jointrthigh=0.647784 0.000000 0.000000 +jointrknee=-0.806660 0.000000 0.000000 +jointrankle=0.175491 0.000000 0.000000 +[frame34] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.549325 0.000000 0.000000 +jointlknee=-0.265173 0.000000 0.000000 +jointlankle=0.445083 0.000000 0.000000 +jointrthigh=0.763780 0.000000 0.000000 +jointrknee=-0.532840 0.000000 0.000000 +jointrankle=0.108070 0.000000 0.000000 +[frame64] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.504240 0.000000 0.000000 +jointlknee=-0.357518 0.000000 0.000000 +jointlankle=0.491385 0.000000 0.000000 +jointrthigh=0.763780 0.000000 0.000000 +jointrknee=-0.532840 0.000000 0.000000 +jointrankle=0.108070 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.365190 0.000000 +frame10=0.000000 -5.365190 3.496686 +frame23=0.000000 -5.363000 2.669077 +frame34=0.000000 -5.363000 3.141382 +frame64=0.000000 -5.363000 3.001030 + +[KeyJointPos] +frame1=0.000000 0.000000 0.000000 +frame10=0.000000 -0.120010 0.000000 +frame23=0.000000 -0.340260 0.000000 +frame34=0.000000 -0.600000 0.000000 +frame64=0.000000 -0.600000 0.000000 diff --git a/CONTENT/BT/ANIMS/FIRTRN.ANI b/CONTENT/BT/ANIMS/FIRTRN.ANI new file mode 100644 index 0000000..552acbd --- /dev/null +++ b/CONTENT/BT/ANIMS/FIRTRN.ANI @@ -0,0 +1,87 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=fir.skl +jointcount=7 + +[Time] +frame1=0 +frame12=0.366667 +frame23=0.733333 +frame34=1.1 +frame45=1.46667 + +[JointIndices] +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 +jointlocal=0 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate + +[frame1] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame12] +jointlthigh=0.293659 0.000000 0.000000 +jointlknee=-0.760082 0.000000 0.000000 +jointlankle=0.454452 0.000000 0.000000 +jointrthigh=0.058707 0.000000 0.000000 +jointrknee=-0.159500 0.000000 0.000000 +jointrankle=0.101507 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.018326 +[frame23] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame34] +jointlthigh=0.044154 0.000000 0.000000 +jointlknee=-0.119840 0.000000 0.000000 +jointlankle=0.076623 0.000000 0.000000 +jointrthigh=0.307909 0.000000 0.000000 +jointrknee=-0.797483 0.000000 0.000000 +jointrankle=0.477670 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.018326 +[frame45] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame12=0.000000 -5.350000 0.000000 +frame23=0.000000 -5.350000 0.000000 +frame34=0.000000 -5.350000 0.000000 +frame45=0.000000 -5.350000 0.000000 + +[KeyJointPos] +frame1=0.000000 0.000000 0.000000 +frame12=0.113777 -0.001042 0.000000 +frame23=0.000000 0.000000 0.000000 +frame34=-0.113777 -0.001042 0.000000 +frame45=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/FIRTRNI.ANI b/CONTENT/BT/ANIMS/FIRTRNI.ANI new file mode 100644 index 0000000..4e71487 --- /dev/null +++ b/CONTENT/BT/ANIMS/FIRTRNI.ANI @@ -0,0 +1,94 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=fir.skl +jointcount=8 + +[Time] +frame1=0 +frame12=0.366667 +frame23=0.733333 +frame34=1.1 +frame45=1.46667 + +[JointIndices] +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame12] +jointlthigh=0.285597 0.000000 0.000000 +jointlknee=-0.733401 0.000000 0.000000 +jointlankle=0.435383 0.000000 0.000000 +jointrthigh=0.000030 0.000000 0.000000 +jointrknee=-0.000382 0.000000 0.000000 +jointrankle=0.000807 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.009163 +jointshakey=0.000000 0.000000 -0.009163 +[frame23] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame34] +jointlthigh=0.061957 0.000000 0.000000 +jointlknee=-0.168362 0.000000 0.000000 +jointlankle=0.107585 0.000000 0.000000 +jointrthigh=0.300350 0.000000 0.000000 +jointrknee=-0.771961 0.000000 0.000000 +jointrankle=0.459248 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.009163 +jointshakey=0.000000 0.000000 0.009163 +[frame45] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame12=0.000000 -5.350000 0.000000 +frame23=0.000000 -5.350000 0.000000 +frame34=0.000000 -5.350000 0.000000 +frame45=0.000000 -5.350000 0.000000 + +[KeyJointPos] +frame1=0.000000 0.000000 0.000000 +frame12=0.000000 0.000000 0.000000 +frame23=0.000000 0.000000 0.000000 +frame34=0.000000 0.000000 0.000000 +frame45=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/FIRWGL.ANI b/CONTENT/BT/ANIMS/FIRWGL.ANI new file mode 100644 index 0000000..6709b3c --- /dev/null +++ b/CONTENT/BT/ANIMS/FIRWGL.ANI @@ -0,0 +1,98 @@ +[LAB_ONLY] + +[HEADER] +framecount=6 +framerate=30 +skeletonfile=fir.skl +jointcount=7 + +[Time] +frame1=0 +frame10=0.3 +frame17=0.533333 +frame22=0.7 +frame26=0.833333 +frame56=1.83333 + +[JointIndices] +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 +jointlocal=0 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate + +[frame1] +jointlthigh=-0.492373 0.000000 0.000000 +jointlknee=-0.475967 0.000000 0.000000 +jointlankle=0.650851 0.000000 0.000000 +jointrthigh=0.412577 0.000000 0.000000 +jointrknee=-0.267172 0.000000 0.000000 +jointrankle=0.163490 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame10] +jointlthigh=-0.589846 0.000000 0.000000 +jointlknee=-0.516366 0.000000 0.000000 +jointlankle=0.287503 0.000000 0.000000 +jointrthigh=0.356485 0.000000 0.000000 +jointrknee=-0.233317 0.000000 0.000000 +jointrankle=0.070402 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.009425 +[frame17] +jointlthigh=-0.526360 0.000000 0.000000 +jointlknee=-0.511573 0.000000 0.000000 +jointlankle=-0.216180 0.000000 0.000000 +jointrthigh=0.224610 0.000000 0.000000 +jointrknee=-0.283318 0.000000 0.000000 +jointrankle=0.058921 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.016755 +[frame22] +jointlthigh=-0.254822 0.000000 0.000000 +jointlknee=-0.689241 0.000000 0.000000 +jointlankle=-0.543888 0.000000 0.000000 +jointrthigh=0.050688 0.000000 0.000000 +jointrknee=-0.218753 0.000000 0.000000 +jointrankle=0.163589 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.021991 +[frame26] +jointlthigh=-0.049463 0.000000 0.000000 +jointlknee=-0.814266 0.000000 0.000000 +jointlankle=-0.499950 0.000000 0.000000 +jointrthigh=-0.054350 0.000000 0.000000 +jointrknee=-0.236876 0.000000 0.000000 +jointrankle=0.288957 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.026180 +[frame56] +jointlthigh=-0.047994 0.000000 0.000000 +jointlknee=-0.818416 0.000000 0.000000 +jointlankle=-0.497190 0.000000 0.000000 +jointrthigh=-0.064916 0.000000 0.000000 +jointrknee=-0.205319 0.000000 0.000000 +jointrankle=0.268894 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.026180 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame10=0.000000 -5.350000 4.548289 +frame17=0.000000 -5.350000 4.548288 +frame22=0.000000 -5.350000 4.548289 +frame26=0.000000 -5.350000 4.548286 +frame56=0.000000 -5.350000 4.487109 + +[KeyJointPos] +frame1=0.000000 -0.273276 0.000000 +frame10=0.056409 -0.223840 0.000000 +frame17=0.101945 -0.125031 0.000000 +frame22=0.135982 -0.026330 0.000000 +frame26=0.165129 0.097180 0.000000 +frame56=0.165129 0.097180 0.000000 diff --git a/CONTENT/BT/ANIMS/FIRWGLI.ANI b/CONTENT/BT/ANIMS/FIRWGLI.ANI new file mode 100644 index 0000000..8de9e20 --- /dev/null +++ b/CONTENT/BT/ANIMS/FIRWGLI.ANI @@ -0,0 +1,106 @@ +[LAB_ONLY] + +[HEADER] +framecount=6 +framerate=30 +skeletonfile=fir.skl +jointcount=8 + +[Time] +frame1=0 +frame10=0.3 +frame17=0.533333 +frame22=0.7 +frame26=0.833333 +frame56=1.83333 + +[JointIndices] +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=-0.492373 0.000000 0.000000 +jointlknee=-0.475967 0.000000 0.000000 +jointlankle=0.650851 0.000000 0.000000 +jointrthigh=0.412577 0.000000 0.000000 +jointrknee=-0.267172 0.000000 0.000000 +jointrankle=0.163490 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame10] +jointlthigh=-0.594145 0.000000 0.000000 +jointlknee=-0.499391 0.000000 0.000000 +jointlankle=0.274820 0.000000 0.000000 +jointrthigh=0.337831 0.000000 0.000000 +jointrknee=-0.179758 0.000000 0.000000 +jointrankle=0.041441 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.005655 +jointshakey=0.000000 0.000000 -0.005655 +[frame17] +jointlthigh=-0.535066 0.000000 0.000000 +jointlknee=-0.479372 0.000000 0.000000 +jointlankle=-0.239721 0.000000 0.000000 +jointrthigh=0.191981 0.000000 0.000000 +jointrknee=-0.196985 0.000000 0.000000 +jointrankle=0.004486 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.010053 +jointshakey=0.000000 0.000000 -0.010053 +[frame22] +jointlthigh=-0.265290 0.000000 0.000000 +jointlknee=-0.652404 0.000000 0.000000 +jointlankle=-0.570269 0.000000 0.000000 +jointrthigh=0.083075 0.000000 0.000000 +jointrknee=-0.299415 0.000000 0.000000 +jointrankle=0.216330 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.013195 +jointshakey=0.000000 0.000000 -0.013195 +[frame26] +jointlthigh=-0.049463 0.000000 0.000000 +jointlknee=-0.814266 0.000000 0.000000 +jointlankle=-0.499950 0.000000 0.000000 +jointrthigh=-0.074480 0.000000 0.000000 +jointrknee=-0.190792 0.000000 0.000000 +jointrankle=0.267028 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.015708 +jointshakey=0.000000 0.000000 -0.015708 +[frame56] +jointlthigh=-0.047994 0.000000 0.000000 +jointlknee=-0.818416 0.000000 0.000000 +jointlankle=-0.497190 0.000000 0.000000 +jointrthigh=-0.068744 0.000000 0.000000 +jointrknee=-0.194564 0.000000 0.000000 +jointrankle=0.262712 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.015708 +jointshakey=0.000000 0.000000 -0.015708 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame10=0.000000 -5.350000 4.548289 +frame17=0.000000 -5.350000 4.548288 +frame22=0.000000 -5.350000 4.548289 +frame26=0.000000 -5.350000 4.548286 +frame56=0.000000 -5.350000 4.487109 + +[KeyJointPos] +frame1=0.000000 -0.273276 0.000000 +frame10=0.000000 -0.223574 0.000000 +frame17=0.000000 -0.124177 0.000000 +frame22=0.000000 -0.024836 0.000000 +frame26=0.000000 0.099342 0.000000 +frame56=0.000000 0.099342 0.000000 diff --git a/CONTENT/BT/ANIMS/FIRWGR.ANI b/CONTENT/BT/ANIMS/FIRWGR.ANI new file mode 100644 index 0000000..42f2224 --- /dev/null +++ b/CONTENT/BT/ANIMS/FIRWGR.ANI @@ -0,0 +1,98 @@ +[LAB_ONLY] + +[HEADER] +framecount=6 +framerate=30 +skeletonfile=fir.skl +jointcount=7 + +[Time] +frame1=0 +frame10=0.3 +frame17=0.533333 +frame22=0.7 +frame26=0.833333 +frame56=1.83333 + +[JointIndices] +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 +jointlocal=0 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate + +[frame1] +jointlthigh=0.412577 0.000000 0.000000 +jointlknee=-0.267172 0.000000 0.000000 +jointlankle=0.163490 0.000000 0.000000 +jointrthigh=-0.492373 0.000000 0.000000 +jointrknee=-0.475967 0.000000 0.000000 +jointrankle=0.650851 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame10] +jointlthigh=0.323867 0.000000 0.000000 +jointlknee=-0.137254 0.000000 0.000000 +jointlankle=0.006893 0.000000 0.000000 +jointrthigh=-0.576287 0.000000 0.000000 +jointrknee=-0.548611 0.000000 0.000000 +jointrankle=0.306218 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.009425 +[frame17] +jointlthigh=0.199898 0.000000 0.000000 +jointlknee=-0.229088 0.000000 0.000000 +jointlankle=0.029444 0.000000 0.000000 +jointrthigh=-0.525512 0.000000 0.000000 +jointrknee=-0.530688 0.000000 0.000000 +jointrankle=-0.197871 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.016755 +[frame22] +jointlthigh=0.050688 0.000000 0.000000 +jointlknee=-0.218753 0.000000 0.000000 +jointlankle=0.163589 0.000000 0.000000 +jointrthigh=-0.254822 0.000000 0.000000 +jointrknee=-0.689241 0.000000 0.000000 +jointrankle=-0.543888 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.021991 +[frame26] +jointlthigh=-0.054350 0.000000 0.000000 +jointlknee=-0.236876 0.000000 0.000000 +jointlankle=0.288957 0.000000 0.000000 +jointrthigh=-0.049463 0.000000 0.000000 +jointrknee=-0.814266 0.000000 0.000000 +jointrankle=-0.499950 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.026180 +[frame56] +jointlthigh=-0.064810 0.000000 0.000000 +jointlknee=-0.205902 0.000000 0.000000 +jointlankle=0.269529 0.000000 0.000000 +jointrthigh=-0.048643 0.000000 0.000000 +jointrknee=-0.816664 0.000000 0.000000 +jointrankle=-0.498328 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.026180 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame10=0.000000 -5.350000 4.548289 +frame17=0.000000 -5.350000 4.548288 +frame22=0.000000 -5.350000 4.548289 +frame26=0.000000 -5.350000 4.548286 +frame56=0.000000 -5.350000 4.487109 + +[KeyJointPos] +frame1=0.000000 -0.273276 0.000000 +frame10=-0.056409 -0.223840 0.000000 +frame17=-0.101945 -0.125031 0.000000 +frame22=-0.135982 -0.026330 0.000000 +frame26=-0.165129 0.097180 0.000000 +frame56=-0.165129 0.097180 0.000000 diff --git a/CONTENT/BT/ANIMS/FIRWGRI.ANI b/CONTENT/BT/ANIMS/FIRWGRI.ANI new file mode 100644 index 0000000..b018c63 --- /dev/null +++ b/CONTENT/BT/ANIMS/FIRWGRI.ANI @@ -0,0 +1,106 @@ +[LAB_ONLY] + +[HEADER] +framecount=6 +framerate=30 +skeletonfile=fir.skl +jointcount=8 + +[Time] +frame1=0 +frame10=0.3 +frame17=0.533333 +frame22=0.7 +frame26=0.833333 +frame56=1.83333 + +[JointIndices] +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=0.412577 0.000000 0.000000 +jointlknee=-0.267172 0.000000 0.000000 +jointlankle=0.163490 0.000000 0.000000 +jointrthigh=-0.492373 0.000000 0.000000 +jointrknee=-0.475967 0.000000 0.000000 +jointrankle=0.650851 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame10] +jointlthigh=0.328207 0.000000 0.000000 +jointlknee=-0.132440 0.000000 0.000000 +jointlankle=-0.023875 0.000000 0.000000 +jointrthigh=-0.594145 0.000000 0.000000 +jointrknee=-0.499391 0.000000 0.000000 +jointrankle=0.274820 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.005655 +jointshakey=0.000000 0.000000 0.005655 +[frame17] +jointlthigh=0.180326 0.000000 0.000000 +jointlknee=-0.165998 0.000000 0.000000 +jointlankle=-0.015017 0.000000 0.000000 +jointrthigh=-0.525761 0.000000 0.000000 +jointrknee=-0.515321 0.000000 0.000000 +jointrankle=-0.214691 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.010053 +jointshakey=0.000000 0.000000 0.010053 +[frame22] +jointlthigh=0.079831 0.000000 0.000000 +jointlknee=-0.295589 0.000000 0.000000 +jointlankle=0.211290 0.000000 0.000000 +jointrthigh=-0.251029 0.000000 0.000000 +jointrknee=-0.684501 0.000000 0.000000 +jointrankle=-0.580085 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.013195 +jointshakey=0.000000 0.000000 0.013195 +[frame26] +jointlthigh=-0.080860 0.000000 0.000000 +jointlknee=-0.165134 0.000000 0.000000 +jointlankle=0.246070 0.000000 0.000000 +jointrthigh=-0.037502 0.000000 0.000000 +jointrknee=-0.852489 0.000000 0.000000 +jointrankle=-0.472777 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.015708 +jointshakey=0.000000 0.000000 0.015708 +[frame56] +jointlthigh=-0.074920 0.000000 0.000000 +jointlknee=-0.176755 0.000000 0.000000 +jointlankle=0.250692 0.000000 0.000000 +jointrthigh=-0.048643 0.000000 0.000000 +jointrknee=-0.816664 0.000000 0.000000 +jointrankle=-0.498328 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.015708 +jointshakey=0.000000 0.000000 0.015708 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame10=0.000000 -5.350000 4.548289 +frame17=0.000000 -5.350000 4.548288 +frame22=0.000000 -5.350000 4.548289 +frame26=0.000000 -5.350000 4.548286 +frame56=0.000000 -5.350000 4.487109 + +[KeyJointPos] +frame1=0.000000 -0.273276 0.000000 +frame10=0.000000 -0.223574 0.000000 +frame17=0.000000 -0.124177 0.000000 +frame22=0.000000 -0.024836 0.000000 +frame26=0.000000 0.099342 0.000000 +frame56=0.000000 0.099342 0.000000 diff --git a/CONTENT/BT/ANIMS/FIRWRL.ANI b/CONTENT/BT/ANIMS/FIRWRL.ANI new file mode 100644 index 0000000..7bf7511 --- /dev/null +++ b/CONTENT/BT/ANIMS/FIRWRL.ANI @@ -0,0 +1,154 @@ +[LAB_ONLY] + +[HEADER] +framecount=10 +framerate=30 +skeletonfile=fir.skl +jointcount=8 + +[Time] +frame1=0 +frame3=0.0666667 +frame5=0.133333 +frame7=0.2 +frame9=0.266667 +frame11=0.333333 +frame14=0.433333 +frame22=0.7 +frame28=0.9 +frame58=1.9 + +[JointIndices] +jointlocal=0 +jointhip=1 +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 + +[JointType] +jointlocal=balltranslate +jointhip=hingex +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointhip=0.000000 0.000000 0.000000 +jointlthigh=-0.417490 0.000000 0.000000 +jointlknee=-0.526657 0.000000 0.000000 +jointlankle=0.548327 0.000000 0.000000 +jointrthigh=0.763780 0.000000 0.000000 +jointrknee=-0.532840 0.000000 0.000000 +jointrankle=0.108070 0.000000 0.000000 +[frame3] +jointlocal=0.000000 0.000000 0.000000 +jointhip=0.000000 0.000000 0.000000 +jointlthigh=-0.206529 0.000000 0.000000 +jointlknee=-1.026329 0.000000 0.000000 +jointlankle=0.466820 0.000000 0.000000 +jointrthigh=0.750268 0.000000 0.000000 +jointrknee=-0.814769 0.000000 0.000000 +jointrankle=0.202961 0.000000 0.000000 +[frame5] +jointlocal=0.000000 0.000000 0.000000 +jointhip=-0.016290 0.000000 0.000000 +jointlthigh=0.004432 0.000000 0.000000 +jointlknee=-1.526001 0.000000 0.000000 +jointlankle=0.385313 0.000000 0.000000 +jointrthigh=0.625650 0.000000 0.000000 +jointrknee=-0.923974 0.000000 0.000000 +jointrankle=0.297851 0.000000 0.000000 +[frame7] +jointlocal=0.000000 0.000000 0.000000 +jointhip=-0.016290 0.000000 0.000000 +jointlthigh=0.242574 0.000000 0.000000 +jointlknee=-1.495932 0.000000 0.000000 +jointlankle=0.451311 0.000000 0.000000 +jointrthigh=0.404955 0.000000 0.000000 +jointrknee=-0.944850 0.000000 0.000000 +jointrankle=0.541145 0.000000 0.000000 +[frame9] +jointlocal=0.000000 0.000000 0.000000 +jointhip=-0.040724 0.000000 0.000000 +jointlthigh=0.480716 0.000000 0.000000 +jointlknee=-1.465864 0.000000 0.000000 +jointlankle=0.517309 0.000000 0.000000 +jointrthigh=0.086729 0.000000 0.000000 +jointrknee=-0.752656 0.000000 0.000000 +jointrankle=0.665904 0.000000 0.000000 +[frame11] +jointlocal=0.000000 0.000000 0.000000 +jointhip=-0.040724 0.000000 0.000000 +jointlthigh=0.627772 0.000000 0.000000 +jointlknee=-1.468956 0.000000 0.000000 +jointlankle=0.476648 0.000000 0.000000 +jointrthigh=-0.209024 0.000000 0.000000 +jointrknee=-0.587087 0.000000 0.000000 +jointrankle=0.655422 0.000000 0.000000 +[frame14] +jointlocal=0.000000 0.000000 0.000000 +jointhip=-0.081449 0.000000 0.000000 +jointlthigh=1.119072 0.000000 0.000000 +jointlknee=-1.343329 0.000000 0.000000 +jointlankle=-0.114202 0.000000 0.000000 +jointrthigh=-0.379012 0.000000 0.000000 +jointrknee=-0.585275 0.000000 0.000000 +jointrankle=0.236944 0.000000 0.000000 +[frame22] +jointlocal=0.000000 0.000000 0.000000 +jointhip=-0.081449 0.000000 0.000000 +jointlthigh=1.020861 0.000000 0.000000 +jointlknee=-0.560062 0.000000 0.000000 +jointlankle=0.194965 0.000000 0.000000 +jointrthigh=-0.475901 0.000000 0.000000 +jointrknee=-1.065071 0.000000 0.000000 +jointrankle=0.053136 0.000000 0.000000 +[frame28] +jointlocal=0.000000 0.000000 0.000000 +jointhip=-0.122173 0.000000 0.000000 +jointlthigh=0.408901 0.000000 0.000000 +jointlknee=-0.388051 0.000000 0.000000 +jointlankle=-0.021774 0.000000 0.000000 +jointrthigh=-0.045187 0.000000 0.000000 +jointrknee=-1.753532 0.000000 0.000000 +jointrankle=0.520927 0.000000 0.000000 +[frame58] +jointlocal=0.000000 0.000000 0.000000 +jointhip=-0.122173 0.000000 0.000000 +jointlthigh=0.408899 0.000000 0.000000 +jointlknee=-0.388051 0.000000 0.000000 +jointlankle=-0.021771 0.000000 0.000000 +jointrthigh=-0.045187 0.000000 0.000000 +jointrknee=-1.753532 0.000000 0.000000 +jointrankle=0.520927 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.363000 0.000000 +frame3=0.000000 -5.363000 13.497004 +frame5=0.000000 -5.363000 13.496989 +frame7=0.000000 -5.363000 14.671498 +frame9=0.000000 -5.363000 14.671494 +frame11=0.000000 -5.363000 15.851999 +frame14=0.000000 -5.363000 14.862014 +frame22=0.000000 -5.363000 15.369745 +frame28=0.000000 -5.363000 15.138503 +frame58=0.000000 -5.363000 14.933303 + +[KeyJointPos] +frame1=0.000000 -0.601440 0.000000 +frame3=0.000000 -0.601440 0.000000 +frame5=0.000000 -0.601440 0.000000 +frame7=0.000000 -0.581305 0.000000 +frame9=0.000000 -0.561170 0.000000 +frame11=0.000000 -0.561170 0.000000 +frame14=0.000000 -0.240090 0.000000 +frame22=0.000000 -0.060000 0.000000 +frame28=0.000000 -0.220070 0.000000 +frame58=0.000000 -0.220070 0.000000 diff --git a/CONTENT/BT/ANIMS/FIRWRLI.ANI b/CONTENT/BT/ANIMS/FIRWRLI.ANI new file mode 100644 index 0000000..f065b20 --- /dev/null +++ b/CONTENT/BT/ANIMS/FIRWRLI.ANI @@ -0,0 +1,166 @@ +[LAB_ONLY] + +[HEADER] +framecount=10 +framerate=30 +skeletonfile=fir.skl +jointcount=9 + +[Time] +frame1=0 +frame3=0.0666667 +frame5=0.133333 +frame7=0.2 +frame9=0.266667 +frame11=0.333333 +frame14=0.433333 +frame22=0.7 +frame28=0.9 +frame58=1.9 + +[JointIndices] +jointlocal=0 +jointhip=1 +jointshakey=3 +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 + +[JointType] +jointlocal=balltranslate +jointhip=hingex +jointshakey=ball +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointhip=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.417490 0.000000 0.000000 +jointlknee=-0.526657 0.000000 0.000000 +jointlankle=0.548327 0.000000 0.000000 +jointrthigh=0.763780 0.000000 0.000000 +jointrknee=-0.532840 0.000000 0.000000 +jointrankle=0.108070 0.000000 0.000000 +[frame3] +jointlocal=0.000000 0.000000 0.000000 +jointhip=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.206529 0.000000 0.000000 +jointlknee=-1.026329 0.000000 0.000000 +jointlankle=0.466820 0.000000 0.000000 +jointrthigh=0.750268 0.000000 0.000000 +jointrknee=-0.814769 0.000000 0.000000 +jointrankle=0.202961 0.000000 0.000000 +[frame5] +jointlocal=0.000000 0.000000 0.000000 +jointhip=-0.016290 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.004432 0.000000 0.000000 +jointlknee=-1.526001 0.000000 0.000000 +jointlankle=0.385313 0.000000 0.000000 +jointrthigh=0.625650 0.000000 0.000000 +jointrknee=-0.923974 0.000000 0.000000 +jointrankle=0.297851 0.000000 0.000000 +[frame7] +jointlocal=0.000000 0.000000 0.000000 +jointhip=-0.016290 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.242574 0.000000 0.000000 +jointlknee=-1.495932 0.000000 0.000000 +jointlankle=0.451311 0.000000 0.000000 +jointrthigh=0.404955 0.000000 0.000000 +jointrknee=-0.944850 0.000000 0.000000 +jointrankle=0.541145 0.000000 0.000000 +[frame9] +jointlocal=0.000000 0.000000 0.000000 +jointhip=-0.040724 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.480716 0.000000 0.000000 +jointlknee=-1.465864 0.000000 0.000000 +jointlankle=0.517309 0.000000 0.000000 +jointrthigh=0.086729 0.000000 0.000000 +jointrknee=-0.752656 0.000000 0.000000 +jointrankle=0.665904 0.000000 0.000000 +[frame11] +jointlocal=0.000000 0.000000 0.000000 +jointhip=-0.040724 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.627772 0.000000 0.000000 +jointlknee=-1.468956 0.000000 0.000000 +jointlankle=0.476648 0.000000 0.000000 +jointrthigh=-0.209024 0.000000 0.000000 +jointrknee=-0.587087 0.000000 0.000000 +jointrankle=0.655422 0.000000 0.000000 +[frame14] +jointlocal=0.000000 0.000000 0.000000 +jointhip=-0.081449 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=1.119072 0.000000 0.000000 +jointlknee=-1.343329 0.000000 0.000000 +jointlankle=-0.114202 0.000000 0.000000 +jointrthigh=-0.379012 0.000000 0.000000 +jointrknee=-0.585275 0.000000 0.000000 +jointrankle=0.236944 0.000000 0.000000 +[frame22] +jointlocal=0.000000 0.000000 0.000000 +jointhip=-0.081449 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=1.020861 0.000000 0.000000 +jointlknee=-0.560062 0.000000 0.000000 +jointlankle=0.194965 0.000000 0.000000 +jointrthigh=-0.475901 0.000000 0.000000 +jointrknee=-1.065071 0.000000 0.000000 +jointrankle=0.053136 0.000000 0.000000 +[frame28] +jointlocal=0.000000 0.000000 0.000000 +jointhip=-0.122173 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.408901 0.000000 0.000000 +jointlknee=-0.388051 0.000000 0.000000 +jointlankle=-0.021774 0.000000 0.000000 +jointrthigh=-0.045187 0.000000 0.000000 +jointrknee=-1.753532 0.000000 0.000000 +jointrankle=0.520927 0.000000 0.000000 +[frame58] +jointlocal=0.000000 0.000000 0.000000 +jointhip=-0.122173 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.408899 0.000000 0.000000 +jointlknee=-0.388051 0.000000 0.000000 +jointlankle=-0.021771 0.000000 0.000000 +jointrthigh=-0.045187 0.000000 0.000000 +jointrknee=-1.753532 0.000000 0.000000 +jointrankle=0.520927 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.363000 0.000000 +frame3=0.000000 -5.363000 13.497004 +frame5=0.000000 -5.363000 13.496989 +frame7=0.000000 -5.363000 14.671498 +frame9=0.000000 -5.363000 14.671494 +frame11=0.000000 -5.363000 15.851999 +frame14=0.000000 -5.363000 14.862014 +frame22=0.000000 -5.363000 15.369745 +frame28=0.000000 -5.363000 15.138503 +frame58=0.000000 -5.363000 14.933303 + +[KeyJointPos] +frame1=0.000000 -0.601440 0.000000 +frame3=0.000000 -0.601440 0.000000 +frame5=0.000000 -0.601440 0.000000 +frame7=0.000000 -0.581305 0.000000 +frame9=0.000000 -0.561170 0.000000 +frame11=0.000000 -0.561170 0.000000 +frame14=0.000000 -0.240090 0.000000 +frame22=0.000000 -0.060000 0.000000 +frame28=0.000000 -0.220070 0.000000 +frame58=0.000000 -0.220070 0.000000 diff --git a/CONTENT/BT/ANIMS/FIRWRR.ANI b/CONTENT/BT/ANIMS/FIRWRR.ANI new file mode 100644 index 0000000..e3ff8dc --- /dev/null +++ b/CONTENT/BT/ANIMS/FIRWRR.ANI @@ -0,0 +1,154 @@ +[LAB_ONLY] + +[HEADER] +framecount=10 +framerate=30 +skeletonfile=fir.skl +jointcount=8 + +[Time] +frame1=0 +frame3=0.0666667 +frame5=0.133333 +frame7=0.2 +frame9=0.266667 +frame11=0.333333 +frame14=0.433333 +frame22=0.7 +frame28=0.9 +frame58=1.9 + +[JointIndices] +jointlocal=0 +jointhip=1 +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 + +[JointType] +jointlocal=balltranslate +jointhip=hingex +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointhip=0.000000 0.000000 0.000000 +jointlthigh=0.763780 0.000000 0.000000 +jointlknee=-0.532840 0.000000 0.000000 +jointlankle=0.108070 0.000000 0.000000 +jointrthigh=-0.417490 0.000000 0.000000 +jointrknee=-0.526657 0.000000 0.000000 +jointrankle=0.548327 0.000000 0.000000 +[frame3] +jointlocal=0.000000 0.000000 0.000000 +jointhip=0.000000 0.000000 0.000000 +jointlthigh=0.753699 0.000000 0.000000 +jointlknee=-0.819327 0.000000 0.000000 +jointlankle=0.202935 0.000000 0.000000 +jointrthigh=-0.206529 0.000000 0.000000 +jointrknee=-1.026329 0.000000 0.000000 +jointrankle=0.466820 0.000000 0.000000 +[frame5] +jointlocal=0.000000 0.000000 0.000000 +jointhip=-0.016290 0.000000 0.000000 +jointlthigh=0.627694 0.000000 0.000000 +jointlknee=-0.927930 0.000000 0.000000 +jointlankle=0.299907 0.000000 0.000000 +jointrthigh=0.004432 0.000000 0.000000 +jointrknee=-1.526001 0.000000 0.000000 +jointrankle=0.385313 0.000000 0.000000 +[frame7] +jointlocal=0.000000 0.000000 0.000000 +jointhip=-0.016290 0.000000 0.000000 +jointlthigh=0.408721 0.000000 0.000000 +jointlknee=-0.950396 0.000000 0.000000 +jointlankle=0.541298 0.000000 0.000000 +jointrthigh=0.242574 0.000000 0.000000 +jointrknee=-1.495932 0.000000 0.000000 +jointrankle=0.451311 0.000000 0.000000 +[frame9] +jointlocal=0.000000 0.000000 0.000000 +jointhip=-0.040724 0.000000 0.000000 +jointlthigh=0.090053 0.000000 0.000000 +jointlknee=-0.757593 0.000000 0.000000 +jointlankle=0.668011 0.000000 0.000000 +jointrthigh=0.480716 0.000000 0.000000 +jointrknee=-1.465864 0.000000 0.000000 +jointrankle=0.517309 0.000000 0.000000 +[frame11] +jointlocal=0.000000 0.000000 0.000000 +jointhip=-0.040724 0.000000 0.000000 +jointlthigh=-0.204261 0.000000 0.000000 +jointlknee=-0.591649 0.000000 0.000000 +jointlankle=0.657577 0.000000 0.000000 +jointrthigh=0.627772 0.000000 0.000000 +jointrknee=-1.468956 0.000000 0.000000 +jointrankle=0.476648 0.000000 0.000000 +[frame14] +jointlocal=0.000000 0.000000 0.000000 +jointhip=-0.081449 0.000000 0.000000 +jointlthigh=-0.407332 0.000000 0.000000 +jointlknee=-0.534355 0.000000 0.000000 +jointlankle=0.240332 0.000000 0.000000 +jointrthigh=1.119072 0.000000 0.000000 +jointrknee=-1.343329 0.000000 0.000000 +jointrankle=-0.114202 0.000000 0.000000 +[frame22] +jointlocal=0.000000 0.000000 0.000000 +jointhip=-0.081449 0.000000 0.000000 +jointlthigh=-0.475901 0.000000 0.000000 +jointlknee=-1.065071 0.000000 0.000000 +jointlankle=0.053136 0.000000 0.000000 +jointrthigh=1.020861 0.000000 0.000000 +jointrknee=-0.560062 0.000000 0.000000 +jointrankle=0.194965 0.000000 0.000000 +[frame28] +jointlocal=0.000000 0.000000 0.000000 +jointhip=-0.122173 0.000000 0.000000 +jointlthigh=-0.045187 0.000000 0.000000 +jointlknee=-1.753532 0.000000 0.000000 +jointlankle=0.520927 0.000000 0.000000 +jointrthigh=0.408901 0.000000 0.000000 +jointrknee=-0.388051 0.000000 0.000000 +jointrankle=-0.021774 0.000000 0.000000 +[frame58] +jointlocal=0.000000 0.000000 0.000000 +jointhip=-0.122173 0.000000 0.000000 +jointlthigh=-0.045187 0.000000 0.000000 +jointlknee=-1.753532 0.000000 0.000000 +jointlankle=0.520927 0.000000 0.000000 +jointrthigh=0.408899 0.000000 0.000000 +jointrknee=-0.388051 0.000000 0.000000 +jointrankle=-0.021771 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.363000 0.000000 +frame3=0.000000 -5.363000 13.497004 +frame5=0.000000 -5.363000 13.496989 +frame7=0.000000 -5.363000 14.671498 +frame9=0.000000 -5.363000 14.671494 +frame11=0.000000 -5.363000 15.851999 +frame14=0.000000 -5.363000 14.862014 +frame22=0.000000 -5.363000 15.369745 +frame28=0.000000 -5.363000 15.138503 +frame58=0.000000 -5.363000 14.933303 + +[KeyJointPos] +frame1=0.000000 -0.601440 0.000000 +frame3=0.000000 -0.601440 0.000000 +frame5=0.000000 -0.601440 0.000000 +frame7=0.000000 -0.581305 0.000000 +frame9=0.000000 -0.561170 0.000000 +frame11=0.000000 -0.561170 0.000000 +frame14=0.000000 -0.240090 0.000000 +frame22=0.000000 -0.060000 0.000000 +frame28=0.000000 -0.220070 0.000000 +frame58=0.000000 -0.220070 0.000000 diff --git a/CONTENT/BT/ANIMS/FIRWRRI.ANI b/CONTENT/BT/ANIMS/FIRWRRI.ANI new file mode 100644 index 0000000..22912dd --- /dev/null +++ b/CONTENT/BT/ANIMS/FIRWRRI.ANI @@ -0,0 +1,166 @@ +[LAB_ONLY] + +[HEADER] +framecount=10 +framerate=30 +skeletonfile=fir.skl +jointcount=9 + +[Time] +frame1=0 +frame3=0.0666667 +frame5=0.133333 +frame7=0.2 +frame9=0.266667 +frame11=0.333333 +frame14=0.433333 +frame22=0.7 +frame28=0.9 +frame58=1.9 + +[JointIndices] +jointlocal=0 +jointhip=1 +jointshakey=3 +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 + +[JointType] +jointlocal=balltranslate +jointhip=hingex +jointshakey=ball +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointhip=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.763780 0.000000 0.000000 +jointlknee=-0.532840 0.000000 0.000000 +jointlankle=0.108070 0.000000 0.000000 +jointrthigh=-0.417490 0.000000 0.000000 +jointrknee=-0.526657 0.000000 0.000000 +jointrankle=0.548327 0.000000 0.000000 +[frame3] +jointlocal=0.000000 0.000000 0.000000 +jointhip=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.753699 0.000000 0.000000 +jointlknee=-0.819327 0.000000 0.000000 +jointlankle=0.202935 0.000000 0.000000 +jointrthigh=-0.206529 0.000000 0.000000 +jointrknee=-1.026329 0.000000 0.000000 +jointrankle=0.466820 0.000000 0.000000 +[frame5] +jointlocal=0.000000 0.000000 0.000000 +jointhip=-0.016290 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.627694 0.000000 0.000000 +jointlknee=-0.927930 0.000000 0.000000 +jointlankle=0.299907 0.000000 0.000000 +jointrthigh=0.004432 0.000000 0.000000 +jointrknee=-1.526001 0.000000 0.000000 +jointrankle=0.385313 0.000000 0.000000 +[frame7] +jointlocal=0.000000 0.000000 0.000000 +jointhip=-0.016290 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.408721 0.000000 0.000000 +jointlknee=-0.950396 0.000000 0.000000 +jointlankle=0.541298 0.000000 0.000000 +jointrthigh=0.242574 0.000000 0.000000 +jointrknee=-1.495932 0.000000 0.000000 +jointrankle=0.451311 0.000000 0.000000 +[frame9] +jointlocal=0.000000 0.000000 0.000000 +jointhip=-0.040724 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.090053 0.000000 0.000000 +jointlknee=-0.757593 0.000000 0.000000 +jointlankle=0.668011 0.000000 0.000000 +jointrthigh=0.480716 0.000000 0.000000 +jointrknee=-1.465864 0.000000 0.000000 +jointrankle=0.517309 0.000000 0.000000 +[frame11] +jointlocal=0.000000 0.000000 0.000000 +jointhip=-0.040724 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.204261 0.000000 0.000000 +jointlknee=-0.591649 0.000000 0.000000 +jointlankle=0.657577 0.000000 0.000000 +jointrthigh=0.627772 0.000000 0.000000 +jointrknee=-1.468956 0.000000 0.000000 +jointrankle=0.476648 0.000000 0.000000 +[frame14] +jointlocal=0.000000 0.000000 0.000000 +jointhip=-0.081449 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.407332 0.000000 0.000000 +jointlknee=-0.534355 0.000000 0.000000 +jointlankle=0.240332 0.000000 0.000000 +jointrthigh=1.119072 0.000000 0.000000 +jointrknee=-1.343329 0.000000 0.000000 +jointrankle=-0.114202 0.000000 0.000000 +[frame22] +jointlocal=0.000000 0.000000 0.000000 +jointhip=-0.081449 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.475901 0.000000 0.000000 +jointlknee=-1.065071 0.000000 0.000000 +jointlankle=0.053136 0.000000 0.000000 +jointrthigh=1.020861 0.000000 0.000000 +jointrknee=-0.560062 0.000000 0.000000 +jointrankle=0.194965 0.000000 0.000000 +[frame28] +jointlocal=0.000000 0.000000 0.000000 +jointhip=-0.122173 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.045187 0.000000 0.000000 +jointlknee=-1.753532 0.000000 0.000000 +jointlankle=0.520927 0.000000 0.000000 +jointrthigh=0.408901 0.000000 0.000000 +jointrknee=-0.388051 0.000000 0.000000 +jointrankle=-0.021774 0.000000 0.000000 +[frame58] +jointlocal=0.000000 0.000000 0.000000 +jointhip=-0.122173 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.045187 0.000000 0.000000 +jointlknee=-1.753532 0.000000 0.000000 +jointlankle=0.520927 0.000000 0.000000 +jointrthigh=0.408899 0.000000 0.000000 +jointrknee=-0.388051 0.000000 0.000000 +jointrankle=-0.021771 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.363000 0.000000 +frame3=0.000000 -5.363000 13.497004 +frame5=0.000000 -5.363000 13.496989 +frame7=0.000000 -5.363000 14.671498 +frame9=0.000000 -5.363000 14.671494 +frame11=0.000000 -5.363000 15.851999 +frame14=0.000000 -5.363000 14.862014 +frame22=0.000000 -5.363000 15.369745 +frame28=0.000000 -5.363000 15.138503 +frame58=0.000000 -5.363000 14.933303 + +[KeyJointPos] +frame1=0.000000 -0.601440 0.000000 +frame3=0.000000 -0.601440 0.000000 +frame5=0.000000 -0.601440 0.000000 +frame7=0.000000 -0.581305 0.000000 +frame9=0.000000 -0.561170 0.000000 +frame11=0.000000 -0.561170 0.000000 +frame14=0.000000 -0.240090 0.000000 +frame22=0.000000 -0.060000 0.000000 +frame28=0.000000 -0.220070 0.000000 +frame58=0.000000 -0.220070 0.000000 diff --git a/CONTENT/BT/ANIMS/FIRWSL.ANI b/CONTENT/BT/ANIMS/FIRWSL.ANI new file mode 100644 index 0000000..d19e5cc --- /dev/null +++ b/CONTENT/BT/ANIMS/FIRWSL.ANI @@ -0,0 +1,87 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=fir.skl +jointcount=7 + +[Time] +frame1=0 +frame11=0.333333 +frame20=0.633333 +frame26=0.833333 +frame30=0.966667 + +[JointIndices] +jointlocal=0 +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 + +[JointType] +jointlocal=balltranslate +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.418985 0.000000 0.000000 +jointlknee=-0.525405 0.000000 0.000000 +jointlankle=0.571320 0.000000 0.000000 +jointrthigh=0.763780 0.000000 0.000000 +jointrknee=-0.532840 0.000000 0.000000 +jointrankle=0.108070 0.000000 0.000000 +[frame11] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.068947 0.000000 0.000000 +jointlknee=-1.083500 0.000000 0.000000 +jointlankle=0.601760 0.000000 0.000000 +jointrthigh=0.564644 0.000000 0.000000 +jointrknee=-0.519783 0.000000 0.000000 +jointrankle=-0.042618 0.000000 0.000000 +[frame20] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.218730 0.000000 0.000000 +jointlknee=-0.942397 0.000000 0.000000 +jointlankle=0.581957 0.000000 0.000000 +jointrthigh=0.374021 0.000000 0.000000 +jointrknee=-0.476005 0.000000 0.000000 +jointrankle=0.101927 0.000000 0.000000 +[frame26] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.064478 0.000000 0.000000 +jointlknee=-0.305907 0.000000 0.000000 +jointlankle=0.246479 0.000000 0.000000 +jointrthigh=0.149608 0.000000 0.000000 +jointrknee=-0.190402 0.000000 0.000000 +jointrankle=0.040771 0.000000 0.000000 +[frame30] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.363000 0.000000 +frame11=0.000000 -5.363730 3.367201 +frame20=0.000000 -5.364460 2.565333 +frame26=0.000000 -5.364898 1.928702 +frame30=0.000000 -5.365190 1.928702 + +[KeyJointPos] +frame1=0.000000 -0.600000 0.000000 +frame11=0.000000 -0.400000 0.000000 +frame20=0.000000 -0.200000 0.000000 +frame26=0.000000 -0.080000 0.000000 +frame30=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/FIRWSLI.ANI b/CONTENT/BT/ANIMS/FIRWSLI.ANI new file mode 100644 index 0000000..f35d801 --- /dev/null +++ b/CONTENT/BT/ANIMS/FIRWSLI.ANI @@ -0,0 +1,94 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=fir.skl +jointcount=8 + +[Time] +frame1=0 +frame11=0.333333 +frame20=0.633333 +frame26=0.833333 +frame30=0.966667 + +[JointIndices] +jointlocal=0 +jointshakey=3 +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 + +[JointType] +jointlocal=balltranslate +jointshakey=ball +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.418985 0.000000 0.000000 +jointlknee=-0.525405 0.000000 0.000000 +jointlankle=0.571320 0.000000 0.000000 +jointrthigh=0.763780 0.000000 0.000000 +jointrknee=-0.532840 0.000000 0.000000 +jointrankle=0.108070 0.000000 0.000000 +[frame11] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.068947 0.000000 0.000000 +jointlknee=-1.083500 0.000000 0.000000 +jointlankle=0.601760 0.000000 0.000000 +jointrthigh=0.564644 0.000000 0.000000 +jointrknee=-0.519783 0.000000 0.000000 +jointrankle=-0.042618 0.000000 0.000000 +[frame20] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.218730 0.000000 0.000000 +jointlknee=-0.942397 0.000000 0.000000 +jointlankle=0.581957 0.000000 0.000000 +jointrthigh=0.374021 0.000000 0.000000 +jointrknee=-0.476005 0.000000 0.000000 +jointrankle=0.101927 0.000000 0.000000 +[frame26] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.064478 0.000000 0.000000 +jointlknee=-0.305907 0.000000 0.000000 +jointlankle=0.246479 0.000000 0.000000 +jointrthigh=0.149608 0.000000 0.000000 +jointrknee=-0.190402 0.000000 0.000000 +jointrankle=0.040771 0.000000 0.000000 +[frame30] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.363000 0.000000 +frame11=0.000000 -5.363730 3.367201 +frame20=0.000000 -5.364460 2.565333 +frame26=0.000000 -5.364898 1.928702 +frame30=0.000000 -5.365190 1.928702 + +[KeyJointPos] +frame1=0.000000 -0.600000 0.000000 +frame11=0.000000 -0.400000 0.000000 +frame20=0.000000 -0.200000 0.000000 +frame26=0.000000 -0.080000 0.000000 +frame30=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/FIRWSR.ANI b/CONTENT/BT/ANIMS/FIRWSR.ANI new file mode 100644 index 0000000..a5317cc --- /dev/null +++ b/CONTENT/BT/ANIMS/FIRWSR.ANI @@ -0,0 +1,87 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=fir.skl +jointcount=7 + +[Time] +frame1=0 +frame11=0.333333 +frame20=0.633333 +frame26=0.833333 +frame30=0.966667 + +[JointIndices] +jointlocal=0 +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 + +[JointType] +jointlocal=balltranslate +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.763780 0.000000 0.000000 +jointlknee=-0.532840 0.000000 0.000000 +jointlankle=0.108070 0.000000 0.000000 +jointrthigh=-0.418985 0.000000 0.000000 +jointrknee=-0.525405 0.000000 0.000000 +jointrankle=0.571320 0.000000 0.000000 +[frame11] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.564644 0.000000 0.000000 +jointlknee=-0.519783 0.000000 0.000000 +jointlankle=-0.042618 0.000000 0.000000 +jointrthigh=0.068947 0.000000 0.000000 +jointrknee=-1.083500 0.000000 0.000000 +jointrankle=0.601760 0.000000 0.000000 +[frame20] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.374021 0.000000 0.000000 +jointlknee=-0.476005 0.000000 0.000000 +jointlankle=0.101927 0.000000 0.000000 +jointrthigh=0.217938 0.000000 0.000000 +jointrknee=-0.825595 0.000000 0.000000 +jointrankle=0.513219 0.000000 0.000000 +[frame26] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.149608 0.000000 0.000000 +jointlknee=-0.190402 0.000000 0.000000 +jointlankle=0.040771 0.000000 0.000000 +jointrthigh=0.124593 0.000000 0.000000 +jointrknee=-0.381197 0.000000 0.000000 +jointrankle=0.246479 0.000000 0.000000 +[frame30] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.363000 0.000000 +frame11=0.000000 -5.363730 3.367201 +frame20=0.000000 -5.364460 2.565333 +frame26=0.000000 -5.364898 1.928702 +frame30=0.000000 -5.365190 1.928702 + +[KeyJointPos] +frame1=0.000000 -0.600000 0.000000 +frame11=0.000000 -0.400000 0.000000 +frame20=0.000000 -0.200000 0.000000 +frame26=0.000000 -0.080000 0.000000 +frame30=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/FIRWSRI.ANI b/CONTENT/BT/ANIMS/FIRWSRI.ANI new file mode 100644 index 0000000..9fde0cc --- /dev/null +++ b/CONTENT/BT/ANIMS/FIRWSRI.ANI @@ -0,0 +1,94 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=fir.skl +jointcount=8 + +[Time] +frame1=0 +frame11=0.333333 +frame20=0.633333 +frame26=0.833333 +frame30=0.966667 + +[JointIndices] +jointlocal=0 +jointshakey=3 +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 + +[JointType] +jointlocal=balltranslate +jointshakey=ball +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.763780 0.000000 0.000000 +jointlknee=-0.532840 0.000000 0.000000 +jointlankle=0.108070 0.000000 0.000000 +jointrthigh=-0.418985 0.000000 0.000000 +jointrknee=-0.525405 0.000000 0.000000 +jointrankle=0.571320 0.000000 0.000000 +[frame11] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.564644 0.000000 0.000000 +jointlknee=-0.519783 0.000000 0.000000 +jointlankle=-0.042618 0.000000 0.000000 +jointrthigh=0.068947 0.000000 0.000000 +jointrknee=-1.083500 0.000000 0.000000 +jointrankle=0.601760 0.000000 0.000000 +[frame20] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.374021 0.000000 0.000000 +jointlknee=-0.476005 0.000000 0.000000 +jointlankle=0.101927 0.000000 0.000000 +jointrthigh=0.217938 0.000000 0.000000 +jointrknee=-0.825595 0.000000 0.000000 +jointrankle=0.513219 0.000000 0.000000 +[frame26] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.149608 0.000000 0.000000 +jointlknee=-0.190402 0.000000 0.000000 +jointlankle=0.040771 0.000000 0.000000 +jointrthigh=0.124593 0.000000 0.000000 +jointrknee=-0.381197 0.000000 0.000000 +jointrankle=0.246479 0.000000 0.000000 +[frame30] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.363000 0.000000 +frame11=0.000000 -5.363730 3.367201 +frame20=0.000000 -5.364460 2.565333 +frame26=0.000000 -5.364898 1.928702 +frame30=0.000000 -5.365190 1.928702 + +[KeyJointPos] +frame1=0.000000 -0.600000 0.000000 +frame11=0.000000 -0.400000 0.000000 +frame20=0.000000 -0.200000 0.000000 +frame26=0.000000 -0.080000 0.000000 +frame30=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/FIRWWL.ANI b/CONTENT/BT/ANIMS/FIRWWL.ANI new file mode 100644 index 0000000..d9a7643 --- /dev/null +++ b/CONTENT/BT/ANIMS/FIRWWL.ANI @@ -0,0 +1,120 @@ +[LAB_ONLY] + +[HEADER] +framecount=8 +framerate=30 +skeletonfile=fir.skl +jointcount=7 + +[Time] +frame1=0 +frame2=0.0333333 +frame5=0.133333 +frame7=0.2 +frame9=0.266667 +frame11=0.333333 +frame13=0.4 +frame15=0.466667 + +[JointIndices] +jointlocal=0 +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 + +[JointType] +jointlocal=balltranslate +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.549325 0.000000 0.000000 +jointlknee=-0.265173 0.000000 0.000000 +jointlankle=0.445083 0.000000 0.000000 +jointrthigh=0.763780 0.000000 0.000000 +jointrknee=-0.532840 0.000000 0.000000 +jointrankle=0.108070 0.000000 0.000000 +[frame2] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.509598 0.000000 0.000000 +jointlknee=-0.462837 0.000000 0.000000 +jointlankle=0.351794 0.000000 0.000000 +jointrthigh=0.699462 0.000000 0.000000 +jointrknee=-0.552190 0.000000 0.000000 +jointrankle=0.107388 0.000000 0.000000 +[frame5] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.002580 0.000000 0.000000 +jointlknee=-1.424117 0.000000 0.000000 +jointlankle=-0.107811 0.000000 0.000000 +jointrthigh=0.506507 0.000000 0.000000 +jointrknee=-0.610240 0.000000 0.000000 +jointrankle=0.105341 0.000000 0.000000 +[frame7] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.240176 0.000000 0.000000 +jointlknee=-1.450762 0.000000 0.000000 +jointlankle=0.187989 0.000000 0.000000 +jointrthigh=0.355770 0.000000 0.000000 +jointrknee=-0.677128 0.000000 0.000000 +jointrankle=0.322240 0.000000 0.000000 +[frame9] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.482933 0.000000 0.000000 +jointlknee=-1.477407 0.000000 0.000000 +jointlankle=0.483790 0.000000 0.000000 +jointrthigh=0.111719 0.000000 0.000000 +jointrknee=-0.554507 0.000000 0.000000 +jointrankle=0.442827 0.000000 0.000000 +[frame11] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.631483 0.000000 0.000000 +jointlknee=-1.175896 0.000000 0.000000 +jointlankle=0.326040 0.000000 0.000000 +jointrthigh=-0.168993 0.000000 0.000000 +jointrknee=-0.362484 0.000000 0.000000 +jointrankle=0.532688 0.000000 0.000000 +[frame13] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.697632 0.000000 0.000000 +jointlknee=-0.854368 0.000000 0.000000 +jointlankle=0.217055 0.000000 0.000000 +jointrthigh=-0.283642 0.000000 0.000000 +jointrknee=-0.481220 0.000000 0.000000 +jointrankle=0.595780 0.000000 0.000000 +[frame15] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.763780 0.000000 0.000000 +jointlknee=-0.532840 0.000000 0.000000 +jointlankle=0.108070 0.000000 0.000000 +jointrthigh=-0.419352 0.000000 0.000000 +jointrknee=-0.531514 0.000000 0.000000 +jointrankle=0.553371 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.363000 0.000000 +frame2=0.000000 -5.363000 11.923126 +frame5=0.000000 -5.363000 11.923126 +frame7=0.000000 -5.363000 12.512771 +frame9=0.000000 -5.363000 12.512774 +frame11=0.000000 -5.363000 12.836402 +frame13=0.000000 -5.363000 12.991720 +frame15=0.000000 -5.363000 12.991735 + +[KeyJointPos] +frame1=0.000000 -0.600000 0.000000 +frame2=0.000000 -0.535078 0.000000 +frame5=0.000000 -0.340310 0.000000 +frame7=0.000000 -0.307655 0.000000 +frame9=0.000000 -0.275000 0.000000 +frame11=0.000000 -0.385000 0.000000 +frame13=0.000000 -0.493220 0.000000 +frame15=0.000000 -0.601440 0.000000 diff --git a/CONTENT/BT/ANIMS/FIRWWLI.ANI b/CONTENT/BT/ANIMS/FIRWWLI.ANI new file mode 100644 index 0000000..0976bff --- /dev/null +++ b/CONTENT/BT/ANIMS/FIRWWLI.ANI @@ -0,0 +1,130 @@ +[LAB_ONLY] + +[HEADER] +framecount=8 +framerate=30 +skeletonfile=fir.skl +jointcount=8 + +[Time] +frame1=0 +frame2=0.0333333 +frame5=0.133333 +frame7=0.2 +frame9=0.266667 +frame11=0.333333 +frame13=0.4 +frame15=0.466667 + +[JointIndices] +jointlocal=0 +jointshakey=3 +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 + +[JointType] +jointlocal=balltranslate +jointshakey=ball +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.549325 0.000000 0.000000 +jointlknee=-0.265173 0.000000 0.000000 +jointlankle=0.445083 0.000000 0.000000 +jointrthigh=0.763780 0.000000 0.000000 +jointrknee=-0.532840 0.000000 0.000000 +jointrankle=0.108070 0.000000 0.000000 +[frame2] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.509598 0.000000 0.000000 +jointlknee=-0.462837 0.000000 0.000000 +jointlankle=0.351794 0.000000 0.000000 +jointrthigh=0.699462 0.000000 0.000000 +jointrknee=-0.552190 0.000000 0.000000 +jointrankle=0.107388 0.000000 0.000000 +[frame5] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.002580 0.000000 0.000000 +jointlknee=-1.424117 0.000000 0.000000 +jointlankle=-0.107811 0.000000 0.000000 +jointrthigh=0.506507 0.000000 0.000000 +jointrknee=-0.610240 0.000000 0.000000 +jointrankle=0.105341 0.000000 0.000000 +[frame7] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.240176 0.000000 0.000000 +jointlknee=-1.450762 0.000000 0.000000 +jointlankle=0.187989 0.000000 0.000000 +jointrthigh=0.355770 0.000000 0.000000 +jointrknee=-0.677128 0.000000 0.000000 +jointrankle=0.322240 0.000000 0.000000 +[frame9] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.482933 0.000000 0.000000 +jointlknee=-1.477407 0.000000 0.000000 +jointlankle=0.483790 0.000000 0.000000 +jointrthigh=0.111719 0.000000 0.000000 +jointrknee=-0.554507 0.000000 0.000000 +jointrankle=0.442827 0.000000 0.000000 +[frame11] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.631483 0.000000 0.000000 +jointlknee=-1.175896 0.000000 0.000000 +jointlankle=0.326040 0.000000 0.000000 +jointrthigh=-0.168993 0.000000 0.000000 +jointrknee=-0.362484 0.000000 0.000000 +jointrankle=0.532688 0.000000 0.000000 +[frame13] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.697632 0.000000 0.000000 +jointlknee=-0.854368 0.000000 0.000000 +jointlankle=0.217055 0.000000 0.000000 +jointrthigh=-0.283642 0.000000 0.000000 +jointrknee=-0.481220 0.000000 0.000000 +jointrankle=0.595780 0.000000 0.000000 +[frame15] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.763780 0.000000 0.000000 +jointlknee=-0.532840 0.000000 0.000000 +jointlankle=0.108070 0.000000 0.000000 +jointrthigh=-0.419352 0.000000 0.000000 +jointrknee=-0.531514 0.000000 0.000000 +jointrankle=0.553371 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.363000 0.000000 +frame2=0.000000 -5.363000 11.923126 +frame5=0.000000 -5.363000 11.923126 +frame7=0.000000 -5.363000 12.512771 +frame9=0.000000 -5.363000 12.512774 +frame11=0.000000 -5.363000 12.836402 +frame13=0.000000 -5.363000 12.991720 +frame15=0.000000 -5.363000 12.991735 + +[KeyJointPos] +frame1=0.000000 -0.600000 0.000000 +frame2=0.000000 -0.535078 0.000000 +frame5=0.000000 -0.340310 0.000000 +frame7=0.000000 -0.307655 0.000000 +frame9=0.000000 -0.275000 0.000000 +frame11=0.000000 -0.385000 0.000000 +frame13=0.000000 -0.493220 0.000000 +frame15=0.000000 -0.601440 0.000000 diff --git a/CONTENT/BT/ANIMS/FIRWWR.ANI b/CONTENT/BT/ANIMS/FIRWWR.ANI new file mode 100644 index 0000000..2aaefd9 --- /dev/null +++ b/CONTENT/BT/ANIMS/FIRWWR.ANI @@ -0,0 +1,120 @@ +[LAB_ONLY] + +[HEADER] +framecount=8 +framerate=30 +skeletonfile=fir.skl +jointcount=7 + +[Time] +frame1=0 +frame2=0.0333333 +frame5=0.133333 +frame7=0.2 +frame9=0.266667 +frame11=0.333333 +frame13=0.4 +frame15=0.466667 + +[JointIndices] +jointlocal=0 +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 + +[JointType] +jointlocal=balltranslate +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.763780 0.000000 0.000000 +jointlknee=-0.532840 0.000000 0.000000 +jointlankle=0.108070 0.000000 0.000000 +jointrthigh=-0.549325 0.000000 0.000000 +jointrknee=-0.265173 0.000000 0.000000 +jointrankle=0.445083 0.000000 0.000000 +[frame2] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.699544 0.000000 0.000000 +jointlknee=-0.551796 0.000000 0.000000 +jointlankle=0.106503 0.000000 0.000000 +jointrthigh=-0.398043 0.000000 0.000000 +jointrknee=-0.639230 0.000000 0.000000 +jointrankle=0.423710 0.000000 0.000000 +[frame5] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.506833 0.000000 0.000000 +jointlknee=-0.608663 0.000000 0.000000 +jointlankle=0.101801 0.000000 0.000000 +jointrthigh=-0.002580 0.000000 0.000000 +jointrknee=-1.424117 0.000000 0.000000 +jointrankle=-0.107811 0.000000 0.000000 +[frame7] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.358157 0.000000 0.000000 +jointlknee=-0.679244 0.000000 0.000000 +jointlankle=0.321123 0.000000 0.000000 +jointrthigh=0.240176 0.000000 0.000000 +jointrknee=-1.450762 0.000000 0.000000 +jointrankle=0.187989 0.000000 0.000000 +[frame9] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.116554 0.000000 0.000000 +jointlknee=-0.561706 0.000000 0.000000 +jointlankle=0.445239 0.000000 0.000000 +jointrthigh=0.482933 0.000000 0.000000 +jointrknee=-1.477407 0.000000 0.000000 +jointrankle=0.483790 0.000000 0.000000 +[frame11] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.165418 0.000000 0.000000 +jointlknee=-0.367479 0.000000 0.000000 +jointlankle=0.533182 0.000000 0.000000 +jointrthigh=0.631485 0.000000 0.000000 +jointrknee=-1.175898 0.000000 0.000000 +jointrankle=0.326038 0.000000 0.000000 +[frame13] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.271589 0.000000 0.000000 +jointlknee=-0.501194 0.000000 0.000000 +jointlankle=0.596166 0.000000 0.000000 +jointrthigh=0.697633 0.000000 0.000000 +jointrknee=-0.854369 0.000000 0.000000 +jointrankle=0.217054 0.000000 0.000000 +[frame15] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.407021 0.000000 0.000000 +jointlknee=-0.546009 0.000000 0.000000 +jointlankle=0.558940 0.000000 0.000000 +jointrthigh=0.763780 0.000000 0.000000 +jointrknee=-0.532840 0.000000 0.000000 +jointrankle=0.108070 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.363000 0.000000 +frame2=0.000000 -5.363000 11.923126 +frame5=0.000000 -5.363000 11.923126 +frame7=0.000000 -5.363000 12.512771 +frame9=0.000000 -5.363000 12.512774 +frame11=0.000000 -5.363000 12.836402 +frame13=0.000000 -5.363000 12.991720 +frame15=0.000000 -5.363000 12.991735 + +[KeyJointPos] +frame1=0.000000 -0.600000 0.000000 +frame2=0.000000 -0.535078 0.000000 +frame5=0.000000 -0.340310 0.000000 +frame7=0.000000 -0.307655 0.000000 +frame9=0.000000 -0.275000 0.000000 +frame11=0.000000 -0.385000 0.000000 +frame13=0.000000 -0.493220 0.000000 +frame15=0.000000 -0.601440 0.000000 diff --git a/CONTENT/BT/ANIMS/FIRWWRI.ANI b/CONTENT/BT/ANIMS/FIRWWRI.ANI new file mode 100644 index 0000000..988b2dd --- /dev/null +++ b/CONTENT/BT/ANIMS/FIRWWRI.ANI @@ -0,0 +1,130 @@ +[LAB_ONLY] + +[HEADER] +framecount=8 +framerate=30 +skeletonfile=fir.skl +jointcount=8 + +[Time] +frame1=0 +frame2=0.0333333 +frame5=0.133333 +frame7=0.2 +frame9=0.266667 +frame11=0.333333 +frame13=0.4 +frame15=0.466667 + +[JointIndices] +jointlocal=0 +jointshakey=3 +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 + +[JointType] +jointlocal=balltranslate +jointshakey=ball +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.763780 0.000000 0.000000 +jointlknee=-0.532840 0.000000 0.000000 +jointlankle=0.108070 0.000000 0.000000 +jointrthigh=-0.549325 0.000000 0.000000 +jointrknee=-0.265173 0.000000 0.000000 +jointrankle=0.445083 0.000000 0.000000 +[frame2] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.699544 0.000000 0.000000 +jointlknee=-0.551796 0.000000 0.000000 +jointlankle=0.106503 0.000000 0.000000 +jointrthigh=-0.398043 0.000000 0.000000 +jointrknee=-0.639230 0.000000 0.000000 +jointrankle=0.423710 0.000000 0.000000 +[frame5] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.506833 0.000000 0.000000 +jointlknee=-0.608663 0.000000 0.000000 +jointlankle=0.101801 0.000000 0.000000 +jointrthigh=-0.002580 0.000000 0.000000 +jointrknee=-1.424117 0.000000 0.000000 +jointrankle=-0.107811 0.000000 0.000000 +[frame7] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.358157 0.000000 0.000000 +jointlknee=-0.679244 0.000000 0.000000 +jointlankle=0.321123 0.000000 0.000000 +jointrthigh=0.240176 0.000000 0.000000 +jointrknee=-1.450762 0.000000 0.000000 +jointrankle=0.187989 0.000000 0.000000 +[frame9] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.116554 0.000000 0.000000 +jointlknee=-0.561706 0.000000 0.000000 +jointlankle=0.445239 0.000000 0.000000 +jointrthigh=0.482933 0.000000 0.000000 +jointrknee=-1.477407 0.000000 0.000000 +jointrankle=0.483790 0.000000 0.000000 +[frame11] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.165418 0.000000 0.000000 +jointlknee=-0.367479 0.000000 0.000000 +jointlankle=0.533182 0.000000 0.000000 +jointrthigh=0.631485 0.000000 0.000000 +jointrknee=-1.175898 0.000000 0.000000 +jointrankle=0.326038 0.000000 0.000000 +[frame13] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.271589 0.000000 0.000000 +jointlknee=-0.501194 0.000000 0.000000 +jointlankle=0.596166 0.000000 0.000000 +jointrthigh=0.697633 0.000000 0.000000 +jointrknee=-0.854369 0.000000 0.000000 +jointrankle=0.217054 0.000000 0.000000 +[frame15] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.407021 0.000000 0.000000 +jointlknee=-0.546009 0.000000 0.000000 +jointlankle=0.558940 0.000000 0.000000 +jointrthigh=0.763780 0.000000 0.000000 +jointrknee=-0.532840 0.000000 0.000000 +jointrankle=0.108070 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.363000 0.000000 +frame2=0.000000 -5.363000 11.923126 +frame5=0.000000 -5.363000 11.923126 +frame7=0.000000 -5.363000 12.512771 +frame9=0.000000 -5.363000 12.512774 +frame11=0.000000 -5.363000 12.836402 +frame13=0.000000 -5.363000 12.991720 +frame15=0.000000 -5.363000 12.991735 + +[KeyJointPos] +frame1=0.000000 -0.600000 0.000000 +frame2=0.000000 -0.535078 0.000000 +frame5=0.000000 -0.340310 0.000000 +frame7=0.000000 -0.307655 0.000000 +frame9=0.000000 -0.275000 0.000000 +frame11=0.000000 -0.385000 0.000000 +frame13=0.000000 -0.493220 0.000000 +frame15=0.000000 -0.601440 0.000000 diff --git a/CONTENT/BT/ANIMS/JAKBBL.ANI b/CONTENT/BT/ANIMS/JAKBBL.ANI new file mode 100644 index 0000000..fa8e860 --- /dev/null +++ b/CONTENT/BT/ANIMS/JAKBBL.ANI @@ -0,0 +1,120 @@ +[LAB_ONLY] + +[HEADER] +framecount=8 +framerate=30 +skeletonfile=jak.skl +jointcount=7 + +[Time] +frame1=0 +frame3=0.0666667 +frame6=0.166667 +frame7=0.2 +frame8=0.233333 +frame9=0.266667 +frame11=0.333333 +frame14=0.433333 + +[JointIndices] +jointlocal=0 +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=12 +jointrknee=13 +jointrankle=14 + +[JointType] +jointlocal=balltranslate +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.629025 0.000000 0.000000 +jointlknee=-0.231209 0.000000 0.000000 +jointlankle=-0.013522 0.000000 0.000000 +jointrthigh=-0.367786 0.000000 0.000000 +jointrknee=-0.334946 0.000000 0.000000 +jointrankle=0.489980 0.000000 0.000000 +[frame3] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.757106 0.000000 0.000000 +jointlknee=-0.690585 0.000000 0.000000 +jointlankle=0.165525 0.000000 0.000000 +jointrthigh=-0.227013 0.000000 0.000000 +jointrknee=-0.296935 0.000000 0.000000 +jointrankle=0.439566 0.000000 0.000000 +[frame6] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.562082 0.000000 0.000000 +jointlknee=-1.241212 0.000000 0.000000 +jointlankle=0.467319 0.000000 0.000000 +jointrthigh=-0.135002 0.000000 0.000000 +jointrknee=0.019886 0.000000 0.000000 +jointrankle=0.108357 0.000000 0.000000 +[frame7] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.369202 0.000000 0.000000 +jointlknee=-1.240706 0.000000 0.000000 +jointlankle=0.455109 0.000000 0.000000 +jointrthigh=0.154328 0.000000 0.000000 +jointrknee=-0.362212 0.000000 0.000000 +jointrankle=0.208307 0.000000 0.000000 +[frame8] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.176323 0.000000 0.000000 +jointlknee=-1.240200 0.000000 0.000000 +jointlankle=0.442899 0.000000 0.000000 +jointrthigh=0.286635 0.000000 0.000000 +jointrknee=-0.442244 0.000000 0.000000 +jointrankle=0.155357 0.000000 0.000000 +[frame9] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.016557 0.000000 0.000000 +jointlknee=-1.239693 0.000000 0.000000 +jointlankle=0.430690 0.000000 0.000000 +jointrthigh=0.379016 0.000000 0.000000 +jointrknee=-0.448400 0.000000 0.000000 +jointrankle=0.069134 0.000000 0.000000 +[frame11] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.203491 0.000000 0.000000 +jointlknee=-0.864435 0.000000 0.000000 +jointlankle=0.442799 0.000000 0.000000 +jointrthigh=0.579179 0.000000 0.000000 +jointrknee=-0.516413 0.000000 0.000000 +jointrankle=0.064927 0.000000 0.000000 +[frame14] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.459470 0.000000 0.000000 +jointlknee=-0.186817 0.000000 0.000000 +jointlankle=0.455412 0.000000 0.000000 +jointrthigh=0.629025 0.000000 0.000000 +jointrknee=-0.231209 0.000000 0.000000 +jointrankle=-0.013522 0.000000 0.000000 + +[RootTranslation] +frame1=0.022705 -5.367000 0.000000 +frame3=0.022705 -5.367001 -13.450970 +frame6=0.022705 -5.367000 -13.450985 +frame7=0.022705 -5.367000 -12.993408 +frame8=0.022705 -5.367000 -12.993394 +frame9=0.022705 -5.367000 -12.993388 +frame11=0.022705 -5.367000 -13.931852 +frame14=0.022705 -5.367000 -13.147999 + +[KeyJointPos] +frame1=0.000000 -0.375690 0.000000 +frame3=0.000000 -0.244185 0.000000 +frame6=0.000000 -0.046929 0.000000 +frame7=0.000000 -0.086044 0.000000 +frame8=0.000000 -0.125160 0.000000 +frame9=0.000000 -0.164275 0.000000 +frame11=0.000000 -0.244136 0.000000 +frame14=0.000000 -0.375690 0.000000 diff --git a/CONTENT/BT/ANIMS/JAKBBLI.ANI b/CONTENT/BT/ANIMS/JAKBBLI.ANI new file mode 100644 index 0000000..6530337 --- /dev/null +++ b/CONTENT/BT/ANIMS/JAKBBLI.ANI @@ -0,0 +1,130 @@ +[LAB_ONLY] + +[HEADER] +framecount=8 +framerate=30 +skeletonfile=jak.skl +jointcount=8 + +[Time] +frame1=0 +frame3=0.0666667 +frame6=0.166667 +frame7=0.2 +frame8=0.233333 +frame9=0.266667 +frame11=0.333333 +frame14=0.433333 + +[JointIndices] +jointlocal=0 +jointshakey=3 +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=12 +jointrknee=13 +jointrankle=14 + +[JointType] +jointlocal=balltranslate +jointshakey=ball +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.629025 0.000000 0.000000 +jointlknee=-0.231209 0.000000 0.000000 +jointlankle=-0.013522 0.000000 0.000000 +jointrthigh=-0.367786 0.000000 0.000000 +jointrknee=-0.334946 0.000000 0.000000 +jointrankle=0.489980 0.000000 0.000000 +[frame3] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.757106 0.000000 0.000000 +jointlknee=-0.690585 0.000000 0.000000 +jointlankle=0.165525 0.000000 0.000000 +jointrthigh=-0.227013 0.000000 0.000000 +jointrknee=-0.296935 0.000000 0.000000 +jointrankle=0.439566 0.000000 0.000000 +[frame6] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.562082 0.000000 0.000000 +jointlknee=-1.241212 0.000000 0.000000 +jointlankle=0.467319 0.000000 0.000000 +jointrthigh=-0.135002 0.000000 0.000000 +jointrknee=0.019886 0.000000 0.000000 +jointrankle=0.108357 0.000000 0.000000 +[frame7] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.369202 0.000000 0.000000 +jointlknee=-1.240706 0.000000 0.000000 +jointlankle=0.455109 0.000000 0.000000 +jointrthigh=0.154328 0.000000 0.000000 +jointrknee=-0.362212 0.000000 0.000000 +jointrankle=0.208307 0.000000 0.000000 +[frame8] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.176323 0.000000 0.000000 +jointlknee=-1.240200 0.000000 0.000000 +jointlankle=0.442899 0.000000 0.000000 +jointrthigh=0.286635 0.000000 0.000000 +jointrknee=-0.442244 0.000000 0.000000 +jointrankle=0.155357 0.000000 0.000000 +[frame9] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.016557 0.000000 0.000000 +jointlknee=-1.239693 0.000000 0.000000 +jointlankle=0.430690 0.000000 0.000000 +jointrthigh=0.379016 0.000000 0.000000 +jointrknee=-0.448400 0.000000 0.000000 +jointrankle=0.069134 0.000000 0.000000 +[frame11] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.203491 0.000000 0.000000 +jointlknee=-0.864435 0.000000 0.000000 +jointlankle=0.442799 0.000000 0.000000 +jointrthigh=0.579179 0.000000 0.000000 +jointrknee=-0.516413 0.000000 0.000000 +jointrankle=0.064927 0.000000 0.000000 +[frame14] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.459470 0.000000 0.000000 +jointlknee=-0.186817 0.000000 0.000000 +jointlankle=0.455412 0.000000 0.000000 +jointrthigh=0.629025 0.000000 0.000000 +jointrknee=-0.231209 0.000000 0.000000 +jointrankle=-0.013522 0.000000 0.000000 + +[RootTranslation] +frame1=0.022705 -5.367000 0.000000 +frame3=0.022705 -5.367001 -13.450970 +frame6=0.022705 -5.367000 -13.450985 +frame7=0.022705 -5.367000 -12.993408 +frame8=0.022705 -5.367000 -12.993394 +frame9=0.022705 -5.367000 -12.993388 +frame11=0.022705 -5.367000 -13.931852 +frame14=0.022705 -5.367000 -13.147999 + +[KeyJointPos] +frame1=0.000000 -0.375690 0.000000 +frame3=0.000000 -0.244185 0.000000 +frame6=0.000000 -0.046929 0.000000 +frame7=0.000000 -0.086044 0.000000 +frame8=0.000000 -0.125160 0.000000 +frame9=0.000000 -0.164275 0.000000 +frame11=0.000000 -0.244136 0.000000 +frame14=0.000000 -0.375690 0.000000 diff --git a/CONTENT/BT/ANIMS/JAKBBR.ANI b/CONTENT/BT/ANIMS/JAKBBR.ANI new file mode 100644 index 0000000..3b7a229 --- /dev/null +++ b/CONTENT/BT/ANIMS/JAKBBR.ANI @@ -0,0 +1,120 @@ +[LAB_ONLY] + +[HEADER] +framecount=8 +framerate=30 +skeletonfile=jak.skl +jointcount=7 + +[Time] +frame1=0 +frame3=0.0666667 +frame6=0.166667 +frame7=0.2 +frame8=0.233333 +frame9=0.266667 +frame11=0.333333 +frame14=0.433333 + +[JointIndices] +jointlocal=0 +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=12 +jointrknee=13 +jointrankle=14 + +[JointType] +jointlocal=balltranslate +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.367786 0.000000 0.000000 +jointlknee=-0.334946 0.000000 0.000000 +jointlankle=0.489980 0.000000 0.000000 +jointrthigh=0.629025 0.000000 0.000000 +jointrknee=-0.231209 0.000000 0.000000 +jointrankle=-0.013522 0.000000 0.000000 +[frame3] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.227502 0.000000 0.000000 +jointlknee=-0.312922 0.000000 0.000000 +jointlankle=0.457945 0.000000 0.000000 +jointrthigh=0.757106 0.000000 0.000000 +jointrknee=-0.690585 0.000000 0.000000 +jointrankle=0.165525 0.000000 0.000000 +[frame6] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.005126 0.000000 0.000000 +jointlknee=-0.242524 0.000000 0.000000 +jointlankle=0.222425 0.000000 0.000000 +jointrthigh=0.562082 0.000000 0.000000 +jointrknee=-1.241212 0.000000 0.000000 +jointrankle=0.467319 0.000000 0.000000 +[frame7] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.146130 0.000000 0.000000 +jointlknee=-0.350370 0.000000 0.000000 +jointlankle=0.204563 0.000000 0.000000 +jointrthigh=0.369202 0.000000 0.000000 +jointrknee=-1.240706 0.000000 0.000000 +jointrankle=0.455109 0.000000 0.000000 +[frame8] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.279518 0.000000 0.000000 +jointlknee=-0.435255 0.000000 0.000000 +jointlankle=0.156078 0.000000 0.000000 +jointrthigh=0.176323 0.000000 0.000000 +jointrknee=-1.240200 0.000000 0.000000 +jointrankle=0.442899 0.000000 0.000000 +[frame9] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.371341 0.000000 0.000000 +jointlknee=-0.440573 0.000000 0.000000 +jointlankle=0.068606 0.000000 0.000000 +jointrthigh=-0.016557 0.000000 0.000000 +jointrknee=-1.239693 0.000000 0.000000 +jointrankle=0.430690 0.000000 0.000000 +[frame11] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.579179 0.000000 0.000000 +jointlknee=-0.516413 0.000000 0.000000 +jointlankle=0.064927 0.000000 0.000000 +jointrthigh=-0.203491 0.000000 0.000000 +jointrknee=-0.864435 0.000000 0.000000 +jointrankle=0.442799 0.000000 0.000000 +[frame14] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.629025 0.000000 0.000000 +jointlknee=-0.231209 0.000000 0.000000 +jointlankle=-0.013522 0.000000 0.000000 +jointrthigh=-0.367786 0.000000 0.000000 +jointrknee=-0.334946 0.000000 0.000000 +jointrankle=0.489980 0.000000 0.000000 + +[RootTranslation] +frame1=0.022705 -5.367000 0.000000 +frame3=0.022823 -5.367001 -13.544396 +frame6=0.023000 -5.367000 -13.544397 +frame7=0.022902 -5.367000 -12.874003 +frame8=0.022803 -5.367000 -12.874003 +frame9=0.022705 -5.367000 -12.873998 +frame11=0.022705 -5.367001 -13.479711 +frame14=0.022705 -5.367000 -13.479730 + +[KeyJointPos] +frame1=0.000000 -0.375690 0.000000 +frame3=0.000000 -0.244185 0.000000 +frame6=0.000000 -0.046929 0.000000 +frame7=0.000000 -0.086044 0.000000 +frame8=0.000000 -0.125160 0.000000 +frame9=0.000000 -0.164275 0.000000 +frame11=0.000000 -0.248840 0.000000 +frame14=0.000000 -0.375690 0.000000 diff --git a/CONTENT/BT/ANIMS/JAKBBRI.ANI b/CONTENT/BT/ANIMS/JAKBBRI.ANI new file mode 100644 index 0000000..6b6b409 --- /dev/null +++ b/CONTENT/BT/ANIMS/JAKBBRI.ANI @@ -0,0 +1,131 @@ +[LAB_ONLY] + +[HEADER] +framecount=8 +framerate=30 +skeletonfile=jak.skl +jointcount=8 + +[Time] +frame1=0 +frame3=0.0666667 +frame6=0.166667 +frame7=0.2 +frame8=0.233333 +frame9=0.266667 +frame11=0.333333 +frame14=0.433333 + +[JointIndices] +jointlocal=0 +jointshakey=3 +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=12 +jointrknee=13 +jointrankle=14 + + +[JointType] +jointlocal=balltranslate +jointshakey=ball +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.367786 0.000000 0.000000 +jointlknee=-0.334946 0.000000 0.000000 +jointlankle=0.489980 0.000000 0.000000 +jointrthigh=0.629025 0.000000 0.000000 +jointrknee=-0.231209 0.000000 0.000000 +jointrankle=-0.013522 0.000000 0.000000 +[frame3] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.227502 0.000000 0.000000 +jointlknee=-0.312922 0.000000 0.000000 +jointlankle=0.457945 0.000000 0.000000 +jointrthigh=0.757106 0.000000 0.000000 +jointrknee=-0.690585 0.000000 0.000000 +jointrankle=0.165525 0.000000 0.000000 +[frame6] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.005126 0.000000 0.000000 +jointlknee=-0.242524 0.000000 0.000000 +jointlankle=0.222425 0.000000 0.000000 +jointrthigh=0.562082 0.000000 0.000000 +jointrknee=-1.241212 0.000000 0.000000 +jointrankle=0.467319 0.000000 0.000000 +[frame7] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.146130 0.000000 0.000000 +jointlknee=-0.350370 0.000000 0.000000 +jointlankle=0.204563 0.000000 0.000000 +jointrthigh=0.369202 0.000000 0.000000 +jointrknee=-1.240706 0.000000 0.000000 +jointrankle=0.455109 0.000000 0.000000 +[frame8] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.279518 0.000000 0.000000 +jointlknee=-0.435255 0.000000 0.000000 +jointlankle=0.156078 0.000000 0.000000 +jointrthigh=0.176323 0.000000 0.000000 +jointrknee=-1.240200 0.000000 0.000000 +jointrankle=0.442899 0.000000 0.000000 +[frame9] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.371341 0.000000 0.000000 +jointlknee=-0.440573 0.000000 0.000000 +jointlankle=0.068606 0.000000 0.000000 +jointrthigh=-0.016557 0.000000 0.000000 +jointrknee=-1.239693 0.000000 0.000000 +jointrankle=0.430690 0.000000 0.000000 +[frame11] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.579179 0.000000 0.000000 +jointlknee=-0.516413 0.000000 0.000000 +jointlankle=0.064927 0.000000 0.000000 +jointrthigh=-0.203491 0.000000 0.000000 +jointrknee=-0.864435 0.000000 0.000000 +jointrankle=0.442799 0.000000 0.000000 +[frame14] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.629025 0.000000 0.000000 +jointlknee=-0.231209 0.000000 0.000000 +jointlankle=-0.013522 0.000000 0.000000 +jointrthigh=-0.367786 0.000000 0.000000 +jointrknee=-0.334946 0.000000 0.000000 +jointrankle=0.489980 0.000000 0.000000 + +[RootTranslation] +frame1=0.022705 -5.367000 0.000000 +frame3=0.022823 -5.367001 -13.544396 +frame6=0.023000 -5.367000 -13.544397 +frame7=0.022902 -5.367000 -12.874003 +frame8=0.022803 -5.367000 -12.874003 +frame9=0.022705 -5.367000 -12.873998 +frame11=0.022705 -5.367001 -13.479711 +frame14=0.022705 -5.367000 -13.479730 + +[KeyJointPos] +frame1=0.000000 -0.375690 0.000000 +frame3=0.000000 -0.244185 0.000000 +frame6=0.000000 -0.046929 0.000000 +frame7=0.000000 -0.086044 0.000000 +frame8=0.000000 -0.125160 0.000000 +frame9=0.000000 -0.164275 0.000000 +frame11=0.000000 -0.248840 0.000000 +frame14=0.000000 -0.375690 0.000000 diff --git a/CONTENT/BT/ANIMS/JAKBMP.ANI b/CONTENT/BT/ANIMS/JAKBMP.ANI new file mode 100644 index 0000000..9984ba8 --- /dev/null +++ b/CONTENT/BT/ANIMS/JAKBMP.ANI @@ -0,0 +1,70 @@ +[LAB_ONLY] + +[HEADER] +framecount=3 +framerate=30 +skeletonfile=jak.skl +jointcount=8 + +[Time] +frame1=0 +frame8=0.233333 +frame15=0.466667 + +[JointIndices] +jointlocal=0 +jointhip=1 +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=12 +jointrknee=13 +jointrankle=14 + +[JointType] +jointlocal=balltranslate +jointhip=hingex +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointhip=0.000000 0.000000 0.000000 +jointlthigh=-0.383931 0.000000 0.000000 +jointlknee=-1.164100 0.000000 0.000000 +jointlankle=-0.369045 0.000000 0.000000 +jointrthigh=0.965050 0.000000 0.000000 +jointrknee=-0.162689 0.000000 0.000000 +jointrankle=-0.250045 0.000000 0.000000 +[frame8] +jointlocal=0.000000 0.000000 0.000000 +jointhip=0.436332 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +[frame15] +jointlocal=0.000000 0.000000 0.000000 +jointhip=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.022705 -5.367000 0.000000 +frame8=0.022705 -5.367000 0.000000 +frame15=0.022705 -5.367000 0.000000 + +[KeyJointPos] +frame1=0.000000 0.070393 0.000000 +frame8=0.000000 0.000000 0.000000 +frame15=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/JAKBMPI.ANI b/CONTENT/BT/ANIMS/JAKBMPI.ANI new file mode 100644 index 0000000..962b708 --- /dev/null +++ b/CONTENT/BT/ANIMS/JAKBMPI.ANI @@ -0,0 +1,76 @@ +[LAB_ONLY] + +[HEADER] +framecount=3 +framerate=30 +skeletonfile=jak.skl +jointcount=9 + +[Time] +frame1=0 +frame8=0.233333 +frame15=0.466667 + +[JointIndices] +jointlocal=0 +jointhip=1 +jointshakey=3 +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=12 +jointrknee=13 +jointrankle=14 + + +[JointType] +jointlocal=balltranslate +jointhip=hingex +jointshakey=ball +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointhip=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.383931 0.000000 0.000000 +jointlknee=-1.164100 0.000000 0.000000 +jointlankle=-0.369045 0.000000 0.000000 +jointrthigh=0.965050 0.000000 0.000000 +jointrknee=-0.162689 0.000000 0.000000 +jointrankle=-0.250045 0.000000 0.000000 +[frame8] +jointlocal=0.000000 0.000000 0.000000 +jointhip=0.436332 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +[frame15] +jointlocal=0.000000 0.000000 0.000000 +jointhip=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.022705 -5.367000 0.000000 +frame8=0.022705 -5.367000 0.000000 +frame15=0.022705 -5.367000 0.000000 + +[KeyJointPos] +frame1=0.000000 0.070393 0.000000 +frame8=0.000000 0.000000 0.000000 +frame15=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/JAKBSL.ANI b/CONTENT/BT/ANIMS/JAKBSL.ANI new file mode 100644 index 0000000..5f8da94 --- /dev/null +++ b/CONTENT/BT/ANIMS/JAKBSL.ANI @@ -0,0 +1,76 @@ +[LAB_ONLY] + +[HEADER] +framecount=4 +framerate=30 +skeletonfile=jak.skl +jointcount=7 + +[Time] +frame1=0 +frame14=0.433333 +frame18=0.566667 +frame25=0.8 + +[JointIndices] +jointlocal=0 +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=12 +jointrknee=13 +jointrankle=14 + +[JointType] +jointlocal=balltranslate +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.629025 0.000000 0.000000 +jointlknee=-0.231209 0.000000 0.000000 +jointlankle=-0.013522 0.000000 0.000000 +jointrthigh=-0.459470 0.000000 0.000000 +jointrknee=-0.186817 0.000000 0.000000 +jointrankle=0.455412 0.000000 0.000000 +[frame14] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.380822 0.000000 0.000000 +jointlknee=-0.462648 0.000000 0.000000 +jointlankle=0.125419 0.000000 0.000000 +jointrthigh=-0.218775 0.000000 0.000000 +jointrknee=-0.014805 0.000000 0.000000 +jointrankle=0.218170 0.000000 0.000000 +[frame18] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.257063 0.000000 0.000000 +jointlknee=-0.371272 0.000000 0.000000 +jointlankle=0.141490 0.000000 0.000000 +jointrthigh=-0.135466 0.000000 0.000000 +jointrknee=-0.010869 0.000000 0.000000 +jointrankle=0.131098 0.000000 0.000000 +[frame25] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.022705 -5.367000 0.000000 +frame14=0.022705 -5.367000 -3.897208 +frame18=0.022692 -5.367000 -3.248550 +frame25=0.022679 -5.367080 -3.049657 + +[KeyJointPos] +frame1=0.000000 -0.375690 0.000000 +frame14=0.000000 -0.093863 0.000000 +frame18=0.000000 -0.023465 0.000000 +frame25=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/JAKBSLI.ANI b/CONTENT/BT/ANIMS/JAKBSLI.ANI new file mode 100644 index 0000000..d73f617 --- /dev/null +++ b/CONTENT/BT/ANIMS/JAKBSLI.ANI @@ -0,0 +1,83 @@ +[LAB_ONLY] + +[HEADER] +framecount=4 +framerate=30 +skeletonfile=jak.skl +jointcount=8 + +[Time] +frame1=0 +frame14=0.433333 +frame18=0.566667 +frame25=0.8 + +[JointIndices] +jointlocal=0 +jointshakey=3 +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=12 +jointrknee=13 +jointrankle=14 + + +[JointType] +jointlocal=balltranslate +jointshakey=ball +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.629025 0.000000 0.000000 +jointlknee=-0.231209 0.000000 0.000000 +jointlankle=-0.013522 0.000000 0.000000 +jointrthigh=-0.459470 0.000000 0.000000 +jointrknee=-0.186817 0.000000 0.000000 +jointrankle=0.455412 0.000000 0.000000 +[frame14] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.380822 0.000000 0.000000 +jointlknee=-0.462648 0.000000 0.000000 +jointlankle=0.125419 0.000000 0.000000 +jointrthigh=-0.218775 0.000000 0.000000 +jointrknee=-0.014805 0.000000 0.000000 +jointrankle=0.218170 0.000000 0.000000 +[frame18] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.257063 0.000000 0.000000 +jointlknee=-0.371272 0.000000 0.000000 +jointlankle=0.141490 0.000000 0.000000 +jointrthigh=-0.135466 0.000000 0.000000 +jointrknee=-0.010869 0.000000 0.000000 +jointrankle=0.131098 0.000000 0.000000 +[frame25] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.022705 -5.367000 0.000000 +frame14=0.022705 -5.367000 -3.897208 +frame18=0.022692 -5.367000 -3.248550 +frame25=0.022679 -5.367080 -3.049657 + +[KeyJointPos] +frame1=0.000000 -0.375690 0.000000 +frame14=0.000000 -0.093863 0.000000 +frame18=0.000000 -0.023465 0.000000 +frame25=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/JAKBSR.ANI b/CONTENT/BT/ANIMS/JAKBSR.ANI new file mode 100644 index 0000000..5a9d4cb --- /dev/null +++ b/CONTENT/BT/ANIMS/JAKBSR.ANI @@ -0,0 +1,76 @@ +[LAB_ONLY] + +[HEADER] +framecount=4 +framerate=30 +skeletonfile=jak.skl +jointcount=7 + +[Time] +frame1=0 +frame14=0.433333 +frame18=0.566667 +frame25=0.8 + +[JointIndices] +jointlocal=0 +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=12 +jointrknee=13 +jointrankle=14 + +[JointType] +jointlocal=balltranslate +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.459470 0.000000 0.000000 +jointlknee=-0.186817 0.000000 0.000000 +jointlankle=0.455412 0.000000 0.000000 +jointrthigh=0.629025 0.000000 0.000000 +jointrknee=-0.231209 0.000000 0.000000 +jointrankle=-0.013522 0.000000 0.000000 +[frame14] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.218775 0.000000 0.000000 +jointlknee=-0.014805 0.000000 0.000000 +jointlankle=0.218170 0.000000 0.000000 +jointrthigh=0.380822 0.000000 0.000000 +jointrknee=-0.462648 0.000000 0.000000 +jointrankle=0.125419 0.000000 0.000000 +[frame18] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.135466 0.000000 0.000000 +jointlknee=-0.010869 0.000000 0.000000 +jointlankle=0.131098 0.000000 0.000000 +jointrthigh=0.257063 0.000000 0.000000 +jointrknee=-0.371272 0.000000 0.000000 +jointrankle=0.141490 0.000000 0.000000 +[frame25] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.022705 -5.367000 0.000000 +frame14=0.022705 -5.367000 -3.897208 +frame18=0.022692 -5.367000 -3.248550 +frame25=0.022679 -5.367080 -3.049657 + +[KeyJointPos] +frame1=0.000000 -0.375690 0.000000 +frame14=0.000000 -0.093863 0.000000 +frame18=0.000000 -0.023465 0.000000 +frame25=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/JAKBSRI.ANI b/CONTENT/BT/ANIMS/JAKBSRI.ANI new file mode 100644 index 0000000..bd65d00 --- /dev/null +++ b/CONTENT/BT/ANIMS/JAKBSRI.ANI @@ -0,0 +1,83 @@ +[LAB_ONLY] + +[HEADER] +framecount=4 +framerate=30 +skeletonfile=jak.skl +jointcount=8 + +[Time] +frame1=0 +frame14=0.433333 +frame18=0.566667 +frame25=0.8 + +[JointIndices] +jointlocal=0 +jointshakey=3 +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=12 +jointrknee=13 +jointrankle=14 + + +[JointType] +jointlocal=balltranslate +jointshakey=ball +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.459470 0.000000 0.000000 +jointlknee=-0.186817 0.000000 0.000000 +jointlankle=0.455412 0.000000 0.000000 +jointrthigh=0.629025 0.000000 0.000000 +jointrknee=-0.231209 0.000000 0.000000 +jointrankle=-0.013522 0.000000 0.000000 +[frame14] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.218775 0.000000 0.000000 +jointlknee=-0.014805 0.000000 0.000000 +jointlankle=0.218170 0.000000 0.000000 +jointrthigh=0.380822 0.000000 0.000000 +jointrknee=-0.462648 0.000000 0.000000 +jointrankle=0.125419 0.000000 0.000000 +[frame18] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.135466 0.000000 0.000000 +jointlknee=-0.010869 0.000000 0.000000 +jointlankle=0.131098 0.000000 0.000000 +jointrthigh=0.257063 0.000000 0.000000 +jointrknee=-0.371272 0.000000 0.000000 +jointrankle=0.141490 0.000000 0.000000 +[frame25] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.022705 -5.367000 0.000000 +frame14=0.022705 -5.367000 -3.897208 +frame18=0.022692 -5.367000 -3.248550 +frame25=0.022679 -5.367080 -3.049657 + +[KeyJointPos] +frame1=0.000000 -0.375690 0.000000 +frame14=0.000000 -0.093863 0.000000 +frame18=0.000000 -0.023465 0.000000 +frame25=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/JAKFB.ANI b/CONTENT/BT/ANIMS/JAKFB.ANI new file mode 100644 index 0000000..65bae38 --- /dev/null +++ b/CONTENT/BT/ANIMS/JAKFB.ANI @@ -0,0 +1,760 @@ +[LAB_ONLY] + +[HEADER] +framecount=48 +framerate=30 +skeletonfile=lok.skl +jointcount=11 + +[Time] +frame1=0 +frame3=0.0666667 +frame6=0.166667 +frame8=0.233333 +frame9=0.266667 +frame10=0.3 +frame12=0.366667 +frame14=0.433333 +frame15=0.466667 +frame16=0.5 +frame17=0.533333 +frame18=0.566667 +frame19=0.6 +frame25=0.8 +frame29=0.933333 +frame33=1.06667 +frame37=1.2 +frame40=1.3 +frame41=1.33333 +frame45=1.46667 +frame48=1.56667 +frame51=1.66667 +frame52=1.7 +frame54=1.76667 +frame55=1.8 +frame56=1.83333 +frame58=1.9 +frame60=1.96667 +frame61=2 +frame63=2.06667 +frame64=2.1 +frame65=2.13333 +frame67=2.2 +frame69=2.26667 +frame70=2.3 +frame71=2.33333 +frame72=2.36667 +frame74=2.43333 +frame75=2.46667 +frame76=2.5 +frame77=2.53333 +frame79=2.6 +frame80=2.63333 +frame81=2.66667 +frame82=2.7 +frame84=2.76667 +frame85=2.8 +frame87=2.86667 + +[JointIndices] +jointhip=1 +jointtorso=2 +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 +jointlshoulder=6 +jointrshoulder=4 + +[JointType] +jointhip=hingex +jointtorso=hingey +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointlshoulder=hingex +jointrshoulder=hingex + +[frame1] +jointhip=0.000000 0.000000 0.000000 +jointtorso=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointlshoulder=0.000000 0.000000 0.000000 +jointrshoulder=0.000000 0.000000 0.000000 +[frame3] +jointhip=0.093595 0.000000 0.000000 +jointtorso=0.000000 -0.131980 0.000000 +jointlthigh=0.026127 0.000000 0.000000 +jointlknee=-0.017682 0.000000 0.000000 +jointlankle=-0.043024 0.000000 0.000000 +jointrthigh=0.126145 0.000000 0.000000 +jointrknee=-0.157890 0.000000 0.000000 +jointrankle=-0.151411 0.000000 0.000000 +jointlocal=0.037414 -0.013833 0.033827 +jointlshoulder=0.113418 0.000000 0.000000 +jointrshoulder=-0.172400 0.000000 0.000000 +[frame6] +jointhip=0.233988 0.000000 0.000000 +jointtorso=0.000000 -0.329951 0.000000 +jointlthigh=0.065318 0.000000 0.000000 +jointlknee=-0.044206 0.000000 0.000000 +jointlankle=-0.107560 0.000000 0.000000 +jointrthigh=0.291737 0.000000 0.000000 +jointrknee=-0.464598 0.000000 0.000000 +jointrankle=-0.103670 0.000000 0.000000 +jointlocal=0.093536 -0.034582 0.084567 +jointlshoulder=0.283545 0.000000 0.000000 +jointrshoulder=-0.431000 0.000000 0.000000 +[frame8] +jointhip=0.286726 0.000000 0.000000 +jointtorso=0.000000 -0.373565 0.000000 +jointlthigh=0.087503 0.000000 0.000000 +jointlknee=-0.050415 0.000000 0.000000 +jointlankle=-0.099972 0.000000 0.000000 +jointrthigh=0.369704 0.000000 0.000000 +jointrknee=-0.584972 0.000000 0.000000 +jointrankle=-0.055734 0.000000 0.000000 +jointlocal=0.126029 -0.041884 0.109842 +jointlshoulder=0.396963 0.000000 0.000000 +jointrshoulder=-0.603400 0.000000 0.000000 +[frame9] +jointhip=0.313095 0.000000 0.000000 +jointtorso=0.000000 -0.395372 0.000000 +jointlthigh=0.098596 0.000000 0.000000 +jointlknee=-0.053519 0.000000 0.000000 +jointlankle=-0.096177 0.000000 0.000000 +jointrthigh=0.408687 0.000000 0.000000 +jointrknee=-0.645158 0.000000 0.000000 +jointrankle=-0.031766 0.000000 0.000000 +jointlocal=0.142275 -0.045535 0.122480 +jointlshoulder=0.453672 0.000000 0.000000 +jointrshoulder=-0.656179 0.000000 0.000000 +[frame10] +jointhip=0.339465 0.000000 0.000000 +jointtorso=0.000000 -0.417179 0.000000 +jointlthigh=0.109689 0.000000 0.000000 +jointlknee=-0.056623 0.000000 0.000000 +jointlankle=-0.092383 0.000000 0.000000 +jointrthigh=0.447670 0.000000 0.000000 +jointrknee=-0.705345 0.000000 0.000000 +jointrankle=-0.007798 0.000000 0.000000 +jointlocal=0.158521 -0.049186 0.135118 +jointlshoulder=0.510381 0.000000 0.000000 +jointrshoulder=-0.689185 0.000000 0.000000 +[frame12] +jointhip=0.392203 0.000000 0.000000 +jointtorso=0.000000 -0.460792 0.000000 +jointlthigh=0.131875 0.000000 0.000000 +jointlknee=-0.062832 0.000000 0.000000 +jointlankle=-0.084794 0.000000 0.000000 +jointrthigh=0.525636 0.000000 0.000000 +jointrknee=-0.825719 0.000000 0.000000 +jointrankle=0.040137 0.000000 0.000000 +jointlocal=0.191014 -0.056487 0.160394 +jointlshoulder=0.623799 0.000000 0.000000 +jointrshoulder=-0.742158 0.000000 0.000000 +[frame14] +jointhip=0.444942 0.000000 0.000000 +jointtorso=0.000000 -0.504406 0.000000 +jointlthigh=0.154061 0.000000 0.000000 +jointlknee=-0.069040 0.000000 0.000000 +jointlankle=-0.077206 0.000000 0.000000 +jointrthigh=0.603603 0.000000 0.000000 +jointrknee=-0.946092 0.000000 0.000000 +jointrankle=0.088073 0.000000 0.000000 +jointlocal=0.223506 -0.063789 0.185669 +jointlshoulder=0.737217 0.000000 0.000000 +jointrshoulder=-0.787988 0.000000 0.000000 +[frame15] +jointhip=0.471311 0.000000 0.000000 +jointtorso=0.000000 -0.526213 0.000000 +jointlthigh=0.168235 0.000000 0.000000 +jointlknee=-0.084153 0.000000 0.000000 +jointlankle=-0.078335 0.000000 0.000000 +jointrthigh=0.622811 0.000000 0.000000 +jointrknee=-0.922342 0.000000 0.000000 +jointrankle=0.078103 0.000000 0.000000 +jointlocal=0.239752 -0.067440 0.198307 +jointlshoulder=0.779783 0.000000 0.000000 +jointrshoulder=-0.814203 0.000000 0.000000 +[frame16] +jointhip=0.497680 0.000000 0.000000 +jointtorso=0.000000 -0.548020 0.000000 +jointlthigh=0.182408 0.000000 0.000000 +jointlknee=-0.099266 0.000000 0.000000 +jointlankle=-0.079465 0.000000 0.000000 +jointrthigh=0.642018 0.000000 0.000000 +jointrknee=-0.898591 0.000000 0.000000 +jointrankle=0.068133 0.000000 0.000000 +jointlocal=0.255999 -0.071091 0.210945 +jointlshoulder=0.803234 0.000000 0.000000 +jointrshoulder=-0.840417 0.000000 0.000000 +[frame17] +jointhip=0.524049 0.000000 0.000000 +jointtorso=0.000000 -0.569827 0.000000 +jointlthigh=0.196582 0.000000 0.000000 +jointlknee=-0.114379 0.000000 0.000000 +jointlankle=-0.080595 0.000000 0.000000 +jointrthigh=0.661226 0.000000 0.000000 +jointrknee=-0.874840 0.000000 0.000000 +jointrankle=0.058162 0.000000 0.000000 +jointlocal=0.272245 -0.074742 0.223583 +jointlshoulder=0.813732 0.000000 0.000000 +jointrshoulder=-0.866632 0.000000 0.000000 +[frame18] +jointhip=0.550419 0.000000 0.000000 +jointtorso=0.000000 -0.591634 0.000000 +jointlthigh=0.210756 0.000000 0.000000 +jointlknee=-0.129492 0.000000 0.000000 +jointlankle=-0.081725 0.000000 0.000000 +jointrthigh=0.680434 0.000000 0.000000 +jointrknee=-0.851089 0.000000 0.000000 +jointrankle=0.048192 0.000000 0.000000 +jointlocal=0.288491 -0.078392 0.236221 +jointlshoulder=0.801228 0.000000 0.000000 +jointrshoulder=-0.892847 0.000000 0.000000 +[frame19] +jointhip=0.576788 0.000000 0.000000 +jointtorso=0.000000 -0.613441 0.000000 +jointlthigh=0.224930 0.000000 0.000000 +jointlknee=-0.144605 0.000000 0.000000 +jointlankle=-0.082855 0.000000 0.000000 +jointrthigh=0.699641 0.000000 0.000000 +jointrknee=-0.827339 0.000000 0.000000 +jointrankle=0.038222 0.000000 0.000000 +jointlocal=0.304737 -0.082043 0.248858 +jointlshoulder=0.764463 0.000000 0.000000 +jointrshoulder=-0.919061 0.000000 0.000000 +[frame25] +jointhip=0.735003 0.000000 0.000000 +jointtorso=0.000000 -0.744282 0.000000 +jointlthigh=0.309972 0.000000 0.000000 +jointlknee=-0.235283 0.000000 0.000000 +jointlankle=-0.089635 0.000000 0.000000 +jointrthigh=0.814887 0.000000 0.000000 +jointrknee=-0.684834 0.000000 0.000000 +jointrankle=-0.021599 0.000000 0.000000 +jointlocal=0.402215 -0.103948 0.324685 +jointlshoulder=0.509171 0.000000 0.000000 +jointrshoulder=-1.076349 0.000000 0.000000 +[frame29] +jointhip=0.754951 0.000000 0.000000 +jointtorso=0.000000 -0.780996 0.000000 +jointlthigh=0.391124 0.000000 0.000000 +jointlknee=-0.411631 0.000000 0.000000 +jointlankle=0.031571 0.000000 0.000000 +jointrthigh=0.895729 0.000000 0.000000 +jointrknee=-0.798870 0.000000 0.000000 +jointrankle=0.142799 0.000000 0.000000 +jointlocal=0.480548 -0.110026 0.377599 +jointlshoulder=0.338976 0.000000 0.000000 +jointrshoulder=-1.181208 0.000000 0.000000 +[frame33] +jointhip=0.774898 0.000000 0.000000 +jointtorso=0.000000 -0.795619 0.000000 +jointlthigh=0.472275 0.000000 0.000000 +jointlknee=-0.587979 0.000000 0.000000 +jointlankle=0.152776 0.000000 0.000000 +jointrthigh=0.976570 0.000000 0.000000 +jointrknee=-0.912907 0.000000 0.000000 +jointrankle=0.307196 0.000000 0.000000 +jointlocal=0.558881 -0.116104 0.430512 +jointlshoulder=0.168781 0.000000 0.000000 +jointrshoulder=-1.286066 0.000000 0.000000 +[frame37] +jointhip=0.794845 0.000000 0.000000 +jointtorso=0.000000 -0.777101 0.000000 +jointlthigh=0.553426 0.000000 0.000000 +jointlknee=-0.764327 0.000000 0.000000 +jointlankle=0.273981 0.000000 0.000000 +jointrthigh=1.057411 0.000000 0.000000 +jointrknee=-1.026943 0.000000 0.000000 +jointrankle=0.471593 0.000000 0.000000 +jointlocal=0.637215 -0.122183 0.483426 +jointlshoulder=-0.001414 0.000000 0.000000 +jointrshoulder=-1.390924 0.000000 0.000000 +[frame40] +jointhip=0.809806 0.000000 0.000000 +jointtorso=0.000000 -0.730074 0.000000 +jointlthigh=0.614290 0.000000 0.000000 +jointlknee=-0.896588 0.000000 0.000000 +jointlankle=0.364886 0.000000 0.000000 +jointrthigh=1.003987 0.000000 0.000000 +jointrknee=-0.834333 0.000000 0.000000 +jointrankle=0.311211 0.000000 0.000000 +jointlocal=0.695965 -0.126741 0.523111 +jointlshoulder=-0.129060 0.000000 0.000000 +jointrshoulder=-1.469568 0.000000 0.000000 +[frame41] +jointhip=0.814792 0.000000 0.000000 +jointtorso=0.000000 -0.714398 0.000000 +jointlthigh=0.612762 0.000000 0.000000 +jointlknee=-0.841387 0.000000 0.000000 +jointlankle=0.312028 0.000000 0.000000 +jointrthigh=0.986180 0.000000 0.000000 +jointrknee=-0.770130 0.000000 0.000000 +jointrankle=0.257751 0.000000 0.000000 +jointlocal=0.715548 -0.128261 0.536339 +jointlshoulder=-0.171609 0.000000 0.000000 +jointrshoulder=-1.495783 0.000000 0.000000 +[frame45] +jointhip=0.834740 0.000000 0.000000 +jointtorso=0.000000 -0.631036 0.000000 +jointlthigh=0.606654 0.000000 0.000000 +jointlknee=-0.620584 0.000000 0.000000 +jointlankle=0.100598 0.000000 0.000000 +jointrthigh=0.914948 0.000000 0.000000 +jointrknee=-0.513317 0.000000 0.000000 +jointrankle=0.043908 0.000000 0.000000 +jointlocal=0.793882 -0.134339 0.589253 +jointlshoulder=-0.341804 0.000000 0.000000 +jointrshoulder=-1.600641 0.000000 0.000000 +[frame48] +jointhip=0.849700 0.000000 0.000000 +jointtorso=0.000000 -0.568515 0.000000 +jointlthigh=0.602072 0.000000 0.000000 +jointlknee=-0.454981 0.000000 0.000000 +jointlankle=-0.057975 0.000000 0.000000 +jointrthigh=0.861524 0.000000 0.000000 +jointrknee=-0.320708 0.000000 0.000000 +jointrankle=-0.116474 0.000000 0.000000 +jointlocal=0.852632 -0.138898 0.628938 +jointlshoulder=-0.469450 0.000000 0.000000 +jointrshoulder=-1.406084 0.000000 0.000000 +[frame51] +jointhip=0.864661 0.000000 0.000000 +jointtorso=0.000000 -0.505994 0.000000 +jointlthigh=0.508242 0.000000 0.000000 +jointlknee=-0.253736 0.000000 0.000000 +jointlankle=0.055732 0.000000 0.000000 +jointrthigh=0.773345 0.000000 0.000000 +jointrknee=-0.199487 0.000000 0.000000 +jointrankle=-0.057390 0.000000 0.000000 +jointlocal=0.919281 -0.109366 0.664802 +jointlshoulder=-0.597097 0.000000 0.000000 +jointrshoulder=-1.026751 0.000000 0.000000 +[frame52] +jointhip=0.793601 0.000000 0.000000 +jointtorso=0.000000 -0.443953 0.000000 +jointlthigh=0.476965 0.000000 0.000000 +jointlknee=-0.186654 0.000000 0.000000 +jointlankle=0.093634 0.000000 0.000000 +jointrthigh=0.743952 0.000000 0.000000 +jointrknee=-0.159080 0.000000 0.000000 +jointrankle=-0.037695 0.000000 0.000000 +jointlocal=0.941498 -0.099522 0.676757 +jointlshoulder=-0.639645 0.000000 0.000000 +jointrshoulder=-0.943141 0.000000 0.000000 +[frame54] +jointhip=0.651481 0.000000 0.000000 +jointtorso=0.000000 -0.319873 0.000000 +jointlthigh=0.428214 0.000000 0.000000 +jointlknee=-0.163537 0.000000 0.000000 +jointlankle=0.086634 0.000000 0.000000 +jointrthigh=0.656525 0.000000 0.000000 +jointrknee=-0.125487 0.000000 0.000000 +jointrankle=-0.014605 0.000000 0.000000 +jointlocal=0.985930 -0.079834 0.700666 +jointlshoulder=-0.724743 0.000000 0.000000 +jointrshoulder=-0.775921 0.000000 0.000000 +[frame55] +jointhip=0.580421 0.000000 0.000000 +jointtorso=0.000000 -0.257833 0.000000 +jointlthigh=0.403839 0.000000 0.000000 +jointlknee=-0.151978 0.000000 0.000000 +jointlankle=0.083135 0.000000 0.000000 +jointrthigh=0.612811 0.000000 0.000000 +jointrknee=-0.108691 0.000000 0.000000 +jointrankle=-0.003060 0.000000 0.000000 +jointlocal=1.008147 -0.069990 0.712621 +jointlshoulder=-0.711675 0.000000 0.000000 +jointrshoulder=-0.755108 0.000000 0.000000 +[frame56] +jointhip=0.509361 0.000000 0.000000 +jointtorso=0.000000 -0.195793 0.000000 +jointlthigh=0.379463 0.000000 0.000000 +jointlknee=-0.140419 0.000000 0.000000 +jointlankle=0.079635 0.000000 0.000000 +jointrthigh=0.569098 0.000000 0.000000 +jointrknee=-0.091895 0.000000 0.000000 +jointrankle=0.008485 0.000000 0.000000 +jointlocal=1.030363 -0.060146 0.724576 +jointlshoulder=-0.609844 0.000000 0.000000 +jointrshoulder=-0.734296 0.000000 0.000000 +[frame58] +jointhip=0.367241 0.000000 0.000000 +jointtorso=0.000000 -0.071712 0.000000 +jointlthigh=0.330713 0.000000 0.000000 +jointlknee=-0.117301 0.000000 0.000000 +jointlankle=0.072636 0.000000 0.000000 +jointrthigh=0.481671 0.000000 0.000000 +jointrknee=-0.058302 0.000000 0.000000 +jointrankle=0.031575 0.000000 0.000000 +jointlocal=1.074796 -0.040458 0.748485 +jointlshoulder=-0.107086 0.000000 0.000000 +jointrshoulder=-0.692671 0.000000 0.000000 +[frame60] +jointhip=0.225121 0.000000 0.000000 +jointtorso=0.000000 0.052368 0.000000 +jointlthigh=0.281962 0.000000 0.000000 +jointlknee=-0.094184 0.000000 0.000000 +jointlankle=0.065636 0.000000 0.000000 +jointrthigh=0.394244 0.000000 0.000000 +jointrknee=-0.024710 0.000000 0.000000 +jointrankle=0.054666 0.000000 0.000000 +jointlocal=1.119229 -0.020770 0.772395 +jointlshoulder=0.395673 0.000000 0.000000 +jointrshoulder=-0.755587 0.000000 0.000000 +[frame61] +jointhip=0.154061 0.000000 0.000000 +jointtorso=0.000000 0.114408 0.000000 +jointlthigh=0.257586 0.000000 0.000000 +jointlknee=-0.082625 0.000000 0.000000 +jointlankle=0.062137 0.000000 0.000000 +jointrthigh=0.350530 0.000000 0.000000 +jointrknee=-0.007914 0.000000 0.000000 +jointrankle=0.066211 0.000000 0.000000 +jointlocal=1.141445 -0.010926 0.784349 +jointlshoulder=0.567246 0.000000 0.000000 +jointrshoulder=-0.787046 0.000000 0.000000 +[frame63] +jointhip=-0.014870 0.000000 0.000000 +jointtorso=0.000000 0.086737 0.000000 +jointlthigh=0.231022 0.000000 0.000000 +jointlknee=-0.116560 0.000000 0.000000 +jointlankle=0.107963 0.000000 0.000000 +jointrthigh=0.296322 0.000000 0.000000 +jointrknee=-0.040166 0.000000 0.000000 +jointrankle=0.088825 0.000000 0.000000 +jointlocal=1.194362 0.017759 0.791242 +jointlshoulder=0.738334 0.000000 0.000000 +jointrshoulder=-0.849963 0.000000 0.000000 +[frame64] +jointhip=-0.020005 0.000000 0.000000 +jointtorso=0.000000 0.022279 0.000000 +jointlthigh=0.234603 0.000000 0.000000 +jointlknee=-0.114260 0.000000 0.000000 +jointlankle=0.130876 0.000000 0.000000 +jointrthigh=0.249982 0.000000 0.000000 +jointrknee=-0.040425 0.000000 0.000000 +jointrankle=0.145015 0.000000 0.000000 +jointlocal=1.201230 0.006860 0.788102 +jointlshoulder=0.684582 0.000000 0.000000 +jointrshoulder=-0.881421 0.000000 0.000000 +[frame65] +jointhip=-0.025141 0.000000 0.000000 +jointtorso=0.000000 -0.042179 0.000000 +jointlthigh=0.238185 0.000000 0.000000 +jointlknee=-0.111961 0.000000 0.000000 +jointlankle=0.153789 0.000000 0.000000 +jointrthigh=0.203642 0.000000 0.000000 +jointrknee=-0.040684 0.000000 0.000000 +jointrankle=0.201205 0.000000 0.000000 +jointlocal=1.208098 -0.004039 0.784963 +jointlshoulder=0.630831 0.000000 0.000000 +jointrshoulder=-0.940132 0.000000 0.000000 +[frame67] +jointhip=-0.035411 0.000000 0.000000 +jointtorso=0.000000 -0.147505 0.000000 +jointlthigh=0.245347 0.000000 0.000000 +jointlknee=-0.107363 0.000000 0.000000 +jointlankle=0.199615 0.000000 0.000000 +jointrthigh=0.110962 0.000000 0.000000 +jointrknee=-0.041202 0.000000 0.000000 +jointrankle=0.313585 0.000000 0.000000 +jointlocal=1.221834 -0.025836 0.778685 +jointlshoulder=0.523329 0.000000 0.000000 +jointrshoulder=-1.057554 0.000000 0.000000 +[frame69] +jointhip=-0.045681 0.000000 0.000000 +jointtorso=0.000000 -0.252831 0.000000 +jointlthigh=0.252509 0.000000 0.000000 +jointlknee=-0.102765 0.000000 0.000000 +jointlankle=0.245442 0.000000 0.000000 +jointrthigh=0.018282 0.000000 0.000000 +jointrknee=-0.041719 0.000000 0.000000 +jointrankle=0.425965 0.000000 0.000000 +jointlocal=1.235571 -0.047634 0.772407 +jointlshoulder=0.415827 0.000000 0.000000 +jointrshoulder=-0.682332 0.000000 0.000000 +[frame70] +jointhip=-0.050816 0.000000 0.000000 +jointtorso=0.000000 -0.305494 0.000000 +jointlthigh=0.256090 0.000000 0.000000 +jointlknee=-0.100466 0.000000 0.000000 +jointlankle=0.268355 0.000000 0.000000 +jointrthigh=0.044460 0.000000 0.000000 +jointrknee=-0.069779 0.000000 0.000000 +jointrankle=0.446811 0.000000 0.000000 +jointlocal=1.242439 -0.058533 0.769268 +jointlshoulder=0.362076 0.000000 0.000000 +jointrshoulder=-0.494721 0.000000 0.000000 +[frame71] +jointhip=-0.055951 0.000000 0.000000 +jointtorso=0.000000 -0.313978 0.000000 +jointlthigh=0.241038 0.000000 0.000000 +jointlknee=-0.097683 0.000000 0.000000 +jointlankle=0.279504 0.000000 0.000000 +jointrthigh=0.061200 0.000000 0.000000 +jointrknee=-0.066065 0.000000 0.000000 +jointrankle=0.481838 0.000000 0.000000 +jointlocal=1.259616 -0.064965 0.772377 +jointlshoulder=0.308325 0.000000 0.000000 +jointrshoulder=-0.310325 0.000000 0.000000 +[frame72] +jointhip=-0.056745 0.000000 0.000000 +jointtorso=0.000000 -0.277695 0.000000 +jointlthigh=0.225986 0.000000 0.000000 +jointlknee=-0.094900 0.000000 0.000000 +jointlankle=0.290654 0.000000 0.000000 +jointrthigh=0.077939 0.000000 0.000000 +jointrknee=-0.062351 0.000000 0.000000 +jointrankle=0.516865 0.000000 0.000000 +jointlocal=1.276794 -0.071398 0.775486 +jointlshoulder=0.254574 0.000000 0.000000 +jointrshoulder=-0.246824 0.000000 0.000000 +[frame74] +jointhip=-0.058333 0.000000 0.000000 +jointtorso=0.000000 -0.205130 0.000000 +jointlthigh=0.195881 0.000000 0.000000 +jointlknee=-0.089335 0.000000 0.000000 +jointlankle=0.312953 0.000000 0.000000 +jointrthigh=0.093045 0.000000 0.000000 +jointrknee=-0.054286 0.000000 0.000000 +jointrankle=0.609774 0.000000 0.000000 +jointlocal=1.311149 -0.084263 0.781705 +jointlshoulder=0.147071 0.000000 0.000000 +jointrshoulder=-0.148787 0.000000 0.000000 +[frame75] +jointhip=-0.059127 0.000000 0.000000 +jointtorso=0.000000 -0.168847 0.000000 +jointlthigh=0.180828 0.000000 0.000000 +jointlknee=-0.086552 0.000000 0.000000 +jointlankle=0.324102 0.000000 0.000000 +jointrthigh=0.100597 0.000000 0.000000 +jointrknee=-0.050254 0.000000 0.000000 +jointrankle=0.487316 0.000000 0.000000 +jointlocal=1.328326 -0.090696 0.784814 +jointlshoulder=0.093320 0.000000 0.000000 +jointrshoulder=-0.099769 0.000000 0.000000 +[frame76] +jointhip=-0.059921 0.000000 0.000000 +jointtorso=0.000000 -0.132564 0.000000 +jointlthigh=0.165776 0.000000 0.000000 +jointlknee=-0.083769 0.000000 0.000000 +jointlankle=0.335252 0.000000 0.000000 +jointrthigh=0.108150 0.000000 0.000000 +jointrknee=-0.046221 0.000000 0.000000 +jointrankle=0.364858 0.000000 0.000000 +jointlocal=1.345504 -0.097128 0.787924 +jointlshoulder=0.039569 0.000000 0.000000 +jointrshoulder=-0.068188 0.000000 0.000000 +[frame77] +jointhip=-0.060715 0.000000 0.000000 +jointtorso=0.000000 -0.096282 0.000000 +jointlthigh=0.146568 0.000000 0.000000 +jointlknee=-0.077746 0.000000 0.000000 +jointlankle=0.346401 0.000000 0.000000 +jointrthigh=0.111531 0.000000 0.000000 +jointrknee=-0.029176 0.000000 0.000000 +jointrankle=0.364008 0.000000 0.000000 +jointlocal=1.359146 -0.113239 0.789568 +jointlshoulder=-0.014182 0.000000 0.000000 +jointrshoulder=-0.060873 0.000000 0.000000 +[frame79] +jointhip=-0.062303 0.000000 0.000000 +jointtorso=0.000000 -0.023716 0.000000 +jointlthigh=0.108153 0.000000 0.000000 +jointlknee=-0.065698 0.000000 0.000000 +jointlankle=0.368700 0.000000 0.000000 +jointrthigh=0.101760 0.000000 0.000000 +jointrknee=-0.026118 0.000000 0.000000 +jointrankle=0.362308 0.000000 0.000000 +jointlocal=1.386432 -0.145460 0.792858 +jointlshoulder=-0.121684 0.000000 0.000000 +jointrshoulder=-0.152166 0.000000 0.000000 +[frame80] +jointhip=-0.062676 0.000000 0.000000 +jointtorso=0.000000 0.003703 0.000000 +jointlthigh=0.088946 0.000000 0.000000 +jointlknee=-0.059675 0.000000 0.000000 +jointlankle=0.379850 0.000000 0.000000 +jointrthigh=0.096875 0.000000 0.000000 +jointrknee=-0.024589 0.000000 0.000000 +jointrankle=0.485685 0.000000 0.000000 +jointlocal=1.400074 -0.161571 0.794503 +jointlshoulder=-0.175435 0.000000 0.000000 +jointrshoulder=-0.197812 0.000000 0.000000 +[frame81] +jointhip=-0.063049 0.000000 0.000000 +jointtorso=0.000000 0.022848 0.000000 +jointlthigh=0.069739 0.000000 0.000000 +jointlknee=-0.053651 0.000000 0.000000 +jointlankle=0.390999 0.000000 0.000000 +jointrthigh=0.091990 0.000000 0.000000 +jointrknee=-0.023060 0.000000 0.000000 +jointrankle=0.375146 0.000000 0.000000 +jointlocal=1.413717 -0.177681 0.796148 +jointlshoulder=-0.192524 0.000000 0.000000 +jointrshoulder=-0.243458 0.000000 0.000000 +[frame82] +jointhip=-0.063422 0.000000 0.000000 +jointtorso=0.000000 0.019040 0.000000 +jointlthigh=0.061890 0.000000 0.000000 +jointlknee=-0.041086 0.000000 0.000000 +jointlankle=0.405969 0.000000 0.000000 +jointrthigh=0.084289 0.000000 0.000000 +jointrknee=-0.035971 0.000000 0.000000 +jointrankle=0.388876 0.000000 0.000000 +jointlocal=1.414153 -0.174321 0.796763 +jointlshoulder=-0.209612 0.000000 0.000000 +jointrshoulder=-0.289105 0.000000 0.000000 +[frame84] +jointhip=-0.064167 0.000000 0.000000 +jointtorso=0.000000 0.011424 0.000000 +jointlthigh=0.046193 0.000000 0.000000 +jointlknee=-0.015957 0.000000 0.000000 +jointlankle=0.433421 0.000000 0.000000 +jointrthigh=0.068886 0.000000 0.000000 +jointrknee=-0.061794 0.000000 0.000000 +jointrankle=0.416337 0.000000 0.000000 +jointlocal=1.415026 -0.167599 0.797993 +jointlshoulder=-0.208220 0.000000 0.000000 +jointrshoulder=-0.380397 0.000000 0.000000 +[frame85] +jointhip=-0.064540 0.000000 0.000000 +jointtorso=0.000000 0.007616 0.000000 +jointlthigh=0.048007 0.000000 0.000000 +jointlknee=-0.015513 0.000000 0.000000 +jointlankle=0.419616 0.000000 0.000000 +jointrthigh=0.061185 0.000000 0.000000 +jointrknee=-0.074706 0.000000 0.000000 +jointrankle=0.430067 0.000000 0.000000 +jointlocal=1.415462 -0.164238 0.798609 +jointlshoulder=-0.207524 0.000000 0.000000 +jointrshoulder=-0.426044 0.000000 0.000000 +[frame87] +jointhip=-0.065286 0.000000 0.000000 +jointtorso=0.000000 0.000000 0.000000 +jointlthigh=0.050279 0.000000 0.000000 +jointlknee=-0.025206 0.000000 0.000000 +jointlankle=0.410730 0.000000 0.000000 +jointrthigh=0.065525 0.000000 0.000000 +jointrknee=-0.077369 0.000000 0.000000 +jointrankle=0.511319 0.000000 0.000000 +jointlocal=1.415462 -0.163047 0.798609 +jointlshoulder=-0.206132 0.000000 0.000000 +jointrshoulder=-0.440765 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame3=0.000000 -5.349598 0.000000 +frame6=0.000000 -5.349580 0.000000 +frame8=0.000000 -5.349624 0.000000 +frame9=0.000000 -5.349646 0.000000 +frame10=0.000000 -5.349668 0.000000 +frame12=0.000000 -5.349712 0.000000 +frame14=0.000000 -5.349756 0.000000 +frame15=0.000000 -5.349778 0.000000 +frame16=0.000000 -5.349800 0.000000 +frame17=0.000000 -5.349822 0.000000 +frame18=0.000000 -5.349844 0.000000 +frame19=0.000000 -5.349866 0.000000 +frame25=0.000000 -5.350000 0.000000 +frame29=0.000000 -5.350000 0.000000 +frame33=0.000000 -5.349999 0.000000 +frame37=0.000000 -5.349999 0.000000 +frame40=0.000000 -5.349999 0.000000 +frame41=0.000000 -5.349999 0.000000 +frame45=0.000000 -5.349999 0.000000 +frame48=0.000000 -5.350000 0.000000 +frame51=0.000000 -5.350000 0.000000 +frame52=0.000000 -5.349999 0.000000 +frame54=0.000000 -5.350000 0.000000 +frame55=0.000000 -5.350000 0.000000 +frame56=0.000000 -5.349999 0.000000 +frame58=0.000000 -5.350000 0.000000 +frame60=0.000000 -5.350000 0.000000 +frame61=0.000000 -5.350000 0.000000 +frame63=0.000000 -5.350000 0.000000 +frame64=0.000000 -5.350000 0.000000 +frame65=0.000000 -5.349999 0.000000 +frame67=0.000000 -5.350000 0.000000 +frame69=0.000000 -5.350000 0.000000 +frame70=0.000000 -5.350000 0.000000 +frame71=0.000000 -5.349999 0.000000 +frame72=0.000000 -5.350000 0.000000 +frame74=0.000000 -5.350000 0.000000 +frame75=0.000000 -5.350000 0.000000 +frame76=0.000000 -5.350000 0.000000 +frame77=0.000000 -5.350000 0.000000 +frame79=0.000000 -5.350000 0.000000 +frame80=0.000000 -5.350000 0.000000 +frame81=0.000000 -5.350000 0.000000 +frame82=0.000000 -5.350000 0.000000 +frame84=0.000000 -5.350000 0.000000 +frame85=0.000000 -5.350000 0.000000 +frame87=0.000000 -5.349980 0.000000 + +[KeyJointPos] +frame1=0.000000 0.000000 0.000000 +frame3=-0.213048 -0.008003 0.232224 +frame6=-0.542121 -0.050925 0.579558 +frame8=-0.708912 -0.079514 0.781067 +frame9=-0.792691 -0.098084 0.881722 +frame10=-0.876617 -0.119527 0.982268 +frame12=-1.044571 -0.171072 1.182914 +frame14=-1.212098 -0.234218 1.382756 +frame15=-1.293126 -0.280979 1.479596 +frame16=-1.373491 -0.330487 1.575786 +frame17=-1.453110 -0.382725 1.671298 +frame18=-1.531901 -0.437671 1.766103 +frame19=-1.609779 -0.495301 1.860173 +frame25=-2.053369 -0.895841 2.407684 +frame29=-2.313510 -1.227305 2.841338 +frame33=-2.533305 -1.602729 3.256890 +frame37=-2.707342 -2.016454 3.651769 +frame40=-2.805013 -2.348077 3.932892 +frame41=-2.830971 -2.462116 4.023540 +frame45=-2.900395 -2.932754 4.369920 +frame48=-2.915123 -3.297659 4.611757 +frame51=-2.735735 -3.588624 4.887887 +frame52=-2.666700 -3.682356 4.974616 +frame54=-2.515472 -3.864182 5.139668 +frame55=-2.433531 -3.952042 5.217854 +frame56=-2.347546 -4.037721 5.293060 +frame58=-2.163992 -4.202138 5.434289 +frame60=-1.965943 -4.356685 5.562896 +frame61=-1.861851 -4.430050 5.622334 +frame63=-1.545015 -4.538188 5.750050 +frame64=-1.555841 -4.605598 5.766298 +frame65=-1.567274 -4.673240 5.781592 +frame67=-1.591923 -4.809147 5.809291 +frame69=-1.618893 -4.945779 5.833102 +frame70=-1.633229 -5.014324 5.843536 +frame71=-1.595037 -5.119373 5.874533 +frame72=-1.556022 -5.224773 5.903527 +frame74=-1.475492 -5.436421 5.955460 +frame75=-1.433960 -5.542567 5.978383 +frame76=-1.391574 -5.648855 5.999264 +frame77=-1.403471 -5.779177 6.007236 +frame79=-1.425980 -6.040931 6.014949 +frame80=-1.436497 -6.172226 6.014678 +frame81=-1.446460 -6.303704 6.011654 +frame82=-1.430419 -6.292057 6.015663 +frame84=-1.398351 -6.268673 6.023476 +frame85=-1.382325 -6.256935 6.027278 +frame87=-1.377316 -6.251792 6.028463 diff --git a/CONTENT/BT/ANIMS/JAKFF.ANI b/CONTENT/BT/ANIMS/JAKFF.ANI new file mode 100644 index 0000000..ce26b53 --- /dev/null +++ b/CONTENT/BT/ANIMS/JAKFF.ANI @@ -0,0 +1,700 @@ +[LAB_ONLY] + +[HEADER] +framecount=44 +framerate=30 +skeletonfile=lok.skl +jointcount=11 + +[Time] +frame1=0 +frame6=0.166667 +frame10=0.3 +frame11=0.333333 +frame12=0.366667 +frame13=0.4 +frame14=0.433333 +frame15=0.466667 +frame18=0.566667 +frame21=0.666667 +frame25=0.8 +frame31=1 +frame37=1.2 +frame39=1.26667 +frame40=1.3 +frame43=1.4 +frame47=1.53333 +frame49=1.6 +frame50=1.63333 +frame51=1.66667 +frame52=1.7 +frame55=1.8 +frame56=1.83333 +frame58=1.9 +frame59=1.93333 +frame60=1.96667 +frame61=2 +frame62=2.03333 +frame63=2.06667 +frame65=2.13333 +frame68=2.23333 +frame73=2.4 +frame74=2.43333 +frame75=2.46667 +frame76=2.5 +frame78=2.56667 +frame80=2.63333 +frame81=2.66667 +frame82=2.7 +frame83=2.73333 +frame85=2.8 +frame86=2.83333 +frame87=2.86667 +frame89=2.93333 + +[JointIndices] +jointhip=1 +jointtorso=2 +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 +jointlshoulder=6 +jointrshoulder=4 + +[JointType] +jointhip=hingex +jointtorso=hingey +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointlshoulder=hingex +jointrshoulder=hingex + +[frame1] +jointhip=0.000000 0.000000 0.000000 +jointtorso=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointlshoulder=0.000000 0.000000 0.000000 +jointrshoulder=0.000000 0.000000 0.000000 +[frame6] +jointhip=-0.361639 0.000000 0.000000 +jointtorso=0.000000 -0.222460 0.000000 +jointlthigh=-0.011488 0.000000 0.000000 +jointlknee=-0.453265 0.000000 0.000000 +jointlankle=0.223338 0.000000 0.000000 +jointrthigh=-0.118199 0.000000 0.000000 +jointrknee=0.029482 0.000000 0.000000 +jointrankle=0.117459 0.000000 0.000000 +jointlocal=-0.088660 -0.033636 -0.050461 +jointlshoulder=0.332229 0.000000 0.000000 +jointrshoulder=-0.268833 0.000000 0.000000 +[frame10] +jointhip=-0.464524 0.000000 0.000000 +jointtorso=0.000000 -0.368059 0.000000 +jointlthigh=-0.067805 0.000000 0.000000 +jointlknee=-0.651168 0.000000 0.000000 +jointlankle=0.253236 0.000000 0.000000 +jointrthigh=-0.176623 0.000000 0.000000 +jointrknee=-0.011155 0.000000 0.000000 +jointrankle=0.159124 0.000000 0.000000 +jointlocal=-0.158829 -0.062306 -0.080220 +jointlshoulder=0.525302 0.000000 0.000000 +jointrshoulder=-0.321230 0.000000 0.000000 +[frame11] +jointhip=-0.490245 0.000000 0.000000 +jointtorso=0.000000 -0.404459 0.000000 +jointlthigh=-0.081884 0.000000 0.000000 +jointlknee=-0.700643 0.000000 0.000000 +jointlankle=0.260710 0.000000 0.000000 +jointrthigh=-0.191230 0.000000 0.000000 +jointrknee=-0.021314 0.000000 0.000000 +jointrankle=0.169540 0.000000 0.000000 +jointlocal=-0.176371 -0.069474 -0.087660 +jointlshoulder=0.560643 0.000000 0.000000 +jointrshoulder=-0.334329 0.000000 0.000000 +[frame12] +jointhip=-0.515966 0.000000 0.000000 +jointtorso=0.000000 -0.440859 0.000000 +jointlthigh=-0.095964 0.000000 0.000000 +jointlknee=-0.750119 0.000000 0.000000 +jointlankle=0.268185 0.000000 0.000000 +jointrthigh=-0.205836 0.000000 0.000000 +jointrknee=-0.031474 0.000000 0.000000 +jointrankle=0.179956 0.000000 0.000000 +jointlocal=-0.193913 -0.076642 -0.095100 +jointlshoulder=0.581565 0.000000 0.000000 +jointrshoulder=-0.347429 0.000000 0.000000 +[frame13] +jointhip=-0.541687 0.000000 0.000000 +jointtorso=0.000000 -0.477259 0.000000 +jointlthigh=-0.110043 0.000000 0.000000 +jointlknee=-0.799595 0.000000 0.000000 +jointlankle=0.275659 0.000000 0.000000 +jointrthigh=-0.220442 0.000000 0.000000 +jointrknee=-0.041633 0.000000 0.000000 +jointrankle=0.190372 0.000000 0.000000 +jointlocal=-0.211455 -0.083809 -0.102540 +jointlshoulder=0.589124 0.000000 0.000000 +jointrshoulder=-0.356222 0.000000 0.000000 +[frame14] +jointhip=-0.567408 0.000000 0.000000 +jointtorso=0.000000 -0.505407 0.000000 +jointlthigh=-0.159354 0.000000 0.000000 +jointlknee=-0.767824 0.000000 0.000000 +jointlankle=0.236997 0.000000 0.000000 +jointrthigh=-0.208841 0.000000 0.000000 +jointrknee=-0.103417 0.000000 0.000000 +jointrankle=0.209440 0.000000 0.000000 +jointlocal=-0.229437 -0.090013 -0.110904 +jointlshoulder=0.584998 0.000000 0.000000 +jointrshoulder=-0.365016 0.000000 0.000000 +[frame15] +jointhip=-0.593130 0.000000 0.000000 +jointtorso=0.000000 -0.533556 0.000000 +jointlthigh=-0.208665 0.000000 0.000000 +jointlknee=-0.736054 0.000000 0.000000 +jointlankle=0.198335 0.000000 0.000000 +jointrthigh=-0.197240 0.000000 0.000000 +jointrknee=-0.165200 0.000000 0.000000 +jointrankle=0.228509 0.000000 0.000000 +jointlocal=-0.247419 -0.096216 -0.119269 +jointlshoulder=0.576332 0.000000 0.000000 +jointrshoulder=-0.373810 0.000000 0.000000 +[frame18] +jointhip=-0.670293 0.000000 0.000000 +jointtorso=0.000000 -0.618002 0.000000 +jointlthigh=-0.356599 0.000000 0.000000 +jointlknee=-0.640743 0.000000 0.000000 +jointlankle=0.082348 0.000000 0.000000 +jointrthigh=-0.162437 0.000000 0.000000 +jointrknee=-0.350551 0.000000 0.000000 +jointrankle=0.285714 0.000000 0.000000 +jointlocal=-0.301365 -0.114827 -0.144362 +jointlshoulder=0.535385 0.000000 0.000000 +jointrshoulder=-0.400191 0.000000 0.000000 +[frame21] +jointhip=-0.747456 0.000000 0.000000 +jointtorso=0.000000 -0.702448 0.000000 +jointlthigh=-0.437065 0.000000 0.000000 +jointlknee=-0.743233 0.000000 0.000000 +jointlankle=0.118389 0.000000 0.000000 +jointrthigh=-0.186855 0.000000 0.000000 +jointrknee=-0.385156 0.000000 0.000000 +jointrankle=0.255612 0.000000 0.000000 +jointlocal=-0.355311 -0.133438 -0.169456 +jointlshoulder=0.494439 0.000000 0.000000 +jointrshoulder=-0.426571 0.000000 0.000000 +[frame25] +jointhip=-0.811285 0.000000 0.000000 +jointtorso=0.000000 -0.780616 0.000000 +jointlthigh=-0.639204 0.000000 0.000000 +jointlknee=-0.658912 0.000000 0.000000 +jointlankle=0.038580 0.000000 0.000000 +jointrthigh=-0.221235 0.000000 0.000000 +jointrknee=-0.369787 0.000000 0.000000 +jointrankle=0.175297 0.000000 0.000000 +jointlocal=-0.429928 -0.157919 -0.204695 +jointlshoulder=0.439843 0.000000 0.000000 +jointrshoulder=-0.461746 0.000000 0.000000 +[frame31] +jointhip=-0.907028 0.000000 0.000000 +jointtorso=0.000000 -0.897869 0.000000 +jointlthigh=-0.960243 0.000000 0.000000 +jointlknee=-0.451634 0.000000 0.000000 +jointlankle=-0.043815 0.000000 0.000000 +jointrthigh=-0.272805 0.000000 0.000000 +jointrknee=-0.346734 0.000000 0.000000 +jointrankle=0.054824 0.000000 0.000000 +jointlocal=-0.541855 -0.194639 -0.257553 +jointlshoulder=0.357950 0.000000 0.000000 +jointrshoulder=-0.179858 0.000000 0.000000 +[frame37] +jointhip=-0.972814 0.000000 0.000000 +jointtorso=0.000000 -0.976255 0.000000 +jointlthigh=-0.982617 0.000000 0.000000 +jointlknee=-0.615979 0.000000 0.000000 +jointlankle=-0.030864 0.000000 0.000000 +jointrthigh=-0.126788 0.000000 0.000000 +jointrknee=-0.741979 0.000000 0.000000 +jointrankle=0.043864 0.000000 0.000000 +jointlocal=-0.686005 -0.241932 -0.320377 +jointlshoulder=0.276057 0.000000 0.000000 +jointrshoulder=0.102031 0.000000 0.000000 +[frame39] +jointhip=-0.994743 0.000000 0.000000 +jointtorso=0.000000 -1.002384 0.000000 +jointlthigh=-0.924593 0.000000 0.000000 +jointlknee=-0.685590 0.000000 0.000000 +jointlankle=-0.012767 0.000000 0.000000 +jointrthigh=-0.078115 0.000000 0.000000 +jointrknee=-0.873727 0.000000 0.000000 +jointrankle=0.040211 0.000000 0.000000 +jointlocal=-0.734055 -0.257696 -0.341319 +jointlshoulder=0.248759 0.000000 0.000000 +jointrshoulder=0.195993 0.000000 0.000000 +[frame40] +jointhip=-1.005708 0.000000 0.000000 +jointtorso=0.000000 -1.015448 0.000000 +jointlthigh=-0.895581 0.000000 0.000000 +jointlknee=-0.720395 0.000000 0.000000 +jointlankle=-0.003719 0.000000 0.000000 +jointrthigh=-0.053779 0.000000 0.000000 +jointrknee=-0.939601 0.000000 0.000000 +jointrankle=0.038385 0.000000 0.000000 +jointlocal=-0.758080 -0.265578 -0.351789 +jointlshoulder=0.235110 0.000000 0.000000 +jointrshoulder=0.242974 0.000000 0.000000 +[frame43] +jointhip=-1.027118 0.000000 0.000000 +jointtorso=0.000000 -1.035945 0.000000 +jointlthigh=-0.828375 0.000000 0.000000 +jointlknee=-0.701083 0.000000 0.000000 +jointlankle=-0.020515 0.000000 0.000000 +jointrthigh=0.001064 0.000000 0.000000 +jointrknee=-1.002760 0.000000 0.000000 +jointrankle=-0.077221 0.000000 0.000000 +jointlocal=-0.854538 -0.287054 -0.388851 +jointlshoulder=-0.040645 0.000000 0.000000 +jointrshoulder=0.391748 0.000000 0.000000 +[frame47] +jointhip=-1.055665 0.000000 0.000000 +jointtorso=0.000000 -1.063275 0.000000 +jointlthigh=-0.638637 0.000000 0.000000 +jointlknee=-0.805232 0.000000 0.000000 +jointlankle=-0.104894 0.000000 0.000000 +jointrthigh=0.074189 0.000000 0.000000 +jointrknee=-1.086972 0.000000 0.000000 +jointrankle=-0.231361 0.000000 0.000000 +jointlocal=-0.983148 -0.315688 -0.438267 +jointlshoulder=-0.408319 0.000000 0.000000 +jointrshoulder=0.590114 0.000000 0.000000 +[frame49] +jointhip=-1.069939 0.000000 0.000000 +jointtorso=0.000000 -1.076940 0.000000 +jointlthigh=-0.566624 0.000000 0.000000 +jointlknee=-0.813929 0.000000 0.000000 +jointlankle=-0.104894 0.000000 0.000000 +jointrthigh=0.100776 0.000000 0.000000 +jointrknee=-1.120843 0.000000 0.000000 +jointrankle=-0.239301 0.000000 0.000000 +jointlocal=-1.045730 -0.327277 -0.462014 +jointlshoulder=-0.592155 0.000000 0.000000 +jointrshoulder=0.689297 0.000000 0.000000 +[frame50] +jointhip=-1.052629 0.000000 0.000000 +jointtorso=0.000000 -0.972502 0.000000 +jointlthigh=-0.530617 0.000000 0.000000 +jointlknee=-0.818277 0.000000 0.000000 +jointlankle=-0.104894 0.000000 0.000000 +jointrthigh=0.114069 0.000000 0.000000 +jointrknee=-1.137778 0.000000 0.000000 +jointrankle=-0.243271 0.000000 0.000000 +jointlocal=-1.077021 -0.333072 -0.473888 +jointlshoulder=-0.697045 0.000000 0.000000 +jointrshoulder=0.806956 0.000000 0.000000 +[frame51] +jointhip=-1.035319 0.000000 0.000000 +jointtorso=0.000000 -0.868064 0.000000 +jointlthigh=-0.494611 0.000000 0.000000 +jointlknee=-0.822626 0.000000 0.000000 +jointlankle=-0.104894 0.000000 0.000000 +jointrthigh=0.127363 0.000000 0.000000 +jointrknee=-1.154713 0.000000 0.000000 +jointrankle=-0.247242 0.000000 0.000000 +jointlocal=-1.108312 -0.338866 -0.485761 +jointlshoulder=-0.801935 0.000000 0.000000 +jointrshoulder=0.876923 0.000000 0.000000 +[frame52] +jointhip=-0.919044 0.000000 0.000000 +jointtorso=0.000000 -0.776386 0.000000 +jointlthigh=-0.458604 0.000000 0.000000 +jointlknee=-0.826975 0.000000 0.000000 +jointlankle=-0.104894 0.000000 0.000000 +jointrthigh=0.140656 0.000000 0.000000 +jointrknee=-1.171649 0.000000 0.000000 +jointrankle=-0.237898 0.000000 0.000000 +jointlocal=-1.146342 -0.340102 -0.493883 +jointlshoulder=-0.906824 0.000000 0.000000 +jointrshoulder=0.897575 0.000000 0.000000 +[frame55] +jointhip=-0.570221 0.000000 0.000000 +jointtorso=0.000000 -0.501351 0.000000 +jointlthigh=-0.350583 0.000000 0.000000 +jointlknee=-0.840020 0.000000 0.000000 +jointlankle=-0.104894 0.000000 0.000000 +jointrthigh=0.180537 0.000000 0.000000 +jointrknee=-1.222455 0.000000 0.000000 +jointrankle=-0.209865 0.000000 0.000000 +jointlocal=-1.260432 -0.343808 -0.518246 +jointlshoulder=-1.373135 0.000000 0.000000 +jointrshoulder=0.959529 0.000000 0.000000 +[frame56] +jointhip=-0.453947 0.000000 0.000000 +jointtorso=0.000000 -0.409673 0.000000 +jointlthigh=-0.314576 0.000000 0.000000 +jointlknee=-0.844369 0.000000 0.000000 +jointlankle=-0.104894 0.000000 0.000000 +jointrthigh=0.120706 0.000000 0.000000 +jointrknee=-1.173507 0.000000 0.000000 +jointrankle=-0.200521 0.000000 0.000000 +jointlocal=-1.298462 -0.345043 -0.526367 +jointlshoulder=-1.528572 0.000000 0.000000 +jointrshoulder=0.980180 0.000000 0.000000 +[frame58] +jointhip=-0.221398 0.000000 0.000000 +jointtorso=0.000000 -0.226317 0.000000 +jointlthigh=-0.242562 0.000000 0.000000 +jointlknee=-0.853066 0.000000 0.000000 +jointlankle=-0.104894 0.000000 0.000000 +jointrthigh=0.001045 0.000000 0.000000 +jointrknee=-1.075611 0.000000 0.000000 +jointrankle=-0.181832 0.000000 0.000000 +jointlocal=-1.374522 -0.347514 -0.542609 +jointlshoulder=-1.640021 0.000000 0.000000 +jointrshoulder=1.021482 0.000000 0.000000 +[frame59] +jointhip=-0.105123 0.000000 0.000000 +jointtorso=0.000000 -0.134638 0.000000 +jointlthigh=-0.260307 0.000000 0.000000 +jointlknee=-0.709212 0.000000 0.000000 +jointlankle=-0.104894 0.000000 0.000000 +jointrthigh=-0.093670 0.000000 0.000000 +jointrknee=-0.922494 0.000000 0.000000 +jointrankle=-0.191627 0.000000 0.000000 +jointlocal=-1.401157 -0.331838 -0.551095 +jointlshoulder=-1.637829 0.000000 0.000000 +jointrshoulder=1.042134 0.000000 0.000000 +[frame60] +jointhip=0.011151 0.000000 0.000000 +jointtorso=0.000000 -0.042960 0.000000 +jointlthigh=-0.278051 0.000000 0.000000 +jointlknee=-0.565358 0.000000 0.000000 +jointlankle=-0.104894 0.000000 0.000000 +jointrthigh=-0.188385 0.000000 0.000000 +jointrknee=-0.769376 0.000000 0.000000 +jointrankle=-0.201423 0.000000 0.000000 +jointlocal=-1.427793 -0.316161 -0.559582 +jointlshoulder=-1.624352 0.000000 0.000000 +jointrshoulder=1.062785 0.000000 0.000000 +[frame61] +jointhip=0.075092 0.000000 0.000000 +jointtorso=0.000000 0.048718 0.000000 +jointlthigh=-0.295795 0.000000 0.000000 +jointlknee=-0.421504 0.000000 0.000000 +jointlankle=-0.104894 0.000000 0.000000 +jointrthigh=-0.283099 0.000000 0.000000 +jointrknee=-0.616258 0.000000 0.000000 +jointrankle=-0.211218 0.000000 0.000000 +jointlocal=-1.454428 -0.300485 -0.568068 +jointlshoulder=-1.565986 0.000000 0.000000 +jointrshoulder=1.155462 0.000000 0.000000 +[frame62] +jointhip=0.040330 0.000000 0.000000 +jointtorso=0.000000 0.058836 0.000000 +jointlthigh=-0.313538 0.000000 0.000000 +jointlknee=-0.277650 0.000000 0.000000 +jointlankle=-0.104894 0.000000 0.000000 +jointrthigh=-0.274245 0.000000 0.000000 +jointrknee=-0.595824 0.000000 0.000000 +jointrankle=-0.221013 0.000000 0.000000 +jointlocal=-1.427161 -0.255628 -0.560359 +jointlshoulder=-1.463693 0.000000 0.000000 +jointrshoulder=1.249774 0.000000 0.000000 +[frame63] +jointhip=0.008004 0.000000 0.000000 +jointtorso=0.000000 0.068954 0.000000 +jointlthigh=-0.331283 0.000000 0.000000 +jointlknee=-0.133796 0.000000 0.000000 +jointlankle=-0.114871 0.000000 0.000000 +jointrthigh=-0.265390 0.000000 0.000000 +jointrknee=-0.575390 0.000000 0.000000 +jointrankle=-0.230808 0.000000 0.000000 +jointlocal=-1.416641 -0.235438 -0.558093 +jointlshoulder=-1.361401 0.000000 0.000000 +jointrshoulder=1.342305 0.000000 0.000000 +[frame65] +jointhip=-0.056649 0.000000 0.000000 +jointtorso=0.000000 0.089189 0.000000 +jointlthigh=-0.340370 0.000000 0.000000 +jointlknee=-0.105026 0.000000 0.000000 +jointlankle=-0.134825 0.000000 0.000000 +jointrthigh=-0.247681 0.000000 0.000000 +jointrknee=-0.534523 0.000000 0.000000 +jointrankle=-0.250397 0.000000 0.000000 +jointlocal=-1.395602 -0.195057 -0.553562 +jointlshoulder=-1.156815 0.000000 0.000000 +jointrshoulder=1.546425 0.000000 0.000000 +[frame68] +jointhip=-0.153628 0.000000 0.000000 +jointtorso=0.000000 0.119543 0.000000 +jointlthigh=-0.354002 0.000000 0.000000 +jointlknee=-0.061869 0.000000 0.000000 +jointlankle=-0.164757 0.000000 0.000000 +jointrthigh=-0.221116 0.000000 0.000000 +jointrknee=-0.473222 0.000000 0.000000 +jointrankle=-0.279782 0.000000 0.000000 +jointlocal=-1.364043 -0.134486 -0.546764 +jointlshoulder=-0.849937 0.000000 0.000000 +jointrshoulder=2.138849 0.000000 0.000000 +[frame73] +jointhip=0.050783 0.000000 0.000000 +jointtorso=0.000000 0.170132 0.000000 +jointlthigh=-0.272313 0.000000 0.000000 +jointlknee=-0.322739 0.000000 0.000000 +jointlankle=-0.164757 0.000000 0.000000 +jointrthigh=-0.261063 0.000000 0.000000 +jointrknee=-0.150179 0.000000 0.000000 +jointrankle=-0.328757 0.000000 0.000000 +jointlocal=-1.337310 -0.090688 -0.543759 +jointlshoulder=-0.200561 0.000000 0.000000 +jointrshoulder=2.610873 0.000000 0.000000 +[frame74] +jointhip=0.091665 0.000000 0.000000 +jointtorso=0.000000 0.144502 0.000000 +jointlthigh=-0.268514 0.000000 0.000000 +jointlknee=-0.303618 0.000000 0.000000 +jointlankle=-0.164757 0.000000 0.000000 +jointrthigh=-0.282040 0.000000 0.000000 +jointrknee=-0.068014 0.000000 0.000000 +jointrankle=-0.338552 0.000000 0.000000 +jointlocal=-1.337310 -0.090688 -0.543759 +jointlshoulder=-0.070686 0.000000 0.000000 +jointrshoulder=2.553129 0.000000 0.000000 +[frame75] +jointhip=0.132547 0.000000 0.000000 +jointtorso=0.000000 0.118871 0.000000 +jointlthigh=-0.264715 0.000000 0.000000 +jointlknee=-0.284497 0.000000 0.000000 +jointlankle=-0.164757 0.000000 0.000000 +jointrthigh=-0.283618 0.000000 0.000000 +jointrknee=-0.080322 0.000000 0.000000 +jointrankle=-0.340173 0.000000 0.000000 +jointlocal=-1.337310 -0.090688 -0.543759 +jointlshoulder=-0.070005 0.000000 0.000000 +jointrshoulder=2.495385 0.000000 0.000000 +[frame76] +jointhip=0.073720 0.000000 0.000000 +jointtorso=0.000000 0.093241 0.000000 +jointlthigh=-0.260916 0.000000 0.000000 +jointlknee=-0.265376 0.000000 0.000000 +jointlankle=-0.164757 0.000000 0.000000 +jointrthigh=-0.285196 0.000000 0.000000 +jointrknee=-0.092630 0.000000 0.000000 +jointrankle=-0.341795 0.000000 0.000000 +jointlocal=-1.337310 -0.090688 -0.543759 +jointlshoulder=-0.119779 0.000000 0.000000 +jointrshoulder=2.515236 0.000000 0.000000 +[frame78] +jointhip=-0.043935 0.000000 0.000000 +jointtorso=0.000000 0.041980 0.000000 +jointlthigh=-0.253317 0.000000 0.000000 +jointlknee=-0.227134 0.000000 0.000000 +jointlankle=-0.164757 0.000000 0.000000 +jointrthigh=-0.288353 0.000000 0.000000 +jointrknee=-0.117245 0.000000 0.000000 +jointrankle=-0.345038 0.000000 0.000000 +jointlocal=-1.337310 -0.090688 -0.543759 +jointlshoulder=-0.255753 0.000000 0.000000 +jointrshoulder=2.554939 0.000000 0.000000 +[frame80] +jointhip=-0.161589 0.000000 0.000000 +jointtorso=0.000000 0.028490 0.000000 +jointlthigh=-0.245719 0.000000 0.000000 +jointlknee=-0.188892 0.000000 0.000000 +jointlankle=-0.203045 0.000000 0.000000 +jointrthigh=-0.292837 0.000000 0.000000 +jointrknee=-0.127672 0.000000 0.000000 +jointrankle=-0.372012 0.000000 0.000000 +jointlocal=-1.344193 -0.101972 -0.544518 +jointlshoulder=-0.391727 0.000000 0.000000 +jointrshoulder=2.594641 0.000000 0.000000 +[frame81] +jointhip=-0.158208 0.000000 0.000000 +jointtorso=0.000000 0.021744 0.000000 +jointlthigh=-0.241919 0.000000 0.000000 +jointlknee=-0.169771 0.000000 0.000000 +jointlankle=-0.222190 0.000000 0.000000 +jointrthigh=-0.295078 0.000000 0.000000 +jointrknee=-0.132885 0.000000 0.000000 +jointrankle=-0.385499 0.000000 0.000000 +jointlocal=-1.347635 -0.107614 -0.544898 +jointlshoulder=-0.459715 0.000000 0.000000 +jointrshoulder=2.478208 0.000000 0.000000 +[frame82] +jointhip=-0.154828 0.000000 0.000000 +jointtorso=0.000000 0.014999 0.000000 +jointlthigh=-0.238120 0.000000 0.000000 +jointlknee=-0.150650 0.000000 0.000000 +jointlankle=-0.241334 0.000000 0.000000 +jointrthigh=-0.297320 0.000000 0.000000 +jointrknee=-0.138098 0.000000 0.000000 +jointrankle=-0.398986 0.000000 0.000000 +jointlocal=-1.351077 -0.113257 -0.545277 +jointlshoulder=-0.505866 0.000000 0.000000 +jointrshoulder=2.361775 0.000000 0.000000 +[frame83] +jointhip=-0.151447 0.000000 0.000000 +jointtorso=0.000000 0.008254 0.000000 +jointlthigh=-0.234321 0.000000 0.000000 +jointlknee=-0.131529 0.000000 0.000000 +jointlankle=-0.260478 0.000000 0.000000 +jointrthigh=-0.297119 0.000000 0.000000 +jointrknee=-0.109152 0.000000 0.000000 +jointrankle=-0.412472 0.000000 0.000000 +jointlocal=-1.354519 -0.118899 -0.545656 +jointlshoulder=-0.537216 0.000000 0.000000 +jointrshoulder=2.245341 0.000000 0.000000 +[frame85] +jointhip=-0.144686 0.000000 0.000000 +jointtorso=0.000000 -0.005236 0.000000 +jointlthigh=-0.232885 0.000000 0.000000 +jointlknee=-0.161329 0.000000 0.000000 +jointlankle=-0.298765 0.000000 0.000000 +jointrthigh=-0.296716 0.000000 0.000000 +jointrknee=-0.051258 0.000000 0.000000 +jointrankle=-0.439446 0.000000 0.000000 +jointlocal=-1.361402 -0.130183 -0.546415 +jointlshoulder=-0.501142 0.000000 0.000000 +jointrshoulder=2.012474 0.000000 0.000000 +[frame86] +jointhip=-0.152111 0.000000 0.000000 +jointtorso=0.000000 -0.003927 0.000000 +jointlthigh=-0.236263 0.000000 0.000000 +jointlknee=-0.156392 0.000000 0.000000 +jointlankle=-0.297633 0.000000 0.000000 +jointrthigh=-0.279533 0.000000 0.000000 +jointrknee=-0.071053 0.000000 0.000000 +jointrankle=-0.427663 0.000000 0.000000 +jointlocal=-1.361402 -0.130183 -0.546415 +jointlshoulder=-0.483105 0.000000 0.000000 +jointrshoulder=1.896041 0.000000 0.000000 +[frame87] +jointhip=-0.159536 0.000000 0.000000 +jointtorso=0.000000 -0.002618 0.000000 +jointlthigh=-0.228781 0.000000 0.000000 +jointlknee=-0.169893 0.000000 0.000000 +jointlankle=-0.288209 0.000000 0.000000 +jointrthigh=-0.262350 0.000000 0.000000 +jointrknee=-0.090847 0.000000 0.000000 +jointrankle=-0.415881 0.000000 0.000000 +jointlocal=-1.361402 -0.130183 -0.546415 +jointlshoulder=-0.465069 0.000000 0.000000 +jointrshoulder=1.779607 0.000000 0.000000 +[frame89] +jointhip=-0.174386 0.000000 0.000000 +jointtorso=0.000000 0.000000 0.000000 +jointlthigh=-0.213815 0.000000 0.000000 +jointlknee=-0.196896 0.000000 0.000000 +jointlankle=-0.269360 0.000000 0.000000 +jointrthigh=-0.227984 0.000000 0.000000 +jointrknee=-0.130436 0.000000 0.000000 +jointrankle=-0.392315 0.000000 0.000000 +jointlocal=-1.361402 -0.130183 -0.546415 +jointlshoulder=-0.428995 0.000000 0.000000 +jointrshoulder=1.705824 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame6=0.000000 -5.349610 0.000000 +frame10=0.000000 -5.349610 0.000000 +frame11=0.000000 -5.349609 0.000000 +frame12=0.000000 -5.349609 0.000000 +frame13=0.000000 -5.349610 0.000000 +frame14=0.000000 -5.349610 0.000000 +frame15=0.000000 -5.349610 0.000000 +frame18=0.000000 -5.349610 0.000000 +frame21=0.000000 -5.349610 0.000000 +frame25=0.000000 -5.349610 0.000000 +frame31=0.000000 -5.349610 0.000000 +frame37=0.000000 -5.349610 0.000000 +frame39=0.000000 -5.349610 0.000000 +frame40=0.000000 -5.349610 0.000000 +frame43=0.000000 -5.349610 0.000000 +frame47=0.000000 -5.349610 0.000000 +frame49=0.000000 -5.349805 0.000000 +frame50=0.000000 -5.349902 0.000000 +frame51=0.000000 -5.350000 0.000000 +frame52=0.000000 -5.350000 0.000000 +frame55=0.000000 -5.350000 0.000000 +frame56=0.000000 -5.349999 0.000000 +frame58=0.000000 -5.350000 0.000000 +frame59=0.000000 -5.349870 0.000000 +frame60=0.000000 -5.349740 0.000000 +frame61=0.000000 -5.349610 0.000000 +frame62=0.000000 -5.349960 0.000000 +frame63=0.000000 -5.349966 0.000000 +frame65=0.000000 -5.349980 0.000000 +frame68=0.000000 -5.350000 0.000000 +frame73=0.000000 -5.349960 0.000000 +frame74=0.000000 -5.349968 0.000000 +frame75=0.000000 -5.349976 0.000000 +frame76=0.000000 -5.349984 0.000000 +frame78=0.000000 -5.350000 0.000000 +frame80=0.000000 -5.350000 0.000000 +frame81=0.000000 -5.350000 0.000000 +frame82=0.000000 -5.350000 0.000000 +frame83=0.000000 -5.350000 0.000000 +frame85=0.000000 -5.350000 0.000000 +frame86=0.000000 -5.350000 0.000000 +frame87=0.000000 -5.349999 0.000000 +frame89=0.000000 -5.350000 0.000000 + +[KeyJointPos] +frame1=0.000000 0.000000 0.000000 +frame6=0.282083 0.241593 -0.573619 +frame10=0.510046 0.333260 -1.048988 +frame11=0.571881 0.349132 -1.170296 +frame12=0.635586 0.362050 -1.292467 +frame13=0.701120 0.371942 -1.415440 +frame14=0.769498 0.345503 -1.534702 +frame15=0.838737 0.316066 -1.653544 +frame18=1.050909 0.209564 -2.007028 +frame21=1.268232 0.075452 -2.354835 +frame25=1.550468 -0.246134 -2.782648 +frame31=1.953530 -0.810414 -3.367825 +frame37=2.326046 -1.782522 -3.899924 +frame39=2.425621 -2.123518 -4.039749 +frame40=2.470299 -2.296301 -4.102612 +frame43=2.657613 -2.848483 -4.488911 +frame47=2.833086 -3.657066 -4.931531 +frame49=2.899981 -4.048320 -5.168659 +frame50=2.924238 -4.251619 -5.280384 +frame51=2.942055 -4.459636 -5.387328 +frame52=2.905583 -4.715095 -5.483157 +frame55=2.733383 -5.484000 -5.722056 +frame56=2.655239 -5.739090 -5.785131 +frame58=2.468482 -6.243783 -5.885922 +frame59=2.310320 -6.363971 -5.947861 +frame60=2.147523 -6.480628 -6.004413 +frame61=1.980385 -6.593672 -6.055467 +frame62=1.838569 -6.283865 -6.111689 +frame63=1.766985 -6.156628 -6.133004 +frame65=1.621111 -5.902902 -6.165801 +frame68=1.396703 -5.525076 -6.190347 +frame73=1.245263 -5.236004 -6.183980 +frame74=1.245262 -5.236004 -6.183980 +frame75=1.245262 -5.236004 -6.183980 +frame76=1.245262 -5.236004 -6.183980 +frame78=1.245263 -5.236004 -6.183980 +frame80=1.284371 -5.310198 -6.187207 +frame81=1.303907 -5.347361 -6.188407 +frame82=1.323428 -5.384564 -6.189330 +frame83=1.342931 -5.421811 -6.189978 +frame85=1.381880 -5.496417 -6.190441 +frame86=1.381880 -5.496417 -6.190441 +frame87=1.381880 -5.496416 -6.190441 +frame89=1.381880 -5.496417 -6.190441 diff --git a/CONTENT/BT/ANIMS/JAKFL.ANI b/CONTENT/BT/ANIMS/JAKFL.ANI new file mode 100644 index 0000000..a610ea1 --- /dev/null +++ b/CONTENT/BT/ANIMS/JAKFL.ANI @@ -0,0 +1,535 @@ +[LAB_ONLY] + +[HEADER] +framecount=33 +framerate=30 +skeletonfile=lok.skl +jointcount=11 + +[Time] +frame1=0 +frame6=0.166667 +frame7=0.2 +frame8=0.233333 +frame9=0.266667 +frame10=0.3 +frame11=0.333333 +frame12=0.366667 +frame13=0.4 +frame14=0.433333 +frame18=0.566667 +frame20=0.633333 +frame24=0.766667 +frame26=0.833333 +frame33=1.06667 +frame47=1.53333 +frame51=1.66667 +frame54=1.76667 +frame56=1.83333 +frame63=2.06667 +frame70=2.3 +frame71=2.33333 +frame72=2.36667 +frame74=2.43333 +frame77=2.53333 +frame80=2.63333 +frame81=2.66667 +frame82=2.7 +frame83=2.73333 +frame84=2.76667 +frame85=2.8 +frame87=2.86667 +frame89=2.93333 + +[JointIndices] +jointhip=1 +jointtorso=2 +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 +jointlshoulder=6 +jointrshoulder=4 + +[JointType] +jointhip=hingex +jointtorso=hingey +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointlshoulder=hingex +jointrshoulder=hingex + +[frame1] +jointhip=0.000000 0.000000 0.000000 +jointtorso=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointlshoulder=0.000000 0.000000 0.000000 +jointrshoulder=0.000000 0.000000 0.000000 +[frame6] +jointhip=-0.156121 0.000000 0.000000 +jointtorso=0.000000 0.419355 0.000000 +jointlthigh=0.019813 0.000000 0.000000 +jointlknee=-0.136586 0.000000 0.000000 +jointlankle=0.019342 0.000000 0.000000 +jointrthigh=0.053143 0.000000 0.000000 +jointrknee=-0.208848 0.000000 0.000000 +jointrankle=0.200001 0.000000 0.000000 +jointlocal=-0.102964 0.116404 -0.037283 +jointlshoulder=-0.551523 0.000000 0.000000 +jointrshoulder=0.727987 0.000000 0.000000 +[frame7] +jointhip=-0.173506 0.000000 0.000000 +jointtorso=0.000000 0.432420 0.000000 +jointlthigh=0.059128 0.000000 0.000000 +jointlknee=-0.245588 0.000000 0.000000 +jointlankle=0.036669 0.000000 0.000000 +jointrthigh=0.089443 0.000000 0.000000 +jointrknee=-0.319856 0.000000 0.000000 +jointrankle=0.267468 0.000000 0.000000 +jointlocal=-0.123127 0.140221 -0.042871 +jointlshoulder=-0.661827 0.000000 0.000000 +jointrshoulder=0.873584 0.000000 0.000000 +[frame8] +jointhip=-0.190891 0.000000 0.000000 +jointtorso=0.000000 0.445484 0.000000 +jointlthigh=0.098442 0.000000 0.000000 +jointlknee=-0.354589 0.000000 0.000000 +jointlankle=0.053997 0.000000 0.000000 +jointrthigh=0.051394 0.000000 0.000000 +jointrknee=-0.256282 0.000000 0.000000 +jointrankle=0.259253 0.000000 0.000000 +jointlocal=-0.143290 0.164037 -0.048458 +jointlshoulder=-0.772132 0.000000 0.000000 +jointrshoulder=0.959833 0.000000 0.000000 +[frame9] +jointhip=-0.208276 0.000000 0.000000 +jointtorso=0.000000 0.458548 0.000000 +jointlthigh=0.137756 0.000000 0.000000 +jointlknee=-0.463591 0.000000 0.000000 +jointlankle=0.071324 0.000000 0.000000 +jointrthigh=0.013345 0.000000 0.000000 +jointrknee=-0.192707 0.000000 0.000000 +jointrankle=0.251038 0.000000 0.000000 +jointlocal=-0.163453 0.187853 -0.054046 +jointlshoulder=-0.822853 0.000000 0.000000 +jointrshoulder=1.046082 0.000000 0.000000 +[frame10] +jointhip=-0.225661 0.000000 0.000000 +jointtorso=0.000000 0.471612 0.000000 +jointlthigh=0.147616 0.000000 0.000000 +jointlknee=-0.513003 0.000000 0.000000 +jointlankle=0.057995 0.000000 0.000000 +jointrthigh=0.070175 0.000000 0.000000 +jointrknee=-0.379829 0.000000 0.000000 +jointrankle=0.346532 0.000000 0.000000 +jointlocal=-0.183569 0.212030 -0.057747 +jointlshoulder=-0.873574 0.000000 0.000000 +jointrshoulder=1.072722 0.000000 0.000000 +[frame11] +jointhip=-0.243047 0.000000 0.000000 +jointtorso=0.000000 0.484676 0.000000 +jointlthigh=0.157477 0.000000 0.000000 +jointlknee=-0.562416 0.000000 0.000000 +jointlankle=0.044666 0.000000 0.000000 +jointrthigh=0.098213 0.000000 0.000000 +jointrknee=-0.485732 0.000000 0.000000 +jointrankle=0.372894 0.000000 0.000000 +jointlocal=-0.203685 0.236206 -0.061448 +jointlshoulder=-0.843985 0.000000 0.000000 +jointrshoulder=1.099362 0.000000 0.000000 +[frame12] +jointhip=-0.260432 0.000000 0.000000 +jointtorso=0.000000 0.497740 0.000000 +jointlthigh=0.167337 0.000000 0.000000 +jointlknee=-0.611829 0.000000 0.000000 +jointlankle=0.031337 0.000000 0.000000 +jointrthigh=0.126251 0.000000 0.000000 +jointrknee=-0.591635 0.000000 0.000000 +jointrankle=0.399256 0.000000 0.000000 +jointlocal=-0.223801 0.260382 -0.065149 +jointlshoulder=-0.814396 0.000000 0.000000 +jointrshoulder=1.092565 0.000000 0.000000 +[frame13] +jointhip=-0.277817 0.000000 0.000000 +jointtorso=0.000000 0.510804 0.000000 +jointlthigh=0.161268 0.000000 0.000000 +jointlknee=-0.616401 0.000000 0.000000 +jointlankle=0.009085 0.000000 0.000000 +jointrthigh=0.154289 0.000000 0.000000 +jointrknee=-0.697538 0.000000 0.000000 +jointrankle=0.425619 0.000000 0.000000 +jointlocal=-0.243917 0.284558 -0.068851 +jointlshoulder=-0.784806 0.000000 0.000000 +jointrshoulder=1.085768 0.000000 0.000000 +[frame14] +jointhip=-0.295202 0.000000 0.000000 +jointtorso=0.000000 0.523868 0.000000 +jointlthigh=0.155199 0.000000 0.000000 +jointlknee=-0.620972 0.000000 0.000000 +jointlankle=-0.013167 0.000000 0.000000 +jointrthigh=0.182328 0.000000 0.000000 +jointrknee=-0.803441 0.000000 0.000000 +jointrankle=0.451981 0.000000 0.000000 +jointlocal=-0.264033 0.308735 -0.072552 +jointlshoulder=-0.734257 0.000000 0.000000 +jointrshoulder=1.072744 0.000000 0.000000 +[frame18] +jointhip=-0.364743 0.000000 0.000000 +jointtorso=0.000000 0.576124 0.000000 +jointlthigh=0.124649 0.000000 0.000000 +jointlknee=-0.598697 0.000000 0.000000 +jointlankle=-0.136792 0.000000 0.000000 +jointrthigh=0.185700 0.000000 0.000000 +jointrknee=-0.962287 0.000000 0.000000 +jointrankle=0.452679 0.000000 0.000000 +jointlocal=-0.346055 0.406360 -0.078402 +jointlshoulder=-0.532058 0.000000 0.000000 +jointrshoulder=1.020648 0.000000 0.000000 +[frame20] +jointhip=-0.399513 0.000000 0.000000 +jointtorso=0.000000 0.602252 0.000000 +jointlthigh=0.138376 0.000000 0.000000 +jointlknee=-0.601166 0.000000 0.000000 +jointlankle=-0.197572 0.000000 0.000000 +jointrthigh=0.170788 0.000000 0.000000 +jointrknee=-0.996485 0.000000 0.000000 +jointrankle=0.428214 0.000000 0.000000 +jointlocal=-0.393885 0.454427 -0.068891 +jointlshoulder=-0.430958 0.000000 0.000000 +jointrshoulder=0.994600 0.000000 0.000000 +[frame24] +jointhip=-0.447485 0.000000 0.000000 +jointtorso=0.000000 0.629970 0.000000 +jointlthigh=0.165829 0.000000 0.000000 +jointlknee=-0.606106 0.000000 0.000000 +jointlankle=-0.319134 0.000000 0.000000 +jointrthigh=0.140966 0.000000 0.000000 +jointrknee=-1.064880 0.000000 0.000000 +jointrankle=0.379285 0.000000 0.000000 +jointlocal=-0.489546 0.550562 -0.049868 +jointlshoulder=-0.228760 0.000000 0.000000 +jointrshoulder=0.942504 0.000000 0.000000 +[frame26] +jointhip=-0.471470 0.000000 0.000000 +jointtorso=0.000000 0.643829 0.000000 +jointlthigh=0.179556 0.000000 0.000000 +jointlknee=-0.608575 0.000000 0.000000 +jointlankle=-0.379915 0.000000 0.000000 +jointrthigh=0.126055 0.000000 0.000000 +jointrknee=-1.099077 0.000000 0.000000 +jointrankle=0.354821 0.000000 0.000000 +jointlocal=-0.537376 0.598629 -0.040357 +jointlshoulder=-0.127660 0.000000 0.000000 +jointrshoulder=0.916456 0.000000 0.000000 +[frame33] +jointhip=-0.555421 0.000000 0.000000 +jointtorso=0.000000 0.692335 0.000000 +jointlthigh=0.257831 0.000000 0.000000 +jointlknee=-0.670405 0.000000 0.000000 +jointlankle=-0.478515 0.000000 0.000000 +jointrthigh=0.073866 0.000000 0.000000 +jointrknee=-1.218769 0.000000 0.000000 +jointrankle=0.269194 0.000000 0.000000 +jointlocal=-0.704781 0.766864 -0.007067 +jointlshoulder=0.226188 0.000000 0.000000 +jointrshoulder=0.825287 0.000000 0.000000 +[frame47] +jointhip=-0.723322 0.000000 0.000000 +jointtorso=0.000000 0.789348 0.000000 +jointlthigh=0.325500 0.000000 0.000000 +jointlknee=-0.858049 0.000000 0.000000 +jointlankle=-0.472792 0.000000 0.000000 +jointrthigh=-0.532001 0.000000 0.000000 +jointrknee=-0.507036 0.000000 0.000000 +jointrankle=-0.589719 0.000000 0.000000 +jointlocal=-1.365476 1.041799 0.406550 +jointlshoulder=0.933884 0.000000 0.000000 +jointrshoulder=0.642951 0.000000 0.000000 +[frame51] +jointhip=-0.613347 0.000000 0.000000 +jointtorso=0.000000 1.210988 0.000000 +jointlthigh=0.412893 0.000000 0.000000 +jointlknee=-0.740709 0.000000 0.000000 +jointlankle=-0.416984 0.000000 0.000000 +jointrthigh=-0.299992 0.000000 0.000000 +jointrknee=-0.528760 0.000000 0.000000 +jointrankle=-0.512589 0.000000 0.000000 +jointlocal=-1.578408 1.013781 0.340265 +jointlshoulder=1.238402 0.000000 0.000000 +jointrshoulder=1.001341 0.000000 0.000000 +[frame54] +jointhip=-0.396676 0.000000 0.000000 +jointtorso=0.000000 1.761285 0.000000 +jointlthigh=0.527670 0.000000 0.000000 +jointlknee=-0.837385 0.000000 0.000000 +jointlankle=-0.344979 0.000000 0.000000 +jointrthigh=-0.301781 0.000000 0.000000 +jointrknee=-0.324019 0.000000 0.000000 +jointrankle=-0.500150 0.000000 0.000000 +jointlocal=-1.705540 0.994446 0.319204 +jointlshoulder=1.466790 0.000000 0.000000 +jointrshoulder=1.270132 0.000000 0.000000 +[frame56] +jointhip=-0.252228 0.000000 0.000000 +jointtorso=0.000000 2.128150 0.000000 +jointlthigh=0.604188 0.000000 0.000000 +jointlknee=-0.901836 0.000000 0.000000 +jointlankle=-0.296976 0.000000 0.000000 +jointrthigh=-0.304335 0.000000 0.000000 +jointrknee=-0.348778 0.000000 0.000000 +jointrankle=-0.491858 0.000000 0.000000 +jointlocal=-1.790294 0.981556 0.305164 +jointlshoulder=1.619049 0.000000 0.000000 +jointrshoulder=1.449327 0.000000 0.000000 +[frame63] +jointhip=0.273137 0.000000 0.000000 +jointtorso=0.000000 2.602007 0.000000 +jointlthigh=0.527999 0.000000 0.000000 +jointlknee=-0.708832 0.000000 0.000000 +jointlankle=-0.282888 0.000000 0.000000 +jointrthigh=-0.672619 0.000000 0.000000 +jointrknee=-0.207288 0.000000 0.000000 +jointrankle=0.056304 0.000000 0.000000 +jointlocal=-1.769342 0.804997 0.275271 +jointlshoulder=2.564412 0.000000 0.000000 +jointrshoulder=1.323054 0.000000 0.000000 +[frame70] +jointhip=0.013438 0.000000 0.000000 +jointtorso=0.000000 2.368708 0.000000 +jointlthigh=0.481055 0.000000 0.000000 +jointlknee=-0.845338 0.000000 0.000000 +jointlankle=0.030050 0.000000 0.000000 +jointrthigh=-0.491181 0.000000 0.000000 +jointrknee=-0.274882 0.000000 0.000000 +jointrankle=0.246346 0.000000 0.000000 +jointlocal=-1.610497 0.780185 0.204298 +jointlshoulder=2.203565 0.000000 0.000000 +jointrshoulder=0.550356 0.000000 0.000000 +[frame71] +jointhip=0.017656 0.000000 0.000000 +jointtorso=0.000000 2.368708 0.000000 +jointlthigh=0.475097 0.000000 0.000000 +jointlknee=-0.831982 0.000000 0.000000 +jointlankle=0.013913 0.000000 0.000000 +jointrthigh=-0.476802 0.000000 0.000000 +jointrknee=-0.247148 0.000000 0.000000 +jointrankle=0.243705 0.000000 0.000000 +jointlocal=-1.616746 0.765959 0.202257 +jointlshoulder=2.138203 0.000000 0.000000 +jointrshoulder=0.373000 0.000000 0.000000 +[frame72] +jointhip=0.021875 0.000000 0.000000 +jointtorso=0.000000 2.368708 0.000000 +jointlthigh=0.469139 0.000000 0.000000 +jointlknee=-0.818625 0.000000 0.000000 +jointlankle=-0.002224 0.000000 0.000000 +jointrthigh=-0.462422 0.000000 0.000000 +jointrknee=-0.219413 0.000000 0.000000 +jointrankle=0.241063 0.000000 0.000000 +jointlocal=-1.622996 0.751734 0.200216 +jointlshoulder=2.120785 0.000000 0.000000 +jointrshoulder=0.195644 0.000000 0.000000 +[frame74] +jointhip=0.030312 0.000000 0.000000 +jointtorso=0.000000 2.368708 0.000000 +jointlthigh=0.457223 0.000000 0.000000 +jointlknee=-0.791913 0.000000 0.000000 +jointlankle=-0.034498 0.000000 0.000000 +jointrthigh=-0.433664 0.000000 0.000000 +jointrknee=-0.163943 0.000000 0.000000 +jointrankle=0.235780 0.000000 0.000000 +jointlocal=-1.635495 0.723283 0.196133 +jointlshoulder=2.293393 0.000000 0.000000 +jointrshoulder=-0.159068 0.000000 0.000000 +[frame77] +jointhip=0.156365 0.000000 0.000000 +jointtorso=0.000000 2.461752 0.000000 +jointlthigh=0.439350 0.000000 0.000000 +jointlknee=-0.751844 0.000000 0.000000 +jointlankle=-0.082909 0.000000 0.000000 +jointrthigh=-0.440699 0.000000 0.000000 +jointrknee=-0.153432 0.000000 0.000000 +jointrankle=0.319968 0.000000 0.000000 +jointlocal=-1.654243 0.680607 0.190009 +jointlshoulder=2.552306 0.000000 0.000000 +jointrshoulder=-0.691136 0.000000 0.000000 +[frame80] +jointhip=0.163187 0.000000 0.000000 +jointtorso=0.000000 2.500852 0.000000 +jointlthigh=0.445833 0.000000 0.000000 +jointlknee=-0.749700 0.000000 0.000000 +jointlankle=-0.073642 0.000000 0.000000 +jointrthigh=-0.424799 0.000000 0.000000 +jointrknee=-0.204334 0.000000 0.000000 +jointrankle=0.236202 0.000000 0.000000 +jointlocal=-1.628284 0.686502 0.169406 +jointlshoulder=2.811219 0.000000 0.000000 +jointrshoulder=-0.641885 0.000000 0.000000 +[frame81] +jointhip=0.165461 0.000000 0.000000 +jointtorso=0.000000 2.513885 0.000000 +jointlthigh=0.447995 0.000000 0.000000 +jointlknee=-0.748985 0.000000 0.000000 +jointlankle=-0.070553 0.000000 0.000000 +jointrthigh=-0.419499 0.000000 0.000000 +jointrknee=-0.221301 0.000000 0.000000 +jointrankle=0.208281 0.000000 0.000000 +jointlocal=-1.619632 0.688468 0.162538 +jointlshoulder=2.798601 0.000000 0.000000 +jointrshoulder=-0.625468 0.000000 0.000000 +[frame82] +jointhip=0.168039 0.000000 0.000000 +jointtorso=0.000000 2.507309 0.000000 +jointlthigh=0.456260 0.000000 0.000000 +jointlknee=-0.776792 0.000000 0.000000 +jointlankle=-0.059407 0.000000 0.000000 +jointrthigh=-0.430747 0.000000 0.000000 +jointrknee=-0.188796 0.000000 0.000000 +jointrankle=0.218350 0.000000 0.000000 +jointlocal=-1.624128 0.687622 0.160368 +jointlshoulder=2.765265 0.000000 0.000000 +jointrshoulder=-0.620985 0.000000 0.000000 +[frame83] +jointhip=0.170618 0.000000 0.000000 +jointtorso=0.000000 2.500734 0.000000 +jointlthigh=0.464525 0.000000 0.000000 +jointlknee=-0.804598 0.000000 0.000000 +jointlankle=-0.048261 0.000000 0.000000 +jointrthigh=-0.441995 0.000000 0.000000 +jointrknee=-0.156291 0.000000 0.000000 +jointrankle=0.228420 0.000000 0.000000 +jointlocal=-1.628624 0.686776 0.158198 +jointlshoulder=2.750866 0.000000 0.000000 +jointrshoulder=-0.615365 0.000000 0.000000 +[frame84] +jointhip=0.173196 0.000000 0.000000 +jointtorso=0.000000 2.494158 0.000000 +jointlthigh=0.472790 0.000000 0.000000 +jointlknee=-0.832405 0.000000 0.000000 +jointlankle=-0.037115 0.000000 0.000000 +jointrthigh=-0.453243 0.000000 0.000000 +jointrknee=-0.123786 0.000000 0.000000 +jointrankle=0.238490 0.000000 0.000000 +jointlocal=-1.633121 0.685929 0.156028 +jointlshoulder=2.754448 0.000000 0.000000 +jointrshoulder=-0.624723 0.000000 0.000000 +[frame85] +jointhip=0.175774 0.000000 0.000000 +jointtorso=0.000000 2.487583 0.000000 +jointlthigh=0.481055 0.000000 0.000000 +jointlknee=-0.860212 0.000000 0.000000 +jointlankle=-0.025970 0.000000 0.000000 +jointrthigh=-0.464491 0.000000 0.000000 +jointrknee=-0.091281 0.000000 0.000000 +jointrankle=0.248559 0.000000 0.000000 +jointlocal=-1.637617 0.685083 0.153858 +jointlshoulder=2.758030 0.000000 0.000000 +jointrshoulder=-0.662199 0.000000 0.000000 +[frame87] +jointhip=0.171903 0.000000 0.000000 +jointtorso=0.000000 2.472739 0.000000 +jointlthigh=0.483529 0.000000 0.000000 +jointlknee=-0.888330 0.000000 0.000000 +jointlankle=0.072744 0.000000 0.000000 +jointrthigh=-0.453944 0.000000 0.000000 +jointrknee=-0.107784 0.000000 0.000000 +jointrankle=0.311045 0.000000 0.000000 +jointlocal=-1.638049 0.685068 0.151539 +jointlshoulder=2.765195 0.000000 0.000000 +jointrshoulder=-0.737150 0.000000 0.000000 +[frame89] +jointhip=0.168032 0.000000 0.000000 +jointtorso=0.000000 2.457895 0.000000 +jointlthigh=0.486003 0.000000 0.000000 +jointlknee=-0.916448 0.000000 0.000000 +jointlankle=0.171457 0.000000 0.000000 +jointrthigh=-0.443397 0.000000 0.000000 +jointrknee=-0.124287 0.000000 0.000000 +jointrankle=0.373530 0.000000 0.000000 +jointlocal=-1.638481 0.685052 0.149221 +jointlshoulder=2.769314 0.000000 0.000000 +jointrshoulder=-0.701600 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame6=0.000000 -5.350000 0.000000 +frame7=0.000000 -5.349999 0.000000 +frame8=0.000000 -5.349999 0.000000 +frame9=0.000000 -5.350000 0.000000 +frame10=0.000000 -5.350000 0.000000 +frame11=0.000000 -5.350000 0.000000 +frame12=0.000000 -5.350000 0.000000 +frame13=0.000000 -5.350000 0.000000 +frame14=0.000000 -5.350000 0.000000 +frame18=0.000000 -5.350000 0.000000 +frame20=0.000000 -5.350000 0.000000 +frame24=0.000000 -5.350000 0.000000 +frame26=0.000000 -5.350000 0.000000 +frame33=0.000000 -5.350000 0.000000 +frame47=0.000000 -5.350000 0.000000 +frame51=0.000000 -5.350000 0.000000 +frame54=0.000000 -5.350000 0.000000 +frame56=0.000000 -5.350000 0.000000 +frame63=0.000000 -5.350000 0.000000 +frame70=0.000000 -5.350000 0.000000 +frame71=0.000000 -5.350000 0.000000 +frame72=0.000000 -5.349999 0.000000 +frame74=0.000000 -5.350000 0.000000 +frame77=0.000000 -5.350000 0.000000 +frame80=0.000000 -5.344855 0.000000 +frame81=0.000000 -5.343140 0.000000 +frame82=0.000000 -5.341645 0.000000 +frame83=0.000000 -5.340150 0.000000 +frame84=0.000000 -5.338655 0.000000 +frame85=0.000000 -5.337160 0.000000 +frame87=0.000000 -5.333800 0.000000 +frame89=0.000000 -5.330440 0.000000 + +[KeyJointPos] +frame1=0.000000 0.000000 0.000000 +frame6=0.161654 0.183740 -0.656231 +frame7=0.164286 0.213101 -0.787073 +frame8=0.160623 0.240124 -0.917988 +frame9=0.150581 0.264869 -1.048677 +frame10=0.121091 0.267163 -1.174715 +frame11=0.085168 0.267368 -1.299111 +frame12=0.042842 0.265535 -1.421578 +frame13=-0.005843 0.261714 -1.541827 +frame14=-0.060833 0.255956 -1.659575 +frame18=-0.405860 0.208105 -2.108249 +frame20=-0.711869 0.146092 -2.349166 +frame24=-1.392671 -0.038279 -2.766877 +frame26=-1.750667 -0.202045 -2.919681 +frame33=-3.066586 -0.927576 -3.221067 +frame47=-5.916487 -7.223498 -3.411248 +frame51=-5.803800 -7.533228 -3.497552 +frame54=-5.632661 -7.849090 -3.640559 +frame56=-5.509458 -8.058140 -3.727859 +frame63=-4.552505 -8.573965 -4.620807 +frame70=-4.928674 -7.186153 -4.735398 +frame71=-4.855330 -7.195770 -4.808609 +frame72=-4.780839 -7.205305 -4.880738 +frame74=-4.628494 -7.224187 -5.021662 +frame77=-4.391856 -7.252216 -5.224360 +frame80=-4.486382 -6.997121 -5.188638 +frame81=-4.515237 -6.911189 -5.175935 +frame82=-4.505493 -6.930315 -5.181793 +frame83=-4.495756 -6.949470 -5.187546 +frame84=-4.486026 -6.968653 -5.193191 +frame85=-4.476303 -6.987864 -5.198731 +frame87=-4.477335 -6.980360 -5.198962 +frame89=-4.478356 -6.972854 -5.199191 diff --git a/CONTENT/BT/ANIMS/JAKFR.ANI b/CONTENT/BT/ANIMS/JAKFR.ANI new file mode 100644 index 0000000..d46ba0d --- /dev/null +++ b/CONTENT/BT/ANIMS/JAKFR.ANI @@ -0,0 +1,700 @@ +[LAB_ONLY] + +[HEADER] +framecount=44 +framerate=30 +skeletonfile=lok.skl +jointcount=11 + +[Time] +frame1=0 +frame5=0.133333 +frame7=0.2 +frame8=0.233333 +frame9=0.266667 +frame10=0.3 +frame13=0.4 +frame14=0.433333 +frame20=0.633333 +frame22=0.7 +frame30=0.966667 +frame32=1.03333 +frame33=1.06667 +frame38=1.23333 +frame43=1.4 +frame48=1.56667 +frame50=1.63333 +frame51=1.66667 +frame53=1.73333 +frame54=1.76667 +frame56=1.83333 +frame57=1.86667 +frame58=1.9 +frame59=1.93333 +frame60=1.96667 +frame61=2 +frame62=2.03333 +frame63=2.06667 +frame66=2.16667 +frame67=2.2 +frame68=2.23333 +frame69=2.26667 +frame70=2.3 +frame71=2.33333 +frame72=2.36667 +frame74=2.43333 +frame76=2.5 +frame78=2.56667 +frame79=2.6 +frame80=2.63333 +frame82=2.7 +frame84=2.76667 +frame86=2.83333 +frame88=2.9 + +[JointIndices] +jointhip=1 +jointtorso=2 +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 +jointlshoulder=6 +jointrshoulder=4 + +[JointType] +jointhip=hingex +jointtorso=hingey +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointlshoulder=hingex +jointrshoulder=hingex + +[frame1] +jointhip=0.000000 0.000000 0.000000 +jointtorso=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointlshoulder=0.000000 0.000000 0.000000 +jointrshoulder=0.000000 0.000000 0.000000 +[frame5] +jointhip=0.213332 0.000000 0.000000 +jointtorso=0.000000 0.241472 0.000000 +jointlthigh=0.155629 0.000000 0.000000 +jointlknee=-0.145030 0.000000 0.000000 +jointlankle=-0.191302 0.000000 0.000000 +jointrthigh=0.005660 0.000000 0.000000 +jointrknee=-0.013729 0.000000 0.000000 +jointrankle=-0.025023 0.000000 0.000000 +jointlocal=0.045966 0.069249 -0.047174 +jointlshoulder=-0.366392 0.000000 0.000000 +jointrshoulder=-0.353687 0.000000 0.000000 +[frame7] +jointhip=0.268037 0.000000 0.000000 +jointtorso=0.000000 0.332185 0.000000 +jointlthigh=0.216284 0.000000 0.000000 +jointlknee=-0.216711 0.000000 0.000000 +jointlankle=-0.159674 0.000000 0.000000 +jointrthigh=0.012245 0.000000 0.000000 +jointrknee=-0.047452 0.000000 0.000000 +jointrankle=-0.019716 0.000000 0.000000 +jointlocal=0.091626 0.085761 -0.086699 +jointlshoulder=-0.485384 0.000000 0.000000 +jointrshoulder=-0.530531 0.000000 0.000000 +[frame8] +jointhip=0.295390 0.000000 0.000000 +jointtorso=0.000000 0.377542 0.000000 +jointlthigh=0.246611 0.000000 0.000000 +jointlknee=-0.252552 0.000000 0.000000 +jointlankle=-0.143859 0.000000 0.000000 +jointrthigh=0.015537 0.000000 0.000000 +jointrknee=-0.064313 0.000000 0.000000 +jointrankle=-0.017062 0.000000 0.000000 +jointlocal=0.114456 0.094017 -0.106462 +jointlshoulder=-0.544880 0.000000 0.000000 +jointrshoulder=-0.584871 0.000000 0.000000 +[frame9] +jointhip=0.322743 0.000000 0.000000 +jointtorso=0.000000 0.422899 0.000000 +jointlthigh=0.276938 0.000000 0.000000 +jointlknee=-0.288392 0.000000 0.000000 +jointlankle=-0.128045 0.000000 0.000000 +jointrthigh=0.018829 0.000000 0.000000 +jointrknee=-0.081175 0.000000 0.000000 +jointrankle=-0.014408 0.000000 0.000000 +jointlocal=0.137285 0.102274 -0.126224 +jointlshoulder=-0.551262 0.000000 0.000000 +jointrshoulder=-0.639211 0.000000 0.000000 +[frame10] +jointhip=0.332452 0.000000 0.000000 +jointtorso=0.000000 0.444658 0.000000 +jointlthigh=0.307266 0.000000 0.000000 +jointlknee=-0.324233 0.000000 0.000000 +jointlankle=-0.112231 0.000000 0.000000 +jointrthigh=0.022121 0.000000 0.000000 +jointrknee=-0.098036 0.000000 0.000000 +jointrankle=-0.011754 0.000000 0.000000 +jointlocal=0.160115 0.110530 -0.145987 +jointlshoulder=-0.557645 0.000000 0.000000 +jointrshoulder=-0.693551 0.000000 0.000000 +[frame13] +jointhip=0.361580 0.000000 0.000000 +jointtorso=0.000000 0.509936 0.000000 +jointlthigh=0.398247 0.000000 0.000000 +jointlknee=-0.431754 0.000000 0.000000 +jointlankle=-0.064788 0.000000 0.000000 +jointrthigh=0.031998 0.000000 0.000000 +jointrknee=-0.148620 0.000000 0.000000 +jointrankle=-0.003793 0.000000 0.000000 +jointlocal=0.228605 0.135298 -0.205275 +jointlshoulder=-0.571521 0.000000 0.000000 +jointrshoulder=-0.856570 0.000000 0.000000 +[frame14] +jointhip=0.371289 0.000000 0.000000 +jointtorso=0.000000 0.531695 0.000000 +jointlthigh=0.414463 0.000000 0.000000 +jointlknee=-0.426317 0.000000 0.000000 +jointlankle=-0.073786 0.000000 0.000000 +jointrthigh=0.035290 0.000000 0.000000 +jointrknee=-0.165481 0.000000 0.000000 +jointrankle=-0.001139 0.000000 0.000000 +jointlocal=0.251435 0.143554 -0.225038 +jointlshoulder=-0.576146 0.000000 0.000000 +jointrshoulder=-0.910910 0.000000 0.000000 +[frame20] +jointhip=0.429545 0.000000 0.000000 +jointtorso=0.000000 0.662251 0.000000 +jointlthigh=0.511753 0.000000 0.000000 +jointlknee=-0.393692 0.000000 0.000000 +jointlankle=-0.127768 0.000000 0.000000 +jointrthigh=0.055043 0.000000 0.000000 +jointrknee=-0.266650 0.000000 0.000000 +jointrankle=0.014783 0.000000 0.000000 +jointlocal=0.388414 0.193091 -0.343613 +jointlshoulder=-0.603898 0.000000 0.000000 +jointrshoulder=-1.108186 0.000000 0.000000 +[frame22] +jointhip=0.440199 0.000000 0.000000 +jointtorso=0.000000 0.682982 0.000000 +jointlthigh=0.568765 0.000000 0.000000 +jointlknee=-0.400301 0.000000 0.000000 +jointlankle=-0.107410 0.000000 0.000000 +jointrthigh=0.070765 0.000000 0.000000 +jointrknee=-0.272821 0.000000 0.000000 +jointrankle=0.028277 0.000000 0.000000 +jointlocal=0.435143 0.204797 -0.378326 +jointlshoulder=-0.613148 0.000000 0.000000 +jointrshoulder=-1.118800 0.000000 0.000000 +[frame30] +jointhip=0.482814 0.000000 0.000000 +jointtorso=0.000000 0.765904 0.000000 +jointlthigh=0.796811 0.000000 0.000000 +jointlknee=-0.426735 0.000000 0.000000 +jointlankle=-0.025977 0.000000 0.000000 +jointrthigh=0.133652 0.000000 0.000000 +jointrknee=-0.297504 0.000000 0.000000 +jointrankle=0.082251 0.000000 0.000000 +jointlocal=0.622058 0.251620 -0.517179 +jointlshoulder=-0.622202 0.000000 0.000000 +jointrshoulder=-1.161254 0.000000 0.000000 +[frame32] +jointhip=0.493468 0.000000 0.000000 +jointtorso=0.000000 0.786635 0.000000 +jointlthigh=0.808013 0.000000 0.000000 +jointlknee=-0.402129 0.000000 0.000000 +jointlankle=-0.043257 0.000000 0.000000 +jointrthigh=0.149374 0.000000 0.000000 +jointrknee=-0.303675 0.000000 0.000000 +jointrankle=0.095744 0.000000 0.000000 +jointlocal=0.668786 0.263325 -0.551892 +jointlshoulder=-0.624466 0.000000 0.000000 +jointrshoulder=-1.171868 0.000000 0.000000 +[frame33] +jointhip=0.498795 0.000000 0.000000 +jointtorso=0.000000 0.797000 0.000000 +jointlthigh=0.813614 0.000000 0.000000 +jointlknee=-0.389826 0.000000 0.000000 +jointlankle=-0.051897 0.000000 0.000000 +jointrthigh=0.157235 0.000000 0.000000 +jointrknee=-0.306760 0.000000 0.000000 +jointrankle=0.102491 0.000000 0.000000 +jointlocal=0.692151 0.269178 -0.569248 +jointlshoulder=-0.625598 0.000000 0.000000 +jointrshoulder=-1.163960 0.000000 0.000000 +[frame38] +jointhip=0.525430 0.000000 0.000000 +jointtorso=0.000000 0.848827 0.000000 +jointlthigh=0.841619 0.000000 0.000000 +jointlknee=-0.328310 0.000000 0.000000 +jointlankle=-0.095099 0.000000 0.000000 +jointrthigh=0.196540 0.000000 0.000000 +jointrknee=-0.322188 0.000000 0.000000 +jointrankle=0.136225 0.000000 0.000000 +jointlocal=0.808972 0.298443 -0.656031 +jointlshoulder=-0.596774 0.000000 0.000000 +jointrshoulder=-1.124421 0.000000 0.000000 +[frame43] +jointhip=0.552178 0.000000 0.000000 +jointtorso=0.000000 0.862917 0.000000 +jointlthigh=0.824384 0.000000 0.000000 +jointlknee=-0.337681 0.000000 0.000000 +jointlankle=-0.034543 0.000000 0.000000 +jointrthigh=0.243598 0.000000 0.000000 +jointrknee=-0.312801 0.000000 0.000000 +jointrankle=0.287603 0.000000 0.000000 +jointlocal=0.924587 0.299422 -0.726932 +jointlshoulder=-0.567951 0.000000 0.000000 +jointrshoulder=-1.084881 0.000000 0.000000 +[frame48] +jointhip=0.578927 0.000000 0.000000 +jointtorso=0.000000 0.877007 0.000000 +jointlthigh=0.807148 0.000000 0.000000 +jointlknee=-0.347051 0.000000 0.000000 +jointlankle=0.026012 0.000000 0.000000 +jointrthigh=0.290657 0.000000 0.000000 +jointrknee=-0.303414 0.000000 0.000000 +jointrankle=0.438981 0.000000 0.000000 +jointlocal=1.040202 0.300402 -0.797833 +jointlshoulder=-0.501255 0.000000 0.000000 +jointrshoulder=-0.939282 0.000000 0.000000 +[frame50] +jointhip=0.589626 0.000000 0.000000 +jointtorso=0.000000 0.882643 0.000000 +jointlthigh=0.800254 0.000000 0.000000 +jointlknee=-0.350799 0.000000 0.000000 +jointlankle=0.050234 0.000000 0.000000 +jointrthigh=0.309480 0.000000 0.000000 +jointrknee=-0.299659 0.000000 0.000000 +jointrankle=0.499532 0.000000 0.000000 +jointlocal=1.086448 0.300794 -0.826193 +jointlshoulder=-0.271639 0.000000 0.000000 +jointrshoulder=-0.816054 0.000000 0.000000 +[frame51] +jointhip=0.589626 0.000000 0.000000 +jointtorso=0.000000 0.885461 0.000000 +jointlthigh=0.788095 0.000000 0.000000 +jointlknee=-0.344217 0.000000 0.000000 +jointlankle=0.074140 0.000000 0.000000 +jointrthigh=0.313714 0.000000 0.000000 +jointrknee=-0.271307 0.000000 0.000000 +jointrankle=0.488293 0.000000 0.000000 +jointlocal=1.108861 0.284412 -0.844388 +jointlshoulder=-0.156830 0.000000 0.000000 +jointrshoulder=-0.754440 0.000000 0.000000 +[frame53] +jointhip=0.589626 0.000000 0.000000 +jointtorso=0.000000 0.891097 0.000000 +jointlthigh=0.763777 0.000000 0.000000 +jointlknee=-0.331052 0.000000 0.000000 +jointlankle=0.121953 0.000000 0.000000 +jointrthigh=0.322183 0.000000 0.000000 +jointrknee=-0.214602 0.000000 0.000000 +jointrankle=0.465813 0.000000 0.000000 +jointlocal=1.153687 0.251649 -0.880777 +jointlshoulder=0.124976 0.000000 0.000000 +jointrshoulder=-0.631212 0.000000 0.000000 +[frame54] +jointhip=0.551255 0.000000 0.000000 +jointtorso=0.000000 0.839479 0.000000 +jointlthigh=0.726488 0.000000 0.000000 +jointlknee=-0.291772 0.000000 0.000000 +jointlankle=0.122914 0.000000 0.000000 +jointrthigh=0.316126 0.000000 0.000000 +jointrknee=-0.181385 0.000000 0.000000 +jointrankle=0.452758 0.000000 0.000000 +jointlocal=1.191557 0.251494 -0.897656 +jointlshoulder=0.246390 0.000000 0.000000 +jointrshoulder=-0.563635 0.000000 0.000000 +[frame56] +jointhip=0.474513 0.000000 0.000000 +jointtorso=0.000000 0.627875 0.000000 +jointlthigh=0.651911 0.000000 0.000000 +jointlknee=-0.213213 0.000000 0.000000 +jointlankle=0.124835 0.000000 0.000000 +jointrthigh=0.304012 0.000000 0.000000 +jointrknee=-0.114952 0.000000 0.000000 +jointrankle=0.426647 0.000000 0.000000 +jointlocal=1.267297 0.251185 -0.931413 +jointlshoulder=0.489219 0.000000 0.000000 +jointrshoulder=-0.428480 0.000000 0.000000 +[frame57] +jointhip=0.402142 0.000000 0.000000 +jointtorso=0.000000 0.522072 0.000000 +jointlthigh=0.614622 0.000000 0.000000 +jointlknee=-0.173933 0.000000 0.000000 +jointlankle=0.125795 0.000000 0.000000 +jointrthigh=0.297955 0.000000 0.000000 +jointrknee=-0.081735 0.000000 0.000000 +jointrankle=0.413592 0.000000 0.000000 +jointlocal=1.305167 0.251030 -0.948292 +jointlshoulder=0.610633 0.000000 0.000000 +jointrshoulder=-0.360903 0.000000 0.000000 +[frame58] +jointhip=0.329771 0.000000 0.000000 +jointtorso=0.000000 0.416270 0.000000 +jointlthigh=0.577334 0.000000 0.000000 +jointlknee=-0.134653 0.000000 0.000000 +jointlankle=0.126755 0.000000 0.000000 +jointrthigh=0.291898 0.000000 0.000000 +jointrknee=-0.048518 0.000000 0.000000 +jointrankle=0.400537 0.000000 0.000000 +jointlocal=1.343037 0.250875 -0.965171 +jointlshoulder=0.582204 0.000000 0.000000 +jointrshoulder=-0.293326 0.000000 0.000000 +[frame59] +jointhip=0.257400 0.000000 0.000000 +jointtorso=0.000000 0.310468 0.000000 +jointlthigh=0.540045 0.000000 0.000000 +jointlknee=-0.095374 0.000000 0.000000 +jointlankle=0.127716 0.000000 0.000000 +jointrthigh=0.264031 0.000000 0.000000 +jointrknee=-0.009857 0.000000 0.000000 +jointrankle=0.367101 0.000000 0.000000 +jointlocal=1.380907 0.250721 -0.982049 +jointlshoulder=0.553776 0.000000 0.000000 +jointrshoulder=-0.225749 0.000000 0.000000 +[frame60] +jointhip=0.185029 0.000000 0.000000 +jointtorso=0.000000 0.204666 0.000000 +jointlthigh=0.511973 0.000000 0.000000 +jointlknee=-0.144020 0.000000 0.000000 +jointlankle=0.171725 0.000000 0.000000 +jointrthigh=0.236164 0.000000 0.000000 +jointrknee=0.028803 0.000000 0.000000 +jointrankle=0.333664 0.000000 0.000000 +jointlocal=1.418777 0.250566 -0.998928 +jointlshoulder=0.525347 0.000000 0.000000 +jointrshoulder=-0.158171 0.000000 0.000000 +[frame61] +jointhip=0.134049 0.000000 0.000000 +jointtorso=0.000000 0.079117 0.000000 +jointlthigh=0.483901 0.000000 0.000000 +jointlknee=-0.192667 0.000000 0.000000 +jointlankle=0.215735 0.000000 0.000000 +jointrthigh=0.208297 0.000000 0.000000 +jointrknee=0.067463 0.000000 0.000000 +jointrankle=0.300228 0.000000 0.000000 +jointlocal=1.456647 0.250411 -1.015807 +jointlshoulder=0.496918 0.000000 0.000000 +jointrshoulder=-0.090594 0.000000 0.000000 +[frame62] +jointhip=0.083069 0.000000 0.000000 +jointtorso=0.000000 -0.046432 0.000000 +jointlthigh=0.455829 0.000000 0.000000 +jointlknee=-0.241314 0.000000 0.000000 +jointlankle=0.259744 0.000000 0.000000 +jointrthigh=0.180430 0.000000 0.000000 +jointrknee=0.106124 0.000000 0.000000 +jointrankle=0.266791 0.000000 0.000000 +jointlocal=1.494517 0.250257 -1.032686 +jointlshoulder=0.468490 0.000000 0.000000 +jointrshoulder=-0.042518 0.000000 0.000000 +[frame63] +jointhip=0.032088 0.000000 0.000000 +jointtorso=0.000000 -0.171981 0.000000 +jointlthigh=0.427758 0.000000 0.000000 +jointlknee=-0.289960 0.000000 0.000000 +jointlankle=0.303754 0.000000 0.000000 +jointrthigh=0.209026 0.000000 0.000000 +jointrknee=-0.085420 0.000000 0.000000 +jointrankle=0.403588 0.000000 0.000000 +jointlocal=1.532387 0.250102 -1.049564 +jointlshoulder=0.440061 0.000000 0.000000 +jointrshoulder=0.005558 0.000000 0.000000 +[frame66] +jointhip=-0.114627 0.000000 0.000000 +jointtorso=0.000000 -0.368069 0.000000 +jointlthigh=0.244330 0.000000 0.000000 +jointlknee=-0.238576 0.000000 0.000000 +jointlankle=0.333902 0.000000 0.000000 +jointrthigh=0.129189 0.000000 0.000000 +jointrknee=-0.051961 0.000000 0.000000 +jointrankle=0.300509 0.000000 0.000000 +jointlocal=1.574955 0.224252 -1.061440 +jointlshoulder=0.354775 0.000000 0.000000 +jointrshoulder=0.149787 0.000000 0.000000 +[frame67] +jointhip=-0.136711 0.000000 0.000000 +jointtorso=0.000000 -0.340137 0.000000 +jointlthigh=0.045881 0.000000 0.000000 +jointlknee=0.129715 0.000000 0.000000 +jointlankle=0.124559 0.000000 0.000000 +jointrthigh=0.123018 0.000000 0.000000 +jointrknee=-0.063142 0.000000 0.000000 +jointrankle=0.265754 0.000000 0.000000 +jointlocal=1.546337 0.207888 -1.055469 +jointlshoulder=0.286320 0.000000 0.000000 +jointrshoulder=0.271298 0.000000 0.000000 +[frame68] +jointhip=-0.158795 0.000000 0.000000 +jointtorso=0.000000 -0.312205 0.000000 +jointlthigh=0.078755 0.000000 0.000000 +jointlknee=-0.119646 0.000000 0.000000 +jointlankle=0.448139 0.000000 0.000000 +jointrthigh=0.105970 0.000000 0.000000 +jointrknee=-0.081744 0.000000 0.000000 +jointrankle=0.294979 0.000000 0.000000 +jointlocal=1.517718 0.191525 -1.049499 +jointlshoulder=0.217865 0.000000 0.000000 +jointrshoulder=0.392808 0.000000 0.000000 +[frame69] +jointhip=-0.180879 0.000000 0.000000 +jointtorso=0.000000 -0.284273 0.000000 +jointlthigh=0.053715 0.000000 0.000000 +jointlknee=-0.074611 0.000000 0.000000 +jointlankle=0.447379 0.000000 0.000000 +jointrthigh=0.088922 0.000000 0.000000 +jointrknee=-0.100345 0.000000 0.000000 +jointrankle=0.324203 0.000000 0.000000 +jointlocal=1.489100 0.175161 -1.043529 +jointlshoulder=0.149410 0.000000 0.000000 +jointrshoulder=0.514319 0.000000 0.000000 +[frame70] +jointhip=-0.202962 0.000000 0.000000 +jointtorso=0.000000 -0.256341 0.000000 +jointlthigh=0.063644 0.000000 0.000000 +jointlknee=-0.053203 0.000000 0.000000 +jointlankle=0.460622 0.000000 0.000000 +jointrthigh=0.071874 0.000000 0.000000 +jointrknee=-0.118946 0.000000 0.000000 +jointrankle=0.353427 0.000000 0.000000 +jointlocal=1.460482 0.158797 -1.037559 +jointlshoulder=0.080955 0.000000 0.000000 +jointrshoulder=0.546463 0.000000 0.000000 +[frame71] +jointhip=-0.225046 0.000000 0.000000 +jointtorso=0.000000 -0.228408 0.000000 +jointlthigh=0.073574 0.000000 0.000000 +jointlknee=-0.031796 0.000000 0.000000 +jointlankle=0.473866 0.000000 0.000000 +jointrthigh=0.057344 0.000000 0.000000 +jointrknee=-0.073452 0.000000 0.000000 +jointrankle=0.449478 0.000000 0.000000 +jointlocal=1.431863 0.142433 -1.031588 +jointlshoulder=0.012500 0.000000 0.000000 +jointrshoulder=0.559151 0.000000 0.000000 +[frame72] +jointhip=-0.247130 0.000000 0.000000 +jointtorso=0.000000 -0.200476 0.000000 +jointlthigh=0.083503 0.000000 0.000000 +jointlknee=-0.010389 0.000000 0.000000 +jointlankle=0.487109 0.000000 0.000000 +jointrthigh=0.042815 0.000000 0.000000 +jointrknee=-0.027958 0.000000 0.000000 +jointrankle=0.545529 0.000000 0.000000 +jointlocal=1.403245 0.126069 -1.025618 +jointlshoulder=-0.055954 0.000000 0.000000 +jointrshoulder=0.554742 0.000000 0.000000 +[frame74] +jointhip=-0.209123 0.000000 0.000000 +jointtorso=0.000000 -0.144612 0.000000 +jointlthigh=0.086849 0.000000 0.000000 +jointlknee=0.103275 0.000000 0.000000 +jointlankle=0.339917 0.000000 0.000000 +jointrthigh=0.098534 0.000000 0.000000 +jointrknee=-0.097883 0.000000 0.000000 +jointrankle=0.557731 0.000000 0.000000 +jointlocal=1.426808 0.137999 -1.030489 +jointlshoulder=-0.192864 0.000000 0.000000 +jointrshoulder=0.376274 0.000000 0.000000 +[frame76] +jointhip=-0.171116 0.000000 0.000000 +jointtorso=0.000000 -0.088748 0.000000 +jointlthigh=0.090195 0.000000 0.000000 +jointlknee=0.216939 0.000000 0.000000 +jointlankle=0.192724 0.000000 0.000000 +jointrthigh=0.154253 0.000000 0.000000 +jointrknee=-0.167808 0.000000 0.000000 +jointrankle=0.569934 0.000000 0.000000 +jointlocal=1.450372 0.149928 -1.035361 +jointlshoulder=-0.329774 0.000000 0.000000 +jointrshoulder=0.188113 0.000000 0.000000 +[frame78] +jointhip=-0.133109 0.000000 0.000000 +jointtorso=0.000000 -0.078496 0.000000 +jointlthigh=0.041768 0.000000 0.000000 +jointlknee=0.229202 0.000000 0.000000 +jointlankle=0.189092 0.000000 0.000000 +jointrthigh=0.155415 0.000000 0.000000 +jointrknee=-0.175651 0.000000 0.000000 +jointrankle=0.577597 0.000000 0.000000 +jointlocal=1.443743 0.148282 -1.034945 +jointlshoulder=-0.466684 0.000000 0.000000 +jointrshoulder=-0.000048 0.000000 0.000000 +[frame79] +jointhip=-0.114105 0.000000 0.000000 +jointtorso=0.000000 -0.073370 0.000000 +jointlthigh=0.017555 0.000000 0.000000 +jointlknee=0.235333 0.000000 0.000000 +jointlankle=0.187276 0.000000 0.000000 +jointrthigh=0.155996 0.000000 0.000000 +jointrknee=-0.179573 0.000000 0.000000 +jointrankle=0.581429 0.000000 0.000000 +jointlocal=1.440429 0.147458 -1.034738 +jointlshoulder=-0.420249 0.000000 0.000000 +jointrshoulder=-0.094129 0.000000 0.000000 +[frame80] +jointhip=-0.114538 0.000000 0.000000 +jointtorso=0.000000 -0.068244 0.000000 +jointlthigh=-0.006659 0.000000 0.000000 +jointlknee=0.241465 0.000000 0.000000 +jointlankle=0.185460 0.000000 0.000000 +jointrthigh=0.156577 0.000000 0.000000 +jointrknee=-0.183495 0.000000 0.000000 +jointrankle=0.585261 0.000000 0.000000 +jointlocal=1.437115 0.146635 -1.034530 +jointlshoulder=-0.373814 0.000000 0.000000 +jointrshoulder=-0.188209 0.000000 0.000000 +[frame82] +jointhip=-0.115405 0.000000 0.000000 +jointtorso=0.000000 -0.057992 0.000000 +jointlthigh=-0.029242 0.000000 0.000000 +jointlknee=0.232396 0.000000 0.000000 +jointlankle=0.180043 0.000000 0.000000 +jointrthigh=0.127601 0.000000 0.000000 +jointrknee=-0.208295 0.000000 0.000000 +jointrankle=0.552859 0.000000 0.000000 +jointlocal=1.463362 0.159688 -1.038097 +jointlshoulder=-0.280944 0.000000 0.000000 +jointrshoulder=-0.267262 0.000000 0.000000 +[frame84] +jointhip=-0.116271 0.000000 0.000000 +jointtorso=0.000000 -0.047740 0.000000 +jointlthigh=-0.051825 0.000000 0.000000 +jointlknee=0.223327 0.000000 0.000000 +jointlankle=0.174625 0.000000 0.000000 +jointrthigh=0.098624 0.000000 0.000000 +jointrknee=-0.233094 0.000000 0.000000 +jointrankle=0.520457 0.000000 0.000000 +jointlocal=1.489609 0.172741 -1.041665 +jointlshoulder=-0.281073 0.000000 0.000000 +jointrshoulder=-0.346315 0.000000 0.000000 +[frame86] +jointhip=-0.101028 0.000000 0.000000 +jointtorso=0.000000 -0.016021 0.000000 +jointlthigh=0.009517 0.000000 0.000000 +jointlknee=0.057871 0.000000 0.000000 +jointlankle=0.207569 0.000000 0.000000 +jointrthigh=0.086882 0.000000 0.000000 +jointrknee=-0.206267 0.000000 0.000000 +jointrankle=0.497250 0.000000 0.000000 +jointlocal=1.479825 0.167078 -1.040037 +jointlshoulder=-0.281202 0.000000 0.000000 +jointrshoulder=-0.452364 0.000000 0.000000 +[frame88] +jointhip=-0.085786 0.000000 0.000000 +jointtorso=0.000000 0.015697 0.000000 +jointlthigh=0.070859 0.000000 0.000000 +jointlknee=-0.107585 0.000000 0.000000 +jointlankle=0.240513 0.000000 0.000000 +jointrthigh=0.075140 0.000000 0.000000 +jointrknee=-0.179441 0.000000 0.000000 +jointrankle=0.474042 0.000000 0.000000 +jointlocal=1.470040 0.161414 -1.038410 +jointlshoulder=-0.239978 0.000000 0.000000 +jointrshoulder=-0.558413 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame5=0.000000 -5.350000 0.000000 +frame7=0.000000 -5.350000 0.000000 +frame8=0.000000 -5.350000 0.000000 +frame9=0.000000 -5.350000 0.000000 +frame10=0.000000 -5.350000 0.000000 +frame13=0.000000 -5.350000 0.000000 +frame14=0.000000 -5.350000 0.000000 +frame20=0.000000 -5.350000 0.000000 +frame22=0.000000 -5.350000 0.000000 +frame30=0.000000 -5.350000 0.000000 +frame32=0.000000 -5.350000 0.000000 +frame33=0.000000 -5.349999 0.000000 +frame38=0.000000 -5.350000 0.000000 +frame43=0.000000 -5.350000 0.000000 +frame48=0.000000 -5.350000 0.000000 +frame50=0.000000 -5.350000 0.000000 +frame51=0.000000 -5.349999 0.000000 +frame53=0.000000 -5.350000 0.000000 +frame54=0.000000 -5.349999 0.000000 +frame56=0.000000 -5.350000 0.000000 +frame57=0.000000 -5.350000 0.000000 +frame58=0.000000 -5.349999 0.000000 +frame59=0.000000 -5.350000 0.000000 +frame60=0.000000 -5.350000 0.000000 +frame61=0.000000 -5.349999 0.000000 +frame62=0.000000 -5.349999 0.000000 +frame63=0.000000 -5.350000 0.000000 +frame66=0.000000 -5.350000 0.000000 +frame67=0.000000 -5.349999 0.000000 +frame68=0.000000 -5.350000 0.000000 +frame69=0.000000 -5.350000 0.000000 +frame70=0.000000 -5.349999 0.000000 +frame71=0.000000 -5.349999 0.000000 +frame72=0.000000 -5.350000 0.000000 +frame74=0.000000 -5.350000 0.000000 +frame76=0.000000 -5.350000 0.000000 +frame78=0.000000 -5.350000 0.000000 +frame79=0.000000 -5.350000 0.000000 +frame80=0.000000 -5.350000 0.000000 +frame82=0.000000 -5.350000 0.000000 +frame84=0.000000 -5.350000 0.000000 +frame86=0.000000 -5.350000 0.000000 +frame88=0.000000 -5.350000 0.000000 + +[KeyJointPos] +frame1=0.000000 0.000000 0.000000 +frame5=0.314380 0.028973 0.286603 +frame7=0.594708 0.061009 0.576533 +frame8=0.739237 0.066861 0.723179 +frame9=0.886316 0.065666 0.870795 +frame10=1.035656 0.057239 1.019266 +frame13=1.494212 -0.013101 1.468632 +frame14=1.649506 -0.052059 1.619340 +frame20=2.582650 -0.456124 2.524646 +frame22=2.836248 -0.660852 2.823394 +frame30=3.713341 -1.744650 3.969662 +frame32=3.886587 -2.076540 4.239851 +frame33=3.964775 -2.250656 4.371925 +frame38=4.261258 -3.193800 4.998204 +frame43=4.193711 -4.072923 5.552659 +frame48=3.961875 -4.957849 6.039522 +frame50=3.823342 -5.306558 6.213619 +frame51=3.675703 -5.413138 6.316421 +frame53=3.362133 -5.603785 6.509307 +frame54=3.187358 -5.840806 6.614107 +frame56=2.803464 -6.297108 6.795138 +frame57=2.595219 -6.515115 6.871110 +frame58=2.376747 -6.725548 6.937233 +frame59=2.148563 -6.927835 6.993414 +frame60=1.911221 -7.121422 7.039570 +frame61=1.665295 -7.305793 7.075635 +frame62=1.411389 -7.480457 7.101556 +frame63=1.150133 -7.644958 7.117294 +frame66=0.770432 -7.650972 7.167134 +frame67=0.903952 -7.440056 7.190835 +frame68=1.034109 -7.226390 7.206686 +frame69=1.160884 -7.010381 7.214638 +frame70=1.284264 -6.792433 7.214651 +frame71=1.404250 -6.572954 7.206707 +frame72=1.520851 -6.352349 7.190795 +frame74=1.419381 -6.524455 7.206030 +frame76=1.315714 -6.695776 7.216157 +frame78=1.350974 -6.659557 7.211993 +frame79=1.368573 -6.641436 7.209785 +frame80=1.386153 -6.623304 7.207490 +frame82=1.269268 -6.809666 7.215891 +frame84=1.150369 -6.995068 7.218006 +frame86=1.192225 -6.920764 7.218926 +frame88=1.233747 -6.846287 7.218909 diff --git a/CONTENT/BT/ANIMS/JAKGGL.ANI b/CONTENT/BT/ANIMS/JAKGGL.ANI new file mode 100644 index 0000000..b715cb0 --- /dev/null +++ b/CONTENT/BT/ANIMS/JAKGGL.ANI @@ -0,0 +1,142 @@ +[LAB_ONLY] + +[HEADER] +framecount=10 +framerate=30 +skeletonfile=jak.skl +jointcount=7 + +[Time] +frame1=0 +frame4=0.1 +frame6=0.166667 +frame8=0.233333 +frame9=0.266667 +frame10=0.3 +frame11=0.333333 +frame13=0.4 +frame17=0.533333 +frame20=0.633333 + +[JointIndices] +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=12 +jointrknee=13 +jointrankle=14 +jointlocal=0 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate + +[frame1] +jointlthigh=-0.056411 0.000000 0.000000 +jointlknee=-0.233080 0.000000 0.000000 +jointlankle=0.287536 0.000000 0.000000 +jointrthigh=-0.049463 0.000000 0.000000 +jointrknee=-0.814273 0.000000 0.000000 +jointrankle=-0.499957 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.026180 +[frame4] +jointlthigh=0.219437 0.000000 0.000000 +jointlknee=-0.745695 0.000000 0.000000 +jointlankle=0.349263 0.000000 0.000000 +jointrthigh=-0.206844 0.000000 0.000000 +jointrknee=-0.536251 0.000000 0.000000 +jointrankle=-0.599763 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.010472 +[frame6] +jointlthigh=0.295355 0.000000 0.000000 +jointlknee=-0.626783 0.000000 0.000000 +jointlankle=0.508165 0.000000 0.000000 +jointrthigh=-0.379766 0.000000 0.000000 +jointrknee=-0.461936 0.000000 0.000000 +jointrankle=-0.457974 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame8] +jointlthigh=0.546616 0.000000 0.000000 +jointlknee=-0.509837 0.000000 0.000000 +jointlankle=0.344439 0.000000 0.000000 +jointrthigh=-0.526442 0.000000 0.000000 +jointrknee=-0.448430 0.000000 0.000000 +jointrankle=-0.435926 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.015513 +[frame9] +jointlthigh=0.508453 0.000000 0.000000 +jointlknee=-0.121196 0.000000 0.000000 +jointlankle=0.212120 0.000000 0.000000 +jointrthigh=-0.599781 0.000000 0.000000 +jointrknee=-0.441676 0.000000 0.000000 +jointrankle=-0.424902 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.023270 +[frame10] +jointlthigh=0.551284 0.000000 0.000000 +jointlknee=-0.371516 0.000000 0.000000 +jointlankle=0.118813 0.000000 0.000000 +jointrthigh=-0.786215 0.000000 0.000000 +jointrknee=-0.160967 0.000000 0.000000 +jointrankle=-0.664480 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.031270 +[frame11] +jointlthigh=0.594115 0.000000 0.000000 +jointlknee=-0.621836 0.000000 0.000000 +jointlankle=0.025506 0.000000 0.000000 +jointrthigh=-0.818299 0.000000 0.000000 +jointrknee=-0.206802 0.000000 0.000000 +jointrankle=-0.645807 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.039270 +[frame13] +jointlthigh=0.497082 0.000000 0.000000 +jointlknee=-0.857665 0.000000 0.000000 +jointlankle=0.360449 0.000000 0.000000 +jointrthigh=-0.637836 0.000000 0.000000 +jointrknee=-0.439298 0.000000 0.000000 +jointrankle=-0.615832 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.038695 +[frame17] +jointlthigh=0.184588 0.000000 0.000000 +jointlknee=-0.702327 0.000000 0.000000 +jointlankle=0.513223 0.000000 0.000000 +jointrthigh=-0.301938 0.000000 0.000000 +jointrknee=-0.673879 0.000000 0.000000 +jointrankle=-0.591792 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.033906 +[frame20] +jointlthigh=-0.028855 0.000000 0.000000 +jointlknee=-0.307846 0.000000 0.000000 +jointlankle=0.334679 0.000000 0.000000 +jointrthigh=-0.049463 0.000000 0.000000 +jointrknee=-0.814273 0.000000 0.000000 +jointrankle=-0.499957 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.026180 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame4=0.000000 -5.350000 3.302994 +frame6=0.000000 -5.350000 9.516019 +frame8=0.000000 -5.350000 13.032018 +frame9=0.000000 -5.350000 13.031955 +frame10=0.000000 -5.355160 22.120516 +frame11=0.000000 -5.360320 22.120459 +frame13=0.000000 -5.350000 13.375512 +frame17=0.000000 -5.350000 8.910740 +frame20=0.000000 -5.350000 3.376008 + +[KeyJointPos] +frame1=-0.165129 0.097180 0.000000 +frame4=-0.068400 0.322626 0.000000 +frame6=0.000000 0.223580 0.000000 +frame8=-0.093185 -0.202556 0.000000 +frame9=-0.134822 -0.416108 0.000000 +frame10=-0.172866 -0.682463 0.000000 +frame11=-0.206658 -0.949037 0.000000 +frame13=-0.210781 -0.764277 0.000000 +frame17=-0.202274 -0.245332 0.000000 +frame20=-0.165129 0.097180 0.000000 diff --git a/CONTENT/BT/ANIMS/JAKGGLI.ANI b/CONTENT/BT/ANIMS/JAKGGLI.ANI new file mode 100644 index 0000000..c6ff2f6 --- /dev/null +++ b/CONTENT/BT/ANIMS/JAKGGLI.ANI @@ -0,0 +1,154 @@ +[LAB_ONLY] + +[HEADER] +framecount=10 +framerate=30 +skeletonfile=jak.skl +jointcount=8 + +[Time] +frame1=0 +frame4=0.1 +frame6=0.166667 +frame8=0.233333 +frame9=0.266667 +frame10=0.3 +frame11=0.333333 +frame13=0.4 +frame17=0.533333 +frame20=0.633333 + +[JointIndices] +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=12 +jointrknee=13 +jointrankle=14 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=-0.056411 0.000000 0.000000 +jointlknee=-0.233080 0.000000 0.000000 +jointlankle=0.287536 0.000000 0.000000 +jointrthigh=-0.049463 0.000000 0.000000 +jointrknee=-0.814273 0.000000 0.000000 +jointrankle=-0.499957 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.015708 +jointshakey=0.000000 0.000000 0.015708 +[frame4] +jointlthigh=0.219437 0.000000 0.000000 +jointlknee=-0.745695 0.000000 0.000000 +jointlankle=0.349263 0.000000 0.000000 +jointrthigh=-0.206844 0.000000 0.000000 +jointrknee=-0.536251 0.000000 0.000000 +jointrankle=-0.599763 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.003665 +jointshakey=0.000000 0.000000 0.003665 +[frame6] +jointlthigh=0.295355 0.000000 0.000000 +jointlknee=-0.626783 0.000000 0.000000 +jointlankle=0.508165 0.000000 0.000000 +jointrthigh=-0.379766 0.000000 0.000000 +jointrknee=-0.461936 0.000000 0.000000 +jointrankle=-0.457974 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.004363 +jointshakey=0.000000 0.000000 -0.004363 +[frame8] +jointlthigh=0.546616 0.000000 0.000000 +jointlknee=-0.509837 0.000000 0.000000 +jointlankle=0.344439 0.000000 0.000000 +jointrthigh=-0.526442 0.000000 0.000000 +jointrknee=-0.448430 0.000000 0.000000 +jointrankle=-0.435926 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.004363 +jointshakey=0.000000 0.000000 0.004363 +[frame9] +jointlthigh=0.508453 0.000000 0.000000 +jointlknee=-0.121196 0.000000 0.000000 +jointlankle=0.212120 0.000000 0.000000 +jointrthigh=-0.599781 0.000000 0.000000 +jointrknee=-0.441676 0.000000 0.000000 +jointrankle=-0.424902 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.008727 +jointshakey=0.000000 0.000000 0.008727 +[frame10] +jointlthigh=0.551284 0.000000 0.000000 +jointlknee=-0.371516 0.000000 0.000000 +jointlankle=0.118813 0.000000 0.000000 +jointrthigh=-0.786215 0.000000 0.000000 +jointrknee=-0.160967 0.000000 0.000000 +jointrankle=-0.664480 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.013090 +jointshakey=0.000000 0.000000 0.013090 +[frame11] +jointlthigh=0.594115 0.000000 0.000000 +jointlknee=-0.621836 0.000000 0.000000 +jointlankle=0.025506 0.000000 0.000000 +jointrthigh=-0.818299 0.000000 0.000000 +jointrknee=-0.206802 0.000000 0.000000 +jointrankle=-0.645807 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.017453 +jointshakey=0.000000 0.000000 0.017453 +[frame13] +jointlthigh=0.497082 0.000000 0.000000 +jointlknee=-0.857665 0.000000 0.000000 +jointlankle=0.360449 0.000000 0.000000 +jointrthigh=-0.637836 0.000000 0.000000 +jointrknee=-0.439298 0.000000 0.000000 +jointrankle=-0.615832 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.017065 +jointshakey=0.000000 0.000000 0.017065 +[frame17] +jointlthigh=0.184588 0.000000 0.000000 +jointlknee=-0.702327 0.000000 0.000000 +jointlankle=0.513223 0.000000 0.000000 +jointrthigh=-0.301938 0.000000 0.000000 +jointrknee=-0.673879 0.000000 0.000000 +jointrankle=-0.591792 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.016290 +jointshakey=0.000000 0.000000 0.016290 +[frame20] +jointlthigh=-0.028855 0.000000 0.000000 +jointlknee=-0.307846 0.000000 0.000000 +jointlankle=0.334679 0.000000 0.000000 +jointrthigh=-0.049463 0.000000 0.000000 +jointrknee=-0.814273 0.000000 0.000000 +jointrankle=-0.499957 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.015708 +jointshakey=0.000000 0.000000 0.015708 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame4=0.000000 -5.350000 3.302994 +frame6=0.000000 -5.350000 9.516019 +frame8=0.000000 -5.350000 13.032018 +frame9=0.000000 -5.350000 13.031955 +frame10=0.000000 -5.355160 22.120516 +frame11=0.000000 -5.360320 22.120459 +frame13=0.000000 -5.350000 13.375512 +frame17=0.000000 -5.350000 8.910740 +frame20=0.000000 -5.350000 3.376008 + +[KeyJointPos] +frame1=0.000000 0.099342 0.000000 +frame4=0.000000 0.322984 0.000000 +frame6=0.000000 0.223580 0.000000 +frame8=0.000000 -0.201833 0.000000 +frame9=0.000000 -0.414539 0.000000 +frame10=0.000000 -0.679760 0.000000 +frame11=0.000000 -0.944979 0.000000 +frame13=0.000000 -0.760198 0.000000 +frame17=0.000000 -0.241902 0.000000 +frame20=0.000000 0.099342 0.000000 diff --git a/CONTENT/BT/ANIMS/JAKGGR.ANI b/CONTENT/BT/ANIMS/JAKGGR.ANI new file mode 100644 index 0000000..48a639b --- /dev/null +++ b/CONTENT/BT/ANIMS/JAKGGR.ANI @@ -0,0 +1,142 @@ +[LAB_ONLY] + +[HEADER] +framecount=10 +framerate=30 +skeletonfile=jak.skl +jointcount=7 + +[Time] +frame1=0 +frame4=0.1 +frame6=0.166667 +frame8=0.233333 +frame9=0.266667 +frame10=0.3 +frame11=0.333333 +frame13=0.4 +frame17=0.533333 +frame20=0.633333 + +[JointIndices] +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=12 +jointrknee=13 +jointrankle=14 +jointlocal=0 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate + +[frame1] +jointlthigh=-0.049463 0.000000 0.000000 +jointlknee=-0.814273 0.000000 0.000000 +jointlankle=-0.499957 0.000000 0.000000 +jointrthigh=-0.056411 0.000000 0.000000 +jointrknee=-0.233080 0.000000 0.000000 +jointrankle=0.287536 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.026180 +[frame4] +jointlthigh=-0.206844 0.000000 0.000000 +jointlknee=-0.536251 0.000000 0.000000 +jointlankle=-0.599763 0.000000 0.000000 +jointrthigh=0.219437 0.000000 0.000000 +jointrknee=-0.745695 0.000000 0.000000 +jointrankle=0.349263 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.010472 +[frame6] +jointlthigh=-0.379766 0.000000 0.000000 +jointlknee=-0.461936 0.000000 0.000000 +jointlankle=-0.457974 0.000000 0.000000 +jointrthigh=0.295355 0.000000 0.000000 +jointrknee=-0.626783 0.000000 0.000000 +jointrankle=0.508165 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame8] +jointlthigh=-0.526442 0.000000 0.000000 +jointlknee=-0.448430 0.000000 0.000000 +jointlankle=-0.435926 0.000000 0.000000 +jointrthigh=0.546616 0.000000 0.000000 +jointrknee=-0.509837 0.000000 0.000000 +jointrankle=0.344439 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.015513 +[frame9] +jointlthigh=-0.599781 0.000000 0.000000 +jointlknee=-0.441676 0.000000 0.000000 +jointlankle=-0.424902 0.000000 0.000000 +jointrthigh=0.508453 0.000000 0.000000 +jointrknee=-0.121196 0.000000 0.000000 +jointrankle=0.212120 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.023270 +[frame10] +jointlthigh=-0.786215 0.000000 0.000000 +jointlknee=-0.160967 0.000000 0.000000 +jointlankle=-0.664480 0.000000 0.000000 +jointrthigh=0.551284 0.000000 0.000000 +jointrknee=-0.371516 0.000000 0.000000 +jointrankle=0.118813 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.031270 +[frame11] +jointlthigh=-0.818299 0.000000 0.000000 +jointlknee=-0.206802 0.000000 0.000000 +jointlankle=-0.645807 0.000000 0.000000 +jointrthigh=0.594115 0.000000 0.000000 +jointrknee=-0.621836 0.000000 0.000000 +jointrankle=0.025506 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.039270 +[frame13] +jointlthigh=-0.637836 0.000000 0.000000 +jointlknee=-0.439298 0.000000 0.000000 +jointlankle=-0.615832 0.000000 0.000000 +jointrthigh=0.497082 0.000000 0.000000 +jointrknee=-0.857665 0.000000 0.000000 +jointrankle=0.360449 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.038695 +[frame17] +jointlthigh=-0.301938 0.000000 0.000000 +jointlknee=-0.673879 0.000000 0.000000 +jointlankle=-0.591792 0.000000 0.000000 +jointrthigh=0.184588 0.000000 0.000000 +jointrknee=-0.702327 0.000000 0.000000 +jointrankle=0.513223 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.033906 +[frame20] +jointlthigh=-0.049463 0.000000 0.000000 +jointlknee=-0.814273 0.000000 0.000000 +jointlankle=-0.499957 0.000000 0.000000 +jointrthigh=-0.028855 0.000000 0.000000 +jointrknee=-0.307846 0.000000 0.000000 +jointrankle=0.334679 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.026180 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame4=0.000000 -5.350000 3.302994 +frame6=0.000000 -5.350000 9.516019 +frame8=0.000000 -5.350000 13.032018 +frame9=0.000000 -5.350000 13.031955 +frame10=0.000000 -5.355160 22.120516 +frame11=0.000000 -5.360320 22.120459 +frame13=0.000000 -5.350000 13.375512 +frame17=0.000000 -5.350000 8.910740 +frame20=0.000000 -5.350000 3.376008 + +[KeyJointPos] +frame1=0.165129 0.097180 0.000000 +frame4=0.068400 0.322626 0.000000 +frame6=0.000000 0.223580 0.000000 +frame8=0.093185 -0.202556 0.000000 +frame9=0.134822 -0.416108 0.000000 +frame10=0.172866 -0.682463 0.000000 +frame11=0.206658 -0.949037 0.000000 +frame13=0.210781 -0.764277 0.000000 +frame17=0.202274 -0.245332 0.000000 +frame20=0.165129 0.097180 0.000000 diff --git a/CONTENT/BT/ANIMS/JAKGGRI.ANI b/CONTENT/BT/ANIMS/JAKGGRI.ANI new file mode 100644 index 0000000..f474d24 --- /dev/null +++ b/CONTENT/BT/ANIMS/JAKGGRI.ANI @@ -0,0 +1,154 @@ +[LAB_ONLY] + +[HEADER] +framecount=10 +framerate=30 +skeletonfile=jak.skl +jointcount=8 + +[Time] +frame1=0 +frame4=0.1 +frame6=0.166667 +frame8=0.233333 +frame9=0.266667 +frame10=0.3 +frame11=0.333333 +frame13=0.4 +frame17=0.533333 +frame20=0.633333 + +[JointIndices] +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=12 +jointrknee=13 +jointrankle=14 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=-0.049463 0.000000 0.000000 +jointlknee=-0.814273 0.000000 0.000000 +jointlankle=-0.499957 0.000000 0.000000 +jointrthigh=-0.056411 0.000000 0.000000 +jointrknee=-0.233080 0.000000 0.000000 +jointrankle=0.287536 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.015708 +jointshakey=0.000000 0.000000 -0.015708 +[frame4] +jointlthigh=-0.206844 0.000000 0.000000 +jointlknee=-0.536251 0.000000 0.000000 +jointlankle=-0.599763 0.000000 0.000000 +jointrthigh=0.219437 0.000000 0.000000 +jointrknee=-0.745695 0.000000 0.000000 +jointrankle=0.349263 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.003665 +jointshakey=0.000000 0.000000 -0.003665 +[frame6] +jointlthigh=-0.379766 0.000000 0.000000 +jointlknee=-0.461936 0.000000 0.000000 +jointlankle=-0.457974 0.000000 0.000000 +jointrthigh=0.295355 0.000000 0.000000 +jointrknee=-0.626783 0.000000 0.000000 +jointrankle=0.508165 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.004363 +jointshakey=0.000000 0.000000 0.004363 +[frame8] +jointlthigh=-0.526442 0.000000 0.000000 +jointlknee=-0.448430 0.000000 0.000000 +jointlankle=-0.435926 0.000000 0.000000 +jointrthigh=0.546616 0.000000 0.000000 +jointrknee=-0.509837 0.000000 0.000000 +jointrankle=0.344439 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.004363 +jointshakey=0.000000 0.000000 -0.004363 +[frame9] +jointlthigh=-0.599781 0.000000 0.000000 +jointlknee=-0.441676 0.000000 0.000000 +jointlankle=-0.424902 0.000000 0.000000 +jointrthigh=0.508453 0.000000 0.000000 +jointrknee=-0.121196 0.000000 0.000000 +jointrankle=0.212120 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.008727 +jointshakey=0.000000 0.000000 -0.008727 +[frame10] +jointlthigh=-0.786215 0.000000 0.000000 +jointlknee=-0.160967 0.000000 0.000000 +jointlankle=-0.664480 0.000000 0.000000 +jointrthigh=0.551284 0.000000 0.000000 +jointrknee=-0.371516 0.000000 0.000000 +jointrankle=0.118813 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.013090 +jointshakey=0.000000 0.000000 -0.013090 +[frame11] +jointlthigh=-0.818299 0.000000 0.000000 +jointlknee=-0.206802 0.000000 0.000000 +jointlankle=-0.645807 0.000000 0.000000 +jointrthigh=0.594115 0.000000 0.000000 +jointrknee=-0.621836 0.000000 0.000000 +jointrankle=0.025506 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.017453 +jointshakey=0.000000 0.000000 -0.017453 +[frame13] +jointlthigh=-0.637836 0.000000 0.000000 +jointlknee=-0.439298 0.000000 0.000000 +jointlankle=-0.615832 0.000000 0.000000 +jointrthigh=0.497082 0.000000 0.000000 +jointrknee=-0.857665 0.000000 0.000000 +jointrankle=0.360449 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.017065 +jointshakey=0.000000 0.000000 -0.017065 +[frame17] +jointlthigh=-0.301938 0.000000 0.000000 +jointlknee=-0.673879 0.000000 0.000000 +jointlankle=-0.591792 0.000000 0.000000 +jointrthigh=0.184588 0.000000 0.000000 +jointrknee=-0.702327 0.000000 0.000000 +jointrankle=0.513223 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.016290 +jointshakey=0.000000 0.000000 -0.016290 +[frame20] +jointlthigh=-0.049463 0.000000 0.000000 +jointlknee=-0.814273 0.000000 0.000000 +jointlankle=-0.499957 0.000000 0.000000 +jointrthigh=-0.028855 0.000000 0.000000 +jointrknee=-0.307846 0.000000 0.000000 +jointrankle=0.334679 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.015708 +jointshakey=0.000000 0.000000 -0.015708 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame4=0.000000 -5.350000 3.302994 +frame6=0.000000 -5.350000 9.516019 +frame8=0.000000 -5.350000 13.032018 +frame9=0.000000 -5.350000 13.031955 +frame10=0.000000 -5.355160 22.120516 +frame11=0.000000 -5.360320 22.120459 +frame13=0.000000 -5.350000 13.375512 +frame17=0.000000 -5.350000 8.910740 +frame20=0.000000 -5.350000 3.376008 + +[KeyJointPos] +frame1=0.000000 0.099342 0.000000 +frame4=0.000000 0.322984 0.000000 +frame6=0.000000 0.223580 0.000000 +frame8=0.000000 -0.201833 0.000000 +frame9=0.000000 -0.414539 0.000000 +frame10=0.000000 -0.679760 0.000000 +frame11=0.000000 -0.944979 0.000000 +frame13=0.000000 -0.760198 0.000000 +frame17=0.000000 -0.241902 0.000000 +frame20=0.000000 0.099342 0.000000 diff --git a/CONTENT/BT/ANIMS/JAKGSLI.ANI b/CONTENT/BT/ANIMS/JAKGSLI.ANI new file mode 100644 index 0000000..7a158bd --- /dev/null +++ b/CONTENT/BT/ANIMS/JAKGSLI.ANI @@ -0,0 +1,106 @@ +[LAB_ONLY] + +[HEADER] +framecount=6 +framerate=30 +skeletonfile=jak.skl +jointcount=8 + +[Time] +frame1=0 +frame7=0.2 +frame9=0.266667 +frame11=0.333333 +frame15=0.466667 +frame23=0.733333 + +[JointIndices] +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=12 +jointrknee=13 +jointrankle=14 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=-0.037374 0.000000 0.000000 +jointlknee=-0.854337 0.000000 0.000000 +jointlankle=-0.471860 0.000000 0.000000 +jointrthigh=-0.094758 0.000000 0.000000 +jointrknee=-0.129419 0.000000 0.000000 +jointrankle=0.226978 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.015708 +jointshakey=0.000000 0.000000 -0.015708 +[frame7] +jointlthigh=0.068051 0.000000 0.000000 +jointlknee=-1.036499 0.000000 0.000000 +jointlankle=-0.081358 0.000000 0.000000 +jointrthigh=-0.068915 0.000000 0.000000 +jointrknee=-0.094123 0.000000 0.000000 +jointrankle=0.165075 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.011424 +jointshakey=0.000000 0.000000 -0.011424 +[frame9] +jointlthigh=0.081073 0.000000 0.000000 +jointlknee=-1.015152 0.000000 0.000000 +jointlankle=0.023671 0.000000 0.000000 +jointrthigh=-0.060300 0.000000 0.000000 +jointrknee=-0.082358 0.000000 0.000000 +jointrankle=0.144441 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.009996 +jointshakey=0.000000 0.000000 -0.009996 +[frame11] +jointlthigh=0.099666 0.000000 0.000000 +jointlknee=-1.043461 0.000000 0.000000 +jointlankle=0.186181 0.000000 0.000000 +jointrthigh=-0.051686 0.000000 0.000000 +jointrknee=-0.070592 0.000000 0.000000 +jointrankle=0.123806 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.008568 +jointshakey=0.000000 0.000000 -0.008568 +[frame15] +jointlthigh=0.106684 0.000000 0.000000 +jointlknee=-0.881667 0.000000 0.000000 +jointlankle=0.332216 0.000000 0.000000 +jointrthigh=-0.034457 0.000000 0.000000 +jointrknee=-0.047062 0.000000 0.000000 +jointrankle=0.082538 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.005712 +jointshakey=0.000000 0.000000 -0.005712 +[frame23] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame7=0.000000 -5.350000 1.304002 +frame9=0.000000 -5.350000 -0.133510 +frame11=0.000000 -5.350000 -0.133495 +frame15=0.000000 -5.350000 -1.709998 +frame23=0.000000 -5.350000 -2.894625 + +[KeyJointPos] +frame1=0.000000 0.099342 0.000000 +frame7=0.000000 0.066186 0.000000 +frame9=0.000000 0.052961 0.000000 +frame11=0.000000 0.047995 0.000000 +frame15=0.000000 0.033093 0.000000 +frame23=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/JAKGSRI.ANI b/CONTENT/BT/ANIMS/JAKGSRI.ANI new file mode 100644 index 0000000..8ec669d --- /dev/null +++ b/CONTENT/BT/ANIMS/JAKGSRI.ANI @@ -0,0 +1,106 @@ +[LAB_ONLY] + +[HEADER] +framecount=6 +framerate=30 +skeletonfile=jak.skl +jointcount=8 + +[Time] +frame1=0 +frame7=0.2 +frame9=0.266667 +frame11=0.333333 +frame15=0.466667 +frame23=0.733333 + +[JointIndices] +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=12 +jointrknee=13 +jointrankle=14 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=-0.094758 0.000000 0.000000 +jointlknee=-0.129419 0.000000 0.000000 +jointlankle=0.226978 0.000000 0.000000 +jointrthigh=-0.037374 0.000000 0.000000 +jointrknee=-0.854337 0.000000 0.000000 +jointrankle=-0.471860 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.015708 +jointshakey=0.000000 0.000000 0.015708 +[frame7] +jointlthigh=-0.062440 0.000000 0.000000 +jointlknee=-0.111529 0.000000 0.000000 +jointlankle=0.176080 0.000000 0.000000 +jointrthigh=0.068051 0.000000 0.000000 +jointrknee=-1.036499 0.000000 0.000000 +jointrankle=-0.081358 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.011424 +jointshakey=0.000000 0.000000 0.011424 +[frame9] +jointlthigh=-0.051668 0.000000 0.000000 +jointlknee=-0.105565 0.000000 0.000000 +jointlankle=0.159114 0.000000 0.000000 +jointrthigh=0.081073 0.000000 0.000000 +jointrknee=-1.015152 0.000000 0.000000 +jointrankle=0.023671 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.009996 +jointshakey=0.000000 0.000000 0.009996 +[frame11] +jointlthigh=-0.040895 0.000000 0.000000 +jointlknee=-0.099601 0.000000 0.000000 +jointlankle=0.142147 0.000000 0.000000 +jointrthigh=0.099666 0.000000 0.000000 +jointrknee=-1.043461 0.000000 0.000000 +jointrankle=0.186181 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.008568 +jointshakey=0.000000 0.000000 0.008568 +[frame15] +jointlthigh=-0.019351 0.000000 0.000000 +jointlknee=-0.087674 0.000000 0.000000 +jointlankle=0.108215 0.000000 0.000000 +jointrthigh=0.106684 0.000000 0.000000 +jointrknee=-0.881667 0.000000 0.000000 +jointrankle=0.332216 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.005712 +jointshakey=0.000000 0.000000 0.005712 +[frame23] +jointlthigh=0.023739 0.000000 0.000000 +jointlknee=-0.063820 0.000000 0.000000 +jointlankle=0.040350 0.000000 0.000000 +jointrthigh=0.061303 0.000000 0.000000 +jointrknee=-0.165001 0.000000 0.000000 +jointrankle=0.104694 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame7=0.000000 -5.350000 1.304002 +frame9=0.000000 -5.350000 -0.133510 +frame11=0.000000 -5.350000 -0.133495 +frame15=0.000000 -5.350000 -1.709998 +frame23=0.000000 -5.350000 -2.894625 + +[KeyJointPos] +frame1=0.000000 0.099342 0.000000 +frame7=0.000000 0.066186 0.000000 +frame9=0.000000 0.052961 0.000000 +frame11=0.000000 0.047995 0.000000 +frame15=0.000000 0.033093 0.000000 +frame23=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/JAKRRL.ANI b/CONTENT/BT/ANIMS/JAKRRL.ANI new file mode 100644 index 0000000..02d26c3 --- /dev/null +++ b/CONTENT/BT/ANIMS/JAKRRL.ANI @@ -0,0 +1,131 @@ +[LAB_ONLY] + +[HEADER] +framecount=9 +framerate=30 +skeletonfile=jak.skl +jointcount=7 + +[Time] +frame1=0 +frame2=0.0333333 +frame3=0.0666667 +frame4=0.1 +frame5=0.133333 +frame6=0.166667 +frame10=0.3 +frame13=0.4 +frame14=0.433333 + +[JointIndices] +jointlocal=0 +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=12 +jointrknee=13 +jointrankle=14 + +[JointType] +jointlocal=balltranslate +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.125867 0.000000 0.000000 +jointlknee=-1.372056 0.000000 0.000000 +jointlankle=0.546410 0.000000 0.000000 +jointrthigh=0.745982 0.000000 0.000000 +jointrknee=-0.738945 0.000000 0.000000 +jointrankle=-0.006790 0.000000 0.000000 +[frame2] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.286754 0.000000 0.000000 +jointlknee=-1.368721 0.000000 0.000000 +jointlankle=0.452973 0.000000 0.000000 +jointrthigh=0.479424 0.000000 0.000000 +jointrknee=-0.831562 0.000000 0.000000 +jointrankle=0.351659 0.000000 0.000000 +[frame3] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.699374 0.000000 0.000000 +jointlknee=-1.365387 0.000000 0.000000 +jointlankle=0.359536 0.000000 0.000000 +jointrthigh=-0.091576 0.000000 0.000000 +jointrknee=-0.318861 0.000000 0.000000 +jointrankle=0.410688 0.000000 0.000000 +[frame4] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.910210 0.000000 0.000000 +jointlknee=-1.232863 0.000000 0.000000 +jointlankle=0.324252 0.000000 0.000000 +jointrthigh=0.006754 0.000000 0.000000 +jointrknee=-0.860807 0.000000 0.000000 +jointrankle=0.447373 0.000000 0.000000 +[frame5] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=1.121046 0.000000 0.000000 +jointlknee=-1.100340 0.000000 0.000000 +jointlankle=0.288968 0.000000 0.000000 +jointrthigh=-0.075187 0.000000 0.000000 +jointrknee=-0.952032 0.000000 0.000000 +jointrankle=0.202371 0.000000 0.000000 +[frame6] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=1.331882 0.000000 0.000000 +jointlknee=-0.967816 0.000000 0.000000 +jointlankle=0.253684 0.000000 0.000000 +jointrthigh=-0.258300 0.000000 0.000000 +jointrknee=-0.712705 0.000000 0.000000 +jointrankle=-0.259003 0.000000 0.000000 +[frame10] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.965050 0.000000 0.000000 +jointlknee=-0.162689 0.000000 0.000000 +jointlankle=-0.250045 0.000000 0.000000 +jointrthigh=-0.383931 0.000000 0.000000 +jointrknee=-1.164100 0.000000 0.000000 +jointrankle=-0.369045 0.000000 0.000000 +[frame13] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.593710 0.000000 0.000000 +jointlknee=-0.115273 0.000000 0.000000 +jointlankle=-0.205218 0.000000 0.000000 +jointrthigh=-0.190383 0.000000 0.000000 +jointrknee=-1.320067 0.000000 0.000000 +jointrankle=0.317546 0.000000 0.000000 +[frame14] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.746147 0.000000 0.000000 +jointlknee=-0.739974 0.000000 0.000000 +jointlankle=-0.005693 0.000000 0.000000 +jointrthigh=-0.125867 0.000000 0.000000 +jointrknee=-1.372056 0.000000 0.000000 +jointrankle=0.546410 0.000000 0.000000 + +[RootTranslation] +frame1=0.022705 -5.367000 0.000000 +frame2=0.022705 -5.367000 42.790485 +frame3=0.022705 -5.367000 42.790543 +frame4=0.022705 -5.367000 42.029976 +frame5=0.022705 -5.367000 42.030022 +frame6=0.022705 -5.367000 42.030033 +frame10=0.022705 -5.367000 42.865475 +frame13=0.022705 -5.367000 44.833530 +frame14=0.022705 -5.367000 44.833492 + +[KeyJointPos] +frame1=0.000000 -0.611179 0.000000 +frame2=0.000000 -0.422912 0.000000 +frame3=0.000000 -0.234645 0.000000 +frame4=0.000000 -0.164252 0.000000 +frame5=0.000000 -0.093858 0.000000 +frame6=0.000000 -0.023465 0.000000 +frame10=0.000000 0.070393 0.000000 +frame13=0.000000 -0.439959 0.000000 +frame14=0.000000 -0.610076 0.000000 diff --git a/CONTENT/BT/ANIMS/JAKRRLI.ANI b/CONTENT/BT/ANIMS/JAKRRLI.ANI new file mode 100644 index 0000000..e089894 --- /dev/null +++ b/CONTENT/BT/ANIMS/JAKRRLI.ANI @@ -0,0 +1,143 @@ +[LAB_ONLY] + +[HEADER] +framecount=9 +framerate=30 +skeletonfile=jak.skl +jointcount=8 + +[Time] +frame1=0 +frame2=0.0333333 +frame3=0.0666667 +frame4=0.1 +frame5=0.133333 +frame6=0.166667 +frame10=0.3 +frame13=0.4 +frame14=0.433333 + +[JointIndices] +jointlocal=0 +jointshakey=3 +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=12 +jointrknee=13 +jointrankle=14 + + +[JointType] +jointlocal=balltranslate +jointshakey=ball +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.125867 0.000000 0.000000 +jointlknee=-1.372056 0.000000 0.000000 +jointlankle=0.546410 0.000000 0.000000 +jointrthigh=0.745982 0.000000 0.000000 +jointrknee=-0.738945 0.000000 0.000000 +jointrankle=-0.006790 0.000000 0.000000 +[frame2] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.286754 0.000000 0.000000 +jointlknee=-1.368721 0.000000 0.000000 +jointlankle=0.452973 0.000000 0.000000 +jointrthigh=0.479424 0.000000 0.000000 +jointrknee=-0.831562 0.000000 0.000000 +jointrankle=0.351659 0.000000 0.000000 +[frame3] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.699374 0.000000 0.000000 +jointlknee=-1.365387 0.000000 0.000000 +jointlankle=0.359536 0.000000 0.000000 +jointrthigh=-0.091576 0.000000 0.000000 +jointrknee=-0.318861 0.000000 0.000000 +jointrankle=0.410688 0.000000 0.000000 +[frame4] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.910210 0.000000 0.000000 +jointlknee=-1.232863 0.000000 0.000000 +jointlankle=0.324252 0.000000 0.000000 +jointrthigh=0.006754 0.000000 0.000000 +jointrknee=-0.860807 0.000000 0.000000 +jointrankle=0.447373 0.000000 0.000000 +[frame5] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=1.121046 0.000000 0.000000 +jointlknee=-1.100340 0.000000 0.000000 +jointlankle=0.288968 0.000000 0.000000 +jointrthigh=-0.075187 0.000000 0.000000 +jointrknee=-0.952032 0.000000 0.000000 +jointrankle=0.202371 0.000000 0.000000 +[frame6] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=1.331882 0.000000 0.000000 +jointlknee=-0.967816 0.000000 0.000000 +jointlankle=0.253684 0.000000 0.000000 +jointrthigh=-0.258300 0.000000 0.000000 +jointrknee=-0.712705 0.000000 0.000000 +jointrankle=-0.259003 0.000000 0.000000 +[frame10] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.965050 0.000000 0.000000 +jointlknee=-0.162689 0.000000 0.000000 +jointlankle=-0.250045 0.000000 0.000000 +jointrthigh=-0.383931 0.000000 0.000000 +jointrknee=-1.164100 0.000000 0.000000 +jointrankle=-0.369045 0.000000 0.000000 +[frame13] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.593710 0.000000 0.000000 +jointlknee=-0.115273 0.000000 0.000000 +jointlankle=-0.205218 0.000000 0.000000 +jointrthigh=-0.190383 0.000000 0.000000 +jointrknee=-1.320067 0.000000 0.000000 +jointrankle=0.317546 0.000000 0.000000 +[frame14] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.746147 0.000000 0.000000 +jointlknee=-0.739974 0.000000 0.000000 +jointlankle=-0.005693 0.000000 0.000000 +jointrthigh=-0.125867 0.000000 0.000000 +jointrknee=-1.372056 0.000000 0.000000 +jointrankle=0.546410 0.000000 0.000000 + +[RootTranslation] +frame1=0.022705 -5.367000 0.000000 +frame2=0.022705 -5.367000 42.790485 +frame3=0.022705 -5.367000 42.790543 +frame4=0.022705 -5.367000 42.029976 +frame5=0.022705 -5.367000 42.030022 +frame6=0.022705 -5.367000 42.030033 +frame10=0.022705 -5.367000 42.865475 +frame13=0.022705 -5.367000 44.833530 +frame14=0.022705 -5.367000 44.833492 + +[KeyJointPos] +frame1=0.000000 -0.611179 0.000000 +frame2=0.000000 -0.422912 0.000000 +frame3=0.000000 -0.234645 0.000000 +frame4=0.000000 -0.164252 0.000000 +frame5=0.000000 -0.093858 0.000000 +frame6=0.000000 -0.023465 0.000000 +frame10=0.000000 0.070393 0.000000 +frame13=0.000000 -0.439959 0.000000 +frame14=0.000000 -0.610076 0.000000 diff --git a/CONTENT/BT/ANIMS/JAKRRR.ANI b/CONTENT/BT/ANIMS/JAKRRR.ANI new file mode 100644 index 0000000..e9e2c1e --- /dev/null +++ b/CONTENT/BT/ANIMS/JAKRRR.ANI @@ -0,0 +1,131 @@ +[LAB_ONLY] + +[HEADER] +framecount=9 +framerate=30 +skeletonfile=jak.skl +jointcount=7 + +[Time] +frame1=0 +frame2=0.0333333 +frame3=0.0666667 +frame4=0.1 +frame5=0.133333 +frame6=0.166667 +frame10=0.3 +frame13=0.4 +frame14=0.433333 + +[JointIndices] +jointlocal=0 +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=12 +jointrknee=13 +jointrankle=14 + +[JointType] +jointlocal=balltranslate +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.743077 0.000000 0.000000 +jointlknee=-0.737124 0.000000 0.000000 +jointlankle=-0.005236 0.000000 0.000000 +jointrthigh=-0.125867 0.000000 0.000000 +jointrknee=-1.372056 0.000000 0.000000 +jointrankle=0.546410 0.000000 0.000000 +[frame2] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.470501 0.000000 0.000000 +jointlknee=-0.814952 0.000000 0.000000 +jointlankle=0.342753 0.000000 0.000000 +jointrthigh=0.286754 0.000000 0.000000 +jointrknee=-1.368721 0.000000 0.000000 +jointrankle=0.452973 0.000000 0.000000 +[frame3] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.118059 0.000000 0.000000 +jointlknee=-0.273076 0.000000 0.000000 +jointlankle=0.391360 0.000000 0.000000 +jointrthigh=0.699374 0.000000 0.000000 +jointrknee=-1.365387 0.000000 0.000000 +jointrankle=0.359536 0.000000 0.000000 +[frame4] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.012116 0.000000 0.000000 +jointlknee=-0.838858 0.000000 0.000000 +jointlankle=0.444872 0.000000 0.000000 +jointrthigh=0.910210 0.000000 0.000000 +jointrknee=-1.232863 0.000000 0.000000 +jointrankle=0.324252 0.000000 0.000000 +[frame5] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.088505 0.000000 0.000000 +jointlknee=-0.940905 0.000000 0.000000 +jointlankle=0.198880 0.000000 0.000000 +jointrthigh=1.121046 0.000000 0.000000 +jointrknee=-1.100340 0.000000 0.000000 +jointrankle=0.288968 0.000000 0.000000 +[frame6] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.271701 0.000000 0.000000 +jointlknee=-0.708024 0.000000 0.000000 +jointlankle=-0.262981 0.000000 0.000000 +jointrthigh=1.331882 0.000000 0.000000 +jointrknee=-0.967816 0.000000 0.000000 +jointrankle=0.253684 0.000000 0.000000 +[frame10] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.383931 0.000000 0.000000 +jointlknee=-1.164100 0.000000 0.000000 +jointlankle=-0.369045 0.000000 0.000000 +jointrthigh=0.965050 0.000000 0.000000 +jointrknee=-0.162689 0.000000 0.000000 +jointrankle=-0.250045 0.000000 0.000000 +[frame13] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.190383 0.000000 0.000000 +jointlknee=-1.320067 0.000000 0.000000 +jointlankle=0.317546 0.000000 0.000000 +jointrthigh=0.593710 0.000000 0.000000 +jointrknee=-0.115273 0.000000 0.000000 +jointrankle=-0.205218 0.000000 0.000000 +[frame14] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.125867 0.000000 0.000000 +jointlknee=-1.372056 0.000000 0.000000 +jointlankle=0.546410 0.000000 0.000000 +jointrthigh=0.742426 0.000000 0.000000 +jointrknee=-0.733302 0.000000 0.000000 +jointrankle=-0.009204 0.000000 0.000000 + +[RootTranslation] +frame1=0.022705 -5.367000 0.000000 +frame2=0.022705 -5.367000 43.068005 +frame3=0.022705 -5.367000 43.068005 +frame4=0.022725 -5.367000 42.820934 +frame5=0.022746 -5.367000 42.821037 +frame6=0.022766 -5.367000 42.820934 +frame10=0.022705 -5.367000 42.776268 +frame13=0.022705 -5.367000 44.359516 +frame14=0.022705 -5.367000 44.359478 + +[KeyJointPos] +frame1=0.000000 -0.610076 0.000000 +frame2=0.000000 -0.422361 0.000000 +frame3=0.000000 -0.234645 0.000000 +frame4=0.000000 -0.164252 0.000000 +frame5=0.000000 -0.093858 0.000000 +frame6=0.000000 -0.023465 0.000000 +frame10=0.000000 0.070393 0.000000 +frame13=0.000000 -0.440786 0.000000 +frame14=0.000000 -0.611179 0.000000 diff --git a/CONTENT/BT/ANIMS/JAKRRRI.ANI b/CONTENT/BT/ANIMS/JAKRRRI.ANI new file mode 100644 index 0000000..c054258 --- /dev/null +++ b/CONTENT/BT/ANIMS/JAKRRRI.ANI @@ -0,0 +1,143 @@ +[LAB_ONLY] + +[HEADER] +framecount=9 +framerate=30 +skeletonfile=jak.skl +jointcount=8 + +[Time] +frame1=0 +frame2=0.0333333 +frame3=0.0666667 +frame4=0.1 +frame5=0.133333 +frame6=0.166667 +frame10=0.3 +frame13=0.4 +frame14=0.433333 + +[JointIndices] +jointlocal=0 +jointshakey=3 +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=12 +jointrknee=13 +jointrankle=14 + + +[JointType] +jointlocal=balltranslate +jointshakey=ball +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.743077 0.000000 0.000000 +jointlknee=-0.737124 0.000000 0.000000 +jointlankle=-0.005236 0.000000 0.000000 +jointrthigh=-0.125867 0.000000 0.000000 +jointrknee=-1.372056 0.000000 0.000000 +jointrankle=0.546410 0.000000 0.000000 +[frame2] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.470501 0.000000 0.000000 +jointlknee=-0.814952 0.000000 0.000000 +jointlankle=0.342753 0.000000 0.000000 +jointrthigh=0.286754 0.000000 0.000000 +jointrknee=-1.368721 0.000000 0.000000 +jointrankle=0.452973 0.000000 0.000000 +[frame3] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.118059 0.000000 0.000000 +jointlknee=-0.273076 0.000000 0.000000 +jointlankle=0.391360 0.000000 0.000000 +jointrthigh=0.699374 0.000000 0.000000 +jointrknee=-1.365387 0.000000 0.000000 +jointrankle=0.359536 0.000000 0.000000 +[frame4] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.012116 0.000000 0.000000 +jointlknee=-0.838858 0.000000 0.000000 +jointlankle=0.444872 0.000000 0.000000 +jointrthigh=0.910210 0.000000 0.000000 +jointrknee=-1.232863 0.000000 0.000000 +jointrankle=0.324252 0.000000 0.000000 +[frame5] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.088505 0.000000 0.000000 +jointlknee=-0.940905 0.000000 0.000000 +jointlankle=0.198880 0.000000 0.000000 +jointrthigh=1.121046 0.000000 0.000000 +jointrknee=-1.100340 0.000000 0.000000 +jointrankle=0.288968 0.000000 0.000000 +[frame6] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.271701 0.000000 0.000000 +jointlknee=-0.708024 0.000000 0.000000 +jointlankle=-0.262981 0.000000 0.000000 +jointrthigh=1.331882 0.000000 0.000000 +jointrknee=-0.967816 0.000000 0.000000 +jointrankle=0.253684 0.000000 0.000000 +[frame10] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.383931 0.000000 0.000000 +jointlknee=-1.164100 0.000000 0.000000 +jointlankle=-0.369045 0.000000 0.000000 +jointrthigh=0.965050 0.000000 0.000000 +jointrknee=-0.162689 0.000000 0.000000 +jointrankle=-0.250045 0.000000 0.000000 +[frame13] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.190383 0.000000 0.000000 +jointlknee=-1.320067 0.000000 0.000000 +jointlankle=0.317546 0.000000 0.000000 +jointrthigh=0.593710 0.000000 0.000000 +jointrknee=-0.115273 0.000000 0.000000 +jointrankle=-0.205218 0.000000 0.000000 +[frame14] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.125867 0.000000 0.000000 +jointlknee=-1.372056 0.000000 0.000000 +jointlankle=0.546410 0.000000 0.000000 +jointrthigh=0.742426 0.000000 0.000000 +jointrknee=-0.733302 0.000000 0.000000 +jointrankle=-0.009204 0.000000 0.000000 + +[RootTranslation] +frame1=0.022705 -5.367000 0.000000 +frame2=0.022705 -5.367000 43.068005 +frame3=0.022705 -5.367000 43.068005 +frame4=0.022725 -5.367000 42.820934 +frame5=0.022746 -5.367000 42.821037 +frame6=0.022766 -5.367000 42.820934 +frame10=0.022705 -5.367000 42.776268 +frame13=0.022705 -5.367000 44.359516 +frame14=0.022705 -5.367000 44.359478 + +[KeyJointPos] +frame1=0.000000 -0.610076 0.000000 +frame2=0.000000 -0.422361 0.000000 +frame3=0.000000 -0.234645 0.000000 +frame4=0.000000 -0.164252 0.000000 +frame5=0.000000 -0.093858 0.000000 +frame6=0.000000 -0.023465 0.000000 +frame10=0.000000 0.070393 0.000000 +frame13=0.000000 -0.440786 0.000000 +frame14=0.000000 -0.611179 0.000000 diff --git a/CONTENT/BT/ANIMS/JAKRWL.ANI b/CONTENT/BT/ANIMS/JAKRWL.ANI new file mode 100644 index 0000000..2091796 --- /dev/null +++ b/CONTENT/BT/ANIMS/JAKRWL.ANI @@ -0,0 +1,87 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=jak.skl +jointcount=7 + +[Time] +frame1=0 +frame4=0.1 +frame7=0.2 +frame8=0.233333 +frame9=0.266667 + +[JointIndices] +jointlocal=0 +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=12 +jointrknee=13 +jointrankle=14 + +[JointType] +jointlocal=balltranslate +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.125867 0.000000 0.000000 +jointlknee=-1.372056 0.000000 0.000000 +jointlankle=0.546410 0.000000 0.000000 +jointrthigh=0.740852 0.000000 0.000000 +jointrknee=-0.731824 0.000000 0.000000 +jointrankle=-0.010616 0.000000 0.000000 +[frame4] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.227024 0.000000 0.000000 +jointlknee=-1.163234 0.000000 0.000000 +jointlankle=0.737962 0.000000 0.000000 +jointrthigh=0.391528 0.000000 0.000000 +jointrknee=-0.890176 0.000000 0.000000 +jointrankle=0.494703 0.000000 0.000000 +[frame7] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.723509 0.000000 0.000000 +jointlknee=-0.923883 0.000000 0.000000 +jointlankle=0.309838 0.000000 0.000000 +jointrthigh=-0.090580 0.000000 0.000000 +jointrknee=-0.501983 0.000000 0.000000 +jointrankle=0.495967 0.000000 0.000000 +[frame8] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.771818 0.000000 0.000000 +jointlknee=-0.618335 0.000000 0.000000 +jointlankle=0.130211 0.000000 0.000000 +jointrthigh=-0.166147 0.000000 0.000000 +jointrknee=-0.518128 0.000000 0.000000 +jointrankle=0.520940 0.000000 0.000000 +[frame9] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.593300 0.000000 0.000000 +jointlknee=-0.135467 0.000000 0.000000 +jointlankle=-0.074152 0.000000 0.000000 +jointrthigh=-0.241714 0.000000 0.000000 +jointrknee=-0.534273 0.000000 0.000000 +jointrankle=0.545913 0.000000 0.000000 + +[RootTranslation] +frame1=0.022705 -5.367000 0.000000 +frame4=0.022705 -5.367000 19.724007 +frame7=0.022705 -5.367000 14.234390 +frame8=0.022705 -5.367000 14.234391 +frame9=0.022705 -5.367000 14.234385 + +[KeyJointPos] +frame1=0.000000 -0.611179 0.000000 +frame4=0.000000 -0.522871 0.000000 +frame7=0.000000 -0.434562 0.000000 +frame8=0.000000 -0.405126 0.000000 +frame9=0.000000 -0.375690 0.000000 diff --git a/CONTENT/BT/ANIMS/JAKRWLI.ANI b/CONTENT/BT/ANIMS/JAKRWLI.ANI new file mode 100644 index 0000000..796d9b3 --- /dev/null +++ b/CONTENT/BT/ANIMS/JAKRWLI.ANI @@ -0,0 +1,95 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=jak.skl +jointcount=8 + +[Time] +frame1=0 +frame4=0.1 +frame7=0.2 +frame8=0.233333 +frame9=0.266667 + +[JointIndices] +jointlocal=0 +jointshakey=3 +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=12 +jointrknee=13 +jointrankle=14 + + +[JointType] +jointlocal=balltranslate +jointshakey=ball +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.125867 0.000000 0.000000 +jointlknee=-1.372056 0.000000 0.000000 +jointlankle=0.546410 0.000000 0.000000 +jointrthigh=0.740852 0.000000 0.000000 +jointrknee=-0.731824 0.000000 0.000000 +jointrankle=-0.010616 0.000000 0.000000 +[frame4] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.227024 0.000000 0.000000 +jointlknee=-1.163234 0.000000 0.000000 +jointlankle=0.737962 0.000000 0.000000 +jointrthigh=0.391528 0.000000 0.000000 +jointrknee=-0.890176 0.000000 0.000000 +jointrankle=0.494703 0.000000 0.000000 +[frame7] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.723509 0.000000 0.000000 +jointlknee=-0.923883 0.000000 0.000000 +jointlankle=0.309838 0.000000 0.000000 +jointrthigh=-0.090580 0.000000 0.000000 +jointrknee=-0.501983 0.000000 0.000000 +jointrankle=0.495967 0.000000 0.000000 +[frame8] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.771818 0.000000 0.000000 +jointlknee=-0.618335 0.000000 0.000000 +jointlankle=0.130211 0.000000 0.000000 +jointrthigh=-0.166147 0.000000 0.000000 +jointrknee=-0.518128 0.000000 0.000000 +jointrankle=0.520940 0.000000 0.000000 +[frame9] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.593300 0.000000 0.000000 +jointlknee=-0.135467 0.000000 0.000000 +jointlankle=-0.074152 0.000000 0.000000 +jointrthigh=-0.241714 0.000000 0.000000 +jointrknee=-0.534273 0.000000 0.000000 +jointrankle=0.545913 0.000000 0.000000 + +[RootTranslation] +frame1=0.022705 -5.367000 0.000000 +frame4=0.022705 -5.367000 19.724007 +frame7=0.022705 -5.367000 14.234390 +frame8=0.022705 -5.367000 14.234391 +frame9=0.022705 -5.367000 14.234385 + +[KeyJointPos] +frame1=0.000000 -0.611179 0.000000 +frame4=0.000000 -0.522871 0.000000 +frame7=0.000000 -0.434562 0.000000 +frame8=0.000000 -0.405126 0.000000 +frame9=0.000000 -0.375690 0.000000 diff --git a/CONTENT/BT/ANIMS/JAKRWR.ANI b/CONTENT/BT/ANIMS/JAKRWR.ANI new file mode 100644 index 0000000..ba46737 --- /dev/null +++ b/CONTENT/BT/ANIMS/JAKRWR.ANI @@ -0,0 +1,87 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=jak.skl +jointcount=7 + +[Time] +frame1=0 +frame4=0.1 +frame7=0.2 +frame8=0.233333 +frame9=0.266667 + +[JointIndices] +jointlocal=0 +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=12 +jointrknee=13 +jointrankle=14 + +[JointType] +jointlocal=balltranslate +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.740852 0.000000 0.000000 +jointlknee=-0.731824 0.000000 0.000000 +jointlankle=-0.010616 0.000000 0.000000 +jointrthigh=-0.125867 0.000000 0.000000 +jointrknee=-1.372056 0.000000 0.000000 +jointrankle=0.546410 0.000000 0.000000 +[frame4] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.391528 0.000000 0.000000 +jointlknee=-0.890176 0.000000 0.000000 +jointlankle=0.494703 0.000000 0.000000 +jointrthigh=0.227024 0.000000 0.000000 +jointrknee=-1.163234 0.000000 0.000000 +jointrankle=0.737962 0.000000 0.000000 +[frame7] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.209289 0.000000 0.000000 +jointlknee=-0.315376 0.000000 0.000000 +jointlankle=0.525911 0.000000 0.000000 +jointrthigh=0.723509 0.000000 0.000000 +jointrknee=-0.923883 0.000000 0.000000 +jointrankle=0.309838 0.000000 0.000000 +[frame8] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.221272 0.000000 0.000000 +jointlknee=-0.432610 0.000000 0.000000 +jointlankle=0.539170 0.000000 0.000000 +jointrthigh=0.771818 0.000000 0.000000 +jointrknee=-0.618335 0.000000 0.000000 +jointrankle=0.130211 0.000000 0.000000 +[frame9] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.233255 0.000000 0.000000 +jointlknee=-0.549845 0.000000 0.000000 +jointlankle=0.552428 0.000000 0.000000 +jointrthigh=0.593300 0.000000 0.000000 +jointrknee=-0.135467 0.000000 0.000000 +jointrankle=-0.074152 0.000000 0.000000 + +[RootTranslation] +frame1=0.022705 -5.367000 0.000000 +frame4=0.022705 -5.367000 19.724007 +frame7=0.022705 -5.367000 14.234390 +frame8=0.022705 -5.367000 14.234391 +frame9=0.022705 -5.367000 14.234385 + +[KeyJointPos] +frame1=0.000000 -0.611179 0.000000 +frame4=0.000000 -0.522871 0.000000 +frame7=0.000000 -0.434562 0.000000 +frame8=0.000000 -0.405126 0.000000 +frame9=0.000000 -0.375690 0.000000 diff --git a/CONTENT/BT/ANIMS/JAKRWRI.ANI b/CONTENT/BT/ANIMS/JAKRWRI.ANI new file mode 100644 index 0000000..5a1803a --- /dev/null +++ b/CONTENT/BT/ANIMS/JAKRWRI.ANI @@ -0,0 +1,95 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=jak.skl +jointcount=8 + +[Time] +frame1=0 +frame4=0.1 +frame7=0.2 +frame8=0.233333 +frame9=0.266667 + +[JointIndices] +jointlocal=0 +jointshakey=3 +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=12 +jointrknee=13 +jointrankle=14 + + +[JointType] +jointlocal=balltranslate +jointshakey=ball +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.740852 0.000000 0.000000 +jointlknee=-0.731824 0.000000 0.000000 +jointlankle=-0.010616 0.000000 0.000000 +jointrthigh=-0.125867 0.000000 0.000000 +jointrknee=-1.372056 0.000000 0.000000 +jointrankle=0.546410 0.000000 0.000000 +[frame4] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.391528 0.000000 0.000000 +jointlknee=-0.890176 0.000000 0.000000 +jointlankle=0.494703 0.000000 0.000000 +jointrthigh=0.227024 0.000000 0.000000 +jointrknee=-1.163234 0.000000 0.000000 +jointrankle=0.737962 0.000000 0.000000 +[frame7] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.209289 0.000000 0.000000 +jointlknee=-0.315376 0.000000 0.000000 +jointlankle=0.525911 0.000000 0.000000 +jointrthigh=0.723509 0.000000 0.000000 +jointrknee=-0.923883 0.000000 0.000000 +jointrankle=0.309838 0.000000 0.000000 +[frame8] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.221272 0.000000 0.000000 +jointlknee=-0.432610 0.000000 0.000000 +jointlankle=0.539170 0.000000 0.000000 +jointrthigh=0.771818 0.000000 0.000000 +jointrknee=-0.618335 0.000000 0.000000 +jointrankle=0.130211 0.000000 0.000000 +[frame9] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.233255 0.000000 0.000000 +jointlknee=-0.549845 0.000000 0.000000 +jointlankle=0.552428 0.000000 0.000000 +jointrthigh=0.593300 0.000000 0.000000 +jointrknee=-0.135467 0.000000 0.000000 +jointrankle=-0.074152 0.000000 0.000000 + +[RootTranslation] +frame1=0.022705 -5.367000 0.000000 +frame4=0.022705 -5.367000 19.724007 +frame7=0.022705 -5.367000 14.234390 +frame8=0.022705 -5.367000 14.234391 +frame9=0.022705 -5.367000 14.234385 + +[KeyJointPos] +frame1=0.000000 -0.611179 0.000000 +frame4=0.000000 -0.522871 0.000000 +frame7=0.000000 -0.434562 0.000000 +frame8=0.000000 -0.405126 0.000000 +frame9=0.000000 -0.375690 0.000000 diff --git a/CONTENT/BT/ANIMS/JAKSBL.ANI b/CONTENT/BT/ANIMS/JAKSBL.ANI new file mode 100644 index 0000000..bfb3fdb --- /dev/null +++ b/CONTENT/BT/ANIMS/JAKSBL.ANI @@ -0,0 +1,164 @@ +[LAB_ONLY] + +[HEADER] +framecount=12 +framerate=30 +skeletonfile=jak.skl +jointcount=7 + +[Time] +frame1=0 +frame6=0.166667 +frame8=0.233333 +frame10=0.3 +frame12=0.366667 +frame14=0.433333 +frame16=0.5 +frame24=0.766667 +frame25=0.8 +frame27=0.866667 +frame28=0.9 +frame58=1.9 + +[JointIndices] +jointlocal=0 +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=12 +jointrknee=13 +jointrankle=14 + +[JointType] +jointlocal=balltranslate +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +[frame6] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.039890 0.000000 0.000000 +jointlknee=-0.315728 0.000000 0.000000 +jointlankle=0.268774 0.000000 0.000000 +jointrthigh=0.291257 0.000000 0.000000 +jointrknee=-0.339617 0.000000 0.000000 +jointrankle=0.047958 0.000000 0.000000 +[frame8] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.055846 0.000000 0.000000 +jointlknee=-0.442019 0.000000 0.000000 +jointlankle=0.376284 0.000000 0.000000 +jointrthigh=0.327644 0.000000 0.000000 +jointrknee=-0.321943 0.000000 0.000000 +jointrankle=-0.003844 0.000000 0.000000 +[frame10] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.035099 0.000000 0.000000 +jointlknee=-0.485500 0.000000 0.000000 +jointlankle=0.414980 0.000000 0.000000 +jointrthigh=0.363957 0.000000 0.000000 +jointrknee=-0.303755 0.000000 0.000000 +jointrankle=-0.062042 0.000000 0.000000 +[frame12] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.014352 0.000000 0.000000 +jointlknee=-0.528980 0.000000 0.000000 +jointlankle=0.453675 0.000000 0.000000 +jointrthigh=0.382447 0.000000 0.000000 +jointrknee=-0.254677 0.000000 0.000000 +jointrankle=-0.128940 0.000000 0.000000 +[frame14] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.006395 0.000000 0.000000 +jointlknee=-0.572461 0.000000 0.000000 +jointlankle=0.492370 0.000000 0.000000 +jointrthigh=0.365831 0.000000 0.000000 +jointrknee=-0.139148 0.000000 0.000000 +jointrankle=-0.224533 0.000000 0.000000 +[frame16] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.027141 0.000000 0.000000 +jointlknee=-0.615942 0.000000 0.000000 +jointlankle=0.531065 0.000000 0.000000 +jointrthigh=0.403431 0.000000 0.000000 +jointrknee=-0.152300 0.000000 0.000000 +jointrankle=-0.194389 0.000000 0.000000 +[frame24] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.285520 0.000000 0.000000 +jointlknee=-0.564487 0.000000 0.000000 +jointlankle=0.512807 0.000000 0.000000 +jointrthigh=0.553827 0.000000 0.000000 +jointrknee=-0.204906 0.000000 0.000000 +jointrankle=-0.073811 0.000000 0.000000 +[frame25] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.318467 0.000000 0.000000 +jointlknee=-0.507659 0.000000 0.000000 +jointlankle=0.500351 0.000000 0.000000 +jointrthigh=0.572627 0.000000 0.000000 +jointrknee=-0.211482 0.000000 0.000000 +jointrankle=-0.058738 0.000000 0.000000 +[frame27] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.315700 0.000000 0.000000 +jointlknee=-0.461334 0.000000 0.000000 +jointlankle=0.520487 0.000000 0.000000 +jointrthigh=0.610226 0.000000 0.000000 +jointrknee=-0.224633 0.000000 0.000000 +jointrankle=-0.028594 0.000000 0.000000 +[frame28] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.304953 0.000000 0.000000 +jointlknee=-0.453821 0.000000 0.000000 +jointlankle=0.526395 0.000000 0.000000 +jointrthigh=0.629025 0.000000 0.000000 +jointrknee=-0.231209 0.000000 0.000000 +jointrankle=-0.013522 0.000000 0.000000 +[frame58] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.329438 0.000000 0.000000 +jointlknee=-0.411549 0.000000 0.000000 +jointlankle=0.521606 0.000000 0.000000 +jointrthigh=0.629015 0.000000 0.000000 +jointrknee=-0.231211 0.000000 0.000000 +jointrankle=-0.013510 0.000000 0.000000 + +[RootTranslation] +frame1=0.022679 -5.367080 0.000000 +frame6=0.022684 -5.367065 -3.321556 +frame8=0.022686 -5.367060 -3.321562 +frame10=0.022688 -5.367054 -3.321561 +frame12=0.022690 -5.367048 -3.321562 +frame14=0.022692 -5.367042 -3.321562 +frame16=0.022694 -5.367036 -3.321548 +frame24=0.022701 -5.367012 -3.321558 +frame25=0.022702 -5.367009 -3.321559 +frame27=0.022704 -5.367003 -3.321548 +frame28=0.022705 -5.367000 -3.321536 +frame58=0.022705 -5.367000 -3.905800 + +[KeyJointPos] +frame1=0.000000 0.000000 0.000000 +frame6=0.000000 -0.069572 0.000000 +frame8=0.000000 -0.097402 0.000000 +frame10=0.000000 -0.125230 0.000000 +frame12=0.000000 -0.153059 0.000000 +frame14=0.000000 -0.180888 0.000000 +frame16=0.000000 -0.208717 0.000000 +frame24=0.000000 -0.320032 0.000000 +frame25=0.000000 -0.333947 0.000000 +frame27=0.000000 -0.361775 0.000000 +frame28=0.000000 -0.375690 0.000000 +frame58=0.000000 -0.375690 0.000000 diff --git a/CONTENT/BT/ANIMS/JAKSBR.ANI b/CONTENT/BT/ANIMS/JAKSBR.ANI new file mode 100644 index 0000000..e6d2b89 --- /dev/null +++ b/CONTENT/BT/ANIMS/JAKSBR.ANI @@ -0,0 +1,164 @@ +[LAB_ONLY] + +[HEADER] +framecount=12 +framerate=30 +skeletonfile=jak.skl +jointcount=7 + +[Time] +frame1=0 +frame6=0.166667 +frame8=0.233333 +frame10=0.3 +frame12=0.366667 +frame14=0.433333 +frame16=0.5 +frame24=0.766667 +frame25=0.8 +frame27=0.866667 +frame28=0.9 +frame58=1.9 + +[JointIndices] +jointlocal=0 +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=12 +jointrknee=13 +jointrankle=14 + +[JointType] +jointlocal=balltranslate +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +[frame6] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.291257 0.000000 0.000000 +jointlknee=-0.339617 0.000000 0.000000 +jointlankle=0.047958 0.000000 0.000000 +jointrthigh=0.039890 0.000000 0.000000 +jointrknee=-0.315728 0.000000 0.000000 +jointrankle=0.268774 0.000000 0.000000 +[frame8] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.327644 0.000000 0.000000 +jointlknee=-0.321943 0.000000 0.000000 +jointlankle=-0.003844 0.000000 0.000000 +jointrthigh=0.055846 0.000000 0.000000 +jointrknee=-0.442019 0.000000 0.000000 +jointrankle=0.376284 0.000000 0.000000 +[frame10] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.363957 0.000000 0.000000 +jointlknee=-0.303755 0.000000 0.000000 +jointlankle=-0.062042 0.000000 0.000000 +jointrthigh=0.035099 0.000000 0.000000 +jointrknee=-0.485500 0.000000 0.000000 +jointrankle=0.414980 0.000000 0.000000 +[frame12] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.382447 0.000000 0.000000 +jointlknee=-0.254677 0.000000 0.000000 +jointlankle=-0.128940 0.000000 0.000000 +jointrthigh=0.014352 0.000000 0.000000 +jointrknee=-0.528980 0.000000 0.000000 +jointrankle=0.453675 0.000000 0.000000 +[frame14] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.365831 0.000000 0.000000 +jointlknee=-0.139148 0.000000 0.000000 +jointlankle=-0.224533 0.000000 0.000000 +jointrthigh=-0.006395 0.000000 0.000000 +jointrknee=-0.572461 0.000000 0.000000 +jointrankle=0.492370 0.000000 0.000000 +[frame16] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.403431 0.000000 0.000000 +jointlknee=-0.152300 0.000000 0.000000 +jointlankle=-0.194389 0.000000 0.000000 +jointrthigh=-0.027141 0.000000 0.000000 +jointrknee=-0.615942 0.000000 0.000000 +jointrankle=0.531065 0.000000 0.000000 +[frame24] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.553827 0.000000 0.000000 +jointlknee=-0.204906 0.000000 0.000000 +jointlankle=-0.073811 0.000000 0.000000 +jointrthigh=-0.285520 0.000000 0.000000 +jointrknee=-0.564487 0.000000 0.000000 +jointrankle=0.512807 0.000000 0.000000 +[frame25] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.572627 0.000000 0.000000 +jointlknee=-0.211482 0.000000 0.000000 +jointlankle=-0.058738 0.000000 0.000000 +jointrthigh=-0.318467 0.000000 0.000000 +jointrknee=-0.507659 0.000000 0.000000 +jointrankle=0.500351 0.000000 0.000000 +[frame27] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.610226 0.000000 0.000000 +jointlknee=-0.224633 0.000000 0.000000 +jointlankle=-0.028594 0.000000 0.000000 +jointrthigh=-0.315700 0.000000 0.000000 +jointrknee=-0.461334 0.000000 0.000000 +jointrankle=0.520487 0.000000 0.000000 +[frame28] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.629025 0.000000 0.000000 +jointlknee=-0.231209 0.000000 0.000000 +jointlankle=-0.013522 0.000000 0.000000 +jointrthigh=-0.302406 0.000000 0.000000 +jointrknee=-0.459142 0.000000 0.000000 +jointrankle=0.528793 0.000000 0.000000 +[frame58] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.629015 0.000000 0.000000 +jointlknee=-0.231211 0.000000 0.000000 +jointlankle=-0.013510 0.000000 0.000000 +jointrthigh=-0.329438 0.000000 0.000000 +jointrknee=-0.411549 0.000000 0.000000 +jointrankle=0.521606 0.000000 0.000000 + +[RootTranslation] +frame1=0.022679 -5.367080 0.000000 +frame6=0.022684 -5.367065 -3.321556 +frame8=0.022686 -5.367060 -3.321562 +frame10=0.022688 -5.367054 -3.321561 +frame12=0.022690 -5.367048 -3.321562 +frame14=0.022692 -5.367042 -3.321562 +frame16=0.022694 -5.367036 -3.321548 +frame24=0.022701 -5.367012 -3.321558 +frame25=0.022702 -5.367009 -3.321559 +frame27=0.022704 -5.367003 -3.321548 +frame28=0.022705 -5.367000 -3.321536 +frame58=0.022705 -5.367000 -3.905800 + +[KeyJointPos] +frame1=0.000000 0.000000 0.000000 +frame6=0.000000 -0.069572 0.000000 +frame8=0.000000 -0.097402 0.000000 +frame10=0.000000 -0.125230 0.000000 +frame12=0.000000 -0.153059 0.000000 +frame14=0.000000 -0.180888 0.000000 +frame16=0.000000 -0.208717 0.000000 +frame24=0.000000 -0.320032 0.000000 +frame25=0.000000 -0.333947 0.000000 +frame27=0.000000 -0.361775 0.000000 +frame28=0.000000 -0.375690 0.000000 +frame58=0.000000 -0.375690 0.000000 diff --git a/CONTENT/BT/ANIMS/JAKSWL.ANI b/CONTENT/BT/ANIMS/JAKSWL.ANI new file mode 100644 index 0000000..0b83780 --- /dev/null +++ b/CONTENT/BT/ANIMS/JAKSWL.ANI @@ -0,0 +1,87 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=jak.skl +jointcount=7 + +[Time] +frame1=0 +frame8=0.233333 +frame12=0.366667 +frame25=0.8 +frame55=1.8 + +[JointIndices] +jointlocal=0 +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=12 +jointrknee=13 +jointrankle=14 + +[JointType] +jointlocal=balltranslate +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +[frame8] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.257063 0.000000 0.000000 +jointlknee=-0.371272 0.000000 0.000000 +jointlankle=0.141490 0.000000 0.000000 +jointrthigh=-0.135466 0.000000 0.000000 +jointrknee=-0.010869 0.000000 0.000000 +jointrankle=0.131098 0.000000 0.000000 +[frame12] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.380822 0.000000 0.000000 +jointlknee=-0.462648 0.000000 0.000000 +jointlankle=0.125419 0.000000 0.000000 +jointrthigh=-0.218775 0.000000 0.000000 +jointrknee=-0.014805 0.000000 0.000000 +jointrankle=0.218170 0.000000 0.000000 +[frame25] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.629025 0.000000 0.000000 +jointlknee=-0.231209 0.000000 0.000000 +jointlankle=-0.013522 0.000000 0.000000 +jointrthigh=-0.459470 0.000000 0.000000 +jointrknee=-0.186817 0.000000 0.000000 +jointrankle=0.455412 0.000000 0.000000 +[frame55] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.629025 0.000000 0.000000 +jointlknee=-0.231209 0.000000 0.000000 +jointlankle=-0.013522 0.000000 0.000000 +jointrthigh=-0.436133 0.000000 0.000000 +jointrknee=-0.220021 0.000000 0.000000 +jointrankle=0.464659 0.000000 0.000000 + +[RootTranslation] +frame1=0.022679 -5.367080 0.000000 +frame8=0.022692 -5.367000 3.049658 +frame12=0.022705 -5.367000 3.248550 +frame25=0.022705 -5.367000 3.897208 +frame55=0.022705 -5.367000 3.892190 + +[KeyJointPos] +frame1=0.000000 0.000000 0.000000 +frame8=0.000000 -0.023465 0.000000 +frame12=0.000000 -0.093863 0.000000 +frame25=0.000000 -0.375690 0.000000 +frame55=0.000000 -0.375690 0.000000 diff --git a/CONTENT/BT/ANIMS/JAKSWLI.ANI b/CONTENT/BT/ANIMS/JAKSWLI.ANI new file mode 100644 index 0000000..1e725d9 --- /dev/null +++ b/CONTENT/BT/ANIMS/JAKSWLI.ANI @@ -0,0 +1,94 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=jak.skl +jointcount=8 + +[Time] +frame1=0 +frame8=0.233333 +frame12=0.366667 +frame25=0.8 +frame55=1.8 + +[JointIndices] +jointlocal=0 +jointshakey=3 +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=12 +jointrknee=13 +jointrankle=14 + +[JointType] +jointlocal=balltranslate +jointshakey=ball +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +[frame8] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.257063 0.000000 0.000000 +jointlknee=-0.371272 0.000000 0.000000 +jointlankle=0.141490 0.000000 0.000000 +jointrthigh=-0.135466 0.000000 0.000000 +jointrknee=-0.010869 0.000000 0.000000 +jointrankle=0.131098 0.000000 0.000000 +[frame12] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.380822 0.000000 0.000000 +jointlknee=-0.462648 0.000000 0.000000 +jointlankle=0.125419 0.000000 0.000000 +jointrthigh=-0.218775 0.000000 0.000000 +jointrknee=-0.014805 0.000000 0.000000 +jointrankle=0.218170 0.000000 0.000000 +[frame25] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.629025 0.000000 0.000000 +jointlknee=-0.231209 0.000000 0.000000 +jointlankle=-0.013522 0.000000 0.000000 +jointrthigh=-0.459470 0.000000 0.000000 +jointrknee=-0.186817 0.000000 0.000000 +jointrankle=0.455412 0.000000 0.000000 +[frame55] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.629025 0.000000 0.000000 +jointlknee=-0.231209 0.000000 0.000000 +jointlankle=-0.013522 0.000000 0.000000 +jointrthigh=-0.436133 0.000000 0.000000 +jointrknee=-0.220021 0.000000 0.000000 +jointrankle=0.464659 0.000000 0.000000 + +[RootTranslation] +frame1=0.022679 -5.367080 0.000000 +frame8=0.022692 -5.367000 3.049658 +frame12=0.022705 -5.367000 3.248550 +frame25=0.022705 -5.367000 3.897208 +frame55=0.022705 -5.367000 3.892190 + +[KeyJointPos] +frame1=0.000000 0.000000 0.000000 +frame8=0.000000 -0.023465 0.000000 +frame12=0.000000 -0.093863 0.000000 +frame25=0.000000 -0.375690 0.000000 +frame55=0.000000 -0.375690 0.000000 diff --git a/CONTENT/BT/ANIMS/JAKSWR.ANI b/CONTENT/BT/ANIMS/JAKSWR.ANI new file mode 100644 index 0000000..cb5c327 --- /dev/null +++ b/CONTENT/BT/ANIMS/JAKSWR.ANI @@ -0,0 +1,87 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=jak.skl +jointcount=7 + +[Time] +frame1=0 +frame8=0.233333 +frame12=0.366667 +frame25=0.8 +frame55=1.8 + +[JointIndices] +jointlocal=0 +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=12 +jointrknee=13 +jointrankle=14 + +[JointType] +jointlocal=balltranslate +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +[frame8] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.135466 0.000000 0.000000 +jointlknee=-0.010869 0.000000 0.000000 +jointlankle=0.131098 0.000000 0.000000 +jointrthigh=0.257063 0.000000 0.000000 +jointrknee=-0.371272 0.000000 0.000000 +jointrankle=0.141490 0.000000 0.000000 +[frame12] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.218775 0.000000 0.000000 +jointlknee=-0.014805 0.000000 0.000000 +jointlankle=0.218170 0.000000 0.000000 +jointrthigh=0.380822 0.000000 0.000000 +jointrknee=-0.462648 0.000000 0.000000 +jointrankle=0.125419 0.000000 0.000000 +[frame25] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.459470 0.000000 0.000000 +jointlknee=-0.186817 0.000000 0.000000 +jointlankle=0.455412 0.000000 0.000000 +jointrthigh=0.629025 0.000000 0.000000 +jointrknee=-0.231209 0.000000 0.000000 +jointrankle=-0.013522 0.000000 0.000000 +[frame55] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.436133 0.000000 0.000000 +jointlknee=-0.220021 0.000000 0.000000 +jointlankle=0.464659 0.000000 0.000000 +jointrthigh=0.629025 0.000000 0.000000 +jointrknee=-0.231209 0.000000 0.000000 +jointrankle=-0.013522 0.000000 0.000000 + +[RootTranslation] +frame1=0.022679 -5.367080 0.000000 +frame8=0.022692 -5.367000 3.049658 +frame12=0.022705 -5.367000 3.248550 +frame25=0.022705 -5.367000 3.897208 +frame55=0.022705 -5.367000 3.892190 + +[KeyJointPos] +frame1=0.000000 0.000000 0.000000 +frame8=0.000000 -0.023465 0.000000 +frame12=0.000000 -0.093863 0.000000 +frame25=0.000000 -0.375690 0.000000 +frame55=0.000000 -0.375690 0.000000 diff --git a/CONTENT/BT/ANIMS/JAKSWRI.ANI b/CONTENT/BT/ANIMS/JAKSWRI.ANI new file mode 100644 index 0000000..27effe7 --- /dev/null +++ b/CONTENT/BT/ANIMS/JAKSWRI.ANI @@ -0,0 +1,94 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=jak.skl +jointcount=8 + +[Time] +frame1=0 +frame8=0.233333 +frame12=0.366667 +frame25=0.8 +frame55=1.8 + +[JointIndices] +jointlocal=0 +jointshakey=3 +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=12 +jointrknee=13 +jointrankle=14 + +[JointType] +jointlocal=balltranslate +jointshakey=ball +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +[frame8] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.135466 0.000000 0.000000 +jointlknee=-0.010869 0.000000 0.000000 +jointlankle=0.131098 0.000000 0.000000 +jointrthigh=0.257063 0.000000 0.000000 +jointrknee=-0.371272 0.000000 0.000000 +jointrankle=0.141490 0.000000 0.000000 +[frame12] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.218775 0.000000 0.000000 +jointlknee=-0.014805 0.000000 0.000000 +jointlankle=0.218170 0.000000 0.000000 +jointrthigh=0.380822 0.000000 0.000000 +jointrknee=-0.462648 0.000000 0.000000 +jointrankle=0.125419 0.000000 0.000000 +[frame25] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.459470 0.000000 0.000000 +jointlknee=-0.186817 0.000000 0.000000 +jointlankle=0.455412 0.000000 0.000000 +jointrthigh=0.629025 0.000000 0.000000 +jointrknee=-0.231209 0.000000 0.000000 +jointrankle=-0.013522 0.000000 0.000000 +[frame55] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.436133 0.000000 0.000000 +jointlknee=-0.220021 0.000000 0.000000 +jointlankle=0.464659 0.000000 0.000000 +jointrthigh=0.629025 0.000000 0.000000 +jointrknee=-0.231209 0.000000 0.000000 +jointrankle=-0.013522 0.000000 0.000000 + +[RootTranslation] +frame1=0.022679 -5.367080 0.000000 +frame8=0.022692 -5.367000 3.049658 +frame12=0.022705 -5.367000 3.248550 +frame25=0.022705 -5.367000 3.897208 +frame55=0.022705 -5.367000 3.892190 + +[KeyJointPos] +frame1=0.000000 0.000000 0.000000 +frame8=0.000000 -0.023465 0.000000 +frame12=0.000000 -0.093863 0.000000 +frame25=0.000000 -0.375690 0.000000 +frame55=0.000000 -0.375690 0.000000 diff --git a/CONTENT/BT/ANIMS/JAKTRN.ANI b/CONTENT/BT/ANIMS/JAKTRN.ANI new file mode 100644 index 0000000..34eb1f2 --- /dev/null +++ b/CONTENT/BT/ANIMS/JAKTRN.ANI @@ -0,0 +1,87 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=jak.skl +jointcount=7 + +[Time] +frame1=0 +frame12=0.366667 +frame23=0.733333 +frame34=1.1 +frame45=1.46667 + +[JointIndices] +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=12 +jointrknee=13 +jointrankle=14 +jointlocal=0 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate + +[frame1] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame12] +jointlthigh=0.293659 0.000000 0.000000 +jointlknee=-0.760082 0.000000 0.000000 +jointlankle=0.454452 0.000000 0.000000 +jointrthigh=0.058707 0.000000 0.000000 +jointrknee=-0.159500 0.000000 0.000000 +jointrankle=0.101507 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.018326 +[frame23] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame34] +jointlthigh=0.044154 0.000000 0.000000 +jointlknee=-0.119840 0.000000 0.000000 +jointlankle=0.076623 0.000000 0.000000 +jointrthigh=0.307909 0.000000 0.000000 +jointrknee=-0.797483 0.000000 0.000000 +jointrankle=0.477670 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.018326 +[frame45] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame12=0.000000 -5.350000 0.000000 +frame23=0.000000 -5.350000 0.000000 +frame34=0.000000 -5.350000 0.000000 +frame45=0.000000 -5.350000 0.000000 + +[KeyJointPos] +frame1=0.000000 0.000000 0.000000 +frame12=0.113777 -0.001042 0.000000 +frame23=0.000000 0.000000 0.000000 +frame34=-0.113777 -0.001042 0.000000 +frame45=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/JAKTRNI.ANI b/CONTENT/BT/ANIMS/JAKTRNI.ANI new file mode 100644 index 0000000..6cafdf4 --- /dev/null +++ b/CONTENT/BT/ANIMS/JAKTRNI.ANI @@ -0,0 +1,94 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=jak.skl +jointcount=8 + +[Time] +frame1=0 +frame12=0.366667 +frame23=0.733333 +frame34=1.1 +frame45=1.46667 + +[JointIndices] +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=12 +jointrknee=13 +jointrankle=14 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame12] +jointlthigh=0.285597 0.000000 0.000000 +jointlknee=-0.733401 0.000000 0.000000 +jointlankle=0.435383 0.000000 0.000000 +jointrthigh=0.000030 0.000000 0.000000 +jointrknee=-0.000382 0.000000 0.000000 +jointrankle=0.000807 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.009163 +jointshakey=0.000000 0.000000 -0.009163 +[frame23] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame34] +jointlthigh=0.061957 0.000000 0.000000 +jointlknee=-0.168362 0.000000 0.000000 +jointlankle=0.107585 0.000000 0.000000 +jointrthigh=0.300350 0.000000 0.000000 +jointrknee=-0.771961 0.000000 0.000000 +jointrankle=0.459248 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.009163 +jointshakey=0.000000 0.000000 0.009163 +[frame45] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame12=0.000000 -5.350000 0.000000 +frame23=0.000000 -5.350000 0.000000 +frame34=0.000000 -5.350000 0.000000 +frame45=0.000000 -5.350000 0.000000 + +[KeyJointPos] +frame1=0.000000 0.000000 0.000000 +frame12=0.000000 0.000000 0.000000 +frame23=0.000000 0.000000 0.000000 +frame34=0.000000 0.000000 0.000000 +frame45=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/JAKWGL.ANI b/CONTENT/BT/ANIMS/JAKWGL.ANI new file mode 100644 index 0000000..dd1c427 --- /dev/null +++ b/CONTENT/BT/ANIMS/JAKWGL.ANI @@ -0,0 +1,98 @@ +[LAB_ONLY] + +[HEADER] +framecount=6 +framerate=30 +skeletonfile=jak.skl +jointcount=7 + +[Time] +frame1=0 +frame10=0.3 +frame17=0.533333 +frame22=0.7 +frame26=0.833333 +frame56=1.83333 + +[JointIndices] +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=12 +jointrknee=13 +jointrankle=14 +jointlocal=0 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate + +[frame1] +jointlthigh=-0.492373 0.000000 0.000000 +jointlknee=-0.475967 0.000000 0.000000 +jointlankle=0.650851 0.000000 0.000000 +jointrthigh=0.412577 0.000000 0.000000 +jointrknee=-0.267172 0.000000 0.000000 +jointrankle=0.163490 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame10] +jointlthigh=-0.589846 0.000000 0.000000 +jointlknee=-0.516366 0.000000 0.000000 +jointlankle=0.287503 0.000000 0.000000 +jointrthigh=0.356485 0.000000 0.000000 +jointrknee=-0.233317 0.000000 0.000000 +jointrankle=0.070402 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.009425 +[frame17] +jointlthigh=-0.526360 0.000000 0.000000 +jointlknee=-0.511573 0.000000 0.000000 +jointlankle=-0.216180 0.000000 0.000000 +jointrthigh=0.224610 0.000000 0.000000 +jointrknee=-0.283318 0.000000 0.000000 +jointrankle=0.058921 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.016755 +[frame22] +jointlthigh=-0.254822 0.000000 0.000000 +jointlknee=-0.689241 0.000000 0.000000 +jointlankle=-0.543888 0.000000 0.000000 +jointrthigh=0.050688 0.000000 0.000000 +jointrknee=-0.218753 0.000000 0.000000 +jointrankle=0.163589 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.021991 +[frame26] +jointlthigh=-0.049463 0.000000 0.000000 +jointlknee=-0.814266 0.000000 0.000000 +jointlankle=-0.499950 0.000000 0.000000 +jointrthigh=-0.054350 0.000000 0.000000 +jointrknee=-0.236876 0.000000 0.000000 +jointrankle=0.288957 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.026180 +[frame56] +jointlthigh=-0.047994 0.000000 0.000000 +jointlknee=-0.818416 0.000000 0.000000 +jointlankle=-0.497190 0.000000 0.000000 +jointrthigh=-0.064916 0.000000 0.000000 +jointrknee=-0.205319 0.000000 0.000000 +jointrankle=0.268894 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.026180 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame10=0.000000 -5.350000 4.548289 +frame17=0.000000 -5.350000 4.548288 +frame22=0.000000 -5.350000 4.548289 +frame26=0.000000 -5.350000 4.548286 +frame56=0.000000 -5.350000 4.487109 + +[KeyJointPos] +frame1=0.000000 -0.273276 0.000000 +frame10=0.056409 -0.223840 0.000000 +frame17=0.101945 -0.125031 0.000000 +frame22=0.135982 -0.026330 0.000000 +frame26=0.165129 0.097180 0.000000 +frame56=0.165129 0.097180 0.000000 diff --git a/CONTENT/BT/ANIMS/JAKWGLI.ANI b/CONTENT/BT/ANIMS/JAKWGLI.ANI new file mode 100644 index 0000000..709c7b4 --- /dev/null +++ b/CONTENT/BT/ANIMS/JAKWGLI.ANI @@ -0,0 +1,106 @@ +[LAB_ONLY] + +[HEADER] +framecount=6 +framerate=30 +skeletonfile=jak.skl +jointcount=8 + +[Time] +frame1=0 +frame10=0.3 +frame17=0.533333 +frame22=0.7 +frame26=0.833333 +frame56=1.83333 + +[JointIndices] +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=12 +jointrknee=13 +jointrankle=14 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=-0.492373 0.000000 0.000000 +jointlknee=-0.475967 0.000000 0.000000 +jointlankle=0.650851 0.000000 0.000000 +jointrthigh=0.412577 0.000000 0.000000 +jointrknee=-0.267172 0.000000 0.000000 +jointrankle=0.163490 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame10] +jointlthigh=-0.594145 0.000000 0.000000 +jointlknee=-0.499391 0.000000 0.000000 +jointlankle=0.274820 0.000000 0.000000 +jointrthigh=0.337831 0.000000 0.000000 +jointrknee=-0.179758 0.000000 0.000000 +jointrankle=0.041441 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.005655 +jointshakey=0.000000 0.000000 -0.005655 +[frame17] +jointlthigh=-0.535066 0.000000 0.000000 +jointlknee=-0.479372 0.000000 0.000000 +jointlankle=-0.239721 0.000000 0.000000 +jointrthigh=0.191981 0.000000 0.000000 +jointrknee=-0.196985 0.000000 0.000000 +jointrankle=0.004486 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.010053 +jointshakey=0.000000 0.000000 -0.010053 +[frame22] +jointlthigh=-0.265290 0.000000 0.000000 +jointlknee=-0.652404 0.000000 0.000000 +jointlankle=-0.570269 0.000000 0.000000 +jointrthigh=0.083075 0.000000 0.000000 +jointrknee=-0.299415 0.000000 0.000000 +jointrankle=0.216330 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.013195 +jointshakey=0.000000 0.000000 -0.013195 +[frame26] +jointlthigh=-0.049463 0.000000 0.000000 +jointlknee=-0.814266 0.000000 0.000000 +jointlankle=-0.499950 0.000000 0.000000 +jointrthigh=-0.074480 0.000000 0.000000 +jointrknee=-0.190792 0.000000 0.000000 +jointrankle=0.267028 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.015708 +jointshakey=0.000000 0.000000 -0.015708 +[frame56] +jointlthigh=-0.047994 0.000000 0.000000 +jointlknee=-0.818416 0.000000 0.000000 +jointlankle=-0.497190 0.000000 0.000000 +jointrthigh=-0.068744 0.000000 0.000000 +jointrknee=-0.194564 0.000000 0.000000 +jointrankle=0.262712 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.015708 +jointshakey=0.000000 0.000000 -0.015708 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame10=0.000000 -5.350000 4.548289 +frame17=0.000000 -5.350000 4.548288 +frame22=0.000000 -5.350000 4.548289 +frame26=0.000000 -5.350000 4.548286 +frame56=0.000000 -5.350000 4.487109 + +[KeyJointPos] +frame1=0.000000 -0.273276 0.000000 +frame10=0.000000 -0.223574 0.000000 +frame17=0.000000 -0.124177 0.000000 +frame22=0.000000 -0.024836 0.000000 +frame26=0.000000 0.099342 0.000000 +frame56=0.000000 0.099342 0.000000 diff --git a/CONTENT/BT/ANIMS/JAKWGR.ANI b/CONTENT/BT/ANIMS/JAKWGR.ANI new file mode 100644 index 0000000..b466ffb --- /dev/null +++ b/CONTENT/BT/ANIMS/JAKWGR.ANI @@ -0,0 +1,98 @@ +[LAB_ONLY] + +[HEADER] +framecount=6 +framerate=30 +skeletonfile=jak.skl +jointcount=7 + +[Time] +frame1=0 +frame10=0.3 +frame17=0.533333 +frame22=0.7 +frame26=0.833333 +frame56=1.83333 + +[JointIndices] +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=12 +jointrknee=13 +jointrankle=14 +jointlocal=0 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate + +[frame1] +jointlthigh=0.412577 0.000000 0.000000 +jointlknee=-0.267172 0.000000 0.000000 +jointlankle=0.163490 0.000000 0.000000 +jointrthigh=-0.492373 0.000000 0.000000 +jointrknee=-0.475967 0.000000 0.000000 +jointrankle=0.650851 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame10] +jointlthigh=0.323867 0.000000 0.000000 +jointlknee=-0.137254 0.000000 0.000000 +jointlankle=0.006893 0.000000 0.000000 +jointrthigh=-0.576287 0.000000 0.000000 +jointrknee=-0.548611 0.000000 0.000000 +jointrankle=0.306218 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.009425 +[frame17] +jointlthigh=0.199898 0.000000 0.000000 +jointlknee=-0.229088 0.000000 0.000000 +jointlankle=0.029444 0.000000 0.000000 +jointrthigh=-0.525512 0.000000 0.000000 +jointrknee=-0.530688 0.000000 0.000000 +jointrankle=-0.197871 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.016755 +[frame22] +jointlthigh=0.050688 0.000000 0.000000 +jointlknee=-0.218753 0.000000 0.000000 +jointlankle=0.163589 0.000000 0.000000 +jointrthigh=-0.254822 0.000000 0.000000 +jointrknee=-0.689241 0.000000 0.000000 +jointrankle=-0.543888 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.021991 +[frame26] +jointlthigh=-0.054350 0.000000 0.000000 +jointlknee=-0.236876 0.000000 0.000000 +jointlankle=0.288957 0.000000 0.000000 +jointrthigh=-0.049463 0.000000 0.000000 +jointrknee=-0.814266 0.000000 0.000000 +jointrankle=-0.499950 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.026180 +[frame56] +jointlthigh=-0.064810 0.000000 0.000000 +jointlknee=-0.205902 0.000000 0.000000 +jointlankle=0.269529 0.000000 0.000000 +jointrthigh=-0.048643 0.000000 0.000000 +jointrknee=-0.816664 0.000000 0.000000 +jointrankle=-0.498328 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.026180 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame10=0.000000 -5.350000 4.548289 +frame17=0.000000 -5.350000 4.548288 +frame22=0.000000 -5.350000 4.548289 +frame26=0.000000 -5.350000 4.548286 +frame56=0.000000 -5.350000 4.487109 + +[KeyJointPos] +frame1=0.000000 -0.273276 0.000000 +frame10=-0.056409 -0.223840 0.000000 +frame17=-0.101945 -0.125031 0.000000 +frame22=-0.135982 -0.026330 0.000000 +frame26=-0.165129 0.097180 0.000000 +frame56=-0.165129 0.097180 0.000000 diff --git a/CONTENT/BT/ANIMS/JAKWGRI.ANI b/CONTENT/BT/ANIMS/JAKWGRI.ANI new file mode 100644 index 0000000..49c788b --- /dev/null +++ b/CONTENT/BT/ANIMS/JAKWGRI.ANI @@ -0,0 +1,106 @@ +[LAB_ONLY] + +[HEADER] +framecount=6 +framerate=30 +skeletonfile=jak.skl +jointcount=8 + +[Time] +frame1=0 +frame10=0.3 +frame17=0.533333 +frame22=0.7 +frame26=0.833333 +frame56=1.83333 + +[JointIndices] +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=12 +jointrknee=13 +jointrankle=14 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=0.412577 0.000000 0.000000 +jointlknee=-0.267172 0.000000 0.000000 +jointlankle=0.163490 0.000000 0.000000 +jointrthigh=-0.492373 0.000000 0.000000 +jointrknee=-0.475967 0.000000 0.000000 +jointrankle=0.650851 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame10] +jointlthigh=0.328207 0.000000 0.000000 +jointlknee=-0.132440 0.000000 0.000000 +jointlankle=-0.023875 0.000000 0.000000 +jointrthigh=-0.594145 0.000000 0.000000 +jointrknee=-0.499391 0.000000 0.000000 +jointrankle=0.274820 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.005655 +jointshakey=0.000000 0.000000 0.005655 +[frame17] +jointlthigh=0.180326 0.000000 0.000000 +jointlknee=-0.165998 0.000000 0.000000 +jointlankle=-0.015017 0.000000 0.000000 +jointrthigh=-0.525761 0.000000 0.000000 +jointrknee=-0.515321 0.000000 0.000000 +jointrankle=-0.214691 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.010053 +jointshakey=0.000000 0.000000 0.010053 +[frame22] +jointlthigh=0.079831 0.000000 0.000000 +jointlknee=-0.295589 0.000000 0.000000 +jointlankle=0.211290 0.000000 0.000000 +jointrthigh=-0.251029 0.000000 0.000000 +jointrknee=-0.684501 0.000000 0.000000 +jointrankle=-0.580085 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.013195 +jointshakey=0.000000 0.000000 0.013195 +[frame26] +jointlthigh=-0.080860 0.000000 0.000000 +jointlknee=-0.165134 0.000000 0.000000 +jointlankle=0.246070 0.000000 0.000000 +jointrthigh=-0.037502 0.000000 0.000000 +jointrknee=-0.852489 0.000000 0.000000 +jointrankle=-0.472777 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.015708 +jointshakey=0.000000 0.000000 0.015708 +[frame56] +jointlthigh=-0.074920 0.000000 0.000000 +jointlknee=-0.176755 0.000000 0.000000 +jointlankle=0.250692 0.000000 0.000000 +jointrthigh=-0.048643 0.000000 0.000000 +jointrknee=-0.816664 0.000000 0.000000 +jointrankle=-0.498328 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.015708 +jointshakey=0.000000 0.000000 0.015708 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame10=0.000000 -5.350000 4.548289 +frame17=0.000000 -5.350000 4.548288 +frame22=0.000000 -5.350000 4.548289 +frame26=0.000000 -5.350000 4.548286 +frame56=0.000000 -5.350000 4.487109 + +[KeyJointPos] +frame1=0.000000 -0.273276 0.000000 +frame10=0.000000 -0.223574 0.000000 +frame17=0.000000 -0.124177 0.000000 +frame22=0.000000 -0.024836 0.000000 +frame26=0.000000 0.099342 0.000000 +frame56=0.000000 0.099342 0.000000 diff --git a/CONTENT/BT/ANIMS/JAKWRL.ANI b/CONTENT/BT/ANIMS/JAKWRL.ANI new file mode 100644 index 0000000..5e5fe1b --- /dev/null +++ b/CONTENT/BT/ANIMS/JAKWRL.ANI @@ -0,0 +1,142 @@ +[LAB_ONLY] + +[HEADER] +framecount=10 +framerate=30 +skeletonfile=jak.skl +jointcount=7 + +[Time] +frame1=0 +frame5=0.133333 +frame9=0.266667 +frame15=0.466667 +frame22=0.7 +frame23=0.733333 +frame24=0.766667 +frame27=0.866667 +frame29=0.933333 +frame59=1.93333 + +[JointIndices] +jointlocal=0 +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=12 +jointrknee=13 +jointrankle=14 + +[JointType] +jointlocal=balltranslate +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.276446 0.000000 0.000000 +jointlknee=-0.473501 0.000000 0.000000 +jointlankle=0.529416 0.000000 0.000000 +jointrthigh=0.593300 0.000000 0.000000 +jointrknee=-0.135467 0.000000 0.000000 +jointrankle=-0.053991 0.000000 0.000000 +[frame5] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.016235 0.000000 0.000000 +jointlknee=-1.372056 0.000000 0.000000 +jointlankle=0.469171 0.000000 0.000000 +jointrthigh=0.599693 0.000000 0.000000 +jointrknee=-0.764329 0.000000 0.000000 +jointrankle=0.166742 0.000000 0.000000 +[frame9] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.610411 0.000000 0.000000 +jointlknee=-1.357960 0.000000 0.000000 +jointlankle=0.352546 0.000000 0.000000 +jointrthigh=0.079238 0.000000 0.000000 +jointrknee=-0.554924 0.000000 0.000000 +jointrankle=0.475911 0.000000 0.000000 +[frame15] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.930597 0.000000 0.000000 +jointlknee=-0.769687 0.000000 0.000000 +jointlankle=-0.003035 0.000000 0.000000 +jointrthigh=-0.293442 0.000000 0.000000 +jointrknee=-0.727191 0.000000 0.000000 +jointrankle=0.369916 0.000000 0.000000 +[frame22] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.890380 0.000000 0.000000 +jointlknee=-0.331152 0.000000 0.000000 +jointlankle=-0.240142 0.000000 0.000000 +jointrthigh=-0.569724 0.000000 0.000000 +jointrknee=-0.730544 0.000000 0.000000 +jointrankle=-0.021804 0.000000 0.000000 +[frame23] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.884634 0.000000 0.000000 +jointlknee=-0.268505 0.000000 0.000000 +jointlankle=-0.274013 0.000000 0.000000 +jointrthigh=-0.515339 0.000000 0.000000 +jointrknee=-0.880401 0.000000 0.000000 +jointrankle=0.052871 0.000000 0.000000 +[frame24] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.830713 0.000000 0.000000 +jointlknee=-0.265298 0.000000 0.000000 +jointlankle=-0.256814 0.000000 0.000000 +jointrthigh=-0.460954 0.000000 0.000000 +jointrknee=-1.030257 0.000000 0.000000 +jointrankle=0.127546 0.000000 0.000000 +[frame27] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.668948 0.000000 0.000000 +jointlknee=-0.255679 0.000000 0.000000 +jointlankle=-0.205218 0.000000 0.000000 +jointrthigh=-0.259901 0.000000 0.000000 +jointrknee=-1.235336 0.000000 0.000000 +jointrankle=0.378865 0.000000 0.000000 +[frame29] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.740852 0.000000 0.000000 +jointlknee=-0.731824 0.000000 0.000000 +jointlankle=-0.010616 0.000000 0.000000 +jointrthigh=-0.125867 0.000000 0.000000 +jointrknee=-1.372056 0.000000 0.000000 +jointrankle=0.546410 0.000000 0.000000 +[frame59] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.740849 0.000000 0.000000 +jointlknee=-0.731825 0.000000 0.000000 +jointlankle=-0.010611 0.000000 0.000000 +jointrthigh=-0.125867 0.000000 0.000000 +jointrknee=-1.372056 0.000000 0.000000 +jointrankle=0.546410 0.000000 0.000000 + +[RootTranslation] +frame1=0.022705 -5.367000 0.000000 +frame5=0.022705 -5.367000 16.122751 +frame9=0.023010 -5.367000 14.213246 +frame15=0.022705 -5.367000 15.455504 +frame22=0.022705 -5.367000 16.004997 +frame23=0.022705 -5.367001 18.415760 +frame24=0.022705 -5.367001 18.415735 +frame27=0.022705 -5.367001 18.415714 +frame29=0.022705 -5.367000 18.415691 +frame59=0.022705 -5.367000 20.748701 + +[KeyJointPos] +frame1=0.000000 -0.375690 0.000000 +frame5=0.000000 -0.446253 0.000000 +frame9=0.000000 -0.328673 0.000000 +frame15=0.000000 -0.305144 0.000000 +frame22=0.000000 -0.164257 0.000000 +frame23=0.000000 -0.228103 0.000000 +frame24=0.000000 -0.291949 0.000000 +frame27=0.000000 -0.483488 0.000000 +frame29=0.000000 -0.611179 0.000000 +frame59=0.000000 -0.611179 0.000000 diff --git a/CONTENT/BT/ANIMS/JAKWRLI.ANI b/CONTENT/BT/ANIMS/JAKWRLI.ANI new file mode 100644 index 0000000..69b6024 --- /dev/null +++ b/CONTENT/BT/ANIMS/JAKWRLI.ANI @@ -0,0 +1,155 @@ +[LAB_ONLY] + +[HEADER] +framecount=10 +framerate=30 +skeletonfile=jak.skl +jointcount=8 + +[Time] +frame1=0 +frame5=0.133333 +frame9=0.266667 +frame15=0.466667 +frame22=0.7 +frame23=0.733333 +frame24=0.766667 +frame27=0.866667 +frame29=0.933333 +frame59=1.93333 + +[JointIndices] +jointlocal=0 +jointshakey=3 +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=12 +jointrknee=13 +jointrankle=14 + + +[JointType] +jointlocal=balltranslate +jointshakey=ball +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.276446 0.000000 0.000000 +jointlknee=-0.473501 0.000000 0.000000 +jointlankle=0.529416 0.000000 0.000000 +jointrthigh=0.593300 0.000000 0.000000 +jointrknee=-0.135467 0.000000 0.000000 +jointrankle=-0.053991 0.000000 0.000000 +[frame5] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.016235 0.000000 0.000000 +jointlknee=-1.372056 0.000000 0.000000 +jointlankle=0.469171 0.000000 0.000000 +jointrthigh=0.599693 0.000000 0.000000 +jointrknee=-0.764329 0.000000 0.000000 +jointrankle=0.166742 0.000000 0.000000 +[frame9] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.610411 0.000000 0.000000 +jointlknee=-1.357960 0.000000 0.000000 +jointlankle=0.352546 0.000000 0.000000 +jointrthigh=0.079238 0.000000 0.000000 +jointrknee=-0.554924 0.000000 0.000000 +jointrankle=0.475911 0.000000 0.000000 +[frame15] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.930597 0.000000 0.000000 +jointlknee=-0.769687 0.000000 0.000000 +jointlankle=-0.003035 0.000000 0.000000 +jointrthigh=-0.293442 0.000000 0.000000 +jointrknee=-0.727191 0.000000 0.000000 +jointrankle=0.369916 0.000000 0.000000 +[frame22] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.890380 0.000000 0.000000 +jointlknee=-0.331152 0.000000 0.000000 +jointlankle=-0.240142 0.000000 0.000000 +jointrthigh=-0.569724 0.000000 0.000000 +jointrknee=-0.730544 0.000000 0.000000 +jointrankle=-0.021804 0.000000 0.000000 +[frame23] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.884634 0.000000 0.000000 +jointlknee=-0.268505 0.000000 0.000000 +jointlankle=-0.274013 0.000000 0.000000 +jointrthigh=-0.515339 0.000000 0.000000 +jointrknee=-0.880401 0.000000 0.000000 +jointrankle=0.052871 0.000000 0.000000 +[frame24] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.830713 0.000000 0.000000 +jointlknee=-0.265298 0.000000 0.000000 +jointlankle=-0.256814 0.000000 0.000000 +jointrthigh=-0.460954 0.000000 0.000000 +jointrknee=-1.030257 0.000000 0.000000 +jointrankle=0.127546 0.000000 0.000000 +[frame27] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.668948 0.000000 0.000000 +jointlknee=-0.255679 0.000000 0.000000 +jointlankle=-0.205218 0.000000 0.000000 +jointrthigh=-0.259901 0.000000 0.000000 +jointrknee=-1.235336 0.000000 0.000000 +jointrankle=0.378865 0.000000 0.000000 +[frame29] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.740852 0.000000 0.000000 +jointlknee=-0.731824 0.000000 0.000000 +jointlankle=-0.010616 0.000000 0.000000 +jointrthigh=-0.125867 0.000000 0.000000 +jointrknee=-1.372056 0.000000 0.000000 +jointrankle=0.546410 0.000000 0.000000 +[frame59] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.740849 0.000000 0.000000 +jointlknee=-0.731825 0.000000 0.000000 +jointlankle=-0.010611 0.000000 0.000000 +jointrthigh=-0.125867 0.000000 0.000000 +jointrknee=-1.372056 0.000000 0.000000 +jointrankle=0.546410 0.000000 0.000000 + +[RootTranslation] +frame1=0.022705 -5.367000 0.000000 +frame5=0.022705 -5.367000 16.122751 +frame9=0.023010 -5.367000 14.213246 +frame15=0.022705 -5.367000 15.455504 +frame22=0.022705 -5.367000 16.004997 +frame23=0.022705 -5.367001 18.415760 +frame24=0.022705 -5.367001 18.415735 +frame27=0.022705 -5.367001 18.415714 +frame29=0.022705 -5.367000 18.415691 +frame59=0.022705 -5.367000 20.748701 + +[KeyJointPos] +frame1=0.000000 -0.375690 0.000000 +frame5=0.000000 -0.446253 0.000000 +frame9=0.000000 -0.328673 0.000000 +frame15=0.000000 -0.305144 0.000000 +frame22=0.000000 -0.164257 0.000000 +frame23=0.000000 -0.228103 0.000000 +frame24=0.000000 -0.291949 0.000000 +frame27=0.000000 -0.483488 0.000000 +frame29=0.000000 -0.611179 0.000000 +frame59=0.000000 -0.611179 0.000000 diff --git a/CONTENT/BT/ANIMS/JAKWRR.ANI b/CONTENT/BT/ANIMS/JAKWRR.ANI new file mode 100644 index 0000000..d8fdf92 --- /dev/null +++ b/CONTENT/BT/ANIMS/JAKWRR.ANI @@ -0,0 +1,142 @@ +[LAB_ONLY] + +[HEADER] +framecount=10 +framerate=30 +skeletonfile=jak.skl +jointcount=7 + +[Time] +frame1=0 +frame5=0.133333 +frame9=0.266667 +frame15=0.466667 +frame22=0.7 +frame23=0.733333 +frame24=0.766667 +frame27=0.866667 +frame29=0.933333 +frame59=1.93333 + +[JointIndices] +jointlocal=0 +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=12 +jointrknee=13 +jointrankle=14 + +[JointType] +jointlocal=balltranslate +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.593300 0.000000 0.000000 +jointlknee=-0.135467 0.000000 0.000000 +jointlankle=-0.053991 0.000000 0.000000 +jointrthigh=-0.276446 0.000000 0.000000 +jointrknee=-0.473501 0.000000 0.000000 +jointrankle=0.529416 0.000000 0.000000 +[frame5] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.599693 0.000000 0.000000 +jointlknee=-0.764329 0.000000 0.000000 +jointlankle=0.166742 0.000000 0.000000 +jointrthigh=-0.016235 0.000000 0.000000 +jointrknee=-1.372056 0.000000 0.000000 +jointrankle=0.469171 0.000000 0.000000 +[frame9] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.079238 0.000000 0.000000 +jointlknee=-0.554924 0.000000 0.000000 +jointlankle=0.475911 0.000000 0.000000 +jointrthigh=0.610411 0.000000 0.000000 +jointrknee=-1.357960 0.000000 0.000000 +jointrankle=0.352546 0.000000 0.000000 +[frame15] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.293442 0.000000 0.000000 +jointlknee=-0.727191 0.000000 0.000000 +jointlankle=0.369916 0.000000 0.000000 +jointrthigh=0.930597 0.000000 0.000000 +jointrknee=-0.769687 0.000000 0.000000 +jointrankle=-0.003035 0.000000 0.000000 +[frame22] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.569724 0.000000 0.000000 +jointlknee=-0.730544 0.000000 0.000000 +jointlankle=-0.021804 0.000000 0.000000 +jointrthigh=0.890379 0.000000 0.000000 +jointrknee=-0.331153 0.000000 0.000000 +jointrankle=-0.240141 0.000000 0.000000 +[frame23] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.515339 0.000000 0.000000 +jointlknee=-0.880401 0.000000 0.000000 +jointlankle=0.052871 0.000000 0.000000 +jointrthigh=0.884634 0.000000 0.000000 +jointrknee=-0.268505 0.000000 0.000000 +jointrankle=-0.274013 0.000000 0.000000 +[frame24] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.460954 0.000000 0.000000 +jointlknee=-1.030257 0.000000 0.000000 +jointlankle=0.127546 0.000000 0.000000 +jointrthigh=0.830713 0.000000 0.000000 +jointrknee=-0.265298 0.000000 0.000000 +jointrankle=-0.256814 0.000000 0.000000 +[frame27] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.259901 0.000000 0.000000 +jointlknee=-1.235336 0.000000 0.000000 +jointlankle=0.378865 0.000000 0.000000 +jointrthigh=0.668948 0.000000 0.000000 +jointrknee=-0.255679 0.000000 0.000000 +jointrankle=-0.205218 0.000000 0.000000 +[frame29] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.125867 0.000000 0.000000 +jointlknee=-1.372056 0.000000 0.000000 +jointlankle=0.546410 0.000000 0.000000 +jointrthigh=0.740852 0.000000 0.000000 +jointrknee=-0.731824 0.000000 0.000000 +jointrankle=-0.010616 0.000000 0.000000 +[frame59] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.125867 0.000000 0.000000 +jointlknee=-1.372056 0.000000 0.000000 +jointlankle=0.546410 0.000000 0.000000 +jointrthigh=0.740849 0.000000 0.000000 +jointrknee=-0.731825 0.000000 0.000000 +jointrankle=-0.010611 0.000000 0.000000 + +[RootTranslation] +frame1=0.022705 -5.367000 0.000000 +frame5=0.022705 -5.367000 16.122751 +frame9=0.023010 -5.367000 14.213246 +frame15=0.022705 -5.367000 15.455504 +frame22=0.022705 -5.367000 16.004997 +frame23=0.022705 -5.367001 18.415760 +frame24=0.022705 -5.367001 18.415735 +frame27=0.022705 -5.367001 18.415714 +frame29=0.022705 -5.367000 18.415691 +frame59=0.022705 -5.367000 20.748701 + +[KeyJointPos] +frame1=0.000000 -0.375690 0.000000 +frame5=0.000000 -0.446253 0.000000 +frame9=0.000000 -0.328673 0.000000 +frame15=0.000000 -0.305144 0.000000 +frame22=0.000000 -0.164257 0.000000 +frame23=0.000000 -0.228103 0.000000 +frame24=0.000000 -0.291949 0.000000 +frame27=0.000000 -0.483488 0.000000 +frame29=0.000000 -0.611179 0.000000 +frame59=0.000000 -0.611179 0.000000 diff --git a/CONTENT/BT/ANIMS/JAKWRRI.ANI b/CONTENT/BT/ANIMS/JAKWRRI.ANI new file mode 100644 index 0000000..86ccea8 --- /dev/null +++ b/CONTENT/BT/ANIMS/JAKWRRI.ANI @@ -0,0 +1,155 @@ +[LAB_ONLY] + +[HEADER] +framecount=10 +framerate=30 +skeletonfile=jak.skl +jointcount=8 + +[Time] +frame1=0 +frame5=0.133333 +frame9=0.266667 +frame15=0.466667 +frame22=0.7 +frame23=0.733333 +frame24=0.766667 +frame27=0.866667 +frame29=0.933333 +frame59=1.93333 + +[JointIndices] +jointlocal=0 +jointshakey=3 +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=12 +jointrknee=13 +jointrankle=14 + + +[JointType] +jointlocal=balltranslate +jointshakey=ball +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.593300 0.000000 0.000000 +jointlknee=-0.135467 0.000000 0.000000 +jointlankle=-0.053991 0.000000 0.000000 +jointrthigh=-0.276446 0.000000 0.000000 +jointrknee=-0.473501 0.000000 0.000000 +jointrankle=0.529416 0.000000 0.000000 +[frame5] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.599693 0.000000 0.000000 +jointlknee=-0.764329 0.000000 0.000000 +jointlankle=0.166742 0.000000 0.000000 +jointrthigh=-0.016235 0.000000 0.000000 +jointrknee=-1.372056 0.000000 0.000000 +jointrankle=0.469171 0.000000 0.000000 +[frame9] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.079238 0.000000 0.000000 +jointlknee=-0.554924 0.000000 0.000000 +jointlankle=0.475911 0.000000 0.000000 +jointrthigh=0.610411 0.000000 0.000000 +jointrknee=-1.357960 0.000000 0.000000 +jointrankle=0.352546 0.000000 0.000000 +[frame15] +jointshakey=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.293442 0.000000 0.000000 +jointlknee=-0.727191 0.000000 0.000000 +jointlankle=0.369916 0.000000 0.000000 +jointrthigh=0.930597 0.000000 0.000000 +jointrknee=-0.769687 0.000000 0.000000 +jointrankle=-0.003035 0.000000 0.000000 +[frame22] +jointshakey=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.569724 0.000000 0.000000 +jointlknee=-0.730544 0.000000 0.000000 +jointlankle=-0.021804 0.000000 0.000000 +jointrthigh=0.890379 0.000000 0.000000 +jointrknee=-0.331153 0.000000 0.000000 +jointrankle=-0.240141 0.000000 0.000000 +[frame23] +jointshakey=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.515339 0.000000 0.000000 +jointlknee=-0.880401 0.000000 0.000000 +jointlankle=0.052871 0.000000 0.000000 +jointrthigh=0.884634 0.000000 0.000000 +jointrknee=-0.268505 0.000000 0.000000 +jointrankle=-0.274013 0.000000 0.000000 +[frame24] +jointshakey=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.460954 0.000000 0.000000 +jointlknee=-1.030257 0.000000 0.000000 +jointlankle=0.127546 0.000000 0.000000 +jointrthigh=0.830713 0.000000 0.000000 +jointrknee=-0.265298 0.000000 0.000000 +jointrankle=-0.256814 0.000000 0.000000 +[frame27] +jointshakey=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.259901 0.000000 0.000000 +jointlknee=-1.235336 0.000000 0.000000 +jointlankle=0.378865 0.000000 0.000000 +jointrthigh=0.668948 0.000000 0.000000 +jointrknee=-0.255679 0.000000 0.000000 +jointrankle=-0.205218 0.000000 0.000000 +[frame29] +jointshakey=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.125867 0.000000 0.000000 +jointlknee=-1.372056 0.000000 0.000000 +jointlankle=0.546410 0.000000 0.000000 +jointrthigh=0.740852 0.000000 0.000000 +jointrknee=-0.731824 0.000000 0.000000 +jointrankle=-0.010616 0.000000 0.000000 +[frame59] +jointshakey=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.125867 0.000000 0.000000 +jointlknee=-1.372056 0.000000 0.000000 +jointlankle=0.546410 0.000000 0.000000 +jointrthigh=0.740849 0.000000 0.000000 +jointrknee=-0.731825 0.000000 0.000000 +jointrankle=-0.010611 0.000000 0.000000 + +[RootTranslation] +frame1=0.022705 -5.367000 0.000000 +frame5=0.022705 -5.367000 16.122751 +frame9=0.023010 -5.367000 14.213246 +frame15=0.022705 -5.367000 15.455504 +frame22=0.022705 -5.367000 16.004997 +frame23=0.022705 -5.367001 18.415760 +frame24=0.022705 -5.367001 18.415735 +frame27=0.022705 -5.367001 18.415714 +frame29=0.022705 -5.367000 18.415691 +frame59=0.022705 -5.367000 20.748701 + +[KeyJointPos] +frame1=0.000000 -0.375690 0.000000 +frame5=0.000000 -0.446253 0.000000 +frame9=0.000000 -0.328673 0.000000 +frame15=0.000000 -0.305144 0.000000 +frame22=0.000000 -0.164257 0.000000 +frame23=0.000000 -0.228103 0.000000 +frame24=0.000000 -0.291949 0.000000 +frame27=0.000000 -0.483488 0.000000 +frame29=0.000000 -0.611179 0.000000 +frame59=0.000000 -0.611179 0.000000 diff --git a/CONTENT/BT/ANIMS/JAKWSL.ANI b/CONTENT/BT/ANIMS/JAKWSL.ANI new file mode 100644 index 0000000..460292a --- /dev/null +++ b/CONTENT/BT/ANIMS/JAKWSL.ANI @@ -0,0 +1,131 @@ +[LAB_ONLY] + +[HEADER] +framecount=9 +framerate=30 +skeletonfile=jak.skl +jointcount=7 + +[Time] +frame1=0 +frame2=0.0333333 +frame4=0.1 +frame5=0.133333 +frame13=0.4 +frame15=0.466667 +frame17=0.533333 +frame21=0.666667 +frame28=0.9 + +[JointIndices] +jointlocal=0 +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=12 +jointrknee=13 +jointrankle=14 + +[JointType] +jointlocal=balltranslate +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.344957 0.000000 0.000000 +jointlknee=-0.382580 0.000000 0.000000 +jointlankle=0.508472 0.000000 0.000000 +jointrthigh=0.629025 0.000000 0.000000 +jointrknee=-0.231209 0.000000 0.000000 +jointrankle=-0.013522 0.000000 0.000000 +[frame2] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.351179 0.000000 0.000000 +jointlknee=-0.397045 0.000000 0.000000 +jointlankle=0.500189 0.000000 0.000000 +jointrthigh=0.611365 0.000000 0.000000 +jointrknee=-0.226816 0.000000 0.000000 +jointrankle=-0.027596 0.000000 0.000000 +[frame4] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.371160 0.000000 0.000000 +jointlknee=-0.412098 0.000000 0.000000 +jointlankle=0.485172 0.000000 0.000000 +jointrthigh=0.576043 0.000000 0.000000 +jointrknee=-0.218030 0.000000 0.000000 +jointrankle=-0.055744 0.000000 0.000000 +[frame5] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.261150 0.000000 0.000000 +jointlknee=-0.607930 0.000000 0.000000 +jointlankle=0.498091 0.000000 0.000000 +jointrthigh=0.558383 0.000000 0.000000 +jointrknee=-0.213637 0.000000 0.000000 +jointrankle=-0.069817 0.000000 0.000000 +[frame13] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.002054 0.000000 0.000000 +jointlknee=-0.624254 0.000000 0.000000 +jointlankle=0.520208 0.000000 0.000000 +jointrthigh=0.417097 0.000000 0.000000 +jointrknee=-0.178492 0.000000 0.000000 +jointrankle=-0.182409 0.000000 0.000000 +[frame15] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.012421 0.000000 0.000000 +jointlknee=-0.578695 0.000000 0.000000 +jointlankle=0.484227 0.000000 0.000000 +jointrthigh=0.381775 0.000000 0.000000 +jointrknee=-0.169706 0.000000 0.000000 +jointrankle=-0.210557 0.000000 0.000000 +[frame17] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.026896 0.000000 0.000000 +jointlknee=-0.533136 0.000000 0.000000 +jointlankle=0.448246 0.000000 0.000000 +jointrthigh=0.358138 0.000000 0.000000 +jointrknee=-0.211235 0.000000 0.000000 +jointrankle=-0.145151 0.000000 0.000000 +[frame21] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.055846 0.000000 0.000000 +jointlknee=-0.442019 0.000000 0.000000 +jointlankle=0.376284 0.000000 0.000000 +jointrthigh=0.227906 0.000000 0.000000 +jointrknee=-0.134423 0.000000 0.000000 +jointrankle=-0.092369 0.000000 0.000000 +[frame28] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.022705 -5.367000 0.000000 +frame2=0.022704 -5.367003 3.321562 +frame4=0.022702 -5.367009 3.321562 +frame5=0.022701 -5.367012 3.321533 +frame13=0.022694 -5.367035 3.321555 +frame15=0.022692 -5.367042 3.321548 +frame17=0.022690 -5.367047 3.321561 +frame21=0.022686 -5.367059 3.321562 +frame28=0.022679 -5.367080 3.321558 + +[KeyJointPos] +frame1=0.000000 -0.375690 0.000000 +frame2=0.000000 -0.361775 0.000000 +frame4=0.000000 -0.333946 0.000000 +frame5=0.000000 -0.320032 0.000000 +frame13=0.000000 -0.208717 0.000000 +frame15=0.000000 -0.180888 0.000000 +frame17=0.000000 -0.153059 0.000000 +frame21=0.000000 -0.097401 0.000000 +frame28=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/JAKWSLI.ANI b/CONTENT/BT/ANIMS/JAKWSLI.ANI new file mode 100644 index 0000000..2292f6d --- /dev/null +++ b/CONTENT/BT/ANIMS/JAKWSLI.ANI @@ -0,0 +1,143 @@ +[LAB_ONLY] + +[HEADER] +framecount=9 +framerate=30 +skeletonfile=jak.skl +jointcount=8 + +[Time] +frame1=0 +frame2=0.0333333 +frame4=0.1 +frame5=0.133333 +frame13=0.4 +frame15=0.466667 +frame17=0.533333 +frame21=0.666667 +frame28=0.9 + +[JointIndices] +jointlocal=0 +jointshakey=3 +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=12 +jointrknee=13 +jointrankle=14 + + +[JointType] +jointlocal=balltranslate +jointshakey=ball +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.344957 0.000000 0.000000 +jointlknee=-0.382580 0.000000 0.000000 +jointlankle=0.508472 0.000000 0.000000 +jointrthigh=0.629025 0.000000 0.000000 +jointrknee=-0.231209 0.000000 0.000000 +jointrankle=-0.013522 0.000000 0.000000 +[frame2] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.351179 0.000000 0.000000 +jointlknee=-0.397045 0.000000 0.000000 +jointlankle=0.500189 0.000000 0.000000 +jointrthigh=0.611365 0.000000 0.000000 +jointrknee=-0.226816 0.000000 0.000000 +jointrankle=-0.027596 0.000000 0.000000 +[frame4] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.371160 0.000000 0.000000 +jointlknee=-0.412098 0.000000 0.000000 +jointlankle=0.485172 0.000000 0.000000 +jointrthigh=0.576043 0.000000 0.000000 +jointrknee=-0.218030 0.000000 0.000000 +jointrankle=-0.055744 0.000000 0.000000 +[frame5] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.261150 0.000000 0.000000 +jointlknee=-0.607930 0.000000 0.000000 +jointlankle=0.498091 0.000000 0.000000 +jointrthigh=0.558383 0.000000 0.000000 +jointrknee=-0.213637 0.000000 0.000000 +jointrankle=-0.069817 0.000000 0.000000 +[frame13] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.002054 0.000000 0.000000 +jointlknee=-0.624254 0.000000 0.000000 +jointlankle=0.520208 0.000000 0.000000 +jointrthigh=0.417097 0.000000 0.000000 +jointrknee=-0.178492 0.000000 0.000000 +jointrankle=-0.182409 0.000000 0.000000 +[frame15] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.012421 0.000000 0.000000 +jointlknee=-0.578695 0.000000 0.000000 +jointlankle=0.484227 0.000000 0.000000 +jointrthigh=0.381775 0.000000 0.000000 +jointrknee=-0.169706 0.000000 0.000000 +jointrankle=-0.210557 0.000000 0.000000 +[frame17] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.026896 0.000000 0.000000 +jointlknee=-0.533136 0.000000 0.000000 +jointlankle=0.448246 0.000000 0.000000 +jointrthigh=0.358138 0.000000 0.000000 +jointrknee=-0.211235 0.000000 0.000000 +jointrankle=-0.145151 0.000000 0.000000 +[frame21] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.055846 0.000000 0.000000 +jointlknee=-0.442019 0.000000 0.000000 +jointlankle=0.376284 0.000000 0.000000 +jointrthigh=0.227906 0.000000 0.000000 +jointrknee=-0.134423 0.000000 0.000000 +jointrankle=-0.092369 0.000000 0.000000 +[frame28] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.022705 -5.367000 0.000000 +frame2=0.022704 -5.367003 3.321562 +frame4=0.022702 -5.367009 3.321562 +frame5=0.022701 -5.367012 3.321533 +frame13=0.022694 -5.367035 3.321555 +frame15=0.022692 -5.367042 3.321548 +frame17=0.022690 -5.367047 3.321561 +frame21=0.022686 -5.367059 3.321562 +frame28=0.022679 -5.367080 3.321558 + +[KeyJointPos] +frame1=0.000000 -0.375690 0.000000 +frame2=0.000000 -0.361775 0.000000 +frame4=0.000000 -0.333946 0.000000 +frame5=0.000000 -0.320032 0.000000 +frame13=0.000000 -0.208717 0.000000 +frame15=0.000000 -0.180888 0.000000 +frame17=0.000000 -0.153059 0.000000 +frame21=0.000000 -0.097401 0.000000 +frame28=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/JAKWSR.ANI b/CONTENT/BT/ANIMS/JAKWSR.ANI new file mode 100644 index 0000000..a9db697 --- /dev/null +++ b/CONTENT/BT/ANIMS/JAKWSR.ANI @@ -0,0 +1,131 @@ +[LAB_ONLY] + +[HEADER] +framecount=9 +framerate=30 +skeletonfile=jak.skl +jointcount=7 + +[Time] +frame1=0 +frame2=0.0333333 +frame4=0.1 +frame5=0.133333 +frame13=0.4 +frame15=0.466667 +frame17=0.533333 +frame21=0.666667 +frame28=0.9 + +[JointIndices] +jointlocal=0 +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=12 +jointrknee=13 +jointrankle=14 + +[JointType] +jointlocal=balltranslate +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.629025 0.000000 0.000000 +jointlknee=-0.231209 0.000000 0.000000 +jointlankle=-0.013522 0.000000 0.000000 +jointrthigh=-0.344957 0.000000 0.000000 +jointrknee=-0.382580 0.000000 0.000000 +jointrankle=0.508472 0.000000 0.000000 +[frame2] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.611365 0.000000 0.000000 +jointlknee=-0.226816 0.000000 0.000000 +jointlankle=-0.027596 0.000000 0.000000 +jointrthigh=-0.351179 0.000000 0.000000 +jointrknee=-0.397045 0.000000 0.000000 +jointrankle=0.500189 0.000000 0.000000 +[frame4] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.576043 0.000000 0.000000 +jointlknee=-0.218030 0.000000 0.000000 +jointlankle=-0.055744 0.000000 0.000000 +jointrthigh=-0.371160 0.000000 0.000000 +jointrknee=-0.412098 0.000000 0.000000 +jointrankle=0.485172 0.000000 0.000000 +[frame5] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.558383 0.000000 0.000000 +jointlknee=-0.213637 0.000000 0.000000 +jointlankle=-0.069817 0.000000 0.000000 +jointrthigh=-0.261150 0.000000 0.000000 +jointrknee=-0.607930 0.000000 0.000000 +jointrankle=0.498091 0.000000 0.000000 +[frame13] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.417097 0.000000 0.000000 +jointlknee=-0.178492 0.000000 0.000000 +jointlankle=-0.182409 0.000000 0.000000 +jointrthigh=-0.002054 0.000000 0.000000 +jointrknee=-0.624254 0.000000 0.000000 +jointrankle=0.520208 0.000000 0.000000 +[frame15] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.381775 0.000000 0.000000 +jointlknee=-0.169706 0.000000 0.000000 +jointlankle=-0.210557 0.000000 0.000000 +jointrthigh=0.012421 0.000000 0.000000 +jointrknee=-0.578695 0.000000 0.000000 +jointrankle=0.484227 0.000000 0.000000 +[frame17] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.358138 0.000000 0.000000 +jointlknee=-0.211235 0.000000 0.000000 +jointlankle=-0.145151 0.000000 0.000000 +jointrthigh=0.026896 0.000000 0.000000 +jointrknee=-0.533136 0.000000 0.000000 +jointrankle=0.448246 0.000000 0.000000 +[frame21] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.259906 0.000000 0.000000 +jointlknee=-0.194828 0.000000 0.000000 +jointlankle=-0.064272 0.000000 0.000000 +jointrthigh=0.055846 0.000000 0.000000 +jointrknee=-0.442019 0.000000 0.000000 +jointrankle=0.376284 0.000000 0.000000 +[frame28] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.088000 0.000000 0.000000 +jointlknee=-0.166115 0.000000 0.000000 +jointlankle=0.077267 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.022705 -5.367000 0.000000 +frame2=0.022704 -5.367003 3.321562 +frame4=0.022702 -5.367009 3.321562 +frame5=0.022701 -5.367012 3.321533 +frame13=0.022694 -5.367035 3.321555 +frame15=0.022692 -5.367042 3.321548 +frame17=0.022690 -5.367047 3.321561 +frame21=0.022686 -5.367059 3.321562 +frame28=0.022679 -5.367080 3.321558 + +[KeyJointPos] +frame1=0.000000 -0.375690 0.000000 +frame2=0.000000 -0.361775 0.000000 +frame4=0.000000 -0.333946 0.000000 +frame5=0.000000 -0.320032 0.000000 +frame13=0.000000 -0.208717 0.000000 +frame15=0.000000 -0.180888 0.000000 +frame17=0.000000 -0.153059 0.000000 +frame21=0.000000 -0.097401 0.000000 +frame28=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/JAKWSRI.ANI b/CONTENT/BT/ANIMS/JAKWSRI.ANI new file mode 100644 index 0000000..567760f --- /dev/null +++ b/CONTENT/BT/ANIMS/JAKWSRI.ANI @@ -0,0 +1,143 @@ +[LAB_ONLY] + +[HEADER] +framecount=9 +framerate=30 +skeletonfile=jak.skl +jointcount=8 + +[Time] +frame1=0 +frame2=0.0333333 +frame4=0.1 +frame5=0.133333 +frame13=0.4 +frame15=0.466667 +frame17=0.533333 +frame21=0.666667 +frame28=0.9 + +[JointIndices] +jointlocal=0 +jointshakey=3 +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=12 +jointrknee=13 +jointrankle=14 + + +[JointType] +jointlocal=balltranslate +jointshakey=ball +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.629025 0.000000 0.000000 +jointlknee=-0.231209 0.000000 0.000000 +jointlankle=-0.013522 0.000000 0.000000 +jointrthigh=-0.344957 0.000000 0.000000 +jointrknee=-0.382580 0.000000 0.000000 +jointrankle=0.508472 0.000000 0.000000 +[frame2] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.611365 0.000000 0.000000 +jointlknee=-0.226816 0.000000 0.000000 +jointlankle=-0.027596 0.000000 0.000000 +jointrthigh=-0.351179 0.000000 0.000000 +jointrknee=-0.397045 0.000000 0.000000 +jointrankle=0.500189 0.000000 0.000000 +[frame4] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.576043 0.000000 0.000000 +jointlknee=-0.218030 0.000000 0.000000 +jointlankle=-0.055744 0.000000 0.000000 +jointrthigh=-0.371160 0.000000 0.000000 +jointrknee=-0.412098 0.000000 0.000000 +jointrankle=0.485172 0.000000 0.000000 +[frame5] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.558383 0.000000 0.000000 +jointlknee=-0.213637 0.000000 0.000000 +jointlankle=-0.069817 0.000000 0.000000 +jointrthigh=-0.261150 0.000000 0.000000 +jointrknee=-0.607930 0.000000 0.000000 +jointrankle=0.498091 0.000000 0.000000 +[frame13] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.417097 0.000000 0.000000 +jointlknee=-0.178492 0.000000 0.000000 +jointlankle=-0.182409 0.000000 0.000000 +jointrthigh=-0.002054 0.000000 0.000000 +jointrknee=-0.624254 0.000000 0.000000 +jointrankle=0.520208 0.000000 0.000000 +[frame15] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.381775 0.000000 0.000000 +jointlknee=-0.169706 0.000000 0.000000 +jointlankle=-0.210557 0.000000 0.000000 +jointrthigh=0.012421 0.000000 0.000000 +jointrknee=-0.578695 0.000000 0.000000 +jointrankle=0.484227 0.000000 0.000000 +[frame17] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.358138 0.000000 0.000000 +jointlknee=-0.211235 0.000000 0.000000 +jointlankle=-0.145151 0.000000 0.000000 +jointrthigh=0.026896 0.000000 0.000000 +jointrknee=-0.533136 0.000000 0.000000 +jointrankle=0.448246 0.000000 0.000000 +[frame21] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.259906 0.000000 0.000000 +jointlknee=-0.194828 0.000000 0.000000 +jointlankle=-0.064272 0.000000 0.000000 +jointrthigh=0.055846 0.000000 0.000000 +jointrknee=-0.442019 0.000000 0.000000 +jointrankle=0.376284 0.000000 0.000000 +[frame28] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.088000 0.000000 0.000000 +jointlknee=-0.166115 0.000000 0.000000 +jointlankle=0.077267 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.022705 -5.367000 0.000000 +frame2=0.022704 -5.367003 3.321562 +frame4=0.022702 -5.367009 3.321562 +frame5=0.022701 -5.367012 3.321533 +frame13=0.022694 -5.367035 3.321555 +frame15=0.022692 -5.367042 3.321548 +frame17=0.022690 -5.367047 3.321561 +frame21=0.022686 -5.367059 3.321562 +frame28=0.022679 -5.367080 3.321558 + +[KeyJointPos] +frame1=0.000000 -0.375690 0.000000 +frame2=0.000000 -0.361775 0.000000 +frame4=0.000000 -0.333946 0.000000 +frame5=0.000000 -0.320032 0.000000 +frame13=0.000000 -0.208717 0.000000 +frame15=0.000000 -0.180888 0.000000 +frame17=0.000000 -0.153059 0.000000 +frame21=0.000000 -0.097401 0.000000 +frame28=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/JAKWWL.ANI b/CONTENT/BT/ANIMS/JAKWWL.ANI new file mode 100644 index 0000000..c21d749 --- /dev/null +++ b/CONTENT/BT/ANIMS/JAKWWL.ANI @@ -0,0 +1,98 @@ +[LAB_ONLY] + +[HEADER] +framecount=6 +framerate=30 +skeletonfile=jak.skl +jointcount=7 + +[Time] +frame1=0 +frame4=0.1 +frame6=0.166667 +frame9=0.266667 +frame12=0.366667 +frame14=0.433333 + +[JointIndices] +jointlocal=0 +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=12 +jointrknee=13 +jointrankle=14 + +[JointType] +jointlocal=balltranslate +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.459470 0.000000 0.000000 +jointlknee=-0.186817 0.000000 0.000000 +jointlankle=0.455412 0.000000 0.000000 +jointrthigh=0.629025 0.000000 0.000000 +jointrknee=-0.231209 0.000000 0.000000 +jointrankle=-0.013522 0.000000 0.000000 +[frame4] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.203491 0.000000 0.000000 +jointlknee=-0.864435 0.000000 0.000000 +jointlankle=0.442799 0.000000 0.000000 +jointrthigh=0.579179 0.000000 0.000000 +jointrknee=-0.516413 0.000000 0.000000 +jointrankle=0.064927 0.000000 0.000000 +[frame6] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.016557 0.000000 0.000000 +jointlknee=-1.239693 0.000000 0.000000 +jointlankle=0.430690 0.000000 0.000000 +jointrthigh=0.374680 0.000000 0.000000 +jointrknee=-0.442956 0.000000 0.000000 +jointrankle=0.070698 0.000000 0.000000 +[frame9] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.562082 0.000000 0.000000 +jointlknee=-1.241212 0.000000 0.000000 +jointlankle=0.467319 0.000000 0.000000 +jointrthigh=-0.135002 0.000000 0.000000 +jointrknee=0.019886 0.000000 0.000000 +jointrankle=0.108357 0.000000 0.000000 +[frame12] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.757106 0.000000 0.000000 +jointlknee=-0.690585 0.000000 0.000000 +jointlankle=0.165525 0.000000 0.000000 +jointrthigh=-0.227013 0.000000 0.000000 +jointrknee=-0.296935 0.000000 0.000000 +jointrankle=0.439566 0.000000 0.000000 +[frame14] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.629025 0.000000 0.000000 +jointlknee=-0.231209 0.000000 0.000000 +jointlankle=-0.013522 0.000000 0.000000 +jointrthigh=-0.367786 0.000000 0.000000 +jointrknee=-0.334946 0.000000 0.000000 +jointrankle=0.489980 0.000000 0.000000 + +[RootTranslation] +frame1=0.022705 -5.367000 0.000000 +frame4=0.022705 -5.367000 13.148000 +frame6=0.022705 -5.367000 13.931850 +frame9=0.022705 -5.367000 12.993397 +frame12=0.022705 -5.367000 13.450983 +frame14=0.022705 -5.367000 13.450972 + +[KeyJointPos] +frame1=0.000000 -0.375690 0.000000 +frame4=0.000000 -0.244136 0.000000 +frame6=0.000000 -0.164275 0.000000 +frame9=0.000000 -0.046929 0.000000 +frame12=0.000000 -0.244185 0.000000 +frame14=0.000000 -0.375690 0.000000 diff --git a/CONTENT/BT/ANIMS/JAKWWLI.ANI b/CONTENT/BT/ANIMS/JAKWWLI.ANI new file mode 100644 index 0000000..09653fc --- /dev/null +++ b/CONTENT/BT/ANIMS/JAKWWLI.ANI @@ -0,0 +1,107 @@ +[LAB_ONLY] + +[HEADER] +framecount=6 +framerate=30 +skeletonfile=jak.skl +jointcount=8 + +[Time] +frame1=0 +frame4=0.1 +frame6=0.166667 +frame9=0.266667 +frame12=0.366667 +frame14=0.433333 + +[JointIndices] +jointlocal=0 +jointshakey=3 +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=12 +jointrknee=13 +jointrankle=14 + + +[JointType] +jointlocal=balltranslate +jointshakey=ball +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.459470 0.000000 0.000000 +jointlknee=-0.186817 0.000000 0.000000 +jointlankle=0.455412 0.000000 0.000000 +jointrthigh=0.629025 0.000000 0.000000 +jointrknee=-0.231209 0.000000 0.000000 +jointrankle=-0.013522 0.000000 0.000000 +[frame4] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.203491 0.000000 0.000000 +jointlknee=-0.864435 0.000000 0.000000 +jointlankle=0.442799 0.000000 0.000000 +jointrthigh=0.579179 0.000000 0.000000 +jointrknee=-0.516413 0.000000 0.000000 +jointrankle=0.064927 0.000000 0.000000 +[frame6] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.016557 0.000000 0.000000 +jointlknee=-1.239693 0.000000 0.000000 +jointlankle=0.430690 0.000000 0.000000 +jointrthigh=0.374680 0.000000 0.000000 +jointrknee=-0.442956 0.000000 0.000000 +jointrankle=0.070698 0.000000 0.000000 +[frame9] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.562082 0.000000 0.000000 +jointlknee=-1.241212 0.000000 0.000000 +jointlankle=0.467319 0.000000 0.000000 +jointrthigh=-0.135002 0.000000 0.000000 +jointrknee=0.019886 0.000000 0.000000 +jointrankle=0.108357 0.000000 0.000000 +[frame12] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.757106 0.000000 0.000000 +jointlknee=-0.690585 0.000000 0.000000 +jointlankle=0.165525 0.000000 0.000000 +jointrthigh=-0.227013 0.000000 0.000000 +jointrknee=-0.296935 0.000000 0.000000 +jointrankle=0.439566 0.000000 0.000000 +[frame14] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.629025 0.000000 0.000000 +jointlknee=-0.231209 0.000000 0.000000 +jointlankle=-0.013522 0.000000 0.000000 +jointrthigh=-0.367786 0.000000 0.000000 +jointrknee=-0.334946 0.000000 0.000000 +jointrankle=0.489980 0.000000 0.000000 + +[RootTranslation] +frame1=0.022705 -5.367000 0.000000 +frame4=0.022705 -5.367000 13.148000 +frame6=0.022705 -5.367000 13.931850 +frame9=0.022705 -5.367000 12.993397 +frame12=0.022705 -5.367000 13.450983 +frame14=0.022705 -5.367000 13.450972 + +[KeyJointPos] +frame1=0.000000 -0.375690 0.000000 +frame4=0.000000 -0.244136 0.000000 +frame6=0.000000 -0.164275 0.000000 +frame9=0.000000 -0.046929 0.000000 +frame12=0.000000 -0.244185 0.000000 +frame14=0.000000 -0.375690 0.000000 diff --git a/CONTENT/BT/ANIMS/JAKWWR.ANI b/CONTENT/BT/ANIMS/JAKWWR.ANI new file mode 100644 index 0000000..5cd7a75 --- /dev/null +++ b/CONTENT/BT/ANIMS/JAKWWR.ANI @@ -0,0 +1,98 @@ +[LAB_ONLY] + +[HEADER] +framecount=6 +framerate=30 +skeletonfile=jak.skl +jointcount=7 + +[Time] +frame1=0 +frame4=0.1 +frame6=0.166667 +frame9=0.266667 +frame12=0.366667 +frame14=0.433333 + +[JointIndices] +jointlocal=0 +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=12 +jointrknee=13 +jointrankle=14 + +[JointType] +jointlocal=balltranslate +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.629025 0.000000 0.000000 +jointlknee=-0.231209 0.000000 0.000000 +jointlankle=-0.013522 0.000000 0.000000 +jointrthigh=-0.367786 0.000000 0.000000 +jointrknee=-0.334946 0.000000 0.000000 +jointrankle=0.489980 0.000000 0.000000 +[frame4] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.579179 0.000000 0.000000 +jointlknee=-0.516413 0.000000 0.000000 +jointlankle=0.064927 0.000000 0.000000 +jointrthigh=-0.203491 0.000000 0.000000 +jointrknee=-0.864435 0.000000 0.000000 +jointrankle=0.442799 0.000000 0.000000 +[frame6] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.375141 0.000000 0.000000 +jointlknee=-0.443900 0.000000 0.000000 +jointlankle=0.071330 0.000000 0.000000 +jointrthigh=-0.016557 0.000000 0.000000 +jointrknee=-1.239693 0.000000 0.000000 +jointrankle=0.430690 0.000000 0.000000 +[frame9] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.135002 0.000000 0.000000 +jointlknee=0.019886 0.000000 0.000000 +jointlankle=0.108357 0.000000 0.000000 +jointrthigh=0.562082 0.000000 0.000000 +jointrknee=-1.241212 0.000000 0.000000 +jointrankle=0.467319 0.000000 0.000000 +[frame12] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.227502 0.000000 0.000000 +jointlknee=-0.312922 0.000000 0.000000 +jointlankle=0.457945 0.000000 0.000000 +jointrthigh=0.757106 0.000000 0.000000 +jointrknee=-0.690585 0.000000 0.000000 +jointrankle=0.165525 0.000000 0.000000 +[frame14] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.367786 0.000000 0.000000 +jointlknee=-0.334946 0.000000 0.000000 +jointlankle=0.489980 0.000000 0.000000 +jointrthigh=0.629025 0.000000 0.000000 +jointrknee=-0.231209 0.000000 0.000000 +jointrankle=-0.013522 0.000000 0.000000 + +[RootTranslation] +frame1=0.022705 -5.367000 0.000000 +frame4=0.022705 -5.367000 13.479719 +frame6=0.022705 -5.367000 13.479723 +frame9=0.023000 -5.367000 12.874002 +frame12=0.022823 -5.367000 13.544398 +frame14=0.022705 -5.367000 13.544398 + +[KeyJointPos] +frame1=0.000000 -0.375690 0.000000 +frame4=0.000000 -0.248841 0.000000 +frame6=0.000000 -0.164275 0.000000 +frame9=0.000000 -0.046929 0.000000 +frame12=0.000000 -0.244185 0.000000 +frame14=0.000000 -0.375690 0.000000 diff --git a/CONTENT/BT/ANIMS/JAKWWRI.ANI b/CONTENT/BT/ANIMS/JAKWWRI.ANI new file mode 100644 index 0000000..18daaae --- /dev/null +++ b/CONTENT/BT/ANIMS/JAKWWRI.ANI @@ -0,0 +1,107 @@ +[LAB_ONLY] + +[HEADER] +framecount=6 +framerate=30 +skeletonfile=jak.skl +jointcount=8 + +[Time] +frame1=0 +frame4=0.1 +frame6=0.166667 +frame9=0.266667 +frame12=0.366667 +frame14=0.433333 + +[JointIndices] +jointlocal=0 +jointshakey=3 +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=12 +jointrknee=13 +jointrankle=14 + + +[JointType] +jointlocal=balltranslate +jointshakey=ball +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.629025 0.000000 0.000000 +jointlknee=-0.231209 0.000000 0.000000 +jointlankle=-0.013522 0.000000 0.000000 +jointrthigh=-0.367786 0.000000 0.000000 +jointrknee=-0.334946 0.000000 0.000000 +jointrankle=0.489980 0.000000 0.000000 +[frame4] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.579179 0.000000 0.000000 +jointlknee=-0.516413 0.000000 0.000000 +jointlankle=0.064927 0.000000 0.000000 +jointrthigh=-0.203491 0.000000 0.000000 +jointrknee=-0.864435 0.000000 0.000000 +jointrankle=0.442799 0.000000 0.000000 +[frame6] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.375141 0.000000 0.000000 +jointlknee=-0.443900 0.000000 0.000000 +jointlankle=0.071330 0.000000 0.000000 +jointrthigh=-0.016557 0.000000 0.000000 +jointrknee=-1.239693 0.000000 0.000000 +jointrankle=0.430690 0.000000 0.000000 +[frame9] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.135002 0.000000 0.000000 +jointlknee=0.019886 0.000000 0.000000 +jointlankle=0.108357 0.000000 0.000000 +jointrthigh=0.562082 0.000000 0.000000 +jointrknee=-1.241212 0.000000 0.000000 +jointrankle=0.467319 0.000000 0.000000 +[frame12] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.227502 0.000000 0.000000 +jointlknee=-0.312922 0.000000 0.000000 +jointlankle=0.457945 0.000000 0.000000 +jointrthigh=0.757106 0.000000 0.000000 +jointrknee=-0.690585 0.000000 0.000000 +jointrankle=0.165525 0.000000 0.000000 +[frame14] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.367786 0.000000 0.000000 +jointlknee=-0.334946 0.000000 0.000000 +jointlankle=0.489980 0.000000 0.000000 +jointrthigh=0.629025 0.000000 0.000000 +jointrknee=-0.231209 0.000000 0.000000 +jointrankle=-0.013522 0.000000 0.000000 + +[RootTranslation] +frame1=0.022705 -5.367000 0.000000 +frame4=0.022705 -5.367000 13.479719 +frame6=0.022705 -5.367000 13.479723 +frame9=0.023000 -5.367000 12.874002 +frame12=0.022823 -5.367000 13.544398 +frame14=0.022705 -5.367000 13.544398 + +[KeyJointPos] +frame1=0.000000 -0.375690 0.000000 +frame4=0.000000 -0.248841 0.000000 +frame6=0.000000 -0.164275 0.000000 +frame9=0.000000 -0.046929 0.000000 +frame12=0.000000 -0.244185 0.000000 +frame14=0.000000 -0.375690 0.000000 diff --git a/CONTENT/BT/ANIMS/LOKBBL.ANI b/CONTENT/BT/ANIMS/LOKBBL.ANI new file mode 100644 index 0000000..ae2114a --- /dev/null +++ b/CONTENT/BT/ANIMS/LOKBBL.ANI @@ -0,0 +1,142 @@ +[LAB_ONLY] + +[HEADER] +framecount=10 +framerate=30 +skeletonfile=lok.skl +jointcount=7 + +[Time] +frame1=0 +frame3=0.0666667 +frame5=0.133333 +frame6=0.166667 +frame7=0.2 +frame8=0.233333 +frame9=0.266667 +frame10=0.3 +frame12=0.366667 +frame14=0.433333 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate + +[frame1] +jointlthigh=0.395614 0.000000 0.000000 +jointlknee=-0.220767 0.000000 0.000000 +jointlankle=0.133954 0.000000 0.000000 +jointrthigh=-0.489790 0.000000 0.000000 +jointrknee=-0.478915 0.000000 0.000000 +jointrankle=0.634445 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame3] +jointlthigh=0.345866 0.000000 0.000000 +jointlknee=-0.737504 0.000000 0.000000 +jointlankle=0.377070 0.000000 0.000000 +jointrthigh=-0.317817 0.000000 0.000000 +jointrknee=-0.523450 0.000000 0.000000 +jointrankle=0.671760 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.006545 +[frame5] +jointlthigh=0.296118 0.000000 0.000000 +jointlknee=-1.254241 0.000000 0.000000 +jointlankle=0.620185 0.000000 0.000000 +jointrthigh=-0.215133 0.000000 0.000000 +jointrknee=-0.377098 0.000000 0.000000 +jointrankle=0.587595 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.013090 +[frame6] +jointlthigh=0.224179 0.000000 0.000000 +jointlknee=-1.241145 0.000000 0.000000 +jointlankle=0.444215 0.000000 0.000000 +jointrthigh=-0.094038 0.000000 0.000000 +jointrknee=-0.463238 0.000000 0.000000 +jointrankle=0.553775 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.013963 +[frame7] +jointlthigh=0.152239 0.000000 0.000000 +jointlknee=-1.228050 0.000000 0.000000 +jointlankle=0.268245 0.000000 0.000000 +jointrthigh=0.005775 0.000000 0.000000 +jointrknee=-0.516171 0.000000 0.000000 +jointrankle=0.508165 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.014835 +[frame8] +jointlthigh=0.080300 0.000000 0.000000 +jointlknee=-1.214954 0.000000 0.000000 +jointlankle=0.092274 0.000000 0.000000 +jointrthigh=0.112345 0.000000 0.000000 +jointrknee=-0.524709 0.000000 0.000000 +jointrankle=0.411561 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.015708 +[frame9] +jointlthigh=0.008361 0.000000 0.000000 +jointlknee=-1.201858 0.000000 0.000000 +jointlankle=-0.083696 0.000000 0.000000 +jointrthigh=0.182575 0.000000 0.000000 +jointrknee=-0.464924 0.000000 0.000000 +jointrankle=0.283045 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.016581 +[frame10] +jointlthigh=-0.063579 0.000000 0.000000 +jointlknee=-1.188763 0.000000 0.000000 +jointlankle=-0.259667 0.000000 0.000000 +jointrthigh=0.189588 0.000000 0.000000 +jointrknee=-0.243873 0.000000 0.000000 +jointrankle=0.056010 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.017453 +[frame12] +jointlthigh=-0.277734 0.000000 0.000000 +jointlknee=-0.830676 0.000000 0.000000 +jointlankle=0.185311 0.000000 0.000000 +jointrthigh=0.330862 0.000000 0.000000 +jointrknee=-0.368280 0.000000 0.000000 +jointrankle=0.192704 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.008727 +[frame14] +jointlthigh=-0.491890 0.000000 0.000000 +jointlknee=-0.472590 0.000000 0.000000 +jointlankle=0.630289 0.000000 0.000000 +jointrthigh=0.395614 0.000000 0.000000 +jointrknee=-0.220767 0.000000 0.000000 +jointrankle=0.133954 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame3=0.000000 -5.350000 -14.646977 +frame5=0.000000 -5.350000 -14.646971 +frame6=0.000000 -5.350000 -13.574525 +frame7=0.000000 -5.350000 -13.574511 +frame8=0.000000 -5.350000 -13.574525 +frame9=0.000000 -5.350000 -13.574518 +frame10=0.000000 -5.350000 -13.574511 +frame12=0.000000 -5.350000 -11.933628 +frame14=0.000000 -5.350000 -11.933628 + +[KeyJointPos] +frame1=0.000000 -0.273189 0.000000 +frame3=0.039499 -0.173977 0.000000 +frame5=0.080296 -0.075032 0.000000 +frame6=0.085441 -0.090006 0.000000 +frame7=0.090559 -0.104985 0.000000 +frame8=0.095652 -0.119969 0.000000 +frame9=0.100718 -0.134957 0.000000 +frame10=0.105758 -0.149948 0.000000 +frame12=0.052339 -0.211379 0.000000 +frame14=0.000000 -0.273276 0.000000 diff --git a/CONTENT/BT/ANIMS/LOKBBLI.ANI b/CONTENT/BT/ANIMS/LOKBBLI.ANI new file mode 100644 index 0000000..394c8ed --- /dev/null +++ b/CONTENT/BT/ANIMS/LOKBBLI.ANI @@ -0,0 +1,82 @@ +[LAB_ONLY] + +[HEADER] +framecount=4 +framerate=30 +skeletonfile=lok.skl +jointcount=8 + +[Time] +frame1=0 +frame5=0.133333 +frame10=0.3 +frame14=0.433333 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=0.395614 0.000000 0.000000 +jointlknee=-0.220767 0.000000 0.000000 +jointlankle=0.133954 0.000000 0.000000 +jointrthigh=-0.489790 0.000000 0.000000 +jointrknee=-0.478915 0.000000 0.000000 +jointrankle=0.634445 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame5] +jointlthigh=0.296118 0.000000 0.000000 +jointlknee=-1.254241 0.000000 0.000000 +jointlankle=0.620185 0.000000 0.000000 +jointrthigh=-0.215133 0.000000 0.000000 +jointrknee=-0.377098 0.000000 0.000000 +jointrankle=0.587595 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.009163 +jointshakey=0.000000 0.000000 -0.009163 +[frame10] +jointlthigh=-0.098360 0.000000 0.000000 +jointlknee=-1.177303 0.000000 0.000000 +jointlankle=-0.232991 0.000000 0.000000 +jointrthigh=0.198357 0.000000 0.000000 +jointrknee=-0.335459 0.000000 0.000000 +jointrankle=0.133389 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.011345 +jointshakey=0.000000 0.000000 -0.011345 +[frame14] +jointlthigh=-0.491890 0.000000 0.000000 +jointlknee=-0.472590 0.000000 0.000000 +jointlankle=0.630289 0.000000 0.000000 +jointrthigh=0.395614 0.000000 0.000000 +jointrknee=-0.220767 0.000000 0.000000 +jointrankle=0.133954 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame5=0.000000 -5.350000 -14.646974 +frame10=0.000000 -5.350000 -13.574518 +frame14=0.000000 -5.350000 -11.933628 + +[KeyJointPos] +frame1=0.000000 -0.273189 0.000000 +frame5=0.000000 -0.074506 0.000000 +frame10=0.000000 -0.149024 0.000000 +frame14=0.000000 -0.273276 0.000000 diff --git a/CONTENT/BT/ANIMS/LOKBBR.ANI b/CONTENT/BT/ANIMS/LOKBBR.ANI new file mode 100644 index 0000000..1416b2b --- /dev/null +++ b/CONTENT/BT/ANIMS/LOKBBR.ANI @@ -0,0 +1,142 @@ +[LAB_ONLY] + +[HEADER] +framecount=10 +framerate=30 +skeletonfile=lok.skl +jointcount=7 + +[Time] +frame1=0 +frame3=0.0666667 +frame5=0.133333 +frame6=0.166667 +frame7=0.2 +frame8=0.233333 +frame9=0.266667 +frame10=0.3 +frame12=0.366667 +frame14=0.433333 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate + +[frame1] +jointlthigh=-0.488771 0.000000 0.000000 +jointlknee=-0.480292 0.000000 0.000000 +jointlankle=0.634804 0.000000 0.000000 +jointrthigh=0.395614 0.000000 0.000000 +jointrknee=-0.220767 0.000000 0.000000 +jointrankle=0.133954 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame3] +jointlthigh=-0.322532 0.000000 0.000000 +jointlknee=-0.507774 0.000000 0.000000 +jointlankle=0.660845 0.000000 0.000000 +jointrthigh=0.345866 0.000000 0.000000 +jointrknee=-0.737504 0.000000 0.000000 +jointrankle=0.377070 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.006545 +[frame5] +jointlthigh=-0.232567 0.000000 0.000000 +jointlknee=-0.328183 0.000000 0.000000 +jointlankle=0.556160 0.000000 0.000000 +jointrthigh=0.296118 0.000000 0.000000 +jointrknee=-1.254241 0.000000 0.000000 +jointrankle=0.620185 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.013090 +[frame6] +jointlthigh=-0.109046 0.000000 0.000000 +jointlknee=-0.421174 0.000000 0.000000 +jointlankle=0.526245 0.000000 0.000000 +jointrthigh=0.225096 0.000000 0.000000 +jointrknee=-1.243241 0.000000 0.000000 +jointrankle=0.446081 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.013963 +[frame7] +jointlthigh=0.001346 0.000000 0.000000 +jointlknee=-0.473082 0.000000 0.000000 +jointlankle=0.468445 0.000000 0.000000 +jointrthigh=0.154074 0.000000 0.000000 +jointrknee=-1.232242 0.000000 0.000000 +jointrankle=0.271977 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.014835 +[frame8] +jointlthigh=0.097983 0.000000 0.000000 +jointlknee=-0.485599 0.000000 0.000000 +jointlankle=0.385177 0.000000 0.000000 +jointrthigh=0.083053 0.000000 0.000000 +jointrknee=-1.221242 0.000000 0.000000 +jointrankle=0.097874 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.015708 +[frame9] +jointlthigh=0.169414 0.000000 0.000000 +jointlknee=-0.430318 0.000000 0.000000 +jointlankle=0.259440 0.000000 0.000000 +jointrthigh=0.012031 0.000000 0.000000 +jointrknee=-1.210243 0.000000 0.000000 +jointrankle=-0.076230 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.016581 +[frame10] +jointlthigh=0.180488 0.000000 0.000000 +jointlknee=-0.218513 0.000000 0.000000 +jointlankle=0.037012 0.000000 0.000000 +jointrthigh=-0.058991 0.000000 0.000000 +jointrknee=-1.199244 0.000000 0.000000 +jointrankle=-0.250334 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.017453 +[frame12] +jointlthigh=0.313178 0.000000 0.000000 +jointlknee=-0.320502 0.000000 0.000000 +jointlankle=0.161147 0.000000 0.000000 +jointrthigh=-0.274390 0.000000 0.000000 +jointrknee=-0.839079 0.000000 0.000000 +jointrankle=0.192055 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.008727 +[frame14] +jointlthigh=0.395614 0.000000 0.000000 +jointlknee=-0.220767 0.000000 0.000000 +jointlankle=0.133954 0.000000 0.000000 +jointrthigh=-0.489790 0.000000 0.000000 +jointrknee=-0.478915 0.000000 0.000000 +jointrankle=0.634445 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame3=0.000000 -5.350000 -14.550003 +frame5=0.000000 -5.350000 -14.550003 +frame6=0.000000 -5.350000 -13.577987 +frame7=0.000000 -5.350000 -13.577987 +frame8=0.000000 -5.350000 -13.578015 +frame9=0.000000 -5.350000 -13.577980 +frame10=0.000000 -5.350000 -13.578015 +frame12=0.000000 -5.350000 -11.872130 +frame14=0.000000 -5.350000 -11.872130 + +[KeyJointPos] +frame1=0.000000 -0.273189 0.000000 +frame3=-0.039499 -0.173977 0.000000 +frame5=-0.080296 -0.075032 0.000000 +frame6=-0.085441 -0.090004 0.000000 +frame7=-0.090559 -0.104980 0.000000 +frame8=-0.095652 -0.119961 0.000000 +frame9=-0.100718 -0.134946 0.000000 +frame10=-0.105759 -0.149935 0.000000 +frame12=-0.052339 -0.211329 0.000000 +frame14=0.000000 -0.273189 0.000000 diff --git a/CONTENT/BT/ANIMS/LOKBBRI.ANI b/CONTENT/BT/ANIMS/LOKBBRI.ANI new file mode 100644 index 0000000..8bce006 --- /dev/null +++ b/CONTENT/BT/ANIMS/LOKBBRI.ANI @@ -0,0 +1,82 @@ +[LAB_ONLY] + +[HEADER] +framecount=4 +framerate=30 +skeletonfile=lok.skl +jointcount=8 + +[Time] +frame1=0 +frame5=0.133333 +frame10=0.3 +frame14=0.433333 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=-0.488771 0.000000 0.000000 +jointlknee=-0.480292 0.000000 0.000000 +jointlankle=0.634804 0.000000 0.000000 +jointrthigh=0.395614 0.000000 0.000000 +jointrknee=-0.220767 0.000000 0.000000 +jointrankle=0.133954 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame5] +jointlthigh=-0.232567 0.000000 0.000000 +jointlknee=-0.328183 0.000000 0.000000 +jointlankle=0.556160 0.000000 0.000000 +jointrthigh=0.296118 0.000000 0.000000 +jointrknee=-1.254241 0.000000 0.000000 +jointrankle=0.620185 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.009163 +jointshakey=0.000000 0.000000 0.009163 +[frame10] +jointlthigh=0.180383 0.000000 0.000000 +jointlknee=-0.288658 0.000000 0.000000 +jointlankle=0.110245 0.000000 0.000000 +jointrthigh=-0.097648 0.000000 0.000000 +jointrknee=-1.171596 0.000000 0.000000 +jointrankle=-0.239320 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.011345 +jointshakey=0.000000 0.000000 0.011345 +[frame14] +jointlthigh=0.395614 0.000000 0.000000 +jointlknee=-0.220767 0.000000 0.000000 +jointlankle=0.133954 0.000000 0.000000 +jointrthigh=-0.489790 0.000000 0.000000 +jointrknee=-0.478915 0.000000 0.000000 +jointrankle=0.634445 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame5=0.000000 -5.350000 -14.550003 +frame10=0.000000 -5.350000 -13.577997 +frame14=0.000000 -5.350000 -11.872130 + +[KeyJointPos] +frame1=0.000000 -0.273189 0.000000 +frame5=0.000000 -0.074506 0.000000 +frame10=0.000000 -0.149012 0.000000 +frame14=0.000000 -0.273189 0.000000 diff --git a/CONTENT/BT/ANIMS/LOKBMP.ANI b/CONTENT/BT/ANIMS/LOKBMP.ANI new file mode 100644 index 0000000..bd2c40b --- /dev/null +++ b/CONTENT/BT/ANIMS/LOKBMP.ANI @@ -0,0 +1,80 @@ +[LAB_ONLY] + +[HEADER] +framecount=3 +framerate=30 +skeletonfile=lok.skl +jointcount=10 + +[Time] +frame1=0 +frame8=0.233333 +frame15=0.466667 + +[JointIndices] +jointhip=1 +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointrshoulder=4 +jointlshoulder=6 +jointlocal=0 + +[JointType] +jointhip=hingex +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointrshoulder=hingex +jointlshoulder=hingex +jointlocal=balltranslate + +[frame1] +jointhip=-0.208689 0.000000 0.000000 +jointlthigh=0.668932 0.000000 0.000000 +jointlknee=-0.021625 0.000000 0.000000 +jointlankle=0.154636 0.000000 0.000000 +jointrthigh=-0.924082 0.000000 0.000000 +jointrknee=-0.950576 0.000000 0.000000 +jointrankle=-0.043616 0.000000 0.000000 +jointrshoulder=0.208689 0.000000 0.000000 +jointlshoulder=0.208689 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame8] +jointhip=0.349066 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointrshoulder=0.000000 0.000000 0.000000 +jointlshoulder=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame15] +jointhip=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointrshoulder=0.000000 0.000000 0.000000 +jointlshoulder=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame8=0.000000 -5.350000 0.000000 +frame15=0.000000 -5.350000 0.000000 + +[KeyJointPos] +frame1=0.000000 0.248415 0.000000 +frame8=0.000000 0.000000 0.000000 +frame15=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/LOKBMPI.ANI b/CONTENT/BT/ANIMS/LOKBMPI.ANI new file mode 100644 index 0000000..bd2c40b --- /dev/null +++ b/CONTENT/BT/ANIMS/LOKBMPI.ANI @@ -0,0 +1,80 @@ +[LAB_ONLY] + +[HEADER] +framecount=3 +framerate=30 +skeletonfile=lok.skl +jointcount=10 + +[Time] +frame1=0 +frame8=0.233333 +frame15=0.466667 + +[JointIndices] +jointhip=1 +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointrshoulder=4 +jointlshoulder=6 +jointlocal=0 + +[JointType] +jointhip=hingex +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointrshoulder=hingex +jointlshoulder=hingex +jointlocal=balltranslate + +[frame1] +jointhip=-0.208689 0.000000 0.000000 +jointlthigh=0.668932 0.000000 0.000000 +jointlknee=-0.021625 0.000000 0.000000 +jointlankle=0.154636 0.000000 0.000000 +jointrthigh=-0.924082 0.000000 0.000000 +jointrknee=-0.950576 0.000000 0.000000 +jointrankle=-0.043616 0.000000 0.000000 +jointrshoulder=0.208689 0.000000 0.000000 +jointlshoulder=0.208689 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame8] +jointhip=0.349066 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointrshoulder=0.000000 0.000000 0.000000 +jointlshoulder=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame15] +jointhip=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointrshoulder=0.000000 0.000000 0.000000 +jointlshoulder=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame8=0.000000 -5.350000 0.000000 +frame15=0.000000 -5.350000 0.000000 + +[KeyJointPos] +frame1=0.000000 0.248415 0.000000 +frame8=0.000000 0.000000 0.000000 +frame15=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/LOKBSLI.ANI b/CONTENT/BT/ANIMS/LOKBSLI.ANI new file mode 100644 index 0000000..dd61979 --- /dev/null +++ b/CONTENT/BT/ANIMS/LOKBSLI.ANI @@ -0,0 +1,82 @@ +[LAB_ONLY] + +[HEADER] +framecount=4 +framerate=30 +skeletonfile=lok.skl +jointcount=8 + +[Time] +frame1=0 +frame15=0.466667 +frame26=0.833333 +frame35=1.13333 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=0.412577 0.000000 0.000000 +jointlknee=-0.267172 0.000000 0.000000 +jointlankle=0.163489 0.000000 0.000000 +jointrthigh=-0.491544 0.000000 0.000000 +jointrknee=-0.473590 0.000000 0.000000 +jointrankle=0.630928 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame15] +jointlthigh=0.356075 0.000000 0.000000 +jointlknee=-0.458147 0.000000 0.000000 +jointlankle=0.299338 0.000000 0.000000 +jointrthigh=-0.318334 0.000000 0.000000 +jointrknee=-0.226909 0.000000 0.000000 +jointrankle=0.543921 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.009163 +jointshakey=0.000000 0.000000 -0.009163 +[frame26] +jointlthigh=0.163888 0.000000 0.000000 +jointlknee=-0.226755 0.000000 0.000000 +jointlankle=0.113602 0.000000 0.000000 +jointrthigh=-0.105608 0.000000 0.000000 +jointrknee=-0.163046 0.000000 0.000000 +jointrankle=0.270057 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.004573 +jointshakey=0.000000 0.000000 -0.004573 +[frame35] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame15=0.000000 -5.350000 -3.622714 +frame26=0.000000 -5.350000 -3.426955 +frame35=0.000000 -5.350000 -2.954667 + +[KeyJointPos] +frame1=0.000000 -0.273276 0.000000 +frame15=0.000000 -0.074506 0.000000 +frame26=0.000000 -0.030821 0.000000 +frame35=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/LOKBSRI.ANI b/CONTENT/BT/ANIMS/LOKBSRI.ANI new file mode 100644 index 0000000..5465984 --- /dev/null +++ b/CONTENT/BT/ANIMS/LOKBSRI.ANI @@ -0,0 +1,82 @@ +[LAB_ONLY] + +[HEADER] +framecount=4 +framerate=30 +skeletonfile=lok.skl +jointcount=8 + +[Time] +frame1=0 +frame15=0.466667 +frame26=0.833333 +frame35=1.13333 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=-0.491890 0.000000 0.000000 +jointlknee=-0.472590 0.000000 0.000000 +jointlankle=0.630289 0.000000 0.000000 +jointrthigh=0.395614 0.000000 0.000000 +jointrknee=-0.220767 0.000000 0.000000 +jointrankle=0.133954 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame15] +jointlthigh=-0.291309 0.000000 0.000000 +jointlknee=-0.226886 0.000000 0.000000 +jointlankle=0.543906 0.000000 0.000000 +jointrthigh=0.356066 0.000000 0.000000 +jointrknee=-0.458126 0.000000 0.000000 +jointrankle=0.299324 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.009163 +jointshakey=0.000000 0.000000 0.009163 +[frame26] +jointlthigh=-0.123992 0.000000 0.000000 +jointlknee=-0.329948 0.000000 0.000000 +jointlankle=0.357515 0.000000 0.000000 +jointrthigh=0.163888 0.000000 0.000000 +jointrknee=-0.226755 0.000000 0.000000 +jointrankle=0.113602 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.004573 +jointshakey=0.000000 0.000000 0.004573 +[frame35] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame15=0.000000 -5.350000 -3.622714 +frame26=0.000000 -5.350000 -3.426955 +frame35=0.000000 -5.350000 -2.954667 + +[KeyJointPos] +frame1=0.000000 -0.273276 0.000000 +frame15=0.000000 -0.074506 0.000000 +frame26=0.000000 -0.030821 0.000000 +frame35=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/LOKGGL.ANI b/CONTENT/BT/ANIMS/LOKGGL.ANI new file mode 100644 index 0000000..0539873 --- /dev/null +++ b/CONTENT/BT/ANIMS/LOKGGL.ANI @@ -0,0 +1,142 @@ +[LAB_ONLY] + +[HEADER] +framecount=10 +framerate=30 +skeletonfile=lok.skl +jointcount=7 + +[Time] +frame1=0 +frame4=0.1 +frame6=0.166667 +frame8=0.233333 +frame9=0.266667 +frame10=0.3 +frame11=0.333333 +frame13=0.4 +frame17=0.533333 +frame20=0.633333 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate + +[frame1] +jointlthigh=-0.056411 0.000000 0.000000 +jointlknee=-0.233080 0.000000 0.000000 +jointlankle=0.287536 0.000000 0.000000 +jointrthigh=-0.049463 0.000000 0.000000 +jointrknee=-0.814273 0.000000 0.000000 +jointrankle=-0.499957 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.026180 +[frame4] +jointlthigh=0.219437 0.000000 0.000000 +jointlknee=-0.745695 0.000000 0.000000 +jointlankle=0.349263 0.000000 0.000000 +jointrthigh=-0.206844 0.000000 0.000000 +jointrknee=-0.536251 0.000000 0.000000 +jointrankle=-0.599763 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.010472 +[frame6] +jointlthigh=0.295355 0.000000 0.000000 +jointlknee=-0.626783 0.000000 0.000000 +jointlankle=0.508165 0.000000 0.000000 +jointrthigh=-0.379766 0.000000 0.000000 +jointrknee=-0.461936 0.000000 0.000000 +jointrankle=-0.457974 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame8] +jointlthigh=0.546616 0.000000 0.000000 +jointlknee=-0.509837 0.000000 0.000000 +jointlankle=0.344439 0.000000 0.000000 +jointrthigh=-0.526442 0.000000 0.000000 +jointrknee=-0.448430 0.000000 0.000000 +jointrankle=-0.435926 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.015513 +[frame9] +jointlthigh=0.508453 0.000000 0.000000 +jointlknee=-0.121196 0.000000 0.000000 +jointlankle=0.212120 0.000000 0.000000 +jointrthigh=-0.599781 0.000000 0.000000 +jointrknee=-0.441676 0.000000 0.000000 +jointrankle=-0.424902 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.023270 +[frame10] +jointlthigh=0.551284 0.000000 0.000000 +jointlknee=-0.371516 0.000000 0.000000 +jointlankle=0.118813 0.000000 0.000000 +jointrthigh=-0.786215 0.000000 0.000000 +jointrknee=-0.160967 0.000000 0.000000 +jointrankle=-0.664480 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.031270 +[frame11] +jointlthigh=0.594115 0.000000 0.000000 +jointlknee=-0.621836 0.000000 0.000000 +jointlankle=0.025506 0.000000 0.000000 +jointrthigh=-0.818299 0.000000 0.000000 +jointrknee=-0.206802 0.000000 0.000000 +jointrankle=-0.645807 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.039270 +[frame13] +jointlthigh=0.497082 0.000000 0.000000 +jointlknee=-0.857665 0.000000 0.000000 +jointlankle=0.360449 0.000000 0.000000 +jointrthigh=-0.637836 0.000000 0.000000 +jointrknee=-0.439298 0.000000 0.000000 +jointrankle=-0.615832 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.038695 +[frame17] +jointlthigh=0.184588 0.000000 0.000000 +jointlknee=-0.702327 0.000000 0.000000 +jointlankle=0.513223 0.000000 0.000000 +jointrthigh=-0.301938 0.000000 0.000000 +jointrknee=-0.673879 0.000000 0.000000 +jointrankle=-0.591792 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.033906 +[frame20] +jointlthigh=-0.028855 0.000000 0.000000 +jointlknee=-0.307846 0.000000 0.000000 +jointlankle=0.334679 0.000000 0.000000 +jointrthigh=-0.049463 0.000000 0.000000 +jointrknee=-0.814273 0.000000 0.000000 +jointrankle=-0.499957 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.026180 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame4=0.000000 -5.350000 3.302994 +frame6=0.000000 -5.350000 9.516019 +frame8=0.000000 -5.350000 13.032018 +frame9=0.000000 -5.350000 13.031955 +frame10=0.000000 -5.355160 22.120516 +frame11=0.000000 -5.360320 22.120459 +frame13=0.000000 -5.350000 13.375512 +frame17=0.000000 -5.350000 8.910740 +frame20=0.000000 -5.350000 3.376008 + +[KeyJointPos] +frame1=-0.165129 0.097180 0.000000 +frame4=-0.068400 0.322626 0.000000 +frame6=0.000000 0.223580 0.000000 +frame8=-0.093185 -0.202556 0.000000 +frame9=-0.134822 -0.416108 0.000000 +frame10=-0.172866 -0.682463 0.000000 +frame11=-0.206658 -0.949037 0.000000 +frame13=-0.210781 -0.764277 0.000000 +frame17=-0.202274 -0.245332 0.000000 +frame20=-0.165129 0.097180 0.000000 diff --git a/CONTENT/BT/ANIMS/LOKGGLI.ANI b/CONTENT/BT/ANIMS/LOKGGLI.ANI new file mode 100644 index 0000000..c4888c1 --- /dev/null +++ b/CONTENT/BT/ANIMS/LOKGGLI.ANI @@ -0,0 +1,154 @@ +[LAB_ONLY] + +[HEADER] +framecount=10 +framerate=30 +skeletonfile=lok.skl +jointcount=8 + +[Time] +frame1=0 +frame4=0.1 +frame6=0.166667 +frame8=0.233333 +frame9=0.266667 +frame10=0.3 +frame11=0.333333 +frame13=0.4 +frame17=0.533333 +frame20=0.633333 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=-0.056411 0.000000 0.000000 +jointlknee=-0.233080 0.000000 0.000000 +jointlankle=0.287536 0.000000 0.000000 +jointrthigh=-0.049463 0.000000 0.000000 +jointrknee=-0.814273 0.000000 0.000000 +jointrankle=-0.499957 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.015708 +jointshakey=0.000000 0.000000 0.015708 +[frame4] +jointlthigh=0.219437 0.000000 0.000000 +jointlknee=-0.745695 0.000000 0.000000 +jointlankle=0.349263 0.000000 0.000000 +jointrthigh=-0.206844 0.000000 0.000000 +jointrknee=-0.536251 0.000000 0.000000 +jointrankle=-0.599763 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.003665 +jointshakey=0.000000 0.000000 0.003665 +[frame6] +jointlthigh=0.295355 0.000000 0.000000 +jointlknee=-0.626783 0.000000 0.000000 +jointlankle=0.508165 0.000000 0.000000 +jointrthigh=-0.379766 0.000000 0.000000 +jointrknee=-0.461936 0.000000 0.000000 +jointrankle=-0.457974 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.004363 +jointshakey=0.000000 0.000000 -0.004363 +[frame8] +jointlthigh=0.546616 0.000000 0.000000 +jointlknee=-0.509837 0.000000 0.000000 +jointlankle=0.344439 0.000000 0.000000 +jointrthigh=-0.526442 0.000000 0.000000 +jointrknee=-0.448430 0.000000 0.000000 +jointrankle=-0.435926 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.004363 +jointshakey=0.000000 0.000000 0.004363 +[frame9] +jointlthigh=0.508453 0.000000 0.000000 +jointlknee=-0.121196 0.000000 0.000000 +jointlankle=0.212120 0.000000 0.000000 +jointrthigh=-0.599781 0.000000 0.000000 +jointrknee=-0.441676 0.000000 0.000000 +jointrankle=-0.424902 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.008727 +jointshakey=0.000000 0.000000 0.008727 +[frame10] +jointlthigh=0.551284 0.000000 0.000000 +jointlknee=-0.371516 0.000000 0.000000 +jointlankle=0.118813 0.000000 0.000000 +jointrthigh=-0.786215 0.000000 0.000000 +jointrknee=-0.160967 0.000000 0.000000 +jointrankle=-0.664480 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.013090 +jointshakey=0.000000 0.000000 0.013090 +[frame11] +jointlthigh=0.594115 0.000000 0.000000 +jointlknee=-0.621836 0.000000 0.000000 +jointlankle=0.025506 0.000000 0.000000 +jointrthigh=-0.818299 0.000000 0.000000 +jointrknee=-0.206802 0.000000 0.000000 +jointrankle=-0.645807 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.017453 +jointshakey=0.000000 0.000000 0.017453 +[frame13] +jointlthigh=0.497082 0.000000 0.000000 +jointlknee=-0.857665 0.000000 0.000000 +jointlankle=0.360449 0.000000 0.000000 +jointrthigh=-0.637836 0.000000 0.000000 +jointrknee=-0.439298 0.000000 0.000000 +jointrankle=-0.615832 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.017065 +jointshakey=0.000000 0.000000 0.017065 +[frame17] +jointlthigh=0.184588 0.000000 0.000000 +jointlknee=-0.702327 0.000000 0.000000 +jointlankle=0.513223 0.000000 0.000000 +jointrthigh=-0.301938 0.000000 0.000000 +jointrknee=-0.673879 0.000000 0.000000 +jointrankle=-0.591792 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.016290 +jointshakey=0.000000 0.000000 0.016290 +[frame20] +jointlthigh=-0.028855 0.000000 0.000000 +jointlknee=-0.307846 0.000000 0.000000 +jointlankle=0.334679 0.000000 0.000000 +jointrthigh=-0.049463 0.000000 0.000000 +jointrknee=-0.814273 0.000000 0.000000 +jointrankle=-0.499957 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.015708 +jointshakey=0.000000 0.000000 0.015708 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame4=0.000000 -5.350000 3.302994 +frame6=0.000000 -5.350000 9.516019 +frame8=0.000000 -5.350000 13.032018 +frame9=0.000000 -5.350000 13.031955 +frame10=0.000000 -5.355160 22.120516 +frame11=0.000000 -5.360320 22.120459 +frame13=0.000000 -5.350000 13.375512 +frame17=0.000000 -5.350000 8.910740 +frame20=0.000000 -5.350000 3.376008 + +[KeyJointPos] +frame1=0.000000 0.099342 0.000000 +frame4=0.000000 0.322984 0.000000 +frame6=0.000000 0.223580 0.000000 +frame8=0.000000 -0.201833 0.000000 +frame9=0.000000 -0.414539 0.000000 +frame10=0.000000 -0.679760 0.000000 +frame11=0.000000 -0.944979 0.000000 +frame13=0.000000 -0.760198 0.000000 +frame17=0.000000 -0.241902 0.000000 +frame20=0.000000 0.099342 0.000000 diff --git a/CONTENT/BT/ANIMS/LOKGGR.ANI b/CONTENT/BT/ANIMS/LOKGGR.ANI new file mode 100644 index 0000000..e0317aa --- /dev/null +++ b/CONTENT/BT/ANIMS/LOKGGR.ANI @@ -0,0 +1,142 @@ +[LAB_ONLY] + +[HEADER] +framecount=10 +framerate=30 +skeletonfile=lok.skl +jointcount=7 + +[Time] +frame1=0 +frame4=0.1 +frame6=0.166667 +frame8=0.233333 +frame9=0.266667 +frame10=0.3 +frame11=0.333333 +frame13=0.4 +frame17=0.533333 +frame20=0.633333 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate + +[frame1] +jointlthigh=-0.049463 0.000000 0.000000 +jointlknee=-0.814273 0.000000 0.000000 +jointlankle=-0.499957 0.000000 0.000000 +jointrthigh=-0.056411 0.000000 0.000000 +jointrknee=-0.233080 0.000000 0.000000 +jointrankle=0.287536 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.026180 +[frame4] +jointlthigh=-0.206844 0.000000 0.000000 +jointlknee=-0.536251 0.000000 0.000000 +jointlankle=-0.599763 0.000000 0.000000 +jointrthigh=0.219437 0.000000 0.000000 +jointrknee=-0.745695 0.000000 0.000000 +jointrankle=0.349263 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.010472 +[frame6] +jointlthigh=-0.379766 0.000000 0.000000 +jointlknee=-0.461936 0.000000 0.000000 +jointlankle=-0.457974 0.000000 0.000000 +jointrthigh=0.295355 0.000000 0.000000 +jointrknee=-0.626783 0.000000 0.000000 +jointrankle=0.508165 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame8] +jointlthigh=-0.526442 0.000000 0.000000 +jointlknee=-0.448430 0.000000 0.000000 +jointlankle=-0.435926 0.000000 0.000000 +jointrthigh=0.546616 0.000000 0.000000 +jointrknee=-0.509837 0.000000 0.000000 +jointrankle=0.344439 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.015513 +[frame9] +jointlthigh=-0.599781 0.000000 0.000000 +jointlknee=-0.441676 0.000000 0.000000 +jointlankle=-0.424902 0.000000 0.000000 +jointrthigh=0.508453 0.000000 0.000000 +jointrknee=-0.121196 0.000000 0.000000 +jointrankle=0.212120 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.023270 +[frame10] +jointlthigh=-0.786215 0.000000 0.000000 +jointlknee=-0.160967 0.000000 0.000000 +jointlankle=-0.664480 0.000000 0.000000 +jointrthigh=0.551284 0.000000 0.000000 +jointrknee=-0.371516 0.000000 0.000000 +jointrankle=0.118813 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.031270 +[frame11] +jointlthigh=-0.818299 0.000000 0.000000 +jointlknee=-0.206802 0.000000 0.000000 +jointlankle=-0.645807 0.000000 0.000000 +jointrthigh=0.594115 0.000000 0.000000 +jointrknee=-0.621836 0.000000 0.000000 +jointrankle=0.025506 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.039270 +[frame13] +jointlthigh=-0.637836 0.000000 0.000000 +jointlknee=-0.439298 0.000000 0.000000 +jointlankle=-0.615832 0.000000 0.000000 +jointrthigh=0.497082 0.000000 0.000000 +jointrknee=-0.857665 0.000000 0.000000 +jointrankle=0.360449 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.038695 +[frame17] +jointlthigh=-0.301938 0.000000 0.000000 +jointlknee=-0.673879 0.000000 0.000000 +jointlankle=-0.591792 0.000000 0.000000 +jointrthigh=0.184588 0.000000 0.000000 +jointrknee=-0.702327 0.000000 0.000000 +jointrankle=0.513223 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.033906 +[frame20] +jointlthigh=-0.049463 0.000000 0.000000 +jointlknee=-0.814273 0.000000 0.000000 +jointlankle=-0.499957 0.000000 0.000000 +jointrthigh=-0.028855 0.000000 0.000000 +jointrknee=-0.307846 0.000000 0.000000 +jointrankle=0.334679 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.026180 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame4=0.000000 -5.350000 3.302994 +frame6=0.000000 -5.350000 9.516019 +frame8=0.000000 -5.350000 13.032018 +frame9=0.000000 -5.350000 13.031955 +frame10=0.000000 -5.355160 22.120516 +frame11=0.000000 -5.360320 22.120459 +frame13=0.000000 -5.350000 13.375512 +frame17=0.000000 -5.350000 8.910740 +frame20=0.000000 -5.350000 3.376008 + +[KeyJointPos] +frame1=0.165129 0.097180 0.000000 +frame4=0.068400 0.322626 0.000000 +frame6=0.000000 0.223580 0.000000 +frame8=0.093185 -0.202556 0.000000 +frame9=0.134822 -0.416108 0.000000 +frame10=0.172866 -0.682463 0.000000 +frame11=0.206658 -0.949037 0.000000 +frame13=0.210781 -0.764277 0.000000 +frame17=0.202274 -0.245332 0.000000 +frame20=0.165129 0.097180 0.000000 diff --git a/CONTENT/BT/ANIMS/LOKGGRI.ANI b/CONTENT/BT/ANIMS/LOKGGRI.ANI new file mode 100644 index 0000000..8e1b403 --- /dev/null +++ b/CONTENT/BT/ANIMS/LOKGGRI.ANI @@ -0,0 +1,154 @@ +[LAB_ONLY] + +[HEADER] +framecount=10 +framerate=30 +skeletonfile=lok.skl +jointcount=8 + +[Time] +frame1=0 +frame4=0.1 +frame6=0.166667 +frame8=0.233333 +frame9=0.266667 +frame10=0.3 +frame11=0.333333 +frame13=0.4 +frame17=0.533333 +frame20=0.633333 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=-0.049463 0.000000 0.000000 +jointlknee=-0.814273 0.000000 0.000000 +jointlankle=-0.499957 0.000000 0.000000 +jointrthigh=-0.056411 0.000000 0.000000 +jointrknee=-0.233080 0.000000 0.000000 +jointrankle=0.287536 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.015708 +jointshakey=0.000000 0.000000 -0.015708 +[frame4] +jointlthigh=-0.206844 0.000000 0.000000 +jointlknee=-0.536251 0.000000 0.000000 +jointlankle=-0.599763 0.000000 0.000000 +jointrthigh=0.219437 0.000000 0.000000 +jointrknee=-0.745695 0.000000 0.000000 +jointrankle=0.349263 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.003665 +jointshakey=0.000000 0.000000 -0.003665 +[frame6] +jointlthigh=-0.379766 0.000000 0.000000 +jointlknee=-0.461936 0.000000 0.000000 +jointlankle=-0.457974 0.000000 0.000000 +jointrthigh=0.295355 0.000000 0.000000 +jointrknee=-0.626783 0.000000 0.000000 +jointrankle=0.508165 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.004363 +jointshakey=0.000000 0.000000 0.004363 +[frame8] +jointlthigh=-0.526442 0.000000 0.000000 +jointlknee=-0.448430 0.000000 0.000000 +jointlankle=-0.435926 0.000000 0.000000 +jointrthigh=0.546616 0.000000 0.000000 +jointrknee=-0.509837 0.000000 0.000000 +jointrankle=0.344439 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.004363 +jointshakey=0.000000 0.000000 -0.004363 +[frame9] +jointlthigh=-0.599781 0.000000 0.000000 +jointlknee=-0.441676 0.000000 0.000000 +jointlankle=-0.424902 0.000000 0.000000 +jointrthigh=0.508453 0.000000 0.000000 +jointrknee=-0.121196 0.000000 0.000000 +jointrankle=0.212120 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.008727 +jointshakey=0.000000 0.000000 -0.008727 +[frame10] +jointlthigh=-0.786215 0.000000 0.000000 +jointlknee=-0.160967 0.000000 0.000000 +jointlankle=-0.664480 0.000000 0.000000 +jointrthigh=0.551284 0.000000 0.000000 +jointrknee=-0.371516 0.000000 0.000000 +jointrankle=0.118813 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.013090 +jointshakey=0.000000 0.000000 -0.013090 +[frame11] +jointlthigh=-0.818299 0.000000 0.000000 +jointlknee=-0.206802 0.000000 0.000000 +jointlankle=-0.645807 0.000000 0.000000 +jointrthigh=0.594115 0.000000 0.000000 +jointrknee=-0.621836 0.000000 0.000000 +jointrankle=0.025506 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.017453 +jointshakey=0.000000 0.000000 -0.017453 +[frame13] +jointlthigh=-0.637836 0.000000 0.000000 +jointlknee=-0.439298 0.000000 0.000000 +jointlankle=-0.615832 0.000000 0.000000 +jointrthigh=0.497082 0.000000 0.000000 +jointrknee=-0.857665 0.000000 0.000000 +jointrankle=0.360449 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.017065 +jointshakey=0.000000 0.000000 -0.017065 +[frame17] +jointlthigh=-0.301938 0.000000 0.000000 +jointlknee=-0.673879 0.000000 0.000000 +jointlankle=-0.591792 0.000000 0.000000 +jointrthigh=0.184588 0.000000 0.000000 +jointrknee=-0.702327 0.000000 0.000000 +jointrankle=0.513223 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.016290 +jointshakey=0.000000 0.000000 -0.016290 +[frame20] +jointlthigh=-0.049463 0.000000 0.000000 +jointlknee=-0.814273 0.000000 0.000000 +jointlankle=-0.499957 0.000000 0.000000 +jointrthigh=-0.028855 0.000000 0.000000 +jointrknee=-0.307846 0.000000 0.000000 +jointrankle=0.334679 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.015708 +jointshakey=0.000000 0.000000 -0.015708 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame4=0.000000 -5.350000 3.302994 +frame6=0.000000 -5.350000 9.516019 +frame8=0.000000 -5.350000 13.032018 +frame9=0.000000 -5.350000 13.031955 +frame10=0.000000 -5.355160 22.120516 +frame11=0.000000 -5.360320 22.120459 +frame13=0.000000 -5.350000 13.375512 +frame17=0.000000 -5.350000 8.910740 +frame20=0.000000 -5.350000 3.376008 + +[KeyJointPos] +frame1=0.000000 0.099342 0.000000 +frame4=0.000000 0.322984 0.000000 +frame6=0.000000 0.223580 0.000000 +frame8=0.000000 -0.201833 0.000000 +frame9=0.000000 -0.414539 0.000000 +frame10=0.000000 -0.679760 0.000000 +frame11=0.000000 -0.944979 0.000000 +frame13=0.000000 -0.760198 0.000000 +frame17=0.000000 -0.241902 0.000000 +frame20=0.000000 0.099342 0.000000 diff --git a/CONTENT/BT/ANIMS/LOKGSLI.ANI b/CONTENT/BT/ANIMS/LOKGSLI.ANI new file mode 100644 index 0000000..ed14c53 --- /dev/null +++ b/CONTENT/BT/ANIMS/LOKGSLI.ANI @@ -0,0 +1,106 @@ +[LAB_ONLY] + +[HEADER] +framecount=6 +framerate=30 +skeletonfile=lok.skl +jointcount=8 + +[Time] +frame1=0 +frame7=0.2 +frame9=0.266667 +frame11=0.333333 +frame15=0.466667 +frame23=0.733333 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=-0.037374 0.000000 0.000000 +jointlknee=-0.854337 0.000000 0.000000 +jointlankle=-0.471860 0.000000 0.000000 +jointrthigh=-0.094758 0.000000 0.000000 +jointrknee=-0.129419 0.000000 0.000000 +jointrankle=0.226978 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.015708 +jointshakey=0.000000 0.000000 -0.015708 +[frame7] +jointlthigh=0.068051 0.000000 0.000000 +jointlknee=-1.036499 0.000000 0.000000 +jointlankle=-0.081358 0.000000 0.000000 +jointrthigh=-0.068915 0.000000 0.000000 +jointrknee=-0.094123 0.000000 0.000000 +jointrankle=0.165075 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.011424 +jointshakey=0.000000 0.000000 -0.011424 +[frame9] +jointlthigh=0.081073 0.000000 0.000000 +jointlknee=-1.015152 0.000000 0.000000 +jointlankle=0.023671 0.000000 0.000000 +jointrthigh=-0.060300 0.000000 0.000000 +jointrknee=-0.082358 0.000000 0.000000 +jointrankle=0.144441 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.009996 +jointshakey=0.000000 0.000000 -0.009996 +[frame11] +jointlthigh=0.099666 0.000000 0.000000 +jointlknee=-1.043461 0.000000 0.000000 +jointlankle=0.186181 0.000000 0.000000 +jointrthigh=-0.051686 0.000000 0.000000 +jointrknee=-0.070592 0.000000 0.000000 +jointrankle=0.123806 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.008568 +jointshakey=0.000000 0.000000 -0.008568 +[frame15] +jointlthigh=0.106684 0.000000 0.000000 +jointlknee=-0.881667 0.000000 0.000000 +jointlankle=0.332216 0.000000 0.000000 +jointrthigh=-0.034457 0.000000 0.000000 +jointrknee=-0.047062 0.000000 0.000000 +jointrankle=0.082538 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.005712 +jointshakey=0.000000 0.000000 -0.005712 +[frame23] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame7=0.000000 -5.350000 1.304002 +frame9=0.000000 -5.350000 -0.133510 +frame11=0.000000 -5.350000 -0.133495 +frame15=0.000000 -5.350000 -1.709998 +frame23=0.000000 -5.350000 -2.894625 + +[KeyJointPos] +frame1=0.000000 0.099342 0.000000 +frame7=0.000000 0.066186 0.000000 +frame9=0.000000 0.052961 0.000000 +frame11=0.000000 0.047995 0.000000 +frame15=0.000000 0.033093 0.000000 +frame23=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/LOKGSRI.ANI b/CONTENT/BT/ANIMS/LOKGSRI.ANI new file mode 100644 index 0000000..a2bdef7 --- /dev/null +++ b/CONTENT/BT/ANIMS/LOKGSRI.ANI @@ -0,0 +1,106 @@ +[LAB_ONLY] + +[HEADER] +framecount=6 +framerate=30 +skeletonfile=lok.skl +jointcount=8 + +[Time] +frame1=0 +frame7=0.2 +frame9=0.266667 +frame11=0.333333 +frame15=0.466667 +frame23=0.733333 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=-0.094758 0.000000 0.000000 +jointlknee=-0.129419 0.000000 0.000000 +jointlankle=0.226978 0.000000 0.000000 +jointrthigh=-0.037374 0.000000 0.000000 +jointrknee=-0.854337 0.000000 0.000000 +jointrankle=-0.471860 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.015708 +jointshakey=0.000000 0.000000 0.015708 +[frame7] +jointlthigh=-0.062440 0.000000 0.000000 +jointlknee=-0.111529 0.000000 0.000000 +jointlankle=0.176080 0.000000 0.000000 +jointrthigh=0.068051 0.000000 0.000000 +jointrknee=-1.036499 0.000000 0.000000 +jointrankle=-0.081358 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.011424 +jointshakey=0.000000 0.000000 0.011424 +[frame9] +jointlthigh=-0.051668 0.000000 0.000000 +jointlknee=-0.105565 0.000000 0.000000 +jointlankle=0.159114 0.000000 0.000000 +jointrthigh=0.081073 0.000000 0.000000 +jointrknee=-1.015152 0.000000 0.000000 +jointrankle=0.023671 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.009996 +jointshakey=0.000000 0.000000 0.009996 +[frame11] +jointlthigh=-0.040895 0.000000 0.000000 +jointlknee=-0.099601 0.000000 0.000000 +jointlankle=0.142147 0.000000 0.000000 +jointrthigh=0.099666 0.000000 0.000000 +jointrknee=-1.043461 0.000000 0.000000 +jointrankle=0.186181 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.008568 +jointshakey=0.000000 0.000000 0.008568 +[frame15] +jointlthigh=-0.019351 0.000000 0.000000 +jointlknee=-0.087674 0.000000 0.000000 +jointlankle=0.108215 0.000000 0.000000 +jointrthigh=0.106684 0.000000 0.000000 +jointrknee=-0.881667 0.000000 0.000000 +jointrankle=0.332216 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.005712 +jointshakey=0.000000 0.000000 0.005712 +[frame23] +jointlthigh=0.023739 0.000000 0.000000 +jointlknee=-0.063820 0.000000 0.000000 +jointlankle=0.040350 0.000000 0.000000 +jointrthigh=0.061303 0.000000 0.000000 +jointrknee=-0.165001 0.000000 0.000000 +jointrankle=0.104694 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame7=0.000000 -5.350000 1.304002 +frame9=0.000000 -5.350000 -0.133510 +frame11=0.000000 -5.350000 -0.133495 +frame15=0.000000 -5.350000 -1.709998 +frame23=0.000000 -5.350000 -2.894625 + +[KeyJointPos] +frame1=0.000000 0.099342 0.000000 +frame7=0.000000 0.066186 0.000000 +frame9=0.000000 0.052961 0.000000 +frame11=0.000000 0.047995 0.000000 +frame15=0.000000 0.033093 0.000000 +frame23=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/LOKRRL.ANI b/CONTENT/BT/ANIMS/LOKRRL.ANI new file mode 100644 index 0000000..5a49c45 --- /dev/null +++ b/CONTENT/BT/ANIMS/LOKRRL.ANI @@ -0,0 +1,120 @@ +[LAB_ONLY] + +[HEADER] +framecount=8 +framerate=30 +skeletonfile=lok.skl +jointcount=7 + +[Time] +frame1=0 +frame5=0.133333 +frame11=0.333333 +frame12=0.366667 +frame13=0.4 +frame14=0.433333 +frame15=0.466667 +frame16=0.5 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate + +[frame1] +jointlthigh=-0.537472 0.000000 0.000000 +jointlknee=-0.428398 0.000000 0.000000 +jointlankle=-0.302139 0.000000 0.000000 +jointrthigh=0.746408 0.000000 0.000000 +jointrknee=-0.444553 0.000000 0.000000 +jointrankle=0.169035 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.013090 +[frame5] +jointlthigh=-0.924082 0.000000 0.000000 +jointlknee=-0.950576 0.000000 0.000000 +jointlankle=-0.043616 0.000000 0.000000 +jointrthigh=0.668932 0.000000 0.000000 +jointrknee=-0.021625 0.000000 0.000000 +jointrankle=0.154636 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame11] +jointlthigh=-0.072100 0.000000 0.000000 +jointlknee=-1.647696 0.000000 0.000000 +jointlankle=0.290388 0.000000 0.000000 +jointrthigh=0.260464 0.000000 0.000000 +jointrknee=-0.617438 0.000000 0.000000 +jointrankle=0.357105 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.026180 +[frame12] +jointlthigh=0.159246 0.000000 0.000000 +jointlknee=-1.733321 0.000000 0.000000 +jointlankle=0.459420 0.000000 0.000000 +jointrthigh=0.031336 0.000000 0.000000 +jointrknee=-0.631535 0.000000 0.000000 +jointrankle=0.600002 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.023998 +[frame13] +jointlthigh=0.390591 0.000000 0.000000 +jointlknee=-1.818947 0.000000 0.000000 +jointlankle=0.628453 0.000000 0.000000 +jointrthigh=-0.324411 0.000000 0.000000 +jointrknee=-0.260548 0.000000 0.000000 +jointrankle=0.585439 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.021817 +[frame14] +jointlthigh=0.509746 0.000000 0.000000 +jointlknee=-1.376155 0.000000 0.000000 +jointlankle=0.489124 0.000000 0.000000 +jointrthigh=-0.274542 0.000000 0.000000 +jointrknee=-0.746055 0.000000 0.000000 +jointrankle=0.562644 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.018908 +[frame15] +jointlthigh=0.628901 0.000000 0.000000 +jointlknee=-0.933363 0.000000 0.000000 +jointlankle=0.349795 0.000000 0.000000 +jointrthigh=-0.378897 0.000000 0.000000 +jointrknee=-0.746128 0.000000 0.000000 +jointrankle=0.310946 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.015999 +[frame16] +jointlthigh=0.748057 0.000000 0.000000 +jointlknee=-0.490570 0.000000 0.000000 +jointlankle=0.210466 0.000000 0.000000 +jointrthigh=-0.513851 0.000000 0.000000 +jointrknee=-0.501829 0.000000 0.000000 +jointrankle=-0.225325 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.013090 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame5=0.000000 -5.350000 34.817245 +frame11=0.000000 -5.350000 34.015007 +frame12=0.000000 -5.350000 35.306973 +frame13=0.000000 -5.350000 35.306973 +frame14=0.000000 -5.349999 34.443974 +frame15=0.000000 -5.349999 34.444088 +frame16=0.000000 -5.350000 34.443974 + +[KeyJointPos] +frame1=-0.080946 -0.025365 0.000000 +frame5=0.000000 0.248353 0.000000 +frame11=0.154077 -0.324877 0.000000 +frame12=0.143922 -0.212828 0.000000 +frame13=0.133278 -0.100795 0.000000 +frame14=0.115979 -0.075603 0.000000 +frame15=0.098535 -0.050459 0.000000 +frame16=0.080946 -0.025365 0.000000 diff --git a/CONTENT/BT/ANIMS/LOKRRLI.ANI b/CONTENT/BT/ANIMS/LOKRRLI.ANI new file mode 100644 index 0000000..51125b4 --- /dev/null +++ b/CONTENT/BT/ANIMS/LOKRRLI.ANI @@ -0,0 +1,130 @@ +[LAB_ONLY] + +[HEADER] +framecount=8 +framerate=30 +skeletonfile=lok.skl +jointcount=8 + +[Time] +frame1=0 +frame5=0.133333 +frame11=0.333333 +frame12=0.366667 +frame13=0.4 +frame14=0.433333 +frame15=0.466667 +frame16=0.5 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=-0.543853 0.000000 0.000000 +jointlknee=-0.411503 0.000000 0.000000 +jointlankle=-0.315421 0.000000 0.000000 +jointrthigh=0.746408 0.000000 0.000000 +jointrknee=-0.444553 0.000000 0.000000 +jointrankle=0.169035 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.009163 +jointshakey=0.000000 0.000000 0.009163 +[frame5] +jointlthigh=-0.924082 0.000000 0.000000 +jointlknee=-0.950576 0.000000 0.000000 +jointlankle=-0.043616 0.000000 0.000000 +jointrthigh=0.668932 0.000000 0.000000 +jointrknee=-0.021625 0.000000 0.000000 +jointrankle=0.154636 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame11] +jointlthigh=-0.072100 0.000000 0.000000 +jointlknee=-1.647696 0.000000 0.000000 +jointlankle=0.290388 0.000000 0.000000 +jointrthigh=0.240939 0.000000 0.000000 +jointrknee=-0.567389 0.000000 0.000000 +jointrankle=0.326408 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.015708 +jointshakey=0.000000 0.000000 -0.015708 +[frame12] +jointlthigh=0.159246 0.000000 0.000000 +jointlknee=-1.733321 0.000000 0.000000 +jointlankle=0.459420 0.000000 0.000000 +jointrthigh=0.031336 0.000000 0.000000 +jointrknee=-0.631535 0.000000 0.000000 +jointrankle=0.600002 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.014181 +jointshakey=0.000000 0.000000 -0.014181 +[frame13] +jointlthigh=0.390591 0.000000 0.000000 +jointlknee=-1.818947 0.000000 0.000000 +jointlankle=0.628453 0.000000 0.000000 +jointrthigh=-0.348715 0.000000 0.000000 +jointrknee=-0.189813 0.000000 0.000000 +jointrankle=0.538823 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.012654 +jointshakey=0.000000 0.000000 -0.012654 +[frame14] +jointlthigh=0.509746 0.000000 0.000000 +jointlknee=-1.376155 0.000000 0.000000 +jointlankle=0.489124 0.000000 0.000000 +jointrthigh=-0.327179 0.000000 0.000000 +jointrknee=-0.646461 0.000000 0.000000 +jointrankle=0.590309 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.011490 +jointshakey=0.000000 0.000000 -0.011490 +[frame15] +jointlthigh=0.628901 0.000000 0.000000 +jointlknee=-0.933363 0.000000 0.000000 +jointlankle=0.349795 0.000000 0.000000 +jointrthigh=-0.378897 0.000000 0.000000 +jointrknee=-0.746128 0.000000 0.000000 +jointrankle=0.310946 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.010327 +jointshakey=0.000000 0.000000 -0.010327 +[frame16] +jointlthigh=0.748057 0.000000 0.000000 +jointlknee=-0.490570 0.000000 0.000000 +jointlankle=0.210466 0.000000 0.000000 +jointrthigh=-0.516501 0.000000 0.000000 +jointrknee=-0.486922 0.000000 0.000000 +jointrankle=-0.239644 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.009163 +jointshakey=0.000000 0.000000 -0.009163 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame5=0.000000 -5.350000 34.817245 +frame11=0.000000 -5.350000 34.015007 +frame12=0.000000 -5.350000 35.306973 +frame13=0.000000 -5.350000 35.306973 +frame14=0.000000 -5.349999 34.443974 +frame15=0.000000 -5.349999 34.444088 +frame16=0.000000 -5.350000 34.443974 + +[KeyJointPos] +frame1=0.000000 -0.024836 0.000000 +frame5=0.000000 0.248353 0.000000 +frame11=0.000000 -0.322860 0.000000 +frame12=0.000000 -0.211101 0.000000 +frame13=0.000000 -0.099341 0.000000 +frame14=0.000000 -0.074506 0.000000 +frame15=0.000000 -0.049671 0.000000 +frame16=0.000000 -0.024836 0.000000 diff --git a/CONTENT/BT/ANIMS/LOKRRR.ANI b/CONTENT/BT/ANIMS/LOKRRR.ANI new file mode 100644 index 0000000..a419e85 --- /dev/null +++ b/CONTENT/BT/ANIMS/LOKRRR.ANI @@ -0,0 +1,120 @@ +[LAB_ONLY] + +[HEADER] +framecount=8 +framerate=30 +skeletonfile=lok.skl +jointcount=7 + +[Time] +frame1=0 +frame5=0.133333 +frame11=0.333333 +frame12=0.366667 +frame13=0.4 +frame14=0.433333 +frame15=0.466667 +frame16=0.5 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate + +[frame1] +jointlthigh=0.748057 0.000000 0.000000 +jointlknee=-0.490570 0.000000 0.000000 +jointlankle=0.210466 0.000000 0.000000 +jointrthigh=-0.529707 0.000000 0.000000 +jointrknee=-0.448424 0.000000 0.000000 +jointrankle=-0.264095 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.013090 +[frame5] +jointlthigh=0.668932 0.000000 0.000000 +jointlknee=-0.021625 0.000000 0.000000 +jointlankle=0.154636 0.000000 0.000000 +jointrthigh=-0.924082 0.000000 0.000000 +jointrknee=-0.950576 0.000000 0.000000 +jointrankle=-0.043616 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame11] +jointlthigh=0.256145 0.000000 0.000000 +jointlknee=-0.609364 0.000000 0.000000 +jointlankle=0.351911 0.000000 0.000000 +jointrthigh=-0.072100 0.000000 0.000000 +jointrknee=-1.647696 0.000000 0.000000 +jointrankle=0.290388 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.026180 +[frame12] +jointlthigh=0.037230 0.000000 0.000000 +jointlknee=-0.620599 0.000000 0.000000 +jointlankle=0.583219 0.000000 0.000000 +jointrthigh=0.159305 0.000000 0.000000 +jointrknee=-1.729394 0.000000 0.000000 +jointrankle=0.453114 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.023998 +[frame13] +jointlthigh=-0.292079 0.000000 0.000000 +jointlknee=-0.295491 0.000000 0.000000 +jointlankle=0.587699 0.000000 0.000000 +jointrthigh=0.390709 0.000000 0.000000 +jointrknee=-1.811093 0.000000 0.000000 +jointrankle=0.615839 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.021817 +[frame14] +jointlthigh=-0.276237 0.000000 0.000000 +jointlknee=-0.733962 0.000000 0.000000 +jointlankle=0.585171 0.000000 0.000000 +jointrthigh=0.509275 0.000000 0.000000 +jointrknee=-1.355580 0.000000 0.000000 +jointrankle=0.466905 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.018908 +[frame15] +jointlthigh=-0.363250 0.000000 0.000000 +jointlknee=-0.761770 0.000000 0.000000 +jointlankle=0.282403 0.000000 0.000000 +jointrthigh=0.627841 0.000000 0.000000 +jointrknee=-0.900066 0.000000 0.000000 +jointrankle=0.317970 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.015999 +[frame16] +jointlthigh=-0.537472 0.000000 0.000000 +jointlknee=-0.428398 0.000000 0.000000 +jointlankle=-0.302139 0.000000 0.000000 +jointrthigh=0.746408 0.000000 0.000000 +jointrknee=-0.444553 0.000000 0.000000 +jointrankle=0.169035 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.013090 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame5=0.000000 -5.350000 35.426617 +frame11=0.000000 -5.350000 33.878506 +frame12=0.000000 -5.350000 33.672012 +frame13=0.000000 -5.350000 33.672012 +frame14=0.000000 -5.349999 35.742992 +frame15=0.000000 -5.349999 35.742992 +frame16=0.000000 -5.350000 35.742992 + +[KeyJointPos] +frame1=0.080946 -0.025365 0.000000 +frame5=0.000000 0.248415 0.000000 +frame11=-0.154072 -0.325057 0.000000 +frame12=-0.143919 -0.212921 0.000000 +frame13=-0.133278 -0.100801 0.000000 +frame14=-0.115979 -0.075607 0.000000 +frame15=-0.098535 -0.050462 0.000000 +frame16=-0.080946 -0.025365 0.000000 diff --git a/CONTENT/BT/ANIMS/LOKRRRI.ANI b/CONTENT/BT/ANIMS/LOKRRRI.ANI new file mode 100644 index 0000000..4b1329a --- /dev/null +++ b/CONTENT/BT/ANIMS/LOKRRRI.ANI @@ -0,0 +1,130 @@ +[LAB_ONLY] + +[HEADER] +framecount=8 +framerate=30 +skeletonfile=lok.skl +jointcount=8 + +[Time] +frame1=0 +frame5=0.133333 +frame11=0.333333 +frame12=0.366667 +frame13=0.4 +frame14=0.433333 +frame15=0.466667 +frame16=0.5 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=0.748059 0.000000 0.000000 +jointlknee=-0.490570 0.000000 0.000000 +jointlankle=0.210464 0.000000 0.000000 +jointrthigh=-0.531962 0.000000 0.000000 +jointrknee=-0.440640 0.000000 0.000000 +jointrankle=-0.270428 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.009163 +jointshakey=0.000000 0.000000 -0.009163 +[frame5] +jointlthigh=0.668932 0.000000 0.000000 +jointlknee=-0.021625 0.000000 0.000000 +jointlankle=0.154636 0.000000 0.000000 +jointrthigh=-0.924082 0.000000 0.000000 +jointrknee=-0.950576 0.000000 0.000000 +jointrankle=-0.043616 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame11] +jointlthigh=0.236387 0.000000 0.000000 +jointlknee=-0.558682 0.000000 0.000000 +jointlankle=0.320807 0.000000 0.000000 +jointrthigh=-0.072100 0.000000 0.000000 +jointrknee=-1.647696 0.000000 0.000000 +jointrankle=0.290388 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.015708 +jointshakey=0.000000 0.000000 0.015708 +[frame12] +jointlthigh=0.037230 0.000000 0.000000 +jointlknee=-0.620599 0.000000 0.000000 +jointlankle=0.583219 0.000000 0.000000 +jointrthigh=0.159305 0.000000 0.000000 +jointrknee=-1.729394 0.000000 0.000000 +jointrankle=0.453114 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.014181 +jointshakey=0.000000 0.000000 0.014181 +[frame13] +jointlthigh=-0.316582 0.000000 0.000000 +jointlknee=-0.224563 0.000000 0.000000 +jointlankle=0.541595 0.000000 0.000000 +jointrthigh=0.390709 0.000000 0.000000 +jointrknee=-1.811093 0.000000 0.000000 +jointrankle=0.615839 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.012654 +jointshakey=0.000000 0.000000 0.012654 +[frame14] +jointlthigh=-0.276237 0.000000 0.000000 +jointlknee=-0.733962 0.000000 0.000000 +jointlankle=0.585171 0.000000 0.000000 +jointrthigh=0.509275 0.000000 0.000000 +jointrknee=-1.355580 0.000000 0.000000 +jointrankle=0.466905 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.011490 +jointshakey=0.000000 0.000000 0.011490 +[frame15] +jointlthigh=-0.363250 0.000000 0.000000 +jointlknee=-0.761770 0.000000 0.000000 +jointlankle=0.282403 0.000000 0.000000 +jointrthigh=0.627841 0.000000 0.000000 +jointrknee=-0.900066 0.000000 0.000000 +jointrankle=0.317970 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.010327 +jointshakey=0.000000 0.000000 0.010327 +[frame16] +jointlthigh=-0.540162 0.000000 0.000000 +jointlknee=-0.415854 0.000000 0.000000 +jointlankle=-0.312534 0.000000 0.000000 +jointrthigh=0.746408 0.000000 0.000000 +jointrknee=-0.444553 0.000000 0.000000 +jointrankle=0.169035 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.009163 +jointshakey=0.000000 0.000000 0.009163 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame5=0.000000 -5.350000 35.426617 +frame11=0.000000 -5.350000 33.878506 +frame12=0.000000 -5.350000 33.672012 +frame13=0.000000 -5.350000 33.672012 +frame14=0.000000 -5.349999 35.742992 +frame15=0.000000 -5.349999 35.742992 +frame16=0.000000 -5.350000 35.742992 + +[KeyJointPos] +frame1=0.000000 -0.024836 0.000000 +frame5=0.000000 0.248415 0.000000 +frame11=0.000000 -0.323040 0.000000 +frame12=0.000000 -0.211194 0.000000 +frame13=0.000000 -0.099348 0.000000 +frame14=0.000000 -0.074510 0.000000 +frame15=0.000000 -0.049673 0.000000 +frame16=0.000000 -0.024836 0.000000 diff --git a/CONTENT/BT/ANIMS/LOKRWL.ANI b/CONTENT/BT/ANIMS/LOKRWL.ANI new file mode 100644 index 0000000..d36c4dd --- /dev/null +++ b/CONTENT/BT/ANIMS/LOKRWL.ANI @@ -0,0 +1,150 @@ +[LAB_ONLY] + +[HEADER] +framecount=8 +framerate=30 +skeletonfile=lok.skl +jointcount=10 + +[Time] +frame1=0 +frame9=0.266667 +frame15=0.466667 +frame17=0.533333 +frame18=0.566667 +frame21=0.666667 +frame27=0.866667 +frame32=1.03333 + +[JointIndices] +jointhip=1 +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointrshoulder=4 +jointlshoulder=6 +jointlocal=0 + +[JointType] +jointhip=hingex +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointrshoulder=hingex +jointlshoulder=hingex +jointlocal=balltranslate + +[frame1] +jointhip=-0.208689 0.000000 0.000000 +jointlthigh=-0.529617 0.000000 0.000000 +jointlknee=-0.445487 0.000000 0.000000 +jointlankle=-0.267667 0.000000 0.000000 +jointrthigh=0.748057 0.000000 0.000000 +jointrknee=-0.490570 0.000000 0.000000 +jointrankle=0.210466 0.000000 0.000000 +jointrshoulder=0.208689 0.000000 0.000000 +jointlshoulder=0.208689 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.013090 +[frame9] +jointhip=-0.175102 0.000000 0.000000 +jointlthigh=-0.837796 0.000000 0.000000 +jointlknee=-0.816135 0.000000 0.000000 +jointlankle=-0.106199 0.000000 0.000000 +jointrthigh=0.648287 0.000000 0.000000 +jointrknee=-0.023450 0.000000 0.000000 +jointrankle=0.154636 0.000000 0.000000 +jointrshoulder=0.175102 0.000000 0.000000 +jointlshoulder=0.175102 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame15] +jointhip=-0.149912 0.000000 0.000000 +jointlthigh=-0.554991 0.000000 0.000000 +jointlknee=-1.050513 0.000000 0.000000 +jointlankle=0.092104 0.000000 0.000000 +jointrthigh=0.471031 0.000000 0.000000 +jointrknee=-0.012656 0.000000 0.000000 +jointrankle=0.091171 0.000000 0.000000 +jointrshoulder=0.149912 0.000000 0.000000 +jointlshoulder=0.149912 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.008727 +[frame17] +jointhip=-0.141515 0.000000 0.000000 +jointlthigh=-0.460723 0.000000 0.000000 +jointlknee=-1.128639 0.000000 0.000000 +jointlankle=0.158205 0.000000 0.000000 +jointrthigh=0.398160 0.000000 0.000000 +jointrknee=-0.032905 0.000000 0.000000 +jointrankle=0.072550 0.000000 0.000000 +jointrshoulder=0.141515 0.000000 0.000000 +jointlshoulder=0.141515 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.011636 +[frame18] +jointhip=-0.137317 0.000000 0.000000 +jointlthigh=-0.413588 0.000000 0.000000 +jointlknee=-1.167701 0.000000 0.000000 +jointlankle=0.191255 0.000000 0.000000 +jointrthigh=0.351727 0.000000 0.000000 +jointrknee=-0.053122 0.000000 0.000000 +jointrankle=-0.043882 0.000000 0.000000 +jointrshoulder=0.137317 0.000000 0.000000 +jointlshoulder=0.137317 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.013090 +[frame21] +jointhip=-0.124722 0.000000 0.000000 +jointlthigh=-0.272186 0.000000 0.000000 +jointlknee=-1.284890 0.000000 0.000000 +jointlankle=0.290407 0.000000 0.000000 +jointrthigh=0.286770 0.000000 0.000000 +jointrknee=-0.521211 0.000000 0.000000 +jointrankle=0.231462 0.000000 0.000000 +jointrshoulder=0.124722 0.000000 0.000000 +jointlshoulder=0.124722 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.017453 +[frame27] +jointhip=-0.099532 0.000000 0.000000 +jointlthigh=0.309703 0.000000 0.000000 +jointlknee=-1.444223 0.000000 0.000000 +jointlankle=0.516572 0.000000 0.000000 +jointrthigh=-0.210146 0.000000 0.000000 +jointrknee=-0.540775 0.000000 0.000000 +jointrankle=0.752230 0.000000 0.000000 +jointrshoulder=0.099532 0.000000 0.000000 +jointlshoulder=0.099532 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.013090 +[frame32] +jointhip=-0.078540 0.000000 0.000000 +jointlthigh=0.395614 0.000000 0.000000 +jointlknee=-0.220767 0.000000 0.000000 +jointlankle=0.133954 0.000000 0.000000 +jointrthigh=-0.486563 0.000000 0.000000 +jointrknee=-0.487638 0.000000 0.000000 +jointrankle=0.639860 0.000000 0.000000 +jointrshoulder=0.078540 0.000000 0.000000 +jointlshoulder=0.078540 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame9=0.000000 -5.350000 15.010127 +frame15=0.000000 -5.350000 15.647756 +frame17=0.000000 -5.349999 15.647730 +frame18=0.000000 -5.350000 15.647751 +frame21=0.000000 -5.350000 15.647732 +frame27=0.000000 -5.350000 12.837029 +frame32=0.000000 -5.350000 10.345782 + +[KeyJointPos] +frame1=-0.080946 -0.025365 0.000000 +frame9=0.000000 -0.074587 0.000000 +frame15=0.052447 -0.199042 0.000000 +frame17=0.069446 -0.240627 0.000000 +frame18=0.077856 -0.261436 0.000000 +frame21=0.102721 -0.323937 0.000000 +frame27=0.078020 -0.248883 0.000000 +frame32=0.000000 -0.273276 0.000000 diff --git a/CONTENT/BT/ANIMS/LOKRWLI.ANI b/CONTENT/BT/ANIMS/LOKRWLI.ANI new file mode 100644 index 0000000..4da6215 --- /dev/null +++ b/CONTENT/BT/ANIMS/LOKRWLI.ANI @@ -0,0 +1,130 @@ +[LAB_ONLY] + +[HEADER] +framecount=8 +framerate=30 +skeletonfile=lok.skl +jointcount=8 + +[Time] +frame1=0 +frame9=0.266667 +frame15=0.466667 +frame17=0.533333 +frame18=0.566667 +frame21=0.666667 +frame27=0.866667 +frame32=1.03333 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=-0.531833 0.000000 0.000000 +jointlknee=-0.437812 0.000000 0.000000 +jointlankle=-0.273889 0.000000 0.000000 +jointrthigh=0.748057 0.000000 0.000000 +jointrknee=-0.490570 0.000000 0.000000 +jointrankle=0.210466 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.009163 +jointshakey=0.000000 0.000000 0.009163 +[frame9] +jointlthigh=-0.837796 0.000000 0.000000 +jointlknee=-0.816135 0.000000 0.000000 +jointlankle=-0.106199 0.000000 0.000000 +jointrthigh=0.648287 0.000000 0.000000 +jointrknee=-0.023450 0.000000 0.000000 +jointrankle=0.154636 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame15] +jointlthigh=-0.554991 0.000000 0.000000 +jointlknee=-1.050513 0.000000 0.000000 +jointlankle=0.092104 0.000000 0.000000 +jointrthigh=0.471031 0.000000 0.000000 +jointrknee=-0.012656 0.000000 0.000000 +jointrankle=0.091171 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.005672 +jointshakey=0.000000 0.000000 -0.005672 +[frame17] +jointlthigh=-0.460723 0.000000 0.000000 +jointlknee=-1.128639 0.000000 0.000000 +jointlankle=0.158205 0.000000 0.000000 +jointrthigh=0.398160 0.000000 0.000000 +jointrknee=-0.032905 0.000000 0.000000 +jointrankle=0.072550 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.007563 +jointshakey=0.000000 0.000000 -0.007563 +[frame18] +jointlthigh=-0.413588 0.000000 0.000000 +jointlknee=-1.167701 0.000000 0.000000 +jointlankle=0.191255 0.000000 0.000000 +jointrthigh=0.351727 0.000000 0.000000 +jointrknee=-0.053122 0.000000 0.000000 +jointrankle=-0.043882 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.008508 +jointshakey=0.000000 0.000000 -0.008508 +[frame21] +jointlthigh=-0.272186 0.000000 0.000000 +jointlknee=-1.284890 0.000000 0.000000 +jointlankle=0.290407 0.000000 0.000000 +jointrthigh=0.277314 0.000000 0.000000 +jointrknee=-0.498737 0.000000 0.000000 +jointrankle=0.217817 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.011345 +jointshakey=0.000000 0.000000 -0.011345 +[frame27] +jointlthigh=0.309703 0.000000 0.000000 +jointlknee=-1.444223 0.000000 0.000000 +jointlankle=0.516572 0.000000 0.000000 +jointrthigh=-0.210659 0.000000 0.000000 +jointrknee=-0.539474 0.000000 0.000000 +jointrankle=0.751120 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.007418 +jointshakey=0.000000 0.000000 -0.007418 +[frame32] +jointlthigh=0.395614 0.000000 0.000000 +jointlknee=-0.220767 0.000000 0.000000 +jointlankle=0.133954 0.000000 0.000000 +jointrthigh=-0.486563 0.000000 0.000000 +jointrknee=-0.487638 0.000000 0.000000 +jointrankle=0.639860 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame9=0.000000 -5.350000 15.010127 +frame15=0.000000 -5.350000 15.647756 +frame17=0.000000 -5.349999 15.647730 +frame18=0.000000 -5.350000 15.647751 +frame21=0.000000 -5.350000 15.647732 +frame27=0.000000 -5.350000 12.837029 +frame32=0.000000 -5.350000 10.345782 + +[KeyJointPos] +frame1=0.000000 -0.024836 0.000000 +frame9=0.000000 -0.074587 0.000000 +frame15=0.000000 -0.198813 0.000000 +frame17=0.000000 -0.240222 0.000000 +frame18=0.000000 -0.260927 0.000000 +frame21=0.000000 -0.323040 0.000000 +frame27=0.000000 -0.248372 0.000000 +frame32=0.000000 -0.273276 0.000000 diff --git a/CONTENT/BT/ANIMS/LOKRWR.ANI b/CONTENT/BT/ANIMS/LOKRWR.ANI new file mode 100644 index 0000000..d42e0ec --- /dev/null +++ b/CONTENT/BT/ANIMS/LOKRWR.ANI @@ -0,0 +1,150 @@ +[LAB_ONLY] + +[HEADER] +framecount=8 +framerate=30 +skeletonfile=lok.skl +jointcount=10 + +[Time] +frame1=0 +frame9=0.266667 +frame15=0.466667 +frame17=0.533333 +frame18=0.566667 +frame21=0.666667 +frame27=0.866667 +frame32=1.03333 + +[JointIndices] +jointhip=1 +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointrshoulder=4 +jointlshoulder=6 +jointlocal=0 + +[JointType] +jointhip=hingex +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointrshoulder=hingex +jointlshoulder=hingex +jointlocal=balltranslate + +[frame1] +jointhip=-0.208689 0.000000 0.000000 +jointlthigh=0.748057 0.000000 0.000000 +jointlknee=-0.490570 0.000000 0.000000 +jointlankle=0.210466 0.000000 0.000000 +jointrthigh=-0.529617 0.000000 0.000000 +jointrknee=-0.445487 0.000000 0.000000 +jointrankle=-0.267667 0.000000 0.000000 +jointrshoulder=0.208689 0.000000 0.000000 +jointlshoulder=0.208689 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.013090 +[frame9] +jointhip=-0.175102 0.000000 0.000000 +jointlthigh=0.648287 0.000000 0.000000 +jointlknee=-0.023450 0.000000 0.000000 +jointlankle=0.154636 0.000000 0.000000 +jointrthigh=-0.830520 0.000000 0.000000 +jointrknee=-0.836016 0.000000 0.000000 +jointrankle=-0.092293 0.000000 0.000000 +jointrshoulder=0.175102 0.000000 0.000000 +jointlshoulder=0.175102 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame15] +jointhip=-0.149912 0.000000 0.000000 +jointlthigh=0.471031 0.000000 0.000000 +jointlknee=-0.012656 0.000000 0.000000 +jointlankle=0.091171 0.000000 0.000000 +jointrthigh=-0.551356 0.000000 0.000000 +jointrknee=-1.060445 0.000000 0.000000 +jointrankle=0.099055 0.000000 0.000000 +jointrshoulder=0.149912 0.000000 0.000000 +jointlshoulder=0.149912 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.008727 +[frame17] +jointhip=-0.141515 0.000000 0.000000 +jointlthigh=0.398160 0.000000 0.000000 +jointlknee=-0.032905 0.000000 0.000000 +jointlankle=0.072550 0.000000 0.000000 +jointrthigh=-0.458302 0.000000 0.000000 +jointrknee=-1.135254 0.000000 0.000000 +jointrankle=0.162838 0.000000 0.000000 +jointrshoulder=0.141515 0.000000 0.000000 +jointlshoulder=0.141515 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.011636 +[frame18] +jointhip=-0.137317 0.000000 0.000000 +jointlthigh=0.351727 0.000000 0.000000 +jointlknee=-0.053122 0.000000 0.000000 +jointlankle=-0.043882 0.000000 0.000000 +jointrthigh=-0.411775 0.000000 0.000000 +jointrknee=-1.172659 0.000000 0.000000 +jointrankle=0.194730 0.000000 0.000000 +jointrshoulder=0.137317 0.000000 0.000000 +jointlshoulder=0.137317 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.013090 +[frame21] +jointhip=-0.124722 0.000000 0.000000 +jointlthigh=0.285628 0.000000 0.000000 +jointlknee=-0.518850 0.000000 0.000000 +jointlankle=0.231096 0.000000 0.000000 +jointrthigh=-0.272193 0.000000 0.000000 +jointrknee=-1.284873 0.000000 0.000000 +jointrankle=0.290404 0.000000 0.000000 +jointrshoulder=0.124722 0.000000 0.000000 +jointlshoulder=0.124722 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.017453 +[frame27] +jointhip=-0.099532 0.000000 0.000000 +jointlthigh=-0.210150 0.000000 0.000000 +jointlknee=-0.540778 0.000000 0.000000 +jointlankle=0.752233 0.000000 0.000000 +jointrthigh=0.309705 0.000000 0.000000 +jointrknee=-1.444227 0.000000 0.000000 +jointrankle=0.516572 0.000000 0.000000 +jointrshoulder=0.099532 0.000000 0.000000 +jointlshoulder=0.099532 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.013090 +[frame32] +jointhip=-0.078540 0.000000 0.000000 +jointlthigh=-0.484978 0.000000 0.000000 +jointlknee=-0.497874 0.000000 0.000000 +jointlankle=0.651832 0.000000 0.000000 +jointrthigh=0.392336 0.000000 0.000000 +jointrknee=-0.216485 0.000000 0.000000 +jointrankle=0.135860 0.000000 0.000000 +jointrshoulder=0.078540 0.000000 0.000000 +jointlshoulder=0.078540 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame9=0.000000 -5.350000 15.010127 +frame15=0.000000 -5.350000 15.647756 +frame17=0.000000 -5.349999 15.647730 +frame18=0.000000 -5.350000 15.647751 +frame21=0.000000 -5.350000 15.647732 +frame27=0.000000 -5.350000 12.837029 +frame32=0.000000 -5.350000 10.345782 + +[KeyJointPos] +frame1=0.080946 -0.025365 0.000000 +frame9=0.000000 -0.074587 0.000000 +frame15=-0.052447 -0.199042 0.000000 +frame17=-0.069446 -0.240627 0.000000 +frame18=-0.077856 -0.261436 0.000000 +frame21=-0.102721 -0.323937 0.000000 +frame27=-0.078020 -0.248883 0.000000 +frame32=0.000000 -0.273276 0.000000 diff --git a/CONTENT/BT/ANIMS/LOKRWRI.ANI b/CONTENT/BT/ANIMS/LOKRWRI.ANI new file mode 100644 index 0000000..50a1e6d --- /dev/null +++ b/CONTENT/BT/ANIMS/LOKRWRI.ANI @@ -0,0 +1,130 @@ +[LAB_ONLY] + +[HEADER] +framecount=8 +framerate=30 +skeletonfile=lok.skl +jointcount=8 + +[Time] +frame1=0 +frame9=0.266667 +frame15=0.466667 +frame17=0.533333 +frame18=0.566667 +frame21=0.666667 +frame27=0.866667 +frame32=1.03333 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=0.748057 0.000000 0.000000 +jointlknee=-0.490570 0.000000 0.000000 +jointlankle=0.210466 0.000000 0.000000 +jointrthigh=-0.531989 0.000000 0.000000 +jointrknee=-0.437367 0.000000 0.000000 +jointrankle=-0.274266 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.009163 +jointshakey=0.000000 0.000000 -0.009163 +[frame9] +jointlthigh=0.648287 0.000000 0.000000 +jointlknee=-0.023450 0.000000 0.000000 +jointlankle=0.154636 0.000000 0.000000 +jointrthigh=-0.830520 0.000000 0.000000 +jointrknee=-0.836016 0.000000 0.000000 +jointrankle=-0.092293 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame15] +jointlthigh=0.471031 0.000000 0.000000 +jointlknee=-0.012656 0.000000 0.000000 +jointlankle=0.091171 0.000000 0.000000 +jointrthigh=-0.551356 0.000000 0.000000 +jointrknee=-1.060445 0.000000 0.000000 +jointrankle=0.099055 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.005672 +jointshakey=0.000000 0.000000 0.005672 +[frame17] +jointlthigh=0.398160 0.000000 0.000000 +jointlknee=-0.032905 0.000000 0.000000 +jointlankle=0.072550 0.000000 0.000000 +jointrthigh=-0.458302 0.000000 0.000000 +jointrknee=-1.135254 0.000000 0.000000 +jointrankle=0.162838 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.007563 +jointshakey=0.000000 0.000000 0.007563 +[frame18] +jointlthigh=0.351727 0.000000 0.000000 +jointlknee=-0.053122 0.000000 0.000000 +jointlankle=-0.043882 0.000000 0.000000 +jointrthigh=-0.411775 0.000000 0.000000 +jointrknee=-1.172659 0.000000 0.000000 +jointrankle=0.194730 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.008508 +jointshakey=0.000000 0.000000 0.008508 +[frame21] +jointlthigh=0.281195 0.000000 0.000000 +jointlknee=-0.507814 0.000000 0.000000 +jointlankle=0.225666 0.000000 0.000000 +jointrthigh=-0.272193 0.000000 0.000000 +jointrknee=-1.284873 0.000000 0.000000 +jointrankle=0.290404 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.011345 +jointshakey=0.000000 0.000000 0.011345 +[frame27] +jointlthigh=-0.210604 0.000000 0.000000 +jointlknee=-0.539647 0.000000 0.000000 +jointlankle=0.751240 0.000000 0.000000 +jointrthigh=0.309705 0.000000 0.000000 +jointrknee=-1.444227 0.000000 0.000000 +jointrankle=0.516572 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.007418 +jointshakey=0.000000 0.000000 0.007418 +[frame32] +jointlthigh=-0.484978 0.000000 0.000000 +jointlknee=-0.497874 0.000000 0.000000 +jointlankle=0.651832 0.000000 0.000000 +jointrthigh=0.392336 0.000000 0.000000 +jointrknee=-0.216485 0.000000 0.000000 +jointrankle=0.135860 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame9=0.000000 -5.350000 15.010127 +frame15=0.000000 -5.350000 15.647756 +frame17=0.000000 -5.349999 15.647730 +frame18=0.000000 -5.350000 15.647751 +frame21=0.000000 -5.350000 15.647732 +frame27=0.000000 -5.350000 12.837029 +frame32=0.000000 -5.350000 10.345782 + +[KeyJointPos] +frame1=0.000000 -0.024836 0.000000 +frame9=0.000000 -0.074587 0.000000 +frame15=0.000000 -0.198813 0.000000 +frame17=0.000000 -0.240222 0.000000 +frame18=0.000000 -0.260927 0.000000 +frame21=0.000000 -0.323040 0.000000 +frame27=0.000000 -0.248372 0.000000 +frame32=0.000000 -0.273276 0.000000 diff --git a/CONTENT/BT/ANIMS/LOKSBLI.ANI b/CONTENT/BT/ANIMS/LOKSBLI.ANI new file mode 100644 index 0000000..c0a3a37 --- /dev/null +++ b/CONTENT/BT/ANIMS/LOKSBLI.ANI @@ -0,0 +1,118 @@ +[LAB_ONLY] + +[HEADER] +framecount=7 +framerate=30 +skeletonfile=lok.skl +jointcount=8 + +[Time] +frame1=0 +frame8=0.233333 +frame14=0.433333 +frame15=0.466667 +frame18=0.566667 +frame27=0.866667 +frame57=1.86667 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=0.079372 0.000000 0.000000 +jointlknee=-0.214384 0.000000 0.000000 +jointlankle=0.137470 0.000000 0.000000 +jointrthigh=0.054061 0.000000 0.000000 +jointrknee=-0.147065 0.000000 0.000000 +jointrankle=0.093170 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame8] +jointlthigh=0.213518 0.000000 0.000000 +jointlknee=-1.023142 0.000000 0.000000 +jointlankle=0.596234 0.000000 0.000000 +jointrthigh=0.103654 0.000000 0.000000 +jointrknee=-0.184712 0.000000 0.000000 +jointrankle=0.080857 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.006109 +jointshakey=0.000000 0.000000 -0.006109 +[frame14] +jointlthigh=0.018546 0.000000 0.000000 +jointlknee=-1.302332 0.000000 0.000000 +jointlankle=0.420872 0.000000 0.000000 +jointrthigh=0.165706 0.000000 0.000000 +jointrknee=-0.189675 0.000000 0.000000 +jointrankle=0.023335 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.011345 +jointshakey=0.000000 0.000000 -0.011345 +[frame15] +jointlthigh=-0.013949 0.000000 0.000000 +jointlknee=-1.348864 0.000000 0.000000 +jointlankle=0.391645 0.000000 0.000000 +jointrthigh=0.176048 0.000000 0.000000 +jointrknee=-0.190503 0.000000 0.000000 +jointrankle=0.013748 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.010472 +jointshakey=0.000000 0.000000 -0.010472 +[frame18] +jointlthigh=-0.132511 0.000000 0.000000 +jointlknee=-1.132111 0.000000 0.000000 +jointlankle=0.452681 0.000000 0.000000 +jointrthigh=0.150221 0.000000 0.000000 +jointrknee=0.034253 0.000000 0.000000 +jointrankle=-0.180991 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.007854 +jointshakey=0.000000 0.000000 -0.007854 +[frame27] +jointlthigh=-0.488198 0.000000 0.000000 +jointlknee=-0.481852 0.000000 0.000000 +jointlankle=0.635789 0.000000 0.000000 +jointrthigh=0.371813 0.000000 0.000000 +jointrknee=-0.153851 0.000000 0.000000 +jointrankle=0.090584 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame57] +jointlthigh=-0.485172 0.000000 0.000000 +jointlknee=-0.490326 0.000000 0.000000 +jointlankle=0.641220 0.000000 0.000000 +jointrthigh=0.357166 0.000000 0.000000 +jointrknee=-0.116382 0.000000 0.000000 +jointrankle=0.067576 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame8=0.000000 -5.350000 -0.771863 +frame14=0.000000 -5.350000 -1.572428 +frame15=0.000000 -5.350000 -1.572418 +frame18=0.000000 -5.350000 -3.594742 +frame27=0.000000 -5.350000 -3.594751 +frame57=0.000000 -5.350000 -3.928000 + +[KeyJointPos] +frame1=0.000000 0.000000 0.000000 +frame8=0.000000 -0.074512 0.000000 +frame14=0.000000 -0.138380 0.000000 +frame15=0.000000 -0.149024 0.000000 +frame18=0.000000 -0.180066 0.000000 +frame27=0.000000 -0.273189 0.000000 +frame57=0.000000 -0.273189 0.000000 diff --git a/CONTENT/BT/ANIMS/LOKSBRI.ANI b/CONTENT/BT/ANIMS/LOKSBRI.ANI new file mode 100644 index 0000000..a2f785e --- /dev/null +++ b/CONTENT/BT/ANIMS/LOKSBRI.ANI @@ -0,0 +1,118 @@ +[LAB_ONLY] + +[HEADER] +framecount=7 +framerate=30 +skeletonfile=lok.skl +jointcount=8 + +[Time] +frame1=0 +frame8=0.233333 +frame14=0.433333 +frame15=0.466667 +frame18=0.566667 +frame27=0.866667 +frame57=1.86667 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=0.054061 0.000000 0.000000 +jointlknee=-0.147065 0.000000 0.000000 +jointlankle=0.093170 0.000000 0.000000 +jointrthigh=0.079372 0.000000 0.000000 +jointrknee=-0.214384 0.000000 0.000000 +jointrankle=0.137470 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame8] +jointlthigh=0.129597 0.000000 0.000000 +jointlknee=-0.272149 0.000000 0.000000 +jointlankle=0.133323 0.000000 0.000000 +jointrthigh=0.213518 0.000000 0.000000 +jointrknee=-1.023142 0.000000 0.000000 +jointrankle=0.596234 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.006109 +jointshakey=0.000000 0.000000 0.006109 +[frame14] +jointlthigh=0.194341 0.000000 0.000000 +jointlknee=-0.262461 0.000000 0.000000 +jointlankle=0.066097 0.000000 0.000000 +jointrthigh=0.018546 0.000000 0.000000 +jointrknee=-1.302332 0.000000 0.000000 +jointrankle=0.420872 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.011345 +jointshakey=0.000000 0.000000 0.011345 +[frame15] +jointlthigh=0.205132 0.000000 0.000000 +jointlknee=-0.260846 0.000000 0.000000 +jointlankle=0.054893 0.000000 0.000000 +jointrthigh=-0.013949 0.000000 0.000000 +jointrknee=-1.348864 0.000000 0.000000 +jointrankle=0.391645 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.010472 +jointshakey=0.000000 0.000000 0.010472 +[frame18] +jointlthigh=0.184267 0.000000 0.000000 +jointlknee=-0.051188 0.000000 0.000000 +jointlankle=-0.128756 0.000000 0.000000 +jointrthigh=-0.132654 0.000000 0.000000 +jointrknee=-1.131721 0.000000 0.000000 +jointrankle=0.452435 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.007854 +jointshakey=0.000000 0.000000 0.007854 +[frame27] +jointlthigh=0.395614 0.000000 0.000000 +jointlknee=-0.220767 0.000000 0.000000 +jointlankle=0.133954 0.000000 0.000000 +jointrthigh=-0.488771 0.000000 0.000000 +jointrknee=-0.480292 0.000000 0.000000 +jointrankle=0.634804 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame57] +jointlthigh=0.384800 0.000000 0.000000 +jointlknee=-0.191501 0.000000 0.000000 +jointlankle=0.115461 0.000000 0.000000 +jointrthigh=-0.485598 0.000000 0.000000 +jointrknee=-0.489045 0.000000 0.000000 +jointrankle=0.640394 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame8=0.000000 -5.350000 -0.771863 +frame14=0.000000 -5.350000 -1.572428 +frame15=0.000000 -5.350000 -1.572418 +frame18=0.000000 -5.350000 -3.594742 +frame27=0.000000 -5.350000 -3.594751 +frame57=0.000000 -5.350000 -3.928000 + +[KeyJointPos] +frame1=0.000000 0.000000 0.000000 +frame8=0.000000 -0.074512 0.000000 +frame14=0.000000 -0.138380 0.000000 +frame15=0.000000 -0.149024 0.000000 +frame18=0.000000 -0.180066 0.000000 +frame27=0.000000 -0.273189 0.000000 +frame57=0.000000 -0.273189 0.000000 diff --git a/CONTENT/BT/ANIMS/LOKSWLI.ANI b/CONTENT/BT/ANIMS/LOKSWLI.ANI new file mode 100644 index 0000000..3aab6cc --- /dev/null +++ b/CONTENT/BT/ANIMS/LOKSWLI.ANI @@ -0,0 +1,166 @@ +[LAB_ONLY] + +[HEADER] +framecount=11 +framerate=30 +skeletonfile=lok.skl +jointcount=8 + +[Time] +frame1=0 +frame3=0.0666667 +frame5=0.133333 +frame7=0.2 +frame8=0.233333 +frame9=0.266667 +frame11=0.333333 +frame14=0.433333 +frame17=0.533333 +frame30=0.966667 +frame60=1.96667 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame3] +jointlthigh=0.024100 0.000000 0.000000 +jointlknee=-0.003358 0.000000 0.000000 +jointlankle=-0.006623 0.000000 0.000000 +jointrthigh=0.001478 0.000000 0.000000 +jointrknee=-0.132406 0.000000 0.000000 +jointrankle=0.131344 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.001309 +jointshakey=0.000000 0.000000 -0.001309 +[frame5] +jointlthigh=0.048201 0.000000 0.000000 +jointlknee=-0.006715 0.000000 0.000000 +jointlankle=-0.013247 0.000000 0.000000 +jointrthigh=0.010571 0.000000 0.000000 +jointrknee=-0.277930 0.000000 0.000000 +jointrankle=0.262932 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.002618 +jointshakey=0.000000 0.000000 -0.002618 +[frame7] +jointlthigh=0.072301 0.000000 0.000000 +jointlknee=-0.010073 0.000000 0.000000 +jointlankle=-0.019870 0.000000 0.000000 +jointrthigh=-0.027391 0.000000 0.000000 +jointrknee=-0.307667 0.000000 0.000000 +jointrankle=0.335590 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.003927 +jointshakey=0.000000 0.000000 -0.003927 +[frame8] +jointlthigh=0.084351 0.000000 0.000000 +jointlknee=-0.011752 0.000000 0.000000 +jointlankle=-0.023182 0.000000 0.000000 +jointrthigh=-0.050329 0.000000 0.000000 +jointrknee=-0.305939 0.000000 0.000000 +jointrankle=0.350132 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.004581 +jointshakey=0.000000 0.000000 -0.004581 +[frame9] +jointlthigh=0.111302 0.000000 0.000000 +jointlknee=-0.051764 0.000000 0.000000 +jointlankle=0.006232 0.000000 0.000000 +jointrthigh=-0.082383 0.000000 0.000000 +jointrknee=-0.294320 0.000000 0.000000 +jointrankle=0.374261 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.005091 +jointshakey=0.000000 0.000000 -0.005091 +[frame11] +jointlthigh=0.165204 0.000000 0.000000 +jointlknee=-0.131789 0.000000 0.000000 +jointlankle=0.065060 0.000000 0.000000 +jointrthigh=-0.119141 0.000000 0.000000 +jointrknee=-0.342128 0.000000 0.000000 +jointrankle=0.461383 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.006109 +jointshakey=0.000000 0.000000 -0.006109 +[frame14] +jointlthigh=0.246058 0.000000 0.000000 +jointlknee=-0.251826 0.000000 0.000000 +jointlankle=0.153303 0.000000 0.000000 +jointrthigh=-0.233183 0.000000 0.000000 +jointrknee=-0.242569 0.000000 0.000000 +jointrankle=0.475571 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.007636 +jointshakey=0.000000 0.000000 -0.007636 +[frame17] +jointlthigh=0.326911 0.000000 0.000000 +jointlknee=-0.371863 0.000000 0.000000 +jointlankle=0.241545 0.000000 0.000000 +jointrthigh=-0.341664 0.000000 0.000000 +jointrknee=-0.158458 0.000000 0.000000 +jointrankle=0.499595 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.009163 +jointshakey=0.000000 0.000000 -0.009163 +[frame30] +jointlthigh=0.412577 0.000000 0.000000 +jointlknee=-0.267172 0.000000 0.000000 +jointlankle=0.163490 0.000000 0.000000 +jointrthigh=-0.492373 0.000000 0.000000 +jointrknee=-0.475967 0.000000 0.000000 +jointrankle=0.650851 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame60] +jointlthigh=0.419090 0.000000 0.000000 +jointlknee=-0.285651 0.000000 0.000000 +jointlankle=0.175531 0.000000 0.000000 +jointrthigh=-0.497417 0.000000 0.000000 +jointrknee=-0.482823 0.000000 0.000000 +jointrankle=0.647496 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame3=0.000000 -5.350000 3.798857 +frame5=0.000000 -5.350000 3.798858 +frame7=0.000000 -5.350000 3.798857 +frame8=0.000000 -5.350000 3.798856 +frame9=0.000000 -5.350000 4.188498 +frame11=0.000000 -5.350000 4.188500 +frame14=0.000000 -5.350000 4.188501 +frame17=0.000000 -5.350000 4.188498 +frame30=0.000000 -5.350000 3.901384 +frame60=0.000000 -5.350000 4.226621 + +[KeyJointPos] +frame1=0.000000 0.000000 0.000000 +frame3=0.000000 -0.008806 0.000000 +frame5=0.000000 -0.017611 0.000000 +frame7=0.000000 -0.026417 0.000000 +frame8=0.000000 -0.030821 0.000000 +frame9=0.000000 -0.035675 0.000000 +frame11=0.000000 -0.045382 0.000000 +frame14=0.000000 -0.059944 0.000000 +frame17=0.000000 -0.074506 0.000000 +frame30=0.000000 -0.273276 0.000000 +frame60=0.000000 -0.273276 0.000000 diff --git a/CONTENT/BT/ANIMS/LOKSWRI.ANI b/CONTENT/BT/ANIMS/LOKSWRI.ANI new file mode 100644 index 0000000..6d6ed68 --- /dev/null +++ b/CONTENT/BT/ANIMS/LOKSWRI.ANI @@ -0,0 +1,166 @@ +[LAB_ONLY] + +[HEADER] +framecount=11 +framerate=30 +skeletonfile=lok.skl +jointcount=8 + +[Time] +frame1=0 +frame3=0.0666667 +frame5=0.133333 +frame7=0.2 +frame8=0.233333 +frame9=0.266667 +frame11=0.333333 +frame14=0.433333 +frame17=0.533333 +frame30=0.966667 +frame60=1.96667 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame3] +jointlthigh=0.009449 0.000000 0.000000 +jointlknee=-0.141535 0.000000 0.000000 +jointlankle=0.131737 0.000000 0.000000 +jointrthigh=0.022581 0.000000 0.000000 +jointrknee=0.002094 0.000000 0.000000 +jointrankle=-0.009710 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.001309 +jointshakey=0.000000 0.000000 0.001309 +[frame5] +jointlthigh=-0.014251 0.000000 0.000000 +jointlknee=-0.208457 0.000000 0.000000 +jointlankle=0.224263 0.000000 0.000000 +jointrthigh=0.045162 0.000000 0.000000 +jointrknee=0.004187 0.000000 0.000000 +jointrankle=-0.019421 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.002618 +jointshakey=0.000000 0.000000 0.002618 +[frame7] +jointlthigh=-0.027803 0.000000 0.000000 +jointlknee=-0.299858 0.000000 0.000000 +jointlankle=0.325345 0.000000 0.000000 +jointrthigh=0.067743 0.000000 0.000000 +jointrknee=0.006281 0.000000 0.000000 +jointrankle=-0.029131 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.003927 +jointshakey=0.000000 0.000000 0.003927 +[frame8] +jointlthigh=-0.054541 0.000000 0.000000 +jointlknee=-0.289288 0.000000 0.000000 +jointlankle=0.344161 0.000000 0.000000 +jointrthigh=0.079033 0.000000 0.000000 +jointrknee=0.007328 0.000000 0.000000 +jointrankle=-0.033987 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.004581 +jointshakey=0.000000 0.000000 0.004581 +[frame9] +jointlthigh=-0.076943 0.000000 0.000000 +jointlknee=-0.302143 0.000000 0.000000 +jointlankle=0.378478 0.000000 0.000000 +jointrthigh=0.100354 0.000000 0.000000 +jointrknee=-0.017352 0.000000 0.000000 +jointrankle=-0.014671 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.005091 +jointshakey=0.000000 0.000000 0.005091 +[frame11] +jointlthigh=-0.120802 0.000000 0.000000 +jointlknee=-0.326548 0.000000 0.000000 +jointlankle=0.448073 0.000000 0.000000 +jointrthigh=0.142997 0.000000 0.000000 +jointrknee=-0.066710 0.000000 0.000000 +jointrankle=0.023960 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.006109 +jointshakey=0.000000 0.000000 0.006109 +[frame14] +jointlthigh=-0.233090 0.000000 0.000000 +jointlknee=-0.234441 0.000000 0.000000 +jointlankle=0.468546 0.000000 0.000000 +jointrthigh=0.206960 0.000000 0.000000 +jointrknee=-0.140748 0.000000 0.000000 +jointrankle=0.081906 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.007636 +jointshakey=0.000000 0.000000 0.007636 +[frame17] +jointlthigh=-0.327410 0.000000 0.000000 +jointlknee=-0.186930 0.000000 0.000000 +jointlankle=0.515082 0.000000 0.000000 +jointrthigh=0.270924 0.000000 0.000000 +jointrknee=-0.214785 0.000000 0.000000 +jointrankle=0.139853 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.009163 +jointshakey=0.000000 0.000000 0.009163 +[frame30] +jointlthigh=-0.490579 0.000000 0.000000 +jointlknee=-0.481100 0.000000 0.000000 +jointlankle=0.654167 0.000000 0.000000 +jointrthigh=0.425042 0.000000 0.000000 +jointrknee=-0.301626 0.000000 0.000000 +jointrankle=0.185455 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame60] +jointlthigh=-0.497818 0.000000 0.000000 +jointlknee=-0.481707 0.000000 0.000000 +jointlankle=0.646786 0.000000 0.000000 +jointrthigh=0.423520 0.000000 0.000000 +jointrknee=-0.297491 0.000000 0.000000 +jointrankle=0.182923 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame3=0.000000 -5.350000 3.798857 +frame5=0.000000 -5.350000 3.798858 +frame7=0.000000 -5.350000 3.798857 +frame8=0.000000 -5.350000 3.798856 +frame9=0.000000 -5.350000 4.188498 +frame11=0.000000 -5.350000 4.188500 +frame14=0.000000 -5.350000 4.188501 +frame17=0.000000 -5.350000 4.188498 +frame30=0.000000 -5.350000 3.901384 +frame60=0.000000 -5.350000 4.226621 + +[KeyJointPos] +frame1=0.000000 0.000000 0.000000 +frame3=0.000000 -0.008806 0.000000 +frame5=0.000000 -0.017611 0.000000 +frame7=0.000000 -0.026417 0.000000 +frame8=0.000000 -0.030821 0.000000 +frame9=0.000000 -0.035675 0.000000 +frame11=0.000000 -0.045382 0.000000 +frame14=0.000000 -0.059944 0.000000 +frame17=0.000000 -0.074506 0.000000 +frame30=0.000000 -0.273276 0.000000 +frame60=0.000000 -0.273276 0.000000 diff --git a/CONTENT/BT/ANIMS/LOKTRN.ANI b/CONTENT/BT/ANIMS/LOKTRN.ANI new file mode 100644 index 0000000..2d94abe --- /dev/null +++ b/CONTENT/BT/ANIMS/LOKTRN.ANI @@ -0,0 +1,87 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=lok.skl +jointcount=7 + +[Time] +frame1=0 +frame12=0.366667 +frame23=0.733333 +frame34=1.1 +frame45=1.46667 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate + +[frame1] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame12] +jointlthigh=0.293659 0.000000 0.000000 +jointlknee=-0.760082 0.000000 0.000000 +jointlankle=0.454452 0.000000 0.000000 +jointrthigh=0.058707 0.000000 0.000000 +jointrknee=-0.159500 0.000000 0.000000 +jointrankle=0.101507 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.018326 +[frame23] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame34] +jointlthigh=0.044154 0.000000 0.000000 +jointlknee=-0.119840 0.000000 0.000000 +jointlankle=0.076623 0.000000 0.000000 +jointrthigh=0.307909 0.000000 0.000000 +jointrknee=-0.797483 0.000000 0.000000 +jointrankle=0.477670 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.018326 +[frame45] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame12=0.000000 -5.350000 0.000000 +frame23=0.000000 -5.350000 0.000000 +frame34=0.000000 -5.350000 0.000000 +frame45=0.000000 -5.350000 0.000000 + +[KeyJointPos] +frame1=0.000000 0.000000 0.000000 +frame12=0.113777 -0.001042 0.000000 +frame23=0.000000 0.000000 0.000000 +frame34=-0.113777 -0.001042 0.000000 +frame45=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/LOKTRNI.ANI b/CONTENT/BT/ANIMS/LOKTRNI.ANI new file mode 100644 index 0000000..c0dccbe --- /dev/null +++ b/CONTENT/BT/ANIMS/LOKTRNI.ANI @@ -0,0 +1,94 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=lok.skl +jointcount=8 + +[Time] +frame1=0 +frame12=0.366667 +frame23=0.733333 +frame34=1.1 +frame45=1.46667 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame12] +jointlthigh=0.285597 0.000000 0.000000 +jointlknee=-0.733401 0.000000 0.000000 +jointlankle=0.435383 0.000000 0.000000 +jointrthigh=0.000030 0.000000 0.000000 +jointrknee=-0.000382 0.000000 0.000000 +jointrankle=0.000807 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.009163 +jointshakey=0.000000 0.000000 -0.009163 +[frame23] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame34] +jointlthigh=0.061957 0.000000 0.000000 +jointlknee=-0.168362 0.000000 0.000000 +jointlankle=0.107585 0.000000 0.000000 +jointrthigh=0.300350 0.000000 0.000000 +jointrknee=-0.771961 0.000000 0.000000 +jointrankle=0.459248 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.009163 +jointshakey=0.000000 0.000000 0.009163 +[frame45] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame12=0.000000 -5.350000 0.000000 +frame23=0.000000 -5.350000 0.000000 +frame34=0.000000 -5.350000 0.000000 +frame45=0.000000 -5.350000 0.000000 + +[KeyJointPos] +frame1=0.000000 0.000000 0.000000 +frame12=0.000000 0.000000 0.000000 +frame23=0.000000 0.000000 0.000000 +frame34=0.000000 0.000000 0.000000 +frame45=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/LOKWGL.ANI b/CONTENT/BT/ANIMS/LOKWGL.ANI new file mode 100644 index 0000000..b068862 --- /dev/null +++ b/CONTENT/BT/ANIMS/LOKWGL.ANI @@ -0,0 +1,98 @@ +[LAB_ONLY] + +[HEADER] +framecount=6 +framerate=30 +skeletonfile=lok.skl +jointcount=7 + +[Time] +frame1=0 +frame10=0.3 +frame17=0.533333 +frame22=0.7 +frame26=0.833333 +frame56=1.83333 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate + +[frame1] +jointlthigh=-0.492373 0.000000 0.000000 +jointlknee=-0.475967 0.000000 0.000000 +jointlankle=0.650851 0.000000 0.000000 +jointrthigh=0.412577 0.000000 0.000000 +jointrknee=-0.267172 0.000000 0.000000 +jointrankle=0.163490 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame10] +jointlthigh=-0.589846 0.000000 0.000000 +jointlknee=-0.516366 0.000000 0.000000 +jointlankle=0.287503 0.000000 0.000000 +jointrthigh=0.356485 0.000000 0.000000 +jointrknee=-0.233317 0.000000 0.000000 +jointrankle=0.070402 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.009425 +[frame17] +jointlthigh=-0.526360 0.000000 0.000000 +jointlknee=-0.511573 0.000000 0.000000 +jointlankle=-0.216180 0.000000 0.000000 +jointrthigh=0.224610 0.000000 0.000000 +jointrknee=-0.283318 0.000000 0.000000 +jointrankle=0.058921 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.016755 +[frame22] +jointlthigh=-0.254822 0.000000 0.000000 +jointlknee=-0.689241 0.000000 0.000000 +jointlankle=-0.543888 0.000000 0.000000 +jointrthigh=0.050688 0.000000 0.000000 +jointrknee=-0.218753 0.000000 0.000000 +jointrankle=0.163589 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.021991 +[frame26] +jointlthigh=-0.049463 0.000000 0.000000 +jointlknee=-0.814266 0.000000 0.000000 +jointlankle=-0.499950 0.000000 0.000000 +jointrthigh=-0.054350 0.000000 0.000000 +jointrknee=-0.236876 0.000000 0.000000 +jointrankle=0.288957 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.026180 +[frame56] +jointlthigh=-0.047994 0.000000 0.000000 +jointlknee=-0.818416 0.000000 0.000000 +jointlankle=-0.497190 0.000000 0.000000 +jointrthigh=-0.064916 0.000000 0.000000 +jointrknee=-0.205319 0.000000 0.000000 +jointrankle=0.268894 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.026180 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame10=0.000000 -5.350000 4.548289 +frame17=0.000000 -5.350000 4.548288 +frame22=0.000000 -5.350000 4.548289 +frame26=0.000000 -5.350000 4.548286 +frame56=0.000000 -5.350000 4.487109 + +[KeyJointPos] +frame1=0.000000 -0.273276 0.000000 +frame10=0.056409 -0.223840 0.000000 +frame17=0.101945 -0.125031 0.000000 +frame22=0.135982 -0.026330 0.000000 +frame26=0.165129 0.097180 0.000000 +frame56=0.165129 0.097180 0.000000 diff --git a/CONTENT/BT/ANIMS/LOKWGLI.ANI b/CONTENT/BT/ANIMS/LOKWGLI.ANI new file mode 100644 index 0000000..4683ae7 --- /dev/null +++ b/CONTENT/BT/ANIMS/LOKWGLI.ANI @@ -0,0 +1,106 @@ +[LAB_ONLY] + +[HEADER] +framecount=6 +framerate=30 +skeletonfile=lok.skl +jointcount=8 + +[Time] +frame1=0 +frame10=0.3 +frame17=0.533333 +frame22=0.7 +frame26=0.833333 +frame56=1.83333 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=-0.492373 0.000000 0.000000 +jointlknee=-0.475967 0.000000 0.000000 +jointlankle=0.650851 0.000000 0.000000 +jointrthigh=0.412577 0.000000 0.000000 +jointrknee=-0.267172 0.000000 0.000000 +jointrankle=0.163490 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame10] +jointlthigh=-0.594145 0.000000 0.000000 +jointlknee=-0.499391 0.000000 0.000000 +jointlankle=0.274820 0.000000 0.000000 +jointrthigh=0.337831 0.000000 0.000000 +jointrknee=-0.179758 0.000000 0.000000 +jointrankle=0.041441 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.005655 +jointshakey=0.000000 0.000000 -0.005655 +[frame17] +jointlthigh=-0.535066 0.000000 0.000000 +jointlknee=-0.479372 0.000000 0.000000 +jointlankle=-0.239721 0.000000 0.000000 +jointrthigh=0.191981 0.000000 0.000000 +jointrknee=-0.196985 0.000000 0.000000 +jointrankle=0.004486 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.010053 +jointshakey=0.000000 0.000000 -0.010053 +[frame22] +jointlthigh=-0.265290 0.000000 0.000000 +jointlknee=-0.652404 0.000000 0.000000 +jointlankle=-0.570269 0.000000 0.000000 +jointrthigh=0.083075 0.000000 0.000000 +jointrknee=-0.299415 0.000000 0.000000 +jointrankle=0.216330 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.013195 +jointshakey=0.000000 0.000000 -0.013195 +[frame26] +jointlthigh=-0.049463 0.000000 0.000000 +jointlknee=-0.814266 0.000000 0.000000 +jointlankle=-0.499950 0.000000 0.000000 +jointrthigh=-0.074480 0.000000 0.000000 +jointrknee=-0.190792 0.000000 0.000000 +jointrankle=0.267028 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.015708 +jointshakey=0.000000 0.000000 -0.015708 +[frame56] +jointlthigh=-0.047994 0.000000 0.000000 +jointlknee=-0.818416 0.000000 0.000000 +jointlankle=-0.497190 0.000000 0.000000 +jointrthigh=-0.068744 0.000000 0.000000 +jointrknee=-0.194564 0.000000 0.000000 +jointrankle=0.262712 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.015708 +jointshakey=0.000000 0.000000 -0.015708 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame10=0.000000 -5.350000 4.548289 +frame17=0.000000 -5.350000 4.548288 +frame22=0.000000 -5.350000 4.548289 +frame26=0.000000 -5.350000 4.548286 +frame56=0.000000 -5.350000 4.487109 + +[KeyJointPos] +frame1=0.000000 -0.273276 0.000000 +frame10=0.000000 -0.223574 0.000000 +frame17=0.000000 -0.124177 0.000000 +frame22=0.000000 -0.024836 0.000000 +frame26=0.000000 0.099342 0.000000 +frame56=0.000000 0.099342 0.000000 diff --git a/CONTENT/BT/ANIMS/LOKWGR.ANI b/CONTENT/BT/ANIMS/LOKWGR.ANI new file mode 100644 index 0000000..8be9023 --- /dev/null +++ b/CONTENT/BT/ANIMS/LOKWGR.ANI @@ -0,0 +1,98 @@ +[LAB_ONLY] + +[HEADER] +framecount=6 +framerate=30 +skeletonfile=lok.skl +jointcount=7 + +[Time] +frame1=0 +frame10=0.3 +frame17=0.533333 +frame22=0.7 +frame26=0.833333 +frame56=1.83333 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate + +[frame1] +jointlthigh=0.412577 0.000000 0.000000 +jointlknee=-0.267172 0.000000 0.000000 +jointlankle=0.163490 0.000000 0.000000 +jointrthigh=-0.492373 0.000000 0.000000 +jointrknee=-0.475967 0.000000 0.000000 +jointrankle=0.650851 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame10] +jointlthigh=0.323867 0.000000 0.000000 +jointlknee=-0.137254 0.000000 0.000000 +jointlankle=0.006893 0.000000 0.000000 +jointrthigh=-0.576287 0.000000 0.000000 +jointrknee=-0.548611 0.000000 0.000000 +jointrankle=0.306218 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.009425 +[frame17] +jointlthigh=0.199898 0.000000 0.000000 +jointlknee=-0.229088 0.000000 0.000000 +jointlankle=0.029444 0.000000 0.000000 +jointrthigh=-0.525512 0.000000 0.000000 +jointrknee=-0.530688 0.000000 0.000000 +jointrankle=-0.197871 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.016755 +[frame22] +jointlthigh=0.050688 0.000000 0.000000 +jointlknee=-0.218753 0.000000 0.000000 +jointlankle=0.163589 0.000000 0.000000 +jointrthigh=-0.254822 0.000000 0.000000 +jointrknee=-0.689241 0.000000 0.000000 +jointrankle=-0.543888 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.021991 +[frame26] +jointlthigh=-0.054350 0.000000 0.000000 +jointlknee=-0.236876 0.000000 0.000000 +jointlankle=0.288957 0.000000 0.000000 +jointrthigh=-0.049463 0.000000 0.000000 +jointrknee=-0.814266 0.000000 0.000000 +jointrankle=-0.499950 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.026180 +[frame56] +jointlthigh=-0.064810 0.000000 0.000000 +jointlknee=-0.205902 0.000000 0.000000 +jointlankle=0.269529 0.000000 0.000000 +jointrthigh=-0.048643 0.000000 0.000000 +jointrknee=-0.816664 0.000000 0.000000 +jointrankle=-0.498328 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.026180 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame10=0.000000 -5.350000 4.548289 +frame17=0.000000 -5.350000 4.548288 +frame22=0.000000 -5.350000 4.548289 +frame26=0.000000 -5.350000 4.548286 +frame56=0.000000 -5.350000 4.487109 + +[KeyJointPos] +frame1=0.000000 -0.273276 0.000000 +frame10=-0.056409 -0.223840 0.000000 +frame17=-0.101945 -0.125031 0.000000 +frame22=-0.135982 -0.026330 0.000000 +frame26=-0.165129 0.097180 0.000000 +frame56=-0.165129 0.097180 0.000000 diff --git a/CONTENT/BT/ANIMS/LOKWGRI.ANI b/CONTENT/BT/ANIMS/LOKWGRI.ANI new file mode 100644 index 0000000..2ac8d07 --- /dev/null +++ b/CONTENT/BT/ANIMS/LOKWGRI.ANI @@ -0,0 +1,106 @@ +[LAB_ONLY] + +[HEADER] +framecount=6 +framerate=30 +skeletonfile=lok.skl +jointcount=8 + +[Time] +frame1=0 +frame10=0.3 +frame17=0.533333 +frame22=0.7 +frame26=0.833333 +frame56=1.83333 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=0.412577 0.000000 0.000000 +jointlknee=-0.267172 0.000000 0.000000 +jointlankle=0.163490 0.000000 0.000000 +jointrthigh=-0.492373 0.000000 0.000000 +jointrknee=-0.475967 0.000000 0.000000 +jointrankle=0.650851 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame10] +jointlthigh=0.328207 0.000000 0.000000 +jointlknee=-0.132440 0.000000 0.000000 +jointlankle=-0.023875 0.000000 0.000000 +jointrthigh=-0.594145 0.000000 0.000000 +jointrknee=-0.499391 0.000000 0.000000 +jointrankle=0.274820 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.005655 +jointshakey=0.000000 0.000000 0.005655 +[frame17] +jointlthigh=0.180326 0.000000 0.000000 +jointlknee=-0.165998 0.000000 0.000000 +jointlankle=-0.015017 0.000000 0.000000 +jointrthigh=-0.525761 0.000000 0.000000 +jointrknee=-0.515321 0.000000 0.000000 +jointrankle=-0.214691 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.010053 +jointshakey=0.000000 0.000000 0.010053 +[frame22] +jointlthigh=0.079831 0.000000 0.000000 +jointlknee=-0.295589 0.000000 0.000000 +jointlankle=0.211290 0.000000 0.000000 +jointrthigh=-0.251029 0.000000 0.000000 +jointrknee=-0.684501 0.000000 0.000000 +jointrankle=-0.580085 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.013195 +jointshakey=0.000000 0.000000 0.013195 +[frame26] +jointlthigh=-0.080860 0.000000 0.000000 +jointlknee=-0.165134 0.000000 0.000000 +jointlankle=0.246070 0.000000 0.000000 +jointrthigh=-0.037502 0.000000 0.000000 +jointrknee=-0.852489 0.000000 0.000000 +jointrankle=-0.472777 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.015708 +jointshakey=0.000000 0.000000 0.015708 +[frame56] +jointlthigh=-0.074920 0.000000 0.000000 +jointlknee=-0.176755 0.000000 0.000000 +jointlankle=0.250692 0.000000 0.000000 +jointrthigh=-0.048643 0.000000 0.000000 +jointrknee=-0.816664 0.000000 0.000000 +jointrankle=-0.498328 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.015708 +jointshakey=0.000000 0.000000 0.015708 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame10=0.000000 -5.350000 4.548289 +frame17=0.000000 -5.350000 4.548288 +frame22=0.000000 -5.350000 4.548289 +frame26=0.000000 -5.350000 4.548286 +frame56=0.000000 -5.350000 4.487109 + +[KeyJointPos] +frame1=0.000000 -0.273276 0.000000 +frame10=0.000000 -0.223574 0.000000 +frame17=0.000000 -0.124177 0.000000 +frame22=0.000000 -0.024836 0.000000 +frame26=0.000000 0.099342 0.000000 +frame56=0.000000 0.099342 0.000000 diff --git a/CONTENT/BT/ANIMS/LOKWRL.ANI b/CONTENT/BT/ANIMS/LOKWRL.ANI new file mode 100644 index 0000000..16c00d0 --- /dev/null +++ b/CONTENT/BT/ANIMS/LOKWRL.ANI @@ -0,0 +1,108 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=lok.skl +jointcount=10 + +[Time] +frame1=0 +frame5=0.133333 +frame10=0.3 +frame17=0.533333 +frame47=1.53333 + +[JointIndices] +jointhip=1 +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointrshoulder=4 +jointlshoulder=6 +jointlocal=0 + +[JointType] +jointhip=hingex +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointrshoulder=hingex +jointlshoulder=hingex +jointlocal=balltranslate + +[frame1] +jointhip=-0.078540 0.000000 0.000000 +jointlthigh=-0.491890 0.000000 0.000000 +jointlknee=-0.472590 0.000000 0.000000 +jointlankle=0.630289 0.000000 0.000000 +jointrthigh=0.395614 0.000000 0.000000 +jointrknee=-0.220767 0.000000 0.000000 +jointrankle=0.133954 0.000000 0.000000 +jointrshoulder=0.078540 0.000000 0.000000 +jointlshoulder=0.078540 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame5] +jointhip=-0.117585 0.000000 0.000000 +jointlthigh=-0.074797 0.000000 0.000000 +jointlknee=-1.239543 0.000000 0.000000 +jointlankle=-0.160774 0.000000 0.000000 +jointrthigh=0.321226 0.000000 0.000000 +jointrknee=-0.608844 0.000000 0.000000 +jointrankle=0.287300 0.000000 0.000000 +jointrshoulder=0.117585 0.000000 0.000000 +jointlshoulder=0.117585 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.010472 +[frame10] +jointhip=-0.156629 0.000000 0.000000 +jointlthigh=0.301094 0.000000 0.000000 +jointlknee=-1.315069 0.000000 0.000000 +jointlankle=0.405091 0.000000 0.000000 +jointrthigh=-0.150137 0.000000 0.000000 +jointrknee=-0.578414 0.000000 0.000000 +jointrankle=0.731094 0.000000 0.000000 +jointrshoulder=0.156629 0.000000 0.000000 +jointlshoulder=0.156629 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.026180 +[frame17] +jointhip=-0.208689 0.000000 0.000000 +jointlthigh=0.733611 0.000000 0.000000 +jointlknee=-0.461245 0.000000 0.000000 +jointlankle=0.195510 0.000000 0.000000 +jointrthigh=-0.519965 0.000000 0.000000 +jointrknee=-0.483357 0.000000 0.000000 +jointrankle=-0.238857 0.000000 0.000000 +jointrshoulder=0.208689 0.000000 0.000000 +jointlshoulder=0.208689 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.013090 +[frame47] +jointhip=-0.208689 0.000000 0.000000 +jointlthigh=0.733611 0.000000 0.000000 +jointlknee=-0.461245 0.000000 0.000000 +jointlankle=0.195510 0.000000 0.000000 +jointrthigh=-0.527775 0.000000 0.000000 +jointrknee=-0.461195 0.000000 0.000000 +jointrankle=-0.253401 0.000000 0.000000 +jointrshoulder=0.208689 0.000000 0.000000 +jointlshoulder=0.208689 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.013090 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame5=0.000000 -5.350000 11.643741 +frame10=0.000000 -5.350000 14.028008 +frame17=0.000000 -5.350000 16.229568 +frame47=0.000000 -5.350000 14.630703 + +[KeyJointPos] +frame1=0.000000 -0.273276 0.000000 +frame5=0.060987 -0.385267 0.000000 +frame10=0.157327 -0.200748 0.000000 +frame17=0.080946 -0.025365 0.000000 +frame47=0.080946 -0.025365 0.000000 diff --git a/CONTENT/BT/ANIMS/LOKWRLI.ANI b/CONTENT/BT/ANIMS/LOKWRLI.ANI new file mode 100644 index 0000000..634649f --- /dev/null +++ b/CONTENT/BT/ANIMS/LOKWRLI.ANI @@ -0,0 +1,106 @@ +[LAB_ONLY] + +[HEADER] +framecount=6 +framerate=30 +skeletonfile=lok.skl +jointcount=8 + +[Time] +frame1=0 +frame5=0.133333 +frame10=0.3 +frame14=0.433333 +frame17=0.533333 +frame47=1.53333 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=-0.491890 0.000000 0.000000 +jointlknee=-0.472590 0.000000 0.000000 +jointlankle=0.630289 0.000000 0.000000 +jointrthigh=0.395614 0.000000 0.000000 +jointrknee=-0.220767 0.000000 0.000000 +jointrankle=0.133954 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame5] +jointlthigh=-0.080152 0.000000 0.000000 +jointlknee=-1.228141 0.000000 0.000000 +jointlankle=-0.166943 0.000000 0.000000 +jointrthigh=0.320317 0.000000 0.000000 +jointrknee=-0.606718 0.000000 0.000000 +jointrankle=0.286740 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.007854 +jointshakey=0.000000 0.000000 -0.007854 +[frame10] +jointlthigh=0.301094 0.000000 0.000000 +jointlknee=-1.315069 0.000000 0.000000 +jointlankle=0.405091 0.000000 0.000000 +jointrthigh=-0.165640 0.000000 0.000000 +jointrknee=-0.532483 0.000000 0.000000 +jointrankle=0.702111 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.015708 +jointshakey=0.000000 0.000000 -0.015708 +[frame14] +jointlthigh=0.548246 0.000000 0.000000 +jointlknee=-0.827170 0.000000 0.000000 +jointlankle=0.285330 0.000000 0.000000 +jointrthigh=-0.292631 0.000000 0.000000 +jointrknee=-0.837608 0.000000 0.000000 +jointrankle=0.406562 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.011968 +jointshakey=0.000000 0.000000 -0.011968 +[frame17] +jointlthigh=0.733611 0.000000 0.000000 +jointlknee=-0.461245 0.000000 0.000000 +jointlankle=0.195510 0.000000 0.000000 +jointrthigh=-0.535333 0.000000 0.000000 +jointrknee=-0.430700 0.000000 0.000000 +jointrankle=-0.277073 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.009163 +jointshakey=0.000000 0.000000 -0.009163 +[frame47] +jointlthigh=0.733611 0.000000 0.000000 +jointlknee=-0.461245 0.000000 0.000000 +jointlankle=0.195510 0.000000 0.000000 +jointrthigh=-0.534118 0.000000 0.000000 +jointrknee=-0.442685 0.000000 0.000000 +jointrankle=-0.268295 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.009163 +jointshakey=0.000000 0.000000 -0.009163 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame5=0.000000 -5.350000 11.643741 +frame10=0.000000 -5.350000 14.028008 +frame14=0.000000 -5.350000 16.229568 +frame17=0.000000 -5.350000 16.229568 +frame47=0.000000 -5.350000 14.630703 + +[KeyJointPos] +frame1=0.000000 -0.273276 0.000000 +frame5=0.000000 -0.384948 0.000000 +frame10=0.000000 -0.198689 0.000000 +frame14=0.000000 -0.099344 0.000000 +frame17=0.000000 -0.024836 0.000000 +frame47=0.000000 -0.024836 0.000000 diff --git a/CONTENT/BT/ANIMS/LOKWRR.ANI b/CONTENT/BT/ANIMS/LOKWRR.ANI new file mode 100644 index 0000000..274bb82 --- /dev/null +++ b/CONTENT/BT/ANIMS/LOKWRR.ANI @@ -0,0 +1,108 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=lok.skl +jointcount=10 + +[Time] +frame1=0 +frame5=0.133333 +frame10=0.3 +frame17=0.533333 +frame47=1.53333 + +[JointIndices] +jointhip=1 +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointrshoulder=4 +jointlshoulder=6 +jointlocal=0 + +[JointType] +jointhip=hingex +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointrshoulder=hingex +jointlshoulder=hingex +jointlocal=balltranslate + +[frame1] +jointhip=-0.078540 0.000000 0.000000 +jointlthigh=0.395614 0.000000 0.000000 +jointlknee=-0.220767 0.000000 0.000000 +jointlankle=0.133954 0.000000 0.000000 +jointrthigh=-0.491890 0.000000 0.000000 +jointrknee=-0.472590 0.000000 0.000000 +jointrankle=0.630289 0.000000 0.000000 +jointrshoulder=0.078540 0.000000 0.000000 +jointlshoulder=0.078540 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame5] +jointhip=-0.117585 0.000000 0.000000 +jointlthigh=0.321226 0.000000 0.000000 +jointlknee=-0.608844 0.000000 0.000000 +jointlankle=0.287300 0.000000 0.000000 +jointrthigh=-0.074797 0.000000 0.000000 +jointrknee=-1.239543 0.000000 0.000000 +jointrankle=-0.160774 0.000000 0.000000 +jointrshoulder=0.117585 0.000000 0.000000 +jointlshoulder=0.117585 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.010472 +[frame10] +jointhip=-0.156629 0.000000 0.000000 +jointlthigh=-0.186490 0.000000 0.000000 +jointlknee=-0.468045 0.000000 0.000000 +jointlankle=0.656928 0.000000 0.000000 +jointrthigh=0.301094 0.000000 0.000000 +jointrknee=-1.315069 0.000000 0.000000 +jointrankle=0.405091 0.000000 0.000000 +jointrshoulder=0.156629 0.000000 0.000000 +jointlshoulder=0.156629 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.026180 +[frame17] +jointhip=-0.208689 0.000000 0.000000 +jointlthigh=-0.535144 0.000000 0.000000 +jointlknee=-0.429251 0.000000 0.000000 +jointlankle=-0.277879 0.000000 0.000000 +jointrthigh=0.733611 0.000000 0.000000 +jointrknee=-0.461245 0.000000 0.000000 +jointrankle=0.195510 0.000000 0.000000 +jointrshoulder=0.208689 0.000000 0.000000 +jointlshoulder=0.208689 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.013090 +[frame47] +jointhip=-0.208689 0.000000 0.000000 +jointlthigh=-0.532673 0.000000 0.000000 +jointlknee=-0.436212 0.000000 0.000000 +jointlankle=-0.273442 0.000000 0.000000 +jointrthigh=0.733611 0.000000 0.000000 +jointrknee=-0.461245 0.000000 0.000000 +jointrankle=0.195510 0.000000 0.000000 +jointrshoulder=0.208689 0.000000 0.000000 +jointlshoulder=0.208689 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.013090 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame5=0.000000 -5.350000 11.643741 +frame10=0.000000 -5.350000 14.028008 +frame17=0.000000 -5.350000 16.229568 +frame47=0.000000 -5.350000 14.639702 + +[KeyJointPos] +frame1=0.000000 -0.273276 0.000000 +frame5=-0.060987 -0.385267 0.000000 +frame10=-0.157327 -0.200748 0.000000 +frame17=-0.080946 -0.025365 0.000000 +frame47=-0.080946 -0.025365 0.000000 diff --git a/CONTENT/BT/ANIMS/LOKWRRI.ANI b/CONTENT/BT/ANIMS/LOKWRRI.ANI new file mode 100644 index 0000000..bf209b3 --- /dev/null +++ b/CONTENT/BT/ANIMS/LOKWRRI.ANI @@ -0,0 +1,106 @@ +[LAB_ONLY] + +[HEADER] +framecount=6 +framerate=30 +skeletonfile=lok.skl +jointcount=8 + +[Time] +frame1=0 +frame5=0.133333 +frame10=0.3 +frame14=0.433333 +frame17=0.533333 +frame47=1.53333 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=0.395614 0.000000 0.000000 +jointlknee=-0.220767 0.000000 0.000000 +jointlankle=0.133954 0.000000 0.000000 +jointrthigh=-0.491890 0.000000 0.000000 +jointrknee=-0.472590 0.000000 0.000000 +jointrankle=0.630289 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame5] +jointlthigh=0.320418 0.000000 0.000000 +jointlknee=-0.607221 0.000000 0.000000 +jointlankle=0.287135 0.000000 0.000000 +jointrthigh=-0.077469 0.000000 0.000000 +jointrknee=-1.233869 0.000000 0.000000 +jointrankle=-0.163836 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.007854 +jointshakey=0.000000 0.000000 0.007854 +[frame10] +jointlthigh=-0.195562 0.000000 0.000000 +jointlknee=-0.439601 0.000000 0.000000 +jointlankle=0.636202 0.000000 0.000000 +jointrthigh=0.301094 0.000000 0.000000 +jointrknee=-1.315069 0.000000 0.000000 +jointrankle=0.405091 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.015708 +jointshakey=0.000000 0.000000 0.015708 +[frame14] +jointlthigh=-0.295852 0.000000 0.000000 +jointlknee=-0.837882 0.000000 0.000000 +jointlankle=0.418120 0.000000 0.000000 +jointrthigh=0.548246 0.000000 0.000000 +jointrknee=-0.827170 0.000000 0.000000 +jointrankle=0.285330 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.011968 +jointshakey=0.000000 0.000000 0.011968 +[frame17] +jointlthigh=-0.536050 0.000000 0.000000 +jointlknee=-0.423270 0.000000 0.000000 +jointlankle=-0.283956 0.000000 0.000000 +jointrthigh=0.733611 0.000000 0.000000 +jointrknee=-0.461245 0.000000 0.000000 +jointrankle=0.195510 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.009163 +jointshakey=0.000000 0.000000 0.009163 +[frame47] +jointlthigh=-0.538853 0.000000 0.000000 +jointlknee=-0.415233 0.000000 0.000000 +jointlankle=-0.289011 0.000000 0.000000 +jointrthigh=0.733611 0.000000 0.000000 +jointrknee=-0.461245 0.000000 0.000000 +jointrankle=0.195508 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.009163 +jointshakey=0.000000 0.000000 0.009163 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame5=0.000000 -5.350000 11.643741 +frame10=0.000000 -5.350000 14.028008 +frame14=0.000000 -5.350000 16.229568 +frame17=0.000000 -5.350000 16.229568 +frame47=0.000000 -5.350000 14.639702 + +[KeyJointPos] +frame1=0.000000 -0.273276 0.000000 +frame5=0.000000 -0.384948 0.000000 +frame10=0.000000 -0.198689 0.000000 +frame14=0.000000 -0.099344 0.000000 +frame17=0.000000 -0.024836 0.000000 +frame47=0.000000 -0.024836 0.000000 diff --git a/CONTENT/BT/ANIMS/LOKWSLI.ANI b/CONTENT/BT/ANIMS/LOKWSLI.ANI new file mode 100644 index 0000000..8662bb8 --- /dev/null +++ b/CONTENT/BT/ANIMS/LOKWSLI.ANI @@ -0,0 +1,94 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=lok.skl +jointcount=8 + +[Time] +frame1=0 +frame7=0.2 +frame12=0.366667 +frame17=0.533333 +frame22=0.7 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=-0.488771 0.000000 0.000000 +jointlknee=-0.480292 0.000000 0.000000 +jointlankle=0.634804 0.000000 0.000000 +jointrthigh=0.395614 0.000000 0.000000 +jointrknee=-0.220767 0.000000 0.000000 +jointrankle=0.133954 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame7] +jointlthigh=-0.150568 0.000000 0.000000 +jointlknee=-1.044379 0.000000 0.000000 +jointlankle=0.668538 0.000000 0.000000 +jointrthigh=0.254865 0.000000 0.000000 +jointrknee=-0.120479 0.000000 0.000000 +jointrankle=-0.057184 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.006188 +jointshakey=0.000000 0.000000 -0.006188 +[frame12] +jointlthigh=-0.027415 0.000000 0.000000 +jointlknee=-0.976342 0.000000 0.000000 +jointlankle=0.616031 0.000000 0.000000 +jointrthigh=0.166625 0.000000 0.000000 +jointrknee=-0.162448 0.000000 0.000000 +jointrankle=-0.004668 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.011345 +jointshakey=0.000000 0.000000 -0.011345 +[frame17] +jointlthigh=0.057597 0.000000 0.000000 +jointlknee=-0.727137 0.000000 0.000000 +jointlankle=0.611028 0.000000 0.000000 +jointrthigh=0.105456 0.000000 0.000000 +jointrknee=-0.187485 0.000000 0.000000 +jointrankle=0.082065 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.005672 +jointshakey=0.000000 0.000000 -0.005672 +[frame22] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame7=0.000000 -5.350000 3.921542 +frame12=0.000000 -5.350000 3.921547 +frame17=0.000000 -5.350000 2.201397 +frame22=0.000000 -5.350000 1.080609 + +[KeyJointPos] +frame1=0.000000 -0.273189 0.000000 +frame7=0.000000 -0.205463 0.000000 +frame12=0.000000 -0.149024 0.000000 +frame17=0.000000 -0.074512 0.000000 +frame22=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/LOKWSRI.ANI b/CONTENT/BT/ANIMS/LOKWSRI.ANI new file mode 100644 index 0000000..960c160 --- /dev/null +++ b/CONTENT/BT/ANIMS/LOKWSRI.ANI @@ -0,0 +1,94 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=lok.skl +jointcount=8 + +[Time] +frame1=0 +frame7=0.2 +frame12=0.366667 +frame17=0.533333 +frame22=0.7 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=0.395614 0.000000 0.000000 +jointlknee=-0.220767 0.000000 0.000000 +jointlankle=0.133954 0.000000 0.000000 +jointrthigh=-0.488771 0.000000 0.000000 +jointrknee=-0.480292 0.000000 0.000000 +jointrankle=0.634804 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame7] +jointlthigh=0.254865 0.000000 0.000000 +jointlknee=-0.120479 0.000000 0.000000 +jointlankle=-0.057184 0.000000 0.000000 +jointrthigh=-0.150568 0.000000 0.000000 +jointrknee=-1.044379 0.000000 0.000000 +jointrankle=0.668538 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.006188 +jointshakey=0.000000 0.000000 0.006188 +[frame12] +jointlthigh=0.187099 0.000000 0.000000 +jointlknee=-0.208450 0.000000 0.000000 +jointlankle=0.018567 0.000000 0.000000 +jointrthigh=-0.030099 0.000000 0.000000 +jointrknee=-0.967366 0.000000 0.000000 +jointrankle=0.609624 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.011345 +jointshakey=0.000000 0.000000 0.011345 +[frame17] +jointlthigh=0.109106 0.000000 0.000000 +jointlknee=-0.194308 0.000000 0.000000 +jointlankle=0.083546 0.000000 0.000000 +jointrthigh=0.057598 0.000000 0.000000 +jointrknee=-0.727141 0.000000 0.000000 +jointrankle=0.611031 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.005672 +jointshakey=0.000000 0.000000 0.005672 +[frame22] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame7=0.000000 -5.350000 3.921542 +frame12=0.000000 -5.350000 3.921547 +frame17=0.000000 -5.350000 2.201397 +frame22=0.000000 -5.350000 1.080609 + +[KeyJointPos] +frame1=0.000000 -0.273189 0.000000 +frame7=0.000000 -0.205463 0.000000 +frame12=0.000000 -0.149024 0.000000 +frame17=0.000000 -0.074512 0.000000 +frame22=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/LOKWWL.ANI b/CONTENT/BT/ANIMS/LOKWWL.ANI new file mode 100644 index 0000000..df46191 --- /dev/null +++ b/CONTENT/BT/ANIMS/LOKWWL.ANI @@ -0,0 +1,76 @@ +[LAB_ONLY] + +[HEADER] +framecount=4 +framerate=30 +skeletonfile=lok.skl +jointcount=7 + +[Time] +frame1=0 +frame4=0.1 +frame9=0.266667 +frame13=0.4 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate + +[frame1] +jointlthigh=-0.491890 0.000000 0.000000 +jointlknee=-0.472590 0.000000 0.000000 +jointlankle=0.630289 0.000000 0.000000 +jointrthigh=0.395614 0.000000 0.000000 +jointrknee=-0.220767 0.000000 0.000000 +jointrankle=0.133954 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame4] +jointlthigh=-0.126581 0.000000 0.000000 +jointlknee=-1.117190 0.000000 0.000000 +jointlankle=-0.265688 0.000000 0.000000 +jointrthigh=0.176339 0.000000 0.000000 +jointrknee=-0.201414 0.000000 0.000000 +jointrankle=0.024431 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.017453 +[frame9] +jointlthigh=0.296118 0.000000 0.000000 +jointlknee=-1.254241 0.000000 0.000000 +jointlankle=0.620185 0.000000 0.000000 +jointrthigh=-0.243920 0.000000 0.000000 +jointrknee=-0.299546 0.000000 0.000000 +jointrankle=0.543405 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.013090 +[frame13] +jointlthigh=0.395614 0.000000 0.000000 +jointlknee=-0.220767 0.000000 0.000000 +jointlankle=0.133954 0.000000 0.000000 +jointrthigh=-0.488196 0.000000 0.000000 +jointrknee=-0.483620 0.000000 0.000000 +jointrankle=0.651607 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame4=0.000000 -5.350000 14.534702 +frame9=0.000000 -5.350000 14.400597 +frame13=0.000000 -5.350000 14.646976 + +[KeyJointPos] +frame1=0.000000 -0.273276 0.000000 +frame4=0.105758 -0.149948 0.000000 +frame9=0.080296 -0.075032 0.000000 +frame13=0.000000 -0.273189 0.000000 diff --git a/CONTENT/BT/ANIMS/LOKWWLI.ANI b/CONTENT/BT/ANIMS/LOKWWLI.ANI new file mode 100644 index 0000000..651cc81 --- /dev/null +++ b/CONTENT/BT/ANIMS/LOKWWLI.ANI @@ -0,0 +1,82 @@ +[LAB_ONLY] + +[HEADER] +framecount=4 +framerate=30 +skeletonfile=lok.skl +jointcount=8 + +[Time] +frame1=0 +frame4=0.1 +frame9=0.266667 +frame13=0.4 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=-0.491890 0.000000 0.000000 +jointlknee=-0.472590 0.000000 0.000000 +jointlankle=0.630289 0.000000 0.000000 +jointrthigh=0.395614 0.000000 0.000000 +jointrknee=-0.220767 0.000000 0.000000 +jointrankle=0.133954 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame4] +jointlthigh=-0.133885 0.000000 0.000000 +jointlknee=-1.101011 0.000000 0.000000 +jointlankle=-0.274800 0.000000 0.000000 +jointrthigh=0.165597 0.000000 0.000000 +jointrknee=-0.179633 0.000000 0.000000 +jointrankle=0.014138 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.011345 +jointshakey=0.000000 0.000000 -0.011345 +[frame9] +jointlthigh=0.296118 0.000000 0.000000 +jointlknee=-1.254241 0.000000 0.000000 +jointlankle=0.620185 0.000000 0.000000 +jointrthigh=-0.254172 0.000000 0.000000 +jointrknee=-0.270229 0.000000 0.000000 +jointrankle=0.523918 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.009163 +jointshakey=0.000000 0.000000 -0.009163 +[frame13] +jointlthigh=0.395614 0.000000 0.000000 +jointlknee=-0.220767 0.000000 0.000000 +jointlankle=0.133954 0.000000 0.000000 +jointrthigh=-0.488196 0.000000 0.000000 +jointrknee=-0.483620 0.000000 0.000000 +jointrankle=0.651607 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame4=0.000000 -5.350000 14.534702 +frame9=0.000000 -5.350000 14.400597 +frame13=0.000000 -5.350000 14.646976 + +[KeyJointPos] +frame1=0.000000 -0.273276 0.000000 +frame4=0.000000 -0.149024 0.000000 +frame9=0.000000 -0.074506 0.000000 +frame13=0.000000 -0.273189 0.000000 diff --git a/CONTENT/BT/ANIMS/LOKWWR.ANI b/CONTENT/BT/ANIMS/LOKWWR.ANI new file mode 100644 index 0000000..f114d8c --- /dev/null +++ b/CONTENT/BT/ANIMS/LOKWWR.ANI @@ -0,0 +1,76 @@ +[LAB_ONLY] + +[HEADER] +framecount=4 +framerate=30 +skeletonfile=lok.skl +jointcount=7 + +[Time] +frame1=0 +frame4=0.1 +frame9=0.266667 +frame13=0.4 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate + +[frame1] +jointlthigh=0.395614 0.000000 0.000000 +jointlknee=-0.220767 0.000000 0.000000 +jointlankle=0.133954 0.000000 0.000000 +jointrthigh=-0.491890 0.000000 0.000000 +jointrknee=-0.472590 0.000000 0.000000 +jointrankle=0.630289 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame4] +jointlthigh=0.170555 0.000000 0.000000 +jointlknee=-0.186947 0.000000 0.000000 +jointlankle=0.016811 0.000000 0.000000 +jointrthigh=-0.133886 0.000000 0.000000 +jointrknee=-1.101006 0.000000 0.000000 +jointrankle=-0.274804 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.017453 +[frame9] +jointlthigh=-0.245446 0.000000 0.000000 +jointlknee=-0.293273 0.000000 0.000000 +jointlankle=0.539197 0.000000 0.000000 +jointrthigh=0.296118 0.000000 0.000000 +jointrknee=-1.254241 0.000000 0.000000 +jointrankle=0.620185 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.013090 +[frame13] +jointlthigh=-0.488196 0.000000 0.000000 +jointlknee=-0.483620 0.000000 0.000000 +jointlankle=0.651607 0.000000 0.000000 +jointrthigh=0.395614 0.000000 0.000000 +jointrknee=-0.220767 0.000000 0.000000 +jointrankle=0.133954 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame4=0.000000 -5.350000 14.534702 +frame9=0.000000 -5.350000 14.400597 +frame13=0.000000 -5.350000 14.646976 + +[KeyJointPos] +frame1=0.000000 -0.273276 0.000000 +frame4=-0.105758 -0.149948 0.000000 +frame9=-0.080296 -0.075032 0.000000 +frame13=0.000000 -0.273189 0.000000 diff --git a/CONTENT/BT/ANIMS/LOKWWRI.ANI b/CONTENT/BT/ANIMS/LOKWWRI.ANI new file mode 100644 index 0000000..fc4b09e --- /dev/null +++ b/CONTENT/BT/ANIMS/LOKWWRI.ANI @@ -0,0 +1,82 @@ +[LAB_ONLY] + +[HEADER] +framecount=4 +framerate=30 +skeletonfile=lok.skl +jointcount=8 + +[Time] +frame1=0 +frame4=0.1 +frame9=0.266667 +frame13=0.4 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=0.395614 0.000000 0.000000 +jointlknee=-0.220767 0.000000 0.000000 +jointlankle=0.133954 0.000000 0.000000 +jointrthigh=-0.491890 0.000000 0.000000 +jointrknee=-0.472590 0.000000 0.000000 +jointrankle=0.630289 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame4] +jointlthigh=0.147616 0.000000 0.000000 +jointlknee=-0.129438 0.000000 0.000000 +jointlankle=-0.015679 0.000000 0.000000 +jointrthigh=-0.141287 0.000000 0.000000 +jointrknee=-1.084371 0.000000 0.000000 +jointrankle=-0.284291 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.011345 +jointshakey=0.000000 0.000000 0.011345 +[frame9] +jointlthigh=-0.255354 0.000000 0.000000 +jointlknee=-0.265047 0.000000 0.000000 +jointlankle=0.520209 0.000000 0.000000 +jointrthigh=0.296118 0.000000 0.000000 +jointrknee=-1.254241 0.000000 0.000000 +jointrankle=0.620185 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.009163 +jointshakey=0.000000 0.000000 0.009163 +[frame13] +jointlthigh=-0.488196 0.000000 0.000000 +jointlknee=-0.483620 0.000000 0.000000 +jointlankle=0.651607 0.000000 0.000000 +jointrthigh=0.395614 0.000000 0.000000 +jointrknee=-0.220767 0.000000 0.000000 +jointrankle=0.133954 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame4=0.000000 -5.350000 14.534702 +frame9=0.000000 -5.350000 14.400597 +frame13=0.000000 -5.350000 14.646976 + +[KeyJointPos] +frame1=0.000000 -0.273276 0.000000 +frame4=0.000000 -0.149024 0.000000 +frame9=0.000000 -0.074506 0.000000 +frame13=0.000000 -0.273189 0.000000 diff --git a/CONTENT/BT/ANIMS/MADBMP.ANI b/CONTENT/BT/ANIMS/MADBMP.ANI new file mode 100644 index 0000000..69d656f --- /dev/null +++ b/CONTENT/BT/ANIMS/MADBMP.ANI @@ -0,0 +1,110 @@ +[LAB_ONLY] + +[HEADER] +framecount=3 +framerate=30 +skeletonfile=mad.skl +jointcount=16 + +[Time] +frame1=0 +frame8=0.233333 +frame15=0.466667 + +[JointIndices] +jointlocal=0 +jointhip=1 +jointrshoulder=4 +jointlshoulder=6 +jointlknee=11 +jointlthigh=10 +jointrknee=17 +jointrankle=18 +jointrinnertoe=20 +jointrbacktoe=19 +jointroutertoe=21 +jointrthigh=16 +jointloutertoe=14 +jointlbacktoe=13 +jointlinnertoe=15 +jointlankle=12 + +[JointType] +jointlocal=balltranslate +jointhip=hingex +jointrshoulder=hingex +jointlshoulder=hingex +jointlknee=hingex +jointlthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointrinnertoe=hingex +jointrbacktoe=hingex +jointroutertoe=hingex +jointrthigh=hingex +jointloutertoe=hingex +jointlbacktoe=hingex +jointlinnertoe=hingex +jointlankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointhip=-0.193679 0.000000 0.000000 +jointrshoulder=0.193679 0.000000 0.000000 +jointlshoulder=0.193679 0.000000 0.000000 +jointlknee=-0.815243 0.000000 0.000000 +jointlthigh=-0.557059 0.000000 0.000000 +jointrknee=-0.131127 0.000000 0.000000 +jointrankle=0.052430 0.000000 0.000000 +jointrinnertoe=-0.314596 0.000000 0.000000 +jointrbacktoe=-0.717941 0.000000 0.000000 +jointroutertoe=-0.314596 0.000000 0.000000 +jointrthigh=1.080533 0.000000 0.000000 +jointloutertoe=-0.733736 0.000000 0.000000 +jointlbacktoe=0.627778 0.000000 0.000000 +jointlinnertoe=-0.732578 0.000000 0.000000 +jointlankle=0.129235 0.000000 0.000000 +[frame8] +jointlocal=0.000000 0.000000 0.000000 +jointhip=0.436332 0.000000 0.000000 +jointrshoulder=0.000000 0.000000 0.000000 +jointlshoulder=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 0.000000 +jointrbacktoe=0.000000 0.000000 0.000000 +jointroutertoe=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 0.000000 +jointlbacktoe=0.000000 0.000000 0.000000 +jointlinnertoe=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +[frame15] +jointlocal=0.000000 0.000000 0.000000 +jointhip=0.000000 0.000000 0.000000 +jointrshoulder=0.000000 0.000000 0.000000 +jointlshoulder=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 0.000000 +jointrbacktoe=0.000000 0.000000 0.000000 +jointroutertoe=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 0.000000 +jointlbacktoe=0.000000 0.000000 0.000000 +jointlinnertoe=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame8=0.000000 -5.364000 0.000000 +frame15=0.000000 -5.364000 0.000000 + +[KeyJointPos] +frame1=0.000000 0.743033 0.000000 +frame8=0.000000 0.000000 0.000000 +frame15=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/MADGSLI.ANI b/CONTENT/BT/ANIMS/MADGSLI.ANI new file mode 100644 index 0000000..c3a7821 --- /dev/null +++ b/CONTENT/BT/ANIMS/MADGSLI.ANI @@ -0,0 +1,160 @@ +[LAB_ONLY] + +[HEADER] +framecount=8 +framerate=30 +skeletonfile=mad.skl +jointcount=11 + +[Time] +frame1=0 +frame4=0.1 +frame7=0.2 +frame10=0.3 +frame13=0.4 +frame17=0.533333 +frame21=0.666667 +frame25=0.8 + +[JointIndices] +jointlocal=0 +jointlknee=11 +jointlthigh=10 +jointrknee=17 +jointrankle=18 +jointrthigh=16 +jointloutertoe=14 +jointlbacktoe=13 +jointlinnertoe=15 +jointlankle=12 +jointshakey=3 + +[JointType] +jointlocal=balltranslate +jointlknee=hingex +jointlthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointrthigh=hingex +jointloutertoe=hingex +jointlbacktoe=hingex +jointlinnertoe=hingex +jointlankle=hingex +jointshakey=ball + +[frame1] +jointlocal=0.000000 0.000000 -0.015708 +jointlknee=0.624845 0.000000 0.000000 +jointlthigh=-0.688908 0.000000 0.000000 +jointrknee=0.164190 0.000000 0.000000 +jointrankle=-0.104642 0.000000 0.000000 +jointrthigh=-0.055603 0.000000 0.000000 +jointloutertoe=-1.156281 0.000000 0.000000 +jointlbacktoe=0.646453 0.000000 0.000000 +jointlinnertoe=-1.156281 0.000000 0.000000 +jointlankle=-0.601941 0.000000 0.000000 +jointshakey=0.000000 0.000000 -0.015708 +[frame4] +jointlocal=0.000000 0.000000 -0.013744 +jointlknee=0.639649 0.000000 0.000000 +jointlthigh=-0.681898 0.000000 0.000000 +jointrknee=0.107575 0.000000 0.000000 +jointrankle=0.061760 0.000000 0.000000 +jointrthigh=-0.162317 0.000000 0.000000 +jointloutertoe=-1.156281 0.000000 0.000000 +jointlbacktoe=0.646453 0.000000 0.000000 +jointlinnertoe=-1.156281 0.000000 0.000000 +jointlankle=-0.516602 0.000000 0.000000 +jointshakey=0.000000 0.000000 -0.013744 +[frame7] +jointlocal=0.000000 0.000000 -0.011781 +jointlknee=0.654453 0.000000 0.000000 +jointlthigh=-0.674887 0.000000 0.000000 +jointrknee=0.025968 0.000000 0.000000 +jointrankle=0.155107 0.000000 0.000000 +jointrthigh=-0.179694 0.000000 0.000000 +jointloutertoe=-1.156281 0.000000 0.000000 +jointlbacktoe=0.646453 0.000000 0.000000 +jointlinnertoe=-1.156281 0.000000 0.000000 +jointlankle=-0.431262 0.000000 0.000000 +jointshakey=0.000000 0.000000 -0.011781 +[frame10] +jointlocal=0.000000 0.000000 -0.009817 +jointlknee=0.654830 0.000000 0.000000 +jointlthigh=-0.647667 0.000000 0.000000 +jointrknee=-0.004694 0.000000 0.000000 +jointrankle=0.192683 0.000000 0.000000 +jointrthigh=-0.186794 0.000000 0.000000 +jointloutertoe=-0.900055 0.000000 0.000000 +jointlbacktoe=0.503202 0.000000 0.000000 +jointlinnertoe=-0.900055 0.000000 0.000000 +jointlankle=-0.345923 0.000000 0.000000 +jointshakey=0.000000 0.000000 -0.009817 +[frame13] +jointlocal=0.000000 0.000000 -0.007854 +jointlknee=0.595505 0.000000 0.000000 +jointlthigh=-0.554510 0.000000 0.000000 +jointrknee=-0.012814 0.000000 0.000000 +jointrankle=0.181539 0.000000 0.000000 +jointrthigh=-0.167016 0.000000 0.000000 +jointloutertoe=-0.643830 0.000000 0.000000 +jointlbacktoe=0.359952 0.000000 0.000000 +jointlinnertoe=-0.643830 0.000000 0.000000 +jointlankle=-0.263634 0.000000 0.000000 +jointshakey=0.000000 0.000000 -0.007854 +[frame17] +jointlocal=0.000000 0.000000 -0.005236 +jointlknee=0.416737 0.000000 0.000000 +jointlthigh=-0.353160 0.000000 0.000000 +jointrknee=-0.023641 0.000000 0.000000 +jointrankle=0.166681 0.000000 0.000000 +jointrthigh=-0.140645 0.000000 0.000000 +jointloutertoe=-0.302197 0.000000 0.000000 +jointlbacktoe=0.168952 0.000000 0.000000 +jointlinnertoe=-0.302197 0.000000 0.000000 +jointlankle=-0.200647 0.000000 0.000000 +jointshakey=0.000000 0.000000 -0.005236 +[frame21] +jointlocal=0.000000 0.000000 -0.002618 +jointlknee=0.147888 0.000000 0.000000 +jointlthigh=-0.132173 0.000000 0.000000 +jointrknee=-0.011821 0.000000 0.000000 +jointrankle=0.083341 0.000000 0.000000 +jointrthigh=-0.070322 0.000000 0.000000 +jointloutertoe=-0.074884 0.000000 0.000000 +jointlbacktoe=0.034765 0.000000 0.000000 +jointlinnertoe=-0.074884 0.000000 0.000000 +jointlankle=-0.081259 0.000000 0.000000 +jointshakey=0.000000 0.000000 -0.002618 +[frame25] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 0.000000 +jointlbacktoe=0.000000 0.000000 0.000000 +jointlinnertoe=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame4=0.034515 -5.360000 5.741997 +frame7=0.034515 -5.360000 2.842979 +frame10=0.034515 -5.360000 1.192016 +frame13=0.034515 -5.360000 0.097008 +frame17=0.034515 -5.360000 -1.144495 +frame21=0.034515 -5.360000 -2.652769 +frame25=0.034515 -5.360000 -2.432242 + +[KeyJointPos] +frame1=0.000000 -0.190440 0.000000 +frame4=0.000000 -0.131726 0.000000 +frame7=0.000000 -0.073012 0.000000 +frame10=0.000000 -0.055344 0.000000 +frame13=0.000000 -0.037676 0.000000 +frame17=0.000000 -0.014119 0.000000 +frame21=0.000000 -0.007060 0.000000 +frame25=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/MADGSRI.ANI b/CONTENT/BT/ANIMS/MADGSRI.ANI new file mode 100644 index 0000000..5c441d1 --- /dev/null +++ b/CONTENT/BT/ANIMS/MADGSRI.ANI @@ -0,0 +1,160 @@ +[LAB_ONLY] + +[HEADER] +framecount=8 +framerate=30 +skeletonfile=mad.skl +jointcount=11 + +[Time] +frame1=0 +frame4=0.1 +frame7=0.2 +frame10=0.3 +frame13=0.4 +frame17=0.533333 +frame21=0.666667 +frame25=0.8 + +[JointIndices] +jointlocal=0 +jointlknee=11 +jointlthigh=10 +jointrknee=17 +jointrankle=18 +jointrinnertoe=20 +jointrbacktoe=19 +jointroutertoe=21 +jointrthigh=16 +jointlankle=12 +jointshakey=3 + +[JointType] +jointlocal=balltranslate +jointlknee=hingex +jointlthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointrinnertoe=hingex +jointrbacktoe=hingex +jointroutertoe=hingex +jointrthigh=hingex +jointlankle=hingex +jointshakey=ball + +[frame1] +jointlocal=0.000000 0.000000 0.015708 +jointlknee=0.164190 0.000000 0.000000 +jointlthigh=-0.055603 0.000000 0.000000 +jointrknee=0.624845 0.000000 0.000000 +jointrankle=-0.601941 0.000000 0.000000 +jointrinnertoe=-1.156281 0.000000 0.000000 +jointrbacktoe=0.646453 0.000000 0.000000 +jointroutertoe=-1.156281 0.000000 0.000000 +jointrthigh=-0.688908 0.000000 0.000000 +jointlankle=-0.104642 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.015708 +[frame4] +jointlocal=0.000000 0.000000 0.013744 +jointlknee=0.140489 0.000000 0.000000 +jointlthigh=-0.180649 0.000000 0.000000 +jointrknee=0.639649 0.000000 0.000000 +jointrankle=-0.516602 0.000000 0.000000 +jointrinnertoe=-1.156281 0.000000 0.000000 +jointrbacktoe=0.646453 0.000000 0.000000 +jointroutertoe=-1.156281 0.000000 0.000000 +jointrthigh=-0.681898 0.000000 0.000000 +jointlankle=0.040697 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.013744 +[frame7] +jointlocal=0.000000 0.000000 0.011781 +jointlknee=-0.000379 0.000000 0.000000 +jointlthigh=-0.162719 0.000000 0.000000 +jointrknee=0.654453 0.000000 0.000000 +jointrankle=-0.431262 0.000000 0.000000 +jointrinnertoe=-1.156281 0.000000 0.000000 +jointrbacktoe=0.646453 0.000000 0.000000 +jointroutertoe=-1.156281 0.000000 0.000000 +jointrthigh=-0.674887 0.000000 0.000000 +jointlankle=0.167199 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.011781 +[frame10] +jointlocal=0.000000 0.000000 0.009817 +jointlknee=-0.000316 0.000000 0.000000 +jointlthigh=-0.135599 0.000000 0.000000 +jointrknee=0.654830 0.000000 0.000000 +jointrankle=-0.345923 0.000000 0.000000 +jointrinnertoe=-0.900055 0.000000 0.000000 +jointrbacktoe=0.503202 0.000000 0.000000 +jointroutertoe=-0.900055 0.000000 0.000000 +jointrthigh=-0.647667 0.000000 0.000000 +jointlankle=0.139332 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.009817 +[frame13] +jointlocal=0.000000 0.000000 0.007854 +jointlknee=-0.000253 0.000000 0.000000 +jointlthigh=-0.108479 0.000000 0.000000 +jointrknee=0.595505 0.000000 0.000000 +jointrankle=-0.263634 0.000000 0.000000 +jointrinnertoe=-0.643830 0.000000 0.000000 +jointrbacktoe=0.359952 0.000000 0.000000 +jointroutertoe=-0.643830 0.000000 0.000000 +jointrthigh=-0.554510 0.000000 0.000000 +jointlankle=0.111466 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.007854 +[frame17] +jointlocal=0.000000 0.000000 0.005236 +jointlknee=-0.000169 0.000000 0.000000 +jointlthigh=-0.072320 0.000000 0.000000 +jointrknee=0.416737 0.000000 0.000000 +jointrankle=-0.200647 0.000000 0.000000 +jointrinnertoe=-0.302197 0.000000 0.000000 +jointrbacktoe=0.168952 0.000000 0.000000 +jointroutertoe=-0.302197 0.000000 0.000000 +jointrthigh=-0.353160 0.000000 0.000000 +jointlankle=0.074310 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.005236 +[frame21] +jointlocal=0.000000 0.000000 0.002618 +jointlknee=-0.000084 0.000000 0.000000 +jointlthigh=-0.036160 0.000000 0.000000 +jointrknee=0.147888 0.000000 0.000000 +jointrankle=-0.081259 0.000000 0.000000 +jointrinnertoe=-0.074884 0.000000 0.000000 +jointrbacktoe=0.034765 0.000000 0.000000 +jointroutertoe=-0.074884 0.000000 0.000000 +jointrthigh=-0.132173 0.000000 0.000000 +jointlankle=0.037155 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.002618 +[frame25] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 0.000000 +jointrbacktoe=0.000000 0.000000 0.000000 +jointroutertoe=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame4=0.034515 -5.360000 5.741997 +frame7=0.034515 -5.360000 2.842979 +frame10=0.034515 -5.360000 1.192016 +frame13=0.034515 -5.360000 0.097008 +frame17=0.034515 -5.360000 -1.144495 +frame21=0.034515 -5.360000 -2.652769 +frame25=0.034515 -5.360000 -2.432242 + +[KeyJointPos] +frame1=0.000000 -0.190440 0.000000 +frame4=0.000000 -0.131726 0.000000 +frame7=0.000000 -0.073012 0.000000 +frame10=0.000000 -0.055344 0.000000 +frame13=0.000000 -0.037676 0.000000 +frame17=0.000000 -0.014119 0.000000 +frame21=0.000000 -0.007060 0.000000 +frame25=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/OWNBMP.ANI b/CONTENT/BT/ANIMS/OWNBMP.ANI new file mode 100644 index 0000000..1184a56 --- /dev/null +++ b/CONTENT/BT/ANIMS/OWNBMP.ANI @@ -0,0 +1,80 @@ +[LAB_ONLY] + +[HEADER] +framecount=3 +framerate=30 +skeletonfile=own.skl +jointcount=10 + +[Time] +frame1=0 +frame8=0.233333 +frame15=0.466667 + +[JointIndices] +jointlocal=0 +jointhip=1 +jointlknee=10 +jointlbacktoe=11 +jointlthigh=9 +jointrknee=14 +jointrbacktoe=15 +jointrthigh=13 +jointlfronttoe=12 +jointrfronttoe=16 + +[JointType] +jointlocal=balltranslate +jointhip=hingex +jointlknee=hingex +jointlbacktoe=hingex +jointlthigh=hingex +jointrknee=hingex +jointrbacktoe=hingex +jointrthigh=hingex +jointlfronttoe=hingex +jointrfronttoe=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointhip=0.000000 0.000000 0.000000 +jointlknee=0.321645 0.000000 0.000000 +jointlbacktoe=0.953948 0.000000 0.000000 +jointlthigh=-1.297094 0.000000 0.000000 +jointrknee=-0.027914 0.000000 0.000000 +jointrbacktoe=0.446546 0.000000 0.000000 +jointrthigh=0.895050 0.000000 0.000000 +jointlfronttoe=-1.340985 0.000000 0.000000 +jointrfronttoe=0.106965 0.000000 0.000000 +[frame8] +jointlocal=0.000000 0.000000 0.000000 +jointhip=0.436332 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlbacktoe=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrbacktoe=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointlfronttoe=0.000000 0.000000 0.000000 +jointrfronttoe=0.000000 0.000000 0.000000 +[frame15] +jointlocal=0.000000 0.000000 0.000000 +jointhip=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlbacktoe=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrbacktoe=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointlfronttoe=0.000000 0.000000 0.000000 +jointrfronttoe=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame8=0.000000 -5.358000 0.000000 +frame15=0.000000 -5.358000 0.000000 + +[KeyJointPos] +frame1=0.000000 0.343465 0.000000 +frame8=0.000000 0.000000 0.000000 +frame15=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/OWNBMPI.ANI b/CONTENT/BT/ANIMS/OWNBMPI.ANI new file mode 100644 index 0000000..1184a56 --- /dev/null +++ b/CONTENT/BT/ANIMS/OWNBMPI.ANI @@ -0,0 +1,80 @@ +[LAB_ONLY] + +[HEADER] +framecount=3 +framerate=30 +skeletonfile=own.skl +jointcount=10 + +[Time] +frame1=0 +frame8=0.233333 +frame15=0.466667 + +[JointIndices] +jointlocal=0 +jointhip=1 +jointlknee=10 +jointlbacktoe=11 +jointlthigh=9 +jointrknee=14 +jointrbacktoe=15 +jointrthigh=13 +jointlfronttoe=12 +jointrfronttoe=16 + +[JointType] +jointlocal=balltranslate +jointhip=hingex +jointlknee=hingex +jointlbacktoe=hingex +jointlthigh=hingex +jointrknee=hingex +jointrbacktoe=hingex +jointrthigh=hingex +jointlfronttoe=hingex +jointrfronttoe=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointhip=0.000000 0.000000 0.000000 +jointlknee=0.321645 0.000000 0.000000 +jointlbacktoe=0.953948 0.000000 0.000000 +jointlthigh=-1.297094 0.000000 0.000000 +jointrknee=-0.027914 0.000000 0.000000 +jointrbacktoe=0.446546 0.000000 0.000000 +jointrthigh=0.895050 0.000000 0.000000 +jointlfronttoe=-1.340985 0.000000 0.000000 +jointrfronttoe=0.106965 0.000000 0.000000 +[frame8] +jointlocal=0.000000 0.000000 0.000000 +jointhip=0.436332 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlbacktoe=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrbacktoe=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointlfronttoe=0.000000 0.000000 0.000000 +jointrfronttoe=0.000000 0.000000 0.000000 +[frame15] +jointlocal=0.000000 0.000000 0.000000 +jointhip=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlbacktoe=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrbacktoe=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointlfronttoe=0.000000 0.000000 0.000000 +jointrfronttoe=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame8=0.000000 -5.358000 0.000000 +frame15=0.000000 -5.358000 0.000000 + +[KeyJointPos] +frame1=0.000000 0.343465 0.000000 +frame8=0.000000 0.000000 0.000000 +frame15=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/OWNBSLI.ANI b/CONTENT/BT/ANIMS/OWNBSLI.ANI new file mode 100644 index 0000000..44b31ad --- /dev/null +++ b/CONTENT/BT/ANIMS/OWNBSLI.ANI @@ -0,0 +1,108 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=own.skl +jointcount=10 + +[Time] +frame1=0 +frame9=0.266667 +frame17=0.533333 +frame19=0.6 +frame34=1.1 + +[JointIndices] +jointlocal=0 +jointlknee=10 +jointlbacktoe=11 +jointlthigh=9 +jointrknee=14 +jointrbacktoe=15 +jointrthigh=13 +jointlfronttoe=12 +jointrfronttoe=16 +jointshakey=2 + +[JointType] +jointlocal=balltranslate +jointlknee=hingex +jointlbacktoe=hingex +jointlthigh=hingex +jointrknee=hingex +jointrbacktoe=hingex +jointrthigh=hingex +jointlfronttoe=hingex +jointrfronttoe=hingex +jointshakey=ball + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.202610 0.000000 0.000000 +jointlbacktoe=-0.150596 0.000000 0.000000 +jointlthigh=0.269856 0.000000 0.000000 +jointrknee=-0.402567 0.000000 0.000000 +jointrbacktoe=1.267285 0.000000 0.000000 +jointrthigh=-0.558622 0.000000 0.000000 +jointlfronttoe=-0.191019 0.000000 0.000000 +jointrfronttoe=0.566965 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame9] +jointlocal=0.000000 0.000000 -0.004581 +jointlknee=0.382989 0.000000 0.000000 +jointlbacktoe=-0.139678 0.000000 0.000000 +jointlthigh=0.045494 0.000000 0.000000 +jointrknee=-0.214847 0.000000 0.000000 +jointrbacktoe=0.994103 0.000000 0.000000 +jointrthigh=-0.484514 0.000000 0.000000 +jointlfronttoe=-0.343863 0.000000 0.000000 +jointrfronttoe=0.695543 0.000000 0.000000 +jointshakey=0.000000 0.000000 -0.004581 +[frame17] +jointlocal=0.000000 0.000000 -0.009163 +jointlknee=0.563369 0.000000 0.000000 +jointlbacktoe=-0.128760 0.000000 0.000000 +jointlthigh=-0.178868 0.000000 0.000000 +jointrknee=0.136129 0.000000 0.000000 +jointrbacktoe=0.587057 0.000000 0.000000 +jointrthigh=-0.520059 0.000000 0.000000 +jointlfronttoe=-0.496706 0.000000 0.000000 +jointrfronttoe=0.350207 0.000000 0.000000 +jointshakey=0.000000 0.000000 -0.009163 +[frame19] +jointlocal=0.000000 0.000000 -0.008085 +jointlknee=0.608464 0.000000 0.000000 +jointlbacktoe=-0.126030 0.000000 0.000000 +jointlthigh=-0.234958 0.000000 0.000000 +jointrknee=0.223873 0.000000 0.000000 +jointrbacktoe=0.485296 0.000000 0.000000 +jointrthigh=-0.528945 0.000000 0.000000 +jointlfronttoe=-0.534917 0.000000 0.000000 +jointrfronttoe=0.263873 0.000000 0.000000 +jointshakey=0.000000 0.000000 -0.008085 +[frame34] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlbacktoe=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrbacktoe=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointlfronttoe=0.000000 0.000000 0.000000 +jointrfronttoe=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame9=0.009189 -5.358000 -5.761916 +frame17=0.001838 -5.358000 -5.761918 +frame19=0.000000 -5.358000 -5.761915 +frame34=0.000000 -5.358310 -5.278521 + +[KeyJointPos] +frame1=0.000000 -0.596416 0.000000 +frame9=0.000000 -0.463698 0.000000 +frame17=0.000000 -0.330981 0.000000 +frame19=0.000000 -0.297801 0.000000 +frame34=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/OWNBSRI.ANI b/CONTENT/BT/ANIMS/OWNBSRI.ANI new file mode 100644 index 0000000..e6543fe --- /dev/null +++ b/CONTENT/BT/ANIMS/OWNBSRI.ANI @@ -0,0 +1,108 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=own.skl +jointcount=10 + +[Time] +frame1=0 +frame9=0.266667 +frame17=0.533333 +frame19=0.6 +frame34=1.1 + +[JointIndices] +jointlocal=0 +jointlknee=10 +jointlbacktoe=11 +jointlthigh=9 +jointrknee=14 +jointrbacktoe=15 +jointrthigh=13 +jointlfronttoe=12 +jointrfronttoe=16 +jointshakey=2 + +[JointType] +jointlocal=balltranslate +jointlknee=hingex +jointlbacktoe=hingex +jointlthigh=hingex +jointrknee=hingex +jointrbacktoe=hingex +jointrthigh=hingex +jointlfronttoe=hingex +jointrfronttoe=hingex +jointshakey=ball + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=-0.402567 0.000000 0.000000 +jointlbacktoe=1.267285 0.000000 0.000000 +jointlthigh=-0.558622 0.000000 0.000000 +jointrknee=0.202610 0.000000 0.000000 +jointrbacktoe=-0.150596 0.000000 0.000000 +jointrthigh=0.269856 0.000000 0.000000 +jointlfronttoe=0.566965 0.000000 0.000000 +jointrfronttoe=-0.191019 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame9] +jointlocal=0.000000 0.000000 0.004581 +jointlknee=-0.215578 0.000000 0.000000 +jointlbacktoe=1.001810 0.000000 0.000000 +jointlthigh=-0.483132 0.000000 0.000000 +jointrknee=0.382989 0.000000 0.000000 +jointrbacktoe=-0.139678 0.000000 0.000000 +jointrthigh=0.045494 0.000000 0.000000 +jointlfronttoe=0.696299 0.000000 0.000000 +jointrfronttoe=-0.343863 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.004581 +[frame17] +jointlocal=0.000000 0.000000 0.009163 +jointlknee=0.135839 0.000000 0.000000 +jointlbacktoe=0.588599 0.000000 0.000000 +jointlthigh=-0.519561 0.000000 0.000000 +jointrknee=0.563369 0.000000 0.000000 +jointrbacktoe=-0.128760 0.000000 0.000000 +jointrthigh=-0.178868 0.000000 0.000000 +jointlfronttoe=0.352476 0.000000 0.000000 +jointrfronttoe=-0.496706 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.009163 +[frame19] +jointlocal=0.000000 0.000000 0.008085 +jointlknee=0.223694 0.000000 0.000000 +jointlbacktoe=0.485296 0.000000 0.000000 +jointlthigh=-0.528669 0.000000 0.000000 +jointrknee=0.608464 0.000000 0.000000 +jointrbacktoe=-0.126030 0.000000 0.000000 +jointrthigh=-0.234958 0.000000 0.000000 +jointlfronttoe=0.266521 0.000000 0.000000 +jointrfronttoe=-0.534917 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.008085 +[frame34] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlbacktoe=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrbacktoe=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointlfronttoe=0.000000 0.000000 0.000000 +jointrfronttoe=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame9=0.009189 -5.358000 -5.761916 +frame17=0.001838 -5.358000 -5.761918 +frame19=0.000000 -5.358000 -5.761915 +frame34=0.000000 -5.358310 -5.278521 + +[KeyJointPos] +frame1=0.000000 -0.596416 0.000000 +frame9=0.000000 -0.463698 0.000000 +frame17=0.000000 -0.330981 0.000000 +frame19=0.000000 -0.297801 0.000000 +frame34=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/OWNGSLI.ANI b/CONTENT/BT/ANIMS/OWNGSLI.ANI new file mode 100644 index 0000000..99aab46 --- /dev/null +++ b/CONTENT/BT/ANIMS/OWNGSLI.ANI @@ -0,0 +1,136 @@ +[LAB_ONLY] + +[HEADER] +framecount=7 +framerate=30 +skeletonfile=own.skl +jointcount=10 + +[Time] +frame1=0 +frame7=0.2 +frame10=0.3 +frame13=0.4 +frame16=0.5 +frame20=0.633333 +frame24=0.766667 + +[JointIndices] +jointlocal=0 +jointlknee=10 +jointlbacktoe=11 +jointlthigh=9 +jointrknee=14 +jointrbacktoe=15 +jointrthigh=13 +jointlfronttoe=12 +jointrfronttoe=16 +jointshakey=2 + +[JointType] +jointlocal=balltranslate +jointlknee=hingex +jointlbacktoe=hingex +jointlthigh=hingex +jointrknee=hingex +jointrbacktoe=hingex +jointrthigh=hingex +jointlfronttoe=hingex +jointrfronttoe=hingex +jointshakey=ball + +[frame1] +jointlocal=0.000000 0.000000 -0.015708 +jointlknee=0.871003 0.000000 0.000000 +jointlbacktoe=0.919717 0.000000 0.000000 +jointlthigh=-1.031730 0.000000 0.000000 +jointrknee=0.635518 0.000000 0.000000 +jointrbacktoe=-0.121204 0.000000 0.000000 +jointrthigh=-0.497855 0.000000 0.000000 +jointlfronttoe=-2.067185 0.000000 0.000000 +jointrfronttoe=-0.211904 0.000000 0.000000 +jointshakey=0.000000 0.000000 -0.015708 +[frame7] +jointlocal=0.000000 0.000000 -0.011610 +jointlknee=0.978864 0.000000 0.000000 +jointlbacktoe=0.756331 0.000000 0.000000 +jointlthigh=-1.074988 0.000000 0.000000 +jointrknee=0.522763 0.000000 0.000000 +jointrbacktoe=-0.003509 0.000000 0.000000 +jointrthigh=-0.472862 0.000000 0.000000 +jointlfronttoe=-1.672722 0.000000 0.000000 +jointrfronttoe=-0.097254 0.000000 0.000000 +jointshakey=0.000000 0.000000 -0.011610 +[frame10] +jointlocal=0.000000 0.000000 -0.009561 +jointlknee=0.984809 0.000000 0.000000 +jointlbacktoe=0.694688 0.000000 0.000000 +jointlthigh=-1.048459 0.000000 0.000000 +jointrknee=0.454274 0.000000 0.000000 +jointrbacktoe=0.025260 0.000000 0.000000 +jointrthigh=-0.440472 0.000000 0.000000 +jointlfronttoe=-1.418087 0.000000 0.000000 +jointrfronttoe=-0.056677 0.000000 0.000000 +jointshakey=0.000000 0.000000 -0.009561 +[frame13] +jointlocal=0.000000 0.000000 -0.007513 +jointlknee=0.917544 0.000000 0.000000 +jointlbacktoe=0.616326 0.000000 0.000000 +jointlthigh=-0.941916 0.000000 0.000000 +jointrknee=0.364875 0.000000 0.000000 +jointrbacktoe=0.025142 0.000000 0.000000 +jointrthigh=-0.374476 0.000000 0.000000 +jointlfronttoe=-1.121475 0.000000 0.000000 +jointrfronttoe=-0.011376 0.000000 0.000000 +jointshakey=0.000000 0.000000 -0.007513 +[frame16] +jointlocal=0.000000 0.000000 -0.005464 +jointlknee=0.733059 0.000000 0.000000 +jointlbacktoe=0.470855 0.000000 0.000000 +jointlthigh=-0.717939 0.000000 0.000000 +jointrknee=0.278527 0.000000 0.000000 +jointrbacktoe=0.041063 0.000000 0.000000 +jointrthigh=-0.290777 0.000000 0.000000 +jointlfronttoe=-0.679698 0.000000 0.000000 +jointrfronttoe=-0.014686 0.000000 0.000000 +jointshakey=0.000000 0.000000 -0.005464 +[frame20] +jointlocal=0.000000 0.000000 -0.002732 +jointlknee=0.403185 0.000000 0.000000 +jointlbacktoe=0.235732 0.000000 0.000000 +jointlthigh=-0.367821 0.000000 0.000000 +jointrknee=0.132656 0.000000 0.000000 +jointrbacktoe=0.002650 0.000000 0.000000 +jointrthigh=-0.140570 0.000000 0.000000 +jointlfronttoe=-0.244425 0.000000 0.000000 +jointrfronttoe=0.002753 0.000000 0.000000 +jointshakey=0.000000 0.000000 -0.002732 +[frame24] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.000814 0.000000 0.000000 +jointlbacktoe=0.000609 0.000000 0.000000 +jointlthigh=-0.000519 0.000000 0.000000 +jointrknee=0.000219 0.000000 0.000000 +jointrbacktoe=0.000012 0.000000 0.000000 +jointrthigh=-0.000137 0.000000 0.000000 +jointlfronttoe=0.000281 0.000000 0.000000 +jointrfronttoe=0.000357 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame7=0.027568 -5.358000 1.746001 +frame10=0.027568 -5.358000 0.986004 +frame13=0.027568 -5.358000 -0.151005 +frame16=0.027557 -5.342380 -1.665993 +frame20=0.027562 -5.350190 -2.713881 +frame24=0.027568 -5.358000 -2.713874 + +[KeyJointPos] +frame1=0.000000 -0.919823 0.000000 +frame7=0.000000 -0.679869 0.000000 +frame10=0.000000 -0.559892 0.000000 +frame13=0.000000 -0.439915 0.000000 +frame16=0.000000 -0.319938 0.000000 +frame20=0.000000 -0.159969 0.000000 +frame24=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/OWNGSRI.ANI b/CONTENT/BT/ANIMS/OWNGSRI.ANI new file mode 100644 index 0000000..e834726 --- /dev/null +++ b/CONTENT/BT/ANIMS/OWNGSRI.ANI @@ -0,0 +1,136 @@ +[LAB_ONLY] + +[HEADER] +framecount=7 +framerate=30 +skeletonfile=own.skl +jointcount=10 + +[Time] +frame1=0 +frame7=0.2 +frame10=0.3 +frame13=0.4 +frame16=0.5 +frame20=0.633333 +frame24=0.766667 + +[JointIndices] +jointlocal=0 +jointlknee=10 +jointlbacktoe=11 +jointlthigh=9 +jointrknee=14 +jointrbacktoe=15 +jointrthigh=13 +jointlfronttoe=12 +jointrfronttoe=16 +jointshakey=2 + +[JointType] +jointlocal=balltranslate +jointlknee=hingex +jointlbacktoe=hingex +jointlthigh=hingex +jointrknee=hingex +jointrbacktoe=hingex +jointrthigh=hingex +jointlfronttoe=hingex +jointrfronttoe=hingex +jointshakey=ball + +[frame1] +jointlocal=0.000000 0.000000 0.015708 +jointlknee=0.635518 0.000000 0.000000 +jointlbacktoe=-0.121204 0.000000 0.000000 +jointlthigh=-0.497855 0.000000 0.000000 +jointrknee=0.871003 0.000000 0.000000 +jointrbacktoe=0.919717 0.000000 0.000000 +jointrthigh=-1.031730 0.000000 0.000000 +jointlfronttoe=-0.211904 0.000000 0.000000 +jointrfronttoe=-2.067185 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.015708 +[frame7] +jointlocal=0.000000 0.000000 0.011610 +jointlknee=0.510954 0.000000 0.000000 +jointlbacktoe=-0.026704 0.000000 0.000000 +jointlthigh=-0.466298 0.000000 0.000000 +jointrknee=0.978864 0.000000 0.000000 +jointrbacktoe=0.756331 0.000000 0.000000 +jointrthigh=-1.074988 0.000000 0.000000 +jointlfronttoe=-0.101545 0.000000 0.000000 +jointrfronttoe=-1.672722 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.011610 +[frame10] +jointlocal=0.000000 0.000000 0.009561 +jointlknee=0.431491 0.000000 0.000000 +jointlbacktoe=-0.000856 0.000000 0.000000 +jointlthigh=-0.423956 0.000000 0.000000 +jointrknee=0.984809 0.000000 0.000000 +jointrbacktoe=0.694688 0.000000 0.000000 +jointrthigh=-1.048459 0.000000 0.000000 +jointlfronttoe=-0.059367 0.000000 0.000000 +jointrfronttoe=-1.418087 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.009561 +[frame13] +jointlocal=0.000000 0.000000 0.007513 +jointlknee=0.364875 0.000000 0.000000 +jointlbacktoe=0.025142 0.000000 0.000000 +jointlthigh=-0.374476 0.000000 0.000000 +jointrknee=0.917544 0.000000 0.000000 +jointrbacktoe=0.616326 0.000000 0.000000 +jointrthigh=-0.941916 0.000000 0.000000 +jointlfronttoe=-0.020722 0.000000 0.000000 +jointrfronttoe=-1.121475 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.007513 +[frame16] +jointlocal=0.000000 0.000000 0.005464 +jointlknee=0.265313 0.000000 0.000000 +jointlbacktoe=0.032123 0.000000 0.000000 +jointlthigh=-0.281139 0.000000 0.000000 +jointrknee=0.733059 0.000000 0.000000 +jointrbacktoe=0.470855 0.000000 0.000000 +jointrthigh=-0.717939 0.000000 0.000000 +jointlfronttoe=-0.016585 0.000000 0.000000 +jointrfronttoe=-0.679698 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.005464 +[frame20] +jointlocal=0.000000 0.000000 0.002732 +jointlknee=0.132656 0.000000 0.000000 +jointlbacktoe=0.016061 0.000000 0.000000 +jointlthigh=-0.140570 0.000000 0.000000 +jointrknee=0.403185 0.000000 0.000000 +jointrbacktoe=0.235427 0.000000 0.000000 +jointrthigh=-0.367821 0.000000 0.000000 +jointlfronttoe=-0.008293 0.000000 0.000000 +jointrfronttoe=-0.244425 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.002732 +[frame24] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlbacktoe=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrbacktoe=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointlfronttoe=0.000000 0.000000 0.000000 +jointrfronttoe=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame7=0.027568 -5.358000 1.746001 +frame10=0.027568 -5.358000 0.986004 +frame13=0.027568 -5.358000 -0.151005 +frame16=0.027557 -5.342380 -1.665993 +frame20=0.027562 -5.350190 -2.713881 +frame24=0.027568 -5.358000 -2.713874 + +[KeyJointPos] +frame1=0.000000 -0.919823 0.000000 +frame7=0.000000 -0.679869 0.000000 +frame10=0.000000 -0.559892 0.000000 +frame13=0.000000 -0.439915 0.000000 +frame16=0.000000 -0.319938 0.000000 +frame20=0.000000 -0.159969 0.000000 +frame24=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/OWNRRL.ANI b/CONTENT/BT/ANIMS/OWNRRL.ANI new file mode 100644 index 0000000..9a4155d --- /dev/null +++ b/CONTENT/BT/ANIMS/OWNRRL.ANI @@ -0,0 +1,153 @@ +[LAB_ONLY] + +[HEADER] +framecount=9 +framerate=30 +skeletonfile=own.skl +jointcount=9 + +[Time] +frame1=0 +frame2=0.0333333 +frame3=0.0666667 +frame4=0.1 +frame5=0.133333 +frame6=0.166667 +frame8=0.233333 +frame10=0.3 +frame14=0.433333 + +[JointIndices] +jointlocal=0 +jointlknee=10 +jointlbacktoe=11 +jointlthigh=9 +jointrknee=14 +jointrbacktoe=15 +jointrthigh=13 +jointlfronttoe=12 +jointrfronttoe=16 + +[JointType] +jointlocal=balltranslate +jointlknee=hingex +jointlbacktoe=hingex +jointlthigh=hingex +jointrknee=hingex +jointrbacktoe=hingex +jointrthigh=hingex +jointlfronttoe=hingex +jointrfronttoe=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=1.370174 0.000000 0.000000 +jointlbacktoe=0.953948 0.000000 0.000000 +jointlthigh=-1.451121 0.000000 0.000000 +jointrknee=-0.101254 0.000000 0.000000 +jointrbacktoe=-0.301059 0.000000 0.000000 +jointrthigh=0.390092 0.000000 0.000000 +jointlfronttoe=-1.340985 0.000000 0.000000 +jointrfronttoe=-0.397036 0.000000 0.000000 +[frame2] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=1.319242 0.000000 0.000000 +jointlbacktoe=0.627011 0.000000 0.000000 +jointlthigh=-1.130204 0.000000 0.000000 +jointrknee=0.430627 0.000000 0.000000 +jointrbacktoe=-0.233981 0.000000 0.000000 +jointrthigh=-0.187618 0.000000 0.000000 +jointlfronttoe=-1.212386 0.000000 0.000000 +jointrfronttoe=-0.216884 0.000000 0.000000 +[frame3] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=1.268310 0.000000 0.000000 +jointlbacktoe=0.300074 0.000000 0.000000 +jointlthigh=-0.809286 0.000000 0.000000 +jointrknee=0.657783 0.000000 0.000000 +jointrbacktoe=0.045131 0.000000 0.000000 +jointrthigh=-0.606184 0.000000 0.000000 +jointlfronttoe=-1.083788 0.000000 0.000000 +jointrfronttoe=-0.036733 0.000000 0.000000 +[frame4] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=1.217378 0.000000 0.000000 +jointlbacktoe=-0.026864 0.000000 0.000000 +jointlthigh=-0.488369 0.000000 0.000000 +jointrknee=0.658727 0.000000 0.000000 +jointrbacktoe=0.435348 0.000000 0.000000 +jointrthigh=-0.879634 0.000000 0.000000 +jointlfronttoe=-0.955189 0.000000 0.000000 +jointrfronttoe=0.143419 0.000000 0.000000 +[frame5] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.975465 0.000000 0.000000 +jointlbacktoe=-0.271256 0.000000 0.000000 +jointlthigh=-0.113093 0.000000 0.000000 +jointrknee=0.380295 0.000000 0.000000 +jointrbacktoe=0.698126 0.000000 0.000000 +jointrthigh=-0.887823 0.000000 0.000000 +jointlfronttoe=-0.671469 0.000000 0.000000 +jointrfronttoe=0.141751 0.000000 0.000000 +[frame6] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.733551 0.000000 0.000000 +jointlbacktoe=-0.515649 0.000000 0.000000 +jointlthigh=0.262183 0.000000 0.000000 +jointrknee=-0.262251 0.000000 0.000000 +jointrbacktoe=0.960905 0.000000 0.000000 +jointrthigh=-0.605416 0.000000 0.000000 +jointlfronttoe=-0.387749 0.000000 0.000000 +jointrfronttoe=0.259647 0.000000 0.000000 +[frame8] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.467589 0.000000 0.000000 +jointlbacktoe=-0.034551 0.000000 0.000000 +jointlthigh=0.631451 0.000000 0.000000 +jointrknee=0.029697 0.000000 0.000000 +jointrbacktoe=0.957427 0.000000 0.000000 +jointrthigh=-0.951255 0.000000 0.000000 +jointlfronttoe=-0.140392 0.000000 0.000000 +jointrfronttoe=-0.540669 0.000000 0.000000 +[frame10] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=-0.027914 0.000000 0.000000 +jointlbacktoe=0.446546 0.000000 0.000000 +jointlthigh=0.895050 0.000000 0.000000 +jointrknee=0.321645 0.000000 0.000000 +jointrbacktoe=0.953948 0.000000 0.000000 +jointrthigh=-1.297094 0.000000 0.000000 +jointlfronttoe=0.106965 0.000000 0.000000 +jointrfronttoe=-1.340985 0.000000 0.000000 +[frame14] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=-0.101254 0.000000 0.000000 +jointlbacktoe=-0.301059 0.000000 0.000000 +jointlthigh=0.390092 0.000000 0.000000 +jointrknee=1.370174 0.000000 0.000000 +jointrbacktoe=0.953948 0.000000 0.000000 +jointrthigh=-1.451121 0.000000 0.000000 +jointlfronttoe=-0.397036 0.000000 0.000000 +jointrfronttoe=-1.340985 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame2=0.000000 -5.358000 49.183956 +frame3=0.000000 -5.358000 49.183956 +frame4=0.000000 -5.358000 49.183964 +frame5=0.000000 -5.358000 48.762123 +frame6=0.000000 -5.358000 48.761906 +frame8=0.000000 -5.358000 50.634846 +frame10=0.000000 -5.358000 50.634720 +frame14=0.000000 -5.358000 50.030998 + +[KeyJointPos] +frame1=0.000000 -0.480851 0.000000 +frame2=0.000000 -0.673574 0.000000 +frame3=0.000000 -0.866295 0.000000 +frame4=0.000000 -1.059018 0.000000 +frame5=0.000000 -0.632548 0.000000 +frame6=0.000000 -0.206079 0.000000 +frame8=0.000000 0.068693 0.000000 +frame10=0.000000 0.343465 0.000000 +frame14=0.000000 -0.480851 0.000000 diff --git a/CONTENT/BT/ANIMS/OWNRRR.ANI b/CONTENT/BT/ANIMS/OWNRRR.ANI new file mode 100644 index 0000000..a013ef1 --- /dev/null +++ b/CONTENT/BT/ANIMS/OWNRRR.ANI @@ -0,0 +1,153 @@ +[LAB_ONLY] + +[HEADER] +framecount=9 +framerate=30 +skeletonfile=own.skl +jointcount=9 + +[Time] +frame1=0 +frame2=0.0333333 +frame3=0.0666667 +frame4=0.1 +frame5=0.133333 +frame6=0.166667 +frame8=0.233333 +frame10=0.3 +frame14=0.433333 + +[JointIndices] +jointlocal=0 +jointlknee=10 +jointlbacktoe=11 +jointlthigh=9 +jointrknee=14 +jointrbacktoe=15 +jointrthigh=13 +jointlfronttoe=12 +jointrfronttoe=16 + +[JointType] +jointlocal=balltranslate +jointlknee=hingex +jointlbacktoe=hingex +jointlthigh=hingex +jointrknee=hingex +jointrbacktoe=hingex +jointrthigh=hingex +jointlfronttoe=hingex +jointrfronttoe=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=-0.101254 0.000000 0.000000 +jointlbacktoe=-0.301059 0.000000 0.000000 +jointlthigh=0.390092 0.000000 0.000000 +jointrknee=1.370174 0.000000 0.000000 +jointrbacktoe=0.953948 0.000000 0.000000 +jointrthigh=-1.451121 0.000000 0.000000 +jointlfronttoe=-0.397036 0.000000 0.000000 +jointrfronttoe=-1.340985 0.000000 0.000000 +[frame2] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.430632 0.000000 0.000000 +jointlbacktoe=-0.234101 0.000000 0.000000 +jointlthigh=-0.187626 0.000000 0.000000 +jointrknee=1.319242 0.000000 0.000000 +jointrbacktoe=0.627011 0.000000 0.000000 +jointrthigh=-1.130204 0.000000 0.000000 +jointlfronttoe=-0.216884 0.000000 0.000000 +jointrfronttoe=-1.212386 0.000000 0.000000 +[frame3] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.657788 0.000000 0.000000 +jointlbacktoe=0.042879 0.000000 0.000000 +jointlthigh=-0.606190 0.000000 0.000000 +jointrknee=1.268310 0.000000 0.000000 +jointrbacktoe=0.300074 0.000000 0.000000 +jointrthigh=-0.809286 0.000000 0.000000 +jointlfronttoe=-0.036733 0.000000 0.000000 +jointrfronttoe=-1.083788 0.000000 0.000000 +[frame4] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.658727 0.000000 0.000000 +jointlbacktoe=0.433946 0.000000 0.000000 +jointlthigh=-0.879634 0.000000 0.000000 +jointrknee=1.217378 0.000000 0.000000 +jointrbacktoe=-0.026864 0.000000 0.000000 +jointrthigh=-0.488369 0.000000 0.000000 +jointlfronttoe=0.143419 0.000000 0.000000 +jointrfronttoe=-0.955189 0.000000 0.000000 +[frame5] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.372485 0.000000 0.000000 +jointlbacktoe=0.697426 0.000000 0.000000 +jointlthigh=-0.885669 0.000000 0.000000 +jointrknee=0.975465 0.000000 0.000000 +jointrbacktoe=-0.271256 0.000000 0.000000 +jointrthigh=-0.113093 0.000000 0.000000 +jointlfronttoe=0.155049 0.000000 0.000000 +jointrfronttoe=-0.671469 0.000000 0.000000 +[frame6] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=-0.262251 0.000000 0.000000 +jointlbacktoe=0.960905 0.000000 0.000000 +jointlthigh=-0.605416 0.000000 0.000000 +jointrknee=0.733551 0.000000 0.000000 +jointrbacktoe=-0.515649 0.000000 0.000000 +jointrthigh=0.262183 0.000000 0.000000 +jointlfronttoe=0.259647 0.000000 0.000000 +jointrfronttoe=-0.387749 0.000000 0.000000 +[frame8] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.029697 0.000000 0.000000 +jointlbacktoe=0.957427 0.000000 0.000000 +jointlthigh=-0.951255 0.000000 0.000000 +jointrknee=0.467589 0.000000 0.000000 +jointrbacktoe=-0.034551 0.000000 0.000000 +jointrthigh=0.631451 0.000000 0.000000 +jointlfronttoe=-0.540669 0.000000 0.000000 +jointrfronttoe=-0.140392 0.000000 0.000000 +[frame10] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.321645 0.000000 0.000000 +jointlbacktoe=0.953948 0.000000 0.000000 +jointlthigh=-1.297094 0.000000 0.000000 +jointrknee=-0.027914 0.000000 0.000000 +jointrbacktoe=0.446546 0.000000 0.000000 +jointrthigh=0.895050 0.000000 0.000000 +jointlfronttoe=-1.340985 0.000000 0.000000 +jointrfronttoe=0.106965 0.000000 0.000000 +[frame14] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=1.370174 0.000000 0.000000 +jointlbacktoe=0.953948 0.000000 0.000000 +jointlthigh=-1.451121 0.000000 0.000000 +jointrknee=-0.101254 0.000000 0.000000 +jointrbacktoe=-0.301059 0.000000 0.000000 +jointrthigh=0.390092 0.000000 0.000000 +jointlfronttoe=-1.340985 0.000000 0.000000 +jointrfronttoe=-0.397036 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame2=0.000000 -5.358000 49.183956 +frame3=0.000000 -5.358000 49.183956 +frame4=0.000000 -5.358000 49.183964 +frame5=0.000000 -5.358000 48.762123 +frame6=0.000000 -5.358000 48.761906 +frame8=0.000000 -5.358000 50.634846 +frame10=0.000000 -5.358000 50.634720 +frame14=0.000000 -5.358000 50.030998 + +[KeyJointPos] +frame1=0.000000 -0.480851 0.000000 +frame2=0.000000 -0.673574 0.000000 +frame3=0.000000 -0.866295 0.000000 +frame4=0.000000 -1.059018 0.000000 +frame5=0.000000 -0.632548 0.000000 +frame6=0.000000 -0.206079 0.000000 +frame8=0.000000 0.068693 0.000000 +frame10=0.000000 0.343465 0.000000 +frame14=0.000000 -0.480851 0.000000 diff --git a/CONTENT/BT/ANIMS/OWNRRRI.ANI b/CONTENT/BT/ANIMS/OWNRRRI.ANI new file mode 100644 index 0000000..b9f5b2a --- /dev/null +++ b/CONTENT/BT/ANIMS/OWNRRRI.ANI @@ -0,0 +1,136 @@ +[LAB_ONLY] + +[HEADER] +framecount=7 +framerate=30 +skeletonfile=own.skl +jointcount=10 + +[Time] +frame1=0 +frame4=0.1 +frame5=0.133333 +frame6=0.166667 +frame8=0.233333 +frame10=0.3 +frame14=0.433333 + +[JointIndices] +jointlocal=0 +jointlknee=10 +jointlbacktoe=11 +jointlthigh=9 +jointrknee=14 +jointrbacktoe=15 +jointrthigh=13 +jointlfronttoe=12 +jointrfronttoe=16 +jointshakey=2 + +[JointType] +jointlocal=balltranslate +jointlknee=hingex +jointlbacktoe=hingex +jointlthigh=hingex +jointrknee=hingex +jointrbacktoe=hingex +jointrthigh=hingex +jointlfronttoe=hingex +jointrfronttoe=hingex +jointshakey=ball + +[frame1] +jointlocal=0.000000 0.000000 0.015708 +jointlknee=-0.101254 0.000000 0.000000 +jointlbacktoe=-0.301059 0.000000 0.000000 +jointlthigh=0.390092 0.000000 0.000000 +jointrknee=1.370174 0.000000 0.000000 +jointrbacktoe=0.953948 0.000000 0.000000 +jointrthigh=-1.451121 0.000000 0.000000 +jointlfronttoe=-0.397036 0.000000 0.000000 +jointrfronttoe=-1.340985 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.015708 +[frame4] +jointlocal=0.000000 0.000000 0.008458 +jointlknee=0.654219 0.000000 0.000000 +jointlbacktoe=0.411264 0.000000 0.000000 +jointlthigh=-0.877981 0.000000 0.000000 +jointrknee=1.217378 0.000000 0.000000 +jointrbacktoe=-0.026864 0.000000 0.000000 +jointrthigh=-0.488369 0.000000 0.000000 +jointlfronttoe=0.143419 0.000000 0.000000 +jointrfronttoe=-0.955189 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.008458 +[frame5] +jointlocal=0.000000 0.000000 0.006042 +jointlknee=0.181455 0.000000 0.000000 +jointlbacktoe=0.686085 0.000000 0.000000 +jointlthigh=-0.746622 0.000000 0.000000 +jointrknee=0.975465 0.000000 0.000000 +jointrbacktoe=-0.271256 0.000000 0.000000 +jointrthigh=-0.113093 0.000000 0.000000 +jointlfronttoe=0.403670 0.000000 0.000000 +jointrfronttoe=-0.671469 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.006042 +[frame6] +jointlocal=0.000000 0.000000 0.003625 +jointlknee=-0.262251 0.000000 0.000000 +jointlbacktoe=0.960905 0.000000 0.000000 +jointlthigh=-0.605416 0.000000 0.000000 +jointrknee=0.733551 0.000000 0.000000 +jointrbacktoe=-0.515649 0.000000 0.000000 +jointrthigh=0.262183 0.000000 0.000000 +jointlfronttoe=0.259647 0.000000 0.000000 +jointrfronttoe=-0.387749 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.003625 +[frame8] +jointlocal=0.000000 0.000000 -0.001208 +jointlknee=0.029697 0.000000 0.000000 +jointlbacktoe=0.957427 0.000000 0.000000 +jointlthigh=-0.951255 0.000000 0.000000 +jointrknee=0.467589 0.000000 0.000000 +jointrbacktoe=-0.034551 0.000000 0.000000 +jointrthigh=0.631451 0.000000 0.000000 +jointlfronttoe=-0.540669 0.000000 0.000000 +jointrfronttoe=-0.140392 0.000000 0.000000 +jointshakey=0.000000 0.000000 -0.001208 +[frame10] +jointlocal=0.000000 0.000000 -0.006042 +jointlknee=0.321645 0.000000 0.000000 +jointlbacktoe=0.953948 0.000000 0.000000 +jointlthigh=-1.297094 0.000000 0.000000 +jointrknee=-0.027914 0.000000 0.000000 +jointrbacktoe=0.446546 0.000000 0.000000 +jointrthigh=0.895050 0.000000 0.000000 +jointlfronttoe=-1.340985 0.000000 0.000000 +jointrfronttoe=0.106965 0.000000 0.000000 +jointshakey=0.000000 0.000000 -0.006042 +[frame14] +jointlocal=0.000000 0.000000 -0.015708 +jointlknee=1.370174 0.000000 0.000000 +jointlbacktoe=0.953948 0.000000 0.000000 +jointlthigh=-1.451121 0.000000 0.000000 +jointrknee=-0.101254 0.000000 0.000000 +jointrbacktoe=-0.301059 0.000000 0.000000 +jointrthigh=0.390092 0.000000 0.000000 +jointlfronttoe=-1.340985 0.000000 0.000000 +jointrfronttoe=-0.397036 0.000000 0.000000 +jointshakey=0.000000 0.000000 -0.015708 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame4=0.000000 -5.358000 49.183960 +frame5=0.000000 -5.358000 48.762123 +frame6=0.000000 -5.358000 48.761906 +frame8=0.000000 -5.358000 50.634846 +frame10=0.000000 -5.358000 50.634720 +frame14=0.000000 -5.358000 50.030998 + +[KeyJointPos] +frame1=0.000000 -0.480851 0.000000 +frame4=0.000000 -1.059018 0.000000 +frame5=0.000000 -0.632548 0.000000 +frame6=0.000000 -0.206079 0.000000 +frame8=0.000000 0.068693 0.000000 +frame10=0.000000 0.343465 0.000000 +frame14=0.000000 -0.480851 0.000000 diff --git a/CONTENT/BT/ANIMS/OWNRWLI.ANI b/CONTENT/BT/ANIMS/OWNRWLI.ANI new file mode 100644 index 0000000..f1bf3af --- /dev/null +++ b/CONTENT/BT/ANIMS/OWNRWLI.ANI @@ -0,0 +1,94 @@ +[LAB_ONLY] + +[HEADER] +framecount=4 +framerate=30 +skeletonfile=own.skl +jointcount=10 + +[Time] +frame1=0 +frame6=0.166667 +frame10=0.3 +frame13=0.4 + +[JointIndices] +jointlocal=0 +jointlknee=10 +jointlbacktoe=11 +jointlthigh=9 +jointrknee=14 +jointrbacktoe=15 +jointrthigh=13 +jointlfronttoe=12 +jointrfronttoe=16 +jointshakey=2 + +[JointType] +jointlocal=balltranslate +jointlknee=hingex +jointlbacktoe=hingex +jointlthigh=hingex +jointrknee=hingex +jointrbacktoe=hingex +jointrthigh=hingex +jointlfronttoe=hingex +jointrfronttoe=hingex +jointshakey=ball + +[frame1] +jointlocal=0.000000 0.000000 -0.015708 +jointlknee=1.370174 0.000000 0.000000 +jointlbacktoe=0.953948 0.000000 0.000000 +jointlthigh=-1.451121 0.000000 0.000000 +jointrknee=-0.101254 0.000000 0.000000 +jointrbacktoe=-0.301059 0.000000 0.000000 +jointrthigh=0.390092 0.000000 0.000000 +jointlfronttoe=-1.340985 0.000000 0.000000 +jointrfronttoe=-0.397036 0.000000 0.000000 +jointshakey=0.000000 0.000000 -0.015708 +[frame6] +jointlocal=0.000000 0.000000 -0.009163 +jointlknee=1.069346 0.000000 0.000000 +jointlbacktoe=0.672058 0.000000 0.000000 +jointlthigh=-0.784260 0.000000 0.000000 +jointrknee=-0.182366 0.000000 0.000000 +jointrbacktoe=0.383901 0.000000 0.000000 +jointrthigh=-0.067605 0.000000 0.000000 +jointlfronttoe=-0.536569 0.000000 0.000000 +jointrfronttoe=0.199911 0.000000 0.000000 +jointshakey=0.000000 0.000000 -0.009163 +[frame10] +jointlocal=0.000000 0.000000 -0.003927 +jointlknee=0.669765 0.000000 0.000000 +jointlbacktoe=0.446546 0.000000 0.000000 +jointlthigh=-0.157993 0.000000 0.000000 +jointrknee=-0.247256 0.000000 0.000000 +jointrbacktoe=0.931868 0.000000 0.000000 +jointrthigh=-0.433761 0.000000 0.000000 +jointlfronttoe=0.106965 0.000000 0.000000 +jointrfronttoe=0.677469 0.000000 0.000000 +jointshakey=0.000000 0.000000 -0.003927 +[frame13] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.202610 0.000000 0.000000 +jointlbacktoe=-0.150596 0.000000 0.000000 +jointlthigh=0.269856 0.000000 0.000000 +jointrknee=-0.435688 0.000000 0.000000 +jointrbacktoe=1.269076 0.000000 0.000000 +jointrthigh=-0.536247 0.000000 0.000000 +jointlfronttoe=-0.191019 0.000000 0.000000 +jointrfronttoe=0.586158 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame6=0.009189 -5.358000 21.937317 +frame10=0.016540 -5.358000 21.937349 +frame13=0.016540 -5.358000 17.457964 + +[KeyJointPos] +frame1=0.000000 -0.480851 0.000000 +frame6=0.000000 -0.404526 0.000000 +frame10=0.000000 -0.343465 0.000000 +frame13=0.000000 -0.595339 0.000000 diff --git a/CONTENT/BT/ANIMS/OWNRWRI.ANI b/CONTENT/BT/ANIMS/OWNRWRI.ANI new file mode 100644 index 0000000..8f6f3ab --- /dev/null +++ b/CONTENT/BT/ANIMS/OWNRWRI.ANI @@ -0,0 +1,94 @@ +[LAB_ONLY] + +[HEADER] +framecount=4 +framerate=30 +skeletonfile=own.skl +jointcount=10 + +[Time] +frame1=0 +frame6=0.166667 +frame10=0.3 +frame13=0.4 + +[JointIndices] +jointlocal=0 +jointlknee=10 +jointlbacktoe=11 +jointlthigh=9 +jointrknee=14 +jointrbacktoe=15 +jointrthigh=13 +jointlfronttoe=12 +jointrfronttoe=16 +jointshakey=2 + +[JointType] +jointlocal=balltranslate +jointlknee=hingex +jointlbacktoe=hingex +jointlthigh=hingex +jointrknee=hingex +jointrbacktoe=hingex +jointrthigh=hingex +jointlfronttoe=hingex +jointrfronttoe=hingex +jointshakey=ball + +[frame1] +jointlocal=0.000000 0.000000 0.015708 +jointlknee=-0.101254 0.000000 0.000000 +jointlbacktoe=-0.301059 0.000000 0.000000 +jointlthigh=0.390092 0.000000 0.000000 +jointrknee=1.370174 0.000000 0.000000 +jointrbacktoe=0.953948 0.000000 0.000000 +jointrthigh=-1.451121 0.000000 0.000000 +jointlfronttoe=-0.397036 0.000000 0.000000 +jointrfronttoe=-1.340985 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.015708 +[frame6] +jointlocal=0.000000 0.000000 0.009163 +jointlknee=-0.182366 0.000000 0.000000 +jointlbacktoe=0.383901 0.000000 0.000000 +jointlthigh=-0.067605 0.000000 0.000000 +jointrknee=1.069346 0.000000 0.000000 +jointrbacktoe=0.672058 0.000000 0.000000 +jointrthigh=-0.784260 0.000000 0.000000 +jointlfronttoe=0.199911 0.000000 0.000000 +jointrfronttoe=-0.536568 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.009163 +[frame10] +jointlocal=0.000000 0.000000 0.003927 +jointlknee=-0.247256 0.000000 0.000000 +jointlbacktoe=0.931868 0.000000 0.000000 +jointlthigh=-0.433761 0.000000 0.000000 +jointrknee=0.669765 0.000000 0.000000 +jointrbacktoe=0.446546 0.000000 0.000000 +jointrthigh=-0.157993 0.000000 0.000000 +jointlfronttoe=0.677469 0.000000 0.000000 +jointrfronttoe=0.106965 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.003927 +[frame13] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=-0.435688 0.000000 0.000000 +jointlbacktoe=1.269076 0.000000 0.000000 +jointlthigh=-0.536247 0.000000 0.000000 +jointrknee=0.202610 0.000000 0.000000 +jointrbacktoe=-0.150596 0.000000 0.000000 +jointrthigh=0.269856 0.000000 0.000000 +jointlfronttoe=0.586324 0.000000 0.000000 +jointrfronttoe=-0.191019 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame6=0.009189 -5.358000 21.937317 +frame10=0.016540 -5.358000 21.937349 +frame13=0.016540 -5.358000 17.457964 + +[KeyJointPos] +frame1=0.000000 -0.480851 0.000000 +frame6=0.000000 -0.404526 0.000000 +frame10=0.000000 -0.343465 0.000000 +frame13=0.000000 -0.595339 0.000000 diff --git a/CONTENT/BT/ANIMS/OWNSQI.ANI b/CONTENT/BT/ANIMS/OWNSQI.ANI new file mode 100644 index 0000000..e69de29 diff --git a/CONTENT/BT/ANIMS/OWNSQT.ANI b/CONTENT/BT/ANIMS/OWNSQT.ANI new file mode 100644 index 0000000..e69de29 diff --git a/CONTENT/BT/ANIMS/OWNSWLI.ANI b/CONTENT/BT/ANIMS/OWNSWLI.ANI new file mode 100644 index 0000000..03b410a --- /dev/null +++ b/CONTENT/BT/ANIMS/OWNSWLI.ANI @@ -0,0 +1,108 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=own.skl +jointcount=10 + +[Time] +frame1=0 +frame16=0.5 +frame17=0.533333 +frame34=1.1 +frame64=2.1 + +[JointIndices] +jointlocal=0 +jointlknee=10 +jointlbacktoe=11 +jointlthigh=9 +jointrknee=14 +jointrbacktoe=15 +jointrthigh=13 +jointlfronttoe=12 +jointrfronttoe=16 +jointshakey=2 + +[JointType] +jointlocal=balltranslate +jointlknee=hingex +jointlbacktoe=hingex +jointlthigh=hingex +jointrknee=hingex +jointrbacktoe=hingex +jointrthigh=hingex +jointlfronttoe=hingex +jointrfronttoe=hingex +jointshakey=ball + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlbacktoe=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrbacktoe=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointlfronttoe=0.000000 0.000000 0.000000 +jointrfronttoe=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame16] +jointlocal=0.000000 0.000000 -0.008590 +jointlknee=0.608464 0.000000 0.000000 +jointlbacktoe=-0.126030 0.000000 0.000000 +jointlthigh=-0.234958 0.000000 0.000000 +jointrknee=0.240016 0.000000 0.000000 +jointrbacktoe=0.485296 0.000000 0.000000 +jointrthigh=-0.537453 0.000000 0.000000 +jointlfronttoe=-0.534917 0.000000 0.000000 +jointrfronttoe=0.263873 0.000000 0.000000 +jointshakey=0.000000 0.000000 -0.008590 +[frame17] +jointlocal=0.000000 0.000000 -0.009163 +jointlknee=0.585916 0.000000 0.000000 +jointlbacktoe=-0.127395 0.000000 0.000000 +jointlthigh=-0.206913 0.000000 0.000000 +jointrknee=0.204317 0.000000 0.000000 +jointrbacktoe=0.528740 0.000000 0.000000 +jointrthigh=-0.538629 0.000000 0.000000 +jointlfronttoe=-0.515812 0.000000 0.000000 +jointrfronttoe=0.280711 0.000000 0.000000 +jointshakey=0.000000 0.000000 -0.009163 +[frame34] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.202610 0.000000 0.000000 +jointlbacktoe=-0.150596 0.000000 0.000000 +jointlthigh=0.269856 0.000000 0.000000 +jointrknee=-0.402567 0.000000 0.000000 +jointrbacktoe=1.267285 0.000000 0.000000 +jointrthigh=-0.558622 0.000000 0.000000 +jointlfronttoe=-0.191019 0.000000 0.000000 +jointrfronttoe=0.566965 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame64] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.202610 0.000000 0.000000 +jointlbacktoe=-0.150596 0.000000 0.000000 +jointlthigh=0.269856 0.000000 0.000000 +jointrknee=-0.383868 0.000000 0.000000 +jointrbacktoe=1.266235 0.000000 0.000000 +jointrthigh=-0.571281 0.000000 0.000000 +jointlfronttoe=-0.191019 0.000000 0.000000 +jointrfronttoe=0.553823 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame16=0.000000 -5.358000 5.278520 +frame17=0.000919 -5.357999 5.761909 +frame34=0.016540 -5.358000 5.761917 +frame64=0.016540 -5.358000 6.160110 + +[KeyJointPos] +frame1=0.000000 0.000000 0.000000 +frame16=0.000000 -0.297801 0.000000 +frame17=0.000000 -0.314392 0.000000 +frame34=0.000000 -0.596416 0.000000 +frame64=0.000000 -0.596416 0.000000 diff --git a/CONTENT/BT/ANIMS/OWNSWRI.ANI b/CONTENT/BT/ANIMS/OWNSWRI.ANI new file mode 100644 index 0000000..cd633ff --- /dev/null +++ b/CONTENT/BT/ANIMS/OWNSWRI.ANI @@ -0,0 +1,108 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=own.skl +jointcount=10 + +[Time] +frame1=0 +frame16=0.5 +frame17=0.533333 +frame34=1.1 +frame64=2.1 + +[JointIndices] +jointlocal=0 +jointlknee=10 +jointlbacktoe=11 +jointlthigh=9 +jointrknee=14 +jointrbacktoe=15 +jointrthigh=13 +jointlfronttoe=12 +jointrfronttoe=16 +jointshakey=2 + +[JointType] +jointlocal=balltranslate +jointlknee=hingex +jointlbacktoe=hingex +jointlthigh=hingex +jointrknee=hingex +jointrbacktoe=hingex +jointrthigh=hingex +jointlfronttoe=hingex +jointrfronttoe=hingex +jointshakey=ball + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlbacktoe=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrbacktoe=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointlfronttoe=0.000000 0.000000 0.000000 +jointrfronttoe=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame16] +jointlocal=0.000000 0.000000 0.008590 +jointlknee=0.231146 0.000000 0.000000 +jointlbacktoe=0.485296 0.000000 0.000000 +jointlthigh=-0.534535 0.000000 0.000000 +jointrknee=0.608464 0.000000 0.000000 +jointrbacktoe=-0.126030 0.000000 0.000000 +jointrthigh=-0.234958 0.000000 0.000000 +jointlfronttoe=0.263873 0.000000 0.000000 +jointrfronttoe=-0.534917 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.008590 +[frame17] +jointlocal=0.000000 0.000000 0.009163 +jointlknee=0.195940 0.000000 0.000000 +jointlbacktoe=0.528740 0.000000 0.000000 +jointlthigh=-0.535873 0.000000 0.000000 +jointrknee=0.585916 0.000000 0.000000 +jointrbacktoe=-0.127395 0.000000 0.000000 +jointrthigh=-0.206913 0.000000 0.000000 +jointlfronttoe=0.280711 0.000000 0.000000 +jointrfronttoe=-0.515812 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.009163 +[frame34] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=-0.402567 0.000000 0.000000 +jointlbacktoe=1.267285 0.000000 0.000000 +jointlthigh=-0.558622 0.000000 0.000000 +jointrknee=0.202610 0.000000 0.000000 +jointrbacktoe=-0.150596 0.000000 0.000000 +jointrthigh=0.269856 0.000000 0.000000 +jointlfronttoe=0.566965 0.000000 0.000000 +jointrfronttoe=-0.191019 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame64] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=-0.383868 0.000000 0.000000 +jointlbacktoe=1.266235 0.000000 0.000000 +jointlthigh=-0.571281 0.000000 0.000000 +jointrknee=0.202610 0.000000 0.000000 +jointrbacktoe=-0.150596 0.000000 0.000000 +jointrthigh=0.269856 0.000000 0.000000 +jointlfronttoe=0.553823 0.000000 0.000000 +jointrfronttoe=-0.191019 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame16=0.000000 -5.358000 5.278520 +frame17=0.000919 -5.357999 5.761909 +frame34=0.016540 -5.358000 5.761917 +frame64=0.016540 -5.358000 6.160110 + +[KeyJointPos] +frame1=0.000000 0.000000 0.000000 +frame16=0.000000 -0.297801 0.000000 +frame17=0.000000 -0.314392 0.000000 +frame34=0.000000 -0.596416 0.000000 +frame64=0.000000 -0.596416 0.000000 diff --git a/CONTENT/BT/ANIMS/OWNWGL.ANI b/CONTENT/BT/ANIMS/OWNWGL.ANI new file mode 100644 index 0000000..1096549 --- /dev/null +++ b/CONTENT/BT/ANIMS/OWNWGL.ANI @@ -0,0 +1,153 @@ +[LAB_ONLY] + +[HEADER] +framecount=9 +framerate=30 +skeletonfile=own.skl +jointcount=9 + +[Time] +frame1=0 +frame4=0.1 +frame8=0.233333 +frame10=0.3 +frame12=0.366667 +frame13=0.4 +frame14=0.433333 +frame16=0.5 +frame46=1.5 + +[JointIndices] +jointlocal=0 +jointlknee=10 +jointlbacktoe=11 +jointlthigh=9 +jointrknee=14 +jointrbacktoe=15 +jointrthigh=13 +jointlfronttoe=12 +jointrfronttoe=16 + +[JointType] +jointlocal=balltranslate +jointlknee=hingex +jointlbacktoe=hingex +jointlthigh=hingex +jointrknee=hingex +jointrbacktoe=hingex +jointrthigh=hingex +jointlfronttoe=hingex +jointrfronttoe=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=-0.402567 0.000000 0.000000 +jointlbacktoe=1.267285 0.000000 0.000000 +jointlthigh=-0.558622 0.000000 0.000000 +jointrknee=0.202610 0.000000 0.000000 +jointrbacktoe=-0.150596 0.000000 0.000000 +jointrthigh=0.269856 0.000000 0.000000 +jointlfronttoe=0.566965 0.000000 0.000000 +jointrfronttoe=-0.191019 0.000000 0.000000 +[frame4] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.069741 0.000000 0.000000 +jointlbacktoe=1.210848 0.000000 0.000000 +jointlthigh=-0.875886 0.000000 0.000000 +jointrknee=0.294149 0.000000 0.000000 +jointrbacktoe=-0.209018 0.000000 0.000000 +jointrthigh=0.121844 0.000000 0.000000 +jointlfronttoe=0.209574 0.000000 0.000000 +jointrfronttoe=-0.313155 0.000000 0.000000 +[frame8] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.564595 0.000000 0.000000 +jointlbacktoe=1.185991 0.000000 0.000000 +jointlthigh=-1.170592 0.000000 0.000000 +jointrknee=0.420432 0.000000 0.000000 +jointrbacktoe=-0.286913 0.000000 0.000000 +jointrthigh=-0.086245 0.000000 0.000000 +jointlfronttoe=-0.266946 0.000000 0.000000 +jointrfronttoe=-0.476004 0.000000 0.000000 +[frame10] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.769896 0.000000 0.000000 +jointlbacktoe=1.126062 0.000000 0.000000 +jointlthigh=-1.250645 0.000000 0.000000 +jointrknee=0.476417 0.000000 0.000000 +jointrbacktoe=-0.283113 0.000000 0.000000 +jointrthigh=-0.186804 0.000000 0.000000 +jointlfronttoe=-0.614331 0.000000 0.000000 +jointrfronttoe=-0.409100 0.000000 0.000000 +[frame12] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.917938 0.000000 0.000000 +jointlbacktoe=1.066133 0.000000 0.000000 +jointlthigh=-1.280094 0.000000 0.000000 +jointrknee=0.540755 0.000000 0.000000 +jointrbacktoe=-0.242576 0.000000 0.000000 +jointrthigh=-0.295130 0.000000 0.000000 +jointlfronttoe=-0.961717 0.000000 0.000000 +jointrfronttoe=-0.345993 0.000000 0.000000 +[frame13] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.960193 0.000000 0.000000 +jointlbacktoe=1.029529 0.000000 0.000000 +jointlthigh=-1.253407 0.000000 0.000000 +jointrknee=0.573723 0.000000 0.000000 +jointrbacktoe=-0.210399 0.000000 0.000000 +jointrthigh=-0.350748 0.000000 0.000000 +jointlfronttoe=-1.238084 0.000000 0.000000 +jointrfronttoe=-0.314440 0.000000 0.000000 +[frame14] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.950838 0.000000 0.000000 +jointlbacktoe=0.992925 0.000000 0.000000 +jointlthigh=-1.198893 0.000000 0.000000 +jointrknee=0.598046 0.000000 0.000000 +jointrbacktoe=-0.178224 0.000000 0.000000 +jointrthigh=-0.401272 0.000000 0.000000 +jointlfronttoe=-1.514452 0.000000 0.000000 +jointrfronttoe=-0.282886 0.000000 0.000000 +[frame16] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.871003 0.000000 0.000000 +jointlbacktoe=0.919717 0.000000 0.000000 +jointlthigh=-1.031730 0.000000 0.000000 +jointrknee=0.640431 0.000000 0.000000 +jointrbacktoe=-0.114631 0.000000 0.000000 +jointrthigh=-0.498843 0.000000 0.000000 +jointlfronttoe=-2.067185 0.000000 0.000000 +jointrfronttoe=-0.225336 0.000000 0.000000 +[frame46] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.871003 0.000000 0.000000 +jointlbacktoe=0.919717 0.000000 0.000000 +jointlthigh=-1.031730 0.000000 0.000000 +jointrknee=0.635518 0.000000 0.000000 +jointrbacktoe=-0.121204 0.000000 0.000000 +jointrthigh=-0.497855 0.000000 0.000000 +jointlfronttoe=-2.067185 0.000000 0.000000 +jointrfronttoe=-0.211904 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame4=0.016540 -5.358000 6.130924 +frame8=0.016540 -5.358000 6.130929 +frame10=0.019297 -5.358000 6.382011 +frame12=0.022054 -5.358000 6.382013 +frame13=0.023432 -5.358000 6.381999 +frame14=0.024811 -5.358000 6.382027 +frame16=0.027568 -5.358000 6.382013 +frame46=0.027568 -5.358000 6.160491 + +[KeyJointPos] +frame1=0.000000 -0.596416 0.000000 +frame4=0.000000 -0.665718 0.000000 +frame8=0.000000 -0.758119 0.000000 +frame10=0.000000 -0.798545 0.000000 +frame12=0.000000 -0.838972 0.000000 +frame13=0.000000 -0.859184 0.000000 +frame14=0.000000 -0.879397 0.000000 +frame16=0.000000 -0.919823 0.000000 +frame46=0.000000 -0.919823 0.000000 diff --git a/CONTENT/BT/ANIMS/OWNWGR.ANI b/CONTENT/BT/ANIMS/OWNWGR.ANI new file mode 100644 index 0000000..b101f8c --- /dev/null +++ b/CONTENT/BT/ANIMS/OWNWGR.ANI @@ -0,0 +1,153 @@ +[LAB_ONLY] + +[HEADER] +framecount=9 +framerate=30 +skeletonfile=own.skl +jointcount=9 + +[Time] +frame1=0 +frame4=0.1 +frame8=0.233333 +frame10=0.3 +frame12=0.366667 +frame13=0.4 +frame14=0.433333 +frame16=0.5 +frame46=1.5 + +[JointIndices] +jointlocal=0 +jointlknee=10 +jointlbacktoe=11 +jointlthigh=9 +jointrknee=14 +jointrbacktoe=15 +jointrthigh=13 +jointlfronttoe=12 +jointrfronttoe=16 + +[JointType] +jointlocal=balltranslate +jointlknee=hingex +jointlbacktoe=hingex +jointlthigh=hingex +jointrknee=hingex +jointrbacktoe=hingex +jointrthigh=hingex +jointlfronttoe=hingex +jointrfronttoe=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.202610 0.000000 0.000000 +jointlbacktoe=-0.150596 0.000000 0.000000 +jointlthigh=0.269856 0.000000 0.000000 +jointrknee=-0.402567 0.000000 0.000000 +jointrbacktoe=1.267285 0.000000 0.000000 +jointrthigh=-0.558622 0.000000 0.000000 +jointlfronttoe=-0.191019 0.000000 0.000000 +jointrfronttoe=0.566965 0.000000 0.000000 +[frame4] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.312796 0.000000 0.000000 +jointlbacktoe=-0.209017 0.000000 0.000000 +jointlthigh=0.110124 0.000000 0.000000 +jointrknee=0.069741 0.000000 0.000000 +jointrbacktoe=1.210848 0.000000 0.000000 +jointrthigh=-0.875886 0.000000 0.000000 +jointlfronttoe=-0.313156 0.000000 0.000000 +jointrfronttoe=0.209574 0.000000 0.000000 +[frame8] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.426257 0.000000 0.000000 +jointlbacktoe=-0.286913 0.000000 0.000000 +jointlthigh=-0.084368 0.000000 0.000000 +jointrknee=0.564595 0.000000 0.000000 +jointrbacktoe=1.185991 0.000000 0.000000 +jointrthigh=-1.170592 0.000000 0.000000 +jointlfronttoe=-0.510727 0.000000 0.000000 +jointrfronttoe=-0.266946 0.000000 0.000000 +[frame10] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.511687 0.000000 0.000000 +jointlbacktoe=-0.243658 0.000000 0.000000 +jointlthigh=-0.207434 0.000000 0.000000 +jointrknee=0.769896 0.000000 0.000000 +jointrbacktoe=1.126062 0.000000 0.000000 +jointrthigh=-1.250645 0.000000 0.000000 +jointlfronttoe=-0.461181 0.000000 0.000000 +jointrfronttoe=-0.614331 0.000000 0.000000 +[frame12] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.579196 0.000000 0.000000 +jointlbacktoe=-0.202097 0.000000 0.000000 +jointlthigh=-0.323090 0.000000 0.000000 +jointrknee=0.917938 0.000000 0.000000 +jointrbacktoe=1.066133 0.000000 0.000000 +jointrthigh=-1.280094 0.000000 0.000000 +jointlfronttoe=-0.392427 0.000000 0.000000 +jointrfronttoe=-0.961717 0.000000 0.000000 +[frame13] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.600707 0.000000 0.000000 +jointlbacktoe=-0.180041 0.000000 0.000000 +jointlthigh=-0.372369 0.000000 0.000000 +jointrknee=0.960193 0.000000 0.000000 +jointrbacktoe=1.029529 0.000000 0.000000 +jointrthigh=-1.253407 0.000000 0.000000 +jointlfronttoe=-0.360758 0.000000 0.000000 +jointrfronttoe=-1.238084 0.000000 0.000000 +[frame14] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.615297 0.000000 0.000000 +jointlbacktoe=-0.157985 0.000000 0.000000 +jointlthigh=-0.417188 0.000000 0.000000 +jointrknee=0.950838 0.000000 0.000000 +jointrbacktoe=0.992925 0.000000 0.000000 +jointrthigh=-1.198893 0.000000 0.000000 +jointlfronttoe=-0.308274 0.000000 0.000000 +jointrfronttoe=-1.514452 0.000000 0.000000 +[frame16] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.638934 0.000000 0.000000 +jointlbacktoe=-0.115169 0.000000 0.000000 +jointlthigh=-0.500187 0.000000 0.000000 +jointrknee=0.871003 0.000000 0.000000 +jointrbacktoe=0.919717 0.000000 0.000000 +jointrthigh=-1.031730 0.000000 0.000000 +jointlfronttoe=-0.222285 0.000000 0.000000 +jointrfronttoe=-2.067185 0.000000 0.000000 +[frame46] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.635518 0.000000 0.000000 +jointlbacktoe=-0.121204 0.000000 0.000000 +jointlthigh=-0.497855 0.000000 0.000000 +jointrknee=0.871003 0.000000 0.000000 +jointrbacktoe=0.919717 0.000000 0.000000 +jointrthigh=-1.031730 0.000000 0.000000 +jointlfronttoe=-0.211904 0.000000 0.000000 +jointrfronttoe=-2.067185 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame4=0.016540 -5.358000 6.130924 +frame8=0.016540 -5.358000 6.130929 +frame10=0.019297 -5.358000 6.382011 +frame12=0.022054 -5.358000 6.382013 +frame13=0.023432 -5.358000 6.381999 +frame14=0.024811 -5.358000 6.382027 +frame16=0.027568 -5.358000 6.382013 +frame46=0.027568 -5.358000 6.160491 + +[KeyJointPos] +frame1=0.000000 -0.596416 0.000000 +frame4=0.000000 -0.665718 0.000000 +frame8=0.000000 -0.758119 0.000000 +frame10=0.000000 -0.798545 0.000000 +frame12=0.000000 -0.838972 0.000000 +frame13=0.000000 -0.859184 0.000000 +frame14=0.000000 -0.879397 0.000000 +frame16=0.000000 -0.919823 0.000000 +frame46=0.000000 -0.919823 0.000000 diff --git a/CONTENT/BT/ANIMS/OWNWSL.ANI b/CONTENT/BT/ANIMS/OWNWSL.ANI new file mode 100644 index 0000000..cd36aef --- /dev/null +++ b/CONTENT/BT/ANIMS/OWNWSL.ANI @@ -0,0 +1,127 @@ +[LAB_ONLY] + +[HEADER] +framecount=7 +framerate=30 +skeletonfile=own.skl +jointcount=9 + +[Time] +frame1=0 +frame3=0.0666667 +frame6=0.166667 +frame9=0.266667 +frame12=0.366667 +frame16=0.5 +frame21=0.666667 + +[JointIndices] +jointlocal=0 +jointlknee=10 +jointlbacktoe=11 +jointlthigh=9 +jointrknee=14 +jointrbacktoe=15 +jointrthigh=13 +jointlfronttoe=12 +jointrfronttoe=16 + +[JointType] +jointlocal=balltranslate +jointlknee=hingex +jointlbacktoe=hingex +jointlthigh=hingex +jointrknee=hingex +jointrbacktoe=hingex +jointrthigh=hingex +jointlfronttoe=hingex +jointrfronttoe=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=-0.435688 0.000000 0.000000 +jointlbacktoe=1.269076 0.000000 0.000000 +jointlthigh=-0.536247 0.000000 0.000000 +jointrknee=0.202610 0.000000 0.000000 +jointrbacktoe=-0.150596 0.000000 0.000000 +jointrthigh=0.269856 0.000000 0.000000 +jointlfronttoe=0.586050 0.000000 0.000000 +jointrfronttoe=-0.191019 0.000000 0.000000 +[frame3] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=-0.111025 0.000000 0.000000 +jointlbacktoe=1.096658 0.000000 0.000000 +jointlthigh=-0.706373 0.000000 0.000000 +jointrknee=0.158097 0.000000 0.000000 +jointrbacktoe=-0.171027 0.000000 0.000000 +jointrthigh=0.253612 0.000000 0.000000 +jointlfronttoe=0.465111 0.000000 0.000000 +jointrfronttoe=-0.220033 0.000000 0.000000 +[frame6] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.149200 0.000000 0.000000 +jointlbacktoe=0.838030 0.000000 0.000000 +jointlthigh=-0.755328 0.000000 0.000000 +jointrknee=0.091327 0.000000 0.000000 +jointrbacktoe=-0.201673 0.000000 0.000000 +jointrthigh=0.229245 0.000000 0.000000 +jointlfronttoe=0.283703 0.000000 0.000000 +jointrfronttoe=-0.263554 0.000000 0.000000 +[frame9] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.396282 0.000000 0.000000 +jointlbacktoe=0.579404 0.000000 0.000000 +jointlthigh=-0.721521 0.000000 0.000000 +jointrknee=0.024556 0.000000 0.000000 +jointrbacktoe=-0.232319 0.000000 0.000000 +jointrthigh=0.204879 0.000000 0.000000 +jointlfronttoe=0.102297 0.000000 0.000000 +jointrfronttoe=-0.307075 0.000000 0.000000 +[frame12] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.392956 0.000000 0.000000 +jointlbacktoe=0.355569 0.000000 0.000000 +jointlthigh=-0.537062 0.000000 0.000000 +jointrknee=0.018417 0.000000 0.000000 +jointrbacktoe=-0.174239 0.000000 0.000000 +jointrthigh=0.153659 0.000000 0.000000 +jointlfronttoe=0.065297 0.000000 0.000000 +jointrfronttoe=-0.230306 0.000000 0.000000 +[frame16] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.206516 0.000000 0.000000 +jointlbacktoe=0.109779 0.000000 0.000000 +jointlthigh=-0.244302 0.000000 0.000000 +jointrknee=0.010232 0.000000 0.000000 +jointrbacktoe=-0.096800 0.000000 0.000000 +jointrthigh=0.085366 0.000000 0.000000 +jointlfronttoe=0.036276 0.000000 0.000000 +jointrfronttoe=-0.127948 0.000000 0.000000 +[frame21] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlbacktoe=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrbacktoe=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointlfronttoe=0.000000 0.000000 0.000000 +jointrfronttoe=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame3=0.016540 -5.358000 4.781999 +frame6=0.016540 -5.358000 4.781990 +frame9=0.016540 -5.358000 4.782009 +frame12=0.012405 -5.358078 3.766995 +frame16=0.006892 -5.358181 3.767009 +frame21=0.000000 -5.358310 3.766994 + +[KeyJointPos] +frame1=0.000000 -0.595339 0.000000 +frame3=0.000000 -0.530798 0.000000 +frame6=0.000000 -0.433986 0.000000 +frame9=0.000000 -0.337174 0.000000 +frame12=0.000000 -0.252881 0.000000 +frame16=0.000000 -0.140489 0.000000 +frame21=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/OWNWSLI.ANI b/CONTENT/BT/ANIMS/OWNWSLI.ANI new file mode 100644 index 0000000..ca763c7 --- /dev/null +++ b/CONTENT/BT/ANIMS/OWNWSLI.ANI @@ -0,0 +1,150 @@ +[LAB_ONLY] + +[HEADER] +framecount=8 +framerate=30 +skeletonfile=own.skl +jointcount=10 + +[Time] +frame1=0 +frame3=0.0666667 +frame6=0.166667 +frame9=0.266667 +frame11=0.333333 +frame12=0.366667 +frame16=0.5 +frame21=0.666667 + +[JointIndices] +jointlocal=0 +jointlknee=10 +jointlbacktoe=11 +jointlthigh=9 +jointrknee=14 +jointrbacktoe=15 +jointrthigh=13 +jointlfronttoe=12 +jointrfronttoe=16 +jointshakey=2 + +[JointType] +jointlocal=balltranslate +jointlknee=hingex +jointlbacktoe=hingex +jointlthigh=hingex +jointrknee=hingex +jointrbacktoe=hingex +jointrthigh=hingex +jointlfronttoe=hingex +jointrfronttoe=hingex +jointshakey=ball + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=-0.435688 0.000000 0.000000 +jointlbacktoe=1.269076 0.000000 0.000000 +jointlthigh=-0.536247 0.000000 0.000000 +jointrknee=0.202610 0.000000 0.000000 +jointrbacktoe=-0.150596 0.000000 0.000000 +jointrthigh=0.269856 0.000000 0.000000 +jointlfronttoe=0.586050 0.000000 0.000000 +jointrfronttoe=-0.191019 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame3] +jointlocal=0.000000 0.000000 -0.002269 +jointlknee=-0.111025 0.000000 0.000000 +jointlbacktoe=1.096658 0.000000 0.000000 +jointlthigh=-0.706373 0.000000 0.000000 +jointrknee=0.158097 0.000000 0.000000 +jointrbacktoe=-0.171027 0.000000 0.000000 +jointrthigh=0.253612 0.000000 0.000000 +jointlfronttoe=0.465111 0.000000 0.000000 +jointrfronttoe=-0.220033 0.000000 0.000000 +jointshakey=0.000000 0.000000 -0.002269 +[frame6] +jointlocal=0.000000 0.000000 -0.005672 +jointlknee=0.149200 0.000000 0.000000 +jointlbacktoe=0.838030 0.000000 0.000000 +jointlthigh=-0.755328 0.000000 0.000000 +jointrknee=0.091327 0.000000 0.000000 +jointrbacktoe=-0.201673 0.000000 0.000000 +jointrthigh=0.229245 0.000000 0.000000 +jointlfronttoe=0.283703 0.000000 0.000000 +jointrfronttoe=-0.263554 0.000000 0.000000 +jointshakey=0.000000 0.000000 -0.005672 +[frame9] +jointlocal=0.000000 0.000000 -0.009076 +jointlknee=0.396282 0.000000 0.000000 +jointlbacktoe=0.579404 0.000000 0.000000 +jointlthigh=-0.721521 0.000000 0.000000 +jointrknee=0.024556 0.000000 0.000000 +jointrbacktoe=-0.232319 0.000000 0.000000 +jointrthigh=0.204879 0.000000 0.000000 +jointlfronttoe=0.102297 0.000000 0.000000 +jointrfronttoe=-0.307075 0.000000 0.000000 +jointshakey=0.000000 0.000000 -0.009076 +[frame11] +jointlocal=0.000000 0.000000 -0.011345 +jointlknee=0.394064 0.000000 0.000000 +jointlbacktoe=0.430181 0.000000 0.000000 +jointlthigh=-0.598548 0.000000 0.000000 +jointrknee=0.020464 0.000000 0.000000 +jointrbacktoe=-0.193599 0.000000 0.000000 +jointrthigh=0.170732 0.000000 0.000000 +jointlfronttoe=0.077630 0.000000 0.000000 +jointrfronttoe=-0.255896 0.000000 0.000000 +jointshakey=0.000000 0.000000 -0.011345 +[frame12] +jointlocal=0.000000 0.000000 -0.010210 +jointlknee=0.392956 0.000000 0.000000 +jointlbacktoe=0.355569 0.000000 0.000000 +jointlthigh=-0.537062 0.000000 0.000000 +jointrknee=0.018417 0.000000 0.000000 +jointrbacktoe=-0.174239 0.000000 0.000000 +jointrthigh=0.153659 0.000000 0.000000 +jointlfronttoe=0.065297 0.000000 0.000000 +jointrfronttoe=-0.230306 0.000000 0.000000 +jointshakey=0.000000 0.000000 -0.010210 +[frame16] +jointlocal=0.000000 0.000000 -0.005672 +jointlknee=0.206516 0.000000 0.000000 +jointlbacktoe=0.109779 0.000000 0.000000 +jointlthigh=-0.244302 0.000000 0.000000 +jointrknee=0.010232 0.000000 0.000000 +jointrbacktoe=-0.096800 0.000000 0.000000 +jointrthigh=0.085366 0.000000 0.000000 +jointlfronttoe=0.036276 0.000000 0.000000 +jointrfronttoe=-0.127948 0.000000 0.000000 +jointshakey=0.000000 0.000000 -0.005672 +[frame21] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlbacktoe=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrbacktoe=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointlfronttoe=0.000000 0.000000 0.000000 +jointrfronttoe=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame3=0.016540 -5.358000 4.781999 +frame6=0.016540 -5.358000 4.781990 +frame9=0.016540 -5.358000 4.782009 +frame11=0.013784 -5.358051 3.767023 +frame12=0.012405 -5.358077 3.766995 +frame16=0.006892 -5.358181 3.767009 +frame21=0.000000 -5.358310 3.766983 + +[KeyJointPos] +frame1=0.000000 -0.595339 0.000000 +frame3=0.000000 -0.530798 0.000000 +frame6=0.000000 -0.433986 0.000000 +frame9=0.000000 -0.337174 0.000000 +frame11=0.000000 -0.280979 0.000000 +frame12=0.000000 -0.252881 0.000000 +frame16=0.000000 -0.140489 0.000000 +frame21=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/OWNWSR.ANI b/CONTENT/BT/ANIMS/OWNWSR.ANI new file mode 100644 index 0000000..393d600 --- /dev/null +++ b/CONTENT/BT/ANIMS/OWNWSR.ANI @@ -0,0 +1,140 @@ +[LAB_ONLY] + +[HEADER] +framecount=8 +framerate=30 +skeletonfile=own.skl +jointcount=9 + +[Time] +frame1=0 +frame3=0.0666667 +frame6=0.166667 +frame9=0.266667 +frame12=0.366667 +frame15=0.466667 +frame16=0.5 +frame21=0.666667 + +[JointIndices] +jointlocal=0 +jointlknee=10 +jointlbacktoe=11 +jointlthigh=9 +jointrknee=14 +jointrbacktoe=15 +jointrthigh=13 +jointlfronttoe=12 +jointrfronttoe=16 + +[JointType] +jointlocal=balltranslate +jointlknee=hingex +jointlbacktoe=hingex +jointlthigh=hingex +jointrknee=hingex +jointrbacktoe=hingex +jointrthigh=hingex +jointlfronttoe=hingex +jointrfronttoe=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.202610 0.000000 0.000000 +jointlbacktoe=-0.150596 0.000000 0.000000 +jointlthigh=0.269856 0.000000 0.000000 +jointrknee=-0.435688 0.000000 0.000000 +jointrbacktoe=1.269076 0.000000 0.000000 +jointrthigh=-0.536247 0.000000 0.000000 +jointlfronttoe=-0.191019 0.000000 0.000000 +jointrfronttoe=0.586050 0.000000 0.000000 +[frame3] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.158097 0.000000 0.000000 +jointlbacktoe=-0.171027 0.000000 0.000000 +jointlthigh=0.253612 0.000000 0.000000 +jointrknee=-0.111025 0.000000 0.000000 +jointrbacktoe=1.096658 0.000000 0.000000 +jointrthigh=-0.706373 0.000000 0.000000 +jointlfronttoe=-0.220033 0.000000 0.000000 +jointrfronttoe=0.465112 0.000000 0.000000 +[frame6] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.091327 0.000000 0.000000 +jointlbacktoe=-0.201673 0.000000 0.000000 +jointlthigh=0.229245 0.000000 0.000000 +jointrknee=0.149200 0.000000 0.000000 +jointrbacktoe=0.838031 0.000000 0.000000 +jointrthigh=-0.755328 0.000000 0.000000 +jointlfronttoe=-0.263554 0.000000 0.000000 +jointrfronttoe=0.283704 0.000000 0.000000 +[frame9] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.024556 0.000000 0.000000 +jointlbacktoe=-0.232319 0.000000 0.000000 +jointlthigh=0.204879 0.000000 0.000000 +jointrknee=0.396282 0.000000 0.000000 +jointrbacktoe=0.579404 0.000000 0.000000 +jointrthigh=-0.721521 0.000000 0.000000 +jointlfronttoe=-0.307075 0.000000 0.000000 +jointrfronttoe=0.102297 0.000000 0.000000 +[frame12] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.018417 0.000000 0.000000 +jointlbacktoe=-0.174239 0.000000 0.000000 +jointlthigh=0.153659 0.000000 0.000000 +jointrknee=0.392956 0.000000 0.000000 +jointrbacktoe=0.355569 0.000000 0.000000 +jointrthigh=-0.537062 0.000000 0.000000 +jointlfronttoe=-0.230306 0.000000 0.000000 +jointrfronttoe=0.065297 0.000000 0.000000 +[frame15] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.012278 0.000000 0.000000 +jointlbacktoe=-0.116160 0.000000 0.000000 +jointlthigh=0.102439 0.000000 0.000000 +jointrknee=0.253126 0.000000 0.000000 +jointrbacktoe=0.131734 0.000000 0.000000 +jointrthigh=-0.317492 0.000000 0.000000 +jointlfronttoe=-0.153537 0.000000 0.000000 +jointrfronttoe=0.043531 0.000000 0.000000 +[frame16] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.010232 0.000000 0.000000 +jointlbacktoe=-0.096800 0.000000 0.000000 +jointlthigh=0.085366 0.000000 0.000000 +jointrknee=0.206516 0.000000 0.000000 +jointrbacktoe=0.109779 0.000000 0.000000 +jointrthigh=-0.244302 0.000000 0.000000 +jointlfronttoe=-0.127948 0.000000 0.000000 +jointrfronttoe=0.036276 0.000000 0.000000 +[frame21] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlbacktoe=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrbacktoe=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointlfronttoe=0.000000 0.000000 0.000000 +jointrfronttoe=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame3=0.016540 -5.358000 4.781999 +frame6=0.016540 -5.358000 4.781990 +frame9=0.016540 -5.358000 4.782009 +frame12=0.012405 -5.358078 3.766995 +frame15=0.008270 -5.358155 3.766995 +frame16=0.006892 -5.358181 3.766995 +frame21=0.000000 -5.358310 3.767005 + +[KeyJointPos] +frame1=0.000000 -0.595339 0.000000 +frame3=0.000000 -0.530798 0.000000 +frame6=0.000000 -0.433986 0.000000 +frame9=0.000000 -0.337174 0.000000 +frame12=0.000000 -0.252881 0.000000 +frame15=0.000000 -0.168587 0.000000 +frame16=0.000000 -0.140489 0.000000 +frame21=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/OWNWWLI.ANI b/CONTENT/BT/ANIMS/OWNWWLI.ANI new file mode 100644 index 0000000..a00b3ff --- /dev/null +++ b/CONTENT/BT/ANIMS/OWNWWLI.ANI @@ -0,0 +1,136 @@ +[LAB_ONLY] + +[HEADER] +framecount=7 +framerate=30 +skeletonfile=own.skl +jointcount=10 + +[Time] +frame1=0 +frame3=0.0666667 +frame6=0.166667 +frame8=0.233333 +frame9=0.266667 +frame12=0.366667 +frame15=0.466667 + +[JointIndices] +jointlocal=0 +jointlknee=10 +jointlbacktoe=11 +jointlthigh=9 +jointrknee=14 +jointrbacktoe=15 +jointrthigh=13 +jointlfronttoe=12 +jointrfronttoe=16 +jointshakey=2 + +[JointType] +jointlocal=balltranslate +jointlknee=hingex +jointlbacktoe=hingex +jointlthigh=hingex +jointrknee=hingex +jointrbacktoe=hingex +jointrthigh=hingex +jointlfronttoe=hingex +jointrfronttoe=hingex +jointshakey=ball + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=-0.435688 0.000000 0.000000 +jointlbacktoe=1.269076 0.000000 0.000000 +jointlthigh=-0.536247 0.000000 0.000000 +jointrknee=0.202610 0.000000 0.000000 +jointrbacktoe=-0.150596 0.000000 0.000000 +jointrthigh=0.269856 0.000000 0.000000 +jointlfronttoe=0.585937 0.000000 0.000000 +jointrfronttoe=-0.191019 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame3] +jointlocal=0.000000 0.000000 -0.003241 +jointlknee=0.355644 0.000000 0.000000 +jointlbacktoe=1.317743 0.000000 0.000000 +jointlthigh=-1.054486 0.000000 0.000000 +jointrknee=0.376992 0.000000 0.000000 +jointrbacktoe=-0.143930 0.000000 0.000000 +jointrthigh=-0.037917 0.000000 0.000000 +jointlfronttoe=-0.061950 0.000000 0.000000 +jointrfronttoe=-0.202524 0.000000 0.000000 +jointshakey=0.000000 0.000000 -0.003241 +[frame6] +jointlocal=0.000000 0.000000 -0.008103 +jointlknee=1.165386 0.000000 0.000000 +jointlbacktoe=1.390743 0.000000 0.000000 +jointlthigh=-1.499377 0.000000 0.000000 +jointrknee=0.638565 0.000000 0.000000 +jointrbacktoe=-0.133930 0.000000 0.000000 +jointrthigh=-0.499576 0.000000 0.000000 +jointlfronttoe=-1.033780 0.000000 0.000000 +jointrfronttoe=-0.219781 0.000000 0.000000 +jointshakey=0.000000 0.000000 -0.008103 +[frame8] +jointlocal=0.000000 0.000000 -0.011345 +jointlknee=1.101359 0.000000 0.000000 +jointlbacktoe=1.076010 0.000000 0.000000 +jointlthigh=-1.022633 0.000000 0.000000 +jointrknee=0.341084 0.000000 0.000000 +jointrbacktoe=0.221521 0.000000 0.000000 +jointrthigh=-0.476046 0.000000 0.000000 +jointlfronttoe=-0.653531 0.000000 0.000000 +jointrfronttoe=0.080808 0.000000 0.000000 +jointshakey=0.000000 0.000000 -0.011345 +[frame9] +jointlocal=0.000000 0.000000 -0.009724 +jointlknee=1.069346 0.000000 0.000000 +jointlbacktoe=0.918644 0.000000 0.000000 +jointlthigh=-0.784260 0.000000 0.000000 +jointrknee=0.192344 0.000000 0.000000 +jointrbacktoe=0.399246 0.000000 0.000000 +jointrthigh=-0.464280 0.000000 0.000000 +jointlfronttoe=-0.463407 0.000000 0.000000 +jointrfronttoe=0.231102 0.000000 0.000000 +jointshakey=0.000000 0.000000 -0.009724 +[frame12] +jointlocal=0.000000 0.000000 -0.004862 +jointlknee=0.581589 0.000000 0.000000 +jointlbacktoe=0.446546 0.000000 0.000000 +jointlthigh=0.159848 0.000000 0.000000 +jointrknee=-0.253877 0.000000 0.000000 +jointrbacktoe=0.932423 0.000000 0.000000 +jointrthigh=-0.428984 0.000000 0.000000 +jointlfronttoe=0.106965 0.000000 0.000000 +jointrfronttoe=0.681984 0.000000 0.000000 +jointshakey=0.000000 0.000000 -0.004862 +[frame15] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.202610 0.000000 0.000000 +jointlbacktoe=-0.150596 0.000000 0.000000 +jointlthigh=0.269856 0.000000 0.000000 +jointrknee=-0.435688 0.000000 0.000000 +jointrbacktoe=1.269076 0.000000 0.000000 +jointrthigh=-0.536247 0.000000 0.000000 +jointlfronttoe=-0.191019 0.000000 0.000000 +jointrfronttoe=0.586050 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame3=0.006616 -5.358000 19.587606 +frame6=0.016540 -5.358000 19.587593 +frame8=0.016540 -5.358000 19.426491 +frame9=0.016540 -5.358000 19.426510 +frame12=0.016540 -5.358000 19.426519 +frame15=0.016540 -5.358000 17.372992 + +[KeyJointPos] +frame1=0.000000 -0.595339 0.000000 +frame3=0.000000 -0.716697 0.000000 +frame6=0.000000 -0.898734 0.000000 +frame8=0.000000 -0.713645 0.000000 +frame9=0.000000 -0.621099 0.000000 +frame12=0.000000 -0.343465 0.000000 +frame15=0.000000 -0.595339 0.000000 diff --git a/CONTENT/BT/ANIMS/OWNWWRI.ANI b/CONTENT/BT/ANIMS/OWNWWRI.ANI new file mode 100644 index 0000000..a50eaa0 --- /dev/null +++ b/CONTENT/BT/ANIMS/OWNWWRI.ANI @@ -0,0 +1,136 @@ +[LAB_ONLY] + +[HEADER] +framecount=7 +framerate=30 +skeletonfile=own.skl +jointcount=10 + +[Time] +frame1=0 +frame3=0.0666667 +frame6=0.166667 +frame8=0.233333 +frame9=0.266667 +frame12=0.366667 +frame15=0.466667 + +[JointIndices] +jointlocal=0 +jointlknee=10 +jointlbacktoe=11 +jointlthigh=9 +jointrknee=14 +jointrbacktoe=15 +jointrthigh=13 +jointlfronttoe=12 +jointrfronttoe=16 +jointshakey=2 + +[JointType] +jointlocal=balltranslate +jointlknee=hingex +jointlbacktoe=hingex +jointlthigh=hingex +jointrknee=hingex +jointrbacktoe=hingex +jointrthigh=hingex +jointlfronttoe=hingex +jointrfronttoe=hingex +jointshakey=ball + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.202610 0.000000 0.000000 +jointlbacktoe=-0.150596 0.000000 0.000000 +jointlthigh=0.269856 0.000000 0.000000 +jointrknee=-0.402567 0.000000 0.000000 +jointrbacktoe=1.267285 0.000000 0.000000 +jointrthigh=-0.558622 0.000000 0.000000 +jointlfronttoe=-0.191019 0.000000 0.000000 +jointrfronttoe=0.566965 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame3] +jointlocal=0.000000 0.000000 0.003241 +jointlknee=0.376992 0.000000 0.000000 +jointlbacktoe=-0.135748 0.000000 0.000000 +jointlthigh=-0.037917 0.000000 0.000000 +jointrknee=0.330447 0.000000 0.000000 +jointrbacktoe=1.316669 0.000000 0.000000 +jointrthigh=-1.027758 0.000000 0.000000 +jointlfronttoe=-0.202524 0.000000 0.000000 +jointrfronttoe=-0.073333 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.003241 +[frame6] +jointlocal=0.000000 0.000000 0.008103 +jointlknee=0.638565 0.000000 0.000000 +jointlbacktoe=-0.113476 0.000000 0.000000 +jointlthigh=-0.499576 0.000000 0.000000 +jointrknee=1.165386 0.000000 0.000000 +jointrbacktoe=1.390743 0.000000 0.000000 +jointrthigh=-1.499377 0.000000 0.000000 +jointlfronttoe=-0.219781 0.000000 0.000000 +jointrfronttoe=-1.033780 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.008103 +[frame8] +jointlocal=0.000000 0.000000 0.011345 +jointlknee=0.341084 0.000000 0.000000 +jointlbacktoe=0.235157 0.000000 0.000000 +jointlthigh=-0.476046 0.000000 0.000000 +jointrknee=1.101359 0.000000 0.000000 +jointrbacktoe=1.076010 0.000000 0.000000 +jointrthigh=-1.022633 0.000000 0.000000 +jointlfronttoe=0.080808 0.000000 0.000000 +jointrfronttoe=-0.653531 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.011345 +[frame9] +jointlocal=0.000000 0.000000 0.009724 +jointlknee=0.192344 0.000000 0.000000 +jointlbacktoe=0.409474 0.000000 0.000000 +jointlthigh=-0.464280 0.000000 0.000000 +jointrknee=1.069346 0.000000 0.000000 +jointrbacktoe=0.918644 0.000000 0.000000 +jointrthigh=-0.784260 0.000000 0.000000 +jointlfronttoe=0.231102 0.000000 0.000000 +jointrfronttoe=-0.463407 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.009724 +[frame12] +jointlocal=0.000000 0.000000 0.004862 +jointlknee=-0.253877 0.000000 0.000000 +jointlbacktoe=0.932423 0.000000 0.000000 +jointlthigh=-0.428984 0.000000 0.000000 +jointrknee=0.581589 0.000000 0.000000 +jointrbacktoe=0.446546 0.000000 0.000000 +jointrthigh=0.159848 0.000000 0.000000 +jointlfronttoe=0.681984 0.000000 0.000000 +jointrfronttoe=0.106965 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.004862 +[frame15] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=-0.435688 0.000000 0.000000 +jointlbacktoe=1.269076 0.000000 0.000000 +jointlthigh=-0.536247 0.000000 0.000000 +jointrknee=0.202610 0.000000 0.000000 +jointrbacktoe=-0.150596 0.000000 0.000000 +jointrthigh=0.269856 0.000000 0.000000 +jointlfronttoe=0.585937 0.000000 0.000000 +jointrfronttoe=-0.191019 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame3=0.016540 -5.358000 19.371056 +frame6=0.016540 -5.358000 19.371061 +frame8=0.011027 -5.358000 19.413000 +frame9=0.008270 -5.358000 19.413006 +frame12=0.000000 -5.358000 19.412996 +frame15=0.000000 -5.358000 17.188999 + +[KeyJointPos] +frame1=0.000000 -0.596416 0.000000 +frame3=0.000000 -0.716503 0.000000 +frame6=0.000000 -0.896633 0.000000 +frame8=0.000000 -0.712313 0.000000 +frame9=0.000000 -0.620152 0.000000 +frame12=0.000000 -0.343671 0.000000 +frame15=0.000000 -0.595339 0.000000 diff --git a/CONTENT/BT/ANIMS/RAPBBL.ANI b/CONTENT/BT/ANIMS/RAPBBL.ANI new file mode 100644 index 0000000..62cf38c --- /dev/null +++ b/CONTENT/BT/ANIMS/RAPBBL.ANI @@ -0,0 +1,164 @@ +[LAB_ONLY] + +[HEADER] +framecount=12 +framerate=30 +skeletonfile=rap.skl +jointcount=7 + +[Time] +frame1=0 +frame3=0.0666667 +frame4=0.1 +frame5=0.133333 +frame6=0.166667 +frame7=0.2 +frame8=0.233333 +frame9=0.266667 +frame10=0.3 +frame11=0.333333 +frame12=0.366667 +frame13=0.4 + +[JointIndices] +jointlocal=0 +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=11 +jointrknee=12 +jointrankle=13 + +[JointType] +jointlocal=balltranslate +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=1.183946 0.000000 0.000000 +jointlknee=-0.503477 0.000000 0.000000 +jointlankle=-0.692461 0.000000 0.000000 +jointrthigh=-0.276916 0.000000 0.000000 +jointrknee=-0.895504 0.000000 0.000000 +jointrankle=0.654434 0.000000 0.000000 +[frame3] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.398691 0.000000 0.000000 +jointlknee=0.309675 0.000000 0.000000 +jointlankle=-0.529182 0.000000 0.000000 +jointrthigh=-0.109790 0.000000 0.000000 +jointrknee=-0.699479 0.000000 0.000000 +jointrankle=0.797893 0.000000 0.000000 +[frame4] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.073093 0.000000 0.000000 +jointlknee=0.408453 0.000000 0.000000 +jointlankle=-0.684071 0.000000 0.000000 +jointrthigh=-0.132522 0.000000 0.000000 +jointrknee=-0.479301 0.000000 0.000000 +jointrankle=0.614241 0.000000 0.000000 +[frame5] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.252504 0.000000 0.000000 +jointlknee=0.507230 0.000000 0.000000 +jointlankle=-0.838959 0.000000 0.000000 +jointrthigh=-0.108415 0.000000 0.000000 +jointrknee=-0.323102 0.000000 0.000000 +jointrankle=0.430927 0.000000 0.000000 +[frame6] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.578102 0.000000 0.000000 +jointlknee=0.606008 0.000000 0.000000 +jointlankle=-0.993848 0.000000 0.000000 +jointrthigh=-0.041056 0.000000 0.000000 +jointrknee=-0.225896 0.000000 0.000000 +jointrankle=0.271280 0.000000 0.000000 +[frame7] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.624366 0.000000 0.000000 +jointlknee=0.475727 0.000000 0.000000 +jointlankle=-1.133028 0.000000 0.000000 +jointrthigh=0.010961 0.000000 0.000000 +jointrknee=-0.078834 0.000000 0.000000 +jointrankle=0.065251 0.000000 0.000000 +[frame8] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.670630 0.000000 0.000000 +jointlknee=0.345447 0.000000 0.000000 +jointlankle=-1.272208 0.000000 0.000000 +jointrthigh=0.111085 0.000000 0.000000 +jointrknee=0.007360 0.000000 0.000000 +jointrankle=-0.114610 0.000000 0.000000 +[frame9] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.716894 0.000000 0.000000 +jointlknee=0.215166 0.000000 0.000000 +jointlankle=-1.411388 0.000000 0.000000 +jointrthigh=0.250118 0.000000 0.000000 +jointrknee=0.044995 0.000000 0.000000 +jointrankle=-0.298872 0.000000 0.000000 +[frame10] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.624950 0.000000 0.000000 +jointlknee=-0.025661 0.000000 0.000000 +jointlankle=-0.930167 0.000000 0.000000 +jointrthigh=0.446059 0.000000 0.000000 +jointrknee=0.008210 0.000000 0.000000 +jointrankle=-0.451375 0.000000 0.000000 +[frame11] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.533007 0.000000 0.000000 +jointlknee=-0.266488 0.000000 0.000000 +jointlankle=-0.448946 0.000000 0.000000 +jointrthigh=0.666782 0.000000 0.000000 +jointrknee=-0.087813 0.000000 0.000000 +jointrankle=-0.582931 0.000000 0.000000 +[frame12] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.441063 0.000000 0.000000 +jointlknee=-0.507315 0.000000 0.000000 +jointlankle=0.032276 0.000000 0.000000 +jointrthigh=0.912317 0.000000 0.000000 +jointrknee=-0.256504 0.000000 0.000000 +jointrankle=-0.658462 0.000000 0.000000 +[frame13] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.349120 0.000000 0.000000 +jointlknee=-0.748142 0.000000 0.000000 +jointlankle=0.513497 0.000000 0.000000 +jointrthigh=1.183946 0.000000 0.000000 +jointrknee=-0.503477 0.000000 0.000000 +jointrankle=-0.692461 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.362000 0.000000 +frame3=0.000000 -5.361790 -21.925505 +frame4=0.000000 -5.361860 -16.562521 +frame5=0.000000 -5.361930 -16.562489 +frame6=0.000000 -5.362000 -16.562492 +frame7=0.000000 -5.362000 -18.501808 +frame8=0.000000 -5.362000 -18.501793 +frame9=0.000000 -5.362000 -18.501785 +frame10=0.000000 -5.362000 -20.081036 +frame11=0.000000 -5.362000 -20.081036 +frame12=0.000000 -5.362000 -20.081020 +frame13=0.000000 -5.362000 -20.081020 + +[KeyJointPos] +frame1=0.000000 -0.350476 0.000000 +frame3=0.000000 -0.015931 0.000000 +frame4=0.000000 0.053129 0.000000 +frame5=0.000000 0.122188 0.000000 +frame6=0.000000 0.191248 0.000000 +frame7=0.000000 0.111568 0.000000 +frame8=0.000000 0.031888 0.000000 +frame9=0.000000 -0.047792 0.000000 +frame10=0.000000 -0.123577 0.000000 +frame11=0.000000 -0.199361 0.000000 +frame12=0.000000 -0.275146 0.000000 +frame13=0.000000 -0.350930 0.000000 diff --git a/CONTENT/BT/ANIMS/RAPBBR.ANI b/CONTENT/BT/ANIMS/RAPBBR.ANI new file mode 100644 index 0000000..dea1b5c --- /dev/null +++ b/CONTENT/BT/ANIMS/RAPBBR.ANI @@ -0,0 +1,164 @@ +[LAB_ONLY] + +[HEADER] +framecount=12 +framerate=30 +skeletonfile=rap.skl +jointcount=7 + +[Time] +frame1=0 +frame3=0.0666667 +frame4=0.1 +frame5=0.133333 +frame6=0.166667 +frame7=0.2 +frame8=0.233333 +frame9=0.266667 +frame10=0.3 +frame11=0.333333 +frame12=0.366667 +frame13=0.4 + +[JointIndices] +jointlocal=0 +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=11 +jointrknee=12 +jointrankle=13 + +[JointType] +jointlocal=balltranslate +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.273434 0.000000 0.000000 +jointlknee=-0.901590 0.000000 0.000000 +jointlankle=0.660736 0.000000 0.000000 +jointrthigh=1.183946 0.000000 0.000000 +jointrknee=-0.503477 0.000000 0.000000 +jointrankle=-0.692461 0.000000 0.000000 +[frame3] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.107479 0.000000 0.000000 +jointlknee=-0.706719 0.000000 0.000000 +jointlankle=0.807569 0.000000 0.000000 +jointrthigh=0.398691 0.000000 0.000000 +jointrknee=0.309675 0.000000 0.000000 +jointrankle=-0.529182 0.000000 0.000000 +[frame4] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.133122 0.000000 0.000000 +jointlknee=-0.479206 0.000000 0.000000 +jointlankle=0.610237 0.000000 0.000000 +jointrthigh=0.073093 0.000000 0.000000 +jointrknee=0.408453 0.000000 0.000000 +jointrankle=-0.684071 0.000000 0.000000 +[frame5] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.107036 0.000000 0.000000 +jointlknee=-0.325050 0.000000 0.000000 +jointlankle=0.431768 0.000000 0.000000 +jointrthigh=-0.252504 0.000000 0.000000 +jointrknee=0.507230 0.000000 0.000000 +jointrankle=-0.838959 0.000000 0.000000 +[frame6] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.041821 0.000000 0.000000 +jointlknee=-0.225980 0.000000 0.000000 +jointlankle=0.265716 0.000000 0.000000 +jointrthigh=-0.578102 0.000000 0.000000 +jointrknee=0.606008 0.000000 0.000000 +jointrankle=-0.993848 0.000000 0.000000 +[frame7] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.010012 0.000000 0.000000 +jointlknee=-0.079862 0.000000 0.000000 +jointlankle=0.066969 0.000000 0.000000 +jointrthigh=-0.624366 0.000000 0.000000 +jointrknee=0.475727 0.000000 0.000000 +jointrankle=-1.133028 0.000000 0.000000 +[frame8] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.110192 0.000000 0.000000 +jointlknee=0.008395 0.000000 0.000000 +jointlankle=-0.117375 0.000000 0.000000 +jointrthigh=-0.670630 0.000000 0.000000 +jointrknee=0.345447 0.000000 0.000000 +jointrankle=-1.272208 0.000000 0.000000 +[frame9] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.254623 0.000000 0.000000 +jointlknee=0.037673 0.000000 0.000000 +jointlankle=-0.287510 0.000000 0.000000 +jointrthigh=-0.716894 0.000000 0.000000 +jointrknee=0.215166 0.000000 0.000000 +jointrankle=-1.411388 0.000000 0.000000 +[frame10] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.445706 0.000000 0.000000 +jointlknee=0.008368 0.000000 0.000000 +jointlankle=-0.453697 0.000000 0.000000 +jointrthigh=-0.683688 0.000000 0.000000 +jointrknee=0.011970 0.000000 0.000000 +jointrankle=-0.894933 0.000000 0.000000 +[frame11] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.667611 0.000000 0.000000 +jointlknee=-0.089555 0.000000 0.000000 +jointlankle=-0.580540 0.000000 0.000000 +jointrthigh=-0.650482 0.000000 0.000000 +jointrknee=-0.191225 0.000000 0.000000 +jointrankle=-0.378478 0.000000 0.000000 +[frame12] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.913551 0.000000 0.000000 +jointlknee=-0.258206 0.000000 0.000000 +jointlankle=-0.655345 0.000000 0.000000 +jointrthigh=-0.463699 0.000000 0.000000 +jointrknee=-0.543365 0.000000 0.000000 +jointrankle=0.137978 0.000000 0.000000 +[frame13] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=1.183948 0.000000 0.000000 +jointlknee=-0.503477 0.000000 0.000000 +jointlankle=-0.692461 0.000000 0.000000 +jointrthigh=-0.276916 0.000000 0.000000 +jointrknee=-0.895504 0.000000 0.000000 +jointrankle=0.654434 0.000000 0.000000 + +[RootTranslation] +frame1=0.000031 -5.362000 0.000000 +frame3=0.000000 -5.362000 -21.990021 +frame4=0.000000 -5.362000 -16.530020 +frame5=0.000000 -5.362000 -16.530016 +frame6=0.000000 -5.362000 -16.529963 +frame7=0.000000 -5.362000 -18.611013 +frame8=0.000000 -5.362000 -18.610985 +frame9=0.000000 -5.362000 -18.610975 +frame10=0.000000 -5.362000 -20.024988 +frame11=0.000000 -5.362000 -20.025045 +frame12=0.000000 -5.362000 -20.024988 +frame13=0.000000 -5.362000 -20.024988 + +[KeyJointPos] +frame1=0.000000 -0.350476 0.000000 +frame3=0.000000 -0.015931 0.000000 +frame4=0.000000 0.053102 0.000000 +frame5=0.000000 0.122135 0.000000 +frame6=0.000000 0.191169 0.000000 +frame7=0.000000 0.111515 0.000000 +frame8=0.000000 0.031862 0.000000 +frame9=0.000000 -0.047792 0.000000 +frame10=0.000000 -0.123463 0.000000 +frame11=0.000000 -0.199134 0.000000 +frame12=0.000000 -0.274805 0.000000 +frame13=0.000000 -0.350476 0.000000 diff --git a/CONTENT/BT/ANIMS/RAPBMP.ANI b/CONTENT/BT/ANIMS/RAPBMP.ANI new file mode 100644 index 0000000..6291361 --- /dev/null +++ b/CONTENT/BT/ANIMS/RAPBMP.ANI @@ -0,0 +1,70 @@ +[LAB_ONLY] + +[HEADER] +framecount=3 +framerate=30 +skeletonfile=rap.skl +jointcount=8 + +[Time] +frame1=0 +frame8=0.233333 +frame15=0.466667 + +[JointIndices] +jointlocal=0 +jointhip=1 +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=11 +jointrknee=12 +jointrankle=13 + +[JointType] +jointlocal=balltranslate +jointhip=hingex +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointhip=0.000000 0.000000 0.000000 +jointlthigh=-0.418821 0.000000 0.000000 +jointlknee=-0.971260 0.000000 0.000000 +jointlankle=-1.320198 0.000000 0.000000 +jointrthigh=1.837011 0.000000 0.000000 +jointrknee=-0.964085 0.000000 0.000000 +jointrankle=-0.053803 0.000000 0.000000 +[frame8] +jointlocal=0.000000 0.000000 0.000000 +jointhip=0.436332 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +[frame15] +jointlocal=0.000000 0.000000 0.000000 +jointhip=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.362000 0.000000 +frame8=0.000000 -5.362000 0.000000 +frame15=0.000000 -5.362000 0.000000 + +[KeyJointPos] +frame1=0.000000 1.030758 0.000000 +frame8=0.000000 0.000000 0.000000 +frame15=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/RAPBMPI.ANI b/CONTENT/BT/ANIMS/RAPBMPI.ANI new file mode 100644 index 0000000..3853136 --- /dev/null +++ b/CONTENT/BT/ANIMS/RAPBMPI.ANI @@ -0,0 +1,75 @@ +[LAB_ONLY] + +[HEADER] +framecount=3 +framerate=30 +skeletonfile=rap.skl +jointcount=9 + +[Time] +frame1=0 +frame8=0.233333 +frame15=0.466667 + +[JointIndices] +jointlocal=0 +jointhip=1 +jointshakey=3 +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=11 +jointrknee=12 +jointrankle=13 + +[JointType] +jointlocal=balltranslate +jointhip=hingex +jointshakey=ball +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointhip=0.000000 0.000000 0.000000 +jointlthigh=-0.418821 0.000000 0.000000 +jointlknee=-0.971260 0.000000 0.000000 +jointlankle=-1.320198 0.000000 0.000000 +jointrthigh=1.837011 0.000000 0.000000 +jointrknee=-0.964085 0.000000 0.000000 +jointrankle=-0.053803 0.000000 0.000000 +[frame8] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointhip=0.436332 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +[frame15] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointhip=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.362000 0.000000 +frame8=0.000000 -5.362000 0.000000 +frame15=0.000000 -5.362000 0.000000 + +[KeyJointPos] +frame1=0.000000 1.030758 0.000000 +frame8=0.000000 0.000000 0.000000 +frame15=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/RAPGSLI.ANI b/CONTENT/BT/ANIMS/RAPGSLI.ANI new file mode 100644 index 0000000..9081edb --- /dev/null +++ b/CONTENT/BT/ANIMS/RAPGSLI.ANI @@ -0,0 +1,118 @@ +[LAB_ONLY] + +[HEADER] +framecount=7 +framerate=30 +skeletonfile=rap.skl +jointcount=8 + +[Time] +frame1=0 +frame6=0.166667 +frame11=0.333333 +frame12=0.366667 +frame17=0.533333 +frame23=0.733333 +frame29=0.933333 + +[JointIndices] +jointlocal=0 +jointshakey=3 +jointrthigh=11 +jointrknee=12 +jointrankle=13 +jointlthigh=8 +jointlknee=9 +jointlankle=10 + +[JointType] +jointlocal=balltranslate +jointshakey=ball +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 -0.015708 +jointshakey=0.000000 0.000000 -0.015708 +jointrthigh=-0.092965 0.000000 0.000000 +jointrknee=-0.234668 0.000000 0.000000 +jointrankle=0.323729 0.000000 0.000000 +jointlthigh=-0.612296 0.000000 0.000000 +jointlknee=-0.087057 0.000000 0.000000 +jointlankle=-1.970442 0.000000 0.000000 +[frame6] +jointlocal=0.000000 0.000000 -0.012903 +jointshakey=0.000000 0.000000 -0.012903 +jointrthigh=-0.232338 0.000000 0.000000 +jointrknee=-0.151913 0.000000 0.000000 +jointrankle=0.399820 0.000000 0.000000 +jointlthigh=-1.200451 0.000000 0.000000 +jointlknee=0.487456 0.000000 0.000000 +jointlankle=-1.381585 0.000000 0.000000 +[frame11] +jointlocal=0.000000 0.000000 -0.010098 +jointshakey=0.000000 0.000000 -0.010098 +jointrthigh=-0.288573 0.000000 0.000000 +jointrknee=-0.062971 0.000000 0.000000 +jointrankle=0.355908 0.000000 0.000000 +jointlthigh=-1.661529 0.000000 0.000000 +jointlknee=0.976344 0.000000 0.000000 +jointlankle=-0.900531 0.000000 0.000000 +[frame12] +jointlocal=0.000000 0.000000 -0.009537 +jointshakey=0.000000 0.000000 -0.009537 +jointrthigh=-0.289623 0.000000 0.000000 +jointrknee=-0.047877 0.000000 0.000000 +jointrankle=0.342128 0.000000 0.000000 +jointlthigh=-1.707007 0.000000 0.000000 +jointlknee=1.044620 0.000000 0.000000 +jointlankle=-0.824160 0.000000 0.000000 +[frame17] +jointlocal=0.000000 0.000000 -0.006732 +jointshakey=0.000000 0.000000 -0.006732 +jointrthigh=-0.294873 0.000000 0.000000 +jointrknee=0.027594 0.000000 0.000000 +jointrankle=0.273231 0.000000 0.000000 +jointlthigh=-1.333983 0.000000 0.000000 +jointlknee=0.904337 0.000000 0.000000 +jointlankle=-0.442308 0.000000 0.000000 +[frame23] +jointlocal=0.000000 0.000000 -0.003366 +jointshakey=0.000000 0.000000 -0.003366 +jointrthigh=-0.146715 0.000000 0.000000 +jointrknee=0.013267 0.000000 0.000000 +jointrankle=0.137972 0.000000 0.000000 +jointlthigh=-0.469528 0.000000 0.000000 +jointlknee=0.435919 0.000000 0.000000 +jointlankle=-0.342685 0.000000 0.000000 +[frame29] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointrthigh=0.001444 0.000000 0.000000 +jointrknee=-0.001060 0.000000 0.000000 +jointrankle=0.002712 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame6=0.000000 -5.358000 2.734200 +frame11=0.000000 -5.358000 -0.616196 +frame12=0.000000 -5.358000 -2.200012 +frame17=0.000000 -5.358000 -2.200001 +frame23=0.000000 -5.358000 -4.012757 +frame29=0.000000 -5.358000 -4.012747 + +[KeyJointPos] +frame1=0.000000 0.722200 0.000000 +frame6=0.000000 0.565202 0.000000 +frame11=0.000000 0.408204 0.000000 +frame12=0.000000 0.382038 0.000000 +frame17=0.000000 0.251206 0.000000 +frame23=0.000000 0.125603 0.000000 +frame29=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/RAPGSRI.ANI b/CONTENT/BT/ANIMS/RAPGSRI.ANI new file mode 100644 index 0000000..ad52c24 --- /dev/null +++ b/CONTENT/BT/ANIMS/RAPGSRI.ANI @@ -0,0 +1,118 @@ +[LAB_ONLY] + +[HEADER] +framecount=7 +framerate=30 +skeletonfile=rap.skl +jointcount=8 + +[Time] +frame1=0 +frame6=0.166667 +frame11=0.333333 +frame12=0.366667 +frame17=0.533333 +frame23=0.733333 +frame29=0.933333 + +[JointIndices] +jointlocal=0 +jointshakey=3 +jointrthigh=11 +jointrknee=12 +jointrankle=13 +jointlthigh=8 +jointlknee=9 +jointlankle=10 + +[JointType] +jointlocal=balltranslate +jointshakey=ball +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.015708 +jointshakey=0.000000 0.000000 0.015708 +jointrthigh=-0.612296 0.000000 0.000000 +jointrknee=-0.087057 0.000000 0.000000 +jointrankle=-1.970442 0.000000 0.000000 +jointlthigh=-0.092965 0.000000 0.000000 +jointlknee=-0.234668 0.000000 0.000000 +jointlankle=0.323729 0.000000 0.000000 +[frame6] +jointlocal=0.000000 0.000000 0.012903 +jointshakey=0.000000 0.000000 0.012903 +jointrthigh=-1.200451 0.000000 0.000000 +jointrknee=0.487456 0.000000 0.000000 +jointrankle=-1.381585 0.000000 0.000000 +jointlthigh=-0.250535 0.000000 0.000000 +jointlknee=-0.130181 0.000000 0.000000 +jointlankle=0.396345 0.000000 0.000000 +[frame11] +jointlocal=0.000000 0.000000 0.010098 +jointshakey=0.000000 0.000000 0.010098 +jointrthigh=-1.661529 0.000000 0.000000 +jointrknee=0.976344 0.000000 0.000000 +jointrankle=-0.900531 0.000000 0.000000 +jointlthigh=-0.302300 0.000000 0.000000 +jointlknee=-0.046811 0.000000 0.000000 +jointlankle=0.353495 0.000000 0.000000 +[frame12] +jointlocal=0.000000 0.000000 0.009537 +jointshakey=0.000000 0.000000 0.009537 +jointrthigh=-1.707007 0.000000 0.000000 +jointrknee=1.044620 0.000000 0.000000 +jointrankle=-0.824160 0.000000 0.000000 +jointlthigh=-0.302505 0.000000 0.000000 +jointlknee=-0.032703 0.000000 0.000000 +jointlankle=0.339857 0.000000 0.000000 +[frame17] +jointlocal=0.000000 0.000000 0.006732 +jointshakey=0.000000 0.000000 0.006732 +jointrthigh=-1.333983 0.000000 0.000000 +jointrknee=0.904337 0.000000 0.000000 +jointrankle=-0.442308 0.000000 0.000000 +jointlthigh=-0.303532 0.000000 0.000000 +jointlknee=0.037837 0.000000 0.000000 +jointlankle=0.271664 0.000000 0.000000 +[frame23] +jointlocal=0.000000 0.000000 0.003366 +jointshakey=0.000000 0.000000 0.003366 +jointrthigh=-0.469528 0.000000 0.000000 +jointrknee=0.435919 0.000000 0.000000 +jointrankle=-0.342685 0.000000 0.000000 +jointlthigh=-0.151350 0.000000 0.000000 +jointlknee=0.018789 0.000000 0.000000 +jointlankle=0.136604 0.000000 0.000000 +[frame29] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlthigh=0.000832 0.000000 0.000000 +jointlknee=-0.000259 0.000000 0.000000 +jointlankle=0.001544 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame6=0.000000 -5.358000 2.734200 +frame11=0.000000 -5.358000 -0.616196 +frame12=0.000000 -5.358000 -2.200012 +frame17=0.000000 -5.358000 -2.200001 +frame23=0.000000 -5.358000 -4.012757 +frame29=0.000000 -5.358000 -4.012747 + +[KeyJointPos] +frame1=0.000000 0.722200 0.000000 +frame6=0.000000 0.565202 0.000000 +frame11=0.000000 0.408204 0.000000 +frame12=0.000000 0.382038 0.000000 +frame17=0.000000 0.251206 0.000000 +frame23=0.000000 0.125603 0.000000 +frame29=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/RAPRRL.ANI b/CONTENT/BT/ANIMS/RAPRRL.ANI new file mode 100644 index 0000000..8e11b15 --- /dev/null +++ b/CONTENT/BT/ANIMS/RAPRRL.ANI @@ -0,0 +1,120 @@ +[LAB_ONLY] + +[HEADER] +framecount=8 +framerate=30 +skeletonfile=rap.skl +jointcount=7 + +[Time] +frame1=0 +frame2=0.0333333 +frame3=0.0666667 +frame4=0.1 +frame5=0.133333 +frame6=0.166667 +frame9=0.266667 +frame12=0.366667 + +[JointIndices] +jointlocal=0 +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=11 +jointrknee=12 +jointrankle=13 + +[JointType] +jointlocal=balltranslate +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=-0.000000 0.000000 0.000000 +jointlthigh=0.564656 0.000000 0.000000 +jointlknee=0.136135 0.000000 0.000000 +jointlankle=1.505734 0.000000 0.000000 +jointrthigh=-1.375684 0.000000 0.000000 +jointrknee=0.999145 0.000000 0.000000 +jointrankle=0.378981 0.000000 0.000000 +[frame2] +jointlocal=-0.000000 0.000000 0.000000 +jointlthigh=0.646832 0.000000 0.000000 +jointlknee=-0.160045 0.000000 0.000000 +jointlankle=1.591903 0.000000 0.000000 +jointrthigh=-0.550973 0.000000 0.000000 +jointrknee=0.045145 0.000000 0.000000 +jointrankle=0.506132 0.000000 0.000000 +[frame3] +jointlocal=-0.000000 0.000000 0.000000 +jointlthigh=0.729008 0.000000 0.000000 +jointlknee=-0.456226 0.000000 0.000000 +jointlankle=1.678071 0.000000 0.000000 +jointrthigh=0.105458 0.000000 0.000000 +jointrknee=-0.301722 0.000000 0.000000 +jointrankle=0.197913 0.000000 0.000000 +[frame4] +jointlocal=-0.000000 0.000000 0.000000 +jointlthigh=0.234649 0.000000 0.000000 +jointlknee=-0.669835 0.000000 0.000000 +jointlankle=1.756080 0.000000 0.000000 +jointrthigh=0.300219 0.000000 0.000000 +jointrknee=0.101167 0.000000 0.000000 +jointrankle=-0.385861 0.000000 0.000000 +[frame5] +jointlocal=-0.000000 0.000000 0.000000 +jointlthigh=-0.193667 0.000000 0.000000 +jointlknee=-0.570444 0.000000 0.000000 +jointlankle=1.663471 0.000000 0.000000 +jointrthigh=0.368436 0.000000 0.000000 +jointrknee=0.275593 0.000000 0.000000 +jointrankle=-0.079582 0.000000 0.000000 +[frame6] +jointlocal=-0.000000 0.000000 0.000000 +jointlthigh=-0.621983 0.000000 0.000000 +jointlknee=-0.471054 0.000000 0.000000 +jointlankle=1.570861 0.000000 0.000000 +jointrthigh=-0.018072 0.000000 0.000000 +jointrknee=1.161459 0.000000 0.000000 +jointrankle=0.581254 0.000000 0.000000 +[frame9] +jointlocal=-0.000000 0.000000 0.000000 +jointlthigh=-1.837011 0.000000 0.000000 +jointlknee=0.964085 0.000000 0.000000 +jointlankle=0.053803 0.000000 0.000000 +jointrthigh=0.418821 0.000000 0.000000 +jointrknee=0.971260 0.000000 0.000000 +jointrankle=1.320198 0.000000 0.000000 +[frame12] +jointlocal=-0.000000 0.000000 0.000000 +jointlthigh=-1.365237 0.000000 0.000000 +jointlknee=0.985238 0.000000 0.000000 +jointlankle=0.385981 0.000000 0.000000 +jointrthigh=0.564656 0.000000 0.000000 +jointrknee=0.136135 0.000000 0.000000 +jointrankle=1.505734 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.362000 0.000000 +frame2=0.000000 -5.362000 50.545517 +frame3=0.000000 -5.362000 50.545460 +frame4=0.000000 -5.362000 53.112034 +frame5=0.000000 -5.362000 55.198395 +frame6=0.000000 -5.362000 55.198521 +frame9=0.000000 -5.362000 56.692005 +frame12=0.000000 -5.362000 53.521008 + +[KeyJointPos] +frame1=0.000000 0.286992 0.000000 +frame2=0.000000 -0.128163 0.000000 +frame3=0.000000 -0.543317 0.000000 +frame4=0.000000 -0.302974 0.000000 +frame5=0.000000 0.096076 0.000000 +frame6=0.000000 0.495127 0.000000 +frame9=0.000000 1.030758 0.000000 +frame12=0.000000 0.286753 0.000000 diff --git a/CONTENT/BT/ANIMS/RAPRRLI.ANI b/CONTENT/BT/ANIMS/RAPRRLI.ANI new file mode 100644 index 0000000..2df333f --- /dev/null +++ b/CONTENT/BT/ANIMS/RAPRRLI.ANI @@ -0,0 +1,130 @@ +[LAB_ONLY] + +[HEADER] +framecount=8 +framerate=30 +skeletonfile=rap.skl +jointcount=8 + +[Time] +frame1=0 +frame2=0.0333333 +frame3=0.0666667 +frame4=0.1 +frame5=0.133333 +frame6=0.166667 +frame9=0.266667 +frame12=0.366667 + +[JointIndices] +jointlocal=0 +jointshakey=3 +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=11 +jointrknee=12 +jointrankle=13 + +[JointType] +jointlocal=balltranslate +jointshakey=ball +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.564656 0.000000 0.000000 +jointlknee=-0.136135 0.000000 0.000000 +jointlankle=-1.505734 0.000000 0.000000 +jointrthigh=1.375684 0.000000 0.000000 +jointrknee=-0.999145 0.000000 0.000000 +jointrankle=-0.378981 0.000000 0.000000 +[frame2] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.646832 0.000000 0.000000 +jointlknee=0.160045 0.000000 0.000000 +jointlankle=-1.591903 0.000000 0.000000 +jointrthigh=0.550973 0.000000 0.000000 +jointrknee=-0.045145 0.000000 0.000000 +jointrankle=-0.506132 0.000000 0.000000 +[frame3] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.729008 0.000000 0.000000 +jointlknee=0.456226 0.000000 0.000000 +jointlankle=-1.678071 0.000000 0.000000 +jointrthigh=-0.105458 0.000000 0.000000 +jointrknee=0.301722 0.000000 0.000000 +jointrankle=-0.197913 0.000000 0.000000 +[frame4] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.234649 0.000000 0.000000 +jointlknee=0.669835 0.000000 0.000000 +jointlankle=-1.756080 0.000000 0.000000 +jointrthigh=-0.300219 0.000000 0.000000 +jointrknee=-0.101167 0.000000 0.000000 +jointrankle=0.385861 0.000000 0.000000 +[frame5] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.193667 0.000000 0.000000 +jointlknee=0.570444 0.000000 0.000000 +jointlankle=-1.663471 0.000000 0.000000 +jointrthigh=-0.368436 0.000000 0.000000 +jointrknee=-0.275593 0.000000 0.000000 +jointrankle=0.079582 0.000000 0.000000 +[frame6] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.621983 0.000000 0.000000 +jointlknee=0.471054 0.000000 0.000000 +jointlankle=-1.570861 0.000000 0.000000 +jointrthigh=0.018072 0.000000 0.000000 +jointrknee=-1.161459 0.000000 0.000000 +jointrankle=-0.581254 0.000000 0.000000 +[frame9] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=1.837011 0.000000 0.000000 +jointlknee=-0.964085 0.000000 0.000000 +jointlankle=-0.053803 0.000000 0.000000 +jointrthigh=-0.418821 0.000000 0.000000 +jointrknee=-0.971260 0.000000 0.000000 +jointrankle=-1.320198 0.000000 0.000000 +[frame12] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=1.365237 0.000000 0.000000 +jointlknee=-0.985238 0.000000 0.000000 +jointlankle=-0.385981 0.000000 0.000000 +jointrthigh=-0.564656 0.000000 0.000000 +jointrknee=-0.136135 0.000000 0.000000 +jointrankle=-1.505734 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.362000 0.000000 +frame2=0.000000 -5.362000 50.545517 +frame3=0.000000 -5.362000 50.545460 +frame4=0.000000 -5.362000 53.112034 +frame5=0.000000 -5.362000 55.198395 +frame6=0.000000 -5.362000 55.198521 +frame9=0.000000 -5.362000 56.692005 +frame12=0.000000 -5.362000 53.521008 + +[KeyJointPos] +frame1=0.000000 0.286992 0.000000 +frame2=0.000000 -0.128163 0.000000 +frame3=0.000000 -0.543317 0.000000 +frame4=0.000000 -0.302974 0.000000 +frame5=0.000000 0.096076 0.000000 +frame6=0.000000 0.495127 0.000000 +frame9=0.000000 1.030758 0.000000 +frame12=0.000000 0.286753 0.000000 diff --git a/CONTENT/BT/ANIMS/RAPRRR.ANI b/CONTENT/BT/ANIMS/RAPRRR.ANI new file mode 100644 index 0000000..5bab9a0 --- /dev/null +++ b/CONTENT/BT/ANIMS/RAPRRR.ANI @@ -0,0 +1,120 @@ +[LAB_ONLY] + +[HEADER] +framecount=8 +framerate=30 +skeletonfile=rap.skl +jointcount=7 + +[Time] +frame1=0 +frame2=0.0333333 +frame3=0.0666667 +frame4=0.1 +frame5=0.133333 +frame6=0.166667 +frame9=0.266667 +frame12=0.366667 + +[JointIndices] +jointlocal=0 +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=11 +jointrknee=12 +jointrankle=13 + +[JointType] +jointlocal=balltranslate +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=-0.000000 0.000000 0.000000 +jointlthigh=-1.375684 0.000000 0.000000 +jointlknee=0.999145 0.000000 0.000000 +jointlankle=0.378981 0.000000 0.000000 +jointrthigh=0.564656 0.000000 0.000000 +jointrknee=0.136135 0.000000 0.000000 +jointrankle=1.505734 0.000000 0.000000 +[frame2] +jointlocal=-0.000000 0.000000 0.000000 +jointlthigh=-0.551978 0.000000 0.000000 +jointlknee=0.050039 0.000000 0.000000 +jointlankle=0.492986 0.000000 0.000000 +jointrthigh=0.646832 0.000000 0.000000 +jointrknee=-0.160045 0.000000 0.000000 +jointrankle=1.591903 0.000000 0.000000 +[frame3] +jointlocal=-0.000000 0.000000 0.000000 +jointlthigh=0.097826 0.000000 0.000000 +jointlknee=-0.293669 0.000000 0.000000 +jointlankle=0.193103 0.000000 0.000000 +jointrthigh=0.729008 0.000000 0.000000 +jointrknee=-0.456226 0.000000 0.000000 +jointrankle=1.678071 0.000000 0.000000 +[frame4] +jointlocal=-0.000000 0.000000 0.000000 +jointlthigh=0.301418 0.000000 0.000000 +jointlknee=0.098925 0.000000 0.000000 +jointlankle=-0.377602 0.000000 0.000000 +jointrthigh=0.234649 0.000000 0.000000 +jointrknee=-0.669835 0.000000 0.000000 +jointrankle=1.756080 0.000000 0.000000 +[frame5] +jointlocal=-0.000000 0.000000 0.000000 +jointlthigh=0.378265 0.000000 0.000000 +jointlknee=0.411409 0.000000 0.000000 +jointlankle=-0.048956 0.000000 0.000000 +jointrthigh=-0.193667 0.000000 0.000000 +jointrknee=-0.570444 0.000000 0.000000 +jointrankle=1.663471 0.000000 0.000000 +[frame6] +jointlocal=-0.000000 0.000000 0.000000 +jointlthigh=-0.018064 0.000000 0.000000 +jointlknee=1.161464 0.000000 0.000000 +jointlankle=0.581247 0.000000 0.000000 +jointrthigh=-0.621983 0.000000 0.000000 +jointrknee=-0.471054 0.000000 0.000000 +jointrankle=1.570861 0.000000 0.000000 +[frame9] +jointlocal=-0.000000 0.000000 0.000000 +jointlthigh=0.418821 0.000000 0.000000 +jointlknee=0.971260 0.000000 0.000000 +jointlankle=1.320198 0.000000 0.000000 +jointrthigh=-1.837011 0.000000 0.000000 +jointrknee=0.964085 0.000000 0.000000 +jointrankle=0.053803 0.000000 0.000000 +[frame12] +jointlocal=-0.000000 0.000000 0.000000 +jointlthigh=0.564656 0.000000 0.000000 +jointlknee=0.136135 0.000000 0.000000 +jointlankle=1.505734 0.000000 0.000000 +jointrthigh=-1.365237 0.000000 0.000000 +jointrknee=0.985238 0.000000 0.000000 +jointrankle=0.385981 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.362000 0.000000 +frame2=0.000000 -5.362000 50.545517 +frame3=0.000000 -5.362000 50.545460 +frame4=0.000000 -5.362000 53.112034 +frame5=0.000000 -5.362000 55.198395 +frame6=0.000000 -5.362000 55.198521 +frame9=0.000000 -5.362000 56.692005 +frame12=0.000000 -5.362000 53.521008 + +[KeyJointPos] +frame1=0.000000 0.286992 0.000000 +frame2=0.000000 -0.128163 0.000000 +frame3=0.000000 -0.543317 0.000000 +frame4=0.000000 -0.302974 0.000000 +frame5=0.000000 0.096076 0.000000 +frame6=0.000000 0.495127 0.000000 +frame9=0.000000 1.030758 0.000000 +frame12=0.000000 0.286753 0.000000 diff --git a/CONTENT/BT/ANIMS/RAPRRRI.ANI b/CONTENT/BT/ANIMS/RAPRRRI.ANI new file mode 100644 index 0000000..fa5d061 --- /dev/null +++ b/CONTENT/BT/ANIMS/RAPRRRI.ANI @@ -0,0 +1,130 @@ +[LAB_ONLY] + +[HEADER] +framecount=8 +framerate=30 +skeletonfile=rap.skl +jointcount=8 + +[Time] +frame1=0 +frame2=0.0333333 +frame3=0.0666667 +frame4=0.1 +frame5=0.133333 +frame6=0.166667 +frame9=0.266667 +frame12=0.366667 + +[JointIndices] +jointlocal=0 +jointshakey=3 +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=11 +jointrknee=12 +jointrankle=13 + +[JointType] +jointlocal=balltranslate +jointshakey=ball +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=1.375684 0.000000 0.000000 +jointlknee=-0.999145 0.000000 0.000000 +jointlankle=-0.378981 0.000000 0.000000 +jointrthigh=-0.564656 0.000000 0.000000 +jointrknee=-0.136135 0.000000 0.000000 +jointrankle=-1.505734 0.000000 0.000000 +[frame2] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.551978 0.000000 0.000000 +jointlknee=-0.050039 0.000000 0.000000 +jointlankle=-0.492986 0.000000 0.000000 +jointrthigh=-0.646832 0.000000 0.000000 +jointrknee=0.160045 0.000000 0.000000 +jointrankle=-1.591903 0.000000 0.000000 +[frame3] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.097826 0.000000 0.000000 +jointlknee=0.293669 0.000000 0.000000 +jointlankle=-0.193103 0.000000 0.000000 +jointrthigh=-0.729008 0.000000 0.000000 +jointrknee=0.456226 0.000000 0.000000 +jointrankle=-1.678071 0.000000 0.000000 +[frame4] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.301418 0.000000 0.000000 +jointlknee=-0.098925 0.000000 0.000000 +jointlankle=0.377602 0.000000 0.000000 +jointrthigh=-0.234649 0.000000 0.000000 +jointrknee=0.669835 0.000000 0.000000 +jointrankle=-1.756080 0.000000 0.000000 +[frame5] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.378265 0.000000 0.000000 +jointlknee=-0.411409 0.000000 0.000000 +jointlankle=0.048956 0.000000 0.000000 +jointrthigh=0.193667 0.000000 0.000000 +jointrknee=0.570444 0.000000 0.000000 +jointrankle=-1.663471 0.000000 0.000000 +[frame6] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.018064 0.000000 0.000000 +jointlknee=-1.161464 0.000000 0.000000 +jointlankle=-0.581247 0.000000 0.000000 +jointrthigh=0.621983 0.000000 0.000000 +jointrknee=0.471054 0.000000 0.000000 +jointrankle=-1.570861 0.000000 0.000000 +[frame9] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.418821 0.000000 0.000000 +jointlknee=-0.971260 0.000000 0.000000 +jointlankle=-1.320198 0.000000 0.000000 +jointrthigh=1.837011 0.000000 0.000000 +jointrknee=-0.964085 0.000000 0.000000 +jointrankle=-0.053803 0.000000 0.000000 +[frame12] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.564656 0.000000 0.000000 +jointlknee=-0.136135 0.000000 0.000000 +jointlankle=-1.505734 0.000000 0.000000 +jointrthigh=1.365237 0.000000 0.000000 +jointrknee=-0.985238 0.000000 0.000000 +jointrankle=-0.385981 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.362000 0.000000 +frame2=0.000000 -5.362000 50.545517 +frame3=0.000000 -5.362000 50.545460 +frame4=0.000000 -5.362000 53.112034 +frame5=0.000000 -5.362000 55.198395 +frame6=0.000000 -5.362000 55.198521 +frame9=0.000000 -5.362000 56.692005 +frame12=0.000000 -5.362000 53.521008 + +[KeyJointPos] +frame1=0.000000 0.286992 0.000000 +frame2=0.000000 -0.128163 0.000000 +frame3=0.000000 -0.543317 0.000000 +frame4=0.000000 -0.302974 0.000000 +frame5=0.000000 0.096076 0.000000 +frame6=0.000000 0.495127 0.000000 +frame9=0.000000 1.030758 0.000000 +frame12=0.000000 0.286753 0.000000 diff --git a/CONTENT/BT/ANIMS/RAPRWL.ANI b/CONTENT/BT/ANIMS/RAPRWL.ANI new file mode 100644 index 0000000..8d6c9fc --- /dev/null +++ b/CONTENT/BT/ANIMS/RAPRWL.ANI @@ -0,0 +1,87 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=rap.skl +jointcount=7 + +[Time] +frame1=0 +frame4=0.1 +frame6=0.166667 +frame8=0.233333 +frame10=0.3 + +[JointIndices] +jointlocal=0 +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=11 +jointrknee=12 +jointrankle=13 + +[JointType] +jointlocal=balltranslate +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.564656 0.000000 0.000000 +jointlknee=-0.136135 0.000000 0.000000 +jointlankle=-1.505734 0.000000 0.000000 +jointrthigh=1.365237 0.000000 0.000000 +jointrknee=-0.985238 0.000000 0.000000 +jointrankle=-0.385981 0.000000 0.000000 +[frame4] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.729008 0.000000 0.000000 +jointlknee=0.456226 0.000000 0.000000 +jointlankle=-1.678071 0.000000 0.000000 +jointrthigh=0.266285 0.000000 0.000000 +jointrknee=0.105129 0.000000 0.000000 +jointrankle=-0.369980 0.000000 0.000000 +[frame6] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.234649 0.000000 0.000000 +jointlknee=0.669835 0.000000 0.000000 +jointlankle=-1.756080 0.000000 0.000000 +jointrthigh=-0.208799 0.000000 0.000000 +jointrknee=0.092874 0.000000 0.000000 +jointrankle=0.115218 0.000000 0.000000 +[frame8] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.480032 0.000000 0.000000 +jointlknee=0.309248 0.000000 0.000000 +jointlankle=-1.224270 0.000000 0.000000 +jointrthigh=-0.286527 0.000000 0.000000 +jointrknee=-0.382775 0.000000 0.000000 +jointrankle=0.667009 0.000000 0.000000 +[frame10] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=1.183946 0.000000 0.000000 +jointlknee=-0.503477 0.000000 0.000000 +jointlankle=-0.692461 0.000000 0.000000 +jointrthigh=-0.391907 0.000000 0.000000 +jointrknee=-0.664246 0.000000 0.000000 +jointrankle=0.416228 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.362000 0.000000 +frame4=0.000000 -5.362000 24.766006 +frame6=0.000000 -5.362000 26.323584 +frame8=0.000000 -5.362000 25.071032 +frame10=0.000000 -5.362000 25.070911 + +[KeyJointPos] +frame1=0.000000 0.286753 0.000000 +frame4=0.000000 -0.190715 0.000000 +frame6=0.000000 -0.302684 0.000000 +frame8=0.000000 -0.326807 0.000000 +frame10=0.000000 -0.350930 0.000000 diff --git a/CONTENT/BT/ANIMS/RAPRWLI.ANI b/CONTENT/BT/ANIMS/RAPRWLI.ANI new file mode 100644 index 0000000..63c391f --- /dev/null +++ b/CONTENT/BT/ANIMS/RAPRWLI.ANI @@ -0,0 +1,94 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=rap.skl +jointcount=8 + +[Time] +frame1=0 +frame4=0.1 +frame6=0.166667 +frame8=0.233333 +frame10=0.3 + +[JointIndices] +jointlocal=0 +jointshakey=3 +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=11 +jointrknee=12 +jointrankle=13 + +[JointType] +jointlocal=balltranslate +jointshakey=ball +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.564656 0.000000 0.000000 +jointlknee=-0.136135 0.000000 0.000000 +jointlankle=-1.505734 0.000000 0.000000 +jointrthigh=1.365237 0.000000 0.000000 +jointrknee=-0.985238 0.000000 0.000000 +jointrankle=-0.385981 0.000000 0.000000 +[frame4] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.729008 0.000000 0.000000 +jointlknee=0.456226 0.000000 0.000000 +jointlankle=-1.678071 0.000000 0.000000 +jointrthigh=0.266285 0.000000 0.000000 +jointrknee=0.105129 0.000000 0.000000 +jointrankle=-0.369980 0.000000 0.000000 +[frame6] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.234649 0.000000 0.000000 +jointlknee=0.669835 0.000000 0.000000 +jointlankle=-1.756080 0.000000 0.000000 +jointrthigh=-0.208799 0.000000 0.000000 +jointrknee=0.092874 0.000000 0.000000 +jointrankle=0.115218 0.000000 0.000000 +[frame8] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.480032 0.000000 0.000000 +jointlknee=0.309248 0.000000 0.000000 +jointlankle=-1.224270 0.000000 0.000000 +jointrthigh=-0.286527 0.000000 0.000000 +jointrknee=-0.382775 0.000000 0.000000 +jointrankle=0.667009 0.000000 0.000000 +[frame10] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=1.183946 0.000000 0.000000 +jointlknee=-0.503477 0.000000 0.000000 +jointlankle=-0.692461 0.000000 0.000000 +jointrthigh=-0.391907 0.000000 0.000000 +jointrknee=-0.664246 0.000000 0.000000 +jointrankle=0.416228 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.362000 0.000000 +frame4=0.000000 -5.362000 24.766006 +frame6=0.000000 -5.362000 26.323584 +frame8=0.000000 -5.362000 25.071032 +frame10=0.000000 -5.362000 25.070911 + +[KeyJointPos] +frame1=0.000000 0.286753 0.000000 +frame4=0.000000 -0.190715 0.000000 +frame6=0.000000 -0.302684 0.000000 +frame8=0.000000 -0.326807 0.000000 +frame10=0.000000 -0.350930 0.000000 diff --git a/CONTENT/BT/ANIMS/RAPRWR.ANI b/CONTENT/BT/ANIMS/RAPRWR.ANI new file mode 100644 index 0000000..6eee0d7 --- /dev/null +++ b/CONTENT/BT/ANIMS/RAPRWR.ANI @@ -0,0 +1,87 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=rap.skl +jointcount=7 + +[Time] +frame1=0 +frame4=0.1 +frame6=0.166667 +frame8=0.233333 +frame10=0.3 + +[JointIndices] +jointlocal=0 +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=11 +jointrknee=12 +jointrankle=13 + +[JointType] +jointlocal=balltranslate +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=1.365237 0.000000 0.000000 +jointlknee=-0.985238 0.000000 0.000000 +jointlankle=-0.385981 0.000000 0.000000 +jointrthigh=-0.564656 0.000000 0.000000 +jointrknee=-0.136135 0.000000 0.000000 +jointrankle=-1.505734 0.000000 0.000000 +[frame4] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.266285 0.000000 0.000000 +jointlknee=0.105129 0.000000 0.000000 +jointlankle=-0.369980 0.000000 0.000000 +jointrthigh=-0.729008 0.000000 0.000000 +jointrknee=0.456226 0.000000 0.000000 +jointrankle=-1.678071 0.000000 0.000000 +[frame6] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.208799 0.000000 0.000000 +jointlknee=0.092874 0.000000 0.000000 +jointlankle=0.115218 0.000000 0.000000 +jointrthigh=-0.234649 0.000000 0.000000 +jointrknee=0.669835 0.000000 0.000000 +jointrankle=-1.756080 0.000000 0.000000 +[frame8] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.286527 0.000000 0.000000 +jointlknee=-0.382775 0.000000 0.000000 +jointlankle=0.667009 0.000000 0.000000 +jointrthigh=0.480032 0.000000 0.000000 +jointrknee=0.309248 0.000000 0.000000 +jointrankle=-1.224270 0.000000 0.000000 +[frame10] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.400953 0.000000 0.000000 +jointlknee=-0.647580 0.000000 0.000000 +jointlankle=0.394820 0.000000 0.000000 +jointrthigh=1.183946 0.000000 0.000000 +jointrknee=-0.503477 0.000000 0.000000 +jointrankle=-0.692461 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.362000 0.000000 +frame4=0.000000 -5.362000 24.766006 +frame6=0.000000 -5.362000 26.323584 +frame8=0.000000 -5.362000 25.071032 +frame10=0.000000 -5.362000 25.070911 + +[KeyJointPos] +frame1=0.000000 0.286753 0.000000 +frame4=0.000000 -0.190715 0.000000 +frame6=0.000000 -0.302684 0.000000 +frame8=0.000000 -0.326807 0.000000 +frame10=0.000000 -0.350930 0.000000 diff --git a/CONTENT/BT/ANIMS/RAPRWRI.ANI b/CONTENT/BT/ANIMS/RAPRWRI.ANI new file mode 100644 index 0000000..f457d3c --- /dev/null +++ b/CONTENT/BT/ANIMS/RAPRWRI.ANI @@ -0,0 +1,94 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=rap.skl +jointcount=8 + +[Time] +frame1=0 +frame4=0.1 +frame6=0.166667 +frame8=0.233333 +frame10=0.3 + +[JointIndices] +jointlocal=0 +jointshakey=3 +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=11 +jointrknee=12 +jointrankle=13 + +[JointType] +jointlocal=balltranslate +jointshakey=ball +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=1.365237 0.000000 0.000000 +jointlknee=-0.985238 0.000000 0.000000 +jointlankle=-0.385981 0.000000 0.000000 +jointrthigh=-0.564656 0.000000 0.000000 +jointrknee=-0.136135 0.000000 0.000000 +jointrankle=-1.505734 0.000000 0.000000 +[frame4] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.266285 0.000000 0.000000 +jointlknee=0.105129 0.000000 0.000000 +jointlankle=-0.369980 0.000000 0.000000 +jointrthigh=-0.729008 0.000000 0.000000 +jointrknee=0.456226 0.000000 0.000000 +jointrankle=-1.678071 0.000000 0.000000 +[frame6] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.208799 0.000000 0.000000 +jointlknee=0.092874 0.000000 0.000000 +jointlankle=0.115218 0.000000 0.000000 +jointrthigh=-0.234649 0.000000 0.000000 +jointrknee=0.669835 0.000000 0.000000 +jointrankle=-1.756080 0.000000 0.000000 +[frame8] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.286527 0.000000 0.000000 +jointlknee=-0.382775 0.000000 0.000000 +jointlankle=0.667009 0.000000 0.000000 +jointrthigh=0.480032 0.000000 0.000000 +jointrknee=0.309248 0.000000 0.000000 +jointrankle=-1.224270 0.000000 0.000000 +[frame10] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.400953 0.000000 0.000000 +jointlknee=-0.647580 0.000000 0.000000 +jointlankle=0.394820 0.000000 0.000000 +jointrthigh=1.183946 0.000000 0.000000 +jointrknee=-0.503477 0.000000 0.000000 +jointrankle=-0.692461 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.362000 0.000000 +frame4=0.000000 -5.362000 24.766006 +frame6=0.000000 -5.362000 26.323584 +frame8=0.000000 -5.362000 25.071032 +frame10=0.000000 -5.362000 25.070911 + +[KeyJointPos] +frame1=0.000000 0.286753 0.000000 +frame4=0.000000 -0.190715 0.000000 +frame6=0.000000 -0.302684 0.000000 +frame8=0.000000 -0.326807 0.000000 +frame10=0.000000 -0.350930 0.000000 diff --git a/CONTENT/BT/ANIMS/RAPSBL.ANI b/CONTENT/BT/ANIMS/RAPSBL.ANI new file mode 100644 index 0000000..18ee8cb --- /dev/null +++ b/CONTENT/BT/ANIMS/RAPSBL.ANI @@ -0,0 +1,131 @@ +[LAB_ONLY] + +[HEADER] +framecount=9 +framerate=30 +skeletonfile=rap.skl +jointcount=7 + +[Time] +frame1=0 +frame3=0.0666667 +frame5=0.133333 +frame7=0.2 +frame10=0.3 +frame13=0.4 +frame18=0.566667 +frame22=0.7 +frame52=1.7 + +[JointIndices] +jointlocal=0 +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=11 +jointrknee=12 +jointrankle=13 + +[JointType] +jointlocal=balltranslate +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +[frame3] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.146097 0.000000 0.000000 +jointlknee=0.046415 0.000000 0.000000 +jointlankle=0.000504 0.000000 0.000000 +jointrthigh=0.064217 0.000000 0.000000 +jointrknee=0.044269 0.000000 0.000000 +jointrankle=-0.114235 0.000000 0.000000 +[frame5] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.292194 0.000000 0.000000 +jointlknee=0.092830 0.000000 0.000000 +jointlankle=0.001007 0.000000 0.000000 +jointrthigh=0.141810 0.000000 0.000000 +jointrknee=0.067804 0.000000 0.000000 +jointrankle=-0.212155 0.000000 0.000000 +[frame7] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.438291 0.000000 0.000000 +jointlknee=0.139244 0.000000 0.000000 +jointlankle=0.001511 0.000000 0.000000 +jointrthigh=0.236354 0.000000 0.000000 +jointrknee=0.070107 0.000000 0.000000 +jointrankle=-0.306921 0.000000 0.000000 +[frame10] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.591888 0.000000 0.000000 +jointlknee=0.087920 0.000000 0.000000 +jointlankle=-0.083528 0.000000 0.000000 +jointrthigh=0.427171 0.000000 0.000000 +jointrknee=-0.046732 0.000000 0.000000 +jointrankle=-0.380996 0.000000 0.000000 +[frame13] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.632090 0.000000 0.000000 +jointlknee=-0.088708 0.000000 0.000000 +jointlankle=-0.057247 0.000000 0.000000 +jointrthigh=0.617988 0.000000 0.000000 +jointrknee=-0.163570 0.000000 0.000000 +jointrankle=-0.455070 0.000000 0.000000 +[frame18] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.478337 0.000000 0.000000 +jointlknee=-0.587256 0.000000 0.000000 +jointlankle=0.326251 0.000000 0.000000 +jointrthigh=0.936016 0.000000 0.000000 +jointrknee=-0.358302 0.000000 0.000000 +jointrankle=-0.578528 0.000000 0.000000 +[frame22] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.273434 0.000000 0.000000 +jointlknee=-0.901590 0.000000 0.000000 +jointlankle=0.660736 0.000000 0.000000 +jointrthigh=1.190439 0.000000 0.000000 +jointrknee=-0.514087 0.000000 0.000000 +jointrankle=-0.677294 0.000000 0.000000 +[frame52] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.273434 0.000000 0.000000 +jointlknee=-0.901590 0.000000 0.000000 +jointlankle=0.660736 0.000000 0.000000 +jointrthigh=1.184787 0.000000 0.000000 +jointrknee=-0.509694 0.000000 0.000000 +jointrankle=-0.664147 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.361790 0.000000 +frame3=0.000003 -5.361810 -5.368280 +frame5=0.000006 -5.361830 -5.368280 +frame7=0.000009 -5.361850 -5.368281 +frame10=0.000013 -5.361880 -5.368289 +frame13=0.000017 -5.361910 -5.368290 +frame18=0.000025 -5.361960 -5.368287 +frame22=0.000031 -5.362000 -5.368281 +frame52=0.000031 -5.362000 -5.854300 + +[KeyJointPos] +frame1=0.000000 0.000000 0.000000 +frame3=0.000000 -0.033379 0.000000 +frame5=0.000000 -0.066757 0.000000 +frame7=0.000000 -0.100136 0.000000 +frame10=0.000000 -0.150204 0.000000 +frame13=0.000000 -0.200272 0.000000 +frame18=0.000000 -0.283719 0.000000 +frame22=0.000000 -0.350476 0.000000 +frame52=0.000000 -0.350476 0.000000 diff --git a/CONTENT/BT/ANIMS/RAPSBLI.ANI b/CONTENT/BT/ANIMS/RAPSBLI.ANI new file mode 100644 index 0000000..37d194e --- /dev/null +++ b/CONTENT/BT/ANIMS/RAPSBLI.ANI @@ -0,0 +1,142 @@ +[LAB_ONLY] + +[HEADER] +framecount=9 +framerate=30 +skeletonfile=rap.skl +jointcount=8 + +[Time] +frame1=0 +frame3=0.0666667 +frame5=0.133333 +frame7=0.2 +frame10=0.3 +frame13=0.4 +frame18=0.566667 +frame22=0.7 +frame52=1.7 + +[JointIndices] +jointlocal=0 +jointshakey=3 +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=11 +jointrknee=12 +jointrankle=13 + +[JointType] +jointlocal=balltranslate +jointshakey=ball +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +[frame3] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.146097 0.000000 0.000000 +jointlknee=0.046415 0.000000 0.000000 +jointlankle=0.000504 0.000000 0.000000 +jointrthigh=0.064217 0.000000 0.000000 +jointrknee=0.044269 0.000000 0.000000 +jointrankle=-0.114235 0.000000 0.000000 +[frame5] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.292194 0.000000 0.000000 +jointlknee=0.092830 0.000000 0.000000 +jointlankle=0.001007 0.000000 0.000000 +jointrthigh=0.141810 0.000000 0.000000 +jointrknee=0.067804 0.000000 0.000000 +jointrankle=-0.212155 0.000000 0.000000 +[frame7] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.438291 0.000000 0.000000 +jointlknee=0.139244 0.000000 0.000000 +jointlankle=0.001511 0.000000 0.000000 +jointrthigh=0.236354 0.000000 0.000000 +jointrknee=0.070107 0.000000 0.000000 +jointrankle=-0.306921 0.000000 0.000000 +[frame10] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.591888 0.000000 0.000000 +jointlknee=0.087920 0.000000 0.000000 +jointlankle=-0.083528 0.000000 0.000000 +jointrthigh=0.427171 0.000000 0.000000 +jointrknee=-0.046732 0.000000 0.000000 +jointrankle=-0.380996 0.000000 0.000000 +[frame13] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.632090 0.000000 0.000000 +jointlknee=-0.088708 0.000000 0.000000 +jointlankle=-0.057247 0.000000 0.000000 +jointrthigh=0.617988 0.000000 0.000000 +jointrknee=-0.163570 0.000000 0.000000 +jointrankle=-0.455070 0.000000 0.000000 +[frame18] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.478337 0.000000 0.000000 +jointlknee=-0.587256 0.000000 0.000000 +jointlankle=0.326251 0.000000 0.000000 +jointrthigh=0.936016 0.000000 0.000000 +jointrknee=-0.358302 0.000000 0.000000 +jointrankle=-0.578528 0.000000 0.000000 +[frame22] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.273434 0.000000 0.000000 +jointlknee=-0.901590 0.000000 0.000000 +jointlankle=0.660736 0.000000 0.000000 +jointrthigh=1.190439 0.000000 0.000000 +jointrknee=-0.514087 0.000000 0.000000 +jointrankle=-0.677294 0.000000 0.000000 +[frame52] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.273434 0.000000 0.000000 +jointlknee=-0.901590 0.000000 0.000000 +jointlankle=0.660736 0.000000 0.000000 +jointrthigh=1.184787 0.000000 0.000000 +jointrknee=-0.509694 0.000000 0.000000 +jointrankle=-0.664147 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.361790 0.000000 +frame3=0.000003 -5.361810 -5.368280 +frame5=0.000006 -5.361830 -5.368280 +frame7=0.000009 -5.361850 -5.368281 +frame10=0.000013 -5.361880 -5.368289 +frame13=0.000017 -5.361910 -5.368290 +frame18=0.000025 -5.361960 -5.368287 +frame22=0.000031 -5.362000 -5.368281 +frame52=0.000031 -5.362000 -5.854300 + +[KeyJointPos] +frame1=0.000000 0.000000 0.000000 +frame3=0.000000 -0.033379 0.000000 +frame5=0.000000 -0.066757 0.000000 +frame7=0.000000 -0.100136 0.000000 +frame10=0.000000 -0.150204 0.000000 +frame13=0.000000 -0.200272 0.000000 +frame18=0.000000 -0.283719 0.000000 +frame22=0.000000 -0.350476 0.000000 +frame52=0.000000 -0.350476 0.000000 diff --git a/CONTENT/BT/ANIMS/RAPSBR.ANI b/CONTENT/BT/ANIMS/RAPSBR.ANI new file mode 100644 index 0000000..7656fd5 --- /dev/null +++ b/CONTENT/BT/ANIMS/RAPSBR.ANI @@ -0,0 +1,131 @@ +[LAB_ONLY] + +[HEADER] +framecount=9 +framerate=30 +skeletonfile=rap.skl +jointcount=7 + +[Time] +frame1=0 +frame3=0.0666667 +frame5=0.133333 +frame7=0.2 +frame10=0.3 +frame13=0.4 +frame18=0.566667 +frame22=0.7 +frame52=1.7 + +[JointIndices] +jointlocal=0 +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=11 +jointrknee=12 +jointrankle=13 + +[JointType] +jointlocal=balltranslate +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +[frame3] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.065698 0.000000 0.000000 +jointlknee=0.040557 0.000000 0.000000 +jointlankle=-0.104759 0.000000 0.000000 +jointrthigh=-0.146097 0.000000 0.000000 +jointrknee=0.046415 0.000000 0.000000 +jointrankle=0.000504 0.000000 0.000000 +[frame5] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.143643 0.000000 0.000000 +jointlknee=0.065921 0.000000 0.000000 +jointlankle=-0.210527 0.000000 0.000000 +jointrthigh=-0.292194 0.000000 0.000000 +jointrknee=0.092830 0.000000 0.000000 +jointrankle=0.001007 0.000000 0.000000 +[frame7] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.236986 0.000000 0.000000 +jointlknee=0.069999 0.000000 0.000000 +jointlankle=-0.308979 0.000000 0.000000 +jointrthigh=-0.438291 0.000000 0.000000 +jointrknee=0.139244 0.000000 0.000000 +jointrankle=0.001511 0.000000 0.000000 +[frame10] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.427645 0.000000 0.000000 +jointlknee=-0.046628 0.000000 0.000000 +jointlankle=-0.383928 0.000000 0.000000 +jointrthigh=-0.591888 0.000000 0.000000 +jointrknee=0.087920 0.000000 0.000000 +jointrankle=-0.083528 0.000000 0.000000 +[frame13] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.618305 0.000000 0.000000 +jointlknee=-0.163255 0.000000 0.000000 +jointlankle=-0.458877 0.000000 0.000000 +jointrthigh=-0.632090 0.000000 0.000000 +jointrknee=-0.088708 0.000000 0.000000 +jointrankle=-0.057247 0.000000 0.000000 +[frame18] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.936071 0.000000 0.000000 +jointlknee=-0.357633 0.000000 0.000000 +jointlankle=-0.583792 0.000000 0.000000 +jointrthigh=-0.478337 0.000000 0.000000 +jointrknee=-0.587256 0.000000 0.000000 +jointrankle=0.326251 0.000000 0.000000 +[frame22] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=1.190283 0.000000 0.000000 +jointlknee=-0.513135 0.000000 0.000000 +jointlankle=-0.683724 0.000000 0.000000 +jointrthigh=-0.273434 0.000000 0.000000 +jointrknee=-0.901590 0.000000 0.000000 +jointrankle=0.660736 0.000000 0.000000 +[frame52] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=1.184787 0.000000 0.000000 +jointlknee=-0.509694 0.000000 0.000000 +jointlankle=-0.673250 0.000000 0.000000 +jointrthigh=-0.273434 0.000000 0.000000 +jointrknee=-0.901590 0.000000 0.000000 +jointrankle=0.660736 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.361790 0.000000 +frame3=0.000003 -5.361810 -5.368280 +frame5=0.000006 -5.361830 -5.368280 +frame7=0.000009 -5.361850 -5.368281 +frame10=0.000013 -5.361880 -5.368289 +frame13=0.000017 -5.361910 -5.368290 +frame18=0.000025 -5.361960 -5.368287 +frame22=0.000031 -5.362000 -5.368281 +frame52=0.000031 -5.362000 -5.854300 + +[KeyJointPos] +frame1=0.000000 0.000000 0.000000 +frame3=0.000000 -0.033379 0.000000 +frame5=0.000000 -0.066757 0.000000 +frame7=0.000000 -0.100136 0.000000 +frame10=0.000000 -0.150204 0.000000 +frame13=0.000000 -0.200272 0.000000 +frame18=0.000000 -0.283719 0.000000 +frame22=0.000000 -0.350476 0.000000 +frame52=0.000000 -0.350476 0.000000 diff --git a/CONTENT/BT/ANIMS/RAPSBRI.ANI b/CONTENT/BT/ANIMS/RAPSBRI.ANI new file mode 100644 index 0000000..012b50e --- /dev/null +++ b/CONTENT/BT/ANIMS/RAPSBRI.ANI @@ -0,0 +1,142 @@ +[LAB_ONLY] + +[HEADER] +framecount=9 +framerate=30 +skeletonfile=rap.skl +jointcount=8 + +[Time] +frame1=0 +frame3=0.0666667 +frame5=0.133333 +frame7=0.2 +frame10=0.3 +frame13=0.4 +frame18=0.566667 +frame22=0.7 +frame52=1.7 + +[JointIndices] +jointlocal=0 +jointshakey=3 +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=11 +jointrknee=12 +jointrankle=13 + +[JointType] +jointlocal=balltranslate +jointshakey=ball +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +[frame3] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.065698 0.000000 0.000000 +jointlknee=0.040557 0.000000 0.000000 +jointlankle=-0.104759 0.000000 0.000000 +jointrthigh=-0.146097 0.000000 0.000000 +jointrknee=0.046415 0.000000 0.000000 +jointrankle=0.000504 0.000000 0.000000 +[frame5] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.143643 0.000000 0.000000 +jointlknee=0.065921 0.000000 0.000000 +jointlankle=-0.210527 0.000000 0.000000 +jointrthigh=-0.292194 0.000000 0.000000 +jointrknee=0.092830 0.000000 0.000000 +jointrankle=0.001007 0.000000 0.000000 +[frame7] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.236986 0.000000 0.000000 +jointlknee=0.069999 0.000000 0.000000 +jointlankle=-0.308979 0.000000 0.000000 +jointrthigh=-0.438291 0.000000 0.000000 +jointrknee=0.139244 0.000000 0.000000 +jointrankle=0.001511 0.000000 0.000000 +[frame10] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.427645 0.000000 0.000000 +jointlknee=-0.046628 0.000000 0.000000 +jointlankle=-0.383928 0.000000 0.000000 +jointrthigh=-0.591888 0.000000 0.000000 +jointrknee=0.087920 0.000000 0.000000 +jointrankle=-0.083528 0.000000 0.000000 +[frame13] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.618305 0.000000 0.000000 +jointlknee=-0.163255 0.000000 0.000000 +jointlankle=-0.458877 0.000000 0.000000 +jointrthigh=-0.632090 0.000000 0.000000 +jointrknee=-0.088708 0.000000 0.000000 +jointrankle=-0.057247 0.000000 0.000000 +[frame18] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.936071 0.000000 0.000000 +jointlknee=-0.357633 0.000000 0.000000 +jointlankle=-0.583792 0.000000 0.000000 +jointrthigh=-0.478337 0.000000 0.000000 +jointrknee=-0.587256 0.000000 0.000000 +jointrankle=0.326251 0.000000 0.000000 +[frame22] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=1.190283 0.000000 0.000000 +jointlknee=-0.513135 0.000000 0.000000 +jointlankle=-0.683724 0.000000 0.000000 +jointrthigh=-0.273434 0.000000 0.000000 +jointrknee=-0.901590 0.000000 0.000000 +jointrankle=0.660736 0.000000 0.000000 +[frame52] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=1.184787 0.000000 0.000000 +jointlknee=-0.509694 0.000000 0.000000 +jointlankle=-0.673250 0.000000 0.000000 +jointrthigh=-0.273434 0.000000 0.000000 +jointrknee=-0.901590 0.000000 0.000000 +jointrankle=0.660736 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.361790 0.000000 +frame3=0.000003 -5.361810 -5.368280 +frame5=0.000006 -5.361830 -5.368280 +frame7=0.000009 -5.361850 -5.368281 +frame10=0.000013 -5.361880 -5.368289 +frame13=0.000017 -5.361910 -5.368290 +frame18=0.000025 -5.361960 -5.368287 +frame22=0.000031 -5.362000 -5.368281 +frame52=0.000031 -5.362000 -5.854300 + +[KeyJointPos] +frame1=0.000000 0.000000 0.000000 +frame3=0.000000 -0.033379 0.000000 +frame5=0.000000 -0.066757 0.000000 +frame7=0.000000 -0.100136 0.000000 +frame10=0.000000 -0.150204 0.000000 +frame13=0.000000 -0.200272 0.000000 +frame18=0.000000 -0.283719 0.000000 +frame22=0.000000 -0.350476 0.000000 +frame52=0.000000 -0.350476 0.000000 diff --git a/CONTENT/BT/ANIMS/RAPSQDI.ANI b/CONTENT/BT/ANIMS/RAPSQDI.ANI new file mode 100644 index 0000000..435ef13 --- /dev/null +++ b/CONTENT/BT/ANIMS/RAPSQDI.ANI @@ -0,0 +1,263 @@ +[LAB_ONLY] + +[HEADER] +framecount=21 +framerate=30 +skeletonfile=rap.skl +jointcount=7 + +[Time] +frame1=0 +frame2=0.0333333 +frame3=0.0666667 +frame4=0.1 +frame5=0.133333 +frame6=0.166667 +frame7=0.2 +frame8=0.233333 +frame9=0.266667 +frame10=0.3 +frame11=0.333333 +frame12=0.366667 +frame13=0.4 +frame14=0.433333 +frame15=0.466667 +frame16=0.5 +frame17=0.533333 +frame18=0.566667 +frame19=0.6 +frame20=0.633333 +frame21=0.666667 + +[JointIndices] +jointlocal=0 +jointrthigh=11 +jointrknee=12 +jointrankle=13 +jointlthigh=8 +jointlknee=9 +jointlankle=10 + +[JointType] +jointlocal=balltranslate +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointrthigh=0.000334 0.000000 0.000000 +jointrknee=0.000498 0.000000 0.000000 +jointrankle=0.000101 0.000000 0.000000 +jointlthigh=0.000334 0.000000 0.000000 +jointlknee=0.000498 0.000000 0.000000 +jointlankle=0.000101 0.000000 0.000000 +[frame2] +jointlocal=0.000000 0.000000 0.000000 +jointrthigh=-0.010653 0.000000 0.000000 +jointrknee=0.013874 0.000000 0.000000 +jointrankle=0.006574 0.000000 0.000000 +jointlthigh=-0.010654 0.000000 0.000000 +jointlknee=0.013873 0.000000 0.000000 +jointlankle=0.006572 0.000000 0.000000 +[frame3] +jointlocal=0.000000 0.000000 0.000000 +jointrthigh=-0.041952 0.000000 0.000000 +jointrknee=0.055599 0.000000 0.000000 +jointrankle=-0.021559 0.000000 0.000000 +jointlthigh=-0.041962 0.000000 0.000000 +jointlknee=0.055610 0.000000 0.000000 +jointlankle=-0.021575 0.000000 0.000000 +[frame4] +jointlocal=0.000000 0.000000 0.000000 +jointrthigh=-0.074130 0.000000 0.000000 +jointrknee=0.097839 0.000000 0.000000 +jointrankle=-0.034857 0.000000 0.000000 +jointlthigh=-0.074145 0.000000 0.000000 +jointlknee=0.097856 0.000000 0.000000 +jointlankle=-0.034880 0.000000 0.000000 +[frame5] +jointlocal=0.000000 0.000000 0.000000 +jointrthigh=-0.113563 0.000000 0.000000 +jointrknee=0.149156 0.000000 0.000000 +jointrankle=-0.050008 0.000000 0.000000 +jointlthigh=-0.113582 0.000000 0.000000 +jointlknee=0.149179 0.000000 0.000000 +jointlankle=-0.050038 0.000000 0.000000 +[frame6] +jointlocal=0.000000 0.000000 0.000000 +jointrthigh=-0.158838 0.000000 0.000000 +jointrknee=0.207525 0.000000 0.000000 +jointrankle=-0.066335 0.000000 0.000000 +jointlthigh=-0.158861 0.000000 0.000000 +jointlknee=0.207555 0.000000 0.000000 +jointlankle=-0.066372 0.000000 0.000000 +[frame7] +jointlocal=0.000000 0.000000 0.000000 +jointrthigh=-0.208816 0.000000 0.000000 +jointrknee=0.271224 0.000000 0.000000 +jointrankle=-0.083227 0.000000 0.000000 +jointlthigh=-0.208846 0.000000 0.000000 +jointlknee=0.271257 0.000000 0.000000 +jointlankle=-0.083271 0.000000 0.000000 +[frame8] +jointlocal=0.000000 0.000000 0.000000 +jointrthigh=-0.262518 0.000000 0.000000 +jointrknee=0.338711 0.000000 0.000000 +jointrankle=-0.100143 0.000000 0.000000 +jointlthigh=-0.262552 0.000000 0.000000 +jointlknee=0.338751 0.000000 0.000000 +jointlankle=-0.100194 0.000000 0.000000 +[frame9] +jointlocal=0.000000 0.000000 0.000000 +jointrthigh=-0.319078 0.000000 0.000000 +jointrknee=0.408610 0.000000 0.000000 +jointrankle=-0.116603 0.000000 0.000000 +jointlthigh=-0.319116 0.000000 0.000000 +jointlknee=0.408653 0.000000 0.000000 +jointlankle=-0.116660 0.000000 0.000000 +[frame10] +jointlocal=0.000000 0.000000 0.000000 +jointrthigh=-0.377707 0.000000 0.000000 +jointrknee=0.479678 0.000000 0.000000 +jointrankle=-0.132180 0.000000 0.000000 +jointlthigh=-0.377752 0.000000 0.000000 +jointlknee=0.479726 0.000000 0.000000 +jointlankle=-0.132243 0.000000 0.000000 +[frame11] +jointlocal=0.000000 0.000000 0.000000 +jointrthigh=-0.399464 0.000000 0.000000 +jointrknee=0.504517 0.000000 0.000000 +jointrankle=-0.119521 0.000000 0.000000 +jointlthigh=-0.399511 0.000000 0.000000 +jointlknee=0.504566 0.000000 0.000000 +jointlankle=-0.119585 0.000000 0.000000 +[frame12] +jointlocal=0.000000 0.000000 0.000000 +jointrthigh=-0.459994 0.000000 0.000000 +jointrknee=0.575664 0.000000 0.000000 +jointrankle=-0.133875 0.000000 0.000000 +jointlthigh=-0.460044 0.000000 0.000000 +jointlknee=0.575720 0.000000 0.000000 +jointlankle=-0.133945 0.000000 0.000000 +[frame13] +jointlocal=0.000000 0.000000 0.000000 +jointrthigh=-0.520665 0.000000 0.000000 +jointrknee=0.645274 0.000000 0.000000 +jointrankle=-0.146847 0.000000 0.000000 +jointlthigh=-0.520722 0.000000 0.000000 +jointlknee=0.645335 0.000000 0.000000 +jointlankle=-0.146923 0.000000 0.000000 +[frame14] +jointlocal=0.000000 0.000000 0.000000 +jointrthigh=-0.580530 0.000000 0.000000 +jointrknee=0.712239 0.000000 0.000000 +jointrankle=-0.158226 0.000000 0.000000 +jointlthigh=-0.580596 0.000000 0.000000 +jointlknee=0.712305 0.000000 0.000000 +jointlankle=-0.158308 0.000000 0.000000 +[frame15] +jointlocal=0.000000 0.000000 0.000000 +jointrthigh=-0.638448 0.000000 0.000000 +jointrknee=0.775380 0.000000 0.000000 +jointrankle=-0.167925 0.000000 0.000000 +jointlthigh=-0.638522 0.000000 0.000000 +jointlknee=0.775453 0.000000 0.000000 +jointlankle=-0.168011 0.000000 0.000000 +[frame16] +jointlocal=0.000000 0.000000 0.000000 +jointrthigh=-0.693007 0.000000 0.000000 +jointrknee=0.833388 0.000000 0.000000 +jointrankle=-0.176001 0.000000 0.000000 +jointlthigh=-0.693089 0.000000 0.000000 +jointlknee=0.833468 0.000000 0.000000 +jointlankle=-0.176093 0.000000 0.000000 +[frame17] +jointlocal=0.000000 0.000000 0.000000 +jointrthigh=-0.745868 0.000000 0.000000 +jointrknee=0.886770 0.000000 0.000000 +jointrankle=-0.178490 0.000000 0.000000 +jointlthigh=-0.745966 0.000000 0.000000 +jointlknee=0.886865 0.000000 0.000000 +jointlankle=-0.178598 0.000000 0.000000 +[frame18] +jointlocal=0.000000 0.000000 0.000000 +jointrthigh=-0.788254 0.000000 0.000000 +jointrknee=0.930472 0.000000 0.000000 +jointrankle=-0.188140 0.000000 0.000000 +jointlthigh=-0.788353 0.000000 0.000000 +jointlknee=0.930566 0.000000 0.000000 +jointlankle=-0.188244 0.000000 0.000000 +[frame19] +jointlocal=0.000000 0.000000 0.000000 +jointrthigh=-0.804527 0.000000 0.000000 +jointrknee=0.949791 0.000000 0.000000 +jointrankle=-0.189384 0.000000 0.000000 +jointlthigh=-0.804633 0.000000 0.000000 +jointlknee=0.949892 0.000000 0.000000 +jointlankle=-0.189492 0.000000 0.000000 +[frame20] +jointlocal=0.000000 0.000000 0.000000 +jointrthigh=-0.829068 0.000000 0.000000 +jointrknee=0.972171 0.000000 0.000000 +jointrankle=-0.188703 0.000000 0.000000 +jointlthigh=-0.829185 0.000000 0.000000 +jointlknee=0.972279 0.000000 0.000000 +jointlankle=-0.188817 0.000000 0.000000 +[frame21] +jointlocal=0.000000 0.000000 0.000000 +jointrthigh=-0.844507 0.000000 0.000000 +jointrknee=0.987497 0.000000 0.000000 +jointrankle=-0.204053 0.000000 0.000000 +jointlthigh=-0.844624 0.000000 0.000000 +jointlknee=0.987605 0.000000 0.000000 +jointlankle=-0.204167 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame2=0.000000 -5.358038 0.000000 +frame3=0.000000 -5.358036 0.000000 +frame4=0.000000 -5.358034 0.000000 +frame5=0.000000 -5.358032 0.000000 +frame6=0.000000 -5.358030 0.000000 +frame7=0.000000 -5.358028 0.000000 +frame8=0.000000 -5.358026 0.000000 +frame9=0.000000 -5.358024 0.000000 +frame10=0.000000 -5.358022 0.000000 +frame11=0.000000 -5.358020 0.000000 +frame12=0.000000 -5.358018 0.000000 +frame13=0.000000 -5.358016 0.000000 +frame14=0.000000 -5.358014 0.000000 +frame15=0.000000 -5.358012 0.000000 +frame16=0.000000 -5.358010 0.000000 +frame17=0.000000 -5.358008 0.000000 +frame18=0.000000 -5.358006 0.000000 +frame19=0.000000 -5.358004 0.000000 +frame20=0.000000 -5.358002 0.000000 +frame21=0.000000 -5.358000 0.000000 + +[KeyJointPos] +frame1=0.000000 -0.007172 0.000000 +frame2=0.000000 -0.039657 0.000000 +frame3=0.000000 -0.098307 0.000000 +frame4=0.000000 -0.178807 0.000000 +frame5=0.000000 -0.277343 0.000000 +frame6=0.000000 -0.393286 0.000000 +frame7=0.000000 -0.517725 0.000000 +frame8=0.000000 -0.651155 0.000000 +frame9=0.000000 -0.784586 0.000000 +frame10=0.000000 -0.918016 0.000000 +frame11=0.000000 -1.051446 0.000000 +frame12=0.000000 -1.184876 0.000000 +frame13=0.000000 -1.318307 0.000000 +frame14=0.000000 -1.451737 0.000000 +frame15=0.000000 -1.571618 0.000000 +frame16=0.000000 -1.677620 0.000000 +frame17=0.000000 -1.765531 0.000000 +frame18=0.000000 -1.838684 0.000000 +frame19=0.000000 -1.890779 0.000000 +frame20=0.000000 -1.922414 0.000000 +frame21=0.000000 -1.929304 0.000000 diff --git a/CONTENT/BT/ANIMS/RAPSQUI.ANI b/CONTENT/BT/ANIMS/RAPSQUI.ANI new file mode 100644 index 0000000..7f5a28e --- /dev/null +++ b/CONTENT/BT/ANIMS/RAPSQUI.ANI @@ -0,0 +1,263 @@ +[LAB_ONLY] + +[HEADER] +framecount=21 +framerate=30 +skeletonfile=rap.skl +jointcount=7 + +[Time] +frame1=0 +frame2=0.0333333 +frame3=0.0666667 +frame4=0.1 +frame5=0.133333 +frame6=0.166667 +frame7=0.2 +frame8=0.233333 +frame9=0.266667 +frame10=0.3 +frame11=0.333333 +frame12=0.366667 +frame13=0.4 +frame14=0.433333 +frame15=0.466667 +frame16=0.5 +frame17=0.533333 +frame18=0.566667 +frame19=0.6 +frame20=0.633333 +frame21=0.666667 + +[JointIndices] +jointlocal=0 +jointrthigh=11 +jointrknee=12 +jointrankle=13 +jointlthigh=8 +jointlknee=9 +jointlankle=10 + +[JointType] +jointlocal=balltranslate +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointrthigh=-0.829068 0.000000 0.000000 +jointrknee=0.972171 0.000000 0.000000 +jointrankle=-0.188703 0.000000 0.000000 +jointlthigh=-0.829185 0.000000 0.000000 +jointlknee=0.972279 0.000000 0.000000 +jointlankle=-0.188817 0.000000 0.000000 +[frame2] +jointlocal=0.000000 0.000000 0.000000 +jointrthigh=-0.804527 0.000000 0.000000 +jointrknee=0.949791 0.000000 0.000000 +jointrankle=-0.189384 0.000000 0.000000 +jointlthigh=-0.804633 0.000000 0.000000 +jointlknee=0.949892 0.000000 0.000000 +jointlankle=-0.189492 0.000000 0.000000 +[frame3] +jointlocal=0.000000 0.000000 0.000000 +jointrthigh=-0.788254 0.000000 0.000000 +jointrknee=0.930472 0.000000 0.000000 +jointrankle=-0.188140 0.000000 0.000000 +jointlthigh=-0.788353 0.000000 0.000000 +jointlknee=0.930566 0.000000 0.000000 +jointlankle=-0.188244 0.000000 0.000000 +[frame4] +jointlocal=0.000000 0.000000 0.000000 +jointrthigh=-0.745868 0.000000 0.000000 +jointrknee=0.886770 0.000000 0.000000 +jointrankle=-0.178490 0.000000 0.000000 +jointlthigh=-0.745966 0.000000 0.000000 +jointlknee=0.886865 0.000000 0.000000 +jointlankle=-0.178598 0.000000 0.000000 +[frame5] +jointlocal=0.000000 0.000000 0.000000 +jointrthigh=-0.693007 0.000000 0.000000 +jointrknee=0.833388 0.000000 0.000000 +jointrankle=-0.176001 0.000000 0.000000 +jointlthigh=-0.693089 0.000000 0.000000 +jointlknee=0.833468 0.000000 0.000000 +jointlankle=-0.176093 0.000000 0.000000 +[frame6] +jointlocal=0.000000 0.000000 0.000000 +jointrthigh=-0.638448 0.000000 0.000000 +jointrknee=0.775380 0.000000 0.000000 +jointrankle=-0.167925 0.000000 0.000000 +jointlthigh=-0.638522 0.000000 0.000000 +jointlknee=0.775453 0.000000 0.000000 +jointlankle=-0.168011 0.000000 0.000000 +[frame7] +jointlocal=0.000000 0.000000 0.000000 +jointrthigh=-0.580530 0.000000 0.000000 +jointrknee=0.712239 0.000000 0.000000 +jointrankle=-0.158226 0.000000 0.000000 +jointlthigh=-0.580596 0.000000 0.000000 +jointlknee=0.712305 0.000000 0.000000 +jointlankle=-0.158308 0.000000 0.000000 +[frame8] +jointlocal=0.000000 0.000000 0.000000 +jointrthigh=-0.520665 0.000000 0.000000 +jointrknee=0.645274 0.000000 0.000000 +jointrankle=-0.146847 0.000000 0.000000 +jointlthigh=-0.520722 0.000000 0.000000 +jointlknee=0.645335 0.000000 0.000000 +jointlankle=-0.146923 0.000000 0.000000 +[frame9] +jointlocal=0.000000 0.000000 0.000000 +jointrthigh=-0.459994 0.000000 0.000000 +jointrknee=0.575664 0.000000 0.000000 +jointrankle=-0.133875 0.000000 0.000000 +jointlthigh=-0.460044 0.000000 0.000000 +jointlknee=0.575720 0.000000 0.000000 +jointlankle=-0.133945 0.000000 0.000000 +[frame10] +jointlocal=0.000000 0.000000 0.000000 +jointrthigh=-0.399464 0.000000 0.000000 +jointrknee=0.504517 0.000000 0.000000 +jointrankle=-0.119521 0.000000 0.000000 +jointlthigh=-0.399511 0.000000 0.000000 +jointlknee=0.504566 0.000000 0.000000 +jointlankle=-0.119585 0.000000 0.000000 +[frame11] +jointlocal=0.000000 0.000000 0.000000 +jointrthigh=-0.377707 0.000000 0.000000 +jointrknee=0.479678 0.000000 0.000000 +jointrankle=-0.132180 0.000000 0.000000 +jointlthigh=-0.377752 0.000000 0.000000 +jointlknee=0.479726 0.000000 0.000000 +jointlankle=-0.132243 0.000000 0.000000 +[frame12] +jointlocal=0.000000 0.000000 0.000000 +jointrthigh=-0.319078 0.000000 0.000000 +jointrknee=0.408610 0.000000 0.000000 +jointrankle=-0.116603 0.000000 0.000000 +jointlthigh=-0.319116 0.000000 0.000000 +jointlknee=0.408653 0.000000 0.000000 +jointlankle=-0.116660 0.000000 0.000000 +[frame13] +jointlocal=0.000000 0.000000 0.000000 +jointrthigh=-0.262518 0.000000 0.000000 +jointrknee=0.338711 0.000000 0.000000 +jointrankle=-0.100143 0.000000 0.000000 +jointlthigh=-0.262552 0.000000 0.000000 +jointlknee=0.338751 0.000000 0.000000 +jointlankle=-0.100194 0.000000 0.000000 +[frame14] +jointlocal=0.000000 0.000000 0.000000 +jointrthigh=-0.208816 0.000000 0.000000 +jointrknee=0.271224 0.000000 0.000000 +jointrankle=-0.083227 0.000000 0.000000 +jointlthigh=-0.208846 0.000000 0.000000 +jointlknee=0.271257 0.000000 0.000000 +jointlankle=-0.083271 0.000000 0.000000 +[frame15] +jointlocal=0.000000 0.000000 0.000000 +jointrthigh=-0.158838 0.000000 0.000000 +jointrknee=0.207525 0.000000 0.000000 +jointrankle=-0.066335 0.000000 0.000000 +jointlthigh=-0.158861 0.000000 0.000000 +jointlknee=0.207555 0.000000 0.000000 +jointlankle=-0.066372 0.000000 0.000000 +[frame16] +jointlocal=0.000000 0.000000 0.000000 +jointrthigh=-0.113563 0.000000 0.000000 +jointrknee=0.149156 0.000000 0.000000 +jointrankle=-0.050008 0.000000 0.000000 +jointlthigh=-0.113582 0.000000 0.000000 +jointlknee=0.149179 0.000000 0.000000 +jointlankle=-0.050038 0.000000 0.000000 +[frame17] +jointlocal=0.000000 0.000000 0.000000 +jointrthigh=-0.074130 0.000000 0.000000 +jointrknee=0.097839 0.000000 0.000000 +jointrankle=-0.034857 0.000000 0.000000 +jointlthigh=-0.074145 0.000000 0.000000 +jointlknee=0.097856 0.000000 0.000000 +jointlankle=-0.034880 0.000000 0.000000 +[frame18] +jointlocal=0.000000 0.000000 0.000000 +jointrthigh=-0.041952 0.000000 0.000000 +jointrknee=0.055599 0.000000 0.000000 +jointrankle=-0.021559 0.000000 0.000000 +jointlthigh=-0.041962 0.000000 0.000000 +jointlknee=0.055610 0.000000 0.000000 +jointlankle=-0.021575 0.000000 0.000000 +[frame19] +jointlocal=0.000000 0.000000 0.000000 +jointrthigh=-0.010653 0.000000 0.000000 +jointrknee=0.013874 0.000000 0.000000 +jointrankle=0.006574 0.000000 0.000000 +jointlthigh=-0.010654 0.000000 0.000000 +jointlknee=0.013873 0.000000 0.000000 +jointlankle=0.006572 0.000000 0.000000 +[frame20] +jointlocal=0.000000 0.000000 0.000000 +jointrthigh=0.000334 0.000000 0.000000 +jointrknee=0.000498 0.000000 0.000000 +jointrankle=0.000101 0.000000 0.000000 +jointlthigh=0.000334 0.000000 0.000000 +jointlknee=0.000498 0.000000 0.000000 +jointlankle=0.000101 0.000000 0.000000 +[frame21] +jointlocal=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame2=0.000000 -5.358002 0.000000 +frame3=0.000000 -5.358004 0.000000 +frame4=0.000000 -5.358006 0.000000 +frame5=0.000000 -5.358007 0.000000 +frame6=0.000000 -5.358009 0.000000 +frame7=0.000000 -5.358011 0.000000 +frame8=0.000000 -5.358013 0.000000 +frame9=0.000000 -5.358016 0.000000 +frame10=0.000000 -5.358017 0.000000 +frame11=0.000000 -5.358019 0.000000 +frame12=0.000000 -5.358021 0.000000 +frame13=0.000000 -5.358024 0.000000 +frame14=0.000000 -5.358026 0.000000 +frame15=0.000000 -5.358027 0.000000 +frame16=0.000000 -5.358029 0.000000 +frame17=0.000000 -5.358032 0.000000 +frame18=0.000000 -5.358034 0.000000 +frame19=0.000000 -5.358036 0.000000 +frame20=0.000000 -5.358038 0.000000 +frame21=0.000000 -5.358040 0.000000 + +[KeyJointPos] +frame1=0.000000 -1.922414 0.000000 +frame2=0.000000 -1.890779 0.000000 +frame3=0.000000 -1.838684 0.000000 +frame4=0.000000 -1.765531 0.000000 +frame5=0.000000 -1.677620 0.000000 +frame6=0.000000 -1.571618 0.000000 +frame7=0.000000 -1.451737 0.000000 +frame8=0.000000 -1.318306 0.000000 +frame9=0.000000 -1.184876 0.000000 +frame10=0.000000 -1.051446 0.000000 +frame11=0.000000 -0.918016 0.000000 +frame12=0.000000 -0.784586 0.000000 +frame13=0.000000 -0.651155 0.000000 +frame14=0.000000 -0.517725 0.000000 +frame15=0.000000 -0.393286 0.000000 +frame16=0.000000 -0.277343 0.000000 +frame17=0.000000 -0.178807 0.000000 +frame18=0.000000 -0.098307 0.000000 +frame19=0.000000 -0.039657 0.000000 +frame20=0.000000 -0.007172 0.000000 +frame21=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/RAPSWL.ANI b/CONTENT/BT/ANIMS/RAPSWL.ANI new file mode 100644 index 0000000..1253b86 --- /dev/null +++ b/CONTENT/BT/ANIMS/RAPSWL.ANI @@ -0,0 +1,109 @@ +[LAB_ONLY] + +[HEADER] +framecount=7 +framerate=30 +skeletonfile=rap.skl +jointcount=7 + +[Time] +frame1=0 +frame4=0.1 +frame7=0.2 +frame10=0.3 +frame19=0.6 +frame25=0.8 +frame55=1.8 + +[JointIndices] +jointlocal=0 +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=11 +jointrknee=12 +jointrankle=13 + +[JointType] +jointlocal=balltranslate +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +[frame4] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.051390 0.000000 0.000000 +jointlknee=0.136022 0.000000 0.000000 +jointlankle=-0.206305 0.000000 0.000000 +jointrthigh=-0.101683 0.000000 0.000000 +jointrknee=0.008560 0.000000 0.000000 +jointrankle=0.096812 0.000000 0.000000 +[frame7] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.102780 0.000000 0.000000 +jointlknee=0.272044 0.000000 0.000000 +jointlankle=-0.412611 0.000000 0.000000 +jointrthigh=-0.191765 0.000000 0.000000 +jointrknee=-0.001932 0.000000 0.000000 +jointrankle=0.199116 0.000000 0.000000 +[frame10] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.154170 0.000000 0.000000 +jointlknee=0.408067 0.000000 0.000000 +jointlankle=-0.618916 0.000000 0.000000 +jointrthigh=-0.268706 0.000000 0.000000 +jointrknee=-0.031086 0.000000 0.000000 +jointrankle=0.304087 0.000000 0.000000 +[frame19] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.772685 0.000000 0.000000 +jointlknee=0.187618 0.000000 0.000000 +jointlankle=-1.129083 0.000000 0.000000 +jointrthigh=-0.311723 0.000000 0.000000 +jointrknee=-0.500766 0.000000 0.000000 +jointrankle=0.776174 0.000000 0.000000 +[frame25] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=1.183946 0.000000 0.000000 +jointlknee=-0.503477 0.000000 0.000000 +jointlankle=-0.692461 0.000000 0.000000 +jointrthigh=-0.349265 0.000000 0.000000 +jointrknee=-0.767718 0.000000 0.000000 +jointrankle=0.513090 0.000000 0.000000 +[frame55] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=1.183946 0.000000 0.000000 +jointlknee=-0.503477 0.000000 0.000000 +jointlankle=-0.692461 0.000000 0.000000 +jointrthigh=-0.349666 0.000000 0.000000 +jointrknee=-0.747154 0.000000 0.000000 +jointrankle=0.512233 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.361790 0.000000 +frame4=0.000000 -5.361860 3.619566 +frame7=0.000000 -5.361930 3.619566 +frame10=0.000000 -5.362000 3.619567 +frame19=0.000000 -5.362000 5.134000 +frame25=0.000000 -5.362000 6.532000 +frame55=0.000000 -5.362000 6.220800 + +[KeyJointPos] +frame1=0.000000 0.000000 0.000000 +frame4=0.000000 -0.095667 0.000000 +frame7=0.000000 -0.191333 0.000000 +frame10=0.000000 -0.287000 0.000000 +frame19=0.000000 -0.430966 0.000000 +frame25=0.000000 -0.350930 0.000000 +frame55=0.000000 -0.350930 0.000000 diff --git a/CONTENT/BT/ANIMS/RAPSWLI.ANI b/CONTENT/BT/ANIMS/RAPSWLI.ANI new file mode 100644 index 0000000..4c00fbb --- /dev/null +++ b/CONTENT/BT/ANIMS/RAPSWLI.ANI @@ -0,0 +1,118 @@ +[LAB_ONLY] + +[HEADER] +framecount=7 +framerate=30 +skeletonfile=rap.skl +jointcount=8 + +[Time] +frame1=0 +frame4=0.1 +frame7=0.2 +frame10=0.3 +frame19=0.6 +frame25=0.8 +frame55=1.8 + +[JointIndices] +jointlocal=0 +jointshakey=3 +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=11 +jointrknee=12 +jointrankle=13 + +[JointType] +jointlocal=balltranslate +jointshakey=ball +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +[frame4] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.051390 0.000000 0.000000 +jointlknee=0.136022 0.000000 0.000000 +jointlankle=-0.206305 0.000000 0.000000 +jointrthigh=-0.101683 0.000000 0.000000 +jointrknee=0.008560 0.000000 0.000000 +jointrankle=0.096812 0.000000 0.000000 +[frame7] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.102780 0.000000 0.000000 +jointlknee=0.272044 0.000000 0.000000 +jointlankle=-0.412611 0.000000 0.000000 +jointrthigh=-0.191765 0.000000 0.000000 +jointrknee=-0.001932 0.000000 0.000000 +jointrankle=0.199116 0.000000 0.000000 +[frame10] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.154170 0.000000 0.000000 +jointlknee=0.408067 0.000000 0.000000 +jointlankle=-0.618916 0.000000 0.000000 +jointrthigh=-0.268706 0.000000 0.000000 +jointrknee=-0.031086 0.000000 0.000000 +jointrankle=0.304087 0.000000 0.000000 +[frame19] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.772685 0.000000 0.000000 +jointlknee=0.187618 0.000000 0.000000 +jointlankle=-1.129083 0.000000 0.000000 +jointrthigh=-0.311723 0.000000 0.000000 +jointrknee=-0.500766 0.000000 0.000000 +jointrankle=0.776174 0.000000 0.000000 +[frame25] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=1.183946 0.000000 0.000000 +jointlknee=-0.503477 0.000000 0.000000 +jointlankle=-0.692461 0.000000 0.000000 +jointrthigh=-0.349265 0.000000 0.000000 +jointrknee=-0.767718 0.000000 0.000000 +jointrankle=0.513090 0.000000 0.000000 +[frame55] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=1.183946 0.000000 0.000000 +jointlknee=-0.503477 0.000000 0.000000 +jointlankle=-0.692461 0.000000 0.000000 +jointrthigh=-0.349666 0.000000 0.000000 +jointrknee=-0.747154 0.000000 0.000000 +jointrankle=0.512233 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.361790 0.000000 +frame4=0.000000 -5.361860 3.619566 +frame7=0.000000 -5.361930 3.619566 +frame10=0.000000 -5.362000 3.619567 +frame19=0.000000 -5.362000 5.134000 +frame25=0.000000 -5.362000 6.532000 +frame55=0.000000 -5.362000 6.220800 + +[KeyJointPos] +frame1=0.000000 0.000000 0.000000 +frame4=0.000000 -0.095667 0.000000 +frame7=0.000000 -0.191333 0.000000 +frame10=0.000000 -0.287000 0.000000 +frame19=0.000000 -0.430966 0.000000 +frame25=0.000000 -0.350930 0.000000 +frame55=0.000000 -0.350930 0.000000 diff --git a/CONTENT/BT/ANIMS/RAPSWR.ANI b/CONTENT/BT/ANIMS/RAPSWR.ANI new file mode 100644 index 0000000..46a3cde --- /dev/null +++ b/CONTENT/BT/ANIMS/RAPSWR.ANI @@ -0,0 +1,109 @@ +[LAB_ONLY] + +[HEADER] +framecount=7 +framerate=30 +skeletonfile=rap.skl +jointcount=7 + +[Time] +frame1=0 +frame4=0.1 +frame7=0.2 +frame10=0.3 +frame19=0.6 +frame25=0.8 +frame55=1.8 + +[JointIndices] +jointlocal=0 +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=11 +jointrknee=12 +jointrankle=13 + +[JointType] +jointlocal=balltranslate +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +[frame4] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.100866 0.000000 0.000000 +jointlknee=0.008551 0.000000 0.000000 +jointlankle=0.095589 0.000000 0.000000 +jointrthigh=0.051390 0.000000 0.000000 +jointrknee=0.136022 0.000000 0.000000 +jointrankle=-0.206305 0.000000 0.000000 +[frame7] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.190335 0.000000 0.000000 +jointlknee=-0.001635 0.000000 0.000000 +jointlankle=0.196594 0.000000 0.000000 +jointrthigh=0.102780 0.000000 0.000000 +jointrknee=0.272044 0.000000 0.000000 +jointrankle=-0.412611 0.000000 0.000000 +[frame10] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.266904 0.000000 0.000000 +jointlknee=-0.030173 0.000000 0.000000 +jointlankle=0.300251 0.000000 0.000000 +jointrthigh=0.154170 0.000000 0.000000 +jointrknee=0.408067 0.000000 0.000000 +jointrankle=-0.618916 0.000000 0.000000 +[frame19] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.317934 0.000000 0.000000 +jointlknee=-0.488024 0.000000 0.000000 +jointlankle=0.759133 0.000000 0.000000 +jointrthigh=0.772685 0.000000 0.000000 +jointrknee=0.187618 0.000000 0.000000 +jointrankle=-1.129083 0.000000 0.000000 +[frame25] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.353935 0.000000 0.000000 +jointlknee=-0.755672 0.000000 0.000000 +jointlankle=0.494413 0.000000 0.000000 +jointrthigh=1.183946 0.000000 0.000000 +jointrknee=-0.503477 0.000000 0.000000 +jointrankle=-0.692461 0.000000 0.000000 +[frame55] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.349666 0.000000 0.000000 +jointlknee=-0.747154 0.000000 0.000000 +jointlankle=0.512233 0.000000 0.000000 +jointrthigh=1.183946 0.000000 0.000000 +jointrknee=-0.503477 0.000000 0.000000 +jointrankle=-0.692461 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.361790 0.000000 +frame4=0.000000 -5.361860 3.619566 +frame7=0.000000 -5.361930 3.619566 +frame10=0.000000 -5.362000 3.619567 +frame19=0.000000 -5.362000 5.134000 +frame25=0.000000 -5.362000 6.532000 +frame55=0.000000 -5.362000 6.220800 + +[KeyJointPos] +frame1=0.000000 0.000000 0.000000 +frame4=0.000000 -0.095667 0.000000 +frame7=0.000000 -0.191333 0.000000 +frame10=0.000000 -0.287000 0.000000 +frame19=0.000000 -0.430966 0.000000 +frame25=0.000000 -0.350930 0.000000 +frame55=0.000000 -0.350930 0.000000 diff --git a/CONTENT/BT/ANIMS/RAPSWRI.ANI b/CONTENT/BT/ANIMS/RAPSWRI.ANI new file mode 100644 index 0000000..b8ca25a --- /dev/null +++ b/CONTENT/BT/ANIMS/RAPSWRI.ANI @@ -0,0 +1,118 @@ +[LAB_ONLY] + +[HEADER] +framecount=7 +framerate=30 +skeletonfile=rap.skl +jointcount=8 + +[Time] +frame1=0 +frame4=0.1 +frame7=0.2 +frame10=0.3 +frame19=0.6 +frame25=0.8 +frame55=1.8 + +[JointIndices] +jointlocal=0 +jointshakey=3 +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=11 +jointrknee=12 +jointrankle=13 + +[JointType] +jointlocal=balltranslate +jointshakey=ball +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +[frame4] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.100866 0.000000 0.000000 +jointlknee=0.008551 0.000000 0.000000 +jointlankle=0.095589 0.000000 0.000000 +jointrthigh=0.051390 0.000000 0.000000 +jointrknee=0.136022 0.000000 0.000000 +jointrankle=-0.206305 0.000000 0.000000 +[frame7] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.190335 0.000000 0.000000 +jointlknee=-0.001635 0.000000 0.000000 +jointlankle=0.196594 0.000000 0.000000 +jointrthigh=0.102780 0.000000 0.000000 +jointrknee=0.272044 0.000000 0.000000 +jointrankle=-0.412611 0.000000 0.000000 +[frame10] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.266904 0.000000 0.000000 +jointlknee=-0.030173 0.000000 0.000000 +jointlankle=0.300251 0.000000 0.000000 +jointrthigh=0.154170 0.000000 0.000000 +jointrknee=0.408067 0.000000 0.000000 +jointrankle=-0.618916 0.000000 0.000000 +[frame19] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.317934 0.000000 0.000000 +jointlknee=-0.488024 0.000000 0.000000 +jointlankle=0.759133 0.000000 0.000000 +jointrthigh=0.772685 0.000000 0.000000 +jointrknee=0.187618 0.000000 0.000000 +jointrankle=-1.129083 0.000000 0.000000 +[frame25] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.353935 0.000000 0.000000 +jointlknee=-0.755672 0.000000 0.000000 +jointlankle=0.494413 0.000000 0.000000 +jointrthigh=1.183946 0.000000 0.000000 +jointrknee=-0.503477 0.000000 0.000000 +jointrankle=-0.692461 0.000000 0.000000 +[frame55] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.349666 0.000000 0.000000 +jointlknee=-0.747154 0.000000 0.000000 +jointlankle=0.512233 0.000000 0.000000 +jointrthigh=1.183946 0.000000 0.000000 +jointrknee=-0.503477 0.000000 0.000000 +jointrankle=-0.692461 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.361790 0.000000 +frame4=0.000000 -5.361860 3.619566 +frame7=0.000000 -5.361930 3.619566 +frame10=0.000000 -5.362000 3.619567 +frame19=0.000000 -5.362000 5.134000 +frame25=0.000000 -5.362000 6.532000 +frame55=0.000000 -5.362000 6.220800 + +[KeyJointPos] +frame1=0.000000 0.000000 0.000000 +frame4=0.000000 -0.095667 0.000000 +frame7=0.000000 -0.191333 0.000000 +frame10=0.000000 -0.287000 0.000000 +frame19=0.000000 -0.430966 0.000000 +frame25=0.000000 -0.350930 0.000000 +frame55=0.000000 -0.350930 0.000000 diff --git a/CONTENT/BT/ANIMS/RAPWRL.ANI b/CONTENT/BT/ANIMS/RAPWRL.ANI new file mode 100644 index 0000000..d652e2a --- /dev/null +++ b/CONTENT/BT/ANIMS/RAPWRL.ANI @@ -0,0 +1,153 @@ +[LAB_ONLY] + +[HEADER] +framecount=11 +framerate=30 +skeletonfile=rap.skl +jointcount=7 + +[Time] +frame1=0 +frame2=0.0333333 +frame3=0.0666667 +frame4=0.1 +frame5=0.133333 +frame6=0.166667 +frame7=0.2 +frame10=0.3 +frame14=0.433333 +frame19=0.6 +frame49=1.6 + +[JointIndices] +jointlocal=0 +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=11 +jointrknee=12 +jointrankle=13 + +[JointType] +jointlocal=balltranslate +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.274090 0.000000 0.000000 +jointlknee=-0.900455 0.000000 0.000000 +jointlankle=0.659576 0.000000 0.000000 +jointrthigh=1.187105 0.000000 0.000000 +jointrknee=-0.510565 0.000000 0.000000 +jointrankle=-0.675362 0.000000 0.000000 +[frame2] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.379368 0.000000 0.000000 +jointlknee=-0.693880 0.000000 0.000000 +jointlankle=0.061543 0.000000 0.000000 +jointrthigh=0.831077 0.000000 0.000000 +jointrknee=-0.146544 0.000000 0.000000 +jointrankle=-0.684251 0.000000 0.000000 +[frame3] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.484646 0.000000 0.000000 +jointlknee=-0.487305 0.000000 0.000000 +jointlankle=-0.536490 0.000000 0.000000 +jointrthigh=0.505233 0.000000 0.000000 +jointrknee=0.091081 0.000000 0.000000 +jointrankle=-0.597355 0.000000 0.000000 +[frame4] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.589925 0.000000 0.000000 +jointlknee=-0.280730 0.000000 0.000000 +jointlankle=-1.134522 0.000000 0.000000 +jointrthigh=0.200050 0.000000 0.000000 +jointrknee=0.226463 0.000000 0.000000 +jointrankle=-0.428332 0.000000 0.000000 +[frame5] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.695203 0.000000 0.000000 +jointlknee=-0.074155 0.000000 0.000000 +jointlankle=-1.732555 0.000000 0.000000 +jointrthigh=-0.068127 0.000000 0.000000 +jointrknee=0.266128 0.000000 0.000000 +jointrankle=-0.203432 0.000000 0.000000 +[frame6] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.635662 0.000000 0.000000 +jointlknee=0.189552 0.000000 0.000000 +jointlankle=-1.539923 0.000000 0.000000 +jointrthigh=-0.186558 0.000000 0.000000 +jointrknee=0.106223 0.000000 0.000000 +jointrankle=0.073853 0.000000 0.000000 +[frame7] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.576121 0.000000 0.000000 +jointlknee=0.453259 0.000000 0.000000 +jointlankle=-1.347291 0.000000 0.000000 +jointrthigh=-0.211036 0.000000 0.000000 +jointrknee=-0.149674 0.000000 0.000000 +jointrankle=0.348760 0.000000 0.000000 +[frame10] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.118397 0.000000 0.000000 +jointlknee=0.513965 0.000000 0.000000 +jointlankle=-1.656553 0.000000 0.000000 +jointrthigh=-0.262880 0.000000 0.000000 +jointrknee=-0.678855 0.000000 0.000000 +jointrankle=0.077281 0.000000 0.000000 +[frame14] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=1.117519 0.000000 0.000000 +jointlknee=-0.293465 0.000000 0.000000 +jointlankle=-0.350551 0.000000 0.000000 +jointrthigh=-0.323739 0.000000 0.000000 +jointrknee=-0.667821 0.000000 0.000000 +jointrankle=-1.607595 0.000000 0.000000 +[frame19] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=1.367497 0.000000 0.000000 +jointlknee=-0.984935 0.000000 0.000000 +jointlankle=-0.386294 0.000000 0.000000 +jointrthigh=-0.564656 0.000000 0.000000 +jointrknee=-0.136135 0.000000 0.000000 +jointrankle=-1.505734 0.000000 0.000000 +[frame49] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=1.367486 0.000000 0.000000 +jointlknee=-0.984924 0.000000 0.000000 +jointlankle=-0.386287 0.000000 0.000000 +jointrthigh=-0.564654 0.000000 0.000000 +jointrknee=-0.136141 0.000000 0.000000 +jointrankle=-1.505739 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.362000 0.000000 +frame2=0.000000 -5.362000 25.143011 +frame3=0.000000 -5.362000 25.142982 +frame4=0.000000 -5.362000 25.142986 +frame5=0.000000 -5.362000 25.143009 +frame6=0.000000 -5.362000 24.410994 +frame7=0.000000 -5.362000 24.410994 +frame10=0.000000 -5.362000 25.519999 +frame14=0.000000 -5.362000 25.659000 +frame19=0.000000 -5.362000 25.653004 +frame49=0.000000 -5.362000 24.064301 + +[KeyJointPos] +frame1=0.000000 -0.350476 0.000000 +frame2=0.000000 -0.377359 0.000000 +frame3=0.000000 -0.404242 0.000000 +frame4=0.000000 -0.431125 0.000000 +frame5=0.000000 -0.458008 0.000000 +frame6=0.000000 -0.284770 0.000000 +frame7=0.000000 -0.111531 0.000000 +frame10=0.000000 0.271022 0.000000 +frame14=0.000000 0.785624 0.000000 +frame19=0.000000 0.286992 0.000000 +frame49=0.000000 0.286992 0.000000 diff --git a/CONTENT/BT/ANIMS/RAPWRLI.ANI b/CONTENT/BT/ANIMS/RAPWRLI.ANI new file mode 100644 index 0000000..ac4c4a2 --- /dev/null +++ b/CONTENT/BT/ANIMS/RAPWRLI.ANI @@ -0,0 +1,166 @@ +[LAB_ONLY] + +[HEADER] +framecount=11 +framerate=30 +skeletonfile=rap.skl +jointcount=8 + +[Time] +frame1=0 +frame2=0.0333333 +frame3=0.0666667 +frame4=0.1 +frame5=0.133333 +frame6=0.166667 +frame7=0.2 +frame10=0.3 +frame14=0.433333 +frame19=0.6 +frame49=1.6 + +[JointIndices] +jointlocal=0 +jointshakey=3 +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=11 +jointrknee=12 +jointrankle=13 + +[JointType] +jointlocal=balltranslate +jointshakey=ball +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.274090 0.000000 0.000000 +jointlknee=-0.900455 0.000000 0.000000 +jointlankle=0.659576 0.000000 0.000000 +jointrthigh=1.187105 0.000000 0.000000 +jointrknee=-0.510565 0.000000 0.000000 +jointrankle=-0.675362 0.000000 0.000000 +[frame2] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.379368 0.000000 0.000000 +jointlknee=-0.693880 0.000000 0.000000 +jointlankle=0.061543 0.000000 0.000000 +jointrthigh=0.831077 0.000000 0.000000 +jointrknee=-0.146544 0.000000 0.000000 +jointrankle=-0.684251 0.000000 0.000000 +[frame3] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.484646 0.000000 0.000000 +jointlknee=-0.487305 0.000000 0.000000 +jointlankle=-0.536490 0.000000 0.000000 +jointrthigh=0.505233 0.000000 0.000000 +jointrknee=0.091081 0.000000 0.000000 +jointrankle=-0.597355 0.000000 0.000000 +[frame4] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.589925 0.000000 0.000000 +jointlknee=-0.280730 0.000000 0.000000 +jointlankle=-1.134522 0.000000 0.000000 +jointrthigh=0.200050 0.000000 0.000000 +jointrknee=0.226463 0.000000 0.000000 +jointrankle=-0.428332 0.000000 0.000000 +[frame5] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.695203 0.000000 0.000000 +jointlknee=-0.074155 0.000000 0.000000 +jointlankle=-1.732555 0.000000 0.000000 +jointrthigh=-0.068127 0.000000 0.000000 +jointrknee=0.266128 0.000000 0.000000 +jointrankle=-0.203432 0.000000 0.000000 +[frame6] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.635662 0.000000 0.000000 +jointlknee=0.189552 0.000000 0.000000 +jointlankle=-1.539923 0.000000 0.000000 +jointrthigh=-0.186558 0.000000 0.000000 +jointrknee=0.106223 0.000000 0.000000 +jointrankle=0.073853 0.000000 0.000000 +[frame7] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.576121 0.000000 0.000000 +jointlknee=0.453259 0.000000 0.000000 +jointlankle=-1.347291 0.000000 0.000000 +jointrthigh=-0.211036 0.000000 0.000000 +jointrknee=-0.149674 0.000000 0.000000 +jointrankle=0.348760 0.000000 0.000000 +[frame10] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.118397 0.000000 0.000000 +jointlknee=0.513965 0.000000 0.000000 +jointlankle=-1.656553 0.000000 0.000000 +jointrthigh=-0.262880 0.000000 0.000000 +jointrknee=-0.678855 0.000000 0.000000 +jointrankle=0.077281 0.000000 0.000000 +[frame14] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=1.117519 0.000000 0.000000 +jointlknee=-0.293465 0.000000 0.000000 +jointlankle=-0.350551 0.000000 0.000000 +jointrthigh=-0.323739 0.000000 0.000000 +jointrknee=-0.667821 0.000000 0.000000 +jointrankle=-1.607595 0.000000 0.000000 +[frame19] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=1.367497 0.000000 0.000000 +jointlknee=-0.984935 0.000000 0.000000 +jointlankle=-0.386294 0.000000 0.000000 +jointrthigh=-0.564656 0.000000 0.000000 +jointrknee=-0.136135 0.000000 0.000000 +jointrankle=-1.505734 0.000000 0.000000 +[frame49] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=1.367486 0.000000 0.000000 +jointlknee=-0.984924 0.000000 0.000000 +jointlankle=-0.386287 0.000000 0.000000 +jointrthigh=-0.564654 0.000000 0.000000 +jointrknee=-0.136141 0.000000 0.000000 +jointrankle=-1.505739 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.362000 0.000000 +frame2=0.000000 -5.362000 25.143011 +frame3=0.000000 -5.362000 25.142982 +frame4=0.000000 -5.362000 25.142986 +frame5=0.000000 -5.362000 25.143009 +frame6=0.000000 -5.362000 24.410994 +frame7=0.000000 -5.362000 24.410994 +frame10=0.000000 -5.362000 25.519999 +frame14=0.000000 -5.362000 25.659000 +frame19=0.000000 -5.362000 25.653004 +frame49=0.000000 -5.362000 24.064301 + +[KeyJointPos] +frame1=0.000000 -0.350476 0.000000 +frame2=0.000000 -0.377359 0.000000 +frame3=0.000000 -0.404242 0.000000 +frame4=0.000000 -0.431125 0.000000 +frame5=0.000000 -0.458008 0.000000 +frame6=0.000000 -0.284770 0.000000 +frame7=0.000000 -0.111531 0.000000 +frame10=0.000000 0.271022 0.000000 +frame14=0.000000 0.785624 0.000000 +frame19=0.000000 0.286992 0.000000 +frame49=0.000000 0.286992 0.000000 diff --git a/CONTENT/BT/ANIMS/RAPWRR.ANI b/CONTENT/BT/ANIMS/RAPWRR.ANI new file mode 100644 index 0000000..2976696 --- /dev/null +++ b/CONTENT/BT/ANIMS/RAPWRR.ANI @@ -0,0 +1,153 @@ +[LAB_ONLY] + +[HEADER] +framecount=11 +framerate=30 +skeletonfile=rap.skl +jointcount=7 + +[Time] +frame1=0 +frame2=0.0333333 +frame3=0.0666667 +frame4=0.1 +frame5=0.133333 +frame6=0.166667 +frame7=0.2 +frame10=0.3 +frame14=0.433333 +frame19=0.6 +frame49=1.6 + +[JointIndices] +jointlocal=0 +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=11 +jointrknee=12 +jointrankle=13 + +[JointType] +jointlocal=balltranslate +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=1.188747 0.000000 0.000000 +jointlknee=-0.514490 0.000000 0.000000 +jointlankle=-0.669145 0.000000 0.000000 +jointrthigh=-0.274090 0.000000 0.000000 +jointrknee=-0.900455 0.000000 0.000000 +jointrankle=0.659576 0.000000 0.000000 +[frame2] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.833014 0.000000 0.000000 +jointlknee=-0.147361 0.000000 0.000000 +jointlankle=-0.687178 0.000000 0.000000 +jointrthigh=-0.379368 0.000000 0.000000 +jointrknee=-0.693880 0.000000 0.000000 +jointrankle=0.061543 0.000000 0.000000 +[frame3] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.508306 0.000000 0.000000 +jointlknee=0.087128 0.000000 0.000000 +jointlankle=-0.592068 0.000000 0.000000 +jointrthigh=-0.484646 0.000000 0.000000 +jointrknee=-0.487305 0.000000 0.000000 +jointrankle=-0.536490 0.000000 0.000000 +[frame4] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.203444 0.000000 0.000000 +jointlknee=0.224291 0.000000 0.000000 +jointlankle=-0.424939 0.000000 0.000000 +jointrthigh=-0.589925 0.000000 0.000000 +jointrknee=-0.280730 0.000000 0.000000 +jointrankle=-1.134522 0.000000 0.000000 +[frame5] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.063661 0.000000 0.000000 +jointlknee=0.263829 0.000000 0.000000 +jointlankle=-0.201771 0.000000 0.000000 +jointrthigh=-0.695203 0.000000 0.000000 +jointrknee=-0.074155 0.000000 0.000000 +jointrankle=-1.732555 0.000000 0.000000 +[frame6] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.184501 0.000000 0.000000 +jointlknee=0.108459 0.000000 0.000000 +jointlankle=0.069049 0.000000 0.000000 +jointrthigh=-0.635662 0.000000 0.000000 +jointrknee=0.189552 0.000000 0.000000 +jointrankle=-1.539923 0.000000 0.000000 +[frame7] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.206626 0.000000 0.000000 +jointlknee=-0.151385 0.000000 0.000000 +jointlankle=0.352422 0.000000 0.000000 +jointrthigh=-0.576121 0.000000 0.000000 +jointrknee=0.453259 0.000000 0.000000 +jointrankle=-1.347291 0.000000 0.000000 +[frame10] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.264653 0.000000 0.000000 +jointlknee=-0.671676 0.000000 0.000000 +jointlankle=0.075955 0.000000 0.000000 +jointrthigh=0.118397 0.000000 0.000000 +jointrknee=0.513965 0.000000 0.000000 +jointrankle=-1.656553 0.000000 0.000000 +[frame14] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.323739 0.000000 0.000000 +jointlknee=-0.667821 0.000000 0.000000 +jointlankle=-1.607595 0.000000 0.000000 +jointrthigh=1.117519 0.000000 0.000000 +jointrknee=-0.293465 0.000000 0.000000 +jointrankle=-0.350551 0.000000 0.000000 +[frame19] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.564656 0.000000 0.000000 +jointlknee=-0.136135 0.000000 0.000000 +jointlankle=-1.505734 0.000000 0.000000 +jointrthigh=1.367497 0.000000 0.000000 +jointrknee=-0.984935 0.000000 0.000000 +jointrankle=-0.386294 0.000000 0.000000 +[frame49] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.564654 0.000000 0.000000 +jointlknee=-0.136141 0.000000 0.000000 +jointlankle=-1.505739 0.000000 0.000000 +jointrthigh=1.367486 0.000000 0.000000 +jointrknee=-0.984924 0.000000 0.000000 +jointrankle=-0.386287 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.362000 0.000000 +frame2=0.000000 -5.362000 25.143011 +frame3=0.000000 -5.362000 25.142982 +frame4=0.000000 -5.362000 25.142986 +frame5=0.000000 -5.362000 25.143009 +frame6=0.000000 -5.362000 24.410994 +frame7=0.000000 -5.362000 24.410994 +frame10=0.000000 -5.362000 25.519999 +frame14=0.000000 -5.362000 25.659000 +frame19=0.000000 -5.362000 25.653004 +frame49=0.000000 -5.362000 24.064301 + +[KeyJointPos] +frame1=0.000000 -0.350476 0.000000 +frame2=0.000000 -0.377359 0.000000 +frame3=0.000000 -0.404242 0.000000 +frame4=0.000000 -0.431125 0.000000 +frame5=0.000000 -0.458008 0.000000 +frame6=0.000000 -0.284770 0.000000 +frame7=0.000000 -0.111531 0.000000 +frame10=0.000000 0.271022 0.000000 +frame14=0.000000 0.785624 0.000000 +frame19=0.000000 0.286992 0.000000 +frame49=0.000000 0.286992 0.000000 diff --git a/CONTENT/BT/ANIMS/RAPWRRI.ANI b/CONTENT/BT/ANIMS/RAPWRRI.ANI new file mode 100644 index 0000000..d26868c --- /dev/null +++ b/CONTENT/BT/ANIMS/RAPWRRI.ANI @@ -0,0 +1,166 @@ +[LAB_ONLY] + +[HEADER] +framecount=11 +framerate=30 +skeletonfile=rap.skl +jointcount=8 + +[Time] +frame1=0 +frame2=0.0333333 +frame3=0.0666667 +frame4=0.1 +frame5=0.133333 +frame6=0.166667 +frame7=0.2 +frame10=0.3 +frame14=0.433333 +frame19=0.6 +frame49=1.6 + +[JointIndices] +jointlocal=0 +jointshakey=3 +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=11 +jointrknee=12 +jointrankle=13 + +[JointType] +jointlocal=balltranslate +jointshakey=ball +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=1.188747 0.000000 0.000000 +jointlknee=-0.514490 0.000000 0.000000 +jointlankle=-0.669145 0.000000 0.000000 +jointrthigh=-0.274090 0.000000 0.000000 +jointrknee=-0.900455 0.000000 0.000000 +jointrankle=0.659576 0.000000 0.000000 +[frame2] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.833014 0.000000 0.000000 +jointlknee=-0.147361 0.000000 0.000000 +jointlankle=-0.687178 0.000000 0.000000 +jointrthigh=-0.379368 0.000000 0.000000 +jointrknee=-0.693880 0.000000 0.000000 +jointrankle=0.061543 0.000000 0.000000 +[frame3] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.508306 0.000000 0.000000 +jointlknee=0.087128 0.000000 0.000000 +jointlankle=-0.592068 0.000000 0.000000 +jointrthigh=-0.484646 0.000000 0.000000 +jointrknee=-0.487305 0.000000 0.000000 +jointrankle=-0.536490 0.000000 0.000000 +[frame4] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.203444 0.000000 0.000000 +jointlknee=0.224291 0.000000 0.000000 +jointlankle=-0.424939 0.000000 0.000000 +jointrthigh=-0.589925 0.000000 0.000000 +jointrknee=-0.280730 0.000000 0.000000 +jointrankle=-1.134522 0.000000 0.000000 +[frame5] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.063661 0.000000 0.000000 +jointlknee=0.263829 0.000000 0.000000 +jointlankle=-0.201771 0.000000 0.000000 +jointrthigh=-0.695203 0.000000 0.000000 +jointrknee=-0.074155 0.000000 0.000000 +jointrankle=-1.732555 0.000000 0.000000 +[frame6] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.184501 0.000000 0.000000 +jointlknee=0.108459 0.000000 0.000000 +jointlankle=0.069049 0.000000 0.000000 +jointrthigh=-0.635662 0.000000 0.000000 +jointrknee=0.189552 0.000000 0.000000 +jointrankle=-1.539923 0.000000 0.000000 +[frame7] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.206626 0.000000 0.000000 +jointlknee=-0.151385 0.000000 0.000000 +jointlankle=0.352422 0.000000 0.000000 +jointrthigh=-0.576121 0.000000 0.000000 +jointrknee=0.453259 0.000000 0.000000 +jointrankle=-1.347291 0.000000 0.000000 +[frame10] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.264653 0.000000 0.000000 +jointlknee=-0.671676 0.000000 0.000000 +jointlankle=0.075955 0.000000 0.000000 +jointrthigh=0.118397 0.000000 0.000000 +jointrknee=0.513965 0.000000 0.000000 +jointrankle=-1.656553 0.000000 0.000000 +[frame14] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.323739 0.000000 0.000000 +jointlknee=-0.667821 0.000000 0.000000 +jointlankle=-1.607595 0.000000 0.000000 +jointrthigh=1.117519 0.000000 0.000000 +jointrknee=-0.293465 0.000000 0.000000 +jointrankle=-0.350551 0.000000 0.000000 +[frame19] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.564656 0.000000 0.000000 +jointlknee=-0.136135 0.000000 0.000000 +jointlankle=-1.505734 0.000000 0.000000 +jointrthigh=1.367497 0.000000 0.000000 +jointrknee=-0.984935 0.000000 0.000000 +jointrankle=-0.386294 0.000000 0.000000 +[frame49] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.564654 0.000000 0.000000 +jointlknee=-0.136141 0.000000 0.000000 +jointlankle=-1.505739 0.000000 0.000000 +jointrthigh=1.367486 0.000000 0.000000 +jointrknee=-0.984924 0.000000 0.000000 +jointrankle=-0.386287 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.362000 0.000000 +frame2=0.000000 -5.362000 25.143011 +frame3=0.000000 -5.362000 25.142982 +frame4=0.000000 -5.362000 25.142986 +frame5=0.000000 -5.362000 25.143009 +frame6=0.000000 -5.362000 24.410994 +frame7=0.000000 -5.362000 24.410994 +frame10=0.000000 -5.362000 25.519999 +frame14=0.000000 -5.362000 25.659000 +frame19=0.000000 -5.362000 25.653004 +frame49=0.000000 -5.362000 24.064301 + +[KeyJointPos] +frame1=0.000000 -0.350476 0.000000 +frame2=0.000000 -0.377359 0.000000 +frame3=0.000000 -0.404242 0.000000 +frame4=0.000000 -0.431125 0.000000 +frame5=0.000000 -0.458008 0.000000 +frame6=0.000000 -0.284770 0.000000 +frame7=0.000000 -0.111531 0.000000 +frame10=0.000000 0.271022 0.000000 +frame14=0.000000 0.785624 0.000000 +frame19=0.000000 0.286992 0.000000 +frame49=0.000000 0.286992 0.000000 diff --git a/CONTENT/BT/ANIMS/RAPWWL.ANI b/CONTENT/BT/ANIMS/RAPWWL.ANI new file mode 100644 index 0000000..5c30e21 --- /dev/null +++ b/CONTENT/BT/ANIMS/RAPWWL.ANI @@ -0,0 +1,164 @@ +[LAB_ONLY] + +[HEADER] +framecount=12 +framerate=30 +skeletonfile=rap.skl +jointcount=7 + +[Time] +frame1=0 +frame2=0.0333333 +frame3=0.0666667 +frame4=0.1 +frame5=0.133333 +frame6=0.166667 +frame7=0.2 +frame8=0.233333 +frame9=0.266667 +frame10=0.3 +frame11=0.333333 +frame13=0.4 + +[JointIndices] +jointlocal=0 +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=11 +jointrknee=12 +jointrankle=13 + +[JointType] +jointlocal=balltranslate +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.349120 0.000000 0.000000 +jointlknee=-0.748142 0.000000 0.000000 +jointlankle=0.513497 0.000000 0.000000 +jointrthigh=1.183946 0.000000 0.000000 +jointrknee=-0.503477 0.000000 0.000000 +jointrankle=-0.692461 0.000000 0.000000 +[frame2] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.441063 0.000000 0.000000 +jointlknee=-0.507315 0.000000 0.000000 +jointlankle=0.032275 0.000000 0.000000 +jointrthigh=0.912957 0.000000 0.000000 +jointrknee=-0.254790 0.000000 0.000000 +jointrankle=-0.659673 0.000000 0.000000 +[frame3] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.533007 0.000000 0.000000 +jointlknee=-0.266488 0.000000 0.000000 +jointlankle=-0.448946 0.000000 0.000000 +jointrthigh=0.667028 0.000000 0.000000 +jointrknee=-0.087622 0.000000 0.000000 +jointrankle=-0.579306 0.000000 0.000000 +[frame4] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.624950 0.000000 0.000000 +jointlknee=-0.025661 0.000000 0.000000 +jointlankle=-0.930167 0.000000 0.000000 +jointrthigh=0.446059 0.000000 0.000000 +jointrknee=0.008210 0.000000 0.000000 +jointrankle=-0.451375 0.000000 0.000000 +[frame5] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.716894 0.000000 0.000000 +jointlknee=0.215166 0.000000 0.000000 +jointlankle=-1.411388 0.000000 0.000000 +jointrthigh=0.250118 0.000000 0.000000 +jointrknee=0.044995 0.000000 0.000000 +jointrankle=-0.298872 0.000000 0.000000 +[frame6] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.670630 0.000000 0.000000 +jointlknee=0.345447 0.000000 0.000000 +jointlankle=-1.272208 0.000000 0.000000 +jointrthigh=0.111085 0.000000 0.000000 +jointrknee=0.007360 0.000000 0.000000 +jointrankle=-0.114610 0.000000 0.000000 +[frame7] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.624366 0.000000 0.000000 +jointlknee=0.475727 0.000000 0.000000 +jointlankle=-1.133028 0.000000 0.000000 +jointrthigh=0.010961 0.000000 0.000000 +jointrknee=-0.078834 0.000000 0.000000 +jointrankle=0.065251 0.000000 0.000000 +[frame8] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.578102 0.000000 0.000000 +jointlknee=0.606008 0.000000 0.000000 +jointlankle=-0.993848 0.000000 0.000000 +jointrthigh=-0.041056 0.000000 0.000000 +jointrknee=-0.225896 0.000000 0.000000 +jointrankle=0.271280 0.000000 0.000000 +[frame9] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.252504 0.000000 0.000000 +jointlknee=0.507230 0.000000 0.000000 +jointlankle=-0.838959 0.000000 0.000000 +jointrthigh=-0.108415 0.000000 0.000000 +jointrknee=-0.323102 0.000000 0.000000 +jointrankle=0.430927 0.000000 0.000000 +[frame10] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.073093 0.000000 0.000000 +jointlknee=0.408453 0.000000 0.000000 +jointlankle=-0.684071 0.000000 0.000000 +jointrthigh=-0.132522 0.000000 0.000000 +jointrknee=-0.479301 0.000000 0.000000 +jointrankle=0.614241 0.000000 0.000000 +[frame11] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.398691 0.000000 0.000000 +jointlknee=0.309675 0.000000 0.000000 +jointlankle=-0.529182 0.000000 0.000000 +jointrthigh=-0.109790 0.000000 0.000000 +jointrknee=-0.699479 0.000000 0.000000 +jointrankle=0.797893 0.000000 0.000000 +[frame13] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=1.183946 0.000000 0.000000 +jointlknee=-0.503477 0.000000 0.000000 +jointlankle=-0.692461 0.000000 0.000000 +jointrthigh=-0.276916 0.000000 0.000000 +jointrknee=-0.895504 0.000000 0.000000 +jointrankle=0.654434 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.362000 0.000000 +frame2=0.000000 -5.362000 20.081032 +frame3=0.000000 -5.362000 20.081018 +frame4=0.000000 -5.362000 20.081020 +frame5=0.000000 -5.362000 20.081030 +frame6=0.000000 -5.362000 18.501780 +frame7=0.000000 -5.362000 18.501808 +frame8=0.000000 -5.362000 18.501808 +frame9=0.000000 -5.361930 16.562485 +frame10=0.000000 -5.361860 16.562492 +frame11=0.000000 -5.361790 16.562521 +frame13=0.000000 -5.362000 21.925508 + +[KeyJointPos] +frame1=0.000000 -0.350930 0.000000 +frame2=0.000000 -0.275146 0.000000 +frame3=0.000000 -0.199361 0.000000 +frame4=0.000000 -0.123577 0.000000 +frame5=0.000000 -0.047792 0.000000 +frame6=0.000000 0.031888 0.000000 +frame7=0.000000 0.111568 0.000000 +frame8=0.000000 0.191248 0.000000 +frame9=0.000000 0.122188 0.000000 +frame10=0.000000 0.053129 0.000000 +frame11=0.000000 -0.015931 0.000000 +frame13=0.000000 -0.350476 0.000000 diff --git a/CONTENT/BT/ANIMS/RAPWWR.ANI b/CONTENT/BT/ANIMS/RAPWWR.ANI new file mode 100644 index 0000000..1ec8153 --- /dev/null +++ b/CONTENT/BT/ANIMS/RAPWWR.ANI @@ -0,0 +1,164 @@ +[LAB_ONLY] + +[HEADER] +framecount=12 +framerate=30 +skeletonfile=rap.skl +jointcount=7 + +[Time] +frame1=0 +frame2=0.0333333 +frame3=0.0666667 +frame4=0.1 +frame5=0.133333 +frame6=0.166667 +frame7=0.2 +frame8=0.233333 +frame9=0.266667 +frame10=0.3 +frame11=0.333333 +frame13=0.4 + +[JointIndices] +jointlocal=0 +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=11 +jointrknee=12 +jointrankle=13 + +[JointType] +jointlocal=balltranslate +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=1.183948 0.000000 0.000000 +jointlknee=-0.503477 0.000000 0.000000 +jointlankle=-0.692461 0.000000 0.000000 +jointrthigh=-0.276916 0.000000 0.000000 +jointrknee=-0.895504 0.000000 0.000000 +jointrankle=0.654434 0.000000 0.000000 +[frame2] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.913551 0.000000 0.000000 +jointlknee=-0.258206 0.000000 0.000000 +jointlankle=-0.655345 0.000000 0.000000 +jointrthigh=-0.463699 0.000000 0.000000 +jointrknee=-0.543365 0.000000 0.000000 +jointrankle=0.137978 0.000000 0.000000 +[frame3] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.667611 0.000000 0.000000 +jointlknee=-0.089555 0.000000 0.000000 +jointlankle=-0.580540 0.000000 0.000000 +jointrthigh=-0.650482 0.000000 0.000000 +jointrknee=-0.191225 0.000000 0.000000 +jointrankle=-0.378478 0.000000 0.000000 +[frame4] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.445706 0.000000 0.000000 +jointlknee=0.008368 0.000000 0.000000 +jointlankle=-0.453697 0.000000 0.000000 +jointrthigh=-0.683688 0.000000 0.000000 +jointrknee=0.011970 0.000000 0.000000 +jointrankle=-0.894933 0.000000 0.000000 +[frame5] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.254623 0.000000 0.000000 +jointlknee=0.037673 0.000000 0.000000 +jointlankle=-0.287510 0.000000 0.000000 +jointrthigh=-0.716894 0.000000 0.000000 +jointrknee=0.215166 0.000000 0.000000 +jointrankle=-1.411388 0.000000 0.000000 +[frame6] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.110192 0.000000 0.000000 +jointlknee=0.008395 0.000000 0.000000 +jointlankle=-0.117375 0.000000 0.000000 +jointrthigh=-0.670630 0.000000 0.000000 +jointrknee=0.345447 0.000000 0.000000 +jointrankle=-1.272208 0.000000 0.000000 +[frame7] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.010012 0.000000 0.000000 +jointlknee=-0.079862 0.000000 0.000000 +jointlankle=0.066969 0.000000 0.000000 +jointrthigh=-0.624366 0.000000 0.000000 +jointrknee=0.475727 0.000000 0.000000 +jointrankle=-1.133028 0.000000 0.000000 +[frame8] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.041821 0.000000 0.000000 +jointlknee=-0.225980 0.000000 0.000000 +jointlankle=0.265716 0.000000 0.000000 +jointrthigh=-0.578102 0.000000 0.000000 +jointrknee=0.606008 0.000000 0.000000 +jointrankle=-0.993848 0.000000 0.000000 +[frame9] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.107036 0.000000 0.000000 +jointlknee=-0.325050 0.000000 0.000000 +jointlankle=0.431768 0.000000 0.000000 +jointrthigh=-0.252504 0.000000 0.000000 +jointrknee=0.507230 0.000000 0.000000 +jointrankle=-0.838959 0.000000 0.000000 +[frame10] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.133122 0.000000 0.000000 +jointlknee=-0.479206 0.000000 0.000000 +jointlankle=0.610237 0.000000 0.000000 +jointrthigh=0.073093 0.000000 0.000000 +jointrknee=0.408453 0.000000 0.000000 +jointrankle=-0.684071 0.000000 0.000000 +[frame11] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.107479 0.000000 0.000000 +jointlknee=-0.706719 0.000000 0.000000 +jointlankle=0.807569 0.000000 0.000000 +jointrthigh=0.398691 0.000000 0.000000 +jointrknee=0.309675 0.000000 0.000000 +jointrankle=-0.529182 0.000000 0.000000 +[frame13] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.273434 0.000000 0.000000 +jointlknee=-0.901590 0.000000 0.000000 +jointlankle=0.660736 0.000000 0.000000 +jointrthigh=1.183946 0.000000 0.000000 +jointrknee=-0.503477 0.000000 0.000000 +jointrankle=-0.692461 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.362000 0.000000 +frame2=0.000000 -5.362000 20.025013 +frame3=0.000000 -5.362000 20.024984 +frame4=0.000000 -5.362000 20.025017 +frame5=0.000000 -5.362000 20.024982 +frame6=0.000000 -5.362000 18.610956 +frame7=0.000000 -5.362000 18.611013 +frame8=0.000000 -5.362000 18.611013 +frame9=0.000000 -5.362000 16.529955 +frame10=0.000000 -5.362000 16.530020 +frame11=0.000000 -5.362000 16.530020 +frame13=0.000031 -5.362000 21.990025 + +[KeyJointPos] +frame1=0.000000 -0.350476 0.000000 +frame2=0.000000 -0.274805 0.000000 +frame3=0.000000 -0.199134 0.000000 +frame4=0.000000 -0.123463 0.000000 +frame5=0.000000 -0.047792 0.000000 +frame6=0.000000 0.031861 0.000000 +frame7=0.000000 0.111514 0.000000 +frame8=0.000000 0.191169 0.000000 +frame9=0.000000 0.122135 0.000000 +frame10=0.000000 0.053102 0.000000 +frame11=0.000000 -0.015931 0.000000 +frame13=0.000000 -0.350476 0.000000 diff --git a/CONTENT/BT/ANIMS/SNDBBL.ANI b/CONTENT/BT/ANIMS/SNDBBL.ANI new file mode 100644 index 0000000..865cb1f --- /dev/null +++ b/CONTENT/BT/ANIMS/SNDBBL.ANI @@ -0,0 +1,142 @@ +[LAB_ONLY] + +[HEADER] +framecount=10 +framerate=30 +skeletonfile=snd.skl +jointcount=7 + +[Time] +frame1=0 +frame3=0.0666667 +frame5=0.133333 +frame6=0.166667 +frame7=0.2 +frame8=0.233333 +frame9=0.266667 +frame10=0.3 +frame12=0.366667 +frame14=0.433333 + +[JointIndices] +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 +jointlocal=0 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate + +[frame1] +jointlthigh=0.395614 0.000000 0.000000 +jointlknee=-0.220767 0.000000 0.000000 +jointlankle=0.133954 0.000000 0.000000 +jointrthigh=-0.489790 0.000000 0.000000 +jointrknee=-0.478915 0.000000 0.000000 +jointrankle=0.634445 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame3] +jointlthigh=0.345866 0.000000 0.000000 +jointlknee=-0.737504 0.000000 0.000000 +jointlankle=0.377070 0.000000 0.000000 +jointrthigh=-0.317817 0.000000 0.000000 +jointrknee=-0.523450 0.000000 0.000000 +jointrankle=0.671760 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.006545 +[frame5] +jointlthigh=0.296118 0.000000 0.000000 +jointlknee=-1.254241 0.000000 0.000000 +jointlankle=0.620185 0.000000 0.000000 +jointrthigh=-0.215133 0.000000 0.000000 +jointrknee=-0.377098 0.000000 0.000000 +jointrankle=0.587595 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.013090 +[frame6] +jointlthigh=0.224179 0.000000 0.000000 +jointlknee=-1.241145 0.000000 0.000000 +jointlankle=0.444215 0.000000 0.000000 +jointrthigh=-0.100413 0.000000 0.000000 +jointrknee=-0.460735 0.000000 0.000000 +jointrankle=0.557659 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.013963 +[frame7] +jointlthigh=0.152239 0.000000 0.000000 +jointlknee=-1.228050 0.000000 0.000000 +jointlankle=0.268245 0.000000 0.000000 +jointrthigh=0.005775 0.000000 0.000000 +jointrknee=-0.516169 0.000000 0.000000 +jointrankle=0.508165 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.014835 +[frame8] +jointlthigh=0.080300 0.000000 0.000000 +jointlknee=-1.214954 0.000000 0.000000 +jointlankle=0.092274 0.000000 0.000000 +jointrthigh=0.112345 0.000000 0.000000 +jointrknee=-0.524709 0.000000 0.000000 +jointrankle=0.411561 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.015708 +[frame9] +jointlthigh=0.008361 0.000000 0.000000 +jointlknee=-1.201858 0.000000 0.000000 +jointlankle=-0.083696 0.000000 0.000000 +jointrthigh=0.182575 0.000000 0.000000 +jointrknee=-0.464924 0.000000 0.000000 +jointrankle=0.283045 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.016581 +[frame10] +jointlthigh=-0.063579 0.000000 0.000000 +jointlknee=-1.188763 0.000000 0.000000 +jointlankle=-0.259667 0.000000 0.000000 +jointrthigh=0.204991 0.000000 0.000000 +jointrknee=-0.351806 0.000000 0.000000 +jointrankle=0.147143 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.017453 +[frame12] +jointlthigh=-0.277734 0.000000 0.000000 +jointlknee=-0.830676 0.000000 0.000000 +jointlankle=0.185311 0.000000 0.000000 +jointrthigh=0.330862 0.000000 0.000000 +jointrknee=-0.368280 0.000000 0.000000 +jointrankle=0.192704 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.008727 +[frame14] +jointlthigh=-0.491890 0.000000 0.000000 +jointlknee=-0.472590 0.000000 0.000000 +jointlankle=0.630289 0.000000 0.000000 +jointrthigh=0.395614 0.000000 0.000000 +jointrknee=-0.220767 0.000000 0.000000 +jointrankle=0.133954 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame3=0.000000 -5.350000 -14.646977 +frame5=0.000000 -5.350000 -14.646971 +frame6=0.000000 -5.350000 -13.574525 +frame7=0.000000 -5.350000 -13.574511 +frame8=0.000000 -5.350000 -13.574525 +frame9=0.000000 -5.350000 -13.574518 +frame10=0.000000 -5.350000 -13.574511 +frame12=0.000000 -5.350000 -11.933628 +frame14=0.000000 -5.350000 -11.933628 + +[KeyJointPos] +frame1=0.000000 -0.273189 0.000000 +frame3=0.039499 -0.173977 0.000000 +frame5=0.080296 -0.075032 0.000000 +frame6=0.085441 -0.090006 0.000000 +frame7=0.090559 -0.104985 0.000000 +frame8=0.095652 -0.119969 0.000000 +frame9=0.100718 -0.134957 0.000000 +frame10=0.105758 -0.149948 0.000000 +frame12=0.052339 -0.211379 0.000000 +frame14=0.000000 -0.273276 0.000000 diff --git a/CONTENT/BT/ANIMS/SNDBBLI.ANI b/CONTENT/BT/ANIMS/SNDBBLI.ANI new file mode 100644 index 0000000..36795e3 --- /dev/null +++ b/CONTENT/BT/ANIMS/SNDBBLI.ANI @@ -0,0 +1,82 @@ +[LAB_ONLY] + +[HEADER] +framecount=4 +framerate=30 +skeletonfile=snd.skl +jointcount=8 + +[Time] +frame1=0 +frame5=0.133333 +frame10=0.3 +frame14=0.433333 + +[JointIndices] +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=0.395614 0.000000 0.000000 +jointlknee=-0.220767 0.000000 0.000000 +jointlankle=0.133954 0.000000 0.000000 +jointrthigh=-0.489790 0.000000 0.000000 +jointrknee=-0.478915 0.000000 0.000000 +jointrankle=0.634445 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame5] +jointlthigh=0.296118 0.000000 0.000000 +jointlknee=-1.254241 0.000000 0.000000 +jointlankle=0.620185 0.000000 0.000000 +jointrthigh=-0.215133 0.000000 0.000000 +jointrknee=-0.377098 0.000000 0.000000 +jointrankle=0.587595 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.009163 +jointshakey=0.000000 0.000000 -0.009163 +[frame10] +jointlthigh=-0.098360 0.000000 0.000000 +jointlknee=-1.177303 0.000000 0.000000 +jointlankle=-0.232991 0.000000 0.000000 +jointrthigh=0.198357 0.000000 0.000000 +jointrknee=-0.335459 0.000000 0.000000 +jointrankle=0.133389 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.011345 +jointshakey=0.000000 0.000000 -0.011345 +[frame14] +jointlthigh=-0.491890 0.000000 0.000000 +jointlknee=-0.472590 0.000000 0.000000 +jointlankle=0.630289 0.000000 0.000000 +jointrthigh=0.395614 0.000000 0.000000 +jointrknee=-0.220767 0.000000 0.000000 +jointrankle=0.133954 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame5=0.000000 -5.350000 -14.646974 +frame10=0.000000 -5.350000 -13.574518 +frame14=0.000000 -5.350000 -11.933628 + +[KeyJointPos] +frame1=0.000000 -0.273189 0.000000 +frame5=0.000000 -0.074506 0.000000 +frame10=0.000000 -0.149024 0.000000 +frame14=0.000000 -0.273276 0.000000 diff --git a/CONTENT/BT/ANIMS/SNDBBR.ANI b/CONTENT/BT/ANIMS/SNDBBR.ANI new file mode 100644 index 0000000..80da9b0 --- /dev/null +++ b/CONTENT/BT/ANIMS/SNDBBR.ANI @@ -0,0 +1,142 @@ +[LAB_ONLY] + +[HEADER] +framecount=10 +framerate=30 +skeletonfile=snd.skl +jointcount=7 + +[Time] +frame1=0 +frame3=0.0666667 +frame5=0.133333 +frame6=0.166667 +frame7=0.2 +frame8=0.233333 +frame9=0.266667 +frame10=0.3 +frame12=0.366667 +frame14=0.433333 + +[JointIndices] +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 +jointlocal=0 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate + +[frame1] +jointlthigh=-0.488771 0.000000 0.000000 +jointlknee=-0.480292 0.000000 0.000000 +jointlankle=0.634804 0.000000 0.000000 +jointrthigh=0.395614 0.000000 0.000000 +jointrknee=-0.220767 0.000000 0.000000 +jointrankle=0.133954 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame3] +jointlthigh=-0.322532 0.000000 0.000000 +jointlknee=-0.507774 0.000000 0.000000 +jointlankle=0.660845 0.000000 0.000000 +jointrthigh=0.345866 0.000000 0.000000 +jointrknee=-0.737504 0.000000 0.000000 +jointrankle=0.377070 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.006545 +[frame5] +jointlthigh=-0.232567 0.000000 0.000000 +jointlknee=-0.328183 0.000000 0.000000 +jointlankle=0.556160 0.000000 0.000000 +jointrthigh=0.296118 0.000000 0.000000 +jointrknee=-1.254241 0.000000 0.000000 +jointrankle=0.620185 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.013090 +[frame6] +jointlthigh=-0.109046 0.000000 0.000000 +jointlknee=-0.421174 0.000000 0.000000 +jointlankle=0.526245 0.000000 0.000000 +jointrthigh=0.225096 0.000000 0.000000 +jointrknee=-1.243241 0.000000 0.000000 +jointrankle=0.446081 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.013963 +[frame7] +jointlthigh=0.001346 0.000000 0.000000 +jointlknee=-0.473082 0.000000 0.000000 +jointlankle=0.468445 0.000000 0.000000 +jointrthigh=0.154074 0.000000 0.000000 +jointrknee=-1.232242 0.000000 0.000000 +jointrankle=0.271977 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.014835 +[frame8] +jointlthigh=0.097983 0.000000 0.000000 +jointlknee=-0.485599 0.000000 0.000000 +jointlankle=0.385177 0.000000 0.000000 +jointrthigh=0.083053 0.000000 0.000000 +jointrknee=-1.221242 0.000000 0.000000 +jointrankle=0.097874 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.015708 +[frame9] +jointlthigh=0.169414 0.000000 0.000000 +jointlknee=-0.430318 0.000000 0.000000 +jointlankle=0.259440 0.000000 0.000000 +jointrthigh=0.012031 0.000000 0.000000 +jointrknee=-1.210243 0.000000 0.000000 +jointrankle=-0.076230 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.016581 +[frame10] +jointlthigh=0.180488 0.000000 0.000000 +jointlknee=-0.218513 0.000000 0.000000 +jointlankle=0.037012 0.000000 0.000000 +jointrthigh=-0.058991 0.000000 0.000000 +jointrknee=-1.199244 0.000000 0.000000 +jointrankle=-0.250334 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.017453 +[frame12] +jointlthigh=0.313178 0.000000 0.000000 +jointlknee=-0.320500 0.000000 0.000000 +jointlankle=0.161146 0.000000 0.000000 +jointrthigh=-0.274390 0.000000 0.000000 +jointrknee=-0.839079 0.000000 0.000000 +jointrankle=0.192055 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.008727 +[frame14] +jointlthigh=0.395614 0.000000 0.000000 +jointlknee=-0.220767 0.000000 0.000000 +jointlankle=0.133954 0.000000 0.000000 +jointrthigh=-0.489790 0.000000 0.000000 +jointrknee=-0.478915 0.000000 0.000000 +jointrankle=0.634445 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame3=0.000000 -5.350000 -14.550003 +frame5=0.000000 -5.350000 -14.550003 +frame6=0.000000 -5.350000 -13.577987 +frame7=0.000000 -5.350000 -13.577987 +frame8=0.000000 -5.350000 -13.578015 +frame9=0.000000 -5.350000 -13.577980 +frame10=0.000000 -5.350000 -13.578015 +frame12=0.000000 -5.350000 -11.872130 +frame14=0.000000 -5.350000 -11.872130 + +[KeyJointPos] +frame1=0.000000 -0.273189 0.000000 +frame3=-0.039499 -0.173977 0.000000 +frame5=-0.080296 -0.075032 0.000000 +frame6=-0.085441 -0.090004 0.000000 +frame7=-0.090559 -0.104980 0.000000 +frame8=-0.095652 -0.119961 0.000000 +frame9=-0.100718 -0.134946 0.000000 +frame10=-0.105759 -0.149935 0.000000 +frame12=-0.052339 -0.211329 0.000000 +frame14=0.000000 -0.273189 0.000000 diff --git a/CONTENT/BT/ANIMS/SNDBBRI.ANI b/CONTENT/BT/ANIMS/SNDBBRI.ANI new file mode 100644 index 0000000..5a15612 --- /dev/null +++ b/CONTENT/BT/ANIMS/SNDBBRI.ANI @@ -0,0 +1,82 @@ +[LAB_ONLY] + +[HEADER] +framecount=4 +framerate=30 +skeletonfile=snd.skl +jointcount=8 + +[Time] +frame1=0 +frame5=0.133333 +frame10=0.3 +frame14=0.433333 + +[JointIndices] +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=-0.488771 0.000000 0.000000 +jointlknee=-0.480292 0.000000 0.000000 +jointlankle=0.634804 0.000000 0.000000 +jointrthigh=0.395614 0.000000 0.000000 +jointrknee=-0.220767 0.000000 0.000000 +jointrankle=0.133954 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame5] +jointlthigh=-0.232567 0.000000 0.000000 +jointlknee=-0.328183 0.000000 0.000000 +jointlankle=0.556160 0.000000 0.000000 +jointrthigh=0.296118 0.000000 0.000000 +jointrknee=-1.254241 0.000000 0.000000 +jointrankle=0.620185 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.009163 +jointshakey=0.000000 0.000000 0.009163 +[frame10] +jointlthigh=0.180383 0.000000 0.000000 +jointlknee=-0.288658 0.000000 0.000000 +jointlankle=0.110245 0.000000 0.000000 +jointrthigh=-0.097648 0.000000 0.000000 +jointrknee=-1.171596 0.000000 0.000000 +jointrankle=-0.239320 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.011345 +jointshakey=0.000000 0.000000 0.011345 +[frame14] +jointlthigh=0.395614 0.000000 0.000000 +jointlknee=-0.220767 0.000000 0.000000 +jointlankle=0.133954 0.000000 0.000000 +jointrthigh=-0.489790 0.000000 0.000000 +jointrknee=-0.478915 0.000000 0.000000 +jointrankle=0.634445 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame5=0.000000 -5.350000 -14.550003 +frame10=0.000000 -5.350000 -13.577997 +frame14=0.000000 -5.350000 -11.872130 + +[KeyJointPos] +frame1=0.000000 -0.273189 0.000000 +frame5=0.000000 -0.074506 0.000000 +frame10=0.000000 -0.149012 0.000000 +frame14=0.000000 -0.273189 0.000000 diff --git a/CONTENT/BT/ANIMS/SNDBMP.ANI b/CONTENT/BT/ANIMS/SNDBMP.ANI new file mode 100644 index 0000000..4a6970e --- /dev/null +++ b/CONTENT/BT/ANIMS/SNDBMP.ANI @@ -0,0 +1,80 @@ +[LAB_ONLY] + +[HEADER] +framecount=3 +framerate=30 +skeletonfile=snd.skl +jointcount=10 + +[Time] +frame1=0 +frame8=0.233333 +frame15=0.466667 + +[JointIndices] +jointhip=1 +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 +jointrshoulder=4 +jointlshoulder=6 +jointlocal=0 + +[JointType] +jointhip=hingex +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointrshoulder=hingex +jointlshoulder=hingex +jointlocal=balltranslate + +[frame1] +jointhip=-0.208689 0.000000 0.000000 +jointlthigh=0.668932 0.000000 0.000000 +jointlknee=-0.021625 0.000000 0.000000 +jointlankle=0.154636 0.000000 0.000000 +jointrthigh=-0.924082 0.000000 0.000000 +jointrknee=-0.950576 0.000000 0.000000 +jointrankle=-0.043616 0.000000 0.000000 +jointrshoulder=0.208689 0.000000 0.000000 +jointlshoulder=0.208689 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame8] +jointhip=0.349066 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointrshoulder=0.000000 0.000000 0.000000 +jointlshoulder=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame15] +jointhip=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointrshoulder=0.000000 0.000000 0.000000 +jointlshoulder=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame8=0.000000 -5.350000 0.000000 +frame15=0.000000 -5.350000 0.000000 + +[KeyJointPos] +frame1=0.000000 0.248415 0.000000 +frame8=0.000000 0.000000 0.000000 +frame15=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/SNDBMPI.ANI b/CONTENT/BT/ANIMS/SNDBMPI.ANI new file mode 100644 index 0000000..4a6970e --- /dev/null +++ b/CONTENT/BT/ANIMS/SNDBMPI.ANI @@ -0,0 +1,80 @@ +[LAB_ONLY] + +[HEADER] +framecount=3 +framerate=30 +skeletonfile=snd.skl +jointcount=10 + +[Time] +frame1=0 +frame8=0.233333 +frame15=0.466667 + +[JointIndices] +jointhip=1 +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 +jointrshoulder=4 +jointlshoulder=6 +jointlocal=0 + +[JointType] +jointhip=hingex +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointrshoulder=hingex +jointlshoulder=hingex +jointlocal=balltranslate + +[frame1] +jointhip=-0.208689 0.000000 0.000000 +jointlthigh=0.668932 0.000000 0.000000 +jointlknee=-0.021625 0.000000 0.000000 +jointlankle=0.154636 0.000000 0.000000 +jointrthigh=-0.924082 0.000000 0.000000 +jointrknee=-0.950576 0.000000 0.000000 +jointrankle=-0.043616 0.000000 0.000000 +jointrshoulder=0.208689 0.000000 0.000000 +jointlshoulder=0.208689 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame8] +jointhip=0.349066 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointrshoulder=0.000000 0.000000 0.000000 +jointlshoulder=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame15] +jointhip=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointrshoulder=0.000000 0.000000 0.000000 +jointlshoulder=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame8=0.000000 -5.350000 0.000000 +frame15=0.000000 -5.350000 0.000000 + +[KeyJointPos] +frame1=0.000000 0.248415 0.000000 +frame8=0.000000 0.000000 0.000000 +frame15=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/SNDBSLI.ANI b/CONTENT/BT/ANIMS/SNDBSLI.ANI new file mode 100644 index 0000000..57977fe --- /dev/null +++ b/CONTENT/BT/ANIMS/SNDBSLI.ANI @@ -0,0 +1,82 @@ +[LAB_ONLY] + +[HEADER] +framecount=4 +framerate=30 +skeletonfile=snd.skl +jointcount=8 + +[Time] +frame1=0 +frame15=0.466667 +frame26=0.833333 +frame35=1.13333 + +[JointIndices] +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=0.412577 0.000000 0.000000 +jointlknee=-0.267172 0.000000 0.000000 +jointlankle=0.163489 0.000000 0.000000 +jointrthigh=-0.491544 0.000000 0.000000 +jointrknee=-0.473590 0.000000 0.000000 +jointrankle=0.630928 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame15] +jointlthigh=0.356075 0.000000 0.000000 +jointlknee=-0.458147 0.000000 0.000000 +jointlankle=0.299338 0.000000 0.000000 +jointrthigh=-0.318334 0.000000 0.000000 +jointrknee=-0.226909 0.000000 0.000000 +jointrankle=0.543921 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.009163 +jointshakey=0.000000 0.000000 -0.009163 +[frame26] +jointlthigh=0.163888 0.000000 0.000000 +jointlknee=-0.226755 0.000000 0.000000 +jointlankle=0.113602 0.000000 0.000000 +jointrthigh=-0.105608 0.000000 0.000000 +jointrknee=-0.163046 0.000000 0.000000 +jointrankle=0.270057 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.004573 +jointshakey=0.000000 0.000000 -0.004573 +[frame35] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame15=0.000000 -5.350000 -3.622714 +frame26=0.000000 -5.350000 -3.426955 +frame35=0.000000 -5.350000 -2.954667 + +[KeyJointPos] +frame1=0.000000 -0.273276 0.000000 +frame15=0.000000 -0.074506 0.000000 +frame26=0.000000 -0.030821 0.000000 +frame35=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/SNDBSRI.ANI b/CONTENT/BT/ANIMS/SNDBSRI.ANI new file mode 100644 index 0000000..df8a738 --- /dev/null +++ b/CONTENT/BT/ANIMS/SNDBSRI.ANI @@ -0,0 +1,82 @@ +[LAB_ONLY] + +[HEADER] +framecount=4 +framerate=30 +skeletonfile=snd.skl +jointcount=8 + +[Time] +frame1=0 +frame15=0.466667 +frame26=0.833333 +frame35=1.13333 + +[JointIndices] +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=-0.491890 0.000000 0.000000 +jointlknee=-0.472590 0.000000 0.000000 +jointlankle=0.630289 0.000000 0.000000 +jointrthigh=0.395614 0.000000 0.000000 +jointrknee=-0.220767 0.000000 0.000000 +jointrankle=0.133954 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame15] +jointlthigh=-0.291309 0.000000 0.000000 +jointlknee=-0.226886 0.000000 0.000000 +jointlankle=0.543906 0.000000 0.000000 +jointrthigh=0.356066 0.000000 0.000000 +jointrknee=-0.458126 0.000000 0.000000 +jointrankle=0.299324 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.009163 +jointshakey=0.000000 0.000000 0.009163 +[frame26] +jointlthigh=-0.123992 0.000000 0.000000 +jointlknee=-0.329948 0.000000 0.000000 +jointlankle=0.357515 0.000000 0.000000 +jointrthigh=0.163888 0.000000 0.000000 +jointrknee=-0.226755 0.000000 0.000000 +jointrankle=0.113602 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.004573 +jointshakey=0.000000 0.000000 0.004573 +[frame35] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame15=0.000000 -5.350000 -3.622714 +frame26=0.000000 -5.350000 -3.426955 +frame35=0.000000 -5.350000 -2.954667 + +[KeyJointPos] +frame1=0.000000 -0.273276 0.000000 +frame15=0.000000 -0.074506 0.000000 +frame26=0.000000 -0.030821 0.000000 +frame35=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/SNDGGL.ANI b/CONTENT/BT/ANIMS/SNDGGL.ANI new file mode 100644 index 0000000..899b23f --- /dev/null +++ b/CONTENT/BT/ANIMS/SNDGGL.ANI @@ -0,0 +1,142 @@ +[LAB_ONLY] + +[HEADER] +framecount=10 +framerate=30 +skeletonfile=snd.skl +jointcount=7 + +[Time] +frame1=0 +frame4=0.1 +frame6=0.166667 +frame8=0.233333 +frame9=0.266667 +frame10=0.3 +frame11=0.333333 +frame13=0.4 +frame17=0.533333 +frame20=0.633333 + +[JointIndices] +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 +jointlocal=0 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate + +[frame1] +jointlthigh=-0.056411 0.000000 0.000000 +jointlknee=-0.233080 0.000000 0.000000 +jointlankle=0.287536 0.000000 0.000000 +jointrthigh=-0.049463 0.000000 0.000000 +jointrknee=-0.814273 0.000000 0.000000 +jointrankle=-0.499957 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.026180 +[frame4] +jointlthigh=0.219437 0.000000 0.000000 +jointlknee=-0.745695 0.000000 0.000000 +jointlankle=0.349263 0.000000 0.000000 +jointrthigh=-0.206844 0.000000 0.000000 +jointrknee=-0.536251 0.000000 0.000000 +jointrankle=-0.599763 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.010472 +[frame6] +jointlthigh=0.295355 0.000000 0.000000 +jointlknee=-0.626783 0.000000 0.000000 +jointlankle=0.508165 0.000000 0.000000 +jointrthigh=-0.379766 0.000000 0.000000 +jointrknee=-0.461936 0.000000 0.000000 +jointrankle=-0.457974 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame8] +jointlthigh=0.546616 0.000000 0.000000 +jointlknee=-0.509837 0.000000 0.000000 +jointlankle=0.344439 0.000000 0.000000 +jointrthigh=-0.526442 0.000000 0.000000 +jointrknee=-0.448430 0.000000 0.000000 +jointrankle=-0.435926 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.015513 +[frame9] +jointlthigh=0.508453 0.000000 0.000000 +jointlknee=-0.121196 0.000000 0.000000 +jointlankle=0.212120 0.000000 0.000000 +jointrthigh=-0.599781 0.000000 0.000000 +jointrknee=-0.441676 0.000000 0.000000 +jointrankle=-0.424902 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.023270 +[frame10] +jointlthigh=0.551284 0.000000 0.000000 +jointlknee=-0.371516 0.000000 0.000000 +jointlankle=0.118813 0.000000 0.000000 +jointrthigh=-0.786215 0.000000 0.000000 +jointrknee=-0.160967 0.000000 0.000000 +jointrankle=-0.664480 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.031270 +[frame11] +jointlthigh=0.594115 0.000000 0.000000 +jointlknee=-0.621836 0.000000 0.000000 +jointlankle=0.025506 0.000000 0.000000 +jointrthigh=-0.818299 0.000000 0.000000 +jointrknee=-0.206802 0.000000 0.000000 +jointrankle=-0.645807 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.039270 +[frame13] +jointlthigh=0.497082 0.000000 0.000000 +jointlknee=-0.857665 0.000000 0.000000 +jointlankle=0.360449 0.000000 0.000000 +jointrthigh=-0.637836 0.000000 0.000000 +jointrknee=-0.439298 0.000000 0.000000 +jointrankle=-0.615832 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.038695 +[frame17] +jointlthigh=0.184588 0.000000 0.000000 +jointlknee=-0.702327 0.000000 0.000000 +jointlankle=0.513223 0.000000 0.000000 +jointrthigh=-0.301938 0.000000 0.000000 +jointrknee=-0.673879 0.000000 0.000000 +jointrankle=-0.591792 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.033906 +[frame20] +jointlthigh=-0.028855 0.000000 0.000000 +jointlknee=-0.307846 0.000000 0.000000 +jointlankle=0.334679 0.000000 0.000000 +jointrthigh=-0.049463 0.000000 0.000000 +jointrknee=-0.814273 0.000000 0.000000 +jointrankle=-0.499957 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.026180 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame4=0.000000 -5.350000 3.302994 +frame6=0.000000 -5.350000 9.516019 +frame8=0.000000 -5.350000 13.032018 +frame9=0.000000 -5.350000 13.031955 +frame10=0.000000 -5.355160 22.120516 +frame11=0.000000 -5.360320 22.120459 +frame13=0.000000 -5.350000 13.375512 +frame17=0.000000 -5.350000 8.910740 +frame20=0.000000 -5.350000 3.376008 + +[KeyJointPos] +frame1=-0.165129 0.097180 0.000000 +frame4=-0.068400 0.322626 0.000000 +frame6=0.000000 0.223580 0.000000 +frame8=-0.093185 -0.202556 0.000000 +frame9=-0.134822 -0.416108 0.000000 +frame10=-0.172866 -0.682463 0.000000 +frame11=-0.206658 -0.949037 0.000000 +frame13=-0.210781 -0.764277 0.000000 +frame17=-0.202274 -0.245332 0.000000 +frame20=-0.165129 0.097180 0.000000 diff --git a/CONTENT/BT/ANIMS/SNDGGLI.ANI b/CONTENT/BT/ANIMS/SNDGGLI.ANI new file mode 100644 index 0000000..dbfe819 --- /dev/null +++ b/CONTENT/BT/ANIMS/SNDGGLI.ANI @@ -0,0 +1,154 @@ +[LAB_ONLY] + +[HEADER] +framecount=10 +framerate=30 +skeletonfile=snd.skl +jointcount=8 + +[Time] +frame1=0 +frame4=0.1 +frame6=0.166667 +frame8=0.233333 +frame9=0.266667 +frame10=0.3 +frame11=0.333333 +frame13=0.4 +frame17=0.533333 +frame20=0.633333 + +[JointIndices] +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=-0.056411 0.000000 0.000000 +jointlknee=-0.233080 0.000000 0.000000 +jointlankle=0.287536 0.000000 0.000000 +jointrthigh=-0.049463 0.000000 0.000000 +jointrknee=-0.814273 0.000000 0.000000 +jointrankle=-0.499957 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.015708 +jointshakey=0.000000 0.000000 0.015708 +[frame4] +jointlthigh=0.219437 0.000000 0.000000 +jointlknee=-0.745695 0.000000 0.000000 +jointlankle=0.349263 0.000000 0.000000 +jointrthigh=-0.206844 0.000000 0.000000 +jointrknee=-0.536251 0.000000 0.000000 +jointrankle=-0.599763 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.003665 +jointshakey=0.000000 0.000000 0.003665 +[frame6] +jointlthigh=0.295355 0.000000 0.000000 +jointlknee=-0.626783 0.000000 0.000000 +jointlankle=0.508165 0.000000 0.000000 +jointrthigh=-0.379766 0.000000 0.000000 +jointrknee=-0.461936 0.000000 0.000000 +jointrankle=-0.457974 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.004363 +jointshakey=0.000000 0.000000 -0.004363 +[frame8] +jointlthigh=0.546616 0.000000 0.000000 +jointlknee=-0.509837 0.000000 0.000000 +jointlankle=0.344439 0.000000 0.000000 +jointrthigh=-0.526442 0.000000 0.000000 +jointrknee=-0.448430 0.000000 0.000000 +jointrankle=-0.435926 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.004363 +jointshakey=0.000000 0.000000 0.004363 +[frame9] +jointlthigh=0.508453 0.000000 0.000000 +jointlknee=-0.121196 0.000000 0.000000 +jointlankle=0.212120 0.000000 0.000000 +jointrthigh=-0.599781 0.000000 0.000000 +jointrknee=-0.441676 0.000000 0.000000 +jointrankle=-0.424902 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.008727 +jointshakey=0.000000 0.000000 0.008727 +[frame10] +jointlthigh=0.551284 0.000000 0.000000 +jointlknee=-0.371516 0.000000 0.000000 +jointlankle=0.118813 0.000000 0.000000 +jointrthigh=-0.786215 0.000000 0.000000 +jointrknee=-0.160967 0.000000 0.000000 +jointrankle=-0.664480 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.013090 +jointshakey=0.000000 0.000000 0.013090 +[frame11] +jointlthigh=0.594115 0.000000 0.000000 +jointlknee=-0.621836 0.000000 0.000000 +jointlankle=0.025506 0.000000 0.000000 +jointrthigh=-0.818299 0.000000 0.000000 +jointrknee=-0.206802 0.000000 0.000000 +jointrankle=-0.645807 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.017453 +jointshakey=0.000000 0.000000 0.017453 +[frame13] +jointlthigh=0.497082 0.000000 0.000000 +jointlknee=-0.857665 0.000000 0.000000 +jointlankle=0.360449 0.000000 0.000000 +jointrthigh=-0.637836 0.000000 0.000000 +jointrknee=-0.439298 0.000000 0.000000 +jointrankle=-0.615832 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.017065 +jointshakey=0.000000 0.000000 0.017065 +[frame17] +jointlthigh=0.184588 0.000000 0.000000 +jointlknee=-0.702327 0.000000 0.000000 +jointlankle=0.513223 0.000000 0.000000 +jointrthigh=-0.301938 0.000000 0.000000 +jointrknee=-0.673879 0.000000 0.000000 +jointrankle=-0.591792 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.016290 +jointshakey=0.000000 0.000000 0.016290 +[frame20] +jointlthigh=-0.028855 0.000000 0.000000 +jointlknee=-0.307846 0.000000 0.000000 +jointlankle=0.334679 0.000000 0.000000 +jointrthigh=-0.049463 0.000000 0.000000 +jointrknee=-0.814273 0.000000 0.000000 +jointrankle=-0.499957 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.015708 +jointshakey=0.000000 0.000000 0.015708 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame4=0.000000 -5.350000 3.302994 +frame6=0.000000 -5.350000 9.516019 +frame8=0.000000 -5.350000 13.032018 +frame9=0.000000 -5.350000 13.031955 +frame10=0.000000 -5.355160 22.120516 +frame11=0.000000 -5.360320 22.120459 +frame13=0.000000 -5.350000 13.375512 +frame17=0.000000 -5.350000 8.910740 +frame20=0.000000 -5.350000 3.376008 + +[KeyJointPos] +frame1=0.000000 0.099342 0.000000 +frame4=0.000000 0.322984 0.000000 +frame6=0.000000 0.223580 0.000000 +frame8=0.000000 -0.201833 0.000000 +frame9=0.000000 -0.414539 0.000000 +frame10=0.000000 -0.679760 0.000000 +frame11=0.000000 -0.944979 0.000000 +frame13=0.000000 -0.760198 0.000000 +frame17=0.000000 -0.241902 0.000000 +frame20=0.000000 0.099342 0.000000 diff --git a/CONTENT/BT/ANIMS/SNDGGR.ANI b/CONTENT/BT/ANIMS/SNDGGR.ANI new file mode 100644 index 0000000..4a54f84 --- /dev/null +++ b/CONTENT/BT/ANIMS/SNDGGR.ANI @@ -0,0 +1,142 @@ +[LAB_ONLY] + +[HEADER] +framecount=10 +framerate=30 +skeletonfile=snd.skl +jointcount=7 + +[Time] +frame1=0 +frame4=0.1 +frame6=0.166667 +frame8=0.233333 +frame9=0.266667 +frame10=0.3 +frame11=0.333333 +frame13=0.4 +frame17=0.533333 +frame20=0.633333 + +[JointIndices] +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 +jointlocal=0 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate + +[frame1] +jointlthigh=-0.049463 0.000000 0.000000 +jointlknee=-0.814273 0.000000 0.000000 +jointlankle=-0.499957 0.000000 0.000000 +jointrthigh=-0.056411 0.000000 0.000000 +jointrknee=-0.233080 0.000000 0.000000 +jointrankle=0.287536 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.026180 +[frame4] +jointlthigh=-0.206844 0.000000 0.000000 +jointlknee=-0.536251 0.000000 0.000000 +jointlankle=-0.599763 0.000000 0.000000 +jointrthigh=0.219437 0.000000 0.000000 +jointrknee=-0.745695 0.000000 0.000000 +jointrankle=0.349263 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.010472 +[frame6] +jointlthigh=-0.379766 0.000000 0.000000 +jointlknee=-0.461936 0.000000 0.000000 +jointlankle=-0.457974 0.000000 0.000000 +jointrthigh=0.295355 0.000000 0.000000 +jointrknee=-0.626783 0.000000 0.000000 +jointrankle=0.508165 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame8] +jointlthigh=-0.526442 0.000000 0.000000 +jointlknee=-0.448430 0.000000 0.000000 +jointlankle=-0.435926 0.000000 0.000000 +jointrthigh=0.546616 0.000000 0.000000 +jointrknee=-0.509837 0.000000 0.000000 +jointrankle=0.344439 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.015513 +[frame9] +jointlthigh=-0.599781 0.000000 0.000000 +jointlknee=-0.441676 0.000000 0.000000 +jointlankle=-0.424902 0.000000 0.000000 +jointrthigh=0.508453 0.000000 0.000000 +jointrknee=-0.121196 0.000000 0.000000 +jointrankle=0.212120 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.023270 +[frame10] +jointlthigh=-0.786215 0.000000 0.000000 +jointlknee=-0.160967 0.000000 0.000000 +jointlankle=-0.664480 0.000000 0.000000 +jointrthigh=0.551284 0.000000 0.000000 +jointrknee=-0.371516 0.000000 0.000000 +jointrankle=0.118813 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.031270 +[frame11] +jointlthigh=-0.818299 0.000000 0.000000 +jointlknee=-0.206802 0.000000 0.000000 +jointlankle=-0.645807 0.000000 0.000000 +jointrthigh=0.594115 0.000000 0.000000 +jointrknee=-0.621836 0.000000 0.000000 +jointrankle=0.025506 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.039270 +[frame13] +jointlthigh=-0.637836 0.000000 0.000000 +jointlknee=-0.439298 0.000000 0.000000 +jointlankle=-0.615832 0.000000 0.000000 +jointrthigh=0.497082 0.000000 0.000000 +jointrknee=-0.857665 0.000000 0.000000 +jointrankle=0.360449 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.038695 +[frame17] +jointlthigh=-0.301938 0.000000 0.000000 +jointlknee=-0.673879 0.000000 0.000000 +jointlankle=-0.591792 0.000000 0.000000 +jointrthigh=0.184588 0.000000 0.000000 +jointrknee=-0.702327 0.000000 0.000000 +jointrankle=0.513223 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.033906 +[frame20] +jointlthigh=-0.049463 0.000000 0.000000 +jointlknee=-0.814273 0.000000 0.000000 +jointlankle=-0.499957 0.000000 0.000000 +jointrthigh=-0.028855 0.000000 0.000000 +jointrknee=-0.307846 0.000000 0.000000 +jointrankle=0.334679 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.026180 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame4=0.000000 -5.350000 3.302994 +frame6=0.000000 -5.350000 9.516019 +frame8=0.000000 -5.350000 13.032018 +frame9=0.000000 -5.350000 13.031955 +frame10=0.000000 -5.355160 22.120516 +frame11=0.000000 -5.360320 22.120459 +frame13=0.000000 -5.350000 13.375512 +frame17=0.000000 -5.350000 8.910740 +frame20=0.000000 -5.350000 3.376008 + +[KeyJointPos] +frame1=0.165129 0.097180 0.000000 +frame4=0.068400 0.322626 0.000000 +frame6=0.000000 0.223580 0.000000 +frame8=0.093185 -0.202556 0.000000 +frame9=0.134822 -0.416108 0.000000 +frame10=0.172866 -0.682463 0.000000 +frame11=0.206658 -0.949037 0.000000 +frame13=0.210781 -0.764277 0.000000 +frame17=0.202274 -0.245332 0.000000 +frame20=0.165129 0.097180 0.000000 diff --git a/CONTENT/BT/ANIMS/SNDGGRI.ANI b/CONTENT/BT/ANIMS/SNDGGRI.ANI new file mode 100644 index 0000000..5215abd --- /dev/null +++ b/CONTENT/BT/ANIMS/SNDGGRI.ANI @@ -0,0 +1,154 @@ +[LAB_ONLY] + +[HEADER] +framecount=10 +framerate=30 +skeletonfile=snd.skl +jointcount=8 + +[Time] +frame1=0 +frame4=0.1 +frame6=0.166667 +frame8=0.233333 +frame9=0.266667 +frame10=0.3 +frame11=0.333333 +frame13=0.4 +frame17=0.533333 +frame20=0.633333 + +[JointIndices] +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=-0.049463 0.000000 0.000000 +jointlknee=-0.814273 0.000000 0.000000 +jointlankle=-0.499957 0.000000 0.000000 +jointrthigh=-0.056411 0.000000 0.000000 +jointrknee=-0.233080 0.000000 0.000000 +jointrankle=0.287536 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.015708 +jointshakey=0.000000 0.000000 -0.015708 +[frame4] +jointlthigh=-0.206844 0.000000 0.000000 +jointlknee=-0.536251 0.000000 0.000000 +jointlankle=-0.599763 0.000000 0.000000 +jointrthigh=0.219437 0.000000 0.000000 +jointrknee=-0.745695 0.000000 0.000000 +jointrankle=0.349263 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.003665 +jointshakey=0.000000 0.000000 -0.003665 +[frame6] +jointlthigh=-0.379766 0.000000 0.000000 +jointlknee=-0.461936 0.000000 0.000000 +jointlankle=-0.457974 0.000000 0.000000 +jointrthigh=0.295355 0.000000 0.000000 +jointrknee=-0.626783 0.000000 0.000000 +jointrankle=0.508165 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.004363 +jointshakey=0.000000 0.000000 0.004363 +[frame8] +jointlthigh=-0.526442 0.000000 0.000000 +jointlknee=-0.448430 0.000000 0.000000 +jointlankle=-0.435926 0.000000 0.000000 +jointrthigh=0.546616 0.000000 0.000000 +jointrknee=-0.509837 0.000000 0.000000 +jointrankle=0.344439 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.004363 +jointshakey=0.000000 0.000000 -0.004363 +[frame9] +jointlthigh=-0.599781 0.000000 0.000000 +jointlknee=-0.441676 0.000000 0.000000 +jointlankle=-0.424902 0.000000 0.000000 +jointrthigh=0.508453 0.000000 0.000000 +jointrknee=-0.121196 0.000000 0.000000 +jointrankle=0.212120 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.008727 +jointshakey=0.000000 0.000000 -0.008727 +[frame10] +jointlthigh=-0.786215 0.000000 0.000000 +jointlknee=-0.160967 0.000000 0.000000 +jointlankle=-0.664480 0.000000 0.000000 +jointrthigh=0.551284 0.000000 0.000000 +jointrknee=-0.371516 0.000000 0.000000 +jointrankle=0.118813 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.013090 +jointshakey=0.000000 0.000000 -0.013090 +[frame11] +jointlthigh=-0.818299 0.000000 0.000000 +jointlknee=-0.206802 0.000000 0.000000 +jointlankle=-0.645807 0.000000 0.000000 +jointrthigh=0.594115 0.000000 0.000000 +jointrknee=-0.621836 0.000000 0.000000 +jointrankle=0.025506 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.017453 +jointshakey=0.000000 0.000000 -0.017453 +[frame13] +jointlthigh=-0.637836 0.000000 0.000000 +jointlknee=-0.439298 0.000000 0.000000 +jointlankle=-0.615832 0.000000 0.000000 +jointrthigh=0.497082 0.000000 0.000000 +jointrknee=-0.857665 0.000000 0.000000 +jointrankle=0.360449 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.017065 +jointshakey=0.000000 0.000000 -0.017065 +[frame17] +jointlthigh=-0.301938 0.000000 0.000000 +jointlknee=-0.673879 0.000000 0.000000 +jointlankle=-0.591792 0.000000 0.000000 +jointrthigh=0.184588 0.000000 0.000000 +jointrknee=-0.702327 0.000000 0.000000 +jointrankle=0.513223 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.016290 +jointshakey=0.000000 0.000000 -0.016290 +[frame20] +jointlthigh=-0.049463 0.000000 0.000000 +jointlknee=-0.814273 0.000000 0.000000 +jointlankle=-0.499957 0.000000 0.000000 +jointrthigh=-0.028855 0.000000 0.000000 +jointrknee=-0.307846 0.000000 0.000000 +jointrankle=0.334679 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.015708 +jointshakey=0.000000 0.000000 -0.015708 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame4=0.000000 -5.350000 3.302994 +frame6=0.000000 -5.350000 9.516019 +frame8=0.000000 -5.350000 13.032018 +frame9=0.000000 -5.350000 13.031955 +frame10=0.000000 -5.355160 22.120516 +frame11=0.000000 -5.360320 22.120459 +frame13=0.000000 -5.350000 13.375512 +frame17=0.000000 -5.350000 8.910740 +frame20=0.000000 -5.350000 3.376008 + +[KeyJointPos] +frame1=0.000000 0.099342 0.000000 +frame4=0.000000 0.322984 0.000000 +frame6=0.000000 0.223580 0.000000 +frame8=0.000000 -0.201833 0.000000 +frame9=0.000000 -0.414539 0.000000 +frame10=0.000000 -0.679760 0.000000 +frame11=0.000000 -0.944979 0.000000 +frame13=0.000000 -0.760198 0.000000 +frame17=0.000000 -0.241902 0.000000 +frame20=0.000000 0.099342 0.000000 diff --git a/CONTENT/BT/ANIMS/SNDGSLI.ANI b/CONTENT/BT/ANIMS/SNDGSLI.ANI new file mode 100644 index 0000000..663ffe1 --- /dev/null +++ b/CONTENT/BT/ANIMS/SNDGSLI.ANI @@ -0,0 +1,106 @@ +[LAB_ONLY] + +[HEADER] +framecount=6 +framerate=30 +skeletonfile=snd.skl +jointcount=8 + +[Time] +frame1=0 +frame7=0.2 +frame9=0.266667 +frame11=0.333333 +frame15=0.466667 +frame23=0.733333 + +[JointIndices] +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=-0.037374 0.000000 0.000000 +jointlknee=-0.854337 0.000000 0.000000 +jointlankle=-0.471860 0.000000 0.000000 +jointrthigh=-0.094758 0.000000 0.000000 +jointrknee=-0.129419 0.000000 0.000000 +jointrankle=0.226978 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.015708 +jointshakey=0.000000 0.000000 -0.015708 +[frame7] +jointlthigh=0.068051 0.000000 0.000000 +jointlknee=-1.036499 0.000000 0.000000 +jointlankle=-0.081358 0.000000 0.000000 +jointrthigh=-0.068915 0.000000 0.000000 +jointrknee=-0.094123 0.000000 0.000000 +jointrankle=0.165075 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.011424 +jointshakey=0.000000 0.000000 -0.011424 +[frame9] +jointlthigh=0.081073 0.000000 0.000000 +jointlknee=-1.015152 0.000000 0.000000 +jointlankle=0.023671 0.000000 0.000000 +jointrthigh=-0.060300 0.000000 0.000000 +jointrknee=-0.082358 0.000000 0.000000 +jointrankle=0.144441 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.009996 +jointshakey=0.000000 0.000000 -0.009996 +[frame11] +jointlthigh=0.099666 0.000000 0.000000 +jointlknee=-1.043461 0.000000 0.000000 +jointlankle=0.186181 0.000000 0.000000 +jointrthigh=-0.051686 0.000000 0.000000 +jointrknee=-0.070592 0.000000 0.000000 +jointrankle=0.123806 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.008568 +jointshakey=0.000000 0.000000 -0.008568 +[frame15] +jointlthigh=0.106684 0.000000 0.000000 +jointlknee=-0.881667 0.000000 0.000000 +jointlankle=0.332216 0.000000 0.000000 +jointrthigh=-0.034457 0.000000 0.000000 +jointrknee=-0.047062 0.000000 0.000000 +jointrankle=0.082538 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.005712 +jointshakey=0.000000 0.000000 -0.005712 +[frame23] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame7=0.000000 -5.350000 1.304002 +frame9=0.000000 -5.350000 -0.133510 +frame11=0.000000 -5.350000 -0.133495 +frame15=0.000000 -5.350000 -1.709998 +frame23=0.000000 -5.350000 -2.894625 + +[KeyJointPos] +frame1=0.000000 0.099342 0.000000 +frame7=0.000000 0.066186 0.000000 +frame9=0.000000 0.052961 0.000000 +frame11=0.000000 0.047995 0.000000 +frame15=0.000000 0.033093 0.000000 +frame23=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/SNDGSRI.ANI b/CONTENT/BT/ANIMS/SNDGSRI.ANI new file mode 100644 index 0000000..1d18b7a --- /dev/null +++ b/CONTENT/BT/ANIMS/SNDGSRI.ANI @@ -0,0 +1,106 @@ +[LAB_ONLY] + +[HEADER] +framecount=6 +framerate=30 +skeletonfile=snd.skl +jointcount=8 + +[Time] +frame1=0 +frame7=0.2 +frame9=0.266667 +frame11=0.333333 +frame15=0.466667 +frame23=0.733333 + +[JointIndices] +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=-0.094758 0.000000 0.000000 +jointlknee=-0.129419 0.000000 0.000000 +jointlankle=0.226978 0.000000 0.000000 +jointrthigh=-0.037374 0.000000 0.000000 +jointrknee=-0.854337 0.000000 0.000000 +jointrankle=-0.471860 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.015708 +jointshakey=0.000000 0.000000 0.015708 +[frame7] +jointlthigh=-0.062440 0.000000 0.000000 +jointlknee=-0.111529 0.000000 0.000000 +jointlankle=0.176080 0.000000 0.000000 +jointrthigh=0.068051 0.000000 0.000000 +jointrknee=-1.036499 0.000000 0.000000 +jointrankle=-0.081358 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.011424 +jointshakey=0.000000 0.000000 0.011424 +[frame9] +jointlthigh=-0.051668 0.000000 0.000000 +jointlknee=-0.105565 0.000000 0.000000 +jointlankle=0.159114 0.000000 0.000000 +jointrthigh=0.081073 0.000000 0.000000 +jointrknee=-1.015152 0.000000 0.000000 +jointrankle=0.023671 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.009996 +jointshakey=0.000000 0.000000 0.009996 +[frame11] +jointlthigh=-0.040895 0.000000 0.000000 +jointlknee=-0.099601 0.000000 0.000000 +jointlankle=0.142147 0.000000 0.000000 +jointrthigh=0.099666 0.000000 0.000000 +jointrknee=-1.043461 0.000000 0.000000 +jointrankle=0.186181 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.008568 +jointshakey=0.000000 0.000000 0.008568 +[frame15] +jointlthigh=-0.019351 0.000000 0.000000 +jointlknee=-0.087674 0.000000 0.000000 +jointlankle=0.108215 0.000000 0.000000 +jointrthigh=0.106684 0.000000 0.000000 +jointrknee=-0.881667 0.000000 0.000000 +jointrankle=0.332216 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.005712 +jointshakey=0.000000 0.000000 0.005712 +[frame23] +jointlthigh=0.023739 0.000000 0.000000 +jointlknee=-0.063820 0.000000 0.000000 +jointlankle=0.040350 0.000000 0.000000 +jointrthigh=0.061303 0.000000 0.000000 +jointrknee=-0.165001 0.000000 0.000000 +jointrankle=0.104694 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame7=0.000000 -5.350000 1.304002 +frame9=0.000000 -5.350000 -0.133510 +frame11=0.000000 -5.350000 -0.133495 +frame15=0.000000 -5.350000 -1.709998 +frame23=0.000000 -5.350000 -2.894625 + +[KeyJointPos] +frame1=0.000000 0.099342 0.000000 +frame7=0.000000 0.066186 0.000000 +frame9=0.000000 0.052961 0.000000 +frame11=0.000000 0.047995 0.000000 +frame15=0.000000 0.033093 0.000000 +frame23=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/SNDRRL.ANI b/CONTENT/BT/ANIMS/SNDRRL.ANI new file mode 100644 index 0000000..00cbff4 --- /dev/null +++ b/CONTENT/BT/ANIMS/SNDRRL.ANI @@ -0,0 +1,120 @@ +[LAB_ONLY] + +[HEADER] +framecount=8 +framerate=30 +skeletonfile=snd.skl +jointcount=7 + +[Time] +frame1=0 +frame5=0.133333 +frame11=0.333333 +frame12=0.366667 +frame13=0.4 +frame14=0.433333 +frame15=0.466667 +frame16=0.5 + +[JointIndices] +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 +jointlocal=0 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate + +[frame1] +jointlthigh=-0.537472 0.000000 0.000000 +jointlknee=-0.428398 0.000000 0.000000 +jointlankle=-0.302139 0.000000 0.000000 +jointrthigh=0.746408 0.000000 0.000000 +jointrknee=-0.444553 0.000000 0.000000 +jointrankle=0.169035 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.013090 +[frame5] +jointlthigh=-0.924082 0.000000 0.000000 +jointlknee=-0.950576 0.000000 0.000000 +jointlankle=-0.043616 0.000000 0.000000 +jointrthigh=0.668932 0.000000 0.000000 +jointrknee=-0.021625 0.000000 0.000000 +jointrankle=0.154636 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame11] +jointlthigh=-0.072100 0.000000 0.000000 +jointlknee=-1.647696 0.000000 0.000000 +jointlankle=0.290388 0.000000 0.000000 +jointrthigh=0.260464 0.000000 0.000000 +jointrknee=-0.617438 0.000000 0.000000 +jointrankle=0.357105 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.026180 +[frame12] +jointlthigh=0.159246 0.000000 0.000000 +jointlknee=-1.733321 0.000000 0.000000 +jointlankle=0.459420 0.000000 0.000000 +jointrthigh=0.031336 0.000000 0.000000 +jointrknee=-0.631535 0.000000 0.000000 +jointrankle=0.600002 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.023998 +[frame13] +jointlthigh=0.390591 0.000000 0.000000 +jointlknee=-1.818947 0.000000 0.000000 +jointlankle=0.628453 0.000000 0.000000 +jointrthigh=-0.324411 0.000000 0.000000 +jointrknee=-0.260548 0.000000 0.000000 +jointrankle=0.585439 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.021817 +[frame14] +jointlthigh=0.509746 0.000000 0.000000 +jointlknee=-1.376155 0.000000 0.000000 +jointlankle=0.489124 0.000000 0.000000 +jointrthigh=-0.274542 0.000000 0.000000 +jointrknee=-0.746055 0.000000 0.000000 +jointrankle=0.562644 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.018908 +[frame15] +jointlthigh=0.628901 0.000000 0.000000 +jointlknee=-0.933363 0.000000 0.000000 +jointlankle=0.349795 0.000000 0.000000 +jointrthigh=-0.378897 0.000000 0.000000 +jointrknee=-0.746128 0.000000 0.000000 +jointrankle=0.310946 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.015999 +[frame16] +jointlthigh=0.748057 0.000000 0.000000 +jointlknee=-0.490570 0.000000 0.000000 +jointlankle=0.210466 0.000000 0.000000 +jointrthigh=-0.513851 0.000000 0.000000 +jointrknee=-0.501829 0.000000 0.000000 +jointrankle=-0.225325 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.013090 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame5=0.000000 -5.350000 34.817245 +frame11=0.000000 -5.350000 34.015007 +frame12=0.000000 -5.350000 35.306973 +frame13=0.000000 -5.350000 35.306973 +frame14=0.000000 -5.349999 34.443974 +frame15=0.000000 -5.349999 34.444088 +frame16=0.000000 -5.350000 34.443974 + +[KeyJointPos] +frame1=-0.080946 -0.025365 0.000000 +frame5=0.000000 0.248353 0.000000 +frame11=0.154077 -0.324877 0.000000 +frame12=0.143922 -0.212828 0.000000 +frame13=0.133278 -0.100795 0.000000 +frame14=0.115979 -0.075603 0.000000 +frame15=0.098535 -0.050459 0.000000 +frame16=0.080946 -0.025365 0.000000 diff --git a/CONTENT/BT/ANIMS/SNDRRLI.ANI b/CONTENT/BT/ANIMS/SNDRRLI.ANI new file mode 100644 index 0000000..93fc3dc --- /dev/null +++ b/CONTENT/BT/ANIMS/SNDRRLI.ANI @@ -0,0 +1,130 @@ +[LAB_ONLY] + +[HEADER] +framecount=8 +framerate=30 +skeletonfile=snd.skl +jointcount=8 + +[Time] +frame1=0 +frame5=0.133333 +frame11=0.333333 +frame12=0.366667 +frame13=0.4 +frame14=0.433333 +frame15=0.466667 +frame16=0.5 + +[JointIndices] +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=-0.543853 0.000000 0.000000 +jointlknee=-0.411503 0.000000 0.000000 +jointlankle=-0.315421 0.000000 0.000000 +jointrthigh=0.746408 0.000000 0.000000 +jointrknee=-0.444553 0.000000 0.000000 +jointrankle=0.169035 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.009163 +jointshakey=0.000000 0.000000 0.009163 +[frame5] +jointlthigh=-0.924082 0.000000 0.000000 +jointlknee=-0.950576 0.000000 0.000000 +jointlankle=-0.043616 0.000000 0.000000 +jointrthigh=0.668932 0.000000 0.000000 +jointrknee=-0.021625 0.000000 0.000000 +jointrankle=0.154636 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame11] +jointlthigh=-0.072100 0.000000 0.000000 +jointlknee=-1.647696 0.000000 0.000000 +jointlankle=0.290388 0.000000 0.000000 +jointrthigh=0.240939 0.000000 0.000000 +jointrknee=-0.567389 0.000000 0.000000 +jointrankle=0.326408 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.015708 +jointshakey=0.000000 0.000000 -0.015708 +[frame12] +jointlthigh=0.159246 0.000000 0.000000 +jointlknee=-1.733321 0.000000 0.000000 +jointlankle=0.459420 0.000000 0.000000 +jointrthigh=0.031336 0.000000 0.000000 +jointrknee=-0.631535 0.000000 0.000000 +jointrankle=0.600002 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.014181 +jointshakey=0.000000 0.000000 -0.014181 +[frame13] +jointlthigh=0.390591 0.000000 0.000000 +jointlknee=-1.818947 0.000000 0.000000 +jointlankle=0.628453 0.000000 0.000000 +jointrthigh=-0.348715 0.000000 0.000000 +jointrknee=-0.189813 0.000000 0.000000 +jointrankle=0.538823 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.012654 +jointshakey=0.000000 0.000000 -0.012654 +[frame14] +jointlthigh=0.509746 0.000000 0.000000 +jointlknee=-1.376155 0.000000 0.000000 +jointlankle=0.489124 0.000000 0.000000 +jointrthigh=-0.327179 0.000000 0.000000 +jointrknee=-0.646461 0.000000 0.000000 +jointrankle=0.590309 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.011490 +jointshakey=0.000000 0.000000 -0.011490 +[frame15] +jointlthigh=0.628901 0.000000 0.000000 +jointlknee=-0.933363 0.000000 0.000000 +jointlankle=0.349795 0.000000 0.000000 +jointrthigh=-0.378897 0.000000 0.000000 +jointrknee=-0.746128 0.000000 0.000000 +jointrankle=0.310946 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.010327 +jointshakey=0.000000 0.000000 -0.010327 +[frame16] +jointlthigh=0.748057 0.000000 0.000000 +jointlknee=-0.490570 0.000000 0.000000 +jointlankle=0.210466 0.000000 0.000000 +jointrthigh=-0.516501 0.000000 0.000000 +jointrknee=-0.486922 0.000000 0.000000 +jointrankle=-0.239644 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.009163 +jointshakey=0.000000 0.000000 -0.009163 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame5=0.000000 -5.350000 34.817245 +frame11=0.000000 -5.350000 34.015007 +frame12=0.000000 -5.350000 35.306973 +frame13=0.000000 -5.350000 35.306973 +frame14=0.000000 -5.349999 34.443974 +frame15=0.000000 -5.349999 34.444088 +frame16=0.000000 -5.350000 34.443974 + +[KeyJointPos] +frame1=0.000000 -0.024836 0.000000 +frame5=0.000000 0.248353 0.000000 +frame11=0.000000 -0.322860 0.000000 +frame12=0.000000 -0.211101 0.000000 +frame13=0.000000 -0.099341 0.000000 +frame14=0.000000 -0.074506 0.000000 +frame15=0.000000 -0.049671 0.000000 +frame16=0.000000 -0.024836 0.000000 diff --git a/CONTENT/BT/ANIMS/SNDRRR.ANI b/CONTENT/BT/ANIMS/SNDRRR.ANI new file mode 100644 index 0000000..6d0dc61 --- /dev/null +++ b/CONTENT/BT/ANIMS/SNDRRR.ANI @@ -0,0 +1,120 @@ +[LAB_ONLY] + +[HEADER] +framecount=8 +framerate=30 +skeletonfile=snd.skl +jointcount=7 + +[Time] +frame1=0 +frame5=0.133333 +frame11=0.333333 +frame12=0.366667 +frame13=0.4 +frame14=0.433333 +frame15=0.466667 +frame16=0.5 + +[JointIndices] +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 +jointlocal=0 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate + +[frame1] +jointlthigh=0.748057 0.000000 0.000000 +jointlknee=-0.490570 0.000000 0.000000 +jointlankle=0.210466 0.000000 0.000000 +jointrthigh=-0.529707 0.000000 0.000000 +jointrknee=-0.448424 0.000000 0.000000 +jointrankle=-0.264095 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.013090 +[frame5] +jointlthigh=0.668932 0.000000 0.000000 +jointlknee=-0.021625 0.000000 0.000000 +jointlankle=0.154636 0.000000 0.000000 +jointrthigh=-0.924082 0.000000 0.000000 +jointrknee=-0.950576 0.000000 0.000000 +jointrankle=-0.043616 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame11] +jointlthigh=0.256145 0.000000 0.000000 +jointlknee=-0.609364 0.000000 0.000000 +jointlankle=0.351911 0.000000 0.000000 +jointrthigh=-0.072100 0.000000 0.000000 +jointrknee=-1.647696 0.000000 0.000000 +jointrankle=0.290388 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.026180 +[frame12] +jointlthigh=0.037230 0.000000 0.000000 +jointlknee=-0.620599 0.000000 0.000000 +jointlankle=0.583219 0.000000 0.000000 +jointrthigh=0.159305 0.000000 0.000000 +jointrknee=-1.729394 0.000000 0.000000 +jointrankle=0.453114 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.023998 +[frame13] +jointlthigh=-0.292079 0.000000 0.000000 +jointlknee=-0.295491 0.000000 0.000000 +jointlankle=0.587699 0.000000 0.000000 +jointrthigh=0.390709 0.000000 0.000000 +jointrknee=-1.811093 0.000000 0.000000 +jointrankle=0.615839 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.021817 +[frame14] +jointlthigh=-0.276237 0.000000 0.000000 +jointlknee=-0.733962 0.000000 0.000000 +jointlankle=0.585171 0.000000 0.000000 +jointrthigh=0.509275 0.000000 0.000000 +jointrknee=-1.355580 0.000000 0.000000 +jointrankle=0.466905 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.018908 +[frame15] +jointlthigh=-0.363250 0.000000 0.000000 +jointlknee=-0.761770 0.000000 0.000000 +jointlankle=0.282403 0.000000 0.000000 +jointrthigh=0.627841 0.000000 0.000000 +jointrknee=-0.900066 0.000000 0.000000 +jointrankle=0.317970 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.015999 +[frame16] +jointlthigh=-0.537472 0.000000 0.000000 +jointlknee=-0.428398 0.000000 0.000000 +jointlankle=-0.302139 0.000000 0.000000 +jointrthigh=0.746408 0.000000 0.000000 +jointrknee=-0.444553 0.000000 0.000000 +jointrankle=0.169035 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.013090 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame5=0.000000 -5.350000 35.426617 +frame11=0.000000 -5.350000 33.878506 +frame12=0.000000 -5.350000 33.672012 +frame13=0.000000 -5.350000 33.672012 +frame14=0.000000 -5.349999 35.742992 +frame15=0.000000 -5.349999 35.742992 +frame16=0.000000 -5.350000 35.742992 + +[KeyJointPos] +frame1=0.080946 -0.025365 0.000000 +frame5=0.000000 0.248415 0.000000 +frame11=-0.154072 -0.325057 0.000000 +frame12=-0.143919 -0.212921 0.000000 +frame13=-0.133278 -0.100801 0.000000 +frame14=-0.115979 -0.075607 0.000000 +frame15=-0.098535 -0.050462 0.000000 +frame16=-0.080946 -0.025365 0.000000 diff --git a/CONTENT/BT/ANIMS/SNDRRRI.ANI b/CONTENT/BT/ANIMS/SNDRRRI.ANI new file mode 100644 index 0000000..466dc86 --- /dev/null +++ b/CONTENT/BT/ANIMS/SNDRRRI.ANI @@ -0,0 +1,130 @@ +[LAB_ONLY] + +[HEADER] +framecount=8 +framerate=30 +skeletonfile=snd.skl +jointcount=8 + +[Time] +frame1=0 +frame5=0.133333 +frame11=0.333333 +frame12=0.366667 +frame13=0.4 +frame14=0.433333 +frame15=0.466667 +frame16=0.5 + +[JointIndices] +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=0.748059 0.000000 0.000000 +jointlknee=-0.490570 0.000000 0.000000 +jointlankle=0.210464 0.000000 0.000000 +jointrthigh=-0.531962 0.000000 0.000000 +jointrknee=-0.440640 0.000000 0.000000 +jointrankle=-0.270428 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.009163 +jointshakey=0.000000 0.000000 -0.009163 +[frame5] +jointlthigh=0.668932 0.000000 0.000000 +jointlknee=-0.021625 0.000000 0.000000 +jointlankle=0.154636 0.000000 0.000000 +jointrthigh=-0.924082 0.000000 0.000000 +jointrknee=-0.950576 0.000000 0.000000 +jointrankle=-0.043616 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame11] +jointlthigh=0.236387 0.000000 0.000000 +jointlknee=-0.558682 0.000000 0.000000 +jointlankle=0.320807 0.000000 0.000000 +jointrthigh=-0.072100 0.000000 0.000000 +jointrknee=-1.647696 0.000000 0.000000 +jointrankle=0.290388 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.015708 +jointshakey=0.000000 0.000000 0.015708 +[frame12] +jointlthigh=0.037230 0.000000 0.000000 +jointlknee=-0.620599 0.000000 0.000000 +jointlankle=0.583219 0.000000 0.000000 +jointrthigh=0.159305 0.000000 0.000000 +jointrknee=-1.729394 0.000000 0.000000 +jointrankle=0.453114 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.014181 +jointshakey=0.000000 0.000000 0.014181 +[frame13] +jointlthigh=-0.316582 0.000000 0.000000 +jointlknee=-0.224563 0.000000 0.000000 +jointlankle=0.541595 0.000000 0.000000 +jointrthigh=0.390709 0.000000 0.000000 +jointrknee=-1.811093 0.000000 0.000000 +jointrankle=0.615839 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.012654 +jointshakey=0.000000 0.000000 0.012654 +[frame14] +jointlthigh=-0.276237 0.000000 0.000000 +jointlknee=-0.733962 0.000000 0.000000 +jointlankle=0.585171 0.000000 0.000000 +jointrthigh=0.509275 0.000000 0.000000 +jointrknee=-1.355580 0.000000 0.000000 +jointrankle=0.466905 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.011490 +jointshakey=0.000000 0.000000 0.011490 +[frame15] +jointlthigh=-0.363250 0.000000 0.000000 +jointlknee=-0.761770 0.000000 0.000000 +jointlankle=0.282403 0.000000 0.000000 +jointrthigh=0.627841 0.000000 0.000000 +jointrknee=-0.900066 0.000000 0.000000 +jointrankle=0.317970 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.010327 +jointshakey=0.000000 0.000000 0.010327 +[frame16] +jointlthigh=-0.540162 0.000000 0.000000 +jointlknee=-0.415854 0.000000 0.000000 +jointlankle=-0.312534 0.000000 0.000000 +jointrthigh=0.746408 0.000000 0.000000 +jointrknee=-0.444553 0.000000 0.000000 +jointrankle=0.169035 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.009163 +jointshakey=0.000000 0.000000 0.009163 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame5=0.000000 -5.350000 35.426617 +frame11=0.000000 -5.350000 33.878506 +frame12=0.000000 -5.350000 33.672012 +frame13=0.000000 -5.350000 33.672012 +frame14=0.000000 -5.349999 35.742992 +frame15=0.000000 -5.349999 35.742992 +frame16=0.000000 -5.350000 35.742992 + +[KeyJointPos] +frame1=0.000000 -0.024836 0.000000 +frame5=0.000000 0.248415 0.000000 +frame11=0.000000 -0.323040 0.000000 +frame12=0.000000 -0.211194 0.000000 +frame13=0.000000 -0.099348 0.000000 +frame14=0.000000 -0.074510 0.000000 +frame15=0.000000 -0.049673 0.000000 +frame16=0.000000 -0.024836 0.000000 diff --git a/CONTENT/BT/ANIMS/SNDRWL.ANI b/CONTENT/BT/ANIMS/SNDRWL.ANI new file mode 100644 index 0000000..402c2f1 --- /dev/null +++ b/CONTENT/BT/ANIMS/SNDRWL.ANI @@ -0,0 +1,150 @@ +[LAB_ONLY] + +[HEADER] +framecount=8 +framerate=30 +skeletonfile=snd.skl +jointcount=10 + +[Time] +frame1=0 +frame9=0.266667 +frame15=0.466667 +frame17=0.533333 +frame18=0.566667 +frame21=0.666667 +frame27=0.866667 +frame32=1.03333 + +[JointIndices] +jointhip=1 +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 +jointrshoulder=4 +jointlshoulder=6 +jointlocal=0 + +[JointType] +jointhip=hingex +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointrshoulder=hingex +jointlshoulder=hingex +jointlocal=balltranslate + +[frame1] +jointhip=-0.208689 0.000000 0.000000 +jointlthigh=-0.529617 0.000000 0.000000 +jointlknee=-0.445487 0.000000 0.000000 +jointlankle=-0.267667 0.000000 0.000000 +jointrthigh=0.748057 0.000000 0.000000 +jointrknee=-0.490570 0.000000 0.000000 +jointrankle=0.210466 0.000000 0.000000 +jointrshoulder=0.208689 0.000000 0.000000 +jointlshoulder=0.208689 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.013090 +[frame9] +jointhip=-0.175102 0.000000 0.000000 +jointlthigh=-0.837796 0.000000 0.000000 +jointlknee=-0.816135 0.000000 0.000000 +jointlankle=-0.106199 0.000000 0.000000 +jointrthigh=0.648287 0.000000 0.000000 +jointrknee=-0.023450 0.000000 0.000000 +jointrankle=0.154636 0.000000 0.000000 +jointrshoulder=0.175102 0.000000 0.000000 +jointlshoulder=0.175102 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame15] +jointhip=-0.149912 0.000000 0.000000 +jointlthigh=-0.554991 0.000000 0.000000 +jointlknee=-1.050513 0.000000 0.000000 +jointlankle=0.092104 0.000000 0.000000 +jointrthigh=0.471031 0.000000 0.000000 +jointrknee=-0.012656 0.000000 0.000000 +jointrankle=0.091171 0.000000 0.000000 +jointrshoulder=0.149912 0.000000 0.000000 +jointlshoulder=0.149912 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.008727 +[frame17] +jointhip=-0.141515 0.000000 0.000000 +jointlthigh=-0.460723 0.000000 0.000000 +jointlknee=-1.128639 0.000000 0.000000 +jointlankle=0.158205 0.000000 0.000000 +jointrthigh=0.398160 0.000000 0.000000 +jointrknee=-0.032905 0.000000 0.000000 +jointrankle=0.072550 0.000000 0.000000 +jointrshoulder=0.141515 0.000000 0.000000 +jointlshoulder=0.141515 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.011636 +[frame18] +jointhip=-0.137317 0.000000 0.000000 +jointlthigh=-0.413588 0.000000 0.000000 +jointlknee=-1.167701 0.000000 0.000000 +jointlankle=0.191255 0.000000 0.000000 +jointrthigh=0.351727 0.000000 0.000000 +jointrknee=-0.053122 0.000000 0.000000 +jointrankle=-0.043882 0.000000 0.000000 +jointrshoulder=0.137317 0.000000 0.000000 +jointlshoulder=0.137317 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.013090 +[frame21] +jointhip=-0.124722 0.000000 0.000000 +jointlthigh=-0.272186 0.000000 0.000000 +jointlknee=-1.284890 0.000000 0.000000 +jointlankle=0.290407 0.000000 0.000000 +jointrthigh=0.286770 0.000000 0.000000 +jointrknee=-0.521211 0.000000 0.000000 +jointrankle=0.231462 0.000000 0.000000 +jointrshoulder=0.124722 0.000000 0.000000 +jointlshoulder=0.124722 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.017453 +[frame27] +jointhip=-0.099532 0.000000 0.000000 +jointlthigh=0.309703 0.000000 0.000000 +jointlknee=-1.444223 0.000000 0.000000 +jointlankle=0.516572 0.000000 0.000000 +jointrthigh=-0.210146 0.000000 0.000000 +jointrknee=-0.540775 0.000000 0.000000 +jointrankle=0.752230 0.000000 0.000000 +jointrshoulder=0.099532 0.000000 0.000000 +jointlshoulder=0.099532 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.013090 +[frame32] +jointhip=-0.078540 0.000000 0.000000 +jointlthigh=0.395614 0.000000 0.000000 +jointlknee=-0.220767 0.000000 0.000000 +jointlankle=0.133954 0.000000 0.000000 +jointrthigh=-0.486563 0.000000 0.000000 +jointrknee=-0.487638 0.000000 0.000000 +jointrankle=0.639860 0.000000 0.000000 +jointrshoulder=0.078540 0.000000 0.000000 +jointlshoulder=0.078540 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame9=0.000000 -5.350000 15.010127 +frame15=0.000000 -5.350000 15.647756 +frame17=0.000000 -5.349999 15.647730 +frame18=0.000000 -5.350000 15.647751 +frame21=0.000000 -5.350000 15.647732 +frame27=0.000000 -5.350000 12.837029 +frame32=0.000000 -5.350000 10.345782 + +[KeyJointPos] +frame1=-0.080946 -0.025365 0.000000 +frame9=0.000000 -0.074587 0.000000 +frame15=0.052447 -0.199042 0.000000 +frame17=0.069446 -0.240627 0.000000 +frame18=0.077856 -0.261436 0.000000 +frame21=0.102721 -0.323937 0.000000 +frame27=0.078020 -0.248883 0.000000 +frame32=0.000000 -0.273276 0.000000 diff --git a/CONTENT/BT/ANIMS/SNDRWLI.ANI b/CONTENT/BT/ANIMS/SNDRWLI.ANI new file mode 100644 index 0000000..1afcfff --- /dev/null +++ b/CONTENT/BT/ANIMS/SNDRWLI.ANI @@ -0,0 +1,130 @@ +[LAB_ONLY] + +[HEADER] +framecount=8 +framerate=30 +skeletonfile=snd.skl +jointcount=8 + +[Time] +frame1=0 +frame9=0.266667 +frame15=0.466667 +frame17=0.533333 +frame18=0.566667 +frame21=0.666667 +frame27=0.866667 +frame32=1.03333 + +[JointIndices] +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=-0.531833 0.000000 0.000000 +jointlknee=-0.437812 0.000000 0.000000 +jointlankle=-0.273889 0.000000 0.000000 +jointrthigh=0.748057 0.000000 0.000000 +jointrknee=-0.490570 0.000000 0.000000 +jointrankle=0.210466 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.009163 +jointshakey=0.000000 0.000000 0.009163 +[frame9] +jointlthigh=-0.837796 0.000000 0.000000 +jointlknee=-0.816135 0.000000 0.000000 +jointlankle=-0.106199 0.000000 0.000000 +jointrthigh=0.648287 0.000000 0.000000 +jointrknee=-0.023450 0.000000 0.000000 +jointrankle=0.154636 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame15] +jointlthigh=-0.554991 0.000000 0.000000 +jointlknee=-1.050513 0.000000 0.000000 +jointlankle=0.092104 0.000000 0.000000 +jointrthigh=0.471031 0.000000 0.000000 +jointrknee=-0.012656 0.000000 0.000000 +jointrankle=0.091171 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.005672 +jointshakey=0.000000 0.000000 -0.005672 +[frame17] +jointlthigh=-0.460723 0.000000 0.000000 +jointlknee=-1.128639 0.000000 0.000000 +jointlankle=0.158205 0.000000 0.000000 +jointrthigh=0.398160 0.000000 0.000000 +jointrknee=-0.032905 0.000000 0.000000 +jointrankle=0.072550 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.007563 +jointshakey=0.000000 0.000000 -0.007563 +[frame18] +jointlthigh=-0.413588 0.000000 0.000000 +jointlknee=-1.167701 0.000000 0.000000 +jointlankle=0.191255 0.000000 0.000000 +jointrthigh=0.351727 0.000000 0.000000 +jointrknee=-0.053122 0.000000 0.000000 +jointrankle=-0.043882 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.008508 +jointshakey=0.000000 0.000000 -0.008508 +[frame21] +jointlthigh=-0.272186 0.000000 0.000000 +jointlknee=-1.284890 0.000000 0.000000 +jointlankle=0.290407 0.000000 0.000000 +jointrthigh=0.277314 0.000000 0.000000 +jointrknee=-0.498737 0.000000 0.000000 +jointrankle=0.217817 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.011345 +jointshakey=0.000000 0.000000 -0.011345 +[frame27] +jointlthigh=0.309703 0.000000 0.000000 +jointlknee=-1.444223 0.000000 0.000000 +jointlankle=0.516572 0.000000 0.000000 +jointrthigh=-0.210659 0.000000 0.000000 +jointrknee=-0.539474 0.000000 0.000000 +jointrankle=0.751120 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.007418 +jointshakey=0.000000 0.000000 -0.007418 +[frame32] +jointlthigh=0.395614 0.000000 0.000000 +jointlknee=-0.220767 0.000000 0.000000 +jointlankle=0.133954 0.000000 0.000000 +jointrthigh=-0.486563 0.000000 0.000000 +jointrknee=-0.487638 0.000000 0.000000 +jointrankle=0.639860 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame9=0.000000 -5.350000 15.010127 +frame15=0.000000 -5.350000 15.647756 +frame17=0.000000 -5.349999 15.647730 +frame18=0.000000 -5.350000 15.647751 +frame21=0.000000 -5.350000 15.647732 +frame27=0.000000 -5.350000 12.837029 +frame32=0.000000 -5.350000 10.345782 + +[KeyJointPos] +frame1=0.000000 -0.024836 0.000000 +frame9=0.000000 -0.074587 0.000000 +frame15=0.000000 -0.198813 0.000000 +frame17=0.000000 -0.240222 0.000000 +frame18=0.000000 -0.260927 0.000000 +frame21=0.000000 -0.323040 0.000000 +frame27=0.000000 -0.248372 0.000000 +frame32=0.000000 -0.273276 0.000000 diff --git a/CONTENT/BT/ANIMS/SNDRWR.ANI b/CONTENT/BT/ANIMS/SNDRWR.ANI new file mode 100644 index 0000000..e9ff578 --- /dev/null +++ b/CONTENT/BT/ANIMS/SNDRWR.ANI @@ -0,0 +1,150 @@ +[LAB_ONLY] + +[HEADER] +framecount=8 +framerate=30 +skeletonfile=snd.skl +jointcount=10 + +[Time] +frame1=0 +frame9=0.266667 +frame15=0.466667 +frame17=0.533333 +frame18=0.566667 +frame21=0.666667 +frame27=0.866667 +frame32=1.03333 + +[JointIndices] +jointhip=1 +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 +jointrshoulder=4 +jointlshoulder=6 +jointlocal=0 + +[JointType] +jointhip=hingex +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointrshoulder=hingex +jointlshoulder=hingex +jointlocal=balltranslate + +[frame1] +jointhip=-0.208689 0.000000 0.000000 +jointlthigh=0.748057 0.000000 0.000000 +jointlknee=-0.490570 0.000000 0.000000 +jointlankle=0.210466 0.000000 0.000000 +jointrthigh=-0.529617 0.000000 0.000000 +jointrknee=-0.445487 0.000000 0.000000 +jointrankle=-0.267667 0.000000 0.000000 +jointrshoulder=0.208689 0.000000 0.000000 +jointlshoulder=0.208689 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.013090 +[frame9] +jointhip=-0.175102 0.000000 0.000000 +jointlthigh=0.648287 0.000000 0.000000 +jointlknee=-0.023450 0.000000 0.000000 +jointlankle=0.154636 0.000000 0.000000 +jointrthigh=-0.830520 0.000000 0.000000 +jointrknee=-0.836016 0.000000 0.000000 +jointrankle=-0.092293 0.000000 0.000000 +jointrshoulder=0.175102 0.000000 0.000000 +jointlshoulder=0.175102 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame15] +jointhip=-0.149912 0.000000 0.000000 +jointlthigh=0.471031 0.000000 0.000000 +jointlknee=-0.012656 0.000000 0.000000 +jointlankle=0.091171 0.000000 0.000000 +jointrthigh=-0.551356 0.000000 0.000000 +jointrknee=-1.060445 0.000000 0.000000 +jointrankle=0.099055 0.000000 0.000000 +jointrshoulder=0.149912 0.000000 0.000000 +jointlshoulder=0.149912 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.008727 +[frame17] +jointhip=-0.141515 0.000000 0.000000 +jointlthigh=0.398160 0.000000 0.000000 +jointlknee=-0.032905 0.000000 0.000000 +jointlankle=0.072550 0.000000 0.000000 +jointrthigh=-0.458302 0.000000 0.000000 +jointrknee=-1.135254 0.000000 0.000000 +jointrankle=0.162838 0.000000 0.000000 +jointrshoulder=0.141515 0.000000 0.000000 +jointlshoulder=0.141515 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.011636 +[frame18] +jointhip=-0.137317 0.000000 0.000000 +jointlthigh=0.351727 0.000000 0.000000 +jointlknee=-0.053122 0.000000 0.000000 +jointlankle=-0.043882 0.000000 0.000000 +jointrthigh=-0.411775 0.000000 0.000000 +jointrknee=-1.172659 0.000000 0.000000 +jointrankle=0.194730 0.000000 0.000000 +jointrshoulder=0.137317 0.000000 0.000000 +jointlshoulder=0.137317 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.013090 +[frame21] +jointhip=-0.124722 0.000000 0.000000 +jointlthigh=0.285628 0.000000 0.000000 +jointlknee=-0.518850 0.000000 0.000000 +jointlankle=0.231096 0.000000 0.000000 +jointrthigh=-0.272193 0.000000 0.000000 +jointrknee=-1.284873 0.000000 0.000000 +jointrankle=0.290404 0.000000 0.000000 +jointrshoulder=0.124722 0.000000 0.000000 +jointlshoulder=0.124722 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.017453 +[frame27] +jointhip=-0.099532 0.000000 0.000000 +jointlthigh=-0.210150 0.000000 0.000000 +jointlknee=-0.540778 0.000000 0.000000 +jointlankle=0.752233 0.000000 0.000000 +jointrthigh=0.309705 0.000000 0.000000 +jointrknee=-1.444227 0.000000 0.000000 +jointrankle=0.516572 0.000000 0.000000 +jointrshoulder=0.099532 0.000000 0.000000 +jointlshoulder=0.099532 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.013090 +[frame32] +jointhip=-0.078540 0.000000 0.000000 +jointlthigh=-0.484978 0.000000 0.000000 +jointlknee=-0.497874 0.000000 0.000000 +jointlankle=0.651832 0.000000 0.000000 +jointrthigh=0.392336 0.000000 0.000000 +jointrknee=-0.216485 0.000000 0.000000 +jointrankle=0.135860 0.000000 0.000000 +jointrshoulder=0.078540 0.000000 0.000000 +jointlshoulder=0.078540 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame9=0.000000 -5.350000 15.010127 +frame15=0.000000 -5.350000 15.647756 +frame17=0.000000 -5.349999 15.647730 +frame18=0.000000 -5.350000 15.647751 +frame21=0.000000 -5.350000 15.647732 +frame27=0.000000 -5.350000 12.837029 +frame32=0.000000 -5.350000 10.345782 + +[KeyJointPos] +frame1=0.080946 -0.025365 0.000000 +frame9=0.000000 -0.074587 0.000000 +frame15=-0.052447 -0.199042 0.000000 +frame17=-0.069446 -0.240627 0.000000 +frame18=-0.077856 -0.261436 0.000000 +frame21=-0.102721 -0.323937 0.000000 +frame27=-0.078020 -0.248883 0.000000 +frame32=0.000000 -0.273276 0.000000 diff --git a/CONTENT/BT/ANIMS/SNDRWRI.ANI b/CONTENT/BT/ANIMS/SNDRWRI.ANI new file mode 100644 index 0000000..b3eabbd --- /dev/null +++ b/CONTENT/BT/ANIMS/SNDRWRI.ANI @@ -0,0 +1,130 @@ +[LAB_ONLY] + +[HEADER] +framecount=8 +framerate=30 +skeletonfile=snd.skl +jointcount=8 + +[Time] +frame1=0 +frame9=0.266667 +frame15=0.466667 +frame17=0.533333 +frame18=0.566667 +frame21=0.666667 +frame27=0.866667 +frame32=1.03333 + +[JointIndices] +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=0.748057 0.000000 0.000000 +jointlknee=-0.490570 0.000000 0.000000 +jointlankle=0.210466 0.000000 0.000000 +jointrthigh=-0.531989 0.000000 0.000000 +jointrknee=-0.437367 0.000000 0.000000 +jointrankle=-0.274266 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.009163 +jointshakey=0.000000 0.000000 -0.009163 +[frame9] +jointlthigh=0.648287 0.000000 0.000000 +jointlknee=-0.023450 0.000000 0.000000 +jointlankle=0.154636 0.000000 0.000000 +jointrthigh=-0.830520 0.000000 0.000000 +jointrknee=-0.836016 0.000000 0.000000 +jointrankle=-0.092293 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame15] +jointlthigh=0.471031 0.000000 0.000000 +jointlknee=-0.012656 0.000000 0.000000 +jointlankle=0.091171 0.000000 0.000000 +jointrthigh=-0.551356 0.000000 0.000000 +jointrknee=-1.060445 0.000000 0.000000 +jointrankle=0.099055 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.005672 +jointshakey=0.000000 0.000000 0.005672 +[frame17] +jointlthigh=0.398160 0.000000 0.000000 +jointlknee=-0.032905 0.000000 0.000000 +jointlankle=0.072550 0.000000 0.000000 +jointrthigh=-0.458302 0.000000 0.000000 +jointrknee=-1.135254 0.000000 0.000000 +jointrankle=0.162838 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.007563 +jointshakey=0.000000 0.000000 0.007563 +[frame18] +jointlthigh=0.351727 0.000000 0.000000 +jointlknee=-0.053122 0.000000 0.000000 +jointlankle=-0.043882 0.000000 0.000000 +jointrthigh=-0.411775 0.000000 0.000000 +jointrknee=-1.172659 0.000000 0.000000 +jointrankle=0.194730 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.008508 +jointshakey=0.000000 0.000000 0.008508 +[frame21] +jointlthigh=0.281195 0.000000 0.000000 +jointlknee=-0.507814 0.000000 0.000000 +jointlankle=0.225666 0.000000 0.000000 +jointrthigh=-0.272193 0.000000 0.000000 +jointrknee=-1.284873 0.000000 0.000000 +jointrankle=0.290404 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.011345 +jointshakey=0.000000 0.000000 0.011345 +[frame27] +jointlthigh=-0.210604 0.000000 0.000000 +jointlknee=-0.539647 0.000000 0.000000 +jointlankle=0.751240 0.000000 0.000000 +jointrthigh=0.309705 0.000000 0.000000 +jointrknee=-1.444227 0.000000 0.000000 +jointrankle=0.516572 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.007418 +jointshakey=0.000000 0.000000 0.007418 +[frame32] +jointlthigh=-0.484978 0.000000 0.000000 +jointlknee=-0.497874 0.000000 0.000000 +jointlankle=0.651832 0.000000 0.000000 +jointrthigh=0.392336 0.000000 0.000000 +jointrknee=-0.216485 0.000000 0.000000 +jointrankle=0.135860 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame9=0.000000 -5.350000 15.010127 +frame15=0.000000 -5.350000 15.647756 +frame17=0.000000 -5.349999 15.647730 +frame18=0.000000 -5.350000 15.647751 +frame21=0.000000 -5.350000 15.647732 +frame27=0.000000 -5.350000 12.837029 +frame32=0.000000 -5.350000 10.345782 + +[KeyJointPos] +frame1=0.000000 -0.024836 0.000000 +frame9=0.000000 -0.074587 0.000000 +frame15=0.000000 -0.198813 0.000000 +frame17=0.000000 -0.240222 0.000000 +frame18=0.000000 -0.260927 0.000000 +frame21=0.000000 -0.323040 0.000000 +frame27=0.000000 -0.248372 0.000000 +frame32=0.000000 -0.273276 0.000000 diff --git a/CONTENT/BT/ANIMS/SNDSBLI.ANI b/CONTENT/BT/ANIMS/SNDSBLI.ANI new file mode 100644 index 0000000..8b843b0 --- /dev/null +++ b/CONTENT/BT/ANIMS/SNDSBLI.ANI @@ -0,0 +1,118 @@ +[LAB_ONLY] + +[HEADER] +framecount=7 +framerate=30 +skeletonfile=snd.skl +jointcount=8 + +[Time] +frame1=0 +frame8=0.233333 +frame14=0.433333 +frame15=0.466667 +frame18=0.566667 +frame27=0.866667 +frame57=1.86667 + +[JointIndices] +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=0.079372 0.000000 0.000000 +jointlknee=-0.214384 0.000000 0.000000 +jointlankle=0.137470 0.000000 0.000000 +jointrthigh=0.054061 0.000000 0.000000 +jointrknee=-0.147065 0.000000 0.000000 +jointrankle=0.093170 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame8] +jointlthigh=0.213518 0.000000 0.000000 +jointlknee=-1.023142 0.000000 0.000000 +jointlankle=0.596234 0.000000 0.000000 +jointrthigh=0.103654 0.000000 0.000000 +jointrknee=-0.184712 0.000000 0.000000 +jointrankle=0.080857 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.006109 +jointshakey=0.000000 0.000000 -0.006109 +[frame14] +jointlthigh=0.018546 0.000000 0.000000 +jointlknee=-1.302332 0.000000 0.000000 +jointlankle=0.420872 0.000000 0.000000 +jointrthigh=0.165706 0.000000 0.000000 +jointrknee=-0.189675 0.000000 0.000000 +jointrankle=0.023335 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.011345 +jointshakey=0.000000 0.000000 -0.011345 +[frame15] +jointlthigh=-0.013949 0.000000 0.000000 +jointlknee=-1.348864 0.000000 0.000000 +jointlankle=0.391645 0.000000 0.000000 +jointrthigh=0.176048 0.000000 0.000000 +jointrknee=-0.190503 0.000000 0.000000 +jointrankle=0.013748 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.010472 +jointshakey=0.000000 0.000000 -0.010472 +[frame18] +jointlthigh=-0.132511 0.000000 0.000000 +jointlknee=-1.132111 0.000000 0.000000 +jointlankle=0.452681 0.000000 0.000000 +jointrthigh=0.150221 0.000000 0.000000 +jointrknee=0.034253 0.000000 0.000000 +jointrankle=-0.180991 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.007854 +jointshakey=0.000000 0.000000 -0.007854 +[frame27] +jointlthigh=-0.488198 0.000000 0.000000 +jointlknee=-0.481852 0.000000 0.000000 +jointlankle=0.635789 0.000000 0.000000 +jointrthigh=0.371813 0.000000 0.000000 +jointrknee=-0.153851 0.000000 0.000000 +jointrankle=0.090584 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame57] +jointlthigh=-0.485172 0.000000 0.000000 +jointlknee=-0.490326 0.000000 0.000000 +jointlankle=0.641220 0.000000 0.000000 +jointrthigh=0.357166 0.000000 0.000000 +jointrknee=-0.116382 0.000000 0.000000 +jointrankle=0.067576 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame8=0.000000 -5.350000 -0.771863 +frame14=0.000000 -5.350000 -1.572428 +frame15=0.000000 -5.350000 -1.572418 +frame18=0.000000 -5.350000 -3.594742 +frame27=0.000000 -5.350000 -3.594751 +frame57=0.000000 -5.350000 -3.928000 + +[KeyJointPos] +frame1=0.000000 0.000000 0.000000 +frame8=0.000000 -0.074512 0.000000 +frame14=0.000000 -0.138380 0.000000 +frame15=0.000000 -0.149024 0.000000 +frame18=0.000000 -0.180066 0.000000 +frame27=0.000000 -0.273189 0.000000 +frame57=0.000000 -0.273189 0.000000 diff --git a/CONTENT/BT/ANIMS/SNDSBRI.ANI b/CONTENT/BT/ANIMS/SNDSBRI.ANI new file mode 100644 index 0000000..1fb18c6 --- /dev/null +++ b/CONTENT/BT/ANIMS/SNDSBRI.ANI @@ -0,0 +1,118 @@ +[LAB_ONLY] + +[HEADER] +framecount=7 +framerate=30 +skeletonfile=snd.skl +jointcount=8 + +[Time] +frame1=0 +frame8=0.233333 +frame14=0.433333 +frame15=0.466667 +frame18=0.566667 +frame27=0.866667 +frame57=1.86667 + +[JointIndices] +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=0.054061 0.000000 0.000000 +jointlknee=-0.147065 0.000000 0.000000 +jointlankle=0.093170 0.000000 0.000000 +jointrthigh=0.079372 0.000000 0.000000 +jointrknee=-0.214384 0.000000 0.000000 +jointrankle=0.137470 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame8] +jointlthigh=0.129597 0.000000 0.000000 +jointlknee=-0.272149 0.000000 0.000000 +jointlankle=0.133323 0.000000 0.000000 +jointrthigh=0.213518 0.000000 0.000000 +jointrknee=-1.023142 0.000000 0.000000 +jointrankle=0.596234 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.006109 +jointshakey=0.000000 0.000000 0.006109 +[frame14] +jointlthigh=0.194341 0.000000 0.000000 +jointlknee=-0.262461 0.000000 0.000000 +jointlankle=0.066097 0.000000 0.000000 +jointrthigh=0.018546 0.000000 0.000000 +jointrknee=-1.302332 0.000000 0.000000 +jointrankle=0.420872 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.011345 +jointshakey=0.000000 0.000000 0.011345 +[frame15] +jointlthigh=0.205132 0.000000 0.000000 +jointlknee=-0.260846 0.000000 0.000000 +jointlankle=0.054893 0.000000 0.000000 +jointrthigh=-0.013949 0.000000 0.000000 +jointrknee=-1.348864 0.000000 0.000000 +jointrankle=0.391645 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.010472 +jointshakey=0.000000 0.000000 0.010472 +[frame18] +jointlthigh=0.184267 0.000000 0.000000 +jointlknee=-0.051188 0.000000 0.000000 +jointlankle=-0.128756 0.000000 0.000000 +jointrthigh=-0.132654 0.000000 0.000000 +jointrknee=-1.131721 0.000000 0.000000 +jointrankle=0.452435 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.007854 +jointshakey=0.000000 0.000000 0.007854 +[frame27] +jointlthigh=0.395614 0.000000 0.000000 +jointlknee=-0.220767 0.000000 0.000000 +jointlankle=0.133954 0.000000 0.000000 +jointrthigh=-0.488771 0.000000 0.000000 +jointrknee=-0.480292 0.000000 0.000000 +jointrankle=0.634804 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame57] +jointlthigh=0.384800 0.000000 0.000000 +jointlknee=-0.191501 0.000000 0.000000 +jointlankle=0.115461 0.000000 0.000000 +jointrthigh=-0.485598 0.000000 0.000000 +jointrknee=-0.489045 0.000000 0.000000 +jointrankle=0.640394 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame8=0.000000 -5.350000 -0.771863 +frame14=0.000000 -5.350000 -1.572428 +frame15=0.000000 -5.350000 -1.572418 +frame18=0.000000 -5.350000 -3.594742 +frame27=0.000000 -5.350000 -3.594751 +frame57=0.000000 -5.350000 -3.928000 + +[KeyJointPos] +frame1=0.000000 0.000000 0.000000 +frame8=0.000000 -0.074512 0.000000 +frame14=0.000000 -0.138380 0.000000 +frame15=0.000000 -0.149024 0.000000 +frame18=0.000000 -0.180066 0.000000 +frame27=0.000000 -0.273189 0.000000 +frame57=0.000000 -0.273189 0.000000 diff --git a/CONTENT/BT/ANIMS/SNDSWLI.ANI b/CONTENT/BT/ANIMS/SNDSWLI.ANI new file mode 100644 index 0000000..53d5e05 --- /dev/null +++ b/CONTENT/BT/ANIMS/SNDSWLI.ANI @@ -0,0 +1,166 @@ +[LAB_ONLY] + +[HEADER] +framecount=11 +framerate=30 +skeletonfile=snd.skl +jointcount=8 + +[Time] +frame1=0 +frame3=0.0666667 +frame5=0.133333 +frame7=0.2 +frame8=0.233333 +frame9=0.266667 +frame11=0.333333 +frame14=0.433333 +frame17=0.533333 +frame30=0.966667 +frame60=1.96667 + +[JointIndices] +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame3] +jointlthigh=0.024100 0.000000 0.000000 +jointlknee=-0.003358 0.000000 0.000000 +jointlankle=-0.006623 0.000000 0.000000 +jointrthigh=0.001478 0.000000 0.000000 +jointrknee=-0.132406 0.000000 0.000000 +jointrankle=0.131344 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.001309 +jointshakey=0.000000 0.000000 -0.001309 +[frame5] +jointlthigh=0.048201 0.000000 0.000000 +jointlknee=-0.006715 0.000000 0.000000 +jointlankle=-0.013247 0.000000 0.000000 +jointrthigh=0.010571 0.000000 0.000000 +jointrknee=-0.277930 0.000000 0.000000 +jointrankle=0.262932 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.002618 +jointshakey=0.000000 0.000000 -0.002618 +[frame7] +jointlthigh=0.072301 0.000000 0.000000 +jointlknee=-0.010073 0.000000 0.000000 +jointlankle=-0.019870 0.000000 0.000000 +jointrthigh=-0.027391 0.000000 0.000000 +jointrknee=-0.307667 0.000000 0.000000 +jointrankle=0.335590 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.003927 +jointshakey=0.000000 0.000000 -0.003927 +[frame8] +jointlthigh=0.084351 0.000000 0.000000 +jointlknee=-0.011752 0.000000 0.000000 +jointlankle=-0.023182 0.000000 0.000000 +jointrthigh=-0.050329 0.000000 0.000000 +jointrknee=-0.305939 0.000000 0.000000 +jointrankle=0.350132 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.004581 +jointshakey=0.000000 0.000000 -0.004581 +[frame9] +jointlthigh=0.111302 0.000000 0.000000 +jointlknee=-0.051764 0.000000 0.000000 +jointlankle=0.006232 0.000000 0.000000 +jointrthigh=-0.082383 0.000000 0.000000 +jointrknee=-0.294320 0.000000 0.000000 +jointrankle=0.374261 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.005091 +jointshakey=0.000000 0.000000 -0.005091 +[frame11] +jointlthigh=0.165204 0.000000 0.000000 +jointlknee=-0.131789 0.000000 0.000000 +jointlankle=0.065060 0.000000 0.000000 +jointrthigh=-0.119141 0.000000 0.000000 +jointrknee=-0.342128 0.000000 0.000000 +jointrankle=0.461383 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.006109 +jointshakey=0.000000 0.000000 -0.006109 +[frame14] +jointlthigh=0.246058 0.000000 0.000000 +jointlknee=-0.251826 0.000000 0.000000 +jointlankle=0.153303 0.000000 0.000000 +jointrthigh=-0.233183 0.000000 0.000000 +jointrknee=-0.242569 0.000000 0.000000 +jointrankle=0.475571 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.007636 +jointshakey=0.000000 0.000000 -0.007636 +[frame17] +jointlthigh=0.326911 0.000000 0.000000 +jointlknee=-0.371863 0.000000 0.000000 +jointlankle=0.241545 0.000000 0.000000 +jointrthigh=-0.341664 0.000000 0.000000 +jointrknee=-0.158458 0.000000 0.000000 +jointrankle=0.499595 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.009163 +jointshakey=0.000000 0.000000 -0.009163 +[frame30] +jointlthigh=0.412577 0.000000 0.000000 +jointlknee=-0.267172 0.000000 0.000000 +jointlankle=0.163490 0.000000 0.000000 +jointrthigh=-0.492373 0.000000 0.000000 +jointrknee=-0.475967 0.000000 0.000000 +jointrankle=0.650851 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame60] +jointlthigh=0.419090 0.000000 0.000000 +jointlknee=-0.285651 0.000000 0.000000 +jointlankle=0.175531 0.000000 0.000000 +jointrthigh=-0.497417 0.000000 0.000000 +jointrknee=-0.482823 0.000000 0.000000 +jointrankle=0.647496 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame3=0.000000 -5.350000 3.798857 +frame5=0.000000 -5.350000 3.798858 +frame7=0.000000 -5.350000 3.798857 +frame8=0.000000 -5.350000 3.798856 +frame9=0.000000 -5.350000 4.188498 +frame11=0.000000 -5.350000 4.188500 +frame14=0.000000 -5.350000 4.188501 +frame17=0.000000 -5.350000 4.188498 +frame30=0.000000 -5.350000 3.901384 +frame60=0.000000 -5.350000 4.226621 + +[KeyJointPos] +frame1=0.000000 0.000000 0.000000 +frame3=0.000000 -0.008806 0.000000 +frame5=0.000000 -0.017611 0.000000 +frame7=0.000000 -0.026417 0.000000 +frame8=0.000000 -0.030821 0.000000 +frame9=0.000000 -0.035675 0.000000 +frame11=0.000000 -0.045382 0.000000 +frame14=0.000000 -0.059944 0.000000 +frame17=0.000000 -0.074506 0.000000 +frame30=0.000000 -0.273276 0.000000 +frame60=0.000000 -0.273276 0.000000 diff --git a/CONTENT/BT/ANIMS/SNDSWRI.ANI b/CONTENT/BT/ANIMS/SNDSWRI.ANI new file mode 100644 index 0000000..0164101 --- /dev/null +++ b/CONTENT/BT/ANIMS/SNDSWRI.ANI @@ -0,0 +1,166 @@ +[LAB_ONLY] + +[HEADER] +framecount=11 +framerate=30 +skeletonfile=snd.skl +jointcount=8 + +[Time] +frame1=0 +frame3=0.0666667 +frame5=0.133333 +frame7=0.2 +frame8=0.233333 +frame9=0.266667 +frame11=0.333333 +frame14=0.433333 +frame17=0.533333 +frame30=0.966667 +frame60=1.96667 + +[JointIndices] +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame3] +jointlthigh=0.009449 0.000000 0.000000 +jointlknee=-0.141535 0.000000 0.000000 +jointlankle=0.131737 0.000000 0.000000 +jointrthigh=0.022581 0.000000 0.000000 +jointrknee=0.002094 0.000000 0.000000 +jointrankle=-0.009710 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.001309 +jointshakey=0.000000 0.000000 0.001309 +[frame5] +jointlthigh=-0.014251 0.000000 0.000000 +jointlknee=-0.208457 0.000000 0.000000 +jointlankle=0.224263 0.000000 0.000000 +jointrthigh=0.045162 0.000000 0.000000 +jointrknee=0.004187 0.000000 0.000000 +jointrankle=-0.019421 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.002618 +jointshakey=0.000000 0.000000 0.002618 +[frame7] +jointlthigh=-0.027803 0.000000 0.000000 +jointlknee=-0.299858 0.000000 0.000000 +jointlankle=0.325345 0.000000 0.000000 +jointrthigh=0.067743 0.000000 0.000000 +jointrknee=0.006281 0.000000 0.000000 +jointrankle=-0.029131 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.003927 +jointshakey=0.000000 0.000000 0.003927 +[frame8] +jointlthigh=-0.054541 0.000000 0.000000 +jointlknee=-0.289288 0.000000 0.000000 +jointlankle=0.344161 0.000000 0.000000 +jointrthigh=0.079033 0.000000 0.000000 +jointrknee=0.007328 0.000000 0.000000 +jointrankle=-0.033987 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.004581 +jointshakey=0.000000 0.000000 0.004581 +[frame9] +jointlthigh=-0.076943 0.000000 0.000000 +jointlknee=-0.302143 0.000000 0.000000 +jointlankle=0.378478 0.000000 0.000000 +jointrthigh=0.100354 0.000000 0.000000 +jointrknee=-0.017352 0.000000 0.000000 +jointrankle=-0.014671 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.005091 +jointshakey=0.000000 0.000000 0.005091 +[frame11] +jointlthigh=-0.120802 0.000000 0.000000 +jointlknee=-0.326548 0.000000 0.000000 +jointlankle=0.448073 0.000000 0.000000 +jointrthigh=0.142997 0.000000 0.000000 +jointrknee=-0.066710 0.000000 0.000000 +jointrankle=0.023960 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.006109 +jointshakey=0.000000 0.000000 0.006109 +[frame14] +jointlthigh=-0.233090 0.000000 0.000000 +jointlknee=-0.234441 0.000000 0.000000 +jointlankle=0.468546 0.000000 0.000000 +jointrthigh=0.206960 0.000000 0.000000 +jointrknee=-0.140748 0.000000 0.000000 +jointrankle=0.081906 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.007636 +jointshakey=0.000000 0.000000 0.007636 +[frame17] +jointlthigh=-0.327410 0.000000 0.000000 +jointlknee=-0.186930 0.000000 0.000000 +jointlankle=0.515082 0.000000 0.000000 +jointrthigh=0.270924 0.000000 0.000000 +jointrknee=-0.214785 0.000000 0.000000 +jointrankle=0.139853 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.009163 +jointshakey=0.000000 0.000000 0.009163 +[frame30] +jointlthigh=-0.490579 0.000000 0.000000 +jointlknee=-0.481100 0.000000 0.000000 +jointlankle=0.654167 0.000000 0.000000 +jointrthigh=0.425042 0.000000 0.000000 +jointrknee=-0.301626 0.000000 0.000000 +jointrankle=0.185455 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame60] +jointlthigh=-0.497818 0.000000 0.000000 +jointlknee=-0.481707 0.000000 0.000000 +jointlankle=0.646786 0.000000 0.000000 +jointrthigh=0.423520 0.000000 0.000000 +jointrknee=-0.297491 0.000000 0.000000 +jointrankle=0.182923 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame3=0.000000 -5.350000 3.798857 +frame5=0.000000 -5.350000 3.798858 +frame7=0.000000 -5.350000 3.798857 +frame8=0.000000 -5.350000 3.798856 +frame9=0.000000 -5.350000 4.188498 +frame11=0.000000 -5.350000 4.188500 +frame14=0.000000 -5.350000 4.188501 +frame17=0.000000 -5.350000 4.188498 +frame30=0.000000 -5.350000 3.901384 +frame60=0.000000 -5.350000 4.226621 + +[KeyJointPos] +frame1=0.000000 0.000000 0.000000 +frame3=0.000000 -0.008806 0.000000 +frame5=0.000000 -0.017611 0.000000 +frame7=0.000000 -0.026417 0.000000 +frame8=0.000000 -0.030821 0.000000 +frame9=0.000000 -0.035675 0.000000 +frame11=0.000000 -0.045382 0.000000 +frame14=0.000000 -0.059944 0.000000 +frame17=0.000000 -0.074506 0.000000 +frame30=0.000000 -0.273276 0.000000 +frame60=0.000000 -0.273276 0.000000 diff --git a/CONTENT/BT/ANIMS/SNDTRN.ANI b/CONTENT/BT/ANIMS/SNDTRN.ANI new file mode 100644 index 0000000..69e6dba --- /dev/null +++ b/CONTENT/BT/ANIMS/SNDTRN.ANI @@ -0,0 +1,87 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=snd.skl +jointcount=7 + +[Time] +frame1=0 +frame12=0.366667 +frame23=0.733333 +frame34=1.1 +frame45=1.46667 + +[JointIndices] +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 +jointlocal=0 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate + +[frame1] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame12] +jointlthigh=0.293659 0.000000 0.000000 +jointlknee=-0.760082 0.000000 0.000000 +jointlankle=0.454452 0.000000 0.000000 +jointrthigh=0.058707 0.000000 0.000000 +jointrknee=-0.159500 0.000000 0.000000 +jointrankle=0.101507 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.018326 +[frame23] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame34] +jointlthigh=0.044154 0.000000 0.000000 +jointlknee=-0.119840 0.000000 0.000000 +jointlankle=0.076623 0.000000 0.000000 +jointrthigh=0.307909 0.000000 0.000000 +jointrknee=-0.797483 0.000000 0.000000 +jointrankle=0.477670 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.018326 +[frame45] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame12=0.000000 -5.350000 0.000000 +frame23=0.000000 -5.350000 0.000000 +frame34=0.000000 -5.350000 0.000000 +frame45=0.000000 -5.350000 0.000000 + +[KeyJointPos] +frame1=0.000000 0.000000 0.000000 +frame12=0.113777 -0.001042 0.000000 +frame23=0.000000 0.000000 0.000000 +frame34=-0.113777 -0.001042 0.000000 +frame45=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/SNDTRNI.ANI b/CONTENT/BT/ANIMS/SNDTRNI.ANI new file mode 100644 index 0000000..21c052a --- /dev/null +++ b/CONTENT/BT/ANIMS/SNDTRNI.ANI @@ -0,0 +1,94 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=snd.skl +jointcount=8 + +[Time] +frame1=0 +frame12=0.366667 +frame23=0.733333 +frame34=1.1 +frame45=1.46667 + +[JointIndices] +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame12] +jointlthigh=0.285597 0.000000 0.000000 +jointlknee=-0.733401 0.000000 0.000000 +jointlankle=0.435383 0.000000 0.000000 +jointrthigh=0.000030 0.000000 0.000000 +jointrknee=-0.000382 0.000000 0.000000 +jointrankle=0.000807 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.009163 +jointshakey=0.000000 0.000000 -0.009163 +[frame23] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame34] +jointlthigh=0.061957 0.000000 0.000000 +jointlknee=-0.168362 0.000000 0.000000 +jointlankle=0.107585 0.000000 0.000000 +jointrthigh=0.300350 0.000000 0.000000 +jointrknee=-0.771961 0.000000 0.000000 +jointrankle=0.459248 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.009163 +jointshakey=0.000000 0.000000 0.009163 +[frame45] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame12=0.000000 -5.350000 0.000000 +frame23=0.000000 -5.350000 0.000000 +frame34=0.000000 -5.350000 0.000000 +frame45=0.000000 -5.350000 0.000000 + +[KeyJointPos] +frame1=0.000000 0.000000 0.000000 +frame12=0.000000 0.000000 0.000000 +frame23=0.000000 0.000000 0.000000 +frame34=0.000000 0.000000 0.000000 +frame45=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/SNDWGL.ANI b/CONTENT/BT/ANIMS/SNDWGL.ANI new file mode 100644 index 0000000..0fee3fc --- /dev/null +++ b/CONTENT/BT/ANIMS/SNDWGL.ANI @@ -0,0 +1,98 @@ +[LAB_ONLY] + +[HEADER] +framecount=6 +framerate=30 +skeletonfile=snd.skl +jointcount=7 + +[Time] +frame1=0 +frame10=0.3 +frame17=0.533333 +frame22=0.7 +frame26=0.833333 +frame56=1.83333 + +[JointIndices] +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 +jointlocal=0 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate + +[frame1] +jointlthigh=-0.492373 0.000000 0.000000 +jointlknee=-0.475967 0.000000 0.000000 +jointlankle=0.650851 0.000000 0.000000 +jointrthigh=0.412577 0.000000 0.000000 +jointrknee=-0.267172 0.000000 0.000000 +jointrankle=0.163490 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame10] +jointlthigh=-0.589846 0.000000 0.000000 +jointlknee=-0.516366 0.000000 0.000000 +jointlankle=0.287503 0.000000 0.000000 +jointrthigh=0.356485 0.000000 0.000000 +jointrknee=-0.233317 0.000000 0.000000 +jointrankle=0.070402 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.009425 +[frame17] +jointlthigh=-0.526360 0.000000 0.000000 +jointlknee=-0.511573 0.000000 0.000000 +jointlankle=-0.216180 0.000000 0.000000 +jointrthigh=0.224610 0.000000 0.000000 +jointrknee=-0.283318 0.000000 0.000000 +jointrankle=0.058921 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.016755 +[frame22] +jointlthigh=-0.254822 0.000000 0.000000 +jointlknee=-0.689241 0.000000 0.000000 +jointlankle=-0.543888 0.000000 0.000000 +jointrthigh=0.050688 0.000000 0.000000 +jointrknee=-0.218753 0.000000 0.000000 +jointrankle=0.163589 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.021991 +[frame26] +jointlthigh=-0.049463 0.000000 0.000000 +jointlknee=-0.814266 0.000000 0.000000 +jointlankle=-0.499950 0.000000 0.000000 +jointrthigh=-0.054350 0.000000 0.000000 +jointrknee=-0.236876 0.000000 0.000000 +jointrankle=0.288957 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.026180 +[frame56] +jointlthigh=-0.047994 0.000000 0.000000 +jointlknee=-0.818416 0.000000 0.000000 +jointlankle=-0.497190 0.000000 0.000000 +jointrthigh=-0.064916 0.000000 0.000000 +jointrknee=-0.205319 0.000000 0.000000 +jointrankle=0.268894 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.026180 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame10=0.000000 -5.350000 4.548289 +frame17=0.000000 -5.350000 4.548288 +frame22=0.000000 -5.350000 4.548289 +frame26=0.000000 -5.350000 4.548286 +frame56=0.000000 -5.350000 4.487109 + +[KeyJointPos] +frame1=0.000000 -0.273276 0.000000 +frame10=0.056409 -0.223840 0.000000 +frame17=0.101945 -0.125031 0.000000 +frame22=0.135982 -0.026330 0.000000 +frame26=0.165129 0.097180 0.000000 +frame56=0.165129 0.097180 0.000000 diff --git a/CONTENT/BT/ANIMS/SNDWGLI.ANI b/CONTENT/BT/ANIMS/SNDWGLI.ANI new file mode 100644 index 0000000..2fc72b2 --- /dev/null +++ b/CONTENT/BT/ANIMS/SNDWGLI.ANI @@ -0,0 +1,106 @@ +[LAB_ONLY] + +[HEADER] +framecount=6 +framerate=30 +skeletonfile=snd.skl +jointcount=8 + +[Time] +frame1=0 +frame10=0.3 +frame17=0.533333 +frame22=0.7 +frame26=0.833333 +frame56=1.83333 + +[JointIndices] +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=-0.492373 0.000000 0.000000 +jointlknee=-0.475967 0.000000 0.000000 +jointlankle=0.650851 0.000000 0.000000 +jointrthigh=0.412577 0.000000 0.000000 +jointrknee=-0.267172 0.000000 0.000000 +jointrankle=0.163490 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame10] +jointlthigh=-0.594145 0.000000 0.000000 +jointlknee=-0.499391 0.000000 0.000000 +jointlankle=0.274820 0.000000 0.000000 +jointrthigh=0.337831 0.000000 0.000000 +jointrknee=-0.179758 0.000000 0.000000 +jointrankle=0.041441 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.005655 +jointshakey=0.000000 0.000000 -0.005655 +[frame17] +jointlthigh=-0.535066 0.000000 0.000000 +jointlknee=-0.479372 0.000000 0.000000 +jointlankle=-0.239721 0.000000 0.000000 +jointrthigh=0.191981 0.000000 0.000000 +jointrknee=-0.196985 0.000000 0.000000 +jointrankle=0.004486 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.010053 +jointshakey=0.000000 0.000000 -0.010053 +[frame22] +jointlthigh=-0.265290 0.000000 0.000000 +jointlknee=-0.652404 0.000000 0.000000 +jointlankle=-0.570269 0.000000 0.000000 +jointrthigh=0.083075 0.000000 0.000000 +jointrknee=-0.299415 0.000000 0.000000 +jointrankle=0.216330 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.013195 +jointshakey=0.000000 0.000000 -0.013195 +[frame26] +jointlthigh=-0.049463 0.000000 0.000000 +jointlknee=-0.814266 0.000000 0.000000 +jointlankle=-0.499950 0.000000 0.000000 +jointrthigh=-0.074480 0.000000 0.000000 +jointrknee=-0.190792 0.000000 0.000000 +jointrankle=0.267028 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.015708 +jointshakey=0.000000 0.000000 -0.015708 +[frame56] +jointlthigh=-0.047994 0.000000 0.000000 +jointlknee=-0.818416 0.000000 0.000000 +jointlankle=-0.497190 0.000000 0.000000 +jointrthigh=-0.068744 0.000000 0.000000 +jointrknee=-0.194564 0.000000 0.000000 +jointrankle=0.262712 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.015708 +jointshakey=0.000000 0.000000 -0.015708 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame10=0.000000 -5.350000 4.548289 +frame17=0.000000 -5.350000 4.548288 +frame22=0.000000 -5.350000 4.548289 +frame26=0.000000 -5.350000 4.548286 +frame56=0.000000 -5.350000 4.487109 + +[KeyJointPos] +frame1=0.000000 -0.273276 0.000000 +frame10=0.000000 -0.223574 0.000000 +frame17=0.000000 -0.124177 0.000000 +frame22=0.000000 -0.024836 0.000000 +frame26=0.000000 0.099342 0.000000 +frame56=0.000000 0.099342 0.000000 diff --git a/CONTENT/BT/ANIMS/SNDWGR.ANI b/CONTENT/BT/ANIMS/SNDWGR.ANI new file mode 100644 index 0000000..44466b2 --- /dev/null +++ b/CONTENT/BT/ANIMS/SNDWGR.ANI @@ -0,0 +1,98 @@ +[LAB_ONLY] + +[HEADER] +framecount=6 +framerate=30 +skeletonfile=snd.skl +jointcount=7 + +[Time] +frame1=0 +frame10=0.3 +frame17=0.533333 +frame22=0.7 +frame26=0.833333 +frame56=1.83333 + +[JointIndices] +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 +jointlocal=0 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate + +[frame1] +jointlthigh=0.412577 0.000000 0.000000 +jointlknee=-0.267172 0.000000 0.000000 +jointlankle=0.163490 0.000000 0.000000 +jointrthigh=-0.492373 0.000000 0.000000 +jointrknee=-0.475967 0.000000 0.000000 +jointrankle=0.650851 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame10] +jointlthigh=0.323867 0.000000 0.000000 +jointlknee=-0.137254 0.000000 0.000000 +jointlankle=0.006893 0.000000 0.000000 +jointrthigh=-0.576287 0.000000 0.000000 +jointrknee=-0.548611 0.000000 0.000000 +jointrankle=0.306218 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.009425 +[frame17] +jointlthigh=0.199898 0.000000 0.000000 +jointlknee=-0.229088 0.000000 0.000000 +jointlankle=0.029444 0.000000 0.000000 +jointrthigh=-0.525512 0.000000 0.000000 +jointrknee=-0.530688 0.000000 0.000000 +jointrankle=-0.197871 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.016755 +[frame22] +jointlthigh=0.050688 0.000000 0.000000 +jointlknee=-0.218753 0.000000 0.000000 +jointlankle=0.163589 0.000000 0.000000 +jointrthigh=-0.254822 0.000000 0.000000 +jointrknee=-0.689241 0.000000 0.000000 +jointrankle=-0.543888 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.021991 +[frame26] +jointlthigh=-0.054350 0.000000 0.000000 +jointlknee=-0.236876 0.000000 0.000000 +jointlankle=0.288957 0.000000 0.000000 +jointrthigh=-0.049463 0.000000 0.000000 +jointrknee=-0.814266 0.000000 0.000000 +jointrankle=-0.499950 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.026180 +[frame56] +jointlthigh=-0.064810 0.000000 0.000000 +jointlknee=-0.205902 0.000000 0.000000 +jointlankle=0.269529 0.000000 0.000000 +jointrthigh=-0.048643 0.000000 0.000000 +jointrknee=-0.816664 0.000000 0.000000 +jointrankle=-0.498328 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.026180 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame10=0.000000 -5.350000 4.548289 +frame17=0.000000 -5.350000 4.548288 +frame22=0.000000 -5.350000 4.548289 +frame26=0.000000 -5.350000 4.548286 +frame56=0.000000 -5.350000 4.487109 + +[KeyJointPos] +frame1=0.000000 -0.273276 0.000000 +frame10=-0.056409 -0.223840 0.000000 +frame17=-0.101945 -0.125031 0.000000 +frame22=-0.135982 -0.026330 0.000000 +frame26=-0.165129 0.097180 0.000000 +frame56=-0.165129 0.097180 0.000000 diff --git a/CONTENT/BT/ANIMS/SNDWGRI.ANI b/CONTENT/BT/ANIMS/SNDWGRI.ANI new file mode 100644 index 0000000..9a60126 --- /dev/null +++ b/CONTENT/BT/ANIMS/SNDWGRI.ANI @@ -0,0 +1,106 @@ +[LAB_ONLY] + +[HEADER] +framecount=6 +framerate=30 +skeletonfile=snd.skl +jointcount=8 + +[Time] +frame1=0 +frame10=0.3 +frame17=0.533333 +frame22=0.7 +frame26=0.833333 +frame56=1.83333 + +[JointIndices] +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=0.412577 0.000000 0.000000 +jointlknee=-0.267172 0.000000 0.000000 +jointlankle=0.163490 0.000000 0.000000 +jointrthigh=-0.492373 0.000000 0.000000 +jointrknee=-0.475967 0.000000 0.000000 +jointrankle=0.650851 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame10] +jointlthigh=0.328207 0.000000 0.000000 +jointlknee=-0.132440 0.000000 0.000000 +jointlankle=-0.023875 0.000000 0.000000 +jointrthigh=-0.594145 0.000000 0.000000 +jointrknee=-0.499391 0.000000 0.000000 +jointrankle=0.274820 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.005655 +jointshakey=0.000000 0.000000 0.005655 +[frame17] +jointlthigh=0.180326 0.000000 0.000000 +jointlknee=-0.165998 0.000000 0.000000 +jointlankle=-0.015017 0.000000 0.000000 +jointrthigh=-0.525761 0.000000 0.000000 +jointrknee=-0.515321 0.000000 0.000000 +jointrankle=-0.214691 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.010053 +jointshakey=0.000000 0.000000 0.010053 +[frame22] +jointlthigh=0.079831 0.000000 0.000000 +jointlknee=-0.295589 0.000000 0.000000 +jointlankle=0.211290 0.000000 0.000000 +jointrthigh=-0.251029 0.000000 0.000000 +jointrknee=-0.684501 0.000000 0.000000 +jointrankle=-0.580085 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.013195 +jointshakey=0.000000 0.000000 0.013195 +[frame26] +jointlthigh=-0.080860 0.000000 0.000000 +jointlknee=-0.165134 0.000000 0.000000 +jointlankle=0.246070 0.000000 0.000000 +jointrthigh=-0.037502 0.000000 0.000000 +jointrknee=-0.852489 0.000000 0.000000 +jointrankle=-0.472777 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.015708 +jointshakey=0.000000 0.000000 0.015708 +[frame56] +jointlthigh=-0.074920 0.000000 0.000000 +jointlknee=-0.176755 0.000000 0.000000 +jointlankle=0.250692 0.000000 0.000000 +jointrthigh=-0.048643 0.000000 0.000000 +jointrknee=-0.816664 0.000000 0.000000 +jointrankle=-0.498328 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.015708 +jointshakey=0.000000 0.000000 0.015708 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame10=0.000000 -5.350000 4.548289 +frame17=0.000000 -5.350000 4.548288 +frame22=0.000000 -5.350000 4.548289 +frame26=0.000000 -5.350000 4.548286 +frame56=0.000000 -5.350000 4.487109 + +[KeyJointPos] +frame1=0.000000 -0.273276 0.000000 +frame10=0.000000 -0.223574 0.000000 +frame17=0.000000 -0.124177 0.000000 +frame22=0.000000 -0.024836 0.000000 +frame26=0.000000 0.099342 0.000000 +frame56=0.000000 0.099342 0.000000 diff --git a/CONTENT/BT/ANIMS/SNDWRL.ANI b/CONTENT/BT/ANIMS/SNDWRL.ANI new file mode 100644 index 0000000..7c67b56 --- /dev/null +++ b/CONTENT/BT/ANIMS/SNDWRL.ANI @@ -0,0 +1,108 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=snd.skl +jointcount=10 + +[Time] +frame1=0 +frame5=0.133333 +frame10=0.3 +frame17=0.533333 +frame47=1.53333 + +[JointIndices] +jointhip=1 +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 +jointrshoulder=4 +jointlshoulder=6 +jointlocal=0 + +[JointType] +jointhip=hingex +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointrshoulder=hingex +jointlshoulder=hingex +jointlocal=balltranslate + +[frame1] +jointhip=-0.078540 0.000000 0.000000 +jointlthigh=-0.491890 0.000000 0.000000 +jointlknee=-0.472590 0.000000 0.000000 +jointlankle=0.630289 0.000000 0.000000 +jointrthigh=0.395614 0.000000 0.000000 +jointrknee=-0.220767 0.000000 0.000000 +jointrankle=0.133954 0.000000 0.000000 +jointrshoulder=0.078540 0.000000 0.000000 +jointlshoulder=0.078540 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame5] +jointhip=-0.117585 0.000000 0.000000 +jointlthigh=-0.074797 0.000000 0.000000 +jointlknee=-1.239543 0.000000 0.000000 +jointlankle=-0.160774 0.000000 0.000000 +jointrthigh=0.321226 0.000000 0.000000 +jointrknee=-0.608844 0.000000 0.000000 +jointrankle=0.287300 0.000000 0.000000 +jointrshoulder=0.117585 0.000000 0.000000 +jointlshoulder=0.117585 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.010472 +[frame10] +jointhip=-0.156629 0.000000 0.000000 +jointlthigh=0.301094 0.000000 0.000000 +jointlknee=-1.315069 0.000000 0.000000 +jointlankle=0.405091 0.000000 0.000000 +jointrthigh=-0.150137 0.000000 0.000000 +jointrknee=-0.578414 0.000000 0.000000 +jointrankle=0.731094 0.000000 0.000000 +jointrshoulder=0.156629 0.000000 0.000000 +jointlshoulder=0.156629 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.026180 +[frame17] +jointhip=-0.208689 0.000000 0.000000 +jointlthigh=0.733611 0.000000 0.000000 +jointlknee=-0.461245 0.000000 0.000000 +jointlankle=0.195510 0.000000 0.000000 +jointrthigh=-0.519965 0.000000 0.000000 +jointrknee=-0.483357 0.000000 0.000000 +jointrankle=-0.238857 0.000000 0.000000 +jointrshoulder=0.208689 0.000000 0.000000 +jointlshoulder=0.208689 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.013090 +[frame47] +jointhip=-0.208689 0.000000 0.000000 +jointlthigh=0.733611 0.000000 0.000000 +jointlknee=-0.461245 0.000000 0.000000 +jointlankle=0.195510 0.000000 0.000000 +jointrthigh=-0.527775 0.000000 0.000000 +jointrknee=-0.461195 0.000000 0.000000 +jointrankle=-0.253401 0.000000 0.000000 +jointrshoulder=0.208689 0.000000 0.000000 +jointlshoulder=0.208689 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.013090 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame5=0.000000 -5.350000 11.643741 +frame10=0.000000 -5.350000 14.028008 +frame17=0.000000 -5.350000 16.229568 +frame47=0.000000 -5.350000 14.630703 + +[KeyJointPos] +frame1=0.000000 -0.273276 0.000000 +frame5=0.060987 -0.385267 0.000000 +frame10=0.157327 -0.200748 0.000000 +frame17=0.080946 -0.025365 0.000000 +frame47=0.080946 -0.025365 0.000000 diff --git a/CONTENT/BT/ANIMS/SNDWRLI.ANI b/CONTENT/BT/ANIMS/SNDWRLI.ANI new file mode 100644 index 0000000..3f7bf2f --- /dev/null +++ b/CONTENT/BT/ANIMS/SNDWRLI.ANI @@ -0,0 +1,106 @@ +[LAB_ONLY] + +[HEADER] +framecount=6 +framerate=30 +skeletonfile=snd.skl +jointcount=8 + +[Time] +frame1=0 +frame5=0.133333 +frame10=0.3 +frame14=0.433333 +frame17=0.533333 +frame47=1.53333 + +[JointIndices] +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=-0.491890 0.000000 0.000000 +jointlknee=-0.472590 0.000000 0.000000 +jointlankle=0.630289 0.000000 0.000000 +jointrthigh=0.395614 0.000000 0.000000 +jointrknee=-0.220767 0.000000 0.000000 +jointrankle=0.133954 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame5] +jointlthigh=-0.080152 0.000000 0.000000 +jointlknee=-1.228141 0.000000 0.000000 +jointlankle=-0.166943 0.000000 0.000000 +jointrthigh=0.320317 0.000000 0.000000 +jointrknee=-0.606718 0.000000 0.000000 +jointrankle=0.286740 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.007854 +jointshakey=0.000000 0.000000 -0.007854 +[frame10] +jointlthigh=0.301094 0.000000 0.000000 +jointlknee=-1.315069 0.000000 0.000000 +jointlankle=0.405091 0.000000 0.000000 +jointrthigh=-0.165640 0.000000 0.000000 +jointrknee=-0.532483 0.000000 0.000000 +jointrankle=0.702111 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.015708 +jointshakey=0.000000 0.000000 -0.015708 +[frame14] +jointlthigh=0.548246 0.000000 0.000000 +jointlknee=-0.827170 0.000000 0.000000 +jointlankle=0.285330 0.000000 0.000000 +jointrthigh=-0.292631 0.000000 0.000000 +jointrknee=-0.837608 0.000000 0.000000 +jointrankle=0.406562 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.011968 +jointshakey=0.000000 0.000000 -0.011968 +[frame17] +jointlthigh=0.733611 0.000000 0.000000 +jointlknee=-0.461245 0.000000 0.000000 +jointlankle=0.195510 0.000000 0.000000 +jointrthigh=-0.535333 0.000000 0.000000 +jointrknee=-0.430700 0.000000 0.000000 +jointrankle=-0.277073 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.009163 +jointshakey=0.000000 0.000000 -0.009163 +[frame47] +jointlthigh=0.733611 0.000000 0.000000 +jointlknee=-0.461245 0.000000 0.000000 +jointlankle=0.195510 0.000000 0.000000 +jointrthigh=-0.534118 0.000000 0.000000 +jointrknee=-0.442685 0.000000 0.000000 +jointrankle=-0.268295 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.009163 +jointshakey=0.000000 0.000000 -0.009163 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame5=0.000000 -5.350000 11.643741 +frame10=0.000000 -5.350000 14.028008 +frame14=0.000000 -5.350000 16.229568 +frame17=0.000000 -5.350000 16.229568 +frame47=0.000000 -5.350000 14.630703 + +[KeyJointPos] +frame1=0.000000 -0.273276 0.000000 +frame5=0.000000 -0.384948 0.000000 +frame10=0.000000 -0.198689 0.000000 +frame14=0.000000 -0.099344 0.000000 +frame17=0.000000 -0.024836 0.000000 +frame47=0.000000 -0.024836 0.000000 diff --git a/CONTENT/BT/ANIMS/SNDWRR.ANI b/CONTENT/BT/ANIMS/SNDWRR.ANI new file mode 100644 index 0000000..b0f7918 --- /dev/null +++ b/CONTENT/BT/ANIMS/SNDWRR.ANI @@ -0,0 +1,108 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=snd.skl +jointcount=10 + +[Time] +frame1=0 +frame5=0.133333 +frame10=0.3 +frame17=0.533333 +frame47=1.53333 + +[JointIndices] +jointhip=1 +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 +jointrshoulder=4 +jointlshoulder=6 +jointlocal=0 + +[JointType] +jointhip=hingex +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointrshoulder=hingex +jointlshoulder=hingex +jointlocal=balltranslate + +[frame1] +jointhip=-0.078540 0.000000 0.000000 +jointlthigh=0.395614 0.000000 0.000000 +jointlknee=-0.220767 0.000000 0.000000 +jointlankle=0.133954 0.000000 0.000000 +jointrthigh=-0.491890 0.000000 0.000000 +jointrknee=-0.472590 0.000000 0.000000 +jointrankle=0.630289 0.000000 0.000000 +jointrshoulder=0.078540 0.000000 0.000000 +jointlshoulder=0.078540 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame5] +jointhip=-0.117585 0.000000 0.000000 +jointlthigh=0.321226 0.000000 0.000000 +jointlknee=-0.608844 0.000000 0.000000 +jointlankle=0.287300 0.000000 0.000000 +jointrthigh=-0.074797 0.000000 0.000000 +jointrknee=-1.239543 0.000000 0.000000 +jointrankle=-0.160774 0.000000 0.000000 +jointrshoulder=0.117585 0.000000 0.000000 +jointlshoulder=0.117585 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.010472 +[frame10] +jointhip=-0.156629 0.000000 0.000000 +jointlthigh=-0.186490 0.000000 0.000000 +jointlknee=-0.468045 0.000000 0.000000 +jointlankle=0.656928 0.000000 0.000000 +jointrthigh=0.301094 0.000000 0.000000 +jointrknee=-1.315069 0.000000 0.000000 +jointrankle=0.405091 0.000000 0.000000 +jointrshoulder=0.156629 0.000000 0.000000 +jointlshoulder=0.156629 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.026180 +[frame17] +jointhip=-0.208689 0.000000 0.000000 +jointlthigh=-0.535144 0.000000 0.000000 +jointlknee=-0.429251 0.000000 0.000000 +jointlankle=-0.277879 0.000000 0.000000 +jointrthigh=0.733611 0.000000 0.000000 +jointrknee=-0.461245 0.000000 0.000000 +jointrankle=0.195510 0.000000 0.000000 +jointrshoulder=0.208689 0.000000 0.000000 +jointlshoulder=0.208689 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.013090 +[frame47] +jointhip=-0.208689 0.000000 0.000000 +jointlthigh=-0.532673 0.000000 0.000000 +jointlknee=-0.436212 0.000000 0.000000 +jointlankle=-0.273442 0.000000 0.000000 +jointrthigh=0.733611 0.000000 0.000000 +jointrknee=-0.461245 0.000000 0.000000 +jointrankle=0.195510 0.000000 0.000000 +jointrshoulder=0.208689 0.000000 0.000000 +jointlshoulder=0.208689 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.013090 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame5=0.000000 -5.350000 11.643741 +frame10=0.000000 -5.350000 14.028008 +frame17=0.000000 -5.350000 16.229568 +frame47=0.000000 -5.350000 14.639702 + +[KeyJointPos] +frame1=0.000000 -0.273276 0.000000 +frame5=-0.060987 -0.385267 0.000000 +frame10=-0.157327 -0.200748 0.000000 +frame17=-0.080946 -0.025365 0.000000 +frame47=-0.080946 -0.025365 0.000000 diff --git a/CONTENT/BT/ANIMS/SNDWRRI.ANI b/CONTENT/BT/ANIMS/SNDWRRI.ANI new file mode 100644 index 0000000..6403e55 --- /dev/null +++ b/CONTENT/BT/ANIMS/SNDWRRI.ANI @@ -0,0 +1,106 @@ +[LAB_ONLY] + +[HEADER] +framecount=6 +framerate=30 +skeletonfile=snd.skl +jointcount=8 + +[Time] +frame1=0 +frame5=0.133333 +frame10=0.3 +frame14=0.433333 +frame17=0.533333 +frame47=1.53333 + +[JointIndices] +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=0.395614 0.000000 0.000000 +jointlknee=-0.220767 0.000000 0.000000 +jointlankle=0.133954 0.000000 0.000000 +jointrthigh=-0.491890 0.000000 0.000000 +jointrknee=-0.472590 0.000000 0.000000 +jointrankle=0.630289 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame5] +jointlthigh=0.320418 0.000000 0.000000 +jointlknee=-0.607221 0.000000 0.000000 +jointlankle=0.287135 0.000000 0.000000 +jointrthigh=-0.077469 0.000000 0.000000 +jointrknee=-1.233869 0.000000 0.000000 +jointrankle=-0.163836 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.007854 +jointshakey=0.000000 0.000000 0.007854 +[frame10] +jointlthigh=-0.195562 0.000000 0.000000 +jointlknee=-0.439601 0.000000 0.000000 +jointlankle=0.636202 0.000000 0.000000 +jointrthigh=0.301094 0.000000 0.000000 +jointrknee=-1.315069 0.000000 0.000000 +jointrankle=0.405091 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.015708 +jointshakey=0.000000 0.000000 0.015708 +[frame14] +jointlthigh=-0.295852 0.000000 0.000000 +jointlknee=-0.837882 0.000000 0.000000 +jointlankle=0.418120 0.000000 0.000000 +jointrthigh=0.548246 0.000000 0.000000 +jointrknee=-0.827170 0.000000 0.000000 +jointrankle=0.285330 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.011968 +jointshakey=0.000000 0.000000 0.011968 +[frame17] +jointlthigh=-0.536050 0.000000 0.000000 +jointlknee=-0.423270 0.000000 0.000000 +jointlankle=-0.283956 0.000000 0.000000 +jointrthigh=0.733611 0.000000 0.000000 +jointrknee=-0.461245 0.000000 0.000000 +jointrankle=0.195510 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.009163 +jointshakey=0.000000 0.000000 0.009163 +[frame47] +jointlthigh=-0.538853 0.000000 0.000000 +jointlknee=-0.415233 0.000000 0.000000 +jointlankle=-0.289011 0.000000 0.000000 +jointrthigh=0.733611 0.000000 0.000000 +jointrknee=-0.461245 0.000000 0.000000 +jointrankle=0.195508 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.009163 +jointshakey=0.000000 0.000000 0.009163 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame5=0.000000 -5.350000 11.643741 +frame10=0.000000 -5.350000 14.028008 +frame14=0.000000 -5.350000 16.229568 +frame17=0.000000 -5.350000 16.229568 +frame47=0.000000 -5.350000 14.639702 + +[KeyJointPos] +frame1=0.000000 -0.273276 0.000000 +frame5=0.000000 -0.384948 0.000000 +frame10=0.000000 -0.198689 0.000000 +frame14=0.000000 -0.099344 0.000000 +frame17=0.000000 -0.024836 0.000000 +frame47=0.000000 -0.024836 0.000000 diff --git a/CONTENT/BT/ANIMS/SNDWSLI.ANI b/CONTENT/BT/ANIMS/SNDWSLI.ANI new file mode 100644 index 0000000..5cdb047 --- /dev/null +++ b/CONTENT/BT/ANIMS/SNDWSLI.ANI @@ -0,0 +1,94 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=snd.skl +jointcount=8 + +[Time] +frame1=0 +frame7=0.2 +frame12=0.366667 +frame17=0.533333 +frame22=0.7 + +[JointIndices] +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=-0.488771 0.000000 0.000000 +jointlknee=-0.480292 0.000000 0.000000 +jointlankle=0.634804 0.000000 0.000000 +jointrthigh=0.395614 0.000000 0.000000 +jointrknee=-0.220767 0.000000 0.000000 +jointrankle=0.133954 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame7] +jointlthigh=-0.150568 0.000000 0.000000 +jointlknee=-1.044379 0.000000 0.000000 +jointlankle=0.668538 0.000000 0.000000 +jointrthigh=0.254865 0.000000 0.000000 +jointrknee=-0.120479 0.000000 0.000000 +jointrankle=-0.057184 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.006188 +jointshakey=0.000000 0.000000 -0.006188 +[frame12] +jointlthigh=-0.027415 0.000000 0.000000 +jointlknee=-0.976342 0.000000 0.000000 +jointlankle=0.616031 0.000000 0.000000 +jointrthigh=0.166625 0.000000 0.000000 +jointrknee=-0.162448 0.000000 0.000000 +jointrankle=-0.004668 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.011345 +jointshakey=0.000000 0.000000 -0.011345 +[frame17] +jointlthigh=0.057597 0.000000 0.000000 +jointlknee=-0.727137 0.000000 0.000000 +jointlankle=0.611028 0.000000 0.000000 +jointrthigh=0.105456 0.000000 0.000000 +jointrknee=-0.187485 0.000000 0.000000 +jointrankle=0.082065 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.005672 +jointshakey=0.000000 0.000000 -0.005672 +[frame22] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame7=0.000000 -5.350000 3.921542 +frame12=0.000000 -5.350000 3.921547 +frame17=0.000000 -5.350000 2.201397 +frame22=0.000000 -5.350000 1.080609 + +[KeyJointPos] +frame1=0.000000 -0.273189 0.000000 +frame7=0.000000 -0.205463 0.000000 +frame12=0.000000 -0.149024 0.000000 +frame17=0.000000 -0.074512 0.000000 +frame22=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/SNDWSRI.ANI b/CONTENT/BT/ANIMS/SNDWSRI.ANI new file mode 100644 index 0000000..2767ecd --- /dev/null +++ b/CONTENT/BT/ANIMS/SNDWSRI.ANI @@ -0,0 +1,94 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=snd.skl +jointcount=8 + +[Time] +frame1=0 +frame7=0.2 +frame12=0.366667 +frame17=0.533333 +frame22=0.7 + +[JointIndices] +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=0.395614 0.000000 0.000000 +jointlknee=-0.220767 0.000000 0.000000 +jointlankle=0.133954 0.000000 0.000000 +jointrthigh=-0.488771 0.000000 0.000000 +jointrknee=-0.480292 0.000000 0.000000 +jointrankle=0.634804 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame7] +jointlthigh=0.254865 0.000000 0.000000 +jointlknee=-0.120479 0.000000 0.000000 +jointlankle=-0.057184 0.000000 0.000000 +jointrthigh=-0.150568 0.000000 0.000000 +jointrknee=-1.044379 0.000000 0.000000 +jointrankle=0.668538 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.006188 +jointshakey=0.000000 0.000000 0.006188 +[frame12] +jointlthigh=0.187099 0.000000 0.000000 +jointlknee=-0.208450 0.000000 0.000000 +jointlankle=0.018567 0.000000 0.000000 +jointrthigh=-0.030099 0.000000 0.000000 +jointrknee=-0.967366 0.000000 0.000000 +jointrankle=0.609624 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.011345 +jointshakey=0.000000 0.000000 0.011345 +[frame17] +jointlthigh=0.109106 0.000000 0.000000 +jointlknee=-0.194308 0.000000 0.000000 +jointlankle=0.083546 0.000000 0.000000 +jointrthigh=0.057598 0.000000 0.000000 +jointrknee=-0.727141 0.000000 0.000000 +jointrankle=0.611031 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.005672 +jointshakey=0.000000 0.000000 0.005672 +[frame22] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame7=0.000000 -5.350000 3.921542 +frame12=0.000000 -5.350000 3.921547 +frame17=0.000000 -5.350000 2.201397 +frame22=0.000000 -5.350000 1.080609 + +[KeyJointPos] +frame1=0.000000 -0.273189 0.000000 +frame7=0.000000 -0.205463 0.000000 +frame12=0.000000 -0.149024 0.000000 +frame17=0.000000 -0.074512 0.000000 +frame22=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/SNDWWL.ANI b/CONTENT/BT/ANIMS/SNDWWL.ANI new file mode 100644 index 0000000..f3faa64 --- /dev/null +++ b/CONTENT/BT/ANIMS/SNDWWL.ANI @@ -0,0 +1,76 @@ +[LAB_ONLY] + +[HEADER] +framecount=4 +framerate=30 +skeletonfile=snd.skl +jointcount=7 + +[Time] +frame1=0 +frame4=0.1 +frame9=0.266667 +frame13=0.4 + +[JointIndices] +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 +jointlocal=0 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate + +[frame1] +jointlthigh=-0.491890 0.000000 0.000000 +jointlknee=-0.472590 0.000000 0.000000 +jointlankle=0.630289 0.000000 0.000000 +jointrthigh=0.395614 0.000000 0.000000 +jointrknee=-0.220767 0.000000 0.000000 +jointrankle=0.133954 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame4] +jointlthigh=-0.126581 0.000000 0.000000 +jointlknee=-1.117190 0.000000 0.000000 +jointlankle=-0.265688 0.000000 0.000000 +jointrthigh=0.176339 0.000000 0.000000 +jointrknee=-0.201414 0.000000 0.000000 +jointrankle=0.024431 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.017453 +[frame9] +jointlthigh=0.296118 0.000000 0.000000 +jointlknee=-1.254241 0.000000 0.000000 +jointlankle=0.620185 0.000000 0.000000 +jointrthigh=-0.243920 0.000000 0.000000 +jointrknee=-0.299546 0.000000 0.000000 +jointrankle=0.543405 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.013090 +[frame13] +jointlthigh=0.395614 0.000000 0.000000 +jointlknee=-0.220767 0.000000 0.000000 +jointlankle=0.133954 0.000000 0.000000 +jointrthigh=-0.488196 0.000000 0.000000 +jointrknee=-0.483620 0.000000 0.000000 +jointrankle=0.651607 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame4=0.000000 -5.350000 14.534702 +frame9=0.000000 -5.350000 14.400597 +frame13=0.000000 -5.350000 14.646976 + +[KeyJointPos] +frame1=0.000000 -0.273276 0.000000 +frame4=0.105758 -0.149948 0.000000 +frame9=0.080296 -0.075032 0.000000 +frame13=0.000000 -0.273189 0.000000 diff --git a/CONTENT/BT/ANIMS/SNDWWLI.ANI b/CONTENT/BT/ANIMS/SNDWWLI.ANI new file mode 100644 index 0000000..fffb58a --- /dev/null +++ b/CONTENT/BT/ANIMS/SNDWWLI.ANI @@ -0,0 +1,82 @@ +[LAB_ONLY] + +[HEADER] +framecount=4 +framerate=30 +skeletonfile=snd.skl +jointcount=8 + +[Time] +frame1=0 +frame4=0.1 +frame9=0.266667 +frame13=0.4 + +[JointIndices] +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=-0.491890 0.000000 0.000000 +jointlknee=-0.472590 0.000000 0.000000 +jointlankle=0.630289 0.000000 0.000000 +jointrthigh=0.395614 0.000000 0.000000 +jointrknee=-0.220767 0.000000 0.000000 +jointrankle=0.133954 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame4] +jointlthigh=-0.133885 0.000000 0.000000 +jointlknee=-1.101011 0.000000 0.000000 +jointlankle=-0.274800 0.000000 0.000000 +jointrthigh=0.165597 0.000000 0.000000 +jointrknee=-0.179633 0.000000 0.000000 +jointrankle=0.014138 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.011345 +jointshakey=0.000000 0.000000 -0.011345 +[frame9] +jointlthigh=0.296118 0.000000 0.000000 +jointlknee=-1.254241 0.000000 0.000000 +jointlankle=0.620185 0.000000 0.000000 +jointrthigh=-0.254172 0.000000 0.000000 +jointrknee=-0.270229 0.000000 0.000000 +jointrankle=0.523918 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.009163 +jointshakey=0.000000 0.000000 -0.009163 +[frame13] +jointlthigh=0.395614 0.000000 0.000000 +jointlknee=-0.220767 0.000000 0.000000 +jointlankle=0.133954 0.000000 0.000000 +jointrthigh=-0.488196 0.000000 0.000000 +jointrknee=-0.483620 0.000000 0.000000 +jointrankle=0.651607 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame4=0.000000 -5.350000 14.534702 +frame9=0.000000 -5.350000 14.400597 +frame13=0.000000 -5.350000 14.646976 + +[KeyJointPos] +frame1=0.000000 -0.273276 0.000000 +frame4=0.000000 -0.149024 0.000000 +frame9=0.000000 -0.074506 0.000000 +frame13=0.000000 -0.273189 0.000000 diff --git a/CONTENT/BT/ANIMS/SNDWWR.ANI b/CONTENT/BT/ANIMS/SNDWWR.ANI new file mode 100644 index 0000000..c3afd38 --- /dev/null +++ b/CONTENT/BT/ANIMS/SNDWWR.ANI @@ -0,0 +1,76 @@ +[LAB_ONLY] + +[HEADER] +framecount=4 +framerate=30 +skeletonfile=snd.skl +jointcount=7 + +[Time] +frame1=0 +frame4=0.1 +frame9=0.266667 +frame13=0.4 + +[JointIndices] +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 +jointlocal=0 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate + +[frame1] +jointlthigh=0.395614 0.000000 0.000000 +jointlknee=-0.220767 0.000000 0.000000 +jointlankle=0.133954 0.000000 0.000000 +jointrthigh=-0.491890 0.000000 0.000000 +jointrknee=-0.472590 0.000000 0.000000 +jointrankle=0.630289 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame4] +jointlthigh=0.170555 0.000000 0.000000 +jointlknee=-0.186947 0.000000 0.000000 +jointlankle=0.016811 0.000000 0.000000 +jointrthigh=-0.133886 0.000000 0.000000 +jointrknee=-1.101006 0.000000 0.000000 +jointrankle=-0.274804 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.017453 +[frame9] +jointlthigh=-0.245446 0.000000 0.000000 +jointlknee=-0.293273 0.000000 0.000000 +jointlankle=0.539197 0.000000 0.000000 +jointrthigh=0.296118 0.000000 0.000000 +jointrknee=-1.254241 0.000000 0.000000 +jointrankle=0.620185 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.013090 +[frame13] +jointlthigh=-0.488196 0.000000 0.000000 +jointlknee=-0.483620 0.000000 0.000000 +jointlankle=0.651607 0.000000 0.000000 +jointrthigh=0.395614 0.000000 0.000000 +jointrknee=-0.220767 0.000000 0.000000 +jointrankle=0.133954 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame4=0.000000 -5.350000 14.534702 +frame9=0.000000 -5.350000 14.400597 +frame13=0.000000 -5.350000 14.646976 + +[KeyJointPos] +frame1=0.000000 -0.273276 0.000000 +frame4=-0.105758 -0.149948 0.000000 +frame9=-0.080296 -0.075032 0.000000 +frame13=0.000000 -0.273189 0.000000 diff --git a/CONTENT/BT/ANIMS/SNDWWRI.ANI b/CONTENT/BT/ANIMS/SNDWWRI.ANI new file mode 100644 index 0000000..c888358 --- /dev/null +++ b/CONTENT/BT/ANIMS/SNDWWRI.ANI @@ -0,0 +1,82 @@ +[LAB_ONLY] + +[HEADER] +framecount=4 +framerate=30 +skeletonfile=snd.skl +jointcount=8 + +[Time] +frame1=0 +frame4=0.1 +frame9=0.266667 +frame13=0.4 + +[JointIndices] +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=0.395614 0.000000 0.000000 +jointlknee=-0.220767 0.000000 0.000000 +jointlankle=0.133954 0.000000 0.000000 +jointrthigh=-0.491890 0.000000 0.000000 +jointrknee=-0.472590 0.000000 0.000000 +jointrankle=0.630289 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame4] +jointlthigh=0.147616 0.000000 0.000000 +jointlknee=-0.129438 0.000000 0.000000 +jointlankle=-0.015679 0.000000 0.000000 +jointrthigh=-0.141287 0.000000 0.000000 +jointrknee=-1.084371 0.000000 0.000000 +jointrankle=-0.284291 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.011345 +jointshakey=0.000000 0.000000 0.011345 +[frame9] +jointlthigh=-0.255354 0.000000 0.000000 +jointlknee=-0.265047 0.000000 0.000000 +jointlankle=0.520209 0.000000 0.000000 +jointrthigh=0.296118 0.000000 0.000000 +jointrknee=-1.254241 0.000000 0.000000 +jointrankle=0.620185 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.009163 +jointshakey=0.000000 0.000000 0.009163 +[frame13] +jointlthigh=-0.488196 0.000000 0.000000 +jointlknee=-0.483620 0.000000 0.000000 +jointlankle=0.651607 0.000000 0.000000 +jointrthigh=0.395614 0.000000 0.000000 +jointrknee=-0.220767 0.000000 0.000000 +jointrankle=0.133954 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame4=0.000000 -5.350000 14.534702 +frame9=0.000000 -5.350000 14.400597 +frame13=0.000000 -5.350000 14.646976 + +[KeyJointPos] +frame1=0.000000 -0.273276 0.000000 +frame4=0.000000 -0.149024 0.000000 +frame9=0.000000 -0.074506 0.000000 +frame13=0.000000 -0.273189 0.000000 diff --git a/CONTENT/BT/ANIMS/STIBBLI.ANI b/CONTENT/BT/ANIMS/STIBBLI.ANI new file mode 100644 index 0000000..ee6c370 --- /dev/null +++ b/CONTENT/BT/ANIMS/STIBBLI.ANI @@ -0,0 +1,231 @@ +[LAB_ONLY] + +[HEADER] +framecount=11 +framerate=30 +skeletonfile=sti.skl +jointcount=13 + +[Time] +frame1=0 +frame2=0.0333333 +frame3=0.0666667 +frame4=0.1 +frame5=0.133333 +frame6=0.166667 +frame7=0.2 +frame8=0.233333 +frame9=0.266667 +frame10=0.3 +frame11=0.333333 + +[JointIndices] +jointlocal=0 +jointrknee=7 +jointrshin=8 +jointrankle=9 +jointrinnertoe=11 +jointroutertoe=12 +jointrthigh=6 +jointlknee=14 +jointlshin=15 +jointlankle=16 +jointloutertoe=18 +jointlinnertoe=19 +jointlthigh=13 + +[JointType] +jointlocal=balltranslate +jointrknee=hingex +jointrshin=hingex +jointrankle=hingex +jointrinnertoe=hingez +jointroutertoe=hingez +jointrthigh=hingex +jointlknee=hingex +jointlshin=hingex +jointlankle=hingex +jointloutertoe=hingez +jointlinnertoe=hingez +jointlthigh=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.673250 0.000000 0.000000 +jointrshin=0.216288 0.000000 0.000000 +jointrankle=-0.904726 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.347085 +jointroutertoe=0.000000 0.000000 0.218578 +jointrthigh=0.254403 0.000000 0.000000 +jointlknee=0.610097 0.000000 0.000000 +jointlshin=0.304455 0.000000 0.000000 +jointlankle=0.179909 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 0.000000 +jointlinnertoe=0.000000 0.000000 0.000000 +jointlthigh=-1.093431 0.000000 0.000000 +[frame2] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.777474 0.000000 0.000000 +jointrshin=-0.106887 0.000000 0.000000 +jointrankle=-0.770371 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.099682 +jointroutertoe=0.000000 0.000000 0.028682 +jointrthigh=0.168960 0.000000 0.000000 +jointlknee=-0.110828 0.000000 0.000000 +jointlshin=-0.037748 0.000000 0.000000 +jointlankle=0.870314 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 0.079529 +jointlinnertoe=0.000000 0.000000 -0.132055 +jointlthigh=-0.392806 0.000000 0.000000 +[frame3] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.881698 0.000000 0.000000 +jointrshin=-0.430061 0.000000 0.000000 +jointrankle=-0.533308 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.001043 +jointroutertoe=0.000000 0.000000 0.000000 +jointrthigh=0.083517 0.000000 0.000000 +jointlknee=-0.831754 0.000000 0.000000 +jointlshin=-0.379951 0.000000 0.000000 +jointlankle=1.560721 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 0.159059 +jointlinnertoe=0.000000 0.000000 -0.264110 +jointlthigh=0.307820 0.000000 0.000000 +[frame4] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.814901 0.000000 0.000000 +jointrshin=-0.695748 0.000000 0.000000 +jointrankle=-0.200811 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.000522 +jointroutertoe=0.000000 0.000000 0.000000 +jointrthigh=0.084505 0.000000 0.000000 +jointlknee=-1.016541 0.000000 0.000000 +jointlshin=-0.573651 0.000000 0.000000 +jointlankle=1.687295 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 0.079529 +jointlinnertoe=0.000000 0.000000 -0.132055 +jointlthigh=0.920413 0.000000 0.000000 +[frame5] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.718397 0.000000 0.000000 +jointrshin=-0.849534 0.000000 0.000000 +jointrankle=0.083067 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 0.000000 +jointroutertoe=0.000000 0.000000 0.000000 +jointrthigh=0.046295 0.000000 0.000000 +jointlknee=-1.201329 0.000000 0.000000 +jointlshin=-0.767351 0.000000 0.000000 +jointlankle=1.813868 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 0.000000 +jointlinnertoe=0.000000 0.000000 0.000000 +jointlthigh=1.533005 0.000000 0.000000 +[frame6] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.614968 0.000000 0.000000 +jointrshin=-0.832337 0.000000 0.000000 +jointrankle=0.261672 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 0.000000 +jointroutertoe=0.000000 0.000000 0.000000 +jointrthigh=-0.051298 0.000000 0.000000 +jointlknee=-0.873244 0.000000 0.000000 +jointlshin=-0.781513 0.000000 0.000000 +jointlankle=1.967736 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.300303 +jointlinnertoe=0.000000 0.000000 0.175536 +jointlthigh=1.385777 0.000000 0.000000 +[frame7] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.546311 0.000000 0.000000 +jointrshin=-0.744442 0.000000 0.000000 +jointrankle=0.390460 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 0.000000 +jointroutertoe=0.000000 0.000000 0.000000 +jointrthigh=-0.195002 0.000000 0.000000 +jointlknee=-0.545161 0.000000 0.000000 +jointlshin=-0.795676 0.000000 0.000000 +jointlankle=2.121622 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.600606 +jointlinnertoe=0.000000 0.000000 0.351075 +jointlthigh=1.238549 0.000000 0.000000 +[frame8] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.497571 0.000000 0.000000 +jointrshin=-0.596545 0.000000 0.000000 +jointrankle=0.454430 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 0.000000 +jointroutertoe=0.000000 0.000000 0.000000 +jointrthigh=-0.357499 0.000000 0.000000 +jointlknee=-0.217075 0.000000 0.000000 +jointlshin=-0.809838 0.000000 0.000000 +jointlankle=2.275491 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.900909 +jointlinnertoe=0.000000 0.000000 0.526611 +jointlthigh=1.091321 0.000000 0.000000 +[frame9] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.501613 0.000000 0.000000 +jointrshin=-0.362341 0.000000 0.000000 +jointrankle=0.428653 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 0.000000 +jointroutertoe=0.000000 0.000000 0.000000 +jointrthigh=-0.568930 0.000000 0.000000 +jointlknee=0.172266 0.000000 0.000000 +jointlshin=-0.708246 0.000000 0.000000 +jointlankle=1.182387 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.669274 +jointlinnertoe=0.000000 0.000000 0.419792 +jointlthigh=0.989312 0.000000 0.000000 +[frame10] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.486360 0.000000 0.000000 +jointrshin=-0.108026 0.000000 0.000000 +jointrankle=0.380026 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 0.000000 +jointroutertoe=0.000000 0.000000 0.000000 +jointrthigh=-0.754029 0.000000 0.000000 +jointlknee=0.426332 0.000000 0.000000 +jointlshin=-0.383210 0.000000 0.000000 +jointlankle=0.060524 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.437639 +jointlinnertoe=0.000000 0.000000 0.312973 +jointlthigh=0.762950 0.000000 0.000000 +[frame11] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.610097 0.000000 0.000000 +jointrshin=0.304455 0.000000 0.000000 +jointrankle=0.179909 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 0.000000 +jointroutertoe=0.000000 0.000000 0.000000 +jointrthigh=-1.093431 0.000000 0.000000 +jointlknee=0.673250 0.000000 0.000000 +jointlshin=0.216288 0.000000 0.000000 +jointlankle=-0.907308 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.206003 +jointlinnertoe=0.000000 0.000000 0.206155 +jointlthigh=0.254403 0.000000 0.000000 + +[RootTranslation] +frame1=0.004311 -5.355000 0.000000 +frame2=0.005635 -5.355000 -18.276600 +frame3=0.006958 -5.355000 -18.276600 +frame4=0.005341 -5.355000 -18.906300 +frame5=0.003723 -5.355000 -18.906179 +frame6=0.002482 -5.355000 -18.906235 +frame7=0.001241 -5.355000 -18.906242 +frame8=0.000000 -5.355000 -18.906248 +frame9=0.000000 -5.355000 -18.585884 +frame10=0.000000 -5.355000 -17.172462 +frame11=0.000000 -5.355000 -17.172434 + +[KeyJointPos] +frame1=0.000000 -0.271849 0.000000 +frame2=0.000000 -0.344185 0.000000 +frame3=0.000000 -0.416521 0.000000 +frame4=0.000000 -0.505175 0.000000 +frame5=0.000000 -0.593834 0.000000 +frame6=0.000000 -0.539808 0.000000 +frame7=0.000000 -0.485786 0.000000 +frame8=0.000000 -0.431760 0.000000 +frame9=0.000000 -0.335814 0.000000 +frame10=0.000000 -0.303831 0.000000 +frame11=0.000000 -0.271849 0.000000 diff --git a/CONTENT/BT/ANIMS/STIBBR.ANI b/CONTENT/BT/ANIMS/STIBBR.ANI new file mode 100644 index 0000000..4a123e7 --- /dev/null +++ b/CONTENT/BT/ANIMS/STIBBR.ANI @@ -0,0 +1,231 @@ +[LAB_ONLY] + +[HEADER] +framecount=11 +framerate=30 +skeletonfile=sti.skl +jointcount=13 + +[Time] +frame1=0 +frame2=0.0333333 +frame3=0.0666667 +frame4=0.1 +frame5=0.133333 +frame6=0.166667 +frame7=0.2 +frame8=0.233333 +frame9=0.266667 +frame10=0.3 +frame11=0.333333 + +[JointIndices] +jointlocal=0 +jointrknee=7 +jointrshin=8 +jointrankle=9 +jointrinnertoe=11 +jointroutertoe=12 +jointrthigh=6 +jointlknee=14 +jointlshin=15 +jointlankle=16 +jointloutertoe=18 +jointlinnertoe=19 +jointlthigh=13 + +[JointType] +jointlocal=balltranslate +jointrknee=hingex +jointrshin=hingex +jointrankle=hingex +jointrinnertoe=hingez +jointroutertoe=hingez +jointrthigh=hingex +jointlknee=hingex +jointlshin=hingex +jointlankle=hingex +jointloutertoe=hingez +jointlinnertoe=hingez +jointlthigh=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.610097 0.000000 0.000000 +jointrshin=0.304455 0.000000 0.000000 +jointrankle=0.179909 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 0.000000 +jointroutertoe=0.000000 0.000000 0.000000 +jointrthigh=-1.093431 0.000000 0.000000 +jointlknee=0.673250 0.000000 0.000000 +jointlshin=0.216288 0.000000 0.000000 +jointlankle=-0.907308 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.206003 +jointlinnertoe=0.000000 0.000000 0.206155 +jointlthigh=0.254403 0.000000 0.000000 +[frame2] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=-0.108822 0.000000 0.000000 +jointrshin=-0.037391 0.000000 0.000000 +jointrankle=0.866156 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 0.148281 +jointroutertoe=0.000000 0.000000 -0.096881 +jointrthigh=-0.393729 0.000000 0.000000 +jointlknee=0.776726 0.000000 0.000000 +jointlshin=-0.113255 0.000000 0.000000 +jointlankle=-0.760506 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.033528 +jointlinnertoe=0.000000 0.000000 0.108159 +jointlthigh=0.171649 0.000000 0.000000 +[frame3] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=-0.827742 0.000000 0.000000 +jointrshin=-0.379237 0.000000 0.000000 +jointrankle=1.552404 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 0.296561 +jointroutertoe=0.000000 0.000000 -0.193763 +jointrthigh=0.305972 0.000000 0.000000 +jointlknee=0.881698 0.000000 0.000000 +jointlshin=-0.430061 0.000000 0.000000 +jointlankle=-0.533308 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.001562 +jointlinnertoe=0.000000 0.000000 0.008005 +jointlthigh=0.083517 0.000000 0.000000 +[frame4] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=-1.014535 0.000000 0.000000 +jointrshin=-0.573295 0.000000 0.000000 +jointrankle=1.683136 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 0.148281 +jointroutertoe=0.000000 0.000000 -0.096881 +jointrthigh=0.919490 0.000000 0.000000 +jointlknee=0.814807 0.000000 0.000000 +jointlshin=-0.695399 0.000000 0.000000 +jointlankle=-0.201210 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.000781 +jointlinnertoe=0.000000 0.000000 0.004003 +jointlthigh=0.084082 0.000000 0.000000 +[frame5] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=-1.201328 0.000000 0.000000 +jointrshin=-0.767351 0.000000 0.000000 +jointrankle=1.813868 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 0.000000 +jointroutertoe=0.000000 0.000000 0.000000 +jointrthigh=1.533010 0.000000 0.000000 +jointlknee=0.715620 0.000000 0.000000 +jointlshin=-0.847600 0.000000 0.000000 +jointlankle=0.081863 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 0.000000 +jointlinnertoe=0.000000 0.000000 0.000000 +jointlthigh=0.047050 0.000000 0.000000 +[frame6] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=-0.846694 0.000000 0.000000 +jointrshin=-0.781511 0.000000 0.000000 +jointrankle=1.967736 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.187743 +jointroutertoe=0.000000 0.000000 0.300301 +jointrthigh=1.365760 0.000000 0.000000 +jointlknee=0.615148 0.000000 0.000000 +jointlshin=-0.831698 0.000000 0.000000 +jointlankle=0.261052 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 0.000000 +jointlinnertoe=0.000000 0.000000 0.000000 +jointlthigh=-0.051915 0.000000 0.000000 +[frame7] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=-0.492061 0.000000 0.000000 +jointrshin=-0.795673 0.000000 0.000000 +jointrankle=2.121622 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.375487 +jointroutertoe=0.000000 0.000000 0.600603 +jointrthigh=1.198512 0.000000 0.000000 +jointlknee=0.546555 0.000000 0.000000 +jointlshin=-0.744352 0.000000 0.000000 +jointlankle=0.390400 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 0.000000 +jointlinnertoe=0.000000 0.000000 0.000000 +jointlthigh=-0.195095 0.000000 0.000000 +[frame8] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=-0.137427 0.000000 0.000000 +jointrshin=-0.809833 0.000000 0.000000 +jointrankle=2.275491 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.563230 +jointroutertoe=0.000000 0.000000 0.900904 +jointrthigh=1.031263 0.000000 0.000000 +jointlknee=0.497571 0.000000 0.000000 +jointlshin=-0.596545 0.000000 0.000000 +jointlankle=0.454430 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 0.000000 +jointlinnertoe=0.000000 0.000000 0.000000 +jointlthigh=-0.357499 0.000000 0.000000 +[frame9] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.177198 0.000000 0.000000 +jointrshin=-0.699402 0.000000 0.000000 +jointrankle=1.187400 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.491181 +jointroutertoe=0.000000 0.000000 0.673461 +jointrthigh=0.988642 0.000000 0.000000 +jointlknee=0.501613 0.000000 0.000000 +jointlshin=-0.362341 0.000000 0.000000 +jointlankle=0.428653 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 0.000000 +jointlinnertoe=0.000000 0.000000 0.000000 +jointlthigh=-0.568930 0.000000 0.000000 +[frame10] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.442989 0.000000 0.000000 +jointrshin=-0.422713 0.000000 0.000000 +jointrankle=0.141337 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.419133 +jointroutertoe=0.000000 0.000000 0.446020 +jointrthigh=0.767695 0.000000 0.000000 +jointlknee=0.483676 0.000000 0.000000 +jointlshin=-0.106450 0.000000 0.000000 +jointlankle=0.379565 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 0.000000 +jointlinnertoe=0.000000 0.000000 0.000000 +jointlthigh=-0.752479 0.000000 0.000000 +[frame11] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.673250 0.000000 0.000000 +jointrshin=0.216288 0.000000 0.000000 +jointrankle=-0.904726 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.347085 +jointroutertoe=0.000000 0.000000 0.218578 +jointrthigh=0.254403 0.000000 0.000000 +jointlknee=0.610097 0.000000 0.000000 +jointlshin=0.304455 0.000000 0.000000 +jointlankle=0.179909 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 0.000000 +jointlinnertoe=0.000000 0.000000 0.000000 +jointlthigh=-1.093431 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.355000 0.000000 +frame2=0.003479 -5.355000 -18.396898 +frame3=0.006958 -5.355000 -18.396906 +frame4=0.006627 -5.355000 -18.905998 +frame5=0.006295 -5.355000 -18.906294 +frame6=0.005967 -5.355000 -18.906300 +frame7=0.005638 -5.355000 -18.906300 +frame8=0.005310 -5.355000 -18.906321 +frame9=0.004974 -5.355000 -19.018185 +frame10=0.004643 -5.355000 -17.252228 +frame11=0.004311 -5.355000 -17.252256 + +[KeyJointPos] +frame1=0.000000 -0.271849 0.000000 +frame2=0.000000 -0.343809 0.000000 +frame3=0.000000 -0.415769 0.000000 +frame4=0.000000 -0.505719 0.000000 +frame5=0.000000 -0.595669 0.000000 +frame6=0.000000 -0.541032 0.000000 +frame7=0.000000 -0.486398 0.000000 +frame8=0.000000 -0.431760 0.000000 +frame9=0.000000 -0.336209 0.000000 +frame10=0.000000 -0.304029 0.000000 +frame11=0.000000 -0.271849 0.000000 diff --git a/CONTENT/BT/ANIMS/STIBMPI.ANI b/CONTENT/BT/ANIMS/STIBMPI.ANI new file mode 100644 index 0000000..197ae66 --- /dev/null +++ b/CONTENT/BT/ANIMS/STIBMPI.ANI @@ -0,0 +1,100 @@ +[LAB_ONLY] + +[HEADER] +framecount=3 +framerate=30 +skeletonfile=sti.skl +jointcount=14 + +[Time] +frame1=0 +frame8=0.233333 +frame15=0.466667 + +[JointIndices] +jointlocal=0 +jointtorso=1 +jointrknee=7 +jointrshin=8 +jointrankle=9 +jointrinnertoe=11 +jointroutertoe=12 +jointrthigh=6 +jointlknee=14 +jointlshin=15 +jointlankle=16 +jointloutertoe=18 +jointlinnertoe=19 +jointlthigh=13 + +[JointType] +jointlocal=balltranslate +jointtorso=hingex +jointrknee=hingex +jointrshin=hingex +jointrankle=hingex +jointrinnertoe=hingez +jointroutertoe=hingez +jointrthigh=hingex +jointlknee=hingex +jointlshin=hingex +jointlankle=hingex +jointloutertoe=hingez +jointlinnertoe=hingez +jointlthigh=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointtorso=0.000000 0.000000 0.000000 +jointrknee=-0.047777 0.000000 0.000000 +jointrshin=0.318240 0.000000 0.000000 +jointrankle=0.371228 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.263351 +jointroutertoe=0.000000 0.000000 -0.222238 +jointrthigh=-1.170873 0.000000 0.000000 +jointlknee=-0.042087 0.000000 0.000000 +jointlshin=0.624121 0.000000 0.000000 +jointlankle=2.142461 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.934083 +jointlinnertoe=0.000000 0.000000 -0.094681 +jointlthigh=1.040953 0.000000 0.000000 +[frame8] +jointlocal=0.000000 0.000000 0.000000 +jointtorso=-0.436332 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrshin=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 0.000000 +jointroutertoe=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlshin=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 0.000000 +jointlinnertoe=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +[frame15] +jointlocal=0.000000 0.000000 0.000000 +jointtorso=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrshin=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 0.000000 +jointroutertoe=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlshin=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 0.000000 +jointlinnertoe=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.355000 0.000000 +frame8=0.000000 -5.355000 0.000000 +frame15=0.000000 -5.355000 0.000000 + +[KeyJointPos] +frame1=-0.000141 0.368315 0.000014 +frame8=0.000000 0.000000 0.000000 +frame15=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/STIBSLI.ANI b/CONTENT/BT/ANIMS/STIBSLI.ANI new file mode 100644 index 0000000..9c46a63 --- /dev/null +++ b/CONTENT/BT/ANIMS/STIBSLI.ANI @@ -0,0 +1,129 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=sti.skl +jointcount=13 + +[Time] +frame1=0 +frame5=0.133333 +frame7=0.2 +frame13=0.4 +frame21=0.666667 + +[JointIndices] +jointlocal=0 +jointrknee=7 +jointrshin=8 +jointrankle=9 +jointrinnertoe=11 +jointroutertoe=12 +jointrthigh=6 +jointlknee=14 +jointlshin=15 +jointlankle=16 +jointloutertoe=18 +jointlinnertoe=19 +jointlthigh=13 + +[JointType] +jointlocal=balltranslate +jointrknee=hingex +jointrshin=hingex +jointrankle=hingex +jointrinnertoe=hingez +jointroutertoe=hingez +jointrthigh=hingex +jointlknee=hingex +jointlshin=hingex +jointlankle=hingex +jointloutertoe=hingez +jointlinnertoe=hingez +jointlthigh=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.557186 0.000000 0.000000 +jointrshin=0.167307 0.000000 0.000000 +jointrankle=-0.818771 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.347085 +jointroutertoe=0.000000 0.000000 0.263154 +jointrthigh=0.363653 0.000000 0.000000 +jointlknee=0.610097 0.000000 0.000000 +jointlshin=0.304455 0.000000 0.000000 +jointlankle=0.179909 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 0.000000 +jointlinnertoe=0.000000 0.000000 0.000000 +jointlthigh=-1.093431 0.000000 0.000000 +[frame5] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.437894 0.000000 0.000000 +jointrshin=0.082007 0.000000 0.000000 +jointrankle=-0.658869 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.378590 +jointroutertoe=0.000000 0.000000 0.171107 +jointrthigh=0.319328 0.000000 0.000000 +jointlknee=0.458135 0.000000 0.000000 +jointlshin=-0.051664 0.000000 0.000000 +jointlankle=0.603901 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.182585 +jointlinnertoe=0.000000 0.000000 0.123196 +jointlthigh=-0.851328 0.000000 0.000000 +[frame7] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.378248 0.000000 0.000000 +jointrshin=0.039358 0.000000 0.000000 +jointrankle=-0.578918 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.356651 +jointroutertoe=0.000000 0.000000 0.111594 +jointrthigh=0.297165 0.000000 0.000000 +jointlknee=0.382154 0.000000 0.000000 +jointlshin=-0.229723 0.000000 0.000000 +jointlankle=0.815897 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.273877 +jointlinnertoe=0.000000 0.000000 0.184795 +jointlthigh=-0.730276 0.000000 0.000000 +[frame13] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.199310 0.000000 0.000000 +jointrshin=-0.088592 0.000000 0.000000 +jointrankle=-0.339065 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 0.000000 +jointroutertoe=0.000000 0.000000 0.000000 +jointrthigh=0.230677 0.000000 0.000000 +jointlknee=0.154210 0.000000 0.000000 +jointlshin=-0.763901 0.000000 0.000000 +jointlankle=1.451885 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.547754 +jointlinnertoe=0.000000 0.000000 0.369589 +jointlthigh=-0.367121 0.000000 0.000000 +[frame21] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrshin=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 0.000000 +jointroutertoe=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlshin=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 0.000000 +jointlinnertoe=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.004311 -5.355000 0.000000 +frame5=0.002874 -5.355000 -5.764195 +frame7=0.002156 -5.355000 -5.764204 +frame13=0.000000 -5.355000 -5.764198 +frame21=0.000000 -5.354700 -5.767125 + +[KeyJointPos] +frame1=0.000000 -0.271849 0.000000 +frame5=0.000000 -0.187896 0.000000 +frame7=0.000000 -0.145919 0.000000 +frame13=0.000000 -0.019989 0.000000 +frame21=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/STIBSRI.ANI b/CONTENT/BT/ANIMS/STIBSRI.ANI new file mode 100644 index 0000000..39cf612 --- /dev/null +++ b/CONTENT/BT/ANIMS/STIBSRI.ANI @@ -0,0 +1,129 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=sti.skl +jointcount=13 + +[Time] +frame1=0 +frame5=0.133333 +frame7=0.2 +frame13=0.4 +frame21=0.666667 + +[JointIndices] +jointlocal=0 +jointrknee=7 +jointrshin=8 +jointrankle=9 +jointrinnertoe=11 +jointroutertoe=12 +jointrthigh=6 +jointlknee=14 +jointlshin=15 +jointlankle=16 +jointloutertoe=18 +jointlinnertoe=19 +jointlthigh=13 + +[JointType] +jointlocal=balltranslate +jointrknee=hingex +jointrshin=hingex +jointrankle=hingex +jointrinnertoe=hingez +jointroutertoe=hingez +jointrthigh=hingex +jointlknee=hingex +jointlshin=hingex +jointlankle=hingex +jointloutertoe=hingez +jointlinnertoe=hingez +jointlthigh=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.610097 0.000000 0.000000 +jointrshin=0.304455 0.000000 0.000000 +jointrankle=0.179909 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 0.000000 +jointroutertoe=0.000000 0.000000 0.000000 +jointrthigh=-1.093431 0.000000 0.000000 +jointlknee=0.558678 0.000000 0.000000 +jointlshin=0.165716 0.000000 0.000000 +jointlankle=-0.818032 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.263154 +jointlinnertoe=0.000000 0.000000 0.347085 +jointlthigh=0.363077 0.000000 0.000000 +[frame5] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.458135 0.000000 0.000000 +jointrshin=-0.051664 0.000000 0.000000 +jointrankle=0.603901 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 0.123196 +jointroutertoe=0.000000 0.000000 -0.182585 +jointrthigh=-0.851328 0.000000 0.000000 +jointlknee=0.439300 0.000000 0.000000 +jointlshin=0.079270 0.000000 0.000000 +jointlankle=-0.658254 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.171107 +jointlinnertoe=0.000000 0.000000 0.378590 +jointlthigh=0.319970 0.000000 0.000000 +[frame7] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.382154 0.000000 0.000000 +jointrshin=-0.229723 0.000000 0.000000 +jointrankle=0.815897 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 0.184795 +jointroutertoe=0.000000 0.000000 -0.273877 +jointrthigh=-0.730276 0.000000 0.000000 +jointlknee=0.379611 0.000000 0.000000 +jointlshin=0.036047 0.000000 0.000000 +jointlankle=-0.578365 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.111594 +jointlinnertoe=0.000000 0.000000 0.356651 +jointlthigh=0.298416 0.000000 0.000000 +[frame13] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.154210 0.000000 0.000000 +jointrshin=-0.763901 0.000000 0.000000 +jointrankle=1.451885 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 0.369589 +jointroutertoe=0.000000 0.000000 -0.547754 +jointrthigh=-0.367121 0.000000 0.000000 +jointlknee=0.200544 0.000000 0.000000 +jointlshin=-0.093622 0.000000 0.000000 +jointlankle=-0.338697 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 0.000000 +jointlinnertoe=0.000000 0.000000 0.000000 +jointlthigh=0.233755 0.000000 0.000000 +[frame21] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrshin=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 0.000000 +jointroutertoe=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlshin=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 0.000000 +jointlinnertoe=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.004311 -5.355000 0.000000 +frame5=0.002874 -5.355000 -5.764195 +frame7=0.002156 -5.355000 -5.764204 +frame13=0.000000 -5.355000 -5.764198 +frame21=0.000000 -5.354700 -5.767125 + +[KeyJointPos] +frame1=0.000000 -0.271849 0.000000 +frame5=0.000000 -0.187896 0.000000 +frame7=0.000000 -0.145919 0.000000 +frame13=0.000000 -0.019989 0.000000 +frame21=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/STIRRLI.ANI b/CONTENT/BT/ANIMS/STIRRLI.ANI new file mode 100644 index 0000000..25fcac8 --- /dev/null +++ b/CONTENT/BT/ANIMS/STIRRLI.ANI @@ -0,0 +1,214 @@ +[LAB_ONLY] + +[HEADER] +framecount=10 +framerate=30 +skeletonfile=sti.skl +jointcount=13 + +[Time] +frame1=0 +frame2=0.0333333 +frame3=0.0666667 +frame4=0.1 +frame5=0.133333 +frame6=0.166667 +frame9=0.266667 +frame10=0.3 +frame13=0.4 +frame15=0.466667 + +[JointIndices] +jointlocal=0 +jointrknee=7 +jointrshin=8 +jointrankle=9 +jointrinnertoe=11 +jointroutertoe=12 +jointrthigh=6 +jointlknee=14 +jointlshin=15 +jointlankle=16 +jointloutertoe=18 +jointlinnertoe=19 +jointlthigh=13 + +[JointType] +jointlocal=balltranslate +jointrknee=hingex +jointrshin=hingex +jointrankle=hingex +jointrinnertoe=hingez +jointroutertoe=hingez +jointrthigh=hingex +jointlknee=hingex +jointlshin=hingex +jointlankle=hingex +jointloutertoe=hingez +jointlinnertoe=hingez +jointlthigh=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=-0.258803 0.000000 0.000000 +jointrshin=-0.400611 0.000000 0.000000 +jointrankle=0.441764 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 0.010628 +jointroutertoe=0.000000 0.000000 -0.001162 +jointrthigh=0.216375 0.000000 0.000000 +jointlknee=-0.962443 0.000000 0.000000 +jointlshin=-1.367918 0.000000 0.000000 +jointlankle=2.361500 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 0.000000 +jointlinnertoe=0.000000 0.000000 -0.059799 +jointlthigh=1.509610 0.000000 0.000000 +[frame2] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=-0.232693 0.000000 0.000000 +jointrshin=-0.763430 0.000000 0.000000 +jointrankle=0.275631 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.004532 +jointroutertoe=0.000000 0.000000 -0.003124 +jointrthigh=0.716978 0.000000 0.000000 +jointlknee=-1.248506 0.000000 0.000000 +jointlshin=-1.002341 0.000000 0.000000 +jointlankle=2.331568 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.357173 +jointlinnertoe=0.000000 0.000000 -0.059799 +jointlthigh=1.079141 0.000000 0.000000 +[frame3] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.088327 0.000000 0.000000 +jointrshin=-0.551374 0.000000 0.000000 +jointrankle=-0.260916 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.011157 +jointroutertoe=0.000000 0.000000 -0.002788 +jointrthigh=0.750448 0.000000 0.000000 +jointlknee=-0.887186 0.000000 0.000000 +jointlshin=-0.601439 0.000000 0.000000 +jointlankle=2.008141 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.274757 +jointlinnertoe=0.000000 0.000000 -0.059799 +jointlthigh=0.261438 0.000000 0.000000 +[frame4] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.496647 0.000000 0.000000 +jointrshin=0.094252 0.000000 0.000000 +jointrankle=-1.017888 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.017782 +jointroutertoe=0.000000 0.000000 -0.002451 +jointrthigh=0.447874 0.000000 0.000000 +jointlknee=-0.525864 0.000000 0.000000 +jointlshin=-0.200535 0.000000 0.000000 +jointlankle=1.684703 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.192341 +jointlinnertoe=0.000000 0.000000 -0.059799 +jointlthigh=-0.556264 0.000000 0.000000 +[frame5] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.625844 0.000000 0.000000 +jointrshin=0.326617 0.000000 0.000000 +jointrankle=-0.758405 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.045742 +jointroutertoe=0.000000 0.000000 0.184856 +jointrthigh=0.502513 0.000000 0.000000 +jointlknee=-0.430247 0.000000 0.000000 +jointlshin=-0.096780 0.000000 0.000000 +jointlankle=1.422008 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.109925 +jointlinnertoe=0.000000 0.000000 -0.090694 +jointlthigh=-0.679186 0.000000 0.000000 +[frame6] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.613223 0.000000 0.000000 +jointrshin=0.463746 0.000000 0.000000 +jointrankle=-0.100840 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.073702 +jointroutertoe=0.000000 0.000000 0.372163 +jointrthigh=0.509915 0.000000 0.000000 +jointlknee=-0.334629 0.000000 0.000000 +jointlshin=0.006975 0.000000 0.000000 +jointlankle=1.159313 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.027510 +jointlinnertoe=0.000000 0.000000 -0.121590 +jointlthigh=-0.802108 0.000000 0.000000 +[frame9] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=-0.042087 0.000000 0.000000 +jointrshin=0.624121 0.000000 0.000000 +jointrankle=2.142461 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.157582 +jointroutertoe=0.000000 0.000000 0.934083 +jointrthigh=1.040953 0.000000 0.000000 +jointlknee=-0.047777 0.000000 0.000000 +jointlshin=0.318240 0.000000 0.000000 +jointlankle=0.371228 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 0.219737 +jointlinnertoe=0.000000 0.000000 -0.214278 +jointlthigh=-1.170873 0.000000 0.000000 +[frame10] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=-0.198004 0.000000 0.000000 +jointrshin=0.265807 0.000000 0.000000 +jointrankle=2.200568 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.163091 +jointroutertoe=0.000000 0.000000 0.851667 +jointrthigh=1.187222 0.000000 0.000000 +jointlknee=0.067844 0.000000 0.000000 +jointlshin=0.323753 0.000000 0.000000 +jointlankle=0.295534 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 0.302153 +jointlinnertoe=0.000000 0.000000 -0.208048 +jointlthigh=-1.164545 0.000000 0.000000 +[frame13] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=-0.665754 0.000000 0.000000 +jointrshin=-0.809136 0.000000 0.000000 +jointrankle=2.374887 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.179617 +jointroutertoe=0.000000 0.000000 0.604420 +jointrthigh=1.626031 0.000000 0.000000 +jointlknee=0.414708 0.000000 0.000000 +jointlshin=0.340294 0.000000 0.000000 +jointlankle=0.068451 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 0.111813 +jointlinnertoe=0.000000 0.000000 -0.189361 +jointlthigh=-1.145561 0.000000 0.000000 +[frame15] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=-0.962443 0.000000 0.000000 +jointrshin=-1.367918 0.000000 0.000000 +jointrankle=2.361500 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.195041 +jointroutertoe=0.000000 0.000000 0.000000 +jointrthigh=1.509610 0.000000 0.000000 +jointlknee=-0.257068 0.000000 0.000000 +jointlshin=-0.393888 0.000000 0.000000 +jointlankle=0.446405 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 0.001556 +jointlinnertoe=0.000000 0.000000 0.000054 +jointlthigh=0.210799 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.355000 0.000000 +frame2=0.000000 -5.355000 41.249996 +frame3=0.000000 -5.355000 40.560032 +frame4=0.000000 -5.355000 40.559925 +frame5=0.000000 -5.355000 41.284897 +frame6=0.000000 -5.355000 41.284794 +frame9=0.000000 -5.355000 41.284786 +frame10=0.000000 -5.355000 42.317966 +frame13=0.000000 -5.355000 42.318005 +frame15=0.000000 -5.355000 42.033009 + +[KeyJointPos] +frame1=0.000315 -0.821216 -0.000031 +frame2=0.000474 -1.234131 -0.000047 +frame3=0.000385 -1.003215 -0.000038 +frame4=0.000297 -0.772299 -0.000029 +frame5=0.000237 -0.544280 -0.000024 +frame6=0.000178 -0.316261 -0.000018 +frame9=0.000000 0.367796 0.000000 +frame10=0.000000 0.247863 0.000000 +frame13=0.000000 -0.111938 0.000000 +frame15=0.000309 -0.804897 -0.000031 diff --git a/CONTENT/BT/ANIMS/STIRRRI.ANI b/CONTENT/BT/ANIMS/STIRRRI.ANI new file mode 100644 index 0000000..9c05139 --- /dev/null +++ b/CONTENT/BT/ANIMS/STIRRRI.ANI @@ -0,0 +1,214 @@ +[LAB_ONLY] + +[HEADER] +framecount=10 +framerate=30 +skeletonfile=sti.skl +jointcount=13 + +[Time] +frame1=0 +frame2=0.0333333 +frame3=0.0666667 +frame4=0.1 +frame5=0.133333 +frame6=0.166667 +frame9=0.266667 +frame10=0.3 +frame13=0.4 +frame15=0.466667 + +[JointIndices] +jointlocal=0 +jointrknee=7 +jointrshin=8 +jointrankle=9 +jointrinnertoe=11 +jointroutertoe=12 +jointrthigh=6 +jointlknee=14 +jointlshin=15 +jointlankle=16 +jointloutertoe=18 +jointlinnertoe=19 +jointlthigh=13 + +[JointType] +jointlocal=balltranslate +jointrknee=hingex +jointrshin=hingex +jointrankle=hingex +jointrinnertoe=hingez +jointroutertoe=hingez +jointrthigh=hingex +jointlknee=hingex +jointlshin=hingex +jointlankle=hingex +jointloutertoe=hingez +jointlinnertoe=hingez +jointlthigh=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=-0.962443 0.000000 0.000000 +jointrshin=-1.367918 0.000000 0.000000 +jointrankle=2.361500 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.195041 +jointroutertoe=0.000000 0.000000 0.000000 +jointrthigh=1.509610 0.000000 0.000000 +jointlknee=-0.257068 0.000000 0.000000 +jointlshin=-0.393888 0.000000 0.000000 +jointlankle=0.440259 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 0.003327 +jointlinnertoe=0.000000 0.000000 0.008351 +jointlthigh=0.210799 0.000000 0.000000 +[frame2] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=-1.248506 0.000000 0.000000 +jointrshin=-1.002341 0.000000 0.000000 +jointrankle=2.331568 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.210466 +jointroutertoe=0.000000 0.000000 0.337156 +jointrthigh=1.079141 0.000000 0.000000 +jointlknee=-0.232693 0.000000 0.000000 +jointlshin=-0.763430 0.000000 0.000000 +jointlankle=0.288103 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.005977 +jointlinnertoe=0.000000 0.000000 0.023423 +jointlthigh=0.716978 0.000000 0.000000 +[frame3] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=-0.887186 0.000000 0.000000 +jointrshin=-0.601439 0.000000 0.000000 +jointrankle=2.008141 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.228094 +jointroutertoe=0.000000 0.000000 0.257242 +jointrthigh=0.261438 0.000000 0.000000 +jointlknee=0.104679 0.000000 0.000000 +jointlshin=-0.547960 0.000000 0.000000 +jointlankle=-0.271378 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 0.002231 +jointlinnertoe=0.000000 0.000000 0.007082 +jointlthigh=0.732892 0.000000 0.000000 +[frame4] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=-0.525864 0.000000 0.000000 +jointrshin=-0.200535 0.000000 0.000000 +jointrankle=1.684703 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.245723 +jointroutertoe=0.000000 0.000000 0.177329 +jointrthigh=-0.556264 0.000000 0.000000 +jointlknee=0.502988 0.000000 0.000000 +jointlshin=0.124077 0.000000 0.000000 +jointlankle=-1.055169 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 0.010439 +jointlinnertoe=0.000000 0.000000 -0.009259 +jointlthigh=0.427777 0.000000 0.000000 +[frame5] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=-0.430247 0.000000 0.000000 +jointrshin=-0.096780 0.000000 0.000000 +jointrankle=1.422008 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.249249 +jointroutertoe=0.000000 0.000000 0.097416 +jointrthigh=-0.679186 0.000000 0.000000 +jointlknee=0.625844 0.000000 0.000000 +jointlshin=0.326617 0.000000 0.000000 +jointlankle=-0.758405 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.178465 +jointlinnertoe=0.000000 0.000000 -0.026344 +jointlthigh=0.502513 0.000000 0.000000 +[frame6] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=-0.334629 0.000000 0.000000 +jointrshin=0.006975 0.000000 0.000000 +jointrankle=1.159313 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.252774 +jointroutertoe=0.000000 0.000000 0.017502 +jointrthigh=-0.802108 0.000000 0.000000 +jointlknee=0.613223 0.000000 0.000000 +jointlshin=0.463746 0.000000 0.000000 +jointlankle=-0.100840 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.367370 +jointlinnertoe=0.000000 0.000000 -0.043428 +jointlthigh=0.509915 0.000000 0.000000 +[frame9] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=-0.047777 0.000000 0.000000 +jointrshin=0.318240 0.000000 0.000000 +jointrankle=0.371228 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.263351 +jointroutertoe=0.000000 0.000000 -0.222238 +jointrthigh=-1.170873 0.000000 0.000000 +jointlknee=-0.042087 0.000000 0.000000 +jointlshin=0.624121 0.000000 0.000000 +jointlankle=2.142461 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.934083 +jointlinnertoe=0.000000 0.000000 -0.094681 +jointlthigh=1.040953 0.000000 0.000000 +[frame10] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.067844 0.000000 0.000000 +jointrshin=0.323753 0.000000 0.000000 +jointrankle=0.295534 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.264453 +jointroutertoe=0.000000 0.000000 -0.302151 +jointrthigh=-1.164545 0.000000 0.000000 +jointlknee=-0.198004 0.000000 0.000000 +jointlshin=0.265807 0.000000 0.000000 +jointlankle=2.200568 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.851667 +jointlinnertoe=0.000000 0.000000 -0.093435 +jointlthigh=1.187222 0.000000 0.000000 +[frame13] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.414708 0.000000 0.000000 +jointrshin=0.340294 0.000000 0.000000 +jointrankle=0.068451 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.267758 +jointroutertoe=0.000000 0.000000 -0.121558 +jointrthigh=-1.145561 0.000000 0.000000 +jointlknee=-0.665754 0.000000 0.000000 +jointlshin=-0.809136 0.000000 0.000000 +jointlankle=2.374887 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.604420 +jointlinnertoe=0.000000 0.000000 -0.089698 +jointlthigh=1.626031 0.000000 0.000000 +[frame15] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=-0.260398 0.000000 0.000000 +jointrshin=-0.399998 0.000000 0.000000 +jointrankle=0.444570 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 0.010628 +jointroutertoe=0.000000 0.000000 -0.001162 +jointrthigh=0.213110 0.000000 0.000000 +jointlknee=-0.962443 0.000000 0.000000 +jointlshin=-1.367918 0.000000 0.000000 +jointlankle=2.361500 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 0.000000 +jointlinnertoe=0.000000 0.000000 -0.059799 +jointlthigh=1.509610 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.355000 0.000000 +frame2=0.000000 -5.355000 41.531979 +frame3=0.000000 -5.355000 40.332008 +frame4=0.000000 -5.355000 40.328983 +frame5=0.000000 -5.355000 41.076042 +frame6=0.000000 -5.355000 41.075939 +frame9=0.000000 -5.355000 41.076008 +frame10=0.000000 -5.355000 42.192768 +frame13=0.000000 -5.355000 42.192730 +frame15=0.000000 -5.355000 42.352528 + +[KeyJointPos] +frame1=0.000309 -0.804897 -0.000031 +frame2=0.000474 -1.234886 -0.000047 +frame3=0.000385 -1.003591 -0.000038 +frame4=0.000297 -0.772299 -0.000029 +frame5=0.000209 -0.544176 -0.000021 +frame6=0.000121 -0.316053 -0.000012 +frame9=-0.000141 0.368315 0.000014 +frame10=-0.000095 0.248248 0.000009 +frame13=0.000043 -0.111954 -0.000004 +frame15=0.000315 -0.821216 -0.000031 diff --git a/CONTENT/BT/ANIMS/STIRWLI.ANI b/CONTENT/BT/ANIMS/STIRWLI.ANI new file mode 100644 index 0000000..7014b64 --- /dev/null +++ b/CONTENT/BT/ANIMS/STIRWLI.ANI @@ -0,0 +1,180 @@ +[LAB_ONLY] + +[HEADER] +framecount=8 +framerate=30 +skeletonfile=sti.skl +jointcount=13 + +[Time] +frame1=0 +frame2=0.0333333 +frame3=0.0666667 +frame4=0.1 +frame5=0.133333 +frame6=0.166667 +frame7=0.2 +frame8=0.233333 + +[JointIndices] +jointlocal=0 +jointrknee=7 +jointrshin=8 +jointrankle=9 +jointrinnertoe=11 +jointroutertoe=12 +jointrthigh=6 +jointlknee=14 +jointlshin=15 +jointlankle=16 +jointloutertoe=18 +jointlinnertoe=19 +jointlthigh=13 + +[JointType] +jointlocal=balltranslate +jointrknee=hingex +jointrshin=hingex +jointrankle=hingex +jointrinnertoe=hingez +jointroutertoe=hingez +jointrthigh=hingex +jointlknee=hingex +jointlshin=hingex +jointlankle=hingex +jointloutertoe=hingez +jointlinnertoe=hingez +jointlthigh=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=-0.337220 0.000000 0.000000 +jointrshin=-0.344132 0.000000 0.000000 +jointrankle=0.423611 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.008276 +jointroutertoe=0.000000 0.000000 -0.001162 +jointrthigh=0.260894 0.000000 0.000000 +jointlknee=-0.962443 0.000000 0.000000 +jointlshin=-1.367918 0.000000 0.000000 +jointlankle=2.361500 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 0.000000 +jointlinnertoe=0.000000 0.000000 -0.059799 +jointlthigh=1.509610 0.000000 0.000000 +[frame2] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=-0.262648 0.000000 0.000000 +jointrshin=-0.469420 0.000000 0.000000 +jointrankle=0.320931 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 0.004614 +jointroutertoe=0.000000 0.000000 -0.000878 +jointrthigh=0.412243 0.000000 0.000000 +jointlknee=-1.035109 0.000000 0.000000 +jointlshin=-1.039502 0.000000 0.000000 +jointlankle=1.906729 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.103787 +jointlinnertoe=0.000000 0.000000 -0.059799 +jointlthigh=1.255326 0.000000 0.000000 +[frame3] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=-0.153830 0.000000 0.000000 +jointrshin=-0.542984 0.000000 0.000000 +jointrankle=0.179495 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 0.017504 +jointroutertoe=0.000000 0.000000 -0.000594 +jointrthigh=0.521339 0.000000 0.000000 +jointlknee=-1.107776 0.000000 0.000000 +jointlshin=-0.711085 0.000000 0.000000 +jointlankle=1.451959 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.207574 +jointlinnertoe=0.000000 0.000000 -0.059799 +jointlthigh=1.001042 0.000000 0.000000 +[frame4] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.015397 0.000000 0.000000 +jointrshin=-0.512542 0.000000 0.000000 +jointrankle=-0.040092 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 0.018344 +jointroutertoe=0.000000 0.000000 0.000694 +jointrthigh=0.536514 0.000000 0.000000 +jointlknee=-0.579204 0.000000 0.000000 +jointlshin=-0.406628 0.000000 0.000000 +jointlankle=1.054727 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.166059 +jointlinnertoe=0.000000 0.000000 -0.047839 +jointlthigh=0.285984 0.000000 0.000000 +[frame5] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.168485 0.000000 0.000000 +jointrshin=-0.400429 0.000000 0.000000 +jointrankle=-0.288843 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 0.002091 +jointroutertoe=0.000000 0.000000 0.001982 +jointrthigh=0.521319 0.000000 0.000000 +jointlknee=-0.050632 0.000000 0.000000 +jointlshin=-0.102170 0.000000 0.000000 +jointlankle=0.657495 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.124544 +jointlinnertoe=0.000000 0.000000 -0.035879 +jointlthigh=-0.429075 0.000000 0.000000 +[frame6] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.374460 0.000000 0.000000 +jointrshin=-0.228383 0.000000 0.000000 +jointrankle=-0.563000 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.003300 +jointroutertoe=0.000000 0.000000 -0.002496 +jointrthigh=0.422919 0.000000 0.000000 +jointlknee=0.169611 0.000000 0.000000 +jointlshin=0.033372 0.000000 0.000000 +jointlankle=0.498300 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.083029 +jointlinnertoe=0.000000 0.000000 -0.023920 +jointlthigh=-0.650527 0.000000 0.000000 +[frame7] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.500813 0.000000 0.000000 +jointrshin=-0.001527 0.000000 0.000000 +jointrankle=-0.779968 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.175192 +jointroutertoe=0.000000 0.000000 0.058798 +jointrthigh=0.359627 0.000000 0.000000 +jointlknee=0.389854 0.000000 0.000000 +jointlshin=0.168913 0.000000 0.000000 +jointlankle=0.339104 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.041515 +jointlinnertoe=0.000000 0.000000 -0.011960 +jointlthigh=-0.871979 0.000000 0.000000 +[frame8] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.679797 0.000000 0.000000 +jointrshin=0.236112 0.000000 0.000000 +jointrankle=-0.920628 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.347085 +jointroutertoe=0.000000 0.000000 0.218578 +jointrthigh=0.246936 0.000000 0.000000 +jointlknee=0.610097 0.000000 0.000000 +jointlshin=0.304455 0.000000 0.000000 +jointlankle=0.179909 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 0.000000 +jointlinnertoe=0.000000 0.000000 0.000000 +jointlthigh=-1.093431 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.355000 0.000000 +frame2=0.000000 -5.356865 18.613356 +frame3=0.000000 -5.358730 18.613585 +frame4=0.000862 -5.358045 18.342134 +frame5=0.001724 -5.357360 18.341900 +frame6=0.002587 -5.356673 17.966997 +frame7=0.003449 -5.355987 17.966997 +frame8=0.004311 -5.355300 17.966997 + +[KeyJointPos] +frame1=0.000000 -0.819545 0.000000 +frame2=0.000000 -0.809551 0.000000 +frame3=0.000000 -0.799556 0.000000 +frame4=0.000000 -0.694015 0.000000 +frame5=0.000000 -0.588473 0.000000 +frame6=0.000000 -0.482932 0.000000 +frame7=0.000000 -0.377391 0.000000 +frame8=0.000000 -0.271849 0.000000 diff --git a/CONTENT/BT/ANIMS/STIRWRI.ANI b/CONTENT/BT/ANIMS/STIRWRI.ANI new file mode 100644 index 0000000..98a7ef8 --- /dev/null +++ b/CONTENT/BT/ANIMS/STIRWRI.ANI @@ -0,0 +1,180 @@ +[LAB_ONLY] + +[HEADER] +framecount=8 +framerate=30 +skeletonfile=sti.skl +jointcount=13 + +[Time] +frame1=0 +frame2=0.0333333 +frame3=0.0666667 +frame4=0.1 +frame5=0.133333 +frame6=0.166667 +frame7=0.2 +frame8=0.233333 + +[JointIndices] +jointlocal=0 +jointrknee=7 +jointrshin=8 +jointrankle=9 +jointrinnertoe=11 +jointroutertoe=12 +jointrthigh=6 +jointlknee=14 +jointlshin=15 +jointlankle=16 +jointloutertoe=18 +jointlinnertoe=19 +jointlthigh=13 + +[JointType] +jointlocal=balltranslate +jointrknee=hingex +jointrshin=hingex +jointrankle=hingex +jointrinnertoe=hingez +jointroutertoe=hingez +jointrthigh=hingex +jointlknee=hingex +jointlshin=hingex +jointlankle=hingex +jointloutertoe=hingez +jointlinnertoe=hingez +jointlthigh=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=-0.962443 0.000000 0.000000 +jointrshin=-1.367918 0.000000 0.000000 +jointrankle=2.361500 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.059799 +jointroutertoe=0.000000 0.000000 -0.207574 +jointrthigh=1.509610 0.000000 0.000000 +jointlknee=-0.335440 0.000000 0.000000 +jointlshin=-0.340636 0.000000 0.000000 +jointlankle=0.419715 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.001162 +jointlinnertoe=0.000000 0.000000 -0.000275 +jointlthigh=0.259180 0.000000 0.000000 +[frame2] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=-1.035109 0.000000 0.000000 +jointrshin=-1.039502 0.000000 0.000000 +jointrankle=1.906729 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.059799 +jointroutertoe=0.000000 0.000000 -0.207574 +jointrthigh=1.255326 0.000000 0.000000 +jointlknee=-0.264489 0.000000 0.000000 +jointlshin=-0.472635 0.000000 0.000000 +jointlankle=0.321596 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.000878 +jointlinnertoe=0.000000 0.000000 -0.005306 +jointlthigh=0.415867 0.000000 0.000000 +[frame3] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=-1.107776 0.000000 0.000000 +jointrshin=-0.711085 0.000000 0.000000 +jointrankle=1.451959 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.059799 +jointroutertoe=0.000000 0.000000 -0.207574 +jointrthigh=1.001042 0.000000 0.000000 +jointlknee=-0.154180 0.000000 0.000000 +jointlshin=-0.547517 0.000000 0.000000 +jointlankle=0.181134 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.000594 +jointlinnertoe=0.000000 0.000000 -0.010336 +jointlthigh=0.524524 0.000000 0.000000 +[frame4] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=-0.579204 0.000000 0.000000 +jointrshin=-0.406628 0.000000 0.000000 +jointrankle=1.054727 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.047839 +jointroutertoe=0.000000 0.000000 -0.166059 +jointrthigh=0.285984 0.000000 0.000000 +jointlknee=0.013717 0.000000 0.000000 +jointlshin=-0.514712 0.000000 0.000000 +jointlankle=-0.039460 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 0.001796 +jointlinnertoe=0.000000 0.000000 -0.006470 +jointlthigh=0.538626 0.000000 0.000000 +[frame5] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=-0.050632 0.000000 0.000000 +jointrshin=-0.102170 0.000000 0.000000 +jointrankle=0.657495 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.035879 +jointroutertoe=0.000000 0.000000 -0.124544 +jointrthigh=-0.429075 0.000000 0.000000 +jointlknee=0.185186 0.000000 0.000000 +jointlshin=-0.408552 0.000000 0.000000 +jointlankle=-0.288672 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 0.001982 +jointlinnertoe=0.000000 0.000000 -0.000806 +jointlthigh=0.511430 0.000000 0.000000 +[frame6] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.169611 0.000000 0.000000 +jointrshin=0.033372 0.000000 0.000000 +jointrankle=0.498300 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.023920 +jointroutertoe=0.000000 0.000000 -0.083029 +jointrthigh=-0.650527 0.000000 0.000000 +jointlknee=0.377996 0.000000 0.000000 +jointlshin=-0.225645 0.000000 0.000000 +jointlankle=-0.574964 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.002496 +jointlinnertoe=0.000000 0.000000 -0.003300 +jointlthigh=0.420467 0.000000 0.000000 +[frame7] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.389854 0.000000 0.000000 +jointrshin=0.168913 0.000000 0.000000 +jointrankle=0.339104 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.011960 +jointroutertoe=0.000000 0.000000 -0.041515 +jointrthigh=-0.871979 0.000000 0.000000 +jointlknee=0.500813 0.000000 0.000000 +jointlshin=-0.001527 0.000000 0.000000 +jointlankle=-0.779968 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 0.058798 +jointlinnertoe=0.000000 0.000000 -0.175192 +jointlthigh=0.359627 0.000000 0.000000 +[frame8] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.610097 0.000000 0.000000 +jointrshin=0.304455 0.000000 0.000000 +jointrankle=0.179909 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 0.000000 +jointroutertoe=0.000000 0.000000 0.000000 +jointrthigh=-1.093431 0.000000 0.000000 +jointlknee=0.679797 0.000000 0.000000 +jointlshin=0.236112 0.000000 0.000000 +jointlankle=-0.920707 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 0.218578 +jointlinnertoe=0.000000 0.000000 -0.347085 +jointlthigh=0.246936 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.355000 0.000000 +frame2=0.000000 -5.356865 18.613356 +frame3=0.000000 -5.358730 18.613585 +frame4=0.000862 -5.358045 18.342134 +frame5=0.001724 -5.357360 18.341900 +frame6=0.002587 -5.356673 17.966997 +frame7=0.003449 -5.355987 17.966997 +frame8=0.004311 -5.355300 17.966997 + +[KeyJointPos] +frame1=0.000000 -0.819545 0.000000 +frame2=0.000000 -0.809551 0.000000 +frame3=0.000000 -0.799556 0.000000 +frame4=0.000000 -0.694015 0.000000 +frame5=0.000000 -0.588473 0.000000 +frame6=0.000000 -0.482932 0.000000 +frame7=0.000000 -0.377391 0.000000 +frame8=0.000000 -0.271849 0.000000 diff --git a/CONTENT/BT/ANIMS/STISBLI.ANI b/CONTENT/BT/ANIMS/STISBLI.ANI new file mode 100644 index 0000000..49fc123 --- /dev/null +++ b/CONTENT/BT/ANIMS/STISBLI.ANI @@ -0,0 +1,205 @@ +[LAB_ONLY] + +[HEADER] +framecount=11 +framerate=30 +skeletonfile=sti.skl +jointcount=11 + +[Time] +frame1=0 +frame4=0.1 +frame7=0.2 +frame8=0.233333 +frame9=0.266667 +frame10=0.3 +frame11=0.333333 +frame12=0.366667 +frame13=0.4 +frame14=0.433333 +frame44=1.43333 + +[JointIndices] +jointlocal=0 +jointrknee=7 +jointrshin=8 +jointrankle=9 +jointrthigh=6 +jointlknee=14 +jointlshin=15 +jointlankle=16 +jointloutertoe=18 +jointlinnertoe=19 +jointlthigh=13 + +[JointType] +jointlocal=balltranslate +jointrknee=hingex +jointrshin=hingex +jointrankle=hingex +jointrthigh=hingex +jointlknee=hingex +jointlshin=hingex +jointlankle=hingex +jointloutertoe=hingez +jointlinnertoe=hingez +jointlthigh=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=-0.000001 0.000000 0.000000 +jointrshin=0.000000 0.000000 0.000000 +jointrankle=0.000001 0.000000 0.000000 +jointrthigh=-0.000001 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlshin=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 0.000000 +jointlinnertoe=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +[frame4] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=-0.034788 0.000000 0.000000 +jointrshin=0.068376 0.000000 0.000000 +jointrankle=0.089957 0.000000 0.000000 +jointrthigh=-0.122863 0.000000 0.000000 +jointlknee=-0.345181 0.000000 0.000000 +jointlshin=-0.611789 0.000000 0.000000 +jointlankle=0.660876 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.050441 +jointlinnertoe=0.000000 0.000000 0.080096 +jointlthigh=0.785777 0.000000 0.000000 +[frame7] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=-0.027163 0.000000 0.000000 +jointrshin=0.179642 0.000000 0.000000 +jointrankle=0.135524 0.000000 0.000000 +jointrthigh=-0.290435 0.000000 0.000000 +jointlknee=-0.337999 0.000000 0.000000 +jointlshin=-0.629148 0.000000 0.000000 +jointlankle=0.697378 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.100882 +jointlinnertoe=0.000000 0.000000 0.160193 +jointlthigh=1.195465 0.000000 0.000000 +[frame8] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=-0.028372 0.000000 0.000000 +jointrshin=0.215588 0.000000 0.000000 +jointrankle=0.143159 0.000000 0.000000 +jointrthigh=-0.342626 0.000000 0.000000 +jointlknee=-0.203287 0.000000 0.000000 +jointlshin=-0.519951 0.000000 0.000000 +jointlankle=0.481759 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.117696 +jointlinnertoe=0.000000 0.000000 0.186892 +jointlthigh=1.111997 0.000000 0.000000 +[frame9] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.004788 0.000000 0.000000 +jointrshin=0.269749 0.000000 0.000000 +jointrankle=0.148095 0.000000 0.000000 +jointrthigh=-0.425206 0.000000 0.000000 +jointlknee=-0.068575 0.000000 0.000000 +jointlshin=-0.410755 0.000000 0.000000 +jointlankle=0.266140 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.134510 +jointlinnertoe=0.000000 0.000000 0.213591 +jointlthigh=1.028529 0.000000 0.000000 +[frame10] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.034211 0.000000 0.000000 +jointrshin=0.321825 0.000000 0.000000 +jointrankle=0.136413 0.000000 0.000000 +jointrthigh=-0.504789 0.000000 0.000000 +jointlknee=0.066137 0.000000 0.000000 +jointlshin=-0.301558 0.000000 0.000000 +jointlankle=0.050522 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.151323 +jointlinnertoe=0.000000 0.000000 0.240290 +jointlthigh=0.945061 0.000000 0.000000 +[frame11] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.074827 0.000000 0.000000 +jointrshin=0.383868 0.000000 0.000000 +jointrankle=-0.187942 0.000000 0.000000 +jointrthigh=-0.599098 0.000000 0.000000 +jointlknee=0.237307 0.000000 0.000000 +jointlshin=-0.181137 0.000000 0.000000 +jointlankle=-0.174243 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.168137 +jointlinnertoe=0.000000 0.000000 0.266988 +jointlthigh=0.781736 0.000000 0.000000 +[frame12] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.142780 0.000000 0.000000 +jointrshin=0.450339 0.000000 0.000000 +jointrankle=0.122620 0.000000 0.000000 +jointrthigh=-0.710515 0.000000 0.000000 +jointlknee=0.408477 0.000000 0.000000 +jointlshin=-0.060717 0.000000 0.000000 +jointlankle=-0.399007 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.184951 +jointlinnertoe=0.000000 0.000000 0.293687 +jointlthigh=0.618410 0.000000 0.000000 +[frame13] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.228190 0.000000 0.000000 +jointrshin=0.517925 0.000000 0.000000 +jointrankle=-0.119057 0.000000 0.000000 +jointrthigh=-0.837034 0.000000 0.000000 +jointlknee=0.544707 0.000000 0.000000 +jointlshin=0.088595 0.000000 0.000000 +jointlankle=-0.667103 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.201764 +jointlinnertoe=0.000000 0.000000 0.320386 +jointlthigh=0.429656 0.000000 0.000000 +[frame14] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.327748 0.000000 0.000000 +jointrshin=0.582038 0.000000 0.000000 +jointrankle=0.061213 0.000000 0.000000 +jointrthigh=-0.970359 0.000000 0.000000 +jointlknee=0.680937 0.000000 0.000000 +jointlshin=0.237908 0.000000 0.000000 +jointlankle=-0.935200 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.218578 +jointlinnertoe=0.000000 0.000000 0.347085 +jointlthigh=0.240903 0.000000 0.000000 +[frame44] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.302673 0.000000 0.000000 +jointrshin=0.578448 0.000000 0.000000 +jointrankle=0.087754 0.000000 0.000000 +jointrthigh=-0.954432 0.000000 0.000000 +jointlknee=0.680443 0.000000 0.000000 +jointlshin=0.231493 0.000000 0.000000 +jointlankle=-0.928705 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.218578 +jointlinnertoe=0.000000 0.000000 0.347085 +jointlthigh=0.243695 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.354700 0.000000 +frame4=0.000995 -5.354769 -5.316677 +frame7=0.001990 -5.354838 -5.316696 +frame8=0.002321 -5.354861 -5.316697 +frame9=0.002653 -5.354884 -5.316694 +frame10=0.002985 -5.354908 -5.316697 +frame11=0.003316 -5.354930 -5.316697 +frame12=0.003648 -5.354954 -5.316697 +frame13=0.003979 -5.354977 -5.316697 +frame14=0.004311 -5.355000 -5.316697 +frame44=0.004311 -5.355000 -5.524580 + +[KeyJointPos] +frame1=0.000000 0.000000 0.000000 +frame4=0.000000 -0.062734 0.000000 +frame7=0.000000 -0.125469 0.000000 +frame8=0.000000 -0.146380 0.000000 +frame9=0.000000 -0.167292 0.000000 +frame10=0.000000 -0.188203 0.000000 +frame11=0.000000 -0.209115 0.000000 +frame12=0.000000 -0.230026 0.000000 +frame13=0.000000 -0.250938 0.000000 +frame14=0.000000 -0.271849 0.000000 +frame44=0.000000 -0.271849 0.000000 diff --git a/CONTENT/BT/ANIMS/STISBRI.ANI b/CONTENT/BT/ANIMS/STISBRI.ANI new file mode 100644 index 0000000..a9c3cef --- /dev/null +++ b/CONTENT/BT/ANIMS/STISBRI.ANI @@ -0,0 +1,205 @@ +[LAB_ONLY] + +[HEADER] +framecount=11 +framerate=30 +skeletonfile=sti.skl +jointcount=11 + +[Time] +frame1=0 +frame4=0.1 +frame7=0.2 +frame8=0.233333 +frame9=0.266667 +frame10=0.3 +frame11=0.333333 +frame12=0.366667 +frame13=0.4 +frame14=0.433333 +frame44=1.43333 + +[JointIndices] +jointlocal=0 +jointrknee=7 +jointrshin=8 +jointrankle=9 +jointrinnertoe=11 +jointroutertoe=12 +jointrthigh=6 +jointlknee=14 +jointlshin=15 +jointlankle=16 +jointlthigh=13 + +[JointType] +jointlocal=balltranslate +jointrknee=hingex +jointrshin=hingex +jointrankle=hingex +jointrinnertoe=hingez +jointroutertoe=hingez +jointrthigh=hingex +jointlknee=hingex +jointlshin=hingex +jointlankle=hingex +jointlthigh=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrshin=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 0.000000 +jointroutertoe=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlshin=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +[frame4] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=-0.345181 0.000000 0.000000 +jointrshin=-0.611789 0.000000 0.000000 +jointrankle=0.660876 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.080097 +jointroutertoe=0.000000 0.000000 0.050441 +jointrthigh=0.785777 0.000000 0.000000 +jointlknee=0.567801 0.000000 0.000000 +jointlshin=-0.345724 0.000000 0.000000 +jointlankle=0.220055 0.000000 0.000000 +jointlthigh=-0.462134 0.000000 0.000000 +[frame7] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=-0.337999 0.000000 0.000000 +jointrshin=-0.629148 0.000000 0.000000 +jointrankle=0.697378 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.160193 +jointroutertoe=0.000000 0.000000 0.100882 +jointrthigh=1.195465 0.000000 0.000000 +jointlknee=0.534139 0.000000 0.000000 +jointlshin=-0.245058 0.000000 0.000000 +jointlankle=0.287972 0.000000 0.000000 +jointlthigh=-0.590693 0.000000 0.000000 +[frame8] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=-0.203287 0.000000 0.000000 +jointrshin=-0.519951 0.000000 0.000000 +jointrankle=0.463238 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.186892 +jointroutertoe=0.000000 0.000000 0.117696 +jointrthigh=1.111997 0.000000 0.000000 +jointlknee=0.523941 0.000000 0.000000 +jointlshin=-0.211834 0.000000 0.000000 +jointlankle=0.266751 0.000000 0.000000 +jointlthigh=-0.632438 0.000000 0.000000 +[frame9] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=-0.068575 0.000000 0.000000 +jointrshin=-0.410755 0.000000 0.000000 +jointrankle=0.229098 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.213591 +jointroutertoe=0.000000 0.000000 0.134510 +jointrthigh=1.028529 0.000000 0.000000 +jointlknee=0.545644 0.000000 0.000000 +jointlshin=-0.137868 0.000000 0.000000 +jointlankle=0.295076 0.000000 0.000000 +jointlthigh=-0.711246 0.000000 0.000000 +[frame10] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.066137 0.000000 0.000000 +jointrshin=-0.301558 0.000000 0.000000 +jointrankle=-0.005042 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.240290 +jointroutertoe=0.000000 0.000000 0.151323 +jointrthigh=0.945061 0.000000 0.000000 +jointlknee=0.547864 0.000000 0.000000 +jointlshin=-0.066077 0.000000 0.000000 +jointlankle=0.289061 0.000000 0.000000 +jointlthigh=-0.773155 0.000000 0.000000 +[frame11] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.237307 0.000000 0.000000 +jointrshin=-0.181137 0.000000 0.000000 +jointrankle=-0.192475 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.266988 +jointroutertoe=0.000000 0.000000 0.168137 +jointrthigh=0.781736 0.000000 0.000000 +jointlknee=0.544431 0.000000 0.000000 +jointlshin=-0.007967 0.000000 0.000000 +jointlankle=0.295549 0.000000 0.000000 +jointlthigh=-0.829232 0.000000 0.000000 +[frame12] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.408477 0.000000 0.000000 +jointrshin=-0.060717 0.000000 0.000000 +jointrankle=-0.379908 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.293687 +jointroutertoe=0.000000 0.000000 0.184951 +jointrthigh=0.618410 0.000000 0.000000 +jointlknee=0.577901 0.000000 0.000000 +jointlshin=0.120520 0.000000 0.000000 +jointlankle=0.203188 0.000000 0.000000 +jointlthigh=-0.930536 0.000000 0.000000 +[frame13] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.544707 0.000000 0.000000 +jointrshin=0.088595 0.000000 0.000000 +jointrankle=-0.657554 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.320386 +jointroutertoe=0.000000 0.000000 0.201764 +jointrthigh=0.429656 0.000000 0.000000 +jointlknee=0.590811 0.000000 0.000000 +jointlshin=0.207071 0.000000 0.000000 +jointlankle=0.198299 0.000000 0.000000 +jointlthigh=-1.005606 0.000000 0.000000 +[frame14] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.680937 0.000000 0.000000 +jointrshin=0.237908 0.000000 0.000000 +jointrankle=-0.935200 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.347085 +jointroutertoe=0.000000 0.000000 0.218578 +jointrthigh=0.240903 0.000000 0.000000 +jointlknee=0.610099 0.000000 0.000000 +jointlshin=0.304450 0.000000 0.000000 +jointlankle=0.179903 0.000000 0.000000 +jointlthigh=-1.093424 0.000000 0.000000 +[frame44] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.680937 0.000000 0.000000 +jointrshin=0.237908 0.000000 0.000000 +jointrankle=-0.935441 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.347085 +jointroutertoe=0.000000 0.000000 0.218578 +jointrthigh=0.240903 0.000000 0.000000 +jointlknee=0.293859 0.000000 0.000000 +jointlshin=0.575274 0.000000 0.000000 +jointlankle=0.092802 0.000000 0.000000 +jointlthigh=-0.946253 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.354700 0.000000 +frame4=0.000995 -5.354769 -5.316677 +frame7=0.001990 -5.354838 -5.316696 +frame8=0.002321 -5.354861 -5.316697 +frame9=0.002653 -5.354884 -5.316694 +frame10=0.002985 -5.354908 -5.316697 +frame11=0.003316 -5.354930 -5.316697 +frame12=0.003648 -5.354954 -5.316697 +frame13=0.003979 -5.354977 -5.316697 +frame14=0.004311 -5.355000 -5.316697 +frame44=0.004311 -5.355000 -5.528100 + +[KeyJointPos] +frame1=0.000000 0.000000 0.000000 +frame4=0.000000 -0.062734 0.000000 +frame7=0.000000 -0.125469 0.000000 +frame8=0.000000 -0.146380 0.000000 +frame9=0.000000 -0.167292 0.000000 +frame10=0.000000 -0.188203 0.000000 +frame11=0.000000 -0.209115 0.000000 +frame12=0.000000 -0.230026 0.000000 +frame13=0.000000 -0.250938 0.000000 +frame14=0.000000 -0.271849 0.000000 +frame44=0.000000 -0.271849 0.000000 diff --git a/CONTENT/BT/ANIMS/STISQDI.ANI b/CONTENT/BT/ANIMS/STISQDI.ANI new file mode 100644 index 0000000..46a3067 --- /dev/null +++ b/CONTENT/BT/ANIMS/STISQDI.ANI @@ -0,0 +1,274 @@ +[LAB_ONLY] + +[HEADER] +framecount=22 +framerate=30 +skeletonfile=sti.skl +jointcount=7 + +[Time] +frame1=0 +frame2=0.0333333 +frame3=0.0666667 +frame4=0.1 +frame5=0.133333 +frame6=0.166667 +frame7=0.2 +frame8=0.233333 +frame9=0.266667 +frame10=0.3 +frame11=0.333333 +frame12=0.366667 +frame13=0.4 +frame14=0.433333 +frame15=0.466667 +frame16=0.5 +frame17=0.533333 +frame18=0.566667 +frame19=0.6 +frame20=0.633333 +frame21=0.666667 +frame22=0.7 + +[JointIndices] +jointlocal=0 +jointlknee=14 +jointlthigh=13 +jointrknee=7 +jointrankle=9 +jointrthigh=6 +jointlankle=16 + +[JointType] +jointlocal=balltranslate +jointlknee=hingex +jointlthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointrthigh=hingex +jointlankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +[frame2] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.006864 0.000000 0.000000 +jointlthigh=-0.004428 0.000000 0.000000 +jointrknee=0.006688 0.000000 0.000000 +jointrankle=-0.001145 0.000000 0.000000 +jointrthigh=-0.004382 0.000000 0.000000 +jointlankle=-0.001094 0.000000 0.000000 +[frame3] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.043583 0.000000 0.000000 +jointlthigh=-0.023921 0.000000 0.000000 +jointrknee=0.043165 0.000000 0.000000 +jointrankle=-0.019527 0.000000 0.000000 +jointrthigh=-0.023783 0.000000 0.000000 +jointlankle=-0.019998 0.000000 0.000000 +[frame4] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.089247 0.000000 0.000000 +jointlthigh=-0.049306 0.000000 0.000000 +jointrknee=0.087849 0.000000 0.000000 +jointrankle=-0.035853 0.000000 0.000000 +jointrthigh=-0.049713 0.000000 0.000000 +jointlankle=-0.039815 0.000000 0.000000 +[frame5] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.145878 0.000000 0.000000 +jointlthigh=-0.081124 0.000000 0.000000 +jointrknee=0.145322 0.000000 0.000000 +jointrankle=-0.064794 0.000000 0.000000 +jointrthigh=-0.080279 0.000000 0.000000 +jointlankle=-0.065558 0.000000 0.000000 +[frame6] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.209132 0.000000 0.000000 +jointlthigh=-0.114470 0.000000 0.000000 +jointrknee=0.211548 0.000000 0.000000 +jointrankle=-0.098721 0.000000 0.000000 +jointrthigh=-0.114866 0.000000 0.000000 +jointlankle=-0.095299 0.000000 0.000000 +[frame7] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.292421 0.000000 0.000000 +jointlthigh=-0.160525 0.000000 0.000000 +jointrknee=0.292966 0.000000 0.000000 +jointrankle=-0.127352 0.000000 0.000000 +jointrthigh=-0.163328 0.000000 0.000000 +jointlankle=-0.133601 0.000000 0.000000 +[frame8] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.378663 0.000000 0.000000 +jointlthigh=-0.208855 0.000000 0.000000 +jointrknee=0.379305 0.000000 0.000000 +jointrankle=-0.172162 0.000000 0.000000 +jointrthigh=-0.208787 0.000000 0.000000 +jointlankle=-0.171433 0.000000 0.000000 +[frame9] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.465614 0.000000 0.000000 +jointlthigh=-0.257750 0.000000 0.000000 +jointrknee=0.464975 0.000000 0.000000 +jointrankle=-0.203619 0.000000 0.000000 +jointrthigh=-0.259248 0.000000 0.000000 +jointlankle=-0.210365 0.000000 0.000000 +[frame10] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.553482 0.000000 0.000000 +jointlthigh=-0.308955 0.000000 0.000000 +jointrknee=0.553393 0.000000 0.000000 +jointrankle=-0.245032 0.000000 0.000000 +jointrthigh=-0.309080 0.000000 0.000000 +jointlankle=-0.246536 0.000000 0.000000 +[frame11] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.637565 0.000000 0.000000 +jointlthigh=-0.358791 0.000000 0.000000 +jointrknee=0.637129 0.000000 0.000000 +jointrankle=-0.274792 0.000000 0.000000 +jointrthigh=-0.359613 0.000000 0.000000 +jointlankle=-0.279809 0.000000 0.000000 +[frame12] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.719154 0.000000 0.000000 +jointlthigh=-0.406805 0.000000 0.000000 +jointrknee=0.717217 0.000000 0.000000 +jointrankle=-0.313744 0.000000 0.000000 +jointrthigh=-0.404700 0.000000 0.000000 +jointlankle=-0.313894 0.000000 0.000000 +[frame13] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.794990 0.000000 0.000000 +jointlthigh=-0.453178 0.000000 0.000000 +jointrknee=0.794531 0.000000 0.000000 +jointrankle=-0.338943 0.000000 0.000000 +jointrthigh=-0.453957 0.000000 0.000000 +jointlankle=-0.343041 0.000000 0.000000 +[frame14] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.861519 0.000000 0.000000 +jointlthigh=-0.493989 0.000000 0.000000 +jointrknee=0.861460 0.000000 0.000000 +jointrankle=-0.366523 0.000000 0.000000 +jointrthigh=-0.493947 0.000000 0.000000 +jointlankle=-0.366041 0.000000 0.000000 +[frame15] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.924658 0.000000 0.000000 +jointlthigh=-0.533538 0.000000 0.000000 +jointrknee=0.923735 0.000000 0.000000 +jointrankle=-0.392408 0.000000 0.000000 +jointrthigh=-0.532846 0.000000 0.000000 +jointlankle=-0.393387 0.000000 0.000000 +[frame16] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=0.979627 0.000000 0.000000 +jointlthigh=-0.568780 0.000000 0.000000 +jointrknee=0.976499 0.000000 0.000000 +jointrankle=-0.408634 0.000000 0.000000 +jointrthigh=-0.566841 0.000000 0.000000 +jointlankle=-0.411835 0.000000 0.000000 +[frame17] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=1.022168 0.000000 0.000000 +jointlthigh=-0.591846 0.000000 0.000000 +jointrknee=1.019091 0.000000 0.000000 +jointrankle=-0.427323 0.000000 0.000000 +jointrthigh=-0.590684 0.000000 0.000000 +jointlankle=-0.431363 0.000000 0.000000 +[frame18] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=1.059198 0.000000 0.000000 +jointlthigh=-0.615515 0.000000 0.000000 +jointrknee=1.056401 0.000000 0.000000 +jointrankle=-0.442525 0.000000 0.000000 +jointrthigh=-0.614005 0.000000 0.000000 +jointlankle=-0.445513 0.000000 0.000000 +[frame19] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=1.093775 0.000000 0.000000 +jointlthigh=-0.641580 0.000000 0.000000 +jointrknee=1.090787 0.000000 0.000000 +jointrankle=-0.448968 0.000000 0.000000 +jointrthigh=-0.641272 0.000000 0.000000 +jointlankle=-0.455423 0.000000 0.000000 +[frame20] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=1.116531 0.000000 0.000000 +jointlthigh=-0.658387 0.000000 0.000000 +jointrknee=1.113656 0.000000 0.000000 +jointrankle=-0.454861 0.000000 0.000000 +jointrthigh=-0.658134 0.000000 0.000000 +jointlankle=-0.458088 0.000000 0.000000 +[frame21] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=1.133275 0.000000 0.000000 +jointlthigh=-0.671702 0.000000 0.000000 +jointrknee=1.129839 0.000000 0.000000 +jointrankle=-0.457023 0.000000 0.000000 +jointrthigh=-0.669964 0.000000 0.000000 +jointlankle=-0.462437 0.000000 0.000000 +[frame22] +jointlocal=0.000000 0.000000 0.000000 +jointlknee=1.137977 0.000000 0.000000 +jointlthigh=-0.670117 0.000000 0.000000 +jointrknee=1.135338 0.000000 0.000000 +jointrankle=-0.466483 0.000000 0.000000 +jointrthigh=-0.668796 0.000000 0.000000 +jointlankle=-0.470780 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame2=0.000000 -5.359828 0.000000 +frame3=0.000000 -5.359837 0.000000 +frame4=0.000000 -5.359846 0.000000 +frame5=0.000000 -5.359854 0.000000 +frame6=0.000000 -5.359863 0.000000 +frame7=0.000000 -5.359871 0.000000 +frame8=0.000000 -5.359880 0.000000 +frame9=0.000000 -5.359889 0.000000 +frame10=0.000000 -5.359897 0.000000 +frame11=0.000000 -5.359906 0.000000 +frame12=0.000000 -5.359914 0.000000 +frame13=0.000000 -5.359922 0.000000 +frame14=0.000000 -5.359931 0.000000 +frame15=0.000000 -5.359940 0.000000 +frame16=0.000000 -5.359949 0.000000 +frame17=0.000000 -5.359957 0.000000 +frame18=0.000000 -5.359966 0.000000 +frame19=0.000000 -5.359974 0.000000 +frame20=0.000000 -5.359983 0.000000 +frame21=0.000000 -5.359992 0.000000 +frame22=0.000000 -5.360000 0.000000 + +[KeyJointPos] +frame1=0.000000 0.000000 0.000000 +frame2=0.000000 -0.019197 0.000000 +frame3=0.000000 -0.063972 0.000000 +frame4=0.000000 -0.132160 0.000000 +frame5=0.000000 -0.220953 0.000000 +frame6=0.000000 -0.328255 0.000000 +frame7=0.000000 -0.468144 0.000000 +frame8=0.000000 -0.626106 0.000000 +frame9=0.000000 -0.784068 0.000000 +frame10=0.000000 -0.942030 0.000000 +frame11=0.000000 -1.099992 0.000000 +frame12=0.000000 -1.257954 0.000000 +frame13=0.000000 -1.415916 0.000000 +frame14=0.000000 -1.573878 0.000000 +frame15=0.000000 -1.731840 0.000000 +frame16=0.000000 -1.850796 0.000000 +frame17=0.000000 -1.950418 0.000000 +frame18=0.000000 -2.036566 0.000000 +frame19=0.000000 -2.113974 0.000000 +frame20=0.000000 -2.168403 0.000000 +frame21=0.000000 -2.205671 0.000000 +frame22=0.000000 -2.218700 0.000000 diff --git a/CONTENT/BT/ANIMS/STISWLI.ANI b/CONTENT/BT/ANIMS/STISWLI.ANI new file mode 100644 index 0000000..dcde23f --- /dev/null +++ b/CONTENT/BT/ANIMS/STISWLI.ANI @@ -0,0 +1,248 @@ +[LAB_ONLY] + +[HEADER] +framecount=12 +framerate=30 +skeletonfile=sti.skl +jointcount=13 + +[Time] +frame1=0 +frame3=0.0666667 +frame5=0.133333 +frame7=0.2 +frame9=0.266667 +frame11=0.333333 +frame13=0.4 +frame15=0.466667 +frame17=0.533333 +frame19=0.6 +frame21=0.666667 +frame51=1.66667 + +[JointIndices] +jointlocal=0 +jointrknee=7 +jointrshin=8 +jointrankle=9 +jointrinnertoe=11 +jointroutertoe=12 +jointrthigh=6 +jointlknee=14 +jointlshin=15 +jointlankle=16 +jointloutertoe=18 +jointlinnertoe=19 +jointlthigh=13 + +[JointType] +jointlocal=balltranslate +jointrknee=hingex +jointrshin=hingex +jointrankle=hingex +jointrinnertoe=hingez +jointroutertoe=hingez +jointrthigh=hingex +jointlknee=hingex +jointlshin=hingex +jointlankle=hingex +jointloutertoe=hingez +jointlinnertoe=hingez +jointlthigh=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrshin=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 0.000000 +jointroutertoe=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlshin=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 0.000000 +jointlinnertoe=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +[frame3] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.021681 0.000000 0.000000 +jointrshin=-0.054547 0.000000 0.000000 +jointrankle=-0.059806 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 0.000000 +jointroutertoe=0.000000 0.000000 0.000000 +jointrthigh=0.092695 0.000000 0.000000 +jointlknee=0.038552 0.000000 0.000000 +jointlshin=-0.190975 0.000000 0.000000 +jointlankle=0.362971 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.136939 +jointlinnertoe=0.000000 0.000000 0.092397 +jointlthigh=-0.091780 0.000000 0.000000 +[frame5] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.062140 0.000000 0.000000 +jointrshin=-0.086878 0.000000 0.000000 +jointrankle=-0.135049 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 0.000000 +jointroutertoe=0.000000 0.000000 0.000000 +jointrthigh=0.162026 0.000000 0.000000 +jointlknee=0.077105 0.000000 0.000000 +jointlshin=-0.381950 0.000000 0.000000 +jointlankle=0.725943 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.273877 +jointlinnertoe=0.000000 0.000000 0.184795 +jointlthigh=-0.183561 0.000000 0.000000 +[frame7] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.117216 0.000000 0.000000 +jointrshin=-0.093740 0.000000 0.000000 +jointrankle=-0.236736 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 0.000000 +jointroutertoe=0.000000 0.000000 0.000000 +jointrthigh=0.213709 0.000000 0.000000 +jointlknee=0.115657 0.000000 0.000000 +jointlshin=-0.572926 0.000000 0.000000 +jointlankle=1.088914 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.410816 +jointlinnertoe=0.000000 0.000000 0.277192 +jointlthigh=-0.275341 0.000000 0.000000 +[frame9] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.179776 0.000000 0.000000 +jointrshin=-0.074304 0.000000 0.000000 +jointrankle=-0.349670 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 0.000000 +jointroutertoe=0.000000 0.000000 0.000000 +jointrthigh=0.245453 0.000000 0.000000 +jointlknee=0.154210 0.000000 0.000000 +jointlshin=-0.763901 0.000000 0.000000 +jointlankle=1.451885 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.547754 +jointlinnertoe=0.000000 0.000000 0.369589 +jointlthigh=-0.367121 0.000000 0.000000 +[frame11] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.203076 0.000000 0.000000 +jointrshin=-0.120700 0.000000 0.000000 +jointrankle=-0.357897 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.118884 +jointroutertoe=0.000000 0.000000 0.037198 +jointrthigh=0.333059 0.000000 0.000000 +jointlknee=0.230191 0.000000 0.000000 +jointlshin=-0.585842 0.000000 0.000000 +jointlankle=1.239889 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.456462 +jointlinnertoe=0.000000 0.000000 0.307991 +jointlthigh=-0.488173 0.000000 0.000000 +[frame13] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.251048 0.000000 0.000000 +jointrshin=-0.127986 0.000000 0.000000 +jointrankle=-0.409386 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.237767 +jointroutertoe=0.000000 0.000000 0.074396 +jointrthigh=0.387182 0.000000 0.000000 +jointlknee=0.306172 0.000000 0.000000 +jointlshin=-0.407782 0.000000 0.000000 +jointlankle=1.027893 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.365169 +jointlinnertoe=0.000000 0.000000 0.246393 +jointlthigh=-0.609225 0.000000 0.000000 +[frame15] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.308817 0.000000 0.000000 +jointrshin=-0.112001 0.000000 0.000000 +jointrankle=-0.472000 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.356651 +jointroutertoe=0.000000 0.000000 0.111594 +jointrthigh=0.422892 0.000000 0.000000 +jointlknee=0.382154 0.000000 0.000000 +jointlshin=-0.229723 0.000000 0.000000 +jointlankle=0.815897 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.273877 +jointlinnertoe=0.000000 0.000000 0.184795 +jointlthigh=-0.730276 0.000000 0.000000 +[frame17] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.381152 0.000000 0.000000 +jointrshin=-0.060561 0.000000 0.000000 +jointrankle=-0.560108 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.378590 +jointroutertoe=0.000000 0.000000 0.171107 +jointrthigh=0.431582 0.000000 0.000000 +jointlknee=0.458135 0.000000 0.000000 +jointlshin=-0.051663 0.000000 0.000000 +jointlankle=0.603901 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.182585 +jointlinnertoe=0.000000 0.000000 0.123196 +jointlthigh=-0.851328 0.000000 0.000000 +[frame19] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.458971 0.000000 0.000000 +jointrshin=0.024305 0.000000 0.000000 +jointrankle=-0.668430 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.362837 +jointroutertoe=0.000000 0.000000 0.217130 +jointrthigh=0.422045 0.000000 0.000000 +jointlknee=0.534116 0.000000 0.000000 +jointlshin=0.126396 0.000000 0.000000 +jointlankle=0.391905 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.091292 +jointlinnertoe=0.000000 0.000000 0.061598 +jointlthigh=-0.972380 0.000000 0.000000 +[frame21] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.553268 0.000000 0.000000 +jointrshin=0.162646 0.000000 0.000000 +jointrankle=-0.804923 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.347085 +jointroutertoe=0.000000 0.000000 0.263154 +jointrthigh=0.372242 0.000000 0.000000 +jointlknee=0.610097 0.000000 0.000000 +jointlshin=0.304455 0.000000 0.000000 +jointlankle=0.179909 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 0.000000 +jointlinnertoe=0.000000 0.000000 0.000000 +jointlthigh=-1.093431 0.000000 0.000000 +[frame51] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.562015 0.000000 0.000000 +jointrshin=0.161677 0.000000 0.000000 +jointrankle=-0.815125 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.347085 +jointroutertoe=0.000000 0.000000 0.263154 +jointrthigh=0.361950 0.000000 0.000000 +jointlknee=0.610097 0.000000 0.000000 +jointlshin=0.304455 0.000000 0.000000 +jointlankle=0.179909 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 0.000000 +jointlinnertoe=0.000000 0.000000 0.000000 +jointlthigh=-1.093431 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.354700 0.000000 +frame3=0.000000 -5.354775 5.767121 +frame5=0.000000 -5.354850 5.767135 +frame7=0.000000 -5.354925 5.767122 +frame9=0.000000 -5.355000 5.767120 +frame11=0.000719 -5.355000 5.764204 +frame13=0.001437 -5.355000 5.764204 +frame15=0.002156 -5.355000 5.764189 +frame17=0.002874 -5.355000 5.764201 +frame19=0.003593 -5.355000 5.764204 +frame21=0.004311 -5.355000 5.764189 +frame51=0.004311 -5.355000 5.547051 + +[KeyJointPos] +frame1=0.000000 0.000000 0.000000 +frame3=0.000000 -0.004997 0.000000 +frame5=0.000000 -0.009995 0.000000 +frame7=0.000000 -0.014992 0.000000 +frame9=0.000000 -0.019989 0.000000 +frame11=0.000000 -0.061966 0.000000 +frame13=0.000000 -0.103942 0.000000 +frame15=0.000000 -0.145919 0.000000 +frame17=0.000000 -0.187896 0.000000 +frame19=0.000000 -0.229872 0.000000 +frame21=0.000000 -0.271849 0.000000 +frame51=0.000000 -0.271849 0.000000 diff --git a/CONTENT/BT/ANIMS/STISWRI.ANI b/CONTENT/BT/ANIMS/STISWRI.ANI new file mode 100644 index 0000000..6a9bc4e --- /dev/null +++ b/CONTENT/BT/ANIMS/STISWRI.ANI @@ -0,0 +1,248 @@ +[LAB_ONLY] + +[HEADER] +framecount=12 +framerate=30 +skeletonfile=sti.skl +jointcount=13 + +[Time] +frame1=0 +frame3=0.0666667 +frame5=0.133333 +frame7=0.2 +frame9=0.266667 +frame11=0.333333 +frame13=0.4 +frame15=0.466667 +frame17=0.533333 +frame19=0.6 +frame21=0.666667 +frame51=1.66667 + +[JointIndices] +jointlocal=0 +jointrknee=7 +jointrshin=8 +jointrankle=9 +jointrinnertoe=11 +jointroutertoe=12 +jointrthigh=6 +jointlknee=14 +jointlshin=15 +jointlankle=16 +jointloutertoe=18 +jointlinnertoe=19 +jointlthigh=13 + +[JointType] +jointlocal=balltranslate +jointrknee=hingex +jointrshin=hingex +jointrankle=hingex +jointrinnertoe=hingez +jointroutertoe=hingez +jointrthigh=hingex +jointlknee=hingex +jointlshin=hingex +jointlankle=hingex +jointloutertoe=hingez +jointlinnertoe=hingez +jointlthigh=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrshin=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 0.000000 +jointroutertoe=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlshin=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 0.000000 +jointlinnertoe=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +[frame3] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.038552 0.000000 0.000000 +jointrshin=-0.190975 0.000000 0.000000 +jointrankle=0.362971 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.092397 +jointroutertoe=0.000000 0.000000 0.136939 +jointrthigh=-0.091780 0.000000 0.000000 +jointlknee=0.021214 0.000000 0.000000 +jointlshin=-0.053958 0.000000 0.000000 +jointlankle=-0.054631 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 0.000000 +jointlinnertoe=0.000000 0.000000 0.000000 +jointlthigh=0.091202 0.000000 0.000000 +[frame5] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.077105 0.000000 0.000000 +jointrshin=-0.381950 0.000000 0.000000 +jointrankle=0.725943 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.184795 +jointroutertoe=0.000000 0.000000 0.273877 +jointrthigh=-0.183561 0.000000 0.000000 +jointlknee=0.056281 0.000000 0.000000 +jointlshin=-0.079324 0.000000 0.000000 +jointlankle=-0.139368 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 0.000000 +jointlinnertoe=0.000000 0.000000 0.000000 +jointlthigh=0.163089 0.000000 0.000000 +[frame7] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.115657 0.000000 0.000000 +jointrshin=-0.572926 0.000000 0.000000 +jointrankle=1.088914 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.277192 +jointroutertoe=0.000000 0.000000 0.410816 +jointrthigh=-0.275341 0.000000 0.000000 +jointlknee=0.109611 0.000000 0.000000 +jointlshin=-0.085535 0.000000 0.000000 +jointlankle=-0.239103 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 0.000000 +jointlinnertoe=0.000000 0.000000 0.000000 +jointlthigh=0.212838 0.000000 0.000000 +[frame9] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.154210 0.000000 0.000000 +jointrshin=-0.763901 0.000000 0.000000 +jointrankle=1.451885 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.369589 +jointroutertoe=0.000000 0.000000 0.547754 +jointrthigh=-0.367121 0.000000 0.000000 +jointlknee=0.179797 0.000000 0.000000 +jointlshin=-0.072191 0.000000 0.000000 +jointlankle=-0.347881 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 0.000000 +jointlinnertoe=0.000000 0.000000 0.000000 +jointlthigh=0.240452 0.000000 0.000000 +[frame11] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.230191 0.000000 0.000000 +jointrshin=-0.585842 0.000000 0.000000 +jointrankle=1.239889 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.307991 +jointroutertoe=0.000000 0.000000 0.456462 +jointrthigh=-0.488173 0.000000 0.000000 +jointlknee=0.205846 0.000000 0.000000 +jointlshin=-0.115367 0.000000 0.000000 +jointlankle=-0.364306 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.037198 +jointlinnertoe=0.000000 0.000000 0.118884 +jointlthigh=0.325455 0.000000 0.000000 +[frame13] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.306172 0.000000 0.000000 +jointrshin=-0.407782 0.000000 0.000000 +jointrankle=1.027893 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.246393 +jointroutertoe=0.000000 0.000000 0.365169 +jointrthigh=-0.609225 0.000000 0.000000 +jointlknee=0.253265 0.000000 0.000000 +jointlshin=-0.120999 0.000000 0.000000 +jointlankle=-0.414332 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.074396 +jointlinnertoe=0.000000 0.000000 0.237767 +jointlthigh=0.379124 0.000000 0.000000 +[frame15] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.382154 0.000000 0.000000 +jointrshin=-0.229723 0.000000 0.000000 +jointrankle=0.815897 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.184795 +jointroutertoe=0.000000 0.000000 0.273877 +jointrthigh=-0.730276 0.000000 0.000000 +jointlknee=0.312479 0.000000 0.000000 +jointlshin=-0.102154 0.000000 0.000000 +jointlankle=-0.484507 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.111594 +jointlinnertoe=0.000000 0.000000 0.356651 +jointlthigh=0.412804 0.000000 0.000000 +[frame17] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.458135 0.000000 0.000000 +jointrshin=-0.051663 0.000000 0.000000 +jointrankle=0.603901 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.123196 +jointroutertoe=0.000000 0.000000 0.182585 +jointrthigh=-0.851328 0.000000 0.000000 +jointlknee=0.383253 0.000000 0.000000 +jointlshin=-0.055904 0.000000 0.000000 +jointlankle=-0.566450 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.171107 +jointlinnertoe=0.000000 0.000000 0.378590 +jointlthigh=0.425420 0.000000 0.000000 +[frame19] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.534116 0.000000 0.000000 +jointrshin=0.126396 0.000000 0.000000 +jointrankle=0.391905 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.061598 +jointroutertoe=0.000000 0.000000 0.091292 +jointrthigh=-0.972380 0.000000 0.000000 +jointlknee=0.460702 0.000000 0.000000 +jointlshin=0.011823 0.000000 0.000000 +jointlankle=-0.654406 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.217130 +jointlinnertoe=0.000000 0.000000 0.362837 +jointlthigh=0.422529 0.000000 0.000000 +[frame21] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.610097 0.000000 0.000000 +jointrshin=0.304455 0.000000 0.000000 +jointrankle=0.179909 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 0.000000 +jointroutertoe=0.000000 0.000000 0.000000 +jointrthigh=-1.093431 0.000000 0.000000 +jointlknee=0.558912 0.000000 0.000000 +jointlshin=0.164837 0.000000 0.000000 +jointlankle=-0.812622 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.263154 +jointlinnertoe=0.000000 0.000000 0.347085 +jointlthigh=0.364636 0.000000 0.000000 +[frame51] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.610097 0.000000 0.000000 +jointrshin=0.304455 0.000000 0.000000 +jointrankle=0.179909 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 0.000000 +jointroutertoe=0.000000 0.000000 0.000000 +jointrthigh=-1.093431 0.000000 0.000000 +jointlknee=0.562015 0.000000 0.000000 +jointlshin=0.161677 0.000000 0.000000 +jointlankle=-0.815125 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.263154 +jointlinnertoe=0.000000 0.000000 0.347085 +jointlthigh=0.361950 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.354700 0.000000 +frame3=0.000000 -5.354775 5.767121 +frame5=0.000000 -5.354850 5.767135 +frame7=0.000000 -5.354925 5.767122 +frame9=0.000000 -5.355000 5.767120 +frame11=0.000719 -5.355000 5.764204 +frame13=0.001437 -5.355000 5.764204 +frame15=0.002156 -5.355000 5.764189 +frame17=0.002874 -5.355000 5.764201 +frame19=0.003593 -5.355000 5.764204 +frame21=0.004311 -5.355000 5.764189 +frame51=0.004311 -5.355000 5.547051 + +[KeyJointPos] +frame1=0.000000 0.000000 0.000000 +frame3=0.000000 -0.004997 0.000000 +frame5=0.000000 -0.009995 0.000000 +frame7=0.000000 -0.014992 0.000000 +frame9=0.000000 -0.019989 0.000000 +frame11=0.000000 -0.061966 0.000000 +frame13=0.000000 -0.103942 0.000000 +frame15=0.000000 -0.145919 0.000000 +frame17=0.000000 -0.187896 0.000000 +frame19=0.000000 -0.229872 0.000000 +frame21=0.000000 -0.271849 0.000000 +frame51=0.000000 -0.271849 0.000000 diff --git a/CONTENT/BT/ANIMS/STIWRLI.ANI b/CONTENT/BT/ANIMS/STIWRLI.ANI new file mode 100644 index 0000000..b1c77c7 --- /dev/null +++ b/CONTENT/BT/ANIMS/STIWRLI.ANI @@ -0,0 +1,350 @@ +[LAB_ONLY] + +[HEADER] +framecount=18 +framerate=30 +skeletonfile=sti.skl +jointcount=13 + +[Time] +frame1=0 +frame2=0.0333333 +frame3=0.0666667 +frame4=0.1 +frame5=0.133333 +frame6=0.166667 +frame7=0.2 +frame8=0.233333 +frame9=0.266667 +frame10=0.3 +frame11=0.333333 +frame12=0.366667 +frame13=0.4 +frame17=0.533333 +frame22=0.7 +frame24=0.766667 +frame25=0.8 +frame55=1.8 + +[JointIndices] +jointlocal=0 +jointrknee=7 +jointrshin=8 +jointrankle=9 +jointrinnertoe=11 +jointroutertoe=12 +jointrthigh=6 +jointlknee=14 +jointlshin=15 +jointlankle=16 +jointloutertoe=18 +jointlinnertoe=19 +jointlthigh=13 + +[JointType] +jointlocal=balltranslate +jointrknee=hingex +jointrshin=hingex +jointrankle=hingex +jointrinnertoe=hingez +jointroutertoe=hingez +jointrthigh=hingex +jointlknee=hingex +jointlshin=hingex +jointlankle=hingex +jointloutertoe=hingez +jointlinnertoe=hingez +jointlthigh=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.610097 0.000000 0.000000 +jointrshin=0.304455 0.000000 0.000000 +jointrankle=0.179909 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 0.000000 +jointroutertoe=0.000000 0.000000 0.000000 +jointrthigh=-1.093431 0.000000 0.000000 +jointlknee=0.673250 0.000000 0.000000 +jointlshin=0.216288 0.000000 0.000000 +jointlankle=-0.907308 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.206003 +jointlinnertoe=0.000000 0.000000 0.206155 +jointlthigh=0.254403 0.000000 0.000000 +[frame2] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.484833 0.000000 0.000000 +jointrshin=-0.154423 0.000000 0.000000 +jointrankle=0.403389 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 0.000000 +jointroutertoe=0.000000 0.000000 0.000000 +jointrthigh=-0.735328 0.000000 0.000000 +jointlknee=0.423958 0.000000 0.000000 +jointlshin=-0.293105 0.000000 0.000000 +jointlankle=-0.102333 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.437638 +jointlinnertoe=0.000000 0.000000 0.312974 +jointlthigh=0.753272 0.000000 0.000000 +[frame3] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.447028 0.000000 0.000000 +jointrshin=-0.450792 0.000000 0.000000 +jointrankle=0.496900 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 0.000000 +jointroutertoe=0.000000 0.000000 0.000000 +jointrthigh=-0.494438 0.000000 0.000000 +jointlknee=0.102025 0.000000 0.000000 +jointlshin=-0.716810 0.000000 0.000000 +jointlankle=1.098875 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.669274 +jointlinnertoe=0.000000 0.000000 0.419792 +jointlthigh=1.090386 0.000000 0.000000 +[frame4] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.450651 0.000000 0.000000 +jointrshin=-0.667320 0.000000 0.000000 +jointrankle=0.515637 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 0.000000 +jointroutertoe=0.000000 0.000000 0.000000 +jointrthigh=-0.296467 0.000000 0.000000 +jointlknee=-0.231562 0.000000 0.000000 +jointlshin=-0.877108 0.000000 0.000000 +jointlankle=2.300082 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.900909 +jointlinnertoe=0.000000 0.000000 0.526611 +jointlthigh=1.146767 0.000000 0.000000 +[frame5] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.460957 0.000000 0.000000 +jointrshin=-0.861952 0.000000 0.000000 +jointrankle=0.488713 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.001919 +jointroutertoe=0.000000 0.000000 0.000000 +jointrthigh=-0.087156 0.000000 0.000000 +jointlknee=-0.510512 0.000000 0.000000 +jointlshin=-0.943484 0.000000 0.000000 +jointlankle=2.303730 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.834072 +jointlinnertoe=0.000000 0.000000 0.368467 +jointlthigh=1.269913 0.000000 0.000000 +[frame6] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.523688 0.000000 0.000000 +jointrshin=-0.998409 0.000000 0.000000 +jointrankle=0.391057 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.003839 +jointroutertoe=0.000000 0.000000 0.000000 +jointrthigh=0.084304 0.000000 0.000000 +jointlknee=-0.789463 0.000000 0.000000 +jointlshin=-1.009860 0.000000 0.000000 +jointlankle=2.307378 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.767236 +jointlinnertoe=0.000000 0.000000 0.210323 +jointlthigh=1.393058 0.000000 0.000000 +[frame7] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.614696 0.000000 0.000000 +jointrshin=-1.062738 0.000000 0.000000 +jointrankle=0.210844 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.005758 +jointroutertoe=0.000000 0.000000 0.000000 +jointrthigh=0.232296 0.000000 0.000000 +jointlknee=-1.068414 0.000000 0.000000 +jointlshin=-1.076236 0.000000 0.000000 +jointlankle=2.311025 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.700399 +jointlinnertoe=0.000000 0.000000 0.052178 +jointlthigh=1.516204 0.000000 0.000000 +[frame8] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.801385 0.000000 0.000000 +jointrshin=-0.919768 0.000000 0.000000 +jointrankle=-0.122532 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.000946 +jointroutertoe=0.000000 0.000000 0.003257 +jointrthigh=0.240068 0.000000 0.000000 +jointlknee=-1.092935 0.000000 0.000000 +jointlshin=-0.881044 0.000000 0.000000 +jointlankle=1.929976 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.600144 +jointlinnertoe=0.000000 0.000000 -0.103474 +jointlthigh=1.088831 0.000000 0.000000 +[frame9] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.947649 0.000000 0.000000 +jointrshin=-0.661248 0.000000 0.000000 +jointrankle=-0.489453 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 0.000351 +jointroutertoe=0.000000 0.000000 0.005047 +jointrthigh=0.204052 0.000000 0.000000 +jointlknee=-1.117456 0.000000 0.000000 +jointlshin=-0.685852 0.000000 0.000000 +jointlankle=1.548927 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.499888 +jointlinnertoe=0.000000 0.000000 -0.259127 +jointlthigh=0.661457 0.000000 0.000000 +[frame10] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.928379 0.000000 0.000000 +jointrshin=-0.407391 0.000000 0.000000 +jointrankle=-0.629477 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.332496 +jointroutertoe=0.000000 0.000000 0.148633 +jointrthigh=0.272554 0.000000 0.000000 +jointlknee=-1.003361 0.000000 0.000000 +jointlshin=-0.561873 0.000000 0.000000 +jointlankle=1.537134 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.433052 +jointlinnertoe=0.000000 0.000000 -0.254144 +jointlthigh=0.366475 0.000000 0.000000 +[frame11] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.532383 0.000000 0.000000 +jointrshin=0.131308 0.000000 0.000000 +jointrankle=-0.826085 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.231818 +jointroutertoe=0.000000 0.000000 0.335255 +jointrthigh=0.500616 0.000000 0.000000 +jointlknee=-0.889266 0.000000 0.000000 +jointlshin=-0.437895 0.000000 0.000000 +jointlankle=1.525340 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.366215 +jointlinnertoe=0.000000 0.000000 -0.249160 +jointlthigh=0.071493 0.000000 0.000000 +[frame12] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.883936 0.000000 0.000000 +jointrshin=0.108901 0.000000 0.000000 +jointrankle=-0.663030 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.131140 +jointroutertoe=0.000000 0.000000 0.840249 +jointrthigh=0.330173 0.000000 0.000000 +jointlknee=-0.775171 0.000000 0.000000 +jointlshin=-0.313917 0.000000 0.000000 +jointlankle=1.513546 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.299378 +jointlinnertoe=0.000000 0.000000 -0.244177 +jointlthigh=-0.223489 0.000000 0.000000 +[frame13] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.774961 0.000000 0.000000 +jointrshin=0.109815 0.000000 0.000000 +jointrankle=-0.324682 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.134313 +jointroutertoe=0.000000 0.000000 0.851509 +jointrthigh=0.472956 0.000000 0.000000 +jointlknee=-0.687883 0.000000 0.000000 +jointlshin=-0.238058 0.000000 0.000000 +jointlankle=1.376468 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.239225 +jointlinnertoe=0.000000 0.000000 -0.240522 +jointlthigh=-0.337176 0.000000 0.000000 +[frame17] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.317687 0.000000 0.000000 +jointrshin=0.566242 0.000000 0.000000 +jointrankle=1.005016 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.147005 +jointroutertoe=0.000000 0.000000 0.896549 +jointrthigh=0.691943 0.000000 0.000000 +jointlknee=-0.338734 0.000000 0.000000 +jointlshin=0.065377 0.000000 0.000000 +jointlankle=0.828155 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 0.001387 +jointlinnertoe=0.000000 0.000000 -0.225905 +jointlthigh=-0.791920 0.000000 0.000000 +[frame22] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=-0.665754 0.000000 0.000000 +jointrshin=-0.809136 0.000000 0.000000 +jointrankle=2.374887 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.179617 +jointroutertoe=0.000000 0.000000 0.576896 +jointrthigh=1.626031 0.000000 0.000000 +jointlknee=0.338646 0.000000 0.000000 +jointlshin=0.171910 0.000000 0.000000 +jointlankle=0.170245 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 0.111813 +jointlinnertoe=0.000000 0.000000 -0.189361 +jointlthigh=-0.910788 0.000000 0.000000 +[frame24] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=-0.863546 0.000000 0.000000 +jointrshin=-1.181657 0.000000 0.000000 +jointrankle=2.365963 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.189899 +jointroutertoe=0.000000 0.000000 0.470345 +jointrthigh=1.548417 0.000000 0.000000 +jointlknee=-0.015917 0.000000 0.000000 +jointlshin=-0.166249 0.000000 0.000000 +jointlankle=0.459404 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 0.002243 +jointlinnertoe=0.000000 0.000000 0.007946 +jointlthigh=-0.276523 0.000000 0.000000 +[frame25] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=-0.962443 0.000000 0.000000 +jointrshin=-1.367918 0.000000 0.000000 +jointrankle=2.361500 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.195041 +jointroutertoe=0.000000 0.000000 0.417069 +jointrthigh=1.509610 0.000000 0.000000 +jointlknee=-0.337220 0.000000 0.000000 +jointlshin=-0.344132 0.000000 0.000000 +jointlankle=0.425337 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 0.003755 +jointlinnertoe=0.000000 0.000000 -0.004880 +jointlthigh=0.260894 0.000000 0.000000 +[frame55] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=-0.962462 0.000000 0.000000 +jointrshin=-1.367907 0.000000 0.000000 +jointrankle=2.361500 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.195041 +jointroutertoe=0.000000 0.000000 0.417069 +jointrthigh=1.509600 0.000000 0.000000 +jointlknee=-0.191407 0.000000 0.000000 +jointlshin=-0.457316 0.000000 0.000000 +jointlankle=0.484292 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 0.003755 +jointlinnertoe=0.000000 0.000000 -0.004880 +jointlthigh=0.167614 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.355300 0.000000 +frame2=0.000000 -5.347517 18.177229 +frame3=0.000000 -5.339733 18.177229 +frame4=0.000000 -5.331950 18.177227 +frame5=0.000000 -5.339633 19.429399 +frame6=0.000000 -5.347317 19.429401 +frame7=0.000000 -5.355000 19.429401 +frame8=0.000000 -5.355000 20.584805 +frame9=0.000000 -5.355000 20.584795 +frame10=0.000000 -5.355000 20.629894 +frame11=0.000000 -5.355000 20.629908 +frame12=0.000000 -5.355000 20.629894 +frame13=0.000000 -5.355000 20.630051 +frame17=0.000000 -5.355000 20.630032 +frame22=0.000000 -5.355000 22.692604 +frame24=0.000000 -5.355000 26.203024 +frame25=0.000000 -5.355000 26.202944 +frame55=0.000000 -5.355000 26.679602 + +[KeyJointPos] +frame1=0.000000 -0.271849 0.000000 +frame2=0.000074 -0.373790 -0.000007 +frame3=0.000148 -0.475730 -0.000015 +frame4=0.000222 -0.577671 -0.000022 +frame5=0.000282 -0.735505 -0.000028 +frame6=0.000343 -0.893338 -0.000034 +frame7=0.000404 -1.051172 -0.000040 +frame8=0.000366 -0.952533 -0.000036 +frame9=0.000328 -0.853894 -0.000033 +frame10=0.000219 -0.702522 -0.000022 +frame11=0.000109 -0.551150 -0.000011 +frame12=0.000000 -0.399778 0.000000 +frame13=-0.000001 -0.316624 0.000000 +frame17=-0.000006 0.015991 0.000001 +frame22=0.000068 -0.175958 -0.000007 +frame24=0.000229 -0.595251 -0.000023 +frame25=0.000309 -0.804897 -0.000031 +frame55=0.000309 -0.804897 -0.000031 diff --git a/CONTENT/BT/ANIMS/STIWRRI.ANI b/CONTENT/BT/ANIMS/STIWRRI.ANI new file mode 100644 index 0000000..8eebba3 --- /dev/null +++ b/CONTENT/BT/ANIMS/STIWRRI.ANI @@ -0,0 +1,350 @@ +[LAB_ONLY] + +[HEADER] +framecount=18 +framerate=30 +skeletonfile=sti.skl +jointcount=13 + +[Time] +frame1=0 +frame2=0.0333333 +frame3=0.0666667 +frame4=0.1 +frame5=0.133333 +frame6=0.166667 +frame7=0.2 +frame8=0.233333 +frame9=0.266667 +frame10=0.3 +frame11=0.333333 +frame12=0.366667 +frame13=0.4 +frame17=0.533333 +frame22=0.7 +frame24=0.766667 +frame25=0.8 +frame55=1.8 + +[JointIndices] +jointlocal=0 +jointrknee=7 +jointrshin=8 +jointrankle=9 +jointrinnertoe=11 +jointroutertoe=12 +jointrthigh=6 +jointlknee=14 +jointlshin=15 +jointlankle=16 +jointloutertoe=18 +jointlinnertoe=19 +jointlthigh=13 + +[JointType] +jointlocal=balltranslate +jointrknee=hingex +jointrshin=hingex +jointrankle=hingex +jointrinnertoe=hingez +jointroutertoe=hingez +jointrthigh=hingex +jointlknee=hingex +jointlshin=hingex +jointlankle=hingex +jointloutertoe=hingez +jointlinnertoe=hingez +jointlthigh=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.673250 0.000000 0.000000 +jointrshin=0.216288 0.000000 0.000000 +jointrankle=-0.907308 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.206155 +jointroutertoe=0.000000 0.000000 0.206003 +jointrthigh=0.254403 0.000000 0.000000 +jointlknee=0.610097 0.000000 0.000000 +jointlshin=0.304455 0.000000 0.000000 +jointlankle=0.179909 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 0.000000 +jointlinnertoe=0.000000 0.000000 0.000000 +jointlthigh=-1.093431 0.000000 0.000000 +[frame2] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.425811 0.000000 0.000000 +jointrshin=-0.288269 0.000000 0.000000 +jointrankle=-0.112878 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.312974 +jointroutertoe=0.000000 0.000000 0.437638 +jointrthigh=0.751596 0.000000 0.000000 +jointlknee=0.482254 0.000000 0.000000 +jointlshin=-0.158523 0.000000 0.000000 +jointlankle=0.408910 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 0.000000 +jointlinnertoe=0.000000 0.000000 0.000000 +jointlthigh=-0.732759 0.000000 0.000000 +[frame3] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.102025 0.000000 0.000000 +jointrshin=-0.716810 0.000000 0.000000 +jointrankle=1.098875 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.419792 +jointroutertoe=0.000000 0.000000 0.669274 +jointrthigh=1.090386 0.000000 0.000000 +jointlknee=0.443528 0.000000 0.000000 +jointlshin=-0.451988 0.000000 0.000000 +jointlankle=0.501023 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 0.000000 +jointlinnertoe=0.000000 0.000000 0.000000 +jointlthigh=-0.491500 0.000000 0.000000 +[frame4] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=-0.231562 0.000000 0.000000 +jointrshin=-0.877108 0.000000 0.000000 +jointrankle=2.300082 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.526611 +jointroutertoe=0.000000 0.000000 0.900909 +jointrthigh=1.146767 0.000000 0.000000 +jointlknee=0.446282 0.000000 0.000000 +jointlshin=-0.668246 0.000000 0.000000 +jointlankle=0.516495 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 0.000000 +jointlinnertoe=0.000000 0.000000 0.000000 +jointlthigh=-0.293337 0.000000 0.000000 +[frame5] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=-0.510512 0.000000 0.000000 +jointrshin=-0.943484 0.000000 0.000000 +jointrankle=2.303730 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.368467 +jointroutertoe=0.000000 0.000000 0.834072 +jointrthigh=1.269913 0.000000 0.000000 +jointlknee=0.454787 0.000000 0.000000 +jointlshin=-0.859144 0.000000 0.000000 +jointlankle=0.486711 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 0.000000 +jointlinnertoe=0.000000 0.000000 -0.001919 +jointlthigh=-0.084220 0.000000 0.000000 +[frame6] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=-0.789463 0.000000 0.000000 +jointrshin=-1.009860 0.000000 0.000000 +jointrankle=2.307378 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.210323 +jointroutertoe=0.000000 0.000000 0.767236 +jointrthigh=1.393058 0.000000 0.000000 +jointlknee=0.520347 0.000000 0.000000 +jointlshin=-0.997044 0.000000 0.000000 +jointlankle=0.390394 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 0.000000 +jointlinnertoe=0.000000 0.000000 -0.003839 +jointlthigh=0.086398 0.000000 0.000000 +[frame7] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=-1.068414 0.000000 0.000000 +jointrshin=-1.076236 0.000000 0.000000 +jointrankle=2.311025 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.052178 +jointroutertoe=0.000000 0.000000 0.700399 +jointrthigh=1.516204 0.000000 0.000000 +jointlknee=0.610952 0.000000 0.000000 +jointlshin=-1.064317 0.000000 0.000000 +jointlankle=0.218473 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 0.000000 +jointlinnertoe=0.000000 0.000000 -0.005758 +jointlthigh=0.234963 0.000000 0.000000 +[frame8] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=-1.092935 0.000000 0.000000 +jointrshin=-0.881044 0.000000 0.000000 +jointrankle=1.929976 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 0.103474 +jointroutertoe=0.000000 0.000000 0.600144 +jointrthigh=1.088831 0.000000 0.000000 +jointlknee=0.798828 0.000000 0.000000 +jointlshin=-0.920293 0.000000 0.000000 +jointlankle=-0.122653 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 0.003257 +jointlinnertoe=0.000000 0.000000 -0.022771 +jointlthigh=0.242369 0.000000 0.000000 +[frame9] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=-1.117456 0.000000 0.000000 +jointrshin=-0.685852 0.000000 0.000000 +jointrankle=1.548927 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 0.259127 +jointroutertoe=0.000000 0.000000 0.499888 +jointrthigh=0.661457 0.000000 0.000000 +jointlknee=0.945509 0.000000 0.000000 +jointlshin=-0.661492 0.000000 0.000000 +jointlankle=-0.491078 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 0.011071 +jointlinnertoe=0.000000 0.000000 -0.007664 +jointlthigh=0.206146 0.000000 0.000000 +[frame10] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=-1.003361 0.000000 0.000000 +jointrshin=-0.561873 0.000000 0.000000 +jointrankle=1.537134 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 0.254144 +jointroutertoe=0.000000 0.000000 0.433052 +jointrthigh=0.366475 0.000000 0.000000 +jointlknee=0.928498 0.000000 0.000000 +jointlshin=-0.412278 0.000000 0.000000 +jointlankle=-0.628692 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 0.148633 +jointlinnertoe=0.000000 0.000000 -0.332496 +jointlthigh=0.274881 0.000000 0.000000 +[frame11] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=-0.889266 0.000000 0.000000 +jointrshin=-0.437895 0.000000 0.000000 +jointrankle=1.525340 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 0.249160 +jointroutertoe=0.000000 0.000000 0.366215 +jointrthigh=0.071493 0.000000 0.000000 +jointlknee=0.530149 0.000000 0.000000 +jointlshin=0.124552 0.000000 0.000000 +jointlankle=-0.834550 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 0.335255 +jointlinnertoe=0.000000 0.000000 -0.231818 +jointlthigh=0.504617 0.000000 0.000000 +[frame12] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=-0.775171 0.000000 0.000000 +jointrshin=-0.313917 0.000000 0.000000 +jointrankle=1.513546 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 0.244177 +jointroutertoe=0.000000 0.000000 0.299378 +jointrthigh=-0.223489 0.000000 0.000000 +jointlknee=0.884309 0.000000 0.000000 +jointlshin=0.114999 0.000000 0.000000 +jointlankle=-0.669182 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 0.840249 +jointlinnertoe=0.000000 0.000000 -0.131140 +jointlthigh=0.328303 0.000000 0.000000 +[frame13] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=-0.687883 0.000000 0.000000 +jointrshin=-0.238058 0.000000 0.000000 +jointrankle=1.376468 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 0.240522 +jointroutertoe=0.000000 0.000000 0.239225 +jointrthigh=-0.337176 0.000000 0.000000 +jointlknee=0.775113 0.000000 0.000000 +jointlshin=0.105446 0.000000 0.000000 +jointlankle=-0.322338 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 0.851509 +jointlinnertoe=0.000000 0.000000 -0.134313 +jointlthigh=0.476035 0.000000 0.000000 +[frame17] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=-0.338734 0.000000 0.000000 +jointrshin=0.065377 0.000000 0.000000 +jointrankle=0.828155 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 0.225905 +jointroutertoe=0.000000 0.000000 -0.001387 +jointrthigh=-0.791920 0.000000 0.000000 +jointlknee=0.317687 0.000000 0.000000 +jointlshin=0.566242 0.000000 0.000000 +jointlankle=1.005016 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 0.896549 +jointlinnertoe=0.000000 0.000000 -0.147005 +jointlthigh=0.691943 0.000000 0.000000 +[frame22] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.338646 0.000000 0.000000 +jointrshin=0.171910 0.000000 0.000000 +jointrankle=0.170245 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 0.189361 +jointroutertoe=0.000000 0.000000 -0.111813 +jointrthigh=-0.910788 0.000000 0.000000 +jointlknee=-0.665754 0.000000 0.000000 +jointlshin=-0.809136 0.000000 0.000000 +jointlankle=2.374887 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 0.576896 +jointlinnertoe=0.000000 0.000000 -0.179617 +jointlthigh=1.626031 0.000000 0.000000 +[frame24] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=-0.017662 0.000000 0.000000 +jointrshin=-0.171383 0.000000 0.000000 +jointrankle=0.461414 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.007946 +jointroutertoe=0.000000 0.000000 -0.002243 +jointrthigh=-0.272186 0.000000 0.000000 +jointlknee=-0.863546 0.000000 0.000000 +jointlshin=-1.181657 0.000000 0.000000 +jointlankle=2.365963 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 0.470345 +jointlinnertoe=0.000000 0.000000 -0.189899 +jointlthigh=1.548417 0.000000 0.000000 +[frame25] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=-0.186197 0.000000 0.000000 +jointrshin=-0.462640 0.000000 0.000000 +jointrankle=0.489411 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 0.004880 +jointroutertoe=0.000000 0.000000 -0.003755 +jointrthigh=0.164563 0.000000 0.000000 +jointlknee=-0.962443 0.000000 0.000000 +jointlshin=-1.367918 0.000000 0.000000 +jointlankle=2.361500 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 0.417069 +jointlinnertoe=0.000000 0.000000 -0.195041 +jointlthigh=1.509610 0.000000 0.000000 +[frame55] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=-0.191407 0.000000 0.000000 +jointrshin=-0.457316 0.000000 0.000000 +jointrankle=0.484292 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 0.004880 +jointroutertoe=0.000000 0.000000 -0.003755 +jointrthigh=0.167614 0.000000 0.000000 +jointlknee=-0.962462 0.000000 0.000000 +jointlshin=-1.367907 0.000000 0.000000 +jointlankle=2.361500 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 0.417069 +jointlinnertoe=0.000000 0.000000 -0.195041 +jointlthigh=1.509600 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.355300 0.000000 +frame2=0.000000 -5.347517 18.177229 +frame3=0.000000 -5.339733 18.177229 +frame4=0.000000 -5.331950 18.177227 +frame5=0.000000 -5.339633 19.429399 +frame6=0.000000 -5.347317 19.429401 +frame7=0.000000 -5.355000 19.429401 +frame8=0.000000 -5.355000 20.584805 +frame9=0.000000 -5.355000 20.584795 +frame10=0.000000 -5.355000 20.629894 +frame11=0.000000 -5.355000 20.629908 +frame12=0.000000 -5.355000 20.629894 +frame13=0.000000 -5.355000 20.630051 +frame17=0.000000 -5.355000 20.630032 +frame22=0.000000 -5.355000 22.692604 +frame24=0.000000 -5.355000 26.203024 +frame25=0.000000 -5.355000 26.202944 +frame55=0.000000 -5.355000 26.679602 + +[KeyJointPos] +frame1=0.000000 -0.271849 0.000000 +frame2=0.000074 -0.373790 -0.000007 +frame3=0.000148 -0.475730 -0.000015 +frame4=0.000222 -0.577671 -0.000022 +frame5=0.000282 -0.735505 -0.000028 +frame6=0.000343 -0.893338 -0.000034 +frame7=0.000404 -1.051172 -0.000040 +frame8=0.000366 -0.952533 -0.000036 +frame9=0.000328 -0.853894 -0.000033 +frame10=0.000219 -0.702522 -0.000022 +frame11=0.000109 -0.551150 -0.000011 +frame12=0.000000 -0.399778 0.000000 +frame13=-0.000001 -0.316624 0.000000 +frame17=-0.000006 0.015991 0.000001 +frame22=0.000068 -0.175958 -0.000007 +frame24=0.000229 -0.595251 -0.000023 +frame25=0.000309 -0.804897 -0.000031 +frame55=0.000309 -0.804897 -0.000031 diff --git a/CONTENT/BT/ANIMS/STIWSLI.ANI b/CONTENT/BT/ANIMS/STIWSLI.ANI new file mode 100644 index 0000000..dd028c0 --- /dev/null +++ b/CONTENT/BT/ANIMS/STIWSLI.ANI @@ -0,0 +1,190 @@ +[LAB_ONLY] + +[HEADER] +framecount=10 +framerate=30 +skeletonfile=sti.skl +jointcount=11 + +[Time] +frame1=0 +frame2=0.0333333 +frame3=0.0666667 +frame4=0.1 +frame5=0.133333 +frame6=0.166667 +frame7=0.2 +frame8=0.233333 +frame11=0.333333 +frame14=0.433333 + +[JointIndices] +jointlocal=0 +jointrknee=7 +jointrshin=8 +jointrankle=9 +jointrthigh=6 +jointlknee=14 +jointlshin=15 +jointlankle=16 +jointloutertoe=18 +jointlinnertoe=19 +jointlthigh=13 + +[JointType] +jointlocal=balltranslate +jointrknee=hingex +jointrshin=hingex +jointrankle=hingex +jointrthigh=hingex +jointlknee=hingex +jointlshin=hingex +jointlankle=hingex +jointloutertoe=hingez +jointlinnertoe=hingez +jointlthigh=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.610097 0.000000 0.000000 +jointrshin=0.304455 0.000000 0.000000 +jointrankle=0.179909 0.000000 0.000000 +jointrthigh=-1.093431 0.000000 0.000000 +jointlknee=0.680937 0.000000 0.000000 +jointlshin=0.237908 0.000000 0.000000 +jointlankle=-0.935200 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.218578 +jointlinnertoe=0.000000 0.000000 0.347085 +jointlthigh=0.240903 0.000000 0.000000 +[frame2] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.578242 0.000000 0.000000 +jointrshin=0.184195 0.000000 0.000000 +jointrankle=0.228600 0.000000 0.000000 +jointrthigh=-0.991375 0.000000 0.000000 +jointlknee=0.544707 0.000000 0.000000 +jointlshin=0.088595 0.000000 0.000000 +jointlankle=-0.667103 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.201764 +jointlinnertoe=0.000000 0.000000 0.320386 +jointlthigh=0.429656 0.000000 0.000000 +[frame3] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.555477 0.000000 0.000000 +jointrshin=0.074379 0.000000 0.000000 +jointrankle=0.269582 0.000000 0.000000 +jointrthigh=-0.901223 0.000000 0.000000 +jointlknee=0.408477 0.000000 0.000000 +jointlshin=-0.060717 0.000000 0.000000 +jointlankle=-0.399007 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.184951 +jointlinnertoe=0.000000 0.000000 0.293687 +jointlthigh=0.618410 0.000000 0.000000 +[frame4] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.542345 0.000000 0.000000 +jointrshin=-0.008262 0.000000 0.000000 +jointrankle=0.296544 0.000000 0.000000 +jointrthigh=-0.828517 0.000000 0.000000 +jointlknee=0.237307 0.000000 0.000000 +jointlshin=-0.181137 0.000000 0.000000 +jointlankle=-0.174243 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.168137 +jointlinnertoe=0.000000 0.000000 0.266988 +jointlthigh=0.781736 0.000000 0.000000 +[frame5] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.538036 0.000000 0.000000 +jointrshin=-0.089970 0.000000 0.000000 +jointrankle=0.308965 0.000000 0.000000 +jointrthigh=-0.759077 0.000000 0.000000 +jointlknee=0.066137 0.000000 0.000000 +jointlshin=-0.301558 0.000000 0.000000 +jointlankle=0.050522 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.151323 +jointlinnertoe=0.000000 0.000000 0.240290 +jointlthigh=0.945061 0.000000 0.000000 +[frame6] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.537355 0.000000 0.000000 +jointrshin=-0.150868 0.000000 0.000000 +jointrankle=0.312704 0.000000 0.000000 +jointrthigh=-0.701567 0.000000 0.000000 +jointlknee=-0.068575 0.000000 0.000000 +jointlshin=-0.410755 0.000000 0.000000 +jointlankle=0.266140 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.134510 +jointlinnertoe=0.000000 0.000000 0.213591 +jointlthigh=1.028529 0.000000 0.000000 +[frame7] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.538050 0.000000 0.000000 +jointrshin=-0.209244 0.000000 0.000000 +jointrankle=0.316273 0.000000 0.000000 +jointrthigh=-0.646164 0.000000 0.000000 +jointlknee=-0.203287 0.000000 0.000000 +jointlshin=-0.519951 0.000000 0.000000 +jointlankle=0.481759 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.117696 +jointlinnertoe=0.000000 0.000000 0.186892 +jointlthigh=1.111997 0.000000 0.000000 +[frame8] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.546637 0.000000 0.000000 +jointrshin=-0.256590 0.000000 0.000000 +jointrankle=0.309597 0.000000 0.000000 +jointrthigh=-0.598346 0.000000 0.000000 +jointlknee=-0.337999 0.000000 0.000000 +jointlshin=-0.629148 0.000000 0.000000 +jointlankle=0.697378 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.100882 +jointlinnertoe=0.000000 0.000000 0.160193 +jointlthigh=1.195465 0.000000 0.000000 +[frame11] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.575549 0.000000 0.000000 +jointrshin=-0.366540 0.000000 0.000000 +jointrankle=0.254022 0.000000 0.000000 +jointrthigh=-0.463865 0.000000 0.000000 +jointlknee=-0.345181 0.000000 0.000000 +jointlshin=-0.611789 0.000000 0.000000 +jointlankle=0.660876 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.050441 +jointlinnertoe=0.000000 0.000000 0.080096 +jointlthigh=0.785777 0.000000 0.000000 +[frame14] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrshin=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlshin=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 0.000000 +jointlinnertoe=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.004311 -5.355000 0.000000 +frame2=0.003979 -5.354977 5.316696 +frame3=0.003648 -5.354954 5.316696 +frame4=0.003316 -5.354931 5.316697 +frame5=0.002985 -5.354908 5.316695 +frame6=0.002653 -5.354885 5.316697 +frame7=0.002321 -5.354862 5.316697 +frame8=0.001990 -5.354839 5.316697 +frame11=0.000995 -5.354770 5.316696 +frame14=0.000000 -5.354700 5.316678 + +[KeyJointPos] +frame1=0.000000 -0.271849 0.000000 +frame2=0.000000 -0.250938 0.000000 +frame3=0.000000 -0.230026 0.000000 +frame4=0.000000 -0.209115 0.000000 +frame5=0.000000 -0.188203 0.000000 +frame6=0.000000 -0.167292 0.000000 +frame7=0.000000 -0.146380 0.000000 +frame8=0.000000 -0.125469 0.000000 +frame11=0.000000 -0.062734 0.000000 +frame14=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/STIWSRI.ANI b/CONTENT/BT/ANIMS/STIWSRI.ANI new file mode 100644 index 0000000..37e5722 --- /dev/null +++ b/CONTENT/BT/ANIMS/STIWSRI.ANI @@ -0,0 +1,190 @@ +[LAB_ONLY] + +[HEADER] +framecount=10 +framerate=30 +skeletonfile=sti.skl +jointcount=11 + +[Time] +frame1=0 +frame2=0.0333333 +frame3=0.0666667 +frame4=0.1 +frame5=0.133333 +frame6=0.166667 +frame7=0.2 +frame8=0.233333 +frame11=0.333333 +frame14=0.433333 + +[JointIndices] +jointlocal=0 +jointrknee=7 +jointrshin=8 +jointrankle=9 +jointrinnertoe=11 +jointroutertoe=12 +jointrthigh=6 +jointlknee=14 +jointlshin=15 +jointlankle=16 +jointlthigh=13 + +[JointType] +jointlocal=balltranslate +jointrknee=hingex +jointrshin=hingex +jointrankle=hingex +jointrinnertoe=hingez +jointroutertoe=hingez +jointrthigh=hingex +jointlknee=hingex +jointlshin=hingex +jointlankle=hingex +jointlthigh=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.680937 0.000000 0.000000 +jointrshin=0.237908 0.000000 0.000000 +jointrankle=-0.935200 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.347085 +jointroutertoe=0.000000 0.000000 0.218578 +jointrthigh=0.240903 0.000000 0.000000 +jointlknee=0.610099 0.000000 0.000000 +jointlshin=0.304450 0.000000 0.000000 +jointlankle=0.179903 0.000000 0.000000 +jointlthigh=-1.093424 0.000000 0.000000 +[frame2] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.544707 0.000000 0.000000 +jointrshin=0.088595 0.000000 0.000000 +jointrankle=-0.657554 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.320386 +jointroutertoe=0.000000 0.000000 0.201764 +jointrthigh=0.429656 0.000000 0.000000 +jointlknee=0.590811 0.000000 0.000000 +jointlshin=0.207071 0.000000 0.000000 +jointlankle=0.198299 0.000000 0.000000 +jointlthigh=-1.005606 0.000000 0.000000 +[frame3] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.408477 0.000000 0.000000 +jointrshin=-0.060717 0.000000 0.000000 +jointrankle=-0.379908 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.293687 +jointroutertoe=0.000000 0.000000 0.184951 +jointrthigh=0.618410 0.000000 0.000000 +jointlknee=0.577901 0.000000 0.000000 +jointlshin=0.120520 0.000000 0.000000 +jointlankle=0.203188 0.000000 0.000000 +jointlthigh=-0.930536 0.000000 0.000000 +[frame4] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.237307 0.000000 0.000000 +jointrshin=-0.181137 0.000000 0.000000 +jointrankle=-0.192475 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.266988 +jointroutertoe=0.000000 0.000000 0.168137 +jointrthigh=0.781736 0.000000 0.000000 +jointlknee=0.544431 0.000000 0.000000 +jointlshin=-0.007967 0.000000 0.000000 +jointlankle=0.295549 0.000000 0.000000 +jointlthigh=-0.829232 0.000000 0.000000 +[frame5] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.066137 0.000000 0.000000 +jointrshin=-0.301558 0.000000 0.000000 +jointrankle=-0.005042 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.240290 +jointroutertoe=0.000000 0.000000 0.151323 +jointrthigh=0.945061 0.000000 0.000000 +jointlknee=0.547864 0.000000 0.000000 +jointlshin=-0.066077 0.000000 0.000000 +jointlankle=0.289061 0.000000 0.000000 +jointlthigh=-0.773155 0.000000 0.000000 +[frame6] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=-0.068575 0.000000 0.000000 +jointrshin=-0.410755 0.000000 0.000000 +jointrankle=0.229098 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.213591 +jointroutertoe=0.000000 0.000000 0.134510 +jointrthigh=1.028529 0.000000 0.000000 +jointlknee=0.545644 0.000000 0.000000 +jointlshin=-0.137868 0.000000 0.000000 +jointlankle=0.295076 0.000000 0.000000 +jointlthigh=-0.711246 0.000000 0.000000 +[frame7] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=-0.203287 0.000000 0.000000 +jointrshin=-0.519951 0.000000 0.000000 +jointrankle=0.463238 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.186892 +jointroutertoe=0.000000 0.000000 0.117696 +jointrthigh=1.111997 0.000000 0.000000 +jointlknee=0.523941 0.000000 0.000000 +jointlshin=-0.211834 0.000000 0.000000 +jointlankle=0.266751 0.000000 0.000000 +jointlthigh=-0.632438 0.000000 0.000000 +[frame8] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=-0.337999 0.000000 0.000000 +jointrshin=-0.629148 0.000000 0.000000 +jointrankle=0.697378 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.160193 +jointroutertoe=0.000000 0.000000 0.100882 +jointrthigh=1.195465 0.000000 0.000000 +jointlknee=0.534139 0.000000 0.000000 +jointlshin=-0.245058 0.000000 0.000000 +jointlankle=0.287972 0.000000 0.000000 +jointlthigh=-0.590693 0.000000 0.000000 +[frame11] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=-0.345181 0.000000 0.000000 +jointrshin=-0.611789 0.000000 0.000000 +jointrankle=0.660876 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.080097 +jointroutertoe=0.000000 0.000000 0.050441 +jointrthigh=0.785777 0.000000 0.000000 +jointlknee=0.567801 0.000000 0.000000 +jointlshin=-0.345724 0.000000 0.000000 +jointlankle=0.220055 0.000000 0.000000 +jointlthigh=-0.462134 0.000000 0.000000 +[frame14] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrshin=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 0.000000 +jointroutertoe=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointlknee=0.619686 0.000000 0.000000 +jointlshin=-0.428339 0.000000 0.000000 +jointlankle=0.162044 0.000000 0.000000 +jointlthigh=-0.352139 0.000000 0.000000 + +[RootTranslation] +frame1=0.004311 -5.355000 0.000000 +frame2=0.003979 -5.354977 5.316696 +frame3=0.003648 -5.354954 5.316696 +frame4=0.003316 -5.354931 5.316697 +frame5=0.002985 -5.354908 5.316695 +frame6=0.002653 -5.354885 5.316697 +frame7=0.002321 -5.354862 5.316697 +frame8=0.001990 -5.354839 5.316697 +frame11=0.000995 -5.354770 5.316696 +frame14=0.000000 -5.354700 5.316678 + +[KeyJointPos] +frame1=0.000000 -0.271849 0.000000 +frame2=0.000000 -0.250938 0.000000 +frame3=0.000000 -0.230026 0.000000 +frame4=0.000000 -0.209115 0.000000 +frame5=0.000000 -0.188203 0.000000 +frame6=0.000000 -0.167292 0.000000 +frame7=0.000000 -0.146380 0.000000 +frame8=0.000000 -0.125469 0.000000 +frame11=0.000000 -0.062734 0.000000 +frame14=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/STIWWLI.ANI b/CONTENT/BT/ANIMS/STIWWLI.ANI new file mode 100644 index 0000000..6e97961 --- /dev/null +++ b/CONTENT/BT/ANIMS/STIWWLI.ANI @@ -0,0 +1,231 @@ +[LAB_ONLY] + +[HEADER] +framecount=11 +framerate=30 +skeletonfile=sti.skl +jointcount=13 + +[Time] +frame1=0 +frame2=0.0333333 +frame3=0.0666667 +frame4=0.1 +frame5=0.133333 +frame6=0.166667 +frame7=0.2 +frame8=0.233333 +frame9=0.266667 +frame10=0.3 +frame11=0.333333 + +[JointIndices] +jointlocal=0 +jointrknee=7 +jointrshin=8 +jointrankle=9 +jointrinnertoe=11 +jointroutertoe=12 +jointrthigh=6 +jointlknee=14 +jointlshin=15 +jointlankle=16 +jointloutertoe=18 +jointlinnertoe=19 +jointlthigh=13 + +[JointType] +jointlocal=balltranslate +jointrknee=hingex +jointrshin=hingex +jointrankle=hingex +jointrinnertoe=hingez +jointroutertoe=hingez +jointrthigh=hingex +jointlknee=hingex +jointlshin=hingex +jointlankle=hingex +jointloutertoe=hingez +jointlinnertoe=hingez +jointlthigh=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.610097 0.000000 0.000000 +jointrshin=0.304455 0.000000 0.000000 +jointrankle=0.179909 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 0.000000 +jointroutertoe=0.000000 0.000000 0.000000 +jointrthigh=-1.093431 0.000000 0.000000 +jointlknee=0.673250 0.000000 0.000000 +jointlshin=0.216288 0.000000 0.000000 +jointlankle=-0.907308 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.206003 +jointlinnertoe=0.000000 0.000000 0.206155 +jointlthigh=0.254403 0.000000 0.000000 +[frame2] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.511532 0.000000 0.000000 +jointrshin=-0.101408 0.000000 0.000000 +jointrankle=0.364549 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 0.000000 +jointroutertoe=0.000000 0.000000 0.000000 +jointrthigh=-0.773827 0.000000 0.000000 +jointlknee=0.426332 0.000000 0.000000 +jointlshin=-0.383210 0.000000 0.000000 +jointlankle=0.060524 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.437639 +jointlinnertoe=0.000000 0.000000 0.312973 +jointlthigh=0.762950 0.000000 0.000000 +[frame3] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.501190 0.000000 0.000000 +jointrshin=-0.364444 0.000000 0.000000 +jointrankle=0.427758 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 0.000000 +jointroutertoe=0.000000 0.000000 0.000000 +jointrthigh=-0.565769 0.000000 0.000000 +jointlknee=0.172266 0.000000 0.000000 +jointlshin=-0.708246 0.000000 0.000000 +jointlankle=1.182387 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.669274 +jointlinnertoe=0.000000 0.000000 0.419792 +jointlthigh=0.989312 0.000000 0.000000 +[frame4] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.497571 0.000000 0.000000 +jointrshin=-0.596545 0.000000 0.000000 +jointrankle=0.454430 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 0.000000 +jointroutertoe=0.000000 0.000000 0.000000 +jointrthigh=-0.357499 0.000000 0.000000 +jointlknee=-0.217075 0.000000 0.000000 +jointlshin=-0.809838 0.000000 0.000000 +jointlankle=2.275491 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.900909 +jointlinnertoe=0.000000 0.000000 0.526611 +jointlthigh=1.091321 0.000000 0.000000 +[frame5] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.546311 0.000000 0.000000 +jointrshin=-0.744442 0.000000 0.000000 +jointrankle=0.390460 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 0.000000 +jointroutertoe=0.000000 0.000000 0.000000 +jointrthigh=-0.195002 0.000000 0.000000 +jointlknee=-0.545161 0.000000 0.000000 +jointlshin=-0.795676 0.000000 0.000000 +jointlankle=2.121622 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.600606 +jointlinnertoe=0.000000 0.000000 0.351075 +jointlthigh=1.238549 0.000000 0.000000 +[frame6] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.616082 0.000000 0.000000 +jointrshin=-0.824740 0.000000 0.000000 +jointrankle=0.261670 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 0.000000 +jointroutertoe=0.000000 0.000000 0.000000 +jointrthigh=-0.054852 0.000000 0.000000 +jointlknee=-0.873244 0.000000 0.000000 +jointlshin=-0.781513 0.000000 0.000000 +jointlankle=1.967736 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.300303 +jointlinnertoe=0.000000 0.000000 0.175536 +jointlthigh=1.385777 0.000000 0.000000 +[frame7] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.725001 0.000000 0.000000 +jointrshin=-0.847080 0.000000 0.000000 +jointrankle=0.080233 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 0.000000 +jointroutertoe=0.000000 0.000000 0.000000 +jointrthigh=0.039873 0.000000 0.000000 +jointlknee=-1.201329 0.000000 0.000000 +jointlshin=-0.767351 0.000000 0.000000 +jointlankle=1.813868 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 0.000000 +jointlinnertoe=0.000000 0.000000 0.000000 +jointlthigh=1.533005 0.000000 0.000000 +[frame8] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.814896 0.000000 0.000000 +jointrshin=-0.692456 0.000000 0.000000 +jointrankle=-0.201294 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.000522 +jointroutertoe=0.000000 0.000000 0.000000 +jointrthigh=0.082627 0.000000 0.000000 +jointlknee=-1.016541 0.000000 0.000000 +jointlshin=-0.573651 0.000000 0.000000 +jointlankle=1.687295 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 0.079529 +jointlinnertoe=0.000000 0.000000 -0.132055 +jointlthigh=0.920413 0.000000 0.000000 +[frame9] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.939874 0.000000 0.000000 +jointrshin=-0.461620 0.000000 0.000000 +jointrankle=-0.520380 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.001043 +jointroutertoe=0.000000 0.000000 0.000000 +jointrthigh=0.050728 0.000000 0.000000 +jointlknee=-0.831754 0.000000 0.000000 +jointlshin=-0.379951 0.000000 0.000000 +jointlankle=1.560721 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 0.159059 +jointlinnertoe=0.000000 0.000000 -0.264110 +jointlthigh=0.307820 0.000000 0.000000 +[frame10] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.778193 0.000000 0.000000 +jointrshin=-0.108983 0.000000 0.000000 +jointrankle=-0.770373 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.099682 +jointroutertoe=0.000000 0.000000 0.028682 +jointrthigh=0.171401 0.000000 0.000000 +jointlknee=-0.110828 0.000000 0.000000 +jointlshin=-0.037748 0.000000 0.000000 +jointlankle=0.870314 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 0.079529 +jointlinnertoe=0.000000 0.000000 -0.132055 +jointlthigh=-0.392806 0.000000 0.000000 +[frame11] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.673250 0.000000 0.000000 +jointrshin=0.216288 0.000000 0.000000 +jointrankle=-0.904726 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.347085 +jointroutertoe=0.000000 0.000000 0.218578 +jointrthigh=0.254403 0.000000 0.000000 +jointlknee=0.610097 0.000000 0.000000 +jointlshin=0.304455 0.000000 0.000000 +jointlankle=0.179909 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 0.000000 +jointlinnertoe=0.000000 0.000000 0.000000 +jointlthigh=-1.093431 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.355000 0.000000 +frame2=0.000000 -5.355000 17.172445 +frame3=0.000000 -5.355000 17.172449 +frame4=0.000000 -5.355000 18.585903 +frame5=0.001241 -5.355000 18.906237 +frame6=0.002482 -5.355000 18.906242 +frame7=0.003723 -5.355000 18.906242 +frame8=0.005341 -5.355000 18.906170 +frame9=0.006958 -5.355000 18.906290 +frame10=0.005635 -5.355000 18.276617 +frame11=0.004311 -5.355000 18.276588 + +[KeyJointPos] +frame1=0.000000 -0.271849 0.000000 +frame2=0.000000 -0.303831 0.000000 +frame3=0.000000 -0.335814 0.000000 +frame4=0.000000 -0.431760 0.000000 +frame5=0.000000 -0.485786 0.000000 +frame6=0.000000 -0.539808 0.000000 +frame7=0.000000 -0.593834 0.000000 +frame8=0.000000 -0.505175 0.000000 +frame9=0.000000 -0.416521 0.000000 +frame10=0.000000 -0.344185 0.000000 +frame11=0.000000 -0.271849 0.000000 diff --git a/CONTENT/BT/ANIMS/STIWWRI.ANI b/CONTENT/BT/ANIMS/STIWWRI.ANI new file mode 100644 index 0000000..06248e4 --- /dev/null +++ b/CONTENT/BT/ANIMS/STIWWRI.ANI @@ -0,0 +1,231 @@ +[LAB_ONLY] + +[HEADER] +framecount=11 +framerate=30 +skeletonfile=sti.skl +jointcount=13 + +[Time] +frame1=0 +frame2=0.0333333 +frame3=0.0666667 +frame4=0.1 +frame5=0.133333 +frame6=0.166667 +frame7=0.2 +frame8=0.233333 +frame9=0.266667 +frame10=0.3 +frame11=0.333333 + +[JointIndices] +jointlocal=0 +jointrknee=7 +jointrshin=8 +jointrankle=9 +jointrinnertoe=11 +jointroutertoe=12 +jointrthigh=6 +jointlknee=14 +jointlshin=15 +jointlankle=16 +jointloutertoe=18 +jointlinnertoe=19 +jointlthigh=13 + +[JointType] +jointlocal=balltranslate +jointrknee=hingex +jointrshin=hingex +jointrankle=hingex +jointrinnertoe=hingez +jointroutertoe=hingez +jointrthigh=hingex +jointlknee=hingex +jointlshin=hingex +jointlankle=hingex +jointloutertoe=hingez +jointlinnertoe=hingez +jointlthigh=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.673250 0.000000 0.000000 +jointrshin=0.216288 0.000000 0.000000 +jointrankle=-0.904726 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.347085 +jointroutertoe=0.000000 0.000000 0.218578 +jointrthigh=0.254403 0.000000 0.000000 +jointlknee=0.610097 0.000000 0.000000 +jointlshin=0.304455 0.000000 0.000000 +jointlankle=0.179909 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 0.000000 +jointlinnertoe=0.000000 0.000000 0.000000 +jointlthigh=-1.093431 0.000000 0.000000 +[frame2] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.442989 0.000000 0.000000 +jointrshin=-0.422713 0.000000 0.000000 +jointrankle=0.141337 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.419133 +jointroutertoe=0.000000 0.000000 0.446020 +jointrthigh=0.767695 0.000000 0.000000 +jointlknee=0.514471 0.000000 0.000000 +jointlshin=-0.090830 0.000000 0.000000 +jointlankle=0.357293 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 0.000000 +jointlinnertoe=0.000000 0.000000 0.000000 +jointlthigh=-0.781461 0.000000 0.000000 +[frame3] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.177198 0.000000 0.000000 +jointrshin=-0.699402 0.000000 0.000000 +jointrankle=1.187400 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.491181 +jointroutertoe=0.000000 0.000000 0.673461 +jointrthigh=0.988642 0.000000 0.000000 +jointlknee=0.501784 0.000000 0.000000 +jointlshin=-0.359536 0.000000 0.000000 +jointlankle=0.428077 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 0.000000 +jointlinnertoe=0.000000 0.000000 0.000000 +jointlthigh=-0.570639 0.000000 0.000000 +[frame4] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=-0.137427 0.000000 0.000000 +jointrshin=-0.809833 0.000000 0.000000 +jointrankle=2.275491 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.563230 +jointroutertoe=0.000000 0.000000 0.900904 +jointrthigh=1.031263 0.000000 0.000000 +jointlknee=0.498094 0.000000 0.000000 +jointlshin=-0.596620 0.000000 0.000000 +jointlankle=0.454452 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 0.000000 +jointlinnertoe=0.000000 0.000000 0.000000 +jointlthigh=-0.357449 0.000000 0.000000 +[frame5] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=-0.492061 0.000000 0.000000 +jointrshin=-0.795673 0.000000 0.000000 +jointrankle=2.121622 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.375487 +jointroutertoe=0.000000 0.000000 0.600603 +jointrthigh=1.198512 0.000000 0.000000 +jointlknee=0.546555 0.000000 0.000000 +jointlshin=-0.744352 0.000000 0.000000 +jointlankle=0.390400 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 0.000000 +jointlinnertoe=0.000000 0.000000 0.000000 +jointlthigh=-0.195095 0.000000 0.000000 +[frame6] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=-0.846694 0.000000 0.000000 +jointrshin=-0.781511 0.000000 0.000000 +jointrankle=1.967736 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 -0.187743 +jointroutertoe=0.000000 0.000000 0.300301 +jointrthigh=1.365760 0.000000 0.000000 +jointlknee=0.618196 0.000000 0.000000 +jointlshin=-0.825007 0.000000 0.000000 +jointlankle=0.263053 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 0.000000 +jointlinnertoe=0.000000 0.000000 0.000000 +jointlthigh=-0.055534 0.000000 0.000000 +[frame7] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=-1.201328 0.000000 0.000000 +jointrshin=-0.767351 0.000000 0.000000 +jointrankle=1.813868 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 0.000000 +jointroutertoe=0.000000 0.000000 0.000000 +jointrthigh=1.533010 0.000000 0.000000 +jointlknee=0.727640 0.000000 0.000000 +jointlshin=-0.848654 0.000000 0.000000 +jointlankle=0.082760 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 0.000000 +jointlinnertoe=0.000000 0.000000 0.000000 +jointlthigh=0.039873 0.000000 0.000000 +[frame8] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=-1.014535 0.000000 0.000000 +jointrshin=-0.573295 0.000000 0.000000 +jointrankle=1.683136 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 0.148281 +jointroutertoe=0.000000 0.000000 -0.096881 +jointrthigh=0.919490 0.000000 0.000000 +jointlknee=0.814807 0.000000 0.000000 +jointlshin=-0.695399 0.000000 0.000000 +jointlankle=-0.201210 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.000781 +jointlinnertoe=0.000000 0.000000 0.004003 +jointlthigh=0.084082 0.000000 0.000000 +[frame9] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=-0.827742 0.000000 0.000000 +jointrshin=-0.379237 0.000000 0.000000 +jointrankle=1.552404 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 0.296561 +jointroutertoe=0.000000 0.000000 -0.193763 +jointrthigh=0.305972 0.000000 0.000000 +jointlknee=0.940605 0.000000 0.000000 +jointlshin=-0.449366 0.000000 0.000000 +jointlankle=-0.532093 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.001562 +jointlinnertoe=0.000000 0.000000 0.008005 +jointlthigh=0.045047 0.000000 0.000000 +[frame10] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=-0.108822 0.000000 0.000000 +jointrshin=-0.037391 0.000000 0.000000 +jointrankle=0.866156 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 0.148281 +jointroutertoe=0.000000 0.000000 -0.096881 +jointrthigh=-0.393729 0.000000 0.000000 +jointlknee=0.780019 0.000000 0.000000 +jointlshin=-0.092999 0.000000 0.000000 +jointlankle=-0.789852 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.033528 +jointlinnertoe=0.000000 0.000000 0.108159 +jointlthigh=0.164321 0.000000 0.000000 +[frame11] +jointlocal=0.000000 0.000000 0.000000 +jointrknee=0.610097 0.000000 0.000000 +jointrshin=0.304455 0.000000 0.000000 +jointrankle=0.179909 0.000000 0.000000 +jointrinnertoe=0.000000 0.000000 0.000000 +jointroutertoe=0.000000 0.000000 0.000000 +jointrthigh=-1.093431 0.000000 0.000000 +jointlknee=0.673250 0.000000 0.000000 +jointlshin=0.216288 0.000000 0.000000 +jointlankle=-0.907308 0.000000 0.000000 +jointloutertoe=0.000000 0.000000 -0.206003 +jointlinnertoe=0.000000 0.000000 0.206155 +jointlthigh=0.254403 0.000000 0.000000 + +[RootTranslation] +frame1=0.004311 -5.355000 0.000000 +frame2=0.004643 -5.355000 17.252254 +frame3=0.004974 -5.355000 17.252239 +frame4=0.005310 -5.355000 19.018194 +frame5=0.005638 -5.355000 18.906309 +frame6=0.005967 -5.355000 18.906300 +frame7=0.006295 -5.355000 18.906300 +frame8=0.006627 -5.355000 18.906300 +frame9=0.006958 -5.355000 18.905991 +frame10=0.003479 -5.355000 18.396908 +frame11=0.000000 -5.355000 18.396894 + +[KeyJointPos] +frame1=0.000000 -0.271849 0.000000 +frame2=0.000000 -0.304029 0.000000 +frame3=0.000000 -0.336209 0.000000 +frame4=0.000000 -0.431760 0.000000 +frame5=0.000000 -0.486398 0.000000 +frame6=0.000000 -0.541032 0.000000 +frame7=0.000000 -0.595669 0.000000 +frame8=0.000000 -0.505719 0.000000 +frame9=0.000000 -0.415769 0.000000 +frame10=0.000000 -0.343809 0.000000 +frame11=0.000000 -0.271849 0.000000 diff --git a/CONTENT/BT/ANIMS/THR4JERR.ANI b/CONTENT/BT/ANIMS/THR4JERR.ANI new file mode 100644 index 0000000..e69de29 diff --git a/CONTENT/BT/ANIMS/THRBBL.ANI b/CONTENT/BT/ANIMS/THRBBL.ANI new file mode 100644 index 0000000..5112127 --- /dev/null +++ b/CONTENT/BT/ANIMS/THRBBL.ANI @@ -0,0 +1,142 @@ +[LAB_ONLY] + +[HEADER] +framecount=10 +framerate=30 +skeletonfile=thr.skl +jointcount=7 + +[Time] +frame1=0 +frame3=0.0666667 +frame5=0.133333 +frame6=0.166667 +frame7=0.2 +frame8=0.233333 +frame9=0.266667 +frame10=0.3 +frame12=0.366667 +frame14=0.433333 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate + +[frame1] +jointlthigh=0.395614 0.000000 0.000000 +jointlknee=-0.220767 0.000000 0.000000 +jointlankle=0.133954 0.000000 0.000000 +jointrthigh=-0.489790 0.000000 0.000000 +jointrknee=-0.478915 0.000000 0.000000 +jointrankle=0.634445 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame3] +jointlthigh=0.345866 0.000000 0.000000 +jointlknee=-0.737504 0.000000 0.000000 +jointlankle=0.377070 0.000000 0.000000 +jointrthigh=-0.317817 0.000000 0.000000 +jointrknee=-0.523450 0.000000 0.000000 +jointrankle=0.671760 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.006545 +[frame5] +jointlthigh=0.296118 0.000000 0.000000 +jointlknee=-1.254241 0.000000 0.000000 +jointlankle=0.620185 0.000000 0.000000 +jointrthigh=-0.215133 0.000000 0.000000 +jointrknee=-0.377098 0.000000 0.000000 +jointrankle=0.587595 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.013090 +[frame6] +jointlthigh=0.224179 0.000000 0.000000 +jointlknee=-1.241145 0.000000 0.000000 +jointlankle=0.444215 0.000000 0.000000 +jointrthigh=-0.100413 0.000000 0.000000 +jointrknee=-0.460735 0.000000 0.000000 +jointrankle=0.557659 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.013963 +[frame7] +jointlthigh=0.152239 0.000000 0.000000 +jointlknee=-1.228050 0.000000 0.000000 +jointlankle=0.268245 0.000000 0.000000 +jointrthigh=0.005775 0.000000 0.000000 +jointrknee=-0.516169 0.000000 0.000000 +jointrankle=0.508165 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.014835 +[frame8] +jointlthigh=0.080300 0.000000 0.000000 +jointlknee=-1.214954 0.000000 0.000000 +jointlankle=0.092274 0.000000 0.000000 +jointrthigh=0.112345 0.000000 0.000000 +jointrknee=-0.524709 0.000000 0.000000 +jointrankle=0.411561 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.015708 +[frame9] +jointlthigh=0.008361 0.000000 0.000000 +jointlknee=-1.201858 0.000000 0.000000 +jointlankle=-0.083696 0.000000 0.000000 +jointrthigh=0.182575 0.000000 0.000000 +jointrknee=-0.464924 0.000000 0.000000 +jointrankle=0.283045 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.016581 +[frame10] +jointlthigh=-0.063579 0.000000 0.000000 +jointlknee=-1.188763 0.000000 0.000000 +jointlankle=-0.259667 0.000000 0.000000 +jointrthigh=0.204991 0.000000 0.000000 +jointrknee=-0.351806 0.000000 0.000000 +jointrankle=0.147143 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.017453 +[frame12] +jointlthigh=-0.277734 0.000000 0.000000 +jointlknee=-0.830676 0.000000 0.000000 +jointlankle=0.185311 0.000000 0.000000 +jointrthigh=0.330862 0.000000 0.000000 +jointrknee=-0.368280 0.000000 0.000000 +jointrankle=0.192704 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.008727 +[frame14] +jointlthigh=-0.491890 0.000000 0.000000 +jointlknee=-0.472590 0.000000 0.000000 +jointlankle=0.630289 0.000000 0.000000 +jointrthigh=0.395614 0.000000 0.000000 +jointrknee=-0.220767 0.000000 0.000000 +jointrankle=0.133954 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame3=0.000000 -5.350000 -14.646977 +frame5=0.000000 -5.350000 -14.646971 +frame6=0.000000 -5.350000 -13.574525 +frame7=0.000000 -5.350000 -13.574511 +frame8=0.000000 -5.350000 -13.574525 +frame9=0.000000 -5.350000 -13.574518 +frame10=0.000000 -5.350000 -13.574511 +frame12=0.000000 -5.350000 -11.933628 +frame14=0.000000 -5.350000 -11.933628 + +[KeyJointPos] +frame1=0.000000 -0.273189 0.000000 +frame3=0.039499 -0.173977 0.000000 +frame5=0.080296 -0.075032 0.000000 +frame6=0.085441 -0.090006 0.000000 +frame7=0.090559 -0.104985 0.000000 +frame8=0.095652 -0.119969 0.000000 +frame9=0.100718 -0.134957 0.000000 +frame10=0.105758 -0.149948 0.000000 +frame12=0.052339 -0.211379 0.000000 +frame14=0.000000 -0.273276 0.000000 diff --git a/CONTENT/BT/ANIMS/THRBBLI.ANI b/CONTENT/BT/ANIMS/THRBBLI.ANI new file mode 100644 index 0000000..48762d0 --- /dev/null +++ b/CONTENT/BT/ANIMS/THRBBLI.ANI @@ -0,0 +1,82 @@ +[LAB_ONLY] + +[HEADER] +framecount=4 +framerate=30 +skeletonfile=thr.skl +jointcount=8 + +[Time] +frame1=0 +frame5=0.133333 +frame10=0.3 +frame14=0.433333 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=0.395614 0.000000 0.000000 +jointlknee=-0.220767 0.000000 0.000000 +jointlankle=0.133954 0.000000 0.000000 +jointrthigh=-0.489790 0.000000 0.000000 +jointrknee=-0.478915 0.000000 0.000000 +jointrankle=0.634445 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame5] +jointlthigh=0.296118 0.000000 0.000000 +jointlknee=-1.254241 0.000000 0.000000 +jointlankle=0.620185 0.000000 0.000000 +jointrthigh=-0.215133 0.000000 0.000000 +jointrknee=-0.377098 0.000000 0.000000 +jointrankle=0.587595 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.009163 +jointshakey=0.000000 0.000000 -0.009163 +[frame10] +jointlthigh=-0.098360 0.000000 0.000000 +jointlknee=-1.177303 0.000000 0.000000 +jointlankle=-0.232991 0.000000 0.000000 +jointrthigh=0.198357 0.000000 0.000000 +jointrknee=-0.335459 0.000000 0.000000 +jointrankle=0.133389 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.011345 +jointshakey=0.000000 0.000000 -0.011345 +[frame14] +jointlthigh=-0.491890 0.000000 0.000000 +jointlknee=-0.472590 0.000000 0.000000 +jointlankle=0.630289 0.000000 0.000000 +jointrthigh=0.395614 0.000000 0.000000 +jointrknee=-0.220767 0.000000 0.000000 +jointrankle=0.133954 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame5=0.000000 -5.350000 -14.646974 +frame10=0.000000 -5.350000 -13.574518 +frame14=0.000000 -5.350000 -11.933628 + +[KeyJointPos] +frame1=0.000000 -0.273189 0.000000 +frame5=0.000000 -0.074506 0.000000 +frame10=0.000000 -0.149024 0.000000 +frame14=0.000000 -0.273276 0.000000 diff --git a/CONTENT/BT/ANIMS/THRBBR.ANI b/CONTENT/BT/ANIMS/THRBBR.ANI new file mode 100644 index 0000000..cf65cdd --- /dev/null +++ b/CONTENT/BT/ANIMS/THRBBR.ANI @@ -0,0 +1,142 @@ +[LAB_ONLY] + +[HEADER] +framecount=10 +framerate=30 +skeletonfile=thr.skl +jointcount=7 + +[Time] +frame1=0 +frame3=0.0666667 +frame5=0.133333 +frame6=0.166667 +frame7=0.2 +frame8=0.233333 +frame9=0.266667 +frame10=0.3 +frame12=0.366667 +frame14=0.433333 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate + +[frame1] +jointlthigh=-0.488771 0.000000 0.000000 +jointlknee=-0.480292 0.000000 0.000000 +jointlankle=0.634804 0.000000 0.000000 +jointrthigh=0.395614 0.000000 0.000000 +jointrknee=-0.220767 0.000000 0.000000 +jointrankle=0.133954 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame3] +jointlthigh=-0.322532 0.000000 0.000000 +jointlknee=-0.507774 0.000000 0.000000 +jointlankle=0.660845 0.000000 0.000000 +jointrthigh=0.345866 0.000000 0.000000 +jointrknee=-0.737504 0.000000 0.000000 +jointrankle=0.377070 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.006545 +[frame5] +jointlthigh=-0.232567 0.000000 0.000000 +jointlknee=-0.328183 0.000000 0.000000 +jointlankle=0.556160 0.000000 0.000000 +jointrthigh=0.296118 0.000000 0.000000 +jointrknee=-1.254241 0.000000 0.000000 +jointrankle=0.620185 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.013090 +[frame6] +jointlthigh=-0.109046 0.000000 0.000000 +jointlknee=-0.421174 0.000000 0.000000 +jointlankle=0.526245 0.000000 0.000000 +jointrthigh=0.225096 0.000000 0.000000 +jointrknee=-1.243241 0.000000 0.000000 +jointrankle=0.446081 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.013963 +[frame7] +jointlthigh=0.001346 0.000000 0.000000 +jointlknee=-0.473082 0.000000 0.000000 +jointlankle=0.468445 0.000000 0.000000 +jointrthigh=0.154074 0.000000 0.000000 +jointrknee=-1.232242 0.000000 0.000000 +jointrankle=0.271977 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.014835 +[frame8] +jointlthigh=0.097983 0.000000 0.000000 +jointlknee=-0.485599 0.000000 0.000000 +jointlankle=0.385177 0.000000 0.000000 +jointrthigh=0.083053 0.000000 0.000000 +jointrknee=-1.221242 0.000000 0.000000 +jointrankle=0.097874 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.015708 +[frame9] +jointlthigh=0.169414 0.000000 0.000000 +jointlknee=-0.430318 0.000000 0.000000 +jointlankle=0.259440 0.000000 0.000000 +jointrthigh=0.012031 0.000000 0.000000 +jointrknee=-1.210243 0.000000 0.000000 +jointrankle=-0.076230 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.016581 +[frame10] +jointlthigh=0.180488 0.000000 0.000000 +jointlknee=-0.218513 0.000000 0.000000 +jointlankle=0.037012 0.000000 0.000000 +jointrthigh=-0.058991 0.000000 0.000000 +jointrknee=-1.199244 0.000000 0.000000 +jointrankle=-0.250334 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.017453 +[frame12] +jointlthigh=0.313178 0.000000 0.000000 +jointlknee=-0.320500 0.000000 0.000000 +jointlankle=0.161146 0.000000 0.000000 +jointrthigh=-0.274390 0.000000 0.000000 +jointrknee=-0.839079 0.000000 0.000000 +jointrankle=0.192055 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.008727 +[frame14] +jointlthigh=0.395614 0.000000 0.000000 +jointlknee=-0.220767 0.000000 0.000000 +jointlankle=0.133954 0.000000 0.000000 +jointrthigh=-0.489790 0.000000 0.000000 +jointrknee=-0.478915 0.000000 0.000000 +jointrankle=0.634445 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame3=0.000000 -5.350000 -14.550003 +frame5=0.000000 -5.350000 -14.550003 +frame6=0.000000 -5.350000 -13.577987 +frame7=0.000000 -5.350000 -13.577987 +frame8=0.000000 -5.350000 -13.578015 +frame9=0.000000 -5.350000 -13.577980 +frame10=0.000000 -5.350000 -13.578015 +frame12=0.000000 -5.350000 -11.872130 +frame14=0.000000 -5.350000 -11.872130 + +[KeyJointPos] +frame1=0.000000 -0.273189 0.000000 +frame3=-0.039499 -0.173977 0.000000 +frame5=-0.080296 -0.075032 0.000000 +frame6=-0.085441 -0.090004 0.000000 +frame7=-0.090559 -0.104980 0.000000 +frame8=-0.095652 -0.119961 0.000000 +frame9=-0.100718 -0.134946 0.000000 +frame10=-0.105759 -0.149935 0.000000 +frame12=-0.052339 -0.211329 0.000000 +frame14=0.000000 -0.273189 0.000000 diff --git a/CONTENT/BT/ANIMS/THRBBRI.ANI b/CONTENT/BT/ANIMS/THRBBRI.ANI new file mode 100644 index 0000000..d2b4843 --- /dev/null +++ b/CONTENT/BT/ANIMS/THRBBRI.ANI @@ -0,0 +1,82 @@ +[LAB_ONLY] + +[HEADER] +framecount=4 +framerate=30 +skeletonfile=thr.skl +jointcount=8 + +[Time] +frame1=0 +frame5=0.133333 +frame10=0.3 +frame14=0.433333 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=-0.488771 0.000000 0.000000 +jointlknee=-0.480292 0.000000 0.000000 +jointlankle=0.634804 0.000000 0.000000 +jointrthigh=0.395614 0.000000 0.000000 +jointrknee=-0.220767 0.000000 0.000000 +jointrankle=0.133954 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame5] +jointlthigh=-0.232567 0.000000 0.000000 +jointlknee=-0.328183 0.000000 0.000000 +jointlankle=0.556160 0.000000 0.000000 +jointrthigh=0.296118 0.000000 0.000000 +jointrknee=-1.254241 0.000000 0.000000 +jointrankle=0.620185 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.009163 +jointshakey=0.000000 0.000000 0.009163 +[frame10] +jointlthigh=0.180383 0.000000 0.000000 +jointlknee=-0.288658 0.000000 0.000000 +jointlankle=0.110245 0.000000 0.000000 +jointrthigh=-0.097648 0.000000 0.000000 +jointrknee=-1.171596 0.000000 0.000000 +jointrankle=-0.239320 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.011345 +jointshakey=0.000000 0.000000 0.011345 +[frame14] +jointlthigh=0.395614 0.000000 0.000000 +jointlknee=-0.220767 0.000000 0.000000 +jointlankle=0.133954 0.000000 0.000000 +jointrthigh=-0.489790 0.000000 0.000000 +jointrknee=-0.478915 0.000000 0.000000 +jointrankle=0.634445 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame5=0.000000 -5.350000 -14.550003 +frame10=0.000000 -5.350000 -13.577997 +frame14=0.000000 -5.350000 -11.872130 + +[KeyJointPos] +frame1=0.000000 -0.273189 0.000000 +frame5=0.000000 -0.074506 0.000000 +frame10=0.000000 -0.149012 0.000000 +frame14=0.000000 -0.273189 0.000000 diff --git a/CONTENT/BT/ANIMS/THRBMP.ANI b/CONTENT/BT/ANIMS/THRBMP.ANI new file mode 100644 index 0000000..60e93c6 --- /dev/null +++ b/CONTENT/BT/ANIMS/THRBMP.ANI @@ -0,0 +1,80 @@ +[LAB_ONLY] + +[HEADER] +framecount=3 +framerate=30 +skeletonfile=thr.skl +jointcount=10 + +[Time] +frame1=0 +frame8=0.233333 +frame15=0.466667 + +[JointIndices] +jointhip=1 +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointrshoulder=4 +jointlshoulder=6 +jointlocal=0 + +[JointType] +jointhip=hingex +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointrshoulder=hingex +jointlshoulder=hingex +jointlocal=balltranslate + +[frame1] +jointhip=-0.208689 0.000000 0.000000 +jointlthigh=0.668932 0.000000 0.000000 +jointlknee=-0.021625 0.000000 0.000000 +jointlankle=0.154636 0.000000 0.000000 +jointrthigh=-0.924082 0.000000 0.000000 +jointrknee=-0.950576 0.000000 0.000000 +jointrankle=-0.043616 0.000000 0.000000 +jointrshoulder=0.208689 0.000000 0.000000 +jointlshoulder=0.208689 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame8] +jointhip=0.349066 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointrshoulder=0.000000 0.000000 0.000000 +jointlshoulder=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame15] +jointhip=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointrshoulder=0.000000 0.000000 0.000000 +jointlshoulder=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame8=0.000000 -5.350000 0.000000 +frame15=0.000000 -5.350000 0.000000 + +[KeyJointPos] +frame1=0.000000 0.248415 0.000000 +frame8=0.000000 0.000000 0.000000 +frame15=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/THRBMPI.ANI b/CONTENT/BT/ANIMS/THRBMPI.ANI new file mode 100644 index 0000000..60e93c6 --- /dev/null +++ b/CONTENT/BT/ANIMS/THRBMPI.ANI @@ -0,0 +1,80 @@ +[LAB_ONLY] + +[HEADER] +framecount=3 +framerate=30 +skeletonfile=thr.skl +jointcount=10 + +[Time] +frame1=0 +frame8=0.233333 +frame15=0.466667 + +[JointIndices] +jointhip=1 +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointrshoulder=4 +jointlshoulder=6 +jointlocal=0 + +[JointType] +jointhip=hingex +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointrshoulder=hingex +jointlshoulder=hingex +jointlocal=balltranslate + +[frame1] +jointhip=-0.208689 0.000000 0.000000 +jointlthigh=0.668932 0.000000 0.000000 +jointlknee=-0.021625 0.000000 0.000000 +jointlankle=0.154636 0.000000 0.000000 +jointrthigh=-0.924082 0.000000 0.000000 +jointrknee=-0.950576 0.000000 0.000000 +jointrankle=-0.043616 0.000000 0.000000 +jointrshoulder=0.208689 0.000000 0.000000 +jointlshoulder=0.208689 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame8] +jointhip=0.349066 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointrshoulder=0.000000 0.000000 0.000000 +jointlshoulder=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame15] +jointhip=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointrshoulder=0.000000 0.000000 0.000000 +jointlshoulder=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame8=0.000000 -5.350000 0.000000 +frame15=0.000000 -5.350000 0.000000 + +[KeyJointPos] +frame1=0.000000 0.248415 0.000000 +frame8=0.000000 0.000000 0.000000 +frame15=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/THRBSLI.ANI b/CONTENT/BT/ANIMS/THRBSLI.ANI new file mode 100644 index 0000000..9a5affc --- /dev/null +++ b/CONTENT/BT/ANIMS/THRBSLI.ANI @@ -0,0 +1,82 @@ +[LAB_ONLY] + +[HEADER] +framecount=4 +framerate=30 +skeletonfile=thr.skl +jointcount=8 + +[Time] +frame1=0 +frame15=0.466667 +frame26=0.833333 +frame35=1.13333 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=0.412577 0.000000 0.000000 +jointlknee=-0.267172 0.000000 0.000000 +jointlankle=0.163489 0.000000 0.000000 +jointrthigh=-0.491544 0.000000 0.000000 +jointrknee=-0.473590 0.000000 0.000000 +jointrankle=0.630928 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame15] +jointlthigh=0.356075 0.000000 0.000000 +jointlknee=-0.458147 0.000000 0.000000 +jointlankle=0.299338 0.000000 0.000000 +jointrthigh=-0.318334 0.000000 0.000000 +jointrknee=-0.226909 0.000000 0.000000 +jointrankle=0.543921 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.009163 +jointshakey=0.000000 0.000000 -0.009163 +[frame26] +jointlthigh=0.163888 0.000000 0.000000 +jointlknee=-0.226755 0.000000 0.000000 +jointlankle=0.113602 0.000000 0.000000 +jointrthigh=-0.105608 0.000000 0.000000 +jointrknee=-0.163046 0.000000 0.000000 +jointrankle=0.270057 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.004573 +jointshakey=0.000000 0.000000 -0.004573 +[frame35] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame15=0.000000 -5.350000 -3.622714 +frame26=0.000000 -5.350000 -3.426955 +frame35=0.000000 -5.350000 -2.954667 + +[KeyJointPos] +frame1=0.000000 -0.273276 0.000000 +frame15=0.000000 -0.074506 0.000000 +frame26=0.000000 -0.030821 0.000000 +frame35=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/THRBSRI.ANI b/CONTENT/BT/ANIMS/THRBSRI.ANI new file mode 100644 index 0000000..06037f3 --- /dev/null +++ b/CONTENT/BT/ANIMS/THRBSRI.ANI @@ -0,0 +1,82 @@ +[LAB_ONLY] + +[HEADER] +framecount=4 +framerate=30 +skeletonfile=thr.skl +jointcount=8 + +[Time] +frame1=0 +frame15=0.466667 +frame26=0.833333 +frame35=1.13333 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=-0.491890 0.000000 0.000000 +jointlknee=-0.472590 0.000000 0.000000 +jointlankle=0.630289 0.000000 0.000000 +jointrthigh=0.395614 0.000000 0.000000 +jointrknee=-0.220767 0.000000 0.000000 +jointrankle=0.133954 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame15] +jointlthigh=-0.291309 0.000000 0.000000 +jointlknee=-0.226886 0.000000 0.000000 +jointlankle=0.543906 0.000000 0.000000 +jointrthigh=0.356066 0.000000 0.000000 +jointrknee=-0.458126 0.000000 0.000000 +jointrankle=0.299324 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.009163 +jointshakey=0.000000 0.000000 0.009163 +[frame26] +jointlthigh=-0.123992 0.000000 0.000000 +jointlknee=-0.329948 0.000000 0.000000 +jointlankle=0.357515 0.000000 0.000000 +jointrthigh=0.163888 0.000000 0.000000 +jointrknee=-0.226755 0.000000 0.000000 +jointrankle=0.113602 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.004573 +jointshakey=0.000000 0.000000 0.004573 +[frame35] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame15=0.000000 -5.350000 -3.622714 +frame26=0.000000 -5.350000 -3.426955 +frame35=0.000000 -5.350000 -2.954667 + +[KeyJointPos] +frame1=0.000000 -0.273276 0.000000 +frame15=0.000000 -0.074506 0.000000 +frame26=0.000000 -0.030821 0.000000 +frame35=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/THRCLI.ANI b/CONTENT/BT/ANIMS/THRCLI.ANI new file mode 100644 index 0000000..e69de29 diff --git a/CONTENT/BT/ANIMS/THRCLS.ANI b/CONTENT/BT/ANIMS/THRCLS.ANI new file mode 100644 index 0000000..b311f59 --- /dev/null +++ b/CONTENT/BT/ANIMS/THRCLS.ANI @@ -0,0 +1,148 @@ +[LAB_ONLY] + +[HEADER] +framecount=21 +framerate=30 +skeletonfile=thr.skl +jointcount=2 + +[Time] +frame1=0 +frame2=0.0333333 +frame3=0.0666667 +frame4=0.1 +frame5=0.133333 +frame6=0.166667 +frame7=0.2 +frame8=0.233333 +frame9=0.266667 +frame10=0.3 +frame20=0.633333 +frame21=0.666667 +frame22=0.7 +frame23=0.733333 +frame24=0.766667 +frame25=0.8 +frame26=0.833333 +frame27=0.866667 +frame28=0.9 +frame29=0.933333 +frame30=0.966667 + +[JointIndices] +jointlocal=0 +jointmissledoor=9 + +[JointType] +jointlocal=balltranslate +jointmissledoor=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointmissledoor=3.141593 0.000000 0.000000 +[frame2] +jointlocal=0.000000 0.000000 0.000000 +jointmissledoor=3.122621 0.000000 0.000000 +[frame3] +jointlocal=0.000000 0.000000 0.000000 +jointmissledoor=3.081484 0.000000 0.000000 +[frame4] +jointlocal=0.000000 0.000000 0.000000 +jointmissledoor=3.020222 0.000000 0.000000 +[frame5] +jointlocal=0.000000 0.000000 0.000000 +jointmissledoor=2.940723 0.000000 0.000000 +[frame6] +jointlocal=0.000000 0.000000 0.000000 +jointmissledoor=2.844677 0.000000 0.000000 +[frame7] +jointlocal=0.000000 0.000000 0.000000 +jointmissledoor=2.732610 0.000000 0.000000 +[frame8] +jointlocal=0.000000 0.000000 0.000000 +jointmissledoor=2.605410 0.000000 0.000000 +[frame9] +jointlocal=0.000000 0.000000 0.000000 +jointmissledoor=2.464195 0.000000 0.000000 +[frame10] +jointlocal=0.000000 0.000000 0.000000 +jointmissledoor=2.310519 0.000000 0.000000 +[frame20] +jointlocal=0.000000 0.000000 0.000000 +jointmissledoor=0.725601 0.000000 0.000000 +[frame21] +jointlocal=0.000000 0.000000 0.000000 +jointmissledoor=0.598655 0.000000 0.000000 +[frame22] +jointlocal=0.000000 0.000000 0.000000 +jointmissledoor=0.481432 0.000000 0.000000 +[frame23] +jointlocal=0.000000 0.000000 0.000000 +jointmissledoor=0.374933 0.000000 0.000000 +[frame24] +jointlocal=0.000000 0.000000 0.000000 +jointmissledoor=0.280125 0.000000 0.000000 +[frame25] +jointlocal=0.000000 0.000000 0.000000 +jointmissledoor=0.197917 0.000000 0.000000 +[frame26] +jointlocal=0.000000 0.000000 0.000000 +jointmissledoor=0.129126 0.000000 0.000000 +[frame27] +jointlocal=0.000000 0.000000 0.000000 +jointmissledoor=0.074485 0.000000 0.000000 +[frame28] +jointlocal=0.000000 0.000000 0.000000 +jointmissledoor=0.034518 0.000000 0.000000 +[frame29] +jointlocal=0.000000 0.000000 0.000000 +jointmissledoor=0.009613 0.000000 0.000000 +[frame30] +jointlocal=0.000000 0.000000 0.000000 +jointmissledoor=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame2=0.000000 -5.349999 0.000000 +frame3=0.000000 -5.349999 0.000000 +frame4=0.000000 -5.350000 0.000029 +frame5=0.000000 -5.349999 -0.000029 +frame6=0.000000 -5.349999 0.000000 +frame7=0.000000 -5.349999 -0.000029 +frame8=0.000000 -5.349999 0.000000 +frame9=0.000000 -5.349999 0.000000 +frame10=0.000000 -5.349999 0.000000 +frame20=0.000000 -5.349999 0.000000 +frame21=0.000000 -5.349999 0.000000 +frame22=0.000000 -5.349999 0.000000 +frame23=0.000000 -5.349999 0.000000 +frame24=0.000000 -5.349999 0.000000 +frame25=0.000000 -5.349999 0.000000 +frame26=0.000000 -5.350000 0.000029 +frame27=0.000000 -5.350000 0.000000 +frame28=0.000000 -5.349999 -0.000029 +frame29=0.000000 -5.349999 0.000000 +frame30=0.000000 -5.350000 0.000029 + +[KeyJointPos] +frame1=0.000000 0.000000 0.000000 +frame2=0.000000 0.000000 0.000000 +frame3=0.000000 0.000000 0.000000 +frame4=0.000000 0.000000 0.000000 +frame5=0.000000 0.000000 0.000000 +frame6=0.000000 0.000000 0.000000 +frame7=0.000000 0.000000 0.000000 +frame8=0.000000 0.000000 0.000000 +frame9=0.000000 0.000000 0.000000 +frame10=0.000000 0.000000 0.000000 +frame20=0.000000 0.000000 0.000000 +frame21=0.000000 0.000000 0.000000 +frame22=0.000000 0.000000 0.000000 +frame23=0.000000 0.000000 0.000000 +frame24=0.000000 0.000000 0.000000 +frame25=0.000000 0.000000 0.000000 +frame26=0.000000 0.000000 0.000000 +frame27=0.000000 0.000000 0.000000 +frame28=0.000000 0.000000 0.000000 +frame29=0.000000 0.000000 0.000000 +frame30=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/THRGGL.ANI b/CONTENT/BT/ANIMS/THRGGL.ANI new file mode 100644 index 0000000..81c5b57 --- /dev/null +++ b/CONTENT/BT/ANIMS/THRGGL.ANI @@ -0,0 +1,142 @@ +[LAB_ONLY] + +[HEADER] +framecount=10 +framerate=30 +skeletonfile=thr.skl +jointcount=7 + +[Time] +frame1=0 +frame4=0.1 +frame6=0.166667 +frame8=0.233333 +frame9=0.266667 +frame10=0.3 +frame11=0.333333 +frame13=0.4 +frame17=0.533333 +frame20=0.633333 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate + +[frame1] +jointlthigh=-0.056411 0.000000 0.000000 +jointlknee=-0.233080 0.000000 0.000000 +jointlankle=0.287536 0.000000 0.000000 +jointrthigh=-0.049463 0.000000 0.000000 +jointrknee=-0.814273 0.000000 0.000000 +jointrankle=-0.499957 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.026180 +[frame4] +jointlthigh=0.219437 0.000000 0.000000 +jointlknee=-0.745695 0.000000 0.000000 +jointlankle=0.349263 0.000000 0.000000 +jointrthigh=-0.206844 0.000000 0.000000 +jointrknee=-0.536251 0.000000 0.000000 +jointrankle=-0.599763 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.010472 +[frame6] +jointlthigh=0.295355 0.000000 0.000000 +jointlknee=-0.626783 0.000000 0.000000 +jointlankle=0.508165 0.000000 0.000000 +jointrthigh=-0.379766 0.000000 0.000000 +jointrknee=-0.461936 0.000000 0.000000 +jointrankle=-0.457974 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame8] +jointlthigh=0.546616 0.000000 0.000000 +jointlknee=-0.509837 0.000000 0.000000 +jointlankle=0.344439 0.000000 0.000000 +jointrthigh=-0.526442 0.000000 0.000000 +jointrknee=-0.448430 0.000000 0.000000 +jointrankle=-0.435926 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.015513 +[frame9] +jointlthigh=0.508453 0.000000 0.000000 +jointlknee=-0.121196 0.000000 0.000000 +jointlankle=0.212120 0.000000 0.000000 +jointrthigh=-0.599781 0.000000 0.000000 +jointrknee=-0.441676 0.000000 0.000000 +jointrankle=-0.424902 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.023270 +[frame10] +jointlthigh=0.551284 0.000000 0.000000 +jointlknee=-0.371516 0.000000 0.000000 +jointlankle=0.118813 0.000000 0.000000 +jointrthigh=-0.786215 0.000000 0.000000 +jointrknee=-0.160967 0.000000 0.000000 +jointrankle=-0.664480 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.031270 +[frame11] +jointlthigh=0.594115 0.000000 0.000000 +jointlknee=-0.621836 0.000000 0.000000 +jointlankle=0.025506 0.000000 0.000000 +jointrthigh=-0.818299 0.000000 0.000000 +jointrknee=-0.206802 0.000000 0.000000 +jointrankle=-0.645807 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.039270 +[frame13] +jointlthigh=0.497082 0.000000 0.000000 +jointlknee=-0.857665 0.000000 0.000000 +jointlankle=0.360449 0.000000 0.000000 +jointrthigh=-0.637836 0.000000 0.000000 +jointrknee=-0.439298 0.000000 0.000000 +jointrankle=-0.615832 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.038695 +[frame17] +jointlthigh=0.184588 0.000000 0.000000 +jointlknee=-0.702327 0.000000 0.000000 +jointlankle=0.513223 0.000000 0.000000 +jointrthigh=-0.301938 0.000000 0.000000 +jointrknee=-0.673879 0.000000 0.000000 +jointrankle=-0.591792 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.033906 +[frame20] +jointlthigh=-0.028855 0.000000 0.000000 +jointlknee=-0.307846 0.000000 0.000000 +jointlankle=0.334679 0.000000 0.000000 +jointrthigh=-0.049463 0.000000 0.000000 +jointrknee=-0.814273 0.000000 0.000000 +jointrankle=-0.499957 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.026180 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame4=0.000000 -5.350000 3.302994 +frame6=0.000000 -5.350000 9.516019 +frame8=0.000000 -5.350000 13.032018 +frame9=0.000000 -5.350000 13.031955 +frame10=0.000000 -5.355160 22.120516 +frame11=0.000000 -5.360320 22.120459 +frame13=0.000000 -5.350000 13.375512 +frame17=0.000000 -5.350000 8.910740 +frame20=0.000000 -5.350000 3.376008 + +[KeyJointPos] +frame1=-0.165129 0.097180 0.000000 +frame4=-0.068400 0.322626 0.000000 +frame6=0.000000 0.223580 0.000000 +frame8=-0.093185 -0.202556 0.000000 +frame9=-0.134822 -0.416108 0.000000 +frame10=-0.172866 -0.682463 0.000000 +frame11=-0.206658 -0.949037 0.000000 +frame13=-0.210781 -0.764277 0.000000 +frame17=-0.202274 -0.245332 0.000000 +frame20=-0.165129 0.097180 0.000000 diff --git a/CONTENT/BT/ANIMS/THRGGLI.ANI b/CONTENT/BT/ANIMS/THRGGLI.ANI new file mode 100644 index 0000000..d6ea617 --- /dev/null +++ b/CONTENT/BT/ANIMS/THRGGLI.ANI @@ -0,0 +1,154 @@ +[LAB_ONLY] + +[HEADER] +framecount=10 +framerate=30 +skeletonfile=thr.skl +jointcount=8 + +[Time] +frame1=0 +frame4=0.1 +frame6=0.166667 +frame8=0.233333 +frame9=0.266667 +frame10=0.3 +frame11=0.333333 +frame13=0.4 +frame17=0.533333 +frame20=0.633333 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=-0.056411 0.000000 0.000000 +jointlknee=-0.233080 0.000000 0.000000 +jointlankle=0.287536 0.000000 0.000000 +jointrthigh=-0.049463 0.000000 0.000000 +jointrknee=-0.814273 0.000000 0.000000 +jointrankle=-0.499957 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.015708 +jointshakey=0.000000 0.000000 0.015708 +[frame4] +jointlthigh=0.219437 0.000000 0.000000 +jointlknee=-0.745695 0.000000 0.000000 +jointlankle=0.349263 0.000000 0.000000 +jointrthigh=-0.206844 0.000000 0.000000 +jointrknee=-0.536251 0.000000 0.000000 +jointrankle=-0.599763 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.003665 +jointshakey=0.000000 0.000000 0.003665 +[frame6] +jointlthigh=0.295355 0.000000 0.000000 +jointlknee=-0.626783 0.000000 0.000000 +jointlankle=0.508165 0.000000 0.000000 +jointrthigh=-0.379766 0.000000 0.000000 +jointrknee=-0.461936 0.000000 0.000000 +jointrankle=-0.457974 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.004363 +jointshakey=0.000000 0.000000 -0.004363 +[frame8] +jointlthigh=0.546616 0.000000 0.000000 +jointlknee=-0.509837 0.000000 0.000000 +jointlankle=0.344439 0.000000 0.000000 +jointrthigh=-0.526442 0.000000 0.000000 +jointrknee=-0.448430 0.000000 0.000000 +jointrankle=-0.435926 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.004363 +jointshakey=0.000000 0.000000 0.004363 +[frame9] +jointlthigh=0.508453 0.000000 0.000000 +jointlknee=-0.121196 0.000000 0.000000 +jointlankle=0.212120 0.000000 0.000000 +jointrthigh=-0.599781 0.000000 0.000000 +jointrknee=-0.441676 0.000000 0.000000 +jointrankle=-0.424902 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.008727 +jointshakey=0.000000 0.000000 0.008727 +[frame10] +jointlthigh=0.551284 0.000000 0.000000 +jointlknee=-0.371516 0.000000 0.000000 +jointlankle=0.118813 0.000000 0.000000 +jointrthigh=-0.786215 0.000000 0.000000 +jointrknee=-0.160967 0.000000 0.000000 +jointrankle=-0.664480 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.013090 +jointshakey=0.000000 0.000000 0.013090 +[frame11] +jointlthigh=0.594115 0.000000 0.000000 +jointlknee=-0.621836 0.000000 0.000000 +jointlankle=0.025506 0.000000 0.000000 +jointrthigh=-0.818299 0.000000 0.000000 +jointrknee=-0.206802 0.000000 0.000000 +jointrankle=-0.645807 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.017453 +jointshakey=0.000000 0.000000 0.017453 +[frame13] +jointlthigh=0.497082 0.000000 0.000000 +jointlknee=-0.857665 0.000000 0.000000 +jointlankle=0.360449 0.000000 0.000000 +jointrthigh=-0.637836 0.000000 0.000000 +jointrknee=-0.439298 0.000000 0.000000 +jointrankle=-0.615832 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.017065 +jointshakey=0.000000 0.000000 0.017065 +[frame17] +jointlthigh=0.184588 0.000000 0.000000 +jointlknee=-0.702327 0.000000 0.000000 +jointlankle=0.513223 0.000000 0.000000 +jointrthigh=-0.301938 0.000000 0.000000 +jointrknee=-0.673879 0.000000 0.000000 +jointrankle=-0.591792 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.016290 +jointshakey=0.000000 0.000000 0.016290 +[frame20] +jointlthigh=-0.028855 0.000000 0.000000 +jointlknee=-0.307846 0.000000 0.000000 +jointlankle=0.334679 0.000000 0.000000 +jointrthigh=-0.049463 0.000000 0.000000 +jointrknee=-0.814273 0.000000 0.000000 +jointrankle=-0.499957 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.015708 +jointshakey=0.000000 0.000000 0.015708 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame4=0.000000 -5.350000 3.302994 +frame6=0.000000 -5.350000 9.516019 +frame8=0.000000 -5.350000 13.032018 +frame9=0.000000 -5.350000 13.031955 +frame10=0.000000 -5.355160 22.120516 +frame11=0.000000 -5.360320 22.120459 +frame13=0.000000 -5.350000 13.375512 +frame17=0.000000 -5.350000 8.910740 +frame20=0.000000 -5.350000 3.376008 + +[KeyJointPos] +frame1=0.000000 0.099342 0.000000 +frame4=0.000000 0.322984 0.000000 +frame6=0.000000 0.223580 0.000000 +frame8=0.000000 -0.201833 0.000000 +frame9=0.000000 -0.414539 0.000000 +frame10=0.000000 -0.679760 0.000000 +frame11=0.000000 -0.944979 0.000000 +frame13=0.000000 -0.760198 0.000000 +frame17=0.000000 -0.241902 0.000000 +frame20=0.000000 0.099342 0.000000 diff --git a/CONTENT/BT/ANIMS/THRGGR.ANI b/CONTENT/BT/ANIMS/THRGGR.ANI new file mode 100644 index 0000000..7535310 --- /dev/null +++ b/CONTENT/BT/ANIMS/THRGGR.ANI @@ -0,0 +1,142 @@ +[LAB_ONLY] + +[HEADER] +framecount=10 +framerate=30 +skeletonfile=thr.skl +jointcount=7 + +[Time] +frame1=0 +frame4=0.1 +frame6=0.166667 +frame8=0.233333 +frame9=0.266667 +frame10=0.3 +frame11=0.333333 +frame13=0.4 +frame17=0.533333 +frame20=0.633333 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate + +[frame1] +jointlthigh=-0.049463 0.000000 0.000000 +jointlknee=-0.814273 0.000000 0.000000 +jointlankle=-0.499957 0.000000 0.000000 +jointrthigh=-0.056411 0.000000 0.000000 +jointrknee=-0.233080 0.000000 0.000000 +jointrankle=0.287536 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.026180 +[frame4] +jointlthigh=-0.206844 0.000000 0.000000 +jointlknee=-0.536251 0.000000 0.000000 +jointlankle=-0.599763 0.000000 0.000000 +jointrthigh=0.219437 0.000000 0.000000 +jointrknee=-0.745695 0.000000 0.000000 +jointrankle=0.349263 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.010472 +[frame6] +jointlthigh=-0.379766 0.000000 0.000000 +jointlknee=-0.461936 0.000000 0.000000 +jointlankle=-0.457974 0.000000 0.000000 +jointrthigh=0.295355 0.000000 0.000000 +jointrknee=-0.626783 0.000000 0.000000 +jointrankle=0.508165 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame8] +jointlthigh=-0.526442 0.000000 0.000000 +jointlknee=-0.448430 0.000000 0.000000 +jointlankle=-0.435926 0.000000 0.000000 +jointrthigh=0.546616 0.000000 0.000000 +jointrknee=-0.509837 0.000000 0.000000 +jointrankle=0.344439 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.015513 +[frame9] +jointlthigh=-0.599781 0.000000 0.000000 +jointlknee=-0.441676 0.000000 0.000000 +jointlankle=-0.424902 0.000000 0.000000 +jointrthigh=0.508453 0.000000 0.000000 +jointrknee=-0.121196 0.000000 0.000000 +jointrankle=0.212120 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.023270 +[frame10] +jointlthigh=-0.786215 0.000000 0.000000 +jointlknee=-0.160967 0.000000 0.000000 +jointlankle=-0.664480 0.000000 0.000000 +jointrthigh=0.551284 0.000000 0.000000 +jointrknee=-0.371516 0.000000 0.000000 +jointrankle=0.118813 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.031270 +[frame11] +jointlthigh=-0.818299 0.000000 0.000000 +jointlknee=-0.206802 0.000000 0.000000 +jointlankle=-0.645807 0.000000 0.000000 +jointrthigh=0.594115 0.000000 0.000000 +jointrknee=-0.621836 0.000000 0.000000 +jointrankle=0.025506 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.039270 +[frame13] +jointlthigh=-0.637836 0.000000 0.000000 +jointlknee=-0.439298 0.000000 0.000000 +jointlankle=-0.615832 0.000000 0.000000 +jointrthigh=0.497082 0.000000 0.000000 +jointrknee=-0.857665 0.000000 0.000000 +jointrankle=0.360449 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.038695 +[frame17] +jointlthigh=-0.301938 0.000000 0.000000 +jointlknee=-0.673879 0.000000 0.000000 +jointlankle=-0.591792 0.000000 0.000000 +jointrthigh=0.184588 0.000000 0.000000 +jointrknee=-0.702327 0.000000 0.000000 +jointrankle=0.513223 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.033906 +[frame20] +jointlthigh=-0.049463 0.000000 0.000000 +jointlknee=-0.814273 0.000000 0.000000 +jointlankle=-0.499957 0.000000 0.000000 +jointrthigh=-0.028855 0.000000 0.000000 +jointrknee=-0.307846 0.000000 0.000000 +jointrankle=0.334679 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.026180 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame4=0.000000 -5.350000 3.302994 +frame6=0.000000 -5.350000 9.516019 +frame8=0.000000 -5.350000 13.032018 +frame9=0.000000 -5.350000 13.031955 +frame10=0.000000 -5.355160 22.120516 +frame11=0.000000 -5.360320 22.120459 +frame13=0.000000 -5.350000 13.375512 +frame17=0.000000 -5.350000 8.910740 +frame20=0.000000 -5.350000 3.376008 + +[KeyJointPos] +frame1=0.165129 0.097180 0.000000 +frame4=0.068400 0.322626 0.000000 +frame6=0.000000 0.223580 0.000000 +frame8=0.093185 -0.202556 0.000000 +frame9=0.134822 -0.416108 0.000000 +frame10=0.172866 -0.682463 0.000000 +frame11=0.206658 -0.949037 0.000000 +frame13=0.210781 -0.764277 0.000000 +frame17=0.202274 -0.245332 0.000000 +frame20=0.165129 0.097180 0.000000 diff --git a/CONTENT/BT/ANIMS/THRGGRI.ANI b/CONTENT/BT/ANIMS/THRGGRI.ANI new file mode 100644 index 0000000..33866c9 --- /dev/null +++ b/CONTENT/BT/ANIMS/THRGGRI.ANI @@ -0,0 +1,154 @@ +[LAB_ONLY] + +[HEADER] +framecount=10 +framerate=30 +skeletonfile=thr.skl +jointcount=8 + +[Time] +frame1=0 +frame4=0.1 +frame6=0.166667 +frame8=0.233333 +frame9=0.266667 +frame10=0.3 +frame11=0.333333 +frame13=0.4 +frame17=0.533333 +frame20=0.633333 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=-0.049463 0.000000 0.000000 +jointlknee=-0.814273 0.000000 0.000000 +jointlankle=-0.499957 0.000000 0.000000 +jointrthigh=-0.056411 0.000000 0.000000 +jointrknee=-0.233080 0.000000 0.000000 +jointrankle=0.287536 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.015708 +jointshakey=0.000000 0.000000 -0.015708 +[frame4] +jointlthigh=-0.206844 0.000000 0.000000 +jointlknee=-0.536251 0.000000 0.000000 +jointlankle=-0.599763 0.000000 0.000000 +jointrthigh=0.219437 0.000000 0.000000 +jointrknee=-0.745695 0.000000 0.000000 +jointrankle=0.349263 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.003665 +jointshakey=0.000000 0.000000 -0.003665 +[frame6] +jointlthigh=-0.379766 0.000000 0.000000 +jointlknee=-0.461936 0.000000 0.000000 +jointlankle=-0.457974 0.000000 0.000000 +jointrthigh=0.295355 0.000000 0.000000 +jointrknee=-0.626783 0.000000 0.000000 +jointrankle=0.508165 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.004363 +jointshakey=0.000000 0.000000 0.004363 +[frame8] +jointlthigh=-0.526442 0.000000 0.000000 +jointlknee=-0.448430 0.000000 0.000000 +jointlankle=-0.435926 0.000000 0.000000 +jointrthigh=0.546616 0.000000 0.000000 +jointrknee=-0.509837 0.000000 0.000000 +jointrankle=0.344439 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.004363 +jointshakey=0.000000 0.000000 -0.004363 +[frame9] +jointlthigh=-0.599781 0.000000 0.000000 +jointlknee=-0.441676 0.000000 0.000000 +jointlankle=-0.424902 0.000000 0.000000 +jointrthigh=0.508453 0.000000 0.000000 +jointrknee=-0.121196 0.000000 0.000000 +jointrankle=0.212120 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.008727 +jointshakey=0.000000 0.000000 -0.008727 +[frame10] +jointlthigh=-0.786215 0.000000 0.000000 +jointlknee=-0.160967 0.000000 0.000000 +jointlankle=-0.664480 0.000000 0.000000 +jointrthigh=0.551284 0.000000 0.000000 +jointrknee=-0.371516 0.000000 0.000000 +jointrankle=0.118813 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.013090 +jointshakey=0.000000 0.000000 -0.013090 +[frame11] +jointlthigh=-0.818299 0.000000 0.000000 +jointlknee=-0.206802 0.000000 0.000000 +jointlankle=-0.645807 0.000000 0.000000 +jointrthigh=0.594115 0.000000 0.000000 +jointrknee=-0.621836 0.000000 0.000000 +jointrankle=0.025506 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.017453 +jointshakey=0.000000 0.000000 -0.017453 +[frame13] +jointlthigh=-0.637836 0.000000 0.000000 +jointlknee=-0.439298 0.000000 0.000000 +jointlankle=-0.615832 0.000000 0.000000 +jointrthigh=0.497082 0.000000 0.000000 +jointrknee=-0.857665 0.000000 0.000000 +jointrankle=0.360449 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.017065 +jointshakey=0.000000 0.000000 -0.017065 +[frame17] +jointlthigh=-0.301938 0.000000 0.000000 +jointlknee=-0.673879 0.000000 0.000000 +jointlankle=-0.591792 0.000000 0.000000 +jointrthigh=0.184588 0.000000 0.000000 +jointrknee=-0.702327 0.000000 0.000000 +jointrankle=0.513223 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.016290 +jointshakey=0.000000 0.000000 -0.016290 +[frame20] +jointlthigh=-0.049463 0.000000 0.000000 +jointlknee=-0.814273 0.000000 0.000000 +jointlankle=-0.499957 0.000000 0.000000 +jointrthigh=-0.028855 0.000000 0.000000 +jointrknee=-0.307846 0.000000 0.000000 +jointrankle=0.334679 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.015708 +jointshakey=0.000000 0.000000 -0.015708 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame4=0.000000 -5.350000 3.302994 +frame6=0.000000 -5.350000 9.516019 +frame8=0.000000 -5.350000 13.032018 +frame9=0.000000 -5.350000 13.031955 +frame10=0.000000 -5.355160 22.120516 +frame11=0.000000 -5.360320 22.120459 +frame13=0.000000 -5.350000 13.375512 +frame17=0.000000 -5.350000 8.910740 +frame20=0.000000 -5.350000 3.376008 + +[KeyJointPos] +frame1=0.000000 0.099342 0.000000 +frame4=0.000000 0.322984 0.000000 +frame6=0.000000 0.223580 0.000000 +frame8=0.000000 -0.201833 0.000000 +frame9=0.000000 -0.414539 0.000000 +frame10=0.000000 -0.679760 0.000000 +frame11=0.000000 -0.944979 0.000000 +frame13=0.000000 -0.760198 0.000000 +frame17=0.000000 -0.241902 0.000000 +frame20=0.000000 0.099342 0.000000 diff --git a/CONTENT/BT/ANIMS/THRGSLI.ANI b/CONTENT/BT/ANIMS/THRGSLI.ANI new file mode 100644 index 0000000..0347d20 --- /dev/null +++ b/CONTENT/BT/ANIMS/THRGSLI.ANI @@ -0,0 +1,106 @@ +[LAB_ONLY] + +[HEADER] +framecount=6 +framerate=30 +skeletonfile=thr.skl +jointcount=8 + +[Time] +frame1=0 +frame7=0.2 +frame9=0.266667 +frame11=0.333333 +frame15=0.466667 +frame23=0.733333 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=-0.037374 0.000000 0.000000 +jointlknee=-0.854337 0.000000 0.000000 +jointlankle=-0.471860 0.000000 0.000000 +jointrthigh=-0.094758 0.000000 0.000000 +jointrknee=-0.129419 0.000000 0.000000 +jointrankle=0.226978 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.015708 +jointshakey=0.000000 0.000000 -0.015708 +[frame7] +jointlthigh=0.068051 0.000000 0.000000 +jointlknee=-1.036499 0.000000 0.000000 +jointlankle=-0.081358 0.000000 0.000000 +jointrthigh=-0.068915 0.000000 0.000000 +jointrknee=-0.094123 0.000000 0.000000 +jointrankle=0.165075 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.011424 +jointshakey=0.000000 0.000000 -0.011424 +[frame9] +jointlthigh=0.081073 0.000000 0.000000 +jointlknee=-1.015152 0.000000 0.000000 +jointlankle=0.023671 0.000000 0.000000 +jointrthigh=-0.060300 0.000000 0.000000 +jointrknee=-0.082358 0.000000 0.000000 +jointrankle=0.144441 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.009996 +jointshakey=0.000000 0.000000 -0.009996 +[frame11] +jointlthigh=0.099666 0.000000 0.000000 +jointlknee=-1.043461 0.000000 0.000000 +jointlankle=0.186181 0.000000 0.000000 +jointrthigh=-0.051686 0.000000 0.000000 +jointrknee=-0.070592 0.000000 0.000000 +jointrankle=0.123806 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.008568 +jointshakey=0.000000 0.000000 -0.008568 +[frame15] +jointlthigh=0.106684 0.000000 0.000000 +jointlknee=-0.881667 0.000000 0.000000 +jointlankle=0.332216 0.000000 0.000000 +jointrthigh=-0.034457 0.000000 0.000000 +jointrknee=-0.047062 0.000000 0.000000 +jointrankle=0.082538 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.005712 +jointshakey=0.000000 0.000000 -0.005712 +[frame23] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame7=0.000000 -5.350000 1.304002 +frame9=0.000000 -5.350000 -0.133510 +frame11=0.000000 -5.350000 -0.133495 +frame15=0.000000 -5.350000 -1.709998 +frame23=0.000000 -5.350000 -2.894625 + +[KeyJointPos] +frame1=0.000000 0.099342 0.000000 +frame7=0.000000 0.066186 0.000000 +frame9=0.000000 0.052961 0.000000 +frame11=0.000000 0.047995 0.000000 +frame15=0.000000 0.033093 0.000000 +frame23=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/THRGSRI.ANI b/CONTENT/BT/ANIMS/THRGSRI.ANI new file mode 100644 index 0000000..6c5f31a --- /dev/null +++ b/CONTENT/BT/ANIMS/THRGSRI.ANI @@ -0,0 +1,106 @@ +[LAB_ONLY] + +[HEADER] +framecount=6 +framerate=30 +skeletonfile=thr.skl +jointcount=8 + +[Time] +frame1=0 +frame7=0.2 +frame9=0.266667 +frame11=0.333333 +frame15=0.466667 +frame23=0.733333 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=-0.094758 0.000000 0.000000 +jointlknee=-0.129419 0.000000 0.000000 +jointlankle=0.226978 0.000000 0.000000 +jointrthigh=-0.037374 0.000000 0.000000 +jointrknee=-0.854337 0.000000 0.000000 +jointrankle=-0.471860 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.015708 +jointshakey=0.000000 0.000000 0.015708 +[frame7] +jointlthigh=-0.062440 0.000000 0.000000 +jointlknee=-0.111529 0.000000 0.000000 +jointlankle=0.176080 0.000000 0.000000 +jointrthigh=0.068051 0.000000 0.000000 +jointrknee=-1.036499 0.000000 0.000000 +jointrankle=-0.081358 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.011424 +jointshakey=0.000000 0.000000 0.011424 +[frame9] +jointlthigh=-0.051668 0.000000 0.000000 +jointlknee=-0.105565 0.000000 0.000000 +jointlankle=0.159114 0.000000 0.000000 +jointrthigh=0.081073 0.000000 0.000000 +jointrknee=-1.015152 0.000000 0.000000 +jointrankle=0.023671 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.009996 +jointshakey=0.000000 0.000000 0.009996 +[frame11] +jointlthigh=-0.040895 0.000000 0.000000 +jointlknee=-0.099601 0.000000 0.000000 +jointlankle=0.142147 0.000000 0.000000 +jointrthigh=0.099666 0.000000 0.000000 +jointrknee=-1.043461 0.000000 0.000000 +jointrankle=0.186181 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.008568 +jointshakey=0.000000 0.000000 0.008568 +[frame15] +jointlthigh=-0.019351 0.000000 0.000000 +jointlknee=-0.087674 0.000000 0.000000 +jointlankle=0.108215 0.000000 0.000000 +jointrthigh=0.106684 0.000000 0.000000 +jointrknee=-0.881667 0.000000 0.000000 +jointrankle=0.332216 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.005712 +jointshakey=0.000000 0.000000 0.005712 +[frame23] +jointlthigh=0.023739 0.000000 0.000000 +jointlknee=-0.063820 0.000000 0.000000 +jointlankle=0.040350 0.000000 0.000000 +jointrthigh=0.061303 0.000000 0.000000 +jointrknee=-0.165001 0.000000 0.000000 +jointrankle=0.104694 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame7=0.000000 -5.350000 1.304002 +frame9=0.000000 -5.350000 -0.133510 +frame11=0.000000 -5.350000 -0.133495 +frame15=0.000000 -5.350000 -1.709998 +frame23=0.000000 -5.350000 -2.894625 + +[KeyJointPos] +frame1=0.000000 0.099342 0.000000 +frame7=0.000000 0.066186 0.000000 +frame9=0.000000 0.052961 0.000000 +frame11=0.000000 0.047995 0.000000 +frame15=0.000000 0.033093 0.000000 +frame23=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/THROPI.ANI b/CONTENT/BT/ANIMS/THROPI.ANI new file mode 100644 index 0000000..e69de29 diff --git a/CONTENT/BT/ANIMS/THRRRL.ANI b/CONTENT/BT/ANIMS/THRRRL.ANI new file mode 100644 index 0000000..f02a86c --- /dev/null +++ b/CONTENT/BT/ANIMS/THRRRL.ANI @@ -0,0 +1,120 @@ +[LAB_ONLY] + +[HEADER] +framecount=8 +framerate=30 +skeletonfile=thr.skl +jointcount=7 + +[Time] +frame1=0 +frame5=0.133333 +frame11=0.333333 +frame12=0.366667 +frame13=0.4 +frame14=0.433333 +frame15=0.466667 +frame16=0.5 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate + +[frame1] +jointlthigh=-0.537472 0.000000 0.000000 +jointlknee=-0.428398 0.000000 0.000000 +jointlankle=-0.302139 0.000000 0.000000 +jointrthigh=0.746408 0.000000 0.000000 +jointrknee=-0.444553 0.000000 0.000000 +jointrankle=0.169035 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.013090 +[frame5] +jointlthigh=-0.924082 0.000000 0.000000 +jointlknee=-0.950576 0.000000 0.000000 +jointlankle=-0.043616 0.000000 0.000000 +jointrthigh=0.668932 0.000000 0.000000 +jointrknee=-0.021625 0.000000 0.000000 +jointrankle=0.154636 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame11] +jointlthigh=-0.072100 0.000000 0.000000 +jointlknee=-1.647696 0.000000 0.000000 +jointlankle=0.290388 0.000000 0.000000 +jointrthigh=0.260464 0.000000 0.000000 +jointrknee=-0.617438 0.000000 0.000000 +jointrankle=0.357105 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.026180 +[frame12] +jointlthigh=0.159246 0.000000 0.000000 +jointlknee=-1.733321 0.000000 0.000000 +jointlankle=0.459420 0.000000 0.000000 +jointrthigh=0.031336 0.000000 0.000000 +jointrknee=-0.631535 0.000000 0.000000 +jointrankle=0.600002 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.023998 +[frame13] +jointlthigh=0.390591 0.000000 0.000000 +jointlknee=-1.818947 0.000000 0.000000 +jointlankle=0.628453 0.000000 0.000000 +jointrthigh=-0.324411 0.000000 0.000000 +jointrknee=-0.260548 0.000000 0.000000 +jointrankle=0.585439 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.021817 +[frame14] +jointlthigh=0.509746 0.000000 0.000000 +jointlknee=-1.376155 0.000000 0.000000 +jointlankle=0.489124 0.000000 0.000000 +jointrthigh=-0.274542 0.000000 0.000000 +jointrknee=-0.746055 0.000000 0.000000 +jointrankle=0.562644 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.018908 +[frame15] +jointlthigh=0.628901 0.000000 0.000000 +jointlknee=-0.933363 0.000000 0.000000 +jointlankle=0.349795 0.000000 0.000000 +jointrthigh=-0.378897 0.000000 0.000000 +jointrknee=-0.746128 0.000000 0.000000 +jointrankle=0.310946 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.015999 +[frame16] +jointlthigh=0.748057 0.000000 0.000000 +jointlknee=-0.490570 0.000000 0.000000 +jointlankle=0.210466 0.000000 0.000000 +jointrthigh=-0.513851 0.000000 0.000000 +jointrknee=-0.501829 0.000000 0.000000 +jointrankle=-0.225325 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.013090 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame5=0.000000 -5.350000 34.817245 +frame11=0.000000 -5.350000 34.015007 +frame12=0.000000 -5.350000 35.306973 +frame13=0.000000 -5.350000 35.306973 +frame14=0.000000 -5.349999 34.443974 +frame15=0.000000 -5.349999 34.444088 +frame16=0.000000 -5.350000 34.443974 + +[KeyJointPos] +frame1=-0.080946 -0.025365 0.000000 +frame5=0.000000 0.248353 0.000000 +frame11=0.154077 -0.324877 0.000000 +frame12=0.143922 -0.212828 0.000000 +frame13=0.133278 -0.100795 0.000000 +frame14=0.115979 -0.075603 0.000000 +frame15=0.098535 -0.050459 0.000000 +frame16=0.080946 -0.025365 0.000000 diff --git a/CONTENT/BT/ANIMS/THRRRLI.ANI b/CONTENT/BT/ANIMS/THRRRLI.ANI new file mode 100644 index 0000000..4e6a751 --- /dev/null +++ b/CONTENT/BT/ANIMS/THRRRLI.ANI @@ -0,0 +1,130 @@ +[LAB_ONLY] + +[HEADER] +framecount=8 +framerate=30 +skeletonfile=thr.skl +jointcount=8 + +[Time] +frame1=0 +frame5=0.133333 +frame11=0.333333 +frame12=0.366667 +frame13=0.4 +frame14=0.433333 +frame15=0.466667 +frame16=0.5 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=-0.543853 0.000000 0.000000 +jointlknee=-0.411503 0.000000 0.000000 +jointlankle=-0.315421 0.000000 0.000000 +jointrthigh=0.746408 0.000000 0.000000 +jointrknee=-0.444553 0.000000 0.000000 +jointrankle=0.169035 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.009163 +jointshakey=0.000000 0.000000 0.009163 +[frame5] +jointlthigh=-0.924082 0.000000 0.000000 +jointlknee=-0.950576 0.000000 0.000000 +jointlankle=-0.043616 0.000000 0.000000 +jointrthigh=0.668932 0.000000 0.000000 +jointrknee=-0.021625 0.000000 0.000000 +jointrankle=0.154636 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame11] +jointlthigh=-0.072100 0.000000 0.000000 +jointlknee=-1.647696 0.000000 0.000000 +jointlankle=0.290388 0.000000 0.000000 +jointrthigh=0.240939 0.000000 0.000000 +jointrknee=-0.567389 0.000000 0.000000 +jointrankle=0.326408 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.015708 +jointshakey=0.000000 0.000000 -0.015708 +[frame12] +jointlthigh=0.159246 0.000000 0.000000 +jointlknee=-1.733321 0.000000 0.000000 +jointlankle=0.459420 0.000000 0.000000 +jointrthigh=0.031336 0.000000 0.000000 +jointrknee=-0.631535 0.000000 0.000000 +jointrankle=0.600002 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.014181 +jointshakey=0.000000 0.000000 -0.014181 +[frame13] +jointlthigh=0.390591 0.000000 0.000000 +jointlknee=-1.818947 0.000000 0.000000 +jointlankle=0.628453 0.000000 0.000000 +jointrthigh=-0.348715 0.000000 0.000000 +jointrknee=-0.189813 0.000000 0.000000 +jointrankle=0.538823 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.012654 +jointshakey=0.000000 0.000000 -0.012654 +[frame14] +jointlthigh=0.509746 0.000000 0.000000 +jointlknee=-1.376155 0.000000 0.000000 +jointlankle=0.489124 0.000000 0.000000 +jointrthigh=-0.327179 0.000000 0.000000 +jointrknee=-0.646461 0.000000 0.000000 +jointrankle=0.590309 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.011490 +jointshakey=0.000000 0.000000 -0.011490 +[frame15] +jointlthigh=0.628901 0.000000 0.000000 +jointlknee=-0.933363 0.000000 0.000000 +jointlankle=0.349795 0.000000 0.000000 +jointrthigh=-0.378897 0.000000 0.000000 +jointrknee=-0.746128 0.000000 0.000000 +jointrankle=0.310946 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.010327 +jointshakey=0.000000 0.000000 -0.010327 +[frame16] +jointlthigh=0.748057 0.000000 0.000000 +jointlknee=-0.490570 0.000000 0.000000 +jointlankle=0.210466 0.000000 0.000000 +jointrthigh=-0.516501 0.000000 0.000000 +jointrknee=-0.486922 0.000000 0.000000 +jointrankle=-0.239644 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.009163 +jointshakey=0.000000 0.000000 -0.009163 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame5=0.000000 -5.350000 34.817245 +frame11=0.000000 -5.350000 34.015007 +frame12=0.000000 -5.350000 35.306973 +frame13=0.000000 -5.350000 35.306973 +frame14=0.000000 -5.349999 34.443974 +frame15=0.000000 -5.349999 34.444088 +frame16=0.000000 -5.350000 34.443974 + +[KeyJointPos] +frame1=0.000000 -0.024836 0.000000 +frame5=0.000000 0.248353 0.000000 +frame11=0.000000 -0.322860 0.000000 +frame12=0.000000 -0.211101 0.000000 +frame13=0.000000 -0.099341 0.000000 +frame14=0.000000 -0.074506 0.000000 +frame15=0.000000 -0.049671 0.000000 +frame16=0.000000 -0.024836 0.000000 diff --git a/CONTENT/BT/ANIMS/THRRRR.ANI b/CONTENT/BT/ANIMS/THRRRR.ANI new file mode 100644 index 0000000..715caca --- /dev/null +++ b/CONTENT/BT/ANIMS/THRRRR.ANI @@ -0,0 +1,120 @@ +[LAB_ONLY] + +[HEADER] +framecount=8 +framerate=30 +skeletonfile=thr.skl +jointcount=7 + +[Time] +frame1=0 +frame5=0.133333 +frame11=0.333333 +frame12=0.366667 +frame13=0.4 +frame14=0.433333 +frame15=0.466667 +frame16=0.5 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate + +[frame1] +jointlthigh=0.748057 0.000000 0.000000 +jointlknee=-0.490570 0.000000 0.000000 +jointlankle=0.210466 0.000000 0.000000 +jointrthigh=-0.529707 0.000000 0.000000 +jointrknee=-0.448424 0.000000 0.000000 +jointrankle=-0.264095 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.013090 +[frame5] +jointlthigh=0.668932 0.000000 0.000000 +jointlknee=-0.021625 0.000000 0.000000 +jointlankle=0.154636 0.000000 0.000000 +jointrthigh=-0.924082 0.000000 0.000000 +jointrknee=-0.950576 0.000000 0.000000 +jointrankle=-0.043616 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame11] +jointlthigh=0.256145 0.000000 0.000000 +jointlknee=-0.609364 0.000000 0.000000 +jointlankle=0.351911 0.000000 0.000000 +jointrthigh=-0.072100 0.000000 0.000000 +jointrknee=-1.647696 0.000000 0.000000 +jointrankle=0.290388 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.026180 +[frame12] +jointlthigh=0.037230 0.000000 0.000000 +jointlknee=-0.620599 0.000000 0.000000 +jointlankle=0.583219 0.000000 0.000000 +jointrthigh=0.159305 0.000000 0.000000 +jointrknee=-1.729394 0.000000 0.000000 +jointrankle=0.453114 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.023998 +[frame13] +jointlthigh=-0.292079 0.000000 0.000000 +jointlknee=-0.295491 0.000000 0.000000 +jointlankle=0.587699 0.000000 0.000000 +jointrthigh=0.390709 0.000000 0.000000 +jointrknee=-1.811093 0.000000 0.000000 +jointrankle=0.615839 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.021817 +[frame14] +jointlthigh=-0.276237 0.000000 0.000000 +jointlknee=-0.733962 0.000000 0.000000 +jointlankle=0.585171 0.000000 0.000000 +jointrthigh=0.509275 0.000000 0.000000 +jointrknee=-1.355580 0.000000 0.000000 +jointrankle=0.466905 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.018908 +[frame15] +jointlthigh=-0.363250 0.000000 0.000000 +jointlknee=-0.761770 0.000000 0.000000 +jointlankle=0.282403 0.000000 0.000000 +jointrthigh=0.627841 0.000000 0.000000 +jointrknee=-0.900066 0.000000 0.000000 +jointrankle=0.317970 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.015999 +[frame16] +jointlthigh=-0.537472 0.000000 0.000000 +jointlknee=-0.428398 0.000000 0.000000 +jointlankle=-0.302139 0.000000 0.000000 +jointrthigh=0.746408 0.000000 0.000000 +jointrknee=-0.444553 0.000000 0.000000 +jointrankle=0.169035 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.013090 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame5=0.000000 -5.350000 35.426617 +frame11=0.000000 -5.350000 33.878506 +frame12=0.000000 -5.350000 33.672012 +frame13=0.000000 -5.350000 33.672012 +frame14=0.000000 -5.349999 35.742992 +frame15=0.000000 -5.349999 35.742992 +frame16=0.000000 -5.350000 35.742992 + +[KeyJointPos] +frame1=0.080946 -0.025365 0.000000 +frame5=0.000000 0.248415 0.000000 +frame11=-0.154072 -0.325057 0.000000 +frame12=-0.143919 -0.212921 0.000000 +frame13=-0.133278 -0.100801 0.000000 +frame14=-0.115979 -0.075607 0.000000 +frame15=-0.098535 -0.050462 0.000000 +frame16=-0.080946 -0.025365 0.000000 diff --git a/CONTENT/BT/ANIMS/THRRRRI.ANI b/CONTENT/BT/ANIMS/THRRRRI.ANI new file mode 100644 index 0000000..f732c42 --- /dev/null +++ b/CONTENT/BT/ANIMS/THRRRRI.ANI @@ -0,0 +1,130 @@ +[LAB_ONLY] + +[HEADER] +framecount=8 +framerate=30 +skeletonfile=thr.skl +jointcount=8 + +[Time] +frame1=0 +frame5=0.133333 +frame11=0.333333 +frame12=0.366667 +frame13=0.4 +frame14=0.433333 +frame15=0.466667 +frame16=0.5 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=0.748059 0.000000 0.000000 +jointlknee=-0.490570 0.000000 0.000000 +jointlankle=0.210464 0.000000 0.000000 +jointrthigh=-0.531962 0.000000 0.000000 +jointrknee=-0.440640 0.000000 0.000000 +jointrankle=-0.270428 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.009163 +jointshakey=0.000000 0.000000 -0.009163 +[frame5] +jointlthigh=0.668932 0.000000 0.000000 +jointlknee=-0.021625 0.000000 0.000000 +jointlankle=0.154636 0.000000 0.000000 +jointrthigh=-0.924082 0.000000 0.000000 +jointrknee=-0.950576 0.000000 0.000000 +jointrankle=-0.043616 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame11] +jointlthigh=0.236387 0.000000 0.000000 +jointlknee=-0.558682 0.000000 0.000000 +jointlankle=0.320807 0.000000 0.000000 +jointrthigh=-0.072100 0.000000 0.000000 +jointrknee=-1.647696 0.000000 0.000000 +jointrankle=0.290388 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.015708 +jointshakey=0.000000 0.000000 0.015708 +[frame12] +jointlthigh=0.037230 0.000000 0.000000 +jointlknee=-0.620599 0.000000 0.000000 +jointlankle=0.583219 0.000000 0.000000 +jointrthigh=0.159305 0.000000 0.000000 +jointrknee=-1.729394 0.000000 0.000000 +jointrankle=0.453114 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.014181 +jointshakey=0.000000 0.000000 0.014181 +[frame13] +jointlthigh=-0.316582 0.000000 0.000000 +jointlknee=-0.224563 0.000000 0.000000 +jointlankle=0.541595 0.000000 0.000000 +jointrthigh=0.390709 0.000000 0.000000 +jointrknee=-1.811093 0.000000 0.000000 +jointrankle=0.615839 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.012654 +jointshakey=0.000000 0.000000 0.012654 +[frame14] +jointlthigh=-0.276237 0.000000 0.000000 +jointlknee=-0.733962 0.000000 0.000000 +jointlankle=0.585171 0.000000 0.000000 +jointrthigh=0.509275 0.000000 0.000000 +jointrknee=-1.355580 0.000000 0.000000 +jointrankle=0.466905 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.011490 +jointshakey=0.000000 0.000000 0.011490 +[frame15] +jointlthigh=-0.363250 0.000000 0.000000 +jointlknee=-0.761770 0.000000 0.000000 +jointlankle=0.282403 0.000000 0.000000 +jointrthigh=0.627841 0.000000 0.000000 +jointrknee=-0.900066 0.000000 0.000000 +jointrankle=0.317970 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.010327 +jointshakey=0.000000 0.000000 0.010327 +[frame16] +jointlthigh=-0.540162 0.000000 0.000000 +jointlknee=-0.415854 0.000000 0.000000 +jointlankle=-0.312534 0.000000 0.000000 +jointrthigh=0.746408 0.000000 0.000000 +jointrknee=-0.444553 0.000000 0.000000 +jointrankle=0.169035 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.009163 +jointshakey=0.000000 0.000000 0.009163 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame5=0.000000 -5.350000 35.426617 +frame11=0.000000 -5.350000 33.878506 +frame12=0.000000 -5.350000 33.672012 +frame13=0.000000 -5.350000 33.672012 +frame14=0.000000 -5.349999 35.742992 +frame15=0.000000 -5.349999 35.742992 +frame16=0.000000 -5.350000 35.742992 + +[KeyJointPos] +frame1=0.000000 -0.024836 0.000000 +frame5=0.000000 0.248415 0.000000 +frame11=0.000000 -0.323040 0.000000 +frame12=0.000000 -0.211194 0.000000 +frame13=0.000000 -0.099348 0.000000 +frame14=0.000000 -0.074510 0.000000 +frame15=0.000000 -0.049673 0.000000 +frame16=0.000000 -0.024836 0.000000 diff --git a/CONTENT/BT/ANIMS/THRRWL.ANI b/CONTENT/BT/ANIMS/THRRWL.ANI new file mode 100644 index 0000000..3fe9ca2 --- /dev/null +++ b/CONTENT/BT/ANIMS/THRRWL.ANI @@ -0,0 +1,150 @@ +[LAB_ONLY] + +[HEADER] +framecount=8 +framerate=30 +skeletonfile=thr.skl +jointcount=10 + +[Time] +frame1=0 +frame9=0.266667 +frame15=0.466667 +frame17=0.533333 +frame18=0.566667 +frame21=0.666667 +frame27=0.866667 +frame32=1.03333 + +[JointIndices] +jointhip=1 +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointrshoulder=4 +jointlshoulder=6 +jointlocal=0 + +[JointType] +jointhip=hingex +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointrshoulder=hingex +jointlshoulder=hingex +jointlocal=balltranslate + +[frame1] +jointhip=-0.208689 0.000000 0.000000 +jointlthigh=-0.529617 0.000000 0.000000 +jointlknee=-0.445487 0.000000 0.000000 +jointlankle=-0.267667 0.000000 0.000000 +jointrthigh=0.748057 0.000000 0.000000 +jointrknee=-0.490570 0.000000 0.000000 +jointrankle=0.210466 0.000000 0.000000 +jointrshoulder=0.208689 0.000000 0.000000 +jointlshoulder=0.208689 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.013090 +[frame9] +jointhip=-0.175102 0.000000 0.000000 +jointlthigh=-0.837796 0.000000 0.000000 +jointlknee=-0.816135 0.000000 0.000000 +jointlankle=-0.106199 0.000000 0.000000 +jointrthigh=0.648287 0.000000 0.000000 +jointrknee=-0.023450 0.000000 0.000000 +jointrankle=0.154636 0.000000 0.000000 +jointrshoulder=0.175102 0.000000 0.000000 +jointlshoulder=0.175102 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame15] +jointhip=-0.149912 0.000000 0.000000 +jointlthigh=-0.554991 0.000000 0.000000 +jointlknee=-1.050513 0.000000 0.000000 +jointlankle=0.092104 0.000000 0.000000 +jointrthigh=0.471031 0.000000 0.000000 +jointrknee=-0.012656 0.000000 0.000000 +jointrankle=0.091171 0.000000 0.000000 +jointrshoulder=0.149912 0.000000 0.000000 +jointlshoulder=0.149912 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.008727 +[frame17] +jointhip=-0.141515 0.000000 0.000000 +jointlthigh=-0.460723 0.000000 0.000000 +jointlknee=-1.128639 0.000000 0.000000 +jointlankle=0.158205 0.000000 0.000000 +jointrthigh=0.398160 0.000000 0.000000 +jointrknee=-0.032905 0.000000 0.000000 +jointrankle=0.072550 0.000000 0.000000 +jointrshoulder=0.141515 0.000000 0.000000 +jointlshoulder=0.141515 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.011636 +[frame18] +jointhip=-0.137317 0.000000 0.000000 +jointlthigh=-0.413588 0.000000 0.000000 +jointlknee=-1.167701 0.000000 0.000000 +jointlankle=0.191255 0.000000 0.000000 +jointrthigh=0.351727 0.000000 0.000000 +jointrknee=-0.053122 0.000000 0.000000 +jointrankle=-0.043882 0.000000 0.000000 +jointrshoulder=0.137317 0.000000 0.000000 +jointlshoulder=0.137317 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.013090 +[frame21] +jointhip=-0.124722 0.000000 0.000000 +jointlthigh=-0.272186 0.000000 0.000000 +jointlknee=-1.284890 0.000000 0.000000 +jointlankle=0.290407 0.000000 0.000000 +jointrthigh=0.286770 0.000000 0.000000 +jointrknee=-0.521211 0.000000 0.000000 +jointrankle=0.231462 0.000000 0.000000 +jointrshoulder=0.124722 0.000000 0.000000 +jointlshoulder=0.124722 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.017453 +[frame27] +jointhip=-0.099532 0.000000 0.000000 +jointlthigh=0.309703 0.000000 0.000000 +jointlknee=-1.444223 0.000000 0.000000 +jointlankle=0.516572 0.000000 0.000000 +jointrthigh=-0.210146 0.000000 0.000000 +jointrknee=-0.540775 0.000000 0.000000 +jointrankle=0.752230 0.000000 0.000000 +jointrshoulder=0.099532 0.000000 0.000000 +jointlshoulder=0.099532 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.013090 +[frame32] +jointhip=-0.078540 0.000000 0.000000 +jointlthigh=0.395614 0.000000 0.000000 +jointlknee=-0.220767 0.000000 0.000000 +jointlankle=0.133954 0.000000 0.000000 +jointrthigh=-0.486563 0.000000 0.000000 +jointrknee=-0.487638 0.000000 0.000000 +jointrankle=0.639860 0.000000 0.000000 +jointrshoulder=0.078540 0.000000 0.000000 +jointlshoulder=0.078540 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame9=0.000000 -5.350000 15.010127 +frame15=0.000000 -5.350000 15.647756 +frame17=0.000000 -5.349999 15.647730 +frame18=0.000000 -5.350000 15.647751 +frame21=0.000000 -5.350000 15.647732 +frame27=0.000000 -5.350000 12.837029 +frame32=0.000000 -5.350000 10.345782 + +[KeyJointPos] +frame1=-0.080946 -0.025365 0.000000 +frame9=0.000000 -0.074587 0.000000 +frame15=0.052447 -0.199042 0.000000 +frame17=0.069446 -0.240627 0.000000 +frame18=0.077856 -0.261436 0.000000 +frame21=0.102721 -0.323937 0.000000 +frame27=0.078020 -0.248883 0.000000 +frame32=0.000000 -0.273276 0.000000 diff --git a/CONTENT/BT/ANIMS/THRRWLI.ANI b/CONTENT/BT/ANIMS/THRRWLI.ANI new file mode 100644 index 0000000..5317077 --- /dev/null +++ b/CONTENT/BT/ANIMS/THRRWLI.ANI @@ -0,0 +1,130 @@ +[LAB_ONLY] + +[HEADER] +framecount=8 +framerate=30 +skeletonfile=thr.skl +jointcount=8 + +[Time] +frame1=0 +frame9=0.266667 +frame15=0.466667 +frame17=0.533333 +frame18=0.566667 +frame21=0.666667 +frame27=0.866667 +frame32=1.03333 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=-0.531833 0.000000 0.000000 +jointlknee=-0.437812 0.000000 0.000000 +jointlankle=-0.273889 0.000000 0.000000 +jointrthigh=0.748057 0.000000 0.000000 +jointrknee=-0.490570 0.000000 0.000000 +jointrankle=0.210466 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.009163 +jointshakey=0.000000 0.000000 0.009163 +[frame9] +jointlthigh=-0.837796 0.000000 0.000000 +jointlknee=-0.816135 0.000000 0.000000 +jointlankle=-0.106199 0.000000 0.000000 +jointrthigh=0.648287 0.000000 0.000000 +jointrknee=-0.023450 0.000000 0.000000 +jointrankle=0.154636 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame15] +jointlthigh=-0.554991 0.000000 0.000000 +jointlknee=-1.050513 0.000000 0.000000 +jointlankle=0.092104 0.000000 0.000000 +jointrthigh=0.471031 0.000000 0.000000 +jointrknee=-0.012656 0.000000 0.000000 +jointrankle=0.091171 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.005672 +jointshakey=0.000000 0.000000 -0.005672 +[frame17] +jointlthigh=-0.460723 0.000000 0.000000 +jointlknee=-1.128639 0.000000 0.000000 +jointlankle=0.158205 0.000000 0.000000 +jointrthigh=0.398160 0.000000 0.000000 +jointrknee=-0.032905 0.000000 0.000000 +jointrankle=0.072550 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.007563 +jointshakey=0.000000 0.000000 -0.007563 +[frame18] +jointlthigh=-0.413588 0.000000 0.000000 +jointlknee=-1.167701 0.000000 0.000000 +jointlankle=0.191255 0.000000 0.000000 +jointrthigh=0.351727 0.000000 0.000000 +jointrknee=-0.053122 0.000000 0.000000 +jointrankle=-0.043882 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.008508 +jointshakey=0.000000 0.000000 -0.008508 +[frame21] +jointlthigh=-0.272186 0.000000 0.000000 +jointlknee=-1.284890 0.000000 0.000000 +jointlankle=0.290407 0.000000 0.000000 +jointrthigh=0.277314 0.000000 0.000000 +jointrknee=-0.498737 0.000000 0.000000 +jointrankle=0.217817 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.011345 +jointshakey=0.000000 0.000000 -0.011345 +[frame27] +jointlthigh=0.309703 0.000000 0.000000 +jointlknee=-1.444223 0.000000 0.000000 +jointlankle=0.516572 0.000000 0.000000 +jointrthigh=-0.210659 0.000000 0.000000 +jointrknee=-0.539474 0.000000 0.000000 +jointrankle=0.751120 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.007418 +jointshakey=0.000000 0.000000 -0.007418 +[frame32] +jointlthigh=0.395614 0.000000 0.000000 +jointlknee=-0.220767 0.000000 0.000000 +jointlankle=0.133954 0.000000 0.000000 +jointrthigh=-0.486563 0.000000 0.000000 +jointrknee=-0.487638 0.000000 0.000000 +jointrankle=0.639860 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame9=0.000000 -5.350000 15.010127 +frame15=0.000000 -5.350000 15.647756 +frame17=0.000000 -5.349999 15.647730 +frame18=0.000000 -5.350000 15.647751 +frame21=0.000000 -5.350000 15.647732 +frame27=0.000000 -5.350000 12.837029 +frame32=0.000000 -5.350000 10.345782 + +[KeyJointPos] +frame1=0.000000 -0.024836 0.000000 +frame9=0.000000 -0.074587 0.000000 +frame15=0.000000 -0.198813 0.000000 +frame17=0.000000 -0.240222 0.000000 +frame18=0.000000 -0.260927 0.000000 +frame21=0.000000 -0.323040 0.000000 +frame27=0.000000 -0.248372 0.000000 +frame32=0.000000 -0.273276 0.000000 diff --git a/CONTENT/BT/ANIMS/THRRWR.ANI b/CONTENT/BT/ANIMS/THRRWR.ANI new file mode 100644 index 0000000..8f46bc7 --- /dev/null +++ b/CONTENT/BT/ANIMS/THRRWR.ANI @@ -0,0 +1,150 @@ +[LAB_ONLY] + +[HEADER] +framecount=8 +framerate=30 +skeletonfile=thr.skl +jointcount=10 + +[Time] +frame1=0 +frame9=0.266667 +frame15=0.466667 +frame17=0.533333 +frame18=0.566667 +frame21=0.666667 +frame27=0.866667 +frame32=1.03333 + +[JointIndices] +jointhip=1 +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointrshoulder=4 +jointlshoulder=6 +jointlocal=0 + +[JointType] +jointhip=hingex +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointrshoulder=hingex +jointlshoulder=hingex +jointlocal=balltranslate + +[frame1] +jointhip=-0.208689 0.000000 0.000000 +jointlthigh=0.748057 0.000000 0.000000 +jointlknee=-0.490570 0.000000 0.000000 +jointlankle=0.210466 0.000000 0.000000 +jointrthigh=-0.529617 0.000000 0.000000 +jointrknee=-0.445487 0.000000 0.000000 +jointrankle=-0.267667 0.000000 0.000000 +jointrshoulder=0.208689 0.000000 0.000000 +jointlshoulder=0.208689 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.013090 +[frame9] +jointhip=-0.175102 0.000000 0.000000 +jointlthigh=0.648287 0.000000 0.000000 +jointlknee=-0.023450 0.000000 0.000000 +jointlankle=0.154636 0.000000 0.000000 +jointrthigh=-0.830520 0.000000 0.000000 +jointrknee=-0.836016 0.000000 0.000000 +jointrankle=-0.092293 0.000000 0.000000 +jointrshoulder=0.175102 0.000000 0.000000 +jointlshoulder=0.175102 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame15] +jointhip=-0.149912 0.000000 0.000000 +jointlthigh=0.471031 0.000000 0.000000 +jointlknee=-0.012656 0.000000 0.000000 +jointlankle=0.091171 0.000000 0.000000 +jointrthigh=-0.551356 0.000000 0.000000 +jointrknee=-1.060445 0.000000 0.000000 +jointrankle=0.099055 0.000000 0.000000 +jointrshoulder=0.149912 0.000000 0.000000 +jointlshoulder=0.149912 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.008727 +[frame17] +jointhip=-0.141515 0.000000 0.000000 +jointlthigh=0.398160 0.000000 0.000000 +jointlknee=-0.032905 0.000000 0.000000 +jointlankle=0.072550 0.000000 0.000000 +jointrthigh=-0.458302 0.000000 0.000000 +jointrknee=-1.135254 0.000000 0.000000 +jointrankle=0.162838 0.000000 0.000000 +jointrshoulder=0.141515 0.000000 0.000000 +jointlshoulder=0.141515 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.011636 +[frame18] +jointhip=-0.137317 0.000000 0.000000 +jointlthigh=0.351727 0.000000 0.000000 +jointlknee=-0.053122 0.000000 0.000000 +jointlankle=-0.043882 0.000000 0.000000 +jointrthigh=-0.411775 0.000000 0.000000 +jointrknee=-1.172659 0.000000 0.000000 +jointrankle=0.194730 0.000000 0.000000 +jointrshoulder=0.137317 0.000000 0.000000 +jointlshoulder=0.137317 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.013090 +[frame21] +jointhip=-0.124722 0.000000 0.000000 +jointlthigh=0.285628 0.000000 0.000000 +jointlknee=-0.518850 0.000000 0.000000 +jointlankle=0.231096 0.000000 0.000000 +jointrthigh=-0.272193 0.000000 0.000000 +jointrknee=-1.284873 0.000000 0.000000 +jointrankle=0.290404 0.000000 0.000000 +jointrshoulder=0.124722 0.000000 0.000000 +jointlshoulder=0.124722 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.017453 +[frame27] +jointhip=-0.099532 0.000000 0.000000 +jointlthigh=-0.210150 0.000000 0.000000 +jointlknee=-0.540778 0.000000 0.000000 +jointlankle=0.752233 0.000000 0.000000 +jointrthigh=0.309705 0.000000 0.000000 +jointrknee=-1.444227 0.000000 0.000000 +jointrankle=0.516572 0.000000 0.000000 +jointrshoulder=0.099532 0.000000 0.000000 +jointlshoulder=0.099532 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.013090 +[frame32] +jointhip=-0.078540 0.000000 0.000000 +jointlthigh=-0.484978 0.000000 0.000000 +jointlknee=-0.497874 0.000000 0.000000 +jointlankle=0.651832 0.000000 0.000000 +jointrthigh=0.392336 0.000000 0.000000 +jointrknee=-0.216485 0.000000 0.000000 +jointrankle=0.135860 0.000000 0.000000 +jointrshoulder=0.078540 0.000000 0.000000 +jointlshoulder=0.078540 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame9=0.000000 -5.350000 15.010127 +frame15=0.000000 -5.350000 15.647756 +frame17=0.000000 -5.349999 15.647730 +frame18=0.000000 -5.350000 15.647751 +frame21=0.000000 -5.350000 15.647732 +frame27=0.000000 -5.350000 12.837029 +frame32=0.000000 -5.350000 10.345782 + +[KeyJointPos] +frame1=0.080946 -0.025365 0.000000 +frame9=0.000000 -0.074587 0.000000 +frame15=-0.052447 -0.199042 0.000000 +frame17=-0.069446 -0.240627 0.000000 +frame18=-0.077856 -0.261436 0.000000 +frame21=-0.102721 -0.323937 0.000000 +frame27=-0.078020 -0.248883 0.000000 +frame32=0.000000 -0.273276 0.000000 diff --git a/CONTENT/BT/ANIMS/THRRWRI.ANI b/CONTENT/BT/ANIMS/THRRWRI.ANI new file mode 100644 index 0000000..c007f2b --- /dev/null +++ b/CONTENT/BT/ANIMS/THRRWRI.ANI @@ -0,0 +1,130 @@ +[LAB_ONLY] + +[HEADER] +framecount=8 +framerate=30 +skeletonfile=thr.skl +jointcount=8 + +[Time] +frame1=0 +frame9=0.266667 +frame15=0.466667 +frame17=0.533333 +frame18=0.566667 +frame21=0.666667 +frame27=0.866667 +frame32=1.03333 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=0.748057 0.000000 0.000000 +jointlknee=-0.490570 0.000000 0.000000 +jointlankle=0.210466 0.000000 0.000000 +jointrthigh=-0.531989 0.000000 0.000000 +jointrknee=-0.437367 0.000000 0.000000 +jointrankle=-0.274266 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.009163 +jointshakey=0.000000 0.000000 -0.009163 +[frame9] +jointlthigh=0.648287 0.000000 0.000000 +jointlknee=-0.023450 0.000000 0.000000 +jointlankle=0.154636 0.000000 0.000000 +jointrthigh=-0.830520 0.000000 0.000000 +jointrknee=-0.836016 0.000000 0.000000 +jointrankle=-0.092293 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame15] +jointlthigh=0.471031 0.000000 0.000000 +jointlknee=-0.012656 0.000000 0.000000 +jointlankle=0.091171 0.000000 0.000000 +jointrthigh=-0.551356 0.000000 0.000000 +jointrknee=-1.060445 0.000000 0.000000 +jointrankle=0.099055 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.005672 +jointshakey=0.000000 0.000000 0.005672 +[frame17] +jointlthigh=0.398160 0.000000 0.000000 +jointlknee=-0.032905 0.000000 0.000000 +jointlankle=0.072550 0.000000 0.000000 +jointrthigh=-0.458302 0.000000 0.000000 +jointrknee=-1.135254 0.000000 0.000000 +jointrankle=0.162838 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.007563 +jointshakey=0.000000 0.000000 0.007563 +[frame18] +jointlthigh=0.351727 0.000000 0.000000 +jointlknee=-0.053122 0.000000 0.000000 +jointlankle=-0.043882 0.000000 0.000000 +jointrthigh=-0.411775 0.000000 0.000000 +jointrknee=-1.172659 0.000000 0.000000 +jointrankle=0.194730 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.008508 +jointshakey=0.000000 0.000000 0.008508 +[frame21] +jointlthigh=0.281195 0.000000 0.000000 +jointlknee=-0.507814 0.000000 0.000000 +jointlankle=0.225666 0.000000 0.000000 +jointrthigh=-0.272193 0.000000 0.000000 +jointrknee=-1.284873 0.000000 0.000000 +jointrankle=0.290404 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.011345 +jointshakey=0.000000 0.000000 0.011345 +[frame27] +jointlthigh=-0.210604 0.000000 0.000000 +jointlknee=-0.539647 0.000000 0.000000 +jointlankle=0.751240 0.000000 0.000000 +jointrthigh=0.309705 0.000000 0.000000 +jointrknee=-1.444227 0.000000 0.000000 +jointrankle=0.516572 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.007418 +jointshakey=0.000000 0.000000 0.007418 +[frame32] +jointlthigh=-0.484978 0.000000 0.000000 +jointlknee=-0.497874 0.000000 0.000000 +jointlankle=0.651832 0.000000 0.000000 +jointrthigh=0.392336 0.000000 0.000000 +jointrknee=-0.216485 0.000000 0.000000 +jointrankle=0.135860 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame9=0.000000 -5.350000 15.010127 +frame15=0.000000 -5.350000 15.647756 +frame17=0.000000 -5.349999 15.647730 +frame18=0.000000 -5.350000 15.647751 +frame21=0.000000 -5.350000 15.647732 +frame27=0.000000 -5.350000 12.837029 +frame32=0.000000 -5.350000 10.345782 + +[KeyJointPos] +frame1=0.000000 -0.024836 0.000000 +frame9=0.000000 -0.074587 0.000000 +frame15=0.000000 -0.198813 0.000000 +frame17=0.000000 -0.240222 0.000000 +frame18=0.000000 -0.260927 0.000000 +frame21=0.000000 -0.323040 0.000000 +frame27=0.000000 -0.248372 0.000000 +frame32=0.000000 -0.273276 0.000000 diff --git a/CONTENT/BT/ANIMS/THRSBLI.ANI b/CONTENT/BT/ANIMS/THRSBLI.ANI new file mode 100644 index 0000000..ca86431 --- /dev/null +++ b/CONTENT/BT/ANIMS/THRSBLI.ANI @@ -0,0 +1,118 @@ +[LAB_ONLY] + +[HEADER] +framecount=7 +framerate=30 +skeletonfile=thr.skl +jointcount=8 + +[Time] +frame1=0 +frame8=0.233333 +frame14=0.433333 +frame15=0.466667 +frame18=0.566667 +frame27=0.866667 +frame57=1.86667 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=0.079372 0.000000 0.000000 +jointlknee=-0.214384 0.000000 0.000000 +jointlankle=0.137470 0.000000 0.000000 +jointrthigh=0.054061 0.000000 0.000000 +jointrknee=-0.147065 0.000000 0.000000 +jointrankle=0.093170 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame8] +jointlthigh=0.213518 0.000000 0.000000 +jointlknee=-1.023142 0.000000 0.000000 +jointlankle=0.596234 0.000000 0.000000 +jointrthigh=0.103654 0.000000 0.000000 +jointrknee=-0.184712 0.000000 0.000000 +jointrankle=0.080857 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.006109 +jointshakey=0.000000 0.000000 -0.006109 +[frame14] +jointlthigh=0.018546 0.000000 0.000000 +jointlknee=-1.302332 0.000000 0.000000 +jointlankle=0.420872 0.000000 0.000000 +jointrthigh=0.165706 0.000000 0.000000 +jointrknee=-0.189675 0.000000 0.000000 +jointrankle=0.023335 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.011345 +jointshakey=0.000000 0.000000 -0.011345 +[frame15] +jointlthigh=-0.013949 0.000000 0.000000 +jointlknee=-1.348864 0.000000 0.000000 +jointlankle=0.391645 0.000000 0.000000 +jointrthigh=0.176048 0.000000 0.000000 +jointrknee=-0.190503 0.000000 0.000000 +jointrankle=0.013748 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.010472 +jointshakey=0.000000 0.000000 -0.010472 +[frame18] +jointlthigh=-0.132511 0.000000 0.000000 +jointlknee=-1.132111 0.000000 0.000000 +jointlankle=0.452681 0.000000 0.000000 +jointrthigh=0.150221 0.000000 0.000000 +jointrknee=0.034253 0.000000 0.000000 +jointrankle=-0.180991 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.007854 +jointshakey=0.000000 0.000000 -0.007854 +[frame27] +jointlthigh=-0.488198 0.000000 0.000000 +jointlknee=-0.481852 0.000000 0.000000 +jointlankle=0.635789 0.000000 0.000000 +jointrthigh=0.371813 0.000000 0.000000 +jointrknee=-0.153851 0.000000 0.000000 +jointrankle=0.090584 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame57] +jointlthigh=-0.485172 0.000000 0.000000 +jointlknee=-0.490326 0.000000 0.000000 +jointlankle=0.641220 0.000000 0.000000 +jointrthigh=0.357166 0.000000 0.000000 +jointrknee=-0.116382 0.000000 0.000000 +jointrankle=0.067576 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame8=0.000000 -5.350000 -0.771863 +frame14=0.000000 -5.350000 -1.572428 +frame15=0.000000 -5.350000 -1.572418 +frame18=0.000000 -5.350000 -3.594742 +frame27=0.000000 -5.350000 -3.594751 +frame57=0.000000 -5.350000 -3.928000 + +[KeyJointPos] +frame1=0.000000 0.000000 0.000000 +frame8=0.000000 -0.074512 0.000000 +frame14=0.000000 -0.138380 0.000000 +frame15=0.000000 -0.149024 0.000000 +frame18=0.000000 -0.180066 0.000000 +frame27=0.000000 -0.273189 0.000000 +frame57=0.000000 -0.273189 0.000000 diff --git a/CONTENT/BT/ANIMS/THRSBRI.ANI b/CONTENT/BT/ANIMS/THRSBRI.ANI new file mode 100644 index 0000000..f01e9ae --- /dev/null +++ b/CONTENT/BT/ANIMS/THRSBRI.ANI @@ -0,0 +1,118 @@ +[LAB_ONLY] + +[HEADER] +framecount=7 +framerate=30 +skeletonfile=thr.skl +jointcount=8 + +[Time] +frame1=0 +frame8=0.233333 +frame14=0.433333 +frame15=0.466667 +frame18=0.566667 +frame27=0.866667 +frame57=1.86667 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=0.054061 0.000000 0.000000 +jointlknee=-0.147065 0.000000 0.000000 +jointlankle=0.093170 0.000000 0.000000 +jointrthigh=0.079372 0.000000 0.000000 +jointrknee=-0.214384 0.000000 0.000000 +jointrankle=0.137470 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame8] +jointlthigh=0.129597 0.000000 0.000000 +jointlknee=-0.272149 0.000000 0.000000 +jointlankle=0.133323 0.000000 0.000000 +jointrthigh=0.213518 0.000000 0.000000 +jointrknee=-1.023142 0.000000 0.000000 +jointrankle=0.596234 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.006109 +jointshakey=0.000000 0.000000 0.006109 +[frame14] +jointlthigh=0.194341 0.000000 0.000000 +jointlknee=-0.262461 0.000000 0.000000 +jointlankle=0.066097 0.000000 0.000000 +jointrthigh=0.018546 0.000000 0.000000 +jointrknee=-1.302332 0.000000 0.000000 +jointrankle=0.420872 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.011345 +jointshakey=0.000000 0.000000 0.011345 +[frame15] +jointlthigh=0.205132 0.000000 0.000000 +jointlknee=-0.260846 0.000000 0.000000 +jointlankle=0.054893 0.000000 0.000000 +jointrthigh=-0.013949 0.000000 0.000000 +jointrknee=-1.348864 0.000000 0.000000 +jointrankle=0.391645 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.010472 +jointshakey=0.000000 0.000000 0.010472 +[frame18] +jointlthigh=0.184267 0.000000 0.000000 +jointlknee=-0.051188 0.000000 0.000000 +jointlankle=-0.128756 0.000000 0.000000 +jointrthigh=-0.132654 0.000000 0.000000 +jointrknee=-1.131721 0.000000 0.000000 +jointrankle=0.452435 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.007854 +jointshakey=0.000000 0.000000 0.007854 +[frame27] +jointlthigh=0.395614 0.000000 0.000000 +jointlknee=-0.220767 0.000000 0.000000 +jointlankle=0.133954 0.000000 0.000000 +jointrthigh=-0.488771 0.000000 0.000000 +jointrknee=-0.480292 0.000000 0.000000 +jointrankle=0.634804 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame57] +jointlthigh=0.384800 0.000000 0.000000 +jointlknee=-0.191501 0.000000 0.000000 +jointlankle=0.115461 0.000000 0.000000 +jointrthigh=-0.485598 0.000000 0.000000 +jointrknee=-0.489045 0.000000 0.000000 +jointrankle=0.640394 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame8=0.000000 -5.350000 -0.771863 +frame14=0.000000 -5.350000 -1.572428 +frame15=0.000000 -5.350000 -1.572418 +frame18=0.000000 -5.350000 -3.594742 +frame27=0.000000 -5.350000 -3.594751 +frame57=0.000000 -5.350000 -3.928000 + +[KeyJointPos] +frame1=0.000000 0.000000 0.000000 +frame8=0.000000 -0.074512 0.000000 +frame14=0.000000 -0.138380 0.000000 +frame15=0.000000 -0.149024 0.000000 +frame18=0.000000 -0.180066 0.000000 +frame27=0.000000 -0.273189 0.000000 +frame57=0.000000 -0.273189 0.000000 diff --git a/CONTENT/BT/ANIMS/THRSQT.ANI b/CONTENT/BT/ANIMS/THRSQT.ANI new file mode 100644 index 0000000..e69de29 diff --git a/CONTENT/BT/ANIMS/THRSWLI.ANI b/CONTENT/BT/ANIMS/THRSWLI.ANI new file mode 100644 index 0000000..0a5b331 --- /dev/null +++ b/CONTENT/BT/ANIMS/THRSWLI.ANI @@ -0,0 +1,166 @@ +[LAB_ONLY] + +[HEADER] +framecount=11 +framerate=30 +skeletonfile=thr.skl +jointcount=8 + +[Time] +frame1=0 +frame3=0.0666667 +frame5=0.133333 +frame7=0.2 +frame8=0.233333 +frame9=0.266667 +frame11=0.333333 +frame14=0.433333 +frame17=0.533333 +frame30=0.966667 +frame60=1.96667 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame3] +jointlthigh=0.024100 0.000000 0.000000 +jointlknee=-0.003358 0.000000 0.000000 +jointlankle=-0.006623 0.000000 0.000000 +jointrthigh=0.001478 0.000000 0.000000 +jointrknee=-0.132406 0.000000 0.000000 +jointrankle=0.131344 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.001309 +jointshakey=0.000000 0.000000 -0.001309 +[frame5] +jointlthigh=0.048201 0.000000 0.000000 +jointlknee=-0.006715 0.000000 0.000000 +jointlankle=-0.013247 0.000000 0.000000 +jointrthigh=0.010571 0.000000 0.000000 +jointrknee=-0.277930 0.000000 0.000000 +jointrankle=0.262932 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.002618 +jointshakey=0.000000 0.000000 -0.002618 +[frame7] +jointlthigh=0.072301 0.000000 0.000000 +jointlknee=-0.010073 0.000000 0.000000 +jointlankle=-0.019870 0.000000 0.000000 +jointrthigh=-0.027391 0.000000 0.000000 +jointrknee=-0.307667 0.000000 0.000000 +jointrankle=0.335590 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.003927 +jointshakey=0.000000 0.000000 -0.003927 +[frame8] +jointlthigh=0.084351 0.000000 0.000000 +jointlknee=-0.011752 0.000000 0.000000 +jointlankle=-0.023182 0.000000 0.000000 +jointrthigh=-0.050329 0.000000 0.000000 +jointrknee=-0.305939 0.000000 0.000000 +jointrankle=0.350132 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.004581 +jointshakey=0.000000 0.000000 -0.004581 +[frame9] +jointlthigh=0.111302 0.000000 0.000000 +jointlknee=-0.051764 0.000000 0.000000 +jointlankle=0.006232 0.000000 0.000000 +jointrthigh=-0.082383 0.000000 0.000000 +jointrknee=-0.294320 0.000000 0.000000 +jointrankle=0.374261 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.005091 +jointshakey=0.000000 0.000000 -0.005091 +[frame11] +jointlthigh=0.165204 0.000000 0.000000 +jointlknee=-0.131789 0.000000 0.000000 +jointlankle=0.065060 0.000000 0.000000 +jointrthigh=-0.119141 0.000000 0.000000 +jointrknee=-0.342128 0.000000 0.000000 +jointrankle=0.461383 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.006109 +jointshakey=0.000000 0.000000 -0.006109 +[frame14] +jointlthigh=0.246058 0.000000 0.000000 +jointlknee=-0.251826 0.000000 0.000000 +jointlankle=0.153303 0.000000 0.000000 +jointrthigh=-0.233183 0.000000 0.000000 +jointrknee=-0.242569 0.000000 0.000000 +jointrankle=0.475571 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.007636 +jointshakey=0.000000 0.000000 -0.007636 +[frame17] +jointlthigh=0.326911 0.000000 0.000000 +jointlknee=-0.371863 0.000000 0.000000 +jointlankle=0.241545 0.000000 0.000000 +jointrthigh=-0.341664 0.000000 0.000000 +jointrknee=-0.158458 0.000000 0.000000 +jointrankle=0.499595 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.009163 +jointshakey=0.000000 0.000000 -0.009163 +[frame30] +jointlthigh=0.412577 0.000000 0.000000 +jointlknee=-0.267172 0.000000 0.000000 +jointlankle=0.163490 0.000000 0.000000 +jointrthigh=-0.492373 0.000000 0.000000 +jointrknee=-0.475967 0.000000 0.000000 +jointrankle=0.650851 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame60] +jointlthigh=0.419090 0.000000 0.000000 +jointlknee=-0.285651 0.000000 0.000000 +jointlankle=0.175531 0.000000 0.000000 +jointrthigh=-0.497417 0.000000 0.000000 +jointrknee=-0.482823 0.000000 0.000000 +jointrankle=0.647496 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame3=0.000000 -5.350000 3.798857 +frame5=0.000000 -5.350000 3.798858 +frame7=0.000000 -5.350000 3.798857 +frame8=0.000000 -5.350000 3.798856 +frame9=0.000000 -5.350000 4.188498 +frame11=0.000000 -5.350000 4.188500 +frame14=0.000000 -5.350000 4.188501 +frame17=0.000000 -5.350000 4.188498 +frame30=0.000000 -5.350000 3.901384 +frame60=0.000000 -5.350000 4.226621 + +[KeyJointPos] +frame1=0.000000 0.000000 0.000000 +frame3=0.000000 -0.008806 0.000000 +frame5=0.000000 -0.017611 0.000000 +frame7=0.000000 -0.026417 0.000000 +frame8=0.000000 -0.030821 0.000000 +frame9=0.000000 -0.035675 0.000000 +frame11=0.000000 -0.045382 0.000000 +frame14=0.000000 -0.059944 0.000000 +frame17=0.000000 -0.074506 0.000000 +frame30=0.000000 -0.273276 0.000000 +frame60=0.000000 -0.273276 0.000000 diff --git a/CONTENT/BT/ANIMS/THRSWRI.ANI b/CONTENT/BT/ANIMS/THRSWRI.ANI new file mode 100644 index 0000000..8def228 --- /dev/null +++ b/CONTENT/BT/ANIMS/THRSWRI.ANI @@ -0,0 +1,166 @@ +[LAB_ONLY] + +[HEADER] +framecount=11 +framerate=30 +skeletonfile=thr.skl +jointcount=8 + +[Time] +frame1=0 +frame3=0.0666667 +frame5=0.133333 +frame7=0.2 +frame8=0.233333 +frame9=0.266667 +frame11=0.333333 +frame14=0.433333 +frame17=0.533333 +frame30=0.966667 +frame60=1.96667 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame3] +jointlthigh=0.009449 0.000000 0.000000 +jointlknee=-0.141535 0.000000 0.000000 +jointlankle=0.131737 0.000000 0.000000 +jointrthigh=0.022581 0.000000 0.000000 +jointrknee=0.002094 0.000000 0.000000 +jointrankle=-0.009710 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.001309 +jointshakey=0.000000 0.000000 0.001309 +[frame5] +jointlthigh=-0.014251 0.000000 0.000000 +jointlknee=-0.208457 0.000000 0.000000 +jointlankle=0.224263 0.000000 0.000000 +jointrthigh=0.045162 0.000000 0.000000 +jointrknee=0.004187 0.000000 0.000000 +jointrankle=-0.019421 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.002618 +jointshakey=0.000000 0.000000 0.002618 +[frame7] +jointlthigh=-0.027803 0.000000 0.000000 +jointlknee=-0.299858 0.000000 0.000000 +jointlankle=0.325345 0.000000 0.000000 +jointrthigh=0.067743 0.000000 0.000000 +jointrknee=0.006281 0.000000 0.000000 +jointrankle=-0.029131 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.003927 +jointshakey=0.000000 0.000000 0.003927 +[frame8] +jointlthigh=-0.054541 0.000000 0.000000 +jointlknee=-0.289288 0.000000 0.000000 +jointlankle=0.344161 0.000000 0.000000 +jointrthigh=0.079033 0.000000 0.000000 +jointrknee=0.007328 0.000000 0.000000 +jointrankle=-0.033987 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.004581 +jointshakey=0.000000 0.000000 0.004581 +[frame9] +jointlthigh=-0.076943 0.000000 0.000000 +jointlknee=-0.302143 0.000000 0.000000 +jointlankle=0.378478 0.000000 0.000000 +jointrthigh=0.100354 0.000000 0.000000 +jointrknee=-0.017352 0.000000 0.000000 +jointrankle=-0.014671 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.005091 +jointshakey=0.000000 0.000000 0.005091 +[frame11] +jointlthigh=-0.120802 0.000000 0.000000 +jointlknee=-0.326548 0.000000 0.000000 +jointlankle=0.448073 0.000000 0.000000 +jointrthigh=0.142997 0.000000 0.000000 +jointrknee=-0.066710 0.000000 0.000000 +jointrankle=0.023960 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.006109 +jointshakey=0.000000 0.000000 0.006109 +[frame14] +jointlthigh=-0.233090 0.000000 0.000000 +jointlknee=-0.234441 0.000000 0.000000 +jointlankle=0.468546 0.000000 0.000000 +jointrthigh=0.206960 0.000000 0.000000 +jointrknee=-0.140748 0.000000 0.000000 +jointrankle=0.081906 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.007636 +jointshakey=0.000000 0.000000 0.007636 +[frame17] +jointlthigh=-0.327410 0.000000 0.000000 +jointlknee=-0.186930 0.000000 0.000000 +jointlankle=0.515082 0.000000 0.000000 +jointrthigh=0.270924 0.000000 0.000000 +jointrknee=-0.214785 0.000000 0.000000 +jointrankle=0.139853 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.009163 +jointshakey=0.000000 0.000000 0.009163 +[frame30] +jointlthigh=-0.490579 0.000000 0.000000 +jointlknee=-0.481100 0.000000 0.000000 +jointlankle=0.654167 0.000000 0.000000 +jointrthigh=0.425042 0.000000 0.000000 +jointrknee=-0.301626 0.000000 0.000000 +jointrankle=0.185455 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame60] +jointlthigh=-0.497818 0.000000 0.000000 +jointlknee=-0.481707 0.000000 0.000000 +jointlankle=0.646786 0.000000 0.000000 +jointrthigh=0.423520 0.000000 0.000000 +jointrknee=-0.297491 0.000000 0.000000 +jointrankle=0.182923 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame3=0.000000 -5.350000 3.798857 +frame5=0.000000 -5.350000 3.798858 +frame7=0.000000 -5.350000 3.798857 +frame8=0.000000 -5.350000 3.798856 +frame9=0.000000 -5.350000 4.188498 +frame11=0.000000 -5.350000 4.188500 +frame14=0.000000 -5.350000 4.188501 +frame17=0.000000 -5.350000 4.188498 +frame30=0.000000 -5.350000 3.901384 +frame60=0.000000 -5.350000 4.226621 + +[KeyJointPos] +frame1=0.000000 0.000000 0.000000 +frame3=0.000000 -0.008806 0.000000 +frame5=0.000000 -0.017611 0.000000 +frame7=0.000000 -0.026417 0.000000 +frame8=0.000000 -0.030821 0.000000 +frame9=0.000000 -0.035675 0.000000 +frame11=0.000000 -0.045382 0.000000 +frame14=0.000000 -0.059944 0.000000 +frame17=0.000000 -0.074506 0.000000 +frame30=0.000000 -0.273276 0.000000 +frame60=0.000000 -0.273276 0.000000 diff --git a/CONTENT/BT/ANIMS/THRTRI.ANI b/CONTENT/BT/ANIMS/THRTRI.ANI new file mode 100644 index 0000000..e69de29 diff --git a/CONTENT/BT/ANIMS/THRTRN.ANI b/CONTENT/BT/ANIMS/THRTRN.ANI new file mode 100644 index 0000000..39b7c99 --- /dev/null +++ b/CONTENT/BT/ANIMS/THRTRN.ANI @@ -0,0 +1,87 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=thr.skl +jointcount=7 + +[Time] +frame1=0 +frame12=0.366667 +frame23=0.733333 +frame34=1.1 +frame45=1.46667 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate + +[frame1] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame12] +jointlthigh=0.293659 0.000000 0.000000 +jointlknee=-0.760082 0.000000 0.000000 +jointlankle=0.454452 0.000000 0.000000 +jointrthigh=0.058707 0.000000 0.000000 +jointrknee=-0.159500 0.000000 0.000000 +jointrankle=0.101507 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.018326 +[frame23] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame34] +jointlthigh=0.044154 0.000000 0.000000 +jointlknee=-0.119840 0.000000 0.000000 +jointlankle=0.076623 0.000000 0.000000 +jointrthigh=0.307909 0.000000 0.000000 +jointrknee=-0.797483 0.000000 0.000000 +jointrankle=0.477670 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.018326 +[frame45] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame12=0.000000 -5.350000 0.000000 +frame23=0.000000 -5.350000 0.000000 +frame34=0.000000 -5.350000 0.000000 +frame45=0.000000 -5.350000 0.000000 + +[KeyJointPos] +frame1=0.000000 0.000000 0.000000 +frame12=0.113777 -0.001042 0.000000 +frame23=0.000000 0.000000 0.000000 +frame34=-0.113777 -0.001042 0.000000 +frame45=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/THRTRNI.ANI b/CONTENT/BT/ANIMS/THRTRNI.ANI new file mode 100644 index 0000000..4960d11 --- /dev/null +++ b/CONTENT/BT/ANIMS/THRTRNI.ANI @@ -0,0 +1,94 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=thr.skl +jointcount=8 + +[Time] +frame1=0 +frame12=0.366667 +frame23=0.733333 +frame34=1.1 +frame45=1.46667 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame12] +jointlthigh=0.285597 0.000000 0.000000 +jointlknee=-0.733401 0.000000 0.000000 +jointlankle=0.435383 0.000000 0.000000 +jointrthigh=0.000030 0.000000 0.000000 +jointrknee=-0.000382 0.000000 0.000000 +jointrankle=0.000807 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.009163 +jointshakey=0.000000 0.000000 -0.009163 +[frame23] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame34] +jointlthigh=0.061957 0.000000 0.000000 +jointlknee=-0.168362 0.000000 0.000000 +jointlankle=0.107585 0.000000 0.000000 +jointrthigh=0.300350 0.000000 0.000000 +jointrknee=-0.771961 0.000000 0.000000 +jointrankle=0.459248 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.009163 +jointshakey=0.000000 0.000000 0.009163 +[frame45] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame12=0.000000 -5.350000 0.000000 +frame23=0.000000 -5.350000 0.000000 +frame34=0.000000 -5.350000 0.000000 +frame45=0.000000 -5.350000 0.000000 + +[KeyJointPos] +frame1=0.000000 0.000000 0.000000 +frame12=0.000000 0.000000 0.000000 +frame23=0.000000 0.000000 0.000000 +frame34=0.000000 0.000000 0.000000 +frame45=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/THRTSI.ANI b/CONTENT/BT/ANIMS/THRTSI.ANI new file mode 100644 index 0000000..e69de29 diff --git a/CONTENT/BT/ANIMS/THRTST.ANI b/CONTENT/BT/ANIMS/THRTST.ANI new file mode 100644 index 0000000..e69de29 diff --git a/CONTENT/BT/ANIMS/THRWGL.ANI b/CONTENT/BT/ANIMS/THRWGL.ANI new file mode 100644 index 0000000..92315c2 --- /dev/null +++ b/CONTENT/BT/ANIMS/THRWGL.ANI @@ -0,0 +1,98 @@ +[LAB_ONLY] + +[HEADER] +framecount=6 +framerate=30 +skeletonfile=thr.skl +jointcount=7 + +[Time] +frame1=0 +frame10=0.3 +frame17=0.533333 +frame22=0.7 +frame26=0.833333 +frame56=1.83333 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate + +[frame1] +jointlthigh=-0.492373 0.000000 0.000000 +jointlknee=-0.475967 0.000000 0.000000 +jointlankle=0.650851 0.000000 0.000000 +jointrthigh=0.412577 0.000000 0.000000 +jointrknee=-0.267172 0.000000 0.000000 +jointrankle=0.163490 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame10] +jointlthigh=-0.589846 0.000000 0.000000 +jointlknee=-0.516366 0.000000 0.000000 +jointlankle=0.287503 0.000000 0.000000 +jointrthigh=0.356485 0.000000 0.000000 +jointrknee=-0.233317 0.000000 0.000000 +jointrankle=0.070402 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.009425 +[frame17] +jointlthigh=-0.526360 0.000000 0.000000 +jointlknee=-0.511573 0.000000 0.000000 +jointlankle=-0.216180 0.000000 0.000000 +jointrthigh=0.224610 0.000000 0.000000 +jointrknee=-0.283318 0.000000 0.000000 +jointrankle=0.058921 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.016755 +[frame22] +jointlthigh=-0.254822 0.000000 0.000000 +jointlknee=-0.689241 0.000000 0.000000 +jointlankle=-0.543888 0.000000 0.000000 +jointrthigh=0.050688 0.000000 0.000000 +jointrknee=-0.218753 0.000000 0.000000 +jointrankle=0.163589 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.021991 +[frame26] +jointlthigh=-0.049463 0.000000 0.000000 +jointlknee=-0.814266 0.000000 0.000000 +jointlankle=-0.499950 0.000000 0.000000 +jointrthigh=-0.054350 0.000000 0.000000 +jointrknee=-0.236876 0.000000 0.000000 +jointrankle=0.288957 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.026180 +[frame56] +jointlthigh=-0.047994 0.000000 0.000000 +jointlknee=-0.818416 0.000000 0.000000 +jointlankle=-0.497190 0.000000 0.000000 +jointrthigh=-0.064916 0.000000 0.000000 +jointrknee=-0.205319 0.000000 0.000000 +jointrankle=0.268894 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.026180 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame10=0.000000 -5.350000 4.548289 +frame17=0.000000 -5.350000 4.548288 +frame22=0.000000 -5.350000 4.548289 +frame26=0.000000 -5.350000 4.548286 +frame56=0.000000 -5.350000 4.487109 + +[KeyJointPos] +frame1=0.000000 -0.273276 0.000000 +frame10=0.056409 -0.223840 0.000000 +frame17=0.101945 -0.125031 0.000000 +frame22=0.135982 -0.026330 0.000000 +frame26=0.165129 0.097180 0.000000 +frame56=0.165129 0.097180 0.000000 diff --git a/CONTENT/BT/ANIMS/THRWGLI.ANI b/CONTENT/BT/ANIMS/THRWGLI.ANI new file mode 100644 index 0000000..dc7987a --- /dev/null +++ b/CONTENT/BT/ANIMS/THRWGLI.ANI @@ -0,0 +1,106 @@ +[LAB_ONLY] + +[HEADER] +framecount=6 +framerate=30 +skeletonfile=thr.skl +jointcount=8 + +[Time] +frame1=0 +frame10=0.3 +frame17=0.533333 +frame22=0.7 +frame26=0.833333 +frame56=1.83333 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=-0.492373 0.000000 0.000000 +jointlknee=-0.475967 0.000000 0.000000 +jointlankle=0.650851 0.000000 0.000000 +jointrthigh=0.412577 0.000000 0.000000 +jointrknee=-0.267172 0.000000 0.000000 +jointrankle=0.163490 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame10] +jointlthigh=-0.594145 0.000000 0.000000 +jointlknee=-0.499391 0.000000 0.000000 +jointlankle=0.274820 0.000000 0.000000 +jointrthigh=0.337831 0.000000 0.000000 +jointrknee=-0.179758 0.000000 0.000000 +jointrankle=0.041441 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.005655 +jointshakey=0.000000 0.000000 -0.005655 +[frame17] +jointlthigh=-0.535066 0.000000 0.000000 +jointlknee=-0.479372 0.000000 0.000000 +jointlankle=-0.239721 0.000000 0.000000 +jointrthigh=0.191981 0.000000 0.000000 +jointrknee=-0.196985 0.000000 0.000000 +jointrankle=0.004486 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.010053 +jointshakey=0.000000 0.000000 -0.010053 +[frame22] +jointlthigh=-0.265290 0.000000 0.000000 +jointlknee=-0.652404 0.000000 0.000000 +jointlankle=-0.570269 0.000000 0.000000 +jointrthigh=0.083075 0.000000 0.000000 +jointrknee=-0.299415 0.000000 0.000000 +jointrankle=0.216330 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.013195 +jointshakey=0.000000 0.000000 -0.013195 +[frame26] +jointlthigh=-0.049463 0.000000 0.000000 +jointlknee=-0.814266 0.000000 0.000000 +jointlankle=-0.499950 0.000000 0.000000 +jointrthigh=-0.074480 0.000000 0.000000 +jointrknee=-0.190792 0.000000 0.000000 +jointrankle=0.267028 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.015708 +jointshakey=0.000000 0.000000 -0.015708 +[frame56] +jointlthigh=-0.047994 0.000000 0.000000 +jointlknee=-0.818416 0.000000 0.000000 +jointlankle=-0.497190 0.000000 0.000000 +jointrthigh=-0.068744 0.000000 0.000000 +jointrknee=-0.194564 0.000000 0.000000 +jointrankle=0.262712 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.015708 +jointshakey=0.000000 0.000000 -0.015708 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame10=0.000000 -5.350000 4.548289 +frame17=0.000000 -5.350000 4.548288 +frame22=0.000000 -5.350000 4.548289 +frame26=0.000000 -5.350000 4.548286 +frame56=0.000000 -5.350000 4.487109 + +[KeyJointPos] +frame1=0.000000 -0.273276 0.000000 +frame10=0.000000 -0.223574 0.000000 +frame17=0.000000 -0.124177 0.000000 +frame22=0.000000 -0.024836 0.000000 +frame26=0.000000 0.099342 0.000000 +frame56=0.000000 0.099342 0.000000 diff --git a/CONTENT/BT/ANIMS/THRWGR.ANI b/CONTENT/BT/ANIMS/THRWGR.ANI new file mode 100644 index 0000000..064fc58 --- /dev/null +++ b/CONTENT/BT/ANIMS/THRWGR.ANI @@ -0,0 +1,98 @@ +[LAB_ONLY] + +[HEADER] +framecount=6 +framerate=30 +skeletonfile=thr.skl +jointcount=7 + +[Time] +frame1=0 +frame10=0.3 +frame17=0.533333 +frame22=0.7 +frame26=0.833333 +frame56=1.83333 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate + +[frame1] +jointlthigh=0.412577 0.000000 0.000000 +jointlknee=-0.267172 0.000000 0.000000 +jointlankle=0.163490 0.000000 0.000000 +jointrthigh=-0.492373 0.000000 0.000000 +jointrknee=-0.475967 0.000000 0.000000 +jointrankle=0.650851 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame10] +jointlthigh=0.323867 0.000000 0.000000 +jointlknee=-0.137254 0.000000 0.000000 +jointlankle=0.006893 0.000000 0.000000 +jointrthigh=-0.576287 0.000000 0.000000 +jointrknee=-0.548611 0.000000 0.000000 +jointrankle=0.306218 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.009425 +[frame17] +jointlthigh=0.199898 0.000000 0.000000 +jointlknee=-0.229088 0.000000 0.000000 +jointlankle=0.029444 0.000000 0.000000 +jointrthigh=-0.525512 0.000000 0.000000 +jointrknee=-0.530688 0.000000 0.000000 +jointrankle=-0.197871 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.016755 +[frame22] +jointlthigh=0.050688 0.000000 0.000000 +jointlknee=-0.218753 0.000000 0.000000 +jointlankle=0.163589 0.000000 0.000000 +jointrthigh=-0.254822 0.000000 0.000000 +jointrknee=-0.689241 0.000000 0.000000 +jointrankle=-0.543888 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.021991 +[frame26] +jointlthigh=-0.054350 0.000000 0.000000 +jointlknee=-0.236876 0.000000 0.000000 +jointlankle=0.288957 0.000000 0.000000 +jointrthigh=-0.049463 0.000000 0.000000 +jointrknee=-0.814266 0.000000 0.000000 +jointrankle=-0.499950 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.026180 +[frame56] +jointlthigh=-0.064810 0.000000 0.000000 +jointlknee=-0.205902 0.000000 0.000000 +jointlankle=0.269529 0.000000 0.000000 +jointrthigh=-0.048643 0.000000 0.000000 +jointrknee=-0.816664 0.000000 0.000000 +jointrankle=-0.498328 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.026180 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame10=0.000000 -5.350000 4.548289 +frame17=0.000000 -5.350000 4.548288 +frame22=0.000000 -5.350000 4.548289 +frame26=0.000000 -5.350000 4.548286 +frame56=0.000000 -5.350000 4.487109 + +[KeyJointPos] +frame1=0.000000 -0.273276 0.000000 +frame10=-0.056409 -0.223840 0.000000 +frame17=-0.101945 -0.125031 0.000000 +frame22=-0.135982 -0.026330 0.000000 +frame26=-0.165129 0.097180 0.000000 +frame56=-0.165129 0.097180 0.000000 diff --git a/CONTENT/BT/ANIMS/THRWGRI.ANI b/CONTENT/BT/ANIMS/THRWGRI.ANI new file mode 100644 index 0000000..f5ef877 --- /dev/null +++ b/CONTENT/BT/ANIMS/THRWGRI.ANI @@ -0,0 +1,106 @@ +[LAB_ONLY] + +[HEADER] +framecount=6 +framerate=30 +skeletonfile=thr.skl +jointcount=8 + +[Time] +frame1=0 +frame10=0.3 +frame17=0.533333 +frame22=0.7 +frame26=0.833333 +frame56=1.83333 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=0.412577 0.000000 0.000000 +jointlknee=-0.267172 0.000000 0.000000 +jointlankle=0.163490 0.000000 0.000000 +jointrthigh=-0.492373 0.000000 0.000000 +jointrknee=-0.475967 0.000000 0.000000 +jointrankle=0.650851 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame10] +jointlthigh=0.328207 0.000000 0.000000 +jointlknee=-0.132440 0.000000 0.000000 +jointlankle=-0.023875 0.000000 0.000000 +jointrthigh=-0.594145 0.000000 0.000000 +jointrknee=-0.499391 0.000000 0.000000 +jointrankle=0.274820 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.005655 +jointshakey=0.000000 0.000000 0.005655 +[frame17] +jointlthigh=0.180326 0.000000 0.000000 +jointlknee=-0.165998 0.000000 0.000000 +jointlankle=-0.015017 0.000000 0.000000 +jointrthigh=-0.525761 0.000000 0.000000 +jointrknee=-0.515321 0.000000 0.000000 +jointrankle=-0.214691 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.010053 +jointshakey=0.000000 0.000000 0.010053 +[frame22] +jointlthigh=0.079831 0.000000 0.000000 +jointlknee=-0.295589 0.000000 0.000000 +jointlankle=0.211290 0.000000 0.000000 +jointrthigh=-0.251029 0.000000 0.000000 +jointrknee=-0.684501 0.000000 0.000000 +jointrankle=-0.580085 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.013195 +jointshakey=0.000000 0.000000 0.013195 +[frame26] +jointlthigh=-0.080860 0.000000 0.000000 +jointlknee=-0.165134 0.000000 0.000000 +jointlankle=0.246070 0.000000 0.000000 +jointrthigh=-0.037502 0.000000 0.000000 +jointrknee=-0.852489 0.000000 0.000000 +jointrankle=-0.472777 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.015708 +jointshakey=0.000000 0.000000 0.015708 +[frame56] +jointlthigh=-0.074920 0.000000 0.000000 +jointlknee=-0.176755 0.000000 0.000000 +jointlankle=0.250692 0.000000 0.000000 +jointrthigh=-0.048643 0.000000 0.000000 +jointrknee=-0.816664 0.000000 0.000000 +jointrankle=-0.498328 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.015708 +jointshakey=0.000000 0.000000 0.015708 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame10=0.000000 -5.350000 4.548289 +frame17=0.000000 -5.350000 4.548288 +frame22=0.000000 -5.350000 4.548289 +frame26=0.000000 -5.350000 4.548286 +frame56=0.000000 -5.350000 4.487109 + +[KeyJointPos] +frame1=0.000000 -0.273276 0.000000 +frame10=0.000000 -0.223574 0.000000 +frame17=0.000000 -0.124177 0.000000 +frame22=0.000000 -0.024836 0.000000 +frame26=0.000000 0.099342 0.000000 +frame56=0.000000 0.099342 0.000000 diff --git a/CONTENT/BT/ANIMS/THRWRL.ANI b/CONTENT/BT/ANIMS/THRWRL.ANI new file mode 100644 index 0000000..68aa236 --- /dev/null +++ b/CONTENT/BT/ANIMS/THRWRL.ANI @@ -0,0 +1,108 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=thr.skl +jointcount=10 + +[Time] +frame1=0 +frame5=0.133333 +frame10=0.3 +frame17=0.533333 +frame47=1.53333 + +[JointIndices] +jointhip=1 +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointrshoulder=4 +jointlshoulder=6 +jointlocal=0 + +[JointType] +jointhip=hingex +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointrshoulder=hingex +jointlshoulder=hingex +jointlocal=balltranslate + +[frame1] +jointhip=-0.078540 0.000000 0.000000 +jointlthigh=-0.491890 0.000000 0.000000 +jointlknee=-0.472590 0.000000 0.000000 +jointlankle=0.630289 0.000000 0.000000 +jointrthigh=0.395614 0.000000 0.000000 +jointrknee=-0.220767 0.000000 0.000000 +jointrankle=0.133954 0.000000 0.000000 +jointrshoulder=0.078540 0.000000 0.000000 +jointlshoulder=0.078540 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame5] +jointhip=-0.117585 0.000000 0.000000 +jointlthigh=-0.074797 0.000000 0.000000 +jointlknee=-1.239543 0.000000 0.000000 +jointlankle=-0.160774 0.000000 0.000000 +jointrthigh=0.321226 0.000000 0.000000 +jointrknee=-0.608844 0.000000 0.000000 +jointrankle=0.287300 0.000000 0.000000 +jointrshoulder=0.117585 0.000000 0.000000 +jointlshoulder=0.117585 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.010472 +[frame10] +jointhip=-0.156629 0.000000 0.000000 +jointlthigh=0.301094 0.000000 0.000000 +jointlknee=-1.315069 0.000000 0.000000 +jointlankle=0.405091 0.000000 0.000000 +jointrthigh=-0.150137 0.000000 0.000000 +jointrknee=-0.578414 0.000000 0.000000 +jointrankle=0.731094 0.000000 0.000000 +jointrshoulder=0.156629 0.000000 0.000000 +jointlshoulder=0.156629 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.026180 +[frame17] +jointhip=-0.208689 0.000000 0.000000 +jointlthigh=0.733611 0.000000 0.000000 +jointlknee=-0.461245 0.000000 0.000000 +jointlankle=0.195510 0.000000 0.000000 +jointrthigh=-0.519965 0.000000 0.000000 +jointrknee=-0.483357 0.000000 0.000000 +jointrankle=-0.238857 0.000000 0.000000 +jointrshoulder=0.208689 0.000000 0.000000 +jointlshoulder=0.208689 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.013090 +[frame47] +jointhip=-0.208689 0.000000 0.000000 +jointlthigh=0.733611 0.000000 0.000000 +jointlknee=-0.461245 0.000000 0.000000 +jointlankle=0.195510 0.000000 0.000000 +jointrthigh=-0.527775 0.000000 0.000000 +jointrknee=-0.461195 0.000000 0.000000 +jointrankle=-0.253401 0.000000 0.000000 +jointrshoulder=0.208689 0.000000 0.000000 +jointlshoulder=0.208689 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.013090 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame5=0.000000 -5.350000 11.643741 +frame10=0.000000 -5.350000 14.028008 +frame17=0.000000 -5.350000 16.229568 +frame47=0.000000 -5.350000 14.630703 + +[KeyJointPos] +frame1=0.000000 -0.273276 0.000000 +frame5=0.060987 -0.385267 0.000000 +frame10=0.157327 -0.200748 0.000000 +frame17=0.080946 -0.025365 0.000000 +frame47=0.080946 -0.025365 0.000000 diff --git a/CONTENT/BT/ANIMS/THRWRLI.ANI b/CONTENT/BT/ANIMS/THRWRLI.ANI new file mode 100644 index 0000000..1a87edb --- /dev/null +++ b/CONTENT/BT/ANIMS/THRWRLI.ANI @@ -0,0 +1,106 @@ +[LAB_ONLY] + +[HEADER] +framecount=6 +framerate=30 +skeletonfile=thr.skl +jointcount=8 + +[Time] +frame1=0 +frame5=0.133333 +frame10=0.3 +frame14=0.433333 +frame17=0.533333 +frame47=1.53333 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=-0.491890 0.000000 0.000000 +jointlknee=-0.472590 0.000000 0.000000 +jointlankle=0.630289 0.000000 0.000000 +jointrthigh=0.395614 0.000000 0.000000 +jointrknee=-0.220767 0.000000 0.000000 +jointrankle=0.133954 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame5] +jointlthigh=-0.080152 0.000000 0.000000 +jointlknee=-1.228141 0.000000 0.000000 +jointlankle=-0.166943 0.000000 0.000000 +jointrthigh=0.320317 0.000000 0.000000 +jointrknee=-0.606718 0.000000 0.000000 +jointrankle=0.286740 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.007854 +jointshakey=0.000000 0.000000 -0.007854 +[frame10] +jointlthigh=0.301094 0.000000 0.000000 +jointlknee=-1.315069 0.000000 0.000000 +jointlankle=0.405091 0.000000 0.000000 +jointrthigh=-0.165640 0.000000 0.000000 +jointrknee=-0.532483 0.000000 0.000000 +jointrankle=0.702111 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.015708 +jointshakey=0.000000 0.000000 -0.015708 +[frame14] +jointlthigh=0.548246 0.000000 0.000000 +jointlknee=-0.827170 0.000000 0.000000 +jointlankle=0.285330 0.000000 0.000000 +jointrthigh=-0.292631 0.000000 0.000000 +jointrknee=-0.837608 0.000000 0.000000 +jointrankle=0.406562 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.011968 +jointshakey=0.000000 0.000000 -0.011968 +[frame17] +jointlthigh=0.733611 0.000000 0.000000 +jointlknee=-0.461245 0.000000 0.000000 +jointlankle=0.195510 0.000000 0.000000 +jointrthigh=-0.535333 0.000000 0.000000 +jointrknee=-0.430700 0.000000 0.000000 +jointrankle=-0.277073 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.009163 +jointshakey=0.000000 0.000000 -0.009163 +[frame47] +jointlthigh=0.733611 0.000000 0.000000 +jointlknee=-0.461245 0.000000 0.000000 +jointlankle=0.195510 0.000000 0.000000 +jointrthigh=-0.534118 0.000000 0.000000 +jointrknee=-0.442685 0.000000 0.000000 +jointrankle=-0.268295 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.009163 +jointshakey=0.000000 0.000000 -0.009163 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame5=0.000000 -5.350000 11.643741 +frame10=0.000000 -5.350000 14.028008 +frame14=0.000000 -5.350000 16.229568 +frame17=0.000000 -5.350000 16.229568 +frame47=0.000000 -5.350000 14.630703 + +[KeyJointPos] +frame1=0.000000 -0.273276 0.000000 +frame5=0.000000 -0.384948 0.000000 +frame10=0.000000 -0.198689 0.000000 +frame14=0.000000 -0.099344 0.000000 +frame17=0.000000 -0.024836 0.000000 +frame47=0.000000 -0.024836 0.000000 diff --git a/CONTENT/BT/ANIMS/THRWRR.ANI b/CONTENT/BT/ANIMS/THRWRR.ANI new file mode 100644 index 0000000..a9a6275 --- /dev/null +++ b/CONTENT/BT/ANIMS/THRWRR.ANI @@ -0,0 +1,108 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=thr.skl +jointcount=10 + +[Time] +frame1=0 +frame5=0.133333 +frame10=0.3 +frame17=0.533333 +frame47=1.53333 + +[JointIndices] +jointhip=1 +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointrshoulder=4 +jointlshoulder=6 +jointlocal=0 + +[JointType] +jointhip=hingex +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointrshoulder=hingex +jointlshoulder=hingex +jointlocal=balltranslate + +[frame1] +jointhip=-0.078540 0.000000 0.000000 +jointlthigh=0.395614 0.000000 0.000000 +jointlknee=-0.220767 0.000000 0.000000 +jointlankle=0.133954 0.000000 0.000000 +jointrthigh=-0.491890 0.000000 0.000000 +jointrknee=-0.472590 0.000000 0.000000 +jointrankle=0.630289 0.000000 0.000000 +jointrshoulder=0.078540 0.000000 0.000000 +jointlshoulder=0.078540 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame5] +jointhip=-0.117585 0.000000 0.000000 +jointlthigh=0.321226 0.000000 0.000000 +jointlknee=-0.608844 0.000000 0.000000 +jointlankle=0.287300 0.000000 0.000000 +jointrthigh=-0.074797 0.000000 0.000000 +jointrknee=-1.239543 0.000000 0.000000 +jointrankle=-0.160774 0.000000 0.000000 +jointrshoulder=0.117585 0.000000 0.000000 +jointlshoulder=0.117585 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.010472 +[frame10] +jointhip=-0.156629 0.000000 0.000000 +jointlthigh=-0.186490 0.000000 0.000000 +jointlknee=-0.468045 0.000000 0.000000 +jointlankle=0.656928 0.000000 0.000000 +jointrthigh=0.301094 0.000000 0.000000 +jointrknee=-1.315069 0.000000 0.000000 +jointrankle=0.405091 0.000000 0.000000 +jointrshoulder=0.156629 0.000000 0.000000 +jointlshoulder=0.156629 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.026180 +[frame17] +jointhip=-0.208689 0.000000 0.000000 +jointlthigh=-0.535144 0.000000 0.000000 +jointlknee=-0.429251 0.000000 0.000000 +jointlankle=-0.277879 0.000000 0.000000 +jointrthigh=0.733611 0.000000 0.000000 +jointrknee=-0.461245 0.000000 0.000000 +jointrankle=0.195510 0.000000 0.000000 +jointrshoulder=0.208689 0.000000 0.000000 +jointlshoulder=0.208689 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.013090 +[frame47] +jointhip=-0.208689 0.000000 0.000000 +jointlthigh=-0.532673 0.000000 0.000000 +jointlknee=-0.436212 0.000000 0.000000 +jointlankle=-0.273442 0.000000 0.000000 +jointrthigh=0.733611 0.000000 0.000000 +jointrknee=-0.461245 0.000000 0.000000 +jointrankle=0.195510 0.000000 0.000000 +jointrshoulder=0.208689 0.000000 0.000000 +jointlshoulder=0.208689 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.013090 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame5=0.000000 -5.350000 11.643741 +frame10=0.000000 -5.350000 14.028008 +frame17=0.000000 -5.350000 16.229568 +frame47=0.000000 -5.350000 14.639702 + +[KeyJointPos] +frame1=0.000000 -0.273276 0.000000 +frame5=-0.060987 -0.385267 0.000000 +frame10=-0.157327 -0.200748 0.000000 +frame17=-0.080946 -0.025365 0.000000 +frame47=-0.080946 -0.025365 0.000000 diff --git a/CONTENT/BT/ANIMS/THRWRRI.ANI b/CONTENT/BT/ANIMS/THRWRRI.ANI new file mode 100644 index 0000000..c4f8105 --- /dev/null +++ b/CONTENT/BT/ANIMS/THRWRRI.ANI @@ -0,0 +1,106 @@ +[LAB_ONLY] + +[HEADER] +framecount=6 +framerate=30 +skeletonfile=thr.skl +jointcount=8 + +[Time] +frame1=0 +frame5=0.133333 +frame10=0.3 +frame14=0.433333 +frame17=0.533333 +frame47=1.53333 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=0.395614 0.000000 0.000000 +jointlknee=-0.220767 0.000000 0.000000 +jointlankle=0.133954 0.000000 0.000000 +jointrthigh=-0.491890 0.000000 0.000000 +jointrknee=-0.472590 0.000000 0.000000 +jointrankle=0.630289 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame5] +jointlthigh=0.320418 0.000000 0.000000 +jointlknee=-0.607221 0.000000 0.000000 +jointlankle=0.287135 0.000000 0.000000 +jointrthigh=-0.077469 0.000000 0.000000 +jointrknee=-1.233869 0.000000 0.000000 +jointrankle=-0.163836 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.007854 +jointshakey=0.000000 0.000000 0.007854 +[frame10] +jointlthigh=-0.195562 0.000000 0.000000 +jointlknee=-0.439601 0.000000 0.000000 +jointlankle=0.636202 0.000000 0.000000 +jointrthigh=0.301094 0.000000 0.000000 +jointrknee=-1.315069 0.000000 0.000000 +jointrankle=0.405091 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.015708 +jointshakey=0.000000 0.000000 0.015708 +[frame14] +jointlthigh=-0.295852 0.000000 0.000000 +jointlknee=-0.837882 0.000000 0.000000 +jointlankle=0.418120 0.000000 0.000000 +jointrthigh=0.548246 0.000000 0.000000 +jointrknee=-0.827170 0.000000 0.000000 +jointrankle=0.285330 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.011968 +jointshakey=0.000000 0.000000 0.011968 +[frame17] +jointlthigh=-0.536050 0.000000 0.000000 +jointlknee=-0.423270 0.000000 0.000000 +jointlankle=-0.283956 0.000000 0.000000 +jointrthigh=0.733611 0.000000 0.000000 +jointrknee=-0.461245 0.000000 0.000000 +jointrankle=0.195510 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.009163 +jointshakey=0.000000 0.000000 0.009163 +[frame47] +jointlthigh=-0.538853 0.000000 0.000000 +jointlknee=-0.415233 0.000000 0.000000 +jointlankle=-0.289011 0.000000 0.000000 +jointrthigh=0.733611 0.000000 0.000000 +jointrknee=-0.461245 0.000000 0.000000 +jointrankle=0.195508 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.009163 +jointshakey=0.000000 0.000000 0.009163 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame5=0.000000 -5.350000 11.643741 +frame10=0.000000 -5.350000 14.028008 +frame14=0.000000 -5.350000 16.229568 +frame17=0.000000 -5.350000 16.229568 +frame47=0.000000 -5.350000 14.639702 + +[KeyJointPos] +frame1=0.000000 -0.273276 0.000000 +frame5=0.000000 -0.384948 0.000000 +frame10=0.000000 -0.198689 0.000000 +frame14=0.000000 -0.099344 0.000000 +frame17=0.000000 -0.024836 0.000000 +frame47=0.000000 -0.024836 0.000000 diff --git a/CONTENT/BT/ANIMS/THRWSLI.ANI b/CONTENT/BT/ANIMS/THRWSLI.ANI new file mode 100644 index 0000000..b4d32fc --- /dev/null +++ b/CONTENT/BT/ANIMS/THRWSLI.ANI @@ -0,0 +1,94 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=thr.skl +jointcount=8 + +[Time] +frame1=0 +frame7=0.2 +frame12=0.366667 +frame17=0.533333 +frame22=0.7 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=-0.488771 0.000000 0.000000 +jointlknee=-0.480292 0.000000 0.000000 +jointlankle=0.634804 0.000000 0.000000 +jointrthigh=0.395614 0.000000 0.000000 +jointrknee=-0.220767 0.000000 0.000000 +jointrankle=0.133954 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame7] +jointlthigh=-0.150568 0.000000 0.000000 +jointlknee=-1.044379 0.000000 0.000000 +jointlankle=0.668538 0.000000 0.000000 +jointrthigh=0.254865 0.000000 0.000000 +jointrknee=-0.120479 0.000000 0.000000 +jointrankle=-0.057184 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.006188 +jointshakey=0.000000 0.000000 -0.006188 +[frame12] +jointlthigh=-0.027415 0.000000 0.000000 +jointlknee=-0.976342 0.000000 0.000000 +jointlankle=0.616031 0.000000 0.000000 +jointrthigh=0.166625 0.000000 0.000000 +jointrknee=-0.162448 0.000000 0.000000 +jointrankle=-0.004668 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.011345 +jointshakey=0.000000 0.000000 -0.011345 +[frame17] +jointlthigh=0.057597 0.000000 0.000000 +jointlknee=-0.727137 0.000000 0.000000 +jointlankle=0.611028 0.000000 0.000000 +jointrthigh=0.105456 0.000000 0.000000 +jointrknee=-0.187485 0.000000 0.000000 +jointrankle=0.082065 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.005672 +jointshakey=0.000000 0.000000 -0.005672 +[frame22] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame7=0.000000 -5.350000 3.921542 +frame12=0.000000 -5.350000 3.921547 +frame17=0.000000 -5.350000 2.201397 +frame22=0.000000 -5.350000 1.080609 + +[KeyJointPos] +frame1=0.000000 -0.273189 0.000000 +frame7=0.000000 -0.205463 0.000000 +frame12=0.000000 -0.149024 0.000000 +frame17=0.000000 -0.074512 0.000000 +frame22=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/THRWSRI.ANI b/CONTENT/BT/ANIMS/THRWSRI.ANI new file mode 100644 index 0000000..2840a46 --- /dev/null +++ b/CONTENT/BT/ANIMS/THRWSRI.ANI @@ -0,0 +1,94 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=thr.skl +jointcount=8 + +[Time] +frame1=0 +frame7=0.2 +frame12=0.366667 +frame17=0.533333 +frame22=0.7 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=0.395614 0.000000 0.000000 +jointlknee=-0.220767 0.000000 0.000000 +jointlankle=0.133954 0.000000 0.000000 +jointrthigh=-0.488771 0.000000 0.000000 +jointrknee=-0.480292 0.000000 0.000000 +jointrankle=0.634804 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame7] +jointlthigh=0.254865 0.000000 0.000000 +jointlknee=-0.120479 0.000000 0.000000 +jointlankle=-0.057184 0.000000 0.000000 +jointrthigh=-0.150568 0.000000 0.000000 +jointrknee=-1.044379 0.000000 0.000000 +jointrankle=0.668538 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.006188 +jointshakey=0.000000 0.000000 0.006188 +[frame12] +jointlthigh=0.187099 0.000000 0.000000 +jointlknee=-0.208450 0.000000 0.000000 +jointlankle=0.018567 0.000000 0.000000 +jointrthigh=-0.030099 0.000000 0.000000 +jointrknee=-0.967366 0.000000 0.000000 +jointrankle=0.609624 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.011345 +jointshakey=0.000000 0.000000 0.011345 +[frame17] +jointlthigh=0.109106 0.000000 0.000000 +jointlknee=-0.194308 0.000000 0.000000 +jointlankle=0.083546 0.000000 0.000000 +jointrthigh=0.057598 0.000000 0.000000 +jointrknee=-0.727141 0.000000 0.000000 +jointrankle=0.611031 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.005672 +jointshakey=0.000000 0.000000 0.005672 +[frame22] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame7=0.000000 -5.350000 3.921542 +frame12=0.000000 -5.350000 3.921547 +frame17=0.000000 -5.350000 2.201397 +frame22=0.000000 -5.350000 1.080609 + +[KeyJointPos] +frame1=0.000000 -0.273189 0.000000 +frame7=0.000000 -0.205463 0.000000 +frame12=0.000000 -0.149024 0.000000 +frame17=0.000000 -0.074512 0.000000 +frame22=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/ANIMS/THRWWL.ANI b/CONTENT/BT/ANIMS/THRWWL.ANI new file mode 100644 index 0000000..6dbbbfe --- /dev/null +++ b/CONTENT/BT/ANIMS/THRWWL.ANI @@ -0,0 +1,76 @@ +[LAB_ONLY] + +[HEADER] +framecount=4 +framerate=30 +skeletonfile=thr.skl +jointcount=7 + +[Time] +frame1=0 +frame4=0.1 +frame9=0.266667 +frame13=0.4 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate + +[frame1] +jointlthigh=-0.491890 0.000000 0.000000 +jointlknee=-0.472590 0.000000 0.000000 +jointlankle=0.630289 0.000000 0.000000 +jointrthigh=0.395614 0.000000 0.000000 +jointrknee=-0.220767 0.000000 0.000000 +jointrankle=0.133954 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame4] +jointlthigh=-0.126581 0.000000 0.000000 +jointlknee=-1.117190 0.000000 0.000000 +jointlankle=-0.265688 0.000000 0.000000 +jointrthigh=0.176339 0.000000 0.000000 +jointrknee=-0.201414 0.000000 0.000000 +jointrankle=0.024431 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.017453 +[frame9] +jointlthigh=0.296118 0.000000 0.000000 +jointlknee=-1.254241 0.000000 0.000000 +jointlankle=0.620185 0.000000 0.000000 +jointrthigh=-0.243920 0.000000 0.000000 +jointrknee=-0.299546 0.000000 0.000000 +jointrankle=0.543405 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.013090 +[frame13] +jointlthigh=0.395614 0.000000 0.000000 +jointlknee=-0.220767 0.000000 0.000000 +jointlankle=0.133954 0.000000 0.000000 +jointrthigh=-0.488196 0.000000 0.000000 +jointrknee=-0.483620 0.000000 0.000000 +jointrankle=0.651607 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame4=0.000000 -5.350000 14.534702 +frame9=0.000000 -5.350000 14.400597 +frame13=0.000000 -5.350000 14.646976 + +[KeyJointPos] +frame1=0.000000 -0.273276 0.000000 +frame4=0.105758 -0.149948 0.000000 +frame9=0.080296 -0.075032 0.000000 +frame13=0.000000 -0.273189 0.000000 diff --git a/CONTENT/BT/ANIMS/THRWWLI.ANI b/CONTENT/BT/ANIMS/THRWWLI.ANI new file mode 100644 index 0000000..daf6e79 --- /dev/null +++ b/CONTENT/BT/ANIMS/THRWWLI.ANI @@ -0,0 +1,82 @@ +[LAB_ONLY] + +[HEADER] +framecount=4 +framerate=30 +skeletonfile=thr.skl +jointcount=8 + +[Time] +frame1=0 +frame4=0.1 +frame9=0.266667 +frame13=0.4 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=-0.491890 0.000000 0.000000 +jointlknee=-0.472590 0.000000 0.000000 +jointlankle=0.630289 0.000000 0.000000 +jointrthigh=0.395614 0.000000 0.000000 +jointrknee=-0.220767 0.000000 0.000000 +jointrankle=0.133954 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame4] +jointlthigh=-0.133885 0.000000 0.000000 +jointlknee=-1.101011 0.000000 0.000000 +jointlankle=-0.274800 0.000000 0.000000 +jointrthigh=0.165597 0.000000 0.000000 +jointrknee=-0.179633 0.000000 0.000000 +jointrankle=0.014138 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.011345 +jointshakey=0.000000 0.000000 -0.011345 +[frame9] +jointlthigh=0.296118 0.000000 0.000000 +jointlknee=-1.254241 0.000000 0.000000 +jointlankle=0.620185 0.000000 0.000000 +jointrthigh=-0.254172 0.000000 0.000000 +jointrknee=-0.270229 0.000000 0.000000 +jointrankle=0.523918 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.009163 +jointshakey=0.000000 0.000000 -0.009163 +[frame13] +jointlthigh=0.395614 0.000000 0.000000 +jointlknee=-0.220767 0.000000 0.000000 +jointlankle=0.133954 0.000000 0.000000 +jointrthigh=-0.488196 0.000000 0.000000 +jointrknee=-0.483620 0.000000 0.000000 +jointrankle=0.651607 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame4=0.000000 -5.350000 14.534702 +frame9=0.000000 -5.350000 14.400597 +frame13=0.000000 -5.350000 14.646976 + +[KeyJointPos] +frame1=0.000000 -0.273276 0.000000 +frame4=0.000000 -0.149024 0.000000 +frame9=0.000000 -0.074506 0.000000 +frame13=0.000000 -0.273189 0.000000 diff --git a/CONTENT/BT/ANIMS/THRWWR.ANI b/CONTENT/BT/ANIMS/THRWWR.ANI new file mode 100644 index 0000000..8c3389f --- /dev/null +++ b/CONTENT/BT/ANIMS/THRWWR.ANI @@ -0,0 +1,76 @@ +[LAB_ONLY] + +[HEADER] +framecount=4 +framerate=30 +skeletonfile=thr.skl +jointcount=7 + +[Time] +frame1=0 +frame4=0.1 +frame9=0.266667 +frame13=0.4 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate + +[frame1] +jointlthigh=0.395614 0.000000 0.000000 +jointlknee=-0.220767 0.000000 0.000000 +jointlankle=0.133954 0.000000 0.000000 +jointrthigh=-0.491890 0.000000 0.000000 +jointrknee=-0.472590 0.000000 0.000000 +jointrankle=0.630289 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame4] +jointlthigh=0.170555 0.000000 0.000000 +jointlknee=-0.186947 0.000000 0.000000 +jointlankle=0.016811 0.000000 0.000000 +jointrthigh=-0.133886 0.000000 0.000000 +jointrknee=-1.101006 0.000000 0.000000 +jointrankle=-0.274804 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.017453 +[frame9] +jointlthigh=-0.245446 0.000000 0.000000 +jointlknee=-0.293273 0.000000 0.000000 +jointlankle=0.539197 0.000000 0.000000 +jointrthigh=0.296118 0.000000 0.000000 +jointrknee=-1.254241 0.000000 0.000000 +jointrankle=0.620185 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.013090 +[frame13] +jointlthigh=-0.488196 0.000000 0.000000 +jointlknee=-0.483620 0.000000 0.000000 +jointlankle=0.651607 0.000000 0.000000 +jointrthigh=0.395614 0.000000 0.000000 +jointrknee=-0.220767 0.000000 0.000000 +jointrankle=0.133954 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame4=0.000000 -5.350000 14.534702 +frame9=0.000000 -5.350000 14.400597 +frame13=0.000000 -5.350000 14.646976 + +[KeyJointPos] +frame1=0.000000 -0.273276 0.000000 +frame4=-0.105758 -0.149948 0.000000 +frame9=-0.080296 -0.075032 0.000000 +frame13=0.000000 -0.273189 0.000000 diff --git a/CONTENT/BT/ANIMS/THRWWRI.ANI b/CONTENT/BT/ANIMS/THRWWRI.ANI new file mode 100644 index 0000000..97554d0 --- /dev/null +++ b/CONTENT/BT/ANIMS/THRWWRI.ANI @@ -0,0 +1,82 @@ +[LAB_ONLY] + +[HEADER] +framecount=4 +framerate=30 +skeletonfile=thr.skl +jointcount=8 + +[Time] +frame1=0 +frame4=0.1 +frame9=0.266667 +frame13=0.4 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=0.395614 0.000000 0.000000 +jointlknee=-0.220767 0.000000 0.000000 +jointlankle=0.133954 0.000000 0.000000 +jointrthigh=-0.491890 0.000000 0.000000 +jointrknee=-0.472590 0.000000 0.000000 +jointrankle=0.630289 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame4] +jointlthigh=0.147616 0.000000 0.000000 +jointlknee=-0.129438 0.000000 0.000000 +jointlankle=-0.015679 0.000000 0.000000 +jointrthigh=-0.141287 0.000000 0.000000 +jointrknee=-1.084371 0.000000 0.000000 +jointrankle=-0.284291 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.011345 +jointshakey=0.000000 0.000000 0.011345 +[frame9] +jointlthigh=-0.255354 0.000000 0.000000 +jointlknee=-0.265047 0.000000 0.000000 +jointlankle=0.520209 0.000000 0.000000 +jointrthigh=0.296118 0.000000 0.000000 +jointrknee=-1.254241 0.000000 0.000000 +jointrankle=0.620185 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.009163 +jointshakey=0.000000 0.000000 0.009163 +[frame13] +jointlthigh=-0.488196 0.000000 0.000000 +jointlknee=-0.483620 0.000000 0.000000 +jointlankle=0.651607 0.000000 0.000000 +jointrthigh=0.395614 0.000000 0.000000 +jointrknee=-0.220767 0.000000 0.000000 +jointrankle=0.133954 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame4=0.000000 -5.350000 14.534702 +frame9=0.000000 -5.350000 14.400597 +frame13=0.000000 -5.350000 14.646976 + +[KeyJointPos] +frame1=0.000000 -0.273276 0.000000 +frame4=0.000000 -0.149024 0.000000 +frame9=0.000000 -0.074506 0.000000 +frame13=0.000000 -0.273189 0.000000 diff --git a/CONTENT/BT/ARCBT.BAT b/CONTENT/BT/ARCBT.BAT new file mode 100644 index 0000000..6d180a6 --- /dev/null +++ b/CONTENT/BT/ARCBT.BAT @@ -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= diff --git a/CONTENT/BT/ARCFILES.LST b/CONTENT/BT/ARCFILES.LST new file mode 100644 index 0000000..d1b09eb --- /dev/null +++ b/CONTENT/BT/ARCFILES.LST @@ -0,0 +1,37 @@ +readme.txt +btdpl.ini +btl4opt.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 + diff --git a/CONTENT/BT/AUDIO/ABFWRN01.MID b/CONTENT/BT/AUDIO/ABFWRN01.MID new file mode 100644 index 0000000..9b86b79 Binary files /dev/null and b/CONTENT/BT/AUDIO/ABFWRN01.MID differ diff --git a/CONTENT/BT/AUDIO/ABNCMP.SCP b/CONTENT/BT/AUDIO/ABNCMP.SCP new file mode 100644 index 0000000..18a89cc --- /dev/null +++ b/CONTENT/BT/AUDIO/ABNCMP.SCP @@ -0,0 +1,103 @@ +# +################################################################### +# AmmoBin Audio Script +################################################################### +# + +# +################################################################### +# AmmoBinEjecting component +################################################################### +# + +[DirectPatchSource] +location=OriginLocation +resource=EjectStart01 +position=FrontDirectPatchPosition +priority=3 +mix_presence=0 +volume_mix_level=AmmoBinEjectingVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=False +use_attack_time_scale=False +has_compression_curve=False +compression_duration=0.0 +name=AmmoBinEjectingComponent + +# +################################################################### +# AmmoBinEjected component +################################################################### +# + +[DirectPatchSource] +location=OriginLocation +resource=EjectButton01 +position=RearDirectPatchPosition +priority=3 +mix_presence=2 +volume_mix_level=AmmoBinEjectedVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=False +use_attack_time_scale=False +has_compression_curve=True +compression_duration=0.5 +name=AmmoBinEjectedComponent + +# +################################################################### +# AmmoBinDumped component +################################################################### +# + +[DirectPatchSource] +location=OriginLocation +resource=EjectEnd01 +position=RearDirectPatchPosition +priority=3 +mix_presence=2 +volume_mix_level=AmmoBinDumpedVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=False +use_attack_time_scale=False +has_compression_curve=True +compression_duration=0.5 +name=AmmoBinDumpedComponent + +# +################################################################### +# AmmoBinFireWarning component +################################################################### +# + +[DirectPatchSource] +location=OriginLocation +resource=Warnings01 +position=FrontDirectPatchPosition +priority=3 +mix_presence=2 +volume_mix_level=WarningVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=False +use_attack_time_scale=False +has_compression_curve=False +compression_duration=0.0 +name=AmmoBinFireWarningComponent + +#------------------------------------------------------------------ + +[AudioControlSequence] +audio_component=AmmoBinFireWarningComponent +tempo=160 +midi_file=audio\abfwrn01.mid +is_looped=False +dump_value=False +name=AmmoBinFireWarningSequence + +[AudioIdleWatcher] +audio_component=AmmoBinFireWarningSequence + diff --git a/CONTENT/BT/AUDIO/ABNTRG.SCP b/CONTENT/BT/AUDIO/ABNTRG.SCP new file mode 100644 index 0000000..b95a3ef --- /dev/null +++ b/CONTENT/BT/AUDIO/ABNTRG.SCP @@ -0,0 +1,96 @@ +# +################################################################### +# Projectile Internal Audio Script +################################################################### +# + +# +################################################################### +# Includes +################################################################### +# +[include] +file=audio\dsttrg.scp + +# +################################################################### +# AmmoBinEjecting component +################################################################### +# + +[AudioStateTrigger] +subsystem=MechSubsystem +attribute=AmmoState +audio_component=AmmoBinEjectingComponent +trigger_state=AmmoBin::Ejecting +inverse_trigger=False +control_ID=StartAudioControlID +control_value=0.0 +dump_value=False + +[AudioStateTrigger] +subsystem=MechSubsystem +attribute=AmmoState +audio_component=AmmoBinEjectingComponent +trigger_state=AmmoBin::Ejecting +inverse_trigger=True +control_ID=StopAudioControlID +control_value=0.0 +dump_value=False + +# +################################################################### +# AmmoBinEjected component +################################################################### +# + +[AudioStateTrigger] +subsystem=MechSubsystem +attribute=AmmoState +audio_component=AmmoBinEjectedComponent +trigger_state=AmmoBin::Ejected +inverse_trigger=False +control_ID=StartAudioControlID +control_value=1.0 +dump_value=False + +# +################################################################### +# AmmoBinDumped component +################################################################### +# + +[AudioStateTrigger] +subsystem=MechSubsystem +attribute=AmmoState +audio_component=AmmoBinDumpedComponent +trigger_state=AmmoBin::AmmoDumped +inverse_trigger=False +control_ID=StartAudioControlID +control_value=3.0 +dump_value=False + +# +################################################################### +# AmmoBinFireWarning component +################################################################### +# + +[AudioLogicalTrigger] +subsystem=MechSubsystem +attribute=FireCountdownStarted +audio_component=AmmoBinFireWarningSequence +attribute_match_value=True +control_ID=StartAudioControlID +control_value=0.0 +dump_value=False + +[AudioLogicalTrigger] +subsystem=MechSubsystem +attribute=FireCountdownStarted +audio_component=AmmoBinFireWarningSequence +attribute_match_value=False +control_ID=StopAudioControlID +control_value=0.0 +dump_value=False + diff --git a/CONTENT/BT/AUDIO/ACNCMP.SCP b/CONTENT/BT/AUDIO/ACNCMP.SCP new file mode 100644 index 0000000..27db5e8 --- /dev/null +++ b/CONTENT/BT/AUDIO/ACNCMP.SCP @@ -0,0 +1,34 @@ +# +################################################################### +# Mech AutoCannon Audio Script +################################################################### +# + +[macro] +ProjectileFireResource=AutoCannonAction01 +ProjectileFireComponent=AutoCannonFireComponent +# +ProjectileLaunchResource=AutoCannonFire01 +ProjectileLaunchComponent=AutoCannonLaunchComponent +# +ProjectileLoadingResource=AutoCannonLoading01 +ProjectileLoadingComponent=AutoCannonLoadingComponent +# +ProjectileLoadedResource=AutoCannonLoaded01 +ProjectileLoadedComponent=AutoCannonLoadedComponent +ProjectileLoadedSequence=AutoCannonLoadedSequence +# +ProjectileTriggerDuringLoadResource=TriggerDuringLoad01 +ProjectileTriggerDuringLoadComponent=AutoCannonTriggerDuringLoadComponent +# +ProjectileMisfireResource=AutoCannonMisfire01 +ProjectileMisfireComponent=AutoCannonMisfireComponent +ProjectileMisfireSequence=AutoCannonMisfireSequence +# +ProjectileJamResource=AutoCannonJam01 +ProjectileJamComponent=AutoCannonJamComponent +ProjectileJamSequence=AutoCannonJamSequence + +[include] +file=audio\prjcmp.scp + diff --git a/CONTENT/BT/AUDIO/ACNCMPE.SCP b/CONTENT/BT/AUDIO/ACNCMPE.SCP new file mode 100644 index 0000000..d0264fc --- /dev/null +++ b/CONTENT/BT/AUDIO/ACNCMPE.SCP @@ -0,0 +1,13 @@ +# +################################################################### +# AutoCannon External Audio Script +################################################################### +# + +[macro] +ProjectileLaunchResource=AutoCannonFireExt01 +ProjectileLaunchVolume=AutoCannonExtLaunchVolume +ProjectileLaunchComponent=AutoCannonExtLaunchComponent + +[include] +file=audio\prjcmpe.scp \ No newline at end of file diff --git a/CONTENT/BT/AUDIO/ACNTRG.SCP b/CONTENT/BT/AUDIO/ACNTRG.SCP new file mode 100644 index 0000000..98186fd --- /dev/null +++ b/CONTENT/BT/AUDIO/ACNTRG.SCP @@ -0,0 +1,12 @@ +# +################################################################### +# Mech AutoCannon Internal Audio Script +################################################################### +# + +[include] +file=audio\prjtrg.scp +file=audio\clttrg.scp +file=audio\buttrg.scp +file=audio\dsttrg.scp + diff --git a/CONTENT/BT/AUDIO/ACNTRGE.SCP b/CONTENT/BT/AUDIO/ACNTRGE.SCP new file mode 100644 index 0000000..5951aa7 --- /dev/null +++ b/CONTENT/BT/AUDIO/ACNTRGE.SCP @@ -0,0 +1,8 @@ +# +################################################################### +# AutoCannon External Audio Script +################################################################### +# + +[include] +file=audio\prjtrge.scp diff --git a/CONTENT/BT/AUDIO/ALMINT.SCP b/CONTENT/BT/AUDIO/ALMINT.SCP new file mode 100644 index 0000000..55a0113 --- /dev/null +++ b/CONTENT/BT/AUDIO/ALMINT.SCP @@ -0,0 +1,78 @@ +# +################################################################### +# Mech Alarm Internal Audio Script +################################################################### +# + +# +################################################################### +# IncomingAlarm component +################################################################### +# + +[DirectPatchSource] +location=OriginLocation +resource=IncomingAlarm01 +position=RearDirectPatchPosition +priority=3 +mix_presence=0 +volume_mix_level=IncomingAlarmVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=False +use_attack_time_scale=False +has_compression_curve=False +compression_duration=0.0 +name=IncomingAlarmComponent + +#------------------------------------------------------------------ + +[AudioControlSequence] +audio_component=IncomingAlarmComponent +tempo=100 +midi_file=audio\incarm01.mid +is_looped=True +dump_value=False +name=IncomingAlarmSequence + +[AudioIdleWatcher] +audio_component=IncomingAlarmSequence + +#------------------------------------------------------------------ + +# +# distance to missile -> tempo +# + +[AudioScalarScale] +subsystem=Entity +attribute=DistanceToMissile +audio_component=IncomingAlarmSequence +attribute_value_boundary1=100.0 +attribute_value_boundary2=800.0 +control_ID=TempoAudioControlID +control_value_boundary1=600 +control_value_boundary2=10 +exponent=1.0 +dump_value=False + +#------------------------------------------------------------------ + +[AudioLogicalTrigger] +subsystem=Entity +attribute=IncomingLock +audio_component=IncomingAlarmSequence +attribute_match_value=True +control_ID=StartAudioControlID +control_value=0.0 +dump_value=False + +[AudioLogicalTrigger] +subsystem=Entity +attribute=IncomingLock +audio_component=IncomingAlarmSequence +attribute_match_value=False +control_ID=StopAudioControlID +control_value=0.0 +dump_value=False + diff --git a/CONTENT/BT/AUDIO/AUDIO.INI b/CONTENT/BT/AUDIO/AUDIO.INI new file mode 100644 index 0000000..b5bcc45 --- /dev/null +++ b/CONTENT/BT/AUDIO/AUDIO.INI @@ -0,0 +1,53 @@ +[AudioRenderer] + +# +# Radius of clipping sphere +# +clipping_radius=450.0 + +# +# Distance between ears +# +distance_between_ears=2.0 + +# +# Control amplitude rolloff +# +amplitude_rolloff=2.0 +amplitude_rolloff_knee=60.0 +amplitude_rolloff_distance_scale=0.003 + +# +# Control high frequency rolloff +# +high_frequency_rolloff=2.0 +high_frequency_rolloff_knee=60.0 +high_frequency_rolloff_distance_scale=0.0035 + +# +# Control doppler +# +doppler_range=600.0 +speed_of_sound=250.0 + +# +# Control source compression +# +compression_scale=0.92 +compression_exponent=8.5 + +# +# ITD difference constant +# +itd_difference=0.0015 + +# +# Global reverb scale +# +global_reverb_scale=0.3 + +[AudioResources] +front_audio_resource=audio\audio1.res +front_audio_resource=audio\audio2.res +rear_audio_resource=audio\audio1.res +rear_audio_resource=audio\audio2.res diff --git a/CONTENT/BT/AUDIO/AUDIOMR.INI b/CONTENT/BT/AUDIO/AUDIOMR.INI new file mode 100644 index 0000000..a7afe88 --- /dev/null +++ b/CONTENT/BT/AUDIO/AUDIOMR.INI @@ -0,0 +1,53 @@ +[AudioRenderer] + +# +# Radius of clipping sphere +# +clipping_radius=700.0 + +# +# Distance between ears +# +distance_between_ears=2.0 + +# +# Control amplitude rolloff +# +amplitude_rolloff=2.0 +amplitude_rolloff_knee=60.0 +amplitude_rolloff_distance_scale=0.002 + +# +# Control high frequency rolloff +# +high_frequency_rolloff=2.0 +high_frequency_rolloff_knee=60.0 +high_frequency_rolloff_distance_scale=0.003 + +# +# Control doppler +# +doppler_range=600.0 +speed_of_sound=250.0 + +# +# Control source compression +# +compression_scale=0.1 +compression_exponent=9.0 + +# +# ITD difference constant +# +itd_difference=0.0015 + +# +# Global reverb scale +# +global_reverb_scale=0.3 + +[AudioResources] +front_audio_resource=audio\audio1.res +front_audio_resource=audio\audio2.res +rear_audio_resource=audio\audio1.res +rear_audio_resource=audio\audio2.res diff --git a/CONTENT/BT/AUDIO/AVA1EXT.SCP b/CONTENT/BT/AUDIO/AVA1EXT.SCP new file mode 100644 index 0000000..ec99344 --- /dev/null +++ b/CONTENT/BT/AUDIO/AVA1EXT.SCP @@ -0,0 +1,43 @@ +# +# External Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchext.scp + +# +# AFC100 component +# +[include] +file=audio\acncmpe.scp + +# AFC100 watcher +[macro] +MechSubsystem=AFC100 +[include] +file=audio\acntrge.scp + +# +# PPC component +# +[include] +file=audio\glrcmpe.scp + +# PPC watcher +[macro] +MechSubsystem=PPC +[include] +file=audio\glrtrge.scp + +# ERMLaser_1 watcher +[macro] +MechSubsystem=ERMLaser_1 +[include] +file=audio\glrtrge.scp + +# ERMLaser_2 watcher +[macro] +MechSubsystem=ERMLaser_2 +[include] +file=audio\glrtrge.scp + diff --git a/CONTENT/BT/AUDIO/AVA1INT.SCP b/CONTENT/BT/AUDIO/AVA1INT.SCP new file mode 100644 index 0000000..6511451 --- /dev/null +++ b/CONTENT/BT/AUDIO/AVA1INT.SCP @@ -0,0 +1,97 @@ +# +# Internal Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchint.scp + +# +# AmmoBinAFC100 component +# +[include] +file=audio\abncmp.scp + +# AmmoBinAFC100 watcher +[macro] +MechSubsystem=AmmoBinAFC100 +[include] +file=audio\abntrg.scp + +# +# AFC100 component +# +[include] +file=audio\laccmp.scp + +# AFC100 watcher +[macro] +MechSubsystem=AFC100 +[include] +file=audio\lactrg.scp + +# +# PPC component +# +[include] +file=audio\ppccmp.scp + +# PPC watcher +[macro] +MechSubsystem=PPC +[include] +file=audio\ppctrg.scp + +# +# ERMLaser_1 component +# +[include] +file=audio\ermcmp.scp + +# ERMLaser_1 watcher +[macro] +MechSubsystem=ERMLaser_1 +[include] +file=audio\ermtrg.scp + +# ERMLaser_2 watcher +[macro] +MechSubsystem=ERMLaser_2 +[include] +file=audio\ermtrg.scp + +# AmmoBinLRM5 watcher +[macro] +MechSubsystem=AmmoBinLRM5 +[include] +file=audio\abntrg.scp + +# +# LRM5 component +# +[include] +file=audio\lrmcmp.scp + +# LRM5 watcher +[macro] +MechSubsystem=LRM5 +[include] +file=audio\lrmtrg.scp + +# AmmoBinSRM2 watcher +[macro] +MechSubsystem=AmmoBinSRM2 +[include] +file=audio\abntrg.scp + +# +# SRM2 component +# +[include] +file=audio\srmcmp.scp + +# SRM2 watcher +[macro] +MechSubsystem=SRM2 +[include] +file=audio\srmtrg.scp + diff --git a/CONTENT/BT/AUDIO/AVA2.SCP b/CONTENT/BT/AUDIO/AVA2.SCP new file mode 100644 index 0000000..2282034 --- /dev/null +++ b/CONTENT/BT/AUDIO/AVA2.SCP @@ -0,0 +1,55 @@ +# +# External Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchext.scp + +# +# AFC5_1 component +# +[include] +file=audio\acncmpe.scp + +# AFC5_1 watcher +[macro] +MechSubsystem=AFC5_1 +[include] +file=audio\acntrge.scp + +# AFC5_2 watcher +[macro] +MechSubsystem=AFC5_2 +[include] +file=audio\acntrge.scp + +# AFC5_3 watcher +[macro] +MechSubsystem=AFC5_3 +[include] +file=audio\acntrge.scp + +# AFC5_4 watcher +[macro] +MechSubsystem=AFC5_4 +[include] +file=audio\acntrge.scp + +# +# ERMLaser_1 component +# +[include] +file=audio\glrcmpe.scp + +# ERMLaser_1 watcher +[macro] +MechSubsystem=ERMLaser_1 +[include] +file=audio\glrtrge.scp + +# ERMLaser_2 watcher +[macro] +MechSubsystem=ERMLaser_2 +[include] +file=audio\glrtrge.scp + diff --git a/CONTENT/BT/AUDIO/AVAEXT.SCP b/CONTENT/BT/AUDIO/AVAEXT.SCP new file mode 100644 index 0000000..e1aaba3 --- /dev/null +++ b/CONTENT/BT/AUDIO/AVAEXT.SCP @@ -0,0 +1,61 @@ +# +# External Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchext.scp + +# +# AFC50 component +# +[include] +file=audio\acncmpe.scp + +# AFC50 watcher +[macro] +MechSubsystem=AFC50 +[include] +file=audio\acntrge.scp + +# +# ERLLaser_1 component +# +[include] +file=audio\glrcmpe.scp + +# ERLLaser_1 watcher +[macro] +MechSubsystem=ERLLaser_1 +[include] +file=audio\glrtrge.scp + +# ERLLaser_2 watcher +[macro] +MechSubsystem=ERLLaser_2 +[include] +file=audio\glrtrge.scp + +# ERMLaser_1 watcher +[macro] +MechSubsystem=ERMLaser_1 +[include] +file=audio\glrtrge.scp + +# ERMLaser_2 watcher +[macro] +MechSubsystem=ERMLaser_2 +[include] +file=audio\glrtrge.scp + +# ERMLaser_3 watcher +[macro] +MechSubsystem=ERMLaser_3 +[include] +file=audio\glrtrge.scp + +# ERMLaser_4 watcher +[macro] +MechSubsystem=ERMLaser_4 +[include] +file=audio\glrtrge.scp + diff --git a/CONTENT/BT/AUDIO/AVAINT.SCP b/CONTENT/BT/AUDIO/AVAINT.SCP new file mode 100644 index 0000000..82dae63 --- /dev/null +++ b/CONTENT/BT/AUDIO/AVAINT.SCP @@ -0,0 +1,109 @@ +# +# Internal Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchint.scp + +# +# AmmoBinAFC50 component +# +[include] +file=audio\abncmp.scp + +# AmmoBinAFC50 watcher +[macro] +MechSubsystem=AmmoBinAFC50 +[include] +file=audio\abntrg.scp + +# +# AFC50 component +# +[include] +file=audio\maccmp.scp + +# AFC50 watcher +[macro] +MechSubsystem=AFC50 +[include] +file=audio\mactrg.scp + +# +# ERLLaser_1 component +# +[include] +file=audio\erlcmp.scp + +# ERLLaser_1 watcher +[macro] +MechSubsystem=ERLLaser_1 +[include] +file=audio\erltrg.scp + +# ERLLaser_2 watcher +[macro] +MechSubsystem=ERLLaser_2 +[include] +file=audio\erltrg.scp + +# +# ERMLaser_1 component +# +[include] +file=audio\ermcmp.scp + +# ERMLaser_1 watcher +[macro] +MechSubsystem=ERMLaser_1 +[include] +file=audio\ermtrg.scp + +# ERMLaser_2 watcher +[macro] +MechSubsystem=ERMLaser_2 +[include] +file=audio\ermtrg.scp + +# ERMLaser_3 watcher +[macro] +MechSubsystem=ERMLaser_3 +[include] +file=audio\ermtrg.scp + +# ERMLaser_4 watcher +[macro] +MechSubsystem=ERMLaser_4 +[include] +file=audio\ermtrg.scp + +# AmmoBinLRM10_1 watcher +[macro] +MechSubsystem=AmmoBinLRM10_1 +[include] +file=audio\abntrg.scp + +# +# LRM10_1 component +# +[include] +file=audio\lrmcmp.scp + +# LRM10_1 watcher +[macro] +MechSubsystem=LRM10_1 +[include] +file=audio\lrmtrg.scp + +# AmmoBinLRM10_2 watcher +[macro] +MechSubsystem=AmmoBinLRM10_2 +[include] +file=audio\abntrg.scp + +# LRM10_2 watcher +[macro] +MechSubsystem=LRM10_2 +[include] +file=audio\lrmtrg.scp + diff --git a/CONTENT/BT/AUDIO/BATEXT.SCP b/CONTENT/BT/AUDIO/BATEXT.SCP new file mode 100644 index 0000000..f76f79a --- /dev/null +++ b/CONTENT/BT/AUDIO/BATEXT.SCP @@ -0,0 +1,25 @@ +# +# External Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchext.scp + +# +# PPC_1 component +# +[include] +file=audio\glrcmpe.scp + +# PPC_1 watcher +[macro] +MechSubsystem=PPC_1 +[include] +file=audio\glrtrge.scp + +# PPC_2 watcher +[macro] +MechSubsystem=PPC_2 +[include] +file=audio\glrtrge.scp + diff --git a/CONTENT/BT/AUDIO/BATINT.SCP b/CONTENT/BT/AUDIO/BATINT.SCP new file mode 100644 index 0000000..aa2a9e4 --- /dev/null +++ b/CONTENT/BT/AUDIO/BATINT.SCP @@ -0,0 +1,85 @@ +# +# Internal Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchint.scp + +# +# PPC_1 component +# +[include] +file=audio\ppccmp.scp + +# PPC_1 watcher +[macro] +MechSubsystem=PPC_1 +[include] +file=audio\ppctrg.scp + +# PPC_2 watcher +[macro] +MechSubsystem=PPC_2 +[include] +file=audio\ppctrg.scp + +# +# AmmoBinLRM15_1 component +# +[include] +file=audio\abncmp.scp + +# AmmoBinLRM15_1 watcher +[macro] +MechSubsystem=AmmoBinLRM15_1 +[include] +file=audio\abntrg.scp + +# +# LRM15_1 component +# +[include] +file=audio\lrmcmp.scp + +# LRM15_1 watcher +[macro] +MechSubsystem=LRM15_1 +[include] +file=audio\lrmtrg.scp + +# AmmoBinLRM15_2 watcher +[macro] +MechSubsystem=AmmoBinLRM15_2 +[include] +file=audio\abntrg.scp + +# LRM15_2 watcher +[macro] +MechSubsystem=LRM15_2 +[include] +file=audio\lrmtrg.scp + +# AmmoBinLRM15_3 watcher +[macro] +MechSubsystem=AmmoBinLRM15_3 +[include] +file=audio\abntrg.scp + +# LRM15_3 watcher +[macro] +MechSubsystem=LRM15_3 +[include] +file=audio\lrmtrg.scp + +# AmmoBinLRM15_4 watcher +[macro] +MechSubsystem=AmmoBinLRM15_4 +[include] +file=audio\abntrg.scp + +# LRM15_4 watcher +[macro] +MechSubsystem=LRM15_4 +[include] +file=audio\lrmtrg.scp + diff --git a/CONTENT/BT/AUDIO/BBNEXP.SCP b/CONTENT/BT/AUDIO/BBNEXP.SCP new file mode 100644 index 0000000..cfbc1c7 --- /dev/null +++ b/CONTENT/BT/AUDIO/BBNEXP.SCP @@ -0,0 +1,118 @@ +# +################################################################### +# Big Burning Audio Script +################################################################### +# + +[include] +file=audio\macros.scp + +# +################################################################### +# Audio locations +################################################################### +# + +[L4AudioLocation] +location_offset=0.0,0.0,0.0 +name=OriginLocation + +# +################################################################### +# BigExplosion component +################################################################### +# + +[Dynamic3DPatchSource] +location=OriginLocation +resource=AuxExplosion01 +priority=0 +mix_presence=3 +volume_mix_level=BigExplosionVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=True +use_attack_time_scale=False +has_compression_curve=True +compression_duration=0.5 +name=BigExplosionComponent + +#------------------------------------------------------------------ + +# +# sample and hold -> pitch +# + +[AudioSampleAndHold] +audio_component=BigExplosionComponent +control_ID=PitchAudioControlID +sample_duration=99.0 +min_value=-200 +max_value=200 +name=BigExplosionPitchSampleAndHold + +# +# sample and hold -> filter +# + +[AudioSampleAndHold] +audio_component=BigExplosionComponent +control_ID=BrightnessAudioControlID +sample_duration=99.0 +min_value=0.7 +max_value=1.0 +name=BigExplosionBrightnessSampleAndHold + +#------------------------------------------------------------------ + +[AudioControlSplitter] +audio_component=BigExplosionPitchSampleAndHold +audio_component=BigExplosionBrightnessSampleAndHold +audio_component=BigExplosionComponent +name=BigExplosionSplitter + +[AudioControlSequence] +audio_component=BigExplosionSplitter +tempo=160 +midi_file=audio\bigexp01.mid +is_looped=False +dump_value=False +name=BigExplosionSequence + +[AudioIdleWatcher] +audio_component=BigExplosionSequence + +#------------------------------------------------------------------ + +[AudioControlSend] +audio_component=BigExplosionSequence +control_ID=StartAudioControlID +control_value=0.0 + +# +################################################################### +# SmallFire component +################################################################### +# + +[Dynamic3DPatchSource] +location=OriginLocation +resource=SmallFireLoop01 +priority=0 +mix_presence=3 +volume_mix_level=SmallFireVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=False +use_attack_time_scale=False +has_compression_curve=False +compression_duration=0.0 +name=SmallFireComponent + +#------------------------------------------------------------------ + +[AudioControlSend] +audio_component=SmallFireComponent +control_ID=StartAudioControlID +control_value=0.0 + diff --git a/CONTENT/BT/AUDIO/BHK1EXT.SCP b/CONTENT/BT/AUDIO/BHK1EXT.SCP new file mode 100644 index 0000000..b1f6056 --- /dev/null +++ b/CONTENT/BT/AUDIO/BHK1EXT.SCP @@ -0,0 +1,43 @@ +# +# External Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchext.scp + +# +# PPC_1 component +# +[include] +file=audio\glrcmpe.scp + +# PPC_1 watcher +[macro] +MechSubsystem=PPC_1 +[include] +file=audio\glrtrge.scp + +# PPC_2 watcher +[macro] +MechSubsystem=PPC_2 +[include] +file=audio\glrtrge.scp + +# ERMLaser_1 watcher +[macro] +MechSubsystem=ERMLaser_1 +[include] +file=audio\glrtrge.scp + +# ERMLaser_2 watcher +[macro] +MechSubsystem=ERMLaser_2 +[include] +file=audio\glrtrge.scp + +# ERMLaser_3 watcher +[macro] +MechSubsystem=ERMLaser_3 +[include] +file=audio\glrtrge.scp + diff --git a/CONTENT/BT/AUDIO/BHK1INT.SCP b/CONTENT/BT/AUDIO/BHK1INT.SCP new file mode 100644 index 0000000..3b4888b --- /dev/null +++ b/CONTENT/BT/AUDIO/BHK1INT.SCP @@ -0,0 +1,85 @@ +# +# Internal Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchint.scp + +# +# PPC_1 component +# +[include] +file=audio\ppccmp.scp + +# PPC_1 watcher +[macro] +MechSubsystem=PPC_1 +[include] +file=audio\ppctrg.scp + +# PPC_2 watcher +[macro] +MechSubsystem=PPC_2 +[include] +file=audio\ppctrg.scp + +# +# ERMLaser_1 component +# +[include] +file=audio\ermcmp.scp + +# ERMLaser_1 watcher +[macro] +MechSubsystem=ERMLaser_1 +[include] +file=audio\ermtrg.scp + +# ERMLaser_2 watcher +[macro] +MechSubsystem=ERMLaser_2 +[include] +file=audio\ermtrg.scp + +# ERMLaser_3 watcher +[macro] +MechSubsystem=ERMLaser_3 +[include] +file=audio\ermtrg.scp + +# +# AmmoBinSRM6_1 component +# +[include] +file=audio\abncmp.scp + +# AmmoBinSRM6_1 watcher +[macro] +MechSubsystem=AmmoBinSRM6_1 +[include] +file=audio\abntrg.scp + +# +# SRM6_1 component +# +[include] +file=audio\srmcmp.scp + +# SRM6_1 watcher +[macro] +MechSubsystem=SRM6_1 +[include] +file=audio\srmtrg.scp + +# AmmoBinSRM6_2 watcher +[macro] +MechSubsystem=AmmoBinSRM6_2 +[include] +file=audio\abntrg.scp + +# SRM6_2 watcher +[macro] +MechSubsystem=SRM6_2 +[include] +file=audio\srmtrg.scp + diff --git a/CONTENT/BT/AUDIO/BIGEXP.SCP b/CONTENT/BT/AUDIO/BIGEXP.SCP new file mode 100644 index 0000000..36e90b6 --- /dev/null +++ b/CONTENT/BT/AUDIO/BIGEXP.SCP @@ -0,0 +1,91 @@ +# +################################################################### +# Big Explosion Audio Script +################################################################### +# + +[include] +file=audio\macros.scp + +# +################################################################### +# Audio locations +################################################################### +# + +[L4AudioLocation] +location_offset=0.0,0.0,0.0 +name=OriginLocation + +# +################################################################### +# BigExplosion component +################################################################### +# + +[Dynamic3DPatchSource] +location=OriginLocation +resource=AuxExplosion01 +priority=0 +mix_presence=3 +volume_mix_level=BigExplosionVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=True +use_attack_time_scale=False +has_compression_curve=True +compression_duration=0.5 +name=BigExplosionComponent + +#------------------------------------------------------------------ + +# +# sample and hold -> pitch +# + +[AudioSampleAndHold] +audio_component=BigExplosionComponent +control_ID=PitchAudioControlID +sample_duration=99.0 +min_value=-200 +max_value=200 +name=BigExplosionPitchSampleAndHold + +# +# sample and hold -> filter +# + +[AudioSampleAndHold] +audio_component=BigExplosionComponent +control_ID=BrightnessAudioControlID +sample_duration=99.0 +min_value=0.7 +max_value=1.0 +name=BigExplosionBrightnessSampleAndHold + +#------------------------------------------------------------------ + +[AudioControlSplitter] +audio_component=BigExplosionPitchSampleAndHold +audio_component=BigExplosionBrightnessSampleAndHold +audio_component=BigExplosionComponent +name=BigExplosionSplitter + +[AudioControlSequence] +audio_component=BigExplosionSplitter +tempo=160 +midi_file=audio\bigexp01.mid +is_looped=False +dump_value=False +name=BigExplosionSequence + +[AudioIdleWatcher] +audio_component=BigExplosionSequence + +#------------------------------------------------------------------ + +[AudioControlSend] +audio_component=BigExplosionSequence +control_ID=StartAudioControlID +control_value=0.0 + diff --git a/CONTENT/BT/AUDIO/BIGEXP01.MID b/CONTENT/BT/AUDIO/BIGEXP01.MID new file mode 100644 index 0000000..0f41bde Binary files /dev/null and b/CONTENT/BT/AUDIO/BIGEXP01.MID differ diff --git a/CONTENT/BT/AUDIO/BLKEXT.SCP b/CONTENT/BT/AUDIO/BLKEXT.SCP new file mode 100644 index 0000000..49cf53d --- /dev/null +++ b/CONTENT/BT/AUDIO/BLKEXT.SCP @@ -0,0 +1,61 @@ +# +# External Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchext.scp + +# +# ERLLaser component +# +[include] +file=audio\glrcmpe.scp + +# ERLLaser watcher +[macro] +MechSubsystem=ERLLaser +[include] +file=audio\glrtrge.scp + +# ERMLaser_1 watcher +[macro] +MechSubsystem=ERMLaser_1 +[include] +file=audio\glrtrge.scp + +# ERMLaser_2 watcher +[macro] +MechSubsystem=ERMLaser_2 +[include] +file=audio\glrtrge.scp + +# ERMLaser_3 watcher +[macro] +MechSubsystem=ERMLaser_3 +[include] +file=audio\glrtrge.scp + +# ERMLaser_4 watcher +[macro] +MechSubsystem=ERMLaser_4 +[include] +file=audio\glrtrge.scp + +# ERMLaser_5 watcher +[macro] +MechSubsystem=ERMLaser_5 +[include] +file=audio\glrtrge.scp + +# ERSLaser_1 watcher +[macro] +MechSubsystem=ERSLaser_1 +[include] +file=audio\glrtrge.scp + +# ERSLaser_2 watcher +[macro] +MechSubsystem=ERSLaser_2 +[include] +file=audio\glrtrge.scp + diff --git a/CONTENT/BT/AUDIO/BLKINT.SCP b/CONTENT/BT/AUDIO/BLKINT.SCP new file mode 100644 index 0000000..50c6329 --- /dev/null +++ b/CONTENT/BT/AUDIO/BLKINT.SCP @@ -0,0 +1,109 @@ +# +# Internal Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchint.scp + +# +# ERLLaser component +# +[include] +file=audio\erlcmp.scp + +# ERLLaser watcher +[macro] +MechSubsystem=ERLLaser +[include] +file=audio\erltrg.scp + +# +# ERMLaser_1 component +# +[include] +file=audio\ermcmp.scp + +# ERMLaser_1 watcher +[macro] +MechSubsystem=ERMLaser_1 +[include] +file=audio\ermtrg.scp + +# ERMLaser_2 watcher +[macro] +MechSubsystem=ERMLaser_2 +[include] +file=audio\ermtrg.scp + +# ERMLaser_3 watcher +[macro] +MechSubsystem=ERMLaser_3 +[include] +file=audio\ermtrg.scp + +# ERMLaser_4 watcher +[macro] +MechSubsystem=ERMLaser_4 +[include] +file=audio\ermtrg.scp + +# ERMLaser_5 watcher +[macro] +MechSubsystem=ERMLaser_5 +[include] +file=audio\ermtrg.scp + +# +# ERSLaser_1 component +# +[include] +file=audio\erscmp.scp + +# ERSLaser_1 watcher +[macro] +MechSubsystem=ERSLaser_1 +[include] +file=audio\erstrg.scp + +# ERSLaser_2 watcher +[macro] +MechSubsystem=ERSLaser_2 +[include] +file=audio\erstrg.scp + +# +# AmmoBinSRM6_1 component +# +[include] +file=audio\abncmp.scp + +# AmmoBinSRM6_1 watcher +[macro] +MechSubsystem=AmmoBinSRM6_1 +[include] +file=audio\abntrg.scp + +# +# SRM6_1 component +# +[include] +file=audio\srmcmp.scp + +# SRM6_1 watcher +[macro] +MechSubsystem=SRM6_1 +[include] +file=audio\srmtrg.scp + +# AmmoBinSRM6_2 watcher +[macro] +MechSubsystem=AmmoBinSRM6_2 +[include] +file=audio\abntrg.scp + +# SRM6_2 watcher +[macro] +MechSubsystem=SRM6_2 +[include] +file=audio\srmtrg.scp + diff --git a/CONTENT/BT/AUDIO/BRNEXT.SCP b/CONTENT/BT/AUDIO/BRNEXT.SCP new file mode 100644 index 0000000..42eb52e --- /dev/null +++ b/CONTENT/BT/AUDIO/BRNEXT.SCP @@ -0,0 +1,105 @@ +# +################################################################### +# Mech External Burning Audio Script +################################################################### +# + +[include] +file=audio\macros.scp + +# +################################################################### +# Audio locations +################################################################### +# + +[L4AudioLocation] +location_offset=0.0,0.0,0.0 +clipping_scale=0.75 +name=ExplosionLocation + +[L4AudioLocation] +location_offset=0.0,0.0,0.0 +clipping_scale=0.5 +name=FireLocation + +# +################################################################### +# Mech Explosion external component +################################################################### +# + +[Dynamic3DPatchSource] +location=ExplosionLocation +resource=MechExplosion01 +priority=0 +mix_presence=2 +volume_mix_level=MechExplosionExternalVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=False +use_attack_time_scale=False +has_compression_curve=True +compression_duration=0.5 +name=MechExplosionExternalComponent + +#------------------------------------------------------------------ + +[AudioControlSequence] +audio_component=MechExplosionExternalComponent +tempo=100 +midi_file=audio\mchexp07.mid +is_looped=False +dump_value=False +name=MechExplosionExternalSequence + +[AudioIdleWatcher] +audio_component=MechExplosionExternalSequence + +#------------------------------------------------------------------ + +[AudioControlSend] +audio_component=MechExplosionExternalSequence +control_ID=StartAudioControlID +control_value=0.0 + +# +################################################################### +# MechFire external component +################################################################### +# + +[Dynamic3DPatchSource] +location=FireLocation +resource=MechFireLoop01 +priority=0 +mix_presence=3 +volume_mix_level=MechFireExternalVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=False +use_attack_time_scale=False +has_compression_curve=False +compression_duration=0.0 +name=MechFireExternalComponent + +#------------------------------------------------------------------ + +[AudioControlSequence] +audio_component=MechFireExternalComponent +tempo=160 +midi_file=audio\mchfre01.mid +is_looped=False +dump_value=False +name=MechFireExternalSequence + +[AudioIdleWatcher] +audio_component=MechFireExternalSequence + +#------------------------------------------------------------------ + +[AudioControlSend] +audio_component=MechFireExternalSequence +control_ID=StartAudioControlID +control_value=0.0 + diff --git a/CONTENT/BT/AUDIO/BRNINT.SCP b/CONTENT/BT/AUDIO/BRNINT.SCP new file mode 100644 index 0000000..0e09cbe --- /dev/null +++ b/CONTENT/BT/AUDIO/BRNINT.SCP @@ -0,0 +1,117 @@ +# +################################################################### +# Mech Internal Burning Audio Script +################################################################### +# + +# +################################################################### +# Death component +################################################################### +# + +[DirectPatchSource] +location=OriginLocation +resource=Death01 +position=FrontDirectPatchPosition +priority=4 +mix_presence=1 +volume_mix_level=DeathVolume +pitch_mix_offset=0.0 +brightness_mix_level=0.0 +use_brightness_scale=False +use_attack_time_scale=False +has_compression_curve=True +compression_duration=5.0 +name=DeathComponent01 + +[DirectPatchSource] +location=OriginLocation +resource=Death01 +position=RearDirectPatchPosition +priority=4 +mix_presence=1 +volume_mix_level=DeathVolume +pitch_mix_offset=0.0 +brightness_mix_level=0.0 +use_brightness_scale=False +use_attack_time_scale=False +has_compression_curve=True +compression_duration=5.0 +name=DeathComponent02 + +[DirectPatchSource] +location=OriginLocation +resource=Death01 +position=RearDirectPatchPosition +priority=4 +mix_presence=1 +volume_mix_level=DeathVolume +pitch_mix_offset=0.0 +brightness_mix_level=0.0 +use_brightness_scale=False +use_attack_time_scale=False +has_compression_curve=True +compression_duration=5.0 +name=DeathComponent03 + +#------------------------------------------------------------------ + +[AudioControlSequence] +audio_component=DeathComponent01 +tempo=100 +midi_file=audio\mchexpi1.mid +is_looped=False +dump_value=False +name=DeathComponent01Sequence + +[AudioControlSequence] +audio_component=DeathComponent02 +tempo=100 +midi_file=audio\mchexpi2.mid +is_looped=False +dump_value=False +name=DeathComponent02Sequence + +[AudioControlSequence] +audio_component=DeathComponent03 +tempo=100 +midi_file=audio\mchexpi3.mid +is_looped=False +dump_value=False +name=DeathComponent03Sequence + +#------------------------------------------------------------------ + +[AudioControlSplitter] +audio_component=DeathComponent01Sequence +audio_component=DeathComponent02Sequence +audio_component=DeathComponent03Sequence +name=DeathSplitter + +[AudioIdleWatcher] +audio_component=DeathSplitter + +#------------------------------------------------------------------ + +[AudioStateTrigger] +subsystem=Entity +attribute=SimulationState +audio_component=DeathSplitter +trigger_state=Mech::BurningState +inverse_trigger=False +control_ID=StartAudioControlID +control_value=0.0 +dump_value=False + +[AudioStateTrigger] +subsystem=Entity +attribute=SimulationState +audio_component=DeathSplitter +trigger_state=Mech::BurningState +inverse_trigger=True +control_ID=StopAudioControlID +control_value=0.0 +dump_value=False + + diff --git a/CONTENT/BT/AUDIO/BUTCMP.SCP b/CONTENT/BT/AUDIO/BUTCMP.SCP new file mode 100644 index 0000000..dc33afd --- /dev/null +++ b/CONTENT/BT/AUDIO/BUTCMP.SCP @@ -0,0 +1,103 @@ +# +################################################################### +# Mech Subsystem Buttons Audio Script +################################################################### +# + +# +################################################################### +# SelectGenerator component +################################################################### +# + +[DirectPatchSource] +location=OriginLocation +resource=GeneratorSelect01 +position=FrontDirectPatchPosition +priority=3 +mix_presence=0 +volume_mix_level=SelectGeneratorVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=False +use_attack_time_scale=False +has_compression_curve=False +compression_duration=0.0 +name=SelectGeneratorComponent + +# +################################################################### +# GeneratorMode component +################################################################### +# + +[DirectPatchSource] +location=OriginLocation +resource=DefaultButton01 +position=FrontDirectPatchPosition +priority=3 +mix_presence=0 +volume_mix_level=GeneratorModeVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=False +use_attack_time_scale=False +has_compression_curve=False +compression_duration=0.0 +name=GeneratorModeComponent + +# +################################################################### +# ToggleCooling component +################################################################### +# + +[DirectPatchSource] +location=OriginLocation +resource=DefaultButton01 +position=FrontDirectPatchPosition +priority=3 +mix_presence=0 +volume_mix_level=ToggleCoolingVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=False +use_attack_time_scale=False +has_compression_curve=False +compression_duration=0.0 +name=ToggleCoolingComponent + +# +################################################################### +# ConfigureMappables component +################################################################### +# + +[DirectPatchSource] +location=OriginLocation +resource=ProgramButton01 +position=FrontDirectPatchPosition +priority=3 +mix_presence=0 +volume_mix_level=ConfigureMappablesVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=False +use_attack_time_scale=False +has_compression_curve=False +compression_duration=0.0 +name=ConfigureMappablesComponent + +#------------------------------------------------------------------ + +[AudioControlSequence] +audio_component=ConfigureMappablesComponent +tempo=160 +midi_file=audio\prgbut01.mid +is_looped=True +dump_value=False +name=ConfigureMappablesSequence + +[AudioIdleWatcher] +audio_component=ConfigureMappablesSequence + diff --git a/CONTENT/BT/AUDIO/BUTTRG.SCP b/CONTENT/BT/AUDIO/BUTTRG.SCP new file mode 100644 index 0000000..69eda7f --- /dev/null +++ b/CONTENT/BT/AUDIO/BUTTRG.SCP @@ -0,0 +1,90 @@ +# +################################################################### +# Mech Subsystem Buttons Audio Script +################################################################### +# + +# +################################################################### +# SelectGenerator component +################################################################### +# + +[AudioControlsButtonMessageWatcher] +subsystem=MechSubsystem +message_ID=PoweredSubsystem::SelectGeneratorAMessageID +audio_component=SelectGeneratorComponent +control_ID=StartAudioControlID +control_value=1.0 +dump_value=False + +[AudioControlsButtonMessageWatcher] +subsystem=MechSubsystem +message_ID=PoweredSubsystem::SelectGeneratorBMessageID +audio_component=SelectGeneratorComponent +control_ID=StartAudioControlID +control_value=1.0 +dump_value=False + +[AudioControlsButtonMessageWatcher] +subsystem=MechSubsystem +message_ID=PoweredSubsystem::SelectGeneratorCMessageID +audio_component=SelectGeneratorComponent +control_ID=StartAudioControlID +control_value=1.0 +dump_value=False + +[AudioControlsButtonMessageWatcher] +subsystem=MechSubsystem +message_ID=PoweredSubsystem::SelectGeneratorDMessageID +audio_component=SelectGeneratorComponent +control_ID=StartAudioControlID +control_value=1.0 +dump_value=False + +# +################################################################### +# GeneratorMode component +################################################################### +# + +[AudioControlsButtonMessageWatcher] +subsystem=MechSubsystem +message_ID=PoweredSubsystem::ToggleGeneratorModeMessageID +audio_component=GeneratorModeComponent +control_ID=StartAudioControlID +control_value=1.0 +dump_value=False + +# +################################################################### +# ToggleCooling component +################################################################### +# + +[AudioControlsButtonMessageWatcher] +subsystem=MechSubsystem +message_ID=HeatableSubsystem::ToggleCoolingMessageID +audio_component=ToggleCoolingComponent +control_ID=StartAudioControlID +control_value=1.0 +dump_value=False + +# +################################################################### +# ConfigureMappables component +################################################################### +# + +[AudioIntegerTrigger] +subsystem=MechSubsystem +attribute=ConfigureActivePress +audio_component=ConfigureMappablesSequence +attribute_value_threshold=-1 +control_ID_on=StartAudioControlID +control_ID_off=StopAudioControlID +control_value_on=0.0 +control_value_off=0.0 +inverse_trigger=False +dump_value=False + diff --git a/CONTENT/BT/AUDIO/CALEXT.SCP b/CONTENT/BT/AUDIO/CALEXT.SCP new file mode 100644 index 0000000..a4b7f3f --- /dev/null +++ b/CONTENT/BT/AUDIO/CALEXT.SCP @@ -0,0 +1,49 @@ +# +# External Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchext.scp + +# +# PPC_1 component +# +[include] +file=audio\glrcmpe.scp + +# PPC_1 watcher +[macro] +MechSubsystem=PPC_1 +[include] +file=audio\glrtrge.scp + +# PPC_2 watcher +[macro] +MechSubsystem=PPC_2 +[include] +file=audio\glrtrge.scp + +# ERSLaser_1 watcher +[macro] +MechSubsystem=ERSLaser_1 +[include] +file=audio\glrtrge.scp + +# ERSLaser_2 watcher +[macro] +MechSubsystem=ERSLaser_2 +[include] +file=audio\glrtrge.scp + +# ERSLaser_3 watcher +[macro] +MechSubsystem=ERSLaser_3 +[include] +file=audio\glrtrge.scp + +# ERSLaser_4 watcher +[macro] +MechSubsystem=ERSLaser_4 +[include] +file=audio\glrtrge.scp + diff --git a/CONTENT/BT/AUDIO/CALINT.SCP b/CONTENT/BT/AUDIO/CALINT.SCP new file mode 100644 index 0000000..922879c --- /dev/null +++ b/CONTENT/BT/AUDIO/CALINT.SCP @@ -0,0 +1,91 @@ +# +# Internal Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchint.scp + +# +# PPC_1 component +# +[include] +file=audio\ppccmp.scp + +# PPC_1 watcher +[macro] +MechSubsystem=PPC_1 +[include] +file=audio\ppctrg.scp + +# PPC_2 watcher +[macro] +MechSubsystem=PPC_2 +[include] +file=audio\ppctrg.scp + +# +# ERSLaser_1 component +# +[include] +file=audio\erscmp.scp + +# ERSLaser_1 watcher +[macro] +MechSubsystem=ERSLaser_1 +[include] +file=audio\erstrg.scp + +# ERSLaser_2 watcher +[macro] +MechSubsystem=ERSLaser_2 +[include] +file=audio\erstrg.scp + +# ERSLaser_3 watcher +[macro] +MechSubsystem=ERSLaser_3 +[include] +file=audio\erstrg.scp + +# ERSLaser_4 watcher +[macro] +MechSubsystem=ERSLaser_4 +[include] +file=audio\erstrg.scp + +# +# AmmoBinLRM15_1 component +# +[include] +file=audio\abncmp.scp + +# AmmoBinLRM15_1 watcher +[macro] +MechSubsystem=AmmoBinLRM15_1 +[include] +file=audio\abntrg.scp + +# +# LRM15_1 component +# +[include] +file=audio\lrmcmp.scp + +# LRM15_1 watcher +[macro] +MechSubsystem=LRM15_1 +[include] +file=audio\lrmtrg.scp + +# AmmoBinLRM15_2 watcher +[macro] +MechSubsystem=AmmoBinLRM15_2 +[include] +file=audio\abntrg.scp + +# LRM15_2 watcher +[macro] +MechSubsystem=LRM15_2 +[include] +file=audio\lrmtrg.scp + diff --git a/CONTENT/BT/AUDIO/CLKWRN01.MID b/CONTENT/BT/AUDIO/CLKWRN01.MID new file mode 100644 index 0000000..c044502 Binary files /dev/null and b/CONTENT/BT/AUDIO/CLKWRN01.MID differ diff --git a/CONTENT/BT/AUDIO/CLTCMP.SCP b/CONTENT/BT/AUDIO/CLTCMP.SCP new file mode 100644 index 0000000..f045653 --- /dev/null +++ b/CONTENT/BT/AUDIO/CLTCMP.SCP @@ -0,0 +1,74 @@ +# +################################################################### +# Coolant System Audio Script +################################################################### +# + +# +################################################################### +# CoolantLeakWarning component +################################################################### +# + +[DirectPatchSource] +location=OriginLocation +resource=Warnings01 +position=FrontDirectPatchPosition +priority=3 +mix_presence=2 +volume_mix_level=WarningVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=False +use_attack_time_scale=False +has_compression_curve=False +compression_duration=0.0 +name=CoolantLeakWarningComponent + +#------------------------------------------------------------------ + +[AudioControlSequence] +audio_component=CoolantLeakWarningComponent +tempo=160 +midi_file=audio\clkwrn01.mid +is_looped=True +dump_value=False +name=CoolantLeakWarningSequence + +[AudioIdleWatcher] +audio_component=CoolantLeakWarningSequence + +# +################################################################### +# CoolantLeak component +################################################################### +# + +[!DirectPatchSource] +location=OriginLocation +resource=CoolantLeak01 +position=RearDirectPatchPosition +priority=0 +mix_presence=0 +volume_mix_level=CoolantLeakVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=False +use_attack_time_scale=False +has_compression_curve=False +compression_duration=0.0 +name=CoolantLeakComponent + +#------------------------------------------------------------------ + +# +# amplitude smoother -> amplitude +# + +[!AudioControlSmoother] +audio_component=CoolantLeakComponent +number_of_samples=4 +control_ID=VolumeAudioControlID +name=CoolantLeakAmplitudeSmoother + + diff --git a/CONTENT/BT/AUDIO/CLTTRG.SCP b/CONTENT/BT/AUDIO/CLTTRG.SCP new file mode 100644 index 0000000..d6ac9f0 --- /dev/null +++ b/CONTENT/BT/AUDIO/CLTTRG.SCP @@ -0,0 +1,63 @@ +# +################################################################### +# Coolant System Buttons Audio Script +################################################################### +# + +# +################################################################### +# CoolantLeakWarning component +################################################################### +# + +[AudioLogicalTrigger] +subsystem=MechSubsystem +attribute=ReportLeak +audio_component=CoolantLeakWarningSequence +attribute_match_value=True +control_ID=StartAudioControlID +control_value=0.0 +dump_value=False + +[AudioLogicalTrigger] +subsystem=MechSubsystem +attribute=ReportLeak +audio_component=CoolantLeakWarningSequence +attribute_match_value=False +control_ID=StopAudioControlID +control_value=0.0 +dump_value=False + +# +################################################################### +# CoolantLeak component +################################################################### +# + +[!AudioScalarScale] +subsystem=MechSubsystem +attribute=CoolantMassLeakRate +audio_component=CoolantLeakAmplitudeSmoother +attribute_value_boundary1=0.0 +attribute_value_boundary2=0.1 +control_ID=TempoAudioControlID +control_value_boundary1=0.0 +control_value_boundary2=1.0 +exponent=0.5 +dump_value=False + +#------------------------------------------------------------------ + +[!AudioScalarTrigger] +subsystem=MechSubsystem +attribute=CoolantMassLeakRate +audio_component=CoolantLeakComponent +attribute_value_threshold=0.01 +control_ID_on=StartAudioControlID +control_ID_off=StopAudioControlID +control_value_on=0.0 +control_value_off=0.0 +inverse_trigger=False +dump_value=False + + diff --git a/CONTENT/BT/AUDIO/CNDCMP.SCP b/CONTENT/BT/AUDIO/CNDCMP.SCP new file mode 100644 index 0000000..f3730c4 --- /dev/null +++ b/CONTENT/BT/AUDIO/CNDCMP.SCP @@ -0,0 +1,49 @@ +# +################################################################### +# Condenser Audio Script +################################################################### +# + +# +################################################################### +# CoolantPressureIncrease component +################################################################### +# + +[DirectPatchSource] +location=OriginLocation +resource=CoolantPressureIncrease03 +position=FrontDirectPatchPosition +priority=3 +mix_presence=0 +volume_mix_level=CoolantPressureVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=False +use_attack_time_scale=False +has_compression_curve=False +compression_duration=0.0 +name=CoolantPressureIncreaseComponent + +# +################################################################### +# CoolantPressureDecrease component +################################################################### +# + +[DirectPatchSource] +location=OriginLocation +resource=CoolantPressureDecrease03 +position=FrontDirectPatchPosition +priority=3 +mix_presence=0 +volume_mix_level=CoolantPressureVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=False +use_attack_time_scale=False +has_compression_curve=False +compression_duration=0.0 +name=CoolantPressureDecreaseComponent + + diff --git a/CONTENT/BT/AUDIO/CNDTRG.SCP b/CONTENT/BT/AUDIO/CNDTRG.SCP new file mode 100644 index 0000000..490de8a --- /dev/null +++ b/CONTENT/BT/AUDIO/CNDTRG.SCP @@ -0,0 +1,46 @@ +# +################################################################### +# Condenser Audio Script +################################################################### +# + +# +################################################################### +# Includes +################################################################### +# +[include] +file=audio\clttrg.scp + +# +################################################################### +# CoolantPressureIncrease component +################################################################### +# + +[AudioStateTrigger] +subsystem=MechSubsystem +attribute=CondenserState +audio_component=CoolantPressureIncreaseComponent +trigger_state=Condenser::OpeningCondenserState +inverse_trigger=False +control_ID=StartAudioControlID +control_value=4.0 +dump_value=False + +# +################################################################### +# CoolantPressureDecrease component +################################################################### +# + +[AudioStateTrigger] +subsystem=MechSubsystem +attribute=CondenserState +audio_component=CoolantPressureDecreaseComponent +trigger_state=Condenser::ClosingCondenserState +inverse_trigger=False +control_ID=StartAudioControlID +control_value=4.0 +dump_value=False + diff --git a/CONTENT/BT/AUDIO/COLEXT.SCP b/CONTENT/BT/AUDIO/COLEXT.SCP new file mode 100644 index 0000000..f3ab54d --- /dev/null +++ b/CONTENT/BT/AUDIO/COLEXT.SCP @@ -0,0 +1,102 @@ +# +################################################################### +# Mech Internal Collision Audio Script +################################################################### +# + +[macro] +CollisionTopSpeed=25 + +# +################################################################### +# Collision component +################################################################### +# + +[Dynamic3DPatchSource] +location=OriginLocation +resource=CollisionExt01 +priority=0 +mix_presence=0 +volume_mix_level=CollisionExternalVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=True +use_attack_time_scale=False +has_compression_curve=False +compression_duration=0.0 +name=CollisionExternalComponent + +#------------------------------------------------------------------ + +# +# resource select +# + +[AudioResourceSelector] +audio_source=CollisionExternalComponent +audio_resource_index=CollisionExtIndex +control_ID=100 +min_control_value=0.0 +max_control_value=1.0 +dump_value=False +name=CollisionExternalResourceSelect + +# +# sample and hold -> resource select +# + +[AudioSampleAndHold] +audio_component=CollisionExternalResourceSelect +control_ID=100 +sample_duration=0.0 +name=CollisionExternalSampleAndHold + +#------------------------------------------------------------------ + +# +# collision speed -> attack volume +# + +[AudioScalarScale] +subsystem=Entity +attribute=CollisionSpeed +audio_component=CollisionExternalComponent +attribute_value_boundary1=0.0 +attribute_value_boundary2=CollisionTopSpeed +control_ID=AttackVolumeAudioControlID +control_value_boundary1=0.9 +control_value_boundary2=1.0 +exponent=0.5 +dump_value=False + +#------------------------------------------------------------------ + +# +# collision speed -> filter +# + +[AudioScalarScale] +subsystem=Entity +attribute=CollisionSpeed +audio_component=CollisionExternalComponent +attribute_value_boundary1=0.0 +attribute_value_boundary2=CollisionTopSpeed +control_ID=BrightnessAudioControlID +control_value_boundary1=0.8 +control_value_boundary2=1.0 +exponent=1.0 +dump_value=False + +#------------------------------------------------------------------ + +[AudioStateTrigger] +subsystem=Entity +attribute=CollisionState +audio_component=CollisionExternalComponent +trigger_state=Mech::InitialHitState +inverse_trigger=0 +control_ID=StartAudioControlID +control_value=3.0 +dump_value=False + diff --git a/CONTENT/BT/AUDIO/COLINT.SCP b/CONTENT/BT/AUDIO/COLINT.SCP new file mode 100644 index 0000000..6eabea9 --- /dev/null +++ b/CONTENT/BT/AUDIO/COLINT.SCP @@ -0,0 +1,135 @@ +# +################################################################### +# Mech Collision Internal Collision Audio Script +################################################################### +# + +[macro] +CollisionTopSpeed=25 +CollisionTopAngularSpeed=0.8 + +# +################################################################### +# Collision component +################################################################### +# + +[Static3DPatchSource] +location=OriginLocation +resource=Collision01 +priority=2 +mix_presence=3 +volume_mix_level=CollisionVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=True +use_attack_time_scale=False +has_compression_curve=True +compression_duration=0.5 +name=CollisionComponent + +#------------------------------------------------------------------ + +# +# resource select +# + +[AudioResourceSelector] +audio_source=CollisionComponent +audio_resource_index=CollisionIndex +control_ID=100 +min_control_value=0.0 +max_control_value=1.0 +dump_value=False +name=CollisionResourceSelect + +# +# angular speed -> resource select +# + +[AudioMotionScale] +subsystem=Entity +attribute=LocalVelocity +motion_type=AngularMotionType +motion_value=LengthMotionValue +audio_component=CollisionResourceSelect +attribute_value_boundary1=0.0 +attribute_value_boundary2=CollisionTopAngularSpeed +control_ID=100 +control_value_boundary1=0.0 +control_value_boundary2=1.0 +exponent=0.5 +dump_value=False + +#------------------------------------------------------------------ + +# +# sample and hold -> pitch +# + +[AudioSampleAndHold] +audio_component=CollisionComponent +control_ID=PitchAudioControlID +sample_duration=99.0 +min_value=-400 +max_value=100 +name=CollisionPitchSampleAndHold + +#------------------------------------------------------------------ + +# +# collision speed -> attack volume +# + +[AudioScalarScale] +subsystem=Entity +attribute=CollisionSpeed +audio_component=CollisionComponent +attribute_value_boundary1=0.0 +attribute_value_boundary2=CollisionTopSpeed +control_ID=AttackVolumeAudioControlID +control_value_boundary1=0.9 +control_value_boundary2=1.0 +exponent=0.5 +dump_value=False + +#------------------------------------------------------------------ + +# +# collision speed -> filter +# + +[AudioScalarScale] +subsystem=Entity +attribute=CollisionSpeed +audio_component=CollisionComponent +attribute_value_boundary1=0.0 +attribute_value_boundary2=CollisionTopSpeed +control_ID=BrightnessAudioControlID +control_value_boundary1=0.7 +control_value_boundary2=1.0 +exponent=1.0 +dump_value=False + +#------------------------------------------------------------------ + +[AudioStateTrigger] +subsystem=Entity +attribute=CollisionState +audio_component=CollisionPitchSampleAndHold +trigger_state=Mech::InitialHitState +inverse_trigger=False +control_ID=StartAudioControlID +control_value=0.0 +dump_value=False + +[L4AudioCollisionTrigger] +subsystem=Entity +attribute=CollisionState +normal_attribute=CollisionNormal +audio_component=CollisionComponent +trigger_state=Mech::InitialHitState +control_ID=StartAudioControlID +control_value=3.0 +dump_value=False + diff --git a/CONTENT/BT/AUDIO/CRNEXP.SCP b/CONTENT/BT/AUDIO/CRNEXP.SCP new file mode 100644 index 0000000..d92479b --- /dev/null +++ b/CONTENT/BT/AUDIO/CRNEXP.SCP @@ -0,0 +1,84 @@ +# +################################################################### +# Crunch Audio Script +################################################################### +# + +[include] +file=audio\macros.scp + +# +################################################################### +# Audio locations +################################################################### +# + +[L4AudioLocation] +location_offset=0.0,0.0,0.0 +clipping_scale=0.25 +name=OriginLocation + +# +################################################################### +# Crunch component +################################################################### +# + +[Dynamic3DPatchSource] +location=OriginLocation +resource=Crunch01 +priority=0 +mix_presence=3 +volume_mix_level=CrunchExplosionVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=True +use_attack_time_scale=False +has_compression_curve=True +compression_duration=0.5 +name=CrunchComponent + +#------------------------------------------------------------------ + +# +# sample and hold -> pitch +# + +[AudioSampleAndHold] +audio_component=CrunchComponent +control_ID=PitchAudioControlID +sample_duration=99.0 +min_value=-200 +max_value=200 +name=CrunchPitchSampleAndHold + +# +# sample and hold -> filter +# + +[AudioSampleAndHold] +audio_component=CrunchComponent +control_ID=BrightnessAudioControlID +sample_duration=99.0 +min_value=0.7 +max_value=1.0 +name=CrunchBrightnessSampleAndHold + +#------------------------------------------------------------------ + +[AudioControlSplitter] +audio_component=CrunchPitchSampleAndHold +audio_component=CrunchBrightnessSampleAndHold +name=CrunchSplitter + +[AudioControlSend] +audio_component=CrunchSplitter +control_ID=StartAudioControlID +control_value=0.0 + +[AudioControlSend] +audio_component=CrunchComponent +control_ID=StartAudioControlID +control_value=3.0 + + diff --git a/CONTENT/BT/AUDIO/CTMIX.CFG b/CONTENT/BT/AUDIO/CTMIX.CFG new file mode 100644 index 0000000..90b2515 --- /dev/null +++ b/CONTENT/BT/AUDIO/CTMIX.CFG @@ -0,0 +1,15 @@ +/MA:229;0 +/VO:0;0 +/MI:229;0 +/CD:0;0 +/LI:0;0 +/MIC:0 +/SP:0 +/TR:114;0 +/BA:114;0 +/IPL:MIC- CDR- CDL- LIR- LIL- MIR- MIL- +/IPR:MIC- CDR- CDL- LIR- LIL- MIR- MIL- +/OPS:MIC- CDR- CDL- LIR- LIL- +/AGC:- +/IPG:1,1 +/OPG:1,1 diff --git a/CONTENT/BT/AUDIO/DGAEXP.SCP b/CONTENT/BT/AUDIO/DGAEXP.SCP new file mode 100644 index 0000000..c3ded99 --- /dev/null +++ b/CONTENT/BT/AUDIO/DGAEXP.SCP @@ -0,0 +1,47 @@ +# +################################################################### +# DamageBurn A Audio Script +################################################################### +# + +[include] +file=audio\macros.scp + +# +################################################################### +# Audio locations +################################################################### +# + +[L4AudioLocation] +location_offset=0.0,0.0,0.0 +clipping_scale=0.33 +name=OriginLocation + +# +################################################################### +# DamageBurn component +################################################################### +# + +[Dynamic3DPatchSource] +location=OriginLocation +resource=Damage01 +priority=0 +mix_presence=0 +volume_mix_level=DamageBurnAVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=False +use_attack_time_scale=False +has_compression_curve=False +compression_duration=0.0 +name=DamageBurnComponent + +#------------------------------------------------------------------ + +[AudioControlSend] +audio_component=DamageBurnComponent +control_ID=StartAudioControlID +control_value=0.0 + diff --git a/CONTENT/BT/AUDIO/DGBEXP.SCP b/CONTENT/BT/AUDIO/DGBEXP.SCP new file mode 100644 index 0000000..574ccf1 --- /dev/null +++ b/CONTENT/BT/AUDIO/DGBEXP.SCP @@ -0,0 +1,47 @@ +# +################################################################### +# DamageBurn B Audio Script +################################################################### +# + +[include] +file=audio\macros.scp + +# +################################################################### +# Audio locations +################################################################### +# + +[L4AudioLocation] +location_offset=0.0,0.0,0.0 +clipping_scale=0.33 +name=OriginLocation + +# +################################################################### +# DamageBurn component +################################################################### +# + +[Dynamic3DPatchSource] +location=OriginLocation +resource=Damage02 +priority=0 +mix_presence=0 +volume_mix_level=DamageBurnBVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=False +use_attack_time_scale=False +has_compression_curve=False +compression_duration=0.0 +name=DamageBurnComponent + +#------------------------------------------------------------------ + +[AudioControlSend] +audio_component=DamageBurnComponent +control_ID=StartAudioControlID +control_value=0.0 + diff --git a/CONTENT/BT/AUDIO/DGCEXP.SCP b/CONTENT/BT/AUDIO/DGCEXP.SCP new file mode 100644 index 0000000..7c8a750 --- /dev/null +++ b/CONTENT/BT/AUDIO/DGCEXP.SCP @@ -0,0 +1,48 @@ +# +################################################################### +# DamageBurn C Audio Script +################################################################### +# + +[include] +file=audio\macros.scp + +# +################################################################### +# Audio locations +################################################################### +# + +[L4AudioLocation] +location_offset=0.0,0.0,0.0 +clipping_scale=0.33 +name=OriginLocation + +# +################################################################### +# DamageBurn component +################################################################### +# + +[Static3DPatchSource] +location=OriginLocation +resource=Damage03 +priority=1 +mix_presence=0 +volume_mix_level=DamageBurnCVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=False +use_attack_time_scale=False +has_compression_curve=False +compression_duration=0.0 +use_internal=False +name=DamageBurnComponent + +#------------------------------------------------------------------ + +[AudioControlSend] +audio_component=DamageBurnComponent +control_ID=StartAudioControlID +control_value=0.0 + diff --git a/CONTENT/BT/AUDIO/DSTCMP.SCP b/CONTENT/BT/AUDIO/DSTCMP.SCP new file mode 100644 index 0000000..2794d5d --- /dev/null +++ b/CONTENT/BT/AUDIO/DSTCMP.SCP @@ -0,0 +1,38 @@ +# +################################################################### +# Destroyed Internal Audio Script +################################################################### +# + +# +################################################################### +# SubsystemDestroyed component +################################################################### +# + +[DirectPatchSource] +location=OriginLocation +resource=DestroyedInt06 +position=RearDirectPatchPosition +priority=0 +mix_presence=3 +volume_mix_level=SubsystemDestroyedVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=False +use_attack_time_scale=False +has_compression_curve=True +compression_duration=1.0 +name=SubsystemDestroyedComponent + +[AudioControlSequence] +audio_component=SubsystemDestroyedComponent +tempo=160 +midi_file=audio\dstrd02.mid +is_looped=False +dump_value=False +name=SubsystemDestroyedSequence + +[AudioIdleWatcher] +audio_component=SubsystemDestroyedSequence + diff --git a/CONTENT/BT/AUDIO/DSTRD01.MID b/CONTENT/BT/AUDIO/DSTRD01.MID new file mode 100644 index 0000000..b18194a Binary files /dev/null and b/CONTENT/BT/AUDIO/DSTRD01.MID differ diff --git a/CONTENT/BT/AUDIO/DSTRD02.MID b/CONTENT/BT/AUDIO/DSTRD02.MID new file mode 100644 index 0000000..3bb9786 Binary files /dev/null and b/CONTENT/BT/AUDIO/DSTRD02.MID differ diff --git a/CONTENT/BT/AUDIO/DSTTRG.SCP b/CONTENT/BT/AUDIO/DSTTRG.SCP new file mode 100644 index 0000000..3666a82 --- /dev/null +++ b/CONTENT/BT/AUDIO/DSTTRG.SCP @@ -0,0 +1,22 @@ +# +################################################################### +# Destroyed Internal Audio Script +################################################################### +# + +# +################################################################### +# Destroyed component +################################################################### +# + +[AudioStateTrigger] +subsystem=MechSubsystem +attribute=SimulationState +audio_component=SubsystemDestroyedSequence +trigger_state=MechSubsystem::Destroyed +inverse_trigger=False +control_ID=StartAudioControlID +control_value=0.0 +dump_value=False + diff --git a/CONTENT/BT/AUDIO/EPCCMP.SCP b/CONTENT/BT/AUDIO/EPCCMP.SCP new file mode 100644 index 0000000..c661ea9 --- /dev/null +++ b/CONTENT/BT/AUDIO/EPCCMP.SCP @@ -0,0 +1,57 @@ +# +################################################################### +# ER PPC Audio Script +################################################################### +# + +[macro] +LaserFireResource=LaserAFire01 +LaserFirePitchOffset=-200 +LaserFireComponent=PPCFireComponent +LaserFireIndex=LaserAFireIndex +LaserFireResourceSelect=PPCFireResourceSelect +LaserFireSampleAndHold=PPCFireSampleAndHold +# +LaserSustainResource=LaserASustain01 +LaserSustainComponent=PPCSustainComponent +LaserSustainIndex=LaserASustainIndex +LaserSustainResourceSelect=PPCSustainResourceSelect +LaserSustainSampleAndHold=PPCSustainSampleAndHold +# +LaserReleaseResource=LaserARelease01 +LaserReleaseComponent=PPCReleaseComponent +LaserReleaseIndex=LaserAReleaseIndex +LaserReleaseResourceSelect=PPCReleaseResourceSelect +LaserReleaseSampleAndHold=PPCReleaseSampleAndHold +# +LaserChargeResource=LaserACharge01 +LaserChargeComponent=PPCChargeComponent +LaserChargeIndex=LaserAChargeIndex +LaserChargeResourceSelect=PPCChargeResourceSelect +LaserChargeSampleAndHold=PPCChargeSampleAndHold +# +LaserLoadedResource=LaserLoaded01 +LaserLoadedComponent=SmallLaserLoadedComponent +LaserLoadedSequence=SmallLaserLoadedSequence +# +LaserTriggerDuringLoadResource=TriggerDuringLoad01 +LaserTriggerDuringLoadComponent=PPCTriggerDuringLoadComponent +# +LaserMisfireResource=LaserAMisfire01 +LaserMisfireComponent=PPCMisfireComponent +# +LaserSeekLevelResource=BasicBeep02 +LaserSeekLevelComponent=PPCSeekLevelComponent + +[include] +file=audio\lsrcmp.scp + +#------------------------------------------------------------------ + +[macro] +CoolantLeakComponent=PPCCoolantLeakComponent +CoolantLeakAmplitudeSmoother=PPCCoolantLeakAmplitudeSmoother + +[include] +file=audio\cltcmp.scp + diff --git a/CONTENT/BT/AUDIO/EPPCMP.SCP b/CONTENT/BT/AUDIO/EPPCMP.SCP new file mode 100644 index 0000000..a5a5782 --- /dev/null +++ b/CONTENT/BT/AUDIO/EPPCMP.SCP @@ -0,0 +1,48 @@ +# +################################################################### +# ER PPC Audio Script +################################################################### +# + +[macro] +LaserFireResource=LaserAFire01 +LaserFirePitchOffset=-200 +LaserFireComponent=PPCFireComponent +LaserFireIndex=LaserAFireIndex +LaserFireResourceSelect=PPCFireResourceSelect +LaserFireSampleAndHold=PPCFireSampleAndHold +# +LaserSustainResource=LaserASustain01 +LaserSustainComponent=PPCSustainComponent +LaserSustainIndex=LaserASustainIndex +LaserSustainResourceSelect=PPCSustainResourceSelect +LaserSustainSampleAndHold=PPCSustainSampleAndHold +# +LaserReleaseResource=LaserARelease01 +LaserReleaseComponent=PPCReleaseComponent +LaserReleaseIndex=LaserAReleaseIndex +LaserReleaseResourceSelect=PPCReleaseResourceSelect +LaserReleaseSampleAndHold=PPCReleaseSampleAndHold +# +LaserChargeResource=LaserACharge01 +LaserChargeComponent=PPCChargeComponent +LaserChargeIndex=LaserAChargeIndex +LaserChargeResourceSelect=PPCChargeResourceSelect +LaserChargeSampleAndHold=PPCChargeSampleAndHold +# +LaserLoadedResource=LaserLoaded01 +LaserLoadedComponent=PPCLoadedComponent +LaserLoadedSequence=PPCLoadedSequence +# +LaserTriggerDuringLoadResource=TriggerDuringLoad01 +LaserTriggerDuringLoadComponent=PPCTriggerDuringLoadComponent +# +LaserMisfireResource=LaserAMisfire01 +LaserMisfireComponent=PPCMisfireComponent +# +LaserSeekLevelResource=BasicBeep02 +LaserSeekLevelComponent=PPCSeekLevelComponent + +[include] +file=audio\lsrcmp.scp + diff --git a/CONTENT/BT/AUDIO/EPPCMPE.SCP b/CONTENT/BT/AUDIO/EPPCMPE.SCP new file mode 100644 index 0000000..c2d8c10 --- /dev/null +++ b/CONTENT/BT/AUDIO/EPPCMPE.SCP @@ -0,0 +1,14 @@ +# +################################################################### +# ER PPC External Audio Script +################################################################### +# + +[macro] +LaserSustainResource=LaserASustain01 +LaserSustainVolume=LaserExternalSustainVolume +LaserPitchOffset=-100 +LaserSustainComponent=ERPPCExternalSustainComponent + +[include] +file=audio\lsrcmpe.scp diff --git a/CONTENT/BT/AUDIO/EPPTRG.SCP b/CONTENT/BT/AUDIO/EPPTRG.SCP new file mode 100644 index 0000000..042ba9c --- /dev/null +++ b/CONTENT/BT/AUDIO/EPPTRG.SCP @@ -0,0 +1,12 @@ +# +################################################################### +# PPC Internal Audio Script +################################################################### +# + +[include] +file=audio\lsrtrg.scp +file=audio\clttrg.scp +file=audio\buttrg.scp +file=audio\dsttrg.scp + diff --git a/CONTENT/BT/AUDIO/EPPTRGE.SCP b/CONTENT/BT/AUDIO/EPPTRGE.SCP new file mode 100644 index 0000000..86e97c1 --- /dev/null +++ b/CONTENT/BT/AUDIO/EPPTRGE.SCP @@ -0,0 +1,9 @@ +# +################################################################### +# PPC External Audio Script +################################################################### +# + +[include] +file=audio\lsrtrge.scp + diff --git a/CONTENT/BT/AUDIO/ERLCMP.SCP b/CONTENT/BT/AUDIO/ERLCMP.SCP new file mode 100644 index 0000000..91db4fb --- /dev/null +++ b/CONTENT/BT/AUDIO/ERLCMP.SCP @@ -0,0 +1,48 @@ +# +################################################################### +# Extended Range Large Laser Audio Script +################################################################### +# + +[macro] +LaserFireResource=LaserCFire01 +LaserFirePitchOffset=-200 +LaserFireComponent=ERLLaserFireComponent +LaserFireIndex=LaserCFireIndex +LaserFireResourceSelect=ERLLaserFireResourceSelect +LaserFireSampleAndHold=ERLLaserFireSampleAndHold +# +LaserSustainResource=LaserCSustain01 +LaserSustainComponent=ERLLaserSustainComponent +LaserSustainIndex=LaserCSustainIndex +LaserSustainResourceSelect=ERLLaserSustainResourceSelect +LaserSustainSampleAndHold=ERLLaserSustainSampleAndHold +# +LaserReleaseResource=LaserARelease01 +LaserReleaseComponent=ERLLaserReleaseComponent +LaserReleaseIndex=LaserAReleaseIndex +LaserReleaseResourceSelect=ERLLaserReleaseResourceSelect +LaserReleaseSampleAndHold=ERLLaserReleaseSampleAndHold +# +LaserChargeResource=LaserACharge01 +LaserChargeComponent=ERLLaserChargeComponent +LaserChargeIndex=LaserAChargeIndex +LaserChargeResourceSelect=ERLLaserChargeResourceSelect +LaserChargeSampleAndHold=ERLLaserChargeSampleAndHold +# +LaserLoadedResource=LaserLoaded01 +LaserLoadedComponent=ERLLaserLoadedComponent +LaserLoadedSequence=ERLLaserLoadedSequence +# +LaserTriggerDuringLoadResource=TriggerDuringLoad01 +LaserTriggerDuringLoadComponent=ERLLaserTriggerDuringLoadComponent +# +LaserMisfireResource=LaserAMisfire01 +LaserMisfireComponent=ERLLaserMisfireComponent +# +LaserSeekLevelResource=BasicBeep02 +LaserSeekLevelComponent=ERLLaserSeekLevelComponent + +[include] +file=audio\lsrcmp.scp + diff --git a/CONTENT/BT/AUDIO/ERLCMPE.SCP b/CONTENT/BT/AUDIO/ERLCMPE.SCP new file mode 100644 index 0000000..1765e35 --- /dev/null +++ b/CONTENT/BT/AUDIO/ERLCMPE.SCP @@ -0,0 +1,14 @@ +# +################################################################### +# ER Large Laser External Audio Script +################################################################### +# + +[macro] +LaserSustainResource=LaserCSustainExt01 +LaserSustainVolume=LaserExternalSustainVolume +LaserPitchOffset=-200 +LaserSustainComponent=ERLLaserExternalSustainComponent + +[include] +file=audio\lsrcmpe.scp diff --git a/CONTENT/BT/AUDIO/ERLTRG.SCP b/CONTENT/BT/AUDIO/ERLTRG.SCP new file mode 100644 index 0000000..251ed5b --- /dev/null +++ b/CONTENT/BT/AUDIO/ERLTRG.SCP @@ -0,0 +1,12 @@ +# +################################################################### +# ER Large Laser Audio Script +################################################################### +# + +[include] +file=audio\lsrtrg.scp +file=audio\clttrg.scp +file=audio\buttrg.scp +file=audio\dsttrg.scp + diff --git a/CONTENT/BT/AUDIO/ERLTRGE.SCP b/CONTENT/BT/AUDIO/ERLTRGE.SCP new file mode 100644 index 0000000..ab9013c --- /dev/null +++ b/CONTENT/BT/AUDIO/ERLTRGE.SCP @@ -0,0 +1,8 @@ +# +################################################################### +# ER Laser External Triggers +################################################################### +# + +[include] +file=audio\lsrtrge.scp diff --git a/CONTENT/BT/AUDIO/ERMCMP.SCP b/CONTENT/BT/AUDIO/ERMCMP.SCP new file mode 100644 index 0000000..524270d --- /dev/null +++ b/CONTENT/BT/AUDIO/ERMCMP.SCP @@ -0,0 +1,49 @@ +# +################################################################### +# Extended Range Medium Laser Audio Script +################################################################### +# + +[macro] +LaserFireResource=LaserCFire01 +LaserFirePitchOffset=0 +LaserFireComponent=ERMLaserFireComponent +LaserFireIndex=LaserCFireIndex +LaserFireResourceSelect=ERMLaserFireResourceSelect +LaserFireSampleAndHold=ERMLaserFireSampleAndHold +# +LaserSustainResource=LaserCSustain01 +LaserSustainComponent=ERMLaserSustainComponent +LaserSustainIndex=LaserCSustainIndex +LaserSustainResourceSelect=ERMLaserSustainResourceSelect +LaserSustainSampleAndHold=ERMLaserSustainSampleAndHold +# +LaserReleaseResource=LaserARelease01 +LaserReleaseComponent=ERMLaserReleaseComponent +LaserReleaseIndex=LaserAReleaseIndex +LaserReleaseResourceSelect=ERMLaserReleaseResourceSelect +LaserReleaseSampleAndHold=ERMLaserReleaseSampleAndHold +# +LaserChargeResource=LaserACharge01 +LaserChargeComponent=ERMLaserChargeComponent +LaserChargeIndex=LaserAChargeIndex +LaserChargeResourceSelect=ERMLaserChargeResourceSelect +LaserChargeSampleAndHold=ERMLaserChargeSampleAndHold +# +LaserLoadedResource=LaserLoaded01 +LaserLoadedComponent=ERMLaserLoadedComponent +LaserLoadedSequence=ERMLaserLoadedSequence +# +LaserTriggerDuringLoadResource=TriggerDuringLoad01 +LaserTriggerDuringLoadComponent=ERMLaserTriggerDuringLoadComponent +# +LaserMisfireResource=LaserAMisfire01 +LaserMisfireComponent=ERMLaserMisfireComponent +# +LaserSeekLevelResource=BasicBeep02 +LaserSeekLevelComponent=ERMLaserSeekLevelComponent + +[include] +file=audio\lsrcmp.scp + + diff --git a/CONTENT/BT/AUDIO/ERMCMPE.SCP b/CONTENT/BT/AUDIO/ERMCMPE.SCP new file mode 100644 index 0000000..07971b6 --- /dev/null +++ b/CONTENT/BT/AUDIO/ERMCMPE.SCP @@ -0,0 +1,14 @@ +# +################################################################### +# ER Medium Laser External Audio Script +################################################################### +# + +[macro] +LaserSustainResource=LaserCSustainExt01 +LaserSustainVolume=LaserExternalSustainVolume +LaserPitchOffset=0 +LaserSustainComponent=ERMLaserExternalSustainComponent + +[include] +file=audio\lsrcmpe.scp diff --git a/CONTENT/BT/AUDIO/ERMTRG.SCP b/CONTENT/BT/AUDIO/ERMTRG.SCP new file mode 100644 index 0000000..9b2edc6 --- /dev/null +++ b/CONTENT/BT/AUDIO/ERMTRG.SCP @@ -0,0 +1,12 @@ +# +################################################################### +# ER Medium Laser Audio Script +################################################################### +# + +[include] +file=audio\lsrtrg.scp +file=audio\clttrg.scp +file=audio\buttrg.scp +file=audio\dsttrg.scp + diff --git a/CONTENT/BT/AUDIO/ERMTRGE.SCP b/CONTENT/BT/AUDIO/ERMTRGE.SCP new file mode 100644 index 0000000..ab9013c --- /dev/null +++ b/CONTENT/BT/AUDIO/ERMTRGE.SCP @@ -0,0 +1,8 @@ +# +################################################################### +# ER Laser External Triggers +################################################################### +# + +[include] +file=audio\lsrtrge.scp diff --git a/CONTENT/BT/AUDIO/ERSCMP.SCP b/CONTENT/BT/AUDIO/ERSCMP.SCP new file mode 100644 index 0000000..ab13ade --- /dev/null +++ b/CONTENT/BT/AUDIO/ERSCMP.SCP @@ -0,0 +1,48 @@ +# +################################################################### +# Extended Range Small Laser Audio Script +################################################################### +# + +[macro] +LaserFireResource=LaserCFire01 +LaserFirePitchOffset=200 +LaserFireComponent=ERSLaserFireComponent +LaserFireIndex=LaserCFireIndex +LaserFireResourceSelect=ERSLaserFireResourceSelect +LaserFireSampleAndHold=ERSLaserFireSampleAndHold +# +LaserSustainResource=LaserCSustain01 +LaserSustainComponent=ERSLaserSustainComponent +LaserSustainIndex=LaserCSustainIndex +LaserSustainResourceSelect=ERSLaserSustainResourceSelect +LaserSustainSampleAndHold=ERSLaserSustainSampleAndHold +# +LaserReleaseResource=LaserARelease01 +LaserReleaseComponent=ERSLaserReleaseComponent +LaserReleaseIndex=LaserAReleaseIndex +LaserReleaseResourceSelect=ERSLaserReleaseResourceSelect +LaserReleaseSampleAndHold=ERSLaserReleaseSampleAndHold +# +LaserChargeResource=LaserACharge01 +LaserChargeComponent=ERSLaserChargeComponent +LaserChargeIndex=LaserAChargeIndex +LaserChargeResourceSelect=ERSLaserChargeResourceSelect +LaserChargeSampleAndHold=ERSLaserChargeSampleAndHold +# +LaserLoadedComponent=ERSLaserLoadedComponent +LaserLoadedSequence=ERSLaserLoadedSequence +# +LaserTriggerDuringLoadResource=TriggerDuringLoad01 +LaserTriggerDuringLoadComponent=ERSLaserTriggerDuringLoadComponent +# +LaserMisfireResource=LaserAMisfire01 +LaserMisfireComponent=ERSLaserMisfireComponent +# +LaserSeekLevelResource=BasicBeep02 +LaserSeekLevelComponent=ERSLaserSeekLevelComponent + +[include] +file=audio\lsrcmp.scp + + diff --git a/CONTENT/BT/AUDIO/ERSCMPE.SCP b/CONTENT/BT/AUDIO/ERSCMPE.SCP new file mode 100644 index 0000000..29494ed --- /dev/null +++ b/CONTENT/BT/AUDIO/ERSCMPE.SCP @@ -0,0 +1,14 @@ +# +################################################################### +# ER Small Laser External Audio Script +################################################################### +# + +[macro] +LaserSustainResource=LaserCSustainExt01 +LaserSustainVolume=LaserExternalSustainVolume +LaserPitchOffset=200 +LaserSustainComponent=ERSLaserExternalSustainComponent + +[include] +file=audio\lsrcmpe.scp diff --git a/CONTENT/BT/AUDIO/ERSTRG.SCP b/CONTENT/BT/AUDIO/ERSTRG.SCP new file mode 100644 index 0000000..3ac1265 --- /dev/null +++ b/CONTENT/BT/AUDIO/ERSTRG.SCP @@ -0,0 +1,12 @@ +# +################################################################### +# ER Small Laser Audio Script +################################################################### +# + +[include] +file=audio\lsrtrg.scp +file=audio\clttrg.scp +file=audio\buttrg.scp +file=audio\dsttrg.scp + diff --git a/CONTENT/BT/AUDIO/ERSTRGE.SCP b/CONTENT/BT/AUDIO/ERSTRGE.SCP new file mode 100644 index 0000000..ab9013c --- /dev/null +++ b/CONTENT/BT/AUDIO/ERSTRGE.SCP @@ -0,0 +1,8 @@ +# +################################################################### +# ER Laser External Triggers +################################################################### +# + +[include] +file=audio\lsrtrge.scp diff --git a/CONTENT/BT/AUDIO/FIND.TXT b/CONTENT/BT/AUDIO/FIND.TXT new file mode 100644 index 0000000..e69de29 diff --git a/CONTENT/BT/AUDIO/FIREXT.SCP b/CONTENT/BT/AUDIO/FIREXT.SCP new file mode 100644 index 0000000..ade38d8 --- /dev/null +++ b/CONTENT/BT/AUDIO/FIREXT.SCP @@ -0,0 +1,43 @@ +# +# External Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchext.scp + +# +# LLaser component +# +[include] +file=audio\glrcmpe.scp + +# LLaser watcher +[macro] +MechSubsystem=LLaser +[include] +file=audio\glrtrge.scp + +# ERMLaser_1 watcher +[macro] +MechSubsystem=ERMLaser_1 +[include] +file=audio\glrtrge.scp + +# ERMLaser_2 watcher +[macro] +MechSubsystem=ERMLaser_2 +[include] +file=audio\glrtrge.scp + +# ERSLaser_1 watcher +[macro] +MechSubsystem=ERSLaser_1 +[include] +file=audio\glrtrge.scp + +# ERSLaser_2 watcher +[macro] +MechSubsystem=ERSLaser_2 +[include] +file=audio\glrtrge.scp + diff --git a/CONTENT/BT/AUDIO/FIRINT.SCP b/CONTENT/BT/AUDIO/FIRINT.SCP new file mode 100644 index 0000000..33562db --- /dev/null +++ b/CONTENT/BT/AUDIO/FIRINT.SCP @@ -0,0 +1,79 @@ +# +# Internal Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchint.scp + +# +# LLaser component +# +[include] +file=audio\llrcmp.scp + +# LLaser watcher +[macro] +MechSubsystem=LLaser +[include] +file=audio\llrtrg.scp + +# +# ERMLaser_1 component +# +[include] +file=audio\ermcmp.scp + +# ERMLaser_1 watcher +[macro] +MechSubsystem=ERMLaser_1 +[include] +file=audio\ermtrg.scp + +# ERMLaser_2 watcher +[macro] +MechSubsystem=ERMLaser_2 +[include] +file=audio\ermtrg.scp + +# +# ERSLaser_1 component +# +[include] +file=audio\erscmp.scp + +# ERSLaser_1 watcher +[macro] +MechSubsystem=ERSLaser_1 +[include] +file=audio\erstrg.scp + +# ERSLaser_2 watcher +[macro] +MechSubsystem=ERSLaser_2 +[include] +file=audio\erstrg.scp + +# +# AmmoBinSTRK4 component +# +[include] +file=audio\abncmp.scp + +# AmmoBinSTRK4 watcher +[macro] +MechSubsystem=AmmoBinSTRK4 +[include] +file=audio\abntrg.scp + +# +# STRK4 component +# +[include] +file=audio\srmcmp.scp + +# STRK4 watcher +[macro] +MechSubsystem=STRK4 +[include] +file=audio\srmtrg.scp + diff --git a/CONTENT/BT/AUDIO/FOTEXT.SCP b/CONTENT/BT/AUDIO/FOTEXT.SCP new file mode 100644 index 0000000..15893bf --- /dev/null +++ b/CONTENT/BT/AUDIO/FOTEXT.SCP @@ -0,0 +1,126 @@ +# +################################################################### +# Mech Foot Fall External Audio Script +################################################################### +# + +[!macro] +FootFallTopAcceleration=7.0 +FootFallTopSpeed=40.0 + +[!Dynamic3DPatchSource] +location=OriginLocation +resource=FootFallExt01 +priority=0 +mix_presence=0 +volume_mix_level=FootFallExternalVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=True +use_attack_time_scale=False +has_compression_curve=False +compression_duration=0.0 +name=FootFallExternalComponent + +#------------------------------------------------------------------ + +# +# linear acceleration -> filter +# + +[!AudioMotionScale] +subsystem=Entity +attribute=LocalAcceleration +motion_type=0 +motion_value=3 +audio_component=FootFallExternalComponent +attribute_value_boundary1=0.0 +attribute_value_boundary2=FootFallTopAcceleration +control_ID=BrightnessAudioControlID +control_value_boundary1=0.5 +control_value_boundary2=1.0 +exponent=0.5 +dump_value=False + +# +# linear velocity -> pitch +# + +[!AudioMotionScale] +subsystem=Entity +attribute=LocalVelocity +motion_type=0 +motion_value=3 +audio_component=FootFallExternalComponent +attribute_value_boundary1=0.0 +attribute_value_boundary2=FootFallTopSpeed +control_ID=PitchAudioControlID +control_value_boundary1=-400 +control_value_boundary2=0 +exponent=1.0 +dump_value=False + +#------------------------------------------------------------------ + +[!AudioLogicalTrigger] +subsystem=Entity +attribute=FootStep +audio_component=FootFallExternalComponent +attribute_match_value=True +control_ID=StartAudioControlID +control_value=1.5 +dump_value=False + +# +################################################################### +# Mech Footfall and servo combo +################################################################### +# + +[macro] +MyomerServoTopSpeed=60.0 + +[Dynamic3DPatchSource] +location=OriginLocation +resource=FootFallExt02 +priority=0 +mix_presence=0 +volume_mix_level=FootFallExternalVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=False +use_attack_time_scale=False +has_compression_curve=False +compression_duration=0.0 +name=FootFallExternalComponent + +#------------------------------------------------------------------ + +# +# linear velocity -> pitch +# + +[AudioMotionScale] +subsystem=Entity +attribute=LocalVelocity +motion_type=0 +motion_value=3 +audio_component=FootFallExternalComponent +attribute_value_boundary1=0.0 +attribute_value_boundary2=MyomerServoTopSpeed +control_ID=PitchAudioControlID +control_value_boundary1=-500 +control_value_boundary2=500 +exponent=1.0 +dump_value=False + +#------------------------------------------------------------------ + +[AudioLogicalTrigger] +subsystem=Entity +attribute=FootStep +audio_component=FootFallExternalComponent +attribute_match_value=True +control_ID=StartAudioControlID +control_value=1.5 +dump_value=False diff --git a/CONTENT/BT/AUDIO/FOTINT.SCP b/CONTENT/BT/AUDIO/FOTINT.SCP new file mode 100644 index 0000000..c73b3ab --- /dev/null +++ b/CONTENT/BT/AUDIO/FOTINT.SCP @@ -0,0 +1,131 @@ +# +################################################################### +# FootFall component +################################################################### +# + +[macro] +FootFallTopAcceleration=10 +FootFallTopAngularSpeed=0.6 + +# +################################################################### +# Mech Foot Fall Internal Audio Script +################################################################### +# + +[DirectPatchSource] +location=OriginLocation +resource=FootFallInt01 +position=FrontDirectPatchPosition +priority=0 +mix_presence=4 +volume_mix_level=FootFallVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=True +use_attack_time_scale=False +has_compression_curve=True +compression_duration=0.5 +name=FootFallComponent + +#------------------------------------------------------------------ + +# +# amplitude mixer -> amplitude +# + +[AudioControlMixer] +audio_component=FootFallComponent +first_input_control_ID=100 +last_input_control_ID=101 +output_control_ID=VolumeAudioControlID +name=FootFallAmplitudeMixer + +# +# filter mixer -> filter +# + +[AudioControlMixer] +audio_component=FootFallComponent +first_input_control_ID=100 +last_input_control_ID=101 +output_control_ID=BrightnessAudioControlID +name=FootFallFilterMixer + +# +# control splitter +# + +[AudioControlSplitter] +audio_component=FootFallAmplitudeMixer +audio_component=FootFallFilterMixer +name=FootFallSplitter + +# +# smoother1 -> splitter +# + +[AudioControlSmoother] +audio_component=FootFallSplitter +number_of_samples=Sample2Sec +control_ID=100 +name=FootFallSmoother1 + +# +# linear acceleration -> smoother1 +# + +[AudioMotionScale] +subsystem=Entity +attribute=LocalAcceleration +motion_type=LinearMotionType +motion_value=LengthMotionValue +audio_component=FootFallSmoother1 +attribute_value_boundary1=0.0 +attribute_value_boundary2=FootFallTopAcceleration +control_ID=100 +control_value_boundary1=0.0 +control_value_boundary2=1.0 +exponent=0.4 +dump_value=False + +# +# smoother2 -> splitter +# + +[AudioControlSmoother] +audio_component=FootFallSplitter +number_of_samples=Sample1Sec +control_ID=101 +name=FootFallSmoother2 + +# +# angular velocity -> smoother2 +# + +[AudioMotionScale] +subsystem=Entity +attribute=LocalVelocity +motion_type=AngularMotionType +motion_value=LengthMotionValue +audio_component=FootFallSmoother2 +attribute_value_boundary1=0.0 +attribute_value_boundary2=FootFallTopAngularSpeed +control_ID=101 +control_value_boundary1=0.0 +control_value_boundary2=0.4 +exponent=0.4 +dump_value=False + +#------------------------------------------------------------------ + +[AudioLogicalTrigger] +subsystem=Entity +attribute=FootStep +audio_component=FootFallComponent +attribute_match_value=True +control_ID=StartAudioControlID +control_value=2.0 +dump_value=False + diff --git a/CONTENT/BT/AUDIO/GENCMP.SCP b/CONTENT/BT/AUDIO/GENCMP.SCP new file mode 100644 index 0000000..f3da8dd --- /dev/null +++ b/CONTENT/BT/AUDIO/GENCMP.SCP @@ -0,0 +1,61 @@ +# +################################################################### +# Generator Audio Script +################################################################### +# + +# +################################################################### +# GeneratorOn component +################################################################### +# + +[DirectPatchSource] +location=OriginLocation +resource=BasicBeep01 +position=FrontDirectPatchPosition +priority=3 +mix_presence=0 +volume_mix_level=GeneratorOnVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=False +use_attack_time_scale=False +has_compression_curve=False +compression_duration=0.0 +name=GeneratorOnComponent + +# +################################################################### +# GeneratorOutWarning component +################################################################### +# + +[DirectPatchSource] +location=OriginLocation +resource=Warnings01 +position=FrontDirectPatchPosition +priority=3 +mix_presence=2 +volume_mix_level=WarningVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=False +use_attack_time_scale=False +has_compression_curve=False +compression_duration=0.0 +name=GeneratorOutWarningComponent + +#------------------------------------------------------------------ + +[AudioControlSequence] +audio_component=GeneratorOutWarningComponent +tempo=160 +midi_file=audio\genwrn02.mid +is_looped=False +dump_value=False +name=GeneratorOutWarningSequence + +[AudioIdleWatcher] +audio_component=GeneratorOutWarningSequence + diff --git a/CONTENT/BT/AUDIO/GENTRG.SCP b/CONTENT/BT/AUDIO/GENTRG.SCP new file mode 100644 index 0000000..143e7af --- /dev/null +++ b/CONTENT/BT/AUDIO/GENTRG.SCP @@ -0,0 +1,65 @@ +# +################################################################### +# Generator Audio Script +################################################################### +# + +# +################################################################### +# Includes +################################################################### +# +[include] +file=audio\clttrg.scp + +# +################################################################### +# GeneratorOn component +################################################################### +# + +[AudioLogicalTrigger] +subsystem=MechSubsystem +attribute=GeneratorOn +audio_component=GeneratorOnComponent +attribute_match_value=True +control_ID=StartAudioControlID +control_value=0.5 +dump_value=False + +[AudioLogicalTrigger] +subsystem=MechSubsystem +attribute=GeneratorOn +audio_component=GeneratorOnComponent +attribute_match_value=False +control_ID=StartAudioControlID +control_value=0.5 +dump_value=False + +# +################################################################### +# GeneratorOutWarning component +################################################################### +# + +[AudioStateTrigger] +subsystem=MechSubsystem +attribute=GeneratorState +audio_component=GeneratorOutWarningSequence +trigger_state=Generator::Off +inverse_trigger=False +control_ID=StartAudioControlID +control_value=0.0 +dump_value=False + +[AudioStateTrigger] +subsystem=MechSubsystem +attribute=GeneratorState +audio_component=GeneratorOutWarningSequence +trigger_state=Generator::Overheated +inverse_trigger=True +control_ID=StartAudioControlID +control_value=0.0 +dump_value=False + + diff --git a/CONTENT/BT/AUDIO/GENWRN01.MID b/CONTENT/BT/AUDIO/GENWRN01.MID new file mode 100644 index 0000000..eb7ea95 Binary files /dev/null and b/CONTENT/BT/AUDIO/GENWRN01.MID differ diff --git a/CONTENT/BT/AUDIO/GENWRN02.MID b/CONTENT/BT/AUDIO/GENWRN02.MID new file mode 100644 index 0000000..c491531 Binary files /dev/null and b/CONTENT/BT/AUDIO/GENWRN02.MID differ diff --git a/CONTENT/BT/AUDIO/GLRCMPE.SCP b/CONTENT/BT/AUDIO/GLRCMPE.SCP new file mode 100644 index 0000000..603e5eb --- /dev/null +++ b/CONTENT/BT/AUDIO/GLRCMPE.SCP @@ -0,0 +1,14 @@ +# +################################################################### +# Generic Laser External Audio Script +################################################################### +# + +[macro] +LaserSustainResource=LaserCSustainExt04 +LaserSustainVolume=LaserExternalSustainVolume +LaserPitchOffset=-200 +LaserSustainComponent=GenericLaserExternalSustainComponent + +[include] +file=audio\lsrcmpe.scp diff --git a/CONTENT/BT/AUDIO/GLRTRGE.SCP b/CONTENT/BT/AUDIO/GLRTRGE.SCP new file mode 100644 index 0000000..ab9013c --- /dev/null +++ b/CONTENT/BT/AUDIO/GLRTRGE.SCP @@ -0,0 +1,8 @@ +# +################################################################### +# ER Laser External Triggers +################################################################### +# + +[include] +file=audio\lsrtrge.scp diff --git a/CONTENT/BT/AUDIO/HETEXT.SCP b/CONTENT/BT/AUDIO/HETEXT.SCP new file mode 100644 index 0000000..f2ec50f --- /dev/null +++ b/CONTENT/BT/AUDIO/HETEXT.SCP @@ -0,0 +1,39 @@ +# +################################################################### +# Heat Management External Audio Script +################################################################### +# + +# +################################################################### +# CoolantDump component +################################################################### +# + +[Dynamic3DPatchSource] +location=OriginLocation +resource=CoolantDumpExt01 +priority=0 +mix_presence=0 +volume_mix_level=CoolantDumpExternalVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=False +use_attack_time_scale=False +has_compression_curve=False +compression_duration=0.0 +name=CoolantDumpComponent + +#------------------------------------------------------------------ + +[AudioStateTrigger] +subsystem=Reservoir +attribute=ReservoirState +audio_component=CoolantDumpComponent +trigger_state=Reservoir::InjectingState +inverse_trigger=False +control_ID=StartAudioControlID +control_value=4.0 +dump_value=False + + diff --git a/CONTENT/BT/AUDIO/HETINT.SCP b/CONTENT/BT/AUDIO/HETINT.SCP new file mode 100644 index 0000000..927e68f --- /dev/null +++ b/CONTENT/BT/AUDIO/HETINT.SCP @@ -0,0 +1,85 @@ +# +################################################################### +# Heat Management Audio Script +################################################################### +# + +# +################################################################### +# CoolantDump component +################################################################### +# + +[DirectPatchSource] +location=OriginLocation +resource=CoolantDump05 +position=FrontDirectPatchPosition +priority=3 +mix_presence=0 +volume_mix_level=CoolantDumpVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=False +use_attack_time_scale=False +has_compression_curve=False +compression_duration=0.0 +name=CoolantDumpComponent + +#------------------------------------------------------------------ + +[AudioScalarScale] +subsystem=HeatSink +attribute=CurrentTemperature +audio_component=CoolantDumpComponent +attribute_value_boundary1=300 +attribute_value_boundary2=1200 +control_ID=PitchAudioControlID +control_value_boundary1=-100 +control_value_boundary2=100 +exponent=3.0 +dump_value=False + +[AudioStateTrigger] +subsystem=Reservoir +attribute=ReservoirState +audio_component=CoolantDumpComponent +trigger_state=Reservoir::InjectingState +inverse_trigger=False +control_ID=StartAudioControlID +control_value=6.0 +dump_value=False + +# +################################################################### +# HeatManagement component +################################################################### +# + +[DirectPatchSource] +location=OriginLocation +resource=BasicClick01 +position=FrontDirectPatchPosition +priority=3 +mix_presence=0 +volume_mix_level=HeatManagementVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=False +use_attack_time_scale=False +has_compression_curve=False +compression_duration=0.0 +name=HeatManagementComponent + +#------------------------------------------------------------------ + +[AudioControlsButtonTrigger] +subsystem=Entity +attribute=ReduceButton +audio_component=HeatManagementComponent +attribute_value_threshold=0.0 +control_ID_on=StartAudioControlID +control_ID_off=NullAudioControlID +control_value_on=0.5 +control_value_off=0.0 +inverse_trigger=False +dump_value=False diff --git a/CONTENT/BT/AUDIO/ICOM.CFG b/CONTENT/BT/AUDIO/ICOM.CFG new file mode 100644 index 0000000..3b00802 --- /dev/null +++ b/CONTENT/BT/AUDIO/ICOM.CFG @@ -0,0 +1,15 @@ +/MA:229;0 +/VO:0;0 +/MI:229;0 +/CD:0;0 +/LI:0;0 +/MIC:0 +/SP:0 +/TR:114;0 +/BA:114;0 +/IPL:MIC- CDR- CDL- LIR- LIL+ MIR- MIL- +/IPR:MIC- CDR- CDL- LIR+ LIL- MIR- MIL- +/OPS:MIC- CDR- CDL- LIR+ LIL+ +/AGC:- +/IPG:1,1 +/OPG:1,1 diff --git a/CONTENT/BT/AUDIO/INCARM01.MID b/CONTENT/BT/AUDIO/INCARM01.MID new file mode 100644 index 0000000..0ebaa2a Binary files /dev/null and b/CONTENT/BT/AUDIO/INCARM01.MID differ diff --git a/CONTENT/BT/AUDIO/JAKEXT.SCP b/CONTENT/BT/AUDIO/JAKEXT.SCP new file mode 100644 index 0000000..c99cdb2 --- /dev/null +++ b/CONTENT/BT/AUDIO/JAKEXT.SCP @@ -0,0 +1,49 @@ +# +# External Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchext.scp + +# +# GAUSS_1 component +# +[include] +file=audio\acncmpe.scp + +# GAUSS_1 watcher +[macro] +MechSubsystem=GAUSS_1 +[include] +file=audio\acntrge.scp + +# +# LLaser component +# +[include] +file=audio\glrcmpe.scp + +# LLaser watcher +[macro] +MechSubsystem=LLaser +[include] +file=audio\glrtrge.scp + +# ERSLaser_1 watcher +[macro] +MechSubsystem=ERSLaser_1 +[include] +file=audio\glrtrge.scp + +# ERSLaser_2 watcher +[macro] +MechSubsystem=ERSLaser_2 +[include] +file=audio\glrtrge.scp + +# ERSLaser_3 watcher +[macro] +MechSubsystem=ERSLaser_3 +[include] +file=audio\glrtrge.scp + diff --git a/CONTENT/BT/AUDIO/JAKINT.SCP b/CONTENT/BT/AUDIO/JAKINT.SCP new file mode 100644 index 0000000..bde7649 --- /dev/null +++ b/CONTENT/BT/AUDIO/JAKINT.SCP @@ -0,0 +1,97 @@ +# +# Internal Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchint.scp + +# +# AmmoBinGAUSS_1 component +# +[include] +file=audio\abncmp.scp + +# AmmoBinGAUSS_1 watcher +[macro] +MechSubsystem=AmmoBinGAUSS_1 +[include] +file=audio\abntrg.scp + +# +# GAUSS_1 component +# +[include] +file=audio\saccmp.scp + +# GAUSS_1 watcher +[macro] +MechSubsystem=GAUSS_1 +[include] +file=audio\sactrg.scp + +# +# LLaser component +# +[include] +file=audio\llrcmp.scp + +# LLaser watcher +[macro] +MechSubsystem=LLaser +[include] +file=audio\llrtrg.scp + +# +# ERSLaser_1 component +# +[include] +file=audio\erscmp.scp + +# ERSLaser_1 watcher +[macro] +MechSubsystem=ERSLaser_1 +[include] +file=audio\erstrg.scp + +# ERSLaser_2 watcher +[macro] +MechSubsystem=ERSLaser_2 +[include] +file=audio\erstrg.scp + +# ERSLaser_3 watcher +[macro] +MechSubsystem=ERSLaser_3 +[include] +file=audio\erstrg.scp + +# AmmoBinLRM15_1 watcher +[macro] +MechSubsystem=AmmoBinLRM15_1 +[include] +file=audio\abntrg.scp + +# +# LRM15_1 component +# +[include] +file=audio\lrmcmp.scp + +# LRM15_1 watcher +[macro] +MechSubsystem=LRM15_1 +[include] +file=audio\lrmtrg.scp + +# AmmoBinLRM15_2 watcher +[macro] +MechSubsystem=AmmoBinLRM15_2 +[include] +file=audio\abntrg.scp + +# LRM15_2 watcher +[macro] +MechSubsystem=LRM15_2 +[include] +file=audio\lrmtrg.scp + diff --git a/CONTENT/BT/AUDIO/LACCMP.SCP b/CONTENT/BT/AUDIO/LACCMP.SCP new file mode 100644 index 0000000..cc36293 --- /dev/null +++ b/CONTENT/BT/AUDIO/LACCMP.SCP @@ -0,0 +1,38 @@ +# +################################################################### +# Large AutoCannon Audio Script +################################################################### +# + +[macro] +ProjectileFireResource=AutoCannonAction01 +ProjectileFireVolume=LargeAutoCannonFireVolume +ProjectileFirePitchOffset=-200 +ProjectileFireComponent=LargeAutoCannonFireComponent +# +ProjectileLaunchResource=AutoCannonFire01 +ProjectileLaunchVolume=LargeAutoCannonLaunchVolume +ProjectileLaunchPitchOffset=-200 +ProjectileLaunchComponent=LargeAutoCannonLaunchComponent +# +ProjectileLoadingResource=AutoCannonLoading01 +ProjectileLoadingComponent=LargeAutoCannonLoadingComponent +# +ProjectileLoadedResource=AutoCannonLoaded01 +ProjectileLoadedComponent=LargeAutoCannonLoadedComponent +ProjectileLoadedSequence=LargeAutoCannonLoadedSequence +# +ProjectileTriggerDuringLoadResource=TriggerDuringLoad01 +ProjectileTriggerDuringLoadComponent=LargeAutoCannonTriggerDuringLoadComponent +# +ProjectileMisfireResource=AutoCannonMisfire01 +ProjectileMisfireComponent=LargeAutoCannonMisfireComponent +ProjectileMisfireSequence=LargeAutoCannonMisfireSequence +# +ProjectileJamResource=AutoCannonJam01 +ProjectileJamComponent=LargeAutoCannonJamComponent +ProjectileJamSequence=LargeAutoCannonJamSequence + +[include] +file=audio\prjcmp.scp + diff --git a/CONTENT/BT/AUDIO/LACTRG.SCP b/CONTENT/BT/AUDIO/LACTRG.SCP new file mode 100644 index 0000000..98186fd --- /dev/null +++ b/CONTENT/BT/AUDIO/LACTRG.SCP @@ -0,0 +1,12 @@ +# +################################################################### +# Mech AutoCannon Internal Audio Script +################################################################### +# + +[include] +file=audio\prjtrg.scp +file=audio\clttrg.scp +file=audio\buttrg.scp +file=audio\dsttrg.scp + diff --git a/CONTENT/BT/AUDIO/LEGWRN01.MID b/CONTENT/BT/AUDIO/LEGWRN01.MID new file mode 100644 index 0000000..d8b1ec8 Binary files /dev/null and b/CONTENT/BT/AUDIO/LEGWRN01.MID differ diff --git a/CONTENT/BT/AUDIO/LLRCMP.SCP b/CONTENT/BT/AUDIO/LLRCMP.SCP new file mode 100644 index 0000000..3a5d7cc --- /dev/null +++ b/CONTENT/BT/AUDIO/LLRCMP.SCP @@ -0,0 +1,49 @@ +# +################################################################### +# Large Laser Audio Script +################################################################### +# + +[macro] +LaserFireResource=LaserBFire01 +LaserFirePitchOffset=-200 +LaserFireComponent=LargeLaserFireComponent +LaserFireIndex=LaserBFireIndex +LaserFireResourceSelect=LargeLaserFireResourceSelect +LaserFireSampleAndHold=LargeLaserFireSampleAndHold +# +LaserSustainResource=LaserBSustain01 +LaserSustainComponent=LargeLaserSustainComponent +LaserSustainIndex=LaserBSustainIndex +LaserSustainResourceSelect=LargeLaserSustainResourceSelect +LaserSustainSampleAndHold=LargeLaserSustainSampleAndHold +# +LaserReleaseResource=LaserARelease01 +LaserReleaseComponent=LargeLaserReleaseComponent +LaserReleaseIndex=LaserAReleaseIndex +LaserReleaseResourceSelect=LargeLaserReleaseResourceSelect +LaserReleaseSampleAndHold=LargeLaserReleaseSampleAndHold +# +LaserChargeResource=LaserACharge01 +LaserChargeComponent=LargeLaserChargeComponent +LaserChargeIndex=LaserAChargeIndex +LaserChargeResourceSelect=LargeLaserChargeResourceSelect +LaserChargeSampleAndHold=LargeLaserChargeSampleAndHold +# +LaserLoadedResource=LaserLoaded01 +LaserLoadedComponent=LargeLaserLoadedComponent +LaserLoadedSequence=LargeLaserLoadedSequence +# +LaserTriggerDuringLoadResource=TriggerDuringLoad01 +LaserTriggerDuringLoadComponent=LargeLaserTriggerDuringLoadComponent +# +LaserMisfireResource=LaserAMisfire01 +LaserMisfireComponent=LargeLaserMisfireComponent +# +LaserSeekLevelResource=BasicBeep02 +LaserSeekLevelComponent=LargeLaserSeekLevelComponent + +[include] +file=audio\lsrcmp.scp + + diff --git a/CONTENT/BT/AUDIO/LLRCMPE.SCP b/CONTENT/BT/AUDIO/LLRCMPE.SCP new file mode 100644 index 0000000..aeea41a --- /dev/null +++ b/CONTENT/BT/AUDIO/LLRCMPE.SCP @@ -0,0 +1,14 @@ +# +################################################################### +# Medium Laser External Audio Script +################################################################### +# + +[macro] +LaserSustainResource=LaserBSustainExt01 +LaserSustainVolume=LaserExternalSustainVolume +LaserPitchOffset=-200 +LaserSustainComponent=LargeLaserExternalSustainComponent + +[include] +file=audio\lsrcmpe.scp diff --git a/CONTENT/BT/AUDIO/LLRTRG.SCP b/CONTENT/BT/AUDIO/LLRTRG.SCP new file mode 100644 index 0000000..8c6971c --- /dev/null +++ b/CONTENT/BT/AUDIO/LLRTRG.SCP @@ -0,0 +1,12 @@ +# +################################################################### +# Large Laser Internal Audio Script +################################################################### +# + +[include] +file=audio\lsrtrg.scp +file=audio\clttrg.scp +file=audio\buttrg.scp +file=audio\dsttrg.scp + diff --git a/CONTENT/BT/AUDIO/LLRTRGE.SCP b/CONTENT/BT/AUDIO/LLRTRGE.SCP new file mode 100644 index 0000000..3b64622 --- /dev/null +++ b/CONTENT/BT/AUDIO/LLRTRGE.SCP @@ -0,0 +1,9 @@ +# +################################################################### +# Laser External Triggers +################################################################### +# + +[include] +file=audio\lsrtrge.scp + diff --git a/CONTENT/BT/AUDIO/LO1EXT.SCP b/CONTENT/BT/AUDIO/LO1EXT.SCP new file mode 100644 index 0000000..1ced3f0 --- /dev/null +++ b/CONTENT/BT/AUDIO/LO1EXT.SCP @@ -0,0 +1,67 @@ +# +# External Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchext.scp + +# +# AFC1 component +# +[include] +file=audio\acncmpe.scp + +# AFC1 watcher +[macro] +MechSubsystem=AFC1 +[include] +file=audio\acntrge.scp + +# AFC2 watcher +[macro] +MechSubsystem=AFC2 +[include] +file=audio\acntrge.scp + +# +# ERMLaser component +# +[include] +file=audio\glrcmpe.scp + +# ERMLaser watcher +[macro] +MechSubsystem=ERMLaser +[include] +file=audio\glrtrge.scp + +# ERSLaser1 watcher +[macro] +MechSubsystem=ERSLaser1 +[include] +file=audio\glrtrge.scp + +# ERSLaser2 watcher +[macro] +MechSubsystem=ERSLaser2 +[include] +file=audio\glrtrge.scp + +# ERSLaser3 watcher +[macro] +MechSubsystem=ERSLaser3 +[include] +file=audio\glrtrge.scp + +# MLaser1 watcher +[macro] +MechSubsystem=MLaser1 +[include] +file=audio\glrtrge.scp + +# MLaser2 watcher +[macro] +MechSubsystem=MLaser2 +[include] +file=audio\glrtrge.scp + diff --git a/CONTENT/BT/AUDIO/LO1INT.SCP b/CONTENT/BT/AUDIO/LO1INT.SCP new file mode 100644 index 0000000..1239b16 --- /dev/null +++ b/CONTENT/BT/AUDIO/LO1INT.SCP @@ -0,0 +1,121 @@ +# +# Internal Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchint.scp + +# +# AmmoBinAFC1 component +# +[include] +file=audio\abncmp.scp + +# AmmoBinAFC1 watcher +[macro] +MechSubsystem=AmmoBinAFC1 +[include] +file=audio\abntrg.scp + +# +# AFC1 component +# +[include] +file=audio\laccmp.scp + +# AFC1 watcher +[macro] +MechSubsystem=AFC1 +[include] +file=audio\lactrg.scp + +# AmmoBinAFC2 watcher +[macro] +MechSubsystem=AmmoBinAFC2 +[include] +file=audio\abntrg.scp + +# +# AFC2 component +# +[include] +file=audio\maccmp.scp + +# AFC2 watcher +[macro] +MechSubsystem=AFC2 +[include] +file=audio\mactrg.scp + +# +# ERMLaser component +# +[include] +file=audio\ermcmp.scp + +# ERMLaser watcher +[macro] +MechSubsystem=ERMLaser +[include] +file=audio\ermtrg.scp + +# +# ERSLaser1 component +# +[include] +file=audio\erscmp.scp + +# ERSLaser1 watcher +[macro] +MechSubsystem=ERSLaser1 +[include] +file=audio\erstrg.scp + +# ERSLaser2 watcher +[macro] +MechSubsystem=ERSLaser2 +[include] +file=audio\erstrg.scp + +# ERSLaser3 watcher +[macro] +MechSubsystem=ERSLaser3 +[include] +file=audio\erstrg.scp + +# +# MLaser1 component +# +[include] +file=audio\mlrcmp.scp + +# MLaser1 watcher +[macro] +MechSubsystem=MLaser1 +[include] +file=audio\mlrtrg.scp + +# MLaser2 watcher +[macro] +MechSubsystem=MLaser2 +[include] +file=audio\mlrtrg.scp + +# AmmoBinSRM watcher +[macro] +MechSubsystem=AmmoBinSRM +[include] +file=audio\abntrg.scp + +# +# SRM component +# +[include] +file=audio\srmcmp.scp + +# SRM watcher +[macro] +MechSubsystem=SRM +[include] +file=audio\srmtrg.scp + diff --git a/CONTENT/BT/AUDIO/LOK1EXT.SCP b/CONTENT/BT/AUDIO/LOK1EXT.SCP new file mode 100644 index 0000000..ea11477 --- /dev/null +++ b/CONTENT/BT/AUDIO/LOK1EXT.SCP @@ -0,0 +1,61 @@ +# +# External Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchext.scp + +# +# PPC_1 component +# +[include] +file=audio\glrcmpe.scp + +# PPC_1 watcher +[macro] +MechSubsystem=PPC_1 +[include] +file=audio\glrtrge.scp + +# PPC_2 watcher +[macro] +MechSubsystem=PPC_2 +[include] +file=audio\glrtrge.scp + +# LLaser_1 watcher +[macro] +MechSubsystem=LLaser_1 +[include] +file=audio\glrtrge.scp + +# LLaser_2 watcher +[macro] +MechSubsystem=LLaser_2 +[include] +file=audio\glrtrge.scp + +# MLaser_1 watcher +[macro] +MechSubsystem=MLaser_1 +[include] +file=audio\glrtrge.scp + +# MLaser_2 watcher +[macro] +MechSubsystem=MLaser_2 +[include] +file=audio\glrtrge.scp + +# SLaser_1 watcher +[macro] +MechSubsystem=SLaser_1 +[include] +file=audio\glrtrge.scp + +# SLaser_2 watcher +[macro] +MechSubsystem=SLaser_2 +[include] +file=audio\glrtrge.scp + diff --git a/CONTENT/BT/AUDIO/LOK1INT.SCP b/CONTENT/BT/AUDIO/LOK1INT.SCP new file mode 100644 index 0000000..2728593 --- /dev/null +++ b/CONTENT/BT/AUDIO/LOK1INT.SCP @@ -0,0 +1,103 @@ +# +# Internal Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchint.scp + +# +# PPC_1 component +# +[include] +file=audio\ppccmp.scp + +# PPC_1 watcher +[macro] +MechSubsystem=PPC_1 +[include] +file=audio\ppctrg.scp + +# PPC_2 watcher +[macro] +MechSubsystem=PPC_2 +[include] +file=audio\ppctrg.scp + +# +# LLaser_1 component +# +[include] +file=audio\llrcmp.scp + +# LLaser_1 watcher +[macro] +MechSubsystem=LLaser_1 +[include] +file=audio\llrtrg.scp + +# LLaser_2 watcher +[macro] +MechSubsystem=LLaser_2 +[include] +file=audio\llrtrg.scp + +# +# MLaser_1 component +# +[include] +file=audio\mlrcmp.scp + +# MLaser_1 watcher +[macro] +MechSubsystem=MLaser_1 +[include] +file=audio\mlrtrg.scp + +# MLaser_2 watcher +[macro] +MechSubsystem=MLaser_2 +[include] +file=audio\mlrtrg.scp + +# +# SLaser_1 component +# +[include] +file=audio\slrcmp.scp + +# SLaser_1 watcher +[macro] +MechSubsystem=SLaser_1 +[include] +file=audio\slrtrg.scp + +# SLaser_2 watcher +[macro] +MechSubsystem=SLaser_2 +[include] +file=audio\slrtrg.scp + +# +# AmmoBinSRM4 component +# +[include] +file=audio\abncmp.scp + +# AmmoBinSRM4 watcher +[macro] +MechSubsystem=AmmoBinSRM4 +[include] +file=audio\abntrg.scp + +# +# SRM4 component +# +[include] +file=audio\srmcmp.scp + +# SRM4 watcher +[macro] +MechSubsystem=SRM4 +[include] +file=audio\srmtrg.scp + diff --git a/CONTENT/BT/AUDIO/LOK2EXT.SCP b/CONTENT/BT/AUDIO/LOK2EXT.SCP new file mode 100644 index 0000000..43d63da --- /dev/null +++ b/CONTENT/BT/AUDIO/LOK2EXT.SCP @@ -0,0 +1,67 @@ +# +# External Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchext.scp + +# +# PPC component +# +[include] +file=audio\glrcmpe.scp + +# PPC watcher +[macro] +MechSubsystem=PPC +[include] +file=audio\glrtrge.scp + +# +# GAUSS component +# +[include] +file=audio\acncmpe.scp + +# GAUSS watcher +[macro] +MechSubsystem=GAUSS +[include] +file=audio\acntrge.scp + +# AFC25 watcher +[macro] +MechSubsystem=AFC25 +[include] +file=audio\acntrge.scp + +# MLaser_1 watcher +[macro] +MechSubsystem=MLaser_1 +[include] +file=audio\glrtrge.scp + +# MLaser_2 watcher +[macro] +MechSubsystem=MLaser_2 +[include] +file=audio\glrtrge.scp + +# MLaser_3 watcher +[macro] +MechSubsystem=MLaser_3 +[include] +file=audio\glrtrge.scp + +# SLaser_1 watcher +[macro] +MechSubsystem=SLaser_1 +[include] +file=audio\glrtrge.scp + +# SLaser_2 watcher +[macro] +MechSubsystem=SLaser_2 +[include] +file=audio\glrtrge.scp + diff --git a/CONTENT/BT/AUDIO/LOK2INT.SCP b/CONTENT/BT/AUDIO/LOK2INT.SCP new file mode 100644 index 0000000..3a559e8 --- /dev/null +++ b/CONTENT/BT/AUDIO/LOK2INT.SCP @@ -0,0 +1,115 @@ +# +# Internal Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchint.scp + +# +# PPC component +# +[include] +file=audio\ppccmp.scp + +# PPC watcher +[macro] +MechSubsystem=PPC +[include] +file=audio\ppctrg.scp + +# +# AmmoBinGAUSS component +# +[include] +file=audio\abncmp.scp + +# AmmoBinGAUSS watcher +[macro] +MechSubsystem=AmmoBinGAUSS +[include] +file=audio\abntrg.scp + +# +# GAUSS component +# +[include] +file=audio\saccmp.scp + +# GAUSS watcher +[macro] +MechSubsystem=GAUSS +[include] +file=audio\sactrg.scp + +# AmmoBinAFC25 watcher +[macro] +MechSubsystem=AmmoBinAFC25 +[include] +file=audio\abntrg.scp + +# AFC25 watcher +[macro] +MechSubsystem=AFC25 +[include] +file=audio\sactrg.scp + +# +# MLaser_1 component +# +[include] +file=audio\mlrcmp.scp + +# MLaser_1 watcher +[macro] +MechSubsystem=MLaser_1 +[include] +file=audio\mlrtrg.scp + +# MLaser_2 watcher +[macro] +MechSubsystem=MLaser_2 +[include] +file=audio\mlrtrg.scp + +# MLaser_3 watcher +[macro] +MechSubsystem=MLaser_3 +[include] +file=audio\mlrtrg.scp + +# +# SLaser_1 component +# +[include] +file=audio\slrcmp.scp + +# SLaser_1 watcher +[macro] +MechSubsystem=SLaser_1 +[include] +file=audio\slrtrg.scp + +# SLaser_2 watcher +[macro] +MechSubsystem=SLaser_2 +[include] +file=audio\slrtrg.scp + +# AmmoBinSRM4 watcher +[macro] +MechSubsystem=AmmoBinSRM4 +[include] +file=audio\abntrg.scp + +# +# SRM4 component +# +[include] +file=audio\srmcmp.scp + +# SRM4 watcher +[macro] +MechSubsystem=SRM4 +[include] +file=audio\srmtrg.scp + diff --git a/CONTENT/BT/AUDIO/LOKEXT.SCP b/CONTENT/BT/AUDIO/LOKEXT.SCP new file mode 100644 index 0000000..e2576c5 --- /dev/null +++ b/CONTENT/BT/AUDIO/LOKEXT.SCP @@ -0,0 +1,55 @@ +# +# External Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchext.scp + +# +# AFC50_1 component +# +[include] +file=audio\acncmpe.scp + +# AFC50_1 watcher +[macro] +MechSubsystem=AFC50_1 +[include] +file=audio\acntrge.scp + +# AFC50_2 watcher +[macro] +MechSubsystem=AFC50_2 +[include] +file=audio\acntrge.scp + +# +# ERMLaser_1 component +# +[include] +file=audio\glrcmpe.scp + +# ERMLaser_1 watcher +[macro] +MechSubsystem=ERMLaser_1 +[include] +file=audio\glrtrge.scp + +# ERMLaser_2 watcher +[macro] +MechSubsystem=ERMLaser_2 +[include] +file=audio\glrtrge.scp + +# ERSLaser_1 watcher +[macro] +MechSubsystem=ERSLaser_1 +[include] +file=audio\glrtrge.scp + +# ERSLaser_2 watcher +[macro] +MechSubsystem=ERSLaser_2 +[include] +file=audio\glrtrge.scp + diff --git a/CONTENT/BT/AUDIO/LOKINT.SCP b/CONTENT/BT/AUDIO/LOKINT.SCP new file mode 100644 index 0000000..3741c0a --- /dev/null +++ b/CONTENT/BT/AUDIO/LOKINT.SCP @@ -0,0 +1,97 @@ +# +# Internal Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchint.scp + +# +# AmmoBinAFC50_1 component +# +[include] +file=audio\abncmp.scp + +# AmmoBinAFC50_1 watcher +[macro] +MechSubsystem=AmmoBinAFC50_1 +[include] +file=audio\abntrg.scp + +# +# AFC50_1 component +# +[include] +file=audio\maccmp.scp + +# AFC50_1 watcher +[macro] +MechSubsystem=AFC50_1 +[include] +file=audio\mactrg.scp + +# AmmoBinAFC50_2 watcher +[macro] +MechSubsystem=AmmoBinAFC50_2 +[include] +file=audio\abntrg.scp + +# AFC50_2 watcher +[macro] +MechSubsystem=AFC50_2 +[include] +file=audio\mactrg.scp + +# +# ERMLaser_1 component +# +[include] +file=audio\ermcmp.scp + +# ERMLaser_1 watcher +[macro] +MechSubsystem=ERMLaser_1 +[include] +file=audio\ermtrg.scp + +# ERMLaser_2 watcher +[macro] +MechSubsystem=ERMLaser_2 +[include] +file=audio\ermtrg.scp + +# +# ERSLaser_1 component +# +[include] +file=audio\erscmp.scp + +# ERSLaser_1 watcher +[macro] +MechSubsystem=ERSLaser_1 +[include] +file=audio\erstrg.scp + +# ERSLaser_2 watcher +[macro] +MechSubsystem=ERSLaser_2 +[include] +file=audio\erstrg.scp + +# AmmoBinSRM4 watcher +[macro] +MechSubsystem=AmmoBinSRM4 +[include] +file=audio\abntrg.scp + +# +# SRM4 component +# +[include] +file=audio\srmcmp.scp + +# SRM4 watcher +[macro] +MechSubsystem=SRM4 +[include] +file=audio\srmtrg.scp + diff --git a/CONTENT/BT/AUDIO/LRMCMP.SCP b/CONTENT/BT/AUDIO/LRMCMP.SCP new file mode 100644 index 0000000..7316f1e --- /dev/null +++ b/CONTENT/BT/AUDIO/LRMCMP.SCP @@ -0,0 +1,32 @@ +# +################################################################### +# LRM Audio Script +################################################################### +# + +[macro] +MissileFireResource=MissileLaunch01 +MissileFirePitchOffset=-100 +MissileFireComponent=LRMFireComponent +# +MissileLoadingResource=MissileLoading01 +MissileLoadingComponent=LRMLoadingComponent +# +MissileLoadedResource=MissileLoaded01 +MissileLoadedComponent=LRMLoadedComponent +MissileLoadedSequence=LRMLoadedSequence +# +MissileTriggerDuringLoadResource=TriggerDuringLoad01 +MissileTriggerDuringLoadComponent=LRMTriggerDuringLoadComponent +# +MissileMisfireResource=MissileMisfire01 +MissileMisfireComponent=LRMMisfireComponent +MissileMisfireSequence=LRMMisfireSequence +# +MissileJamResource=MissileJam01 +MissileJamComponent=LRMJamComponent +MissileJamSequence=LRMJamSequence + +[include] +file=audio\mslcmp.scp + diff --git a/CONTENT/BT/AUDIO/LRMTRG.SCP b/CONTENT/BT/AUDIO/LRMTRG.SCP new file mode 100644 index 0000000..4b922d3 --- /dev/null +++ b/CONTENT/BT/AUDIO/LRMTRG.SCP @@ -0,0 +1,12 @@ +# +################################################################### +# LRM Internal Audio Script +################################################################### +# + +[include] +file=audio\msltrg.scp +file=audio\clttrg.scp +file=audio\buttrg.scp +file=audio\dsttrg.scp + diff --git a/CONTENT/BT/AUDIO/LSRCMPE.SCP b/CONTENT/BT/AUDIO/LSRCMPE.SCP new file mode 100644 index 0000000..56aa9c8 --- /dev/null +++ b/CONTENT/BT/AUDIO/LSRCMPE.SCP @@ -0,0 +1,26 @@ +# +################################################################### +# Mech Laser External Audio Script +################################################################### +# + +# +################################################################### +# Laser Sustain component +################################################################### +# + +[Dynamic3DPatchSource] +location=OriginLocation +resource=LaserSustainResource +priority=0 +mix_presence=0 +volume_mix_level=LaserSustainVolume +pitch_mix_offset=LaserPitchOffset +brightness_mix_level=1.0 +use_brightness_scale=False +use_attack_time_scale=False +has_compression_curve=False +compression_duration=0.0 +name=LaserSustainComponent + diff --git a/CONTENT/BT/AUDIO/LSREXP.SCP b/CONTENT/BT/AUDIO/LSREXP.SCP new file mode 100644 index 0000000..6879163 --- /dev/null +++ b/CONTENT/BT/AUDIO/LSREXP.SCP @@ -0,0 +1,109 @@ +# +################################################################### +# Laser Explosion Audio Script +################################################################### +# + +[include] +file=audio\macros.scp + +# +################################################################### +# Audio locations +################################################################### +# + +[L4AudioLocation] +location_offset=0.0,0.0,0.0 +clipping_scale=0.75 +name=OriginLocation + +# +################################################################### +# Laser Explosion component +################################################################### +# + +[Dynamic3DPatchSource] +location=OriginLocation +resource=LaserExplosion01 +priority=0 +mix_presence=3 +volume_mix_level=LaserExplosionVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=True +use_attack_time_scale=False +has_compression_curve=True +compression_duration=0.5 +name=LaserExplosionComponent + +#------------------------------------------------------------------ + +# +# resource select +# + +[AudioResourceSelector] +audio_source=LaserExplosionComponent +audio_resource_index=LaserExplosionIndex +control_ID=100 +min_control_value=0.0 +max_control_value=1.0 +dump_value=False +name=LaserExplosionResourceSelect + +# +# sample and hold -> resource select +# + +[AudioSampleAndHold] +audio_component=LaserExplosionResourceSelect +control_ID=100 +sample_duration=99.0 +name=LaserExplosionSampleAndHold + +#------------------------------------------------------------------ + +# +# sample and hold -> pitch +# + +[AudioSampleAndHold] +audio_component=LaserExplosionComponent +control_ID=PitchAudioControlID +sample_duration=99.0 +min_value=-400 +max_value=400 +name=LaserExplosionPitchSampleAndHold + +# +# sample and hold -> filter +# + +[AudioSampleAndHold] +audio_component=LaserExplosionComponent +control_ID=BrightnessAudioControlID +sample_duration=99.0 +min_value=0.9 +max_value=1.0 +name=LaserExplosionBrightnessSampleAndHold + +#------------------------------------------------------------------ + +[AudioControlSplitter] +audio_component=LaserExplosionSampleAndHold +audio_component=LaserExplosionPitchSampleAndHold +audio_component=LaserExplosionBrightnessSampleAndHold +name=LaserExplosionSplitter + +[AudioControlSend] +audio_component=LaserExplosionSplitter +control_ID=StartAudioControlID +control_value=0.0 + +[AudioControlSend] +audio_component=LaserExplosionComponent +control_ID=StartAudioControlID +control_value=4.0 + diff --git a/CONTENT/BT/AUDIO/LSREXPI.SCP b/CONTENT/BT/AUDIO/LSREXPI.SCP new file mode 100644 index 0000000..5a277a0 --- /dev/null +++ b/CONTENT/BT/AUDIO/LSREXPI.SCP @@ -0,0 +1,109 @@ +# +################################################################### +# Laser Explosion Internal Audio Script +################################################################### +# + +[include] +file=audio\macros.scp + +# +################################################################### +# Audio locations +################################################################### +# + +[L4AudioLocation] +location_offset=0.0,0.0,0.0 +name=OriginLocation + +# +################################################################### +# Laser Explosion Internal component +################################################################### +# + +[Static3DPatchSource] +location=OriginLocation +resource=LaserExplosionInt01 +priority=2 +mix_presence=3 +volume_mix_level=LaserExplosionIntVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=True +use_attack_time_scale=False +has_compression_curve=True +compression_duration=0.5 +use_internal=False +name=LaserExplosionIntComponent + +#------------------------------------------------------------------ + +# +# resource select +# + +[AudioResourceSelector] +audio_source=LaserExplosionIntComponent +audio_resource_index=LaserExplosionIntIndex +control_ID=100 +min_control_value=0.0 +max_control_value=1.0 +dump_value=False +name=LaserExplosionIntResourceSelect + +# +# sample and hold -> resource select +# + +[AudioSampleAndHold] +audio_component=LaserExplosionIntResourceSelect +control_ID=100 +sample_duration=99.0 +name=LaserExplosionIntSampleAndHold + +#------------------------------------------------------------------ + +# +# sample and hold -> pitch +# + +[AudioSampleAndHold] +audio_component=LaserExplosionIntComponent +control_ID=PitchAudioControlID +sample_duration=99.0 +min_value=-100 +max_value=100 +name=LaserExplosionIntPitchSampleAndHold + +# +# sample and hold -> filter +# + +[AudioSampleAndHold] +audio_component=LaserExplosionIntComponent +control_ID=BrightnessAudioControlID +sample_duration=99.0 +min_value=0.8 +max_value=1.0 +name=LaserExplosionIntBrightnessSampleAndHold + +#------------------------------------------------------------------ + +[AudioControlSplitter] +audio_component=LaserExplosionIntSampleAndHold +audio_component=LaserExplosionIntPitchSampleAndHold +audio_component=LaserExplosionIntBrightnessSampleAndHold +name=LaserExplosionIntSplitter + +[AudioControlSend] +audio_component=LaserExplosionIntSplitter +control_ID=StartAudioControlID +control_value=0.0 + +[AudioControlSend] +audio_component=LaserExplosionIntComponent +control_ID=StartAudioControlID +control_value=4.0 + diff --git a/CONTENT/BT/AUDIO/LSRLDD01.MID b/CONTENT/BT/AUDIO/LSRLDD01.MID new file mode 100644 index 0000000..d360727 Binary files /dev/null and b/CONTENT/BT/AUDIO/LSRLDD01.MID differ diff --git a/CONTENT/BT/AUDIO/LSRTRG.SCP b/CONTENT/BT/AUDIO/LSRTRG.SCP new file mode 100644 index 0000000..b704754 --- /dev/null +++ b/CONTENT/BT/AUDIO/LSRTRG.SCP @@ -0,0 +1,171 @@ +# +################################################################### +# Mech Laser Internal Audio Script +################################################################### +# + +# +################################################################### +# Laser Fire component +################################################################### +# + +[AudioStateTrigger] +subsystem=MechSubsystem +attribute=WeaponState +audio_component=LaserFireComponent +trigger_state=MechWeapon::Firing +inverse_trigger=False +control_ID=StartAudioControlID +control_value=1.5 +dump_value=False + +# +################################################################### +# Laser Sustain component +################################################################### +# + +[AudioStateTrigger] +subsystem=MechSubsystem +attribute=WeaponState +audio_component=LaserSustainComponent +trigger_state=MechWeapon::Firing +inverse_trigger=False +control_ID=StartAudioControlID +control_value=0.0 +dump_value=False + +[AudioStateTrigger] +subsystem=MechSubsystem +attribute=WeaponState +audio_component=LaserSustainComponent +trigger_state=MechWeapon::Firing +inverse_trigger=True +control_ID=StopAudioControlID +control_value=0.0 +dump_value=False + +# +################################################################### +# Laser Release component +################################################################### +# + +[!AudioStateTrigger] +subsystem=MechSubsystem +attribute=WeaponState +audio_component=LaserReleaseComponent +trigger_state=MechWeapon::Firing +inverse_trigger=True +control_ID=StartAudioControlID +control_value=0.1 +dump_value=False + +# +################################################################### +# Laser Charge component +################################################################### +# + +# +# percent charge -> volume +# + +[AudioScalarScale] +subsystem=MechSubsystem +attribute=PercentDone +audio_component=LaserChargeComponent +attribute_value_boundary1=0.0 +attribute_value_boundary2=1.0 +control_ID=VolumeAudioControlID +control_value_boundary1=0.0 +control_value_boundary2=1.0 +exponent=1.0 +dump_value=False + +#------------------------------------------------------------------ + +[AudioStateTrigger] +subsystem=MechSubsystem +attribute=WeaponState +audio_component=LaserChargeComponent +trigger_state=MechWeapon::Loading +inverse_trigger=False +control_ID=StartAudioControlID +control_value=0.0 +dump_value=False + +[AudioStateTrigger] +subsystem=MechSubsystem +attribute=WeaponState +audio_component=LaserChargeComponent +trigger_state=MechWeapon::Loading +inverse_trigger=True +control_ID=StopAudioControlID +control_value=0.0 +dump_value=False + +# +################################################################### +# Laser Loaded component +################################################################### +# + +[AudioStateTrigger] +subsystem=MechSubsystem +attribute=WeaponState +audio_component=LaserLoadedSequence +trigger_state=MechWeapon::Loaded +inverse_trigger=False +control_ID=StartAudioControlID +control_value=0.0 +dump_value=False + +# +################################################################### +# Laser TriggerDuringLoad component +################################################################### +# + +[AudioStateTrigger] +subsystem=MechSubsystem +attribute=WeaponState +audio_component=LaserTriggerDuringLoadComponent +trigger_state=MechWeapon::TriggerDuringLoad +inverse_trigger=False +control_ID=StartAudioControlID +control_value=1.0 +dump_value=False + +# +################################################################### +# Laser Misfire component +################################################################### +# + +[AudioStateTrigger] +subsystem=MechSubsystem +attribute=WeaponState +audio_component=LaserMisfireComponent +trigger_state=MechWeapon::Misfire +inverse_trigger=False +control_ID=StartAudioControlID +control_value=1.0 +dump_value=False + +# +################################################################### +# LaserSeekLevel component +################################################################### +# + +[AudioControlsButtonMessageWatcher] +subsystem=MechSubsystem +message_ID=Emitter::ToggleSeekVoltageMessageID +audio_component=LaserSeekLevelComponent +control_ID=StartAudioControlID +control_value=0.5 +dump_value=False + + diff --git a/CONTENT/BT/AUDIO/LSRTRGE.SCP b/CONTENT/BT/AUDIO/LSRTRGE.SCP new file mode 100644 index 0000000..6acb055 --- /dev/null +++ b/CONTENT/BT/AUDIO/LSRTRGE.SCP @@ -0,0 +1,40 @@ +# +################################################################### +# Laser External Audio Script +################################################################### +# + +# +################################################################### +# Laser Sustain component +################################################################### +# + +[AudioLogicalTrigger] +subsystem=MechSubsystem +attribute=LaserOn +audio_component=LaserSustainComponent +attribute_match_value=True +control_ID=StartAudioControlID +control_value=0.0 +dump_value=False + +[AudioLogicalTrigger] +subsystem=MechSubsystem +attribute=LaserOn +audio_component=LaserSustainComponent +attribute_match_value=False +control_ID=StopAudioControlID +control_value=0.0 +dump_value=False + +[!AudioStateTrigger] +subsystem=MechSubsystem +attribute=WeaponState +audio_component=LaserSustainComponent +trigger_state=MechWeapon::Firing +inverse_trigger=False +control_ID=StartAudioControlID +control_value=1.0 +dump_value=False + diff --git a/CONTENT/BT/AUDIO/MACCMP.SCP b/CONTENT/BT/AUDIO/MACCMP.SCP new file mode 100644 index 0000000..a3bfcc0 --- /dev/null +++ b/CONTENT/BT/AUDIO/MACCMP.SCP @@ -0,0 +1,38 @@ +# +################################################################### +# Medium AutoCannon Audio Script +################################################################### +# + +[macro] +ProjectileFireResource=AutoCannonAction01 +ProjectileFireVolume=MediumAutoCannonFireVolume +ProjectileFirePitchOffset=0 +ProjectileFireComponent=MediumAutoCannonFireComponent +# +ProjectileLaunchResource=AutoCannonFire01 +ProjectileLaunchVolume=MediumAutoCannonLaunchVolume +ProjectileLaunchPitchOffset=0 +ProjectileLaunchComponent=MediumAutoCannonLaunchComponent +# +ProjectileLoadingResource=AutoCannonLoading01 +ProjectileLoadingComponent=MediumAutoCannonLoadingComponent +# +ProjectileLoadedResource=AutoCannonLoaded01 +ProjectileLoadedComponent=MediumAutoCannonLoadedComponent +ProjectileLoadedSequence=MediumAutoCannonLoadedSequence +# +ProjectileTriggerDuringLoadResource=TriggerDuringLoad01 +ProjectileTriggerDuringLoadComponent=MediumAutoCannonTriggerDuringLoadComponent +# +ProjectileMisfireResource=AutoCannonMisfire01 +ProjectileMisfireComponent=MediumAutoCannonMisfireComponent +ProjectileMisfireSequence=MediumAutoCannonMisfireSequence +# +ProjectileJamResource=AutoCannonJam01 +ProjectileJamComponent=MediumAutoCannonJamComponent +ProjectileJamSequence=MediumAutoCannonJamSequence + +[include] +file=audio\prjcmp.scp + diff --git a/CONTENT/BT/AUDIO/MACROS.SCP b/CONTENT/BT/AUDIO/MACROS.SCP new file mode 100644 index 0000000..a5d19d7 --- /dev/null +++ b/CONTENT/BT/AUDIO/MACROS.SCP @@ -0,0 +1,174 @@ +# +################################################################### +# Macros Audio Script +################################################################### +# + +# +################################################################### +# Compiled symbols +################################################################### +# +[include] +file=audio\symbols.scp + +# +################################################################### +# Boolean types +################################################################### +# +[macro] +True=1 +False=0 + +# +################################################################### +# Motion types and values +################################################################### +# +[macro] +LinearMotionType=0 +AngularMotionType=1 +XMotionValue=0 +YMotionValue=1 +ZMotionValue=2 +LengthMotionValue=3 + +# +################################################################### +# Simulation Sample Rates +################################################################### +# +[macro] +Sample2Sec=30 +Sample1Sec=15 +Sample0.5Sec=7 +Sample0.25Sec=4 + +# +################################################################### +# Internal Volume levels +################################################################### +# +[macro] +################################################################### +EngineWindUpVolume=0.9 +IdleMotorVolume=0.6 +MotorVolume=0.95 +AccelerationMotorVolume=1.0 +DamagedMotorVolume=0.9 +# +ShiftVolume=0.85 +FootFallVolume=1.0 +TorsoTwistStartVolume=0.8 +TorsoTwistStopVolume=0.85 +# +CollisionVolume=0.95 +# +DeathVolume=0.9 +TranslocationVolume=0.7 +################################################################### +LaserFireVolume=1.0 +LaserSustainVolume=0.85 +LaserReleaseVolume=0.85 +LaserChargeVolume=1.0 +LaserLoadedVolume=0.9 +LaserTriggerDuringLoadVolume=0.7 +LaserMisfireVolume=0.9 +# +LaserExplosionVolume=0.7 +LaserExplosionIntVolume=0.9 +# +PPCExplosionVolume=0.7 +PPCExplosionIntVolume=0.9 +################################################################### +AmmoBinEjectingVolume=1.0 +AmmoBinEjectedVolume=0.95 +AmmoBinDumpedVolume=1.0 +# +MissileFireVolume=1.0 +MissileLoadingVolume=0.65 +MissileLoadedVolume=0.9 +MissileTriggerDuringLoadVolume=0.7 +MissileMisfireVolume=0.9 +MissileJamVolume=1.0 +# +MissileTravelVolume=0.7 +MissileExplosionVolume=0.8 +MissileExplosionIntVolume=1.0 +################################################################### +ProjectileFireVolume=0.7 +ProjectileLaunchVolume=0.6 +ProjectileLoadingVolume=0.65 +ProjectileLoadedVolume=0.9 +ProjectileTriggerDuringLoadVolume=0.7 +ProjectileMisfireVolume=0.9 +ProjectileJamVolume=1.0 +# +ProjectileTravelVolume=0.8 +ProjectileExplosionVolume=0.8 +ProjectileExplosionIntVolume=0.9 +# +MachineGunExplosionVolume=0.7 +# +SmallAutoCannonFireVolume=0.75 +SmallAutoCannonLaunchVolume=0.65 +MediumAutoCannonFireVolume=0.85 +MediumAutoCannonLaunchVolume=0.75 +LargeAutoCannonFireVolume=0.95 +LargeAutoCannonLaunchVolume=0.85 +################################################################### +SubsystemDestroyedVolume=1.0 +# +HeatManagementVolume=0.85 +ToggleCoolingVolume=0.85 +CoolantLeakVolume=0.95 +CoolantPressureVolume=0.9 +CoolantDumpVolume=0.9 +# +IncomingAlarmVolume=1.0 +WarningVolume=0.97 +# +GeneratorOnVolume=0.85 +SelectGeneratorVolume=0.85 +GeneratorModeVolume=0.85 +# +ConfigureMappablesVolume=0.85 +ViewSwitchVolume=0.65 +DuckVolume=0.9 +DisplayModeVolume=0.85 +EngineeringDisplayVolume=0.9 +EngineeringExitVolume=0.85 +MyomerSeekLevelVolume=0.75 +LaserSeekLevelVolume=0.75 +HotBoxVolume=0.9 + +# +################################################################### +# External Volume levels +################################################################### +# +[macro] +MyomerServoVolume=0.6 +FootFallExternalVolume=0.95 +TorsoTwistExternalVolume=0.5 +CollisionExternalVolume=0.95 +CoolantDumpExternalVolume=0.85 +# +DamageBurnAVolume=0.6 +DamageBurnBVolume=0.5 +DamageBurnCVolume=0.9 +# +MechExplosionExternalVolume=1.0 +MechFireExternalVolume=0.95 +# +CrunchExplosionVolume=0.85 +SmallExplosionVolume=0.75 +SmallFireVolume=0.6 +MediumExplosionVolume=0.8 +BigExplosionVolume=0.9 +# +LaserExternalSustainVolume=0.8 +AutoCannonExtLaunchVolume=0.8 +# +WindVolume=0.35 diff --git a/CONTENT/BT/AUDIO/MACTRG.SCP b/CONTENT/BT/AUDIO/MACTRG.SCP new file mode 100644 index 0000000..98186fd --- /dev/null +++ b/CONTENT/BT/AUDIO/MACTRG.SCP @@ -0,0 +1,12 @@ +# +################################################################### +# Mech AutoCannon Internal Audio Script +################################################################### +# + +[include] +file=audio\prjtrg.scp +file=audio\clttrg.scp +file=audio\buttrg.scp +file=audio\dsttrg.scp + diff --git a/CONTENT/BT/AUDIO/MAD1EXT.SCP b/CONTENT/BT/AUDIO/MAD1EXT.SCP new file mode 100644 index 0000000..8459cf5 --- /dev/null +++ b/CONTENT/BT/AUDIO/MAD1EXT.SCP @@ -0,0 +1,55 @@ +# +# External Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchext.scp + +# +# AFC25_1 component +# +[include] +file=audio\acncmpe.scp + +# AFC25_1 watcher +[macro] +MechSubsystem=AFC25_1 +[include] +file=audio\acntrge.scp + +# AFC25_2 watcher +[macro] +MechSubsystem=AFC25_2 +[include] +file=audio\acntrge.scp + +# +# MLaser1 component +# +[include] +file=audio\glrcmpe.scp + +# MLaser1 watcher +[macro] +MechSubsystem=MLaser1 +[include] +file=audio\glrtrge.scp + +# MLaser2 watcher +[macro] +MechSubsystem=MLaser2 +[include] +file=audio\glrtrge.scp + +# MLaser3 watcher +[macro] +MechSubsystem=MLaser3 +[include] +file=audio\glrtrge.scp + +# MLaser4 watcher +[macro] +MechSubsystem=MLaser4 +[include] +file=audio\glrtrge.scp + diff --git a/CONTENT/BT/AUDIO/MAD1INT.SCP b/CONTENT/BT/AUDIO/MAD1INT.SCP new file mode 100644 index 0000000..5f9fadf --- /dev/null +++ b/CONTENT/BT/AUDIO/MAD1INT.SCP @@ -0,0 +1,103 @@ +# +# Internal Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchint.scp + +# +# AmmoBinAFC25_1 component +# +[include] +file=audio\abncmp.scp + +# AmmoBinAFC25_1 watcher +[macro] +MechSubsystem=AmmoBinAFC25_1 +[include] +file=audio\abntrg.scp + +# +# AFC25_1 component +# +[include] +file=audio\saccmp.scp + +# AFC25_1 watcher +[macro] +MechSubsystem=AFC25_1 +[include] +file=audio\sactrg.scp + +# AmmoBinAFC25_2 watcher +[macro] +MechSubsystem=AmmoBinAFC25_2 +[include] +file=audio\abntrg.scp + +# AFC25_2 watcher +[macro] +MechSubsystem=AFC25_2 +[include] +file=audio\sactrg.scp + +# +# MLaser1 component +# +[include] +file=audio\mlrcmp.scp + +# MLaser1 watcher +[macro] +MechSubsystem=MLaser1 +[include] +file=audio\mlrtrg.scp + +# MLaser2 watcher +[macro] +MechSubsystem=MLaser2 +[include] +file=audio\mlrtrg.scp + +# MLaser3 watcher +[macro] +MechSubsystem=MLaser3 +[include] +file=audio\mlrtrg.scp + +# MLaser4 watcher +[macro] +MechSubsystem=MLaser4 +[include] +file=audio\mlrtrg.scp + +# AmmoBinLRM10_1 watcher +[macro] +MechSubsystem=AmmoBinLRM10_1 +[include] +file=audio\abntrg.scp + +# +# LRM10_1 component +# +[include] +file=audio\lrmcmp.scp + +# LRM10_1 watcher +[macro] +MechSubsystem=LRM10_1 +[include] +file=audio\lrmtrg.scp + +# AmmoBinLRM10_2 watcher +[macro] +MechSubsystem=AmmoBinLRM10_2 +[include] +file=audio\abntrg.scp + +# LRM10_2 watcher +[macro] +MechSubsystem=LRM10_2 +[include] +file=audio\lrmtrg.scp + diff --git a/CONTENT/BT/AUDIO/MAD2EXT.SCP b/CONTENT/BT/AUDIO/MAD2EXT.SCP new file mode 100644 index 0000000..e15cc17 --- /dev/null +++ b/CONTENT/BT/AUDIO/MAD2EXT.SCP @@ -0,0 +1,43 @@ +# +# External Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchext.scp + +# +# ERPPC component +# +[include] +file=audio\glrcmpe.scp + +# ERPPC watcher +[macro] +MechSubsystem=ERPPC +[include] +file=audio\glrtrge.scp + +# +# AFC50 component +# +[include] +file=audio\acncmpe.scp + +# AFC50 watcher +[macro] +MechSubsystem=AFC50 +[include] +file=audio\acntrge.scp + +# ERMLaser_1 watcher +[macro] +MechSubsystem=ERMLaser_1 +[include] +file=audio\glrtrge.scp + +# ERMLaser_2 watcher +[macro] +MechSubsystem=ERMLaser_2 +[include] +file=audio\glrtrge.scp + diff --git a/CONTENT/BT/AUDIO/MAD2INT.SCP b/CONTENT/BT/AUDIO/MAD2INT.SCP new file mode 100644 index 0000000..c151e41 --- /dev/null +++ b/CONTENT/BT/AUDIO/MAD2INT.SCP @@ -0,0 +1,109 @@ +# +# Internal Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchint.scp + +# +# ERPPC component +# +[include] +file=audio\eppcmp.scp + +# ERPPC watcher +[macro] +MechSubsystem=ERPPC +[include] +file=audio\epptrg.scp + +# +# AmmoBinAFC50 component +# +[include] +file=audio\abncmp.scp + +# AmmoBinAFC50 watcher +[macro] +MechSubsystem=AmmoBinAFC50 +[include] +file=audio\abntrg.scp + +# +# AFC50 component +# +[include] +file=audio\maccmp.scp + +# AFC50 watcher +[macro] +MechSubsystem=AFC50 +[include] +file=audio\mactrg.scp + +# +# ERMLaser_1 component +# +[include] +file=audio\ermcmp.scp + +# ERMLaser_1 watcher +[macro] +MechSubsystem=ERMLaser_1 +[include] +file=audio\ermtrg.scp + +# ERMLaser_2 watcher +[macro] +MechSubsystem=ERMLaser_2 +[include] +file=audio\ermtrg.scp + +# AmmoBinLRM15 watcher +[macro] +MechSubsystem=AmmoBinLRM15 +[include] +file=audio\abntrg.scp + +# +# LRM15 component +# +[include] +file=audio\lrmcmp.scp + +# LRM15 watcher +[macro] +MechSubsystem=LRM15 +[include] +file=audio\lrmtrg.scp + +# AmmoBinSRM6_1 watcher +[macro] +MechSubsystem=AmmoBinSRM6_1 +[include] +file=audio\abntrg.scp + +# +# SRM6_1 component +# +[include] +file=audio\srmcmp.scp + +# SRM6_1 watcher +[macro] +MechSubsystem=SRM6_1 +[include] +file=audio\srmtrg.scp + +# AmmoBinSRM6_2 watcher +[macro] +MechSubsystem=AmmoBinSRM6_2 +[include] +file=audio\abntrg.scp + +# SRM6_2 watcher +[macro] +MechSubsystem=SRM6_2 +[include] +file=audio\srmtrg.scp + diff --git a/CONTENT/BT/AUDIO/MADEXT.SCP b/CONTENT/BT/AUDIO/MADEXT.SCP new file mode 100644 index 0000000..8d9c8c3 --- /dev/null +++ b/CONTENT/BT/AUDIO/MADEXT.SCP @@ -0,0 +1,43 @@ +# +# External Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchext.scp + +# +# AFC100 component +# +[include] +file=audio\acncmpe.scp + +# AFC100 watcher +[macro] +MechSubsystem=AFC100 +[include] +file=audio\acntrge.scp + +# +# ERLLaser component +# +[include] +file=audio\glrcmpe.scp + +# ERLLaser watcher +[macro] +MechSubsystem=ERLLaser +[include] +file=audio\glrtrge.scp + +# ERSLaser_1 watcher +[macro] +MechSubsystem=ERSLaser_1 +[include] +file=audio\glrtrge.scp + +# ERSLaser_2 watcher +[macro] +MechSubsystem=ERSLaser_2 +[include] +file=audio\glrtrge.scp + diff --git a/CONTENT/BT/AUDIO/MADINT.SCP b/CONTENT/BT/AUDIO/MADINT.SCP new file mode 100644 index 0000000..06e2b89 --- /dev/null +++ b/CONTENT/BT/AUDIO/MADINT.SCP @@ -0,0 +1,91 @@ +# +# Internal Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchint.scp + +# +# AmmoBinAFC100 component +# +[include] +file=audio\abncmp.scp + +# AmmoBinAFC100 watcher +[macro] +MechSubsystem=AmmoBinAFC100 +[include] +file=audio\abntrg.scp + +# +# AFC100 component +# +[include] +file=audio\laccmp.scp + +# AFC100 watcher +[macro] +MechSubsystem=AFC100 +[include] +file=audio\lactrg.scp + +# +# ERLLaser component +# +[include] +file=audio\erlcmp.scp + +# ERLLaser watcher +[macro] +MechSubsystem=ERLLaser +[include] +file=audio\erltrg.scp + +# +# ERSLaser_1 component +# +[include] +file=audio\erscmp.scp + +# ERSLaser_1 watcher +[macro] +MechSubsystem=ERSLaser_1 +[include] +file=audio\erstrg.scp + +# ERSLaser_2 watcher +[macro] +MechSubsystem=ERSLaser_2 +[include] +file=audio\erstrg.scp + +# AmmoBinLRM15_1 watcher +[macro] +MechSubsystem=AmmoBinLRM15_1 +[include] +file=audio\abntrg.scp + +# +# LRM15_1 component +# +[include] +file=audio\lrmcmp.scp + +# LRM15_1 watcher +[macro] +MechSubsystem=LRM15_1 +[include] +file=audio\lrmtrg.scp + +# AmmoBinLRM15_2 watcher +[macro] +MechSubsystem=AmmoBinLRM15_2 +[include] +file=audio\abntrg.scp + +# LRM15_2 watcher +[macro] +MechSubsystem=LRM15_2 +[include] +file=audio\lrmtrg.scp + diff --git a/CONTENT/BT/AUDIO/MBNEXP.SCP b/CONTENT/BT/AUDIO/MBNEXP.SCP new file mode 100644 index 0000000..811e7fb --- /dev/null +++ b/CONTENT/BT/AUDIO/MBNEXP.SCP @@ -0,0 +1,119 @@ +# +################################################################### +# Medium Burning Audio Script +################################################################### +# + +[include] +file=audio\macros.scp + +# +################################################################### +# Audio locations +################################################################### +# + +[L4AudioLocation] +location_offset=0.0,0.0,0.0 +clipping_scale=0.5 +name=OriginLocation + +# +################################################################### +# MediumExplosion component +################################################################### +# + +[Dynamic3DPatchSource] +location=OriginLocation +resource=AuxExplosion01 +priority=0 +mix_presence=3 +volume_mix_level=MediumExplosionVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=True +use_attack_time_scale=False +has_compression_curve=True +compression_duration=0.5 +name=MediumExplosionComponent + +#------------------------------------------------------------------ + +# +# sample and hold -> pitch +# + +[AudioSampleAndHold] +audio_component=MediumExplosionComponent +control_ID=PitchAudioControlID +sample_duration=99.0 +min_value=-200 +max_value=200 +name=MediumExplosionPitchSampleAndHold + +# +# sample and hold -> filter +# + +[AudioSampleAndHold] +audio_component=MediumExplosionComponent +control_ID=BrightnessAudioControlID +sample_duration=99.0 +min_value=0.7 +max_value=1.0 +name=MediumExplosionBrightnessSampleAndHold + +#------------------------------------------------------------------ + +[AudioControlSplitter] +audio_component=MediumExplosionPitchSampleAndHold +audio_component=MediumExplosionBrightnessSampleAndHold +audio_component=MediumExplosionComponent +name=MediumExplosionSplitter + +[AudioControlSequence] +audio_component=MediumExplosionSplitter +tempo=160 +midi_file=audio\medexp01.mid +is_looped=False +dump_value=False +name=MediumExplosionSequence + +[AudioIdleWatcher] +audio_component=MediumExplosionSequence + +#------------------------------------------------------------------ + +[AudioControlSend] +audio_component=MediumExplosionSequence +control_ID=StartAudioControlID +control_value=0.0 + +# +################################################################### +# SmallFire component +################################################################### +# + +[Dynamic3DPatchSource] +location=OriginLocation +resource=SmallFireLoop01 +priority=0 +mix_presence=3 +volume_mix_level=SmallFireVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=False +use_attack_time_scale=False +has_compression_curve=False +compression_duration=0.0 +name=SmallFireComponent + +#------------------------------------------------------------------ + +[AudioControlSend] +audio_component=SmallFireComponent +control_ID=StartAudioControlID +control_value=0.0 + diff --git a/CONTENT/BT/AUDIO/MCHEXP03.MID b/CONTENT/BT/AUDIO/MCHEXP03.MID new file mode 100644 index 0000000..027d7c3 Binary files /dev/null and b/CONTENT/BT/AUDIO/MCHEXP03.MID differ diff --git a/CONTENT/BT/AUDIO/MCHEXP04.MID b/CONTENT/BT/AUDIO/MCHEXP04.MID new file mode 100644 index 0000000..c544a0a Binary files /dev/null and b/CONTENT/BT/AUDIO/MCHEXP04.MID differ diff --git a/CONTENT/BT/AUDIO/MCHEXP05.MID b/CONTENT/BT/AUDIO/MCHEXP05.MID new file mode 100644 index 0000000..70d989e Binary files /dev/null and b/CONTENT/BT/AUDIO/MCHEXP05.MID differ diff --git a/CONTENT/BT/AUDIO/MCHEXP06.MID b/CONTENT/BT/AUDIO/MCHEXP06.MID new file mode 100644 index 0000000..4960635 Binary files /dev/null and b/CONTENT/BT/AUDIO/MCHEXP06.MID differ diff --git a/CONTENT/BT/AUDIO/MCHEXP07.MID b/CONTENT/BT/AUDIO/MCHEXP07.MID new file mode 100644 index 0000000..fc6d642 Binary files /dev/null and b/CONTENT/BT/AUDIO/MCHEXP07.MID differ diff --git a/CONTENT/BT/AUDIO/MCHEXPI1.MID b/CONTENT/BT/AUDIO/MCHEXPI1.MID new file mode 100644 index 0000000..8a185e7 Binary files /dev/null and b/CONTENT/BT/AUDIO/MCHEXPI1.MID differ diff --git a/CONTENT/BT/AUDIO/MCHEXPI2.MID b/CONTENT/BT/AUDIO/MCHEXPI2.MID new file mode 100644 index 0000000..98696d6 Binary files /dev/null and b/CONTENT/BT/AUDIO/MCHEXPI2.MID differ diff --git a/CONTENT/BT/AUDIO/MCHEXPI3.MID b/CONTENT/BT/AUDIO/MCHEXPI3.MID new file mode 100644 index 0000000..b5e133c Binary files /dev/null and b/CONTENT/BT/AUDIO/MCHEXPI3.MID differ diff --git a/CONTENT/BT/AUDIO/MCHEXT.SCP b/CONTENT/BT/AUDIO/MCHEXT.SCP new file mode 100644 index 0000000..ec6131e --- /dev/null +++ b/CONTENT/BT/AUDIO/MCHEXT.SCP @@ -0,0 +1,29 @@ +# +################################################################### +# Mech External Audio Script +################################################################### +# + +# +################################################################### +# Audio locations +################################################################### +# + +[L4AudioLocation] +location_offset=0.0,0.0,0.0 +clipping_scale=0.25 +name=OriginLocation + +# +################################################################### +# Includes +################################################################### +# + +[include] +file=audio\fotext.scp +file=audio\shfext.scp +file=audio\trsext.scp +file=audio\colext.scp +file=audio\hetext.scp diff --git a/CONTENT/BT/AUDIO/MCHFRE01.MID b/CONTENT/BT/AUDIO/MCHFRE01.MID new file mode 100644 index 0000000..07dff85 Binary files /dev/null and b/CONTENT/BT/AUDIO/MCHFRE01.MID differ diff --git a/CONTENT/BT/AUDIO/MCHINT.SCP b/CONTENT/BT/AUDIO/MCHINT.SCP new file mode 100644 index 0000000..ef22c61 --- /dev/null +++ b/CONTENT/BT/AUDIO/MCHINT.SCP @@ -0,0 +1,124 @@ +# +################################################################### +# Mech Internal Audio Script +################################################################### +# + +# +################################################################### +# Audio locations +################################################################### +# + +[L4AudioLocation] +location_offset=0.0,0.0,0.0 +name=OriginLocation + +# +################################################################### +# Mech scripts +################################################################### +# + +[include] +file=audio\engint.scp +file=audio\shfint.scp +file=audio\fotint.scp +file=audio\colint.scp +file=audio\trsint.scp +file=audio\almint.scp +file=audio\hetint.scp +file=audio\mchbut.scp +file=audio\brnint.scp + +# +################################################################### +# Subsystem scripts +################################################################### +# +[include] +file=audio\butcmp.scp +file=audio\dstcmp.scp +file=audio\cltcmp.scp + +# +################################################################### +# Condensers +################################################################### +# +[include] +file=audio\cndcmp.scp + +[macro] +MechSubsystem=Condenser1 +[include] +file=audio\cndtrg.scp +[macro] +MechSubsystem=Condenser2 +[include] +file=audio\cndtrg.scp +[macro] +MechSubsystem=Condenser3 +[include] +file=audio\cndtrg.scp +[macro] +MechSubsystem=Condenser4 +[include] +file=audio\cndtrg.scp +[macro] +MechSubsystem=Condenser5 +[include] +file=audio\cndtrg.scp +[macro] +MechSubsystem=Condenser6 +[include] +file=audio\cndtrg.scp + +# +################################################################### +# Generators +################################################################### +# +[include] +file=audio\gencmp.scp + +[macro] +MechSubsystem=GeneratorA +[include] +file=audio\gentrg.scp +[macro] +MechSubsystem=GeneratorB +[include] +file=audio\gentrg.scp +[macro] +MechSubsystem=GeneratorC +[include] +file=audio\gentrg.scp +[macro] +MechSubsystem=GeneratorD +[include] +file=audio\gentrg.scp + +# +################################################################### +# Sensor +################################################################### +# +[macro] +MechSubsystem=Avionics +[include] +file=audio\snrtrg.scp + +# +################################################################### +# Myomers +################################################################### +# +[include] +file=audio\myrcmp.scp + +[macro] +MechSubsystem=Myomers +[include] +file=audio\myrtrg.scp + diff --git a/CONTENT/BT/AUDIO/MCTINT.SCP b/CONTENT/BT/AUDIO/MCTINT.SCP new file mode 100644 index 0000000..06bfb8e --- /dev/null +++ b/CONTENT/BT/AUDIO/MCTINT.SCP @@ -0,0 +1,15 @@ +# +#------------------------------------------------------------------ +# Madcat Internal Audio Script +#------------------------------------------------------------------ +# + +# +#------------------------------------------------------------------ +# Includes +#------------------------------------------------------------------ +# + +[include] +file=audio\mchint.scp + diff --git a/CONTENT/BT/AUDIO/MEDEXP.SCP b/CONTENT/BT/AUDIO/MEDEXP.SCP new file mode 100644 index 0000000..3e5306e --- /dev/null +++ b/CONTENT/BT/AUDIO/MEDEXP.SCP @@ -0,0 +1,92 @@ +# +################################################################### +# Medium Explosion Audio Script +################################################################### +# + +[include] +file=audio\macros.scp + +# +################################################################### +# Audio locations +################################################################### +# + +[L4AudioLocation] +location_offset=0.0,0.0,0.0 +clipping_scale=0.75 +name=OriginLocation + +# +################################################################### +# MediumExplosion component +################################################################### +# + +[Dynamic3DPatchSource] +location=OriginLocation +resource=AuxExplosion01 +priority=0 +mix_presence=3 +volume_mix_level=MediumExplosionVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=True +use_attack_time_scale=False +has_compression_curve=True +compression_duration=0.5 +name=MediumExplosionComponent + +#------------------------------------------------------------------ + +# +# sample and hold -> pitch +# + +[AudioSampleAndHold] +audio_component=MediumExplosionComponent +control_ID=PitchAudioControlID +sample_duration=99.0 +min_value=-200 +max_value=200 +name=MediumExplosionPitchSampleAndHold + +# +# sample and hold -> filter +# + +[AudioSampleAndHold] +audio_component=MediumExplosionComponent +control_ID=BrightnessAudioControlID +sample_duration=99.0 +min_value=0.7 +max_value=1.0 +name=MediumExplosionBrightnessSampleAndHold + +#------------------------------------------------------------------ + +[AudioControlSplitter] +audio_component=MediumExplosionPitchSampleAndHold +audio_component=MediumExplosionBrightnessSampleAndHold +audio_component=MediumExplosionComponent +name=MediumExplosionSplitter + +[AudioControlSequence] +audio_component=MediumExplosionSplitter +tempo=160 +midi_file=audio\medexp01.mid +is_looped=False +dump_value=False +name=MediumExplosionSequence + +[AudioIdleWatcher] +audio_component=MediumExplosionSequence + +#------------------------------------------------------------------ + +[AudioControlSend] +audio_component=MediumExplosionSequence +control_ID=StartAudioControlID +control_value=0.0 + diff --git a/CONTENT/BT/AUDIO/MEDEXP01.MID b/CONTENT/BT/AUDIO/MEDEXP01.MID new file mode 100644 index 0000000..11a2d66 Binary files /dev/null and b/CONTENT/BT/AUDIO/MEDEXP01.MID differ diff --git a/CONTENT/BT/AUDIO/MGNCMP.SCP b/CONTENT/BT/AUDIO/MGNCMP.SCP new file mode 100644 index 0000000..24c90a0 --- /dev/null +++ b/CONTENT/BT/AUDIO/MGNCMP.SCP @@ -0,0 +1,109 @@ +# +################################################################### +# Mech Machine Gun Internal Audio Script +################################################################### +# + +[macro] +ProjectileMisfireResource=MachineGunMisfire01 +ProjectileMisfireVolume=MachineGunMisfireVolume +ProjectileMisfireComponent=MachineGunMisfireComponent + +# +ProjectileJamResource=MachineGunJam01 +ProjectileJamVolume=MachineGunJamVolume +ProjectileJamComponent=MachineGunJamComponent + +# +ProjectileFireResource=MachineGunFire01 +ProjectileFireVolume=MachineGunFireVolume +ProjectileFireComponent=MachineGunFireComponent + +# +ProjectileEjectResource=EjectButton01 +ProjectileEjectComponent=MachineGunEjectComponent + +# +################################################################### +# Projectile Fire component +################################################################### +# + +[DirectPatchSource] +location=OriginLocation +resource=ProjectileFireResource +position=FrontDirectPatchPosition +priority=3 +mix_presence=3 +volume_mix_level=ProjectileFireVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=True +use_attack_time_scale=False +has_compression_curve=True +compression_duration=0.5 +name=ProjectileFireComponent + +# +################################################################### +# Projectile Misfire component +################################################################### +# + +[DirectPatchSource] +location=OriginLocation +resource=ProjectileMisfireResource +position=FrontDirectPatchPosition +priority=3 +mix_presence=2 +volume_mix_level=ProjectileMisfireVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=False +use_attack_time_scale=False +has_compression_curve=False +compression_duration=0.0 +name=ProjectileMisfireComponent + +# +################################################################### +# Projectile Jam component +################################################################### +# + +[DirectPatchSource] +location=OriginLocation +resource=ProjectileJamResource +position=FrontDirectPatchPosition +priority=3 +mix_presence=2 +volume_mix_level=ProjectileJamVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=False +use_attack_time_scale=False +has_compression_curve=True +compression_duration=1.0 +name=ProjectileJamComponent + +# +################################################################### +# ProjectileEject component +################################################################### +# + +[DirectPatchSource] +location=OriginLocation +resource=ProjectileEjectResource +position=FrontDirectPatchPosition +priority=3 +mix_presence=0 +volume_mix_level=ProjectileEjectVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=False +use_attack_time_scale=False +has_compression_curve=False +compression_duration=0.0 +name=ProjectileEjectComponent + diff --git a/CONTENT/BT/AUDIO/MGNEXP.SCP b/CONTENT/BT/AUDIO/MGNEXP.SCP new file mode 100644 index 0000000..87fed35 --- /dev/null +++ b/CONTENT/BT/AUDIO/MGNEXP.SCP @@ -0,0 +1,108 @@ +# +################################################################### +# MachineGun Explosion Audio Script +################################################################### +# + +[include] +file=audio\macros.scp + +# +################################################################### +# Audio locations +################################################################### +# + +[L4AudioLocation] +location_offset=0.0,0.0,0.0 +name=OriginLocation + +# +################################################################### +# MachineGun Explosion component +################################################################### +# + +[Dynamic3DPatchSource] +location=OriginLocation +resource=MachineGunExplosion01 +priority=0 +mix_presence=3 +volume_mix_level=MachineGunExplosionVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=True +use_attack_time_scale=False +has_compression_curve=True +compression_duration=0.5 +name=MachineGunExplosionComponent + +#------------------------------------------------------------------ + +# +# resource select +# + +[AudioResourceSelector] +audio_source=MachineGunExplosionComponent +audio_resource_index=MachineGunExplosionIndex +control_ID=100 +min_control_value=0.0 +max_control_value=1.0 +dump_value=False +name=MachineGunExplosionResourceSelect + +# +# sample and hold -> resource select +# + +[AudioSampleAndHold] +audio_component=MachineGunExplosionResourceSelect +control_ID=100 +sample_duration=99.0 +name=MachineGunExplosionSampleAndHold + +#------------------------------------------------------------------ + +# +# sample and hold -> pitch +# + +[AudioSampleAndHold] +audio_component=MachineGunExplosionComponent +control_ID=PitchAudioControlID +sample_duration=99.0 +min_value=-400 +max_value=400 +name=MachineGunExplosionPitchSampleAndHold + +# +# sample and hold -> filter +# + +[AudioSampleAndHold] +audio_component=MachineGunExplosionComponent +control_ID=BrightnessAudioControlID +sample_duration=99.0 +min_value=0.9 +max_value=1.0 +name=MachineGunExplosionBrightnessSampleAndHold + +#------------------------------------------------------------------ + +[AudioControlSplitter] +audio_component=MachineGunExplosionSampleAndHold +audio_component=MachineGunExplosionPitchSampleAndHold +audio_component=MachineGunExplosionBrightnessSampleAndHold +name=MachineGunExplosionSplitter + +[AudioControlSend] +audio_component=MachineGunExplosionSplitter +control_ID=StartAudioControlID +control_value=0.0 + +[AudioControlSend] +audio_component=MachineGunExplosionComponent +control_ID=StartAudioControlID +control_value=1.0 + diff --git a/CONTENT/BT/AUDIO/MGNEXPC.SCP b/CONTENT/BT/AUDIO/MGNEXPC.SCP new file mode 100644 index 0000000..1934bc6 --- /dev/null +++ b/CONTENT/BT/AUDIO/MGNEXPC.SCP @@ -0,0 +1,108 @@ +# +################################################################### +# MachineGun Craft Explosion Audio Script +################################################################### +# + +[include] +file=audio\macros.scp + +# +################################################################### +# Audio locations +################################################################### +# + +[L4AudioLocation] +location_offset=0.0,0.0,0.0 +name=OriginLocation + +# +################################################################### +# MachineGun Explosion component +################################################################### +# + +[Dynamic3DPatchSource] +location=OriginLocation +resource=MachineGunExpCraft01 +priority=0 +mix_presence=3 +volume_mix_level=MachineGunExplosionCraftVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=True +use_attack_time_scale=False +has_compression_curve=True +compression_duration=0.5 +name=MachineGunExplosionComponent + +#------------------------------------------------------------------ + +# +# resource select +# + +[AudioResourceSelector] +audio_source=MachineGunExplosionComponent +audio_resource_index=MachineGunExpCraftIndex +control_ID=100 +min_control_value=0.0 +max_control_value=1.0 +dump_value=False +name=MachineGunExplosionResourceSelect + +# +# sample and hold -> resource select +# + +[AudioSampleAndHold] +audio_component=MachineGunExplosionResourceSelect +control_ID=100 +sample_duration=99.0 +name=MachineGunExplosionSampleAndHold + +#------------------------------------------------------------------ + +# +# sample and hold -> pitch +# + +[AudioSampleAndHold] +audio_component=MachineGunExplosionComponent +control_ID=PitchAudioControlID +sample_duration=99.0 +min_value=-400 +max_value=400 +name=MachineGunExplosionPitchSampleAndHold + +# +# sample and hold -> filter +# + +[AudioSampleAndHold] +audio_component=MachineGunExplosionComponent +control_ID=BrightnessAudioControlID +sample_duration=99.0 +min_value=0.9 +max_value=1.0 +name=MachineGunExplosionBrightnessSampleAndHold + +#------------------------------------------------------------------ + +[AudioControlSplitter] +audio_component=MachineGunExplosionSampleAndHold +audio_component=MachineGunExplosionPitchSampleAndHold +audio_component=MachineGunExplosionBrightnessSampleAndHold +name=MachineGunExplosionSplitter + +[AudioControlSend] +audio_component=MachineGunExplosionSplitter +control_ID=StartAudioControlID +control_value=0.0 + +[AudioControlSend] +audio_component=MachineGunExplosionComponent +control_ID=StartAudioControlID +control_value=1.0 + diff --git a/CONTENT/BT/AUDIO/MGNTRG.SCP b/CONTENT/BT/AUDIO/MGNTRG.SCP new file mode 100644 index 0000000..ed61292 --- /dev/null +++ b/CONTENT/BT/AUDIO/MGNTRG.SCP @@ -0,0 +1,74 @@ +# +################################################################### +# Mech AutoCannon Internal Audio Script +################################################################### +# + +# +################################################################### +# Projectile Internal Audio Script +################################################################### +# + +# +################################################################### +# Projectile Fire component +################################################################### +# + +[AudioStateTrigger] +subsystem=MechSubsystem +attribute=WeaponState +audio_component=ProjectileFireComponent +trigger_state=MechWeapon::Firing +inverse_trigger=False +control_ID=StartAudioControlID +control_value=2.0 +dump_value=False + +# +################################################################### +# Projectile Misfire component +################################################################### +# + +[AudioStateTrigger] +subsystem=MechSubsystem +attribute=WeaponState +audio_component=ProjectileMisfireComponent +trigger_state=MechWeapon::Misfire +inverse_trigger=False +control_ID=StartAudioControlID +control_value=1.0 +dump_value=False + +# +################################################################### +# Projectile Jam component +################################################################### +# + +[AudioStateTrigger] +subsystem=MechSubsystem +attribute=WeaponState +audio_component=ProjectileJamComponent +trigger_state=ProjectileWeapon::TriggerDuringJam +inverse_trigger=False +control_ID=StartAudioControlID +control_value=1.0 +dump_value=False + +# +################################################################### +# Projectile Eject component +################################################################### +# + +[AudioControlsButtonMessageWatcher] +subsystem=MechSubsystem +message_ID=ProjectileWeapon::EjectAmmoMessageID +audio_component=ProjectileEjectComponent +control_ID=StartAudioControlID +control_value=0.5 +dump_value=False + diff --git a/CONTENT/BT/AUDIO/MLRCMP.SCP b/CONTENT/BT/AUDIO/MLRCMP.SCP new file mode 100644 index 0000000..368b9d0 --- /dev/null +++ b/CONTENT/BT/AUDIO/MLRCMP.SCP @@ -0,0 +1,49 @@ +# +################################################################### +# Medium Laser Audio Script +################################################################### +# + +[macro] +LaserFireResource=LaserBFire01 +LaserFirePitchOffset=0 +LaserFireComponent=MediumLaserFireComponent +LaserFireIndex=LaserBFireIndex +LaserFireResourceSelect=MediumLaserFireResourceSelect +LaserFireSampleAndHold=MediumLaserFireSampleAndHold +# +LaserSustainResource=LaserBSustain01 +LaserSustainComponent=MediumLaserSustainComponent +LaserSustainIndex=LaserBSustainIndex +LaserSustainResourceSelect=MediumLaserSustainResourceSelect +LaserSustainSampleAndHold=MediumLaserSustainSampleAndHold +# +LaserReleaseResource=LaserARelease01 +LaserReleaseComponent=MediumLaserReleaseComponent +LaserReleaseIndex=LaserAReleaseIndex +LaserReleaseResourceSelect=MediumLaserReleaseResourceSelect +LaserReleaseSampleAndHold=MediumLaserReleaseSampleAndHold +# +LaserChargeResource=LaserACharge01 +LaserChargeComponent=MediumLaserChargeComponent +LaserChargeIndex=LaserAChargeIndex +LaserChargeResourceSelect=MediumLaserChargeResourceSelect +LaserChargeSampleAndHold=MediumLaserChargeSampleAndHold +# +LaserLoadedResource=LaserLoaded01 +LaserLoadedComponent=MediumLaserLoadedComponent +LaserLoadedSequence=MediumLaserLoadedSequence +# +LaserTriggerDuringLoadResource=TriggerDuringLoad01 +LaserTriggerDuringLoadComponent=MediumLaserTriggerDuringLoadComponent +# +LaserMisfireResource=LaserAMisfire01 +LaserMisfireComponent=MediumLaserMisfireComponent +# +LaserSeekLevelResource=BasicBeep02 +LaserSeekLevelComponent=MediumLaserSeekLevelComponent + +[include] +file=audio\lsrcmp.scp + + diff --git a/CONTENT/BT/AUDIO/MLRCMPE.SCP b/CONTENT/BT/AUDIO/MLRCMPE.SCP new file mode 100644 index 0000000..859f7a8 --- /dev/null +++ b/CONTENT/BT/AUDIO/MLRCMPE.SCP @@ -0,0 +1,14 @@ +# +################################################################### +# Medium Laser External Audio Script +################################################################### +# + +[macro] +LaserSustainResource=LaserBSustainExt01 +LaserSustainVolume=LaserExternalSustainVolume +LaserPitchOffset=0 +LaserSustainComponent=MediumLaserExternalSustainComponent + +[include] +file=audio\lsrcmpe.scp diff --git a/CONTENT/BT/AUDIO/MLRTRG.SCP b/CONTENT/BT/AUDIO/MLRTRG.SCP new file mode 100644 index 0000000..645da98 --- /dev/null +++ b/CONTENT/BT/AUDIO/MLRTRG.SCP @@ -0,0 +1,12 @@ +# +################################################################### +# Medium Laser Internal Audio Script +################################################################### +# + +[include] +file=audio\lsrtrg.scp +file=audio\clttrg.scp +file=audio\buttrg.scp +file=audio\dsttrg.scp + diff --git a/CONTENT/BT/AUDIO/MLRTRGE.SCP b/CONTENT/BT/AUDIO/MLRTRGE.SCP new file mode 100644 index 0000000..3b64622 --- /dev/null +++ b/CONTENT/BT/AUDIO/MLRTRGE.SCP @@ -0,0 +1,9 @@ +# +################################################################### +# Laser External Triggers +################################################################### +# + +[include] +file=audio\lsrtrge.scp + diff --git a/CONTENT/BT/AUDIO/MSLCMP.SCP b/CONTENT/BT/AUDIO/MSLCMP.SCP new file mode 100644 index 0000000..11f8ba9 --- /dev/null +++ b/CONTENT/BT/AUDIO/MSLCMP.SCP @@ -0,0 +1,171 @@ +# +################################################################### +# Mech Missile Audio Script +################################################################### +# + +# +################################################################### +# Missile Fire component +################################################################### +# + +[DirectPatchSource] +location=OriginLocation +resource=MissileFireResource +position=RearDirectPatchPosition +priority=3 +mix_presence=3 +volume_mix_level=MissileFireVolume +pitch_mix_offset=MissileFirePitchOffset +brightness_mix_level=1.0 +use_brightness_scale=False +use_attack_time_scale=False +has_compression_curve=True +compression_duration=0.5 +name=MissileFireComponent + +# +################################################################### +# Missile Loading component +################################################################### +# + +[DirectPatchSource] +location=OriginLocation +resource=MissileLoadingResource +position=RearDirectPatchPosition +priority=1 +mix_presence=0 +volume_mix_level=MissileLoadingVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=False +use_attack_time_scale=False +has_compression_curve=False +compression_duration=0.0 +name=MissileLoadingComponent + +# +################################################################### +# Missile Loaded component +################################################################### +# + +[DirectPatchSource] +location=OriginLocation +resource=MissileLoadedResource +position=RearDirectPatchPosition +priority=3 +mix_presence=2 +volume_mix_level=MissileLoadedVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=False +use_attack_time_scale=False +has_compression_curve=True +compression_duration=1.0 +name=MissileLoadedComponent + +#------------------------------------------------------------------ + +[AudioControlSequence] +audio_component=MissileLoadedComponent +tempo=160 +midi_file=audio\prjldd01.mid +is_looped=False +dump_value=False +name=MissileLoadedSequence + +[AudioIdleWatcher] +audio_component=MissileLoadedSequence + +# +################################################################### +# Missile TriggerDuringLoad component +################################################################### +# + +[DirectPatchSource] +location=OriginLocation +resource=MissileTriggerDuringLoadResource +position=FrontDirectPatchPosition +priority=2 +mix_presence=0 +volume_mix_level=MissileTriggerDuringLoadVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=False +use_attack_time_scale=False +has_compression_curve=False +compression_duration=0.0 +name=MissileTriggerDuringLoadComponent + +# +################################################################### +# Missile Misfire component +################################################################### +# + +[DirectPatchSource] +location=OriginLocation +resource=MissileMisfireResource +position=RearDirectPatchPosition +priority=3 +mix_presence=2 +volume_mix_level=MissileMisfireVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=False +use_attack_time_scale=False +has_compression_curve=True +compression_duration=1.0 +name=MissileMisfireComponent + +#------------------------------------------------------------------ + +[AudioControlSequence] +audio_component=MissileMisfireComponent +tempo=160 +midi_file=audio\mslmfr01.mid +is_looped=False +dump_value=False +name=MissileMisfireSequence + +[AudioIdleWatcher] +audio_component=MissileMisfireSequence + +# +################################################################### +# Missile Jam component +################################################################### +# + +[DirectPatchSource] +location=OriginLocation +resource=MissileJamResource +position=RearDirectPatchPosition +priority=3 +mix_presence=2 +volume_mix_level=MissileJamVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=False +use_attack_time_scale=False +has_compression_curve=True +compression_duration=1.0 +name=MissileJamComponent + +#------------------------------------------------------------------ + +[AudioControlSequence] +audio_component=MissileJamComponent +tempo=160 +midi_file=audio\mslldd01.mid +is_looped=False +dump_value=False +name=MissileJamSequence + +[AudioIdleWatcher] +audio_component=MissileJamSequence + diff --git a/CONTENT/BT/AUDIO/MSLEXP.SCP b/CONTENT/BT/AUDIO/MSLEXP.SCP new file mode 100644 index 0000000..ddf2458 --- /dev/null +++ b/CONTENT/BT/AUDIO/MSLEXP.SCP @@ -0,0 +1,108 @@ +# +################################################################### +# Missile Explosion Audio Script +################################################################### +# + +[include] +file=audio\macros.scp + +# +################################################################### +# Audio locations +################################################################### +# + +[L4AudioLocation] +location_offset=0.0,0.0,0.0 +name=OriginLocation + +# +################################################################### +# Missile Explosion component +################################################################### +# + +[Dynamic3DPatchSource] +location=OriginLocation +resource=BigExplosion01 +priority=0 +mix_presence=3 +volume_mix_level=MissileExplosionVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=True +use_attack_time_scale=False +has_compression_curve=True +compression_duration=0.5 +name=MissileExplosionComponent + +#------------------------------------------------------------------ + +# +# resource select +# + +[AudioResourceSelector] +audio_source=MissileExplosionComponent +audio_resource_index=MissileExplosionIndex +control_ID=100 +min_control_value=0.0 +max_control_value=1.0 +dump_value=False +name=MissileExplosionResourceSelect + +# +# sample and hold -> resource select +# + +[AudioSampleAndHold] +audio_component=MissileExplosionResourceSelect +control_ID=100 +sample_duration=99.0 +name=MissileExplosionSampleAndHold + +#------------------------------------------------------------------ + +# +# sample and hold -> pitch +# + +[AudioSampleAndHold] +audio_component=MissileExplosionComponent +control_ID=PitchAudioControlID +sample_duration=99.0 +min_value=-400 +max_value=400 +name=MissileExplosionPitchSampleAndHold + +# +# sample and hold -> filter +# + +[AudioSampleAndHold] +audio_component=MissileExplosionComponent +control_ID=BrightnessAudioControlID +sample_duration=99.0 +min_value=0.9 +max_value=1.0 +name=MissileExplosionBrightnessSampleAndHold + +#------------------------------------------------------------------ + +[AudioControlSplitter] +audio_component=MissileExplosionSampleAndHold +audio_component=MissileExplosionPitchSampleAndHold +audio_component=MissileExplosionBrightnessSampleAndHold +name=MissileExplosionSplitter + +[AudioControlSend] +audio_component=MissileExplosionSplitter +control_ID=StartAudioControlID +control_value=0.0 + +[AudioControlSend] +audio_component=MissileExplosionComponent +control_ID=StartAudioControlID +control_value=5.0 + diff --git a/CONTENT/BT/AUDIO/MSLEXPI.SCP b/CONTENT/BT/AUDIO/MSLEXPI.SCP new file mode 100644 index 0000000..ad3573b --- /dev/null +++ b/CONTENT/BT/AUDIO/MSLEXPI.SCP @@ -0,0 +1,109 @@ +# +################################################################### +# Missile Internal Explosion Audio Script +################################################################### +# + +[include] +file=audio\macros.scp + +# +################################################################### +# Audio locations +################################################################### +# + +[L4AudioLocation] +location_offset=0.0,0.0,0.0 +name=OriginLocation + +# +################################################################### +# Missile Internal Explosion component +################################################################### +# + +[Static3DPatchSource] +location=OriginLocation +resource=BigExplosionInt01 +priority=2 +mix_presence=3 +volume_mix_level=MissileExplosionIntVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=True +use_attack_time_scale=False +has_compression_curve=True +compression_duration=0.5 +use_internal=False +name=MissileExplosionIntComponent + +#------------------------------------------------------------------ + +# +# resource select +# + +[AudioResourceSelector] +audio_source=MissileExplosionIntComponent +audio_resource_index=MissileExplosionIntIndex +control_ID=100 +min_control_value=0.0 +max_control_value=1.0 +dump_value=False +name=MissileExplosionIntResourceSelect + +# +# sample and hold -> resource select +# + +[AudioSampleAndHold] +audio_component=MissileExplosionIntResourceSelect +control_ID=100 +sample_duration=99.0 +name=MissileExplosionIntSampleAndHold + +#------------------------------------------------------------------ + +# +# sample and hold -> pitch +# + +[AudioSampleAndHold] +audio_component=MissileExplosionIntComponent +control_ID=PitchAudioControlID +sample_duration=99.0 +min_value=-400 +max_value=400 +name=MissileExplosionIntPitchSampleAndHold + +# +# sample and hold -> filter +# + +[AudioSampleAndHold] +audio_component=MissileExplosionIntComponent +control_ID=BrightnessAudioControlID +sample_duration=99.0 +min_value=0.9 +max_value=1.0 +name=MissileExplosionIntBrightnessSampleAndHold + +#------------------------------------------------------------------ + +[AudioControlSplitter] +audio_component=MissileExplosionIntSampleAndHold +audio_component=MissileExplosionIntPitchSampleAndHold +audio_component=MissileExplosionIntBrightnessSampleAndHold +name=MissileExplosionIntSplitter + +[AudioControlSend] +audio_component=MissileExplosionIntSplitter +control_ID=StartAudioControlID +control_value=0.0 + +[AudioControlSend] +audio_component=MissileExplosionIntComponent +control_ID=StartAudioControlID +control_value=5.0 + diff --git a/CONTENT/BT/AUDIO/MSLJAM01.MID b/CONTENT/BT/AUDIO/MSLJAM01.MID new file mode 100644 index 0000000..2752b76 Binary files /dev/null and b/CONTENT/BT/AUDIO/MSLJAM01.MID differ diff --git a/CONTENT/BT/AUDIO/MSLLDD01.MID b/CONTENT/BT/AUDIO/MSLLDD01.MID new file mode 100644 index 0000000..d360727 Binary files /dev/null and b/CONTENT/BT/AUDIO/MSLLDD01.MID differ diff --git a/CONTENT/BT/AUDIO/MSLMFR01.MID b/CONTENT/BT/AUDIO/MSLMFR01.MID new file mode 100644 index 0000000..38680b0 Binary files /dev/null and b/CONTENT/BT/AUDIO/MSLMFR01.MID differ diff --git a/CONTENT/BT/AUDIO/MSLTRG.SCP b/CONTENT/BT/AUDIO/MSLTRG.SCP new file mode 100644 index 0000000..82130d8 --- /dev/null +++ b/CONTENT/BT/AUDIO/MSLTRG.SCP @@ -0,0 +1,111 @@ +# +################################################################### +# Missile Internal Audio Script +################################################################### +# + +# +################################################################### +# Missile Fire trigger +################################################################### +# + +[AudioStateTrigger] +subsystem=MechSubsystem +attribute=WeaponState +audio_component=MissileFireComponent +trigger_state=MechWeapon::Firing +inverse_trigger=False +control_ID=StartAudioControlID +control_value=2.5 +dump_value=False + +# +################################################################### +# Missile Loading trigger +################################################################### +# + +[AudioStateTrigger] +subsystem=MechSubsystem +attribute=WeaponState +audio_component=MissileLoadingComponent +trigger_state=MechWeapon::Loading +inverse_trigger=False +control_ID=StartAudioControlID +control_value=0.0 +dump_value=False + +[AudioStateTrigger] +subsystem=MechSubsystem +attribute=WeaponState +audio_component=MissileLoadingComponent +trigger_state=MechWeapon::Loading +inverse_trigger=True +control_ID=StopAudioControlID +control_value=0.0 +dump_value=False + +# +################################################################### +# Missile Loaded component +################################################################### +# + +[AudioStateTrigger] +subsystem=MechSubsystem +attribute=WeaponState +audio_component=MissileLoadedSequence +trigger_state=MechWeapon::Loaded +inverse_trigger=False +control_ID=StartAudioControlID +control_value=0.0 +dump_value=False + +# +################################################################### +# Missile TriggerDuringLoad trigger +################################################################### +# + +[AudioStateTrigger] +subsystem=MechSubsystem +attribute=WeaponState +audio_component=MissileTriggerDuringLoadComponent +trigger_state=MechWeapon::TriggerDuringLoad +inverse_trigger=False +control_ID=StartAudioControlID +control_value=1.0 +dump_value=False + +# +################################################################### +# Missile Misfire trigger +################################################################### +# + +[AudioStateTrigger] +subsystem=MechSubsystem +attribute=WeaponState +audio_component=MissileMisfireSequence +trigger_state=MechWeapon::Misfire +inverse_trigger=False +control_ID=StartAudioControlID +control_value=0.0 +dump_value=False + +# +################################################################### +# Missile Jam component +################################################################### +# + +[AudioStateTrigger] +subsystem=MechSubsystem +attribute=WeaponState +audio_component=MissileJamSequence +trigger_state=ProjectileWeapon::TriggerDuringJam +inverse_trigger=False +control_ID=StartAudioControlID +control_value=0.0 +dump_value=False diff --git a/CONTENT/BT/AUDIO/MSLTVL.SCP b/CONTENT/BT/AUDIO/MSLTVL.SCP new file mode 100644 index 0000000..806d858 --- /dev/null +++ b/CONTENT/BT/AUDIO/MSLTVL.SCP @@ -0,0 +1,46 @@ +# +################################################################### +# Missile Travel Audio Script +################################################################### +# + +[include] +file=audio\macros.scp + +# +################################################################### +# Audio locations +################################################################### +# + +[L4AudioLocation] +location_offset=0.0,0.0,0.0 +name=OriginLocation + +# +################################################################### +# Missile Travel component +################################################################### +# + +[Dynamic3DPatchSource] +location=OriginLocation +resource=MissileTravel01 +priority=0 +mix_presence=0 +volume_mix_level=MissileTravelVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=True +use_attack_time_scale=False +has_compression_curve=False +compression_duration=0.0 +name=MissileTravelComponent + +#------------------------------------------------------------------ + +[AudioControlSend] +audio_component=MissileTravelComponent +control_ID=StartAudioControlID +control_value=0.0 + diff --git a/CONTENT/BT/AUDIO/MYRCMP.SCP b/CONTENT/BT/AUDIO/MYRCMP.SCP new file mode 100644 index 0000000..0fb4b03 --- /dev/null +++ b/CONTENT/BT/AUDIO/MYRCMP.SCP @@ -0,0 +1,27 @@ +# +################################################################### +# Myomer Audio Script +################################################################### +# + +# +################################################################### +# MyomerSeekLevel component +################################################################### +# + +[DirectPatchSource] +location=OriginLocation +resource=BasicBeep02 +position=FrontDirectPatchPosition +priority=3 +mix_presence=0 +volume_mix_level=MyomerSeekLevelVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=False +use_attack_time_scale=False +has_compression_curve=True +compression_duration=1.0 +name=MyomerSeekLevelComponent + diff --git a/CONTENT/BT/AUDIO/MYRTRG.SCP b/CONTENT/BT/AUDIO/MYRTRG.SCP new file mode 100644 index 0000000..9dcd99e --- /dev/null +++ b/CONTENT/BT/AUDIO/MYRTRG.SCP @@ -0,0 +1,31 @@ +# +################################################################### +# Myomer Audio Script +################################################################### +# + +# +################################################################### +# Includes +################################################################### +# + +[include] +file=audio\buttrg.scp +file=audio\dsttrg.scp +file=audio\clttrg.scp + +# +################################################################### +# MyomerSeekLevel component +################################################################### +# + +[AudioControlsButtonMessageWatcher] +subsystem=MechSubsystem +message_ID=Myomers::ToggleSeekVoltageMessageID +audio_component=MyomerSeekLevelComponent +control_ID=StartAudioControlID +control_value=0.5 +dump_value=False + diff --git a/CONTENT/BT/AUDIO/OWN1EXT.SCP b/CONTENT/BT/AUDIO/OWN1EXT.SCP new file mode 100644 index 0000000..1a1409d --- /dev/null +++ b/CONTENT/BT/AUDIO/OWN1EXT.SCP @@ -0,0 +1,37 @@ +# +# External Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchext.scp + +# +# AFC25 component +# +[include] +file=audio\acncmpe.scp + +# AFC25 watcher +[macro] +MechSubsystem=AFC25 +[include] +file=audio\acntrge.scp + +# +# ERMLaser component +# +[include] +file=audio\glrcmpe.scp + +# ERMLaser watcher +[macro] +MechSubsystem=ERMLaser +[include] +file=audio\glrtrge.scp + +# ERSLaser watcher +[macro] +MechSubsystem=ERSLaser +[include] +file=audio\glrtrge.scp + diff --git a/CONTENT/BT/AUDIO/OWN1INT.SCP b/CONTENT/BT/AUDIO/OWN1INT.SCP new file mode 100644 index 0000000..6ef9a50 --- /dev/null +++ b/CONTENT/BT/AUDIO/OWN1INT.SCP @@ -0,0 +1,85 @@ +# +# Internal Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchint.scp + +# +# AmmoBinAFC25 component +# +[include] +file=audio\abncmp.scp + +# AmmoBinAFC25 watcher +[macro] +MechSubsystem=AmmoBinAFC25 +[include] +file=audio\abntrg.scp + +# +# AFC25 component +# +[include] +file=audio\saccmp.scp + +# AFC25 watcher +[macro] +MechSubsystem=AFC25 +[include] +file=audio\sactrg.scp + +# +# ERMLaser component +# +[include] +file=audio\ermcmp.scp + +# ERMLaser watcher +[macro] +MechSubsystem=ERMLaser +[include] +file=audio\ermtrg.scp + +# +# ERSLaser component +# +[include] +file=audio\erscmp.scp + +# ERSLaser watcher +[macro] +MechSubsystem=ERSLaser +[include] +file=audio\erstrg.scp + +# AmmoBinNRK5_1 watcher +[macro] +MechSubsystem=AmmoBinNRK5_1 +[include] +file=audio\abntrg.scp + +# +# NRK5_1 component +# +[include] +file=audio\lrmcmp.scp + +# NRK5_1 watcher +[macro] +MechSubsystem=NRK5_1 +[include] +file=audio\lrmtrg.scp + +# AmmoBinNRK5_2 watcher +[macro] +MechSubsystem=AmmoBinNRK5_2 +[include] +file=audio\abntrg.scp + +# NRK5_2 watcher +[macro] +MechSubsystem=NRK5_2 +[include] +file=audio\lrmtrg.scp + diff --git a/CONTENT/BT/AUDIO/OWNEXT.SCP b/CONTENT/BT/AUDIO/OWNEXT.SCP new file mode 100644 index 0000000..0caf0f3 --- /dev/null +++ b/CONTENT/BT/AUDIO/OWNEXT.SCP @@ -0,0 +1,49 @@ +# +# External Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchext.scp + +# +# ERMLaser_1 component +# +[include] +file=audio\glrcmpe.scp + +# ERMLaser_1 watcher +[macro] +MechSubsystem=ERMLaser_1 +[include] +file=audio\glrtrge.scp + +# ERMLaser_2 watcher +[macro] +MechSubsystem=ERMLaser_2 +[include] +file=audio\glrtrge.scp + +# ERSLaser_1 watcher +[macro] +MechSubsystem=ERSLaser_1 +[include] +file=audio\glrtrge.scp + +# ERSLaser_2 watcher +[macro] +MechSubsystem=ERSLaser_2 +[include] +file=audio\glrtrge.scp + +# ERSLaser_3 watcher +[macro] +MechSubsystem=ERSLaser_3 +[include] +file=audio\glrtrge.scp + +# ERSLaser_4 watcher +[macro] +MechSubsystem=ERSLaser_4 +[include] +file=audio\glrtrge.scp + diff --git a/CONTENT/BT/AUDIO/OWNINT.SCP b/CONTENT/BT/AUDIO/OWNINT.SCP new file mode 100644 index 0000000..38e8726 --- /dev/null +++ b/CONTENT/BT/AUDIO/OWNINT.SCP @@ -0,0 +1,91 @@ +# +# Internal Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchint.scp + +# +# ERMLaser_1 component +# +[include] +file=audio\ermcmp.scp + +# ERMLaser_1 watcher +[macro] +MechSubsystem=ERMLaser_1 +[include] +file=audio\ermtrg.scp + +# ERMLaser_2 watcher +[macro] +MechSubsystem=ERMLaser_2 +[include] +file=audio\ermtrg.scp + +# +# ERSLaser_1 component +# +[include] +file=audio\erscmp.scp + +# ERSLaser_1 watcher +[macro] +MechSubsystem=ERSLaser_1 +[include] +file=audio\erstrg.scp + +# ERSLaser_2 watcher +[macro] +MechSubsystem=ERSLaser_2 +[include] +file=audio\erstrg.scp + +# ERSLaser_3 watcher +[macro] +MechSubsystem=ERSLaser_3 +[include] +file=audio\erstrg.scp + +# ERSLaser_4 watcher +[macro] +MechSubsystem=ERSLaser_4 +[include] +file=audio\erstrg.scp + +# +# AmmoBinSRM6_1 component +# +[include] +file=audio\abncmp.scp + +# AmmoBinSRM6_1 watcher +[macro] +MechSubsystem=AmmoBinSRM6_1 +[include] +file=audio\abntrg.scp + +# +# SRM6_1 component +# +[include] +file=audio\srmcmp.scp + +# SRM6_1 watcher +[macro] +MechSubsystem=SRM6_1 +[include] +file=audio\srmtrg.scp + +# AmmoBinSRM6_2 watcher +[macro] +MechSubsystem=AmmoBinSRM6_2 +[include] +file=audio\abntrg.scp + +# SRM6_2 watcher +[macro] +MechSubsystem=SRM6_2 +[include] +file=audio\srmtrg.scp + diff --git a/CONTENT/BT/AUDIO/PLYINT.SCP b/CONTENT/BT/AUDIO/PLYINT.SCP new file mode 100644 index 0000000..8247fcd --- /dev/null +++ b/CONTENT/BT/AUDIO/PLYINT.SCP @@ -0,0 +1,88 @@ +# +################################################################### +# BT Player audio script +################################################################### +# + +# +################################################################### +# Includes +################################################################### +# +[include] +file=audio\macros.scp + +# +################################################################### +# Audio locations +################################################################### +# + +[L4AudioLocation] +location_offset=0.0,0.0,0.0 +name=OriginLocation + +# +################################################################### +# Translocation component +################################################################### +# + +[DirectPatchSource] +location=OriginLocation +resource=Translocation01 +position=FrontDirectPatchPosition +priority=4 +mix_presence=1 +volume_mix_level=TranslocationVolume +pitch_mix_offset=0.0 +brightness_mix_level=0.0 +use_brightness_scale=False +use_attack_time_scale=False +has_compression_curve=True +compression_duration=5.0 +name=TranslocationComponent01 + +[DirectPatchSource] +location=OriginLocation +resource=Translocation01 +position=RearDirectPatchPosition +priority=4 +mix_presence=1 +volume_mix_level=TranslocationVolume +pitch_mix_offset=0.0 +brightness_mix_level=0.0 +use_brightness_scale=False +use_attack_time_scale=False +has_compression_curve=True +compression_duration=5.0 +name=TranslocationComponent02 + +#------------------------------------------------------------------ + +[AudioControlSplitter] +audio_component=TranslocationComponent01 +audio_component=TranslocationComponent02 +name=TranslocationSplitter + +[AudioStateTrigger] +subsystem=Entity +attribute=SimulationState +audio_component=TranslocationSplitter +trigger_state=BTPlayer::MissionStartingState +inverse_trigger=False +control_ID=StartAudioControlID +control_value=5.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Entity +attribute=SimulationState +audio_component=TranslocationSplitter +trigger_state=BTPlayer::DropZoneAcquiredState +inverse_trigger=False +control_ID=StartAudioControlID +control_value=5.0 +dump_value=0 + + diff --git a/CONTENT/BT/AUDIO/PPCCMP.SCP b/CONTENT/BT/AUDIO/PPCCMP.SCP new file mode 100644 index 0000000..1a84d1f --- /dev/null +++ b/CONTENT/BT/AUDIO/PPCCMP.SCP @@ -0,0 +1,48 @@ +# +################################################################### +# PPC Audio Script +################################################################### +# + +[macro] +LaserFireResource=LaserAFire01 +LaserFirePitchOffset=0 +LaserFireComponent=PPCFireComponent +LaserFireIndex=LaserAFireIndex +LaserFireResourceSelect=PPCFireResourceSelect +LaserFireSampleAndHold=PPCFireSampleAndHold +# +LaserSustainResource=LaserASustain01 +LaserSustainComponent=PPCSustainComponent +LaserSustainIndex=LaserASustainIndex +LaserSustainResourceSelect=PPCSustainResourceSelect +LaserSustainSampleAndHold=PPCSustainSampleAndHold +# +LaserReleaseResource=LaserARelease01 +LaserReleaseComponent=PPCReleaseComponent +LaserReleaseIndex=LaserAReleaseIndex +LaserReleaseResourceSelect=PPCReleaseResourceSelect +LaserReleaseSampleAndHold=PPCReleaseSampleAndHold +# +LaserChargeResource=LaserACharge01 +LaserChargeComponent=PPCChargeComponent +LaserChargeIndex=LaserAChargeIndex +LaserChargeResourceSelect=PPCChargeResourceSelect +LaserChargeSampleAndHold=PPCChargeSampleAndHold +# +LaserLoadedResource=LaserLoaded01 +LaserLoadedComponent=SmallLaserLoadedComponent +LaserLoadedSequence=SmallLaserLoadedSequence +# +LaserTriggerDuringLoadResource=TriggerDuringLoad01 +LaserTriggerDuringLoadComponent=PPCTriggerDuringLoadComponent +# +LaserMisfireResource=LaserAMisfire01 +LaserMisfireComponent=PPCMisfireComponent +# +LaserSeekLevelResource=BasicBeep02 +LaserSeekLevelComponent=PPCSeekLevelComponent + +[include] +file=audio\lsrcmp.scp + diff --git a/CONTENT/BT/AUDIO/PPCCMPE.SCP b/CONTENT/BT/AUDIO/PPCCMPE.SCP new file mode 100644 index 0000000..d0619db --- /dev/null +++ b/CONTENT/BT/AUDIO/PPCCMPE.SCP @@ -0,0 +1,14 @@ +# +################################################################### +# PPC External Audio Script +################################################################### +# + +[macro] +LaserSustainResource=LaserASustain01 +LaserSustainVolume=LaserExternalSustainVolume +LaserPitchOffset=100 +LaserSustainComponent=PPCExternalSustainComponent + +[include] +file=audio\lsrcmpe.scp diff --git a/CONTENT/BT/AUDIO/PPCEXP.SCP b/CONTENT/BT/AUDIO/PPCEXP.SCP new file mode 100644 index 0000000..207de43 --- /dev/null +++ b/CONTENT/BT/AUDIO/PPCEXP.SCP @@ -0,0 +1,108 @@ +# +################################################################### +# PPC Explosion Audio Script +################################################################### +# + +[include] +file=audio\macros.scp + +# +################################################################### +# Audio locations +################################################################### +# + +[L4AudioLocation] +location_offset=0.0,0.0,0.0 +name=OriginLocation + +# +################################################################### +# PPC Explosion component +################################################################### +# + +[Dynamic3DPatchSource] +location=OriginLocation +resource=PPCExplosion01 +priority=0 +mix_presence=3 +volume_mix_level=PPCExplosionVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=True +use_attack_time_scale=False +has_compression_curve=True +compression_duration=0.5 +name=PPCExplosionComponent + +#------------------------------------------------------------------ + +# +# resource select +# + +[AudioResourceSelector] +audio_source=PPCExplosionComponent +audio_resource_index=PPCExplosionIndex +control_ID=100 +min_control_value=0.0 +max_control_value=1.0 +dump_value=False +name=PPCExplosionResourceSelect + +# +# sample and hold -> resource select +# + +[AudioSampleAndHold] +audio_component=PPCExplosionResourceSelect +control_ID=100 +sample_duration=99.0 +name=PPCExplosionSampleAndHold + +#------------------------------------------------------------------ + +# +# sample and hold -> pitch +# + +[AudioSampleAndHold] +audio_component=PPCExplosionComponent +control_ID=PitchAudioControlID +sample_duration=99.0 +min_value=-400 +max_value=400 +name=PPCExplosionPitchSampleAndHold + +# +# sample and hold -> filter +# + +[AudioSampleAndHold] +audio_component=PPCExplosionComponent +control_ID=BrightnessAudioControlID +sample_duration=99.0 +min_value=0.9 +max_value=1.0 +name=PPCExplosionBrightnessSampleAndHold + +#------------------------------------------------------------------ + +[AudioControlSplitter] +audio_component=PPCExplosionSampleAndHold +audio_component=PPCExplosionPitchSampleAndHold +audio_component=PPCExplosionBrightnessSampleAndHold +name=PPCExplosionSplitter + +[AudioControlSend] +audio_component=PPCExplosionSplitter +control_ID=StartAudioControlID +control_value=0.0 + +[AudioControlSend] +audio_component=PPCExplosionComponent +control_ID=StartAudioControlID +control_value=1.5 + diff --git a/CONTENT/BT/AUDIO/PPCEXPI.SCP b/CONTENT/BT/AUDIO/PPCEXPI.SCP new file mode 100644 index 0000000..1a9b993 --- /dev/null +++ b/CONTENT/BT/AUDIO/PPCEXPI.SCP @@ -0,0 +1,109 @@ +# +################################################################### +# PPC Explosion Internal Audio Script +################################################################### +# + +[include] +file=audio\macros.scp + +# +################################################################### +# Audio locations +################################################################### +# + +[L4AudioLocation] +location_offset=0.0,0.0,0.0 +name=OriginLocation + +# +################################################################### +# PPC Explosion Internal component +################################################################### +# + +[Static3DPatchSource] +location=OriginLocation +resource=PPCExplosionInt01 +priority=2 +mix_presence=3 +volume_mix_level=PPCExplosionIntVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=True +use_attack_time_scale=False +has_compression_curve=True +compression_duration=0.5 +use_internal=False +name=PPCExplosionIntComponent + +#------------------------------------------------------------------ + +# +# resource select +# + +[AudioResourceSelector] +audio_source=PPCExplosionIntComponent +audio_resource_index=PPCExplosionIntIndex +control_ID=100 +min_control_value=0.0 +max_control_value=1.0 +dump_value=False +name=PPCExplosionIntResourceSelect + +# +# sample and hold -> resource select +# + +[AudioSampleAndHold] +audio_component=PPCExplosionIntResourceSelect +control_ID=100 +sample_duration=99.0 +name=PPCExplosionIntSampleAndHold + +#------------------------------------------------------------------ + +# +# sample and hold -> pitch +# + +[AudioSampleAndHold] +audio_component=PPCExplosionIntComponent +control_ID=PitchAudioControlID +sample_duration=99.0 +min_value=-100 +max_value=100 +name=PPCExplosionIntPitchSampleAndHold + +# +# sample and hold -> filter +# + +[AudioSampleAndHold] +audio_component=PPCExplosionIntComponent +control_ID=BrightnessAudioControlID +sample_duration=99.0 +min_value=0.8 +max_value=1.0 +name=PPCExplosionIntBrightnessSampleAndHold + +#------------------------------------------------------------------ + +[AudioControlSplitter] +audio_component=PPCExplosionIntSampleAndHold +audio_component=PPCExplosionIntPitchSampleAndHold +audio_component=PPCExplosionIntBrightnessSampleAndHold +name=PPCExplosionIntSplitter + +[AudioControlSend] +audio_component=PPCExplosionIntSplitter +control_ID=StartAudioControlID +control_value=0.0 + +[AudioControlSend] +audio_component=PPCExplosionIntComponent +control_ID=StartAudioControlID +control_value=3.0 + diff --git a/CONTENT/BT/AUDIO/PPCTRG.SCP b/CONTENT/BT/AUDIO/PPCTRG.SCP new file mode 100644 index 0000000..042ba9c --- /dev/null +++ b/CONTENT/BT/AUDIO/PPCTRG.SCP @@ -0,0 +1,12 @@ +# +################################################################### +# PPC Internal Audio Script +################################################################### +# + +[include] +file=audio\lsrtrg.scp +file=audio\clttrg.scp +file=audio\buttrg.scp +file=audio\dsttrg.scp + diff --git a/CONTENT/BT/AUDIO/PPCTRGE.SCP b/CONTENT/BT/AUDIO/PPCTRGE.SCP new file mode 100644 index 0000000..86e97c1 --- /dev/null +++ b/CONTENT/BT/AUDIO/PPCTRGE.SCP @@ -0,0 +1,9 @@ +# +################################################################### +# PPC External Audio Script +################################################################### +# + +[include] +file=audio\lsrtrge.scp + diff --git a/CONTENT/BT/AUDIO/PRGBUT01.MID b/CONTENT/BT/AUDIO/PRGBUT01.MID new file mode 100644 index 0000000..75365f3 Binary files /dev/null and b/CONTENT/BT/AUDIO/PRGBUT01.MID differ diff --git a/CONTENT/BT/AUDIO/PRJCMP.SCP b/CONTENT/BT/AUDIO/PRJCMP.SCP new file mode 100644 index 0000000..1134dc9 --- /dev/null +++ b/CONTENT/BT/AUDIO/PRJCMP.SCP @@ -0,0 +1,192 @@ +# +################################################################### +# Projectile Internal Audio Script +################################################################### +# + +# +################################################################### +# Projectile Fire component +################################################################### +# + +[DirectPatchSource] +location=OriginLocation +resource=ProjectileFireResource +position=RearDirectPatchPosition +priority=3 +mix_presence=3 +volume_mix_level=ProjectileFireVolume +pitch_mix_offset=ProjectileFirePitchOffset +brightness_mix_level=1.0 +use_brightness_scale=True +use_attack_time_scale=False +has_compression_curve=True +compression_duration=0.5 +name=ProjectileFireComponent + +# +################################################################### +# Projectile Launch component +################################################################### +# + +[DirectPatchSource] +location=OriginLocation +resource=ProjectileLaunchResource +position=FrontDirectPatchPosition +priority=3 +mix_presence=3 +volume_mix_level=ProjectileLaunchVolume +pitch_mix_offset=ProjectileLaunchPitchOffset +brightness_mix_level=1.0 +use_brightness_scale=False +use_attack_time_scale=False +has_compression_curve=True +compression_duration=0.5 +name=ProjectileLaunchComponent + +# +################################################################### +# Projectile Loading component +################################################################### +# + +[DirectPatchSource] +location=OriginLocation +resource=ProjectileLoadingResource +position=RearDirectPatchPosition +priority=1 +mix_presence=0 +volume_mix_level=ProjectileLoadingVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=False +use_attack_time_scale=False +has_compression_curve=False +compression_duration=0.0 +name=ProjectileLoadingComponent + +# +################################################################### +# Projectile Loaded component +################################################################### +# + +[DirectPatchSource] +location=OriginLocation +resource=ProjectileLoadedResource +position=RearDirectPatchPosition +priority=3 +mix_presence=2 +volume_mix_level=ProjectileLoadedVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=False +use_attack_time_scale=False +has_compression_curve=True +compression_duration=1.0 +name=ProjectileLoadedComponent + +#------------------------------------------------------------------ + +[AudioControlSequence] +audio_component=ProjectileLoadedComponent +tempo=160 +midi_file=audio\prjldd01.mid +is_looped=False +dump_value=False +name=ProjectileLoadedSequence + +[AudioIdleWatcher] +audio_component=ProjectileLoadedSequence + +# +################################################################### +# Projectile TriggerDuringLoad component +################################################################### +# + +[DirectPatchSource] +location=OriginLocation +resource=ProjectileTriggerDuringLoadResource +position=FrontDirectPatchPosition +priority=2 +mix_presence=0 +volume_mix_level=ProjectileTriggerDuringLoadVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=False +use_attack_time_scale=False +has_compression_curve=False +compression_duration=0.0 +name=ProjectileTriggerDuringLoadComponent + +# +################################################################### +# Projectile Misfire component +################################################################### +# + +[DirectPatchSource] +location=OriginLocation +resource=ProjectileMisfireResource +position=RearDirectPatchPosition +priority=3 +mix_presence=2 +volume_mix_level=ProjectileMisfireVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=False +use_attack_time_scale=False +has_compression_curve=True +compression_duration=1.0 +name=ProjectileMisfireComponent + +#------------------------------------------------------------------ + +[AudioControlSequence] +audio_component=ProjectileMisfireComponent +tempo=160 +midi_file=audio\prjmfr01.mid +is_looped=False +dump_value=False +name=ProjectileMisfireSequence + +[AudioIdleWatcher] +audio_component=ProjectileMisfireSequence + +# +################################################################### +# Projectile Jam component +################################################################### +# + +[DirectPatchSource] +location=OriginLocation +resource=ProjectileJamResource +position=RearDirectPatchPosition +priority=3 +mix_presence=2 +volume_mix_level=ProjectileJamVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=False +use_attack_time_scale=False +has_compression_curve=True +compression_duration=1.0 +name=ProjectileJamComponent + +#------------------------------------------------------------------ + +[AudioControlSequence] +audio_component=ProjectileJamComponent +tempo=160 +midi_file=audio\prjjam01.mid +is_looped=False +dump_value=False +name=ProjectileJamSequence + +[AudioIdleWatcher] +audio_component=ProjectileJamSequence + diff --git a/CONTENT/BT/AUDIO/PRJCMPE.SCP b/CONTENT/BT/AUDIO/PRJCMPE.SCP new file mode 100644 index 0000000..b7a4f62 --- /dev/null +++ b/CONTENT/BT/AUDIO/PRJCMPE.SCP @@ -0,0 +1,26 @@ +# +################################################################### +# Projectile External Audio Script +################################################################### +# + +# +################################################################### +# Projectile Launch component +################################################################### +# + +[Dynamic3DPatchSource] +location=OriginLocation +resource=ProjectileLaunchResource +priority=0 +mix_presence=0 +volume_mix_level=ProjectileLaunchVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=False +use_attack_time_scale=False +has_compression_curve=False +compression_duration=0.0 +name=ProjectileLaunchComponent + diff --git a/CONTENT/BT/AUDIO/PRJEXP.SCP b/CONTENT/BT/AUDIO/PRJEXP.SCP new file mode 100644 index 0000000..b88fddf --- /dev/null +++ b/CONTENT/BT/AUDIO/PRJEXP.SCP @@ -0,0 +1,108 @@ +# +################################################################### +# Projectile Explosion Audio Script +################################################################### +# + +[include] +file=audio\macros.scp + +# +################################################################### +# Audio locations +################################################################### +# + +[L4AudioLocation] +location_offset=0.0,0.0,0.0 +name=OriginLocation + +# +################################################################### +# Projectile Explosion component +################################################################### +# + +[Dynamic3DPatchSource] +location=OriginLocation +resource=MedExplosion01 +priority=0 +mix_presence=3 +volume_mix_level=ProjectileExplosionVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=True +use_attack_time_scale=False +has_compression_curve=True +compression_duration=0.5 +name=ProjectileExplosionComponent + +#------------------------------------------------------------------ + +# +# resource select +# + +[AudioResourceSelector] +audio_source=ProjectileExplosionComponent +audio_resource_index=ProjectileExplosionIndex +control_ID=100 +min_control_value=0.0 +max_control_value=1.0 +dump_value=False +name=ProjectileExplosionResourceSelect + +# +# sample and hold -> resource select +# + +[AudioSampleAndHold] +audio_component=ProjectileExplosionResourceSelect +control_ID=100 +sample_duration=99.0 +name=ProjectileExplosionSampleAndHold + +#------------------------------------------------------------------ + +# +# sample and hold -> pitch +# + +[AudioSampleAndHold] +audio_component=ProjectileExplosionComponent +control_ID=PitchAudioControlID +sample_duration=99.0 +min_value=-400 +max_value=400 +name=ProjectileExplosionPitchSampleAndHold + +# +# sample and hold -> filter +# + +[AudioSampleAndHold] +audio_component=ProjectileExplosionComponent +control_ID=BrightnessAudioControlID +sample_duration=99.0 +min_value=0.9 +max_value=1.0 +name=ProjectileExplosionBrightnessSampleAndHold + +#------------------------------------------------------------------ + +[AudioControlSplitter] +audio_component=ProjectileExplosionSampleAndHold +audio_component=ProjectileExplosionPitchSampleAndHold +audio_component=ProjectileExplosionBrightnessSampleAndHold +name=ProjectileExplosionSplitter + +[AudioControlSend] +audio_component=ProjectileExplosionSplitter +control_ID=StartAudioControlID +control_value=0.0 + +[AudioControlSend] +audio_component=ProjectileExplosionComponent +control_ID=StartAudioControlID +control_value=3.0 + diff --git a/CONTENT/BT/AUDIO/PRJEXPI.SCP b/CONTENT/BT/AUDIO/PRJEXPI.SCP new file mode 100644 index 0000000..556f67e --- /dev/null +++ b/CONTENT/BT/AUDIO/PRJEXPI.SCP @@ -0,0 +1,109 @@ +# +################################################################### +# Projectile Internal Explosion Audio Script +################################################################### +# + +[include] +file=audio\macros.scp + +# +################################################################### +# Audio locations +################################################################### +# + +[L4AudioLocation] +location_offset=0.0,0.0,0.0 +name=OriginLocation + +# +################################################################### +# Projectile Internal Explosion component +################################################################### +# + +[Static3DPatchSource] +location=OriginLocation +resource=MedExplosionInt01 +priority=2 +mix_presence=3 +volume_mix_level=ProjectileExplosionIntVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=True +use_attack_time_scale=False +has_compression_curve=True +compression_duration=0.5 +use_internal=False +name=ProjectileExplosionIntComponent + +#------------------------------------------------------------------ + +# +# resource select +# + +[AudioResourceSelector] +audio_source=ProjectileExplosionIntComponent +audio_resource_index=ProjectileExplosionIntIndex +control_ID=100 +min_control_value=0.0 +max_control_value=1.0 +dump_value=False +name=ProjectileExplosionIntResourceSelect + +# +# sample and hold -> resource select +# + +[AudioSampleAndHold] +audio_component=ProjectileExplosionIntResourceSelect +control_ID=100 +sample_duration=99.0 +name=ProjectileExplosionIntSampleAndHold + +#------------------------------------------------------------------ + +# +# sample and hold -> pitch +# + +[AudioSampleAndHold] +audio_component=ProjectileExplosionIntComponent +control_ID=PitchAudioControlID +sample_duration=99.0 +min_value=-400 +max_value=400 +name=ProjectileExplosionIntPitchSampleAndHold + +# +# sample and hold -> filter +# + +[AudioSampleAndHold] +audio_component=ProjectileExplosionIntComponent +control_ID=BrightnessAudioControlID +sample_duration=99.0 +min_value=0.9 +max_value=1.0 +name=ProjectileExplosionIntBrightnessSampleAndHold + +#------------------------------------------------------------------ + +[AudioControlSplitter] +audio_component=ProjectileExplosionIntSampleAndHold +audio_component=ProjectileExplosionIntPitchSampleAndHold +audio_component=ProjectileExplosionIntBrightnessSampleAndHold +name=ProjectileExplosionIntSplitter + +[AudioControlSend] +audio_component=ProjectileExplosionIntSplitter +control_ID=StartAudioControlID +control_value=0.0 + +[AudioControlSend] +audio_component=ProjectileExplosionIntComponent +control_ID=StartAudioControlID +control_value=3.0 + diff --git a/CONTENT/BT/AUDIO/PRJJAM01.MID b/CONTENT/BT/AUDIO/PRJJAM01.MID new file mode 100644 index 0000000..46e6904 Binary files /dev/null and b/CONTENT/BT/AUDIO/PRJJAM01.MID differ diff --git a/CONTENT/BT/AUDIO/PRJLDD01.MID b/CONTENT/BT/AUDIO/PRJLDD01.MID new file mode 100644 index 0000000..2752b76 Binary files /dev/null and b/CONTENT/BT/AUDIO/PRJLDD01.MID differ diff --git a/CONTENT/BT/AUDIO/PRJMFR01.MID b/CONTENT/BT/AUDIO/PRJMFR01.MID new file mode 100644 index 0000000..d9e76c5 Binary files /dev/null and b/CONTENT/BT/AUDIO/PRJMFR01.MID differ diff --git a/CONTENT/BT/AUDIO/PRJTRG.SCP b/CONTENT/BT/AUDIO/PRJTRG.SCP new file mode 100644 index 0000000..c2f787a --- /dev/null +++ b/CONTENT/BT/AUDIO/PRJTRG.SCP @@ -0,0 +1,128 @@ +# +################################################################### +# Projectile Internal Audio Script +################################################################### +# + +# +################################################################### +# Projectile Fire component +################################################################### +# + +[AudioStateTrigger] +subsystem=MechSubsystem +attribute=WeaponState +audio_component=ProjectileFireComponent +trigger_state=MechWeapon::Firing +inverse_trigger=False +control_ID=StartAudioControlID +control_value=2.0 +dump_value=False + +# +################################################################### +# Projectile Launch component +################################################################### +# + +[AudioStateTrigger] +subsystem=MechSubsystem +attribute=WeaponState +audio_component=ProjectileLaunchComponent +trigger_state=MechWeapon::Firing +inverse_trigger=False +control_ID=StartAudioControlID +control_value=2.0 +dump_value=False + +# +################################################################### +# Projectile Loading trigger +################################################################### +# + +[AudioStateTrigger] +subsystem=MechSubsystem +attribute=WeaponState +audio_component=ProjectileLoadingComponent +trigger_state=MechWeapon::Loading +inverse_trigger=False +control_ID=StartAudioControlID +control_value=0.0 +dump_value=False + +[AudioStateTrigger] +subsystem=MechSubsystem +attribute=WeaponState +audio_component=ProjectileLoadingComponent +trigger_state=MechWeapon::Loading +inverse_trigger=True +control_ID=StopAudioControlID +control_value=0.0 +dump_value=False + +# +################################################################### +# Projectile Loaded component +################################################################### +# + +[AudioStateTrigger] +subsystem=MechSubsystem +attribute=WeaponState +audio_component=ProjectileLoadedSequence +trigger_state=MechWeapon::Loaded +inverse_trigger=False +control_ID=StartAudioControlID +control_value=0.0 +dump_value=False + +# +################################################################### +# Projectile TriggerDuringLoad component +################################################################### +# + +[AudioStateTrigger] +subsystem=MechSubsystem +attribute=WeaponState +audio_component=ProjectileTriggerDuringLoadComponent +trigger_state=MechWeapon::TriggerDuringLoad +inverse_trigger=False +control_ID=StartAudioControlID +control_value=1.0 +dump_value=False + +# +################################################################### +# Projectile Misfire component +################################################################### +# + +[AudioStateTrigger] +subsystem=MechSubsystem +attribute=WeaponState +audio_component=ProjectileMisfireSequence +trigger_state=MechWeapon::Misfire +inverse_trigger=False +control_ID=StartAudioControlID +control_value=0.0 +dump_value=False + +# +################################################################### +# Projectile Jam component +################################################################### +# + +[AudioStateTrigger] +subsystem=MechSubsystem +attribute=WeaponState +audio_component=ProjectileJamSequence +trigger_state=ProjectileWeapon::TriggerDuringJam +inverse_trigger=False +control_ID=StartAudioControlID +control_value=0.0 +dump_value=False + diff --git a/CONTENT/BT/AUDIO/PRJTRGE.SCP b/CONTENT/BT/AUDIO/PRJTRGE.SCP new file mode 100644 index 0000000..87268d9 --- /dev/null +++ b/CONTENT/BT/AUDIO/PRJTRGE.SCP @@ -0,0 +1,23 @@ +# +################################################################### +# Projectile External Audio Script +################################################################### +# + +# +################################################################### +# Projectile Launch component +################################################################### +# + +[AudioStateTrigger] +subsystem=MechSubsystem +attribute=WeaponState +audio_component=ProjectileLaunchComponent +trigger_state=MechWeapon::Firing +inverse_trigger=False +control_ID=StartAudioControlID +control_value=2.0 +dump_value=False + + diff --git a/CONTENT/BT/AUDIO/PRJTVL.SCP b/CONTENT/BT/AUDIO/PRJTVL.SCP new file mode 100644 index 0000000..81f25b0 --- /dev/null +++ b/CONTENT/BT/AUDIO/PRJTVL.SCP @@ -0,0 +1,46 @@ +# +################################################################### +# Projectile Travel Audio Script +################################################################### +# + +[include] +file=audio\macros.scp + +# +################################################################### +# Audio locations +################################################################### +# + +[L4AudioLocation] +location_offset=0.0,0.0,0.0 +name=OriginLocation + +# +################################################################### +# Projectile Travel component +################################################################### +# + +[Dynamic3DPatchSource] +location=OriginLocation +resource=ProjectileATravel01 +priority=0 +mix_presence=0 +volume_mix_level=ProjectileTravelVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=True +use_attack_time_scale=False +has_compression_curve=False +compression_duration=0.0 +name=ProjectileTravelComponent + +#------------------------------------------------------------------ + +[AudioControlSend] +audio_component=ProjectileTravelComponent +control_ID=StartAudioControlID +control_value=0.0 + diff --git a/CONTENT/BT/AUDIO/RAPEXT.SCP b/CONTENT/BT/AUDIO/RAPEXT.SCP new file mode 100644 index 0000000..8aa3f10 --- /dev/null +++ b/CONTENT/BT/AUDIO/RAPEXT.SCP @@ -0,0 +1,37 @@ +# +# External Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchext.scp + +# +# MLaser_1 component +# +[include] +file=audio\glrcmpe.scp + +# MLaser_1 watcher +[macro] +MechSubsystem=MLaser_1 +[include] +file=audio\glrtrge.scp + +# MLaser_2 watcher +[macro] +MechSubsystem=MLaser_2 +[include] +file=audio\glrtrge.scp + +# SLaser_1 watcher +[macro] +MechSubsystem=SLaser_1 +[include] +file=audio\glrtrge.scp + +# SLaser_2 watcher +[macro] +MechSubsystem=SLaser_2 +[include] +file=audio\glrtrge.scp + diff --git a/CONTENT/BT/AUDIO/RAPINT.SCP b/CONTENT/BT/AUDIO/RAPINT.SCP new file mode 100644 index 0000000..057a821 --- /dev/null +++ b/CONTENT/BT/AUDIO/RAPINT.SCP @@ -0,0 +1,91 @@ +# +# Internal Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchint.scp + +# +# MLaser_1 component +# +[include] +file=audio\mlrcmp.scp + +# MLaser_1 watcher +[macro] +MechSubsystem=MLaser_1 +[include] +file=audio\mlrtrg.scp + +# MLaser_2 watcher +[macro] +MechSubsystem=MLaser_2 +[include] +file=audio\mlrtrg.scp + +# +# SLaser_1 component +# +[include] +file=audio\slrcmp.scp + +# SLaser_1 watcher +[macro] +MechSubsystem=SLaser_1 +[include] +file=audio\slrtrg.scp + +# SLaser_2 watcher +[macro] +MechSubsystem=SLaser_2 +[include] +file=audio\slrtrg.scp + +# +# AmmoBinLRM5_1 component +# +[include] +file=audio\abncmp.scp + +# AmmoBinLRM5_1 watcher +[macro] +MechSubsystem=AmmoBinLRM5_1 +[include] +file=audio\abntrg.scp + +# +# LRM5_1 component +# +[include] +file=audio\lrmcmp.scp + +# LRM5_1 watcher +[macro] +MechSubsystem=LRM5_1 +[include] +file=audio\lrmtrg.scp + +# AmmoBinLRM5_2 watcher +[macro] +MechSubsystem=AmmoBinLRM5_2 +[include] +file=audio\abntrg.scp + +# LRM5_2 watcher +[macro] +MechSubsystem=LRM5_2 +[include] +file=audio\lrmtrg.scp + +# AmmoBinLRM5_3 watcher +[macro] +MechSubsystem=AmmoBinLRM5_3 +[include] +file=audio\abntrg.scp + +# LRM5_3 watcher +[macro] +MechSubsystem=LRM5_3 +[include] +file=audio\lrmtrg.scp + diff --git a/CONTENT/BT/AUDIO/SACCMP.SCP b/CONTENT/BT/AUDIO/SACCMP.SCP new file mode 100644 index 0000000..18518d9 --- /dev/null +++ b/CONTENT/BT/AUDIO/SACCMP.SCP @@ -0,0 +1,38 @@ +# +################################################################### +# Small AutoCannon Audio Script +################################################################### +# + +[macro] +ProjectileFireResource=AutoCannonAction01 +ProjectileFireVolume=SmallAutoCannonFireVolume +ProjectileFirePitchOffset=200 +ProjectileFireComponent=SmallAutoCannonFireComponent +# +ProjectileLaunchResource=AutoCannonFire01 +ProjectileLaunchVolume=SmallAutoCannonLaunchVolume +ProjectileLaunchPitchOffset=200 +ProjectileLaunchComponent=SmallAutoCannonLaunchComponent +# +ProjectileLoadingResource=AutoCannonLoading01 +ProjectileLoadingComponent=SmallAutoCannonLoadingComponent +# +ProjectileLoadedResource=AutoCannonLoaded01 +ProjectileLoadedComponent=SmallAutoCannonLoadedComponent +ProjectileLoadedSequence=SmallAutoCannonLoadedSequence +# +ProjectileTriggerDuringLoadResource=TriggerDuringLoad01 +ProjectileTriggerDuringLoadComponent=SmallAutoCannonTriggerDuringLoadComponent +# +ProjectileMisfireResource=AutoCannonMisfire01 +ProjectileMisfireComponent=SmallAutoCannonMisfireComponent +ProjectileMisfireSequence=SmallAutoCannonMisfireSequence +# +ProjectileJamResource=AutoCannonJam01 +ProjectileJamComponent=SmallAutoCannonJamComponent +ProjectileJamSequence=SmallAutoCannonJamSequence + +[include] +file=audio\prjcmp.scp + diff --git a/CONTENT/BT/AUDIO/SACTRG.SCP b/CONTENT/BT/AUDIO/SACTRG.SCP new file mode 100644 index 0000000..98186fd --- /dev/null +++ b/CONTENT/BT/AUDIO/SACTRG.SCP @@ -0,0 +1,12 @@ +# +################################################################### +# Mech AutoCannon Internal Audio Script +################################################################### +# + +[include] +file=audio\prjtrg.scp +file=audio\clttrg.scp +file=audio\buttrg.scp +file=audio\dsttrg.scp + diff --git a/CONTENT/BT/AUDIO/SBNEXP.SCP b/CONTENT/BT/AUDIO/SBNEXP.SCP new file mode 100644 index 0000000..573d015 --- /dev/null +++ b/CONTENT/BT/AUDIO/SBNEXP.SCP @@ -0,0 +1,136 @@ +# +################################################################### +# Small Burning Audio Script +################################################################### +# + +[include] +file=audio\macros.scp + +# +################################################################### +# Audio locations +################################################################### +# + +[L4AudioLocation] +location_offset=0.0,0.0,0.0 +clipping_scale=0.5 +name=OriginLocation + +# +################################################################### +# SmallExplosion component +################################################################### +# + +[Dynamic3DPatchSource] +location=OriginLocation +resource=SmallExplosion01 +priority=0 +mix_presence=3 +volume_mix_level=SmallExplosionVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=True +use_attack_time_scale=False +has_compression_curve=True +compression_duration=0.5 +name=SmallExplosionComponent + +#------------------------------------------------------------------ + +# +# resource select +# + +[AudioResourceSelector] +audio_source=SmallExplosionComponent +audio_resource_index=SmallExplosionIndex +control_ID=100 +min_control_value=0.0 +max_control_value=1.0 +dump_value=False +name=SmallExplosionResourceSelect + +# +# sample and hold -> resource select +# + +[AudioSampleAndHold] +audio_component=SmallExplosionResourceSelect +control_ID=100 +sample_duration=99.0 +name=SmallExplosionSampleAndHold + +#------------------------------------------------------------------ + +# +# sample and hold -> pitch +# + +[AudioSampleAndHold] +audio_component=SmallExplosionComponent +control_ID=PitchAudioControlID +sample_duration=99.0 +min_value=-200 +max_value=200 +name=SmallExplosionPitchSampleAndHold + +# +# sample and hold -> filter +# + +[AudioSampleAndHold] +audio_component=SmallExplosionComponent +control_ID=BrightnessAudioControlID +sample_duration=99.0 +min_value=0.7 +max_value=1.0 +name=SmallExplosionBrightnessSampleAndHold + +#------------------------------------------------------------------ + +[AudioControlSplitter] +audio_component=SmallExplosionSampleAndHold +audio_component=SmallExplosionPitchSampleAndHold +audio_component=SmallExplosionBrightnessSampleAndHold +name=SmallExplosionSplitter + +[AudioControlSend] +audio_component=SmallExplosionSplitter +control_ID=StartAudioControlID +control_value=0.0 + +[AudioControlSend] +audio_component=SmallExplosionComponent +control_ID=StartAudioControlID +control_value=3.0 + +# +################################################################### +# SmallFire component +################################################################### +# + +[Dynamic3DPatchSource] +location=OriginLocation +resource=SmallFireLoop01 +priority=0 +mix_presence=3 +volume_mix_level=SmallFireVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=False +use_attack_time_scale=False +has_compression_curve=False +compression_duration=0.0 +name=SmallFireComponent + +#------------------------------------------------------------------ + +[AudioControlSend] +audio_component=SmallFireComponent +control_ID=StartAudioControlID +control_value=0.0 + diff --git a/CONTENT/BT/AUDIO/SHFEXT.SCP b/CONTENT/BT/AUDIO/SHFEXT.SCP new file mode 100644 index 0000000..30ea140 --- /dev/null +++ b/CONTENT/BT/AUDIO/SHFEXT.SCP @@ -0,0 +1,140 @@ +# +################################################################### +# Mech External Myomer Audio Script +################################################################### +# + +[macro] +MyomerServoTopSpeed=60.0 +MyomerServoDuration=1.5 + +# +################################################################### +# MyomerServo component +################################################################### +# + +[!Dynamic3DPatchSource] +location=OriginLocation +resource=MyomerServo01 +priority=0 +mix_presence=0 +volume_mix_level=MyomerServoVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=True +use_attack_time_scale=False +has_compression_curve=False +compression_duration=0.0 +name=MyomerServoComponent + +#------------------------------------------------------------------ + +# +# linear velocity -> pitch +# + +[!AudioMotionScale] +subsystem=Entity +attribute=LocalVelocity +motion_type=0 +motion_value=3 +audio_component=MyomerServoComponent +attribute_value_boundary1=0.0 +attribute_value_boundary2=MyomerServoTopSpeed +control_ID=PitchAudioControlID +control_value_boundary1=-1200 +control_value_boundary2=0 +exponent=1.0 +dump_value=False + +#------------------------------------------------------------------ + +# WalkForward + +[!AudioStateTrigger] +subsystem=Entity +attribute=ReplicantAnimationState +audio_component=MyomerServoComponent +trigger_state=Mech::RightWalkForwardAnimation +inverse_trigger=0 +control_ID=StartAudioControlID +control_value=MyomerServoDuration +dump_value=False + +[!AudioStateTrigger] +subsystem=Entity +attribute=ReplicantAnimationState +audio_component=MyomerServoComponent +trigger_state=Mech::LeftWalkForwardAnimation +inverse_trigger=0 +control_ID=StartAudioControlID +control_value=MyomerServoDuration +dump_value=False + +# Run + +[!AudioStateTrigger] +subsystem=Entity +attribute=ReplicantAnimationState +audio_component=MyomerServoComponent +trigger_state=Mech::RightRunAnimation +inverse_trigger=0 +control_ID=StartAudioControlID +control_value=MyomerServoDuration +dump_value=False + +[!AudioStateTrigger] +subsystem=Entity +attribute=ReplicantAnimationState +audio_component=MyomerServoComponent +trigger_state=Mech::LeftRunAnimation +inverse_trigger=0 +control_ID=StartAudioControlID +control_value=MyomerServoDuration +dump_value=False + +# Reverse + +[!AudioStateTrigger] +subsystem=Entity +attribute=ReplicantAnimationState +audio_component=MyomerServoComponent +trigger_state=Mech::RightReverseAnimation +inverse_trigger=0 +control_ID=StartAudioControlID +control_value=MyomerServoDuration +dump_value=False + +[!AudioStateTrigger] +subsystem=Entity +attribute=ReplicantAnimationState +audio_component=MyomerServoComponent +trigger_state=Mech::LeftReverseAnimation +inverse_trigger=0 +control_ID=StartAudioControlID +control_value=MyomerServoDuration +dump_value=False + +# Gimp + +[!AudioStateTrigger] +subsystem=Entity +attribute=ReplicantAnimationState +audio_component=MyomerServoComponent +trigger_state=Mech::LeftGimpAnimation +inverse_trigger=0 +control_ID=StartAudioControlID +control_value=MyomerServoDuration +dump_value=False + +[!AudioStateTrigger] +subsystem=Entity +attribute=ReplicantAnimationState +audio_component=MyomerServoComponent +trigger_state=Mech::RightGimpAnimation +inverse_trigger=0 +control_ID=StartAudioControlID +control_value=MyomerServoDuration +dump_value=False + diff --git a/CONTENT/BT/AUDIO/SLRCMP.SCP b/CONTENT/BT/AUDIO/SLRCMP.SCP new file mode 100644 index 0000000..be58c60 --- /dev/null +++ b/CONTENT/BT/AUDIO/SLRCMP.SCP @@ -0,0 +1,49 @@ +# +################################################################### +# Small Laser Audio Script +################################################################### +# + +[macro] +LaserFireResource=LaserBFire01 +LaserFirePitchOffset=200 +LaserFireComponent=SmallLaserFireComponent +LaserFireIndex=LaserBFireIndex +LaserFireResourceSelect=SmallLaserFireResourceSelect +LaserFireSampleAndHold=SmallLaserFireSampleAndHold +# +LaserSustainResource=LaserBSustain01 +LaserSustainComponent=SmallLaserSustainComponent +LaserSustainIndex=LaserBSustainIndex +LaserSustainResourceSelect=SmallLaserSustainResourceSelect +LaserSustainSampleAndHold=SmallLaserSustainSampleAndHold +# +LaserReleaseResource=LaserARelease01 +LaserReleaseComponent=SmallLaserReleaseComponent +LaserReleaseIndex=LaserAReleaseIndex +LaserReleaseResourceSelect=SmallLaserReleaseResourceSelect +LaserReleaseSampleAndHold=SmallLaserReleaseSampleAndHold +# +LaserChargeResource=LaserACharge01 +LaserChargeComponent=SmallLaserChargeComponent +LaserChargeIndex=LaserAChargeIndex +LaserChargeResourceSelect=SmallLaserChargeResourceSelect +LaserChargeSampleAndHold=SmallLaserChargeSampleAndHold +# +LaserLoadedResource=LaserLoaded01 +LaserLoadedComponent=SmallLaserLoadedComponent +LaserLoadedSequence=SmallLaserLoadedSequence +# +LaserTriggerDuringLoadResource=TriggerDuringLoad01 +LaserTriggerDuringLoadComponent=SmallLaserTriggerDuringLoadComponent +# +LaserMisfireResource=LaserAMisfire01 +LaserMisfireComponent=SmallLaserMisfireComponent +# +LaserSeekLevelResource=BasicBeep02 +LaserSeekLevelComponent=SmallLaserSeekLevelComponent + +[include] +file=audio\lsrcmp.scp + + diff --git a/CONTENT/BT/AUDIO/SLRCMPE.SCP b/CONTENT/BT/AUDIO/SLRCMPE.SCP new file mode 100644 index 0000000..751a50e --- /dev/null +++ b/CONTENT/BT/AUDIO/SLRCMPE.SCP @@ -0,0 +1,14 @@ +# +################################################################### +# Small Laser External Audio Script +################################################################### +# + +[macro] +LaserSustainResource=LaserBSustainExt01 +LaserSustainVolume=LaserExternalSustainVolume +LaserPitchOffset=200 +LaserSustainComponent=SmallLaserExternalSustainComponent + +[include] +file=audio\lsrcmpe.scp diff --git a/CONTENT/BT/AUDIO/SLRTRG.SCP b/CONTENT/BT/AUDIO/SLRTRG.SCP new file mode 100644 index 0000000..924cb62 --- /dev/null +++ b/CONTENT/BT/AUDIO/SLRTRG.SCP @@ -0,0 +1,12 @@ +# +################################################################### +# Small Laser Internal Audio Script +################################################################### +# + +[include] +file=audio\lsrtrg.scp +file=audio\clttrg.scp +file=audio\buttrg.scp +file=audio\dsttrg.scp + diff --git a/CONTENT/BT/AUDIO/SLRTRGE.SCP b/CONTENT/BT/AUDIO/SLRTRGE.SCP new file mode 100644 index 0000000..2901a5d --- /dev/null +++ b/CONTENT/BT/AUDIO/SLRTRGE.SCP @@ -0,0 +1,9 @@ +# +################################################################### +# Small Laser External Triggers +################################################################### +# + +[include] +file=audio\lsrtrge.scp + diff --git a/CONTENT/BT/AUDIO/SMLEXP.SCP b/CONTENT/BT/AUDIO/SMLEXP.SCP new file mode 100644 index 0000000..4f13b8e --- /dev/null +++ b/CONTENT/BT/AUDIO/SMLEXP.SCP @@ -0,0 +1,108 @@ +# +################################################################### +# Small Explosion Audio Script +################################################################### +# + +[include] +file=audio\macros.scp + +# +################################################################### +# Audio locations +################################################################### +# + +[L4AudioLocation] +location_offset=0.0,0.0,0.0 +name=OriginLocation + +# +################################################################### +# SmallExplosion component +################################################################### +# + +[Dynamic3DPatchSource] +location=OriginLocation +resource=SmallExplosion01 +priority=0 +mix_presence=3 +volume_mix_level=SmallExplosionVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=True +use_attack_time_scale=False +has_compression_curve=True +compression_duration=0.5 +name=SmallExplosionComponent + +#------------------------------------------------------------------ + +# +# resource select +# + +[AudioResourceSelector] +audio_source=SmallExplosionComponent +audio_resource_index=SmallExplosionIndex +control_ID=100 +min_control_value=0.0 +max_control_value=1.0 +dump_value=False +name=SmallExplosionResourceSelect + +# +# sample and hold -> resource select +# + +[AudioSampleAndHold] +audio_component=SmallExplosionResourceSelect +control_ID=100 +sample_duration=99.0 +name=SmallExplosionSampleAndHold + +#------------------------------------------------------------------ + +# +# sample and hold -> pitch +# + +[AudioSampleAndHold] +audio_component=SmallExplosionComponent +control_ID=PitchAudioControlID +sample_duration=99.0 +min_value=-200 +max_value=200 +name=SmallExplosionPitchSampleAndHold + +# +# sample and hold -> filter +# + +[AudioSampleAndHold] +audio_component=SmallExplosionComponent +control_ID=BrightnessAudioControlID +sample_duration=99.0 +min_value=0.7 +max_value=1.0 +name=SmallExplosionBrightnessSampleAndHold + +#------------------------------------------------------------------ + +[AudioControlSplitter] +audio_component=SmallExplosionSampleAndHold +audio_component=SmallExplosionPitchSampleAndHold +audio_component=SmallExplosionBrightnessSampleAndHold +name=SmallExplosionSplitter + +[AudioControlSend] +audio_component=SmallExplosionSplitter +control_ID=StartAudioControlID +control_value=0.0 + +[AudioControlSend] +audio_component=SmallExplosionComponent +control_ID=StartAudioControlID +control_value=3.0 + diff --git a/CONTENT/BT/AUDIO/SND1EXT.SCP b/CONTENT/BT/AUDIO/SND1EXT.SCP new file mode 100644 index 0000000..dd6cdc8 --- /dev/null +++ b/CONTENT/BT/AUDIO/SND1EXT.SCP @@ -0,0 +1,49 @@ +# +# External Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchext.scp + +# +# PPC_1 component +# +[include] +file=audio\glrcmpe.scp + +# PPC_1 watcher +[macro] +MechSubsystem=PPC_1 +[include] +file=audio\glrtrge.scp + +# PPC_2 watcher +[macro] +MechSubsystem=PPC_2 +[include] +file=audio\glrtrge.scp + +# PPC_3 watcher +[macro] +MechSubsystem=PPC_3 +[include] +file=audio\glrtrge.scp + +# +# AFC25 component +# +[include] +file=audio\acncmpe.scp + +# AFC25 watcher +[macro] +MechSubsystem=AFC25 +[include] +file=audio\acntrge.scp + +# ERSLaser watcher +[macro] +MechSubsystem=ERSLaser +[include] +file=audio\glrtrge.scp + diff --git a/CONTENT/BT/AUDIO/SND1INT.SCP b/CONTENT/BT/AUDIO/SND1INT.SCP new file mode 100644 index 0000000..7b2587c --- /dev/null +++ b/CONTENT/BT/AUDIO/SND1INT.SCP @@ -0,0 +1,85 @@ +# +# Internal Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchint.scp + +# +# PPC_1 component +# +[include] +file=audio\ppccmp.scp + +# PPC_1 watcher +[macro] +MechSubsystem=PPC_1 +[include] +file=audio\ppctrg.scp + +# PPC_2 watcher +[macro] +MechSubsystem=PPC_2 +[include] +file=audio\ppctrg.scp + +# PPC_3 watcher +[macro] +MechSubsystem=PPC_3 +[include] +file=audio\ppctrg.scp + +# +# AmmoBinAFC25 component +# +[include] +file=audio\abncmp.scp + +# AmmoBinAFC25 watcher +[macro] +MechSubsystem=AmmoBinAFC25 +[include] +file=audio\abntrg.scp + +# +# AFC25 component +# +[include] +file=audio\saccmp.scp + +# AFC25 watcher +[macro] +MechSubsystem=AFC25 +[include] +file=audio\sactrg.scp + +# +# ERSLaser component +# +[include] +file=audio\erscmp.scp + +# ERSLaser watcher +[macro] +MechSubsystem=ERSLaser +[include] +file=audio\erstrg.scp + +# AmmoBinLRM5 watcher +[macro] +MechSubsystem=AmmoBinLRM5 +[include] +file=audio\abntrg.scp + +# +# LRM5 component +# +[include] +file=audio\lrmcmp.scp + +# LRM5 watcher +[macro] +MechSubsystem=LRM5 +[include] +file=audio\lrmtrg.scp + diff --git a/CONTENT/BT/AUDIO/SND2EXT.SCP b/CONTENT/BT/AUDIO/SND2EXT.SCP new file mode 100644 index 0000000..6641dc4 --- /dev/null +++ b/CONTENT/BT/AUDIO/SND2EXT.SCP @@ -0,0 +1,73 @@ +# +# External Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchext.scp + +# +# PPC_1 component +# +[include] +file=audio\glrcmpe.scp + +# PPC_1 watcher +[macro] +MechSubsystem=PPC_1 +[include] +file=audio\glrtrge.scp + +# MLaser_1 watcher +[macro] +MechSubsystem=MLaser_1 +[include] +file=audio\glrtrge.scp + +# MLaser_2 watcher +[macro] +MechSubsystem=MLaser_2 +[include] +file=audio\glrtrge.scp + +# MLaser_3 watcher +[macro] +MechSubsystem=MLaser_3 +[include] +file=audio\glrtrge.scp + +# MLaser_4 watcher +[macro] +MechSubsystem=MLaser_4 +[include] +file=audio\glrtrge.scp + +# MLaser_5 watcher +[macro] +MechSubsystem=MLaser_5 +[include] +file=audio\glrtrge.scp + +# MLaser_6 watcher +[macro] +MechSubsystem=MLaser_6 +[include] +file=audio\glrtrge.scp + +# +# AFC25_1 component +# +[include] +file=audio\acncmpe.scp + +# AFC25_1 watcher +[macro] +MechSubsystem=AFC25_1 +[include] +file=audio\acntrge.scp + +# AFC25_2 watcher +[macro] +MechSubsystem=AFC25_2 +[include] +file=audio\acntrge.scp + diff --git a/CONTENT/BT/AUDIO/SND2INT.SCP b/CONTENT/BT/AUDIO/SND2INT.SCP new file mode 100644 index 0000000..4cdd750 --- /dev/null +++ b/CONTENT/BT/AUDIO/SND2INT.SCP @@ -0,0 +1,115 @@ +# +# Internal Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchint.scp + +# +# PPC_1 component +# +[include] +file=audio\eppcmp.scp + +# PPC_1 watcher +[macro] +MechSubsystem=PPC_1 +[include] +file=audio\epptrg.scp + +# +# MLaser_1 component +# +[include] +file=audio\ermcmp.scp + +# MLaser_1 watcher +[macro] +MechSubsystem=MLaser_1 +[include] +file=audio\ermtrg.scp + +# MLaser_2 watcher +[macro] +MechSubsystem=MLaser_2 +[include] +file=audio\ermtrg.scp + +# MLaser_3 watcher +[macro] +MechSubsystem=MLaser_3 +[include] +file=audio\ermtrg.scp + +# MLaser_4 watcher +[macro] +MechSubsystem=MLaser_4 +[include] +file=audio\ermtrg.scp + +# MLaser_5 watcher +[macro] +MechSubsystem=MLaser_5 +[include] +file=audio\ermtrg.scp + +# MLaser_6 watcher +[macro] +MechSubsystem=MLaser_6 +[include] +file=audio\ermtrg.scp + +# +# AmmoBinAFC25_1 component +# +[include] +file=audio\abncmp.scp + +# AmmoBinAFC25_1 watcher +[macro] +MechSubsystem=AmmoBinAFC25_1 +[include] +file=audio\abntrg.scp + +# +# AFC25_1 component +# +[include] +file=audio\saccmp.scp + +# AFC25_1 watcher +[macro] +MechSubsystem=AFC25_1 +[include] +file=audio\sactrg.scp + +# AmmoBinAFC25_2 watcher +[macro] +MechSubsystem=AmmoBinAFC25_2 +[include] +file=audio\abntrg.scp + +# AFC25_2 watcher +[macro] +MechSubsystem=AFC25_2 +[include] +file=audio\sactrg.scp + +# AmmoBinSRM6 watcher +[macro] +MechSubsystem=AmmoBinSRM6 +[include] +file=audio\abntrg.scp + +# +# SRM6 component +# +[include] +file=audio\srmcmp.scp + +# SRM6 watcher +[macro] +MechSubsystem=SRM6 +[include] +file=audio\srmtrg.scp + diff --git a/CONTENT/BT/AUDIO/SNDEXT.SCP b/CONTENT/BT/AUDIO/SNDEXT.SCP new file mode 100644 index 0000000..83b0955 --- /dev/null +++ b/CONTENT/BT/AUDIO/SNDEXT.SCP @@ -0,0 +1,67 @@ +# +# External Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchext.scp + +# +# AFC25 component +# +[include] +file=audio\acncmpe.scp + +# AFC25 watcher +[macro] +MechSubsystem=AFC25 +[include] +file=audio\acntrge.scp + +# AFC100 watcher +[macro] +MechSubsystem=AFC100 +[include] +file=audio\acntrge.scp + +# +# ERMLaser_1 component +# +[include] +file=audio\glrcmpe.scp + +# ERMLaser_1 watcher +[macro] +MechSubsystem=ERMLaser_1 +[include] +file=audio\glrtrge.scp + +# ERMLaser_2 watcher +[macro] +MechSubsystem=ERMLaser_2 +[include] +file=audio\glrtrge.scp + +# ERSLaser_1 watcher +[macro] +MechSubsystem=ERSLaser_1 +[include] +file=audio\glrtrge.scp + +# ERSLaser_2 watcher +[macro] +MechSubsystem=ERSLaser_2 +[include] +file=audio\glrtrge.scp + +# MLaser_1 watcher +[macro] +MechSubsystem=MLaser_1 +[include] +file=audio\glrtrge.scp + +# MLaser_2 watcher +[macro] +MechSubsystem=MLaser_2 +[include] +file=audio\glrtrge.scp + diff --git a/CONTENT/BT/AUDIO/SNDINT.SCP b/CONTENT/BT/AUDIO/SNDINT.SCP new file mode 100644 index 0000000..019ae67 --- /dev/null +++ b/CONTENT/BT/AUDIO/SNDINT.SCP @@ -0,0 +1,121 @@ +# +# Internal Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchint.scp + +# +# AmmoBinAFC25 component +# +[include] +file=audio\abncmp.scp + +# AmmoBinAFC25 watcher +[macro] +MechSubsystem=AmmoBinAFC25 +[include] +file=audio\abntrg.scp + +# +# AFC25 component +# +[include] +file=audio\saccmp.scp + +# AFC25 watcher +[macro] +MechSubsystem=AFC25 +[include] +file=audio\sactrg.scp + +# AmmoBinAFC100 watcher +[macro] +MechSubsystem=AmmoBinAFC100 +[include] +file=audio\abntrg.scp + +# +# AFC100 component +# +[include] +file=audio\laccmp.scp + +# AFC100 watcher +[macro] +MechSubsystem=AFC100 +[include] +file=audio\lactrg.scp + +# +# ERMLaser_1 component +# +[include] +file=audio\ermcmp.scp + +# ERMLaser_1 watcher +[macro] +MechSubsystem=ERMLaser_1 +[include] +file=audio\ermtrg.scp + +# ERMLaser_2 watcher +[macro] +MechSubsystem=ERMLaser_2 +[include] +file=audio\ermtrg.scp + +# +# ERSLaser_1 component +# +[include] +file=audio\erscmp.scp + +# ERSLaser_1 watcher +[macro] +MechSubsystem=ERSLaser_1 +[include] +file=audio\erstrg.scp + +# ERSLaser_2 watcher +[macro] +MechSubsystem=ERSLaser_2 +[include] +file=audio\erstrg.scp + +# +# MLaser_1 component +# +[include] +file=audio\mlrcmp.scp + +# MLaser_1 watcher +[macro] +MechSubsystem=MLaser_1 +[include] +file=audio\mlrtrg.scp + +# MLaser_2 watcher +[macro] +MechSubsystem=MLaser_2 +[include] +file=audio\mlrtrg.scp + +# AmmoBinLRM10 watcher +[macro] +MechSubsystem=AmmoBinLRM10 +[include] +file=audio\abntrg.scp + +# +# LRM10 component +# +[include] +file=audio\lrmcmp.scp + +# LRM10 watcher +[macro] +MechSubsystem=LRM10 +[include] +file=audio\lrmtrg.scp + diff --git a/CONTENT/BT/AUDIO/SNRTRG.SCP b/CONTENT/BT/AUDIO/SNRTRG.SCP new file mode 100644 index 0000000..565b4be --- /dev/null +++ b/CONTENT/BT/AUDIO/SNRTRG.SCP @@ -0,0 +1,12 @@ +# +################################################################### +# Sensor Audio Script +################################################################### +# + +[include] +file=audio\buttrg.scp +file=audio\dsttrg.scp +file=audio\clttrg.scp + + diff --git a/CONTENT/BT/AUDIO/SRMCMP.SCP b/CONTENT/BT/AUDIO/SRMCMP.SCP new file mode 100644 index 0000000..beb0646 --- /dev/null +++ b/CONTENT/BT/AUDIO/SRMCMP.SCP @@ -0,0 +1,33 @@ +# +################################################################### +# SRM Audio Script +################################################################### +# + +[macro] +MissileFireResource=MissileLaunch01 +MissileFirePitchOffset=100 +MissileFireComponent=SRMFireComponent +# +MissileLoadingResource=MissileLoading01 +MissileLoadingComponent=SRMLoadingComponent +# +MissileLoadedResource=MissileLoaded01 +MissileLoadedComponent=SRMLoadedComponent +MissileLoadedSequence=SRMLoadedSequence +# +MissileTriggerDuringLoadResource=TriggerDuringLoad01 +MissileTriggerDuringLoadComponent=SRMTriggerDuringLoadComponent +# +MissileMisfireResource=MissileMisfire01 +MissileMisfireComponent=SRMMisfireComponent +MissileMisfireSequence=SRMMisfireSequence +# +MissileJamResource=MissileJam01 +MissileJamComponent=SRMJamComponent +MissileJamSequence=SRMJamSequence + +[include] +file=audio\mslcmp.scp + + diff --git a/CONTENT/BT/AUDIO/SRMTRG.SCP b/CONTENT/BT/AUDIO/SRMTRG.SCP new file mode 100644 index 0000000..d3e2639 --- /dev/null +++ b/CONTENT/BT/AUDIO/SRMTRG.SCP @@ -0,0 +1,12 @@ +# +################################################################### +# SRM Internal Audio Script +################################################################### +# + +[include] +file=audio\msltrg.scp +file=audio\clttrg.scp +file=audio\buttrg.scp +file=audio\dsttrg.scp + diff --git a/CONTENT/BT/AUDIO/STATIC.SCP b/CONTENT/BT/AUDIO/STATIC.SCP new file mode 100644 index 0000000..bc91d7b --- /dev/null +++ b/CONTENT/BT/AUDIO/STATIC.SCP @@ -0,0 +1,14 @@ +# +#------------------------------------------------------------------ +# Static audio resources +#------------------------------------------------------------------ +# + +[include] +file=audio\macros.scp +file=audio\static1.scp +file=audio\static2.scp +file=audio\static3.scp +file=audio\static4.scp + + diff --git a/CONTENT/BT/AUDIO/STIEXT.SCP b/CONTENT/BT/AUDIO/STIEXT.SCP new file mode 100644 index 0000000..ba8b799 --- /dev/null +++ b/CONTENT/BT/AUDIO/STIEXT.SCP @@ -0,0 +1,37 @@ +# +# External Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchext.scp + +# +# ERMLaser_1 component +# +[include] +file=audio\glrcmpe.scp + +# ERMLaser_1 watcher +[macro] +MechSubsystem=ERMLaser_1 +[include] +file=audio\glrtrge.scp + +# ERMLaser_2 watcher +[macro] +MechSubsystem=ERMLaser_2 +[include] +file=audio\glrtrge.scp + +# +# GAUSS component +# +[include] +file=audio\acncmpe.scp + +# GAUSS watcher +[macro] +MechSubsystem=GAUSS +[include] +file=audio\acntrge.scp + diff --git a/CONTENT/BT/AUDIO/STIINT.SCP b/CONTENT/BT/AUDIO/STIINT.SCP new file mode 100644 index 0000000..99cfabd --- /dev/null +++ b/CONTENT/BT/AUDIO/STIINT.SCP @@ -0,0 +1,79 @@ +# +# Internal Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchint.scp + +# +# ERMLaser_1 component +# +[include] +file=audio\ermcmp.scp + +# ERMLaser_1 watcher +[macro] +MechSubsystem=ERMLaser_1 +[include] +file=audio\ermtrg.scp + +# ERMLaser_2 watcher +[macro] +MechSubsystem=ERMLaser_2 +[include] +file=audio\ermtrg.scp + +# +# AmmoBinSRM6_1 component +# +[include] +file=audio\abncmp.scp + +# AmmoBinSRM6_1 watcher +[macro] +MechSubsystem=AmmoBinSRM6_1 +[include] +file=audio\abntrg.scp + +# +# SRM6_1 component +# +[include] +file=audio\srmcmp.scp + +# SRM6_1 watcher +[macro] +MechSubsystem=SRM6_1 +[include] +file=audio\srmtrg.scp + +# AmmoBinSRM6_2 watcher +[macro] +MechSubsystem=AmmoBinSRM6_2 +[include] +file=audio\abntrg.scp + +# SRM6_2 watcher +[macro] +MechSubsystem=SRM6_2 +[include] +file=audio\srmtrg.scp + +# AmmoBinGAUSS watcher +[macro] +MechSubsystem=AmmoBinGAUSS +[include] +file=audio\abntrg.scp + +# +# GAUSS component +# +[include] +file=audio\saccmp.scp + +# GAUSS watcher +[macro] +MechSubsystem=GAUSS +[include] +file=audio\sactrg.scp + diff --git a/CONTENT/BT/AUDIO/SYMBOLS.SCP b/CONTENT/BT/AUDIO/SYMBOLS.SCP new file mode 100644 index 0000000..1fd6ae6 --- /dev/null +++ b/CONTENT/BT/AUDIO/SYMBOLS.SCP @@ -0,0 +1,127 @@ +[macro] +BoxedSolid::StoneMaterial=0 +BoxedSolid::GravelMaterial=1 +BoxedSolid::ConcreteMaterial=2 +BoxedSolid::WoodMaterial=4 +BoxedSolid::RockMaterial=5 +BoxedSolid::OurCraftMaterial=6 +BoxedSolid::OtherCraftMaterial=7 +TransientAudioRenderType=0 +SustainedAudioRenderType=1 +MinAudioSourcePriority=0 +LowAudioSourcePriority=1 +MedAudioSourcePriority=2 +HighAudioSourcePriority=3 +MaxAudioSourcePriority=4 +MinAudioSourceMixPresence=5 +LowAudioSourceMixPresence=4 +MedAudioSourceMixPresence=3 +HighAudioSourceMixPresence=2 +MaxAudioSourceMixPresence=1 +ManualAudioSourceMixPresence=0 +NullAudioControlID=0 +NoteAudioControlID=8 +AttackVolumeAudioControlID=6 +AttackTimeAudioControlID=7 +DurationAudioControlID=10 +VolumeAudioControlID=3 +PitchAudioControlID=4 +BrightnessAudioControlID=5 +StartAudioControlID=1 +StopAudioControlID=2 +IdleAudioControlID=9 +FlushMessagesAudioControlID=11 +TempoAudioControlID=12 +FrontDirectPatchPosition=0 +RearDirectPatchPosition=1 +FrontLeftDirectPatchPosition=2 +FrontRightDirectPatchPosition=3 +RearLeftDirectPatchPosition=4 +RearRightDirectPatchPosition=5 +BTPlayer::VehicleTranslocatedState=2 +BTPlayer::MissionStartingState=3 +BTPlayer::DropZoneAcquiredState=1 +Mech::BurningState=2 +Mech::NoCollisionState=0 +Mech::InitialHitState=1 +Mech::RestState=2 +Mech::StandingAnimation=0 +Mech::RightStandToWalkAnimation=5 +Mech::RightWalkForwardAnimation=6 +Mech::LeftWalkForwardAnimation=7 +Mech::RightWalkToStandAnimation=8 +Mech::LeftWalkToStandAnimation=9 +Mech::RightWalkToRunAnimation=10 +Mech::LeftWalkToRunAnimation=11 +Mech::RightRunAnimation=12 +Mech::LeftRunAnimation=13 +Mech::RightRunToWalkAnimation=14 +Mech::LeftRunToWalkAnimation=15 +Mech::RightStandToReverseAnimation=16 +Mech::LeftStandToReverseAnimation=17 +Mech::RightReverseAnimation=18 +Mech::LeftReverseAnimation=19 +Mech::RightReverseToStandAnimation=20 +Mech::LeftReverseToStandAnimation=21 +Mech::LeftWalkToGimpAnimation=22 +Mech::RightWalkToGimpAnimation=23 +Mech::LeftGimpAnimation=24 +Mech::RightGimpAnimation=25 +Mech::LeftGimpToStandAnimation=26 +Mech::RightGimpToStandAnimation=27 +Mech::FallForwardAnimation=28 +Mech::FallBackwardAnimation=29 +Mech::FallLeftAnimation=30 +Mech::FallRightAnimation=31 +Mech::CrashAnimation=32 +Mech::DuckedAnimation=1 +Mech::SitAnimation=2 +Mech::GimpLeftLegState=3 +Mech::GimpRightLegState=4 +MechSubsystem::Destroyed=1 +PoweredSubsystem::SelectGeneratorAMessageID=4 +PoweredSubsystem::SelectGeneratorBMessageID=5 +PoweredSubsystem::SelectGeneratorCMessageID=6 +PoweredSubsystem::SelectGeneratorDMessageID=7 +PoweredSubsystem::ToggleGeneratorModeMessageID=8 +HeatableSubsystem::ToggleCoolingMessageID=3 +Reservoir::InjectCoolantMessageID=4 +Reservoir::InjectingState=1 +Condenser::MoveValveMessageID=4 +Condenser::OpeningCondenserState=1 +Condenser::ClosingCondenserState=2 +Generator::Off=1 +Generator::Running=2 +Generator::Overheated=4 +Torso::HitExtent=2 +MechControlsMapper::Aux1Eng1MessageID=4 +MechControlsMapper::Aux1Eng2MessageID=5 +MechControlsMapper::Aux1Eng3MessageID=6 +MechControlsMapper::Aux1Eng4MessageID=7 +MechControlsMapper::Aux1QuadMessageID=3 +MechControlsMapper::Aux2Eng1MessageID=9 +MechControlsMapper::Aux2Eng2MessageID=10 +MechControlsMapper::Aux2Eng3MessageID=11 +MechControlsMapper::Aux2Eng4MessageID=12 +MechControlsMapper::Aux2QuadMessageID=8 +MechControlsMapper::Aux3Eng1MessageID=14 +MechControlsMapper::Aux3Eng2MessageID=15 +MechControlsMapper::Aux3Eng3MessageID=16 +MechControlsMapper::Aux3Eng4MessageID=17 +MechControlsMapper::Aux3QuadMessageID=13 +MechControlsMapper::CycleControlModeMessageID=20 +MechRIOMapper::HotboxMessageID=26 +Myomers::ToggleSeekVoltageMessageID=9 +MechWeapon::Firing=0 +MechWeapon::Misfire=1 +MechWeapon::Loaded=2 +MechWeapon::Loading=3 +MechWeapon::TriggerDuringLoad=4 +AmmoBin::Ejecting=3 +AmmoBin::Ejected=4 +AmmoBin::AmmoDumped=5 +ProjectileWeapon::NoAmmo=7 +ProjectileWeapon::Jammed=5 +ProjectileWeapon::TriggerDuringJam=6 +Emitter::ToggleSeekVoltageMessageID=11 +ProjectileWeapon::EjectAmmoMessageID=11 diff --git a/CONTENT/BT/AUDIO/THR1EXT.SCP b/CONTENT/BT/AUDIO/THR1EXT.SCP new file mode 100644 index 0000000..aa0f595 --- /dev/null +++ b/CONTENT/BT/AUDIO/THR1EXT.SCP @@ -0,0 +1,67 @@ +# +# External Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchext.scp + +# +# AFC25_1 component +# +[include] +file=audio\acncmpe.scp + +# AFC25_1 watcher +[macro] +MechSubsystem=AFC25_1 +[include] +file=audio\acntrge.scp + +# AFC25_2 watcher +[macro] +MechSubsystem=AFC25_2 +[include] +file=audio\acntrge.scp + +# +# LLaser_1 component +# +[include] +file=audio\glrcmpe.scp + +# LLaser_1 watcher +[macro] +MechSubsystem=LLaser_1 +[include] +file=audio\glrtrge.scp + +# LLaser_2 watcher +[macro] +MechSubsystem=LLaser_2 +[include] +file=audio\glrtrge.scp + +# ERSLaser_1 watcher +[macro] +MechSubsystem=ERSLaser_1 +[include] +file=audio\glrtrge.scp + +# ERSLaser_2 watcher +[macro] +MechSubsystem=ERSLaser_2 +[include] +file=audio\glrtrge.scp + +# ERSLaser_3 watcher +[macro] +MechSubsystem=ERSLaser_3 +[include] +file=audio\glrtrge.scp + +# ERSLaser_4 watcher +[macro] +MechSubsystem=ERSLaser_4 +[include] +file=audio\glrtrge.scp + diff --git a/CONTENT/BT/AUDIO/THR1INT.SCP b/CONTENT/BT/AUDIO/THR1INT.SCP new file mode 100644 index 0000000..0427a14 --- /dev/null +++ b/CONTENT/BT/AUDIO/THR1INT.SCP @@ -0,0 +1,109 @@ +# +# Internal Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchint.scp + +# +# AmmoBinAFC25_1 component +# +[include] +file=audio\abncmp.scp + +# AmmoBinAFC25_1 watcher +[macro] +MechSubsystem=AmmoBinAFC25_1 +[include] +file=audio\abntrg.scp + +# +# AFC25_1 component +# +[include] +file=audio\saccmp.scp + +# AFC25_1 watcher +[macro] +MechSubsystem=AFC25_1 +[include] +file=audio\sactrg.scp + +# AmmoBinAFC25_2 watcher +[macro] +MechSubsystem=AmmoBinAFC25_2 +[include] +file=audio\abntrg.scp + +# AFC25_2 watcher +[macro] +MechSubsystem=AFC25_2 +[include] +file=audio\sactrg.scp + +# +# LLaser_1 component +# +[include] +file=audio\llrcmp.scp + +# LLaser_1 watcher +[macro] +MechSubsystem=LLaser_1 +[include] +file=audio\llrtrg.scp + +# LLaser_2 watcher +[macro] +MechSubsystem=LLaser_2 +[include] +file=audio\llrtrg.scp + +# +# ERSLaser_1 component +# +[include] +file=audio\erscmp.scp + +# ERSLaser_1 watcher +[macro] +MechSubsystem=ERSLaser_1 +[include] +file=audio\erstrg.scp + +# ERSLaser_2 watcher +[macro] +MechSubsystem=ERSLaser_2 +[include] +file=audio\erstrg.scp + +# ERSLaser_3 watcher +[macro] +MechSubsystem=ERSLaser_3 +[include] +file=audio\erstrg.scp + +# ERSLaser_4 watcher +[macro] +MechSubsystem=ERSLaser_4 +[include] +file=audio\erstrg.scp + +# AmmoBinLRM10 watcher +[macro] +MechSubsystem=AmmoBinLRM10 +[include] +file=audio\abntrg.scp + +# +# LRM10 component +# +[include] +file=audio\lrmcmp.scp + +# LRM10 watcher +[macro] +MechSubsystem=LRM10 +[include] +file=audio\lrmtrg.scp + diff --git a/CONTENT/BT/AUDIO/THR6EXT.SCP b/CONTENT/BT/AUDIO/THR6EXT.SCP new file mode 100644 index 0000000..9d07691 --- /dev/null +++ b/CONTENT/BT/AUDIO/THR6EXT.SCP @@ -0,0 +1,73 @@ +# +# External Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchext.scp + +# +# ERPPC component +# +[include] +file=audio\glrcmpe.scp + +# ERPPC watcher +[macro] +MechSubsystem=ERPPC +[include] +file=audio\glrtrge.scp + +# ERLLaser watcher +[macro] +MechSubsystem=ERLLaser +[include] +file=audio\glrtrge.scp + +# ERMLaser_1 watcher +[macro] +MechSubsystem=ERMLaser_1 +[include] +file=audio\glrtrge.scp + +# ERMLaser_2 watcher +[macro] +MechSubsystem=ERMLaser_2 +[include] +file=audio\glrtrge.scp + +# +# MG_1 component +# +[include] +file=audio\acncmpe.scp + +# MG_1 watcher +[macro] +MechSubsystem=MG_1 +[include] +file=audio\acntrge.scp + +# MG_2 watcher +[macro] +MechSubsystem=MG_2 +[include] +file=audio\acntrge.scp + +# MG_3 watcher +[macro] +MechSubsystem=MG_3 +[include] +file=audio\acntrge.scp + +# MG_4 watcher +[macro] +MechSubsystem=MG_4 +[include] +file=audio\acntrge.scp + +# MG_5 watcher +[macro] +MechSubsystem=MG_5 +[include] +file=audio\acntrge.scp + diff --git a/CONTENT/BT/AUDIO/THR6INT.SCP b/CONTENT/BT/AUDIO/THR6INT.SCP new file mode 100644 index 0000000..04eede1 --- /dev/null +++ b/CONTENT/BT/AUDIO/THR6INT.SCP @@ -0,0 +1,139 @@ +# +# Internal Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchint.scp + +# +# ERPPC component +# +[include] +file=audio\eppcmp.scp + +# ERPPC watcher +[macro] +MechSubsystem=ERPPC +[include] +file=audio\epptrg.scp + +# +# ERLLaser component +# +[include] +file=audio\erlcmp.scp + +# ERLLaser watcher +[macro] +MechSubsystem=ERLLaser +[include] +file=audio\erltrg.scp + +# +# ERMLaser_1 component +# +[include] +file=audio\ermcmp.scp + +# ERMLaser_1 watcher +[macro] +MechSubsystem=ERMLaser_1 +[include] +file=audio\ermtrg.scp + +# ERMLaser_2 watcher +[macro] +MechSubsystem=ERMLaser_2 +[include] +file=audio\ermtrg.scp + +# +# AmmoBinMG_1 component +# +[include] +file=audio\abncmp.scp + +# AmmoBinMG_1 watcher +[macro] +MechSubsystem=AmmoBinMG_1 +[include] +file=audio\abntrg.scp + +# +# MG_1 component +# +[include] +file=audio\saccmp.scp + +# MG_1 watcher +[macro] +MechSubsystem=MG_1 +[include] +file=audio\sactrg.scp + +# AmmoBinMG_2 watcher +[macro] +MechSubsystem=AmmoBinMG_2 +[include] +file=audio\abntrg.scp + +# MG_2 watcher +[macro] +MechSubsystem=MG_2 +[include] +file=audio\sactrg.scp + +# AmmoBinMG_3 watcher +[macro] +MechSubsystem=AmmoBinMG_3 +[include] +file=audio\abntrg.scp + +# MG_3 watcher +[macro] +MechSubsystem=MG_3 +[include] +file=audio\sactrg.scp + +# AmmoBinMG_4 watcher +[macro] +MechSubsystem=AmmoBinMG_4 +[include] +file=audio\abntrg.scp + +# MG_4 watcher +[macro] +MechSubsystem=MG_4 +[include] +file=audio\sactrg.scp + +# AmmoBinMG_5 watcher +[macro] +MechSubsystem=AmmoBinMG_5 +[include] +file=audio\abntrg.scp + +# MG_5 watcher +[macro] +MechSubsystem=MG_5 +[include] +file=audio\sactrg.scp + +# AmmoBinNRK10 watcher +[macro] +MechSubsystem=AmmoBinNRK10 +[include] +file=audio\abntrg.scp + +# +# NRK10 component +# +[include] +file=audio\lrmcmp.scp + +# NRK10 watcher +[macro] +MechSubsystem=NRK10 +[include] +file=audio\lrmtrg.scp + diff --git a/CONTENT/BT/AUDIO/THREXT.SCP b/CONTENT/BT/AUDIO/THREXT.SCP new file mode 100644 index 0000000..10e84bf --- /dev/null +++ b/CONTENT/BT/AUDIO/THREXT.SCP @@ -0,0 +1,49 @@ +# +# External Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchext.scp + +# +# ERPPC_1 component +# +[include] +file=audio\glrcmpe.scp + +# ERPPC_1 watcher +[macro] +MechSubsystem=ERPPC_1 +[include] +file=audio\glrtrge.scp + +# ERPPC_2 watcher +[macro] +MechSubsystem=ERPPC_2 +[include] +file=audio\glrtrge.scp + +# LLaser watcher +[macro] +MechSubsystem=LLaser +[include] +file=audio\glrtrge.scp + +# ERMLaser watcher +[macro] +MechSubsystem=ERMLaser +[include] +file=audio\glrtrge.scp + +# ERSLaser_1 watcher +[macro] +MechSubsystem=ERSLaser_1 +[include] +file=audio\glrtrge.scp + +# ERSLaser_2 watcher +[macro] +MechSubsystem=ERSLaser_2 +[include] +file=audio\glrtrge.scp + diff --git a/CONTENT/BT/AUDIO/THRINT.SCP b/CONTENT/BT/AUDIO/THRINT.SCP new file mode 100644 index 0000000..c58f08c --- /dev/null +++ b/CONTENT/BT/AUDIO/THRINT.SCP @@ -0,0 +1,91 @@ +# +# Internal Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchint.scp + +# +# ERPPC_1 component +# +[include] +file=audio\eppcmp.scp + +# ERPPC_1 watcher +[macro] +MechSubsystem=ERPPC_1 +[include] +file=audio\epptrg.scp + +# ERPPC_2 watcher +[macro] +MechSubsystem=ERPPC_2 +[include] +file=audio\epptrg.scp + +# +# LLaser component +# +[include] +file=audio\llrcmp.scp + +# LLaser watcher +[macro] +MechSubsystem=LLaser +[include] +file=audio\llrtrg.scp + +# +# ERMLaser component +# +[include] +file=audio\ermcmp.scp + +# ERMLaser watcher +[macro] +MechSubsystem=ERMLaser +[include] +file=audio\ermtrg.scp + +# +# ERSLaser_1 component +# +[include] +file=audio\erscmp.scp + +# ERSLaser_1 watcher +[macro] +MechSubsystem=ERSLaser_1 +[include] +file=audio\erstrg.scp + +# ERSLaser_2 watcher +[macro] +MechSubsystem=ERSLaser_2 +[include] +file=audio\erstrg.scp + +# +# AmmoBinLRM15 component +# +[include] +file=audio\abncmp.scp + +# AmmoBinLRM15 watcher +[macro] +MechSubsystem=AmmoBinLRM15 +[include] +file=audio\abntrg.scp + +# +# LRM15 component +# +[include] +file=audio\lrmcmp.scp + +# LRM15 watcher +[macro] +MechSubsystem=LRM15 +[include] +file=audio\lrmtrg.scp + diff --git a/CONTENT/BT/AUDIO/TRSEXT.SCP b/CONTENT/BT/AUDIO/TRSEXT.SCP new file mode 100644 index 0000000..c056b05 --- /dev/null +++ b/CONTENT/BT/AUDIO/TRSEXT.SCP @@ -0,0 +1,52 @@ +# +################################################################### +# Mech External Torso component +################################################################### +# + +[!Dynamic3DPatchSource] +location=OriginLocation +resource=TorsoTwistExt01 +priority=0 +mix_presence=0 +volume_mix_level=TorsoTwistExternalVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=True +use_attack_time_scale=False +has_compression_curve=False +compression_duration=0.0 +name=TorsoTwistExternalComponent + +#------------------------------------------------------------------ + +# +# torso speed -> pitch +# + +[!AudioScalarScale] +subsystem=Torso +attribute=SpeedOfTorsoHorizontal +audio_component=TorsoTwistExternalComponent +attribute_value_boundary1=0.5 +attribute_value_boundary2=0.9 +control_ID=PitchAudioControlID +control_value_boundary1=-200 +control_value_boundary2=200 +exponent=1.0 +dump_value=False + +#------------------------------------------------------------------ + +[!AudioScalarTrigger] +subsystem=Torso +attribute=SpeedOfTorsoHorizontal +audio_component=TorsoTwistExternalComponent +attribute_value_threshold=0.2 +control_ID_on=StartAudioControlID +control_ID_off=StopAudioControlID +control_value_on=0.0 +control_value_off=0.0 +inverse_trigger=False +dump_value=False + diff --git a/CONTENT/BT/AUDIO/TRSINT.SCP b/CONTENT/BT/AUDIO/TRSINT.SCP new file mode 100644 index 0000000..e52d995 --- /dev/null +++ b/CONTENT/BT/AUDIO/TRSINT.SCP @@ -0,0 +1,85 @@ +# +################################################################### +# Mech Internal Torso component +################################################################### +# + +[DirectPatchSource] +location=OriginLocation +resource=TorsoTwistInt01 +position=RearDirectPatchPosition +priority=2 +mix_presence=0 +volume_mix_level=TorsoTwistStartVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=True +use_attack_time_scale=False +has_compression_curve=False +compression_duration=0.0 +name=TosoTwistStartComponent + +#------------------------------------------------------------------ + +# +# torso speed -> pitch +# + +[AudioScalarScale] +subsystem=Torso +attribute=SpeedOfTorsoHorizontal +audio_component=TosoTwistStartComponent +attribute_value_boundary1=0.5 +attribute_value_boundary2=0.9 +control_ID=PitchAudioControlID +control_value_boundary1=-200 +control_value_boundary2=200 +exponent=1.0 +dump_value=False + +#------------------------------------------------------------------ + +[AudioScalarTrigger] +subsystem=Torso +attribute=SpeedOfTorsoHorizontal +audio_component=TosoTwistStartComponent +attribute_value_threshold=0.25 +control_ID_on=StartAudioControlID +control_ID_off=StopAudioControlID +control_value_on=0.0 +control_value_off=0.0 +inverse_trigger=False +dump_value=False + +# +################################################################### +# Mech Internal TorsoStop component +################################################################### +# + +[DirectPatchSource] +location=OriginLocation +resource=TorsoTwistStop01 +position=RearDirectPatchPosition +priority=2 +mix_presence=0 +volume_mix_level=TorsoTwistStopVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=True +use_attack_time_scale=False +has_compression_curve=False +compression_duration=0.0 +name=TorsoTwistStopComponent + +#------------------------------------------------------------------ + +[AudioEnumerationTrigger] +subsystem=Torso +attribute=MotionState +audio_component=TorsoTwistStopComponent +attribute_match_value=Torso::HitExtent +control_ID=StartAudioControlID +control_value=1.5 +dump_value=False + diff --git a/CONTENT/BT/AUDIO/VUL1EXT.SCP b/CONTENT/BT/AUDIO/VUL1EXT.SCP new file mode 100644 index 0000000..a4b7f3f --- /dev/null +++ b/CONTENT/BT/AUDIO/VUL1EXT.SCP @@ -0,0 +1,49 @@ +# +# External Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchext.scp + +# +# PPC_1 component +# +[include] +file=audio\glrcmpe.scp + +# PPC_1 watcher +[macro] +MechSubsystem=PPC_1 +[include] +file=audio\glrtrge.scp + +# PPC_2 watcher +[macro] +MechSubsystem=PPC_2 +[include] +file=audio\glrtrge.scp + +# ERSLaser_1 watcher +[macro] +MechSubsystem=ERSLaser_1 +[include] +file=audio\glrtrge.scp + +# ERSLaser_2 watcher +[macro] +MechSubsystem=ERSLaser_2 +[include] +file=audio\glrtrge.scp + +# ERSLaser_3 watcher +[macro] +MechSubsystem=ERSLaser_3 +[include] +file=audio\glrtrge.scp + +# ERSLaser_4 watcher +[macro] +MechSubsystem=ERSLaser_4 +[include] +file=audio\glrtrge.scp + diff --git a/CONTENT/BT/AUDIO/VUL1INT.SCP b/CONTENT/BT/AUDIO/VUL1INT.SCP new file mode 100644 index 0000000..922879c --- /dev/null +++ b/CONTENT/BT/AUDIO/VUL1INT.SCP @@ -0,0 +1,91 @@ +# +# Internal Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchint.scp + +# +# PPC_1 component +# +[include] +file=audio\ppccmp.scp + +# PPC_1 watcher +[macro] +MechSubsystem=PPC_1 +[include] +file=audio\ppctrg.scp + +# PPC_2 watcher +[macro] +MechSubsystem=PPC_2 +[include] +file=audio\ppctrg.scp + +# +# ERSLaser_1 component +# +[include] +file=audio\erscmp.scp + +# ERSLaser_1 watcher +[macro] +MechSubsystem=ERSLaser_1 +[include] +file=audio\erstrg.scp + +# ERSLaser_2 watcher +[macro] +MechSubsystem=ERSLaser_2 +[include] +file=audio\erstrg.scp + +# ERSLaser_3 watcher +[macro] +MechSubsystem=ERSLaser_3 +[include] +file=audio\erstrg.scp + +# ERSLaser_4 watcher +[macro] +MechSubsystem=ERSLaser_4 +[include] +file=audio\erstrg.scp + +# +# AmmoBinLRM15_1 component +# +[include] +file=audio\abncmp.scp + +# AmmoBinLRM15_1 watcher +[macro] +MechSubsystem=AmmoBinLRM15_1 +[include] +file=audio\abntrg.scp + +# +# LRM15_1 component +# +[include] +file=audio\lrmcmp.scp + +# LRM15_1 watcher +[macro] +MechSubsystem=LRM15_1 +[include] +file=audio\lrmtrg.scp + +# AmmoBinLRM15_2 watcher +[macro] +MechSubsystem=AmmoBinLRM15_2 +[include] +file=audio\abntrg.scp + +# LRM15_2 watcher +[macro] +MechSubsystem=LRM15_2 +[include] +file=audio\lrmtrg.scp + diff --git a/CONTENT/BT/AUDIO/VUL2EXT.SCP b/CONTENT/BT/AUDIO/VUL2EXT.SCP new file mode 100644 index 0000000..10acd2d --- /dev/null +++ b/CONTENT/BT/AUDIO/VUL2EXT.SCP @@ -0,0 +1,37 @@ +# +# External Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchext.scp + +# +# SLaser_1 component +# +[include] +file=audio\glrcmpe.scp + +# SLaser_1 watcher +[macro] +MechSubsystem=SLaser_1 +[include] +file=audio\glrtrge.scp + +# SLaser_2 watcher +[macro] +MechSubsystem=SLaser_2 +[include] +file=audio\glrtrge.scp + +# SLaser_3 watcher +[macro] +MechSubsystem=SLaser_3 +[include] +file=audio\glrtrge.scp + +# SLaser_4 watcher +[macro] +MechSubsystem=SLaser_4 +[include] +file=audio\glrtrge.scp + diff --git a/CONTENT/BT/AUDIO/VUL2INT.SCP b/CONTENT/BT/AUDIO/VUL2INT.SCP new file mode 100644 index 0000000..4b8e8b3 --- /dev/null +++ b/CONTENT/BT/AUDIO/VUL2INT.SCP @@ -0,0 +1,121 @@ +# +# Internal Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchint.scp + +# +# SLaser_1 component +# +[include] +file=audio\slrcmp.scp + +# SLaser_1 watcher +[macro] +MechSubsystem=SLaser_1 +[include] +file=audio\slrtrg.scp + +# SLaser_2 watcher +[macro] +MechSubsystem=SLaser_2 +[include] +file=audio\slrtrg.scp + +# SLaser_3 watcher +[macro] +MechSubsystem=SLaser_3 +[include] +file=audio\slrtrg.scp + +# SLaser_4 watcher +[macro] +MechSubsystem=SLaser_4 +[include] +file=audio\slrtrg.scp + +# +# AmmoBinSTRK6_1 component +# +[include] +file=audio\abncmp.scp + +# AmmoBinSTRK6_1 watcher +[macro] +MechSubsystem=AmmoBinSTRK6_1 +[include] +file=audio\abntrg.scp + +# +# STRK6_1 component +# +[include] +file=audio\srmcmp.scp + +# STRK6_1 watcher +[macro] +MechSubsystem=STRK6_1 +[include] +file=audio\srmtrg.scp + +# AmmoBinSTRK6_2 watcher +[macro] +MechSubsystem=AmmoBinSTRK6_2 +[include] +file=audio\abntrg.scp + +# STRK6_2 watcher +[macro] +MechSubsystem=STRK6_2 +[include] +file=audio\srmtrg.scp + +# AmmoBinSTRK6_3 watcher +[macro] +MechSubsystem=AmmoBinSTRK6_3 +[include] +file=audio\abntrg.scp + +# STRK6_3 watcher +[macro] +MechSubsystem=STRK6_3 +[include] +file=audio\srmtrg.scp + +# AmmoBinSTRK6_4 watcher +[macro] +MechSubsystem=AmmoBinSTRK6_4 +[include] +file=audio\abntrg.scp + +# STRK6_4 watcher +[macro] +MechSubsystem=STRK6_4 +[include] +file=audio\srmtrg.scp + +# AmmoBinSTRK6_5 watcher +[macro] +MechSubsystem=AmmoBinSTRK6_5 +[include] +file=audio\abntrg.scp + +# STRK6_5 watcher +[macro] +MechSubsystem=STRK6_5 +[include] +file=audio\srmtrg.scp + +# AmmoBinSTRK6_6 watcher +[macro] +MechSubsystem=AmmoBinSTRK6_6 +[include] +file=audio\abntrg.scp + +# STRK6_6 watcher +[macro] +MechSubsystem=STRK6_6 +[include] +file=audio\srmtrg.scp + diff --git a/CONTENT/BT/AUDIO/VULEXT.SCP b/CONTENT/BT/AUDIO/VULEXT.SCP new file mode 100644 index 0000000..f8d8988 --- /dev/null +++ b/CONTENT/BT/AUDIO/VULEXT.SCP @@ -0,0 +1,49 @@ +# +# External Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchext.scp + +# +# LLaser_1 component +# +[include] +file=audio\glrcmpe.scp + +# LLaser_1 watcher +[macro] +MechSubsystem=LLaser_1 +[include] +file=audio\glrtrge.scp + +# LLaser_2 watcher +[macro] +MechSubsystem=LLaser_2 +[include] +file=audio\glrtrge.scp + +# ERSLaser_1 watcher +[macro] +MechSubsystem=ERSLaser_1 +[include] +file=audio\glrtrge.scp + +# ERSLaser_2 watcher +[macro] +MechSubsystem=ERSLaser_2 +[include] +file=audio\glrtrge.scp + +# ERMLaser_1 watcher +[macro] +MechSubsystem=ERMLaser_1 +[include] +file=audio\glrtrge.scp + +# ERMLaser_2 watcher +[macro] +MechSubsystem=ERMLaser_2 +[include] +file=audio\glrtrge.scp + diff --git a/CONTENT/BT/AUDIO/VULINT.SCP b/CONTENT/BT/AUDIO/VULINT.SCP new file mode 100644 index 0000000..8457aa5 --- /dev/null +++ b/CONTENT/BT/AUDIO/VULINT.SCP @@ -0,0 +1,97 @@ +# +# Internal Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchint.scp + +# +# LLaser_1 component +# +[include] +file=audio\llrcmp.scp + +# LLaser_1 watcher +[macro] +MechSubsystem=LLaser_1 +[include] +file=audio\llrtrg.scp + +# LLaser_2 watcher +[macro] +MechSubsystem=LLaser_2 +[include] +file=audio\llrtrg.scp + +# +# ERSLaser_1 component +# +[include] +file=audio\erscmp.scp + +# ERSLaser_1 watcher +[macro] +MechSubsystem=ERSLaser_1 +[include] +file=audio\erstrg.scp + +# ERSLaser_2 watcher +[macro] +MechSubsystem=ERSLaser_2 +[include] +file=audio\erstrg.scp + +# +# ERMLaser_1 component +# +[include] +file=audio\ermcmp.scp + +# ERMLaser_1 watcher +[macro] +MechSubsystem=ERMLaser_1 +[include] +file=audio\ermtrg.scp + +# ERMLaser_2 watcher +[macro] +MechSubsystem=ERMLaser_2 +[include] +file=audio\ermtrg.scp + +# +# AmmoBinLRM20_1 component +# +[include] +file=audio\abncmp.scp + +# AmmoBinLRM20_1 watcher +[macro] +MechSubsystem=AmmoBinLRM20_1 +[include] +file=audio\abntrg.scp + +# +# LRM20_1 component +# +[include] +file=audio\lrmcmp.scp + +# LRM20_1 watcher +[macro] +MechSubsystem=LRM20_1 +[include] +file=audio\lrmtrg.scp + +# AmmoBinLRM20_2 watcher +[macro] +MechSubsystem=AmmoBinLRM20_2 +[include] +file=audio\abntrg.scp + +# LRM20_2 watcher +[macro] +MechSubsystem=LRM20_2 +[include] +file=audio\lrmtrg.scp + diff --git a/CONTENT/BT/AUDIO/WNDEXT01.SCP b/CONTENT/BT/AUDIO/WNDEXT01.SCP new file mode 100644 index 0000000..04a8bae --- /dev/null +++ b/CONTENT/BT/AUDIO/WNDEXT01.SCP @@ -0,0 +1,80 @@ +# +################################################################### +# Wind Audio Script +################################################################### +# + +[include] +file=audio\macros.scp + +# +################################################################### +# Audio locations +################################################################### +# + +[L4AudioLocation] +location_offset=0.0,0.0,0.0 +clipping_scale=0.5 +name=OriginLocation + +# +################################################################### +# WindLoop component +################################################################### +# + +[Dynamic3DPatchSource] +location=OriginLocation +resource=WindLoop01 +priority=0 +mix_presence=4 +volume_mix_level=WindVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=False +use_attack_time_scale=False +has_compression_curve=False +compression_duration=0.0 +name=WindLoopComponent + +#------------------------------------------------------------------ + +# +# sample and hold -> pitch +# + +[AudioSampleAndHold] +audio_component=WindLoopComponent +control_ID=PitchAudioControlID +sample_duration=99.0 +min_value=-300 +max_value=100 +name=WindLoopPitchSampleAndHold + +# +# sample and hold -> filter +# + +[AudioSampleAndHold] +audio_component=WindLoopComponent +control_ID=BrightnessAudioControlID +sample_duration=99.0 +min_value=0.6 +max_value=1.0 +name=WindLoopBrightnessSampleAndHold + +#------------------------------------------------------------------ + +[AudioControlSplitter] +audio_component=WindLoopPitchSampleAndHold +audio_component=WindLoopBrightnessSampleAndHold +audio_component=WindLoopComponent +name=WindLoopSplitter + +[AudioControlSend] +audio_component=WindLoopSplitter +control_ID=StartAudioControlID +control_value=0.0 + + diff --git a/CONTENT/BT/AUDIO/WPNINT.SCP b/CONTENT/BT/AUDIO/WPNINT.SCP new file mode 100644 index 0000000..e20e57f --- /dev/null +++ b/CONTENT/BT/AUDIO/WPNINT.SCP @@ -0,0 +1,113 @@ +# +################################################################### +# Weapon Mech Internal Audio Script +################################################################### +# + +# +################################################################### +# Includes +################################################################### +# + +[include] +file=audio\macros.scp +file=audio\mchint.scp + +# +################################################################### +# Mech Subsystems +################################################################### +# +[include] +file=audio\butcmp.scp +file=audio\dstcmp.scp + +# +################################################################### +# Sensor +################################################################### +# +[macro] +MechSubsystem=Avionics + +[include] +file=audio\buttrg.scp +file=audio\dsttrg.scp + +# +################################################################### +# Myomers +################################################################### +# +[macro] +MechSubsystem=Myomers + +[include] +file=audio\buttrg.scp +file=audio\dsttrg.scp + +# +################################################################### +# PPC +################################################################### +# +[include] +file=audio\ppccmp.scp + +[macro] +MechSubsystem=PPC + +[include] +file=audio\ppctrg.scp +file=audio\buttrg.scp +file=audio\dsttrg.scp + +# +################################################################### +# MACHINE GUN +################################################################### +# +[include] +file=audio\mgncmp.scp + +[macro] +MechSubsystem=MG + +[include] +file=audio\mgntrg.scp +file=audio\buttrg.scp +file=audio\dsttrg.scp + +# +################################################################### +# AUTO CANON +################################################################### +# +[include] +file=audio\acncmp.scp + +[macro] +MechSubsystem=AutoCannon + +[include] +file=audio\acntrg.scp +file=audio\buttrg.scp +file=audio\dsttrg.scp + +# +################################################################### +# SRM +################################################################### +# +[include] +file=audio\srmcmp.scp + +[macro] +MechSubsystem=SRM6 + +[include] +file=audio\srmtrg.scp +file=audio\buttrg.scp +file=audio\dsttrg.scp + diff --git a/CONTENT/BT/AUTOEXEC.BAT b/CONTENT/BT/AUTOEXEC.BAT new file mode 100644 index 0000000..c1568e5 --- /dev/null +++ b/CONTENT/BT/AUTOEXEC.BAT @@ -0,0 +1,22 @@ +@ECHO Off +rem ******* +rem * Standard autoexec.bat for field pods, this should not be edited without +rem * approval from STS +rem ******* +PATH C:\;C:\NWDOS;C:\NWCLIENT;C:\VGL_LABS +VERIFY OFF +PROMPT $P$G +SET NWDOSCFG=C:\NWDOS +SET FBP_USER=Virtual World Entertainment +rem +rem *** load the network stuff +rem +lh c:\nwclient\lsl +lh c:\nwclient\lnepci +lh c:\nwclient\odipkt +NWCACHE 1024 1024 /LEND=OFF /DELAY=1000 +call PARAMETR.bat Rel410 BT POD SLOW SVGA +if exist c:\%VERSION%\%PREFGAME%\last.spl copy c:\%VERSION%\%PREFGAME%\last.spl c:\%VERSION%\%PREFGAME%\bad.spl +if exist c:\%VERSION%\%PREFGAME%\last.spl del c:\%VERSION%\%PREFGAME%\last.spl +call c:\vgl_labs\update.bat +c:\vgl_labs\go.bat diff --git a/CONTENT/BT/BLDTEST.SCN b/CONTENT/BT/BLDTEST.SCN new file mode 100644 index 0000000..d12d3fd --- /dev/null +++ b/CONTENT/BT/BLDTEST.SCN @@ -0,0 +1,88 @@ +# ------------------------- +# BattleTech Arena1 Scene +# ------------------------- +VIEWANGLE 60.0 +RETRACE 1 +CLIP 0.5 3500.0 +//FOG 40 1150.0 0.12 0.12 0.13 +FOG 400 3450.0 0.6 0.6 0.7 +//FOG 110 11150.0 0.3 0.2 0.18 +//FOG 30 1000.0 0.1 0.04 0.01 +//FOG 20 1000.0 0.0 0.0 0.0 +BACKGND 0.2 0.4 0.8 +AMBIENT 0.32 0.41 0.61 +LIGHT 1 1 1 -70 88 0 + +START 0 8.0 0 0 270 0 + +GEOMETRY \BTRAVINE\VIDEO\GEO +GEOMETRY \BTRAVINE\VIDEO\GEO\MORNING +GEOMETRY \BTRAVINE\VIDEO\GEO\DAY +MATERIAL \BTRAVINE\VIDEO\MAT +MATERIAL \BTRAVINE\VIDEO\MAT\MORNING +MATERIAL \BTRAVINE\VIDEO\MAT\DAY +MATERIAL \BTRAVINE\VIDEO\MAT\GRASS +TEXTURE \BTRAVINE\VIDEO\TEX + +STATIC bld01 1 000 0.1 0 0 0 0 +STATIC bld02 1 100 0.1 0 0 0 0 +STATIC bld03 1 200 0.1 0 0 0 0 +STATIC bld05 1 300 0.1 0 0 0 0 +STATIC bld06 1 400 0.1 0 0 0 0 +STATIC bld08 1 500 0.1 0 0 0 0 +STATIC bld20 1 600 0.1 0 0 0 0 +STATIC bld24 1 700 0.1 0 0 0 0 +STATIC bld26 1 800 0.1 0 0 0 0 +STATIC bld27 1 1900 0.1 0 0 0 0 +STATIC bld28 1 1000 0.1 0 0 0 0 +STATIC dsky 1 0 0 00 0 0 0 +//STATIC thr 1 -706 6 204 0 0 0 +//STATIC thr 10 -684 6 -185 0 0 0 +//DYNAMIC square1 1.0 \fx\still2.spl 0.0 0.005 \fx\devent2.evt 2 + + +//MORPH exdisk_1 exdisk_a exdisk_c v 1.0 still1.spl 0.0 0.01 0.1 +//MORPH exdisk_2 exdisk_a exdisk_c v 1.0 still3.spl 0.2 0.1 0.1 +//DYNAMIC exdisk_2 1.0 \fx\move.spl 0.0 0.01 +//DYNAMIC exdisk_1 1.0 \fx\still2.spl 0.0 0.01 + + +//SCROLL btfx:smoke1_scr_tex 0 0 0.05 -0.131 +//SCROLL btfx:firesmoke1_scr_tex 0 0 0.05 -0.331 +//SCROLL btfx:firesmoke2_scr_tex 0 0 0.05 0.131 +//SCROLL btfx:firesmoke3_scr_tex 0 0 0.5 -2.31 +//SCROLL btfx:sky_scr_tex 0 0 0.01 0.01 +//IMMUNE btfx:firesmoke1_mtl 0 +//IMMUNE btfx:sky_mtl 1 +//IMMUNE btfx:planet_mtl 0 +//IMMUNE btfx:space_mtl 0 +//IMMUNE btfx:stars_mtl 0 +//DITHER btfx:smoke1_mtl 50 + +# code type velocity y-off green varience cool count +# texture size bias red blue grav ocool reps + +SPECIALFX 0 btfx:firesmoke1_scr_tex 0 1.10 36.00 0.9 -3.0 0.999 0.950 0.950 0.070 30.0 0.97 0.013 12 1 +SPECIALFX 1 NOTEXT 2 0.00 04.50 0.5 -3.0 2.699 0.70 0.000 0.50 04.0 0.94 0.053 12 1 +SPECIALFX 2 btfx:firesmoke1_scr_tex 2 0.90 03.00 0.5 -3.0 0.600 1.70 4.000 0.80 04.0 0.70 0.083 05 1 +SPECIALFX 3 btfx:firesmoke1_scr_tex 2 1.90 05.00 0.1 -3.0 4.600 0.95 0.500 0.80 00.5 0.70 0.153 05 1 +SPECIALFX 4 btfx:firesmoke1_scr_tex 2 12.00 16.00 0.2 -3.0 4.600 2.00 1.500 0.80 00.5 0.50 0.353 09 1 +SPECIALFX 5 btfx:firesmoke2_scr_tex 2 14.00 12.00 1.7 -9.0 2.900 0.60 0.100 0.50 05.5 0.90 0.023 12 1 +//SPECIALFX 6 btfx:firesmoke1_scr_tex 0 01.30 40.40 1.1 -1.0 3.700 2.30 1.150 3.90 34.8 0.92 0.020 15 1 +SPECIALFX 6 btfx:firesmoke1_scr_tex 1 0.0 20.40 1.5 -1.0 1.700 1.30 0.150 0.90 04.8 0.92 0.050 12 1 +SPECIALFX 7 btfx:firesmoke1_scr_tex 0 2.10 51.80 0.6 -3.0 12.900 11.000 10.500 0.60 1.8 0.95 0.023 5 1 +SPECIALFX 8 btfx:firesmoke1_scr_tex 0 6.10 5.20 1.0 -3.0 2.900 1.000 0.500 0.60 1.8 0.80 0.023 4 1 +SPECIALFX 9 btfx:firesmoke1_scr_tex 0 7.05 1.20 4.0 -15.0 1.200 0.50 0.20 1.20 1.0 0.00982 0.00000001 3 1 +SPECIALFX 10 NOTEXT 2 0.00 21.00 0.1 -3.0 2.699 1.50 1.000 0.50 30.0 0.91 0.037 12 10 + + + +// TRACKER NONE 4.0 2.0 +// TRACKER THRUSTMASTER 4.0 0.3 +TRACKER KEYBOARD 0.2 0.3 + +SCROLL test:texture1 0.0 0.0 0.05 0.1 + +END + + \ No newline at end of file diff --git a/CONTENT/BT/BT.BAT b/CONTENT/BT/BT.BAT new file mode 100644 index 0000000..fe5a713 --- /dev/null +++ b/CONTENT/BT/BT.BAT @@ -0,0 +1,24 @@ +@echo off +call setenv.bat r s n n +call showenv.bat +set a0= +if exist btl4d3s.exe set a0=btl4d3s.exe +if exist btl4d2s.exe set a0=btl4d2s.exe +if exist btl4d0.exe set a0=btl4d0.exe +if exist btl4opt.exe set a0=btl4opt.exe +if "%a0%"=="" goto error +if "%1"=="" set aa=test +if not "%1"=="" set aa=%1 +echo on +32rtm.exe -x +%a0% -egg %aa%.egg +32rtm.exe -u +@echo off +set aa= +goto end +:error +echo. +echo Program not found in current directory. +echo. +:end +set a0= diff --git a/CONTENT/BT/BTCAM.BAT b/CONTENT/BT/BTCAM.BAT new file mode 100644 index 0000000..8fe0a06 --- /dev/null +++ b/CONTENT/BT/BTCAM.BAT @@ -0,0 +1,43 @@ +@echo off +rem ------------------------------------------------------------------ +rem L4EYES=x y z pitch yaw roll [relative] +rem ------------------------------------------------------------------ +rem set L4EYES=25 5.9 -10 0 95 0 r +rem set L4EYES=0 7.3 -19 -7 180 0 r +rem Animation Cycle +rem set L4EYES=0 7.3 -19 -6 180 0 r +rem set L4EYES=-3.706716 7.3 -18.634920 -6 191.25 0 r +rem set L4EYES=-7.270985 7.3 -17.553711 -6 202.5 0 r +rem set L4EYES=-10.555834 7.3 -15.797922 -6 213.75 0 r +set L4EYES=-13.435028 7.3 -13.435028 -6 225 0 r +rem set L4EYES=-15.797922 7.3 -10.555834 -6 236.25 0 r +rem set L4EYES=-17.553711 7.3 -7.270985 -6 247.5 0 r +rem set L4EYES=-18.634920 7.3 -3.706716 -6 258.75 0 r +rem set L4EYES=-19 7.3 0 -6 270 0 r +rem set L4EYES=-18.634920 7.3 3.706716 -6 281.25 0 r +rem set L4EYES=-17.553711 7.3 7.270985 -6 292.5 0 r +rem set L4EYES=-15.797922 7.3 10.555834 -6 303.75 0 r +rem set L4EYES=-13.435028 7.3 13.435028 -6 315 0 r +rem set L4EYES=-10.555834 7.3 15.797922 -6 326.25 0 r +rem set L4EYES=-7.270985 7.3 17.553711 -6 337.5 0 r +rem set L4EYES=-3.706716 7.3 18.634920 -6 348.75 0 r +rem set L4EYES=0 7.3 19 -6 0 0 r +rem set L4EYES=3.706716 7.3 18.634920 -6 11.25 0 r +rem set L4EYES=7.270985 7.3 17.553711 -6 22.5 0 r +rem set L4EYES=10.555834 7.3 15.797922 -6 33.75 0 r +rem set L4EYES=13.435028 7.3 13.435028 -6 45 0 r +rem set L4EYES=15.797922 7.3 10.555834 -6 56.25 0 r +rem set L4EYES=17.553711 7.3 7.270985 -6 67.5 0 r +rem set L4EYES=18.634920 7.3 3.706716 -6 78.75 0 r +rem set L4EYES=19 7.3 0 -6 90 0 r +rem set L4EYES=18.634920 7.3 -3.706716 -6 101.25 0 r +rem set L4EYES=17.553711 7.3 -7.270985 -6 112.5 0 r +rem set L4EYES=15.797922 7.3 -10.555834 -6 123.75 0 r +rem set L4EYES=13.435028 7.3 -13.435028 -6 135 0 r +rem set L4EYES=10.555834 7.3 -15.797922 -6 146.25 0 r +rem set L4EYES=7.270985 7.3 -17.553711 -6 157.5 0 r +rem set L4EYES=3.706716 7.3 -18.634920 -6 168.75 0 r +set L4VIEWEXT=True +rem ------------------------------------------------------------------ +call btprep.bat %1 %2 %3 %4 %5 %6 %7 %8 %9 +menu.bat short diff --git a/CONTENT/BT/BTCAM/BTCAM01.BAT b/CONTENT/BT/BTCAM/BTCAM01.BAT new file mode 100644 index 0000000..e0aa52f --- /dev/null +++ b/CONTENT/BT/BTCAM/BTCAM01.BAT @@ -0,0 +1,43 @@ +@echo off +rem ------------------------------------------------------------------ +rem L4EYES=x y z pitch yaw roll [relative] +rem ------------------------------------------------------------------ +rem set L4EYES=25 5.9 -10 0 95 0 r +rem set L4EYES=0 7.3 -19 -7 180 0 r +rem Animation Cycle +set L4EYES=0 7.3 -19 -6 180 0 r +rem set L4EYES=-3.706716 7.3 -18.634920 -6 191.25 0 r +rem set L4EYES=-7.270985 7.3 -17.553711 -6 202.5 0 r +rem set L4EYES=-10.555834 7.3 -15.797922 -6 213.75 0 r +rem set L4EYES=-13.435028 7.3 -13.435028 -6 225 0 r +rem set L4EYES=-15.797922 7.3 -10.555834 -6 236.25 0 r +rem set L4EYES=-17.553711 7.3 -7.270985 -6 247.5 0 r +rem set L4EYES=-18.634920 7.3 -3.706716 -6 258.75 0 r +rem set L4EYES=-19 7.3 0 -6 270 0 r +rem set L4EYES=-18.634920 7.3 3.706716 -6 281.25 0 r +rem set L4EYES=-17.553711 7.3 7.270985 -6 292.5 0 r +rem set L4EYES=-15.797922 7.3 10.555834 -6 303.75 0 r +rem set L4EYES=-13.435028 7.3 13.435028 -6 315 0 r +rem set L4EYES=-10.555834 7.3 15.797922 -6 326.25 0 r +rem set L4EYES=-7.270985 7.3 17.553711 -6 337.5 0 r +rem set L4EYES=-3.706716 7.3 18.634920 -6 348.75 0 r +rem set L4EYES=0 7.3 19 -6 0 0 r +rem set L4EYES=3.706716 7.3 18.634920 -6 11.25 0 r +rem set L4EYES=7.270985 7.3 17.553711 -6 22.5 0 r +rem set L4EYES=10.555834 7.3 15.797922 -6 33.75 0 r +rem set L4EYES=13.435028 7.3 13.435028 -6 45 0 r +rem set L4EYES=15.797922 7.3 10.555834 -6 56.25 0 r +rem set L4EYES=17.553711 7.3 7.270985 -6 67.5 0 r +rem set L4EYES=18.634920 7.3 3.706716 -6 78.75 0 r +rem set L4EYES=19 7.3 0 -6 90 0 r +rem set L4EYES=18.634920 7.3 -3.706716 -6 101.25 0 r +rem set L4EYES=17.553711 7.3 -7.270985 -6 112.5 0 r +rem set L4EYES=15.797922 7.3 -10.555834 -6 123.75 0 r +rem set L4EYES=13.435028 7.3 -13.435028 -6 135 0 r +rem set L4EYES=10.555834 7.3 -15.797922 -6 146.25 0 r +rem set L4EYES=7.270985 7.3 -17.553711 -6 157.5 0 r +rem set L4EYES=3.706716 7.3 -18.634920 -6 168.75 0 r +set L4VIEWEXT=True +rem ------------------------------------------------------------------ +call btprep.bat %1 %2 %3 %4 %5 %6 %7 %8 %9 +menu.bat short diff --git a/CONTENT/BT/BTCAM/BTCAM02.BAT b/CONTENT/BT/BTCAM/BTCAM02.BAT new file mode 100644 index 0000000..9b1d296 --- /dev/null +++ b/CONTENT/BT/BTCAM/BTCAM02.BAT @@ -0,0 +1,43 @@ +@echo off +rem ------------------------------------------------------------------ +rem L4EYES=x y z pitch yaw roll [relative] +rem ------------------------------------------------------------------ +rem set L4EYES=25 5.9 -10 0 95 0 r +rem set L4EYES=0 7.3 -19 -7 180 0 r +rem Animation Cycle +rem set L4EYES=0 7.3 -19 -6 180 0 r +set L4EYES=-3.706716 7.3 -18.634920 -6 191.25 0 r +rem set L4EYES=-7.270985 7.3 -17.553711 -6 202.5 0 r +rem set L4EYES=-10.555834 7.3 -15.797922 -6 213.75 0 r +rem set L4EYES=-13.435028 7.3 -13.435028 -6 225 0 r +rem set L4EYES=-15.797922 7.3 -10.555834 -6 236.25 0 r +rem set L4EYES=-17.553711 7.3 -7.270985 -6 247.5 0 r +rem set L4EYES=-18.634920 7.3 -3.706716 -6 258.75 0 r +rem set L4EYES=-19 7.3 0 -6 270 0 r +rem set L4EYES=-18.634920 7.3 3.706716 -6 281.25 0 r +rem set L4EYES=-17.553711 7.3 7.270985 -6 292.5 0 r +rem set L4EYES=-15.797922 7.3 10.555834 -6 303.75 0 r +rem set L4EYES=-13.435028 7.3 13.435028 -6 315 0 r +rem set L4EYES=-10.555834 7.3 15.797922 -6 326.25 0 r +rem set L4EYES=-7.270985 7.3 17.553711 -6 337.5 0 r +rem set L4EYES=-3.706716 7.3 18.634920 -6 348.75 0 r +rem set L4EYES=0 7.3 19 -6 0 0 r +rem set L4EYES=3.706716 7.3 18.634920 -6 11.25 0 r +rem set L4EYES=7.270985 7.3 17.553711 -6 22.5 0 r +rem set L4EYES=10.555834 7.3 15.797922 -6 33.75 0 r +rem set L4EYES=13.435028 7.3 13.435028 -6 45 0 r +rem set L4EYES=15.797922 7.3 10.555834 -6 56.25 0 r +rem set L4EYES=17.553711 7.3 7.270985 -6 67.5 0 r +rem set L4EYES=18.634920 7.3 3.706716 -6 78.75 0 r +rem set L4EYES=19 7.3 0 -6 90 0 r +rem set L4EYES=18.634920 7.3 -3.706716 -6 101.25 0 r +rem set L4EYES=17.553711 7.3 -7.270985 -6 112.5 0 r +rem set L4EYES=15.797922 7.3 -10.555834 -6 123.75 0 r +rem set L4EYES=13.435028 7.3 -13.435028 -6 135 0 r +rem set L4EYES=10.555834 7.3 -15.797922 -6 146.25 0 r +rem set L4EYES=7.270985 7.3 -17.553711 -6 157.5 0 r +rem set L4EYES=3.706716 7.3 -18.634920 -6 168.75 0 r +set L4VIEWEXT=True +rem ------------------------------------------------------------------ +call btprep.bat %1 %2 %3 %4 %5 %6 %7 %8 %9 +menu.bat short diff --git a/CONTENT/BT/BTCAM/BTCAM03.BAT b/CONTENT/BT/BTCAM/BTCAM03.BAT new file mode 100644 index 0000000..edde84c --- /dev/null +++ b/CONTENT/BT/BTCAM/BTCAM03.BAT @@ -0,0 +1,43 @@ +@echo off +rem ------------------------------------------------------------------ +rem L4EYES=x y z pitch yaw roll [relative] +rem ------------------------------------------------------------------ +rem set L4EYES=25 5.9 -10 0 95 0 r +rem set L4EYES=0 7.3 -19 -7 180 0 r +rem Animation Cycle +rem set L4EYES=0 7.3 -19 -6 180 0 r +rem set L4EYES=-3.706716 7.3 -18.634920 -6 191.25 0 r +set L4EYES=-7.270985 7.3 -17.553711 -6 202.5 0 r +rem set L4EYES=-10.555834 7.3 -15.797922 -6 213.75 0 r +rem set L4EYES=-13.435028 7.3 -13.435028 -6 225 0 r +rem set L4EYES=-15.797922 7.3 -10.555834 -6 236.25 0 r +rem set L4EYES=-17.553711 7.3 -7.270985 -6 247.5 0 r +rem set L4EYES=-18.634920 7.3 -3.706716 -6 258.75 0 r +rem set L4EYES=-19 7.3 0 -6 270 0 r +rem set L4EYES=-18.634920 7.3 3.706716 -6 281.25 0 r +rem set L4EYES=-17.553711 7.3 7.270985 -6 292.5 0 r +rem set L4EYES=-15.797922 7.3 10.555834 -6 303.75 0 r +rem set L4EYES=-13.435028 7.3 13.435028 -6 315 0 r +rem set L4EYES=-10.555834 7.3 15.797922 -6 326.25 0 r +rem set L4EYES=-7.270985 7.3 17.553711 -6 337.5 0 r +rem set L4EYES=-3.706716 7.3 18.634920 -6 348.75 0 r +rem set L4EYES=0 7.3 19 -6 0 0 r +rem set L4EYES=3.706716 7.3 18.634920 -6 11.25 0 r +rem set L4EYES=7.270985 7.3 17.553711 -6 22.5 0 r +rem set L4EYES=10.555834 7.3 15.797922 -6 33.75 0 r +rem set L4EYES=13.435028 7.3 13.435028 -6 45 0 r +rem set L4EYES=15.797922 7.3 10.555834 -6 56.25 0 r +rem set L4EYES=17.553711 7.3 7.270985 -6 67.5 0 r +rem set L4EYES=18.634920 7.3 3.706716 -6 78.75 0 r +rem set L4EYES=19 7.3 0 -6 90 0 r +rem set L4EYES=18.634920 7.3 -3.706716 -6 101.25 0 r +rem set L4EYES=17.553711 7.3 -7.270985 -6 112.5 0 r +rem set L4EYES=15.797922 7.3 -10.555834 -6 123.75 0 r +rem set L4EYES=13.435028 7.3 -13.435028 -6 135 0 r +rem set L4EYES=10.555834 7.3 -15.797922 -6 146.25 0 r +rem set L4EYES=7.270985 7.3 -17.553711 -6 157.5 0 r +rem set L4EYES=3.706716 7.3 -18.634920 -6 168.75 0 r +set L4VIEWEXT=True +rem ------------------------------------------------------------------ +call btprep.bat %1 %2 %3 %4 %5 %6 %7 %8 %9 +menu.bat short diff --git a/CONTENT/BT/BTCAM/BTCAM04.BAT b/CONTENT/BT/BTCAM/BTCAM04.BAT new file mode 100644 index 0000000..8b8de44 --- /dev/null +++ b/CONTENT/BT/BTCAM/BTCAM04.BAT @@ -0,0 +1,43 @@ +@echo off +rem ------------------------------------------------------------------ +rem L4EYES=x y z pitch yaw roll [relative] +rem ------------------------------------------------------------------ +rem set L4EYES=25 5.9 -10 0 95 0 r +rem set L4EYES=0 7.3 -19 -7 180 0 r +rem Animation Cycle +rem set L4EYES=0 7.3 -19 -6 180 0 r +rem set L4EYES=-3.706716 7.3 -18.634920 -6 191.25 0 r +rem set L4EYES=-7.270985 7.3 -17.553711 -6 202.5 0 r +set L4EYES=-10.555834 7.3 -15.797922 -6 213.75 0 r +rem set L4EYES=-13.435028 7.3 -13.435028 -6 225 0 r +rem set L4EYES=-15.797922 7.3 -10.555834 -6 236.25 0 r +rem set L4EYES=-17.553711 7.3 -7.270985 -6 247.5 0 r +rem set L4EYES=-18.634920 7.3 -3.706716 -6 258.75 0 r +rem set L4EYES=-19 7.3 0 -6 270 0 r +rem set L4EYES=-18.634920 7.3 3.706716 -6 281.25 0 r +rem set L4EYES=-17.553711 7.3 7.270985 -6 292.5 0 r +rem set L4EYES=-15.797922 7.3 10.555834 -6 303.75 0 r +rem set L4EYES=-13.435028 7.3 13.435028 -6 315 0 r +rem set L4EYES=-10.555834 7.3 15.797922 -6 326.25 0 r +rem set L4EYES=-7.270985 7.3 17.553711 -6 337.5 0 r +rem set L4EYES=-3.706716 7.3 18.634920 -6 348.75 0 r +rem set L4EYES=0 7.3 19 -6 0 0 r +rem set L4EYES=3.706716 7.3 18.634920 -6 11.25 0 r +rem set L4EYES=7.270985 7.3 17.553711 -6 22.5 0 r +rem set L4EYES=10.555834 7.3 15.797922 -6 33.75 0 r +rem set L4EYES=13.435028 7.3 13.435028 -6 45 0 r +rem set L4EYES=15.797922 7.3 10.555834 -6 56.25 0 r +rem set L4EYES=17.553711 7.3 7.270985 -6 67.5 0 r +rem set L4EYES=18.634920 7.3 3.706716 -6 78.75 0 r +rem set L4EYES=19 7.3 0 -6 90 0 r +rem set L4EYES=18.634920 7.3 -3.706716 -6 101.25 0 r +rem set L4EYES=17.553711 7.3 -7.270985 -6 112.5 0 r +rem set L4EYES=15.797922 7.3 -10.555834 -6 123.75 0 r +rem set L4EYES=13.435028 7.3 -13.435028 -6 135 0 r +rem set L4EYES=10.555834 7.3 -15.797922 -6 146.25 0 r +rem set L4EYES=7.270985 7.3 -17.553711 -6 157.5 0 r +rem set L4EYES=3.706716 7.3 -18.634920 -6 168.75 0 r +set L4VIEWEXT=True +rem ------------------------------------------------------------------ +call btprep.bat %1 %2 %3 %4 %5 %6 %7 %8 %9 +menu.bat short diff --git a/CONTENT/BT/BTCAM/BTCAM05.BAT b/CONTENT/BT/BTCAM/BTCAM05.BAT new file mode 100644 index 0000000..8fe0a06 --- /dev/null +++ b/CONTENT/BT/BTCAM/BTCAM05.BAT @@ -0,0 +1,43 @@ +@echo off +rem ------------------------------------------------------------------ +rem L4EYES=x y z pitch yaw roll [relative] +rem ------------------------------------------------------------------ +rem set L4EYES=25 5.9 -10 0 95 0 r +rem set L4EYES=0 7.3 -19 -7 180 0 r +rem Animation Cycle +rem set L4EYES=0 7.3 -19 -6 180 0 r +rem set L4EYES=-3.706716 7.3 -18.634920 -6 191.25 0 r +rem set L4EYES=-7.270985 7.3 -17.553711 -6 202.5 0 r +rem set L4EYES=-10.555834 7.3 -15.797922 -6 213.75 0 r +set L4EYES=-13.435028 7.3 -13.435028 -6 225 0 r +rem set L4EYES=-15.797922 7.3 -10.555834 -6 236.25 0 r +rem set L4EYES=-17.553711 7.3 -7.270985 -6 247.5 0 r +rem set L4EYES=-18.634920 7.3 -3.706716 -6 258.75 0 r +rem set L4EYES=-19 7.3 0 -6 270 0 r +rem set L4EYES=-18.634920 7.3 3.706716 -6 281.25 0 r +rem set L4EYES=-17.553711 7.3 7.270985 -6 292.5 0 r +rem set L4EYES=-15.797922 7.3 10.555834 -6 303.75 0 r +rem set L4EYES=-13.435028 7.3 13.435028 -6 315 0 r +rem set L4EYES=-10.555834 7.3 15.797922 -6 326.25 0 r +rem set L4EYES=-7.270985 7.3 17.553711 -6 337.5 0 r +rem set L4EYES=-3.706716 7.3 18.634920 -6 348.75 0 r +rem set L4EYES=0 7.3 19 -6 0 0 r +rem set L4EYES=3.706716 7.3 18.634920 -6 11.25 0 r +rem set L4EYES=7.270985 7.3 17.553711 -6 22.5 0 r +rem set L4EYES=10.555834 7.3 15.797922 -6 33.75 0 r +rem set L4EYES=13.435028 7.3 13.435028 -6 45 0 r +rem set L4EYES=15.797922 7.3 10.555834 -6 56.25 0 r +rem set L4EYES=17.553711 7.3 7.270985 -6 67.5 0 r +rem set L4EYES=18.634920 7.3 3.706716 -6 78.75 0 r +rem set L4EYES=19 7.3 0 -6 90 0 r +rem set L4EYES=18.634920 7.3 -3.706716 -6 101.25 0 r +rem set L4EYES=17.553711 7.3 -7.270985 -6 112.5 0 r +rem set L4EYES=15.797922 7.3 -10.555834 -6 123.75 0 r +rem set L4EYES=13.435028 7.3 -13.435028 -6 135 0 r +rem set L4EYES=10.555834 7.3 -15.797922 -6 146.25 0 r +rem set L4EYES=7.270985 7.3 -17.553711 -6 157.5 0 r +rem set L4EYES=3.706716 7.3 -18.634920 -6 168.75 0 r +set L4VIEWEXT=True +rem ------------------------------------------------------------------ +call btprep.bat %1 %2 %3 %4 %5 %6 %7 %8 %9 +menu.bat short diff --git a/CONTENT/BT/BTCAM/BTCAM06.BAT b/CONTENT/BT/BTCAM/BTCAM06.BAT new file mode 100644 index 0000000..5ef6e5a --- /dev/null +++ b/CONTENT/BT/BTCAM/BTCAM06.BAT @@ -0,0 +1,43 @@ +@echo off +rem ------------------------------------------------------------------ +rem L4EYES=x y z pitch yaw roll [relative] +rem ------------------------------------------------------------------ +rem set L4EYES=25 5.9 -10 0 95 0 r +rem set L4EYES=0 7.3 -19 -7 180 0 r +rem Animation Cycle +rem set L4EYES=0 7.3 -19 -6 180 0 r +rem set L4EYES=-3.706716 7.3 -18.634920 -6 191.25 0 r +rem set L4EYES=-7.270985 7.3 -17.553711 -6 202.5 0 r +rem set L4EYES=-10.555834 7.3 -15.797922 -6 213.75 0 r +rem set L4EYES=-13.435028 7.3 -13.435028 -6 225 0 r +set L4EYES=-15.797922 7.3 -10.555834 -6 236.25 0 r +rem set L4EYES=-17.553711 7.3 -7.270985 -6 247.5 0 r +rem set L4EYES=-18.634920 7.3 -3.706716 -6 258.75 0 r +rem set L4EYES=-19 7.3 0 -6 270 0 r +rem set L4EYES=-18.634920 7.3 3.706716 -6 281.25 0 r +rem set L4EYES=-17.553711 7.3 7.270985 -6 292.5 0 r +rem set L4EYES=-15.797922 7.3 10.555834 -6 303.75 0 r +rem set L4EYES=-13.435028 7.3 13.435028 -6 315 0 r +rem set L4EYES=-10.555834 7.3 15.797922 -6 326.25 0 r +rem set L4EYES=-7.270985 7.3 17.553711 -6 337.5 0 r +rem set L4EYES=-3.706716 7.3 18.634920 -6 348.75 0 r +rem set L4EYES=0 7.3 19 -6 0 0 r +rem set L4EYES=3.706716 7.3 18.634920 -6 11.25 0 r +rem set L4EYES=7.270985 7.3 17.553711 -6 22.5 0 r +rem set L4EYES=10.555834 7.3 15.797922 -6 33.75 0 r +rem set L4EYES=13.435028 7.3 13.435028 -6 45 0 r +rem set L4EYES=15.797922 7.3 10.555834 -6 56.25 0 r +rem set L4EYES=17.553711 7.3 7.270985 -6 67.5 0 r +rem set L4EYES=18.634920 7.3 3.706716 -6 78.75 0 r +rem set L4EYES=19 7.3 0 -6 90 0 r +rem set L4EYES=18.634920 7.3 -3.706716 -6 101.25 0 r +rem set L4EYES=17.553711 7.3 -7.270985 -6 112.5 0 r +rem set L4EYES=15.797922 7.3 -10.555834 -6 123.75 0 r +rem set L4EYES=13.435028 7.3 -13.435028 -6 135 0 r +rem set L4EYES=10.555834 7.3 -15.797922 -6 146.25 0 r +rem set L4EYES=7.270985 7.3 -17.553711 -6 157.5 0 r +rem set L4EYES=3.706716 7.3 -18.634920 -6 168.75 0 r +set L4VIEWEXT=True +rem ------------------------------------------------------------------ +call btprep.bat %1 %2 %3 %4 %5 %6 %7 %8 %9 +menu.bat short diff --git a/CONTENT/BT/BTCAM/BTCAM07.BAT b/CONTENT/BT/BTCAM/BTCAM07.BAT new file mode 100644 index 0000000..ffdc350 --- /dev/null +++ b/CONTENT/BT/BTCAM/BTCAM07.BAT @@ -0,0 +1,43 @@ +@echo off +rem ------------------------------------------------------------------ +rem L4EYES=x y z pitch yaw roll [relative] +rem ------------------------------------------------------------------ +rem set L4EYES=25 5.9 -10 0 95 0 r +rem set L4EYES=0 7.3 -19 -7 180 0 r +rem Animation Cycle +rem set L4EYES=0 7.3 -19 -6 180 0 r +rem set L4EYES=-3.706716 7.3 -18.634920 -6 191.25 0 r +rem set L4EYES=-7.270985 7.3 -17.553711 -6 202.5 0 r +rem set L4EYES=-10.555834 7.3 -15.797922 -6 213.75 0 r +rem set L4EYES=-13.435028 7.3 -13.435028 -6 225 0 r +rem set L4EYES=-15.797922 7.3 -10.555834 -6 236.25 0 r +set L4EYES=-17.553711 7.3 -7.270985 -6 247.5 0 r +rem set L4EYES=-18.634920 7.3 -3.706716 -6 258.75 0 r +rem set L4EYES=-19 7.3 0 -6 270 0 r +rem set L4EYES=-18.634920 7.3 3.706716 -6 281.25 0 r +rem set L4EYES=-17.553711 7.3 7.270985 -6 292.5 0 r +rem set L4EYES=-15.797922 7.3 10.555834 -6 303.75 0 r +rem set L4EYES=-13.435028 7.3 13.435028 -6 315 0 r +rem set L4EYES=-10.555834 7.3 15.797922 -6 326.25 0 r +rem set L4EYES=-7.270985 7.3 17.553711 -6 337.5 0 r +rem set L4EYES=-3.706716 7.3 18.634920 -6 348.75 0 r +rem set L4EYES=0 7.3 19 -6 0 0 r +rem set L4EYES=3.706716 7.3 18.634920 -6 11.25 0 r +rem set L4EYES=7.270985 7.3 17.553711 -6 22.5 0 r +rem set L4EYES=10.555834 7.3 15.797922 -6 33.75 0 r +rem set L4EYES=13.435028 7.3 13.435028 -6 45 0 r +rem set L4EYES=15.797922 7.3 10.555834 -6 56.25 0 r +rem set L4EYES=17.553711 7.3 7.270985 -6 67.5 0 r +rem set L4EYES=18.634920 7.3 3.706716 -6 78.75 0 r +rem set L4EYES=19 7.3 0 -6 90 0 r +rem set L4EYES=18.634920 7.3 -3.706716 -6 101.25 0 r +rem set L4EYES=17.553711 7.3 -7.270985 -6 112.5 0 r +rem set L4EYES=15.797922 7.3 -10.555834 -6 123.75 0 r +rem set L4EYES=13.435028 7.3 -13.435028 -6 135 0 r +rem set L4EYES=10.555834 7.3 -15.797922 -6 146.25 0 r +rem set L4EYES=7.270985 7.3 -17.553711 -6 157.5 0 r +rem set L4EYES=3.706716 7.3 -18.634920 -6 168.75 0 r +set L4VIEWEXT=True +rem ------------------------------------------------------------------ +call btprep.bat %1 %2 %3 %4 %5 %6 %7 %8 %9 +menu.bat short diff --git a/CONTENT/BT/BTCAM/BTCAM08.BAT b/CONTENT/BT/BTCAM/BTCAM08.BAT new file mode 100644 index 0000000..2493074 --- /dev/null +++ b/CONTENT/BT/BTCAM/BTCAM08.BAT @@ -0,0 +1,43 @@ +@echo off +rem ------------------------------------------------------------------ +rem L4EYES=x y z pitch yaw roll [relative] +rem ------------------------------------------------------------------ +rem set L4EYES=25 5.9 -10 0 95 0 r +rem set L4EYES=0 7.3 -19 -7 180 0 r +rem Animation Cycle +rem set L4EYES=0 7.3 -19 -6 180 0 r +rem set L4EYES=-3.706716 7.3 -18.634920 -6 191.25 0 r +rem set L4EYES=-7.270985 7.3 -17.553711 -6 202.5 0 r +rem set L4EYES=-10.555834 7.3 -15.797922 -6 213.75 0 r +rem set L4EYES=-13.435028 7.3 -13.435028 -6 225 0 r +rem set L4EYES=-15.797922 7.3 -10.555834 -6 236.25 0 r +rem set L4EYES=-17.553711 7.3 -7.270985 -6 247.5 0 r +set L4EYES=-18.634920 7.3 -3.706716 -6 258.75 0 r +rem set L4EYES=-19 7.3 0 -6 270 0 r +rem set L4EYES=-18.634920 7.3 3.706716 -6 281.25 0 r +rem set L4EYES=-17.553711 7.3 7.270985 -6 292.5 0 r +rem set L4EYES=-15.797922 7.3 10.555834 -6 303.75 0 r +rem set L4EYES=-13.435028 7.3 13.435028 -6 315 0 r +rem set L4EYES=-10.555834 7.3 15.797922 -6 326.25 0 r +rem set L4EYES=-7.270985 7.3 17.553711 -6 337.5 0 r +rem set L4EYES=-3.706716 7.3 18.634920 -6 348.75 0 r +rem set L4EYES=0 7.3 19 -6 0 0 r +rem set L4EYES=3.706716 7.3 18.634920 -6 11.25 0 r +rem set L4EYES=7.270985 7.3 17.553711 -6 22.5 0 r +rem set L4EYES=10.555834 7.3 15.797922 -6 33.75 0 r +rem set L4EYES=13.435028 7.3 13.435028 -6 45 0 r +rem set L4EYES=15.797922 7.3 10.555834 -6 56.25 0 r +rem set L4EYES=17.553711 7.3 7.270985 -6 67.5 0 r +rem set L4EYES=18.634920 7.3 3.706716 -6 78.75 0 r +rem set L4EYES=19 7.3 0 -6 90 0 r +rem set L4EYES=18.634920 7.3 -3.706716 -6 101.25 0 r +rem set L4EYES=17.553711 7.3 -7.270985 -6 112.5 0 r +rem set L4EYES=15.797922 7.3 -10.555834 -6 123.75 0 r +rem set L4EYES=13.435028 7.3 -13.435028 -6 135 0 r +rem set L4EYES=10.555834 7.3 -15.797922 -6 146.25 0 r +rem set L4EYES=7.270985 7.3 -17.553711 -6 157.5 0 r +rem set L4EYES=3.706716 7.3 -18.634920 -6 168.75 0 r +set L4VIEWEXT=True +rem ------------------------------------------------------------------ +call btprep.bat %1 %2 %3 %4 %5 %6 %7 %8 %9 +menu.bat short diff --git a/CONTENT/BT/BTCAM/BTCAM09.BAT b/CONTENT/BT/BTCAM/BTCAM09.BAT new file mode 100644 index 0000000..81dda88 --- /dev/null +++ b/CONTENT/BT/BTCAM/BTCAM09.BAT @@ -0,0 +1,43 @@ +@echo off +rem ------------------------------------------------------------------ +rem L4EYES=x y z pitch yaw roll [relative] +rem ------------------------------------------------------------------ +rem set L4EYES=25 5.9 -10 0 95 0 r +rem set L4EYES=0 7.3 -19 -7 180 0 r +rem Animation Cycle +rem set L4EYES=0 7.3 -19 -6 180 0 r +rem set L4EYES=-3.706716 7.3 -18.634920 -6 191.25 0 r +rem set L4EYES=-7.270985 7.3 -17.553711 -6 202.5 0 r +rem set L4EYES=-10.555834 7.3 -15.797922 -6 213.75 0 r +rem set L4EYES=-13.435028 7.3 -13.435028 -6 225 0 r +rem set L4EYES=-15.797922 7.3 -10.555834 -6 236.25 0 r +rem set L4EYES=-17.553711 7.3 -7.270985 -6 247.5 0 r +rem set L4EYES=-18.634920 7.3 -3.706716 -6 258.75 0 r +set L4EYES=-19 7.3 0 -6 270 0 r +rem set L4EYES=-18.634920 7.3 3.706716 -6 281.25 0 r +rem set L4EYES=-17.553711 7.3 7.270985 -6 292.5 0 r +rem set L4EYES=-15.797922 7.3 10.555834 -6 303.75 0 r +rem set L4EYES=-13.435028 7.3 13.435028 -6 315 0 r +rem set L4EYES=-10.555834 7.3 15.797922 -6 326.25 0 r +rem set L4EYES=-7.270985 7.3 17.553711 -6 337.5 0 r +rem set L4EYES=-3.706716 7.3 18.634920 -6 348.75 0 r +rem set L4EYES=0 7.3 19 -6 0 0 r +rem set L4EYES=3.706716 7.3 18.634920 -6 11.25 0 r +rem set L4EYES=7.270985 7.3 17.553711 -6 22.5 0 r +rem set L4EYES=10.555834 7.3 15.797922 -6 33.75 0 r +rem set L4EYES=13.435028 7.3 13.435028 -6 45 0 r +rem set L4EYES=15.797922 7.3 10.555834 -6 56.25 0 r +rem set L4EYES=17.553711 7.3 7.270985 -6 67.5 0 r +rem set L4EYES=18.634920 7.3 3.706716 -6 78.75 0 r +rem set L4EYES=19 7.3 0 -6 90 0 r +rem set L4EYES=18.634920 7.3 -3.706716 -6 101.25 0 r +rem set L4EYES=17.553711 7.3 -7.270985 -6 112.5 0 r +rem set L4EYES=15.797922 7.3 -10.555834 -6 123.75 0 r +rem set L4EYES=13.435028 7.3 -13.435028 -6 135 0 r +rem set L4EYES=10.555834 7.3 -15.797922 -6 146.25 0 r +rem set L4EYES=7.270985 7.3 -17.553711 -6 157.5 0 r +rem set L4EYES=3.706716 7.3 -18.634920 -6 168.75 0 r +set L4VIEWEXT=True +rem ------------------------------------------------------------------ +call btprep.bat %1 %2 %3 %4 %5 %6 %7 %8 %9 +menu.bat short diff --git a/CONTENT/BT/BTCAM/BTCAM10.BAT b/CONTENT/BT/BTCAM/BTCAM10.BAT new file mode 100644 index 0000000..0e261c0 --- /dev/null +++ b/CONTENT/BT/BTCAM/BTCAM10.BAT @@ -0,0 +1,43 @@ +@echo off +rem ------------------------------------------------------------------ +rem L4EYES=x y z pitch yaw roll [relative] +rem ------------------------------------------------------------------ +rem set L4EYES=25 5.9 -10 0 95 0 r +rem set L4EYES=0 7.3 -19 -7 180 0 r +rem Animation Cycle +rem set L4EYES=0 7.3 -19 -6 180 0 r +rem set L4EYES=-3.706716 7.3 -18.634920 -6 191.25 0 r +rem set L4EYES=-7.270985 7.3 -17.553711 -6 202.5 0 r +rem set L4EYES=-10.555834 7.3 -15.797922 -6 213.75 0 r +rem set L4EYES=-13.435028 7.3 -13.435028 -6 225 0 r +rem set L4EYES=-15.797922 7.3 -10.555834 -6 236.25 0 r +rem set L4EYES=-17.553711 7.3 -7.270985 -6 247.5 0 r +rem set L4EYES=-18.634920 7.3 -3.706716 -6 258.75 0 r +rem set L4EYES=-19 7.3 0 -6 270 0 r +set L4EYES=-18.634920 7.3 3.706716 -6 281.25 0 r +rem set L4EYES=-17.553711 7.3 7.270985 -6 292.5 0 r +rem set L4EYES=-15.797922 7.3 10.555834 -6 303.75 0 r +rem set L4EYES=-13.435028 7.3 13.435028 -6 315 0 r +rem set L4EYES=-10.555834 7.3 15.797922 -6 326.25 0 r +rem set L4EYES=-7.270985 7.3 17.553711 -6 337.5 0 r +rem set L4EYES=-3.706716 7.3 18.634920 -6 348.75 0 r +rem set L4EYES=0 7.3 19 -6 0 0 r +rem set L4EYES=3.706716 7.3 18.634920 -6 11.25 0 r +rem set L4EYES=7.270985 7.3 17.553711 -6 22.5 0 r +rem set L4EYES=10.555834 7.3 15.797922 -6 33.75 0 r +rem set L4EYES=13.435028 7.3 13.435028 -6 45 0 r +rem set L4EYES=15.797922 7.3 10.555834 -6 56.25 0 r +rem set L4EYES=17.553711 7.3 7.270985 -6 67.5 0 r +rem set L4EYES=18.634920 7.3 3.706716 -6 78.75 0 r +rem set L4EYES=19 7.3 0 -6 90 0 r +rem set L4EYES=18.634920 7.3 -3.706716 -6 101.25 0 r +rem set L4EYES=17.553711 7.3 -7.270985 -6 112.5 0 r +rem set L4EYES=15.797922 7.3 -10.555834 -6 123.75 0 r +rem set L4EYES=13.435028 7.3 -13.435028 -6 135 0 r +rem set L4EYES=10.555834 7.3 -15.797922 -6 146.25 0 r +rem set L4EYES=7.270985 7.3 -17.553711 -6 157.5 0 r +rem set L4EYES=3.706716 7.3 -18.634920 -6 168.75 0 r +set L4VIEWEXT=True +rem ------------------------------------------------------------------ +call btprep.bat %1 %2 %3 %4 %5 %6 %7 %8 %9 +menu.bat short diff --git a/CONTENT/BT/BTCAM/BTCAM11.BAT b/CONTENT/BT/BTCAM/BTCAM11.BAT new file mode 100644 index 0000000..5be6414 --- /dev/null +++ b/CONTENT/BT/BTCAM/BTCAM11.BAT @@ -0,0 +1,43 @@ +@echo off +rem ------------------------------------------------------------------ +rem L4EYES=x y z pitch yaw roll [relative] +rem ------------------------------------------------------------------ +rem set L4EYES=25 5.9 -10 0 95 0 r +rem set L4EYES=0 7.3 -19 -7 180 0 r +rem Animation Cycle +rem set L4EYES=0 7.3 -19 -6 180 0 r +rem set L4EYES=-3.706716 7.3 -18.634920 -6 191.25 0 r +rem set L4EYES=-7.270985 7.3 -17.553711 -6 202.5 0 r +rem set L4EYES=-10.555834 7.3 -15.797922 -6 213.75 0 r +rem set L4EYES=-13.435028 7.3 -13.435028 -6 225 0 r +rem set L4EYES=-15.797922 7.3 -10.555834 -6 236.25 0 r +rem set L4EYES=-17.553711 7.3 -7.270985 -6 247.5 0 r +rem set L4EYES=-18.634920 7.3 -3.706716 -6 258.75 0 r +rem set L4EYES=-19 7.3 0 -6 270 0 r +rem set L4EYES=-18.634920 7.3 3.706716 -6 281.25 0 r +set L4EYES=-17.553711 7.3 7.270985 -6 292.5 0 r +rem set L4EYES=-15.797922 7.3 10.555834 -6 303.75 0 r +rem set L4EYES=-13.435028 7.3 13.435028 -6 315 0 r +rem set L4EYES=-10.555834 7.3 15.797922 -6 326.25 0 r +rem set L4EYES=-7.270985 7.3 17.553711 -6 337.5 0 r +rem set L4EYES=-3.706716 7.3 18.634920 -6 348.75 0 r +rem set L4EYES=0 7.3 19 -6 0 0 r +rem set L4EYES=3.706716 7.3 18.634920 -6 11.25 0 r +rem set L4EYES=7.270985 7.3 17.553711 -6 22.5 0 r +rem set L4EYES=10.555834 7.3 15.797922 -6 33.75 0 r +rem set L4EYES=13.435028 7.3 13.435028 -6 45 0 r +rem set L4EYES=15.797922 7.3 10.555834 -6 56.25 0 r +rem set L4EYES=17.553711 7.3 7.270985 -6 67.5 0 r +rem set L4EYES=18.634920 7.3 3.706716 -6 78.75 0 r +rem set L4EYES=19 7.3 0 -6 90 0 r +rem set L4EYES=18.634920 7.3 -3.706716 -6 101.25 0 r +rem set L4EYES=17.553711 7.3 -7.270985 -6 112.5 0 r +rem set L4EYES=15.797922 7.3 -10.555834 -6 123.75 0 r +rem set L4EYES=13.435028 7.3 -13.435028 -6 135 0 r +rem set L4EYES=10.555834 7.3 -15.797922 -6 146.25 0 r +rem set L4EYES=7.270985 7.3 -17.553711 -6 157.5 0 r +rem set L4EYES=3.706716 7.3 -18.634920 -6 168.75 0 r +set L4VIEWEXT=True +rem ------------------------------------------------------------------ +call btprep.bat %1 %2 %3 %4 %5 %6 %7 %8 %9 +menu.bat short diff --git a/CONTENT/BT/BTCAM/BTCAM12.BAT b/CONTENT/BT/BTCAM/BTCAM12.BAT new file mode 100644 index 0000000..afed698 --- /dev/null +++ b/CONTENT/BT/BTCAM/BTCAM12.BAT @@ -0,0 +1,43 @@ +@echo off +rem ------------------------------------------------------------------ +rem L4EYES=x y z pitch yaw roll [relative] +rem ------------------------------------------------------------------ +rem set L4EYES=25 5.9 -10 0 95 0 r +rem set L4EYES=0 7.3 -19 -7 180 0 r +rem Animation Cycle +rem set L4EYES=0 7.3 -19 -6 180 0 r +rem set L4EYES=-3.706716 7.3 -18.634920 -6 191.25 0 r +rem set L4EYES=-7.270985 7.3 -17.553711 -6 202.5 0 r +rem set L4EYES=-10.555834 7.3 -15.797922 -6 213.75 0 r +rem set L4EYES=-13.435028 7.3 -13.435028 -6 225 0 r +rem set L4EYES=-15.797922 7.3 -10.555834 -6 236.25 0 r +rem set L4EYES=-17.553711 7.3 -7.270985 -6 247.5 0 r +rem set L4EYES=-18.634920 7.3 -3.706716 -6 258.75 0 r +rem set L4EYES=-19 7.3 0 -6 270 0 r +rem set L4EYES=-18.634920 7.3 3.706716 -6 281.25 0 r +rem set L4EYES=-17.553711 7.3 7.270985 -6 292.5 0 r +set L4EYES=-15.797922 7.3 10.555834 -6 303.75 0 r +rem set L4EYES=-13.435028 7.3 13.435028 -6 315 0 r +rem set L4EYES=-10.555834 7.3 15.797922 -6 326.25 0 r +rem set L4EYES=-7.270985 7.3 17.553711 -6 337.5 0 r +rem set L4EYES=-3.706716 7.3 18.634920 -6 348.75 0 r +rem set L4EYES=0 7.3 19 -6 0 0 r +rem set L4EYES=3.706716 7.3 18.634920 -6 11.25 0 r +rem set L4EYES=7.270985 7.3 17.553711 -6 22.5 0 r +rem set L4EYES=10.555834 7.3 15.797922 -6 33.75 0 r +rem set L4EYES=13.435028 7.3 13.435028 -6 45 0 r +rem set L4EYES=15.797922 7.3 10.555834 -6 56.25 0 r +rem set L4EYES=17.553711 7.3 7.270985 -6 67.5 0 r +rem set L4EYES=18.634920 7.3 3.706716 -6 78.75 0 r +rem set L4EYES=19 7.3 0 -6 90 0 r +rem set L4EYES=18.634920 7.3 -3.706716 -6 101.25 0 r +rem set L4EYES=17.553711 7.3 -7.270985 -6 112.5 0 r +rem set L4EYES=15.797922 7.3 -10.555834 -6 123.75 0 r +rem set L4EYES=13.435028 7.3 -13.435028 -6 135 0 r +rem set L4EYES=10.555834 7.3 -15.797922 -6 146.25 0 r +rem set L4EYES=7.270985 7.3 -17.553711 -6 157.5 0 r +rem set L4EYES=3.706716 7.3 -18.634920 -6 168.75 0 r +set L4VIEWEXT=True +rem ------------------------------------------------------------------ +call btprep.bat %1 %2 %3 %4 %5 %6 %7 %8 %9 +menu.bat short diff --git a/CONTENT/BT/BTCAM/BTCAM13.BAT b/CONTENT/BT/BTCAM/BTCAM13.BAT new file mode 100644 index 0000000..2cd7bbc --- /dev/null +++ b/CONTENT/BT/BTCAM/BTCAM13.BAT @@ -0,0 +1,43 @@ +@echo off +rem ------------------------------------------------------------------ +rem L4EYES=x y z pitch yaw roll [relative] +rem ------------------------------------------------------------------ +rem set L4EYES=25 5.9 -10 0 95 0 r +rem set L4EYES=0 7.3 -19 -7 180 0 r +rem Animation Cycle +rem set L4EYES=0 7.3 -19 -6 180 0 r +rem set L4EYES=-3.706716 7.3 -18.634920 -6 191.25 0 r +rem set L4EYES=-7.270985 7.3 -17.553711 -6 202.5 0 r +rem set L4EYES=-10.555834 7.3 -15.797922 -6 213.75 0 r +rem set L4EYES=-13.435028 7.3 -13.435028 -6 225 0 r +rem set L4EYES=-15.797922 7.3 -10.555834 -6 236.25 0 r +rem set L4EYES=-17.553711 7.3 -7.270985 -6 247.5 0 r +rem set L4EYES=-18.634920 7.3 -3.706716 -6 258.75 0 r +rem set L4EYES=-19 7.3 0 -6 270 0 r +rem set L4EYES=-18.634920 7.3 3.706716 -6 281.25 0 r +rem set L4EYES=-17.553711 7.3 7.270985 -6 292.5 0 r +rem set L4EYES=-15.797922 7.3 10.555834 -6 303.75 0 r +set L4EYES=-13.435028 7.3 13.435028 -6 315 0 r +rem set L4EYES=-10.555834 7.3 15.797922 -6 326.25 0 r +rem set L4EYES=-7.270985 7.3 17.553711 -6 337.5 0 r +rem set L4EYES=-3.706716 7.3 18.634920 -6 348.75 0 r +rem set L4EYES=0 7.3 19 -6 0 0 r +rem set L4EYES=3.706716 7.3 18.634920 -6 11.25 0 r +rem set L4EYES=7.270985 7.3 17.553711 -6 22.5 0 r +rem set L4EYES=10.555834 7.3 15.797922 -6 33.75 0 r +rem set L4EYES=13.435028 7.3 13.435028 -6 45 0 r +rem set L4EYES=15.797922 7.3 10.555834 -6 56.25 0 r +rem set L4EYES=17.553711 7.3 7.270985 -6 67.5 0 r +rem set L4EYES=18.634920 7.3 3.706716 -6 78.75 0 r +rem set L4EYES=19 7.3 0 -6 90 0 r +rem set L4EYES=18.634920 7.3 -3.706716 -6 101.25 0 r +rem set L4EYES=17.553711 7.3 -7.270985 -6 112.5 0 r +rem set L4EYES=15.797922 7.3 -10.555834 -6 123.75 0 r +rem set L4EYES=13.435028 7.3 -13.435028 -6 135 0 r +rem set L4EYES=10.555834 7.3 -15.797922 -6 146.25 0 r +rem set L4EYES=7.270985 7.3 -17.553711 -6 157.5 0 r +rem set L4EYES=3.706716 7.3 -18.634920 -6 168.75 0 r +set L4VIEWEXT=True +rem ------------------------------------------------------------------ +call btprep.bat %1 %2 %3 %4 %5 %6 %7 %8 %9 +menu.bat short diff --git a/CONTENT/BT/BTCAM/BTCAM14.BAT b/CONTENT/BT/BTCAM/BTCAM14.BAT new file mode 100644 index 0000000..dad1d08 --- /dev/null +++ b/CONTENT/BT/BTCAM/BTCAM14.BAT @@ -0,0 +1,43 @@ +@echo off +rem ------------------------------------------------------------------ +rem L4EYES=x y z pitch yaw roll [relative] +rem ------------------------------------------------------------------ +rem set L4EYES=25 5.9 -10 0 95 0 r +rem set L4EYES=0 7.3 -19 -7 180 0 r +rem Animation Cycle +rem set L4EYES=0 7.3 -19 -6 180 0 r +rem set L4EYES=-3.706716 7.3 -18.634920 -6 191.25 0 r +rem set L4EYES=-7.270985 7.3 -17.553711 -6 202.5 0 r +rem set L4EYES=-10.555834 7.3 -15.797922 -6 213.75 0 r +rem set L4EYES=-13.435028 7.3 -13.435028 -6 225 0 r +rem set L4EYES=-15.797922 7.3 -10.555834 -6 236.25 0 r +rem set L4EYES=-17.553711 7.3 -7.270985 -6 247.5 0 r +rem set L4EYES=-18.634920 7.3 -3.706716 -6 258.75 0 r +rem set L4EYES=-19 7.3 0 -6 270 0 r +rem set L4EYES=-18.634920 7.3 3.706716 -6 281.25 0 r +rem set L4EYES=-17.553711 7.3 7.270985 -6 292.5 0 r +rem set L4EYES=-15.797922 7.3 10.555834 -6 303.75 0 r +rem set L4EYES=-13.435028 7.3 13.435028 -6 315 0 r +set L4EYES=-10.555834 7.3 15.797922 -6 326.25 0 r +rem set L4EYES=-7.270985 7.3 17.553711 -6 337.5 0 r +rem set L4EYES=-3.706716 7.3 18.634920 -6 348.75 0 r +rem set L4EYES=0 7.3 19 -6 0 0 r +rem set L4EYES=3.706716 7.3 18.634920 -6 11.25 0 r +rem set L4EYES=7.270985 7.3 17.553711 -6 22.5 0 r +rem set L4EYES=10.555834 7.3 15.797922 -6 33.75 0 r +rem set L4EYES=13.435028 7.3 13.435028 -6 45 0 r +rem set L4EYES=15.797922 7.3 10.555834 -6 56.25 0 r +rem set L4EYES=17.553711 7.3 7.270985 -6 67.5 0 r +rem set L4EYES=18.634920 7.3 3.706716 -6 78.75 0 r +rem set L4EYES=19 7.3 0 -6 90 0 r +rem set L4EYES=18.634920 7.3 -3.706716 -6 101.25 0 r +rem set L4EYES=17.553711 7.3 -7.270985 -6 112.5 0 r +rem set L4EYES=15.797922 7.3 -10.555834 -6 123.75 0 r +rem set L4EYES=13.435028 7.3 -13.435028 -6 135 0 r +rem set L4EYES=10.555834 7.3 -15.797922 -6 146.25 0 r +rem set L4EYES=7.270985 7.3 -17.553711 -6 157.5 0 r +rem set L4EYES=3.706716 7.3 -18.634920 -6 168.75 0 r +set L4VIEWEXT=True +rem ------------------------------------------------------------------ +call btprep.bat %1 %2 %3 %4 %5 %6 %7 %8 %9 +menu.bat short diff --git a/CONTENT/BT/BTCAM/BTCAM15.BAT b/CONTENT/BT/BTCAM/BTCAM15.BAT new file mode 100644 index 0000000..1bf02df --- /dev/null +++ b/CONTENT/BT/BTCAM/BTCAM15.BAT @@ -0,0 +1,43 @@ +@echo off +rem ------------------------------------------------------------------ +rem L4EYES=x y z pitch yaw roll [relative] +rem ------------------------------------------------------------------ +rem set L4EYES=25 5.9 -10 0 95 0 r +rem set L4EYES=0 7.3 -19 -7 180 0 r +rem Animation Cycle +rem set L4EYES=0 7.3 -19 -6 180 0 r +rem set L4EYES=-3.706716 7.3 -18.634920 -6 191.25 0 r +rem set L4EYES=-7.270985 7.3 -17.553711 -6 202.5 0 r +rem set L4EYES=-10.555834 7.3 -15.797922 -6 213.75 0 r +rem set L4EYES=-13.435028 7.3 -13.435028 -6 225 0 r +rem set L4EYES=-15.797922 7.3 -10.555834 -6 236.25 0 r +rem set L4EYES=-17.553711 7.3 -7.270985 -6 247.5 0 r +rem set L4EYES=-18.634920 7.3 -3.706716 -6 258.75 0 r +rem set L4EYES=-19 7.3 0 -6 270 0 r +rem set L4EYES=-18.634920 7.3 3.706716 -6 281.25 0 r +rem set L4EYES=-17.553711 7.3 7.270985 -6 292.5 0 r +rem set L4EYES=-15.797922 7.3 10.555834 -6 303.75 0 r +rem set L4EYES=-13.435028 7.3 13.435028 -6 315 0 r +rem set L4EYES=-10.555834 7.3 15.797922 -6 326.25 0 r +set L4EYES=-7.270985 7.3 17.553711 -6 337.5 0 r +rem set L4EYES=-3.706716 7.3 18.634920 -6 348.75 0 r +rem set L4EYES=0 7.3 19 -6 0 0 r +rem set L4EYES=3.706716 7.3 18.634920 -6 11.25 0 r +rem set L4EYES=7.270985 7.3 17.553711 -6 22.5 0 r +rem set L4EYES=10.555834 7.3 15.797922 -6 33.75 0 r +rem set L4EYES=13.435028 7.3 13.435028 -6 45 0 r +rem set L4EYES=15.797922 7.3 10.555834 -6 56.25 0 r +rem set L4EYES=17.553711 7.3 7.270985 -6 67.5 0 r +rem set L4EYES=18.634920 7.3 3.706716 -6 78.75 0 r +rem set L4EYES=19 7.3 0 -6 90 0 r +rem set L4EYES=18.634920 7.3 -3.706716 -6 101.25 0 r +rem set L4EYES=17.553711 7.3 -7.270985 -6 112.5 0 r +rem set L4EYES=15.797922 7.3 -10.555834 -6 123.75 0 r +rem set L4EYES=13.435028 7.3 -13.435028 -6 135 0 r +rem set L4EYES=10.555834 7.3 -15.797922 -6 146.25 0 r +rem set L4EYES=7.270985 7.3 -17.553711 -6 157.5 0 r +rem set L4EYES=3.706716 7.3 -18.634920 -6 168.75 0 r +set L4VIEWEXT=True +rem ------------------------------------------------------------------ +call btprep.bat %1 %2 %3 %4 %5 %6 %7 %8 %9 +menu.bat short diff --git a/CONTENT/BT/BTCAM/BTCAM16.BAT b/CONTENT/BT/BTCAM/BTCAM16.BAT new file mode 100644 index 0000000..28a44f6 --- /dev/null +++ b/CONTENT/BT/BTCAM/BTCAM16.BAT @@ -0,0 +1,43 @@ +@echo off +rem ------------------------------------------------------------------ +rem L4EYES=x y z pitch yaw roll [relative] +rem ------------------------------------------------------------------ +rem set L4EYES=25 5.9 -10 0 95 0 r +rem set L4EYES=0 7.3 -19 -7 180 0 r +rem Animation Cycle +rem set L4EYES=0 7.3 -19 -6 180 0 r +rem set L4EYES=-3.706716 7.3 -18.634920 -6 191.25 0 r +rem set L4EYES=-7.270985 7.3 -17.553711 -6 202.5 0 r +rem set L4EYES=-10.555834 7.3 -15.797922 -6 213.75 0 r +rem set L4EYES=-13.435028 7.3 -13.435028 -6 225 0 r +rem set L4EYES=-15.797922 7.3 -10.555834 -6 236.25 0 r +rem set L4EYES=-17.553711 7.3 -7.270985 -6 247.5 0 r +rem set L4EYES=-18.634920 7.3 -3.706716 -6 258.75 0 r +rem set L4EYES=-19 7.3 0 -6 270 0 r +rem set L4EYES=-18.634920 7.3 3.706716 -6 281.25 0 r +rem set L4EYES=-17.553711 7.3 7.270985 -6 292.5 0 r +rem set L4EYES=-15.797922 7.3 10.555834 -6 303.75 0 r +rem set L4EYES=-13.435028 7.3 13.435028 -6 315 0 r +rem set L4EYES=-10.555834 7.3 15.797922 -6 326.25 0 r +rem set L4EYES=-7.270985 7.3 17.553711 -6 337.5 0 r +set L4EYES=-3.706716 7.3 18.634920 -6 348.75 0 r +rem set L4EYES=0 7.3 19 -6 0 0 r +rem set L4EYES=3.706716 7.3 18.634920 -6 11.25 0 r +rem set L4EYES=7.270985 7.3 17.553711 -6 22.5 0 r +rem set L4EYES=10.555834 7.3 15.797922 -6 33.75 0 r +rem set L4EYES=13.435028 7.3 13.435028 -6 45 0 r +rem set L4EYES=15.797922 7.3 10.555834 -6 56.25 0 r +rem set L4EYES=17.553711 7.3 7.270985 -6 67.5 0 r +rem set L4EYES=18.634920 7.3 3.706716 -6 78.75 0 r +rem set L4EYES=19 7.3 0 -6 90 0 r +rem set L4EYES=18.634920 7.3 -3.706716 -6 101.25 0 r +rem set L4EYES=17.553711 7.3 -7.270985 -6 112.5 0 r +rem set L4EYES=15.797922 7.3 -10.555834 -6 123.75 0 r +rem set L4EYES=13.435028 7.3 -13.435028 -6 135 0 r +rem set L4EYES=10.555834 7.3 -15.797922 -6 146.25 0 r +rem set L4EYES=7.270985 7.3 -17.553711 -6 157.5 0 r +rem set L4EYES=3.706716 7.3 -18.634920 -6 168.75 0 r +set L4VIEWEXT=True +rem ------------------------------------------------------------------ +call btprep.bat %1 %2 %3 %4 %5 %6 %7 %8 %9 +menu.bat short diff --git a/CONTENT/BT/BTCAM/BTCAM17.BAT b/CONTENT/BT/BTCAM/BTCAM17.BAT new file mode 100644 index 0000000..f20835c --- /dev/null +++ b/CONTENT/BT/BTCAM/BTCAM17.BAT @@ -0,0 +1,43 @@ +@echo off +rem ------------------------------------------------------------------ +rem L4EYES=x y z pitch yaw roll [relative] +rem ------------------------------------------------------------------ +rem set L4EYES=25 5.9 -10 0 95 0 r +rem set L4EYES=0 7.3 -19 -7 180 0 r +rem Animation Cycle +rem set L4EYES=0 7.3 -19 -6 180 0 r +rem set L4EYES=-3.706716 7.3 -18.634920 -6 191.25 0 r +rem set L4EYES=-7.270985 7.3 -17.553711 -6 202.5 0 r +rem set L4EYES=-10.555834 7.3 -15.797922 -6 213.75 0 r +rem set L4EYES=-13.435028 7.3 -13.435028 -6 225 0 r +rem set L4EYES=-15.797922 7.3 -10.555834 -6 236.25 0 r +rem set L4EYES=-17.553711 7.3 -7.270985 -6 247.5 0 r +rem set L4EYES=-18.634920 7.3 -3.706716 -6 258.75 0 r +rem set L4EYES=-19 7.3 0 -6 270 0 r +rem set L4EYES=-18.634920 7.3 3.706716 -6 281.25 0 r +rem set L4EYES=-17.553711 7.3 7.270985 -6 292.5 0 r +rem set L4EYES=-15.797922 7.3 10.555834 -6 303.75 0 r +rem set L4EYES=-13.435028 7.3 13.435028 -6 315 0 r +rem set L4EYES=-10.555834 7.3 15.797922 -6 326.25 0 r +rem set L4EYES=-7.270985 7.3 17.553711 -6 337.5 0 r +rem set L4EYES=-3.706716 7.3 18.634920 -6 348.75 0 r +set L4EYES=0 7.3 19 -6 0 0 r +rem set L4EYES=3.706716 7.3 18.634920 -6 11.25 0 r +rem set L4EYES=7.270985 7.3 17.553711 -6 22.5 0 r +rem set L4EYES=10.555834 7.3 15.797922 -6 33.75 0 r +rem set L4EYES=13.435028 7.3 13.435028 -6 45 0 r +rem set L4EYES=15.797922 7.3 10.555834 -6 56.25 0 r +rem set L4EYES=17.553711 7.3 7.270985 -6 67.5 0 r +rem set L4EYES=18.634920 7.3 3.706716 -6 78.75 0 r +rem set L4EYES=19 7.3 0 -6 90 0 r +rem set L4EYES=18.634920 7.3 -3.706716 -6 101.25 0 r +rem set L4EYES=17.553711 7.3 -7.270985 -6 112.5 0 r +rem set L4EYES=15.797922 7.3 -10.555834 -6 123.75 0 r +rem set L4EYES=13.435028 7.3 -13.435028 -6 135 0 r +rem set L4EYES=10.555834 7.3 -15.797922 -6 146.25 0 r +rem set L4EYES=7.270985 7.3 -17.553711 -6 157.5 0 r +rem set L4EYES=3.706716 7.3 -18.634920 -6 168.75 0 r +set L4VIEWEXT=True +rem ------------------------------------------------------------------ +call btprep.bat %1 %2 %3 %4 %5 %6 %7 %8 %9 +menu.bat short diff --git a/CONTENT/BT/BTCAM/BTCAM18.BAT b/CONTENT/BT/BTCAM/BTCAM18.BAT new file mode 100644 index 0000000..d9a1b23 --- /dev/null +++ b/CONTENT/BT/BTCAM/BTCAM18.BAT @@ -0,0 +1,43 @@ +@echo off +rem ------------------------------------------------------------------ +rem L4EYES=x y z pitch yaw roll [relative] +rem ------------------------------------------------------------------ +rem set L4EYES=25 5.9 -10 0 95 0 r +rem set L4EYES=0 7.3 -19 -7 180 0 r +rem Animation Cycle +rem set L4EYES=0 7.3 -19 -6 180 0 r +rem set L4EYES=-3.706716 7.3 -18.634920 -6 191.25 0 r +rem set L4EYES=-7.270985 7.3 -17.553711 -6 202.5 0 r +rem set L4EYES=-10.555834 7.3 -15.797922 -6 213.75 0 r +rem set L4EYES=-13.435028 7.3 -13.435028 -6 225 0 r +rem set L4EYES=-15.797922 7.3 -10.555834 -6 236.25 0 r +rem set L4EYES=-17.553711 7.3 -7.270985 -6 247.5 0 r +rem set L4EYES=-18.634920 7.3 -3.706716 -6 258.75 0 r +rem set L4EYES=-19 7.3 0 -6 270 0 r +rem set L4EYES=-18.634920 7.3 3.706716 -6 281.25 0 r +rem set L4EYES=-17.553711 7.3 7.270985 -6 292.5 0 r +rem set L4EYES=-15.797922 7.3 10.555834 -6 303.75 0 r +rem set L4EYES=-13.435028 7.3 13.435028 -6 315 0 r +rem set L4EYES=-10.555834 7.3 15.797922 -6 326.25 0 r +rem set L4EYES=-7.270985 7.3 17.553711 -6 337.5 0 r +rem set L4EYES=-3.706716 7.3 18.634920 -6 348.75 0 r +rem set L4EYES=0 7.3 19 -6 0 0 r +set L4EYES=3.706716 7.3 18.634920 -6 11.25 0 r +rem set L4EYES=7.270985 7.3 17.553711 -6 22.5 0 r +rem set L4EYES=10.555834 7.3 15.797922 -6 33.75 0 r +rem set L4EYES=13.435028 7.3 13.435028 -6 45 0 r +rem set L4EYES=15.797922 7.3 10.555834 -6 56.25 0 r +rem set L4EYES=17.553711 7.3 7.270985 -6 67.5 0 r +rem set L4EYES=18.634920 7.3 3.706716 -6 78.75 0 r +rem set L4EYES=19 7.3 0 -6 90 0 r +rem set L4EYES=18.634920 7.3 -3.706716 -6 101.25 0 r +rem set L4EYES=17.553711 7.3 -7.270985 -6 112.5 0 r +rem set L4EYES=15.797922 7.3 -10.555834 -6 123.75 0 r +rem set L4EYES=13.435028 7.3 -13.435028 -6 135 0 r +rem set L4EYES=10.555834 7.3 -15.797922 -6 146.25 0 r +rem set L4EYES=7.270985 7.3 -17.553711 -6 157.5 0 r +rem set L4EYES=3.706716 7.3 -18.634920 -6 168.75 0 r +set L4VIEWEXT=True +rem ------------------------------------------------------------------ +call btprep.bat %1 %2 %3 %4 %5 %6 %7 %8 %9 +menu.bat short diff --git a/CONTENT/BT/BTCAM/BTCAM19.BAT b/CONTENT/BT/BTCAM/BTCAM19.BAT new file mode 100644 index 0000000..c2ca9d4 --- /dev/null +++ b/CONTENT/BT/BTCAM/BTCAM19.BAT @@ -0,0 +1,43 @@ +@echo off +rem ------------------------------------------------------------------ +rem L4EYES=x y z pitch yaw roll [relative] +rem ------------------------------------------------------------------ +rem set L4EYES=25 5.9 -10 0 95 0 r +rem set L4EYES=0 7.3 -19 -7 180 0 r +rem Animation Cycle +rem set L4EYES=0 7.3 -19 -6 180 0 r +rem set L4EYES=-3.706716 7.3 -18.634920 -6 191.25 0 r +rem set L4EYES=-7.270985 7.3 -17.553711 -6 202.5 0 r +rem set L4EYES=-10.555834 7.3 -15.797922 -6 213.75 0 r +rem set L4EYES=-13.435028 7.3 -13.435028 -6 225 0 r +rem set L4EYES=-15.797922 7.3 -10.555834 -6 236.25 0 r +rem set L4EYES=-17.553711 7.3 -7.270985 -6 247.5 0 r +rem set L4EYES=-18.634920 7.3 -3.706716 -6 258.75 0 r +rem set L4EYES=-19 7.3 0 -6 270 0 r +rem set L4EYES=-18.634920 7.3 3.706716 -6 281.25 0 r +rem set L4EYES=-17.553711 7.3 7.270985 -6 292.5 0 r +rem set L4EYES=-15.797922 7.3 10.555834 -6 303.75 0 r +rem set L4EYES=-13.435028 7.3 13.435028 -6 315 0 r +rem set L4EYES=-10.555834 7.3 15.797922 -6 326.25 0 r +rem set L4EYES=-7.270985 7.3 17.553711 -6 337.5 0 r +rem set L4EYES=-3.706716 7.3 18.634920 -6 348.75 0 r +rem set L4EYES=0 7.3 19 -6 0 0 r +rem set L4EYES=3.706716 7.3 18.634920 -6 11.25 0 r +set L4EYES=7.270985 7.3 17.553711 -6 22.5 0 r +rem set L4EYES=10.555834 7.3 15.797922 -6 33.75 0 r +rem set L4EYES=13.435028 7.3 13.435028 -6 45 0 r +rem set L4EYES=15.797922 7.3 10.555834 -6 56.25 0 r +rem set L4EYES=17.553711 7.3 7.270985 -6 67.5 0 r +rem set L4EYES=18.634920 7.3 3.706716 -6 78.75 0 r +rem set L4EYES=19 7.3 0 -6 90 0 r +rem set L4EYES=18.634920 7.3 -3.706716 -6 101.25 0 r +rem set L4EYES=17.553711 7.3 -7.270985 -6 112.5 0 r +rem set L4EYES=15.797922 7.3 -10.555834 -6 123.75 0 r +rem set L4EYES=13.435028 7.3 -13.435028 -6 135 0 r +rem set L4EYES=10.555834 7.3 -15.797922 -6 146.25 0 r +rem set L4EYES=7.270985 7.3 -17.553711 -6 157.5 0 r +rem set L4EYES=3.706716 7.3 -18.634920 -6 168.75 0 r +set L4VIEWEXT=True +rem ------------------------------------------------------------------ +call btprep.bat %1 %2 %3 %4 %5 %6 %7 %8 %9 +menu.bat short diff --git a/CONTENT/BT/BTCAM/BTCAM20.BAT b/CONTENT/BT/BTCAM/BTCAM20.BAT new file mode 100644 index 0000000..760f59f --- /dev/null +++ b/CONTENT/BT/BTCAM/BTCAM20.BAT @@ -0,0 +1,43 @@ +@echo off +rem ------------------------------------------------------------------ +rem L4EYES=x y z pitch yaw roll [relative] +rem ------------------------------------------------------------------ +rem set L4EYES=25 5.9 -10 0 95 0 r +rem set L4EYES=0 7.3 -19 -7 180 0 r +rem Animation Cycle +rem set L4EYES=0 7.3 -19 -6 180 0 r +rem set L4EYES=-3.706716 7.3 -18.634920 -6 191.25 0 r +rem set L4EYES=-7.270985 7.3 -17.553711 -6 202.5 0 r +rem set L4EYES=-10.555834 7.3 -15.797922 -6 213.75 0 r +rem set L4EYES=-13.435028 7.3 -13.435028 -6 225 0 r +rem set L4EYES=-15.797922 7.3 -10.555834 -6 236.25 0 r +rem set L4EYES=-17.553711 7.3 -7.270985 -6 247.5 0 r +rem set L4EYES=-18.634920 7.3 -3.706716 -6 258.75 0 r +rem set L4EYES=-19 7.3 0 -6 270 0 r +rem set L4EYES=-18.634920 7.3 3.706716 -6 281.25 0 r +rem set L4EYES=-17.553711 7.3 7.270985 -6 292.5 0 r +rem set L4EYES=-15.797922 7.3 10.555834 -6 303.75 0 r +rem set L4EYES=-13.435028 7.3 13.435028 -6 315 0 r +rem set L4EYES=-10.555834 7.3 15.797922 -6 326.25 0 r +rem set L4EYES=-7.270985 7.3 17.553711 -6 337.5 0 r +rem set L4EYES=-3.706716 7.3 18.634920 -6 348.75 0 r +rem set L4EYES=0 7.3 19 -6 0 0 r +rem set L4EYES=3.706716 7.3 18.634920 -6 11.25 0 r +rem set L4EYES=7.270985 7.3 17.553711 -6 22.5 0 r +set L4EYES=10.555834 7.3 15.797922 -6 33.75 0 r +rem set L4EYES=13.435028 7.3 13.435028 -6 45 0 r +rem set L4EYES=15.797922 7.3 10.555834 -6 56.25 0 r +rem set L4EYES=17.553711 7.3 7.270985 -6 67.5 0 r +rem set L4EYES=18.634920 7.3 3.706716 -6 78.75 0 r +rem set L4EYES=19 7.3 0 -6 90 0 r +rem set L4EYES=18.634920 7.3 -3.706716 -6 101.25 0 r +rem set L4EYES=17.553711 7.3 -7.270985 -6 112.5 0 r +rem set L4EYES=15.797922 7.3 -10.555834 -6 123.75 0 r +rem set L4EYES=13.435028 7.3 -13.435028 -6 135 0 r +rem set L4EYES=10.555834 7.3 -15.797922 -6 146.25 0 r +rem set L4EYES=7.270985 7.3 -17.553711 -6 157.5 0 r +rem set L4EYES=3.706716 7.3 -18.634920 -6 168.75 0 r +set L4VIEWEXT=True +rem ------------------------------------------------------------------ +call btprep.bat %1 %2 %3 %4 %5 %6 %7 %8 %9 +menu.bat short diff --git a/CONTENT/BT/BTCAM/BTCAM21.BAT b/CONTENT/BT/BTCAM/BTCAM21.BAT new file mode 100644 index 0000000..7e37ed9 --- /dev/null +++ b/CONTENT/BT/BTCAM/BTCAM21.BAT @@ -0,0 +1,43 @@ +@echo off +rem ------------------------------------------------------------------ +rem L4EYES=x y z pitch yaw roll [relative] +rem ------------------------------------------------------------------ +rem set L4EYES=25 5.9 -10 0 95 0 r +rem set L4EYES=0 7.3 -19 -7 180 0 r +rem Animation Cycle +rem set L4EYES=0 7.3 -19 -6 180 0 r +rem set L4EYES=-3.706716 7.3 -18.634920 -6 191.25 0 r +rem set L4EYES=-7.270985 7.3 -17.553711 -6 202.5 0 r +rem set L4EYES=-10.555834 7.3 -15.797922 -6 213.75 0 r +rem set L4EYES=-13.435028 7.3 -13.435028 -6 225 0 r +rem set L4EYES=-15.797922 7.3 -10.555834 -6 236.25 0 r +rem set L4EYES=-17.553711 7.3 -7.270985 -6 247.5 0 r +rem set L4EYES=-18.634920 7.3 -3.706716 -6 258.75 0 r +rem set L4EYES=-19 7.3 0 -6 270 0 r +rem set L4EYES=-18.634920 7.3 3.706716 -6 281.25 0 r +rem set L4EYES=-17.553711 7.3 7.270985 -6 292.5 0 r +rem set L4EYES=-15.797922 7.3 10.555834 -6 303.75 0 r +rem set L4EYES=-13.435028 7.3 13.435028 -6 315 0 r +rem set L4EYES=-10.555834 7.3 15.797922 -6 326.25 0 r +rem set L4EYES=-7.270985 7.3 17.553711 -6 337.5 0 r +rem set L4EYES=-3.706716 7.3 18.634920 -6 348.75 0 r +rem set L4EYES=0 7.3 19 -6 0 0 r +rem set L4EYES=3.706716 7.3 18.634920 -6 11.25 0 r +rem set L4EYES=7.270985 7.3 17.553711 -6 22.5 0 r +rem set L4EYES=10.555834 7.3 15.797922 -6 33.75 0 r +set L4EYES=13.435028 7.3 13.435028 -6 45 0 r +rem set L4EYES=15.797922 7.3 10.555834 -6 56.25 0 r +rem set L4EYES=17.553711 7.3 7.270985 -6 67.5 0 r +rem set L4EYES=18.634920 7.3 3.706716 -6 78.75 0 r +rem set L4EYES=19 7.3 0 -6 90 0 r +rem set L4EYES=18.634920 7.3 -3.706716 -6 101.25 0 r +rem set L4EYES=17.553711 7.3 -7.270985 -6 112.5 0 r +rem set L4EYES=15.797922 7.3 -10.555834 -6 123.75 0 r +rem set L4EYES=13.435028 7.3 -13.435028 -6 135 0 r +rem set L4EYES=10.555834 7.3 -15.797922 -6 146.25 0 r +rem set L4EYES=7.270985 7.3 -17.553711 -6 157.5 0 r +rem set L4EYES=3.706716 7.3 -18.634920 -6 168.75 0 r +set L4VIEWEXT=True +rem ------------------------------------------------------------------ +call btprep.bat %1 %2 %3 %4 %5 %6 %7 %8 %9 +menu.bat short diff --git a/CONTENT/BT/BTCAM/BTCAM22.BAT b/CONTENT/BT/BTCAM/BTCAM22.BAT new file mode 100644 index 0000000..982ee90 --- /dev/null +++ b/CONTENT/BT/BTCAM/BTCAM22.BAT @@ -0,0 +1,43 @@ +@echo off +rem ------------------------------------------------------------------ +rem L4EYES=x y z pitch yaw roll [relative] +rem ------------------------------------------------------------------ +rem set L4EYES=25 5.9 -10 0 95 0 r +rem set L4EYES=0 7.3 -19 -7 180 0 r +rem Animation Cycle +rem set L4EYES=0 7.3 -19 -6 180 0 r +rem set L4EYES=-3.706716 7.3 -18.634920 -6 191.25 0 r +rem set L4EYES=-7.270985 7.3 -17.553711 -6 202.5 0 r +rem set L4EYES=-10.555834 7.3 -15.797922 -6 213.75 0 r +rem set L4EYES=-13.435028 7.3 -13.435028 -6 225 0 r +rem set L4EYES=-15.797922 7.3 -10.555834 -6 236.25 0 r +rem set L4EYES=-17.553711 7.3 -7.270985 -6 247.5 0 r +rem set L4EYES=-18.634920 7.3 -3.706716 -6 258.75 0 r +rem set L4EYES=-19 7.3 0 -6 270 0 r +rem set L4EYES=-18.634920 7.3 3.706716 -6 281.25 0 r +rem set L4EYES=-17.553711 7.3 7.270985 -6 292.5 0 r +rem set L4EYES=-15.797922 7.3 10.555834 -6 303.75 0 r +rem set L4EYES=-13.435028 7.3 13.435028 -6 315 0 r +rem set L4EYES=-10.555834 7.3 15.797922 -6 326.25 0 r +rem set L4EYES=-7.270985 7.3 17.553711 -6 337.5 0 r +rem set L4EYES=-3.706716 7.3 18.634920 -6 348.75 0 r +rem set L4EYES=0 7.3 19 -6 0 0 r +rem set L4EYES=3.706716 7.3 18.634920 -6 11.25 0 r +rem set L4EYES=7.270985 7.3 17.553711 -6 22.5 0 r +rem set L4EYES=10.555834 7.3 15.797922 -6 33.75 0 r +rem set L4EYES=13.435028 7.3 13.435028 -6 45 0 r +set L4EYES=15.797922 7.3 10.555834 -6 56.25 0 r +rem set L4EYES=17.553711 7.3 7.270985 -6 67.5 0 r +rem set L4EYES=18.634920 7.3 3.706716 -6 78.75 0 r +rem set L4EYES=19 7.3 0 -6 90 0 r +rem set L4EYES=18.634920 7.3 -3.706716 -6 101.25 0 r +rem set L4EYES=17.553711 7.3 -7.270985 -6 112.5 0 r +rem set L4EYES=15.797922 7.3 -10.555834 -6 123.75 0 r +rem set L4EYES=13.435028 7.3 -13.435028 -6 135 0 r +rem set L4EYES=10.555834 7.3 -15.797922 -6 146.25 0 r +rem set L4EYES=7.270985 7.3 -17.553711 -6 157.5 0 r +rem set L4EYES=3.706716 7.3 -18.634920 -6 168.75 0 r +set L4VIEWEXT=True +rem ------------------------------------------------------------------ +call btprep.bat %1 %2 %3 %4 %5 %6 %7 %8 %9 +menu.bat short diff --git a/CONTENT/BT/BTCAM/BTCAM23.BAT b/CONTENT/BT/BTCAM/BTCAM23.BAT new file mode 100644 index 0000000..5311405 --- /dev/null +++ b/CONTENT/BT/BTCAM/BTCAM23.BAT @@ -0,0 +1,43 @@ +@echo off +rem ------------------------------------------------------------------ +rem L4EYES=x y z pitch yaw roll [relative] +rem ------------------------------------------------------------------ +rem set L4EYES=25 5.9 -10 0 95 0 r +rem set L4EYES=0 7.3 -19 -7 180 0 r +rem Animation Cycle +rem set L4EYES=0 7.3 -19 -6 180 0 r +rem set L4EYES=-3.706716 7.3 -18.634920 -6 191.25 0 r +rem set L4EYES=-7.270985 7.3 -17.553711 -6 202.5 0 r +rem set L4EYES=-10.555834 7.3 -15.797922 -6 213.75 0 r +rem set L4EYES=-13.435028 7.3 -13.435028 -6 225 0 r +rem set L4EYES=-15.797922 7.3 -10.555834 -6 236.25 0 r +rem set L4EYES=-17.553711 7.3 -7.270985 -6 247.5 0 r +rem set L4EYES=-18.634920 7.3 -3.706716 -6 258.75 0 r +rem set L4EYES=-19 7.3 0 -6 270 0 r +rem set L4EYES=-18.634920 7.3 3.706716 -6 281.25 0 r +rem set L4EYES=-17.553711 7.3 7.270985 -6 292.5 0 r +rem set L4EYES=-15.797922 7.3 10.555834 -6 303.75 0 r +rem set L4EYES=-13.435028 7.3 13.435028 -6 315 0 r +rem set L4EYES=-10.555834 7.3 15.797922 -6 326.25 0 r +rem set L4EYES=-7.270985 7.3 17.553711 -6 337.5 0 r +rem set L4EYES=-3.706716 7.3 18.634920 -6 348.75 0 r +rem set L4EYES=0 7.3 19 -6 0 0 r +rem set L4EYES=3.706716 7.3 18.634920 -6 11.25 0 r +rem set L4EYES=7.270985 7.3 17.553711 -6 22.5 0 r +rem set L4EYES=10.555834 7.3 15.797922 -6 33.75 0 r +rem set L4EYES=13.435028 7.3 13.435028 -6 45 0 r +rem set L4EYES=15.797922 7.3 10.555834 -6 56.25 0 r +set L4EYES=17.553711 7.3 7.270985 -6 67.5 0 r +rem set L4EYES=18.634920 7.3 3.706716 -6 78.75 0 r +rem set L4EYES=19 7.3 0 -6 90 0 r +rem set L4EYES=18.634920 7.3 -3.706716 -6 101.25 0 r +rem set L4EYES=17.553711 7.3 -7.270985 -6 112.5 0 r +rem set L4EYES=15.797922 7.3 -10.555834 -6 123.75 0 r +rem set L4EYES=13.435028 7.3 -13.435028 -6 135 0 r +rem set L4EYES=10.555834 7.3 -15.797922 -6 146.25 0 r +rem set L4EYES=7.270985 7.3 -17.553711 -6 157.5 0 r +rem set L4EYES=3.706716 7.3 -18.634920 -6 168.75 0 r +set L4VIEWEXT=True +rem ------------------------------------------------------------------ +call btprep.bat %1 %2 %3 %4 %5 %6 %7 %8 %9 +menu.bat short diff --git a/CONTENT/BT/BTCAM/BTCAM24.BAT b/CONTENT/BT/BTCAM/BTCAM24.BAT new file mode 100644 index 0000000..487e086 --- /dev/null +++ b/CONTENT/BT/BTCAM/BTCAM24.BAT @@ -0,0 +1,43 @@ +@echo off +rem ------------------------------------------------------------------ +rem L4EYES=x y z pitch yaw roll [relative] +rem ------------------------------------------------------------------ +rem set L4EYES=25 5.9 -10 0 95 0 r +rem set L4EYES=0 7.3 -19 -7 180 0 r +rem Animation Cycle +rem set L4EYES=0 7.3 -19 -6 180 0 r +rem set L4EYES=-3.706716 7.3 -18.634920 -6 191.25 0 r +rem set L4EYES=-7.270985 7.3 -17.553711 -6 202.5 0 r +rem set L4EYES=-10.555834 7.3 -15.797922 -6 213.75 0 r +rem set L4EYES=-13.435028 7.3 -13.435028 -6 225 0 r +rem set L4EYES=-15.797922 7.3 -10.555834 -6 236.25 0 r +rem set L4EYES=-17.553711 7.3 -7.270985 -6 247.5 0 r +rem set L4EYES=-18.634920 7.3 -3.706716 -6 258.75 0 r +rem set L4EYES=-19 7.3 0 -6 270 0 r +rem set L4EYES=-18.634920 7.3 3.706716 -6 281.25 0 r +rem set L4EYES=-17.553711 7.3 7.270985 -6 292.5 0 r +rem set L4EYES=-15.797922 7.3 10.555834 -6 303.75 0 r +rem set L4EYES=-13.435028 7.3 13.435028 -6 315 0 r +rem set L4EYES=-10.555834 7.3 15.797922 -6 326.25 0 r +rem set L4EYES=-7.270985 7.3 17.553711 -6 337.5 0 r +rem set L4EYES=-3.706716 7.3 18.634920 -6 348.75 0 r +rem set L4EYES=0 7.3 19 -6 0 0 r +rem set L4EYES=3.706716 7.3 18.634920 -6 11.25 0 r +rem set L4EYES=7.270985 7.3 17.553711 -6 22.5 0 r +rem set L4EYES=10.555834 7.3 15.797922 -6 33.75 0 r +rem set L4EYES=13.435028 7.3 13.435028 -6 45 0 r +rem set L4EYES=15.797922 7.3 10.555834 -6 56.25 0 r +rem set L4EYES=17.553711 7.3 7.270985 -6 67.5 0 r +set L4EYES=18.634920 7.3 3.706716 -6 78.75 0 r +rem set L4EYES=19 7.3 0 -6 90 0 r +rem set L4EYES=18.634920 7.3 -3.706716 -6 101.25 0 r +rem set L4EYES=17.553711 7.3 -7.270985 -6 112.5 0 r +rem set L4EYES=15.797922 7.3 -10.555834 -6 123.75 0 r +rem set L4EYES=13.435028 7.3 -13.435028 -6 135 0 r +rem set L4EYES=10.555834 7.3 -15.797922 -6 146.25 0 r +rem set L4EYES=7.270985 7.3 -17.553711 -6 157.5 0 r +rem set L4EYES=3.706716 7.3 -18.634920 -6 168.75 0 r +set L4VIEWEXT=True +rem ------------------------------------------------------------------ +call btprep.bat %1 %2 %3 %4 %5 %6 %7 %8 %9 +menu.bat short diff --git a/CONTENT/BT/BTCAM/BTCAM25.BAT b/CONTENT/BT/BTCAM/BTCAM25.BAT new file mode 100644 index 0000000..dec5a68 --- /dev/null +++ b/CONTENT/BT/BTCAM/BTCAM25.BAT @@ -0,0 +1,43 @@ +@echo off +rem ------------------------------------------------------------------ +rem L4EYES=x y z pitch yaw roll [relative] +rem ------------------------------------------------------------------ +rem set L4EYES=25 5.9 -10 0 95 0 r +rem set L4EYES=0 7.3 -19 -7 180 0 r +rem Animation Cycle +rem set L4EYES=0 7.3 -19 -6 180 0 r +rem set L4EYES=-3.706716 7.3 -18.634920 -6 191.25 0 r +rem set L4EYES=-7.270985 7.3 -17.553711 -6 202.5 0 r +rem set L4EYES=-10.555834 7.3 -15.797922 -6 213.75 0 r +rem set L4EYES=-13.435028 7.3 -13.435028 -6 225 0 r +rem set L4EYES=-15.797922 7.3 -10.555834 -6 236.25 0 r +rem set L4EYES=-17.553711 7.3 -7.270985 -6 247.5 0 r +rem set L4EYES=-18.634920 7.3 -3.706716 -6 258.75 0 r +rem set L4EYES=-19 7.3 0 -6 270 0 r +rem set L4EYES=-18.634920 7.3 3.706716 -6 281.25 0 r +rem set L4EYES=-17.553711 7.3 7.270985 -6 292.5 0 r +rem set L4EYES=-15.797922 7.3 10.555834 -6 303.75 0 r +rem set L4EYES=-13.435028 7.3 13.435028 -6 315 0 r +rem set L4EYES=-10.555834 7.3 15.797922 -6 326.25 0 r +rem set L4EYES=-7.270985 7.3 17.553711 -6 337.5 0 r +rem set L4EYES=-3.706716 7.3 18.634920 -6 348.75 0 r +rem set L4EYES=0 7.3 19 -6 0 0 r +rem set L4EYES=3.706716 7.3 18.634920 -6 11.25 0 r +rem set L4EYES=7.270985 7.3 17.553711 -6 22.5 0 r +rem set L4EYES=10.555834 7.3 15.797922 -6 33.75 0 r +rem set L4EYES=13.435028 7.3 13.435028 -6 45 0 r +rem set L4EYES=15.797922 7.3 10.555834 -6 56.25 0 r +rem set L4EYES=17.553711 7.3 7.270985 -6 67.5 0 r +rem set L4EYES=18.634920 7.3 3.706716 -6 78.75 0 r +set L4EYES=19 7.3 0 -6 90 0 r +rem set L4EYES=18.634920 7.3 -3.706716 -6 101.25 0 r +rem set L4EYES=17.553711 7.3 -7.270985 -6 112.5 0 r +rem set L4EYES=15.797922 7.3 -10.555834 -6 123.75 0 r +rem set L4EYES=13.435028 7.3 -13.435028 -6 135 0 r +rem set L4EYES=10.555834 7.3 -15.797922 -6 146.25 0 r +rem set L4EYES=7.270985 7.3 -17.553711 -6 157.5 0 r +rem set L4EYES=3.706716 7.3 -18.634920 -6 168.75 0 r +set L4VIEWEXT=True +rem ------------------------------------------------------------------ +call btprep.bat %1 %2 %3 %4 %5 %6 %7 %8 %9 +menu.bat short diff --git a/CONTENT/BT/BTCAM/BTCAM26.BAT b/CONTENT/BT/BTCAM/BTCAM26.BAT new file mode 100644 index 0000000..eecd505 --- /dev/null +++ b/CONTENT/BT/BTCAM/BTCAM26.BAT @@ -0,0 +1,43 @@ +@echo off +rem ------------------------------------------------------------------ +rem L4EYES=x y z pitch yaw roll [relative] +rem ------------------------------------------------------------------ +rem set L4EYES=25 5.9 -10 0 95 0 r +rem set L4EYES=0 7.3 -19 -7 180 0 r +rem Animation Cycle +rem set L4EYES=0 7.3 -19 -6 180 0 r +rem set L4EYES=-3.706716 7.3 -18.634920 -6 191.25 0 r +rem set L4EYES=-7.270985 7.3 -17.553711 -6 202.5 0 r +rem set L4EYES=-10.555834 7.3 -15.797922 -6 213.75 0 r +rem set L4EYES=-13.435028 7.3 -13.435028 -6 225 0 r +rem set L4EYES=-15.797922 7.3 -10.555834 -6 236.25 0 r +rem set L4EYES=-17.553711 7.3 -7.270985 -6 247.5 0 r +rem set L4EYES=-18.634920 7.3 -3.706716 -6 258.75 0 r +rem set L4EYES=-19 7.3 0 -6 270 0 r +rem set L4EYES=-18.634920 7.3 3.706716 -6 281.25 0 r +rem set L4EYES=-17.553711 7.3 7.270985 -6 292.5 0 r +rem set L4EYES=-15.797922 7.3 10.555834 -6 303.75 0 r +rem set L4EYES=-13.435028 7.3 13.435028 -6 315 0 r +rem set L4EYES=-10.555834 7.3 15.797922 -6 326.25 0 r +rem set L4EYES=-7.270985 7.3 17.553711 -6 337.5 0 r +rem set L4EYES=-3.706716 7.3 18.634920 -6 348.75 0 r +rem set L4EYES=0 7.3 19 -6 0 0 r +rem set L4EYES=3.706716 7.3 18.634920 -6 11.25 0 r +rem set L4EYES=7.270985 7.3 17.553711 -6 22.5 0 r +rem set L4EYES=10.555834 7.3 15.797922 -6 33.75 0 r +rem set L4EYES=13.435028 7.3 13.435028 -6 45 0 r +rem set L4EYES=15.797922 7.3 10.555834 -6 56.25 0 r +rem set L4EYES=17.553711 7.3 7.270985 -6 67.5 0 r +rem set L4EYES=18.634920 7.3 3.706716 -6 78.75 0 r +rem set L4EYES=19 7.3 0 -6 90 0 r +set L4EYES=18.634920 7.3 -3.706716 -6 101.25 0 r +rem set L4EYES=17.553711 7.3 -7.270985 -6 112.5 0 r +rem set L4EYES=15.797922 7.3 -10.555834 -6 123.75 0 r +rem set L4EYES=13.435028 7.3 -13.435028 -6 135 0 r +rem set L4EYES=10.555834 7.3 -15.797922 -6 146.25 0 r +rem set L4EYES=7.270985 7.3 -17.553711 -6 157.5 0 r +rem set L4EYES=3.706716 7.3 -18.634920 -6 168.75 0 r +set L4VIEWEXT=True +rem ------------------------------------------------------------------ +call btprep.bat %1 %2 %3 %4 %5 %6 %7 %8 %9 +menu.bat short diff --git a/CONTENT/BT/BTCAM/BTCAM27.BAT b/CONTENT/BT/BTCAM/BTCAM27.BAT new file mode 100644 index 0000000..c24b864 --- /dev/null +++ b/CONTENT/BT/BTCAM/BTCAM27.BAT @@ -0,0 +1,43 @@ +@echo off +rem ------------------------------------------------------------------ +rem L4EYES=x y z pitch yaw roll [relative] +rem ------------------------------------------------------------------ +rem set L4EYES=25 5.9 -10 0 95 0 r +rem set L4EYES=0 7.3 -19 -7 180 0 r +rem Animation Cycle +rem set L4EYES=0 7.3 -19 -6 180 0 r +rem set L4EYES=-3.706716 7.3 -18.634920 -6 191.25 0 r +rem set L4EYES=-7.270985 7.3 -17.553711 -6 202.5 0 r +rem set L4EYES=-10.555834 7.3 -15.797922 -6 213.75 0 r +rem set L4EYES=-13.435028 7.3 -13.435028 -6 225 0 r +rem set L4EYES=-15.797922 7.3 -10.555834 -6 236.25 0 r +rem set L4EYES=-17.553711 7.3 -7.270985 -6 247.5 0 r +rem set L4EYES=-18.634920 7.3 -3.706716 -6 258.75 0 r +rem set L4EYES=-19 7.3 0 -6 270 0 r +rem set L4EYES=-18.634920 7.3 3.706716 -6 281.25 0 r +rem set L4EYES=-17.553711 7.3 7.270985 -6 292.5 0 r +rem set L4EYES=-15.797922 7.3 10.555834 -6 303.75 0 r +rem set L4EYES=-13.435028 7.3 13.435028 -6 315 0 r +rem set L4EYES=-10.555834 7.3 15.797922 -6 326.25 0 r +rem set L4EYES=-7.270985 7.3 17.553711 -6 337.5 0 r +rem set L4EYES=-3.706716 7.3 18.634920 -6 348.75 0 r +rem set L4EYES=0 7.3 19 -6 0 0 r +rem set L4EYES=3.706716 7.3 18.634920 -6 11.25 0 r +rem set L4EYES=7.270985 7.3 17.553711 -6 22.5 0 r +rem set L4EYES=10.555834 7.3 15.797922 -6 33.75 0 r +rem set L4EYES=13.435028 7.3 13.435028 -6 45 0 r +rem set L4EYES=15.797922 7.3 10.555834 -6 56.25 0 r +rem set L4EYES=17.553711 7.3 7.270985 -6 67.5 0 r +rem set L4EYES=18.634920 7.3 3.706716 -6 78.75 0 r +rem set L4EYES=19 7.3 0 -6 90 0 r +rem set L4EYES=18.634920 7.3 -3.706716 -6 101.25 0 r +set L4EYES=17.553711 7.3 -7.270985 -6 112.5 0 r +rem set L4EYES=15.797922 7.3 -10.555834 -6 123.75 0 r +rem set L4EYES=13.435028 7.3 -13.435028 -6 135 0 r +rem set L4EYES=10.555834 7.3 -15.797922 -6 146.25 0 r +rem set L4EYES=7.270985 7.3 -17.553711 -6 157.5 0 r +rem set L4EYES=3.706716 7.3 -18.634920 -6 168.75 0 r +set L4VIEWEXT=True +rem ------------------------------------------------------------------ +call btprep.bat %1 %2 %3 %4 %5 %6 %7 %8 %9 +menu.bat short diff --git a/CONTENT/BT/BTCAM/BTCAM28.BAT b/CONTENT/BT/BTCAM/BTCAM28.BAT new file mode 100644 index 0000000..ef8cc23 --- /dev/null +++ b/CONTENT/BT/BTCAM/BTCAM28.BAT @@ -0,0 +1,43 @@ +@echo off +rem ------------------------------------------------------------------ +rem L4EYES=x y z pitch yaw roll [relative] +rem ------------------------------------------------------------------ +rem set L4EYES=25 5.9 -10 0 95 0 r +rem set L4EYES=0 7.3 -19 -7 180 0 r +rem Animation Cycle +rem set L4EYES=0 7.3 -19 -6 180 0 r +rem set L4EYES=-3.706716 7.3 -18.634920 -6 191.25 0 r +rem set L4EYES=-7.270985 7.3 -17.553711 -6 202.5 0 r +rem set L4EYES=-10.555834 7.3 -15.797922 -6 213.75 0 r +rem set L4EYES=-13.435028 7.3 -13.435028 -6 225 0 r +rem set L4EYES=-15.797922 7.3 -10.555834 -6 236.25 0 r +rem set L4EYES=-17.553711 7.3 -7.270985 -6 247.5 0 r +rem set L4EYES=-18.634920 7.3 -3.706716 -6 258.75 0 r +rem set L4EYES=-19 7.3 0 -6 270 0 r +rem set L4EYES=-18.634920 7.3 3.706716 -6 281.25 0 r +rem set L4EYES=-17.553711 7.3 7.270985 -6 292.5 0 r +rem set L4EYES=-15.797922 7.3 10.555834 -6 303.75 0 r +rem set L4EYES=-13.435028 7.3 13.435028 -6 315 0 r +rem set L4EYES=-10.555834 7.3 15.797922 -6 326.25 0 r +rem set L4EYES=-7.270985 7.3 17.553711 -6 337.5 0 r +rem set L4EYES=-3.706716 7.3 18.634920 -6 348.75 0 r +rem set L4EYES=0 7.3 19 -6 0 0 r +rem set L4EYES=3.706716 7.3 18.634920 -6 11.25 0 r +rem set L4EYES=7.270985 7.3 17.553711 -6 22.5 0 r +rem set L4EYES=10.555834 7.3 15.797922 -6 33.75 0 r +rem set L4EYES=13.435028 7.3 13.435028 -6 45 0 r +rem set L4EYES=15.797922 7.3 10.555834 -6 56.25 0 r +rem set L4EYES=17.553711 7.3 7.270985 -6 67.5 0 r +rem set L4EYES=18.634920 7.3 3.706716 -6 78.75 0 r +rem set L4EYES=19 7.3 0 -6 90 0 r +rem set L4EYES=18.634920 7.3 -3.706716 -6 101.25 0 r +rem set L4EYES=17.553711 7.3 -7.270985 -6 112.5 0 r +set L4EYES=15.797922 7.3 -10.555834 -6 123.75 0 r +rem set L4EYES=13.435028 7.3 -13.435028 -6 135 0 r +rem set L4EYES=10.555834 7.3 -15.797922 -6 146.25 0 r +rem set L4EYES=7.270985 7.3 -17.553711 -6 157.5 0 r +rem set L4EYES=3.706716 7.3 -18.634920 -6 168.75 0 r +set L4VIEWEXT=True +rem ------------------------------------------------------------------ +call btprep.bat %1 %2 %3 %4 %5 %6 %7 %8 %9 +menu.bat short diff --git a/CONTENT/BT/BTCAM/BTCAM29.BAT b/CONTENT/BT/BTCAM/BTCAM29.BAT new file mode 100644 index 0000000..70d32eb --- /dev/null +++ b/CONTENT/BT/BTCAM/BTCAM29.BAT @@ -0,0 +1,43 @@ +@echo off +rem ------------------------------------------------------------------ +rem L4EYES=x y z pitch yaw roll [relative] +rem ------------------------------------------------------------------ +rem set L4EYES=25 5.9 -10 0 95 0 r +rem set L4EYES=0 7.3 -19 -7 180 0 r +rem Animation Cycle +rem set L4EYES=0 7.3 -19 -6 180 0 r +rem set L4EYES=-3.706716 7.3 -18.634920 -6 191.25 0 r +rem set L4EYES=-7.270985 7.3 -17.553711 -6 202.5 0 r +rem set L4EYES=-10.555834 7.3 -15.797922 -6 213.75 0 r +rem set L4EYES=-13.435028 7.3 -13.435028 -6 225 0 r +rem set L4EYES=-15.797922 7.3 -10.555834 -6 236.25 0 r +rem set L4EYES=-17.553711 7.3 -7.270985 -6 247.5 0 r +rem set L4EYES=-18.634920 7.3 -3.706716 -6 258.75 0 r +rem set L4EYES=-19 7.3 0 -6 270 0 r +rem set L4EYES=-18.634920 7.3 3.706716 -6 281.25 0 r +rem set L4EYES=-17.553711 7.3 7.270985 -6 292.5 0 r +rem set L4EYES=-15.797922 7.3 10.555834 -6 303.75 0 r +rem set L4EYES=-13.435028 7.3 13.435028 -6 315 0 r +rem set L4EYES=-10.555834 7.3 15.797922 -6 326.25 0 r +rem set L4EYES=-7.270985 7.3 17.553711 -6 337.5 0 r +rem set L4EYES=-3.706716 7.3 18.634920 -6 348.75 0 r +rem set L4EYES=0 7.3 19 -6 0 0 r +rem set L4EYES=3.706716 7.3 18.634920 -6 11.25 0 r +rem set L4EYES=7.270985 7.3 17.553711 -6 22.5 0 r +rem set L4EYES=10.555834 7.3 15.797922 -6 33.75 0 r +rem set L4EYES=13.435028 7.3 13.435028 -6 45 0 r +rem set L4EYES=15.797922 7.3 10.555834 -6 56.25 0 r +rem set L4EYES=17.553711 7.3 7.270985 -6 67.5 0 r +rem set L4EYES=18.634920 7.3 3.706716 -6 78.75 0 r +rem set L4EYES=19 7.3 0 -6 90 0 r +rem set L4EYES=18.634920 7.3 -3.706716 -6 101.25 0 r +rem set L4EYES=17.553711 7.3 -7.270985 -6 112.5 0 r +rem set L4EYES=15.797922 7.3 -10.555834 -6 123.75 0 r +set L4EYES=13.435028 7.3 -13.435028 -6 135 0 r +rem set L4EYES=10.555834 7.3 -15.797922 -6 146.25 0 r +rem set L4EYES=7.270985 7.3 -17.553711 -6 157.5 0 r +rem set L4EYES=3.706716 7.3 -18.634920 -6 168.75 0 r +set L4VIEWEXT=True +rem ------------------------------------------------------------------ +call btprep.bat %1 %2 %3 %4 %5 %6 %7 %8 %9 +menu.bat short diff --git a/CONTENT/BT/BTCAM/BTCAM30.BAT b/CONTENT/BT/BTCAM/BTCAM30.BAT new file mode 100644 index 0000000..fcba19a --- /dev/null +++ b/CONTENT/BT/BTCAM/BTCAM30.BAT @@ -0,0 +1,43 @@ +@echo off +rem ------------------------------------------------------------------ +rem L4EYES=x y z pitch yaw roll [relative] +rem ------------------------------------------------------------------ +rem set L4EYES=25 5.9 -10 0 95 0 r +rem set L4EYES=0 7.3 -19 -7 180 0 r +rem Animation Cycle +rem set L4EYES=0 7.3 -19 -6 180 0 r +rem set L4EYES=-3.706716 7.3 -18.634920 -6 191.25 0 r +rem set L4EYES=-7.270985 7.3 -17.553711 -6 202.5 0 r +rem set L4EYES=-10.555834 7.3 -15.797922 -6 213.75 0 r +rem set L4EYES=-13.435028 7.3 -13.435028 -6 225 0 r +rem set L4EYES=-15.797922 7.3 -10.555834 -6 236.25 0 r +rem set L4EYES=-17.553711 7.3 -7.270985 -6 247.5 0 r +rem set L4EYES=-18.634920 7.3 -3.706716 -6 258.75 0 r +rem set L4EYES=-19 7.3 0 -6 270 0 r +rem set L4EYES=-18.634920 7.3 3.706716 -6 281.25 0 r +rem set L4EYES=-17.553711 7.3 7.270985 -6 292.5 0 r +rem set L4EYES=-15.797922 7.3 10.555834 -6 303.75 0 r +rem set L4EYES=-13.435028 7.3 13.435028 -6 315 0 r +rem set L4EYES=-10.555834 7.3 15.797922 -6 326.25 0 r +rem set L4EYES=-7.270985 7.3 17.553711 -6 337.5 0 r +rem set L4EYES=-3.706716 7.3 18.634920 -6 348.75 0 r +rem set L4EYES=0 7.3 19 -6 0 0 r +rem set L4EYES=3.706716 7.3 18.634920 -6 11.25 0 r +rem set L4EYES=7.270985 7.3 17.553711 -6 22.5 0 r +rem set L4EYES=10.555834 7.3 15.797922 -6 33.75 0 r +rem set L4EYES=13.435028 7.3 13.435028 -6 45 0 r +rem set L4EYES=15.797922 7.3 10.555834 -6 56.25 0 r +rem set L4EYES=17.553711 7.3 7.270985 -6 67.5 0 r +rem set L4EYES=18.634920 7.3 3.706716 -6 78.75 0 r +rem set L4EYES=19 7.3 0 -6 90 0 r +rem set L4EYES=18.634920 7.3 -3.706716 -6 101.25 0 r +rem set L4EYES=17.553711 7.3 -7.270985 -6 112.5 0 r +rem set L4EYES=15.797922 7.3 -10.555834 -6 123.75 0 r +rem set L4EYES=13.435028 7.3 -13.435028 -6 135 0 r +set L4EYES=10.555834 7.3 -15.797922 -6 146.25 0 r +rem set L4EYES=7.270985 7.3 -17.553711 -6 157.5 0 r +rem set L4EYES=3.706716 7.3 -18.634920 -6 168.75 0 r +set L4VIEWEXT=True +rem ------------------------------------------------------------------ +call btprep.bat %1 %2 %3 %4 %5 %6 %7 %8 %9 +menu.bat short diff --git a/CONTENT/BT/BTCAM/BTCAM31.BAT b/CONTENT/BT/BTCAM/BTCAM31.BAT new file mode 100644 index 0000000..251f59e --- /dev/null +++ b/CONTENT/BT/BTCAM/BTCAM31.BAT @@ -0,0 +1,43 @@ +@echo off +rem ------------------------------------------------------------------ +rem L4EYES=x y z pitch yaw roll [relative] +rem ------------------------------------------------------------------ +rem set L4EYES=25 5.9 -10 0 95 0 r +rem set L4EYES=0 7.3 -19 -7 180 0 r +rem Animation Cycle +rem set L4EYES=0 7.3 -19 -6 180 0 r +rem set L4EYES=-3.706716 7.3 -18.634920 -6 191.25 0 r +rem set L4EYES=-7.270985 7.3 -17.553711 -6 202.5 0 r +rem set L4EYES=-10.555834 7.3 -15.797922 -6 213.75 0 r +rem set L4EYES=-13.435028 7.3 -13.435028 -6 225 0 r +rem set L4EYES=-15.797922 7.3 -10.555834 -6 236.25 0 r +rem set L4EYES=-17.553711 7.3 -7.270985 -6 247.5 0 r +rem set L4EYES=-18.634920 7.3 -3.706716 -6 258.75 0 r +rem set L4EYES=-19 7.3 0 -6 270 0 r +rem set L4EYES=-18.634920 7.3 3.706716 -6 281.25 0 r +rem set L4EYES=-17.553711 7.3 7.270985 -6 292.5 0 r +rem set L4EYES=-15.797922 7.3 10.555834 -6 303.75 0 r +rem set L4EYES=-13.435028 7.3 13.435028 -6 315 0 r +rem set L4EYES=-10.555834 7.3 15.797922 -6 326.25 0 r +rem set L4EYES=-7.270985 7.3 17.553711 -6 337.5 0 r +rem set L4EYES=-3.706716 7.3 18.634920 -6 348.75 0 r +rem set L4EYES=0 7.3 19 -6 0 0 r +rem set L4EYES=3.706716 7.3 18.634920 -6 11.25 0 r +rem set L4EYES=7.270985 7.3 17.553711 -6 22.5 0 r +rem set L4EYES=10.555834 7.3 15.797922 -6 33.75 0 r +rem set L4EYES=13.435028 7.3 13.435028 -6 45 0 r +rem set L4EYES=15.797922 7.3 10.555834 -6 56.25 0 r +rem set L4EYES=17.553711 7.3 7.270985 -6 67.5 0 r +rem set L4EYES=18.634920 7.3 3.706716 -6 78.75 0 r +rem set L4EYES=19 7.3 0 -6 90 0 r +rem set L4EYES=18.634920 7.3 -3.706716 -6 101.25 0 r +rem set L4EYES=17.553711 7.3 -7.270985 -6 112.5 0 r +rem set L4EYES=15.797922 7.3 -10.555834 -6 123.75 0 r +rem set L4EYES=13.435028 7.3 -13.435028 -6 135 0 r +rem set L4EYES=10.555834 7.3 -15.797922 -6 146.25 0 r +set L4EYES=7.270985 7.3 -17.553711 -6 157.5 0 r +rem set L4EYES=3.706716 7.3 -18.634920 -6 168.75 0 r +set L4VIEWEXT=True +rem ------------------------------------------------------------------ +call btprep.bat %1 %2 %3 %4 %5 %6 %7 %8 %9 +menu.bat short diff --git a/CONTENT/BT/BTCAM/BTCAM32.BAT b/CONTENT/BT/BTCAM/BTCAM32.BAT new file mode 100644 index 0000000..0ba629b --- /dev/null +++ b/CONTENT/BT/BTCAM/BTCAM32.BAT @@ -0,0 +1,43 @@ +@echo off +rem ------------------------------------------------------------------ +rem L4EYES=x y z pitch yaw roll [relative] +rem ------------------------------------------------------------------ +rem set L4EYES=25 5.9 -10 0 95 0 r +rem set L4EYES=0 7.3 -19 -7 180 0 r +rem Animation Cycle +rem set L4EYES=0 7.3 -19 -6 180 0 r +rem set L4EYES=-3.706716 7.3 -18.634920 -6 191.25 0 r +rem set L4EYES=-7.270985 7.3 -17.553711 -6 202.5 0 r +rem set L4EYES=-10.555834 7.3 -15.797922 -6 213.75 0 r +rem set L4EYES=-13.435028 7.3 -13.435028 -6 225 0 r +rem set L4EYES=-15.797922 7.3 -10.555834 -6 236.25 0 r +rem set L4EYES=-17.553711 7.3 -7.270985 -6 247.5 0 r +rem set L4EYES=-18.634920 7.3 -3.706716 -6 258.75 0 r +rem set L4EYES=-19 7.3 0 -6 270 0 r +rem set L4EYES=-18.634920 7.3 3.706716 -6 281.25 0 r +rem set L4EYES=-17.553711 7.3 7.270985 -6 292.5 0 r +rem set L4EYES=-15.797922 7.3 10.555834 -6 303.75 0 r +rem set L4EYES=-13.435028 7.3 13.435028 -6 315 0 r +rem set L4EYES=-10.555834 7.3 15.797922 -6 326.25 0 r +rem set L4EYES=-7.270985 7.3 17.553711 -6 337.5 0 r +rem set L4EYES=-3.706716 7.3 18.634920 -6 348.75 0 r +rem set L4EYES=0 7.3 19 -6 0 0 r +rem set L4EYES=3.706716 7.3 18.634920 -6 11.25 0 r +rem set L4EYES=7.270985 7.3 17.553711 -6 22.5 0 r +rem set L4EYES=10.555834 7.3 15.797922 -6 33.75 0 r +rem set L4EYES=13.435028 7.3 13.435028 -6 45 0 r +rem set L4EYES=15.797922 7.3 10.555834 -6 56.25 0 r +rem set L4EYES=17.553711 7.3 7.270985 -6 67.5 0 r +rem set L4EYES=18.634920 7.3 3.706716 -6 78.75 0 r +rem set L4EYES=19 7.3 0 -6 90 0 r +rem set L4EYES=18.634920 7.3 -3.706716 -6 101.25 0 r +rem set L4EYES=17.553711 7.3 -7.270985 -6 112.5 0 r +rem set L4EYES=15.797922 7.3 -10.555834 -6 123.75 0 r +rem set L4EYES=13.435028 7.3 -13.435028 -6 135 0 r +rem set L4EYES=10.555834 7.3 -15.797922 -6 146.25 0 r +rem set L4EYES=7.270985 7.3 -17.553711 -6 157.5 0 r +set L4EYES=3.706716 7.3 -18.634920 -6 168.75 0 r +set L4VIEWEXT=True +rem ------------------------------------------------------------------ +call btprep.bat %1 %2 %3 %4 %5 %6 %7 %8 %9 +menu.bat short diff --git a/CONTENT/BT/BTGO.BAT b/CONTENT/BT/BTGO.BAT new file mode 100644 index 0000000..1a0932c --- /dev/null +++ b/CONTENT/BT/BTGO.BAT @@ -0,0 +1,9 @@ +@echo off +rem ------------------------------------------------------------------ +rem L4EYES=x y z pitch yaw roll [relative] +rem ------------------------------------------------------------------ +set L4EYES= +set L4VIEWEXT= +rem ------------------------------------------------------------------ +call btprep.bat %1 %2 %3 %4 %5 %6 %7 %8 %9 +menu.bat short diff --git a/CONTENT/BT/BTL4.BLD b/CONTENT/BT/BTL4.BLD new file mode 100644 index 0000000..bd587cf --- /dev/null +++ b/CONTENT/BT/BTL4.BLD @@ -0,0 +1,230 @@ +[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: 169 +// + +[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=mghiti.mod /id:152 +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=rapdead.mod /id:150 +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 +model=strk.mod /id:153 +model=nrk.mod /id:155 +//model=lbx.mod /id:166 +// +// 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=mad2.mod /id:164 +model=loki.mod /id:45 +model=lok1.mod /id:119 +model=lok2.mod /id:160 +model=thor.mod /id:46 +model=thr1.mod /id:115 +//model=thr6.mod /id:167 +model=blkhawk.mod /id:47 +model=bhk1.mod /id:116 +model=owens.mod /id:48 +model=own1.mod /id:147 +model=vulture.mod /id:73 +model=vul1.mod /id:117 +//model=vul2.mod /id:163 +model=avatar.mod /id:110 +model=ava1.mod /id:114 +//model=ava2.mod /id:168 +model=sunder.mod /id:111 +model=snd1.mod /id:148 +//model=snd2.mod /id:165 + +//model=firstrtr.mod /id:156 +//model=blkjack.mod /id:157 +//model=raptor.mod /id:146 +//model=strider.mod /id:151 +//model=wpnmech.mod +// +// +//model=bat.mod /id:158 +// +// 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=mslr.mod /id:161 +// +// Maps +// +//map=test.map /id:145 +map=blank.map /id:154 +//map=polar1.map /id:71 +//map=polar2.map + +map=arena1.map /id:70 +map=arena2.map /id:84 +//map=arena3.map /id:162 +map=polar3.map /id:81 +map=polar4.map /id:82 +map=rav.map /id:120 +//map=rav1.map /id:159 +map=grass.map /id:121 +map=dbase.map /id:122 +map=cavern.map /id:149 + +zone=all.zne + +[zones] +zone=all.zne + diff --git a/CONTENT/BT/BTL4.OPS b/CONTENT/BT/BTL4.OPS new file mode 100644 index 0000000..da0367c --- /dev/null +++ b/CONTENT/BT/BTL4.OPS @@ -0,0 +1,154 @@ +[resource] +res name=btl4 + +[btl4::Standard::LocationList] +location=btl4::Standard::Location::blank +location=btl4::Standard::Location::arena1 +location=btl4::Standard::Location::arenall +location=btl4::Standard::Location::artrucks +location=btl4::Standard::Location::adrop +location=btl4::Standard::Location::arena2 +location=btl4::Standard::Location::arenall2 +location=btl4::Standard::Location::adrop +location=btl4::Standard::Location::polar3 +location=btl4::Standard::Location::polar4 +location=btl4::Standard::Location::pol4sfx +location=btl4::Standard::Location::rav +location=btl4::Standard::Location::grass +location=btl4::Standard::Location::dbase +location=btl4::Standard::Location::cavern + +[btl4::Standard::Location::blank] +tag=blank + +[btl4::blank::DropZoneList] + +[btl4::Standard::Location::arena1] +tag=arena1 + +[btl4::Standard::Location::arenall] +tag=arenall + +[btl4::arenall::DropZoneList] + +[btl4::Standard::Location::artrucks] +tag=artrucks + +[btl4::artrucks::DropZoneList] + +[btl4::Standard::Location::adrop] +tag=adrop + + +[btl4::adrop::DropZoneList] + + +[btl4::arena1::DropZoneList] + +[btl4::Standard::Location::arena2] +tag=arena2 + +[btl4::Standard::Location::arenall2] +tag=arenall2 + +[btl4::arenall2::DropZoneList] + +[btl4::arena2::DropZoneList] + +[btl4::Standard::Location::polar3] +tag=polar3 + +[btl4::polar3::DropZoneList] + +[btl4::Standard::Location::polar4] +tag=polar4 + +[btl4::Standard::Location::pol4sfx] +tag=pol4sfx + +[btl4::pol4sfx::DropZoneList] + +[btl4::polar4::DropZoneList] + +[btl4::Standard::Location::rav] +tag=rav + +[btl4::rav::DropZoneList] + +[btl4::Standard::Location::grass] +tag=grass + +[btl4::grass::DropZoneList] + +[btl4::Standard::Location::dbase] +tag=dbase + +[btl4::dbase::DropZoneList] + +[btl4::Standard::Location::cavern] +tag=cavern + +[btl4::cavern::DropZoneList] + +[btl4::Standard::ColorList] +color=btl4::Standard::Color::Black +color=btl4::Standard::Color::Brown +color=btl4::Standard::Color::Crimson +color=btl4::Standard::Color::Green +color=btl4::Standard::Color::Grey +color=btl4::Standard::Color::Tan +color=btl4::Standard::Color::White + +[btl4::Standard::Color::Black] +tag=Black + +[btl4::Standard::Color::Brown] +tag=Brown + +[btl4::Standard::Color::Crimson] +tag=Crimson + +[btl4::Standard::Color::Green] +tag=Green + +[btl4::Standard::Color::Grey] +tag=Grey + +[btl4::Standard::Color::Tan] +tag=Tan + +[btl4::Standard::Color::White] +tag=White + +[btl4::Standard::BadgeList] +badge=btl4::Standard::Badge::Davion +badge=btl4::Standard::Badge::Kurita +badge=btl4::Standard::Badge::Liao +badge=btl4::Standard::Badge::Marik +badge=btl4::Standard::Badge::None +badge=btl4::Standard::Badge::Steiner +badge=btl4::Standard::Badge::VGL + +[btl4::Standard::Badge::Davion] +tag=Davion + +[btl4::Standard::Badge::Kurita] +tag=Kurita + +[btl4::Standard::Badge::Liao] +tag=Liao + +[btl4::Standard::Badge::Marik] +tag=Marik + +[btl4::Standard::Badge::None] +tag=None + +[btl4::Standard::Badge::Steiner] +tag=Steiner + +[btl4::Standard::Badge::VGL] +tag=VGL + +[btl4::Standard::VehicleList] + diff --git a/CONTENT/BT/BTL4.ORG b/CONTENT/BT/BTL4.ORG new file mode 100644 index 0000000..f3f646c --- /dev/null +++ b/CONTENT/BT/BTL4.ORG @@ -0,0 +1,230 @@ +[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: 169 +// + +[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=mghiti.mod /id:152 +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=rapdead.mod /id:150 +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 +model=strk.mod /id:153 +model=nrk.mod /id:155 +//model=lbx.mod /id:166 +// +// 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=mad2.mod /id:164 +model=loki.mod /id:45 +model=lok1.mod /id:119 +model=lok2.mod /id:160 +model=thor.mod /id:46 +model=thr1.mod /id:115 +//model=thr6.mod /id:167 +model=blkhawk.mod /id:47 +model=bhk1.mod /id:116 +model=owens.mod /id:48 +model=own1.mod /id:147 +model=vulture.mod /id:73 +model=vul1.mod /id:117 +model=vul2.mod /id:163 +model=avatar.mod /id:110 +model=ava1.mod /id:114 +//model=ava2.mod /id:168 +model=sunder.mod /id:111 +model=snd1.mod /id:148 +//model=snd2.mod /id:165 + +//model=firstrtr.mod /id:156 +//model=blkjack.mod /id:157 +//model=raptor.mod /id:146 +//model=strider.mod /id:151 +//model=wpnmech.mod +// +// +//model=bat.mod /id:158 +// +// 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=mslr.mod /id:161 +// +// Maps +// +//map=test.map /id:145 +//map=blank.map /id:154 +//map=polar1.map /id:71 +//map=polar2.map + +map=arena1.map /id:70 +map=arena2.map /id:84 +//map=arena3.map /id:162 +map=polar3.map /id:81 +map=polar4.map /id:82 +map=rav.map /id:120 +//map=rav1.map /id:159 +map=grass.map /id:121 +map=dbase.map /id:122 +//map=cavern.map /id:149 + +zone=all.zne + +[zones] +zone=all.zne + diff --git a/CONTENT/BT/BTL4BU.BLD b/CONTENT/BT/BTL4BU.BLD new file mode 100644 index 0000000..09e66ff --- /dev/null +++ b/CONTENT/BT/BTL4BU.BLD @@ -0,0 +1,203 @@ +[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: 141 +// + +[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:116 +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 +model=apc.mod /id:120 +model=armrmovr.mod /id:121 +model=bulldog.mod /id:122 +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 +// +// 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=loki.mod /id:45 +model=lok1.mod /id:117 +model=thor.mod /id:46 +model=blkhawk.mod /id:47 +model=bhk1.mod /id:114 +model=owens.mod /id:48 +model=vulture.mod /id:73 +//model=vul1.mod /id:118 +model=thr1.mod /id:113 +model=avatar.mod /id:110 +model=ava1.mod /id:115 +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 +// +// Maps +// +map=arena1.map /id:70 +map=arena2.map /id:84 +map=rav.map /id:71 +map=des.map /id:119 +map=grass.map +map=polar3.map /id:81 +map=polar4.map /id:82 +map=dbase.map +zone=all.zne + +[zones] +zone=all.zne + \ No newline at end of file diff --git a/CONTENT/BT/BTLOOK.BAT b/CONTENT/BT/BTLOOK.BAT new file mode 100644 index 0000000..6beb8c4 --- /dev/null +++ b/CONTENT/BT/BTLOOK.BAT @@ -0,0 +1,12 @@ +@echo off +rem ------------------------------------------------------------------ +rem L4EYES=x y z pitch yaw roll [relative] +rem ------------------------------------------------------------------ +set L4EYES=195 4 250 2 60.5 0 +if "%1"=="arena0" set L4EYES= 45 4 142 2 10.5 0 +rem if "%1"=="arena1" set L4EYES=-229 4 -131 2 200.0 0 +if "%1"=="arena1" set L4EYES=195 4 250 2 60.5 0 +set L4VIEWEXT=True +rem ------------------------------------------------------------------ +call btprep.bat %1 %2 %3 %4 %5 %6 %7 %8 %9 +menu.bat short diff --git a/CONTENT/BT/BTNET.BAT b/CONTENT/BT/BTNET.BAT new file mode 100644 index 0000000..bc112b2 --- /dev/null +++ b/CONTENT/BT/BTNET.BAT @@ -0,0 +1,22 @@ +@echo off +call setenv.bat t s n n +call showenv.bat +set a0= +if exist btl4d3s.exe set a0=btl4d3s.exe +if exist btl4d2s.exe set a0=btl4d2s.exe +if exist btl4d0.exe set a0=btl4d0.exe +if exist btl4opt.exe set a0=btl4opt.exe +if "%a0%"=="" goto error +echo on +32rtm.exe -x +netnub.exe -f %a0% +32rtm.exe -u +@echo off +goto end +:error +echo. +echo Program not found in current directory. +echo. +:end +set a0= +menu.bat short diff --git a/CONTENT/BT/BTPREP.BAT b/CONTENT/BT/BTPREP.BAT new file mode 100644 index 0000000..cc5f449 --- /dev/null +++ b/CONTENT/BT/BTPREP.BAT @@ -0,0 +1,44 @@ +@echo off +rem +rem usage: btprep.bat [course [vehicle [dropzone [inifile]]]] +rem +rem ------------------------------------------------------------------ +rem L4ANIMATION=scale (default = 1.0 NEVER make zero or negative) +rem ------------------------------------------------------------------ +set L4ANIMATION=1.0 +rem ------------------------------------------------------------------ +if "%1"=="" set a1=arena1 +if not "%1"=="" set a1=%1 +if not exist maps\%a1%.map goto nomap +rem ------------------------------------------------------------------ +if "%2"=="" set a2=thor +if not "%2"=="" set a2=%2 +if not exist models\%a2%.mod goto noveh +rem ------------------------------------------------------------------ +set A4DPLCFG= +if "%4"=="" goto bt +set A4DPLCFG=%4.ini +if not exist %A4DPLCFG% goto noenv +rem ------------------------------------------------------------------ +:bt +call makeegg.bat %a1% %a2% %3 +call bt.bat temp +goto end +:nomap +echo. +echo Course '%a1%' not found. +echo. +goto end +:noveh +echo. +echo Vehicle '%a2%' not found. +echo. +goto end +:noenv +echo. +echo Renderer configuration file '%A4DPLCFG%' not found. +echo. +goto end +:end +set a2= +set a1= diff --git a/CONTENT/BT/BUILD.BAT b/CONTENT/BT/BUILD.BAT new file mode 100644 index 0000000..fe7342b --- /dev/null +++ b/CONTENT/BT/BUILD.BAT @@ -0,0 +1,6 @@ +@echo off +rem build.bat +set s0=test.bld +if not exist %s0% set s0= +btl4tool.exe -b btl4.bld %s0% +set s0= diff --git a/CONTENT/BT/BUILD1.BAT b/CONTENT/BT/BUILD1.BAT new file mode 100644 index 0000000..12c5dc2 --- /dev/null +++ b/CONTENT/BT/BUILD1.BAT @@ -0,0 +1,82 @@ +@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 +xdel d:\dev\*.bak /s /n +set Path=c:\nwdos;c:\nwclient;c:\net;c:\pkware;d:\dev\bt;d:\dev\bt\models +d: +cd \dev\bt +cd models +@echo Building Mechs... > ..\result1.txt +@echo Building avatar... >> ..\result1.txt +mechbld avatar.mch >> ..\result1.txt +@echo Building blkhawk... >> ..\result1.txt +mechbld blkhawk.mch >> ..\result1.txt +@echo Building loki... >> ..\result1.txt +mechbld loki.mch >> ..\result1.txt +@echo Building madcat... >> ..\result1.txt +mechbld madcat.mch >> ..\result1.txt +@echo Building owens... >> ..\result1.txt +mechbld owens.mch >> ..\result1.txt +@echo Building sunder... >> ..\result1.txt +mechbld sunder.mch >> ..\result1.txt +@echo Building thor... >> ..\result1.txt +mechbld thor.mch >> ..\result1.txt +@echo Building vulture... >> ..\result1.txt +mechbld vulture.mch >> ..\result1.txt +@rem @echo Building firestarter... >> ..\result1.txt +@rem mechbld firstrtr.mch >> ..\result1.txt +@rem @echo Building blackjack... >> ..\result1.txt +@rem mechbld blkjack.mch >> ..\result1.txt +@echo Building ava1... >> ..\result1.txt +mechbld ava1.mch >> ..\result1.txt +@echo Building bhk1... >> ..\result1.txt +mechbld bhk1.mch >> ..\result1.txt +@echo Building Lok1... >> ..\result1.txt +mechbld lok1.mch >> ..\result1.txt +@echo Building Lok2... >> ..\result1.txt +mechbld lok2.mch >> ..\result1.txt +@echo Building mad1... >> ..\result1.txt +mechbld mad1.mch >> ..\result1.txt +@echo Building mad2... >> ..\result1.txt +mechbld mad2.mch >> ..\result1.txt +@echo Building thr1... >> ..\result1.txt +mechbld thr1.mch >> ..\result1.txt +@echo Building vul1... >> ..\result1.txt +mechbld vul1.mch >> ..\result1.txt +@echo Building own1... >> ..\result1.txt +mechbld own1.mch >> ..\result1.txt +@echo Building snd1... >> ..\result1.txt +mechbld snd1.mch >> ..\result1.txt +@REM @echo Building snd2... >> ..\result1.txt +@REM mechbld snd2.mch >> ..\result1.txt +@REM @echo Building vul2... >> ..\result1.txt +@REM mechbld vul2.mch >> ..\result1.txt +@REM @echo Building thr6... >> ..\result1.txt +@REM mechbld thr6.mch >> ..\result1.txt +@REM @echo Building ava2... >> ..\result1.txt +@REM mechbld ava2.mch >> ..\result1.txt + +@rem @echo Building raptor... >> ..\result1.txt +@rem mechbld raptor.mch >> ..\result1.txt +@rem @echo Building strider... >> ..\result1.txt +@rem mechbld strider.mch >> ..\result1.txt +@REM @echo Building bat... >> ..\result1.txt +@REM mechbld bat.mch >> ..\result1.txt +cd .. +btl4tool -b btl4.bld >> result1.txt +rem call arcbt f . >> result1.txt +rem del c:\vgl_labs\archive\bt%1.exe +rem copy bt.zip c:\vgl_labs\archive\bt%1.zip +rem del bt.zip +rem c: +rem cd c:\vgl_labs\archive +rem zip2exe bt%1.zip +rem del bt%1.zip +rem d: +rem cd d:\dev\bt +rem edit result1.txt diff --git a/CONTENT/BT/BUILDRES.BAT b/CONTENT/BT/BUILDRES.BAT new file mode 100644 index 0000000..ea3464a --- /dev/null +++ b/CONTENT/BT/BUILDRES.BAT @@ -0,0 +1,82 @@ +@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 +xdel d:\dev\*.bak /s /n +set Path=c:\nwdos;c:\nwclient;c:\net;c:\pkware;d:\dev\bt;d:\dev\bt\models +d: +cd \dev\bt +cd models +@echo Building Mechs... > ..\result1.txt +@echo Building avatar... >> ..\result1.txt +mechbld avatar.mch >> ..\result1.txt +@echo Building blkhawk... >> ..\result1.txt +mechbld blkhawk.mch >> ..\result1.txt +@echo Building loki... >> ..\result1.txt +mechbld loki.mch >> ..\result1.txt +@echo Building madcat... >> ..\result1.txt +mechbld madcat.mch >> ..\result1.txt +@echo Building owens... >> ..\result1.txt +mechbld owens.mch >> ..\result1.txt +@echo Building sunder... >> ..\result1.txt +mechbld sunder.mch >> ..\result1.txt +@echo Building thor... >> ..\result1.txt +mechbld thor.mch >> ..\result1.txt +@echo Building vulture... >> ..\result1.txt +mechbld vulture.mch >> ..\result1.txt +@rem @echo Building firestarter... >> ..\result1.txt +@rem mechbld firstrtr.mch >> ..\result1.txt +@rem @echo Building blackjack... >> ..\result1.txt +@rem mechbld blkjack.mch >> ..\result1.txt +@echo Building ava1... >> ..\result1.txt +mechbld ava1.mch >> ..\result1.txt +@echo Building bhk1... >> ..\result1.txt +mechbld bhk1.mch >> ..\result1.txt +@echo Building Lok1... >> ..\result1.txt +mechbld lok1.mch >> ..\result1.txt +@echo Building Lok2... >> ..\result1.txt +mechbld lok2.mch >> ..\result1.txt +@echo Building mad1... >> ..\result1.txt +mechbld mad1.mch >> ..\result1.txt +@echo Building mad2... >> ..\result1.txt +mechbld mad2.mch >> ..\result1.txt +@echo Building thr1... >> ..\result1.txt +mechbld thr1.mch >> ..\result1.txt +@echo Building vul1... >> ..\result1.txt +mechbld vul1.mch >> ..\result1.txt +@echo Building own1... >> ..\result1.txt +mechbld own1.mch >> ..\result1.txt +@echo Building snd1... >> ..\result1.txt +mechbld snd1.mch >> ..\result1.txt +@REM @echo Building snd2... >> ..\result1.txt +@REM mechbld snd2.mch >> ..\result1.txt +@REM @echo Building vul2... >> ..\result1.txt +@REM mechbld vul2.mch >> ..\result1.txt +@REM @echo Building thr6... >> ..\result1.txt +@REM mechbld thr6.mch >> ..\result1.txt +@REM @echo Building ava2... >> ..\result1.txt +@REM mechbld ava2.mch >> ..\result1.txt + +@rem @echo Building raptor... >> ..\result1.txt +@rem mechbld raptor.mch >> ..\result1.txt +@rem @echo Building strider... >> ..\result1.txt +@rem mechbld strider.mch >> ..\result1.txt +@REM @echo Building bat... >> ..\result1.txt +@REM mechbld bat.mch >> ..\result1.txt +cd .. +btl4tool -b btl4.bld >> result1.txt +call arcbt f . >> result1.txt +del c:\vgl_labs\archive\bt%1.exe +copy bt.zip c:\vgl_labs\archive\bt%1.zip +del bt.zip +c: +cd c:\vgl_labs\archive +zip2exe bt%1.zip +del bt%1.zip +d: +cd d:\dev\bt +rem edit result1.txt diff --git a/CONTENT/BT/DEARCBT.BAT b/CONTENT/BT/DEARCBT.BAT new file mode 100644 index 0000000..abd65cb --- /dev/null +++ b/CONTENT/BT/DEARCBT.BAT @@ -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 diff --git a/CONTENT/BT/EXCLUDE.LST b/CONTENT/BT/EXCLUDE.LST new file mode 100644 index 0000000..001f660 --- /dev/null +++ b/CONTENT/BT/EXCLUDE.LST @@ -0,0 +1,7 @@ +joystick.ini +anims\vcs.cfg +audio\vcs.cfg +gauge\vcs.cfg +maps\vcs.cfg +models\vcs.cfg +solids\vcs.cfg diff --git a/CONTENT/BT/FAILURE.LOG b/CONTENT/BT/FAILURE.LOG new file mode 100644 index 0000000..ecf86ed --- /dev/null +++ b/CONTENT/BT/FAILURE.LOG @@ -0,0 +1,12 @@ +[RIOBoardErrors] +error=missing_board@Slot=5:Address=0 +[RIODeadLamps] +lamp=TeslaRelay3 +lamp=undefined_0x17 +lamp=TeslaRelay1 +lamp=PanicButton +lamp=IcomAmpEnableRelay +lamp=IcomIncRelay +lamp=IcomPTTRelay +lamp=undefined_0x3D +lamp=FloorEntry diff --git a/CONTENT/BT/FILELIST b/CONTENT/BT/FILELIST new file mode 100644 index 0000000..4660224 --- /dev/null +++ b/CONTENT/BT/FILELIST @@ -0,0 +1,68 @@ + +---------- c:filelist +--a--- 249 3-06-97 1:48a c:\btravine\models\swiftwnd.mod +--a--- 247 3-06-97 1:48a c:\btravine\models\striker.mod +--a--- 247 3-06-97 1:48a c:\btravine\models\srmcarry.mod +--a--- 247 3-06-97 1:48a c:\btravine\models\semirig.mod +--a--- 240 3-06-97 1:48a c:\btravine\models\semi.mod +--a--- 243 3-06-97 1:48a c:\btravine\models\rommel.mod +--a--- 249 3-06-97 1:48a c:\btravine\models\mechmovr.mod +--a--- 247 3-06-97 1:48a c:\btravine\models\lrmcarry.mod +--a--- 244 3-06-97 1:48a c:\btravine\models\hummer.mod +--a--- 249 3-06-97 1:48a c:\btravine\models\harasser.mod +--a--- 241 3-06-97 1:48a c:\btravine\models\dozer.mod +--a--- 246 3-06-97 1:48a c:\btravine\models\coolant.mod +--a--- 247 3-06-97 1:48a c:\btravine\models\comtruck.mod +--a--- 246 3-06-97 1:48a c:\btravine\models\bulldog.mod +--a--- 248 3-06-97 1:48a c:\btravine\models\armrmovr.mod +--a--- 237 3-06-97 1:48a c:\btravine\models\apc.mod +--a--- 65,606 3-06-97 12:59a c:\btravine\video\tex\bexp.bsl +--a--- 32,886 3-06-97 12:46a c:\btravine\video\tex\basev.bsl +DIRECTORY 3-06-97 12:40a c:\btravine\video\mat\grass\.. +DIRECTORY 3-06-97 12:40a c:\btravine\video\mat\grass\. +DIRECTORY 3-06-97 12:40a c:\btravine\video\mat\grass +--a--- 2,880 3-06-97 12:40a c:\btravine\video\mat\grass\basev.bmf +--a--- 24,087 3-06-97 12:40a c:\btravine\video\geo\swiftwnd.bgf +--a--- 14,760 3-06-97 12:40a c:\btravine\video\geo\swiftd.bgf +--a--- 19,052 3-06-97 12:40a c:\btravine\video\geo\striker.bgf +--a--- 10,537 3-06-97 12:40a c:\btravine\video\geo\strikd.bgf +--a--- 9,411 3-06-97 12:40a c:\btravine\video\geo\srmd.bgf +--a--- 14,943 3-06-97 12:40a c:\btravine\video\geo\srmcarry.bgf +--a--- 15,853 3-06-97 12:40a c:\btravine\video\geo\semirig.bgf +--a--- 8,359 3-06-97 12:40a c:\btravine\video\geo\semird.bgf +--a--- 11,085 3-06-97 12:40a c:\btravine\video\geo\semid.bgf +--a--- 22,307 3-06-97 12:40a c:\btravine\video\geo\semi.bgf +--a--- 16,697 3-06-97 12:40a c:\btravine\video\geo\rommel.bgf +--a--- 10,870 3-06-97 12:40a c:\btravine\video\geo\romd.bgf +--a--- 27,552 3-06-97 12:40a c:\btravine\video\geo\mechmovr.bgf +--a--- 14,832 3-06-97 12:40a c:\btravine\video\geo\mechmd.bgf +--a--- 8,600 3-06-97 12:40a c:\btravine\video\geo\lrmd.bgf +--a--- 9,584 3-06-97 12:40a c:\btravine\video\geo\lrmcarry.bgf +--a--- 16,626 3-06-97 12:40a c:\btravine\video\geo\hummer.bgf +--a--- 9,068 3-06-97 12:40a c:\btravine\video\geo\hummd.bgf +--a--- 9,556 3-06-97 12:40a c:\btravine\video\geo\harsrd.bgf +--a--- 21,446 3-06-97 12:40a c:\btravine\video\geo\harasser.bgf +--a--- 15,038 3-06-97 12:40a c:\btravine\video\geo\dozer.bgf +--a--- 9,343 3-06-97 12:40a c:\btravine\video\geo\dozd.bgf +--a--- 15,545 3-06-97 12:40a c:\btravine\video\geo\coold.bgf +--a--- 25,909 3-06-97 12:40a c:\btravine\video\geo\coolant.bgf +--a--- 26,916 3-06-97 12:40a c:\btravine\video\geo\comtruck.bgf +--a--- 12,188 3-06-97 12:40a c:\btravine\video\geo\comd.bgf +--a--- 12,730 3-06-97 12:40a c:\btravine\video\geo\bulldog.bgf +--a--- 8,129 3-06-97 12:40a c:\btravine\video\geo\bulld.bgf +--a--- 22,889 3-06-97 12:40a c:\btravine\video\geo\armrmovr.bgf +--a--- 11,050 3-06-97 12:40a c:\btravine\video\geo\armrd.bgf +--a--- 10,839 3-06-97 12:39a c:\btravine\video\geo\apcd.bgf +--a--- 22,590 3-06-97 12:39a c:\btravine\video\geo\apc.bgf +--a--- 381 3-05-97 11:48p c:\btravine\video\mat\grass.bmf +--a--- 65,578 3-05-97 11:17p c:\btravine\video\tex\tree.bsl +--a--- 291 3-05-97 10:21p c:\btravine\video\geo\treesh.bgf +--a--- 2,761 3-05-97 10:02p c:\btravine\video\geo\tree.bgf +--a--- 6,381 3-05-97 8:59p c:\btravine\video\geo\hillg3.bgf +--a--- 6,189 3-05-97 8:42p c:\btravine\video\geo\hillg2.bgf +--a--- 8,241 3-05-97 8:25p c:\btravine\video\geo\hillg1.bgf +--a--- 14,755 3-05-97 6:50p c:\btravine\video\geo\grnd100.bgf +--a--- 49,209 3-04-97 5:17p c:\btravine\video\tex\grassc.vtx +--a--- 49,209 3-04-97 5:17p c:\btravine\video\mat\grassb.vtx +--a--- 49,209 3-04-97 5:16p c:\btravine\video\mat\grassc.vtx +--a--- 6,791 3-04-97 4:35p c:\btravine\video\geo\bcone1.bgf diff --git a/CONTENT/BT/GAUGE/AB01_GA.GIM b/CONTENT/BT/GAUGE/AB01_GA.GIM new file mode 100644 index 0000000..b09f101 --- /dev/null +++ b/CONTENT/BT/GAUGE/AB01_GA.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=20, 0, 50 +v1=-69, 0, 50 +v2=-69, 0, -50 +v3=20, 0, -50 + +[level0] +linelist=a_bld v0 v1 v2 v3 v0 + diff --git a/CONTENT/BT/GAUGE/AB02_GA.GIM b/CONTENT/BT/GAUGE/AB02_GA.GIM new file mode 100644 index 0000000..04db4ca --- /dev/null +++ b/CONTENT/BT/GAUGE/AB02_GA.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=25, 0, 45 +v1=-25, 0, 45 +v2=-25, 0, -45 +v3=25, 0, -45 + +[level0] +linelist=a_bld v0 v1 v2 v3 v0 + diff --git a/CONTENT/BT/GAUGE/AB03_GA.GIM b/CONTENT/BT/GAUGE/AB03_GA.GIM new file mode 100644 index 0000000..b3a9879 --- /dev/null +++ b/CONTENT/BT/GAUGE/AB03_GA.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=68, 0, 50 +v1=-20, 0, 50 +v2=-20, 0, -50 +v3=68, 0, -50 + +[level0] +linelist=a_bld v0 v1 v2 v3 v0 + diff --git a/CONTENT/BT/GAUGE/AB04_GA.GIM b/CONTENT/BT/GAUGE/AB04_GA.GIM new file mode 100644 index 0000000..723bd2a --- /dev/null +++ b/CONTENT/BT/GAUGE/AB04_GA.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=38, 0, 38 +v1=-37, 0, 38 +v2=-37, 0, -51 +v3=38, 0, -51 + +[level0] +linelist=a_bld v0 v1 v2 v3 v0 + diff --git a/CONTENT/BT/GAUGE/AB05_GA.GIM b/CONTENT/BT/GAUGE/AB05_GA.GIM new file mode 100644 index 0000000..ab8b5b0 --- /dev/null +++ b/CONTENT/BT/GAUGE/AB05_GA.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=150, 0, 44 +v1=-150, 0, 44 +v2=-150, 0, -45 +v3=150, 0, -45 + +[level0] +linelist=a_bld v0 v1 v2 v3 v0 + diff --git a/CONTENT/BT/GAUGE/AB06_GA.GIM b/CONTENT/BT/GAUGE/AB06_GA.GIM new file mode 100644 index 0000000..0fe0e4c --- /dev/null +++ b/CONTENT/BT/GAUGE/AB06_GA.GIM @@ -0,0 +1,29 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=3000 +level1=10000 + +[vertices] +v0=50, 0, -7 +v1=35, 0, -7 +v2=35, 0, -33 +v3=50, 0, -33 +v4=50, 0, 33 +v5=35, 0, 33 +v6=35, 0, 7 +v7=50, 0, 7 +v8=50, 0, 50 +v9=-50, 0, 50 +v10=-50, 0, -50 +v11=50, 0, -50 + +[level0] +linelist=a_bay v0 v1 v2 v3 v0 +linelist=a_bay v4 v5 v6 v7 v4 +linelist=a_hanger v8 v9 v10 v11 v8 + +[level1] +linelist=a_hanger v8 v9 v10 v11 v8 + diff --git a/CONTENT/BT/GAUGE/AB07_GA.GIM b/CONTENT/BT/GAUGE/AB07_GA.GIM new file mode 100644 index 0000000..34d357b --- /dev/null +++ b/CONTENT/BT/GAUGE/AB07_GA.GIM @@ -0,0 +1,20 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=2500 +level1=10000 + +[vertices] +v0=10, 0, 15 +v1=0, 0, 15 +v2=-15, 0, 0 +v3=-15, 0, -10 +v4=10, 0, -10 + +[level0] +linelist=a_hanger v0 v1 v2 v3 v4 v0 + +[level1] +linelist=a_hanger v0 v1 v2 v3 v4 v0 + diff --git a/CONTENT/BT/GAUGE/AB08_GA.GIM b/CONTENT/BT/GAUGE/AB08_GA.GIM new file mode 100644 index 0000000..f90ec6d --- /dev/null +++ b/CONTENT/BT/GAUGE/AB08_GA.GIM @@ -0,0 +1,16 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=60, 0, -60 +v1=60, 0, -2.62268e-06 +v2=2.62268e-06, 0, 60 +v3=-60, 0, 60 +v4=-60, 0, -60 + +[level0] +linelist=a_stands v0 v1 v2 v3 v4 v0 + diff --git a/CONTENT/BT/GAUGE/AB09_GA.GIM b/CONTENT/BT/GAUGE/AB09_GA.GIM new file mode 100644 index 0000000..b5fc55c --- /dev/null +++ b/CONTENT/BT/GAUGE/AB09_GA.GIM @@ -0,0 +1,25 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=7, 0, 23 +v1=7, 0, 6 +v2=33, 0, 6 +v3=33, 0, 23 +v4=-33, 0, 23 +v5=-33, 0, 6 +v6=-7, 0, 6 +v7=-7, 0, 23 +v8=-50, 0, 23 +v9=-50, 0, -27 +v10=50, 0, -27 +v11=50, 0, 23 + +[level0] +linelist=a_bay v0 v1 v2 v3 v0 +linelist=a_bay v4 v5 v6 v7 v4 +linelist=a_hanger v8 v9 v10 v11 v8 + diff --git a/CONTENT/BT/GAUGE/AB10_GA.GIM b/CONTENT/BT/GAUGE/AB10_GA.GIM new file mode 100644 index 0000000..cd7d52b --- /dev/null +++ b/CONTENT/BT/GAUGE/AB10_GA.GIM @@ -0,0 +1,29 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=2000 +level1=10000 + +[vertices] +v0=7, 0, -23 +v1=33, 0, -23 +v2=33, 0, -6 +v3=7, 0, -6 +v4=-33, 0, -23 +v5=-7, 0, -23 +v6=-7, 0, -6 +v7=-33, 0, -6 +v8=-50, 0, -23 +v9=50, 0, -23 +v10=50, 0, 27 +v11=-50, 0, 27 + +[level0] +linelist=a_bay v0 v1 v2 v3 v0 +linelist=a_bay v4 v5 v6 v7 v4 +linelist=a_hanger v8 v9 v10 v11 v8 + +[level1] +linelist=a_hanger v8 v9 v10 v11 v8 + diff --git a/CONTENT/BT/GAUGE/AD01_GA.GIM b/CONTENT/BT/GAUGE/AD01_GA.GIM new file mode 100644 index 0000000..7a0e541 --- /dev/null +++ b/CONTENT/BT/GAUGE/AD01_GA.GIM @@ -0,0 +1,40 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=3000 +level1=10000 + +[vertices] +v0=14, 0, -7 +v1=-9, 0, -7 +v2=-9, 0, -11 +v3=14, 0, -11 +v4=55, 0, 9 +v5=28, 0, 9 +v6=55, 0, -18 +v7=28, 0, -1 +v8=15, 0, -1 +v9=15, 0, -18 +v10=-10, 0, -1 +v11=-23, 0, -1 +v12=-10, 0, -18 +v13=-50, 0, -18 +v14=-50, 0, 9 +v15=-23, 0, 9 + +[level0] +linelist=a_door v0 v1 v2 v3 v0 +linelist=a_wall v4 v5 v6 v4 +linelist=a_wall v5 v7 v6 v5 +linelist=a_wall v8 v9 v7 v8 +linelist=a_wall v7 v9 v6 v7 +linelist=a_wall v10 v11 v12 v10 +linelist=a_wall v12 v11 v13 v12 +linelist=a_wall v13 v11 v14 v13 +linelist=a_wall v11 v15 v14 v11 + +[level1] +linelist=a_door v0 v1 v2 v3 v0 +linelist=a_wall v4 v14 v13 v6 v4 + diff --git a/CONTENT/BT/GAUGE/ADPAL.PCC b/CONTENT/BT/GAUGE/ADPAL.PCC new file mode 100644 index 0000000..987e374 Binary files /dev/null and b/CONTENT/BT/GAUGE/ADPAL.PCC differ diff --git a/CONTENT/BT/GAUGE/ADPAL2.PCC b/CONTENT/BT/GAUGE/ADPAL2.PCC new file mode 100644 index 0000000..fe29ea2 Binary files /dev/null and b/CONTENT/BT/GAUGE/ADPAL2.PCC differ diff --git a/CONTENT/BT/GAUGE/APC.GIM b/CONTENT/BT/GAUGE/APC.GIM new file mode 100644 index 0000000..9c8e485 --- /dev/null +++ b/CONTENT/BT/GAUGE/APC.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=-2.5, 0, -5.5 +v1=2.5, 0, -5.5 +v2=2.5, 0, 5 +v3=-2.5, 0, 5 + +[level0] +linelist=a_vehicle v0 v1 v2 v3 v0 + diff --git a/CONTENT/BT/GAUGE/AR01_GA.GIM b/CONTENT/BT/GAUGE/AR01_GA.GIM new file mode 100644 index 0000000..1a191fd --- /dev/null +++ b/CONTENT/BT/GAUGE/AR01_GA.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=30, 0, 25 +v1=-33, 0, 25 +v2=-33, 0, -26 +v3=30, 0, -26 + +[level0] +linelist=a_bld v0 v1 v2 v3 v0 + diff --git a/CONTENT/BT/GAUGE/AR02_GA.GIM b/CONTENT/BT/GAUGE/AR02_GA.GIM new file mode 100644 index 0000000..90b38c3 --- /dev/null +++ b/CONTENT/BT/GAUGE/AR02_GA.GIM @@ -0,0 +1,24 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=3000 +level1=10000 + +[vertices] +v0=11, 0, -25 +v1=11, 0, 20 +v2=-11, 0, 20 +v3=-11, 0, -25 +v4=25, 0, -25 +v5=25, 0, 26 +v6=-25, 0, 26 +v7=-25, 0, -25 + +[level0] +linelist=a_bay v0 v1 v2 v3 v0 +linelist=a_hanger v4 v5 v6 v7 v4 + +[level1] +linelist=a_hanger v4 v5 v6 v7 v4 + diff --git a/CONTENT/BT/GAUGE/AR03_GA.GIM b/CONTENT/BT/GAUGE/AR03_GA.GIM new file mode 100644 index 0000000..af3c507 --- /dev/null +++ b/CONTENT/BT/GAUGE/AR03_GA.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=50, 0, 25 +v1=-50, 0, 25 +v2=-50, 0, -25 +v3=50, 0, -25 + +[level0] +linelist=a_bld v0 v1 v2 v3 v0 + diff --git a/CONTENT/BT/GAUGE/AR04_GA.GIM b/CONTENT/BT/GAUGE/AR04_GA.GIM new file mode 100644 index 0000000..96ac195 --- /dev/null +++ b/CONTENT/BT/GAUGE/AR04_GA.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=25, 0, 25 +v1=-25, 0, 25 +v2=-25, 0, -25 +v3=25, 0, -25 + +[level0] +linelist=a_bld v0 v1 v2 v3 v0 + diff --git a/CONTENT/BT/GAUGE/AR05_GA.GIM b/CONTENT/BT/GAUGE/AR05_GA.GIM new file mode 100644 index 0000000..96ac195 --- /dev/null +++ b/CONTENT/BT/GAUGE/AR05_GA.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=25, 0, 25 +v1=-25, 0, 25 +v2=-25, 0, -25 +v3=25, 0, -25 + +[level0] +linelist=a_bld v0 v1 v2 v3 v0 + diff --git a/CONTENT/BT/GAUGE/ARENA_GA.GIM b/CONTENT/BT/GAUGE/ARENA_GA.GIM new file mode 100644 index 0000000..a53241e --- /dev/null +++ b/CONTENT/BT/GAUGE/ARENA_GA.GIM @@ -0,0 +1,70 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=1000 + +[vertices] +v0=650, 0, 650 +v1=-650, 0, 650 +v2=-650, 0, -650 +v3=650, 0, -650 +v4=-100, 0, 450 +v5=-150, 0, 450 +v6=-150, 0, 400 +v7=-100, 0, 400 +v8=150, 0, 450 +v9=100, 0, 450 +v10=100, 0, 400 +v11=150, 0, 400 +v12=450, 0, 150 +v13=400, 0, 150 +v14=400, 0, 100 +v15=450, 0, 100 +v16=450, 0, -100 +v17=400, 0, -100 +v18=400, 0, -150 +v19=450, 0, -150 +v20=450, 0, -400 +v21=400, 0, -400 +v22=400, 0, -450 +v23=450, 0, -450 +v24=200, 0, -400 +v25=100, 0, -400 +v26=100, 0, -450 +v27=200, 0, -450 +v28=-100, 0, -400 +v29=-150, 0, -400 +v30=-150, 0, -450 +v31=-100, 0, -450 +v32=-100, 0, -100 +v33=-150, 0, -100 +v34=-150, 0, -150 +v35=-100, 0, -150 +v36=-100, 0, 300 +v37=-200, 0, 300 +v38=-200, 0, 250 +v39=-100, 0, 250 +v40=-350, 0, 150 +v41=-450, 0, 150 +v42=-450, 0, 100 +v43=-350, 0, 100 +v44=-350, 0, -100 +v45=-450, 0, -100 +v46=-450, 0, -200 +v47=-350, 0, -200 + +[level0] +linelist=a_arenawall v0 v1 v2 v3 v0 +linelist=a_arenawall v4 v5 v6 v7 v4 +linelist=a_arenawall v8 v9 v10 v11 v8 +linelist=a_arenawall v12 v13 v14 v15 v12 +linelist=a_arenawall v16 v17 v18 v19 v16 +linelist=a_arenawall v20 v21 v22 v23 v20 +linelist=a_arenawall v24 v25 v26 v27 v24 +linelist=a_arenawall v28 v29 v30 v31 v28 +linelist=a_arenawall v32 v33 v34 v35 v32 +linelist=a_arenawall v36 v37 v38 v39 v36 +linelist=a_arenawall v40 v41 v42 v43 v40 +linelist=a_arenawall v44 v45 v46 v47 v44 + diff --git a/CONTENT/BT/GAUGE/ARMRMOVR.GIM b/CONTENT/BT/GAUGE/ARMRMOVR.GIM new file mode 100644 index 0000000..140475f --- /dev/null +++ b/CONTENT/BT/GAUGE/ARMRMOVR.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=-2, 0, -2 +v1=2, 0, -2 +v2=2, 0, 2 +v3=-2, 0, 2 + +[level0] +linelist=a_vehicle v0 v1 v2 v3 v0 + diff --git a/CONTENT/BT/GAUGE/AVA2DAMA.PCC b/CONTENT/BT/GAUGE/AVA2DAMA.PCC new file mode 100644 index 0000000..20d3b0c Binary files /dev/null and b/CONTENT/BT/GAUGE/AVA2DAMA.PCC differ diff --git a/CONTENT/BT/GAUGE/AVA_MR.PCC b/CONTENT/BT/GAUGE/AVA_MR.PCC new file mode 100644 index 0000000..2258895 Binary files /dev/null and b/CONTENT/BT/GAUGE/AVA_MR.PCC differ diff --git a/CONTENT/BT/GAUGE/AW01_GA.GIM b/CONTENT/BT/GAUGE/AW01_GA.GIM new file mode 100644 index 0000000..7ea759a --- /dev/null +++ b/CONTENT/BT/GAUGE/AW01_GA.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=50, 0, 5 +v1=-50, 0, 5 +v2=-50, 0, -10 +v3=50, 0, -10 + +[level0] +linelist=a_wall v0 v1 v2 v3 v0 + diff --git a/CONTENT/BT/GAUGE/AW02_GA.GIM b/CONTENT/BT/GAUGE/AW02_GA.GIM new file mode 100644 index 0000000..5aedfe3 --- /dev/null +++ b/CONTENT/BT/GAUGE/AW02_GA.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=50, 0, 0 +v1=-50, 0, 0 +v2=-50, 0, -12 +v3=50, 0, -12 + +[level0] +linelist=a_wall v0 v1 v2 v3 v0 + diff --git a/CONTENT/BT/GAUGE/AW03_GA.GIM b/CONTENT/BT/GAUGE/AW03_GA.GIM new file mode 100644 index 0000000..6d00853 --- /dev/null +++ b/CONTENT/BT/GAUGE/AW03_GA.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=0, 0, 100 +v1=-20, 0, 100 +v2=-20, 0, -100 +v3=0, 0, -100 + +[level0] +linelist=a_wall v0 v1 v2 v3 v0 + diff --git a/CONTENT/BT/GAUGE/AW04_GA.GIM b/CONTENT/BT/GAUGE/AW04_GA.GIM new file mode 100644 index 0000000..436564b --- /dev/null +++ b/CONTENT/BT/GAUGE/AW04_GA.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=52, 0, 75 +v1=-5, 0, 75 +v2=-5, 0, -75 +v3=52, 0, -75 + +[level0] +linelist=a_hanger v0 v1 v2 v3 v0 + diff --git a/CONTENT/BT/GAUGE/AW05_GA.GIM b/CONTENT/BT/GAUGE/AW05_GA.GIM new file mode 100644 index 0000000..a6e9415 --- /dev/null +++ b/CONTENT/BT/GAUGE/AW05_GA.GIM @@ -0,0 +1,19 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=15, 0, 35 +v1=10, 0, 35 +v2=10, 0, -10 +v3=15, 0, -10 +v4=-35, 0, -10 +v5=-35, 0, -15 +v6=15, 0, -15 + +[level0] +linelist=a_wall v0 v1 v2 v3 v0 +linelist=a_wall v3 v4 v5 v6 v3 + diff --git a/CONTENT/BT/GAUGE/BDUCK.PCC b/CONTENT/BT/GAUGE/BDUCK.PCC new file mode 100644 index 0000000..7708f23 Binary files /dev/null and b/CONTENT/BT/GAUGE/BDUCK.PCC differ diff --git a/CONTENT/BT/GAUGE/BLAMP.PCC b/CONTENT/BT/GAUGE/BLAMP.PCC new file mode 100644 index 0000000..199bea2 Binary files /dev/null and b/CONTENT/BT/GAUGE/BLAMP.PCC differ diff --git a/CONTENT/BT/GAUGE/BLD03_GA.GIM b/CONTENT/BT/GAUGE/BLD03_GA.GIM new file mode 100644 index 0000000..51de1e5 --- /dev/null +++ b/CONTENT/BT/GAUGE/BLD03_GA.GIM @@ -0,0 +1,26 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=-29, 0, -17 +v1=17, 0, -17 +v2=17, 0, 11 +v3=-29, 0, 11 + +v4=1, 0, -23 +v5=29, 0, -23 +v6=29, 0, 23 +v7=1, 0, 23 + +v8=10, 0, 5 +v9=20, 0, 5 +v10=20, 0, 15 +v11=10, 0, 15 + +[level0] +linelist=a_bunker v0 v1 v2 v3 v0 +linelist=a_bunker v4 v5 v6 v7 v4 +linelist=a_bunker v8 v9 v10 v11 v8 \ No newline at end of file diff --git a/CONTENT/BT/GAUGE/BLD04_GA.GIM b/CONTENT/BT/GAUGE/BLD04_GA.GIM new file mode 100644 index 0000000..1479251 --- /dev/null +++ b/CONTENT/BT/GAUGE/BLD04_GA.GIM @@ -0,0 +1,24 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=-7, 0, 9 +v1=-7, 0, 20 +v2=6.5, 0, 20 +v3=6.5, 0, 9 +v4=-12, 0, -17 +v5=-12, 0, 3 +v6=12, 0, 3 +v7=12, 0, -17 +v8=-5.5, 0, 3 +v9=-5.5, 0, 9 +v10=4.5, 0, 9 +v11=4.5, 0, 3 + +[level0] +linelist=a_bunker v0 v1 v2 v3 v0 +linelist=a_bunker v4 v5 v6 v7 v4 +linelist=a_bunker v8 v9 v10 v11 v8 diff --git a/CONTENT/BT/GAUGE/BLD06_GA.GIM b/CONTENT/BT/GAUGE/BLD06_GA.GIM new file mode 100644 index 0000000..e540372 --- /dev/null +++ b/CONTENT/BT/GAUGE/BLD06_GA.GIM @@ -0,0 +1,50 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=-20.0781, 0, -7.04688 +v1=-2.92188, 0, -7.04688 +v2=-2.92188, 0, 11.0469 +v3=-20.0781, 0, 11.0469 + +v4=2.92188, 0, -7.04688 +v5=20.0781, 0, -7.04688 +v6=20.0781, 0, 11.0469 +v7=2.92188, 0, 11.0469 + +v8=-9.07812, 0, -3.04688 +v9=9.07812, 0, -3.04688 +v10=9.07812, 0, 15.0469 +v11=-9.07812, 0, 15.0469 + +v12=20, 0, -10 +v13=22, 0, -10 +v14=22, 0, -3 +v15=20, 0, -3 + +v16=2.54688, 0, -10 +v17=4.54688, 0, -10 +v18=4.54688, 0, -3 +v19=2.54688, 0, -3 + +v20=-21.9219, 0, -10 +v21=-19.9219, 0, -10 +v22=-19.9219, 0, -3 +v23=-21.9219, 0, -3 + +v24=-4.46094, 0, -10 +v25=-2.46094, 0, -10 +v26=-2.46094, 0, -3 +v27=-4.46094, 0, -3 + +[level0] +linelist=a_bunker v0 v1 v2 v3 v0 +linelist=a_bunker v4 v5 v6 v7 v4 +linelist=a_bunker v8 v9 v10 v11 v8 +linelist=a_bunker v12 v13 v14 v15 v12 +linelist=a_bunker v16 v17 v18 v19 v16 +linelist=a_bunker v20 v21 v22 v23 v20 +linelist=a_bunker v24 v25 v26 v27 v24 \ No newline at end of file diff --git a/CONTENT/BT/GAUGE/BLD08_GA.GIM b/CONTENT/BT/GAUGE/BLD08_GA.GIM new file mode 100644 index 0000000..2e040a4 --- /dev/null +++ b/CONTENT/BT/GAUGE/BLD08_GA.GIM @@ -0,0 +1,146 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=35.5, 0, -21.5 +v1=46.5, 0, -21.5 +v2=45.5, 0, -19 +v3=35.5, 0, -19 + +v4=-10.5, 0, -21.5 +v5=0.5, 0, -21.5 +v6=0.5, 0, -19 +v7=-10.5, 0, -19 + +v8=31.5, 0, -37 +v9=50.5, 0, -37 +v10=50.5, 0, -21.5 +v11=31.5, 0, -21.5 + +v12=-14.5, 0, -37 +v13=4.5, 0, -37 +v14=4.5, 0, -21.5 +v15=-14.5, 0, -21.5 + +v16=8, 0, -40 +v17=28.5, 0, -40 +v18=28.5, 0, -28 +v19=8, 0, -28 + +v20=8, 0, -28 +v21=28.5, 0, -28 +v22=28.5, 0, -19 +v23=8, 0, -19 + +v24=4.5, 0, -40 +v25=8, 0, -40 +v26=8, 0, -19 +v27=4.5, 0, -19 + +v28=-38, 0, -40 +v29=-18, 0, -40 +v30=-18, 0, -28 +v31=-38, 0, -28 + +v32=-38, 0, -28 +v33=-18, 0, -28 +v34=-18, 0, -19 +v35=-38, 0, -19 + +v36=-42, 0, -40 +v37=-38, 0, -40 +v38=-38, 0, -19 +v39=-42, 0, -19 + +v40=-18, 0, -40 +v41=-14.5, 0, -40 +v42=-14.5, 0, -19 +v43=-18, 0, -19 + +v44=54.5, 0, -40 +v45=74.5, 0, -40 +v46=74.5, 0, -28 +v47=54.5, 0, -28 + +v48=54.5, 0, -28 +v49=74.5, 0, -28 +v50=74.5, 0, -19 +v51=54.5, 0, -19 + +v52=50.5, 0, -40 +v53=54.5, 0, -40 +v54=54.5, 0, -19 +v55=50.5, 0, -19 + +v56=74.5, 0, -40 +v57=77.75, 0, -40 +v58=77.75, 0, -19 +v59=74.5, 0, -19 + +v60=-58, 0, -28 +v61=-40, 0, -28 +v62=-40, 0, -8 +v63=-58, 0, -8 + +v64=-83, 0, -19 +v65=-63, 0, -19 +v66=-63, 0, -6 +v67=-83, 0, -6 + +v68=-63, 0, -19 +v69=-52, 0, -19 +v70=-52, 0, -6 +v71=-63, 0, -6 + +v72=-87, 0, -19 +v73=-83, 0, -19 +v74=-83, 0, -6 +v75=-87, 0, -6 + +v76=-87, 0, -6 +v77=-52, 0, -6 +v78=-52, 0, 8.5 +v79=-87, 0, 8.5 + +v80=-82, 0, 8.5 +v81=-58, 0, 8.5 +v82=-58, 0, 14.5 +v83=-82, 0, 14.5 + +v84=-87, 0, 14.5 +v85=-52, 0, 14.5 +v86=-52, 0, 40 +v87=-87, 0, 40 + +v88=31.5, 0, -40 +v89=28.5, 0, -40 +v90=28.5, 0, -19 +v91=31.5, 0, -19 + +[level0] +linelist=a_bunker v0 v1 v2 v3 v0 +linelist=a_bunker v4 v5 v6 v7 v4 +linelist=a_bunker v8 v9 v10 v11 v8 +linelist=a_bunker v12 v13 v14 v15 v12 +linelist=a_bunker v20 v21 v22 v23 v20 +linelist=a_bunker v24 v25 v26 v27 v24 +linelist=a_bunker v32 v33 v34 v35 v32 +linelist=a_bunker v36 v37 v38 v39 v36 +linelist=a_bunker v40 v41 v42 v43 v40 +linelist=a_bunker v48 v49 v50 v51 v48 +linelist=a_bunker v52 v53 v54 v55 v52 +linelist=a_bunker v56 v57 v58 v59 v56 +linelist=a_bunker v60 v61 v62 v63 v60 +linelist=a_bunker v68 v69 v70 v71 v68 +linelist=a_bunker v72 v73 v74 v75 v72 +linelist=a_bunker v76 v77 v78 v79 v76 +linelist=a_bunker v80 v81 v82 v83 v80 +linelist=a_bunker v84 v85 v86 v87 v84 +linelist=a_bunker v88 v89 v90 v91 v88 +linelist=a_hanger v16 v17 v18 v19 v16 +linelist=a_hanger v28 v29 v30 v31 v28 +linelist=a_hanger v44 v45 v46 v47 v44 +linelist=a_hanger v64 v65 v66 v67 v64 diff --git a/CONTENT/BT/GAUGE/BLD08_GA.ORG b/CONTENT/BT/GAUGE/BLD08_GA.ORG new file mode 100644 index 0000000..8f66da1 --- /dev/null +++ b/CONTENT/BT/GAUGE/BLD08_GA.ORG @@ -0,0 +1,146 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=35.5, 0, -21.5 +v1=46.5, 0, -21.5 +v2=45.5, 0, -19 +v3=35.5, 0, -19 + +v4=-10.5, 0, -21.5 +v5=0.5, 0, -21.5 +v6=0.5, 0, -19 +v7=-10.5, 0, -19 + +v8=31.5, 0, -37 +v9=50.5, 0, -37 +v10=50.5, 0, -21.5 +v11=31.5, 0, -21.5 + +v12=-14.5, 0, -37 +v13=4.5, 0, -37 +v14=4.5, 0, -21.5 +v15=-14.5, 0, -21.5 + +v16=8, 0, -40 +v17=28.5, 0, -40 +v18=28.5, 0, -28 +v19=8, 0, -28 + +v20=8, 0, -28 +v21=28.5, 0, -28 +v22=28.5, 0, -19 +v23=8, 0, -19 + +v24=4.5, 0, -40 +v25=8, 0, -40 +v26=8, 0, -19 +v27=4.5, 0, -19 + +v28=-38, 0, -40 +v29=-18, 0, -40 +v30=-18, 0, -28 +v31=-38, 0, -28 + +v32=-38, 0, -28 +v33=-18, 0, -28 +v34=-18, 0, -19 +v35=-38, 0, -19 + +v36=-42, 0, -40 +v37=-38, 0, -40 +v38=-38, 0, -19 +v39=-42, 0, -19 + +v40=-18, 0, -40 +v41=-14.5, 0, -40 +v42=-14.5, 0, -19 +v43=-18, 0, -19 + +v44=54.5, 0, -40 +v45=74.5, 0, -40 +v46=74.5, 0, -28 +v47=54.5, 0, -28 + +v48=54.5, 0, -28 +v49=74.5, 0, -28 +v50=74.5, 0, -19 +v51=54.5, 0, -19 + +v52=50.5, 0, -40 +v53=54.5, 0, -40 +v54=54.5, 0, -19 +v55=50.5, 0, -19 + +v56=74.5, 0, -40 +v57=77.75, 0, -40 +v58=77.75, 0, -19 +v59=74.5, 0, -19 + +v60=-58, 0, -28 +v61=-40, 0, -28 +v62=-40, 0, -8 +v63=-58, 0, -8 + +v64=-83, 0, -19 +v65=-63, 0, -19 +v66=-63, 0, -6 +v67=-83, 0, -6 + +v68=-63, 0, -19 +v69=-52, 0, -19 +v70=-52, 0, -6 +v71=-63, 0, -6 + +v72=-87, 0, -19 +v73=-83, 0, -19 +v74=-83, 0, -6 +v75=-87, 0, -6 + +v76=-87, 0, -6 +v77=-52, 0, -6 +v78=-52, 0, 8.5 +v79=-87, 0, 8.5 + +v80=-82, 0, 8.5 +v81=-58, 0, 8.5 +v82=-58, 0, 14.5 +v83=-82, 0, 14.5 + +v84=-87, 0, 14.5 +v85=-52, 0, 14.5 +v86=-52, 0, 40 +v87=-87, 0, 40 + +v88=31.5, 0, -40 +v89=28.5, 0, -40 +v90=28.5, 0, -19 +v91=31.5, 0, -19 + +[level0] +linelist=a_bunker v0 v1 v2 v3 v0 +linelist=a_bunker v4 v5 v6 v7 v4 +linelist=a_bunker v8 v9 v10 v11 v8 +linelist=a_bunker v12 v13 v14 v15 v12 +linelist=a_hanger v16 v17 v18 v19 v16 +linelist=a_bunker v20 v21 v22 v23 v20 +linelist=a_bunker v24 v25 v26 v27 v24 +linelist=a_hanger v28 v29 v30 v31 v28 +linelist=a_bunker v32 v33 v34 v35 v32 +linelist=a_bunker v36 v37 v38 v39 v36 +linelist=a_bunker v40 v41 v42 v43 v40 +linelist=a_hanger v44 v45 v46 v47 v44 +linelist=a_bunker v48 v49 v50 v51 v48 +linelist=a_bunker v52 v53 v54 v55 v52 +linelist=a_bunker v56 v57 v58 v59 v56 +linelist=a_bunker v60 v61 v62 v63 v60 +linelist=a_hanger v64 v65 v66 v67 v64 +linelist=a_bunker v68 v69 v70 v71 v68 +linelist=a_bunker v72 v73 v74 v75 v72 +linelist=a_bunker v76 v77 v78 v79 v76 +linelist=a_bunker v80 v81 v82 v83 v80 +linelist=a_bunker v84 v85 v86 v87 v84 +linelist=a_bunker v88 v89 v90 v91 v88 \ No newline at end of file diff --git a/CONTENT/BT/GAUGE/BLD20_GA.GIM b/CONTENT/BT/GAUGE/BLD20_GA.GIM new file mode 100644 index 0000000..95cc2c9 --- /dev/null +++ b/CONTENT/BT/GAUGE/BLD20_GA.GIM @@ -0,0 +1,33 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=-17.0312, 0, -11.9375 +v1=15.9688, 0, -11.9375 +v2=15.9688, 0, 8.0625 +v3=-17.0312, 0, 8.0625 + +v4=-26.0312, 0, -3.9375 +v5=-9.03125, 0, -3.9375 +v6=-9.03125, 0, 14.0625 +v7=-26.0312, 0, 14.0625 + +v8=7.96875, 0, -13.9375 +v9=25.9688, 0, -13.9375 +v10=25.9688, 0, 14.0625 +v11=7.96875, 0, 14.0625 + +v12=-9.03125, 0, -2.9375 +v13=2.96875, 0, -2.9375 +v14=2.96875, 0, 5.0625 +v15=-9.03125, 0, 5.0625 + + +[level0] +linelist=a_bunker v0 v1 v2 v3 v0 +linelist=a_bunker v4 v5 v6 v7 v4 +linelist=a_bunker v8 v9 v10 v11 v8 +linelist=a_bunker v12 v13 v14 v15 v12 diff --git a/CONTENT/BT/GAUGE/BLD24_GA.GIM b/CONTENT/BT/GAUGE/BLD24_GA.GIM new file mode 100644 index 0000000..af5cf88 --- /dev/null +++ b/CONTENT/BT/GAUGE/BLD24_GA.GIM @@ -0,0 +1,20 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=-2.24219, 0, -21.3906 +v1=9.25781, 0, -21.3906 +v2=9.25781, 0, 0.109375 +v3=-2.24219, 0, 0.109375 + +v4=-8.74219, 0, 0.109375 +v5=9.25781, 0, 0.109375 +v6=9.25781, 0, 22.1094 +v7=-8.74219, 0, 22.1094 + +[level0] +linelist=a_bunker v0 v1 v2 v3 v0 +linelist=a_bunker v4 v5 v6 v7 v4 \ No newline at end of file diff --git a/CONTENT/BT/GAUGE/BLD26_GA.GIM b/CONTENT/BT/GAUGE/BLD26_GA.GIM new file mode 100644 index 0000000..e85e379 --- /dev/null +++ b/CONTENT/BT/GAUGE/BLD26_GA.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=-6, 0, -9 +v1=6, 0, -9 +v2=6, 0, 9 +v3=-6, 0, 9 + +[level0] +linelist=a_bunker v0 v1 v2 v3 v0 + diff --git a/CONTENT/BT/GAUGE/BLD27_GA.GIM b/CONTENT/BT/GAUGE/BLD27_GA.GIM new file mode 100644 index 0000000..a3237da --- /dev/null +++ b/CONTENT/BT/GAUGE/BLD27_GA.GIM @@ -0,0 +1,45 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=-40, 0, -8 +v1=-40, 0, -28 +v2=-58, 0, -28 +v3=-58, 0, -8 +v4=-52, 0, -19 +v5=-52, 0, -6 +v6=-63, 0, -6 +v7=-63, 0, -19 +v8=-83, 0, -19 +v9=-83, 0, -6 +v10=-87, 0, -6 +v11=-87, 0, -19 +v12=-83, 0, -19 +v13=-83, 0, -6 +v14=-63, 0, -6 +v15=-63, 0, -19 +v16=-87, 0, 8.5 +v17=-87, 0, -6 +v18=-52, 0, -6 +v19=-52, 0, 8.5 +v20=-82, 0, 8.5 +v21=-82, 0, 14.5 +v22=-58, 0, 14.5 +v23=-58, 0, 8.5 +v24=-87, 0, 40 +v25=-87, 0, 14.5 +v26=-52, 0, 14.5 +v27=-52, 0, 40 + +[level0] +linelist=a_bunker v0 v1 v2 v3 v0 +linelist=a_bunker v4 v5 v6 v7 v4 +linelist=a_bunker v8 v9 v10 v11 v8 +linelist=a_hanger v12 v13 v14 v15 v12 +linelist=a_bunker v16 v17 v18 v19 v16 +linelist=a_bunker v20 v21 v22 v23 v20 +linelist=a_bunker v24 v25 v26 v27 v24 + diff --git a/CONTENT/BT/GAUGE/BLHHT.PCC b/CONTENT/BT/GAUGE/BLHHT.PCC new file mode 100644 index 0000000..99dbe03 Binary files /dev/null and b/CONTENT/BT/GAUGE/BLHHT.PCC differ diff --git a/CONTENT/BT/GAUGE/BLH_GA.GIM b/CONTENT/BT/GAUGE/BLH_GA.GIM new file mode 100644 index 0000000..a692b91 --- /dev/null +++ b/CONTENT/BT/GAUGE/BLH_GA.GIM @@ -0,0 +1,21 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=1000 + +[vertices] +v0=2.5, 0, -0.6 +v1=0, 0, -3 +v2=-2.5, 0, -0.6 +v3=-2.5, 0, 0.7 +v4=2.5, 0, 0.7 +v5=-0.2, 0, -1.5 +v6=-1.5, 0, -1.5 +v7=-1.5, 0, 0.9 +v8=-0.2, 0, 0.9 + +[level0] +linelist=a_mech v0 v1 v2 v3 v4 v0 +linelist=a_mech v5 v6 v7 v8 v5 + diff --git a/CONTENT/BT/GAUGE/BNK_GA.GIM b/CONTENT/BT/GAUGE/BNK_GA.GIM new file mode 100644 index 0000000..750f0d4 --- /dev/null +++ b/CONTENT/BT/GAUGE/BNK_GA.GIM @@ -0,0 +1,24 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=3000 +level1=10000 + +[vertices] +v0=-1.7, 0, 3 +v1=1.7, 0, 3 +v2=2, 0, 3.7 +v3=-2, 0, 3.7 +v4=3.7, 0, -3.7 +v5=3.7, 0, 3.7 +v6=-3.7, 0, 3.7 +v7=-3.7, 0, -3.7 + +[level0] +linelist=a_bay v0 v1 v2 v3 v0 +linelist=a_bunker v4 v5 v6 v7 v4 + +[level1] +linelist=a_bunker v4 v5 v6 v7 v4 + diff --git a/CONTENT/BT/GAUGE/BTEBUS.PCC b/CONTENT/BT/GAUGE/BTEBUS.PCC new file mode 100644 index 0000000..47e2a19 Binary files /dev/null and b/CONTENT/BT/GAUGE/BTEBUS.PCC differ diff --git a/CONTENT/BT/GAUGE/BTECMODE.PCC b/CONTENT/BT/GAUGE/BTECMODE.PCC new file mode 100644 index 0000000..1b85086 Binary files /dev/null and b/CONTENT/BT/GAUGE/BTECMODE.PCC differ diff --git a/CONTENT/BT/GAUGE/BTEEJTM.PCC b/CONTENT/BT/GAUGE/BTEEJTM.PCC new file mode 100644 index 0000000..fd26cbe Binary files /dev/null and b/CONTENT/BT/GAUGE/BTEEJTM.PCC differ diff --git a/CONTENT/BT/GAUGE/BTEFIRE.PCC b/CONTENT/BT/GAUGE/BTEFIRE.PCC new file mode 100644 index 0000000..fcafe89 Binary files /dev/null and b/CONTENT/BT/GAUGE/BTEFIRE.PCC differ diff --git a/CONTENT/BT/GAUGE/BTEHFAIL.PCC b/CONTENT/BT/GAUGE/BTEHFAIL.PCC new file mode 100644 index 0000000..de0ad97 Binary files /dev/null and b/CONTENT/BT/GAUGE/BTEHFAIL.PCC differ diff --git a/CONTENT/BT/GAUGE/BTEJAM.PCC b/CONTENT/BT/GAUGE/BTEJAM.PCC new file mode 100644 index 0000000..470d9f6 Binary files /dev/null and b/CONTENT/BT/GAUGE/BTEJAM.PCC differ diff --git a/CONTENT/BT/GAUGE/BTELOOP.PCC b/CONTENT/BT/GAUGE/BTELOOP.PCC new file mode 100644 index 0000000..2902f51 Binary files /dev/null and b/CONTENT/BT/GAUGE/BTELOOP.PCC differ diff --git a/CONTENT/BT/GAUGE/BTEMODE.PCC b/CONTENT/BT/GAUGE/BTEMODE.PCC new file mode 100644 index 0000000..02e53b4 Binary files /dev/null and b/CONTENT/BT/GAUGE/BTEMODE.PCC differ diff --git a/CONTENT/BT/GAUGE/BTEPFAIL.PCC b/CONTENT/BT/GAUGE/BTEPFAIL.PCC new file mode 100644 index 0000000..96003f6 Binary files /dev/null and b/CONTENT/BT/GAUGE/BTEPFAIL.PCC differ diff --git a/CONTENT/BT/GAUGE/BTESFAIL.PCC b/CONTENT/BT/GAUGE/BTESFAIL.PCC new file mode 100644 index 0000000..60e41fd Binary files /dev/null and b/CONTENT/BT/GAUGE/BTESFAIL.PCC differ diff --git a/CONTENT/BT/GAUGE/BTESLEV.PCC b/CONTENT/BT/GAUGE/BTESLEV.PCC new file mode 100644 index 0000000..817e0a9 Binary files /dev/null and b/CONTENT/BT/GAUGE/BTESLEV.PCC differ diff --git a/CONTENT/BT/GAUGE/BTESRNGE.PCC b/CONTENT/BT/GAUGE/BTESRNGE.PCC new file mode 100644 index 0000000..649d9c2 Binary files /dev/null and b/CONTENT/BT/GAUGE/BTESRNGE.PCC differ diff --git a/CONTENT/BT/GAUGE/BTEUNJM.PCC b/CONTENT/BT/GAUGE/BTEUNJM.PCC new file mode 100644 index 0000000..444551b Binary files /dev/null and b/CONTENT/BT/GAUGE/BTEUNJM.PCC differ diff --git a/CONTENT/BT/GAUGE/BTJOY.PCC b/CONTENT/BT/GAUGE/BTJOY.PCC new file mode 100644 index 0000000..5a83f51 Binary files /dev/null and b/CONTENT/BT/GAUGE/BTJOY.PCC differ diff --git a/CONTENT/BT/GAUGE/BTOPAL.PCC b/CONTENT/BT/GAUGE/BTOPAL.PCC new file mode 100644 index 0000000..a26f410 Binary files /dev/null and b/CONTENT/BT/GAUGE/BTOPAL.PCC differ diff --git a/CONTENT/BT/GAUGE/BTPBUS.PCC b/CONTENT/BT/GAUGE/BTPBUS.PCC new file mode 100644 index 0000000..ba1933e Binary files /dev/null and b/CONTENT/BT/GAUGE/BTPBUS.PCC differ diff --git a/CONTENT/BT/GAUGE/BTPLOOP.PCC b/CONTENT/BT/GAUGE/BTPLOOP.PCC new file mode 100644 index 0000000..631b026 Binary files /dev/null and b/CONTENT/BT/GAUGE/BTPLOOP.PCC differ diff --git a/CONTENT/BT/GAUGE/BTSPAL.PCC b/CONTENT/BT/GAUGE/BTSPAL.PCC new file mode 100644 index 0000000..ba2bc01 Binary files /dev/null and b/CONTENT/BT/GAUGE/BTSPAL.PCC differ diff --git a/CONTENT/BT/GAUGE/BTWARN.PCC b/CONTENT/BT/GAUGE/BTWARN.PCC new file mode 100644 index 0000000..1e71f8f Binary files /dev/null and b/CONTENT/BT/GAUGE/BTWARN.PCC differ diff --git a/CONTENT/BT/GAUGE/BULLDOG.GIM b/CONTENT/BT/GAUGE/BULLDOG.GIM new file mode 100644 index 0000000..cce989d --- /dev/null +++ b/CONTENT/BT/GAUGE/BULLDOG.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=-4, 0, -3 +v1=4, 0, -3 +v2=4, 0, 5 +v3=-4, 0, 5 + +[level0] +linelist=a_vehicle v0 v1 v2 v3 v0 + diff --git a/CONTENT/BT/GAUGE/BUTTEA_G.GIM b/CONTENT/BT/GAUGE/BUTTEA_G.GIM new file mode 100644 index 0000000..420be35 --- /dev/null +++ b/CONTENT/BT/GAUGE/BUTTEA_G.GIM @@ -0,0 +1,27 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=39, 0, 0 +v1=33.03, 0, 14.92 +v2=27.57, 0, 27.57 +v3=14.92, 0, 33.03 +v4=0, 0, 39 +v5=-14.92, 0, 33.03 +v6=-27.57, 0, 27.57 +v7=-33.03, 0, 14.92 +v8=-39, 0, 0 +v9=-33.03, 0, -14.92 +v10=-27.57, 0, -27.57 +v11=-14.92, 0, -33.03 +v12=0, 0, -39 +v13=14.92, 0, -33.03 +v14=27.57, 0, -27.57 +v15=33.03, 0, -14.92 + +[level0] +linelist=a_rock v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 +linelist=a_rock v9 v10 v11 v12 v13 v14 v15 v0 diff --git a/CONTENT/BT/GAUGE/BUTTEB_G.GIM b/CONTENT/BT/GAUGE/BUTTEB_G.GIM new file mode 100644 index 0000000..3cd9f1b --- /dev/null +++ b/CONTENT/BT/GAUGE/BUTTEB_G.GIM @@ -0,0 +1,27 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=36, 0, 0 +v1=33.25, 0, 13.77 +v2=25.45, 0, 25.45 +v3=13.77, 0, 33.25 +v4=0, 0, 36 +v5=-13.77, 0, 33.25 +v6=-25.45, 0, 25.45 +v7=-33.25, 0, 13.77 +v8=-36, 0, 0 +v9=-33.25, 0, -13.77 +v10=-25.45, 0, -25.45 +v11=-13.77, 0, -33.25 +v12=0, 0, -36 +v13=13.77, 0, -33.25 +v14=25.45, 0, -25.45 +v15=33.25, 0, -13.77 + +[level0] +linelist=a_rock v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 +linelist=a_rock v9 v10 v11 v12 v13 v14 v15 v0 diff --git a/CONTENT/BT/GAUGE/BUTTEC_G.GIM b/CONTENT/BT/GAUGE/BUTTEC_G.GIM new file mode 100644 index 0000000..b2c50ad --- /dev/null +++ b/CONTENT/BT/GAUGE/BUTTEC_G.GIM @@ -0,0 +1,27 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=58.5, 0, 0 +v1=54.04, 0, 22.38 +v2=41.36, 0, 41.36 +v3=22.38, 0, 54.04 +v4=0, 0, 58.5 +v5=-22.38, 0, 54.04 +v6=-41.36, 0, 41.36 +v7=-54.04, 0, 22.38 +v8=-58.5, 0, 0 +v9=-54.04, 0, -22.38 +v10=-41.36, 0, -41.36 +v11=-22.38, 0, -54.04 +v12=0, 0, -58.5 +v13=22.38, 0, -54.04 +v14=41.36, 0, -41.36 +v15=54.04, 0, -22.38 + +[level0] +linelist=a_rock v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 +linelist=a_rock v9 v10 v11 v12 v13 v14 v15 v0 diff --git a/CONTENT/BT/GAUGE/BUTTED_G.GIM b/CONTENT/BT/GAUGE/BUTTED_G.GIM new file mode 100644 index 0000000..eb63c1f --- /dev/null +++ b/CONTENT/BT/GAUGE/BUTTED_G.GIM @@ -0,0 +1,27 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=78, 0, 0 +v1=72.06, 0, 29.84 +v2=55.14, 0, 55.14 +v3=29.84, 0, 72.06 +v4=0, 0, 78 +v5=-29.84, 0, 72.06 +v6=-55.14, 0, 55.14 +v7=-72.06, 0, 29.84 +v8=-78, 0, 0 +v9=-72.06, 0, -29.84 +v10=-55.14, 0, -55.14 +v11=-29.84, 0, -72.06 +v12=0, 0, -78 +v13=29.84, 0, -72.06 +v14=55.14, 0, -55.14 +v15=72.06, 0, -29.84 + +[level0] +linelist=a_rock v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 +linelist=a_rock v9 v10 v11 v12 v13 v14 v15 v0 diff --git a/CONTENT/BT/GAUGE/BUTTEE_G.GIM b/CONTENT/BT/GAUGE/BUTTEE_G.GIM new file mode 100644 index 0000000..feba39d --- /dev/null +++ b/CONTENT/BT/GAUGE/BUTTEE_G.GIM @@ -0,0 +1,27 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=18, 0, 0 +v1=16.62, 0, 6.88 +v2=12.72, 0, 12.72 +v3=6.88, 0, 16.62 +v4=0, 0, 18 +v5=-6.88, 0, 16.62 +v6=-12.72, 0, 12.72 +v7=-16.62, 0, 6.88 +v8=-18, 0, 0 +v9=-16.62, 0, -6.88 +v10=-12.72, 0, -12.72 +v11=-6.88, 0, -16.62 +v12=0, 0, -18 +v13=6.88, 0, -16.62 +v14=12.72, 0, -12.72 +v15=16.62, 0, -6.88 + +[level0] +linelist=a_rock v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 +linelist=a_rock v9 v10 v11 v12 v13 v14 v15 v0 diff --git a/CONTENT/BT/GAUGE/CALPB_GA.GIM b/CONTENT/BT/GAUGE/CALPB_GA.GIM new file mode 100644 index 0000000..6257b80 --- /dev/null +++ b/CONTENT/BT/GAUGE/CALPB_GA.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=-15, 0, -15 +v1=15, 0, -15 +v2=15, 0, 15 +v3=-15, 0, 15 + +[level0] +linelist=a_misslebase v0 v1 v2 v3 v0 + diff --git a/CONTENT/BT/GAUGE/CALP_GA.GIM b/CONTENT/BT/GAUGE/CALP_GA.GIM new file mode 100644 index 0000000..55e4495 --- /dev/null +++ b/CONTENT/BT/GAUGE/CALP_GA.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=-11, 0, -9.75 +v1=10.75, 0, -9.75 +v2=10.75, 0, 8 +v3=-11, 0, 8 + +[level0] +linelist=a_missle v0 v1 v2 v3 v0 + diff --git a/CONTENT/BT/GAUGE/CM_BOTH.PCC b/CONTENT/BT/GAUGE/CM_BOTH.PCC new file mode 100644 index 0000000..e5fe2b4 Binary files /dev/null and b/CONTENT/BT/GAUGE/CM_BOTH.PCC differ diff --git a/CONTENT/BT/GAUGE/CM_OFF.PCC b/CONTENT/BT/GAUGE/CM_OFF.PCC new file mode 100644 index 0000000..86039b8 Binary files /dev/null and b/CONTENT/BT/GAUGE/CM_OFF.PCC differ diff --git a/CONTENT/BT/GAUGE/CM_ONLY.PCC b/CONTENT/BT/GAUGE/CM_ONLY.PCC new file mode 100644 index 0000000..807c6ea Binary files /dev/null and b/CONTENT/BT/GAUGE/CM_ONLY.PCC differ diff --git a/CONTENT/BT/GAUGE/CM_OTHER.PCC b/CONTENT/BT/GAUGE/CM_OTHER.PCC new file mode 100644 index 0000000..8c8d701 Binary files /dev/null and b/CONTENT/BT/GAUGE/CM_OTHER.PCC differ diff --git a/CONTENT/BT/GAUGE/COMTRUCK.GIM b/CONTENT/BT/GAUGE/COMTRUCK.GIM new file mode 100644 index 0000000..4f7c011 --- /dev/null +++ b/CONTENT/BT/GAUGE/COMTRUCK.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=-2, 0, -4.5 +v1=2, 0, -4.5 +v2=2, 0, 4 +v3=-2, 0, 4 + +[level0] +linelist=a_vehicle v0 v1 v2 v3 v0 + diff --git a/CONTENT/BT/GAUGE/COOLANT.GIM b/CONTENT/BT/GAUGE/COOLANT.GIM new file mode 100644 index 0000000..662d42d --- /dev/null +++ b/CONTENT/BT/GAUGE/COOLANT.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=-2.5, 0, -7 +v1=2.5, 0, -7 +v2=2.5, 0, 8 +v3=-2.5, 0, 8 + +[level0] +linelist=a_vehicle v0 v1 v2 v3 v0 + diff --git a/CONTENT/BT/GAUGE/DISH_GA.GIM b/CONTENT/BT/GAUGE/DISH_GA.GIM new file mode 100644 index 0000000..6f9b929 --- /dev/null +++ b/CONTENT/BT/GAUGE/DISH_GA.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=-3.5, 0, -2 +v1=3.5, 0, -2 +v2=3.5, 0, 3.25 +v3=-3.5, 0, 3.25 + +[level0] +linelist=a_dish v0 v1 v2 v3 v0 + diff --git a/CONTENT/BT/GAUGE/DOZER.GIM b/CONTENT/BT/GAUGE/DOZER.GIM new file mode 100644 index 0000000..f5b3e11 --- /dev/null +++ b/CONTENT/BT/GAUGE/DOZER.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=-2, 0, -3.5 +v1=2, 0, -3.5 +v2=2, 0, 4.5 +v3=-2, 0, 4.5 + +[level0] +linelist=a_vehicle v0 v1 v2 v3 v0 + diff --git a/CONTENT/BT/GAUGE/EAFC10.PCC b/CONTENT/BT/GAUGE/EAFC10.PCC new file mode 100644 index 0000000..465b8b1 Binary files /dev/null and b/CONTENT/BT/GAUGE/EAFC10.PCC differ diff --git a/CONTENT/BT/GAUGE/EAFC100.PCC b/CONTENT/BT/GAUGE/EAFC100.PCC new file mode 100644 index 0000000..c5ae0af Binary files /dev/null and b/CONTENT/BT/GAUGE/EAFC100.PCC differ diff --git a/CONTENT/BT/GAUGE/EAFC25.PCC b/CONTENT/BT/GAUGE/EAFC25.PCC new file mode 100644 index 0000000..7c018d3 Binary files /dev/null and b/CONTENT/BT/GAUGE/EAFC25.PCC differ diff --git a/CONTENT/BT/GAUGE/EAFC5.PCC b/CONTENT/BT/GAUGE/EAFC5.PCC new file mode 100644 index 0000000..febf3c6 Binary files /dev/null and b/CONTENT/BT/GAUGE/EAFC5.PCC differ diff --git a/CONTENT/BT/GAUGE/EAFC50.PCC b/CONTENT/BT/GAUGE/EAFC50.PCC new file mode 100644 index 0000000..2a6b89e Binary files /dev/null and b/CONTENT/BT/GAUGE/EAFC50.PCC differ diff --git a/CONTENT/BT/GAUGE/EDESTRYD.PCC b/CONTENT/BT/GAUGE/EDESTRYD.PCC new file mode 100644 index 0000000..9176f1d Binary files /dev/null and b/CONTENT/BT/GAUGE/EDESTRYD.PCC differ diff --git a/CONTENT/BT/GAUGE/EDMG.PCC b/CONTENT/BT/GAUGE/EDMG.PCC new file mode 100644 index 0000000..1ffeb6a Binary files /dev/null and b/CONTENT/BT/GAUGE/EDMG.PCC differ diff --git a/CONTENT/BT/GAUGE/EERLLAS.PCC b/CONTENT/BT/GAUGE/EERLLAS.PCC new file mode 100644 index 0000000..06253c3 Binary files /dev/null and b/CONTENT/BT/GAUGE/EERLLAS.PCC differ diff --git a/CONTENT/BT/GAUGE/EERPPC.PCC b/CONTENT/BT/GAUGE/EERPPC.PCC new file mode 100644 index 0000000..219f620 Binary files /dev/null and b/CONTENT/BT/GAUGE/EERPPC.PCC differ diff --git a/CONTENT/BT/GAUGE/EERSLAS.PCC b/CONTENT/BT/GAUGE/EERSLAS.PCC new file mode 100644 index 0000000..390e47e Binary files /dev/null and b/CONTENT/BT/GAUGE/EERSLAS.PCC differ diff --git a/CONTENT/BT/GAUGE/ELBX10.PCC b/CONTENT/BT/GAUGE/ELBX10.PCC new file mode 100644 index 0000000..465b8b1 Binary files /dev/null and b/CONTENT/BT/GAUGE/ELBX10.PCC differ diff --git a/CONTENT/BT/GAUGE/ELBX100.PCC b/CONTENT/BT/GAUGE/ELBX100.PCC new file mode 100644 index 0000000..c5ae0af Binary files /dev/null and b/CONTENT/BT/GAUGE/ELBX100.PCC differ diff --git a/CONTENT/BT/GAUGE/ELBX25.PCC b/CONTENT/BT/GAUGE/ELBX25.PCC new file mode 100644 index 0000000..7c018d3 Binary files /dev/null and b/CONTENT/BT/GAUGE/ELBX25.PCC differ diff --git a/CONTENT/BT/GAUGE/ELBX5.PCC b/CONTENT/BT/GAUGE/ELBX5.PCC new file mode 100644 index 0000000..febf3c6 Binary files /dev/null and b/CONTENT/BT/GAUGE/ELBX5.PCC differ diff --git a/CONTENT/BT/GAUGE/ELEAK.PCC b/CONTENT/BT/GAUGE/ELEAK.PCC new file mode 100644 index 0000000..ebd47b9 Binary files /dev/null and b/CONTENT/BT/GAUGE/ELEAK.PCC differ diff --git a/CONTENT/BT/GAUGE/ELLAS.PCC b/CONTENT/BT/GAUGE/ELLAS.PCC new file mode 100644 index 0000000..efe0112 Binary files /dev/null and b/CONTENT/BT/GAUGE/ELLAS.PCC differ diff --git a/CONTENT/BT/GAUGE/ELRM10.PCC b/CONTENT/BT/GAUGE/ELRM10.PCC new file mode 100644 index 0000000..4104f1a Binary files /dev/null and b/CONTENT/BT/GAUGE/ELRM10.PCC differ diff --git a/CONTENT/BT/GAUGE/ELRM15.PCC b/CONTENT/BT/GAUGE/ELRM15.PCC new file mode 100644 index 0000000..1b7eb20 Binary files /dev/null and b/CONTENT/BT/GAUGE/ELRM15.PCC differ diff --git a/CONTENT/BT/GAUGE/ELRM20.PCC b/CONTENT/BT/GAUGE/ELRM20.PCC new file mode 100644 index 0000000..f15cb4c Binary files /dev/null and b/CONTENT/BT/GAUGE/ELRM20.PCC differ diff --git a/CONTENT/BT/GAUGE/ELRM5.PCC b/CONTENT/BT/GAUGE/ELRM5.PCC new file mode 100644 index 0000000..c0c72a4 Binary files /dev/null and b/CONTENT/BT/GAUGE/ELRM5.PCC differ diff --git a/CONTENT/BT/GAUGE/EMG.PCC b/CONTENT/BT/GAUGE/EMG.PCC new file mode 100644 index 0000000..17aeb1a Binary files /dev/null and b/CONTENT/BT/GAUGE/EMG.PCC differ diff --git a/CONTENT/BT/GAUGE/ENRK10.PCC b/CONTENT/BT/GAUGE/ENRK10.PCC new file mode 100644 index 0000000..93ba0bd Binary files /dev/null and b/CONTENT/BT/GAUGE/ENRK10.PCC differ diff --git a/CONTENT/BT/GAUGE/ENRK15.PCC b/CONTENT/BT/GAUGE/ENRK15.PCC new file mode 100644 index 0000000..bbd3163 Binary files /dev/null and b/CONTENT/BT/GAUGE/ENRK15.PCC differ diff --git a/CONTENT/BT/GAUGE/ENRK20.PCC b/CONTENT/BT/GAUGE/ENRK20.PCC new file mode 100644 index 0000000..fc9a4bf Binary files /dev/null and b/CONTENT/BT/GAUGE/ENRK20.PCC differ diff --git a/CONTENT/BT/GAUGE/ENRK5.PCC b/CONTENT/BT/GAUGE/ENRK5.PCC new file mode 100644 index 0000000..6e7b6a5 Binary files /dev/null and b/CONTENT/BT/GAUGE/ENRK5.PCC differ diff --git a/CONTENT/BT/GAUGE/EPPC.PCC b/CONTENT/BT/GAUGE/EPPC.PCC new file mode 100644 index 0000000..b4d0364 Binary files /dev/null and b/CONTENT/BT/GAUGE/EPPC.PCC differ diff --git a/CONTENT/BT/GAUGE/ESCND.PCC b/CONTENT/BT/GAUGE/ESCND.PCC new file mode 100644 index 0000000..f5b7a46 Binary files /dev/null and b/CONTENT/BT/GAUGE/ESCND.PCC differ diff --git a/CONTENT/BT/GAUGE/ESENSORS.PCC b/CONTENT/BT/GAUGE/ESENSORS.PCC new file mode 100644 index 0000000..567e621 Binary files /dev/null and b/CONTENT/BT/GAUGE/ESENSORS.PCC differ diff --git a/CONTENT/BT/GAUGE/ESPEED.PCC b/CONTENT/BT/GAUGE/ESPEED.PCC new file mode 100644 index 0000000..11a2c3f Binary files /dev/null and b/CONTENT/BT/GAUGE/ESPEED.PCC differ diff --git a/CONTENT/BT/GAUGE/ESRM2.PCC b/CONTENT/BT/GAUGE/ESRM2.PCC new file mode 100644 index 0000000..89f9700 Binary files /dev/null and b/CONTENT/BT/GAUGE/ESRM2.PCC differ diff --git a/CONTENT/BT/GAUGE/ESRM4.PCC b/CONTENT/BT/GAUGE/ESRM4.PCC new file mode 100644 index 0000000..f8f9124 Binary files /dev/null and b/CONTENT/BT/GAUGE/ESRM4.PCC differ diff --git a/CONTENT/BT/GAUGE/ESRM6.PCC b/CONTENT/BT/GAUGE/ESRM6.PCC new file mode 100644 index 0000000..eddcc7a Binary files /dev/null and b/CONTENT/BT/GAUGE/ESRM6.PCC differ diff --git a/CONTENT/BT/GAUGE/ESTRK2.PCC b/CONTENT/BT/GAUGE/ESTRK2.PCC new file mode 100644 index 0000000..f5f8bbb Binary files /dev/null and b/CONTENT/BT/GAUGE/ESTRK2.PCC differ diff --git a/CONTENT/BT/GAUGE/ESTRK4.PCC b/CONTENT/BT/GAUGE/ESTRK4.PCC new file mode 100644 index 0000000..3e87a61 Binary files /dev/null and b/CONTENT/BT/GAUGE/ESTRK4.PCC differ diff --git a/CONTENT/BT/GAUGE/ESTRK6.PCC b/CONTENT/BT/GAUGE/ESTRK6.PCC new file mode 100644 index 0000000..9b855ae Binary files /dev/null and b/CONTENT/BT/GAUGE/ESTRK6.PCC differ diff --git a/CONTENT/BT/GAUGE/EVOLT.PCC b/CONTENT/BT/GAUGE/EVOLT.PCC new file mode 100644 index 0000000..e9225ff Binary files /dev/null and b/CONTENT/BT/GAUGE/EVOLT.PCC differ diff --git a/CONTENT/BT/GAUGE/FP1_GA.GIM b/CONTENT/BT/GAUGE/FP1_GA.GIM new file mode 100644 index 0000000..a448b9b --- /dev/null +++ b/CONTENT/BT/GAUGE/FP1_GA.GIM @@ -0,0 +1,78 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=1000 +level1=3000 +level2=10000 + +[vertices] +v0=3, 0, -31.5 +v1=3, 0, -28.5 +v2=1.6, 0, -28.5 +v3=1.6, 0, -15.5 +v4=3.6, 0, -15.5 +v5=3.6, 0, -11.6 +v6=1.6, 0, -11.6 +v7=1.6, 0, -1.5 +v8=18, 0, -1.5 +v9=18, 0, -4.5 +v10=21, 0, -4.5 +v11=21, 0, 3 +v12=18, 0, 3 +v13=18, 0, 1.4 +v14=1.6, 0, 1.4 +v15=1.6, 0, 5.5 +v16=3.6, 0, 5.5 +v17=3.6, 0, 9.4 +v18=1.6, 0, 9.4 +v19=1.6, 0, 25.5 +v20=3, 0, 25.5 +v21=3, 0, 28.5 +v22=-3, 0, 28.5 +v23=-3, 0, 25.5 +v24=-1.6, 0, 25.5 +v25=-1.6, 0, 9.4 +v26=-3.6, 0, 9.4 +v27=-3.6, 0, 5.5 +v28=-1.6, 0, 5.5 +v29=-1.6, 0, -3.7 +v30=-12, 0, -3.7 +v31=-12, 0, 0 +v32=-15, 0, 0 +v33=-15, 0, -7.5 +v34=-12, 0, -7.5 +v35=-12, 0, -6.4 +v36=-1.6, 0, -6.4 +v37=-1.6, 0, -11.6 +v38=-3.6, 0, -11.6 +v39=-3.6, 0, -15.5 +v40=-1.6, 0, -15.5 +v41=-1.6, 0, -28.5 +v42=-3, 0, -28.5 +v43=-3, 0, -31.5 +v44=-16.5, 0, 13.5 +v45=-6, 0, 13.5 +v46=-6, 0, 3 +v47=-16.5, 0, 3 +v48=1.6, 0, -31.5 +v49=21, 0, -1.5 +v50=21, 0, 1.4 +v51=1.6, 0, 28.5 +v52=-1.6, 0, 28.5 +v53=-15, 0, -3.7 +v54=-15, 0, -6.4 +v55=-1.6, 0, -31.5 + +[level0] +linelist=a_fuelpump v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v0 +linelist=a_fuelpump v44 v45 v46 v47 v44 + +[level1] +linelist=a_fuelpump v0 v1 v2 v7 v8 v9 v10 v11 v12 v13 v14 v19 v20 v21 v22 v23 v24 v29 v30 v31 v32 v33 v34 v35 v36 v41 v42 v43 v0 +linelist=a_fuelpump v44 v45 v46 v47 v44 + +[level2] +linelist=a_fuelpump v48 v7 v49 v50 v14 v51 v52 v29 v53 v54 v36 v55 v48 +linelist=a_fuelpump v44 v45 v46 v47 v44 + diff --git a/CONTENT/BT/GAUGE/FP2_GA.GIM b/CONTENT/BT/GAUGE/FP2_GA.GIM new file mode 100644 index 0000000..03ec3d1 --- /dev/null +++ b/CONTENT/BT/GAUGE/FP2_GA.GIM @@ -0,0 +1,25 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=3000 +level1=10000 + +[vertices] +v0=-3, 0, -8 +v1=-1.2, 0, -8 +v2=-1.2, 0, 10 +v3=2.1, 0, 10 +v4=2.1, 0, -8 +v5=3, 0, -8 +v6=3, 0, -10 +v7=-3, 0, -10 +v8=2.1, 0, -10 +v9=-1.2, 0, -10 + +[level0] +linelist=a_fuelpipe v0 v1 v2 v3 v4 v5 v6 v7 v0 + +[level1] +linelist=a_fuelpipe v2 v3 v8 v9 v2 + diff --git a/CONTENT/BT/GAUGE/FT1_GA.GIM b/CONTENT/BT/GAUGE/FT1_GA.GIM new file mode 100644 index 0000000..ca16c25 --- /dev/null +++ b/CONTENT/BT/GAUGE/FT1_GA.GIM @@ -0,0 +1,29 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=3000 +level1=10000 + +[vertices] +v0=0.44, 0, -1.05 +v1=-0.56, 0, -2.05 +v2=-1.56, 0, -1.05 +v3=-0.56, 0, -0.0499999 +v4=1.6, 0, 0.55 +v5=0.6, 0, -0.45 +v6=-0.4, 0, 0.55 +v7=0.6, 0, 1.55 +v8=1.65, 0, -2.05 +v9=1.65, 0, 2.05 +v10=-1.65, 0, 2.05 +v11=-1.65, 0, -2.05 + +[level0] +linelist=a_silo v0 v1 v2 v3 v0 +linelist=a_silo v4 v5 v6 v7 v4 +linelist=a_tarmac v8 v9 v10 v11 v8 + +[level1] +linelist=a_tarmac v8 v9 v10 v11 v8 + diff --git a/CONTENT/BT/GAUGE/FT2_GA.GIM b/CONTENT/BT/GAUGE/FT2_GA.GIM new file mode 100644 index 0000000..3b6d3ff --- /dev/null +++ b/CONTENT/BT/GAUGE/FT2_GA.GIM @@ -0,0 +1,24 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=3000 +level1=10000 + +[vertices] +v0=3.4, 0, -3.25 +v1=3.4, 0, 3.31 +v2=-3.01, 0, 3.31 +v3=-3.01, 0, -3.25 +v4=2.2, 0, -2.2 +v5=2.2, 0, 2.2 +v6=-2.2, 0, 2.2 +v7=-2.2, 0, -2.2 + +[level0] +linelist=a_tarmac v0 v1 v2 v3 v0 +linelist=a_silo v4 v5 v6 v7 v4 + +[level1] +linelist=a_tarmac v0 v1 v2 v3 v0 + diff --git a/CONTENT/BT/GAUGE/GAUGE.GAT b/CONTENT/BT/GAUGE/GAUGE.GAT new file mode 100644 index 0000000..282684c --- /dev/null +++ b/CONTENT/BT/GAUGE/GAUGE.GAT @@ -0,0 +1,75 @@ +; +; gauge.gat - gauge attribute file +; + +;---------------------------------------------------------- +; color definitions +;---------------------------------------------------------- +[colors] +; special meaning colors +default=0 +colorteam1=1 +colorteam2=2 +colorteam3=3 +colorteam4=4 +colorteam5=5 +colorteam6=6 +colorteam7=7 +colorteam8=8 + +; pallet index colors +brightRed=1 +brightGreen=2 +brightBlue=24 +gray=3 + +amber0=4 ; dark amber +amber1=5 +amber2=6 +amber3=7 ; bright amber + +green=25 +blue=26 +yellow= + +;---------------------------------------------------------- +; attribute definitions +;---------------------------------------------------------- +[attributes] +unscaled=1 ; shape will not be scaled: 1 meter = 1 pixel + +;---------------------------------------------------------- +; groups based on pallet indexes +;---------------------------------------------------------- +[groups] +a_arenabarrier=brightGreen +a_arenablock=brightGreen +a_arenahole=brightBlue +a_arenawall=brightGreen +a_bay=brightBlue +a_bld=amber1 +a_bunker=gray +a_dish=brightBlue +a_door=gray +a_fuelpipe=amber2 +a_fuelpump=gray +a_gantry=amber2 +a_garage=amber0 +a_generator=blue +a_gun=brightRed +a_hanger=amber3 +a_mech=brightRed +a_missle=brightRed +a_misslebase=gray +a_rock=amber0 +a_silo=amber0 +a_snowhill=amber0 +a_stands=amber0 +a_tarmac=gray +a_tent=amber0 +a_twr=blue +a_wall=amber0 +a_wthrstation=blue +a_vehicle=brightBlue +a_incoming=amber3 +a_tree=green \ No newline at end of file diff --git a/CONTENT/BT/GAUGE/GNR_GA.GIM b/CONTENT/BT/GAUGE/GNR_GA.GIM new file mode 100644 index 0000000..cdd0647 --- /dev/null +++ b/CONTENT/BT/GAUGE/GNR_GA.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=3.5, 0, -3.9 +v1=3.5, 0, 3.8 +v2=-3.5, 0, 3.8 +v3=-3.5, 0, -3.9 + +[level0] +linelist=a_generator v0 v1 v2 v3 v0 + diff --git a/CONTENT/BT/GAUGE/HARASSER.GIM b/CONTENT/BT/GAUGE/HARASSER.GIM new file mode 100644 index 0000000..a088600 --- /dev/null +++ b/CONTENT/BT/GAUGE/HARASSER.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=-3, 0, -4 +v1=3, 0, -4 +v2=3, 0, 2 +v3=-3, 0, 2 + +[level0] +linelist=a_vehicle v0 v1 v2 v3 v0 + diff --git a/CONTENT/BT/GAUGE/HEATPAL.PCC b/CONTENT/BT/GAUGE/HEATPAL.PCC new file mode 100644 index 0000000..44413bc Binary files /dev/null and b/CONTENT/BT/GAUGE/HEATPAL.PCC differ diff --git a/CONTENT/BT/GAUGE/HEATPAL2.PCC b/CONTENT/BT/GAUGE/HEATPAL2.PCC new file mode 100644 index 0000000..a60a614 Binary files /dev/null and b/CONTENT/BT/GAUGE/HEATPAL2.PCC differ diff --git a/CONTENT/BT/GAUGE/HELV15.PCC b/CONTENT/BT/GAUGE/HELV15.PCC new file mode 100644 index 0000000..67b9fee Binary files /dev/null and b/CONTENT/BT/GAUGE/HELV15.PCC differ diff --git a/CONTENT/BT/GAUGE/HELV18.PCC b/CONTENT/BT/GAUGE/HELV18.PCC new file mode 100644 index 0000000..1dc2f99 Binary files /dev/null and b/CONTENT/BT/GAUGE/HELV18.PCC differ diff --git a/CONTENT/BT/GAUGE/HELV42.PCC b/CONTENT/BT/GAUGE/HELV42.PCC new file mode 100644 index 0000000..a23cc35 Binary files /dev/null and b/CONTENT/BT/GAUGE/HELV42.PCC differ diff --git a/CONTENT/BT/GAUGE/HILLG1_G.GIM b/CONTENT/BT/GAUGE/HILLG1_G.GIM new file mode 100644 index 0000000..11a0f39 --- /dev/null +++ b/CONTENT/BT/GAUGE/HILLG1_G.GIM @@ -0,0 +1,50 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=-70, 0, -578 +v1=-28, 0, -585 +v2=13, 0, -609 +v3=55, 0, -703 +v4=13, 0, -796 +v5=-28, 0, -820 +v6=-70, 0, -828 +v7=-111, 0, -820 +v8=-153, 0, -796 +v9=-195, 0, -703 +v10=-153, 0, -609 +v11=-111, 0, -585 + +v12=486, 0, -56 +v13=586, 0, -73 +v14=686, 0, -132 +v15=786, 0, -356 +v16=686, 0, -579 +v17=586, 0, -638 +v18=486, 0, -656 +v19=386, 0, -638 +v20=286, 0, -579 +v21=186, 0, -356 +v22=286, 0, -132 +v23=386, 0, -73 + +v24=-460, 0, 782 +v25=-385, 0, 769 +v26=-310, 0, 724 +v27=-235, 0, 557 +v28=-310, 0, 389 +v29=-385, 0, 344 +v30=-460, 0, 332 +v31=-535, 0, 344 +v32=-610, 0, 389 +v33=-685, 0, 557 +v34=-610, 0, 724 +v35=-535, 0, 769 + +[level0] +linelist=a_rock v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v0 +linelist=a_rock v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v12 +linelist=a_rock v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v24 diff --git a/CONTENT/BT/GAUGE/HILLG2_G.GIM b/CONTENT/BT/GAUGE/HILLG2_G.GIM new file mode 100644 index 0000000..ee352c6 --- /dev/null +++ b/CONTENT/BT/GAUGE/HILLG2_G.GIM @@ -0,0 +1,36 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=190, 0, 883 +v1=273, 0, 868 +v2=356, 0, 819 +v3=440, 0, 633 +v4=356, 0, 446 +v5=273, 0, 397 +v6=190, 0, 383 +v7=106, 0, 397 +v8=23, 0, 446 +v9=-60, 0, 633 +v10=23, 0, 819 +v11=106, 0, 868 + +v12=668, 0, 550 +v13=734, 0, 538 +v14=801, 0, 499 +v15=868, 0, 350 +v16=801, 0, 200 +v17=734, 0, 161 +v18=668, 0, 150 +v19=601, 0, 161 +v20=534, 0, 200 +v21=468, 0, 350 +v22=534, 0, 499 +v23=601, 0, 538 + +[level0] +linelist=a_rock v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v0 +linelist=a_rock v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v12 diff --git a/CONTENT/BT/GAUGE/HILLG3_G.GIM b/CONTENT/BT/GAUGE/HILLG3_G.GIM new file mode 100644 index 0000000..7b401ec --- /dev/null +++ b/CONTENT/BT/GAUGE/HILLG3_G.GIM @@ -0,0 +1,36 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=845, 0, -732 +v1=886, 0, -739 +v2=928, 0, -763 +v3=970, 0, -857 +v4=928, 0, -950 +v5=886, 0, -974 +v6=845, 0, -982 +v7=803, 0, -974 +v8=761, 0, -950 +v9=720, 0, -857 +v10=761, 0, -763 +v11=803, 0, -739 + +v12=-665, 0, 181 +v13=-575, 0, 165 +v14=-485, 0, 112 +v15=-395, 0, -89 +v16=-485, 0, -290 +v17=-575, 0, -343 +v18=-665, 0, -359 +v19=-755, 0, -343 +v20=-845, 0, -290 +v21=-935, 0, -89 +v22=-845, 0, 112 +v23=-755, 0, 165 + +[level0] +linelist=a_rock v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v0 +linelist=a_rock v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v12 diff --git a/CONTENT/BT/GAUGE/HL1_GA.GIM b/CONTENT/BT/GAUGE/HL1_GA.GIM new file mode 100644 index 0000000..64db20f --- /dev/null +++ b/CONTENT/BT/GAUGE/HL1_GA.GIM @@ -0,0 +1,31 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=1000 +level1=3000 +level2=10000 + +[vertices] +v0=-5.4043, 0, -50.0103 +v1=-25.3601, 0, -46.9075 +v2=-46.3768, 0, -21.174 +v3=-49.6013, 0, 9.33131 +v4=-30.1188, 0, 41.1559 +v5=-5.15319, 0, 49.4922 +v6=37.3305, 0, 39.4294 +v7=45.7911, 0, 28.7064 +v8=48.4628, 0, 4.7905 +v9=41.0469, 0, -8.22213 +v10=-16.9222, 0, -54.6389 +v11=56.3869, 0, 18.9084 + +[level0] +linelist=a_snowhill v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v0 + +[level1] +linelist=a_snowhill v0 v1 v3 v5 v7 v8 v0 + +[level2] +linelist=a_snowhill v10 v3 v5 v11 v10 + diff --git a/CONTENT/BT/GAUGE/HL2_GA.GIM b/CONTENT/BT/GAUGE/HL2_GA.GIM new file mode 100644 index 0000000..0788f0d --- /dev/null +++ b/CONTENT/BT/GAUGE/HL2_GA.GIM @@ -0,0 +1,26 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=3000 +level1=10000 + +[vertices] +v0=-22.8781, 0, -58.5037 +v1=-88.6784, 0, -53.4424 +v2=-142.132, 0, -24.7217 +v3=-142.308, 0, 15.4915 +v4=-67.774, 0, 53.079 +v5=105.28, 0, 44.7328 +v6=142.674, 0, 18.5693 +v7=137.383, 0, -1.07203 +v8=-55.7782, 0, -69.8131 +v9=-141.99, 0, -7.1501 +v10=150.514, 0, 11.1893 + +[level0] +linelist=a_snowhill v0 v1 v2 v3 v4 v5 v6 v7 v0 + +[level1] +linelist=a_snowhill v8 v9 v4 v5 v10 v8 + diff --git a/CONTENT/BT/GAUGE/HN1_GA.GIM b/CONTENT/BT/GAUGE/HN1_GA.GIM new file mode 100644 index 0000000..6de3395 --- /dev/null +++ b/CONTENT/BT/GAUGE/HN1_GA.GIM @@ -0,0 +1,26 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=3000 +level1=10000 + +[vertices] +v0=9, 0, -17.15 +v1=9, 0, -10 +v2=13.05, 0, -10 +v3=13.05, 0, 2 +v4=-7.25, 0, 2 +v5=-7.25, 0, -17.15 +v6=8.7, 0, -15.95 +v7=8.7, 0, -0.5 +v8=-6, 0, -0.5 +v9=-6, 0, -15.95 + +[level0] +linelist=a_tarmac v0 v1 v2 v3 v4 v5 v0 +linelist=a_hanger v6 v7 v8 v9 v6 + +[level1] +linelist=a_tarmac v0 v1 v2 v3 v4 v5 v0 + diff --git a/CONTENT/BT/GAUGE/HUMMER.GIM b/CONTENT/BT/GAUGE/HUMMER.GIM new file mode 100644 index 0000000..8871e59 --- /dev/null +++ b/CONTENT/BT/GAUGE/HUMMER.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=-1.5, 0, -3 +v1=1.5, 0, -3 +v2=1.5, 0, 3 +v3=-1.5, 0, 3 + +[level0] +linelist=a_vehicle v0 v1 v2 v3 v0 + diff --git a/CONTENT/BT/GAUGE/HUT_GA.GIM b/CONTENT/BT/GAUGE/HUT_GA.GIM new file mode 100644 index 0000000..89e9906 --- /dev/null +++ b/CONTENT/BT/GAUGE/HUT_GA.GIM @@ -0,0 +1,24 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=3000 +level1=10000 + +[vertices] +v0=10, 0, -10 +v1=10, 0, 24 +v2=-10, 0, 24 +v3=-10, 0, -10 +v4=9, 0, 0 +v5=9, 0, 14.25 +v6=-9, 0, 14.25 +v7=-9, 0, 0 + +[level0] +linelist=a_tarmac v0 v1 v2 v3 v0 +linelist=a_hanger v4 v5 v6 v7 v4 + +[level1] +linelist=a_tarmac v0 v1 v2 v3 v0 + diff --git a/CONTENT/BT/GAUGE/HWZ_GA.GIM b/CONTENT/BT/GAUGE/HWZ_GA.GIM new file mode 100644 index 0000000..efe2214 --- /dev/null +++ b/CONTENT/BT/GAUGE/HWZ_GA.GIM @@ -0,0 +1,25 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=-0.3, 0, -1.5 +v1=-0.3, 0, -6.2 +v2=0.3, 0, -6.2 +v3=0.3, 0, -1.5 +v4=1.5, 0, -1.5 +v5=1.5, 0, 1.2 +v6=5.5, 0, 5.5 +v7=5.2, 0, 5.7 +v8=0.7, 0, 1.4 +v9=-0.7, 0, 1.4 +v10=-5.2, 0, 5.7 +v11=-5.5, 0, 5.5 +v12=-1.4, 0, 1.2 +v13=-1.4, 0, -1.5 + +[level0] +linelist=a_gun v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v0 + diff --git a/CONTENT/BT/GAUGE/JAKCRIT.PCC b/CONTENT/BT/GAUGE/JAKCRIT.PCC new file mode 100644 index 0000000..d367586 Binary files /dev/null and b/CONTENT/BT/GAUGE/JAKCRIT.PCC differ diff --git a/CONTENT/BT/GAUGE/JAKHEAT.PCC b/CONTENT/BT/GAUGE/JAKHEAT.PCC new file mode 100644 index 0000000..c6737df Binary files /dev/null and b/CONTENT/BT/GAUGE/JAKHEAT.PCC differ diff --git a/CONTENT/BT/GAUGE/JAK_GA.GIM b/CONTENT/BT/GAUGE/JAK_GA.GIM new file mode 100644 index 0000000..a692b91 --- /dev/null +++ b/CONTENT/BT/GAUGE/JAK_GA.GIM @@ -0,0 +1,21 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=1000 + +[vertices] +v0=2.5, 0, -0.6 +v1=0, 0, -3 +v2=-2.5, 0, -0.6 +v3=-2.5, 0, 0.7 +v4=2.5, 0, 0.7 +v5=-0.2, 0, -1.5 +v6=-1.5, 0, -1.5 +v7=-1.5, 0, 0.9 +v8=-0.2, 0, 0.9 + +[level0] +linelist=a_mech v0 v1 v2 v3 v4 v0 +linelist=a_mech v5 v6 v7 v8 v5 + diff --git a/CONTENT/BT/GAUGE/L4GAUGE.INI b/CONTENT/BT/GAUGE/L4GAUGE.INI new file mode 100644 index 0000000..535958c --- /dev/null +++ b/CONTENT/BT/GAUGE/L4GAUGE.INI @@ -0,0 +1,36 @@ +; +; VESA SVGA mode summary +; +[misc] +timeStamp=Tue Mar 3 16:47:06 1996 +manufacturer=STB Horizon+ PCI 1.2 + +[640x480x8] +mode=257 ;0101h +width=640 +height=480 +sizeInKB=64 +granularityInKB=4 +bytesPerLine=1280 +pageFcnPtr=794632 ;C000:2008 +special=1 + +[640x480x16] +mode=273 ;0111h +width=640 +height=480 +sizeInKB=64 +granularityInKB=4 +bytesPerLine=1280 +pageFcnPtr=796182 ;C000:2616 +special=0 + +[800x600x16] +mode=276 ;0114h +width=800 +height=600 +sizeInKB=64 +granularityInKB=4 +bytesPerLine=1600 +pageFcnPtr=796182 ;C000:2616 +special=0 diff --git a/CONTENT/BT/GAUGE/LOKIHT.PCC b/CONTENT/BT/GAUGE/LOKIHT.PCC new file mode 100644 index 0000000..5fe2811 Binary files /dev/null and b/CONTENT/BT/GAUGE/LOKIHT.PCC differ diff --git a/CONTENT/BT/GAUGE/LOKI_MR.PCC b/CONTENT/BT/GAUGE/LOKI_MR.PCC new file mode 100644 index 0000000..93fe5b5 Binary files /dev/null and b/CONTENT/BT/GAUGE/LOKI_MR.PCC differ diff --git a/CONTENT/BT/GAUGE/LRMCARRY.GIM b/CONTENT/BT/GAUGE/LRMCARRY.GIM new file mode 100644 index 0000000..111a4a3 --- /dev/null +++ b/CONTENT/BT/GAUGE/LRMCARRY.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=-5, 0, -4 +v1=5, 0, -4 +v2=5, 0, 6 +v3=-5, 0, 6 + +[level0] +linelist=a_vehicle v0 v1 v2 v3 v0 + diff --git a/CONTENT/BT/GAUGE/MAD2HT.PCC b/CONTENT/BT/GAUGE/MAD2HT.PCC new file mode 100644 index 0000000..da19c93 Binary files /dev/null and b/CONTENT/BT/GAUGE/MAD2HT.PCC differ diff --git a/CONTENT/BT/GAUGE/MADHT.PCC b/CONTENT/BT/GAUGE/MADHT.PCC new file mode 100644 index 0000000..d4d0d05 Binary files /dev/null and b/CONTENT/BT/GAUGE/MADHT.PCC differ diff --git a/CONTENT/BT/GAUGE/MECHMOVR.GIM b/CONTENT/BT/GAUGE/MECHMOVR.GIM new file mode 100644 index 0000000..1a0c407 --- /dev/null +++ b/CONTENT/BT/GAUGE/MECHMOVR.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=-2.5, 0, -7.5 +v1=2.5, 0, -7.5 +v2=2.5, 0, 7.5 +v3=-2.5, 0, 7.5 + +[level0] +linelist=a_vehicle v0 v1 v2 v3 v0 + diff --git a/CONTENT/BT/GAUGE/MRPAL.PCC b/CONTENT/BT/GAUGE/MRPAL.PCC new file mode 100644 index 0000000..5e7561a Binary files /dev/null and b/CONTENT/BT/GAUGE/MRPAL.PCC differ diff --git a/CONTENT/BT/GAUGE/MSLG_GA.GIM b/CONTENT/BT/GAUGE/MSLG_GA.GIM new file mode 100644 index 0000000..0011d65 --- /dev/null +++ b/CONTENT/BT/GAUGE/MSLG_GA.GIM @@ -0,0 +1,35 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=3000 +level1=10000 + +[vertices] +v0=-0.75, 0, 3 +v1=0.75, 0, 3 +v2=0.75, 0, 1 +v3=-0.75, 0, 1 +v4=1, 0, -2 +v5=2, 0, -1 +v6=2, 0, 1.75 +v7=1, 0, 2.75 +v8=-1, 0, 2.75 +v9=-2, 0, 1.75 +v10=-2, 0, -1 +v11=-1, 0, -2 +v12=0.6, 0, 0 +v13=0.3, 0, -0.519615 +v14=-0.3, 0, -0.519615 +v15=-0.6, 0, 0 +v16=-0.3, 0, 0.519615 +v17=0.3, 0, 0.519615 + +[level0] +linelist=a_gantry v0 v1 v2 v3 v0 +linelist=a_tarmac v4 v5 v6 v7 v8 v9 v10 v11 v4 +linelist=a_missle v12 v13 v14 v15 v16 v17 v12 + +[level1] +linelist=a_tarmac v4 v5 v6 v7 v8 v9 v10 v11 v4 + diff --git a/CONTENT/BT/GAUGE/MSLR_GA.GIM b/CONTENT/BT/GAUGE/MSLR_GA.GIM new file mode 100644 index 0000000..6e2ec0c --- /dev/null +++ b/CONTENT/BT/GAUGE/MSLR_GA.GIM @@ -0,0 +1,63 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=3000 +level1=10000 + +[vertices] +v0=-2.49909, 0, -40 +v1=-1.875, 0, -19.8202 +v2=1.875, 0, -19.8202 +v3=2.49909, 0, -40 +v4=-30.0537, 0, -26.5187 +v5=-15.3408, 0, -12.6891 +v6=-12.6891, 0, -15.3408 +v7=-26.5191, 0, -30.0533 +v8=-40, 0, 2.49938 +v9=-19.8202, 0, 1.875 +v10=-19.8202, 0, -1.875 +v11=-40, 0, -2.49938 +v12=-26.5187, 0, 30.0533 +v13=-12.6891, 0, 15.3408 +v14=-15.3408, 0, 12.6891 +v15=-30.0533, 0, 26.5187 +v16=2.49909, 0, 40 +v17=1.875, 0, 19.8202 +v18=-1.875, 0, 19.8202 +v19=-2.49909, 0, 40 +v20=30.0533, 0, 26.5186 +v21=15.3408, 0, 12.6891 +v22=12.6891, 0, 15.3408 +v23=26.5187, 0, 30.0533 +v24=40, 0, -2.49938 +v25=19.8202, 0, -1.875 +v26=19.8202, 0, 1.875 +v27=40, 0, 2.49938 +v28=26.5187, 0, -30.0533 +v29=12.6891, 0, -15.3408 +v30=15.3408, 0, -12.6891 +v31=30.0533, 0, -26.5187 +v32=8.5, 0, -21.5 +v33=21.5, 0, -8.5 +v34=21.5, 0, 8.5 +v35=8.5, 0, 21.5 +v36=-8.5, 0, 21.5 +v37=-21.5, 0, 8.5 +v38=-21.5, 0, -8.5 +v39=-8.5, 0, -21.5 + +[level0] +linelist=a_tarmac v0 v1 v2 v3 v0 +linelist=a_tarmac v4 v5 v6 v7 v4 +linelist=a_tarmac v8 v9 v10 v11 v8 +linelist=a_tarmac v12 v13 v14 v15 v12 +linelist=a_tarmac v16 v17 v18 v19 v16 +linelist=a_tarmac v20 v21 v22 v23 v20 +linelist=a_tarmac v24 v25 v26 v27 v24 +linelist=a_tarmac v28 v29 v30 v31 v28 +linelist=a_misslebase v32 v33 v34 v35 v36 v37 v38 v39 v32 + +[level1] +linelist=a_misslebase v32 v33 v34 v35 v36 v37 v38 v39 v32 + diff --git a/CONTENT/BT/GAUGE/PDSH_GA.GIM b/CONTENT/BT/GAUGE/PDSH_GA.GIM new file mode 100644 index 0000000..a7f5428 --- /dev/null +++ b/CONTENT/BT/GAUGE/PDSH_GA.GIM @@ -0,0 +1,23 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=3000 +level1=10000 + +[vertices] +v0=4.6, 0, -5 +v1=4.6, 0, -0.1 +v2=2.5, 0, 1.5 +v3=2.5, 0, 3.5 +v4=-2.5, 0, 3.5 +v5=-2.5, 0, 1.5 +v6=-4.6, 0, -0.1 +v7=-4.6, 0, -5 + +[level0] +linelist=a_dish v0 v1 v2 v3 v4 v5 v6 v7 v0 + +[level1] +linelist=a_dish v0 v3 v4 v7 v0 + diff --git a/CONTENT/BT/GAUGE/PGN_GA.GIM b/CONTENT/BT/GAUGE/PGN_GA.GIM new file mode 100644 index 0000000..f469a87 --- /dev/null +++ b/CONTENT/BT/GAUGE/PGN_GA.GIM @@ -0,0 +1,30 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=3000 +level1=10000 + +[vertices] +v0=0.5, 0, -10.6 +v1=0.5, 0, -2.6 +v2=2, 0, -1.5 +v3=2, 0, 1.6 +v4=1.3, 0, 4.5 +v5=-1.3, 0, 4.5 +v6=-2, 0, 1.6 +v7=-2, 0, -1.5 +v8=-0.5, 0, -2.6 +v9=-0.5, 0, -10.6 +v10=3, 0, -3 +v11=3, 0, 3 +v12=-3, 0, 3 +v13=-3, 0, -3 + +[level0] +linelist=a_gun v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v0 +linelist=a_tarmac v10 v11 v12 v13 v10 + +[level1] +linelist=a_gun v0 v1 v2 v4 v5 v7 v8 v9 v0 + diff --git a/CONTENT/BT/GAUGE/QAFC10.PCC b/CONTENT/BT/GAUGE/QAFC10.PCC new file mode 100644 index 0000000..465b8b1 Binary files /dev/null and b/CONTENT/BT/GAUGE/QAFC10.PCC differ diff --git a/CONTENT/BT/GAUGE/QAFC100.PCC b/CONTENT/BT/GAUGE/QAFC100.PCC new file mode 100644 index 0000000..c5ae0af Binary files /dev/null and b/CONTENT/BT/GAUGE/QAFC100.PCC differ diff --git a/CONTENT/BT/GAUGE/QAFC25.PCC b/CONTENT/BT/GAUGE/QAFC25.PCC new file mode 100644 index 0000000..7c018d3 Binary files /dev/null and b/CONTENT/BT/GAUGE/QAFC25.PCC differ diff --git a/CONTENT/BT/GAUGE/QAFC5.PCC b/CONTENT/BT/GAUGE/QAFC5.PCC new file mode 100644 index 0000000..febf3c6 Binary files /dev/null and b/CONTENT/BT/GAUGE/QAFC5.PCC differ diff --git a/CONTENT/BT/GAUGE/QAFC50.PCC b/CONTENT/BT/GAUGE/QAFC50.PCC new file mode 100644 index 0000000..2a6b89e Binary files /dev/null and b/CONTENT/BT/GAUGE/QAFC50.PCC differ diff --git a/CONTENT/BT/GAUGE/QAVA0.PCC b/CONTENT/BT/GAUGE/QAVA0.PCC new file mode 100644 index 0000000..70c7782 Binary files /dev/null and b/CONTENT/BT/GAUGE/QAVA0.PCC differ diff --git a/CONTENT/BT/GAUGE/QAVA1.PCC b/CONTENT/BT/GAUGE/QAVA1.PCC new file mode 100644 index 0000000..2a515a0 Binary files /dev/null and b/CONTENT/BT/GAUGE/QAVA1.PCC differ diff --git a/CONTENT/BT/GAUGE/QAVA2.PCC b/CONTENT/BT/GAUGE/QAVA2.PCC new file mode 100644 index 0000000..3502c0f Binary files /dev/null and b/CONTENT/BT/GAUGE/QAVA2.PCC differ diff --git a/CONTENT/BT/GAUGE/QAVA23.PCC b/CONTENT/BT/GAUGE/QAVA23.PCC new file mode 100644 index 0000000..a4d8fd3 Binary files /dev/null and b/CONTENT/BT/GAUGE/QAVA23.PCC differ diff --git a/CONTENT/BT/GAUGE/QAVA24.PCC b/CONTENT/BT/GAUGE/QAVA24.PCC new file mode 100644 index 0000000..1ecce16 Binary files /dev/null and b/CONTENT/BT/GAUGE/QAVA24.PCC differ diff --git a/CONTENT/BT/GAUGE/QAVA25.PCC b/CONTENT/BT/GAUGE/QAVA25.PCC new file mode 100644 index 0000000..5b8dd28 Binary files /dev/null and b/CONTENT/BT/GAUGE/QAVA25.PCC differ diff --git a/CONTENT/BT/GAUGE/QAVA26.PCC b/CONTENT/BT/GAUGE/QAVA26.PCC new file mode 100644 index 0000000..7c3299a Binary files /dev/null and b/CONTENT/BT/GAUGE/QAVA26.PCC differ diff --git a/CONTENT/BT/GAUGE/QAVA27.PCC b/CONTENT/BT/GAUGE/QAVA27.PCC new file mode 100644 index 0000000..95bdcc8 Binary files /dev/null and b/CONTENT/BT/GAUGE/QAVA27.PCC differ diff --git a/CONTENT/BT/GAUGE/QBLH0.PCC b/CONTENT/BT/GAUGE/QBLH0.PCC new file mode 100644 index 0000000..6187f3a Binary files /dev/null and b/CONTENT/BT/GAUGE/QBLH0.PCC differ diff --git a/CONTENT/BT/GAUGE/QBLH1.PCC b/CONTENT/BT/GAUGE/QBLH1.PCC new file mode 100644 index 0000000..6cd3072 Binary files /dev/null and b/CONTENT/BT/GAUGE/QBLH1.PCC differ diff --git a/CONTENT/BT/GAUGE/QBLH2.PCC b/CONTENT/BT/GAUGE/QBLH2.PCC new file mode 100644 index 0000000..9ffc8bf Binary files /dev/null and b/CONTENT/BT/GAUGE/QBLH2.PCC differ diff --git a/CONTENT/BT/GAUGE/QBLH3.PCC b/CONTENT/BT/GAUGE/QBLH3.PCC new file mode 100644 index 0000000..0dc52e5 Binary files /dev/null and b/CONTENT/BT/GAUGE/QBLH3.PCC differ diff --git a/CONTENT/BT/GAUGE/QBLH4.PCC b/CONTENT/BT/GAUGE/QBLH4.PCC new file mode 100644 index 0000000..249b86b Binary files /dev/null and b/CONTENT/BT/GAUGE/QBLH4.PCC differ diff --git a/CONTENT/BT/GAUGE/QBLH5.PCC b/CONTENT/BT/GAUGE/QBLH5.PCC new file mode 100644 index 0000000..e1cd8f5 Binary files /dev/null and b/CONTENT/BT/GAUGE/QBLH5.PCC differ diff --git a/CONTENT/BT/GAUGE/QBLH6.PCC b/CONTENT/BT/GAUGE/QBLH6.PCC new file mode 100644 index 0000000..7df6410 Binary files /dev/null and b/CONTENT/BT/GAUGE/QBLH6.PCC differ diff --git a/CONTENT/BT/GAUGE/QBLH7.PCC b/CONTENT/BT/GAUGE/QBLH7.PCC new file mode 100644 index 0000000..2d94db8 Binary files /dev/null and b/CONTENT/BT/GAUGE/QBLH7.PCC differ diff --git a/CONTENT/BT/GAUGE/QCIRCLE.PCC b/CONTENT/BT/GAUGE/QCIRCLE.PCC new file mode 100644 index 0000000..86612b0 Binary files /dev/null and b/CONTENT/BT/GAUGE/QCIRCLE.PCC differ diff --git a/CONTENT/BT/GAUGE/QCIRCR.PCC b/CONTENT/BT/GAUGE/QCIRCR.PCC new file mode 100644 index 0000000..6f5bc7f Binary files /dev/null and b/CONTENT/BT/GAUGE/QCIRCR.PCC differ diff --git a/CONTENT/BT/GAUGE/QERLLAS.PCC b/CONTENT/BT/GAUGE/QERLLAS.PCC new file mode 100644 index 0000000..06253c3 Binary files /dev/null and b/CONTENT/BT/GAUGE/QERLLAS.PCC differ diff --git a/CONTENT/BT/GAUGE/QERMLAS.PCC b/CONTENT/BT/GAUGE/QERMLAS.PCC new file mode 100644 index 0000000..5f1757f Binary files /dev/null and b/CONTENT/BT/GAUGE/QERMLAS.PCC differ diff --git a/CONTENT/BT/GAUGE/QERPPC.PCC b/CONTENT/BT/GAUGE/QERPPC.PCC new file mode 100644 index 0000000..219f620 Binary files /dev/null and b/CONTENT/BT/GAUGE/QERPPC.PCC differ diff --git a/CONTENT/BT/GAUGE/QERSLAS.PCC b/CONTENT/BT/GAUGE/QERSLAS.PCC new file mode 100644 index 0000000..390e47e Binary files /dev/null and b/CONTENT/BT/GAUGE/QERSLAS.PCC differ diff --git a/CONTENT/BT/GAUGE/QFIR0.PCC b/CONTENT/BT/GAUGE/QFIR0.PCC new file mode 100644 index 0000000..e847aad Binary files /dev/null and b/CONTENT/BT/GAUGE/QFIR0.PCC differ diff --git a/CONTENT/BT/GAUGE/QFIR1.PCC b/CONTENT/BT/GAUGE/QFIR1.PCC new file mode 100644 index 0000000..4c9cd8e Binary files /dev/null and b/CONTENT/BT/GAUGE/QFIR1.PCC differ diff --git a/CONTENT/BT/GAUGE/QFIR2.PCC b/CONTENT/BT/GAUGE/QFIR2.PCC new file mode 100644 index 0000000..bf8c679 Binary files /dev/null and b/CONTENT/BT/GAUGE/QFIR2.PCC differ diff --git a/CONTENT/BT/GAUGE/QFIR3.PCC b/CONTENT/BT/GAUGE/QFIR3.PCC new file mode 100644 index 0000000..f4d3400 Binary files /dev/null and b/CONTENT/BT/GAUGE/QFIR3.PCC differ diff --git a/CONTENT/BT/GAUGE/QFIR4.PCC b/CONTENT/BT/GAUGE/QFIR4.PCC new file mode 100644 index 0000000..bda15e4 Binary files /dev/null and b/CONTENT/BT/GAUGE/QFIR4.PCC differ diff --git a/CONTENT/BT/GAUGE/QFIR5.PCC b/CONTENT/BT/GAUGE/QFIR5.PCC new file mode 100644 index 0000000..49f61af Binary files /dev/null and b/CONTENT/BT/GAUGE/QFIR5.PCC differ diff --git a/CONTENT/BT/GAUGE/QFIR6.PCC b/CONTENT/BT/GAUGE/QFIR6.PCC new file mode 100644 index 0000000..caf09e4 Binary files /dev/null and b/CONTENT/BT/GAUGE/QFIR6.PCC differ diff --git a/CONTENT/BT/GAUGE/QFIR7.PCC b/CONTENT/BT/GAUGE/QFIR7.PCC new file mode 100644 index 0000000..485c9be Binary files /dev/null and b/CONTENT/BT/GAUGE/QFIR7.PCC differ diff --git a/CONTENT/BT/GAUGE/QFIRI.PCC b/CONTENT/BT/GAUGE/QFIRI.PCC new file mode 100644 index 0000000..6b370a1 Binary files /dev/null and b/CONTENT/BT/GAUGE/QFIRI.PCC differ diff --git a/CONTENT/BT/GAUGE/QGAUSS.PCC b/CONTENT/BT/GAUGE/QGAUSS.PCC new file mode 100644 index 0000000..414481a Binary files /dev/null and b/CONTENT/BT/GAUGE/QGAUSS.PCC differ diff --git a/CONTENT/BT/GAUGE/QJAK0.PCC b/CONTENT/BT/GAUGE/QJAK0.PCC new file mode 100644 index 0000000..3f12241 Binary files /dev/null and b/CONTENT/BT/GAUGE/QJAK0.PCC differ diff --git a/CONTENT/BT/GAUGE/QJAK1.PCC b/CONTENT/BT/GAUGE/QJAK1.PCC new file mode 100644 index 0000000..5e6ace0 Binary files /dev/null and b/CONTENT/BT/GAUGE/QJAK1.PCC differ diff --git a/CONTENT/BT/GAUGE/QJAK2.PCC b/CONTENT/BT/GAUGE/QJAK2.PCC new file mode 100644 index 0000000..41715ed Binary files /dev/null and b/CONTENT/BT/GAUGE/QJAK2.PCC differ diff --git a/CONTENT/BT/GAUGE/QJAK3.PCC b/CONTENT/BT/GAUGE/QJAK3.PCC new file mode 100644 index 0000000..62db227 Binary files /dev/null and b/CONTENT/BT/GAUGE/QJAK3.PCC differ diff --git a/CONTENT/BT/GAUGE/QJAK4.PCC b/CONTENT/BT/GAUGE/QJAK4.PCC new file mode 100644 index 0000000..7aab590 Binary files /dev/null and b/CONTENT/BT/GAUGE/QJAK4.PCC differ diff --git a/CONTENT/BT/GAUGE/QJAK5.PCC b/CONTENT/BT/GAUGE/QJAK5.PCC new file mode 100644 index 0000000..3ff9d4f Binary files /dev/null and b/CONTENT/BT/GAUGE/QJAK5.PCC differ diff --git a/CONTENT/BT/GAUGE/QJAK6.PCC b/CONTENT/BT/GAUGE/QJAK6.PCC new file mode 100644 index 0000000..9fd04f9 Binary files /dev/null and b/CONTENT/BT/GAUGE/QJAK6.PCC differ diff --git a/CONTENT/BT/GAUGE/QJAK7.PCC b/CONTENT/BT/GAUGE/QJAK7.PCC new file mode 100644 index 0000000..66736ff Binary files /dev/null and b/CONTENT/BT/GAUGE/QJAK7.PCC differ diff --git a/CONTENT/BT/GAUGE/QLBX10.PCC b/CONTENT/BT/GAUGE/QLBX10.PCC new file mode 100644 index 0000000..465b8b1 Binary files /dev/null and b/CONTENT/BT/GAUGE/QLBX10.PCC differ diff --git a/CONTENT/BT/GAUGE/QLBX100.PCC b/CONTENT/BT/GAUGE/QLBX100.PCC new file mode 100644 index 0000000..c5ae0af Binary files /dev/null and b/CONTENT/BT/GAUGE/QLBX100.PCC differ diff --git a/CONTENT/BT/GAUGE/QLBX25.PCC b/CONTENT/BT/GAUGE/QLBX25.PCC new file mode 100644 index 0000000..7c018d3 Binary files /dev/null and b/CONTENT/BT/GAUGE/QLBX25.PCC differ diff --git a/CONTENT/BT/GAUGE/QLBX5.PCC b/CONTENT/BT/GAUGE/QLBX5.PCC new file mode 100644 index 0000000..febf3c6 Binary files /dev/null and b/CONTENT/BT/GAUGE/QLBX5.PCC differ diff --git a/CONTENT/BT/GAUGE/QLBX50.PCC b/CONTENT/BT/GAUGE/QLBX50.PCC new file mode 100644 index 0000000..2a6b89e Binary files /dev/null and b/CONTENT/BT/GAUGE/QLBX50.PCC differ diff --git a/CONTENT/BT/GAUGE/QLLAS.PCC b/CONTENT/BT/GAUGE/QLLAS.PCC new file mode 100644 index 0000000..efe0112 Binary files /dev/null and b/CONTENT/BT/GAUGE/QLLAS.PCC differ diff --git a/CONTENT/BT/GAUGE/QLOK10.PCC b/CONTENT/BT/GAUGE/QLOK10.PCC new file mode 100644 index 0000000..62b0c57 Binary files /dev/null and b/CONTENT/BT/GAUGE/QLOK10.PCC differ diff --git a/CONTENT/BT/GAUGE/QLOK11.PCC b/CONTENT/BT/GAUGE/QLOK11.PCC new file mode 100644 index 0000000..c7a962f Binary files /dev/null and b/CONTENT/BT/GAUGE/QLOK11.PCC differ diff --git a/CONTENT/BT/GAUGE/QLOK12.PCC b/CONTENT/BT/GAUGE/QLOK12.PCC new file mode 100644 index 0000000..d961fac Binary files /dev/null and b/CONTENT/BT/GAUGE/QLOK12.PCC differ diff --git a/CONTENT/BT/GAUGE/QLOK13.PCC b/CONTENT/BT/GAUGE/QLOK13.PCC new file mode 100644 index 0000000..db8dc55 Binary files /dev/null and b/CONTENT/BT/GAUGE/QLOK13.PCC differ diff --git a/CONTENT/BT/GAUGE/QLOK14.PCC b/CONTENT/BT/GAUGE/QLOK14.PCC new file mode 100644 index 0000000..2f7eeb5 Binary files /dev/null and b/CONTENT/BT/GAUGE/QLOK14.PCC differ diff --git a/CONTENT/BT/GAUGE/QLOK15.PCC b/CONTENT/BT/GAUGE/QLOK15.PCC new file mode 100644 index 0000000..13b9670 Binary files /dev/null and b/CONTENT/BT/GAUGE/QLOK15.PCC differ diff --git a/CONTENT/BT/GAUGE/QLOK16.PCC b/CONTENT/BT/GAUGE/QLOK16.PCC new file mode 100644 index 0000000..b33cd20 Binary files /dev/null and b/CONTENT/BT/GAUGE/QLOK16.PCC differ diff --git a/CONTENT/BT/GAUGE/QLOK17.PCC b/CONTENT/BT/GAUGE/QLOK17.PCC new file mode 100644 index 0000000..539e0d5 Binary files /dev/null and b/CONTENT/BT/GAUGE/QLOK17.PCC differ diff --git a/CONTENT/BT/GAUGE/QLOKI0.PCC b/CONTENT/BT/GAUGE/QLOKI0.PCC new file mode 100644 index 0000000..037f7a8 Binary files /dev/null and b/CONTENT/BT/GAUGE/QLOKI0.PCC differ diff --git a/CONTENT/BT/GAUGE/QLOKI1.PCC b/CONTENT/BT/GAUGE/QLOKI1.PCC new file mode 100644 index 0000000..fcedd3a Binary files /dev/null and b/CONTENT/BT/GAUGE/QLOKI1.PCC differ diff --git a/CONTENT/BT/GAUGE/QLOKI2.PCC b/CONTENT/BT/GAUGE/QLOKI2.PCC new file mode 100644 index 0000000..a05977a Binary files /dev/null and b/CONTENT/BT/GAUGE/QLOKI2.PCC differ diff --git a/CONTENT/BT/GAUGE/QLOKI3.PCC b/CONTENT/BT/GAUGE/QLOKI3.PCC new file mode 100644 index 0000000..6ca7254 Binary files /dev/null and b/CONTENT/BT/GAUGE/QLOKI3.PCC differ diff --git a/CONTENT/BT/GAUGE/QLOKI4.PCC b/CONTENT/BT/GAUGE/QLOKI4.PCC new file mode 100644 index 0000000..8daf405 Binary files /dev/null and b/CONTENT/BT/GAUGE/QLOKI4.PCC differ diff --git a/CONTENT/BT/GAUGE/QLOKI5.PCC b/CONTENT/BT/GAUGE/QLOKI5.PCC new file mode 100644 index 0000000..6ca1b11 Binary files /dev/null and b/CONTENT/BT/GAUGE/QLOKI5.PCC differ diff --git a/CONTENT/BT/GAUGE/QLOKI6.PCC b/CONTENT/BT/GAUGE/QLOKI6.PCC new file mode 100644 index 0000000..17faf26 Binary files /dev/null and b/CONTENT/BT/GAUGE/QLOKI6.PCC differ diff --git a/CONTENT/BT/GAUGE/QLOKI7.PCC b/CONTENT/BT/GAUGE/QLOKI7.PCC new file mode 100644 index 0000000..10b9655 Binary files /dev/null and b/CONTENT/BT/GAUGE/QLOKI7.PCC differ diff --git a/CONTENT/BT/GAUGE/QLRM10.PCC b/CONTENT/BT/GAUGE/QLRM10.PCC new file mode 100644 index 0000000..4104f1a Binary files /dev/null and b/CONTENT/BT/GAUGE/QLRM10.PCC differ diff --git a/CONTENT/BT/GAUGE/QLRM15.PCC b/CONTENT/BT/GAUGE/QLRM15.PCC new file mode 100644 index 0000000..1b7eb20 Binary files /dev/null and b/CONTENT/BT/GAUGE/QLRM15.PCC differ diff --git a/CONTENT/BT/GAUGE/QLRM20.PCC b/CONTENT/BT/GAUGE/QLRM20.PCC new file mode 100644 index 0000000..f15cb4c Binary files /dev/null and b/CONTENT/BT/GAUGE/QLRM20.PCC differ diff --git a/CONTENT/BT/GAUGE/QLRM5.PCC b/CONTENT/BT/GAUGE/QLRM5.PCC new file mode 100644 index 0000000..c0c72a4 Binary files /dev/null and b/CONTENT/BT/GAUGE/QLRM5.PCC differ diff --git a/CONTENT/BT/GAUGE/QMAD0.PCC b/CONTENT/BT/GAUGE/QMAD0.PCC new file mode 100644 index 0000000..e4f77f4 Binary files /dev/null and b/CONTENT/BT/GAUGE/QMAD0.PCC differ diff --git a/CONTENT/BT/GAUGE/QMAD1.PCC b/CONTENT/BT/GAUGE/QMAD1.PCC new file mode 100644 index 0000000..96a1c3c Binary files /dev/null and b/CONTENT/BT/GAUGE/QMAD1.PCC differ diff --git a/CONTENT/BT/GAUGE/QMAD10.PCC b/CONTENT/BT/GAUGE/QMAD10.PCC new file mode 100644 index 0000000..ad23fdb Binary files /dev/null and b/CONTENT/BT/GAUGE/QMAD10.PCC differ diff --git a/CONTENT/BT/GAUGE/QMAD11.PCC b/CONTENT/BT/GAUGE/QMAD11.PCC new file mode 100644 index 0000000..64e79be Binary files /dev/null and b/CONTENT/BT/GAUGE/QMAD11.PCC differ diff --git a/CONTENT/BT/GAUGE/QMAD12.PCC b/CONTENT/BT/GAUGE/QMAD12.PCC new file mode 100644 index 0000000..2da536d Binary files /dev/null and b/CONTENT/BT/GAUGE/QMAD12.PCC differ diff --git a/CONTENT/BT/GAUGE/QMAD13.PCC b/CONTENT/BT/GAUGE/QMAD13.PCC new file mode 100644 index 0000000..4a551d8 Binary files /dev/null and b/CONTENT/BT/GAUGE/QMAD13.PCC differ diff --git a/CONTENT/BT/GAUGE/QMAD14.PCC b/CONTENT/BT/GAUGE/QMAD14.PCC new file mode 100644 index 0000000..b71d64b Binary files /dev/null and b/CONTENT/BT/GAUGE/QMAD14.PCC differ diff --git a/CONTENT/BT/GAUGE/QMAD15.PCC b/CONTENT/BT/GAUGE/QMAD15.PCC new file mode 100644 index 0000000..8378811 Binary files /dev/null and b/CONTENT/BT/GAUGE/QMAD15.PCC differ diff --git a/CONTENT/BT/GAUGE/QMAD16.PCC b/CONTENT/BT/GAUGE/QMAD16.PCC new file mode 100644 index 0000000..b56cea0 Binary files /dev/null and b/CONTENT/BT/GAUGE/QMAD16.PCC differ diff --git a/CONTENT/BT/GAUGE/QMAD17.PCC b/CONTENT/BT/GAUGE/QMAD17.PCC new file mode 100644 index 0000000..bc29041 Binary files /dev/null and b/CONTENT/BT/GAUGE/QMAD17.PCC differ diff --git a/CONTENT/BT/GAUGE/QMAD2.PCC b/CONTENT/BT/GAUGE/QMAD2.PCC new file mode 100644 index 0000000..08d29de Binary files /dev/null and b/CONTENT/BT/GAUGE/QMAD2.PCC differ diff --git a/CONTENT/BT/GAUGE/QMAD20.PCC b/CONTENT/BT/GAUGE/QMAD20.PCC new file mode 100644 index 0000000..487e0b5 Binary files /dev/null and b/CONTENT/BT/GAUGE/QMAD20.PCC differ diff --git a/CONTENT/BT/GAUGE/QMAD21.PCC b/CONTENT/BT/GAUGE/QMAD21.PCC new file mode 100644 index 0000000..6fa524e Binary files /dev/null and b/CONTENT/BT/GAUGE/QMAD21.PCC differ diff --git a/CONTENT/BT/GAUGE/QMAD22.PCC b/CONTENT/BT/GAUGE/QMAD22.PCC new file mode 100644 index 0000000..570b89a Binary files /dev/null and b/CONTENT/BT/GAUGE/QMAD22.PCC differ diff --git a/CONTENT/BT/GAUGE/QMAD23.PCC b/CONTENT/BT/GAUGE/QMAD23.PCC new file mode 100644 index 0000000..b6ae50b Binary files /dev/null and b/CONTENT/BT/GAUGE/QMAD23.PCC differ diff --git a/CONTENT/BT/GAUGE/QMAD24.PCC b/CONTENT/BT/GAUGE/QMAD24.PCC new file mode 100644 index 0000000..b8b1504 Binary files /dev/null and b/CONTENT/BT/GAUGE/QMAD24.PCC differ diff --git a/CONTENT/BT/GAUGE/QMAD25.PCC b/CONTENT/BT/GAUGE/QMAD25.PCC new file mode 100644 index 0000000..003ad3a Binary files /dev/null and b/CONTENT/BT/GAUGE/QMAD25.PCC differ diff --git a/CONTENT/BT/GAUGE/QMAD26.PCC b/CONTENT/BT/GAUGE/QMAD26.PCC new file mode 100644 index 0000000..5c71daa Binary files /dev/null and b/CONTENT/BT/GAUGE/QMAD26.PCC differ diff --git a/CONTENT/BT/GAUGE/QMAD27.PCC b/CONTENT/BT/GAUGE/QMAD27.PCC new file mode 100644 index 0000000..edd1cde Binary files /dev/null and b/CONTENT/BT/GAUGE/QMAD27.PCC differ diff --git a/CONTENT/BT/GAUGE/QMAD3.PCC b/CONTENT/BT/GAUGE/QMAD3.PCC new file mode 100644 index 0000000..60dabd8 Binary files /dev/null and b/CONTENT/BT/GAUGE/QMAD3.PCC differ diff --git a/CONTENT/BT/GAUGE/QMAD4.PCC b/CONTENT/BT/GAUGE/QMAD4.PCC new file mode 100644 index 0000000..82ae777 Binary files /dev/null and b/CONTENT/BT/GAUGE/QMAD4.PCC differ diff --git a/CONTENT/BT/GAUGE/QMAD5.PCC b/CONTENT/BT/GAUGE/QMAD5.PCC new file mode 100644 index 0000000..f6629ff Binary files /dev/null and b/CONTENT/BT/GAUGE/QMAD5.PCC differ diff --git a/CONTENT/BT/GAUGE/QMAD6.PCC b/CONTENT/BT/GAUGE/QMAD6.PCC new file mode 100644 index 0000000..009a726 Binary files /dev/null and b/CONTENT/BT/GAUGE/QMAD6.PCC differ diff --git a/CONTENT/BT/GAUGE/QMAD7.PCC b/CONTENT/BT/GAUGE/QMAD7.PCC new file mode 100644 index 0000000..e6c41a7 Binary files /dev/null and b/CONTENT/BT/GAUGE/QMAD7.PCC differ diff --git a/CONTENT/BT/GAUGE/QMG.PCC b/CONTENT/BT/GAUGE/QMG.PCC new file mode 100644 index 0000000..17aeb1a Binary files /dev/null and b/CONTENT/BT/GAUGE/QMG.PCC differ diff --git a/CONTENT/BT/GAUGE/QMLAS.PCC b/CONTENT/BT/GAUGE/QMLAS.PCC new file mode 100644 index 0000000..70a0cd6 Binary files /dev/null and b/CONTENT/BT/GAUGE/QMLAS.PCC differ diff --git a/CONTENT/BT/GAUGE/QMYOMERS.PCC b/CONTENT/BT/GAUGE/QMYOMERS.PCC new file mode 100644 index 0000000..eb436c6 Binary files /dev/null and b/CONTENT/BT/GAUGE/QMYOMERS.PCC differ diff --git a/CONTENT/BT/GAUGE/QNRK15.PCC b/CONTENT/BT/GAUGE/QNRK15.PCC new file mode 100644 index 0000000..bbd3163 Binary files /dev/null and b/CONTENT/BT/GAUGE/QNRK15.PCC differ diff --git a/CONTENT/BT/GAUGE/QNRK5.PCC b/CONTENT/BT/GAUGE/QNRK5.PCC new file mode 100644 index 0000000..6e7b6a5 Binary files /dev/null and b/CONTENT/BT/GAUGE/QNRK5.PCC differ diff --git a/CONTENT/BT/GAUGE/QOWEN0.PCC b/CONTENT/BT/GAUGE/QOWEN0.PCC new file mode 100644 index 0000000..316e6e1 Binary files /dev/null and b/CONTENT/BT/GAUGE/QOWEN0.PCC differ diff --git a/CONTENT/BT/GAUGE/QOWEN1.PCC b/CONTENT/BT/GAUGE/QOWEN1.PCC new file mode 100644 index 0000000..14d0600 Binary files /dev/null and b/CONTENT/BT/GAUGE/QOWEN1.PCC differ diff --git a/CONTENT/BT/GAUGE/QOWEN2.PCC b/CONTENT/BT/GAUGE/QOWEN2.PCC new file mode 100644 index 0000000..70b663e Binary files /dev/null and b/CONTENT/BT/GAUGE/QOWEN2.PCC differ diff --git a/CONTENT/BT/GAUGE/QOWEN3.PCC b/CONTENT/BT/GAUGE/QOWEN3.PCC new file mode 100644 index 0000000..4f4077d Binary files /dev/null and b/CONTENT/BT/GAUGE/QOWEN3.PCC differ diff --git a/CONTENT/BT/GAUGE/QOWEN4.PCC b/CONTENT/BT/GAUGE/QOWEN4.PCC new file mode 100644 index 0000000..5889691 Binary files /dev/null and b/CONTENT/BT/GAUGE/QOWEN4.PCC differ diff --git a/CONTENT/BT/GAUGE/QOWEN5.PCC b/CONTENT/BT/GAUGE/QOWEN5.PCC new file mode 100644 index 0000000..edceb16 Binary files /dev/null and b/CONTENT/BT/GAUGE/QOWEN5.PCC differ diff --git a/CONTENT/BT/GAUGE/QOWEN6.PCC b/CONTENT/BT/GAUGE/QOWEN6.PCC new file mode 100644 index 0000000..c38ba9c Binary files /dev/null and b/CONTENT/BT/GAUGE/QOWEN6.PCC differ diff --git a/CONTENT/BT/GAUGE/QOWEN7.PCC b/CONTENT/BT/GAUGE/QOWEN7.PCC new file mode 100644 index 0000000..7fe9caa Binary files /dev/null and b/CONTENT/BT/GAUGE/QOWEN7.PCC differ diff --git a/CONTENT/BT/GAUGE/QPPC.PCC b/CONTENT/BT/GAUGE/QPPC.PCC new file mode 100644 index 0000000..b4d0364 Binary files /dev/null and b/CONTENT/BT/GAUGE/QPPC.PCC differ diff --git a/CONTENT/BT/GAUGE/QRAP0.PCC b/CONTENT/BT/GAUGE/QRAP0.PCC new file mode 100644 index 0000000..15bf3dc Binary files /dev/null and b/CONTENT/BT/GAUGE/QRAP0.PCC differ diff --git a/CONTENT/BT/GAUGE/QRAP1.PCC b/CONTENT/BT/GAUGE/QRAP1.PCC new file mode 100644 index 0000000..97f0a55 Binary files /dev/null and b/CONTENT/BT/GAUGE/QRAP1.PCC differ diff --git a/CONTENT/BT/GAUGE/QRAP2.PCC b/CONTENT/BT/GAUGE/QRAP2.PCC new file mode 100644 index 0000000..4db14c4 Binary files /dev/null and b/CONTENT/BT/GAUGE/QRAP2.PCC differ diff --git a/CONTENT/BT/GAUGE/QRAP3.PCC b/CONTENT/BT/GAUGE/QRAP3.PCC new file mode 100644 index 0000000..9e7f0f8 Binary files /dev/null and b/CONTENT/BT/GAUGE/QRAP3.PCC differ diff --git a/CONTENT/BT/GAUGE/QRAP4.PCC b/CONTENT/BT/GAUGE/QRAP4.PCC new file mode 100644 index 0000000..4828b83 Binary files /dev/null and b/CONTENT/BT/GAUGE/QRAP4.PCC differ diff --git a/CONTENT/BT/GAUGE/QRAP5.PCC b/CONTENT/BT/GAUGE/QRAP5.PCC new file mode 100644 index 0000000..bfeaa6e Binary files /dev/null and b/CONTENT/BT/GAUGE/QRAP5.PCC differ diff --git a/CONTENT/BT/GAUGE/QRAP6.PCC b/CONTENT/BT/GAUGE/QRAP6.PCC new file mode 100644 index 0000000..371c6e2 Binary files /dev/null and b/CONTENT/BT/GAUGE/QRAP6.PCC differ diff --git a/CONTENT/BT/GAUGE/QRAP7.PCC b/CONTENT/BT/GAUGE/QRAP7.PCC new file mode 100644 index 0000000..3d3213a Binary files /dev/null and b/CONTENT/BT/GAUGE/QRAP7.PCC differ diff --git a/CONTENT/BT/GAUGE/QRAPI.PCC b/CONTENT/BT/GAUGE/QRAPI.PCC new file mode 100644 index 0000000..1bdaf67 Binary files /dev/null and b/CONTENT/BT/GAUGE/QRAPI.PCC differ diff --git a/CONTENT/BT/GAUGE/QSENSORS.PCC b/CONTENT/BT/GAUGE/QSENSORS.PCC new file mode 100644 index 0000000..567e621 Binary files /dev/null and b/CONTENT/BT/GAUGE/QSENSORS.PCC differ diff --git a/CONTENT/BT/GAUGE/QSLAS.PCC b/CONTENT/BT/GAUGE/QSLAS.PCC new file mode 100644 index 0000000..05e760d Binary files /dev/null and b/CONTENT/BT/GAUGE/QSLAS.PCC differ diff --git a/CONTENT/BT/GAUGE/QSLASER.PCC b/CONTENT/BT/GAUGE/QSLASER.PCC new file mode 100644 index 0000000..473844d Binary files /dev/null and b/CONTENT/BT/GAUGE/QSLASER.PCC differ diff --git a/CONTENT/BT/GAUGE/QSRM2.PCC b/CONTENT/BT/GAUGE/QSRM2.PCC new file mode 100644 index 0000000..89f9700 Binary files /dev/null and b/CONTENT/BT/GAUGE/QSRM2.PCC differ diff --git a/CONTENT/BT/GAUGE/QSRM4.PCC b/CONTENT/BT/GAUGE/QSRM4.PCC new file mode 100644 index 0000000..f8f9124 Binary files /dev/null and b/CONTENT/BT/GAUGE/QSRM4.PCC differ diff --git a/CONTENT/BT/GAUGE/QSRM6.PCC b/CONTENT/BT/GAUGE/QSRM6.PCC new file mode 100644 index 0000000..eddcc7a Binary files /dev/null and b/CONTENT/BT/GAUGE/QSRM6.PCC differ diff --git a/CONTENT/BT/GAUGE/QSTI0.PCC b/CONTENT/BT/GAUGE/QSTI0.PCC new file mode 100644 index 0000000..4bf43d2 Binary files /dev/null and b/CONTENT/BT/GAUGE/QSTI0.PCC differ diff --git a/CONTENT/BT/GAUGE/QSTI1.PCC b/CONTENT/BT/GAUGE/QSTI1.PCC new file mode 100644 index 0000000..70e748e Binary files /dev/null and b/CONTENT/BT/GAUGE/QSTI1.PCC differ diff --git a/CONTENT/BT/GAUGE/QSTI2.PCC b/CONTENT/BT/GAUGE/QSTI2.PCC new file mode 100644 index 0000000..09577b6 Binary files /dev/null and b/CONTENT/BT/GAUGE/QSTI2.PCC differ diff --git a/CONTENT/BT/GAUGE/QSTI3.PCC b/CONTENT/BT/GAUGE/QSTI3.PCC new file mode 100644 index 0000000..58e4bdf Binary files /dev/null and b/CONTENT/BT/GAUGE/QSTI3.PCC differ diff --git a/CONTENT/BT/GAUGE/QSTI4.PCC b/CONTENT/BT/GAUGE/QSTI4.PCC new file mode 100644 index 0000000..5c827d1 Binary files /dev/null and b/CONTENT/BT/GAUGE/QSTI4.PCC differ diff --git a/CONTENT/BT/GAUGE/QSTI5.PCC b/CONTENT/BT/GAUGE/QSTI5.PCC new file mode 100644 index 0000000..13d69eb Binary files /dev/null and b/CONTENT/BT/GAUGE/QSTI5.PCC differ diff --git a/CONTENT/BT/GAUGE/QSTI6.PCC b/CONTENT/BT/GAUGE/QSTI6.PCC new file mode 100644 index 0000000..e83dc82 Binary files /dev/null and b/CONTENT/BT/GAUGE/QSTI6.PCC differ diff --git a/CONTENT/BT/GAUGE/QSTI7.PCC b/CONTENT/BT/GAUGE/QSTI7.PCC new file mode 100644 index 0000000..91f1028 Binary files /dev/null and b/CONTENT/BT/GAUGE/QSTI7.PCC differ diff --git a/CONTENT/BT/GAUGE/QSTII.PCC b/CONTENT/BT/GAUGE/QSTII.PCC new file mode 100644 index 0000000..f7b444f Binary files /dev/null and b/CONTENT/BT/GAUGE/QSTII.PCC differ diff --git a/CONTENT/BT/GAUGE/QSTRK2.PCC b/CONTENT/BT/GAUGE/QSTRK2.PCC new file mode 100644 index 0000000..f5f8bbb Binary files /dev/null and b/CONTENT/BT/GAUGE/QSTRK2.PCC differ diff --git a/CONTENT/BT/GAUGE/QSTRK4.PCC b/CONTENT/BT/GAUGE/QSTRK4.PCC new file mode 100644 index 0000000..3e87a61 Binary files /dev/null and b/CONTENT/BT/GAUGE/QSTRK4.PCC differ diff --git a/CONTENT/BT/GAUGE/QSTRK6.PCC b/CONTENT/BT/GAUGE/QSTRK6.PCC new file mode 100644 index 0000000..9b855ae Binary files /dev/null and b/CONTENT/BT/GAUGE/QSTRK6.PCC differ diff --git a/CONTENT/BT/GAUGE/QSUN0.PCC b/CONTENT/BT/GAUGE/QSUN0.PCC new file mode 100644 index 0000000..db4f3ef Binary files /dev/null and b/CONTENT/BT/GAUGE/QSUN0.PCC differ diff --git a/CONTENT/BT/GAUGE/QSUN1.PCC b/CONTENT/BT/GAUGE/QSUN1.PCC new file mode 100644 index 0000000..906472e Binary files /dev/null and b/CONTENT/BT/GAUGE/QSUN1.PCC differ diff --git a/CONTENT/BT/GAUGE/QSUN2.PCC b/CONTENT/BT/GAUGE/QSUN2.PCC new file mode 100644 index 0000000..3a3015d Binary files /dev/null and b/CONTENT/BT/GAUGE/QSUN2.PCC differ diff --git a/CONTENT/BT/GAUGE/QSUN3.PCC b/CONTENT/BT/GAUGE/QSUN3.PCC new file mode 100644 index 0000000..094e00a Binary files /dev/null and b/CONTENT/BT/GAUGE/QSUN3.PCC differ diff --git a/CONTENT/BT/GAUGE/QSUN4.PCC b/CONTENT/BT/GAUGE/QSUN4.PCC new file mode 100644 index 0000000..aa7b2c2 Binary files /dev/null and b/CONTENT/BT/GAUGE/QSUN4.PCC differ diff --git a/CONTENT/BT/GAUGE/QSUN5.PCC b/CONTENT/BT/GAUGE/QSUN5.PCC new file mode 100644 index 0000000..fbf5024 Binary files /dev/null and b/CONTENT/BT/GAUGE/QSUN5.PCC differ diff --git a/CONTENT/BT/GAUGE/QSUN6.PCC b/CONTENT/BT/GAUGE/QSUN6.PCC new file mode 100644 index 0000000..7fb07c7 Binary files /dev/null and b/CONTENT/BT/GAUGE/QSUN6.PCC differ diff --git a/CONTENT/BT/GAUGE/QSUN7.PCC b/CONTENT/BT/GAUGE/QSUN7.PCC new file mode 100644 index 0000000..daabf3b Binary files /dev/null and b/CONTENT/BT/GAUGE/QSUN7.PCC differ diff --git a/CONTENT/BT/GAUGE/QTHOR.PCC b/CONTENT/BT/GAUGE/QTHOR.PCC new file mode 100644 index 0000000..7fc6cb4 Binary files /dev/null and b/CONTENT/BT/GAUGE/QTHOR.PCC differ diff --git a/CONTENT/BT/GAUGE/QTHOR0.PCC b/CONTENT/BT/GAUGE/QTHOR0.PCC new file mode 100644 index 0000000..64340c1 Binary files /dev/null and b/CONTENT/BT/GAUGE/QTHOR0.PCC differ diff --git a/CONTENT/BT/GAUGE/QTHOR1.PCC b/CONTENT/BT/GAUGE/QTHOR1.PCC new file mode 100644 index 0000000..0088f61 Binary files /dev/null and b/CONTENT/BT/GAUGE/QTHOR1.PCC differ diff --git a/CONTENT/BT/GAUGE/QTHOR2.PCC b/CONTENT/BT/GAUGE/QTHOR2.PCC new file mode 100644 index 0000000..197da36 Binary files /dev/null and b/CONTENT/BT/GAUGE/QTHOR2.PCC differ diff --git a/CONTENT/BT/GAUGE/QTHOR3.PCC b/CONTENT/BT/GAUGE/QTHOR3.PCC new file mode 100644 index 0000000..5c06a26 Binary files /dev/null and b/CONTENT/BT/GAUGE/QTHOR3.PCC differ diff --git a/CONTENT/BT/GAUGE/QTHOR4.PCC b/CONTENT/BT/GAUGE/QTHOR4.PCC new file mode 100644 index 0000000..60a29af Binary files /dev/null and b/CONTENT/BT/GAUGE/QTHOR4.PCC differ diff --git a/CONTENT/BT/GAUGE/QTHOR5.PCC b/CONTENT/BT/GAUGE/QTHOR5.PCC new file mode 100644 index 0000000..7799d57 Binary files /dev/null and b/CONTENT/BT/GAUGE/QTHOR5.PCC differ diff --git a/CONTENT/BT/GAUGE/QTHOR6.PCC b/CONTENT/BT/GAUGE/QTHOR6.PCC new file mode 100644 index 0000000..6c8a275 Binary files /dev/null and b/CONTENT/BT/GAUGE/QTHOR6.PCC differ diff --git a/CONTENT/BT/GAUGE/QTHOR7.PCC b/CONTENT/BT/GAUGE/QTHOR7.PCC new file mode 100644 index 0000000..3144bab Binary files /dev/null and b/CONTENT/BT/GAUGE/QTHOR7.PCC differ diff --git a/CONTENT/BT/GAUGE/QVUL10.PCC b/CONTENT/BT/GAUGE/QVUL10.PCC new file mode 100644 index 0000000..44cc432 Binary files /dev/null and b/CONTENT/BT/GAUGE/QVUL10.PCC differ diff --git a/CONTENT/BT/GAUGE/QVUL11.PCC b/CONTENT/BT/GAUGE/QVUL11.PCC new file mode 100644 index 0000000..ea90469 Binary files /dev/null and b/CONTENT/BT/GAUGE/QVUL11.PCC differ diff --git a/CONTENT/BT/GAUGE/QVUL12.PCC b/CONTENT/BT/GAUGE/QVUL12.PCC new file mode 100644 index 0000000..b359840 Binary files /dev/null and b/CONTENT/BT/GAUGE/QVUL12.PCC differ diff --git a/CONTENT/BT/GAUGE/QVUL13.PCC b/CONTENT/BT/GAUGE/QVUL13.PCC new file mode 100644 index 0000000..7097608 Binary files /dev/null and b/CONTENT/BT/GAUGE/QVUL13.PCC differ diff --git a/CONTENT/BT/GAUGE/QVUL14.PCC b/CONTENT/BT/GAUGE/QVUL14.PCC new file mode 100644 index 0000000..4faff1a Binary files /dev/null and b/CONTENT/BT/GAUGE/QVUL14.PCC differ diff --git a/CONTENT/BT/GAUGE/QVUL15.PCC b/CONTENT/BT/GAUGE/QVUL15.PCC new file mode 100644 index 0000000..73069b0 Binary files /dev/null and b/CONTENT/BT/GAUGE/QVUL15.PCC differ diff --git a/CONTENT/BT/GAUGE/QVUL16.PCC b/CONTENT/BT/GAUGE/QVUL16.PCC new file mode 100644 index 0000000..9155405 Binary files /dev/null and b/CONTENT/BT/GAUGE/QVUL16.PCC differ diff --git a/CONTENT/BT/GAUGE/QVUL17.PCC b/CONTENT/BT/GAUGE/QVUL17.PCC new file mode 100644 index 0000000..87287cb Binary files /dev/null and b/CONTENT/BT/GAUGE/QVUL17.PCC differ diff --git a/CONTENT/BT/GAUGE/QVUL20.PCC b/CONTENT/BT/GAUGE/QVUL20.PCC new file mode 100644 index 0000000..963a809 Binary files /dev/null and b/CONTENT/BT/GAUGE/QVUL20.PCC differ diff --git a/CONTENT/BT/GAUGE/QVUL21.PCC b/CONTENT/BT/GAUGE/QVUL21.PCC new file mode 100644 index 0000000..98de98e Binary files /dev/null and b/CONTENT/BT/GAUGE/QVUL21.PCC differ diff --git a/CONTENT/BT/GAUGE/QVUL22.PCC b/CONTENT/BT/GAUGE/QVUL22.PCC new file mode 100644 index 0000000..cd89761 Binary files /dev/null and b/CONTENT/BT/GAUGE/QVUL22.PCC differ diff --git a/CONTENT/BT/GAUGE/QVUL23.PCC b/CONTENT/BT/GAUGE/QVUL23.PCC new file mode 100644 index 0000000..893980b Binary files /dev/null and b/CONTENT/BT/GAUGE/QVUL23.PCC differ diff --git a/CONTENT/BT/GAUGE/QVUL24.PCC b/CONTENT/BT/GAUGE/QVUL24.PCC new file mode 100644 index 0000000..6f1ddf3 Binary files /dev/null and b/CONTENT/BT/GAUGE/QVUL24.PCC differ diff --git a/CONTENT/BT/GAUGE/QVUL25.PCC b/CONTENT/BT/GAUGE/QVUL25.PCC new file mode 100644 index 0000000..6329b7c Binary files /dev/null and b/CONTENT/BT/GAUGE/QVUL25.PCC differ diff --git a/CONTENT/BT/GAUGE/QVUL26.PCC b/CONTENT/BT/GAUGE/QVUL26.PCC new file mode 100644 index 0000000..c21684a Binary files /dev/null and b/CONTENT/BT/GAUGE/QVUL26.PCC differ diff --git a/CONTENT/BT/GAUGE/QVUL27.PCC b/CONTENT/BT/GAUGE/QVUL27.PCC new file mode 100644 index 0000000..a7b4b71 Binary files /dev/null and b/CONTENT/BT/GAUGE/QVUL27.PCC differ diff --git a/CONTENT/BT/GAUGE/QVULT0.PCC b/CONTENT/BT/GAUGE/QVULT0.PCC new file mode 100644 index 0000000..727ef15 Binary files /dev/null and b/CONTENT/BT/GAUGE/QVULT0.PCC differ diff --git a/CONTENT/BT/GAUGE/QVULT1.PCC b/CONTENT/BT/GAUGE/QVULT1.PCC new file mode 100644 index 0000000..729c9c7 Binary files /dev/null and b/CONTENT/BT/GAUGE/QVULT1.PCC differ diff --git a/CONTENT/BT/GAUGE/QVULT2.PCC b/CONTENT/BT/GAUGE/QVULT2.PCC new file mode 100644 index 0000000..5320a42 Binary files /dev/null and b/CONTENT/BT/GAUGE/QVULT2.PCC differ diff --git a/CONTENT/BT/GAUGE/QVULT3.PCC b/CONTENT/BT/GAUGE/QVULT3.PCC new file mode 100644 index 0000000..a03918f Binary files /dev/null and b/CONTENT/BT/GAUGE/QVULT3.PCC differ diff --git a/CONTENT/BT/GAUGE/QVULT4.PCC b/CONTENT/BT/GAUGE/QVULT4.PCC new file mode 100644 index 0000000..8d3ba9d Binary files /dev/null and b/CONTENT/BT/GAUGE/QVULT4.PCC differ diff --git a/CONTENT/BT/GAUGE/QVULT5.PCC b/CONTENT/BT/GAUGE/QVULT5.PCC new file mode 100644 index 0000000..d92d7fd Binary files /dev/null and b/CONTENT/BT/GAUGE/QVULT5.PCC differ diff --git a/CONTENT/BT/GAUGE/QVULT6.PCC b/CONTENT/BT/GAUGE/QVULT6.PCC new file mode 100644 index 0000000..bc0933c Binary files /dev/null and b/CONTENT/BT/GAUGE/QVULT6.PCC differ diff --git a/CONTENT/BT/GAUGE/QVULT7.PCC b/CONTENT/BT/GAUGE/QVULT7.PCC new file mode 100644 index 0000000..3054f3a Binary files /dev/null and b/CONTENT/BT/GAUGE/QVULT7.PCC differ diff --git a/CONTENT/BT/GAUGE/RAP_GA.GIM b/CONTENT/BT/GAUGE/RAP_GA.GIM new file mode 100644 index 0000000..a692b91 --- /dev/null +++ b/CONTENT/BT/GAUGE/RAP_GA.GIM @@ -0,0 +1,21 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=1000 + +[vertices] +v0=2.5, 0, -0.6 +v1=0, 0, -3 +v2=-2.5, 0, -0.6 +v3=-2.5, 0, 0.7 +v4=2.5, 0, 0.7 +v5=-0.2, 0, -1.5 +v6=-1.5, 0, -1.5 +v7=-1.5, 0, 0.9 +v8=-0.2, 0, 0.9 + +[level0] +linelist=a_mech v0 v1 v2 v3 v4 v0 +linelist=a_mech v5 v6 v7 v8 v5 + diff --git a/CONTENT/BT/GAUGE/RESULT2.TXT b/CONTENT/BT/GAUGE/RESULT2.TXT new file mode 100644 index 0000000..052672e --- /dev/null +++ b/CONTENT/BT/GAUGE/RESULT2.TXT @@ -0,0 +1,5 @@ +BattleTech v4.10 + + +Error - Resource file btl4.res v1.0.0.0 is obsolete! + diff --git a/CONTENT/BT/GAUGE/RIVET_GA.GIM b/CONTENT/BT/GAUGE/RIVET_GA.GIM new file mode 100644 index 0000000..6383ad0 --- /dev/null +++ b/CONTENT/BT/GAUGE/RIVET_GA.GIM @@ -0,0 +1,18 @@ +# built by hand: 6-6-95 cpb + +[object] +gatfile=gauge.gat + +[lods] +level0=100000 + +[vertices] +v0=-5, 0, 5 +v1=5, 0, 5 +v2=5, 0, -5 +v3=-5, 0, -5 + +[level0] +linelist=a_incoming v0 v2 +linelist=a_incoming v1 v3 + diff --git a/CONTENT/BT/GAUGE/RK1_GA.GIM b/CONTENT/BT/GAUGE/RK1_GA.GIM new file mode 100644 index 0000000..68bcd10 --- /dev/null +++ b/CONTENT/BT/GAUGE/RK1_GA.GIM @@ -0,0 +1,38 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=1000 +level1=3000 +level2=10000 + +[vertices] +v0=-98, 0, 3 +v1=-79, 0, 6 +v2=-84, 0, -5 +v3=-95, 0, -11 +v4=91, 0, -17 +v5=49, 0, -28 +v6=16, 0, -28 +v7=-20, 0, -36 +v8=-67, 0, -18 +v9=-65, 0, -11 +v10=-49, 0, 15 +v11=-34, 0, 19 +v12=2, 0, 19 +v13=2, 0, 27 +v14=26, 0, 37 +v15=99, 0, -3 + +[level0] +linelist=a_rock v0 v1 v2 v3 v0 +linelist=a_rock v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v4 + +[level1] +linelist=a_rock v0 v1 v2 v3 v0 +linelist=a_rock v4 v7 v8 v10 v14 v15 v4 + +[level2] +linelist=a_rock v0 v1 v3 v0 +linelist=a_rock v15 v7 v8 v10 v14 v15 + diff --git a/CONTENT/BT/GAUGE/RK2_GA.GIM b/CONTENT/BT/GAUGE/RK2_GA.GIM new file mode 100644 index 0000000..7f0027a --- /dev/null +++ b/CONTENT/BT/GAUGE/RK2_GA.GIM @@ -0,0 +1,22 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=3000 +level1=10000 + +[vertices] +v0=-51, 0, -12 +v1=-47, 0, 23 +v2=-22, 0, 33 +v3=50, 0, -8 +v4=43, 0, -22 +v5=1, 0, -33 +v6=-29, 0, -33 + +[level0] +linelist=a_rock v0 v1 v2 v3 v4 v5 v6 v0 + +[level1] +linelist=a_rock v1 v2 v3 v4 v6 v1 + diff --git a/CONTENT/BT/GAUGE/RK3_GA.GIM b/CONTENT/BT/GAUGE/RK3_GA.GIM new file mode 100644 index 0000000..7e7a2e4 --- /dev/null +++ b/CONTENT/BT/GAUGE/RK3_GA.GIM @@ -0,0 +1,23 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=3000 +level1=10000 + +[vertices] +v0=-40, 0, -9 +v1=-39, 0, -3 +v2=-21, 0, 23 +v3=-7, 0, 27 +v4=26, 0, 27 +v5=39, 0, 13 +v6=39, 0, -22 +v7=7, 0, -28 + +[level0] +linelist=a_rock v0 v1 v2 v3 v4 v5 v6 v7 v0 + +[level1] +linelist=a_rock v0 v2 v4 v6 v7 v0 + diff --git a/CONTENT/BT/GAUGE/RK4_GA.GIM b/CONTENT/BT/GAUGE/RK4_GA.GIM new file mode 100644 index 0000000..581b1c4 --- /dev/null +++ b/CONTENT/BT/GAUGE/RK4_GA.GIM @@ -0,0 +1,22 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=3000 +level1=10000 + +[vertices] +v0=-24, 0, 0 +v1=-18, 0, 11 +v2=14, 0, 12 +v3=23, 0, 8 +v4=22, 0, -2 +v5=10, 0, -11 +v6=-6, 0, -12 + +[level0] +linelist=a_rock v0 v1 v2 v3 v4 v5 v6 v0 + +[level1] +linelist=a_rock v0 v1 v2 v3 v4 v6 v0 + diff --git a/CONTENT/BT/GAUGE/RK5_GA.GIM b/CONTENT/BT/GAUGE/RK5_GA.GIM new file mode 100644 index 0000000..c660868 --- /dev/null +++ b/CONTENT/BT/GAUGE/RK5_GA.GIM @@ -0,0 +1,25 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=3000 +level1=10000 + +[vertices] +v0=-10.5, 0, -6.5 +v1=-9, 0, 1 +v2=-2, 0, 3 +v3=-1.5, 0, 7.5 +v4=4, 0, 8 +v5=10, 0, 4 +v6=8.5, 0, -3.5 +v7=1.5, 0, -6 +v8=-1, 0, -5.5 +v9=-3.5, 0, -8 + +[level0] +linelist=a_rock v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v0 + +[level1] +linelist=a_rock v0 v1 v2 v3 v4 v5 v6 v9 v0 + diff --git a/CONTENT/BT/GAUGE/RK6_GA.GIM b/CONTENT/BT/GAUGE/RK6_GA.GIM new file mode 100644 index 0000000..58116ac --- /dev/null +++ b/CONTENT/BT/GAUGE/RK6_GA.GIM @@ -0,0 +1,26 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=3000 +level1=10000 + +[vertices] +v0=-16, 0, -20 +v1=-18.5, 0, -13.5 +v2=-24, 0, -7 +v3=-19.5, 0, 15 +v4=-7, 0, 24.5 +v5=19.5, 0, 15.5 +v6=23.5, 0, -0.5 +v7=21.5, 0, -7 +v8=12.5, 0, -11 +v9=12.5, 0, -18 +v10=2.5, 0, -24 + +[level0] +linelist=a_rock v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v0 + +[level1] +linelist=a_rock v0 v2 v3 v4 v5 v7 v10 v0 + diff --git a/CONTENT/BT/GAUGE/RK7_GA.GIM b/CONTENT/BT/GAUGE/RK7_GA.GIM new file mode 100644 index 0000000..ff9e7be --- /dev/null +++ b/CONTENT/BT/GAUGE/RK7_GA.GIM @@ -0,0 +1,24 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=3000 +level1=10000 + +[vertices] +v0=-10, 0, -13 +v1=-13.5, 0, -2 +v2=-12.5, 0, 6 +v3=-6.5, 0, 13.5 +v4=0.5, 0, 12 +v5=2.5, 0, 5 +v6=9, 0, 7 +v7=13.5, 0, -0.5 +v8=5, 0, -13.5 + +[level0] +linelist=a_rock v0 v1 v2 v3 v4 v5 v6 v7 v8 v0 + +[level1] +linelist=a_rock v0 v2 v3 v4 v5 v6 v7 v8 v0 + diff --git a/CONTENT/BT/GAUGE/ROMMEL.GIM b/CONTENT/BT/GAUGE/ROMMEL.GIM new file mode 100644 index 0000000..eac4ed1 --- /dev/null +++ b/CONTENT/BT/GAUGE/ROMMEL.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=-3.5, 0, -3 +v1=3.5, 0, -3 +v2=3.5, 0, 4 +v3=-3.5, 0, 4 + +[level0] +linelist=a_vehicle v0 v1 v2 v3 v0 + diff --git a/CONTENT/BT/GAUGE/SB1E_GA.GIM b/CONTENT/BT/GAUGE/SB1E_GA.GIM new file mode 100644 index 0000000..5bb815c --- /dev/null +++ b/CONTENT/BT/GAUGE/SB1E_GA.GIM @@ -0,0 +1,13 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=100000 + +[vertices] +v0=0, 0, -125 +v1=0, 0, 125 + +[level0] +linelist=a_rock v0 v1 + diff --git a/CONTENT/BT/GAUGE/SB1N_GA.GIM b/CONTENT/BT/GAUGE/SB1N_GA.GIM new file mode 100644 index 0000000..f398126 --- /dev/null +++ b/CONTENT/BT/GAUGE/SB1N_GA.GIM @@ -0,0 +1,13 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=100000 + +[vertices] +v0=125, 0, 0 +v1=-125, 0, 0 + +[level0] +linelist=a_rock v0 v1 + diff --git a/CONTENT/BT/GAUGE/SB1S_GA.GIM b/CONTENT/BT/GAUGE/SB1S_GA.GIM new file mode 100644 index 0000000..f398126 --- /dev/null +++ b/CONTENT/BT/GAUGE/SB1S_GA.GIM @@ -0,0 +1,13 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=100000 + +[vertices] +v0=125, 0, 0 +v1=-125, 0, 0 + +[level0] +linelist=a_rock v0 v1 + diff --git a/CONTENT/BT/GAUGE/SB1W_GA.GIM b/CONTENT/BT/GAUGE/SB1W_GA.GIM new file mode 100644 index 0000000..5bb815c --- /dev/null +++ b/CONTENT/BT/GAUGE/SB1W_GA.GIM @@ -0,0 +1,13 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=100000 + +[vertices] +v0=0, 0, -125 +v1=0, 0, 125 + +[level0] +linelist=a_rock v0 v1 + diff --git a/CONTENT/BT/GAUGE/SB3S_GA.GIM b/CONTENT/BT/GAUGE/SB3S_GA.GIM new file mode 100644 index 0000000..f398126 --- /dev/null +++ b/CONTENT/BT/GAUGE/SB3S_GA.GIM @@ -0,0 +1,13 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=100000 + +[vertices] +v0=125, 0, 0 +v1=-125, 0, 0 + +[level0] +linelist=a_rock v0 v1 + diff --git a/CONTENT/BT/GAUGE/SDSPMOD.PCC b/CONTENT/BT/GAUGE/SDSPMOD.PCC new file mode 100644 index 0000000..5fcff9a Binary files /dev/null and b/CONTENT/BT/GAUGE/SDSPMOD.PCC differ diff --git a/CONTENT/BT/GAUGE/SEMI.GIM b/CONTENT/BT/GAUGE/SEMI.GIM new file mode 100644 index 0000000..8871e59 --- /dev/null +++ b/CONTENT/BT/GAUGE/SEMI.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=-1.5, 0, -3 +v1=1.5, 0, -3 +v2=1.5, 0, 3 +v3=-1.5, 0, 3 + +[level0] +linelist=a_vehicle v0 v1 v2 v3 v0 + diff --git a/CONTENT/BT/GAUGE/SEMIRIG.GIM b/CONTENT/BT/GAUGE/SEMIRIG.GIM new file mode 100644 index 0000000..a3fc17e --- /dev/null +++ b/CONTENT/BT/GAUGE/SEMIRIG.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=-1.5, 0, 0.5 +v1=1.5, 0, 0.5 +v2=1.5, 0, 9 +v3=-1.5, 0, 9 + +[level0] +linelist=a_vehicle v0 v1 v2 v3 v0 + diff --git a/CONTENT/BT/GAUGE/SGEN1.PCC b/CONTENT/BT/GAUGE/SGEN1.PCC new file mode 100644 index 0000000..b971303 Binary files /dev/null and b/CONTENT/BT/GAUGE/SGEN1.PCC differ diff --git a/CONTENT/BT/GAUGE/SGEN2.PCC b/CONTENT/BT/GAUGE/SGEN2.PCC new file mode 100644 index 0000000..752e044 Binary files /dev/null and b/CONTENT/BT/GAUGE/SGEN2.PCC differ diff --git a/CONTENT/BT/GAUGE/SGEN3.PCC b/CONTENT/BT/GAUGE/SGEN3.PCC new file mode 100644 index 0000000..9ce35f1 Binary files /dev/null and b/CONTENT/BT/GAUGE/SGEN3.PCC differ diff --git a/CONTENT/BT/GAUGE/SGEN4.PCC b/CONTENT/BT/GAUGE/SGEN4.PCC new file mode 100644 index 0000000..026d60c Binary files /dev/null and b/CONTENT/BT/GAUGE/SGEN4.PCC differ diff --git a/CONTENT/BT/GAUGE/SGEN5.PCC b/CONTENT/BT/GAUGE/SGEN5.PCC new file mode 100644 index 0000000..0621b49 Binary files /dev/null and b/CONTENT/BT/GAUGE/SGEN5.PCC differ diff --git a/CONTENT/BT/GAUGE/SGEN6.PCC b/CONTENT/BT/GAUGE/SGEN6.PCC new file mode 100644 index 0000000..72f1bbe Binary files /dev/null and b/CONTENT/BT/GAUGE/SGEN6.PCC differ diff --git a/CONTENT/BT/GAUGE/SGENA.PCC b/CONTENT/BT/GAUGE/SGENA.PCC new file mode 100644 index 0000000..e123a5b Binary files /dev/null and b/CONTENT/BT/GAUGE/SGENA.PCC differ diff --git a/CONTENT/BT/GAUGE/SGENB.PCC b/CONTENT/BT/GAUGE/SGENB.PCC new file mode 100644 index 0000000..46b7202 Binary files /dev/null and b/CONTENT/BT/GAUGE/SGENB.PCC differ diff --git a/CONTENT/BT/GAUGE/SGENBG.PCC b/CONTENT/BT/GAUGE/SGENBG.PCC new file mode 100644 index 0000000..9297d58 Binary files /dev/null and b/CONTENT/BT/GAUGE/SGENBG.PCC differ diff --git a/CONTENT/BT/GAUGE/SGENC.PCC b/CONTENT/BT/GAUGE/SGENC.PCC new file mode 100644 index 0000000..565c3bf Binary files /dev/null and b/CONTENT/BT/GAUGE/SGENC.PCC differ diff --git a/CONTENT/BT/GAUGE/SGEND.PCC b/CONTENT/BT/GAUGE/SGEND.PCC new file mode 100644 index 0000000..050a43a Binary files /dev/null and b/CONTENT/BT/GAUGE/SGEND.PCC differ diff --git a/CONTENT/BT/GAUGE/SGENLEAK.PCC b/CONTENT/BT/GAUGE/SGENLEAK.PCC new file mode 100644 index 0000000..6316a05 Binary files /dev/null and b/CONTENT/BT/GAUGE/SGENLEAK.PCC differ diff --git a/CONTENT/BT/GAUGE/SGENTEMP.PCC b/CONTENT/BT/GAUGE/SGENTEMP.PCC new file mode 100644 index 0000000..582c83c Binary files /dev/null and b/CONTENT/BT/GAUGE/SGENTEMP.PCC differ diff --git a/CONTENT/BT/GAUGE/SGENVOLT.PCC b/CONTENT/BT/GAUGE/SGENVOLT.PCC new file mode 100644 index 0000000..c05da3f Binary files /dev/null and b/CONTENT/BT/GAUGE/SGENVOLT.PCC differ diff --git a/CONTENT/BT/GAUGE/SIZUMIN.PCC b/CONTENT/BT/GAUGE/SIZUMIN.PCC new file mode 100644 index 0000000..2daff25 Binary files /dev/null and b/CONTENT/BT/GAUGE/SIZUMIN.PCC differ diff --git a/CONTENT/BT/GAUGE/SIZUMOUT.PCC b/CONTENT/BT/GAUGE/SIZUMOUT.PCC new file mode 100644 index 0000000..293e268 Binary files /dev/null and b/CONTENT/BT/GAUGE/SIZUMOUT.PCC differ diff --git a/CONTENT/BT/GAUGE/SMLFONT.PCC b/CONTENT/BT/GAUGE/SMLFONT.PCC new file mode 100644 index 0000000..c0ebd7d Binary files /dev/null and b/CONTENT/BT/GAUGE/SMLFONT.PCC differ diff --git a/CONTENT/BT/GAUGE/SND2DAMA.PCC b/CONTENT/BT/GAUGE/SND2DAMA.PCC new file mode 100644 index 0000000..4fcefbb Binary files /dev/null and b/CONTENT/BT/GAUGE/SND2DAMA.PCC differ diff --git a/CONTENT/BT/GAUGE/SND2_MR.PCC b/CONTENT/BT/GAUGE/SND2_MR.PCC new file mode 100644 index 0000000..c629c38 Binary files /dev/null and b/CONTENT/BT/GAUGE/SND2_MR.PCC differ diff --git a/CONTENT/BT/GAUGE/SR1E_GA.GIM b/CONTENT/BT/GAUGE/SR1E_GA.GIM new file mode 100644 index 0000000..5bb815c --- /dev/null +++ b/CONTENT/BT/GAUGE/SR1E_GA.GIM @@ -0,0 +1,13 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=100000 + +[vertices] +v0=0, 0, -125 +v1=0, 0, 125 + +[level0] +linelist=a_rock v0 v1 + diff --git a/CONTENT/BT/GAUGE/SR1N_GA.GIM b/CONTENT/BT/GAUGE/SR1N_GA.GIM new file mode 100644 index 0000000..f398126 --- /dev/null +++ b/CONTENT/BT/GAUGE/SR1N_GA.GIM @@ -0,0 +1,13 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=100000 + +[vertices] +v0=125, 0, 0 +v1=-125, 0, 0 + +[level0] +linelist=a_rock v0 v1 + diff --git a/CONTENT/BT/GAUGE/SR1S_GA.GIM b/CONTENT/BT/GAUGE/SR1S_GA.GIM new file mode 100644 index 0000000..f398126 --- /dev/null +++ b/CONTENT/BT/GAUGE/SR1S_GA.GIM @@ -0,0 +1,13 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=100000 + +[vertices] +v0=125, 0, 0 +v1=-125, 0, 0 + +[level0] +linelist=a_rock v0 v1 + diff --git a/CONTENT/BT/GAUGE/SR1W_GA.GIM b/CONTENT/BT/GAUGE/SR1W_GA.GIM new file mode 100644 index 0000000..5bb815c --- /dev/null +++ b/CONTENT/BT/GAUGE/SR1W_GA.GIM @@ -0,0 +1,13 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=100000 + +[vertices] +v0=0, 0, -125 +v1=0, 0, 125 + +[level0] +linelist=a_rock v0 v1 + diff --git a/CONTENT/BT/GAUGE/SRMCARRY.GIM b/CONTENT/BT/GAUGE/SRMCARRY.GIM new file mode 100644 index 0000000..48dea8c --- /dev/null +++ b/CONTENT/BT/GAUGE/SRMCARRY.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=-2.5, 0, -4.5 +v1=2.5, 0, -4.5 +v2=2.5, 0, 5.5 +v3=-2.5, 0, 5.5 + +[level0] +linelist=a_vehicle v0 v1 v2 v3 v0 + diff --git a/CONTENT/BT/GAUGE/ST1_GA.GIM b/CONTENT/BT/GAUGE/ST1_GA.GIM new file mode 100644 index 0000000..e014970 --- /dev/null +++ b/CONTENT/BT/GAUGE/ST1_GA.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=100000 + +[vertices] +v0=-125, 0, 125 +v1=-125, 0, -125 +v2=125, 0, -125 +v3=125, 0, 125 + +[level0] +linelist=a_rock v0 v1 v2 v3 v0 + diff --git a/CONTENT/BT/GAUGE/STB_GA.GIM b/CONTENT/BT/GAUGE/STB_GA.GIM new file mode 100644 index 0000000..4dfe0e4 --- /dev/null +++ b/CONTENT/BT/GAUGE/STB_GA.GIM @@ -0,0 +1,18 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=1000 + +[vertices] +v0=26, 0, -13 +v1=26, 0, 0 +v2=20, 0, 6 +v3=20, 0, 20 +v4=-20, 0, 20 +v5=-20, 0, -20 +v6=20, 0, -20 + +[level0] +linelist=a_arenablock v0 v1 v2 v3 v4 v5 v6 v0 + diff --git a/CONTENT/BT/GAUGE/STF_GA.GIM b/CONTENT/BT/GAUGE/STF_GA.GIM new file mode 100644 index 0000000..80bcbf5 --- /dev/null +++ b/CONTENT/BT/GAUGE/STF_GA.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=1000 + +[vertices] +v0=50, 0, 50 +v1=-50, 0, 50 +v2=-50, 0, -50 +v3=50, 0, -50 + +[level0] +linelist=a_arenahole v0 v1 v2 v3 v0 + diff --git a/CONTENT/BT/GAUGE/STH_GA.GIM b/CONTENT/BT/GAUGE/STH_GA.GIM new file mode 100644 index 0000000..1b46f23 --- /dev/null +++ b/CONTENT/BT/GAUGE/STH_GA.GIM @@ -0,0 +1,27 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=100000 + +[vertices] +v0=-80, 0, 10 +v1=-50, 0, 40 +v2=-5, 0, 40 +v3=-5, 0, 110 +v4=5, 0, 110 +v5=5, 0, 40 +v6=50, 0, 40 +v7=80, 0, 10 +v8=310, 0, 10 +v9=310, 0, 5 +v10=80, 0, 5 +v11=80, 0, -40 +v12=-80, 0, -40 +v13=-80, 0, 5 +v14=-315, 0, 5 +v15=-315, 0, 10 + +[level0] +linelist=a_arenawall v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v0 + diff --git a/CONTENT/BT/GAUGE/STICRIT.PCC b/CONTENT/BT/GAUGE/STICRIT.PCC new file mode 100644 index 0000000..c134bee Binary files /dev/null and b/CONTENT/BT/GAUGE/STICRIT.PCC differ diff --git a/CONTENT/BT/GAUGE/STIHEAT.PCC b/CONTENT/BT/GAUGE/STIHEAT.PCC new file mode 100644 index 0000000..b57866f Binary files /dev/null and b/CONTENT/BT/GAUGE/STIHEAT.PCC differ diff --git a/CONTENT/BT/GAUGE/STIHT.PCC b/CONTENT/BT/GAUGE/STIHT.PCC new file mode 100644 index 0000000..2062b7e Binary files /dev/null and b/CONTENT/BT/GAUGE/STIHT.PCC differ diff --git a/CONTENT/BT/GAUGE/STIMFD.PCC b/CONTENT/BT/GAUGE/STIMFD.PCC new file mode 100644 index 0000000..64471ce Binary files /dev/null and b/CONTENT/BT/GAUGE/STIMFD.PCC differ diff --git a/CONTENT/BT/GAUGE/STI_GA.GIM b/CONTENT/BT/GAUGE/STI_GA.GIM new file mode 100644 index 0000000..a692b91 --- /dev/null +++ b/CONTENT/BT/GAUGE/STI_GA.GIM @@ -0,0 +1,21 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=1000 + +[vertices] +v0=2.5, 0, -0.6 +v1=0, 0, -3 +v2=-2.5, 0, -0.6 +v3=-2.5, 0, 0.7 +v4=2.5, 0, 0.7 +v5=-0.2, 0, -1.5 +v6=-1.5, 0, -1.5 +v7=-1.5, 0, 0.9 +v8=-0.2, 0, 0.9 + +[level0] +linelist=a_mech v0 v1 v2 v3 v4 v0 +linelist=a_mech v5 v6 v7 v8 v5 + diff --git a/CONTENT/BT/GAUGE/STRIKER.GIM b/CONTENT/BT/GAUGE/STRIKER.GIM new file mode 100644 index 0000000..69ac797 --- /dev/null +++ b/CONTENT/BT/GAUGE/STRIKER.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=-2, 0, -8.5 +v1=2, 0, -8.5 +v2=2, 0, 3.5 +v3=-2, 0, 3.5 + +[level0] +linelist=a_vehicle v0 v1 v2 v3 v0 + diff --git a/CONTENT/BT/GAUGE/STS_GA.GIM b/CONTENT/BT/GAUGE/STS_GA.GIM new file mode 100644 index 0000000..7303447 --- /dev/null +++ b/CONTENT/BT/GAUGE/STS_GA.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=100000 + +[vertices] +v0=-40, 0, -5 +v1=5, 0, 40 +v2=85, 0, 40 +v3=-40, 0, -85 + +[level0] +linelist=a_arenawall v0 v1 v2 v3 v0 + diff --git a/CONTENT/BT/GAUGE/STT_GA.GIM b/CONTENT/BT/GAUGE/STT_GA.GIM new file mode 100644 index 0000000..1b46f23 --- /dev/null +++ b/CONTENT/BT/GAUGE/STT_GA.GIM @@ -0,0 +1,27 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=100000 + +[vertices] +v0=-80, 0, 10 +v1=-50, 0, 40 +v2=-5, 0, 40 +v3=-5, 0, 110 +v4=5, 0, 110 +v5=5, 0, 40 +v6=50, 0, 40 +v7=80, 0, 10 +v8=310, 0, 10 +v9=310, 0, 5 +v10=80, 0, 5 +v11=80, 0, -40 +v12=-80, 0, -40 +v13=-80, 0, 5 +v14=-315, 0, 5 +v15=-315, 0, 10 + +[level0] +linelist=a_arenawall v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v0 + diff --git a/CONTENT/BT/GAUGE/SVISION.PCC b/CONTENT/BT/GAUGE/SVISION.PCC new file mode 100644 index 0000000..4c54d54 Binary files /dev/null and b/CONTENT/BT/GAUGE/SVISION.PCC differ diff --git a/CONTENT/BT/GAUGE/SW1_GA.GIM b/CONTENT/BT/GAUGE/SW1_GA.GIM new file mode 100644 index 0000000..7550ec2 --- /dev/null +++ b/CONTENT/BT/GAUGE/SW1_GA.GIM @@ -0,0 +1,17 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=1000 + +[vertices] +v0=25, 0, -25 +v1=-25, 0, -25 +v2=-25, 0, 25 +v3=-21, 0, 25 +v4=-21, 0, -21 +v5=25, 0, -21 + +[level0] +linelist=a_arenabarrier v0 v1 v2 v3 v4 v5 v0 + diff --git a/CONTENT/BT/GAUGE/SW2_GA.GIM b/CONTENT/BT/GAUGE/SW2_GA.GIM new file mode 100644 index 0000000..6c82f14 --- /dev/null +++ b/CONTENT/BT/GAUGE/SW2_GA.GIM @@ -0,0 +1,20 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=1000 + +[vertices] +v0=-21, 0, 2 +v1=25, 0, 2 +v2=25, 0, -2 +v3=-21, 0, -2 +v4=-21, 0, 25 +v5=-21, 0, -25 +v6=-25, 0, -25 +v7=-25, 0, 25 + +[level0] +linelist=a_arenabarrier v0 v1 v2 v3 v0 +linelist=a_arenabarrier v4 v5 v6 v7 v4 + diff --git a/CONTENT/BT/GAUGE/SW3_GA.GIM b/CONTENT/BT/GAUGE/SW3_GA.GIM new file mode 100644 index 0000000..51d94b8 --- /dev/null +++ b/CONTENT/BT/GAUGE/SW3_GA.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=1000 + +[vertices] +v0=25, 0, -2 +v1=-25, 0, -2 +v2=-25, 0, 2 +v3=25, 0, 2 + +[level0] +linelist=a_arenabarrier v0 v1 v2 v3 v0 + diff --git a/CONTENT/BT/GAUGE/SW4_GA.GIM b/CONTENT/BT/GAUGE/SW4_GA.GIM new file mode 100644 index 0000000..b5d0fc7 --- /dev/null +++ b/CONTENT/BT/GAUGE/SW4_GA.GIM @@ -0,0 +1,17 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=1000 + +[vertices] +v0=25, 0, -25 +v1=25, 0, -21 +v2=-21, 0, -21 +v3=-21, 0, 25 +v4=-25, 0, 25 +v5=-25, 0, -25 + +[level0] +linelist=a_arenabarrier v0 v1 v2 v3 v4 v5 v0 v0 + diff --git a/CONTENT/BT/GAUGE/SW5_GA.GIM b/CONTENT/BT/GAUGE/SW5_GA.GIM new file mode 100644 index 0000000..6c82f14 --- /dev/null +++ b/CONTENT/BT/GAUGE/SW5_GA.GIM @@ -0,0 +1,20 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=1000 + +[vertices] +v0=-21, 0, 2 +v1=25, 0, 2 +v2=25, 0, -2 +v3=-21, 0, -2 +v4=-21, 0, 25 +v5=-21, 0, -25 +v6=-25, 0, -25 +v7=-25, 0, 25 + +[level0] +linelist=a_arenabarrier v0 v1 v2 v3 v0 +linelist=a_arenabarrier v4 v5 v6 v7 v4 + diff --git a/CONTENT/BT/GAUGE/SW6_GA.GIM b/CONTENT/BT/GAUGE/SW6_GA.GIM new file mode 100644 index 0000000..94be01e --- /dev/null +++ b/CONTENT/BT/GAUGE/SW6_GA.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=1000 + +[vertices] +v0=-25, 0, 2 +v1=25, 0, 2 +v2=25, 0, -2 +v3=-25, 0, -2 + +[level0] +linelist=a_arenabarrier v0 v1 v2 v3 v0 + diff --git a/CONTENT/BT/GAUGE/SWIFTWND.GIM b/CONTENT/BT/GAUGE/SWIFTWND.GIM new file mode 100644 index 0000000..8cfd08b --- /dev/null +++ b/CONTENT/BT/GAUGE/SWIFTWND.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=-2, 0, -3.5 +v1=2, 0, -3.5 +v2=2, 0, 3.5 +v3=-2, 0, 3.5 + +[level0] +linelist=a_vehicle v0 v1 v2 v3 v0 + diff --git a/CONTENT/BT/GAUGE/THOR.PCX b/CONTENT/BT/GAUGE/THOR.PCX new file mode 100644 index 0000000..d1dd9d5 Binary files /dev/null and b/CONTENT/BT/GAUGE/THOR.PCX differ diff --git a/CONTENT/BT/GAUGE/THORHT.PCC b/CONTENT/BT/GAUGE/THORHT.PCC new file mode 100644 index 0000000..d91136b Binary files /dev/null and b/CONTENT/BT/GAUGE/THORHT.PCC differ diff --git a/CONTENT/BT/GAUGE/THOR_GA.GIM b/CONTENT/BT/GAUGE/THOR_GA.GIM new file mode 100644 index 0000000..a692b91 --- /dev/null +++ b/CONTENT/BT/GAUGE/THOR_GA.GIM @@ -0,0 +1,21 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=1000 + +[vertices] +v0=2.5, 0, -0.6 +v1=0, 0, -3 +v2=-2.5, 0, -0.6 +v3=-2.5, 0, 0.7 +v4=2.5, 0, 0.7 +v5=-0.2, 0, -1.5 +v6=-1.5, 0, -1.5 +v7=-1.5, 0, 0.9 +v8=-0.2, 0, 0.9 + +[level0] +linelist=a_mech v0 v1 v2 v3 v4 v0 +linelist=a_mech v5 v6 v7 v8 v5 + diff --git a/CONTENT/BT/GAUGE/TINYFONT.PCC b/CONTENT/BT/GAUGE/TINYFONT.PCC new file mode 100644 index 0000000..6c9e042 Binary files /dev/null and b/CONTENT/BT/GAUGE/TINYFONT.PCC differ diff --git a/CONTENT/BT/GAUGE/TMC1_GA.GIM b/CONTENT/BT/GAUGE/TMC1_GA.GIM new file mode 100644 index 0000000..3a7f5be --- /dev/null +++ b/CONTENT/BT/GAUGE/TMC1_GA.GIM @@ -0,0 +1,25 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=-24.9, 0, -83.1 +v1=-24.9, 0, -42.9 +v2=-38.9, 0, -42.9 +v3=-38.9, 0, 5 +v4=-77.1, 0, 5 +v5=-77, 0, -83.1 +v6=-8.1, 0, 90.1 +v7=70, 0, 90.1 +v8=70, 0, 45.1 +v9=57.1, 0, 32.2 +v10=36.9, 0, 32.2 +v11=23.2, 0, 45.1 +v12=-8.1, 0, 45.1 + +[level0] +linelist=a_tarmac v0 v1 v2 v3 v4 v5 v0 +linelist=a_tarmac v6 v7 v8 v9 v10 v11 v12 v6 + diff --git a/CONTENT/BT/GAUGE/TMC2_GA.GIM b/CONTENT/BT/GAUGE/TMC2_GA.GIM new file mode 100644 index 0000000..d3119e9 --- /dev/null +++ b/CONTENT/BT/GAUGE/TMC2_GA.GIM @@ -0,0 +1,17 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=-10, 0, -40 +v1=-10, 0, -25.7 +v2=-29.5, 0, -16 +v3=-29.5, 0, 8 +v4=40, 0, 8 +v5=40, 0, -40 + +[level0] +linelist=a_tarmac v0 v1 v2 v3 v4 v5 v0 + diff --git a/CONTENT/BT/GAUGE/TNT_GA.GIM b/CONTENT/BT/GAUGE/TNT_GA.GIM new file mode 100644 index 0000000..69ff8a8 --- /dev/null +++ b/CONTENT/BT/GAUGE/TNT_GA.GIM @@ -0,0 +1,27 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=3000 +level1=10000 + +[vertices] +v0=-6.1, 0, -2.9 +v1=-6.1, 0, 3 +v2=-4.7, 0, 4.3 +v3=4.7, 0, 4.3 +v4=6.1, 0, 3 +v5=6.1, 0, -2.9 +v6=4.7, 0, -4.2 +v7=-4.7, 0, -4.2 +v8=-6.1, 0, 4.3 +v9=6.1, 0, 4.3 +v10=6.1, 0, -4.2 +v11=-6.1, 0, -4.2 + +[level0] +linelist=a_tent v0 v1 v2 v3 v4 v5 v6 v7 v0 + +[level1] +linelist=a_tent v8 v9 v10 v11 v8 + diff --git a/CONTENT/BT/GAUGE/TREE_GA.GIM b/CONTENT/BT/GAUGE/TREE_GA.GIM new file mode 100644 index 0000000..407e290 --- /dev/null +++ b/CONTENT/BT/GAUGE/TREE_GA.GIM @@ -0,0 +1,19 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=1000 + +[vertices] +v0=-5, 0, 5 +v1=5, 0, 5 +v2=5, 0, -5 +v3=-5, 0, -5 +v4=-5, 0, 0 +v5=5, 0, 0 +v6=0, 0, -5 +v7=0, 0, 5 + +[level0] +linelist=a_tree v0 v2 +linelist=a_tree v1 v3 diff --git a/CONTENT/BT/GAUGE/TWR_GA.GIM b/CONTENT/BT/GAUGE/TWR_GA.GIM new file mode 100644 index 0000000..8dae702 --- /dev/null +++ b/CONTENT/BT/GAUGE/TWR_GA.GIM @@ -0,0 +1,28 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=3000 +level1=10000 + +[vertices] +v0=-2, 0, -1 +v1=-2, 0, 1 +v2=-1, 0, 2 +v3=1, 0, 2 +v4=2, 0, 1 +v5=2, 0, -1 +v6=1, 0, -2 +v7=-1, 0, -2 +v8=2, 0, -2 +v9=2, 0, 2 +v10=-2, 0, 2 +v11=-2, 0, -2 + +[level0] +linelist=a_twr v0 v1 v2 v3 v4 v5 v6 v7 v0 +linelist=a_tarmac v8 v9 v10 v11 v8 + +[level1] +linelist=a_tarmac v8 v9 v10 v11 v8 + diff --git a/CONTENT/BT/GAUGE/VULTHT.PCC b/CONTENT/BT/GAUGE/VULTHT.PCC new file mode 100644 index 0000000..6d990ac Binary files /dev/null and b/CONTENT/BT/GAUGE/VULTHT.PCC differ diff --git a/CONTENT/BT/GAUGE/WALL1_GA.GIM b/CONTENT/BT/GAUGE/WALL1_GA.GIM new file mode 100644 index 0000000..0080f13 --- /dev/null +++ b/CONTENT/BT/GAUGE/WALL1_GA.GIM @@ -0,0 +1,16 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=38, 0, 41 +v1=23, 0, 32 +v2=11, 0, 15 +v3=-10, 0, -6 +v4=-15, 0, -20 +v5=-50, 0, -43 + +[level0] +linelist=a_rock v0 v1 v2 v3 v4 v5 diff --git a/CONTENT/BT/GAUGE/WALL2_GA.GIM b/CONTENT/BT/GAUGE/WALL2_GA.GIM new file mode 100644 index 0000000..5a0cd44 --- /dev/null +++ b/CONTENT/BT/GAUGE/WALL2_GA.GIM @@ -0,0 +1,16 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=-52,0, -54 +v1=-41, 0, -38 +v2=-34, 0, -22 +v3=-8, 0, 1 +v4=2, 0, 16 +v5=32, 0, 39 + +[level0] +linelist=a_rock v0 v1 v2 v3 v4 v5 diff --git a/CONTENT/BT/GAUGE/WALL3_GA.GIM b/CONTENT/BT/GAUGE/WALL3_GA.GIM new file mode 100644 index 0000000..df01e34 --- /dev/null +++ b/CONTENT/BT/GAUGE/WALL3_GA.GIM @@ -0,0 +1,25 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=144, 0, 3 +v1=132, 0, 3 +v2=120, 0, 0 +v3=97, 0, 10 +v4=82, 0, 7 +v5=66, 0, -2 +v6=50, 0, -2 +v7=27, 0, -5 +v8=3, 0, -5 +v9=-12, 0, -2 +v10=-32, 0, 7 +v11=-61, 0, 2 +v12=-68, 0, 2 +v13=-98, 0, 16 +v14=-134, 0, 4 + +[level0] +linelist=a_rock v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 \ No newline at end of file diff --git a/CONTENT/BT/GAUGE/WST_GA.GIM b/CONTENT/BT/GAUGE/WST_GA.GIM new file mode 100644 index 0000000..2f49f58 --- /dev/null +++ b/CONTENT/BT/GAUGE/WST_GA.GIM @@ -0,0 +1,27 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=3000 +level1=10000 + +[vertices] +v0=2, 0, -2.5 +v1=2, 0, -1 +v2=4, 0, -1 +v3=4, 0, 1 +v4=2, 0, 1 +v5=2, 0, 2.5 +v6=0.5, 0, 3.3 +v7=-0.5, 0, 3.3 +v8=-2, 0, 2.5 +v9=-2, 0, -2.5 +v10=2, 0, 3.3 +v11=-2, 0, 3.3 + +[level0] +linelist=a_wthrstation v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v0 + +[level1] +linelist=a_wthrstation v0 v10 v11 v9 v0 + diff --git a/CONTENT/BT/GAUGE/X_GA.GIM b/CONTENT/BT/GAUGE/X_GA.GIM new file mode 100644 index 0000000..f2b48c6 --- /dev/null +++ b/CONTENT/BT/GAUGE/X_GA.GIM @@ -0,0 +1,18 @@ +# built by hand: 6-6-95 cpb + +[object] +gatfile=gauge.gat + +[lods] +level0=100000 + +[vertices] +v0=-5, 0, 5 +v1=5, 0, 5 +v2=5, 0, -5 +v3=-5, 0, -5 + +[level0] +linelist=a_rock v0 v2 +linelist=a_rock v1 v3 + diff --git a/CONTENT/BT/GO.BAT b/CONTENT/BT/GO.BAT new file mode 100644 index 0000000..3fd6bea --- /dev/null +++ b/CONTENT/BT/GO.BAT @@ -0,0 +1 @@ +btl4opt.exe -egg test.egg > result2.txt \ No newline at end of file diff --git a/CONTENT/BT/JOYSTICK.INI b/CONTENT/BT/JOYSTICK.INI new file mode 100644 index 0000000..caf1d3b --- /dev/null +++ b/CONTENT/BT/JOYSTICK.INI @@ -0,0 +1,587 @@ +[JoystickX] +high=309 +center=209 +low=109 +[JoystickY] +high=100 +center=0 +low=-100 +[operator] +time=Wed Oct 25 14:44:38 2000 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/CONTENT/BT/LAST.EGG b/CONTENT/BT/LAST.EGG new file mode 100644 index 0000000..ecf25f7 --- /dev/null +++ b/CONTENT/BT/LAST.EGG @@ -0,0 +1,229 @@ +[mission] +adventure=BattleTech +map=grass +scenario=freeforall +time=day +weather=clear +temperature=27 +length=600 +[ordinals] +bitmap=Ordinal::BitMap::1 +bitmap=Ordinal::BitMap::2 +bitmap=Ordinal::BitMap::3 +bitmap=Ordinal::BitMap::4 +[Ordinal::BitMap::1] +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=000038000003C000001FF00000000F00 +bitmap=0000F8000003C000003FF80000000F00 +bitmap=0001F8000003C00000707C0000000F00 +bitmap=0001F8000003C00000603C0000000F00 +bitmap=00007801FC0FF00000003C3DF807FF00 +bitmap=00007803FE0FF00000003C3FFC0FFF00 +bitmap=00007803C703C00000003C3E3C1F0F00 +bitmap=000078078303C0000000783C1E1E0F00 +bitmap=000078078003C0000000783C1E1E0F00 +bitmap=00007807C003C0000000F03C1E1E0F00 +bitmap=00007807F003C0000001E03C1E1E0F00 +bitmap=00007803FC03C0000003C03C1E1E0F00 +bitmap=00007801FE03C0000007803C1E1E0F00 +bitmap=000078007F03C000000F003C1E1E0F00 +bitmap=000078001F03C000001E003C1E1E0F00 +bitmap=000078000F03C000003C003C1E1E0F00 +bitmap=000078060F03C0000078003C1E1E0F00 +bitmap=000078071E03E0000078003C1E1F1F00 +bitmap=00007803FE01F000007FFC3C1E0FFF00 +bitmap=00007801FC00F000007FFC3C1E07EF00 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +x=128 +y=32 +width=8 +[Ordinal::BitMap::2] +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=001FFF0000003C0000003C03C0780000 +bitmap=001FFF0000003C0000007C03C0780000 +bitmap=00000E0000003C000000FC03C0780000 +bitmap=00003C0000003C000001BC03C0780000 +bitmap=0000700F3E1FFC000003BC0FF07BF000 +bitmap=0001E00F7E3FFC0000073C0FF07FF800 +bitmap=0003800FFE7C3C0000063C03C07C7800 +bitmap=0007F80FFE783C00000C3C03C0783C00 +bitmap=0007FE0F80783C0000183C03C0783C00 +bitmap=00001E0F00783C0000383C03C0783C00 +bitmap=00000F0F00783C0000703C03C0783C00 +bitmap=00000F0F00783C00007FFF03C0783C00 +bitmap=00000F0F00783C00007FFF03C0783C00 +bitmap=00000F0F00783C0000003C03C0783C00 +bitmap=00000F0F00783C0000003C03C0783C00 +bitmap=00000F0F00783C0000003C03C0783C00 +bitmap=00180F0F00783C0000003C03C0783C00 +bitmap=001C1F0F007C7C0000003C03E0783C00 +bitmap=000FFE0F003FFC0000003C01F0783C00 +bitmap=0007FC0F001FBC0000003C00F0783C00 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +x=128 +y=32 +width=8 +[Ordinal::BitMap::3] +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=001FFF03C07800000000FC03C0780000 +bitmap=001FFF03C07800000003FC03C0780000 +bitmap=001E0003C07800000007C003C0780000 +bitmap=001E0003C0780000000F0003C0780000 +bitmap=001E000FF07BF000000F000FF07BF000 +bitmap=001E000FF07FF800001E000FF07FF800 +bitmap=001E0003C07C7800001E0003C07C7800 +bitmap=001FFC03C0783C00001EFC03C0783C00 +bitmap=001FFE03C0783C00001FFE03C0783C00 +bitmap=00001F03C0783C00001F1F03C0783C00 +bitmap=00000F03C0783C00001E0F03C0783C00 +bitmap=00000F03C0783C00001E0F03C0783C00 +bitmap=00000F03C0783C00001E0F03C0783C00 +bitmap=00000F03C0783C00001E0F03C0783C00 +bitmap=00000F03C0783C00001E0F03C0783C00 +bitmap=00000F03C0783C00001E0F03C0783C00 +bitmap=00180F03C0783C00001E0F03C0783C00 +bitmap=001C1F03E0783C00001F1F03E0783C00 +bitmap=000FFE01F0783C00000FFE01F0783C00 +bitmap=0007FC00F0783C000007FC00F0783C00 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +x=128 +y=32 +width=8 +[Ordinal::BitMap::4] +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=001FFF03C07800000007FC03C0780000 +bitmap=001FFF03C0780000000FFE03C0780000 +bitmap=00000F03C0780000001F1F03C0780000 +bitmap=00000F03C0780000001E0F03C0780000 +bitmap=00000F0FF07BF000001E0F0FF07BF000 +bitmap=00001F0FF07FF800001E0F0FF07FF800 +bitmap=00001E03C07C7800001E0F03C07C7800 +bitmap=00003E03C0783C00001E0F03C0783C00 +bitmap=00003C03C0783C00000F1E03C0783C00 +bitmap=00003C03C0783C000007FC03C0783C00 +bitmap=00007803C0783C000007FC03C0783C00 +bitmap=00007803C0783C00000F1E03C0783C00 +bitmap=00007803C0783C00001E0F03C0783C00 +bitmap=0000F003C0783C00001E0F03C0783C00 +bitmap=0000F003C0783C00001E0F03C0783C00 +bitmap=0000F003C0783C00001E0F03C0783C00 +bitmap=0000F003C0783C00001E0F03C0783C00 +bitmap=0000F003E0783C00000F1E03E0783C00 +bitmap=0000F001F0783C00000FFE01F0783C00 +bitmap=0000F000F0783C000007FC00F0783C00 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +x=128 +y=32 +width=8 +[pilots] +pilot=200.0.0.96 +[200.0.0.96] +hostType=0 +advancedDamage=1 +loadzones=1 +name=Aeolus +bitmapindex=1 +experience=expert +badge=VGL +patch=Yellow +role=Role::Default +dropzone=one +vehicle=thor +vehicleValue=1000 +color=White +[largebitmap] +bitmap=BitMap::Large::Aeolus +[BitMap::Large::Aeolus] +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=000003FE0000000001E0000000000000 +bitmap=000007FF0000000001E0000000000000 +bitmap=00000F8F8000000001E0000000000000 +bitmap=00000F078000000001E0000000000000 +bitmap=00000F0781FF00FF81E0F0781FC00000 +bitmap=00000F0783FF81FFC1E0F0783FE00000 +bitmap=00000F0787C7C3E3E1E0F0783C700000 +bitmap=00000F078783C3C1E1E0F07878300000 +bitmap=00000F078783C3C1E1E0F07878000000 +bitmap=00000FFF8783C3C1E1E0F0787C000000 +bitmap=00000FFF8783C3C1E1E0F0787F000000 +bitmap=00000F0787FFC3C1E1E0F0783FC00000 +bitmap=00000F0787FFC3C1E1E0F0781FE00000 +bitmap=00000F07878003C1E1E0F07807F00000 +bitmap=00000F07878003C1E1E0F07801F00000 +bitmap=00000F07878003C1E1E0F07800F00000 +bitmap=00000F078780C3C1E1E0F07860F00000 +bitmap=00000F0787C1C3E3E1E078F871E00000 +bitmap=00000F0783FF81FFC1E07FF83FE00000 +bitmap=00000F0781FF00FF81E03F781FC00000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +x=128 +y=32 +width=8 +[smallbitmap] +bitmap=BitMap::Small::Aeolus +[BitMap::Small::Aeolus] +bitmap=00000000000000000000000000000000 +bitmap=0000000000000000003E00000C000000 +bitmap=006300000C00000000631F0F8CC63C00 +bitmap=00633198CCC66200007F3198CCC66000 +bitmap=00633F98CCC6780000633018CCC61E00 +bitmap=00633018CCC6060000633098CCC64600 +bitmap=00631F0F8C7E3C000000000000000000 +bitmap=00000000000000000000000000000000 +x=64 +y=16 +width=4 +[Role::Default] +model=dfltrole +[Role::NoReturn] +model=noretun diff --git a/CONTENT/BT/MAKEEGG.BAK b/CONTENT/BT/MAKEEGG.BAK new file mode 100644 index 0000000..51cffe8 --- /dev/null +++ b/CONTENT/BT/MAKEEGG.BAK @@ -0,0 +1,97 @@ +@echo off +rem +rem makeegg.bat +rem +if "%2"=="" goto usage +if "%3"=="" goto droptable +set a3=%3 +goto begin +:droptable +set a3=one +rem if "%1"=="choice2" set a3=dname +rem if "%1"=="CHOICE2" set a3=dname +:begin +set eggfile=temp.egg +echo [mission]>%eggfile% +echo adventure=BattleTech>>%eggfile% +echo map=%1>>%eggfile% +echo scenario=freeforall>>%eggfile% +echo ; uncomment one time and one weather>>%eggfile% +echo //time=morning>>%eggfile% +echo time=day>>%eggfile% +echo //time=evening>>%eggfile% +echo //time=night>>%eggfile% +echo weather=clear>>%eggfile% +echo //weather=fog>>%eggfile% +echo //weather=soup>>%eggfile% +echo temperature=80>>%eggfile% +echo //length=600>>%eggfile% +echo.>>%eggfile% +echo [pilots]>>%eggfile% +echo pilot=200.0.0.255>>%eggfile% +echo.>>%eggfile% +echo [200.0.0.255]>>%eggfile% +echo hostType=0>>%eggfile% +echo advancedDamage=0>>%eggfile% +echo loadzones=1>>%eggfile% +echo name=Warrior>>%eggfile% +echo bitmapindex=1>>%eggfile% +echo ; uncomment one experience>>%eggfile% +echo experience=novice>>%eggfile% +echo //experience=standard>>%eggfile% +echo //experience=veteran>>%eggfile% +echo //experience=expert>>%eggfile% +echo role=Role::Default>>%eggfile% +rem echo dropzone=%1.%a3%>>%eggfile% +echo dropzone=%a3%>>%eggfile% +echo vehicle=%2>>%eggfile% +echo vehicleValue=0>>%eggfile% +rem echo return=1>>%eggfile% +rem echo collision=0>>%eggfile% +rem echo splash=0>>%eggfile% +rem echo heat=0>>%eggfile% +echo ; uncomment one badge, one patch, and one color>>%eggfile% +echo //badge=Davion>>%eggfile% +echo badge=Kurita>>%eggfile% +echo //badge=Liao>>%eggfile% +echo //badge=Marik>>%eggfile% +echo //badge=None>>%eggfile% +echo //badge=Steiner>>%eggfile% +echo //badge=VGL>>%eggfile% +echo //patch=Black>>%eggfile% +echo //patch=Blue>>%eggfile% +echo //patch=Green>>%eggfile% +echo //patch=Grey>>%eggfile% +echo patch=Red>>%eggfile% +echo //patch=Violet>>%eggfile% +echo //patch=White>>%eggfile% +echo //patch=Yellow>>%eggfile% +echo color=Black>>%eggfile% +echo //color=Brown>>%eggfile% +echo //color=Crimson>>%eggfile% +echo //color=Green>>%eggfile% +echo //color=Grey>>%eggfile% +echo //color=Tan>>%eggfile% +echo //color=White>>%eggfile% +echo.>>%eggfile% +echo [Role::Default]>>%eggfile% +echo model=dfltrole>>%eggfile% +echo dmgInflctdMdfr=100>>%eggfile% +echo dmgRcvdMdfr=100>>%eggfile% +echo dmgBias=100>>%eggfile% +echo friendlyFire=100>>%eggfile% +echo return=2147483647>>%eggfile% +echo supply=0>>%eggfile% +echo.>>%eggfile% +if exist bitmaps.egg type bitmaps.egg>>%eggfile% +echo. +echo '%eggfile%' made for course '%1', vehicle '%2', and dropzone '%a3%'. +echo. +set eggfile= +set a3= +goto end +:usage +echo. +echo usage: makeegg course vehicle [dropzone] (no extensions) +echo. +:end diff --git a/CONTENT/BT/MAKEEGG.BAT b/CONTENT/BT/MAKEEGG.BAT new file mode 100644 index 0000000..210d4c9 --- /dev/null +++ b/CONTENT/BT/MAKEEGG.BAT @@ -0,0 +1,97 @@ +@echo off +rem +rem makeegg.bat +rem +if "%2"=="" goto usage +if "%3"=="" goto droptable +set a3=%3 +goto begin +:droptable +set a3=one +rem if "%1"=="choice2" set a3=dname +rem if "%1"=="CHOICE2" set a3=dname +:begin +set eggfile=temp.egg +echo [mission]>%eggfile% +echo adventure=BattleTech>>%eggfile% +echo map=%1>>%eggfile% +echo scenario=freeforall>>%eggfile% +echo ; uncomment one time and one weather>>%eggfile% +echo //time=morning>>%eggfile% +echo //time=day>>%eggfile% +echo //time=evening>>%eggfile% +echo time=night>>%eggfile% +echo weather=clear>>%eggfile% +echo //weather=fog>>%eggfile% +echo //weather=soup>>%eggfile% +echo temperature=80>>%eggfile% +echo //length=600>>%eggfile% +echo.>>%eggfile% +echo [pilots]>>%eggfile% +echo pilot=200.0.0.255>>%eggfile% +echo.>>%eggfile% +echo [200.0.0.255]>>%eggfile% +echo hostType=0>>%eggfile% +echo advancedDamage=0>>%eggfile% +echo loadzones=1>>%eggfile% +echo name=Warrior>>%eggfile% +echo bitmapindex=1>>%eggfile% +echo ; uncomment one experience>>%eggfile% +echo experience=novice>>%eggfile% +echo //experience=standard>>%eggfile% +echo //experience=veteran>>%eggfile% +echo //experience=expert>>%eggfile% +echo role=Role::Default>>%eggfile% +rem echo dropzone=%1.%a3%>>%eggfile% +echo dropzone=%a3%>>%eggfile% +echo vehicle=%2>>%eggfile% +echo vehicleValue=0>>%eggfile% +rem echo return=1>>%eggfile% +rem echo collision=0>>%eggfile% +rem echo splash=0>>%eggfile% +rem echo heat=0>>%eggfile% +echo ; uncomment one badge, one patch, and one color>>%eggfile% +echo //badge=Davion>>%eggfile% +echo badge=Kurita>>%eggfile% +echo //badge=Liao>>%eggfile% +echo //badge=Marik>>%eggfile% +echo //badge=None>>%eggfile% +echo //badge=Steiner>>%eggfile% +echo //badge=VGL>>%eggfile% +echo //patch=Black>>%eggfile% +echo //patch=Blue>>%eggfile% +echo //patch=Green>>%eggfile% +echo //patch=Grey>>%eggfile% +echo patch=Red>>%eggfile% +echo //patch=Violet>>%eggfile% +echo //patch=White>>%eggfile% +echo //patch=Yellow>>%eggfile% +echo color=Black>>%eggfile% +echo //color=Brown>>%eggfile% +echo //color=Crimson>>%eggfile% +echo //color=Green>>%eggfile% +echo //color=Grey>>%eggfile% +echo //color=Tan>>%eggfile% +echo //color=White>>%eggfile% +echo.>>%eggfile% +echo [Role::Default]>>%eggfile% +echo model=dfltrole>>%eggfile% +echo dmgInflctdMdfr=100>>%eggfile% +echo dmgRcvdMdfr=100>>%eggfile% +echo dmgBias=100>>%eggfile% +echo friendlyFire=100>>%eggfile% +echo return=2147483647>>%eggfile% +echo supply=0>>%eggfile% +echo.>>%eggfile% +if exist bitmaps.egg type bitmaps.egg>>%eggfile% +echo. +echo '%eggfile%' made for course '%1', vehicle '%2', and dropzone '%a3%'. +echo. +set eggfile= +set a3= +goto end +:usage +echo. +echo usage: makeegg course vehicle [dropzone] (no extensions) +echo. +:end diff --git a/CONTENT/BT/MAPS/ADROP.MAP b/CONTENT/BT/MAPS/ADROP.MAP new file mode 100644 index 0000000..57ca498 --- /dev/null +++ b/CONTENT/BT/MAPS/ADROP.MAP @@ -0,0 +1,32 @@ +[LAB_ONLY] // this file has not been approved for release + +[two] +type=dropzone +dropzone= -574.031921 10.000000 -556.769409 0.000000 -2.443453 0.000000 +dropzone= -599.031921 10.000000 -531.769409 0.000000 -2.443453 0.000000 +dropzone= -524.031921 10.000000 -606.769409 0.000000 -2.443453 0.000000 +dropzone= -549.031921 10.000000 -581.769409 0.000000 -2.443453 0.000000 +[three] +type=dropzone +dropzone= 521.223511 0.000000 -559.285828 0.000000 2.268936 0.000000 +dropzone= 546.223511 0.000000 -534.285828 0.000000 2.268936 0.000000 +dropzone= 571.223511 0.000000 -509.285797 0.000000 2.268933 0.000000 +dropzone= 496.223511 0.000000 -584.285828 0.000000 2.268936 0.000000 +[four] +type=dropzone +dropzone= 557.085388 0.000000 508.039093 0.000000 0.785390 0.000000 +dropzone= 532.085388 0.000000 533.039124 0.000000 0.785387 0.000000 +dropzone= 507.085388 0.000000 558.039124 0.000000 0.785387 0.000000 +dropzone= 582.085388 0.000000 483.039093 0.000000 0.785390 0.000000 +[five] +type=dropzone +dropzone= -473.580200 10.000000 529.291077 0.000000 -0.785406 0.000000 +dropzone= -498.580200 10.000000 504.291107 0.000000 -0.785406 0.000000 +dropzone= -523.580200 10.000000 479.291107 0.000000 -0.785409 0.000000 +dropzone= -448.580200 10.000000 554.291077 0.000000 -0.785406 0.000000 +[adrop] +type=map +instancedropzone=two -561.531921 10.000000 -569.269409 0.000000 -2.443453 0.000000 +instancedropzone=three 533.723511 0.000000 -546.785828 0.000000 2.268936 0.000000 +instancedropzone=four 544.585388 0.000000 520.539124 0.000000 0.785390 0.000000 +instancedropzone=five -486.080200 0.000000 516.791077 0.000000 -0.785406 0.000000 diff --git a/CONTENT/BT/MAPS/ALL.ZNE b/CONTENT/BT/MAPS/ALL.ZNE new file mode 100644 index 0000000..0b8389c --- /dev/null +++ b/CONTENT/BT/MAPS/ALL.ZNE @@ -0,0 +1,28 @@ +#---------------------------------------------------------------------------- + +[EnvironmentZone] +# +# ExtentBox +# minX, minY, minZ, maxX, maxY, maxZ, +extent_box=-1000000,-1000000,-1000000,1000000,1000000,1000000 +# +# Environment +# gravity, air_density, audio_reverb, audio_reflectivity, audio_absorption, +# wind_velocity_x, wind_velocity_y, wind_velocity_z, ambient_temp +environment=9.8,1.0,0.0,0.0,0.0,0.0,0.0,0.0,300.0 + +#---------------------------------------------------------------------------- + +[InterestZone] +# +# ExtentBox +# minX, minY, minZ, maxX, maxY, maxZ, +extent_box=-1000000,-1000000,-1000000,1000000,1000000,1000000 +# +# InterestZoneID +# id +interest_zone_ID=1 +# +# MapResourceName +# name +map_resource_name=unused diff --git a/CONTENT/BT/MAPS/ARENA1.MAP b/CONTENT/BT/MAPS/ARENA1.MAP new file mode 100644 index 0000000..775ddf1 --- /dev/null +++ b/CONTENT/BT/MAPS/ARENA1.MAP @@ -0,0 +1,20 @@ +[LAB_ONLY] // this file has not been approved for release + +[sky] +type=model +modelfile=sky.mod +[arenall] +type=include +file=arenall.map +[artrucks] +type=include +file=artrucks.map +[adrop] +type=include +file=adrop.map +[arena1] +type=map +instance=sky 0 150 0 0 0 0 +instance=arenall 0 0 0 0 0 0 +instance=artrucks 0 0 0 0 0 0 +instance=adrop 0 0 0 0 0 0 diff --git a/CONTENT/BT/MAPS/ARENA2.MAP b/CONTENT/BT/MAPS/ARENA2.MAP new file mode 100644 index 0000000..5f4ef3b --- /dev/null +++ b/CONTENT/BT/MAPS/ARENA2.MAP @@ -0,0 +1,21 @@ +[LAB_ONLY] // this file has not been approved for release + +[sky] +type=model +modelfile=sky.mod +[arenall2] +type=include +file=arenall2.map +[adrop] +type=include +file=adrop.map +//[artrucks] +//type=include +//file=artrucks.map +[arena2] +type=map +instance=sky 0 150 0 0 0 0 +instance=adrop 0 0 0 0 0 0 +instance=arenall2 0 0 0 0 0 0 +//instance=artrucks 0 0 0 0 0 0 + diff --git a/CONTENT/BT/MAPS/ARTRUCBU.MAP b/CONTENT/BT/MAPS/ARTRUCBU.MAP new file mode 100644 index 0000000..dfefd81 --- /dev/null +++ b/CONTENT/BT/MAPS/ARTRUCBU.MAP @@ -0,0 +1,76 @@ +[LAB_ONLY] // this file has not been approved for release + +[trk1] +type=model +modelfile=trk1.mod +[snh] +type=model +modelfile=snh.mod +[tt2] +type=model +modelfile=tt2.mod +[trk4] +type=model +modelfile=trk4.mod +[tt1] +type=model +modelfile=tt1.mod +[trk3] +type=model +modelfile=trk3.mod +[artrucks] +type=map +instance=trk1 -137.179687 0.000000 -127.375000 0.000000 1.919860 0.000000 +instance=snh -498.140625 10.000000 529.039062 0.000000 0.523620 0.000000 +instance=snh 575.757812 0.000000 -538.578125 0.000000 2.094436 0.000000 +instance=tt2 106.773437 10.000000 -381.468750 0.000000 2.967057 0.000000 +instance=snh -534.140625 10.000000 528.523437 0.000000 2.618012 0.000000 +instance=trk4 -160.929687 10.000000 -618.546875 0.000000 2.443473 0.000000 +instance=tt2 424.218750 0.000000 -461.976562 0.000000 -0.174496 0.000000 +instance=tt2 552.171875 0.000000 -593.750000 0.000000 2.443499 0.000000 +instance=tt2 618.757812 10.000000 192.085937 0.000000 1.745322 0.000000 +instance=tt2 619.757812 10.000000 172.640625 0.000000 1.396270 0.000000 +instance=trk4 611.187500 10.000000 194.820312 0.000000 2.443451 0.000000 +instance=trk4 527.851562 0.000000 588.757812 0.000000 -2.443493 0.000000 +instance=tt2 526.468750 0.000000 580.820312 0.000000 3.141593 0.000000 +instance=tt2 278.937500 10.000000 645.984375 0.000000 0.000000 0.000000 +instance=trk4 278.640625 10.000000 639.921875 0.000000 0.000000 0.000000 +instance=tt2 190.500000 10.000000 639.062500 0.000000 0.349048 0.000000 +instance=tt1 114.304687 10.000000 409.335937 0.000000 -1.047177 0.000000 +instance=tt2 152.242187 10.000000 428.609375 0.000000 -0.174531 0.000000 +instance=trk4 131.273437 10.000000 421.492187 0.000000 0.523588 0.000000 +instance=tt2 132.796875 10.000000 427.609375 0.000000 0.174556 0.000000 +instance=trk1 -66.609375 20.000000 585.078125 0.000000 -1.047198 0.000000 +instance=tt2 -612.984375 0.000000 -280.726562 0.000000 -2.268924 0.000000 +instance=trk3 -37.632813 20.000000 565.640625 0.000000 1.570796 0.000000 +instance=tt2 384.726562 10.000000 -125.085937 0.000000 1.396269 0.000000 +instance=trk4 376.156250 10.000000 -102.906250 0.000000 2.443456 0.000000 +instance=tt1 382.375000 10.000000 -104.875000 0.000000 1.745337 0.000000 +instance=tt1 -612.335937 0.000000 -322.335937 0.000000 -1.570796 0.000000 +instance=tt1 -618.335937 10.000000 -458.335937 0.000000 -1.570796 0.000000 +instance=tt1 -603.375000 10.000000 -487.875000 0.000000 -1.745364 0.000000 +instance=trk4 -581.343750 10.000000 -462.210937 0.000000 -0.698122 0.000000 +instance=snh -555.000000 0.000000 -487.437500 0.000000 3.141593 0.000000 +instance=snh -523.570312 0.000000 -504.992187 0.000000 1.047179 0.000000 +instance=tt1 199.531250 10.000000 -388.710937 0.000000 2.967048 0.000000 +instance=tt1 213.460937 10.000000 -388.710937 0.000000 -2.967047 0.000000 +instance=tt1 226.039062 0.000000 -603.617187 0.000000 -2.268879 0.000000 +instance=tt1 215.375000 0.000000 -594.671875 0.000000 -2.617993 0.000000 +instance=snh 259.757812 0.000000 -610.578125 0.000000 2.094447 0.000000 +instance=tt1 603.578125 0.000000 -553.351562 0.000000 2.967029 0.000000 +instance=tt1 475.500000 0.000000 -445.601562 0.000000 -0.174546 0.000000 +instance=tt1 -160.000000 10.000000 -625.671875 0.000000 3.141593 0.000000 +instance=tt1 -339.375000 0.000000 -197.867187 0.000000 -1.745342 0.000000 +instance=tt1 388.375000 10.000000 -137.796875 0.000000 1.396244 0.000000 +instance=tt1 -194.000000 0.000000 241.000000 0.000000 0.000000 0.000000 +instance=tt1 634.375000 20.000000 -72.796875 0.000000 1.396259 0.000000 +instance=tt1 632.375000 20.000000 -63.796875 0.000000 1.396259 0.000000 +instance=tt1 623.375000 20.000000 92.203125 0.000000 1.396259 0.000000 +instance=tt1 -119.625000 0.000000 -101.796875 0.000000 1.396246 0.000000 +instance=tt1 -97.539063 0.000000 239.039062 0.000000 -0.174544 0.000000 +instance=trk1 269.390625 10.000000 -148.921875 0.000000 -1.047204 0.000000 +instance=tt2 -340.726562 0.000000 115.640625 0.000000 -1.396261 0.000000 +instance=tt2 -341.726562 0.000000 135.085937 0.000000 -1.745323 0.000000 +instance=trk4 -333.156250 0.000000 112.906250 0.000000 -0.698136 0.000000 +instance=trk3 -129.632812 10.000000 428.640625 0.000000 1.570796 0.000000 +instance=trk4 257.000000 10.000000 649.000000 0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/MAPS/ARTRUCKS.MAP b/CONTENT/BT/MAPS/ARTRUCKS.MAP new file mode 100644 index 0000000..c705208 --- /dev/null +++ b/CONTENT/BT/MAPS/ARTRUCKS.MAP @@ -0,0 +1,65 @@ +[LAB_ONLY] // this file has not been approved for release + +[comtruck] +type=model +modelfile=comtruck.mod +[armrmovr] +type=model +modelfile=armrmovr.mod +[mechmovr] +type=model +modelfile=mechmovr.mod +[hummer] +type=model +modelfile=hummer.mod +[coolant] +type=model +modelfile=coolant.mod +[artrucks] +type=map +instance=comtruck -137.179687 0.1000000 -127.375000 0.000000 1.919860 0.000000 +instance=armrmovr -498.140625 10.1000000 529.039062 0.000000 0.523620 0.000000 +instance=armrmovr 575.757812 0.1000000 -538.578125 0.000000 2.094436 0.000000 +instance=coolant 106.773437 10.1000000 -381.468750 0.000000 2.967057 0.000000 +instance=armrmovr -534.140625 10.1000000 528.523437 0.000000 2.618012 0.000000 +instance=mechmovr 424.218750 0.1000000 -461.976562 0.000000 -0.174496 0.000000 +instance=mechmovr 552.171875 0.1000000 -593.750000 0.000000 2.443499 0.000000 +instance=mechmovr 618.757812 10.1000000 192.085937 0.000000 1.745322 0.000000 +instance=coolant 619.757812 10.1000000 172.640625 0.000000 1.396270 0.000000 +instance=mechmovr 526.468750 0.1000000 580.820312 0.000000 3.141593 0.000000 +instance=mechmovr 278.937500 10.1000000 645.984375 0.000000 0.000000 0.000000 +instance=coolant 190.500000 10.1000000 639.062500 0.000000 0.349048 0.000000 +instance=mechmovr 114.304687 10.1000000 409.335937 0.000000 -1.047177 0.000000 +instance=mechmovr 152.242187 10.1000000 428.609375 0.000000 -0.174531 0.000000 +instance=coolant 132.796875 10.1000000 427.609375 0.000000 0.174556 0.000000 +instance=comtruck -66.609375 20.1000000 585.078125 0.000000 -1.047198 0.000000 +instance=coolant -612.984375 0.1000000 -280.726562 0.000000 -2.268924 0.000000 +instance=hummer -37.632813 20.1000000 565.640625 0.000000 1.570796 0.000000 +instance=mechmovr 384.726562 10.1000000 -125.085937 0.000000 1.396269 0.000000 +instance=coolant 382.375000 10.1000000 -104.875000 0.000000 1.745337 0.000000 +instance=mechmovr -612.335937 0.1000000 -322.335937 0.000000 -1.570796 0.000000 +instance=mechmovr -618.335937 10.1000000 -458.335937 0.000000 -1.570796 0.000000 +instance=coolant -603.375000 10.100000 -487.875000 0.000000 -1.745364 0.000000 +instance=armrmovr -555.000000 0.1000000 -487.437500 0.000000 3.141593 0.000000 +instance=armrmovr -523.570312 0.1000000 -504.992187 0.000000 1.047179 0.000000 +instance=coolant 199.531250 10.1000000 -388.710937 0.000000 2.967048 0.000000 +instance=mechmovr 213.460937 10.1000000 -388.710937 0.000000 -2.967047 0.000000 +instance=mechmovr 226.039062 0.1000000 -603.617187 0.000000 -2.268879 0.000000 +instance=mechmovr 215.375000 0.1000000 -594.671875 0.000000 -2.617993 0.000000 +instance=armrmovr 259.757812 0.1000000 -610.578125 0.000000 2.094447 0.000000 +instance=coolant 603.578125 0.1000000 -553.351562 0.000000 2.967029 0.000000 +instance=mechmovr 475.500000 0.1000000 -445.601562 0.000000 -0.174546 0.000000 +instance=coolant -160.000000 10.1000000 -625.671875 0.000000 3.141593 0.000000 +instance=mechmovr -339.375000 0.100000 -197.867187 0.000000 -1.745342 0.000000 +instance=coolant 388.375000 10.1000000 -137.796875 0.000000 1.396244 0.000000 +instance=mechmovr -194.000000 0.1000000 241.000000 0.000000 0.000000 0.000000 +instance=mechmovr 634.375000 20.1000000 -72.796875 0.000000 1.396259 0.000000 +instance=coolant 632.375000 20.1000000 -63.796875 0.000000 1.396259 0.000000 +instance=mechmovr 623.375000 20.1000000 92.203125 0.000000 1.396259 0.000000 +instance=mechmovr -119.625000 0.1000000 -101.796875 0.000000 1.396246 0.000000 +instance=coolant -97.539063 0.1000000 239.039062 0.000000 -0.174544 0.000000 +instance=comtruck 269.390625 10.1000000 -148.921875 0.000000 -1.047204 0.000000 +instance=mechmovr -340.726562 0.1000000 115.640625 0.000000 -1.396261 0.000000 +instance=mechmovr -341.726562 0.1000000 135.085937 0.000000 -1.745323 0.000000 +instance=hummer -129.632812 10.1000000 428.640625 0.000000 1.570796 0.000000 + \ No newline at end of file diff --git a/CONTENT/BT/MAPS/BLANK.MAP b/CONTENT/BT/MAPS/BLANK.MAP new file mode 100644 index 0000000..7c35f83 --- /dev/null +++ b/CONTENT/BT/MAPS/BLANK.MAP @@ -0,0 +1,21 @@ +[LAB_ONLY] // this file has not been approved for release + +[wall10k] +type=model +modelfile=wall10k.mod +[one] +type=dropzone +dropzone=0 0 0 0 0 0 +[win1] +type=dropzone +dropzone= 1.646641 -0.350000 4248.688965 0.000000 -3.141593 0.000000 +[rwin1] +type=model +modelfile=rwin1.mod +[blank] +type=map +instance=wall10k 0.000000 -0.351562 0.000000 0.000000 0.000000 0.000000 +instance=rwin1 0.632812 -0.351562 4257.796875 0.000000 0.000000 0.000000 + +instancedropzone=one 0 0 0 0 0 0 +instancedropzone=win1 1.646641 -0.350000 4248.688965 0.000000 -3.141593 0.000000 diff --git a/CONTENT/BT/MAPS/DES.MAP b/CONTENT/BT/MAPS/DES.MAP new file mode 100644 index 0000000..560b881 --- /dev/null +++ b/CONTENT/BT/MAPS/DES.MAP @@ -0,0 +1,71 @@ +[LAB_ONLY] // this file has not been approved for release + +[sky] +type=model +modelfile=sky.mod +[buttea] +type=model +modelfile=buttea.mod +[buttec] +type=model +modelfile=buttec.mod +[butted] +type=model +modelfile=butted.mod +[buttee] +type=model +modelfile=buttee.mod +[butteb] +type=model +modelfile=butteb.mod +[dg100] +type=model +modelfile=dg100.mod +[one] +type=dropzone +dropzone= 745.000000 0.000000 -156.000000 0.000000 0.000000 0.000000 +dropzone= -544.921997 0.000000 -671.964783 0.000000 -3.141593 0.000000 +dropzone= -74.921997 0.000000 -1126.964966 0.000000 -3.141593 0.000000 +dropzone= 645.078003 0.000000 -1596.964966 0.000000 -3.141593 0.000000 +dropzone= 115.078697 0.000000 -2466.965088 0.000000 -3.141593 0.000000 +dropzone= -354.921295 0.000000 -2011.964966 0.000000 -3.141593 0.000000 +dropzone= 275.000000 0.000000 299.000000 0.000000 0.000000 0.000000 +[des] +type=map +instance=buttea 10.859375 0.000000 -740.304687 0.000000 1.047198 0.000000 +instance=buttec 103.695313 0.000000 -988.875000 0.000000 2.094396 0.000000 +instance=butted 767.554687 0.000000 -900.859375 0.000000 2.094396 0.000000 +instance=buttee 782.671875 0.000000 -1001.609375 0.000000 2.094397 0.000000 +instance=buttea 10.335938 0.000000 -741.796875 0.000000 3.141593 0.000000 +instance=butteb 225.335937 0.000000 -1351.796875 0.000000 3.141593 0.000000 +instance=buttec -1014.664062 0.000000 -1001.796875 0.000000 3.141593 0.000000 +instance=butted 630.335937 0.000000 -706.796875 0.000000 3.141593 0.000000 +instance=buttee 355.335937 0.000000 -1741.796875 0.000000 3.141593 0.000000 +instance=buttea 9.476562 0.000000 -741.492187 0.000000 -2.094394 0.000000 +instance=butteb -881.562500 0.000000 -638.171875 0.000000 -2.094392 0.000000 +instance=dg100 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 +instance=buttec 391.804687 0.000000 -38.812500 0.000000 -2.094395 0.000000 +instance=butted 242.945312 0.000000 -1206.835937 0.000000 -2.094385 0.000000 +instance=buttee 42.828125 0.000000 -701.085937 0.000000 -2.094394 0.000000 +instance=buttee 515.320312 0.000000 -1515.039062 0.000000 0.785389 0.000000 +instance=buttee -352.515625 0.000000 -2260.382812 0.000000 2.879793 0.000000 +instance=buttec 194.734375 0.000000 -2069.968750 0.000000 0.785389 0.000000 +instance=butteb -156.500000 0.000000 -2232.976562 0.000000 1.832626 0.000000 +instance=butted 58.570313 0.000000 -1488.265625 0.000000 1.832597 0.000000 +instance=butted -291.960937 0.000000 -2178.453125 0.000000 2.879787 0.000000 +instance=butted -101.773438 0.000000 -2119.195312 0.000000 -2.356194 0.000000 +instance=butteb 901.898437 0.000000 -843.625000 0.000000 1.047194 0.000000 +instance=butteb -157.015625 0.000000 -1965.031250 0.000000 2.879796 0.000000 +instance=buttec 223.531250 0.000000 -1097.976562 0.000000 1.047202 0.000000 +instance=butted 527.390625 0.000000 -164.960937 0.000000 1.047196 0.000000 +instance=buttea 10.000000 0.000000 -740.000000 0.000000 0.000000 0.000000 +instance=butteb 545.000000 0.000000 -20.000000 0.000000 0.000000 0.000000 +instance=buttec 1035.000000 0.000000 -480.000000 0.000000 0.000000 0.000000 +instance=butted -230.000000 0.000000 -5.000000 0.000000 0.000000 0.000000 +instance=buttee 940.000000 0.000000 330.000000 0.000000 0.000000 0.000000 +instance=buttee -622.492187 0.000000 144.289062 0.000000 1.047208 0.000000 +instance=buttea 11.031250 0.000000 -741.203125 0.000000 2.094396 0.000000 +instance=butteb 712.062500 0.000000 -654.523437 0.000000 2.094407 0.000000 +instance=sky 0 120 0 0 0 0 +instancedropzone=one 115.055908 0.000000 -1104.546265 0.000000 0.000000 0.000000 + \ No newline at end of file diff --git a/CONTENT/BT/MAPS/PDROP.MAP b/CONTENT/BT/MAPS/PDROP.MAP new file mode 100644 index 0000000..3576fd9 --- /dev/null +++ b/CONTENT/BT/MAPS/PDROP.MAP @@ -0,0 +1,27 @@ +[LAB_ONLY] // this file has not been approved for release + +[three] +type=dropzone +dropzone= 754.000000 100.000000 525.000000 0.000000 1.570796 0.000000 +dropzone= 754.000000 100.000000 575.000000 0.000000 1.570796 0.000000 +dropzone= 754.000000 100.000000 625.000000 0.000000 1.570796 0.000000 +dropzone= 754.000000 100.000000 675.000000 0.000000 1.570796 0.000000 +dropzone= 754.000000 100.000000 725.000000 0.000000 1.570796 0.000000 +dropzone= 754.000000 100.000000 775.000000 0.000000 1.570796 0.000000 +dropzone= 754.000000 100.000000 425.000000 0.000000 1.570796 0.000000 +dropzone= 754.000000 100.000000 475.000000 0.000000 1.570796 0.000000 +[four] +type=dropzone +dropzone= -975.443115 100.000000 253.478394 0.000000 -1.570796 0.000000 +dropzone= -975.443115 100.000000 303.478394 0.000000 -1.570796 0.000000 +dropzone= -975.443115 100.000000 353.478394 0.000000 -1.570796 0.000000 +dropzone= -975.443115 100.000000 403.478394 0.000000 -1.570796 0.000000 +dropzone= -975.443115 100.000000 453.478394 0.000000 -1.570796 0.000000 +dropzone= -975.443115 100.000000 203.478394 0.000000 -1.570796 0.000000 +dropzone= -975.443115 100.000000 503.478394 0.000000 -1.570796 0.000000 +dropzone= -975.443115 100.000000 553.478394 0.000000 -1.570796 0.000000 +[pdrop] +type=map +instancedropzone=three 754.000000 100.000000 600.000000 0.000000 1.570796 0.000000 +instancedropzone=four -975.443237 100.000000 378.478394 0.000000 -1.570796 0.000000 + \ No newline at end of file diff --git a/CONTENT/BT/MAPS/POL3SFX.MAP b/CONTENT/BT/MAPS/POL3SFX.MAP new file mode 100644 index 0000000..f42fa00 --- /dev/null +++ b/CONTENT/BT/MAPS/POL3SFX.MAP @@ -0,0 +1,23 @@ +[LAB_ONLY] // this file has not been approved for release + +[wndsfx01] +type=model +modelfile=wndsfx01.mod +[wndsfx02] +type=model +modelfile=wndsfx02.mod +[wndsfx03] +type=model +modelfile=wndsfx03.mod +[pol3sfx] +type=map +instance=wndsfx01 -175.000000 103.000000 -283.000000 0.000000 0.000000 0.000000 +instance=wndsfx01 -366.000000 86.000000 217.000000 0.000000 0.000000 0.000000 +instance=wndsfx01 -175.000000 103.000000 717.000000 0.000000 0.000000 0.000000 +instance=wndsfx01 240.000000 103.000000 717.000000 0.000000 0.000000 0.000000 +instance=wndsfx01 240.000000 103.000000 -283.000000 0.000000 0.000000 0.000000 +instance=wndsfx01 355.000000 86.000000 217.000000 0.000000 0.000000 0.000000 +instance=wndsfx02 -26.000000 103.000000 1254.000000 0.000000 0.000000 0.000000 +instance=wndsfx02 92.000000 96.000000 1209.000000 0.000000 0.000000 0.000000 +instance=wndsfx03 -293.000000 99.000000 1769.000000 0.000000 0.000000 0.000000 +instance=wndsfx03 356.000000 99.000000 1846.000000 0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/MAPS/POL4DROP.MAP b/CONTENT/BT/MAPS/POL4DROP.MAP new file mode 100644 index 0000000..239f740 --- /dev/null +++ b/CONTENT/BT/MAPS/POL4DROP.MAP @@ -0,0 +1,33 @@ +[LAB_ONLY] // this file has not been approved for release + +[three] +type=dropzone +dropzone= 725.521606 25.000000 -446.443115 0.000000 1.570796 0.000000 +dropzone= 725.521606 25.000000 -321.443115 0.000000 1.570796 0.000000 +dropzone= 700.521606 25.000000 -371.443115 0.000000 1.570796 0.000000 +dropzone= 700.521606 25.000000 -496.443115 0.000000 1.570796 0.000000 +[four] +type=dropzone +dropzone= 1.108519 25.000000 -581.385071 0.000000 -3.141593 0.000000 +dropzone= 56.991581 25.000000 -462.390991 0.000000 -3.141593 0.000000 +dropzone= 33.167511 25.000000 -523.288574 0.000000 -3.141593 0.000000 +dropzone= -16.391310 25.000000 -556.385071 0.000000 -3.141593 0.000000 +[two] +type=dropzone +dropzone= -1325.443970 25.000000 -171.521194 0.000000 -1.570796 0.000000 +dropzone= -1300.443970 25.000000 -146.521194 0.000000 -1.570796 0.000000 +dropzone= -1400.443970 25.000000 -221.521194 0.000000 -1.570796 0.000000 +dropzone= -1275.443970 25.000000 -271.521210 0.000000 -1.570796 0.000000 +[five] +type=dropzone +dropzone= -275.000000 50.000000 554.000000 0.000000 0.000000 0.000000 +dropzone= -225.000000 50.000000 554.000000 0.000000 0.000000 0.000000 +dropzone= -250.000000 50.000000 504.000000 0.000000 0.000000 0.000000 +dropzone= -200.000000 50.000000 479.000000 0.000000 0.000000 0.000000 +[pol4drop] +type=map +instancedropzone=three 713.021606 25.000000 -408.943115 0.000000 1.570796 0.000000 +instancedropzone=four 18.719074 25.000000 -530.862427 0.000000 -3.141593 0.000000 +instancedropzone=two -1325.443970 25.000000 -202.771210 0.000000 -1.570796 0.000000 +instancedropzone=five -237.500000 50.000000 522.750000 0.000000 0.000000 0.000000 + \ No newline at end of file diff --git a/CONTENT/BT/MAPS/POL4SFX.MAP b/CONTENT/BT/MAPS/POL4SFX.MAP new file mode 100644 index 0000000..9068a26 --- /dev/null +++ b/CONTENT/BT/MAPS/POL4SFX.MAP @@ -0,0 +1,23 @@ +[LAB_ONLY] // this file has not been approved for release + +[wndsfx01] +type=model +modelfile=wndsfx01.mod +[wndsfx02] +type=model +modelfile=wndsfx02.mod +[wndsfx03] +type=model +modelfile=wndsfx03.mod +[pol4sfx] +type=map +instance=wndsfx01 -285.000000 48.000000 -1113.000000 0.000000 0.000000 0.000000 +instance=wndsfx01 -476.000000 31.000000 -613.000000 0.000000 0.000000 0.000000 +instance=wndsfx01 -285.000000 48.000000 -113.000000 0.000000 0.000000 0.000000 +instance=wndsfx01 130.000000 48.000000 -113.000000 0.000000 0.000000 0.000000 +instance=wndsfx01 130.000000 48.000000 -1113.000000 0.000000 0.000000 0.000000 +instance=wndsfx01 245.000000 31.000000 -613.000000 0.000000 0.000000 0.000000 +instance=wndsfx02 -266.000000 48.000000 244.000000 0.000000 0.000000 0.000000 +instance=wndsfx02 192.000000 41.000000 369.000000 0.000000 0.000000 0.000000 +instance=wndsfx03 -628.000000 44.000000 179.000000 0.000000 0.000000 0.000000 +instance=wndsfx03 -769.000000 44.000000 -334.000000 0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/MAPS/RAVBU.MAP b/CONTENT/BT/MAPS/RAVBU.MAP new file mode 100644 index 0000000..75aae61 --- /dev/null +++ b/CONTENT/BT/MAPS/RAVBU.MAP @@ -0,0 +1,74 @@ +[LAB_ONLY] // this file has not been approved for release + +[sky] +type=model +modelfile=sky.mod +[ravinet2] +type=model +modelfile=ravinet2.mod +[ravinet7] +type=model +modelfile=ravinet7.mod +[one] +type=dropzone +dropzone= 706.953918 0.000000 -204.874207 0.000000 2.268914 0.000000 +dropzone= 687.989685 0.000000 194.339996 0.000000 0.698119 0.000000 +dropzone= 502.116211 0.000000 484.497711 0.000000 0.698118 0.000000 +dropzone= 500.004913 0.000000 -467.181396 0.000000 2.268919 0.000000 +dropzone= -687.989685 0.000000 -194.339996 0.000000 -2.443473 0.000000 +dropzone= -500.004913 0.000000 467.181396 0.000000 -0.872674 0.000000 +dropzone= -706.953918 0.000000 204.874207 0.000000 -0.872678 0.000000 +dropzone= -502.116211 0.000000 -484.497711 0.000000 -2.443475 0.000000 +[ravinet8] +type=model +modelfile=ravinet8.mod +[ravinet5] +type=model +modelfile=ravinet5.mod +[ravinet6] +type=model +modelfile=ravinet6.mod +[ravfloor] +type=model +modelfile=ravfloor.mod +[ravinet3] +type=model +modelfile=ravinet3.mod +[two] +type=dropzone +dropzone= -700.656494 0.000000 -182.177902 0.000000 -2.443459 0.000000 +dropzone= -507.694305 0.000000 457.014404 0.000000 -0.872660 0.000000 +dropzone= -714.634583 0.000000 190.289200 0.000000 -0.872670 0.000000 +dropzone= -513.214111 0.000000 -474.990112 0.000000 -2.443458 0.000000 +[three] +type=dropzone +dropzone= 696.099487 0.000000 -214.209702 0.000000 2.268928 0.000000 +dropzone= 515.916504 0.000000 464.690887 0.000000 0.872663 0.000000 +dropzone= 699.901001 0.000000 182.829803 0.000000 0.872669 0.000000 +dropzone= 491.277100 0.000000 -475.918915 0.000000 2.268924 0.000000 +[ravinet1] +type=model +modelfile=ravinet1.mod +[ravinet4] +type=model +modelfile=ravinet4.mod +[rav] +type=map +instance=ravinet2 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 +instance=ravinet7 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 +instance=ravinet8 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 +instance=ravinet5 0.000000 0.000000 0.000000 0.000000 3.141593 0.000000 +instance=ravinet6 0.000000 0.000000 0.000000 0.000000 3.141593 0.000000 +instance=ravinet7 0.000000 0.000000 0.000000 0.000000 3.141593 0.000000 +instance=ravfloor 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 +instance=ravinet3 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 +instance=ravinet8 0.000000 0.000000 0.000000 0.000000 3.141593 0.000000 +instance=ravinet1 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 +instance=ravinet4 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 +instance=ravinet6 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 +instance=ravinet5 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 +instance=sky 0 110 0 0 0 0 +instancedropzone=one -0.000008 0.000000 0.000000 0.000000 -2.443475 0.000000 +instancedropzone=two -609.049866 0.000000 -2.466110 0.000000 -2.443458 0.000000 +instancedropzone=three 600.798523 0.000000 -10.651985 0.000000 2.268924 0.000000 + \ No newline at end of file diff --git a/CONTENT/BT/MAPS/RAVTEST.SCN b/CONTENT/BT/MAPS/RAVTEST.SCN new file mode 100644 index 0000000..9094b01 --- /dev/null +++ b/CONTENT/BT/MAPS/RAVTEST.SCN @@ -0,0 +1,70 @@ +# ------------------------- +# BattleTech Arena1 Scene +# ------------------------- +VIEWANGLE 60.0 +RETRACE 3 +CLIP 0.5 2000.0 +FOG 200 1000.0 0.020 0.020 0.060 +BACKGND 0.0 0.0 0.0 +AMBIENT 0.02 0.01 0.01 +LIGHT 0.80 0.8 0.6 -50 10 0 + +START 15 7.0 -18 -5 156 0 + +GEOMETRY \BTRAVINE\VIDEO\GEO +MATERIAL \BTRAVINE\VIDEO\MAT +TEXTURE \FX\VIDEO\VIDEO\TEX + + + +//DYNAMIC thr 1.0 \fx\move.spl 0.0 0.01 \fx\onfire.evt 1 +STATIC RAVINET1 1 0 0 -200 0 0 0 +//STATIC thr 1 0 6 0 0 0 0 +//DYNAMIC square1 1.0 \fx\still2.spl 0.0 0.005 \fx\devent2.evt 2 + + +//MORPH exdisk_1 exdisk_a exdisk_c v 1.0 still1.spl 0.0 0.01 0.1 +//MORPH exdisk_2 exdisk_a exdisk_c v 1.0 still3.spl 0.2 0.1 0.1 +//DYNAMIC exdisk_2 1.0 \fx\move.spl 0.0 0.01 +//DYNAMIC exdisk_1 1.0 \fx\still2.spl 0.0 0.01 + + +//SCROLL btfx:smoke1_scr_tex 0 0 0.05 -0.131 +//SCROLL btfx:firesmoke1_scr_tex 0 0 0.05 -0.331 +//SCROLL btfx:firesmoke2_scr_tex 0 0 0.05 0.131 +//SCROLL btfx:firesmoke3_scr_tex 0 0 0.5 -2.31 +//SCROLL btfx:sky_scr_tex 0 0 0.01 0.01 +//IMMUNE btfx:firesmoke1_mtl 0 +//IMMUNE btfx:sky_mtl 1 +//IMMUNE btfx:planet_mtl 0 +//IMMUNE btfx:space_mtl 0 +//IMMUNE btfx:stars_mtl 0 +//DITHER btfx:smoke1_mtl 50 + +# code type velocity y-off green varience cool count +# texture size bias red blue grav ocool reps + +SPECIALFX 0 btfx:firesmoke1_scr_tex 0 1.10 36.00 0.9 -3.0 0.999 0.950 0.950 0.070 30.0 0.97 0.013 12 1 +SPECIALFX 1 NOTEXT 2 0.00 04.50 0.5 -3.0 2.699 0.70 0.000 0.50 04.0 0.94 0.053 12 1 +SPECIALFX 2 btfx:firesmoke1_scr_tex 2 0.90 03.00 0.5 -3.0 0.600 1.70 4.000 0.80 04.0 0.70 0.083 05 1 +SPECIALFX 3 btfx:firesmoke1_scr_tex 2 1.90 05.00 0.1 -3.0 4.600 0.95 0.500 0.80 00.5 0.70 0.153 05 1 +SPECIALFX 4 btfx:firesmoke1_scr_tex 2 12.00 16.00 0.2 -3.0 4.600 2.00 1.500 0.80 00.5 0.50 0.353 09 1 +SPECIALFX 5 btfx:firesmoke2_scr_tex 2 14.00 12.00 1.7 -9.0 2.900 0.60 0.100 0.50 05.5 0.90 0.023 12 1 +//SPECIALFX 6 btfx:firesmoke1_scr_tex 0 01.30 40.40 1.1 -1.0 3.700 2.30 1.150 3.90 34.8 0.92 0.020 15 1 +SPECIALFX 6 btfx:firesmoke1_scr_tex 1 0.0 20.40 1.5 -1.0 1.700 1.30 0.150 0.90 04.8 0.92 0.050 12 1 +SPECIALFX 7 btfx:firesmoke1_scr_tex 0 2.10 51.80 0.6 -3.0 12.900 11.000 10.500 0.60 1.8 0.95 0.023 5 1 +SPECIALFX 8 btfx:firesmoke1_scr_tex 0 6.10 5.20 1.0 -3.0 2.900 1.000 0.500 0.60 1.8 0.80 0.023 4 1 +SPECIALFX 9 btfx:firesmoke1_scr_tex 0 7.05 1.20 4.0 -15.0 1.200 0.50 0.20 1.20 1.0 0.00982 0.00000001 3 1 +SPECIALFX 10 NOTEXT 2 0.00 21.00 0.1 -3.0 2.699 1.50 1.000 0.50 30.0 0.91 0.037 12 10 + + + +// TRACKER NONE 4.0 2.0 +// TRACKER THRUSTMASTER 4.0 0.3 +TRACKER KEYBOARD 0.2 0.3 + +SCROLL test:texture1 0.0 0.0 0.05 0.1 + +END + + \ No newline at end of file diff --git a/CONTENT/BT/MAPS/TEST.MAP b/CONTENT/BT/MAPS/TEST.MAP new file mode 100644 index 0000000..de63191 --- /dev/null +++ b/CONTENT/BT/MAPS/TEST.MAP @@ -0,0 +1,59 @@ +[LAB_ONLY] // this file has not been approved for release + +[one] +type=dropzone +dropzone= 1516.998047 0.000000 858.638489 0.000000 0.000000 0.000000 +dropzone= 1571.911987 0.000000 895.264587 0.000000 0.000000 0.000000 +dropzone= 1626.827026 0.000000 931.890686 0.000000 0.000000 0.000000 +dropzone= 1681.740967 0.000000 968.516785 0.000000 0.000000 0.000000 +dropzone= 1736.656006 0.000000 1005.143005 0.000000 0.000000 0.000000 +dropzone= 1791.569946 0.000000 1041.769043 0.000000 0.000000 0.000000 +dropzone= 1846.484985 0.000000 1078.395020 0.000000 0.000000 0.000000 +dropzone= 1462.083008 0.000000 822.012512 0.000000 0.000000 0.000000 +[buttea] +type=model +modelfile=buttea.mod +[butteb] +type=model +modelfile=butteb.mod +[buttec] +type=model +modelfile=buttec.mod +[butted] +type=model +modelfile=butted.mod +[buttee] +type=model +modelfile=buttee.mod +[dg100] +type=model +modelfile=dg100.mod +[dhillg1] +type=model +modelfile=dhillg1.mod +[two] +type=dropzone +dropzone= 2249.412109 0.000000 644.686279 0.000000 0.000000 0.000000 +[three] +type=dropzone +dropzone= 3286.033936 0.000000 722.874329 0.000000 0.000000 0.000000 +[four] +type=dropzone +dropzone= 3481.282959 0.000000 1763.738037 0.000000 0.000000 0.000000 +[five] +type=dropzone +dropzone= 4495.966797 0.000000 1781.145996 0.000000 0.000000 0.000000 +[test] +type=map +instance=buttea 1457.429687 0.000000 187.679687 0.000000 0.000000 0.000000 +instance=butteb 1690.195312 0.000000 182.921875 0.000000 0.000000 0.000000 +instance=buttec 2017.976562 0.000000 168.664062 0.000000 0.000000 0.000000 +instance=butted 2459.765625 0.000000 163.914062 0.000000 0.000000 0.000000 +instance=buttee 2832.226562 0.000000 191.757812 0.000000 0.000000 0.000000 +instance=dg100 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 +instance=dhillg1 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 +instancedropzone=one 1654.284180 0.000000 950.203796 0.000000 0.000000 0.000000 +instancedropzone=two 2249.412109 0.000000 644.686279 0.000000 0.000000 0.000000 +instancedropzone=three 3286.033936 0.000000 722.874329 0.000000 0.000000 0.000000 +instancedropzone=four 3481.282959 0.000000 1763.738037 0.000000 0.000000 0.000000 +instancedropzone=five 4495.966797 0.000000 1781.145996 0.000000 0.000000 0.000000 diff --git a/CONTENT/BT/MAPS/TEST1.MAP b/CONTENT/BT/MAPS/TEST1.MAP new file mode 100644 index 0000000..96d8e7e --- /dev/null +++ b/CONTENT/BT/MAPS/TEST1.MAP @@ -0,0 +1,31 @@ +[LAB_ONLY] // this file has not been approved for release + +[arcld] +type=model +modelfile=arcld.mod +[arena1] +type=include +file=arena1.map +[artrucks] +type=include +file=artrucks.map +[one] +type=dropzone +dropzone= 54.178699 20.000000 -662.464905 0.000000 -3.141593 0.000000 +dropzone= -170.500000 0.000000 260.899994 0.000000 0.000000 0.000000 +dropzone= -642.643005 0.000000 -347.921692 0.000000 -1.570796 0.000000 +dropzone= -641.043030 0.000000 -243.721603 0.000000 -1.570796 0.000000 +dropzone= 129.578705 10.000000 -412.364990 0.000000 -3.141593 0.000000 +dropzone= 172.478699 10.000000 -410.565002 0.000000 -3.141593 0.000000 +dropzone= 682.921692 20.000000 1.956543 0.000000 1.570796 0.000000 +dropzone= -357.643097 0.000000 -170.121796 0.000000 -1.570796 0.000000 +dropzone= -358.843109 0.000000 -130.121796 0.000000 -1.570796 0.000000 +dropzone= -51.121311 20.000000 -662.965027 0.000000 -3.141593 0.000000 +dropzone= -129.600006 0.000000 263.299988 0.000000 0.000000 0.000000 +[test1] +type=map +instance=arcld 0 150 0 0 0 0 +instance=arena1 0 0 0 0 0 0 +instance=artrucks 0 0 0 0 0 0 +instancedropzone=one 0 0 0 0 0 0 + diff --git a/CONTENT/BT/MAPS/TEST5.MAP b/CONTENT/BT/MAPS/TEST5.MAP new file mode 100644 index 0000000..72a398e --- /dev/null +++ b/CONTENT/BT/MAPS/TEST5.MAP @@ -0,0 +1,21 @@ +[LAB_ONLY] // this file has not been approved for release + +[lntrk1] +type=model +modelfile=lntrk1.mod +[kurita] +type=model +modelfile=kurita.mod +[davion] +type=model +modelfile=davion.mod +[arena1] +type=include +file=arena1.map +[test5] +type=map +instance=kurita -1.000000 3.000000 0.000000 0.000000 0.000000 0.000000 500 Team Kurita, +instance=davion 6.000000 0.000000 0.000000 0.000000 0.000000 0.000000 500 Team Davion, +instance=lntrk1 -105.000000 0.000000 220.000000 0.000000 0.000000 0.000000 Team Kurita,dfltrole,Davion's Target, +instance=lntrk1 -128.000000 0.000000 -106.000000 0.000000 0.000000 0.000000 Team Davion,dfltrole,Kurita's Target, +instance=arena1 0 0 0 0 0 0 diff --git a/CONTENT/BT/MENU.BAT b/CONTENT/BT/MENU.BAT new file mode 100644 index 0000000..f3a05af --- /dev/null +++ b/CONTENT/BT/MENU.BAT @@ -0,0 +1,28 @@ +@echo off +echo. +echo commands: +echo. +echo btnet - network game (munga) - 'Q' to exit +echo btgo [map [mech]] - 1st person (munga) - F12 to exit +echo btlook [map [mech]] - fixed view (munga) - F12 to exit +echo btcam [map [mech]] - relative view (munga) - F12 to exit +echo btfly [map] - fly scene file (flyk) - Esc to exit +echo. +echo maps: +echo. +echo arena1 - Solaris VII Arena (default) +echo polar1 - somewhere cold +echo. +echo mechs: +echo. +echo blkhawk - Black Hawk +rem blkjack - Black Jack +rem firstrtr - Fire Starter +echo loki - Loki +echo madcat - MadCat +echo owens - Owens +rem raptor - Raptor +rem strider - Strider +echo thor - Thor (default) +echo vulture - Vulture +echo. diff --git a/CONTENT/BT/MODELS/AB01.MOD b/CONTENT/BT/MODELS/AB01.MOD new file mode 100644 index 0000000..e49a44b --- /dev/null +++ b/CONTENT/BT/MODELS/AB01.MOD @@ -0,0 +1,12 @@ +[video] +object=ab01.bgf + +[gauge] +image=ab01_ga.gim + +[collision] +name=ab01_cv.sld + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/BT/MODELS/AB02.MOD b/CONTENT/BT/MODELS/AB02.MOD new file mode 100644 index 0000000..1300bc9 --- /dev/null +++ b/CONTENT/BT/MODELS/AB02.MOD @@ -0,0 +1,12 @@ +[video] +object=ab02.bgf + +[gauge] +image=ab02_ga.gim + +[collision] +name=ab02_cv.sld + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/BT/MODELS/AB03.MOD b/CONTENT/BT/MODELS/AB03.MOD new file mode 100644 index 0000000..0bf8fb7 --- /dev/null +++ b/CONTENT/BT/MODELS/AB03.MOD @@ -0,0 +1,12 @@ +[video] +object=ab03.bgf + +[gauge] +image=ab03_ga.gim + +[collision] +name=ab03_cv.sld + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/BT/MODELS/AB04.MOD b/CONTENT/BT/MODELS/AB04.MOD new file mode 100644 index 0000000..285c0c1 --- /dev/null +++ b/CONTENT/BT/MODELS/AB04.MOD @@ -0,0 +1,12 @@ +[video] +object=ab04.bgf + +[gauge] +image=ab04_ga.gim + +[collision] +name=ab04_cv.sld + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/BT/MODELS/AB05.MOD b/CONTENT/BT/MODELS/AB05.MOD new file mode 100644 index 0000000..7e54627 --- /dev/null +++ b/CONTENT/BT/MODELS/AB05.MOD @@ -0,0 +1,12 @@ +[video] +object=ab05.bgf + +[gauge] +image=ab05_ga.gim + +[collision] +name=ab05_cv.sld + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/BT/MODELS/AB06.MOD b/CONTENT/BT/MODELS/AB06.MOD new file mode 100644 index 0000000..843f7c9 --- /dev/null +++ b/CONTENT/BT/MODELS/AB06.MOD @@ -0,0 +1,12 @@ +[video] +object=ab06.bgf + +[gauge] +image=ab06_ga.gim + +[collision] +name=ab06_cv.sld + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/BT/MODELS/AB06D.MOD b/CONTENT/BT/MODELS/AB06D.MOD new file mode 100644 index 0000000..677713f --- /dev/null +++ b/CONTENT/BT/MODELS/AB06D.MOD @@ -0,0 +1,12 @@ +[video] +object=ab06d.bgf ab06d_FR.bgf + +[gauge] +image=ab06_ga.gim + +[collision] +name=ab06d_cv.sld + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/BT/MODELS/AB07.MOD b/CONTENT/BT/MODELS/AB07.MOD new file mode 100644 index 0000000..f4f62fa --- /dev/null +++ b/CONTENT/BT/MODELS/AB07.MOD @@ -0,0 +1,17 @@ +[video] +object=ab07.bgf +rubble=ab07d.bgf ab07d_FR.bgf + +[gauge] +image=ab07_ga.gim + +[collision] +name=ab07_cv.sld + +[gamedata] +class=CulturalIconClassID +DamageZones=med.dmg +StoppingCollisionVolume=1 +ExplosionModelFile=meddead +TimeDelay=0.5 + diff --git a/CONTENT/BT/MODELS/AB08.MOD b/CONTENT/BT/MODELS/AB08.MOD new file mode 100644 index 0000000..2efdeeb --- /dev/null +++ b/CONTENT/BT/MODELS/AB08.MOD @@ -0,0 +1,8 @@ +[video] +object=ab08.bgf + +[gauge] +image=ab08_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/AB09.MOD b/CONTENT/BT/MODELS/AB09.MOD new file mode 100644 index 0000000..dc99fba --- /dev/null +++ b/CONTENT/BT/MODELS/AB09.MOD @@ -0,0 +1,13 @@ +[video] +object=ab09.bgf + +[gauge] +image=ab09_ga.gim + +[collision] +name=ab09_cv.sld + +[gamedata] +class=UnscalableTerrainClassID + + diff --git a/CONTENT/BT/MODELS/AB09D.MOD b/CONTENT/BT/MODELS/AB09D.MOD new file mode 100644 index 0000000..7652d8b --- /dev/null +++ b/CONTENT/BT/MODELS/AB09D.MOD @@ -0,0 +1,13 @@ +[video] +object=ab09d.bgf ab09d_FR.bgf + +[gauge] +image=ab09_ga.gim + +[collision] +name=ab09d_cv.sld + +[gamedata] +class=UnscalableTerrainClassID + + diff --git a/CONTENT/BT/MODELS/AB10.MOD b/CONTENT/BT/MODELS/AB10.MOD new file mode 100644 index 0000000..a2fbf52 --- /dev/null +++ b/CONTENT/BT/MODELS/AB10.MOD @@ -0,0 +1,12 @@ +[video] +object=ab10.bgf + +[gauge] +image=ab10_ga.gim + +[collision] +name=ab10_cv.sld + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/BT/MODELS/AB10D.MOD b/CONTENT/BT/MODELS/AB10D.MOD new file mode 100644 index 0000000..181d46d --- /dev/null +++ b/CONTENT/BT/MODELS/AB10D.MOD @@ -0,0 +1,12 @@ +[video] +object=ab10d.bgf ab10d_FR.bgf + +[gauge] +image=ab10_ga.gim + +[collision] +name=ab10d_cv.sld + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/BT/MODELS/ACT01.MOD b/CONTENT/BT/MODELS/ACT01.MOD new file mode 100644 index 0000000..ec47ba0 --- /dev/null +++ b/CONTENT/BT/MODELS/ACT01.MOD @@ -0,0 +1,5 @@ +[video] +object=act01.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/ACT02.MOD b/CONTENT/BT/MODELS/ACT02.MOD new file mode 100644 index 0000000..7376047 --- /dev/null +++ b/CONTENT/BT/MODELS/ACT02.MOD @@ -0,0 +1,5 @@ +[video] +object=act02.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/ACT03.MOD b/CONTENT/BT/MODELS/ACT03.MOD new file mode 100644 index 0000000..c87c861 --- /dev/null +++ b/CONTENT/BT/MODELS/ACT03.MOD @@ -0,0 +1,5 @@ +[video] +object=act03.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/ACT04.MOD b/CONTENT/BT/MODELS/ACT04.MOD new file mode 100644 index 0000000..5c5769d --- /dev/null +++ b/CONTENT/BT/MODELS/ACT04.MOD @@ -0,0 +1,5 @@ +[video] +object=act04.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/ACT05.MOD b/CONTENT/BT/MODELS/ACT05.MOD new file mode 100644 index 0000000..4a393ae --- /dev/null +++ b/CONTENT/BT/MODELS/ACT05.MOD @@ -0,0 +1,5 @@ +[video] +object=act05.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/AD01.MOD b/CONTENT/BT/MODELS/AD01.MOD new file mode 100644 index 0000000..4dc3a3d --- /dev/null +++ b/CONTENT/BT/MODELS/AD01.MOD @@ -0,0 +1,8 @@ +[video] +object=ad01.bgf + +[gauge] +image=ad01_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/ADSUP1.MOD b/CONTENT/BT/MODELS/ADSUP1.MOD new file mode 100644 index 0000000..1b93f93 --- /dev/null +++ b/CONTENT/BT/MODELS/ADSUP1.MOD @@ -0,0 +1,5 @@ +[video] +object=adsup1.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/ADSUP2.MOD b/CONTENT/BT/MODELS/ADSUP2.MOD new file mode 100644 index 0000000..8ebca70 --- /dev/null +++ b/CONTENT/BT/MODELS/ADSUP2.MOD @@ -0,0 +1,5 @@ +[video] +object=adsup2.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/ADWLK1.MOD b/CONTENT/BT/MODELS/ADWLK1.MOD new file mode 100644 index 0000000..36786e5 --- /dev/null +++ b/CONTENT/BT/MODELS/ADWLK1.MOD @@ -0,0 +1,12 @@ +[video] +object=adwlk1.bgf + +[collision] +name=adwlk1~1.sld + +[gamedata] +class=CulturalIconClassID +DamageZones=med.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=meddead +TimeDelay=0.5 diff --git a/CONTENT/BT/MODELS/ADWLK2.MOD b/CONTENT/BT/MODELS/ADWLK2.MOD new file mode 100644 index 0000000..b516e30 --- /dev/null +++ b/CONTENT/BT/MODELS/ADWLK2.MOD @@ -0,0 +1,12 @@ +[video] +object=adwlk2.bgf + +[collision] +name=adwlk2~1.sld + +[gamedata] +class=CulturalIconClassID +DamageZones=med.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=meddead +TimeDelay=0.5 diff --git a/CONTENT/BT/MODELS/ADWLK3.MOD b/CONTENT/BT/MODELS/ADWLK3.MOD new file mode 100644 index 0000000..c022ed4 --- /dev/null +++ b/CONTENT/BT/MODELS/ADWLK3.MOD @@ -0,0 +1,12 @@ +[video] +object=adwlk3.bgf + +[collision] +name=adwlk3~1.sld + +[gamedata] +class=CulturalIconClassID +DamageZones=med.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=meddead +TimeDelay=0.5 diff --git a/CONTENT/BT/MODELS/AFC100.SUB b/CONTENT/BT/MODELS/AFC100.SUB new file mode 100644 index 0000000..2c246f1 --- /dev/null +++ b/CONTENT/BT/MODELS/AFC100.SUB @@ -0,0 +1,31 @@ +[ProjectileWeapon] +Type=ProjectileWeaponClassID +StartingTemperature=77.0 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +ThermalConductance=3.55e5 +ThermalMass=9.47e4 +HeatSink=None +AmmoBin=None +VoltageSource=None +TracerInterval=1 +ExplosionModelFile=canhit +RechargeRate=8.0 +DamageAmount=25.0 +DamageType=BallisticDamage +WeaponDamagePoints=3.0 +WeaponRange=400 +HeatCostToFire=6.5e7 +VitalSubsystem=False +ThermalResistivityCoefficient=0.0024 +AuxScreenNumber=0 +AuxScreenLabel=qafc100.pcc +EngScreenLabel=eafc100.pcc +MinTimeOfFlight=1000000 +MinVoltagePercentToFire=0.30 +MinJamChance=0.05 +StartTime=1.0 +PipPosition=1 +PipColor=1.0 0.5 0.0 +PipExtendedRange=False +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT/MODELS/AFC25.SUB b/CONTENT/BT/MODELS/AFC25.SUB new file mode 100644 index 0000000..65c9876 --- /dev/null +++ b/CONTENT/BT/MODELS/AFC25.SUB @@ -0,0 +1,31 @@ +[ProjectileWeapon] +Type=ProjectileWeaponClassID +StartingTemperature=77.0 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +ThermalConductance=1.78e5 +ThermalMass=1.19e4 +HeatSink=None +AmmoBin=None +VoltageSource=None +TracerInterval=1 +ExplosionModelFile=canhit +RechargeRate=2.0 +DamageAmount=7.0 +DamageType=BallisticDamage +WeaponDamagePoints=3.0 +WeaponRange=900 +HeatCostToFire=1.5e6 +VitalSubsystem=False +ThermalResistivityCoefficient=0.0024 +AuxScreenNumber=0 +AuxScreenLabel=qafc25.pcc +EngScreenLabel=eafc25.pcc +MinTimeOfFlight=1000000 +MinVoltagePercentToFire=0.30 +MinJamChance=0.05 +StartTime=1.0 +PipPosition=1 +PipColor=1.0 0.5 0.0 +PipExtendedRange=False +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT/MODELS/AFC5.SUB b/CONTENT/BT/MODELS/AFC5.SUB new file mode 100644 index 0000000..7e1a3f0 --- /dev/null +++ b/CONTENT/BT/MODELS/AFC5.SUB @@ -0,0 +1,31 @@ +[ProjectileWeapon] +Type=ProjectileWeaponClassID +StartingTemperature=77.0 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +ThermalConductance=1.78e5 +ThermalMass=1.19e4 +HeatSink=None +AmmoBin=None +VoltageSource=None +TracerInterval=1.0 +ExplosionModelFile=canhit +RechargeRate=1.0 +DamageAmount=3.0 +DamageType=BallisticDamage +WeaponDamagePoints=2.0 +WeaponRange=1500 +HeatCostToFire=1.0e6 +VitalSubsystem=False +ThermalResistivityCoefficient=0.0024 +AuxScreenNumber=0 +AuxScreenLabel=qafc5.pcc +EngScreenLabel=eafc5.pcc +MinTimeOfFlight=1000000 +MinVoltagePercentToFire=0.30 +MinJamChance=0.02 +StartTime=1.0 +PipPosition=1 +PipColor=1.0 0.5 0.0 +PipExtendedRange=False +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT/MODELS/AFC50.SUB b/CONTENT/BT/MODELS/AFC50.SUB new file mode 100644 index 0000000..0aa8398 --- /dev/null +++ b/CONTENT/BT/MODELS/AFC50.SUB @@ -0,0 +1,31 @@ +[ProjectileWeapon] +Type=ProjectileWeaponClassID +StartingTemperature=77.0 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +ThermalConductance=2.37e5 +ThermalMass=3.16e4 +HeatSink=None +AmmoBin=None +VoltageSource=None +TracerInterval=1 +ExplosionModelFile=canhit +RechargeRate=4.0 +DamageAmount=13.0 +DamageType=BallisticDamage +WeaponDamagePoints=3.0 +WeaponRange=750 +HeatCostToFire=2.0e7 +VitalSubsystem=False +ThermalResistivityCoefficient=0.0024 +AuxScreenNumber=0 +AuxScreenLabel=qafc50.pcc +EngScreenLabel=eafc50.pcc +MinTimeOfFlight=1000000 +MinVoltagePercentToFire=0.30 +MinJamChance=0.05 +PipPosition=1 +PipColor=1.0 0.5 0.0 +PipExtendedRange=False +StartTime=1.0 +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT/MODELS/AFLOOR.MOD b/CONTENT/BT/MODELS/AFLOOR.MOD new file mode 100644 index 0000000..0c51d85 --- /dev/null +++ b/CONTENT/BT/MODELS/AFLOOR.MOD @@ -0,0 +1,8 @@ +[video] +object=afloor.bgf + +[collision] +name=afloor~1.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/AMAFC100.SUB b/CONTENT/BT/MODELS/AMAFC100.SUB new file mode 100644 index 0000000..67ddf31 --- /dev/null +++ b/CONTENT/BT/MODELS/AMAFC100.SUB @@ -0,0 +1,14 @@ +[AmmoBin] +Type=AmmoBinClassID +ArmorValue=20.0 +WatchedSubsystem=None +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +AmmoCount=15 +FeedRate=2.0 +AmmoClassID=ProjectileClassID +AmmoModelFile=projtile +WeaponDamagePoints=2.0 +ExplosionModelFile=canhit +VitalSubsystem=False +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT/MODELS/AMBSSDOR.MOD b/CONTENT/BT/MODELS/AMBSSDOR.MOD new file mode 100644 index 0000000..286683e --- /dev/null +++ b/CONTENT/BT/MODELS/AMBSSDOR.MOD @@ -0,0 +1,8 @@ +[gamedata] +class=ScenarioRoleClassID +KillBonus=500.0 +DamageReceivedModifier=1.0 +DamageInflictedModifier=1.0 +DamageBias=1.0 +FriendlyFirePenalty=1.0 +ReturnFromDeath=100 diff --git a/CONTENT/BT/MODELS/AMLBX100.SUB b/CONTENT/BT/MODELS/AMLBX100.SUB new file mode 100644 index 0000000..dca5273 --- /dev/null +++ b/CONTENT/BT/MODELS/AMLBX100.SUB @@ -0,0 +1,16 @@ +[AmmoBin] +Type=AmmoBinClassID +ArmorValue=20.0 +WatchedSubsystem=None +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +AmmoCount=15 +FeedRate=2.0 +AmmoClassID=MissileClassID +AmmoModelFile=lbx +StandardResistance=1.0 +VoltageSource=None +WeaponDamagePoints=2.0 +ExplosionModelFile=canhit +VitalSubsystem=False +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT/MODELS/AMMAFC25.SUB b/CONTENT/BT/MODELS/AMMAFC25.SUB new file mode 100644 index 0000000..55c80ad --- /dev/null +++ b/CONTENT/BT/MODELS/AMMAFC25.SUB @@ -0,0 +1,14 @@ +[AmmoBin] +Type=AmmoBinClassID +ArmorValue=20.0 +WatchedSubsystem=None +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +AmmoCount=200 +FeedRate=2.0 +AmmoClassID=ProjectileClassID +AmmoModelFile=projtile +WeaponDamagePoints=2.0 +ExplosionModelFile=canhit +VitalSubsystem=False +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT/MODELS/AMMAFC5.SUB b/CONTENT/BT/MODELS/AMMAFC5.SUB new file mode 100644 index 0000000..5633bfd --- /dev/null +++ b/CONTENT/BT/MODELS/AMMAFC5.SUB @@ -0,0 +1,14 @@ +[AmmoBin] +Type=AmmoBinClassID +ArmorValue=20.0 +WatchedSubsystem=None +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +AmmoCount=500 +FeedRate=0.2 +AmmoClassID=ProjectileClassID +AmmoModelFile=projtile +WeaponDamagePoints=2.0 +ExplosionModelFile=canhit +VitalSubsystem=False +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT/MODELS/AMMAFC50.SUB b/CONTENT/BT/MODELS/AMMAFC50.SUB new file mode 100644 index 0000000..68b92ef --- /dev/null +++ b/CONTENT/BT/MODELS/AMMAFC50.SUB @@ -0,0 +1,14 @@ +[AmmoBin] +Type=AmmoBinClassID +ArmorValue=20.0 +WatchedSubsystem=None +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +AmmoCount=100 +FeedRate=0.20 +AmmoClassID=ProjectileClassID +AmmoModelFile=projtile +WeaponDamagePoints=2.0 +ExplosionModelFile=canhit +VitalSubsystem=False +CriticalHitScoreBonus=0 \ No newline at end of file diff --git a/CONTENT/BT/MODELS/AMMLBX25.SUB b/CONTENT/BT/MODELS/AMMLBX25.SUB new file mode 100644 index 0000000..6073aa3 --- /dev/null +++ b/CONTENT/BT/MODELS/AMMLBX25.SUB @@ -0,0 +1,16 @@ +[AmmoBin] +Type=AmmoBinClassID +ArmorValue=20.0 +WatchedSubsystem=None +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +AmmoCount=200 +FeedRate=2.0 +AmmoClassID=MissileClassID +AmmoModelFile=lbx +StandardResistance=1.0 +VoltageSource=None +WeaponDamagePoints=2.0 +ExplosionModelFile=canhit +VitalSubsystem=False +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT/MODELS/AMMLBX5.SUB b/CONTENT/BT/MODELS/AMMLBX5.SUB new file mode 100644 index 0000000..f2fecf6 --- /dev/null +++ b/CONTENT/BT/MODELS/AMMLBX5.SUB @@ -0,0 +1,16 @@ +[AmmoBin] +Type=AmmoBinClassID +ArmorValue=20.0 +WatchedSubsystem=None +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +AmmoCount=500 +FeedRate=0.2 +AmmoClassID=MissileClassID +AmmoModelFile=lbx +StandardResistance=1.0 +VoltageSource=None +WeaponDamagePoints=2.0 +ExplosionModelFile=canhit +VitalSubsystem=False +CriticalHitScoreBonus=0 \ No newline at end of file diff --git a/CONTENT/BT/MODELS/AMMLBX50.SUB b/CONTENT/BT/MODELS/AMMLBX50.SUB new file mode 100644 index 0000000..95cd98d --- /dev/null +++ b/CONTENT/BT/MODELS/AMMLBX50.SUB @@ -0,0 +1,16 @@ +[AmmoBin] +Type=AmmoBinClassID +ArmorValue=20.0 +WatchedSubsystem=None +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +AmmoCount=100 +FeedRate=0.20 +AmmoClassID=MissileClassID +AmmoModelFile=lbx +StandardResistance=1.0 +VoltageSource=None +WeaponDamagePoints=2.0 +ExplosionModelFile=canhit +VitalSubsystem=False +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT/MODELS/AMMLRM10.SUB b/CONTENT/BT/MODELS/AMMLRM10.SUB new file mode 100644 index 0000000..3faa5ec --- /dev/null +++ b/CONTENT/BT/MODELS/AMMLRM10.SUB @@ -0,0 +1,16 @@ +[AmmoBin] +Type=AmmoBinClassID +ArmorValue=20.0 +WatchedSubsystem=None +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +AmmoCount=36 +FeedRate=0.50 +AmmoClassID=MissileClassID +AmmoModelFile=lrm +StandardResistance=1.0 +VoltageSource=None +WeaponDamagePoints=2.0 +ExplosionModelFile=mslhit +VitalSubsystem=False +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT/MODELS/AMMLRM15.SUB b/CONTENT/BT/MODELS/AMMLRM15.SUB new file mode 100644 index 0000000..3faa5ec --- /dev/null +++ b/CONTENT/BT/MODELS/AMMLRM15.SUB @@ -0,0 +1,16 @@ +[AmmoBin] +Type=AmmoBinClassID +ArmorValue=20.0 +WatchedSubsystem=None +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +AmmoCount=36 +FeedRate=0.50 +AmmoClassID=MissileClassID +AmmoModelFile=lrm +StandardResistance=1.0 +VoltageSource=None +WeaponDamagePoints=2.0 +ExplosionModelFile=mslhit +VitalSubsystem=False +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT/MODELS/AMMLRM20.SUB b/CONTENT/BT/MODELS/AMMLRM20.SUB new file mode 100644 index 0000000..3faa5ec --- /dev/null +++ b/CONTENT/BT/MODELS/AMMLRM20.SUB @@ -0,0 +1,16 @@ +[AmmoBin] +Type=AmmoBinClassID +ArmorValue=20.0 +WatchedSubsystem=None +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +AmmoCount=36 +FeedRate=0.50 +AmmoClassID=MissileClassID +AmmoModelFile=lrm +StandardResistance=1.0 +VoltageSource=None +WeaponDamagePoints=2.0 +ExplosionModelFile=mslhit +VitalSubsystem=False +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT/MODELS/AMMLRM5.SUB b/CONTENT/BT/MODELS/AMMLRM5.SUB new file mode 100644 index 0000000..b10a871 --- /dev/null +++ b/CONTENT/BT/MODELS/AMMLRM5.SUB @@ -0,0 +1,16 @@ +[AmmoBin] +Type=AmmoBinClassID +ArmorValue=10.0 +WatchedSubsystem=None +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +AmmoCount=36 +FeedRate=0.50 +AmmoClassID=MissileClassID +AmmoModelFile=lrm +StandardResistance=1.0 +VoltageSource=None +WeaponDamagePoints=2.0 +ExplosionModelFile=mslhit +VitalSubsystem=False +CriticalHitScoreBonus=0 \ No newline at end of file diff --git a/CONTENT/BT/MODELS/AMMNRK10.SUB b/CONTENT/BT/MODELS/AMMNRK10.SUB new file mode 100644 index 0000000..96c70cc --- /dev/null +++ b/CONTENT/BT/MODELS/AMMNRK10.SUB @@ -0,0 +1,16 @@ +[AmmoBin] +Type=AmmoBinClassID +ArmorValue=20.0 +WatchedSubsystem=None +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +AmmoCount=36 +FeedRate=0.50 +AmmoClassID=MissileClassID +AmmoModelFile=nrk +StandardResistance=1.0 +VoltageSource=None +WeaponDamagePoints=2.0 +ExplosionModelFile=mslhit +VitalSubsystem=False +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT/MODELS/AMMNRK15.SUB b/CONTENT/BT/MODELS/AMMNRK15.SUB new file mode 100644 index 0000000..96c70cc --- /dev/null +++ b/CONTENT/BT/MODELS/AMMNRK15.SUB @@ -0,0 +1,16 @@ +[AmmoBin] +Type=AmmoBinClassID +ArmorValue=20.0 +WatchedSubsystem=None +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +AmmoCount=36 +FeedRate=0.50 +AmmoClassID=MissileClassID +AmmoModelFile=nrk +StandardResistance=1.0 +VoltageSource=None +WeaponDamagePoints=2.0 +ExplosionModelFile=mslhit +VitalSubsystem=False +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT/MODELS/AMMNRK20.SUB b/CONTENT/BT/MODELS/AMMNRK20.SUB new file mode 100644 index 0000000..96c70cc --- /dev/null +++ b/CONTENT/BT/MODELS/AMMNRK20.SUB @@ -0,0 +1,16 @@ +[AmmoBin] +Type=AmmoBinClassID +ArmorValue=20.0 +WatchedSubsystem=None +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +AmmoCount=36 +FeedRate=0.50 +AmmoClassID=MissileClassID +AmmoModelFile=nrk +StandardResistance=1.0 +VoltageSource=None +WeaponDamagePoints=2.0 +ExplosionModelFile=mslhit +VitalSubsystem=False +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT/MODELS/AMMNRK5.SUB b/CONTENT/BT/MODELS/AMMNRK5.SUB new file mode 100644 index 0000000..a85a374 --- /dev/null +++ b/CONTENT/BT/MODELS/AMMNRK5.SUB @@ -0,0 +1,16 @@ +[AmmoBin] +Type=AmmoBinClassID +ArmorValue=10.0 +WatchedSubsystem=None +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +AmmoCount=36 +FeedRate=0.50 +AmmoClassID=MissileClassID +AmmoModelFile=nrk +StandardResistance=1.0 +VoltageSource=None +WeaponDamagePoints=2.0 +ExplosionModelFile=mslhit +VitalSubsystem=False +CriticalHitScoreBonus=0 \ No newline at end of file diff --git a/CONTENT/BT/MODELS/AMMOAC.SUB b/CONTENT/BT/MODELS/AMMOAC.SUB new file mode 100644 index 0000000..5415864 --- /dev/null +++ b/CONTENT/BT/MODELS/AMMOAC.SUB @@ -0,0 +1,15 @@ +[AmmoBin] +Type=AmmoBinClassID +ArmorValue=20.0 +StartingTemperature=300.0 +ThermalConductance=1.0 +ThermalMass=1.0 +HeatSink=None +AmmoCount=200 +FeedRate=0.50 +AmmoClassID=ProjectileClassID +AmmoModelFile=projtile +StandardResistance=1.0 +VoltageSource=None +WeaponDamagePoints=2.0 +CriticalHitScoreBonus=0 \ No newline at end of file diff --git a/CONTENT/BT/MODELS/AMMOAC10.SUB b/CONTENT/BT/MODELS/AMMOAC10.SUB new file mode 100644 index 0000000..2490fb2 --- /dev/null +++ b/CONTENT/BT/MODELS/AMMOAC10.SUB @@ -0,0 +1,14 @@ +[AmmoBin] +Type=AmmoBinClassID +ArmorValue=20.0 +WatchedSubsystem=None +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +AmmoCount=200 +FeedRate=0.50 +AmmoClassID=ProjectileClassID +AmmoModelFile=projtile +WeaponDamagePoints=2.0 +ExplosionModelFile=canhit +VitalSubsystem=False +CriticalHitScoreBonus=0 \ No newline at end of file diff --git a/CONTENT/BT/MODELS/AMMOGAUS.SUB b/CONTENT/BT/MODELS/AMMOGAUS.SUB new file mode 100644 index 0000000..9dec700 --- /dev/null +++ b/CONTENT/BT/MODELS/AMMOGAUS.SUB @@ -0,0 +1,14 @@ +[AmmoBin] +Type=AmmoBinClassID +ArmorValue=20.0 +WatchedSubsystem=None +DegradationTemperature=4000.0 +FailureTemperature=8000.0 +AmmoCount=12 +FeedRate=0.50 +AmmoClassID=ProjectileClassID +AmmoModelFile=projtile +WeaponDamagePoints=2.0 +ExplosionModelFile=mghit +VitalSubsystem=False +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT/MODELS/AMMOMG.SUB b/CONTENT/BT/MODELS/AMMOMG.SUB new file mode 100644 index 0000000..106f180 --- /dev/null +++ b/CONTENT/BT/MODELS/AMMOMG.SUB @@ -0,0 +1,16 @@ +[AmmoBin] +Type=AmmoBinClassID +ArmorValue=20.0 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +WatchedSubsystem=None +AmmoCount=200 +FeedRate=0.1 +AmmoClassID=ProjectileClassID +AmmoModelFile=projtile +StandardResistance=1.0 +VoltageSource=None +WeaponDamagePoints=2.0 +ExplosionModelFile=canhit +VitalSubsystem=False +CriticalHitScoreBonus=0 \ No newline at end of file diff --git a/CONTENT/BT/MODELS/AMMSRM2.SUB b/CONTENT/BT/MODELS/AMMSRM2.SUB new file mode 100644 index 0000000..a7c3dee --- /dev/null +++ b/CONTENT/BT/MODELS/AMMSRM2.SUB @@ -0,0 +1,16 @@ +[AmmoBin] +Type=AmmoBinClassID +ArmorValue=20.0 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +WatchedSubsystem=None +AmmoCount=24 +FeedRate=0.50 +AmmoClassID=MissileClassID +AmmoModelFile=srm +StandardResistance=1.0 +VoltageSource=None +WeaponDamagePoints=2.0 +ExplosionModelFile=mslhit +VitalSubsystem=False +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT/MODELS/AMMSRM25.SUB b/CONTENT/BT/MODELS/AMMSRM25.SUB new file mode 100644 index 0000000..5b58a6d --- /dev/null +++ b/CONTENT/BT/MODELS/AMMSRM25.SUB @@ -0,0 +1,16 @@ +[AmmoBin] +Type=AmmoBinClassID +ArmorValue=20.0 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +WatchedSubsystem=None +AmmoCount=25 +FeedRate=0.50 +AmmoClassID=MissileClassID +AmmoModelFile=srm +StandardResistance=1.0 +VoltageSource=None +WeaponDamagePoints=2.0 +ExplosionModelFile=mslhit +VitalSubsystem=False +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT/MODELS/AMMSRM30.SUB b/CONTENT/BT/MODELS/AMMSRM30.SUB new file mode 100644 index 0000000..e496612 --- /dev/null +++ b/CONTENT/BT/MODELS/AMMSRM30.SUB @@ -0,0 +1,16 @@ +[AmmoBin] +Type=AmmoBinClassID +ArmorValue=20.0 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +WatchedSubsystem=None +AmmoCount=30 +FeedRate=0.50 +AmmoClassID=MissileClassID +AmmoModelFile=srm +StandardResistance=1.0 +VoltageSource=None +WeaponDamagePoints=2.0 +ExplosionModelFile=mslhit +VitalSubsystem=False +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT/MODELS/AMMSRM4.SUB b/CONTENT/BT/MODELS/AMMSRM4.SUB new file mode 100644 index 0000000..a7c3dee --- /dev/null +++ b/CONTENT/BT/MODELS/AMMSRM4.SUB @@ -0,0 +1,16 @@ +[AmmoBin] +Type=AmmoBinClassID +ArmorValue=20.0 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +WatchedSubsystem=None +AmmoCount=24 +FeedRate=0.50 +AmmoClassID=MissileClassID +AmmoModelFile=srm +StandardResistance=1.0 +VoltageSource=None +WeaponDamagePoints=2.0 +ExplosionModelFile=mslhit +VitalSubsystem=False +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT/MODELS/AMMSRM6.SUB b/CONTENT/BT/MODELS/AMMSRM6.SUB new file mode 100644 index 0000000..443291c --- /dev/null +++ b/CONTENT/BT/MODELS/AMMSRM6.SUB @@ -0,0 +1,16 @@ +[AmmoBin] +Type=AmmoBinClassID +ArmorValue=20.0 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +WatchedSubsystem=None +AmmoCount=36 +FeedRate=0.50 +AmmoClassID=MissileClassID +AmmoModelFile=srm +StandardResistance=1.0 +VoltageSource=None +WeaponDamagePoints=2.0 +ExplosionModelFile=mslhit +VitalSubsystem=False +CriticalHitScoreBonus=0 \ No newline at end of file diff --git a/CONTENT/BT/MODELS/AMMSTRK2.SUB b/CONTENT/BT/MODELS/AMMSTRK2.SUB new file mode 100644 index 0000000..5a62292 --- /dev/null +++ b/CONTENT/BT/MODELS/AMMSTRK2.SUB @@ -0,0 +1,16 @@ +[AmmoBin] +Type=AmmoBinClassID +ArmorValue=20.0 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +WatchedSubsystem=None +AmmoCount=24 +FeedRate=0.50 +AmmoClassID=MissileClassID +AmmoModelFile=strk +StandardResistance=1.0 +VoltageSource=None +WeaponDamagePoints=2.0 +ExplosionModelFile=mslhit +VitalSubsystem=False +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT/MODELS/AMMSTRK4.SUB b/CONTENT/BT/MODELS/AMMSTRK4.SUB new file mode 100644 index 0000000..5a62292 --- /dev/null +++ b/CONTENT/BT/MODELS/AMMSTRK4.SUB @@ -0,0 +1,16 @@ +[AmmoBin] +Type=AmmoBinClassID +ArmorValue=20.0 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +WatchedSubsystem=None +AmmoCount=24 +FeedRate=0.50 +AmmoClassID=MissileClassID +AmmoModelFile=strk +StandardResistance=1.0 +VoltageSource=None +WeaponDamagePoints=2.0 +ExplosionModelFile=mslhit +VitalSubsystem=False +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT/MODELS/AMMSTRK6.SUB b/CONTENT/BT/MODELS/AMMSTRK6.SUB new file mode 100644 index 0000000..38d67ba --- /dev/null +++ b/CONTENT/BT/MODELS/AMMSTRK6.SUB @@ -0,0 +1,16 @@ +[AmmoBin] +Type=AmmoBinClassID +ArmorValue=20.0 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +WatchedSubsystem=None +AmmoCount=36 +FeedRate=0.50 +AmmoClassID=MissileClassID +AmmoModelFile=strk +StandardResistance=1.0 +VoltageSource=None +WeaponDamagePoints=2.0 +ExplosionModelFile=mslhit +VitalSubsystem=False +CriticalHitScoreBonus=0 \ No newline at end of file diff --git a/CONTENT/BT/MODELS/APC.MOD b/CONTENT/BT/MODELS/APC.MOD new file mode 100644 index 0000000..f2b4d3c --- /dev/null +++ b/CONTENT/BT/MODELS/APC.MOD @@ -0,0 +1,17 @@ +[video] +object=apc.bgf apcs.bgf +rubble=apcd.bgf + +[collision] +name=apc.sld + +[gauge] +image=apc.gim + +[gamedata] +class=CulturalIconClassID +DamageZones=trk.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=trkdead +TimeDelay=0.5 +CrunchExplosionModelFile=stephit diff --git a/CONTENT/BT/MODELS/AR01.MOD b/CONTENT/BT/MODELS/AR01.MOD new file mode 100644 index 0000000..98bc239 --- /dev/null +++ b/CONTENT/BT/MODELS/AR01.MOD @@ -0,0 +1,12 @@ +[video] +object=ar01.bgf ar01_FR.bgf + +[gauge] +image=ar01_ga.gim + +[collision] +name=ar01_cv.sld + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/BT/MODELS/AR02.MOD b/CONTENT/BT/MODELS/AR02.MOD new file mode 100644 index 0000000..6ff591e --- /dev/null +++ b/CONTENT/BT/MODELS/AR02.MOD @@ -0,0 +1,12 @@ +[video] +object=ar02.bgf ar02_FR.bgf + +[gauge] +image=ar02_ga.gim + +[collision] +name=ar02_cv.sld + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/BT/MODELS/AR03.MOD b/CONTENT/BT/MODELS/AR03.MOD new file mode 100644 index 0000000..ff9c024 --- /dev/null +++ b/CONTENT/BT/MODELS/AR03.MOD @@ -0,0 +1,12 @@ +[video] +object=ar03.bgf ar03_FR.bgf + +[gauge] +image=ar03_ga.gim + +[collision] +name=ar03_cv.sld + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/BT/MODELS/AR04.MOD b/CONTENT/BT/MODELS/AR04.MOD new file mode 100644 index 0000000..b9942d2 --- /dev/null +++ b/CONTENT/BT/MODELS/AR04.MOD @@ -0,0 +1,12 @@ +[video] +object=ar04.bgf ar04_FR.bgf + +[gauge] +image=ar04_ga.gim + +[collision] +name=ar04_cv.sld + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/BT/MODELS/AR05.MOD b/CONTENT/BT/MODELS/AR05.MOD new file mode 100644 index 0000000..208637c --- /dev/null +++ b/CONTENT/BT/MODELS/AR05.MOD @@ -0,0 +1,12 @@ +[video] +object=ar05.bgf ar05_FR.bgf + +[gauge] +image=ar05_ga.gim + +[collision] +name=ar05_cv.sld + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/BT/MODELS/ARBAN1.MOD b/CONTENT/BT/MODELS/ARBAN1.MOD new file mode 100644 index 0000000..08fd208 --- /dev/null +++ b/CONTENT/BT/MODELS/ARBAN1.MOD @@ -0,0 +1,12 @@ +[video] +object=arban1.bgf + +[collision] +name=arban_cv.sld + +[gamedata] +class=CulturalIconClassID +DamageZones=med.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=meddead +TimeDelay=0.5 diff --git a/CONTENT/BT/MODELS/ARBAN2.MOD b/CONTENT/BT/MODELS/ARBAN2.MOD new file mode 100644 index 0000000..e20bde7 --- /dev/null +++ b/CONTENT/BT/MODELS/ARBAN2.MOD @@ -0,0 +1,12 @@ +[video] +object=arban2.bgf + +[collision] +name=arban_cv.sld + +[gamedata] +class=CulturalIconClassID +DamageZones=med.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=meddead +TimeDelay=0.5 diff --git a/CONTENT/BT/MODELS/ARBAN3.MOD b/CONTENT/BT/MODELS/ARBAN3.MOD new file mode 100644 index 0000000..5ef6651 --- /dev/null +++ b/CONTENT/BT/MODELS/ARBAN3.MOD @@ -0,0 +1,12 @@ +[video] +object=arban3.bgf + +[collision] +name=arban_cv.sld + +[gamedata] +class=CulturalIconClassID +DamageZones=med.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=meddead +TimeDelay=0.5 diff --git a/CONTENT/BT/MODELS/ARBAN4.MOD b/CONTENT/BT/MODELS/ARBAN4.MOD new file mode 100644 index 0000000..11f23a9 --- /dev/null +++ b/CONTENT/BT/MODELS/ARBAN4.MOD @@ -0,0 +1,12 @@ +[video] +object=arban4.bgf + +[collision] +name=arban_cv.sld + +[gamedata] +class=CulturalIconClassID +DamageZones=med.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=meddead +TimeDelay=0.5 diff --git a/CONTENT/BT/MODELS/ARBAN5.MOD b/CONTENT/BT/MODELS/ARBAN5.MOD new file mode 100644 index 0000000..0ce0586 --- /dev/null +++ b/CONTENT/BT/MODELS/ARBAN5.MOD @@ -0,0 +1,12 @@ +[video] +object=arban5.bgf + +[collision] +name=arban_cv.sld + +[gamedata] +class=CulturalIconClassID +DamageZones=med.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=meddead +TimeDelay=0.5 diff --git a/CONTENT/BT/MODELS/ARBAN6.MOD b/CONTENT/BT/MODELS/ARBAN6.MOD new file mode 100644 index 0000000..792249c --- /dev/null +++ b/CONTENT/BT/MODELS/ARBAN6.MOD @@ -0,0 +1,12 @@ +[video] +object=arban6.bgf + +[collision] +name=arban_cv.sld + +[gamedata] +class=CulturalIconClassID +DamageZones=med.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=meddead +TimeDelay=0.5 diff --git a/CONTENT/BT/MODELS/ARCLD.MOD b/CONTENT/BT/MODELS/ARCLD.MOD new file mode 100644 index 0000000..b306602 --- /dev/null +++ b/CONTENT/BT/MODELS/ARCLD.MOD @@ -0,0 +1,5 @@ +[video] +object=arcld.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/ARENA.MOD b/CONTENT/BT/MODELS/ARENA.MOD new file mode 100644 index 0000000..b80251f --- /dev/null +++ b/CONTENT/BT/MODELS/ARENA.MOD @@ -0,0 +1,11 @@ +[video] +object=arena.bgf + +[collision] +name=arena_cv.sld + +[gauge] +image=arena_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/ARHORIZ.MOD b/CONTENT/BT/MODELS/ARHORIZ.MOD new file mode 100644 index 0000000..62c3e58 --- /dev/null +++ b/CONTENT/BT/MODELS/ARHORIZ.MOD @@ -0,0 +1,5 @@ +[video] +object=arhoriz.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/ARLID.MOD b/CONTENT/BT/MODELS/ARLID.MOD new file mode 100644 index 0000000..d5ec25a --- /dev/null +++ b/CONTENT/BT/MODELS/ARLID.MOD @@ -0,0 +1,8 @@ +[video] +object=arlid.bgf + +[collision] +name=arlid_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/ARMOR1.DMG b/CONTENT/BT/MODELS/ARMOR1.DMG new file mode 100644 index 0000000..f3a81d4 --- /dev/null +++ b/CONTENT/BT/MODELS/ARMOR1.DMG @@ -0,0 +1,4 @@ +[default] +WeaponDamagePoints=10 +VitalDamageZone=True + diff --git a/CONTENT/BT/MODELS/ARMRMOVR.MOD b/CONTENT/BT/MODELS/ARMRMOVR.MOD new file mode 100644 index 0000000..67e6f23 --- /dev/null +++ b/CONTENT/BT/MODELS/ARMRMOVR.MOD @@ -0,0 +1,17 @@ +[video] +object=ARMRMOVR.bgf armrs.bgf +rubble=ARMRD.bgf + +[collision] +name=ARMRMOVR.sld + +[gauge] +image=armrmovr.gim + +[gamedata] +class=CulturalIconClassID +DamageZones=trk.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=trkdead +TimeDelay=0.5 +CrunchExplosionModelFile=stephit diff --git a/CONTENT/BT/MODELS/ARWC.MOD b/CONTENT/BT/MODELS/ARWC.MOD new file mode 100644 index 0000000..beee64d --- /dev/null +++ b/CONTENT/BT/MODELS/ARWC.MOD @@ -0,0 +1,5 @@ +[video] +object=arwc.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/ATTACKER.MOD b/CONTENT/BT/MODELS/ATTACKER.MOD new file mode 100644 index 0000000..286683e --- /dev/null +++ b/CONTENT/BT/MODELS/ATTACKER.MOD @@ -0,0 +1,8 @@ +[gamedata] +class=ScenarioRoleClassID +KillBonus=500.0 +DamageReceivedModifier=1.0 +DamageInflictedModifier=1.0 +DamageBias=1.0 +FriendlyFirePenalty=1.0 +ReturnFromDeath=100 diff --git a/CONTENT/BT/MODELS/AUDIO.BLD b/CONTENT/BT/MODELS/AUDIO.BLD new file mode 100644 index 0000000..ebdbae1 --- /dev/null +++ b/CONTENT/BT/MODELS/AUDIO.BLD @@ -0,0 +1,283 @@ +[DEFAULT_SUBS] +HeatSink= +Reservoir= +Condenser1= +Condenser2= +Condenser3= +Condenser4= +Condenser5= +Condenser6= +GeneratorA= +GeneratorB= +GeneratorC= +GeneratorD= +Myomers= +Avionics= +Gyroscope= +HUD= +Torso= +Searchlight= + +[INTERNAL_COMPONENTS] +ammomg.sub=abncmp.scp + +machgun.sub=saccmp.scp + +ammogaus.sub=abncmp.scp + +gaussrfl.sub=saccmp.scp + +ammafc5.sub=abncmp.scp +ammafc25.sub=abncmp.scp +ammafc50.sub=abncmp.scp +amafc100.sub=abncmp.scp + +afc5.sub=saccmp.scp +afc25.sub=saccmp.scp +afc50.sub=maccmp.scp +afc100.sub=laccmp.scp + +ammsrm2.sub=abncmp.scp +ammsrm4.sub=abncmp.scp +ammsrm6.sub=abncmp.scp + +ammstrk2.sub=abncmp.scp +ammstrk4.sub=abncmp.scp +ammstrk6.sub=abncmp.scp + +srm2.sub=srmcmp.scp +srm4.sub=srmcmp.scp +srm6.sub=srmcmp.scp + +strk2.sub=srmcmp.scp +strk4.sub=srmcmp.scp +strk6.sub=srmcmp.scp + +ammlrm5.sub=abncmp.scp +ammlrm10.sub=abncmp.scp +ammlrm15.sub=abncmp.scp +ammlrm20.sub=abncmp.scp + +ammnrk5.sub=abncmp.scp +ammnrk10.sub=abncmp.scp +ammnrk15.sub=abncmp.scp +ammnrk20.sub=abncmp.scp + +lrm5.sub=lrmcmp.scp +lrm10.sub=lrmcmp.scp +lrm15.sub=lrmcmp.scp +lrm20.sub=lrmcmp.scp + +nrk5.sub=lrmcmp.scp +nrk10.sub=lrmcmp.scp +nrk15.sub=lrmcmp.scp +nrk20.sub=lrmcmp.scp + +ermlaser.sub=ermcmp.scp +erslaser.sub=erscmp.scp +erllaser.sub=erlcmp.scp + +slaser.sub=slrcmp.scp +mlaser.sub=mlrcmp.scp +llaser.sub=llrcmp.scp + +ppc.sub=ppccmp.scp +erppc.sub=eppcmp.scp + +[INTERNAL_WATCHERS] +ammomg.sub=abntrg.scp + +machgun.sub=sactrg.scp + +ammogaus.sub=abntrg.scp + +gaussrfl.sub=sactrg.scp + +ammafc5.sub=abntrg.scp +ammafc25.sub=abntrg.scp +ammafc50.sub=abntrg.scp +amafc100.sub=abntrg.scp + +afc5.sub=sactrg.scp +afc25.sub=sactrg.scp +afc50.sub=mactrg.scp +afc100.sub=lactrg.scp + +ammsrm2.sub=abntrg.scp +ammsrm4.sub=abntrg.scp +ammsrm6.sub=abntrg.scp + +srm2.sub=srmtrg.scp +srm4.sub=srmtrg.scp +srm6.sub=srmtrg.scp + +ammstrk2.sub=abntrg.scp +ammstrk4.sub=abntrg.scp +ammstrk6.sub=abntrg.scp + +strk2.sub=srmtrg.scp +strk4.sub=srmtrg.scp +strk6.sub=srmtrg.scp + +ammlrm5.sub=abntrg.scp +ammlrm10.sub=abntrg.scp +ammlrm15.sub=abntrg.scp +ammlrm20.sub=abntrg.scp + +lrm5.sub=lrmtrg.scp +lrm10.sub=lrmtrg.scp +lrm15.sub=lrmtrg.scp +lrm20.sub=lrmtrg.scp + +ammnrk5.sub=abntrg.scp +ammnrk10.sub=abntrg.scp +ammnrk15.sub=abntrg.scp +ammnrk20.sub=abntrg.scp + +nrk5.sub=lrmtrg.scp +nrk10.sub=lrmtrg.scp +nrk15.sub=lrmtrg.scp +nrk20.sub=lrmtrg.scp + +ermlaser.sub=ermtrg.scp +erslaser.sub=erstrg.scp +erllaser.sub=erltrg.scp + +slaser.sub=slrtrg.scp +mlaser.sub=mlrtrg.scp +llaser.sub=llrtrg.scp + +ppc.sub=ppctrg.scp +erppc.sub=epptrg.scp + +[EXTERNAL_COMPONENTS] +ammomg.sub= + +machgun.sub=acncmpe.scp + +ammogaus.sub= + +gaussrfl.sub=acncmpe.scp + +ammafc5.sub= +ammafc25.sub= +ammafc50.sub= +amafc100.sub= + +afc5.sub=acncmpe.scp +afc25.sub=acncmpe.scp +afc50.sub=acncmpe.scp +afc100.sub=acncmpe.scp + +ammsrm2.sub= +ammsrm4.sub= +ammsrm6.sub= + +ammstrk2.sub= +ammstrk4.sub= +ammstrk6.sub= + +srm2.sub= +srm4.sub= +srm6.sub= + +strk2.sub= +strk4.sub= +strk6.sub= + +ammlrm5.sub= +ammlrm10.sub= +ammlrm15.sub= +ammlrm20.sub= + +lrm5.sub= +lrm10.sub= +lrm15.sub= +lrm20.sub= + +ammnrk5.sub= +ammnrk10.sub= +ammnrk15.sub= +ammnrk20.sub= + +nrk5.sub= +nrk10.sub= +nrk15.sub= +nrk20.sub= + +ermlaser.sub=glrcmpe.scp +erslaser.sub=glrcmpe.scp +erllaser.sub=glrcmpe.scp + +slaser.sub=glrcmpe.scp +mlaser.sub=glrcmpe.scp +llaser.sub=glrcmpe.scp + +ppc.sub=glrcmpe.scp +erppc.sub=glrcmpe.scp + +[EXTERNAL_WATCHERS] +ammomg.sub= + +machgun.sub=acntrge.scp + +ammogaus.sub= + +gaussrfl.sub=acntrge.scp + +ammafc5.sub= +ammafc25.sub= +ammafc50.sub= +amafc100.sub= + +afc5.sub=acntrge.scp +afc25.sub=acntrge.scp +afc50.sub=acntrge.scp +afc100.sub=acntrge.scp + +ammsrm2.sub= +ammsrm4.sub= +ammsrm6.sub= + +ammstrk2.sub= +ammstrk4.sub= +ammstrk6.sub= + +srm2.sub= +srm4.sub= +srm6.sub= + +strk2.sub= +strk4.sub= +strk6.sub= + +ammlrm5.sub= +ammlrm10.sub= +ammlrm15.sub= +ammlrm20.sub= + +lrm5.sub= +lrm10.sub= +lrm15.sub= +lrm20.sub= + +ammnrk5.sub= +ammnrk10.sub= +ammnrk15.sub= +ammnrk20.sub= + +nrk5.sub= +nrk10.sub= +nrk15.sub= +nrk20.sub= + +ermlaser.sub=glrtrge.scp +erslaser.sub=glrtrge.scp +erllaser.sub=glrtrge.scp + +slaser.sub=glrtrge.scp +mlaser.sub=glrtrge.scp +llaser.sub=glrtrge.scp + +ppc.sub=glrtrge.scp +erppc.sub=glrtrge.scp diff --git a/CONTENT/BT/MODELS/AVA1.DMG b/CONTENT/BT/MODELS/AVA1.DMG new file mode 100644 index 0000000..6cf0307 --- /dev/null +++ b/CONTENT/BT/MODELS/AVA1.DMG @@ -0,0 +1,192 @@ +// This file is intentionally empty and MUST be read-only! +[dz_dtorso] +ExplosionTable=ava1dmg.exp +DefaultEffectSiteName=siteedz_dtorso +WeaponDamagePoints=123 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Condenser5 2 0.500000 +CriticalSubsystem=GeneratorD 10 0.500000 +CriticalSubsystem=Avionics 5 0.200000 +CriticalSubsystem=Torso 15 0.333333 +CriticalSubsystem=ERMLaser_1 20 1.000000 +CriticalSubsystem=ERMLaser_2 20 1.000000 +[dz_hip] +ExplosionTable=ava1dmg.exp +DefaultEffectSiteName=siteedz_hip +WeaponDamagePoints=123 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Myomers 15 0.142857 +CriticalSubsystem=Gyroscope 15 0.333333 +CriticalSubsystem=Torso 15 0.333333 +[dz_larm] +ExplosionTable=ava1dmg.exp +DefaultEffectSiteName=siteedz_larm +WeaponDamagePoints=77 +VitalDamageZone=False +DescendOnDestruction=True +CriticalSubsystem=Condenser4 2 0.500000 +[dz_ldleg] +ExplosionTable=ava1dmg.exp +DefaultEffectSiteName=siteedz_ldleg +WeaponDamagePoints=90 +VitalDamageZone=True +LegDamageZone=LeftLeg +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Myomers 15 0.142857 +[dz_ldoor] +ExplosionTable=ava1dmg.exp +DefaultEffectSiteName=siteedz_ldoor +WeaponDamagePoints=1 +VitalDamageZone=False +[dz_lfoot] +ExplosionTable=ava1dmg.exp +DefaultEffectSiteName=siteedz_lfoot +WeaponDamagePoints=81 +VitalDamageZone=True +LegDamageZone=LeftLeg +CriticalSubsystem=Myomers 15 0.142857 +[dz_lgun] +ExplosionTable=ava1dmg.exp +DefaultEffectSiteName=siteedz_lgun +WeaponDamagePoints=72 +VitalDamageZone=False +DescendOnDestruction=True +CriticalSubsystem=Condenser4 2 0.500000 +CriticalSubsystem=PPC 10 1.000000 +[dz_ltorso] +ExplosionTable=ava1dmg.exp +DefaultEffectSiteName=siteedz_ltorso +WeaponDamagePoints=119 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Condenser1 2 0.500000 +CriticalSubsystem=GeneratorA 10 0.500000 +CriticalSubsystem=Avionics 5 0.200000 +CriticalSubsystem=AmmoBinLRM5 20 0.500000 +CriticalSubsystem=LRM5 15 1.000000 +[dz_luleg] +ExplosionTable=ava1dmg.exp +DefaultEffectSiteName=siteedz_luleg +WeaponDamagePoints=98 +VitalDamageZone=True +LegDamageZone=LeftLeg +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Myomers 15 0.142857 +[dz_rarm] +ExplosionTable=ava1dmg.exp +DefaultEffectSiteName=siteedz_rarm +WeaponDamagePoints=77 +VitalDamageZone=False +DescendOnDestruction=True +CriticalSubsystem=Condenser6 2 0.500000 +CriticalSubsystem=AmmoBinAFC100 20 0.500000 +[dz_rdleg] +ExplosionTable=ava1dmg.exp +DefaultEffectSiteName=siteedz_rdleg +WeaponDamagePoints=90 +VitalDamageZone=True +LegDamageZone=RightLeg +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Myomers 15 0.142857 +[dz_rdoor] +ExplosionTable=ava1dmg.exp +DefaultEffectSiteName=siteedz_rdoor +WeaponDamagePoints=1 +VitalDamageZone=False +[dz_reardtorso] +ExplosionTable=ava1dmg.exp +DefaultEffectSiteName=siteedz_reardtorso +WeaponDamagePoints=81 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Reservoir 10 0.250000 +CriticalSubsystem=Condenser5 2 0.500000 +CriticalSubsystem=GeneratorD 10 0.500000 +CriticalSubsystem=Torso 15 0.333333 +[dz_rearltorso] +ExplosionTable=ava1dmg.exp +DefaultEffectSiteName=siteedz_rearltorso +WeaponDamagePoints=81 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Reservoir 10 0.250000 +CriticalSubsystem=Condenser1 2 0.500000 +CriticalSubsystem=GeneratorA 10 0.500000 +CriticalSubsystem=AmmoBinLRM5 20 0.500000 +[dz_rearrtorso] +ExplosionTable=ava1dmg.exp +DefaultEffectSiteName=siteedz_rearrtorso +WeaponDamagePoints=81 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Reservoir 10 0.250000 +CriticalSubsystem=Condenser3 2 0.500000 +CriticalSubsystem=GeneratorC 10 0.500000 +CriticalSubsystem=AmmoBinSRM2 20 0.500000 +[dz_rearutorso] +ExplosionTable=ava1dmg.exp +DefaultEffectSiteName=siteedz_rearutorso +WeaponDamagePoints=102 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Reservoir 10 0.250000 +CriticalSubsystem=Condenser2 2 0.500000 +CriticalSubsystem=GeneratorB 10 0.500000 +CriticalSubsystem=Gyroscope 30 0.333333 +[dz_rfoot] +ExplosionTable=ava1dmg.exp +DefaultEffectSiteName=siteedz_rfoot +WeaponDamagePoints=81 +VitalDamageZone=True +LegDamageZone=RightLeg +CriticalSubsystem=Myomers 15 0.142857 +[dz_rgun] +ExplosionTable=ava1dmg.exp +DefaultEffectSiteName=siteedz_rgun +WeaponDamagePoints=72 +VitalDamageZone=False +DescendOnDestruction=True +CriticalSubsystem=Condenser6 2 0.500000 +CriticalSubsystem=AmmoBinAFC100 20 0.500000 +CriticalSubsystem=AFC100 15 1.000000 +[dz_rtorso] +ExplosionTable=ava1dmg.exp +DefaultEffectSiteName=siteedz_rtorso +WeaponDamagePoints=119 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Condenser3 2 0.500000 +CriticalSubsystem=GeneratorC 10 0.500000 +CriticalSubsystem=Avionics 5 0.200000 +CriticalSubsystem=AmmoBinSRM2 20 0.500000 +CriticalSubsystem=SRM2 15 1.000000 +[dz_ruleg] +ExplosionTable=ava1dmg.exp +DefaultEffectSiteName=siteedz_ruleg +WeaponDamagePoints=98 +VitalDamageZone=True +LegDamageZone=RightLeg +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Myomers 15 0.142857 +[dz_searchlight] +ExplosionTable=ava1dmg.exp +DefaultEffectSiteName=siteedz_searchlight +WeaponDamagePoints=50 +VitalDamageZone=False +CriticalSubsystem=Avionics 5 0.200000 +CriticalSubsystem=HUD 15 0.500000 +CriticalSubsystem=Searchlight 45 1.000000 +CriticalSubsystem=ThermalSight 30 1.000000 +[dz_utorso] +ExplosionTable=ava1dmg.exp +DefaultEffectSiteName=siteedz_utorso +WeaponDamagePoints=140 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Condenser2 2 0.500000 +CriticalSubsystem=GeneratorB 10 0.500000 +CriticalSubsystem=Avionics 5 0.200000 +CriticalSubsystem=Gyroscope 30 0.333333 +CriticalSubsystem=HUD 15 0.500000 diff --git a/CONTENT/BT/MODELS/AVA1.MOD b/CONTENT/BT/MODELS/AVA1.MOD new file mode 100644 index 0000000..0cc4720 --- /dev/null +++ b/CONTENT/BT/MODELS/AVA1.MOD @@ -0,0 +1,136 @@ +[video] +skeleton=ava.skl +skeletona=avx.skl +destroyed=avad.skl +//destroyeda=avxd.skl +dzm=avaskin.dzm +dzma=avaskin.dzm + +[audio] +internal=ava1int.scp +external=ava1ext.scp + +[collision] +name=ava_cv.sld + +[gauge] +image=thor_ga.gim + +[gaugeMissionReview] +pixelmap=ava_mr.pcc + +[gamedata] +class=MechClassID +MoverMass=70000.0 +MomentOfInertia=1.75 3.125 1.75 +PositiveLinearDragCoefficients=0.14 0.4 0.07 +NegativeLinearDragCoefficients=0.14 0.2 0.08 +AngularDragCoefficients=0.3 0.5 0.3 +FrictionCoefficient=0.1 +ElasticityCoefficient=0.2 +MinimumBounceSpeed=0.2 +MaxAcceleration=10 +AnimationPrefix=ava +Subsystems=ava1.sub +DamageZones=ava1.dmg +DamageLookupTable=avadmg.tbl +RelativeMechValue=1.0 +LookLeftAngle=65 +LookRightAngle=-65 +LookBackAngle=0 +LookFrontAngle=-15 +WalkingTurnRate=65 +RunningTurnRate=40 +DeathEffect=avadead +CameraOffset=0.0 15.0 30.0 +DeathSplashDamage=5 +DeathSplashRadius=50 +TimeDelay=0.3 + +MaxUnstableAcceleration=22.0 +UnstableAccelerationEffect=0.7 +UnstableGunTheEngineEffect=1.0 +UnstableSuperStopEffect=0.5 +UnstableHighVelocityEffect=0.4 +UnstableStopedTurnEffect=1.0 +SuperStopAcceleration=20.0 + +ThrottleAdjustment=0.8 + +UpdateTurnDegreeDiffrence=3 +UpdateTurnVelocityDiffrence=0.045 +UpdatePositionDiffrence=0.3 + +ShadowJointName=jointshadow + +[ControlMappings] +Thrustmaster=ava1thr.ctl +L4=ava1l4.ctl + +[animations] +animationtransition=avaswr.ani +animation=avawwl.ani +animation=avawwr.ani +animation=avawsr.ani +animation=avawsl.ani +animationtransition=avawrl.ani +animationtransition=avawrr.ani +animation=avarrl.ani +animation=avarrr.ani +animation=avarwl.ani +animation=avarwr.ani +animation=avabmp.ani +animation=avabbl.ani +animation=avabbr.ani +animation=avabsl.ani +animation=avabsr.ani +animationtransition=avasbl.ani +animationtransition=avasbr.ani + +animationtransition=avaswri.ani +animation=avawwli.ani +animation=avawwri.ani +animation=avawsri.ani +animation=avawsli.ani +animationtransition=avawrli.ani +animationtransition=avawrri.ani +animation=avarrli.ani +animation=avarrri.ani +animation=avarwli.ani +animation=avarwri.ani +animation=avabmpi.ani +animation=avabbli.ani +animation=avabbri.ani +animation=avabsli.ani +animation=avabsri.ani +animationtransition=avasbli.ani +animationtransition=avasbri.ani + +animation=avaggl.ani +animation=avaggr.ani +animation=avagsl.ani +animation=avagsr.ani +animationtransition=avawgl.ani +animationtransition=avawgr.ani + +animation=avaggli.ani +animation=avaggri.ani +animation=avagsli.ani +animation=avagsri.ani +animationtransition=avawgli.ani +animationtransition=avawgri.ani + +animation=avasqu.ani +animation=avasqd.ani +animation=avasqui.ani +animation=avasqdi.ani + +animation=avatrn.ani +animation=avatrni.ani + +//animation=avaff.ani +//animation=avafb.ani +//animation=avafl.ani +//animation=avafr.ani + + diff --git a/CONTENT/BT/MODELS/AVA1.SUB b/CONTENT/BT/MODELS/AVA1.SUB new file mode 100644 index 0000000..3eb31b9 --- /dev/null +++ b/CONTENT/BT/MODELS/AVA1.SUB @@ -0,0 +1,203 @@ +[HeatSink] +Type=HeatSinkClassID +Include=heatsnk.sub +HeatSinkCount=15 +SubsystemFlags=DontReplicateFlag + +[Reservoir] +Type=ReservoirClassID +Include=reserve.sub +HeatSink=HeatSink +SegmentPageName=siteeyepoint + +[Condenser1] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser2] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser3] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser4] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser5] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser6] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[GeneratorA] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser1 +SubsystemFlags=DontReplicateFlag + +[GeneratorB] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser2 +SubsystemFlags=DontReplicateFlag + +[GeneratorC] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser3 +SubsystemFlags=DontReplicateFlag + +[GeneratorD] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser5 +SubsystemFlags=DontReplicateFlag + +[Avionics] +Type=SensorClassID +Include=sensor.sub +HeatSink=Condenser2 +VoltageSource=GeneratorD +AuxScreenNumber=5 +SubsystemFlags=DontReplicateFlag + +AuxScreenPlacement=2 +[Myomers] +Type=MyomersClassID +Include=myomers.sub +HeatSink=Condenser5 +VoltageSource=GeneratorD +AuxScreenNumber=6 +SubsystemFlags=DontReplicateFlag + +AuxScreenPlacement=0 +[Gyroscope] +Type=GyroscopeClassID +Include=gyro.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag + +[Torso] +Type=TorsoClassID +Include=torso.sub +WatchedSubsystem=Myomers + +HorizontalRotationPerSecond=50 +VerticalRotationPerSecond=30 +HorizontalLimitRight=-140 +HorizontalLimitLeft=140 +[HUD] +Type=HUDClassID +Include=hud.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag + +[Searchlight] +Type=SearchlightClassID +Include=srchlite.sub +WatchedSubsystem=Avionics +SegmentPageName=sitelight + +[ThermalSight] +Type=ThermalSightClassID +Include=Thermal.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag +[AmmoBinAFC100] +Type=AmmoBinClassID +Include=amafc100.sub +WatchedSubsystem=AFC100 +AmmoCount=20 +[AFC100] +AmmoBin=AmmoBinAFC100 +Type=ProjectileWeaponClassID +Include=afc100.sub +SegmentPageName=sitergunport +PipPosition=1 +VoltageSource=GeneratorC +HeatSink=Condenser6 +AuxScreenNumber=10 +AuxScreenPlacement=6 +[PPC] +Type=PPCClassID +Include=ppc.sub +SegmentPageName=sitelugunport +PipPosition=1 +VoltageSource=GeneratorA +HeatSink=Condenser4 +AuxScreenNumber=1 +AuxScreenPlacement=4 +[ERMLaser_1] +Type=EmitterClassID +Include=ermlaser.sub +SegmentPageName=siteldtorsoport +PipPosition=1 +VoltageSource=GeneratorA +HeatSink=Condenser5 +AuxScreenNumber=7 +AuxScreenPlacement=5 +[ERMLaser_2] +Type=EmitterClassID +Include=ermlaser.sub +SegmentPageName=siterdtorsoport +PipPosition=2 +VoltageSource=GeneratorC +HeatSink=Condenser5 +AuxScreenNumber=8 +AuxScreenPlacement=5 +[AmmoBinLRM5] +Type=AmmoBinClassID +Include=ammnrk5.sub +WatchedSubsystem=LRM5 +AmmoCount=18 +[LRM5] +AmmoBin=AmmoBinLRM5 +Type=MissileLauncherClassID +Include=nrk5.sub +SegmentPageName=sitelmissleport +PipPosition=1 +VoltageSource=GeneratorB +HeatSink=Condenser1 +AuxScreenNumber=2 +AuxScreenPlacement=1 +[AmmoBinSRM2] +Type=AmmoBinClassID +Include=ammstrk2.sub +WatchedSubsystem=SRM2 +AmmoCount=18 +[SRM2] +AmmoBin=AmmoBinSRM2 +Type=MissileLauncherClassID +Include=strk2.sub +SegmentPageName=sitermissleport +PipPosition=1 +VoltageSource=GeneratorB +HeatSink=Condenser3 +AuxScreenNumber=9 +AuxScreenPlacement=3 +[MessageManager] +Type=SubsystemMessageManagerClassID +ExplosionModelFile=majhit 1.0 +TerrainHitExplosion=gndhit +RendererCompensateTime=0.3 +[MechTech] +Type=MechTechClassID +AlarmModel=mechalrm +SubsystemFlags=DontReplicateFlag diff --git a/CONTENT/BT/MODELS/AVA1DEAD.MOD b/CONTENT/BT/MODELS/AVA1DEAD.MOD new file mode 100644 index 0000000..e70cd7c --- /dev/null +++ b/CONTENT/BT/MODELS/AVA1DEAD.MOD @@ -0,0 +1,9 @@ +[video] +object=104 3 4 5 1007 15 1001 + +[audio] +external=brnext.scp + +[gamedata] +class=ExplosionClassID +ExplosionDuration=44.0 diff --git a/CONTENT/BT/MODELS/AVA1DMG.EXP b/CONTENT/BT/MODELS/AVA1DMG.EXP new file mode 100644 index 0000000..c9b1598 --- /dev/null +++ b/CONTENT/BT/MODELS/AVA1DMG.EXP @@ -0,0 +1,28 @@ +[OneDamage] +ExplosionModelFile=dam1hit +DamageLevel=0.2 +TimeDelay=0.0 + +[TwoDamage] +ExplosionModelFile=dam2hit +DamageLevel=0.4 +TimeDelay=0.0 + +[ThreeDamage] +ExplosionModelFile=dam3hit +DamageLevel=0.6 +TimeDelay=0.0 + +[FourDamage] +ExplosionModelFile=dam4hit +DamageLevel=0.8 +TimeDelay=0.0 + +[DestroyedExplosion] +ExplosionModelFile=desthit +GraphicState=Destroyed + +[GoneExplosion] +ExplosionModelFile=desthit +GraphicState=Gone + diff --git a/CONTENT/BT/MODELS/AVA1DMG.TBL b/CONTENT/BT/MODELS/AVA1DMG.TBL new file mode 100644 index 0000000..94f35ab --- /dev/null +++ b/CONTENT/BT/MODELS/AVA1DMG.TBL @@ -0,0 +1,197 @@ +[LeftFoot] +DamageZone=dz_lfoot 0.5 +DamageZone=dz_ldleg 0.3 +DamageZone=dz_rfoot 0.2 + +[RightFoot] +DamageZone=dz_rfoot 0.5 +DamageZone=dz_rdleg 0.3 +DamageZone=dz_lfoot 0.2 + +[LeftLeg] +DamageZone=dz_luleg 0.4 +DamageZone=dz_ldleg 0.4 +DamageZone=dz_ruleg 0.1 +DamageZone=dz_rdleg 0.1 + +[RightLeg] +DamageZone=dz_ruleg 0.4 +DamageZone=dz_rdleg 0.4 +DamageZone=dz_luleg 0.1 +DamageZone=dz_ldleg 0.1 + +[LeftHip] +DamageZone=dz_luleg 0.5 +DamageZone=dz_hip 0.3 +DamageZone=dz_dtorso 0.1 +DamageZone=dz_ltorso 0.1 + +[FrontHip] +DamageZone=dz_luleg 0.25 +DamageZone=dz_ruleg 0.25 +DamageZone=dz_hip 0.3 +DamageZone=dz_dtorso 0.2 + +[RearHip] +DamageZone=dz_luleg 0.25 +DamageZone=dz_ruleg 0.25 +DamageZone=dz_hip 0.3 +DamageZone=dz_reardtorso 0.2 + +[RightHip] +DamageZone=dz_ruleg 0.5 +DamageZone=dz_hip 0.3 +DamageZone=dz_dtorso 0.1 +DamageZone=dz_rgun 0.1 + +[LeftWaist] +DamageZone=dz_ltorso 0.15 +DamageZone=dz_rearltorso 0.1 +DamageZone=dz_luleg 0.25 +DamageZone=dz_dtorso 0.25 +DamageZone=dz_reardtorso 0.1 +DamageZone=dz_hip 0.15 + +[FrontWaist] +DamageZone=dz_ruleg 0.075 +DamageZone=dz_luleg 0.075 +DamageZone=dz_ltorso 0.2 +DamageZone=dz_rtorso 0.2 +DamageZone=dz_dtorso 0.3 +DamageZone=dz_hip 0.15 + +[RearWaist] +DamageZone=dz_ruleg 0.075 +DamageZone=dz_luleg 0.075 +DamageZone=dz_rearltorso 0.2 +DamageZone=dz_rearrtorso 0.2 +DamageZone=dz_reardtorso 0.3 +DamageZone=dz_hip 0.15 + +[RightWaist] +DamageZone=dz_rtorso 0.15 +DamageZone=dz_rearrtorso 0.1 +DamageZone=dz_ruleg 0.25 +DamageZone=dz_dtorso 0.25 +DamageZone=dz_reardtorso 0.1 +DamageZone=dz_hip 0.15 + +[LeftChest] +DamageZone=dz_larm 0.3 +DamageZone=dz_lgun 0.2 +DamageZone=dz_ltorso 0.25 +DamageZone=dz_rearltorso 0.15 +DamageZone=dz_utorso 0.05 +DamageZone=dz_rearutorso 0.05 + +[RightChest] +DamageZone=dz_rarm 0.3 +DamageZone=dz_rgun 0.35 +DamageZone=dz_rtorso 0.15 +DamageZone=dz_rearrtorso 0.1 +DamageZone=dz_utorso 0.05 +DamageZone=dz_rearutorso 0.05 + +[FrontChest] +DamageZone=dz_larm 0.05 +DamageZone=dz_rarm 0.05 +DamageZone=dz_ltorso 0.2 +DamageZone=dz_rtorso 0.2 +DamageZone=dz_utorso 0.3 +DamageZone=dz_searchlight 0.2 + +[RearChest] +DamageZone=dz_larm 0.05 +DamageZone=dz_rarm 0.05 +DamageZone=dz_rearltorso 0.25 +DamageZone=dz_rearrtorso 0.25 +DamageZone=dz_rearutorso 0.35 +DamageZone=dz_utorso 0.05 + +[TopLeft] +DamageZone=dz_utorso 0.5 +DamageZone=dz_ltorso 0.35 +DamageZone=dz_rtorso 0.15 + +[TopRight] +DamageZone=dz_utorso 0.5 +DamageZone=dz_ltorso 0.15 +DamageZone=dz_rtorso 0.35 + +// The data in this table is totally bogus. GDU 12-2-95 +[Layer1] +PieSlice=RightFoot +PieSlice=RightFoot +PieSlice=LeftFoot +PieSlice=LeftFoot +PieSlice=LeftFoot +PieSlice=LeftFoot +PieSlice=RightFoot +PieSlice=RightFoot +RotateWithTorso=False + +[Layer2] +PieSlice=RightLeg +PieSlice=RightLeg +PieSlice=LeftLeg +PieSlice=LeftLeg +PieSlice=LeftLeg +PieSlice=LeftLeg +PieSlice=RightLeg +PieSlice=RightLeg +RotateWithTorso=False + +[Layer3] +PieSlice=RightLeg +PieSlice=FrontHip +PieSlice=FrontHip +PieSlice=LeftLeg +PieSlice=LeftLeg +PieSlice=RearHip +PieSlice=RearHip +PieSlice=RightLeg +RotateWithTorso=False + +[Layer4] +PieSlice=RightHip +PieSlice=FrontHip +PieSlice=FrontHip +PieSlice=LeftHip +PieSlice=LeftHip +PieSlice=RearHip +PieSlice=RearHip +PieSlice=RightHip +RotateWithTorso=True + +[Layer5] +PieSlice=RightWaist +PieSlice=FrontWaist +PieSlice=FrontWaist +PieSlice=LeftWaist +PieSlice=LeftWaist +PieSlice=RearWaist +PieSlice=RearWaist +PieSlice=RightWaist +RotateWithTorso=True + +[Layer6] +PieSlice=RightChest +PieSlice=FrontChest +PieSlice=FrontChest +PieSlice=LeftChest +PieSlice=LeftChest +PieSlice=RearChest +PieSlice=RearChest +PieSlice=RightChest +RotateWithTorso=True + +[Layer7] +PieSlice=TopRight +PieSlice=TopRight +PieSlice=TopLeft +PieSlice=TopLeft +PieSlice=TopLeft +PieSlice=TopLeft +PieSlice=TopRight +PieSlice=TopRight +RotateWithTorso=True diff --git a/CONTENT/BT/MODELS/AVA1L4.CTL b/CONTENT/BT/MODELS/AVA1L4.CTL new file mode 100644 index 0000000..f06e302 --- /dev/null +++ b/CONTENT/BT/MODELS/AVA1L4.CTL @@ -0,0 +1,817 @@ +[StickPosition_JP] +//----------------------------------------------------------------------- +// Joystick +//----------------------------------------------------------------------- +IOMapping=JoystickPhysical +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=StickPosition +Mode=ModeAlwaysActive + +[Throttle_ST] +//----------------------------------------------------------------------- +// Throttle +//----------------------------------------------------------------------- +IOMapping=ScalarThrottle +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=ThrottlePosition +Mode=ModeAlwaysActive + +//----------------------------------------------------------------------- +// Misc. switches +//----------------------------------------------------------------------- +[ReverseThrust_BT1] +IOMapping=ButtonThrottle1 +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=ReverseThrust +Mode=ModeAlwaysActive + +[TorsoCenter_BJHU] +IOMapping=ButtonJoystickHatUp +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoCenter +Mode=ModeAlwaysActive + +[LookLeft_BJHL] +IOMapping=ButtonJoystickHatLeft +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=LookLeft +Mode=ModeAlwaysActive + +[LookRight_BJHR] +IOMapping=ButtonJoystickHatRight +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=LookRight +Mode=ModeAlwaysActive + +[LookBack_BJHD] +IOMapping=ButtonJoystickHatDown +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=LookBehind +Mode=ModeAlwaysActive + +//----------------------------------------------------------------------- +// Secondary mappings +//----------------------------------------------------------------------- +[Button_Sec_1] // Zoom radar in (magnify image) +IOMapping=ButtonSecondary1 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=ZoomIn +Mode=ModeAlwaysActive + +[Button_Sec_2] // Zoom radar out (reduce image) +IOMapping=ButtonSecondary2 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=ZoomOut +Mode=ModeAlwaysActive + +// +// 'Heat vision' mapped to secondary +// SGM 1/6/97 + +[Button_Sec_3] // Toggle heat vision +IOMapping=ButtonSecondary3 +Type=EventMapping +Subsystem=ThermalSight +MessageID=ToggleLamp +Mode=ModeAlwaysActive + +// +// 'Duck' remapped to real message and location. +// GDU 7/9/96 + +[Button_Sec_4] // Request crouch position +IOMapping=ButtonSecondary4 +Type=EventMapping +MessageID=DuckRequest +Mode=ModeAlwaysActive + +[Button_Sec_5] // Toggle searchlight +IOMapping=ButtonSecondary5 +Type=EventMapping +Subsystem=Searchlight +MessageID=ToggleLamp +Mode=ModeAlwaysActive + +[Button_Sec_6] // Cycle through damage display modes +IOMapping=ButtonSecondary6 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=CycleDisplayMode +Mode=ModeAlwaysActive + +[Button_Sec_7] // Cycle through control modes +IOMapping=ButtonSecondary7 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=CycleControlMode +Mode=ModeAlwaysActive + +// ButtonSecondary8 presently unused + +[Button_Sec_9] // Toggle generator 'a' +IOMapping=ButtonSecondary9 +Type=EventMapping +Subsystem=GeneratorA +MessageID=ToggleGeneratorOnOff +Mode=ModeAlwaysActive + +[Button_Sec_10] // Toggle generator 'b' +IOMapping=ButtonSecondary10 +Type=EventMapping +Subsystem=GeneratorB +MessageID=ToggleGeneratorOnOff +Mode=ModeAlwaysActive + +[Button_Sec_11] // Toggle generator 'c' +IOMapping=ButtonSecondary11 +Type=EventMapping +Subsystem=GeneratorC +MessageID=ToggleGeneratorOnOff +Mode=ModeAlwaysActive + +[Button_Sec_12] // Toggle generator 'd' +IOMapping=ButtonSecondary12 +Type=EventMapping +Subsystem=GeneratorD +MessageID=ToggleGeneratorOnOff +Mode=ModeAlwaysActive + +//----------------------------------------- +// Heat Management Screen Mappings +//----------------------------------------- +[Condenser1_Button] +IOMapping=ButtonAuxUpperLeft1 +Type=EventMapping +Subsystem=Condenser1 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Condenser2_Button] +IOMapping=ButtonAuxUpperLeft2 +Type=EventMapping +Subsystem=Condenser2 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Condenser3_Button] +IOMapping=ButtonAuxUpperLeft3 +Type=EventMapping +Subsystem=Condenser3 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Reservoir_Button] +IOMapping=ButtonAuxUpperLeft4 +Type=EventMapping +Subsystem=Reservoir +MessageID=InjectCoolant +Mode=ModeAlwaysActive + +[Condenser4_Button] +IOMapping=ButtonAuxUpperLeft5 +Type=EventMapping +Subsystem=Condenser4 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Condenser5_Button] +IOMapping=ButtonAuxUpperLeft6 +Type=EventMapping +Subsystem=Condenser5 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Condenser6_Button] +IOMapping=ButtonAuxUpperLeft7 +Type=EventMapping +Subsystem=Condenser6 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Reduce_Button] +IOMapping=ButtonAuxUpperLeft8 +Type=EventMapping +MessageID=BalanceCoolant +Mode=ModeAlwaysActive + +//----------------------------------------------------------------------- +// Aux 1 mappings +//----------------------------------------------------------------------- +//------------------------------------------ +// Aux 1 'Quad screen' mappings +//------------------------------------------ +[MFD1_to_Mode_1] // To mode 1 +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Eng1 +Mode=ModeMFD1Quad + +[MFD1_Configure_Trigger_1] // Configure +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Subsystem=PPC +MessageID=ConfigureMappables +Mode=ModeMFD1Quad + +[MFD1_to_Mode_2] // To mode 2 +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Eng2 +Mode=ModeMFD1Quad + +[MFD1_Configure_Trigger_2] // Configure +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Subsystem=LRM5 +MessageID=ConfigureMappables +Mode=ModeMFD1Quad + +[Aux_1_Mode_1_to_MFD1] +IOMapping=ButtonAuxLowerLeft8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Quad +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_Select_GeneratorA] +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Subsystem=PPC +MessageID=SelectGeneratorA +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_Select_GeneratorB] +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Subsystem=PPC +MessageID=SelectGeneratorB +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_Select_GeneratorC] +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Subsystem=PPC +MessageID=SelectGeneratorC +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_Select_GeneratorD] +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Subsystem=PPC +MessageID=SelectGeneratorD +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_OPTION] +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Subsystem=PPC +MessageID=ToggleSeekVoltage +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Subsystem=PPC +MessageID=ToggleGeneratorMode +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_ToggleCooling] +IOMapping=ButtonAuxLowerLeft7 +Type=EventMapping +Subsystem=PPC +MessageID=ToggleCooling +Mode=ModeMFD1Eng1 + +//-------------------------------------------- +// Aux 1 'Mode 2' mappings, AuxScreenNumber=2 +//-------------------------------------------- +[Aux_1_Mode_2_to_MFD1] +IOMapping=ButtonAuxLowerLeft8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Quad +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_Select_GeneratorA] +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Subsystem=LRM5 +MessageID=SelectGeneratorA +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_Select_GeneratorB] +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Subsystem=LRM5 +MessageID=SelectGeneratorB +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_Select_GeneratorC] +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Subsystem=LRM5 +MessageID=SelectGeneratorC +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_Select_GeneratorD] +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Subsystem=LRM5 +MessageID=SelectGeneratorD +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_OPTION] +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Subsystem=LRM5 +MessageID=EjectAmmo +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Subsystem=LRM5 +MessageID=ToggleGeneratorMode +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_ToggleCooling] +IOMapping=ButtonAuxLowerLeft7 +Type=EventMapping +Subsystem=LRM5 +MessageID=ToggleCooling +Mode=ModeMFD1Eng2 + +//--------------------------------------------- +// Aux 1 'Mode 3' mappings, AuxScreenNumber=3 +//--------------------------------------------- +[MFD2_to_Mode_1] +IOMapping=ButtonAuxUpperCenter1 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Eng1 +Mode=ModeMFD2Quad + +[MFD2_to_Mode_2] +IOMapping=ButtonAuxUpperCenter3 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Eng2 +Mode=ModeMFD2Quad + +[MFD2_to_Mode_3] +IOMapping=ButtonAuxUpperCenter5 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Eng3 +Mode=ModeMFD2Quad + +[MFD2_Configure_Trigger_3] +IOMapping=ButtonAuxUpperCenter6 +Type=EventMapping +Subsystem=ERMLaser_1 +MessageID=ConfigureMappables +Mode=ModeMFD2Quad + +[MFD2_to_Mode_4] +IOMapping=ButtonAuxUpperCenter7 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Eng4 +Mode=ModeMFD2Quad + +[MFD2_Configure_Trigger_4] +IOMapping=ButtonAuxUpperCenter8 +Type=EventMapping +Subsystem=ERMLaser_2 +MessageID=ConfigureMappables +Mode=ModeMFD2Quad + +//-------------------------------------------- +// Aux 2 'Mode 1' mappings, AuxScreenNumber=9 +//-------------------------------------------- +[Aux_2_Mode_1_to_MFD2] +IOMapping=ButtonAuxUpperCenter8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Quad +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_Select_GeneratorA] +IOMapping=ButtonAuxUpperCenter1 +Type=EventMapping +Subsystem=Avionics +MessageID=SelectGeneratorA +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_Select_GeneratorB] +IOMapping=ButtonAuxUpperCenter2 +Type=EventMapping +Subsystem=Avionics +MessageID=SelectGeneratorB +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_Select_GeneratorC] +IOMapping=ButtonAuxUpperCenter3 +Type=EventMapping +Subsystem=Avionics +MessageID=SelectGeneratorC +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_Select_GeneratorD] +IOMapping=ButtonAuxUpperCenter4 +Type=EventMapping +Subsystem=Avionics +MessageID=SelectGeneratorD +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_ToggleGeneratorMode] +IOMapping=ButtonAuxUpperCenter6 +Type=EventMapping +Subsystem=Avionics +MessageID=ToggleGeneratorMode +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_ToggleCooling] +IOMapping=ButtonAuxUpperCenter7 +Type=EventMapping +Subsystem=Avionics +MessageID=ToggleCooling +Mode=ModeMFD2Eng1 + +//-------------------------------------------- +// Aux 2 'Mode 2' mappings, AuxScreenNumber=10 +//-------------------------------------------- +[Aux_2_Mode_2_to_MFD2] +IOMapping=ButtonAuxUpperCenter8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Quad +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_Select_GeneratorA] +IOMapping=ButtonAuxUpperCenter1 +Type=EventMapping +Subsystem=Myomers +MessageID=SelectGeneratorA +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_Select_GeneratorB] +IOMapping=ButtonAuxUpperCenter2 +Type=EventMapping +Subsystem=Myomers +MessageID=SelectGeneratorB +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_Select_GeneratorC] +IOMapping=ButtonAuxUpperCenter3 +Type=EventMapping +Subsystem=Myomers +MessageID=SelectGeneratorC +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_Select_GeneratorD] +IOMapping=ButtonAuxUpperCenter4 +Type=EventMapping +Subsystem=Myomers +MessageID=SelectGeneratorD +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_OPTION] +IOMapping=ButtonAuxUpperCenter5 +Type=EventMapping +Subsystem=Myomers +MessageID=ToggleSeekVoltage +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_ToggleGeneratorMode] +IOMapping=ButtonAuxUpperCenter6 +Type=EventMapping +Subsystem=Myomers +MessageID=ToggleGeneratorMode +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_ToggleCooling] +IOMapping=ButtonAuxUpperCenter7 +Type=EventMapping +Subsystem=Myomers +MessageID=ToggleCooling +Mode=ModeMFD2Eng2 + +//-------------------------------------------- +// Aux 3 'Mode 3' mappings, AuxScreenNumber=11 +//-------------------------------------------- +[Aux_2_Mode_3_to_MFD2] +IOMapping=ButtonAuxUpperCenter8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Quad +Mode=ModeMFD2Eng3 + +[Aux_2_Mode_3_Select_GeneratorA] +IOMapping=ButtonAuxUpperCenter1 +Type=EventMapping +Subsystem=ERMLaser_1 +MessageID=SelectGeneratorA +Mode=ModeMFD2Eng3 + +[Aux_2_Mode_3_Select_GeneratorB] +IOMapping=ButtonAuxUpperCenter2 +Type=EventMapping +Subsystem=ERMLaser_1 +MessageID=SelectGeneratorB +Mode=ModeMFD2Eng3 + +[Aux_2_Mode_3_Select_GeneratorC] +IOMapping=ButtonAuxUpperCenter3 +Type=EventMapping +Subsystem=ERMLaser_1 +MessageID=SelectGeneratorC +Mode=ModeMFD2Eng3 + +[Aux_2_Mode_3_Select_GeneratorD] +IOMapping=ButtonAuxUpperCenter4 +Type=EventMapping +Subsystem=ERMLaser_1 +MessageID=SelectGeneratorD +Mode=ModeMFD2Eng3 + +[Aux_2_Mode_3_OPTION] +IOMapping=ButtonAuxUpperCenter5 +Type=EventMapping +Subsystem=ERMLaser_1 +MessageID=ToggleSeekVoltage +Mode=ModeMFD2Eng3 + +[Aux_2_Mode_3_ToggleGeneratorMode] +IOMapping=ButtonAuxUpperCenter6 +Type=EventMapping +Subsystem=ERMLaser_1 +MessageID=ToggleGeneratorMode +Mode=ModeMFD2Eng3 + +[Aux_2_Mode_3_ToggleCooling] +IOMapping=ButtonAuxUpperCenter7 +Type=EventMapping +Subsystem=ERMLaser_1 +MessageID=ToggleCooling +Mode=ModeMFD2Eng3 + +//--------------------------------------------- +// Aux 3 'Mode 4' mappings, AuxScreenNumber=12 +//--------------------------------------------- +[Aux_2_Mode_4_to_MFD2] +IOMapping=ButtonAuxUpperCenter8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Quad +Mode=ModeMFD2Eng4 + +[Aux_2_Mode_4_Select_GeneratorA] +IOMapping=ButtonAuxUpperCenter1 +Type=EventMapping +Subsystem=ERMLaser_2 +MessageID=SelectGeneratorA +Mode=ModeMFD2Eng4 + +[Aux_2_Mode_4_Select_GeneratorB] +IOMapping=ButtonAuxUpperCenter2 +Type=EventMapping +Subsystem=ERMLaser_2 +MessageID=SelectGeneratorB +Mode=ModeMFD2Eng4 + +[Aux_2_Mode_4_Select_GeneratorC] +IOMapping=ButtonAuxUpperCenter3 +Type=EventMapping +Subsystem=ERMLaser_2 +MessageID=SelectGeneratorC +Mode=ModeMFD2Eng4 + +[Aux_2_Mode_4_Select_GeneratorD] +IOMapping=ButtonAuxUpperCenter4 +Type=EventMapping +Subsystem=ERMLaser_2 +MessageID=SelectGeneratorD +Mode=ModeMFD2Eng4 + +[Aux_2_Mode_4_OPTION] +IOMapping=ButtonAuxUpperCenter5 +Type=EventMapping +Subsystem=ERMLaser_2 +MessageID=ToggleSeekVoltage +Mode=ModeMFD2Eng4 + +[Aux_2_Mode_4_ToggleGeneratorMode] +IOMapping=ButtonAuxUpperCenter6 +Type=EventMapping +Subsystem=ERMLaser_2 +MessageID=ToggleGeneratorMode +Mode=ModeMFD2Eng4 + +[Aux_2_Mode_4_ToggleCooling] +IOMapping=ButtonAuxUpperCenter7 +Type=EventMapping +Subsystem=ERMLaser_2 +MessageID=ToggleCooling +Mode=ModeMFD2Eng4 + + +//----------------------------------------------------------------------- +// Aux 3 mappings +//----------------------------------------------------------------------- +//------------------------------------------ +// Aux 3 'Quad screen' mappings +//------------------------------------------ +[MFD3_to_Mode_1] +IOMapping=ButtonAuxLowerRight1 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Eng1 +Mode=ModeMFD3Quad + +[MFD3_Configure_Trigger_1] +IOMapping=ButtonAuxLowerRight2 +Type=EventMapping +Subsystem=SRM2 +MessageID=ConfigureMappables +Mode=ModeMFD3Quad + +[MFD3_to_Mode_2] +IOMapping=ButtonAuxLowerRight3 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Eng2 +Mode=ModeMFD3Quad + +[MFD3_Configure_Trigger_2] +IOMapping=ButtonAuxLowerRight4 +Type=EventMapping +Subsystem=AFC100 +MessageID=ConfigureMappables +Mode=ModeMFD3Quad + +[Aux_3_Mode_1_to_MFD3] +IOMapping=ButtonAuxLowerRight8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Quad +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_Select_GeneratorA] +IOMapping=ButtonAuxLowerRight1 +Type=EventMapping +Subsystem=SRM2 +MessageID=SelectGeneratorA +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_Select_GeneratorB] +IOMapping=ButtonAuxLowerRight2 +Type=EventMapping +Subsystem=SRM2 +MessageID=SelectGeneratorB +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_Select_GeneratorC] +IOMapping=ButtonAuxLowerRight3 +Type=EventMapping +Subsystem=SRM2 +MessageID=SelectGeneratorC +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_Select_GeneratorD] +IOMapping=ButtonAuxLowerRight4 +Type=EventMapping +Subsystem=SRM2 +MessageID=SelectGeneratorD +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_OPTION] +IOMapping=ButtonAuxLowerRight5 +Type=EventMapping +Subsystem=SRM2 +MessageID=EjectAmmo +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerRight6 +Type=EventMapping +Subsystem=SRM2 +MessageID=ToggleGeneratorMode +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_ToggleCooling] +IOMapping=ButtonAuxLowerRight7 +Type=EventMapping +Subsystem=SRM2 +MessageID=ToggleCooling +Mode=ModeMFD3Eng1 + +//-------------------------------------------- +// Aux 3 'Mode 2' mappings, AuxScreenNumber=10 +//-------------------------------------------- +[Aux_3_Mode_2_to_MFD3] +IOMapping=ButtonAuxLowerRight8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Quad +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_Select_GeneratorA] +IOMapping=ButtonAuxLowerRight1 +Type=EventMapping +Subsystem=AFC100 +MessageID=SelectGeneratorA +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_Select_GeneratorB] +IOMapping=ButtonAuxLowerRight2 +Type=EventMapping +Subsystem=AFC100 +MessageID=SelectGeneratorB +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_Select_GeneratorC] +IOMapping=ButtonAuxLowerRight3 +Type=EventMapping +Subsystem=AFC100 +MessageID=SelectGeneratorC +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_Select_GeneratorD] +IOMapping=ButtonAuxLowerRight4 +Type=EventMapping +Subsystem=AFC100 +MessageID=SelectGeneratorD +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_OPTION] +IOMapping=ButtonAuxLowerRight5 +Type=EventMapping +Subsystem=AFC100 +MessageID=EjectAmmo +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerRight6 +Type=EventMapping +Subsystem=AFC100 +MessageID=ToggleGeneratorMode +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_ToggleCooling] +IOMapping=ButtonAuxLowerRight7 +Type=EventMapping +Subsystem=AFC100 +MessageID=ToggleCooling +Mode=ModeMFD3Eng2 + +//-------------------------------------------- +// Aux 3 'Mode 3' mappings, AuxScreenNumber=11 +//-------------------------------------------- +[AFC100_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=AFC100 +AttributeID=TriggerState +Mode=ModeNonMapping +[PPC_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=PPC +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[SRM2_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=SRM2 +AttributeID=TriggerState +Mode=ModeNonMapping +[LRM5_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=LRM5 +AttributeID=TriggerState +Mode=ModeNonMapping diff --git a/CONTENT/BT/MODELS/AVA1THR.CTL b/CONTENT/BT/MODELS/AVA1THR.CTL new file mode 100644 index 0000000..55a98ef --- /dev/null +++ b/CONTENT/BT/MODELS/AVA1THR.CTL @@ -0,0 +1,57 @@ +[StickPosition_JP] +IOMapping=JoystickPhysical +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=StickPosition +Mode=ModeAlwaysActive + +[TorsoLeft_BJHL] +IOMapping=ButtonJoystickHatLeft +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoLeft +Mode=ModeAlwaysActive + +[TorsoRight_BJHR] +IOMapping=ButtonJoystickHatRight +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoRight +Mode=ModeAlwaysActive + +[AFC100_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=AFC100 +AttributeID=TriggerState +Mode=ModeNonMapping +[PPC_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=PPC +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[SRM2_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=SRM2 +AttributeID=TriggerState +Mode=ModeNonMapping +[LRM5_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=LRM5 +AttributeID=TriggerState +Mode=ModeNonMapping diff --git a/CONTENT/BT/MODELS/AVA2.MOD b/CONTENT/BT/MODELS/AVA2.MOD new file mode 100644 index 0000000..90d46d6 --- /dev/null +++ b/CONTENT/BT/MODELS/AVA2.MOD @@ -0,0 +1,136 @@ +[video] +skeleton=ava2.skl +skeletona=avx2.skl +destroyed=ava2d.skl +//destroyeda=avxd.skl +dzm=ava2skin.dzm +dzma=ava2skin.dzm + +[audio] +internal=ava2int.scp +external=ava2ext.scp + +[collision] +name=ava_cv.sld + +[gauge] +image=thor_ga.gim + +[gaugeMissionReview] +pixelmap=ava2_mr.pcc + +[gamedata] +class=MechClassID +MoverMass=70000.0 +MomentOfInertia=1.75 3.125 1.75 +PositiveLinearDragCoefficients=0.14 0.4 0.07 +NegativeLinearDragCoefficients=0.14 0.2 0.08 +AngularDragCoefficients=0.3 0.5 0.3 +FrictionCoefficient=0.1 +ElasticityCoefficient=0.2 +MinimumBounceSpeed=0.2 +MaxAcceleration=10 +AnimationPrefix=ava +Subsystems=ava2.sub +DamageZones=ava2.dmg +DamageLookupTable=ava2dmg.tbl +RelativeMechValue=1.0 +LookLeftAngle=65 +LookRightAngle=-65 +LookBackAngle=0 +LookFrontAngle=-15 +WalkingTurnRate=65 +RunningTurnRate=40 +DeathEffect=avadead +CameraOffset=0.0 15.0 30.0 +DeathSplashDamage=5 +DeathSplashRadius=50 +TimeDelay=0.3 + +MaxUnstableAcceleration=22.0 +UnstableAccelerationEffect=0.7 +UnstableGunTheEngineEffect=1.0 +UnstableSuperStopEffect=0.5 +UnstableHighVelocityEffect=0.4 +UnstableStopedTurnEffect=1.0 +SuperStopAcceleration=20.0 + +ThrottleAdjustment=0.8 + +UpdateTurnDegreeDiffrence=3 +UpdateTurnVelocityDiffrence=0.045 +UpdatePositionDiffrence=0.3 + +ShadowJointName=jointshadow + +[ControlMappings] +Thrustmaster=ava2thr.ctl +L4=ava2l4.ctl + +[animations] +animationtransition=avaswr.ani +animation=avawwl.ani +animation=avawwr.ani +animation=avawsr.ani +animation=avawsl.ani +animationtransition=avawrl.ani +animationtransition=avawrr.ani +animation=avarrl.ani +animation=avarrr.ani +animation=avarwl.ani +animation=avarwr.ani +animation=avabmp.ani +animation=avabbl.ani +animation=avabbr.ani +animation=avabsl.ani +animation=avabsr.ani +animationtransition=avasbl.ani +animationtransition=avasbr.ani + +animationtransition=avaswri.ani +animation=avawwli.ani +animation=avawwri.ani +animation=avawsri.ani +animation=avawsli.ani +animationtransition=avawrli.ani +animationtransition=avawrri.ani +animation=avarrli.ani +animation=avarrri.ani +animation=avarwli.ani +animation=avarwri.ani +animation=avabmpi.ani +animation=avabbli.ani +animation=avabbri.ani +animation=avabsli.ani +animation=avabsri.ani +animationtransition=avasbli.ani +animationtransition=avasbri.ani + +animation=avaggl.ani +animation=avaggr.ani +animation=avagsl.ani +animation=avagsr.ani +animationtransition=avawgl.ani +animationtransition=avawgr.ani + +animation=avaggli.ani +animation=avaggri.ani +animation=avagsli.ani +animation=avagsri.ani +animationtransition=avawgli.ani +animationtransition=avawgri.ani + +animation=avasqu.ani +animation=avasqd.ani +animation=avasqui.ani +animation=avasqdi.ani + +animation=avatrn.ani +animation=avatrni.ani + +//animation=avaff.ani +//animation=avafb.ani +//animation=avafl.ani +//animation=avafr.ani + + diff --git a/CONTENT/BT/MODELS/AVA2DEAD.MOD b/CONTENT/BT/MODELS/AVA2DEAD.MOD new file mode 100644 index 0000000..e70cd7c --- /dev/null +++ b/CONTENT/BT/MODELS/AVA2DEAD.MOD @@ -0,0 +1,9 @@ +[video] +object=104 3 4 5 1007 15 1001 + +[audio] +external=brnext.scp + +[gamedata] +class=ExplosionClassID +ExplosionDuration=44.0 diff --git a/CONTENT/BT/MODELS/AVA2DMG.EXP b/CONTENT/BT/MODELS/AVA2DMG.EXP new file mode 100644 index 0000000..c9b1598 --- /dev/null +++ b/CONTENT/BT/MODELS/AVA2DMG.EXP @@ -0,0 +1,28 @@ +[OneDamage] +ExplosionModelFile=dam1hit +DamageLevel=0.2 +TimeDelay=0.0 + +[TwoDamage] +ExplosionModelFile=dam2hit +DamageLevel=0.4 +TimeDelay=0.0 + +[ThreeDamage] +ExplosionModelFile=dam3hit +DamageLevel=0.6 +TimeDelay=0.0 + +[FourDamage] +ExplosionModelFile=dam4hit +DamageLevel=0.8 +TimeDelay=0.0 + +[DestroyedExplosion] +ExplosionModelFile=desthit +GraphicState=Destroyed + +[GoneExplosion] +ExplosionModelFile=desthit +GraphicState=Gone + diff --git a/CONTENT/BT/MODELS/AVA2THR.CTL b/CONTENT/BT/MODELS/AVA2THR.CTL new file mode 100644 index 0000000..016aba8 --- /dev/null +++ b/CONTENT/BT/MODELS/AVA2THR.CTL @@ -0,0 +1,81 @@ +[StickPosition_JP] +IOMapping=JoystickPhysical +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=StickPosition +Mode=ModeAlwaysActive + +[TorsoLeft_BJHL] +IOMapping=ButtonJoystickHatLeft +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoLeft +Mode=ModeAlwaysActive + +[TorsoRight_BJHR] +IOMapping=ButtonJoystickHatRight +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoRight +Mode=ModeAlwaysActive + +[AFC5_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=AFC5_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[AFC5_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=AFC5_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[AFC5_3_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=AFC5_3 +AttributeID=TriggerState +Mode=ModeNonMapping +[AFC5_4_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=AFC5_4 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[NRK5_1_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=NRK5_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[NRK5_2_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=NRK5_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[NRK5_3_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=NRK5_3 +AttributeID=TriggerState +Mode=ModeNonMapping +[NRK5_4_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=NRK5_4 +AttributeID=TriggerState +Mode=ModeNonMapping diff --git a/CONTENT/BT/MODELS/AVADEAD.MOD b/CONTENT/BT/MODELS/AVADEAD.MOD new file mode 100644 index 0000000..83959ea --- /dev/null +++ b/CONTENT/BT/MODELS/AVADEAD.MOD @@ -0,0 +1,9 @@ +[video] +object=104 3 4 5 1007 15 1001 + +[audio] +external=brnext.scp + +[gamedata] +class=ExplosionClassID +ExplosionDuration=9.0 diff --git a/CONTENT/BT/MODELS/AVADMG.EXP b/CONTENT/BT/MODELS/AVADMG.EXP new file mode 100644 index 0000000..c9b1598 --- /dev/null +++ b/CONTENT/BT/MODELS/AVADMG.EXP @@ -0,0 +1,28 @@ +[OneDamage] +ExplosionModelFile=dam1hit +DamageLevel=0.2 +TimeDelay=0.0 + +[TwoDamage] +ExplosionModelFile=dam2hit +DamageLevel=0.4 +TimeDelay=0.0 + +[ThreeDamage] +ExplosionModelFile=dam3hit +DamageLevel=0.6 +TimeDelay=0.0 + +[FourDamage] +ExplosionModelFile=dam4hit +DamageLevel=0.8 +TimeDelay=0.0 + +[DestroyedExplosion] +ExplosionModelFile=desthit +GraphicState=Destroyed + +[GoneExplosion] +ExplosionModelFile=desthit +GraphicState=Gone + diff --git a/CONTENT/BT/MODELS/AVAL4.CTL b/CONTENT/BT/MODELS/AVAL4.CTL new file mode 100644 index 0000000..12e88d6 --- /dev/null +++ b/CONTENT/BT/MODELS/AVAL4.CTL @@ -0,0 +1,1061 @@ +[StickPosition_JP] +//----------------------------------------------------------------------- +// Joystick +//----------------------------------------------------------------------- +IOMapping=JoystickPhysical +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=StickPosition +Mode=ModeAlwaysActive + +[Throttle_ST] +//----------------------------------------------------------------------- +// Throttle +//----------------------------------------------------------------------- +IOMapping=ScalarThrottle +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=ThrottlePosition +Mode=ModeAlwaysActive + +//----------------------------------------------------------------------- +// Misc. switches +//----------------------------------------------------------------------- +[ReverseThrust_BT1] +IOMapping=ButtonThrottle1 +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=ReverseThrust +Mode=ModeAlwaysActive + +[TorsoCenter_BJHU] +IOMapping=ButtonJoystickHatUp +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoCenter +Mode=ModeAlwaysActive + +[LookLeft_BJHL] +IOMapping=ButtonJoystickHatLeft +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=LookLeft +Mode=ModeAlwaysActive + +[LookRight_BJHR] +IOMapping=ButtonJoystickHatRight +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=LookRight +Mode=ModeAlwaysActive + +[LookBack_BJHD] +IOMapping=ButtonJoystickHatDown +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=LookBehind +Mode=ModeAlwaysActive + +//----------------------------------------------------------------------- +// Secondary mappings +//----------------------------------------------------------------------- +[Button_Sec_1] // Zoom radar in (magnify image) +IOMapping=ButtonSecondary1 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=ZoomIn +Mode=ModeAlwaysActive + +[Button_Sec_2] // Zoom radar out (reduce image) +IOMapping=ButtonSecondary2 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=ZoomOut +Mode=ModeAlwaysActive + +// +// 'Heat vision' mapped to secondary +// SGM 1/6/97 + +[Button_Sec_3] // Toggle heat vision +IOMapping=ButtonSecondary3 +Type=EventMapping +Subsystem=ThermalSight +MessageID=ToggleLamp +Mode=ModeAlwaysActive + +// +// 'Duck' remapped to real message and location. +// GDU 7/9/96 + +[Button_Sec_4] // Request crouch position +IOMapping=ButtonSecondary4 +Type=EventMapping +MessageID=DuckRequest +Mode=ModeAlwaysActive + +[Button_Sec_5] // Toggle searchlight +IOMapping=ButtonSecondary5 +Type=EventMapping +Subsystem=Searchlight +MessageID=ToggleLamp +Mode=ModeAlwaysActive + +[Button_Sec_6] // Cycle through damage display modes +IOMapping=ButtonSecondary6 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=CycleDisplayMode +Mode=ModeAlwaysActive + +[Button_Sec_7] // Cycle through control modes +IOMapping=ButtonSecondary7 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=CycleControlMode +Mode=ModeAlwaysActive + +// ButtonSecondary8 presently unused + +[Button_Sec_9] // Toggle generator 'a' +IOMapping=ButtonSecondary9 +Type=EventMapping +Subsystem=GeneratorA +MessageID=ToggleGeneratorOnOff +Mode=ModeAlwaysActive + +[Button_Sec_10] // Toggle generator 'b' +IOMapping=ButtonSecondary10 +Type=EventMapping +Subsystem=GeneratorB +MessageID=ToggleGeneratorOnOff +Mode=ModeAlwaysActive + +[Button_Sec_11] // Toggle generator 'c' +IOMapping=ButtonSecondary11 +Type=EventMapping +Subsystem=GeneratorC +MessageID=ToggleGeneratorOnOff +Mode=ModeAlwaysActive + +[Button_Sec_12] // Toggle generator 'd' +IOMapping=ButtonSecondary12 +Type=EventMapping +Subsystem=GeneratorD +MessageID=ToggleGeneratorOnOff +Mode=ModeAlwaysActive + +//----------------------------------------- +// Heat Management Screen Mappings +//----------------------------------------- +[Condenser1_Button] +IOMapping=ButtonAuxUpperLeft1 +Type=EventMapping +Subsystem=Condenser1 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Condenser2_Button] +IOMapping=ButtonAuxUpperLeft2 +Type=EventMapping +Subsystem=Condenser2 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Condenser3_Button] +IOMapping=ButtonAuxUpperLeft3 +Type=EventMapping +Subsystem=Condenser3 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Reservoir_Button] +IOMapping=ButtonAuxUpperLeft4 +Type=EventMapping +Subsystem=Reservoir +MessageID=InjectCoolant +Mode=ModeAlwaysActive + +[Condenser4_Button] +IOMapping=ButtonAuxUpperLeft5 +Type=EventMapping +Subsystem=Condenser4 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Condenser5_Button] +IOMapping=ButtonAuxUpperLeft6 +Type=EventMapping +Subsystem=Condenser5 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Condenser6_Button] +IOMapping=ButtonAuxUpperLeft7 +Type=EventMapping +Subsystem=Condenser6 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Reduce_Button] +IOMapping=ButtonAuxUpperLeft8 +Type=EventMapping +MessageID=BalanceCoolant +Mode=ModeAlwaysActive + +//----------------------------------------------------------------------- +// Aux 1 mappings +//----------------------------------------------------------------------- +//------------------------------------------ +// Aux 1 'Quad screen' mappings +//------------------------------------------ +[MFD1_to_Mode_1] // To mode 1 +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Eng1 +Mode=ModeMFD1Quad + +[MFD1_Configure_Trigger_1] // Configure +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Subsystem=ERLLaser_1 +MessageID=ConfigureMappables +Mode=ModeMFD1Quad + +[MFD1_to_Mode_2] // To mode 2 +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Eng2 +Mode=ModeMFD1Quad + +[MFD1_Configure_Trigger_2] // Configure +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Subsystem=LRM10_1 +MessageID=ConfigureMappables +Mode=ModeMFD1Quad + +[MFD1_to_Mode_3] // To mode 3 +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Eng3 +Mode=ModeMFD1Quad + +[MFD1_Configure_Trigger_3] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Subsystem=ERLLaser_2 +MessageID=ConfigureMappables +Mode=ModeMFD1Quad + +[MFD1_to_Mode_4] // To mode 4 +IOMapping=ButtonAuxLowerLeft7 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Eng4 +Mode=ModeMFD1Quad + +[MFD1_Configure_Trigger_4] // Configure +IOMapping=ButtonAuxLowerLeft8 +Type=EventMapping +Subsystem=ERMLaser_1 +MessageID=ConfigureMappables +Mode=ModeMFD1Quad + +//---------------------------------------------- +// Aux 1 'Mode 1' mappings, AuxScreenNumber=1 +//---------------------------------------------- +[Aux_1_Mode_1_to_MFD1] +IOMapping=ButtonAuxLowerLeft8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Quad +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_Select_GeneratorA] +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Subsystem=ERLLaser_1 +MessageID=SelectGeneratorA +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_Select_GeneratorB] +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Subsystem=ERLLaser_1 +MessageID=SelectGeneratorB +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_Select_GeneratorC] +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Subsystem=ERLLaser_1 +MessageID=SelectGeneratorC +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_Select_GeneratorD] +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Subsystem=ERLLaser_1 +MessageID=SelectGeneratorD +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_OPTION] +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Subsystem=ERLLaser_1 +MessageID=ToggleSeekVoltage +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Subsystem=ERLLaser_1 +MessageID=ToggleGeneratorMode +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_ToggleCooling] +IOMapping=ButtonAuxLowerLeft7 +Type=EventMapping +Subsystem=ERLLaser_1 +MessageID=ToggleCooling +Mode=ModeMFD1Eng1 + +//-------------------------------------------- +// Aux 1 'Mode 2' mappings, AuxScreenNumber=2 +//-------------------------------------------- +[Aux_1_Mode_2_to_MFD1] +IOMapping=ButtonAuxLowerLeft8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Quad +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_Select_GeneratorA] +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Subsystem=LRM10_1 +MessageID=SelectGeneratorA +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_Select_GeneratorB] +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Subsystem=LRM10_1 +MessageID=SelectGeneratorB +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_Select_GeneratorC] +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Subsystem=LRM10_1 +MessageID=SelectGeneratorC +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_Select_GeneratorD] +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Subsystem=LRM10_1 +MessageID=SelectGeneratorD +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_OPTION] +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Subsystem=LRM10_1 +MessageID=EjectAmmo +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Subsystem=LRM10_1 +MessageID=ToggleGeneratorMode +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_ToggleCooling] +IOMapping=ButtonAuxLowerLeft7 +Type=EventMapping +Subsystem=LRM10_1 +MessageID=ToggleCooling +Mode=ModeMFD1Eng2 + +//--------------------------------------------- +// Aux 1 'Mode 3' mappings, AuxScreenNumber=3 +//--------------------------------------------- +[Aux_1_Mode_3_to_MFD1] +IOMapping=ButtonAuxLowerLeft8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Quad +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_Select_GeneratorA] +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Subsystem=ERLLaser_2 +MessageID=SelectGeneratorA +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_Select_GeneratorB] +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Subsystem=ERLLaser_2 +MessageID=SelectGeneratorB +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_Select_GeneratorC] +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Subsystem=ERLLaser_2 +MessageID=SelectGeneratorC +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_Select_GeneratorD] +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Subsystem=ERLLaser_2 +MessageID=SelectGeneratorD +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_OPTION] +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Subsystem=ERLLaser_2 +MessageID=ToggleSeekVoltage +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Subsystem=ERLLaser_2 +MessageID=ToggleGeneratorMode +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_ToggleCooling] +IOMapping=ButtonAuxLowerLeft7 +Type=EventMapping +Subsystem=ERLLaser_2 +MessageID=ToggleCooling +Mode=ModeMFD1Eng3 + +//-------------------------------------------- +// Aux 1 "Mode 4" Mappings, AuxScreenNumber=4 +//-------------------------------------------- +[Aux_1_Mode_4_to_MFD1] +IOMapping=ButtonAuxLowerLeft8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Quad +Mode=ModeMFD1Eng4 + +[Aux_1_Mode_4_Select_GeneratorA] +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Subsystem=ERMLaser_1 +MessageID=SelectGeneratorA +Mode=ModeMFD1Eng4 + +[Aux_1_Mode_4_Select_GeneratorB] +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Subsystem=ERMLaser_1 +MessageID=SelectGeneratorB +Mode=ModeMFD1Eng4 + +[Aux_1_Mode_4_Select_GeneratorC] +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Subsystem=ERMLaser_1 +MessageID=SelectGeneratorC +Mode=ModeMFD1Eng4 + +[Aux_1_Mode_4_Select_GeneratorD] +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Subsystem=ERMLaser_1 +MessageID=SelectGeneratorD +Mode=ModeMFD1Eng4 + +[Aux_1_Mode_4_OPTION] +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Subsystem=ERMLaser_1 +MessageID=ToggleSeekVoltage +Mode=ModeMFD1Eng4 + +[Aux_1_Mode_4_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Subsystem=ERMLaser_1 +MessageID=ToggleGeneratorMode +Mode=ModeMFD1Eng4 + +[Aux_1_Mode_4_ToggleCooling] +IOMapping=ButtonAuxLowerLeft7 +Type=EventMapping +Subsystem=ERMLaser_1 +MessageID=ToggleCooling +Mode=ModeMFD1Eng4 + + +//----------------------------------------------------------------------- +// Aux 2 mappings +//----------------------------------------------------------------------- +//------------------------------------------ +// Aux 2 'Quad screen' mappings +//------------------------------------------ +[MFD2_to_Mode_1] +IOMapping=ButtonAuxUpperCenter1 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Eng1 +Mode=ModeMFD2Quad + +[MFD2_to_Mode_2] +IOMapping=ButtonAuxUpperCenter3 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Eng2 +Mode=ModeMFD2Quad + +[MFD2_to_Mode_3] +IOMapping=ButtonAuxUpperCenter5 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Eng3 +Mode=ModeMFD2Quad + +[MFD2_Configure_Trigger_3] +IOMapping=ButtonAuxUpperCenter6 +Type=EventMapping +Subsystem=ERMLaser_2 +MessageID=ConfigureMappables +Mode=ModeMFD2Quad + +[MFD2_to_Mode_4] +IOMapping=ButtonAuxUpperCenter7 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Eng4 +Mode=ModeMFD2Quad + +[MFD2_Configure_Trigger_4] +IOMapping=ButtonAuxUpperCenter8 +Type=EventMapping +Subsystem=ERMLaser_3 +MessageID=ConfigureMappables +Mode=ModeMFD2Quad + +//-------------------------------------------- +// Aux 2 'Mode 1' mappings, AuxScreenNumber=9 +//-------------------------------------------- +[Aux_2_Mode_1_to_MFD2] +IOMapping=ButtonAuxUpperCenter8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Quad +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_Select_GeneratorA] +IOMapping=ButtonAuxUpperCenter1 +Type=EventMapping +Subsystem=Avionics +MessageID=SelectGeneratorA +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_Select_GeneratorB] +IOMapping=ButtonAuxUpperCenter2 +Type=EventMapping +Subsystem=Avionics +MessageID=SelectGeneratorB +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_Select_GeneratorC] +IOMapping=ButtonAuxUpperCenter3 +Type=EventMapping +Subsystem=Avionics +MessageID=SelectGeneratorC +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_Select_GeneratorD] +IOMapping=ButtonAuxUpperCenter4 +Type=EventMapping +Subsystem=Avionics +MessageID=SelectGeneratorD +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_ToggleGeneratorMode] +IOMapping=ButtonAuxUpperCenter6 +Type=EventMapping +Subsystem=Avionics +MessageID=ToggleGeneratorMode +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_ToggleCooling] +IOMapping=ButtonAuxUpperCenter7 +Type=EventMapping +Subsystem=Avionics +MessageID=ToggleCooling +Mode=ModeMFD2Eng1 + +//-------------------------------------------- +// Aux 2 'Mode 2' mappings, AuxScreenNumber=10 +//-------------------------------------------- +[Aux_2_Mode_2_to_MFD2] +IOMapping=ButtonAuxUpperCenter8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Quad +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_Select_GeneratorA] +IOMapping=ButtonAuxUpperCenter1 +Type=EventMapping +Subsystem=Myomers +MessageID=SelectGeneratorA +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_Select_GeneratorB] +IOMapping=ButtonAuxUpperCenter2 +Type=EventMapping +Subsystem=Myomers +MessageID=SelectGeneratorB +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_Select_GeneratorC] +IOMapping=ButtonAuxUpperCenter3 +Type=EventMapping +Subsystem=Myomers +MessageID=SelectGeneratorC +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_Select_GeneratorD] +IOMapping=ButtonAuxUpperCenter4 +Type=EventMapping +Subsystem=Myomers +MessageID=SelectGeneratorD +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_OPTION] +IOMapping=ButtonAuxUpperCenter5 +Type=EventMapping +Subsystem=Myomers +MessageID=ToggleSeekVoltage +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_ToggleGeneratorMode] +IOMapping=ButtonAuxUpperCenter6 +Type=EventMapping +Subsystem=Myomers +MessageID=ToggleGeneratorMode +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_ToggleCooling] +IOMapping=ButtonAuxUpperCenter7 +Type=EventMapping +Subsystem=Myomers +MessageID=ToggleCooling +Mode=ModeMFD2Eng2 + +//-------------------------------------------- +// Aux 3 'Mode 3' mappings, AuxScreenNumber=11 +//-------------------------------------------- +[Aux_2_Mode_3_to_MFD2] +IOMapping=ButtonAuxUpperCenter8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Quad +Mode=ModeMFD2Eng3 + +[Aux_2_Mode_3_Select_GeneratorA] +IOMapping=ButtonAuxUpperCenter1 +Type=EventMapping +Subsystem=ERMLaser_2 +MessageID=SelectGeneratorA +Mode=ModeMFD2Eng3 + +[Aux_2_Mode_3_Select_GeneratorB] +IOMapping=ButtonAuxUpperCenter2 +Type=EventMapping +Subsystem=ERMLaser_2 +MessageID=SelectGeneratorB +Mode=ModeMFD2Eng3 + +[Aux_2_Mode_3_Select_GeneratorC] +IOMapping=ButtonAuxUpperCenter3 +Type=EventMapping +Subsystem=ERMLaser_2 +MessageID=SelectGeneratorC +Mode=ModeMFD2Eng3 + +[Aux_2_Mode_3_Select_GeneratorD] +IOMapping=ButtonAuxUpperCenter4 +Type=EventMapping +Subsystem=ERMLaser_2 +MessageID=SelectGeneratorD +Mode=ModeMFD2Eng3 + +[Aux_2_Mode_3_OPTION] +IOMapping=ButtonAuxUpperCenter5 +Type=EventMapping +Subsystem=ERMLaser_2 +MessageID=ToggleSeekVoltage +Mode=ModeMFD2Eng3 + +[Aux_2_Mode_3_ToggleGeneratorMode] +IOMapping=ButtonAuxUpperCenter6 +Type=EventMapping +Subsystem=ERMLaser_2 +MessageID=ToggleGeneratorMode +Mode=ModeMFD2Eng3 + +[Aux_2_Mode_3_ToggleCooling] +IOMapping=ButtonAuxUpperCenter7 +Type=EventMapping +Subsystem=ERMLaser_2 +MessageID=ToggleCooling +Mode=ModeMFD2Eng3 + +//--------------------------------------------- +// Aux 3 'Mode 4' mappings, AuxScreenNumber=12 +//--------------------------------------------- +[Aux_2_Mode_4_to_MFD2] +IOMapping=ButtonAuxUpperCenter8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Quad +Mode=ModeMFD2Eng4 + +[Aux_2_Mode_4_Select_GeneratorA] +IOMapping=ButtonAuxUpperCenter1 +Type=EventMapping +Subsystem=ERMLaser_3 +MessageID=SelectGeneratorA +Mode=ModeMFD2Eng4 + +[Aux_2_Mode_4_Select_GeneratorB] +IOMapping=ButtonAuxUpperCenter2 +Type=EventMapping +Subsystem=ERMLaser_3 +MessageID=SelectGeneratorB +Mode=ModeMFD2Eng4 + +[Aux_2_Mode_4_Select_GeneratorC] +IOMapping=ButtonAuxUpperCenter3 +Type=EventMapping +Subsystem=ERMLaser_3 +MessageID=SelectGeneratorC +Mode=ModeMFD2Eng4 + +[Aux_2_Mode_4_Select_GeneratorD] +IOMapping=ButtonAuxUpperCenter4 +Type=EventMapping +Subsystem=ERMLaser_3 +MessageID=SelectGeneratorD +Mode=ModeMFD2Eng4 + +[Aux_2_Mode_4_OPTION] +IOMapping=ButtonAuxUpperCenter5 +Type=EventMapping +Subsystem=ERMLaser_3 +MessageID=ToggleSeekVoltage +Mode=ModeMFD2Eng4 + +[Aux_2_Mode_4_ToggleGeneratorMode] +IOMapping=ButtonAuxUpperCenter6 +Type=EventMapping +Subsystem=ERMLaser_3 +MessageID=ToggleGeneratorMode +Mode=ModeMFD2Eng4 + +[Aux_2_Mode_4_ToggleCooling] +IOMapping=ButtonAuxUpperCenter7 +Type=EventMapping +Subsystem=ERMLaser_3 +MessageID=ToggleCooling +Mode=ModeMFD2Eng4 + + +//----------------------------------------------------------------------- +// Aux 3 mappings +//----------------------------------------------------------------------- +//------------------------------------------ +// Aux 3 'Quad screen' mappings +//------------------------------------------ +[MFD3_to_Mode_1] +IOMapping=ButtonAuxLowerRight1 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Eng1 +Mode=ModeMFD3Quad + +[MFD3_Configure_Trigger_1] +IOMapping=ButtonAuxLowerRight2 +Type=EventMapping +Subsystem=LRM10_2 +MessageID=ConfigureMappables +Mode=ModeMFD3Quad + +[MFD3_to_Mode_2] +IOMapping=ButtonAuxLowerRight3 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Eng2 +Mode=ModeMFD3Quad + +[MFD3_Configure_Trigger_2] +IOMapping=ButtonAuxLowerRight4 +Type=EventMapping +Subsystem=AFC50 +MessageID=ConfigureMappables +Mode=ModeMFD3Quad + +[MFD3_to_Mode_3] +IOMapping=ButtonAuxLowerRight5 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Eng3 +Mode=ModeMFD3Quad + +[MFD3_Configure_Trigger_3] +IOMapping=ButtonAuxLowerRight6 +Type=EventMapping +Subsystem=ERMLaser_4 +MessageID=ConfigureMappables +Mode=ModeMFD3Quad + +[Aux_3_Mode_1_to_MFD3] +IOMapping=ButtonAuxLowerRight8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Quad +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_Select_GeneratorA] +IOMapping=ButtonAuxLowerRight1 +Type=EventMapping +Subsystem=LRM10_2 +MessageID=SelectGeneratorA +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_Select_GeneratorB] +IOMapping=ButtonAuxLowerRight2 +Type=EventMapping +Subsystem=LRM10_2 +MessageID=SelectGeneratorB +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_Select_GeneratorC] +IOMapping=ButtonAuxLowerRight3 +Type=EventMapping +Subsystem=LRM10_2 +MessageID=SelectGeneratorC +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_Select_GeneratorD] +IOMapping=ButtonAuxLowerRight4 +Type=EventMapping +Subsystem=LRM10_2 +MessageID=SelectGeneratorD +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_OPTION] +IOMapping=ButtonAuxLowerRight5 +Type=EventMapping +Subsystem=LRM10_2 +MessageID=EjectAmmo +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerRight6 +Type=EventMapping +Subsystem=LRM10_2 +MessageID=ToggleGeneratorMode +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_ToggleCooling] +IOMapping=ButtonAuxLowerRight7 +Type=EventMapping +Subsystem=LRM10_2 +MessageID=ToggleCooling +Mode=ModeMFD3Eng1 + +//-------------------------------------------- +// Aux 3 'Mode 2' mappings, AuxScreenNumber=10 +//-------------------------------------------- +[Aux_3_Mode_2_to_MFD3] +IOMapping=ButtonAuxLowerRight8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Quad +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_Select_GeneratorA] +IOMapping=ButtonAuxLowerRight1 +Type=EventMapping +Subsystem=AFC50 +MessageID=SelectGeneratorA +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_Select_GeneratorB] +IOMapping=ButtonAuxLowerRight2 +Type=EventMapping +Subsystem=AFC50 +MessageID=SelectGeneratorB +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_Select_GeneratorC] +IOMapping=ButtonAuxLowerRight3 +Type=EventMapping +Subsystem=AFC50 +MessageID=SelectGeneratorC +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_Select_GeneratorD] +IOMapping=ButtonAuxLowerRight4 +Type=EventMapping +Subsystem=AFC50 +MessageID=SelectGeneratorD +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_OPTION] +IOMapping=ButtonAuxLowerRight5 +Type=EventMapping +Subsystem=AFC50 +MessageID=EjectAmmo +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerRight6 +Type=EventMapping +Subsystem=AFC50 +MessageID=ToggleGeneratorMode +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_ToggleCooling] +IOMapping=ButtonAuxLowerRight7 +Type=EventMapping +Subsystem=AFC50 +MessageID=ToggleCooling +Mode=ModeMFD3Eng2 + +//-------------------------------------------- +// Aux 3 'Mode 3' mappings, AuxScreenNumber=11 +//-------------------------------------------- +[Aux_3_Mode_3_to_MFD3] +IOMapping=ButtonAuxLowerRight8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Quad +Mode=ModeMFD3Eng3 + +[Aux_3_Mode_3_Select_GeneratorA] +IOMapping=ButtonAuxLowerRight1 +Type=EventMapping +Subsystem=ERMLaser_4 +MessageID=SelectGeneratorA +Mode=ModeMFD3Eng3 + +[Aux_3_Mode_3_Select_GeneratorB] +IOMapping=ButtonAuxLowerRight2 +Type=EventMapping +Subsystem=ERMLaser_4 +MessageID=SelectGeneratorB +Mode=ModeMFD3Eng3 + +[Aux_3_Mode_3_Select_GeneratorC] +IOMapping=ButtonAuxLowerRight3 +Type=EventMapping +Subsystem=ERMLaser_4 +MessageID=SelectGeneratorC +Mode=ModeMFD3Eng3 + +[Aux_3_Mode_3_Select_GeneratorD] +IOMapping=ButtonAuxLowerRight4 +Type=EventMapping +Subsystem=ERMLaser_4 +MessageID=SelectGeneratorD +Mode=ModeMFD3Eng3 + +[Aux_3_Mode_3_OPTION] +IOMapping=ButtonAuxLowerRight5 +Type=EventMapping +Subsystem=ERMLaser_4 +MessageID=ToggleSeekVoltage +Mode=ModeMFD3Eng3 + +[Aux_3_Mode_3_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerRight6 +Type=EventMapping +Subsystem=ERMLaser_4 +MessageID=ToggleGeneratorMode +Mode=ModeMFD3Eng3 + +[Aux_3_Mode_3_ToggleCooling] +IOMapping=ButtonAuxLowerRight7 +Type=EventMapping +Subsystem=ERMLaser_4 +MessageID=ToggleCooling +Mode=ModeMFD3Eng3 + +//--------------------------------------------- +// Aux 3 'Mode 4' mappings, AuxScreenNumber=12 +//--------------------------------------------- +[AFC50_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=AFC50 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERLLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERLLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERLLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERLLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_3_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_3 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_4_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_4 +AttributeID=TriggerState +Mode=ModeNonMapping +[LRM10_1_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=LRM10_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[LRM10_2_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=LRM10_2 +AttributeID=TriggerState +Mode=ModeNonMapping diff --git a/CONTENT/BT/MODELS/AVATAR.DMG b/CONTENT/BT/MODELS/AVATAR.DMG new file mode 100644 index 0000000..14f12c6 --- /dev/null +++ b/CONTENT/BT/MODELS/AVATAR.DMG @@ -0,0 +1,195 @@ +// This file is intentionally empty and MUST be read-only! +[dz_dtorso] +ExplosionTable=avadmg.exp +DefaultEffectSiteName=siteedz_dtorso +WeaponDamagePoints=123 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Condenser5 2 0.500000 +CriticalSubsystem=GeneratorD 10 0.500000 +CriticalSubsystem=Avionics 5 0.200000 +CriticalSubsystem=Torso 15 0.333333 +CriticalSubsystem=ERMLaser_2 15 1.000000 +CriticalSubsystem=ERMLaser_3 15 1.000000 +[dz_hip] +ExplosionTable=avadmg.exp +DefaultEffectSiteName=siteedz_hip +WeaponDamagePoints=123 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Myomers 15 0.142857 +CriticalSubsystem=Gyroscope 15 0.333333 +CriticalSubsystem=Torso 15 0.333333 +[dz_larm] +ExplosionTable=avadmg.exp +DefaultEffectSiteName=siteedz_larm +WeaponDamagePoints=77 +VitalDamageZone=False +DescendOnDestruction=True +CriticalSubsystem=Condenser4 2 0.500000 +[dz_ldleg] +ExplosionTable=avadmg.exp +DefaultEffectSiteName=siteedz_ldleg +WeaponDamagePoints=90 +VitalDamageZone=True +LegDamageZone=LeftLeg +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Myomers 15 0.142857 +[dz_ldoor] +ExplosionTable=avadmg.exp +DefaultEffectSiteName=siteedz_ldoor +WeaponDamagePoints=1 +VitalDamageZone=False +[dz_lfoot] +ExplosionTable=avadmg.exp +DefaultEffectSiteName=siteedz_lfoot +WeaponDamagePoints=81 +VitalDamageZone=True +LegDamageZone=LeftLeg +CriticalSubsystem=Myomers 15 0.142857 +[dz_lgun] +ExplosionTable=avadmg.exp +DefaultEffectSiteName=siteedz_lgun +WeaponDamagePoints=72 +VitalDamageZone=False +DescendOnDestruction=True +CriticalSubsystem=Condenser4 2 0.500000 +CriticalSubsystem=ERLLaser_1 10 1.000000 +CriticalSubsystem=ERLLaser_2 10 1.000000 +[dz_ltorso] +ExplosionTable=avadmg.exp +DefaultEffectSiteName=siteedz_ltorso +WeaponDamagePoints=119 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Condenser1 2 0.500000 +CriticalSubsystem=GeneratorA 10 0.500000 +CriticalSubsystem=Avionics 5 0.200000 +CriticalSubsystem=ERMLaser_1 20 1.000000 +CriticalSubsystem=AmmoBinLRM10_1 15 0.500000 +CriticalSubsystem=LRM10_1 15 1.000000 +[dz_luleg] +ExplosionTable=avadmg.exp +DefaultEffectSiteName=siteedz_luleg +WeaponDamagePoints=98 +VitalDamageZone=True +LegDamageZone=LeftLeg +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Myomers 15 0.142857 +[dz_rarm] +ExplosionTable=avadmg.exp +DefaultEffectSiteName=siteedz_rarm +WeaponDamagePoints=77 +VitalDamageZone=False +DescendOnDestruction=True +CriticalSubsystem=Condenser6 2 0.500000 +CriticalSubsystem=AmmoBinAFC50 15 0.500000 +[dz_rdleg] +ExplosionTable=avadmg.exp +DefaultEffectSiteName=siteedz_rdleg +WeaponDamagePoints=90 +VitalDamageZone=True +LegDamageZone=RightLeg +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Myomers 15 0.142857 +[dz_rdoor] +ExplosionTable=avadmg.exp +DefaultEffectSiteName=siteedz_rdoor +WeaponDamagePoints=1 +VitalDamageZone=False +[dz_reardtorso] +ExplosionTable=avadmg.exp +DefaultEffectSiteName=siteedz_reardtorso +WeaponDamagePoints=81 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Reservoir 10 0.250000 +CriticalSubsystem=Condenser5 2 0.500000 +CriticalSubsystem=GeneratorD 10 0.500000 +CriticalSubsystem=Torso 15 0.333333 +[dz_rearltorso] +ExplosionTable=avadmg.exp +DefaultEffectSiteName=siteedz_rearltorso +WeaponDamagePoints=81 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Reservoir 10 0.250000 +CriticalSubsystem=Condenser1 2 0.500000 +CriticalSubsystem=GeneratorA 10 0.500000 +CriticalSubsystem=AmmoBinLRM10_1 15 0.500000 +[dz_rearrtorso] +ExplosionTable=avadmg.exp +DefaultEffectSiteName=siteedz_rearrtorso +WeaponDamagePoints=81 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Reservoir 10 0.250000 +CriticalSubsystem=Condenser3 2 0.500000 +CriticalSubsystem=GeneratorC 10 0.500000 +CriticalSubsystem=AmmoBinLRM10_2 15 0.500000 +[dz_rearutorso] +ExplosionTable=avadmg.exp +DefaultEffectSiteName=siteedz_rearutorso +WeaponDamagePoints=102 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Reservoir 10 0.250000 +CriticalSubsystem=Condenser2 2 0.500000 +CriticalSubsystem=GeneratorB 10 0.500000 +CriticalSubsystem=Gyroscope 30 0.333333 +[dz_rfoot] +ExplosionTable=avadmg.exp +DefaultEffectSiteName=siteedz_rfoot +WeaponDamagePoints=81 +VitalDamageZone=True +LegDamageZone=RightLeg +CriticalSubsystem=Myomers 15 0.142857 +[dz_rgun] +ExplosionTable=avadmg.exp +DefaultEffectSiteName=siteedz_rgun +WeaponDamagePoints=72 +VitalDamageZone=False +DescendOnDestruction=True +CriticalSubsystem=Condenser6 2 0.500000 +CriticalSubsystem=AmmoBinAFC50 15 0.500000 +CriticalSubsystem=AFC50 15 1.000000 +[dz_rtorso] +ExplosionTable=avadmg.exp +DefaultEffectSiteName=siteedz_rtorso +WeaponDamagePoints=119 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Condenser3 2 0.500000 +CriticalSubsystem=GeneratorC 10 0.500000 +CriticalSubsystem=Avionics 5 0.200000 +CriticalSubsystem=ERMLaser_4 20 1.000000 +CriticalSubsystem=AmmoBinLRM10_2 15 0.500000 +CriticalSubsystem=LRM10_2 15 1.000000 +[dz_ruleg] +ExplosionTable=avadmg.exp +DefaultEffectSiteName=siteedz_ruleg +WeaponDamagePoints=98 +VitalDamageZone=True +LegDamageZone=RightLeg +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Myomers 15 0.142857 +[dz_searchlight] +ExplosionTable=avadmg.exp +DefaultEffectSiteName=siteedz_searchlight +WeaponDamagePoints=50 +VitalDamageZone=False +CriticalSubsystem=Avionics 5 0.200000 +CriticalSubsystem=HUD 15 0.500000 +CriticalSubsystem=Searchlight 45 1.000000 +CriticalSubsystem=ThermalSight 30 1.000000 +[dz_utorso] +ExplosionTable=avadmg.exp +DefaultEffectSiteName=siteedz_utorso +WeaponDamagePoints=140 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Condenser2 2 0.500000 +CriticalSubsystem=GeneratorB 10 0.500000 +CriticalSubsystem=Avionics 5 0.200000 +CriticalSubsystem=Gyroscope 30 0.333333 +CriticalSubsystem=HUD 15 0.500000 diff --git a/CONTENT/BT/MODELS/AVATAR.MOD b/CONTENT/BT/MODELS/AVATAR.MOD new file mode 100644 index 0000000..cf8b176 --- /dev/null +++ b/CONTENT/BT/MODELS/AVATAR.MOD @@ -0,0 +1,136 @@ +[video] +skeleton=ava.skl +skeletona=avx.skl +destroyed=avad.skl +//destroyeda=avxd.skl +dzm=avaskin.dzm +dzma=avaskin.dzm + +[audio] +internal=avaint.scp +external=avaext.scp + +[collision] +name=ava_cv.sld + +[gauge] +image=thor_ga.gim + +[gaugeMissionReview] +pixelmap=ava_mr.pcc + +[gamedata] +class=MechClassID +MoverMass=70000.0 +MomentOfInertia=1.75 3.125 1.75 +PositiveLinearDragCoefficients=0.14 0.4 0.07 +NegativeLinearDragCoefficients=0.14 0.2 0.08 +AngularDragCoefficients=0.3 0.5 0.3 +FrictionCoefficient=0.1 +ElasticityCoefficient=0.2 +MinimumBounceSpeed=0.2 +MaxAcceleration=10 +AnimationPrefix=ava +Subsystems=avatar.sub +DamageZones=avatar.dmg +DamageLookupTable=avadmg.tbl +RelativeMechValue=1.0 +LookLeftAngle=65 +LookRightAngle=-65 +LookBackAngle=0 +LookFrontAngle=-15 +WalkingTurnRate=65 +RunningTurnRate=40 +DeathEffect=thrdead +CameraOffset=0.0 15.0 30.0 +DeathSplashDamage=5 +DeathSplashRadius=50 +TimeDelay=0.3 + +MaxUnstableAcceleration=22.0 +UnstableAccelerationEffect=0.7 +UnstableGunTheEngineEffect=1.0 +UnstableSuperStopEffect=0.5 +UnstableHighVelocityEffect=0.4 +UnstableStopedTurnEffect=1.0 +SuperStopAcceleration=20.0 + +ThrottleAdjustment=0.8 + +UpdateTurnDegreeDiffrence=3 +UpdateTurnVelocityDiffrence=0.045 +UpdatePositionDiffrence=0.3 + +ShadowJointName=jointshadow + +[ControlMappings] +Thrustmaster=avathr.ctl +L4=aval4.ctl + +[animations] +animationtransition=avaswr.ani +animation=avawwl.ani +animation=avawwr.ani +animation=avawsr.ani +animation=avawsl.ani +animationtransition=avawrl.ani +animationtransition=avawrr.ani +animation=avarrl.ani +animation=avarrr.ani +animation=avarwl.ani +animation=avarwr.ani +animation=avabmp.ani +animation=avabbl.ani +animation=avabbr.ani +animation=avabsl.ani +animation=avabsr.ani +animationtransition=avasbl.ani +animationtransition=avasbr.ani + +animationtransition=avaswri.ani +animation=avawwli.ani +animation=avawwri.ani +animation=avawsri.ani +animation=avawsli.ani +animationtransition=avawrli.ani +animationtransition=avawrri.ani +animation=avarrli.ani +animation=avarrri.ani +animation=avarwli.ani +animation=avarwri.ani +animation=avabmpi.ani +animation=avabbli.ani +animation=avabbri.ani +animation=avabsli.ani +animation=avabsri.ani +animationtransition=avasbli.ani +animationtransition=avasbri.ani + +animation=avaggl.ani +animation=avaggr.ani +animation=avagsl.ani +animation=avagsr.ani +animationtransition=avawgl.ani +animationtransition=avawgr.ani + +animation=avaggli.ani +animation=avaggri.ani +animation=avagsli.ani +animation=avagsri.ani +animationtransition=avawgli.ani +animationtransition=avawgri.ani + +animation=avasqu.ani +animation=avasqd.ani +animation=avasqui.ani +animation=avasqdi.ani + +animation=avatrn.ani +animation=avatrni.ani + +//animation=avaff.ani +//animation=avafb.ani +//animation=avafl.ani +//animation=avafr.ani + + diff --git a/CONTENT/BT/MODELS/AVATAR.SUB b/CONTENT/BT/MODELS/AVATAR.SUB new file mode 100644 index 0000000..dddfab5 --- /dev/null +++ b/CONTENT/BT/MODELS/AVATAR.SUB @@ -0,0 +1,230 @@ +[HeatSink] +Type=HeatSinkClassID +Include=heatsnk.sub +HeatSinkCount=15 +SubsystemFlags=DontReplicateFlag + +[Reservoir] +Type=ReservoirClassID +Include=reserve.sub +HeatSink=HeatSink +SegmentPageName=siteeyepoint + +[Condenser1] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser2] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser3] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser4] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser5] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser6] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[GeneratorA] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser1 +SubsystemFlags=DontReplicateFlag + +[GeneratorB] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser2 +SubsystemFlags=DontReplicateFlag + +[GeneratorC] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser3 +SubsystemFlags=DontReplicateFlag + +[GeneratorD] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser5 +SubsystemFlags=DontReplicateFlag + +[Avionics] +Type=SensorClassID +Include=sensor.sub +HeatSink=Condenser2 +VoltageSource=GeneratorD +AuxScreenNumber=5 +SubsystemFlags=DontReplicateFlag + +AuxScreenPlacement=2 +[Myomers] +Type=MyomersClassID +Include=myomers.sub +HeatSink=Condenser5 +VoltageSource=GeneratorD +AuxScreenNumber=6 +SubsystemFlags=DontReplicateFlag + +AuxScreenPlacement=0 +[Gyroscope] +Type=GyroscopeClassID +Include=gyro.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag + +[Torso] +Type=TorsoClassID +Include=torso.sub +WatchedSubsystem=Myomers + +HorizontalRotationPerSecond=50 +VerticalRotationPerSecond=30 +HorizontalLimitRight=-140 +HorizontalLimitLeft=140 +[HUD] +Type=HUDClassID +Include=hud.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag + +[Searchlight] +Type=SearchlightClassID +Include=srchlite.sub +WatchedSubsystem=Avionics +SegmentPageName=sitelight + +[ThermalSight] +Type=ThermalSightClassID +Include=Thermal.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag +[AmmoBinAFC50] +Type=AmmoBinClassID +Include=ammafc50.sub +WatchedSubsystem=AFC50 +AmmoCount=30 +[AFC50] +AmmoBin=AmmoBinAFC50 +Type=ProjectileWeaponClassID +Include=afc50.sub +SegmentPageName=sitergunport +PipPosition=1 +VoltageSource=GeneratorC +HeatSink=Condenser6 +AuxScreenNumber=10 +AuxScreenPlacement=6 +[ERLLaser_1] +Type=EmitterClassID +Include=erllaser.sub +SegmentPageName=sitelugunport +PipPosition=2 +VoltageSource=GeneratorA +HeatSink=Condenser4 +AuxScreenNumber=1 +AuxScreenPlacement=4 +[ERLLaser_2] +Type=EmitterClassID +Include=erllaser.sub +SegmentPageName=siteldgunport +PipPosition=3 +VoltageSource=GeneratorA +HeatSink=Condenser4 +AuxScreenNumber=3 +AuxScreenPlacement=4 +[ERMLaser_1] +Type=EmitterClassID +Include=ermlaser.sub +SegmentPageName=sitelitorsoport +PipPosition=1 +VoltageSource=GeneratorA +HeatSink=Condenser1 +AuxScreenNumber=4 +AuxScreenPlacement=1 +[ERMLaser_2] +Type=EmitterClassID +Include=ermlaser.sub +SegmentPageName=siteldtorsoport +PipPosition=2 +VoltageSource=GeneratorB +HeatSink=Condenser2 +AuxScreenNumber=7 +AuxScreenPlacement=2 +[ERMLaser_3] +Type=EmitterClassID +Include=ermlaser.sub +SegmentPageName=siterdtorsoport +PipPosition=3 +VoltageSource=GeneratorB +HeatSink=Condenser2 +AuxScreenNumber=8 +AuxScreenPlacement=2 +[ERMLaser_4] +Type=EmitterClassID +Include=ermlaser.sub +SegmentPageName=siteritorsoport +PipPosition=4 +VoltageSource=GeneratorC +HeatSink=Condenser3 +AuxScreenNumber=11 +AuxScreenPlacement=3 +[AmmoBinLRM10_1] +Type=AmmoBinClassID +Include=ammlrm10.sub +WatchedSubsystem=LRM10_1 +AmmoCount=18 +[LRM10_1] +AmmoBin=AmmoBinLRM10_1 +Type=MissileLauncherClassID +Include=lrm10.sub +SegmentPageName=sitelmissleport +PipPosition=1 +VoltageSource=GeneratorB +HeatSink=Condenser1 +AuxScreenNumber=2 +AuxScreenPlacement=1 +[AmmoBinLRM10_2] +Type=AmmoBinClassID +Include=ammlrm10.sub +WatchedSubsystem=LRM10_2 +AmmoCount=18 +[LRM10_2] +AmmoBin=AmmoBinLRM10_2 +Type=MissileLauncherClassID +Include=lrm10.sub +SegmentPageName=sitermissleport +PipPosition=2 +VoltageSource=GeneratorB +HeatSink=Condenser3 +AuxScreenNumber=9 +AuxScreenPlacement=3 +[MessageManager] +Type=SubsystemMessageManagerClassID +ExplosionModelFile=majhit 1.0 +TerrainHitExplosion=gndhit +RendererCompensateTime=0.3 +[MechTech] +Type=MechTechClassID +AlarmModel=mechalrm +SubsystemFlags=DontReplicateFlag diff --git a/CONTENT/BT/MODELS/AVATHR.CTL b/CONTENT/BT/MODELS/AVATHR.CTL new file mode 100644 index 0000000..91b2b9e --- /dev/null +++ b/CONTENT/BT/MODELS/AVATHR.CTL @@ -0,0 +1,75 @@ +[StickPosition_JP] +IOMapping=JoystickPhysical +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=StickPosition +Mode=ModeAlwaysActive + +[TorsoLeft_BJHL] +IOMapping=ButtonJoystickHatLeft +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoLeft +Mode=ModeAlwaysActive + +[TorsoRight_BJHR] +IOMapping=ButtonJoystickHatRight +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoRight +Mode=ModeAlwaysActive + +[AFC50_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=AFC50 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERLLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERLLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERLLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERLLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_3_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_3 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_4_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_4 +AttributeID=TriggerState +Mode=ModeNonMapping +[LRM10_1_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=LRM10_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[LRM10_2_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=LRM10_2 +AttributeID=TriggerState +Mode=ModeNonMapping diff --git a/CONTENT/BT/MODELS/AW01.MOD b/CONTENT/BT/MODELS/AW01.MOD new file mode 100644 index 0000000..95e6a50 --- /dev/null +++ b/CONTENT/BT/MODELS/AW01.MOD @@ -0,0 +1,8 @@ +[video] +object=aw01.bgf + +[gauge] +image=aw01_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/AW02.MOD b/CONTENT/BT/MODELS/AW02.MOD new file mode 100644 index 0000000..a7a0bae --- /dev/null +++ b/CONTENT/BT/MODELS/AW02.MOD @@ -0,0 +1,8 @@ +[video] +object=aw02.bgf + +[gauge] +image=aw02_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/AW03.MOD b/CONTENT/BT/MODELS/AW03.MOD new file mode 100644 index 0000000..2c92604 --- /dev/null +++ b/CONTENT/BT/MODELS/AW03.MOD @@ -0,0 +1,11 @@ +[video] +object=aw03.bgf + +[collision] +name=aw03_cv.sld + +[gauge] +image=aw03_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/AW04.MOD b/CONTENT/BT/MODELS/AW04.MOD new file mode 100644 index 0000000..3655fb3 --- /dev/null +++ b/CONTENT/BT/MODELS/AW04.MOD @@ -0,0 +1,8 @@ +[video] +object=aw04.bgf + +[gauge] +image=aw04_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/AW05.MOD b/CONTENT/BT/MODELS/AW05.MOD new file mode 100644 index 0000000..063aa31 --- /dev/null +++ b/CONTENT/BT/MODELS/AW05.MOD @@ -0,0 +1,12 @@ +[video] +object=aw05.bgf + +[gauge] +image=aw05_ga.gim + +[collision] +name=aw05_cv.sld + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/BT/MODELS/AWBOX1.MOD b/CONTENT/BT/MODELS/AWBOX1.MOD new file mode 100644 index 0000000..7293753 --- /dev/null +++ b/CONTENT/BT/MODELS/AWBOX1.MOD @@ -0,0 +1,8 @@ +[video] +object=awbox1.bgf + +[collision] +name=awbox_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/AWWLK1.MOD b/CONTENT/BT/MODELS/AWWLK1.MOD new file mode 100644 index 0000000..42de51d --- /dev/null +++ b/CONTENT/BT/MODELS/AWWLK1.MOD @@ -0,0 +1,9 @@ +[video] +object=awwlk1.bgf + +[gamedata] +class=CulturalIconClassID +DamageZones=med.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=meddead +TimeDelay=0.5 diff --git a/CONTENT/BT/MODELS/BAC1.MOD b/CONTENT/BT/MODELS/BAC1.MOD new file mode 100644 index 0000000..0cb4c5b --- /dev/null +++ b/CONTENT/BT/MODELS/BAC1.MOD @@ -0,0 +1,12 @@ +[video] +object=bac1.bgf + +[collision] +name=bac1_cv.sld + +[gamedata] +class=CulturalIconClassID +DamageZones=med.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=meddead +TimeDelay=0.1 diff --git a/CONTENT/BT/MODELS/BAT.MOD b/CONTENT/BT/MODELS/BAT.MOD new file mode 100644 index 0000000..948922b --- /dev/null +++ b/CONTENT/BT/MODELS/BAT.MOD @@ -0,0 +1,132 @@ +[video] +skeleton=bat.skl +skeletona=bax.skl +destroyed=batd.skl +//destroyeda=baxd.skl +dzm=batskin.dzm +dzma=baxskin.dzm + +[audio] +internal=batint.scp +external=batext.scp + +[collision] +name=calp_cv.sld + +[gauge] +image=thor_ga.gim + +[gaugeMissionReview] +pixelmap=bat_mr.pcc + +[gamedata] +class=MechClassID +MoverMass=60000.0 +MomentOfInertia=1.75 3.125 1.75 +PositiveLinearDragCoefficients=0.14 0.4 0.07 +NegativeLinearDragCoefficients=0.14 0.2 0.08 +AngularDragCoefficients=0.3 0.5 0.3 +FrictionCoefficient=0 +ElasticityCoefficient=0 +MinimumBounceSpeed=0 +MaxAcceleration=0 +AnimationPrefix=bat +Subsystems=bat.sub +DamageZones=bat.dmg +DamageLookupTable=batdmg.tbl +RelativeMechValue=1.0 +LookLeftAngle=90 +LookRightAngle=-90 +LookBackAngle=0 +LookFrontAngle=-15 + +WalkingTurnRate=0 +RunningTurnRate=0 + +DeathEffect=vuldead +CameraOffset=0.0 15.0 30.0 +DeathSplashDamage=5 +DeathSplashRadius=50 +TimeDelay=0.3 + +MaxUnstableAcceleration=22.0 +UnstableAccelerationEffect=0.7 +UnstableGunTheEngineEffect=1.0 +UnstableSuperStopEffect=0.5 +UnstableHighVelocityEffect=0.4 +UnstableStopedTurnEffect=1.0 +SuperStopAcceleration=20.0 + +ThrottleAdjustment=0.0 + +UpdateTurnDegreeDiffrence=3 +UpdateTurnVelocityDiffrence=0.045 +UpdatePositionDiffrence=0.3 + +ShadowJointName=jointshadow + + +[ControlMappings] +Thrustmaster=batthr.ctl +L4=batl4.ctl + +[animations] +animationtransition=batswr.ani +animation=batwwl.ani +animation=batwwr.ani +animation=batwsr.ani +animation=batwsl.ani +animationtransition=batwrl.ani +animationtransition=batwrr.ani +animation=batrrl.ani +animation=batrrr.ani +animation=batrwl.ani +animation=batrwr.ani +animation=batbmp.ani +animation=batbbl.ani +animation=batbbr.ani +animation=batbsl.ani +animation=batbsr.ani +animationtransition=batsbl.ani +animationtransition=batsbr.ani + +animationtransition=batswri.ani +animation=batwwli.ani +animation=batwwri.ani +animation=batwsri.ani +animation=batwsli.ani +animationtransition=batwrli.ani +animationtransition=batwrri.ani +animation=batrrli.ani +animation=batrrri.ani +animation=batrwli.ani +animation=batrwri.ani +animation=batbmpi.ani +animation=batbbli.ani +animation=batbbri.ani +animation=batbsli.ani +animation=batbsri.ani +animationtransition=batsbli.ani +animationtransition=batsbri.ani + +animation=batggl.ani +animation=batggr.ani +animation=batgsl.ani +animation=batgsr.ani +animationtransition=batwgl.ani +animationtransition=batwgr.ani + +animation=batggli.ani +animation=batggri.ani +animation=batgsli.ani +animation=batgsri.ani +animationtransition=batwgli.ani +animationtransition=batwgri.ani + +animation=batsqu.ani +animation=batsqd.ani +animation=batsqui.ani +animation=batsqdi.ani + +//animation=battrn.ani +//animation=battrni.ani diff --git a/CONTENT/BT/MODELS/BAT.SUB b/CONTENT/BT/MODELS/BAT.SUB new file mode 100644 index 0000000..2f09def --- /dev/null +++ b/CONTENT/BT/MODELS/BAT.SUB @@ -0,0 +1,209 @@ +[HeatSink] +Type=HeatSinkClassID +Include=heatsnk.sub +HeatSinkCount=18 +SubsystemFlags=DontReplicateFlag + +[Reservoir] +Type=ReservoirClassID +Include=reserve.sub +HeatSink=HeatSink +SegmentPageName=siteeyepoint + +[Condenser1] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser2] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser3] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser4] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser5] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser6] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[GeneratorA] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser1 +SubsystemFlags=DontReplicateFlag + +[GeneratorB] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser2 +SubsystemFlags=DontReplicateFlag + +[GeneratorC] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser3 +SubsystemFlags=DontReplicateFlag + +[GeneratorD] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser5 +SubsystemFlags=DontReplicateFlag + +[Avionics] +Type=SensorClassID +Include=sensor.sub +HeatSink=Condenser2 +VoltageSource=GeneratorD +AuxScreenNumber=5 +SubsystemFlags=DontReplicateFlag + +AuxScreenPlacement=2 +[Myomers] +Type=MyomersClassID +Include=myomers.sub +HeatSink=Condenser5 +VoltageSource=GeneratorD +AuxScreenNumber=6 +SubsystemFlags=DontReplicateFlag + +AuxScreenPlacement=0 +[Gyroscope] +Type=GyroscopeClassID +Include=gyro.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag + +[Torso] +Type=TorsoClassID +Include=torso.sub +WatchedSubsystem=Myomers + +HorizontalRotationPerSecond=40 +VerticalRotationPerSecond=30 +HorizontalLimitRight=-190 +HorizontalLimitLeft=190 +[HUD] +Type=HUDClassID +Include=hud.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag + +[Searchlight] +Type=SearchlightClassID +Include=srchlite.sub +WatchedSubsystem=Avionics +SegmentPageName=sitelight + +[ThermalSight] +Type=ThermalSightClassID +Include=Thermal.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag +[PPC_1] +Type=PPCClassID +Include=ppc.sub +SegmentPageName=sitelugunport +PipPosition=1 +VoltageSource=GeneratorA +HeatSink=Condenser4 +AuxScreenNumber=1 +AuxScreenPlacement=4 +[PPC_2] +Type=PPCClassID +Include=ppc.sub +SegmentPageName=siterugunport +PipPosition=2 +VoltageSource=GeneratorC +HeatSink=Condenser6 +AuxScreenNumber=10 +AuxScreenPlacement=6 +[AmmoBinLRM15_1] +Type=AmmoBinClassID +Include=ammnrk20.sub +WatchedSubsystem=LRM15_1 +AmmoCount=25 +[LRM15_1] +AmmoBin=AmmoBinLRM15_1 +Type=MissileLauncherClassID +Include=nrk20.sub +SegmentPageName=sitelmissleport +PipPosition=1 +VoltageSource=GeneratorB +HeatSink=Condenser1 +AuxScreenNumber=2 +AuxScreenPlacement=1 +[AmmoBinLRM15_2] +Type=AmmoBinClassID +Include=ammnrk20.sub +WatchedSubsystem=LRM15_2 +AmmoCount=25 +[LRM15_2] +AmmoBin=AmmoBinLRM15_2 +Type=MissileLauncherClassID +Include=nrk20.sub +SegmentPageName=sitermissleport +PipPosition=2 +VoltageSource=GeneratorB +HeatSink=Condenser3 +AuxScreenNumber=9 +AuxScreenPlacement=3 +[AmmoBinLRM15_3] +Type=AmmoBinClassID +Include=ammnrk20.sub +WatchedSubsystem=LRM15_3 +AmmoCount=25 +[LRM15_3] +AmmoBin=AmmoBinLRM15_3 +Type=MissileLauncherClassID +Include=nrk20.sub +SegmentPageName=sitelmissleport +PipPosition=3 +VoltageSource=GeneratorB +HeatSink=Condenser1 +AuxScreenNumber=4 +AuxScreenPlacement=1 +[AmmoBinLRM15_4] +Type=AmmoBinClassID +Include=ammnrk20.sub +WatchedSubsystem=LRM15_4 +AmmoCount=25 +[LRM15_4] +AmmoBin=AmmoBinLRM15_4 +Type=MissileLauncherClassID +Include=nrk20.sub +SegmentPageName=sitermissleport +PipPosition=4 +VoltageSource=GeneratorB +HeatSink=Condenser3 +AuxScreenNumber=11 +AuxScreenPlacement=3 +[MessageManager] +Type=SubsystemMessageManagerClassID +ExplosionModelFile=majhit 1.0 +TerrainHitExplosion=gndhit +RendererCompensateTime=0.3 +[MechTech] +Type=MechTechClassID +AlarmModel=mechalrm +SubsystemFlags=DontReplicateFlag diff --git a/CONTENT/BT/MODELS/BATDMG.EXP b/CONTENT/BT/MODELS/BATDMG.EXP new file mode 100644 index 0000000..c9b1598 --- /dev/null +++ b/CONTENT/BT/MODELS/BATDMG.EXP @@ -0,0 +1,28 @@ +[OneDamage] +ExplosionModelFile=dam1hit +DamageLevel=0.2 +TimeDelay=0.0 + +[TwoDamage] +ExplosionModelFile=dam2hit +DamageLevel=0.4 +TimeDelay=0.0 + +[ThreeDamage] +ExplosionModelFile=dam3hit +DamageLevel=0.6 +TimeDelay=0.0 + +[FourDamage] +ExplosionModelFile=dam4hit +DamageLevel=0.8 +TimeDelay=0.0 + +[DestroyedExplosion] +ExplosionModelFile=desthit +GraphicState=Destroyed + +[GoneExplosion] +ExplosionModelFile=desthit +GraphicState=Gone + diff --git a/CONTENT/BT/MODELS/BATDMG.TBL b/CONTENT/BT/MODELS/BATDMG.TBL new file mode 100644 index 0000000..36ec682 --- /dev/null +++ b/CONTENT/BT/MODELS/BATDMG.TBL @@ -0,0 +1,197 @@ +[LeftFoot] +DamageZone=dz_lfoot 0.5 +DamageZone=dz_ldleg 0.3 +DamageZone=dz_rfoot 0.2 + +[RightFoot] +DamageZone=dz_rfoot 0.5 +DamageZone=dz_rdleg 0.3 +DamageZone=dz_lfoot 0.2 + +[LeftLeg] +DamageZone=dz_luleg 0.4 +DamageZone=dz_ldleg 0.4 +DamageZone=dz_ruleg 0.1 +DamageZone=dz_rdleg 0.1 + +[RightLeg] +DamageZone=dz_ruleg 0.4 +DamageZone=dz_rdleg 0.4 +DamageZone=dz_luleg 0.1 +DamageZone=dz_ldleg 0.1 + +[LeftHip] +DamageZone=dz_luleg 0.5 +DamageZone=dz_hip 0.3 +DamageZone=dz_dtorso 0.1 +DamageZone=dz_lgun 0.1 + +[FrontHip] +DamageZone=dz_luleg 0.25 +DamageZone=dz_ruleg 0.25 +DamageZone=dz_hip 0.3 +DamageZone=dz_dtorso 0.2 + +[RearHip] +DamageZone=dz_luleg 0.25 +DamageZone=dz_ruleg 0.25 +DamageZone=dz_hip 0.3 +DamageZone=dz_reardtorso 0.2 + +[RightHip] +DamageZone=dz_ruleg 0.5 +DamageZone=dz_hip 0.3 +DamageZone=dz_dtorso 0.1 +DamageZone=dz_rgun 0.1 + +[LeftWaist] +DamageZone=dz_ltorso 0.15 +DamageZone=dz_rearltorso 0.1 +DamageZone=dz_luleg 0.25 +DamageZone=dz_dtorso 0.25 +DamageZone=dz_reardtorso 0.1 +DamageZone=dz_hip 0.15 + +[FrontWaist] +DamageZone=dz_ruleg 0.075 +DamageZone=dz_luleg 0.075 +DamageZone=dz_ltorso 0.2 +DamageZone=dz_rtorso 0.2 +DamageZone=dz_dtorso 0.3 +DamageZone=dz_hip 0.15 + +[RearWaist] +DamageZone=dz_ruleg 0.075 +DamageZone=dz_luleg 0.075 +DamageZone=dz_rearltorso 0.2 +DamageZone=dz_rearrtorso 0.2 +DamageZone=dz_reardtorso 0.3 +DamageZone=dz_hip 0.15 + +[RightWaist] +DamageZone=dz_rtorso 0.15 +DamageZone=dz_rearrtorso 0.1 +DamageZone=dz_ruleg 0.25 +DamageZone=dz_dtorso 0.25 +DamageZone=dz_reardtorso 0.1 +DamageZone=dz_hip 0.15 + +[LeftChest] +DamageZone=dz_larm 0.3 +DamageZone=dz_lgun 0.2 +DamageZone=dz_ltorso 0.25 +DamageZone=dz_rearltorso 0.15 +DamageZone=dz_utorso 0.05 +DamageZone=dz_rearutorso 0.05 + +[RightChest] +DamageZone=dz_rarm 0.3 +DamageZone=dz_rgun 0.2 +DamageZone=dz_rtorso 0.25 +DamageZone=dz_rearrtorso 0.15 +DamageZone=dz_utorso 0.05 +DamageZone=dz_rearutorso 0.05 + +[FrontChest] +DamageZone=dz_larm 0.05 +DamageZone=dz_rarm 0.05 +DamageZone=dz_ltorso 0.2 +DamageZone=dz_rtorso 0.2 +DamageZone=dz_utorso 0.3 +DamageZone=dz_searchlight 0.2 + +[RearChest] +DamageZone=dz_larm 0.05 +DamageZone=dz_rarm 0.05 +DamageZone=dz_rearltorso 0.25 +DamageZone=dz_rearrtorso 0.25 +DamageZone=dz_rearutorso 0.35 +DamageZone=dz_utorso 0.05 + +[TopLeft] +DamageZone=dz_utorso 0.5 +DamageZone=dz_ltorso 0.35 +DamageZone=dz_rtorso 0.15 + +[TopRight] +DamageZone=dz_utorso 0.5 +DamageZone=dz_ltorso 0.15 +DamageZone=dz_rtorso 0.35 + +// The data in this table is totally bogus. GDU 12-2-95 +[Layer1] +PieSlice=RightFoot +PieSlice=RightFoot +PieSlice=LeftFoot +PieSlice=LeftFoot +PieSlice=LeftFoot +PieSlice=LeftFoot +PieSlice=RightFoot +PieSlice=RightFoot +RotateWithTorso=False + +[Layer2] +PieSlice=RightLeg +PieSlice=RightLeg +PieSlice=LeftLeg +PieSlice=LeftLeg +PieSlice=LeftLeg +PieSlice=LeftLeg +PieSlice=RightLeg +PieSlice=RightLeg +RotateWithTorso=False + +[Layer3] +PieSlice=RightLeg +PieSlice=FrontHip +PieSlice=FrontHip +PieSlice=LeftLeg +PieSlice=LeftLeg +PieSlice=RearHip +PieSlice=RearHip +PieSlice=RightLeg +RotateWithTorso=False + +[Layer4] +PieSlice=RightHip +PieSlice=FrontHip +PieSlice=FrontHip +PieSlice=LeftHip +PieSlice=LeftHip +PieSlice=RearHip +PieSlice=RearHip +PieSlice=RightHip +RotateWithTorso=True + +[Layer5] +PieSlice=RightWaist +PieSlice=FrontWaist +PisSlice=FrontWaist +PieSlice=LeftWaist +PieSlice=LeftWaist +PieSlice=RearWaist +PieSlice=RearWaist +PieSlice=RightWaist +RotateWithTorso=True + +[Layer6] +PieSlice=RightChest +PieSlice=FrontChest +PieSlice=FrontChest +PieSlice=LeftChest +PieSlice=LeftChest +PieSlice=RearChest +PieSlice=RearChest +PieSlice=RightChest +RotateWithTorso=True + +[Layer7] +PieSlice=TopRight +PieSlice=TopRight +PieSlice=TopLeft +PieSlice=TopLeft +PieSlice=TopLeft +PieSlice=TopLeft +PieSlice=TopRight +PieSlice=TopRight +RotateWithTorso=True diff --git a/CONTENT/BT/MODELS/BATTHR.CTL b/CONTENT/BT/MODELS/BATTHR.CTL new file mode 100644 index 0000000..82c9fdf --- /dev/null +++ b/CONTENT/BT/MODELS/BATTHR.CTL @@ -0,0 +1,57 @@ +[StickPosition_JP] +IOMapping=JoystickPhysical +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=StickPosition +Mode=ModeAlwaysActive + +[TorsoLeft_BJHL] +IOMapping=ButtonJoystickHatLeft +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoLeft +Mode=ModeAlwaysActive + +[TorsoRight_BJHR] +IOMapping=ButtonJoystickHatRight +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoRight +Mode=ModeAlwaysActive + +[PPC_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=PPC_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[PPC_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=PPC_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[LRM15_1_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=LRM15_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[LRM15_2_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=LRM15_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[LRM15_3_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=LRM15_3 +AttributeID=TriggerState +Mode=ModeNonMapping +[LRM15_4_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=LRM15_4 +AttributeID=TriggerState +Mode=ModeNonMapping diff --git a/CONTENT/BT/MODELS/BCOR1.MOD b/CONTENT/BT/MODELS/BCOR1.MOD new file mode 100644 index 0000000..4b8919c --- /dev/null +++ b/CONTENT/BT/MODELS/BCOR1.MOD @@ -0,0 +1,8 @@ +[video] +object=bcor1.bgf + +[collision] +name=bcor1_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/BCOR2.MOD b/CONTENT/BT/MODELS/BCOR2.MOD new file mode 100644 index 0000000..6d48e91 --- /dev/null +++ b/CONTENT/BT/MODELS/BCOR2.MOD @@ -0,0 +1,8 @@ +[video] +object=bcor2.bgf + +[collision] +name=bcor2_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/BDET1.MOD b/CONTENT/BT/MODELS/BDET1.MOD new file mode 100644 index 0000000..f88539c --- /dev/null +++ b/CONTENT/BT/MODELS/BDET1.MOD @@ -0,0 +1,5 @@ +[video] +object=bdet1.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/BDET2.MOD b/CONTENT/BT/MODELS/BDET2.MOD new file mode 100644 index 0000000..b017e02 --- /dev/null +++ b/CONTENT/BT/MODELS/BDET2.MOD @@ -0,0 +1,5 @@ +[video] +object=bdet2.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/BDET3.MOD b/CONTENT/BT/MODELS/BDET3.MOD new file mode 100644 index 0000000..dde7871 --- /dev/null +++ b/CONTENT/BT/MODELS/BDET3.MOD @@ -0,0 +1,5 @@ +[video] +object=bdet3.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/BDET4.MOD b/CONTENT/BT/MODELS/BDET4.MOD new file mode 100644 index 0000000..106d452 --- /dev/null +++ b/CONTENT/BT/MODELS/BDET4.MOD @@ -0,0 +1,12 @@ +[video] +object=bdet4.bgf + +[collision] +name=bdet4_cv.sld + +[gamedata] +class=CulturalIconClassID +DamageZones=med.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=meddead +TimeDelay=0.5 diff --git a/CONTENT/BT/MODELS/BDET6.MOD b/CONTENT/BT/MODELS/BDET6.MOD new file mode 100644 index 0000000..7b2239b --- /dev/null +++ b/CONTENT/BT/MODELS/BDET6.MOD @@ -0,0 +1,5 @@ +[video] +object=bdet6.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/BHK1.DMG b/CONTENT/BT/MODELS/BHK1.DMG new file mode 100644 index 0000000..ed9b0bc --- /dev/null +++ b/CONTENT/BT/MODELS/BHK1.DMG @@ -0,0 +1,183 @@ +// This file is intentionally empty and MUST be read-only! +[dz_dtorso] +ExplosionTable=blhdmg.exp +DefaultEffectSiteName=siteedz_dtorso +WeaponDamagePoints=90 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.083333 +CriticalSubsystem=Condenser5 2 0.500000 +CriticalSubsystem=GeneratorD 10 0.500000 +CriticalSubsystem=Avionics 5 0.250000 +CriticalSubsystem=Torso 15 0.500000 +[dz_larm] +ExplosionTable=blhdmg.exp +DefaultEffectSiteName=siteedz_larm +WeaponDamagePoints=65 +VitalDamageZone=False +DescendOnDestruction=True +DestroySiblingsOnDestruction=True +CriticalSubsystem=Condenser4 2 0.500000 +[dz_ldleg] +ExplosionTable=blhdmg.exp +DefaultEffectSiteName=siteedz_ldleg +WeaponDamagePoints=70 +VitalDamageZone=True +LegDamageZone=LeftLeg +CriticalSubsystem=HeatSink 100 0.083333 +CriticalSubsystem=Myomers 15 0.166667 +[dz_lfoot] +ExplosionTable=blhdmg.exp +DefaultEffectSiteName=siteedz_lfoot +WeaponDamagePoints=65 +VitalDamageZone=True +LegDamageZone=LeftLeg +CriticalSubsystem=Myomers 15 0.166667 +[dz_lgun] +ExplosionTable=blhdmg.exp +DefaultEffectSiteName=siteedz_lgun +WeaponDamagePoints=63 +VitalDamageZone=False +DescendOnDestruction=True +DestroySiblingsOnDestruction=True +CriticalSubsystem=Condenser4 2 0.500000 +CriticalSubsystem=PPC_1 15 1.000000 +CriticalSubsystem=ERMLaser_3 20 1.000000 +[dz_lsearchlight] +ExplosionTable=blhdmg.exp +DefaultEffectSiteName=siteedz_lsearchlight +WeaponDamagePoints=25 +VitalDamageZone=False +DescendOnDestruction=False +CriticalSubsystem=HUD 15 0.333333 +CriticalSubsystem=Searchlight 45 1.000000 +CriticalSubsystem=ThermalSight 30 0.500000 +[dz_ltorso] +ExplosionTable=blhdmg.exp +DefaultEffectSiteName=siteedz_ltorso +WeaponDamagePoints=106 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.083333 +CriticalSubsystem=Condenser1 2 0.500000 +CriticalSubsystem=GeneratorB 10 0.500000 +CriticalSubsystem=Avionics 5 0.250000 +CriticalSubsystem=AmmoBinSRM6_1 15 1.000000 +CriticalSubsystem=SRM6_1 10 1.000000 +[dz_luleg] +ExplosionTable=blhdmg.exp +DefaultEffectSiteName=siteedz_luleg +WeaponDamagePoints=70 +VitalDamageZone=True +LegDamageZone=LeftLeg +CriticalSubsystem=HeatSink 100 0.083333 +CriticalSubsystem=Myomers 15 0.166667 +[dz_rarm] +ExplosionTable=blhdmg.exp +DefaultEffectSiteName=siteedz_rarm +WeaponDamagePoints=65 +VitalDamageZone=False +DescendOnDestruction=True +DestroySiblingsOnDestruction=True +CriticalSubsystem=Condenser6 2 0.500000 +[dz_rdleg] +ExplosionTable=blhdmg.exp +DefaultEffectSiteName=siteedz_rdleg +WeaponDamagePoints=70 +VitalDamageZone=True +LegDamageZone=RightLeg +CriticalSubsystem=HeatSink 100 0.083333 +CriticalSubsystem=Myomers 15 0.166667 +[dz_reardtorso] +ExplosionTable=blhdmg.exp +DefaultEffectSiteName=siteedz_reardtorso +WeaponDamagePoints=65 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.083333 +CriticalSubsystem=Reservoir 10 0.250000 +CriticalSubsystem=Condenser5 2 0.500000 +CriticalSubsystem=GeneratorC 10 0.500000 +CriticalSubsystem=Torso 15 0.500000 +[dz_rearltorso] +ExplosionTable=blhdmg.exp +DefaultEffectSiteName=siteedz_rearltorso +WeaponDamagePoints=65 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.083333 +CriticalSubsystem=Reservoir 10 0.250000 +CriticalSubsystem=Condenser1 2 0.500000 +CriticalSubsystem=GeneratorA 10 0.500000 +[dz_rearrtorso] +ExplosionTable=blhdmg.exp +DefaultEffectSiteName=siteedz_rearrtorso +WeaponDamagePoints=65 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.083333 +CriticalSubsystem=Reservoir 10 0.250000 +CriticalSubsystem=Condenser3 2 0.500000 +CriticalSubsystem=GeneratorA 10 0.500000 +[dz_rearutorso] +ExplosionTable=blhdmg.exp +DefaultEffectSiteName=siteedz_rearutorso +WeaponDamagePoints=75 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.083333 +CriticalSubsystem=Reservoir 10 0.250000 +CriticalSubsystem=Condenser2 2 0.500000 +CriticalSubsystem=GeneratorC 10 0.500000 +CriticalSubsystem=Gyroscope 30 0.500000 +[dz_rfoot] +ExplosionTable=blhdmg.exp +DefaultEffectSiteName=siteedz_rfoot +WeaponDamagePoints=65 +VitalDamageZone=True +LegDamageZone=RightLeg +CriticalSubsystem=Myomers 15 0.166667 +[dz_rgun] +ExplosionTable=blhdmg.exp +DefaultEffectSiteName=siteedz_rgun +WeaponDamagePoints=63 +VitalDamageZone=False +DescendOnDestruction=True +DestroySiblingsOnDestruction=True +CriticalSubsystem=Condenser6 2 0.500000 +CriticalSubsystem=PPC_2 15 1.000000 +CriticalSubsystem=ERMLaser_2 20 1.000000 +[dz_rsearchlight] +ExplosionTable=blhdmg.exp +DefaultEffectSiteName=siteedz_rsearchlight +WeaponDamagePoints=25 +VitalDamageZone=False +DescendOnDestruction=False +CriticalSubsystem=HUD 15 0.333333 +CriticalSubsystem=Searchlight2 45 1.000000 +CriticalSubsystem=ThermalSight 30 0.500000 +[dz_rtorso] +ExplosionTable=blhdmg.exp +DefaultEffectSiteName=siteedz_rtorso +WeaponDamagePoints=106 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.083333 +CriticalSubsystem=Condenser3 2 0.500000 +CriticalSubsystem=GeneratorB 10 0.500000 +CriticalSubsystem=Avionics 5 0.250000 +CriticalSubsystem=ERMLaser_1 20 1.000000 +CriticalSubsystem=AmmoBinSRM6_2 15 1.000000 +CriticalSubsystem=SRM6_2 10 1.000000 +[dz_ruleg] +ExplosionTable=blhdmg.exp +DefaultEffectSiteName=siteedz_ruleg +WeaponDamagePoints=70 +VitalDamageZone=True +LegDamageZone=RightLeg +CriticalSubsystem=HeatSink 100 0.083333 +CriticalSubsystem=Myomers 15 0.166667 +[dz_utorso] +ExplosionTable=blhdmg.exp +DefaultEffectSiteName=siteedz_utorso +WeaponDamagePoints=124 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.083333 +CriticalSubsystem=Condenser2 2 0.500000 +CriticalSubsystem=GeneratorD 10 0.500000 +CriticalSubsystem=Avionics 5 0.250000 +CriticalSubsystem=Gyroscope 30 0.500000 +CriticalSubsystem=HUD 15 0.333333 diff --git a/CONTENT/BT/MODELS/BHK1.MOD b/CONTENT/BT/MODELS/BHK1.MOD new file mode 100644 index 0000000..8c0f19c --- /dev/null +++ b/CONTENT/BT/MODELS/BHK1.MOD @@ -0,0 +1,136 @@ +[video] +skeleton=blh.skl +skeletona=blx.skl +destroyed=blhd.skl +//destroyeda=blxd.skl +dzm=blhskin.dzm +dzma=blxskin.dzm + +[audio] +internal=bhk1int.scp +external=bhk1ext.scp + +[collision] +name=blh_cv.sld + +[gauge] +image=blh_ga.gim + +[gaugeMissionReview] +pixelmap=blh_mr.pcc + +[gamedata] +class=MechClassID +MoverMass=60000.0 +MomentOfInertia=1.75 3.125 1.75 +PositiveLinearDragCoefficients=0.14 0.4 0.07 +NegativeLinearDragCoefficients=0.14 0.2 0.08 +AngularDragCoefficients=0.3 0.5 0.3 +FrictionCoefficient=0.1 +ElasticityCoefficient=0.2 +MinimumBounceSpeed=0.2 +AnimationPrefix=blh +Subsystems=bhk1.sub +DamageZones=bhk1.dmg +DamageLookupTable=blhdmg.tbl +RelativeMechValue=1.0 +LookLeftAngle=60 +LookRightAngle=-60 +LookBackAngle=0 +LookFrontAngle=-10 +WalkingTurnRate=75 +RunningTurnRate=50 +DeathEffect=blhdead +CameraOffset=0.0 5.0 1.0 +DeathSplashDamage=5 +DeathSplashRadius=50 +TimeDelay=0.3 + +MaxAcceleration=30 +MaxUnstableAcceleration=45.0 + +UnstableAccelerationEffect=0.5 +UnstableGunTheEngineEffect=0.8 +UnstableSuperStopEffect=0.25 +UnstableHighVelocityEffect=0.25 +UnstableStopedTurnEffect=1.0 +SuperStopAcceleration=10.0 + +ThrottleAdjustment=1.0 + +UpdateTurnDegreeDiffrence=3 +UpdateTurnVelocityDiffrence=0.045 +UpdatePositionDiffrence=0.3 + +ShadowJointName=jointshadow + +[ControlMappings] +Thrustmaster=bhk1thr.ctl +L4=bhk1l4.ctl + +[animations] +animationtransition=blhswr.ani +animation=blhwwl.ani +animation=blhwwr.ani +animation=blhwsr.ani +animation=blhwsl.ani +animationtransition=blhwrl.ani +animationtransition=blhwrr.ani +animation=blhrrl.ani +animation=blhrrr.ani +animation=blhrwl.ani +animation=blhrwr.ani +animation=blhbmp.ani + +animationtransition=blhswri.ani +animation=blhwwli.ani +animation=blhwwri.ani +animation=blhwsri.ani +animation=blhwsli.ani +animationtransition=blhwrli.ani +animationtransition=blhwrri.ani +animation=blhrrli.ani +animation=blhrrri.ani +animation=blhrwli.ani +animation=blhrwri.ani +animation=blhbmpi.ani + +animation=blhbbl.ani +animation=blhbbr.ani +animation=blhbsl.ani +animation=blhbsr.ani +animationtransition=blhsbl.ani +animationtransition=blhsbr.ani +animation=blhbbli.ani +animation=blhbbri.ani +animation=blhbsli.ani +animation=blhbsri.ani +animationtransition=blhsbli.ani +animationtransition=blhsbri.ani + +animation=blhggl.ani +animation=blhggr.ani +animation=blhgsl.ani +animation=blhgsr.ani +animationtransition=blhwgl.ani +animationtransition=blhwgr.ani + +animation=blhggli.ani +animation=blhggri.ani +animation=blhgsli.ani +animation=blhgsri.ani +animationtransition=blhwgli.ani +animationtransition=blhwgri.ani + +animation=blhsqu.ani +animation=blhsqd.ani +animation=blhsqui.ani +animation=blhsqdi.ani + +animation=blhtrn.ani +animation=blhtrni.ani + +//animation=blhff.ani +//animation=blhfb.ani +//animation=blhfl.ani +//animation=blhfr.ani diff --git a/CONTENT/BT/MODELS/BHK1.SUB b/CONTENT/BT/MODELS/BHK1.SUB new file mode 100644 index 0000000..e6282ba --- /dev/null +++ b/CONTENT/BT/MODELS/BHK1.SUB @@ -0,0 +1,208 @@ +[HeatSink] +Type=HeatSinkClassID +Include=heatsnk.sub +HeatSinkCount=6 +SubsystemFlags=DontReplicateFlag + +[Reservoir] +Type=ReservoirClassID +Include=reserve.sub +HeatSink=HeatSink +SegmentPageName=siteeyepoint + +[Condenser1] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser2] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser3] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser4] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser5] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser6] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[GeneratorA] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser1 +SubsystemFlags=DontReplicateFlag + +[GeneratorB] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser2 +SubsystemFlags=DontReplicateFlag + +[GeneratorC] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser3 +SubsystemFlags=DontReplicateFlag + +[GeneratorD] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser5 +SubsystemFlags=DontReplicateFlag + +[Avionics] +Type=SensorClassID +Include=sensor.sub +HeatSink=Condenser2 +VoltageSource=GeneratorD +AuxScreenNumber=5 +SubsystemFlags=DontReplicateFlag + +AuxScreenPlacement=2 +[Myomers] +Type=MyomersClassID +Include=myomers.sub +HeatSink=Condenser5 +VoltageSource=GeneratorD +AuxScreenNumber=6 +SubsystemFlags=DontReplicateFlag + +AuxScreenPlacement=0 +[Gyroscope] +Type=GyroscopeClassID +Include=gyro.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag + +MechJoint=jointeye +[Torso] +Type=TorsoClassID +Include=torsolmt.sub +WatchedSubsystem=Myomers + +[HUD] +Type=HUDClassID +Include=hud.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag + +[Searchlight] +Type=SearchlightClassID +Include=srchlite.sub +WatchedSubsystem=Avionics +SegmentPageName=sitellight + +[ThermalSight] +Type=ThermalSightClassID +Include=Thermal.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag +[Searchlight2] +Type=SearchlightClassID +Include=srchlite.sub +WatchedSubsystem=Avionics +SegmentPageName=siterlight +[PPC_1] +Type=PPCClassID +Include=ppc.sub +SegmentPageName=sitelugunport +PipPosition=1 +VoltageSource=GeneratorA +HeatSink=Condenser4 +AuxScreenNumber=1 +AuxScreenPlacement=4 +[PPC_2] +Type=PPCClassID +Include=ppc.sub +SegmentPageName=siterugunport +PipPosition=2 +VoltageSource=GeneratorC +HeatSink=Condenser6 +AuxScreenNumber=10 +AuxScreenPlacement=6 +[ERMLaser_1] +Type=EmitterClassID +Include=ermlaser.sub +SegmentPageName=siteltorsoport +PipPosition=1 +VoltageSource=GeneratorB +HeatSink=Condenser1 +AuxScreenNumber=4 +AuxScreenPlacement=1 +[ERMLaser_2] +Type=EmitterClassID +Include=ermlaser.sub +SegmentPageName=siterbgunport +PipPosition=1 +VoltageSource=GeneratorC +HeatSink=Condenser6 +AuxScreenNumber=8 +AuxScreenPlacement=6 +[ERMLaser_3] +Type=EmitterClassID +Include=ermlaser.sub +SegmentPageName=sitelbgunport +PipPosition=2 +VoltageSource=GeneratorA +HeatSink=Condenser4 +AuxScreenNumber=7 +AuxScreenPlacement=4 +[AmmoBinSRM6_1] +Type=AmmoBinClassID +Include=ammstrk6.sub +WatchedSubsystem=SRM6_1 +AmmoCount=24 +[SRM6_1] +AmmoBin=AmmoBinSRM6_1 +Type=MissileLauncherClassID +Include=strk6.sub +SegmentPageName=siteltorsoport +PipPosition=1 +VoltageSource=GeneratorB +HeatSink=Condenser2 +AuxScreenNumber=2 +AuxScreenPlacement=1 +[AmmoBinSRM6_2] +Type=AmmoBinClassID +Include=ammstrk6.sub +WatchedSubsystem=SRM6_2 +AmmoCount=24 +[SRM6_2] +AmmoBin=AmmoBinSRM6_2 +Type=MissileLauncherClassID +Include=strk6.sub +SegmentPageName=sitertorsoport +PipPosition=2 +VoltageSource=GeneratorB +HeatSink=Condenser2 +AuxScreenNumber=9 +AuxScreenPlacement=3 +[MessageManager] +Type=SubsystemMessageManagerClassID +ExplosionModelFile=majhit 1.0 +TerrainHitExplosion=gndhit +RendererCompensateTime=0.3 +[MechTech] +Type=MechTechClassID +AlarmModel=mechalrm +SubsystemFlags=DontReplicateFlag diff --git a/CONTENT/BT/MODELS/BHK1DEAD.MOD b/CONTENT/BT/MODELS/BHK1DEAD.MOD new file mode 100644 index 0000000..e70cd7c --- /dev/null +++ b/CONTENT/BT/MODELS/BHK1DEAD.MOD @@ -0,0 +1,9 @@ +[video] +object=104 3 4 5 1007 15 1001 + +[audio] +external=brnext.scp + +[gamedata] +class=ExplosionClassID +ExplosionDuration=44.0 diff --git a/CONTENT/BT/MODELS/BHK1DMG.EXP b/CONTENT/BT/MODELS/BHK1DMG.EXP new file mode 100644 index 0000000..c9b1598 --- /dev/null +++ b/CONTENT/BT/MODELS/BHK1DMG.EXP @@ -0,0 +1,28 @@ +[OneDamage] +ExplosionModelFile=dam1hit +DamageLevel=0.2 +TimeDelay=0.0 + +[TwoDamage] +ExplosionModelFile=dam2hit +DamageLevel=0.4 +TimeDelay=0.0 + +[ThreeDamage] +ExplosionModelFile=dam3hit +DamageLevel=0.6 +TimeDelay=0.0 + +[FourDamage] +ExplosionModelFile=dam4hit +DamageLevel=0.8 +TimeDelay=0.0 + +[DestroyedExplosion] +ExplosionModelFile=desthit +GraphicState=Destroyed + +[GoneExplosion] +ExplosionModelFile=desthit +GraphicState=Gone + diff --git a/CONTENT/BT/MODELS/BHK1DMG.TBL b/CONTENT/BT/MODELS/BHK1DMG.TBL new file mode 100644 index 0000000..489630b --- /dev/null +++ b/CONTENT/BT/MODELS/BHK1DMG.TBL @@ -0,0 +1,181 @@ +[LeftFoot] +DamageZone=dz_lfoot 0.5 +DamageZone=dz_ldleg 0.3 +DamageZone=dz_rfoot 0.2 + +[RightFoot] +DamageZone=dz_rfoot 0.5 +DamageZone=dz_rdleg 0.3 +DamageZone=dz_lfoot 0.2 + +[LeftLeg] +DamageZone=dz_luleg 0.4 +DamageZone=dz_ldleg 0.4 +DamageZone=dz_ruleg 0.1 +DamageZone=dz_rdleg 0.1 + +[RightLeg] +DamageZone=dz_ruleg 0.4 +DamageZone=dz_rdleg 0.4 +DamageZone=dz_luleg 0.1 +DamageZone=dz_ldleg 0.1 + +[LeftHip] +DamageZone=dz_luleg 0.4 +DamageZone=dz_ltorso 0.3 +DamageZone=dz_rearltorso 0.3 + +[FrontHip] +DamageZone=dz_luleg 0.3 +DamageZone=dz_ruleg 0.3 +DamageZone=dz_dtorso 0.4 + +[RearHip] +DamageZone=dz_luleg 0.3 +DamageZone=dz_ruleg 0.3 +DamageZone=dz_reardtorso 0.4 + +[RightHip] +DamageZone=dz_ruleg 0.4 +DamageZone=dz_rtorso 0.3 +DamageZone=dz_rearrtorso 0.3 + +[LeftWaist] +DamageZone=dz_ltorso 0.15 +DamageZone=dz_rearltorso 0.15 +DamageZone=dz_lgun 0.3 +DamageZone=dz_dtorso 0.2 +DamageZone=dz_reardtorso 0.2 + +[FrontWaist] +DamageZone=dz_rgun 0.1 +DamageZone=dz_lgun 0.1 +DamageZone=dz_ltorso 0.2 +DamageZone=dz_rtorso 0.2 +DamageZone=dz_dtorso 0.4 + +[RearWaist] +DamageZone=dz_rgun 0.1 +DamageZone=dz_lgun 0.1 +DamageZone=dz_rearltorso 0.2 +DamageZone=dz_rearrtorso 0.2 +DamageZone=dz_reardtorso 0.4 + +[RightWaist] +DamageZone=dz_rtorso 0.15 +DamageZone=dz_rearrtorso 0.15 +DamageZone=dz_rgun 0.3 +DamageZone=dz_dtorso 0.2 +DamageZone=dz_reardtorso 0.2 + +[LeftChest] +DamageZone=dz_larm 0.3 +DamageZone=dz_lgun 0.1 +DamageZone=dz_ltorso 0.2 +DamageZone=dz_rearltorso 0.2 +DamageZone=dz_utorso 0.1 +DamageZone=dz_rearutorso 0.1 + +[RightChest] +DamageZone=dz_rarm 0.3 +DamageZone=dz_rgun 0.1 +DamageZone=dz_rtorso 0.2 +DamageZone=dz_rearrtorso 0.2 +DamageZone=dz_utorso 0.1 +DamageZone=dz_rearutorso 0.1 + +[FrontChest] +DamageZone=dz_larm 0.1 +DamageZone=dz_rarm 0.1 +DamageZone=dz_ltorso 0.1 +DamageZone=dz_rtorso 0.1 +DamageZone=dz_utorso 0.5 +DamageZone=dz_lsearchlight 0.05 +DamageZone=dz_rsearchlight 0.05 + + +[RearChest] +DamageZone=dz_larm 0.05 +DamageZone=dz_rarm 0.05 +DamageZone=dz_rearltorso 0.1 +DamageZone=dz_rearrtorso 0.1 +DamageZone=dz_rearutorso 0.6 +DamageZone=dz_utorso 0.1 + +// The data in this table is totally bogus. GDU 12-2-95 +[Layer1] +PieSlice=RightFoot +PieSlice=RightFoot +PieSlice=LeftFoot +PieSlice=LeftFoot +PieSlice=LeftFoot +PieSlice=LeftFoot +PieSlice=RightFoot +PieSlice=RightFoot +RotateWithTorso=False + +[Layer2] +PieSlice=RightLeg +PieSlice=RightLeg +PieSlice=LeftLeg +PieSlice=LeftLeg +PieSlice=LeftLeg +PieSlice=LeftLeg +PieSlice=RightLeg +PieSlice=RightLeg +RotateWithTorso=False + +[Layer3] +PieSlice=RightLeg +PieSlice=RightLeg +PieSlice=LeftLeg +PieSlice=LeftLeg +PieSlice=LeftLeg +PieSlice=LeftLeg +PieSlice=RightLeg +PieSlice=RightLeg +RotateWithTorso=False + +[Layer4] +PieSlice=RightHip +PieSlice=FrontHip +PieSlice=FrontHip +PieSlice=LeftHip +PieSlice=LeftHip +PieSlice=RearHip +PieSlice=RearHip +PieSlice=RightHip +RotateWithTorso=False + +[Layer5] +PieSlice=RightWaist +PieSlice=FrontWaist +PieSlice=FrontWaist +PieSlice=LeftWaist +PieSlice=LeftWaist +PieSlice=RearWaist +PieSlice=RearWaist +PieSlice=RightWaist +RotateWithTorso=False + +[Layer6] +PieSlice=RightChest +PieSlice=FrontChest +PieSlice=FrontChest +PieSlice=LeftChest +PieSlice=LeftChest +PieSlice=RearChest +PieSlice=RearChest +PieSlice=RightChest +RotateWithTorso=False + +[Layer7] +PieSlice=RightChest +PieSlice=FrontChest +PieSlice=FrontChest +PieSlice=LeftChest +PisSlice=LeftChest +PieSlice=RearChest +PieSlice=RearChest +PieSlice=RightChest +RotateWithTorso=False diff --git a/CONTENT/BT/MODELS/BHK1L4.CTL b/CONTENT/BT/MODELS/BHK1L4.CTL new file mode 100644 index 0000000..37d6a36 --- /dev/null +++ b/CONTENT/BT/MODELS/BHK1L4.CTL @@ -0,0 +1,909 @@ +[StickPosition_JP] +//----------------------------------------------------------------------- +// Joystick +//----------------------------------------------------------------------- +IOMapping=JoystickPhysical +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=StickPosition +Mode=ModeAlwaysActive + +[Throttle_ST] +//----------------------------------------------------------------------- +// Throttle +//----------------------------------------------------------------------- +IOMapping=ScalarThrottle +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=ThrottlePosition +Mode=ModeAlwaysActive + +//----------------------------------------------------------------------- +// Misc. switches +//----------------------------------------------------------------------- +[ReverseThrust_BT1] +IOMapping=ButtonThrottle1 +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=ReverseThrust +Mode=ModeAlwaysActive + +[TorsoCenter_BJHU] +IOMapping=ButtonJoystickHatUp +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoCenter +Mode=ModeAlwaysActive + +[LookLeft_BJHL] +IOMapping=ButtonJoystickHatLeft +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=LookLeft +Mode=ModeAlwaysActive + +[LookRight_BJHR] +IOMapping=ButtonJoystickHatRight +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=LookRight +Mode=ModeAlwaysActive + +[LookBack_BJHD] +IOMapping=ButtonJoystickHatDown +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=LookBehind +Mode=ModeAlwaysActive + +//----------------------------------------------------------------------- +// Secondary mappings +//----------------------------------------------------------------------- +[Button_Sec_1] // Zoom radar in (magnify image) +IOMapping=ButtonSecondary1 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=ZoomIn +Mode=ModeAlwaysActive + +[Button_Sec_2] // Zoom radar out (reduce image) +IOMapping=ButtonSecondary2 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=ZoomOut +Mode=ModeAlwaysActive + +// +// 'Heat vision' mapped to secondary +// SGM 1/6/97 + +[Button_Sec_3] // Toggle heat vision +IOMapping=ButtonSecondary3 +Type=EventMapping +Subsystem=ThermalSight +MessageID=ToggleLamp +Mode=ModeAlwaysActive + +// +// 'Duck' remapped to real message and location. +// GDU 7/9/96 + +[Button_Sec_4] // Request crouch position +IOMapping=ButtonSecondary4 +Type=EventMapping +MessageID=DuckRequest +Mode=ModeAlwaysActive + +[Button_Sec_5] // Toggle searchlight +IOMapping=ButtonSecondary5 +Type=EventMapping +Subsystem=Searchlight +MessageID=ToggleLamp +Mode=ModeAlwaysActive + +[Button_Sec_6] // Cycle through damage display modes +IOMapping=ButtonSecondary6 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=CycleDisplayMode +Mode=ModeAlwaysActive + +[Button_Sec_7] // Cycle through control modes +IOMapping=ButtonSecondary7 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=CycleControlMode +Mode=ModeAlwaysActive + +// ButtonSecondary8 presently unused + +[Button_Sec_9] // Toggle generator 'a' +IOMapping=ButtonSecondary9 +Type=EventMapping +Subsystem=GeneratorA +MessageID=ToggleGeneratorOnOff +Mode=ModeAlwaysActive + +[Button_Sec_10] // Toggle generator 'b' +IOMapping=ButtonSecondary10 +Type=EventMapping +Subsystem=GeneratorB +MessageID=ToggleGeneratorOnOff +Mode=ModeAlwaysActive + +[Button_Sec_11] // Toggle generator 'c' +IOMapping=ButtonSecondary11 +Type=EventMapping +Subsystem=GeneratorC +MessageID=ToggleGeneratorOnOff +Mode=ModeAlwaysActive + +[Button_Sec_12] // Toggle generator 'd' +IOMapping=ButtonSecondary12 +Type=EventMapping +Subsystem=GeneratorD +MessageID=ToggleGeneratorOnOff +Mode=ModeAlwaysActive + +//----------------------------------------- +// Heat Management Screen Mappings +//----------------------------------------- +[Condenser1_Button] +IOMapping=ButtonAuxUpperLeft1 +Type=EventMapping +Subsystem=Condenser1 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Condenser2_Button] +IOMapping=ButtonAuxUpperLeft2 +Type=EventMapping +Subsystem=Condenser2 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Condenser3_Button] +IOMapping=ButtonAuxUpperLeft3 +Type=EventMapping +Subsystem=Condenser3 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Reservoir_Button] +IOMapping=ButtonAuxUpperLeft4 +Type=EventMapping +Subsystem=Reservoir +MessageID=InjectCoolant +Mode=ModeAlwaysActive + +[Condenser4_Button] +IOMapping=ButtonAuxUpperLeft5 +Type=EventMapping +Subsystem=Condenser4 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Condenser5_Button] +IOMapping=ButtonAuxUpperLeft6 +Type=EventMapping +Subsystem=Condenser5 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Condenser6_Button] +IOMapping=ButtonAuxUpperLeft7 +Type=EventMapping +Subsystem=Condenser6 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Reduce_Button] +IOMapping=ButtonAuxUpperLeft8 +Type=EventMapping +MessageID=BalanceCoolant +Mode=ModeAlwaysActive + +//----------------------------------------------------------------------- +// Aux 1 mappings +//----------------------------------------------------------------------- +//------------------------------------------ +// Aux 1 'Quad screen' mappings +//------------------------------------------ +[MFD1_to_Mode_1] // To mode 1 +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Eng1 +Mode=ModeMFD1Quad + +[MFD1_Configure_Trigger_1] // Configure +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Subsystem=PPC_1 +MessageID=ConfigureMappables +Mode=ModeMFD1Quad + +[MFD1_to_Mode_2] // To mode 2 +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Eng2 +Mode=ModeMFD1Quad + +[MFD1_Configure_Trigger_2] // Configure +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Subsystem=SRM6_1 +MessageID=ConfigureMappables +Mode=ModeMFD1Quad + +[MFD1_to_Mode_4] // To mode 4 +IOMapping=ButtonAuxLowerLeft7 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Eng4 +Mode=ModeMFD1Quad + +[MFD1_Configure_Trigger_4] // Configure +IOMapping=ButtonAuxLowerLeft8 +Type=EventMapping +Subsystem=ERMLaser_1 +MessageID=ConfigureMappables +Mode=ModeMFD1Quad + +//---------------------------------------------- +// Aux 1 'Mode 1' mappings, AuxScreenNumber=1 +//---------------------------------------------- +[Aux_1_Mode_1_to_MFD1] +IOMapping=ButtonAuxLowerLeft8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Quad +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_Select_GeneratorA] +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Subsystem=PPC_1 +MessageID=SelectGeneratorA +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_Select_GeneratorB] +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Subsystem=PPC_1 +MessageID=SelectGeneratorB +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_Select_GeneratorC] +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Subsystem=PPC_1 +MessageID=SelectGeneratorC +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_Select_GeneratorD] +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Subsystem=PPC_1 +MessageID=SelectGeneratorD +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_OPTION] +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Subsystem=PPC_1 +MessageID=ToggleSeekVoltage +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Subsystem=PPC_1 +MessageID=ToggleGeneratorMode +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_ToggleCooling] +IOMapping=ButtonAuxLowerLeft7 +Type=EventMapping +Subsystem=PPC_1 +MessageID=ToggleCooling +Mode=ModeMFD1Eng1 + +//-------------------------------------------- +// Aux 1 'Mode 2' mappings, AuxScreenNumber=2 +//-------------------------------------------- +[Aux_1_Mode_2_to_MFD1] +IOMapping=ButtonAuxLowerLeft8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Quad +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_Select_GeneratorA] +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Subsystem=SRM6_1 +MessageID=SelectGeneratorA +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_Select_GeneratorB] +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Subsystem=SRM6_1 +MessageID=SelectGeneratorB +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_Select_GeneratorC] +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Subsystem=SRM6_1 +MessageID=SelectGeneratorC +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_Select_GeneratorD] +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Subsystem=SRM6_1 +MessageID=SelectGeneratorD +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_OPTION] +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Subsystem=SRM6_1 +MessageID=EjectAmmo +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Subsystem=SRM6_1 +MessageID=ToggleGeneratorMode +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_ToggleCooling] +IOMapping=ButtonAuxLowerLeft7 +Type=EventMapping +Subsystem=SRM6_1 +MessageID=ToggleCooling +Mode=ModeMFD1Eng2 + +//--------------------------------------------- +// Aux 1 'Mode 3' mappings, AuxScreenNumber=3 +//--------------------------------------------- +[Aux_1_Mode_4_to_MFD1] +IOMapping=ButtonAuxLowerLeft8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Quad +Mode=ModeMFD1Eng4 + +[Aux_1_Mode_4_Select_GeneratorA] +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Subsystem=ERMLaser_1 +MessageID=SelectGeneratorA +Mode=ModeMFD1Eng4 + +[Aux_1_Mode_4_Select_GeneratorB] +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Subsystem=ERMLaser_1 +MessageID=SelectGeneratorB +Mode=ModeMFD1Eng4 + +[Aux_1_Mode_4_Select_GeneratorC] +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Subsystem=ERMLaser_1 +MessageID=SelectGeneratorC +Mode=ModeMFD1Eng4 + +[Aux_1_Mode_4_Select_GeneratorD] +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Subsystem=ERMLaser_1 +MessageID=SelectGeneratorD +Mode=ModeMFD1Eng4 + +[Aux_1_Mode_4_OPTION] +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Subsystem=ERMLaser_1 +MessageID=ToggleSeekVoltage +Mode=ModeMFD1Eng4 + +[Aux_1_Mode_4_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Subsystem=ERMLaser_1 +MessageID=ToggleGeneratorMode +Mode=ModeMFD1Eng4 + +[Aux_1_Mode_4_ToggleCooling] +IOMapping=ButtonAuxLowerLeft7 +Type=EventMapping +Subsystem=ERMLaser_1 +MessageID=ToggleCooling +Mode=ModeMFD1Eng4 + + +//----------------------------------------------------------------------- +// Aux 2 mappings +//----------------------------------------------------------------------- +//------------------------------------------ +// Aux 2 'Quad screen' mappings +//------------------------------------------ +[MFD2_to_Mode_1] +IOMapping=ButtonAuxUpperCenter1 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Eng1 +Mode=ModeMFD2Quad + +[MFD2_to_Mode_2] +IOMapping=ButtonAuxUpperCenter3 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Eng2 +Mode=ModeMFD2Quad + +[MFD2_to_Mode_3] +IOMapping=ButtonAuxUpperCenter5 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Eng3 +Mode=ModeMFD2Quad + +[MFD2_Configure_Trigger_3] +IOMapping=ButtonAuxUpperCenter6 +Type=EventMapping +Subsystem=ERMLaser_3 +MessageID=ConfigureMappables +Mode=ModeMFD2Quad + +[MFD2_to_Mode_4] +IOMapping=ButtonAuxUpperCenter7 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Eng4 +Mode=ModeMFD2Quad + +[MFD2_Configure_Trigger_4] +IOMapping=ButtonAuxUpperCenter8 +Type=EventMapping +Subsystem=ERMLaser_2 +MessageID=ConfigureMappables +Mode=ModeMFD2Quad + +//-------------------------------------------- +// Aux 2 'Mode 1' mappings, AuxScreenNumber=9 +//-------------------------------------------- +[Aux_2_Mode_1_to_MFD2] +IOMapping=ButtonAuxUpperCenter8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Quad +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_Select_GeneratorA] +IOMapping=ButtonAuxUpperCenter1 +Type=EventMapping +Subsystem=Avionics +MessageID=SelectGeneratorA +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_Select_GeneratorB] +IOMapping=ButtonAuxUpperCenter2 +Type=EventMapping +Subsystem=Avionics +MessageID=SelectGeneratorB +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_Select_GeneratorC] +IOMapping=ButtonAuxUpperCenter3 +Type=EventMapping +Subsystem=Avionics +MessageID=SelectGeneratorC +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_Select_GeneratorD] +IOMapping=ButtonAuxUpperCenter4 +Type=EventMapping +Subsystem=Avionics +MessageID=SelectGeneratorD +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_ToggleGeneratorMode] +IOMapping=ButtonAuxUpperCenter6 +Type=EventMapping +Subsystem=Avionics +MessageID=ToggleGeneratorMode +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_ToggleCooling] +IOMapping=ButtonAuxUpperCenter7 +Type=EventMapping +Subsystem=Avionics +MessageID=ToggleCooling +Mode=ModeMFD2Eng1 + +//-------------------------------------------- +// Aux 2 'Mode 2' mappings, AuxScreenNumber=10 +//-------------------------------------------- +[Aux_2_Mode_2_to_MFD2] +IOMapping=ButtonAuxUpperCenter8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Quad +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_Select_GeneratorA] +IOMapping=ButtonAuxUpperCenter1 +Type=EventMapping +Subsystem=Myomers +MessageID=SelectGeneratorA +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_Select_GeneratorB] +IOMapping=ButtonAuxUpperCenter2 +Type=EventMapping +Subsystem=Myomers +MessageID=SelectGeneratorB +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_Select_GeneratorC] +IOMapping=ButtonAuxUpperCenter3 +Type=EventMapping +Subsystem=Myomers +MessageID=SelectGeneratorC +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_Select_GeneratorD] +IOMapping=ButtonAuxUpperCenter4 +Type=EventMapping +Subsystem=Myomers +MessageID=SelectGeneratorD +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_OPTION] +IOMapping=ButtonAuxUpperCenter5 +Type=EventMapping +Subsystem=Myomers +MessageID=ToggleSeekVoltage +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_ToggleGeneratorMode] +IOMapping=ButtonAuxUpperCenter6 +Type=EventMapping +Subsystem=Myomers +MessageID=ToggleGeneratorMode +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_ToggleCooling] +IOMapping=ButtonAuxUpperCenter7 +Type=EventMapping +Subsystem=Myomers +MessageID=ToggleCooling +Mode=ModeMFD2Eng2 + +//-------------------------------------------- +// Aux 3 'Mode 3' mappings, AuxScreenNumber=11 +//-------------------------------------------- +[Aux_2_Mode_3_to_MFD2] +IOMapping=ButtonAuxUpperCenter8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Quad +Mode=ModeMFD2Eng3 + +[Aux_2_Mode_3_Select_GeneratorA] +IOMapping=ButtonAuxUpperCenter1 +Type=EventMapping +Subsystem=ERMLaser_3 +MessageID=SelectGeneratorA +Mode=ModeMFD2Eng3 + +[Aux_2_Mode_3_Select_GeneratorB] +IOMapping=ButtonAuxUpperCenter2 +Type=EventMapping +Subsystem=ERMLaser_3 +MessageID=SelectGeneratorB +Mode=ModeMFD2Eng3 + +[Aux_2_Mode_3_Select_GeneratorC] +IOMapping=ButtonAuxUpperCenter3 +Type=EventMapping +Subsystem=ERMLaser_3 +MessageID=SelectGeneratorC +Mode=ModeMFD2Eng3 + +[Aux_2_Mode_3_Select_GeneratorD] +IOMapping=ButtonAuxUpperCenter4 +Type=EventMapping +Subsystem=ERMLaser_3 +MessageID=SelectGeneratorD +Mode=ModeMFD2Eng3 + +[Aux_2_Mode_3_OPTION] +IOMapping=ButtonAuxUpperCenter5 +Type=EventMapping +Subsystem=ERMLaser_3 +MessageID=ToggleSeekVoltage +Mode=ModeMFD2Eng3 + +[Aux_2_Mode_3_ToggleGeneratorMode] +IOMapping=ButtonAuxUpperCenter6 +Type=EventMapping +Subsystem=ERMLaser_3 +MessageID=ToggleGeneratorMode +Mode=ModeMFD2Eng3 + +[Aux_2_Mode_3_ToggleCooling] +IOMapping=ButtonAuxUpperCenter7 +Type=EventMapping +Subsystem=ERMLaser_3 +MessageID=ToggleCooling +Mode=ModeMFD2Eng3 + +//--------------------------------------------- +// Aux 3 'Mode 4' mappings, AuxScreenNumber=12 +//--------------------------------------------- +[Aux_2_Mode_4_to_MFD2] +IOMapping=ButtonAuxUpperCenter8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Quad +Mode=ModeMFD2Eng4 + +[Aux_2_Mode_4_Select_GeneratorA] +IOMapping=ButtonAuxUpperCenter1 +Type=EventMapping +Subsystem=ERMLaser_2 +MessageID=SelectGeneratorA +Mode=ModeMFD2Eng4 + +[Aux_2_Mode_4_Select_GeneratorB] +IOMapping=ButtonAuxUpperCenter2 +Type=EventMapping +Subsystem=ERMLaser_2 +MessageID=SelectGeneratorB +Mode=ModeMFD2Eng4 + +[Aux_2_Mode_4_Select_GeneratorC] +IOMapping=ButtonAuxUpperCenter3 +Type=EventMapping +Subsystem=ERMLaser_2 +MessageID=SelectGeneratorC +Mode=ModeMFD2Eng4 + +[Aux_2_Mode_4_Select_GeneratorD] +IOMapping=ButtonAuxUpperCenter4 +Type=EventMapping +Subsystem=ERMLaser_2 +MessageID=SelectGeneratorD +Mode=ModeMFD2Eng4 + +[Aux_2_Mode_4_OPTION] +IOMapping=ButtonAuxUpperCenter5 +Type=EventMapping +Subsystem=ERMLaser_2 +MessageID=ToggleSeekVoltage +Mode=ModeMFD2Eng4 + +[Aux_2_Mode_4_ToggleGeneratorMode] +IOMapping=ButtonAuxUpperCenter6 +Type=EventMapping +Subsystem=ERMLaser_2 +MessageID=ToggleGeneratorMode +Mode=ModeMFD2Eng4 + +[Aux_2_Mode_4_ToggleCooling] +IOMapping=ButtonAuxUpperCenter7 +Type=EventMapping +Subsystem=ERMLaser_2 +MessageID=ToggleCooling +Mode=ModeMFD2Eng4 + + +//----------------------------------------------------------------------- +// Aux 3 mappings +//----------------------------------------------------------------------- +//------------------------------------------ +// Aux 3 'Quad screen' mappings +//------------------------------------------ +[MFD3_to_Mode_1] +IOMapping=ButtonAuxLowerRight1 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Eng1 +Mode=ModeMFD3Quad + +[MFD3_Configure_Trigger_1] +IOMapping=ButtonAuxLowerRight2 +Type=EventMapping +Subsystem=SRM6_2 +MessageID=ConfigureMappables +Mode=ModeMFD3Quad + +[MFD3_to_Mode_2] +IOMapping=ButtonAuxLowerRight3 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Eng2 +Mode=ModeMFD3Quad + +[MFD3_Configure_Trigger_2] +IOMapping=ButtonAuxLowerRight4 +Type=EventMapping +Subsystem=PPC_2 +MessageID=ConfigureMappables +Mode=ModeMFD3Quad + +[Aux_3_Mode_1_to_MFD3] +IOMapping=ButtonAuxLowerRight8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Quad +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_Select_GeneratorA] +IOMapping=ButtonAuxLowerRight1 +Type=EventMapping +Subsystem=SRM6_2 +MessageID=SelectGeneratorA +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_Select_GeneratorB] +IOMapping=ButtonAuxLowerRight2 +Type=EventMapping +Subsystem=SRM6_2 +MessageID=SelectGeneratorB +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_Select_GeneratorC] +IOMapping=ButtonAuxLowerRight3 +Type=EventMapping +Subsystem=SRM6_2 +MessageID=SelectGeneratorC +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_Select_GeneratorD] +IOMapping=ButtonAuxLowerRight4 +Type=EventMapping +Subsystem=SRM6_2 +MessageID=SelectGeneratorD +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_OPTION] +IOMapping=ButtonAuxLowerRight5 +Type=EventMapping +Subsystem=SRM6_2 +MessageID=EjectAmmo +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerRight6 +Type=EventMapping +Subsystem=SRM6_2 +MessageID=ToggleGeneratorMode +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_ToggleCooling] +IOMapping=ButtonAuxLowerRight7 +Type=EventMapping +Subsystem=SRM6_2 +MessageID=ToggleCooling +Mode=ModeMFD3Eng1 + +//-------------------------------------------- +// Aux 3 'Mode 2' mappings, AuxScreenNumber=10 +//-------------------------------------------- +[Aux_3_Mode_2_to_MFD3] +IOMapping=ButtonAuxLowerRight8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Quad +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_Select_GeneratorA] +IOMapping=ButtonAuxLowerRight1 +Type=EventMapping +Subsystem=PPC_2 +MessageID=SelectGeneratorA +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_Select_GeneratorB] +IOMapping=ButtonAuxLowerRight2 +Type=EventMapping +Subsystem=PPC_2 +MessageID=SelectGeneratorB +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_Select_GeneratorC] +IOMapping=ButtonAuxLowerRight3 +Type=EventMapping +Subsystem=PPC_2 +MessageID=SelectGeneratorC +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_Select_GeneratorD] +IOMapping=ButtonAuxLowerRight4 +Type=EventMapping +Subsystem=PPC_2 +MessageID=SelectGeneratorD +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_OPTION] +IOMapping=ButtonAuxLowerRight5 +Type=EventMapping +Subsystem=PPC_2 +MessageID=ToggleSeekVoltage +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerRight6 +Type=EventMapping +Subsystem=PPC_2 +MessageID=ToggleGeneratorMode +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_ToggleCooling] +IOMapping=ButtonAuxLowerRight7 +Type=EventMapping +Subsystem=PPC_2 +MessageID=ToggleCooling +Mode=ModeMFD3Eng2 + +//-------------------------------------------- +// Aux 3 'Mode 3' mappings, AuxScreenNumber=11 +//-------------------------------------------- +[PPC_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=PPC_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[PPC_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=PPC_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_3_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_3 +AttributeID=TriggerState +Mode=ModeNonMapping +[SRM6_1_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=SRM6_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[SRM6_2_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=SRM6_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[Button_Sec_Extra_Light] +IOMapping=ButtonSecondary5 +Type=EventMapping +Subsystem=Searchlight2 +MessageID=ToggleLamp +Mode=ModeAlwaysActive diff --git a/CONTENT/BT/MODELS/BHK1THR.CTL b/CONTENT/BT/MODELS/BHK1THR.CTL new file mode 100644 index 0000000..759e57e --- /dev/null +++ b/CONTENT/BT/MODELS/BHK1THR.CTL @@ -0,0 +1,63 @@ +[StickPosition_JP] +IOMapping=JoystickPhysical +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=StickPosition +Mode=ModeAlwaysActive + +[TorsoLeft_BJHL] +IOMapping=ButtonJoystickHatLeft +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoLeft +Mode=ModeAlwaysActive + +[TorsoRight_BJHR] +IOMapping=ButtonJoystickHatRight +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoRight +Mode=ModeAlwaysActive + +[PPC_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=PPC_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[PPC_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=PPC_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_3_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_3 +AttributeID=TriggerState +Mode=ModeNonMapping +[SRM6_1_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=SRM6_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[SRM6_2_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=SRM6_2 +AttributeID=TriggerState +Mode=ModeNonMapping diff --git a/CONTENT/BT/MODELS/BIGDEAD.MOD b/CONTENT/BT/MODELS/BIGDEAD.MOD new file mode 100644 index 0000000..5148fa9 --- /dev/null +++ b/CONTENT/BT/MODELS/BIGDEAD.MOD @@ -0,0 +1,11 @@ +[video] +object=1017 1016 + +[audio] +external=bigexp.scp + +[gamedata] +class=ExplosionClassID +// Audio requires ExplosionDuration >= 5.0 +ExplosionDuration=5.0 + diff --git a/CONTENT/BT/MODELS/BLD.MOD b/CONTENT/BT/MODELS/BLD.MOD new file mode 100644 index 0000000..f611d4d --- /dev/null +++ b/CONTENT/BT/MODELS/BLD.MOD @@ -0,0 +1,20 @@ +[video] +; +; hn1.mod - Warehouse +; +object=hn1.bgf hn1_FR.bgf hn1_LP.bgf +rubble=hn1d.bgf hn1d_FR.bgf + +[collision] +name=hn1_cv.sld + +[gauge] +image=hn1_ga.gim + +[gamedata] +class=CulturalIconClassID +DamageZones=med.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=meddead +TimeDelay=0.5 +CrunchExplosionModelFile=stephit diff --git a/CONTENT/BT/MODELS/BLD01.MOD b/CONTENT/BT/MODELS/BLD01.MOD new file mode 100644 index 0000000..aa0c126 --- /dev/null +++ b/CONTENT/BT/MODELS/BLD01.MOD @@ -0,0 +1,10 @@ +[video] +; +; bld01.mod +; +object=bld01.bgf + + +[gamedata] +class=UnscalableTerrainClassID + \ No newline at end of file diff --git a/CONTENT/BT/MODELS/BLD02.MOD b/CONTENT/BT/MODELS/BLD02.MOD new file mode 100644 index 0000000..62709c0 --- /dev/null +++ b/CONTENT/BT/MODELS/BLD02.MOD @@ -0,0 +1,10 @@ +[video] +; +; bld02.mod +; +object=bld02.bgf + + +[gamedata] +class=UnscalableTerrainClassID + \ No newline at end of file diff --git a/CONTENT/BT/MODELS/BLD03.MOD b/CONTENT/BT/MODELS/BLD03.MOD new file mode 100644 index 0000000..15a8339 --- /dev/null +++ b/CONTENT/BT/MODELS/BLD03.MOD @@ -0,0 +1,18 @@ +[video] +; +object=bld03.bgf +rubble=bld03d.bgf + +[collision] +name=bld03_cv.sld + +[gauge] +image=bld03_ga.gim + +[gamedata] +class=CulturalIconClassID +DamageZones=med.dmg +StoppingCollisionVolume=1 +ExplosionModelFile=bigdead +TimeDelay=0.5 +CrunchExplosionModelFile=stephit diff --git a/CONTENT/BT/MODELS/BLD04.MOD b/CONTENT/BT/MODELS/BLD04.MOD new file mode 100644 index 0000000..63e60e7 --- /dev/null +++ b/CONTENT/BT/MODELS/BLD04.MOD @@ -0,0 +1,20 @@ +[video] +; +; bld04.mod - Warehouse +; +object=bld04.bgf +rubble=bld04d.bgf + +[collision] +name=bld04_cv.sld + +[gauge] +image=bld04_ga.gim + +[gamedata] +class=CulturalIconClassID +DamageZones=med.dmg +StoppingCollisionVolume=1 +ExplosionModelFile=bigdead +TimeDelay=0.5 +CrunchExplosionModelFile=stephit diff --git a/CONTENT/BT/MODELS/BLD05.MOD b/CONTENT/BT/MODELS/BLD05.MOD new file mode 100644 index 0000000..6855440 --- /dev/null +++ b/CONTENT/BT/MODELS/BLD05.MOD @@ -0,0 +1,9 @@ +[video] +; +; bld05.mod +; +object=bld05.bgf + +[gamedata] +class=UnscalableTerrainClassID + \ No newline at end of file diff --git a/CONTENT/BT/MODELS/BLD06.MOD b/CONTENT/BT/MODELS/BLD06.MOD new file mode 100644 index 0000000..bf72370 --- /dev/null +++ b/CONTENT/BT/MODELS/BLD06.MOD @@ -0,0 +1,15 @@ +[video] +; +; bld06.mod +; +object=bld06.bgf + +[collision] +name=bld06_cv.sld + +[gauge] +image=bld06_ga.gim + +[gamedata] +class=UnscalableTerrainClassID + \ No newline at end of file diff --git a/CONTENT/BT/MODELS/BLD08.MOD b/CONTENT/BT/MODELS/BLD08.MOD new file mode 100644 index 0000000..0adb1f5 --- /dev/null +++ b/CONTENT/BT/MODELS/BLD08.MOD @@ -0,0 +1,14 @@ +[video] +; +; bld08.mod +; +object=bld08.bgf bld08_lp.bgf + +[collision] +name=bld08_cv.sld + +[gauge] +image=bld08_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/BLD20.MOD b/CONTENT/BT/MODELS/BLD20.MOD new file mode 100644 index 0000000..da08b9a --- /dev/null +++ b/CONTENT/BT/MODELS/BLD20.MOD @@ -0,0 +1,20 @@ +[video] +; +; bld20.mod - Warehouse +; +object=bld20.bgf +rubble=bld20d.bgf + +[collision] +name=bld20_cv.sld + +[gauge] +image=bld20_ga.gim + +[gamedata] +class=CulturalIconClassID +DamageZones=med.dmg +StoppingCollisionVolume=1 +ExplosionModelFile=bigdead +TimeDelay=0.5 +CrunchExplosionModelFile=stephit diff --git a/CONTENT/BT/MODELS/BLD24.MOD b/CONTENT/BT/MODELS/BLD24.MOD new file mode 100644 index 0000000..cf2de2e --- /dev/null +++ b/CONTENT/BT/MODELS/BLD24.MOD @@ -0,0 +1,20 @@ +[video] +; +; bld24.mod - Warehouse +; +object=bld24.bgf +rubble=bld24d.bgf + +[collision] +name=bld24_cv.sld + +[gauge] +image=bld24_ga.gim + +[gamedata] +class=CulturalIconClassID +DamageZones=med.dmg +StoppingCollisionVolume=1 +ExplosionModelFile=bigdead +TimeDelay=0.5 +CrunchExplosionModelFile=stephit diff --git a/CONTENT/BT/MODELS/BLD26.MOD b/CONTENT/BT/MODELS/BLD26.MOD new file mode 100644 index 0000000..62c0194 --- /dev/null +++ b/CONTENT/BT/MODELS/BLD26.MOD @@ -0,0 +1,21 @@ +[video] +; +; bld26.mod - Warehouse +; +object=bld26.bgf +rubble=bld26d.bgf + +[collision] +name=bld26_cv.sld + +[gauge] +image=bld26_ga.gim + +[gamedata] +class=CulturalIconClassID +DamageZones=med.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=meddead +TimeDelay=0.5 +CrunchExplosionModelFile=stephit + \ No newline at end of file diff --git a/CONTENT/BT/MODELS/BLD27.MOD b/CONTENT/BT/MODELS/BLD27.MOD new file mode 100644 index 0000000..9c7e1b6 --- /dev/null +++ b/CONTENT/BT/MODELS/BLD27.MOD @@ -0,0 +1,14 @@ +[video] +; +; bld27.mod +; +object=bld27.bgf + +[collision] +name=bld27_cv.sld + +[gauge] +image=bld27_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/BLHDEAD.MOD b/CONTENT/BT/MODELS/BLHDEAD.MOD new file mode 100644 index 0000000..83959ea --- /dev/null +++ b/CONTENT/BT/MODELS/BLHDEAD.MOD @@ -0,0 +1,9 @@ +[video] +object=104 3 4 5 1007 15 1001 + +[audio] +external=brnext.scp + +[gamedata] +class=ExplosionClassID +ExplosionDuration=9.0 diff --git a/CONTENT/BT/MODELS/BLHDMG.EXP b/CONTENT/BT/MODELS/BLHDMG.EXP new file mode 100644 index 0000000..c9b1598 --- /dev/null +++ b/CONTENT/BT/MODELS/BLHDMG.EXP @@ -0,0 +1,28 @@ +[OneDamage] +ExplosionModelFile=dam1hit +DamageLevel=0.2 +TimeDelay=0.0 + +[TwoDamage] +ExplosionModelFile=dam2hit +DamageLevel=0.4 +TimeDelay=0.0 + +[ThreeDamage] +ExplosionModelFile=dam3hit +DamageLevel=0.6 +TimeDelay=0.0 + +[FourDamage] +ExplosionModelFile=dam4hit +DamageLevel=0.8 +TimeDelay=0.0 + +[DestroyedExplosion] +ExplosionModelFile=desthit +GraphicState=Destroyed + +[GoneExplosion] +ExplosionModelFile=desthit +GraphicState=Gone + diff --git a/CONTENT/BT/MODELS/BLHL4.CTL b/CONTENT/BT/MODELS/BLHL4.CTL new file mode 100644 index 0000000..fc5ff14 --- /dev/null +++ b/CONTENT/BT/MODELS/BLHL4.CTL @@ -0,0 +1,1145 @@ +[StickPosition_JP] +//----------------------------------------------------------------------- +// Joystick +//----------------------------------------------------------------------- +IOMapping=JoystickPhysical +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=StickPosition +Mode=ModeAlwaysActive + +[Throttle_ST] +//----------------------------------------------------------------------- +// Throttle +//----------------------------------------------------------------------- +IOMapping=ScalarThrottle +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=ThrottlePosition +Mode=ModeAlwaysActive + +//----------------------------------------------------------------------- +// Misc. switches +//----------------------------------------------------------------------- +[ReverseThrust_BT1] +IOMapping=ButtonThrottle1 +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=ReverseThrust +Mode=ModeAlwaysActive + +[TorsoCenter_BJHU] +IOMapping=ButtonJoystickHatUp +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoCenter +Mode=ModeAlwaysActive + +[LookLeft_BJHL] +IOMapping=ButtonJoystickHatLeft +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=LookLeft +Mode=ModeAlwaysActive + +[LookRight_BJHR] +IOMapping=ButtonJoystickHatRight +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=LookRight +Mode=ModeAlwaysActive + +[LookBack_BJHD] +IOMapping=ButtonJoystickHatDown +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=LookBehind +Mode=ModeAlwaysActive + +//----------------------------------------------------------------------- +// Secondary mappings +//----------------------------------------------------------------------- +[Button_Sec_1] // Zoom radar in (magnify image) +IOMapping=ButtonSecondary1 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=ZoomIn +Mode=ModeAlwaysActive + +[Button_Sec_2] // Zoom radar out (reduce image) +IOMapping=ButtonSecondary2 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=ZoomOut +Mode=ModeAlwaysActive + +// +// 'Heat vision' mapped to secondary +// SGM 1/6/97 + +[Button_Sec_3] // Toggle heat vision +IOMapping=ButtonSecondary3 +Type=EventMapping +Subsystem=ThermalSight +MessageID=ToggleLamp +Mode=ModeAlwaysActive + +// +// 'Duck' remapped to real message and location. +// GDU 7/9/96 + +[Button_Sec_4] // Request crouch position +IOMapping=ButtonSecondary4 +Type=EventMapping +MessageID=DuckRequest +Mode=ModeAlwaysActive + +[Button_Sec_5] // Toggle searchlight +IOMapping=ButtonSecondary5 +Type=EventMapping +Subsystem=Searchlight +MessageID=ToggleLamp +Mode=ModeAlwaysActive + +[Button_Sec_6] // Cycle through damage display modes +IOMapping=ButtonSecondary6 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=CycleDisplayMode +Mode=ModeAlwaysActive + +[Button_Sec_7] // Cycle through control modes +IOMapping=ButtonSecondary7 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=CycleControlMode +Mode=ModeAlwaysActive + +// ButtonSecondary8 presently unused + +[Button_Sec_9] // Toggle generator 'a' +IOMapping=ButtonSecondary9 +Type=EventMapping +Subsystem=GeneratorA +MessageID=ToggleGeneratorOnOff +Mode=ModeAlwaysActive + +[Button_Sec_10] // Toggle generator 'b' +IOMapping=ButtonSecondary10 +Type=EventMapping +Subsystem=GeneratorB +MessageID=ToggleGeneratorOnOff +Mode=ModeAlwaysActive + +[Button_Sec_11] // Toggle generator 'c' +IOMapping=ButtonSecondary11 +Type=EventMapping +Subsystem=GeneratorC +MessageID=ToggleGeneratorOnOff +Mode=ModeAlwaysActive + +[Button_Sec_12] // Toggle generator 'd' +IOMapping=ButtonSecondary12 +Type=EventMapping +Subsystem=GeneratorD +MessageID=ToggleGeneratorOnOff +Mode=ModeAlwaysActive + +//----------------------------------------- +// Heat Management Screen Mappings +//----------------------------------------- +[Condenser1_Button] +IOMapping=ButtonAuxUpperLeft1 +Type=EventMapping +Subsystem=Condenser1 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Condenser2_Button] +IOMapping=ButtonAuxUpperLeft2 +Type=EventMapping +Subsystem=Condenser2 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Condenser3_Button] +IOMapping=ButtonAuxUpperLeft3 +Type=EventMapping +Subsystem=Condenser3 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Reservoir_Button] +IOMapping=ButtonAuxUpperLeft4 +Type=EventMapping +Subsystem=Reservoir +MessageID=InjectCoolant +Mode=ModeAlwaysActive + +[Condenser4_Button] +IOMapping=ButtonAuxUpperLeft5 +Type=EventMapping +Subsystem=Condenser4 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Condenser5_Button] +IOMapping=ButtonAuxUpperLeft6 +Type=EventMapping +Subsystem=Condenser5 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Condenser6_Button] +IOMapping=ButtonAuxUpperLeft7 +Type=EventMapping +Subsystem=Condenser6 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Reduce_Button] +IOMapping=ButtonAuxUpperLeft8 +Type=EventMapping +MessageID=BalanceCoolant +Mode=ModeAlwaysActive + +//----------------------------------------------------------------------- +// Aux 1 mappings +//----------------------------------------------------------------------- +//------------------------------------------ +// Aux 1 'Quad screen' mappings +//------------------------------------------ +[MFD1_to_Mode_1] // To mode 1 +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Eng1 +Mode=ModeMFD1Quad + +[MFD1_Configure_Trigger_1] // Configure +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Subsystem=ERLLaser +MessageID=ConfigureMappables +Mode=ModeMFD1Quad + +[MFD1_to_Mode_2] // To mode 2 +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Eng2 +Mode=ModeMFD1Quad + +[MFD1_Configure_Trigger_2] // Configure +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Subsystem=SRM6_1 +MessageID=ConfigureMappables +Mode=ModeMFD1Quad + +[MFD1_to_Mode_3] // To mode 3 +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Eng3 +Mode=ModeMFD1Quad + +[MFD1_Configure_Trigger_3] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Subsystem=ERSLaser_1 +MessageID=ConfigureMappables +Mode=ModeMFD1Quad + +[MFD1_to_Mode_4] // To mode 4 +IOMapping=ButtonAuxLowerLeft7 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Eng4 +Mode=ModeMFD1Quad + +[MFD1_Configure_Trigger_4] // Configure +IOMapping=ButtonAuxLowerLeft8 +Type=EventMapping +Subsystem=ERMLaser_4 +MessageID=ConfigureMappables +Mode=ModeMFD1Quad + +//---------------------------------------------- +// Aux 1 'Mode 1' mappings, AuxScreenNumber=1 +//---------------------------------------------- +[Aux_1_Mode_1_to_MFD1] +IOMapping=ButtonAuxLowerLeft8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Quad +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_Select_GeneratorA] +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Subsystem=ERLLaser +MessageID=SelectGeneratorA +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_Select_GeneratorB] +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Subsystem=ERLLaser +MessageID=SelectGeneratorB +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_Select_GeneratorC] +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Subsystem=ERLLaser +MessageID=SelectGeneratorC +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_Select_GeneratorD] +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Subsystem=ERLLaser +MessageID=SelectGeneratorD +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_OPTION] +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Subsystem=ERLLaser +MessageID=ToggleSeekVoltage +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Subsystem=ERLLaser +MessageID=ToggleGeneratorMode +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_ToggleCooling] +IOMapping=ButtonAuxLowerLeft7 +Type=EventMapping +Subsystem=ERLLaser +MessageID=ToggleCooling +Mode=ModeMFD1Eng1 + +//-------------------------------------------- +// Aux 1 'Mode 2' mappings, AuxScreenNumber=2 +//-------------------------------------------- +[Aux_1_Mode_2_to_MFD1] +IOMapping=ButtonAuxLowerLeft8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Quad +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_Select_GeneratorA] +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Subsystem=SRM6_1 +MessageID=SelectGeneratorA +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_Select_GeneratorB] +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Subsystem=SRM6_1 +MessageID=SelectGeneratorB +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_Select_GeneratorC] +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Subsystem=SRM6_1 +MessageID=SelectGeneratorC +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_Select_GeneratorD] +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Subsystem=SRM6_1 +MessageID=SelectGeneratorD +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_OPTION] +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Subsystem=SRM6_1 +MessageID=EjectAmmo +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Subsystem=SRM6_1 +MessageID=ToggleGeneratorMode +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_ToggleCooling] +IOMapping=ButtonAuxLowerLeft7 +Type=EventMapping +Subsystem=SRM6_1 +MessageID=ToggleCooling +Mode=ModeMFD1Eng2 + +//--------------------------------------------- +// Aux 1 'Mode 3' mappings, AuxScreenNumber=3 +//--------------------------------------------- +[Aux_1_Mode_3_to_MFD1] +IOMapping=ButtonAuxLowerLeft8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Quad +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_Select_GeneratorA] +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Subsystem=ERSLaser_1 +MessageID=SelectGeneratorA +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_Select_GeneratorB] +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Subsystem=ERSLaser_1 +MessageID=SelectGeneratorB +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_Select_GeneratorC] +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Subsystem=ERSLaser_1 +MessageID=SelectGeneratorC +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_Select_GeneratorD] +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Subsystem=ERSLaser_1 +MessageID=SelectGeneratorD +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_OPTION] +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Subsystem=ERSLaser_1 +MessageID=ToggleSeekVoltage +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Subsystem=ERSLaser_1 +MessageID=ToggleGeneratorMode +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_ToggleCooling] +IOMapping=ButtonAuxLowerLeft7 +Type=EventMapping +Subsystem=ERSLaser_1 +MessageID=ToggleCooling +Mode=ModeMFD1Eng3 + +//-------------------------------------------- +// Aux 1 "Mode 4" Mappings, AuxScreenNumber=4 +//-------------------------------------------- +[Aux_1_Mode_4_to_MFD1] +IOMapping=ButtonAuxLowerLeft8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Quad +Mode=ModeMFD1Eng4 + +[Aux_1_Mode_4_Select_GeneratorA] +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Subsystem=ERMLaser_4 +MessageID=SelectGeneratorA +Mode=ModeMFD1Eng4 + +[Aux_1_Mode_4_Select_GeneratorB] +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Subsystem=ERMLaser_4 +MessageID=SelectGeneratorB +Mode=ModeMFD1Eng4 + +[Aux_1_Mode_4_Select_GeneratorC] +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Subsystem=ERMLaser_4 +MessageID=SelectGeneratorC +Mode=ModeMFD1Eng4 + +[Aux_1_Mode_4_Select_GeneratorD] +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Subsystem=ERMLaser_4 +MessageID=SelectGeneratorD +Mode=ModeMFD1Eng4 + +[Aux_1_Mode_4_OPTION] +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Subsystem=ERMLaser_4 +MessageID=ToggleSeekVoltage +Mode=ModeMFD1Eng4 + +[Aux_1_Mode_4_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Subsystem=ERMLaser_4 +MessageID=ToggleGeneratorMode +Mode=ModeMFD1Eng4 + +[Aux_1_Mode_4_ToggleCooling] +IOMapping=ButtonAuxLowerLeft7 +Type=EventMapping +Subsystem=ERMLaser_4 +MessageID=ToggleCooling +Mode=ModeMFD1Eng4 + + +//----------------------------------------------------------------------- +// Aux 2 mappings +//----------------------------------------------------------------------- +//------------------------------------------ +// Aux 2 'Quad screen' mappings +//------------------------------------------ +[MFD2_to_Mode_1] +IOMapping=ButtonAuxUpperCenter1 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Eng1 +Mode=ModeMFD2Quad + +[MFD2_to_Mode_2] +IOMapping=ButtonAuxUpperCenter3 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Eng2 +Mode=ModeMFD2Quad + +[MFD2_to_Mode_3] +IOMapping=ButtonAuxUpperCenter5 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Eng3 +Mode=ModeMFD2Quad + +[MFD2_Configure_Trigger_3] +IOMapping=ButtonAuxUpperCenter6 +Type=EventMapping +Subsystem=ERMLaser_2 +MessageID=ConfigureMappables +Mode=ModeMFD2Quad + +[MFD2_to_Mode_4] +IOMapping=ButtonAuxUpperCenter7 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Eng4 +Mode=ModeMFD2Quad + +[MFD2_Configure_Trigger_4] +IOMapping=ButtonAuxUpperCenter8 +Type=EventMapping +Subsystem=ERMLaser_3 +MessageID=ConfigureMappables +Mode=ModeMFD2Quad + +//-------------------------------------------- +// Aux 2 'Mode 1' mappings, AuxScreenNumber=9 +//-------------------------------------------- +[Aux_2_Mode_1_to_MFD2] +IOMapping=ButtonAuxUpperCenter8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Quad +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_Select_GeneratorA] +IOMapping=ButtonAuxUpperCenter1 +Type=EventMapping +Subsystem=Avionics +MessageID=SelectGeneratorA +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_Select_GeneratorB] +IOMapping=ButtonAuxUpperCenter2 +Type=EventMapping +Subsystem=Avionics +MessageID=SelectGeneratorB +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_Select_GeneratorC] +IOMapping=ButtonAuxUpperCenter3 +Type=EventMapping +Subsystem=Avionics +MessageID=SelectGeneratorC +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_Select_GeneratorD] +IOMapping=ButtonAuxUpperCenter4 +Type=EventMapping +Subsystem=Avionics +MessageID=SelectGeneratorD +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_ToggleGeneratorMode] +IOMapping=ButtonAuxUpperCenter6 +Type=EventMapping +Subsystem=Avionics +MessageID=ToggleGeneratorMode +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_ToggleCooling] +IOMapping=ButtonAuxUpperCenter7 +Type=EventMapping +Subsystem=Avionics +MessageID=ToggleCooling +Mode=ModeMFD2Eng1 + +//-------------------------------------------- +// Aux 2 'Mode 2' mappings, AuxScreenNumber=10 +//-------------------------------------------- +[Aux_2_Mode_2_to_MFD2] +IOMapping=ButtonAuxUpperCenter8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Quad +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_Select_GeneratorA] +IOMapping=ButtonAuxUpperCenter1 +Type=EventMapping +Subsystem=Myomers +MessageID=SelectGeneratorA +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_Select_GeneratorB] +IOMapping=ButtonAuxUpperCenter2 +Type=EventMapping +Subsystem=Myomers +MessageID=SelectGeneratorB +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_Select_GeneratorC] +IOMapping=ButtonAuxUpperCenter3 +Type=EventMapping +Subsystem=Myomers +MessageID=SelectGeneratorC +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_Select_GeneratorD] +IOMapping=ButtonAuxUpperCenter4 +Type=EventMapping +Subsystem=Myomers +MessageID=SelectGeneratorD +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_OPTION] +IOMapping=ButtonAuxUpperCenter5 +Type=EventMapping +Subsystem=Myomers +MessageID=ToggleSeekVoltage +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_ToggleGeneratorMode] +IOMapping=ButtonAuxUpperCenter6 +Type=EventMapping +Subsystem=Myomers +MessageID=ToggleGeneratorMode +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_ToggleCooling] +IOMapping=ButtonAuxUpperCenter7 +Type=EventMapping +Subsystem=Myomers +MessageID=ToggleCooling +Mode=ModeMFD2Eng2 + +//-------------------------------------------- +// Aux 3 'Mode 3' mappings, AuxScreenNumber=11 +//-------------------------------------------- +[Aux_2_Mode_3_to_MFD2] +IOMapping=ButtonAuxUpperCenter8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Quad +Mode=ModeMFD2Eng3 + +[Aux_2_Mode_3_Select_GeneratorA] +IOMapping=ButtonAuxUpperCenter1 +Type=EventMapping +Subsystem=ERMLaser_2 +MessageID=SelectGeneratorA +Mode=ModeMFD2Eng3 + +[Aux_2_Mode_3_Select_GeneratorB] +IOMapping=ButtonAuxUpperCenter2 +Type=EventMapping +Subsystem=ERMLaser_2 +MessageID=SelectGeneratorB +Mode=ModeMFD2Eng3 + +[Aux_2_Mode_3_Select_GeneratorC] +IOMapping=ButtonAuxUpperCenter3 +Type=EventMapping +Subsystem=ERMLaser_2 +MessageID=SelectGeneratorC +Mode=ModeMFD2Eng3 + +[Aux_2_Mode_3_Select_GeneratorD] +IOMapping=ButtonAuxUpperCenter4 +Type=EventMapping +Subsystem=ERMLaser_2 +MessageID=SelectGeneratorD +Mode=ModeMFD2Eng3 + +[Aux_2_Mode_3_OPTION] +IOMapping=ButtonAuxUpperCenter5 +Type=EventMapping +Subsystem=ERMLaser_2 +MessageID=ToggleSeekVoltage +Mode=ModeMFD2Eng3 + +[Aux_2_Mode_3_ToggleGeneratorMode] +IOMapping=ButtonAuxUpperCenter6 +Type=EventMapping +Subsystem=ERMLaser_2 +MessageID=ToggleGeneratorMode +Mode=ModeMFD2Eng3 + +[Aux_2_Mode_3_ToggleCooling] +IOMapping=ButtonAuxUpperCenter7 +Type=EventMapping +Subsystem=ERMLaser_2 +MessageID=ToggleCooling +Mode=ModeMFD2Eng3 + +//--------------------------------------------- +// Aux 3 'Mode 4' mappings, AuxScreenNumber=12 +//--------------------------------------------- +[Aux_2_Mode_4_to_MFD2] +IOMapping=ButtonAuxUpperCenter8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Quad +Mode=ModeMFD2Eng4 + +[Aux_2_Mode_4_Select_GeneratorA] +IOMapping=ButtonAuxUpperCenter1 +Type=EventMapping +Subsystem=ERMLaser_3 +MessageID=SelectGeneratorA +Mode=ModeMFD2Eng4 + +[Aux_2_Mode_4_Select_GeneratorB] +IOMapping=ButtonAuxUpperCenter2 +Type=EventMapping +Subsystem=ERMLaser_3 +MessageID=SelectGeneratorB +Mode=ModeMFD2Eng4 + +[Aux_2_Mode_4_Select_GeneratorC] +IOMapping=ButtonAuxUpperCenter3 +Type=EventMapping +Subsystem=ERMLaser_3 +MessageID=SelectGeneratorC +Mode=ModeMFD2Eng4 + +[Aux_2_Mode_4_Select_GeneratorD] +IOMapping=ButtonAuxUpperCenter4 +Type=EventMapping +Subsystem=ERMLaser_3 +MessageID=SelectGeneratorD +Mode=ModeMFD2Eng4 + +[Aux_2_Mode_4_OPTION] +IOMapping=ButtonAuxUpperCenter5 +Type=EventMapping +Subsystem=ERMLaser_3 +MessageID=ToggleSeekVoltage +Mode=ModeMFD2Eng4 + +[Aux_2_Mode_4_ToggleGeneratorMode] +IOMapping=ButtonAuxUpperCenter6 +Type=EventMapping +Subsystem=ERMLaser_3 +MessageID=ToggleGeneratorMode +Mode=ModeMFD2Eng4 + +[Aux_2_Mode_4_ToggleCooling] +IOMapping=ButtonAuxUpperCenter7 +Type=EventMapping +Subsystem=ERMLaser_3 +MessageID=ToggleCooling +Mode=ModeMFD2Eng4 + + +//----------------------------------------------------------------------- +// Aux 3 mappings +//----------------------------------------------------------------------- +//------------------------------------------ +// Aux 3 'Quad screen' mappings +//------------------------------------------ +[MFD3_to_Mode_1] +IOMapping=ButtonAuxLowerRight1 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Eng1 +Mode=ModeMFD3Quad + +[MFD3_Configure_Trigger_1] +IOMapping=ButtonAuxLowerRight2 +Type=EventMapping +Subsystem=SRM6_2 +MessageID=ConfigureMappables +Mode=ModeMFD3Quad + +[MFD3_to_Mode_2] +IOMapping=ButtonAuxLowerRight3 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Eng2 +Mode=ModeMFD3Quad + +[MFD3_Configure_Trigger_2] +IOMapping=ButtonAuxLowerRight4 +Type=EventMapping +Subsystem=ERMLaser_1 +MessageID=ConfigureMappables +Mode=ModeMFD3Quad + +[MFD3_to_Mode_3] +IOMapping=ButtonAuxLowerRight5 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Eng3 +Mode=ModeMFD3Quad + +[MFD3_Configure_Trigger_3] +IOMapping=ButtonAuxLowerRight6 +Type=EventMapping +Subsystem=ERMLaser_5 +MessageID=ConfigureMappables +Mode=ModeMFD3Quad + +[MFD3_to_Mode_4] +IOMapping=ButtonAuxLowerRight7 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Eng4 +Mode=ModeMFD3Quad + +[MFD3_Configure_Trigger_4] +IOMapping=ButtonAuxLowerRight8 +Type=EventMapping +Subsystem=ERSLaser_2 +MessageID=ConfigureMappables +Mode=ModeMFD3Quad + +//-------------------------------------------- +// Aux 3 'Mode 1' mappings, AuxScreenNumber=9 +//-------------------------------------------- +[Aux_3_Mode_1_to_MFD3] +IOMapping=ButtonAuxLowerRight8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Quad +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_Select_GeneratorA] +IOMapping=ButtonAuxLowerRight1 +Type=EventMapping +Subsystem=SRM6_2 +MessageID=SelectGeneratorA +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_Select_GeneratorB] +IOMapping=ButtonAuxLowerRight2 +Type=EventMapping +Subsystem=SRM6_2 +MessageID=SelectGeneratorB +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_Select_GeneratorC] +IOMapping=ButtonAuxLowerRight3 +Type=EventMapping +Subsystem=SRM6_2 +MessageID=SelectGeneratorC +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_Select_GeneratorD] +IOMapping=ButtonAuxLowerRight4 +Type=EventMapping +Subsystem=SRM6_2 +MessageID=SelectGeneratorD +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_OPTION] +IOMapping=ButtonAuxLowerRight5 +Type=EventMapping +Subsystem=SRM6_2 +MessageID=EjectAmmo +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerRight6 +Type=EventMapping +Subsystem=SRM6_2 +MessageID=ToggleGeneratorMode +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_ToggleCooling] +IOMapping=ButtonAuxLowerRight7 +Type=EventMapping +Subsystem=SRM6_2 +MessageID=ToggleCooling +Mode=ModeMFD3Eng1 + +//-------------------------------------------- +// Aux 3 'Mode 2' mappings, AuxScreenNumber=10 +//-------------------------------------------- +[Aux_3_Mode_2_to_MFD3] +IOMapping=ButtonAuxLowerRight8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Quad +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_Select_GeneratorA] +IOMapping=ButtonAuxLowerRight1 +Type=EventMapping +Subsystem=ERMLaser_1 +MessageID=SelectGeneratorA +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_Select_GeneratorB] +IOMapping=ButtonAuxLowerRight2 +Type=EventMapping +Subsystem=ERMLaser_1 +MessageID=SelectGeneratorB +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_Select_GeneratorC] +IOMapping=ButtonAuxLowerRight3 +Type=EventMapping +Subsystem=ERMLaser_1 +MessageID=SelectGeneratorC +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_Select_GeneratorD] +IOMapping=ButtonAuxLowerRight4 +Type=EventMapping +Subsystem=ERMLaser_1 +MessageID=SelectGeneratorD +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_OPTION] +IOMapping=ButtonAuxLowerRight5 +Type=EventMapping +Subsystem=ERMLaser_1 +MessageID=ToggleSeekVoltage +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerRight6 +Type=EventMapping +Subsystem=ERMLaser_1 +MessageID=ToggleGeneratorMode +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_ToggleCooling] +IOMapping=ButtonAuxLowerRight7 +Type=EventMapping +Subsystem=ERMLaser_1 +MessageID=ToggleCooling +Mode=ModeMFD3Eng2 + +//-------------------------------------------- +// Aux 3 'Mode 3' mappings, AuxScreenNumber=11 +//-------------------------------------------- +[Aux_3_Mode_3_to_MFD3] +IOMapping=ButtonAuxLowerRight8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Quad +Mode=ModeMFD3Eng3 + +[Aux_3_Mode_3_Select_GeneratorA] +IOMapping=ButtonAuxLowerRight1 +Type=EventMapping +Subsystem=ERMLaser_5 +MessageID=SelectGeneratorA +Mode=ModeMFD3Eng3 + +[Aux_3_Mode_3_Select_GeneratorB] +IOMapping=ButtonAuxLowerRight2 +Type=EventMapping +Subsystem=ERMLaser_5 +MessageID=SelectGeneratorB +Mode=ModeMFD3Eng3 + +[Aux_3_Mode_3_Select_GeneratorC] +IOMapping=ButtonAuxLowerRight3 +Type=EventMapping +Subsystem=ERMLaser_5 +MessageID=SelectGeneratorC +Mode=ModeMFD3Eng3 + +[Aux_3_Mode_3_Select_GeneratorD] +IOMapping=ButtonAuxLowerRight4 +Type=EventMapping +Subsystem=ERMLaser_5 +MessageID=SelectGeneratorD +Mode=ModeMFD3Eng3 + +[Aux_3_Mode_3_OPTION] +IOMapping=ButtonAuxLowerRight5 +Type=EventMapping +Subsystem=ERMLaser_5 +MessageID=ToggleSeekVoltage +Mode=ModeMFD3Eng3 + +[Aux_3_Mode_3_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerRight6 +Type=EventMapping +Subsystem=ERMLaser_5 +MessageID=ToggleGeneratorMode +Mode=ModeMFD3Eng3 + +[Aux_3_Mode_3_ToggleCooling] +IOMapping=ButtonAuxLowerRight7 +Type=EventMapping +Subsystem=ERMLaser_5 +MessageID=ToggleCooling +Mode=ModeMFD3Eng3 + +//--------------------------------------------- +// Aux 3 'Mode 4' mappings, AuxScreenNumber=12 +//--------------------------------------------- +[Aux_3_Mode_4_to_MFD3] +IOMapping=ButtonAuxLowerRight8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Quad +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_Select_GeneratorA] +IOMapping=ButtonAuxLowerRight1 +Type=EventMapping +Subsystem=ERSLaser_2 +MessageID=SelectGeneratorA +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_Select_GeneratorB] +IOMapping=ButtonAuxLowerRight2 +Type=EventMapping +Subsystem=ERSLaser_2 +MessageID=SelectGeneratorB +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_Select_GeneratorC] +IOMapping=ButtonAuxLowerRight3 +Type=EventMapping +Subsystem=ERSLaser_2 +MessageID=SelectGeneratorC +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_Select_GeneratorD] +IOMapping=ButtonAuxLowerRight4 +Type=EventMapping +Subsystem=ERSLaser_2 +MessageID=SelectGeneratorD +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_OPTION] +IOMapping=ButtonAuxLowerRight5 +Type=EventMapping +Subsystem=ERSLaser_2 +MessageID=ToggleSeekVoltage +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerRight6 +Type=EventMapping +Subsystem=ERSLaser_2 +MessageID=ToggleGeneratorMode +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_ToggleCooling] +IOMapping=ButtonAuxLowerRight7 +Type=EventMapping +Subsystem=ERSLaser_2 +MessageID=ToggleCooling +Mode=ModeMFD3Eng4 +[ERLLaser_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERLLaser +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_3_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_3 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_4_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_4 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_5_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_5 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[SRM6_1_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=SRM6_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[SRM6_2_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=SRM6_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[Button_Sec_Extra_Light] +IOMapping=ButtonSecondary5 +Type=EventMapping +Subsystem=Searchlight2 +MessageID=ToggleLamp +Mode=ModeAlwaysActive diff --git a/CONTENT/BT/MODELS/BLHTHR.CTL b/CONTENT/BT/MODELS/BLHTHR.CTL new file mode 100644 index 0000000..4aa4255 --- /dev/null +++ b/CONTENT/BT/MODELS/BLHTHR.CTL @@ -0,0 +1,81 @@ +[StickPosition_JP] +IOMapping=JoystickPhysical +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=StickPosition +Mode=ModeAlwaysActive + +[TorsoLeft_BJHL] +IOMapping=ButtonJoystickHatLeft +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoLeft +Mode=ModeAlwaysActive + +[TorsoRight_BJHR] +IOMapping=ButtonJoystickHatRight +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoRight +Mode=ModeAlwaysActive + +[ERLLaser_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERLLaser +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_3_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_3 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_4_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_4 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_5_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_5 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[SRM6_1_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=SRM6_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[SRM6_2_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=SRM6_2 +AttributeID=TriggerState +Mode=ModeNonMapping diff --git a/CONTENT/BT/MODELS/BLKHAWK.DMG b/CONTENT/BT/MODELS/BLKHAWK.DMG new file mode 100644 index 0000000..f1ee7dd --- /dev/null +++ b/CONTENT/BT/MODELS/BLKHAWK.DMG @@ -0,0 +1,184 @@ +// This file is intentionally empty and MUST be read-only! +[dz_dtorso] +ExplosionTable=blhdmg.exp +DefaultEffectSiteName=siteedz_dtorso +WeaponDamagePoints=90 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.083333 +CriticalSubsystem=Condenser5 2 0.500000 +CriticalSubsystem=GeneratorD 10 0.500000 +CriticalSubsystem=Avionics 5 0.250000 +CriticalSubsystem=Torso 15 0.500000 +[dz_larm] +ExplosionTable=blhdmg.exp +DefaultEffectSiteName=siteedz_larm +WeaponDamagePoints=65 +VitalDamageZone=False +DescendOnDestruction=True +DestroySiblingsOnDestruction=True +CriticalSubsystem=Condenser4 2 0.500000 +[dz_ldleg] +ExplosionTable=blhdmg.exp +DefaultEffectSiteName=siteedz_ldleg +WeaponDamagePoints=70 +VitalDamageZone=True +LegDamageZone=LeftLeg +CriticalSubsystem=HeatSink 100 0.083333 +CriticalSubsystem=Myomers 15 0.166667 +[dz_lfoot] +ExplosionTable=blhdmg.exp +DefaultEffectSiteName=siteedz_lfoot +WeaponDamagePoints=65 +VitalDamageZone=True +LegDamageZone=LeftLeg +CriticalSubsystem=Myomers 15 0.166667 +[dz_lgun] +ExplosionTable=blhdmg.exp +DefaultEffectSiteName=siteedz_lgun +WeaponDamagePoints=63 +VitalDamageZone=False +DescendOnDestruction=True +CriticalSubsystem=Condenser4 2 0.500000 +CriticalSubsystem=ERLLaser 15 1.000000 +CriticalSubsystem=ERMLaser_2 20 1.000000 +CriticalSubsystem=ERSLaser_1 25 1.000000 +[dz_lsearchlight] +ExplosionTable=blhdmg.exp +DefaultEffectSiteName=siteedz_lsearchlight +WeaponDamagePoints=25 +VitalDamageZone=False +DescendOnDestruction=False +CriticalSubsystem=HUD 15 0.333333 +CriticalSubsystem=Searchlight 45 1.000000 +CriticalSubsystem=ThermalSight 30 0.500000 +[dz_ltorso] +ExplosionTable=blhdmg.exp +DefaultEffectSiteName=siteedz_ltorso +WeaponDamagePoints=106 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.083333 +CriticalSubsystem=Condenser1 2 0.500000 +CriticalSubsystem=GeneratorB 10 0.500000 +CriticalSubsystem=Avionics 5 0.250000 +CriticalSubsystem=ERMLaser_4 15 1.000000 +CriticalSubsystem=AmmoBinSRM6_1 15 1.000000 +CriticalSubsystem=SRM6_1 10 1.000000 +[dz_luleg] +ExplosionTable=blhdmg.exp +DefaultEffectSiteName=siteedz_luleg +WeaponDamagePoints=70 +VitalDamageZone=True +LegDamageZone=LeftLeg +CriticalSubsystem=HeatSink 100 0.083333 +CriticalSubsystem=Myomers 15 0.166667 +[dz_rarm] +ExplosionTable=blhdmg.exp +DefaultEffectSiteName=siteedz_rarm +WeaponDamagePoints=65 +VitalDamageZone=False +DescendOnDestruction=True +DestroySiblingsOnDestruction=True +CriticalSubsystem=Condenser6 2 0.500000 +[dz_rdleg] +ExplosionTable=blhdmg.exp +DefaultEffectSiteName=siteedz_rdleg +WeaponDamagePoints=70 +VitalDamageZone=True +LegDamageZone=RightLeg +CriticalSubsystem=HeatSink 100 0.083333 +CriticalSubsystem=Myomers 15 0.166667 +[dz_reardtorso] +ExplosionTable=blhdmg.exp +DefaultEffectSiteName=siteedz_reardtorso +WeaponDamagePoints=65 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.083333 +CriticalSubsystem=Reservoir 10 0.250000 +CriticalSubsystem=Condenser5 2 0.500000 +CriticalSubsystem=GeneratorC 10 0.500000 +CriticalSubsystem=Torso 15 0.500000 +[dz_rearltorso] +ExplosionTable=blhdmg.exp +DefaultEffectSiteName=siteedz_rearltorso +WeaponDamagePoints=65 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.083333 +CriticalSubsystem=Reservoir 10 0.250000 +CriticalSubsystem=Condenser1 2 0.500000 +CriticalSubsystem=GeneratorA 10 0.500000 +[dz_rearrtorso] +ExplosionTable=blhdmg.exp +DefaultEffectSiteName=siteedz_rearrtorso +WeaponDamagePoints=65 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.083333 +CriticalSubsystem=Reservoir 10 0.250000 +CriticalSubsystem=Condenser3 2 0.500000 +CriticalSubsystem=GeneratorA 10 0.500000 +[dz_rearutorso] +ExplosionTable=blhdmg.exp +DefaultEffectSiteName=siteedz_rearutorso +WeaponDamagePoints=75 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.083333 +CriticalSubsystem=Reservoir 10 0.250000 +CriticalSubsystem=Condenser2 2 0.500000 +CriticalSubsystem=GeneratorC 10 0.500000 +CriticalSubsystem=Gyroscope 30 0.500000 +[dz_rfoot] +ExplosionTable=blhdmg.exp +DefaultEffectSiteName=siteedz_rfoot +WeaponDamagePoints=65 +VitalDamageZone=True +LegDamageZone=RightLeg +CriticalSubsystem=Myomers 15 0.166667 +[dz_rgun] +ExplosionTable=blhdmg.exp +DefaultEffectSiteName=siteedz_rgun +WeaponDamagePoints=63 +VitalDamageZone=False +DescendOnDestruction=True +CriticalSubsystem=Condenser6 2 0.500000 +CriticalSubsystem=ERMLaser_1 15 1.000000 +CriticalSubsystem=ERMLaser_3 15 1.000000 +CriticalSubsystem=ERSLaser_2 15 1.000000 +[dz_rsearchlight] +ExplosionTable=blhdmg.exp +DefaultEffectSiteName=siteedz_rsearchlight +WeaponDamagePoints=25 +VitalDamageZone=False +DescendOnDestruction=False +CriticalSubsystem=HUD 15 0.333333 +CriticalSubsystem=Searchlight2 45 1.000000 +CriticalSubsystem=ThermalSight 30 0.500000 +[dz_rtorso] +ExplosionTable=blhdmg.exp +DefaultEffectSiteName=siteedz_rtorso +WeaponDamagePoints=106 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.083333 +CriticalSubsystem=Condenser3 2 0.500000 +CriticalSubsystem=GeneratorB 10 0.500000 +CriticalSubsystem=Avionics 5 0.250000 +CriticalSubsystem=ERMLaser_5 15 1.000000 +CriticalSubsystem=AmmoBinSRM6_2 15 1.000000 +CriticalSubsystem=SRM6_2 10 1.000000 +[dz_ruleg] +ExplosionTable=blhdmg.exp +DefaultEffectSiteName=siteedz_ruleg +WeaponDamagePoints=70 +VitalDamageZone=True +LegDamageZone=RightLeg +CriticalSubsystem=HeatSink 100 0.083333 +CriticalSubsystem=Myomers 15 0.166667 +[dz_utorso] +ExplosionTable=blhdmg.exp +DefaultEffectSiteName=siteedz_utorso +WeaponDamagePoints=124 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.083333 +CriticalSubsystem=Condenser2 2 0.500000 +CriticalSubsystem=GeneratorD 10 0.500000 +CriticalSubsystem=Avionics 5 0.250000 +CriticalSubsystem=Gyroscope 30 0.500000 +CriticalSubsystem=HUD 15 0.333333 diff --git a/CONTENT/BT/MODELS/BLKHAWK.MOD b/CONTENT/BT/MODELS/BLKHAWK.MOD new file mode 100644 index 0000000..b2f8630 --- /dev/null +++ b/CONTENT/BT/MODELS/BLKHAWK.MOD @@ -0,0 +1,136 @@ +[video] +skeleton=blh.skl +skeletona=blx.skl +destroyed=blhd.skl +//destroyeda=blxd.skl +dzm=blhskin.dzm +dzma=blxskin.dzm + +[audio] +internal=blkint.scp +external=blkext.scp + +[collision] +name=blh_cv.sld + +[gauge] +image=blh_ga.gim + +[gaugeMissionReview] +pixelmap=blh_mr.pcc + +[gamedata] +class=MechClassID +MoverMass=60000.0 +MomentOfInertia=1.75 3.125 1.75 +PositiveLinearDragCoefficients=0.14 0.4 0.07 +NegativeLinearDragCoefficients=0.14 0.2 0.08 +AngularDragCoefficients=0.3 0.5 0.3 +FrictionCoefficient=0.1 +ElasticityCoefficient=0.2 +MinimumBounceSpeed=0.2 +AnimationPrefix=blh +Subsystems=blkhawk.sub +DamageZones=blkhawk.dmg +DamageLookupTable=blhdmg.tbl +RelativeMechValue=1.0 +LookLeftAngle=60 +LookRightAngle=-60 +LookBackAngle=0 +LookFrontAngle=-10 +WalkingTurnRate=75 +RunningTurnRate=50 +DeathEffect=blhdead +CameraOffset=0.0 5.0 1.0 +DeathSplashDamage=5 +DeathSplashRadius=50 +TimeDelay=0.3 + +MaxAcceleration=30 +MaxUnstableAcceleration=45.0 + +UnstableAccelerationEffect=0.5 +UnstableGunTheEngineEffect=0.8 +UnstableSuperStopEffect=0.25 +UnstableHighVelocityEffect=0.25 +UnstableStopedTurnEffect=1.0 +SuperStopAcceleration=10.0 + +ThrottleAdjustment=1.0 + +UpdateTurnDegreeDiffrence=3 +UpdateTurnVelocityDiffrence=0.045 +UpdatePositionDiffrence=0.3 + +ShadowJointName=jointshadow + +[ControlMappings] +Thrustmaster=blhthr.ctl +L4=blhl4.ctl + +[animations] +animationtransition=blhswr.ani +animation=blhwwl.ani +animation=blhwwr.ani +animation=blhwsr.ani +animation=blhwsl.ani +animationtransition=blhwrl.ani +animationtransition=blhwrr.ani +animation=blhrrl.ani +animation=blhrrr.ani +animation=blhrwl.ani +animation=blhrwr.ani +animation=blhbmp.ani + +animationtransition=blhswri.ani +animation=blhwwli.ani +animation=blhwwri.ani +animation=blhwsri.ani +animation=blhwsli.ani +animationtransition=blhwrli.ani +animationtransition=blhwrri.ani +animation=blhrrli.ani +animation=blhrrri.ani +animation=blhrwli.ani +animation=blhrwri.ani +animation=blhbmpi.ani + +animation=blhbbl.ani +animation=blhbbr.ani +animation=blhbsl.ani +animation=blhbsr.ani +animationtransition=blhsbl.ani +animationtransition=blhsbr.ani +animation=blhbbli.ani +animation=blhbbri.ani +animation=blhbsli.ani +animation=blhbsri.ani +animationtransition=blhsbli.ani +animationtransition=blhsbri.ani + +animation=blhggl.ani +animation=blhggr.ani +animation=blhgsl.ani +animation=blhgsr.ani +animationtransition=blhwgl.ani +animationtransition=blhwgr.ani + +animation=blhggli.ani +animation=blhggri.ani +animation=blhgsli.ani +animation=blhgsri.ani +animationtransition=blhwgli.ani +animationtransition=blhwgri.ani + +animation=blhsqu.ani +animation=blhsqd.ani +animation=blhsqui.ani +animation=blhsqdi.ani + +animation=blhtrn.ani +animation=blhtrni.ani + +//animation=blhff.ani +//animation=blhfb.ani +//animation=blhfl.ani +//animation=blhfr.ani diff --git a/CONTENT/BT/MODELS/BLKHAWK.SUB b/CONTENT/BT/MODELS/BLKHAWK.SUB new file mode 100644 index 0000000..222c543 --- /dev/null +++ b/CONTENT/BT/MODELS/BLKHAWK.SUB @@ -0,0 +1,235 @@ +[HeatSink] +Type=HeatSinkClassID +Include=heatsnk.sub +HeatSinkCount=6 +SubsystemFlags=DontReplicateFlag + +[Reservoir] +Type=ReservoirClassID +Include=reserve.sub +HeatSink=HeatSink +SegmentPageName=siteeyepoint + +[Condenser1] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser2] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser3] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser4] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser5] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser6] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[GeneratorA] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser1 +SubsystemFlags=DontReplicateFlag + +[GeneratorB] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser2 +SubsystemFlags=DontReplicateFlag + +[GeneratorC] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser3 +SubsystemFlags=DontReplicateFlag + +[GeneratorD] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser5 +SubsystemFlags=DontReplicateFlag + +[Avionics] +Type=SensorClassID +Include=sensor.sub +HeatSink=Condenser2 +VoltageSource=GeneratorD +AuxScreenNumber=5 +SubsystemFlags=DontReplicateFlag + +AuxScreenPlacement=2 +[Myomers] +Type=MyomersClassID +Include=myomers.sub +HeatSink=Condenser5 +VoltageSource=GeneratorD +AuxScreenNumber=6 +SubsystemFlags=DontReplicateFlag + +AuxScreenPlacement=0 +[Gyroscope] +Type=GyroscopeClassID +Include=gyro.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag + +MechJoint=jointeye +[Torso] +Type=TorsoClassID +Include=torsolmt.sub +WatchedSubsystem=Myomers + +[HUD] +Type=HUDClassID +Include=hud.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag + +[Searchlight] +Type=SearchlightClassID +Include=srchlite.sub +WatchedSubsystem=Avionics +SegmentPageName=sitellight + +[ThermalSight] +Type=ThermalSightClassID +Include=Thermal.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag +[Searchlight2] +Type=SearchlightClassID +Include=srchlite.sub +WatchedSubsystem=Avionics +SegmentPageName=siterlight +[ERLLaser] +Type=EmitterClassID +Include=erllaser.sub +SegmentPageName=sitelugunport +PipPosition=1 +VoltageSource=GeneratorA +HeatSink=Condenser4 +AuxScreenNumber=1 +AuxScreenPlacement=4 +[ERMLaser_1] +Type=EmitterClassID +Include=ermlaser.sub +SegmentPageName=siterugunport +PipPosition=1 +VoltageSource=GeneratorC +HeatSink=Condenser6 +AuxScreenNumber=10 +AuxScreenPlacement=6 +[ERMLaser_2] +Type=EmitterClassID +Include=ermlaser.sub +SegmentPageName=sitelbgunport +PipPosition=1 +VoltageSource=GeneratorA +HeatSink=Condenser4 +AuxScreenNumber=7 +AuxScreenPlacement=4 +[ERMLaser_3] +Type=EmitterClassID +Include=ermlaser.sub +SegmentPageName=siterbgunport +PipPosition=2 +VoltageSource=GeneratorC +HeatSink=Condenser6 +AuxScreenNumber=8 +AuxScreenPlacement=6 +[ERMLaser_4] +Type=EmitterClassID +Include=ermlaser.sub +SegmentPageName=siteltorsoport +PipPosition=2 +VoltageSource=GeneratorB +HeatSink=Condenser1 +AuxScreenNumber=4 +AuxScreenPlacement=1 +[ERMLaser_5] +Type=EmitterClassID +Include=ermlaser.sub +SegmentPageName=sitertorsoport +PipPosition=3 +VoltageSource=GeneratorB +HeatSink=Condenser3 +AuxScreenNumber=11 +AuxScreenPlacement=3 +[ERSLaser_1] +Type=EmitterClassID +Include=erslaser.sub +SegmentPageName=siteldgunport +PipPosition=1 +VoltageSource=GeneratorA +HeatSink=Condenser4 +AuxScreenNumber=3 +AuxScreenPlacement=4 +[ERSLaser_2] +Type=EmitterClassID +Include=erslaser.sub +SegmentPageName=siterdgunport +PipPosition=2 +VoltageSource=GeneratorC +HeatSink=Condenser6 +AuxScreenNumber=12 +AuxScreenPlacement=6 +[AmmoBinSRM6_1] +Type=AmmoBinClassID +Include=ammsrm6.sub +WatchedSubsystem=SRM6_1 +AmmoCount=24 +[SRM6_1] +AmmoBin=AmmoBinSRM6_1 +Type=MissileLauncherClassID +Include=srm6.sub +SegmentPageName=siteltorsoport +PipPosition=1 +VoltageSource=GeneratorB +HeatSink=Condenser2 +AuxScreenNumber=2 +AuxScreenPlacement=1 +[AmmoBinSRM6_2] +Type=AmmoBinClassID +Include=ammsrm6.sub +WatchedSubsystem=SRM6_2 +AmmoCount=24 +[SRM6_2] +AmmoBin=AmmoBinSRM6_2 +Type=MissileLauncherClassID +Include=srm6.sub +SegmentPageName=sitertorsoport +PipPosition=2 +VoltageSource=GeneratorB +HeatSink=Condenser2 +AuxScreenNumber=9 +AuxScreenPlacement=3 +[MessageManager] +Type=SubsystemMessageManagerClassID +ExplosionModelFile=majhit 1.0 +TerrainHitExplosion=gndhit +RendererCompensateTime=0.3 +[MechTech] +Type=MechTechClassID +AlarmModel=mechalrm +SubsystemFlags=DontReplicateFlag diff --git a/CONTENT/BT/MODELS/BLKJACK.MOD b/CONTENT/BT/MODELS/BLKJACK.MOD new file mode 100644 index 0000000..fe77bf7 --- /dev/null +++ b/CONTENT/BT/MODELS/BLKJACK.MOD @@ -0,0 +1,134 @@ +[video] +skeleton=jak.skl +skeletona=jax.skl +destroyed=jakd.skl +dzm=jakskin.dzm +dzma=jaxskin.dzm + +[audio] +internal=jakint.scp +external=jakext.scp + +[collision] +name=jak_cv.sld + +[gauge] +image=jak_ga.gim + +[gaugeMissionReview] +pixelmap=jak_mr.pcc + +[gamedata] +class=MechClassID +MoverMass=50000.0 +MomentOfInertia=1.75 3.125 1.75 +PositiveLinearDragCoefficients=0.14 0.4 0.07 +NegativeLinearDragCoefficients=0.14 0.2 0.08 +AngularDragCoefficients=0.3 0.5 0.3 +FrictionCoefficient=0.1 +ElasticityCoefficient=0.2 +MinimumBounceSpeed=0.2 +MaxAcceleration=30.0 +AnimationPrefix=jak +Subsystems=blkjack.sub +DamageZones=blkjack.dmg +RelativeMechValue=1.0 +DamageLookupTable=jakdmg.tbl +LookLeftAngle=60 +LookRightAngle=-60 +LookBackAngle=0 +LookFrontAngle=-15 +WalkingTurnRate=55 +RunningTurnRate=30 +DeathEffect=thrdead +CameraOffset=0.0 15.0 30.0 +DeathSplashDamage=5 +DeathSplashRadius=50 +TimeDelay=0.3 + +MaxUnstableAcceleration=22.0 +UnstableAccelerationEffect=0.7 +UnstableGunTheEngineEffect=1.0 +UnstableSuperStopEffect=0.5 +UnstableHighVelocityEffect=0.4 +UnstableStopedTurnEffect=1.0 +SuperStopAcceleration=20.0 + +ThrottleAdjustment=1.0 + +UpdateTurnDegreeDiffrence=3 +UpdateTurnVelocityDiffrence=0.045 +UpdatePositionDiffrence=0.3 + +ShadowJointName=jointshadow + +[ControlMappings] +Thrustmaster=jakthr.ctl +L4=jakl4.ctl + + +[animations] +animationtransition=jakswr.ani +animation=jakwwl.ani +animation=jakwwr.ani +animation=jakwsr.ani +animation=jakwsl.ani +animationtransition=jakwrl.ani +animationtransition=jakwrr.ani +animation=jakrrl.ani +animation=jakrrr.ani +animation=jakrwl.ani +animation=jakrwr.ani +animation=jakbmp.ani +animation=jakbbl.ani +animation=jakbbr.ani +animation=jakbsl.ani +animation=jakbsr.ani +animationtransition=jaksbl.ani +animationtransition=jaksbr.ani + +animationtransition=jakswri.ani +animation=jakwwli.ani +animation=jakwwri.ani +animation=jakwsri.ani +animation=jakwsli.ani +animationtransition=jakwrli.ani +animationtransition=jakwrri.ani +animation=jakrrli.ani +animation=jakrrri.ani +animation=jakrwli.ani +animation=jakrwri.ani +animation=jakbmpi.ani +animation=jakbbli.ani +animation=jakbbri.ani +animation=jakbsli.ani +animation=jakbsri.ani +animationtransition=jaksbli.ani +animationtransition=jaksbri.ani + +animation=jakggl.ani +animation=jakggr.ani +animation=jakgsl.ani +animation=jakgsr.ani +animationtransition=jakwgl.ani +animationtransition=jakwgr.ani + +animation=jakggli.ani +animation=jakggri.ani +animation=jakgsli.ani +animation=jakgsri.ani +animationtransition=jakwgli.ani +animationtransition=jakwgri.ani + +animation=jaksqu.ani +animation=jaksqd.ani +animation=jaksqui.ani +animation=jaksqdi.ani + +animation=jaktrn.ani +animation=jaktrni.ani + +//animation=jakff.ani +//animation=jakfb.ani +//animation=jakfl.ani +//animation=jakfr.ani diff --git a/CONTENT/BT/MODELS/BLKJACK.SUB b/CONTENT/BT/MODELS/BLKJACK.SUB new file mode 100644 index 0000000..96b3508 --- /dev/null +++ b/CONTENT/BT/MODELS/BLKJACK.SUB @@ -0,0 +1,212 @@ +[HeatSink] +Type=HeatSinkClassID +Include=heatsnk.sub +HeatSinkCount=28 +SubsystemFlags=DontReplicateFlag + +[Reservoir] +Type=ReservoirClassID +Include=reserve.sub +HeatSink=HeatSink +SegmentPageName=siteeyepoint + +[Condenser1] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser2] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser3] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser4] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser5] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser6] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[GeneratorA] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser1 +SubsystemFlags=DontReplicateFlag + +[GeneratorB] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser2 +SubsystemFlags=DontReplicateFlag + +[GeneratorC] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser3 +SubsystemFlags=DontReplicateFlag + +[GeneratorD] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser5 +SubsystemFlags=DontReplicateFlag + +[Avionics] +Type=SensorClassID +Include=sensor.sub +HeatSink=Condenser2 +VoltageSource=GeneratorD +AuxScreenNumber=5 +SubsystemFlags=DontReplicateFlag + +AuxScreenPlacement=2 +[Myomers] +Type=MyomersClassID +Include=myomers.sub +HeatSink=Condenser5 +VoltageSource=GeneratorD +AuxScreenNumber=6 +SubsystemFlags=DontReplicateFlag + +AuxScreenPlacement=0 +[Gyroscope] +Type=GyroscopeClassID +Include=gyro.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag + +[Torso] +Type=TorsoClassID +Include=torso.sub +WatchedSubsystem=Myomers + +HorizontalRotationPerSecond=40 +VerticalRotationPerSecond=30 +HorizontalLimitRight=-140 +HorizontalLimitLeft=140 +[HUD] +Type=HUDClassID +Include=hud.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag + +[Searchlight] +Type=SearchlightClassID +Include=srchlite.sub +WatchedSubsystem=Avionics +SegmentPageName=sitelight + +[ThermalSight] +Type=ThermalSightClassID +Include=Thermal.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag +[AmmoBinGAUSS_1] +Type=AmmoBinClassID +Include=ammogaus.sub +WatchedSubsystem=GAUSS_1 +AmmoCount=8 +[GAUSS_1] +AmmoBin=AmmoBinGAUSS_1 +Type=ProjectileWeaponClassID +Include=gaussrfl.sub +SegmentPageName=sitelugunport +PipPosition=1 +VoltageSource=GeneratorA +HeatSink=Condenser4 +AuxScreenNumber=1 +AuxScreenPlacement=4 +[LLaser] +Type=EmitterClassID +Include=llaser.sub +SegmentPageName=siterugunport +PipPosition=1 +VoltageSource=GeneratorC +HeatSink=Condenser6 +AuxScreenNumber=10 +AuxScreenPlacement=6 +[ERSLaser_1] +Type=EmitterClassID +Include=erslaser.sub +SegmentPageName=sitemtorsoport +PipPosition=1 +VoltageSource=GeneratorB +HeatSink=Condenser2 +AuxScreenNumber=8 +AuxScreenPlacement=2 +[ERSLaser_2] +Type=EmitterClassID +Include=erslaser.sub +SegmentPageName=siteldgunport +PipPosition=2 +VoltageSource=GeneratorA +HeatSink=Condenser4 +AuxScreenNumber=3 +AuxScreenPlacement=4 +[ERSLaser_3] +Type=EmitterClassID +Include=erslaser.sub +SegmentPageName=siterdgunport +PipPosition=3 +VoltageSource=GeneratorC +HeatSink=Condenser6 +AuxScreenNumber=12 +AuxScreenPlacement=6 +[AmmoBinLRM15_1] +Type=AmmoBinClassID +Include=ammlrm15.sub +WatchedSubsystem=LRM15_1 +AmmoCount=16 +[LRM15_1] +AmmoBin=AmmoBinLRM15_1 +Type=MissileLauncherClassID +Include=lrm15.sub +SegmentPageName=sitelmissleport +PipPosition=1 +VoltageSource=GeneratorB +HeatSink=Condenser2 +AuxScreenNumber=2 +AuxScreenPlacement=1 +[AmmoBinLRM15_2] +Type=AmmoBinClassID +Include=ammlrm15.sub +WatchedSubsystem=LRM15_2 +AmmoCount=16 +[LRM15_2] +AmmoBin=AmmoBinLRM15_2 +Type=MissileLauncherClassID +Include=lrm15.sub +SegmentPageName=sitermissleport +PipPosition=2 +VoltageSource=GeneratorB +HeatSink=Condenser2 +AuxScreenNumber=9 +AuxScreenPlacement=3 +[MessageManager] +Type=SubsystemMessageManagerClassID +ExplosionModelFile=majhit 1.0 +TerrainHitExplosion=gndhit +RendererCompensateTime=0.3 +[MechTech] +Type=MechTechClassID +AlarmModel=mechalrm +SubsystemFlags=DontReplicateFlag diff --git a/CONTENT/BT/MODELS/BNK.MOD b/CONTENT/BT/MODELS/BNK.MOD new file mode 100644 index 0000000..043260e --- /dev/null +++ b/CONTENT/BT/MODELS/BNK.MOD @@ -0,0 +1,20 @@ +[video] +; +; bnk.mod - Bunker +; +object=bnk.bgf bnk_FR.bgf bnk_LP.bgf +rubble=bnkd.bgf bnkd_FR.bgf + +[collision] +name=bnk_cv.sld + +[gauge] +image=bnk_ga.gim + +[gamedata] +class=CulturalIconClassID +DamageZones=med.dmg +StoppingCollisionVolume=1 +ExplosionModelFile=smldead +TimeDelay=0.5 +//CrunchExplosionModelFile=stephit diff --git a/CONTENT/BT/MODELS/BPIP1.MOD b/CONTENT/BT/MODELS/BPIP1.MOD new file mode 100644 index 0000000..7069568 --- /dev/null +++ b/CONTENT/BT/MODELS/BPIP1.MOD @@ -0,0 +1,12 @@ +[video] +object=bpip1.bgf +rubble=bpip1d.bgf +[collision] +name=bpip1_cv.sld + +[gamedata] +class=CulturalIconClassID +DamageZones=med.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=meddead +TimeDelay=0.5 diff --git a/CONTENT/BT/MODELS/BULLDOG.MOD b/CONTENT/BT/MODELS/BULLDOG.MOD new file mode 100644 index 0000000..8b630a7 --- /dev/null +++ b/CONTENT/BT/MODELS/BULLDOG.MOD @@ -0,0 +1,18 @@ +[video] +object=BULLDOG.bgf bulls.bgf +rubble=BULLD.bgf + +[collision] +name=BULLDOG.sld + +[gauge] +image=bulldog.gim + +[gamedata] +class=CulturalIconClassID +DamageZones=trk.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=trkdead +TimeDelay=0.5 +CrunchExplosionModelFile=stephit + \ No newline at end of file diff --git a/CONTENT/BT/MODELS/BUTTEA.MOD b/CONTENT/BT/MODELS/BUTTEA.MOD new file mode 100644 index 0000000..219d736 --- /dev/null +++ b/CONTENT/BT/MODELS/BUTTEA.MOD @@ -0,0 +1,11 @@ +[video] +object=buttea.bgf + +[collision] +name=buttea_c.sld + +[gauge] +image=buttea_g.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/BUTTEB.MOD b/CONTENT/BT/MODELS/BUTTEB.MOD new file mode 100644 index 0000000..5a7fcbe --- /dev/null +++ b/CONTENT/BT/MODELS/BUTTEB.MOD @@ -0,0 +1,11 @@ +[video] +object=butteb.bgf + +[collision] +name=butteb_c.sld + +[gauge] +image=butteb_g.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/BUTTEC.MOD b/CONTENT/BT/MODELS/BUTTEC.MOD new file mode 100644 index 0000000..8f06bd6 --- /dev/null +++ b/CONTENT/BT/MODELS/BUTTEC.MOD @@ -0,0 +1,11 @@ +[video] +object=buttec.bgf + +[collision] +name=buttec_c.sld + +[gauge] +image=buttec_g.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/BUTTED.MOD b/CONTENT/BT/MODELS/BUTTED.MOD new file mode 100644 index 0000000..e5851b4 --- /dev/null +++ b/CONTENT/BT/MODELS/BUTTED.MOD @@ -0,0 +1,11 @@ +[video] +object=butted.bgf + +[collision] +name=butted_c.sld + +[gauge] +image=butted_g.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/BUTTEE.MOD b/CONTENT/BT/MODELS/BUTTEE.MOD new file mode 100644 index 0000000..a2f8278 --- /dev/null +++ b/CONTENT/BT/MODELS/BUTTEE.MOD @@ -0,0 +1,11 @@ +[video] +object=buttee.bgf + +[collision] +name=buttee_c.sld + +[gauge] +image=buttee_g.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/BUTTEEU.MOD b/CONTENT/BT/MODELS/BUTTEEU.MOD new file mode 100644 index 0000000..05c2091 --- /dev/null +++ b/CONTENT/BT/MODELS/BUTTEEU.MOD @@ -0,0 +1,5 @@ +[video] +object=buttee.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/BUTTEF.MOD b/CONTENT/BT/MODELS/BUTTEF.MOD new file mode 100644 index 0000000..94f74a5 --- /dev/null +++ b/CONTENT/BT/MODELS/BUTTEF.MOD @@ -0,0 +1,9 @@ +[video] +object=buttef.bgf + +[collision] +name=butted_c.sld + +[gamedata] +class=UnscalableTerrainClassID + \ No newline at end of file diff --git a/CONTENT/BT/MODELS/BWLK1.MOD b/CONTENT/BT/MODELS/BWLK1.MOD new file mode 100644 index 0000000..feca01f --- /dev/null +++ b/CONTENT/BT/MODELS/BWLK1.MOD @@ -0,0 +1,12 @@ +[video] +object=bwlk1.bgf + +[collision] +name=bwlk1_cv.sld + +[gamedata] +class=CulturalIconClassID +DamageZones=med.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=meddead +TimeDelay=0.5 diff --git a/CONTENT/BT/MODELS/CAL.SUB b/CONTENT/BT/MODELS/CAL.SUB new file mode 100644 index 0000000..9234599 --- /dev/null +++ b/CONTENT/BT/MODELS/CAL.SUB @@ -0,0 +1,215 @@ +[HeatSink] +Type=HeatSinkClassID +Include=heatsnk.sub +HeatSinkCount=18 +SubsystemFlags=DontReplicateFlag + +[Reservoir] +Type=ReservoirClassID +Include=reserve.sub +HeatSink=HeatSink +SegmentPageName=siteeyepoint + +[Condenser1] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser2] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser3] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser4] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser5] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser6] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[GeneratorA] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser1 +SubsystemFlags=DontReplicateFlag + +[GeneratorB] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser2 +SubsystemFlags=DontReplicateFlag + +[GeneratorC] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser3 +SubsystemFlags=DontReplicateFlag + +[GeneratorD] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser5 +SubsystemFlags=DontReplicateFlag + +[Avionics] +Type=SensorClassID +Include=sensor.sub +HeatSink=Condenser2 +VoltageSource=GeneratorD +AuxScreenNumber=5 +SubsystemFlags=DontReplicateFlag + +AuxScreenPlacement=2 +[Myomers] +Type=MyomersClassID +Include=myomers.sub +HeatSink=Condenser5 +VoltageSource=GeneratorD +AuxScreenNumber=6 +SubsystemFlags=DontReplicateFlag + +AuxScreenPlacement=0 +[Gyroscope] +Type=GyroscopeClassID +Include=gyro.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag + +[Torso] +Type=TorsoClassID +Include=torso.sub +WatchedSubsystem=Myomers + +HorizontalRotationPerSecond=40 +VerticalRotationPerSecond=30 +HorizontalLimitRight=-190 +HorizontalLimitLeft=190 +[HUD] +Type=HUDClassID +Include=hud.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag + +[Searchlight] +Type=SearchlightClassID +Include=srchlite.sub +WatchedSubsystem=Avionics +SegmentPageName=sitelight + +[ThermalSight] +Type=ThermalSightClassID +Include=Thermal.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag +[PPC_1] +Type=PPCClassID +Include=ppc.sub +SegmentPageName=sitelugunport +PipPosition=1 +VoltageSource=GeneratorA +HeatSink=Condenser4 +AuxScreenNumber=1 +AuxScreenPlacement=4 +[PPC_2] +Type=PPCClassID +Include=ppc.sub +SegmentPageName=siterugunport +PipPosition=2 +VoltageSource=GeneratorC +HeatSink=Condenser6 +AuxScreenNumber=10 +AuxScreenPlacement=6 +[ERSLaser_1] +Type=EmitterClassID +Include=erslaser.sub +SegmentPageName=siteldtorsoport +PipPosition=1 +VoltageSource=GeneratorB +HeatSink=Condenser2 +AuxScreenNumber=4 +AuxScreenPlacement=1 +[ERSLaser_2] +Type=EmitterClassID +Include=erslaser.sub +SegmentPageName=siterdtorsoport +PipPosition=2 +VoltageSource=GeneratorB +HeatSink=Condenser2 +AuxScreenNumber=11 +AuxScreenPlacement=3 +[ERSLaser_3] +Type=EmitterClassID +Include=erslaser.sub +SegmentPageName=siteldgunport +PipPosition=3 +VoltageSource=GeneratorA +HeatSink=Condenser4 +AuxScreenNumber=3 +AuxScreenPlacement=4 +[ERSLaser_4] +Type=EmitterClassID +Include=erslaser.sub +SegmentPageName=siterdgunport +PipPosition=4 +VoltageSource=GeneratorC +HeatSink=Condenser6 +AuxScreenNumber=12 +AuxScreenPlacement=6 +[AmmoBinLRM15_1] +Type=AmmoBinClassID +Include=ammlrm15.sub +WatchedSubsystem=LRM15_1 +AmmoCount=25 +[LRM15_1] +AmmoBin=AmmoBinLRM15_1 +Type=MissileLauncherClassID +Include=lrm15.sub +SegmentPageName=sitelmissleport +PipPosition=1 +VoltageSource=GeneratorB +HeatSink=Condenser1 +AuxScreenNumber=2 +AuxScreenPlacement=1 +[AmmoBinLRM15_2] +Type=AmmoBinClassID +Include=ammlrm15.sub +WatchedSubsystem=LRM15_2 +AmmoCount=25 +[LRM15_2] +AmmoBin=AmmoBinLRM15_2 +Type=MissileLauncherClassID +Include=lrm15.sub +SegmentPageName=sitermissleport +PipPosition=2 +VoltageSource=GeneratorB +HeatSink=Condenser3 +AuxScreenNumber=9 +AuxScreenPlacement=3 +[MessageManager] +Type=SubsystemMessageManagerClassID +ExplosionModelFile=majhit 1.0 +TerrainHitExplosion=gndhit +RendererCompensateTime=0.3 +[MechTech] +Type=MechTechClassID +AlarmModel=mechalrm +SubsystemFlags=DontReplicateFlag diff --git a/CONTENT/BT/MODELS/CALP.DMG b/CONTENT/BT/MODELS/CALP.DMG new file mode 100644 index 0000000..b884884 --- /dev/null +++ b/CONTENT/BT/MODELS/CALP.DMG @@ -0,0 +1,34 @@ +// This file is intentionally empty and MUST be read-only! +[dz_missle] +ExplosionTable=calpdmg.exp +DefaultEffectSiteName=siteedz_missle +WeaponDamagePoints=75 +VitalDamageZone=True +LegDamageZone=RightLeg +CriticalSubsystem=HeatSink 100 1.000000 +CriticalSubsystem=Reservoir 10 1.000000 +CriticalSubsystem=Condenser1 2 1.000000 +CriticalSubsystem=Condenser2 2 1.000000 +CriticalSubsystem=Condenser3 2 1.000000 +CriticalSubsystem=Condenser4 2 1.000000 +CriticalSubsystem=Condenser5 2 1.000000 +CriticalSubsystem=Condenser6 2 1.000000 +CriticalSubsystem=GeneratorA 10 1.000000 +CriticalSubsystem=GeneratorB 10 1.000000 +CriticalSubsystem=GeneratorC 10 1.000000 +CriticalSubsystem=GeneratorD 10 1.000000 +CriticalSubsystem=Myomers 15 1.000000 +CriticalSubsystem=Avionics 5 1.000000 +CriticalSubsystem=Gyroscope 30 1.000000 +CriticalSubsystem=HUD 15 1.000000 +CriticalSubsystem=Torso 15 1.000000 +CriticalSubsystem=Searchlight 45 1.000000 +CriticalSubsystem=ThermalSight 30 1.000000 +CriticalSubsystem=AmmoBinLRM20_1 15 1.000000 +CriticalSubsystem=LRM20_1 15 1.000000 +CriticalSubsystem=AmmoBinLRM20_2 15 1.000000 +CriticalSubsystem=LRM20_2 15 1.000000 +CriticalSubsystem=AmmoBinLRM20_3 15 1.000000 +CriticalSubsystem=LRM20_3 15 1.000000 +CriticalSubsystem=AmmoBinLRM20_4 15 1.000000 +CriticalSubsystem=LRM20_4 15 1.000000 diff --git a/CONTENT/BT/MODELS/CALP.MOD b/CONTENT/BT/MODELS/CALP.MOD new file mode 100644 index 0000000..7f46221 --- /dev/null +++ b/CONTENT/BT/MODELS/CALP.MOD @@ -0,0 +1,20 @@ +[video] +; +; calp.mod - Missile Launcher +; +object=calp.bgf calp_lp.bgf +rubble=calpd.bgf + +[collision] +name=calp_cv.sld + +[gauge] +image=calp_ga.gim + +[gamedata] +class=CulturalIconClassID +DamageZones=msl.dmg +StoppingCollisionVolume=1 +ExplosionModelFile=msldead +TimeDelay=0.5 +//CrunchExplosionModelFile=stephit diff --git a/CONTENT/BT/MODELS/CALPB.MOD b/CONTENT/BT/MODELS/CALPB.MOD new file mode 100644 index 0000000..2b66f3a --- /dev/null +++ b/CONTENT/BT/MODELS/CALPB.MOD @@ -0,0 +1,11 @@ +[video] +object=calpb.bgf + +[collision] +name=calpb_cv.sld + +[gauge] +image=calpb_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/CAMERA.MOD b/CONTENT/BT/MODELS/CAMERA.MOD new file mode 100644 index 0000000..d872177 --- /dev/null +++ b/CONTENT/BT/MODELS/CAMERA.MOD @@ -0,0 +1,13 @@ +[gamedata] +class=CameraShipClassID +MoverMass=150.0 +MomentOfInertia=1.75 3.125 1.75 +PositiveLinearDragCoefficients=0.14 0.4 0.07 +NegativeLinearDragCoefficients=0.14 0.2 0.08 +AngularDragCoefficients=9.0 9.0 9.0 +FrictionCoefficient=0.0 +ElasticityCoefficient=30.0 +MinimumBounceSpeed=0. +PreShowSpeed=25.0 +CameraMode=WinnerCam +CaptureRadius=275.0 diff --git a/CONTENT/BT/MODELS/CAMPOS.MOD b/CONTENT/BT/MODELS/CAMPOS.MOD new file mode 100644 index 0000000..4da77c0 --- /dev/null +++ b/CONTENT/BT/MODELS/CAMPOS.MOD @@ -0,0 +1,8 @@ +[video] +object=campos.bgf + +[gauge] +image=rivet_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/CANHIT.MOD b/CONTENT/BT/MODELS/CANHIT.MOD new file mode 100644 index 0000000..bc35420 --- /dev/null +++ b/CONTENT/BT/MODELS/CANHIT.MOD @@ -0,0 +1,11 @@ +[video] +object=11 + +[audio] +external=prjexp.scp + +[gamedata] +class=ExplosionClassID +ExplosionResourceTable=CanonExplosionResourceTable +// WARNING Audio Effects require ExplosionDuration >= 3.0 secs +ExplosionDuration=3.0 diff --git a/CONTENT/BT/MODELS/CANHITI.MOD b/CONTENT/BT/MODELS/CANHITI.MOD new file mode 100644 index 0000000..5555ee5 --- /dev/null +++ b/CONTENT/BT/MODELS/CANHITI.MOD @@ -0,0 +1,10 @@ +[video] +object=11 + +[audio] +external=prjexpi.scp + +[gamedata] +class=ExplosionClassID +// WARNING Audio Effects require ExplosionDuration >= 3.0 secs +ExplosionDuration=3.0 diff --git a/CONTENT/BT/MODELS/CB1.MOD b/CONTENT/BT/MODELS/CB1.MOD new file mode 100644 index 0000000..a3afefe --- /dev/null +++ b/CONTENT/BT/MODELS/CB1.MOD @@ -0,0 +1,8 @@ +[video] +object=cb1.bgf + +[collision] +name=fl1_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/CLD.MOD b/CONTENT/BT/MODELS/CLD.MOD new file mode 100644 index 0000000..8f91856 --- /dev/null +++ b/CONTENT/BT/MODELS/CLD.MOD @@ -0,0 +1,5 @@ +[video] +object=cld.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/COMTRUCK.MOD b/CONTENT/BT/MODELS/COMTRUCK.MOD new file mode 100644 index 0000000..df6988a --- /dev/null +++ b/CONTENT/BT/MODELS/COMTRUCK.MOD @@ -0,0 +1,17 @@ +[video] +object=COMTRUCK.bgf coms.bgf +rubble=COMD.bgf + +[collision] +name=COMTRUCK.sld + +[gauge] +image=comtruck.gim + +[gamedata] +class=CulturalIconClassID +DamageZones=trk.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=trkdead +TimeDelay=0.5 +CrunchExplosionModelFile=stephit diff --git a/CONTENT/BT/MODELS/CONDENSR.SUB b/CONTENT/BT/MODELS/CONDENSR.SUB new file mode 100644 index 0000000..1440e10 --- /dev/null +++ b/CONTENT/BT/MODELS/CONDENSR.SUB @@ -0,0 +1,14 @@ +[Condenser] +Type=CondenserClassID +ArmorValue=20.0 +StartingTemperature=77.0 +DegradationTemperature=2000.0 +FailureTemperature=2000.0 +ThermalConductance=3.15e5 +ThermalMass=4.2e5 +HeatSink=None +ValveSetting=.166667 +RefrigerationFactor=3.0 +WeaponDamagePoints=5.0 +VitalSubsystem=False +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT/MODELS/CONVOY.MOD b/CONTENT/BT/MODELS/CONVOY.MOD new file mode 100644 index 0000000..a77d75f --- /dev/null +++ b/CONTENT/BT/MODELS/CONVOY.MOD @@ -0,0 +1,10 @@ +[gamedata] +class=ScenarioRoleClassID +KillBonus=500.0 +DamageReceivedModifier=1.0 +DamageInflictedModifier=1.0 +DamageBias=1.0 +FriendlyFirePenalty=1.0 +ReturnFromDeath=100 +SpecialCaseDeathPenalty=500.0 + diff --git a/CONTENT/BT/MODELS/COOLANT.MOD b/CONTENT/BT/MODELS/COOLANT.MOD new file mode 100644 index 0000000..46fbdd2 --- /dev/null +++ b/CONTENT/BT/MODELS/COOLANT.MOD @@ -0,0 +1,17 @@ +[video] +object=COOLANT.bgf cools.bgf +rubble=COOLD.bgf + +[collision] +name=COOLANT.sld + +[gauge] +image=coolant.gim + +[gamedata] +class=CulturalIconClassID +DamageZones=trk.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=trkdead +TimeDelay=0.5 +CrunchExplosionModelFile=stephit diff --git a/CONTENT/BT/MODELS/CRT.MOD b/CONTENT/BT/MODELS/CRT.MOD new file mode 100644 index 0000000..26e51b6 --- /dev/null +++ b/CONTENT/BT/MODELS/CRT.MOD @@ -0,0 +1,18 @@ +[video] +; +; crt.mod - Crate +; +object=crt.bgf +rubble=crtd.bgf crtd_FR.bgf + +[collision] +name=crt_cv.sld + +[gamedata] +class=CulturalIconClassID +DamageZones=sml.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=smldead +TimeDelay=0.5 +CrunchExplosionModelFile=smldead + diff --git a/CONTENT/BT/MODELS/CTARMAC.MOD b/CONTENT/BT/MODELS/CTARMAC.MOD new file mode 100644 index 0000000..ea099af --- /dev/null +++ b/CONTENT/BT/MODELS/CTARMAC.MOD @@ -0,0 +1,6 @@ +[video] +object=ctarmac.bgf ctar_lp.bgf + +[gamedata] +class=UnscalableTerrainClassID + \ No newline at end of file diff --git a/CONTENT/BT/MODELS/DAM1HIT.MOD b/CONTENT/BT/MODELS/DAM1HIT.MOD new file mode 100644 index 0000000..2f1bd14 --- /dev/null +++ b/CONTENT/BT/MODELS/DAM1HIT.MOD @@ -0,0 +1,7 @@ +[video] +object=1002 + +[gamedata] +class=ExplosionClassID +ExplosionResourceTable=Dam1ExplosionResourceTable +ExplosionDuration=10.0 diff --git a/CONTENT/BT/MODELS/DAM1HITI.MOD b/CONTENT/BT/MODELS/DAM1HITI.MOD new file mode 100644 index 0000000..953e0b8 --- /dev/null +++ b/CONTENT/BT/MODELS/DAM1HITI.MOD @@ -0,0 +1,6 @@ +[video] +object=1009 + +[gamedata] +class=ExplosionClassID +ExplosionDuration=10.0 diff --git a/CONTENT/BT/MODELS/DAM2HIT.MOD b/CONTENT/BT/MODELS/DAM2HIT.MOD new file mode 100644 index 0000000..4241d45 --- /dev/null +++ b/CONTENT/BT/MODELS/DAM2HIT.MOD @@ -0,0 +1,7 @@ +[video] +object=1003 + +[gamedata] +class=ExplosionClassID +ExplosionResourceTable=Dam2ExplosionResourceTable +ExplosionDuration=10.0 diff --git a/CONTENT/BT/MODELS/DAM2HITI.MOD b/CONTENT/BT/MODELS/DAM2HITI.MOD new file mode 100644 index 0000000..52c103c --- /dev/null +++ b/CONTENT/BT/MODELS/DAM2HITI.MOD @@ -0,0 +1,6 @@ +[video] +object=1010 + +[gamedata] +class=ExplosionClassID +ExplosionDuration=10.0 diff --git a/CONTENT/BT/MODELS/DAM3EXP.MOD b/CONTENT/BT/MODELS/DAM3EXP.MOD new file mode 100644 index 0000000..a9d51c6 --- /dev/null +++ b/CONTENT/BT/MODELS/DAM3EXP.MOD @@ -0,0 +1,6 @@ +[audio] +external=dgbexp.scp + +[gamedata] +class=ExplosionClassID +ExplosionDuration=8.0 diff --git a/CONTENT/BT/MODELS/DAM3HIT.MOD b/CONTENT/BT/MODELS/DAM3HIT.MOD new file mode 100644 index 0000000..32744dc --- /dev/null +++ b/CONTENT/BT/MODELS/DAM3HIT.MOD @@ -0,0 +1,10 @@ +[video] +object=1004 + +[audio] +model=dam3exp + +[gamedata] +class=ExplosionClassID +ExplosionResourceTable=Dam3ExplosionResourceTable +ExplosionDuration=10.0 diff --git a/CONTENT/BT/MODELS/DAM3HITI.MOD b/CONTENT/BT/MODELS/DAM3HITI.MOD new file mode 100644 index 0000000..f1cd7c5 --- /dev/null +++ b/CONTENT/BT/MODELS/DAM3HITI.MOD @@ -0,0 +1,6 @@ +[video] +object=1011 + +[gamedata] +class=ExplosionClassID +ExplosionDuration=10.0 diff --git a/CONTENT/BT/MODELS/DAM4EXP.MOD b/CONTENT/BT/MODELS/DAM4EXP.MOD new file mode 100644 index 0000000..e5e2a81 --- /dev/null +++ b/CONTENT/BT/MODELS/DAM4EXP.MOD @@ -0,0 +1,6 @@ +[audio] +external=dgaexp.scp + +[gamedata] +class=ExplosionClassID +ExplosionDuration=15.0 diff --git a/CONTENT/BT/MODELS/DAM4EXPI.MOD b/CONTENT/BT/MODELS/DAM4EXPI.MOD new file mode 100644 index 0000000..84ebc7e --- /dev/null +++ b/CONTENT/BT/MODELS/DAM4EXPI.MOD @@ -0,0 +1,6 @@ +[audio] +external=dgcexp.scp + +[gamedata] +class=ExplosionClassID +ExplosionDuration=15.0 diff --git a/CONTENT/BT/MODELS/DAM4HIT.MOD b/CONTENT/BT/MODELS/DAM4HIT.MOD new file mode 100644 index 0000000..6d552cb --- /dev/null +++ b/CONTENT/BT/MODELS/DAM4HIT.MOD @@ -0,0 +1,10 @@ +[video] +object=1005 + +[audio] +model=dam4exp + +[gamedata] +class=ExplosionClassID +ExplosionResourceTable=Dam4ExplosionResourceTable +ExplosionDuration=10.0 diff --git a/CONTENT/BT/MODELS/DAM4HITI.MOD b/CONTENT/BT/MODELS/DAM4HITI.MOD new file mode 100644 index 0000000..5aac226 --- /dev/null +++ b/CONTENT/BT/MODELS/DAM4HITI.MOD @@ -0,0 +1,9 @@ +[video] +object=1012 + +[audio] +model=dam4expi + +[gamedata] +class=ExplosionClassID +ExplosionDuration=10.0 diff --git a/CONTENT/BT/MODELS/DAVION.MOD b/CONTENT/BT/MODELS/DAVION.MOD new file mode 100644 index 0000000..0fa27a8 --- /dev/null +++ b/CONTENT/BT/MODELS/DAVION.MOD @@ -0,0 +1,2 @@ +[gamedata] +class=BTTeamClassID diff --git a/CONTENT/BT/MODELS/DECOY.MOD b/CONTENT/BT/MODELS/DECOY.MOD new file mode 100644 index 0000000..286683e --- /dev/null +++ b/CONTENT/BT/MODELS/DECOY.MOD @@ -0,0 +1,8 @@ +[gamedata] +class=ScenarioRoleClassID +KillBonus=500.0 +DamageReceivedModifier=1.0 +DamageInflictedModifier=1.0 +DamageBias=1.0 +FriendlyFirePenalty=1.0 +ReturnFromDeath=100 diff --git a/CONTENT/BT/MODELS/DEFENDER.MOD b/CONTENT/BT/MODELS/DEFENDER.MOD new file mode 100644 index 0000000..286683e --- /dev/null +++ b/CONTENT/BT/MODELS/DEFENDER.MOD @@ -0,0 +1,8 @@ +[gamedata] +class=ScenarioRoleClassID +KillBonus=500.0 +DamageReceivedModifier=1.0 +DamageInflictedModifier=1.0 +DamageBias=1.0 +FriendlyFirePenalty=1.0 +ReturnFromDeath=100 diff --git a/CONTENT/BT/MODELS/DESTHIT.MOD b/CONTENT/BT/MODELS/DESTHIT.MOD new file mode 100644 index 0000000..d918df9 --- /dev/null +++ b/CONTENT/BT/MODELS/DESTHIT.MOD @@ -0,0 +1,7 @@ +[video] +object=1008 + +[gamedata] +class=ExplosionClassID +ExplosionResourceTable=DestroyedExplosionResourceTable +ExplosionDuration=3.0 diff --git a/CONTENT/BT/MODELS/DESTHITI.MOD b/CONTENT/BT/MODELS/DESTHITI.MOD new file mode 100644 index 0000000..e163dde --- /dev/null +++ b/CONTENT/BT/MODELS/DESTHITI.MOD @@ -0,0 +1,6 @@ +[video] +object=1013 + +[gamedata] +class=ExplosionClassID +ExplosionDuration=3.0 diff --git a/CONTENT/BT/MODELS/DFLTROLE.MOD b/CONTENT/BT/MODELS/DFLTROLE.MOD new file mode 100644 index 0000000..e61558f --- /dev/null +++ b/CONTENT/BT/MODELS/DFLTROLE.MOD @@ -0,0 +1,10 @@ +[gamedata] +class=ScenarioRoleClassID +KillBonus=500.0 +DamageReceivedModifier=0.0 +DamageInflictedModifier=1.0 +DamageBias=1.0 +FriendlyFirePenalty=1.0 +ReturnFromDeath=1000 +SpecialCaseDeathPenalty=500.0 + diff --git a/CONTENT/BT/MODELS/DG100.MOD b/CONTENT/BT/MODELS/DG100.MOD new file mode 100644 index 0000000..7cffe4e --- /dev/null +++ b/CONTENT/BT/MODELS/DG100.MOD @@ -0,0 +1,9 @@ +[video] +object=dg100.bgf + +[collision] +name=gr100_cv.sld + +[gamedata] +class=UnscalableTerrainClassID + \ No newline at end of file diff --git a/CONTENT/BT/MODELS/DG100A.MOD b/CONTENT/BT/MODELS/DG100A.MOD new file mode 100644 index 0000000..5bd7c3d --- /dev/null +++ b/CONTENT/BT/MODELS/DG100A.MOD @@ -0,0 +1,8 @@ +[video] +object=dg100.bgf + +[collision] +name=gr100acv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/DHILLG1.MOD b/CONTENT/BT/MODELS/DHILLG1.MOD new file mode 100644 index 0000000..c0768a6 --- /dev/null +++ b/CONTENT/BT/MODELS/DHILLG1.MOD @@ -0,0 +1,11 @@ +[video] +object=dhillg1.bgf + +[collision] +name=hillg1_c.sld + +[gauge] +image=hillg1_g.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/DHILLG2.MOD b/CONTENT/BT/MODELS/DHILLG2.MOD new file mode 100644 index 0000000..2f118ab --- /dev/null +++ b/CONTENT/BT/MODELS/DHILLG2.MOD @@ -0,0 +1,11 @@ +[video] +object=dhillg2.bgf + +[collision] +name=hillg2_c.sld + +[gauge] +image=hillg2_g.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/DHILLG3.MOD b/CONTENT/BT/MODELS/DHILLG3.MOD new file mode 100644 index 0000000..2442bae --- /dev/null +++ b/CONTENT/BT/MODELS/DHILLG3.MOD @@ -0,0 +1,11 @@ +[video] +object=dhillg3.bgf + +[collision] +name=hillg3_c.sld + +[gauge] +image=hillg3_g.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/DISH.MOD b/CONTENT/BT/MODELS/DISH.MOD new file mode 100644 index 0000000..d6a9efa --- /dev/null +++ b/CONTENT/BT/MODELS/DISH.MOD @@ -0,0 +1,17 @@ +[video] +object=dish.bgf dish_lp.bgf +rubble=dishD.bgf + +[collision] +name=dish_cv.sld + +[gauge] +image=dish_ga.gim + +[gamedata] +class=CulturalIconClassID +DamageZones=trk.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=trkdead +TimeDelay=0.5 +CrunchExplosionModelFile=stephit diff --git a/CONTENT/BT/MODELS/DMG.BLD b/CONTENT/BT/MODELS/DMG.BLD new file mode 100644 index 0000000..7dae822 --- /dev/null +++ b/CONTENT/BT/MODELS/DMG.BLD @@ -0,0 +1 @@ +// This file is intentionally empty and MUST be read-only! \ No newline at end of file diff --git a/CONTENT/BT/MODELS/DOZER.MOD b/CONTENT/BT/MODELS/DOZER.MOD new file mode 100644 index 0000000..2927a2e --- /dev/null +++ b/CONTENT/BT/MODELS/DOZER.MOD @@ -0,0 +1,14 @@ +[video] +object=DOZER.bgf dozers.bgf +rubble=DOZD.bgf + +[collision] +name=DOZER.sld + +[gamedata] +class=CulturalIconClassID +DamageZones=trk.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=trkdead +TimeDelay=0.5 +CrunchExplosionModelFile=stephit diff --git a/CONTENT/BT/MODELS/DRESF.MOD b/CONTENT/BT/MODELS/DRESF.MOD new file mode 100644 index 0000000..1249cde --- /dev/null +++ b/CONTENT/BT/MODELS/DRESF.MOD @@ -0,0 +1,8 @@ +[video] +object=dresf.bgf + +[collision] +name=fl1_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/DSKY.MOD b/CONTENT/BT/MODELS/DSKY.MOD new file mode 100644 index 0000000..631e550 --- /dev/null +++ b/CONTENT/BT/MODELS/DSKY.MOD @@ -0,0 +1,6 @@ +[video] +object=dsky.bgf + +[gamedata] +class=UnscalableTerrainClassID + \ No newline at end of file diff --git a/CONTENT/BT/MODELS/DTARMAC.MOD b/CONTENT/BT/MODELS/DTARMAC.MOD new file mode 100644 index 0000000..5483f46 --- /dev/null +++ b/CONTENT/BT/MODELS/DTARMAC.MOD @@ -0,0 +1,6 @@ +[video] +object=dtarmac.bgf dtar_lp.bgf + +[gamedata] +class=UnscalableTerrainClassID + \ No newline at end of file diff --git a/CONTENT/BT/MODELS/DUMB.MOD b/CONTENT/BT/MODELS/DUMB.MOD new file mode 100644 index 0000000..b731259 --- /dev/null +++ b/CONTENT/BT/MODELS/DUMB.MOD @@ -0,0 +1,24 @@ +[video] +object=tms_c.bgf + +[audio] +external=msltvl.scp + +[gauge] +image=rivet_ga.gim + +[gamedata] +class=MissileClassID +MoverMass=50.0 +MomentOfInertia=0.1 0.1 0.001 +PositiveLinearDragCoefficients=0.001 0.001 .001 +NegativeLinearDragCoefficients=0.001 0.001 .001 +AngularDragCoefficients=0.05 0.05 0.001 +FrictionCoefficient=0.0 +ElasticityCoefficient=0.0 +MinimumBounceSpeed=0.0 +MaxThrusterRotationRate=0.0 +BurnTime=10 +ThrusterAcceleration=600.0 +ThrusterClimb=0.0 +SplashRadius=30.0 diff --git a/CONTENT/BT/MODELS/DUMB2.SUB b/CONTENT/BT/MODELS/DUMB2.SUB new file mode 100644 index 0000000..6d8f928 --- /dev/null +++ b/CONTENT/BT/MODELS/DUMB2.SUB @@ -0,0 +1,33 @@ +[MissileLauncher] +Type=MissileLauncherClassID +StartingTemperature=77.0 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +ThermalConductance=4.74e4 +ThermalMass=2.37e4 +WeaponDamagePoints=3.0 +HeatSink=None +AmmoBin=None +VoltageSource=None +MuzzleVelocity=0.0 0.0 100.0 +TracerInterval=1 +ExplosionModelFile=mslhit +RechargeRate=2.0 +DamageAmount=10.0 +DamageType=ExplosiveDamage +WeaponRange=800.0 +HeatCostToFire=1.5e7 +VitalSubsystem=False +ThermalResistivityCoefficient=0.00024 +MissileCount=2 +AuxScreenNumber=0 +AuxScreenLabel=qstrk2.pcc +EngScreenLabel=estrk2.pcc +MinTimeOfFlight=0.5 +MinVoltagePercentToFire=0.30 +MinJamChance=0.05 +PipPosition=1 +PipColor=0.6 0.4 0.0 +PipExtendedRange=False +StartTime=1.0 +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT/MODELS/DUMB4.SUB b/CONTENT/BT/MODELS/DUMB4.SUB new file mode 100644 index 0000000..7578773 --- /dev/null +++ b/CONTENT/BT/MODELS/DUMB4.SUB @@ -0,0 +1,33 @@ +[MissileLauncher] +Type=MissileLauncherClassID +StartingTemperature=77.0 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +ThermalConductance=4.74e4 +ThermalMass=4.74e4 +WeaponDamagePoints=3.0 +HeatSink=None +AmmoBin=None +VoltageSource=None +MuzzleVelocity=0.0 0.0 100.0 +TracerInterval=1 +ExplosionModelFile=mslhit +RechargeRate=3.0 +DamageAmount=20.0 +DamageType=ExplosiveDamage +WeaponRange=800.0 +HeatCostToFire=3e7 +VitalSubsystem=False +ThermalResistivityCoefficient=0.00024 +MissileCount=4 +AuxScreenNumber=0 +AuxScreenLabel=qstrk4.pcc +EngScreenLabel=estrk4.pcc +MinTimeOfFlight=0.5 +MinVoltagePercentToFire=0.30 +MinJamChance=0.05 +PipPosition=1 +PipColor=0.6 0.4 0.0 +PipExtendedRange=False +StartTime=1.0 +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT/MODELS/DUMB6.SUB b/CONTENT/BT/MODELS/DUMB6.SUB new file mode 100644 index 0000000..819a317 --- /dev/null +++ b/CONTENT/BT/MODELS/DUMB6.SUB @@ -0,0 +1,33 @@ +[MissileLauncher] +Type=MissileLauncherClassID +StartingTemperature=77.0 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +ThermalConductance=4.74e4 +ThermalMass=7.89e4 +WeaponDamagePoints=3.0 +HeatSink=None +AmmoBin=None +VoltageSource=None +MuzzleVelocity=0.0 0.0 100.0 +TracerInterval=1 +ExplosionModelFile=mslhit +RechargeRate=5.0 +DamageAmount=35.0 +DamageType=ExplosiveDamage +WeaponRange=800.0 +HeatCostToFire=5e7 +VitalSubsystem=False +ThermalResistivityCoefficient=0.00024 +MissileCount=6 +AuxScreenNumber=0 +AuxScreenLabel=qstrk6.pcc +EngScreenLabel=estrk6.pcc +MinTimeOfFlight=0.5 +MinVoltagePercentToFire=0.30 +MinJamChance=0.05 +PipPosition=1 +PipColor=0.6 0.4 0.0 +PipExtendedRange=False +StartTime=1.0 +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT/MODELS/ERLLASER.SUB b/CONTENT/BT/MODELS/ERLLASER.SUB new file mode 100644 index 0000000..8a8c131 --- /dev/null +++ b/CONTENT/BT/MODELS/ERLLASER.SUB @@ -0,0 +1,36 @@ +[Emitter] +Type=EmitterClassID +StartingTemperature=77.0 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +ThermalConductance=7.01e5 +ThermalMass=1.34e5 +WeaponDamagePoints=3.0 +HeatSink=None +VoltageSource=None +//ThresholdVoltagePercent=0.95 +ExplosionModelFile=lzrhit +DamageAmount=6.0 +DamageType=LaserDamage +WeaponRange=750.0 +RechargeRate=4.0 +DischargeTime=0.2 +AmmoModelFile=None +VitalSubsystem=False +VideoObjectName=ermlaser.bgf +GraphicLength=2000 +HeatCostToFire=8.5 +ThermalResistivityCoefficient=0.0024 +AuxScreenNumber=0 +AuxScreenLabel=qerllas.pcc +EngScreenLabel=eerllas.pcc +SeekVoltage=0.6 +SeekVoltage=0.7 +SeekVoltage=0.8 +SeekVoltage=0.99 +SeekVoltageRecommendedIndex=2 +PipPosition=1 +PipColor=1.0 0.0 0.0 +PipExtendedRange=True +StartTime=1.0 +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT/MODELS/ERMLASER.SUB b/CONTENT/BT/MODELS/ERMLASER.SUB new file mode 100644 index 0000000..72cec17 --- /dev/null +++ b/CONTENT/BT/MODELS/ERMLASER.SUB @@ -0,0 +1,36 @@ +[Emitter] +Type=EmitterClassID +StartingTemperature=77.0 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +ThermalConductance=8.29e5 +ThermalMass=5.53e4 +WeaponDamagePoints=3.0 +HeatSink=None +VoltageSource=None +//ThresholdVoltagePercent=0.95 +ExplosionModelFile=lzrhit +DamageAmount=3.5 +DamageType=LaserDamage +WeaponRange=500.0 +RechargeRate=2.0 +DischargeTime=0.2 +AmmoModelFile=None +VitalSubsystem=False +VideoObjectName=ermlaser.bgf +GraphicLength=2000 +HeatCostToFire=3.5 +ThermalResistivityCoefficient=0.0024 +AuxScreenNumber=0 +AuxScreenLabel=qermlas.pcc +EngScreenLabel=eermlas.pcc +SeekVoltage=0.6 +SeekVoltage=0.7 +SeekVoltage=0.8 +SeekVoltage=0.99 +SeekVoltageRecommendedIndex=2 +PipPosition=1 +PipColor=1.0 0.0 0.0 +PipExtendedRange=True +StartTime=1.0 +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT/MODELS/ERPPC.SUB b/CONTENT/BT/MODELS/ERPPC.SUB new file mode 100644 index 0000000..f88b83f --- /dev/null +++ b/CONTENT/BT/MODELS/ERPPC.SUB @@ -0,0 +1,36 @@ +[PPC] +Type=PPCClassID +StartingTemperature=77.0 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +ThermalConductance=1.26e6 +ThermalMass=2.53e5 +WeaponDamagePoints=3.0 +HeatSink=None +VoltageSource=None +//ThresholdVoltagePercent=0.95 +AmmoModelFile=None +ExplosionModelFile=ppchit +DamageAmount=16.0 +DamageType=EnergyDamage +WeaponRange=950.0 +RechargeRate=5.0 +DischargeTime=0.2 +VitalSubsystem=False +VideoObjectName=ppc.bgf +GraphicLength=2000 +HeatCostToFire=16.0 +ThermalResistivityCoefficient=0.0024 +AuxScreenNumber=0 +AuxScreenLabel=qerppc.pcc +EngScreenLabel=eerppc.pcc +SeekVoltage=0.6 +SeekVoltage=0.7 +SeekVoltage=0.8 +SeekVoltage=0.99 +SeekVoltageRecommendedIndex=2 +PipPosition=1 +PipColor=0 0 1 +PipExtendedRange=False +StartTime=1.0 +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT/MODELS/ERSLASER.SUB b/CONTENT/BT/MODELS/ERSLASER.SUB new file mode 100644 index 0000000..dcade85 --- /dev/null +++ b/CONTENT/BT/MODELS/ERSLASER.SUB @@ -0,0 +1,35 @@ +[Emitter] +Type=EmitterClassID +StartingTemperature=77.0 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +ThermalConductance=7.10e5 +ThermalMass=2.37e4 +WeaponDamagePoints=3.0 +HeatSink=None +VoltageSource=None +ExplosionModelFile=lzrhit +DamageAmount=2.0 +DamageType=LaserDamage +WeaponRange=225.0 +RechargeRate=1.0 +DischargeTime=0.2 +AmmoModelFile=None +VitalSubsystem=False +VideoObjectName=ermlaser.bgf +GraphicLength=2000 +HeatCostToFire=1.5 +ThermalResistivityCoefficient=0.0024 +AuxScreenNumber=0 +AuxScreenLabel=qerslas.pcc +EngScreenLabel=eerslas.pcc +SeekVoltage=0.6 +SeekVoltage=0.7 +SeekVoltage=0.8 +SeekVoltage=0.99 +SeekVoltageRecommendedIndex=2 +PipPosition=1 +PipColor=1.0 0.0 0.0 +PipExtendedRange=True +StartTime=1.0 +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT/MODELS/EXPLODE.MOD b/CONTENT/BT/MODELS/EXPLODE.MOD new file mode 100644 index 0000000..a13f1f1 --- /dev/null +++ b/CONTENT/BT/MODELS/EXPLODE.MOD @@ -0,0 +1,6 @@ +[video] +object=6 + +[gamedata] +class=ExplosionClassID +ExplosionDuration=3.0 diff --git a/CONTENT/BT/MODELS/EXPLODE.ONL b/CONTENT/BT/MODELS/EXPLODE.ONL new file mode 100644 index 0000000..b1906de --- /dev/null +++ b/CONTENT/BT/MODELS/EXPLODE.ONL @@ -0,0 +1,58 @@ +# +#---------------------------------------------------------------- +# Static objects for bt +#---------------------------------------------------------------- +# + +# +#---------------------------------------------------------------- +# Compiled symbols +# HACK - use symbols currently compiled for audio, should have +# symbols for entire game or separate for models +#---------------------------------------------------------------- +# +[include] +file=audio\symbols.scp + +# +#---------------------------------------------------------------- +# Explosion Resource Tables +#---------------------------------------------------------------- +# + +[ExplosionResourceTable] +table_entry=BoxedSolid::OurCraftMaterial, lzrhiti +name=LaserExplosionResourceTable + +[ExplosionResourceTable] +table_entry=BoxedSolid::OurCraftMaterial, ppchiti +name=PPCExplosionResourceTable + +[ExplosionResourceTable] +table_entry=BoxedSolid::OurCraftMaterial, canhiti +name=CanonExplosionResourceTable + +[ExplosionResourceTable] +table_entry=BoxedSolid::OurCraftMaterial, mslhiti +name=MissileExplosionResourceTable + +[ExplosionResourceTable] +table_entry=BoxedSolid::OurCraftMaterial, dam1hiti +name=Dam1ExplosionResourceTable + +[ExplosionResourceTable] +table_entry=BoxedSolid::OurCraftMaterial, dam2hiti +name=Dam2ExplosionResourceTable + +[ExplosionResourceTable] +table_entry=BoxedSolid::OurCraftMaterial, dam3hiti +name=Dam3ExplosionResourceTable + +[ExplosionResourceTable] +table_entry=BoxedSolid::OurCraftMaterial, dam4hiti +name=Dam4ExplosionResourceTable + +[ExplosionResourceTable] +table_entry=BoxedSolid::OurCraftMaterial, desthiti +name=DestroyedExplosionResourceTable + diff --git a/CONTENT/BT/MODELS/FD1.MOD b/CONTENT/BT/MODELS/FD1.MOD new file mode 100644 index 0000000..2735772 --- /dev/null +++ b/CONTENT/BT/MODELS/FD1.MOD @@ -0,0 +1,5 @@ +[video] +object=fd1.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/FD2.MOD b/CONTENT/BT/MODELS/FD2.MOD new file mode 100644 index 0000000..4ef8683 --- /dev/null +++ b/CONTENT/BT/MODELS/FD2.MOD @@ -0,0 +1,5 @@ +[video] +object=fd2.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/FD3.MOD b/CONTENT/BT/MODELS/FD3.MOD new file mode 100644 index 0000000..b804e5c --- /dev/null +++ b/CONTENT/BT/MODELS/FD3.MOD @@ -0,0 +1,5 @@ +[video] +object=fd3.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/FD4.MOD b/CONTENT/BT/MODELS/FD4.MOD new file mode 100644 index 0000000..3cae560 --- /dev/null +++ b/CONTENT/BT/MODELS/FD4.MOD @@ -0,0 +1,8 @@ +[video] +object=fd4.bgf + +[collision] +name=thor.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/FIND.TXT b/CONTENT/BT/MODELS/FIND.TXT new file mode 100644 index 0000000..f8cf499 --- /dev/null +++ b/CONTENT/BT/MODELS/FIND.TXT @@ -0,0 +1,11 @@ +c:\rel410\bt\models\blkjack.dmg +c:\rel410\bt\models\blkjack.mch +c:\rel410\bt\models\firstrtr.dmg +c:\rel410\bt\models\firstrtr.mch +c:\rel410\bt\models\mad.dmg +c:\rel410\bt\models\raptor.dmg +c:\rel410\bt\models\raptor.mch +c:\rel410\bt\models\strider.dmg +c:\rel410\bt\models\strider.mch +c:\rel410\bt\models\thr.dmg +c:\rel410\bt\models\wpnmech.dmg diff --git a/CONTENT/BT/MODELS/FIRDMG.EXP b/CONTENT/BT/MODELS/FIRDMG.EXP new file mode 100644 index 0000000..c9b1598 --- /dev/null +++ b/CONTENT/BT/MODELS/FIRDMG.EXP @@ -0,0 +1,28 @@ +[OneDamage] +ExplosionModelFile=dam1hit +DamageLevel=0.2 +TimeDelay=0.0 + +[TwoDamage] +ExplosionModelFile=dam2hit +DamageLevel=0.4 +TimeDelay=0.0 + +[ThreeDamage] +ExplosionModelFile=dam3hit +DamageLevel=0.6 +TimeDelay=0.0 + +[FourDamage] +ExplosionModelFile=dam4hit +DamageLevel=0.8 +TimeDelay=0.0 + +[DestroyedExplosion] +ExplosionModelFile=desthit +GraphicState=Destroyed + +[GoneExplosion] +ExplosionModelFile=desthit +GraphicState=Gone + diff --git a/CONTENT/BT/MODELS/FIRDMG.TBL b/CONTENT/BT/MODELS/FIRDMG.TBL new file mode 100644 index 0000000..bc76e65 --- /dev/null +++ b/CONTENT/BT/MODELS/FIRDMG.TBL @@ -0,0 +1,189 @@ +[LeftFoot] +DamageZone=dz_lfoot 0.5 +DamageZone=dz_ldleg 0.3 +DamageZone=dz_rfoot 0.2 + +[RightFoot] +DamageZone=dz_rfoot 0.5 +DamageZone=dz_rdleg 0.3 +DamageZone=dz_lfoot 0.2 + +[LeftLeg] +DamageZone=dz_luleg 0.4 +DamageZone=dz_ldleg 0.4 +DamageZone=dz_ruleg 0.1 +DamageZone=dz_rdleg 0.1 + +[RightLeg] +DamageZone=dz_ruleg 0.4 +DamageZone=dz_rdleg 0.4 +DamageZone=dz_luleg 0.1 +DamageZone=dz_ldleg 0.1 + +[LeftHip] +DamageZone=dz_luleg 0.5 +DamageZone=dz_hip 0.2 +DamageZone=dz_lgun 0.3 + +[FrontHip] +DamageZone=dz_luleg 0.25 +DamageZone=dz_ruleg 0.25 +DamageZone=dz_hip 0.3 +DamageZone=dz_dtorso 0.2 + +[RearHip] +DamageZone=dz_luleg 0.25 +DamageZone=dz_ruleg 0.25 +DamageZone=dz_hip 0.3 +DamageZone=dz_reardtorso 0.2 + +[RightHip] +DamageZone=dz_ruleg 0.5 +DamageZone=dz_hip 0.2 +DamageZone=dz_rgun 0.3 + +[LeftWaist] +DamageZone=dz_ltorso 0.2 +DamageZone=dz_rearltorso 0.1 +DamageZone=dz_lgun 0.2 +DamageZone=dz_dtorso 0.25 +DamageZone=dz_reardtorso 0.25 + +[FrontWaist] +DamageZone=dz_rgun 0.05 +DamageZone=dz_lgun 0.05 +DamageZone=dz_ltorso 0.25 +DamageZone=dz_rtorso 0.25 +DamageZone=dz_dtorso 0.4 + +[RearWaist] +DamageZone=dz_rgun 0.05 +DamageZone=dz_lgun 0.05 +DamageZone=dz_rearltorso 0.25 +DamageZone=dz_rearrtorso 0.25 +DamageZone=dz_reardtorso 0.4 + +[RightWaist] +DamageZone=dz_rtorso 0.2 +DamageZone=dz_rearrtorso 0.1 +DamageZone=dz_rgun 0.2 +DamageZone=dz_dtorso 0.25 +DamageZone=dz_reardtorso 0.25 + +[LeftChest] +DamageZone=dz_larm 0.3 +DamageZone=dz_ltorso 0.2 +DamageZone=dz_rearltorso 0.2 +DamageZone=dz_dtorso 0.2 +DamageZone=dz_rearutorso 0.1 + +[RightChest] +DamageZone=dz_rarm 0.3 +DamageZone=dz_rtorso 0.2 +DamageZone=dz_rearrtorso 0.2 +DamageZone=dz_dtorso 0.2 +DamageZone=dz_rearutorso 0.1 + +[FrontChest] +DamageZone=dz_larm 0.05 +DamageZone=dz_rarm 0.05 +DamageZone=dz_ltorso 0.2 +DamageZone=dz_rtorso 0.2 +DamageZone=dz_dtorso 0.45 +DamageZone=dz_searchlight 0.05 + + +[RearChest] +DamageZone=dz_larm 0.05 +DamageZone=dz_rarm 0.05 +DamageZone=dz_rearltorso 0.1 +DamageZone=dz_rearrtorso 0.1 +DamageZone=dz_rearutorso 0.6 +DamageZone=dz_utorso 0.1 + + +[TopLeft] +DamageZone=dz_utorso 0.4 +DamageZone=dz_dtorso 0.6 + +[TopRight] +DamageZone=dz_dtorso 0.4 +DamageZone=dz_utorso 0.6 + +// The data in this table is totally bogus. GDU 12-2-95 +[Layer1] +PieSlice=RightFoot +PieSlice=RightFoot +PieSlice=LeftFoot +PieSlice=LeftFoot +PieSlice=LeftFoot +PieSlice=LeftFoot +PieSlice=RightFoot +PieSlice=RightFoot +RotateWithTorso=False + +[Layer2] +PieSlice=RightLeg +PieSlice=RightLeg +PieSlice=LeftLeg +PieSlice=LeftLeg +PieSlice=LeftLeg +PieSlice=LeftLeg +PieSlice=RightLeg +PieSlice=RightLeg +RotateWithTorso=False + +[Layer3] +PieSlice=RightHip +PieSlice=FrontHip +PieSlice=FrontHip +PieSlice=LeftHip +PieSlice=LeftHip +PieSlice=RearHip +PieSlice=RearHip +PieSlice=RightHip +RotateWithTorso=False + +[Layer4] +PieSlice=RightHip +PieSlice=FrontHip +PieSlice=FrontHip +PieSlice=LeftHip +PieSlice=LeftHip +PieSlice=RearHip +PieSlice=RearHip +PieSlice=RightHip +RotateWithTorso=True + +[Layer5] +PieSlice=RightWaist +PieSlice=FrontWaist +PieSlice=FrontWaist +PieSlice=LeftWaist +PieSlice=LeftWaist +PieSlice=RearWaist +PieSlice=RearWaist +PieSlice=RightWaist +RotateWithTorso=True + +[Layer6] +PieSlice=RightChest +PieSlice=FrontChest +PieSlice=FrontChest +PieSlice=LeftChest +PieSlice=LeftChest +PieSlice=RearChest +PieSlice=RearChest +PieSlice=RightChest +RotateWithTorso=True + +[Layer7] +PieSlice=TopRight +PieSlice=TopRight +PieSlice=TopLeft +PieSlice=TopLeft +PieSlice=TopLeft +PieSlice=TopLeft +PieSlice=TopRight +PieSlice=TopRight +RotateWithTorso=True diff --git a/CONTENT/BT/MODELS/FIRSTRTR.MOD b/CONTENT/BT/MODELS/FIRSTRTR.MOD new file mode 100644 index 0000000..274d38e --- /dev/null +++ b/CONTENT/BT/MODELS/FIRSTRTR.MOD @@ -0,0 +1,135 @@ +[video] +skeleton=fir.skl +skeletona=fix.skl +destroyed=fird.skl +//destroyeda=firxd.skl +dzm=firskin.dzm +dzma=fixskin.dzm + +[audio] +internal=firint.scp +external=firext.scp + +[collision] +name=fir_cv.sld + +[gauge] +image=thor_ga.gim + +[gaugeMissionReview] +pixelmap=thor_mr.pcc + +[gamedata] +class=MechClassID +MoverMass=45000.0 +MomentOfInertia=1.75 3.125 1.75 +PositiveLinearDragCoefficients=0.14 0.4 0.07 +NegativeLinearDragCoefficients=0.14 0.2 0.08 +AngularDragCoefficients=0.3 0.5 0.3 +FrictionCoefficient=0.1 +ElasticityCoefficient=0.2 +MinimumBounceSpeed=0.2 +AnimationPrefix=fir +Subsystems=firstrtr.sub +DamageZones=firstrtr.dmg +DamageLookupTable=firdmg.tbl +RelativeMechValue=1.0 +LookLeftAngle=80 +LookRightAngle=-80 +LookBackAngle=0 +LookFrontAngle=-10 +WalkingTurnRate=80 +RunningTurnRate=55 +DeathEffect=thrdead +CameraOffset=0.0 5.0 1.0 +DeathSplashDamage=5 +DeathSplashRadius=50 +TimeDelay=0.3 + +MaxAcceleration=50 +MaxUnstableAcceleration=60.0 + +UnstableAccelerationEffect=0.5 +UnstableGunTheEngineEffect=0.8 +UnstableSuperStopEffect=0.25 +UnstableHighVelocityEffect=0.25 +UnstableStopedTurnEffect=1.0 +SuperStopAcceleration=25.0 + +ThrottleAdjustment=1.5 + +UpdateTurnDegreeDiffrence=3 +UpdateTurnVelocityDiffrence=0.045 +UpdatePositionDiffrence=0.3 + +ShadowJointName=jointshadow + +[ControlMappings] +Thrustmaster=firthr.ctl +L4=firl4.ctl + +[animations] +animationtransition=firswr.ani +animation=firwwl.ani +animation=firwwr.ani +animation=firwsr.ani +animation=firwsl.ani +animationtransition=firwrl.ani +animationtransition=firwrr.ani +animation=firrrl.ani +animation=firrrr.ani +animation=firrwl.ani +animation=firrwr.ani +animation=firbmp.ani +animation=firbbl.ani +animation=firbbr.ani +animation=firbsl.ani +animation=firbsr.ani +animationtransition=firsbl.ani +animationtransition=firsbr.ani + +animationtransition=firswri.ani +animation=firwwli.ani +animation=firwwri.ani +animation=firwsri.ani +animation=firwsli.ani +animationtransition=firwrli.ani +animationtransition=firwrri.ani +animation=firrrli.ani +animation=firrrri.ani +animation=firrwli.ani +animation=firrwri.ani +animation=firbmpi.ani +animation=firbbli.ani +animation=firbbri.ani +animation=firbsli.ani +animation=firbsri.ani +animationtransition=firsbli.ani +animationtransition=firsbri.ani + +animation=firggl.ani +animation=firggr.ani +animation=firgsl.ani +animation=firgsr.ani +animationtransition=firwgl.ani +animationtransition=firwgr.ani + +animation=firggli.ani +animation=firggri.ani +animation=firgsli.ani +animation=firgsri.ani +animationtransition=firwgli.ani +animationtransition=firwgri.ani + +animation=firsqu.ani +animation=firsqd.ani +animation=firsqui.ani +animation=firsqdi.ani + +animation=firtrn.ani +animation=firtrni.ani + +//animation=firff.ani +//animation=firfb.ani +//animation=firfl.ani +//animation=firfr.ani diff --git a/CONTENT/BT/MODELS/FIRSTRTR.SUB b/CONTENT/BT/MODELS/FIRSTRTR.SUB new file mode 100644 index 0000000..feae640 --- /dev/null +++ b/CONTENT/BT/MODELS/FIRSTRTR.SUB @@ -0,0 +1,191 @@ +[HeatSink] +Type=HeatSinkClassID +Include=heatsnk.sub +HeatSinkCount=28 +SubsystemFlags=DontReplicateFlag + +[Reservoir] +Type=ReservoirClassID +Include=reserve.sub +HeatSink=HeatSink +SegmentPageName=siteeyepoint + +[Condenser1] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser2] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser3] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser4] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser5] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser6] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[GeneratorA] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser1 +SubsystemFlags=DontReplicateFlag + +[GeneratorB] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser2 +SubsystemFlags=DontReplicateFlag + +[GeneratorC] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser3 +SubsystemFlags=DontReplicateFlag + +[GeneratorD] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser5 +SubsystemFlags=DontReplicateFlag + +[Avionics] +Type=SensorClassID +Include=sensor.sub +HeatSink=Condenser2 +VoltageSource=GeneratorD +AuxScreenNumber=5 +SubsystemFlags=DontReplicateFlag + +AuxScreenPlacement=2 +[Myomers] +Type=MyomersClassID +Include=myomers.sub +HeatSink=Condenser5 +VoltageSource=GeneratorD +AuxScreenNumber=6 +SubsystemFlags=DontReplicateFlag + +AuxScreenPlacement=0 +[Gyroscope] +Type=GyroscopeClassID +Include=gyro.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag + +[Torso] +Type=TorsoClassID +Include=torso.sub +WatchedSubsystem=Myomers + +HorizontalRotationPerSecond=40 +VerticalRotationPerSecond=30 +HorizontalLimitRight=-140 +HorizontalLimitLeft=140 +[HUD] +Type=HUDClassID +Include=hud.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag + +[Searchlight] +Type=SearchlightClassID +Include=srchlite.sub +WatchedSubsystem=Avionics +SegmentPageName=sitelight + +[ThermalSight] +Type=ThermalSightClassID +Include=Thermal.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag +[LLaser] +Type=EmitterClassID +Include=llaser.sub +SegmentPageName=siteftorsoport +PipPosition=1 +VoltageSource=GeneratorB +HeatSink=Condenser2 +AuxScreenNumber=7 +AuxScreenPlacement=5 +[ERMLaser_1] +Type=EmitterClassID +Include=ermlaser.sub +SegmentPageName=sitertorsoport +PipPosition=1 +VoltageSource=GeneratorA +HeatSink=Condenser1 +AuxScreenNumber=2 +AuxScreenPlacement=1 +[ERMLaser_2] +Type=EmitterClassID +Include=ermlaser.sub +SegmentPageName=siteltorsoport +PipPosition=2 +VoltageSource=GeneratorC +HeatSink=Condenser3 +AuxScreenNumber=9 +AuxScreenPlacement=3 +[ERSLaser_1] +Type=EmitterClassID +Include=erslaser.sub +SegmentPageName=sitelgunport +PipPosition=1 +VoltageSource=GeneratorA +HeatSink=Condenser4 +AuxScreenNumber=1 +AuxScreenPlacement=4 +[ERSLaser_2] +Type=EmitterClassID +Include=erslaser.sub +SegmentPageName=sitergunport +PipPosition=2 +VoltageSource=GeneratorC +HeatSink=Condenser6 +AuxScreenNumber=10 +AuxScreenPlacement=6 +[AmmoBinSTRK4] +Type=AmmoBinClassID +Include=ammstrk4.sub +WatchedSubsystem=STRK4 +AmmoCount=12 +[STRK4] +AmmoBin=AmmoBinSTRK4 +Type=MissileLauncherClassID +Include=strk4.sub +SegmentPageName=sitemissleport +PipPosition=1 +VoltageSource=GeneratorB +HeatSink=Condenser2 +AuxScreenNumber=8 +AuxScreenPlacement=5 +[MessageManager] +Type=SubsystemMessageManagerClassID +ExplosionModelFile=majhit 1.0 +TerrainHitExplosion=gndhit +RendererCompensateTime=0.3 +[MechTech] +Type=MechTechClassID +AlarmModel=mechalrm +SubsystemFlags=DontReplicateFlag diff --git a/CONTENT/BT/MODELS/FIRTHR.CTL b/CONTENT/BT/MODELS/FIRTHR.CTL new file mode 100644 index 0000000..5ca0097 --- /dev/null +++ b/CONTENT/BT/MODELS/FIRTHR.CTL @@ -0,0 +1,57 @@ +[StickPosition_JP] +IOMapping=JoystickPhysical +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=StickPosition +Mode=ModeAlwaysActive + +[TorsoLeft_BJHL] +IOMapping=ButtonJoystickHatLeft +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoLeft +Mode=ModeAlwaysActive + +[TorsoRight_BJHR] +IOMapping=ButtonJoystickHatRight +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoRight +Mode=ModeAlwaysActive + +[LLaser_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=LLaser +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[STRK4_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=STRK4 +AttributeID=TriggerState +Mode=ModeNonMapping diff --git a/CONTENT/BT/MODELS/FL1.MOD b/CONTENT/BT/MODELS/FL1.MOD new file mode 100644 index 0000000..001afeb --- /dev/null +++ b/CONTENT/BT/MODELS/FL1.MOD @@ -0,0 +1,8 @@ +[video] +object=fl1.bgf + +[collision] +name=fl1_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/FP0.MOD b/CONTENT/BT/MODELS/FP0.MOD new file mode 100644 index 0000000..42d6a78 --- /dev/null +++ b/CONTENT/BT/MODELS/FP0.MOD @@ -0,0 +1,17 @@ +[video] +; +; fp0.mod - Fuel Pump +; +object=fp0.bgf fp0_LP.bgf +rubble=fp0d.bgf + +[collision] +name=fp0_cv.sld + +[gamedata] +class=CulturalIconClassID +DamageZones=med.dmg +StoppingCollisionVolume=1 +ExplosionModelFile=meddead +TimeDelay=0.5 +CrunchExplosionModelFile=stephit diff --git a/CONTENT/BT/MODELS/FP0D.MOD b/CONTENT/BT/MODELS/FP0D.MOD new file mode 100644 index 0000000..00f74fe --- /dev/null +++ b/CONTENT/BT/MODELS/FP0D.MOD @@ -0,0 +1,5 @@ +[collision] +name=fp0d_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/FP1.MOD b/CONTENT/BT/MODELS/FP1.MOD new file mode 100644 index 0000000..90a1279 --- /dev/null +++ b/CONTENT/BT/MODELS/FP1.MOD @@ -0,0 +1,20 @@ +[video] +; +; fp1.mod - Fuel Pipe +; +object=fp1.bgf fp1_FR.bgf +rubble=fp1d.bgf fp1d_FR.bgf + +[collision] +name=fp1_cv.sld + +[gauge] +image=fp1_ga.gim + +[gamedata] +class=CulturalIconClassID +DamageZones=med.dmg +StoppingCollisionVolume=1 +ExplosionModelFile=meddead +TimeDelay=0.5 +CrunchExplosionModelFile=stephit diff --git a/CONTENT/BT/MODELS/FP2.MOD b/CONTENT/BT/MODELS/FP2.MOD new file mode 100644 index 0000000..d5c14dd --- /dev/null +++ b/CONTENT/BT/MODELS/FP2.MOD @@ -0,0 +1,20 @@ +[video] +; +; fp2.mod - Fuel Pipe +; +object=fp2.bgf fp2_LP.bgf +rubble=fp2d.bgf + +[collision] +name=fp2_cv.sld + +[gauge] +image=fp2_ga.gim + +[gamedata] +class=CulturalIconClassID +DamageZones=med.dmg +StoppingCollisionVolume=1 +ExplosionModelFile=meddead +TimeDelay=0.5 +CrunchExplosionModelFile=stephit diff --git a/CONTENT/BT/MODELS/FP2D.MOD b/CONTENT/BT/MODELS/FP2D.MOD new file mode 100644 index 0000000..6367837 --- /dev/null +++ b/CONTENT/BT/MODELS/FP2D.MOD @@ -0,0 +1,5 @@ +[collision] +name=fp2d_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/FP3.MOD b/CONTENT/BT/MODELS/FP3.MOD new file mode 100644 index 0000000..0c9a7f0 --- /dev/null +++ b/CONTENT/BT/MODELS/FP3.MOD @@ -0,0 +1,17 @@ +[video] +; +; fp3.mod - Fuel Pipe +; +object=fp3.bgf +rubble=fp3d.bgf + +[collision] +name=fp3_cv.sld + +[gamedata] +class=CulturalIconClassID +DamageZones=med.dmg +StoppingCollisionVolume=1 +ExplosionModelFile=meddead +TimeDelay=0.5 +CrunchExplosionModelFile=stephit diff --git a/CONTENT/BT/MODELS/FT1.MOD b/CONTENT/BT/MODELS/FT1.MOD new file mode 100644 index 0000000..3d87d28 --- /dev/null +++ b/CONTENT/BT/MODELS/FT1.MOD @@ -0,0 +1,20 @@ +[video] +; +; ft1.mod - Fuel tank +; +object=ft1.bgf ft1_FR.bgf ft1_LP.bgf +rubble=ft1d.bgf ft1d_FR.bgf + +[collision] +name=ft1_cv.sld + +[gauge] +image=ft1_ga.gim + +[gamedata] +class=CulturalIconClassID +DamageZones=med.dmg +StoppingCollisionVolume=1 +ExplosionModelFile=bigdead +TimeDelay=0.5 +//CrunchExplosionModelFile=stephit diff --git a/CONTENT/BT/MODELS/FT2.MOD b/CONTENT/BT/MODELS/FT2.MOD new file mode 100644 index 0000000..e871b86 --- /dev/null +++ b/CONTENT/BT/MODELS/FT2.MOD @@ -0,0 +1,20 @@ +[video] +; +; ft2.mod - Fuel tank +; +object=ft2.bgf ft2_FR.bgf ft2_LP.bgf +rubble=ft2d.bgf ft2d_FR.bgf + +[collision] +name=ft2_cv.sld + +[gauge] +image=ft2_ga.gim + +[gamedata] +class=CulturalIconClassID +DamageZones=med.dmg +StoppingCollisionVolume=1 +ExplosionModelFile=bigdead +TimeDelay=0.5 +//CrunchExplosionModelFile=stephit diff --git a/CONTENT/BT/MODELS/GAUSSRFL.SUB b/CONTENT/BT/MODELS/GAUSSRFL.SUB new file mode 100644 index 0000000..00bfd06 --- /dev/null +++ b/CONTENT/BT/MODELS/GAUSSRFL.SUB @@ -0,0 +1,33 @@ +[ProjectileWeapon] +Type=ProjectileWeaponClassID +StartingTemperature=77.0 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +//ThermalConductance=91000 +//ThermalMass=120000 +ThermalConductance=2.37e4 +ThermalMass=3.16e4 +HeatSink=None +AmmoBin=None +VoltageSource=None +TracerInterval=1 +ExplosionModelFile=canhit +RechargeRate=8.0 +DamageAmount=20.0 +DamageType=BallisticDamage +WeaponDamagePoints=1.0 +WeaponRange=900 +HeatCostToFire=1.0e6 +VitalSubsystem=False +ThermalResistivityCoefficient=0.0004 +AuxScreenNumber=0 +AuxScreenLabel=qgauss.pcc +EngScreenLabel=egauss.pcc +MinTimeOfFlight=1000000 +MinVoltagePercentToFire=0.30 +MinJamChance=0.05 +StartTime=1.0 +PipPosition=1 +PipColor=1.0 1.0 0.0 +PipExtendedRange=False +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT/MODELS/GD1.MOD b/CONTENT/BT/MODELS/GD1.MOD new file mode 100644 index 0000000..4d3ffb7 --- /dev/null +++ b/CONTENT/BT/MODELS/GD1.MOD @@ -0,0 +1,8 @@ +[video] +object=gd1.bgf + +[collision] +name=gd1_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/GD2.MOD b/CONTENT/BT/MODELS/GD2.MOD new file mode 100644 index 0000000..65a6f76 --- /dev/null +++ b/CONTENT/BT/MODELS/GD2.MOD @@ -0,0 +1,8 @@ +[video] +object=gd2.bgf + +[collision] +name=gd2_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/GD3.MOD b/CONTENT/BT/MODELS/GD3.MOD new file mode 100644 index 0000000..4204324 --- /dev/null +++ b/CONTENT/BT/MODELS/GD3.MOD @@ -0,0 +1,8 @@ +[video] +object=gd3.bgf + +[collision] +name=gd3_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/GD4.MOD b/CONTENT/BT/MODELS/GD4.MOD new file mode 100644 index 0000000..b4d7aba --- /dev/null +++ b/CONTENT/BT/MODELS/GD4.MOD @@ -0,0 +1,8 @@ +[video] +object=gd4.bgf + +[collision] +name=gd4_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/GD5.MOD b/CONTENT/BT/MODELS/GD5.MOD new file mode 100644 index 0000000..533bf09 --- /dev/null +++ b/CONTENT/BT/MODELS/GD5.MOD @@ -0,0 +1,10 @@ +[video] +object=gd5.bgf + +[collision] +name=gd5_cv.sld + +[gamedata] +class=UnscalableTerrainClassID + + diff --git a/CONTENT/BT/MODELS/GENRATOR.SUB b/CONTENT/BT/MODELS/GENRATOR.SUB new file mode 100644 index 0000000..25e33ff --- /dev/null +++ b/CONTENT/BT/MODELS/GENRATOR.SUB @@ -0,0 +1,17 @@ +[Generator] +Type=GeneratorClassID +ArmorValue=20.0 +StartingTemperature=77.0 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +ThermalConductance=5.63e5 +ThermalMass=7.26e5 +HeatSink=None +ThermalResistance=0.0024 +RatedVoltage=10000.0 +WeaponDamagePoints=5.0 +VitalSubsystem=False +StartTime=1.0 +ShortRecoveryTime=1.0 +MaxTapCount=6 +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT/MODELS/GNDHIT.MOD b/CONTENT/BT/MODELS/GNDHIT.MOD new file mode 100644 index 0000000..dce902f --- /dev/null +++ b/CONTENT/BT/MODELS/GNDHIT.MOD @@ -0,0 +1,9 @@ +[video] +object=12 + +[audio] +external=smlexp.scp + +[gamedata] +class=ExplosionClassID +ExplosionDuration=3.0 diff --git a/CONTENT/BT/MODELS/GNR.MOD b/CONTENT/BT/MODELS/GNR.MOD new file mode 100644 index 0000000..00a3ba7 --- /dev/null +++ b/CONTENT/BT/MODELS/GNR.MOD @@ -0,0 +1,20 @@ +[video] +; +; gnr.mod - Generator +; +object=gnr.bgf gnr_LP.bgf +rubble=gnrd.bgf + +[collision] +name=gnr_cv.sld + +[gauge] +image=gnr_ga.gim + +[gamedata] +class=CulturalIconClassID +DamageZones=med.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=meddead +TimeDelay=0.5 +CrunchExplosionModelFile=smldead diff --git a/CONTENT/BT/MODELS/GRND100.MOD b/CONTENT/BT/MODELS/GRND100.MOD new file mode 100644 index 0000000..5b0483e --- /dev/null +++ b/CONTENT/BT/MODELS/GRND100.MOD @@ -0,0 +1,9 @@ +[video] +object=grnd100.bgf + +[collision] +name=gr100_cv.sld + +[gamedata] +class=UnscalableTerrainClassID + \ No newline at end of file diff --git a/CONTENT/BT/MODELS/GTARMAC.MOD b/CONTENT/BT/MODELS/GTARMAC.MOD new file mode 100644 index 0000000..b276c5f --- /dev/null +++ b/CONTENT/BT/MODELS/GTARMAC.MOD @@ -0,0 +1,6 @@ +[video] +object=gtarmac.bgf + +[gamedata] +class=UnscalableTerrainClassID + \ No newline at end of file diff --git a/CONTENT/BT/MODELS/GYRO.SUB b/CONTENT/BT/MODELS/GYRO.SUB new file mode 100644 index 0000000..33644b3 --- /dev/null +++ b/CONTENT/BT/MODELS/GYRO.SUB @@ -0,0 +1,82 @@ +[Gyroscope] +Type=GyroscopeClassID +ArmorValue=20.0 +WatchedSubsystem=None +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +WeaponDamagePoints=5.0 +MaxAnimationNoise=1.2 +MinAnimationNoise=0.0 +RotationPerSecond=1.0 +PercentageOnNormal=0.0 +PercentageOnDestruction=1.2 +PercentageOnDegradation=0.7 +PercentageOnFailure=1.0 +EyeJoint=jointlocal + +VitalSubsystem=False +CriticalHitScoreBonus=0 +MinVoltagePercent=50 +CollisionCriticalHitWeight=0.35 + +MechJoint=jointeye +//MechJoint=jointshakey + +Exageration=0.6 + +SpringConstantX=-0.20 +SpringConstantY=-12.0 +SpringConstantZ=-0.20 +DampingConstantX=-2.0 +DampingConstantY=-3.0 +DampingConstantZ=-2.0 +PosSpringX=0.10 +PosSpringY=0.15 +PosSpringZ=0.10 +NegSpringX=-0.10 +NegSpringY=-0.15 +NegSpringZ=-0.10 + +RotationSpringConstantPitch=-0.9 +RotationSpringConstantYaw=-0.9 +RotationSpringConstantRoll=-0.9 +RotationDampingConstantPitch=-4.0 +RotationDampingConstantYaw=-4.0 +RotationDampingConstantRoll=-4.0 +RotationPosSpringPitch=22.0 +RotationPosSpringYaw=22.0 +RotationPosSpringRoll=22.0 +RotationNegSpringPitch=-22.0 +RotationNegSpringYaw=-22.0 +RotationNegSpringRoll=-22.0 + +CollisionDamageMultiplier=1 +BallisticDamageMultiplier=20 +ExplosiveDamageMultiplier=50 +LaserDamageMultiplier=6 +EnergyDamageMultiplier=14 + +CollisionDamageTrans=0.0 +CollisionDamagePitchRoll=0.0 +CollisionDamageYaw=0.0 +CollisionDamageVibration=0.0 + +BallisticDamageTrans=0.52 +BallisticDamagePitchRoll=1.04 +BallisticDamageYaw=1.04 +BallisticDamageVibration=0.0 + +ExplosiveDamageTrans=1.0 +ExplosiveDamagePitchRoll=1.0 +ExplosiveDamageYaw=1.0 +ExplosiveDamageVibration=1.0 + +LaserDamageTrans=0.086 +LaserDamagePitchRoll=0.0 +LaserDamageYaw=0.0 +LaserDamageVibration=0.86 + +EnergyDamageTrans=0.107 +EnergyDamagePitchRoll=0.32 +EnergyDamageYaw=0.32 +EnergyDamageVibration=1.07 diff --git a/CONTENT/BT/MODELS/HARASSER.MOD b/CONTENT/BT/MODELS/HARASSER.MOD new file mode 100644 index 0000000..8020498 --- /dev/null +++ b/CONTENT/BT/MODELS/HARASSER.MOD @@ -0,0 +1,18 @@ +[video] +object=HARASSER.bgf harass.bgf +rubble=HARSRD.bgf + +[collision] +name=HARASSER.sld + +[gauge] +image=harasser.gim + +[gamedata] +class=CulturalIconClassID +DamageZones=trk.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=trkdead +TimeDelay=0.5 +CrunchExplosionModelFile=stephit + \ No newline at end of file diff --git a/CONTENT/BT/MODELS/HC1.MOD b/CONTENT/BT/MODELS/HC1.MOD new file mode 100644 index 0000000..787fd70 --- /dev/null +++ b/CONTENT/BT/MODELS/HC1.MOD @@ -0,0 +1,14 @@ +[video] +object=hc1.bgf hc1_LP.bgf +rubble=hc1d.bgf + +[collision] +name=hc1_cv.sld + +[gamedata] +class=CulturalIconClassID +DamageZones=med.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=meddead +TimeDelay=0.5 +CrunchExplosionModelFile=stephit diff --git a/CONTENT/BT/MODELS/HC2.MOD b/CONTENT/BT/MODELS/HC2.MOD new file mode 100644 index 0000000..7c3d155 --- /dev/null +++ b/CONTENT/BT/MODELS/HC2.MOD @@ -0,0 +1,14 @@ +[video] +object=hc2.bgf +rubble=hc2d.bgf hc2d_FR.bgf + +[collision] +name=hc2_cv.sld + +[gamedata] +class=CulturalIconClassID +DamageZones=med.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=meddead +TimeDelay=0.5 +CrunchExplosionModelFile=stephit diff --git a/CONTENT/BT/MODELS/HEATSNK.SUB b/CONTENT/BT/MODELS/HEATSNK.SUB new file mode 100644 index 0000000..725ca26 --- /dev/null +++ b/CONTENT/BT/MODELS/HEATSNK.SUB @@ -0,0 +1,15 @@ +[HeatSink] +Type=HeatSinkClassID +ArmorValue=20.0 +StartingTemperature=77.0 +DegradationTemperature=5000.0 +FailureTemperature=5000.0 +ThermalConductance=2.31e5 +ThermalMass=1.39e6 +HeatSink=None +HeatSinkCount=0 +WeaponDamagePoints=10.0 +RechargeRate=10.0 +VitalSubsystem=False +CriticalHitScoreBonus=0 +CollisionCriticalHitWeight=0.30 diff --git a/CONTENT/BT/MODELS/HILLA.MOD b/CONTENT/BT/MODELS/HILLA.MOD new file mode 100644 index 0000000..40cd28d --- /dev/null +++ b/CONTENT/BT/MODELS/HILLA.MOD @@ -0,0 +1,12 @@ +[video] +object=hilla.bgf + +[collision] +name=hilla_cv.sld + +[gauge] +image=hl1_ga.gim + +[gamedata] +class=UnscalableTerrainClassID + \ No newline at end of file diff --git a/CONTENT/BT/MODELS/HILLC.MOD b/CONTENT/BT/MODELS/HILLC.MOD new file mode 100644 index 0000000..61ad924 --- /dev/null +++ b/CONTENT/BT/MODELS/HILLC.MOD @@ -0,0 +1,12 @@ +[video] +object=hillc.bgf + +[collision] +name=hillc_cv.sld + +[gauge] +image=hl2_ga.gim + +[gamedata] +class=UnscalableTerrainClassID + \ No newline at end of file diff --git a/CONTENT/BT/MODELS/HILLG1.MOD b/CONTENT/BT/MODELS/HILLG1.MOD new file mode 100644 index 0000000..5f48da4 --- /dev/null +++ b/CONTENT/BT/MODELS/HILLG1.MOD @@ -0,0 +1,11 @@ +[video] +object=hillg1.bgf + +[collision] +name=hillg1_c.sld + +[gauge] +image=hillg1_g.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/HILLG2.MOD b/CONTENT/BT/MODELS/HILLG2.MOD new file mode 100644 index 0000000..9ca139d --- /dev/null +++ b/CONTENT/BT/MODELS/HILLG2.MOD @@ -0,0 +1,11 @@ +[video] +object=hillg2.bgf + +[collision] +name=hillg2_c.sld + +[gauge] +image=hillg2_g.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/HILLG3.MOD b/CONTENT/BT/MODELS/HILLG3.MOD new file mode 100644 index 0000000..fca4704 --- /dev/null +++ b/CONTENT/BT/MODELS/HILLG3.MOD @@ -0,0 +1,11 @@ +[video] +object=hillg3.bgf + +[collision] +name=hillg3_c.sld + +[gauge] +image=hillg3_g.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/HL1.MOD b/CONTENT/BT/MODELS/HL1.MOD new file mode 100644 index 0000000..40cd28d --- /dev/null +++ b/CONTENT/BT/MODELS/HL1.MOD @@ -0,0 +1,12 @@ +[video] +object=hilla.bgf + +[collision] +name=hilla_cv.sld + +[gauge] +image=hl1_ga.gim + +[gamedata] +class=UnscalableTerrainClassID + \ No newline at end of file diff --git a/CONTENT/BT/MODELS/HL2.MOD b/CONTENT/BT/MODELS/HL2.MOD new file mode 100644 index 0000000..61ad924 --- /dev/null +++ b/CONTENT/BT/MODELS/HL2.MOD @@ -0,0 +1,12 @@ +[video] +object=hillc.bgf + +[collision] +name=hillc_cv.sld + +[gauge] +image=hl2_ga.gim + +[gamedata] +class=UnscalableTerrainClassID + \ No newline at end of file diff --git a/CONTENT/BT/MODELS/HN1.MOD b/CONTENT/BT/MODELS/HN1.MOD new file mode 100644 index 0000000..f611d4d --- /dev/null +++ b/CONTENT/BT/MODELS/HN1.MOD @@ -0,0 +1,20 @@ +[video] +; +; hn1.mod - Warehouse +; +object=hn1.bgf hn1_FR.bgf hn1_LP.bgf +rubble=hn1d.bgf hn1d_FR.bgf + +[collision] +name=hn1_cv.sld + +[gauge] +image=hn1_ga.gim + +[gamedata] +class=CulturalIconClassID +DamageZones=med.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=meddead +TimeDelay=0.5 +CrunchExplosionModelFile=stephit diff --git a/CONTENT/BT/MODELS/HOSTAGE.MOD b/CONTENT/BT/MODELS/HOSTAGE.MOD new file mode 100644 index 0000000..286683e --- /dev/null +++ b/CONTENT/BT/MODELS/HOSTAGE.MOD @@ -0,0 +1,8 @@ +[gamedata] +class=ScenarioRoleClassID +KillBonus=500.0 +DamageReceivedModifier=1.0 +DamageInflictedModifier=1.0 +DamageBias=1.0 +FriendlyFirePenalty=1.0 +ReturnFromDeath=100 diff --git a/CONTENT/BT/MODELS/HUD.SUB b/CONTENT/BT/MODELS/HUD.SUB new file mode 100644 index 0000000..0ef30ab --- /dev/null +++ b/CONTENT/BT/MODELS/HUD.SUB @@ -0,0 +1,14 @@ +[HUD] +Type=HUDClassID +ArmorValue=20.0 +WatchedSubsystem=None +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +WeaponDamagePoints=10.0 +FlickerRate=10.0 +MinVoltagePercent=50 +VitalSubsystem=False +CriticalHitScoreBonus=0 +SegmentPageName=siteeyepoint +HorizontalMovementPerSecond=0.9 +HorizontalLimit=1.2 diff --git a/CONTENT/BT/MODELS/HUMMER.MOD b/CONTENT/BT/MODELS/HUMMER.MOD new file mode 100644 index 0000000..c256fb8 --- /dev/null +++ b/CONTENT/BT/MODELS/HUMMER.MOD @@ -0,0 +1,17 @@ +[video] +object=HUMMER.bgf humms.bgf +rubble=HUMMD.bgf + +[collision] +name=HUMMER.sld + +[gauge] +image=hummer.gim + +[gamedata] +class=CulturalIconClassID +DamageZones=trk.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=trkdead +TimeDelay=0.5 +CrunchExplosionModelFile=stephit diff --git a/CONTENT/BT/MODELS/HUT.MOD b/CONTENT/BT/MODELS/HUT.MOD new file mode 100644 index 0000000..b41ada3 --- /dev/null +++ b/CONTENT/BT/MODELS/HUT.MOD @@ -0,0 +1,20 @@ +[video] +; +; hut.mod - Hut +; +object=hut.bgf hut_LP.bgf hut_FR.bgf +rubble=hutd.bgf + +[collision] +name=hut_cv.sld + +[gauge] +image=hut_ga.gim + +[gamedata] +class=CulturalIconClassID +DamageZones=med.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=meddead +TimeDelay=0.5 +CrunchExplosionModelFile=stephit diff --git a/CONTENT/BT/MODELS/HWZ.MOD b/CONTENT/BT/MODELS/HWZ.MOD new file mode 100644 index 0000000..dda39d6 --- /dev/null +++ b/CONTENT/BT/MODELS/HWZ.MOD @@ -0,0 +1,20 @@ +[video] +; +; hwz.mod - Howitzer +; +object=hwz.bgf hwz_FR.bgf +rubble=hwzd.bgf hwzd_FR.bgf + +[collision] +name=hwz_cv.sld + +[gauge] +image=hwz_ga.gim + +[gamedata] +class=CulturalIconClassID +DamageZones=med.dmg +StoppingCollisionVolume=1 +ExplosionModelFile=meddead +TimeDelay=0.5 +CrunchExplosionModelFile=smldead diff --git a/CONTENT/BT/MODELS/ICONBLH.MOD b/CONTENT/BT/MODELS/ICONBLH.MOD new file mode 100644 index 0000000..8e25a37 --- /dev/null +++ b/CONTENT/BT/MODELS/ICONBLH.MOD @@ -0,0 +1,16 @@ +[video] +object=blh.bgf +rubble=blh_tshd.bgf + +[collision] +name=blh_cv.sld + +[gauge] +image=blh_ga.gim + +[gamedata] +class=CulturalIconClassID +DamageZones=trk.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=thrdead +TimeDelay=0.5 diff --git a/CONTENT/BT/MODELS/ICONJAK.MOD b/CONTENT/BT/MODELS/ICONJAK.MOD new file mode 100644 index 0000000..c9275ed --- /dev/null +++ b/CONTENT/BT/MODELS/ICONJAK.MOD @@ -0,0 +1,11 @@ +[video] +object=jaktor.bgf jakhip.bgf + +[collision] +name=jak_cv.sld + +[gauge] +image=thor_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/ICONLOK.MOD b/CONTENT/BT/MODELS/ICONLOK.MOD new file mode 100644 index 0000000..f765750 --- /dev/null +++ b/CONTENT/BT/MODELS/ICONLOK.MOD @@ -0,0 +1,16 @@ +[video] +object=lok.bgf +rubble=lok_tshd.bgf + +[collision] +name=lok_cv.sld + +[gauge] +image=thor_ga.gim + +[gamedata] +class=CulturalIconClassID +DamageZones=trk.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=thrdead +TimeDelay=0.5 diff --git a/CONTENT/BT/MODELS/ICONOWN.MOD b/CONTENT/BT/MODELS/ICONOWN.MOD new file mode 100644 index 0000000..384a621 --- /dev/null +++ b/CONTENT/BT/MODELS/ICONOWN.MOD @@ -0,0 +1,16 @@ +[video] +object=own.bgf +rubble=own_tshd.bgf + +[collision] +name=own_cv.sld + +[gauge] +image=thor_ga.gim + +[gamedata] +class=CulturalIconClassID +DamageZones=trk.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=thrdead +TimeDelay=0.5 diff --git a/CONTENT/BT/MODELS/ICONTHR.DMG b/CONTENT/BT/MODELS/ICONTHR.DMG new file mode 100644 index 0000000..8a402ba --- /dev/null +++ b/CONTENT/BT/MODELS/ICONTHR.DMG @@ -0,0 +1,3 @@ +[default] +WeaponDamagePoints=200 +VitalDamageZone=True diff --git a/CONTENT/BT/MODELS/ICONTHR.MOD b/CONTENT/BT/MODELS/ICONTHR.MOD new file mode 100644 index 0000000..a94d32d --- /dev/null +++ b/CONTENT/BT/MODELS/ICONTHR.MOD @@ -0,0 +1,16 @@ +[video] +object=thr.bgf +rubble=thr_tshd.bgf + +[collision] +name=thr_cv.sld + +[gauge] +image=thor_ga.gim + +[gamedata] +class=CulturalIconClassID +DamageZones=iconthr.dmg +StoppingCollisionVolume=1 +ExplosionModelFile=thrdead +TimeDelay=0.5 diff --git a/CONTENT/BT/MODELS/ICONTHRD.MOD b/CONTENT/BT/MODELS/ICONTHRD.MOD new file mode 100644 index 0000000..1d21e52 --- /dev/null +++ b/CONTENT/BT/MODELS/ICONTHRD.MOD @@ -0,0 +1,11 @@ +[video] +object=thrtor_a.bgf thrd.bgf thrhip_a.bgf + +[collision] +name=thr_cv.sld + +[gauge] +image=thor_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/ICONVUL.DMG b/CONTENT/BT/MODELS/ICONVUL.DMG new file mode 100644 index 0000000..8a402ba --- /dev/null +++ b/CONTENT/BT/MODELS/ICONVUL.DMG @@ -0,0 +1,3 @@ +[default] +WeaponDamagePoints=200 +VitalDamageZone=True diff --git a/CONTENT/BT/MODELS/ICONVUL.MOD b/CONTENT/BT/MODELS/ICONVUL.MOD new file mode 100644 index 0000000..4a5bf34 --- /dev/null +++ b/CONTENT/BT/MODELS/ICONVUL.MOD @@ -0,0 +1,16 @@ +[video] +object=vul.bgf +rubble=thr_tshd.bgf + +[collision] +name=vul_cv.sld + +[gauge] +image=thor_ga.gim + +[gamedata] +class=CulturalIconClassID +DamageZones=iconvul.dmg +StoppingCollisionVolume=1 +ExplosionModelFile=thrdead +TimeDelay=0.5 diff --git a/CONTENT/BT/MODELS/JAKDMG.EXP b/CONTENT/BT/MODELS/JAKDMG.EXP new file mode 100644 index 0000000..c9b1598 --- /dev/null +++ b/CONTENT/BT/MODELS/JAKDMG.EXP @@ -0,0 +1,28 @@ +[OneDamage] +ExplosionModelFile=dam1hit +DamageLevel=0.2 +TimeDelay=0.0 + +[TwoDamage] +ExplosionModelFile=dam2hit +DamageLevel=0.4 +TimeDelay=0.0 + +[ThreeDamage] +ExplosionModelFile=dam3hit +DamageLevel=0.6 +TimeDelay=0.0 + +[FourDamage] +ExplosionModelFile=dam4hit +DamageLevel=0.8 +TimeDelay=0.0 + +[DestroyedExplosion] +ExplosionModelFile=desthit +GraphicState=Destroyed + +[GoneExplosion] +ExplosionModelFile=desthit +GraphicState=Gone + diff --git a/CONTENT/BT/MODELS/JAKDMG.TBL b/CONTENT/BT/MODELS/JAKDMG.TBL new file mode 100644 index 0000000..f2c9681 --- /dev/null +++ b/CONTENT/BT/MODELS/JAKDMG.TBL @@ -0,0 +1,187 @@ +[LeftFoot] +DamageZone=dz_lfoot 0.5 +DamageZone=dz_ldleg 0.3 +DamageZone=dz_rfoot 0.2 + +[RightFoot] +DamageZone=dz_rfoot 0.5 +DamageZone=dz_rdleg 0.3 +DamageZone=dz_lfoot 0.2 + +[LeftLeg] +DamageZone=dz_luleg 0.4 +DamageZone=dz_ldleg 0.4 +DamageZone=dz_ruleg 0.1 +DamageZone=dz_rdleg 0.1 + +[RightLeg] +DamageZone=dz_ruleg 0.4 +DamageZone=dz_rdleg 0.4 +DamageZone=dz_luleg 0.1 +DamageZone=dz_ldleg 0.1 + +[LeftHip] +DamageZone=dz_luleg 0.5 +DamageZone=dz_hip 0.2 +DamageZone=dz_lgun 0.3 + +[FrontHip] +DamageZone=dz_luleg 0.25 +DamageZone=dz_ruleg 0.25 +DamageZone=dz_hip 0.3 +DamageZone=dz_dtorso 0.2 + +[RearHip] +DamageZone=dz_luleg 0.25 +DamageZone=dz_ruleg 0.25 +DamageZone=dz_hip 0.3 +DamageZone=dz_reardtorso 0.2 + +[RightHip] +DamageZone=dz_ruleg 0.5 +DamageZone=dz_hip 0.2 +DamageZone=dz_rgun 0.3 + +[LeftWaist] +DamageZone=dz_ltorso 0.2 +DamageZone=dz_rearltorso 0.1 +DamageZone=dz_lgun 0.2 +DamageZone=dz_dtorso 0.25 +DamageZone=dz_reardtorso 0.25 + +[FrontWaist] +DamageZone=dz_rgun 0.05 +DamageZone=dz_lgun 0.05 +DamageZone=dz_ltorso 0.25 +DamageZone=dz_rtorso 0.25 +DamageZone=dz_dtorso 0.4 + +[RearWaist] +DamageZone=dz_rgun 0.05 +DamageZone=dz_lgun 0.05 +DamageZone=dz_rearltorso 0.25 +DamageZone=dz_rearrtorso 0.25 +DamageZone=dz_reardtorso 0.4 + +[RightWaist] +DamageZone=dz_rtorso 0.2 +DamageZone=dz_rearrtorso 0.1 +DamageZone=dz_rgun 0.2 +DamageZone=dz_dtorso 0.25 +DamageZone=dz_reardtorso 0.25 + +[LeftChest] +DamageZone=dz_lgun 0.3 +DamageZone=dz_ltorso 0.2 +DamageZone=dz_rearltorso 0.2 +DamageZone=dz_dtorso 0.2 +DamageZone=dz_rearutorso 0.1 + +[RightChest] +DamageZone=dz_rgun 0.3 +DamageZone=dz_rtorso 0.2 +DamageZone=dz_rearrtorso 0.2 +DamageZone=dz_dtorso 0.2 +DamageZone=dz_rearutorso 0.1 + +[FrontChest] +DamageZone=dz_lgun 0.05 +DamageZone=dz_rgun 0.05 +DamageZone=dz_ltorso 0.2 +DamageZone=dz_rtorso 0.2 +DamageZone=dz_dtorso 0.4 +DamageZone=dz_searchlight 0.1 + +[RearChest] +DamageZone=dz_lgun 0.05 +DamageZone=dz_rgun 0.05 +DamageZone=dz_rearltorso 0.1 +DamageZone=dz_rearrtorso 0.1 +DamageZone=dz_rearutorso 0.6 +DamageZone=dz_utorso 0.1 + +[TopLeft] +DamageZone=dz_utorso 0.4 +DamageZone=dz_ltorso 0.6 + +[TopRight] +DamageZone=dz_rtorso 0.4 +DamageZone=dz_utorso 0.6 + +// The data in this table is totally bogus. GDU 12-2-95 +[Layer1] +PieSlice=RightFoot +PieSlice=RightFoot +PieSlice=LeftFoot +PieSlice=LeftFoot +PieSlice=LeftFoot +PieSlice=LeftFoot +PieSlice=RightFoot +PieSlice=RightFoot +RotateWithTorso=False + +[Layer2] +PieSlice=RightLeg +PieSlice=RightLeg +PieSlice=LeftLeg +PieSlice=LeftLeg +PieSlice=LeftLeg +PieSlice=LeftLeg +PieSlice=RightLeg +PieSlice=RightLeg +RotateWithTorso=False + +[Layer3] +PieSlice=RightHip +PieSlice=FrontHip +PieSlice=FrontHip +PieSlice=LeftHip +PieSlice=LeftHip +PieSlice=RearHip +PieSlice=RearHip +PieSlice=RightHip +RotateWithTorso=False + +[Layer4] +PieSlice=RightHip +PieSlice=FrontHip +PieSlice=FrontHip +PieSlice=LeftHip +PieSlice=LeftHip +PieSlice=RearHip +PieSlice=RearHip +PieSlice=RightHip +RotateWithTorso=True + +[Layer5] +PieSlice=RightWaist +PieSlice=FrontWaist +PieSlice=FrontWaist +PieSlice=LeftWaist +PieSlice=LeftWaist +PieSlice=RearWaist +PieSlice=RearWaist +PieSlice=RightWaist +RotateWithTorso=True + +[Layer6] +PieSlice=RightChest +PieSlice=FrontChest +PieSlice=FrontChest +PieSlice=LeftChest +PieSlice=LeftChest +PieSlice=RearChest +PieSlice=RearChest +PieSlice=RightChest +RotateWithTorso=True + +[Layer7] +PieSlice=TopRight +PieSlice=TopRight +PieSlice=TopLeft +PieSlice=TopLeft +PieSlice=TopLeft +PieSlice=TopLeft +PieSlice=TopRight +PieSlice=TopRight +RotateWithTorso=True diff --git a/CONTENT/BT/MODELS/JAKTHR.CTL b/CONTENT/BT/MODELS/JAKTHR.CTL new file mode 100644 index 0000000..92cbc70 --- /dev/null +++ b/CONTENT/BT/MODELS/JAKTHR.CTL @@ -0,0 +1,63 @@ +[StickPosition_JP] +IOMapping=JoystickPhysical +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=StickPosition +Mode=ModeAlwaysActive + +[TorsoLeft_BJHL] +IOMapping=ButtonJoystickHatLeft +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoLeft +Mode=ModeAlwaysActive + +[TorsoRight_BJHR] +IOMapping=ButtonJoystickHatRight +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoRight +Mode=ModeAlwaysActive + +[GAUSS_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=GAUSS_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[LLaser_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=LLaser +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_3_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser_3 +AttributeID=TriggerState +Mode=ModeNonMapping +[LRM15_1_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=LRM15_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[LRM15_2_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=LRM15_2 +AttributeID=TriggerState +Mode=ModeNonMapping diff --git a/CONTENT/BT/MODELS/KURITA.MOD b/CONTENT/BT/MODELS/KURITA.MOD new file mode 100644 index 0000000..0fa27a8 --- /dev/null +++ b/CONTENT/BT/MODELS/KURITA.MOD @@ -0,0 +1,2 @@ +[gamedata] +class=BTTeamClassID diff --git a/CONTENT/BT/MODELS/LASER.MOD b/CONTENT/BT/MODELS/LASER.MOD new file mode 100644 index 0000000..8de1c62 --- /dev/null +++ b/CONTENT/BT/MODELS/LASER.MOD @@ -0,0 +1,65 @@ +[video] +skeleton=thr.skl + +[collision] +name=thr_cv.sld + +[gamedata] +class=MechClassID +MoverMass=2000.0 +MomentOfInertia=1.75 3.125 1.75 +PositiveLinearDragCoefficients=0.14 0.4 0.07 +NegativeLinearDragCoefficients=0.14 0.2 0.08 +AngularDragCoefficients=0.3 0.5 0.3 +FrictionCoefficient=0.1 +ElasticityCoefficient=0.2 +MinimumBounceSpeed=0.2 +MaxAcceleration=4.8 +AnimationPrefix=thr +Subsystems=thor.sub +DamageZones=thor.dmg +RelativeMechValue=1.0 + +[ControlMappings] +Thrustmaster=thrthr.ctl +L4=thrl4.ctl + +[animations] +animationtransition=thrswr.ani +animation=thrwwl.ani +animation=thrwwr.ani +animation=thrwsr.ani +animation=thrwsl.ani +animationtransition=thrwrl.ani +animationtransition=thrwrr.ani +animation=thrrrl.ani +animation=thrrrr.ani +animation=thrrwl.ani +animation=thrrwr.ani +animation=thrbmp.ani +animation=thrbbl.ani +animation=thrbbr.ani +animation=thrbsl.ani +animation=thrbsr.ani +animationtransition=thrsbl.ani +animationtransition=thrsbr.ani + +animationtransition=thrswri.ani +animation=thrwwli.ani +animation=thrwwri.ani +animation=thrwsri.ani +animation=thrwsli.ani +animationtransition=thrwrli.ani +animationtransition=thrwrri.ani +animation=thrrrli.ani +animation=thrrrri.ani +animation=thrrwli.ani +animation=thrrwri.ani +animation=thrbmpi.ani +animation=thrbbli.ani +animation=thrbbri.ani +animation=thrbsli.ani +animation=thrbsri.ani +animationtransition=thrsbli.ani +animationtransition=thrsbri.ani + diff --git a/CONTENT/BT/MODELS/LLASER.SUB b/CONTENT/BT/MODELS/LLASER.SUB new file mode 100644 index 0000000..0711fa1 --- /dev/null +++ b/CONTENT/BT/MODELS/LLASER.SUB @@ -0,0 +1,36 @@ +[Emitter] +Type=EmitterClassID +StartingTemperature=77 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +ThermalConductance=7.10e5 +ThermalMass=9.47e4 +WeaponDamagePoints=3.0 +HeatSink=None +VoltageSource=None +ExplosionModelFile=lzrhit +DamageAmount=5.0 +DamageType=LaserDamage +WeaponRange=600.0 +RechargeRate=4.0 +DischargeTime=0.2 +VitalSubsystem=False +AmmoModelFile=None +VideoObjectName=llaser.bgf +GraphicLength=2000 +HeatCostToFire=6.0 +ThermalResistivityCoefficient=0.0024 +AuxScreenNumber=0 +AuxScreenLabel=qllas.pcc +EngScreenLabel=ellas.pcc +SeekVoltage=0.6 +SeekVoltage=0.7 +SeekVoltage=0.8 +SeekVoltage=0.99 +SeekVoltageRecommendedIndex=2 +PipPosition=1 +PipPosition=1 +PipColor=1.0 0.0 0.0 +PipExtendedRange=False +StartTime=1.0 +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT/MODELS/LNTRK1.MOD b/CONTENT/BT/MODELS/LNTRK1.MOD new file mode 100644 index 0000000..3564bf2 --- /dev/null +++ b/CONTENT/BT/MODELS/LNTRK1.MOD @@ -0,0 +1,14 @@ +[video] +object=trk1.bgf +rubble=trk1d.bgf + +[collision] +name=trk1_cv.sld + +[gamedata] +class=LandmarkClassID +DamageZones=trk.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=desthit +TimeDelay=0.5 +CrunchExplosionModelFile=stephit diff --git a/CONTENT/BT/MODELS/LO1DMG.TBL b/CONTENT/BT/MODELS/LO1DMG.TBL new file mode 100644 index 0000000..aa1c49b --- /dev/null +++ b/CONTENT/BT/MODELS/LO1DMG.TBL @@ -0,0 +1,160 @@ +[LeftFoot] +DamageZone=dz_lfoot 0.5 +DamageZone=dz_ldleg 0.3 +DamageZone=dz_rfoot 0.2 + +[RightFoot] +DamageZone=dz_rfoot 0.5 +DamageZone=dz_rdleg 0.3 +DamageZone=dz_lfoot 0.2 + +[LeftLeg] +DamageZone=dz_luleg 0.4 +DamageZone=dz_ldleg 0.4 +DamageZone=dz_ruleg 0.1 +DamageZone=dz_rdleg 0.1 + +[RightLeg] +DamageZone=dz_ruleg 0.4 +DamageZone=dz_rdleg 0.4 +DamageZone=dz_luleg 0.1 +DamageZone=dz_ldleg 0.1 + +[LeftHip] +DamageZone=dz_luleg 0.4 +DamageZone=dz_hip 0.4 +DamageZone=dz_ltorso 0.1 +DamageZone=dz_rearltorso 0.1 + +[FrontHip] +DamageZone=dz_luleg 0.2 +DamageZone=dz_ruleg 0.2 +DamageZone=dz_hip 0.4 +DamageZone=dz_dtorso 0.2 + +[RearHip] +DamageZone=dz_luleg 0.2 +DamageZone=dz_ruleg 0.2 +DamageZone=dz_hip 0.4 +DamageZone=dz_reardtorso 0.2 + +[RightHip] +DamageZone=dz_ruleg 0.4 +DamageZone=dz_hip 0.4 +DamageZone=dz_rtorso 0.1 +DamageZone=dz_rearrtorso 0.1 + +[LeftWaist] +DamageZone=dz_ltorso 0.15 +DamageZone=dz_rearltorso 0.15 +DamageZone=dz_lgun 0.2 +DamageZone=dz_dtorso 0.25 +DamageZone=dz_reardtorso 0.25 + +[FrontWaist] +DamageZone=dz_rgun 0.1 +DamageZone=dz_lgun 0.1 +DamageZone=dz_ltorso 0.2 +DamageZone=dz_rtorso 0.2 +DamageZone=dz_dtorso 0.4 + +[RearWaist] +DamageZone=dz_rgun 0.1 +DamageZone=dz_lgun 0.1 +DamageZone=dz_rearltorso 0.2 +DamageZone=dz_rearrtorso 0.2 +DamageZone=dz_reardtorso 0.4 + +[RightWaist] +DamageZone=dz_rtorso 0.15 +DamageZone=dz_rearrtorso 0.15 +DamageZone=dz_rgun 0.2 +DamageZone=dz_dtorso 0.25 +DamageZone=dz_reardtorso 0.25 + +[LeftChest] +DamageZone=dz_larm 0.3 +DamageZone=dz_lgun 0.1 +DamageZone=dz_ltorso 0.2 +DamageZone=dz_rearltorso 0.2 +DamageZone=dz_utorso 0.1 +DamageZone=dz_rearutorso 0.1 + +[RightChest] +DamageZone=dz_rarm 0.3 +DamageZone=dz_rgun 0.1 +DamageZone=dz_rtorso 0.2 +DamageZone=dz_rearrtorso 0.2 +DamageZone=dz_utorso 0.1 +DamageZone=dz_rearutorso 0.1 + +[FrontChest] +DamageZone=dz_larm 0.1 +DamageZone=dz_rarm 0.1 +DamageZone=dz_ltorso 0.1 +DamageZone=dz_rtorso 0.1 +DamageZone=dz_utorso 0.5 +DamageZone=dz_searchlight 0.05 +DamageZone=dz_missle 0.05 + +[RearChest] +DamageZone=dz_larm 0.05 +DamageZone=dz_rarm 0.05 +DamageZone=dz_rearltorso 0.1 +DamageZone=dz_rearrtorso 0.1 +DamageZone=dz_rearutorso 0.6 +DamageZone=dz_utorso 0.05 +DamageZone=dz_missle 0.05 + +[TopLeft] +DamageZone=dz_utorso 0.6 +DamageZone=dz_missle 0.4 + +[TopRight] +DamageZone=dz_missle 0.6 +DamageZone=dz_utorso 0.4 + +// The data in this table is totally bogus. GDU 12-2-95 +[Layer1] +PieSlice=LeftFoot +PieSlice=RightFoot +RotateWithTorso=False + +[Layer2] +PieSlice=LeftLeg +PieSlice=RightLeg +RotateWithTorso=False + +[Layer3] +PieSlice=FrontHip +PieSlice=LeftHip +PieSlice=RearHip +PieSlice=RightHip +RotateWithTorso=False + +[Layer4] +PieSlice=FrontHip +PieSlice=LeftHip +PieSlice=RearHip +PieSlice=RightHip +RotateWithTorso=True + +[Layer5] +PieSlice=FrontWaist +PieSlice=LeftWaist +PieSlice=RearWaist +PieSlice=RightHip +RotateWithTorso=True + +[Layer6] +PieSlice=FrontChest +PieSlice=LeftChest +PieSlice=RearChest +PieSlice=RightHip +RotateWithTorso=True + +[Layer7] +PieSlice=TopLeft +PieSlice=TopRight +RotateWithTorso=False + diff --git a/CONTENT/BT/MODELS/LOK1.DMG b/CONTENT/BT/MODELS/LOK1.DMG new file mode 100644 index 0000000..78aa02b --- /dev/null +++ b/CONTENT/BT/MODELS/LOK1.DMG @@ -0,0 +1,189 @@ +// This file is intentionally empty and MUST be read-only! +[dz_dtorso] +ExplosionTable=lok1dmg.exp +DefaultEffectSiteName=siteedz_dtorso +WeaponDamagePoints=122 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.071429 +CriticalSubsystem=Condenser5 2 0.500000 +CriticalSubsystem=GeneratorD 10 0.500000 +CriticalSubsystem=Avionics 5 0.200000 +CriticalSubsystem=Torso 15 0.333333 +[dz_hip] +ExplosionTable=lok1dmg.exp +DefaultEffectSiteName=siteedz_hip +WeaponDamagePoints=122 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.071429 +CriticalSubsystem=Myomers 15 0.142857 +CriticalSubsystem=Gyroscope 15 0.333333 +CriticalSubsystem=Torso 15 0.333333 +[dz_larm] +ExplosionTable=lok1dmg.exp +DefaultEffectSiteName=siteedz_larm +WeaponDamagePoints=87 +VitalDamageZone=False +DescendOnDestruction=True +CriticalSubsystem=Condenser4 2 0.500000 +[dz_ldleg] +ExplosionTable=lok1dmg.exp +DefaultEffectSiteName=siteedz_ldleg +WeaponDamagePoints=90 +VitalDamageZone=True +LegDamageZone=LeftLeg +CriticalSubsystem=HeatSink 100 0.071429 +CriticalSubsystem=Myomers 15 0.142857 +[dz_lfoot] +ExplosionTable=lok1dmg.exp +DefaultEffectSiteName=siteedz_lfoot +WeaponDamagePoints=81 +VitalDamageZone=True +LegDamageZone=LeftLeg +CriticalSubsystem=Myomers 15 0.142857 +[dz_lgun] +ExplosionTable=lok1dmg.exp +DefaultEffectSiteName=siteedz_lgun +WeaponDamagePoints=80 +VitalDamageZone=False +DescendOnDestruction=True +CriticalSubsystem=Condenser4 2 0.500000 +CriticalSubsystem=PPC_1 15 1.000000 +CriticalSubsystem=LLaser_1 25 1.000000 +[dz_ltorso] +ExplosionTable=lok1dmg.exp +DefaultEffectSiteName=siteedz_ltorso +WeaponDamagePoints=118 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.071429 +CriticalSubsystem=Condenser1 2 0.500000 +CriticalSubsystem=GeneratorA 10 0.500000 +CriticalSubsystem=Avionics 5 0.200000 +CriticalSubsystem=MLaser_1 15 1.000000 +CriticalSubsystem=SLaser_1 25 1.000000 +[dz_luleg] +ExplosionTable=lok1dmg.exp +DefaultEffectSiteName=siteedz_luleg +WeaponDamagePoints=90 +VitalDamageZone=True +LegDamageZone=LeftLeg +CriticalSubsystem=HeatSink 100 0.071429 +CriticalSubsystem=Myomers 15 0.142857 +[dz_missle] +ExplosionTable=lok1dmg.exp +DefaultEffectSiteName=siteedz_missle +WeaponDamagePoints=45 +VitalDamageZone=False +DescendOnDestruction=True +CriticalSubsystem=HeatSink 100 0.071429 +CriticalSubsystem=AmmoBinSRM4 15 0.500000 +CriticalSubsystem=SRM4 15 1.000000 +[dz_rarm] +ExplosionTable=lok1dmg.exp +DefaultEffectSiteName=siteedz_rarm +WeaponDamagePoints=87 +VitalDamageZone=False +DescendOnDestruction=True +CriticalSubsystem=Condenser6 2 0.500000 +[dz_rdleg] +ExplosionTable=lok1dmg.exp +DefaultEffectSiteName=siteedz_rdleg +WeaponDamagePoints=90 +VitalDamageZone=True +LegDamageZone=RightLeg +CriticalSubsystem=HeatSink 100 0.071429 +CriticalSubsystem=Myomers 15 0.142857 +[dz_reardtorso] +ExplosionTable=lok1dmg.exp +DefaultEffectSiteName=siteedz_reardtorso +WeaponDamagePoints=81 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.071429 +CriticalSubsystem=Reservoir 10 0.250000 +CriticalSubsystem=Condenser5 2 0.500000 +CriticalSubsystem=GeneratorD 10 0.500000 +CriticalSubsystem=Torso 15 0.333333 +[dz_rearltorso] +ExplosionTable=lok1dmg.exp +DefaultEffectSiteName=siteedz_rearltorso +WeaponDamagePoints=100 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.071429 +CriticalSubsystem=Reservoir 10 0.250000 +CriticalSubsystem=Condenser1 2 0.500000 +CriticalSubsystem=GeneratorA 10 0.500000 +[dz_rearrtorso] +ExplosionTable=lok1dmg.exp +DefaultEffectSiteName=siteedz_rearrtorso +WeaponDamagePoints=100 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.071429 +CriticalSubsystem=Reservoir 10 0.250000 +CriticalSubsystem=Condenser3 2 0.500000 +CriticalSubsystem=GeneratorC 10 0.500000 +[dz_rearutorso] +ExplosionTable=lok1dmg.exp +DefaultEffectSiteName=siteedz_rearutorso +WeaponDamagePoints=113 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.071429 +CriticalSubsystem=Reservoir 10 0.250000 +CriticalSubsystem=Condenser2 2 0.500000 +CriticalSubsystem=GeneratorB 10 0.500000 +CriticalSubsystem=Gyroscope 30 0.333333 +[dz_rfoot] +ExplosionTable=lok1dmg.exp +DefaultEffectSiteName=siteedz_rfoot +WeaponDamagePoints=81 +VitalDamageZone=True +LegDamageZone=RightLeg +CriticalSubsystem=Myomers 15 0.142857 +[dz_rgun] +ExplosionTable=lok1dmg.exp +DefaultEffectSiteName=siteedz_rgun +WeaponDamagePoints=80 +VitalDamageZone=False +DescendOnDestruction=True +CriticalSubsystem=Condenser6 2 0.500000 +CriticalSubsystem=PPC_2 15 1.000000 +CriticalSubsystem=LLaser_2 25 1.000000 +[dz_rtorso] +ExplosionTable=lok1dmg.exp +DefaultEffectSiteName=siteedz_rtorso +WeaponDamagePoints=118 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.071429 +CriticalSubsystem=Condenser3 2 0.500000 +CriticalSubsystem=GeneratorC 10 0.500000 +CriticalSubsystem=Avionics 5 0.200000 +CriticalSubsystem=MLaser_2 15 1.000000 +CriticalSubsystem=SLaser_2 25 1.000000 +CriticalSubsystem=AmmoBinSRM4 15 0.500000 +[dz_ruleg] +ExplosionTable=lok1dmg.exp +DefaultEffectSiteName=siteedz_ruleg +WeaponDamagePoints=90 +VitalDamageZone=True +LegDamageZone=RightLeg +CriticalSubsystem=HeatSink 100 0.071429 +CriticalSubsystem=Myomers 15 0.142857 +[dz_searchlight] +ExplosionTable=lok1dmg.exp +DefaultEffectSiteName=siteedz_searchlight +WeaponDamagePoints=50 +VitalDamageZone=False +DescendOnDestruction=True +CriticalSubsystem=Avionics 5 0.200000 +CriticalSubsystem=HUD 15 0.500000 +CriticalSubsystem=Searchlight 45 1.000000 +CriticalSubsystem=ThermalSight 30 1.000000 +[dz_utorso] +ExplosionTable=lok1dmg.exp +DefaultEffectSiteName=siteedz_utorso +WeaponDamagePoints=130 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.071429 +CriticalSubsystem=Condenser2 2 0.500000 +CriticalSubsystem=GeneratorB 10 0.500000 +CriticalSubsystem=Avionics 5 0.200000 +CriticalSubsystem=Gyroscope 30 0.333333 +CriticalSubsystem=HUD 15 0.500000 diff --git a/CONTENT/BT/MODELS/LOK1.MOD b/CONTENT/BT/MODELS/LOK1.MOD new file mode 100644 index 0000000..309fe0f --- /dev/null +++ b/CONTENT/BT/MODELS/LOK1.MOD @@ -0,0 +1,136 @@ +[video] +skeleton=lok1.skl +skeletona=lox1.skl +destroyed=lok1d.skl +//destroyeda=lox1d.skl +dzm=lok1skin.dzm +dzma=lox1skin.dzm + +[audio] +internal=lok1int.scp +external=lok1ext.scp + +[collision] +name=lok_cv.sld + +[gauge] +image=thor_ga.gim + +[gaugeMissionReview] +pixelmap=lok1_mr.pcc + +[gamedata] +class=MechClassID +MoverMass=65000.0 +MomentOfInertia=1.75 3.125 1.75 +PositiveLinearDragCoefficients=0.14 0.4 0.07 +NegativeLinearDragCoefficients=0.14 0.2 0.08 +AngularDragCoefficients=0.3 0.5 0.3 +FrictionCoefficient=0.1 +ElasticityCoefficient=0.2 +MinimumBounceSpeed=0.2 +MaxAcceleration=15 +AnimationPrefix=lok +Subsystems=lok1.sub +DamageZones=lok1.dmg +DamageLookupTable=lok1dmg.tbl +RelativeMechValue=1.0 +LookLeftAngle=55 +LookRightAngle=-55 +LookBackAngle=0 +LookFrontAngle=-10 +WalkingTurnRate=50 +RunningTurnRate=40 +DeathEffect=lokdead +CameraOffset=0.0 5.0 1.0 +DeathSplashDamage=5 +DeathSplashRadius=50 +TimeDelay=0.3 + +MaxUnstableAcceleration=33.0 +UnstableAccelerationEffect=0.5 +UnstableGunTheEngineEffect=0.8 +UnstableSuperStopEffect=0.25 +UnstableHighVelocityEffect=0.25 +UnstableStopedTurnEffect=1.0 +SuperStopAcceleration=15.0 + +ThrottleAdjustment=1.0 + +UpdateTurnDegreeDiffrence=3 +UpdateTurnVelocityDiffrence=0.045 +UpdatePositionDiffrence=0.3 + +ShadowJointName=jointshadow + +[ControlMappings] +Thrustmaster=lok1thr.ctl +L4=lok1l4.ctl + +[animations] +animationtransition=lokswr.ani +animation=lokwwl.ani +animation=lokwwr.ani +animation=lokwsr.ani +animation=lokwsl.ani +animationtransition=lokwrl.ani +animationtransition=lokwrr.ani +animation=lokrrl.ani +animation=lokrrr.ani +animation=lokrwl.ani +animation=lokrwr.ani +animation=lokbmp.ani + +animationtransition=lokswri.ani +animation=lokwwli.ani +animation=lokwwri.ani +animation=lokwsri.ani +animation=lokwsli.ani +animationtransition=lokwrli.ani +animationtransition=lokwrri.ani +animation=lokrrli.ani +animation=lokrrri.ani +animation=lokrwli.ani +animation=lokrwri.ani +animation=lokbmpi.ani + +animation=lokbbl.ani +animation=lokbbr.ani +animation=lokbsl.ani +animation=lokbsr.ani +animationtransition=loksbl.ani +animationtransition=loksbr.ani +animation=lokbbli.ani +animation=lokbbri.ani +animation=lokbsli.ani +animation=lokbsri.ani +animationtransition=loksbli.ani +animationtransition=loksbri.ani + +animation=lokggl.ani +animation=lokggr.ani +animation=lokgsl.ani +animation=lokgsr.ani +animationtransition=lokwgl.ani +animationtransition=lokwgr.ani + +animation=lokggli.ani +animation=lokggri.ani +animation=lokgsli.ani +animation=lokgsri.ani +animationtransition=lokwgli.ani +animationtransition=lokwgri.ani + +animation=loksqu.ani +animation=loksqd.ani +animation=loksqui.ani +animation=loksqdi.ani + +animation=loktrn.ani +animation=loktrni.ani + +//animation=lokff.ani +//animation=lokfb.ani +//animation=lokfl.ani +//animation=lokfr.ani + diff --git a/CONTENT/BT/MODELS/LOK1.SUB b/CONTENT/BT/MODELS/LOK1.SUB new file mode 100644 index 0000000..551893b --- /dev/null +++ b/CONTENT/BT/MODELS/LOK1.SUB @@ -0,0 +1,226 @@ +[HeatSink] +Type=HeatSinkClassID +Include=heatsnk.sub +HeatSinkCount=18 +SubsystemFlags=DontReplicateFlag + +[Reservoir] +Type=ReservoirClassID +Include=reserve.sub +HeatSink=HeatSink +SegmentPageName=siteeyepoint + +[Condenser1] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser2] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser3] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser4] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser5] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser6] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[GeneratorA] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser1 +SubsystemFlags=DontReplicateFlag + +[GeneratorB] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser2 +SubsystemFlags=DontReplicateFlag + +[GeneratorC] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser3 +SubsystemFlags=DontReplicateFlag + +[GeneratorD] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser5 +SubsystemFlags=DontReplicateFlag + +[Avionics] +Type=SensorClassID +Include=sensor.sub +HeatSink=Condenser2 +VoltageSource=GeneratorD +AuxScreenNumber=5 +SubsystemFlags=DontReplicateFlag + +AuxScreenPlacement=2 +[Myomers] +Type=MyomersClassID +Include=myomers.sub +HeatSink=Condenser5 +VoltageSource=GeneratorD +AuxScreenNumber=6 +SubsystemFlags=DontReplicateFlag + +AuxScreenPlacement=0 +[Gyroscope] +Type=GyroscopeClassID +Include=gyro.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag + +[Torso] +Type=TorsoClassID +Include=torso.sub +WatchedSubsystem=Myomers + +HorizontalRotationPerSecond=45 +VerticalRotationPerSecond=30 +HorizontalLimitRight=-120 +HorizontalLimitLeft=120 +[HUD] +Type=HUDClassID +Include=hud.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag + +[Searchlight] +Type=SearchlightClassID +Include=srchlite.sub +WatchedSubsystem=Avionics +SegmentPageName=sitelight + +[ThermalSight] +Type=ThermalSightClassID +Include=Thermal.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag +[PPC_1] +Type=PPCClassID +Include=ppc.sub +SegmentPageName=sitelugunport +SiteOffset=-0.2 0 0 +PipPosition=1 +VoltageSource=GeneratorA +HeatSink=Condenser4 +AuxScreenNumber=1 +AuxScreenPlacement=4 +[PPC_2] +Type=PPCClassID +Include=ppc.sub +SegmentPageName=siterugunport +SiteOffset=-0.2 0 0 +PipPosition=2 +VoltageSource=GeneratorC +HeatSink=Condenser6 +AuxScreenNumber=10 +AuxScreenPlacement=6 +[LLaser_1] +Type=EmitterClassID +Include=llaser.sub +SegmentPageName=siteldgunport +SiteOffset=0.2 0 0 +PipPosition=1 +VoltageSource=GeneratorA +HeatSink=Condenser4 +AuxScreenNumber=3 +AuxScreenPlacement=4 +[LLaser_2] +Type=EmitterClassID +Include=llaser.sub +SegmentPageName=siterdgunport +SiteOffset=0.2 0 0 +PipPosition=2 +VoltageSource=GeneratorC +HeatSink=Condenser6 +AuxScreenNumber=12 +AuxScreenPlacement=6 +[MLaser_1] +Type=EmitterClassID +Include=mlaser.sub +SegmentPageName=siteltorsoport +SiteOffset=0.2 0 0 +PipPosition=1 +VoltageSource=GeneratorA +HeatSink=Condenser1 +AuxScreenNumber=2 +AuxScreenPlacement=1 +[MLaser_2] +Type=EmitterClassID +Include=mlaser.sub +SegmentPageName=sitertorsoport +SiteOffset=0.2 0 0 +PipPosition=2 +VoltageSource=GeneratorC +HeatSink=Condenser3 +AuxScreenNumber=9 +AuxScreenPlacement=3 +[SLaser_1] +Type=EmitterClassID +Include=slaser.sub +SegmentPageName=siteltorsoport +SiteOffset=-0.2 0 0 +PipPosition=1 +VoltageSource=GeneratorA +HeatSink=Condenser1 +AuxScreenNumber=4 +AuxScreenPlacement=1 +[SLaser_2] +Type=EmitterClassID +Include=slaser.sub +SegmentPageName=sitertorsoport +SiteOffset=-0.2 0 0 +PipPosition=2 +VoltageSource=GeneratorC +HeatSink=Condenser3 +AuxScreenNumber=11 +AuxScreenPlacement=3 +[AmmoBinSRM4] +Type=AmmoBinClassID +Include=ammstrk4.sub +WatchedSubsystem=SRM4 +AmmoCount=12 +[SRM4] +AmmoBin=AmmoBinSRM4 +Type=MissileLauncherClassID +Include=strk4.sub +SegmentPageName=sitemissleport +PipPosition=1 +VoltageSource=GeneratorB +HeatSink=Condenser2 +AuxScreenNumber=8 +AuxScreenPlacement=7 +[MessageManager] +Type=SubsystemMessageManagerClassID +ExplosionModelFile=majhit 1.0 +TerrainHitExplosion=gndhit +RendererCompensateTime=0.3 +[MechTech] +Type=MechTechClassID +AlarmModel=mechalrm +SubsystemFlags=DontReplicateFlag diff --git a/CONTENT/BT/MODELS/LOK1DMG.EXP b/CONTENT/BT/MODELS/LOK1DMG.EXP new file mode 100644 index 0000000..c9b1598 --- /dev/null +++ b/CONTENT/BT/MODELS/LOK1DMG.EXP @@ -0,0 +1,28 @@ +[OneDamage] +ExplosionModelFile=dam1hit +DamageLevel=0.2 +TimeDelay=0.0 + +[TwoDamage] +ExplosionModelFile=dam2hit +DamageLevel=0.4 +TimeDelay=0.0 + +[ThreeDamage] +ExplosionModelFile=dam3hit +DamageLevel=0.6 +TimeDelay=0.0 + +[FourDamage] +ExplosionModelFile=dam4hit +DamageLevel=0.8 +TimeDelay=0.0 + +[DestroyedExplosion] +ExplosionModelFile=desthit +GraphicState=Destroyed + +[GoneExplosion] +ExplosionModelFile=desthit +GraphicState=Gone + diff --git a/CONTENT/BT/MODELS/LOK1DMG.TBL b/CONTENT/BT/MODELS/LOK1DMG.TBL new file mode 100644 index 0000000..b39d8cc --- /dev/null +++ b/CONTENT/BT/MODELS/LOK1DMG.TBL @@ -0,0 +1,189 @@ +[LeftFoot] +DamageZone=dz_lfoot 0.5 +DamageZone=dz_ldleg 0.3 +DamageZone=dz_rfoot 0.2 + +[RightFoot] +DamageZone=dz_rfoot 0.5 +DamageZone=dz_rdleg 0.3 +DamageZone=dz_lfoot 0.2 + +[LeftLeg] +DamageZone=dz_luleg 0.4 +DamageZone=dz_ldleg 0.4 +DamageZone=dz_ruleg 0.1 +DamageZone=dz_rdleg 0.1 + +[RightLeg] +DamageZone=dz_ruleg 0.4 +DamageZone=dz_rdleg 0.4 +DamageZone=dz_luleg 0.1 +DamageZone=dz_ldleg 0.1 + +[LeftHip] +DamageZone=dz_luleg 0.5 +DamageZone=dz_hip 0.2 +DamageZone=dz_lgun 0.3 + +[FrontHip] +DamageZone=dz_luleg 0.25 +DamageZone=dz_ruleg 0.25 +DamageZone=dz_hip 0.3 +DamageZone=dz_dtorso 0.2 + +[RearHip] +DamageZone=dz_luleg 0.25 +DamageZone=dz_ruleg 0.25 +DamageZone=dz_hip 0.3 +DamageZone=dz_reardtorso 0.2 + +[RightHip] +DamageZone=dz_ruleg 0.5 +DamageZone=dz_hip 0.2 +DamageZone=dz_rgun 0.3 + +[LeftWaist] +DamageZone=dz_ltorso 0.2 +DamageZone=dz_rearltorso 0.1 +DamageZone=dz_lgun 0.2 +DamageZone=dz_dtorso 0.25 +DamageZone=dz_reardtorso 0.25 + +[FrontWaist] +DamageZone=dz_rgun 0.05 +DamageZone=dz_lgun 0.05 +DamageZone=dz_ltorso 0.25 +DamageZone=dz_rtorso 0.25 +DamageZone=dz_dtorso 0.4 + +[RearWaist] +DamageZone=dz_rgun 0.05 +DamageZone=dz_lgun 0.05 +DamageZone=dz_rearltorso 0.25 +DamageZone=dz_rearrtorso 0.25 +DamageZone=dz_reardtorso 0.4 + +[RightWaist] +DamageZone=dz_rtorso 0.2 +DamageZone=dz_rearrtorso 0.1 +DamageZone=dz_rgun 0.2 +DamageZone=dz_dtorso 0.25 +DamageZone=dz_reardtorso 0.25 + +[LeftChest] +DamageZone=dz_larm 0.3 +DamageZone=dz_ltorso 0.2 +DamageZone=dz_rearltorso 0.2 +DamageZone=dz_utorso 0.2 +DamageZone=dz_rearutorso 0.1 + +[RightChest] +DamageZone=dz_rarm 0.3 +DamageZone=dz_rtorso 0.2 +DamageZone=dz_rearrtorso 0.2 +DamageZone=dz_utorso 0.2 +DamageZone=dz_rearutorso 0.1 + +[FrontChest] +DamageZone=dz_larm 0.05 +DamageZone=dz_rarm 0.05 +DamageZone=dz_ltorso 0.15 +DamageZone=dz_rtorso 0.15 +DamageZone=dz_utorso 0.5 +DamageZone=dz_searchlight 0.05 +DamageZone=dz_missle 0.05 + +[RearChest] +DamageZone=dz_larm 0.05 +DamageZone=dz_rarm 0.05 +DamageZone=dz_rearltorso 0.1 +DamageZone=dz_rearrtorso 0.1 +DamageZone=dz_rearutorso 0.6 +DamageZone=dz_utorso 0.05 +DamageZone=dz_missle 0.05 + +[TopLeft] +DamageZone=dz_utorso 0.6 +DamageZone=dz_missle 0.4 + +[TopRight] +DamageZone=dz_missle 0.6 +DamageZone=dz_utorso 0.4 + +// The data in this table is totally bogus. GDU 12-2-95 +[Layer1] +PieSlice=RightFoot +PieSlice=RightFoot +PieSlice=LeftFoot +PieSlice=LeftFoot +PieSlice=LeftFoot +PieSlice=LeftFoot +PieSlice=RightFoot +PieSlice=RightFoot +RotateWithTorso=False + +[Layer2] +PieSlice=RightLeg +PieSlice=RightLeg +PieSlice=LeftLeg +PieSlice=LeftLeg +PieSlice=LeftLeg +PieSlice=LeftLeg +PieSlice=RightLeg +PieSlice=RightLeg +RotateWithTorso=False + +[Layer3] +PieSlice=RightHip +PieSlice=FrontHip +PieSlice=FrontHip +PieSlice=LeftHip +PieSlice=LeftHip +PieSlice=RearHip +PieSlice=RearHip +PieSlice=RightHip +RotateWithTorso=False + +[Layer4] +PieSlice=RightHip +PieSlice=FrontHip +PieSlice=FrontHip +PieSlice=LeftHip +PieSlice=LeftHip +PieSlice=RearHip +PieSlice=RearHip +PieSlice=RightHip +RotateWithTorso=True + +[Layer5] +PieSlice=RightWaist +PieSlice=FrontWaist +PieSlice=FrontWaist +PieSlice=LeftWaist +PieSlice=LeftWaist +PieSlice=RearWaist +PieSlice=RearWaist +PieSlice=RightWaist +RotateWithTorso=True + +[Layer6] +PieSlice=RightChest +PieSlice=FrontChest +PieSlice=FrontChest +PieSlice=LeftChest +PieSlice=LeftChest +PieSlice=RearChest +PieSlice=RearChest +PieSlice=RightChest +RotateWithTorso=True + +[Layer7] +PieSlice=TopRight +PieSlice=TopRight +PieSlice=TopLeft +PieSlice=TopLeft +PieSlice=TopLeft +PieSlice=TopLeft +PieSlice=TopRight +PieSlice=TopRight +RotateWithTorso=True diff --git a/CONTENT/BT/MODELS/LOK1L4.CTL b/CONTENT/BT/MODELS/LOK1L4.CTL new file mode 100644 index 0000000..52ccd6b --- /dev/null +++ b/CONTENT/BT/MODELS/LOK1L4.CTL @@ -0,0 +1,1060 @@ +[StickPosition_JP] +//----------------------------------------------------------------------- +// Joystick +//----------------------------------------------------------------------- +IOMapping=JoystickPhysical +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=StickPosition +Mode=ModeAlwaysActive + +[Throttle_ST] +//----------------------------------------------------------------------- +// Throttle +//----------------------------------------------------------------------- +IOMapping=ScalarThrottle +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=ThrottlePosition +Mode=ModeAlwaysActive + +//----------------------------------------------------------------------- +// Misc. switches +//----------------------------------------------------------------------- +[ReverseThrust_BT1] +IOMapping=ButtonThrottle1 +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=ReverseThrust +Mode=ModeAlwaysActive + +[TorsoCenter_BJHU] +IOMapping=ButtonJoystickHatUp +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoCenter +Mode=ModeAlwaysActive + +[LookLeft_BJHL] +IOMapping=ButtonJoystickHatLeft +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=LookLeft +Mode=ModeAlwaysActive + +[LookRight_BJHR] +IOMapping=ButtonJoystickHatRight +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=LookRight +Mode=ModeAlwaysActive + +[LookBack_BJHD] +IOMapping=ButtonJoystickHatDown +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=LookBehind +Mode=ModeAlwaysActive + +//----------------------------------------------------------------------- +// Secondary mappings +//----------------------------------------------------------------------- +[Button_Sec_1] // Zoom radar in (magnify image) +IOMapping=ButtonSecondary1 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=ZoomIn +Mode=ModeAlwaysActive + +[Button_Sec_2] // Zoom radar out (reduce image) +IOMapping=ButtonSecondary2 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=ZoomOut +Mode=ModeAlwaysActive + +// +// 'Heat vision' mapped to secondary +// SGM 1/6/97 + +[Button_Sec_3] // Toggle heat vision +IOMapping=ButtonSecondary3 +Type=EventMapping +Subsystem=ThermalSight +MessageID=ToggleLamp +Mode=ModeAlwaysActive + +// +// 'Duck' remapped to real message and location. +// GDU 7/9/96 + +[Button_Sec_4] // Request crouch position +IOMapping=ButtonSecondary4 +Type=EventMapping +MessageID=DuckRequest +Mode=ModeAlwaysActive + +[Button_Sec_5] // Toggle searchlight +IOMapping=ButtonSecondary5 +Type=EventMapping +Subsystem=Searchlight +MessageID=ToggleLamp +Mode=ModeAlwaysActive + +[Button_Sec_6] // Cycle through damage display modes +IOMapping=ButtonSecondary6 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=CycleDisplayMode +Mode=ModeAlwaysActive + +[Button_Sec_7] // Cycle through control modes +IOMapping=ButtonSecondary7 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=CycleControlMode +Mode=ModeAlwaysActive + +// ButtonSecondary8 presently unused + +[Button_Sec_9] // Toggle generator 'a' +IOMapping=ButtonSecondary9 +Type=EventMapping +Subsystem=GeneratorA +MessageID=ToggleGeneratorOnOff +Mode=ModeAlwaysActive + +[Button_Sec_10] // Toggle generator 'b' +IOMapping=ButtonSecondary10 +Type=EventMapping +Subsystem=GeneratorB +MessageID=ToggleGeneratorOnOff +Mode=ModeAlwaysActive + +[Button_Sec_11] // Toggle generator 'c' +IOMapping=ButtonSecondary11 +Type=EventMapping +Subsystem=GeneratorC +MessageID=ToggleGeneratorOnOff +Mode=ModeAlwaysActive + +[Button_Sec_12] // Toggle generator 'd' +IOMapping=ButtonSecondary12 +Type=EventMapping +Subsystem=GeneratorD +MessageID=ToggleGeneratorOnOff +Mode=ModeAlwaysActive + +//----------------------------------------- +// Heat Management Screen Mappings +//----------------------------------------- +[Condenser1_Button] +IOMapping=ButtonAuxUpperLeft1 +Type=EventMapping +Subsystem=Condenser1 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Condenser2_Button] +IOMapping=ButtonAuxUpperLeft2 +Type=EventMapping +Subsystem=Condenser2 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Condenser3_Button] +IOMapping=ButtonAuxUpperLeft3 +Type=EventMapping +Subsystem=Condenser3 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Reservoir_Button] +IOMapping=ButtonAuxUpperLeft4 +Type=EventMapping +Subsystem=Reservoir +MessageID=InjectCoolant +Mode=ModeAlwaysActive + +[Condenser4_Button] +IOMapping=ButtonAuxUpperLeft5 +Type=EventMapping +Subsystem=Condenser4 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Condenser5_Button] +IOMapping=ButtonAuxUpperLeft6 +Type=EventMapping +Subsystem=Condenser5 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Condenser6_Button] +IOMapping=ButtonAuxUpperLeft7 +Type=EventMapping +Subsystem=Condenser6 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Reduce_Button] +IOMapping=ButtonAuxUpperLeft8 +Type=EventMapping +MessageID=BalanceCoolant +Mode=ModeAlwaysActive + +//----------------------------------------------------------------------- +// Aux 1 mappings +//----------------------------------------------------------------------- +//------------------------------------------ +// Aux 1 'Quad screen' mappings +//------------------------------------------ +[MFD1_to_Mode_1] // To mode 1 +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Eng1 +Mode=ModeMFD1Quad + +[MFD1_Configure_Trigger_1] // Configure +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Subsystem=PPC_1 +MessageID=ConfigureMappables +Mode=ModeMFD1Quad + +[MFD1_to_Mode_2] // To mode 2 +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Eng2 +Mode=ModeMFD1Quad + +[MFD1_Configure_Trigger_2] // Configure +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Subsystem=MLaser_1 +MessageID=ConfigureMappables +Mode=ModeMFD1Quad + +[MFD1_to_Mode_3] // To mode 3 +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Eng3 +Mode=ModeMFD1Quad + +[MFD1_Configure_Trigger_3] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Subsystem=LLaser_1 +MessageID=ConfigureMappables +Mode=ModeMFD1Quad + +[MFD1_to_Mode_4] // To mode 4 +IOMapping=ButtonAuxLowerLeft7 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Eng4 +Mode=ModeMFD1Quad + +[MFD1_Configure_Trigger_4] // Configure +IOMapping=ButtonAuxLowerLeft8 +Type=EventMapping +Subsystem=SLaser_1 +MessageID=ConfigureMappables +Mode=ModeMFD1Quad + +//---------------------------------------------- +// Aux 1 'Mode 1' mappings, AuxScreenNumber=1 +//---------------------------------------------- +[Aux_1_Mode_1_to_MFD1] +IOMapping=ButtonAuxLowerLeft8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Quad +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_Select_GeneratorA] +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Subsystem=PPC_1 +MessageID=SelectGeneratorA +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_Select_GeneratorB] +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Subsystem=PPC_1 +MessageID=SelectGeneratorB +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_Select_GeneratorC] +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Subsystem=PPC_1 +MessageID=SelectGeneratorC +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_Select_GeneratorD] +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Subsystem=PPC_1 +MessageID=SelectGeneratorD +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_OPTION] +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Subsystem=PPC_1 +MessageID=ToggleSeekVoltage +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Subsystem=PPC_1 +MessageID=ToggleGeneratorMode +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_ToggleCooling] +IOMapping=ButtonAuxLowerLeft7 +Type=EventMapping +Subsystem=PPC_1 +MessageID=ToggleCooling +Mode=ModeMFD1Eng1 + +//-------------------------------------------- +// Aux 1 'Mode 2' mappings, AuxScreenNumber=2 +//-------------------------------------------- +[Aux_1_Mode_2_to_MFD1] +IOMapping=ButtonAuxLowerLeft8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Quad +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_Select_GeneratorA] +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Subsystem=MLaser_1 +MessageID=SelectGeneratorA +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_Select_GeneratorB] +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Subsystem=MLaser_1 +MessageID=SelectGeneratorB +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_Select_GeneratorC] +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Subsystem=MLaser_1 +MessageID=SelectGeneratorC +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_Select_GeneratorD] +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Subsystem=MLaser_1 +MessageID=SelectGeneratorD +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_OPTION] +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Subsystem=MLaser_1 +MessageID=ToggleSeekVoltage +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Subsystem=MLaser_1 +MessageID=ToggleGeneratorMode +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_ToggleCooling] +IOMapping=ButtonAuxLowerLeft7 +Type=EventMapping +Subsystem=MLaser_1 +MessageID=ToggleCooling +Mode=ModeMFD1Eng2 + +//--------------------------------------------- +// Aux 1 'Mode 3' mappings, AuxScreenNumber=3 +//--------------------------------------------- +[Aux_1_Mode_3_to_MFD1] +IOMapping=ButtonAuxLowerLeft8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Quad +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_Select_GeneratorA] +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Subsystem=LLaser_1 +MessageID=SelectGeneratorA +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_Select_GeneratorB] +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Subsystem=LLaser_1 +MessageID=SelectGeneratorB +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_Select_GeneratorC] +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Subsystem=LLaser_1 +MessageID=SelectGeneratorC +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_Select_GeneratorD] +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Subsystem=LLaser_1 +MessageID=SelectGeneratorD +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_OPTION] +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Subsystem=LLaser_1 +MessageID=ToggleSeekVoltage +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Subsystem=LLaser_1 +MessageID=ToggleGeneratorMode +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_ToggleCooling] +IOMapping=ButtonAuxLowerLeft7 +Type=EventMapping +Subsystem=LLaser_1 +MessageID=ToggleCooling +Mode=ModeMFD1Eng3 + +//-------------------------------------------- +// Aux 1 "Mode 4" Mappings, AuxScreenNumber=4 +//-------------------------------------------- +[Aux_1_Mode_4_to_MFD1] +IOMapping=ButtonAuxLowerLeft8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Quad +Mode=ModeMFD1Eng4 + +[Aux_1_Mode_4_Select_GeneratorA] +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Subsystem=SLaser_1 +MessageID=SelectGeneratorA +Mode=ModeMFD1Eng4 + +[Aux_1_Mode_4_Select_GeneratorB] +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Subsystem=SLaser_1 +MessageID=SelectGeneratorB +Mode=ModeMFD1Eng4 + +[Aux_1_Mode_4_Select_GeneratorC] +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Subsystem=SLaser_1 +MessageID=SelectGeneratorC +Mode=ModeMFD1Eng4 + +[Aux_1_Mode_4_Select_GeneratorD] +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Subsystem=SLaser_1 +MessageID=SelectGeneratorD +Mode=ModeMFD1Eng4 + +[Aux_1_Mode_4_OPTION] +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Subsystem=SLaser_1 +MessageID=ToggleSeekVoltage +Mode=ModeMFD1Eng4 + +[Aux_1_Mode_4_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Subsystem=SLaser_1 +MessageID=ToggleGeneratorMode +Mode=ModeMFD1Eng4 + +[Aux_1_Mode_4_ToggleCooling] +IOMapping=ButtonAuxLowerLeft7 +Type=EventMapping +Subsystem=SLaser_1 +MessageID=ToggleCooling +Mode=ModeMFD1Eng4 + + +//----------------------------------------------------------------------- +// Aux 2 mappings +//----------------------------------------------------------------------- +//------------------------------------------ +// Aux 2 'Quad screen' mappings +//------------------------------------------ +[MFD2_to_Mode_1] +IOMapping=ButtonAuxUpperCenter1 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Eng1 +Mode=ModeMFD2Quad + +[MFD2_to_Mode_2] +IOMapping=ButtonAuxUpperCenter3 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Eng2 +Mode=ModeMFD2Quad + +[MFD2_to_Mode_4] +IOMapping=ButtonAuxUpperCenter7 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Eng4 +Mode=ModeMFD2Quad + +[MFD2_Configure_Trigger_4] +IOMapping=ButtonAuxUpperCenter8 +Type=EventMapping +Subsystem=SRM4 +MessageID=ConfigureMappables +Mode=ModeMFD2Quad + +//-------------------------------------------- +// Aux 2 'Mode 1' mappings, AuxScreenNumber=9 +//-------------------------------------------- +[Aux_2_Mode_1_to_MFD2] +IOMapping=ButtonAuxUpperCenter8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Quad +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_Select_GeneratorA] +IOMapping=ButtonAuxUpperCenter1 +Type=EventMapping +Subsystem=Avionics +MessageID=SelectGeneratorA +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_Select_GeneratorB] +IOMapping=ButtonAuxUpperCenter2 +Type=EventMapping +Subsystem=Avionics +MessageID=SelectGeneratorB +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_Select_GeneratorC] +IOMapping=ButtonAuxUpperCenter3 +Type=EventMapping +Subsystem=Avionics +MessageID=SelectGeneratorC +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_Select_GeneratorD] +IOMapping=ButtonAuxUpperCenter4 +Type=EventMapping +Subsystem=Avionics +MessageID=SelectGeneratorD +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_ToggleGeneratorMode] +IOMapping=ButtonAuxUpperCenter6 +Type=EventMapping +Subsystem=Avionics +MessageID=ToggleGeneratorMode +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_ToggleCooling] +IOMapping=ButtonAuxUpperCenter7 +Type=EventMapping +Subsystem=Avionics +MessageID=ToggleCooling +Mode=ModeMFD2Eng1 + +//-------------------------------------------- +// Aux 2 'Mode 2' mappings, AuxScreenNumber=10 +//-------------------------------------------- +[Aux_2_Mode_2_to_MFD2] +IOMapping=ButtonAuxUpperCenter8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Quad +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_Select_GeneratorA] +IOMapping=ButtonAuxUpperCenter1 +Type=EventMapping +Subsystem=Myomers +MessageID=SelectGeneratorA +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_Select_GeneratorB] +IOMapping=ButtonAuxUpperCenter2 +Type=EventMapping +Subsystem=Myomers +MessageID=SelectGeneratorB +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_Select_GeneratorC] +IOMapping=ButtonAuxUpperCenter3 +Type=EventMapping +Subsystem=Myomers +MessageID=SelectGeneratorC +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_Select_GeneratorD] +IOMapping=ButtonAuxUpperCenter4 +Type=EventMapping +Subsystem=Myomers +MessageID=SelectGeneratorD +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_OPTION] +IOMapping=ButtonAuxUpperCenter5 +Type=EventMapping +Subsystem=Myomers +MessageID=ToggleSeekVoltage +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_ToggleGeneratorMode] +IOMapping=ButtonAuxUpperCenter6 +Type=EventMapping +Subsystem=Myomers +MessageID=ToggleGeneratorMode +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_ToggleCooling] +IOMapping=ButtonAuxUpperCenter7 +Type=EventMapping +Subsystem=Myomers +MessageID=ToggleCooling +Mode=ModeMFD2Eng2 + +//-------------------------------------------- +// Aux 3 'Mode 3' mappings, AuxScreenNumber=11 +//-------------------------------------------- +[Aux_2_Mode_4_to_MFD2] +IOMapping=ButtonAuxUpperCenter8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Quad +Mode=ModeMFD2Eng4 + +[Aux_2_Mode_4_Select_GeneratorA] +IOMapping=ButtonAuxUpperCenter1 +Type=EventMapping +Subsystem=SRM4 +MessageID=SelectGeneratorA +Mode=ModeMFD2Eng4 + +[Aux_2_Mode_4_Select_GeneratorB] +IOMapping=ButtonAuxUpperCenter2 +Type=EventMapping +Subsystem=SRM4 +MessageID=SelectGeneratorB +Mode=ModeMFD2Eng4 + +[Aux_2_Mode_4_Select_GeneratorC] +IOMapping=ButtonAuxUpperCenter3 +Type=EventMapping +Subsystem=SRM4 +MessageID=SelectGeneratorC +Mode=ModeMFD2Eng4 + +[Aux_2_Mode_4_Select_GeneratorD] +IOMapping=ButtonAuxUpperCenter4 +Type=EventMapping +Subsystem=SRM4 +MessageID=SelectGeneratorD +Mode=ModeMFD2Eng4 + +[Aux_2_Mode_4_OPTION] +IOMapping=ButtonAuxUpperCenter5 +Type=EventMapping +Subsystem=SRM4 +MessageID=EjectAmmo +Mode=ModeMFD2Eng4 + +[Aux_2_Mode_4_ToggleGeneratorMode] +IOMapping=ButtonAuxUpperCenter6 +Type=EventMapping +Subsystem=SRM4 +MessageID=ToggleGeneratorMode +Mode=ModeMFD2Eng4 + +[Aux_2_Mode_4_ToggleCooling] +IOMapping=ButtonAuxUpperCenter7 +Type=EventMapping +Subsystem=SRM4 +MessageID=ToggleCooling +Mode=ModeMFD2Eng4 + + +//----------------------------------------------------------------------- +// Aux 3 mappings +//----------------------------------------------------------------------- +//------------------------------------------ +// Aux 3 'Quad screen' mappings +//------------------------------------------ +[MFD3_to_Mode_1] +IOMapping=ButtonAuxLowerRight1 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Eng1 +Mode=ModeMFD3Quad + +[MFD3_Configure_Trigger_1] +IOMapping=ButtonAuxLowerRight2 +Type=EventMapping +Subsystem=MLaser_2 +MessageID=ConfigureMappables +Mode=ModeMFD3Quad + +[MFD3_to_Mode_2] +IOMapping=ButtonAuxLowerRight3 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Eng2 +Mode=ModeMFD3Quad + +[MFD3_Configure_Trigger_2] +IOMapping=ButtonAuxLowerRight4 +Type=EventMapping +Subsystem=PPC_2 +MessageID=ConfigureMappables +Mode=ModeMFD3Quad + +[MFD3_to_Mode_3] +IOMapping=ButtonAuxLowerRight5 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Eng3 +Mode=ModeMFD3Quad + +[MFD3_Configure_Trigger_3] +IOMapping=ButtonAuxLowerRight6 +Type=EventMapping +Subsystem=SLaser_2 +MessageID=ConfigureMappables +Mode=ModeMFD3Quad + +[MFD3_to_Mode_4] +IOMapping=ButtonAuxLowerRight7 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Eng4 +Mode=ModeMFD3Quad + +[MFD3_Configure_Trigger_4] +IOMapping=ButtonAuxLowerRight8 +Type=EventMapping +Subsystem=LLaser_2 +MessageID=ConfigureMappables +Mode=ModeMFD3Quad + +//-------------------------------------------- +// Aux 3 'Mode 1' mappings, AuxScreenNumber=9 +//-------------------------------------------- +[Aux_3_Mode_1_to_MFD3] +IOMapping=ButtonAuxLowerRight8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Quad +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_Select_GeneratorA] +IOMapping=ButtonAuxLowerRight1 +Type=EventMapping +Subsystem=MLaser_2 +MessageID=SelectGeneratorA +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_Select_GeneratorB] +IOMapping=ButtonAuxLowerRight2 +Type=EventMapping +Subsystem=MLaser_2 +MessageID=SelectGeneratorB +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_Select_GeneratorC] +IOMapping=ButtonAuxLowerRight3 +Type=EventMapping +Subsystem=MLaser_2 +MessageID=SelectGeneratorC +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_Select_GeneratorD] +IOMapping=ButtonAuxLowerRight4 +Type=EventMapping +Subsystem=MLaser_2 +MessageID=SelectGeneratorD +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_OPTION] +IOMapping=ButtonAuxLowerRight5 +Type=EventMapping +Subsystem=MLaser_2 +MessageID=ToggleSeekVoltage +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerRight6 +Type=EventMapping +Subsystem=MLaser_2 +MessageID=ToggleGeneratorMode +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_ToggleCooling] +IOMapping=ButtonAuxLowerRight7 +Type=EventMapping +Subsystem=MLaser_2 +MessageID=ToggleCooling +Mode=ModeMFD3Eng1 + +//-------------------------------------------- +// Aux 3 'Mode 2' mappings, AuxScreenNumber=10 +//-------------------------------------------- +[Aux_3_Mode_2_to_MFD3] +IOMapping=ButtonAuxLowerRight8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Quad +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_Select_GeneratorA] +IOMapping=ButtonAuxLowerRight1 +Type=EventMapping +Subsystem=PPC_2 +MessageID=SelectGeneratorA +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_Select_GeneratorB] +IOMapping=ButtonAuxLowerRight2 +Type=EventMapping +Subsystem=PPC_2 +MessageID=SelectGeneratorB +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_Select_GeneratorC] +IOMapping=ButtonAuxLowerRight3 +Type=EventMapping +Subsystem=PPC_2 +MessageID=SelectGeneratorC +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_Select_GeneratorD] +IOMapping=ButtonAuxLowerRight4 +Type=EventMapping +Subsystem=PPC_2 +MessageID=SelectGeneratorD +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_OPTION] +IOMapping=ButtonAuxLowerRight5 +Type=EventMapping +Subsystem=PPC_2 +MessageID=ToggleSeekVoltage +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerRight6 +Type=EventMapping +Subsystem=PPC_2 +MessageID=ToggleGeneratorMode +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_ToggleCooling] +IOMapping=ButtonAuxLowerRight7 +Type=EventMapping +Subsystem=PPC_2 +MessageID=ToggleCooling +Mode=ModeMFD3Eng2 + +//-------------------------------------------- +// Aux 3 'Mode 3' mappings, AuxScreenNumber=11 +//-------------------------------------------- +[Aux_3_Mode_3_to_MFD3] +IOMapping=ButtonAuxLowerRight8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Quad +Mode=ModeMFD3Eng3 + +[Aux_3_Mode_3_Select_GeneratorA] +IOMapping=ButtonAuxLowerRight1 +Type=EventMapping +Subsystem=SLaser_2 +MessageID=SelectGeneratorA +Mode=ModeMFD3Eng3 + +[Aux_3_Mode_3_Select_GeneratorB] +IOMapping=ButtonAuxLowerRight2 +Type=EventMapping +Subsystem=SLaser_2 +MessageID=SelectGeneratorB +Mode=ModeMFD3Eng3 + +[Aux_3_Mode_3_Select_GeneratorC] +IOMapping=ButtonAuxLowerRight3 +Type=EventMapping +Subsystem=SLaser_2 +MessageID=SelectGeneratorC +Mode=ModeMFD3Eng3 + +[Aux_3_Mode_3_Select_GeneratorD] +IOMapping=ButtonAuxLowerRight4 +Type=EventMapping +Subsystem=SLaser_2 +MessageID=SelectGeneratorD +Mode=ModeMFD3Eng3 + +[Aux_3_Mode_3_OPTION] +IOMapping=ButtonAuxLowerRight5 +Type=EventMapping +Subsystem=SLaser_2 +MessageID=ToggleSeekVoltage +Mode=ModeMFD3Eng3 + +[Aux_3_Mode_3_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerRight6 +Type=EventMapping +Subsystem=SLaser_2 +MessageID=ToggleGeneratorMode +Mode=ModeMFD3Eng3 + +[Aux_3_Mode_3_ToggleCooling] +IOMapping=ButtonAuxLowerRight7 +Type=EventMapping +Subsystem=SLaser_2 +MessageID=ToggleCooling +Mode=ModeMFD3Eng3 + +//--------------------------------------------- +// Aux 3 'Mode 4' mappings, AuxScreenNumber=12 +//--------------------------------------------- +[Aux_3_Mode_4_to_MFD3] +IOMapping=ButtonAuxLowerRight8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Quad +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_Select_GeneratorA] +IOMapping=ButtonAuxLowerRight1 +Type=EventMapping +Subsystem=LLaser_2 +MessageID=SelectGeneratorA +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_Select_GeneratorB] +IOMapping=ButtonAuxLowerRight2 +Type=EventMapping +Subsystem=LLaser_2 +MessageID=SelectGeneratorB +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_Select_GeneratorC] +IOMapping=ButtonAuxLowerRight3 +Type=EventMapping +Subsystem=LLaser_2 +MessageID=SelectGeneratorC +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_Select_GeneratorD] +IOMapping=ButtonAuxLowerRight4 +Type=EventMapping +Subsystem=LLaser_2 +MessageID=SelectGeneratorD +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_OPTION] +IOMapping=ButtonAuxLowerRight5 +Type=EventMapping +Subsystem=LLaser_2 +MessageID=ToggleSeekVoltage +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerRight6 +Type=EventMapping +Subsystem=LLaser_2 +MessageID=ToggleGeneratorMode +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_ToggleCooling] +IOMapping=ButtonAuxLowerRight7 +Type=EventMapping +Subsystem=LLaser_2 +MessageID=ToggleCooling +Mode=ModeMFD3Eng4 +[PPC_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=PPC_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[PPC_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=PPC_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[LLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=LLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[LLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=LLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[MLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=MLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[MLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=MLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[SLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=SLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[SLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=SLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[SRM4_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=SRM4 +AttributeID=TriggerState +Mode=ModeNonMapping diff --git a/CONTENT/BT/MODELS/LOK1THR.CTL b/CONTENT/BT/MODELS/LOK1THR.CTL new file mode 100644 index 0000000..589d6a2 --- /dev/null +++ b/CONTENT/BT/MODELS/LOK1THR.CTL @@ -0,0 +1,75 @@ +[StickPosition_JP] +IOMapping=JoystickPhysical +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=StickPosition +Mode=ModeAlwaysActive + +[TorsoLeft_BJHL] +IOMapping=ButtonJoystickHatLeft +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoLeft +Mode=ModeAlwaysActive + +[TorsoRight_BJHR] +IOMapping=ButtonJoystickHatRight +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoRight +Mode=ModeAlwaysActive + +[PPC_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=PPC_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[PPC_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=PPC_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[LLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=LLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[LLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=LLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[MLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=MLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[MLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=MLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[SLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=SLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[SLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=SLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[SRM4_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=SRM4 +AttributeID=TriggerState +Mode=ModeNonMapping diff --git a/CONTENT/BT/MODELS/LOK2.DMG b/CONTENT/BT/MODELS/LOK2.DMG new file mode 100644 index 0000000..71a6556 --- /dev/null +++ b/CONTENT/BT/MODELS/LOK2.DMG @@ -0,0 +1,193 @@ +// This file is intentionally empty and MUST be read-only! +[dz_dtorso] +ExplosionTable=lok2dmg.exp +DefaultEffectSiteName=siteedz_dtorso +WeaponDamagePoints=122 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.071429 +CriticalSubsystem=Condenser5 2 0.500000 +CriticalSubsystem=GeneratorD 10 0.500000 +CriticalSubsystem=Avionics 5 0.200000 +CriticalSubsystem=Torso 15 0.333333 +[dz_hip] +ExplosionTable=lok2dmg.exp +DefaultEffectSiteName=siteedz_hip +WeaponDamagePoints=122 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.071429 +CriticalSubsystem=Myomers 15 0.142857 +CriticalSubsystem=Gyroscope 15 0.333333 +CriticalSubsystem=Torso 15 0.333333 +[dz_larm] +ExplosionTable=lok2dmg.exp +DefaultEffectSiteName=siteedz_larm +WeaponDamagePoints=87 +VitalDamageZone=False +DescendOnDestruction=True +CriticalSubsystem=Condenser4 2 0.500000 +[dz_ldleg] +ExplosionTable=lok2dmg.exp +DefaultEffectSiteName=siteedz_ldleg +WeaponDamagePoints=90 +VitalDamageZone=True +LegDamageZone=LeftLeg +CriticalSubsystem=HeatSink 100 0.071429 +CriticalSubsystem=Myomers 15 0.142857 +[dz_lfoot] +ExplosionTable=lok2dmg.exp +DefaultEffectSiteName=siteedz_lfoot +WeaponDamagePoints=81 +VitalDamageZone=True +LegDamageZone=LeftLeg +CriticalSubsystem=Myomers 15 0.142857 +[dz_lgun] +ExplosionTable=lok2dmg.exp +DefaultEffectSiteName=siteedz_lgun +WeaponDamagePoints=80 +VitalDamageZone=False +DescendOnDestruction=True +CriticalSubsystem=Condenser4 2 0.500000 +CriticalSubsystem=PPC 15 1.000000 +CriticalSubsystem=MLaser_3 15 1.000000 +[dz_ltorso] +ExplosionTable=lok2dmg.exp +DefaultEffectSiteName=siteedz_ltorso +WeaponDamagePoints=118 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.071429 +CriticalSubsystem=Condenser1 2 0.500000 +CriticalSubsystem=GeneratorA 10 0.500000 +CriticalSubsystem=Avionics 5 0.200000 +CriticalSubsystem=MLaser_1 15 1.000000 +CriticalSubsystem=SLaser_1 25 1.000000 +[dz_luleg] +ExplosionTable=lok2dmg.exp +DefaultEffectSiteName=siteedz_luleg +WeaponDamagePoints=90 +VitalDamageZone=True +LegDamageZone=LeftLeg +CriticalSubsystem=HeatSink 100 0.071429 +CriticalSubsystem=Myomers 15 0.142857 +[dz_missle] +ExplosionTable=lok2dmg.exp +DefaultEffectSiteName=siteedz_missle +WeaponDamagePoints=45 +VitalDamageZone=False +DescendOnDestruction=True +CriticalSubsystem=HeatSink 100 0.071429 +CriticalSubsystem=AmmoBinSRM4 15 0.500000 +CriticalSubsystem=SRM4 15 1.000000 +[dz_rarm] +ExplosionTable=lok2dmg.exp +DefaultEffectSiteName=siteedz_rarm +WeaponDamagePoints=87 +VitalDamageZone=False +DescendOnDestruction=True +CriticalSubsystem=Condenser6 2 0.500000 +CriticalSubsystem=AmmoBinGAUSS 15 0.500000 +CriticalSubsystem=AmmoBinAFC25 15 0.500000 +[dz_rdleg] +ExplosionTable=lok2dmg.exp +DefaultEffectSiteName=siteedz_rdleg +WeaponDamagePoints=90 +VitalDamageZone=True +LegDamageZone=RightLeg +CriticalSubsystem=HeatSink 100 0.071429 +CriticalSubsystem=Myomers 15 0.142857 +[dz_reardtorso] +ExplosionTable=lok2dmg.exp +DefaultEffectSiteName=siteedz_reardtorso +WeaponDamagePoints=81 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.071429 +CriticalSubsystem=Reservoir 10 0.250000 +CriticalSubsystem=Condenser5 2 0.500000 +CriticalSubsystem=GeneratorD 10 0.500000 +CriticalSubsystem=Torso 15 0.333333 +[dz_rearltorso] +ExplosionTable=lok2dmg.exp +DefaultEffectSiteName=siteedz_rearltorso +WeaponDamagePoints=100 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.071429 +CriticalSubsystem=Reservoir 10 0.250000 +CriticalSubsystem=Condenser1 2 0.500000 +CriticalSubsystem=GeneratorA 10 0.500000 +[dz_rearrtorso] +ExplosionTable=lok2dmg.exp +DefaultEffectSiteName=siteedz_rearrtorso +WeaponDamagePoints=100 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.071429 +CriticalSubsystem=Reservoir 10 0.250000 +CriticalSubsystem=Condenser3 2 0.500000 +CriticalSubsystem=GeneratorC 10 0.500000 +[dz_rearutorso] +ExplosionTable=lok2dmg.exp +DefaultEffectSiteName=siteedz_rearutorso +WeaponDamagePoints=113 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.071429 +CriticalSubsystem=Reservoir 10 0.250000 +CriticalSubsystem=Condenser2 2 0.500000 +CriticalSubsystem=GeneratorB 10 0.500000 +CriticalSubsystem=Gyroscope 30 0.333333 +[dz_rfoot] +ExplosionTable=lok2dmg.exp +DefaultEffectSiteName=siteedz_rfoot +WeaponDamagePoints=81 +VitalDamageZone=True +LegDamageZone=RightLeg +CriticalSubsystem=Myomers 15 0.142857 +[dz_rgun] +ExplosionTable=lok2dmg.exp +DefaultEffectSiteName=siteedz_rgun +WeaponDamagePoints=80 +VitalDamageZone=False +DescendOnDestruction=True +CriticalSubsystem=Condenser6 2 0.500000 +CriticalSubsystem=GAUSS 15 1.000000 +CriticalSubsystem=AFC25 15 1.000000 +CriticalSubsystem=AmmoBinGAUSS 15 0.500000 +CriticalSubsystem=AmmoBinAFC25 15 0.500000 +[dz_rtorso] +ExplosionTable=lok2dmg.exp +DefaultEffectSiteName=siteedz_rtorso +WeaponDamagePoints=118 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.071429 +CriticalSubsystem=Condenser3 2 0.500000 +CriticalSubsystem=GeneratorC 10 0.500000 +CriticalSubsystem=Avionics 5 0.200000 +CriticalSubsystem=MLaser_2 15 1.000000 +CriticalSubsystem=SLaser_2 25 1.000000 +CriticalSubsystem=AmmoBinSRM4 15 0.500000 +[dz_ruleg] +ExplosionTable=lok2dmg.exp +DefaultEffectSiteName=siteedz_ruleg +WeaponDamagePoints=90 +VitalDamageZone=True +LegDamageZone=RightLeg +CriticalSubsystem=HeatSink 100 0.071429 +CriticalSubsystem=Myomers 15 0.142857 +[dz_searchlight] +ExplosionTable=lok2dmg.exp +DefaultEffectSiteName=siteedz_searchlight +WeaponDamagePoints=50 +VitalDamageZone=False +DescendOnDestruction=True +CriticalSubsystem=Avionics 5 0.200000 +CriticalSubsystem=HUD 15 0.500000 +CriticalSubsystem=Searchlight 45 1.000000 +CriticalSubsystem=ThermalSight 30 1.000000 +[dz_utorso] +ExplosionTable=lok2dmg.exp +DefaultEffectSiteName=siteedz_utorso +WeaponDamagePoints=130 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.071429 +CriticalSubsystem=Condenser2 2 0.500000 +CriticalSubsystem=GeneratorB 10 0.500000 +CriticalSubsystem=Avionics 5 0.200000 +CriticalSubsystem=Gyroscope 30 0.333333 +CriticalSubsystem=HUD 15 0.500000 diff --git a/CONTENT/BT/MODELS/LOK2.MOD b/CONTENT/BT/MODELS/LOK2.MOD new file mode 100644 index 0000000..39f5d1c --- /dev/null +++ b/CONTENT/BT/MODELS/LOK2.MOD @@ -0,0 +1,136 @@ +[video] +skeleton=lok.skl +skeletona=lox.skl +destroyed=lokd.skl +//destroyeda=loxd.skl +dzm=lokskin.dzm +dzma=loxskin.dzm + +[audio] +internal=lok2int.scp +external=lok2ext.scp + +[collision] +name=lok_cv.sld + +[gauge] +image=thor_ga.gim + +[gaugeMissionReview] +pixelmap=loki_mr.pcc + +[gamedata] +class=MechClassID +MoverMass=65000.0 +MomentOfInertia=1.75 3.125 1.75 +PositiveLinearDragCoefficients=0.14 0.4 0.07 +NegativeLinearDragCoefficients=0.14 0.2 0.08 +AngularDragCoefficients=0.3 0.5 0.3 +FrictionCoefficient=0.1 +ElasticityCoefficient=0.2 +MinimumBounceSpeed=0.2 +MaxAcceleration=15 +AnimationPrefix=lok +Subsystems=lok2.sub +DamageZones=lok2.dmg +DamageLookupTable=lokdmg.tbl +RelativeMechValue=1.0 +LookLeftAngle=55 +LookRightAngle=-55 +LookBackAngle=0 +LookFrontAngle=-10 +WalkingTurnRate=50 +RunningTurnRate=40 +DeathEffect=lokdead +CameraOffset=0.0 5.0 1.0 +DeathSplashDamage=5 +DeathSplashRadius=50 +TimeDelay=0.3 + +MaxUnstableAcceleration=33.0 +UnstableAccelerationEffect=0.5 +UnstableGunTheEngineEffect=0.8 +UnstableSuperStopEffect=0.25 +UnstableHighVelocityEffect=0.25 +UnstableStopedTurnEffect=1.0 +SuperStopAcceleration=15.0 + +ThrottleAdjustment=0.8 + +UpdateTurnDegreeDiffrence=3 +UpdateTurnVelocityDiffrence=0.045 +UpdatePositionDiffrence=0.3 + +ShadowJointName=jointshadow + +[ControlMappings] +Thrustmaster=lok2thr.ctl +L4=lok2l4.ctl + +[animations] +animationtransition=lokswr.ani +animation=lokwwl.ani +animation=lokwwr.ani +animation=lokwsr.ani +animation=lokwsl.ani +animationtransition=lokwrl.ani +animationtransition=lokwrr.ani +animation=lokrrl.ani +animation=lokrrr.ani +animation=lokrwl.ani +animation=lokrwr.ani +animation=lokbmp.ani + +animationtransition=lokswri.ani +animation=lokwwli.ani +animation=lokwwri.ani +animation=lokwsri.ani +animation=lokwsli.ani +animationtransition=lokwrli.ani +animationtransition=lokwrri.ani +animation=lokrrli.ani +animation=lokrrri.ani +animation=lokrwli.ani +animation=lokrwri.ani +animation=lokbmpi.ani + +animation=lokbbl.ani +animation=lokbbr.ani +animation=lokbsl.ani +animation=lokbsr.ani +animationtransition=loksbl.ani +animationtransition=loksbr.ani +animation=lokbbli.ani +animation=lokbbri.ani +animation=lokbsli.ani +animation=lokbsri.ani +animationtransition=loksbli.ani +animationtransition=loksbri.ani + +animation=lokggl.ani +animation=lokggr.ani +animation=lokgsl.ani +animation=lokgsr.ani +animationtransition=lokwgl.ani +animationtransition=lokwgr.ani + +animation=lokggli.ani +animation=lokggri.ani +animation=lokgsli.ani +animation=lokgsri.ani +animationtransition=lokwgli.ani +animationtransition=lokwgri.ani + +animation=loksqu.ani +animation=loksqd.ani +animation=loksqui.ani +animation=loksqdi.ani + +animation=loktrn.ani +animation=loktrni.ani + +//animation=lokff.ani +//animation=lokfb.ani +//animation=lokfl.ani +//animation=lokfr.ani + diff --git a/CONTENT/BT/MODELS/LOK2.SUB b/CONTENT/BT/MODELS/LOK2.SUB new file mode 100644 index 0000000..58d2670 --- /dev/null +++ b/CONTENT/BT/MODELS/LOK2.SUB @@ -0,0 +1,237 @@ +[HeatSink] +Type=HeatSinkClassID +Include=heatsnk.sub +HeatSinkCount=18 +SubsystemFlags=DontReplicateFlag + +[Reservoir] +Type=ReservoirClassID +Include=reserve.sub +HeatSink=HeatSink +SegmentPageName=siteeyepoint + +[Condenser1] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser2] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser3] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser4] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser5] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser6] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[GeneratorA] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser1 +SubsystemFlags=DontReplicateFlag + +[GeneratorB] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser2 +SubsystemFlags=DontReplicateFlag + +[GeneratorC] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser3 +SubsystemFlags=DontReplicateFlag + +[GeneratorD] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser5 +SubsystemFlags=DontReplicateFlag + +[Avionics] +Type=SensorClassID +Include=sensor.sub +HeatSink=Condenser2 +VoltageSource=GeneratorD +AuxScreenNumber=5 +SubsystemFlags=DontReplicateFlag + +AuxScreenPlacement=2 +[Myomers] +Type=MyomersClassID +Include=myomers.sub +HeatSink=Condenser5 +VoltageSource=GeneratorD +AuxScreenNumber=6 +SubsystemFlags=DontReplicateFlag + +AuxScreenPlacement=0 +[Gyroscope] +Type=GyroscopeClassID +Include=gyro.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag + +[Torso] +Type=TorsoClassID +Include=torso.sub +WatchedSubsystem=Myomers + +HorizontalRotationPerSecond=45 +VerticalRotationPerSecond=30 +HorizontalLimitRight=-120 +HorizontalLimitLeft=120 +[HUD] +Type=HUDClassID +Include=hud.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag + +[Searchlight] +Type=SearchlightClassID +Include=srchlite.sub +WatchedSubsystem=Avionics +SegmentPageName=sitelight + +[ThermalSight] +Type=ThermalSightClassID +Include=Thermal.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag +[PPC] +Type=PPCClassID +Include=ppc.sub +SegmentPageName=sitelgunport +SiteOffset=-0.2 0 0 +PipPosition=1 +VoltageSource=GeneratorA +HeatSink=Condenser4 +AuxScreenNumber=1 +AuxScreenPlacement=4 +[AmmoBinGAUSS] +Type=AmmoBinClassID +Include=ammogaus.sub +WatchedSubsystem=GAUSS +AmmoCount=16 +[GAUSS] +AmmoBin=AmmoBinGAUSS +Type=ProjectileWeaponClassID +Include=gaussrfl.sub +SegmentPageName=sitergunport +SiteOffset=-0.2 0 0 +PipPosition=2 +VoltageSource=GeneratorC +HeatSink=Condenser6 +AuxScreenNumber=10 +AuxScreenPlacement=6 +[AmmoBinAFC25] +Type=AmmoBinClassID +Include=ammafc25.sub +WatchedSubsystem=AFC25 +AmmoCount=25 +[AFC25] +AmmoBin=AmmoBinAFC25 +Type=ProjectileWeaponClassID +Include=afc25.sub +SegmentPageName=sitergunport +PipPosition=3 +VoltageSource=GeneratorC +HeatSink=Condenser6 +AuxScreenNumber=12 +AuxScreenPlacement=6 +[MLaser_1] +Type=EmitterClassID +Include=mlaser.sub +SegmentPageName=siteltorsoport +SiteOffset=0.2 0 0 +PipPosition=1 +VoltageSource=GeneratorA +HeatSink=Condenser1 +AuxScreenNumber=2 +AuxScreenPlacement=1 +[MLaser_2] +Type=EmitterClassID +Include=mlaser.sub +SegmentPageName=sitertorsoport +SiteOffset=0.2 0 0 +PipPosition=2 +VoltageSource=GeneratorC +HeatSink=Condenser3 +AuxScreenNumber=9 +AuxScreenPlacement=3 +[MLaser_3] +Type=EmitterClassID +Include=mlaser.sub +SegmentPageName=sitelgunport +SiteOffset=0.2 0 0 +PipPosition=3 +VoltageSource=GeneratorA +HeatSink=Condenser4 +AuxScreenNumber=3 +AuxScreenPlacement=4 +[SLaser_1] +Type=EmitterClassID +Include=slaser.sub +SegmentPageName=siteltorsoport +SiteOffset=-0.2 0 0 +PipPosition=1 +VoltageSource=GeneratorA +HeatSink=Condenser1 +AuxScreenNumber=4 +AuxScreenPlacement=1 +[SLaser_2] +Type=EmitterClassID +Include=slaser.sub +SegmentPageName=sitertorsoport +SiteOffset=-0.2 0 0 +PipPosition=2 +VoltageSource=GeneratorC +HeatSink=Condenser3 +AuxScreenNumber=11 +AuxScreenPlacement=3 +[AmmoBinSRM4] +Type=AmmoBinClassID +Include=ammstrk2.sub +WatchedSubsystem=SRM4 +AmmoCount=16 +[SRM4] +AmmoBin=AmmoBinSRM4 +Type=MissileLauncherClassID +Include=strk2.sub +SegmentPageName=sitemissleport +PipPosition=1 +VoltageSource=GeneratorB +HeatSink=Condenser2 +AuxScreenNumber=8 +AuxScreenPlacement=7 +[MessageManager] +Type=SubsystemMessageManagerClassID +ExplosionModelFile=majhit 1.0 +TerrainHitExplosion=gndhit +RendererCompensateTime=0.3 +[MechTech] +Type=MechTechClassID +AlarmModel=mechalrm +SubsystemFlags=DontReplicateFlag diff --git a/CONTENT/BT/MODELS/LOK2DMG.EXP b/CONTENT/BT/MODELS/LOK2DMG.EXP new file mode 100644 index 0000000..c9b1598 --- /dev/null +++ b/CONTENT/BT/MODELS/LOK2DMG.EXP @@ -0,0 +1,28 @@ +[OneDamage] +ExplosionModelFile=dam1hit +DamageLevel=0.2 +TimeDelay=0.0 + +[TwoDamage] +ExplosionModelFile=dam2hit +DamageLevel=0.4 +TimeDelay=0.0 + +[ThreeDamage] +ExplosionModelFile=dam3hit +DamageLevel=0.6 +TimeDelay=0.0 + +[FourDamage] +ExplosionModelFile=dam4hit +DamageLevel=0.8 +TimeDelay=0.0 + +[DestroyedExplosion] +ExplosionModelFile=desthit +GraphicState=Destroyed + +[GoneExplosion] +ExplosionModelFile=desthit +GraphicState=Gone + diff --git a/CONTENT/BT/MODELS/LOK2L4.CTL b/CONTENT/BT/MODELS/LOK2L4.CTL new file mode 100644 index 0000000..3bd13c5 --- /dev/null +++ b/CONTENT/BT/MODELS/LOK2L4.CTL @@ -0,0 +1,1060 @@ +[StickPosition_JP] +//----------------------------------------------------------------------- +// Joystick +//----------------------------------------------------------------------- +IOMapping=JoystickPhysical +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=StickPosition +Mode=ModeAlwaysActive + +[Throttle_ST] +//----------------------------------------------------------------------- +// Throttle +//----------------------------------------------------------------------- +IOMapping=ScalarThrottle +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=ThrottlePosition +Mode=ModeAlwaysActive + +//----------------------------------------------------------------------- +// Misc. switches +//----------------------------------------------------------------------- +[ReverseThrust_BT1] +IOMapping=ButtonThrottle1 +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=ReverseThrust +Mode=ModeAlwaysActive + +[TorsoCenter_BJHU] +IOMapping=ButtonJoystickHatUp +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoCenter +Mode=ModeAlwaysActive + +[LookLeft_BJHL] +IOMapping=ButtonJoystickHatLeft +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=LookLeft +Mode=ModeAlwaysActive + +[LookRight_BJHR] +IOMapping=ButtonJoystickHatRight +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=LookRight +Mode=ModeAlwaysActive + +[LookBack_BJHD] +IOMapping=ButtonJoystickHatDown +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=LookBehind +Mode=ModeAlwaysActive + +//----------------------------------------------------------------------- +// Secondary mappings +//----------------------------------------------------------------------- +[Button_Sec_1] // Zoom radar in (magnify image) +IOMapping=ButtonSecondary1 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=ZoomIn +Mode=ModeAlwaysActive + +[Button_Sec_2] // Zoom radar out (reduce image) +IOMapping=ButtonSecondary2 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=ZoomOut +Mode=ModeAlwaysActive + +// +// 'Heat vision' mapped to secondary +// SGM 1/6/97 + +[Button_Sec_3] // Toggle heat vision +IOMapping=ButtonSecondary3 +Type=EventMapping +Subsystem=ThermalSight +MessageID=ToggleLamp +Mode=ModeAlwaysActive + +// +// 'Duck' remapped to real message and location. +// GDU 7/9/96 + +[Button_Sec_4] // Request crouch position +IOMapping=ButtonSecondary4 +Type=EventMapping +MessageID=DuckRequest +Mode=ModeAlwaysActive + +[Button_Sec_5] // Toggle searchlight +IOMapping=ButtonSecondary5 +Type=EventMapping +Subsystem=Searchlight +MessageID=ToggleLamp +Mode=ModeAlwaysActive + +[Button_Sec_6] // Cycle through damage display modes +IOMapping=ButtonSecondary6 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=CycleDisplayMode +Mode=ModeAlwaysActive + +[Button_Sec_7] // Cycle through control modes +IOMapping=ButtonSecondary7 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=CycleControlMode +Mode=ModeAlwaysActive + +// ButtonSecondary8 presently unused + +[Button_Sec_9] // Toggle generator 'a' +IOMapping=ButtonSecondary9 +Type=EventMapping +Subsystem=GeneratorA +MessageID=ToggleGeneratorOnOff +Mode=ModeAlwaysActive + +[Button_Sec_10] // Toggle generator 'b' +IOMapping=ButtonSecondary10 +Type=EventMapping +Subsystem=GeneratorB +MessageID=ToggleGeneratorOnOff +Mode=ModeAlwaysActive + +[Button_Sec_11] // Toggle generator 'c' +IOMapping=ButtonSecondary11 +Type=EventMapping +Subsystem=GeneratorC +MessageID=ToggleGeneratorOnOff +Mode=ModeAlwaysActive + +[Button_Sec_12] // Toggle generator 'd' +IOMapping=ButtonSecondary12 +Type=EventMapping +Subsystem=GeneratorD +MessageID=ToggleGeneratorOnOff +Mode=ModeAlwaysActive + +//----------------------------------------- +// Heat Management Screen Mappings +//----------------------------------------- +[Condenser1_Button] +IOMapping=ButtonAuxUpperLeft1 +Type=EventMapping +Subsystem=Condenser1 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Condenser2_Button] +IOMapping=ButtonAuxUpperLeft2 +Type=EventMapping +Subsystem=Condenser2 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Condenser3_Button] +IOMapping=ButtonAuxUpperLeft3 +Type=EventMapping +Subsystem=Condenser3 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Reservoir_Button] +IOMapping=ButtonAuxUpperLeft4 +Type=EventMapping +Subsystem=Reservoir +MessageID=InjectCoolant +Mode=ModeAlwaysActive + +[Condenser4_Button] +IOMapping=ButtonAuxUpperLeft5 +Type=EventMapping +Subsystem=Condenser4 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Condenser5_Button] +IOMapping=ButtonAuxUpperLeft6 +Type=EventMapping +Subsystem=Condenser5 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Condenser6_Button] +IOMapping=ButtonAuxUpperLeft7 +Type=EventMapping +Subsystem=Condenser6 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Reduce_Button] +IOMapping=ButtonAuxUpperLeft8 +Type=EventMapping +MessageID=BalanceCoolant +Mode=ModeAlwaysActive + +//----------------------------------------------------------------------- +// Aux 1 mappings +//----------------------------------------------------------------------- +//------------------------------------------ +// Aux 1 'Quad screen' mappings +//------------------------------------------ +[MFD1_to_Mode_1] // To mode 1 +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Eng1 +Mode=ModeMFD1Quad + +[MFD1_Configure_Trigger_1] // Configure +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Subsystem=PPC +MessageID=ConfigureMappables +Mode=ModeMFD1Quad + +[MFD1_to_Mode_2] // To mode 2 +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Eng2 +Mode=ModeMFD1Quad + +[MFD1_Configure_Trigger_2] // Configure +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Subsystem=MLaser_1 +MessageID=ConfigureMappables +Mode=ModeMFD1Quad + +[MFD1_to_Mode_3] // To mode 3 +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Eng3 +Mode=ModeMFD1Quad + +[MFD1_Configure_Trigger_3] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Subsystem=MLaser_3 +MessageID=ConfigureMappables +Mode=ModeMFD1Quad + +[MFD1_to_Mode_4] // To mode 4 +IOMapping=ButtonAuxLowerLeft7 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Eng4 +Mode=ModeMFD1Quad + +[MFD1_Configure_Trigger_4] // Configure +IOMapping=ButtonAuxLowerLeft8 +Type=EventMapping +Subsystem=SLaser_1 +MessageID=ConfigureMappables +Mode=ModeMFD1Quad + +//---------------------------------------------- +// Aux 1 'Mode 1' mappings, AuxScreenNumber=1 +//---------------------------------------------- +[Aux_1_Mode_1_to_MFD1] +IOMapping=ButtonAuxLowerLeft8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Quad +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_Select_GeneratorA] +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Subsystem=PPC +MessageID=SelectGeneratorA +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_Select_GeneratorB] +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Subsystem=PPC +MessageID=SelectGeneratorB +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_Select_GeneratorC] +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Subsystem=PPC +MessageID=SelectGeneratorC +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_Select_GeneratorD] +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Subsystem=PPC +MessageID=SelectGeneratorD +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_OPTION] +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Subsystem=PPC +MessageID=ToggleSeekVoltage +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Subsystem=PPC +MessageID=ToggleGeneratorMode +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_ToggleCooling] +IOMapping=ButtonAuxLowerLeft7 +Type=EventMapping +Subsystem=PPC +MessageID=ToggleCooling +Mode=ModeMFD1Eng1 + +//-------------------------------------------- +// Aux 1 'Mode 2' mappings, AuxScreenNumber=2 +//-------------------------------------------- +[Aux_1_Mode_2_to_MFD1] +IOMapping=ButtonAuxLowerLeft8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Quad +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_Select_GeneratorA] +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Subsystem=MLaser_1 +MessageID=SelectGeneratorA +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_Select_GeneratorB] +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Subsystem=MLaser_1 +MessageID=SelectGeneratorB +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_Select_GeneratorC] +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Subsystem=MLaser_1 +MessageID=SelectGeneratorC +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_Select_GeneratorD] +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Subsystem=MLaser_1 +MessageID=SelectGeneratorD +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_OPTION] +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Subsystem=MLaser_1 +MessageID=ToggleSeekVoltage +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Subsystem=MLaser_1 +MessageID=ToggleGeneratorMode +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_ToggleCooling] +IOMapping=ButtonAuxLowerLeft7 +Type=EventMapping +Subsystem=MLaser_1 +MessageID=ToggleCooling +Mode=ModeMFD1Eng2 + +//--------------------------------------------- +// Aux 1 'Mode 3' mappings, AuxScreenNumber=3 +//--------------------------------------------- +[Aux_1_Mode_3_to_MFD1] +IOMapping=ButtonAuxLowerLeft8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Quad +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_Select_GeneratorA] +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Subsystem=MLaser_3 +MessageID=SelectGeneratorA +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_Select_GeneratorB] +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Subsystem=MLaser_3 +MessageID=SelectGeneratorB +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_Select_GeneratorC] +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Subsystem=MLaser_3 +MessageID=SelectGeneratorC +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_Select_GeneratorD] +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Subsystem=MLaser_3 +MessageID=SelectGeneratorD +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_OPTION] +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Subsystem=MLaser_3 +MessageID=ToggleSeekVoltage +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Subsystem=MLaser_3 +MessageID=ToggleGeneratorMode +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_ToggleCooling] +IOMapping=ButtonAuxLowerLeft7 +Type=EventMapping +Subsystem=MLaser_3 +MessageID=ToggleCooling +Mode=ModeMFD1Eng3 + +//-------------------------------------------- +// Aux 1 "Mode 4" Mappings, AuxScreenNumber=4 +//-------------------------------------------- +[Aux_1_Mode_4_to_MFD1] +IOMapping=ButtonAuxLowerLeft8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Quad +Mode=ModeMFD1Eng4 + +[Aux_1_Mode_4_Select_GeneratorA] +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Subsystem=SLaser_1 +MessageID=SelectGeneratorA +Mode=ModeMFD1Eng4 + +[Aux_1_Mode_4_Select_GeneratorB] +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Subsystem=SLaser_1 +MessageID=SelectGeneratorB +Mode=ModeMFD1Eng4 + +[Aux_1_Mode_4_Select_GeneratorC] +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Subsystem=SLaser_1 +MessageID=SelectGeneratorC +Mode=ModeMFD1Eng4 + +[Aux_1_Mode_4_Select_GeneratorD] +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Subsystem=SLaser_1 +MessageID=SelectGeneratorD +Mode=ModeMFD1Eng4 + +[Aux_1_Mode_4_OPTION] +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Subsystem=SLaser_1 +MessageID=ToggleSeekVoltage +Mode=ModeMFD1Eng4 + +[Aux_1_Mode_4_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Subsystem=SLaser_1 +MessageID=ToggleGeneratorMode +Mode=ModeMFD1Eng4 + +[Aux_1_Mode_4_ToggleCooling] +IOMapping=ButtonAuxLowerLeft7 +Type=EventMapping +Subsystem=SLaser_1 +MessageID=ToggleCooling +Mode=ModeMFD1Eng4 + + +//----------------------------------------------------------------------- +// Aux 2 mappings +//----------------------------------------------------------------------- +//------------------------------------------ +// Aux 2 'Quad screen' mappings +//------------------------------------------ +[MFD2_to_Mode_1] +IOMapping=ButtonAuxUpperCenter1 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Eng1 +Mode=ModeMFD2Quad + +[MFD2_to_Mode_2] +IOMapping=ButtonAuxUpperCenter3 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Eng2 +Mode=ModeMFD2Quad + +[MFD2_to_Mode_4] +IOMapping=ButtonAuxUpperCenter7 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Eng4 +Mode=ModeMFD2Quad + +[MFD2_Configure_Trigger_4] +IOMapping=ButtonAuxUpperCenter8 +Type=EventMapping +Subsystem=SRM4 +MessageID=ConfigureMappables +Mode=ModeMFD2Quad + +//-------------------------------------------- +// Aux 2 'Mode 1' mappings, AuxScreenNumber=9 +//-------------------------------------------- +[Aux_2_Mode_1_to_MFD2] +IOMapping=ButtonAuxUpperCenter8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Quad +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_Select_GeneratorA] +IOMapping=ButtonAuxUpperCenter1 +Type=EventMapping +Subsystem=Avionics +MessageID=SelectGeneratorA +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_Select_GeneratorB] +IOMapping=ButtonAuxUpperCenter2 +Type=EventMapping +Subsystem=Avionics +MessageID=SelectGeneratorB +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_Select_GeneratorC] +IOMapping=ButtonAuxUpperCenter3 +Type=EventMapping +Subsystem=Avionics +MessageID=SelectGeneratorC +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_Select_GeneratorD] +IOMapping=ButtonAuxUpperCenter4 +Type=EventMapping +Subsystem=Avionics +MessageID=SelectGeneratorD +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_ToggleGeneratorMode] +IOMapping=ButtonAuxUpperCenter6 +Type=EventMapping +Subsystem=Avionics +MessageID=ToggleGeneratorMode +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_ToggleCooling] +IOMapping=ButtonAuxUpperCenter7 +Type=EventMapping +Subsystem=Avionics +MessageID=ToggleCooling +Mode=ModeMFD2Eng1 + +//-------------------------------------------- +// Aux 2 'Mode 2' mappings, AuxScreenNumber=10 +//-------------------------------------------- +[Aux_2_Mode_2_to_MFD2] +IOMapping=ButtonAuxUpperCenter8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Quad +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_Select_GeneratorA] +IOMapping=ButtonAuxUpperCenter1 +Type=EventMapping +Subsystem=Myomers +MessageID=SelectGeneratorA +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_Select_GeneratorB] +IOMapping=ButtonAuxUpperCenter2 +Type=EventMapping +Subsystem=Myomers +MessageID=SelectGeneratorB +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_Select_GeneratorC] +IOMapping=ButtonAuxUpperCenter3 +Type=EventMapping +Subsystem=Myomers +MessageID=SelectGeneratorC +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_Select_GeneratorD] +IOMapping=ButtonAuxUpperCenter4 +Type=EventMapping +Subsystem=Myomers +MessageID=SelectGeneratorD +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_OPTION] +IOMapping=ButtonAuxUpperCenter5 +Type=EventMapping +Subsystem=Myomers +MessageID=ToggleSeekVoltage +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_ToggleGeneratorMode] +IOMapping=ButtonAuxUpperCenter6 +Type=EventMapping +Subsystem=Myomers +MessageID=ToggleGeneratorMode +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_ToggleCooling] +IOMapping=ButtonAuxUpperCenter7 +Type=EventMapping +Subsystem=Myomers +MessageID=ToggleCooling +Mode=ModeMFD2Eng2 + +//-------------------------------------------- +// Aux 3 'Mode 3' mappings, AuxScreenNumber=11 +//-------------------------------------------- +[Aux_2_Mode_4_to_MFD2] +IOMapping=ButtonAuxUpperCenter8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Quad +Mode=ModeMFD2Eng4 + +[Aux_2_Mode_4_Select_GeneratorA] +IOMapping=ButtonAuxUpperCenter1 +Type=EventMapping +Subsystem=SRM4 +MessageID=SelectGeneratorA +Mode=ModeMFD2Eng4 + +[Aux_2_Mode_4_Select_GeneratorB] +IOMapping=ButtonAuxUpperCenter2 +Type=EventMapping +Subsystem=SRM4 +MessageID=SelectGeneratorB +Mode=ModeMFD2Eng4 + +[Aux_2_Mode_4_Select_GeneratorC] +IOMapping=ButtonAuxUpperCenter3 +Type=EventMapping +Subsystem=SRM4 +MessageID=SelectGeneratorC +Mode=ModeMFD2Eng4 + +[Aux_2_Mode_4_Select_GeneratorD] +IOMapping=ButtonAuxUpperCenter4 +Type=EventMapping +Subsystem=SRM4 +MessageID=SelectGeneratorD +Mode=ModeMFD2Eng4 + +[Aux_2_Mode_4_OPTION] +IOMapping=ButtonAuxUpperCenter5 +Type=EventMapping +Subsystem=SRM4 +MessageID=EjectAmmo +Mode=ModeMFD2Eng4 + +[Aux_2_Mode_4_ToggleGeneratorMode] +IOMapping=ButtonAuxUpperCenter6 +Type=EventMapping +Subsystem=SRM4 +MessageID=ToggleGeneratorMode +Mode=ModeMFD2Eng4 + +[Aux_2_Mode_4_ToggleCooling] +IOMapping=ButtonAuxUpperCenter7 +Type=EventMapping +Subsystem=SRM4 +MessageID=ToggleCooling +Mode=ModeMFD2Eng4 + + +//----------------------------------------------------------------------- +// Aux 3 mappings +//----------------------------------------------------------------------- +//------------------------------------------ +// Aux 3 'Quad screen' mappings +//------------------------------------------ +[MFD3_to_Mode_1] +IOMapping=ButtonAuxLowerRight1 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Eng1 +Mode=ModeMFD3Quad + +[MFD3_Configure_Trigger_1] +IOMapping=ButtonAuxLowerRight2 +Type=EventMapping +Subsystem=MLaser_2 +MessageID=ConfigureMappables +Mode=ModeMFD3Quad + +[MFD3_to_Mode_2] +IOMapping=ButtonAuxLowerRight3 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Eng2 +Mode=ModeMFD3Quad + +[MFD3_Configure_Trigger_2] +IOMapping=ButtonAuxLowerRight4 +Type=EventMapping +Subsystem=GAUSS +MessageID=ConfigureMappables +Mode=ModeMFD3Quad + +[MFD3_to_Mode_3] +IOMapping=ButtonAuxLowerRight5 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Eng3 +Mode=ModeMFD3Quad + +[MFD3_Configure_Trigger_3] +IOMapping=ButtonAuxLowerRight6 +Type=EventMapping +Subsystem=SLaser_2 +MessageID=ConfigureMappables +Mode=ModeMFD3Quad + +[MFD3_to_Mode_4] +IOMapping=ButtonAuxLowerRight7 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Eng4 +Mode=ModeMFD3Quad + +[MFD3_Configure_Trigger_4] +IOMapping=ButtonAuxLowerRight8 +Type=EventMapping +Subsystem=AFC25 +MessageID=ConfigureMappables +Mode=ModeMFD3Quad + +//-------------------------------------------- +// Aux 3 'Mode 1' mappings, AuxScreenNumber=9 +//-------------------------------------------- +[Aux_3_Mode_1_to_MFD3] +IOMapping=ButtonAuxLowerRight8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Quad +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_Select_GeneratorA] +IOMapping=ButtonAuxLowerRight1 +Type=EventMapping +Subsystem=MLaser_2 +MessageID=SelectGeneratorA +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_Select_GeneratorB] +IOMapping=ButtonAuxLowerRight2 +Type=EventMapping +Subsystem=MLaser_2 +MessageID=SelectGeneratorB +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_Select_GeneratorC] +IOMapping=ButtonAuxLowerRight3 +Type=EventMapping +Subsystem=MLaser_2 +MessageID=SelectGeneratorC +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_Select_GeneratorD] +IOMapping=ButtonAuxLowerRight4 +Type=EventMapping +Subsystem=MLaser_2 +MessageID=SelectGeneratorD +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_OPTION] +IOMapping=ButtonAuxLowerRight5 +Type=EventMapping +Subsystem=MLaser_2 +MessageID=ToggleSeekVoltage +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerRight6 +Type=EventMapping +Subsystem=MLaser_2 +MessageID=ToggleGeneratorMode +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_ToggleCooling] +IOMapping=ButtonAuxLowerRight7 +Type=EventMapping +Subsystem=MLaser_2 +MessageID=ToggleCooling +Mode=ModeMFD3Eng1 + +//-------------------------------------------- +// Aux 3 'Mode 2' mappings, AuxScreenNumber=10 +//-------------------------------------------- +[Aux_3_Mode_2_to_MFD3] +IOMapping=ButtonAuxLowerRight8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Quad +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_Select_GeneratorA] +IOMapping=ButtonAuxLowerRight1 +Type=EventMapping +Subsystem=GAUSS +MessageID=SelectGeneratorA +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_Select_GeneratorB] +IOMapping=ButtonAuxLowerRight2 +Type=EventMapping +Subsystem=GAUSS +MessageID=SelectGeneratorB +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_Select_GeneratorC] +IOMapping=ButtonAuxLowerRight3 +Type=EventMapping +Subsystem=GAUSS +MessageID=SelectGeneratorC +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_Select_GeneratorD] +IOMapping=ButtonAuxLowerRight4 +Type=EventMapping +Subsystem=GAUSS +MessageID=SelectGeneratorD +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_OPTION] +IOMapping=ButtonAuxLowerRight5 +Type=EventMapping +Subsystem=GAUSS +MessageID=EjectAmmo +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerRight6 +Type=EventMapping +Subsystem=GAUSS +MessageID=ToggleGeneratorMode +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_ToggleCooling] +IOMapping=ButtonAuxLowerRight7 +Type=EventMapping +Subsystem=GAUSS +MessageID=ToggleCooling +Mode=ModeMFD3Eng2 + +//-------------------------------------------- +// Aux 3 'Mode 3' mappings, AuxScreenNumber=11 +//-------------------------------------------- +[Aux_3_Mode_3_to_MFD3] +IOMapping=ButtonAuxLowerRight8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Quad +Mode=ModeMFD3Eng3 + +[Aux_3_Mode_3_Select_GeneratorA] +IOMapping=ButtonAuxLowerRight1 +Type=EventMapping +Subsystem=SLaser_2 +MessageID=SelectGeneratorA +Mode=ModeMFD3Eng3 + +[Aux_3_Mode_3_Select_GeneratorB] +IOMapping=ButtonAuxLowerRight2 +Type=EventMapping +Subsystem=SLaser_2 +MessageID=SelectGeneratorB +Mode=ModeMFD3Eng3 + +[Aux_3_Mode_3_Select_GeneratorC] +IOMapping=ButtonAuxLowerRight3 +Type=EventMapping +Subsystem=SLaser_2 +MessageID=SelectGeneratorC +Mode=ModeMFD3Eng3 + +[Aux_3_Mode_3_Select_GeneratorD] +IOMapping=ButtonAuxLowerRight4 +Type=EventMapping +Subsystem=SLaser_2 +MessageID=SelectGeneratorD +Mode=ModeMFD3Eng3 + +[Aux_3_Mode_3_OPTION] +IOMapping=ButtonAuxLowerRight5 +Type=EventMapping +Subsystem=SLaser_2 +MessageID=ToggleSeekVoltage +Mode=ModeMFD3Eng3 + +[Aux_3_Mode_3_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerRight6 +Type=EventMapping +Subsystem=SLaser_2 +MessageID=ToggleGeneratorMode +Mode=ModeMFD3Eng3 + +[Aux_3_Mode_3_ToggleCooling] +IOMapping=ButtonAuxLowerRight7 +Type=EventMapping +Subsystem=SLaser_2 +MessageID=ToggleCooling +Mode=ModeMFD3Eng3 + +//--------------------------------------------- +// Aux 3 'Mode 4' mappings, AuxScreenNumber=12 +//--------------------------------------------- +[Aux_3_Mode_4_to_MFD3] +IOMapping=ButtonAuxLowerRight8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Quad +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_Select_GeneratorA] +IOMapping=ButtonAuxLowerRight1 +Type=EventMapping +Subsystem=AFC25 +MessageID=SelectGeneratorA +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_Select_GeneratorB] +IOMapping=ButtonAuxLowerRight2 +Type=EventMapping +Subsystem=AFC25 +MessageID=SelectGeneratorB +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_Select_GeneratorC] +IOMapping=ButtonAuxLowerRight3 +Type=EventMapping +Subsystem=AFC25 +MessageID=SelectGeneratorC +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_Select_GeneratorD] +IOMapping=ButtonAuxLowerRight4 +Type=EventMapping +Subsystem=AFC25 +MessageID=SelectGeneratorD +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_OPTION] +IOMapping=ButtonAuxLowerRight5 +Type=EventMapping +Subsystem=AFC25 +MessageID=EjectAmmo +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerRight6 +Type=EventMapping +Subsystem=AFC25 +MessageID=ToggleGeneratorMode +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_ToggleCooling] +IOMapping=ButtonAuxLowerRight7 +Type=EventMapping +Subsystem=AFC25 +MessageID=ToggleCooling +Mode=ModeMFD3Eng4 +[PPC_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=PPC +AttributeID=TriggerState +Mode=ModeNonMapping +[GAUSS_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=GAUSS +AttributeID=TriggerState +Mode=ModeNonMapping +[AFC25_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=AFC25 +AttributeID=TriggerState +Mode=ModeNonMapping +[MLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=MLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[MLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=MLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[MLaser_3_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=MLaser_3 +AttributeID=TriggerState +Mode=ModeNonMapping +[SLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=SLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[SLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=SLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[SRM4_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=SRM4 +AttributeID=TriggerState +Mode=ModeNonMapping diff --git a/CONTENT/BT/MODELS/LOK2THR.CTL b/CONTENT/BT/MODELS/LOK2THR.CTL new file mode 100644 index 0000000..4cccfd8 --- /dev/null +++ b/CONTENT/BT/MODELS/LOK2THR.CTL @@ -0,0 +1,75 @@ +[StickPosition_JP] +IOMapping=JoystickPhysical +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=StickPosition +Mode=ModeAlwaysActive + +[TorsoLeft_BJHL] +IOMapping=ButtonJoystickHatLeft +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoLeft +Mode=ModeAlwaysActive + +[TorsoRight_BJHR] +IOMapping=ButtonJoystickHatRight +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoRight +Mode=ModeAlwaysActive + +[PPC_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=PPC +AttributeID=TriggerState +Mode=ModeNonMapping +[GAUSS_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=GAUSS +AttributeID=TriggerState +Mode=ModeNonMapping +[AFC25_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=AFC25 +AttributeID=TriggerState +Mode=ModeNonMapping +[MLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=MLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[MLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=MLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[MLaser_3_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=MLaser_3 +AttributeID=TriggerState +Mode=ModeNonMapping +[SLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=SLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[SLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=SLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[SRM4_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=SRM4 +AttributeID=TriggerState +Mode=ModeNonMapping diff --git a/CONTENT/BT/MODELS/LOKDEAD.MOD b/CONTENT/BT/MODELS/LOKDEAD.MOD new file mode 100644 index 0000000..83959ea --- /dev/null +++ b/CONTENT/BT/MODELS/LOKDEAD.MOD @@ -0,0 +1,9 @@ +[video] +object=104 3 4 5 1007 15 1001 + +[audio] +external=brnext.scp + +[gamedata] +class=ExplosionClassID +ExplosionDuration=9.0 diff --git a/CONTENT/BT/MODELS/LOKDMG.EXP b/CONTENT/BT/MODELS/LOKDMG.EXP new file mode 100644 index 0000000..c9b1598 --- /dev/null +++ b/CONTENT/BT/MODELS/LOKDMG.EXP @@ -0,0 +1,28 @@ +[OneDamage] +ExplosionModelFile=dam1hit +DamageLevel=0.2 +TimeDelay=0.0 + +[TwoDamage] +ExplosionModelFile=dam2hit +DamageLevel=0.4 +TimeDelay=0.0 + +[ThreeDamage] +ExplosionModelFile=dam3hit +DamageLevel=0.6 +TimeDelay=0.0 + +[FourDamage] +ExplosionModelFile=dam4hit +DamageLevel=0.8 +TimeDelay=0.0 + +[DestroyedExplosion] +ExplosionModelFile=desthit +GraphicState=Destroyed + +[GoneExplosion] +ExplosionModelFile=desthit +GraphicState=Gone + diff --git a/CONTENT/BT/MODELS/LOKI.MOD b/CONTENT/BT/MODELS/LOKI.MOD new file mode 100644 index 0000000..ce021d8 --- /dev/null +++ b/CONTENT/BT/MODELS/LOKI.MOD @@ -0,0 +1,136 @@ +[video] +skeleton=lok.skl +skeletona=lox.skl +destroyed=lokd.skl +//destroyeda=loxd.skl +dzm=lokskin.dzm +dzma=loxskin.dzm + +[audio] +internal=lokint.scp +external=lokext.scp + +[collision] +name=lok_cv.sld + +[gauge] +image=thor_ga.gim + +[gaugeMissionReview] +pixelmap=loki_mr.pcc + +[gamedata] +class=MechClassID +MoverMass=65000.0 +MomentOfInertia=1.75 3.125 1.75 +PositiveLinearDragCoefficients=0.14 0.4 0.07 +NegativeLinearDragCoefficients=0.14 0.2 0.08 +AngularDragCoefficients=0.3 0.5 0.3 +FrictionCoefficient=0.1 +ElasticityCoefficient=0.2 +MinimumBounceSpeed=0.2 +MaxAcceleration=15 +AnimationPrefix=lok +Subsystems=loki.sub +DamageZones=loki.dmg +DamageLookupTable=lokdmg.tbl +RelativeMechValue=1.0 +LookLeftAngle=55 +LookRightAngle=-55 +LookBackAngle=0 +LookFrontAngle=-10 +WalkingTurnRate=50 +RunningTurnRate=40 +DeathEffect=lokdead +CameraOffset=0.0 5.0 1.0 +DeathSplashDamage=5 +DeathSplashRadius=50 +TimeDelay=0.3 + +MaxUnstableAcceleration=33.0 +UnstableAccelerationEffect=0.5 +UnstableGunTheEngineEffect=0.8 +UnstableSuperStopEffect=0.25 +UnstableHighVelocityEffect=0.25 +UnstableStopedTurnEffect=1.0 +SuperStopAcceleration=15.0 + +ThrottleAdjustment=1.0 + +UpdateTurnDegreeDiffrence=3 +UpdateTurnVelocityDiffrence=0.045 +UpdatePositionDiffrence=0.3 + +ShadowJointName=jointshadow + +[ControlMappings] +Thrustmaster=lokthr.ctl +L4=lokl4.ctl + +[animations] +animationtransition=lokswr.ani +animation=lokwwl.ani +animation=lokwwr.ani +animation=lokwsr.ani +animation=lokwsl.ani +animationtransition=lokwrl.ani +animationtransition=lokwrr.ani +animation=lokrrl.ani +animation=lokrrr.ani +animation=lokrwl.ani +animation=lokrwr.ani +animation=lokbmp.ani + +animationtransition=lokswri.ani +animation=lokwwli.ani +animation=lokwwri.ani +animation=lokwsri.ani +animation=lokwsli.ani +animationtransition=lokwrli.ani +animationtransition=lokwrri.ani +animation=lokrrli.ani +animation=lokrrri.ani +animation=lokrwli.ani +animation=lokrwri.ani +animation=lokbmpi.ani + +animation=lokbbl.ani +animation=lokbbr.ani +animation=lokbsl.ani +animation=lokbsr.ani +animationtransition=loksbl.ani +animationtransition=loksbr.ani +animation=lokbbli.ani +animation=lokbbri.ani +animation=lokbsli.ani +animation=lokbsri.ani +animationtransition=loksbli.ani +animationtransition=loksbri.ani + +animation=lokggl.ani +animation=lokggr.ani +animation=lokgsl.ani +animation=lokgsr.ani +animationtransition=lokwgl.ani +animationtransition=lokwgr.ani + +animation=lokggli.ani +animation=lokggri.ani +animation=lokgsli.ani +animation=lokgsri.ani +animationtransition=lokwgli.ani +animationtransition=lokwgri.ani + +animation=loksqu.ani +animation=loksqd.ani +animation=loksqui.ani +animation=loksqdi.ani + +animation=loktrn.ani +animation=loktrni.ani + +//animation=lokff.ani +//animation=lokfb.ani +//animation=lokfl.ani +//animation=lokfr.ani + diff --git a/CONTENT/BT/MODELS/LOKI.SUB b/CONTENT/BT/MODELS/LOKI.SUB new file mode 100644 index 0000000..01794d4 --- /dev/null +++ b/CONTENT/BT/MODELS/LOKI.SUB @@ -0,0 +1,212 @@ +[HeatSink] +Type=HeatSinkClassID +Include=heatsnk.sub +HeatSinkCount=15 +SubsystemFlags=DontReplicateFlag + +[Reservoir] +Type=ReservoirClassID +Include=reserve.sub +HeatSink=HeatSink +SegmentPageName=siteeyepoint + +[Condenser1] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser2] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser3] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser4] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser5] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser6] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[GeneratorA] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser1 +SubsystemFlags=DontReplicateFlag + +[GeneratorB] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser2 +SubsystemFlags=DontReplicateFlag + +[GeneratorC] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser3 +SubsystemFlags=DontReplicateFlag + +[GeneratorD] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser5 +SubsystemFlags=DontReplicateFlag + +[Avionics] +Type=SensorClassID +Include=sensor.sub +HeatSink=Condenser2 +VoltageSource=GeneratorD +AuxScreenNumber=5 +SubsystemFlags=DontReplicateFlag + +AuxScreenPlacement=2 +[Myomers] +Type=MyomersClassID +Include=myomers.sub +HeatSink=Condenser5 +VoltageSource=GeneratorD +AuxScreenNumber=6 +SubsystemFlags=DontReplicateFlag + +AuxScreenPlacement=0 +[Gyroscope] +Type=GyroscopeClassID +Include=gyro.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag + +[Torso] +Type=TorsoClassID +Include=torso.sub +WatchedSubsystem=Myomers + +HorizontalRotationPerSecond=45 +VerticalRotationPerSecond=30 +HorizontalLimitRight=-120 +HorizontalLimitLeft=120 +[HUD] +Type=HUDClassID +Include=hud.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag + +[Searchlight] +Type=SearchlightClassID +Include=srchlite.sub +WatchedSubsystem=Avionics +SegmentPageName=sitelight + +[ThermalSight] +Type=ThermalSightClassID +Include=Thermal.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag +[AmmoBinAFC50_1] +Type=AmmoBinClassID +Include=ammafc50.sub +WatchedSubsystem=AFC50_1 +AmmoCount=20 +[AFC50_1] +AmmoBin=AmmoBinAFC50_1 +Type=ProjectileWeaponClassID +Include=afc50.sub +SegmentPageName=sitelgunport +PipPosition=1 +VoltageSource=GeneratorA +HeatSink=Condenser4 +AuxScreenNumber=1 +AuxScreenPlacement=4 +[AmmoBinAFC50_2] +Type=AmmoBinClassID +Include=ammafc50.sub +WatchedSubsystem=AFC50_2 +AmmoCount=20 +[AFC50_2] +AmmoBin=AmmoBinAFC50_2 +Type=ProjectileWeaponClassID +Include=afc50.sub +SegmentPageName=sitergunport +PipPosition=2 +VoltageSource=GeneratorC +HeatSink=Condenser6 +AuxScreenNumber=10 +AuxScreenPlacement=6 +[ERMLaser_1] +Type=EmitterClassID +Include=ermlaser.sub +SegmentPageName=sitelgunport +PipPosition=1 +VoltageSource=GeneratorA +HeatSink=Condenser4 +AuxScreenNumber=3 +AuxScreenPlacement=4 +[ERMLaser_2] +Type=EmitterClassID +Include=ermlaser.sub +SegmentPageName=sitergunport +PipPosition=2 +VoltageSource=GeneratorC +HeatSink=Condenser6 +AuxScreenNumber=12 +AuxScreenPlacement=6 +[ERSLaser_1] +Type=EmitterClassID +Include=erslaser.sub +SegmentPageName=siteltorsoport +PipPosition=1 +VoltageSource=GeneratorA +HeatSink=Condenser1 +AuxScreenNumber=2 +AuxScreenPlacement=1 +[ERSLaser_2] +Type=EmitterClassID +Include=erslaser.sub +SegmentPageName=sitertorsoport +PipPosition=2 +VoltageSource=GeneratorC +HeatSink=Condenser3 +AuxScreenNumber=9 +AuxScreenPlacement=3 +[AmmoBinSRM4] +Type=AmmoBinClassID +Include=ammsrm4.sub +WatchedSubsystem=SRM4 +AmmoCount=12 +[SRM4] +AmmoBin=AmmoBinSRM4 +Type=MissileLauncherClassID +Include=srm4.sub +SegmentPageName=sitemissleport +PipPosition=1 +VoltageSource=GeneratorB +HeatSink=Condenser2 +AuxScreenNumber=8 +AuxScreenPlacement=7 +[MessageManager] +Type=SubsystemMessageManagerClassID +ExplosionModelFile=majhit 1.0 +TerrainHitExplosion=gndhit +RendererCompensateTime=0.3 +[MechTech] +Type=MechTechClassID +AlarmModel=mechalrm +SubsystemFlags=DontReplicateFlag diff --git a/CONTENT/BT/MODELS/LOKI1.MOD b/CONTENT/BT/MODELS/LOKI1.MOD new file mode 100644 index 0000000..2c323f2 --- /dev/null +++ b/CONTENT/BT/MODELS/LOKI1.MOD @@ -0,0 +1,134 @@ +[video] +skeleton=lok.skl +skeletona=lox.skl +destroyed=lokd.skl +//destroyeda=loxd.skl +dzm=lokskin.dzm +dzma=loxskin.dzm + +[audio] +internal=lo1int.scp +external=lo1ext.scp + +[collision] +name=lok_cv.sld + +[gauge] +image=thor_ga.gim + +[gaugeMissionReview] +pixelmap=loki_mr.pcc + +[gamedata] +class=MechClassID +MoverMass=65000.0 +MomentOfInertia=1.75 3.125 1.75 +PositiveLinearDragCoefficients=0.14 0.4 0.07 +NegativeLinearDragCoefficients=0.14 0.2 0.08 +AngularDragCoefficients=0.3 0.5 0.3 +FrictionCoefficient=0.1 +ElasticityCoefficient=0.2 +MinimumBounceSpeed=0.2 +MaxAcceleration=10 +AnimationPrefix=lok +Subsystems=loki1.sub +DamageZones=loki1.dmg +DamageLookupTable=lokdmg.tbl +RelativeMechValue=1.0 +LookLeftAngle=60 +LookRightAngle=-60 +LookBackAngle=0 +LookFrontAngle=-10 +WalkingTurnRate=40 +RunningTurnRate=10 +DeathEffect=lokdead +CameraOffset=0.0 5.0 1.0 +DeathSplashDamage=10 +DeathSplashRadius=50 +TimeDelay=0.3 + +MaxUnstableAcceleration=22.0 +UnstableAccelerationEffect=0.5 +UnstableGunTheEngineEffect=0.8 +UnstableSuperStopEffect=0.25 +UnstableHighVelocityEffect=0.25 +UnstableStopedTurnEffect=1.0 +SuperStopAcceleration=10.0 + +UpdateTurnDegreeDiffrence=3 +UpdateTurnVelocityDiffrence=0.045 +UpdatePositionDiffrence=0.3 + +ShadowJointName=jointshadow + +[ControlMappings] +Thrustmaster=lo1thr.ctl +L4=lo1l4.ctl + +[animations] +animationtransition=lokswr.ani +animation=lokwwl.ani +animation=lokwwr.ani +animation=lokwsr.ani +animation=lokwsl.ani +animationtransition=lokwrl.ani +animationtransition=lokwrr.ani +animation=lokrrl.ani +animation=lokrrr.ani +animation=lokrwl.ani +animation=lokrwr.ani +animation=lokbmp.ani + +animationtransition=lokswri.ani +animation=lokwwli.ani +animation=lokwwri.ani +animation=lokwsri.ani +animation=lokwsli.ani +animationtransition=lokwrli.ani +animationtransition=lokwrri.ani +animation=lokrrli.ani +animation=lokrrri.ani +animation=lokrwli.ani +animation=lokrwri.ani +animation=lokbmpi.ani + +animation=lokbbl.ani +animation=lokbbr.ani +animation=lokbsl.ani +animation=lokbsr.ani +animationtransition=loksbl.ani +animationtransition=loksbr.ani +animation=lokbbli.ani +animation=lokbbri.ani +animation=lokbsli.ani +animation=lokbsri.ani +animationtransition=loksbli.ani +animationtransition=loksbri.ani + +animation=lokggl.ani +animation=lokggr.ani +animation=lokgsl.ani +animation=lokgsr.ani +animationtransition=lokwgl.ani +animationtransition=lokwgr.ani + +animation=lokggli.ani +animation=lokggri.ani +animation=lokgsli.ani +animation=lokgsri.ani +animationtransition=lokwgli.ani +animationtransition=lokwgri.ani + +animation=loksqu.ani +animation=loksqd.ani +animation=loksqui.ani +animation=loksqdi.ani + +animation=loktrn.ani +animation=loktrni.ani + +animation=lokff.ani +animation=lokfb.ani +animation=lokfl.ani +animation=lokfr.ani + diff --git a/CONTENT/BT/MODELS/LOKI1.SUB b/CONTENT/BT/MODELS/LOKI1.SUB new file mode 100644 index 0000000..7ed0dd0 --- /dev/null +++ b/CONTENT/BT/MODELS/LOKI1.SUB @@ -0,0 +1,232 @@ +[HeatSink] +Type=HeatSinkClassID +Include=heatsnk.sub +HeatSinkCount=14 +SubsystemFlags=DontReplicateFlag + +[Reservoir] +Type=ReservoirClassID +Include=reserve.sub +HeatSink=HeatSink +SegmentPageName=siteeyepoint + +[Condenser1] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser2] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser3] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser4] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser5] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser6] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[GeneratorA] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser1 +SubsystemFlags=DontReplicateFlag + +[GeneratorB] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser2 +SubsystemFlags=DontReplicateFlag + +[GeneratorC] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser3 +SubsystemFlags=DontReplicateFlag + +[GeneratorD] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser5 +SubsystemFlags=DontReplicateFlag + +[Avionics] +Type=SensorClassID +Include=sensor.sub +HeatSink=Condenser2 +VoltageSource=GeneratorB +AuxScreenNumber=5 +SubsystemFlags=DontReplicateFlag + +AuxScreenPlacement=2 +[Myomers] +Type=MyomersClassID +Include=myomers.sub +HeatSink=Condenser5 +VoltageSource=GeneratorD +AuxScreenNumber=6 +SubsystemFlags=DontReplicateFlag + +AuxScreenPlacement=0 +[Gyroscope] +Type=GyroscopeClassID +Include=gyro.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag + +[Torso] +Type=TorsoClassID +Include=torso.sub +WatchedSubsystem=Myomers + +HorizontalRotationPerSecond=65 +VerticalRotationPerSecond=30 +HorizontalLimitRight=-100 +HorizontalLimitLeft=100 +[HUD] +Type=HUDClassID +Include=hud.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag + +[Searchlight] +Type=SearchlightClassID +Include=srchlite.sub +WatchedSubsystem=Avionics +SegmentPageName=sitelight +[AmmoBinAFC1] +Type=AmmoBinClassID +Include=amafc100.sub +WatchedSubsystem=AFC1 +AmmoCount=15 +[AFC1] +AmmoBin=AmmoBinAFC1 +Type=ProjectileWeaponClassID +Include=afc100.sub +SegmentPageName=sitelgunport +SiteOffset=0 0.2 0 +PipPosition=1 +VoltageSource=GeneratorA +HeatSink=Condenser4 +AuxScreenNumber=1 +AuxScreenPlacement=4 +[AmmoBinAFC2] +Type=AmmoBinClassID +Include=ammafc50.sub +WatchedSubsystem=AFC2 +AmmoCount=20 +[AFC2] +AmmoBin=AmmoBinAFC2 +Type=ProjectileWeaponClassID +Include=afc50.sub +SegmentPageName=sitergunport +SiteOffset=0 0.2 0 +PipPosition=1 +VoltageSource=GeneratorC +HeatSink=Condenser6 +AuxScreenNumber=10 +AuxScreenPlacement=6 +[ERMLaser] +Type=EmitterClassID +Include=ermlaser.sub +SegmentPageName=sitergunport +SiteOffset=0 -0.2 0 +PipPosition=1 +VoltageSource=GeneratorC +HeatSink=Condenser6 +AuxScreenNumber=9 +AuxScreenPlacement=6 +[ERSLaser1] +Type=EmitterClassID +Include=erslaser.sub +SegmentPageName=sitelgunport +SiteOffset=0 -0.2 0 +PipPosition=1 +VoltageSource=GeneratorA +HeatSink=Condenser4 +AuxScreenNumber=2 +AuxScreenPlacement=4 +[ERSLaser2] +Type=EmitterClassID +Include=erslaser.sub +SegmentPageName=siteltorsoport +SiteOffset=0.2 0 0 +PipPosition=2 +VoltageSource=GeneratorD +HeatSink=Condenser2 +AuxScreenNumber=4 +AuxScreenPlacement=2 +[ERSLaser3] +Type=EmitterClassID +Include=erslaser.sub +SegmentPageName=sitertorsoport +SiteOffset=0.2 0 0 +PipPosition=3 +VoltageSource=GeneratorD +HeatSink=Condenser2 +AuxScreenNumber=11 +AuxScreenPlacement=2 +[MLaser1] +Type=EmitterClassID +Include=mlaser.sub +SegmentPageName=siteltorsoport +SiteOffset=-0.2 0 0 +PipPosition=1 +VoltageSource=GeneratorB +HeatSink=Condenser1 +AuxScreenNumber=3 +AuxScreenPlacement=1 +[MLaser2] +Type=EmitterClassID +Include=mlaser.sub +SegmentPageName=sitertorsoport +SiteOffset=-0.2 0 0 +PipPosition=2 +VoltageSource=GeneratorB +HeatSink=Condenser3 +AuxScreenNumber=12 +AuxScreenPlacement=3 +[AmmoBinSRM] +Type=AmmoBinClassID +Include=ammsrm6.sub +WatchedSubsystem=SRM +AmmoCount=15 +[SRM] +AmmoBin=AmmoBinSRM +Type=MissileLauncherClassID +Include=srm6.sub +SegmentPageName=sitemissleport +PipPosition=1 +VoltageSource=GeneratorB +HeatSink=Condenser2 +AuxScreenNumber=7 +AuxScreenPlacement=7 +[MessageManager] +Type=SubsystemMessageManagerClassID +ExplosionModelFile=majhit 1.0 +TerrainHitExplosion=gndhit +RendererCompensateTime=0.3 +[MechTech] +Type=MechTechClassID +AlarmModel=mechalrm +SubsystemFlags=DontReplicateFlag diff --git a/CONTENT/BT/MODELS/LOKL4.CTL b/CONTENT/BT/MODELS/LOKL4.CTL new file mode 100644 index 0000000..1d5a728 --- /dev/null +++ b/CONTENT/BT/MODELS/LOKL4.CTL @@ -0,0 +1,895 @@ +[StickPosition_JP] +//----------------------------------------------------------------------- +// Joystick +//----------------------------------------------------------------------- +IOMapping=JoystickPhysical +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=StickPosition +Mode=ModeAlwaysActive + +[Throttle_ST] +//----------------------------------------------------------------------- +// Throttle +//----------------------------------------------------------------------- +IOMapping=ScalarThrottle +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=ThrottlePosition +Mode=ModeAlwaysActive + +//----------------------------------------------------------------------- +// Misc. switches +//----------------------------------------------------------------------- +[ReverseThrust_BT1] +IOMapping=ButtonThrottle1 +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=ReverseThrust +Mode=ModeAlwaysActive + +[TorsoCenter_BJHU] +IOMapping=ButtonJoystickHatUp +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoCenter +Mode=ModeAlwaysActive + +[LookLeft_BJHL] +IOMapping=ButtonJoystickHatLeft +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=LookLeft +Mode=ModeAlwaysActive + +[LookRight_BJHR] +IOMapping=ButtonJoystickHatRight +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=LookRight +Mode=ModeAlwaysActive + +[LookBack_BJHD] +IOMapping=ButtonJoystickHatDown +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=LookBehind +Mode=ModeAlwaysActive + +//----------------------------------------------------------------------- +// Secondary mappings +//----------------------------------------------------------------------- +[Button_Sec_1] // Zoom radar in (magnify image) +IOMapping=ButtonSecondary1 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=ZoomIn +Mode=ModeAlwaysActive + +[Button_Sec_2] // Zoom radar out (reduce image) +IOMapping=ButtonSecondary2 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=ZoomOut +Mode=ModeAlwaysActive + +// +// 'Heat vision' mapped to secondary +// SGM 1/6/97 + +[Button_Sec_3] // Toggle heat vision +IOMapping=ButtonSecondary3 +Type=EventMapping +Subsystem=ThermalSight +MessageID=ToggleLamp +Mode=ModeAlwaysActive + +// +// 'Duck' remapped to real message and location. +// GDU 7/9/96 + +[Button_Sec_4] // Request crouch position +IOMapping=ButtonSecondary4 +Type=EventMapping +MessageID=DuckRequest +Mode=ModeAlwaysActive + +[Button_Sec_5] // Toggle searchlight +IOMapping=ButtonSecondary5 +Type=EventMapping +Subsystem=Searchlight +MessageID=ToggleLamp +Mode=ModeAlwaysActive + +[Button_Sec_6] // Cycle through damage display modes +IOMapping=ButtonSecondary6 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=CycleDisplayMode +Mode=ModeAlwaysActive + +[Button_Sec_7] // Cycle through control modes +IOMapping=ButtonSecondary7 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=CycleControlMode +Mode=ModeAlwaysActive + +// ButtonSecondary8 presently unused + +[Button_Sec_9] // Toggle generator 'a' +IOMapping=ButtonSecondary9 +Type=EventMapping +Subsystem=GeneratorA +MessageID=ToggleGeneratorOnOff +Mode=ModeAlwaysActive + +[Button_Sec_10] // Toggle generator 'b' +IOMapping=ButtonSecondary10 +Type=EventMapping +Subsystem=GeneratorB +MessageID=ToggleGeneratorOnOff +Mode=ModeAlwaysActive + +[Button_Sec_11] // Toggle generator 'c' +IOMapping=ButtonSecondary11 +Type=EventMapping +Subsystem=GeneratorC +MessageID=ToggleGeneratorOnOff +Mode=ModeAlwaysActive + +[Button_Sec_12] // Toggle generator 'd' +IOMapping=ButtonSecondary12 +Type=EventMapping +Subsystem=GeneratorD +MessageID=ToggleGeneratorOnOff +Mode=ModeAlwaysActive + +//----------------------------------------- +// Heat Management Screen Mappings +//----------------------------------------- +[Condenser1_Button] +IOMapping=ButtonAuxUpperLeft1 +Type=EventMapping +Subsystem=Condenser1 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Condenser2_Button] +IOMapping=ButtonAuxUpperLeft2 +Type=EventMapping +Subsystem=Condenser2 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Condenser3_Button] +IOMapping=ButtonAuxUpperLeft3 +Type=EventMapping +Subsystem=Condenser3 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Reservoir_Button] +IOMapping=ButtonAuxUpperLeft4 +Type=EventMapping +Subsystem=Reservoir +MessageID=InjectCoolant +Mode=ModeAlwaysActive + +[Condenser4_Button] +IOMapping=ButtonAuxUpperLeft5 +Type=EventMapping +Subsystem=Condenser4 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Condenser5_Button] +IOMapping=ButtonAuxUpperLeft6 +Type=EventMapping +Subsystem=Condenser5 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Condenser6_Button] +IOMapping=ButtonAuxUpperLeft7 +Type=EventMapping +Subsystem=Condenser6 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Reduce_Button] +IOMapping=ButtonAuxUpperLeft8 +Type=EventMapping +MessageID=BalanceCoolant +Mode=ModeAlwaysActive + +//----------------------------------------------------------------------- +// Aux 1 mappings +//----------------------------------------------------------------------- +//------------------------------------------ +// Aux 1 'Quad screen' mappings +//------------------------------------------ +[MFD1_to_Mode_1] // To mode 1 +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Eng1 +Mode=ModeMFD1Quad + +[MFD1_Configure_Trigger_1] // Configure +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Subsystem=AFC50_1 +MessageID=ConfigureMappables +Mode=ModeMFD1Quad + +[MFD1_to_Mode_2] // To mode 2 +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Eng2 +Mode=ModeMFD1Quad + +[MFD1_Configure_Trigger_2] // Configure +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Subsystem=ERSLaser_1 +MessageID=ConfigureMappables +Mode=ModeMFD1Quad + +[MFD1_to_Mode_3] // To mode 3 +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Eng3 +Mode=ModeMFD1Quad + +[MFD1_Configure_Trigger_3] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Subsystem=ERMLaser_1 +MessageID=ConfigureMappables +Mode=ModeMFD1Quad + +[Aux_1_Mode_1_to_MFD1] +IOMapping=ButtonAuxLowerLeft8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Quad +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_Select_GeneratorA] +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Subsystem=AFC50_1 +MessageID=SelectGeneratorA +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_Select_GeneratorB] +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Subsystem=AFC50_1 +MessageID=SelectGeneratorB +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_Select_GeneratorC] +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Subsystem=AFC50_1 +MessageID=SelectGeneratorC +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_Select_GeneratorD] +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Subsystem=AFC50_1 +MessageID=SelectGeneratorD +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_OPTION] +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Subsystem=AFC50_1 +MessageID=EjectAmmo +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Subsystem=AFC50_1 +MessageID=ToggleGeneratorMode +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_ToggleCooling] +IOMapping=ButtonAuxLowerLeft7 +Type=EventMapping +Subsystem=AFC50_1 +MessageID=ToggleCooling +Mode=ModeMFD1Eng1 + +//-------------------------------------------- +// Aux 1 'Mode 2' mappings, AuxScreenNumber=2 +//-------------------------------------------- +[Aux_1_Mode_2_to_MFD1] +IOMapping=ButtonAuxLowerLeft8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Quad +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_Select_GeneratorA] +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Subsystem=ERSLaser_1 +MessageID=SelectGeneratorA +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_Select_GeneratorB] +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Subsystem=ERSLaser_1 +MessageID=SelectGeneratorB +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_Select_GeneratorC] +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Subsystem=ERSLaser_1 +MessageID=SelectGeneratorC +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_Select_GeneratorD] +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Subsystem=ERSLaser_1 +MessageID=SelectGeneratorD +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_OPTION] +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Subsystem=ERSLaser_1 +MessageID=ToggleSeekVoltage +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Subsystem=ERSLaser_1 +MessageID=ToggleGeneratorMode +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_ToggleCooling] +IOMapping=ButtonAuxLowerLeft7 +Type=EventMapping +Subsystem=ERSLaser_1 +MessageID=ToggleCooling +Mode=ModeMFD1Eng2 + +//--------------------------------------------- +// Aux 1 'Mode 3' mappings, AuxScreenNumber=3 +//--------------------------------------------- +[Aux_1_Mode_3_to_MFD1] +IOMapping=ButtonAuxLowerLeft8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Quad +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_Select_GeneratorA] +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Subsystem=ERMLaser_1 +MessageID=SelectGeneratorA +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_Select_GeneratorB] +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Subsystem=ERMLaser_1 +MessageID=SelectGeneratorB +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_Select_GeneratorC] +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Subsystem=ERMLaser_1 +MessageID=SelectGeneratorC +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_Select_GeneratorD] +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Subsystem=ERMLaser_1 +MessageID=SelectGeneratorD +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_OPTION] +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Subsystem=ERMLaser_1 +MessageID=ToggleSeekVoltage +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Subsystem=ERMLaser_1 +MessageID=ToggleGeneratorMode +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_ToggleCooling] +IOMapping=ButtonAuxLowerLeft7 +Type=EventMapping +Subsystem=ERMLaser_1 +MessageID=ToggleCooling +Mode=ModeMFD1Eng3 + +//-------------------------------------------- +// Aux 1 "Mode 4" Mappings, AuxScreenNumber=4 +//-------------------------------------------- +[MFD2_to_Mode_1] +IOMapping=ButtonAuxUpperCenter1 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Eng1 +Mode=ModeMFD2Quad + +[MFD2_to_Mode_2] +IOMapping=ButtonAuxUpperCenter3 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Eng2 +Mode=ModeMFD2Quad + +[MFD2_to_Mode_4] +IOMapping=ButtonAuxUpperCenter7 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Eng4 +Mode=ModeMFD2Quad + +[MFD2_Configure_Trigger_4] +IOMapping=ButtonAuxUpperCenter8 +Type=EventMapping +Subsystem=SRM4 +MessageID=ConfigureMappables +Mode=ModeMFD2Quad + +//-------------------------------------------- +// Aux 2 'Mode 1' mappings, AuxScreenNumber=9 +//-------------------------------------------- +[Aux_2_Mode_1_to_MFD2] +IOMapping=ButtonAuxUpperCenter8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Quad +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_Select_GeneratorA] +IOMapping=ButtonAuxUpperCenter1 +Type=EventMapping +Subsystem=Avionics +MessageID=SelectGeneratorA +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_Select_GeneratorB] +IOMapping=ButtonAuxUpperCenter2 +Type=EventMapping +Subsystem=Avionics +MessageID=SelectGeneratorB +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_Select_GeneratorC] +IOMapping=ButtonAuxUpperCenter3 +Type=EventMapping +Subsystem=Avionics +MessageID=SelectGeneratorC +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_Select_GeneratorD] +IOMapping=ButtonAuxUpperCenter4 +Type=EventMapping +Subsystem=Avionics +MessageID=SelectGeneratorD +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_ToggleGeneratorMode] +IOMapping=ButtonAuxUpperCenter6 +Type=EventMapping +Subsystem=Avionics +MessageID=ToggleGeneratorMode +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_ToggleCooling] +IOMapping=ButtonAuxUpperCenter7 +Type=EventMapping +Subsystem=Avionics +MessageID=ToggleCooling +Mode=ModeMFD2Eng1 + +//-------------------------------------------- +// Aux 2 'Mode 2' mappings, AuxScreenNumber=10 +//-------------------------------------------- +[Aux_2_Mode_2_to_MFD2] +IOMapping=ButtonAuxUpperCenter8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Quad +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_Select_GeneratorA] +IOMapping=ButtonAuxUpperCenter1 +Type=EventMapping +Subsystem=Myomers +MessageID=SelectGeneratorA +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_Select_GeneratorB] +IOMapping=ButtonAuxUpperCenter2 +Type=EventMapping +Subsystem=Myomers +MessageID=SelectGeneratorB +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_Select_GeneratorC] +IOMapping=ButtonAuxUpperCenter3 +Type=EventMapping +Subsystem=Myomers +MessageID=SelectGeneratorC +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_Select_GeneratorD] +IOMapping=ButtonAuxUpperCenter4 +Type=EventMapping +Subsystem=Myomers +MessageID=SelectGeneratorD +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_OPTION] +IOMapping=ButtonAuxUpperCenter5 +Type=EventMapping +Subsystem=Myomers +MessageID=ToggleSeekVoltage +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_ToggleGeneratorMode] +IOMapping=ButtonAuxUpperCenter6 +Type=EventMapping +Subsystem=Myomers +MessageID=ToggleGeneratorMode +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_ToggleCooling] +IOMapping=ButtonAuxUpperCenter7 +Type=EventMapping +Subsystem=Myomers +MessageID=ToggleCooling +Mode=ModeMFD2Eng2 + +//-------------------------------------------- +// Aux 3 'Mode 3' mappings, AuxScreenNumber=11 +//-------------------------------------------- +[Aux_2_Mode_4_to_MFD2] +IOMapping=ButtonAuxUpperCenter8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Quad +Mode=ModeMFD2Eng4 + +[Aux_2_Mode_4_Select_GeneratorA] +IOMapping=ButtonAuxUpperCenter1 +Type=EventMapping +Subsystem=SRM4 +MessageID=SelectGeneratorA +Mode=ModeMFD2Eng4 + +[Aux_2_Mode_4_Select_GeneratorB] +IOMapping=ButtonAuxUpperCenter2 +Type=EventMapping +Subsystem=SRM4 +MessageID=SelectGeneratorB +Mode=ModeMFD2Eng4 + +[Aux_2_Mode_4_Select_GeneratorC] +IOMapping=ButtonAuxUpperCenter3 +Type=EventMapping +Subsystem=SRM4 +MessageID=SelectGeneratorC +Mode=ModeMFD2Eng4 + +[Aux_2_Mode_4_Select_GeneratorD] +IOMapping=ButtonAuxUpperCenter4 +Type=EventMapping +Subsystem=SRM4 +MessageID=SelectGeneratorD +Mode=ModeMFD2Eng4 + +[Aux_2_Mode_4_OPTION] +IOMapping=ButtonAuxUpperCenter5 +Type=EventMapping +Subsystem=SRM4 +MessageID=EjectAmmo +Mode=ModeMFD2Eng4 + +[Aux_2_Mode_4_ToggleGeneratorMode] +IOMapping=ButtonAuxUpperCenter6 +Type=EventMapping +Subsystem=SRM4 +MessageID=ToggleGeneratorMode +Mode=ModeMFD2Eng4 + +[Aux_2_Mode_4_ToggleCooling] +IOMapping=ButtonAuxUpperCenter7 +Type=EventMapping +Subsystem=SRM4 +MessageID=ToggleCooling +Mode=ModeMFD2Eng4 + + +//----------------------------------------------------------------------- +// Aux 3 mappings +//----------------------------------------------------------------------- +//------------------------------------------ +// Aux 3 'Quad screen' mappings +//------------------------------------------ +[MFD3_to_Mode_1] +IOMapping=ButtonAuxLowerRight1 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Eng1 +Mode=ModeMFD3Quad + +[MFD3_Configure_Trigger_1] +IOMapping=ButtonAuxLowerRight2 +Type=EventMapping +Subsystem=ERSLaser_2 +MessageID=ConfigureMappables +Mode=ModeMFD3Quad + +[MFD3_to_Mode_2] +IOMapping=ButtonAuxLowerRight3 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Eng2 +Mode=ModeMFD3Quad + +[MFD3_Configure_Trigger_2] +IOMapping=ButtonAuxLowerRight4 +Type=EventMapping +Subsystem=AFC50_2 +MessageID=ConfigureMappables +Mode=ModeMFD3Quad + +[MFD3_to_Mode_4] +IOMapping=ButtonAuxLowerRight7 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Eng4 +Mode=ModeMFD3Quad + +[MFD3_Configure_Trigger_4] +IOMapping=ButtonAuxLowerRight8 +Type=EventMapping +Subsystem=ERMLaser_2 +MessageID=ConfigureMappables +Mode=ModeMFD3Quad + +//-------------------------------------------- +// Aux 3 'Mode 1' mappings, AuxScreenNumber=9 +//-------------------------------------------- +[Aux_3_Mode_1_to_MFD3] +IOMapping=ButtonAuxLowerRight8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Quad +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_Select_GeneratorA] +IOMapping=ButtonAuxLowerRight1 +Type=EventMapping +Subsystem=ERSLaser_2 +MessageID=SelectGeneratorA +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_Select_GeneratorB] +IOMapping=ButtonAuxLowerRight2 +Type=EventMapping +Subsystem=ERSLaser_2 +MessageID=SelectGeneratorB +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_Select_GeneratorC] +IOMapping=ButtonAuxLowerRight3 +Type=EventMapping +Subsystem=ERSLaser_2 +MessageID=SelectGeneratorC +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_Select_GeneratorD] +IOMapping=ButtonAuxLowerRight4 +Type=EventMapping +Subsystem=ERSLaser_2 +MessageID=SelectGeneratorD +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_OPTION] +IOMapping=ButtonAuxLowerRight5 +Type=EventMapping +Subsystem=ERSLaser_2 +MessageID=ToggleSeekVoltage +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerRight6 +Type=EventMapping +Subsystem=ERSLaser_2 +MessageID=ToggleGeneratorMode +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_ToggleCooling] +IOMapping=ButtonAuxLowerRight7 +Type=EventMapping +Subsystem=ERSLaser_2 +MessageID=ToggleCooling +Mode=ModeMFD3Eng1 + +//-------------------------------------------- +// Aux 3 'Mode 2' mappings, AuxScreenNumber=10 +//-------------------------------------------- +[Aux_3_Mode_2_to_MFD3] +IOMapping=ButtonAuxLowerRight8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Quad +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_Select_GeneratorA] +IOMapping=ButtonAuxLowerRight1 +Type=EventMapping +Subsystem=AFC50_2 +MessageID=SelectGeneratorA +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_Select_GeneratorB] +IOMapping=ButtonAuxLowerRight2 +Type=EventMapping +Subsystem=AFC50_2 +MessageID=SelectGeneratorB +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_Select_GeneratorC] +IOMapping=ButtonAuxLowerRight3 +Type=EventMapping +Subsystem=AFC50_2 +MessageID=SelectGeneratorC +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_Select_GeneratorD] +IOMapping=ButtonAuxLowerRight4 +Type=EventMapping +Subsystem=AFC50_2 +MessageID=SelectGeneratorD +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_OPTION] +IOMapping=ButtonAuxLowerRight5 +Type=EventMapping +Subsystem=AFC50_2 +MessageID=EjectAmmo +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerRight6 +Type=EventMapping +Subsystem=AFC50_2 +MessageID=ToggleGeneratorMode +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_ToggleCooling] +IOMapping=ButtonAuxLowerRight7 +Type=EventMapping +Subsystem=AFC50_2 +MessageID=ToggleCooling +Mode=ModeMFD3Eng2 + +//-------------------------------------------- +// Aux 3 'Mode 3' mappings, AuxScreenNumber=11 +//-------------------------------------------- +[Aux_3_Mode_4_to_MFD3] +IOMapping=ButtonAuxLowerRight8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Quad +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_Select_GeneratorA] +IOMapping=ButtonAuxLowerRight1 +Type=EventMapping +Subsystem=ERMLaser_2 +MessageID=SelectGeneratorA +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_Select_GeneratorB] +IOMapping=ButtonAuxLowerRight2 +Type=EventMapping +Subsystem=ERMLaser_2 +MessageID=SelectGeneratorB +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_Select_GeneratorC] +IOMapping=ButtonAuxLowerRight3 +Type=EventMapping +Subsystem=ERMLaser_2 +MessageID=SelectGeneratorC +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_Select_GeneratorD] +IOMapping=ButtonAuxLowerRight4 +Type=EventMapping +Subsystem=ERMLaser_2 +MessageID=SelectGeneratorD +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_OPTION] +IOMapping=ButtonAuxLowerRight5 +Type=EventMapping +Subsystem=ERMLaser_2 +MessageID=ToggleSeekVoltage +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerRight6 +Type=EventMapping +Subsystem=ERMLaser_2 +MessageID=ToggleGeneratorMode +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_ToggleCooling] +IOMapping=ButtonAuxLowerRight7 +Type=EventMapping +Subsystem=ERMLaser_2 +MessageID=ToggleCooling +Mode=ModeMFD3Eng4 +[AFC50_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=AFC50_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[AFC50_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=AFC50_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[SRM4_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=SRM4 +AttributeID=TriggerState +Mode=ModeNonMapping diff --git a/CONTENT/BT/MODELS/LOKTHR.CTL b/CONTENT/BT/MODELS/LOKTHR.CTL new file mode 100644 index 0000000..77d9f99 --- /dev/null +++ b/CONTENT/BT/MODELS/LOKTHR.CTL @@ -0,0 +1,63 @@ +[StickPosition_JP] +IOMapping=JoystickPhysical +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=StickPosition +Mode=ModeAlwaysActive + +[TorsoLeft_BJHL] +IOMapping=ButtonJoystickHatLeft +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoLeft +Mode=ModeAlwaysActive + +[TorsoRight_BJHR] +IOMapping=ButtonJoystickHatRight +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoRight +Mode=ModeAlwaysActive + +[AFC50_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=AFC50_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[AFC50_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=AFC50_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[SRM4_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=SRM4 +AttributeID=TriggerState +Mode=ModeNonMapping diff --git a/CONTENT/BT/MODELS/LRM.MOD b/CONTENT/BT/MODELS/LRM.MOD new file mode 100644 index 0000000..1a0cd96 --- /dev/null +++ b/CONTENT/BT/MODELS/LRM.MOD @@ -0,0 +1,24 @@ +[video] +object=tms_c.bgf + +[audio] +external=msltvl.scp + +[gauge] +image=rivet_ga.gim + +[gamedata] +class=MissileClassID +MoverMass=20.0 +MomentOfInertia=0.01 0.01 0.001 +PositiveLinearDragCoefficients=0.001 0.001 .001 +NegativeLinearDragCoefficients=0.001 0.001 .001 +AngularDragCoefficients=0.01 0.01 0.001 +FrictionCoefficient=0.1 +ElasticityCoefficient=0.0 +MinimumBounceSpeed=0.0 +MaxThrusterRotationRate=60.0 +BurnTime=10.0 +ThrusterAcceleration=300.0 +ThrusterClimb=50.0 +SplashRadius=30.0 diff --git a/CONTENT/BT/MODELS/LRM10.SUB b/CONTENT/BT/MODELS/LRM10.SUB new file mode 100644 index 0000000..702ef52 --- /dev/null +++ b/CONTENT/BT/MODELS/LRM10.SUB @@ -0,0 +1,33 @@ +[MissileLauncher] +Type=MissileLauncherClassID +StartingTemperature=77.0 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +ThermalConductance=5.33e5 +ThermalMass=7.10e4 +WeaponDamagePoints=3.0 +HeatSink=None +AmmoBin=None +VoltageSource=None +MuzzleVelocity=0.0 5.0 30.0 +TracerInterval=1 +ExplosionModelFile=mslhit +RechargeRate=4.0 +DamageAmount=35.0 +DamageType=ExplosiveDamage +WeaponRange=6000 +HeatCostToFire=4.5e7 +VitalSubsystem=False +MissileCount=10 +ThermalResistivityCoefficient=0.00024 +AuxScreenNumber=0 +AuxScreenLabel=qlrm10.pcc +EngScreenLabel=elrm10.pcc +MinTimeOfFlight=0.5 +MinVoltagePercentToFire=0.30 +MinJamChance=0.05 +PipPosition=1 +PipColor=0.0 1.0 0.0 +PipExtendedRange=True +StartTime=1.0 +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT/MODELS/LRM15.SUB b/CONTENT/BT/MODELS/LRM15.SUB new file mode 100644 index 0000000..05534f5 --- /dev/null +++ b/CONTENT/BT/MODELS/LRM15.SUB @@ -0,0 +1,33 @@ +[MissileLauncher] +Type=MissileLauncherClassID +StartingTemperature=77 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +ThermalConductance=5.13e5 +ThermalMass=1.03e5 +WeaponDamagePoints=3.0 +HeatSink=None +AmmoBin=None +VoltageSource=None +MuzzleVelocity=0.0 0.0 30.0 +TracerInterval=1 +ExplosionModelFile=mslhit +RechargeRate=6.0 +DamageAmount=50.0 +DamageType=ExplosiveDamage +WeaponRange=6000 +HeatCostToFire=6.5e7 +VitalSubsystem=False +MissileCount=15 +ThermalResistivityCoefficient=0.00024 +AuxScreenNumber=0 +AuxScreenLabel=qlrm15.pcc +EngScreenLabel=elrm15.pcc +MinTimeOfFlight=0.5 +MinVoltagePercentToFire=0.30 +MinJamChance=0.05 +PipPosition=1 +PipColor=0.0 1.0 0.0 +PipExtendedRange=True +StartTime=1.0 +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT/MODELS/LRM20.SUB b/CONTENT/BT/MODELS/LRM20.SUB new file mode 100644 index 0000000..439479b --- /dev/null +++ b/CONTENT/BT/MODELS/LRM20.SUB @@ -0,0 +1,33 @@ +[MissileLauncher] +Type=MissileLauncherClassID +StartingTemperature=77.0 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +ThermalConductance=5.0e5 +ThermalMass=1.5e5 +WeaponDamagePoints=3.0 +HeatSink=None +AmmoBin=None +VoltageSource=None +MuzzleVelocity=0.0 5.0 30.0 +TracerInterval=1 +ExplosionModelFile=mslhit +RechargeRate=9.0 +DamageAmount=65.0 +DamageType=ExplosiveDamage +WeaponRange=6000 +HeatCostToFire=9.5e7 +MissileCount=20 +VitalSubsystem=False +ThermalResistivityCoefficient=0.00024 +MinTimeOfFlight=0.5 +MinVoltagePercentToFire=0.30 +MinJamChance=0.05 +AuxScreenNumber=0 +AuxScreenLabel=qlrm20.pcc +EngScreenLabel=elrm20.pcc +PipPosition=0 +PipColor=0.0 1.0 0.0 +PipExtendedRange=True +StartTime=1.0 +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT/MODELS/LRM5.SUB b/CONTENT/BT/MODELS/LRM5.SUB new file mode 100644 index 0000000..62021f5 --- /dev/null +++ b/CONTENT/BT/MODELS/LRM5.SUB @@ -0,0 +1,33 @@ +[MissileLauncher] +Type=MissileLauncherClassID +StartingTemperature=77.0 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +ThermalConductance=3.94e5 +ThermalMass=2.37e4 +WeaponDamagePoints=3.0 +HeatSink=None +AmmoBin=None +VoltageSource=None +MuzzleVelocity=0.0 0.0 30.0 +TracerInterval=1 +ExplosionModelFile=mslhit +RechargeRate=2.5 +DamageAmount=20.0 +DamageType=ExplosiveDamage +WeaponRange=6000 +HeatCostToFire=1.5e7 +VitalSubsystem=False +ThermalResistivityCoefficient=0.00024 +MissileCount=5 +AuxScreenNumber=0 +AuxScreenLabel=qlrm5.pcc +EngScreenLabel=elrm5.pcc +MinTimeOfFlight=0.5 +MinVoltagePercentToFire=0.30 +MinJamChance=0.05 +PipPosition=1 +PipColor=0.0 1.0 0.0 +PipExtendedRange=True +StartTime=1.0 +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT/MODELS/LRMCARRY.MOD b/CONTENT/BT/MODELS/LRMCARRY.MOD new file mode 100644 index 0000000..36716a1 --- /dev/null +++ b/CONTENT/BT/MODELS/LRMCARRY.MOD @@ -0,0 +1,18 @@ +[video] +object=LRMCARRY.bgf lrms.bgf +rubble=LRMD.bgf + +[collision] +name=LRMCARRY.sld + +[gauge] +image=lrmcarry.gim + +[gamedata] +class=CulturalIconClassID +DamageZones=trk.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=trkdead +TimeDelay=0.5 +CrunchExplosionModelFile=stephit + \ No newline at end of file diff --git a/CONTENT/BT/MODELS/LRMLANCH.SUB b/CONTENT/BT/MODELS/LRMLANCH.SUB new file mode 100644 index 0000000..ded85ae --- /dev/null +++ b/CONTENT/BT/MODELS/LRMLANCH.SUB @@ -0,0 +1,28 @@ +[MissileLauncher] +Type=MissileLauncherClassID +ArmorValue=20.0 +StartingTemperature=300.0 +DegradationTemperature=400.0 +FailureTemperature=500.0 +ThermalConductance=1.0 +ThermalMass=1.0 +WeaponDamagePoints=3.0 +StandardResistance=1.0 +HeatSink=None +AmmoBin=None +VoltageSource=None +MuzzleVelocity=0.0 5.0 30.0 +TracerInterval=1 +ExplosionModelFile=explode +RechargeRate=0.25 +DamageAmount=10.0 +DamageType=ExplosiveDamage +WeaponDamagePoints=10.0 +WeaponRange=6000 +HeatCostToFire=1.0 +ThermalResistivityCoefficient=0.0004 +MinTimeOfFlight=0.5 +MinVoltagePercentToFire=0.30 +PipPosition=1 +StartTime=1.0 +VitalSubsystem=False \ No newline at end of file diff --git a/CONTENT/BT/MODELS/LZRHIT.MOD b/CONTENT/BT/MODELS/LZRHIT.MOD new file mode 100644 index 0000000..32b5934 --- /dev/null +++ b/CONTENT/BT/MODELS/LZRHIT.MOD @@ -0,0 +1,11 @@ +[video] +object=9 + +[audio] +external=lsrexp.scp + +[gamedata] +class=ExplosionClassID +ExplosionResourceTable=LaserExplosionResourceTable +// WARNING Audio Effects require ExplosionDuration >= 4.0 secs +ExplosionDuration=4.0 diff --git a/CONTENT/BT/MODELS/LZRHITI.MOD b/CONTENT/BT/MODELS/LZRHITI.MOD new file mode 100644 index 0000000..790ee32 --- /dev/null +++ b/CONTENT/BT/MODELS/LZRHITI.MOD @@ -0,0 +1,10 @@ +[video] +object=9 + +[audio] +external=lsrexpi.scp + +[gamedata] +class=ExplosionClassID +// WARNING Audio Effects require ExplosionDuration >= 4.0 secs +ExplosionDuration=4.0 diff --git a/CONTENT/BT/MODELS/MACHGUN.SUB b/CONTENT/BT/MODELS/MACHGUN.SUB new file mode 100644 index 0000000..c3b5370 --- /dev/null +++ b/CONTENT/BT/MODELS/MACHGUN.SUB @@ -0,0 +1,33 @@ +[ProjectileWeapon] +Type=ProjectileWeaponClassID +ArmorValue=20.0 +StartingTemperature=77.0 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +ThermalConductance=1.0e4 +ThermalMass=1.19e4 +StandardResistance=1.0 +HeatSink=None +AmmoBin=None +VoltageSource=None +ExplosionModelFile=canhit +RechargeRate=0.2 +DamageAmount=1.0 +DamageType=BallisticDamage +WeaponDamagePoints=2.0 +WeaponRange=150 +HeatCostToFire=1000 +VitalSubsystem=False +TracerInterval=1 +ThermalResistivityCoefficient=0.0024 +AuxScreenNumber=0 +AuxScreenLabel=qmg.pcc +EngScreenLabel=emg.pcc +MinTimeOfFlight=0.5 +MinVoltagePercentToFire=0.30 +MinJamChance=0.1 +PipPosition=1 +PipColor=0.5 0.5 0.5 +PipExtendedRange=False +StartTime=1.0 +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT/MODELS/MAD.DMG b/CONTENT/BT/MODELS/MAD.DMG new file mode 100644 index 0000000..d705fbf --- /dev/null +++ b/CONTENT/BT/MODELS/MAD.DMG @@ -0,0 +1,114 @@ +// Holds Damage Zone Information-- +[dz_btorso] +WeaponDamagePoints=50 +CriticalSubsystem=Power 5 +VitalDamageZone=True + +[dz_dtorso] +WeaponDamagePoints=50 +CriticalSubsystem=Power 5 +VitalDamageZone=True + +[dz_ftorso] +WeaponDamagePoints=50 +CriticalSubsystem=Power 5 +CriticalSubsystem=AmmoBin 10 +VitalDamageZone=True + +[dz_ltorso] +WeaponDamagePoints=50 +CriticalSubsystem=Power 5 +VitalDamageZone=True + +[dz_reardtorso] +WeaponDamagePoints=50 +CriticalSubsystem=Power 5 +VitalDamageZone=True + +[dz_rearltorso] +WeaponDamagePoints=50 +CriticalSubsystem=Power 5 +VitalDamageZone=True + +[dz_rearrtorso] +WeaponDamagePoints=50 +CriticalSubsystem=Power 5 +VitalDamageZone=True + +[dz_rearutorso] +WeaponDamagePoints=50 +CriticalSubsystem=Power 5 +VitalDamageZone=True + +[dz_rtorso] +WeaponDamagePoints=50 +CriticalSubsystem=Power 5 +VitalDamageZone=True + +[dz_searchlight] +WeaponDamagePoints=50 +VitalDamageZone=False + +[dz_utorso] +WeaponDamagePoints=50 +CriticalSubsystem=Power 5 +VitalDamageZone=True + +[dz_rarm] +WeaponDamagePoints=50 +CriticalSubsystem=AmmoBin 10 +VitalDamageZone=False + +[dz_rgun] +WeaponDamagePoints=50 +CriticalSubsystem=AmmoBin 5 +VitalDamageZone=False + +[dz_larm] +WeaponDamagePoints=50 +CriticalSubsystem=PowerBar 10 +VitalDamageZone=False + +[dz_lgun] +WeaponDamagePoints=50 +CriticalSubsystem=PowerBar 5 +VitalDamageZone=False + +[dz_missle] +WeaponDamagePoints=50 +VitalDamageZone=False + +[dz_luleg] +WeaponDamagePoints=50 +CriticalSubsystem=Power 5 +VitalDamageZone=False + +[dz_ldleg] +WeaponDamagePoints=50 +CriticalSubsystem=Power 5 +VitalDamageZone=False + +[dz_lfoot] +WeaponDamagePoints=50 +CriticalSubsystem=Power 5 +VitalDamageZone=False + +[dz_ruleg] +WeaponDamagePoints=50 +CriticalSubsystem=Power 5 +VitalDamageZone=False + +[dz_rdleg] +WeaponDamagePoints=50 +CriticalSubsystem=Power 5 +VitalDamageZone=False + +[dz_rfoot] +WeaponDamagePoints=50 +CriticalSubsystem=Power 5 +VitalDamageZone=False + +[dz_hip] +WeaponDamagePoints=50 +CriticalSubsystem=Power 5 +VitalDamageZone=True diff --git a/CONTENT/BT/MODELS/MAD1.DMG b/CONTENT/BT/MODELS/MAD1.DMG new file mode 100644 index 0000000..265caba --- /dev/null +++ b/CONTENT/BT/MODELS/MAD1.DMG @@ -0,0 +1,195 @@ +// This file is intentionally empty and MUST be read-only! +[dz_dtorso] +ExplosionTable=mad1dmg.exp +DefaultEffectSiteName=siteedz_dtorso +WeaponDamagePoints=122 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Condenser5 2 0.500000 +CriticalSubsystem=GeneratorD 10 0.500000 +CriticalSubsystem=Avionics 5 0.200000 +CriticalSubsystem=Torso 15 0.333333 +CriticalSubsystem=MLaser3 15 1.000000 +CriticalSubsystem=MLaser4 15 1.000000 +[dz_hip] +ExplosionTable=mad1dmg.exp +DefaultEffectSiteName=siteedz_hip +WeaponDamagePoints=122 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Myomers 15 0.142857 +CriticalSubsystem=Gyroscope 15 0.333333 +CriticalSubsystem=Torso 15 0.333333 +[dz_larm] +ExplosionTable=mad1dmg.exp +DefaultEffectSiteName=siteedz_larm +WeaponDamagePoints=77 +VitalDamageZone=False +DescendOnDestruction=True +CriticalSubsystem=Condenser4 2 0.500000 +CriticalSubsystem=AmmoBinAFC25_1 10 0.500000 +[dz_ldleg] +ExplosionTable=mad1dmg.exp +DefaultEffectSiteName=siteedz_ldleg +WeaponDamagePoints=90 +VitalDamageZone=True +LegDamageZone=LeftLeg +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Myomers 15 0.142857 +[dz_ldoor] +ExplosionTable=mad1dmg.exp +DefaultEffectSiteName=siteedz_ldoor +WeaponDamagePoints=1 +VitalDamageZone=False +[dz_lfoot] +ExplosionTable=mad1dmg.exp +DefaultEffectSiteName=siteedz_lfoot +WeaponDamagePoints=81 +VitalDamageZone=True +LegDamageZone=LeftLeg +CriticalSubsystem=Myomers 15 0.142857 +[dz_lgun] +ExplosionTable=mad1dmg.exp +DefaultEffectSiteName=siteedz_lgun +WeaponDamagePoints=68 +VitalDamageZone=False +DescendOnDestruction=True +CriticalSubsystem=Condenser4 2 0.500000 +CriticalSubsystem=AmmoBinAFC25_1 10 0.500000 +CriticalSubsystem=AFC25_1 5 1.000000 +CriticalSubsystem=MLaser1 25 1.000000 +[dz_ltorso] +ExplosionTable=mad1dmg.exp +DefaultEffectSiteName=siteedz_ltorso +WeaponDamagePoints=117 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Condenser1 2 0.500000 +CriticalSubsystem=GeneratorA 10 0.500000 +CriticalSubsystem=Avionics 5 0.200000 +CriticalSubsystem=AmmoBinLRM10_1 15 1.000000 +CriticalSubsystem=LRM10_1 15 1.000000 +[dz_luleg] +ExplosionTable=mad1dmg.exp +DefaultEffectSiteName=siteedz_luleg +WeaponDamagePoints=90 +VitalDamageZone=True +LegDamageZone=LeftLeg +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Myomers 15 0.142857 +[dz_rarm] +ExplosionTable=mad1dmg.exp +DefaultEffectSiteName=siteedz_rarm +WeaponDamagePoints=77 +VitalDamageZone=False +DescendOnDestruction=True +CriticalSubsystem=Condenser6 2 0.500000 +CriticalSubsystem=AmmoBinAFC25_2 10 0.500000 +[dz_rdleg] +ExplosionTable=mad1dmg.exp +DefaultEffectSiteName=siteedz_rdleg +WeaponDamagePoints=90 +VitalDamageZone=True +LegDamageZone=RightLeg +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Myomers 15 0.142857 +[dz_rdoor] +ExplosionTable=mad1dmg.exp +DefaultEffectSiteName=siteedz_rdoor +WeaponDamagePoints=1 +VitalDamageZone=False +[dz_reardtorso] +ExplosionTable=mad1dmg.exp +DefaultEffectSiteName=siteedz_reardtorso +WeaponDamagePoints=81 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Reservoir 10 0.250000 +CriticalSubsystem=Condenser5 2 0.500000 +CriticalSubsystem=GeneratorD 10 0.500000 +CriticalSubsystem=Torso 15 0.333333 +[dz_rearltorso] +ExplosionTable=mad1dmg.exp +DefaultEffectSiteName=siteedz_rearltorso +WeaponDamagePoints=117 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Reservoir 10 0.250000 +CriticalSubsystem=Condenser1 2 0.500000 +CriticalSubsystem=GeneratorA 10 0.500000 +[dz_rearrtorso] +ExplosionTable=mad1dmg.exp +DefaultEffectSiteName=siteedz_rearrtorso +WeaponDamagePoints=117 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Reservoir 10 0.250000 +CriticalSubsystem=Condenser3 2 0.500000 +CriticalSubsystem=GeneratorC 10 0.500000 +[dz_rearutorso] +ExplosionTable=mad1dmg.exp +DefaultEffectSiteName=siteedz_rearutorso +WeaponDamagePoints=113 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Reservoir 10 0.250000 +CriticalSubsystem=Condenser2 2 0.500000 +CriticalSubsystem=GeneratorB 10 0.500000 +CriticalSubsystem=Gyroscope 30 0.333333 +[dz_rfoot] +ExplosionTable=mad1dmg.exp +DefaultEffectSiteName=siteedz_rfoot +WeaponDamagePoints=81 +VitalDamageZone=True +LegDamageZone=RightLeg +CriticalSubsystem=Myomers 15 0.142857 +[dz_rgun] +ExplosionTable=mad1dmg.exp +DefaultEffectSiteName=siteedz_rgun +WeaponDamagePoints=68 +VitalDamageZone=False +DescendOnDestruction=True +CriticalSubsystem=Condenser6 2 0.500000 +CriticalSubsystem=AmmoBinAFC25_2 10 0.500000 +CriticalSubsystem=AFC25_2 5 1.000000 +CriticalSubsystem=MLaser2 25 1.000000 +[dz_rtorso] +ExplosionTable=mad1dmg.exp +DefaultEffectSiteName=siteedz_rtorso +WeaponDamagePoints=117 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Condenser3 2 0.500000 +CriticalSubsystem=GeneratorC 10 0.500000 +CriticalSubsystem=Avionics 5 0.200000 +CriticalSubsystem=AmmoBinLRM10_2 15 1.000000 +CriticalSubsystem=LRM10_2 15 1.000000 +[dz_ruleg] +ExplosionTable=mad1dmg.exp +DefaultEffectSiteName=siteedz_ruleg +WeaponDamagePoints=90 +VitalDamageZone=True +LegDamageZone=RightLeg +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Myomers 15 0.142857 +[dz_searchlight] +ExplosionTable=mad1dmg.exp +DefaultEffectSiteName=siteedz_searchlight +WeaponDamagePoints=50 +VitalDamageZone=False +CriticalSubsystem=Avionics 5 0.200000 +CriticalSubsystem=HUD 15 0.500000 +CriticalSubsystem=Searchlight 45 1.000000 +[dz_utorso] +ExplosionTable=mad1dmg.exp +DefaultEffectSiteName=siteedz_utorso +WeaponDamagePoints=175 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Condenser2 2 0.500000 +CriticalSubsystem=GeneratorB 10 0.500000 +CriticalSubsystem=Avionics 5 0.200000 +CriticalSubsystem=Gyroscope 30 0.333333 +CriticalSubsystem=HUD 15 0.500000 +[dz_searchlght] +CriticalSubsystem=ThermalSight 30 1.000000 diff --git a/CONTENT/BT/MODELS/MAD1.MOD b/CONTENT/BT/MODELS/MAD1.MOD new file mode 100644 index 0000000..bcad4ff --- /dev/null +++ b/CONTENT/BT/MODELS/MAD1.MOD @@ -0,0 +1,131 @@ +[video] +skeleton=mad1.skl +skeletona=max1.skl +destroyed=mad1d.skl +//destroyeda=max1d.skl +dzm=mad1skin.dzm +dzma=max1skin.dzm + +[audio] +internal=mad1int.scp +external=mad1ext.scp + +[collision] +name=mad_cv.sld + +[gauge] +image=thor_ga.gim + +[gaugeMissionReview] +pixelmap=mad1_mr.pcc + +[gamedata] +class=MechClassID +MoverMass=75000.0 +MomentOfInertia=1.75 3.125 1.75 +PositiveLinearDragCoefficients=0.14 0.4 0.07 +NegativeLinearDragCoefficients=0.14 0.2 0.08 +AngularDragCoefficients=0.3 0.5 0.3 +FrictionCoefficient=0.1 +ElasticityCoefficient=0.2 +MinimumBounceSpeed=0.2 +MaxAcceleration=20 +AnimationPrefix=mad +Subsystems=mad1.sub +DamageZones=mad1.dmg +DamageLookupTable=mad1dmg.tbl +RelativeMechValue=1.0 +LookLeftAngle=50 +LookRightAngle=-50 +LookBackAngle=0 +LookFrontAngle=-15 +RunningTurnRate=40 +WalkingTurnRate=65 +DeathEffect=maddead +CameraOffset=0.0 15.0 30.0 +DeathSplashDamage=5 +DeathSplashRadius=50 +TimeDelay=0.3 + +MaxUnstableAcceleration=44.0 +UnstableAccelerationEffect=0.7 +UnstableGunTheEngineEffect=1.0 +UnstableSuperStopEffect=0.5 +UnstableHighVelocityEffect=0.4 +UnstableStopedTurnEffect=1.0 +SuperStopAcceleration=20.0 + +ThrottleAdjustment=0.8 + +UpdateTurnDegreeDiffrence=3 +UpdateTurnVelocityDiffrence=0.045 +UpdatePositionDiffrence=0.3 + +ShadowJointName=jointshadow + + +[ControlMappings] +Thrustmaster=mad1thr.ctl +L4=mad1l4.ctl + +[animations] +animationtransition=madswr.ani +animation=madwwl.ani +animation=madwwr.ani +animation=madwsr.ani +animation=madwsl.ani +animationtransition=madwrl.ani +animationtransition=madwrr.ani +animation=madrrl.ani +animation=madrrr.ani +animation=madrwl.ani +animation=madrwr.ani +animation=madbmp.ani +animation=madbbl.ani +animation=madbbr.ani +animation=madbsl.ani +animation=madbsr.ani +animationtransition=madsbl.ani +animationtransition=madsbr.ani + +animationtransition=madswri.ani +animation=madwwli.ani +animation=madwwri.ani +animation=madwsri.ani +animation=madwsli.ani +animationtransition=madwrli.ani +animationtransition=madwrri.ani +animation=madrrli.ani +animation=madrrri.ani +animation=madrwli.ani +animation=madrwri.ani +animation=madbmpi.ani +animation=madbbli.ani +animation=madbbri.ani +animation=madbsli.ani +animation=madbsri.ani +animationtransition=madsbli.ani +animationtransition=madsbri.ani + +animation=madggl.ani +animation=madggr.ani +animation=madgsl.ani +animation=madgsr.ani +animationtransition=madwgl.ani +animationtransition=madwgr.ani + +animation=madggli.ani +animation=madggri.ani +animation=madgsli.ani +animation=madgsri.ani +animationtransition=madwgli.ani +animationtransition=madwgri.ani + +animation=madsqu.ani +animation=madsqd.ani +animation=madsqui.ani +animation=madsqdi.ani + +animation=madtrn.ani +animation=madtrni.ani + diff --git a/CONTENT/BT/MODELS/MAD1.SUB b/CONTENT/BT/MODELS/MAD1.SUB new file mode 100644 index 0000000..d99452d --- /dev/null +++ b/CONTENT/BT/MODELS/MAD1.SUB @@ -0,0 +1,227 @@ +[HeatSink] +Type=HeatSinkClassID +Include=heatsnk.sub +HeatSinkCount=13 +SubsystemFlags=DontReplicateFlag + +[Reservoir] +Type=ReservoirClassID +Include=reserve.sub +HeatSink=HeatSink +SegmentPageName=siteeyepoint + +[Condenser1] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser2] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser3] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser4] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser5] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser6] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[GeneratorA] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser1 +SubsystemFlags=DontReplicateFlag + +[GeneratorB] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser2 +SubsystemFlags=DontReplicateFlag + +[GeneratorC] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser3 +SubsystemFlags=DontReplicateFlag + +[GeneratorD] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser5 +SubsystemFlags=DontReplicateFlag + +[Avionics] +Type=SensorClassID +Include=sensor.sub +HeatSink=Condenser2 +VoltageSource=GeneratorD +AuxScreenNumber=5 +SubsystemFlags=DontReplicateFlag + +AuxScreenPlacement=2 +[Myomers] +Type=MyomersClassID +Include=myomers.sub +HeatSink=Condenser5 +VoltageSource=GeneratorD +AuxScreenNumber=6 +SubsystemFlags=DontReplicateFlag + +AuxScreenPlacement=0 +[Gyroscope] +Type=GyroscopeClassID +Include=gyro.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag + +[Torso] +Type=TorsoClassID +Include=torso.sub +WatchedSubsystem=Myomers + +HorizontalRotationPerSecond=50 +VerticalRotationPerSecond=30 +HorizontalLimitRight=-140 +HorizontalLimitLeft=140 +[HUD] +Type=HUDClassID +Include=hud.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag + +[Searchlight] +Type=SearchlightClassID +Include=srchlite.sub +WatchedSubsystem=Avionics +SegmentPageName=sitelight + +[ThermalSight] +Type=ThermalSightClassID +Include=Thermal.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag +[AmmoBinAFC25_1] +Type=AmmoBinClassID +Include=ammafc25.sub +WatchedSubsystem=AFC25_1 +AmmoCount=25 +[AFC25_1] +AmmoBin=AmmoBinAFC25_1 +Type=ProjectileWeaponClassID +Include=afc25.sub +SegmentPageName=sitelgunport +PipPosition=1 +VoltageSource=GeneratorA +HeatSink=Condenser4 +AuxScreenNumber=1 +AuxScreenPlacement=4 +[AmmoBinAFC25_2] +Type=AmmoBinClassID +Include=ammafc25.sub +WatchedSubsystem=AFC25_2 +AmmoCount=25 +[AFC25_2] +AmmoBin=AmmoBinAFC25_2 +Type=ProjectileWeaponClassID +Include=afc25.sub +SegmentPageName=sitergunport +PipPosition=2 +VoltageSource=GeneratorC +HeatSink=Condenser6 +AuxScreenNumber=10 +AuxScreenPlacement=6 +[MLaser1] +Type=EmitterClassID +Include=mlaser.sub +SegmentPageName=sitelgunport +PipPosition=1 +VoltageSource=GeneratorA +HeatSink=Condenser4 +AuxScreenNumber=3 +AuxScreenPlacement=4 +[MLaser2] +Type=EmitterClassID +Include=mlaser.sub +SegmentPageName=sitergunport +PipPosition=2 +VoltageSource=GeneratorC +HeatSink=Condenser6 +AuxScreenNumber=12 +AuxScreenPlacement=6 +[MLaser3] +Type=EmitterClassID +Include=mlaser.sub +SegmentPageName=siteldtorsoport +PipPosition=3 +VoltageSource=GeneratorD +HeatSink=Condenser5 +AuxScreenNumber=7 +AuxScreenPlacement=5 +[MLaser4] +Type=EmitterClassID +Include=mlaser.sub +SegmentPageName=siterdtorsoport +PipPosition=4 +VoltageSource=GeneratorD +HeatSink=Condenser5 +AuxScreenNumber=8 +AuxScreenPlacement=5 +[AmmoBinLRM10_1] +Type=AmmoBinClassID +Include=ammnrk10.sub +WatchedSubsystem=LRM10_1 +AmmoCount=12 +[LRM10_1] +AmmoBin=AmmoBinLRM10_1 +Type=MissileLauncherClassID +Include=nrk10.sub +SegmentPageName=sitelmissleport +PipPosition=1 +VoltageSource=GeneratorB +HeatSink=Condenser1 +AuxScreenNumber=2 +AuxScreenPlacement=1 +[AmmoBinLRM10_2] +Type=AmmoBinClassID +Include=ammnrk10.sub +WatchedSubsystem=LRM10_2 +AmmoCount=12 +[LRM10_2] +AmmoBin=AmmoBinLRM10_2 +Type=MissileLauncherClassID +Include=nrk10.sub +SegmentPageName=sitermissleport +PipPosition=2 +VoltageSource=GeneratorB +HeatSink=Condenser3 +AuxScreenNumber=9 +AuxScreenPlacement=3 +[MessageManager] +Type=SubsystemMessageManagerClassID +ExplosionModelFile=majhit 1.0 +TerrainHitExplosion=gndhit +RendererCompensateTime=0.3 +[MechTech] +Type=MechTechClassID +AlarmModel=mechalrm +SubsystemFlags=DontReplicateFlag diff --git a/CONTENT/BT/MODELS/MAD1DMG.EXP b/CONTENT/BT/MODELS/MAD1DMG.EXP new file mode 100644 index 0000000..c9b1598 --- /dev/null +++ b/CONTENT/BT/MODELS/MAD1DMG.EXP @@ -0,0 +1,28 @@ +[OneDamage] +ExplosionModelFile=dam1hit +DamageLevel=0.2 +TimeDelay=0.0 + +[TwoDamage] +ExplosionModelFile=dam2hit +DamageLevel=0.4 +TimeDelay=0.0 + +[ThreeDamage] +ExplosionModelFile=dam3hit +DamageLevel=0.6 +TimeDelay=0.0 + +[FourDamage] +ExplosionModelFile=dam4hit +DamageLevel=0.8 +TimeDelay=0.0 + +[DestroyedExplosion] +ExplosionModelFile=desthit +GraphicState=Destroyed + +[GoneExplosion] +ExplosionModelFile=desthit +GraphicState=Gone + diff --git a/CONTENT/BT/MODELS/MAD1DMG.TBL b/CONTENT/BT/MODELS/MAD1DMG.TBL new file mode 100644 index 0000000..2a9b9fc --- /dev/null +++ b/CONTENT/BT/MODELS/MAD1DMG.TBL @@ -0,0 +1,200 @@ +[LeftFoot] +DamageZone=dz_lfoot 0.5 +DamageZone=dz_ldleg 0.3 +DamageZone=dz_rfoot 0.2 + +[RightFoot] +DamageZone=dz_rfoot 0.5 +DamageZone=dz_rdleg 0.3 +DamageZone=dz_lfoot 0.2 + +[LeftLeg] +DamageZone=dz_luleg 0.4 +DamageZone=dz_ldleg 0.4 +DamageZone=dz_ruleg 0.1 +DamageZone=dz_rdleg 0.1 + +[RightLeg] +DamageZone=dz_ruleg 0.4 +DamageZone=dz_rdleg 0.4 +DamageZone=dz_luleg 0.1 +DamageZone=dz_ldleg 0.1 + +[LeftHip] +DamageZone=dz_luleg 0.5 +DamageZone=dz_hip 0.3 +DamageZone=dz_dtorso 0.1 +DamageZone=dz_lgun 0.1 + +[FrontHip] +DamageZone=dz_luleg 0.25 +DamageZone=dz_ruleg 0.25 +DamageZone=dz_hip 0.3 +DamageZone=dz_dtorso 0.2 + +[RearHip] +DamageZone=dz_luleg 0.25 +DamageZone=dz_ruleg 0.25 +DamageZone=dz_hip 0.3 +DamageZone=dz_reardtorso 0.2 + +[RightHip] +DamageZone=dz_ruleg 0.5 +DamageZone=dz_hip 0.3 +DamageZone=dz_dtorso 0.1 +DamageZone=dz_rgun 0.1 + +[LeftWaist] +DamageZone=dz_rearutorso 0.05 +DamageZone=dz_utorso 0.1 +DamageZone=dz_lgun 0.3 +DamageZone=dz_dtorso 0.2 +DamageZone=dz_reardtorso 0.05 +DamageZone=dz_larm 0.3 + +[FrontWaist] +DamageZone=dz_rgun 0.1 +DamageZone=dz_lgun 0.1 +DamageZone=dz_dtorso 0.4 +DamageZone=dz_utorso 0.1 +DamageZone=dz_searchlight 0.2 +DamageZone=dz_hip 0.1 + +[RearWaist] +DamageZone=dz_rarm 0.1 +DamageZone=dz_larm 0.1 +DamageZone=dz_reardtorso 0.45 +DamageZone=dz_rearutorso 0.25 +DamageZone=dz_hip 0.1 + +[RightWaist] +DamageZone=dz_rearutorso 0.05 +DamageZone=dz_utorso 0.1 +DamageZone=dz_rgun 0.3 +DamageZone=dz_dtorso 0.2 +DamageZone=dz_reardtorso 0.05 +DamageZone=dz_rarm 0.3 + +[LeftChest] +DamageZone=dz_larm 0.3 +DamageZone=dz_lgun 0.1 +DamageZone=dz_ltorso 0.1 +DamageZone=dz_rearltorso 0.1 +DamageZone=dz_utorso 0.2 +DamageZone=dz_rearutorso 0.1 +DamageZone=dz_dtorso 0.1 + +[RightChest] +DamageZone=dz_rarm 0.3 +DamageZone=dz_rgun 0.1 +DamageZone=dz_rtorso 0.1 +DamageZone=dz_rearrtorso 0.1 +DamageZone=dz_utorso 0.2 +DamageZone=dz_rearutorso 0.1 +DamageZone=dz_dtorso 0.1 + +[FrontChest] +DamageZone=dz_larm 0.1 +DamageZone=dz_rarm 0.1 +DamageZone=dz_ltorso 0.1 +DamageZone=dz_rtorso 0.1 +DamageZone=dz_utorso 0.5 +DamageZone=dz_dtorso 0.1 + +[RearChest] +DamageZone=dz_larm 0.1 +DamageZone=dz_rarm 0.1 +DamageZone=dz_rearltorso 0.1 +DamageZone=dz_rearrtorso 0.1 +DamageZone=dz_rearutorso 0.4 +DamageZone=dz_reardtorso 0.2 + +[TopLeft] +DamageZone=dz_utorso 0.2 +DamageZone=dz_ltorso 0.3 +DamageZone=dz_rearltorso 0.3 +DamageZone=dz_rearutorso 0.2 + +[TopRight] +DamageZone=dz_utorso 0.2 +DamageZone=dz_rtorso 0.3 +DamageZone=dz_rearrtorso 0.3 +DamageZone=dz_rearutorso 0.2 + +// The data in this table should be correct. Arioch 12-5-96 +[Layer1] +PieSlice=RightFoot +PieSlice=RightFoot +PieSlice=LeftFoot +PieSlice=LeftFoot +PieSlice=LeftFoot +PieSlice=LeftFoot +PieSlice=RightFoot +PieSlice=RightFoot +RotateWithTorso=False + +[Layer2] +PieSlice=RightLeg +PieSlice=RightLeg +PieSlice=LeftLeg +PieSlice=LeftLeg +PieSlice=LeftLeg +PieSlice=LeftLeg +PieSlice=RightLeg +PieSlice=RightLeg +RotateWithTorso=False + +[Layer3] +PieSlice=RightLeg +PieSlice=FrontHip +PieSlice=FrontHip +PieSlice=LeftLeg +PieSlice=LeftLeg +PieSlice=RearHip +PieSlice=RearHip +PieSlice=RightLeg +RotateWithTorso=False + +[Layer4] +PieSlice=RightHip +PieSlice=FrontHip +PieSlice=FrontHip +PieSlice=LeftHip +PieSlice=LeftHip +PieSlice=RearHip +PieSlice=RearHip +PieSlice=RightHip +RotateWithTorso=True + +[Layer5] +PieSlice=RightWaist +PieSlice=FrontWaist +PieSlice=FrontWaist +PieSlice=LeftWaist +PieSlice=LeftWaist +PieSlice=RearWaist +PieSlice=RearWaist +PieSlice=RightWaist +RotateWithTorso=True + +[Layer6] +PieSlice=RightChest +PieSlice=FrontChest +PieSlice=FrontChest +PieSlice=LeftChest +PieSlice=LeftChest +PieSlice=RearChest +PieSlice=RearChest +PieSlice=RightChest +RotateWithTorso=True + +[Layer7] +PieSlice=TopRight +PieSlice=TopRight +PieSlice=TopLeft +PieSlice=TopLeft +PieSlice=TopLeft +PieSlice=TopLeft +PieSlice=TopRight +PieSlice=TopRight +RotateWithTorso=True diff --git a/CONTENT/BT/MODELS/MAD1L4.CTL b/CONTENT/BT/MODELS/MAD1L4.CTL new file mode 100644 index 0000000..e2c801a --- /dev/null +++ b/CONTENT/BT/MODELS/MAD1L4.CTL @@ -0,0 +1,974 @@ +[StickPosition_JP] +//----------------------------------------------------------------------- +// Joystick +//----------------------------------------------------------------------- +IOMapping=JoystickPhysical +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=StickPosition +Mode=ModeAlwaysActive + +[Throttle_ST] +//----------------------------------------------------------------------- +// Throttle +//----------------------------------------------------------------------- +IOMapping=ScalarThrottle +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=ThrottlePosition +Mode=ModeAlwaysActive + +//----------------------------------------------------------------------- +// Misc. switches +//----------------------------------------------------------------------- +[ReverseThrust_BT1] +IOMapping=ButtonThrottle1 +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=ReverseThrust +Mode=ModeAlwaysActive + +[TorsoCenter_BJHU] +IOMapping=ButtonJoystickHatUp +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoCenter +Mode=ModeAlwaysActive + +[LookLeft_BJHL] +IOMapping=ButtonJoystickHatLeft +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=LookLeft +Mode=ModeAlwaysActive + +[LookRight_BJHR] +IOMapping=ButtonJoystickHatRight +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=LookRight +Mode=ModeAlwaysActive + +[LookBack_BJHD] +IOMapping=ButtonJoystickHatDown +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=LookBehind +Mode=ModeAlwaysActive + +//----------------------------------------------------------------------- +// Secondary mappings +//----------------------------------------------------------------------- +[Button_Sec_1] // Zoom radar in (magnify image) +IOMapping=ButtonSecondary1 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=ZoomIn +Mode=ModeAlwaysActive + +[Button_Sec_2] // Zoom radar out (reduce image) +IOMapping=ButtonSecondary2 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=ZoomOut +Mode=ModeAlwaysActive + +// +// 'Heat vision' mapped to secondary +// SGM 1/6/97 + +[Button_Sec_3] // Toggle heat vision +IOMapping=ButtonSecondary3 +Type=EventMapping +Subsystem=ThermalSight +MessageID=ToggleLamp +Mode=ModeAlwaysActive + +// +// 'Duck' remapped to real message and location. +// GDU 7/9/96 + +[Button_Sec_4] // Request crouch position +IOMapping=ButtonSecondary4 +Type=EventMapping +MessageID=DuckRequest +Mode=ModeAlwaysActive + +[Button_Sec_5] // Toggle searchlight +IOMapping=ButtonSecondary5 +Type=EventMapping +Subsystem=Searchlight +MessageID=ToggleLamp +Mode=ModeAlwaysActive + +[Button_Sec_6] // Cycle through damage display modes +IOMapping=ButtonSecondary6 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=CycleDisplayMode +Mode=ModeAlwaysActive + +[Button_Sec_7] // Cycle through control modes +IOMapping=ButtonSecondary7 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=CycleControlMode +Mode=ModeAlwaysActive + +// ButtonSecondary8 presently unused + +[Button_Sec_9] // Toggle generator 'a' +IOMapping=ButtonSecondary9 +Type=EventMapping +Subsystem=GeneratorA +MessageID=ToggleGeneratorOnOff +Mode=ModeAlwaysActive + +[Button_Sec_10] // Toggle generator 'b' +IOMapping=ButtonSecondary10 +Type=EventMapping +Subsystem=GeneratorB +MessageID=ToggleGeneratorOnOff +Mode=ModeAlwaysActive + +[Button_Sec_11] // Toggle generator 'c' +IOMapping=ButtonSecondary11 +Type=EventMapping +Subsystem=GeneratorC +MessageID=ToggleGeneratorOnOff +Mode=ModeAlwaysActive + +[Button_Sec_12] // Toggle generator 'd' +IOMapping=ButtonSecondary12 +Type=EventMapping +Subsystem=GeneratorD +MessageID=ToggleGeneratorOnOff +Mode=ModeAlwaysActive + +//----------------------------------------- +// Heat Management Screen Mappings +//----------------------------------------- +[Condenser1_Button] +IOMapping=ButtonAuxUpperLeft1 +Type=EventMapping +Subsystem=Condenser1 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Condenser2_Button] +IOMapping=ButtonAuxUpperLeft2 +Type=EventMapping +Subsystem=Condenser2 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Condenser3_Button] +IOMapping=ButtonAuxUpperLeft3 +Type=EventMapping +Subsystem=Condenser3 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Reservoir_Button] +IOMapping=ButtonAuxUpperLeft4 +Type=EventMapping +Subsystem=Reservoir +MessageID=InjectCoolant +Mode=ModeAlwaysActive + +[Condenser4_Button] +IOMapping=ButtonAuxUpperLeft5 +Type=EventMapping +Subsystem=Condenser4 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Condenser5_Button] +IOMapping=ButtonAuxUpperLeft6 +Type=EventMapping +Subsystem=Condenser5 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Condenser6_Button] +IOMapping=ButtonAuxUpperLeft7 +Type=EventMapping +Subsystem=Condenser6 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Reduce_Button] +IOMapping=ButtonAuxUpperLeft8 +Type=EventMapping +MessageID=BalanceCoolant +Mode=ModeAlwaysActive + +//----------------------------------------------------------------------- +// Aux 1 mappings +//----------------------------------------------------------------------- +//------------------------------------------ +// Aux 1 'Quad screen' mappings +//------------------------------------------ +[MFD1_to_Mode_1] // To mode 1 +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Eng1 +Mode=ModeMFD1Quad + +[MFD1_Configure_Trigger_1] // Configure +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Subsystem=AFC25_1 +MessageID=ConfigureMappables +Mode=ModeMFD1Quad + +[MFD1_to_Mode_2] // To mode 2 +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Eng2 +Mode=ModeMFD1Quad + +[MFD1_Configure_Trigger_2] // Configure +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Subsystem=LRM10_1 +MessageID=ConfigureMappables +Mode=ModeMFD1Quad + +[MFD1_to_Mode_3] // To mode 3 +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Eng3 +Mode=ModeMFD1Quad + +[MFD1_Configure_Trigger_3] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Subsystem=MLaser1 +MessageID=ConfigureMappables +Mode=ModeMFD1Quad + +[Aux_1_Mode_1_to_MFD1] +IOMapping=ButtonAuxLowerLeft8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Quad +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_Select_GeneratorA] +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Subsystem=AFC25_1 +MessageID=SelectGeneratorA +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_Select_GeneratorB] +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Subsystem=AFC25_1 +MessageID=SelectGeneratorB +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_Select_GeneratorC] +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Subsystem=AFC25_1 +MessageID=SelectGeneratorC +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_Select_GeneratorD] +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Subsystem=AFC25_1 +MessageID=SelectGeneratorD +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_OPTION] +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Subsystem=AFC25_1 +MessageID=EjectAmmo +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Subsystem=AFC25_1 +MessageID=ToggleGeneratorMode +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_ToggleCooling] +IOMapping=ButtonAuxLowerLeft7 +Type=EventMapping +Subsystem=AFC25_1 +MessageID=ToggleCooling +Mode=ModeMFD1Eng1 + +//-------------------------------------------- +// Aux 1 'Mode 2' mappings, AuxScreenNumber=2 +//-------------------------------------------- +[Aux_1_Mode_2_to_MFD1] +IOMapping=ButtonAuxLowerLeft8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Quad +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_Select_GeneratorA] +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Subsystem=LRM10_1 +MessageID=SelectGeneratorA +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_Select_GeneratorB] +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Subsystem=LRM10_1 +MessageID=SelectGeneratorB +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_Select_GeneratorC] +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Subsystem=LRM10_1 +MessageID=SelectGeneratorC +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_Select_GeneratorD] +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Subsystem=LRM10_1 +MessageID=SelectGeneratorD +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_OPTION] +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Subsystem=LRM10_1 +MessageID=EjectAmmo +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Subsystem=LRM10_1 +MessageID=ToggleGeneratorMode +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_ToggleCooling] +IOMapping=ButtonAuxLowerLeft7 +Type=EventMapping +Subsystem=LRM10_1 +MessageID=ToggleCooling +Mode=ModeMFD1Eng2 + +//--------------------------------------------- +// Aux 1 'Mode 3' mappings, AuxScreenNumber=3 +//--------------------------------------------- +[Aux_1_Mode_3_to_MFD1] +IOMapping=ButtonAuxLowerLeft8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Quad +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_Select_GeneratorA] +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Subsystem=MLaser1 +MessageID=SelectGeneratorA +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_Select_GeneratorB] +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Subsystem=MLaser1 +MessageID=SelectGeneratorB +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_Select_GeneratorC] +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Subsystem=MLaser1 +MessageID=SelectGeneratorC +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_Select_GeneratorD] +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Subsystem=MLaser1 +MessageID=SelectGeneratorD +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_OPTION] +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Subsystem=MLaser1 +MessageID=ToggleSeekVoltage +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Subsystem=MLaser1 +MessageID=ToggleGeneratorMode +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_ToggleCooling] +IOMapping=ButtonAuxLowerLeft7 +Type=EventMapping +Subsystem=MLaser1 +MessageID=ToggleCooling +Mode=ModeMFD1Eng3 + +//-------------------------------------------- +// Aux 1 "Mode 4" Mappings, AuxScreenNumber=4 +//-------------------------------------------- +[MFD2_to_Mode_1] +IOMapping=ButtonAuxUpperCenter1 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Eng1 +Mode=ModeMFD2Quad + +[MFD2_to_Mode_2] +IOMapping=ButtonAuxUpperCenter3 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Eng2 +Mode=ModeMFD2Quad + +[MFD2_to_Mode_3] +IOMapping=ButtonAuxUpperCenter5 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Eng3 +Mode=ModeMFD2Quad + +[MFD2_Configure_Trigger_3] +IOMapping=ButtonAuxUpperCenter6 +Type=EventMapping +Subsystem=MLaser3 +MessageID=ConfigureMappables +Mode=ModeMFD2Quad + +[MFD2_to_Mode_4] +IOMapping=ButtonAuxUpperCenter7 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Eng4 +Mode=ModeMFD2Quad + +[MFD2_Configure_Trigger_4] +IOMapping=ButtonAuxUpperCenter8 +Type=EventMapping +Subsystem=MLaser4 +MessageID=ConfigureMappables +Mode=ModeMFD2Quad + +//-------------------------------------------- +// Aux 2 'Mode 1' mappings, AuxScreenNumber=9 +//-------------------------------------------- +[Aux_2_Mode_1_to_MFD2] +IOMapping=ButtonAuxUpperCenter8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Quad +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_Select_GeneratorA] +IOMapping=ButtonAuxUpperCenter1 +Type=EventMapping +Subsystem=Avionics +MessageID=SelectGeneratorA +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_Select_GeneratorB] +IOMapping=ButtonAuxUpperCenter2 +Type=EventMapping +Subsystem=Avionics +MessageID=SelectGeneratorB +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_Select_GeneratorC] +IOMapping=ButtonAuxUpperCenter3 +Type=EventMapping +Subsystem=Avionics +MessageID=SelectGeneratorC +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_Select_GeneratorD] +IOMapping=ButtonAuxUpperCenter4 +Type=EventMapping +Subsystem=Avionics +MessageID=SelectGeneratorD +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_ToggleGeneratorMode] +IOMapping=ButtonAuxUpperCenter6 +Type=EventMapping +Subsystem=Avionics +MessageID=ToggleGeneratorMode +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_ToggleCooling] +IOMapping=ButtonAuxUpperCenter7 +Type=EventMapping +Subsystem=Avionics +MessageID=ToggleCooling +Mode=ModeMFD2Eng1 + +//-------------------------------------------- +// Aux 2 'Mode 2' mappings, AuxScreenNumber=10 +//-------------------------------------------- +[Aux_2_Mode_2_to_MFD2] +IOMapping=ButtonAuxUpperCenter8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Quad +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_Select_GeneratorA] +IOMapping=ButtonAuxUpperCenter1 +Type=EventMapping +Subsystem=Myomers +MessageID=SelectGeneratorA +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_Select_GeneratorB] +IOMapping=ButtonAuxUpperCenter2 +Type=EventMapping +Subsystem=Myomers +MessageID=SelectGeneratorB +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_Select_GeneratorC] +IOMapping=ButtonAuxUpperCenter3 +Type=EventMapping +Subsystem=Myomers +MessageID=SelectGeneratorC +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_Select_GeneratorD] +IOMapping=ButtonAuxUpperCenter4 +Type=EventMapping +Subsystem=Myomers +MessageID=SelectGeneratorD +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_OPTION] +IOMapping=ButtonAuxUpperCenter5 +Type=EventMapping +Subsystem=Myomers +MessageID=ToggleSeekVoltage +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_ToggleGeneratorMode] +IOMapping=ButtonAuxUpperCenter6 +Type=EventMapping +Subsystem=Myomers +MessageID=ToggleGeneratorMode +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_ToggleCooling] +IOMapping=ButtonAuxUpperCenter7 +Type=EventMapping +Subsystem=Myomers +MessageID=ToggleCooling +Mode=ModeMFD2Eng2 + +//-------------------------------------------- +// Aux 3 'Mode 3' mappings, AuxScreenNumber=11 +//-------------------------------------------- +[Aux_2_Mode_3_to_MFD2] +IOMapping=ButtonAuxUpperCenter8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Quad +Mode=ModeMFD2Eng3 + +[Aux_2_Mode_3_Select_GeneratorA] +IOMapping=ButtonAuxUpperCenter1 +Type=EventMapping +Subsystem=MLaser3 +MessageID=SelectGeneratorA +Mode=ModeMFD2Eng3 + +[Aux_2_Mode_3_Select_GeneratorB] +IOMapping=ButtonAuxUpperCenter2 +Type=EventMapping +Subsystem=MLaser3 +MessageID=SelectGeneratorB +Mode=ModeMFD2Eng3 + +[Aux_2_Mode_3_Select_GeneratorC] +IOMapping=ButtonAuxUpperCenter3 +Type=EventMapping +Subsystem=MLaser3 +MessageID=SelectGeneratorC +Mode=ModeMFD2Eng3 + +[Aux_2_Mode_3_Select_GeneratorD] +IOMapping=ButtonAuxUpperCenter4 +Type=EventMapping +Subsystem=MLaser3 +MessageID=SelectGeneratorD +Mode=ModeMFD2Eng3 + +[Aux_2_Mode_3_OPTION] +IOMapping=ButtonAuxUpperCenter5 +Type=EventMapping +Subsystem=MLaser3 +MessageID=ToggleSeekVoltage +Mode=ModeMFD2Eng3 + +[Aux_2_Mode_3_ToggleGeneratorMode] +IOMapping=ButtonAuxUpperCenter6 +Type=EventMapping +Subsystem=MLaser3 +MessageID=ToggleGeneratorMode +Mode=ModeMFD2Eng3 + +[Aux_2_Mode_3_ToggleCooling] +IOMapping=ButtonAuxUpperCenter7 +Type=EventMapping +Subsystem=MLaser3 +MessageID=ToggleCooling +Mode=ModeMFD2Eng3 + +//--------------------------------------------- +// Aux 3 'Mode 4' mappings, AuxScreenNumber=12 +//--------------------------------------------- +[Aux_2_Mode_4_to_MFD2] +IOMapping=ButtonAuxUpperCenter8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Quad +Mode=ModeMFD2Eng4 + +[Aux_2_Mode_4_Select_GeneratorA] +IOMapping=ButtonAuxUpperCenter1 +Type=EventMapping +Subsystem=MLaser4 +MessageID=SelectGeneratorA +Mode=ModeMFD2Eng4 + +[Aux_2_Mode_4_Select_GeneratorB] +IOMapping=ButtonAuxUpperCenter2 +Type=EventMapping +Subsystem=MLaser4 +MessageID=SelectGeneratorB +Mode=ModeMFD2Eng4 + +[Aux_2_Mode_4_Select_GeneratorC] +IOMapping=ButtonAuxUpperCenter3 +Type=EventMapping +Subsystem=MLaser4 +MessageID=SelectGeneratorC +Mode=ModeMFD2Eng4 + +[Aux_2_Mode_4_Select_GeneratorD] +IOMapping=ButtonAuxUpperCenter4 +Type=EventMapping +Subsystem=MLaser4 +MessageID=SelectGeneratorD +Mode=ModeMFD2Eng4 + +[Aux_2_Mode_4_OPTION] +IOMapping=ButtonAuxUpperCenter5 +Type=EventMapping +Subsystem=MLaser4 +MessageID=ToggleSeekVoltage +Mode=ModeMFD2Eng4 + +[Aux_2_Mode_4_ToggleGeneratorMode] +IOMapping=ButtonAuxUpperCenter6 +Type=EventMapping +Subsystem=MLaser4 +MessageID=ToggleGeneratorMode +Mode=ModeMFD2Eng4 + +[Aux_2_Mode_4_ToggleCooling] +IOMapping=ButtonAuxUpperCenter7 +Type=EventMapping +Subsystem=MLaser4 +MessageID=ToggleCooling +Mode=ModeMFD2Eng4 + + +//----------------------------------------------------------------------- +// Aux 3 mappings +//----------------------------------------------------------------------- +//------------------------------------------ +// Aux 3 'Quad screen' mappings +//------------------------------------------ +[MFD3_to_Mode_1] +IOMapping=ButtonAuxLowerRight1 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Eng1 +Mode=ModeMFD3Quad + +[MFD3_Configure_Trigger_1] +IOMapping=ButtonAuxLowerRight2 +Type=EventMapping +Subsystem=LRM10_2 +MessageID=ConfigureMappables +Mode=ModeMFD3Quad + +[MFD3_to_Mode_2] +IOMapping=ButtonAuxLowerRight3 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Eng2 +Mode=ModeMFD3Quad + +[MFD3_Configure_Trigger_2] +IOMapping=ButtonAuxLowerRight4 +Type=EventMapping +Subsystem=AFC25_2 +MessageID=ConfigureMappables +Mode=ModeMFD3Quad + +[MFD3_to_Mode_4] +IOMapping=ButtonAuxLowerRight7 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Eng4 +Mode=ModeMFD3Quad + +[MFD3_Configure_Trigger_4] +IOMapping=ButtonAuxLowerRight8 +Type=EventMapping +Subsystem=MLaser2 +MessageID=ConfigureMappables +Mode=ModeMFD3Quad + +//-------------------------------------------- +// Aux 3 'Mode 1' mappings, AuxScreenNumber=9 +//-------------------------------------------- +[Aux_3_Mode_1_to_MFD3] +IOMapping=ButtonAuxLowerRight8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Quad +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_Select_GeneratorA] +IOMapping=ButtonAuxLowerRight1 +Type=EventMapping +Subsystem=LRM10_2 +MessageID=SelectGeneratorA +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_Select_GeneratorB] +IOMapping=ButtonAuxLowerRight2 +Type=EventMapping +Subsystem=LRM10_2 +MessageID=SelectGeneratorB +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_Select_GeneratorC] +IOMapping=ButtonAuxLowerRight3 +Type=EventMapping +Subsystem=LRM10_2 +MessageID=SelectGeneratorC +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_Select_GeneratorD] +IOMapping=ButtonAuxLowerRight4 +Type=EventMapping +Subsystem=LRM10_2 +MessageID=SelectGeneratorD +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_OPTION] +IOMapping=ButtonAuxLowerRight5 +Type=EventMapping +Subsystem=LRM10_2 +MessageID=EjectAmmo +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerRight6 +Type=EventMapping +Subsystem=LRM10_2 +MessageID=ToggleGeneratorMode +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_ToggleCooling] +IOMapping=ButtonAuxLowerRight7 +Type=EventMapping +Subsystem=LRM10_2 +MessageID=ToggleCooling +Mode=ModeMFD3Eng1 + +//-------------------------------------------- +// Aux 3 'Mode 2' mappings, AuxScreenNumber=10 +//-------------------------------------------- +[Aux_3_Mode_2_to_MFD3] +IOMapping=ButtonAuxLowerRight8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Quad +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_Select_GeneratorA] +IOMapping=ButtonAuxLowerRight1 +Type=EventMapping +Subsystem=AFC25_2 +MessageID=SelectGeneratorA +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_Select_GeneratorB] +IOMapping=ButtonAuxLowerRight2 +Type=EventMapping +Subsystem=AFC25_2 +MessageID=SelectGeneratorB +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_Select_GeneratorC] +IOMapping=ButtonAuxLowerRight3 +Type=EventMapping +Subsystem=AFC25_2 +MessageID=SelectGeneratorC +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_Select_GeneratorD] +IOMapping=ButtonAuxLowerRight4 +Type=EventMapping +Subsystem=AFC25_2 +MessageID=SelectGeneratorD +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_OPTION] +IOMapping=ButtonAuxLowerRight5 +Type=EventMapping +Subsystem=AFC25_2 +MessageID=EjectAmmo +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerRight6 +Type=EventMapping +Subsystem=AFC25_2 +MessageID=ToggleGeneratorMode +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_ToggleCooling] +IOMapping=ButtonAuxLowerRight7 +Type=EventMapping +Subsystem=AFC25_2 +MessageID=ToggleCooling +Mode=ModeMFD3Eng2 + +//-------------------------------------------- +// Aux 3 'Mode 3' mappings, AuxScreenNumber=11 +//-------------------------------------------- +[Aux_3_Mode_4_to_MFD3] +IOMapping=ButtonAuxLowerRight8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Quad +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_Select_GeneratorA] +IOMapping=ButtonAuxLowerRight1 +Type=EventMapping +Subsystem=MLaser2 +MessageID=SelectGeneratorA +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_Select_GeneratorB] +IOMapping=ButtonAuxLowerRight2 +Type=EventMapping +Subsystem=MLaser2 +MessageID=SelectGeneratorB +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_Select_GeneratorC] +IOMapping=ButtonAuxLowerRight3 +Type=EventMapping +Subsystem=MLaser2 +MessageID=SelectGeneratorC +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_Select_GeneratorD] +IOMapping=ButtonAuxLowerRight4 +Type=EventMapping +Subsystem=MLaser2 +MessageID=SelectGeneratorD +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_OPTION] +IOMapping=ButtonAuxLowerRight5 +Type=EventMapping +Subsystem=MLaser2 +MessageID=ToggleSeekVoltage +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerRight6 +Type=EventMapping +Subsystem=MLaser2 +MessageID=ToggleGeneratorMode +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_ToggleCooling] +IOMapping=ButtonAuxLowerRight7 +Type=EventMapping +Subsystem=MLaser2 +MessageID=ToggleCooling +Mode=ModeMFD3Eng4 +[AFC25_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=AFC25_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[AFC25_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=AFC25_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[MLaser1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=MLaser1 +AttributeID=TriggerState +Mode=ModeNonMapping +[MLaser2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=MLaser2 +AttributeID=TriggerState +Mode=ModeNonMapping +[MLaser3_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=MLaser3 +AttributeID=TriggerState +Mode=ModeNonMapping +[MLaser4_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=MLaser4 +AttributeID=TriggerState +Mode=ModeNonMapping +[LRM10_1_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=LRM10_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[LRM10_2_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=LRM10_2 +AttributeID=TriggerState +Mode=ModeNonMapping diff --git a/CONTENT/BT/MODELS/MAD1THR.CTL b/CONTENT/BT/MODELS/MAD1THR.CTL new file mode 100644 index 0000000..d180080 --- /dev/null +++ b/CONTENT/BT/MODELS/MAD1THR.CTL @@ -0,0 +1,69 @@ +[StickPosition_JP] +IOMapping=JoystickPhysical +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=StickPosition +Mode=ModeAlwaysActive + +[TorsoLeft_BJHL] +IOMapping=ButtonJoystickHatLeft +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoLeft +Mode=ModeAlwaysActive + +[TorsoRight_BJHR] +IOMapping=ButtonJoystickHatRight +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoRight +Mode=ModeAlwaysActive + +[AFC25_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=AFC25_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[AFC25_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=AFC25_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[MLaser1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=MLaser1 +AttributeID=TriggerState +Mode=ModeNonMapping +[MLaser2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=MLaser2 +AttributeID=TriggerState +Mode=ModeNonMapping +[MLaser3_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=MLaser3 +AttributeID=TriggerState +Mode=ModeNonMapping +[MLaser4_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=MLaser4 +AttributeID=TriggerState +Mode=ModeNonMapping +[LRM10_1_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=LRM10_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[LRM10_2_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=LRM10_2 +AttributeID=TriggerState +Mode=ModeNonMapping diff --git a/CONTENT/BT/MODELS/MAD2.DMG b/CONTENT/BT/MODELS/MAD2.DMG new file mode 100644 index 0000000..9a81749 --- /dev/null +++ b/CONTENT/BT/MODELS/MAD2.DMG @@ -0,0 +1,193 @@ +// This file is intentionally empty and MUST be read-only! +[dz_dtorso] +ExplosionTable=mad2dmg.exp +DefaultEffectSiteName=siteedz_dtorso +WeaponDamagePoints=122 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Condenser5 2 0.500000 +CriticalSubsystem=GeneratorD 10 0.500000 +CriticalSubsystem=Avionics 5 0.200000 +CriticalSubsystem=Torso 15 0.333333 +CriticalSubsystem=ERPPC 5 1.000000 +[dz_hip] +ExplosionTable=mad2dmg.exp +DefaultEffectSiteName=siteedz_hip +WeaponDamagePoints=122 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Myomers 15 0.142857 +CriticalSubsystem=Gyroscope 15 0.333333 +CriticalSubsystem=Torso 15 0.333333 +[dz_larm] +ExplosionTable=mad2dmg.exp +DefaultEffectSiteName=siteedz_larm +WeaponDamagePoints=77 +VitalDamageZone=False +DescendOnDestruction=True +CriticalSubsystem=Condenser4 2 0.500000 +[dz_ldleg] +ExplosionTable=mad2dmg.exp +DefaultEffectSiteName=siteedz_ldleg +WeaponDamagePoints=90 +VitalDamageZone=True +LegDamageZone=LeftLeg +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Myomers 15 0.142857 +[dz_ldoor] +ExplosionTable=mad2dmg.exp +DefaultEffectSiteName=siteedz_ldoor +WeaponDamagePoints=1 +VitalDamageZone=False +[dz_lfoot] +ExplosionTable=mad2dmg.exp +DefaultEffectSiteName=siteedz_lfoot +WeaponDamagePoints=81 +VitalDamageZone=True +LegDamageZone=LeftLeg +CriticalSubsystem=Myomers 15 0.142857 +[dz_lgun] +ExplosionTable=mad2dmg.exp +DefaultEffectSiteName=siteedz_lgun +WeaponDamagePoints=68 +VitalDamageZone=False +DescendOnDestruction=True +CriticalSubsystem=Condenser4 2 0.500000 +CriticalSubsystem=ERMLaser_1 25 1.000000 +CriticalSubsystem=ERMLaser_2 25 1.000000 +[dz_ltorso] +ExplosionTable=mad2dmg.exp +DefaultEffectSiteName=siteedz_ltorso +WeaponDamagePoints=117 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Condenser1 2 0.500000 +CriticalSubsystem=GeneratorA 10 0.500000 +CriticalSubsystem=Avionics 5 0.200000 +CriticalSubsystem=AmmoBinLRM15 15 1.000000 +CriticalSubsystem=LRM15 15 1.000000 +[dz_luleg] +ExplosionTable=mad2dmg.exp +DefaultEffectSiteName=siteedz_luleg +WeaponDamagePoints=90 +VitalDamageZone=True +LegDamageZone=LeftLeg +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Myomers 15 0.142857 +[dz_rarm] +ExplosionTable=mad2dmg.exp +DefaultEffectSiteName=siteedz_rarm +WeaponDamagePoints=77 +VitalDamageZone=False +DescendOnDestruction=True +CriticalSubsystem=Condenser6 2 0.500000 +CriticalSubsystem=AmmoBinAFC50 10 0.500000 +[dz_rdleg] +ExplosionTable=mad2dmg.exp +DefaultEffectSiteName=siteedz_rdleg +WeaponDamagePoints=90 +VitalDamageZone=True +LegDamageZone=RightLeg +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Myomers 15 0.142857 +[dz_rdoor] +ExplosionTable=mad2dmg.exp +DefaultEffectSiteName=siteedz_rdoor +WeaponDamagePoints=1 +VitalDamageZone=False +[dz_reardtorso] +ExplosionTable=mad2dmg.exp +DefaultEffectSiteName=siteedz_reardtorso +WeaponDamagePoints=81 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Reservoir 10 0.250000 +CriticalSubsystem=Condenser5 2 0.500000 +CriticalSubsystem=GeneratorD 10 0.500000 +CriticalSubsystem=Torso 15 0.333333 +[dz_rearltorso] +ExplosionTable=mad2dmg.exp +DefaultEffectSiteName=siteedz_rearltorso +WeaponDamagePoints=117 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Reservoir 10 0.250000 +CriticalSubsystem=Condenser1 2 0.500000 +CriticalSubsystem=GeneratorA 10 0.500000 +[dz_rearrtorso] +ExplosionTable=mad2dmg.exp +DefaultEffectSiteName=siteedz_rearrtorso +WeaponDamagePoints=117 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Reservoir 10 0.250000 +CriticalSubsystem=Condenser3 2 0.500000 +CriticalSubsystem=GeneratorC 10 0.500000 +[dz_rearutorso] +ExplosionTable=mad2dmg.exp +DefaultEffectSiteName=siteedz_rearutorso +WeaponDamagePoints=113 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Reservoir 10 0.250000 +CriticalSubsystem=Condenser2 2 0.500000 +CriticalSubsystem=GeneratorB 10 0.500000 +CriticalSubsystem=Gyroscope 30 0.333333 +[dz_rfoot] +ExplosionTable=mad2dmg.exp +DefaultEffectSiteName=siteedz_rfoot +WeaponDamagePoints=81 +VitalDamageZone=True +LegDamageZone=RightLeg +CriticalSubsystem=Myomers 15 0.142857 +[dz_rgun] +ExplosionTable=mad2dmg.exp +DefaultEffectSiteName=siteedz_rgun +WeaponDamagePoints=68 +VitalDamageZone=False +DescendOnDestruction=True +CriticalSubsystem=Condenser6 2 0.500000 +CriticalSubsystem=AmmoBinAFC50 10 0.500000 +CriticalSubsystem=AFC50 5 1.000000 +[dz_rtorso] +ExplosionTable=mad2dmg.exp +DefaultEffectSiteName=siteedz_rtorso +WeaponDamagePoints=117 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Condenser3 2 0.500000 +CriticalSubsystem=GeneratorC 10 0.500000 +CriticalSubsystem=Avionics 5 0.200000 +CriticalSubsystem=AmmoBinSRM6_1 15 1.000000 +CriticalSubsystem=SRM6_1 15 1.000000 +CriticalSubsystem=AmmoBinSRM6_2 15 1.000000 +CriticalSubsystem=SRM6_2 15 1.000000 +[dz_ruleg] +ExplosionTable=mad2dmg.exp +DefaultEffectSiteName=siteedz_ruleg +WeaponDamagePoints=90 +VitalDamageZone=True +LegDamageZone=RightLeg +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Myomers 15 0.142857 +[dz_searchlight] +ExplosionTable=mad2dmg.exp +DefaultEffectSiteName=siteedz_searchlight +WeaponDamagePoints=50 +VitalDamageZone=False +CriticalSubsystem=Avionics 5 0.200000 +CriticalSubsystem=HUD 15 0.500000 +CriticalSubsystem=Searchlight 45 1.000000 +[dz_utorso] +ExplosionTable=mad2dmg.exp +DefaultEffectSiteName=siteedz_utorso +WeaponDamagePoints=175 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Condenser2 2 0.500000 +CriticalSubsystem=GeneratorB 10 0.500000 +CriticalSubsystem=Avionics 5 0.200000 +CriticalSubsystem=Gyroscope 30 0.333333 +CriticalSubsystem=HUD 15 0.500000 +[dz_searchlght] +CriticalSubsystem=ThermalSight 30 1.000000 diff --git a/CONTENT/BT/MODELS/MAD2.MOD b/CONTENT/BT/MODELS/MAD2.MOD new file mode 100644 index 0000000..403cdba --- /dev/null +++ b/CONTENT/BT/MODELS/MAD2.MOD @@ -0,0 +1,131 @@ +[video] +skeleton=mad2.skl +skeletona=max2.skl +destroyed=mad2d.skl +//destroyeda=max2d.skl +dzm=mad2skin.dzm +dzma=max2skin.dzm + +[audio] +internal=mad2int.scp +external=mad2ext.scp + +[collision] +name=mad_cv.sld + +[gauge] +image=thor_ga.gim + +[gaugeMissionReview] +pixelmap=mad2_mr.pcc + +[gamedata] +class=MechClassID +MoverMass=75000.0 +MomentOfInertia=1.75 3.125 1.75 +PositiveLinearDragCoefficients=0.14 0.4 0.07 +NegativeLinearDragCoefficients=0.14 0.2 0.08 +AngularDragCoefficients=0.3 0.5 0.3 +FrictionCoefficient=0.1 +ElasticityCoefficient=0.2 +MinimumBounceSpeed=0.2 +MaxAcceleration=20 +AnimationPrefix=mad +Subsystems=mad2.sub +DamageZones=mad2.dmg +DamageLookupTable=mad2dmg.tbl +RelativeMechValue=1.0 +LookLeftAngle=50 +LookRightAngle=-50 +LookBackAngle=0 +LookFrontAngle=-15 +RunningTurnRate=40 +WalkingTurnRate=65 +DeathEffect=maddead +CameraOffset=0.0 15.0 30.0 +DeathSplashDamage=5 +DeathSplashRadius=50 +TimeDelay=0.3 + +MaxUnstableAcceleration=44.0 +UnstableAccelerationEffect=0.7 +UnstableGunTheEngineEffect=1.0 +UnstableSuperStopEffect=0.5 +UnstableHighVelocityEffect=0.4 +UnstableStopedTurnEffect=1.0 +SuperStopAcceleration=20.0 + +ThrottleAdjustment=0.8 + +UpdateTurnDegreeDiffrence=3 +UpdateTurnVelocityDiffrence=0.045 +UpdatePositionDiffrence=0.3 + +ShadowJointName=jointshadow + + +[ControlMappings] +Thrustmaster=mad2thr.ctl +L4=mad2l4.ctl + +[animations] +animationtransition=madswr.ani +animation=madwwl.ani +animation=madwwr.ani +animation=madwsr.ani +animation=madwsl.ani +animationtransition=madwrl.ani +animationtransition=madwrr.ani +animation=madrrl.ani +animation=madrrr.ani +animation=madrwl.ani +animation=madrwr.ani +animation=madbmp.ani +animation=madbbl.ani +animation=madbbr.ani +animation=madbsl.ani +animation=madbsr.ani +animationtransition=madsbl.ani +animationtransition=madsbr.ani + +animationtransition=madswri.ani +animation=madwwli.ani +animation=madwwri.ani +animation=madwsri.ani +animation=madwsli.ani +animationtransition=madwrli.ani +animationtransition=madwrri.ani +animation=madrrli.ani +animation=madrrri.ani +animation=madrwli.ani +animation=madrwri.ani +animation=madbmpi.ani +animation=madbbli.ani +animation=madbbri.ani +animation=madbsli.ani +animation=madbsri.ani +animationtransition=madsbli.ani +animationtransition=madsbri.ani + +animation=madggl.ani +animation=madggr.ani +animation=madgsl.ani +animation=madgsr.ani +animationtransition=madwgl.ani +animationtransition=madwgr.ani + +animation=madggli.ani +animation=madggri.ani +animation=madgsli.ani +animation=madgsri.ani +animationtransition=madwgli.ani +animationtransition=madwgri.ani + +animation=madsqu.ani +animation=madsqd.ani +animation=madsqui.ani +animation=madsqdi.ani + +animation=madtrn.ani +animation=madtrni.ani + diff --git a/CONTENT/BT/MODELS/MAD2.SUB b/CONTENT/BT/MODELS/MAD2.SUB new file mode 100644 index 0000000..22a3062 --- /dev/null +++ b/CONTENT/BT/MODELS/MAD2.SUB @@ -0,0 +1,218 @@ +[HeatSink] +Type=HeatSinkClassID +Include=heatsnk.sub +HeatSinkCount=10 +SubsystemFlags=DontReplicateFlag + +[Reservoir] +Type=ReservoirClassID +Include=reserve.sub +HeatSink=HeatSink +SegmentPageName=siteeyepoint + +[Condenser1] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser2] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser3] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser4] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser5] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser6] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[GeneratorA] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser1 +SubsystemFlags=DontReplicateFlag + +[GeneratorB] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser2 +SubsystemFlags=DontReplicateFlag + +[GeneratorC] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser3 +SubsystemFlags=DontReplicateFlag + +[GeneratorD] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser5 +SubsystemFlags=DontReplicateFlag + +[Avionics] +Type=SensorClassID +Include=sensor.sub +HeatSink=Condenser2 +VoltageSource=GeneratorD +AuxScreenNumber=5 +SubsystemFlags=DontReplicateFlag + +AuxScreenPlacement=2 +[Myomers] +Type=MyomersClassID +Include=myomers.sub +HeatSink=Condenser5 +VoltageSource=GeneratorD +AuxScreenNumber=6 +SubsystemFlags=DontReplicateFlag + +AuxScreenPlacement=0 +[Gyroscope] +Type=GyroscopeClassID +Include=gyro.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag + +[Torso] +Type=TorsoClassID +Include=torso.sub +WatchedSubsystem=Myomers + +HorizontalRotationPerSecond=50 +VerticalRotationPerSecond=30 +HorizontalLimitRight=-140 +HorizontalLimitLeft=140 +[HUD] +Type=HUDClassID +Include=hud.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag + +[Searchlight] +Type=SearchlightClassID +Include=srchlite.sub +WatchedSubsystem=Avionics +SegmentPageName=sitelight + +[ThermalSight] +Type=ThermalSightClassID +Include=Thermal.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag +[ERPPC] +Type=PPCClassID +Include=erppc.sub +SegmentPageName=siterdtorsoport +PipPosition=1 +VoltageSource=GeneratorD +HeatSink=Condenser5 +AuxScreenNumber=8 +AuxScreenPlacement=5 +[AmmoBinAFC50] +Type=AmmoBinClassID +Include=ammafc50.sub +WatchedSubsystem=AFC50 +AmmoCount=25 +[AFC50] +AmmoBin=AmmoBinAFC50 +Type=ProjectileWeaponClassID +Include=afc50.sub +SegmentPageName=sitergunport +PipPosition=1 +VoltageSource=GeneratorC +HeatSink=Condenser6 +AuxScreenNumber=10 +AuxScreenPlacement=6 +[ERMLaser_1] +Type=EmitterClassID +Include=ermlaser.sub +SegmentPageName=sitelugunport +PipPosition=1 +VoltageSource=GeneratorA +HeatSink=Condenser4 +AuxScreenNumber=1 +AuxScreenPlacement=4 +[ERMLaser_2] +Type=EmitterClassID +Include=ermlaser.sub +SegmentPageName=siteldgunport +PipPosition=2 +VoltageSource=GeneratorA +HeatSink=Condenser4 +AuxScreenNumber=3 +AuxScreenPlacement=4 +[AmmoBinLRM15] +Type=AmmoBinClassID +Include=ammnrk15.sub +WatchedSubsystem=LRM15 +AmmoCount=12 +[LRM15] +AmmoBin=AmmoBinLRM15 +Type=MissileLauncherClassID +Include=nrk15.sub +SegmentPageName=sitelmissleport +PipPosition=1 +VoltageSource=GeneratorB +HeatSink=Condenser1 +AuxScreenNumber=2 +AuxScreenPlacement=1 +[AmmoBinSRM6_1] +Type=AmmoBinClassID +Include=ammstrk4.sub +WatchedSubsystem=SRM6_1 +AmmoCount=12 +[SRM6_1] +AmmoBin=AmmoBinSRM6_1 +Type=MissileLauncherClassID +Include=strk4.sub +SegmentPageName=sitermissleport +PipPosition=1 +VoltageSource=GeneratorB +HeatSink=Condenser3 +AuxScreenNumber=9 +AuxScreenPlacement=3 +[AmmoBinSRM6_2] +Type=AmmoBinClassID +Include=ammstrk4.sub +WatchedSubsystem=SRM6_2 +AmmoCount=12 +[SRM6_2] +AmmoBin=AmmoBinSRM6_2 +Type=MissileLauncherClassID +Include=strk4.sub +SegmentPageName=sitermissleport +PipPosition=2 +VoltageSource=GeneratorB +HeatSink=Condenser3 +AuxScreenNumber=11 +AuxScreenPlacement=3 +[MessageManager] +Type=SubsystemMessageManagerClassID +ExplosionModelFile=majhit 1.0 +TerrainHitExplosion=gndhit +RendererCompensateTime=0.3 +[MechTech] +Type=MechTechClassID +AlarmModel=mechalrm +SubsystemFlags=DontReplicateFlag diff --git a/CONTENT/BT/MODELS/MAD2DMG.EXP b/CONTENT/BT/MODELS/MAD2DMG.EXP new file mode 100644 index 0000000..c9b1598 --- /dev/null +++ b/CONTENT/BT/MODELS/MAD2DMG.EXP @@ -0,0 +1,28 @@ +[OneDamage] +ExplosionModelFile=dam1hit +DamageLevel=0.2 +TimeDelay=0.0 + +[TwoDamage] +ExplosionModelFile=dam2hit +DamageLevel=0.4 +TimeDelay=0.0 + +[ThreeDamage] +ExplosionModelFile=dam3hit +DamageLevel=0.6 +TimeDelay=0.0 + +[FourDamage] +ExplosionModelFile=dam4hit +DamageLevel=0.8 +TimeDelay=0.0 + +[DestroyedExplosion] +ExplosionModelFile=desthit +GraphicState=Destroyed + +[GoneExplosion] +ExplosionModelFile=desthit +GraphicState=Gone + diff --git a/CONTENT/BT/MODELS/MAD2L4.CTL b/CONTENT/BT/MODELS/MAD2L4.CTL new file mode 100644 index 0000000..5c384ac --- /dev/null +++ b/CONTENT/BT/MODELS/MAD2L4.CTL @@ -0,0 +1,896 @@ +[StickPosition_JP] +//----------------------------------------------------------------------- +// Joystick +//----------------------------------------------------------------------- +IOMapping=JoystickPhysical +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=StickPosition +Mode=ModeAlwaysActive + +[Throttle_ST] +//----------------------------------------------------------------------- +// Throttle +//----------------------------------------------------------------------- +IOMapping=ScalarThrottle +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=ThrottlePosition +Mode=ModeAlwaysActive + +//----------------------------------------------------------------------- +// Misc. switches +//----------------------------------------------------------------------- +[ReverseThrust_BT1] +IOMapping=ButtonThrottle1 +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=ReverseThrust +Mode=ModeAlwaysActive + +[TorsoCenter_BJHU] +IOMapping=ButtonJoystickHatUp +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoCenter +Mode=ModeAlwaysActive + +[LookLeft_BJHL] +IOMapping=ButtonJoystickHatLeft +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=LookLeft +Mode=ModeAlwaysActive + +[LookRight_BJHR] +IOMapping=ButtonJoystickHatRight +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=LookRight +Mode=ModeAlwaysActive + +[LookBack_BJHD] +IOMapping=ButtonJoystickHatDown +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=LookBehind +Mode=ModeAlwaysActive + +//----------------------------------------------------------------------- +// Secondary mappings +//----------------------------------------------------------------------- +[Button_Sec_1] // Zoom radar in (magnify image) +IOMapping=ButtonSecondary1 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=ZoomIn +Mode=ModeAlwaysActive + +[Button_Sec_2] // Zoom radar out (reduce image) +IOMapping=ButtonSecondary2 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=ZoomOut +Mode=ModeAlwaysActive + +// +// 'Heat vision' mapped to secondary +// SGM 1/6/97 + +[Button_Sec_3] // Toggle heat vision +IOMapping=ButtonSecondary3 +Type=EventMapping +Subsystem=ThermalSight +MessageID=ToggleLamp +Mode=ModeAlwaysActive + +// +// 'Duck' remapped to real message and location. +// GDU 7/9/96 + +[Button_Sec_4] // Request crouch position +IOMapping=ButtonSecondary4 +Type=EventMapping +MessageID=DuckRequest +Mode=ModeAlwaysActive + +[Button_Sec_5] // Toggle searchlight +IOMapping=ButtonSecondary5 +Type=EventMapping +Subsystem=Searchlight +MessageID=ToggleLamp +Mode=ModeAlwaysActive + +[Button_Sec_6] // Cycle through damage display modes +IOMapping=ButtonSecondary6 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=CycleDisplayMode +Mode=ModeAlwaysActive + +[Button_Sec_7] // Cycle through control modes +IOMapping=ButtonSecondary7 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=CycleControlMode +Mode=ModeAlwaysActive + +// ButtonSecondary8 presently unused + +[Button_Sec_9] // Toggle generator 'a' +IOMapping=ButtonSecondary9 +Type=EventMapping +Subsystem=GeneratorA +MessageID=ToggleGeneratorOnOff +Mode=ModeAlwaysActive + +[Button_Sec_10] // Toggle generator 'b' +IOMapping=ButtonSecondary10 +Type=EventMapping +Subsystem=GeneratorB +MessageID=ToggleGeneratorOnOff +Mode=ModeAlwaysActive + +[Button_Sec_11] // Toggle generator 'c' +IOMapping=ButtonSecondary11 +Type=EventMapping +Subsystem=GeneratorC +MessageID=ToggleGeneratorOnOff +Mode=ModeAlwaysActive + +[Button_Sec_12] // Toggle generator 'd' +IOMapping=ButtonSecondary12 +Type=EventMapping +Subsystem=GeneratorD +MessageID=ToggleGeneratorOnOff +Mode=ModeAlwaysActive + +//----------------------------------------- +// Heat Management Screen Mappings +//----------------------------------------- +[Condenser1_Button] +IOMapping=ButtonAuxUpperLeft1 +Type=EventMapping +Subsystem=Condenser1 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Condenser2_Button] +IOMapping=ButtonAuxUpperLeft2 +Type=EventMapping +Subsystem=Condenser2 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Condenser3_Button] +IOMapping=ButtonAuxUpperLeft3 +Type=EventMapping +Subsystem=Condenser3 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Reservoir_Button] +IOMapping=ButtonAuxUpperLeft4 +Type=EventMapping +Subsystem=Reservoir +MessageID=InjectCoolant +Mode=ModeAlwaysActive + +[Condenser4_Button] +IOMapping=ButtonAuxUpperLeft5 +Type=EventMapping +Subsystem=Condenser4 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Condenser5_Button] +IOMapping=ButtonAuxUpperLeft6 +Type=EventMapping +Subsystem=Condenser5 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Condenser6_Button] +IOMapping=ButtonAuxUpperLeft7 +Type=EventMapping +Subsystem=Condenser6 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Reduce_Button] +IOMapping=ButtonAuxUpperLeft8 +Type=EventMapping +MessageID=BalanceCoolant +Mode=ModeAlwaysActive + +//----------------------------------------------------------------------- +// Aux 1 mappings +//----------------------------------------------------------------------- +//------------------------------------------ +// Aux 1 'Quad screen' mappings +//------------------------------------------ +[MFD1_to_Mode_1] // To mode 1 +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Eng1 +Mode=ModeMFD1Quad + +[MFD1_Configure_Trigger_1] // Configure +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Subsystem=ERMLaser_1 +MessageID=ConfigureMappables +Mode=ModeMFD1Quad + +[MFD1_to_Mode_2] // To mode 2 +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Eng2 +Mode=ModeMFD1Quad + +[MFD1_Configure_Trigger_2] // Configure +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Subsystem=LRM15 +MessageID=ConfigureMappables +Mode=ModeMFD1Quad + +[MFD1_to_Mode_3] // To mode 3 +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Eng3 +Mode=ModeMFD1Quad + +[MFD1_Configure_Trigger_3] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Subsystem=ERMLaser_2 +MessageID=ConfigureMappables +Mode=ModeMFD1Quad + +[Aux_1_Mode_1_to_MFD1] +IOMapping=ButtonAuxLowerLeft8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Quad +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_Select_GeneratorA] +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Subsystem=ERMLaser_1 +MessageID=SelectGeneratorA +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_Select_GeneratorB] +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Subsystem=ERMLaser_1 +MessageID=SelectGeneratorB +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_Select_GeneratorC] +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Subsystem=ERMLaser_1 +MessageID=SelectGeneratorC +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_Select_GeneratorD] +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Subsystem=ERMLaser_1 +MessageID=SelectGeneratorD +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_OPTION] +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Subsystem=ERMLaser_1 +MessageID=ToggleSeekVoltage +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Subsystem=ERMLaser_1 +MessageID=ToggleGeneratorMode +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_ToggleCooling] +IOMapping=ButtonAuxLowerLeft7 +Type=EventMapping +Subsystem=ERMLaser_1 +MessageID=ToggleCooling +Mode=ModeMFD1Eng1 + +//-------------------------------------------- +// Aux 1 'Mode 2' mappings, AuxScreenNumber=2 +//-------------------------------------------- +[Aux_1_Mode_2_to_MFD1] +IOMapping=ButtonAuxLowerLeft8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Quad +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_Select_GeneratorA] +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Subsystem=LRM15 +MessageID=SelectGeneratorA +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_Select_GeneratorB] +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Subsystem=LRM15 +MessageID=SelectGeneratorB +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_Select_GeneratorC] +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Subsystem=LRM15 +MessageID=SelectGeneratorC +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_Select_GeneratorD] +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Subsystem=LRM15 +MessageID=SelectGeneratorD +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_OPTION] +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Subsystem=LRM15 +MessageID=EjectAmmo +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Subsystem=LRM15 +MessageID=ToggleGeneratorMode +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_ToggleCooling] +IOMapping=ButtonAuxLowerLeft7 +Type=EventMapping +Subsystem=LRM15 +MessageID=ToggleCooling +Mode=ModeMFD1Eng2 + +//--------------------------------------------- +// Aux 1 'Mode 3' mappings, AuxScreenNumber=3 +//--------------------------------------------- +[Aux_1_Mode_3_to_MFD1] +IOMapping=ButtonAuxLowerLeft8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Quad +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_Select_GeneratorA] +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Subsystem=ERMLaser_2 +MessageID=SelectGeneratorA +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_Select_GeneratorB] +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Subsystem=ERMLaser_2 +MessageID=SelectGeneratorB +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_Select_GeneratorC] +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Subsystem=ERMLaser_2 +MessageID=SelectGeneratorC +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_Select_GeneratorD] +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Subsystem=ERMLaser_2 +MessageID=SelectGeneratorD +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_OPTION] +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Subsystem=ERMLaser_2 +MessageID=ToggleSeekVoltage +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Subsystem=ERMLaser_2 +MessageID=ToggleGeneratorMode +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_ToggleCooling] +IOMapping=ButtonAuxLowerLeft7 +Type=EventMapping +Subsystem=ERMLaser_2 +MessageID=ToggleCooling +Mode=ModeMFD1Eng3 + +//-------------------------------------------- +// Aux 1 "Mode 4" Mappings, AuxScreenNumber=4 +//-------------------------------------------- +[MFD2_to_Mode_1] +IOMapping=ButtonAuxUpperCenter1 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Eng1 +Mode=ModeMFD2Quad + +[MFD2_to_Mode_2] +IOMapping=ButtonAuxUpperCenter3 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Eng2 +Mode=ModeMFD2Quad + +[MFD2_to_Mode_4] +IOMapping=ButtonAuxUpperCenter7 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Eng4 +Mode=ModeMFD2Quad + +[MFD2_Configure_Trigger_4] +IOMapping=ButtonAuxUpperCenter8 +Type=EventMapping +Subsystem=ERPPC +MessageID=ConfigureMappables +Mode=ModeMFD2Quad + +//-------------------------------------------- +// Aux 2 'Mode 1' mappings, AuxScreenNumber=9 +//-------------------------------------------- +[Aux_2_Mode_1_to_MFD2] +IOMapping=ButtonAuxUpperCenter8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Quad +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_Select_GeneratorA] +IOMapping=ButtonAuxUpperCenter1 +Type=EventMapping +Subsystem=Avionics +MessageID=SelectGeneratorA +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_Select_GeneratorB] +IOMapping=ButtonAuxUpperCenter2 +Type=EventMapping +Subsystem=Avionics +MessageID=SelectGeneratorB +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_Select_GeneratorC] +IOMapping=ButtonAuxUpperCenter3 +Type=EventMapping +Subsystem=Avionics +MessageID=SelectGeneratorC +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_Select_GeneratorD] +IOMapping=ButtonAuxUpperCenter4 +Type=EventMapping +Subsystem=Avionics +MessageID=SelectGeneratorD +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_ToggleGeneratorMode] +IOMapping=ButtonAuxUpperCenter6 +Type=EventMapping +Subsystem=Avionics +MessageID=ToggleGeneratorMode +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_ToggleCooling] +IOMapping=ButtonAuxUpperCenter7 +Type=EventMapping +Subsystem=Avionics +MessageID=ToggleCooling +Mode=ModeMFD2Eng1 + +//-------------------------------------------- +// Aux 2 'Mode 2' mappings, AuxScreenNumber=10 +//-------------------------------------------- +[Aux_2_Mode_2_to_MFD2] +IOMapping=ButtonAuxUpperCenter8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Quad +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_Select_GeneratorA] +IOMapping=ButtonAuxUpperCenter1 +Type=EventMapping +Subsystem=Myomers +MessageID=SelectGeneratorA +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_Select_GeneratorB] +IOMapping=ButtonAuxUpperCenter2 +Type=EventMapping +Subsystem=Myomers +MessageID=SelectGeneratorB +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_Select_GeneratorC] +IOMapping=ButtonAuxUpperCenter3 +Type=EventMapping +Subsystem=Myomers +MessageID=SelectGeneratorC +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_Select_GeneratorD] +IOMapping=ButtonAuxUpperCenter4 +Type=EventMapping +Subsystem=Myomers +MessageID=SelectGeneratorD +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_OPTION] +IOMapping=ButtonAuxUpperCenter5 +Type=EventMapping +Subsystem=Myomers +MessageID=ToggleSeekVoltage +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_ToggleGeneratorMode] +IOMapping=ButtonAuxUpperCenter6 +Type=EventMapping +Subsystem=Myomers +MessageID=ToggleGeneratorMode +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_ToggleCooling] +IOMapping=ButtonAuxUpperCenter7 +Type=EventMapping +Subsystem=Myomers +MessageID=ToggleCooling +Mode=ModeMFD2Eng2 + +//-------------------------------------------- +// Aux 3 'Mode 3' mappings, AuxScreenNumber=11 +//-------------------------------------------- +[Aux_2_Mode_4_to_MFD2] +IOMapping=ButtonAuxUpperCenter8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Quad +Mode=ModeMFD2Eng4 + +[Aux_2_Mode_4_Select_GeneratorA] +IOMapping=ButtonAuxUpperCenter1 +Type=EventMapping +Subsystem=ERPPC +MessageID=SelectGeneratorA +Mode=ModeMFD2Eng4 + +[Aux_2_Mode_4_Select_GeneratorB] +IOMapping=ButtonAuxUpperCenter2 +Type=EventMapping +Subsystem=ERPPC +MessageID=SelectGeneratorB +Mode=ModeMFD2Eng4 + +[Aux_2_Mode_4_Select_GeneratorC] +IOMapping=ButtonAuxUpperCenter3 +Type=EventMapping +Subsystem=ERPPC +MessageID=SelectGeneratorC +Mode=ModeMFD2Eng4 + +[Aux_2_Mode_4_Select_GeneratorD] +IOMapping=ButtonAuxUpperCenter4 +Type=EventMapping +Subsystem=ERPPC +MessageID=SelectGeneratorD +Mode=ModeMFD2Eng4 + +[Aux_2_Mode_4_OPTION] +IOMapping=ButtonAuxUpperCenter5 +Type=EventMapping +Subsystem=ERPPC +MessageID=ToggleSeekVoltage +Mode=ModeMFD2Eng4 + +[Aux_2_Mode_4_ToggleGeneratorMode] +IOMapping=ButtonAuxUpperCenter6 +Type=EventMapping +Subsystem=ERPPC +MessageID=ToggleGeneratorMode +Mode=ModeMFD2Eng4 + +[Aux_2_Mode_4_ToggleCooling] +IOMapping=ButtonAuxUpperCenter7 +Type=EventMapping +Subsystem=ERPPC +MessageID=ToggleCooling +Mode=ModeMFD2Eng4 + + +//----------------------------------------------------------------------- +// Aux 3 mappings +//----------------------------------------------------------------------- +//------------------------------------------ +// Aux 3 'Quad screen' mappings +//------------------------------------------ +[MFD3_to_Mode_1] +IOMapping=ButtonAuxLowerRight1 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Eng1 +Mode=ModeMFD3Quad + +[MFD3_Configure_Trigger_1] +IOMapping=ButtonAuxLowerRight2 +Type=EventMapping +Subsystem=SRM6_1 +MessageID=ConfigureMappables +Mode=ModeMFD3Quad + +[MFD3_to_Mode_2] +IOMapping=ButtonAuxLowerRight3 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Eng2 +Mode=ModeMFD3Quad + +[MFD3_Configure_Trigger_2] +IOMapping=ButtonAuxLowerRight4 +Type=EventMapping +Subsystem=AFC50 +MessageID=ConfigureMappables +Mode=ModeMFD3Quad + +[MFD3_to_Mode_3] +IOMapping=ButtonAuxLowerRight5 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Eng3 +Mode=ModeMFD3Quad + +[MFD3_Configure_Trigger_3] +IOMapping=ButtonAuxLowerRight6 +Type=EventMapping +Subsystem=SRM6_2 +MessageID=ConfigureMappables +Mode=ModeMFD3Quad + +[Aux_3_Mode_1_to_MFD3] +IOMapping=ButtonAuxLowerRight8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Quad +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_Select_GeneratorA] +IOMapping=ButtonAuxLowerRight1 +Type=EventMapping +Subsystem=SRM6_1 +MessageID=SelectGeneratorA +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_Select_GeneratorB] +IOMapping=ButtonAuxLowerRight2 +Type=EventMapping +Subsystem=SRM6_1 +MessageID=SelectGeneratorB +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_Select_GeneratorC] +IOMapping=ButtonAuxLowerRight3 +Type=EventMapping +Subsystem=SRM6_1 +MessageID=SelectGeneratorC +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_Select_GeneratorD] +IOMapping=ButtonAuxLowerRight4 +Type=EventMapping +Subsystem=SRM6_1 +MessageID=SelectGeneratorD +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_OPTION] +IOMapping=ButtonAuxLowerRight5 +Type=EventMapping +Subsystem=SRM6_1 +MessageID=EjectAmmo +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerRight6 +Type=EventMapping +Subsystem=SRM6_1 +MessageID=ToggleGeneratorMode +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_ToggleCooling] +IOMapping=ButtonAuxLowerRight7 +Type=EventMapping +Subsystem=SRM6_1 +MessageID=ToggleCooling +Mode=ModeMFD3Eng1 + +//-------------------------------------------- +// Aux 3 'Mode 2' mappings, AuxScreenNumber=10 +//-------------------------------------------- +[Aux_3_Mode_2_to_MFD3] +IOMapping=ButtonAuxLowerRight8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Quad +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_Select_GeneratorA] +IOMapping=ButtonAuxLowerRight1 +Type=EventMapping +Subsystem=AFC50 +MessageID=SelectGeneratorA +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_Select_GeneratorB] +IOMapping=ButtonAuxLowerRight2 +Type=EventMapping +Subsystem=AFC50 +MessageID=SelectGeneratorB +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_Select_GeneratorC] +IOMapping=ButtonAuxLowerRight3 +Type=EventMapping +Subsystem=AFC50 +MessageID=SelectGeneratorC +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_Select_GeneratorD] +IOMapping=ButtonAuxLowerRight4 +Type=EventMapping +Subsystem=AFC50 +MessageID=SelectGeneratorD +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_OPTION] +IOMapping=ButtonAuxLowerRight5 +Type=EventMapping +Subsystem=AFC50 +MessageID=EjectAmmo +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerRight6 +Type=EventMapping +Subsystem=AFC50 +MessageID=ToggleGeneratorMode +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_ToggleCooling] +IOMapping=ButtonAuxLowerRight7 +Type=EventMapping +Subsystem=AFC50 +MessageID=ToggleCooling +Mode=ModeMFD3Eng2 + +//-------------------------------------------- +// Aux 3 'Mode 3' mappings, AuxScreenNumber=11 +//-------------------------------------------- +[Aux_3_Mode_3_to_MFD3] +IOMapping=ButtonAuxLowerRight8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Quad +Mode=ModeMFD3Eng3 + +[Aux_3_Mode_3_Select_GeneratorA] +IOMapping=ButtonAuxLowerRight1 +Type=EventMapping +Subsystem=SRM6_2 +MessageID=SelectGeneratorA +Mode=ModeMFD3Eng3 + +[Aux_3_Mode_3_Select_GeneratorB] +IOMapping=ButtonAuxLowerRight2 +Type=EventMapping +Subsystem=SRM6_2 +MessageID=SelectGeneratorB +Mode=ModeMFD3Eng3 + +[Aux_3_Mode_3_Select_GeneratorC] +IOMapping=ButtonAuxLowerRight3 +Type=EventMapping +Subsystem=SRM6_2 +MessageID=SelectGeneratorC +Mode=ModeMFD3Eng3 + +[Aux_3_Mode_3_Select_GeneratorD] +IOMapping=ButtonAuxLowerRight4 +Type=EventMapping +Subsystem=SRM6_2 +MessageID=SelectGeneratorD +Mode=ModeMFD3Eng3 + +[Aux_3_Mode_3_OPTION] +IOMapping=ButtonAuxLowerRight5 +Type=EventMapping +Subsystem=SRM6_2 +MessageID=EjectAmmo +Mode=ModeMFD3Eng3 + +[Aux_3_Mode_3_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerRight6 +Type=EventMapping +Subsystem=SRM6_2 +MessageID=ToggleGeneratorMode +Mode=ModeMFD3Eng3 + +[Aux_3_Mode_3_ToggleCooling] +IOMapping=ButtonAuxLowerRight7 +Type=EventMapping +Subsystem=SRM6_2 +MessageID=ToggleCooling +Mode=ModeMFD3Eng3 + +//--------------------------------------------- +// Aux 3 'Mode 4' mappings, AuxScreenNumber=12 +//--------------------------------------------- +[ERPPC_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERPPC +AttributeID=TriggerState +Mode=ModeNonMapping +[AFC50_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=AFC50 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[LRM15_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=LRM15 +AttributeID=TriggerState +Mode=ModeNonMapping +[SRM6_1_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=SRM6_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[SRM6_2_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=SRM6_2 +AttributeID=TriggerState +Mode=ModeNonMapping diff --git a/CONTENT/BT/MODELS/MAD2THR.CTL b/CONTENT/BT/MODELS/MAD2THR.CTL new file mode 100644 index 0000000..8279b28 --- /dev/null +++ b/CONTENT/BT/MODELS/MAD2THR.CTL @@ -0,0 +1,63 @@ +[StickPosition_JP] +IOMapping=JoystickPhysical +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=StickPosition +Mode=ModeAlwaysActive + +[TorsoLeft_BJHL] +IOMapping=ButtonJoystickHatLeft +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoLeft +Mode=ModeAlwaysActive + +[TorsoRight_BJHR] +IOMapping=ButtonJoystickHatRight +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoRight +Mode=ModeAlwaysActive + +[ERPPC_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERPPC +AttributeID=TriggerState +Mode=ModeNonMapping +[AFC50_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=AFC50 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[LRM15_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=LRM15 +AttributeID=TriggerState +Mode=ModeNonMapping +[SRM6_1_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=SRM6_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[SRM6_2_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=SRM6_2 +AttributeID=TriggerState +Mode=ModeNonMapping diff --git a/CONTENT/BT/MODELS/MADCAT.DMG b/CONTENT/BT/MODELS/MADCAT.DMG new file mode 100644 index 0000000..b5541e4 --- /dev/null +++ b/CONTENT/BT/MODELS/MADCAT.DMG @@ -0,0 +1,190 @@ +// This file is intentionally empty and MUST be read-only! +[dz_dtorso] +ExplosionTable=maddmg.exp +DefaultEffectSiteName=siteedz_dtorso +WeaponDamagePoints=122 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Condenser5 2 0.500000 +CriticalSubsystem=GeneratorD 10 0.500000 +CriticalSubsystem=Avionics 5 0.200000 +CriticalSubsystem=Torso 15 0.333333 +[dz_hip] +ExplosionTable=maddmg.exp +DefaultEffectSiteName=siteedz_hip +WeaponDamagePoints=122 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Myomers 15 0.142857 +CriticalSubsystem=Gyroscope 15 0.333333 +CriticalSubsystem=Torso 15 0.333333 +[dz_larm] +ExplosionTable=maddmg.exp +DefaultEffectSiteName=siteedz_larm +WeaponDamagePoints=77 +VitalDamageZone=False +DescendOnDestruction=True +CriticalSubsystem=Condenser4 2 0.500000 +CriticalSubsystem=AmmoBinAFC100 10 0.500000 +[dz_ldleg] +ExplosionTable=maddmg.exp +DefaultEffectSiteName=siteedz_ldleg +WeaponDamagePoints=90 +VitalDamageZone=True +LegDamageZone=LeftLeg +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Myomers 15 0.142857 +[dz_ldoor] +ExplosionTable=maddmg.exp +DefaultEffectSiteName=siteedz_ldoor +WeaponDamagePoints=1 +VitalDamageZone=False +[dz_lfoot] +ExplosionTable=maddmg.exp +DefaultEffectSiteName=siteedz_lfoot +WeaponDamagePoints=81 +VitalDamageZone=True +LegDamageZone=LeftLeg +CriticalSubsystem=Myomers 15 0.142857 +[dz_lgun] +ExplosionTable=maddmg.exp +DefaultEffectSiteName=siteedz_lgun +WeaponDamagePoints=68 +VitalDamageZone=False +DescendOnDestruction=True +CriticalSubsystem=Condenser4 2 0.500000 +CriticalSubsystem=AmmoBinAFC100 10 0.500000 +CriticalSubsystem=AFC100 5 1.000000 +CriticalSubsystem=ERSLaser_1 30 1.000000 +[dz_ltorso] +ExplosionTable=maddmg.exp +DefaultEffectSiteName=siteedz_ltorso +WeaponDamagePoints=117 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Condenser1 2 0.500000 +CriticalSubsystem=GeneratorA 10 0.500000 +CriticalSubsystem=Avionics 5 0.200000 +CriticalSubsystem=AmmoBinLRM15_1 15 1.000000 +CriticalSubsystem=LRM15_1 15 1.000000 +[dz_luleg] +ExplosionTable=maddmg.exp +DefaultEffectSiteName=siteedz_luleg +WeaponDamagePoints=90 +VitalDamageZone=True +LegDamageZone=LeftLeg +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Myomers 15 0.142857 +[dz_rarm] +ExplosionTable=maddmg.exp +DefaultEffectSiteName=siteedz_rarm +WeaponDamagePoints=77 +VitalDamageZone=False +DescendOnDestruction=True +CriticalSubsystem=Condenser6 2 0.500000 +[dz_rdleg] +ExplosionTable=maddmg.exp +DefaultEffectSiteName=siteedz_rdleg +WeaponDamagePoints=90 +VitalDamageZone=True +LegDamageZone=RightLeg +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Myomers 15 0.142857 +[dz_rdoor] +ExplosionTable=maddmg.exp +DefaultEffectSiteName=siteedz_rdoor +WeaponDamagePoints=1 +VitalDamageZone=False +[dz_reardtorso] +ExplosionTable=maddmg.exp +DefaultEffectSiteName=siteedz_reardtorso +WeaponDamagePoints=81 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Reservoir 10 0.250000 +CriticalSubsystem=Condenser5 2 0.500000 +CriticalSubsystem=GeneratorD 10 0.500000 +CriticalSubsystem=Torso 15 0.333333 +[dz_rearltorso] +ExplosionTable=maddmg.exp +DefaultEffectSiteName=siteedz_rearltorso +WeaponDamagePoints=117 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Reservoir 10 0.250000 +CriticalSubsystem=Condenser1 2 0.500000 +CriticalSubsystem=GeneratorA 10 0.500000 +[dz_rearrtorso] +ExplosionTable=maddmg.exp +DefaultEffectSiteName=siteedz_rearrtorso +WeaponDamagePoints=117 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Reservoir 10 0.250000 +CriticalSubsystem=Condenser3 2 0.500000 +CriticalSubsystem=GeneratorC 10 0.500000 +[dz_rearutorso] +ExplosionTable=maddmg.exp +DefaultEffectSiteName=siteedz_rearutorso +WeaponDamagePoints=113 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Reservoir 10 0.250000 +CriticalSubsystem=Condenser2 2 0.500000 +CriticalSubsystem=GeneratorB 10 0.500000 +CriticalSubsystem=Gyroscope 30 0.333333 +[dz_rfoot] +ExplosionTable=maddmg.exp +DefaultEffectSiteName=siteedz_rfoot +WeaponDamagePoints=81 +VitalDamageZone=True +LegDamageZone=RightLeg +CriticalSubsystem=Myomers 15 0.142857 +[dz_rgun] +ExplosionTable=maddmg.exp +DefaultEffectSiteName=siteedz_rgun +WeaponDamagePoints=68 +VitalDamageZone=False +DescendOnDestruction=True +CriticalSubsystem=Condenser6 2 0.500000 +CriticalSubsystem=ERLLaser 25 1.000000 +CriticalSubsystem=ERSLaser_2 15 1.000000 +[dz_rtorso] +ExplosionTable=maddmg.exp +DefaultEffectSiteName=siteedz_rtorso +WeaponDamagePoints=117 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Condenser3 2 0.500000 +CriticalSubsystem=GeneratorC 10 0.500000 +CriticalSubsystem=Avionics 5 0.200000 +CriticalSubsystem=AmmoBinLRM15_2 15 1.000000 +CriticalSubsystem=LRM15_2 15 1.000000 +[dz_ruleg] +ExplosionTable=maddmg.exp +DefaultEffectSiteName=siteedz_ruleg +WeaponDamagePoints=90 +VitalDamageZone=True +LegDamageZone=RightLeg +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Myomers 15 0.142857 +[dz_searchlight] +ExplosionTable=maddmg.exp +DefaultEffectSiteName=siteedz_searchlight +WeaponDamagePoints=50 +VitalDamageZone=False +CriticalSubsystem=Avionics 5 0.200000 +CriticalSubsystem=HUD 15 0.500000 +CriticalSubsystem=Searchlight 45 1.000000 +CriticalSubsystem=ThermalSight 30 1.000000 +[dz_utorso] +ExplosionTable=maddmg.exp +DefaultEffectSiteName=siteedz_utorso +WeaponDamagePoints=185 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Condenser2 2 0.500000 +CriticalSubsystem=GeneratorB 10 0.500000 +CriticalSubsystem=Avionics 5 0.200000 +CriticalSubsystem=Gyroscope 30 0.333333 +CriticalSubsystem=HUD 15 0.500000 diff --git a/CONTENT/BT/MODELS/MADCAT.MOD b/CONTENT/BT/MODELS/MADCAT.MOD new file mode 100644 index 0000000..6544d3a --- /dev/null +++ b/CONTENT/BT/MODELS/MADCAT.MOD @@ -0,0 +1,131 @@ +[video] +skeleton=mad.skl +skeletona=max.skl +destroyed=madd.skl +//destroyeda=maxd.skl +dzm=madskin.dzm +dzma=maxskin.dzm + +[audio] +internal=madint.scp +external=madext.scp + +[collision] +name=mad_cv.sld + +[gauge] +image=thor_ga.gim + +[gaugeMissionReview] +pixelmap=mad_mr.pcc + +[gamedata] +class=MechClassID +MoverMass=75000.0 +MomentOfInertia=1.75 3.125 1.75 +PositiveLinearDragCoefficients=0.14 0.4 0.07 +NegativeLinearDragCoefficients=0.14 0.2 0.08 +AngularDragCoefficients=0.3 0.5 0.3 +FrictionCoefficient=0.1 +ElasticityCoefficient=0.2 +MinimumBounceSpeed=0.2 +MaxAcceleration=20 +AnimationPrefix=mad +Subsystems=madcat.sub +DamageZones=madcat.dmg +DamageLookupTable=maddmg.tbl +RelativeMechValue=1.0 +LookLeftAngle=50 +LookRightAngle=-50 +LookBackAngle=0 +LookFrontAngle=-15 +RunningTurnRate=40 +WalkingTurnRate=65 +DeathEffect=maddead +CameraOffset=0.0 15.0 30.0 +DeathSplashDamage=5 +DeathSplashRadius=50 +TimeDelay=0.3 + +MaxUnstableAcceleration=44.0 +UnstableAccelerationEffect=0.7 +UnstableGunTheEngineEffect=1.0 +UnstableSuperStopEffect=0.5 +UnstableHighVelocityEffect=0.4 +UnstableStopedTurnEffect=1.0 +SuperStopAcceleration=20.0 + +ThrottleAdjustment=0.8 + +UpdateTurnDegreeDiffrence=3 +UpdateTurnVelocityDiffrence=0.045 +UpdatePositionDiffrence=0.3 + +ShadowJointName=jointshadow + + +[ControlMappings] +Thrustmaster=madthr.ctl +L4=madl4.ctl + +[animations] +animationtransition=madswr.ani +animation=madwwl.ani +animation=madwwr.ani +animation=madwsr.ani +animation=madwsl.ani +animationtransition=madwrl.ani +animationtransition=madwrr.ani +animation=madrrl.ani +animation=madrrr.ani +animation=madrwl.ani +animation=madrwr.ani +animation=madbmp.ani +animation=madbbl.ani +animation=madbbr.ani +animation=madbsl.ani +animation=madbsr.ani +animationtransition=madsbl.ani +animationtransition=madsbr.ani + +animationtransition=madswri.ani +animation=madwwli.ani +animation=madwwri.ani +animation=madwsri.ani +animation=madwsli.ani +animationtransition=madwrli.ani +animationtransition=madwrri.ani +animation=madrrli.ani +animation=madrrri.ani +animation=madrwli.ani +animation=madrwri.ani +animation=madbmpi.ani +animation=madbbli.ani +animation=madbbri.ani +animation=madbsli.ani +animation=madbsri.ani +animationtransition=madsbli.ani +animationtransition=madsbri.ani + +animation=madggl.ani +animation=madggr.ani +animation=madgsl.ani +animation=madgsr.ani +animationtransition=madwgl.ani +animationtransition=madwgr.ani + +animation=madggli.ani +animation=madggri.ani +animation=madgsli.ani +animation=madgsri.ani +animationtransition=madwgli.ani +animationtransition=madwgri.ani + +animation=madsqu.ani +animation=madsqd.ani +animation=madsqui.ani +animation=madsqdi.ani + +animation=madtrn.ani +animation=madtrni.ani + diff --git a/CONTENT/BT/MODELS/MADCAT.SUB b/CONTENT/BT/MODELS/MADCAT.SUB new file mode 100644 index 0000000..f296b96 --- /dev/null +++ b/CONTENT/BT/MODELS/MADCAT.SUB @@ -0,0 +1,203 @@ +[HeatSink] +Type=HeatSinkClassID +Include=heatsnk.sub +HeatSinkCount=14 +SubsystemFlags=DontReplicateFlag + +[Reservoir] +Type=ReservoirClassID +Include=reserve.sub +HeatSink=HeatSink +SegmentPageName=siteeyepoint + +[Condenser1] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser2] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser3] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser4] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser5] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser6] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[GeneratorA] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser1 +SubsystemFlags=DontReplicateFlag + +[GeneratorB] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser2 +SubsystemFlags=DontReplicateFlag + +[GeneratorC] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser3 +SubsystemFlags=DontReplicateFlag + +[GeneratorD] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser5 +SubsystemFlags=DontReplicateFlag + +[Avionics] +Type=SensorClassID +Include=sensor.sub +HeatSink=Condenser2 +VoltageSource=GeneratorD +AuxScreenNumber=5 +SubsystemFlags=DontReplicateFlag + +AuxScreenPlacement=2 +[Myomers] +Type=MyomersClassID +Include=myomers.sub +HeatSink=Condenser5 +VoltageSource=GeneratorD +AuxScreenNumber=6 +SubsystemFlags=DontReplicateFlag + +AuxScreenPlacement=0 +[Gyroscope] +Type=GyroscopeClassID +Include=gyro.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag + +[Torso] +Type=TorsoClassID +Include=torso.sub +WatchedSubsystem=Myomers + +HorizontalRotationPerSecond=50 +VerticalRotationPerSecond=30 +HorizontalLimitRight=-140 +HorizontalLimitLeft=140 +[HUD] +Type=HUDClassID +Include=hud.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag + +[Searchlight] +Type=SearchlightClassID +Include=srchlite.sub +WatchedSubsystem=Avionics +SegmentPageName=sitelight + +[ThermalSight] +Type=ThermalSightClassID +Include=Thermal.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag +[AmmoBinAFC100] +Type=AmmoBinClassID +Include=amafc100.sub +WatchedSubsystem=AFC100 +AmmoCount=20 +[AFC100] +AmmoBin=AmmoBinAFC100 +Type=ProjectileWeaponClassID +Include=afc100.sub +SegmentPageName=sitelgunport +PipPosition=1 +VoltageSource=GeneratorA +HeatSink=Condenser4 +AuxScreenNumber=1 +AuxScreenPlacement=4 +[ERLLaser] +Type=EmitterClassID +Include=erllaser.sub +SegmentPageName=siterugunport +PipPosition=1 +VoltageSource=GeneratorC +HeatSink=Condenser6 +AuxScreenNumber=10 +AuxScreenPlacement=6 +[ERSLaser_1] +Type=EmitterClassID +Include=erslaser.sub +SegmentPageName=sitelgunport +PipPosition=1 +VoltageSource=GeneratorA +HeatSink=Condenser4 +AuxScreenNumber=3 +AuxScreenPlacement=4 +[ERSLaser_2] +Type=EmitterClassID +Include=erslaser.sub +SegmentPageName=siterdgunport +PipPosition=2 +VoltageSource=GeneratorC +HeatSink=Condenser6 +AuxScreenNumber=12 +AuxScreenPlacement=6 +[AmmoBinLRM15_1] +Type=AmmoBinClassID +Include=ammlrm15.sub +WatchedSubsystem=LRM15_1 +AmmoCount=16 +[LRM15_1] +AmmoBin=AmmoBinLRM15_1 +Type=MissileLauncherClassID +Include=lrm15.sub +SegmentPageName=sitelmissleport +PipPosition=1 +VoltageSource=GeneratorB +HeatSink=Condenser1 +AuxScreenNumber=2 +AuxScreenPlacement=1 +[AmmoBinLRM15_2] +Type=AmmoBinClassID +Include=ammlrm15.sub +WatchedSubsystem=LRM15_2 +AmmoCount=16 +[LRM15_2] +AmmoBin=AmmoBinLRM15_2 +Type=MissileLauncherClassID +Include=lrm15.sub +SegmentPageName=sitermissleport +PipPosition=2 +VoltageSource=GeneratorB +HeatSink=Condenser3 +AuxScreenNumber=9 +AuxScreenPlacement=3 +[MessageManager] +Type=SubsystemMessageManagerClassID +ExplosionModelFile=majhit 1.0 +TerrainHitExplosion=gndhit +RendererCompensateTime=0.3 +[MechTech] +Type=MechTechClassID +AlarmModel=mechalrm +SubsystemFlags=DontReplicateFlag diff --git a/CONTENT/BT/MODELS/MADDEAD.MOD b/CONTENT/BT/MODELS/MADDEAD.MOD new file mode 100644 index 0000000..83959ea --- /dev/null +++ b/CONTENT/BT/MODELS/MADDEAD.MOD @@ -0,0 +1,9 @@ +[video] +object=104 3 4 5 1007 15 1001 + +[audio] +external=brnext.scp + +[gamedata] +class=ExplosionClassID +ExplosionDuration=9.0 diff --git a/CONTENT/BT/MODELS/MADDMG.EXP b/CONTENT/BT/MODELS/MADDMG.EXP new file mode 100644 index 0000000..c9b1598 --- /dev/null +++ b/CONTENT/BT/MODELS/MADDMG.EXP @@ -0,0 +1,28 @@ +[OneDamage] +ExplosionModelFile=dam1hit +DamageLevel=0.2 +TimeDelay=0.0 + +[TwoDamage] +ExplosionModelFile=dam2hit +DamageLevel=0.4 +TimeDelay=0.0 + +[ThreeDamage] +ExplosionModelFile=dam3hit +DamageLevel=0.6 +TimeDelay=0.0 + +[FourDamage] +ExplosionModelFile=dam4hit +DamageLevel=0.8 +TimeDelay=0.0 + +[DestroyedExplosion] +ExplosionModelFile=desthit +GraphicState=Destroyed + +[GoneExplosion] +ExplosionModelFile=desthit +GraphicState=Gone + diff --git a/CONTENT/BT/MODELS/MADL4.CTL b/CONTENT/BT/MODELS/MADL4.CTL new file mode 100644 index 0000000..cd36cc6 --- /dev/null +++ b/CONTENT/BT/MODELS/MADL4.CTL @@ -0,0 +1,809 @@ +[StickPosition_JP] +//----------------------------------------------------------------------- +// Joystick +//----------------------------------------------------------------------- +IOMapping=JoystickPhysical +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=StickPosition +Mode=ModeAlwaysActive + +[Throttle_ST] +//----------------------------------------------------------------------- +// Throttle +//----------------------------------------------------------------------- +IOMapping=ScalarThrottle +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=ThrottlePosition +Mode=ModeAlwaysActive + +//----------------------------------------------------------------------- +// Misc. switches +//----------------------------------------------------------------------- +[ReverseThrust_BT1] +IOMapping=ButtonThrottle1 +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=ReverseThrust +Mode=ModeAlwaysActive + +[TorsoCenter_BJHU] +IOMapping=ButtonJoystickHatUp +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoCenter +Mode=ModeAlwaysActive + +[LookLeft_BJHL] +IOMapping=ButtonJoystickHatLeft +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=LookLeft +Mode=ModeAlwaysActive + +[LookRight_BJHR] +IOMapping=ButtonJoystickHatRight +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=LookRight +Mode=ModeAlwaysActive + +[LookBack_BJHD] +IOMapping=ButtonJoystickHatDown +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=LookBehind +Mode=ModeAlwaysActive + +//----------------------------------------------------------------------- +// Secondary mappings +//----------------------------------------------------------------------- +[Button_Sec_1] // Zoom radar in (magnify image) +IOMapping=ButtonSecondary1 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=ZoomIn +Mode=ModeAlwaysActive + +[Button_Sec_2] // Zoom radar out (reduce image) +IOMapping=ButtonSecondary2 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=ZoomOut +Mode=ModeAlwaysActive + +// +// 'Heat vision' mapped to secondary +// SGM 1/6/97 + +[Button_Sec_3] // Toggle heat vision +IOMapping=ButtonSecondary3 +Type=EventMapping +Subsystem=ThermalSight +MessageID=ToggleLamp +Mode=ModeAlwaysActive + +// +// 'Duck' remapped to real message and location. +// GDU 7/9/96 + +[Button_Sec_4] // Request crouch position +IOMapping=ButtonSecondary4 +Type=EventMapping +MessageID=DuckRequest +Mode=ModeAlwaysActive + +[Button_Sec_5] // Toggle searchlight +IOMapping=ButtonSecondary5 +Type=EventMapping +Subsystem=Searchlight +MessageID=ToggleLamp +Mode=ModeAlwaysActive + +[Button_Sec_6] // Cycle through damage display modes +IOMapping=ButtonSecondary6 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=CycleDisplayMode +Mode=ModeAlwaysActive + +[Button_Sec_7] // Cycle through control modes +IOMapping=ButtonSecondary7 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=CycleControlMode +Mode=ModeAlwaysActive + +// ButtonSecondary8 presently unused + +[Button_Sec_9] // Toggle generator 'a' +IOMapping=ButtonSecondary9 +Type=EventMapping +Subsystem=GeneratorA +MessageID=ToggleGeneratorOnOff +Mode=ModeAlwaysActive + +[Button_Sec_10] // Toggle generator 'b' +IOMapping=ButtonSecondary10 +Type=EventMapping +Subsystem=GeneratorB +MessageID=ToggleGeneratorOnOff +Mode=ModeAlwaysActive + +[Button_Sec_11] // Toggle generator 'c' +IOMapping=ButtonSecondary11 +Type=EventMapping +Subsystem=GeneratorC +MessageID=ToggleGeneratorOnOff +Mode=ModeAlwaysActive + +[Button_Sec_12] // Toggle generator 'd' +IOMapping=ButtonSecondary12 +Type=EventMapping +Subsystem=GeneratorD +MessageID=ToggleGeneratorOnOff +Mode=ModeAlwaysActive + +//----------------------------------------- +// Heat Management Screen Mappings +//----------------------------------------- +[Condenser1_Button] +IOMapping=ButtonAuxUpperLeft1 +Type=EventMapping +Subsystem=Condenser1 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Condenser2_Button] +IOMapping=ButtonAuxUpperLeft2 +Type=EventMapping +Subsystem=Condenser2 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Condenser3_Button] +IOMapping=ButtonAuxUpperLeft3 +Type=EventMapping +Subsystem=Condenser3 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Reservoir_Button] +IOMapping=ButtonAuxUpperLeft4 +Type=EventMapping +Subsystem=Reservoir +MessageID=InjectCoolant +Mode=ModeAlwaysActive + +[Condenser4_Button] +IOMapping=ButtonAuxUpperLeft5 +Type=EventMapping +Subsystem=Condenser4 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Condenser5_Button] +IOMapping=ButtonAuxUpperLeft6 +Type=EventMapping +Subsystem=Condenser5 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Condenser6_Button] +IOMapping=ButtonAuxUpperLeft7 +Type=EventMapping +Subsystem=Condenser6 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Reduce_Button] +IOMapping=ButtonAuxUpperLeft8 +Type=EventMapping +MessageID=BalanceCoolant +Mode=ModeAlwaysActive + +//----------------------------------------------------------------------- +// Aux 1 mappings +//----------------------------------------------------------------------- +//------------------------------------------ +// Aux 1 'Quad screen' mappings +//------------------------------------------ +[MFD1_to_Mode_1] // To mode 1 +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Eng1 +Mode=ModeMFD1Quad + +[MFD1_Configure_Trigger_1] // Configure +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Subsystem=AFC100 +MessageID=ConfigureMappables +Mode=ModeMFD1Quad + +[MFD1_to_Mode_2] // To mode 2 +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Eng2 +Mode=ModeMFD1Quad + +[MFD1_Configure_Trigger_2] // Configure +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Subsystem=LRM15_1 +MessageID=ConfigureMappables +Mode=ModeMFD1Quad + +[MFD1_to_Mode_3] // To mode 3 +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Eng3 +Mode=ModeMFD1Quad + +[MFD1_Configure_Trigger_3] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Subsystem=ERSLaser_1 +MessageID=ConfigureMappables +Mode=ModeMFD1Quad + +[Aux_1_Mode_1_to_MFD1] +IOMapping=ButtonAuxLowerLeft8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Quad +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_Select_GeneratorA] +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Subsystem=AFC100 +MessageID=SelectGeneratorA +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_Select_GeneratorB] +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Subsystem=AFC100 +MessageID=SelectGeneratorB +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_Select_GeneratorC] +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Subsystem=AFC100 +MessageID=SelectGeneratorC +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_Select_GeneratorD] +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Subsystem=AFC100 +MessageID=SelectGeneratorD +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_OPTION] +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Subsystem=AFC100 +MessageID=EjectAmmo +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Subsystem=AFC100 +MessageID=ToggleGeneratorMode +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_ToggleCooling] +IOMapping=ButtonAuxLowerLeft7 +Type=EventMapping +Subsystem=AFC100 +MessageID=ToggleCooling +Mode=ModeMFD1Eng1 + +//-------------------------------------------- +// Aux 1 'Mode 2' mappings, AuxScreenNumber=2 +//-------------------------------------------- +[Aux_1_Mode_2_to_MFD1] +IOMapping=ButtonAuxLowerLeft8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Quad +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_Select_GeneratorA] +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Subsystem=LRM15_1 +MessageID=SelectGeneratorA +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_Select_GeneratorB] +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Subsystem=LRM15_1 +MessageID=SelectGeneratorB +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_Select_GeneratorC] +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Subsystem=LRM15_1 +MessageID=SelectGeneratorC +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_Select_GeneratorD] +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Subsystem=LRM15_1 +MessageID=SelectGeneratorD +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_OPTION] +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Subsystem=LRM15_1 +MessageID=EjectAmmo +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Subsystem=LRM15_1 +MessageID=ToggleGeneratorMode +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_ToggleCooling] +IOMapping=ButtonAuxLowerLeft7 +Type=EventMapping +Subsystem=LRM15_1 +MessageID=ToggleCooling +Mode=ModeMFD1Eng2 + +//--------------------------------------------- +// Aux 1 'Mode 3' mappings, AuxScreenNumber=3 +//--------------------------------------------- +[Aux_1_Mode_3_to_MFD1] +IOMapping=ButtonAuxLowerLeft8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Quad +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_Select_GeneratorA] +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Subsystem=ERSLaser_1 +MessageID=SelectGeneratorA +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_Select_GeneratorB] +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Subsystem=ERSLaser_1 +MessageID=SelectGeneratorB +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_Select_GeneratorC] +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Subsystem=ERSLaser_1 +MessageID=SelectGeneratorC +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_Select_GeneratorD] +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Subsystem=ERSLaser_1 +MessageID=SelectGeneratorD +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_OPTION] +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Subsystem=ERSLaser_1 +MessageID=ToggleSeekVoltage +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Subsystem=ERSLaser_1 +MessageID=ToggleGeneratorMode +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_ToggleCooling] +IOMapping=ButtonAuxLowerLeft7 +Type=EventMapping +Subsystem=ERSLaser_1 +MessageID=ToggleCooling +Mode=ModeMFD1Eng3 + +//-------------------------------------------- +// Aux 1 "Mode 4" Mappings, AuxScreenNumber=4 +//-------------------------------------------- +[MFD2_to_Mode_1] +IOMapping=ButtonAuxUpperCenter1 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Eng1 +Mode=ModeMFD2Quad + +[MFD2_to_Mode_2] +IOMapping=ButtonAuxUpperCenter3 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Eng2 +Mode=ModeMFD2Quad + +[Aux_2_Mode_1_to_MFD2] +IOMapping=ButtonAuxUpperCenter8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Quad +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_Select_GeneratorA] +IOMapping=ButtonAuxUpperCenter1 +Type=EventMapping +Subsystem=Avionics +MessageID=SelectGeneratorA +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_Select_GeneratorB] +IOMapping=ButtonAuxUpperCenter2 +Type=EventMapping +Subsystem=Avionics +MessageID=SelectGeneratorB +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_Select_GeneratorC] +IOMapping=ButtonAuxUpperCenter3 +Type=EventMapping +Subsystem=Avionics +MessageID=SelectGeneratorC +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_Select_GeneratorD] +IOMapping=ButtonAuxUpperCenter4 +Type=EventMapping +Subsystem=Avionics +MessageID=SelectGeneratorD +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_ToggleGeneratorMode] +IOMapping=ButtonAuxUpperCenter6 +Type=EventMapping +Subsystem=Avionics +MessageID=ToggleGeneratorMode +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_ToggleCooling] +IOMapping=ButtonAuxUpperCenter7 +Type=EventMapping +Subsystem=Avionics +MessageID=ToggleCooling +Mode=ModeMFD2Eng1 + +//-------------------------------------------- +// Aux 2 'Mode 2' mappings, AuxScreenNumber=10 +//-------------------------------------------- +[Aux_2_Mode_2_to_MFD2] +IOMapping=ButtonAuxUpperCenter8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Quad +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_Select_GeneratorA] +IOMapping=ButtonAuxUpperCenter1 +Type=EventMapping +Subsystem=Myomers +MessageID=SelectGeneratorA +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_Select_GeneratorB] +IOMapping=ButtonAuxUpperCenter2 +Type=EventMapping +Subsystem=Myomers +MessageID=SelectGeneratorB +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_Select_GeneratorC] +IOMapping=ButtonAuxUpperCenter3 +Type=EventMapping +Subsystem=Myomers +MessageID=SelectGeneratorC +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_Select_GeneratorD] +IOMapping=ButtonAuxUpperCenter4 +Type=EventMapping +Subsystem=Myomers +MessageID=SelectGeneratorD +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_OPTION] +IOMapping=ButtonAuxUpperCenter5 +Type=EventMapping +Subsystem=Myomers +MessageID=ToggleSeekVoltage +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_ToggleGeneratorMode] +IOMapping=ButtonAuxUpperCenter6 +Type=EventMapping +Subsystem=Myomers +MessageID=ToggleGeneratorMode +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_ToggleCooling] +IOMapping=ButtonAuxUpperCenter7 +Type=EventMapping +Subsystem=Myomers +MessageID=ToggleCooling +Mode=ModeMFD2Eng2 + +//-------------------------------------------- +// Aux 3 'Mode 3' mappings, AuxScreenNumber=11 +//-------------------------------------------- +[MFD3_to_Mode_1] +IOMapping=ButtonAuxLowerRight1 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Eng1 +Mode=ModeMFD3Quad + +[MFD3_Configure_Trigger_1] +IOMapping=ButtonAuxLowerRight2 +Type=EventMapping +Subsystem=LRM15_2 +MessageID=ConfigureMappables +Mode=ModeMFD3Quad + +[MFD3_to_Mode_2] +IOMapping=ButtonAuxLowerRight3 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Eng2 +Mode=ModeMFD3Quad + +[MFD3_Configure_Trigger_2] +IOMapping=ButtonAuxLowerRight4 +Type=EventMapping +Subsystem=ERLLaser +MessageID=ConfigureMappables +Mode=ModeMFD3Quad + +[MFD3_to_Mode_4] +IOMapping=ButtonAuxLowerRight7 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Eng4 +Mode=ModeMFD3Quad + +[MFD3_Configure_Trigger_4] +IOMapping=ButtonAuxLowerRight8 +Type=EventMapping +Subsystem=ERSLaser_2 +MessageID=ConfigureMappables +Mode=ModeMFD3Quad + +//-------------------------------------------- +// Aux 3 'Mode 1' mappings, AuxScreenNumber=9 +//-------------------------------------------- +[Aux_3_Mode_1_to_MFD3] +IOMapping=ButtonAuxLowerRight8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Quad +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_Select_GeneratorA] +IOMapping=ButtonAuxLowerRight1 +Type=EventMapping +Subsystem=LRM15_2 +MessageID=SelectGeneratorA +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_Select_GeneratorB] +IOMapping=ButtonAuxLowerRight2 +Type=EventMapping +Subsystem=LRM15_2 +MessageID=SelectGeneratorB +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_Select_GeneratorC] +IOMapping=ButtonAuxLowerRight3 +Type=EventMapping +Subsystem=LRM15_2 +MessageID=SelectGeneratorC +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_Select_GeneratorD] +IOMapping=ButtonAuxLowerRight4 +Type=EventMapping +Subsystem=LRM15_2 +MessageID=SelectGeneratorD +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_OPTION] +IOMapping=ButtonAuxLowerRight5 +Type=EventMapping +Subsystem=LRM15_2 +MessageID=EjectAmmo +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerRight6 +Type=EventMapping +Subsystem=LRM15_2 +MessageID=ToggleGeneratorMode +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_ToggleCooling] +IOMapping=ButtonAuxLowerRight7 +Type=EventMapping +Subsystem=LRM15_2 +MessageID=ToggleCooling +Mode=ModeMFD3Eng1 + +//-------------------------------------------- +// Aux 3 'Mode 2' mappings, AuxScreenNumber=10 +//-------------------------------------------- +[Aux_3_Mode_2_to_MFD3] +IOMapping=ButtonAuxLowerRight8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Quad +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_Select_GeneratorA] +IOMapping=ButtonAuxLowerRight1 +Type=EventMapping +Subsystem=ERLLaser +MessageID=SelectGeneratorA +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_Select_GeneratorB] +IOMapping=ButtonAuxLowerRight2 +Type=EventMapping +Subsystem=ERLLaser +MessageID=SelectGeneratorB +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_Select_GeneratorC] +IOMapping=ButtonAuxLowerRight3 +Type=EventMapping +Subsystem=ERLLaser +MessageID=SelectGeneratorC +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_Select_GeneratorD] +IOMapping=ButtonAuxLowerRight4 +Type=EventMapping +Subsystem=ERLLaser +MessageID=SelectGeneratorD +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_OPTION] +IOMapping=ButtonAuxLowerRight5 +Type=EventMapping +Subsystem=ERLLaser +MessageID=ToggleSeekVoltage +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerRight6 +Type=EventMapping +Subsystem=ERLLaser +MessageID=ToggleGeneratorMode +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_ToggleCooling] +IOMapping=ButtonAuxLowerRight7 +Type=EventMapping +Subsystem=ERLLaser +MessageID=ToggleCooling +Mode=ModeMFD3Eng2 + +//-------------------------------------------- +// Aux 3 'Mode 3' mappings, AuxScreenNumber=11 +//-------------------------------------------- +[Aux_3_Mode_4_to_MFD3] +IOMapping=ButtonAuxLowerRight8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Quad +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_Select_GeneratorA] +IOMapping=ButtonAuxLowerRight1 +Type=EventMapping +Subsystem=ERSLaser_2 +MessageID=SelectGeneratorA +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_Select_GeneratorB] +IOMapping=ButtonAuxLowerRight2 +Type=EventMapping +Subsystem=ERSLaser_2 +MessageID=SelectGeneratorB +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_Select_GeneratorC] +IOMapping=ButtonAuxLowerRight3 +Type=EventMapping +Subsystem=ERSLaser_2 +MessageID=SelectGeneratorC +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_Select_GeneratorD] +IOMapping=ButtonAuxLowerRight4 +Type=EventMapping +Subsystem=ERSLaser_2 +MessageID=SelectGeneratorD +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_OPTION] +IOMapping=ButtonAuxLowerRight5 +Type=EventMapping +Subsystem=ERSLaser_2 +MessageID=ToggleSeekVoltage +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerRight6 +Type=EventMapping +Subsystem=ERSLaser_2 +MessageID=ToggleGeneratorMode +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_ToggleCooling] +IOMapping=ButtonAuxLowerRight7 +Type=EventMapping +Subsystem=ERSLaser_2 +MessageID=ToggleCooling +Mode=ModeMFD3Eng4 +[AFC100_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=AFC100 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERLLaser_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERLLaser +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[LRM15_1_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=LRM15_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[LRM15_2_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=LRM15_2 +AttributeID=TriggerState +Mode=ModeNonMapping diff --git a/CONTENT/BT/MODELS/MADTHR.CTL b/CONTENT/BT/MODELS/MADTHR.CTL new file mode 100644 index 0000000..4958c22 --- /dev/null +++ b/CONTENT/BT/MODELS/MADTHR.CTL @@ -0,0 +1,57 @@ +[StickPosition_JP] +IOMapping=JoystickPhysical +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=StickPosition +Mode=ModeAlwaysActive + +[TorsoLeft_BJHL] +IOMapping=ButtonJoystickHatLeft +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoLeft +Mode=ModeAlwaysActive + +[TorsoRight_BJHR] +IOMapping=ButtonJoystickHatRight +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoRight +Mode=ModeAlwaysActive + +[AFC100_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=AFC100 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERLLaser_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERLLaser +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[LRM15_1_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=LRM15_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[LRM15_2_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=LRM15_2 +AttributeID=TriggerState +Mode=ModeNonMapping diff --git a/CONTENT/BT/MODELS/MAJHIT.MOD b/CONTENT/BT/MODELS/MAJHIT.MOD new file mode 100644 index 0000000..f39f276 --- /dev/null +++ b/CONTENT/BT/MODELS/MAJHIT.MOD @@ -0,0 +1,9 @@ +[video] +object=1003 + +[audio] +external=medexp.scp + +[gamedata] +class=ExplosionClassID +ExplosionDuration=3.0 diff --git a/CONTENT/BT/MODELS/MECHALRM.MOD b/CONTENT/BT/MODELS/MECHALRM.MOD new file mode 100644 index 0000000..7636b10 --- /dev/null +++ b/CONTENT/BT/MODELS/MECHALRM.MOD @@ -0,0 +1,25 @@ +[gaugeAlarm] + +Destroyed=gotoEngineering +Destroyed=engCooling +Destroyed=engBusMode +// I have no idea what to do for 'destroyed'. + +//Damaged +// I have no idea what to do for 'damaged'. + +CoolantLeaking=gotoEngineering +CoolantLeaking=engCooling + +//Overheating +// I have no idea what to do for 'overheating'. + +ammoBurning=gotoEngineering +ammoBurning=engEject + +Jammed=gotoEngineering +Jammed=engEject + +BadPower=gotoEngineering +BadPower=engBusMode + diff --git a/CONTENT/BT/MODELS/MECHDEAD.MOD b/CONTENT/BT/MODELS/MECHDEAD.MOD new file mode 100644 index 0000000..9cfd097 --- /dev/null +++ b/CONTENT/BT/MODELS/MECHDEAD.MOD @@ -0,0 +1,10 @@ +[video] +object=102 + +[audio] +external=brnext.scp + +[gamedata] +class=ExplosionClassID +// WARNING Audio Effects require ExplosionDuration >= 8.0 secs +ExplosionDuration=8.0 diff --git a/CONTENT/BT/MODELS/MECHMOVR.MOD b/CONTENT/BT/MODELS/MECHMOVR.MOD new file mode 100644 index 0000000..77b69f9 --- /dev/null +++ b/CONTENT/BT/MODELS/MECHMOVR.MOD @@ -0,0 +1,17 @@ +[video] +object=MECHMOVR.bgf mechmovs.bgf +rubble=MECHMD.bgf + +[collision] +name=MECHMOVR.sld + +[gauge] +image=mechmovr.gim + +[gamedata] +class=CulturalIconClassID +DamageZones=trk.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=trkdead +TimeDelay=0.5 +CrunchExplosionModelFile=stephit diff --git a/CONTENT/BT/MODELS/MED.DMG b/CONTENT/BT/MODELS/MED.DMG new file mode 100644 index 0000000..8405f4a --- /dev/null +++ b/CONTENT/BT/MODELS/MED.DMG @@ -0,0 +1,3 @@ +[default] +WeaponDamagePoints=1 +VitalDamageZone=True diff --git a/CONTENT/BT/MODELS/MEDDEAD.MOD b/CONTENT/BT/MODELS/MEDDEAD.MOD new file mode 100644 index 0000000..ef5a6db --- /dev/null +++ b/CONTENT/BT/MODELS/MEDDEAD.MOD @@ -0,0 +1,10 @@ +[video] +object=1018 1016 + +[audio] +external=mbnexp.scp + +[gamedata] +class=ExplosionClassID +// WARNING Audio requires ExplosionDuration >= 12.0 +ExplosionDuration=12.0 diff --git a/CONTENT/BT/MODELS/MGHIT.MOD b/CONTENT/BT/MODELS/MGHIT.MOD new file mode 100644 index 0000000..052f10e --- /dev/null +++ b/CONTENT/BT/MODELS/MGHIT.MOD @@ -0,0 +1,10 @@ +[video] +object=7 11 + +[audio] +external=prjexp.scp + +[gamedata] +class=ExplosionClassID +ExplosionResourceTable=CanonExplosionResourceTable +ExplosionDuration=3.0 diff --git a/CONTENT/BT/MODELS/MGHITI.MOD b/CONTENT/BT/MODELS/MGHITI.MOD new file mode 100644 index 0000000..288e97a --- /dev/null +++ b/CONTENT/BT/MODELS/MGHITI.MOD @@ -0,0 +1,9 @@ +[video] +object=7 9 + +[audio] +external=prjexpi.scp + +[gamedata] +class=ExplosionClassID +ExplosionDuration=3.0 \ No newline at end of file diff --git a/CONTENT/BT/MODELS/MINHIT.MOD b/CONTENT/BT/MODELS/MINHIT.MOD new file mode 100644 index 0000000..c5db924 --- /dev/null +++ b/CONTENT/BT/MODELS/MINHIT.MOD @@ -0,0 +1,9 @@ +[video] +object=1002 + +[audio] +external=smlexp.scp + +[gamedata] +class=ExplosionClassID +ExplosionDuration=3.0 diff --git a/CONTENT/BT/MODELS/MLASER.SUB b/CONTENT/BT/MODELS/MLASER.SUB new file mode 100644 index 0000000..55b1c6b --- /dev/null +++ b/CONTENT/BT/MODELS/MLASER.SUB @@ -0,0 +1,35 @@ +[Emitter] +Type=EmitterClassID +StartingTemperature=77.0 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +ThermalConductance=4.74e5 +ThermalMass=3.16e4 +WeaponDamagePoints=2.0 +HeatSink=None +VoltageSource=None +ExplosionModelFile=lzrhit +DamageAmount=2.5 +DamageType=LaserDamage +WeaponRange=350.0 +RechargeRate=2.0 +DischargeTime=0.2 +VitalSubsystem=False +AmmoModelFile=None +VideoObjectName=mlaser.bgf +GraphicLength=2000 +HeatCostToFire=2.0 +ThermalResistivityCoefficient=0.0024 +AuxScreenNumber=0 +AuxScreenLabel=qmlas.pcc +EngScreenLabel=emlas.pcc +SeekVoltage=0.6 +SeekVoltage=0.7 +SeekVoltage=0.8 +SeekVoltage=0.99 +SeekVoltageRecommendedIndex=2 +PipPosition=1 +PipColor=1.0 0.0 0.0 +PipExtendedRange=False +StartTime=1.0 +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT/MODELS/MSL.DMG b/CONTENT/BT/MODELS/MSL.DMG new file mode 100644 index 0000000..ba47c42 --- /dev/null +++ b/CONTENT/BT/MODELS/MSL.DMG @@ -0,0 +1,3 @@ +[default] +WeaponDamagePoints=30 +VitalDamageZone=True diff --git a/CONTENT/BT/MODELS/MSL.MOD b/CONTENT/BT/MODELS/MSL.MOD new file mode 100644 index 0000000..8e6db38 --- /dev/null +++ b/CONTENT/BT/MODELS/MSL.MOD @@ -0,0 +1,16 @@ +[video] +; +; msl.mod - Missile +; +object=msl.bgf msl_FR.bgf + +[collision] +name=msl_cv.sld + +[gamedata] +class=CulturalIconClassID +DamageZones=msl.dmg +StoppingCollisionVolume=1 +ExplosionModelFile=msldead +TimeDelay=0.5 +//CrunchExplosionModelFile=stephit diff --git a/CONTENT/BT/MODELS/MSLBASE.MOD b/CONTENT/BT/MODELS/MSLBASE.MOD new file mode 100644 index 0000000..1af25c9 --- /dev/null +++ b/CONTENT/BT/MODELS/MSLBASE.MOD @@ -0,0 +1,8 @@ +[video] +object=mslbase.bgf + +[collision] +name=mslbs_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/MSLDEAD.MOD b/CONTENT/BT/MODELS/MSLDEAD.MOD new file mode 100644 index 0000000..5148fa9 --- /dev/null +++ b/CONTENT/BT/MODELS/MSLDEAD.MOD @@ -0,0 +1,11 @@ +[video] +object=1017 1016 + +[audio] +external=bigexp.scp + +[gamedata] +class=ExplosionClassID +// Audio requires ExplosionDuration >= 5.0 +ExplosionDuration=5.0 + diff --git a/CONTENT/BT/MODELS/MSLG.MOD b/CONTENT/BT/MODELS/MSLG.MOD new file mode 100644 index 0000000..496409d --- /dev/null +++ b/CONTENT/BT/MODELS/MSLG.MOD @@ -0,0 +1,20 @@ +[video] +; +; mslg.mod - Missile gantry +; +object=mslg.bgf mslg_FR.bgf msl.bgf mslg_LP.bgf +rubble=mslgd.bgf + +[collision] +name=mslg_cv.sld + +[gauge] +image=mslg_ga.gim + +[gamedata] +class=CulturalIconClassID +DamageZones=msl.dmg +StoppingCollisionVolume=1 +ExplosionModelFile=msldead +TimeDelay=0.8 +//CrunchExplosionModelFile=stephit diff --git a/CONTENT/BT/MODELS/MSLH.MOD b/CONTENT/BT/MODELS/MSLH.MOD new file mode 100644 index 0000000..fd0b20d --- /dev/null +++ b/CONTENT/BT/MODELS/MSLH.MOD @@ -0,0 +1,11 @@ +[video] +; +; mslh.mod - Missile hub +; +object=mslh.bgf mslh_FR.bgf mslh_LP.bgf + +[collision] +name=mslh_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/MSLHIT.MOD b/CONTENT/BT/MODELS/MSLHIT.MOD new file mode 100644 index 0000000..251dc2b --- /dev/null +++ b/CONTENT/BT/MODELS/MSLHIT.MOD @@ -0,0 +1,11 @@ +[video] +object=10 12 1023 + +[audio] +external=mslexp.scp + +[gamedata] +class=ExplosionClassID +ExplosionResourceTable=MissileExplosionResourceTable +// WARNING Audio Effects require ExplosionDuration >= 5.0 secs +ExplosionDuration=5.0 diff --git a/CONTENT/BT/MODELS/MSLHITI.MOD b/CONTENT/BT/MODELS/MSLHITI.MOD new file mode 100644 index 0000000..c878817 --- /dev/null +++ b/CONTENT/BT/MODELS/MSLHITI.MOD @@ -0,0 +1,10 @@ +[video] +object=10 12 + +[audio] +external=mslexpi.scp + +[gamedata] +class=ExplosionClassID +// WARNING Audio Effects require ExplosionDuration >= 5.0 secs +ExplosionDuration=5.0 diff --git a/CONTENT/BT/MODELS/MSLR.DMG b/CONTENT/BT/MODELS/MSLR.DMG new file mode 100644 index 0000000..94cf553 --- /dev/null +++ b/CONTENT/BT/MODELS/MSLR.DMG @@ -0,0 +1,3 @@ +[default] +WeaponDamagePoints=500 +VitalDamageZone=True diff --git a/CONTENT/BT/MODELS/MSLR.MOD b/CONTENT/BT/MODELS/MSLR.MOD new file mode 100644 index 0000000..094149a --- /dev/null +++ b/CONTENT/BT/MODELS/MSLR.MOD @@ -0,0 +1,20 @@ +[video] +; +; mslr.mod - Missile hanger +; +object=mslr.bgf mslr_FR.bgf mslr_LP.bgf +rubble=thr_tshd.bgf + +[collision] +name=mslr_cv.sld + +[gauge] +image=mslr_ga.gim + +[gamedata] +class=CulturalIconClassID +DamageZones=mslr.dmg +StoppingCollisionVolume=1 +ExplosionModelFile=msldead +TimeDelay=0.5 +//CrunchExplosionModelFile=stephit diff --git a/CONTENT/BT/MODELS/MSLRB.MOD b/CONTENT/BT/MODELS/MSLRB.MOD new file mode 100644 index 0000000..c5ae065 --- /dev/null +++ b/CONTENT/BT/MODELS/MSLRB.MOD @@ -0,0 +1,11 @@ +[video] +; +; mslrb.mod - Missile hanger base +; +object=calpb.bgf + +[collision] +name=mslrb_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/MSLROAD1.MOD b/CONTENT/BT/MODELS/MSLROAD1.MOD new file mode 100644 index 0000000..cce9f2c --- /dev/null +++ b/CONTENT/BT/MODELS/MSLROAD1.MOD @@ -0,0 +1,5 @@ +[video] +object=mslroad1.bgf mslb_lp.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/MYOMERS.SUB b/CONTENT/BT/MODELS/MYOMERS.SUB new file mode 100644 index 0000000..d38ccb9 --- /dev/null +++ b/CONTENT/BT/MODELS/MYOMERS.SUB @@ -0,0 +1,27 @@ +[Myomers] +Type=MyomersClassID +ArmorValue=20.0 +StartingTemperature=77.0 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +ThermalConductance=1900000 +ThermalMass=250000 +HeatSink=None +WeaponDamagePoints=10.0 +VitalSubsystem=True +VelocityEfficiency=0.995 +AccelerationEfficiency=0.8 +VoltageSource=None +StandardResistance=1.0 +ThermalResistivityCoefficient=0.00024 +AuxScreenNumber=0 +AuxScreenLabel=qmyomers.pcc +EngScreenLabel=emyomers.pcc +StartTime=0.0 +SeekVoltage=0.3 +SeekVoltage=0.5 +SeekVoltage=0.7 +SeekVoltage=0.9999 +SeekVoltageRecommendedIndex=2 +CriticalHitScoreBonus=0 +CollisionCriticalHitWeight=0.35 diff --git a/CONTENT/BT/MODELS/NORETURN.MOD b/CONTENT/BT/MODELS/NORETURN.MOD new file mode 100644 index 0000000..14a3b9f --- /dev/null +++ b/CONTENT/BT/MODELS/NORETURN.MOD @@ -0,0 +1,10 @@ +[gamedata] +class=ScenarioRoleClassID +KillBonus=500.0 +DamageReceivedModifier=0.0 +DamageInflictedModifier=1.0 +DamageBias=1.0 +FriendlyFirePenalty=1.0 +ReturnFromDeath=0 +SpecialCaseDeathPenalty=500.0 + diff --git a/CONTENT/BT/MODELS/NRK.MOD b/CONTENT/BT/MODELS/NRK.MOD new file mode 100644 index 0000000..81cf8a7 --- /dev/null +++ b/CONTENT/BT/MODELS/NRK.MOD @@ -0,0 +1,24 @@ +[video] +object=tms_c.bgf + +[audio] +external=msltvl.scp + +[gauge] +image=rivet_ga.gim + +[gamedata] +class=MissileClassID +MoverMass=20.0 +MomentOfInertia=0.01 0.01 0.001 +PositiveLinearDragCoefficients=0.001 0.001 .001 +NegativeLinearDragCoefficients=0.001 0.001 .001 +AngularDragCoefficients=0.01 0.01 0.001 +FrictionCoefficient=0.1 +ElasticityCoefficient=0.0 +MinimumBounceSpeed=0.0 +MaxThrusterRotationRate=360.0 +BurnTime=10.0 +ThrusterAcceleration=300.0 +ThrusterClimb=50.0 +SplashRadius=30.0 diff --git a/CONTENT/BT/MODELS/NRK10.SUB b/CONTENT/BT/MODELS/NRK10.SUB new file mode 100644 index 0000000..0dc4e0c --- /dev/null +++ b/CONTENT/BT/MODELS/NRK10.SUB @@ -0,0 +1,33 @@ +[MissileLauncher] +Type=MissileLauncherClassID +StartingTemperature=77.0 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +ThermalConductance=5.33e5 +ThermalMass=7.10e4 +WeaponDamagePoints=3.0 +HeatSink=None +AmmoBin=None +VoltageSource=None +MuzzleVelocity=0.0 0.0 30.0 +TracerInterval=1 +ExplosionModelFile=mslhit +RechargeRate=4.0 +DamageAmount=20.0 +DamageType=ExplosiveDamage +WeaponRange=6000 +HeatCostToFire=4.5e7 +VitalSubsystem=False +MissileCount=10 +ThermalResistivityCoefficient=0.00024 +AuxScreenNumber=0 +AuxScreenLabel=qnrk10.pcc +EngScreenLabel=enrk10.pcc +MinTimeOfFlight=0.5 +MinVoltagePercentToFire=0.30 +MinJamChance=0.05 +PipPosition=1 +PipColor=0.0 1.0 0.0 +PipExtendedRange=True +StartTime=1.0 +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT/MODELS/NRK15.SUB b/CONTENT/BT/MODELS/NRK15.SUB new file mode 100644 index 0000000..00ed30c --- /dev/null +++ b/CONTENT/BT/MODELS/NRK15.SUB @@ -0,0 +1,33 @@ +[MissileLauncher] +Type=MissileLauncherClassID +StartingTemperature=77 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +ThermalConductance=5.13e5 +ThermalMass=1.03e5 +WeaponDamagePoints=3.0 +HeatSink=None +AmmoBin=None +VoltageSource=None +MuzzleVelocity=0.0 5.0 30.0 +TracerInterval=1 +ExplosionModelFile=mslhit +RechargeRate=6.0 +DamageAmount=35.0 +DamageType=ExplosiveDamage +WeaponRange=6000 +HeatCostToFire=6.5e7 +VitalSubsystem=False +MissileCount=15 +ThermalResistivityCoefficient=0.00024 +AuxScreenNumber=0 +AuxScreenLabel=qnrk15.pcc +EngScreenLabel=enrk15.pcc +MinTimeOfFlight=0.5 +MinVoltagePercentToFire=0.30 +MinJamChance=0.05 +PipPosition=1 +PipColor=0.0 1.0 0.0 +PipExtendedRange=True +StartTime=1.0 +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT/MODELS/NRK20.SUB b/CONTENT/BT/MODELS/NRK20.SUB new file mode 100644 index 0000000..f495df0 --- /dev/null +++ b/CONTENT/BT/MODELS/NRK20.SUB @@ -0,0 +1,33 @@ +[MissileLauncher] +Type=MissileLauncherClassID +StartingTemperature=77.0 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +ThermalConductance=5.0e5 +ThermalMass=1.5e5 +WeaponDamagePoints=3.0 +HeatSink=None +AmmoBin=None +VoltageSource=None +MuzzleVelocity=0.0 5.0 30.0 +TracerInterval=1 +ExplosionModelFile=mslhit +RechargeRate=9.0 +DamageAmount=50.0 +DamageType=ExplosiveDamage +WeaponRange=6000 +HeatCostToFire=9.5e7 +MissileCount=20 +VitalSubsystem=False +ThermalResistivityCoefficient=0.00024 +MinTimeOfFlight=0.5 +MinVoltagePercentToFire=0.30 +MinJamChance=0.05 +AuxScreenNumber=0 +AuxScreenLabel=qnrk20.pcc +EngScreenLabel=enrk20.pcc +PipPosition=0 +PipColor=0.0 1.0 0.0 +PipExtendedRange=True +StartTime=1.0 +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT/MODELS/NRK5.SUB b/CONTENT/BT/MODELS/NRK5.SUB new file mode 100644 index 0000000..c89aa02 --- /dev/null +++ b/CONTENT/BT/MODELS/NRK5.SUB @@ -0,0 +1,33 @@ +[MissileLauncher] +Type=MissileLauncherClassID +StartingTemperature=77.0 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +ThermalConductance=3.94e5 +ThermalMass=2.37e4 +WeaponDamagePoints=3.0 +HeatSink=None +AmmoBin=None +VoltageSource=None +MuzzleVelocity=0.0 5.0 30.0 +TracerInterval=1 +ExplosionModelFile=mslhit +RechargeRate=2.5 +DamageAmount=10.0 +DamageType=ExplosiveDamage +WeaponRange=6000 +HeatCostToFire=1.5e7 +VitalSubsystem=False +ThermalResistivityCoefficient=0.00024 +MissileCount=5 +AuxScreenNumber=0 +AuxScreenLabel=qnrk5.pcc +EngScreenLabel=enrk5.pcc +MinTimeOfFlight=0.5 +MinVoltagePercentToFire=0.30 +MinJamChance=0.05 +PipPosition=1 +PipColor=0.0 1.0 0.0 +PipExtendedRange=True +StartTime=1.0 +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT/MODELS/NTR.MOD b/CONTENT/BT/MODELS/NTR.MOD new file mode 100644 index 0000000..fe011ba --- /dev/null +++ b/CONTENT/BT/MODELS/NTR.MOD @@ -0,0 +1,5 @@ +[video] +object=ntr.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/OLDCON.SUB b/CONTENT/BT/MODELS/OLDCON.SUB new file mode 100644 index 0000000..55b43dc --- /dev/null +++ b/CONTENT/BT/MODELS/OLDCON.SUB @@ -0,0 +1,13 @@ +[Condenser] +Type=CondenserClassID +ArmorValue=10.0 +StartingTemperature=77.0 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +ThermalConductance=190000 +ThermalMass=17000 +HeatSink=None +ValveSetting=.166667 +RefrigerationFactor=2.0 +WeaponDamagePoints=50.0 +VitalSubsystem=False diff --git a/CONTENT/BT/MODELS/OLDGEN.SUB b/CONTENT/BT/MODELS/OLDGEN.SUB new file mode 100644 index 0000000..1e476e8 --- /dev/null +++ b/CONTENT/BT/MODELS/OLDGEN.SUB @@ -0,0 +1,17 @@ +[Generator] +Type=GeneratorClassID +ArmorValue=10.0 +StartingTemperature=373.0 +DegradationTemperature=1200.0 +FailureTemperature=1357.0 +ThermalConductance=400000 +ThermalMass=300000 +HeatSink=None +WeaponDamagePoints=50.0 +ThermalResistance=0.0004 +RatedVoltage=10000.0 +WeaponDamagePoints=50.0 +VitalSubsystem=False +StartTime=1.0 +ShortRecoveryTime=1.0 +MaxTapCount=6 \ No newline at end of file diff --git a/CONTENT/BT/MODELS/OLDLOKI.SUB b/CONTENT/BT/MODELS/OLDLOKI.SUB new file mode 100644 index 0000000..dff0827 --- /dev/null +++ b/CONTENT/BT/MODELS/OLDLOKI.SUB @@ -0,0 +1,132 @@ +[HeatSink] +Type=HeatSinkClassID +Include=heatsnk.sub +HeatSinkCount=26 + +// Condenser1 is for lasers +[Condenser1] +Type=CondenserClassID +Include=condensr.sub +ValveSetting=1.0 +HeatSink=HeatSink + +// Condenser2 is for all other weapons +[Condenser2] +Type=CondenserClassID +Include=condensr.sub +ValveSetting=1.0 +HeatSink=HeatSink + + +[Generator] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=HeatSink + +[PowerBar] +Type=PowerBarClassID +Include=pwrbar.sub +HeatSink=HeatSink +VoltageSource=Generator + + +[AmmoBinGaussRifle] +Type=AmmoBinClassID +Include=ammogaus.sub +HeatSink=HeatSink +VoltageSource=Generator + +[GaussRifle] +Type=GaussRifleClassID +Include=gaussrfl.sub +HeatSink=Condenser2 +VoltageSource=PowerBar +AmmoBin=AmmoBinGaussRifle +SegmentPageName=sitelgunport + +[AmmoBinAutoCannon] +Type=AmmoBinClassID +Include=ammoac10.sub +HeatSink=HeatSink +VoltageSource=Generator + +[AutoCannon] +Type=ProjectileWeaponClassID +Include=ac10.sub +HeatSink=Condenser2 +VoltageSource=AmmoBinAutoCannon +SegmentPageName=sitergunport + +[AmmoBinMG1] +Type=AmmoBinClassID +Include=ammomg.sub +HeatSink=HeatSink +VoltageSource=Generator + +[AmmoBinMG2] +Type=AmmoBinClassID +Include=ammomg.sub +HeatSink=HeatSink +VoltageSource=Generator + +[MachineGun1] +Type=ProjectileWeaponClassID +Include=machgun.sub +HeatSink=Condenser2 +VoltageSource=AmmoBinMG1 +SegmentPageName=siteltorsoport + +[MachineGun2] +Type=ProjectileWeaponClassID +Include=machgun.sub +HeatSink=Condenser2 +VoltageSource=AmmoBinMG2 +SegmentPageName=sitertorsoport + +[AmmoBinSRM] +Type=AmmoBinClassID +Include=ammsrm6.sub +HeatSink=HeatSink +VoltageSource=Generator + +[SRM] +Type=MissileLauncherClassID +Include=srm6.sub +HeatSink=Condenser2 +VoltageSource=AmmoBinSRM +AmmoBin=AmmoBinSRM +SegmentPageName=sitemissleport + +[MediumLaser1] +Type=EmitterClassID +Include=mlaser.sub +HeatSink=Condenser1 +VoltageSource=PowerBar +SegmentPageName=sitelgunport + +[MediumLaser2] +Type=EmitterClassID +Include=mlaser.sub +HeatSink=Condenser1 +VoltageSource=PowerBar +SegmentPageName=sitergunport + +[SmallLaser1] +Type=EmitterClassID +Include=slaser.sub +HeatSink=Condenser1 +VoltageSource=PowerBar +SegmentPageName=siteltorsoport + +[SmallLaser2] +Type=EmitterClassID +Include=slaser.sub +HeatSink=Condenser1 +VoltageSource=PowerBar +SegmentPageName=sitertorsoport + + + + + + diff --git a/CONTENT/BT/MODELS/OWENS.DMG b/CONTENT/BT/MODELS/OWENS.DMG new file mode 100644 index 0000000..fe1bc06 --- /dev/null +++ b/CONTENT/BT/MODELS/OWENS.DMG @@ -0,0 +1,162 @@ +// This file is intentionally empty and MUST be read-only! +[dz_dtorso] +ExplosionTable=owndmg.exp +DefaultEffectSiteName=siteedz_dtorso +WeaponDamagePoints=72 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.071429 +CriticalSubsystem=Condenser5 2 0.500000 +CriticalSubsystem=GeneratorD 10 0.500000 +CriticalSubsystem=Torso 15 0.500000 +[dz_ldleg] +ExplosionTable=owndmg.exp +DefaultEffectSiteName=siteedz_ldleg +WeaponDamagePoints=61 +VitalDamageZone=True +LegDamageZone=LeftLeg +CriticalSubsystem=HeatSink 100 0.071429 +CriticalSubsystem=Myomers 15 0.166667 +[dz_lfoot] +ExplosionTable=owndmg.exp +DefaultEffectSiteName=siteedz_lfoot +WeaponDamagePoints=51 +VitalDamageZone=True +LegDamageZone=LeftLeg +CriticalSubsystem=Myomers 15 0.166667 +[dz_lmissle] +ExplosionTable=owndmg.exp +DefaultEffectSiteName=siteedz_lmissle +WeaponDamagePoints=54 +VitalDamageZone=False +DescendOnDestruction=True +CriticalSubsystem=HeatSink 100 0.071429 +CriticalSubsystem=Condenser4 2 1.000000 +CriticalSubsystem=AmmoBinSRM6_1 15 0.500000 +CriticalSubsystem=SRM6_1 15 1.000000 +[dz_ltorso] +ExplosionTable=owndmg.exp +DefaultEffectSiteName=siteedz_ltorso +WeaponDamagePoints=82 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.071429 +CriticalSubsystem=Condenser1 2 0.500000 +CriticalSubsystem=GeneratorB 10 0.500000 +CriticalSubsystem=ERMLaser_1 15 0.500000 +CriticalSubsystem=ERSLaser_1 15 1.000000 +CriticalSubsystem=ERSLaser_2 15 1.000000 +CriticalSubsystem=AmmoBinSRM6_1 15 0.500000 +[dz_luleg] +ExplosionTable=owndmg.exp +DefaultEffectSiteName=siteedz_luleg +WeaponDamagePoints=61 +VitalDamageZone=True +LegDamageZone=LeftLeg +CriticalSubsystem=HeatSink 100 0.071429 +CriticalSubsystem=Myomers 15 0.166667 +[dz_rdleg] +ExplosionTable=owndmg.exp +DefaultEffectSiteName=siteedz_rdleg +WeaponDamagePoints=61 +VitalDamageZone=True +LegDamageZone=RightLeg +CriticalSubsystem=HeatSink 100 0.071429 +CriticalSubsystem=Myomers 15 0.166667 +[dz_reardtorso] +ExplosionTable=owndmg.exp +DefaultEffectSiteName=siteedz_reardtorso +WeaponDamagePoints=51 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.071429 +CriticalSubsystem=Reservoir 10 0.250000 +CriticalSubsystem=Condenser5 2 0.500000 +CriticalSubsystem=GeneratorC 10 0.500000 +CriticalSubsystem=Torso 15 0.500000 +[dz_rearltorso] +ExplosionTable=owndmg.exp +DefaultEffectSiteName=siteedz_rearltorso +WeaponDamagePoints=51 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.071429 +CriticalSubsystem=Reservoir 10 0.250000 +CriticalSubsystem=Condenser1 2 0.500000 +CriticalSubsystem=GeneratorA 10 0.500000 +[dz_rearrtorso] +ExplosionTable=owndmg.exp +DefaultEffectSiteName=siteedz_rearrtorso +WeaponDamagePoints=51 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.071429 +CriticalSubsystem=Reservoir 10 0.250000 +CriticalSubsystem=Condenser3 2 0.500000 +CriticalSubsystem=GeneratorA 10 0.500000 +[dz_rearutorso] +ExplosionTable=owndmg.exp +DefaultEffectSiteName=siteedz_rearutorso +WeaponDamagePoints=67 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.071429 +CriticalSubsystem=Reservoir 10 0.250000 +CriticalSubsystem=Condenser2 2 0.500000 +CriticalSubsystem=GeneratorC 10 0.500000 +CriticalSubsystem=Avionics 5 0.333333 +CriticalSubsystem=Gyroscope 30 0.500000 +[dz_rfoot] +ExplosionTable=owndmg.exp +DefaultEffectSiteName=siteedz_rfoot +WeaponDamagePoints=51 +VitalDamageZone=True +LegDamageZone=RightLeg +CriticalSubsystem=Myomers 15 0.166667 +[dz_rmissle] +ExplosionTable=owndmg.exp +DefaultEffectSiteName=siteedz_rmissle +WeaponDamagePoints=54 +VitalDamageZone=False +DescendOnDestruction=True +CriticalSubsystem=HeatSink 100 0.071429 +CriticalSubsystem=Condenser6 2 1.000000 +CriticalSubsystem=AmmoBinSRM6_2 15 0.500000 +CriticalSubsystem=SRM6_2 15 1.000000 +[dz_rtorso] +ExplosionTable=owndmg.exp +DefaultEffectSiteName=siteedz_rtorso +WeaponDamagePoints=82 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.071429 +CriticalSubsystem=Condenser3 2 0.500000 +CriticalSubsystem=GeneratorB 10 0.500000 +CriticalSubsystem=ERMLaser_2 15 0.500000 +CriticalSubsystem=ERSLaser_3 15 1.000000 +CriticalSubsystem=ERSLaser_4 15 1.000000 +CriticalSubsystem=AmmoBinSRM6_2 15 0.500000 +[dz_ruleg] +ExplosionTable=owndmg.exp +DefaultEffectSiteName=siteedz_ruleg +WeaponDamagePoints=61 +VitalDamageZone=True +LegDamageZone=RightLeg +CriticalSubsystem=HeatSink 100 0.071429 +CriticalSubsystem=Myomers 15 0.166667 +[dz_searchlight] +ExplosionTable=owndmg.exp +DefaultEffectSiteName=siteedz_searchlight +WeaponDamagePoints=50 +VitalDamageZone=False +DescendOnDestruction=True +CriticalSubsystem=Avionics 5 0.333333 +CriticalSubsystem=HUD 15 0.500000 +CriticalSubsystem=Searchlight 45 1.000000 +CriticalSubsystem=ThermalSight 30 1.000000 +[dz_utorso] +ExplosionTable=owndmg.exp +DefaultEffectSiteName=siteedz_utorso +WeaponDamagePoints=95 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.071429 +CriticalSubsystem=Condenser2 2 0.500000 +CriticalSubsystem=GeneratorD 10 0.500000 +CriticalSubsystem=Avionics 5 0.333333 +CriticalSubsystem=Gyroscope 30 0.500000 +CriticalSubsystem=HUD 15 0.500000 +CriticalSubsystem=ERMLaser_1 15 0.500000 +CriticalSubsystem=ERMLaser_2 15 0.500000 diff --git a/CONTENT/BT/MODELS/OWENS.MOD b/CONTENT/BT/MODELS/OWENS.MOD new file mode 100644 index 0000000..11d60b4 --- /dev/null +++ b/CONTENT/BT/MODELS/OWENS.MOD @@ -0,0 +1,138 @@ +[video] +skeleton=own.skl +skeletona=owx.skl +destroyed=ownd.skl +//destroyeda=owxd.skl +dzm=ownskin.dzm +dzma=owxskin.dzm + +[audio] +internal=ownint.scp +external=ownext.scp + +[collision] +name=own_cv.sld + +[gauge] +image=thor_ga.gim + +[gaugeMissionReview] +pixelmap=owen_mr.pcc + +[gamedata] +class=MechClassID +MoverMass=35000.0 +MomentOfInertia=1.75 3.125 1.75 +PositiveLinearDragCoefficients=0.14 0.4 0.07 +NegativeLinearDragCoefficients=0.14 0.2 0.08 +AngularDragCoefficients=0.3 0.5 0.3 +FrictionCoefficient=0.1 +ElasticityCoefficient=0.2 +MinimumBounceSpeed=0.2 +MaxAcceleration=50 +AnimationPrefix=own +Subsystems=owens.sub +DamageZones=owens.dmg +DamageLookupTable=owndmg.tbl +RelativeMechValue=1.0 +LookLeftAngle=80 +LookRightAngle=-80 +LookBackAngle=0 +LookFrontAngle=-10 +WalkingTurnRate=80 +RunningTurnRate=55 +DeathEffect=owndead +CameraOffset=0.0 5.0 1.0 +DeathSplashDamage=5 +DeathSplashRadius=30 +TimeDelay=0.3 + +MaxUnstableAcceleration=60.0 +UnstableAccelerationEffect=0.5 +UnstableGunTheEngineEffect=0.8 +UnstableSuperStopEffect=0.25 +UnstableHighVelocityEffect=0.25 +UnstableStopedTurnEffect=1.0 +SuperStopAcceleration=25.0 + +ThrottleAdjustment=1.3 + +UpdateTurnDegreeDiffrence=3 +UpdateTurnVelocityDiffrence=0.045 +UpdatePositionDiffrence=0.3 + +ShadowJointName=jointshadow + +[ControlMappings] +Thrustmaster=ownthr.ctl +L4=ownl4.ctl + +[audio] +type=mech.scp + +[animations] +animationtransition=ownswr.ani +animation=ownwwl.ani +animation=ownwwr.ani +animation=ownwsr.ani +animation=ownwsl.ani +animationtransition=ownwrl.ani +animationtransition=ownwrr.ani +animation=ownrrl.ani +animation=ownrrr.ani +animation=ownrwl.ani +animation=ownrwr.ani +animation=ownbmp.ani + +animationtransition=ownswri.ani +animation=ownwwli.ani +animation=ownwwri.ani +animation=ownwsri.ani +animation=ownwsli.ani +animationtransition=ownwrli.ani +animationtransition=ownwrri.ani +animation=ownrrli.ani +animation=ownrrri.ani +animation=ownrwli.ani +animation=ownrwri.ani +animation=ownbmpi.ani + +animation=ownbbl.ani +animation=ownbbr.ani +animation=ownbsl.ani +animation=ownbsr.ani +animationtransition=ownsbl.ani +animationtransition=ownsbr.ani +animation=ownbbli.ani +animation=ownbbri.ani +animation=ownbsli.ani +animation=ownbsri.ani +animationtransition=ownsbli.ani +animationtransition=ownsbri.ani + +animation=ownggl.ani +animation=ownggr.ani +animation=owngsl.ani +animation=owngsr.ani +animationtransition=ownwgl.ani +animationtransition=ownwgr.ani + +animation=ownggli.ani +animation=ownggri.ani +animation=owngsli.ani +animation=owngsri.ani +animationtransition=ownwgli.ani +animationtransition=ownwgri.ani + +animation=ownsqu.ani +animation=ownsqd.ani +animation=ownsqui.ani +animation=ownsqdi.ani + +animation=owntrn.ani +animation=owntrni.ani + +//animation=ownff.ani +//animation=ownfb.ani +//animation=ownfl.ani +//animation=ownfr.ani diff --git a/CONTENT/BT/MODELS/OWENS.SUB b/CONTENT/BT/MODELS/OWENS.SUB new file mode 100644 index 0000000..ea3a686 --- /dev/null +++ b/CONTENT/BT/MODELS/OWENS.SUB @@ -0,0 +1,217 @@ +[HeatSink] +Type=HeatSinkClassID +Include=heatsnk.sub +HeatSinkCount=5 +SubsystemFlags=DontReplicateFlag + +[Reservoir] +Type=ReservoirClassID +Include=reserve.sub +HeatSink=HeatSink +SegmentPageName=siteeyepoint + +[Condenser1] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser2] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser3] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser4] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser5] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser6] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[GeneratorA] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser1 +SubsystemFlags=DontReplicateFlag + +[GeneratorB] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser2 +SubsystemFlags=DontReplicateFlag + +[GeneratorC] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser3 +SubsystemFlags=DontReplicateFlag + +[GeneratorD] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser5 +SubsystemFlags=DontReplicateFlag + +[Avionics] +Type=SensorClassID +Include=sensor.sub +HeatSink=Condenser2 +VoltageSource=GeneratorD +AuxScreenNumber=5 +SubsystemFlags=DontReplicateFlag + +AuxScreenPlacement=2 +[Myomers] +Type=MyomersClassID +Include=myomers.sub +HeatSink=Condenser5 +VoltageSource=GeneratorD +AuxScreenNumber=6 +SubsystemFlags=DontReplicateFlag + +AuxScreenPlacement=0 +[Gyroscope] +Type=GyroscopeClassID +Include=gyro.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag + +[Torso] +Type=TorsoClassID +Include=torsolmt.sub +WatchedSubsystem=Myomers + +[HUD] +Type=HUDClassID +Include=hud.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag + +[Searchlight] +Type=SearchlightClassID +Include=srchlite.sub +WatchedSubsystem=Avionics +SegmentPageName=sitelight + +[ThermalSight] +Type=ThermalSightClassID +Include=Thermal.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag +[ERMLaser_1] +Type=EmitterClassID +Include=ermlaser.sub +SegmentPageName=sitelfgunport +SiteOffset=0 0.2 0 +PipPosition=1 +VoltageSource=GeneratorA +HeatSink=Condenser1 +AuxScreenNumber=2 +AuxScreenPlacement=1 +[ERMLaser_2] +Type=EmitterClassID +Include=ermlaser.sub +SegmentPageName=siterfgunport +SiteOffset=0 0.2 0 +PipPosition=2 +VoltageSource=GeneratorC +HeatSink=Condenser3 +AuxScreenNumber=9 +AuxScreenPlacement=3 +[ERSLaser_1] +Type=EmitterClassID +Include=erslaser.sub +SegmentPageName=sitelfgunport +SiteOffset=0.2 -0.2 0 +PipPosition=1 +VoltageSource=GeneratorA +HeatSink=Condenser1 +AuxScreenNumber=3 +AuxScreenPlacement=1 +[ERSLaser_2] +Type=EmitterClassID +Include=erslaser.sub +SegmentPageName=sitelfgunport +SiteOffset=-0.2 -0.2 0 +PipPosition=2 +VoltageSource=GeneratorA +HeatSink=Condenser1 +AuxScreenNumber=4 +AuxScreenPlacement=1 +[ERSLaser_3] +Type=EmitterClassID +Include=erslaser.sub +SegmentPageName=siterfgunport +SiteOffset=0.2 -0.2 0 +PipPosition=3 +VoltageSource=GeneratorC +HeatSink=Condenser3 +AuxScreenNumber=11 +AuxScreenPlacement=3 +[ERSLaser_4] +Type=EmitterClassID +Include=erslaser.sub +SegmentPageName=siterfgunport +SiteOffset=-0.2 -0.2 0 +PipPosition=4 +VoltageSource=GeneratorC +HeatSink=Condenser3 +AuxScreenNumber=12 +AuxScreenPlacement=3 +[AmmoBinSRM6_1] +Type=AmmoBinClassID +Include=ammsrm6.sub +WatchedSubsystem=SRM6_1 +AmmoCount=18 +[SRM6_1] +AmmoBin=AmmoBinSRM6_1 +Type=MissileLauncherClassID +Include=srm6.sub +SegmentPageName=sitelmissleport +PipPosition=1 +VoltageSource=GeneratorB +HeatSink=Condenser4 +AuxScreenNumber=1 +AuxScreenPlacement=4 +[AmmoBinSRM6_2] +Type=AmmoBinClassID +Include=ammsrm6.sub +WatchedSubsystem=SRM6_2 +AmmoCount=18 +[SRM6_2] +AmmoBin=AmmoBinSRM6_2 +Type=MissileLauncherClassID +Include=srm6.sub +SegmentPageName=sitermissleport +PipPosition=2 +VoltageSource=GeneratorB +HeatSink=Condenser6 +AuxScreenNumber=10 +AuxScreenPlacement=6 +[MessageManager] +Type=SubsystemMessageManagerClassID +ExplosionModelFile=majhit 1.0 +TerrainHitExplosion=gndhit +RendererCompensateTime=0.3 +[MechTech] +Type=MechTechClassID +AlarmModel=mechalrm +SubsystemFlags=DontReplicateFlag diff --git a/CONTENT/BT/MODELS/OWN1.DMG b/CONTENT/BT/MODELS/OWN1.DMG new file mode 100644 index 0000000..2e3da81 --- /dev/null +++ b/CONTENT/BT/MODELS/OWN1.DMG @@ -0,0 +1,157 @@ +// This file is intentionally empty and MUST be read-only! +[dz_dtorso] +ExplosionTable=own1dmg.exp +DefaultEffectSiteName=siteedz_dtorso +WeaponDamagePoints=72 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.071429 +CriticalSubsystem=Condenser5 2 0.500000 +CriticalSubsystem=GeneratorD 10 0.500000 +CriticalSubsystem=Torso 15 0.500000 +CriticalSubsystem=AFC25 15 1.000000 +[dz_ldleg] +ExplosionTable=own1dmg.exp +DefaultEffectSiteName=siteedz_ldleg +WeaponDamagePoints=61 +VitalDamageZone=True +LegDamageZone=LeftLeg +CriticalSubsystem=HeatSink 100 0.071429 +CriticalSubsystem=Myomers 15 0.166667 +[dz_lfoot] +ExplosionTable=own1dmg.exp +DefaultEffectSiteName=siteedz_lfoot +WeaponDamagePoints=51 +VitalDamageZone=True +LegDamageZone=LeftLeg +CriticalSubsystem=Myomers 15 0.166667 +[dz_lmissle] +ExplosionTable=own1dmg.exp +DefaultEffectSiteName=siteedz_lmissle +WeaponDamagePoints=54 +VitalDamageZone=False +DescendOnDestruction=True +CriticalSubsystem=HeatSink 100 0.071429 +CriticalSubsystem=Condenser4 2 1.000000 +CriticalSubsystem=AmmoBinNRK5_1 15 0.500000 +CriticalSubsystem=NRK5_1 15 1.000000 +[dz_ltorso] +ExplosionTable=own1dmg.exp +DefaultEffectSiteName=siteedz_ltorso +WeaponDamagePoints=82 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.071429 +CriticalSubsystem=Condenser1 2 0.500000 +CriticalSubsystem=GeneratorB 10 0.500000 +CriticalSubsystem=ERMLaser 15 1.000000 +CriticalSubsystem=AmmoBinNRK5_1 15 0.500000 +[dz_luleg] +ExplosionTable=own1dmg.exp +DefaultEffectSiteName=siteedz_luleg +WeaponDamagePoints=61 +VitalDamageZone=True +LegDamageZone=LeftLeg +CriticalSubsystem=HeatSink 100 0.071429 +CriticalSubsystem=Myomers 15 0.166667 +[dz_rdleg] +ExplosionTable=own1dmg.exp +DefaultEffectSiteName=siteedz_rdleg +WeaponDamagePoints=61 +VitalDamageZone=True +LegDamageZone=RightLeg +CriticalSubsystem=HeatSink 100 0.071429 +CriticalSubsystem=Myomers 15 0.166667 +[dz_reardtorso] +ExplosionTable=own1dmg.exp +DefaultEffectSiteName=siteedz_reardtorso +WeaponDamagePoints=51 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.071429 +CriticalSubsystem=Reservoir 10 0.250000 +CriticalSubsystem=Condenser5 2 0.500000 +CriticalSubsystem=GeneratorC 10 0.500000 +CriticalSubsystem=Torso 15 0.500000 +[dz_rearltorso] +ExplosionTable=own1dmg.exp +DefaultEffectSiteName=siteedz_rearltorso +WeaponDamagePoints=51 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.071429 +CriticalSubsystem=Reservoir 10 0.250000 +CriticalSubsystem=Condenser1 2 0.500000 +CriticalSubsystem=GeneratorA 10 0.500000 +[dz_rearrtorso] +ExplosionTable=own1dmg.exp +DefaultEffectSiteName=siteedz_rearrtorso +WeaponDamagePoints=51 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.071429 +CriticalSubsystem=Reservoir 10 0.250000 +CriticalSubsystem=Condenser3 2 0.500000 +CriticalSubsystem=GeneratorA 10 0.500000 +[dz_rearutorso] +ExplosionTable=own1dmg.exp +DefaultEffectSiteName=siteedz_rearutorso +WeaponDamagePoints=67 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.071429 +CriticalSubsystem=Reservoir 10 0.250000 +CriticalSubsystem=Condenser2 2 0.500000 +CriticalSubsystem=GeneratorC 10 0.500000 +CriticalSubsystem=Avionics 5 0.333333 +CriticalSubsystem=Gyroscope 30 0.500000 +[dz_rfoot] +ExplosionTable=own1dmg.exp +DefaultEffectSiteName=siteedz_rfoot +WeaponDamagePoints=51 +VitalDamageZone=True +LegDamageZone=RightLeg +CriticalSubsystem=Myomers 15 0.166667 +[dz_rmissle] +ExplosionTable=own1dmg.exp +DefaultEffectSiteName=siteedz_rmissle +WeaponDamagePoints=54 +VitalDamageZone=False +DescendOnDestruction=True +CriticalSubsystem=HeatSink 100 0.071429 +CriticalSubsystem=Condenser6 2 1.000000 +CriticalSubsystem=AmmoBinNRK5_2 15 0.500000 +CriticalSubsystem=NRK5_2 15 1.000000 +[dz_rtorso] +ExplosionTable=own1dmg.exp +DefaultEffectSiteName=siteedz_rtorso +WeaponDamagePoints=82 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.071429 +CriticalSubsystem=Condenser3 2 0.500000 +CriticalSubsystem=GeneratorB 10 0.500000 +CriticalSubsystem=ERSLaser 15 1.000000 +CriticalSubsystem=AmmoBinNRK5_2 15 0.500000 +[dz_ruleg] +ExplosionTable=own1dmg.exp +DefaultEffectSiteName=siteedz_ruleg +WeaponDamagePoints=61 +VitalDamageZone=True +LegDamageZone=RightLeg +CriticalSubsystem=HeatSink 100 0.071429 +CriticalSubsystem=Myomers 15 0.166667 +[dz_searchlight] +ExplosionTable=own1dmg.exp +DefaultEffectSiteName=siteedz_searchlight +WeaponDamagePoints=50 +VitalDamageZone=False +DescendOnDestruction=True +CriticalSubsystem=Avionics 5 0.333333 +CriticalSubsystem=HUD 15 0.500000 +CriticalSubsystem=Searchlight 45 1.000000 +CriticalSubsystem=ThermalSight 30 1.000000 +[dz_utorso] +ExplosionTable=own1dmg.exp +DefaultEffectSiteName=siteedz_utorso +WeaponDamagePoints=95 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.071429 +CriticalSubsystem=Condenser2 2 0.500000 +CriticalSubsystem=GeneratorD 10 0.500000 +CriticalSubsystem=Avionics 5 0.333333 +CriticalSubsystem=Gyroscope 30 0.500000 +CriticalSubsystem=HUD 15 0.500000 diff --git a/CONTENT/BT/MODELS/OWN1.MOD b/CONTENT/BT/MODELS/OWN1.MOD new file mode 100644 index 0000000..9ac2a23 --- /dev/null +++ b/CONTENT/BT/MODELS/OWN1.MOD @@ -0,0 +1,138 @@ +[video] +skeleton=own.skl +skeletona=owx.skl +destroyed=ownd.skl +//destroyeda=owxd.skl +dzm=ownskin.dzm +dzma=owxskin.dzm + +[audio] +internal=own1int.scp +external=own1ext.scp + +[collision] +name=own_cv.sld + +[gauge] +image=thor_ga.gim + +[gaugeMissionReview] +pixelmap=owen_mr.pcc + +[gamedata] +class=MechClassID +MoverMass=35000.0 +MomentOfInertia=1.75 3.125 1.75 +PositiveLinearDragCoefficients=0.14 0.4 0.07 +NegativeLinearDragCoefficients=0.14 0.2 0.08 +AngularDragCoefficients=0.3 0.5 0.3 +FrictionCoefficient=0.1 +ElasticityCoefficient=0.2 +MinimumBounceSpeed=0.2 +MaxAcceleration=50 +AnimationPrefix=own +Subsystems=own1.sub +DamageZones=own1.dmg +DamageLookupTable=own1dmg.tbl +RelativeMechValue=1.0 +LookLeftAngle=80 +LookRightAngle=-80 +LookBackAngle=0 +LookFrontAngle=-10 +WalkingTurnRate=80 +RunningTurnRate=55 +DeathEffect=owndead +CameraOffset=0.0 5.0 1.0 +DeathSplashDamage=5 +DeathSplashRadius=30 +TimeDelay=0.3 + +MaxUnstableAcceleration=60.0 +UnstableAccelerationEffect=0.5 +UnstableGunTheEngineEffect=0.8 +UnstableSuperStopEffect=0.25 +UnstableHighVelocityEffect=0.25 +UnstableStopedTurnEffect=1.0 +SuperStopAcceleration=25.0 + +ThrottleAdjustment=1.0 + +UpdateTurnDegreeDiffrence=3 +UpdateTurnVelocityDiffrence=0.045 +UpdatePositionDiffrence=0.3 + +ShadowJointName=jointshadow + +[ControlMappings] +Thrustmaster=own1thr.ctl +L4=own1l4.ctl + +[audio] +type=mech.scp + +[animations] +animationtransition=ownswr.ani +animation=ownwwl.ani +animation=ownwwr.ani +animation=ownwsr.ani +animation=ownwsl.ani +animationtransition=ownwrl.ani +animationtransition=ownwrr.ani +animation=ownrrl.ani +animation=ownrrr.ani +animation=ownrwl.ani +animation=ownrwr.ani +animation=ownbmp.ani + +animationtransition=ownswri.ani +animation=ownwwli.ani +animation=ownwwri.ani +animation=ownwsri.ani +animation=ownwsli.ani +animationtransition=ownwrli.ani +animationtransition=ownwrri.ani +animation=ownrrli.ani +animation=ownrrri.ani +animation=ownrwli.ani +animation=ownrwri.ani +animation=ownbmpi.ani + +animation=ownbbl.ani +animation=ownbbr.ani +animation=ownbsl.ani +animation=ownbsr.ani +animationtransition=ownsbl.ani +animationtransition=ownsbr.ani +animation=ownbbli.ani +animation=ownbbri.ani +animation=ownbsli.ani +animation=ownbsri.ani +animationtransition=ownsbli.ani +animationtransition=ownsbri.ani + +animation=ownggl.ani +animation=ownggr.ani +animation=owngsl.ani +animation=owngsr.ani +animationtransition=ownwgl.ani +animationtransition=ownwgr.ani + +animation=ownggli.ani +animation=ownggri.ani +animation=owngsli.ani +animation=owngsri.ani +animationtransition=ownwgli.ani +animationtransition=ownwgri.ani + +animation=ownsqu.ani +animation=ownsqd.ani +animation=ownsqui.ani +animation=ownsqdi.ani + +animation=owntrn.ani +animation=owntrni.ani + +//animation=ownff.ani +//animation=ownfb.ani +//animation=ownfl.ani +//animation=ownfr.ani diff --git a/CONTENT/BT/MODELS/OWN1.SUB b/CONTENT/BT/MODELS/OWN1.SUB new file mode 100644 index 0000000..d903f3c --- /dev/null +++ b/CONTENT/BT/MODELS/OWN1.SUB @@ -0,0 +1,192 @@ +[HeatSink] +Type=HeatSinkClassID +Include=heatsnk.sub +HeatSinkCount=5 +SubsystemFlags=DontReplicateFlag + +[Reservoir] +Type=ReservoirClassID +Include=reserve.sub +HeatSink=HeatSink +SegmentPageName=siteeyepoint + +[Condenser1] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser2] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser3] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser4] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser5] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser6] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[GeneratorA] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser1 +SubsystemFlags=DontReplicateFlag + +[GeneratorB] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser2 +SubsystemFlags=DontReplicateFlag + +[GeneratorC] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser3 +SubsystemFlags=DontReplicateFlag + +[GeneratorD] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser5 +SubsystemFlags=DontReplicateFlag + +[Avionics] +Type=SensorClassID +Include=sensor.sub +HeatSink=Condenser2 +VoltageSource=GeneratorD +AuxScreenNumber=5 +SubsystemFlags=DontReplicateFlag + +AuxScreenPlacement=2 +[Myomers] +Type=MyomersClassID +Include=myomers.sub +HeatSink=Condenser5 +VoltageSource=GeneratorD +AuxScreenNumber=6 +SubsystemFlags=DontReplicateFlag + +AuxScreenPlacement=0 +[Gyroscope] +Type=GyroscopeClassID +Include=gyro.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag + +[Torso] +Type=TorsoClassID +Include=torsolmt.sub +WatchedSubsystem=Myomers + +[HUD] +Type=HUDClassID +Include=hud.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag + +[Searchlight] +Type=SearchlightClassID +Include=srchlite.sub +WatchedSubsystem=Avionics +SegmentPageName=sitelight + +[ThermalSight] +Type=ThermalSightClassID +Include=Thermal.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag +[AmmoBinAFC25] +Type=AmmoBinClassID +Include=ammafc25.sub +WatchedSubsystem=AFC25 +AmmoCount=25 +[AFC25] +AmmoBin=AmmoBinAFC25 +Type=ProjectileWeaponClassID +Include=afc25.sub +SegmentPageName=sitedgunport +PipPosition=1 +VoltageSource=GeneratorD +HeatSink=Condenser5 +AuxScreenNumber=7 +AuxScreenPlacement=5 +[ERMLaser] +Type=EmitterClassID +Include=ermlaser.sub +SegmentPageName=sitelfgunport +SiteOffset=0.2 -0.2 0 +PipPosition=1 +VoltageSource=GeneratorA +HeatSink=Condenser1 +AuxScreenNumber=2 +AuxScreenPlacement=1 +[ERSLaser] +Type=EmitterClassID +Include=erslaser.sub +SegmentPageName=siterfgunport +SiteOffset=-0.2 -0.2 0 +PipPosition=1 +VoltageSource=GeneratorC +HeatSink=Condenser3 +AuxScreenNumber=9 +AuxScreenPlacement=3 +[AmmoBinNRK5_1] +Type=AmmoBinClassID +Include=ammnrk5.sub +WatchedSubsystem=NRK5_1 +AmmoCount=18 +[NRK5_1] +AmmoBin=AmmoBinNRK5_1 +Type=MissileLauncherClassID +Include=nrk5.sub +SegmentPageName=sitelmissleport +PipPosition=1 +VoltageSource=GeneratorB +HeatSink=Condenser4 +AuxScreenNumber=1 +AuxScreenPlacement=4 +[AmmoBinNRK5_2] +Type=AmmoBinClassID +Include=ammnrk5.sub +WatchedSubsystem=NRK5_2 +AmmoCount=18 +[NRK5_2] +AmmoBin=AmmoBinNRK5_2 +Type=MissileLauncherClassID +Include=nrk5.sub +SegmentPageName=sitermissleport +PipPosition=2 +VoltageSource=GeneratorB +HeatSink=Condenser6 +AuxScreenNumber=10 +AuxScreenPlacement=6 +[MessageManager] +Type=SubsystemMessageManagerClassID +ExplosionModelFile=majhit 1.0 +TerrainHitExplosion=gndhit +RendererCompensateTime=0.3 +[MechTech] +Type=MechTechClassID +AlarmModel=mechalrm +SubsystemFlags=DontReplicateFlag diff --git a/CONTENT/BT/MODELS/OWN1DMG.EXP b/CONTENT/BT/MODELS/OWN1DMG.EXP new file mode 100644 index 0000000..c9b1598 --- /dev/null +++ b/CONTENT/BT/MODELS/OWN1DMG.EXP @@ -0,0 +1,28 @@ +[OneDamage] +ExplosionModelFile=dam1hit +DamageLevel=0.2 +TimeDelay=0.0 + +[TwoDamage] +ExplosionModelFile=dam2hit +DamageLevel=0.4 +TimeDelay=0.0 + +[ThreeDamage] +ExplosionModelFile=dam3hit +DamageLevel=0.6 +TimeDelay=0.0 + +[FourDamage] +ExplosionModelFile=dam4hit +DamageLevel=0.8 +TimeDelay=0.0 + +[DestroyedExplosion] +ExplosionModelFile=desthit +GraphicState=Destroyed + +[GoneExplosion] +ExplosionModelFile=desthit +GraphicState=Gone + diff --git a/CONTENT/BT/MODELS/OWN1DMG.TBL b/CONTENT/BT/MODELS/OWN1DMG.TBL new file mode 100644 index 0000000..6247f3d --- /dev/null +++ b/CONTENT/BT/MODELS/OWN1DMG.TBL @@ -0,0 +1,182 @@ +[LeftFoot] +DamageZone=dz_lfoot 0.5 +DamageZone=dz_ldleg 0.3 +DamageZone=dz_rfoot 0.2 + +[RightFoot] +DamageZone=dz_rfoot 0.5 +DamageZone=dz_rdleg 0.3 +DamageZone=dz_lfoot 0.2 + +[LeftLeg] +DamageZone=dz_luleg 0.4 +DamageZone=dz_ldleg 0.4 +DamageZone=dz_ruleg 0.1 +DamageZone=dz_rdleg 0.1 + +[RightLeg] +DamageZone=dz_ruleg 0.4 +DamageZone=dz_rdleg 0.4 +DamageZone=dz_luleg 0.1 +DamageZone=dz_ldleg 0.1 + +[LeftHip] +DamageZone=dz_luleg 0.4 +DamageZone=dz_ltorso 0.3 +DamageZone=dz_rearltorso 0.3 + +[FrontHip] +DamageZone=dz_luleg 0.4 +DamageZone=dz_ruleg 0.4 +DamageZone=dz_dtorso 0.2 + +[RearHip] +DamageZone=dz_luleg 0.4 +DamageZone=dz_ruleg 0.4 +DamageZone=dz_reardtorso 0.2 + +[RightHip] +DamageZone=dz_ruleg 0.4 +DamageZone=dz_rtorso 0.3 +DamageZone=dz_rearrtorso 0.3 + +[LeftWaist] +DamageZone=dz_ltorso 0.15 +DamageZone=dz_rearltorso 0.15 +DamageZone=dz_lmissle 0.2 +DamageZone=dz_dtorso 0.25 +DamageZone=dz_reardtorso 0.25 + +[FrontWaist] +DamageZone=dz_rmissle 0.1 +DamageZone=dz_lmissle 0.1 +DamageZone=dz_ltorso 0.2 +DamageZone=dz_rtorso 0.2 +DamageZone=dz_dtorso 0.4 + +[RearWaist] +DamageZone=dz_rmissle 0.1 +DamageZone=dz_lmissle 0.1 +DamageZone=dz_rearltorso 0.2 +DamageZone=dz_rearrtorso 0.2 +DamageZone=dz_reardtorso 0.4 + +[RightWaist] +DamageZone=dz_rtorso 0.15 +DamageZone=dz_rearrtorso 0.15 +DamageZone=dz_rmissle 0.2 +DamageZone=dz_dtorso 0.25 +DamageZone=dz_reardtorso 0.25 + +[LeftChest] +DamageZone=dz_lmissle 0.2 +DamageZone=dz_ltorso 0.2 +DamageZone=dz_rearltorso 0.2 +DamageZone=dz_utorso 0.2 +DamageZone=dz_rearutorso 0.2 + +[RightChest] +DamageZone=dz_rmissle 0.2 +DamageZone=dz_rtorso 0.2 +DamageZone=dz_rearrtorso 0.2 +DamageZone=dz_utorso 0.2 +DamageZone=dz_rearutorso 0.2 + +[FrontChest] +DamageZone=dz_lmissle 0.1 +DamageZone=dz_rmissle 0.1 +DamageZone=dz_ltorso 0.1 +DamageZone=dz_rtorso 0.1 +DamageZone=dz_utorso 0.5 +DamageZone=dz_searchlight 0.1 + +[RearChest] +DamageZone=dz_lmissle 0.05 +DamageZone=dz_rmissle 0.05 +DamageZone=dz_rearltorso 0.15 +DamageZone=dz_rearrtorso 0.15 +DamageZone=dz_rearutorso 0.5 +DamageZone=dz_utorso 0.1 + +[TopLeft] +DamageZone=dz_searchlight 1.0 + +[TopRight] +DamageZone=dz_searchlight 1.0 + +[Layer1] +PieSlice=RightFoot +PieSlice=RightFoot +PieSlice=LeftFoot +PieSlice=LeftFoot +PieSlice=LeftFoot +PieSlice=LeftFoot +PieSlice=RightFoot +PieSlice=RightFoot +RotateWithTorso=False + +[Layer2] +PieSlice=RightLeg +PieSlice=RightLeg +PieSlice=LeftLeg +PieSlice=LeftLeg +PieSlice=LeftLeg +PieSlice=LeftLeg +PieSlice=RightLeg +PieSlice=RightLeg +RotateWithTorso=False + +[Layer3] +PieSlice=RightLeg +PieSlice=RightLeg +PieSlice=LeftLeg +PieSlice=LeftLeg +PieSlice=LeftLeg +PieSlice=LeftLeg +PieSlice=RightLeg +PieSlice=RightLeg +RotateWithTorso=False + +[Layer4] +PieSlice=RightHip +PieSlice=FrontHip +PieSlice=FrontHip +PieSlice=LeftHip +PieSlice=LeftHip +PieSlice=RearHip +PieSlice=RearHip +PieSlice=RightHip +RotateWithTorso=False + +[Layer5] +PieSlice=RightWaist +PieSlice=FrontWaist +PieSlice=FrontWaist +PieSlice=LeftWaist +PieSlice=LeftWaist +PieSlice=RearWaist +PieSlice=RearWaist +PieSlice=RightWaist +RotateWithTorso=False + +[Layer6] +PieSlice=RightChest +PieSlice=FrontChest +PieSlice=FrontChest +PieSlice=LeftChest +PieSlice=LeftChest +PieSlice=RearChest +PieSlice=RearChest +PieSlice=RightChest +RotateWithTorso=False + +[Layer7] +PieSlice=TopRight +PieSlice=TopRight +PieSlice=TopLeft +PieSlice=TopLeft +PieSlice=TopLeft +PieSlice=TopLeft +PieSlice=TopRight +PieSlice=TopRight +RotateWithTorso=False diff --git a/CONTENT/BT/MODELS/OWN1L4.CTL b/CONTENT/BT/MODELS/OWN1L4.CTL new file mode 100644 index 0000000..9001826 --- /dev/null +++ b/CONTENT/BT/MODELS/OWN1L4.CTL @@ -0,0 +1,731 @@ +[StickPosition_JP] +//----------------------------------------------------------------------- +// Joystick +//----------------------------------------------------------------------- +IOMapping=JoystickPhysical +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=StickPosition +Mode=ModeAlwaysActive + +[Throttle_ST] +//----------------------------------------------------------------------- +// Throttle +//----------------------------------------------------------------------- +IOMapping=ScalarThrottle +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=ThrottlePosition +Mode=ModeAlwaysActive + +//----------------------------------------------------------------------- +// Misc. switches +//----------------------------------------------------------------------- +[ReverseThrust_BT1] +IOMapping=ButtonThrottle1 +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=ReverseThrust +Mode=ModeAlwaysActive + +[TorsoCenter_BJHU] +IOMapping=ButtonJoystickHatUp +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoCenter +Mode=ModeAlwaysActive + +[LookLeft_BJHL] +IOMapping=ButtonJoystickHatLeft +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=LookLeft +Mode=ModeAlwaysActive + +[LookRight_BJHR] +IOMapping=ButtonJoystickHatRight +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=LookRight +Mode=ModeAlwaysActive + +[LookBack_BJHD] +IOMapping=ButtonJoystickHatDown +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=LookBehind +Mode=ModeAlwaysActive + +//----------------------------------------------------------------------- +// Secondary mappings +//----------------------------------------------------------------------- +[Button_Sec_1] // Zoom radar in (magnify image) +IOMapping=ButtonSecondary1 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=ZoomIn +Mode=ModeAlwaysActive + +[Button_Sec_2] // Zoom radar out (reduce image) +IOMapping=ButtonSecondary2 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=ZoomOut +Mode=ModeAlwaysActive + +// +// 'Heat vision' mapped to secondary +// SGM 1/6/97 + +[Button_Sec_3] // Toggle heat vision +IOMapping=ButtonSecondary3 +Type=EventMapping +Subsystem=ThermalSight +MessageID=ToggleLamp +Mode=ModeAlwaysActive + +// +// 'Duck' remapped to real message and location. +// GDU 7/9/96 + +[Button_Sec_4] // Request crouch position +IOMapping=ButtonSecondary4 +Type=EventMapping +MessageID=DuckRequest +Mode=ModeAlwaysActive + +[Button_Sec_5] // Toggle searchlight +IOMapping=ButtonSecondary5 +Type=EventMapping +Subsystem=Searchlight +MessageID=ToggleLamp +Mode=ModeAlwaysActive + +[Button_Sec_6] // Cycle through damage display modes +IOMapping=ButtonSecondary6 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=CycleDisplayMode +Mode=ModeAlwaysActive + +[Button_Sec_7] // Cycle through control modes +IOMapping=ButtonSecondary7 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=CycleControlMode +Mode=ModeAlwaysActive + +// ButtonSecondary8 presently unused + +[Button_Sec_9] // Toggle generator 'a' +IOMapping=ButtonSecondary9 +Type=EventMapping +Subsystem=GeneratorA +MessageID=ToggleGeneratorOnOff +Mode=ModeAlwaysActive + +[Button_Sec_10] // Toggle generator 'b' +IOMapping=ButtonSecondary10 +Type=EventMapping +Subsystem=GeneratorB +MessageID=ToggleGeneratorOnOff +Mode=ModeAlwaysActive + +[Button_Sec_11] // Toggle generator 'c' +IOMapping=ButtonSecondary11 +Type=EventMapping +Subsystem=GeneratorC +MessageID=ToggleGeneratorOnOff +Mode=ModeAlwaysActive + +[Button_Sec_12] // Toggle generator 'd' +IOMapping=ButtonSecondary12 +Type=EventMapping +Subsystem=GeneratorD +MessageID=ToggleGeneratorOnOff +Mode=ModeAlwaysActive + +//----------------------------------------- +// Heat Management Screen Mappings +//----------------------------------------- +[Condenser1_Button] +IOMapping=ButtonAuxUpperLeft1 +Type=EventMapping +Subsystem=Condenser1 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Condenser2_Button] +IOMapping=ButtonAuxUpperLeft2 +Type=EventMapping +Subsystem=Condenser2 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Condenser3_Button] +IOMapping=ButtonAuxUpperLeft3 +Type=EventMapping +Subsystem=Condenser3 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Reservoir_Button] +IOMapping=ButtonAuxUpperLeft4 +Type=EventMapping +Subsystem=Reservoir +MessageID=InjectCoolant +Mode=ModeAlwaysActive + +[Condenser4_Button] +IOMapping=ButtonAuxUpperLeft5 +Type=EventMapping +Subsystem=Condenser4 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Condenser5_Button] +IOMapping=ButtonAuxUpperLeft6 +Type=EventMapping +Subsystem=Condenser5 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Condenser6_Button] +IOMapping=ButtonAuxUpperLeft7 +Type=EventMapping +Subsystem=Condenser6 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Reduce_Button] +IOMapping=ButtonAuxUpperLeft8 +Type=EventMapping +MessageID=BalanceCoolant +Mode=ModeAlwaysActive + +//----------------------------------------------------------------------- +// Aux 1 mappings +//----------------------------------------------------------------------- +//------------------------------------------ +// Aux 1 'Quad screen' mappings +//------------------------------------------ +[MFD1_to_Mode_1] // To mode 1 +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Eng1 +Mode=ModeMFD1Quad + +[MFD1_Configure_Trigger_1] // Configure +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Subsystem=NRK5_1 +MessageID=ConfigureMappables +Mode=ModeMFD1Quad + +[MFD1_to_Mode_2] // To mode 2 +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Eng2 +Mode=ModeMFD1Quad + +[MFD1_Configure_Trigger_2] // Configure +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Subsystem=ERMLaser +MessageID=ConfigureMappables +Mode=ModeMFD1Quad + +[Aux_1_Mode_1_to_MFD1] +IOMapping=ButtonAuxLowerLeft8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Quad +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_Select_GeneratorA] +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Subsystem=NRK5_1 +MessageID=SelectGeneratorA +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_Select_GeneratorB] +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Subsystem=NRK5_1 +MessageID=SelectGeneratorB +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_Select_GeneratorC] +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Subsystem=NRK5_1 +MessageID=SelectGeneratorC +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_Select_GeneratorD] +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Subsystem=NRK5_1 +MessageID=SelectGeneratorD +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_OPTION] +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Subsystem=NRK5_1 +MessageID=EjectAmmo +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Subsystem=NRK5_1 +MessageID=ToggleGeneratorMode +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_ToggleCooling] +IOMapping=ButtonAuxLowerLeft7 +Type=EventMapping +Subsystem=NRK5_1 +MessageID=ToggleCooling +Mode=ModeMFD1Eng1 + +//-------------------------------------------- +// Aux 1 'Mode 2' mappings, AuxScreenNumber=2 +//-------------------------------------------- +[Aux_1_Mode_2_to_MFD1] +IOMapping=ButtonAuxLowerLeft8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Quad +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_Select_GeneratorA] +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Subsystem=ERMLaser +MessageID=SelectGeneratorA +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_Select_GeneratorB] +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Subsystem=ERMLaser +MessageID=SelectGeneratorB +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_Select_GeneratorC] +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Subsystem=ERMLaser +MessageID=SelectGeneratorC +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_Select_GeneratorD] +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Subsystem=ERMLaser +MessageID=SelectGeneratorD +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_OPTION] +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Subsystem=ERMLaser +MessageID=ToggleSeekVoltage +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Subsystem=ERMLaser +MessageID=ToggleGeneratorMode +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_ToggleCooling] +IOMapping=ButtonAuxLowerLeft7 +Type=EventMapping +Subsystem=ERMLaser +MessageID=ToggleCooling +Mode=ModeMFD1Eng2 + +//--------------------------------------------- +// Aux 1 'Mode 3' mappings, AuxScreenNumber=3 +//--------------------------------------------- +[MFD2_to_Mode_1] +IOMapping=ButtonAuxUpperCenter1 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Eng1 +Mode=ModeMFD2Quad + +[MFD2_to_Mode_2] +IOMapping=ButtonAuxUpperCenter3 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Eng2 +Mode=ModeMFD2Quad + +[MFD2_to_Mode_3] +IOMapping=ButtonAuxUpperCenter5 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Eng3 +Mode=ModeMFD2Quad + +[MFD2_Configure_Trigger_3] +IOMapping=ButtonAuxUpperCenter6 +Type=EventMapping +Subsystem=AFC25 +MessageID=ConfigureMappables +Mode=ModeMFD2Quad + +[Aux_2_Mode_1_to_MFD2] +IOMapping=ButtonAuxUpperCenter8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Quad +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_Select_GeneratorA] +IOMapping=ButtonAuxUpperCenter1 +Type=EventMapping +Subsystem=Avionics +MessageID=SelectGeneratorA +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_Select_GeneratorB] +IOMapping=ButtonAuxUpperCenter2 +Type=EventMapping +Subsystem=Avionics +MessageID=SelectGeneratorB +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_Select_GeneratorC] +IOMapping=ButtonAuxUpperCenter3 +Type=EventMapping +Subsystem=Avionics +MessageID=SelectGeneratorC +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_Select_GeneratorD] +IOMapping=ButtonAuxUpperCenter4 +Type=EventMapping +Subsystem=Avionics +MessageID=SelectGeneratorD +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_ToggleGeneratorMode] +IOMapping=ButtonAuxUpperCenter6 +Type=EventMapping +Subsystem=Avionics +MessageID=ToggleGeneratorMode +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_ToggleCooling] +IOMapping=ButtonAuxUpperCenter7 +Type=EventMapping +Subsystem=Avionics +MessageID=ToggleCooling +Mode=ModeMFD2Eng1 + +//-------------------------------------------- +// Aux 2 'Mode 2' mappings, AuxScreenNumber=10 +//-------------------------------------------- +[Aux_2_Mode_2_to_MFD2] +IOMapping=ButtonAuxUpperCenter8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Quad +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_Select_GeneratorA] +IOMapping=ButtonAuxUpperCenter1 +Type=EventMapping +Subsystem=Myomers +MessageID=SelectGeneratorA +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_Select_GeneratorB] +IOMapping=ButtonAuxUpperCenter2 +Type=EventMapping +Subsystem=Myomers +MessageID=SelectGeneratorB +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_Select_GeneratorC] +IOMapping=ButtonAuxUpperCenter3 +Type=EventMapping +Subsystem=Myomers +MessageID=SelectGeneratorC +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_Select_GeneratorD] +IOMapping=ButtonAuxUpperCenter4 +Type=EventMapping +Subsystem=Myomers +MessageID=SelectGeneratorD +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_OPTION] +IOMapping=ButtonAuxUpperCenter5 +Type=EventMapping +Subsystem=Myomers +MessageID=ToggleSeekVoltage +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_ToggleGeneratorMode] +IOMapping=ButtonAuxUpperCenter6 +Type=EventMapping +Subsystem=Myomers +MessageID=ToggleGeneratorMode +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_ToggleCooling] +IOMapping=ButtonAuxUpperCenter7 +Type=EventMapping +Subsystem=Myomers +MessageID=ToggleCooling +Mode=ModeMFD2Eng2 + +//-------------------------------------------- +// Aux 3 'Mode 3' mappings, AuxScreenNumber=11 +//-------------------------------------------- +[Aux_2_Mode_3_to_MFD2] +IOMapping=ButtonAuxUpperCenter8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Quad +Mode=ModeMFD2Eng3 + +[Aux_2_Mode_3_Select_GeneratorA] +IOMapping=ButtonAuxUpperCenter1 +Type=EventMapping +Subsystem=AFC25 +MessageID=SelectGeneratorA +Mode=ModeMFD2Eng3 + +[Aux_2_Mode_3_Select_GeneratorB] +IOMapping=ButtonAuxUpperCenter2 +Type=EventMapping +Subsystem=AFC25 +MessageID=SelectGeneratorB +Mode=ModeMFD2Eng3 + +[Aux_2_Mode_3_Select_GeneratorC] +IOMapping=ButtonAuxUpperCenter3 +Type=EventMapping +Subsystem=AFC25 +MessageID=SelectGeneratorC +Mode=ModeMFD2Eng3 + +[Aux_2_Mode_3_Select_GeneratorD] +IOMapping=ButtonAuxUpperCenter4 +Type=EventMapping +Subsystem=AFC25 +MessageID=SelectGeneratorD +Mode=ModeMFD2Eng3 + +[Aux_2_Mode_3_OPTION] +IOMapping=ButtonAuxUpperCenter5 +Type=EventMapping +Subsystem=AFC25 +MessageID=EjectAmmo +Mode=ModeMFD2Eng3 + +[Aux_2_Mode_3_ToggleGeneratorMode] +IOMapping=ButtonAuxUpperCenter6 +Type=EventMapping +Subsystem=AFC25 +MessageID=ToggleGeneratorMode +Mode=ModeMFD2Eng3 + +[Aux_2_Mode_3_ToggleCooling] +IOMapping=ButtonAuxUpperCenter7 +Type=EventMapping +Subsystem=AFC25 +MessageID=ToggleCooling +Mode=ModeMFD2Eng3 + +//--------------------------------------------- +// Aux 3 'Mode 4' mappings, AuxScreenNumber=12 +//--------------------------------------------- +[MFD3_to_Mode_1] +IOMapping=ButtonAuxLowerRight1 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Eng1 +Mode=ModeMFD3Quad + +[MFD3_Configure_Trigger_1] +IOMapping=ButtonAuxLowerRight2 +Type=EventMapping +Subsystem=ERSLaser +MessageID=ConfigureMappables +Mode=ModeMFD3Quad + +[MFD3_to_Mode_2] +IOMapping=ButtonAuxLowerRight3 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Eng2 +Mode=ModeMFD3Quad + +[MFD3_Configure_Trigger_2] +IOMapping=ButtonAuxLowerRight4 +Type=EventMapping +Subsystem=NRK5_2 +MessageID=ConfigureMappables +Mode=ModeMFD3Quad + +[Aux_3_Mode_1_to_MFD3] +IOMapping=ButtonAuxLowerRight8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Quad +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_Select_GeneratorA] +IOMapping=ButtonAuxLowerRight1 +Type=EventMapping +Subsystem=ERSLaser +MessageID=SelectGeneratorA +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_Select_GeneratorB] +IOMapping=ButtonAuxLowerRight2 +Type=EventMapping +Subsystem=ERSLaser +MessageID=SelectGeneratorB +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_Select_GeneratorC] +IOMapping=ButtonAuxLowerRight3 +Type=EventMapping +Subsystem=ERSLaser +MessageID=SelectGeneratorC +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_Select_GeneratorD] +IOMapping=ButtonAuxLowerRight4 +Type=EventMapping +Subsystem=ERSLaser +MessageID=SelectGeneratorD +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_OPTION] +IOMapping=ButtonAuxLowerRight5 +Type=EventMapping +Subsystem=ERSLaser +MessageID=ToggleSeekVoltage +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerRight6 +Type=EventMapping +Subsystem=ERSLaser +MessageID=ToggleGeneratorMode +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_ToggleCooling] +IOMapping=ButtonAuxLowerRight7 +Type=EventMapping +Subsystem=ERSLaser +MessageID=ToggleCooling +Mode=ModeMFD3Eng1 + +//-------------------------------------------- +// Aux 3 'Mode 2' mappings, AuxScreenNumber=10 +//-------------------------------------------- +[Aux_3_Mode_2_to_MFD3] +IOMapping=ButtonAuxLowerRight8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Quad +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_Select_GeneratorA] +IOMapping=ButtonAuxLowerRight1 +Type=EventMapping +Subsystem=NRK5_2 +MessageID=SelectGeneratorA +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_Select_GeneratorB] +IOMapping=ButtonAuxLowerRight2 +Type=EventMapping +Subsystem=NRK5_2 +MessageID=SelectGeneratorB +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_Select_GeneratorC] +IOMapping=ButtonAuxLowerRight3 +Type=EventMapping +Subsystem=NRK5_2 +MessageID=SelectGeneratorC +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_Select_GeneratorD] +IOMapping=ButtonAuxLowerRight4 +Type=EventMapping +Subsystem=NRK5_2 +MessageID=SelectGeneratorD +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_OPTION] +IOMapping=ButtonAuxLowerRight5 +Type=EventMapping +Subsystem=NRK5_2 +MessageID=EjectAmmo +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerRight6 +Type=EventMapping +Subsystem=NRK5_2 +MessageID=ToggleGeneratorMode +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_ToggleCooling] +IOMapping=ButtonAuxLowerRight7 +Type=EventMapping +Subsystem=NRK5_2 +MessageID=ToggleCooling +Mode=ModeMFD3Eng2 + +//-------------------------------------------- +// Aux 3 'Mode 3' mappings, AuxScreenNumber=11 +//-------------------------------------------- +[AFC25_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=AFC25 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser +AttributeID=TriggerState +Mode=ModeNonMapping +[NRK5_1_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=NRK5_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[NRK5_2_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=NRK5_2 +AttributeID=TriggerState +Mode=ModeNonMapping diff --git a/CONTENT/BT/MODELS/OWN1THR.CTL b/CONTENT/BT/MODELS/OWN1THR.CTL new file mode 100644 index 0000000..190ad1b --- /dev/null +++ b/CONTENT/BT/MODELS/OWN1THR.CTL @@ -0,0 +1,51 @@ +[StickPosition_JP] +IOMapping=JoystickPhysical +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=StickPosition +Mode=ModeAlwaysActive + +[TorsoLeft_BJHL] +IOMapping=ButtonJoystickHatLeft +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoLeft +Mode=ModeAlwaysActive + +[TorsoRight_BJHR] +IOMapping=ButtonJoystickHatRight +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoRight +Mode=ModeAlwaysActive + +[AFC25_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=AFC25 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser +AttributeID=TriggerState +Mode=ModeNonMapping +[NRK5_1_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=NRK5_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[NRK5_2_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=NRK5_2 +AttributeID=TriggerState +Mode=ModeNonMapping diff --git a/CONTENT/BT/MODELS/OWNDEAD.MOD b/CONTENT/BT/MODELS/OWNDEAD.MOD new file mode 100644 index 0000000..83959ea --- /dev/null +++ b/CONTENT/BT/MODELS/OWNDEAD.MOD @@ -0,0 +1,9 @@ +[video] +object=104 3 4 5 1007 15 1001 + +[audio] +external=brnext.scp + +[gamedata] +class=ExplosionClassID +ExplosionDuration=9.0 diff --git a/CONTENT/BT/MODELS/OWNDMG.EXP b/CONTENT/BT/MODELS/OWNDMG.EXP new file mode 100644 index 0000000..c9b1598 --- /dev/null +++ b/CONTENT/BT/MODELS/OWNDMG.EXP @@ -0,0 +1,28 @@ +[OneDamage] +ExplosionModelFile=dam1hit +DamageLevel=0.2 +TimeDelay=0.0 + +[TwoDamage] +ExplosionModelFile=dam2hit +DamageLevel=0.4 +TimeDelay=0.0 + +[ThreeDamage] +ExplosionModelFile=dam3hit +DamageLevel=0.6 +TimeDelay=0.0 + +[FourDamage] +ExplosionModelFile=dam4hit +DamageLevel=0.8 +TimeDelay=0.0 + +[DestroyedExplosion] +ExplosionModelFile=desthit +GraphicState=Destroyed + +[GoneExplosion] +ExplosionModelFile=desthit +GraphicState=Gone + diff --git a/CONTENT/BT/MODELS/OWNL4.CTL b/CONTENT/BT/MODELS/OWNL4.CTL new file mode 100644 index 0000000..00d46b6 --- /dev/null +++ b/CONTENT/BT/MODELS/OWNL4.CTL @@ -0,0 +1,974 @@ +[StickPosition_JP] +//----------------------------------------------------------------------- +// Joystick +//----------------------------------------------------------------------- +IOMapping=JoystickPhysical +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=StickPosition +Mode=ModeAlwaysActive + +[Throttle_ST] +//----------------------------------------------------------------------- +// Throttle +//----------------------------------------------------------------------- +IOMapping=ScalarThrottle +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=ThrottlePosition +Mode=ModeAlwaysActive + +//----------------------------------------------------------------------- +// Misc. switches +//----------------------------------------------------------------------- +[ReverseThrust_BT1] +IOMapping=ButtonThrottle1 +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=ReverseThrust +Mode=ModeAlwaysActive + +[TorsoCenter_BJHU] +IOMapping=ButtonJoystickHatUp +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoCenter +Mode=ModeAlwaysActive + +[LookLeft_BJHL] +IOMapping=ButtonJoystickHatLeft +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=LookLeft +Mode=ModeAlwaysActive + +[LookRight_BJHR] +IOMapping=ButtonJoystickHatRight +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=LookRight +Mode=ModeAlwaysActive + +[LookBack_BJHD] +IOMapping=ButtonJoystickHatDown +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=LookBehind +Mode=ModeAlwaysActive + +//----------------------------------------------------------------------- +// Secondary mappings +//----------------------------------------------------------------------- +[Button_Sec_1] // Zoom radar in (magnify image) +IOMapping=ButtonSecondary1 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=ZoomIn +Mode=ModeAlwaysActive + +[Button_Sec_2] // Zoom radar out (reduce image) +IOMapping=ButtonSecondary2 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=ZoomOut +Mode=ModeAlwaysActive + +// +// 'Heat vision' mapped to secondary +// SGM 1/6/97 + +[Button_Sec_3] // Toggle heat vision +IOMapping=ButtonSecondary3 +Type=EventMapping +Subsystem=ThermalSight +MessageID=ToggleLamp +Mode=ModeAlwaysActive + +// +// 'Duck' remapped to real message and location. +// GDU 7/9/96 + +[Button_Sec_4] // Request crouch position +IOMapping=ButtonSecondary4 +Type=EventMapping +MessageID=DuckRequest +Mode=ModeAlwaysActive + +[Button_Sec_5] // Toggle searchlight +IOMapping=ButtonSecondary5 +Type=EventMapping +Subsystem=Searchlight +MessageID=ToggleLamp +Mode=ModeAlwaysActive + +[Button_Sec_6] // Cycle through damage display modes +IOMapping=ButtonSecondary6 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=CycleDisplayMode +Mode=ModeAlwaysActive + +[Button_Sec_7] // Cycle through control modes +IOMapping=ButtonSecondary7 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=CycleControlMode +Mode=ModeAlwaysActive + +// ButtonSecondary8 presently unused + +[Button_Sec_9] // Toggle generator 'a' +IOMapping=ButtonSecondary9 +Type=EventMapping +Subsystem=GeneratorA +MessageID=ToggleGeneratorOnOff +Mode=ModeAlwaysActive + +[Button_Sec_10] // Toggle generator 'b' +IOMapping=ButtonSecondary10 +Type=EventMapping +Subsystem=GeneratorB +MessageID=ToggleGeneratorOnOff +Mode=ModeAlwaysActive + +[Button_Sec_11] // Toggle generator 'c' +IOMapping=ButtonSecondary11 +Type=EventMapping +Subsystem=GeneratorC +MessageID=ToggleGeneratorOnOff +Mode=ModeAlwaysActive + +[Button_Sec_12] // Toggle generator 'd' +IOMapping=ButtonSecondary12 +Type=EventMapping +Subsystem=GeneratorD +MessageID=ToggleGeneratorOnOff +Mode=ModeAlwaysActive + +//----------------------------------------- +// Heat Management Screen Mappings +//----------------------------------------- +[Condenser1_Button] +IOMapping=ButtonAuxUpperLeft1 +Type=EventMapping +Subsystem=Condenser1 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Condenser2_Button] +IOMapping=ButtonAuxUpperLeft2 +Type=EventMapping +Subsystem=Condenser2 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Condenser3_Button] +IOMapping=ButtonAuxUpperLeft3 +Type=EventMapping +Subsystem=Condenser3 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Reservoir_Button] +IOMapping=ButtonAuxUpperLeft4 +Type=EventMapping +Subsystem=Reservoir +MessageID=InjectCoolant +Mode=ModeAlwaysActive + +[Condenser4_Button] +IOMapping=ButtonAuxUpperLeft5 +Type=EventMapping +Subsystem=Condenser4 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Condenser5_Button] +IOMapping=ButtonAuxUpperLeft6 +Type=EventMapping +Subsystem=Condenser5 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Condenser6_Button] +IOMapping=ButtonAuxUpperLeft7 +Type=EventMapping +Subsystem=Condenser6 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Reduce_Button] +IOMapping=ButtonAuxUpperLeft8 +Type=EventMapping +MessageID=BalanceCoolant +Mode=ModeAlwaysActive + +//----------------------------------------------------------------------- +// Aux 1 mappings +//----------------------------------------------------------------------- +//------------------------------------------ +// Aux 1 'Quad screen' mappings +//------------------------------------------ +[MFD1_to_Mode_1] // To mode 1 +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Eng1 +Mode=ModeMFD1Quad + +[MFD1_Configure_Trigger_1] // Configure +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Subsystem=SRM6_1 +MessageID=ConfigureMappables +Mode=ModeMFD1Quad + +[MFD1_to_Mode_2] // To mode 2 +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Eng2 +Mode=ModeMFD1Quad + +[MFD1_Configure_Trigger_2] // Configure +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Subsystem=ERMLaser_1 +MessageID=ConfigureMappables +Mode=ModeMFD1Quad + +[MFD1_to_Mode_3] // To mode 3 +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Eng3 +Mode=ModeMFD1Quad + +[MFD1_Configure_Trigger_3] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Subsystem=ERSLaser_1 +MessageID=ConfigureMappables +Mode=ModeMFD1Quad + +[MFD1_to_Mode_4] // To mode 4 +IOMapping=ButtonAuxLowerLeft7 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Eng4 +Mode=ModeMFD1Quad + +[MFD1_Configure_Trigger_4] // Configure +IOMapping=ButtonAuxLowerLeft8 +Type=EventMapping +Subsystem=ERSLaser_2 +MessageID=ConfigureMappables +Mode=ModeMFD1Quad + +//---------------------------------------------- +// Aux 1 'Mode 1' mappings, AuxScreenNumber=1 +//---------------------------------------------- +[Aux_1_Mode_1_to_MFD1] +IOMapping=ButtonAuxLowerLeft8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Quad +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_Select_GeneratorA] +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Subsystem=SRM6_1 +MessageID=SelectGeneratorA +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_Select_GeneratorB] +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Subsystem=SRM6_1 +MessageID=SelectGeneratorB +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_Select_GeneratorC] +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Subsystem=SRM6_1 +MessageID=SelectGeneratorC +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_Select_GeneratorD] +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Subsystem=SRM6_1 +MessageID=SelectGeneratorD +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_OPTION] +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Subsystem=SRM6_1 +MessageID=EjectAmmo +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Subsystem=SRM6_1 +MessageID=ToggleGeneratorMode +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_ToggleCooling] +IOMapping=ButtonAuxLowerLeft7 +Type=EventMapping +Subsystem=SRM6_1 +MessageID=ToggleCooling +Mode=ModeMFD1Eng1 + +//-------------------------------------------- +// Aux 1 'Mode 2' mappings, AuxScreenNumber=2 +//-------------------------------------------- +[Aux_1_Mode_2_to_MFD1] +IOMapping=ButtonAuxLowerLeft8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Quad +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_Select_GeneratorA] +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Subsystem=ERMLaser_1 +MessageID=SelectGeneratorA +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_Select_GeneratorB] +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Subsystem=ERMLaser_1 +MessageID=SelectGeneratorB +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_Select_GeneratorC] +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Subsystem=ERMLaser_1 +MessageID=SelectGeneratorC +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_Select_GeneratorD] +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Subsystem=ERMLaser_1 +MessageID=SelectGeneratorD +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_OPTION] +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Subsystem=ERMLaser_1 +MessageID=ToggleSeekVoltage +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Subsystem=ERMLaser_1 +MessageID=ToggleGeneratorMode +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_ToggleCooling] +IOMapping=ButtonAuxLowerLeft7 +Type=EventMapping +Subsystem=ERMLaser_1 +MessageID=ToggleCooling +Mode=ModeMFD1Eng2 + +//--------------------------------------------- +// Aux 1 'Mode 3' mappings, AuxScreenNumber=3 +//--------------------------------------------- +[Aux_1_Mode_3_to_MFD1] +IOMapping=ButtonAuxLowerLeft8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Quad +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_Select_GeneratorA] +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Subsystem=ERSLaser_1 +MessageID=SelectGeneratorA +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_Select_GeneratorB] +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Subsystem=ERSLaser_1 +MessageID=SelectGeneratorB +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_Select_GeneratorC] +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Subsystem=ERSLaser_1 +MessageID=SelectGeneratorC +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_Select_GeneratorD] +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Subsystem=ERSLaser_1 +MessageID=SelectGeneratorD +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_OPTION] +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Subsystem=ERSLaser_1 +MessageID=ToggleSeekVoltage +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Subsystem=ERSLaser_1 +MessageID=ToggleGeneratorMode +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_ToggleCooling] +IOMapping=ButtonAuxLowerLeft7 +Type=EventMapping +Subsystem=ERSLaser_1 +MessageID=ToggleCooling +Mode=ModeMFD1Eng3 + +//-------------------------------------------- +// Aux 1 "Mode 4" Mappings, AuxScreenNumber=4 +//-------------------------------------------- +[Aux_1_Mode_4_to_MFD1] +IOMapping=ButtonAuxLowerLeft8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Quad +Mode=ModeMFD1Eng4 + +[Aux_1_Mode_4_Select_GeneratorA] +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Subsystem=ERSLaser_2 +MessageID=SelectGeneratorA +Mode=ModeMFD1Eng4 + +[Aux_1_Mode_4_Select_GeneratorB] +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Subsystem=ERSLaser_2 +MessageID=SelectGeneratorB +Mode=ModeMFD1Eng4 + +[Aux_1_Mode_4_Select_GeneratorC] +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Subsystem=ERSLaser_2 +MessageID=SelectGeneratorC +Mode=ModeMFD1Eng4 + +[Aux_1_Mode_4_Select_GeneratorD] +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Subsystem=ERSLaser_2 +MessageID=SelectGeneratorD +Mode=ModeMFD1Eng4 + +[Aux_1_Mode_4_OPTION] +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Subsystem=ERSLaser_2 +MessageID=ToggleSeekVoltage +Mode=ModeMFD1Eng4 + +[Aux_1_Mode_4_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Subsystem=ERSLaser_2 +MessageID=ToggleGeneratorMode +Mode=ModeMFD1Eng4 + +[Aux_1_Mode_4_ToggleCooling] +IOMapping=ButtonAuxLowerLeft7 +Type=EventMapping +Subsystem=ERSLaser_2 +MessageID=ToggleCooling +Mode=ModeMFD1Eng4 + + +//----------------------------------------------------------------------- +// Aux 2 mappings +//----------------------------------------------------------------------- +//------------------------------------------ +// Aux 2 'Quad screen' mappings +//------------------------------------------ +[MFD2_to_Mode_1] +IOMapping=ButtonAuxUpperCenter1 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Eng1 +Mode=ModeMFD2Quad + +[MFD2_to_Mode_2] +IOMapping=ButtonAuxUpperCenter3 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Eng2 +Mode=ModeMFD2Quad + +[Aux_2_Mode_1_to_MFD2] +IOMapping=ButtonAuxUpperCenter8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Quad +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_Select_GeneratorA] +IOMapping=ButtonAuxUpperCenter1 +Type=EventMapping +Subsystem=Avionics +MessageID=SelectGeneratorA +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_Select_GeneratorB] +IOMapping=ButtonAuxUpperCenter2 +Type=EventMapping +Subsystem=Avionics +MessageID=SelectGeneratorB +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_Select_GeneratorC] +IOMapping=ButtonAuxUpperCenter3 +Type=EventMapping +Subsystem=Avionics +MessageID=SelectGeneratorC +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_Select_GeneratorD] +IOMapping=ButtonAuxUpperCenter4 +Type=EventMapping +Subsystem=Avionics +MessageID=SelectGeneratorD +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_ToggleGeneratorMode] +IOMapping=ButtonAuxUpperCenter6 +Type=EventMapping +Subsystem=Avionics +MessageID=ToggleGeneratorMode +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_ToggleCooling] +IOMapping=ButtonAuxUpperCenter7 +Type=EventMapping +Subsystem=Avionics +MessageID=ToggleCooling +Mode=ModeMFD2Eng1 + +//-------------------------------------------- +// Aux 2 'Mode 2' mappings, AuxScreenNumber=10 +//-------------------------------------------- +[Aux_2_Mode_2_to_MFD2] +IOMapping=ButtonAuxUpperCenter8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Quad +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_Select_GeneratorA] +IOMapping=ButtonAuxUpperCenter1 +Type=EventMapping +Subsystem=Myomers +MessageID=SelectGeneratorA +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_Select_GeneratorB] +IOMapping=ButtonAuxUpperCenter2 +Type=EventMapping +Subsystem=Myomers +MessageID=SelectGeneratorB +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_Select_GeneratorC] +IOMapping=ButtonAuxUpperCenter3 +Type=EventMapping +Subsystem=Myomers +MessageID=SelectGeneratorC +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_Select_GeneratorD] +IOMapping=ButtonAuxUpperCenter4 +Type=EventMapping +Subsystem=Myomers +MessageID=SelectGeneratorD +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_OPTION] +IOMapping=ButtonAuxUpperCenter5 +Type=EventMapping +Subsystem=Myomers +MessageID=ToggleSeekVoltage +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_ToggleGeneratorMode] +IOMapping=ButtonAuxUpperCenter6 +Type=EventMapping +Subsystem=Myomers +MessageID=ToggleGeneratorMode +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_ToggleCooling] +IOMapping=ButtonAuxUpperCenter7 +Type=EventMapping +Subsystem=Myomers +MessageID=ToggleCooling +Mode=ModeMFD2Eng2 + +//-------------------------------------------- +// Aux 3 'Mode 3' mappings, AuxScreenNumber=11 +//-------------------------------------------- +[MFD3_to_Mode_1] +IOMapping=ButtonAuxLowerRight1 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Eng1 +Mode=ModeMFD3Quad + +[MFD3_Configure_Trigger_1] +IOMapping=ButtonAuxLowerRight2 +Type=EventMapping +Subsystem=ERMLaser_2 +MessageID=ConfigureMappables +Mode=ModeMFD3Quad + +[MFD3_to_Mode_2] +IOMapping=ButtonAuxLowerRight3 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Eng2 +Mode=ModeMFD3Quad + +[MFD3_Configure_Trigger_2] +IOMapping=ButtonAuxLowerRight4 +Type=EventMapping +Subsystem=SRM6_2 +MessageID=ConfigureMappables +Mode=ModeMFD3Quad + +[MFD3_to_Mode_3] +IOMapping=ButtonAuxLowerRight5 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Eng3 +Mode=ModeMFD3Quad + +[MFD3_Configure_Trigger_3] +IOMapping=ButtonAuxLowerRight6 +Type=EventMapping +Subsystem=ERSLaser_3 +MessageID=ConfigureMappables +Mode=ModeMFD3Quad + +[MFD3_to_Mode_4] +IOMapping=ButtonAuxLowerRight7 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Eng4 +Mode=ModeMFD3Quad + +[MFD3_Configure_Trigger_4] +IOMapping=ButtonAuxLowerRight8 +Type=EventMapping +Subsystem=ERSLaser_4 +MessageID=ConfigureMappables +Mode=ModeMFD3Quad + +//-------------------------------------------- +// Aux 3 'Mode 1' mappings, AuxScreenNumber=9 +//-------------------------------------------- +[Aux_3_Mode_1_to_MFD3] +IOMapping=ButtonAuxLowerRight8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Quad +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_Select_GeneratorA] +IOMapping=ButtonAuxLowerRight1 +Type=EventMapping +Subsystem=ERMLaser_2 +MessageID=SelectGeneratorA +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_Select_GeneratorB] +IOMapping=ButtonAuxLowerRight2 +Type=EventMapping +Subsystem=ERMLaser_2 +MessageID=SelectGeneratorB +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_Select_GeneratorC] +IOMapping=ButtonAuxLowerRight3 +Type=EventMapping +Subsystem=ERMLaser_2 +MessageID=SelectGeneratorC +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_Select_GeneratorD] +IOMapping=ButtonAuxLowerRight4 +Type=EventMapping +Subsystem=ERMLaser_2 +MessageID=SelectGeneratorD +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_OPTION] +IOMapping=ButtonAuxLowerRight5 +Type=EventMapping +Subsystem=ERMLaser_2 +MessageID=ToggleSeekVoltage +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerRight6 +Type=EventMapping +Subsystem=ERMLaser_2 +MessageID=ToggleGeneratorMode +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_ToggleCooling] +IOMapping=ButtonAuxLowerRight7 +Type=EventMapping +Subsystem=ERMLaser_2 +MessageID=ToggleCooling +Mode=ModeMFD3Eng1 + +//-------------------------------------------- +// Aux 3 'Mode 2' mappings, AuxScreenNumber=10 +//-------------------------------------------- +[Aux_3_Mode_2_to_MFD3] +IOMapping=ButtonAuxLowerRight8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Quad +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_Select_GeneratorA] +IOMapping=ButtonAuxLowerRight1 +Type=EventMapping +Subsystem=SRM6_2 +MessageID=SelectGeneratorA +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_Select_GeneratorB] +IOMapping=ButtonAuxLowerRight2 +Type=EventMapping +Subsystem=SRM6_2 +MessageID=SelectGeneratorB +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_Select_GeneratorC] +IOMapping=ButtonAuxLowerRight3 +Type=EventMapping +Subsystem=SRM6_2 +MessageID=SelectGeneratorC +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_Select_GeneratorD] +IOMapping=ButtonAuxLowerRight4 +Type=EventMapping +Subsystem=SRM6_2 +MessageID=SelectGeneratorD +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_OPTION] +IOMapping=ButtonAuxLowerRight5 +Type=EventMapping +Subsystem=SRM6_2 +MessageID=EjectAmmo +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerRight6 +Type=EventMapping +Subsystem=SRM6_2 +MessageID=ToggleGeneratorMode +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_ToggleCooling] +IOMapping=ButtonAuxLowerRight7 +Type=EventMapping +Subsystem=SRM6_2 +MessageID=ToggleCooling +Mode=ModeMFD3Eng2 + +//-------------------------------------------- +// Aux 3 'Mode 3' mappings, AuxScreenNumber=11 +//-------------------------------------------- +[Aux_3_Mode_3_to_MFD3] +IOMapping=ButtonAuxLowerRight8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Quad +Mode=ModeMFD3Eng3 + +[Aux_3_Mode_3_Select_GeneratorA] +IOMapping=ButtonAuxLowerRight1 +Type=EventMapping +Subsystem=ERSLaser_3 +MessageID=SelectGeneratorA +Mode=ModeMFD3Eng3 + +[Aux_3_Mode_3_Select_GeneratorB] +IOMapping=ButtonAuxLowerRight2 +Type=EventMapping +Subsystem=ERSLaser_3 +MessageID=SelectGeneratorB +Mode=ModeMFD3Eng3 + +[Aux_3_Mode_3_Select_GeneratorC] +IOMapping=ButtonAuxLowerRight3 +Type=EventMapping +Subsystem=ERSLaser_3 +MessageID=SelectGeneratorC +Mode=ModeMFD3Eng3 + +[Aux_3_Mode_3_Select_GeneratorD] +IOMapping=ButtonAuxLowerRight4 +Type=EventMapping +Subsystem=ERSLaser_3 +MessageID=SelectGeneratorD +Mode=ModeMFD3Eng3 + +[Aux_3_Mode_3_OPTION] +IOMapping=ButtonAuxLowerRight5 +Type=EventMapping +Subsystem=ERSLaser_3 +MessageID=ToggleSeekVoltage +Mode=ModeMFD3Eng3 + +[Aux_3_Mode_3_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerRight6 +Type=EventMapping +Subsystem=ERSLaser_3 +MessageID=ToggleGeneratorMode +Mode=ModeMFD3Eng3 + +[Aux_3_Mode_3_ToggleCooling] +IOMapping=ButtonAuxLowerRight7 +Type=EventMapping +Subsystem=ERSLaser_3 +MessageID=ToggleCooling +Mode=ModeMFD3Eng3 + +//--------------------------------------------- +// Aux 3 'Mode 4' mappings, AuxScreenNumber=12 +//--------------------------------------------- +[Aux_3_Mode_4_to_MFD3] +IOMapping=ButtonAuxLowerRight8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Quad +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_Select_GeneratorA] +IOMapping=ButtonAuxLowerRight1 +Type=EventMapping +Subsystem=ERSLaser_4 +MessageID=SelectGeneratorA +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_Select_GeneratorB] +IOMapping=ButtonAuxLowerRight2 +Type=EventMapping +Subsystem=ERSLaser_4 +MessageID=SelectGeneratorB +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_Select_GeneratorC] +IOMapping=ButtonAuxLowerRight3 +Type=EventMapping +Subsystem=ERSLaser_4 +MessageID=SelectGeneratorC +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_Select_GeneratorD] +IOMapping=ButtonAuxLowerRight4 +Type=EventMapping +Subsystem=ERSLaser_4 +MessageID=SelectGeneratorD +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_OPTION] +IOMapping=ButtonAuxLowerRight5 +Type=EventMapping +Subsystem=ERSLaser_4 +MessageID=ToggleSeekVoltage +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerRight6 +Type=EventMapping +Subsystem=ERSLaser_4 +MessageID=ToggleGeneratorMode +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_ToggleCooling] +IOMapping=ButtonAuxLowerRight7 +Type=EventMapping +Subsystem=ERSLaser_4 +MessageID=ToggleCooling +Mode=ModeMFD3Eng4 +[ERMLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_3_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser_3 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_4_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser_4 +AttributeID=TriggerState +Mode=ModeNonMapping +[SRM6_1_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=SRM6_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[SRM6_2_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=SRM6_2 +AttributeID=TriggerState +Mode=ModeNonMapping diff --git a/CONTENT/BT/MODELS/OWNTHR.CTL b/CONTENT/BT/MODELS/OWNTHR.CTL new file mode 100644 index 0000000..880db63 --- /dev/null +++ b/CONTENT/BT/MODELS/OWNTHR.CTL @@ -0,0 +1,69 @@ +[StickPosition_JP] +IOMapping=JoystickPhysical +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=StickPosition +Mode=ModeAlwaysActive + +[TorsoLeft_BJHL] +IOMapping=ButtonJoystickHatLeft +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoLeft +Mode=ModeAlwaysActive + +[TorsoRight_BJHR] +IOMapping=ButtonJoystickHatRight +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoRight +Mode=ModeAlwaysActive + +[ERMLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_3_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser_3 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_4_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser_4 +AttributeID=TriggerState +Mode=ModeNonMapping +[SRM6_1_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=SRM6_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[SRM6_2_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=SRM6_2 +AttributeID=TriggerState +Mode=ModeNonMapping diff --git a/CONTENT/BT/MODELS/PDSH.MOD b/CONTENT/BT/MODELS/PDSH.MOD new file mode 100644 index 0000000..a20abc0 --- /dev/null +++ b/CONTENT/BT/MODELS/PDSH.MOD @@ -0,0 +1,20 @@ +[video] +; +; pdsh.mod - Radar dish +; +object=pdsh.bgf pdsh_FR.bgf pdsh_LP.bgf +rubble=pdsd.bgf pdsd_FR.bgf + +[collision] +name=pdsh_cv.sld + +[gauge] +image=pdsh_ga.gim + +[gamedata] +class=CulturalIconClassID +DamageZones=med.dmg +StoppingCollisionVolume=1 +ExplosionModelFile=meddead +TimeDelay=0.5 +CrunchExplosionModelFile=stephit diff --git a/CONTENT/BT/MODELS/PGN.DMG b/CONTENT/BT/MODELS/PGN.DMG new file mode 100644 index 0000000..9590cdf --- /dev/null +++ b/CONTENT/BT/MODELS/PGN.DMG @@ -0,0 +1,3 @@ +[dz_base] +WeaponDamagePoints=1 +VitalDamageZone=True diff --git a/CONTENT/BT/MODELS/PGN.MOD b/CONTENT/BT/MODELS/PGN.MOD new file mode 100644 index 0000000..889ec4c --- /dev/null +++ b/CONTENT/BT/MODELS/PGN.MOD @@ -0,0 +1,36 @@ +[video] +skeleton=pgn.skl +//destroyed=pgnd.skl + +[collision] +name=pgn_cv.sld + +[gauge] +image=pgn_ga.gim + +[gamedata] +class=TurretClassID +MoverMass=2.0 +MomentOfInertia=1.75 3.125 1.75 +PositiveLinearDragCoefficients=0.14 0.4 0.07 +NegativeLinearDragCoefficients=0.14 0.2 0.08 +AngularDragCoefficients=0.3 0.5 0.3 +FrictionCoefficient=0.0 +ElasticityCoefficient=0.0 +MinimumBounceSpeed=0.0 +DamageZones=pgn.dmg +ExplosionModelFile=majhit +TurretJointName=jointturret +GunJointName=jointgun +RotationSpeedMin=0.5 +RotationSpeedMax=1.0 +ElevationSpeedMin=0.1 +ElevationSpeedMax=0.2 +RateSkillMin=2.0 +RateSkillMax=1.0 +RateAdjMin=0.001 +RateAdjMax=0.005 +AccuracySkillMin=0.4 +AccuracySkillMax=0.8 +AccuracyAdjMin=0.001 +AccuracyAdjMax=0.005 diff --git a/CONTENT/BT/MODELS/PLAYER.MOD b/CONTENT/BT/MODELS/PLAYER.MOD new file mode 100644 index 0000000..d3288b5 --- /dev/null +++ b/CONTENT/BT/MODELS/PLAYER.MOD @@ -0,0 +1,3 @@ +[audio] +internal=plyint.scp + diff --git a/CONTENT/BT/MODELS/PLIT.MOD b/CONTENT/BT/MODELS/PLIT.MOD new file mode 100644 index 0000000..1b0d0ef --- /dev/null +++ b/CONTENT/BT/MODELS/PLIT.MOD @@ -0,0 +1,17 @@ +[video] +; +; plit.mod - Utility light +; +object=plit.bgf plit_FR.bgf +rubble=pltd.bgf pltd_FR.bgf + +[collision] +name=plit_cv.sld + +[gamedata] +class=CulturalIconClassID +DamageZones=sml.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=smldead +TimeDelay=0.5 +CrunchExplosionModelFile=smldead diff --git a/CONTENT/BT/MODELS/PPC.SUB b/CONTENT/BT/MODELS/PPC.SUB new file mode 100644 index 0000000..fa205d2 --- /dev/null +++ b/CONTENT/BT/MODELS/PPC.SUB @@ -0,0 +1,36 @@ +[PPC] +Type=PPCClassID +StartingTemperature=77.0 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +ThermalConductance=8.68e4 +ThermalMass=1.74e5 +WeaponDamagePoints=3.0 +HeatSink=None +VoltageSource=None +//ThresholdVoltagePercent=0.95 +AmmoModelFile=None +ExplosionModelFile=ppchit +DamageAmount=12.0 +DamageType=EnergyDamage +WeaponRange=900.0 +RechargeRate=5.0 +DischargeTime=0.2 +VitalSubsystem=False +VideoObjectName=ppc.bgf +GraphicLength=2000 +HeatCostToFire=11.0 +ThermalResistivityCoefficient=0.0024 +AuxScreenNumber=0 +AuxScreenLabel=qppc.pcc +EngScreenLabel=eppc.pcc +SeekVoltage=0.6 +SeekVoltage=0.7 +SeekVoltage=0.8 +SeekVoltage=0.99 +SeekVoltageRecommendedIndex=2 +PipPosition=1 +PipColor=0 0 1 +PipExtendedRange=False +StartTime=1.0 +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT/MODELS/PPCHIT.MOD b/CONTENT/BT/MODELS/PPCHIT.MOD new file mode 100644 index 0000000..7c1fb3c --- /dev/null +++ b/CONTENT/BT/MODELS/PPCHIT.MOD @@ -0,0 +1,12 @@ +[video] +object=8 + +[audio] +external=ppcexp.scp + +[gamedata] +class=ExplosionClassID +ExplosionResourceTable=PPCExplosionResourceTable +// WARNING Audio Effects require ExplosionDuration >= 3.0 secs +ExplosionDuration=3.0 + diff --git a/CONTENT/BT/MODELS/PPCHITI.MOD b/CONTENT/BT/MODELS/PPCHITI.MOD new file mode 100644 index 0000000..bce62c3 --- /dev/null +++ b/CONTENT/BT/MODELS/PPCHITI.MOD @@ -0,0 +1,10 @@ +[video] +object=8 + +[audio] +external=ppcexpi.scp + +[gamedata] +class=ExplosionClassID +// WARNING Audio Effects require ExplosionDuration >= 3.0 secs +ExplosionDuration=3.0 diff --git a/CONTENT/BT/MODELS/PROFILE1.MOD b/CONTENT/BT/MODELS/PROFILE1.MOD new file mode 100644 index 0000000..d4ae98c --- /dev/null +++ b/CONTENT/BT/MODELS/PROFILE1.MOD @@ -0,0 +1,5 @@ +[video] +object=profile1.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/PROFILE2.MOD b/CONTENT/BT/MODELS/PROFILE2.MOD new file mode 100644 index 0000000..9da7570 --- /dev/null +++ b/CONTENT/BT/MODELS/PROFILE2.MOD @@ -0,0 +1,5 @@ +[video] +object=profile2.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/PROFILE3.MOD b/CONTENT/BT/MODELS/PROFILE3.MOD new file mode 100644 index 0000000..8e6d0c5 --- /dev/null +++ b/CONTENT/BT/MODELS/PROFILE3.MOD @@ -0,0 +1,5 @@ +[video] +object=profile3.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/PROFILE4.MOD b/CONTENT/BT/MODELS/PROFILE4.MOD new file mode 100644 index 0000000..d28be53 --- /dev/null +++ b/CONTENT/BT/MODELS/PROFILE4.MOD @@ -0,0 +1,5 @@ +[video] +object=profile4.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/PROFILE5.MOD b/CONTENT/BT/MODELS/PROFILE5.MOD new file mode 100644 index 0000000..20a6b27 --- /dev/null +++ b/CONTENT/BT/MODELS/PROFILE5.MOD @@ -0,0 +1,5 @@ +[video] +object=profile5.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/PROFILE6.MOD b/CONTENT/BT/MODELS/PROFILE6.MOD new file mode 100644 index 0000000..b000473 --- /dev/null +++ b/CONTENT/BT/MODELS/PROFILE6.MOD @@ -0,0 +1,5 @@ +[video] +object=profile6.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/PROFILE7.MOD b/CONTENT/BT/MODELS/PROFILE7.MOD new file mode 100644 index 0000000..264f76f --- /dev/null +++ b/CONTENT/BT/MODELS/PROFILE7.MOD @@ -0,0 +1,5 @@ +[video] +object=profile7.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/PROFILE8.MOD b/CONTENT/BT/MODELS/PROFILE8.MOD new file mode 100644 index 0000000..51cc5de --- /dev/null +++ b/CONTENT/BT/MODELS/PROFILE8.MOD @@ -0,0 +1,5 @@ +[video] +object=profile8.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/PROJTILE.MOD b/CONTENT/BT/MODELS/PROJTILE.MOD new file mode 100644 index 0000000..b1b3e3b --- /dev/null +++ b/CONTENT/BT/MODELS/PROJTILE.MOD @@ -0,0 +1,16 @@ +[video] +object=bullet.bgf + +[audio] +external=prjtvl.scp + +[gamedata] +class=ProjectileClassID +MoverMass=2.0 +MomentOfInertia=1.75 3.125 1.75 +PositiveLinearDragCoefficients=0.14 0.4 0.07 +NegativeLinearDragCoefficients=0.14 0.2 0.08 +AngularDragCoefficients=0.3 0.5 0.3 +FrictionCoefficient=0.0 +ElasticityCoefficient=0.0 +MinimumBounceSpeed=0.0 diff --git a/CONTENT/BT/MODELS/PWIN1.MOD b/CONTENT/BT/MODELS/PWIN1.MOD new file mode 100644 index 0000000..1258d66 --- /dev/null +++ b/CONTENT/BT/MODELS/PWIN1.MOD @@ -0,0 +1,5 @@ +[video] +object=pwin1.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/PWIN2.MOD b/CONTENT/BT/MODELS/PWIN2.MOD new file mode 100644 index 0000000..09fbace --- /dev/null +++ b/CONTENT/BT/MODELS/PWIN2.MOD @@ -0,0 +1,5 @@ +[video] +object=pwin2.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/PWIN3.MOD b/CONTENT/BT/MODELS/PWIN3.MOD new file mode 100644 index 0000000..3c2e6bb --- /dev/null +++ b/CONTENT/BT/MODELS/PWIN3.MOD @@ -0,0 +1,5 @@ +[video] +object=pwin3.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/PWIN4.MOD b/CONTENT/BT/MODELS/PWIN4.MOD new file mode 100644 index 0000000..ffe85a8 --- /dev/null +++ b/CONTENT/BT/MODELS/PWIN4.MOD @@ -0,0 +1,5 @@ +[video] +object=pwin4.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/PWIN5.MOD b/CONTENT/BT/MODELS/PWIN5.MOD new file mode 100644 index 0000000..e9d9a3a --- /dev/null +++ b/CONTENT/BT/MODELS/PWIN5.MOD @@ -0,0 +1,5 @@ +[video] +object=pwin5.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/PWIN6.MOD b/CONTENT/BT/MODELS/PWIN6.MOD new file mode 100644 index 0000000..e455e24 --- /dev/null +++ b/CONTENT/BT/MODELS/PWIN6.MOD @@ -0,0 +1,5 @@ +[video] +object=pwin6.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/PWIN7.MOD b/CONTENT/BT/MODELS/PWIN7.MOD new file mode 100644 index 0000000..5585098 --- /dev/null +++ b/CONTENT/BT/MODELS/PWIN7.MOD @@ -0,0 +1,5 @@ +[video] +object=pwin7.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/PWIN8.MOD b/CONTENT/BT/MODELS/PWIN8.MOD new file mode 100644 index 0000000..c338c0a --- /dev/null +++ b/CONTENT/BT/MODELS/PWIN8.MOD @@ -0,0 +1,5 @@ +[video] +object=pwin8.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/RAPDEAD.MOD b/CONTENT/BT/MODELS/RAPDEAD.MOD new file mode 100644 index 0000000..83959ea --- /dev/null +++ b/CONTENT/BT/MODELS/RAPDEAD.MOD @@ -0,0 +1,9 @@ +[video] +object=104 3 4 5 1007 15 1001 + +[audio] +external=brnext.scp + +[gamedata] +class=ExplosionClassID +ExplosionDuration=9.0 diff --git a/CONTENT/BT/MODELS/RAPDMG.EXP b/CONTENT/BT/MODELS/RAPDMG.EXP new file mode 100644 index 0000000..c9b1598 --- /dev/null +++ b/CONTENT/BT/MODELS/RAPDMG.EXP @@ -0,0 +1,28 @@ +[OneDamage] +ExplosionModelFile=dam1hit +DamageLevel=0.2 +TimeDelay=0.0 + +[TwoDamage] +ExplosionModelFile=dam2hit +DamageLevel=0.4 +TimeDelay=0.0 + +[ThreeDamage] +ExplosionModelFile=dam3hit +DamageLevel=0.6 +TimeDelay=0.0 + +[FourDamage] +ExplosionModelFile=dam4hit +DamageLevel=0.8 +TimeDelay=0.0 + +[DestroyedExplosion] +ExplosionModelFile=desthit +GraphicState=Destroyed + +[GoneExplosion] +ExplosionModelFile=desthit +GraphicState=Gone + diff --git a/CONTENT/BT/MODELS/RAPDMG.TBL b/CONTENT/BT/MODELS/RAPDMG.TBL new file mode 100644 index 0000000..c9765c1 --- /dev/null +++ b/CONTENT/BT/MODELS/RAPDMG.TBL @@ -0,0 +1,189 @@ +[LeftFoot] +DamageZone=dz_lfoot 0.5 +DamageZone=dz_ldleg 0.3 +DamageZone=dz_rfoot 0.2 + +[RightFoot] +DamageZone=dz_rfoot 0.5 +DamageZone=dz_rdleg 0.3 +DamageZone=dz_lfoot 0.2 + +[LeftLeg] +DamageZone=dz_luleg 0.4 +DamageZone=dz_ldleg 0.4 +DamageZone=dz_ruleg 0.1 +DamageZone=dz_rdleg 0.1 + +[RightLeg] +DamageZone=dz_ruleg 0.4 +DamageZone=dz_rdleg 0.4 +DamageZone=dz_luleg 0.1 +DamageZone=dz_ldleg 0.1 + +[LeftHip] +DamageZone=dz_luleg 0.5 +DamageZone=dz_hip 0.2 +DamageZone=dz_lgun 0.3 + +[FrontHip] +DamageZone=dz_luleg 0.25 +DamageZone=dz_ruleg 0.25 +DamageZone=dz_hip 0.3 +DamageZone=dz_dtorso 0.2 + +[RearHip] +DamageZone=dz_luleg 0.25 +DamageZone=dz_ruleg 0.25 +DamageZone=dz_hip 0.3 +DamageZone=dz_reardtorso 0.2 + +[RightHip] +DamageZone=dz_ruleg 0.5 +DamageZone=dz_hip 0.2 +DamageZone=dz_rgun 0.3 + +[LeftWaist] +DamageZone=dz_ltorso 0.2 +DamageZone=dz_rearltorso 0.1 +DamageZone=dz_lgun 0.2 +DamageZone=dz_dtorso 0.25 +DamageZone=dz_reardtorso 0.25 + +[FrontWaist] +DamageZone=dz_rgun 0.05 +DamageZone=dz_lgun 0.05 +DamageZone=dz_ltorso 0.25 +DamageZone=dz_rtorso 0.25 +DamageZone=dz_dtorso 0.4 + +[RearWaist] +DamageZone=dz_rgun 0.05 +DamageZone=dz_lgun 0.05 +DamageZone=dz_rearltorso 0.25 +DamageZone=dz_rearrtorso 0.25 +DamageZone=dz_reardtorso 0.4 + +[RightWaist] +DamageZone=dz_rtorso 0.2 +DamageZone=dz_rearrtorso 0.1 +DamageZone=dz_rgun 0.2 +DamageZone=dz_dtorso 0.25 +DamageZone=dz_reardtorso 0.25 + +[LeftChest] +DamageZone=dz_lgun 0.2 +DamageZone=dz_ltorso 0.2 +DamageZone=dz_rearltorso 0.3 +DamageZone=dz_dtorso 0.2 +DamageZone=dz_rearutorso 0.1 + +[RightChest] +DamageZone=dz_rgun 0.2 +DamageZone=dz_rtorso 0.2 +DamageZone=dz_rearrtorso 0.3 +DamageZone=dz_dtorso 0.2 +DamageZone=dz_rearutorso 0.1 + +[FrontChest] +DamageZone=dz_missle 0.05 +DamageZone=dz_searchlight 0.05 +DamageZone=dz_lgun 0.05 +DamageZone=dz_rgun 0.05 +DamageZone=dz_ltorso 0.2 +DamageZone=dz_rtorso 0.2 +DamageZone=dz_dtorso 0.4 + +[RearChest] +DamageZone=dz_lgun 0.05 +DamageZone=dz_rgun 0.05 +DamageZone=dz_rearltorso 0.1 +DamageZone=dz_rearrtorso 0.1 +DamageZone=dz_rearutorso 0.6 +DamageZone=dz_utorso 0.05 +DamageZone=dz_missle 0.05 + +[TopLeft] +DamageZone=dz_utorso 0.4 +DamageZone=dz_missle 0.6 + +[TopRight] +DamageZone=dz_missle 0.6 +DamageZone=dz_utorso 0.4 + +// The data in this table is totally bogus. GDU 12-2-95 +[Layer1] +PieSlice=RightFoot +PieSlice=RightFoot +PieSlice=LeftFoot +PieSlice=LeftFoot +PieSlice=LeftFoot +PieSlice=LeftFoot +PieSlice=RightFoot +PieSlice=RightFoot +RotateWithTorso=False + +[Layer2] +PieSlice=RightLeg +PieSlice=RightLeg +PieSlice=LeftLeg +PieSlice=LeftLeg +PieSlice=LeftLeg +PieSlice=LeftLeg +PieSlice=RightLeg +PieSlice=RightLeg +RotateWithTorso=False + +[Layer3] +PieSlice=RightHip +PieSlice=FrontHip +PieSlice=FrontHip +PieSlice=LeftHip +PieSlice=LeftHip +PieSlice=RearHip +PieSlice=RearHip +PieSlice=RightHip +RotateWithTorso=False + +[Layer4] +PieSlice=RightHip +PieSlice=FrontHip +PieSlice=FrontHip +PieSlice=LeftHip +PieSlice=LeftHip +PieSlice=RearHip +PieSlice=RearHip +PieSlice=RightHip +RotateWithTorso=True + +[Layer5] +PieSlice=RightWaist +PieSlice=FrontWaist +PieSlice=FrontWaist +PieSlice=LeftWaist +PieSlice=LeftWaist +PieSlice=RearWaist +PieSlice=RearWaist +PieSlice=RightWaist +RotateWithTorso=True + +[Layer6] +PieSlice=RightChest +PieSlice=FrontChest +PieSlice=FrontChest +PieSlice=LeftChest +PieSlice=LeftChest +PieSlice=RearChest +PieSlice=RearChest +PieSlice=RightChest +RotateWithTorso=True + +[Layer7] +PieSlice=TopRight +PieSlice=TopRight +PieSlice=TopLeft +PieSlice=TopLeft +PieSlice=TopLeft +PieSlice=TopLeft +PieSlice=TopRight +PieSlice=TopRight +RotateWithTorso=True diff --git a/CONTENT/BT/MODELS/RAPTHR.CTL b/CONTENT/BT/MODELS/RAPTHR.CTL new file mode 100644 index 0000000..72e17cc --- /dev/null +++ b/CONTENT/BT/MODELS/RAPTHR.CTL @@ -0,0 +1,63 @@ +[StickPosition_JP] +IOMapping=JoystickPhysical +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=StickPosition +Mode=ModeAlwaysActive + +[TorsoLeft_BJHL] +IOMapping=ButtonJoystickHatLeft +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoLeft +Mode=ModeAlwaysActive + +[TorsoRight_BJHR] +IOMapping=ButtonJoystickHatRight +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoRight +Mode=ModeAlwaysActive + +[MLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=MLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[MLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=MLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[SLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=SLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[SLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=SLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[LRM5_1_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=LRM5_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[LRM5_2_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=LRM5_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[LRM5_3_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=LRM5_3 +AttributeID=TriggerState +Mode=ModeNonMapping diff --git a/CONTENT/BT/MODELS/RAPTOR.MOD b/CONTENT/BT/MODELS/RAPTOR.MOD new file mode 100644 index 0000000..dff9abe --- /dev/null +++ b/CONTENT/BT/MODELS/RAPTOR.MOD @@ -0,0 +1,135 @@ +[video] +skeleton=rap.skl +skeletona=rax.skl +destroyed=rapd.skl +//destroyeda=raxd.skl +dzm=rapskin.dzm +dzma=raxskin.dzm + +[audio] +internal=rapint.scp +external=rapext.scp + +[collision] +name=rap_cv.sld + +[gauge] +image=rap_ga.gim + +[gaugeMissionReview] +pixelmap=rap_mr.pcc + +[gamedata] +class=MechClassID +MoverMass=25000.0 +MomentOfInertia=1.75 3.125 1.75 +PositiveLinearDragCoefficients=0.14 0.4 0.07 +NegativeLinearDragCoefficients=0.14 0.2 0.08 +AngularDragCoefficients=0.3 0.5 0.3 +FrictionCoefficient=0.1 +ElasticityCoefficient=0.2 +MinimumBounceSpeed=0.2 +AnimationPrefix=rap +Subsystems=raptor.sub +DamageZones=raptor.dmg +DamageLookupTable=rapdmg.tbl +RelativeMechValue=1.0 +LookLeftAngle=80 +LookRightAngle=-80 +LookBackAngle=0 +LookFrontAngle=-10 +WalkingTurnRate=80 +RunningTurnRate=55 +DeathEffect=rapdead +CameraOffset=0.0 5.0 1.0 +DeathSplashDamage=5 +DeathSplashRadius=30 +TimeDelay=0.3 + +MaxAcceleration=50 +MaxUnstableAcceleration=60.0 + +UnstableAccelerationEffect=0.5 +UnstableGunTheEngineEffect=0.8 +UnstableSuperStopEffect=0.25 +UnstableHighVelocityEffect=0.25 +UnstableStopedTurnEffect=1.0 +SuperStopAcceleration=25.0 + +ThrottleAdjustment=1.0 + +UpdateTurnDegreeDiffrence=3 +UpdateTurnVelocityDiffrence=0.045 +UpdatePositionDiffrence=0.3 + +ShadowJointName=jointshadow + +[ControlMappings] +Thrustmaster=rapthr.ctl +L4=rapl4.ctl + +[animations] +animationtransition=rapswr.ani +animation=rapwwl.ani +animation=rapwwr.ani +animation=rapwsr.ani +animation=rapwsl.ani +animationtransition=rapwrl.ani +animationtransition=rapwrr.ani +animation=raprrl.ani +animation=raprrr.ani +animation=raprwl.ani +animation=raprwr.ani +animation=rapbmp.ani +animation=rapbbl.ani +animation=rapbbr.ani +animation=rapbsl.ani +animation=rapbsr.ani +animationtransition=rapsbl.ani +animationtransition=rapsbr.ani + +animationtransition=rapswri.ani +animation=rapwwli.ani +animation=rapwwri.ani +animation=rapwsri.ani +animation=rapwsli.ani +animationtransition=rapwrli.ani +animationtransition=rapwrri.ani +animation=raprrli.ani +animation=raprrri.ani +animation=raprwli.ani +animation=raprwri.ani +animation=rapbmpi.ani +animation=rapbbli.ani +animation=rapbbri.ani +animation=rapbsli.ani +animation=rapbsri.ani +animationtransition=rapsbli.ani +animationtransition=rapsbri.ani + +animation=rapggl.ani +animation=rapggr.ani +animation=rapgsl.ani +animation=rapgsr.ani +animationtransition=rapwgl.ani +animationtransition=rapwgr.ani + +animation=rapggli.ani +animation=rapggri.ani +animation=rapgsli.ani +animation=rapgsri.ani +animationtransition=rapwgli.ani +animationtransition=rapwgri.ani + +animation=rapsqu.ani +animation=rapsqd.ani +animation=rapsqui.ani +animation=rapsqdi.ani + +animation=raptrn.ani +animation=raptrni.ani + +//animation=rapff.ani +//animation=rapfb.ani +//animation=rapfl.ani +//animation=rapfr.ani \ No newline at end of file diff --git a/CONTENT/BT/MODELS/RAPTOR.SUB b/CONTENT/BT/MODELS/RAPTOR.SUB new file mode 100644 index 0000000..4f80a92 --- /dev/null +++ b/CONTENT/BT/MODELS/RAPTOR.SUB @@ -0,0 +1,212 @@ +[HeatSink] +Type=HeatSinkClassID +Include=heatsnk.sub +HeatSinkCount=5 +SubsystemFlags=DontReplicateFlag + +[Reservoir] +Type=ReservoirClassID +Include=reserve.sub +HeatSink=HeatSink +SegmentPageName=siteeyepoint + +[Condenser1] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser2] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser3] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser4] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser5] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser6] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[GeneratorA] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser1 +SubsystemFlags=DontReplicateFlag + +[GeneratorB] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser2 +SubsystemFlags=DontReplicateFlag + +[GeneratorC] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser3 +SubsystemFlags=DontReplicateFlag + +[GeneratorD] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser5 +SubsystemFlags=DontReplicateFlag + +[Avionics] +Type=SensorClassID +Include=sensor.sub +HeatSink=Condenser2 +VoltageSource=GeneratorD +AuxScreenNumber=5 +SubsystemFlags=DontReplicateFlag + +AuxScreenPlacement=2 +[Myomers] +Type=MyomersClassID +Include=myomers.sub +HeatSink=Condenser5 +VoltageSource=GeneratorD +AuxScreenNumber=6 +SubsystemFlags=DontReplicateFlag + +AuxScreenPlacement=0 +[Gyroscope] +Type=GyroscopeClassID +Include=gyro.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag + +[Torso] +Type=TorsoClassID +Include=torso.sub +WatchedSubsystem=Myomers + +HorizontalRotationPerSecond=40 +VerticalRotationPerSecond=30 +HorizontalLimitRight=-140 +HorizontalLimitLeft=140 +[HUD] +Type=HUDClassID +Include=hud.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag + +[Searchlight] +Type=SearchlightClassID +Include=srchlite.sub +WatchedSubsystem=Avionics +SegmentPageName=sitelight + +[ThermalSight] +Type=ThermalSightClassID +Include=Thermal.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag +[MLaser_1] +Type=EmitterClassID +Include=mlaser.sub +SegmentPageName=sitelugunport +PipPosition=1 +VoltageSource=GeneratorA +HeatSink=Condenser4 +AuxScreenNumber=1 +AuxScreenPlacement=4 +[MLaser_2] +Type=EmitterClassID +Include=mlaser.sub +SegmentPageName=siterugunport +PipPosition=2 +VoltageSource=GeneratorC +HeatSink=Condenser6 +AuxScreenNumber=10 +AuxScreenPlacement=6 +[SLaser_1] +Type=EmitterClassID +Include=slaser.sub +SegmentPageName=siteldgunport +PipPosition=1 +VoltageSource=GeneratorA +HeatSink=Condenser4 +AuxScreenNumber=3 +AuxScreenPlacement=4 +[SLaser_2] +Type=EmitterClassID +Include=slaser.sub +SegmentPageName=siterdgunport +PipPosition=2 +VoltageSource=GeneratorC +HeatSink=Condenser6 +AuxScreenNumber=12 +AuxScreenPlacement=6 +[AmmoBinLRM5_1] +Type=AmmoBinClassID +Include=ammnrk5.sub +WatchedSubsystem=LRM5_1 +AmmoCount=18 +[LRM5_1] +AmmoBin=AmmoBinLRM5_1 +Type=MissileLauncherClassID +Include=nrk5.sub +SegmentPageName=sitemissleport +PipPosition=1 +VoltageSource=GeneratorA +HeatSink=Condenser1 +AuxScreenNumber=2 +AuxScreenPlacement=1 +[AmmoBinLRM5_2] +Type=AmmoBinClassID +Include=ammnrk5.sub +WatchedSubsystem=LRM5_2 +AmmoCount=18 +[LRM5_2] +AmmoBin=AmmoBinLRM5_2 +Type=MissileLauncherClassID +Include=nrk5.sub +SegmentPageName=sitemissleport +PipPosition=2 +VoltageSource=GeneratorB +HeatSink=Condenser2 +AuxScreenNumber=7 +AuxScreenPlacement=2 +[AmmoBinLRM5_3] +Type=AmmoBinClassID +Include=ammnrk5.sub +WatchedSubsystem=LRM5_3 +AmmoCount=18 +[LRM5_3] +AmmoBin=AmmoBinLRM5_3 +Type=MissileLauncherClassID +Include=nrk5.sub +SegmentPageName=sitemissleport +PipPosition=3 +VoltageSource=GeneratorC +HeatSink=Condenser3 +AuxScreenNumber=9 +AuxScreenPlacement=3 +[MessageManager] +Type=SubsystemMessageManagerClassID +ExplosionModelFile=majhit 1.0 +TerrainHitExplosion=gndhit +RendererCompensateTime=0.3 +[MechTech] +Type=MechTechClassID +AlarmModel=mechalrm +SubsystemFlags=DontReplicateFlag diff --git a/CONTENT/BT/MODELS/RAVFLOOR.MOD b/CONTENT/BT/MODELS/RAVFLOOR.MOD new file mode 100644 index 0000000..ec1b1d2 --- /dev/null +++ b/CONTENT/BT/MODELS/RAVFLOOR.MOD @@ -0,0 +1,9 @@ +[video] +object=ravfloor.bgf + +[collision] +name=rfloor_c.sld + +[gamedata] +class=UnscalableTerrainClassID + \ No newline at end of file diff --git a/CONTENT/BT/MODELS/RAVINET1.MOD b/CONTENT/BT/MODELS/RAVINET1.MOD new file mode 100644 index 0000000..3d6f8e4 --- /dev/null +++ b/CONTENT/BT/MODELS/RAVINET1.MOD @@ -0,0 +1,6 @@ +[video] +object=ravinet1.bgf + +[gamedata] +class=UnscalableTerrainClassID + \ No newline at end of file diff --git a/CONTENT/BT/MODELS/RAVINET2.MOD b/CONTENT/BT/MODELS/RAVINET2.MOD new file mode 100644 index 0000000..d012b1c --- /dev/null +++ b/CONTENT/BT/MODELS/RAVINET2.MOD @@ -0,0 +1,6 @@ +[video] +object=ravinet2.bgf + +[gamedata] +class=UnscalableTerrainClassID + \ No newline at end of file diff --git a/CONTENT/BT/MODELS/RAVINET3.MOD b/CONTENT/BT/MODELS/RAVINET3.MOD new file mode 100644 index 0000000..3ec55e4 --- /dev/null +++ b/CONTENT/BT/MODELS/RAVINET3.MOD @@ -0,0 +1,6 @@ +[video] +object=ravinet3.bgf + +[gamedata] +class=UnscalableTerrainClassID + \ No newline at end of file diff --git a/CONTENT/BT/MODELS/RAVINET4.MOD b/CONTENT/BT/MODELS/RAVINET4.MOD new file mode 100644 index 0000000..ac0b266 --- /dev/null +++ b/CONTENT/BT/MODELS/RAVINET4.MOD @@ -0,0 +1,6 @@ +[video] +object=ravinet4.bgf + +[gamedata] +class=UnscalableTerrainClassID + \ No newline at end of file diff --git a/CONTENT/BT/MODELS/RAVINET5.MOD b/CONTENT/BT/MODELS/RAVINET5.MOD new file mode 100644 index 0000000..9be3aa2 --- /dev/null +++ b/CONTENT/BT/MODELS/RAVINET5.MOD @@ -0,0 +1,6 @@ +[video] +object=ravinet5.bgf + +[gamedata] +class=UnscalableTerrainClassID + \ No newline at end of file diff --git a/CONTENT/BT/MODELS/RAVINET6.MOD b/CONTENT/BT/MODELS/RAVINET6.MOD new file mode 100644 index 0000000..4ecc3ed --- /dev/null +++ b/CONTENT/BT/MODELS/RAVINET6.MOD @@ -0,0 +1,6 @@ +[video] +object=ravinet6.bgf + +[gamedata] +class=UnscalableTerrainClassID + \ No newline at end of file diff --git a/CONTENT/BT/MODELS/RAVINET7.MOD b/CONTENT/BT/MODELS/RAVINET7.MOD new file mode 100644 index 0000000..05a6fb3 --- /dev/null +++ b/CONTENT/BT/MODELS/RAVINET7.MOD @@ -0,0 +1,6 @@ +[video] +object=ravinet7.bgf + +[gamedata] +class=UnscalableTerrainClassID + \ No newline at end of file diff --git a/CONTENT/BT/MODELS/RAVINET8.MOD b/CONTENT/BT/MODELS/RAVINET8.MOD new file mode 100644 index 0000000..5491485 --- /dev/null +++ b/CONTENT/BT/MODELS/RAVINET8.MOD @@ -0,0 +1,6 @@ +[video] +object=ravinet8.bgf + +[gamedata] +class=UnscalableTerrainClassID + \ No newline at end of file diff --git a/CONTENT/BT/MODELS/RAVWIN.MOD b/CONTENT/BT/MODELS/RAVWIN.MOD new file mode 100644 index 0000000..ee1ec2c --- /dev/null +++ b/CONTENT/BT/MODELS/RAVWIN.MOD @@ -0,0 +1,6 @@ +[video] +object=ravwin.bgf + +[gamedata] +class=UnscalableTerrainClassID + \ No newline at end of file diff --git a/CONTENT/BT/MODELS/RB1.MOD b/CONTENT/BT/MODELS/RB1.MOD new file mode 100644 index 0000000..43c1edd --- /dev/null +++ b/CONTENT/BT/MODELS/RB1.MOD @@ -0,0 +1,5 @@ +[video] +object=rb1.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/RB2.MOD b/CONTENT/BT/MODELS/RB2.MOD new file mode 100644 index 0000000..36626bb --- /dev/null +++ b/CONTENT/BT/MODELS/RB2.MOD @@ -0,0 +1,5 @@ +[video] +object=rb2.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/RB3.MOD b/CONTENT/BT/MODELS/RB3.MOD new file mode 100644 index 0000000..366dd96 --- /dev/null +++ b/CONTENT/BT/MODELS/RB3.MOD @@ -0,0 +1,5 @@ +[video] +object=rb3.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/RB4.MOD b/CONTENT/BT/MODELS/RB4.MOD new file mode 100644 index 0000000..cf11e93 --- /dev/null +++ b/CONTENT/BT/MODELS/RB4.MOD @@ -0,0 +1,5 @@ +[video] +object=rb4.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/RB5.MOD b/CONTENT/BT/MODELS/RB5.MOD new file mode 100644 index 0000000..f82b64e --- /dev/null +++ b/CONTENT/BT/MODELS/RB5.MOD @@ -0,0 +1,5 @@ +[video] +object=rb5.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/RB6.MOD b/CONTENT/BT/MODELS/RB6.MOD new file mode 100644 index 0000000..61b6323 --- /dev/null +++ b/CONTENT/BT/MODELS/RB6.MOD @@ -0,0 +1,5 @@ +[video] +object=rb6.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/RD1.MOD b/CONTENT/BT/MODELS/RD1.MOD new file mode 100644 index 0000000..20f2b30 --- /dev/null +++ b/CONTENT/BT/MODELS/RD1.MOD @@ -0,0 +1,5 @@ +[video] +object=rd1.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/RD2.MOD b/CONTENT/BT/MODELS/RD2.MOD new file mode 100644 index 0000000..233614f --- /dev/null +++ b/CONTENT/BT/MODELS/RD2.MOD @@ -0,0 +1,5 @@ +[video] +object=rd2.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/RESERVE.SUB b/CONTENT/BT/MODELS/RESERVE.SUB new file mode 100644 index 0000000..8563ead --- /dev/null +++ b/CONTENT/BT/MODELS/RESERVE.SUB @@ -0,0 +1,14 @@ +[Reservoir] +Type=ReservoirClassID +ArmorValue=20.0 +StartingTemperature=77.0 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +ThermalConductance=190000 +ThermalMass=3.42e6 +HeatSink=None +WeaponDamagePoints=10.0 +VitalSubsystem=False +CoolantCapacity=20.0 +CoolantSquirtMass=0.5 +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT/MODELS/RESULT.TXT b/CONTENT/BT/MODELS/RESULT.TXT new file mode 100644 index 0000000..fe3be47 --- /dev/null +++ b/CONTENT/BT/MODELS/RESULT.TXT @@ -0,0 +1,8 @@ +^C +^C +^C +^C +^C +^C +^C +^C diff --git a/CONTENT/BT/MODELS/RESULT2.TXT b/CONTENT/BT/MODELS/RESULT2.TXT new file mode 100644 index 0000000..052672e --- /dev/null +++ b/CONTENT/BT/MODELS/RESULT2.TXT @@ -0,0 +1,5 @@ +BattleTech v4.10 + + +Error - Resource file btl4.res v1.0.0.0 is obsolete! + diff --git a/CONTENT/BT/MODELS/RK1.MOD b/CONTENT/BT/MODELS/RK1.MOD new file mode 100644 index 0000000..c1e87dc --- /dev/null +++ b/CONTENT/BT/MODELS/RK1.MOD @@ -0,0 +1,11 @@ +[video] +object=rk1.bgf + +[collision] +name=rk1_cv.sld + +[gauge] +image=rk1_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/RK2.MOD b/CONTENT/BT/MODELS/RK2.MOD new file mode 100644 index 0000000..40ba9e2 --- /dev/null +++ b/CONTENT/BT/MODELS/RK2.MOD @@ -0,0 +1,11 @@ +[video] +object=rk2.bgf + +[collision] +name=rk2_cv.sld + +[gauge] +image=rk2_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/RK3.MOD b/CONTENT/BT/MODELS/RK3.MOD new file mode 100644 index 0000000..0029d71 --- /dev/null +++ b/CONTENT/BT/MODELS/RK3.MOD @@ -0,0 +1,11 @@ +[video] +object=rk3.bgf + +[collision] +name=rk3_cv.sld + +[gauge] +image=rk3_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/RK4.MOD b/CONTENT/BT/MODELS/RK4.MOD new file mode 100644 index 0000000..2f08253 --- /dev/null +++ b/CONTENT/BT/MODELS/RK4.MOD @@ -0,0 +1,11 @@ +[video] +object=rk4.bgf + +[collision] +name=rk4_cv.sld + +[gauge] +image=rk4_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/RK5.MOD b/CONTENT/BT/MODELS/RK5.MOD new file mode 100644 index 0000000..6285c2d --- /dev/null +++ b/CONTENT/BT/MODELS/RK5.MOD @@ -0,0 +1,11 @@ +[video] +object=rk5.bgf + +[collision] +name=rk5_cv.sld + +[gauge] +image=rk5_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/RK6.MOD b/CONTENT/BT/MODELS/RK6.MOD new file mode 100644 index 0000000..757eada --- /dev/null +++ b/CONTENT/BT/MODELS/RK6.MOD @@ -0,0 +1,11 @@ +[video] +object=rk6.bgf + +[collision] +name=rk6_cv.sld + +[gauge] +image=rk6_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/RK7.MOD b/CONTENT/BT/MODELS/RK7.MOD new file mode 100644 index 0000000..88e1df7 --- /dev/null +++ b/CONTENT/BT/MODELS/RK7.MOD @@ -0,0 +1,11 @@ +[video] +object=rk7.bgf + +[collision] +name=rk7_cv.sld + +[gauge] +image=rk7_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/ROMMEL.MOD b/CONTENT/BT/MODELS/ROMMEL.MOD new file mode 100644 index 0000000..64386fc --- /dev/null +++ b/CONTENT/BT/MODELS/ROMMEL.MOD @@ -0,0 +1,17 @@ +[video] +object=ROMMEL.bgf rommels.bgf +rubble=ROMD.bgf + +[collision] +name=ROMMEL.sld + +[gauge] +image=rommel.gim + +[gamedata] +class=CulturalIconClassID +DamageZones=trk.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=trkdead +TimeDelay=0.5 +CrunchExplosionModelFile=stephit diff --git a/CONTENT/BT/MODELS/RWD.MOD b/CONTENT/BT/MODELS/RWD.MOD new file mode 100644 index 0000000..3f83b7b --- /dev/null +++ b/CONTENT/BT/MODELS/RWD.MOD @@ -0,0 +1,8 @@ +[video] +object=rwd.bgf + +[collision] +name=thor.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/RWIN1.MOD b/CONTENT/BT/MODELS/RWIN1.MOD new file mode 100644 index 0000000..1eaf217 --- /dev/null +++ b/CONTENT/BT/MODELS/RWIN1.MOD @@ -0,0 +1,6 @@ +[video] +object=rwin1.bgf + +[gamedata] +class=UnscalableTerrainClassID + \ No newline at end of file diff --git a/CONTENT/BT/MODELS/SAW.MOD b/CONTENT/BT/MODELS/SAW.MOD new file mode 100644 index 0000000..19cd7f0 --- /dev/null +++ b/CONTENT/BT/MODELS/SAW.MOD @@ -0,0 +1,8 @@ +[video] +object=saw.bgf + +[collision] +name=saw_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/SB1.MOD b/CONTENT/BT/MODELS/SB1.MOD new file mode 100644 index 0000000..ea76b6e --- /dev/null +++ b/CONTENT/BT/MODELS/SB1.MOD @@ -0,0 +1,8 @@ +[video] +object=sb1.bgf + +[collision] +name=sb1_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/SB1B.MOD b/CONTENT/BT/MODELS/SB1B.MOD new file mode 100644 index 0000000..e14e8fd --- /dev/null +++ b/CONTENT/BT/MODELS/SB1B.MOD @@ -0,0 +1,8 @@ +[video] +object=sb1b.bgf + +[collision] +name=sb1b_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/SB1C.MOD b/CONTENT/BT/MODELS/SB1C.MOD new file mode 100644 index 0000000..ed9b952 --- /dev/null +++ b/CONTENT/BT/MODELS/SB1C.MOD @@ -0,0 +1,8 @@ +[video] +object=sb1c.bgf + +[collision] +name=sb1c_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/SB1D.MOD b/CONTENT/BT/MODELS/SB1D.MOD new file mode 100644 index 0000000..3eae647 --- /dev/null +++ b/CONTENT/BT/MODELS/SB1D.MOD @@ -0,0 +1,8 @@ +[video] +object=sb1d.bgf + +[collision] +name=sb1d_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/SB1E.MOD b/CONTENT/BT/MODELS/SB1E.MOD new file mode 100644 index 0000000..863d6d2 --- /dev/null +++ b/CONTENT/BT/MODELS/SB1E.MOD @@ -0,0 +1,11 @@ +[video] +object=sb1e.bgf + +[collision] +name=sb1e_cv.sld + +//[gauge] +//image=sb1e_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/SB1N.MOD b/CONTENT/BT/MODELS/SB1N.MOD new file mode 100644 index 0000000..1501151 --- /dev/null +++ b/CONTENT/BT/MODELS/SB1N.MOD @@ -0,0 +1,11 @@ +[video] +object=sb1n.bgf + +[collision] +name=sb1n_cv.sld + +//[gauge] +//image=sb1n_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/SB1S.MOD b/CONTENT/BT/MODELS/SB1S.MOD new file mode 100644 index 0000000..f1caae3 --- /dev/null +++ b/CONTENT/BT/MODELS/SB1S.MOD @@ -0,0 +1,11 @@ +[video] +object=sb1s.bgf + +[collision] +name=sb1s_cv.sld + +//[gauge] +//image=sb1s_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/SB1W.MOD b/CONTENT/BT/MODELS/SB1W.MOD new file mode 100644 index 0000000..fe6c958 --- /dev/null +++ b/CONTENT/BT/MODELS/SB1W.MOD @@ -0,0 +1,11 @@ +[video] +object=sb1w.bgf + +[collision] +name=sb1w_cv.sld + +//[gauge] +//image=sb1w_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/SB2.MOD b/CONTENT/BT/MODELS/SB2.MOD new file mode 100644 index 0000000..3157708 --- /dev/null +++ b/CONTENT/BT/MODELS/SB2.MOD @@ -0,0 +1,8 @@ +[video] +object=sb2.bgf + +[collision] +name=sb2_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/SB2B.MOD b/CONTENT/BT/MODELS/SB2B.MOD new file mode 100644 index 0000000..3fe402a --- /dev/null +++ b/CONTENT/BT/MODELS/SB2B.MOD @@ -0,0 +1,8 @@ +[video] +object=sb2b.bgf + +[collision] +name=sb2b_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/SB2C.MOD b/CONTENT/BT/MODELS/SB2C.MOD new file mode 100644 index 0000000..e0cce14 --- /dev/null +++ b/CONTENT/BT/MODELS/SB2C.MOD @@ -0,0 +1,8 @@ +[video] +object=sb2c.bgf + +[collision] +name=sb2c_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/SB2D.MOD b/CONTENT/BT/MODELS/SB2D.MOD new file mode 100644 index 0000000..af855f0 --- /dev/null +++ b/CONTENT/BT/MODELS/SB2D.MOD @@ -0,0 +1,8 @@ +[video] +object=sb2d.bgf + +[collision] +name=sb2d_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/SB2E.MOD b/CONTENT/BT/MODELS/SB2E.MOD new file mode 100644 index 0000000..019caa2 --- /dev/null +++ b/CONTENT/BT/MODELS/SB2E.MOD @@ -0,0 +1,8 @@ +[video] +object=sb2e.bgf + +[collision] +name=sb2e_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/SB2N.MOD b/CONTENT/BT/MODELS/SB2N.MOD new file mode 100644 index 0000000..5c1ea6f --- /dev/null +++ b/CONTENT/BT/MODELS/SB2N.MOD @@ -0,0 +1,8 @@ +[video] +object=sb2n.bgf + +[collision] +name=sb2n_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/SB2S.MOD b/CONTENT/BT/MODELS/SB2S.MOD new file mode 100644 index 0000000..8a3171a --- /dev/null +++ b/CONTENT/BT/MODELS/SB2S.MOD @@ -0,0 +1,8 @@ +[video] +object=sb2s.bgf + +[collision] +name=sb2s_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/SB2W.MOD b/CONTENT/BT/MODELS/SB2W.MOD new file mode 100644 index 0000000..2d27e0d --- /dev/null +++ b/CONTENT/BT/MODELS/SB2W.MOD @@ -0,0 +1,8 @@ +[video] +object=sb2w.bgf + +[collision] +name=sb2w_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/SB3E.MOD b/CONTENT/BT/MODELS/SB3E.MOD new file mode 100644 index 0000000..b9ba4b4 --- /dev/null +++ b/CONTENT/BT/MODELS/SB3E.MOD @@ -0,0 +1,8 @@ +[video] +object=sb3e.bgf + +[collision] +name=sb3e_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/SB3N.MOD b/CONTENT/BT/MODELS/SB3N.MOD new file mode 100644 index 0000000..a19be90 --- /dev/null +++ b/CONTENT/BT/MODELS/SB3N.MOD @@ -0,0 +1,8 @@ +[video] +object=sb3n.bgf + +[collision] +name=sb3n_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/SB3S.MOD b/CONTENT/BT/MODELS/SB3S.MOD new file mode 100644 index 0000000..832f9c4 --- /dev/null +++ b/CONTENT/BT/MODELS/SB3S.MOD @@ -0,0 +1,11 @@ +[video] +object=sb3s.bgf + +[collision] +name=sb3s_cv.sld + +//[gauge] +//image=sb3s_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/SB3W.MOD b/CONTENT/BT/MODELS/SB3W.MOD new file mode 100644 index 0000000..914f468 --- /dev/null +++ b/CONTENT/BT/MODELS/SB3W.MOD @@ -0,0 +1,8 @@ +[video] +object=sb3w.bgf + +[collision] +name=sb3w_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/SB4E.MOD b/CONTENT/BT/MODELS/SB4E.MOD new file mode 100644 index 0000000..f16bc40 --- /dev/null +++ b/CONTENT/BT/MODELS/SB4E.MOD @@ -0,0 +1,8 @@ +[video] +object=sb4e.bgf + +[collision] +name=sb4e_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/SB4N.MOD b/CONTENT/BT/MODELS/SB4N.MOD new file mode 100644 index 0000000..a70f39b --- /dev/null +++ b/CONTENT/BT/MODELS/SB4N.MOD @@ -0,0 +1,8 @@ +[video] +object=sb4n.bgf + +[collision] +name=sb4n_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/SB4S.MOD b/CONTENT/BT/MODELS/SB4S.MOD new file mode 100644 index 0000000..2f2d3bf --- /dev/null +++ b/CONTENT/BT/MODELS/SB4S.MOD @@ -0,0 +1,8 @@ +[video] +object=sb4s.bgf + +[collision] +name=sb4s_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/SB4W.MOD b/CONTENT/BT/MODELS/SB4W.MOD new file mode 100644 index 0000000..c4fe9bd --- /dev/null +++ b/CONTENT/BT/MODELS/SB4W.MOD @@ -0,0 +1,8 @@ +[video] +object=sb4w.bgf + +[collision] +name=sb4w_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/SEMI.MOD b/CONTENT/BT/MODELS/SEMI.MOD new file mode 100644 index 0000000..f3ef6c8 --- /dev/null +++ b/CONTENT/BT/MODELS/SEMI.MOD @@ -0,0 +1,14 @@ +[video] +object=SEMI.bgf semis.bgf +rubble=SEMID.bgf + +[collision] +name=SEMI.sld + +[gamedata] +class=CulturalIconClassID +DamageZones=trk.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=trkdead +TimeDelay=0.5 +CrunchExplosionModelFile=stephit diff --git a/CONTENT/BT/MODELS/SEMIRIG.MOD b/CONTENT/BT/MODELS/SEMIRIG.MOD new file mode 100644 index 0000000..0802e69 --- /dev/null +++ b/CONTENT/BT/MODELS/SEMIRIG.MOD @@ -0,0 +1,14 @@ +[video] +object=SEMIRIG.bgf semirigs.bgf +rubble=SEMIRD.bgf + +[collision] +name=SEMIRIG.sld + +[gamedata] +class=CulturalIconClassID +DamageZones=trk.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=trkdead +TimeDelay=0.5 +CrunchExplosionModelFile=stephit diff --git a/CONTENT/BT/MODELS/SENSOR.SUB b/CONTENT/BT/MODELS/SENSOR.SUB new file mode 100644 index 0000000..eae1b31 --- /dev/null +++ b/CONTENT/BT/MODELS/SENSOR.SUB @@ -0,0 +1,19 @@ +[Sensor] +Type=SensorClassID +ArmorValue=20.0 +StartingTemperature=77.0 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +ThermalConductance=3.63e5 +ThermalMass=50 +HeatSink=None +WeaponDamagePoints=10.0 +VitalSubsystem=False +CriticalHitScoreBonus=0 +VoltageSource=None +StandardResistance=1.0 +ThermalResistivityCoefficient=0.00024 +AuxScreenNumber=0 +AuxScreenLabel=qsensors.pcc +EngScreenLabel=esensors.pcc +StartTime=0.0 diff --git a/CONTENT/BT/MODELS/SKY.MOD b/CONTENT/BT/MODELS/SKY.MOD new file mode 100644 index 0000000..67aa8c5 --- /dev/null +++ b/CONTENT/BT/MODELS/SKY.MOD @@ -0,0 +1,5 @@ +[video] +object=sky.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/SL2.MOD b/CONTENT/BT/MODELS/SL2.MOD new file mode 100644 index 0000000..ab179ce --- /dev/null +++ b/CONTENT/BT/MODELS/SL2.MOD @@ -0,0 +1,17 @@ +[video] +; +; sl2.mod - Light pole +; +object=sl2.bgf +rubble=sl2d.bgf sl2d_FR.bgf + +[collision] +name=sl2_cv.sld + +[gamedata] +class=CulturalIconClassID +DamageZones=sml.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=smldead +TimeDelay=0.5 +//CrunchExplosionModelFile=smldead diff --git a/CONTENT/BT/MODELS/SLASER.SUB b/CONTENT/BT/MODELS/SLASER.SUB new file mode 100644 index 0000000..68e83d8 --- /dev/null +++ b/CONTENT/BT/MODELS/SLASER.SUB @@ -0,0 +1,35 @@ +[Emitter] +Type=EmitterClassID +StartingTemperature=77.0 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +ThermalConductance=3.55e5 +ThermalMass=1.18e4 +WeaponDamagePoints=1.0 +HeatSink=None +VoltageSource=None +ExplosionModelFile=lzrhit +DamageAmount=1.5 +DamageType=LaserDamage +WeaponRange=150.0 +RechargeRate=1.0 +DischargeTime=0.2 +VitalSubsystem=False +VideoObjectName=slaser.bgf +GraphicLength=2000 +AmmoModelFile=None +HeatCostToFire=0.75 +ThermalResistivityCoefficient=0.0024 +AuxScreenNumber=0 +AuxScreenLabel=qslas.pcc +EngScreenLabel=eslas.pcc +SeekVoltage=0.6 +SeekVoltage=0.7 +SeekVoltage=0.8 +SeekVoltage=0.99 +SeekVoltageRecommendedIndex=2 +PipPosition=1 +PipColor=1.0 0.0 0.0 +PipExtendedRange=False +StartTime=1.0 +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT/MODELS/SLT.MOD b/CONTENT/BT/MODELS/SLT.MOD new file mode 100644 index 0000000..36dfd6c --- /dev/null +++ b/CONTENT/BT/MODELS/SLT.MOD @@ -0,0 +1,8 @@ +[video] +object=slt.bgf + +[collision] +name=slt_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/SML.DMG b/CONTENT/BT/MODELS/SML.DMG new file mode 100644 index 0000000..8405f4a --- /dev/null +++ b/CONTENT/BT/MODELS/SML.DMG @@ -0,0 +1,3 @@ +[default] +WeaponDamagePoints=1 +VitalDamageZone=True diff --git a/CONTENT/BT/MODELS/SMLDEAD.MOD b/CONTENT/BT/MODELS/SMLDEAD.MOD new file mode 100644 index 0000000..86322e3 --- /dev/null +++ b/CONTENT/BT/MODELS/SMLDEAD.MOD @@ -0,0 +1,10 @@ +[video] +object=1020 1022 1021 + +[audio] +external=mbnexp.scp + +[gamedata] +class=ExplosionClassID +// Audio requires ExplosionDuration >= 12.0 +ExplosionDuration=12.0 diff --git a/CONTENT/BT/MODELS/SN1.MOD b/CONTENT/BT/MODELS/SN1.MOD new file mode 100644 index 0000000..fdc2826 --- /dev/null +++ b/CONTENT/BT/MODELS/SN1.MOD @@ -0,0 +1,8 @@ +[video] +object=sn1.bgf + +[collision] +name=sn1_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/SN2.MOD b/CONTENT/BT/MODELS/SN2.MOD new file mode 100644 index 0000000..0318f44 --- /dev/null +++ b/CONTENT/BT/MODELS/SN2.MOD @@ -0,0 +1,12 @@ +[video] +; +; sn2 - Snow field (flat) +; +object=sn2.bgf + +[collision] +// yes, we want this to point to sn1's solids +name=sn1_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/SN4.MOD b/CONTENT/BT/MODELS/SN4.MOD new file mode 100644 index 0000000..e1c3a48 --- /dev/null +++ b/CONTENT/BT/MODELS/SN4.MOD @@ -0,0 +1,12 @@ +[video] +; +; sn4 - Snow field (flat) +; +object=sn4.bgf + +[collision] +// yes, we want this to point to sn1's solids +name=sn1_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/SND1.DMG b/CONTENT/BT/MODELS/SND1.DMG new file mode 100644 index 0000000..df136b9 --- /dev/null +++ b/CONTENT/BT/MODELS/SND1.DMG @@ -0,0 +1,182 @@ +// This file is intentionally empty and MUST be read-only! +[dz_door] +ExplosionTable=snd1dmg.exp +DefaultEffectSiteName=siteedz_door +WeaponDamagePoints=1 +VitalDamageZone=False +[dz_dtorso] +ExplosionTable=snd1dmg.exp +DefaultEffectSiteName=siteedz_dtorso +WeaponDamagePoints=122 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.083333 +CriticalSubsystem=Condenser5 2 0.500000 +CriticalSubsystem=GeneratorD 15 0.500000 +CriticalSubsystem=Avionics 5 0.200000 +CriticalSubsystem=Torso 20 0.333333 +[dz_hip] +ExplosionTable=snd1dmg.exp +DefaultEffectSiteName=siteedz_hip +WeaponDamagePoints=144 +VitalDamageZone=True +CriticalSubsystem=Myomers 15 0.142857 +CriticalSubsystem=Torso 20 0.333333 +[dz_larm] +ExplosionTable=snd1dmg.exp +DefaultEffectSiteName=siteedz_larm +WeaponDamagePoints=72 +VitalDamageZone=False +DescendOnDestruction=True +CriticalSubsystem=Condenser4 2 0.500000 +[dz_ldleg] +ExplosionTable=snd1dmg.exp +DefaultEffectSiteName=siteedz_ldleg +WeaponDamagePoints=90 +VitalDamageZone=True +LegDamageZone=LeftLeg +CriticalSubsystem=HeatSink 100 0.083333 +CriticalSubsystem=Myomers 15 0.142857 +[dz_lfoot] +ExplosionTable=snd1dmg.exp +DefaultEffectSiteName=siteedz_lfoot +WeaponDamagePoints=81 +VitalDamageZone=True +LegDamageZone=LeftLeg +CriticalSubsystem=Myomers 15 0.142857 +[dz_lgun] +ExplosionTable=snd1dmg.exp +DefaultEffectSiteName=siteedz_lgun +WeaponDamagePoints=77 +VitalDamageZone=False +DescendOnDestruction=True +CriticalSubsystem=Condenser4 2 0.500000 +CriticalSubsystem=PPC_1 20 1.000000 +[dz_ltorso] +ExplosionTable=snd1dmg.exp +DefaultEffectSiteName=siteedz_ltorso +WeaponDamagePoints=137 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.083333 +CriticalSubsystem=Condenser1 2 0.500000 +CriticalSubsystem=GeneratorA 15 0.500000 +CriticalSubsystem=Avionics 5 0.200000 +CriticalSubsystem=PPC_2 20 1.000000 +[dz_luleg] +ExplosionTable=snd1dmg.exp +DefaultEffectSiteName=siteedz_luleg +WeaponDamagePoints=95 +VitalDamageZone=True +LegDamageZone=LeftLeg +CriticalSubsystem=HeatSink 100 0.083333 +CriticalSubsystem=Myomers 15 0.142857 +[dz_rarm] +ExplosionTable=snd1dmg.exp +DefaultEffectSiteName=siteedz_rarm +WeaponDamagePoints=72 +VitalDamageZone=False +DescendOnDestruction=True +CriticalSubsystem=Condenser6 2 0.500000 +CriticalSubsystem=AmmoBinAFC25 15 0.500000 +[dz_rdleg] +ExplosionTable=snd1dmg.exp +DefaultEffectSiteName=siteedz_rdleg +WeaponDamagePoints=90 +VitalDamageZone=True +LegDamageZone=RightLeg +CriticalSubsystem=HeatSink 100 0.083333 +CriticalSubsystem=Myomers 15 0.142857 +[dz_reardtorso] +ExplosionTable=snd1dmg.exp +DefaultEffectSiteName=siteedz_reardtorso +WeaponDamagePoints=81 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.083333 +CriticalSubsystem=Reservoir 15 0.250000 +CriticalSubsystem=Condenser5 2 0.500000 +CriticalSubsystem=GeneratorD 15 0.500000 +CriticalSubsystem=Torso 20 0.333333 +[dz_rearltorso] +ExplosionTable=snd1dmg.exp +DefaultEffectSiteName=siteedz_rearltorso +WeaponDamagePoints=117 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.083333 +CriticalSubsystem=Reservoir 15 0.250000 +CriticalSubsystem=Condenser1 2 0.500000 +CriticalSubsystem=GeneratorA 15 0.500000 +[dz_rearrtorso] +ExplosionTable=snd1dmg.exp +DefaultEffectSiteName=siteedz_rearrtorso +WeaponDamagePoints=117 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.083333 +CriticalSubsystem=Reservoir 15 0.250000 +CriticalSubsystem=Condenser3 2 0.500000 +CriticalSubsystem=GeneratorC 15 0.500000 +[dz_rearutorso] +ExplosionTable=snd1dmg.exp +DefaultEffectSiteName=siteedz_rearutorso +WeaponDamagePoints=117 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.083333 +CriticalSubsystem=Reservoir 15 0.250000 +CriticalSubsystem=Condenser2 2 0.500000 +CriticalSubsystem=GeneratorB 15 0.500000 +CriticalSubsystem=Gyroscope 45 0.500000 +[dz_rfoot] +ExplosionTable=snd1dmg.exp +DefaultEffectSiteName=siteedz_rfoot +WeaponDamagePoints=81 +VitalDamageZone=True +LegDamageZone=RightLeg +CriticalSubsystem=Myomers 15 0.142857 +[dz_rgun] +ExplosionTable=snd1dmg.exp +DefaultEffectSiteName=siteedz_rgun +WeaponDamagePoints=77 +VitalDamageZone=False +DescendOnDestruction=True +CriticalSubsystem=Condenser6 2 0.500000 +CriticalSubsystem=PPC_3 20 1.000000 +CriticalSubsystem=AmmoBinAFC25 20 0.500000 +CriticalSubsystem=AFC25 20 1.000000 +[dz_rtorso] +ExplosionTable=snd1dmg.exp +DefaultEffectSiteName=siteedz_rtorso +WeaponDamagePoints=137 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.083333 +CriticalSubsystem=Condenser3 2 0.500000 +CriticalSubsystem=GeneratorC 15 0.500000 +CriticalSubsystem=Avionics 5 0.200000 +CriticalSubsystem=ERSLaser 10 1.000000 +[dz_ruleg] +ExplosionTable=snd1dmg.exp +DefaultEffectSiteName=siteedz_ruleg +WeaponDamagePoints=95 +VitalDamageZone=True +LegDamageZone=RightLeg +CriticalSubsystem=HeatSink 100 0.083333 +CriticalSubsystem=Myomers 15 0.142857 +[dz_searchlight] +ExplosionTable=snd1dmg.exp +DefaultEffectSiteName=siteedz_searchlight +WeaponDamagePoints=50 +VitalDamageZone=False +CriticalSubsystem=Avionics 5 0.200000 +CriticalSubsystem=HUD 15 0.500000 +CriticalSubsystem=Searchlight 20 1.000000 +CriticalSubsystem=ThermalSight 30 1.000000 +[dz_utorso] +ExplosionTable=snd1dmg.exp +DefaultEffectSiteName=siteedz_utorso +WeaponDamagePoints=162 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.083333 +CriticalSubsystem=Condenser2 2 0.500000 +CriticalSubsystem=GeneratorB 15 0.500000 +CriticalSubsystem=Avionics 5 0.200000 +CriticalSubsystem=Gyroscope 45 0.500000 +CriticalSubsystem=HUD 15 0.500000 +CriticalSubsystem=AmmoBinLRM5 30 1.000000 +CriticalSubsystem=LRM5 20 1.000000 diff --git a/CONTENT/BT/MODELS/SND1.MOD b/CONTENT/BT/MODELS/SND1.MOD new file mode 100644 index 0000000..967b060 --- /dev/null +++ b/CONTENT/BT/MODELS/SND1.MOD @@ -0,0 +1,135 @@ +[video] +skeleton=snd.skl +skeletona=snx.skl +destroyed=sndd.skl +dzm=sndskin.dzm +dzma=sndskin.dzm + +[audio] +internal=snd1int.scp +external=snd1ext.scp + +[collision] +name=snd_cv.sld + +[gauge] +image=thor_ga.gim + +[gaugeMissionReview] +pixelmap=sun_mr.pcc + +[gamedata] +class=MechClassID +MoverMass=90000.0 +MomentOfInertia=1.75 3.125 1.75 +PositiveLinearDragCoefficients=0.14 0.4 0.07 +NegativeLinearDragCoefficients=0.14 0.2 0.08 +AngularDragCoefficients=0.3 0.5 0.3 +FrictionCoefficient=0.1 +ElasticityCoefficient=0.2 +MinimumBounceSpeed=0.2 +MaxAcceleration=10 +AnimationPrefix=snd +Subsystems=snd1.sub +DamageZones=snd1.dmg +DamageLookupTable=snd1dmg.tbl +RelativeMechValue=1.0 +LookLeftAngle=60 +LookRightAngle=-60 +LookBackAngle=0 +LookFrontAngle=-15 +WalkingTurnRate=45 +RunningTurnRate=30 +DeathEffect=thrdead +CameraOffset=0.0 15.0 30.0 +DeathSplashDamage=5 +DeathSplashRadius=50 +TimeDelay=0.3 + +MaxUnstableAcceleration=22.0 +UnstableAccelerationEffect=0.7 +UnstableGunTheEngineEffect=1.0 +UnstableSuperStopEffect=0.5 +UnstableHighVelocityEffect=0.4 +UnstableStopedTurnEffect=1.0 +SuperStopAcceleration=20.0 + +ThrottleAdjustment=1.0 + +UpdateTurnDegreeDiffrence=3 +UpdateTurnVelocityDiffrence=0.045 +UpdatePositionDiffrence=0.3 + +ShadowJointName=jointshadow + +[ControlMappings] +Thrustmaster=snd1thr.ctl +L4=snd1l4.ctl + +[animations] +animationtransition=sndswr.ani +animation=sndwwl.ani +animation=sndwwr.ani +animation=sndwsr.ani +animation=sndwsl.ani +animationtransition=sndwrl.ani +animationtransition=sndwrr.ani +animation=sndrrl.ani +animation=sndrrr.ani +animation=sndrwl.ani +animation=sndrwr.ani +animation=sndbmp.ani +animation=sndbbl.ani +animation=sndbbr.ani +animation=sndbsl.ani +animation=sndbsr.ani +animationtransition=sndsbl.ani +animationtransition=sndsbr.ani + +animationtransition=sndswri.ani +animation=sndwwli.ani +animation=sndwwri.ani +animation=sndwsri.ani +animation=sndwsli.ani +animationtransition=sndwrli.ani +animationtransition=sndwrri.ani +animation=sndrrli.ani +animation=sndrrri.ani +animation=sndrwli.ani +animation=sndrwri.ani +animation=sndbmpi.ani +animation=sndbbli.ani +animation=sndbbri.ani +animation=sndbsli.ani +animation=sndbsri.ani +animationtransition=sndsbli.ani +animationtransition=sndsbri.ani + +animation=sndggl.ani +animation=sndggr.ani +animation=sndgsl.ani +animation=sndgsr.ani +animationtransition=sndwgl.ani +animationtransition=sndwgr.ani + +animation=sndggli.ani +animation=sndggri.ani +animation=sndgsli.ani +animation=sndgsri.ani +animationtransition=sndwgli.ani +animationtransition=sndwgri.ani + +animation=sndsqu.ani +animation=sndsqd.ani +animation=sndsqui.ani +animation=sndsqdi.ani + +animation=sndtrn.ani +animation=sndtrni.ani + +//animation=sndff.ani +//animation=sndfb.ani +//animation=sndfl.ani +//animation=sndfr.ani + + diff --git a/CONTENT/BT/MODELS/SND1.SUB b/CONTENT/BT/MODELS/SND1.SUB new file mode 100644 index 0000000..a3ce2ae --- /dev/null +++ b/CONTENT/BT/MODELS/SND1.SUB @@ -0,0 +1,197 @@ +[HeatSink] +Type=HeatSinkClassID +Include=heatsnk.sub +HeatSinkCount=30 +SubsystemFlags=DontReplicateFlag + +[Reservoir] +Type=ReservoirClassID +Include=reserve.sub +HeatSink=HeatSink +SegmentPageName=siteeyepoint + +[Condenser1] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser2] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser3] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser4] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser5] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser6] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[GeneratorA] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser1 +SubsystemFlags=DontReplicateFlag + +[GeneratorB] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser2 +SubsystemFlags=DontReplicateFlag + +[GeneratorC] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser3 +SubsystemFlags=DontReplicateFlag + +[GeneratorD] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser5 +SubsystemFlags=DontReplicateFlag + +[Avionics] +Type=SensorClassID +Include=sensor.sub +HeatSink=Condenser2 +VoltageSource=GeneratorD +AuxScreenNumber=5 +SubsystemFlags=DontReplicateFlag + +AuxScreenPlacement=2 +[Myomers] +Type=MyomersClassID +Include=myomers.sub +HeatSink=Condenser5 +VoltageSource=GeneratorD +AuxScreenNumber=6 +SubsystemFlags=DontReplicateFlag + +AuxScreenPlacement=0 +[Gyroscope] +Type=GyroscopeClassID +Include=gyro.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag + +[Torso] +Type=TorsoClassID +Include=torso.sub +WatchedSubsystem=Myomers + +HorizontalRotationPerSecond=35 +VerticalRotationPerSecond=30 +HorizontalLimitRight=-120 +HorizontalLimitLeft=120 +[HUD] +Type=HUDClassID +Include=hud.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag + +[Searchlight] +Type=SearchlightClassID +Include=srchlite.sub +WatchedSubsystem=Avionics +SegmentPageName=sitelight + +[ThermalSight] +Type=ThermalSightClassID +Include=Thermal.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag +[PPC_1] +Type=PPCClassID +Include=ppc.sub +SegmentPageName=sitelgunport +PipPosition=1 +VoltageSource=GeneratorA +HeatSink=Condenser4 +AuxScreenNumber=1 +AuxScreenPlacement=4 +[PPC_2] +Type=PPCClassID +Include=ppc.sub +SegmentPageName=siteltorsoport +PipPosition=2 +VoltageSource=GeneratorA +HeatSink=Condenser1 +AuxScreenNumber=2 +AuxScreenPlacement=1 +[PPC_3] +Type=PPCClassID +Include=ppc.sub +SegmentPageName=siterugunport +PipPosition=3 +VoltageSource=GeneratorC +HeatSink=Condenser6 +AuxScreenNumber=10 +AuxScreenPlacement=6 +[AmmoBinAFC25] +Type=AmmoBinClassID +Include=ammafc25.sub +WatchedSubsystem=AFC25 +AmmoCount=25 +[AFC25] +AmmoBin=AmmoBinAFC25 +Type=ProjectileWeaponClassID +Include=afc25.sub +SegmentPageName=siterdgunport +PipPosition=4 +VoltageSource=GeneratorC +HeatSink=Condenser6 +AuxScreenNumber=12 +AuxScreenPlacement=6 +[ERSLaser] +Type=EmitterClassID +Include=erslaser.sub +SegmentPageName=sitertorsoport +PipPosition=1 +VoltageSource=GeneratorC +HeatSink=Condenser3 +AuxScreenNumber=9 +AuxScreenPlacement=3 +[AmmoBinLRM5] +Type=AmmoBinClassID +Include=ammnrk5.sub +WatchedSubsystem=LRM5 +AmmoCount=20 +[LRM5] +AmmoBin=AmmoBinLRM5 +Type=MissileLauncherClassID +Include=nrk5.sub +SegmentPageName=sitemissleport +PipPosition=1 +VoltageSource=GeneratorB +HeatSink=Condenser2 +AuxScreenNumber=7 +AuxScreenPlacement=2 +[MessageManager] +Type=SubsystemMessageManagerClassID +ExplosionModelFile=majhit 1.0 +TerrainHitExplosion=gndhit +RendererCompensateTime=0.3 +[MechTech] +Type=MechTechClassID +AlarmModel=mechalrm +SubsystemFlags=DontReplicateFlag diff --git a/CONTENT/BT/MODELS/SND1DMG.EXP b/CONTENT/BT/MODELS/SND1DMG.EXP new file mode 100644 index 0000000..c9b1598 --- /dev/null +++ b/CONTENT/BT/MODELS/SND1DMG.EXP @@ -0,0 +1,28 @@ +[OneDamage] +ExplosionModelFile=dam1hit +DamageLevel=0.2 +TimeDelay=0.0 + +[TwoDamage] +ExplosionModelFile=dam2hit +DamageLevel=0.4 +TimeDelay=0.0 + +[ThreeDamage] +ExplosionModelFile=dam3hit +DamageLevel=0.6 +TimeDelay=0.0 + +[FourDamage] +ExplosionModelFile=dam4hit +DamageLevel=0.8 +TimeDelay=0.0 + +[DestroyedExplosion] +ExplosionModelFile=desthit +GraphicState=Destroyed + +[GoneExplosion] +ExplosionModelFile=desthit +GraphicState=Gone + diff --git a/CONTENT/BT/MODELS/SND1DMG.TBL b/CONTENT/BT/MODELS/SND1DMG.TBL new file mode 100644 index 0000000..180f3e5 --- /dev/null +++ b/CONTENT/BT/MODELS/SND1DMG.TBL @@ -0,0 +1,187 @@ +[LeftFoot] +DamageZone=dz_lfoot 0.5 +DamageZone=dz_ldleg 0.3 +DamageZone=dz_rfoot 0.2 + +[RightFoot] +DamageZone=dz_rfoot 0.5 +DamageZone=dz_rdleg 0.3 +DamageZone=dz_lfoot 0.2 + +[LeftLeg] +DamageZone=dz_luleg 0.4 +DamageZone=dz_ldleg 0.4 +DamageZone=dz_ruleg 0.1 +DamageZone=dz_rdleg 0.1 + +[RightLeg] +DamageZone=dz_ruleg 0.4 +DamageZone=dz_rdleg 0.4 +DamageZone=dz_luleg 0.1 +DamageZone=dz_ldleg 0.1 + +[LeftHip] +DamageZone=dz_luleg 0.5 +DamageZone=dz_hip 0.2 +DamageZone=dz_ltorso 0.2 +DamageZone=dz_rearltorso 0.1 + +[FrontHip] +DamageZone=dz_luleg 0.25 +DamageZone=dz_ruleg 0.25 +DamageZone=dz_hip 0.3 +DamageZone=dz_dtorso 0.2 + +[RearHip] +DamageZone=dz_luleg 0.25 +DamageZone=dz_ruleg 0.25 +DamageZone=dz_hip 0.3 +DamageZone=dz_reardtorso 0.2 + +[RightHip] +DamageZone=dz_ruleg 0.5 +DamageZone=dz_hip 0.2 +DamageZone=dz_rtorso 0.2 +DamageZone=dz_rearrtorso 0.1 + +[LeftWaist] +DamageZone=dz_ltorso 0.25 +DamageZone=dz_rearltorso 0.25 +DamageZone=dz_dtorso 0.25 +DamageZone=dz_reardtorso 0.25 + +[FrontWaist] +DamageZone=dz_ltorso 0.3 +DamageZone=dz_rtorso 0.3 +DamageZone=dz_dtorso 0.4 + +[RearWaist] +DamageZone=dz_rearltorso 0.3 +DamageZone=dz_rearrtorso 0.3 +DamageZone=dz_reardtorso 0.4 + +[RightWaist] +DamageZone=dz_rtorso 0.25 +DamageZone=dz_rearrtorso 0.25 +DamageZone=dz_dtorso 0.25 +DamageZone=dz_reardtorso 0.25 + +[LeftChest] +DamageZone=dz_larm 0.3 +DamageZone=dz_lgun 0.1 +DamageZone=dz_ltorso 0.2 +DamageZone=dz_rearltorso 0.2 +DamageZone=dz_utorso 0.1 +DamageZone=dz_rearutorso 0.1 + +[RightChest] +DamageZone=dz_rarm 0.1 +DamageZone=dz_rgun 0.3 +DamageZone=dz_rtorso 0.2 +DamageZone=dz_rearrtorso 0.2 +DamageZone=dz_utorso 0.1 +DamageZone=dz_rearutorso 0.1 + +[FrontChest] +DamageZone=dz_larm 0.1 +DamageZone=dz_rarm 0.1 +DamageZone=dz_ltorso 0.15 +DamageZone=dz_rtorso 0.15 +DamageZone=dz_utorso 0.4 +DamageZone=dz_searchlight 0.1 + +[RearChest] +DamageZone=dz_larm 0.1 +DamageZone=dz_rarm 0.1 +DamageZone=dz_rearltorso 0.15 +DamageZone=dz_rearrtorso 0.15 +DamageZone=dz_rearutorso 0.4 +DamageZone=dz_utorso 0.1 + +[TopLeft] +DamageZone=dz_utorso 0.5 +DamageZone=dz_ltorso 0.35 +DamageZone=dz_rtorso 0.15 + +[TopRight] +DamageZone=dz_utorso 0.5 +DamageZone=dz_ltorso 0.15 +DamageZone=dz_rtorso 0.35 + +// The data in this table is totally bogus. GDU 12-2-95 +[Layer1] +PieSlice=RightFoot +PieSlice=RightFoot +PieSlice=LeftFoot +PieSlice=LeftFoot +PieSlice=LeftFoot +PieSlice=LeftFoot +PieSlice=RightFoot +PieSlice=RightFoot +RotateWithTorso=False + +[Layer2] +PieSlice=RightLeg +PieSlice=RightLeg +PieSlice=LeftLeg +PieSlice=LeftLeg +PieSlice=LeftLeg +PieSlice=LeftLeg +PieSlice=RightLeg +PieSlice=RightLeg +RotateWithTorso=False + +[Layer3] +PieSlice=RightHip +PieSlice=FrontHip +PieSlice=FrontHip +PieSlice=LeftHip +PieSlice=LeftHip +PieSlice=RearHip +PieSlice=RearHip +PieSlice=RightHip +RotateWithTorso=False + +[Layer4] +PieSlice=RightHip +PieSlice=FrontHip +PieSlice=FrontHip +PieSlice=LeftHip +PieSlice=LeftHip +PieSlice=RearHip +PieSlice=RearHip +PieSlice=RightHip +RotateWithTorso=True + +[Layer5] +PieSlice=RightWaist +PieSlice=FrontWaist +PieSlice=FrontWaist +PieSlice=LeftWaist +PieSlice=LeftWaist +PieSlice=RearWaist +PieSlice=RearWaist +PieSlice=RightWaist +RotateWithTorso=True + +[Layer6] +PieSlice=RightChest +PieSlice=FrontChest +PieSlice=FrontChest +PieSlice=LeftChest +PieSlice=LeftChest +PieSlice=RearChest +PieSlice=RearChest +PieSlice=RightChest +RotateWithTorso=True + +[Layer7] +PieSlice=TopRight +PieSlice=TopRight +PieSlice=TopLeft +PieSlice=TopLeft +PieSlice=TopLeft +PieSlice=TopLeft +PieSlice=TopRight +PieSlice=TopRight +RotateWithTorso=True diff --git a/CONTENT/BT/MODELS/SND1L4.CTL b/CONTENT/BT/MODELS/SND1L4.CTL new file mode 100644 index 0000000..025468e --- /dev/null +++ b/CONTENT/BT/MODELS/SND1L4.CTL @@ -0,0 +1,809 @@ +[StickPosition_JP] +//----------------------------------------------------------------------- +// Joystick +//----------------------------------------------------------------------- +IOMapping=JoystickPhysical +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=StickPosition +Mode=ModeAlwaysActive + +[Throttle_ST] +//----------------------------------------------------------------------- +// Throttle +//----------------------------------------------------------------------- +IOMapping=ScalarThrottle +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=ThrottlePosition +Mode=ModeAlwaysActive + +//----------------------------------------------------------------------- +// Misc. switches +//----------------------------------------------------------------------- +[ReverseThrust_BT1] +IOMapping=ButtonThrottle1 +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=ReverseThrust +Mode=ModeAlwaysActive + +[TorsoCenter_BJHU] +IOMapping=ButtonJoystickHatUp +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoCenter +Mode=ModeAlwaysActive + +[LookLeft_BJHL] +IOMapping=ButtonJoystickHatLeft +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=LookLeft +Mode=ModeAlwaysActive + +[LookRight_BJHR] +IOMapping=ButtonJoystickHatRight +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=LookRight +Mode=ModeAlwaysActive + +[LookBack_BJHD] +IOMapping=ButtonJoystickHatDown +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=LookBehind +Mode=ModeAlwaysActive + +//----------------------------------------------------------------------- +// Secondary mappings +//----------------------------------------------------------------------- +[Button_Sec_1] // Zoom radar in (magnify image) +IOMapping=ButtonSecondary1 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=ZoomIn +Mode=ModeAlwaysActive + +[Button_Sec_2] // Zoom radar out (reduce image) +IOMapping=ButtonSecondary2 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=ZoomOut +Mode=ModeAlwaysActive + +// +// 'Heat vision' mapped to secondary +// SGM 1/6/97 + +[Button_Sec_3] // Toggle heat vision +IOMapping=ButtonSecondary3 +Type=EventMapping +Subsystem=ThermalSight +MessageID=ToggleLamp +Mode=ModeAlwaysActive + +// +// 'Duck' remapped to real message and location. +// GDU 7/9/96 + +[Button_Sec_4] // Request crouch position +IOMapping=ButtonSecondary4 +Type=EventMapping +MessageID=DuckRequest +Mode=ModeAlwaysActive + +[Button_Sec_5] // Toggle searchlight +IOMapping=ButtonSecondary5 +Type=EventMapping +Subsystem=Searchlight +MessageID=ToggleLamp +Mode=ModeAlwaysActive + +[Button_Sec_6] // Cycle through damage display modes +IOMapping=ButtonSecondary6 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=CycleDisplayMode +Mode=ModeAlwaysActive + +[Button_Sec_7] // Cycle through control modes +IOMapping=ButtonSecondary7 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=CycleControlMode +Mode=ModeAlwaysActive + +// ButtonSecondary8 presently unused + +[Button_Sec_9] // Toggle generator 'a' +IOMapping=ButtonSecondary9 +Type=EventMapping +Subsystem=GeneratorA +MessageID=ToggleGeneratorOnOff +Mode=ModeAlwaysActive + +[Button_Sec_10] // Toggle generator 'b' +IOMapping=ButtonSecondary10 +Type=EventMapping +Subsystem=GeneratorB +MessageID=ToggleGeneratorOnOff +Mode=ModeAlwaysActive + +[Button_Sec_11] // Toggle generator 'c' +IOMapping=ButtonSecondary11 +Type=EventMapping +Subsystem=GeneratorC +MessageID=ToggleGeneratorOnOff +Mode=ModeAlwaysActive + +[Button_Sec_12] // Toggle generator 'd' +IOMapping=ButtonSecondary12 +Type=EventMapping +Subsystem=GeneratorD +MessageID=ToggleGeneratorOnOff +Mode=ModeAlwaysActive + +//----------------------------------------- +// Heat Management Screen Mappings +//----------------------------------------- +[Condenser1_Button] +IOMapping=ButtonAuxUpperLeft1 +Type=EventMapping +Subsystem=Condenser1 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Condenser2_Button] +IOMapping=ButtonAuxUpperLeft2 +Type=EventMapping +Subsystem=Condenser2 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Condenser3_Button] +IOMapping=ButtonAuxUpperLeft3 +Type=EventMapping +Subsystem=Condenser3 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Reservoir_Button] +IOMapping=ButtonAuxUpperLeft4 +Type=EventMapping +Subsystem=Reservoir +MessageID=InjectCoolant +Mode=ModeAlwaysActive + +[Condenser4_Button] +IOMapping=ButtonAuxUpperLeft5 +Type=EventMapping +Subsystem=Condenser4 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Condenser5_Button] +IOMapping=ButtonAuxUpperLeft6 +Type=EventMapping +Subsystem=Condenser5 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Condenser6_Button] +IOMapping=ButtonAuxUpperLeft7 +Type=EventMapping +Subsystem=Condenser6 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Reduce_Button] +IOMapping=ButtonAuxUpperLeft8 +Type=EventMapping +MessageID=BalanceCoolant +Mode=ModeAlwaysActive + +//----------------------------------------------------------------------- +// Aux 1 mappings +//----------------------------------------------------------------------- +//------------------------------------------ +// Aux 1 'Quad screen' mappings +//------------------------------------------ +[MFD1_to_Mode_1] // To mode 1 +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Eng1 +Mode=ModeMFD1Quad + +[MFD1_Configure_Trigger_1] // Configure +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Subsystem=PPC_1 +MessageID=ConfigureMappables +Mode=ModeMFD1Quad + +[MFD1_to_Mode_2] // To mode 2 +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Eng2 +Mode=ModeMFD1Quad + +[MFD1_Configure_Trigger_2] // Configure +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Subsystem=PPC_2 +MessageID=ConfigureMappables +Mode=ModeMFD1Quad + +[Aux_1_Mode_1_to_MFD1] +IOMapping=ButtonAuxLowerLeft8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Quad +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_Select_GeneratorA] +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Subsystem=PPC_1 +MessageID=SelectGeneratorA +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_Select_GeneratorB] +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Subsystem=PPC_1 +MessageID=SelectGeneratorB +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_Select_GeneratorC] +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Subsystem=PPC_1 +MessageID=SelectGeneratorC +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_Select_GeneratorD] +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Subsystem=PPC_1 +MessageID=SelectGeneratorD +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_OPTION] +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Subsystem=PPC_1 +MessageID=ToggleSeekVoltage +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Subsystem=PPC_1 +MessageID=ToggleGeneratorMode +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_ToggleCooling] +IOMapping=ButtonAuxLowerLeft7 +Type=EventMapping +Subsystem=PPC_1 +MessageID=ToggleCooling +Mode=ModeMFD1Eng1 + +//-------------------------------------------- +// Aux 1 'Mode 2' mappings, AuxScreenNumber=2 +//-------------------------------------------- +[Aux_1_Mode_2_to_MFD1] +IOMapping=ButtonAuxLowerLeft8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Quad +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_Select_GeneratorA] +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Subsystem=PPC_2 +MessageID=SelectGeneratorA +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_Select_GeneratorB] +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Subsystem=PPC_2 +MessageID=SelectGeneratorB +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_Select_GeneratorC] +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Subsystem=PPC_2 +MessageID=SelectGeneratorC +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_Select_GeneratorD] +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Subsystem=PPC_2 +MessageID=SelectGeneratorD +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_OPTION] +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Subsystem=PPC_2 +MessageID=ToggleSeekVoltage +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Subsystem=PPC_2 +MessageID=ToggleGeneratorMode +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_ToggleCooling] +IOMapping=ButtonAuxLowerLeft7 +Type=EventMapping +Subsystem=PPC_2 +MessageID=ToggleCooling +Mode=ModeMFD1Eng2 + +//--------------------------------------------- +// Aux 1 'Mode 3' mappings, AuxScreenNumber=3 +//--------------------------------------------- +[MFD2_to_Mode_1] +IOMapping=ButtonAuxUpperCenter1 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Eng1 +Mode=ModeMFD2Quad + +[MFD2_to_Mode_2] +IOMapping=ButtonAuxUpperCenter3 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Eng2 +Mode=ModeMFD2Quad + +[MFD2_to_Mode_3] +IOMapping=ButtonAuxUpperCenter5 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Eng3 +Mode=ModeMFD2Quad + +[MFD2_Configure_Trigger_3] +IOMapping=ButtonAuxUpperCenter6 +Type=EventMapping +Subsystem=LRM5 +MessageID=ConfigureMappables +Mode=ModeMFD2Quad + +[Aux_2_Mode_1_to_MFD2] +IOMapping=ButtonAuxUpperCenter8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Quad +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_Select_GeneratorA] +IOMapping=ButtonAuxUpperCenter1 +Type=EventMapping +Subsystem=Avionics +MessageID=SelectGeneratorA +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_Select_GeneratorB] +IOMapping=ButtonAuxUpperCenter2 +Type=EventMapping +Subsystem=Avionics +MessageID=SelectGeneratorB +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_Select_GeneratorC] +IOMapping=ButtonAuxUpperCenter3 +Type=EventMapping +Subsystem=Avionics +MessageID=SelectGeneratorC +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_Select_GeneratorD] +IOMapping=ButtonAuxUpperCenter4 +Type=EventMapping +Subsystem=Avionics +MessageID=SelectGeneratorD +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_ToggleGeneratorMode] +IOMapping=ButtonAuxUpperCenter6 +Type=EventMapping +Subsystem=Avionics +MessageID=ToggleGeneratorMode +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_ToggleCooling] +IOMapping=ButtonAuxUpperCenter7 +Type=EventMapping +Subsystem=Avionics +MessageID=ToggleCooling +Mode=ModeMFD2Eng1 + +//-------------------------------------------- +// Aux 2 'Mode 2' mappings, AuxScreenNumber=10 +//-------------------------------------------- +[Aux_2_Mode_2_to_MFD2] +IOMapping=ButtonAuxUpperCenter8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Quad +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_Select_GeneratorA] +IOMapping=ButtonAuxUpperCenter1 +Type=EventMapping +Subsystem=Myomers +MessageID=SelectGeneratorA +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_Select_GeneratorB] +IOMapping=ButtonAuxUpperCenter2 +Type=EventMapping +Subsystem=Myomers +MessageID=SelectGeneratorB +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_Select_GeneratorC] +IOMapping=ButtonAuxUpperCenter3 +Type=EventMapping +Subsystem=Myomers +MessageID=SelectGeneratorC +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_Select_GeneratorD] +IOMapping=ButtonAuxUpperCenter4 +Type=EventMapping +Subsystem=Myomers +MessageID=SelectGeneratorD +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_OPTION] +IOMapping=ButtonAuxUpperCenter5 +Type=EventMapping +Subsystem=Myomers +MessageID=ToggleSeekVoltage +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_ToggleGeneratorMode] +IOMapping=ButtonAuxUpperCenter6 +Type=EventMapping +Subsystem=Myomers +MessageID=ToggleGeneratorMode +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_ToggleCooling] +IOMapping=ButtonAuxUpperCenter7 +Type=EventMapping +Subsystem=Myomers +MessageID=ToggleCooling +Mode=ModeMFD2Eng2 + +//-------------------------------------------- +// Aux 3 'Mode 3' mappings, AuxScreenNumber=11 +//-------------------------------------------- +[Aux_2_Mode_3_to_MFD2] +IOMapping=ButtonAuxUpperCenter8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Quad +Mode=ModeMFD2Eng3 + +[Aux_2_Mode_3_Select_GeneratorA] +IOMapping=ButtonAuxUpperCenter1 +Type=EventMapping +Subsystem=LRM5 +MessageID=SelectGeneratorA +Mode=ModeMFD2Eng3 + +[Aux_2_Mode_3_Select_GeneratorB] +IOMapping=ButtonAuxUpperCenter2 +Type=EventMapping +Subsystem=LRM5 +MessageID=SelectGeneratorB +Mode=ModeMFD2Eng3 + +[Aux_2_Mode_3_Select_GeneratorC] +IOMapping=ButtonAuxUpperCenter3 +Type=EventMapping +Subsystem=LRM5 +MessageID=SelectGeneratorC +Mode=ModeMFD2Eng3 + +[Aux_2_Mode_3_Select_GeneratorD] +IOMapping=ButtonAuxUpperCenter4 +Type=EventMapping +Subsystem=LRM5 +MessageID=SelectGeneratorD +Mode=ModeMFD2Eng3 + +[Aux_2_Mode_3_OPTION] +IOMapping=ButtonAuxUpperCenter5 +Type=EventMapping +Subsystem=LRM5 +MessageID=EjectAmmo +Mode=ModeMFD2Eng3 + +[Aux_2_Mode_3_ToggleGeneratorMode] +IOMapping=ButtonAuxUpperCenter6 +Type=EventMapping +Subsystem=LRM5 +MessageID=ToggleGeneratorMode +Mode=ModeMFD2Eng3 + +[Aux_2_Mode_3_ToggleCooling] +IOMapping=ButtonAuxUpperCenter7 +Type=EventMapping +Subsystem=LRM5 +MessageID=ToggleCooling +Mode=ModeMFD2Eng3 + +//--------------------------------------------- +// Aux 3 'Mode 4' mappings, AuxScreenNumber=12 +//--------------------------------------------- +[MFD3_to_Mode_1] +IOMapping=ButtonAuxLowerRight1 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Eng1 +Mode=ModeMFD3Quad + +[MFD3_Configure_Trigger_1] +IOMapping=ButtonAuxLowerRight2 +Type=EventMapping +Subsystem=ERSLaser +MessageID=ConfigureMappables +Mode=ModeMFD3Quad + +[MFD3_to_Mode_2] +IOMapping=ButtonAuxLowerRight3 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Eng2 +Mode=ModeMFD3Quad + +[MFD3_Configure_Trigger_2] +IOMapping=ButtonAuxLowerRight4 +Type=EventMapping +Subsystem=PPC_3 +MessageID=ConfigureMappables +Mode=ModeMFD3Quad + +[MFD3_to_Mode_4] +IOMapping=ButtonAuxLowerRight7 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Eng4 +Mode=ModeMFD3Quad + +[MFD3_Configure_Trigger_4] +IOMapping=ButtonAuxLowerRight8 +Type=EventMapping +Subsystem=AFC25 +MessageID=ConfigureMappables +Mode=ModeMFD3Quad + +//-------------------------------------------- +// Aux 3 'Mode 1' mappings, AuxScreenNumber=9 +//-------------------------------------------- +[Aux_3_Mode_1_to_MFD3] +IOMapping=ButtonAuxLowerRight8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Quad +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_Select_GeneratorA] +IOMapping=ButtonAuxLowerRight1 +Type=EventMapping +Subsystem=ERSLaser +MessageID=SelectGeneratorA +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_Select_GeneratorB] +IOMapping=ButtonAuxLowerRight2 +Type=EventMapping +Subsystem=ERSLaser +MessageID=SelectGeneratorB +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_Select_GeneratorC] +IOMapping=ButtonAuxLowerRight3 +Type=EventMapping +Subsystem=ERSLaser +MessageID=SelectGeneratorC +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_Select_GeneratorD] +IOMapping=ButtonAuxLowerRight4 +Type=EventMapping +Subsystem=ERSLaser +MessageID=SelectGeneratorD +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_OPTION] +IOMapping=ButtonAuxLowerRight5 +Type=EventMapping +Subsystem=ERSLaser +MessageID=ToggleSeekVoltage +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerRight6 +Type=EventMapping +Subsystem=ERSLaser +MessageID=ToggleGeneratorMode +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_ToggleCooling] +IOMapping=ButtonAuxLowerRight7 +Type=EventMapping +Subsystem=ERSLaser +MessageID=ToggleCooling +Mode=ModeMFD3Eng1 + +//-------------------------------------------- +// Aux 3 'Mode 2' mappings, AuxScreenNumber=10 +//-------------------------------------------- +[Aux_3_Mode_2_to_MFD3] +IOMapping=ButtonAuxLowerRight8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Quad +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_Select_GeneratorA] +IOMapping=ButtonAuxLowerRight1 +Type=EventMapping +Subsystem=PPC_3 +MessageID=SelectGeneratorA +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_Select_GeneratorB] +IOMapping=ButtonAuxLowerRight2 +Type=EventMapping +Subsystem=PPC_3 +MessageID=SelectGeneratorB +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_Select_GeneratorC] +IOMapping=ButtonAuxLowerRight3 +Type=EventMapping +Subsystem=PPC_3 +MessageID=SelectGeneratorC +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_Select_GeneratorD] +IOMapping=ButtonAuxLowerRight4 +Type=EventMapping +Subsystem=PPC_3 +MessageID=SelectGeneratorD +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_OPTION] +IOMapping=ButtonAuxLowerRight5 +Type=EventMapping +Subsystem=PPC_3 +MessageID=ToggleSeekVoltage +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerRight6 +Type=EventMapping +Subsystem=PPC_3 +MessageID=ToggleGeneratorMode +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_ToggleCooling] +IOMapping=ButtonAuxLowerRight7 +Type=EventMapping +Subsystem=PPC_3 +MessageID=ToggleCooling +Mode=ModeMFD3Eng2 + +//-------------------------------------------- +// Aux 3 'Mode 3' mappings, AuxScreenNumber=11 +//-------------------------------------------- +[Aux_3_Mode_4_to_MFD3] +IOMapping=ButtonAuxLowerRight8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Quad +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_Select_GeneratorA] +IOMapping=ButtonAuxLowerRight1 +Type=EventMapping +Subsystem=AFC25 +MessageID=SelectGeneratorA +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_Select_GeneratorB] +IOMapping=ButtonAuxLowerRight2 +Type=EventMapping +Subsystem=AFC25 +MessageID=SelectGeneratorB +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_Select_GeneratorC] +IOMapping=ButtonAuxLowerRight3 +Type=EventMapping +Subsystem=AFC25 +MessageID=SelectGeneratorC +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_Select_GeneratorD] +IOMapping=ButtonAuxLowerRight4 +Type=EventMapping +Subsystem=AFC25 +MessageID=SelectGeneratorD +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_OPTION] +IOMapping=ButtonAuxLowerRight5 +Type=EventMapping +Subsystem=AFC25 +MessageID=EjectAmmo +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerRight6 +Type=EventMapping +Subsystem=AFC25 +MessageID=ToggleGeneratorMode +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_ToggleCooling] +IOMapping=ButtonAuxLowerRight7 +Type=EventMapping +Subsystem=AFC25 +MessageID=ToggleCooling +Mode=ModeMFD3Eng4 +[PPC_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=PPC_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[PPC_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=PPC_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[PPC_3_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=PPC_3 +AttributeID=TriggerState +Mode=ModeNonMapping +[AFC25_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=AFC25 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser +AttributeID=TriggerState +Mode=ModeNonMapping +[LRM5_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=LRM5 +AttributeID=TriggerState +Mode=ModeNonMapping diff --git a/CONTENT/BT/MODELS/SND1THR.CTL b/CONTENT/BT/MODELS/SND1THR.CTL new file mode 100644 index 0000000..a0078b8 --- /dev/null +++ b/CONTENT/BT/MODELS/SND1THR.CTL @@ -0,0 +1,57 @@ +[StickPosition_JP] +IOMapping=JoystickPhysical +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=StickPosition +Mode=ModeAlwaysActive + +[TorsoLeft_BJHL] +IOMapping=ButtonJoystickHatLeft +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoLeft +Mode=ModeAlwaysActive + +[TorsoRight_BJHR] +IOMapping=ButtonJoystickHatRight +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoRight +Mode=ModeAlwaysActive + +[PPC_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=PPC_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[PPC_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=PPC_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[PPC_3_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=PPC_3 +AttributeID=TriggerState +Mode=ModeNonMapping +[AFC25_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=AFC25 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser +AttributeID=TriggerState +Mode=ModeNonMapping +[LRM5_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=LRM5 +AttributeID=TriggerState +Mode=ModeNonMapping diff --git a/CONTENT/BT/MODELS/SND2.MOD b/CONTENT/BT/MODELS/SND2.MOD new file mode 100644 index 0000000..7669f5b --- /dev/null +++ b/CONTENT/BT/MODELS/SND2.MOD @@ -0,0 +1,135 @@ +[video] +skeleton=snd2.skl +skeletona=snx2.skl +destroyed=snd2d.skl +dzm=snd2skin.dzm +dzma=snd2skin.dzm + +[audio] +internal=snd2int.scp +external=snd2ext.scp + +[collision] +name=snd_cv.sld + +[gauge] +image=thor_ga.gim + +[gaugeMissionReview] +pixelmap=snd2_mr.pcc + +[gamedata] +class=MechClassID +MoverMass=90000.0 +MomentOfInertia=1.75 3.125 1.75 +PositiveLinearDragCoefficients=0.14 0.4 0.07 +NegativeLinearDragCoefficients=0.14 0.2 0.08 +AngularDragCoefficients=0.3 0.5 0.3 +FrictionCoefficient=0.1 +ElasticityCoefficient=0.2 +MinimumBounceSpeed=0.2 +MaxAcceleration=10 +AnimationPrefix=snd +Subsystems=snd2.sub +DamageZones=snd2.dmg +DamageLookupTable=snd2dmg.tbl +RelativeMechValue=1.0 +LookLeftAngle=60 +LookRightAngle=-60 +LookBackAngle=0 +LookFrontAngle=-15 +WalkingTurnRate=45 +RunningTurnRate=30 +DeathEffect=thrdead +CameraOffset=0.0 15.0 30.0 +DeathSplashDamage=5 +DeathSplashRadius=50 +TimeDelay=0.3 + +MaxUnstableAcceleration=22.0 +UnstableAccelerationEffect=0.7 +UnstableGunTheEngineEffect=1.0 +UnstableSuperStopEffect=0.5 +UnstableHighVelocityEffect=0.4 +UnstableStopedTurnEffect=1.0 +SuperStopAcceleration=20.0 + +ThrottleAdjustment=1.0 + +UpdateTurnDegreeDiffrence=3 +UpdateTurnVelocityDiffrence=0.045 +UpdatePositionDiffrence=0.3 + +ShadowJointName=jointshadow + +[ControlMappings] +Thrustmaster=snd2thr.ctl +L4=snd2l4.ctl + +[animations] +animationtransition=sndswr.ani +animation=sndwwl.ani +animation=sndwwr.ani +animation=sndwsr.ani +animation=sndwsl.ani +animationtransition=sndwrl.ani +animationtransition=sndwrr.ani +animation=sndrrl.ani +animation=sndrrr.ani +animation=sndrwl.ani +animation=sndrwr.ani +animation=sndbmp.ani +animation=sndbbl.ani +animation=sndbbr.ani +animation=sndbsl.ani +animation=sndbsr.ani +animationtransition=sndsbl.ani +animationtransition=sndsbr.ani + +animationtransition=sndswri.ani +animation=sndwwli.ani +animation=sndwwri.ani +animation=sndwsri.ani +animation=sndwsli.ani +animationtransition=sndwrli.ani +animationtransition=sndwrri.ani +animation=sndrrli.ani +animation=sndrrri.ani +animation=sndrwli.ani +animation=sndrwri.ani +animation=sndbmpi.ani +animation=sndbbli.ani +animation=sndbbri.ani +animation=sndbsli.ani +animation=sndbsri.ani +animationtransition=sndsbli.ani +animationtransition=sndsbri.ani + +animation=sndggl.ani +animation=sndggr.ani +animation=sndgsl.ani +animation=sndgsr.ani +animationtransition=sndwgl.ani +animationtransition=sndwgr.ani + +animation=sndggli.ani +animation=sndggri.ani +animation=sndgsli.ani +animation=sndgsri.ani +animationtransition=sndwgli.ani +animationtransition=sndwgri.ani + +animation=sndsqu.ani +animation=sndsqd.ani +animation=sndsqui.ani +animation=sndsqdi.ani + +animation=sndtrn.ani +animation=sndtrni.ani + +//animation=sndff.ani +//animation=sndfb.ani +//animation=sndfl.ani +//animation=sndfr.ani + + diff --git a/CONTENT/BT/MODELS/SND2.SUB b/CONTENT/BT/MODELS/SND2.SUB new file mode 100644 index 0000000..1625389 --- /dev/null +++ b/CONTENT/BT/MODELS/SND2.SUB @@ -0,0 +1,239 @@ +[HeatSink] +Type=HeatSinkClassID +Include=heatsnk.sub +HeatSinkCount=45 +SubsystemFlags=DontReplicateFlag + +[Reservoir] +Type=ReservoirClassID +Include=reserve.sub +HeatSink=HeatSink +SegmentPageName=siteeyepoint + +[Condenser1] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser2] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser3] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser4] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser5] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser6] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[GeneratorA] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser1 +SubsystemFlags=DontReplicateFlag + +[GeneratorB] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser2 +SubsystemFlags=DontReplicateFlag + +[GeneratorC] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser3 +SubsystemFlags=DontReplicateFlag + +[GeneratorD] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser5 +SubsystemFlags=DontReplicateFlag + +[Avionics] +Type=SensorClassID +Include=sensor.sub +HeatSink=Condenser2 +VoltageSource=GeneratorD +AuxScreenNumber=5 +SubsystemFlags=DontReplicateFlag + +AuxScreenPlacement=2 +[Myomers] +Type=MyomersClassID +Include=myomers.sub +HeatSink=Condenser5 +VoltageSource=GeneratorD +AuxScreenNumber=6 +SubsystemFlags=DontReplicateFlag + +AuxScreenPlacement=0 +[Gyroscope] +Type=GyroscopeClassID +Include=gyro.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag + +[Torso] +Type=TorsoClassID +Include=torso.sub +WatchedSubsystem=Myomers + +HorizontalRotationPerSecond=50 +VerticalRotationPerSecond=30 +HorizontalLimitRight=-120 +HorizontalLimitLeft=120 +[HUD] +Type=HUDClassID +Include=hud.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag + +[Searchlight] +Type=SearchlightClassID +Include=srchlite.sub +WatchedSubsystem=Avionics +SegmentPageName=sitelight + +[ThermalSight] +Type=ThermalSightClassID +Include=Thermal.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag +[PPC_1] +Type=PPCClassID +Include=erppc.sub +SegmentPageName=sitelgunport +PipPosition=1 +VoltageSource=GeneratorA +HeatSink=Condenser4 +AuxScreenNumber=1 +AuxScreenPlacement=4 +[MLaser_1] +Type=EmitterClassID +Include=ermlaser.sub +SegmentPageName=siteltorsoport +PipPosition=1 +VoltageSource=GeneratorA +HeatSink=Condenser1 +AuxScreenNumber=3 +AuxScreenPlacement=1 +[MLaser_2] +Type=EmitterClassID +Include=ermlaser.sub +SegmentPageName=siteltorsoport +PipPosition=2 +VoltageSource=GeneratorA +HeatSink=Condenser1 +AuxScreenNumber=4 +AuxScreenPlacement=1 +[MLaser_3] +Type=EmitterClassID +Include=ermlaser.sub +SegmentPageName=sitelbtorsoport +PipPosition=1 +VoltageSource=GeneratorB +HeatSink=Condenser5 +AuxScreenNumber=7 +AuxScreenPlacement=5 +[MLaser_4] +Type=EmitterClassID +Include=ermlaser.sub +SegmentPageName=siterbtorsoport +PipPosition=2 +VoltageSource=GeneratorB +HeatSink=Condenser5 +AuxScreenNumber=8 +AuxScreenPlacement=5 +[MLaser_5] +Type=EmitterClassID +Include=ermlaser.sub +SegmentPageName=sitertorsoport +PipPosition=3 +VoltageSource=GeneratorC +HeatSink=Condenser3 +AuxScreenNumber=9 +AuxScreenPlacement=3 +[MLaser_6] +Type=EmitterClassID +Include=ermlaser.sub +SegmentPageName=sitertorsoport +PipPosition=4 +VoltageSource=GeneratorC +HeatSink=Condenser3 +AuxScreenNumber=11 +AuxScreenPlacement=3 +[AmmoBinAFC25_1] +Type=AmmoBinClassID +Include=ammafc25.sub +WatchedSubsystem=AFC25_1 +AmmoCount=24 +[AFC25_1] +AmmoBin=AmmoBinAFC25_1 +Type=ProjectileWeaponClassID +Include=afc25.sub +SegmentPageName=siterugunport +PipPosition=1 +VoltageSource=GeneratorC +HeatSink=Condenser6 +AuxScreenNumber=10 +AuxScreenPlacement=6 +[AmmoBinAFC25_2] +Type=AmmoBinClassID +Include=ammafc25.sub +WatchedSubsystem=AFC25_2 +AmmoCount=24 +[AFC25_2] +AmmoBin=AmmoBinAFC25_2 +Type=ProjectileWeaponClassID +Include=afc25.sub +SegmentPageName=siterdgunport +PipPosition=2 +VoltageSource=GeneratorC +HeatSink=Condenser6 +AuxScreenNumber=12 +AuxScreenPlacement=6 +[AmmoBinSRM6] +Type=AmmoBinClassID +Include=ammstrk6.sub +WatchedSubsystem=SRM6 +AmmoCount=16 +[SRM6] +AmmoBin=AmmoBinSRM6 +Type=MissileLauncherClassID +Include=strk6.sub +SegmentPageName=sitemissleport +PipPosition=1 +VoltageSource=GeneratorB +HeatSink=Condenser2 +AuxScreenNumber=2 +AuxScreenPlacement=2 +[MessageManager] +Type=SubsystemMessageManagerClassID +ExplosionModelFile=majhit 1.0 +TerrainHitExplosion=gndhit +RendererCompensateTime=0.3 +[MechTech] +Type=MechTechClassID +AlarmModel=mechalrm +SubsystemFlags=DontReplicateFlag diff --git a/CONTENT/BT/MODELS/SND2DMG.EXP b/CONTENT/BT/MODELS/SND2DMG.EXP new file mode 100644 index 0000000..c9b1598 --- /dev/null +++ b/CONTENT/BT/MODELS/SND2DMG.EXP @@ -0,0 +1,28 @@ +[OneDamage] +ExplosionModelFile=dam1hit +DamageLevel=0.2 +TimeDelay=0.0 + +[TwoDamage] +ExplosionModelFile=dam2hit +DamageLevel=0.4 +TimeDelay=0.0 + +[ThreeDamage] +ExplosionModelFile=dam3hit +DamageLevel=0.6 +TimeDelay=0.0 + +[FourDamage] +ExplosionModelFile=dam4hit +DamageLevel=0.8 +TimeDelay=0.0 + +[DestroyedExplosion] +ExplosionModelFile=desthit +GraphicState=Destroyed + +[GoneExplosion] +ExplosionModelFile=desthit +GraphicState=Gone + diff --git a/CONTENT/BT/MODELS/SND2THR.CTL b/CONTENT/BT/MODELS/SND2THR.CTL new file mode 100644 index 0000000..5fe8c30 --- /dev/null +++ b/CONTENT/BT/MODELS/SND2THR.CTL @@ -0,0 +1,81 @@ +[StickPosition_JP] +IOMapping=JoystickPhysical +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=StickPosition +Mode=ModeAlwaysActive + +[TorsoLeft_BJHL] +IOMapping=ButtonJoystickHatLeft +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoLeft +Mode=ModeAlwaysActive + +[TorsoRight_BJHR] +IOMapping=ButtonJoystickHatRight +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoRight +Mode=ModeAlwaysActive + +[PPC_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=PPC_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[MLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=MLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[MLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=MLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[MLaser_3_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=MLaser_3 +AttributeID=TriggerState +Mode=ModeNonMapping +[MLaser_4_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=MLaser_4 +AttributeID=TriggerState +Mode=ModeNonMapping +[MLaser_5_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=MLaser_5 +AttributeID=TriggerState +Mode=ModeNonMapping +[MLaser_6_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=MLaser_6 +AttributeID=TriggerState +Mode=ModeNonMapping +[AFC25_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=AFC25_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[AFC25_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=AFC25_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[SRM6_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=SRM6 +AttributeID=TriggerState +Mode=ModeNonMapping diff --git a/CONTENT/BT/MODELS/SNDDEAD.MOD b/CONTENT/BT/MODELS/SNDDEAD.MOD new file mode 100644 index 0000000..83959ea --- /dev/null +++ b/CONTENT/BT/MODELS/SNDDEAD.MOD @@ -0,0 +1,9 @@ +[video] +object=104 3 4 5 1007 15 1001 + +[audio] +external=brnext.scp + +[gamedata] +class=ExplosionClassID +ExplosionDuration=9.0 diff --git a/CONTENT/BT/MODELS/SNDDMG.EXP b/CONTENT/BT/MODELS/SNDDMG.EXP new file mode 100644 index 0000000..c9b1598 --- /dev/null +++ b/CONTENT/BT/MODELS/SNDDMG.EXP @@ -0,0 +1,28 @@ +[OneDamage] +ExplosionModelFile=dam1hit +DamageLevel=0.2 +TimeDelay=0.0 + +[TwoDamage] +ExplosionModelFile=dam2hit +DamageLevel=0.4 +TimeDelay=0.0 + +[ThreeDamage] +ExplosionModelFile=dam3hit +DamageLevel=0.6 +TimeDelay=0.0 + +[FourDamage] +ExplosionModelFile=dam4hit +DamageLevel=0.8 +TimeDelay=0.0 + +[DestroyedExplosion] +ExplosionModelFile=desthit +GraphicState=Destroyed + +[GoneExplosion] +ExplosionModelFile=desthit +GraphicState=Gone + diff --git a/CONTENT/BT/MODELS/SNDL4.CTL b/CONTENT/BT/MODELS/SNDL4.CTL new file mode 100644 index 0000000..f68860a --- /dev/null +++ b/CONTENT/BT/MODELS/SNDL4.CTL @@ -0,0 +1,1060 @@ +[StickPosition_JP] +//----------------------------------------------------------------------- +// Joystick +//----------------------------------------------------------------------- +IOMapping=JoystickPhysical +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=StickPosition +Mode=ModeAlwaysActive + +[Throttle_ST] +//----------------------------------------------------------------------- +// Throttle +//----------------------------------------------------------------------- +IOMapping=ScalarThrottle +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=ThrottlePosition +Mode=ModeAlwaysActive + +//----------------------------------------------------------------------- +// Misc. switches +//----------------------------------------------------------------------- +[ReverseThrust_BT1] +IOMapping=ButtonThrottle1 +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=ReverseThrust +Mode=ModeAlwaysActive + +[TorsoCenter_BJHU] +IOMapping=ButtonJoystickHatUp +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoCenter +Mode=ModeAlwaysActive + +[LookLeft_BJHL] +IOMapping=ButtonJoystickHatLeft +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=LookLeft +Mode=ModeAlwaysActive + +[LookRight_BJHR] +IOMapping=ButtonJoystickHatRight +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=LookRight +Mode=ModeAlwaysActive + +[LookBack_BJHD] +IOMapping=ButtonJoystickHatDown +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=LookBehind +Mode=ModeAlwaysActive + +//----------------------------------------------------------------------- +// Secondary mappings +//----------------------------------------------------------------------- +[Button_Sec_1] // Zoom radar in (magnify image) +IOMapping=ButtonSecondary1 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=ZoomIn +Mode=ModeAlwaysActive + +[Button_Sec_2] // Zoom radar out (reduce image) +IOMapping=ButtonSecondary2 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=ZoomOut +Mode=ModeAlwaysActive + +// +// 'Heat vision' mapped to secondary +// SGM 1/6/97 + +[Button_Sec_3] // Toggle heat vision +IOMapping=ButtonSecondary3 +Type=EventMapping +Subsystem=ThermalSight +MessageID=ToggleLamp +Mode=ModeAlwaysActive + +// +// 'Duck' remapped to real message and location. +// GDU 7/9/96 + +[Button_Sec_4] // Request crouch position +IOMapping=ButtonSecondary4 +Type=EventMapping +MessageID=DuckRequest +Mode=ModeAlwaysActive + +[Button_Sec_5] // Toggle searchlight +IOMapping=ButtonSecondary5 +Type=EventMapping +Subsystem=Searchlight +MessageID=ToggleLamp +Mode=ModeAlwaysActive + +[Button_Sec_6] // Cycle through damage display modes +IOMapping=ButtonSecondary6 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=CycleDisplayMode +Mode=ModeAlwaysActive + +[Button_Sec_7] // Cycle through control modes +IOMapping=ButtonSecondary7 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=CycleControlMode +Mode=ModeAlwaysActive + +// ButtonSecondary8 presently unused + +[Button_Sec_9] // Toggle generator 'a' +IOMapping=ButtonSecondary9 +Type=EventMapping +Subsystem=GeneratorA +MessageID=ToggleGeneratorOnOff +Mode=ModeAlwaysActive + +[Button_Sec_10] // Toggle generator 'b' +IOMapping=ButtonSecondary10 +Type=EventMapping +Subsystem=GeneratorB +MessageID=ToggleGeneratorOnOff +Mode=ModeAlwaysActive + +[Button_Sec_11] // Toggle generator 'c' +IOMapping=ButtonSecondary11 +Type=EventMapping +Subsystem=GeneratorC +MessageID=ToggleGeneratorOnOff +Mode=ModeAlwaysActive + +[Button_Sec_12] // Toggle generator 'd' +IOMapping=ButtonSecondary12 +Type=EventMapping +Subsystem=GeneratorD +MessageID=ToggleGeneratorOnOff +Mode=ModeAlwaysActive + +//----------------------------------------- +// Heat Management Screen Mappings +//----------------------------------------- +[Condenser1_Button] +IOMapping=ButtonAuxUpperLeft1 +Type=EventMapping +Subsystem=Condenser1 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Condenser2_Button] +IOMapping=ButtonAuxUpperLeft2 +Type=EventMapping +Subsystem=Condenser2 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Condenser3_Button] +IOMapping=ButtonAuxUpperLeft3 +Type=EventMapping +Subsystem=Condenser3 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Reservoir_Button] +IOMapping=ButtonAuxUpperLeft4 +Type=EventMapping +Subsystem=Reservoir +MessageID=InjectCoolant +Mode=ModeAlwaysActive + +[Condenser4_Button] +IOMapping=ButtonAuxUpperLeft5 +Type=EventMapping +Subsystem=Condenser4 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Condenser5_Button] +IOMapping=ButtonAuxUpperLeft6 +Type=EventMapping +Subsystem=Condenser5 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Condenser6_Button] +IOMapping=ButtonAuxUpperLeft7 +Type=EventMapping +Subsystem=Condenser6 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Reduce_Button] +IOMapping=ButtonAuxUpperLeft8 +Type=EventMapping +MessageID=BalanceCoolant +Mode=ModeAlwaysActive + +//----------------------------------------------------------------------- +// Aux 1 mappings +//----------------------------------------------------------------------- +//------------------------------------------ +// Aux 1 'Quad screen' mappings +//------------------------------------------ +[MFD1_to_Mode_1] // To mode 1 +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Eng1 +Mode=ModeMFD1Quad + +[MFD1_Configure_Trigger_1] // Configure +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Subsystem=AFC100 +MessageID=ConfigureMappables +Mode=ModeMFD1Quad + +[MFD1_to_Mode_2] // To mode 2 +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Eng2 +Mode=ModeMFD1Quad + +[MFD1_Configure_Trigger_2] // Configure +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Subsystem=LRM10 +MessageID=ConfigureMappables +Mode=ModeMFD1Quad + +[MFD1_to_Mode_3] // To mode 3 +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Eng3 +Mode=ModeMFD1Quad + +[MFD1_Configure_Trigger_3] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Subsystem=ERMLaser_1 +MessageID=ConfigureMappables +Mode=ModeMFD1Quad + +[MFD1_to_Mode_4] // To mode 4 +IOMapping=ButtonAuxLowerLeft7 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Eng4 +Mode=ModeMFD1Quad + +[MFD1_Configure_Trigger_4] // Configure +IOMapping=ButtonAuxLowerLeft8 +Type=EventMapping +Subsystem=ERSLaser_1 +MessageID=ConfigureMappables +Mode=ModeMFD1Quad + +//---------------------------------------------- +// Aux 1 'Mode 1' mappings, AuxScreenNumber=1 +//---------------------------------------------- +[Aux_1_Mode_1_to_MFD1] +IOMapping=ButtonAuxLowerLeft8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Quad +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_Select_GeneratorA] +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Subsystem=AFC100 +MessageID=SelectGeneratorA +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_Select_GeneratorB] +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Subsystem=AFC100 +MessageID=SelectGeneratorB +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_Select_GeneratorC] +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Subsystem=AFC100 +MessageID=SelectGeneratorC +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_Select_GeneratorD] +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Subsystem=AFC100 +MessageID=SelectGeneratorD +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_OPTION] +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Subsystem=AFC100 +MessageID=EjectAmmo +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Subsystem=AFC100 +MessageID=ToggleGeneratorMode +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_ToggleCooling] +IOMapping=ButtonAuxLowerLeft7 +Type=EventMapping +Subsystem=AFC100 +MessageID=ToggleCooling +Mode=ModeMFD1Eng1 + +//-------------------------------------------- +// Aux 1 'Mode 2' mappings, AuxScreenNumber=2 +//-------------------------------------------- +[Aux_1_Mode_2_to_MFD1] +IOMapping=ButtonAuxLowerLeft8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Quad +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_Select_GeneratorA] +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Subsystem=LRM10 +MessageID=SelectGeneratorA +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_Select_GeneratorB] +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Subsystem=LRM10 +MessageID=SelectGeneratorB +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_Select_GeneratorC] +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Subsystem=LRM10 +MessageID=SelectGeneratorC +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_Select_GeneratorD] +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Subsystem=LRM10 +MessageID=SelectGeneratorD +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_OPTION] +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Subsystem=LRM10 +MessageID=EjectAmmo +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Subsystem=LRM10 +MessageID=ToggleGeneratorMode +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_ToggleCooling] +IOMapping=ButtonAuxLowerLeft7 +Type=EventMapping +Subsystem=LRM10 +MessageID=ToggleCooling +Mode=ModeMFD1Eng2 + +//--------------------------------------------- +// Aux 1 'Mode 3' mappings, AuxScreenNumber=3 +//--------------------------------------------- +[Aux_1_Mode_3_to_MFD1] +IOMapping=ButtonAuxLowerLeft8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Quad +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_Select_GeneratorA] +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Subsystem=ERMLaser_1 +MessageID=SelectGeneratorA +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_Select_GeneratorB] +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Subsystem=ERMLaser_1 +MessageID=SelectGeneratorB +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_Select_GeneratorC] +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Subsystem=ERMLaser_1 +MessageID=SelectGeneratorC +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_Select_GeneratorD] +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Subsystem=ERMLaser_1 +MessageID=SelectGeneratorD +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_OPTION] +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Subsystem=ERMLaser_1 +MessageID=ToggleSeekVoltage +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Subsystem=ERMLaser_1 +MessageID=ToggleGeneratorMode +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_ToggleCooling] +IOMapping=ButtonAuxLowerLeft7 +Type=EventMapping +Subsystem=ERMLaser_1 +MessageID=ToggleCooling +Mode=ModeMFD1Eng3 + +//-------------------------------------------- +// Aux 1 "Mode 4" Mappings, AuxScreenNumber=4 +//-------------------------------------------- +[Aux_1_Mode_4_to_MFD1] +IOMapping=ButtonAuxLowerLeft8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Quad +Mode=ModeMFD1Eng4 + +[Aux_1_Mode_4_Select_GeneratorA] +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Subsystem=ERSLaser_1 +MessageID=SelectGeneratorA +Mode=ModeMFD1Eng4 + +[Aux_1_Mode_4_Select_GeneratorB] +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Subsystem=ERSLaser_1 +MessageID=SelectGeneratorB +Mode=ModeMFD1Eng4 + +[Aux_1_Mode_4_Select_GeneratorC] +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Subsystem=ERSLaser_1 +MessageID=SelectGeneratorC +Mode=ModeMFD1Eng4 + +[Aux_1_Mode_4_Select_GeneratorD] +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Subsystem=ERSLaser_1 +MessageID=SelectGeneratorD +Mode=ModeMFD1Eng4 + +[Aux_1_Mode_4_OPTION] +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Subsystem=ERSLaser_1 +MessageID=ToggleSeekVoltage +Mode=ModeMFD1Eng4 + +[Aux_1_Mode_4_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Subsystem=ERSLaser_1 +MessageID=ToggleGeneratorMode +Mode=ModeMFD1Eng4 + +[Aux_1_Mode_4_ToggleCooling] +IOMapping=ButtonAuxLowerLeft7 +Type=EventMapping +Subsystem=ERSLaser_1 +MessageID=ToggleCooling +Mode=ModeMFD1Eng4 + + +//----------------------------------------------------------------------- +// Aux 2 mappings +//----------------------------------------------------------------------- +//------------------------------------------ +// Aux 2 'Quad screen' mappings +//------------------------------------------ +[MFD2_to_Mode_1] +IOMapping=ButtonAuxUpperCenter1 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Eng1 +Mode=ModeMFD2Quad + +[MFD2_to_Mode_2] +IOMapping=ButtonAuxUpperCenter3 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Eng2 +Mode=ModeMFD2Quad + +[MFD2_to_Mode_3] +IOMapping=ButtonAuxUpperCenter5 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Eng3 +Mode=ModeMFD2Quad + +[MFD2_Configure_Trigger_3] +IOMapping=ButtonAuxUpperCenter6 +Type=EventMapping +Subsystem=MLaser_1 +MessageID=ConfigureMappables +Mode=ModeMFD2Quad + +[MFD2_to_Mode_4] +IOMapping=ButtonAuxUpperCenter7 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Eng4 +Mode=ModeMFD2Quad + +[MFD2_Configure_Trigger_4] +IOMapping=ButtonAuxUpperCenter8 +Type=EventMapping +Subsystem=MLaser_2 +MessageID=ConfigureMappables +Mode=ModeMFD2Quad + +//-------------------------------------------- +// Aux 2 'Mode 1' mappings, AuxScreenNumber=9 +//-------------------------------------------- +[Aux_2_Mode_1_to_MFD2] +IOMapping=ButtonAuxUpperCenter8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Quad +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_Select_GeneratorA] +IOMapping=ButtonAuxUpperCenter1 +Type=EventMapping +Subsystem=Avionics +MessageID=SelectGeneratorA +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_Select_GeneratorB] +IOMapping=ButtonAuxUpperCenter2 +Type=EventMapping +Subsystem=Avionics +MessageID=SelectGeneratorB +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_Select_GeneratorC] +IOMapping=ButtonAuxUpperCenter3 +Type=EventMapping +Subsystem=Avionics +MessageID=SelectGeneratorC +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_Select_GeneratorD] +IOMapping=ButtonAuxUpperCenter4 +Type=EventMapping +Subsystem=Avionics +MessageID=SelectGeneratorD +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_ToggleGeneratorMode] +IOMapping=ButtonAuxUpperCenter6 +Type=EventMapping +Subsystem=Avionics +MessageID=ToggleGeneratorMode +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_ToggleCooling] +IOMapping=ButtonAuxUpperCenter7 +Type=EventMapping +Subsystem=Avionics +MessageID=ToggleCooling +Mode=ModeMFD2Eng1 + +//-------------------------------------------- +// Aux 2 'Mode 2' mappings, AuxScreenNumber=10 +//-------------------------------------------- +[Aux_2_Mode_2_to_MFD2] +IOMapping=ButtonAuxUpperCenter8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Quad +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_Select_GeneratorA] +IOMapping=ButtonAuxUpperCenter1 +Type=EventMapping +Subsystem=Myomers +MessageID=SelectGeneratorA +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_Select_GeneratorB] +IOMapping=ButtonAuxUpperCenter2 +Type=EventMapping +Subsystem=Myomers +MessageID=SelectGeneratorB +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_Select_GeneratorC] +IOMapping=ButtonAuxUpperCenter3 +Type=EventMapping +Subsystem=Myomers +MessageID=SelectGeneratorC +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_Select_GeneratorD] +IOMapping=ButtonAuxUpperCenter4 +Type=EventMapping +Subsystem=Myomers +MessageID=SelectGeneratorD +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_OPTION] +IOMapping=ButtonAuxUpperCenter5 +Type=EventMapping +Subsystem=Myomers +MessageID=ToggleSeekVoltage +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_ToggleGeneratorMode] +IOMapping=ButtonAuxUpperCenter6 +Type=EventMapping +Subsystem=Myomers +MessageID=ToggleGeneratorMode +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_ToggleCooling] +IOMapping=ButtonAuxUpperCenter7 +Type=EventMapping +Subsystem=Myomers +MessageID=ToggleCooling +Mode=ModeMFD2Eng2 + +//-------------------------------------------- +// Aux 3 'Mode 3' mappings, AuxScreenNumber=11 +//-------------------------------------------- +[Aux_2_Mode_3_to_MFD2] +IOMapping=ButtonAuxUpperCenter8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Quad +Mode=ModeMFD2Eng3 + +[Aux_2_Mode_3_Select_GeneratorA] +IOMapping=ButtonAuxUpperCenter1 +Type=EventMapping +Subsystem=MLaser_1 +MessageID=SelectGeneratorA +Mode=ModeMFD2Eng3 + +[Aux_2_Mode_3_Select_GeneratorB] +IOMapping=ButtonAuxUpperCenter2 +Type=EventMapping +Subsystem=MLaser_1 +MessageID=SelectGeneratorB +Mode=ModeMFD2Eng3 + +[Aux_2_Mode_3_Select_GeneratorC] +IOMapping=ButtonAuxUpperCenter3 +Type=EventMapping +Subsystem=MLaser_1 +MessageID=SelectGeneratorC +Mode=ModeMFD2Eng3 + +[Aux_2_Mode_3_Select_GeneratorD] +IOMapping=ButtonAuxUpperCenter4 +Type=EventMapping +Subsystem=MLaser_1 +MessageID=SelectGeneratorD +Mode=ModeMFD2Eng3 + +[Aux_2_Mode_3_OPTION] +IOMapping=ButtonAuxUpperCenter5 +Type=EventMapping +Subsystem=MLaser_1 +MessageID=ToggleSeekVoltage +Mode=ModeMFD2Eng3 + +[Aux_2_Mode_3_ToggleGeneratorMode] +IOMapping=ButtonAuxUpperCenter6 +Type=EventMapping +Subsystem=MLaser_1 +MessageID=ToggleGeneratorMode +Mode=ModeMFD2Eng3 + +[Aux_2_Mode_3_ToggleCooling] +IOMapping=ButtonAuxUpperCenter7 +Type=EventMapping +Subsystem=MLaser_1 +MessageID=ToggleCooling +Mode=ModeMFD2Eng3 + +//--------------------------------------------- +// Aux 3 'Mode 4' mappings, AuxScreenNumber=12 +//--------------------------------------------- +[Aux_2_Mode_4_to_MFD2] +IOMapping=ButtonAuxUpperCenter8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Quad +Mode=ModeMFD2Eng4 + +[Aux_2_Mode_4_Select_GeneratorA] +IOMapping=ButtonAuxUpperCenter1 +Type=EventMapping +Subsystem=MLaser_2 +MessageID=SelectGeneratorA +Mode=ModeMFD2Eng4 + +[Aux_2_Mode_4_Select_GeneratorB] +IOMapping=ButtonAuxUpperCenter2 +Type=EventMapping +Subsystem=MLaser_2 +MessageID=SelectGeneratorB +Mode=ModeMFD2Eng4 + +[Aux_2_Mode_4_Select_GeneratorC] +IOMapping=ButtonAuxUpperCenter3 +Type=EventMapping +Subsystem=MLaser_2 +MessageID=SelectGeneratorC +Mode=ModeMFD2Eng4 + +[Aux_2_Mode_4_Select_GeneratorD] +IOMapping=ButtonAuxUpperCenter4 +Type=EventMapping +Subsystem=MLaser_2 +MessageID=SelectGeneratorD +Mode=ModeMFD2Eng4 + +[Aux_2_Mode_4_OPTION] +IOMapping=ButtonAuxUpperCenter5 +Type=EventMapping +Subsystem=MLaser_2 +MessageID=ToggleSeekVoltage +Mode=ModeMFD2Eng4 + +[Aux_2_Mode_4_ToggleGeneratorMode] +IOMapping=ButtonAuxUpperCenter6 +Type=EventMapping +Subsystem=MLaser_2 +MessageID=ToggleGeneratorMode +Mode=ModeMFD2Eng4 + +[Aux_2_Mode_4_ToggleCooling] +IOMapping=ButtonAuxUpperCenter7 +Type=EventMapping +Subsystem=MLaser_2 +MessageID=ToggleCooling +Mode=ModeMFD2Eng4 + + +//----------------------------------------------------------------------- +// Aux 3 mappings +//----------------------------------------------------------------------- +//------------------------------------------ +// Aux 3 'Quad screen' mappings +//------------------------------------------ +[MFD3_to_Mode_2] +IOMapping=ButtonAuxLowerRight3 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Eng2 +Mode=ModeMFD3Quad + +[MFD3_Configure_Trigger_2] +IOMapping=ButtonAuxLowerRight4 +Type=EventMapping +Subsystem=AFC25 +MessageID=ConfigureMappables +Mode=ModeMFD3Quad + +[MFD3_to_Mode_3] +IOMapping=ButtonAuxLowerRight5 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Eng3 +Mode=ModeMFD3Quad + +[MFD3_Configure_Trigger_3] +IOMapping=ButtonAuxLowerRight6 +Type=EventMapping +Subsystem=ERSLaser_2 +MessageID=ConfigureMappables +Mode=ModeMFD3Quad + +[MFD3_to_Mode_4] +IOMapping=ButtonAuxLowerRight7 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Eng4 +Mode=ModeMFD3Quad + +[MFD3_Configure_Trigger_4] +IOMapping=ButtonAuxLowerRight8 +Type=EventMapping +Subsystem=ERMLaser_2 +MessageID=ConfigureMappables +Mode=ModeMFD3Quad + +//-------------------------------------------- +// Aux 3 'Mode 1' mappings, AuxScreenNumber=9 +//-------------------------------------------- +[Aux_3_Mode_2_to_MFD3] +IOMapping=ButtonAuxLowerRight8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Quad +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_Select_GeneratorA] +IOMapping=ButtonAuxLowerRight1 +Type=EventMapping +Subsystem=AFC25 +MessageID=SelectGeneratorA +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_Select_GeneratorB] +IOMapping=ButtonAuxLowerRight2 +Type=EventMapping +Subsystem=AFC25 +MessageID=SelectGeneratorB +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_Select_GeneratorC] +IOMapping=ButtonAuxLowerRight3 +Type=EventMapping +Subsystem=AFC25 +MessageID=SelectGeneratorC +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_Select_GeneratorD] +IOMapping=ButtonAuxLowerRight4 +Type=EventMapping +Subsystem=AFC25 +MessageID=SelectGeneratorD +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_OPTION] +IOMapping=ButtonAuxLowerRight5 +Type=EventMapping +Subsystem=AFC25 +MessageID=EjectAmmo +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerRight6 +Type=EventMapping +Subsystem=AFC25 +MessageID=ToggleGeneratorMode +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_ToggleCooling] +IOMapping=ButtonAuxLowerRight7 +Type=EventMapping +Subsystem=AFC25 +MessageID=ToggleCooling +Mode=ModeMFD3Eng2 + +//-------------------------------------------- +// Aux 3 'Mode 3' mappings, AuxScreenNumber=11 +//-------------------------------------------- +[Aux_3_Mode_3_to_MFD3] +IOMapping=ButtonAuxLowerRight8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Quad +Mode=ModeMFD3Eng3 + +[Aux_3_Mode_3_Select_GeneratorA] +IOMapping=ButtonAuxLowerRight1 +Type=EventMapping +Subsystem=ERSLaser_2 +MessageID=SelectGeneratorA +Mode=ModeMFD3Eng3 + +[Aux_3_Mode_3_Select_GeneratorB] +IOMapping=ButtonAuxLowerRight2 +Type=EventMapping +Subsystem=ERSLaser_2 +MessageID=SelectGeneratorB +Mode=ModeMFD3Eng3 + +[Aux_3_Mode_3_Select_GeneratorC] +IOMapping=ButtonAuxLowerRight3 +Type=EventMapping +Subsystem=ERSLaser_2 +MessageID=SelectGeneratorC +Mode=ModeMFD3Eng3 + +[Aux_3_Mode_3_Select_GeneratorD] +IOMapping=ButtonAuxLowerRight4 +Type=EventMapping +Subsystem=ERSLaser_2 +MessageID=SelectGeneratorD +Mode=ModeMFD3Eng3 + +[Aux_3_Mode_3_OPTION] +IOMapping=ButtonAuxLowerRight5 +Type=EventMapping +Subsystem=ERSLaser_2 +MessageID=ToggleSeekVoltage +Mode=ModeMFD3Eng3 + +[Aux_3_Mode_3_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerRight6 +Type=EventMapping +Subsystem=ERSLaser_2 +MessageID=ToggleGeneratorMode +Mode=ModeMFD3Eng3 + +[Aux_3_Mode_3_ToggleCooling] +IOMapping=ButtonAuxLowerRight7 +Type=EventMapping +Subsystem=ERSLaser_2 +MessageID=ToggleCooling +Mode=ModeMFD3Eng3 + +//--------------------------------------------- +// Aux 3 'Mode 4' mappings, AuxScreenNumber=12 +//--------------------------------------------- +[Aux_3_Mode_4_to_MFD3] +IOMapping=ButtonAuxLowerRight8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Quad +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_Select_GeneratorA] +IOMapping=ButtonAuxLowerRight1 +Type=EventMapping +Subsystem=ERMLaser_2 +MessageID=SelectGeneratorA +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_Select_GeneratorB] +IOMapping=ButtonAuxLowerRight2 +Type=EventMapping +Subsystem=ERMLaser_2 +MessageID=SelectGeneratorB +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_Select_GeneratorC] +IOMapping=ButtonAuxLowerRight3 +Type=EventMapping +Subsystem=ERMLaser_2 +MessageID=SelectGeneratorC +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_Select_GeneratorD] +IOMapping=ButtonAuxLowerRight4 +Type=EventMapping +Subsystem=ERMLaser_2 +MessageID=SelectGeneratorD +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_OPTION] +IOMapping=ButtonAuxLowerRight5 +Type=EventMapping +Subsystem=ERMLaser_2 +MessageID=ToggleSeekVoltage +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerRight6 +Type=EventMapping +Subsystem=ERMLaser_2 +MessageID=ToggleGeneratorMode +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_ToggleCooling] +IOMapping=ButtonAuxLowerRight7 +Type=EventMapping +Subsystem=ERMLaser_2 +MessageID=ToggleCooling +Mode=ModeMFD3Eng4 +[AFC25_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=AFC25 +AttributeID=TriggerState +Mode=ModeNonMapping +[AFC100_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=AFC100 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[MLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=MLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[MLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=MLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[LRM10_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=LRM10 +AttributeID=TriggerState +Mode=ModeNonMapping diff --git a/CONTENT/BT/MODELS/SNDTHR.CTL b/CONTENT/BT/MODELS/SNDTHR.CTL new file mode 100644 index 0000000..122fdf8 --- /dev/null +++ b/CONTENT/BT/MODELS/SNDTHR.CTL @@ -0,0 +1,75 @@ +[StickPosition_JP] +IOMapping=JoystickPhysical +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=StickPosition +Mode=ModeAlwaysActive + +[TorsoLeft_BJHL] +IOMapping=ButtonJoystickHatLeft +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoLeft +Mode=ModeAlwaysActive + +[TorsoRight_BJHR] +IOMapping=ButtonJoystickHatRight +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoRight +Mode=ModeAlwaysActive + +[AFC25_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=AFC25 +AttributeID=TriggerState +Mode=ModeNonMapping +[AFC100_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=AFC100 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[MLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=MLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[MLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=MLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[LRM10_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=LRM10 +AttributeID=TriggerState +Mode=ModeNonMapping diff --git a/CONTENT/BT/MODELS/SNH.MOD b/CONTENT/BT/MODELS/SNH.MOD new file mode 100644 index 0000000..b5a1da9 --- /dev/null +++ b/CONTENT/BT/MODELS/SNH.MOD @@ -0,0 +1,14 @@ +[video] +object=snh.bgf snh_FR.bgf +rubble=snhd.bgf snhd_FR.bgf + +[collision] +name=snh_cv.sld + +[gamedata] +class=CulturalIconClassID +DamageZones=trk.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=trkdead +TimeDelay=0.5 +CrunchExplosionModelFile=stephit diff --git a/CONTENT/BT/MODELS/SNTK1.MOD b/CONTENT/BT/MODELS/SNTK1.MOD new file mode 100644 index 0000000..52662e0 --- /dev/null +++ b/CONTENT/BT/MODELS/SNTK1.MOD @@ -0,0 +1,12 @@ +[video] +object=trk1.bgf +rubble=trk1d.bgf + +[collision] +name=trk1_cv.sld + +[gamedata] +class=LandmarkClassID +DamageZones=trk.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=desthit diff --git a/CONTENT/BT/MODELS/SR1E.MOD b/CONTENT/BT/MODELS/SR1E.MOD new file mode 100644 index 0000000..7a1f9a1 --- /dev/null +++ b/CONTENT/BT/MODELS/SR1E.MOD @@ -0,0 +1,11 @@ +[video] +object=sr1e.bgf + +[collision] +name=sr1e_cv.sld + +[gauge] +image=sr1e_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/SR1N.MOD b/CONTENT/BT/MODELS/SR1N.MOD new file mode 100644 index 0000000..9b79e01 --- /dev/null +++ b/CONTENT/BT/MODELS/SR1N.MOD @@ -0,0 +1,11 @@ +[video] +object=sr1n.bgf + +[collision] +name=sr1n_cv.sld + +[gauge] +image=sr1n_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/SR1S.MOD b/CONTENT/BT/MODELS/SR1S.MOD new file mode 100644 index 0000000..b4f6485 --- /dev/null +++ b/CONTENT/BT/MODELS/SR1S.MOD @@ -0,0 +1,11 @@ +[video] +object=sr1s.bgf + +[collision] +name=sr1s_cv.sld + +[gauge] +image=sr1s_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/SR1W.MOD b/CONTENT/BT/MODELS/SR1W.MOD new file mode 100644 index 0000000..d775584 --- /dev/null +++ b/CONTENT/BT/MODELS/SR1W.MOD @@ -0,0 +1,11 @@ +[video] +object=sr1w.bgf + +[collision] +name=sr1w_cv.sld + +[gauge] +image=sr1w_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/SRC1NE.MOD b/CONTENT/BT/MODELS/SRC1NE.MOD new file mode 100644 index 0000000..43bc2f9 --- /dev/null +++ b/CONTENT/BT/MODELS/SRC1NE.MOD @@ -0,0 +1,8 @@ +[video] +object=src1ne.bgf + +[collision] +name=src1ne_c.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/SRC1NW.MOD b/CONTENT/BT/MODELS/SRC1NW.MOD new file mode 100644 index 0000000..1c39252 --- /dev/null +++ b/CONTENT/BT/MODELS/SRC1NW.MOD @@ -0,0 +1,8 @@ +[video] +object=src1nw.bgf + +[collision] +name=src1nw_c.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/SRC1SE.MOD b/CONTENT/BT/MODELS/SRC1SE.MOD new file mode 100644 index 0000000..0972dc0 --- /dev/null +++ b/CONTENT/BT/MODELS/SRC1SE.MOD @@ -0,0 +1,8 @@ +[video] +object=src1se.bgf + +[collision] +name=src1se_c.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/SRC1SW.MOD b/CONTENT/BT/MODELS/SRC1SW.MOD new file mode 100644 index 0000000..32d6c5e --- /dev/null +++ b/CONTENT/BT/MODELS/SRC1SW.MOD @@ -0,0 +1,8 @@ +[video] +object=src1sw.bgf + +[collision] +name=src1sw_c.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/SRCHLITE.SUB b/CONTENT/BT/MODELS/SRCHLITE.SUB new file mode 100644 index 0000000..045be0b --- /dev/null +++ b/CONTENT/BT/MODELS/SRCHLITE.SUB @@ -0,0 +1,10 @@ +[Searchlight] +Type=SearchlightClassID +ArmorValue=20.0 +WatchedSubsystem=None +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +WeaponDamagePoints=10.0 +VitalSubsystem=False +CriticalHitScoreBonus=0 +MinVoltagePercent=10 diff --git a/CONTENT/BT/MODELS/SRM.MOD b/CONTENT/BT/MODELS/SRM.MOD new file mode 100644 index 0000000..fe1bc30 --- /dev/null +++ b/CONTENT/BT/MODELS/SRM.MOD @@ -0,0 +1,24 @@ +[video] +object=tms_c.bgf + +[audio] +external=msltvl.scp + +[gauge] +image=rivet_ga.gim + +[gamedata] +class=MissileClassID +MoverMass=50.0 +MomentOfInertia=0.1 0.1 0.001 +PositiveLinearDragCoefficients=0.001 0.001 .001 +NegativeLinearDragCoefficients=0.001 0.001 .001 +AngularDragCoefficients=0.05 0.05 0.001 +FrictionCoefficient=0.0 +ElasticityCoefficient=0.0 +MinimumBounceSpeed=0.0 +MaxThrusterRotationRate=120.0 +BurnTime=2.5 +ThrusterAcceleration=600.0 +ThrusterClimb=0.0 +SplashRadius=30.0 diff --git a/CONTENT/BT/MODELS/SRM2.SUB b/CONTENT/BT/MODELS/SRM2.SUB new file mode 100644 index 0000000..447222d --- /dev/null +++ b/CONTENT/BT/MODELS/SRM2.SUB @@ -0,0 +1,33 @@ +[MissileLauncher] +Type=MissileLauncherClassID +StartingTemperature=77.0 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +ThermalConductance=4.74e5 +ThermalMass=2.37e4 +WeaponDamagePoints=3.0 +HeatSink=None +AmmoBin=None +VoltageSource=None +MuzzleVelocity=0.0 0.0 100.0 +TracerInterval=1 +ExplosionModelFile=mslhit +RechargeRate=2.0 +DamageAmount=20.0 +DamageType=ExplosiveDamage +WeaponRange=800.0 +HeatCostToFire=1.5e7 +VitalSubsystem=False +ThermalResistivityCoefficient=0.00024 +MissileCount=2 +AuxScreenNumber=0 +AuxScreenLabel=qsrm2.pcc +EngScreenLabel=esrm2.pcc +MinTimeOfFlight=0.5 +MinVoltagePercentToFire=0.30 +MinJamChance=0.05 +PipPosition=1 +PipColor=0.6 0.4 0.0 +PipExtendedRange=False +StartTime=1.0 +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT/MODELS/SRM4.SUB b/CONTENT/BT/MODELS/SRM4.SUB new file mode 100644 index 0000000..23f29eb --- /dev/null +++ b/CONTENT/BT/MODELS/SRM4.SUB @@ -0,0 +1,33 @@ +[MissileLauncher] +Type=MissileLauncherClassID +StartingTemperature=77.0 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +ThermalConductance=4.74e5 +ThermalMass=4.74e4 +WeaponDamagePoints=3.0 +HeatSink=None +AmmoBin=None +VoltageSource=None +MuzzleVelocity=0.0 0.0 100.0 +TracerInterval=1 +ExplosionModelFile=mslhit +RechargeRate=3.0 +DamageAmount=35.0 +DamageType=ExplosiveDamage +WeaponRange=800.0 +HeatCostToFire=3e7 +VitalSubsystem=False +ThermalResistivityCoefficient=0.00024 +MissileCount=4 +AuxScreenNumber=0 +AuxScreenLabel=qsrm4.pcc +EngScreenLabel=esrm4.pcc +MinTimeOfFlight=0.5 +MinVoltagePercentToFire=0.30 +MinJamChance=0.05 +PipPosition=1 +PipColor=0.6 0.4 0.0 +PipExtendedRange=False +StartTime=1.0 +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT/MODELS/SRM6.SUB b/CONTENT/BT/MODELS/SRM6.SUB new file mode 100644 index 0000000..faec1f1 --- /dev/null +++ b/CONTENT/BT/MODELS/SRM6.SUB @@ -0,0 +1,33 @@ +[MissileLauncher] +Type=MissileLauncherClassID +StartingTemperature=77.0 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +ThermalConductance=4.74e5 +ThermalMass=7.89e4 +WeaponDamagePoints=3.0 +HeatSink=None +AmmoBin=None +VoltageSource=None +MuzzleVelocity=0.0 0.0 100.0 +TracerInterval=1 +ExplosionModelFile=mslhit +RechargeRate=5.0 +DamageAmount=50.0 +DamageType=ExplosiveDamage +WeaponRange=800.0 +HeatCostToFire=5e7 +VitalSubsystem=False +ThermalResistivityCoefficient=0.00024 +MissileCount=6 +AuxScreenNumber=0 +AuxScreenLabel=qsrm6.pcc +EngScreenLabel=esrm6.pcc +MinTimeOfFlight=0.5 +MinVoltagePercentToFire=0.30 +MinJamChance=0.05 +PipPosition=1 +PipColor=0.6 0.4 0.0 +PipExtendedRange=False +StartTime=1.0 +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT/MODELS/SRMCARRY.MOD b/CONTENT/BT/MODELS/SRMCARRY.MOD new file mode 100644 index 0000000..95b51e2 --- /dev/null +++ b/CONTENT/BT/MODELS/SRMCARRY.MOD @@ -0,0 +1,18 @@ +[video] +object=SRMCARRY.bgf srms.bgf +rubble=SRMD.bgf + +[collision] +name=SRMCARRY.sld + +[gauge] +image=srmcarry.gim + +[gamedata] +class=CulturalIconClassID +DamageZones=trk.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=trkdead +TimeDelay=0.5 +CrunchExplosionModelFile=stephit + \ No newline at end of file diff --git a/CONTENT/BT/MODELS/ST1.MOD b/CONTENT/BT/MODELS/ST1.MOD new file mode 100644 index 0000000..e7410bf --- /dev/null +++ b/CONTENT/BT/MODELS/ST1.MOD @@ -0,0 +1,11 @@ +[video] +object=st1.bgf + +//[gauge] +//image=st1_ga.gim + +[collision] +name=st1_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/STATE.RST b/CONTENT/BT/MODELS/STATE.RST new file mode 100644 index 0000000..03f1760 --- /dev/null +++ b/CONTENT/BT/MODELS/STATE.RST @@ -0,0 +1,12 @@ +[edit-] +screen=80 50 +toggles=1 1 0 1 0 0 +srch= +src= +rpl= +file=p:\super\models\dsky.mod 1 1 1 1 +[brief] +file=p:\super\models\dsky.mod 1 1 1 1 1 47 78 1 c=0 +[shared-] +pmark=p:\super\models\dsky.mod 1 1 + \ No newline at end of file diff --git a/CONTENT/BT/MODELS/STB.MOD b/CONTENT/BT/MODELS/STB.MOD new file mode 100644 index 0000000..f7fd711 --- /dev/null +++ b/CONTENT/BT/MODELS/STB.MOD @@ -0,0 +1,11 @@ +[video] +object=stb.bgf + +[collision] +name=stb_cv.sld + +[gauge] +image=stb_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/STEPHIT.MOD b/CONTENT/BT/MODELS/STEPHIT.MOD new file mode 100644 index 0000000..19d0b1e --- /dev/null +++ b/CONTENT/BT/MODELS/STEPHIT.MOD @@ -0,0 +1,11 @@ +[video] +object=1008 + +[audio] +external=crnexp.scp + +[gamedata] +class=ExplosionClassID +ExplosionResourceTable=DestroyedExplosionResourceTable +// Audio requires ExplosionDuration >= 3.0 +ExplosionDuration=3.0 diff --git a/CONTENT/BT/MODELS/STF.MOD b/CONTENT/BT/MODELS/STF.MOD new file mode 100644 index 0000000..ba20d33 --- /dev/null +++ b/CONTENT/BT/MODELS/STF.MOD @@ -0,0 +1,11 @@ +[video] +object=stf.bgf + +[collision] +name=stf_cv.sld + +[gauge] +image=stf_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/STH.MOD b/CONTENT/BT/MODELS/STH.MOD new file mode 100644 index 0000000..85d2d55 --- /dev/null +++ b/CONTENT/BT/MODELS/STH.MOD @@ -0,0 +1,11 @@ +[video] +object=sth.bgf + +[collision] +name=sth_cv.sld + +[gauge] +image=sth_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/STIDEAD.MOD b/CONTENT/BT/MODELS/STIDEAD.MOD new file mode 100644 index 0000000..83959ea --- /dev/null +++ b/CONTENT/BT/MODELS/STIDEAD.MOD @@ -0,0 +1,9 @@ +[video] +object=104 3 4 5 1007 15 1001 + +[audio] +external=brnext.scp + +[gamedata] +class=ExplosionClassID +ExplosionDuration=9.0 diff --git a/CONTENT/BT/MODELS/STIDMG.EXP b/CONTENT/BT/MODELS/STIDMG.EXP new file mode 100644 index 0000000..c9b1598 --- /dev/null +++ b/CONTENT/BT/MODELS/STIDMG.EXP @@ -0,0 +1,28 @@ +[OneDamage] +ExplosionModelFile=dam1hit +DamageLevel=0.2 +TimeDelay=0.0 + +[TwoDamage] +ExplosionModelFile=dam2hit +DamageLevel=0.4 +TimeDelay=0.0 + +[ThreeDamage] +ExplosionModelFile=dam3hit +DamageLevel=0.6 +TimeDelay=0.0 + +[FourDamage] +ExplosionModelFile=dam4hit +DamageLevel=0.8 +TimeDelay=0.0 + +[DestroyedExplosion] +ExplosionModelFile=desthit +GraphicState=Destroyed + +[GoneExplosion] +ExplosionModelFile=desthit +GraphicState=Gone + diff --git a/CONTENT/BT/MODELS/STIDMG.TBL b/CONTENT/BT/MODELS/STIDMG.TBL new file mode 100644 index 0000000..e732c20 --- /dev/null +++ b/CONTENT/BT/MODELS/STIDMG.TBL @@ -0,0 +1,192 @@ +[LeftFoot] +DamageZone=dz_lfoot 0.5 +DamageZone=dz_ldleg 0.3 +DamageZone=dz_rfoot 0.2 + +[RightFoot] +DamageZone=dz_rfoot 0.5 +DamageZone=dz_rdleg 0.3 +DamageZone=dz_lfoot 0.2 + +[LeftLeg] +DamageZone=dz_luleg 0.4 +DamageZone=dz_ldleg 0.4 +DamageZone=dz_ruleg 0.1 +DamageZone=dz_rdleg 0.1 + +[RightLeg] +DamageZone=dz_ruleg 0.4 +DamageZone=dz_rdleg 0.4 +DamageZone=dz_luleg 0.1 +DamageZone=dz_ldleg 0.1 + +[LeftHip] +DamageZone=dz_luleg 0.6 +//DamageZone=dz_hip 0.2 +DamageZone=dz_lgun 0.4 + +[FrontHip] +DamageZone=dz_luleg 0.35 +DamageZone=dz_ruleg 0.35 +//DamageZone=dz_hip 0.3 +DamageZone=dz_dtorso 0.3 + +[RearHip] +DamageZone=dz_luleg 0.35 +DamageZone=dz_ruleg 0.35 +//DamageZone=dz_hip 0.3 +DamageZone=dz_reardtorso 0.3 + +[RightHip] +DamageZone=dz_ruleg 0.6 +//DamageZone=dz_hip 0.2 +DamageZone=dz_rgun 0.4 + +[LeftWaist] +DamageZone=dz_ltorso 0.2 +//DamageZone=dz_rearltorso 0.1 +DamageZone=dz_lgun 0.2 +DamageZone=dz_dtorso 0.35 +DamageZone=dz_reardtorso 0.25 + +[FrontWaist] +DamageZone=dz_rgun 0.05 +DamageZone=dz_lgun 0.05 +DamageZone=dz_ltorso 0.25 +DamageZone=dz_rtorso 0.25 +DamageZone=dz_dtorso 0.4 + +[RearWaist] +DamageZone=dz_rgun 0.25 +DamageZone=dz_lgun 0.25 +//DamageZone=dz_rearltorso 0.25 +//DamageZone=dz_rearrtorso 0.25 +DamageZone=dz_reardtorso 0.5 + +[RightWaist] +DamageZone=dz_rtorso 0.25 +//DamageZone=dz_rearrtorso 0.1 +DamageZone=dz_rgun 0.25 +DamageZone=dz_dtorso 0.25 +DamageZone=dz_reardtorso 0.25 + +[LeftChest] +DamageZone=dz_lgun 0.2 +DamageZone=dz_ltorso 0.4 +//DamageZone=dz_rearltorso 0.3 +DamageZone=dz_dtorso 0.2 +DamageZone=dz_rearutorso 0.2 + +[RightChest] +DamageZone=dz_rgun 0.2 +DamageZone=dz_rtorso 0.4 +//DamageZone=dz_rearrtorso 0.3 +DamageZone=dz_dtorso 0.2 +DamageZone=dz_rearutorso 0.2 + +[FrontChest] +//DamageZone=dz_missle 0.05 +DamageZone=dz_searchlight 0.1 +DamageZone=dz_lgun 0.05 +DamageZone=dz_rgun 0.05 +DamageZone=dz_ltorso 0.2 +DamageZone=dz_rtorso 0.2 +DamageZone=dz_dtorso 0.4 + +[RearChest] +DamageZone=dz_lgun 0.05 +DamageZone=dz_rgun 0.05 +//DamageZone=dz_rearltorso 0.1 +//DamageZone=dz_rearrtorso 0.1 +DamageZone=dz_rearutorso 0.6 +DamageZone=dz_reardtorso 0.2 +DamageZone=dz_utorso 0.1 +//DamageZone=dz_missle 0.05 + +[TopLeft] +DamageZone=dz_utorso 0.6 +DamageZone=dz_ltorso 0.4 +//DamageZone=dz_missle 0.6 + +[TopRight] +//DamageZone=dz_missle 0.6 +DamageZone=dz_rtorso 0.4 +DamageZone=dz_utorso 0.6 + +// The data in this table is totally bogus. GDU 12-2-95 +[Layer1] +PieSlice=RightFoot +PieSlice=RightFoot +PieSlice=LeftFoot +PieSlice=LeftFoot +PieSlice=LeftFoot +PieSlice=LeftFoot +PieSlice=RightFoot +PieSlice=RightFoot +RotateWithTorso=False + +[Layer2] +PieSlice=RightLeg +PieSlice=RightLeg +PieSlice=LeftLeg +PieSlice=LeftLeg +PieSlice=LeftLeg +PieSlice=LeftLeg +PieSlice=RightLeg +PieSlice=RightLeg +RotateWithTorso=False + +[Layer3] +PieSlice=RightHip +PieSlice=FrontHip +PieSlice=FrontHip +PieSlice=LeftHip +PieSlice=LeftHip +PieSlice=RearHip +PieSlice=RearHip +PieSlice=RightHip +RotateWithTorso=False + +[Layer4] +PieSlice=RightHip +PieSlice=FrontHip +PieSlice=FrontHip +PieSlice=LeftHip +PieSlice=LeftHip +PieSlice=RearHip +PieSlice=RearHip +PieSlice=RightHip +RotateWithTorso=True + +[Layer5] +PieSlice=RightWaist +PieSlice=FrontWaist +PieSlice=FrontWaist +PieSlice=LeftWaist +PieSlice=LeftWaist +PieSlice=RearWaist +PieSlice=RearWaist +PieSlice=RightWaist +RotateWithTorso=True + +[Layer6] +PieSlice=RightChest +PieSlice=FrontChest +PieSlice=FrontChest +PieSlice=LeftChest +PieSlice=LeftChest +PieSlice=RearChest +PieSlice=RearChest +PieSlice=RightChest +RotateWithTorso=True + +[Layer7] +PieSlice=TopRight +PieSlice=TopRight +PieSlice=TopLeft +PieSlice=TopLeft +PieSlice=TopLeft +PieSlice=TopLeft +PieSlice=TopRight +PieSlice=TopRight +RotateWithTorso=True diff --git a/CONTENT/BT/MODELS/STITHR.CTL b/CONTENT/BT/MODELS/STITHR.CTL new file mode 100644 index 0000000..f29cd16 --- /dev/null +++ b/CONTENT/BT/MODELS/STITHR.CTL @@ -0,0 +1,51 @@ +[StickPosition_JP] +IOMapping=JoystickPhysical +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=StickPosition +Mode=ModeAlwaysActive + +[TorsoLeft_BJHL] +IOMapping=ButtonJoystickHatLeft +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoLeft +Mode=ModeAlwaysActive + +[TorsoRight_BJHR] +IOMapping=ButtonJoystickHatRight +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoRight +Mode=ModeAlwaysActive + +[ERMLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[SRM6_1_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=SRM6_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[SRM6_2_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=SRM6_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[GAUSS_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=GAUSS +AttributeID=TriggerState +Mode=ModeNonMapping diff --git a/CONTENT/BT/MODELS/STRIDER.MOD b/CONTENT/BT/MODELS/STRIDER.MOD new file mode 100644 index 0000000..43d99b4 --- /dev/null +++ b/CONTENT/BT/MODELS/STRIDER.MOD @@ -0,0 +1,134 @@ +[video] +skeleton=sti.skl +skeletona=stx.skl +//destroyed=stid.skl +//destroyeda=stidx.skl +dzm=stiskin.dzm +dzma=stxskin.dzm + +[audio] +internal=stiint.scp +external=stiext.scp + +[collision] +name=sti_cv.sld + +[gauge] +image=sti_ga.gim + +[gaugeMissionReview] +pixelmap=sti_mr.pcc + +[gamedata] +class=MechClassID +MoverMass=40000.0 +MomentOfInertia=1.75 3.125 1.75 +PositiveLinearDragCoefficients=0.14 0.4 0.07 +NegativeLinearDragCoefficients=0.14 0.2 0.08 +AngularDragCoefficients=0.3 0.5 0.3 +FrictionCoefficient=0.1 +ElasticityCoefficient=0.2 +MinimumBounceSpeed=0.2 +MaxAcceleration=50 +AnimationPrefix=sti +Subsystems=strider.sub +DamageZones=strider.dmg +DamageLookupTable=stidmg.tbl +RelativeMechValue=1.0 +LookLeftAngle=45 +LookRightAngle=-45 +LookBackAngle=0 +LookFrontAngle=-15 +WalkingTurnRate=80 +RunningTurnRate=55 +DeathEffect=thrdead +CameraOffset=0.0 15.0 30.0 +DeathSplashDamage=5 +DeathSplashRadius=50 +TimeDelay=0.3 + +MaxUnstableAcceleration=22.0 +UnstableAccelerationEffect=0.7 +UnstableGunTheEngineEffect=0.1 +UnstableSuperStopEffect=0.5 +UnstableHighVelocityEffect=0.4 +UnstableStopedTurnEffect=1.0 +SuperStopAcceleration=20.0 + +ThrottleAdjustment=1.5 + +UpdateTurnDegreeDiffrence=3 +UpdateTurnVelocityDiffrence=0.045 +UpdatePositionDiffrence=0.3 + +ShadowJointName=jointshadow + +[ControlMappings] +Thrustmaster=stithr.ctl +L4=stil4.ctl + +[animations] +animationtransition=stiswr.ani +animation=stiwwl.ani +animation=stiwwr.ani +animation=stiwsr.ani +animation=stiwsl.ani +animationtransition=stiwrl.ani +animationtransition=stiwrr.ani +animation=stirrl.ani +animation=stirrr.ani +animation=stirwl.ani +animation=stirwr.ani +animation=stibmp.ani +animation=stibbl.ani +animation=stibbr.ani +animation=stibsl.ani +animation=stibsr.ani +animationtransition=stisbl.ani +animationtransition=stisbr.ani + +animationtransition=stiswri.ani +animation=stiwwli.ani +animation=stiwwri.ani +animation=stiwsri.ani +animation=stiwsli.ani +animationtransition=stiwrli.ani +animationtransition=stiwrri.ani +animation=stirrli.ani +animation=stirrri.ani +animation=stirwli.ani +animation=stirwri.ani +animation=stibmpi.ani +animation=stibbli.ani +animation=stibbri.ani +animation=stibsli.ani +animation=stibsri.ani +animationtransition=stisbli.ani +animationtransition=stisbri.ani + +animation=stiggl.ani +animation=stiggr.ani +animation=stigsl.ani +animation=stigsr.ani +animationtransition=stiwgl.ani +animationtransition=stiwgr.ani + +animation=stiggli.ani +animation=stiggri.ani +animation=stigsli.ani +animation=stigsri.ani +animationtransition=stiwgli.ani +animationtransition=stiwgri.ani + +animation=stisqu.ani +animation=stisqd.ani +animation=stisqui.ani +animation=stisqdi.ani + +animation=stitrn.ani +animation=stitrni.ani + +//animation=stiff.ani +//animation=stifb.ani +//animation=stifl.ani +//animation=stifr.ani \ No newline at end of file diff --git a/CONTENT/BT/MODELS/STRIDER.SUB b/CONTENT/BT/MODELS/STRIDER.SUB new file mode 100644 index 0000000..ba85a79 --- /dev/null +++ b/CONTENT/BT/MODELS/STRIDER.SUB @@ -0,0 +1,194 @@ +[HeatSink] +Type=HeatSinkClassID +Include=heatsnk.sub +HeatSinkCount=5 +SubsystemFlags=DontReplicateFlag + +[Reservoir] +Type=ReservoirClassID +Include=reserve.sub +HeatSink=HeatSink +SegmentPageName=siteeyepoint + +[Condenser1] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser2] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser3] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser4] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser5] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser6] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[GeneratorA] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser1 +SubsystemFlags=DontReplicateFlag + +[GeneratorB] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser2 +SubsystemFlags=DontReplicateFlag + +[GeneratorC] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser3 +SubsystemFlags=DontReplicateFlag + +[GeneratorD] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser5 +SubsystemFlags=DontReplicateFlag + +[Avionics] +Type=SensorClassID +Include=sensor.sub +HeatSink=Condenser2 +VoltageSource=GeneratorD +AuxScreenNumber=5 +SubsystemFlags=DontReplicateFlag + +AuxScreenPlacement=2 +[Myomers] +Type=MyomersClassID +Include=myomers.sub +HeatSink=Condenser5 +VoltageSource=GeneratorD +AuxScreenNumber=6 +SubsystemFlags=DontReplicateFlag + +AuxScreenPlacement=0 +[Gyroscope] +Type=GyroscopeClassID +Include=gyro.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag + +[Torso] +Type=TorsoClassID +Include=torso.sub +WatchedSubsystem=Myomers + +HorizontalRotationPerSecond=40 +VerticalRotationPerSecond=30 +HorizontalLimitRight=-80 +HorizontalLimitLeft=80 +[HUD] +Type=HUDClassID +Include=hud.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag + +[Searchlight] +Type=SearchlightClassID +Include=srchlite.sub +WatchedSubsystem=Avionics +SegmentPageName=sitelight + +[ThermalSight] +Type=ThermalSightClassID +Include=Thermal.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag +[ERMLaser_1] +Type=EmitterClassID +Include=ermlaser.sub +SegmentPageName=sitelasrport +PipPosition=1 +VoltageSource=GeneratorB +HeatSink=Condenser5 +AuxScreenNumber=2 +AuxScreenPlacement=5 +[ERMLaser_2] +Type=EmitterClassID +Include=ermlaser.sub +SegmentPageName=sitelasrport +PipPosition=2 +VoltageSource=GeneratorB +HeatSink=Condenser5 +AuxScreenNumber=9 +AuxScreenPlacement=5 +[AmmoBinSRM6_1] +Type=AmmoBinClassID +Include=ammstrk2.sub +WatchedSubsystem=SRM6_1 +AmmoCount=25 +[SRM6_1] +AmmoBin=AmmoBinSRM6_1 +Type=MissileLauncherClassID +Include=strk2.sub +SegmentPageName=sitelgunport +PipPosition=1 +VoltageSource=GeneratorA +HeatSink=Condenser4 +AuxScreenNumber=1 +AuxScreenPlacement=4 +[AmmoBinSRM6_2] +Type=AmmoBinClassID +Include=ammstrk2.sub +WatchedSubsystem=SRM6_2 +AmmoCount=25 +[SRM6_2] +AmmoBin=AmmoBinSRM6_2 +Type=MissileLauncherClassID +Include=strk2.sub +SegmentPageName=sitergunport +PipPosition=2 +VoltageSource=GeneratorC +HeatSink=Condenser6 +AuxScreenNumber=10 +AuxScreenPlacement=6 +[AmmoBinGAUSS] +Type=AmmoBinClassID +Include=ammogaus.sub +WatchedSubsystem=GAUSS +AmmoCount=12 +[GAUSS] +AmmoBin=AmmoBinGAUSS +Type=ProjectileWeaponClassID +Include=gaussrfl.sub +SegmentPageName=sitelasrport +PipPosition=1 +VoltageSource=GeneratorB +HeatSink=Condenser5 +AuxScreenNumber=7 +AuxScreenPlacement=5 +[MessageManager] +Type=SubsystemMessageManagerClassID +ExplosionModelFile=majhit 1.0 +TerrainHitExplosion=gndhit +RendererCompensateTime=0.3 +[MechTech] +Type=MechTechClassID +AlarmModel=mechalrm +SubsystemFlags=DontReplicateFlag diff --git a/CONTENT/BT/MODELS/STRIKER.MOD b/CONTENT/BT/MODELS/STRIKER.MOD new file mode 100644 index 0000000..35ff73a --- /dev/null +++ b/CONTENT/BT/MODELS/STRIKER.MOD @@ -0,0 +1,18 @@ +[video] +object=STRIKER.bgf strikers.bgf +rubble=STRIKD.bgf + +[collision] +name=STRIKER.sld + +[gauge] +image=striker.gim + +[gamedata] +class=CulturalIconClassID +DamageZones=trk.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=trkdead +TimeDelay=0.5 +CrunchExplosionModelFile=stephit + \ No newline at end of file diff --git a/CONTENT/BT/MODELS/STRK.MOD b/CONTENT/BT/MODELS/STRK.MOD new file mode 100644 index 0000000..0899bf0 --- /dev/null +++ b/CONTENT/BT/MODELS/STRK.MOD @@ -0,0 +1,24 @@ +[video] +object=tms_c.bgf + +[audio] +external=msltvl.scp + +[gauge] +image=rivet_ga.gim + +[gamedata] +class=MissileClassID +MoverMass=50.0 +MomentOfInertia=0.1 0.1 0.001 +PositiveLinearDragCoefficients=0.001 0.001 .001 +NegativeLinearDragCoefficients=0.001 0.001 .001 +AngularDragCoefficients=0.05 0.05 0.001 +FrictionCoefficient=0.0 +ElasticityCoefficient=0.0 +MinimumBounceSpeed=0.0 +MaxThrusterRotationRate=360.0 +BurnTime=3 +ThrusterAcceleration=300.0 +ThrusterClimb=0.0 +SplashRadius=30.0 diff --git a/CONTENT/BT/MODELS/STRK2.SUB b/CONTENT/BT/MODELS/STRK2.SUB new file mode 100644 index 0000000..842f016 --- /dev/null +++ b/CONTENT/BT/MODELS/STRK2.SUB @@ -0,0 +1,33 @@ +[MissileLauncher] +Type=MissileLauncherClassID +StartingTemperature=77.0 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +ThermalConductance=4.74e5 +ThermalMass=2.37e4 +WeaponDamagePoints=3.0 +HeatSink=None +AmmoBin=None +VoltageSource=None +MuzzleVelocity=0.0 0.0 100.0 +TracerInterval=1 +ExplosionModelFile=mslhit +RechargeRate=2.0 +DamageAmount=10.0 +DamageType=ExplosiveDamage +WeaponRange=800.0 +HeatCostToFire=1.5e7 +VitalSubsystem=False +ThermalResistivityCoefficient=0.00024 +MissileCount=2 +AuxScreenNumber=0 +AuxScreenLabel=qstrk2.pcc +EngScreenLabel=estrk2.pcc +MinTimeOfFlight=0.5 +MinVoltagePercentToFire=0.30 +MinJamChance=0.05 +PipPosition=1 +PipColor=0.6 0.4 0.0 +PipExtendedRange=False +StartTime=1.0 +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT/MODELS/STRK4.SUB b/CONTENT/BT/MODELS/STRK4.SUB new file mode 100644 index 0000000..2c82cb7 --- /dev/null +++ b/CONTENT/BT/MODELS/STRK4.SUB @@ -0,0 +1,33 @@ +[MissileLauncher] +Type=MissileLauncherClassID +StartingTemperature=77.0 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +ThermalConductance=4.74e5 +ThermalMass=4.74e4 +WeaponDamagePoints=3.0 +HeatSink=None +AmmoBin=None +VoltageSource=None +MuzzleVelocity=0.0 0.0 100.0 +TracerInterval=1 +ExplosionModelFile=mslhit +RechargeRate=3.0 +DamageAmount=20.0 +DamageType=ExplosiveDamage +WeaponRange=800.0 +HeatCostToFire=3e7 +VitalSubsystem=False +ThermalResistivityCoefficient=0.00024 +MissileCount=4 +AuxScreenNumber=0 +AuxScreenLabel=qstrk4.pcc +EngScreenLabel=estrk4.pcc +MinTimeOfFlight=0.5 +MinVoltagePercentToFire=0.30 +MinJamChance=0.05 +PipPosition=1 +PipColor=0.6 0.4 0.0 +PipExtendedRange=False +StartTime=1.0 +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT/MODELS/STRK6.SUB b/CONTENT/BT/MODELS/STRK6.SUB new file mode 100644 index 0000000..9d72f4c --- /dev/null +++ b/CONTENT/BT/MODELS/STRK6.SUB @@ -0,0 +1,33 @@ +[MissileLauncher] +Type=MissileLauncherClassID +StartingTemperature=77.0 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +ThermalConductance=4.74e5 +ThermalMass=7.89e4 +WeaponDamagePoints=3.0 +HeatSink=None +AmmoBin=None +VoltageSource=None +MuzzleVelocity=0.0 0.0 100.0 +TracerInterval=1 +ExplosionModelFile=mslhit +RechargeRate=5.0 +DamageAmount=35.0 +DamageType=ExplosiveDamage +WeaponRange=800.0 +HeatCostToFire=5e7 +VitalSubsystem=False +ThermalResistivityCoefficient=0.00024 +MissileCount=6 +AuxScreenNumber=0 +AuxScreenLabel=qstrk6.pcc +EngScreenLabel=estrk6.pcc +MinTimeOfFlight=0.5 +MinVoltagePercentToFire=0.30 +MinJamChance=0.05 +PipPosition=1 +PipColor=0.6 0.4 0.0 +PipExtendedRange=False +StartTime=1.0 +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT/MODELS/STS.MOD b/CONTENT/BT/MODELS/STS.MOD new file mode 100644 index 0000000..b3744d3 --- /dev/null +++ b/CONTENT/BT/MODELS/STS.MOD @@ -0,0 +1,11 @@ +[video] +object=sts.bgf + +[collision] +name=sts_cv.sld + +[gauge] +image=sts_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/STT.MOD b/CONTENT/BT/MODELS/STT.MOD new file mode 100644 index 0000000..7e09419 --- /dev/null +++ b/CONTENT/BT/MODELS/STT.MOD @@ -0,0 +1,11 @@ +[video] +object=stt.bgf + +[collision] +name=sth_cv.sld + +[gauge] +image=stt_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/SUB.BLD b/CONTENT/BT/MODELS/SUB.BLD new file mode 100644 index 0000000..93b6332 --- /dev/null +++ b/CONTENT/BT/MODELS/SUB.BLD @@ -0,0 +1,116 @@ +[HeatSink] +Type=HeatSinkClassID +Include=heatsnk.sub +HeatSinkCount=0 +SubsystemFlags=DontReplicateFlag + +[Reservoir] +Type=ReservoirClassID +Include=reserve.sub +HeatSink=HeatSink +SegmentPageName=siteeyepoint + +[Condenser1] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser2] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser3] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser4] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser5] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser6] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[GeneratorA] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser1 +SubsystemFlags=DontReplicateFlag + +[GeneratorB] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser2 +SubsystemFlags=DontReplicateFlag + +[GeneratorC] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser3 +SubsystemFlags=DontReplicateFlag + +[GeneratorD] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser5 +SubsystemFlags=DontReplicateFlag + +[Avionics] +Type=SensorClassID +Include=sensor.sub +HeatSink= +VoltageSource= +AuxScreenNumber= +SubsystemFlags=DontReplicateFlag + +[Myomers] +Type=MyomersClassID +Include=myomers.sub +HeatSink=Condenser5 +VoltageSource= +AuxScreenNumber= +SubsystemFlags=DontReplicateFlag + +[Gyroscope] +Type=GyroscopeClassID +Include=gyro.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag + +[Torso] +Type=TorsoClassID +Include=torso.sub +WatchedSubsystem=Myomers + +[HUD] +Type=HUDClassID +Include=hud.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag + +[Searchlight] +Type=SearchlightClassID +Include=srchlite.sub +WatchedSubsystem=Avionics +SegmentPageName=sitelight + +[ThermalSight] +Type=ThermalSightClassID +Include=Thermal.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag diff --git a/CONTENT/BT/MODELS/SUN1.SUB b/CONTENT/BT/MODELS/SUN1.SUB new file mode 100644 index 0000000..0785be4 --- /dev/null +++ b/CONTENT/BT/MODELS/SUN1.SUB @@ -0,0 +1,188 @@ +[HeatSink] +Type=HeatSinkClassID +Include=heatsnk.sub +HeatSinkCount=14 +SubsystemFlags=DontReplicateFlag + +[Reservoir] +Type=ReservoirClassID +Include=reserve.sub +HeatSink=HeatSink +SegmentPageName=siteeyepoint + +[Condenser1] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser2] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser3] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser4] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser5] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser6] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[GeneratorA] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser1 +SubsystemFlags=DontReplicateFlag + +[GeneratorB] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser2 +SubsystemFlags=DontReplicateFlag + +[GeneratorC] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser3 +SubsystemFlags=DontReplicateFlag + +[GeneratorD] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser5 +SubsystemFlags=DontReplicateFlag + +[Avionics] +Type=SensorClassID +Include=sensor.sub +HeatSink=Condenser2 +VoltageSource=GeneratorD +AuxScreenNumber=5 +SubsystemFlags=DontReplicateFlag + +AuxScreenPlacement=2 +[Myomers] +Type=MyomersClassID +Include=myomers.sub +HeatSink=Condenser5 +VoltageSource=GeneratorD +AuxScreenNumber=6 +SubsystemFlags=DontReplicateFlag + +AuxScreenPlacement=0 +[Gyroscope] +Type=GyroscopeClassID +Include=gyro.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag + +[Torso] +Type=TorsoClassID +Include=torso.sub +WatchedSubsystem=Myomers + +HorizontalRotationPerSecond=30 +VerticalRotationPerSecond=30 +HorizontalLimitRight=-100 +HorizontalLimitLeft=100 +[HUD] +Type=HUDClassID +Include=hud.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag + +[Searchlight] +Type=SearchlightClassID +Include=srchlite.sub +WatchedSubsystem=Avionics +SegmentPageName=sitelight +[AmmoBinAFC1001] +Type=AmmoBinClassID +Include=amafc100.sub +WatchedSubsystem=AFC1001 +AmmoCount=15 +[AFC1001] +AmmoBin=AmmoBinAFC1001 +Type=ProjectileWeaponClassID +Include=afc100.sub +SegmentPageName=sitelgunport +PipPosition=1 +VoltageSource=GeneratorA +HeatSink=Condenser4 +AuxScreenNumber=1 +AuxScreenPlacement=4 +[AmmoBinAFC1002] +Type=AmmoBinClassID +Include=amafc100.sub +WatchedSubsystem=AFC1002 +AmmoCount=15 +[AFC1002] +AmmoBin=AmmoBinAFC1002 +Type=ProjectileWeaponClassID +Include=afc100.sub +SegmentPageName=siterugunport +PipPosition=2 +VoltageSource=GeneratorC +HeatSink=Condenser6 +AuxScreenNumber=10 +AuxScreenPlacement=6 +[ERSLaser1] +Type=EmitterClassID +Include=erslaser.sub +SegmentPageName=siteltorsoport +PipPosition=1 +VoltageSource=GeneratorA +HeatSink=Condenser1 +AuxScreenNumber=2 +AuxScreenPlacement=1 +[ERSLaser2] +Type=EmitterClassID +Include=erslaser.sub +SegmentPageName=sitertorsoport +PipPosition=2 +VoltageSource=GeneratorC +HeatSink=Condenser3 +AuxScreenNumber=9 +AuxScreenPlacement=3 +[AmmoBinLRM1] +Type=AmmoBinClassID +Include=ammlrm5.sub +WatchedSubsystem=LRM1 +AmmoCount=18 +[LRM1] +AmmoBin=AmmoBinLRM1 +Type=MissileLauncherClassID +Include=lrm5.sub +SegmentPageName=sitemissleport +PipPosition=1 +VoltageSource=GeneratorB +HeatSink=Condenser2 +AuxScreenNumber=7 +AuxScreenPlacement=2 +[MessageManager] +Type=SubsystemMessageManagerClassID +ExplosionModelFile=majhit 1.0 +TerrainHitExplosion=gndhit +RendererCompensateTime=0.3 +[MechTech] +Type=MechTechClassID +AlarmModel=mechalrm +SubsystemFlags=DontReplicateFlag diff --git a/CONTENT/BT/MODELS/SUNDER.DMG b/CONTENT/BT/MODELS/SUNDER.DMG new file mode 100644 index 0000000..02c8fc1 --- /dev/null +++ b/CONTENT/BT/MODELS/SUNDER.DMG @@ -0,0 +1,187 @@ +// This file is intentionally empty and MUST be read-only! +[dz_door] +ExplosionTable=snddmg.exp +DefaultEffectSiteName=siteedz_door +WeaponDamagePoints=1 +VitalDamageZone=False +[dz_dtorso] +ExplosionTable=snddmg.exp +DefaultEffectSiteName=siteedz_dtorso +WeaponDamagePoints=122 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.083333 +CriticalSubsystem=Condenser5 2 0.500000 +CriticalSubsystem=GeneratorD 15 0.500000 +CriticalSubsystem=Avionics 5 0.200000 +CriticalSubsystem=Torso 20 0.333333 +CriticalSubsystem=MLaser_1 15 1.000000 +CriticalSubsystem=MLaser_2 15 1.000000 +[dz_hip] +ExplosionTable=snddmg.exp +DefaultEffectSiteName=siteedz_hip +WeaponDamagePoints=144 +VitalDamageZone=True +CriticalSubsystem=Myomers 15 0.142857 +CriticalSubsystem=Torso 20 0.333333 +[dz_larm] +ExplosionTable=snddmg.exp +DefaultEffectSiteName=siteedz_larm +WeaponDamagePoints=72 +VitalDamageZone=False +DescendOnDestruction=True +CriticalSubsystem=Condenser4 2 0.500000 +CriticalSubsystem=AmmoBinAFC100 20 0.500000 +[dz_ldleg] +ExplosionTable=snddmg.exp +DefaultEffectSiteName=siteedz_ldleg +WeaponDamagePoints=90 +VitalDamageZone=True +LegDamageZone=LeftLeg +CriticalSubsystem=HeatSink 100 0.083333 +CriticalSubsystem=Myomers 15 0.142857 +[dz_lfoot] +ExplosionTable=snddmg.exp +DefaultEffectSiteName=siteedz_lfoot +WeaponDamagePoints=81 +VitalDamageZone=True +LegDamageZone=LeftLeg +CriticalSubsystem=Myomers 15 0.142857 +[dz_lgun] +ExplosionTable=snddmg.exp +DefaultEffectSiteName=siteedz_lgun +WeaponDamagePoints=77 +VitalDamageZone=False +DescendOnDestruction=True +CriticalSubsystem=Condenser4 2 0.500000 +CriticalSubsystem=AmmoBinAFC100 15 0.500000 +CriticalSubsystem=AFC100 20 1.000000 +CriticalSubsystem=ERMLaser_1 15 1.000000 +[dz_ltorso] +ExplosionTable=snddmg.exp +DefaultEffectSiteName=siteedz_ltorso +WeaponDamagePoints=137 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.083333 +CriticalSubsystem=Condenser1 2 0.500000 +CriticalSubsystem=GeneratorA 15 0.500000 +CriticalSubsystem=Avionics 5 0.200000 +CriticalSubsystem=ERSLaser_1 15 1.000000 +[dz_luleg] +ExplosionTable=snddmg.exp +DefaultEffectSiteName=siteedz_luleg +WeaponDamagePoints=95 +VitalDamageZone=True +LegDamageZone=LeftLeg +CriticalSubsystem=HeatSink 100 0.083333 +CriticalSubsystem=Myomers 15 0.142857 +[dz_rarm] +ExplosionTable=snddmg.exp +DefaultEffectSiteName=siteedz_rarm +WeaponDamagePoints=72 +VitalDamageZone=False +DescendOnDestruction=True +CriticalSubsystem=Condenser6 2 0.500000 +CriticalSubsystem=AmmoBinAFC25 20 0.500000 +[dz_rdleg] +ExplosionTable=snddmg.exp +DefaultEffectSiteName=siteedz_rdleg +WeaponDamagePoints=90 +VitalDamageZone=True +LegDamageZone=RightLeg +CriticalSubsystem=HeatSink 100 0.083333 +CriticalSubsystem=Myomers 15 0.142857 +[dz_reardtorso] +ExplosionTable=snddmg.exp +DefaultEffectSiteName=siteedz_reardtorso +WeaponDamagePoints=81 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.083333 +CriticalSubsystem=Reservoir 15 0.250000 +CriticalSubsystem=Condenser5 2 0.500000 +CriticalSubsystem=GeneratorD 15 0.500000 +CriticalSubsystem=Torso 20 0.333333 +[dz_rearltorso] +ExplosionTable=snddmg.exp +DefaultEffectSiteName=siteedz_rearltorso +WeaponDamagePoints=117 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.083333 +CriticalSubsystem=Reservoir 15 0.250000 +CriticalSubsystem=Condenser1 2 0.500000 +CriticalSubsystem=GeneratorA 15 0.500000 +[dz_rearrtorso] +ExplosionTable=snddmg.exp +DefaultEffectSiteName=siteedz_rearrtorso +WeaponDamagePoints=117 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.083333 +CriticalSubsystem=Reservoir 15 0.250000 +CriticalSubsystem=Condenser3 2 0.500000 +CriticalSubsystem=GeneratorC 15 0.500000 +[dz_rearutorso] +ExplosionTable=snddmg.exp +DefaultEffectSiteName=siteedz_rearutorso +WeaponDamagePoints=117 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.083333 +CriticalSubsystem=Reservoir 15 0.250000 +CriticalSubsystem=Condenser2 2 0.500000 +CriticalSubsystem=GeneratorB 15 0.500000 +CriticalSubsystem=Gyroscope 45 0.500000 +[dz_rfoot] +ExplosionTable=snddmg.exp +DefaultEffectSiteName=siteedz_rfoot +WeaponDamagePoints=81 +VitalDamageZone=True +LegDamageZone=RightLeg +CriticalSubsystem=Myomers 15 0.142857 +[dz_rgun] +ExplosionTable=snddmg.exp +DefaultEffectSiteName=siteedz_rgun +WeaponDamagePoints=77 +VitalDamageZone=False +DescendOnDestruction=True +CriticalSubsystem=Condenser6 2 0.500000 +CriticalSubsystem=AmmoBinAFC25 10 0.500000 +CriticalSubsystem=AFC25 20 1.000000 +CriticalSubsystem=ERMLaser_2 15 1.000000 +[dz_rtorso] +ExplosionTable=snddmg.exp +DefaultEffectSiteName=siteedz_rtorso +WeaponDamagePoints=137 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.083333 +CriticalSubsystem=Condenser3 2 0.500000 +CriticalSubsystem=GeneratorC 15 0.500000 +CriticalSubsystem=Avionics 5 0.200000 +CriticalSubsystem=ERSLaser_2 15 1.000000 +[dz_ruleg] +ExplosionTable=snddmg.exp +DefaultEffectSiteName=siteedz_ruleg +WeaponDamagePoints=95 +VitalDamageZone=True +LegDamageZone=RightLeg +CriticalSubsystem=HeatSink 100 0.083333 +CriticalSubsystem=Myomers 15 0.142857 +[dz_searchlight] +ExplosionTable=snddmg.exp +DefaultEffectSiteName=siteedz_searchlight +WeaponDamagePoints=50 +VitalDamageZone=False +CriticalSubsystem=Avionics 5 0.200000 +CriticalSubsystem=HUD 15 0.500000 +CriticalSubsystem=Searchlight 20 1.000000 +CriticalSubsystem=ThermalSight 30 1.000000 +[dz_utorso] +ExplosionTable=snddmg.exp +DefaultEffectSiteName=siteedz_utorso +WeaponDamagePoints=162 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.083333 +CriticalSubsystem=Condenser2 2 0.500000 +CriticalSubsystem=GeneratorB 15 0.500000 +CriticalSubsystem=Avionics 5 0.200000 +CriticalSubsystem=Gyroscope 45 0.500000 +CriticalSubsystem=HUD 15 0.500000 +CriticalSubsystem=AmmoBinLRM10 30 1.000000 +CriticalSubsystem=LRM10 20 1.000000 diff --git a/CONTENT/BT/MODELS/SUNDER.MOD b/CONTENT/BT/MODELS/SUNDER.MOD new file mode 100644 index 0000000..e8e22e2 --- /dev/null +++ b/CONTENT/BT/MODELS/SUNDER.MOD @@ -0,0 +1,135 @@ +[video] +skeleton=snd.skl +skeletona=snx.skl +destroyed=sndd.skl +dzm=sndskin.dzm +dzma=sndskin.dzm + +[audio] +internal=sndint.scp +external=sndext.scp + +[collision] +name=snd_cv.sld + +[gauge] +image=thor_ga.gim + +[gaugeMissionReview] +pixelmap=sun_mr.pcc + +[gamedata] +class=MechClassID +MoverMass=90000.0 +MomentOfInertia=1.75 3.125 1.75 +PositiveLinearDragCoefficients=0.14 0.4 0.07 +NegativeLinearDragCoefficients=0.14 0.2 0.08 +AngularDragCoefficients=0.3 0.5 0.3 +FrictionCoefficient=0.1 +ElasticityCoefficient=0.2 +MinimumBounceSpeed=0.2 +MaxAcceleration=10 +AnimationPrefix=snd +Subsystems=sunder.sub +DamageZones=sunder.dmg +DamageLookupTable=snddmg.tbl +RelativeMechValue=1.0 +LookLeftAngle=60 +LookRightAngle=-60 +LookBackAngle=0 +LookFrontAngle=-15 +WalkingTurnRate=45 +RunningTurnRate=30 +DeathEffect=thrdead +CameraOffset=0.0 15.0 30.0 +DeathSplashDamage=5 +DeathSplashRadius=50 +TimeDelay=0.3 + +MaxUnstableAcceleration=22.0 +UnstableAccelerationEffect=0.7 +UnstableGunTheEngineEffect=1.0 +UnstableSuperStopEffect=0.5 +UnstableHighVelocityEffect=0.4 +UnstableStopedTurnEffect=1.0 +SuperStopAcceleration=20.0 + +ThrottleAdjustment=1.0 + +UpdateTurnDegreeDiffrence=3 +UpdateTurnVelocityDiffrence=0.045 +UpdatePositionDiffrence=0.3 + +ShadowJointName=jointshadow + +[ControlMappings] +Thrustmaster=sndthr.ctl +L4=sndl4.ctl + +[animations] +animationtransition=sndswr.ani +animation=sndwwl.ani +animation=sndwwr.ani +animation=sndwsr.ani +animation=sndwsl.ani +animationtransition=sndwrl.ani +animationtransition=sndwrr.ani +animation=sndrrl.ani +animation=sndrrr.ani +animation=sndrwl.ani +animation=sndrwr.ani +animation=sndbmp.ani +animation=sndbbl.ani +animation=sndbbr.ani +animation=sndbsl.ani +animation=sndbsr.ani +animationtransition=sndsbl.ani +animationtransition=sndsbr.ani + +animationtransition=sndswri.ani +animation=sndwwli.ani +animation=sndwwri.ani +animation=sndwsri.ani +animation=sndwsli.ani +animationtransition=sndwrli.ani +animationtransition=sndwrri.ani +animation=sndrrli.ani +animation=sndrrri.ani +animation=sndrwli.ani +animation=sndrwri.ani +animation=sndbmpi.ani +animation=sndbbli.ani +animation=sndbbri.ani +animation=sndbsli.ani +animation=sndbsri.ani +animationtransition=sndsbli.ani +animationtransition=sndsbri.ani + +animation=sndggl.ani +animation=sndggr.ani +animation=sndgsl.ani +animation=sndgsr.ani +animationtransition=sndwgl.ani +animationtransition=sndwgr.ani + +animation=sndggli.ani +animation=sndggri.ani +animation=sndgsli.ani +animation=sndgsri.ani +animationtransition=sndwgli.ani +animationtransition=sndwgri.ani + +animation=sndsqu.ani +animation=sndsqd.ani +animation=sndsqui.ani +animation=sndsqdi.ani + +animation=sndtrn.ani +animation=sndtrni.ani + +//animation=sndff.ani +//animation=sndfb.ani +//animation=sndfl.ani +//animation=sndfr.ani + + diff --git a/CONTENT/BT/MODELS/SUNDER.SUB b/CONTENT/BT/MODELS/SUNDER.SUB new file mode 100644 index 0000000..8218d21 --- /dev/null +++ b/CONTENT/BT/MODELS/SUNDER.SUB @@ -0,0 +1,230 @@ +[HeatSink] +Type=HeatSinkClassID +Include=heatsnk.sub +HeatSinkCount=13 +SubsystemFlags=DontReplicateFlag + +[Reservoir] +Type=ReservoirClassID +Include=reserve.sub +HeatSink=HeatSink +SegmentPageName=siteeyepoint + +[Condenser1] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser2] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser3] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser4] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser5] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser6] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[GeneratorA] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser1 +SubsystemFlags=DontReplicateFlag + +[GeneratorB] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser2 +SubsystemFlags=DontReplicateFlag + +[GeneratorC] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser3 +SubsystemFlags=DontReplicateFlag + +[GeneratorD] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser5 +SubsystemFlags=DontReplicateFlag + +[Avionics] +Type=SensorClassID +Include=sensor.sub +HeatSink=Condenser2 +VoltageSource=GeneratorD +AuxScreenNumber=5 +SubsystemFlags=DontReplicateFlag + +AuxScreenPlacement=2 +[Myomers] +Type=MyomersClassID +Include=myomers.sub +HeatSink=Condenser5 +VoltageSource=GeneratorD +AuxScreenNumber=6 +SubsystemFlags=DontReplicateFlag + +AuxScreenPlacement=0 +[Gyroscope] +Type=GyroscopeClassID +Include=gyro.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag + +[Torso] +Type=TorsoClassID +Include=torso.sub +WatchedSubsystem=Myomers + +HorizontalRotationPerSecond=30 +VerticalRotationPerSecond=30 +HorizontalLimitRight=-115 +HorizontalLimitLeft=115 +[HUD] +Type=HUDClassID +Include=hud.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag + +[Searchlight] +Type=SearchlightClassID +Include=srchlite.sub +WatchedSubsystem=Avionics +SegmentPageName=sitelight + +[ThermalSight] +Type=ThermalSightClassID +Include=Thermal.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag +[AmmoBinAFC25] +Type=AmmoBinClassID +Include=ammafc25.sub +WatchedSubsystem=AFC25 +AmmoCount=15 +[AFC25] +AmmoBin=AmmoBinAFC25 +Type=ProjectileWeaponClassID +Include=afc25.sub +SegmentPageName=siterugunport +PipPosition=1 +VoltageSource=GeneratorC +HeatSink=Condenser6 +AuxScreenNumber=10 +AuxScreenPlacement=6 +[AmmoBinAFC100] +Type=AmmoBinClassID +Include=amafc100.sub +WatchedSubsystem=AFC100 +AmmoCount=15 +[AFC100] +AmmoBin=AmmoBinAFC100 +Type=ProjectileWeaponClassID +Include=afc100.sub +SegmentPageName=sitelgunport +PipPosition=1 +VoltageSource=GeneratorA +HeatSink=Condenser4 +AuxScreenNumber=1 +AuxScreenPlacement=4 +[ERMLaser_1] +Type=EmitterClassID +Include=ermlaser.sub +SegmentPageName=sitelgunport +PipPosition=1 +VoltageSource=GeneratorA +HeatSink=Condenser4 +AuxScreenNumber=3 +AuxScreenPlacement=4 +[ERMLaser_2] +Type=EmitterClassID +Include=ermlaser.sub +SegmentPageName=siterdgunport +PipPosition=2 +VoltageSource=GeneratorC +HeatSink=Condenser6 +AuxScreenNumber=12 +AuxScreenPlacement=6 +[ERSLaser_1] +Type=EmitterClassID +Include=erslaser.sub +SegmentPageName=siteltorsoport +PipPosition=1 +VoltageSource=GeneratorA +HeatSink=Condenser1 +AuxScreenNumber=4 +AuxScreenPlacement=1 +[ERSLaser_2] +Type=EmitterClassID +Include=erslaser.sub +SegmentPageName=sitertorsoport +PipPosition=2 +VoltageSource=GeneratorC +HeatSink=Condenser3 +AuxScreenNumber=11 +AuxScreenPlacement=3 +[MLaser_1] +Type=EmitterClassID +Include=mlaser.sub +SegmentPageName=siteltorsoport +PipPosition=1 +VoltageSource=GeneratorB +HeatSink=Condenser5 +AuxScreenNumber=7 +AuxScreenPlacement=5 +[MLaser_2] +Type=EmitterClassID +Include=mlaser.sub +SegmentPageName=sitertorsoport +PipPosition=2 +VoltageSource=GeneratorB +HeatSink=Condenser5 +AuxScreenNumber=8 +AuxScreenPlacement=5 +[AmmoBinLRM10] +Type=AmmoBinClassID +Include=ammlrm10.sub +WatchedSubsystem=LRM10 +AmmoCount=18 +[LRM10] +AmmoBin=AmmoBinLRM10 +Type=MissileLauncherClassID +Include=lrm10.sub +SegmentPageName=sitemissleport +PipPosition=1 +VoltageSource=GeneratorB +HeatSink=Condenser2 +AuxScreenNumber=2 +AuxScreenPlacement=2 +[MessageManager] +Type=SubsystemMessageManagerClassID +ExplosionModelFile=majhit 1.0 +TerrainHitExplosion=gndhit +RendererCompensateTime=0.3 +[MechTech] +Type=MechTechClassID +AlarmModel=mechalrm +SubsystemFlags=DontReplicateFlag diff --git a/CONTENT/BT/MODELS/SV2.MOD b/CONTENT/BT/MODELS/SV2.MOD new file mode 100644 index 0000000..8fa8b5b --- /dev/null +++ b/CONTENT/BT/MODELS/SV2.MOD @@ -0,0 +1,8 @@ +[video] +object=sv2s.bgf sv2r.bgf + +[collision] +name=sv2_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/SV2B.MOD b/CONTENT/BT/MODELS/SV2B.MOD new file mode 100644 index 0000000..85f55dc --- /dev/null +++ b/CONTENT/BT/MODELS/SV2B.MOD @@ -0,0 +1,8 @@ +[video] +object=sv2bs.bgf sv2br.bgf + +[collision] +name=sv2b_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/SV2C.MOD b/CONTENT/BT/MODELS/SV2C.MOD new file mode 100644 index 0000000..659f8ee --- /dev/null +++ b/CONTENT/BT/MODELS/SV2C.MOD @@ -0,0 +1,8 @@ +[video] +object=sv2cr.bgf + +[collision] +name=sv2c_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/SV2D.MOD b/CONTENT/BT/MODELS/SV2D.MOD new file mode 100644 index 0000000..02bb8b8 --- /dev/null +++ b/CONTENT/BT/MODELS/SV2D.MOD @@ -0,0 +1,8 @@ +[video] +object=sv2ds.bgf sv2dr.bgf + +[collision] +name=sv2d_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/SV3.MOD b/CONTENT/BT/MODELS/SV3.MOD new file mode 100644 index 0000000..fb6c444 --- /dev/null +++ b/CONTENT/BT/MODELS/SV3.MOD @@ -0,0 +1,8 @@ +[video] +object=sv3s.bgf sv3r.bgf + +[collision] +name=sv3_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/SV3B.MOD b/CONTENT/BT/MODELS/SV3B.MOD new file mode 100644 index 0000000..a587e31 --- /dev/null +++ b/CONTENT/BT/MODELS/SV3B.MOD @@ -0,0 +1,8 @@ +[video] +object=sv3bs.bgf sv3br.bgf + +[collision] +name=sv3b_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/SV3C.MOD b/CONTENT/BT/MODELS/SV3C.MOD new file mode 100644 index 0000000..cc24815 --- /dev/null +++ b/CONTENT/BT/MODELS/SV3C.MOD @@ -0,0 +1,8 @@ +[video] +object=sv3cr.bgf sv3cs.bgf + +[collision] +name=sv3c_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/SV3D.MOD b/CONTENT/BT/MODELS/SV3D.MOD new file mode 100644 index 0000000..3bfcd3f --- /dev/null +++ b/CONTENT/BT/MODELS/SV3D.MOD @@ -0,0 +1,8 @@ +[video] +object=sv3ds.bgf sv3dr.bgf + +[collision] +name=sv3d_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/SW1.MOD b/CONTENT/BT/MODELS/SW1.MOD new file mode 100644 index 0000000..4fc2b9c --- /dev/null +++ b/CONTENT/BT/MODELS/SW1.MOD @@ -0,0 +1,11 @@ +[video] +object=sw1.bgf + +[collision] +name=sw1_cv.sld + +[gauge] +image=sw1_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/SW2.MOD b/CONTENT/BT/MODELS/SW2.MOD new file mode 100644 index 0000000..2a02269 --- /dev/null +++ b/CONTENT/BT/MODELS/SW2.MOD @@ -0,0 +1,11 @@ +[video] +object=sw2.bgf + +[collision] +name=sw2_cv.sld + +[gauge] +image=sw2_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/SW3.MOD b/CONTENT/BT/MODELS/SW3.MOD new file mode 100644 index 0000000..4152ab8 --- /dev/null +++ b/CONTENT/BT/MODELS/SW3.MOD @@ -0,0 +1,11 @@ +[video] +object=sw3.bgf + +[collision] +name=sw3_cv.sld + +[gauge] +image=sw3_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/SW4.MOD b/CONTENT/BT/MODELS/SW4.MOD new file mode 100644 index 0000000..40cc548 --- /dev/null +++ b/CONTENT/BT/MODELS/SW4.MOD @@ -0,0 +1,11 @@ +[video] +object=sw4.bgf + +[collision] +name=sw4_cv.sld + +[gauge] +image=sw4_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/SW5.MOD b/CONTENT/BT/MODELS/SW5.MOD new file mode 100644 index 0000000..d8ade04 --- /dev/null +++ b/CONTENT/BT/MODELS/SW5.MOD @@ -0,0 +1,11 @@ +[video] +object=sw5.bgf + +[collision] +name=sw5_cv.sld + +[gauge] +image=sw5_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/SW6.MOD b/CONTENT/BT/MODELS/SW6.MOD new file mode 100644 index 0000000..c39020e --- /dev/null +++ b/CONTENT/BT/MODELS/SW6.MOD @@ -0,0 +1,11 @@ +[video] +object=sw6.bgf + +[collision] +name=sw6_cv.sld + +[gauge] +image=sw6_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/SWIFTWND.MOD b/CONTENT/BT/MODELS/SWIFTWND.MOD new file mode 100644 index 0000000..42843f2 --- /dev/null +++ b/CONTENT/BT/MODELS/SWIFTWND.MOD @@ -0,0 +1,18 @@ +[video] +object=SWIFTWND.bgf swifts.bgf +rubble=SWIFTD.bgf + +[collision] +name=SWIFTWND.sld + +[gauge] +image=swiftwnd.gim + +[gamedata] +class=CulturalIconClassID +DamageZones=trk.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=trkdead +TimeDelay=0.5 +CrunchExplosionModelFile=stephit + \ No newline at end of file diff --git a/CONTENT/BT/MODELS/TEST.TXT b/CONTENT/BT/MODELS/TEST.TXT new file mode 100644 index 0000000..df01b59 --- /dev/null +++ b/CONTENT/BT/MODELS/TEST.TXT @@ -0,0 +1 @@ +32stub error: Can't find 32RTM.EXE. It must be on the path to run this program. diff --git a/CONTENT/BT/MODELS/TEXT.TXT b/CONTENT/BT/MODELS/TEXT.TXT new file mode 100644 index 0000000..f19d0b2 --- /dev/null +++ b/CONTENT/BT/MODELS/TEXT.TXT @@ -0,0 +1,20 @@ +Random Seed = 950029739 +Processing subsystem_file +Processing control_file + +32loader runtime error: Unhandled exception + + Exception 0E at 0197:0046507E error code 00000004 + + CS=0197 DS=019F ES=019F SS=019F FS=01B7 GS=0000 + EAX=00000000 EBX=00CB02F0 ECX=00000000 EDX=00000000 + EBP=0012CD84 ESP=0012CD7C EDI=00000002 ESI=00000002 + + The invalid instruction was executed at 0046507E + +Module 'C:\REL410\BT\MODELS\MECHBLD.EXE' section 'CODE' offset 0006407E + +[00465076]: EC 53 56 8B 55 08 33 C9 - 8A 02 42 0F BE D8 F6 83 + + The instruction referenced illegal address 00000000 + diff --git a/CONTENT/BT/MODELS/THERMAL.SUB b/CONTENT/BT/MODELS/THERMAL.SUB new file mode 100644 index 0000000..e6e6010 --- /dev/null +++ b/CONTENT/BT/MODELS/THERMAL.SUB @@ -0,0 +1,10 @@ +[ThermalSight] +Type=ThermalSightClassID +ArmorValue=20.0 +WatchedSubsystem=None +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +WeaponDamagePoints=10.0 +VitalSubsystem=False +CriticalHitScoreBonus=0 +MinVoltagePercent=10 diff --git a/CONTENT/BT/MODELS/THOR.DMG b/CONTENT/BT/MODELS/THOR.DMG new file mode 100644 index 0000000..32b6477 --- /dev/null +++ b/CONTENT/BT/MODELS/THOR.DMG @@ -0,0 +1,191 @@ +// This file is intentionally empty and MUST be read-only! +[dz_door] +ExplosionTable=thrdmg.exp +DefaultEffectSiteName=siteedz_door +WeaponDamagePoints=1 +VitalDamageZone=False +[dz_dtorso] +ExplosionTable=thrdmg.exp +DefaultEffectSiteName=siteedz_dtorso +WeaponDamagePoints=160 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.071429 +CriticalSubsystem=Condenser5 2 0.500000 +CriticalSubsystem=GeneratorD 10 0.500000 +CriticalSubsystem=Avionics 5 0.200000 +CriticalSubsystem=Torso 15 0.333333 +[dz_hip] +ExplosionTable=thrdmg.exp +DefaultEffectSiteName=siteedz_hip +WeaponDamagePoints=155 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.071429 +CriticalSubsystem=Myomers 15 0.142857 +CriticalSubsystem=Gyroscope 15 0.333333 +CriticalSubsystem=Torso 15 0.333333 +[dz_larm] +ExplosionTable=thrdmg.exp +DefaultEffectSiteName=siteedz_larm +WeaponDamagePoints=75 +VitalDamageZone=False +DescendOnDestruction=True +CriticalSubsystem=Condenser4 2 0.500000 +[dz_ldleg] +ExplosionTable=thrdmg.exp +DefaultEffectSiteName=siteedz_ldleg +WeaponDamagePoints=95 +VitalDamageZone=True +LegDamageZone=LeftLeg +CriticalSubsystem=HeatSink 100 0.071429 +CriticalSubsystem=Myomers 15 0.142857 +[dz_lfoot] +ExplosionTable=thrdmg.exp +DefaultEffectSiteName=siteedz_lfoot +WeaponDamagePoints=85 +VitalDamageZone=True +LegDamageZone=LeftLeg +CriticalSubsystem=Myomers 15 0.142857 +[dz_lgun] +ExplosionTable=thrdmg.exp +DefaultEffectSiteName=siteedz_lgun +WeaponDamagePoints=80 +VitalDamageZone=False +DescendOnDestruction=True +CriticalSubsystem=Condenser4 2 0.500000 +CriticalSubsystem=ERPPC_1 15 1.000000 +CriticalSubsystem=ERSLaser_1 25 1.000000 +[dz_ltorso] +ExplosionTable=thrdmg.exp +DefaultEffectSiteName=siteedz_ltorso +WeaponDamagePoints=140 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.071429 +CriticalSubsystem=Condenser1 2 0.500000 +CriticalSubsystem=GeneratorA 10 0.500000 +CriticalSubsystem=Avionics 5 0.200000 +CriticalSubsystem=LLaser 30 1.000000 +[dz_luleg] +ExplosionTable=thrdmg.exp +DefaultEffectSiteName=siteedz_luleg +WeaponDamagePoints=100 +VitalDamageZone=True +LegDamageZone=LeftLeg +CriticalSubsystem=HeatSink 100 0.071429 +CriticalSubsystem=Myomers 15 0.142857 +[dz_missle] +ExplosionTable=thrdmg.exp +DefaultEffectSiteName=siteedz_missle +WeaponDamagePoints=45 +VitalDamageZone=False +DescendOnDestruction=True +CriticalSubsystem=HeatSink 100 0.071429 +CriticalSubsystem=AmmoBinLRM15 15 0.500000 +CriticalSubsystem=LRM15 15 1.000000 +[dz_rarm] +ExplosionTable=thrdmg.exp +DefaultEffectSiteName=siteedz_rarm +WeaponDamagePoints=75 +VitalDamageZone=False +DescendOnDestruction=True +CriticalSubsystem=Condenser6 2 0.500000 +[dz_rdleg] +ExplosionTable=thrdmg.exp +DefaultEffectSiteName=siteedz_rdleg +WeaponDamagePoints=95 +VitalDamageZone=True +LegDamageZone=RightLeg +CriticalSubsystem=HeatSink 100 0.071429 +CriticalSubsystem=Myomers 15 0.142857 +[dz_reardtorso] +ExplosionTable=thrdmg.exp +DefaultEffectSiteName=siteedz_reardtorso +WeaponDamagePoints=88 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.071429 +CriticalSubsystem=Reservoir 10 0.250000 +CriticalSubsystem=Condenser5 2 0.500000 +CriticalSubsystem=GeneratorD 10 0.500000 +CriticalSubsystem=Torso 15 0.333333 +[dz_rearltorso] +ExplosionTable=thrdmg.exp +DefaultEffectSiteName=siteedz_rearltorso +WeaponDamagePoints=88 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.071429 +CriticalSubsystem=Reservoir 10 0.250000 +CriticalSubsystem=Condenser1 2 0.500000 +CriticalSubsystem=GeneratorA 10 0.500000 +[dz_rearrtorso] +ExplosionTable=thrdmg.exp +DefaultEffectSiteName=siteedz_rearrtorso +WeaponDamagePoints=88 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.071429 +CriticalSubsystem=Reservoir 10 0.250000 +CriticalSubsystem=Condenser3 2 0.500000 +CriticalSubsystem=GeneratorC 10 0.500000 +[dz_rearutorso] +ExplosionTable=thrdmg.exp +DefaultEffectSiteName=siteedz_rearutorso +WeaponDamagePoints=115 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.071429 +CriticalSubsystem=Reservoir 10 0.250000 +CriticalSubsystem=Condenser2 2 0.500000 +CriticalSubsystem=GeneratorB 10 0.500000 +CriticalSubsystem=Gyroscope 30 0.333333 +[dz_rfoot] +ExplosionTable=thrdmg.exp +DefaultEffectSiteName=siteedz_rfoot +WeaponDamagePoints=85 +VitalDamageZone=True +LegDamageZone=RightLeg +CriticalSubsystem=Myomers 15 0.142857 +[dz_rgun] +ExplosionTable=thrdmg.exp +DefaultEffectSiteName=siteedz_rgun +WeaponDamagePoints=80 +VitalDamageZone=False +DescendOnDestruction=True +CriticalSubsystem=Condenser6 2 0.500000 +CriticalSubsystem=ERPPC_2 15 1.000000 +CriticalSubsystem=ERSLaser_2 25 1.000000 +[dz_rtorso] +ExplosionTable=thrdmg.exp +DefaultEffectSiteName=siteedz_rtorso +WeaponDamagePoints=140 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.071429 +CriticalSubsystem=Condenser3 2 0.500000 +CriticalSubsystem=GeneratorC 10 0.500000 +CriticalSubsystem=Avionics 5 0.200000 +CriticalSubsystem=ERMLaser 15 1.000000 +[dz_ruleg] +ExplosionTable=thrdmg.exp +DefaultEffectSiteName=siteedz_ruleg +WeaponDamagePoints=100 +VitalDamageZone=True +LegDamageZone=RightLeg +CriticalSubsystem=HeatSink 100 0.071429 +CriticalSubsystem=Myomers 15 0.142857 +[dz_searchlight] +ExplosionTable=thrdmg.exp +DefaultEffectSiteName=siteedz_searchlight +WeaponDamagePoints=50 +VitalDamageZone=False +CriticalSubsystem=Avionics 5 0.200000 +CriticalSubsystem=HUD 15 0.500000 +CriticalSubsystem=Searchlight 45 1.000000 +CriticalSubsystem=ThermalSight 30 1.000000 +[dz_utorso] +ExplosionTable=thrdmg.exp +DefaultEffectSiteName=siteedz_utorso +WeaponDamagePoints=150 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.071429 +CriticalSubsystem=Condenser2 2 0.500000 +CriticalSubsystem=GeneratorB 10 0.500000 +CriticalSubsystem=Avionics 5 0.200000 +CriticalSubsystem=Gyroscope 30 0.333333 +CriticalSubsystem=HUD 10 0.500000 +CriticalSubsystem=AmmoBinLRM15 25 0.500000 diff --git a/CONTENT/BT/MODELS/THOR.MOD b/CONTENT/BT/MODELS/THOR.MOD new file mode 100644 index 0000000..a9dc263 --- /dev/null +++ b/CONTENT/BT/MODELS/THOR.MOD @@ -0,0 +1,144 @@ +[video] +skeleton=thr.skl +skeletona=thx.skl +destroyed=thrd.skl +destroyeda=thxd.skl +dzm=thrskin.dzm +dzma=thxskin.dzm + +[audio] +internal=thrint.scp +external=thrext.scp + +[collision] +name=thr_cv.sld + +[gauge] +image=thor_ga.gim + +[gaugeMissionReview] +pixelmap=thor_mr.pcc + +[gamedata] +class=MechClassID +MoverMass=70000.0 +MomentOfInertia=1.75 3.125 1.75 +PositiveLinearDragCoefficients=0.14 0.4 0.07 +NegativeLinearDragCoefficients=0.14 0.2 0.08 +AngularDragCoefficients=0.3 0.5 0.3 +FrictionCoefficient=0.1 +ElasticityCoefficient=0.2 +MinimumBounceSpeed=0.2 +MaxAcceleration=10 +AnimationPrefix=thr +Subsystems=thor.sub +DamageZones=thor.dmg +DamageLookupTable=thrdmg.tbl +RelativeMechValue=1.0 +LookLeftAngle=60 +LookRightAngle=-60 +LookBackAngle=0 +LookFrontAngle=-15 +WalkingTurnRate=55 +RunningTurnRate=30 +DeathEffect=thrdead +CameraOffset=0.0 15.0 30.0 +DeathSplashDamage=5 +DeathSplashRadius=50 +TimeDelay=0.3 + +MaxUnstableAcceleration=22.0 +UnstableAccelerationEffect=0.7 +UnstableGunTheEngineEffect=1.0 +UnstableSuperStopEffect=0.5 +UnstableHighVelocityEffect=0.4 +UnstableStopedTurnEffect=1.0 +SuperStopAcceleration=20.0 + +ThrottleAdjustment=1.0 + +UpdateTurnDegreeDiffrence=3 +UpdateTurnVelocityDiffrence=0.045 +UpdatePositionDiffrence=0.3 + +ShadowJointName=jointshadow + +[ControlMappings] +Thrustmaster=thrthr.ctl +L4=thrl4.ctl + +[animations] +animationtransition=thrswr.ani +animation=thrwwl.ani +animation=thrwwr.ani +animation=thrwsr.ani +animation=thrwsl.ani +animationtransition=thrwrl.ani +animationtransition=thrwrr.ani +animation=thrrrl.ani +animation=thrrrr.ani +animation=thrrwl.ani +animation=thrrwr.ani +animation=thrbmp.ani +animation=thrbbl.ani +animation=thrbbr.ani +animation=thrbsl.ani +animation=thrbsr.ani +animationtransition=thrsbl.ani +animationtransition=thrsbr.ani + +animationtransition=thrswri.ani +animation=thrwwli.ani +animation=thrwwri.ani +animation=thrwsri.ani +animation=thrwsli.ani +animationtransition=thrwrli.ani +animationtransition=thrwrri.ani +animation=thrrrli.ani +animation=thrrrri.ani +animation=thrrwli.ani +animation=thrrwri.ani +animation=thrbmpi.ani +animation=thrbbli.ani +animation=thrbbri.ani +animation=thrbsli.ani +animation=thrbsri.ani +animationtransition=thrsbli.ani +animationtransition=thrsbri.ani + +animation=thrggl.ani +animation=thrggr.ani +animation=thrgsl.ani +animation=thrgsr.ani +animationtransition=thrwgl.ani +animationtransition=thrwgr.ani + +animation=thrggli.ani +animation=thrggri.ani +animation=thrgsli.ani +animation=thrgsri.ani +animationtransition=thrwgli.ani +animationtransition=thrwgri.ani + +animation=thrsqu.ani +animation=thrsqd.ani +animation=thrsqui.ani +animation=thrsqdi.ani + +animation=thrtrn.ani +animation=thrtrni.ani + +//animation=thropn.ani +//animation=thropni.ani + +//animation=thrcls.ani +//animation=thrclsi.ani + +//animation=thrdth.ani + +//animation=thrff.ani +//animation=thrfb.ani +//animation=thrfl.ani +//animation=thrfr.ani + + diff --git a/CONTENT/BT/MODELS/THOR.SUB b/CONTENT/BT/MODELS/THOR.SUB new file mode 100644 index 0000000..f8eb308 --- /dev/null +++ b/CONTENT/BT/MODELS/THOR.SUB @@ -0,0 +1,204 @@ +[HeatSink] +Type=HeatSinkClassID +Include=heatsnk.sub +HeatSinkCount=28 +SubsystemFlags=DontReplicateFlag + +[Reservoir] +Type=ReservoirClassID +Include=reserve.sub +HeatSink=HeatSink +SegmentPageName=siteeyepoint + +[Condenser1] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser2] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser3] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser4] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser5] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser6] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[GeneratorA] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser1 +SubsystemFlags=DontReplicateFlag + +[GeneratorB] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser2 +SubsystemFlags=DontReplicateFlag + +[GeneratorC] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser3 +SubsystemFlags=DontReplicateFlag + +[GeneratorD] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser5 +SubsystemFlags=DontReplicateFlag + +[Avionics] +Type=SensorClassID +Include=sensor.sub +HeatSink=Condenser2 +VoltageSource=GeneratorD +AuxScreenNumber=5 +SubsystemFlags=DontReplicateFlag + +AuxScreenPlacement=2 +[Myomers] +Type=MyomersClassID +Include=myomers.sub +HeatSink=Condenser5 +VoltageSource=GeneratorD +AuxScreenNumber=6 +SubsystemFlags=DontReplicateFlag + +AuxScreenPlacement=0 +[Gyroscope] +Type=GyroscopeClassID +Include=gyro.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag + +[Torso] +Type=TorsoClassID +Include=torso.sub +WatchedSubsystem=Myomers + +HorizontalRotationPerSecond=40 +VerticalRotationPerSecond=30 +HorizontalLimitRight=-190 +HorizontalLimitLeft=190 +[HUD] +Type=HUDClassID +Include=hud.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag + +[Searchlight] +Type=SearchlightClassID +Include=srchlite.sub +WatchedSubsystem=Avionics +SegmentPageName=sitelight + +[ThermalSight] +Type=ThermalSightClassID +Include=Thermal.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag +[ERPPC_1] +Type=PPCClassID +Include=erppc.sub +SegmentPageName=sitelgunport +SiteOffset=0.2 0 0 +PipPosition=1 +VoltageSource=GeneratorA +HeatSink=Condenser4 +AuxScreenNumber=1 +AuxScreenPlacement=4 +[ERPPC_2] +Type=PPCClassID +Include=erppc.sub +SegmentPageName=sitergunport +SiteOffset=0.2 0 0 +PipPosition=2 +VoltageSource=GeneratorC +HeatSink=Condenser6 +AuxScreenNumber=10 +AuxScreenPlacement=6 +[LLaser] +Type=EmitterClassID +Include=llaser.sub +SegmentPageName=siteltorsoport +PipPosition=1 +VoltageSource=GeneratorB +HeatSink=Condenser1 +AuxScreenNumber=2 +AuxScreenPlacement=1 +[ERMLaser] +Type=EmitterClassID +Include=ermlaser.sub +SegmentPageName=sitertorsoport +PipPosition=1 +VoltageSource=GeneratorB +HeatSink=Condenser3 +AuxScreenNumber=9 +AuxScreenPlacement=3 +[ERSLaser_1] +Type=EmitterClassID +Include=erslaser.sub +SegmentPageName=sitelgunport +SiteOffset=-0.2 0 0 +PipPosition=1 +VoltageSource=GeneratorA +HeatSink=Condenser4 +AuxScreenNumber=3 +AuxScreenPlacement=4 +[ERSLaser_2] +Type=EmitterClassID +Include=erslaser.sub +SegmentPageName=sitergunport +SiteOffset=-0.2 0 0 +PipPosition=2 +VoltageSource=GeneratorC +HeatSink=Condenser6 +AuxScreenNumber=12 +AuxScreenPlacement=6 +[AmmoBinLRM15] +Type=AmmoBinClassID +Include=ammlrm15.sub +WatchedSubsystem=LRM15 +AmmoCount=16 +[LRM15] +AmmoBin=AmmoBinLRM15 +Type=MissileLauncherClassID +Include=lrm15.sub +SegmentPageName=sitemissleport +PipPosition=1 +VoltageSource=GeneratorB +HeatSink=Condenser2 +AuxScreenNumber=7 +AuxScreenPlacement=7 +[MessageManager] +Type=SubsystemMessageManagerClassID +ExplosionModelFile=majhit 1.0 +TerrainHitExplosion=gndhit +RendererCompensateTime=0.3 +[MechTech] +Type=MechTechClassID +AlarmModel=mechalrm +SubsystemFlags=DontReplicateFlag diff --git a/CONTENT/BT/MODELS/THR.DMG b/CONTENT/BT/MODELS/THR.DMG new file mode 100644 index 0000000..6c3c92b --- /dev/null +++ b/CONTENT/BT/MODELS/THR.DMG @@ -0,0 +1,121 @@ +// Holds Damage Zone Information +[dz_btorso] +WeaponDamagePoints=424 +CriticalSubsystem=AmmoBinAutoCannon1 10 +CriticalSubsystem=AmmoBinAutoCannon2 10 +CriticalSubsystem=Generator 10 + +[dz_dtorso] +WeaponDamagePoints=228 +CriticalSubsystem=Generator 10 + +[dz_ftorso] +WeaponDamagePoints=307 +CriticalSubsystem=Generator 10 +CriticalSubsystem=AmmoBinAutoCannon1 10 +CriticalSubsystem=AmmoBinAutoCannon2 10 + + +[dz_ltorso] +WeaponDamagePoints=143 +CriticalSubsystem=Generator 5 +CriticalSubsystem=AmmoBinAutoCannon1 10 + + + +[dz_reardtorso] +WeaponDamagePoints=98 +CriticalSubsystem=Generator 5 + +[dz_rearltorso] +WeaponDamagePoints=98 +CriticalSubsystem=Generator 5 +CriticalSubsystem=AmmoBinAutoCannon1 10 + + + +[dz_rearrtorso] +WeaponDamagePoints=98 +CriticalSubsystem=AmmoBinAutoCannon2 10 + +[dz_rearutorso] +WeaponDamagePoints=98 +CriticalSubsystem=Generator 5 +CriticalSubsystem=AmmoBinAutoCannon1 10 +CriticalSubsystem=AmmoBinAutoCannon2 10 + + +[dz_rtorso] +WeaponDamagePoints=143 +CriticalSubsystem=Generator 10 +CriticalSubsystem=AmmoBinAutoCannon1 10 +CriticalSubsystem=AmmoBinAutoCannon2 10 + + +[dz_searchlight] +WeaponDamagePoints=45 +CriticalSubsystem=Power 5 + +[dz_utorso] +WeaponDamagePoints=167 +CriticalSubsystem=Generator 10 +CriticalSubsystem=AmmoBinAutoCannon1 10 +CriticalSubsystem=AmmoBinAutoCannon2 10 + + +[dz_rarm] +WeaponDamagePoints=75 +CriticalSubsystem=Power 5 +CriticalSubsystem=PowerBar 10 + + +[dz_rgun] +WeaponDamagePoints=85 +CriticalSubsystem=AutoCannon2 10 +CriticalSubsystem=ERMLaser3 +CriticalSubsystem=ERMLaser4 +CriticalSubsystem=PowerBar 5 + +[dz_larm] +WeaponDamagePoints=75 +CriticalSubsystem=Power 5 +CriticalSubsystem=PowerBar 10 + +[dz_lgun] +WeaponDamagePoints=85 +CriticalSubsystem=AutoCannon1 10 +CriticalSubsystem=ERMLaser1 +CriticalSubsystem=ERMLaser2 +CriticalSubsystem=PowerBar 5 + +[dz_missle] +WeaponDamagePoints=45 +CriticalSubsystem=LRM 10 + +[dz_luleg] +WeaponDamagePoints=95 +CriticalSubsystem=Power 5 + +[dz_ldleg] +WeaponDamagePoints=90 +CriticalSubsystem=Power 5 + +[dz_lfoot] +WeaponDamagePoints=80 +CriticalSubsystem=Power 5 + +[dz_ruleg] +WeaponDamagePoints=95 +CriticalSubsystem=Power 5 + +[dz_rdleg] +WeaponDamagePoints=90 +CriticalSubsystem=Power 5 + +[dz_rfoot] +WeaponDamagePoints=80 +CriticalSubsystem=Power 5 + +[dz_hip] +WeaponDamagePoints=110 +CriticalSubsystem=Power 5 diff --git a/CONTENT/BT/MODELS/THR1.DMG b/CONTENT/BT/MODELS/THR1.DMG new file mode 100644 index 0000000..1e8d7ea --- /dev/null +++ b/CONTENT/BT/MODELS/THR1.DMG @@ -0,0 +1,193 @@ +// This file is intentionally empty and MUST be read-only! +[dz_door] +ExplosionTable=thr1dmg.exp +DefaultEffectSiteName=siteedz_door +WeaponDamagePoints=1 +VitalDamageZone=False +[dz_dtorso] +ExplosionTable=thr1dmg.exp +DefaultEffectSiteName=siteedz_dtorso +WeaponDamagePoints=160 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.071429 +CriticalSubsystem=Condenser5 2 0.500000 +CriticalSubsystem=GeneratorD 10 0.500000 +CriticalSubsystem=Avionics 5 0.200000 +CriticalSubsystem=Torso 15 0.333333 +[dz_hip] +ExplosionTable=thr1dmg.exp +DefaultEffectSiteName=siteedz_hip +WeaponDamagePoints=155 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.071429 +CriticalSubsystem=Myomers 15 0.142857 +CriticalSubsystem=Gyroscope 15 0.333333 +CriticalSubsystem=Torso 15 0.333333 +[dz_larm] +ExplosionTable=thr1dmg.exp +DefaultEffectSiteName=siteedz_larm +WeaponDamagePoints=75 +VitalDamageZone=False +DescendOnDestruction=True +CriticalSubsystem=Condenser4 2 0.500000 +[dz_ldleg] +ExplosionTable=thr1dmg.exp +DefaultEffectSiteName=siteedz_ldleg +WeaponDamagePoints=95 +VitalDamageZone=True +LegDamageZone=LeftLeg +CriticalSubsystem=HeatSink 100 0.071429 +CriticalSubsystem=Myomers 15 0.142857 +[dz_lfoot] +ExplosionTable=thr1dmg.exp +DefaultEffectSiteName=siteedz_lfoot +WeaponDamagePoints=85 +VitalDamageZone=True +LegDamageZone=LeftLeg +CriticalSubsystem=Myomers 15 0.142857 +[dz_lgun] +ExplosionTable=thr1dmg.exp +DefaultEffectSiteName=siteedz_lgun +WeaponDamagePoints=80 +VitalDamageZone=False +DescendOnDestruction=True +CriticalSubsystem=Condenser4 2 0.500000 +CriticalSubsystem=AFC25_1 15 1.000000 +CriticalSubsystem=LLaser_1 30 1.000000 +[dz_ltorso] +ExplosionTable=thr1dmg.exp +DefaultEffectSiteName=siteedz_ltorso +WeaponDamagePoints=140 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.071429 +CriticalSubsystem=Condenser1 2 0.500000 +CriticalSubsystem=GeneratorA 10 0.500000 +CriticalSubsystem=Avionics 5 0.200000 +CriticalSubsystem=ERSLaser_1 25 1.000000 +CriticalSubsystem=ERSLaser_2 25 1.000000 +[dz_luleg] +ExplosionTable=thr1dmg.exp +DefaultEffectSiteName=siteedz_luleg +WeaponDamagePoints=100 +VitalDamageZone=True +LegDamageZone=LeftLeg +CriticalSubsystem=HeatSink 100 0.071429 +CriticalSubsystem=Myomers 15 0.142857 +[dz_missle] +ExplosionTable=thr1dmg.exp +DefaultEffectSiteName=siteedz_missle +WeaponDamagePoints=45 +VitalDamageZone=False +DescendOnDestruction=True +CriticalSubsystem=HeatSink 100 0.071429 +CriticalSubsystem=AmmoBinLRM10 15 0.500000 +CriticalSubsystem=LRM10 15 1.000000 +[dz_rarm] +ExplosionTable=thr1dmg.exp +DefaultEffectSiteName=siteedz_rarm +WeaponDamagePoints=75 +VitalDamageZone=False +DescendOnDestruction=True +CriticalSubsystem=Condenser6 2 0.500000 +[dz_rdleg] +ExplosionTable=thr1dmg.exp +DefaultEffectSiteName=siteedz_rdleg +WeaponDamagePoints=95 +VitalDamageZone=True +LegDamageZone=RightLeg +CriticalSubsystem=HeatSink 100 0.071429 +CriticalSubsystem=Myomers 15 0.142857 +[dz_reardtorso] +ExplosionTable=thr1dmg.exp +DefaultEffectSiteName=siteedz_reardtorso +WeaponDamagePoints=88 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.071429 +CriticalSubsystem=Reservoir 10 0.250000 +CriticalSubsystem=Condenser5 2 0.500000 +CriticalSubsystem=GeneratorD 10 0.500000 +CriticalSubsystem=Torso 15 0.333333 +[dz_rearltorso] +ExplosionTable=thr1dmg.exp +DefaultEffectSiteName=siteedz_rearltorso +WeaponDamagePoints=88 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.071429 +CriticalSubsystem=Reservoir 10 0.250000 +CriticalSubsystem=Condenser1 2 0.500000 +CriticalSubsystem=GeneratorA 10 0.500000 +[dz_rearrtorso] +ExplosionTable=thr1dmg.exp +DefaultEffectSiteName=siteedz_rearrtorso +WeaponDamagePoints=88 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.071429 +CriticalSubsystem=Reservoir 10 0.250000 +CriticalSubsystem=Condenser3 2 0.500000 +CriticalSubsystem=GeneratorC 10 0.500000 +[dz_rearutorso] +ExplosionTable=thr1dmg.exp +DefaultEffectSiteName=siteedz_rearutorso +WeaponDamagePoints=115 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.071429 +CriticalSubsystem=Reservoir 10 0.250000 +CriticalSubsystem=Condenser2 2 0.500000 +CriticalSubsystem=GeneratorB 10 0.500000 +CriticalSubsystem=Gyroscope 30 0.333333 +[dz_rfoot] +ExplosionTable=thr1dmg.exp +DefaultEffectSiteName=siteedz_rfoot +WeaponDamagePoints=85 +VitalDamageZone=True +LegDamageZone=RightLeg +CriticalSubsystem=Myomers 15 0.142857 +[dz_rgun] +ExplosionTable=thr1dmg.exp +DefaultEffectSiteName=siteedz_rgun +WeaponDamagePoints=80 +VitalDamageZone=False +DescendOnDestruction=True +CriticalSubsystem=Condenser6 2 0.500000 +CriticalSubsystem=AFC25_2 15 1.000000 +CriticalSubsystem=LLaser_2 30 1.000000 +[dz_rtorso] +ExplosionTable=thr1dmg.exp +DefaultEffectSiteName=siteedz_rtorso +WeaponDamagePoints=140 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.071429 +CriticalSubsystem=Condenser3 2 0.500000 +CriticalSubsystem=GeneratorC 10 0.500000 +CriticalSubsystem=Avionics 5 0.200000 +CriticalSubsystem=ERSLaser_3 25 1.000000 +CriticalSubsystem=ERSLaser_4 25 1.000000 +[dz_ruleg] +ExplosionTable=thr1dmg.exp +DefaultEffectSiteName=siteedz_ruleg +WeaponDamagePoints=100 +VitalDamageZone=True +LegDamageZone=RightLeg +CriticalSubsystem=HeatSink 100 0.071429 +CriticalSubsystem=Myomers 15 0.142857 +[dz_searchlight] +ExplosionTable=thr1dmg.exp +DefaultEffectSiteName=siteedz_searchlight +WeaponDamagePoints=50 +VitalDamageZone=False +CriticalSubsystem=Avionics 5 0.200000 +CriticalSubsystem=HUD 15 0.500000 +CriticalSubsystem=Searchlight 45 1.000000 +CriticalSubsystem=ThermalSight 30 1.000000 +[dz_utorso] +ExplosionTable=thr1dmg.exp +DefaultEffectSiteName=siteedz_utorso +WeaponDamagePoints=150 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.071429 +CriticalSubsystem=Condenser2 2 0.500000 +CriticalSubsystem=GeneratorB 10 0.500000 +CriticalSubsystem=Avionics 5 0.200000 +CriticalSubsystem=Gyroscope 30 0.333333 +CriticalSubsystem=HUD 10 0.500000 +CriticalSubsystem=AmmoBinLRM10 25 0.500000 diff --git a/CONTENT/BT/MODELS/THR1.MOD b/CONTENT/BT/MODELS/THR1.MOD new file mode 100644 index 0000000..c59d014 --- /dev/null +++ b/CONTENT/BT/MODELS/THR1.MOD @@ -0,0 +1,136 @@ +[video] +skeleton=thr1.skl +skeletona=thx1.skl +destroyed=thr1d.skl +destroyeda=thx1d.skl +dzm=thr1skin.dzm +dzma=thx1skin.dzm + +[audio] +internal=thr1int.scp +external=thr1ext.scp + +[collision] +name=thr_cv.sld + +[gauge] +image=thor_ga.gim + +[gaugeMissionReview] +pixelmap=thr1_mr.pcc + +[gamedata] +class=MechClassID +MoverMass=70000.0 +MomentOfInertia=1.75 3.125 1.75 +PositiveLinearDragCoefficients=0.14 0.4 0.07 +NegativeLinearDragCoefficients=0.14 0.2 0.08 +AngularDragCoefficients=0.3 0.5 0.3 +FrictionCoefficient=0.1 +ElasticityCoefficient=0.2 +MinimumBounceSpeed=0.2 +MaxAcceleration=10 +AnimationPrefix=thr +Subsystems=thr1.sub +DamageZones=thr1.dmg +DamageLookupTable=thr1dmg.tbl +RelativeMechValue=1.0 +LookLeftAngle=60 +LookRightAngle=-60 +LookBackAngle=0 +LookFrontAngle=-15 +WalkingTurnRate=55 +RunningTurnRate=30 +DeathEffect=thrdead +CameraOffset=0.0 15.0 30.0 +DeathSplashDamage=5 +DeathSplashRadius=50 +TimeDelay=0.3 + +MaxUnstableAcceleration=22.0 +UnstableAccelerationEffect=0.7 +UnstableGunTheEngineEffect=1.0 +UnstableSuperStopEffect=0.5 +UnstableHighVelocityEffect=0.4 +UnstableStopedTurnEffect=1.0 +SuperStopAcceleration=20.0 + +ThrottleAdjustment=1.0 + +UpdateTurnDegreeDiffrence=3 +UpdateTurnVelocityDiffrence=0.045 +UpdatePositionDiffrence=0.3 + +ShadowJointName=jointshadow + +[ControlMappings] +Thrustmaster=thr1thr.ctl +L4=thr1l4.ctl + +[animations] +animationtransition=thrswr.ani +animation=thrwwl.ani +animation=thrwwr.ani +animation=thrwsr.ani +animation=thrwsl.ani +animationtransition=thrwrl.ani +animationtransition=thrwrr.ani +animation=thrrrl.ani +animation=thrrrr.ani +animation=thrrwl.ani +animation=thrrwr.ani +animation=thrbmp.ani +animation=thrbbl.ani +animation=thrbbr.ani +animation=thrbsl.ani +animation=thrbsr.ani +animationtransition=thrsbl.ani +animationtransition=thrsbr.ani + +animationtransition=thrswri.ani +animation=thrwwli.ani +animation=thrwwri.ani +animation=thrwsri.ani +animation=thrwsli.ani +animationtransition=thrwrli.ani +animationtransition=thrwrri.ani +animation=thrrrli.ani +animation=thrrrri.ani +animation=thrrwli.ani +animation=thrrwri.ani +animation=thrbmpi.ani +animation=thrbbli.ani +animation=thrbbri.ani +animation=thrbsli.ani +animation=thrbsri.ani +animationtransition=thrsbli.ani +animationtransition=thrsbri.ani + +animation=thrggl.ani +animation=thrggr.ani +animation=thrgsl.ani +animation=thrgsr.ani +animationtransition=thrwgl.ani +animationtransition=thrwgr.ani + +animation=thrggli.ani +animation=thrggri.ani +animation=thrgsli.ani +animation=thrgsri.ani +animationtransition=thrwgli.ani +animationtransition=thrwgri.ani + +animation=thrsqu.ani +animation=thrsqd.ani +animation=thrsqui.ani +animation=thrsqdi.ani + +animation=thrtrn.ani +animation=thrtrni.ani + +//animation=thrff.ani +//animation=thrfb.ani +//animation=thrfl.ani +//animation=thrfr.ani + + diff --git a/CONTENT/BT/MODELS/THR1.SUB b/CONTENT/BT/MODELS/THR1.SUB new file mode 100644 index 0000000..33185b0 --- /dev/null +++ b/CONTENT/BT/MODELS/THR1.SUB @@ -0,0 +1,238 @@ +[HeatSink] +Type=HeatSinkClassID +Include=heatsnk.sub +HeatSinkCount=13 +SubsystemFlags=DontReplicateFlag + +[Reservoir] +Type=ReservoirClassID +Include=reserve.sub +HeatSink=HeatSink +SegmentPageName=siteeyepoint + +[Condenser1] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser2] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser3] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser4] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser5] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser6] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[GeneratorA] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser1 +SubsystemFlags=DontReplicateFlag + +[GeneratorB] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser2 +SubsystemFlags=DontReplicateFlag + +[GeneratorC] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser3 +SubsystemFlags=DontReplicateFlag + +[GeneratorD] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser5 +SubsystemFlags=DontReplicateFlag + +[Avionics] +Type=SensorClassID +Include=sensor.sub +HeatSink=Condenser2 +VoltageSource=GeneratorD +AuxScreenNumber=5 +SubsystemFlags=DontReplicateFlag + +AuxScreenPlacement=2 +[Myomers] +Type=MyomersClassID +Include=myomers.sub +HeatSink=Condenser5 +VoltageSource=GeneratorD +AuxScreenNumber=6 +SubsystemFlags=DontReplicateFlag + +AuxScreenPlacement=0 +[Gyroscope] +Type=GyroscopeClassID +Include=gyro.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag + +[Torso] +Type=TorsoClassID +Include=torso.sub +WatchedSubsystem=Myomers + +HorizontalRotationPerSecond=40 +VerticalRotationPerSecond=30 +HorizontalLimitRight=-190 +HorizontalLimitLeft=190 +[HUD] +Type=HUDClassID +Include=hud.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag + +[Searchlight] +Type=SearchlightClassID +Include=srchlite.sub +WatchedSubsystem=Avionics +SegmentPageName=sitelight + +[ThermalSight] +Type=ThermalSightClassID +Include=Thermal.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag +[AmmoBinAFC25_1] +Type=AmmoBinClassID +Include=ammafc25.sub +WatchedSubsystem=AFC25_1 +AmmoCount=25 +[AFC25_1] +AmmoBin=AmmoBinAFC25_1 +Type=ProjectileWeaponClassID +Include=afc25.sub +SegmentPageName=sitelgunport +SiteOffset=0.2 0 0 +PipPosition=1 +VoltageSource=GeneratorA +HeatSink=Condenser4 +AuxScreenNumber=1 +AuxScreenPlacement=4 +[AmmoBinAFC25_2] +Type=AmmoBinClassID +Include=ammafc25.sub +WatchedSubsystem=AFC25_2 +AmmoCount=25 +[AFC25_2] +AmmoBin=AmmoBinAFC25_2 +Type=ProjectileWeaponClassID +Include=afc25.sub +SegmentPageName=sitergunport +SiteOffset=0.2 0 0 +PipPosition=2 +VoltageSource=GeneratorC +HeatSink=Condenser6 +AuxScreenNumber=10 +AuxScreenPlacement=6 +[LLaser_1] +Type=EmitterClassID +Include=llaser.sub +SegmentPageName=sitelgunport +SiteOffset=-0.2 0 0 +PipPosition=1 +VoltageSource=GeneratorA +HeatSink=Condenser4 +AuxScreenNumber=2 +AuxScreenPlacement=4 +[LLaser_2] +Type=EmitterClassID +Include=llaser.sub +SegmentPageName=sitergunport +SiteOffset=-0.2 0 0 +PipPosition=2 +VoltageSource=GeneratorC +HeatSink=Condenser6 +AuxScreenNumber=9 +AuxScreenPlacement=6 +[ERSLaser_1] +Type=EmitterClassID +Include=erslaser.sub +SegmentPageName=siteltorsoport +SiteOffset=0.2 0 0 +PipPosition=1 +VoltageSource=GeneratorB +HeatSink=Condenser1 +AuxScreenNumber=3 +AuxScreenPlacement=1 +[ERSLaser_2] +Type=EmitterClassID +Include=erslaser.sub +SegmentPageName=siteltorsoport +SiteOffset=-0.2 0 0 +PipPosition=2 +VoltageSource=GeneratorB +HeatSink=Condenser1 +AuxScreenNumber=4 +AuxScreenPlacement=1 +[ERSLaser_3] +Type=EmitterClassID +Include=erslaser.sub +SegmentPageName=sitertorsoport +SiteOffset=0.2 0 0 +PipPosition=3 +VoltageSource=GeneratorB +HeatSink=Condenser3 +AuxScreenNumber=11 +AuxScreenPlacement=3 +[ERSLaser_4] +Type=EmitterClassID +Include=erslaser.sub +SegmentPageName=sitertorsoport +SiteOffset=-0.2 0 0 +PipPosition=4 +VoltageSource=GeneratorB +HeatSink=Condenser3 +AuxScreenNumber=12 +AuxScreenPlacement=3 +[AmmoBinLRM10] +Type=AmmoBinClassID +Include=ammnrk10.sub +WatchedSubsystem=LRM10 +AmmoCount=12 +[LRM10] +AmmoBin=AmmoBinLRM10 +Type=MissileLauncherClassID +Include=nrk10.sub +SegmentPageName=sitemissleport +PipPosition=1 +VoltageSource=GeneratorB +HeatSink=Condenser2 +AuxScreenNumber=7 +AuxScreenPlacement=7 +[MessageManager] +Type=SubsystemMessageManagerClassID +ExplosionModelFile=majhit 1.0 +TerrainHitExplosion=gndhit +RendererCompensateTime=0.3 +[MechTech] +Type=MechTechClassID +AlarmModel=mechalrm +SubsystemFlags=DontReplicateFlag diff --git a/CONTENT/BT/MODELS/THR1DEAD.MOD b/CONTENT/BT/MODELS/THR1DEAD.MOD new file mode 100644 index 0000000..e70cd7c --- /dev/null +++ b/CONTENT/BT/MODELS/THR1DEAD.MOD @@ -0,0 +1,9 @@ +[video] +object=104 3 4 5 1007 15 1001 + +[audio] +external=brnext.scp + +[gamedata] +class=ExplosionClassID +ExplosionDuration=44.0 diff --git a/CONTENT/BT/MODELS/THR1DMG.EXP b/CONTENT/BT/MODELS/THR1DMG.EXP new file mode 100644 index 0000000..c9b1598 --- /dev/null +++ b/CONTENT/BT/MODELS/THR1DMG.EXP @@ -0,0 +1,28 @@ +[OneDamage] +ExplosionModelFile=dam1hit +DamageLevel=0.2 +TimeDelay=0.0 + +[TwoDamage] +ExplosionModelFile=dam2hit +DamageLevel=0.4 +TimeDelay=0.0 + +[ThreeDamage] +ExplosionModelFile=dam3hit +DamageLevel=0.6 +TimeDelay=0.0 + +[FourDamage] +ExplosionModelFile=dam4hit +DamageLevel=0.8 +TimeDelay=0.0 + +[DestroyedExplosion] +ExplosionModelFile=desthit +GraphicState=Destroyed + +[GoneExplosion] +ExplosionModelFile=desthit +GraphicState=Gone + diff --git a/CONTENT/BT/MODELS/THR1DMG.TBL b/CONTENT/BT/MODELS/THR1DMG.TBL new file mode 100644 index 0000000..3139bc3 --- /dev/null +++ b/CONTENT/BT/MODELS/THR1DMG.TBL @@ -0,0 +1,189 @@ +[LeftFoot] +DamageZone=dz_lfoot 0.5 +DamageZone=dz_ldleg 0.3 +DamageZone=dz_rfoot 0.2 + +[RightFoot] +DamageZone=dz_rfoot 0.5 +DamageZone=dz_rdleg 0.3 +DamageZone=dz_lfoot 0.2 + +[LeftLeg] +DamageZone=dz_luleg 0.4 +DamageZone=dz_ldleg 0.4 +DamageZone=dz_ruleg 0.1 +DamageZone=dz_rdleg 0.1 + +[RightLeg] +DamageZone=dz_ruleg 0.4 +DamageZone=dz_rdleg 0.4 +DamageZone=dz_luleg 0.1 +DamageZone=dz_ldleg 0.1 + +[LeftHip] +DamageZone=dz_luleg 0.5 +DamageZone=dz_hip 0.2 +DamageZone=dz_lgun 0.3 + +[FrontHip] +DamageZone=dz_luleg 0.25 +DamageZone=dz_ruleg 0.25 +DamageZone=dz_hip 0.3 +DamageZone=dz_dtorso 0.2 + +[RearHip] +DamageZone=dz_luleg 0.25 +DamageZone=dz_ruleg 0.25 +DamageZone=dz_hip 0.3 +DamageZone=dz_reardtorso 0.2 + +[RightHip] +DamageZone=dz_ruleg 0.5 +DamageZone=dz_hip 0.2 +DamageZone=dz_rgun 0.3 + +[LeftWaist] +DamageZone=dz_ltorso 0.2 +DamageZone=dz_rearltorso 0.1 +DamageZone=dz_lgun 0.2 +DamageZone=dz_dtorso 0.25 +DamageZone=dz_reardtorso 0.25 + +[FrontWaist] +DamageZone=dz_rgun 0.05 +DamageZone=dz_lgun 0.05 +DamageZone=dz_ltorso 0.25 +DamageZone=dz_rtorso 0.25 +DamageZone=dz_dtorso 0.4 + +[RearWaist] +DamageZone=dz_rgun 0.05 +DamageZone=dz_lgun 0.05 +DamageZone=dz_rearltorso 0.25 +DamageZone=dz_rearrtorso 0.25 +DamageZone=dz_reardtorso 0.4 + +[RightWaist] +DamageZone=dz_rtorso 0.2 +DamageZone=dz_rearrtorso 0.1 +DamageZone=dz_rgun 0.2 +DamageZone=dz_dtorso 0.25 +DamageZone=dz_reardtorso 0.25 + +[LeftChest] +DamageZone=dz_larm 0.3 +DamageZone=dz_ltorso 0.2 +DamageZone=dz_rearltorso 0.2 +DamageZone=dz_dtorso 0.2 +DamageZone=dz_rearutorso 0.1 + +[RightChest] +DamageZone=dz_rarm 0.3 +DamageZone=dz_rtorso 0.2 +DamageZone=dz_rearrtorso 0.2 +DamageZone=dz_dtorso 0.2 +DamageZone=dz_rearutorso 0.1 + +[FrontChest] +DamageZone=dz_larm 0.05 +DamageZone=dz_rarm 0.05 +DamageZone=dz_ltorso 0.2 +DamageZone=dz_rtorso 0.2 +DamageZone=dz_dtorso 0.4 +DamageZone=dz_searchlight 0.05 +DamageZone=dz_missle 0.05 + +[RearChest] +DamageZone=dz_larm 0.05 +DamageZone=dz_rarm 0.05 +DamageZone=dz_rearltorso 0.1 +DamageZone=dz_rearrtorso 0.1 +DamageZone=dz_rearutorso 0.6 +DamageZone=dz_utorso 0.05 +DamageZone=dz_missle 0.05 + +[TopLeft] +DamageZone=dz_utorso 0.4 +DamageZone=dz_missle 0.6 + +[TopRight] +DamageZone=dz_missle 0.4 +DamageZone=dz_utorso 0.6 + +// The data in this table is totally bogus. GDU 12-2-95 +[Layer1] +PieSlice=RightFoot +PieSlice=RightFoot +PieSlice=LeftFoot +PieSlice=LeftFoot +PieSlice=LeftFoot +PieSlice=LeftFoot +PieSlice=RightFoot +PieSlice=RightFoot +RotateWithTorso=False + +[Layer2] +PieSlice=RightLeg +PieSlice=RightLeg +PieSlice=LeftLeg +PieSlice=LeftLeg +PieSlice=LeftLeg +PieSlice=LeftLeg +PieSlice=RightLeg +PieSlice=RightLeg +RotateWithTorso=False + +[Layer3] +PieSlice=RightHip +PieSlice=FrontHip +PieSlice=FrontHip +PieSlice=LeftHip +PieSlice=LeftHip +PieSlice=RearHip +PieSlice=RearHip +PieSlice=RightHip +RotateWithTorso=False + +[Layer4] +PieSlice=RightHip +PieSlice=FrontHip +PieSlice=FrontHip +PieSlice=LeftHip +PieSlice=LeftHip +PieSlice=RearHip +PieSlice=RearHip +PieSlice=RightHip +RotateWithTorso=True + +[Layer5] +PieSlice=RightWaist +PieSlice=FrontWaist +PieSlice=FrontWaist +PieSlice=LeftWaist +PieSlice=LeftWaist +PieSlice=RearWaist +PieSlice=RearWaist +PieSlice=RightWaist +RotateWithTorso=True + +[Layer6] +PieSlice=RightChest +PieSlice=FrontChest +PieSlice=FrontChest +PieSlice=LeftChest +PieSlice=LeftChest +PieSlice=RearChest +PieSlice=RearChest +PieSlice=RightChest +RotateWithTorso=True + +[Layer7] +PieSlice=TopRight +PieSlice=TopRight +PieSlice=TopLeft +PieSlice=TopLeft +PieSlice=TopLeft +PieSlice=TopLeft +PieSlice=TopRight +PieSlice=TopRight +RotateWithTorso=True diff --git a/CONTENT/BT/MODELS/THR1L4.CTL b/CONTENT/BT/MODELS/THR1L4.CTL new file mode 100644 index 0000000..dc7fd99 --- /dev/null +++ b/CONTENT/BT/MODELS/THR1L4.CTL @@ -0,0 +1,1053 @@ +[StickPosition_JP] +//----------------------------------------------------------------------- +// Joystick +//----------------------------------------------------------------------- +IOMapping=JoystickPhysical +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=StickPosition +Mode=ModeAlwaysActive + +[Throttle_ST] +//----------------------------------------------------------------------- +// Throttle +//----------------------------------------------------------------------- +IOMapping=ScalarThrottle +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=ThrottlePosition +Mode=ModeAlwaysActive + +//----------------------------------------------------------------------- +// Misc. switches +//----------------------------------------------------------------------- +[ReverseThrust_BT1] +IOMapping=ButtonThrottle1 +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=ReverseThrust +Mode=ModeAlwaysActive + +[TorsoCenter_BJHU] +IOMapping=ButtonJoystickHatUp +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoCenter +Mode=ModeAlwaysActive + +[LookLeft_BJHL] +IOMapping=ButtonJoystickHatLeft +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=LookLeft +Mode=ModeAlwaysActive + +[LookRight_BJHR] +IOMapping=ButtonJoystickHatRight +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=LookRight +Mode=ModeAlwaysActive + +[LookBack_BJHD] +IOMapping=ButtonJoystickHatDown +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=LookBehind +Mode=ModeAlwaysActive + +//----------------------------------------------------------------------- +// Secondary mappings +//----------------------------------------------------------------------- +[Button_Sec_1] // Zoom radar in (magnify image) +IOMapping=ButtonSecondary1 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=ZoomIn +Mode=ModeAlwaysActive + +[Button_Sec_2] // Zoom radar out (reduce image) +IOMapping=ButtonSecondary2 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=ZoomOut +Mode=ModeAlwaysActive + +// +// 'Heat vision' mapped to secondary +// SGM 1/6/97 + +[Button_Sec_3] // Toggle heat vision +IOMapping=ButtonSecondary3 +Type=EventMapping +Subsystem=ThermalSight +MessageID=ToggleLamp +Mode=ModeAlwaysActive + +// +// 'Duck' remapped to real message and location. +// GDU 7/9/96 + +[Button_Sec_4] // Request crouch position +IOMapping=ButtonSecondary4 +Type=EventMapping +MessageID=DuckRequest +Mode=ModeAlwaysActive + +[Button_Sec_5] // Toggle searchlight +IOMapping=ButtonSecondary5 +Type=EventMapping +Subsystem=Searchlight +MessageID=ToggleLamp +Mode=ModeAlwaysActive + +[Button_Sec_6] // Cycle through damage display modes +IOMapping=ButtonSecondary6 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=CycleDisplayMode +Mode=ModeAlwaysActive + +[Button_Sec_7] // Cycle through control modes +IOMapping=ButtonSecondary7 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=CycleControlMode +Mode=ModeAlwaysActive + +// ButtonSecondary8 presently unused + +[Button_Sec_9] // Toggle generator 'a' +IOMapping=ButtonSecondary9 +Type=EventMapping +Subsystem=GeneratorA +MessageID=ToggleGeneratorOnOff +Mode=ModeAlwaysActive + +[Button_Sec_10] // Toggle generator 'b' +IOMapping=ButtonSecondary10 +Type=EventMapping +Subsystem=GeneratorB +MessageID=ToggleGeneratorOnOff +Mode=ModeAlwaysActive + +[Button_Sec_11] // Toggle generator 'c' +IOMapping=ButtonSecondary11 +Type=EventMapping +Subsystem=GeneratorC +MessageID=ToggleGeneratorOnOff +Mode=ModeAlwaysActive + +[Button_Sec_12] // Toggle generator 'd' +IOMapping=ButtonSecondary12 +Type=EventMapping +Subsystem=GeneratorD +MessageID=ToggleGeneratorOnOff +Mode=ModeAlwaysActive + +//----------------------------------------- +// Heat Management Screen Mappings +//----------------------------------------- +[Condenser1_Button] +IOMapping=ButtonAuxUpperLeft1 +Type=EventMapping +Subsystem=Condenser1 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Condenser2_Button] +IOMapping=ButtonAuxUpperLeft2 +Type=EventMapping +Subsystem=Condenser2 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Condenser3_Button] +IOMapping=ButtonAuxUpperLeft3 +Type=EventMapping +Subsystem=Condenser3 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Reservoir_Button] +IOMapping=ButtonAuxUpperLeft4 +Type=EventMapping +Subsystem=Reservoir +MessageID=InjectCoolant +Mode=ModeAlwaysActive + +[Condenser4_Button] +IOMapping=ButtonAuxUpperLeft5 +Type=EventMapping +Subsystem=Condenser4 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Condenser5_Button] +IOMapping=ButtonAuxUpperLeft6 +Type=EventMapping +Subsystem=Condenser5 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Condenser6_Button] +IOMapping=ButtonAuxUpperLeft7 +Type=EventMapping +Subsystem=Condenser6 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Reduce_Button] +IOMapping=ButtonAuxUpperLeft8 +Type=EventMapping +MessageID=BalanceCoolant +Mode=ModeAlwaysActive + +//----------------------------------------------------------------------- +// Aux 1 mappings +//----------------------------------------------------------------------- +//------------------------------------------ +// Aux 1 'Quad screen' mappings +//------------------------------------------ +[MFD1_to_Mode_1] // To mode 1 +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Eng1 +Mode=ModeMFD1Quad + +[MFD1_Configure_Trigger_1] // Configure +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Subsystem=AFC25_1 +MessageID=ConfigureMappables +Mode=ModeMFD1Quad + +[MFD1_to_Mode_2] // To mode 2 +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Eng2 +Mode=ModeMFD1Quad + +[MFD1_Configure_Trigger_2] // Configure +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Subsystem=LLaser_1 +MessageID=ConfigureMappables +Mode=ModeMFD1Quad + +[MFD1_to_Mode_3] // To mode 3 +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Eng3 +Mode=ModeMFD1Quad + +[MFD1_Configure_Trigger_3] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Subsystem=ERSLaser_1 +MessageID=ConfigureMappables +Mode=ModeMFD1Quad + +[MFD1_to_Mode_4] // To mode 4 +IOMapping=ButtonAuxLowerLeft7 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Eng4 +Mode=ModeMFD1Quad + +[MFD1_Configure_Trigger_4] // Configure +IOMapping=ButtonAuxLowerLeft8 +Type=EventMapping +Subsystem=ERSLaser_2 +MessageID=ConfigureMappables +Mode=ModeMFD1Quad + +//---------------------------------------------- +// Aux 1 'Mode 1' mappings, AuxScreenNumber=1 +//---------------------------------------------- +[Aux_1_Mode_1_to_MFD1] +IOMapping=ButtonAuxLowerLeft8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Quad +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_Select_GeneratorA] +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Subsystem=AFC25_1 +MessageID=SelectGeneratorA +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_Select_GeneratorB] +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Subsystem=AFC25_1 +MessageID=SelectGeneratorB +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_Select_GeneratorC] +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Subsystem=AFC25_1 +MessageID=SelectGeneratorC +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_Select_GeneratorD] +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Subsystem=AFC25_1 +MessageID=SelectGeneratorD +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_OPTION] +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Subsystem=AFC25_1 +MessageID=EjectAmmo +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Subsystem=AFC25_1 +MessageID=ToggleGeneratorMode +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_ToggleCooling] +IOMapping=ButtonAuxLowerLeft7 +Type=EventMapping +Subsystem=AFC25_1 +MessageID=ToggleCooling +Mode=ModeMFD1Eng1 + +//-------------------------------------------- +// Aux 1 'Mode 2' mappings, AuxScreenNumber=2 +//-------------------------------------------- +[Aux_1_Mode_2_to_MFD1] +IOMapping=ButtonAuxLowerLeft8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Quad +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_Select_GeneratorA] +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Subsystem=LLaser_1 +MessageID=SelectGeneratorA +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_Select_GeneratorB] +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Subsystem=LLaser_1 +MessageID=SelectGeneratorB +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_Select_GeneratorC] +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Subsystem=LLaser_1 +MessageID=SelectGeneratorC +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_Select_GeneratorD] +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Subsystem=LLaser_1 +MessageID=SelectGeneratorD +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_OPTION] +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Subsystem=LLaser_1 +MessageID=ToggleSeekVoltage +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Subsystem=LLaser_1 +MessageID=ToggleGeneratorMode +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_ToggleCooling] +IOMapping=ButtonAuxLowerLeft7 +Type=EventMapping +Subsystem=LLaser_1 +MessageID=ToggleCooling +Mode=ModeMFD1Eng2 + +//--------------------------------------------- +// Aux 1 'Mode 3' mappings, AuxScreenNumber=3 +//--------------------------------------------- +[Aux_1_Mode_3_to_MFD1] +IOMapping=ButtonAuxLowerLeft8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Quad +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_Select_GeneratorA] +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Subsystem=ERSLaser_1 +MessageID=SelectGeneratorA +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_Select_GeneratorB] +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Subsystem=ERSLaser_1 +MessageID=SelectGeneratorB +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_Select_GeneratorC] +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Subsystem=ERSLaser_1 +MessageID=SelectGeneratorC +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_Select_GeneratorD] +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Subsystem=ERSLaser_1 +MessageID=SelectGeneratorD +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_OPTION] +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Subsystem=ERSLaser_1 +MessageID=ToggleSeekVoltage +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Subsystem=ERSLaser_1 +MessageID=ToggleGeneratorMode +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_ToggleCooling] +IOMapping=ButtonAuxLowerLeft7 +Type=EventMapping +Subsystem=ERSLaser_1 +MessageID=ToggleCooling +Mode=ModeMFD1Eng3 + +//-------------------------------------------- +// Aux 1 "Mode 4" Mappings, AuxScreenNumber=4 +//-------------------------------------------- +[Aux_1_Mode_4_to_MFD1] +IOMapping=ButtonAuxLowerLeft8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Quad +Mode=ModeMFD1Eng4 + +[Aux_1_Mode_4_Select_GeneratorA] +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Subsystem=ERSLaser_2 +MessageID=SelectGeneratorA +Mode=ModeMFD1Eng4 + +[Aux_1_Mode_4_Select_GeneratorB] +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Subsystem=ERSLaser_2 +MessageID=SelectGeneratorB +Mode=ModeMFD1Eng4 + +[Aux_1_Mode_4_Select_GeneratorC] +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Subsystem=ERSLaser_2 +MessageID=SelectGeneratorC +Mode=ModeMFD1Eng4 + +[Aux_1_Mode_4_Select_GeneratorD] +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Subsystem=ERSLaser_2 +MessageID=SelectGeneratorD +Mode=ModeMFD1Eng4 + +[Aux_1_Mode_4_OPTION] +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Subsystem=ERSLaser_2 +MessageID=ToggleSeekVoltage +Mode=ModeMFD1Eng4 + +[Aux_1_Mode_4_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Subsystem=ERSLaser_2 +MessageID=ToggleGeneratorMode +Mode=ModeMFD1Eng4 + +[Aux_1_Mode_4_ToggleCooling] +IOMapping=ButtonAuxLowerLeft7 +Type=EventMapping +Subsystem=ERSLaser_2 +MessageID=ToggleCooling +Mode=ModeMFD1Eng4 + + +//----------------------------------------------------------------------- +// Aux 2 mappings +//----------------------------------------------------------------------- +//------------------------------------------ +// Aux 2 'Quad screen' mappings +//------------------------------------------ +[MFD2_to_Mode_1] +IOMapping=ButtonAuxUpperCenter1 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Eng1 +Mode=ModeMFD2Quad + +[MFD2_to_Mode_2] +IOMapping=ButtonAuxUpperCenter3 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Eng2 +Mode=ModeMFD2Quad + +[MFD2_to_Mode_3] +IOMapping=ButtonAuxUpperCenter5 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Eng3 +Mode=ModeMFD2Quad + +[MFD2_Configure_Trigger_3] +IOMapping=ButtonAuxUpperCenter6 +Type=EventMapping +Subsystem=LRM10 +MessageID=ConfigureMappables +Mode=ModeMFD2Quad + +[Aux_2_Mode_1_to_MFD2] +IOMapping=ButtonAuxUpperCenter8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Quad +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_Select_GeneratorA] +IOMapping=ButtonAuxUpperCenter1 +Type=EventMapping +Subsystem=Avionics +MessageID=SelectGeneratorA +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_Select_GeneratorB] +IOMapping=ButtonAuxUpperCenter2 +Type=EventMapping +Subsystem=Avionics +MessageID=SelectGeneratorB +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_Select_GeneratorC] +IOMapping=ButtonAuxUpperCenter3 +Type=EventMapping +Subsystem=Avionics +MessageID=SelectGeneratorC +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_Select_GeneratorD] +IOMapping=ButtonAuxUpperCenter4 +Type=EventMapping +Subsystem=Avionics +MessageID=SelectGeneratorD +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_ToggleGeneratorMode] +IOMapping=ButtonAuxUpperCenter6 +Type=EventMapping +Subsystem=Avionics +MessageID=ToggleGeneratorMode +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_ToggleCooling] +IOMapping=ButtonAuxUpperCenter7 +Type=EventMapping +Subsystem=Avionics +MessageID=ToggleCooling +Mode=ModeMFD2Eng1 + +//-------------------------------------------- +// Aux 2 'Mode 2' mappings, AuxScreenNumber=10 +//-------------------------------------------- +[Aux_2_Mode_2_to_MFD2] +IOMapping=ButtonAuxUpperCenter8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Quad +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_Select_GeneratorA] +IOMapping=ButtonAuxUpperCenter1 +Type=EventMapping +Subsystem=Myomers +MessageID=SelectGeneratorA +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_Select_GeneratorB] +IOMapping=ButtonAuxUpperCenter2 +Type=EventMapping +Subsystem=Myomers +MessageID=SelectGeneratorB +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_Select_GeneratorC] +IOMapping=ButtonAuxUpperCenter3 +Type=EventMapping +Subsystem=Myomers +MessageID=SelectGeneratorC +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_Select_GeneratorD] +IOMapping=ButtonAuxUpperCenter4 +Type=EventMapping +Subsystem=Myomers +MessageID=SelectGeneratorD +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_OPTION] +IOMapping=ButtonAuxUpperCenter5 +Type=EventMapping +Subsystem=Myomers +MessageID=ToggleSeekVoltage +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_ToggleGeneratorMode] +IOMapping=ButtonAuxUpperCenter6 +Type=EventMapping +Subsystem=Myomers +MessageID=ToggleGeneratorMode +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_ToggleCooling] +IOMapping=ButtonAuxUpperCenter7 +Type=EventMapping +Subsystem=Myomers +MessageID=ToggleCooling +Mode=ModeMFD2Eng2 + +//-------------------------------------------- +// Aux 3 'Mode 3' mappings, AuxScreenNumber=11 +//-------------------------------------------- +[Aux_2_Mode_3_to_MFD2] +IOMapping=ButtonAuxUpperCenter8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Quad +Mode=ModeMFD2Eng3 + +[Aux_2_Mode_3_Select_GeneratorA] +IOMapping=ButtonAuxUpperCenter1 +Type=EventMapping +Subsystem=LRM10 +MessageID=SelectGeneratorA +Mode=ModeMFD2Eng3 + +[Aux_2_Mode_3_Select_GeneratorB] +IOMapping=ButtonAuxUpperCenter2 +Type=EventMapping +Subsystem=LRM10 +MessageID=SelectGeneratorB +Mode=ModeMFD2Eng3 + +[Aux_2_Mode_3_Select_GeneratorC] +IOMapping=ButtonAuxUpperCenter3 +Type=EventMapping +Subsystem=LRM10 +MessageID=SelectGeneratorC +Mode=ModeMFD2Eng3 + +[Aux_2_Mode_3_Select_GeneratorD] +IOMapping=ButtonAuxUpperCenter4 +Type=EventMapping +Subsystem=LRM10 +MessageID=SelectGeneratorD +Mode=ModeMFD2Eng3 + +[Aux_2_Mode_3_OPTION] +IOMapping=ButtonAuxUpperCenter5 +Type=EventMapping +Subsystem=LRM10 +MessageID=EjectAmmo +Mode=ModeMFD2Eng3 + +[Aux_2_Mode_3_ToggleGeneratorMode] +IOMapping=ButtonAuxUpperCenter6 +Type=EventMapping +Subsystem=LRM10 +MessageID=ToggleGeneratorMode +Mode=ModeMFD2Eng3 + +[Aux_2_Mode_3_ToggleCooling] +IOMapping=ButtonAuxUpperCenter7 +Type=EventMapping +Subsystem=LRM10 +MessageID=ToggleCooling +Mode=ModeMFD2Eng3 + +//--------------------------------------------- +// Aux 3 'Mode 4' mappings, AuxScreenNumber=12 +//--------------------------------------------- +[MFD3_to_Mode_1] +IOMapping=ButtonAuxLowerRight1 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Eng1 +Mode=ModeMFD3Quad + +[MFD3_Configure_Trigger_1] +IOMapping=ButtonAuxLowerRight2 +Type=EventMapping +Subsystem=LLaser_2 +MessageID=ConfigureMappables +Mode=ModeMFD3Quad + +[MFD3_to_Mode_2] +IOMapping=ButtonAuxLowerRight3 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Eng2 +Mode=ModeMFD3Quad + +[MFD3_Configure_Trigger_2] +IOMapping=ButtonAuxLowerRight4 +Type=EventMapping +Subsystem=AFC25_2 +MessageID=ConfigureMappables +Mode=ModeMFD3Quad + +[MFD3_to_Mode_3] +IOMapping=ButtonAuxLowerRight5 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Eng3 +Mode=ModeMFD3Quad + +[MFD3_Configure_Trigger_3] +IOMapping=ButtonAuxLowerRight6 +Type=EventMapping +Subsystem=ERSLaser_3 +MessageID=ConfigureMappables +Mode=ModeMFD3Quad + +[MFD3_to_Mode_4] +IOMapping=ButtonAuxLowerRight7 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Eng4 +Mode=ModeMFD3Quad + +[MFD3_Configure_Trigger_4] +IOMapping=ButtonAuxLowerRight8 +Type=EventMapping +Subsystem=ERSLaser_4 +MessageID=ConfigureMappables +Mode=ModeMFD3Quad + +//-------------------------------------------- +// Aux 3 'Mode 1' mappings, AuxScreenNumber=9 +//-------------------------------------------- +[Aux_3_Mode_1_to_MFD3] +IOMapping=ButtonAuxLowerRight8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Quad +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_Select_GeneratorA] +IOMapping=ButtonAuxLowerRight1 +Type=EventMapping +Subsystem=LLaser_2 +MessageID=SelectGeneratorA +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_Select_GeneratorB] +IOMapping=ButtonAuxLowerRight2 +Type=EventMapping +Subsystem=LLaser_2 +MessageID=SelectGeneratorB +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_Select_GeneratorC] +IOMapping=ButtonAuxLowerRight3 +Type=EventMapping +Subsystem=LLaser_2 +MessageID=SelectGeneratorC +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_Select_GeneratorD] +IOMapping=ButtonAuxLowerRight4 +Type=EventMapping +Subsystem=LLaser_2 +MessageID=SelectGeneratorD +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_OPTION] +IOMapping=ButtonAuxLowerRight5 +Type=EventMapping +Subsystem=LLaser_2 +MessageID=ToggleSeekVoltage +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerRight6 +Type=EventMapping +Subsystem=LLaser_2 +MessageID=ToggleGeneratorMode +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_ToggleCooling] +IOMapping=ButtonAuxLowerRight7 +Type=EventMapping +Subsystem=LLaser_2 +MessageID=ToggleCooling +Mode=ModeMFD3Eng1 + +//-------------------------------------------- +// Aux 3 'Mode 2' mappings, AuxScreenNumber=10 +//-------------------------------------------- +[Aux_3_Mode_2_to_MFD3] +IOMapping=ButtonAuxLowerRight8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Quad +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_Select_GeneratorA] +IOMapping=ButtonAuxLowerRight1 +Type=EventMapping +Subsystem=AFC25_2 +MessageID=SelectGeneratorA +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_Select_GeneratorB] +IOMapping=ButtonAuxLowerRight2 +Type=EventMapping +Subsystem=AFC25_2 +MessageID=SelectGeneratorB +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_Select_GeneratorC] +IOMapping=ButtonAuxLowerRight3 +Type=EventMapping +Subsystem=AFC25_2 +MessageID=SelectGeneratorC +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_Select_GeneratorD] +IOMapping=ButtonAuxLowerRight4 +Type=EventMapping +Subsystem=AFC25_2 +MessageID=SelectGeneratorD +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_OPTION] +IOMapping=ButtonAuxLowerRight5 +Type=EventMapping +Subsystem=AFC25_2 +MessageID=EjectAmmo +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerRight6 +Type=EventMapping +Subsystem=AFC25_2 +MessageID=ToggleGeneratorMode +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_ToggleCooling] +IOMapping=ButtonAuxLowerRight7 +Type=EventMapping +Subsystem=AFC25_2 +MessageID=ToggleCooling +Mode=ModeMFD3Eng2 + +//-------------------------------------------- +// Aux 3 'Mode 3' mappings, AuxScreenNumber=11 +//-------------------------------------------- +[Aux_3_Mode_3_to_MFD3] +IOMapping=ButtonAuxLowerRight8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Quad +Mode=ModeMFD3Eng3 + +[Aux_3_Mode_3_Select_GeneratorA] +IOMapping=ButtonAuxLowerRight1 +Type=EventMapping +Subsystem=ERSLaser_3 +MessageID=SelectGeneratorA +Mode=ModeMFD3Eng3 + +[Aux_3_Mode_3_Select_GeneratorB] +IOMapping=ButtonAuxLowerRight2 +Type=EventMapping +Subsystem=ERSLaser_3 +MessageID=SelectGeneratorB +Mode=ModeMFD3Eng3 + +[Aux_3_Mode_3_Select_GeneratorC] +IOMapping=ButtonAuxLowerRight3 +Type=EventMapping +Subsystem=ERSLaser_3 +MessageID=SelectGeneratorC +Mode=ModeMFD3Eng3 + +[Aux_3_Mode_3_Select_GeneratorD] +IOMapping=ButtonAuxLowerRight4 +Type=EventMapping +Subsystem=ERSLaser_3 +MessageID=SelectGeneratorD +Mode=ModeMFD3Eng3 + +[Aux_3_Mode_3_OPTION] +IOMapping=ButtonAuxLowerRight5 +Type=EventMapping +Subsystem=ERSLaser_3 +MessageID=ToggleSeekVoltage +Mode=ModeMFD3Eng3 + +[Aux_3_Mode_3_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerRight6 +Type=EventMapping +Subsystem=ERSLaser_3 +MessageID=ToggleGeneratorMode +Mode=ModeMFD3Eng3 + +[Aux_3_Mode_3_ToggleCooling] +IOMapping=ButtonAuxLowerRight7 +Type=EventMapping +Subsystem=ERSLaser_3 +MessageID=ToggleCooling +Mode=ModeMFD3Eng3 + +//--------------------------------------------- +// Aux 3 'Mode 4' mappings, AuxScreenNumber=12 +//--------------------------------------------- +[Aux_3_Mode_4_to_MFD3] +IOMapping=ButtonAuxLowerRight8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Quad +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_Select_GeneratorA] +IOMapping=ButtonAuxLowerRight1 +Type=EventMapping +Subsystem=ERSLaser_4 +MessageID=SelectGeneratorA +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_Select_GeneratorB] +IOMapping=ButtonAuxLowerRight2 +Type=EventMapping +Subsystem=ERSLaser_4 +MessageID=SelectGeneratorB +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_Select_GeneratorC] +IOMapping=ButtonAuxLowerRight3 +Type=EventMapping +Subsystem=ERSLaser_4 +MessageID=SelectGeneratorC +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_Select_GeneratorD] +IOMapping=ButtonAuxLowerRight4 +Type=EventMapping +Subsystem=ERSLaser_4 +MessageID=SelectGeneratorD +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_OPTION] +IOMapping=ButtonAuxLowerRight5 +Type=EventMapping +Subsystem=ERSLaser_4 +MessageID=ToggleSeekVoltage +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerRight6 +Type=EventMapping +Subsystem=ERSLaser_4 +MessageID=ToggleGeneratorMode +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_ToggleCooling] +IOMapping=ButtonAuxLowerRight7 +Type=EventMapping +Subsystem=ERSLaser_4 +MessageID=ToggleCooling +Mode=ModeMFD3Eng4 +[AFC25_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=AFC25_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[AFC25_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=AFC25_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[LLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=LLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[LLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=LLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_3_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser_3 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_4_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser_4 +AttributeID=TriggerState +Mode=ModeNonMapping +[LRM10_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=LRM10 +AttributeID=TriggerState +Mode=ModeNonMapping diff --git a/CONTENT/BT/MODELS/THR1THR.CTL b/CONTENT/BT/MODELS/THR1THR.CTL new file mode 100644 index 0000000..fa31023 --- /dev/null +++ b/CONTENT/BT/MODELS/THR1THR.CTL @@ -0,0 +1,75 @@ +[StickPosition_JP] +IOMapping=JoystickPhysical +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=StickPosition +Mode=ModeAlwaysActive + +[TorsoLeft_BJHL] +IOMapping=ButtonJoystickHatLeft +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoLeft +Mode=ModeAlwaysActive + +[TorsoRight_BJHR] +IOMapping=ButtonJoystickHatRight +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoRight +Mode=ModeAlwaysActive + +[AFC25_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=AFC25_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[AFC25_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=AFC25_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[LLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=LLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[LLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=LLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_3_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser_3 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_4_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser_4 +AttributeID=TriggerState +Mode=ModeNonMapping +[LRM10_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=LRM10 +AttributeID=TriggerState +Mode=ModeNonMapping diff --git a/CONTENT/BT/MODELS/THR6.MOD b/CONTENT/BT/MODELS/THR6.MOD new file mode 100644 index 0000000..08e6e3c --- /dev/null +++ b/CONTENT/BT/MODELS/THR6.MOD @@ -0,0 +1,136 @@ +[video] +skeleton=thr.skl +skeletona=thx.skl +destroyed=thrd.skl +destroyeda=thxd.skl +dzm=thrskin.dzm +dzma=thxskin.dzm + +[audio] +internal=thr6int.scp +external=thr6ext.scp + +[collision] +name=thr_cv.sld + +[gauge] +image=thor_ga.gim + +[gaugeMissionReview] +pixelmap=thr6_mr.pcc + +[gamedata] +class=MechClassID +MoverMass=70000.0 +MomentOfInertia=1.75 3.125 1.75 +PositiveLinearDragCoefficients=0.14 0.4 0.07 +NegativeLinearDragCoefficients=0.14 0.2 0.08 +AngularDragCoefficients=0.3 0.5 0.3 +FrictionCoefficient=0.1 +ElasticityCoefficient=0.2 +MinimumBounceSpeed=0.2 +MaxAcceleration=10 +AnimationPrefix=thr +Subsystems=thr6.sub +DamageZones=thr6.dmg +DamageLookupTable=thr6dmg.tbl +RelativeMechValue=1.0 +LookLeftAngle=60 +LookRightAngle=-60 +LookBackAngle=0 +LookFrontAngle=-15 +WalkingTurnRate=55 +RunningTurnRate=30 +DeathEffect=thrdead +CameraOffset=0.0 15.0 30.0 +DeathSplashDamage=5 +DeathSplashRadius=50 +TimeDelay=0.3 + +MaxUnstableAcceleration=22.0 +UnstableAccelerationEffect=0.7 +UnstableGunTheEngineEffect=1.0 +UnstableSuperStopEffect=0.5 +UnstableHighVelocityEffect=0.4 +UnstableStopedTurnEffect=1.0 +SuperStopAcceleration=20.0 + +ThrottleAdjustment=1.0 + +UpdateTurnDegreeDiffrence=3 +UpdateTurnVelocityDiffrence=0.045 +UpdatePositionDiffrence=0.3 + +ShadowJointName=jointshadow + +[ControlMappings] +Thrustmaster=thr6thr.ctl +L4=thr6l4.ctl + +[animations] +animationtransition=thrswr.ani +animation=thrwwl.ani +animation=thrwwr.ani +animation=thrwsr.ani +animation=thrwsl.ani +animationtransition=thrwrl.ani +animationtransition=thrwrr.ani +animation=thrrrl.ani +animation=thrrrr.ani +animation=thrrwl.ani +animation=thrrwr.ani +animation=thrbmp.ani +animation=thrbbl.ani +animation=thrbbr.ani +animation=thrbsl.ani +animation=thrbsr.ani +animationtransition=thrsbl.ani +animationtransition=thrsbr.ani + +animationtransition=thrswri.ani +animation=thrwwli.ani +animation=thrwwri.ani +animation=thrwsri.ani +animation=thrwsli.ani +animationtransition=thrwrli.ani +animationtransition=thrwrri.ani +animation=thrrrli.ani +animation=thrrrri.ani +animation=thrrwli.ani +animation=thrrwri.ani +animation=thrbmpi.ani +animation=thrbbli.ani +animation=thrbbri.ani +animation=thrbsli.ani +animation=thrbsri.ani +animationtransition=thrsbli.ani +animationtransition=thrsbri.ani + +animation=thrggl.ani +animation=thrggr.ani +animation=thrgsl.ani +animation=thrgsr.ani +animationtransition=thrwgl.ani +animationtransition=thrwgr.ani + +animation=thrggli.ani +animation=thrggri.ani +animation=thrgsli.ani +animation=thrgsri.ani +animationtransition=thrwgli.ani +animationtransition=thrwgri.ani + +animation=thrsqu.ani +animation=thrsqd.ani +animation=thrsqui.ani +animation=thrsqdi.ani + +animation=thrtrn.ani +animation=thrtrni.ani + +//animation=thrff.ani +//animation=thrfb.ani +//animation=thrfl.ani +//animation=thrfr.ani + + diff --git a/CONTENT/BT/MODELS/THR6DEAD.MOD b/CONTENT/BT/MODELS/THR6DEAD.MOD new file mode 100644 index 0000000..e70cd7c --- /dev/null +++ b/CONTENT/BT/MODELS/THR6DEAD.MOD @@ -0,0 +1,9 @@ +[video] +object=104 3 4 5 1007 15 1001 + +[audio] +external=brnext.scp + +[gamedata] +class=ExplosionClassID +ExplosionDuration=44.0 diff --git a/CONTENT/BT/MODELS/THR6DMG.EXP b/CONTENT/BT/MODELS/THR6DMG.EXP new file mode 100644 index 0000000..c9b1598 --- /dev/null +++ b/CONTENT/BT/MODELS/THR6DMG.EXP @@ -0,0 +1,28 @@ +[OneDamage] +ExplosionModelFile=dam1hit +DamageLevel=0.2 +TimeDelay=0.0 + +[TwoDamage] +ExplosionModelFile=dam2hit +DamageLevel=0.4 +TimeDelay=0.0 + +[ThreeDamage] +ExplosionModelFile=dam3hit +DamageLevel=0.6 +TimeDelay=0.0 + +[FourDamage] +ExplosionModelFile=dam4hit +DamageLevel=0.8 +TimeDelay=0.0 + +[DestroyedExplosion] +ExplosionModelFile=desthit +GraphicState=Destroyed + +[GoneExplosion] +ExplosionModelFile=desthit +GraphicState=Gone + diff --git a/CONTENT/BT/MODELS/THR6THR.CTL b/CONTENT/BT/MODELS/THR6THR.CTL new file mode 100644 index 0000000..cff3194 --- /dev/null +++ b/CONTENT/BT/MODELS/THR6THR.CTL @@ -0,0 +1,81 @@ +[StickPosition_JP] +IOMapping=JoystickPhysical +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=StickPosition +Mode=ModeAlwaysActive + +[TorsoLeft_BJHL] +IOMapping=ButtonJoystickHatLeft +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoLeft +Mode=ModeAlwaysActive + +[TorsoRight_BJHR] +IOMapping=ButtonJoystickHatRight +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoRight +Mode=ModeAlwaysActive + +[ERPPC_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERPPC +AttributeID=TriggerState +Mode=ModeNonMapping +[ERLLaser_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERLLaser +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[MG_1_ThumbLow] +IOMapping=ButtonJoystickThumbLow +Type=DirectMapping +Subsystem=MG_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[MG_2_ThumbLow] +IOMapping=ButtonJoystickThumbLow +Type=DirectMapping +Subsystem=MG_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[MG_3_ThumbLow] +IOMapping=ButtonJoystickThumbLow +Type=DirectMapping +Subsystem=MG_3 +AttributeID=TriggerState +Mode=ModeNonMapping +[MG_4_ThumbLow] +IOMapping=ButtonJoystickThumbLow +Type=DirectMapping +Subsystem=MG_4 +AttributeID=TriggerState +Mode=ModeNonMapping +[MG_5_ThumbLow] +IOMapping=ButtonJoystickThumbLow +Type=DirectMapping +Subsystem=MG_5 +AttributeID=TriggerState +Mode=ModeNonMapping +[NRK10_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=NRK10 +AttributeID=TriggerState +Mode=ModeNonMapping diff --git a/CONTENT/BT/MODELS/THRCTL.BLD b/CONTENT/BT/MODELS/THRCTL.BLD new file mode 100644 index 0000000..f67688b --- /dev/null +++ b/CONTENT/BT/MODELS/THRCTL.BLD @@ -0,0 +1,21 @@ +[StickPosition_JP] +IOMapping=JoystickPhysical +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=StickPosition +Mode=ModeAlwaysActive + +[TorsoLeft_BJHL] +IOMapping=ButtonJoystickHatLeft +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoLeft +Mode=ModeAlwaysActive + +[TorsoRight_BJHR] +IOMapping=ButtonJoystickHatRight +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoRight +Mode=ModeAlwaysActive + diff --git a/CONTENT/BT/MODELS/THRDEAD.MOD b/CONTENT/BT/MODELS/THRDEAD.MOD new file mode 100644 index 0000000..83959ea --- /dev/null +++ b/CONTENT/BT/MODELS/THRDEAD.MOD @@ -0,0 +1,9 @@ +[video] +object=104 3 4 5 1007 15 1001 + +[audio] +external=brnext.scp + +[gamedata] +class=ExplosionClassID +ExplosionDuration=9.0 diff --git a/CONTENT/BT/MODELS/THRDMG.EXP b/CONTENT/BT/MODELS/THRDMG.EXP new file mode 100644 index 0000000..c9b1598 --- /dev/null +++ b/CONTENT/BT/MODELS/THRDMG.EXP @@ -0,0 +1,28 @@ +[OneDamage] +ExplosionModelFile=dam1hit +DamageLevel=0.2 +TimeDelay=0.0 + +[TwoDamage] +ExplosionModelFile=dam2hit +DamageLevel=0.4 +TimeDelay=0.0 + +[ThreeDamage] +ExplosionModelFile=dam3hit +DamageLevel=0.6 +TimeDelay=0.0 + +[FourDamage] +ExplosionModelFile=dam4hit +DamageLevel=0.8 +TimeDelay=0.0 + +[DestroyedExplosion] +ExplosionModelFile=desthit +GraphicState=Destroyed + +[GoneExplosion] +ExplosionModelFile=desthit +GraphicState=Gone + diff --git a/CONTENT/BT/MODELS/THRDMGRD.EXP b/CONTENT/BT/MODELS/THRDMGRD.EXP new file mode 100644 index 0000000..1d1e45b --- /dev/null +++ b/CONTENT/BT/MODELS/THRDMGRD.EXP @@ -0,0 +1,9 @@ +[LightDamage] +ExplosionModelFile=minhit +DamageLevel=0.5 +TimeDelay=0.1 + +[HeavyDamage] +ExplosionModelFile=majhit +DamageLevel=1.0 +TimeDelay=0.1 diff --git a/CONTENT/BT/MODELS/THRL4.CTL b/CONTENT/BT/MODELS/THRL4.CTL new file mode 100644 index 0000000..40f9bd4 --- /dev/null +++ b/CONTENT/BT/MODELS/THRL4.CTL @@ -0,0 +1,888 @@ +[StickPosition_JP] +//----------------------------------------------------------------------- +// Joystick +//----------------------------------------------------------------------- +IOMapping=JoystickPhysical +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=StickPosition +Mode=ModeAlwaysActive + +[Throttle_ST] +//----------------------------------------------------------------------- +// Throttle +//----------------------------------------------------------------------- +IOMapping=ScalarThrottle +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=ThrottlePosition +Mode=ModeAlwaysActive + +//----------------------------------------------------------------------- +// Misc. switches +//----------------------------------------------------------------------- +[ReverseThrust_BT1] +IOMapping=ButtonThrottle1 +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=ReverseThrust +Mode=ModeAlwaysActive + +[TorsoCenter_BJHU] +IOMapping=ButtonJoystickHatUp +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoCenter +Mode=ModeAlwaysActive + +[LookLeft_BJHL] +IOMapping=ButtonJoystickHatLeft +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=LookLeft +Mode=ModeAlwaysActive + +[LookRight_BJHR] +IOMapping=ButtonJoystickHatRight +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=LookRight +Mode=ModeAlwaysActive + +[LookBack_BJHD] +IOMapping=ButtonJoystickHatDown +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=LookBehind +Mode=ModeAlwaysActive + +//----------------------------------------------------------------------- +// Secondary mappings +//----------------------------------------------------------------------- +[Button_Sec_1] // Zoom radar in (magnify image) +IOMapping=ButtonSecondary1 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=ZoomIn +Mode=ModeAlwaysActive + +[Button_Sec_2] // Zoom radar out (reduce image) +IOMapping=ButtonSecondary2 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=ZoomOut +Mode=ModeAlwaysActive + +// +// 'Heat vision' mapped to secondary +// SGM 1/6/97 + +[Button_Sec_3] // Toggle heat vision +IOMapping=ButtonSecondary3 +Type=EventMapping +Subsystem=ThermalSight +MessageID=ToggleLamp +Mode=ModeAlwaysActive + +// +// 'Duck' remapped to real message and location. +// GDU 7/9/96 + +[Button_Sec_4] // Request crouch position +IOMapping=ButtonSecondary4 +Type=EventMapping +MessageID=DuckRequest +Mode=ModeAlwaysActive + +[Button_Sec_5] // Toggle searchlight +IOMapping=ButtonSecondary5 +Type=EventMapping +Subsystem=Searchlight +MessageID=ToggleLamp +Mode=ModeAlwaysActive + +[Button_Sec_6] // Cycle through damage display modes +IOMapping=ButtonSecondary6 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=CycleDisplayMode +Mode=ModeAlwaysActive + +[Button_Sec_7] // Cycle through control modes +IOMapping=ButtonSecondary7 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=CycleControlMode +Mode=ModeAlwaysActive + +// ButtonSecondary8 presently unused + +[Button_Sec_9] // Toggle generator 'a' +IOMapping=ButtonSecondary9 +Type=EventMapping +Subsystem=GeneratorA +MessageID=ToggleGeneratorOnOff +Mode=ModeAlwaysActive + +[Button_Sec_10] // Toggle generator 'b' +IOMapping=ButtonSecondary10 +Type=EventMapping +Subsystem=GeneratorB +MessageID=ToggleGeneratorOnOff +Mode=ModeAlwaysActive + +[Button_Sec_11] // Toggle generator 'c' +IOMapping=ButtonSecondary11 +Type=EventMapping +Subsystem=GeneratorC +MessageID=ToggleGeneratorOnOff +Mode=ModeAlwaysActive + +[Button_Sec_12] // Toggle generator 'd' +IOMapping=ButtonSecondary12 +Type=EventMapping +Subsystem=GeneratorD +MessageID=ToggleGeneratorOnOff +Mode=ModeAlwaysActive + +//----------------------------------------- +// Heat Management Screen Mappings +//----------------------------------------- +[Condenser1_Button] +IOMapping=ButtonAuxUpperLeft1 +Type=EventMapping +Subsystem=Condenser1 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Condenser2_Button] +IOMapping=ButtonAuxUpperLeft2 +Type=EventMapping +Subsystem=Condenser2 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Condenser3_Button] +IOMapping=ButtonAuxUpperLeft3 +Type=EventMapping +Subsystem=Condenser3 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Reservoir_Button] +IOMapping=ButtonAuxUpperLeft4 +Type=EventMapping +Subsystem=Reservoir +MessageID=InjectCoolant +Mode=ModeAlwaysActive + +[Condenser4_Button] +IOMapping=ButtonAuxUpperLeft5 +Type=EventMapping +Subsystem=Condenser4 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Condenser5_Button] +IOMapping=ButtonAuxUpperLeft6 +Type=EventMapping +Subsystem=Condenser5 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Condenser6_Button] +IOMapping=ButtonAuxUpperLeft7 +Type=EventMapping +Subsystem=Condenser6 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Reduce_Button] +IOMapping=ButtonAuxUpperLeft8 +Type=EventMapping +MessageID=BalanceCoolant +Mode=ModeAlwaysActive + +//----------------------------------------------------------------------- +// Aux 1 mappings +//----------------------------------------------------------------------- +//------------------------------------------ +// Aux 1 'Quad screen' mappings +//------------------------------------------ +[MFD1_to_Mode_1] // To mode 1 +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Eng1 +Mode=ModeMFD1Quad + +[MFD1_Configure_Trigger_1] // Configure +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Subsystem=ERPPC_1 +MessageID=ConfigureMappables +Mode=ModeMFD1Quad + +[MFD1_to_Mode_2] // To mode 2 +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Eng2 +Mode=ModeMFD1Quad + +[MFD1_Configure_Trigger_2] // Configure +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Subsystem=LLaser +MessageID=ConfigureMappables +Mode=ModeMFD1Quad + +[MFD1_to_Mode_3] // To mode 3 +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Eng3 +Mode=ModeMFD1Quad + +[MFD1_Configure_Trigger_3] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Subsystem=ERSLaser_1 +MessageID=ConfigureMappables +Mode=ModeMFD1Quad + +[Aux_1_Mode_1_to_MFD1] +IOMapping=ButtonAuxLowerLeft8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Quad +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_Select_GeneratorA] +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Subsystem=ERPPC_1 +MessageID=SelectGeneratorA +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_Select_GeneratorB] +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Subsystem=ERPPC_1 +MessageID=SelectGeneratorB +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_Select_GeneratorC] +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Subsystem=ERPPC_1 +MessageID=SelectGeneratorC +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_Select_GeneratorD] +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Subsystem=ERPPC_1 +MessageID=SelectGeneratorD +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_OPTION] +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Subsystem=ERPPC_1 +MessageID=ToggleSeekVoltage +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Subsystem=ERPPC_1 +MessageID=ToggleGeneratorMode +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_ToggleCooling] +IOMapping=ButtonAuxLowerLeft7 +Type=EventMapping +Subsystem=ERPPC_1 +MessageID=ToggleCooling +Mode=ModeMFD1Eng1 + +//-------------------------------------------- +// Aux 1 'Mode 2' mappings, AuxScreenNumber=2 +//-------------------------------------------- +[Aux_1_Mode_2_to_MFD1] +IOMapping=ButtonAuxLowerLeft8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Quad +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_Select_GeneratorA] +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Subsystem=LLaser +MessageID=SelectGeneratorA +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_Select_GeneratorB] +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Subsystem=LLaser +MessageID=SelectGeneratorB +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_Select_GeneratorC] +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Subsystem=LLaser +MessageID=SelectGeneratorC +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_Select_GeneratorD] +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Subsystem=LLaser +MessageID=SelectGeneratorD +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_OPTION] +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Subsystem=LLaser +MessageID=ToggleSeekVoltage +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Subsystem=LLaser +MessageID=ToggleGeneratorMode +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_ToggleCooling] +IOMapping=ButtonAuxLowerLeft7 +Type=EventMapping +Subsystem=LLaser +MessageID=ToggleCooling +Mode=ModeMFD1Eng2 + +//--------------------------------------------- +// Aux 1 'Mode 3' mappings, AuxScreenNumber=3 +//--------------------------------------------- +[Aux_1_Mode_3_to_MFD1] +IOMapping=ButtonAuxLowerLeft8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Quad +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_Select_GeneratorA] +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Subsystem=ERSLaser_1 +MessageID=SelectGeneratorA +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_Select_GeneratorB] +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Subsystem=ERSLaser_1 +MessageID=SelectGeneratorB +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_Select_GeneratorC] +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Subsystem=ERSLaser_1 +MessageID=SelectGeneratorC +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_Select_GeneratorD] +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Subsystem=ERSLaser_1 +MessageID=SelectGeneratorD +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_OPTION] +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Subsystem=ERSLaser_1 +MessageID=ToggleSeekVoltage +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Subsystem=ERSLaser_1 +MessageID=ToggleGeneratorMode +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_ToggleCooling] +IOMapping=ButtonAuxLowerLeft7 +Type=EventMapping +Subsystem=ERSLaser_1 +MessageID=ToggleCooling +Mode=ModeMFD1Eng3 + +//-------------------------------------------- +// Aux 1 "Mode 4" Mappings, AuxScreenNumber=4 +//-------------------------------------------- +[MFD2_to_Mode_1] +IOMapping=ButtonAuxUpperCenter1 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Eng1 +Mode=ModeMFD2Quad + +[MFD2_to_Mode_2] +IOMapping=ButtonAuxUpperCenter3 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Eng2 +Mode=ModeMFD2Quad + +[MFD2_to_Mode_3] +IOMapping=ButtonAuxUpperCenter5 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Eng3 +Mode=ModeMFD2Quad + +[MFD2_Configure_Trigger_3] +IOMapping=ButtonAuxUpperCenter6 +Type=EventMapping +Subsystem=LRM15 +MessageID=ConfigureMappables +Mode=ModeMFD2Quad + +[Aux_2_Mode_1_to_MFD2] +IOMapping=ButtonAuxUpperCenter8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Quad +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_Select_GeneratorA] +IOMapping=ButtonAuxUpperCenter1 +Type=EventMapping +Subsystem=Avionics +MessageID=SelectGeneratorA +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_Select_GeneratorB] +IOMapping=ButtonAuxUpperCenter2 +Type=EventMapping +Subsystem=Avionics +MessageID=SelectGeneratorB +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_Select_GeneratorC] +IOMapping=ButtonAuxUpperCenter3 +Type=EventMapping +Subsystem=Avionics +MessageID=SelectGeneratorC +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_Select_GeneratorD] +IOMapping=ButtonAuxUpperCenter4 +Type=EventMapping +Subsystem=Avionics +MessageID=SelectGeneratorD +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_ToggleGeneratorMode] +IOMapping=ButtonAuxUpperCenter6 +Type=EventMapping +Subsystem=Avionics +MessageID=ToggleGeneratorMode +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_ToggleCooling] +IOMapping=ButtonAuxUpperCenter7 +Type=EventMapping +Subsystem=Avionics +MessageID=ToggleCooling +Mode=ModeMFD2Eng1 + +//-------------------------------------------- +// Aux 2 'Mode 2' mappings, AuxScreenNumber=10 +//-------------------------------------------- +[Aux_2_Mode_2_to_MFD2] +IOMapping=ButtonAuxUpperCenter8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Quad +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_Select_GeneratorA] +IOMapping=ButtonAuxUpperCenter1 +Type=EventMapping +Subsystem=Myomers +MessageID=SelectGeneratorA +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_Select_GeneratorB] +IOMapping=ButtonAuxUpperCenter2 +Type=EventMapping +Subsystem=Myomers +MessageID=SelectGeneratorB +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_Select_GeneratorC] +IOMapping=ButtonAuxUpperCenter3 +Type=EventMapping +Subsystem=Myomers +MessageID=SelectGeneratorC +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_Select_GeneratorD] +IOMapping=ButtonAuxUpperCenter4 +Type=EventMapping +Subsystem=Myomers +MessageID=SelectGeneratorD +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_OPTION] +IOMapping=ButtonAuxUpperCenter5 +Type=EventMapping +Subsystem=Myomers +MessageID=ToggleSeekVoltage +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_ToggleGeneratorMode] +IOMapping=ButtonAuxUpperCenter6 +Type=EventMapping +Subsystem=Myomers +MessageID=ToggleGeneratorMode +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_ToggleCooling] +IOMapping=ButtonAuxUpperCenter7 +Type=EventMapping +Subsystem=Myomers +MessageID=ToggleCooling +Mode=ModeMFD2Eng2 + +//-------------------------------------------- +// Aux 3 'Mode 3' mappings, AuxScreenNumber=11 +//-------------------------------------------- +[Aux_2_Mode_3_to_MFD2] +IOMapping=ButtonAuxUpperCenter8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Quad +Mode=ModeMFD2Eng3 + +[Aux_2_Mode_3_Select_GeneratorA] +IOMapping=ButtonAuxUpperCenter1 +Type=EventMapping +Subsystem=LRM15 +MessageID=SelectGeneratorA +Mode=ModeMFD2Eng3 + +[Aux_2_Mode_3_Select_GeneratorB] +IOMapping=ButtonAuxUpperCenter2 +Type=EventMapping +Subsystem=LRM15 +MessageID=SelectGeneratorB +Mode=ModeMFD2Eng3 + +[Aux_2_Mode_3_Select_GeneratorC] +IOMapping=ButtonAuxUpperCenter3 +Type=EventMapping +Subsystem=LRM15 +MessageID=SelectGeneratorC +Mode=ModeMFD2Eng3 + +[Aux_2_Mode_3_Select_GeneratorD] +IOMapping=ButtonAuxUpperCenter4 +Type=EventMapping +Subsystem=LRM15 +MessageID=SelectGeneratorD +Mode=ModeMFD2Eng3 + +[Aux_2_Mode_3_OPTION] +IOMapping=ButtonAuxUpperCenter5 +Type=EventMapping +Subsystem=LRM15 +MessageID=EjectAmmo +Mode=ModeMFD2Eng3 + +[Aux_2_Mode_3_ToggleGeneratorMode] +IOMapping=ButtonAuxUpperCenter6 +Type=EventMapping +Subsystem=LRM15 +MessageID=ToggleGeneratorMode +Mode=ModeMFD2Eng3 + +[Aux_2_Mode_3_ToggleCooling] +IOMapping=ButtonAuxUpperCenter7 +Type=EventMapping +Subsystem=LRM15 +MessageID=ToggleCooling +Mode=ModeMFD2Eng3 + +//--------------------------------------------- +// Aux 3 'Mode 4' mappings, AuxScreenNumber=12 +//--------------------------------------------- +[MFD3_to_Mode_1] +IOMapping=ButtonAuxLowerRight1 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Eng1 +Mode=ModeMFD3Quad + +[MFD3_Configure_Trigger_1] +IOMapping=ButtonAuxLowerRight2 +Type=EventMapping +Subsystem=ERMLaser +MessageID=ConfigureMappables +Mode=ModeMFD3Quad + +[MFD3_to_Mode_2] +IOMapping=ButtonAuxLowerRight3 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Eng2 +Mode=ModeMFD3Quad + +[MFD3_Configure_Trigger_2] +IOMapping=ButtonAuxLowerRight4 +Type=EventMapping +Subsystem=ERPPC_2 +MessageID=ConfigureMappables +Mode=ModeMFD3Quad + +[MFD3_to_Mode_4] +IOMapping=ButtonAuxLowerRight7 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Eng4 +Mode=ModeMFD3Quad + +[MFD3_Configure_Trigger_4] +IOMapping=ButtonAuxLowerRight8 +Type=EventMapping +Subsystem=ERSLaser_2 +MessageID=ConfigureMappables +Mode=ModeMFD3Quad + +//-------------------------------------------- +// Aux 3 'Mode 1' mappings, AuxScreenNumber=9 +//-------------------------------------------- +[Aux_3_Mode_1_to_MFD3] +IOMapping=ButtonAuxLowerRight8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Quad +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_Select_GeneratorA] +IOMapping=ButtonAuxLowerRight1 +Type=EventMapping +Subsystem=ERMLaser +MessageID=SelectGeneratorA +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_Select_GeneratorB] +IOMapping=ButtonAuxLowerRight2 +Type=EventMapping +Subsystem=ERMLaser +MessageID=SelectGeneratorB +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_Select_GeneratorC] +IOMapping=ButtonAuxLowerRight3 +Type=EventMapping +Subsystem=ERMLaser +MessageID=SelectGeneratorC +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_Select_GeneratorD] +IOMapping=ButtonAuxLowerRight4 +Type=EventMapping +Subsystem=ERMLaser +MessageID=SelectGeneratorD +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_OPTION] +IOMapping=ButtonAuxLowerRight5 +Type=EventMapping +Subsystem=ERMLaser +MessageID=ToggleSeekVoltage +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerRight6 +Type=EventMapping +Subsystem=ERMLaser +MessageID=ToggleGeneratorMode +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_ToggleCooling] +IOMapping=ButtonAuxLowerRight7 +Type=EventMapping +Subsystem=ERMLaser +MessageID=ToggleCooling +Mode=ModeMFD3Eng1 + +//-------------------------------------------- +// Aux 3 'Mode 2' mappings, AuxScreenNumber=10 +//-------------------------------------------- +[Aux_3_Mode_2_to_MFD3] +IOMapping=ButtonAuxLowerRight8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Quad +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_Select_GeneratorA] +IOMapping=ButtonAuxLowerRight1 +Type=EventMapping +Subsystem=ERPPC_2 +MessageID=SelectGeneratorA +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_Select_GeneratorB] +IOMapping=ButtonAuxLowerRight2 +Type=EventMapping +Subsystem=ERPPC_2 +MessageID=SelectGeneratorB +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_Select_GeneratorC] +IOMapping=ButtonAuxLowerRight3 +Type=EventMapping +Subsystem=ERPPC_2 +MessageID=SelectGeneratorC +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_Select_GeneratorD] +IOMapping=ButtonAuxLowerRight4 +Type=EventMapping +Subsystem=ERPPC_2 +MessageID=SelectGeneratorD +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_OPTION] +IOMapping=ButtonAuxLowerRight5 +Type=EventMapping +Subsystem=ERPPC_2 +MessageID=ToggleSeekVoltage +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerRight6 +Type=EventMapping +Subsystem=ERPPC_2 +MessageID=ToggleGeneratorMode +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_ToggleCooling] +IOMapping=ButtonAuxLowerRight7 +Type=EventMapping +Subsystem=ERPPC_2 +MessageID=ToggleCooling +Mode=ModeMFD3Eng2 + +//-------------------------------------------- +// Aux 3 'Mode 3' mappings, AuxScreenNumber=11 +//-------------------------------------------- +[Aux_3_Mode_4_to_MFD3] +IOMapping=ButtonAuxLowerRight8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Quad +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_Select_GeneratorA] +IOMapping=ButtonAuxLowerRight1 +Type=EventMapping +Subsystem=ERSLaser_2 +MessageID=SelectGeneratorA +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_Select_GeneratorB] +IOMapping=ButtonAuxLowerRight2 +Type=EventMapping +Subsystem=ERSLaser_2 +MessageID=SelectGeneratorB +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_Select_GeneratorC] +IOMapping=ButtonAuxLowerRight3 +Type=EventMapping +Subsystem=ERSLaser_2 +MessageID=SelectGeneratorC +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_Select_GeneratorD] +IOMapping=ButtonAuxLowerRight4 +Type=EventMapping +Subsystem=ERSLaser_2 +MessageID=SelectGeneratorD +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_OPTION] +IOMapping=ButtonAuxLowerRight5 +Type=EventMapping +Subsystem=ERSLaser_2 +MessageID=ToggleSeekVoltage +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerRight6 +Type=EventMapping +Subsystem=ERSLaser_2 +MessageID=ToggleGeneratorMode +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_ToggleCooling] +IOMapping=ButtonAuxLowerRight7 +Type=EventMapping +Subsystem=ERSLaser_2 +MessageID=ToggleCooling +Mode=ModeMFD3Eng4 +[ERPPC_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERPPC_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERPPC_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERPPC_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[LLaser_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=LLaser +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[LRM15_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=LRM15 +AttributeID=TriggerState +Mode=ModeNonMapping diff --git a/CONTENT/BT/MODELS/THRTHR.CTL b/CONTENT/BT/MODELS/THRTHR.CTL new file mode 100644 index 0000000..5015122 --- /dev/null +++ b/CONTENT/BT/MODELS/THRTHR.CTL @@ -0,0 +1,63 @@ +[StickPosition_JP] +IOMapping=JoystickPhysical +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=StickPosition +Mode=ModeAlwaysActive + +[TorsoLeft_BJHL] +IOMapping=ButtonJoystickHatLeft +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoLeft +Mode=ModeAlwaysActive + +[TorsoRight_BJHR] +IOMapping=ButtonJoystickHatRight +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoRight +Mode=ModeAlwaysActive + +[ERPPC_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERPPC_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERPPC_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERPPC_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[LLaser_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=LLaser +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[LRM15_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=LRM15 +AttributeID=TriggerState +Mode=ModeNonMapping diff --git a/CONTENT/BT/MODELS/TK1.MOD b/CONTENT/BT/MODELS/TK1.MOD new file mode 100644 index 0000000..49da398 --- /dev/null +++ b/CONTENT/BT/MODELS/TK1.MOD @@ -0,0 +1,8 @@ +[video] +object=tk1.bgf + +[collision] +name=tk1_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/TM1.MOD b/CONTENT/BT/MODELS/TM1.MOD new file mode 100644 index 0000000..f9faea9 --- /dev/null +++ b/CONTENT/BT/MODELS/TM1.MOD @@ -0,0 +1,5 @@ +[video] +object=tm1.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/TM2.MOD b/CONTENT/BT/MODELS/TM2.MOD new file mode 100644 index 0000000..9f66bf6 --- /dev/null +++ b/CONTENT/BT/MODELS/TM2.MOD @@ -0,0 +1,5 @@ +[video] +object=tm2.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/TMC1.MOD b/CONTENT/BT/MODELS/TMC1.MOD new file mode 100644 index 0000000..31438ff --- /dev/null +++ b/CONTENT/BT/MODELS/TMC1.MOD @@ -0,0 +1,11 @@ +[video] +; +; tmc1.mod - Tarmac for small base +; +object=tmc1.bgf + +[gauge] +image=tmc1_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/TMC2.MOD b/CONTENT/BT/MODELS/TMC2.MOD new file mode 100644 index 0000000..5564b5f --- /dev/null +++ b/CONTENT/BT/MODELS/TMC2.MOD @@ -0,0 +1,11 @@ +[video] +; +; tmc2.mod - Tarmac for small base +; +object=tmc2.bgf + +[gauge] +image=tmc2_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/TMC3.MOD b/CONTENT/BT/MODELS/TMC3.MOD new file mode 100644 index 0000000..3691524 --- /dev/null +++ b/CONTENT/BT/MODELS/TMC3.MOD @@ -0,0 +1,8 @@ +[video] +; +; tmc3.mod - Tarmac for small base +; +object=tmc3.bgf tmc3_lp.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/TMC4.MOD b/CONTENT/BT/MODELS/TMC4.MOD new file mode 100644 index 0000000..bec5372 --- /dev/null +++ b/CONTENT/BT/MODELS/TMC4.MOD @@ -0,0 +1,8 @@ +[video] +; +; tmc4.mod - Tarmac for small base +; +object=tmc4.bgf tmc4_lp.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/TMC5.MOD b/CONTENT/BT/MODELS/TMC5.MOD new file mode 100644 index 0000000..b9ed817 --- /dev/null +++ b/CONTENT/BT/MODELS/TMC5.MOD @@ -0,0 +1,8 @@ +[video] +; +; tmc5.mod - Tarmac for small base +; +object=tmc5.bgf tmc5_lp.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/TMC6.MOD b/CONTENT/BT/MODELS/TMC6.MOD new file mode 100644 index 0000000..a294ca6 --- /dev/null +++ b/CONTENT/BT/MODELS/TMC6.MOD @@ -0,0 +1,8 @@ +[video] +; +; tmc6.mod - Tarmac for small base +; +object=tmc6.bgf tmc6_lp.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/TMC7.MOD b/CONTENT/BT/MODELS/TMC7.MOD new file mode 100644 index 0000000..8a5cba9 --- /dev/null +++ b/CONTENT/BT/MODELS/TMC7.MOD @@ -0,0 +1,8 @@ +[video] +; +; tmc7.mod - Tarmac for small base +; +object=tmc7.bgf tmc7_lp.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/TMC8.MOD b/CONTENT/BT/MODELS/TMC8.MOD new file mode 100644 index 0000000..aabdf69 --- /dev/null +++ b/CONTENT/BT/MODELS/TMC8.MOD @@ -0,0 +1,8 @@ +[video] +; +; tmc8.mod - Tarmac for small base +; +object=tmc8.bgf tmc8_lp.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/TNT.MOD b/CONTENT/BT/MODELS/TNT.MOD new file mode 100644 index 0000000..b3933cc --- /dev/null +++ b/CONTENT/BT/MODELS/TNT.MOD @@ -0,0 +1,20 @@ +[video] +; +; tnt.mod - Tent +; +object=tnt.bgf +rubble=tntd.bgf + +[collision] +name=tnt_cv.sld + +[gauge] +image=tnt_ga.gim + +[gamedata] +class=CulturalIconClassID +DamageZones=sml.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=smldead +TimeDelay=0.5 +//CrunchExplosionModelFile=smldead diff --git a/CONTENT/BT/MODELS/TORSO.SUB b/CONTENT/BT/MODELS/TORSO.SUB new file mode 100644 index 0000000..dffa697 --- /dev/null +++ b/CONTENT/BT/MODELS/TORSO.SUB @@ -0,0 +1,21 @@ +[Torso] +Type=TorsoClassID +ArmorValue=20.0 +WatchedSubsystem=None +DegradationTemperature=1500.0 +FailureTemperature=2000.0 +WeaponDamagePoints=5.0 +TorsoHorizontalJoint=jointtorso +TorsoHorizontalShadowJoint=jointtshadow +HorizontalRotationPerSecond=20.0 +VerticalRotationPerSecond=40.0 +VerticalLimitTop=20.0 +VerticalLimitBottom=-40.0 +HorizontalLimitRight=-80.0 +HorizontalLimitLeft=80 +VitalSubsystem=False +CriticalHitScoreBonus=0 +MinVoltagePercent=50 +CollisionCriticalHitWeight=0.25 +ButtonAccelerationStartValue=0.3 +ButtonAccelerationPerSecond=0.3 diff --git a/CONTENT/BT/MODELS/TORSOLMT.SUB b/CONTENT/BT/MODELS/TORSOLMT.SUB new file mode 100644 index 0000000..2025615 --- /dev/null +++ b/CONTENT/BT/MODELS/TORSOLMT.SUB @@ -0,0 +1,20 @@ +[Torso] +Type=TorsoClassID +ArmorValue=20.0 +WatchedSubsystem=None +DegradationTemperature=1500.0 +FailureTemperature=2000.0 +WeaponDamagePoints=5.0 +TorsoHorizontalEnabled=False +HorizontalRotationPerSecond=0.0 +VerticalRotationPerSecond=50.0 +VerticalLimitTop=20.0 +VerticalLimitBottom=-40.0 +HorizontalLimitRight=-0.01 +HorizontalLimitLeft=0.01 +VitalSubsystem=False +CriticalHitScoreBonus=0 +MinVoltagePercent=50 +CollisionCriticalHitWeight=0.25 +ButtonAccelerationStartValue=0.3 +ButtonAccelerationPerSecond=0.3 \ No newline at end of file diff --git a/CONTENT/BT/MODELS/TREE.MOD b/CONTENT/BT/MODELS/TREE.MOD new file mode 100644 index 0000000..9d29b92 --- /dev/null +++ b/CONTENT/BT/MODELS/TREE.MOD @@ -0,0 +1,17 @@ +[video] +object=treesh.bgf tree.bgf/BY +rubble=trunk.bgf + +[collision] +name=tree_cv.sld + +[gauge] +image=tree_ga.gim + +[gamedata] +class=CulturalIconClassID +DamageZones=sml.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=smldead +TimeDelay=0.2 +CrunchExplosionModelFile=stephit diff --git a/CONTENT/BT/MODELS/TRK.DMG b/CONTENT/BT/MODELS/TRK.DMG new file mode 100644 index 0000000..8405f4a --- /dev/null +++ b/CONTENT/BT/MODELS/TRK.DMG @@ -0,0 +1,3 @@ +[default] +WeaponDamagePoints=1 +VitalDamageZone=True diff --git a/CONTENT/BT/MODELS/TRK1.MOD b/CONTENT/BT/MODELS/TRK1.MOD new file mode 100644 index 0000000..1191aca --- /dev/null +++ b/CONTENT/BT/MODELS/TRK1.MOD @@ -0,0 +1,14 @@ +[video] +object=trk1.bgf trk1_FR.bgf +rubble=trk1d.bgf trk1d_FR.bgf + +[collision] +name=trk1_cv.sld + +[gamedata] +class=CulturalIconClassID +DamageZones=trk.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=trkdead +TimeDelay=0.5 +CrunchExplosionModelFile=stephit diff --git a/CONTENT/BT/MODELS/TRK3.MOD b/CONTENT/BT/MODELS/TRK3.MOD new file mode 100644 index 0000000..d9b8dc2 --- /dev/null +++ b/CONTENT/BT/MODELS/TRK3.MOD @@ -0,0 +1,14 @@ +[video] +object=trk3.bgf trk3_FR.bgf +rubble=trk3d.bgf trk3d_FR.bgf + +[collision] +name=trk3_cv.sld + +[gamedata] +class=CulturalIconClassID +DamageZones=trk.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=trkdead +TimeDelay=0.5 +CrunchExplosionModelFile=stephit diff --git a/CONTENT/BT/MODELS/TRK4.MOD b/CONTENT/BT/MODELS/TRK4.MOD new file mode 100644 index 0000000..64c663e --- /dev/null +++ b/CONTENT/BT/MODELS/TRK4.MOD @@ -0,0 +1,14 @@ +[video] +object=trk4.bgf trk4_FR.bgf +rubble=trk4d.bgf trk4d_FR.bgf + +[collision] +name=trk4_cv.sld + +[gamedata] +class=CulturalIconClassID +DamageZones=trk.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=trkdead +TimeDelay=0.5 +CrunchExplosionModelFile=stephit diff --git a/CONTENT/BT/MODELS/TRKDEAD.MOD b/CONTENT/BT/MODELS/TRKDEAD.MOD new file mode 100644 index 0000000..770d9f0 --- /dev/null +++ b/CONTENT/BT/MODELS/TRKDEAD.MOD @@ -0,0 +1,10 @@ +[video] +object=1015 1016 + +[audio] +external=sbnexp.scp + +[gamedata] +class=ExplosionClassID +// Audio requires ExplosionDuration >= 12.0 +ExplosionDuration=12.0 diff --git a/CONTENT/BT/MODELS/TT1.MOD b/CONTENT/BT/MODELS/TT1.MOD new file mode 100644 index 0000000..2c08b5a --- /dev/null +++ b/CONTENT/BT/MODELS/TT1.MOD @@ -0,0 +1,14 @@ +[video] +object=tt1.bgf +rubble=tt1d.bgf + +[collision] +name=tt1_cv.sld + +[gamedata] +class=CulturalIconClassID +DamageZones=trk.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=trkdead +TimeDelay=0.5 +CrunchExplosionModelFile=stephit diff --git a/CONTENT/BT/MODELS/TT2.MOD b/CONTENT/BT/MODELS/TT2.MOD new file mode 100644 index 0000000..6827917 --- /dev/null +++ b/CONTENT/BT/MODELS/TT2.MOD @@ -0,0 +1,14 @@ +[video] +object=tt2.bgf +rubble=tt2d.bgf + +[collision] +name=tt2_cv.sld + +[gamedata] +class=CulturalIconClassID +DamageZones=trk.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=trkdead +CrunchExplosionModelFile=stephit +TimeDelay=0.5 diff --git a/CONTENT/BT/MODELS/TWR.DMG b/CONTENT/BT/MODELS/TWR.DMG new file mode 100644 index 0000000..1d82e46 --- /dev/null +++ b/CONTENT/BT/MODELS/TWR.DMG @@ -0,0 +1,3 @@ +[default] +WeaponDamagePoints=100 +VitalDamageZone=True diff --git a/CONTENT/BT/MODELS/TWR.MOD b/CONTENT/BT/MODELS/TWR.MOD new file mode 100644 index 0000000..d703c58 --- /dev/null +++ b/CONTENT/BT/MODELS/TWR.MOD @@ -0,0 +1,20 @@ +[video] +; +; twr.mod - Tower +; +object=twr.bgf twr_FR.bgf twr_LP.bgf +rubble=twrd.bgf twrd_FR.bgf + +[collision] +name=twr_cv.sld + +[gauge] +image=twr_ga.gim + +[gamedata] +class=CulturalIconClassID +DamageZones=twr.dmg +StoppingCollisionVolume=1 +ExplosionModelFile=twrdead +TimeDelay=1.5 +//CrunchExplosionModelFile=stephit diff --git a/CONTENT/BT/MODELS/TWRDEAD.MOD b/CONTENT/BT/MODELS/TWRDEAD.MOD new file mode 100644 index 0000000..3eb731c --- /dev/null +++ b/CONTENT/BT/MODELS/TWRDEAD.MOD @@ -0,0 +1,11 @@ +[video] +object=1017 1016 + +[audio] +external=bigexp.scp + +[gamedata] +class=ExplosionClassID +// WARNING Audio requires ExplosionDuration >= 5.0 +ExplosionDuration=5.0 + diff --git a/CONTENT/BT/MODELS/VEHICLE.TBL b/CONTENT/BT/MODELS/VEHICLE.TBL new file mode 100644 index 0000000..9a557e6 --- /dev/null +++ b/CONTENT/BT/MODELS/VEHICLE.TBL @@ -0,0 +1,46 @@ +; +; vehicle.tbl - BattleTech +; +[vehicle] +blkhawk=blh +firstrtr=fir +blkjack=jak +loki=lok +madcat=mad +owens=own +raptor=rap +strider=sti +thor=thr +vulture=vul + +[color] // mech camo colors +Black=blk +Brown=brn +Crimson=red +Green=grn +Grey=gry +Tan=tan +White=wht + +[badge] // emblem patterns (insignia) +Davion=lgo2 +Kurita=lgo1 +Liao=lgo3 +Marik=lgo5 +None=lgo0 +Steiner=lgo4 +VGL=lgo6 + +[patch] // emblem colors +Black=blk +Blue=blu +Green=grn +Grey=gry +Red=red +Violet=vlt +White=wht +Yellow=yel + +[substitute] +skin:lgo=<< +skin:=_%color%%serno%: diff --git a/CONTENT/BT/MODELS/VUL1.DMG b/CONTENT/BT/MODELS/VUL1.DMG new file mode 100644 index 0000000..14ecde8 --- /dev/null +++ b/CONTENT/BT/MODELS/VUL1.DMG @@ -0,0 +1,200 @@ +// This file is intentionally empty and MUST be read-only! +[dz_dtorso] +ExplosionTable=vul1dmg.exp +DefaultEffectSiteName=siteedz_dtorso +WeaponDamagePoints=130 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Condenser5 2 0.500000 +CriticalSubsystem=GeneratorD 10 0.500000 +CriticalSubsystem=Avionics 5 0.200000 +CriticalSubsystem=Torso 15 0.333333 +CriticalSubsystem=ERSLaser_1 25 1.000000 +CriticalSubsystem=ERSLaser_2 25 1.000000 +[dz_hip] +ExplosionTable=vul1dmg.exp +DefaultEffectSiteName=siteedz_hip +WeaponDamagePoints=125 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Myomers 15 0.142857 +CriticalSubsystem=Gyroscope 30 0.333333 +CriticalSubsystem=Torso 15 0.333333 +[dz_larm] +ExplosionTable=vul1dmg.exp +DefaultEffectSiteName=siteedz_larm +WeaponDamagePoints=75 +VitalDamageZone=False +DescendOnDestruction=True +CriticalSubsystem=Condenser4 2 0.500000 +[dz_lddoor] +ExplosionTable=vul1dmg.exp +DefaultEffectSiteName=siteedz_lddoor +WeaponDamagePoints=1 +VitalDamageZone=False +[dz_ldleg] +ExplosionTable=vul1dmg.exp +DefaultEffectSiteName=siteedz_ldleg +WeaponDamagePoints=95 +VitalDamageZone=True +LegDamageZone=LeftLeg +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Myomers 15 0.142857 +[dz_lfoot] +ExplosionTable=vul1dmg.exp +DefaultEffectSiteName=siteedz_lfoot +WeaponDamagePoints=85 +VitalDamageZone=True +LegDamageZone=LeftLeg +CriticalSubsystem=Myomers 15 0.142857 +[dz_lgun] +ExplosionTable=vul1dmg.exp +DefaultEffectSiteName=siteedz_lgun +WeaponDamagePoints=80 +VitalDamageZone=False +DescendOnDestruction=True +CriticalSubsystem=Condenser4 2 0.500000 +CriticalSubsystem=PPC_1 10 1.000000 +CriticalSubsystem=ERSLaser_3 20 1.000000 +[dz_ltorso] +ExplosionTable=vul1dmg.exp +DefaultEffectSiteName=siteedz_ltorso +WeaponDamagePoints=158 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Condenser1 2 0.500000 +CriticalSubsystem=GeneratorA 10 0.500000 +CriticalSubsystem=Avionics 5 0.200000 +CriticalSubsystem=AmmoBinLRM15_1 20 1.000000 +CriticalSubsystem=LRM15_1 15 1.000000 +[dz_ludoor] +ExplosionTable=vul1dmg.exp +DefaultEffectSiteName=siteedz_ludoor +WeaponDamagePoints=1 +VitalDamageZone=False +[dz_luleg] +ExplosionTable=vul1dmg.exp +DefaultEffectSiteName=siteedz_luleg +WeaponDamagePoints=100 +VitalDamageZone=True +LegDamageZone=LeftLeg +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Myomers 15 0.142857 +[dz_rarm] +ExplosionTable=vul1dmg.exp +DefaultEffectSiteName=siteedz_rarm +WeaponDamagePoints=75 +VitalDamageZone=False +DescendOnDestruction=True +CriticalSubsystem=Condenser6 2 0.500000 +[dz_rddoor] +ExplosionTable=vul1dmg.exp +DefaultEffectSiteName=siteedz_rddoor +WeaponDamagePoints=1 +VitalDamageZone=False +[dz_rdleg] +ExplosionTable=vul1dmg.exp +DefaultEffectSiteName=siteedz_rdleg +WeaponDamagePoints=95 +VitalDamageZone=True +LegDamageZone=RightLeg +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Myomers 15 0.142857 +[dz_reardtorso] +ExplosionTable=vul1dmg.exp +DefaultEffectSiteName=siteedz_reardtorso +WeaponDamagePoints=88 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Reservoir 10 0.250000 +CriticalSubsystem=Condenser5 2 0.500000 +CriticalSubsystem=GeneratorD 10 0.500000 +CriticalSubsystem=Torso 15 0.333333 +[dz_rearltorso] +ExplosionTable=vul1dmg.exp +DefaultEffectSiteName=siteedz_rearltorso +WeaponDamagePoints=88 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Reservoir 10 0.250000 +CriticalSubsystem=Condenser1 2 0.500000 +CriticalSubsystem=GeneratorA 10 0.500000 +[dz_rearrtorso] +ExplosionTable=vul1dmg.exp +DefaultEffectSiteName=siteedz_rearrtorso +WeaponDamagePoints=88 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Reservoir 10 0.250000 +CriticalSubsystem=Condenser3 2 0.500000 +CriticalSubsystem=GeneratorC 10 0.500000 +[dz_rearutorso] +ExplosionTable=vul1dmg.exp +DefaultEffectSiteName=siteedz_rearutorso +WeaponDamagePoints=125 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Reservoir 10 0.250000 +CriticalSubsystem=Condenser2 2 0.500000 +CriticalSubsystem=GeneratorB 10 0.500000 +CriticalSubsystem=Gyroscope 30 0.333333 +[dz_rfoot] +ExplosionTable=vul1dmg.exp +DefaultEffectSiteName=siteedz_rfoot +WeaponDamagePoints=85 +VitalDamageZone=True +LegDamageZone=RightLeg +CriticalSubsystem=Myomers 15 0.142857 +[dz_rgun] +ExplosionTable=vul1dmg.exp +DefaultEffectSiteName=siteedz_rgun +WeaponDamagePoints=80 +VitalDamageZone=False +DescendOnDestruction=True +CriticalSubsystem=Condenser6 2 0.500000 +CriticalSubsystem=PPC_2 10 1.000000 +CriticalSubsystem=ERSLaser_4 20 1.000000 +[dz_rtorso] +ExplosionTable=vul1dmg.exp +DefaultEffectSiteName=siteedz_rtorso +WeaponDamagePoints=158 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Condenser3 2 0.500000 +CriticalSubsystem=GeneratorC 10 0.500000 +CriticalSubsystem=Avionics 5 0.200000 +CriticalSubsystem=AmmoBinLRM15_2 20 1.000000 +CriticalSubsystem=LRM15_2 15 1.000000 +[dz_rudoor] +ExplosionTable=vul1dmg.exp +DefaultEffectSiteName=siteedz_rudoor +WeaponDamagePoints=1 +VitalDamageZone=False +[dz_ruleg] +ExplosionTable=vul1dmg.exp +DefaultEffectSiteName=siteedz_ruleg +WeaponDamagePoints=100 +VitalDamageZone=True +LegDamageZone=RightLeg +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Myomers 15 0.142857 +[dz_searchlight] +ExplosionTable=vul1dmg.exp +DefaultEffectSiteName=siteedz_searchlight +WeaponDamagePoints=50 +VitalDamageZone=False +CriticalSubsystem=Avionics 5 0.200000 +CriticalSubsystem=HUD 15 0.500000 +CriticalSubsystem=Searchlight 45 1.000000 +CriticalSubsystem=ThermalSight 30 1.000000 +[dz_utorso] +ExplosionTable=vul1dmg.exp +DefaultEffectSiteName=siteedz_utorso +WeaponDamagePoints=175 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Condenser2 2 0.500000 +CriticalSubsystem=GeneratorB 10 0.500000 +CriticalSubsystem=Avionics 5 0.200000 +CriticalSubsystem=Gyroscope 30 0.333333 +CriticalSubsystem=HUD 15 0.500000 diff --git a/CONTENT/BT/MODELS/VUL1.MOD b/CONTENT/BT/MODELS/VUL1.MOD new file mode 100644 index 0000000..cb8206e --- /dev/null +++ b/CONTENT/BT/MODELS/VUL1.MOD @@ -0,0 +1,132 @@ +[video] +skeleton=vul1.skl +skeletona=vux1.skl +destroyed=vul1d.skl +//destroyeda=vux1d.skl +dzm=vul1skin.dzm +dzma=vux1skin.dzm + +[audio] +internal=vul1int.scp +external=vul1ext.scp + +[collision] +name=vul_cv.sld + +[gauge] +image=thor_ga.gim + +[gaugeMissionReview] +pixelmap=vul1_mr.pcc + +[gamedata] +class=MechClassID +MoverMass=60000.0 +MomentOfInertia=1.75 3.125 1.75 +PositiveLinearDragCoefficients=0.14 0.4 0.07 +NegativeLinearDragCoefficients=0.14 0.2 0.08 +AngularDragCoefficients=0.3 0.5 0.3 +FrictionCoefficient=0.1 +ElasticityCoefficient=0.2 +MinimumBounceSpeed=0.2 +MaxAcceleration=10 +AnimationPrefix=vul +Subsystems=vul1.sub +DamageZones=vul1.dmg +DamageLookupTable=vuldmg.tbl +RelativeMechValue=1.0 +LookLeftAngle=90 +LookRightAngle=-90 +LookBackAngle=0 +LookFrontAngle=-15 + +WalkingTurnRate=55 +RunningTurnRate=30 + +DeathEffect=vuldead +CameraOffset=0.0 15.0 30.0 +DeathSplashDamage=5 +DeathSplashRadius=50 +TimeDelay=0.3 + +MaxUnstableAcceleration=22.0 +UnstableAccelerationEffect=0.7 +UnstableGunTheEngineEffect=1.0 +UnstableSuperStopEffect=0.5 +UnstableHighVelocityEffect=0.4 +UnstableStopedTurnEffect=1.0 +SuperStopAcceleration=20.0 + +ThrottleAdjustment=0.8 + +UpdateTurnDegreeDiffrence=3 +UpdateTurnVelocityDiffrence=0.045 +UpdatePositionDiffrence=0.3 + +ShadowJointName=jointshadow + + +[ControlMappings] +Thrustmaster=vul1thr.ctl +L4=vul1l4.ctl + +[animations] +animationtransition=vulswr.ani +animation=vulwwl.ani +animation=vulwwr.ani +animation=vulwsr.ani +animation=vulwsl.ani +animationtransition=vulwrl.ani +animationtransition=vulwrr.ani +animation=vulrrl.ani +animation=vulrrr.ani +animation=vulrwl.ani +animation=vulrwr.ani +animation=vulbmp.ani +animation=vulbbl.ani +animation=vulbbr.ani +animation=vulbsl.ani +animation=vulbsr.ani +animationtransition=vulsbl.ani +animationtransition=vulsbr.ani + +animationtransition=vulswri.ani +animation=vulwwli.ani +animation=vulwwri.ani +animation=vulwsri.ani +animation=vulwsli.ani +animationtransition=vulwrli.ani +animationtransition=vulwrri.ani +animation=vulrrli.ani +animation=vulrrri.ani +animation=vulrwli.ani +animation=vulrwri.ani +animation=vulbmpi.ani +animation=vulbbli.ani +animation=vulbbri.ani +animation=vulbsli.ani +animation=vulbsri.ani +animationtransition=vulsbli.ani +animationtransition=vulsbri.ani + +animation=vulggl.ani +animation=vulggr.ani +animation=vulgsl.ani +animation=vulgsr.ani +animationtransition=vulwgl.ani +animationtransition=vulwgr.ani + +animation=vulggli.ani +animation=vulggri.ani +animation=vulgsli.ani +animation=vulgsri.ani +animationtransition=vulwgli.ani +animationtransition=vulwgri.ani + +animation=vulsqu.ani +animation=vulsqd.ani +animation=vulsqui.ani +animation=vulsqdi.ani + +animation=vultrn.ani +animation=vultrni.ani diff --git a/CONTENT/BT/MODELS/VUL1.SUB b/CONTENT/BT/MODELS/VUL1.SUB new file mode 100644 index 0000000..31e220f --- /dev/null +++ b/CONTENT/BT/MODELS/VUL1.SUB @@ -0,0 +1,215 @@ +[HeatSink] +Type=HeatSinkClassID +Include=heatsnk.sub +HeatSinkCount=18 +SubsystemFlags=DontReplicateFlag + +[Reservoir] +Type=ReservoirClassID +Include=reserve.sub +HeatSink=HeatSink +SegmentPageName=siteeyepoint + +[Condenser1] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser2] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser3] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser4] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser5] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser6] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[GeneratorA] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser1 +SubsystemFlags=DontReplicateFlag + +[GeneratorB] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser2 +SubsystemFlags=DontReplicateFlag + +[GeneratorC] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser3 +SubsystemFlags=DontReplicateFlag + +[GeneratorD] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser5 +SubsystemFlags=DontReplicateFlag + +[Avionics] +Type=SensorClassID +Include=sensor.sub +HeatSink=Condenser2 +VoltageSource=GeneratorD +AuxScreenNumber=5 +SubsystemFlags=DontReplicateFlag + +AuxScreenPlacement=2 +[Myomers] +Type=MyomersClassID +Include=myomers.sub +HeatSink=Condenser5 +VoltageSource=GeneratorD +AuxScreenNumber=6 +SubsystemFlags=DontReplicateFlag + +AuxScreenPlacement=0 +[Gyroscope] +Type=GyroscopeClassID +Include=gyro.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag + +[Torso] +Type=TorsoClassID +Include=torso.sub +WatchedSubsystem=Myomers + +HorizontalRotationPerSecond=40 +VerticalRotationPerSecond=30 +HorizontalLimitRight=-190 +HorizontalLimitLeft=190 +[HUD] +Type=HUDClassID +Include=hud.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag + +[Searchlight] +Type=SearchlightClassID +Include=srchlite.sub +WatchedSubsystem=Avionics +SegmentPageName=sitelight + +[ThermalSight] +Type=ThermalSightClassID +Include=Thermal.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag +[PPC_1] +Type=PPCClassID +Include=ppc.sub +SegmentPageName=sitelugunport +PipPosition=1 +VoltageSource=GeneratorA +HeatSink=Condenser4 +AuxScreenNumber=1 +AuxScreenPlacement=4 +[PPC_2] +Type=PPCClassID +Include=ppc.sub +SegmentPageName=siterugunport +PipPosition=2 +VoltageSource=GeneratorC +HeatSink=Condenser6 +AuxScreenNumber=10 +AuxScreenPlacement=6 +[ERSLaser_1] +Type=EmitterClassID +Include=erslaser.sub +SegmentPageName=siteldtorsoport +PipPosition=1 +VoltageSource=GeneratorB +HeatSink=Condenser2 +AuxScreenNumber=7 +AuxScreenPlacement=2 +[ERSLaser_2] +Type=EmitterClassID +Include=erslaser.sub +SegmentPageName=siterdtorsoport +PipPosition=2 +VoltageSource=GeneratorB +HeatSink=Condenser2 +AuxScreenNumber=8 +AuxScreenPlacement=2 +[ERSLaser_3] +Type=EmitterClassID +Include=erslaser.sub +SegmentPageName=siteldgunport +PipPosition=3 +VoltageSource=GeneratorA +HeatSink=Condenser4 +AuxScreenNumber=3 +AuxScreenPlacement=4 +[ERSLaser_4] +Type=EmitterClassID +Include=erslaser.sub +SegmentPageName=siterdgunport +PipPosition=4 +VoltageSource=GeneratorC +HeatSink=Condenser6 +AuxScreenNumber=12 +AuxScreenPlacement=6 +[AmmoBinLRM15_1] +Type=AmmoBinClassID +Include=ammnrk15.sub +WatchedSubsystem=LRM15_1 +AmmoCount=20 +[LRM15_1] +AmmoBin=AmmoBinLRM15_1 +Type=MissileLauncherClassID +Include=nrk15.sub +SegmentPageName=sitelmissleport +PipPosition=1 +VoltageSource=GeneratorB +HeatSink=Condenser1 +AuxScreenNumber=2 +AuxScreenPlacement=1 +[AmmoBinLRM15_2] +Type=AmmoBinClassID +Include=ammnrk15.sub +WatchedSubsystem=LRM15_2 +AmmoCount=20 +[LRM15_2] +AmmoBin=AmmoBinLRM15_2 +Type=MissileLauncherClassID +Include=nrk15.sub +SegmentPageName=sitermissleport +PipPosition=2 +VoltageSource=GeneratorB +HeatSink=Condenser3 +AuxScreenNumber=9 +AuxScreenPlacement=3 +[MessageManager] +Type=SubsystemMessageManagerClassID +ExplosionModelFile=majhit 1.0 +TerrainHitExplosion=gndhit +RendererCompensateTime=0.3 +[MechTech] +Type=MechTechClassID +AlarmModel=mechalrm +SubsystemFlags=DontReplicateFlag diff --git a/CONTENT/BT/MODELS/VUL1DMG.EXP b/CONTENT/BT/MODELS/VUL1DMG.EXP new file mode 100644 index 0000000..c9b1598 --- /dev/null +++ b/CONTENT/BT/MODELS/VUL1DMG.EXP @@ -0,0 +1,28 @@ +[OneDamage] +ExplosionModelFile=dam1hit +DamageLevel=0.2 +TimeDelay=0.0 + +[TwoDamage] +ExplosionModelFile=dam2hit +DamageLevel=0.4 +TimeDelay=0.0 + +[ThreeDamage] +ExplosionModelFile=dam3hit +DamageLevel=0.6 +TimeDelay=0.0 + +[FourDamage] +ExplosionModelFile=dam4hit +DamageLevel=0.8 +TimeDelay=0.0 + +[DestroyedExplosion] +ExplosionModelFile=desthit +GraphicState=Destroyed + +[GoneExplosion] +ExplosionModelFile=desthit +GraphicState=Gone + diff --git a/CONTENT/BT/MODELS/VUL1L4.CTL b/CONTENT/BT/MODELS/VUL1L4.CTL new file mode 100644 index 0000000..f395080 --- /dev/null +++ b/CONTENT/BT/MODELS/VUL1L4.CTL @@ -0,0 +1,974 @@ +[StickPosition_JP] +//----------------------------------------------------------------------- +// Joystick +//----------------------------------------------------------------------- +IOMapping=JoystickPhysical +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=StickPosition +Mode=ModeAlwaysActive + +[Throttle_ST] +//----------------------------------------------------------------------- +// Throttle +//----------------------------------------------------------------------- +IOMapping=ScalarThrottle +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=ThrottlePosition +Mode=ModeAlwaysActive + +//----------------------------------------------------------------------- +// Misc. switches +//----------------------------------------------------------------------- +[ReverseThrust_BT1] +IOMapping=ButtonThrottle1 +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=ReverseThrust +Mode=ModeAlwaysActive + +[TorsoCenter_BJHU] +IOMapping=ButtonJoystickHatUp +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoCenter +Mode=ModeAlwaysActive + +[LookLeft_BJHL] +IOMapping=ButtonJoystickHatLeft +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=LookLeft +Mode=ModeAlwaysActive + +[LookRight_BJHR] +IOMapping=ButtonJoystickHatRight +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=LookRight +Mode=ModeAlwaysActive + +[LookBack_BJHD] +IOMapping=ButtonJoystickHatDown +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=LookBehind +Mode=ModeAlwaysActive + +//----------------------------------------------------------------------- +// Secondary mappings +//----------------------------------------------------------------------- +[Button_Sec_1] // Zoom radar in (magnify image) +IOMapping=ButtonSecondary1 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=ZoomIn +Mode=ModeAlwaysActive + +[Button_Sec_2] // Zoom radar out (reduce image) +IOMapping=ButtonSecondary2 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=ZoomOut +Mode=ModeAlwaysActive + +// +// 'Heat vision' mapped to secondary +// SGM 1/6/97 + +[Button_Sec_3] // Toggle heat vision +IOMapping=ButtonSecondary3 +Type=EventMapping +Subsystem=ThermalSight +MessageID=ToggleLamp +Mode=ModeAlwaysActive + +// +// 'Duck' remapped to real message and location. +// GDU 7/9/96 + +[Button_Sec_4] // Request crouch position +IOMapping=ButtonSecondary4 +Type=EventMapping +MessageID=DuckRequest +Mode=ModeAlwaysActive + +[Button_Sec_5] // Toggle searchlight +IOMapping=ButtonSecondary5 +Type=EventMapping +Subsystem=Searchlight +MessageID=ToggleLamp +Mode=ModeAlwaysActive + +[Button_Sec_6] // Cycle through damage display modes +IOMapping=ButtonSecondary6 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=CycleDisplayMode +Mode=ModeAlwaysActive + +[Button_Sec_7] // Cycle through control modes +IOMapping=ButtonSecondary7 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=CycleControlMode +Mode=ModeAlwaysActive + +// ButtonSecondary8 presently unused + +[Button_Sec_9] // Toggle generator 'a' +IOMapping=ButtonSecondary9 +Type=EventMapping +Subsystem=GeneratorA +MessageID=ToggleGeneratorOnOff +Mode=ModeAlwaysActive + +[Button_Sec_10] // Toggle generator 'b' +IOMapping=ButtonSecondary10 +Type=EventMapping +Subsystem=GeneratorB +MessageID=ToggleGeneratorOnOff +Mode=ModeAlwaysActive + +[Button_Sec_11] // Toggle generator 'c' +IOMapping=ButtonSecondary11 +Type=EventMapping +Subsystem=GeneratorC +MessageID=ToggleGeneratorOnOff +Mode=ModeAlwaysActive + +[Button_Sec_12] // Toggle generator 'd' +IOMapping=ButtonSecondary12 +Type=EventMapping +Subsystem=GeneratorD +MessageID=ToggleGeneratorOnOff +Mode=ModeAlwaysActive + +//----------------------------------------- +// Heat Management Screen Mappings +//----------------------------------------- +[Condenser1_Button] +IOMapping=ButtonAuxUpperLeft1 +Type=EventMapping +Subsystem=Condenser1 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Condenser2_Button] +IOMapping=ButtonAuxUpperLeft2 +Type=EventMapping +Subsystem=Condenser2 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Condenser3_Button] +IOMapping=ButtonAuxUpperLeft3 +Type=EventMapping +Subsystem=Condenser3 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Reservoir_Button] +IOMapping=ButtonAuxUpperLeft4 +Type=EventMapping +Subsystem=Reservoir +MessageID=InjectCoolant +Mode=ModeAlwaysActive + +[Condenser4_Button] +IOMapping=ButtonAuxUpperLeft5 +Type=EventMapping +Subsystem=Condenser4 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Condenser5_Button] +IOMapping=ButtonAuxUpperLeft6 +Type=EventMapping +Subsystem=Condenser5 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Condenser6_Button] +IOMapping=ButtonAuxUpperLeft7 +Type=EventMapping +Subsystem=Condenser6 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Reduce_Button] +IOMapping=ButtonAuxUpperLeft8 +Type=EventMapping +MessageID=BalanceCoolant +Mode=ModeAlwaysActive + +//----------------------------------------------------------------------- +// Aux 1 mappings +//----------------------------------------------------------------------- +//------------------------------------------ +// Aux 1 'Quad screen' mappings +//------------------------------------------ +[MFD1_to_Mode_1] // To mode 1 +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Eng1 +Mode=ModeMFD1Quad + +[MFD1_Configure_Trigger_1] // Configure +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Subsystem=PPC_1 +MessageID=ConfigureMappables +Mode=ModeMFD1Quad + +[MFD1_to_Mode_2] // To mode 2 +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Eng2 +Mode=ModeMFD1Quad + +[MFD1_Configure_Trigger_2] // Configure +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Subsystem=LRM15_1 +MessageID=ConfigureMappables +Mode=ModeMFD1Quad + +[MFD1_to_Mode_3] // To mode 3 +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Eng3 +Mode=ModeMFD1Quad + +[MFD1_Configure_Trigger_3] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Subsystem=ERSLaser_3 +MessageID=ConfigureMappables +Mode=ModeMFD1Quad + +[Aux_1_Mode_1_to_MFD1] +IOMapping=ButtonAuxLowerLeft8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Quad +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_Select_GeneratorA] +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Subsystem=PPC_1 +MessageID=SelectGeneratorA +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_Select_GeneratorB] +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Subsystem=PPC_1 +MessageID=SelectGeneratorB +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_Select_GeneratorC] +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Subsystem=PPC_1 +MessageID=SelectGeneratorC +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_Select_GeneratorD] +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Subsystem=PPC_1 +MessageID=SelectGeneratorD +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_OPTION] +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Subsystem=PPC_1 +MessageID=ToggleSeekVoltage +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Subsystem=PPC_1 +MessageID=ToggleGeneratorMode +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_ToggleCooling] +IOMapping=ButtonAuxLowerLeft7 +Type=EventMapping +Subsystem=PPC_1 +MessageID=ToggleCooling +Mode=ModeMFD1Eng1 + +//-------------------------------------------- +// Aux 1 'Mode 2' mappings, AuxScreenNumber=2 +//-------------------------------------------- +[Aux_1_Mode_2_to_MFD1] +IOMapping=ButtonAuxLowerLeft8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Quad +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_Select_GeneratorA] +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Subsystem=LRM15_1 +MessageID=SelectGeneratorA +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_Select_GeneratorB] +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Subsystem=LRM15_1 +MessageID=SelectGeneratorB +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_Select_GeneratorC] +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Subsystem=LRM15_1 +MessageID=SelectGeneratorC +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_Select_GeneratorD] +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Subsystem=LRM15_1 +MessageID=SelectGeneratorD +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_OPTION] +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Subsystem=LRM15_1 +MessageID=EjectAmmo +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Subsystem=LRM15_1 +MessageID=ToggleGeneratorMode +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_ToggleCooling] +IOMapping=ButtonAuxLowerLeft7 +Type=EventMapping +Subsystem=LRM15_1 +MessageID=ToggleCooling +Mode=ModeMFD1Eng2 + +//--------------------------------------------- +// Aux 1 'Mode 3' mappings, AuxScreenNumber=3 +//--------------------------------------------- +[Aux_1_Mode_3_to_MFD1] +IOMapping=ButtonAuxLowerLeft8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Quad +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_Select_GeneratorA] +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Subsystem=ERSLaser_3 +MessageID=SelectGeneratorA +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_Select_GeneratorB] +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Subsystem=ERSLaser_3 +MessageID=SelectGeneratorB +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_Select_GeneratorC] +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Subsystem=ERSLaser_3 +MessageID=SelectGeneratorC +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_Select_GeneratorD] +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Subsystem=ERSLaser_3 +MessageID=SelectGeneratorD +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_OPTION] +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Subsystem=ERSLaser_3 +MessageID=ToggleSeekVoltage +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Subsystem=ERSLaser_3 +MessageID=ToggleGeneratorMode +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_ToggleCooling] +IOMapping=ButtonAuxLowerLeft7 +Type=EventMapping +Subsystem=ERSLaser_3 +MessageID=ToggleCooling +Mode=ModeMFD1Eng3 + +//-------------------------------------------- +// Aux 1 "Mode 4" Mappings, AuxScreenNumber=4 +//-------------------------------------------- +[MFD2_to_Mode_1] +IOMapping=ButtonAuxUpperCenter1 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Eng1 +Mode=ModeMFD2Quad + +[MFD2_to_Mode_2] +IOMapping=ButtonAuxUpperCenter3 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Eng2 +Mode=ModeMFD2Quad + +[MFD2_to_Mode_3] +IOMapping=ButtonAuxUpperCenter5 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Eng3 +Mode=ModeMFD2Quad + +[MFD2_Configure_Trigger_3] +IOMapping=ButtonAuxUpperCenter6 +Type=EventMapping +Subsystem=ERSLaser_1 +MessageID=ConfigureMappables +Mode=ModeMFD2Quad + +[MFD2_to_Mode_4] +IOMapping=ButtonAuxUpperCenter7 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Eng4 +Mode=ModeMFD2Quad + +[MFD2_Configure_Trigger_4] +IOMapping=ButtonAuxUpperCenter8 +Type=EventMapping +Subsystem=ERSLaser_2 +MessageID=ConfigureMappables +Mode=ModeMFD2Quad + +//-------------------------------------------- +// Aux 2 'Mode 1' mappings, AuxScreenNumber=9 +//-------------------------------------------- +[Aux_2_Mode_1_to_MFD2] +IOMapping=ButtonAuxUpperCenter8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Quad +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_Select_GeneratorA] +IOMapping=ButtonAuxUpperCenter1 +Type=EventMapping +Subsystem=Avionics +MessageID=SelectGeneratorA +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_Select_GeneratorB] +IOMapping=ButtonAuxUpperCenter2 +Type=EventMapping +Subsystem=Avionics +MessageID=SelectGeneratorB +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_Select_GeneratorC] +IOMapping=ButtonAuxUpperCenter3 +Type=EventMapping +Subsystem=Avionics +MessageID=SelectGeneratorC +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_Select_GeneratorD] +IOMapping=ButtonAuxUpperCenter4 +Type=EventMapping +Subsystem=Avionics +MessageID=SelectGeneratorD +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_ToggleGeneratorMode] +IOMapping=ButtonAuxUpperCenter6 +Type=EventMapping +Subsystem=Avionics +MessageID=ToggleGeneratorMode +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_ToggleCooling] +IOMapping=ButtonAuxUpperCenter7 +Type=EventMapping +Subsystem=Avionics +MessageID=ToggleCooling +Mode=ModeMFD2Eng1 + +//-------------------------------------------- +// Aux 2 'Mode 2' mappings, AuxScreenNumber=10 +//-------------------------------------------- +[Aux_2_Mode_2_to_MFD2] +IOMapping=ButtonAuxUpperCenter8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Quad +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_Select_GeneratorA] +IOMapping=ButtonAuxUpperCenter1 +Type=EventMapping +Subsystem=Myomers +MessageID=SelectGeneratorA +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_Select_GeneratorB] +IOMapping=ButtonAuxUpperCenter2 +Type=EventMapping +Subsystem=Myomers +MessageID=SelectGeneratorB +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_Select_GeneratorC] +IOMapping=ButtonAuxUpperCenter3 +Type=EventMapping +Subsystem=Myomers +MessageID=SelectGeneratorC +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_Select_GeneratorD] +IOMapping=ButtonAuxUpperCenter4 +Type=EventMapping +Subsystem=Myomers +MessageID=SelectGeneratorD +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_OPTION] +IOMapping=ButtonAuxUpperCenter5 +Type=EventMapping +Subsystem=Myomers +MessageID=ToggleSeekVoltage +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_ToggleGeneratorMode] +IOMapping=ButtonAuxUpperCenter6 +Type=EventMapping +Subsystem=Myomers +MessageID=ToggleGeneratorMode +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_ToggleCooling] +IOMapping=ButtonAuxUpperCenter7 +Type=EventMapping +Subsystem=Myomers +MessageID=ToggleCooling +Mode=ModeMFD2Eng2 + +//-------------------------------------------- +// Aux 3 'Mode 3' mappings, AuxScreenNumber=11 +//-------------------------------------------- +[Aux_2_Mode_3_to_MFD2] +IOMapping=ButtonAuxUpperCenter8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Quad +Mode=ModeMFD2Eng3 + +[Aux_2_Mode_3_Select_GeneratorA] +IOMapping=ButtonAuxUpperCenter1 +Type=EventMapping +Subsystem=ERSLaser_1 +MessageID=SelectGeneratorA +Mode=ModeMFD2Eng3 + +[Aux_2_Mode_3_Select_GeneratorB] +IOMapping=ButtonAuxUpperCenter2 +Type=EventMapping +Subsystem=ERSLaser_1 +MessageID=SelectGeneratorB +Mode=ModeMFD2Eng3 + +[Aux_2_Mode_3_Select_GeneratorC] +IOMapping=ButtonAuxUpperCenter3 +Type=EventMapping +Subsystem=ERSLaser_1 +MessageID=SelectGeneratorC +Mode=ModeMFD2Eng3 + +[Aux_2_Mode_3_Select_GeneratorD] +IOMapping=ButtonAuxUpperCenter4 +Type=EventMapping +Subsystem=ERSLaser_1 +MessageID=SelectGeneratorD +Mode=ModeMFD2Eng3 + +[Aux_2_Mode_3_OPTION] +IOMapping=ButtonAuxUpperCenter5 +Type=EventMapping +Subsystem=ERSLaser_1 +MessageID=ToggleSeekVoltage +Mode=ModeMFD2Eng3 + +[Aux_2_Mode_3_ToggleGeneratorMode] +IOMapping=ButtonAuxUpperCenter6 +Type=EventMapping +Subsystem=ERSLaser_1 +MessageID=ToggleGeneratorMode +Mode=ModeMFD2Eng3 + +[Aux_2_Mode_3_ToggleCooling] +IOMapping=ButtonAuxUpperCenter7 +Type=EventMapping +Subsystem=ERSLaser_1 +MessageID=ToggleCooling +Mode=ModeMFD2Eng3 + +//--------------------------------------------- +// Aux 3 'Mode 4' mappings, AuxScreenNumber=12 +//--------------------------------------------- +[Aux_2_Mode_4_to_MFD2] +IOMapping=ButtonAuxUpperCenter8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Quad +Mode=ModeMFD2Eng4 + +[Aux_2_Mode_4_Select_GeneratorA] +IOMapping=ButtonAuxUpperCenter1 +Type=EventMapping +Subsystem=ERSLaser_2 +MessageID=SelectGeneratorA +Mode=ModeMFD2Eng4 + +[Aux_2_Mode_4_Select_GeneratorB] +IOMapping=ButtonAuxUpperCenter2 +Type=EventMapping +Subsystem=ERSLaser_2 +MessageID=SelectGeneratorB +Mode=ModeMFD2Eng4 + +[Aux_2_Mode_4_Select_GeneratorC] +IOMapping=ButtonAuxUpperCenter3 +Type=EventMapping +Subsystem=ERSLaser_2 +MessageID=SelectGeneratorC +Mode=ModeMFD2Eng4 + +[Aux_2_Mode_4_Select_GeneratorD] +IOMapping=ButtonAuxUpperCenter4 +Type=EventMapping +Subsystem=ERSLaser_2 +MessageID=SelectGeneratorD +Mode=ModeMFD2Eng4 + +[Aux_2_Mode_4_OPTION] +IOMapping=ButtonAuxUpperCenter5 +Type=EventMapping +Subsystem=ERSLaser_2 +MessageID=ToggleSeekVoltage +Mode=ModeMFD2Eng4 + +[Aux_2_Mode_4_ToggleGeneratorMode] +IOMapping=ButtonAuxUpperCenter6 +Type=EventMapping +Subsystem=ERSLaser_2 +MessageID=ToggleGeneratorMode +Mode=ModeMFD2Eng4 + +[Aux_2_Mode_4_ToggleCooling] +IOMapping=ButtonAuxUpperCenter7 +Type=EventMapping +Subsystem=ERSLaser_2 +MessageID=ToggleCooling +Mode=ModeMFD2Eng4 + + +//----------------------------------------------------------------------- +// Aux 3 mappings +//----------------------------------------------------------------------- +//------------------------------------------ +// Aux 3 'Quad screen' mappings +//------------------------------------------ +[MFD3_to_Mode_1] +IOMapping=ButtonAuxLowerRight1 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Eng1 +Mode=ModeMFD3Quad + +[MFD3_Configure_Trigger_1] +IOMapping=ButtonAuxLowerRight2 +Type=EventMapping +Subsystem=LRM15_2 +MessageID=ConfigureMappables +Mode=ModeMFD3Quad + +[MFD3_to_Mode_2] +IOMapping=ButtonAuxLowerRight3 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Eng2 +Mode=ModeMFD3Quad + +[MFD3_Configure_Trigger_2] +IOMapping=ButtonAuxLowerRight4 +Type=EventMapping +Subsystem=PPC_2 +MessageID=ConfigureMappables +Mode=ModeMFD3Quad + +[MFD3_to_Mode_4] +IOMapping=ButtonAuxLowerRight7 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Eng4 +Mode=ModeMFD3Quad + +[MFD3_Configure_Trigger_4] +IOMapping=ButtonAuxLowerRight8 +Type=EventMapping +Subsystem=ERSLaser_4 +MessageID=ConfigureMappables +Mode=ModeMFD3Quad + +//-------------------------------------------- +// Aux 3 'Mode 1' mappings, AuxScreenNumber=9 +//-------------------------------------------- +[Aux_3_Mode_1_to_MFD3] +IOMapping=ButtonAuxLowerRight8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Quad +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_Select_GeneratorA] +IOMapping=ButtonAuxLowerRight1 +Type=EventMapping +Subsystem=LRM15_2 +MessageID=SelectGeneratorA +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_Select_GeneratorB] +IOMapping=ButtonAuxLowerRight2 +Type=EventMapping +Subsystem=LRM15_2 +MessageID=SelectGeneratorB +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_Select_GeneratorC] +IOMapping=ButtonAuxLowerRight3 +Type=EventMapping +Subsystem=LRM15_2 +MessageID=SelectGeneratorC +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_Select_GeneratorD] +IOMapping=ButtonAuxLowerRight4 +Type=EventMapping +Subsystem=LRM15_2 +MessageID=SelectGeneratorD +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_OPTION] +IOMapping=ButtonAuxLowerRight5 +Type=EventMapping +Subsystem=LRM15_2 +MessageID=EjectAmmo +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerRight6 +Type=EventMapping +Subsystem=LRM15_2 +MessageID=ToggleGeneratorMode +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_ToggleCooling] +IOMapping=ButtonAuxLowerRight7 +Type=EventMapping +Subsystem=LRM15_2 +MessageID=ToggleCooling +Mode=ModeMFD3Eng1 + +//-------------------------------------------- +// Aux 3 'Mode 2' mappings, AuxScreenNumber=10 +//-------------------------------------------- +[Aux_3_Mode_2_to_MFD3] +IOMapping=ButtonAuxLowerRight8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Quad +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_Select_GeneratorA] +IOMapping=ButtonAuxLowerRight1 +Type=EventMapping +Subsystem=PPC_2 +MessageID=SelectGeneratorA +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_Select_GeneratorB] +IOMapping=ButtonAuxLowerRight2 +Type=EventMapping +Subsystem=PPC_2 +MessageID=SelectGeneratorB +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_Select_GeneratorC] +IOMapping=ButtonAuxLowerRight3 +Type=EventMapping +Subsystem=PPC_2 +MessageID=SelectGeneratorC +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_Select_GeneratorD] +IOMapping=ButtonAuxLowerRight4 +Type=EventMapping +Subsystem=PPC_2 +MessageID=SelectGeneratorD +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_OPTION] +IOMapping=ButtonAuxLowerRight5 +Type=EventMapping +Subsystem=PPC_2 +MessageID=ToggleSeekVoltage +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerRight6 +Type=EventMapping +Subsystem=PPC_2 +MessageID=ToggleGeneratorMode +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_ToggleCooling] +IOMapping=ButtonAuxLowerRight7 +Type=EventMapping +Subsystem=PPC_2 +MessageID=ToggleCooling +Mode=ModeMFD3Eng2 + +//-------------------------------------------- +// Aux 3 'Mode 3' mappings, AuxScreenNumber=11 +//-------------------------------------------- +[Aux_3_Mode_4_to_MFD3] +IOMapping=ButtonAuxLowerRight8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Quad +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_Select_GeneratorA] +IOMapping=ButtonAuxLowerRight1 +Type=EventMapping +Subsystem=ERSLaser_4 +MessageID=SelectGeneratorA +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_Select_GeneratorB] +IOMapping=ButtonAuxLowerRight2 +Type=EventMapping +Subsystem=ERSLaser_4 +MessageID=SelectGeneratorB +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_Select_GeneratorC] +IOMapping=ButtonAuxLowerRight3 +Type=EventMapping +Subsystem=ERSLaser_4 +MessageID=SelectGeneratorC +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_Select_GeneratorD] +IOMapping=ButtonAuxLowerRight4 +Type=EventMapping +Subsystem=ERSLaser_4 +MessageID=SelectGeneratorD +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_OPTION] +IOMapping=ButtonAuxLowerRight5 +Type=EventMapping +Subsystem=ERSLaser_4 +MessageID=ToggleSeekVoltage +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerRight6 +Type=EventMapping +Subsystem=ERSLaser_4 +MessageID=ToggleGeneratorMode +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_ToggleCooling] +IOMapping=ButtonAuxLowerRight7 +Type=EventMapping +Subsystem=ERSLaser_4 +MessageID=ToggleCooling +Mode=ModeMFD3Eng4 +[PPC_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=PPC_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[PPC_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=PPC_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_3_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser_3 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_4_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser_4 +AttributeID=TriggerState +Mode=ModeNonMapping +[LRM15_1_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=LRM15_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[LRM15_2_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=LRM15_2 +AttributeID=TriggerState +Mode=ModeNonMapping diff --git a/CONTENT/BT/MODELS/VUL1THR.CTL b/CONTENT/BT/MODELS/VUL1THR.CTL new file mode 100644 index 0000000..5c7436e --- /dev/null +++ b/CONTENT/BT/MODELS/VUL1THR.CTL @@ -0,0 +1,69 @@ +[StickPosition_JP] +IOMapping=JoystickPhysical +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=StickPosition +Mode=ModeAlwaysActive + +[TorsoLeft_BJHL] +IOMapping=ButtonJoystickHatLeft +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoLeft +Mode=ModeAlwaysActive + +[TorsoRight_BJHR] +IOMapping=ButtonJoystickHatRight +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoRight +Mode=ModeAlwaysActive + +[PPC_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=PPC_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[PPC_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=PPC_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_3_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser_3 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_4_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser_4 +AttributeID=TriggerState +Mode=ModeNonMapping +[LRM15_1_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=LRM15_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[LRM15_2_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=LRM15_2 +AttributeID=TriggerState +Mode=ModeNonMapping diff --git a/CONTENT/BT/MODELS/VUL2.MOD b/CONTENT/BT/MODELS/VUL2.MOD new file mode 100644 index 0000000..d6908e6 --- /dev/null +++ b/CONTENT/BT/MODELS/VUL2.MOD @@ -0,0 +1,132 @@ +[video] +skeleton=vul2.skl +skeletona=vux2.skl +destroyed=vul2d.skl +//destroyeda=vux2d.skl +dzm=vul2skin.dzm +dzma=vux2skin.dzm + +[audio] +internal=vul2int.scp +external=vul2ext.scp + +[collision] +name=vul_cv.sld + +[gauge] +image=thor_ga.gim + +[gaugeMissionReview] +pixelmap=vul2_mr.pcc + +[gamedata] +class=MechClassID +MoverMass=60000.0 +MomentOfInertia=1.75 3.125 1.75 +PositiveLinearDragCoefficients=0.14 0.4 0.07 +NegativeLinearDragCoefficients=0.14 0.2 0.08 +AngularDragCoefficients=0.3 0.5 0.3 +FrictionCoefficient=0.1 +ElasticityCoefficient=0.2 +MinimumBounceSpeed=0.2 +MaxAcceleration=10 +AnimationPrefix=vul +Subsystems=vul2.sub +DamageZones=vul2.dmg +DamageLookupTable=vul2dmg.tbl +RelativeMechValue=1.0 +LookLeftAngle=90 +LookRightAngle=-90 +LookBackAngle=0 +LookFrontAngle=-15 + +WalkingTurnRate=55 +RunningTurnRate=30 + +DeathEffect=vuldead +CameraOffset=0.0 15.0 30.0 +DeathSplashDamage=5 +DeathSplashRadius=50 +TimeDelay=0.3 + +MaxUnstableAcceleration=22.0 +UnstableAccelerationEffect=0.7 +UnstableGunTheEngineEffect=1.0 +UnstableSuperStopEffect=0.5 +UnstableHighVelocityEffect=0.4 +UnstableStopedTurnEffect=1.0 +SuperStopAcceleration=20.0 + +ThrottleAdjustment=0.8 + +UpdateTurnDegreeDiffrence=3 +UpdateTurnVelocityDiffrence=0.045 +UpdatePositionDiffrence=0.3 + +ShadowJointName=jointshadow + + +[ControlMappings] +Thrustmaster=vul2thr.ctl +L4=vul2l4.ctl + +[animations] +animationtransition=vulswr.ani +animation=vulwwl.ani +animation=vulwwr.ani +animation=vulwsr.ani +animation=vulwsl.ani +animationtransition=vulwrl.ani +animationtransition=vulwrr.ani +animation=vulrrl.ani +animation=vulrrr.ani +animation=vulrwl.ani +animation=vulrwr.ani +animation=vulbmp.ani +animation=vulbbl.ani +animation=vulbbr.ani +animation=vulbsl.ani +animation=vulbsr.ani +animationtransition=vulsbl.ani +animationtransition=vulsbr.ani + +animationtransition=vulswri.ani +animation=vulwwli.ani +animation=vulwwri.ani +animation=vulwsri.ani +animation=vulwsli.ani +animationtransition=vulwrli.ani +animationtransition=vulwrri.ani +animation=vulrrli.ani +animation=vulrrri.ani +animation=vulrwli.ani +animation=vulrwri.ani +animation=vulbmpi.ani +animation=vulbbli.ani +animation=vulbbri.ani +animation=vulbsli.ani +animation=vulbsri.ani +animationtransition=vulsbli.ani +animationtransition=vulsbri.ani + +animation=vulggl.ani +animation=vulggr.ani +animation=vulgsl.ani +animation=vulgsr.ani +animationtransition=vulwgl.ani +animationtransition=vulwgr.ani + +animation=vulggli.ani +animation=vulggri.ani +animation=vulgsli.ani +animation=vulgsri.ani +animationtransition=vulwgli.ani +animationtransition=vulwgri.ani + +animation=vulsqu.ani +animation=vulsqd.ani +animation=vulsqui.ani +animation=vulsqdi.ani + +animation=vultrn.ani +animation=vultrni.ani diff --git a/CONTENT/BT/MODELS/VUL2DMG.EXP b/CONTENT/BT/MODELS/VUL2DMG.EXP new file mode 100644 index 0000000..c9b1598 --- /dev/null +++ b/CONTENT/BT/MODELS/VUL2DMG.EXP @@ -0,0 +1,28 @@ +[OneDamage] +ExplosionModelFile=dam1hit +DamageLevel=0.2 +TimeDelay=0.0 + +[TwoDamage] +ExplosionModelFile=dam2hit +DamageLevel=0.4 +TimeDelay=0.0 + +[ThreeDamage] +ExplosionModelFile=dam3hit +DamageLevel=0.6 +TimeDelay=0.0 + +[FourDamage] +ExplosionModelFile=dam4hit +DamageLevel=0.8 +TimeDelay=0.0 + +[DestroyedExplosion] +ExplosionModelFile=desthit +GraphicState=Destroyed + +[GoneExplosion] +ExplosionModelFile=desthit +GraphicState=Gone + diff --git a/CONTENT/BT/MODELS/VUL2DMG.TBL b/CONTENT/BT/MODELS/VUL2DMG.TBL new file mode 100644 index 0000000..307fb13 --- /dev/null +++ b/CONTENT/BT/MODELS/VUL2DMG.TBL @@ -0,0 +1,195 @@ +[LeftFoot] +DamageZone=dz_lfoot 0.5 +DamageZone=dz_ldleg 0.3 +DamageZone=dz_rfoot 0.2 + +[RightFoot] +DamageZone=dz_rfoot 0.5 +DamageZone=dz_rdleg 0.3 +DamageZone=dz_lfoot 0.2 + +[LeftLeg] +DamageZone=dz_luleg 0.4 +DamageZone=dz_ldleg 0.4 +DamageZone=dz_ruleg 0.1 +DamageZone=dz_rdleg 0.1 + +[RightLeg] +DamageZone=dz_ruleg 0.4 +DamageZone=dz_rdleg 0.4 +DamageZone=dz_luleg 0.1 +DamageZone=dz_ldleg 0.1 + +[LeftHip] +DamageZone=dz_luleg 0.5 +DamageZone=dz_hip 0.3 +DamageZone=dz_dtorso 0.1 +DamageZone=dz_lmissle 0.1 + +[FrontHip] +DamageZone=dz_luleg 0.25 +DamageZone=dz_ruleg 0.25 +DamageZone=dz_hip 0.3 +DamageZone=dz_dtorso 0.2 + +[RearHip] +DamageZone=dz_luleg 0.25 +DamageZone=dz_ruleg 0.25 +DamageZone=dz_hip 0.3 +DamageZone=dz_reardtorso 0.2 + +[RightHip] +DamageZone=dz_ruleg 0.5 +DamageZone=dz_hip 0.3 +DamageZone=dz_dtorso 0.1 +DamageZone=dz_rmissle 0.1 + +[LeftWaist] +DamageZone=dz_ltorso 0.15 +DamageZone=dz_rearltorso 0.1 +DamageZone=dz_luleg 0.25 +DamageZone=dz_dtorso 0.25 +DamageZone=dz_reardtorso 0.1 +DamageZone=dz_hip 0.15 + +[FrontWaist] +DamageZone=dz_ruleg 0.075 +DamageZone=dz_luleg 0.075 +DamageZone=dz_ltorso 0.2 +DamageZone=dz_rtorso 0.2 +DamageZone=dz_dtorso 0.3 +DamageZone=dz_hip 0.15 + +[RearWaist] +DamageZone=dz_ruleg 0.075 +DamageZone=dz_luleg 0.075 +DamageZone=dz_rearltorso 0.2 +DamageZone=dz_rearrtorso 0.2 +DamageZone=dz_reardtorso 0.3 +DamageZone=dz_hip 0.15 + +[RightWaist] +DamageZone=dz_rtorso 0.15 +DamageZone=dz_rearrtorso 0.1 +DamageZone=dz_ruleg 0.25 +DamageZone=dz_dtorso 0.25 +DamageZone=dz_reardtorso 0.1 +DamageZone=dz_hip 0.15 + +[LeftChest] +DamageZone=dz_lmissle 0.5 +DamageZone=dz_ltorso 0.25 +DamageZone=dz_rearltorso 0.15 +DamageZone=dz_utorso 0.05 +DamageZone=dz_rearutorso 0.05 + +[RightChest] +DamageZone=dz_rmissle 0.5 +DamageZone=dz_rtorso 0.25 +DamageZone=dz_rearrtorso 0.15 +DamageZone=dz_utorso 0.05 +DamageZone=dz_rearutorso 0.05 + +[FrontChest] +DamageZone=dz_lmissle 0.05 +DamageZone=dz_rmissle 0.05 +DamageZone=dz_ltorso 0.2 +DamageZone=dz_rtorso 0.2 +DamageZone=dz_utorso 0.3 +DamageZone=dz_searchlight 0.2 + +[RearChest] +DamageZone=dz_lmissle 0.05 +DamageZone=dz_rmissle 0.05 +DamageZone=dz_rearltorso 0.25 +DamageZone=dz_rearrtorso 0.25 +DamageZone=dz_rearutorso 0.35 +DamageZone=dz_utorso 0.05 + +[TopLeft] +DamageZone=dz_utorso 0.5 +DamageZone=dz_ltorso 0.35 +DamageZone=dz_rtorso 0.15 + +[TopRight] +DamageZone=dz_utorso 0.5 +DamageZone=dz_ltorso 0.15 +DamageZone=dz_rtorso 0.35 + +// The data in this table is totally bogus. GDU 12-2-95 +[Layer1] +PieSlice=RightFoot +PieSlice=RightFoot +PieSlice=LeftFoot +PieSlice=LeftFoot +PieSlice=LeftFoot +PieSlice=LeftFoot +PieSlice=RightFoot +PieSlice=RightFoot +RotateWithTorso=False + +[Layer2] +PieSlice=RightLeg +PieSlice=RightLeg +PieSlice=LeftLeg +PieSlice=LeftLeg +PieSlice=LeftLeg +PieSlice=LeftLeg +PieSlice=RightLeg +PieSlice=RightLeg +RotateWithTorso=False + +[Layer3] +PieSlice=RightLeg +PieSlice=FrontHip +PieSlice=FrontHip +PieSlice=LeftLeg +PieSlice=LeftLeg +PieSlice=RearHip +PieSlice=RearHip +PieSlice=RightLeg +RotateWithTorso=False + +[Layer4] +PieSlice=RightHip +PieSlice=FrontHip +PieSlice=FrontHip +PieSlice=LeftHip +PieSlice=LeftHip +PieSlice=RearHip +PieSlice=RearHip +PieSlice=RightHip +RotateWithTorso=True + +[Layer5] +PieSlice=RightWaist +PieSlice=FrontWaist +PisSlice=FrontWaist +PieSlice=LeftWaist +PieSlice=LeftWaist +PieSlice=RearWaist +PieSlice=RearWaist +PieSlice=RightWaist +RotateWithTorso=True + +[Layer6] +PieSlice=RightChest +PieSlice=FrontChest +PieSlice=FrontChest +PieSlice=LeftChest +PieSlice=LeftChest +PieSlice=RearChest +PieSlice=RearChest +PieSlice=RightChest +RotateWithTorso=True + +[Layer7] +PieSlice=TopRight +PieSlice=TopRight +PieSlice=TopLeft +PieSlice=TopLeft +PieSlice=TopLeft +PieSlice=TopLeft +PieSlice=TopRight +PieSlice=TopRight +RotateWithTorso=True diff --git a/CONTENT/BT/MODELS/VUL2THR.CTL b/CONTENT/BT/MODELS/VUL2THR.CTL new file mode 100644 index 0000000..dddf8ad --- /dev/null +++ b/CONTENT/BT/MODELS/VUL2THR.CTL @@ -0,0 +1,81 @@ +[StickPosition_JP] +IOMapping=JoystickPhysical +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=StickPosition +Mode=ModeAlwaysActive + +[TorsoLeft_BJHL] +IOMapping=ButtonJoystickHatLeft +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoLeft +Mode=ModeAlwaysActive + +[TorsoRight_BJHR] +IOMapping=ButtonJoystickHatRight +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoRight +Mode=ModeAlwaysActive + +[SLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=SLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[SLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=SLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[SLaser_3_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=SLaser_3 +AttributeID=TriggerState +Mode=ModeNonMapping +[SLaser_4_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=SLaser_4 +AttributeID=TriggerState +Mode=ModeNonMapping +[STRK6_1_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=STRK6_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[STRK6_2_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=STRK6_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[STRK6_3_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=STRK6_3 +AttributeID=TriggerState +Mode=ModeNonMapping +[STRK6_4_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=STRK6_4 +AttributeID=TriggerState +Mode=ModeNonMapping +[STRK6_5_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=STRK6_5 +AttributeID=TriggerState +Mode=ModeNonMapping +[STRK6_6_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=STRK6_6 +AttributeID=TriggerState +Mode=ModeNonMapping diff --git a/CONTENT/BT/MODELS/VULDEAD.MOD b/CONTENT/BT/MODELS/VULDEAD.MOD new file mode 100644 index 0000000..83959ea --- /dev/null +++ b/CONTENT/BT/MODELS/VULDEAD.MOD @@ -0,0 +1,9 @@ +[video] +object=104 3 4 5 1007 15 1001 + +[audio] +external=brnext.scp + +[gamedata] +class=ExplosionClassID +ExplosionDuration=9.0 diff --git a/CONTENT/BT/MODELS/VULDMG.EXP b/CONTENT/BT/MODELS/VULDMG.EXP new file mode 100644 index 0000000..c9b1598 --- /dev/null +++ b/CONTENT/BT/MODELS/VULDMG.EXP @@ -0,0 +1,28 @@ +[OneDamage] +ExplosionModelFile=dam1hit +DamageLevel=0.2 +TimeDelay=0.0 + +[TwoDamage] +ExplosionModelFile=dam2hit +DamageLevel=0.4 +TimeDelay=0.0 + +[ThreeDamage] +ExplosionModelFile=dam3hit +DamageLevel=0.6 +TimeDelay=0.0 + +[FourDamage] +ExplosionModelFile=dam4hit +DamageLevel=0.8 +TimeDelay=0.0 + +[DestroyedExplosion] +ExplosionModelFile=desthit +GraphicState=Destroyed + +[GoneExplosion] +ExplosionModelFile=desthit +GraphicState=Gone + diff --git a/CONTENT/BT/MODELS/VULL4.CTL b/CONTENT/BT/MODELS/VULL4.CTL new file mode 100644 index 0000000..54857f9 --- /dev/null +++ b/CONTENT/BT/MODELS/VULL4.CTL @@ -0,0 +1,974 @@ +[StickPosition_JP] +//----------------------------------------------------------------------- +// Joystick +//----------------------------------------------------------------------- +IOMapping=JoystickPhysical +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=StickPosition +Mode=ModeAlwaysActive + +[Throttle_ST] +//----------------------------------------------------------------------- +// Throttle +//----------------------------------------------------------------------- +IOMapping=ScalarThrottle +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=ThrottlePosition +Mode=ModeAlwaysActive + +//----------------------------------------------------------------------- +// Misc. switches +//----------------------------------------------------------------------- +[ReverseThrust_BT1] +IOMapping=ButtonThrottle1 +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=ReverseThrust +Mode=ModeAlwaysActive + +[TorsoCenter_BJHU] +IOMapping=ButtonJoystickHatUp +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoCenter +Mode=ModeAlwaysActive + +[LookLeft_BJHL] +IOMapping=ButtonJoystickHatLeft +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=LookLeft +Mode=ModeAlwaysActive + +[LookRight_BJHR] +IOMapping=ButtonJoystickHatRight +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=LookRight +Mode=ModeAlwaysActive + +[LookBack_BJHD] +IOMapping=ButtonJoystickHatDown +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=LookBehind +Mode=ModeAlwaysActive + +//----------------------------------------------------------------------- +// Secondary mappings +//----------------------------------------------------------------------- +[Button_Sec_1] // Zoom radar in (magnify image) +IOMapping=ButtonSecondary1 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=ZoomIn +Mode=ModeAlwaysActive + +[Button_Sec_2] // Zoom radar out (reduce image) +IOMapping=ButtonSecondary2 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=ZoomOut +Mode=ModeAlwaysActive + +// +// 'Heat vision' mapped to secondary +// SGM 1/6/97 + +[Button_Sec_3] // Toggle heat vision +IOMapping=ButtonSecondary3 +Type=EventMapping +Subsystem=ThermalSight +MessageID=ToggleLamp +Mode=ModeAlwaysActive + +// +// 'Duck' remapped to real message and location. +// GDU 7/9/96 + +[Button_Sec_4] // Request crouch position +IOMapping=ButtonSecondary4 +Type=EventMapping +MessageID=DuckRequest +Mode=ModeAlwaysActive + +[Button_Sec_5] // Toggle searchlight +IOMapping=ButtonSecondary5 +Type=EventMapping +Subsystem=Searchlight +MessageID=ToggleLamp +Mode=ModeAlwaysActive + +[Button_Sec_6] // Cycle through damage display modes +IOMapping=ButtonSecondary6 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=CycleDisplayMode +Mode=ModeAlwaysActive + +[Button_Sec_7] // Cycle through control modes +IOMapping=ButtonSecondary7 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=CycleControlMode +Mode=ModeAlwaysActive + +// ButtonSecondary8 presently unused + +[Button_Sec_9] // Toggle generator 'a' +IOMapping=ButtonSecondary9 +Type=EventMapping +Subsystem=GeneratorA +MessageID=ToggleGeneratorOnOff +Mode=ModeAlwaysActive + +[Button_Sec_10] // Toggle generator 'b' +IOMapping=ButtonSecondary10 +Type=EventMapping +Subsystem=GeneratorB +MessageID=ToggleGeneratorOnOff +Mode=ModeAlwaysActive + +[Button_Sec_11] // Toggle generator 'c' +IOMapping=ButtonSecondary11 +Type=EventMapping +Subsystem=GeneratorC +MessageID=ToggleGeneratorOnOff +Mode=ModeAlwaysActive + +[Button_Sec_12] // Toggle generator 'd' +IOMapping=ButtonSecondary12 +Type=EventMapping +Subsystem=GeneratorD +MessageID=ToggleGeneratorOnOff +Mode=ModeAlwaysActive + +//----------------------------------------- +// Heat Management Screen Mappings +//----------------------------------------- +[Condenser1_Button] +IOMapping=ButtonAuxUpperLeft1 +Type=EventMapping +Subsystem=Condenser1 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Condenser2_Button] +IOMapping=ButtonAuxUpperLeft2 +Type=EventMapping +Subsystem=Condenser2 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Condenser3_Button] +IOMapping=ButtonAuxUpperLeft3 +Type=EventMapping +Subsystem=Condenser3 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Reservoir_Button] +IOMapping=ButtonAuxUpperLeft4 +Type=EventMapping +Subsystem=Reservoir +MessageID=InjectCoolant +Mode=ModeAlwaysActive + +[Condenser4_Button] +IOMapping=ButtonAuxUpperLeft5 +Type=EventMapping +Subsystem=Condenser4 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Condenser5_Button] +IOMapping=ButtonAuxUpperLeft6 +Type=EventMapping +Subsystem=Condenser5 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Condenser6_Button] +IOMapping=ButtonAuxUpperLeft7 +Type=EventMapping +Subsystem=Condenser6 +MessageID=MoveValve +Mode=ModeAlwaysActive + +[Reduce_Button] +IOMapping=ButtonAuxUpperLeft8 +Type=EventMapping +MessageID=BalanceCoolant +Mode=ModeAlwaysActive + +//----------------------------------------------------------------------- +// Aux 1 mappings +//----------------------------------------------------------------------- +//------------------------------------------ +// Aux 1 'Quad screen' mappings +//------------------------------------------ +[MFD1_to_Mode_1] // To mode 1 +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Eng1 +Mode=ModeMFD1Quad + +[MFD1_Configure_Trigger_1] // Configure +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Subsystem=LLaser_1 +MessageID=ConfigureMappables +Mode=ModeMFD1Quad + +[MFD1_to_Mode_2] // To mode 2 +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Eng2 +Mode=ModeMFD1Quad + +[MFD1_Configure_Trigger_2] // Configure +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Subsystem=LRM20_1 +MessageID=ConfigureMappables +Mode=ModeMFD1Quad + +[MFD1_to_Mode_3] // To mode 3 +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Eng3 +Mode=ModeMFD1Quad + +[MFD1_Configure_Trigger_3] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Subsystem=ERSLaser_1 +MessageID=ConfigureMappables +Mode=ModeMFD1Quad + +[MFD1_to_Mode_4] // To mode 4 +IOMapping=ButtonAuxLowerLeft7 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Eng4 +Mode=ModeMFD1Quad + +[MFD1_Configure_Trigger_4] // Configure +IOMapping=ButtonAuxLowerLeft8 +Type=EventMapping +Subsystem=ERMLaser_1 +MessageID=ConfigureMappables +Mode=ModeMFD1Quad + +//---------------------------------------------- +// Aux 1 'Mode 1' mappings, AuxScreenNumber=1 +//---------------------------------------------- +[Aux_1_Mode_1_to_MFD1] +IOMapping=ButtonAuxLowerLeft8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Quad +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_Select_GeneratorA] +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Subsystem=LLaser_1 +MessageID=SelectGeneratorA +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_Select_GeneratorB] +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Subsystem=LLaser_1 +MessageID=SelectGeneratorB +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_Select_GeneratorC] +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Subsystem=LLaser_1 +MessageID=SelectGeneratorC +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_Select_GeneratorD] +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Subsystem=LLaser_1 +MessageID=SelectGeneratorD +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_OPTION] +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Subsystem=LLaser_1 +MessageID=ToggleSeekVoltage +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Subsystem=LLaser_1 +MessageID=ToggleGeneratorMode +Mode=ModeMFD1Eng1 + +[Aux_1_Mode_1_ToggleCooling] +IOMapping=ButtonAuxLowerLeft7 +Type=EventMapping +Subsystem=LLaser_1 +MessageID=ToggleCooling +Mode=ModeMFD1Eng1 + +//-------------------------------------------- +// Aux 1 'Mode 2' mappings, AuxScreenNumber=2 +//-------------------------------------------- +[Aux_1_Mode_2_to_MFD1] +IOMapping=ButtonAuxLowerLeft8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Quad +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_Select_GeneratorA] +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Subsystem=LRM20_1 +MessageID=SelectGeneratorA +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_Select_GeneratorB] +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Subsystem=LRM20_1 +MessageID=SelectGeneratorB +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_Select_GeneratorC] +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Subsystem=LRM20_1 +MessageID=SelectGeneratorC +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_Select_GeneratorD] +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Subsystem=LRM20_1 +MessageID=SelectGeneratorD +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_OPTION] +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Subsystem=LRM20_1 +MessageID=EjectAmmo +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Subsystem=LRM20_1 +MessageID=ToggleGeneratorMode +Mode=ModeMFD1Eng2 + +[Aux_1_Mode_2_ToggleCooling] +IOMapping=ButtonAuxLowerLeft7 +Type=EventMapping +Subsystem=LRM20_1 +MessageID=ToggleCooling +Mode=ModeMFD1Eng2 + +//--------------------------------------------- +// Aux 1 'Mode 3' mappings, AuxScreenNumber=3 +//--------------------------------------------- +[Aux_1_Mode_3_to_MFD1] +IOMapping=ButtonAuxLowerLeft8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Quad +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_Select_GeneratorA] +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Subsystem=ERSLaser_1 +MessageID=SelectGeneratorA +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_Select_GeneratorB] +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Subsystem=ERSLaser_1 +MessageID=SelectGeneratorB +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_Select_GeneratorC] +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Subsystem=ERSLaser_1 +MessageID=SelectGeneratorC +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_Select_GeneratorD] +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Subsystem=ERSLaser_1 +MessageID=SelectGeneratorD +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_OPTION] +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Subsystem=ERSLaser_1 +MessageID=ToggleSeekVoltage +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Subsystem=ERSLaser_1 +MessageID=ToggleGeneratorMode +Mode=ModeMFD1Eng3 + +[Aux_1_Mode_3_ToggleCooling] +IOMapping=ButtonAuxLowerLeft7 +Type=EventMapping +Subsystem=ERSLaser_1 +MessageID=ToggleCooling +Mode=ModeMFD1Eng3 + +//-------------------------------------------- +// Aux 1 "Mode 4" Mappings, AuxScreenNumber=4 +//-------------------------------------------- +[Aux_1_Mode_4_to_MFD1] +IOMapping=ButtonAuxLowerLeft8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux1Quad +Mode=ModeMFD1Eng4 + +[Aux_1_Mode_4_Select_GeneratorA] +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Subsystem=ERMLaser_1 +MessageID=SelectGeneratorA +Mode=ModeMFD1Eng4 + +[Aux_1_Mode_4_Select_GeneratorB] +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Subsystem=ERMLaser_1 +MessageID=SelectGeneratorB +Mode=ModeMFD1Eng4 + +[Aux_1_Mode_4_Select_GeneratorC] +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Subsystem=ERMLaser_1 +MessageID=SelectGeneratorC +Mode=ModeMFD1Eng4 + +[Aux_1_Mode_4_Select_GeneratorD] +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Subsystem=ERMLaser_1 +MessageID=SelectGeneratorD +Mode=ModeMFD1Eng4 + +[Aux_1_Mode_4_OPTION] +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Subsystem=ERMLaser_1 +MessageID=ToggleSeekVoltage +Mode=ModeMFD1Eng4 + +[Aux_1_Mode_4_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Subsystem=ERMLaser_1 +MessageID=ToggleGeneratorMode +Mode=ModeMFD1Eng4 + +[Aux_1_Mode_4_ToggleCooling] +IOMapping=ButtonAuxLowerLeft7 +Type=EventMapping +Subsystem=ERMLaser_1 +MessageID=ToggleCooling +Mode=ModeMFD1Eng4 + + +//----------------------------------------------------------------------- +// Aux 2 mappings +//----------------------------------------------------------------------- +//------------------------------------------ +// Aux 2 'Quad screen' mappings +//------------------------------------------ +[MFD2_to_Mode_1] +IOMapping=ButtonAuxUpperCenter1 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Eng1 +Mode=ModeMFD2Quad + +[MFD2_to_Mode_2] +IOMapping=ButtonAuxUpperCenter3 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Eng2 +Mode=ModeMFD2Quad + +[Aux_2_Mode_1_to_MFD2] +IOMapping=ButtonAuxUpperCenter8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Quad +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_Select_GeneratorA] +IOMapping=ButtonAuxUpperCenter1 +Type=EventMapping +Subsystem=Avionics +MessageID=SelectGeneratorA +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_Select_GeneratorB] +IOMapping=ButtonAuxUpperCenter2 +Type=EventMapping +Subsystem=Avionics +MessageID=SelectGeneratorB +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_Select_GeneratorC] +IOMapping=ButtonAuxUpperCenter3 +Type=EventMapping +Subsystem=Avionics +MessageID=SelectGeneratorC +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_Select_GeneratorD] +IOMapping=ButtonAuxUpperCenter4 +Type=EventMapping +Subsystem=Avionics +MessageID=SelectGeneratorD +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_ToggleGeneratorMode] +IOMapping=ButtonAuxUpperCenter6 +Type=EventMapping +Subsystem=Avionics +MessageID=ToggleGeneratorMode +Mode=ModeMFD2Eng1 + +[Aux_2_Mode_1_ToggleCooling] +IOMapping=ButtonAuxUpperCenter7 +Type=EventMapping +Subsystem=Avionics +MessageID=ToggleCooling +Mode=ModeMFD2Eng1 + +//-------------------------------------------- +// Aux 2 'Mode 2' mappings, AuxScreenNumber=10 +//-------------------------------------------- +[Aux_2_Mode_2_to_MFD2] +IOMapping=ButtonAuxUpperCenter8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux2Quad +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_Select_GeneratorA] +IOMapping=ButtonAuxUpperCenter1 +Type=EventMapping +Subsystem=Myomers +MessageID=SelectGeneratorA +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_Select_GeneratorB] +IOMapping=ButtonAuxUpperCenter2 +Type=EventMapping +Subsystem=Myomers +MessageID=SelectGeneratorB +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_Select_GeneratorC] +IOMapping=ButtonAuxUpperCenter3 +Type=EventMapping +Subsystem=Myomers +MessageID=SelectGeneratorC +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_Select_GeneratorD] +IOMapping=ButtonAuxUpperCenter4 +Type=EventMapping +Subsystem=Myomers +MessageID=SelectGeneratorD +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_OPTION] +IOMapping=ButtonAuxUpperCenter5 +Type=EventMapping +Subsystem=Myomers +MessageID=ToggleSeekVoltage +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_ToggleGeneratorMode] +IOMapping=ButtonAuxUpperCenter6 +Type=EventMapping +Subsystem=Myomers +MessageID=ToggleGeneratorMode +Mode=ModeMFD2Eng2 + +[Aux_2_Mode_2_ToggleCooling] +IOMapping=ButtonAuxUpperCenter7 +Type=EventMapping +Subsystem=Myomers +MessageID=ToggleCooling +Mode=ModeMFD2Eng2 + +//-------------------------------------------- +// Aux 3 'Mode 3' mappings, AuxScreenNumber=11 +//-------------------------------------------- +[MFD3_to_Mode_1] +IOMapping=ButtonAuxLowerRight1 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Eng1 +Mode=ModeMFD3Quad + +[MFD3_Configure_Trigger_1] +IOMapping=ButtonAuxLowerRight2 +Type=EventMapping +Subsystem=LRM20_2 +MessageID=ConfigureMappables +Mode=ModeMFD3Quad + +[MFD3_to_Mode_2] +IOMapping=ButtonAuxLowerRight3 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Eng2 +Mode=ModeMFD3Quad + +[MFD3_Configure_Trigger_2] +IOMapping=ButtonAuxLowerRight4 +Type=EventMapping +Subsystem=LLaser_2 +MessageID=ConfigureMappables +Mode=ModeMFD3Quad + +[MFD3_to_Mode_3] +IOMapping=ButtonAuxLowerRight5 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Eng3 +Mode=ModeMFD3Quad + +[MFD3_Configure_Trigger_3] +IOMapping=ButtonAuxLowerRight6 +Type=EventMapping +Subsystem=ERMLaser_2 +MessageID=ConfigureMappables +Mode=ModeMFD3Quad + +[MFD3_to_Mode_4] +IOMapping=ButtonAuxLowerRight7 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Eng4 +Mode=ModeMFD3Quad + +[MFD3_Configure_Trigger_4] +IOMapping=ButtonAuxLowerRight8 +Type=EventMapping +Subsystem=ERSLaser_2 +MessageID=ConfigureMappables +Mode=ModeMFD3Quad + +//-------------------------------------------- +// Aux 3 'Mode 1' mappings, AuxScreenNumber=9 +//-------------------------------------------- +[Aux_3_Mode_1_to_MFD3] +IOMapping=ButtonAuxLowerRight8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Quad +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_Select_GeneratorA] +IOMapping=ButtonAuxLowerRight1 +Type=EventMapping +Subsystem=LRM20_2 +MessageID=SelectGeneratorA +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_Select_GeneratorB] +IOMapping=ButtonAuxLowerRight2 +Type=EventMapping +Subsystem=LRM20_2 +MessageID=SelectGeneratorB +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_Select_GeneratorC] +IOMapping=ButtonAuxLowerRight3 +Type=EventMapping +Subsystem=LRM20_2 +MessageID=SelectGeneratorC +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_Select_GeneratorD] +IOMapping=ButtonAuxLowerRight4 +Type=EventMapping +Subsystem=LRM20_2 +MessageID=SelectGeneratorD +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_OPTION] +IOMapping=ButtonAuxLowerRight5 +Type=EventMapping +Subsystem=LRM20_2 +MessageID=EjectAmmo +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerRight6 +Type=EventMapping +Subsystem=LRM20_2 +MessageID=ToggleGeneratorMode +Mode=ModeMFD3Eng1 + +[Aux_3_Mode_1_ToggleCooling] +IOMapping=ButtonAuxLowerRight7 +Type=EventMapping +Subsystem=LRM20_2 +MessageID=ToggleCooling +Mode=ModeMFD3Eng1 + +//-------------------------------------------- +// Aux 3 'Mode 2' mappings, AuxScreenNumber=10 +//-------------------------------------------- +[Aux_3_Mode_2_to_MFD3] +IOMapping=ButtonAuxLowerRight8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Quad +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_Select_GeneratorA] +IOMapping=ButtonAuxLowerRight1 +Type=EventMapping +Subsystem=LLaser_2 +MessageID=SelectGeneratorA +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_Select_GeneratorB] +IOMapping=ButtonAuxLowerRight2 +Type=EventMapping +Subsystem=LLaser_2 +MessageID=SelectGeneratorB +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_Select_GeneratorC] +IOMapping=ButtonAuxLowerRight3 +Type=EventMapping +Subsystem=LLaser_2 +MessageID=SelectGeneratorC +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_Select_GeneratorD] +IOMapping=ButtonAuxLowerRight4 +Type=EventMapping +Subsystem=LLaser_2 +MessageID=SelectGeneratorD +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_OPTION] +IOMapping=ButtonAuxLowerRight5 +Type=EventMapping +Subsystem=LLaser_2 +MessageID=ToggleSeekVoltage +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerRight6 +Type=EventMapping +Subsystem=LLaser_2 +MessageID=ToggleGeneratorMode +Mode=ModeMFD3Eng2 + +[Aux_3_Mode_2_ToggleCooling] +IOMapping=ButtonAuxLowerRight7 +Type=EventMapping +Subsystem=LLaser_2 +MessageID=ToggleCooling +Mode=ModeMFD3Eng2 + +//-------------------------------------------- +// Aux 3 'Mode 3' mappings, AuxScreenNumber=11 +//-------------------------------------------- +[Aux_3_Mode_3_to_MFD3] +IOMapping=ButtonAuxLowerRight8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Quad +Mode=ModeMFD3Eng3 + +[Aux_3_Mode_3_Select_GeneratorA] +IOMapping=ButtonAuxLowerRight1 +Type=EventMapping +Subsystem=ERMLaser_2 +MessageID=SelectGeneratorA +Mode=ModeMFD3Eng3 + +[Aux_3_Mode_3_Select_GeneratorB] +IOMapping=ButtonAuxLowerRight2 +Type=EventMapping +Subsystem=ERMLaser_2 +MessageID=SelectGeneratorB +Mode=ModeMFD3Eng3 + +[Aux_3_Mode_3_Select_GeneratorC] +IOMapping=ButtonAuxLowerRight3 +Type=EventMapping +Subsystem=ERMLaser_2 +MessageID=SelectGeneratorC +Mode=ModeMFD3Eng3 + +[Aux_3_Mode_3_Select_GeneratorD] +IOMapping=ButtonAuxLowerRight4 +Type=EventMapping +Subsystem=ERMLaser_2 +MessageID=SelectGeneratorD +Mode=ModeMFD3Eng3 + +[Aux_3_Mode_3_OPTION] +IOMapping=ButtonAuxLowerRight5 +Type=EventMapping +Subsystem=ERMLaser_2 +MessageID=ToggleSeekVoltage +Mode=ModeMFD3Eng3 + +[Aux_3_Mode_3_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerRight6 +Type=EventMapping +Subsystem=ERMLaser_2 +MessageID=ToggleGeneratorMode +Mode=ModeMFD3Eng3 + +[Aux_3_Mode_3_ToggleCooling] +IOMapping=ButtonAuxLowerRight7 +Type=EventMapping +Subsystem=ERMLaser_2 +MessageID=ToggleCooling +Mode=ModeMFD3Eng3 + +//--------------------------------------------- +// Aux 3 'Mode 4' mappings, AuxScreenNumber=12 +//--------------------------------------------- +[Aux_3_Mode_4_to_MFD3] +IOMapping=ButtonAuxLowerRight8 +Type=EventMapping +Subsystem=ControlsMapper +MessageID=Aux3Quad +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_Select_GeneratorA] +IOMapping=ButtonAuxLowerRight1 +Type=EventMapping +Subsystem=ERSLaser_2 +MessageID=SelectGeneratorA +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_Select_GeneratorB] +IOMapping=ButtonAuxLowerRight2 +Type=EventMapping +Subsystem=ERSLaser_2 +MessageID=SelectGeneratorB +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_Select_GeneratorC] +IOMapping=ButtonAuxLowerRight3 +Type=EventMapping +Subsystem=ERSLaser_2 +MessageID=SelectGeneratorC +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_Select_GeneratorD] +IOMapping=ButtonAuxLowerRight4 +Type=EventMapping +Subsystem=ERSLaser_2 +MessageID=SelectGeneratorD +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_OPTION] +IOMapping=ButtonAuxLowerRight5 +Type=EventMapping +Subsystem=ERSLaser_2 +MessageID=ToggleSeekVoltage +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_ToggleGeneratorMode] +IOMapping=ButtonAuxLowerRight6 +Type=EventMapping +Subsystem=ERSLaser_2 +MessageID=ToggleGeneratorMode +Mode=ModeMFD3Eng4 + +[Aux_3_Mode_4_ToggleCooling] +IOMapping=ButtonAuxLowerRight7 +Type=EventMapping +Subsystem=ERSLaser_2 +MessageID=ToggleCooling +Mode=ModeMFD3Eng4 +[LLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=LLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[LLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=LLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[LRM20_1_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=LRM20_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[LRM20_2_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=LRM20_2 +AttributeID=TriggerState +Mode=ModeNonMapping diff --git a/CONTENT/BT/MODELS/VULTHR.CTL b/CONTENT/BT/MODELS/VULTHR.CTL new file mode 100644 index 0000000..3d4fd64 --- /dev/null +++ b/CONTENT/BT/MODELS/VULTHR.CTL @@ -0,0 +1,69 @@ +[StickPosition_JP] +IOMapping=JoystickPhysical +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=StickPosition +Mode=ModeAlwaysActive + +[TorsoLeft_BJHL] +IOMapping=ButtonJoystickHatLeft +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoLeft +Mode=ModeAlwaysActive + +[TorsoRight_BJHR] +IOMapping=ButtonJoystickHatRight +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoRight +Mode=ModeAlwaysActive + +[LLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=LLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[LLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=LLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[LRM20_1_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=LRM20_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[LRM20_2_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=LRM20_2 +AttributeID=TriggerState +Mode=ModeNonMapping diff --git a/CONTENT/BT/MODELS/VULTURE.DMG b/CONTENT/BT/MODELS/VULTURE.DMG new file mode 100644 index 0000000..267305b --- /dev/null +++ b/CONTENT/BT/MODELS/VULTURE.DMG @@ -0,0 +1,200 @@ +// This file is intentionally empty and MUST be read-only! +[dz_dtorso] +ExplosionTable=vuldmg.exp +DefaultEffectSiteName=siteedz_dtorso +WeaponDamagePoints=130 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Condenser5 2 0.500000 +CriticalSubsystem=GeneratorD 10 0.500000 +CriticalSubsystem=Avionics 5 0.200000 +CriticalSubsystem=Torso 15 0.333333 +CriticalSubsystem=ERMLaser_1 15 1.000000 +CriticalSubsystem=ERMLaser_2 15 1.000000 +[dz_hip] +ExplosionTable=vuldmg.exp +DefaultEffectSiteName=siteedz_hip +WeaponDamagePoints=125 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Myomers 15 0.142857 +CriticalSubsystem=Gyroscope 30 0.333333 +CriticalSubsystem=Torso 15 0.333333 +[dz_larm] +ExplosionTable=vuldmg.exp +DefaultEffectSiteName=siteedz_larm +WeaponDamagePoints=75 +VitalDamageZone=False +DescendOnDestruction=True +CriticalSubsystem=Condenser4 2 0.500000 +[dz_lddoor] +ExplosionTable=vuldmg.exp +DefaultEffectSiteName=siteedz_lddoor +WeaponDamagePoints=1 +VitalDamageZone=False +[dz_ldleg] +ExplosionTable=vuldmg.exp +DefaultEffectSiteName=siteedz_ldleg +WeaponDamagePoints=95 +VitalDamageZone=True +LegDamageZone=LeftLeg +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Myomers 15 0.142857 +[dz_lfoot] +ExplosionTable=vuldmg.exp +DefaultEffectSiteName=siteedz_lfoot +WeaponDamagePoints=85 +VitalDamageZone=True +LegDamageZone=LeftLeg +CriticalSubsystem=Myomers 15 0.142857 +[dz_lgun] +ExplosionTable=vuldmg.exp +DefaultEffectSiteName=siteedz_lgun +WeaponDamagePoints=80 +VitalDamageZone=False +DescendOnDestruction=True +CriticalSubsystem=Condenser4 2 0.500000 +CriticalSubsystem=LLaser_1 10 1.000000 +CriticalSubsystem=ERSLaser_1 25 1.000000 +[dz_ltorso] +ExplosionTable=vuldmg.exp +DefaultEffectSiteName=siteedz_ltorso +WeaponDamagePoints=158 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Condenser1 2 0.500000 +CriticalSubsystem=GeneratorA 10 0.500000 +CriticalSubsystem=Avionics 5 0.200000 +CriticalSubsystem=AmmoBinLRM20_1 15 1.000000 +CriticalSubsystem=LRM20_1 15 1.000000 +[dz_ludoor] +ExplosionTable=vuldmg.exp +DefaultEffectSiteName=siteedz_ludoor +WeaponDamagePoints=1 +VitalDamageZone=False +[dz_luleg] +ExplosionTable=vuldmg.exp +DefaultEffectSiteName=siteedz_luleg +WeaponDamagePoints=100 +VitalDamageZone=True +LegDamageZone=LeftLeg +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Myomers 15 0.142857 +[dz_rarm] +ExplosionTable=vuldmg.exp +DefaultEffectSiteName=siteedz_rarm +WeaponDamagePoints=75 +VitalDamageZone=False +DescendOnDestruction=True +CriticalSubsystem=Condenser6 2 0.500000 +[dz_rddoor] +ExplosionTable=vuldmg.exp +DefaultEffectSiteName=siteedz_rddoor +WeaponDamagePoints=1 +VitalDamageZone=False +[dz_rdleg] +ExplosionTable=vuldmg.exp +DefaultEffectSiteName=siteedz_rdleg +WeaponDamagePoints=95 +VitalDamageZone=True +LegDamageZone=RightLeg +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Myomers 15 0.142857 +[dz_reardtorso] +ExplosionTable=vuldmg.exp +DefaultEffectSiteName=siteedz_reardtorso +WeaponDamagePoints=88 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Reservoir 10 0.250000 +CriticalSubsystem=Condenser5 2 0.500000 +CriticalSubsystem=GeneratorD 10 0.500000 +CriticalSubsystem=Torso 15 0.333333 +[dz_rearltorso] +ExplosionTable=vuldmg.exp +DefaultEffectSiteName=siteedz_rearltorso +WeaponDamagePoints=88 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Reservoir 10 0.250000 +CriticalSubsystem=Condenser1 2 0.500000 +CriticalSubsystem=GeneratorA 10 0.500000 +[dz_rearrtorso] +ExplosionTable=vuldmg.exp +DefaultEffectSiteName=siteedz_rearrtorso +WeaponDamagePoints=88 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Reservoir 10 0.250000 +CriticalSubsystem=Condenser3 2 0.500000 +CriticalSubsystem=GeneratorC 10 0.500000 +[dz_rearutorso] +ExplosionTable=vuldmg.exp +DefaultEffectSiteName=siteedz_rearutorso +WeaponDamagePoints=125 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Reservoir 10 0.250000 +CriticalSubsystem=Condenser2 2 0.500000 +CriticalSubsystem=GeneratorB 10 0.500000 +CriticalSubsystem=Gyroscope 30 0.333333 +[dz_rfoot] +ExplosionTable=vuldmg.exp +DefaultEffectSiteName=siteedz_rfoot +WeaponDamagePoints=85 +VitalDamageZone=True +LegDamageZone=RightLeg +CriticalSubsystem=Myomers 15 0.142857 +[dz_rgun] +ExplosionTable=vuldmg.exp +DefaultEffectSiteName=siteedz_rgun +WeaponDamagePoints=80 +VitalDamageZone=False +DescendOnDestruction=True +CriticalSubsystem=Condenser6 2 0.500000 +CriticalSubsystem=LLaser_2 10 1.000000 +CriticalSubsystem=ERSLaser_2 25 1.000000 +[dz_rtorso] +ExplosionTable=vuldmg.exp +DefaultEffectSiteName=siteedz_rtorso +WeaponDamagePoints=158 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Condenser3 2 0.500000 +CriticalSubsystem=GeneratorC 10 0.500000 +CriticalSubsystem=Avionics 5 0.200000 +CriticalSubsystem=AmmoBinLRM20_2 15 1.000000 +CriticalSubsystem=LRM20_2 15 1.000000 +[dz_rudoor] +ExplosionTable=vuldmg.exp +DefaultEffectSiteName=siteedz_rudoor +WeaponDamagePoints=1 +VitalDamageZone=False +[dz_ruleg] +ExplosionTable=vuldmg.exp +DefaultEffectSiteName=siteedz_ruleg +WeaponDamagePoints=100 +VitalDamageZone=True +LegDamageZone=RightLeg +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Myomers 15 0.142857 +[dz_searchlight] +ExplosionTable=vuldmg.exp +DefaultEffectSiteName=siteedz_searchlight +WeaponDamagePoints=50 +VitalDamageZone=False +CriticalSubsystem=Avionics 5 0.200000 +CriticalSubsystem=HUD 15 0.500000 +CriticalSubsystem=Searchlight 15 1.000000 +CriticalSubsystem=ThermalSight 30 1.000000 +[dz_utorso] +ExplosionTable=vuldmg.exp +DefaultEffectSiteName=siteedz_utorso +WeaponDamagePoints=175 +VitalDamageZone=True +CriticalSubsystem=HeatSink 100 0.076923 +CriticalSubsystem=Condenser2 2 0.500000 +CriticalSubsystem=GeneratorB 10 0.500000 +CriticalSubsystem=Avionics 5 0.200000 +CriticalSubsystem=Gyroscope 30 0.333333 +CriticalSubsystem=HUD 15 0.500000 diff --git a/CONTENT/BT/MODELS/VULTURE.MOD b/CONTENT/BT/MODELS/VULTURE.MOD new file mode 100644 index 0000000..e60c1ea --- /dev/null +++ b/CONTENT/BT/MODELS/VULTURE.MOD @@ -0,0 +1,132 @@ +[video] +skeleton=vul.skl +skeletona=vux.skl +destroyed=vuld.skl +//destroyeda=vuxd.skl +dzm=vulskin.dzm +dzma=vuxskin.dzm + +[audio] +internal=vulint.scp +external=vulext.scp + +[collision] +name=vul_cv.sld + +[gauge] +image=thor_ga.gim + +[gaugeMissionReview] +pixelmap=vult_mr.pcc + +[gamedata] +class=MechClassID +MoverMass=60000.0 +MomentOfInertia=1.75 3.125 1.75 +PositiveLinearDragCoefficients=0.14 0.4 0.07 +NegativeLinearDragCoefficients=0.14 0.2 0.08 +AngularDragCoefficients=0.3 0.5 0.3 +FrictionCoefficient=0.1 +ElasticityCoefficient=0.2 +MinimumBounceSpeed=0.2 +MaxAcceleration=10 +AnimationPrefix=vul +Subsystems=vulture.sub +DamageZones=vulture.dmg +DamageLookupTable=vuldmg.tbl +RelativeMechValue=1.0 +LookLeftAngle=90 +LookRightAngle=-90 +LookBackAngle=0 +LookFrontAngle=-15 + +WalkingTurnRate=55 +RunningTurnRate=30 + +DeathEffect=vuldead +CameraOffset=0.0 15.0 30.0 +DeathSplashDamage=5 +DeathSplashRadius=50 +TimeDelay=0.3 + +MaxUnstableAcceleration=22.0 +UnstableAccelerationEffect=0.7 +UnstableGunTheEngineEffect=1.0 +UnstableSuperStopEffect=0.5 +UnstableHighVelocityEffect=0.4 +UnstableStopedTurnEffect=1.0 +SuperStopAcceleration=20.0 + +ThrottleAdjustment=0.8 + +UpdateTurnDegreeDiffrence=3 +UpdateTurnVelocityDiffrence=0.045 +UpdatePositionDiffrence=0.3 + +ShadowJointName=jointshadow + + +[ControlMappings] +Thrustmaster=vulthr.ctl +L4=vull4.ctl + +[animations] +animationtransition=vulswr.ani +animation=vulwwl.ani +animation=vulwwr.ani +animation=vulwsr.ani +animation=vulwsl.ani +animationtransition=vulwrl.ani +animationtransition=vulwrr.ani +animation=vulrrl.ani +animation=vulrrr.ani +animation=vulrwl.ani +animation=vulrwr.ani +animation=vulbmp.ani +animation=vulbbl.ani +animation=vulbbr.ani +animation=vulbsl.ani +animation=vulbsr.ani +animationtransition=vulsbl.ani +animationtransition=vulsbr.ani + +animationtransition=vulswri.ani +animation=vulwwli.ani +animation=vulwwri.ani +animation=vulwsri.ani +animation=vulwsli.ani +animationtransition=vulwrli.ani +animationtransition=vulwrri.ani +animation=vulrrli.ani +animation=vulrrri.ani +animation=vulrwli.ani +animation=vulrwri.ani +animation=vulbmpi.ani +animation=vulbbli.ani +animation=vulbbri.ani +animation=vulbsli.ani +animation=vulbsri.ani +animationtransition=vulsbli.ani +animationtransition=vulsbri.ani + +animation=vulggl.ani +animation=vulggr.ani +animation=vulgsl.ani +animation=vulgsr.ani +animationtransition=vulwgl.ani +animationtransition=vulwgr.ani + +animation=vulggli.ani +animation=vulggri.ani +animation=vulgsli.ani +animation=vulgsri.ani +animationtransition=vulwgli.ani +animationtransition=vulwgri.ani + +animation=vulsqu.ani +animation=vulsqd.ani +animation=vulsqui.ani +animation=vulsqdi.ani + +animation=vultrn.ani +animation=vultrni.ani diff --git a/CONTENT/BT/MODELS/VULTURE.SUB b/CONTENT/BT/MODELS/VULTURE.SUB new file mode 100644 index 0000000..b024f33 --- /dev/null +++ b/CONTENT/BT/MODELS/VULTURE.SUB @@ -0,0 +1,215 @@ +[HeatSink] +Type=HeatSinkClassID +Include=heatsnk.sub +HeatSinkCount=18 +SubsystemFlags=DontReplicateFlag + +[Reservoir] +Type=ReservoirClassID +Include=reserve.sub +HeatSink=HeatSink +SegmentPageName=siteeyepoint + +[Condenser1] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser2] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser3] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser4] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser5] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser6] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[GeneratorA] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser1 +SubsystemFlags=DontReplicateFlag + +[GeneratorB] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser2 +SubsystemFlags=DontReplicateFlag + +[GeneratorC] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser3 +SubsystemFlags=DontReplicateFlag + +[GeneratorD] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser5 +SubsystemFlags=DontReplicateFlag + +[Avionics] +Type=SensorClassID +Include=sensor.sub +HeatSink=Condenser2 +VoltageSource=GeneratorD +AuxScreenNumber=5 +SubsystemFlags=DontReplicateFlag + +AuxScreenPlacement=2 +[Myomers] +Type=MyomersClassID +Include=myomers.sub +HeatSink=Condenser5 +VoltageSource=GeneratorD +AuxScreenNumber=6 +SubsystemFlags=DontReplicateFlag + +AuxScreenPlacement=0 +[Gyroscope] +Type=GyroscopeClassID +Include=gyro.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag + +[Torso] +Type=TorsoClassID +Include=torso.sub +WatchedSubsystem=Myomers + +HorizontalRotationPerSecond=40 +VerticalRotationPerSecond=30 +HorizontalLimitRight=-190 +HorizontalLimitLeft=190 +[HUD] +Type=HUDClassID +Include=hud.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag + +[Searchlight] +Type=SearchlightClassID +Include=srchlite.sub +WatchedSubsystem=Avionics +SegmentPageName=sitelight + +[ThermalSight] +Type=ThermalSightClassID +Include=Thermal.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag +[LLaser_1] +Type=EmitterClassID +Include=llaser.sub +SegmentPageName=sitelugunport +PipPosition=1 +VoltageSource=GeneratorA +HeatSink=Condenser4 +AuxScreenNumber=1 +AuxScreenPlacement=4 +[LLaser_2] +Type=EmitterClassID +Include=llaser.sub +SegmentPageName=siterugunport +PipPosition=2 +VoltageSource=GeneratorC +HeatSink=Condenser6 +AuxScreenNumber=10 +AuxScreenPlacement=6 +[ERSLaser_1] +Type=EmitterClassID +Include=erslaser.sub +SegmentPageName=siteldgunport +PipPosition=1 +VoltageSource=GeneratorA +HeatSink=Condenser4 +AuxScreenNumber=3 +AuxScreenPlacement=4 +[ERSLaser_2] +Type=EmitterClassID +Include=erslaser.sub +SegmentPageName=siterdgunport +PipPosition=2 +VoltageSource=GeneratorC +HeatSink=Condenser6 +AuxScreenNumber=12 +AuxScreenPlacement=6 +[ERMLaser_1] +Type=EmitterClassID +Include=ermlaser.sub +SegmentPageName=siteldtorsoport +PipPosition=1 +VoltageSource=GeneratorB +HeatSink=Condenser2 +AuxScreenNumber=4 +AuxScreenPlacement=2 +[ERMLaser_2] +Type=EmitterClassID +Include=ermlaser.sub +SegmentPageName=siterdtorsoport +PipPosition=2 +VoltageSource=GeneratorB +HeatSink=Condenser2 +AuxScreenNumber=11 +AuxScreenPlacement=2 +[AmmoBinLRM20_1] +Type=AmmoBinClassID +Include=ammlrm20.sub +WatchedSubsystem=LRM20_1 +AmmoCount=18 +[LRM20_1] +AmmoBin=AmmoBinLRM20_1 +Type=MissileLauncherClassID +Include=lrm20.sub +SegmentPageName=sitelmissleport +PipPosition=1 +VoltageSource=GeneratorB +HeatSink=Condenser1 +AuxScreenNumber=2 +AuxScreenPlacement=1 +[AmmoBinLRM20_2] +Type=AmmoBinClassID +Include=ammlrm20.sub +WatchedSubsystem=LRM20_2 +AmmoCount=18 +[LRM20_2] +AmmoBin=AmmoBinLRM20_2 +Type=MissileLauncherClassID +Include=lrm20.sub +SegmentPageName=sitermissleport +PipPosition=2 +VoltageSource=GeneratorB +HeatSink=Condenser3 +AuxScreenNumber=9 +AuxScreenPlacement=3 +[MessageManager] +Type=SubsystemMessageManagerClassID +ExplosionModelFile=majhit 1.0 +TerrainHitExplosion=gndhit +RendererCompensateTime=0.3 +[MechTech] +Type=MechTechClassID +AlarmModel=mechalrm +SubsystemFlags=DontReplicateFlag diff --git a/CONTENT/BT/MODELS/WALL1.MOD b/CONTENT/BT/MODELS/WALL1.MOD new file mode 100644 index 0000000..e7f122e --- /dev/null +++ b/CONTENT/BT/MODELS/WALL1.MOD @@ -0,0 +1,11 @@ +[video] +object=wall1.bgf + +[gauge] +image=wall1_ga.gim + +[collision] +name=wall1_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/WALL10K.MOD b/CONTENT/BT/MODELS/WALL10K.MOD new file mode 100644 index 0000000..da9f123 --- /dev/null +++ b/CONTENT/BT/MODELS/WALL10K.MOD @@ -0,0 +1,7 @@ +[collision] +name=wall10k.sld + + +[gamedata] +class=UnscalableTerrainClassID + \ No newline at end of file diff --git a/CONTENT/BT/MODELS/WALL2.MOD b/CONTENT/BT/MODELS/WALL2.MOD new file mode 100644 index 0000000..1b92cf7 --- /dev/null +++ b/CONTENT/BT/MODELS/WALL2.MOD @@ -0,0 +1,11 @@ +[video] +object=wall2.bgf + +[gauge] +image=wall2_ga.gim + +[collision] +name=wall2_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/WALL3.MOD b/CONTENT/BT/MODELS/WALL3.MOD new file mode 100644 index 0000000..002fb84 --- /dev/null +++ b/CONTENT/BT/MODELS/WALL3.MOD @@ -0,0 +1,11 @@ +[video] +object=wall3.bgf + +[gauge] +image=wall3_ga.gim + +[collision] +name=wall3_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/WL1.MOD b/CONTENT/BT/MODELS/WL1.MOD new file mode 100644 index 0000000..befae8e --- /dev/null +++ b/CONTENT/BT/MODELS/WL1.MOD @@ -0,0 +1,8 @@ +[video] +object=wl1.bgf + +[collision] +name=wl1_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/WL2.MOD b/CONTENT/BT/MODELS/WL2.MOD new file mode 100644 index 0000000..9f779f5 --- /dev/null +++ b/CONTENT/BT/MODELS/WL2.MOD @@ -0,0 +1,8 @@ +[video] +object=wl2.bgf + +[collision] +name=wl2_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/WL3.MOD b/CONTENT/BT/MODELS/WL3.MOD new file mode 100644 index 0000000..3f71601 --- /dev/null +++ b/CONTENT/BT/MODELS/WL3.MOD @@ -0,0 +1,8 @@ +[video] +object=wl3.bgf + +[collision] +name=wl3_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/WL4.MOD b/CONTENT/BT/MODELS/WL4.MOD new file mode 100644 index 0000000..fa3d674 --- /dev/null +++ b/CONTENT/BT/MODELS/WL4.MOD @@ -0,0 +1,8 @@ +[video] +object=wl4.bgf + +[collision] +name=wl4_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/WL5.MOD b/CONTENT/BT/MODELS/WL5.MOD new file mode 100644 index 0000000..9bce322 --- /dev/null +++ b/CONTENT/BT/MODELS/WL5.MOD @@ -0,0 +1,8 @@ +[video] +object=wl5.bgf + +[collision] +name=wl5_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/WL6.MOD b/CONTENT/BT/MODELS/WL6.MOD new file mode 100644 index 0000000..de06f3c --- /dev/null +++ b/CONTENT/BT/MODELS/WL6.MOD @@ -0,0 +1,8 @@ +[video] +object=wl6.bgf + +[collision] +name=wl6_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/WL7.MOD b/CONTENT/BT/MODELS/WL7.MOD new file mode 100644 index 0000000..e2a85e4 --- /dev/null +++ b/CONTENT/BT/MODELS/WL7.MOD @@ -0,0 +1,8 @@ +[video] +object=wl7.bgf + +[collision] +name=wl7_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/WL8.MOD b/CONTENT/BT/MODELS/WL8.MOD new file mode 100644 index 0000000..ae0ed73 --- /dev/null +++ b/CONTENT/BT/MODELS/WL8.MOD @@ -0,0 +1,8 @@ +[video] +object=wl8.bgf + +[collision] +name=wl8_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/WL9.MOD b/CONTENT/BT/MODELS/WL9.MOD new file mode 100644 index 0000000..61ef4a3 --- /dev/null +++ b/CONTENT/BT/MODELS/WL9.MOD @@ -0,0 +1,8 @@ +[video] +object=wl9.bgf + +[collision] +name=wl9_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/WNDSFX01.MOD b/CONTENT/BT/MODELS/WNDSFX01.MOD new file mode 100644 index 0000000..f39c507 --- /dev/null +++ b/CONTENT/BT/MODELS/WNDSFX01.MOD @@ -0,0 +1,5 @@ +[audio] +external=wndext01.scp + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/WNDSFX02.MOD b/CONTENT/BT/MODELS/WNDSFX02.MOD new file mode 100644 index 0000000..f39c507 --- /dev/null +++ b/CONTENT/BT/MODELS/WNDSFX02.MOD @@ -0,0 +1,5 @@ +[audio] +external=wndext01.scp + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/WNDSFX03.MOD b/CONTENT/BT/MODELS/WNDSFX03.MOD new file mode 100644 index 0000000..f39c507 --- /dev/null +++ b/CONTENT/BT/MODELS/WNDSFX03.MOD @@ -0,0 +1,5 @@ +[audio] +external=wndext01.scp + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT/MODELS/WOLF.MOD b/CONTENT/BT/MODELS/WOLF.MOD new file mode 100644 index 0000000..0fa27a8 --- /dev/null +++ b/CONTENT/BT/MODELS/WOLF.MOD @@ -0,0 +1,2 @@ +[gamedata] +class=BTTeamClassID diff --git a/CONTENT/BT/MODELS/WPN.BLD b/CONTENT/BT/MODELS/WPN.BLD new file mode 100644 index 0000000..c0c1fbd --- /dev/null +++ b/CONTENT/BT/MODELS/WPN.BLD @@ -0,0 +1,64 @@ +[ammo] +machgun.sub=ammomg.sub +gaussrfl.sub=ammogaus.sub + +afc5.sub=ammafc5.sub +afc25.sub=ammafc25.sub +afc50.sub=ammafc50.sub +afc100.sub=amafc100.sub + +srm2.sub=ammsrm2.sub +srm4.sub=ammsrm4.sub +srm6.sub=ammsrm6.sub + +strk2.sub=ammstrk2.sub +strk4.sub=ammstrk4.sub +strk6.sub=ammstrk6.sub + +lrm5.sub=ammlrm5.sub +lrm10.sub=ammlrm10.sub +lrm15.sub=ammlrm15.sub +lrm20.sub=ammlrm20.sub + +nrk5.sub=ammnrk5.sub +nrk10.sub=ammnrk10.sub +nrk15.sub=ammnrk15.sub +nrk20.sub=ammnrk20.sub + +[weapon] +machgun.sub=ProjectileWeaponClassID +gaussrfl.sub=ProjectileWeaponClassID + +afc5.sub=ProjectileWeaponClassID +afc25.sub=ProjectileWeaponClassID +afc50.sub=ProjectileWeaponClassID +afc100.sub=ProjectileWeaponClassID + +srm2.sub=MissileLauncherClassID +srm4.sub=MissileLauncherClassID +srm6.sub=MissileLauncherClassID + +strk2.sub=MissileLauncherClassID +strk4.sub=MissileLauncherClassID +strk6.sub=MissileLauncherClassID + +lrm5.sub=MissileLauncherClassID +lrm10.sub=MissileLauncherClassID +lrm15.sub=MissileLauncherClassID +lrm20.sub=MissileLauncherClassID + +nrk5.sub=MissileLauncherClassID +nrk10.sub=MissileLauncherClassID +nrk15.sub=MissileLauncherClassID +nrk20.sub=MissileLauncherClassID + +mlaser.sub=EmitterClassID +slaser.sub=EmitterClassID +llaser.sub=EmitterClassID + +erslaser.sub=EmitterClassID +ermlaser.sub=EmitterClassID +erllaser.sub=EmitterClassID + +ppc.sub=PPCClassID +erppc.sub=PPCClassID diff --git a/CONTENT/BT/MODELS/WPNDMG.TBL b/CONTENT/BT/MODELS/WPNDMG.TBL new file mode 100644 index 0000000..eab0d79 --- /dev/null +++ b/CONTENT/BT/MODELS/WPNDMG.TBL @@ -0,0 +1,47 @@ +[LeftFoot] +DamageZone=dz_lfoot 1.0 +[RightFoot] +DamageZone=dz_rfoot 1.0 + +[LeftLeg] +DamageZone=dz_luleg 0.4 +DamageZone=dz_ldleg 0.4 +DamageZone=dz_ruleg 0.1 +DamageZone=dz_rdleg 0.1 + +[RightLeg] +DamageZone=dz_ruleg 0.4 +DamageZone=dz_rdleg 0.4 +DamageZone=dz_luleg 0.1 +DamageZone=dz_ldleg 0.1 + +[UpperLeft] +DamageZone=dz_larm 0.5 +DamageZone=dz_lgun 0.5 + +[UpperRight] +DamageZone=dz_rarm 0.5 +DamageZone=dz_rgun 0.5 + +[Top] +DamageZone=dz_missle 1.0 + +// The data in this table is totally bogus. GDU 12-2-95 +[Layer1] +PieSlice=LeftFoot +PieSlice=RightFoot +RotateWithTorso=False + +[Layer2] +PieSlice=LeftLeg +PieSlice=RightLeg +RotateWithTorso=False + +[Layer3] +PieSlice=UpperLeft +PieSlice=UpperRight +RotateWithTorso=True + +[Layer4] +PieSlice=Top +RotateWithTorso=True \ No newline at end of file diff --git a/CONTENT/BT/MODELS/WPNMECH.MOD b/CONTENT/BT/MODELS/WPNMECH.MOD new file mode 100644 index 0000000..9fdffe6 --- /dev/null +++ b/CONTENT/BT/MODELS/WPNMECH.MOD @@ -0,0 +1,127 @@ +[video] +skeleton=thr.skl +skeletona=thx.skl +destroyed=thrd.skl +destroyeda=thxd.skl +dzm=thrskin.dzm +dzma=thxskin.dzm + +//[audio] +//internal=wpnint.scp + +[collision] +name=thr_cv.sld + +[gauge] +image=thor_ga.gim + +[gamedata] +class=MechClassID +MoverMass=60000.0 +MomentOfInertia=1.75 3.125 1.75 +PositiveLinearDragCoefficients=0.14 0.4 0.07 +NegativeLinearDragCoefficients=0.14 0.2 0.08 +AngularDragCoefficients=0.3 0.5 0.3 +FrictionCoefficient=0.1 +ElasticityCoefficient=0.2 +MinimumBounceSpeed=0.2 +MaxAcceleration=10 +AnimationPrefix=thr +Subsystems=wpnmech.sub +DamageZones=wpnmech.dmg +DamageLookupTable=wpndmg.tbl +RelativeMechValue=1.0 +LookLeftAngle=60 +LookRightAngle=-60 +LookBackAngle=0 +LookFrontAngle=-15 +RunningTurnRate=10 +WalkingTurnRate=40 +DeathEffect=thrdead +CameraOffset=3.0 8.0 -1.0 +DeathSplashDamage=5 +DeathSplashRadius=50 + +MaxUnstableAcceleration=22.0 +UnstableAccelerationEffect=0.7 +UnstableGunTheEngineEffect=0.8 +UnstableSuperStopEffect=0.25 +UnstableHighVelocityEffect=0.25 +UnstableStopedTurnEffect=1.0 +SuperStopAcceleration=20.0 + +UpdateTurnDegreeDiffrence=3 +UpdateTurnVelocityDiffrence=0.045 +UpdatePositionDiffrence=0.3 + +[ControlMappings] +Thrustmaster=wpnthr.ctl +L4=wpnl4.ctl + +[animations] +animationtransition=thrswr.ani +animation=thrwwl.ani +animation=thrwwr.ani +animation=thrwsr.ani +animation=thrwsl.ani +animationtransition=thrwrl.ani +animationtransition=thrwrr.ani +animation=thrrrl.ani +animation=thrrrr.ani +animation=thrrwl.ani +animation=thrrwr.ani +animation=thrbmp.ani +animation=thrbbl.ani +animation=thrbbr.ani +animation=thrbsl.ani +animation=thrbsr.ani +animationtransition=thrsbl.ani +animationtransition=thrsbr.ani + +animationtransition=thrswri.ani +animation=thrwwli.ani +animation=thrwwri.ani +animation=thrwsri.ani +animation=thrwsli.ani +animationtransition=thrwrli.ani +animationtransition=thrwrri.ani +animation=thrrrli.ani +animation=thrrrri.ani +animation=thrrwli.ani +animation=thrrwri.ani +animation=thrbmpi.ani +animation=thrbbli.ani +animation=thrbbri.ani +animation=thrbsli.ani +animation=thrbsri.ani +animationtransition=thrsbli.ani +animationtransition=thrsbri.ani + +animation=thrggl.ani +animation=thrggr.ani +animation=thrgsl.ani +animation=thrgsr.ani +animationtransition=thrwgl.ani +animationtransition=thrwgr.ani + +animation=thrggli.ani +animation=thrggri.ani +animation=thrgsli.ani +animation=thrgsri.ani +animationtransition=thrwgli.ani +animationtransition=thrwgri.ani + +animation=thrsqu.ani +animation=thrsqd.ani +animation=thrsqui.ani +animation=thrsqdi.ani + +animation=thrtrn.ani +animation=thrtrni.ani + +animation=thrff.ani +animation=thrfb.ani +animation=thrfl.ani +animation=thrfr.ani + + diff --git a/CONTENT/BT/MODELS/WPNMECH.SUB b/CONTENT/BT/MODELS/WPNMECH.SUB new file mode 100644 index 0000000..8d0c70c --- /dev/null +++ b/CONTENT/BT/MODELS/WPNMECH.SUB @@ -0,0 +1,186 @@ +[HeatSink] +Type=HeatSinkClassID +Include=heatsnk.sub +HeatSinkCount=28 + +[Reservoir] +Type=ReservoirClassID +Include=reserve.sub +HeatSink=HeatSink + +[Condenser1] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +ValveSetting=1.0 + +[Condenser2] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +ValveSetting=1.0 + +[Condenser3] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +ValveSetting=1.0 + +[Condenser4] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +ValveSetting=1.0 + +[Condenser5] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +ValveSetting=1.0 + +[Condenser6] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +ValveSetting=1.0 + +[GeneratorA] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser1 + +[GeneratorB] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser2 + +[GeneratorC] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser3 + +[GeneratorD] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser5 + +[Avionics] +Type=SensorClassID +Include=sensor.sub +HeatSink=Condenser2 +VoltageSource=GeneratorB +AuxScreenNumber=5 + +[Myomers] +Type=MyomersClassID +Include=myomers.sub +HeatSink=Condenser5 +VoltageSource=GeneratorD +AuxScreenNumber=6 + +[Gyroscope] +Type=GyroscopeClassID +Include=gyro.sub +WatchedSubsystem=Avionics + +[Torso] +Type=TorsoClassID +Include=torso.sub +WatchedSubsystem=Myomers +HorizontalRotationPerSecond=20 +VerticalRotationPerSecond=20 + +[HUD] +Type=HUDClassID +Include=hud.sub +WatchedSubsystem=Avionics + +[Searchlight] +Type=SearchlightClassID +Include=srchlite.sub +WatchedSubsystem=Avionics +SegmentPageName=sitelight + +[AmmoBinAutoCannon] +Type=AmmoBinClassID +Include=ammafc50.sub +WatchedSubsystem=AutoCannon + +[AutoCannon] +Type=ProjectileWeaponClassID +Include=afc50.sub +HeatSink=Condenser6 +AmmoBin=AmmoBinAutoCannon +VoltageSource=GeneratorC +SegmentPageName=sitergunport +AuxScreenNumber=1 +PipPosition=1 + +[AmmoBinMG] +Type=AmmoBinClassID +Include=ammomg.sub +WatchedSubsystem=MG + +[MG] +Type=ProjectileWeaponClassID +Include=machgun.sub +HeatSink=Condenser1 +AmmoBin=AmmoBinMG +VoltageSource=GeneratorC +SegmentPageName=siteltorsoport +AuxScreenNumber=2 +PipPosition=2 + +[PPC] +Type=PPCClassID +Include=ppc.sub +HeatSink=Condenser4 +VoltageSource=GeneratorA +SegmentPageName=sitelgunport +SiteOffset=-0.5 0.0 0.0 +AuxScreenNumber=9 +PipPosition=1 + +[LargeLaser] +Type=EmitterClassID +Include=llaser.sub +HeatSink=Condenser4 +VoltageSource=GeneratorA +SegmentPageName=sitelgunport +SiteOffset=0.5 0.0 0.0 +AuxScreenNumber=10 +PipPosition=2 + +[AmmoBinSRM6] +Type=AmmoBinClassID +Include=ammsrm6.sub +WatchedSubsystem=SRM6 + +[SRM6] +Type=MissileLauncherClassID +Include=srm6.sub +HeatSink=Condenser2 +AmmoBin=AmmoBinSRM6 +VoltageSource=GeneratorB +SegmentPageName=sitemissleport +AuxScreenNumber=7 +PipPosition=1 + +[ERSmallLaser] +Type=EmitterClassID +Include=erslaser.sub +HeatSink=Condenser3 +VoltageSource=GeneratorB +SegmentPageName=sitertorsoport +SiteOffset=0.0 -0.25 0.0 +AuxScreenNumber=3 +PipPosition=1 + + + +[MessageManager] +Type=SubsystemMessageManagerClassID +ExplosionModelFile=minhit 0.5 +ExplosionModelFile=majhit 1.0 +TerrainHitExplosion=gndhit +RendererCompensateTime=0.3 diff --git a/CONTENT/BT/MODELS/WST.MOD b/CONTENT/BT/MODELS/WST.MOD new file mode 100644 index 0000000..553f852 --- /dev/null +++ b/CONTENT/BT/MODELS/WST.MOD @@ -0,0 +1,20 @@ +[video] +; +; wst.mod - Weather station +; +object=wst.bgf wst_FR.bgf wst_LP.bgf +rubble=wstd.bgf wstd_FR.bgf + +[collision] +name=wst_cv.sld + +[gauge] +image=wst_ga.gim + +[gamedata] +class=CulturalIconClassID +DamageZones=med.dmg +StoppingCollisionVolume=1 +ExplosionModelFile=meddead +TimeDelay=0.5 +CrunchExplosionModelFile=stephit diff --git a/CONTENT/BT/NEWSTUFF.BLD b/CONTENT/BT/NEWSTUFF.BLD new file mode 100644 index 0000000..148235d --- /dev/null +++ b/CONTENT/BT/NEWSTUFF.BLD @@ -0,0 +1,21 @@ +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 diff --git a/CONTENT/BT/NULL b/CONTENT/BT/NULL new file mode 100644 index 0000000..8a98a20 --- /dev/null +++ b/CONTENT/BT/NULL @@ -0,0 +1,24 @@ +BattleTech v4.2 +BTL4Application::BTL4Application +GaugeInterpreter: undefined label 'Initialization' +MakeVehicleSystems hud=0x00ce87a8 +Warning: damage zone 'dz_missle' not found! +Warning: damage zone 'dz_missle' not found! +Warning: damage zone 'dz_lmissle' not found! +Warning: damage zone 'dz_rmissle' not found! +Warning: damage zone 'dz_ftorso' not found! +Warning: damage zone 'dz_btorso' not found! +Entity -1:1 class42 couldn't figure out how to MakeEntityRenderables +BTL4Application::RunMissionMessageHandler +Turning Plasma Score Display On +BTL4Application::RunMissionMessageHandler +Turning Plasma Score Display On +Mission stopped by keystroke! +~RankAndScore: I think my score is 1000 +SVGA16::~SVGA16: pixel management statistics ------------ +Number of dirty pixels =2585407 +Number of transferred pixels=1725787 +Times overflowed =0 +Ratio =1.4981 +------------------------------------------------------- +2):>>>> init pxpl ware, mode 0x8 clk 0x9 sog 0 rgb 1 mono 1 dup 0 diff --git a/CONTENT/BT/OMECH.BLD b/CONTENT/BT/OMECH.BLD new file mode 100644 index 0000000..4ce67ad --- /dev/null +++ b/CONTENT/BT/OMECH.BLD @@ -0,0 +1,180 @@ +[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: 119 +// + +[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:116 +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=loki.mod /id:45 +//model=lok1.mod /id:117 +model=thor.mod /id:46 +model=blkhawk.mod /id:47 +//model=bhk1.mod /id:114 +//model=owens.mod /id:48 +//model=vulture.mod /id:73 +//model=vul1.mod /id:118 +model=thr1.mod /id:113 +//model=avatar.mod /id:110 +//model=ava1.mod /id:115 +//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 +// +// Maps +// +map=arena1.map /id:70 +map=arena2.map /id:84 +map=rav.map /id:71 +map=grass.map +map=polar3.map /id:81 +map=polar4.map /id:82 +zone=all.zne + +[zones] +zone=all.zne + \ No newline at end of file diff --git a/CONTENT/BT/RESULT2.TXT b/CONTENT/BT/RESULT2.TXT new file mode 100644 index 0000000..e696c86 --- /dev/null +++ b/CONTENT/BT/RESULT2.TXT @@ -0,0 +1,22 @@ +BattleTech v4.10 +BTL4Application::BTL4Application +GaugeInterpreter: undefined label 'Initialization' +MakeVehicleSystems hud=0x0115d544 +Warning: damage zone 'dz_lmissle' not found! +Warning: damage zone 'dz_rmissle' not found! +Warning: damage zone 'dz_ftorso' not found! +Warning: damage zone 'dz_btorso' not found! +Entity -1:2 class42 couldn't figure out how to MakeEntityRenderables +BTL4Application::RunMissionMessageHandler +Turning Plasma Score Display On +BTL4Application::RunMissionMessageHandler +Turning Plasma Score Display On +Mission stopped by keystroke! +~RankAndScore: I think my score is 1000 +SVGA16::~SVGA16: pixel management statistics ------------ +Number of dirty pixels =31646191 +Number of transferred pixels=28511227 +Times overflowed =0 +Ratio =1.10996 +------------------------------------------------------- +2):>>>> init pxpl ware, mode 0x8 clk 0x9 sog 0 rgb 1 mono 1 dup 0 diff --git a/CONTENT/BT/SHOWENV.BAT b/CONTENT/BT/SHOWENV.BAT new file mode 100644 index 0000000..d0b4698 --- /dev/null +++ b/CONTENT/BT/SHOWENV.BAT @@ -0,0 +1,12 @@ +@echo off +echo REVIEW=%REVIEW% +echo L4EYES=%L4EYES% +echo L4VIEWEXT=%L4VIEWEXT% +echo L4ANIMATION=%L4ANIMATION% +echo L4DPLCFG=%L4DPLCFG% +echo L4CONTROLS=%L4CONTROLS% +echo L4TIMER=%L4TIMER% +echo L4GAUGE=%L4GAUGE% +echo AWE_FRONT=%AWE_FRONT% +echo AWE_REAR=%AWE_REAR% +echo DPLARG=%DPLARG% diff --git a/CONTENT/BT/SOLIDS/AB01_CV.SLD b/CONTENT/BT/SOLIDS/AB01_CV.SLD new file mode 100644 index 0000000..0605e02 --- /dev/null +++ b/CONTENT/BT/SOLIDS/AB01_CV.SLD @@ -0,0 +1,113 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-68.5 +extmaxX=20 +extminY=-20 +extmaxY=15 +extminZ=-50 +extmaxZ=-5.5 + +slcminX=-68.5 +slcmaxX=20 +slcminY=-20 +slcmaxY=15 +slcminZ=-50 +slcmaxZ=-5.5 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-68.5 +extmaxX=13 +extminY=-20 +extmaxY=15 +extminZ=-5.5 +extmaxZ=0 + +slcminX=-68.5 +slcmaxX=13 +slcminY=-20 +slcmaxY=15 +slcminZ=-5.5 +slcmaxZ=0 + + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-68.5 +extmaxX=20 +extminY=-20 +extmaxY=15 +extminZ=0 +extmaxZ=13 + +slcminX=-68.5 +slcmaxX=20 +slcminY=-20 +slcmaxY=15 +slcminZ=0 +slcmaxZ=13 + + +[volume 3] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-68.5 +extmaxX=20 +extminY=-20 +extmaxY=15 +extminZ=18.5 +extmaxZ=50 + +slcminX=-68.5 +slcmaxX=20 +slcminY=-20 +slcmaxY=15 +slcminZ=18.5 +slcmaxZ=50 + + +[volume 4] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-68.5 +extmaxX=13 +extminY=-20 +extmaxY=15 +extminZ=13 +extmaxZ=18.5 + +slcminX=-68.5 +slcmaxX=13 +slcminY=-20 +slcmaxY=15 +slcminZ=13 +slcmaxZ=18.5 + + +[COLLISION] +name=ab01_cv.sld +count=5 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/AB02_CV.SLD b/CONTENT/BT/SOLIDS/AB02_CV.SLD new file mode 100644 index 0000000..faa6346 --- /dev/null +++ b/CONTENT/BT/SOLIDS/AB02_CV.SLD @@ -0,0 +1,113 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-25 +extmaxX=-12 +extminY=0 +extmaxY=35 +extminZ=-45 +extmaxZ=45.5 + +slcminX=-25 +slcmaxX=-12 +slcminY=0 +slcmaxY=35 +slcminZ=-45 +slcmaxZ=45.5 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-12 +extmaxX=-6.5 +extminY=0 +extmaxY=35 +extminZ=-38 +extmaxZ=45.5 + +slcminX=-12 +slcmaxX=-6.5 +slcminY=0 +slcmaxY=35 +slcminZ=-38 +slcmaxZ=45.5 + + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-6.5 +extmaxX=6.5 +extminY=0 +extmaxY=35 +extminZ=-45 +extmaxZ=45.5 + +slcminX=-6.5 +slcmaxX=6.5 +slcminY=0 +slcmaxY=35 +slcminZ=-45 +slcmaxZ=45.5 + + +[volume 3] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=12 +extmaxX=25 +extminY=0 +extmaxY=35 +extminZ=-45 +extmaxZ=45.5 + +slcminX=12 +slcmaxX=25 +slcminY=0 +slcmaxY=35 +slcminZ=-45 +slcmaxZ=45.5 + + +[volume 4] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=6.5 +extmaxX=12 +extminY=0 +extmaxY=35 +extminZ=-38 +extmaxZ=45.5 + +slcminX=6.5 +slcmaxX=12 +slcminY=0 +slcmaxY=35 +slcminZ=-38 +slcmaxZ=45.5 + + +[COLLISION] +name=ab02_cv.sld +count=5 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/AB03_CV.SLD b/CONTENT/BT/SOLIDS/AB03_CV.SLD new file mode 100644 index 0000000..edd7a13 --- /dev/null +++ b/CONTENT/BT/SOLIDS/AB03_CV.SLD @@ -0,0 +1,155 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-20 +extmaxX=68.5 +extminY=0 +extmaxY=35 +extminZ=37 +extmaxZ=50 + +slcminX=-20 +slcmaxX=68.5 +slcminY=0 +slcmaxY=35 +slcminZ=37 +slcmaxZ=50 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-13 +extmaxX=68.5 +extminY=0 +extmaxY=35 +extminZ=13 +extmaxZ=18.5 + +slcminX=-13 +slcmaxX=68.5 +slcminY=0 +slcmaxY=35 +slcminZ=13 +slcmaxZ=18.5 + + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-20 +extmaxX=68.5 +extminY=0 +extmaxY=35 +extminZ=0 +extmaxZ=13 + +slcminX=-20 +slcmaxX=68.5 +slcminY=0 +slcmaxY=35 +slcminZ=0 +slcmaxZ=13 + + +[volume 3] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-20 +extmaxX=68.5 +extminY=0 +extmaxY=35 +extminZ=18.5 +extmaxZ=31.5 + +slcminX=-20 +slcmaxX=68.5 +slcminY=0 +slcmaxY=35 +slcminZ=18.5 +slcmaxZ=31.5 + + +[volume 4] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-13 +extmaxX=68.5 +extminY=0 +extmaxY=35 +extminZ=31.5 +extmaxZ=37 + +slcminX=-13 +slcmaxX=68.5 +slcminY=0 +slcmaxY=35 +slcminZ=31.5 +slcmaxZ=37 + + +[volume 5] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-20 +extmaxX=68.5 +extminY=0 +extmaxY=35 +extminZ=-50 +extmaxZ=-5.5 + +slcminX=-20 +slcmaxX=68.5 +slcminY=0 +slcmaxY=35 +slcminZ=-50 +slcmaxZ=-5.5 + + +[volume 6] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-13 +extmaxX=68.5 +extminY=0 +extmaxY=35 +extminZ=-5.5 +extmaxZ=0 + +slcminX=-13 +slcmaxX=68.5 +slcminY=0 +slcmaxY=35 +slcminZ=-5.5 +slcmaxZ=0 + + +[COLLISION] +name=ab03_cv.sld +count=7 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/AB04_CV.SLD b/CONTENT/BT/SOLIDS/AB04_CV.SLD new file mode 100644 index 0000000..1a3c395 --- /dev/null +++ b/CONTENT/BT/SOLIDS/AB04_CV.SLD @@ -0,0 +1,155 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-37 +extmaxX=-30.5 +extminY=-10 +extmaxY=15 +extminZ=-52.5 +extmaxZ=38 + +slcminX=-37 +slcmaxX=-30.5 +slcminY=-10 +slcmaxY=15 +slcminZ=-52.5 +slcmaxZ=38 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-30.5 +extmaxX=-12 +extminY=-5 +extmaxY=15 +extminZ=-52.5 +extmaxZ=31.5 + +slcminX=-30.5 +slcmaxX=-12 +slcminY=-5 +slcmaxY=15 +slcminZ=-52.5 +slcmaxZ=31.5 + + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-12 +extmaxX=-3 +extminY=-10 +extmaxY=15 +extminZ=-52.5 +extmaxZ=38 + +slcminX=-12 +slcmaxX=-3 +slcminY=-10 +slcmaxY=15 +slcminZ=-52.5 +slcmaxZ=38 + + +[volume 3] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-30.5 +extmaxX=-28.5 +extminY=-10 +extmaxY=-5 +extminZ=-52.5 +extmaxZ=31.5 + +slcminX=-30.5 +slcmaxX=-28.5 +slcminY=-10 +slcmaxY=-5 +slcminZ=-52.5 +slcmaxZ=31.5 + + +[volume 4] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-22 +extmaxX=-12 +extminY=-10 +extmaxY=-5 +extminZ=-52.5 +extmaxZ=31.5 + +slcminX=-22 +slcmaxX=-12 +slcminY=-10 +slcmaxY=-5 +slcminZ=-52.5 +slcmaxZ=31.5 + + +[volume 5] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=2.5 +extmaxX=38 +extminY=-10 +extmaxY=15 +extminZ=-52.5 +extmaxZ=38 + +slcminX=2.5 +slcmaxX=38 +slcminY=-10 +slcmaxY=15 +slcminZ=-52.5 +slcmaxZ=38 + + +[volume 6] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-3 +extmaxX=2.5 +extminY=-10 +extmaxY=15 +extminZ=-52.5 +extmaxZ=31 + +slcminX=-3 +slcmaxX=2.5 +slcminY=-10 +slcmaxY=15 +slcminZ=-52.5 +slcmaxZ=31 + + +[COLLISION] +name=ab04_cv.sld +count=7 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/AB05_CV.SLD b/CONTENT/BT/SOLIDS/AB05_CV.SLD new file mode 100644 index 0000000..5203010 --- /dev/null +++ b/CONTENT/BT/SOLIDS/AB05_CV.SLD @@ -0,0 +1,113 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-150 +extmaxX=-137 +extminY=-10 +extmaxY=15 +extminZ=-45 +extmaxZ=43.5 + +slcminX=-150 +slcmaxX=-137 +slcminY=-10 +slcmaxY=15 +slcminZ=-45 +slcmaxZ=43.5 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-137 +extmaxX=-131.5 +extminY=-10 +extmaxY=15 +extminZ=-38 +extmaxZ=43.5 + +slcminX=-137 +slcmaxX=-131.5 +slcminY=-10 +slcmaxY=15 +slcminZ=-38 +slcmaxZ=43.5 + + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-131.5 +extmaxX=-118.5 +extminY=-10 +extmaxY=15 +extminZ=-45 +extmaxZ=43.5 + +slcminX=-131.5 +slcmaxX=-118.5 +slcminY=-10 +slcmaxY=15 +slcminZ=-45 +slcmaxZ=43.5 + + +[volume 3] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-113 +extmaxX=150 +extminY=-10 +extmaxY=15 +extminZ=-45 +extmaxZ=43.5 + +slcminX=-113 +slcmaxX=150 +slcminY=-10 +slcmaxY=15 +slcminZ=-45 +slcmaxZ=43.5 + + +[volume 4] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-118.5 +extmaxX=-113 +extminY=-10 +extmaxY=15 +extminZ=-38 +extmaxZ=43.5 + +slcminX=-118.5 +slcmaxX=-113 +slcminY=-10 +slcmaxY=15 +slcminZ=-38 +slcmaxZ=43.5 + + +[COLLISION] +name=ab05_cv.sld +count=5 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/AB06_CV.SLD b/CONTENT/BT/SOLIDS/AB06_CV.SLD new file mode 100644 index 0000000..6ee057d --- /dev/null +++ b/CONTENT/BT/SOLIDS/AB06_CV.SLD @@ -0,0 +1,260 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-50 +extmaxX=49.5 +extminY=0 +extmaxY=28 +extminZ=33 +extmaxZ=50 + +slcminX=-50 +slcmaxX=49.5 +slcminY=0 +slcmaxY=28 +slcminZ=33 +slcmaxZ=50 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-50 +extmaxX=49.5 +extminY=0 +extmaxY=35 +extminZ=-7 +extmaxZ=7 + +slcminX=-50 +slcmaxX=49.5 +slcminY=0 +slcmaxY=35 +slcminZ=-7 +slcmaxZ=7 + + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-50 +extmaxX=35 +extminY=0 +extmaxY=28 +extminZ=-33 +extmaxZ=-7 + +slcminX=-50 +slcmaxX=35 +slcminY=0 +slcmaxY=28 +slcminZ=-33 +slcmaxZ=-7 + + +[volume 3] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-50 +extmaxX=35 +extminY=0 +extmaxY=28 +extminZ=7 +extmaxZ=33 + +slcminX=-50 +slcmaxX=35 +slcminY=0 +slcmaxY=28 +slcminZ=7 +slcmaxZ=33 + + +[volume 4] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-50 +extmaxX=49.5 +extminY=28 +extmaxY=37 +extminZ=-50 +extmaxZ=50 + +slcminX=-50 +slcmaxX=49.5 +slcminY=28 +slcmaxY=37 +slcminZ=-50 +slcmaxZ=50 + + +[volume 5] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=22.5 +extmaxX=28.5 +extminY=0 +extmaxY=31 +extminZ=-55 +extmaxZ=-50 + +slcminX=22.5 +slcmaxX=28.5 +slcminY=0 +slcmaxY=31 +slcminZ=-55 +slcmaxZ=-50 + + +[volume 6] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=50 +extmaxX=55 +extminY=0 +extmaxY=31 +extminZ=-42.5 +extmaxZ=-37.5 + +slcminX=50 +slcmaxX=55 +slcminY=0 +slcmaxY=31 +slcminZ=-42.5 +slcmaxZ=-37.5 + + +[volume 7] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=50 +extmaxX=55 +extminY=0 +extmaxY=31 +extminZ=-2.5 +extmaxZ=2.5 + +slcminX=50 +slcmaxX=55 +slcminY=0 +slcmaxY=31 +slcminZ=-2.5 +slcmaxZ=2.5 + + +[volume 8] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=50 +extmaxX=55 +extminY=0 +extmaxY=31 +extminZ=37.5 +extmaxZ=42.5 + +slcminX=50 +slcmaxX=55 +slcminY=0 +slcmaxY=31 +slcminZ=37.5 +slcmaxZ=42.5 + + +[volume 9] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=35.5 +extmaxX=41.5 +extminY=0 +extmaxY=31 +extminZ=50 +extmaxZ=55 + +slcminX=35.5 +slcmaxX=41.5 +slcminY=0 +slcmaxY=31 +slcminZ=50 +slcmaxZ=55 + + +[volume 10] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-50 +extmaxX=49.5 +extminY=0 +extmaxY=28 +extminZ=-50 +extmaxZ=-33 + +slcminX=-50 +slcmaxX=49.5 +slcminY=0 +slcmaxY=28 +slcminZ=-50 +slcmaxZ=-33 + + +[volume 11] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-28.5 +extmaxX=-22.5 +extminY=0 +extmaxY=31 +extminZ=-55 +extmaxZ=-50 + +slcminX=-28.5 +slcmaxX=-22.5 +slcminY=0 +slcmaxY=31 +slcminZ=-55 +slcmaxZ=-50 + + +[COLLISION] +name=ab06_cv.sld +count=12 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/AB07_CV.SLD b/CONTENT/BT/SOLIDS/AB07_CV.SLD new file mode 100644 index 0000000..ef3cb0f --- /dev/null +++ b/CONTENT/BT/SOLIDS/AB07_CV.SLD @@ -0,0 +1,218 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=12 +TypeName=WedgeFacingNegativeZAndPositiveXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-15 +extmaxX=-7 +extminY=-1 +extmaxY=8 +extminZ=0 +extmaxZ=8 + +slcminX=-15 +slcmaxX=-7 +slcminY=-1 +slcmaxY=8 +slcminZ=0 +slcmaxZ=8 + + +[volume 1] +TypeNumber=12 +TypeName=WedgeFacingNegativeZAndPositiveXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2 +extmaxX=0 +extminY=-1 +extmaxY=8 +extminZ=13 +extmaxZ=15 + +slcminX=-2 +slcmaxX=0 +slcminY=-1 +slcmaxY=8 +slcminZ=13 +slcmaxZ=15 + + +[volume 2] +TypeNumber=15 +TypeName=WedgeFacingPositiveZAndPositiveXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2 +extmaxX=3 +extminY=-1 +extmaxY=8 +extminZ=8 +extmaxZ=13 + +slcminX=-2 +slcmaxX=3 +slcminY=-1 +slcmaxY=8 +slcminZ=8 +slcmaxZ=13 + + +[volume 3] +TypeNumber=13 +TypeName=WedgeFacingNegativeZAndNegativeXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-7 +extmaxX=-2 +extminY=-1 +extmaxY=8 +extminZ=3 +extmaxZ=8 + +slcminX=-7 +slcmaxX=-2 +slcminY=-1 +slcmaxY=8 +slcminZ=3 +slcmaxZ=8 + + +[volume 4] +TypeNumber=12 +TypeName=WedgeFacingNegativeZAndPositiveXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2 +extmaxX=3 +extminY=-1 +extmaxY=8 +extminZ=3 +extmaxZ=8 + +slcminX=-2 +slcmaxX=3 +slcminY=-1 +slcmaxY=8 +slcminZ=3 +slcmaxZ=8 + + +[volume 5] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-15 +extmaxX=10 +extminY=-1 +extmaxY=8 +extminZ=-10 +extmaxZ=0 + +slcminX=-15 +slcmaxX=10 +slcminY=-1 +slcmaxY=8 +slcminZ=-10 +slcmaxZ=0 + + +[volume 6] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-7 +extmaxX=10 +extminY=-1 +extmaxY=8 +extminZ=0 +extmaxZ=3 + +slcminX=-7 +slcmaxX=10 +slcminY=-1 +slcmaxY=8 +slcminZ=0 +slcmaxZ=3 + + +[volume 7] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=3 +extmaxX=10 +extminY=-1 +extmaxY=8 +extminZ=3 +extmaxZ=13 + +slcminX=3 +slcmaxX=10 +slcminY=-1 +slcmaxY=8 +slcminZ=3 +slcmaxZ=13 + + +[volume 8] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=0 +extmaxX=10 +extminY=-1 +extmaxY=8 +extminZ=13 +extmaxZ=15 + +slcminX=0 +slcmaxX=10 +slcminY=-1 +slcmaxY=8 +slcminZ=13 +slcmaxZ=15 + + +[volume 9] +TypeNumber=12 +TypeName=WedgeFacingNegativeZAndPositiveXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-7 +extmaxX=-2 +extminY=6.5 +extmaxY=8 +extminZ=8 +extmaxZ=13 + +slcminX=-7 +slcmaxX=-2 +slcminY=6.5 +slcmaxY=8 +slcminZ=8 +slcmaxZ=13 + + +[COLLISION] +name=ab07_cv.sld +count=10 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/AB09_CV.SLD b/CONTENT/BT/SOLIDS/AB09_CV.SLD new file mode 100644 index 0000000..7233fd1 --- /dev/null +++ b/CONTENT/BT/SOLIDS/AB09_CV.SLD @@ -0,0 +1,197 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-50 +extmaxX=-33 +extminY=0 +extmaxY=12.5 +extminZ=-27 +extmaxZ=23 + +slcminX=-50 +slcmaxX=-33 +slcminY=0 +slcmaxY=12.5 +slcminZ=-27 +slcmaxZ=23 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-7 +extmaxX=7 +extminY=0 +extmaxY=14 +extminZ=-27 +extmaxZ=23 + +slcminX=-7 +slcmaxX=7 +slcminY=0 +slcmaxY=14 +slcminZ=-27 +slcmaxZ=23 + + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=7 +extmaxX=33 +extminY=0 +extmaxY=12.5 +extminZ=-27 +extmaxZ=5.5 + +slcminX=7 +slcmaxX=33 +slcminY=0 +slcmaxY=12.5 +slcminZ=-27 +slcmaxZ=5.5 + + +[volume 3] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-33 +extmaxX=-7 +extminY=0 +extmaxY=12.5 +extminZ=-27 +extmaxZ=5.5 + +slcminX=-33 +slcmaxX=-7 +slcminY=0 +slcmaxY=12.5 +slcminZ=-27 +slcmaxZ=5.5 + + +[volume 4] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-50 +extmaxX=50 +extminY=12.5 +extmaxY=16 +extminZ=-27 +extmaxZ=23 + +slcminX=-50 +slcmaxX=50 +slcminY=12.5 +slcmaxY=16 +slcminZ=-27 +slcmaxZ=23 + + +[volume 5] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=37.5 +extmaxX=42.5 +extminY=0 +extmaxY=15.5 +extminZ=23 +extmaxZ=27.5 + +slcminX=37.5 +slcmaxX=42.5 +slcminY=0 +slcmaxY=15.5 +slcminZ=23 +slcmaxZ=27.5 + + +[volume 6] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2.5 +extmaxX=2.5 +extminY=0 +extmaxY=15.5 +extminZ=23 +extmaxZ=27.5 + +slcminX=-2.5 +slcmaxX=2.5 +slcminY=0 +slcmaxY=15.5 +slcminZ=23 +slcmaxZ=27.5 + + +[volume 7] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-42.5 +extmaxX=-37.5 +extminY=0 +extmaxY=15.5 +extminZ=23 +extmaxZ=27.5 + +slcminX=-42.5 +slcmaxX=-37.5 +slcminY=0 +slcmaxY=15.5 +slcminZ=23 +slcmaxZ=27.5 + + +[volume 8] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=33 +extmaxX=50 +extminY=0 +extmaxY=12.5 +extminZ=-27 +extmaxZ=23 + +slcminX=33 +slcmaxX=50 +slcminY=0 +slcmaxY=12.5 +slcminZ=-27 +slcmaxZ=23 + + +[COLLISION] +name=ab09_cv.sld +count=9 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/AB10_CV.SLD b/CONTENT/BT/SOLIDS/AB10_CV.SLD new file mode 100644 index 0000000..cc6ae8f --- /dev/null +++ b/CONTENT/BT/SOLIDS/AB10_CV.SLD @@ -0,0 +1,302 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=33 +extmaxX=50 +extminY=-10 +extmaxY=18.5 +extminZ=-23 +extmaxZ=27 + +slcminX=33 +slcmaxX=50 +slcminY=-10 +slcmaxY=18.5 +slcminZ=-23 +slcmaxZ=27 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-7 +extmaxX=7 +extminY=-10 +extmaxY=20 +extminZ=-23 +extmaxZ=27 + +slcminX=-7 +slcmaxX=7 +slcminY=-10 +slcmaxY=20 +slcminZ=-23 +slcmaxZ=27 + + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-33 +extmaxX=-7 +extminY=-10 +extmaxY=18.5 +extminZ=-5.5 +extmaxZ=27 + +slcminX=-33 +slcmaxX=-7 +slcminY=-10 +slcmaxY=18.5 +slcminZ=-5.5 +slcmaxZ=27 + + +[volume 3] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=7 +extmaxX=33 +extminY=-10 +extmaxY=18.5 +extminZ=-5.5 +extmaxZ=27 + +slcminX=7 +slcmaxX=33 +slcminY=-10 +slcmaxY=18.5 +slcminZ=-5.5 +slcmaxZ=27 + + +[volume 4] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-50 +extmaxX=50 +extminY=18.5 +extmaxY=22 +extminZ=-23 +extmaxZ=27 + +slcminX=-50 +slcmaxX=50 +slcminY=18.5 +slcmaxY=22 +slcminZ=-23 +slcmaxZ=27 + + +[volume 5] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-44 +extmaxX=-39 +extminY=0 +extmaxY=20.5 +extminZ=-25 +extmaxZ=-23 + +slcminX=-44 +slcmaxX=-39 +slcminY=0 +slcmaxY=20.5 +slcminZ=-25 +slcmaxZ=-23 + + +[volume 6] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2.5 +extmaxX=2.5 +extminY=0 +extmaxY=16 +extminZ=-25 +extmaxZ=-23 + +slcminX=-2.5 +slcmaxX=2.5 +slcminY=0 +slcmaxY=16 +slcminZ=-25 +slcmaxZ=-23 + + +[volume 7] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=39 +extmaxX=44 +extminY=0 +extmaxY=20.5 +extminZ=-25 +extmaxZ=-23 + +slcminX=39 +slcmaxX=44 +slcminY=0 +slcmaxY=20.5 +slcminZ=-25 +slcmaxZ=-23 + + +[volume 8] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-51.5 +extmaxX=-44 +extminY=0 +extmaxY=20.5 +extminZ=-24 +extmaxZ=-23 + +slcminX=-51.5 +slcmaxX=-44 +slcminY=0 +slcmaxY=20.5 +slcminZ=-24 +slcmaxZ=-23 + + +[volume 9] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-51.5 +extmaxX=-50 +extminY=0 +extmaxY=20.5 +extminZ=-23 +extmaxZ=-13.5 + +slcminX=-51.5 +slcmaxX=-50 +slcminY=0 +slcmaxY=20.5 +slcminZ=-23 +slcmaxZ=-13.5 + + +[volume 10] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-52 +extmaxX=-50 +extminY=0 +extmaxY=20.5 +extminZ=-13.5 +extmaxZ=-9.5 + +slcminX=-52 +slcmaxX=-50 +slcminY=0 +slcmaxY=20.5 +slcminZ=-13.5 +slcmaxZ=-9.5 + + +[volume 11] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=50 +extmaxX=51.5 +extminY=0 +extmaxY=20.5 +extminZ=-23 +extmaxZ=-13.5 + +slcminX=50 +slcmaxX=51.5 +slcminY=0 +slcmaxY=20.5 +slcminZ=-23 +slcmaxZ=-13.5 + + +[volume 12] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=44 +extmaxX=51.5 +extminY=0 +extmaxY=20.5 +extminZ=-24 +extmaxZ=-23 + +slcminX=44 +slcmaxX=51.5 +slcminY=0 +slcmaxY=20.5 +slcminZ=-24 +slcmaxZ=-23 + + +[volume 13] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-50 +extmaxX=-33 +extminY=-10 +extmaxY=18.5 +extminZ=-23 +extmaxZ=27 + +slcminX=-50 +slcmaxX=-33 +slcminY=-10 +slcmaxY=18.5 +slcminZ=-23 +slcmaxZ=27 + + +[COLLISION] +name=ab10_cv.sld +count=14 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/ADWLK1~1.SLD b/CONTENT/BT/SOLIDS/ADWLK1~1.SLD new file mode 100644 index 0000000..e512438 --- /dev/null +++ b/CONTENT/BT/SOLIDS/ADWLK1~1.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-9.39844 +extmaxX=-8.79688 +extminY=6.79688 +extmaxY=8.5 +extminZ=-10 +extmaxZ=0 + +slcminX=-9.39844 +slcmaxX=-8.79688 +slcminY=6.79688 +slcmaxY=8.5 +slcminZ=-10 +slcmaxZ=0 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-22.2031 +extmaxX=-9.39844 +extminY=6.79688 +extmaxY=8.5 +extminZ=-0.898438 +extmaxZ=0 + +slcminX=-22.2031 +slcmaxX=-9.39844 +slcminY=6.79688 +slcmaxY=8.5 +slcminZ=-0.898438 +slcmaxZ=0 + + +[COLLISION] +name=adwlk1_cv.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/ADWLK2~1.SLD b/CONTENT/BT/SOLIDS/ADWLK2~1.SLD new file mode 100644 index 0000000..4d7d6ba --- /dev/null +++ b/CONTENT/BT/SOLIDS/ADWLK2~1.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=13.7969 +extmaxX=14.3984 +extminY=6.79688 +extmaxY=8.5 +extminZ=-10 +extmaxZ=0 + +slcminX=13.7969 +slcmaxX=14.3984 +slcminY=6.79688 +slcmaxY=8.5 +slcminZ=-10 +slcmaxZ=0 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=14.3984 +extmaxX=27.2031 +extminY=6.79688 +extmaxY=8.5 +extminZ=-0.898438 +extmaxZ=0 + +slcminX=14.3984 +slcmaxX=27.2031 +slcminY=6.79688 +slcmaxY=8.5 +slcminZ=-0.898438 +slcmaxZ=0 + + +[COLLISION] +name=adwlk2_cv.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/ADWLK3~1.SLD b/CONTENT/BT/SOLIDS/ADWLK3~1.SLD new file mode 100644 index 0000000..84e095a --- /dev/null +++ b/CONTENT/BT/SOLIDS/ADWLK3~1.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-12.1016 +extmaxX=13.2031 +extminY=6.79688 +extmaxY=8.5 +extminZ=-0.898438 +extmaxZ=0 + +slcminX=-12.1016 +slcmaxX=13.2031 +slcminY=6.79688 +slcmaxY=8.5 +slcminZ=-0.898438 +slcmaxZ=0 + + +[COLLISION] +name=adwlk3_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/APC.SLD b/CONTENT/BT/SOLIDS/APC.SLD new file mode 100644 index 0000000..19676be --- /dev/null +++ b/CONTENT/BT/SOLIDS/APC.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2.5 +extmaxX=2.5 +extminY=0 +extmaxY=3 +extminZ=-5.5 +extmaxZ=-0.5 + +slcminX=-2.5 +slcmaxX=2.5 +slcminY=0 +slcmaxY=3 +slcminZ=-5.5 +slcmaxZ=-0.5 + + +[volume 1] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2.5 +extmaxX=2.5 +extminY=0 +extmaxY=4 +extminZ=0 +extmaxZ=5 + +slcminX=-2.5 +slcmaxX=2.5 +slcminY=0 +slcmaxY=4 +slcminZ=0 +slcmaxZ=5 + + +[COLLISION] +name=apc.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/AR01_CV.SLD b/CONTENT/BT/SOLIDS/AR01_CV.SLD new file mode 100644 index 0000000..062268b --- /dev/null +++ b/CONTENT/BT/SOLIDS/AR01_CV.SLD @@ -0,0 +1,323 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=29 +extmaxX=30 +extminY=0 +extmaxY=20 +extminZ=-24 +extmaxZ=-4 + +slcminX=29 +slcmaxX=30 +slcminY=0 +slcmaxY=20 +slcminZ=-24 +slcmaxZ=-4 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=29 +extmaxX=30 +extminY=0 +extmaxY=10.6016 +extminZ=-4 +extmaxZ=5.39844 + +slcminX=29 +slcmaxX=30 +slcminY=0 +slcmaxY=10.6016 +slcminZ=-4 +slcmaxZ=5.39844 + + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=29 +extmaxX=30 +extminY=0 +extmaxY=6.60156 +extminZ=5.39844 +extmaxZ=19.6016 + +slcminX=29 +slcmaxX=30 +slcminY=0 +slcmaxY=6.60156 +slcminZ=5.39844 +slcmaxZ=19.6016 + + +[volume 3] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=29 +extmaxX=30 +extminY=0 +extmaxY=4.60156 +extminZ=19.6016 +extmaxZ=25 + +slcminX=29 +slcmaxX=30 +slcminY=0 +slcmaxY=4.60156 +slcminZ=19.6016 +slcmaxZ=25 + + +[volume 4] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=24 +extmaxX=29 +extminY=0 +extmaxY=3 +extminZ=7 +extmaxZ=25 + +slcminX=24 +slcmaxX=29 +slcminY=0 +slcmaxY=3 +slcminZ=7 +slcmaxZ=25 + + +[volume 5] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=5.99219 +extmaxX=8.00781 +extminY=0 +extmaxY=20 +extminZ=-0.9375 +extmaxZ=0.9375 + +slcminX=5.99219 +slcmaxX=8.00781 +slcminY=0 +slcmaxY=20 +slcminZ=-0.9375 +slcmaxZ=0.9375 + + +[volume 6] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=6.5 +extmaxX=7.5 +extminY=0 +extmaxY=14 +extminZ=24 +extmaxZ=25 + +slcminX=6.5 +slcmaxX=7.5 +slcminY=0 +slcmaxY=14 +slcminZ=24 +slcmaxZ=25 + + +[volume 7] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-30 +extmaxX=-15.7969 +extminY=0 +extmaxY=12.7031 +extminZ=-24 +extmaxZ=-17 + +slcminX=-30 +slcmaxX=-15.7969 +slcminY=0 +slcmaxY=12.7031 +slcminZ=-24 +slcmaxZ=-17 + + +[volume 8] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-30 +extmaxX=-15.7969 +extminY=12.7031 +extmaxY=17.2969 +extminZ=-24 +extmaxZ=-4.39844 + +slcminX=-30 +slcmaxX=-15.7969 +slcminY=12.7031 +slcmaxY=17.2969 +slcminZ=-24 +slcmaxZ=-4.39844 + + +[volume 9] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-26.5 +extmaxX=-20.7031 +extminY=0 +extmaxY=3.10156 +extminZ=-9.89844 +extmaxZ=-8.70312 + +slcminX=-26.5 +slcmaxX=-20.7031 +slcminY=0 +slcmaxY=3.10156 +slcminZ=-9.89844 +slcmaxZ=-8.70312 + + +[volume 10] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-23 +extmaxX=-9 +extminY=0 +extmaxY=5.20312 +extminZ=23.7969 +extmaxZ=25 + +slcminX=-23 +slcmaxX=-9 +slcminY=0 +slcmaxY=5.20312 +slcminZ=23.7969 +slcmaxZ=25 + + +[volume 11] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-31.5 +extmaxX=-24.8984 +extminY=0 +extmaxY=9.5 +extminZ=19.7969 +extmaxZ=26.3984 + +slcminX=-31.5 +slcmaxX=-24.8984 +slcminY=0 +slcmaxY=9.5 +slcminZ=19.7969 +slcmaxZ=26.3984 + + +[volume 12] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-30 +extmaxX=15.3984 +extminY=18 +extmaxY=20 +extminZ=-24 +extmaxZ=-5.79688 + +slcminX=-30 +slcmaxX=15.3984 +slcminY=18 +slcmaxY=20 +slcminZ=-24 +slcmaxZ=-5.79688 + + +[volume 13] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-8.5 +extmaxX=1.5 +extminY=0.0390625 +extmaxY=3.33594 +extminZ=3.53906 +extmaxZ=17.3047 + +slcminX=-8.5 +slcmaxX=1.5 +slcminY=0.0390625 +slcmaxY=3.33594 +slcminZ=3.53906 +slcmaxZ=17.3047 + + +[volume 14] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-30 +extmaxX=30 +extminY=0 +extmaxY=20 +extminZ=-25.0156 +extmaxZ=-23.9844 + +slcminX=-30 +slcmaxX=30 +slcminY=0 +slcmaxY=20 +slcminZ=-25.0156 +slcmaxZ=-23.9844 + + +[COLLISION] +name=ar01_cv.sld +count=15 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/AR02_CV.SLD b/CONTENT/BT/SOLIDS/AR02_CV.SLD new file mode 100644 index 0000000..f0f490c --- /dev/null +++ b/CONTENT/BT/SOLIDS/AR02_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-25 +extmaxX=25 +extminY=0 +extmaxY=25 +extminZ=-25 +extmaxZ=25 + +slcminX=-25 +slcmaxX=25 +slcminY=0 +slcmaxY=25 +slcminZ=-25 +slcmaxZ=25 + + +[COLLISION] +name=ar02_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/AR03_CV.SLD b/CONTENT/BT/SOLIDS/AR03_CV.SLD new file mode 100644 index 0000000..14e7936 --- /dev/null +++ b/CONTENT/BT/SOLIDS/AR03_CV.SLD @@ -0,0 +1,197 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-50 +extmaxX=50 +extminY=0 +extmaxY=34 +extminZ=-25 +extmaxZ=25 + +slcminX=-50 +slcmaxX=50 +slcminY=0 +slcmaxY=34 +slcminZ=-25 +slcmaxZ=25 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-53.6016 +extmaxX=-50 +extminY=0 +extmaxY=22.7969 +extminZ=16.0703 +extmaxZ=21.9297 + +slcminX=-53.6016 +slcmaxX=-50 +slcminY=0 +slcmaxY=22.7969 +slcminZ=16.0703 +slcmaxZ=21.9297 + + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-53.6016 +extmaxX=-50 +extminY=0 +extmaxY=22.7969 +extminZ=-21.8281 +extmaxZ=-15.9688 + +slcminX=-53.6016 +slcmaxX=-50 +slcminY=0 +slcmaxY=22.7969 +slcminZ=-21.8281 +slcmaxZ=-15.9688 + + +[volume 3] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=50 +extmaxX=53.6016 +extminY=0 +extmaxY=22.7969 +extminZ=-22.1328 +extmaxZ=-16.2734 + +slcminX=50 +slcmaxX=53.6016 +slcminY=0 +slcmaxY=22.7969 +slcminZ=-22.1328 +slcmaxZ=-16.2734 + + +[volume 4] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=50 +extmaxX=53.6016 +extminY=0 +extmaxY=22.7969 +extminZ=15.9688 +extmaxZ=21.8281 + +slcminX=50 +slcmaxX=53.6016 +slcminY=0 +slcmaxY=22.7969 +slcminZ=15.9688 +slcmaxZ=21.8281 + + +[volume 5] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=28.1016 +extmaxX=33.8984 +extminY=0 +extmaxY=22.7969 +extminZ=-28.7969 +extmaxZ=-25 + +slcminX=28.1016 +slcmaxX=33.8984 +slcminY=0 +slcmaxY=22.7969 +slcminZ=-28.7969 +slcmaxZ=-25 + + +[volume 6] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-33.8984 +extmaxX=-28.1016 +extminY=0 +extmaxY=22.7969 +extminZ=-28.8984 +extmaxZ=-25.1016 + +slcminX=-33.8984 +slcmaxX=-28.1016 +slcminY=0 +slcmaxY=22.7969 +slcminZ=-28.8984 +slcmaxZ=-25.1016 + + +[volume 7] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-34.1016 +extmaxX=-28.2969 +extminY=0 +extmaxY=22.7969 +extminZ=25 +extmaxZ=28.7969 + +slcminX=-34.1016 +slcmaxX=-28.2969 +slcminY=0 +slcmaxY=22.7969 +slcminZ=25 +slcmaxZ=28.7969 + + +[volume 8] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=28.1016 +extmaxX=33.8984 +extminY=0 +extmaxY=22.7969 +extminZ=25 +extmaxZ=28.7969 + +slcminX=28.1016 +slcmaxX=33.8984 +slcminY=0 +slcmaxY=22.7969 +slcminZ=25 +slcmaxZ=28.7969 + + +[COLLISION] +name=ar03_cv.sld +count=9 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/AR04_CV.SLD b/CONTENT/BT/SOLIDS/AR04_CV.SLD new file mode 100644 index 0000000..768b038 --- /dev/null +++ b/CONTENT/BT/SOLIDS/AR04_CV.SLD @@ -0,0 +1,197 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=10 +extmaxX=25 +extminY=0 +extmaxY=22 +extminZ=-25 +extmaxZ=25 + +slcminX=10 +slcmaxX=25 +slcminY=0 +slcmaxY=22 +slcminZ=-25 +slcmaxZ=25 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-25 +extmaxX=10 +extminY=0 +extmaxY=22 +extminZ=23 +extmaxZ=25 + +slcminX=-25 +slcmaxX=10 +slcminY=0 +slcmaxY=22 +slcminZ=23 +slcmaxZ=25 + + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-25 +extmaxX=-20 +extminY=0 +extmaxY=22 +extminZ=-25 +extmaxZ=23 + +slcminX=-25 +slcmaxX=-20 +slcminY=0 +slcmaxY=22 +slcminZ=-25 +slcmaxZ=23 + + +[volume 3] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-20 +extmaxX=-2 +extminY=0 +extmaxY=12 +extminZ=14 +extmaxZ=23 + +slcminX=-20 +slcmaxX=-2 +slcminY=0 +slcmaxY=12 +slcminZ=14 +slcmaxZ=23 + + +[volume 4] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-28 +extmaxX=-25 +extminY=0 +extmaxY=12 +extminZ=-20 +extmaxZ=-14 + +slcminX=-28 +slcmaxX=-25 +slcminY=0 +slcmaxY=12 +slcminZ=-20 +slcmaxZ=-14 + + +[volume 5] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-28 +extmaxX=-25 +extminY=0 +extmaxY=12 +extminZ=14 +extmaxZ=20 + +slcminX=-28 +slcmaxX=-25 +slcminY=0 +slcmaxY=12 +slcminZ=14 +slcmaxZ=20 + + +[volume 6] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=25 +extmaxX=28 +extminY=0 +extmaxY=12 +extminZ=-20 +extmaxZ=-14 + +slcminX=25 +slcmaxX=28 +slcminY=0 +slcmaxY=12 +slcminZ=-20 +slcmaxZ=-14 + + +[volume 7] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=25 +extmaxX=28 +extminY=0 +extmaxY=12 +extminZ=14 +extmaxZ=20 + +slcminX=25 +slcmaxX=28 +slcminY=0 +slcmaxY=12 +slcminZ=14 +slcmaxZ=20 + + +[volume 8] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-20 +extmaxX=10 +extminY=18.7031 +extmaxY=24.7031 +extminZ=-25 +extmaxZ=23 + +slcminX=-20 +slcmaxX=10 +slcminY=18.7031 +slcmaxY=24.7031 +slcminZ=-25 +slcmaxZ=23 + + +[COLLISION] +name=ar04_cv.sld +count=9 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/AR05_CV.SLD b/CONTENT/BT/SOLIDS/AR05_CV.SLD new file mode 100644 index 0000000..750e3c5 --- /dev/null +++ b/CONTENT/BT/SOLIDS/AR05_CV.SLD @@ -0,0 +1,239 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-25 +extmaxX=-23 +extminY=0 +extmaxY=9 +extminZ=-25 +extmaxZ=25 + +slcminX=-25 +slcmaxX=-23 +slcminY=0 +slcmaxY=9 +slcminZ=-25 +slcmaxZ=25 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-28 +extmaxX=-23 +extminY=0 +extmaxY=15 +extminZ=14 +extmaxZ=20.2578 + +slcminX=-28 +slcmaxX=-23 +slcminY=0 +slcmaxY=15 +slcminZ=14 +slcmaxZ=20.2578 + + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-28 +extmaxX=-22 +extminY=0 +extmaxY=15 +extminZ=-20.3906 +extmaxZ=-14.1328 + +slcminX=-28 +slcmaxX=-22 +slcminY=0 +slcmaxY=15 +slcminZ=-20.3906 +slcmaxZ=-14.1328 + + +[volume 3] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=22 +extmaxX=28 +extminY=0 +extmaxY=15 +extminZ=-20.1797 +extmaxZ=-13.9297 + +slcminX=22 +slcmaxX=28 +slcminY=0 +slcmaxY=15 +slcminZ=-20.1797 +slcmaxZ=-13.9297 + + +[volume 4] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=25 +extmaxX=28 +extminY=0 +extmaxY=15 +extminZ=13.7969 +extmaxZ=20.0469 + +slcminX=25 +slcmaxX=28 +slcminY=0 +slcmaxY=15 +slcminZ=13.7969 +slcmaxZ=20.0469 + + +[volume 5] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=10 +extmaxX=11 +extminY=0 +extmaxY=20 +extminZ=-19.625 +extmaxZ=7 + +slcminX=10 +slcmaxX=11 +slcminY=0 +slcmaxY=20 +slcminZ=-19.625 +slcmaxZ=7 + + +[volume 6] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-23 +extmaxX=14.5547 +extminY=0 +extmaxY=20 +extminZ=22.9375 +extmaxZ=25 + +slcminX=-23 +slcmaxX=14.5547 +slcminY=0 +slcmaxY=20 +slcminZ=22.9375 +slcmaxZ=25 + + +[volume 7] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=23.2734 +extmaxX=25 +extminY=0 +extmaxY=11 +extminZ=7 +extmaxZ=24.9062 + +slcminX=23.2734 +slcmaxX=25 +slcminY=0 +slcmaxY=11 +slcminZ=7 +slcmaxZ=24.9062 + + +[volume 8] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-23 +extmaxX=-2.60938 +extminY=0 +extmaxY=5.6875 +extminZ=14.0703 +extmaxZ=22.9844 + +slcminX=-23 +slcmaxX=-2.60938 +slcminY=0 +slcmaxY=5.6875 +slcminZ=14.0703 +slcmaxZ=22.9844 + + +[volume 9] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=13.125 +extmaxX=20.4609 +extminY=0 +extmaxY=3.92188 +extminZ=-17.9453 +extmaxZ=-9.03125 + +slcminX=13.125 +slcmaxX=20.4609 +slcminY=0 +slcmaxY=3.92188 +slcminZ=-17.9453 +slcmaxZ=-9.03125 + + +[volume 10] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=11 +extmaxX=25 +extminY=0 +extmaxY=20 +extminZ=-5.05469 +extmaxZ=7 + +slcminX=11 +slcmaxX=25 +slcminY=0 +slcmaxY=20 +slcminZ=-5.05469 +slcmaxZ=7 + + +[COLLISION] +name=ar05_cv.sld +count=11 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/ARBAN_CV.SLD b/CONTENT/BT/SOLIDS/ARBAN_CV.SLD new file mode 100644 index 0000000..88617d8 --- /dev/null +++ b/CONTENT/BT/SOLIDS/ARBAN_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=0 +extmaxX=1.39844 +extminY=-3 +extmaxY=11 +extminZ=-3 +extmaxZ=3 + +slcminX=0 +slcmaxX=1.39844 +slcminY=-3 +slcmaxY=11 +slcminZ=-3 +slcmaxZ=3 + + +[COLLISION] +name=arban_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/ARENA1.XST b/CONTENT/BT/SOLIDS/ARENA1.XST new file mode 100644 index 0000000..1e9e378 --- /dev/null +++ b/CONTENT/BT/SOLIDS/ARENA1.XST @@ -0,0 +1,17 @@ +[LAB_ONLY] + +[extent 0] +extminX=-700 +extmaxX=700 +extminY=-5 +extmaxY=105 +extminZ=-700 +extmaxZ=700 + + +[COLLISION] +name=arena1.xst +count=0 +extentcount=1 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/ARENA2.XST b/CONTENT/BT/SOLIDS/ARENA2.XST new file mode 100644 index 0000000..433d215 --- /dev/null +++ b/CONTENT/BT/SOLIDS/ARENA2.XST @@ -0,0 +1,17 @@ +[LAB_ONLY] + +[extent 0] +extminX=-700 +extmaxX=700 +extminY=-5 +extmaxY=105 +extminZ=-700 +extmaxZ=700 + + +[COLLISION] +name=arena2.xst +count=0 +extentcount=1 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/ARENA3.XST b/CONTENT/BT/SOLIDS/ARENA3.XST new file mode 100644 index 0000000..01264ca --- /dev/null +++ b/CONTENT/BT/SOLIDS/ARENA3.XST @@ -0,0 +1,17 @@ +[LAB_ONLY] + +[extent 0] +extminX=-700 +extmaxX=700 +extminY=-5 +extmaxY=105 +extminZ=-700 +extmaxZ=700 + + +[COLLISION] +name=arena3.xst +count=0 +extentcount=1 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/ARLID_CV.SLD b/CONTENT/BT/SOLIDS/ARLID_CV.SLD new file mode 100644 index 0000000..8d3e6b1 --- /dev/null +++ b/CONTENT/BT/SOLIDS/ARLID_CV.SLD @@ -0,0 +1,28 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-800 +extmaxX=800 +extminY=0 +extmaxY=10 +extminZ=-800 +extmaxZ=800 + +slcminX=-800 +slcmaxX=800 +slcminY=0 +slcmaxY=10 +slcminZ=-800 +slcmaxZ=800 + +[COLLISION] +name=arlid_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/ARMRMOVR.SLD b/CONTENT/BT/SOLIDS/ARMRMOVR.SLD new file mode 100644 index 0000000..5db5d98 --- /dev/null +++ b/CONTENT/BT/SOLIDS/ARMRMOVR.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2 +extmaxX=2 +extminY=0 +extmaxY=2 +extminZ=-2 +extmaxZ=2 + +slcminX=-2 +slcmaxX=2 +slcminY=0 +slcmaxY=2 +slcminZ=-2 +slcmaxZ=2 + + +[COLLISION] +name=armrmovr.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/ARTRUCKS.XST b/CONTENT/BT/SOLIDS/ARTRUCKS.XST new file mode 100644 index 0000000..1e9e378 --- /dev/null +++ b/CONTENT/BT/SOLIDS/ARTRUCKS.XST @@ -0,0 +1,17 @@ +[LAB_ONLY] + +[extent 0] +extminX=-700 +extmaxX=700 +extminY=-5 +extmaxY=105 +extminZ=-700 +extmaxZ=700 + + +[COLLISION] +name=arena1.xst +count=0 +extentcount=1 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/AVA_CV.SLD b/CONTENT/BT/SOLIDS/AVA_CV.SLD new file mode 100644 index 0000000..f17d4de --- /dev/null +++ b/CONTENT/BT/SOLIDS/AVA_CV.SLD @@ -0,0 +1,30 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-3.85938 +extmaxX=3.88281 +extminY=2 +extmaxY=11.1094 +extminZ=-4.20312 +extmaxZ=3.53906 + +slcminX=-3.85938 +slcmaxX=3.88281 +slcminY=2 +slcmaxY=11.1094 +slcminZ=-4.20312 +slcmaxZ=3.53906 + + +[COLLISION] +name=ava_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + + \ No newline at end of file diff --git a/CONTENT/BT/SOLIDS/AW03_CV.SLD b/CONTENT/BT/SOLIDS/AW03_CV.SLD new file mode 100644 index 0000000..57a24f0 --- /dev/null +++ b/CONTENT/BT/SOLIDS/AW03_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-20 +extmaxX=0 +extminY=-10 +extmaxY=5 +extminZ=-100 +extmaxZ=100 + +slcminX=-20 +slcmaxX=0 +slcminY=-10 +slcmaxY=5 +slcminZ=-100 +slcmaxZ=100 + + +[COLLISION] +name=aw03_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/AW05_CV.SLD b/CONTENT/BT/SOLIDS/AW05_CV.SLD new file mode 100644 index 0000000..598ed79 --- /dev/null +++ b/CONTENT/BT/SOLIDS/AW05_CV.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-35 +extmaxX=15 +extminY=-5 +extmaxY=10 +extminZ=-15 +extmaxZ=-10 + +slcminX=-35 +slcmaxX=15 +slcminY=-5 +slcmaxY=10 +slcminZ=-15 +slcmaxZ=-10 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=10 +extmaxX=15 +extminY=-5 +extmaxY=10 +extminZ=-10 +extmaxZ=35 + +slcminX=10 +slcmaxX=15 +slcminY=-5 +slcmaxY=10 +slcminZ=-10 +slcmaxZ=35 + + +[COLLISION] +name=aw05_cv.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/AWBOX_CV.SLD b/CONTENT/BT/SOLIDS/AWBOX_CV.SLD new file mode 100644 index 0000000..d5ea18b --- /dev/null +++ b/CONTENT/BT/SOLIDS/AWBOX_CV.SLD @@ -0,0 +1,71 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=14 +TypeName=WedgeFacingPositiveZAndNegativeXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-25.5 +extmaxX=20.5 +extminY=-5 +extmaxY=10 +extminZ=-10.5 +extmaxZ=-5.5 + +slcminX=-25.5 +slcmaxX=20.5 +slcminY=-5 +slcmaxY=10 +slcminZ=-10.5 +slcmaxZ=-5.5 + + +[volume 1] +TypeNumber=13 +TypeName=WedgeFacingNegativeZAndNegativeXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-25.5 +extmaxX=20.5 +extminY=-5 +extmaxY=10 +extminZ=5.5 +extmaxZ=10.5 + +slcminX=-25.5 +slcmaxX=20.5 +slcminY=-5 +slcmaxY=10 +slcminZ=5.5 +slcmaxZ=10.5 + + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-25.5 +extmaxX=20.5 +extminY=-5 +extmaxY=10 +extminZ=-5.5 +extmaxZ=5.5 + +slcminX=-25.5 +slcmaxX=20.5 +slcminY=-5 +slcmaxY=10 +slcminZ=-5.5 +slcmaxZ=5.5 + + +[COLLISION] +name=awbox_cv.sld +count=3 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/BAC1_CV.SLD b/CONTENT/BT/SOLIDS/BAC1_CV.SLD new file mode 100644 index 0000000..72c9aec --- /dev/null +++ b/CONTENT/BT/SOLIDS/BAC1_CV.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=1 +extmaxX=9.5 +extminY=0 +extmaxY=3.89844 +extminZ=-15 +extmaxZ=15 + +slcminX=1 +slcmaxX=9.5 +slcminY=0 +slcmaxY=3.89844 +slcminZ=-15 +slcmaxZ=15 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-14 +extmaxX=1 +extminY=0 +extmaxY=2 +extminZ=-12.6016 +extmaxZ=-7.60156 + +slcminX=-14 +slcmaxX=1 +slcminY=0 +slcmaxY=2 +slcminZ=-12.6016 +slcmaxZ=-7.60156 + + +[COLLISION] +name=bac1_cv.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/BCOR1_CV.SLD b/CONTENT/BT/SOLIDS/BCOR1_CV.SLD new file mode 100644 index 0000000..8a7e083 --- /dev/null +++ b/CONTENT/BT/SOLIDS/BCOR1_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-4 +extmaxX=5 +extminY=-10 +extmaxY=20 +extminZ=-4.5 +extmaxZ=4.5 + +slcminX=-4 +slcmaxX=5 +slcminY=-10 +slcmaxY=20 +slcminZ=-4.5 +slcmaxZ=4.5 + + +[COLLISION] +name=bcor1_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/BCOR2_CV.SLD b/CONTENT/BT/SOLIDS/BCOR2_CV.SLD new file mode 100644 index 0000000..9681af8 --- /dev/null +++ b/CONTENT/BT/SOLIDS/BCOR2_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-4 +extmaxX=5 +extminY=-10 +extmaxY=10 +extminZ=-4.5 +extmaxZ=4.5 + +slcminX=-4 +slcmaxX=5 +slcminY=-10 +slcmaxY=10 +slcminZ=-4.5 +slcmaxZ=4.5 + + +[COLLISION] +name=bcor2_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/BDET4_CV.SLD b/CONTENT/BT/SOLIDS/BDET4_CV.SLD new file mode 100644 index 0000000..5e81b01 --- /dev/null +++ b/CONTENT/BT/SOLIDS/BDET4_CV.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-1.39844 +extmaxX=0 +extminY=3.5 +extmaxY=5.5 +extminZ=-2 +extmaxZ=1 + +slcminX=-1.39844 +slcmaxX=0 +slcminY=3.5 +slcmaxY=5.5 +slcminZ=-2 +slcmaxZ=1 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-0.398438 +extmaxX=0 +extminY=5.5 +extmaxY=9.5 +extminZ=-1 +extmaxZ=0 + +slcminX=-0.398438 +slcmaxX=0 +slcminY=5.5 +slcmaxY=9.5 +slcminZ=-1 +slcmaxZ=0 + + +[COLLISION] +name=bdet4_cv.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/BLANK.XST b/CONTENT/BT/SOLIDS/BLANK.XST new file mode 100644 index 0000000..3087826 --- /dev/null +++ b/CONTENT/BT/SOLIDS/BLANK.XST @@ -0,0 +1,17 @@ +[LAB_ONLY] + +[extent 0] +extminX=-7000 +extmaxX=7000 +extminY=-5 +extmaxY=105 +extminZ=-7000 +extmaxZ=7000 + + +[COLLISION] +name=nazca.xst +count=0 +extentcount=1 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/BLD03_CV.SLD b/CONTENT/BT/SOLIDS/BLD03_CV.SLD new file mode 100644 index 0000000..262437c --- /dev/null +++ b/CONTENT/BT/SOLIDS/BLD03_CV.SLD @@ -0,0 +1,71 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-29 +extmaxX=17 +extminY=0 +extmaxY=7 +extminZ=-17 +extmaxZ=11 + +slcminX=-29 +slcmaxX=17 +slcminY=0 +slcmaxY=7 +slcminZ=-17 +slcmaxZ=11 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=1 +extmaxX=29 +extminY=0 +extmaxY=4 +extminZ=-23 +extmaxZ=23 + +slcminX=1 +slcmaxX=29 +slcminY=0 +slcmaxY=4 +slcminZ=-23 +slcmaxZ=23 + + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=10 +extmaxX=20 +extminY=4 +extmaxY=18 +extminZ=5 +extmaxZ=15 + +slcminX=10 +slcmaxX=20 +slcminY=4 +slcmaxY=18 +slcminZ=5 +slcmaxZ=15 + + +[COLLISION] +name=bld03_cv.sld +count=3 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/BLD04_CV.SLD b/CONTENT/BT/SOLIDS/BLD04_CV.SLD new file mode 100644 index 0000000..480fe0c --- /dev/null +++ b/CONTENT/BT/SOLIDS/BLD04_CV.SLD @@ -0,0 +1,71 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-7 +extmaxX=6.5 +extminY=0 +extmaxY=14 +extminZ=9 +extmaxZ=20 + +slcminX=-7 +slcmaxX=6.5 +slcminY=0 +slcmaxY=14 +slcminZ=9 +slcmaxZ=20 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-12 +extmaxX=12 +extminY=0 +extmaxY=7 +extminZ=-17 +extmaxZ=3 + +slcminX=-12 +slcmaxX=12 +slcminY=0 +slcmaxY=7 +slcminZ=-17 +slcmaxZ=3 + + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-5.5 +extmaxX=4.5 +extminY=0 +extmaxY=5 +extminZ=3 +extmaxZ=9 + +slcminX=-5.5 +slcmaxX=4.5 +slcminY=0 +slcmaxY=5 +slcminZ=3 +slcmaxZ=9 + + +[COLLISION] +name=bld04_cv.sld +count=3 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/BLD06_CV.SLD b/CONTENT/BT/SOLIDS/BLD06_CV.SLD new file mode 100644 index 0000000..dc45eb3 --- /dev/null +++ b/CONTENT/BT/SOLIDS/BLD06_CV.SLD @@ -0,0 +1,155 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-20.0781 +extmaxX=-2.92188 +extminY=0 +extmaxY=10 +extminZ=-7.04688 +extmaxZ=11.0469 + +slcminX=-20.0781 +slcmaxX=-2.92188 +slcminY=0 +slcmaxY=10 +slcminZ=-7.04688 +slcmaxZ=11.0469 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=2.92188 +extmaxX=20.0781 +extminY=0 +extmaxY=10 +extminZ=-7.04688 +extmaxZ=11.0469 + +slcminX=2.92188 +slcmaxX=20.0781 +slcminY=0 +slcmaxY=10 +slcminZ=-7.04688 +slcmaxZ=11.0469 + + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-9.07812 +extmaxX=9.07812 +extminY=0 +extmaxY=12 +extminZ=-3.04688 +extmaxZ=15.0469 + +slcminX=-9.07812 +slcmaxX=9.07812 +slcminY=0 +slcmaxY=12 +slcminZ=-3.04688 +slcmaxZ=15.0469 + + +[volume 3] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=20 +extmaxX=22 +extminY=0 +extmaxY=10 +extminZ=-10 +extmaxZ=-3 + +slcminX=20 +slcmaxX=22 +slcminY=0 +slcmaxY=10 +slcminZ=-10 +slcmaxZ=-3 + + +[volume 4] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=2.54688 +extmaxX=4.54688 +extminY=0 +extmaxY=10 +extminZ=-10 +extmaxZ=-3 + +slcminX=2.54688 +slcmaxX=4.54688 +slcminY=0 +slcmaxY=10 +slcminZ=-10 +slcmaxZ=-3 + + +[volume 5] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-21.9219 +extmaxX=-19.9219 +extminY=0 +extmaxY=10 +extminZ=-10 +extmaxZ=-3 + +slcminX=-21.9219 +slcmaxX=-19.9219 +slcminY=0 +slcmaxY=10 +slcminZ=-10 +slcmaxZ=-3 + + +[volume 6] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-4.46094 +extmaxX=-2.46094 +extminY=0 +extmaxY=10 +extminZ=-10 +extmaxZ=-3 + +slcminX=-4.46094 +slcmaxX=-2.46094 +slcminY=0 +slcmaxY=10 +slcminZ=-10 +slcmaxZ=-3 + + +[COLLISION] +name=bld06_cv.sld +count=7 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/BLD20_CV.SLD b/CONTENT/BT/SOLIDS/BLD20_CV.SLD new file mode 100644 index 0000000..ab98290 --- /dev/null +++ b/CONTENT/BT/SOLIDS/BLD20_CV.SLD @@ -0,0 +1,92 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-17.0312 +extmaxX=15.9688 +extminY=0 +extmaxY=3 +extminZ=-11.9375 +extmaxZ=8.0625 + +slcminX=-17.0312 +slcmaxX=15.9688 +slcminY=0 +slcmaxY=3 +slcminZ=-11.9375 +slcmaxZ=8.0625 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-26.0312 +extmaxX=-9.03125 +extminY=0 +extmaxY=5 +extminZ=-3.9375 +extmaxZ=14.0625 + +slcminX=-26.0312 +slcmaxX=-9.03125 +slcminY=0 +slcmaxY=5 +slcminZ=-3.9375 +slcmaxZ=14.0625 + + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=7.96875 +extmaxX=25.9688 +extminY=0 +extmaxY=5 +extminZ=-13.9375 +extmaxZ=14.0625 + +slcminX=7.96875 +slcmaxX=25.9688 +slcminY=0 +slcmaxY=5 +slcminZ=-13.9375 +slcmaxZ=14.0625 + + +[volume 3] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-9.03125 +extmaxX=2.96875 +extminY=3 +extmaxY=6 +extminZ=-2.9375 +extmaxZ=5.0625 + +slcminX=-9.03125 +slcmaxX=2.96875 +slcminY=3 +slcmaxY=6 +slcminZ=-2.9375 +slcmaxZ=5.0625 + + +[COLLISION] +name=bld20_cv.sld +count=4 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/BLD24_CV.SLD b/CONTENT/BT/SOLIDS/BLD24_CV.SLD new file mode 100644 index 0000000..b9ba289 --- /dev/null +++ b/CONTENT/BT/SOLIDS/BLD24_CV.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2.24219 +extmaxX=9.25781 +extminY=0.046875 +extmaxY=5.04688 +extminZ=-21.3906 +extmaxZ=0.109375 + +slcminX=-2.24219 +slcmaxX=9.25781 +slcminY=0.046875 +slcmaxY=5.04688 +slcminZ=-21.3906 +slcmaxZ=0.109375 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-8.74219 +extmaxX=9.25781 +extminY=0.046875 +extmaxY=8.04688 +extminZ=0.109375 +extmaxZ=22.1094 + +slcminX=-8.74219 +slcmaxX=9.25781 +slcminY=0.046875 +slcmaxY=8.04688 +slcminZ=0.109375 +slcmaxZ=22.1094 + + +[COLLISION] +name=bld24_cv.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/BLD26_CV.SLD b/CONTENT/BT/SOLIDS/BLD26_CV.SLD new file mode 100644 index 0000000..e556a1d --- /dev/null +++ b/CONTENT/BT/SOLIDS/BLD26_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-6 +extmaxX=6 +extminY=0 +extmaxY=5 +extminZ=-9 +extmaxZ=9 + +slcminX=-6 +slcmaxX=6 +slcminY=0 +slcmaxY=5 +slcminZ=-9 +slcmaxZ=9 + + +[COLLISION] +name=bld26_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/BLD27_CV.SLD b/CONTENT/BT/SOLIDS/BLD27_CV.SLD new file mode 100644 index 0000000..fdab809 --- /dev/null +++ b/CONTENT/BT/SOLIDS/BLD27_CV.SLD @@ -0,0 +1,155 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-58 +extmaxX=-40 +extminY=0 +extmaxY=25 +extminZ=-28 +extmaxZ=-8 + +slcminX=-58 +slcmaxX=-40 +slcminY=0 +slcmaxY=25 +slcminZ=-28 +slcmaxZ=-8 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-83 +extmaxX=-63 +extminY=15 +extmaxY=19 +extminZ=-19 +extmaxZ=-6 + +slcminX=-83 +slcmaxX=-63 +slcminY=15 +slcmaxY=19 +slcminZ=-19 +slcmaxZ=-6 + + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-63 +extmaxX=-52 +extminY=0 +extmaxY=19 +extminZ=-19 +extmaxZ=-6 + +slcminX=-63 +slcmaxX=-52 +slcminY=0 +slcmaxY=19 +slcminZ=-19 +slcmaxZ=-6 + + +[volume 3] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-87 +extmaxX=-83 +extminY=0 +extmaxY=19 +extminZ=-19 +extmaxZ=-6 + +slcminX=-87 +slcmaxX=-83 +slcminY=0 +slcmaxY=19 +slcminZ=-19 +slcmaxZ=-6 + + +[volume 4] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-87 +extmaxX=-52 +extminY=0 +extmaxY=19 +extminZ=-6 +extmaxZ=8.5 + +slcminX=-87 +slcmaxX=-52 +slcminY=0 +slcmaxY=19 +slcminZ=-6 +slcmaxZ=8.5 + + +[volume 5] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-82 +extmaxX=-58 +extminY=0 +extmaxY=16 +extminZ=8.5 +extmaxZ=14.5 + +slcminX=-82 +slcmaxX=-58 +slcminY=0 +slcmaxY=16 +slcminZ=8.5 +slcmaxZ=14.5 + + +[volume 6] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-87 +extmaxX=-52 +extminY=0 +extmaxY=19 +extminZ=14.5 +extmaxZ=40 + +slcminX=-87 +slcmaxX=-52 +slcminY=0 +slcmaxY=19 +slcminZ=14.5 +slcmaxZ=40 + + +[COLLISION] +name=bld27_cv.sld +count=7 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/BLH_CV.SLD b/CONTENT/BT/SOLIDS/BLH_CV.SLD new file mode 100644 index 0000000..f834ac8 --- /dev/null +++ b/CONTENT/BT/SOLIDS/BLH_CV.SLD @@ -0,0 +1,30 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-3.79688 +extmaxX=3.79688 +extminY=2 +extmaxY=7.10156 +extminZ=-4.10156 +extmaxZ=3.5 + +slcminX=-3.79688 +slcmaxX=3.79688 +slcminY=1 +slcmaxY=7.10156 +slcminZ=-4.10156 +slcmaxZ=3.5 + + +[COLLISION] +name=blh_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + + \ No newline at end of file diff --git a/CONTENT/BT/SOLIDS/BNK_CV.SLD b/CONTENT/BT/SOLIDS/BNK_CV.SLD new file mode 100644 index 0000000..983e240 --- /dev/null +++ b/CONTENT/BT/SOLIDS/BNK_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-3.77344 +extmaxX=3.77344 +extminY=0 +extmaxY=2.39844 +extminZ=-3.75781 +extmaxZ=3.75781 + +slcminX=-3.77344 +slcmaxX=3.77344 +slcminY=0 +slcmaxY=2.39844 +slcminZ=-3.75781 +slcmaxZ=3.75781 + + +[COLLISION] +name=bnk_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/BPIP1_CV.SLD b/CONTENT/BT/SOLIDS/BPIP1_CV.SLD new file mode 100644 index 0000000..868589a --- /dev/null +++ b/CONTENT/BT/SOLIDS/BPIP1_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=0 +extmaxX=2 +extminY=-11 +extmaxY=10 +extminZ=-2.5 +extmaxZ=3.5 + +slcminX=0 +slcmaxX=2 +slcminY=-11 +slcmaxY=10 +slcminZ=-2.5 +slcmaxZ=3.5 + + +[COLLISION] +name=bpip1_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/BULLDOG.SLD b/CONTENT/BT/SOLIDS/BULLDOG.SLD new file mode 100644 index 0000000..8f1c617 --- /dev/null +++ b/CONTENT/BT/SOLIDS/BULLDOG.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-4 +extmaxX=4 +extminY=0 +extmaxY=3 +extminZ=-3 +extmaxZ=5 + +slcminX=-4 +slcmaxX=4 +slcminY=0 +slcmaxY=3 +slcminZ=-3 +slcmaxZ=5 + + +[COLLISION] +name=bulldog.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/BUTTEA_C.SLD b/CONTENT/BT/SOLIDS/BUTTEA_C.SLD new file mode 100644 index 0000000..3dab171 --- /dev/null +++ b/CONTENT/BT/SOLIDS/BUTTEA_C.SLD @@ -0,0 +1,92 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-63.703 +extmaxX=63.703 +extminY=0 +extmaxY=24.2266 +extminZ=-63.703 +extmaxZ=63.703 + +slcminX=-63.703 +slcmaxX=63.703 +slcminY=0 +slcmaxY=24.2266 +slcminZ=-63.703 +slcmaxZ=63.703 + + +[volume 1] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-39 +extmaxX=39 +extminY=8 +extmaxY=18 +extminZ=-39 +extmaxZ=39 + +slcminX=-39 +slcmaxX=39 +slcminY=8 +slcmaxY=18 +slcminZ=-39 +slcmaxZ=39 + + +[volume 2] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-31 +extmaxX=31 +extminY=18 +extmaxY=26 +extminZ=-31 +extmaxZ=31 + +slcminX=-31 +slcmaxX=31 +slcminY=18 +slcmaxY=26 +slcminZ=-31 +slcmaxZ=31 + + +[volume 3] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-27 +extmaxX=27 +extminY=26 +extmaxY=42 +extminZ=-27 +extmaxZ=27 + +slcminX=-27 +slcmaxX=27 +slcminY=26 +slcmaxY=42 +slcminZ=-27 +slcmaxZ=27 + + +[COLLISION] +name=buttea_cv.sld +count=4 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/BUTTEB_C.SLD b/CONTENT/BT/SOLIDS/BUTTEB_C.SLD new file mode 100644 index 0000000..4822506 --- /dev/null +++ b/CONTENT/BT/SOLIDS/BUTTEB_C.SLD @@ -0,0 +1,113 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-58.5 +extmaxX=58.5 +extminY=0 +extmaxY=12 +extminZ=-58.5 +extmaxZ=58.5 + +slcminX=-58.5 +slcmaxX=58.5 +slcminY=0 +slcmaxY=12 +slcminZ=-58.5 +slcmaxZ=58.5 + + +[volume 1] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-29.25 +extmaxX=29.25 +extminY=8 +extmaxY=18 +extminZ=-29.25 +extmaxZ=29.25 + +slcminX=-29.25 +slcmaxX=29.25 +slcminY=8 +slcmaxY=18 +slcminZ=-29.25 +slcmaxZ=29.25 + + +[volume 2] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-23.25 +extmaxX=23.25 +extminY=18 +extmaxY=26 +extminZ=-23.25 +extmaxZ=23.25 + +slcminX=-23.25 +slcmaxX=23.25 +slcminY=18 +slcmaxY=26 +slcminZ=-23.25 +slcmaxZ=23.25 + + +[volume 3] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-20.25 +extmaxX=20.25 +extminY=26 +extmaxY=42 +extminZ=-20.25 +extmaxZ=20.25 + +slcminX=-20.25 +slcmaxX=20.25 +slcminY=26 +slcmaxY=42 +slcminZ=-20.25 +slcmaxZ=20.25 + + +[volume 4] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-36 +extmaxX=36 +extminY=4 +extmaxY=8 +extminZ=-36 +extmaxZ=36 + +slcminX=-36 +slcmaxX=36 +slcminY=4 +slcmaxY=8 +slcminZ=-36 +slcmaxZ=36 + + +[COLLISION] +name=butteb_cv.sld +count=5 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/BUTTEC_C.SLD b/CONTENT/BT/SOLIDS/BUTTEC_C.SLD new file mode 100644 index 0000000..da6d79e --- /dev/null +++ b/CONTENT/BT/SOLIDS/BUTTEC_C.SLD @@ -0,0 +1,113 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-76.047 +extmaxX=76.047 +extminY=5 +extmaxY=29 +extminZ=-76.047 +extmaxZ=76.047 + +slcminX=-76.047 +slcmaxX=76.047 +slcminY=5 +slcmaxY=29 +slcminZ=-76.047 +slcmaxZ=76.047 + + +[volume 1] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-117 +extmaxX=117 +extminY=0 +extmaxY=16 +extminZ=-117 +extmaxZ=117 + +slcminX=-117 +slcmaxX=117 +slcminY=0 +slcmaxY=16 +slcminZ=-117 +slcmaxZ=117 + + +[volume 2] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-58.5 +extmaxX=58.5 +extminY=8 +extmaxY=18 +extminZ=-58.5 +extmaxZ=58.5 + +slcminX=-58.5 +slcmaxX=58.5 +slcminY=8 +slcmaxY=18 +slcminZ=-58.5 +slcmaxZ=58.5 + + +[volume 3] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-46.5 +extmaxX=46.5 +extminY=18 +extmaxY=26 +extminZ=-46.5 +extmaxZ=46.5 + +slcminX=-46.5 +slcmaxX=46.5 +slcminY=18 +slcmaxY=26 +slcminZ=-46.5 +slcmaxZ=46.5 + + +[volume 4] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-40.5 +extmaxX=40.5 +extminY=26 +extmaxY=42 +extminZ=-40.5 +extmaxZ=40.5 + +slcminX=-40.5 +slcmaxX=40.5 +slcminY=26 +slcmaxY=42 +slcminZ=-40.5 +slcmaxZ=40.5 + + +[COLLISION] +name=buttec_cv.sld +count=5 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/BUTTED_C.SLD b/CONTENT/BT/SOLIDS/BUTTED_C.SLD new file mode 100644 index 0000000..fa9f41e --- /dev/null +++ b/CONTENT/BT/SOLIDS/BUTTED_C.SLD @@ -0,0 +1,92 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-126.359 +extmaxX=126.359 +extminY=0 +extmaxY=24 +extminZ=-126.359 +extmaxZ=126.359 + +slcminX=-126.359 +slcmaxX=126.359 +slcminY=0 +slcmaxY=24 +slcminZ=-126.359 +slcmaxZ=126.359 + + +[volume 1] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-78 +extmaxX=78 +extminY=8 +extmaxY=18 +extminZ=-78 +extmaxZ=78 + +slcminX=-78 +slcmaxX=78 +slcminY=8 +slcmaxY=18 +slcminZ=-78 +slcmaxZ=78 + + +[volume 2] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-62 +extmaxX=62 +extminY=18 +extmaxY=26 +extminZ=-62 +extmaxZ=62 + +slcminX=-62 +slcmaxX=62 +slcminY=18 +slcmaxY=26 +slcminZ=-62 +slcmaxZ=62 + + +[volume 3] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-54 +extmaxX=54 +extminY=26 +extmaxY=42 +extminZ=-54 +extmaxZ=54 + +slcminX=-54 +slcmaxX=54 +slcminY=26 +slcmaxY=42 +slcminZ=-54 +slcmaxZ=54 + + +[COLLISION] +name=butted_cv.sld +count=4 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/BUTTEE_C.SLD b/CONTENT/BT/SOLIDS/BUTTEE_C.SLD new file mode 100644 index 0000000..0b1e7a5 --- /dev/null +++ b/CONTENT/BT/SOLIDS/BUTTEE_C.SLD @@ -0,0 +1,113 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-29.25 +extmaxX=29.25 +extminY=0 +extmaxY=12 +extminZ=-29.25 +extmaxZ=29.25 + +slcminX=-29.25 +slcmaxX=29.25 +slcminY=0 +slcmaxY=12 +slcminZ=-29.25 +slcmaxZ=29.25 + + +[volume 1] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-14.625 +extmaxX=14.625 +extminY=8 +extmaxY=18 +extminZ=-14.625 +extmaxZ=14.625 + +slcminX=-14.625 +slcmaxX=14.625 +slcminY=8 +slcmaxY=18 +slcminZ=-14.625 +slcmaxZ=14.625 + + +[volume 2] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-11.625 +extmaxX=11.625 +extminY=18 +extmaxY=26 +extminZ=-11.625 +extmaxZ=11.625 + +slcminX=-11.625 +slcmaxX=11.625 +slcminY=18 +slcmaxY=26 +slcminZ=-11.625 +slcmaxZ=11.625 + + +[volume 3] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-10.125 +extmaxX=10.125 +extminY=26 +extmaxY=42 +extminZ=-10.125 +extmaxZ=10.125 + +slcminX=-10.125 +slcmaxX=10.125 +slcminY=26 +slcmaxY=42 +slcminZ=-10.125 +slcmaxZ=10.125 + + +[volume 4] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-18 +extmaxX=18 +extminY=4 +extmaxY=8 +extminZ=-18 +extmaxZ=18 + +slcminX=-18 +slcmaxX=18 +slcminY=4 +slcmaxY=8 +slcminZ=-18 +slcmaxZ=18 + + +[COLLISION] +name=buttee_cv.sld +count=5 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/BWLK1_CV.SLD b/CONTENT/BT/SOLIDS/BWLK1_CV.SLD new file mode 100644 index 0000000..46f76f0 --- /dev/null +++ b/CONTENT/BT/SOLIDS/BWLK1_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-5 +extmaxX=2 +extminY=-0.796875 +extmaxY=1.10156 +extminZ=-2.5 +extmaxZ=3 + +slcminX=-5 +slcmaxX=2 +slcminY=-0.796875 +slcmaxY=1.10156 +slcminZ=-2.5 +slcmaxZ=3 + + +[COLLISION] +name=bwlk1_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/CALPB_CV.SLD b/CONTENT/BT/SOLIDS/CALPB_CV.SLD new file mode 100644 index 0000000..5a009db --- /dev/null +++ b/CONTENT/BT/SOLIDS/CALPB_CV.SLD @@ -0,0 +1,113 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-10 +extmaxX=10 +extminY=0 +extmaxY=5 +extminZ=-10 +extmaxZ=10 + +slcminX=-10 +slcmaxX=10 +slcminY=0 +slcmaxY=5 +slcminZ=-10 +slcmaxZ=10 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-3 +extmaxX=3 +extminY=0 +extmaxY=3 +extminZ=-15 +extmaxZ=-10 + +slcminX=-3 +slcmaxX=3 +slcminY=0 +slcmaxY=3 +slcminZ=-15 +slcmaxZ=-10 + + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-3 +extmaxX=3 +extminY=0 +extmaxY=3 +extminZ=10 +extmaxZ=15 + +slcminX=-3 +slcmaxX=3 +slcminY=0 +slcmaxY=3 +slcminZ=10 +slcmaxZ=15 + + +[volume 3] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=10 +extmaxX=15 +extminY=0 +extmaxY=3 +extminZ=-3 +extmaxZ=3 + +slcminX=10 +slcmaxX=15 +slcminY=0 +slcmaxY=3 +slcminZ=-3 +slcmaxZ=3 + + +[volume 4] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-15 +extmaxX=-10 +extminY=0 +extmaxY=3 +extminZ=-3 +extmaxZ=3 + +slcminX=-15 +slcmaxX=-10 +slcminY=0 +slcmaxY=3 +slcminZ=-3 +slcmaxZ=3 + + +[COLLISION] +name=calpb_cv.sld +count=5 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/CALP_CV.SLD b/CONTENT/BT/SOLIDS/CALP_CV.SLD new file mode 100644 index 0000000..ce4e324 --- /dev/null +++ b/CONTENT/BT/SOLIDS/CALP_CV.SLD @@ -0,0 +1,155 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-4 +extmaxX=4 +extminY=5 +extmaxY=9.5 +extminZ=-3.75 +extmaxZ=4.25 + +slcminX=-4 +slcmaxX=4 +slcminY=5 +slcmaxY=9.5 +slcminZ=-3.75 +slcmaxZ=4.25 + + +[volume 1] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-7.5 +extmaxX=7.5 +extminY=9.5 +extmaxY=14 +extminZ=-7.25 +extmaxZ=7.75 + +slcminX=-7.5 +slcmaxX=7.5 +slcminY=9.5 +slcmaxY=14 +slcminZ=-7.25 +slcmaxZ=7.75 + + +[volume 2] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=3.75 +extmaxX=10.75 +extminY=14.25 +extmaxY=19.25 +extminZ=-9.75 +extmaxZ=-2.75 + +slcminX=3.75 +slcmaxX=10.75 +slcminY=14.25 +slcmaxY=19.25 +slcminZ=-9.75 +slcmaxZ=-2.75 + + +[volume 3] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=3.5 +extmaxX=10.5 +extminY=14 +extmaxY=18 +extminZ=1 +extmaxZ=8 + +slcminX=3.5 +slcmaxX=10.5 +slcminY=14 +slcmaxY=18 +slcminZ=1 +slcmaxZ=8 + + +[volume 4] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-10.75 +extmaxX=-3.75 +extminY=14.25 +extmaxY=19.25 +extminZ=-9.75 +extmaxZ=-2.75 + +slcminX=-10.75 +slcmaxX=-3.75 +slcminY=14.25 +slcmaxY=19.25 +slcminZ=-9.75 +slcmaxZ=-2.75 + + +[volume 5] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-11 +extmaxX=-4 +extminY=14 +extmaxY=18 +extminZ=1 +extmaxZ=8 + +slcminX=-11 +slcmaxX=-4 +slcminY=14 +slcmaxY=18 +slcminZ=1 +slcmaxZ=8 + + +[volume 6] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-3.5 +extmaxX=3.5 +extminY=14 +extmaxY=16.5 +extminZ=-3.5 +extmaxZ=3.5 + +slcminX=-3.5 +slcmaxX=3.5 +slcminY=14 +slcmaxY=16.5 +slcminZ=-3.5 +slcmaxZ=3.5 + + +[COLLISION] +name=calp_cv.sld +count=7 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/CAVERN.XST b/CONTENT/BT/SOLIDS/CAVERN.XST new file mode 100644 index 0000000..245535c --- /dev/null +++ b/CONTENT/BT/SOLIDS/CAVERN.XST @@ -0,0 +1,16 @@ +[LAB_ONLY] + +[extent 0] +extminX=-7000 +extmaxX=7000 +extminY=-5 +extmaxY=105 +extminZ=-7000 +extmaxZ=7000 + +[COLLISION] +name=cavern.xst +count=0 +extentcount=1 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/CITY1.XST b/CONTENT/BT/SOLIDS/CITY1.XST new file mode 100644 index 0000000..daedef5 --- /dev/null +++ b/CONTENT/BT/SOLIDS/CITY1.XST @@ -0,0 +1,15 @@ +[LAB_ONLY] + +[extent 0] +extminX=-2355 +extmaxX=2765 +extminY=-100 +extmaxY=150 +extminZ=-5295 +extmaxZ=2525 + + +[COLLISION] +name=city1.xst +count=0 +extentcount=1 \ No newline at end of file diff --git a/CONTENT/BT/SOLIDS/COMTRUCK.SLD b/CONTENT/BT/SOLIDS/COMTRUCK.SLD new file mode 100644 index 0000000..62e1e18 --- /dev/null +++ b/CONTENT/BT/SOLIDS/COMTRUCK.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2 +extmaxX=2 +extminY=0 +extmaxY=3 +extminZ=-4.5 +extmaxZ=-0.5 + +slcminX=-2 +slcmaxX=2 +slcminY=0 +slcmaxY=3 +slcminZ=-4.5 +slcmaxZ=-0.5 + + +[volume 1] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2 +extmaxX=2 +extminY=0 +extmaxY=4 +extminZ=0 +extmaxZ=4 + +slcminX=-2 +slcmaxX=2 +slcminY=0 +slcmaxY=4 +slcminZ=0 +slcmaxZ=4 + + +[COLLISION] +name=comtruck.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/COOLANT.SLD b/CONTENT/BT/SOLIDS/COOLANT.SLD new file mode 100644 index 0000000..9252531 --- /dev/null +++ b/CONTENT/BT/SOLIDS/COOLANT.SLD @@ -0,0 +1,71 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2.5 +extmaxX=2.5 +extminY=0 +extmaxY=3 +extminZ=-7 +extmaxZ=-2 + +slcminX=-2.5 +slcmaxX=2.5 +slcminY=0 +slcmaxY=3 +slcminZ=-7 +slcmaxZ=-2 + + +[volume 1] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2.5 +extmaxX=2.5 +extminY=0 +extmaxY=3 +extminZ=-2 +extmaxZ=3 + +slcminX=-2.5 +slcmaxX=2.5 +slcminY=0 +slcmaxY=3 +slcminZ=-2 +slcmaxZ=3 + + +[volume 2] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2.5 +extmaxX=2.5 +extminY=0 +extmaxY=3 +extminZ=3 +extmaxZ=8 + +slcminX=-2.5 +slcmaxX=2.5 +slcminY=0 +slcmaxY=3 +slcminZ=3 +slcmaxZ=8 + + +[COLLISION] +name=coolant.sld +count=3 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/CRT_CV.SLD b/CONTENT/BT/SOLIDS/CRT_CV.SLD new file mode 100644 index 0000000..401a5f7 --- /dev/null +++ b/CONTENT/BT/SOLIDS/CRT_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-0.898438 +extmaxX=0.898438 +extminY=0 +extmaxY=5.20312 +extminZ=-2.36719 +extmaxZ=2.40625 + +slcminX=-0.898438 +slcmaxX=0.898438 +slcminY=0 +slcmaxY=5.20312 +slcminZ=-2.36719 +slcmaxZ=2.40625 + + +[COLLISION] +name=crt_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/DBASE.XST b/CONTENT/BT/SOLIDS/DBASE.XST new file mode 100644 index 0000000..97b8ef2 --- /dev/null +++ b/CONTENT/BT/SOLIDS/DBASE.XST @@ -0,0 +1,18 @@ +[LAB_ONLY] + +[extent 0] +extminX=-7000 +extmaxX=7000 +extminY=-5 +extmaxY=105 +extminZ=-7000 +extmaxZ=7000 + + +[COLLISION] +name=dbase.xst +count=0 +extentcount=1 +evilextentcount=0 + + \ No newline at end of file diff --git a/CONTENT/BT/SOLIDS/DES.XST b/CONTENT/BT/SOLIDS/DES.XST new file mode 100644 index 0000000..b15c1d3 --- /dev/null +++ b/CONTENT/BT/SOLIDS/DES.XST @@ -0,0 +1,17 @@ +[LAB_ONLY] + +[extent 0] +extminX=-7000 +extmaxX=7000 +extminY=-500 +extmaxY=1050 +extminZ=-7000 +extmaxZ=7000 + + +[COLLISION] +name=polar3.xst +count=0 +extentcount=1 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/DISH_CV.SLD b/CONTENT/BT/SOLIDS/DISH_CV.SLD new file mode 100644 index 0000000..1b45378 --- /dev/null +++ b/CONTENT/BT/SOLIDS/DISH_CV.SLD @@ -0,0 +1,92 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=4 +TypeName=RampFacingNegativeZType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-3.5 +extmaxX=3.5 +extminY=1.75 +extmaxY=8 +extminZ=-0.25 +extmaxZ=3.25 + +slcminX=-3.5 +slcmaxX=3.5 +slcminY=1.75 +slcmaxY=8 +slcminZ=-0.25 +slcmaxZ=3.25 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-3.5 +extmaxX=3.5 +extminY=1.75 +extmaxY=8 +extminZ=-0.5 +extmaxZ=-0.25 + +slcminX=-3.5 +slcmaxX=3.5 +slcminY=1.75 +slcmaxY=8 +slcminZ=-0.5 +slcmaxZ=-0.25 + + +[volume 2] +TypeNumber=6 +TypeName=RampFacingPositiveZType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-1.25 +extmaxX=1.25 +extminY=0 +extmaxY=4.75 +extminZ=-2 +extmaxZ=1 + +slcminX=-1.25 +slcmaxX=1.25 +slcminY=0 +slcmaxY=4.75 +slcminZ=-2 +slcmaxZ=1 + + +[volume 3] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2.25 +extmaxX=2.25 +extminY=0 +extmaxY=1.75 +extminZ=1 +extmaxZ=2 + +slcminX=-2.25 +slcmaxX=2.25 +slcminY=0 +slcmaxY=1.75 +slcminZ=1 +slcmaxZ=2 + + +[COLLISION] +name=dish_cv.sld +count=4 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/DOZER.SLD b/CONTENT/BT/SOLIDS/DOZER.SLD new file mode 100644 index 0000000..ded4cc9 --- /dev/null +++ b/CONTENT/BT/SOLIDS/DOZER.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2 +extmaxX=2 +extminY=0 +extmaxY=3 +extminZ=-3.5 +extmaxZ=0.5 + +slcminX=-2 +slcmaxX=2 +slcminY=0 +slcmaxY=3 +slcminZ=-3.5 +slcmaxZ=0.5 + + +[volume 1] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2 +extmaxX=2 +extminY=1.5 +extmaxY=4.5 +extminZ=0.5 +extmaxZ=4.5 + +slcminX=-2 +slcmaxX=2 +slcminY=1.5 +slcmaxY=4.5 +slcminZ=0.5 +slcmaxZ=4.5 + + +[COLLISION] +name=dozer.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/FIR_CV.SLD b/CONTENT/BT/SOLIDS/FIR_CV.SLD new file mode 100644 index 0000000..bb39f09 --- /dev/null +++ b/CONTENT/BT/SOLIDS/FIR_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2.64062 +extmaxX=2.64062 +extminY=1 +extmaxY=10.3516 +extminZ=-3.25 +extmaxZ=2.03125 + +slcminX=-2.64062 +slcmaxX=2.64062 +slcminY=1 +slcmaxY=10.3516 +slcminZ=-3.25 +slcmaxZ=2.03125 + + +[COLLISION] +name=fir_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/FL1_CV.SLD b/CONTENT/BT/SOLIDS/FL1_CV.SLD new file mode 100644 index 0000000..28ebf2a --- /dev/null +++ b/CONTENT/BT/SOLIDS/FL1_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-100 +extmaxX=100 +extminY=-4 +extmaxY=0 +extminZ=-100 +extmaxZ=100 + +slcminX=-100 +slcmaxX=100 +slcminY=-4 +slcmaxY=0 +slcminZ=-100 +slcmaxZ=100 + + +[COLLISION] +name=fl1_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/FP1_CV.SLD b/CONTENT/BT/SOLIDS/FP1_CV.SLD new file mode 100644 index 0000000..f31b700 --- /dev/null +++ b/CONTENT/BT/SOLIDS/FP1_CV.SLD @@ -0,0 +1,197 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=1.65625 +extmaxX=12 +extminY=0 +extmaxY=2.78125 +extminZ=-0.640625 +extmaxZ=1.28125 + +slcminX=1.65625 +slcmaxX=12 +slcminY=0 +slcmaxY=2.78125 +slcminZ=-0.640625 +slcmaxZ=1.28125 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=1.65625 +extmaxX=12 +extminY=0 +extmaxY=2.78125 +extminZ=-2.5625 +extmaxZ=-0.640625 + +slcminX=1.65625 +slcmaxX=12 +slcminY=0 +slcmaxY=2.78125 +slcminZ=-2.5625 +slcmaxZ=-0.640625 + + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-8 +extmaxX=-1.15625 +extminY=0 +extmaxY=2.78125 +extminZ=-2.5625 +extmaxZ=-0.640625 + +slcminX=-8 +slcmaxX=-1.15625 +slcminY=0 +slcmaxY=2.78125 +slcminZ=-2.5625 +slcmaxZ=-0.640625 + + +[volume 3] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-1.15625 +extmaxX=1.65625 +extminY=0 +extmaxY=2.78125 +extminZ=1.28125 +extmaxZ=3.77344 + +slcminX=-1.15625 +slcmaxX=1.65625 +slcminY=0 +slcmaxY=2.78125 +slcminZ=1.28125 +slcmaxZ=3.77344 + + +[volume 4] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-8 +extmaxX=-1.15625 +extminY=0 +extmaxY=2.78125 +extminZ=-4.03906 +extmaxZ=-2.5625 + +slcminX=-8 +slcmaxX=-1.15625 +slcminY=0 +slcmaxY=2.78125 +slcminZ=-4.03906 +slcmaxZ=-2.5625 + + +[volume 5] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-1.15625 +extmaxX=1.65625 +extminY=0 +extmaxY=2.78125 +extminZ=-7.82812 +extmaxZ=-4.86719 + +slcminX=-1.15625 +slcmaxX=1.65625 +slcminY=0 +slcmaxY=2.78125 +slcminZ=-7.82812 +slcmaxZ=-4.86719 + + +[volume 6] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-1.15625 +extmaxX=1.65625 +extminY=0 +extmaxY=2.78125 +extminZ=-19 +extmaxZ=-10.2188 + +slcminX=-1.15625 +slcmaxX=1.65625 +slcminY=0 +slcmaxY=2.78125 +slcminZ=-19 +slcmaxZ=-10.2188 + + +[volume 7] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-1.15625 +extmaxX=1.65625 +extminY=0 +extmaxY=2.78125 +extminZ=6.15625 +extmaxZ=17 + +slcminX=-1.15625 +slcmaxX=1.65625 +slcminY=0 +slcmaxY=2.78125 +slcminZ=6.15625 +slcmaxZ=17 + + +[volume 8] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-9.07812 +extmaxX=-6.61719 +extminY=2.03906 +extmaxY=4.59375 +extminZ=5.20312 +extmaxZ=7.65625 + +slcminX=-9.07812 +slcmaxX=-6.61719 +slcminY=2.03906 +slcmaxY=4.59375 +slcminZ=5.20312 +slcmaxZ=7.65625 + + +[COLLISION] +name=fp1_cv.sld +count=9 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/FP2D_CV.SLD b/CONTENT/BT/SOLIDS/FP2D_CV.SLD new file mode 100644 index 0000000..aef8a52 --- /dev/null +++ b/CONTENT/BT/SOLIDS/FP2D_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-1.15625 +extmaxX=1.65625 +extminY=0 +extmaxY=3.96094 +extminZ=-10 +extmaxZ=-8 + +slcminX=-1.15625 +slcmaxX=1.65625 +slcminY=0 +slcmaxY=3.96094 +slcminZ=-10 +slcmaxZ=-8 + + +[COLLISION] +name=fp2_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/FP2_CV.SLD b/CONTENT/BT/SOLIDS/FP2_CV.SLD new file mode 100644 index 0000000..aef8a52 --- /dev/null +++ b/CONTENT/BT/SOLIDS/FP2_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-1.15625 +extmaxX=1.65625 +extminY=0 +extmaxY=3.96094 +extminZ=-10 +extmaxZ=-8 + +slcminX=-1.15625 +slcmaxX=1.65625 +slcminY=0 +slcmaxY=3.96094 +slcminZ=-10 +slcmaxZ=-8 + + +[COLLISION] +name=fp2_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/FP3_CV.SLD b/CONTENT/BT/SOLIDS/FP3_CV.SLD new file mode 100644 index 0000000..640d8ac --- /dev/null +++ b/CONTENT/BT/SOLIDS/FP3_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-1.15625 +extmaxX=1.65625 +extminY=0 +extmaxY=2.78125 +extminZ=-8 +extmaxZ=10 + +slcminX=-1.15625 +slcmaxX=1.65625 +slcminY=0 +slcmaxY=2.78125 +slcminZ=-8 +slcmaxZ=10 + + +[COLLISION] +name=fp3_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/FRSTRM.XST b/CONTENT/BT/SOLIDS/FRSTRM.XST new file mode 100644 index 0000000..4a6e4f3 --- /dev/null +++ b/CONTENT/BT/SOLIDS/FRSTRM.XST @@ -0,0 +1,17 @@ +[LAB_ONLY] + +[extent 0] +extminX=-7000 +extmaxX=7000 +extminY=-5 +extmaxY=105 +extminZ=-7000 +extmaxZ=7000 + + +[COLLISION] +name=frstrm.xst +count=0 +extentcount=1 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/FT1_CV.SLD b/CONTENT/BT/SOLIDS/FT1_CV.SLD new file mode 100644 index 0000000..928e92a --- /dev/null +++ b/CONTENT/BT/SOLIDS/FT1_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-1.8125 +extmaxX=1.77344 +extminY=0 +extmaxY=9.0625 +extminZ=-1.99219 +extmaxZ=1.59375 + +slcminX=-1.8125 +slcmaxX=1.77344 +slcminY=0 +slcmaxY=9.0625 +slcminZ=-1.99219 +slcmaxZ=1.59375 + + +[COLLISION] +name=ft1_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/FT2_CV.SLD b/CONTENT/BT/SOLIDS/FT2_CV.SLD new file mode 100644 index 0000000..1a0545b --- /dev/null +++ b/CONTENT/BT/SOLIDS/FT2_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2.72656 +extmaxX=2.92969 +extminY=0 +extmaxY=10 +extminZ=-2.84375 +extmaxZ=2.82031 + +slcminX=-2.72656 +slcmaxX=2.92969 +slcminY=0 +slcmaxY=10 +slcminZ=-2.84375 +slcmaxZ=2.82031 + + +[COLLISION] +name=ft2_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/GD1_CV.SLD b/CONTENT/BT/SOLIDS/GD1_CV.SLD new file mode 100644 index 0000000..f3ac673 --- /dev/null +++ b/CONTENT/BT/SOLIDS/GD1_CV.SLD @@ -0,0 +1,71 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=0.5 +extmaxX=9.5 +extminY=6.25 +extmaxY=7.25 +extminZ=-0.5 +extmaxZ=0.5 + +slcminX=0.5 +slcmaxX=9.5 +slcminY=6.25 +slcmaxY=7.25 +slcminZ=-0.5 +slcmaxZ=0.5 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-0.5 +extmaxX=0.5 +extminY=6.25 +extmaxY=7.25 +extminZ=-10 +extmaxZ=-0.5 + +slcminX=-0.5 +slcmaxX=0.5 +slcminY=6.25 +slcmaxY=7.25 +slcminZ=-10 +slcmaxZ=-0.5 + + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-0.5 +extmaxX=0.5 +extminY=0 +extmaxY=10 +extminZ=-0.5 +extmaxZ=0.5 + +slcminX=-0.5 +slcmaxX=0.5 +slcminY=0 +slcmaxY=10 +slcminZ=-0.5 +slcmaxZ=0.5 + + +[COLLISION] +name=gd1_cv.sld +count=3 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/GD2_CV.SLD b/CONTENT/BT/SOLIDS/GD2_CV.SLD new file mode 100644 index 0000000..c2e7012 --- /dev/null +++ b/CONTENT/BT/SOLIDS/GD2_CV.SLD @@ -0,0 +1,92 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=7.5 +extmaxX=8.5 +extminY=0 +extmaxY=10.25 +extminZ=-7.75 +extmaxZ=-6.75 + +slcminX=7.5 +slcmaxX=8.5 +slcminY=0 +slcmaxY=10.25 +slcminZ=-7.75 +slcmaxZ=-6.75 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=7.5 +extmaxX=8.5 +extminY=0 +extmaxY=9 +extminZ=-0.75 +extmaxZ=0.25 + +slcminX=7.5 +slcmaxX=8.5 +slcminY=0 +slcmaxY=9 +slcminZ=-0.75 +slcmaxZ=0.25 + + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-0.5 +extmaxX=0.5 +extminY=0 +extmaxY=8 +extminZ=-0.75 +extmaxZ=0.25 + +slcminX=-0.5 +slcmaxX=0.5 +slcminY=0 +slcmaxY=8 +slcminZ=-0.75 +slcmaxZ=0.25 + + +[volume 3] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-0.5 +extmaxX=0.5 +extminY=0 +extmaxY=10 +extminZ=-7.75 +extmaxZ=-6.75 + +slcminX=-0.5 +slcmaxX=0.5 +slcminY=0 +slcmaxY=10 +slcminZ=-7.75 +slcmaxZ=-6.75 + + +[COLLISION] +name=gd2_cv.sld +count=4 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/GD3_CV.SLD b/CONTENT/BT/SOLIDS/GD3_CV.SLD new file mode 100644 index 0000000..3668a1b --- /dev/null +++ b/CONTENT/BT/SOLIDS/GD3_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-1.10156 +extmaxX=1.89844 +extminY=0 +extmaxY=2.5 +extminZ=-1.60156 +extmaxZ=1.39844 + +slcminX=-1.10156 +slcmaxX=1.89844 +slcminY=0 +slcmaxY=2.5 +slcminZ=-1.60156 +slcmaxZ=1.39844 + + +[COLLISION] +name=gd3_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/GD4_CV.SLD b/CONTENT/BT/SOLIDS/GD4_CV.SLD new file mode 100644 index 0000000..c33cd5f --- /dev/null +++ b/CONTENT/BT/SOLIDS/GD4_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-1.35156 +extmaxX=1.35156 +extminY=0 +extmaxY=2.39844 +extminZ=-1.39844 +extmaxZ=1.29688 + +slcminX=-1.35156 +slcmaxX=1.35156 +slcminY=0 +slcmaxY=2.39844 +slcminZ=-1.39844 +slcmaxZ=1.29688 + + +[COLLISION] +name=gd4_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/GD5_CV.SLD b/CONTENT/BT/SOLIDS/GD5_CV.SLD new file mode 100644 index 0000000..de580a9 --- /dev/null +++ b/CONTENT/BT/SOLIDS/GD5_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-0.5 +extmaxX=0.5 +extminY=0 +extmaxY=10 +extminZ=-0.5 +extmaxZ=0.5 + +slcminX=-0.5 +slcmaxX=0.5 +slcminY=0 +slcmaxY=10 +slcminZ=-0.5 +slcmaxZ=0.5 + + +[COLLISION] +name=gd5_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/GNR_CV.SLD b/CONTENT/BT/SOLIDS/GNR_CV.SLD new file mode 100644 index 0000000..5293e56 --- /dev/null +++ b/CONTENT/BT/SOLIDS/GNR_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-3.75781 +extmaxX=3.75781 +extminY=0 +extmaxY=3.07812 +extminZ=-3.75781 +extmaxZ=3.75781 + +slcminX=-3.75781 +slcmaxX=3.75781 +slcminY=0 +slcmaxY=3.07812 +slcminZ=-3.75781 +slcmaxZ=3.75781 + + +[COLLISION] +name=gnr_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/GR100ACV.SLD b/CONTENT/BT/SOLIDS/GR100ACV.SLD new file mode 100644 index 0000000..b28653a --- /dev/null +++ b/CONTENT/BT/SOLIDS/GR100ACV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-10000 +extmaxX=10000 +extminY=0 +extmaxY=50 +extminZ=-10000 +extmaxZ=10000 + +slcminX=-10000 +slcmaxX=10000 +slcminY=0 +slcmaxY=50 +slcminZ=-10000 +slcmaxZ=10000 + + +[COLLISION] +name=gr100acv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/GR100COL.SLD b/CONTENT/BT/SOLIDS/GR100COL.SLD new file mode 100644 index 0000000..63f0984 --- /dev/null +++ b/CONTENT/BT/SOLIDS/GR100COL.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-10000 +extmaxX=10000 +extminY=-50 +extmaxY=0 +extminZ=-10000 +extmaxZ=10000 + +slcminX=-10000 +slcmaxX=10000 +slcminY=-50 +slcmaxY=0 +slcminZ=-10000 +slcmaxZ=10000 + + +[COLLISION] +name=gr100col.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/GR100_CV.SLD b/CONTENT/BT/SOLIDS/GR100_CV.SLD new file mode 100644 index 0000000..63f0984 --- /dev/null +++ b/CONTENT/BT/SOLIDS/GR100_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-10000 +extmaxX=10000 +extminY=-50 +extmaxY=0 +extminZ=-10000 +extmaxZ=10000 + +slcminX=-10000 +slcmaxX=10000 +slcminY=-50 +slcmaxY=0 +slcminZ=-10000 +slcmaxZ=10000 + + +[COLLISION] +name=gr100col.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/GRASS.XST b/CONTENT/BT/SOLIDS/GRASS.XST new file mode 100644 index 0000000..b15c1d3 --- /dev/null +++ b/CONTENT/BT/SOLIDS/GRASS.XST @@ -0,0 +1,17 @@ +[LAB_ONLY] + +[extent 0] +extminX=-7000 +extmaxX=7000 +extminY=-500 +extmaxY=1050 +extminZ=-7000 +extmaxZ=7000 + + +[COLLISION] +name=polar3.xst +count=0 +extentcount=1 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/HARASSER.SLD b/CONTENT/BT/SOLIDS/HARASSER.SLD new file mode 100644 index 0000000..e79ab31 --- /dev/null +++ b/CONTENT/BT/SOLIDS/HARASSER.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-3 +extmaxX=3 +extminY=0 +extmaxY=3 +extminZ=-4 +extmaxZ=2 + +slcminX=-3 +slcmaxX=3 +slcminY=0 +slcmaxY=3 +slcminZ=-4 +slcmaxZ=2 + + +[COLLISION] +name=harasser.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/HC1_CV.SLD b/CONTENT/BT/SOLIDS/HC1_CV.SLD new file mode 100644 index 0000000..9fb8583 --- /dev/null +++ b/CONTENT/BT/SOLIDS/HC1_CV.SLD @@ -0,0 +1,92 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2.40625 +extmaxX=2.59375 +extminY=0 +extmaxY=1.5625 +extminZ=-2.70312 +extmaxZ=2.29688 + +slcminX=-2.40625 +slcmaxX=2.59375 +slcminY=0 +slcmaxY=1.5625 +slcminZ=-2.70312 +slcmaxZ=2.29688 + + +[volume 1] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2.40625 +extmaxX=2.59375 +extminY=1.5625 +extmaxY=2.89844 +extminZ=-2.70312 +extmaxZ=2.29688 + +slcminX=-2.40625 +slcmaxX=2.59375 +slcminY=1.5625 +slcmaxY=2.89844 +slcminZ=-2.70312 +slcmaxZ=2.29688 + + +[volume 2] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-1.10938 +extmaxX=1.28906 +extminY=0 +extmaxY=1.5625 +extminZ=4.70312 +extmaxZ=7.10156 + +slcminX=-1.10938 +slcmaxX=1.28906 +slcminY=0 +slcmaxY=1.5625 +slcminZ=4.70312 +slcmaxZ=7.10156 + + +[volume 3] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-1.10938 +extmaxX=1.28906 +extminY=1.5625 +extmaxY=2.89844 +extminZ=2.29688 +extmaxZ=4.70312 + +slcminX=-1.10938 +slcmaxX=1.28906 +slcminY=1.5625 +slcmaxY=2.89844 +slcminZ=2.29688 +slcmaxZ=4.70312 + + +[COLLISION] +name=hc1_cv.sld +count=4 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/HC2_CV.SLD b/CONTENT/BT/SOLIDS/HC2_CV.SLD new file mode 100644 index 0000000..f491eb0 --- /dev/null +++ b/CONTENT/BT/SOLIDS/HC2_CV.SLD @@ -0,0 +1,71 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-1.32812 +extmaxX=1.32812 +extminY=0 +extmaxY=4.0625 +extminZ=-7.32812 +extmaxZ=-4.67188 + +slcminX=-1.32812 +slcmaxX=1.32812 +slcminY=0 +slcmaxY=4.0625 +slcminZ=-7.32812 +slcmaxZ=-4.67188 + + +[volume 1] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-6.10938 +extmaxX=6.10938 +extminY=3.3125 +extmaxY=4.0625 +extminZ=-4.67188 +extmaxZ=7.54688 + +slcminX=-6.10938 +slcmaxX=6.10938 +slcminY=3.3125 +slcmaxY=4.0625 +slcminZ=-4.67188 +slcmaxZ=7.54688 + + +[volume 2] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2.59375 +extmaxX=2.59375 +extminY=0 +extmaxY=4.0625 +extminZ=7.54688 +extmaxZ=12.7266 + +slcminX=-2.59375 +slcmaxX=2.59375 +slcminY=0 +slcmaxY=4.0625 +slcminZ=7.54688 +slcmaxZ=12.7266 + + +[COLLISION] +name=hc2_cv.sld +count=3 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/HILLA_CV.SLD b/CONTENT/BT/SOLIDS/HILLA_CV.SLD new file mode 100644 index 0000000..3032f5f --- /dev/null +++ b/CONTENT/BT/SOLIDS/HILLA_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-45 +extmaxX=45 +extminY=0 +extmaxY=15 +extminZ=-45 +extmaxZ=45 + +slcminX=-45 +slcmaxX=45 +slcminY=0 +slcmaxY=15 +slcminZ=-45 +slcmaxZ=45 + + +[COLLISION] +name=hilla.col.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/HILLB_CV.SLD b/CONTENT/BT/SOLIDS/HILLB_CV.SLD new file mode 100644 index 0000000..0b4bd2f --- /dev/null +++ b/CONTENT/BT/SOLIDS/HILLB_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-38.75 +extmaxX=36.25 +extminY=0 +extmaxY=18.75 +extminZ=-37.5 +extmaxZ=37.5 + +slcminX=-38.75 +slcmaxX=36.25 +slcminY=0 +slcmaxY=18.75 +slcminZ=-37.5 +slcmaxZ=37.5 + + +[COLLISION] +name=hillb.col.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/HILLC_CV.SLD b/CONTENT/BT/SOLIDS/HILLC_CV.SLD new file mode 100644 index 0000000..2a3b7c8 --- /dev/null +++ b/CONTENT/BT/SOLIDS/HILLC_CV.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-9.215 +extmaxX=90.153 +extminY=0 +extmaxY=20.0234 +extminZ=-50.329 +extmaxZ=49.039 + +slcminX=-9.215 +slcmaxX=90.153 +slcminY=0 +slcmaxY=20.0234 +slcminZ=-50.329 +slcmaxZ=49.039 + + +[volume 1] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-60 +extmaxX=60 +extminY=0 +extmaxY=15 +extminZ=-60 +extmaxZ=60 + +slcminX=-60 +slcmaxX=60 +slcminY=0 +slcmaxY=15 +slcminZ=-60 +slcmaxZ=60 + + +[COLLISION] +name=hillc.col.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/HILLG1CO.SLD b/CONTENT/BT/SOLIDS/HILLG1CO.SLD new file mode 100644 index 0000000..3541742 --- /dev/null +++ b/CONTENT/BT/SOLIDS/HILLG1CO.SLD @@ -0,0 +1,71 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-195.547 +extmaxX=54.453 +extminY=0 +extmaxY=20 +extminZ=-828.406 +extmaxZ=-578.406 + +slcminX=-195.547 +slcmaxX=54.453 +slcminY=0 +slcmaxY=20 +slcminZ=-828.406 +slcmaxZ=-578.406 + + +[volume 1] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=183.312 +extmaxX=783.312 +extminY=0 +extmaxY=40 +extminZ=-656.164 +extmaxZ=-56.164 + +slcminX=183.312 +slcmaxX=783.312 +slcminY=0 +slcmaxY=40 +slcminZ=-656.164 +slcmaxZ=-56.164 + + +[volume 2] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-685.703 +extmaxX=-235.703 +extminY=0 +extmaxY=40 +extminZ=332.109 +extmaxZ=782.109 + +slcminX=-685.703 +slcmaxX=-235.703 +slcminY=0 +slcmaxY=40 +slcminZ=332.109 +slcmaxZ=782.109 + + +[COLLISION] +name=hillg1col.sld +count=3 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/HILLG1_C.SLD b/CONTENT/BT/SOLIDS/HILLG1_C.SLD new file mode 100644 index 0000000..3541742 --- /dev/null +++ b/CONTENT/BT/SOLIDS/HILLG1_C.SLD @@ -0,0 +1,71 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-195.547 +extmaxX=54.453 +extminY=0 +extmaxY=20 +extminZ=-828.406 +extmaxZ=-578.406 + +slcminX=-195.547 +slcmaxX=54.453 +slcminY=0 +slcmaxY=20 +slcminZ=-828.406 +slcmaxZ=-578.406 + + +[volume 1] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=183.312 +extmaxX=783.312 +extminY=0 +extmaxY=40 +extminZ=-656.164 +extmaxZ=-56.164 + +slcminX=183.312 +slcmaxX=783.312 +slcminY=0 +slcmaxY=40 +slcminZ=-656.164 +slcmaxZ=-56.164 + + +[volume 2] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-685.703 +extmaxX=-235.703 +extminY=0 +extmaxY=40 +extminZ=332.109 +extmaxZ=782.109 + +slcminX=-685.703 +slcmaxX=-235.703 +slcminY=0 +slcmaxY=40 +slcminZ=332.109 +slcmaxZ=782.109 + + +[COLLISION] +name=hillg1col.sld +count=3 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/HILLG2CO.SLD b/CONTENT/BT/SOLIDS/HILLG2CO.SLD new file mode 100644 index 0000000..a7536e9 --- /dev/null +++ b/CONTENT/BT/SOLIDS/HILLG2CO.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-60.078 +extmaxX=439.922 +extminY=0 +extmaxY=60 +extminZ=383.07 +extmaxZ=883.07 + +slcminX=-60.078 +slcmaxX=439.922 +slcminY=0 +slcmaxY=60 +slcminZ=383.07 +slcmaxZ=883.07 + + +[volume 1] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=468.352 +extmaxX=868.352 +extminY=0 +extmaxY=36 +extminZ=149.656 +extmaxZ=549.656 + +slcminX=468.352 +slcmaxX=868.352 +slcminY=0 +slcmaxY=36 +slcminZ=149.656 +slcmaxZ=549.656 + + +[COLLISION] +name=hillg2col.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/HILLG2_C.SLD b/CONTENT/BT/SOLIDS/HILLG2_C.SLD new file mode 100644 index 0000000..a7536e9 --- /dev/null +++ b/CONTENT/BT/SOLIDS/HILLG2_C.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-60.078 +extmaxX=439.922 +extminY=0 +extmaxY=60 +extminZ=383.07 +extmaxZ=883.07 + +slcminX=-60.078 +slcmaxX=439.922 +slcminY=0 +slcmaxY=60 +slcminZ=383.07 +slcmaxZ=883.07 + + +[volume 1] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=468.352 +extmaxX=868.352 +extminY=0 +extmaxY=36 +extminZ=149.656 +extmaxZ=549.656 + +slcminX=468.352 +slcmaxX=868.352 +slcminY=0 +slcmaxY=36 +slcminZ=149.656 +slcmaxZ=549.656 + + +[COLLISION] +name=hillg2col.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/HILLG3CO.SLD b/CONTENT/BT/SOLIDS/HILLG3CO.SLD new file mode 100644 index 0000000..fde6b38 --- /dev/null +++ b/CONTENT/BT/SOLIDS/HILLG3CO.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=720.445 +extmaxX=970.445 +extminY=0 +extmaxY=20 +extminZ=-982.953 +extmaxZ=-732.953 + +slcminX=720.445 +slcmaxX=970.445 +slcminY=0 +slcmaxY=20 +slcminZ=-982.953 +slcmaxZ=-732.953 + + +[volume 1] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-935.359 +extmaxX=-395.359 +extminY=0 +extmaxY=36 +extminZ=-359.711 +extmaxZ=180.289 + +slcminX=-935.359 +slcmaxX=-395.359 +slcminY=0 +slcmaxY=36 +slcminZ=-359.711 +slcmaxZ=180.289 + + +[COLLISION] +name=hillg3col.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/HILLG3_C.SLD b/CONTENT/BT/SOLIDS/HILLG3_C.SLD new file mode 100644 index 0000000..fde6b38 --- /dev/null +++ b/CONTENT/BT/SOLIDS/HILLG3_C.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=720.445 +extmaxX=970.445 +extminY=0 +extmaxY=20 +extminZ=-982.953 +extmaxZ=-732.953 + +slcminX=720.445 +slcmaxX=970.445 +slcminY=0 +slcmaxY=20 +slcminZ=-982.953 +slcmaxZ=-732.953 + + +[volume 1] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-935.359 +extmaxX=-395.359 +extminY=0 +extmaxY=36 +extminZ=-359.711 +extmaxZ=180.289 + +slcminX=-935.359 +slcmaxX=-395.359 +slcminY=0 +slcmaxY=36 +slcminZ=-359.711 +slcmaxZ=180.289 + + +[COLLISION] +name=hillg3col.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/HL1_CV.SLD b/CONTENT/BT/SOLIDS/HL1_CV.SLD new file mode 100644 index 0000000..ae15ebf --- /dev/null +++ b/CONTENT/BT/SOLIDS/HL1_CV.SLD @@ -0,0 +1,113 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-10.0469 +extmaxX=48.3438 +extminY=0 +extmaxY=6.17188 +extminZ=-16.7188 +extmaxZ=41.6719 + +slcminX=-10.0469 +slcmaxX=48.3438 +slcminY=0 +slcmaxY=6.17188 +slcminZ=-16.7188 +slcmaxZ=41.6719 + + +[volume 1] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-10.0625 +extmaxX=48.375 +extminY=6.17188 +extmaxY=24.9844 +extminZ=-16.75 +extmaxZ=41.6875 + +slcminX=-10.0625 +slcmaxX=48.375 +slcminY=6.17188 +slcmaxY=24.9844 +slcminZ=-16.75 +slcmaxZ=41.6875 + + +[volume 2] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-48.125 +extmaxX=27 +extminY=0 +extmaxY=21.6172 +extminZ=-45.6875 +extmaxZ=29.4375 + +slcminX=-48.125 +slcmaxX=27 +slcminY=0 +slcmaxY=21.6172 +slcminZ=-45.6875 +slcmaxZ=29.4375 + + +[volume 3] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-52.8125 +extmaxX=31.1875 +extminY=0 +extmaxY=8.39844 +extminZ=-48 +extmaxZ=36 + +slcminX=-52.8125 +slcmaxX=31.1875 +slcminY=0 +slcmaxY=8.39844 +slcminZ=-48 +slcmaxZ=36 + + +[volume 4] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-45.8125 +extmaxX=36.8125 +extminY=0 +extmaxY=24.9844 +extminZ=-35.625 +extmaxZ=47 + +slcminX=-45.8125 +slcmaxX=36.8125 +slcminY=0 +slcmaxY=24.9844 +slcminZ=-35.625 +slcmaxZ=47 + + +[COLLISION] +name=hl1_cv.sld +count=5 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/HL2_CV.SLD b/CONTENT/BT/SOLIDS/HL2_CV.SLD new file mode 100644 index 0000000..531df60 --- /dev/null +++ b/CONTENT/BT/SOLIDS/HL2_CV.SLD @@ -0,0 +1,239 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=44.2969 +extmaxX=109.703 +extminY=-0.0234375 +extmaxY=6.99219 +extminZ=-19.6016 +extmaxZ=45.7969 + +slcminX=44.2969 +slcmaxX=109.703 +slcminY=-0.0234375 +slcmaxY=6.99219 +slcminZ=-19.6016 +slcmaxZ=45.7969 + + +[volume 1] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=12.8828 +extmaxX=88.1172 +extminY=-0.0234375 +extmaxY=6.99219 +extminZ=-27.9141 +extmaxZ=47.3203 + +slcminX=12.8828 +slcmaxX=88.1172 +slcminY=-0.0234375 +slcmaxY=6.99219 +slcminZ=-27.9141 +slcmaxZ=47.3203 + + +[volume 2] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-31.3359 +extmaxX=67.7969 +extminY=-0.0234375 +extmaxY=6.99219 +extminZ=-46.4531 +extmaxZ=52.6719 + +slcminX=-31.3359 +slcmaxX=67.7969 +slcminY=-0.0234375 +slcmaxY=6.99219 +slcminZ=-46.4531 +slcmaxZ=52.6719 + + +[volume 3] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-79.3125 +extmaxX=38.0859 +extminY=-0.0234375 +extmaxY=6.99219 +extminZ=-57.7031 +extmaxZ=59.7031 + +slcminX=-79.3125 +slcmaxX=38.0859 +slcminY=-0.0234375 +slcmaxY=6.99219 +slcminZ=-57.7031 +slcmaxZ=59.7031 + + +[volume 4] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-110.094 +extmaxX=-25.0859 +extminY=-0.0234375 +extmaxY=6.99219 +extminZ=-44.375 +extmaxZ=40.6328 + +slcminX=-110.094 +slcmaxX=-25.0859 +slcminY=-0.0234375 +slcmaxY=6.99219 +slcminZ=-44.375 +slcmaxZ=40.6328 + + +[volume 5] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-127.398 +extmaxX=-61.3984 +extminY=-0.0234375 +extmaxY=6.99219 +extminZ=-35.2969 +extmaxZ=30.7031 + +slcminX=-127.398 +slcmaxX=-61.3984 +slcminY=-0.0234375 +slcmaxY=6.99219 +slcminZ=-35.2969 +slcmaxZ=30.7031 + + +[volume 6] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-149.25 +extmaxX=-41.9375 +extminY=-0.0234375 +extmaxY=12.5625 +extminZ=-57.0625 +extmaxZ=50.25 + +slcminX=-149.25 +slcmaxX=-41.9375 +slcminY=-0.0234375 +slcmaxY=12.5625 +slcminZ=-57.0625 +slcmaxZ=50.25 + + +[volume 7] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=103.5 +extmaxX=140.438 +extminY=-0.0234375 +extmaxY=14.6719 +extminZ=-3.3125 +extmaxZ=33.625 + +slcminX=103.5 +slcmaxX=140.438 +slcminY=-0.0234375 +slcmaxY=14.6719 +slcminZ=-3.3125 +slcmaxZ=33.625 + + +[volume 8] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=70.3125 +extmaxX=130.312 +extminY=-0.0234375 +extmaxY=18.5 +extminZ=-14.6875 +extmaxZ=45.3125 + +slcminX=70.3125 +slcmaxX=130.312 +slcminY=-0.0234375 +slcmaxY=18.5 +slcminZ=-14.6875 +slcmaxZ=45.3125 + + +[volume 9] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-119.625 +extmaxX=10.1875 +extminY=-0.0234375 +extmaxY=15.0469 +extminZ=-66.625 +extmaxZ=63.1875 + +slcminX=-119.625 +slcmaxX=10.1875 +slcminY=-0.0234375 +slcmaxY=15.0469 +slcminZ=-66.625 +slcmaxZ=63.1875 + + +[volume 10] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-31.3125 +extmaxX=67.8125 +extminY=6.99219 +extmaxY=24.7578 +extminZ=-46.4375 +extmaxZ=52.6875 + +slcminX=-31.3125 +slcmaxX=67.8125 +slcminY=6.99219 +slcmaxY=24.7578 +slcminZ=-46.4375 +slcmaxZ=52.6875 + + +[COLLISION] +name=hl2_cv.sld +count=11 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/HN1_CV.SLD b/CONTENT/BT/SOLIDS/HN1_CV.SLD new file mode 100644 index 0000000..88cade8 --- /dev/null +++ b/CONTENT/BT/SOLIDS/HN1_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-6.57031 +extmaxX=10.1484 +extminY=0 +extmaxY=5.21875 +extminZ=-16.3281 +extmaxZ=-0.632812 + +slcminX=-6.57031 +slcmaxX=10.1484 +slcminY=0 +slcmaxY=5.21875 +slcminZ=-16.3281 +slcmaxZ=-0.632812 + + +[COLLISION] +name=hn1_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/HUMMER.SLD b/CONTENT/BT/SOLIDS/HUMMER.SLD new file mode 100644 index 0000000..5e37b3d --- /dev/null +++ b/CONTENT/BT/SOLIDS/HUMMER.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-1.5 +extmaxX=1.5 +extminY=0 +extmaxY=2 +extminZ=-3 +extmaxZ=0 + +slcminX=-1.5 +slcmaxX=1.5 +slcminY=0 +slcmaxY=2 +slcminZ=-3 +slcmaxZ=0 + + +[volume 1] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-1.5 +extmaxX=1.5 +extminY=0 +extmaxY=2 +extminZ=0 +extmaxZ=3 + +slcminX=-1.5 +slcmaxX=1.5 +slcminY=0 +slcmaxY=2 +slcminZ=0 +slcmaxZ=3 + + +[COLLISION] +name=hummer.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/HUT_CV.SLD b/CONTENT/BT/SOLIDS/HUT_CV.SLD new file mode 100644 index 0000000..0c363d2 --- /dev/null +++ b/CONTENT/BT/SOLIDS/HUT_CV.SLD @@ -0,0 +1,71 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=7 +TypeName=RampFacingPositiveXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-9.17969 +extmaxX=-5 +extminY=0.0078125 +extmaxY=7.60938 +extminZ=-2.15625 +extmaxZ=16.6406 + +slcminX=-9.17969 +slcmaxX=-5 +slcminY=0.0078125 +slcmaxY=7.60938 +slcminZ=-2.15625 +slcmaxZ=16.6406 + + +[volume 1] +TypeNumber=5 +TypeName=RampFacingNegativeXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=5 +extmaxX=9.1875 +extminY=0.0078125 +extmaxY=7.60938 +extminZ=-2.15625 +extmaxZ=16.6406 + +slcminX=5 +slcmaxX=9.1875 +slcminY=0.0078125 +slcmaxY=7.60938 +slcminZ=-2.15625 +slcmaxZ=16.6406 + + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-5 +extmaxX=5 +extminY=0.0078125 +extmaxY=7.60938 +extminZ=-2.15625 +extmaxZ=16.6406 + +slcminX=-5 +slcmaxX=5 +slcminY=0.0078125 +slcmaxY=7.60938 +slcminZ=-2.15625 +slcmaxZ=16.6406 + + +[COLLISION] +name=hut_cv.sld +count=3 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/HWZ_CV.SLD b/CONTENT/BT/SOLIDS/HWZ_CV.SLD new file mode 100644 index 0000000..004840e --- /dev/null +++ b/CONTENT/BT/SOLIDS/HWZ_CV.SLD @@ -0,0 +1,113 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-0.5 +extmaxX=0.5 +extminY=5.75 +extmaxY=6.25 +extminZ=-6.20312 +extmaxZ=-5.20312 + +slcminX=-0.5 +slcmaxX=0.5 +slcminY=5.75 +slcmaxY=6.25 +slcminZ=-6.20312 +slcmaxZ=-5.20312 + + +[volume 1] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-0.5 +extmaxX=0.5 +extminY=4.45312 +extmaxY=4.95312 +extminZ=-4.5 +extmaxZ=-3.5 + +slcminX=-0.5 +slcmaxX=0.5 +slcminY=4.45312 +slcmaxY=4.95312 +slcminZ=-4.5 +slcmaxZ=-3.5 + + +[volume 2] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-0.5 +extmaxX=0.5 +extminY=3.45312 +extmaxY=3.95312 +extminZ=-2.89844 +extmaxZ=-1.89844 + +slcminX=-0.5 +slcmaxX=0.5 +slcminY=3.45312 +slcmaxY=3.95312 +slcminZ=-2.89844 +slcmaxZ=-1.89844 + + +[volume 3] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-1.14062 +extmaxX=1.14062 +extminY=1.29688 +extmaxY=2.75781 +extminZ=-1.29688 +extmaxZ=0.976562 + +slcminX=-1.14062 +slcmaxX=1.14062 +slcminY=1.29688 +slcmaxY=2.75781 +slcminZ=-1.29688 +slcmaxZ=0.976562 + + +[volume 4] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-4 +extmaxX=4 +extminY=-0.101562 +extmaxY=1.29688 +extminZ=-1.79688 +extmaxZ=6.20312 + +slcminX=-4 +slcmaxX=4 +slcminY=-0.101562 +slcmaxY=1.29688 +slcminZ=-1.79688 +slcmaxZ=6.20312 + + +[COLLISION] +name=hwz_cv.sld +count=5 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/JAK_CV.SLD b/CONTENT/BT/SOLIDS/JAK_CV.SLD new file mode 100644 index 0000000..4ff3baa --- /dev/null +++ b/CONTENT/BT/SOLIDS/JAK_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-3.89844 +extmaxX=3.89844 +extminY=2 +extmaxY=11.1562 +extminZ=-4.38281 +extmaxZ=3.42188 + +slcminX=-3.89844 +slcmaxX=3.89844 +slcminY=1 +slcmaxY=11.1562 +slcminZ=-4.38281 +slcmaxZ=3.42188 + + +[COLLISION] +name=thr_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/JAX1_CV.SLD b/CONTENT/BT/SOLIDS/JAX1_CV.SLD new file mode 100644 index 0000000..f7c16b0 --- /dev/null +++ b/CONTENT/BT/SOLIDS/JAX1_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-1.79688 +extmaxX=1.79688 +extminY=0 +extmaxY=3 +extminZ=-1.79688 +extmaxZ=1.79688 + +slcminX=-1.79688 +slcmaxX=1.79688 +slcminY=0 +slcmaxY=3 +slcminZ=-1.79688 +slcmaxZ=1.79688 + + +[COLLISION] +name=jax1_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/JAX2_CV.SLD b/CONTENT/BT/SOLIDS/JAX2_CV.SLD new file mode 100644 index 0000000..6dd4603 --- /dev/null +++ b/CONTENT/BT/SOLIDS/JAX2_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-1.79688 +extmaxX=1.79688 +extminY=0 +extmaxY=3 +extminZ=-1.79688 +extmaxZ=1.79688 + +slcminX=-1.79688 +slcmaxX=1.79688 +slcminY=0 +slcmaxY=3 +slcminZ=-1.79688 +slcmaxZ=1.79688 + + +[COLLISION] +name=jax2_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/LOK_CV.SLD b/CONTENT/BT/SOLIDS/LOK_CV.SLD new file mode 100644 index 0000000..7dfa9ed --- /dev/null +++ b/CONTENT/BT/SOLIDS/LOK_CV.SLD @@ -0,0 +1,30 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-3.89844 +extmaxX=3.89844 +extminY=2 +extmaxY=11.1562 +extminZ=-4.34375 +extmaxZ=3.46094 + +slcminX=-3.89844 +slcmaxX=3.89844 +slcminY=1 +slcmaxY=11.1562 +slcminZ=-4.34375 +slcmaxZ=3.46094 + + +[COLLISION] +name=lok_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + + \ No newline at end of file diff --git a/CONTENT/BT/SOLIDS/LRMCARRY.SLD b/CONTENT/BT/SOLIDS/LRMCARRY.SLD new file mode 100644 index 0000000..ccef1d4 --- /dev/null +++ b/CONTENT/BT/SOLIDS/LRMCARRY.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-5 +extmaxX=5 +extminY=-0.5 +extmaxY=4.5 +extminZ=-4 +extmaxZ=6 + +slcminX=-5 +slcmaxX=5 +slcminY=-0.5 +slcmaxY=4.5 +slcminZ=-4 +slcmaxZ=6 + + +[COLLISION] +name=lrmcarry.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/MAD_CV.SLD b/CONTENT/BT/SOLIDS/MAD_CV.SLD new file mode 100644 index 0000000..d30019d --- /dev/null +++ b/CONTENT/BT/SOLIDS/MAD_CV.SLD @@ -0,0 +1,30 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-3.85938 +extmaxX=3.88281 +extminY=2 +extmaxY=9.90625 +extminZ=-4.10156 +extmaxZ=3.64062 + +slcminX=-3.85938 +slcmaxX=3.88281 +slcminY=1 +slcmaxY=9.90625 +slcminZ=-4.10156 +slcmaxZ=3.64062 + + +[COLLISION] +name=mad_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + + \ No newline at end of file diff --git a/CONTENT/BT/SOLIDS/MECHMOVR.SLD b/CONTENT/BT/SOLIDS/MECHMOVR.SLD new file mode 100644 index 0000000..b04410d --- /dev/null +++ b/CONTENT/BT/SOLIDS/MECHMOVR.SLD @@ -0,0 +1,71 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2.5 +extmaxX=2.5 +extminY=0 +extmaxY=4 +extminZ=-7.5 +extmaxZ=-2.5 + +slcminX=-2.5 +slcmaxX=2.5 +slcminY=0 +slcmaxY=4 +slcminZ=-7.5 +slcmaxZ=-2.5 + + +[volume 1] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2.5 +extmaxX=2.5 +extminY=0 +extmaxY=3 +extminZ=-2.5 +extmaxZ=2.5 + +slcminX=-2.5 +slcmaxX=2.5 +slcminY=0 +slcmaxY=3 +slcminZ=-2.5 +slcmaxZ=2.5 + + +[volume 2] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2.5 +extmaxX=2.5 +extminY=0 +extmaxY=3 +extminZ=2.5 +extmaxZ=7.5 + +slcminX=-2.5 +slcmaxX=2.5 +slcminY=0 +slcmaxY=3 +slcminZ=2.5 +slcmaxZ=7.5 + + +[COLLISION] +name=mechmovr.sld +count=3 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/MSLBS_CV.SLD b/CONTENT/BT/SOLIDS/MSLBS_CV.SLD new file mode 100644 index 0000000..2d45fb7 --- /dev/null +++ b/CONTENT/BT/SOLIDS/MSLBS_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-375 +extmaxX=375 +extminY=-10 +extmaxY=0 +extminZ=-875 +extmaxZ=125 + +slcminX=-375 +slcmaxX=375 +slcminY=-10 +slcmaxY=0 +slcminZ=-875 +slcmaxZ=125 + + +[COLLISION] +name=mslbs_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/MSLG_CV.SLD b/CONTENT/BT/SOLIDS/MSLG_CV.SLD new file mode 100644 index 0000000..910c35b --- /dev/null +++ b/CONTENT/BT/SOLIDS/MSLG_CV.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-0.59375 +extmaxX=0.59375 +extminY=1 +extmaxY=9.02344 +extminZ=1.49219 +extmaxZ=2.67188 + +slcminX=-0.59375 +slcmaxX=0.59375 +slcminY=1 +slcmaxY=9.02344 +slcminZ=1.49219 +slcmaxZ=2.67188 + + +[volume 1] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2.22656 +extmaxX=2.22656 +extminY=0 +extmaxY=1 +extminZ=-1.78906 +extmaxZ=2.67188 + +slcminX=-2.22656 +slcmaxX=2.22656 +slcminY=0 +slcmaxY=1 +slcminZ=-1.78906 +slcmaxZ=2.67188 + + +[COLLISION] +name=mslg_cv.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/MSLH_CV.SLD b/CONTENT/BT/SOLIDS/MSLH_CV.SLD new file mode 100644 index 0000000..df0fa71 --- /dev/null +++ b/CONTENT/BT/SOLIDS/MSLH_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-25.2578 +extmaxX=25.2578 +extminY=0 +extmaxY=17.0781 +extminZ=-25.2578 +extmaxZ=25.2578 + +slcminX=-25.2578 +slcmaxX=25.2578 +slcminY=0 +slcmaxY=17.0781 +slcminZ=-25.2578 +slcmaxZ=25.2578 + + +[COLLISION] +name=mslh_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/MSLRB_CV.SLD b/CONTENT/BT/SOLIDS/MSLRB_CV.SLD new file mode 100644 index 0000000..5685697 --- /dev/null +++ b/CONTENT/BT/SOLIDS/MSLRB_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-24.5 +extmaxX=24.5 +extminY=0 +extmaxY=5 +extminZ=-24.5 +extmaxZ=24.5 + +slcminX=-24.5 +slcmaxX=24.5 +slcminY=0 +slcmaxY=5 +slcminZ=-24.5 +slcmaxZ=24.5 + + +[COLLISION] +name=mslrb_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/MSLR_CV.SLD b/CONTENT/BT/SOLIDS/MSLR_CV.SLD new file mode 100644 index 0000000..8c1a2bf --- /dev/null +++ b/CONTENT/BT/SOLIDS/MSLR_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-21.5 +extmaxX=21.5 +extminY=0 +extmaxY=15.8984 +extminZ=-21.5 +extmaxZ=21.5 + +slcminX=-21.5 +slcmaxX=21.5 +slcminY=0 +slcmaxY=15.8984 +slcminZ=-21.5 +slcmaxZ=21.5 + + +[COLLISION] +name=mslr_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/MSL_CV.SLD b/CONTENT/BT/SOLIDS/MSL_CV.SLD new file mode 100644 index 0000000..8eabef9 --- /dev/null +++ b/CONTENT/BT/SOLIDS/MSL_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-0.5 +extmaxX=0.5 +extminY=0 +extmaxY=10 +extminZ=-0.5 +extmaxZ=0.5 + +slcminX=-0.5 +slcmaxX=0.5 +slcminY=0 +slcmaxY=10 +slcminZ=-0.5 +slcmaxZ=0.5 + + +[COLLISION] +name=msl_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/OWN_CV.SLD b/CONTENT/BT/SOLIDS/OWN_CV.SLD new file mode 100644 index 0000000..2e6b4e1 --- /dev/null +++ b/CONTENT/BT/SOLIDS/OWN_CV.SLD @@ -0,0 +1,30 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-3.55469 +extmaxX=3.55469 +extminY=2 +extmaxY=9.03906 +extminZ=-4.04688 +extmaxZ=3.0625 + +slcminX=-3.55469 +slcmaxX=3.55469 +slcminY=1 +slcmaxY=9.03906 +slcminZ=-4.04688 +slcmaxZ=3.0625 + + +[COLLISION] +name=own_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + + \ No newline at end of file diff --git a/CONTENT/BT/SOLIDS/PDSH_CV.SLD b/CONTENT/BT/SOLIDS/PDSH_CV.SLD new file mode 100644 index 0000000..76fe788 --- /dev/null +++ b/CONTENT/BT/SOLIDS/PDSH_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-4.14844 +extmaxX=4.13281 +extminY=-0.0078125 +extmaxY=9.99219 +extminZ=-4.5625 +extmaxZ=3.71875 + +slcminX=-4.14844 +slcmaxX=4.13281 +slcminY=-0.0078125 +slcmaxY=9.99219 +slcminZ=-4.5625 +slcmaxZ=3.71875 + + +[COLLISION] +name=pdsh_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/PGN_CV.SLD b/CONTENT/BT/SOLIDS/PGN_CV.SLD new file mode 100644 index 0000000..944ed0c --- /dev/null +++ b/CONTENT/BT/SOLIDS/PGN_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-4 +extmaxX=4 +extminY=0 +extmaxY=4 +extminZ=-4 +extmaxZ=4 + +slcminX=-4 +slcmaxX=4 +slcminY=0 +slcmaxY=4 +slcminZ=-4 +slcmaxZ=4 + + +[COLLISION] +name=pgn_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/PLIT_CV.SLD b/CONTENT/BT/SOLIDS/PLIT_CV.SLD new file mode 100644 index 0000000..2bd15c8 --- /dev/null +++ b/CONTENT/BT/SOLIDS/PLIT_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-1 +extmaxX=1 +extminY=0 +extmaxY=6.5 +extminZ=-1 +extmaxZ=1 + +slcminX=-1 +slcmaxX=1 +slcminY=0 +slcmaxY=6.5 +slcminZ=-1 +slcmaxZ=1 + + +[COLLISION] +name=plit_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/POLAR1.XST b/CONTENT/BT/SOLIDS/POLAR1.XST new file mode 100644 index 0000000..e28df18 --- /dev/null +++ b/CONTENT/BT/SOLIDS/POLAR1.XST @@ -0,0 +1,17 @@ +[LAB_ONLY] + +[extent 0] +extminX=-7000 +extmaxX=7000 +extminY=-500 +extmaxY=1050 +extminZ=-7000 +extmaxZ=7000 + + +[COLLISION] +name=polar.xst +count=0 +extentcount=1 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/POLAR2.XST b/CONTENT/BT/SOLIDS/POLAR2.XST new file mode 100644 index 0000000..1301d8b --- /dev/null +++ b/CONTENT/BT/SOLIDS/POLAR2.XST @@ -0,0 +1,17 @@ +[LAB_ONLY] + +[extent 0] +extminX=-7000 +extmaxX=7000 +extminY=-500 +extmaxY=1050 +extminZ=-7000 +extmaxZ=7000 + + +[COLLISION] +name=polar2.xst +count=0 +extentcount=1 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/POLAR3.XST b/CONTENT/BT/SOLIDS/POLAR3.XST new file mode 100644 index 0000000..b15c1d3 --- /dev/null +++ b/CONTENT/BT/SOLIDS/POLAR3.XST @@ -0,0 +1,17 @@ +[LAB_ONLY] + +[extent 0] +extminX=-7000 +extmaxX=7000 +extminY=-500 +extmaxY=1050 +extminZ=-7000 +extmaxZ=7000 + + +[COLLISION] +name=polar3.xst +count=0 +extentcount=1 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/POLAR4.XST b/CONTENT/BT/SOLIDS/POLAR4.XST new file mode 100644 index 0000000..2a3893d --- /dev/null +++ b/CONTENT/BT/SOLIDS/POLAR4.XST @@ -0,0 +1,17 @@ +[LAB_ONLY] + +[extent 0] +extminX=-7000 +extmaxX=7000 +extminY=-500 +extmaxY=1050 +extminZ=-7000 +extmaxZ=7000 + + +[COLLISION] +name=polar4.xst +count=0 +extentcount=1 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/RAP_CV.SLD b/CONTENT/BT/SOLIDS/RAP_CV.SLD new file mode 100644 index 0000000..932c1b9 --- /dev/null +++ b/CONTENT/BT/SOLIDS/RAP_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2.82812 +extmaxX=2.82812 +extminY=1 +extmaxY=7.33594 +extminZ=-2.5 +extmaxZ=3.15625 + +slcminX=-2.82812 +slcmaxX=2.82812 +slcminY=1 +slcmaxY=7.33594 +slcminZ=-2.5 +slcmaxZ=3.15625 + + +[COLLISION] +name=rap_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/RAV.XST b/CONTENT/BT/SOLIDS/RAV.XST new file mode 100644 index 0000000..4c6e639 --- /dev/null +++ b/CONTENT/BT/SOLIDS/RAV.XST @@ -0,0 +1,17 @@ +[LAB_ONLY] + +[extent 0] +extminX=-1000 +extmaxX=1000 +extminY=-5 +extmaxY=105 +extminZ=-1000 +extmaxZ=1000 + + +[COLLISION] +name=rav.xst +count=0 +extentcount=1 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/RAV1.XST b/CONTENT/BT/SOLIDS/RAV1.XST new file mode 100644 index 0000000..a37f026 --- /dev/null +++ b/CONTENT/BT/SOLIDS/RAV1.XST @@ -0,0 +1,17 @@ +[LAB_ONLY] + +[extent 0] +extminX=-1000 +extmaxX=1000 +extminY=-5 +extmaxY=105 +extminZ=-1000 +extmaxZ=1000 + + +[COLLISION] +name=rav1.xst +count=0 +extentcount=1 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/RFLOOR.SLD b/CONTENT/BT/SOLIDS/RFLOOR.SLD new file mode 100644 index 0000000..004c85b --- /dev/null +++ b/CONTENT/BT/SOLIDS/RFLOOR.SLD @@ -0,0 +1,30 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2000 +extmaxX=2000 +extminY=-50 +extmaxY=0 +extminZ=-2000 +extmaxZ=2000 + +slcminX=-2000 +slcmaxX=2000 +slcminY=-50 +slcmaxY=0 +slcminZ=-2000 +slcmaxZ=2000 + + +[COLLISION] +name=rfloor.sld +count=1 +extentcount=0 +evilextentcount=0 + + \ No newline at end of file diff --git a/CONTENT/BT/SOLIDS/RFLOOR_C.SLD b/CONTENT/BT/SOLIDS/RFLOOR_C.SLD new file mode 100644 index 0000000..6119266 --- /dev/null +++ b/CONTENT/BT/SOLIDS/RFLOOR_C.SLD @@ -0,0 +1,30 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2000 +extmaxX=2000 +extminY=-50 +extmaxY=0 +extminZ=-2000 +extmaxZ=2000 + +slcminX=-2000 +slcmaxX=2000 +slcminY=-50 +slcmaxY=0 +slcminZ=-2000 +slcmaxZ=2000 + + +[COLLISION] +name=rfloor_c.sld +count=1 +extentcount=0 +evilextentcount=0 + + \ No newline at end of file diff --git a/CONTENT/BT/SOLIDS/RK2_CV.SLD b/CONTENT/BT/SOLIDS/RK2_CV.SLD new file mode 100644 index 0000000..cad0c03 --- /dev/null +++ b/CONTENT/BT/SOLIDS/RK2_CV.SLD @@ -0,0 +1,281 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-42.1953 +extmaxX=14.8203 +extminY=0 +extmaxY=7.96094 +extminZ=-30.8984 +extmaxZ=26.1172 + +slcminX=-42.1953 +slcmaxX=14.8203 +slcminY=0 +slcmaxY=7.96094 +slcminZ=-30.8984 +slcmaxZ=26.1172 + + +[volume 1] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-10.0391 +extmaxX=30.3047 +extminY=0 +extmaxY=7.96094 +extminZ=-27.9375 +extmaxZ=12.4141 + +slcminX=-10.0391 +slcmaxX=30.3047 +slcminY=0 +slcmaxY=7.96094 +slcminZ=-27.9375 +slcmaxZ=12.4141 + + +[volume 2] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-18.0625 +extmaxX=-13.5469 +extminY=0 +extmaxY=7.96094 +extminZ=26.1094 +extmaxZ=30.6172 + +slcminX=-18.0625 +slcmaxX=-13.5469 +slcminY=0 +slcmaxY=7.96094 +slcminZ=26.1094 +slcmaxZ=30.6172 + + +[volume 3] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-26.0781 +extmaxX=-17.9297 +extminY=0 +extmaxY=7.96094 +extminZ=24.7734 +extmaxZ=32.9141 + +slcminX=-26.0781 +slcmaxX=-17.9297 +slcminY=0 +slcmaxY=7.96094 +slcminZ=24.7734 +slcmaxZ=32.9141 + + +[volume 4] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-37.8203 +extmaxX=-30.4297 +extminY=7.96094 +extmaxY=14.6797 +extminZ=21.5 +extmaxZ=28.8906 + +slcminX=-37.8203 +slcmaxX=-30.4297 +slcminY=7.96094 +slcmaxY=14.6797 +slcminZ=21.5 +slcmaxZ=28.8906 + + +[volume 5] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-35.7812 +extmaxX=-25.6328 +extminY=0 +extmaxY=7.96094 +extminZ=20.8438 +extmaxZ=30.9922 + +slcminX=-35.7812 +slcmaxX=-25.6328 +slcminY=0 +slcmaxY=7.96094 +slcminZ=20.8438 +slcmaxZ=30.9922 + + +[volume 6] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-17.8594 +extmaxX=6.71875 +extminY=14.6797 +extmaxY=23.4297 +extminZ=-6.74219 +extmaxZ=17.8438 + +slcminX=-17.8594 +slcmaxX=6.71875 +slcminY=14.6797 +slcmaxY=23.4297 +slcminZ=-6.74219 +slcmaxZ=17.8438 + + +[volume 7] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-47.6953 +extmaxX=-30.4844 +extminY=14.6797 +extmaxY=23.4297 +extminZ=-11.8594 +extmaxZ=5.34375 + +slcminX=-47.6953 +slcmaxX=-30.4844 +slcminY=14.6797 +slcmaxY=23.4297 +slcminZ=-11.8594 +slcmaxZ=5.34375 + + +[volume 8] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-46.2109 +extmaxX=-14.9922 +extminY=14.6797 +extmaxY=33.2188 +extminZ=-2.6875 +extmaxZ=28.5312 + +slcminX=-46.2109 +slcmaxX=-14.9922 +slcminY=14.6797 +slcmaxY=33.2188 +slcminZ=-2.6875 +slcmaxZ=28.5312 + + +[volume 9] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-44.6641 +extmaxX=5.44531 +extminY=7.96094 +extmaxY=14.6797 +extminZ=-23.9844 +extmaxZ=26.1172 + +slcminX=-44.6641 +slcmaxX=5.44531 +slcminY=7.96094 +slcmaxY=14.6797 +slcminZ=-23.9844 +slcmaxZ=26.1172 + + +[volume 10] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=24.625 +extmaxX=47.7812 +extminY=0 +extmaxY=4.14062 +extminZ=-22.1016 +extmaxZ=1.0625 + +slcminX=24.625 +slcmaxX=47.7812 +slcminY=0 +slcmaxY=4.14062 +slcminZ=-22.1016 +slcmaxZ=1.0625 + + +[volume 11] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-31.3281 +extmaxX=-23.6328 +extminY=7.96094 +extmaxY=14.6797 +extminZ=24.5547 +extmaxZ=32.25 + +slcminX=-31.3281 +slcmaxX=-23.6328 +slcminY=7.96094 +slcmaxY=14.6797 +slcminZ=24.5547 +slcmaxZ=32.25 + + +[volume 12] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=5.35938 +extmaxX=24.7891 +extminY=7.96094 +extmaxY=14.6797 +extminZ=-9.13281 +extmaxZ=10.2969 + +slcminX=5.35938 +slcmaxX=24.7891 +slcminY=7.96094 +slcmaxY=14.6797 +slcminZ=-9.13281 +slcmaxZ=10.2969 + + +[COLLISION] +name=rk2_cv.sld +count=13 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/RK4_CV.SLD b/CONTENT/BT/SOLIDS/RK4_CV.SLD new file mode 100644 index 0000000..afd6c39 --- /dev/null +++ b/CONTENT/BT/SOLIDS/RK4_CV.SLD @@ -0,0 +1,197 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-8.77344 +extmaxX=-1.64844 +extminY=6.65625 +extmaxY=10.0391 +extminZ=-9.92969 +extmaxZ=-2.8125 + +slcminX=-8.77344 +slcmaxX=-1.64844 +slcminY=6.65625 +slcmaxY=10.0391 +slcminZ=-9.92969 +slcmaxZ=-2.8125 + + +[volume 1] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2.57031 +extmaxX=4.54688 +extminY=6.65625 +extmaxY=10.0391 +extminZ=-9.92969 +extmaxZ=-2.8125 + +slcminX=-2.57031 +slcmaxX=4.54688 +slcminY=6.65625 +slcmaxY=10.0391 +slcminZ=-9.92969 +slcmaxZ=-2.8125 + + +[volume 2] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-13.9922 +extmaxX=-1.72656 +extminY=4.3125 +extmaxY=6.65625 +extminZ=-8.16406 +extmaxZ=4.10156 + +slcminX=-13.9922 +slcmaxX=-1.72656 +slcminY=4.3125 +slcmaxY=6.65625 +slcminZ=-8.16406 +slcmaxZ=4.10156 + + +[volume 3] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-21.7812 +extmaxX=-5.20312 +extminY=0 +extmaxY=4.3125 +extminZ=-4.98438 +extmaxZ=11.5938 + +slcminX=-21.7812 +slcmaxX=-5.20312 +slcminY=0 +slcmaxY=4.3125 +slcminZ=-4.98438 +slcmaxZ=11.5938 + + +[volume 4] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-11.5312 +extmaxX=10.4219 +extminY=0 +extmaxY=4.3125 +extminZ=-11.8125 +extmaxZ=10.1406 + +slcminX=-11.5312 +slcmaxX=10.4219 +slcminY=0 +slcmaxY=4.3125 +slcminZ=-11.8125 +slcmaxZ=10.1406 + + +[volume 5] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=9.07031 +extmaxX=13.2891 +extminY=0 +extmaxY=4.3125 +extminZ=-8.42188 +extmaxZ=-4.19531 + +slcminX=9.07031 +slcmaxX=13.2891 +slcminY=0 +slcmaxY=4.3125 +slcminZ=-8.42188 +slcmaxZ=-4.19531 + + +[volume 6] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=6.92188 +extmaxX=22.9609 +extminY=0 +extmaxY=4.3125 +extminZ=-5.03906 +extmaxZ=11.0078 + +slcminX=6.92188 +slcmaxX=22.9609 +slcminY=0 +slcmaxY=4.3125 +slcminZ=-5.03906 +slcmaxZ=11.0078 + + +[volume 7] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=10.9219 +extmaxX=22.1641 +extminY=4.3125 +extmaxY=6.65625 +extminZ=-0.6875 +extmaxZ=10.5625 + +slcminX=10.9219 +slcmaxX=22.1641 +slcminY=4.3125 +slcmaxY=6.65625 +slcminZ=-0.6875 +slcmaxZ=10.5625 + + +[volume 8] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-4.67188 +extmaxX=5.97656 +extminY=4.3125 +extmaxY=6.65625 +extminZ=-11.6406 +extmaxZ=-0.984375 + +slcminX=-4.67188 +slcmaxX=5.97656 +slcminY=4.3125 +slcmaxY=6.65625 +slcminZ=-11.6406 +slcmaxZ=-0.984375 + + +[COLLISION] +name=rk4_cv.sld +count=9 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/RK5_CV.SLD b/CONTENT/BT/SOLIDS/RK5_CV.SLD new file mode 100644 index 0000000..c46eba7 --- /dev/null +++ b/CONTENT/BT/SOLIDS/RK5_CV.SLD @@ -0,0 +1,92 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-1.61719 +extmaxX=8.08594 +extminY=10.9219 +extmaxY=16.7031 +extminZ=-5.90625 +extmaxZ=3.79688 + +slcminX=-1.61719 +slcmaxX=8.08594 +slcminY=10.9219 +slcmaxY=16.7031 +slcminZ=-5.90625 +slcmaxZ=3.79688 + + +[volume 1] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2.41406 +extmaxX=8.88281 +extminY=8.47656 +extmaxY=10.9219 +extminZ=-5.90625 +extmaxZ=5.39844 + +slcminX=-2.41406 +slcmaxX=8.88281 +slcminY=8.47656 +slcmaxY=10.9219 +slcminZ=-5.90625 +slcmaxZ=5.39844 + + +[volume 2] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-3.77344 +extmaxX=9.49219 +extminY=0 +extmaxY=8.47656 +extminZ=-5.97656 +extmaxZ=7.28125 + +slcminX=-3.77344 +slcmaxX=9.49219 +slcminY=0 +slcmaxY=8.47656 +slcminZ=-5.97656 +slcmaxZ=7.28125 + + +[volume 3] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-10.375 +extmaxX=1.5 +extminY=0 +extmaxY=7.79688 +extminZ=-9.07812 +extmaxZ=2.80469 + +slcminX=-10.375 +slcmaxX=1.5 +slcminY=0 +slcmaxY=7.79688 +slcminZ=-9.07812 +slcmaxZ=2.80469 + + +[COLLISION] +name=rk5_cv.sld +count=4 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/RK6_CV.SLD b/CONTENT/BT/SOLIDS/RK6_CV.SLD new file mode 100644 index 0000000..645a0fd --- /dev/null +++ b/CONTENT/BT/SOLIDS/RK6_CV.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=0.09375 +extmaxX=18.5469 +extminY=4.65625 +extmaxY=6.96094 +extminZ=-4.23438 +extmaxZ=14.2109 + +slcminX=0.09375 +slcmaxX=18.5469 +slcminY=4.65625 +slcmaxY=6.96094 +slcminZ=-4.23438 +slcmaxZ=14.2109 + + +[volume 1] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-22.0859 +extmaxX=19.8047 +extminY=0 +extmaxY=4.65625 +extminZ=-20.5625 +extmaxZ=21.3203 + +slcminX=-22.0859 +slcmaxX=19.8047 +slcminY=0 +slcmaxY=4.65625 +slcminZ=-20.5625 +slcmaxZ=21.3203 + + +[COLLISION] +name=rk6_cv.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/RK7_CV.SLD b/CONTENT/BT/SOLIDS/RK7_CV.SLD new file mode 100644 index 0000000..55bf404 --- /dev/null +++ b/CONTENT/BT/SOLIDS/RK7_CV.SLD @@ -0,0 +1,113 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=0.265625 +extmaxX=3.64062 +extminY=5.82031 +extmaxY=7.23438 +extminZ=-1.07812 +extmaxZ=2.30469 + +slcminX=0.265625 +slcmaxX=3.64062 +slcminY=5.82031 +slcmaxY=7.23438 +slcminZ=-1.07812 +slcmaxZ=2.30469 + + +[volume 1] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=3.55469 +extmaxX=7.91406 +extminY=5.82031 +extmaxY=8.40625 +extminZ=-0.796875 +extmaxZ=3.5625 + +slcminX=3.55469 +slcmaxX=7.91406 +slcminY=5.82031 +slcmaxY=8.40625 +slcminZ=-0.796875 +slcmaxZ=3.5625 + + +[volume 2] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=6.625 +extmaxX=11.0547 +extminY=5.82031 +extmaxY=8.40625 +extminZ=-3.88281 +extmaxZ=0.539062 + +slcminX=6.625 +slcmaxX=11.0547 +slcminY=5.82031 +slcmaxY=8.40625 +slcminZ=-3.88281 +slcmaxZ=0.539062 + + +[volume 3] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-13.1562 +extmaxX=11.7109 +extminY=-0.0078125 +extmaxY=3.92188 +extminZ=-13.3203 +extmaxZ=11.5469 + +slcminX=-13.1562 +slcmaxX=11.7109 +slcminY=-0.0078125 +slcmaxY=3.92188 +slcminZ=-13.3203 +slcmaxZ=11.5469 + + +[volume 4] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2.67969 +extmaxX=11.6797 +extminY=3.92188 +extmaxY=5.82031 +extminZ=-10.2344 +extmaxZ=4.125 + +slcminX=-2.67969 +slcmaxX=11.6797 +slcminY=3.92188 +slcmaxY=5.82031 +slcminZ=-10.2344 +slcmaxZ=4.125 + + +[COLLISION] +name=rk7_cv.sld +count=5 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/ROMMEL.SLD b/CONTENT/BT/SOLIDS/ROMMEL.SLD new file mode 100644 index 0000000..cdedd66 --- /dev/null +++ b/CONTENT/BT/SOLIDS/ROMMEL.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-3.5 +extmaxX=3.5 +extminY=0 +extmaxY=3 +extminZ=-3 +extmaxZ=4 + +slcminX=-3.5 +slcmaxX=3.5 +slcminY=0 +slcmaxY=3 +slcminZ=-3 +slcmaxZ=4 + + +[COLLISION] +name=rommel.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/SAW_CV.SLD b/CONTENT/BT/SOLIDS/SAW_CV.SLD new file mode 100644 index 0000000..14e6db9 --- /dev/null +++ b/CONTENT/BT/SOLIDS/SAW_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=13 +TypeName=WedgeFacingNegativeZAndNegativeXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-182 +extmaxX=180 +extminY=0 +extmaxY=20 +extminZ=-180 +extmaxZ=182 + +slcminX=-182 +slcmaxX=180 +slcminY=0 +slcmaxY=20 +slcminZ=-180 +slcmaxZ=182 + + +[COLLISION] +name=saw_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/SB1B_CV.SLD b/CONTENT/BT/SOLIDS/SB1B_CV.SLD new file mode 100644 index 0000000..4418380 --- /dev/null +++ b/CONTENT/BT/SOLIDS/SB1B_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=5 +TypeName=RampFacingNegativeXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=125 +extminY=-12.7031 +extmaxY=12.2969 +extminZ=-125 +extmaxZ=125 + +slcminX=-125 +slcmaxX=125 +slcminY=-12.7031 +slcmaxY=12.2969 +slcminZ=-125 +slcmaxZ=125 + + +[COLLISION] +name=sb1b_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/SB1C_CV.SLD b/CONTENT/BT/SOLIDS/SB1C_CV.SLD new file mode 100644 index 0000000..7aad8f3 --- /dev/null +++ b/CONTENT/BT/SOLIDS/SB1C_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=6 +TypeName=RampFacingPositiveZType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=125 +extminY=-12.7031 +extmaxY=12.2969 +extminZ=-125 +extmaxZ=125 + +slcminX=-125 +slcmaxX=125 +slcminY=-12.7031 +slcmaxY=12.2969 +slcminZ=-125 +slcmaxZ=125 + + +[COLLISION] +name=sb1c_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/SB1D_CV.SLD b/CONTENT/BT/SOLIDS/SB1D_CV.SLD new file mode 100644 index 0000000..d593d1a --- /dev/null +++ b/CONTENT/BT/SOLIDS/SB1D_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=7 +TypeName=RampFacingPositiveXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=125 +extminY=-12.7031 +extmaxY=12.2969 +extminZ=-125 +extmaxZ=125 + +slcminX=-125 +slcmaxX=125 +slcminY=-12.7031 +slcmaxY=12.2969 +slcminZ=-125 +slcmaxZ=125 + + +[COLLISION] +name=sb1d_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/SB1E_CV.SLD b/CONTENT/BT/SOLIDS/SB1E_CV.SLD new file mode 100644 index 0000000..53247ea --- /dev/null +++ b/CONTENT/BT/SOLIDS/SB1E_CV.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=7 +TypeName=RampFacingPositiveXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=0 +extminY=0 +extmaxY=25 +extminZ=-125 +extmaxZ=125 + +slcminX=-125 +slcmaxX=0 +slcminY=0 +slcmaxY=25 +slcminZ=-125 +slcmaxZ=125 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=0 +extmaxX=125 +extminY=0 +extmaxY=25 +extminZ=-125 +extmaxZ=125 + +slcminX=0 +slcmaxX=125 +slcminY=0 +slcmaxY=25 +slcminZ=-125 +slcmaxZ=125 + + +[COLLISION] +name=sb1e_cv.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/SB1N_CV.SLD b/CONTENT/BT/SOLIDS/SB1N_CV.SLD new file mode 100644 index 0000000..bc83f1c --- /dev/null +++ b/CONTENT/BT/SOLIDS/SB1N_CV.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=4 +TypeName=RampFacingNegativeZType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=125 +extminY=0 +extmaxY=25 +extminZ=0 +extmaxZ=125 + +slcminX=-125 +slcmaxX=125 +slcminY=0 +slcmaxY=25 +slcminZ=0 +slcmaxZ=125 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=125 +extminY=0 +extmaxY=25 +extminZ=-125 +extmaxZ=0 + +slcminX=-125 +slcmaxX=125 +slcminY=0 +slcmaxY=25 +slcminZ=-125 +slcmaxZ=0 + + +[COLLISION] +name=sb1n_cv.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/SB1S_CV.SLD b/CONTENT/BT/SOLIDS/SB1S_CV.SLD new file mode 100644 index 0000000..52513e9 --- /dev/null +++ b/CONTENT/BT/SOLIDS/SB1S_CV.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=6 +TypeName=RampFacingPositiveZType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=125 +extminY=0 +extmaxY=25 +extminZ=-125 +extmaxZ=0 + +slcminX=-125 +slcmaxX=125 +slcminY=0 +slcmaxY=25 +slcminZ=-125 +slcmaxZ=0 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=125 +extminY=0 +extmaxY=25 +extminZ=0 +extmaxZ=125 + +slcminX=-125 +slcmaxX=125 +slcminY=0 +slcmaxY=25 +slcminZ=0 +slcmaxZ=125 + + +[COLLISION] +name=sb1s_cv.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/SB1W_CV.SLD b/CONTENT/BT/SOLIDS/SB1W_CV.SLD new file mode 100644 index 0000000..1cabde4 --- /dev/null +++ b/CONTENT/BT/SOLIDS/SB1W_CV.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=5 +TypeName=RampFacingNegativeXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=0 +extmaxX=125 +extminY=0 +extmaxY=25 +extminZ=-125 +extmaxZ=125 + +slcminX=0 +slcmaxX=125 +slcminY=0 +slcmaxY=25 +slcminZ=-125 +slcmaxZ=125 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=0 +extminY=0 +extmaxY=25 +extminZ=-125 +extmaxZ=125 + +slcminX=-125 +slcmaxX=0 +slcminY=0 +slcmaxY=25 +slcminZ=-125 +slcmaxZ=125 + + +[COLLISION] +name=sb1w_cv.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/SB1_CV.SLD b/CONTENT/BT/SOLIDS/SB1_CV.SLD new file mode 100644 index 0000000..7e4ccf5 --- /dev/null +++ b/CONTENT/BT/SOLIDS/SB1_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=4 +TypeName=RampFacingNegativeZType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=125 +extminY=-12.7031 +extmaxY=12.2969 +extminZ=-125 +extmaxZ=125 + +slcminX=-125 +slcmaxX=125 +slcminY=-12.7031 +slcmaxY=12.2969 +slcminZ=-125 +slcmaxZ=125 + + +[COLLISION] +name=sb1_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/SB2B_CV.SLD b/CONTENT/BT/SOLIDS/SB2B_CV.SLD new file mode 100644 index 0000000..866b3f0 --- /dev/null +++ b/CONTENT/BT/SOLIDS/SB2B_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=5 +TypeName=RampFacingNegativeXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=125 +extminY=-25.2031 +extmaxY=24.7969 +extminZ=-125 +extmaxZ=125 + +slcminX=-125 +slcmaxX=125 +slcminY=-25.2031 +slcmaxY=24.7969 +slcminZ=-125 +slcmaxZ=125 + + +[COLLISION] +name=sb2b_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/SB2C_CV.SLD b/CONTENT/BT/SOLIDS/SB2C_CV.SLD new file mode 100644 index 0000000..e0e5fe6 --- /dev/null +++ b/CONTENT/BT/SOLIDS/SB2C_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=6 +TypeName=RampFacingPositiveZType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=125 +extminY=-25.2031 +extmaxY=24.7969 +extminZ=-125 +extmaxZ=125 + +slcminX=-125 +slcmaxX=125 +slcminY=-25.2031 +slcmaxY=24.7969 +slcminZ=-125 +slcmaxZ=125 + + +[COLLISION] +name=sb2c_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/SB2D_CV.SLD b/CONTENT/BT/SOLIDS/SB2D_CV.SLD new file mode 100644 index 0000000..fbaecb3 --- /dev/null +++ b/CONTENT/BT/SOLIDS/SB2D_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=7 +TypeName=RampFacingPositiveXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=125 +extminY=-25.2031 +extmaxY=24.7969 +extminZ=-125 +extmaxZ=125 + +slcminX=-125 +slcmaxX=125 +slcminY=-25.2031 +slcmaxY=24.7969 +slcminZ=-125 +slcmaxZ=125 + + +[COLLISION] +name=sb2d_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/SB2E_CV.SLD b/CONTENT/BT/SOLIDS/SB2E_CV.SLD new file mode 100644 index 0000000..9b69b23 --- /dev/null +++ b/CONTENT/BT/SOLIDS/SB2E_CV.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=7 +TypeName=RampFacingPositiveXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=0 +extmaxX=125 +extminY=0 +extmaxY=25 +extminZ=-125 +extmaxZ=125 + +slcminX=0 +slcmaxX=125 +slcminY=0 +slcmaxY=25 +slcminZ=-125 +slcmaxZ=125 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=0 +extminY=-25 +extmaxY=0 +extminZ=-125 +extmaxZ=125 + +slcminX=-125 +slcmaxX=0 +slcminY=-25 +slcmaxY=0 +slcminZ=-125 +slcmaxZ=125 + + +[COLLISION] +name=sb2e_cv.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/SB2N_CV.SLD b/CONTENT/BT/SOLIDS/SB2N_CV.SLD new file mode 100644 index 0000000..ce02e7b --- /dev/null +++ b/CONTENT/BT/SOLIDS/SB2N_CV.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=4 +TypeName=RampFacingNegativeZType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=125 +extminY=0 +extmaxY=25 +extminZ=-125 +extmaxZ=0 + +slcminX=-125 +slcmaxX=125 +slcminY=0 +slcmaxY=25 +slcminZ=-125 +slcmaxZ=0 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=125 +extminY=-25 +extmaxY=0 +extminZ=0 +extmaxZ=125 + +slcminX=-125 +slcmaxX=125 +slcminY=-25 +slcmaxY=0 +slcminZ=0 +slcmaxZ=125 + + +[COLLISION] +name=sb2n_cv.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/SB2S_CV.SLD b/CONTENT/BT/SOLIDS/SB2S_CV.SLD new file mode 100644 index 0000000..951a75d --- /dev/null +++ b/CONTENT/BT/SOLIDS/SB2S_CV.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=6 +TypeName=RampFacingPositiveZType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=125 +extminY=0 +extmaxY=25 +extminZ=0 +extmaxZ=125 + +slcminX=-125 +slcmaxX=125 +slcminY=0 +slcmaxY=25 +slcminZ=0 +slcmaxZ=125 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=125 +extminY=-25 +extmaxY=0 +extminZ=-125 +extmaxZ=0 + +slcminX=-125 +slcmaxX=125 +slcminY=-25 +slcmaxY=0 +slcminZ=-125 +slcmaxZ=0 + + +[COLLISION] +name=sb2s_cv.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/SB2W_CV.SLD b/CONTENT/BT/SOLIDS/SB2W_CV.SLD new file mode 100644 index 0000000..dd85bfc --- /dev/null +++ b/CONTENT/BT/SOLIDS/SB2W_CV.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=5 +TypeName=RampFacingNegativeXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=0 +extminY=0 +extmaxY=25 +extminZ=-125 +extmaxZ=125 + +slcminX=-125 +slcmaxX=0 +slcminY=0 +slcmaxY=25 +slcminZ=-125 +slcmaxZ=125 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=0 +extmaxX=125 +extminY=-25 +extmaxY=0 +extminZ=-125 +extmaxZ=125 + +slcminX=0 +slcmaxX=125 +slcminY=-25 +slcmaxY=0 +slcminZ=-125 +slcmaxZ=125 + + +[COLLISION] +name=sb2w_cv.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/SB2_CV.SLD b/CONTENT/BT/SOLIDS/SB2_CV.SLD new file mode 100644 index 0000000..5872fde --- /dev/null +++ b/CONTENT/BT/SOLIDS/SB2_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=4 +TypeName=RampFacingNegativeZType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=125 +extminY=-25.2031 +extmaxY=24.7969 +extminZ=-125 +extmaxZ=125 + +slcminX=-125 +slcmaxX=125 +slcminY=-25.2031 +slcmaxY=24.7969 +slcminZ=-125 +slcmaxZ=125 + + +[COLLISION] +name=sb2_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/SB3E_CV.SLD b/CONTENT/BT/SOLIDS/SB3E_CV.SLD new file mode 100644 index 0000000..6a711bb --- /dev/null +++ b/CONTENT/BT/SOLIDS/SB3E_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=7 +TypeName=RampFacingPositiveXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=125 +extminY=0 +extmaxY=25 +extminZ=-125 +extmaxZ=125 + +slcminX=-125 +slcmaxX=125 +slcminY=0 +slcmaxY=25 +slcminZ=-125 +slcmaxZ=125 + + +[COLLISION] +name=sb3e_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/SB3N_CV.SLD b/CONTENT/BT/SOLIDS/SB3N_CV.SLD new file mode 100644 index 0000000..fbc9d7f --- /dev/null +++ b/CONTENT/BT/SOLIDS/SB3N_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=4 +TypeName=RampFacingNegativeZType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=125 +extminY=0 +extmaxY=25 +extminZ=-125 +extmaxZ=125 + +slcminX=-125 +slcmaxX=125 +slcminY=0 +slcmaxY=25 +slcminZ=-125 +slcmaxZ=125 + + +[COLLISION] +name=sb3n_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/SB3S_CV.SLD b/CONTENT/BT/SOLIDS/SB3S_CV.SLD new file mode 100644 index 0000000..b97bdd9 --- /dev/null +++ b/CONTENT/BT/SOLIDS/SB3S_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=6 +TypeName=RampFacingPositiveZType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=125 +extminY=0 +extmaxY=25 +extminZ=-125 +extmaxZ=125 + +slcminX=-125 +slcmaxX=125 +slcminY=0 +slcmaxY=25 +slcminZ=-125 +slcmaxZ=125 + + +[COLLISION] +name=sb3s_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/SB3W_CV.SLD b/CONTENT/BT/SOLIDS/SB3W_CV.SLD new file mode 100644 index 0000000..2f5b93f --- /dev/null +++ b/CONTENT/BT/SOLIDS/SB3W_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=5 +TypeName=RampFacingNegativeXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=125 +extminY=0 +extmaxY=25 +extminZ=-125 +extmaxZ=125 + +slcminX=-125 +slcmaxX=125 +slcminY=0 +slcmaxY=25 +slcminZ=-125 +slcmaxZ=125 + + +[COLLISION] +name=sb3w_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/SB4E_CV.SLD b/CONTENT/BT/SOLIDS/SB4E_CV.SLD new file mode 100644 index 0000000..3f0b3de --- /dev/null +++ b/CONTENT/BT/SOLIDS/SB4E_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=7 +TypeName=RampFacingPositiveXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=125 +extminY=0 +extmaxY=50 +extminZ=-125 +extmaxZ=125 + +slcminX=-125 +slcmaxX=125 +slcminY=0 +slcmaxY=50 +slcminZ=-125 +slcmaxZ=125 + + +[COLLISION] +name=sb4e_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/SB4N_CV.SLD b/CONTENT/BT/SOLIDS/SB4N_CV.SLD new file mode 100644 index 0000000..b213be1 --- /dev/null +++ b/CONTENT/BT/SOLIDS/SB4N_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=4 +TypeName=RampFacingNegativeZType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=125 +extminY=0 +extmaxY=50 +extminZ=-125 +extmaxZ=125 + +slcminX=-125 +slcmaxX=125 +slcminY=0 +slcmaxY=50 +slcminZ=-125 +slcmaxZ=125 + + +[COLLISION] +name=sb4n_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/SB4S_CV.SLD b/CONTENT/BT/SOLIDS/SB4S_CV.SLD new file mode 100644 index 0000000..ca724dd --- /dev/null +++ b/CONTENT/BT/SOLIDS/SB4S_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=6 +TypeName=RampFacingPositiveZType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=125 +extminY=0 +extmaxY=50 +extminZ=-125 +extmaxZ=125 + +slcminX=-125 +slcmaxX=125 +slcminY=0 +slcmaxY=50 +slcminZ=-125 +slcmaxZ=125 + + +[COLLISION] +name=sb4s_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/SB4W_CV.SLD b/CONTENT/BT/SOLIDS/SB4W_CV.SLD new file mode 100644 index 0000000..01692d3 --- /dev/null +++ b/CONTENT/BT/SOLIDS/SB4W_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=5 +TypeName=RampFacingNegativeXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=125 +extminY=0 +extmaxY=50 +extminZ=-125 +extmaxZ=125 + +slcminX=-125 +slcmaxX=125 +slcminY=0 +slcmaxY=50 +slcminZ=-125 +slcmaxZ=125 + + +[COLLISION] +name=sb4w_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/SEMI.SLD b/CONTENT/BT/SOLIDS/SEMI.SLD new file mode 100644 index 0000000..a4d3a98 --- /dev/null +++ b/CONTENT/BT/SOLIDS/SEMI.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-1.5 +extmaxX=1.5 +extminY=0 +extmaxY=3 +extminZ=-3 +extmaxZ=0 + +slcminX=-1.5 +slcmaxX=1.5 +slcminY=0 +slcmaxY=3 +slcminZ=-3 +slcmaxZ=0 + + +[volume 1] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-1.5 +extmaxX=1.5 +extminY=0 +extmaxY=1 +extminZ=0 +extmaxZ=3 + +slcminX=-1.5 +slcmaxX=1.5 +slcminY=0 +slcmaxY=1 +slcminZ=0 +slcmaxZ=3 + + +[COLLISION] +name=semi.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/SEMIRIG.SLD b/CONTENT/BT/SOLIDS/SEMIRIG.SLD new file mode 100644 index 0000000..2a90184 --- /dev/null +++ b/CONTENT/BT/SOLIDS/SEMIRIG.SLD @@ -0,0 +1,71 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-1.5 +extmaxX=1.5 +extminY=1.5 +extmaxY=3.5 +extminZ=0.5 +extmaxZ=3.5 + +slcminX=-1.5 +slcmaxX=1.5 +slcminY=1.5 +slcmaxY=3.5 +slcminZ=0.5 +slcmaxZ=3.5 + + +[volume 1] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-1 +extmaxX=1 +extminY=1.5 +extmaxY=3.5 +extminZ=3.75 +extmaxZ=5.75 + +slcminX=-1 +slcmaxX=1 +slcminY=1.5 +slcmaxY=3.5 +slcminZ=3.75 +slcmaxZ=5.75 + + +[volume 2] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-1.5 +extmaxX=1.5 +extminY=1.5 +extmaxY=3.5 +extminZ=6 +extmaxZ=9 + +slcminX=-1.5 +slcmaxX=1.5 +slcminY=1.5 +slcmaxY=3.5 +slcminZ=6 +slcmaxZ=9 + + +[COLLISION] +name=semirig.sld +count=3 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/SL2_CV.SLD b/CONTENT/BT/SOLIDS/SL2_CV.SLD new file mode 100644 index 0000000..dce6261 --- /dev/null +++ b/CONTENT/BT/SOLIDS/SL2_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-0.25 +extmaxX=0.25 +extminY=0 +extmaxY=6 +extminZ=-0.25 +extmaxZ=0.25 + +slcminX=-0.25 +slcmaxX=0.25 +slcminY=0 +slcmaxY=6 +slcminZ=-0.25 +slcmaxZ=0.25 + + +[COLLISION] +name=sl2_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/SN1_CV.SLD b/CONTENT/BT/SOLIDS/SN1_CV.SLD new file mode 100644 index 0000000..42d13fd --- /dev/null +++ b/CONTENT/BT/SOLIDS/SN1_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=125 +extminY=-25.2031 +extmaxY=-0.203125 +extminZ=-125 +extmaxZ=125 + +slcminX=-125 +slcmaxX=125 +slcminY=-25.2031 +slcmaxY=-0.203125 +slcminZ=-125 +slcmaxZ=125 + + +[COLLISION] +name=sn1_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/SND_CV.SLD b/CONTENT/BT/SOLIDS/SND_CV.SLD new file mode 100644 index 0000000..a9b6bbf --- /dev/null +++ b/CONTENT/BT/SOLIDS/SND_CV.SLD @@ -0,0 +1,30 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-3.89844 +extmaxX=3.89844 +extminY=2 +extmaxY=12.1562 +extminZ=-4.38281 +extmaxZ=3.42188 + +slcminX=-3.89844 +slcmaxX=3.89844 +slcminY=1 +slcmaxY=12.1562 +slcminZ=-4.38281 +slcmaxZ=3.42188 + + +[COLLISION] +name=snd_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + + \ No newline at end of file diff --git a/CONTENT/BT/SOLIDS/SNH_CV.SLD b/CONTENT/BT/SOLIDS/SNH_CV.SLD new file mode 100644 index 0000000..f37502f --- /dev/null +++ b/CONTENT/BT/SOLIDS/SNH_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2.38281 +extmaxX=2.38281 +extminY=0 +extmaxY=2.45312 +extminZ=-2.28906 +extmaxZ=2.46875 + +slcminX=-2.38281 +slcmaxX=2.38281 +slcminY=0 +slcmaxY=2.45312 +slcminZ=-2.28906 +slcmaxZ=2.46875 + + +[COLLISION] +name=snh_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/SR1E_CV.SLD b/CONTENT/BT/SOLIDS/SR1E_CV.SLD new file mode 100644 index 0000000..4b43087 --- /dev/null +++ b/CONTENT/BT/SOLIDS/SR1E_CV.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=7 +TypeName=RampFacingPositiveXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=0 +extminY=0 +extmaxY=12.5 +extminZ=-125 +extmaxZ=125 + +slcminX=-125 +slcmaxX=0 +slcminY=0 +slcmaxY=12.5 +slcminZ=-125 +slcmaxZ=125 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=0 +extmaxX=122 +extminY=12.5 +extmaxY=45.5 +extminZ=-125 +extmaxZ=125 + +slcminX=0 +slcmaxX=122 +slcminY=12.5 +slcmaxY=45.5 +slcminZ=-125 +slcmaxZ=125 + + +[COLLISION] +name=sr1e_cv.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/SR1N_CV.SLD b/CONTENT/BT/SOLIDS/SR1N_CV.SLD new file mode 100644 index 0000000..b37cffc --- /dev/null +++ b/CONTENT/BT/SOLIDS/SR1N_CV.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=4 +TypeName=RampFacingNegativeZType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=125 +extminY=0 +extmaxY=12.5 +extminZ=0 +extmaxZ=125 + +slcminX=-125 +slcmaxX=125 +slcminY=0 +slcmaxY=12.5 +slcminZ=0 +slcmaxZ=125 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=125 +extminY=12.5 +extmaxY=45.5 +extminZ=-122 +extmaxZ=0 + +slcminX=-125 +slcmaxX=125 +slcminY=12.5 +slcmaxY=45.5 +slcminZ=-122 +slcmaxZ=0 + + +[COLLISION] +name=sr1n_cv.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/SR1S_CV.SLD b/CONTENT/BT/SOLIDS/SR1S_CV.SLD new file mode 100644 index 0000000..8f3e448 --- /dev/null +++ b/CONTENT/BT/SOLIDS/SR1S_CV.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=6 +TypeName=RampFacingPositiveZType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=125 +extminY=0 +extmaxY=12.5 +extminZ=-125 +extmaxZ=0 + +slcminX=-125 +slcmaxX=125 +slcminY=0 +slcmaxY=12.5 +slcminZ=-125 +slcmaxZ=0 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=125 +extminY=12.5 +extmaxY=45.5 +extminZ=0 +extmaxZ=122 + +slcminX=-125 +slcmaxX=125 +slcminY=12.5 +slcmaxY=45.5 +slcminZ=0 +slcmaxZ=122 + + +[COLLISION] +name=sr1s_cv.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/SR1W_CV.SLD b/CONTENT/BT/SOLIDS/SR1W_CV.SLD new file mode 100644 index 0000000..a0354a3 --- /dev/null +++ b/CONTENT/BT/SOLIDS/SR1W_CV.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=5 +TypeName=RampFacingNegativeXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=0 +extmaxX=125 +extminY=0 +extmaxY=12.5 +extminZ=-125 +extmaxZ=125 + +slcminX=0 +slcmaxX=125 +slcminY=0 +slcmaxY=12.5 +slcminZ=-125 +slcmaxZ=125 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-122 +extmaxX=0 +extminY=12.5 +extmaxY=45.5 +extminZ=-125 +extmaxZ=125 + +slcminX=-122 +slcmaxX=0 +slcminY=12.5 +slcmaxY=45.5 +slcminZ=-125 +slcmaxZ=125 + + +[COLLISION] +name=sr1w_cv.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/SRC1NE_C.SLD b/CONTENT/BT/SOLIDS/SRC1NE_C.SLD new file mode 100644 index 0000000..284b74e --- /dev/null +++ b/CONTENT/BT/SOLIDS/SRC1NE_C.SLD @@ -0,0 +1,72 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=0 +extmaxX=250 +extminY=12.5234 +extmaxY=162.4766 +extminZ=-250 +extmaxZ=0 + +slcminX=0 +slcmaxX=250 +slcminY=12.5234 +slcmaxY=162.4766 +slcminZ=-250 +slcmaxZ=0 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=125 +extminY=-12.5 +extmaxY=0 +extminZ=-125 +extmaxZ=125 + +slcminX=-125 +slcmaxX=125 +slcminY=-12.5 +slcmaxY=0 +slcminZ=-125 +slcmaxZ=125 + + +[volume 2] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=375 +extminY=0 +extmaxY=25 +extminZ=-375 +extmaxZ=125 + +slcminX=-125 +slcmaxX=375 +slcminY=0 +slcmaxY=25 +slcminZ=-375 +slcmaxZ=125 + + +[COLLISION] +name=src1ne_c.sld +count=3 +extentcount=0 +evilextentcount=0 + + \ No newline at end of file diff --git a/CONTENT/BT/SOLIDS/SRC1NW_C.SLD b/CONTENT/BT/SOLIDS/SRC1NW_C.SLD new file mode 100644 index 0000000..76b7633 --- /dev/null +++ b/CONTENT/BT/SOLIDS/SRC1NW_C.SLD @@ -0,0 +1,72 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-250 +extmaxX=0 +extminY=12.5234 +extmaxY=162.4766 +extminZ=-250 +extmaxZ=0 + +slcminX=-250 +slcmaxX=0 +slcminY=12.5234 +slcmaxY=162.4766 +slcminZ=-250 +slcmaxZ=0 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=125 +extminY=-12.5 +extmaxY=0 +extminZ=-125 +extmaxZ=125 + +slcminX=-125 +slcmaxX=125 +slcminY=-12.5 +slcmaxY=0 +slcminZ=-125 +slcmaxZ=125 + + +[volume 2] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-375 +extmaxX=125 +extminY=0 +extmaxY=25 +extminZ=-375 +extmaxZ=125 + +slcminX=-375 +slcmaxX=125 +slcminY=0 +slcmaxY=25 +slcminZ=-375 +slcmaxZ=125 + + +[COLLISION] +name=src1nw_c.sld +count=3 +extentcount=0 +evilextentcount=0 + + \ No newline at end of file diff --git a/CONTENT/BT/SOLIDS/SRC1SE_C.SLD b/CONTENT/BT/SOLIDS/SRC1SE_C.SLD new file mode 100644 index 0000000..425f318 --- /dev/null +++ b/CONTENT/BT/SOLIDS/SRC1SE_C.SLD @@ -0,0 +1,72 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=0 +extmaxX=250 +extminY=12.5234 +extmaxY=162.4766 +extminZ=0 +extmaxZ=250 + +slcminX=0 +slcmaxX=250 +slcminY=12.5234 +slcmaxY=162.4766 +slcminZ=0 +slcmaxZ=250 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=125 +extminY=-12.5 +extmaxY=0 +extminZ=-125 +extmaxZ=125 + +slcminX=-125 +slcmaxX=125 +slcminY=-12.5 +slcmaxY=0 +slcminZ=-125 +slcmaxZ=125 + + +[volume 2] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=375 +extminY=0 +extmaxY=25.375 +extminZ=-125 +extmaxZ=375 + +slcminX=-125 +slcmaxX=375 +slcminY=0 +slcmaxY=25.375 +slcminZ=-125 +slcmaxZ=375 + + +[COLLISION] +name=src1se_c.sld +count=3 +extentcount=0 +evilextentcount=0 + + \ No newline at end of file diff --git a/CONTENT/BT/SOLIDS/SRC1SW_C.SLD b/CONTENT/BT/SOLIDS/SRC1SW_C.SLD new file mode 100644 index 0000000..970c8d1 --- /dev/null +++ b/CONTENT/BT/SOLIDS/SRC1SW_C.SLD @@ -0,0 +1,72 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-250 +extmaxX=0 +extminY=12.5234 +extmaxY=162.4766 +extminZ=0 +extmaxZ=250 + +slcminX=-250 +slcmaxX=0 +slcminY=12.5234 +slcmaxY=162.4766 +slcminZ=0 +slcmaxZ=250 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=125 +extminY=-12.5 +extmaxY=0 +extminZ=-125 +extmaxZ=125 + +slcminX=-125 +slcmaxX=125 +slcminY=-12.5 +slcmaxY=0 +slcminZ=-125 +slcmaxZ=125 + + +[volume 2] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-375 +extmaxX=125 +extminY=0 +extmaxY=25 +extminZ=-125 +extmaxZ=375 + +slcminX=-375 +slcmaxX=125 +slcminY=0 +slcmaxY=25 +slcminZ=-125 +slcmaxZ=375 + + +[COLLISION] +name=src1sw_c.sld +count=3 +extentcount=0 +evilextentcount=0 + + \ No newline at end of file diff --git a/CONTENT/BT/SOLIDS/SRMCARRY.SLD b/CONTENT/BT/SOLIDS/SRMCARRY.SLD new file mode 100644 index 0000000..902165b --- /dev/null +++ b/CONTENT/BT/SOLIDS/SRMCARRY.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2.5 +extmaxX=2.5 +extminY=0 +extmaxY=3 +extminZ=-4.5 +extmaxZ=0.5 + +slcminX=-2.5 +slcmaxX=2.5 +slcminY=0 +slcmaxY=3 +slcminZ=-4.5 +slcmaxZ=0.5 + + +[volume 1] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2.5 +extmaxX=2.5 +extminY=0 +extmaxY=6 +extminZ=0.5 +extmaxZ=5.5 + +slcminX=-2.5 +slcmaxX=2.5 +slcminY=0 +slcmaxY=6 +slcminZ=0.5 +slcmaxZ=5.5 + + +[COLLISION] +name=srmcarry.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/ST1_CV.SLD b/CONTENT/BT/SOLIDS/ST1_CV.SLD new file mode 100644 index 0000000..1ca6915 --- /dev/null +++ b/CONTENT/BT/SOLIDS/ST1_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=125 +extminY=-25 +extmaxY=0 +extminZ=-125 +extmaxZ=125 + +slcminX=-125 +slcmaxX=125 +slcminY=-25 +slcmaxY=0 +slcminZ=-125 +slcmaxZ=125 + + +[COLLISION] +name=st1_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/STATE.RST b/CONTENT/BT/SOLIDS/STATE.RST new file mode 100644 index 0000000..d888a5b --- /dev/null +++ b/CONTENT/BT/SOLIDS/STATE.RST @@ -0,0 +1,12 @@ +[edit-] +screen=80 50 +toggles=1 1 0 1 0 0 +srch= +src= +rpl= +file=p:\super\solids\rfloor_c.sld 1 1 14 25 +[brief] +file=p:\super\solids\rfloor_c.sld 1 1 14 25 1 47 78 1 c=0 +[shared-] +pmark=p:\super\solids\rfloor_c.sld 14 25 + \ No newline at end of file diff --git a/CONTENT/BT/SOLIDS/STB_CV.SLD b/CONTENT/BT/SOLIDS/STB_CV.SLD new file mode 100644 index 0000000..efdb1a7 --- /dev/null +++ b/CONTENT/BT/SOLIDS/STB_CV.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=20 +extmaxX=26 +extminY=12 +extmaxY=27 +extminZ=-16 +extmaxZ=4 + +slcminX=20 +slcmaxX=26 +slcminY=12 +slcmaxY=27 +slcminZ=-16 +slcmaxZ=4 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-20 +extmaxX=20 +extminY=0 +extmaxY=27 +extminZ=-20 +extmaxZ=20 + +slcminX=-20 +slcmaxX=20 +slcminY=0 +slcmaxY=27 +slcminZ=-20 +slcmaxZ=20 + + +[COLLISION] +name=stb_cv.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/STF_CV.SLD b/CONTENT/BT/SOLIDS/STF_CV.SLD new file mode 100644 index 0000000..3157212 --- /dev/null +++ b/CONTENT/BT/SOLIDS/STF_CV.SLD @@ -0,0 +1,113 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=50 +extmaxX=700 +extminY=-30 +extmaxY=0 +extminZ=-50 +extmaxZ=50 + +slcminX=50 +slcmaxX=700 +slcminY=-30 +slcmaxY=0 +slcminZ=-50 +slcmaxZ=50 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-700 +extmaxX=700 +extminY=-30 +extmaxY=0 +extminZ=-700 +extmaxZ=-50 + +slcminX=-700 +slcmaxX=700 +slcminY=-30 +slcmaxY=0 +slcminZ=-700 +slcmaxZ=-50 + + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-700 +extmaxX=700 +extminY=-30 +extmaxY=0 +extminZ=50 +extmaxZ=700 + +slcminX=-700 +slcmaxX=700 +slcminY=-30 +slcmaxY=0 +slcminZ=50 +slcmaxZ=700 + + +[volume 3] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-700 +extmaxX=-50 +extminY=-30 +extmaxY=0 +extminZ=-50 +extmaxZ=50 + +slcminX=-700 +slcmaxX=-50 +slcminY=-30 +slcmaxY=0 +slcminZ=-50 +slcmaxZ=50 + + +[volume 4] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-50 +extmaxX=50 +extminY=-35 +extmaxY=-30 +extminZ=-50 +extmaxZ=50 + +slcminX=-50 +slcmaxX=50 +slcminY=-35 +slcmaxY=-30 +slcminZ=-50 +slcmaxZ=50 + + +[COLLISION] +name=stf_cv.sld +count=5 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/STH_CV.SLD b/CONTENT/BT/SOLIDS/STH_CV.SLD new file mode 100644 index 0000000..736033d --- /dev/null +++ b/CONTENT/BT/SOLIDS/STH_CV.SLD @@ -0,0 +1,344 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=12 +TypeName=WedgeFacingNegativeZAndPositiveXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-80 +extmaxX=-50 +extminY=0 +extmaxY=50 +extminZ=10 +extmaxZ=40 + +slcminX=-80 +slcmaxX=-50 +slcminY=0 +slcmaxY=50 +slcminZ=10 +slcmaxZ=40 + + +[volume 1] +TypeNumber=13 +TypeName=WedgeFacingNegativeZAndNegativeXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=50 +extmaxX=80 +extminY=0 +extmaxY=50 +extminZ=10 +extmaxZ=40 + +slcminX=50 +slcmaxX=80 +slcminY=0 +slcmaxY=50 +slcminZ=10 +slcmaxZ=40 + + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-50 +extmaxX=-40 +extminY=0 +extmaxY=30 +extminZ=-10 +extmaxZ=20 + +slcminX=-50 +slcmaxX=-40 +slcminY=0 +slcmaxY=30 +slcminZ=-10 +slcmaxZ=20 + + +[volume 3] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=80 +extmaxX=300 +extminY=0 +extmaxY=20 +extminZ=-10 +extmaxZ=10 + +slcminX=80 +slcmaxX=300 +slcminY=0 +slcmaxY=20 +slcminZ=-10 +slcmaxZ=10 + + +[volume 4] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-80 +extmaxX=-50 +extminY=0 +extmaxY=50 +extminZ=-40 +extmaxZ=10 + +slcminX=-80 +slcmaxX=-50 +slcminY=0 +slcmaxY=50 +slcminZ=-40 +slcmaxZ=10 + + +[volume 5] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=50 +extmaxX=80 +extminY=0 +extmaxY=50 +extminZ=-40 +extmaxZ=10 + +slcminX=50 +slcmaxX=80 +slcminY=0 +slcmaxY=50 +slcminZ=-40 +slcmaxZ=10 + + +[volume 6] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-40 +extmaxX=40 +extminY=0 +extmaxY=30 +extminZ=-10 +extmaxZ=0 + +slcminX=-40 +slcmaxX=40 +slcminY=0 +slcmaxY=30 +slcminZ=-10 +slcmaxZ=0 + + +[volume 7] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=40 +extmaxX=50 +extminY=0 +extmaxY=30 +extminZ=-10 +extmaxZ=20 + +slcminX=40 +slcmaxX=50 +slcminY=0 +slcmaxY=30 +slcminZ=-10 +slcmaxZ=20 + + +[volume 8] +TypeNumber=4 +TypeName=RampFacingNegativeZType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-40 +extmaxX=40 +extminY=0 +extmaxY=2.5 +extminZ=0 +extmaxZ=20 + +slcminX=-40 +slcmaxX=40 +slcminY=0 +slcmaxY=2.5 +slcminZ=0 +slcmaxZ=20 + + +[volume 9] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-50 +extmaxX=50 +extminY=40 +extmaxY=56 +extminZ=-10 +extmaxZ=40 + +slcminX=-50 +slcmaxX=50 +slcminY=40 +slcmaxY=56 +slcminZ=-10 +slcmaxZ=40 + + +[volume 10] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-50 +extmaxX=50 +extminY=30 +extmaxY=40 +extminZ=-10 +extmaxZ=20 + +slcminX=-50 +slcmaxX=50 +slcminY=30 +slcmaxY=40 +slcminZ=-10 +slcmaxZ=20 + + +[volume 11] +TypeNumber=12 +TypeName=WedgeFacingNegativeZAndPositiveXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=40 +extmaxX=50 +extminY=0 +extmaxY=40 +extminZ=20 +extmaxZ=40 + +slcminX=40 +slcmaxX=50 +slcminY=0 +slcmaxY=40 +slcminZ=20 +slcmaxZ=40 + + +[volume 12] +TypeNumber=13 +TypeName=WedgeFacingNegativeZAndNegativeXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-50 +extmaxX=-40 +extminY=0 +extmaxY=40 +extminZ=20 +extmaxZ=40 + +slcminX=-50 +slcmaxX=-40 +slcminY=0 +slcmaxY=40 +slcminZ=20 +slcmaxZ=40 + + +[volume 13] +TypeNumber=8 +TypeName=InvertedRampFacingNegativeZType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-50 +extmaxX=50 +extminY=30 +extmaxY=40 +extminZ=20 +extmaxZ=40 + +slcminX=-50 +slcmaxX=50 +slcminY=30 +slcmaxY=40 +slcminZ=20 +slcmaxZ=40 + + +[volume 14] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-300 +extmaxX=-80 +extminY=0 +extmaxY=20 +extminZ=-10 +extmaxZ=10 + +slcminX=-300 +slcmaxX=-80 +slcminY=0 +slcmaxY=20 +slcminZ=-10 +slcmaxZ=10 + + +[volume 15] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-3.5 +extmaxX=3.5 +extminY=0 +extmaxY=30 +extminZ=0 +extmaxZ=110 + +slcminX=-3.5 +slcmaxX=3.5 +slcminY=0 +slcmaxY=30 +slcminZ=0 +slcmaxZ=110 + + +[COLLISION] +name=sth_cv.sld +count=16 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/STI_CV.SLD b/CONTENT/BT/SOLIDS/STI_CV.SLD new file mode 100644 index 0000000..fbbc4ea --- /dev/null +++ b/CONTENT/BT/SOLIDS/STI_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2.03906 +extmaxX=2.03906 +extminY=1 +extmaxY=6.40625 +extminZ=-2.71875 +extmaxZ=1.35938 + +slcminX=-2.03906 +slcmaxX=2.03906 +slcminY=1 +slcmaxY=6.40625 +slcminZ=-2.71875 +slcmaxZ=1.35938 + + +[COLLISION] +name=sti_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/STRIKER.SLD b/CONTENT/BT/SOLIDS/STRIKER.SLD new file mode 100644 index 0000000..0b4004b --- /dev/null +++ b/CONTENT/BT/SOLIDS/STRIKER.SLD @@ -0,0 +1,71 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2 +extmaxX=2 +extminY=0 +extmaxY=3 +extminZ=-8.5 +extmaxZ=-4.5 + +slcminX=-2 +slcmaxX=2 +slcminY=0 +slcmaxY=3 +slcminZ=-8.5 +slcmaxZ=-4.5 + + +[volume 1] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2 +extmaxX=2 +extminY=0 +extmaxY=3 +extminZ=-4.5 +extmaxZ=-0.5 + +slcminX=-2 +slcmaxX=2 +slcminY=0 +slcmaxY=3 +slcminZ=-4.5 +slcmaxZ=-0.5 + + +[volume 2] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2 +extmaxX=2 +extminY=0 +extmaxY=3 +extminZ=-0.5 +extmaxZ=3.5 + +slcminX=-2 +slcmaxX=2 +slcminY=0 +slcmaxY=3 +slcminZ=-0.5 +slcmaxZ=3.5 + + +[COLLISION] +name=striker.sld +count=3 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/STS_CV.SLD b/CONTENT/BT/SOLIDS/STS_CV.SLD new file mode 100644 index 0000000..2c3909a --- /dev/null +++ b/CONTENT/BT/SOLIDS/STS_CV.SLD @@ -0,0 +1,71 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=6 +extmaxX=81 +extminY=0 +extmaxY=20 +extminZ=36 +extmaxZ=41 + +slcminX=6 +slcmaxX=81 +slcminY=0 +slcmaxY=20 +slcminZ=36 +slcmaxZ=41 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-42 +extmaxX=-34 +extminY=0 +extmaxY=20 +extminZ=-82 +extmaxZ=-7 + +slcminX=-42 +slcmaxX=-34 +slcminY=0 +slcmaxY=20 +slcminZ=-82 +slcmaxZ=-7 + + +[volume 2] +TypeNumber=12 +TypeName=WedgeFacingNegativeZAndPositiveXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-42 +extmaxX=6 +extminY=0 +extmaxY=20 +extminZ=-7 +extmaxZ=41 + +slcminX=-42 +slcmaxX=6 +slcminY=0 +slcmaxY=20 +slcminZ=-7 +slcmaxZ=41 + + +[COLLISION] +name=sts_cv.sld +count=3 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/SV2B_CV.SLD b/CONTENT/BT/SOLIDS/SV2B_CV.SLD new file mode 100644 index 0000000..610ad51 --- /dev/null +++ b/CONTENT/BT/SOLIDS/SV2B_CV.SLD @@ -0,0 +1,113 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-157.75 +extmaxX=82.125 +extminY=-17.0781 +extmaxY=34.7969 +extminZ=-30.625 +extmaxZ=209.25 + +slcminX=-157.75 +slcmaxX=82.125 +slcminY=-17.0781 +slcmaxY=34.7969 +slcminZ=-30.625 +slcmaxZ=209.25 + + +[volume 1] +TypeNumber=5 +TypeName=RampFacingNegativeXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=125 +extminY=-25.2031 +extmaxY=24.7969 +extminZ=-125 +extmaxZ=125 + +slcminX=-125 +slcmaxX=125 +slcminY=-25.2031 +slcmaxY=24.7969 +slcminZ=-125 +slcmaxZ=125 + + +[volume 2] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-157.375 +extmaxX=77.375 +extminY=-17.0781 +extmaxY=48.1016 +extminZ=-220.75 +extmaxZ=14 + +slcminX=-157.375 +slcmaxX=77.375 +slcminY=-17.0781 +slcmaxY=48.1016 +slcminZ=-220.75 +slcmaxZ=14 + + +[volume 3] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-110 +extmaxX=64 +extminY=-17.0781 +extmaxY=-3.38281 +extminZ=-138.703 +extmaxZ=35.2969 + +slcminX=-110 +slcmaxX=64 +slcminY=-17.0781 +slcmaxY=-3.38281 +slcminZ=-138.703 +slcmaxZ=35.2969 + + +[volume 4] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-168 +extmaxX=76 +extminY=-17.0781 +extmaxY=48.3203 +extminZ=-81.625 +extmaxZ=162.375 + +slcminX=-168 +slcmaxX=76 +slcminY=-17.0781 +slcmaxY=48.3203 +slcminZ=-81.625 +slcmaxZ=162.375 + + +[COLLISION] +name=sv2b_cvnew3.sld +count=5 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/SV2C_CV.SLD b/CONTENT/BT/SOLIDS/SV2C_CV.SLD new file mode 100644 index 0000000..c157bac --- /dev/null +++ b/CONTENT/BT/SOLIDS/SV2C_CV.SLD @@ -0,0 +1,92 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-207.312 +extmaxX=11.3125 +extminY=-25.2031 +extmaxY=50.7031 +extminZ=-125 +extmaxZ=93.625 + +slcminX=-207.312 +slcmaxX=11.3125 +slcminY=-25.2031 +slcmaxY=50.7031 +slcminZ=-125 +slcmaxZ=93.625 + + +[volume 1] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-25.3125 +extmaxX=212.312 +extminY=-25.2031 +extmaxY=45.7969 +extminZ=-124.625 +extmaxZ=113 + +slcminX=-25.3125 +slcmaxX=212.312 +slcminY=-25.2031 +slcmaxY=45.7969 +slcminZ=-124.625 +slcmaxZ=113 + + +[volume 2] +TypeNumber=6 +TypeName=RampFacingPositiveZType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=125 +extminY=-25.2031 +extmaxY=24.7969 +extminZ=-125 +extmaxZ=125 + +slcminX=-125 +slcmaxX=125 +slcminY=-25.2031 +slcmaxY=24.7969 +slcminZ=-125 +slcmaxZ=125 + + +[volume 3] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-157.938 +extmaxX=122.562 +extminY=-25.2031 +extmaxY=58.4766 +extminZ=-124.938 +extmaxZ=155.562 + +slcminX=-157.938 +slcmaxX=122.562 +slcminY=-25.2031 +slcmaxY=58.4766 +slcminZ=-124.938 +slcmaxZ=155.562 + + +[COLLISION] +name=sv2c_cvnew2.sld +count=4 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/SV2D_CV.SLD b/CONTENT/BT/SOLIDS/SV2D_CV.SLD new file mode 100644 index 0000000..d7f59a7 --- /dev/null +++ b/CONTENT/BT/SOLIDS/SV2D_CV.SLD @@ -0,0 +1,92 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=7 +TypeName=RampFacingPositiveXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=125 +extminY=-25.2031 +extmaxY=24.7969 +extminZ=-125 +extmaxZ=125 + +slcminX=-125 +slcmaxX=125 +slcminY=-25.2031 +slcmaxY=24.7969 +slcminZ=-125 +slcmaxZ=125 + + +[volume 1] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-81.6875 +extmaxX=240.312 +extminY=-19.8984 +extmaxY=57 +extminZ=-118.312 +extmaxZ=203.688 + +slcminX=-81.6875 +slcmaxX=240.312 +slcminY=-19.8984 +slcmaxY=57 +slcminZ=-118.312 +slcmaxZ=203.688 + + +[volume 2] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-124.875 +extmaxX=229.062 +extminY=-25.2031 +extmaxY=24.1953 +extminZ=-239.25 +extmaxZ=114.688 + +slcminX=-124.875 +slcmaxX=229.062 +slcminY=-25.2031 +slcmaxY=24.1953 +slcminZ=-239.25 +slcmaxZ=114.688 + + +[volume 3] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-97.6875 +extmaxX=257.5 +extminY=-19.8984 +extmaxY=72 +extminZ=-242 +extmaxZ=113.188 + +slcminX=-97.6875 +slcmaxX=257.5 +slcminY=-19.8984 +slcmaxY=72 +slcminZ=-242 +slcmaxZ=113.188 + + +[COLLISION] +name=sv2d_cvnew2.sld +count=4 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/SV2_CV.SLD b/CONTENT/BT/SOLIDS/SV2_CV.SLD new file mode 100644 index 0000000..5e7ad2f --- /dev/null +++ b/CONTENT/BT/SOLIDS/SV2_CV.SLD @@ -0,0 +1,113 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-205.312 +extmaxX=-60.6875 +extminY=-15.5 +extmaxY=31.5 +extminZ=-68.5 +extmaxZ=76.125 + +slcminX=-205.312 +slcmaxX=-60.6875 +slcminY=-15.5 +slcmaxY=31.5 +slcminZ=-68.5 +slcmaxZ=76.125 + + +[volume 1] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-7.9375 +extmaxX=207.938 +extminY=-15.5 +extmaxY=43.9531 +extminZ=-141.938 +extmaxZ=73.9375 + +slcminX=-7.9375 +slcmaxX=207.938 +slcminY=-15.5 +slcmaxY=43.9531 +slcminZ=-141.938 +slcmaxZ=73.9375 + + +[volume 2] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-144.312 +extmaxX=49.3125 +extminY=-15.5 +extmaxY=60.5 +extminZ=-121.5 +extmaxZ=72.125 + +slcminX=-144.312 +slcmaxX=49.3125 +slcminY=-15.5 +slcmaxY=60.5 +slcminZ=-121.5 +slcmaxZ=72.125 + + +[volume 3] +TypeNumber=4 +TypeName=RampFacingNegativeZType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=125 +extminY=-25.2031 +extmaxY=24.7969 +extminZ=-125 +extmaxZ=125 + +slcminX=-125 +slcmaxX=125 +slcminY=-25.2031 +slcmaxY=24.7969 +slcminZ=-125 +slcmaxZ=125 + + +[volume 4] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-76.3984 +extmaxX=86 +extminY=-15.5 +extmaxY=11.6016 +extminZ=-100.703 +extmaxZ=61.7031 + +slcminX=-76.3984 +slcmaxX=86 +slcminY=-15.5 +slcmaxY=11.6016 +slcminZ=-100.703 +slcmaxZ=61.7031 + + +[COLLISION] +name=sv2_cvnew6.sld +count=5 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/SV3B_CV.SLD b/CONTENT/BT/SOLIDS/SV3B_CV.SLD new file mode 100644 index 0000000..9612cc6 --- /dev/null +++ b/CONTENT/BT/SOLIDS/SV3B_CV.SLD @@ -0,0 +1,176 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=125 +extminY=-35 +extmaxY=-25.2031 +extminZ=-125 +extmaxZ=125 + +slcminX=-125 +slcmaxX=125 +slcminY=-35 +slcmaxY=-25.2031 +slcminZ=-125 +slcmaxZ=125 + + +[volume 1] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=239.375 +extminY=-25.2031 +extmaxY=12.1406 +extminZ=-57.3125 +extmaxZ=307.062 + +slcminX=-125 +slcmaxX=239.375 +slcminY=-25.2031 +slcmaxY=12.1406 +slcminZ=-57.3125 +slcmaxZ=307.062 + + +[volume 2] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-124.375 +extmaxX=23.625 +extminY=-25.2031 +extmaxY=-9.79688 +extminZ=-81.625 +extmaxZ=66.375 + +slcminX=-124.375 +slcmaxX=23.625 +slcminY=-25.2031 +slcmaxY=-9.79688 +slcminZ=-81.625 +slcmaxZ=66.375 + + +[volume 3] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-103.062 +extmaxX=100.25 +extminY=-25.2031 +extmaxY=24.0781 +extminZ=-124.938 +extmaxZ=78.375 + +slcminX=-103.062 +slcmaxX=100.25 +slcminY=-25.2031 +slcmaxY=24.0781 +slcminZ=-124.938 +slcmaxZ=78.375 + + +[volume 4] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-107 +extmaxX=34 +extminY=-25.2031 +extmaxY=18.1797 +extminZ=-125 +extmaxZ=16 + +slcminX=-107 +slcmaxX=34 +slcminY=-25.2031 +slcmaxY=18.1797 +slcminZ=-125 +slcmaxZ=16 + + +[volume 5] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-53.1875 +extmaxX=266 +extminY=-25.2031 +extmaxY=58.8984 +extminZ=-125 +extmaxZ=194.188 + +slcminX=-53.1875 +slcmaxX=266 +slcminY=-25.2031 +slcmaxY=58.8984 +slcminZ=-125 +slcmaxZ=194.188 + + +[volume 6] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-92.625 +extmaxX=139.188 +extminY=-22.0938 +extmaxY=41.6094 +extminZ=-30.3125 +extmaxZ=201.5 + +slcminX=-92.625 +slcmaxX=139.188 +slcminY=-22.0938 +slcmaxY=41.6094 +slcminZ=-30.3125 +slcmaxZ=201.5 + + +[volume 7] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-126.031 +extmaxX=-44.7656 +extminY=-25.2031 +extmaxY=-20.8984 +extminZ=-127.031 +extmaxZ=-45.7656 + +slcminX=-126.031 +slcmaxX=-44.7656 +slcminY=-25.2031 +slcmaxY=-20.8984 +slcminZ=-127.031 +slcmaxZ=-45.7656 + + +[COLLISION] +name=sv3b_cvnew3.sld +count=8 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/SV3C_CV.SLD b/CONTENT/BT/SOLIDS/SV3C_CV.SLD new file mode 100644 index 0000000..722608b --- /dev/null +++ b/CONTENT/BT/SOLIDS/SV3C_CV.SLD @@ -0,0 +1,113 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-83.7031 +extmaxX=147.898 +extminY=-25.2031 +extmaxY=2.10156 +extminZ=-157.297 +extmaxZ=74.2969 + +slcminX=-83.7031 +slcmaxX=147.898 +slcminY=-25.2031 +slcmaxY=2.10156 +slcminZ=-157.297 +slcmaxZ=74.2969 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=125 +extminY=-35 +extmaxY=-25.2031 +extminZ=-125 +extmaxZ=125 + +slcminX=-125 +slcmaxX=125 +slcminY=-35 +slcmaxY=-25.2031 +slcminZ=-125 +slcmaxZ=125 + + +[volume 2] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-124.312 +extmaxX=111.688 +extminY=-25.2031 +extmaxY=-1 +extminZ=-113.125 +extmaxZ=122.875 + +slcminX=-124.312 +slcmaxX=111.688 +slcminY=-25.2031 +slcmaxY=-1 +slcminZ=-113.125 +slcmaxZ=122.875 + + +[volume 3] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-124.875 +extmaxX=75.125 +extminY=-25.2031 +extmaxY=-4.5 +extminZ=-225 +extmaxZ=-25 + +slcminX=-124.875 +slcmaxX=75.125 +slcminY=-25.2031 +slcmaxY=-4.5 +slcminZ=-225 +slcmaxZ=-25 + + +[volume 4] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=22.375 +extmaxX=227.625 +extminY=-25.2031 +extmaxY=-3.50781 +extminZ=-80.125 +extmaxZ=125.125 + +slcminX=22.375 +slcmaxX=227.625 +slcminY=-25.2031 +slcmaxY=-3.50781 +slcminZ=-80.125 +slcmaxZ=125.125 + + +[COLLISION] +name=sv3c_cvnew2.sld +count=5 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/SV3D_CV.SLD b/CONTENT/BT/SOLIDS/SV3D_CV.SLD new file mode 100644 index 0000000..19b7779 --- /dev/null +++ b/CONTENT/BT/SOLIDS/SV3D_CV.SLD @@ -0,0 +1,134 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-75.3125 +extmaxX=124.875 +extminY=-25.2031 +extmaxY=-4 +extminZ=-215 +extmaxZ=-14.8125 + +slcminX=-75.3125 +slcmaxX=124.875 +slcminY=-25.2031 +slcmaxY=-4 +slcminZ=-215 +slcmaxZ=-14.8125 + + +[volume 1] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-215 +extmaxX=-33 +extminY=-25.2031 +extmaxY=-5.79688 +extminZ=-58 +extmaxZ=124 + +slcminX=-215 +slcmaxX=-33 +slcminY=-25.2031 +slcmaxY=-5.79688 +slcminZ=-58 +slcmaxZ=124 + + +[volume 2] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-172.977 +extmaxX=67.7734 +extminY=-25.2031 +extmaxY=16.6016 +extminZ=-165.172 +extmaxZ=75.5781 + +slcminX=-172.977 +slcmaxX=67.7734 +slcminY=-25.2031 +slcmaxY=16.6016 +slcminZ=-165.172 +slcmaxZ=75.5781 + + +[volume 3] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-113.125 +extmaxX=122.875 +extminY=-25.2031 +extmaxY=-1 +extminZ=-111.688 +extmaxZ=124.312 + +slcminX=-113.125 +slcmaxX=122.875 +slcminY=-25.2031 +slcmaxY=-1 +slcminZ=-111.688 +slcmaxZ=124.312 + + +[volume 4] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-95.5 +extmaxX=93.5 +extminY=-25.2031 +extmaxY=26.7969 +extminZ=-184.5 +extmaxZ=4.5 + +slcminX=-95.5 +slcmaxX=93.5 +slcminY=-25.2031 +slcmaxY=26.7969 +slcminZ=-184.5 +slcmaxZ=4.5 + + +[volume 5] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=125 +extminY=-35 +extmaxY=-25.2031 +extminZ=-125 +extmaxZ=125 + +slcminX=-125 +slcmaxX=125 +slcminY=-35 +slcmaxY=-25.2031 +slcminZ=-125 +slcmaxZ=125 + + +[COLLISION] +name=sv3d_cvnew2.sld +count=6 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/SV3_CV.SLD b/CONTENT/BT/SOLIDS/SV3_CV.SLD new file mode 100644 index 0000000..14e3880 --- /dev/null +++ b/CONTENT/BT/SOLIDS/SV3_CV.SLD @@ -0,0 +1,155 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-134.297 +extmaxX=81.5 +extminY=-25.2031 +extmaxY=-7.89844 +extminZ=-20.1016 +extmaxZ=195.703 + +slcminX=-134.297 +slcmaxX=81.5 +slcminY=-25.2031 +slcmaxY=-7.89844 +slcminZ=-20.1016 +slcmaxZ=195.703 + + +[volume 1] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-25.8984 +extmaxX=81.1016 +extminY=-25.2031 +extmaxY=-7.89844 +extminZ=-22.8984 +extmaxZ=84.1016 + +slcminX=-25.8984 +slcmaxX=81.1016 +slcminY=-25.2031 +slcmaxY=-7.89844 +slcminZ=-22.8984 +slcmaxZ=84.1016 + + +[volume 2] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-75.3125 +extmaxX=124.875 +extminY=-25.2031 +extmaxY=-3.85156 +extminZ=25 +extmaxZ=225.188 + +slcminX=-75.3125 +slcmaxX=124.875 +slcminY=-25.2031 +slcmaxY=-3.85156 +slcminZ=25 +slcmaxZ=225.188 + + +[volume 3] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-172.812 +extmaxX=-17.1875 +extminY=-25.2031 +extmaxY=23.3516 +extminZ=-125 +extmaxZ=30.625 + +slcminX=-172.812 +slcmaxX=-17.1875 +slcminY=-25.2031 +slcmaxY=23.3516 +slcminZ=-125 +slcmaxZ=30.625 + + +[volume 4] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-160 +extmaxX=93 +extminY=-25.2031 +extmaxY=41.2031 +extminZ=-125 +extmaxZ=128 + +slcminX=-160 +slcmaxX=93 +slcminY=-25.2031 +slcmaxY=41.2031 +slcminZ=-125 +slcmaxZ=128 + + +[volume 5] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=125 +extminY=-35 +extmaxY=-25.2031 +extminZ=-125 +extmaxZ=125 + +slcminX=-125 +slcmaxX=125 +slcminY=-35 +slcmaxY=-25.2031 +slcminZ=-125 +slcmaxZ=125 + + +[volume 6] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-69.3125 +extmaxX=124.688 +extminY=-25.2031 +extmaxY=-5.70312 +extminZ=-77.375 +extmaxZ=116.625 + +slcminX=-69.3125 +slcmaxX=124.688 +slcminY=-25.2031 +slcmaxY=-5.70312 +slcminZ=-77.375 +slcmaxZ=116.625 + + +[COLLISION] +name=sv3_cvnew2.sld +count=7 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/SW1_CV.SLD b/CONTENT/BT/SOLIDS/SW1_CV.SLD new file mode 100644 index 0000000..635dbf1 --- /dev/null +++ b/CONTENT/BT/SOLIDS/SW1_CV.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-25 +extmaxX=-21 +extminY=0 +extmaxY=13 +extminZ=-25 +extmaxZ=25 + +slcminX=-25 +slcmaxX=-21 +slcminY=0 +slcmaxY=13 +slcminZ=-25 +slcmaxZ=25 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-21 +extmaxX=25 +extminY=0 +extmaxY=13 +extminZ=-25 +extmaxZ=-21 + +slcminX=-21 +slcmaxX=25 +slcminY=0 +slcmaxY=13 +slcminZ=-25 +slcmaxZ=-21 + + +[COLLISION] +name=sw1_cv.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/SW2_CV.SLD b/CONTENT/BT/SOLIDS/SW2_CV.SLD new file mode 100644 index 0000000..219b087 --- /dev/null +++ b/CONTENT/BT/SOLIDS/SW2_CV.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-25 +extmaxX=-21 +extminY=0 +extmaxY=13 +extminZ=-25 +extmaxZ=25 + +slcminX=-25 +slcmaxX=-21 +slcminY=0 +slcmaxY=13 +slcminZ=-25 +slcmaxZ=25 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-21 +extmaxX=25 +extminY=0 +extmaxY=13 +extminZ=-2 +extmaxZ=2 + +slcminX=-21 +slcmaxX=25 +slcminY=0 +slcmaxY=13 +slcminZ=-2 +slcmaxZ=2 + + +[COLLISION] +name=sw2_cv.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/SW3_CV.SLD b/CONTENT/BT/SOLIDS/SW3_CV.SLD new file mode 100644 index 0000000..b68d462 --- /dev/null +++ b/CONTENT/BT/SOLIDS/SW3_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-25 +extmaxX=25 +extminY=0 +extmaxY=13 +extminZ=-2 +extmaxZ=2 + +slcminX=-25 +slcmaxX=25 +slcminY=0 +slcmaxY=13 +slcminZ=-2 +slcmaxZ=2 + + +[COLLISION] +name=sw3_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/SW4_CV.SLD b/CONTENT/BT/SOLIDS/SW4_CV.SLD new file mode 100644 index 0000000..e064b95 --- /dev/null +++ b/CONTENT/BT/SOLIDS/SW4_CV.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-25 +extmaxX=-21 +extminY=0 +extmaxY=5 +extminZ=-25 +extmaxZ=25 + +slcminX=-25 +slcmaxX=-21 +slcminY=0 +slcmaxY=5 +slcminZ=-25 +slcmaxZ=25 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-21 +extmaxX=25 +extminY=0 +extmaxY=5 +extminZ=-25 +extmaxZ=-21 + +slcminX=-21 +slcmaxX=25 +slcminY=0 +slcmaxY=5 +slcminZ=-25 +slcmaxZ=-21 + + +[COLLISION] +name=sw4_cv.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/SW5_CV.SLD b/CONTENT/BT/SOLIDS/SW5_CV.SLD new file mode 100644 index 0000000..54c752e --- /dev/null +++ b/CONTENT/BT/SOLIDS/SW5_CV.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-25 +extmaxX=-21 +extminY=0 +extmaxY=5 +extminZ=-25 +extmaxZ=25 + +slcminX=-25 +slcmaxX=-21 +slcminY=0 +slcmaxY=5 +slcminZ=-25 +slcmaxZ=25 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-21 +extmaxX=25 +extminY=0 +extmaxY=5 +extminZ=-2 +extmaxZ=2 + +slcminX=-21 +slcmaxX=25 +slcminY=0 +slcmaxY=5 +slcminZ=-2 +slcmaxZ=2 + + +[COLLISION] +name=sw5_cv.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/SW6_CV.SLD b/CONTENT/BT/SOLIDS/SW6_CV.SLD new file mode 100644 index 0000000..6b982ec --- /dev/null +++ b/CONTENT/BT/SOLIDS/SW6_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-25 +extmaxX=25 +extminY=0 +extmaxY=5 +extminZ=-2 +extmaxZ=2 + +slcminX=-25 +slcmaxX=25 +slcminY=0 +slcmaxY=5 +slcminZ=-2 +slcmaxZ=2 + + +[COLLISION] +name=sw6_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/SWIFTWND.SLD b/CONTENT/BT/SOLIDS/SWIFTWND.SLD new file mode 100644 index 0000000..8f33cf4 --- /dev/null +++ b/CONTENT/BT/SOLIDS/SWIFTWND.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2 +extmaxX=2 +extminY=0 +extmaxY=3 +extminZ=-3.5 +extmaxZ=0.5 + +slcminX=-2 +slcmaxX=2 +slcminY=0 +slcmaxY=3 +slcminZ=-3.5 +slcmaxZ=0.5 + + +[volume 1] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-1.5 +extmaxX=1.5 +extminY=0 +extmaxY=2 +extminZ=0.5 +extmaxZ=3.5 + +slcminX=-1.5 +slcmaxX=1.5 +slcminY=0 +slcmaxY=2 +slcminZ=0.5 +slcmaxZ=3.5 + + +[COLLISION] +name=swiftwnd.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/TEST.XST b/CONTENT/BT/SOLIDS/TEST.XST new file mode 100644 index 0000000..0ae04af --- /dev/null +++ b/CONTENT/BT/SOLIDS/TEST.XST @@ -0,0 +1,18 @@ +[LAB_ONLY] + +[extent 0] +extminX=-7000 +extmaxX=7000 +extminY=-5 +extmaxY=105 +extminZ=-7000 +extmaxZ=7000 + + +[COLLISION] +name=test.xst +count=0 +extentcount=1 +evilextentcount=0 + + \ No newline at end of file diff --git a/CONTENT/BT/SOLIDS/THR_CV.SLD b/CONTENT/BT/SOLIDS/THR_CV.SLD new file mode 100644 index 0000000..611fda5 --- /dev/null +++ b/CONTENT/BT/SOLIDS/THR_CV.SLD @@ -0,0 +1,30 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-3.89844 +extmaxX=3.89844 +extminY=2 +extmaxY=11.1562 +extminZ=-4.38281 +extmaxZ=3.42188 + +slcminX=-3.89844 +slcmaxX=3.89844 +slcminY=1 +slcmaxY=11.1562 +slcminZ=-4.38281 +slcmaxZ=3.42188 + + +[COLLISION] +name=thr_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + + \ No newline at end of file diff --git a/CONTENT/BT/SOLIDS/TK1_CV.SLD b/CONTENT/BT/SOLIDS/TK1_CV.SLD new file mode 100644 index 0000000..111abe2 --- /dev/null +++ b/CONTENT/BT/SOLIDS/TK1_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2 +extmaxX=2 +extminY=0 +extmaxY=2.10156 +extminZ=-3.20312 +extmaxZ=3.29688 + +slcminX=-2 +slcmaxX=2 +slcminY=0 +slcmaxY=2.10156 +slcminZ=-3.20312 +slcmaxZ=3.29688 + + +[COLLISION] +name=tk1_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/TNT_CV.SLD b/CONTENT/BT/SOLIDS/TNT_CV.SLD new file mode 100644 index 0000000..daaf7f0 --- /dev/null +++ b/CONTENT/BT/SOLIDS/TNT_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-5.07031 +extmaxX=5.07031 +extminY=0.0390625 +extmaxY=2.15625 +extminZ=-5.07031 +extmaxZ=5.07031 + +slcminX=-5.07031 +slcmaxX=5.07031 +slcminY=0.0390625 +slcmaxY=2.15625 +slcminZ=-5.07031 +slcmaxZ=5.07031 + + +[COLLISION] +name=tnt_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/TREE_CV.SLD b/CONTENT/BT/SOLIDS/TREE_CV.SLD new file mode 100644 index 0000000..758c884 --- /dev/null +++ b/CONTENT/BT/SOLIDS/TREE_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2.898 +extmaxX=2.898 +extminY=0 +extmaxY=7 +extminZ=-2.882 +extmaxZ=2.914 + +slcminX=-2.898 +slcmaxX=2.898 +slcminY=0 +slcmaxY=7 +slcminZ=-2.882 +slcmaxZ=2.914 + + +[COLLISION] +name=tree_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/TRK1_CV.SLD b/CONTENT/BT/SOLIDS/TRK1_CV.SLD new file mode 100644 index 0000000..2b0ca10 --- /dev/null +++ b/CONTENT/BT/SOLIDS/TRK1_CV.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2.9375 +extmaxX=2.9375 +extminY=0 +extmaxY=5 +extminZ=-6.03906 +extmaxZ=-0.164062 + +slcminX=-2.9375 +slcmaxX=2.9375 +slcminY=0 +slcmaxY=5 +slcminZ=-6.03906 +slcmaxZ=-0.164062 + + +[volume 1] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2.9375 +extmaxX=2.9375 +extminY=0 +extmaxY=5 +extminZ=-0.164062 +extmaxZ=5.71875 + +slcminX=-2.9375 +slcmaxX=2.9375 +slcminY=0 +slcmaxY=5 +slcminZ=-0.164062 +slcmaxZ=5.71875 + + +[COLLISION] +name=trk1_cv.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/TRK3_CV.SLD b/CONTENT/BT/SOLIDS/TRK3_CV.SLD new file mode 100644 index 0000000..e7d824e --- /dev/null +++ b/CONTENT/BT/SOLIDS/TRK3_CV.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2.20312 +extmaxX=2.20312 +extminY=0 +extmaxY=3.20312 +extminZ=-4.33594 +extmaxZ=0.0703125 + +slcminX=-2.20312 +slcmaxX=2.20312 +slcminY=0 +slcmaxY=3.20312 +slcminZ=-4.33594 +slcmaxZ=0.0703125 + + +[volume 1] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2.20312 +extmaxX=2.20312 +extminY=0 +extmaxY=3.20312 +extminZ=0.0703125 +extmaxZ=4.48438 + +slcminX=-2.20312 +slcmaxX=2.20312 +slcminY=0 +slcmaxY=3.20312 +slcminZ=0.0703125 +slcmaxZ=4.48438 + + +[COLLISION] +name=trk3_cv.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/TRK4_CV.SLD b/CONTENT/BT/SOLIDS/TRK4_CV.SLD new file mode 100644 index 0000000..9e900b5 --- /dev/null +++ b/CONTENT/BT/SOLIDS/TRK4_CV.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-1.98438 +extmaxX=1.98438 +extminY=0 +extmaxY=3.20312 +extminZ=-3.90625 +extmaxZ=0.0625 + +slcminX=-1.98438 +slcmaxX=1.98438 +slcminY=0 +slcmaxY=3.20312 +slcminZ=-3.90625 +slcmaxZ=0.0625 + + +[volume 1] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-1.98438 +extmaxX=1.98438 +extminY=0 +extmaxY=1.70312 +extminZ=0.0625 +extmaxZ=4.03125 + +slcminX=-1.98438 +slcmaxX=1.98438 +slcminY=0 +slcmaxY=1.70312 +slcminZ=0.0625 +slcmaxZ=4.03125 + + +[COLLISION] +name=trk4_cv.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/TT1_CV.SLD b/CONTENT/BT/SOLIDS/TT1_CV.SLD new file mode 100644 index 0000000..271257d --- /dev/null +++ b/CONTENT/BT/SOLIDS/TT1_CV.SLD @@ -0,0 +1,92 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-1.57031 +extmaxX=1.57031 +extminY=0 +extmaxY=3.85156 +extminZ=2.4375 +extmaxZ=5.57812 + +slcminX=-1.57031 +slcmaxX=1.57031 +slcminY=0 +slcmaxY=3.85156 +slcminZ=2.4375 +slcmaxZ=5.57812 + + +[volume 1] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-1.57031 +extmaxX=1.57031 +extminY=0 +extmaxY=3.85156 +extminZ=-0.695312 +extmaxZ=2.4375 + +slcminX=-1.57031 +slcmaxX=1.57031 +slcminY=0 +slcmaxY=3.85156 +slcminZ=-0.695312 +slcmaxZ=2.4375 + + +[volume 2] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-1.57031 +extmaxX=1.57031 +extminY=0 +extmaxY=3.85156 +extminZ=-3.82812 +extmaxZ=-0.695312 + +slcminX=-1.57031 +slcmaxX=1.57031 +slcminY=0 +slcmaxY=3.85156 +slcminZ=-3.82812 +slcmaxZ=-0.695312 + + +[volume 3] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-1.57031 +extmaxX=1.57031 +extminY=0 +extmaxY=3.85156 +extminZ=-6.96094 +extmaxZ=-3.82812 + +slcminX=-1.57031 +slcmaxX=1.57031 +slcminY=0 +slcmaxY=3.85156 +slcminZ=-6.96094 +slcmaxZ=-3.82812 + + +[COLLISION] +name=tt1_cv.sld +count=4 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/TT2_CV.SLD b/CONTENT/BT/SOLIDS/TT2_CV.SLD new file mode 100644 index 0000000..ec70366 --- /dev/null +++ b/CONTENT/BT/SOLIDS/TT2_CV.SLD @@ -0,0 +1,92 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-1.64844 +extmaxX=1.64844 +extminY=0 +extmaxY=3.5 +extminZ=2.38281 +extmaxZ=5.67969 + +slcminX=-1.64844 +slcmaxX=1.64844 +slcminY=0 +slcmaxY=3.5 +slcminZ=2.38281 +slcmaxZ=5.67969 + + +[volume 1] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-1.64844 +extmaxX=1.64844 +extminY=0 +extmaxY=3.5 +extminZ=-0.921875 +extmaxZ=2.38281 + +slcminX=-1.64844 +slcmaxX=1.64844 +slcminY=0 +slcmaxY=3.5 +slcminZ=-0.921875 +slcmaxZ=2.38281 + + +[volume 2] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-1.64844 +extmaxX=1.64844 +extminY=0 +extmaxY=3.5 +extminZ=-4.21875 +extmaxZ=-0.921875 + +slcminX=-1.64844 +slcmaxX=1.64844 +slcminY=0 +slcmaxY=3.5 +slcminZ=-4.21875 +slcmaxZ=-0.921875 + + +[volume 3] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-1.64844 +extmaxX=1.64844 +extminY=0 +extmaxY=3.5 +extminZ=-7.52344 +extmaxZ=-4.21875 + +slcminX=-1.64844 +slcmaxX=1.64844 +slcminY=0 +slcmaxY=3.5 +slcminZ=-7.52344 +slcmaxZ=-4.21875 + + +[COLLISION] +name=tt2_cv.sld +count=4 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/TWR_CV.SLD b/CONTENT/BT/SOLIDS/TWR_CV.SLD new file mode 100644 index 0000000..ff63776 --- /dev/null +++ b/CONTENT/BT/SOLIDS/TWR_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-1.79688 +extmaxX=1.79688 +extminY=0 +extmaxY=16.6719 +extminZ=-1.79688 +extmaxZ=1.79688 + +slcminX=-1.79688 +slcmaxX=1.79688 +slcminY=0 +slcmaxY=16.6719 +slcminZ=-1.79688 +slcmaxZ=1.79688 + + +[COLLISION] +name=twr_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/VUL_CV.SLD b/CONTENT/BT/SOLIDS/VUL_CV.SLD new file mode 100644 index 0000000..0b4c7b4 --- /dev/null +++ b/CONTENT/BT/SOLIDS/VUL_CV.SLD @@ -0,0 +1,30 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-3.85938 +extmaxX=3.88281 +extminY=2 +extmaxY=9.90625 +extminZ=-3.82812 +extmaxZ=3.90625 + +slcminX=-3.85938 +slcmaxX=3.88281 +slcminY=1 +slcmaxY=9.90625 +slcminZ=-3.82812 +slcmaxZ=3.90625 + + +[COLLISION] +name=vul_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + + \ No newline at end of file diff --git a/CONTENT/BT/SOLIDS/WALL10K.SLD b/CONTENT/BT/SOLIDS/WALL10K.SLD new file mode 100644 index 0000000..05373f0 --- /dev/null +++ b/CONTENT/BT/SOLIDS/WALL10K.SLD @@ -0,0 +1,93 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-4000 +extmaxX=4000 +extminY=0 +extmaxY=50 +extminZ=-4100 +extmaxZ=-4000 + +slcminX=-4000 +slcmaxX=4000 +slcminY=0 +slcmaxY=50 +slcminZ=-4100 +slcmaxZ=-4000 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-4100 +extmaxX=-4000 +extminY=0 +extmaxY=50 +extminZ=-4000 +extmaxZ=4000 + +slcminX=-4100 +slcmaxX=-4000 +slcminY=0 +slcmaxY=50 +slcminZ=-4000 +slcmaxZ=4000 + + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-4000 +extmaxX=4000 +extminY=0 +extmaxY=50 +extminZ=4000 +extmaxZ=4100 + +slcminX=-4000 +slcmaxX=4000 +slcminY=0 +slcmaxY=50 +slcminZ=4000 +slcmaxZ=4100 + + +[volume 3] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=4000 +extmaxX=4100 +extminY=0 +extmaxY=50 +extminZ=-4000 +extmaxZ=4000 + +slcminX=4000 +slcmaxX=4100 +slcminY=0 +slcmaxY=50 +slcminZ=-4000 +slcmaxZ=4000 + + +[COLLISION] +name=wall10k.sld +count=4 +extentcount=0 +evilextentcount=0 + + \ No newline at end of file diff --git a/CONTENT/BT/SOLIDS/WALL1_CV.SLD b/CONTENT/BT/SOLIDS/WALL1_CV.SLD new file mode 100644 index 0000000..99bc8fc --- /dev/null +++ b/CONTENT/BT/SOLIDS/WALL1_CV.SLD @@ -0,0 +1,218 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-31.21 +extmaxX=12.664 +extminY=0 +extmaxY=6 +extminZ=-27.89 +extmaxZ=15.984 + +slcminX=-31.21 +slcmaxX=12.664 +slcminY=0 +slcmaxY=6 +slcminZ=-27.89 +slcmaxZ=15.984 + + +[volume 1] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-18.992 +extmaxX=39.508 +extminY=0 +extmaxY=9 +extminZ=-17.133 +extmaxZ=41.367 + +slcminX=-18.992 +slcmaxX=39.508 +slcminY=0 +slcmaxY=9 +slcminZ=-17.133 +slcmaxZ=41.367 + + +[volume 2] +TypeNumber=12 +TypeName=WedgeFacingNegativeZAndPositiveXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=11 +extmaxX=23 +extminY=0 +extmaxY=40 +extminZ=15 +extmaxZ=32 + +slcminX=11 +slcmaxX=23 +slcminY=0 +slcmaxY=40 +slcminZ=15 +slcmaxZ=32 + + +[volume 3] +TypeNumber=12 +TypeName=WedgeFacingNegativeZAndPositiveXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=23 +extmaxX=38 +extminY=0 +extmaxY=40 +extminZ=32 +extmaxZ=41 + +slcminX=23 +slcmaxX=38 +slcminY=0 +slcmaxY=40 +slcminZ=32 +slcmaxZ=41 + + +[volume 4] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-40.93 +extmaxX=17.57 +extminY=0 +extmaxY=11 +extminZ=-57.781 +extmaxZ=0.719 + +slcminX=-40.93 +slcmaxX=17.57 +slcminY=0 +slcmaxY=11 +slcminZ=-57.781 +slcmaxZ=0.719 + + +[volume 5] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-69.382 +extmaxX=-25.508 +extminY=0 +extmaxY=7 +extminZ=-63.476 +extmaxZ=-19.602 + +slcminX=-69.382 +slcmaxX=-25.508 +slcminY=0 +slcmaxY=7 +slcminZ=-63.476 +slcmaxZ=-19.602 + + +[volume 6] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=14.594 +extmaxX=51.156 +extminY=0 +extmaxY=6 +extminZ=18.156 +extmaxZ=54.718 + +slcminX=14.594 +slcmaxX=51.156 +slcminY=0 +slcmaxY=6 +slcminZ=18.156 +slcmaxZ=54.718 + + +[volume 7] +TypeNumber=12 +TypeName=WedgeFacingNegativeZAndPositiveXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-50 +extmaxX=-15 +extminY=0 +extmaxY=40 +extminZ=-43 +extmaxZ=-20 + +slcminX=-50 +slcmaxX=-15 +slcminY=0 +slcmaxY=40 +slcminZ=-43 +slcmaxZ=-20 + + +[volume 8] +TypeNumber=12 +TypeName=WedgeFacingNegativeZAndPositiveXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-15 +extmaxX=-10 +extminY=0 +extmaxY=40 +extminZ=-20 +extmaxZ=-6 + +slcminX=-15 +slcmaxX=-10 +slcminY=0 +slcmaxY=40 +slcminZ=-20 +slcmaxZ=-6 + + +[volume 9] +TypeNumber=12 +TypeName=WedgeFacingNegativeZAndPositiveXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-10 +extmaxX=11 +extminY=0 +extmaxY=40 +extminZ=-6 +extmaxZ=15 + +slcminX=-10 +slcmaxX=11 +slcminY=0 +slcmaxY=40 +slcminZ=-6 +slcmaxZ=15 + + +[COLLISION] +name=wall1_cv.sld +count=10 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/WALL2_CV.SLD b/CONTENT/BT/SOLIDS/WALL2_CV.SLD new file mode 100644 index 0000000..0397079 --- /dev/null +++ b/CONTENT/BT/SOLIDS/WALL2_CV.SLD @@ -0,0 +1,218 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-28.664 +extmaxX=15.21 +extminY=0 +extmaxY=6 +extminZ=-25.984 +extmaxZ=17.89 + +slcminX=-28.664 +slcmaxX=15.21 +slcminY=0 +slcmaxY=6 +slcminZ=-25.984 +slcmaxZ=17.89 + + +[volume 1] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-54.195 +extmaxX=-10.321 +extminY=0 +extmaxY=9 +extminZ=-41.054 +extmaxZ=2.82 + +slcminX=-54.195 +slcmaxX=-10.321 +slcminY=0 +slcmaxY=9 +slcminZ=-41.054 +slcmaxZ=2.82 + + +[volume 2] +TypeNumber=14 +TypeName=WedgeFacingPositiveZAndNegativeXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-41 +extmaxX=-34 +extminY=0 +extmaxY=40 +extminZ=-38 +extmaxZ=-22 + +slcminX=-41 +slcmaxX=-34 +slcminY=0 +slcmaxY=40 +slcminZ=-38 +slcmaxZ=-22 + + +[volume 3] +TypeNumber=14 +TypeName=WedgeFacingPositiveZAndNegativeXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-52 +extmaxX=-41 +extminY=0 +extmaxY=40 +extminZ=-54 +extmaxZ=-38 + +slcminX=-52 +slcmaxX=-41 +slcminY=0 +slcmaxY=40 +slcminZ=-54 +slcmaxZ=-38 + + +[volume 4] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-31.805 +extmaxX=26.695 +extminY=0 +extmaxY=11 +extminZ=-8 +extmaxZ=50.5 + +slcminX=-31.805 +slcmaxX=26.695 +slcminY=0 +slcmaxY=11 +slcminZ=-8 +slcmaxZ=50.5 + + +[volume 5] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=6.508 +extmaxX=50.382 +extminY=0 +extmaxY=7 +extminZ=16.602 +extmaxZ=60.476 + +slcminX=6.508 +slcmaxX=50.382 +slcminY=0 +slcmaxY=7 +slcminZ=16.602 +slcmaxZ=60.476 + + +[volume 6] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-63.156 +extmaxX=-26.594 +extminY=0 +extmaxY=6 +extminZ=-63.718 +extmaxZ=-27.156 + +slcminX=-63.156 +slcmaxX=-26.594 +slcminY=0 +slcmaxY=6 +slcminZ=-63.718 +slcmaxZ=-27.156 + + +[volume 7] +TypeNumber=14 +TypeName=WedgeFacingPositiveZAndNegativeXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=2 +extmaxX=32 +extminY=0 +extmaxY=40 +extminZ=16 +extmaxZ=39 + +slcminX=2 +slcmaxX=32 +slcminY=0 +slcmaxY=40 +slcminZ=16 +slcmaxZ=39 + + +[volume 8] +TypeNumber=14 +TypeName=WedgeFacingPositiveZAndNegativeXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-8 +extmaxX=2 +extminY=0 +extmaxY=40 +extminZ=-1 +extmaxZ=16 + +slcminX=-8 +slcmaxX=2 +slcminY=0 +slcmaxY=40 +slcminZ=-1 +slcmaxZ=16 + + +[volume 9] +TypeNumber=14 +TypeName=WedgeFacingPositiveZAndNegativeXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-34 +extmaxX=-8 +extminY=0 +extmaxY=40 +extminZ=-22 +extmaxZ=-1 + +slcminX=-34 +slcmaxX=-8 +slcminY=0 +slcmaxY=40 +slcminZ=-22 +slcmaxZ=-1 + + +[COLLISION] +name=wall2_cv.sld +count=10 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/WL1_CV.SLD b/CONTENT/BT/SOLIDS/WL1_CV.SLD new file mode 100644 index 0000000..a18e93c --- /dev/null +++ b/CONTENT/BT/SOLIDS/WL1_CV.SLD @@ -0,0 +1,386 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-5.5 +extmaxX=3.39844 +extminY=3.60156 +extmaxY=5.60156 +extminZ=9.14844 +extmaxZ=10.0469 + +slcminX=-5.5 +slcmaxX=3.39844 +slcminY=3.60156 +slcmaxY=5.60156 +slcminZ=9.14844 +slcmaxZ=10.0469 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-9 +extmaxX=6.89844 +extminY=0 +extmaxY=3.60156 +extminZ=9.14844 +extmaxZ=10.0469 + +slcminX=-9 +slcmaxX=6.89844 +slcminY=0 +slcmaxY=3.60156 +slcminZ=9.14844 +slcmaxZ=10.0469 + + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-3.14844 +extmaxX=-0.953125 +extminY=0 +extmaxY=4.5 +extminZ=10 +extmaxZ=12 + +slcminX=-3.14844 +slcmaxX=-0.953125 +slcminY=0 +slcmaxY=4.5 +slcminZ=10 +slcmaxZ=12 + + +[volume 3] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=10.9531 +extmaxX=13.1484 +extminY=0 +extmaxY=3.39844 +extminZ=-13 +extmaxZ=-11 + +slcminX=10.9531 +slcmaxX=13.1484 +slcminY=0 +slcmaxY=3.39844 +slcminZ=-13 +slcmaxZ=-11 + + +[volume 4] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=9.5 +extmaxX=17 +extminY=0 +extmaxY=7.10156 +extminZ=-11 +extmaxZ=-10 + +slcminX=9.5 +slcmaxX=17 +slcminY=0 +slcmaxY=7.10156 +slcminZ=-11 +slcmaxZ=-10 + + +[volume 5] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=7 +extmaxX=9.5 +extminY=0 +extmaxY=8.5 +extminZ=-11 +extmaxZ=-10 + +slcminX=7 +slcmaxX=9.5 +slcminY=0 +slcmaxY=8.5 +slcminZ=-11 +slcmaxZ=-10 + + +[volume 6] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=4.5 +extmaxX=7 +extminY=0 +extmaxY=9.89844 +extminZ=-11 +extmaxZ=-10 + +slcminX=4.5 +slcmaxX=7 +slcminY=0 +slcmaxY=9.89844 +slcminZ=-11 +slcmaxZ=-10 + + +[volume 7] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=2 +extmaxX=4.5 +extminY=0 +extmaxY=8 +extminZ=-11 +extmaxZ=-10 + +slcminX=2 +slcmaxX=4.5 +slcminY=0 +slcmaxY=8 +slcminZ=-11 +slcmaxZ=-10 + + +[volume 8] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-8.39844 +extmaxX=-5.89844 +extminY=6.54688 +extmaxY=8.45312 +extminZ=-12.1484 +extmaxZ=-9.85156 + +slcminX=-8.39844 +slcmaxX=-5.89844 +slcminY=6.54688 +slcmaxY=8.45312 +slcminZ=-12.1484 +slcmaxZ=-9.85156 + + +[volume 9] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-6.75 +extmaxX=-4.85156 +extminY=3.70312 +extmaxY=6.5 +extminZ=-12.1484 +extmaxZ=-9.85156 + +slcminX=-6.75 +slcmaxX=-4.85156 +slcminY=3.70312 +slcmaxY=6.5 +slcminZ=-12.1484 +slcmaxZ=-9.85156 + + +[volume 10] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-5.70312 +extmaxX=-2.70312 +extminY=0 +extmaxY=3.70312 +extminZ=-12.1484 +extmaxZ=-9.85156 + +slcminX=-5.70312 +slcmaxX=-2.70312 +slcminY=0 +slcmaxY=3.70312 +slcminZ=-12.1484 +slcmaxZ=-9.85156 + + +[volume 11] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-16.5 +extmaxX=-14 +extminY=0.046875 +extmaxY=6.95312 +extminZ=-12.0469 +extmaxZ=-10.25 + +slcminX=-16.5 +slcmaxX=-14 +slcminY=0.046875 +slcmaxY=6.95312 +slcminZ=-12.0469 +slcmaxZ=-10.25 + + +[volume 12] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-12.5 +extmaxX=-9.70312 +extminY=0 +extmaxY=6 +extminZ=-10.25 +extmaxZ=-9.25 + +slcminX=-12.5 +slcmaxX=-9.70312 +slcminY=0 +slcmaxY=6 +slcminZ=-10.25 +slcmaxZ=-9.25 + + +[volume 13] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-14 +extmaxX=-12.5 +extminY=0 +extmaxY=9 +extminZ=-10.25 +extmaxZ=-9.25 + +slcminX=-14 +slcmaxX=-12.5 +slcminY=0 +slcmaxY=9 +slcminZ=-10.25 +slcmaxZ=-9.25 + + +[volume 14] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-16.5 +extmaxX=-14 +extminY=0 +extmaxY=10 +extminZ=-10.25 +extmaxZ=-9.25 + +slcminX=-16.5 +slcmaxX=-14 +slcminY=0 +slcmaxY=10 +slcminZ=-10.25 +slcmaxZ=-9.25 + + +[volume 15] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-17 +extmaxX=-16.5 +extminY=0 +extmaxY=6 +extminZ=-4 +extmaxZ=-2 + +slcminX=-17 +slcmaxX=-16.5 +slcminY=0 +slcmaxY=6 +slcminZ=-4 +slcmaxZ=-2 + + +[volume 16] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-17 +extmaxX=-16.5 +extminY=0 +extmaxY=8.5 +extminZ=-6.5 +extmaxZ=-4 + +slcminX=-17 +slcmaxX=-16.5 +slcminY=0 +slcmaxY=8.5 +slcminZ=-6.5 +slcmaxZ=-4 + + +[volume 17] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-17 +extmaxX=-16.5 +extminY=0 +extmaxY=10 +extminZ=-10 +extmaxZ=-6.5 + +slcminX=-17 +slcmaxX=-16.5 +slcminY=0 +slcmaxY=10 +slcminZ=-10 +slcmaxZ=-6.5 + + +[COLLISION] +name=wl1_cv.sld +count=18 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/WL2_CV.SLD b/CONTENT/BT/SOLIDS/WL2_CV.SLD new file mode 100644 index 0000000..32d1047 --- /dev/null +++ b/CONTENT/BT/SOLIDS/WL2_CV.SLD @@ -0,0 +1,92 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=14.75 +extmaxX=17.25 +extminY=0 +extmaxY=11 +extminZ=-1 +extmaxZ=1.5 + +slcminX=14.75 +slcmaxX=17.25 +slcminY=0 +slcmaxY=11 +slcminZ=-1 +slcmaxZ=1.5 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-7.5 +extmaxX=-5 +extminY=0 +extmaxY=13 +extminZ=-1 +extmaxZ=1.5 + +slcminX=-7.5 +slcmaxX=-5 +slcminY=0 +slcmaxY=13 +slcminZ=-1 +slcmaxZ=1.5 + + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-18.25 +extmaxX=-15.75 +extminY=0 +extmaxY=11 +extminZ=-1 +extmaxZ=1.5 + +slcminX=-18.25 +slcmaxX=-15.75 +slcminY=0 +slcmaxY=11 +slcminZ=-1 +slcmaxZ=1.5 + + +[volume 3] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=3.75 +extmaxX=6.25 +extminY=0 +extmaxY=14 +extminZ=-1.5 +extmaxZ=1 + +slcminX=3.75 +slcmaxX=6.25 +slcminY=0 +slcmaxY=14 +slcminZ=-1.5 +slcmaxZ=1 + + +[COLLISION] +name=wl2_cv.sld +count=4 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/WL3_CV.SLD b/CONTENT/BT/SOLIDS/WL3_CV.SLD new file mode 100644 index 0000000..f91cb2a --- /dev/null +++ b/CONTENT/BT/SOLIDS/WL3_CV.SLD @@ -0,0 +1,386 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=22 +extmaxX=23 +extminY=0 +extmaxY=3.5 +extminZ=4 +extmaxZ=6.5 + +slcminX=22 +slcmaxX=23 +slcminY=0 +slcmaxY=3.5 +slcminZ=4 +slcmaxZ=6.5 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=22 +extmaxX=23 +extminY=0 +extmaxY=5 +extminZ=1 +extmaxZ=4 + +slcminX=22 +slcmaxX=23 +slcminY=0 +slcmaxY=5 +slcminZ=1 +slcmaxZ=4 + + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-23.25 +extmaxX=-22.25 +extminY=0 +extmaxY=9 +extminZ=-0.5 +extmaxZ=2.25 + +slcminX=-23.25 +slcmaxX=-22.25 +slcminY=0 +slcmaxY=9 +slcminZ=-0.5 +slcmaxZ=2.25 + + +[volume 3] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=19 +extmaxX=23 +extminY=3 +extmaxY=5 +extminZ=0 +extmaxZ=1 + +slcminX=19 +slcmaxX=23 +slcminY=3 +slcmaxY=5 +slcminZ=0 +slcmaxZ=1 + + +[volume 4] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=17 +extmaxX=23 +extminY=0 +extmaxY=3 +extminZ=0 +extmaxZ=1 + +slcminX=17 +slcmaxX=23 +slcminY=0 +slcmaxY=3 +slcminZ=0 +slcmaxZ=1 + + +[volume 5] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=8.75 +extmaxX=11.25 +extminY=0 +extmaxY=4 +extminZ=-2 +extmaxZ=0 + +slcminX=8.75 +slcmaxX=11.25 +slcminY=0 +slcmaxY=4 +slcminZ=-2 +slcmaxZ=0 + + +[volume 6] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=1.75 +extmaxX=4.25 +extminY=0 +extmaxY=6.5 +extminZ=-2 +extmaxZ=0 + +slcminX=1.75 +slcmaxX=4.25 +slcminY=0 +slcmaxY=6.5 +slcminZ=-2 +slcmaxZ=0 + + +[volume 7] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-0.75 +extmaxX=9.75 +extminY=5 +extmaxY=8.5 +extminZ=0 +extmaxZ=1 + +slcminX=-0.75 +slcmaxX=9.75 +slcminY=5 +slcmaxY=8.5 +slcminZ=0 +slcmaxZ=1 + + +[volume 8] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-3 +extmaxX=13 +extminY=0 +extmaxY=5 +extminZ=0 +extmaxZ=1 + +slcminX=-3 +slcmaxX=13 +slcminY=0 +slcmaxY=5 +slcminZ=0 +slcmaxZ=1 + + +[volume 9] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-9 +extmaxX=-4 +extminY=5 +extmaxY=8.5 +extminZ=0 +extmaxZ=1 + +slcminX=-9 +slcmaxX=-4 +slcminY=5 +slcmaxY=8.5 +slcminZ=0 +slcmaxZ=1 + + +[volume 10] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-10 +extmaxX=-4 +extminY=0 +extmaxY=5 +extminZ=0 +extmaxZ=1 + +slcminX=-10 +slcmaxX=-4 +slcminY=0 +slcmaxY=5 +slcminZ=0 +slcmaxZ=1 + + +[volume 11] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-17.75 +extmaxX=-15.75 +extminY=0 +extmaxY=5 +extminZ=0 +extmaxZ=1 + +slcminX=-17.75 +slcmaxX=-15.75 +slcminY=0 +slcmaxY=5 +slcminZ=0 +slcmaxZ=1 + + +[volume 12] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-19.75 +extmaxX=-17.75 +extminY=0 +extmaxY=8 +extminZ=0 +extmaxZ=1 + +slcminX=-19.75 +slcmaxX=-17.75 +slcminY=0 +slcmaxY=8 +slcminZ=0 +slcmaxZ=1 + + +[volume 13] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-22.25 +extmaxX=-19.75 +extminY=0 +extmaxY=9 +extminZ=0 +extmaxZ=1 + +slcminX=-22.25 +slcmaxX=-19.75 +slcminY=0 +slcmaxY=9 +slcminZ=0 +slcmaxZ=1 + + +[volume 14] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-22.5 +extmaxX=-20 +extminY=0 +extmaxY=7 +extminZ=-2 +extmaxZ=0 + +slcminX=-22.5 +slcmaxX=-20 +slcminY=0 +slcmaxY=7 +slcminZ=-2 +slcmaxZ=0 + + +[volume 15] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-23.25 +extmaxX=-22.25 +extminY=0 +extmaxY=4 +extminZ=6.75 +extmaxZ=7.75 + +slcminX=-23.25 +slcmaxX=-22.25 +slcminY=0 +slcmaxY=4 +slcminZ=6.75 +slcmaxZ=7.75 + + +[volume 16] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-23.25 +extmaxX=-22.25 +extminY=0 +extmaxY=6 +extminZ=5.25 +extmaxZ=6.75 + +slcminX=-23.25 +slcmaxX=-22.25 +slcminY=0 +slcmaxY=6 +slcminZ=5.25 +slcmaxZ=6.75 + + +[volume 17] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-23.25 +extmaxX=-22.25 +extminY=0 +extmaxY=7.5 +extminZ=2.25 +extmaxZ=5.25 + +slcminX=-23.25 +slcmaxX=-22.25 +slcminY=0 +slcmaxY=7.5 +slcminZ=2.25 +slcmaxZ=5.25 + + +[COLLISION] +name=wl3_cv.sld +count=18 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/WL4_CV.SLD b/CONTENT/BT/SOLIDS/WL4_CV.SLD new file mode 100644 index 0000000..0e22d3b --- /dev/null +++ b/CONTENT/BT/SOLIDS/WL4_CV.SLD @@ -0,0 +1,113 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-11 +extmaxX=-9.5 +extminY=0 +extmaxY=2 +extminZ=-0.5 +extmaxZ=0.5 + +slcminX=-11 +slcmaxX=-9.5 +slcminY=0 +slcmaxY=2 +slcminZ=-0.5 +slcmaxZ=0.5 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=0.5 +extmaxX=2 +extminY=4 +extmaxY=7 +extminZ=-0.5 +extmaxZ=0.5 + +slcminX=0.5 +slcmaxX=2 +slcminY=4 +slcmaxY=7 +slcminZ=-0.5 +slcmaxZ=0.5 + + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=2 +extmaxX=4.5 +extminY=4 +extmaxY=8.5 +extminZ=-0.5 +extmaxZ=0.5 + +slcminX=2 +slcmaxX=4.5 +slcminY=4 +slcmaxY=8.5 +slcminZ=-0.5 +slcmaxZ=0.5 + + +[volume 3] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-3.25 +extmaxX=-0.25 +extminY=4 +extmaxY=7.5 +extminZ=-0.5 +extmaxZ=0.5 + +slcminX=-3.25 +slcmaxX=-0.25 +slcminY=4 +slcmaxY=7.5 +slcminZ=-0.5 +slcmaxZ=0.5 + + +[volume 4] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-9.5 +extmaxX=10.5 +extminY=0 +extmaxY=4 +extminZ=-0.5 +extmaxZ=0.5 + +slcminX=-9.5 +slcmaxX=10.5 +slcminY=0 +slcmaxY=4 +slcminZ=-0.5 +slcmaxZ=0.5 + + +[COLLISION] +name=wl4_cv.sld +count=5 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/WL5_CV.SLD b/CONTENT/BT/SOLIDS/WL5_CV.SLD new file mode 100644 index 0000000..10808ff --- /dev/null +++ b/CONTENT/BT/SOLIDS/WL5_CV.SLD @@ -0,0 +1,155 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=0.5 +extmaxX=1 +extminY=0 +extmaxY=3.5 +extminZ=1.5 +extmaxZ=3 + +slcminX=0.5 +slcmaxX=1 +slcminY=0 +slcmaxY=3.5 +slcminZ=1.5 +slcmaxZ=3 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=0.5 +extmaxX=1 +extminY=0 +extmaxY=5 +extminZ=0.5 +extmaxZ=1.5 + +slcminX=0.5 +slcmaxX=1 +slcminY=0 +slcmaxY=5 +slcminZ=0.5 +slcmaxZ=1.5 + + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=0.5 +extmaxX=1 +extminY=0 +extmaxY=5.5 +extminZ=-1.5 +extmaxZ=0.5 + +slcminX=0.5 +slcmaxX=1 +slcminY=0 +slcmaxY=5.5 +slcminZ=-1.5 +slcmaxZ=0.5 + + +[volume 3] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-1 +extmaxX=0 +extminY=3 +extmaxY=5 +extminZ=-2 +extmaxZ=-1.5 + +slcminX=-1 +slcmaxX=0 +slcminY=3 +slcmaxY=5 +slcminZ=-2 +slcmaxZ=-1.5 + + +[volume 4] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=2 +extmaxX=3.5 +extminY=3 +extmaxY=5 +extminZ=-2 +extmaxZ=-1.5 + +slcminX=2 +slcmaxX=3.5 +slcminY=3 +slcmaxY=5 +slcminZ=-2 +slcmaxZ=-1.5 + + +[volume 5] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=0 +extmaxX=2 +extminY=3 +extmaxY=6 +extminZ=-2 +extmaxZ=-1.5 + +slcminX=0 +slcmaxX=2 +slcminY=3 +slcmaxY=6 +slcminZ=-2 +slcmaxZ=-1.5 + + +[volume 6] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-3 +extmaxX=4 +extminY=0 +extmaxY=3 +extminZ=-2 +extmaxZ=-1.5 + +slcminX=-3 +slcmaxX=4 +slcminY=0 +slcmaxY=3 +slcminZ=-2 +slcmaxZ=-1.5 + + +[COLLISION] +name=wl5_cv.sld +count=7 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/WL6_CV.SLD b/CONTENT/BT/SOLIDS/WL6_CV.SLD new file mode 100644 index 0000000..93ea79a --- /dev/null +++ b/CONTENT/BT/SOLIDS/WL6_CV.SLD @@ -0,0 +1,155 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=2.5 +extmaxX=3 +extminY=3.5 +extmaxY=4 +extminZ=0 +extmaxZ=1 + +slcminX=2.5 +slcmaxX=3 +slcminY=3.5 +slcmaxY=4 +slcminZ=0 +slcmaxZ=1 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=2.5 +extmaxX=3 +extminY=2 +extmaxY=3.5 +extminZ=0 +extmaxZ=2.5 + +slcminX=2.5 +slcmaxX=3 +slcminY=2 +slcmaxY=3.5 +slcminZ=0 +slcmaxZ=2.5 + + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=2.5 +extmaxX=3 +extminY=0 +extmaxY=2 +extminZ=0 +extmaxZ=3.5 + +slcminX=2.5 +slcmaxX=3 +slcminY=0 +slcmaxY=2 +slcminZ=0 +slcmaxZ=3.5 + + +[volume 3] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=2.5 +extmaxX=3 +extminY=0 +extmaxY=5 +extminZ=-3 +extmaxZ=0 + +slcminX=2.5 +slcmaxX=3 +slcminY=0 +slcmaxY=5 +slcminZ=-3 +slcmaxZ=0 + + +[volume 4] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-3 +extmaxX=-2 +extminY=0 +extmaxY=2.5 +extminZ=-3 +extmaxZ=-2.5 + +slcminX=-3 +slcmaxX=-2 +slcminY=0 +slcmaxY=2.5 +slcminZ=-3 +slcmaxZ=-2.5 + + +[volume 5] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2 +extmaxX=0 +extminY=0 +extmaxY=3.5 +extminZ=-3 +extmaxZ=-2.5 + +slcminX=-2 +slcmaxX=0 +slcminY=0 +slcmaxY=3.5 +slcminZ=-3 +slcmaxZ=-2.5 + + +[volume 6] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=0 +extmaxX=2.5 +extminY=0 +extmaxY=5 +extminZ=-3 +extmaxZ=-2.5 + +slcminX=0 +slcmaxX=2.5 +slcminY=0 +slcmaxY=5 +slcminZ=-3 +slcmaxZ=-2.5 + + +[COLLISION] +name=wl6_cv.sld +count=7 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/WL7_CV.SLD b/CONTENT/BT/SOLIDS/WL7_CV.SLD new file mode 100644 index 0000000..d00c7b4 --- /dev/null +++ b/CONTENT/BT/SOLIDS/WL7_CV.SLD @@ -0,0 +1,176 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=2.5 +extmaxX=3 +extminY=0 +extmaxY=2.45312 +extminZ=3 +extmaxZ=5 + +slcminX=2.5 +slcmaxX=3 +slcminY=0 +slcmaxY=2.45312 +slcminZ=3 +slcmaxZ=5 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=2.5 +extmaxX=3 +extminY=0 +extmaxY=3.85156 +extminZ=1 +extmaxZ=3 + +slcminX=2.5 +slcmaxX=3 +slcminY=0 +slcmaxY=3.85156 +slcminZ=1 +slcmaxZ=3 + + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=2.5 +extmaxX=3 +extminY=0 +extmaxY=4.75 +extminZ=-1 +extmaxZ=1 + +slcminX=2.5 +slcmaxX=3 +slcminY=0 +slcmaxY=4.75 +slcminZ=-1 +slcmaxZ=1 + + +[volume 3] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=2.5 +extmaxX=3 +extminY=0 +extmaxY=5.25 +extminZ=-3 +extmaxZ=-1 + +slcminX=2.5 +slcmaxX=3 +slcminY=0 +slcmaxY=5.25 +slcminZ=-3 +slcmaxZ=-1 + + +[volume 4] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-3 +extmaxX=-2 +extminY=0 +extmaxY=1.5 +extminZ=-3 +extmaxZ=-2.5 + +slcminX=-3 +slcmaxX=-2 +slcminY=0 +slcmaxY=1.5 +slcminZ=-3 +slcmaxZ=-2.5 + + +[volume 5] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-1 +extmaxX=0.5 +extminY=0 +extmaxY=4.04688 +extminZ=-3 +extmaxZ=-2.5 + +slcminX=-1 +slcmaxX=0.5 +slcminY=0 +slcmaxY=4.04688 +slcminZ=-3 +slcmaxZ=-2.5 + + +[volume 6] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=0.5 +extmaxX=2.5 +extminY=0 +extmaxY=5.25 +extminZ=-3 +extmaxZ=-2.5 + +slcminX=0.5 +slcmaxX=2.5 +slcminY=0 +slcmaxY=5.25 +slcminZ=-3 +slcmaxZ=-2.5 + + +[volume 7] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2 +extmaxX=-1 +extminY=0 +extmaxY=2.70312 +extminZ=-3 +extmaxZ=-2.5 + +slcminX=-2 +slcmaxX=-1 +slcminY=0 +slcmaxY=2.70312 +slcminZ=-3 +slcmaxZ=-2.5 + + +[COLLISION] +name=wl7_cv.sld +count=8 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/WL8_CV.SLD b/CONTENT/BT/SOLIDS/WL8_CV.SLD new file mode 100644 index 0000000..87cf59e --- /dev/null +++ b/CONTENT/BT/SOLIDS/WL8_CV.SLD @@ -0,0 +1,302 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-23.25 +extmaxX=-22.25 +extminY=0 +extmaxY=7.5 +extminZ=2.25 +extmaxZ=5.25 + +slcminX=-23.25 +slcmaxX=-22.25 +slcminY=0 +slcmaxY=7.5 +slcminZ=2.25 +slcmaxZ=5.25 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-23.25 +extmaxX=-22.25 +extminY=0 +extmaxY=6 +extminZ=5.25 +extmaxZ=6.75 + +slcminX=-23.25 +slcmaxX=-22.25 +slcminY=0 +slcmaxY=6 +slcminZ=5.25 +slcmaxZ=6.75 + + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-23.25 +extmaxX=-22.25 +extminY=0 +extmaxY=4 +extminZ=6.75 +extmaxZ=7.75 + +slcminX=-23.25 +slcmaxX=-22.25 +slcminY=0 +slcmaxY=4 +slcminZ=6.75 +slcmaxZ=7.75 + + +[volume 3] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-22.5 +extmaxX=-20 +extminY=0 +extmaxY=7 +extminZ=-2 +extmaxZ=0 + +slcminX=-22.5 +slcmaxX=-20 +slcminY=0 +slcmaxY=7 +slcminZ=-2 +slcmaxZ=0 + + +[volume 4] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-22.25 +extmaxX=-19.75 +extminY=0 +extmaxY=9 +extminZ=0 +extmaxZ=1 + +slcminX=-22.25 +slcmaxX=-19.75 +slcminY=0 +slcmaxY=9 +slcminZ=0 +slcmaxZ=1 + + +[volume 5] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-19.75 +extmaxX=-17.75 +extminY=0 +extmaxY=8 +extminZ=0 +extmaxZ=1 + +slcminX=-19.75 +slcmaxX=-17.75 +slcminY=0 +slcmaxY=8 +slcminZ=0 +slcmaxZ=1 + + +[volume 6] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-17.75 +extmaxX=-15.75 +extminY=0 +extmaxY=5 +extminZ=0 +extmaxZ=1 + +slcminX=-17.75 +slcmaxX=-15.75 +slcminY=0 +slcmaxY=5 +slcminZ=0 +slcmaxZ=1 + + +[volume 7] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-10 +extmaxX=-4 +extminY=0 +extmaxY=5 +extminZ=0 +extmaxZ=1 + +slcminX=-10 +slcmaxX=-4 +slcminY=0 +slcmaxY=5 +slcminZ=0 +slcmaxZ=1 + + +[volume 8] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-9 +extmaxX=-4 +extminY=5 +extmaxY=8.5 +extminZ=0 +extmaxZ=1 + +slcminX=-9 +slcmaxX=-4 +slcminY=5 +slcmaxY=8.5 +slcminZ=0 +slcmaxZ=1 + + +[volume 9] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-3 +extmaxX=13 +extminY=0 +extmaxY=5 +extminZ=0 +extmaxZ=1 + +slcminX=-3 +slcmaxX=13 +slcminY=0 +slcmaxY=5 +slcminZ=0 +slcmaxZ=1 + + +[volume 10] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-0.75 +extmaxX=9.75 +extminY=5 +extmaxY=8.5 +extminZ=0 +extmaxZ=1 + +slcminX=-0.75 +slcmaxX=9.75 +slcminY=5 +slcmaxY=8.5 +slcminZ=0 +slcmaxZ=1 + + +[volume 11] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=1.75 +extmaxX=4.25 +extminY=0 +extmaxY=6.5 +extminZ=-2 +extmaxZ=0 + +slcminX=1.75 +slcmaxX=4.25 +slcminY=0 +slcmaxY=6.5 +slcminZ=-2 +slcmaxZ=0 + + +[volume 12] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=8.75 +extmaxX=11.25 +extminY=0 +extmaxY=4 +extminZ=-2 +extmaxZ=0 + +slcminX=8.75 +slcmaxX=11.25 +slcminY=0 +slcmaxY=4 +slcminZ=-2 +slcmaxZ=0 + + +[volume 13] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-23.25 +extmaxX=-22.25 +extminY=0 +extmaxY=9 +extminZ=-0.5 +extmaxZ=2.25 + +slcminX=-23.25 +slcmaxX=-22.25 +slcminY=0 +slcmaxY=9 +slcminZ=-0.5 +slcmaxZ=2.25 + + +[COLLISION] +name=wl8_cv.sld +count=14 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/WL9_CV.SLD b/CONTENT/BT/SOLIDS/WL9_CV.SLD new file mode 100644 index 0000000..650ce91 --- /dev/null +++ b/CONTENT/BT/SOLIDS/WL9_CV.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-9 +extmaxX=6.89844 +extminY=0 +extmaxY=3.60156 +extminZ=9.14844 +extmaxZ=10.0469 + +slcminX=-9 +slcmaxX=6.89844 +slcminY=0 +slcmaxY=3.60156 +slcminZ=9.14844 +slcmaxZ=10.0469 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-5.5 +extmaxX=3.39844 +extminY=3.60156 +extmaxY=5.60156 +extminZ=9.14844 +extmaxZ=10.0469 + +slcminX=-5.5 +slcmaxX=3.39844 +slcminY=3.60156 +slcmaxY=5.60156 +slcminZ=9.14844 +slcmaxZ=10.0469 + + +[COLLISION] +name=wl9_cv.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/SOLIDS/WST_CV.SLD b/CONTENT/BT/SOLIDS/WST_CV.SLD new file mode 100644 index 0000000..2724155 --- /dev/null +++ b/CONTENT/BT/SOLIDS/WST_CV.SLD @@ -0,0 +1,92 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=0.75 +extmaxX=2.17969 +extminY=2.5 +extmaxY=4.20312 +extminZ=-2.39844 +extmaxZ=-0.210938 + +slcminX=0.75 +slcmaxX=2.17969 +slcminY=2.5 +slcmaxY=4.20312 +slcminZ=-2.39844 +slcmaxZ=-0.210938 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2.42969 +extmaxX=2.17969 +extminY=0 +extmaxY=2.5 +extminZ=-2.39844 +extmaxZ=3.09375 + +slcminX=-2.42969 +slcmaxX=2.17969 +slcminY=0 +slcmaxY=2.5 +slcminZ=-2.39844 +slcmaxZ=3.09375 + + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=2.17969 +extmaxX=3.99219 +extminY=0 +extmaxY=2.5 +extminZ=-0.210938 +extmaxZ=0.710938 + +slcminX=2.17969 +slcmaxX=3.99219 +slcminY=0 +slcmaxY=2.5 +slcminZ=-0.210938 +slcmaxZ=0.710938 + + +[volume 3] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-1.47656 +extmaxX=-0.65625 +extminY=2.5 +extmaxY=10.8281 +extminZ=-0.210938 +extmaxZ=0.710938 + +slcminX=-1.47656 +slcmaxX=-0.65625 +slcminY=2.5 +slcmaxY=10.8281 +slcminZ=-0.210938 +slcmaxZ=0.710938 + + +[COLLISION] +name=wst_cv.sld +count=4 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT/TEST.BAT b/CONTENT/BT/TEST.BAT new file mode 100644 index 0000000..eb2ac34 --- /dev/null +++ b/CONTENT/BT/TEST.BAT @@ -0,0 +1,48 @@ +@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 ************************************************************** + + + +if "%1"=="a" goto BUILD + +if "%1"=="f" goto FRESHEN + +goto USAGE + +:BUILD +echo on +pkzip -a -P -eX -x@exclude.lst %2\bt.zip @arcfiles.lst +@echo off +goto END + +:FRESHEN +echo on +pkzip -u -P -eX -x@exclude.lst %2\bt.zip @arcfiles.lst +@echo off +goto END + +:NOLISTFILE +echo. +goto END + +:NOEXCLUDEFILE +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 diff --git a/CONTENT/BT/VIDEO/AUTOARM.SKL b/CONTENT/BT/VIDEO/AUTOARM.SKL new file mode 100644 index 0000000..07d5f69 --- /dev/null +++ b/CONTENT/BT/VIDEO/AUTOARM.SKL @@ -0,0 +1,116 @@ +[jointrshoulder] +parent=jointshakey +Type=hingex +Object=thr_rarm.bgf +dzone=dz_rarm +Former Segment=segrarm +tranx=1.8 +trany=2.3 +tranz=0.519 +pitch=2.62699e-24 +yaw=1.73978e-17 +roll=3.01991e-07 +joint=jointrgun +site=siteedz_rarm + +[jointrgun] +parent=jointrshoulder +Type=hingex +Object=thr_rgun.bgf +dzone=dz_rgun +Former Segment=segrgun +tranx=1.4 +trany=-1.038 +tranz=0 +pitch=3.38514e-10 +yaw=4.5657e-10 +roll=-3.96716e-09 +site=sitergunport +site=siteedz_rgun + +[sitergunport] +parent=jointrgun +tranx=0.233 +trany=-0.38 +tranz=-2.889 +pitch=-3.37917e-10 +yaw=-4.56569e-10 +roll=7.71412e-20 + +[siteedz_rgun] +parent=jointrgun +tranx=0.233 +trany=-0.5521 +tranz=-1.12673 +pitch=2.94645e-08 +yaw=-4.516e-08 +roll=-6.50951e-16 + +[siteedz_rarm] +parent=jointrshoulder +tranx=0.72898 +trany=-0.34702 +tranz=0 +pitch=3.38514e-10 +yaw=4.5657e-10 +roll=-3.96716e-09 + + + +[jointlshoulder] +parent=jointshakey +Type=hingex +Object=snd_larm.bgf +dzone=dz_larm +Former Segment=seglarm +tranx=-2.53993 +trany=2.98391 +tranz=0.827469 +pitch=2.68881e-41 +yaw=-5.08938e-18 +roll=-1.05662e-23 +joint=jointlgun +site=siteedz_larm + +[jointlgun] +parent=jointlshoulder +Type=hingex +Object=snd_lgun.bgf +dzone=dz_lgun +Former Segment=seglgun +tranx=-1.06438 +trany=-0.97388 +tranz=-0.00197399 +pitch=8.73111e-10 +yaw=-5.03068e-16 +roll=1.08806e-23 +site=sitelgunport +site=siteedz_lgun + +[sitelgunport] +parent=jointlgun +tranx=-0.35713 +trany=-0.43919 +tranz=-2.85113 +pitch=-8.72515e-10 +yaw=-1.49012e-08 +roll=2.98024e-08 + +[siteedz_lgun] +parent=jointlgun +tranx=-0.35713 +trany=-0.47223 +tranz=-1.37149 +pitch=-8.72515e-10 +yaw=-1.49012e-08 +roll=2.98024e-08 + +[siteedz_larm] +parent=jointlshoulder +tranx=-0.61169 +trany=-0.41769 +tranz=-0.00197399 +pitch=8.73103e-10 +yaw=-1.19696e-15 +roll=1.08802e-23 + diff --git a/CONTENT/BT/VIDEO/AUTODARM.SKL b/CONTENT/BT/VIDEO/AUTODARM.SKL new file mode 100644 index 0000000..1c0ba04 --- /dev/null +++ b/CONTENT/BT/VIDEO/AUTODARM.SKL @@ -0,0 +1,116 @@ +[jointrshoulder] +parent=jointshakey +Type=hingex +Object=thrdrarm.bgf +dzone=dz_rarm +Former Segment=segrarm +tranx=1.8 +trany=2.3 +tranz=0.519 +pitch=2.62699e-24 +yaw=1.73978e-17 +roll=3.01991e-07 +joint=jointrgun +site=siteedz_rarm + +[jointrgun] +parent=jointrshoulder +Type=hingex +Object=thrdrgun.bgf +dzone=dz_rgun +Former Segment=segrgun +tranx=1.4 +trany=-1.038 +tranz=0 +pitch=3.38514e-10 +yaw=4.5657e-10 +roll=-3.96716e-09 +site=sitergunport +site=siteedz_rgun + +[sitergunport] +parent=jointrgun +tranx=0.233 +trany=-0.38 +tranz=-2.889 +pitch=-3.37917e-10 +yaw=-4.56569e-10 +roll=7.71412e-20 + +[siteedz_rgun] +parent=jointrgun +tranx=0.233 +trany=-0.5521 +tranz=-1.12673 +pitch=2.94645e-08 +yaw=-4.516e-08 +roll=-6.50951e-16 + +[siteedz_rarm] +parent=jointrshoulder +tranx=0.72898 +trany=-0.34702 +tranz=0 +pitch=3.38514e-10 +yaw=4.5657e-10 +roll=-3.96716e-09 + + + +[jointlshoulder] +parent=jointshakey +Type=hingex +Object=snddlarm.bgf +dzone=dz_larm +Former Segment=seglarm +tranx=-2.53993 +trany=2.98391 +tranz=0.827469 +pitch=2.68881e-41 +yaw=-5.08938e-18 +roll=-1.05662e-23 +joint=jointlgun +site=siteedz_larm + +[jointlgun] +parent=jointlshoulder +Type=hingex +Object=snddlgun.bgf +dzone=dz_lgun +Former Segment=seglgun +tranx=-1.06438 +trany=-0.97388 +tranz=-0.00197399 +pitch=8.73111e-10 +yaw=-5.03068e-16 +roll=1.08806e-23 +site=sitelgunport +site=siteedz_lgun + +[sitelgunport] +parent=jointlgun +tranx=-0.35713 +trany=-0.43919 +tranz=-2.85113 +pitch=-8.72515e-10 +yaw=-1.49012e-08 +roll=2.98024e-08 + +[siteedz_lgun] +parent=jointlgun +tranx=-0.35713 +trany=-0.47223 +tranz=-1.37149 +pitch=-8.72515e-10 +yaw=-1.49012e-08 +roll=2.98024e-08 + +[siteedz_larm] +parent=jointlshoulder +tranx=-0.61169 +trany=-0.41769 +tranz=-0.00197399 +pitch=8.73103e-10 +yaw=-1.19696e-15 +roll=1.08802e-23 + diff --git a/CONTENT/BT/VIDEO/AVA2SKIN.DZM b/CONTENT/BT/VIDEO/AVA2SKIN.DZM new file mode 100644 index 0000000..9ed468c --- /dev/null +++ b/CONTENT/BT/VIDEO/AVA2SKIN.DZM @@ -0,0 +1,85 @@ +[dz_ltorso] +material=avaskin:avat4_dz_ltorso_mtl +material=avaskin:avat2_dz_ltorso_mtl +material=avaskin:avat1_dz_ltorso_mtl +[dz_rtorso] +material=avaskin:avat4_dz_rtorso_mtl +material=avaskin:avat2_dz_rtorso_mtl +material=avaskin:avat1_dz_rtorso_mtl +[dz_rearltorso] +material=avaskin:avat2_dz_rearltorso_mtl +material=avaskin:avat3_dz_rearltorso_mtl +[dz_utorso] +material=avaskin:avat2_dz_utorso_mtl +material=avaskin:avat1_dz_utorso_mtl +[dz_dtorso] +material=avaskin:avat2_dz_dtorso_mtl +material=avaskin:avat1_dz_dtorso_mtl +material=avaskin:avat3_dz_dtorso_mtl +material=avaskin:blakskn_dz_dtorso_mtl +material=avaskin:gen2a_dz_dtorso_mtl +[dz_rearrtorso] +material=avaskin:avat2_dz_rearrtorso_mtl +material=avaskin:avat3_dz_rearrtorso_mtl +[dz_searchlight] +material=avaskin:avat2_dz_searchlight_mtl +[dz_rdoor] +material=avaskin:avat2_dz_rdoor_mtl +material=avaskin:gen3_dz_rdoor_mtl +[dz_ldoor] +material=avaskin:avat2_dz_ldoor_mtl +material=avaskin:gen3_dz_ldoor_mtl +[dz_reardtorso] +material=avaskin:avat3_dz_reardtorso_mtl +[dz_rearutorso] +material=avaskin:avat3_dz_rearutorso_mtl +[dz_rarm] +material=avaskin:blakskn_dz_rarm_mtl +material=avaskin:gen2_dz_rarm_mtl +material=avaskin:gen3_dz_rarm_mtl +material=avaskin:gen3drkgry_dz_rarm_mtl +material=avaskin:gen3medgry_dz_rarm_mtl +[dz_ldleg] +material=avaskin:blakskn_dz_ldleg_mtl +material=avaskin:gen3_dz_ldleg_mtl +material=avaskin:gen1_dz_ldleg_mtl +material=avaskin:lgo5_dz_ldleg_mtl +[dz_rdleg] +material=avaskin:blakskn_dz_rdleg_mtl +material=avaskin:gen3_dz_rdleg_mtl +material=avaskin:gen1_dz_rdleg_mtl +material=avaskin:lgo5_dz_rdleg_mtl +[dz_rfoot] +material=avaskin:blakskn_dz_rfoot_mtl +material=avaskin:gen3_dz_rfoot_mtl +material=avaskin:gen1a_dz_rfoot_mtl +[dz_lfoot] +material=avaskin:blakskn_dz_lfoot_mtl +material=avaskin:gen3_dz_lfoot_mtl +material=avaskin:gen1a_dz_lfoot_mtl +[dz_larm] +material=avaskin:gen2_dz_larm_mtl +material=avaskin:gen3_dz_larm_mtl +material=avaskin:gen3drkgry_dz_larm_mtl +material=avaskin:gen3medgry_dz_larm_mtl +[dz_hip] +material=avaskin:gen2_dz_hip_mtl +material=avaskin:gen3_dz_hip_mtl +[dz_luleg] +material=avaskin:gen3_dz_luleg_mtl +[dz_ruleg] +material=avaskin:gen3_dz_ruleg_mtl +[dz_rgun] +material=blhskin:gen4_dz_rgun_mtl +material=blhskin:blkhwk1_dz_rgun_mtl +material=blhskin:blkhwk2_dz_rgun_mtl +material=blhskin:gen4a_dz_rgun_mtl +material=blhskin:gen3medgry_dz_rgun_mtl +material=blhskin:damcolor_dz_rgun_mtl +[dz_lgun] +material=blhskin:gen4_dz_lgun_mtl +material=blhskin:blkhwk1_dz_lgun_mtl +material=blhskin:blkhwk2_dz_lgun_mtl +material=blhskin:gen4a_dz_lgun_mtl +material=blhskin:gen3medgry_dz_lgun_mtl +material=blhskin:damcolor_dz_lgun_mtl diff --git a/CONTENT/BT/VIDEO/AVASKIN.DZM b/CONTENT/BT/VIDEO/AVASKIN.DZM new file mode 100644 index 0000000..d2040e9 --- /dev/null +++ b/CONTENT/BT/VIDEO/AVASKIN.DZM @@ -0,0 +1,88 @@ +[dz_ltorso] +material=avaskin:avat4_dz_ltorso_mtl +material=avaskin:avat2_dz_ltorso_mtl +material=avaskin:avat1_dz_ltorso_mtl +[dz_rtorso] +material=avaskin:avat4_dz_rtorso_mtl +material=avaskin:avat2_dz_rtorso_mtl +material=avaskin:avat1_dz_rtorso_mtl +[dz_rearltorso] +material=avaskin:avat2_dz_rearltorso_mtl +material=avaskin:avat3_dz_rearltorso_mtl +[dz_utorso] +material=avaskin:avat2_dz_utorso_mtl +material=avaskin:avat1_dz_utorso_mtl +[dz_dtorso] +material=avaskin:avat2_dz_dtorso_mtl +material=avaskin:avat1_dz_dtorso_mtl +material=avaskin:avat3_dz_dtorso_mtl +material=avaskin:blakskn_dz_dtorso_mtl +material=avaskin:gen2a_dz_dtorso_mtl +[dz_rearrtorso] +material=avaskin:avat2_dz_rearrtorso_mtl +material=avaskin:avat3_dz_rearrtorso_mtl +[dz_searchlight] +material=avaskin:avat2_dz_searchlight_mtl +[dz_rdoor] +material=avaskin:avat2_dz_rdoor_mtl +material=avaskin:gen3_dz_rdoor_mtl +[dz_ldoor] +material=avaskin:avat2_dz_ldoor_mtl +material=avaskin:gen3_dz_ldoor_mtl +[dz_reardtorso] +material=avaskin:avat3_dz_reardtorso_mtl +[dz_rearutorso] +material=avaskin:avat3_dz_rearutorso_mtl +[dz_rarm] +material=avaskin:blakskn_dz_rarm_mtl +material=avaskin:gen2_dz_rarm_mtl +material=avaskin:gen3_dz_rarm_mtl +material=avaskin:gen3drkgry_dz_rarm_mtl +material=avaskin:gen3medgry_dz_rarm_mtl +[dz_lgun] +material=avaskin:blakskn_dz_lgun_mtl +material=avaskin:gen2a_dz_lgun_mtl +material=avaskin:gen3_dz_lgun_mtl +material=avaskin:gen1_dz_lgun_mtl +material=avaskin:gen4_dz_lgun_mtl +material=avaskin:damcolor_dz_lgun_mtl +material=avaskin:gen3medgry_dz_lgun_mtl +[dz_ldleg] +material=avaskin:blakskn_dz_ldleg_mtl +material=avaskin:gen3_dz_ldleg_mtl +material=avaskin:gen1_dz_ldleg_mtl +material=avaskin:lgo5_dz_ldleg_mtl +[dz_rdleg] +material=avaskin:blakskn_dz_rdleg_mtl +material=avaskin:gen3_dz_rdleg_mtl +material=avaskin:gen1_dz_rdleg_mtl +material=avaskin:lgo5_dz_rdleg_mtl +[dz_rfoot] +material=avaskin:blakskn_dz_rfoot_mtl +material=avaskin:gen3_dz_rfoot_mtl +material=avaskin:gen1a_dz_rfoot_mtl +[dz_lfoot] +material=avaskin:blakskn_dz_lfoot_mtl +material=avaskin:gen3_dz_lfoot_mtl +material=avaskin:gen1a_dz_lfoot_mtl +[dz_rgun] +material=avaskin:gen2a_dz_rgun_mtl +material=avaskin:gen2_dz_rgun_mtl +material=avaskin:gen3_dz_rgun_mtl +material=avaskin:gen1_dz_rgun_mtl +material=avaskin:gen4_dz_rgun_mtl +material=avaskin:gen3a_dz_rgun_mtl +material=avaskin:gen3drkgry_dz_rgun_mtl +material=avaskin:damcolor_dz_rgun_mtl +[dz_larm] +material=avaskin:gen2_dz_larm_mtl +material=avaskin:gen3_dz_larm_mtl +material=avaskin:gen3drkgry_dz_larm_mtl +material=avaskin:gen3medgry_dz_larm_mtl +[dz_hip] +material=avaskin:gen2_dz_hip_mtl +material=avaskin:gen3_dz_hip_mtl +[dz_luleg] +material=avaskin:gen3_dz_luleg_mtl +[dz_ruleg] +material=avaskin:gen3_dz_ruleg_mtl diff --git a/CONTENT/BT/VIDEO/AVX2SKIN.DZM b/CONTENT/BT/VIDEO/AVX2SKIN.DZM new file mode 100644 index 0000000..18ce3d9 --- /dev/null +++ b/CONTENT/BT/VIDEO/AVX2SKIN.DZM @@ -0,0 +1,5 @@ +[dz_utorso] +material=avxskin:blakskn_dz_utorso_mtl +material=avxskin:avat1_dz_utorso_mtl +[dz_dtorso] +material=avxskin:gen2a_dz_dtorso_mtl diff --git a/CONTENT/BT/VIDEO/AVXSKIN.DZM b/CONTENT/BT/VIDEO/AVXSKIN.DZM new file mode 100644 index 0000000..18ce3d9 --- /dev/null +++ b/CONTENT/BT/VIDEO/AVXSKIN.DZM @@ -0,0 +1,5 @@ +[dz_utorso] +material=avxskin:blakskn_dz_utorso_mtl +material=avxskin:avat1_dz_utorso_mtl +[dz_dtorso] +material=avxskin:gen2a_dz_dtorso_mtl diff --git a/CONTENT/BT/VIDEO/BATSKIN.DZM b/CONTENT/BT/VIDEO/BATSKIN.DZM new file mode 100644 index 0000000..1a056f4 --- /dev/null +++ b/CONTENT/BT/VIDEO/BATSKIN.DZM @@ -0,0 +1,93 @@ +[dz_rdleg] +material=vulskin:gen3_dz_rdleg_mtl +material=vulskin:lgo5_dz_rdleg_mtl +material=vulskin:blakskn_dz_rdleg_mtl +material=vulskin:gen1_dz_rdleg_mtl +[dz_ldleg] +material=vulskin:gen3_dz_ldleg_mtl +material=vulskin:lgo5_dz_ldleg_mtl +material=vulskin:blakskn_dz_ldleg_mtl +material=vulskin:gen1_dz_ldleg_mtl +[dz_rarm] +material=vulskin:gen3_dz_rarm_mtl +material=vulskin:gen1_dz_rarm_mtl +material=vulskin:gen2_dz_rarm_mtl +material=vulskin:gen3drkgry_dz_rarm_mtl +material=vulskin:gen3medgry_dz_rarm_mtl +[dz_rgun] +material=vulskin:gen3_dz_rgun_mtl +material=vulskin:blakskn_dz_rgun_mtl +material=vulskin:gen1_dz_rgun_mtl +material=vulskin:gen2a_dz_rgun_mtl +material=vulskin:gen4_dz_rgun_mtl +material=vulskin:damcolor_dz_rgun_mtl +material=vulskin:gen3medgry_dz_rgun_mtl +[dz_larm] +material=vulskin:gen3_dz_larm_mtl +material=vulskin:gen1_dz_larm_mtl +material=vulskin:gen2_dz_larm_mtl +material=vulskin:gen3drkgry_dz_larm_mtl +material=vulskin:gen3medgry_dz_larm_mtl +[dz_lgun] +material=vulskin:gen3_dz_lgun_mtl +material=vulskin:blakskn_dz_lgun_mtl +material=vulskin:gen1_dz_lgun_mtl +material=vulskin:gen2a_dz_lgun_mtl +material=vulskin:gen4_dz_lgun_mtl +material=vulskin:damcolor_dz_lgun_mtl +material=vulskin:gen3medgry_dz_lgun_mtl +[dz_lfoot] +material=vulskin:gen3_dz_lfoot_mtl +material=vulskin:blakskn_dz_lfoot_mtl +material=vulskin:gen1a_dz_lfoot_mtl +[dz_hip] +material=vulskin:gen3_dz_hip_mtl +material=vulskin:gen2_dz_hip_mtl +[dz_rfoot] +material=vulskin:gen3_dz_rfoot_mtl +material=vulskin:blakskn_dz_rfoot_mtl +material=vulskin:gen1a_dz_rfoot_mtl +[dz_luleg] +material=vulskin:gen3_dz_luleg_mtl +[dz_ruleg] +material=vulskin:gen3_dz_ruleg_mtl +[dz_dtorso] +material=vulskin:blakskn_dz_dtorso_mtl +material=vulskin:gen2a_dz_dtorso_mtl +material=vulskin:vultt1_dz_dtorso_mtl +material=vulskin:vultt4_dz_dtorso_mtl +[dz_lddoor] +material=vulskin:gen2_dz_lddoor_mtl +material=vulskin:vultt3_dz_lddoor_mtl +[dz_rddoor] +material=vulskin:gen2_dz_rddoor_mtl +material=vulskin:vultt3_dz_rddoor_mtl +[dz_ludoor] +material=vulskin:vultt1_dz_ludoor_mtl +material=vulskin:gen4_dz_ludoor_mtl +[dz_rudoor] +material=vulskin:vultt1_dz_rudoor_mtl +material=vulskin:gen4_dz_rudoor_mtl +[dz_utorso] +material=vulskin:vultt1_dz_utorso_mtl +material=vulskin:vultt4_dz_utorso_mtl +[dz_ltorso] +material=vulskin:vultt2_dz_ltorso_mtl +material=vulskin:vultt6_dz_ltorso_mtl +material=vulskin:vultt3_dz_ltorso_mtl +material=vulskin:vultt4_dz_ltorso_mtl +[dz_rtorso] +material=vulskin:vultt2_dz_rtorso_mtl +material=vulskin:vultt6_dz_rtorso_mtl +material=vulskin:vultt3_dz_rtorso_mtl +material=vulskin:vultt4_dz_rtorso_mtl +[dz_rearltorso] +material=vulskin:vultt3_dz_rearltorso_mtl +[dz_rearrtorso] +material=vulskin:vultt3_dz_rearrtorso_mtl +[dz_reardtorso] +material=vulskin:vultt4_dz_reardtorso_mtl +[dz_rearutorso] +material=vulskin:vultt4_dz_rearutorso_mtl +[dz_searchlight] +material=vulskin:vultt5a_dz_searchlight_mtl diff --git a/CONTENT/BT/VIDEO/BAXSKIN.DZM b/CONTENT/BT/VIDEO/BAXSKIN.DZM new file mode 100644 index 0000000..3c53969 --- /dev/null +++ b/CONTENT/BT/VIDEO/BAXSKIN.DZM @@ -0,0 +1,2 @@ +[dz_utorso] +material=vuxskin:blakskn_dz_utorso_mtl diff --git a/CONTENT/BT/VIDEO/BLHSKIN.DZM b/CONTENT/BT/VIDEO/BLHSKIN.DZM new file mode 100644 index 0000000..cfbe859 --- /dev/null +++ b/CONTENT/BT/VIDEO/BLHSKIN.DZM @@ -0,0 +1,87 @@ +[dz_larm] +material=blhskin:blkhwk3_dz_larm_mtl +material=blhskin:gen4_dz_larm_mtl +material=blhskin:blkhwk1_dz_larm_mtl +material=blhskin:gen3drkgry_dz_larm_mtl +material=blhskin:gen2medgry_dz_larm_mtl +material=blhskin:damcolor_dz_larm_mtl +[dz_rarm] +material=blhskin:blkhwk3_dz_rarm_mtl +material=blhskin:gen4_dz_rarm_mtl +material=blhskin:blkhwk1_dz_rarm_mtl +material=blhskin:gen3drkgry_dz_rarm_mtl +material=blhskin:gen2medgry_dz_rarm_mtl +material=blhskin:damcolor_dz_rarm_mtl +[dz_rearutorso] +material=blhskin:blkhwk3_dz_rearutorso_mtl +[dz_reardtorso] +material=blhskin:blkhwk3_dz_reardtorso_mtl +material=blhskin:gen3_dz_reardtorso_mtl +[dz_utorso] +material=blhskin:blkhwk3_dz_utorso_mtl +material=blhskin:blkhwk1_dz_utorso_mtl +material=blhskin:blkhwk2_dz_utorso_mtl +[dz_rgun] +material=blhskin:gen4_dz_rgun_mtl +material=blhskin:blkhwk1_dz_rgun_mtl +material=blhskin:blkhwk2_dz_rgun_mtl +material=blhskin:gen4a_dz_rgun_mtl +material=blhskin:gen3medgry_dz_rgun_mtl +material=blhskin:damcolor_dz_rgun_mtl +[dz_rdleg] +material=blhskin:gen4_dz_rdleg_mtl +material=blhskin:gen1a_dz_rdleg_mtl +material=blhskin:gen3_dz_rdleg_mtl +material=blhskin:lgo6_dz_rdleg_mtl +material=blhskin:blakskn_dz_rdleg_mtl +material=blhskin:gen3a_dz_rdleg_mtl +[dz_ldleg] +material=blhskin:gen4_dz_ldleg_mtl +material=blhskin:gen1a_dz_ldleg_mtl +material=blhskin:gen3_dz_ldleg_mtl +material=blhskin:lgo6_dz_ldleg_mtl +material=blhskin:blakskn_dz_ldleg_mtl +material=blhskin:gen3a_dz_ldleg_mtl +[dz_ruleg] +material=blhskin:gen4_dz_ruleg_mtl +material=blhskin:gen4a_dz_ruleg_mtl +material=blhskin:blakskn_dz_ruleg_mtl +material=blhskin:gen3a_dz_ruleg_mtl +material=blhskin:blkhwk4_dz_ruleg_mtl +[dz_luleg] +material=blhskin:gen4_dz_luleg_mtl +material=blhskin:gen4a_dz_luleg_mtl +material=blhskin:blakskn_dz_luleg_mtl +material=blhskin:gen3a_dz_luleg_mtl +material=blhskin:blkhwk4_dz_luleg_mtl +[dz_lgun] +material=blhskin:gen4_dz_lgun_mtl +material=blhskin:blkhwk1_dz_lgun_mtl +material=blhskin:blkhwk2_dz_lgun_mtl +material=blhskin:gen4a_dz_lgun_mtl +material=blhskin:gen3medgry_dz_lgun_mtl +material=blhskin:damcolor_dz_lgun_mtl +[dz_dtorso] +material=blhskin:blkhwk1_dz_dtorso_mtl +material=blhskin:blkhwk2_dz_dtorso_mtl +material=blhskin:gen3_dz_dtorso_mtl +[dz_lsearchlight] +material=blhskin:blkhwk5_dz_lsearchlight_mtl +[dz_rsearchlight] +material=blhskin:blkhwk5_dz_rsearchlight_mtl +[dz_rearltorso] +material=blhskin:blkhwk2_dz_rearltorso_mtl +[dz_rearrtorso] +material=blhskin:blkhwk2_dz_rearrtorso_mtl +[dz_rtorso] +material=blhskin:blkhwk2_dz_rtorso_mtl +[dz_ltorso] +material=blhskin:blkhwk2_dz_ltorso_mtl +[dz_rfoot] +material=blhskin:gen1a_dz_rfoot_mtl +material=blhskin:blakskn_dz_rfoot_mtl +material=blhskin:gen2_dz_rfoot_mtl +[dz_lfoot] +material=blhskin:gen1a_dz_lfoot_mtl +material=blhskin:blakskn_dz_lfoot_mtl +material=blhskin:gen2_dz_lfoot_mtl diff --git a/CONTENT/BT/VIDEO/BLXSKIN.DZM b/CONTENT/BT/VIDEO/BLXSKIN.DZM new file mode 100644 index 0000000..de94d09 --- /dev/null +++ b/CONTENT/BT/VIDEO/BLXSKIN.DZM @@ -0,0 +1,6 @@ +[dz_ltorso] +material=blxskin:blakskn_dz_ltorso_mtl +[dz_rtorso] +material=blxskin:blakskn_dz_rtorso_mtl +[dz_utorso] +material=blxskin:blakskn_dz_utorso_mtl diff --git a/CONTENT/BT/VIDEO/BUILD/APCS.BGF b/CONTENT/BT/VIDEO/BUILD/APCS.BGF new file mode 100644 index 0000000..84a2116 Binary files /dev/null and b/CONTENT/BT/VIDEO/BUILD/APCS.BGF differ diff --git a/CONTENT/BT/VIDEO/BUILD/APCS.VGF b/CONTENT/BT/VIDEO/BUILD/APCS.VGF new file mode 100644 index 0000000..1c8f80c --- /dev/null +++ b/CONTENT/BT/VIDEO/BUILD/APCS.VGF @@ -0,0 +1,44 @@ +DIV-VIZ2 + +// file: apcs.vgf +// generated: Thu Mar 20 07:33:10 1997 +// from: Wavefront Object File "apcs.obj", and +// Material Library File "basev.mtl" +// by: obj2vgf (ver 0.29.01a) +// written: by Ken Olsen + +HEADER( + VERSION=02:05; + UNIT=m; + SCALE=1.0; + FILETYPE=GEOMETRY; +) +{ +} + +OBJECT( +) +{ + GEOGROUP + ( + F_MATERIAL="basev:shadow_mtl"; + ) + { + PMESH { + VERTEX_POOL { + { 1.0032, 0.1000, 4.8372} /* 0 */ + { 1.0398, 0.1000, 2.9344} /* 1 */ + {-1.1912, 0.1000, 2.9344} /* 2 */ + {-1.1180, 0.1000, 4.8372} /* 3 */ + { 2.4296, 0.1000, 3.5565} /* 4 */ + { 2.4296, 0.1000, -5.2623} /* 5 */ + {-2.3250, 0.1000, -5.2989} /* 6 */ + {-2.2884, 0.1000, 3.5565} /* 7 */ + } + CONNECTION_LIST (PCOUNT=4) { + {0, 1, 2, 3} /* */ + {4, 5, 6, 7} /* */ + } + } // End of pmesh + } // End of geogroup +} // End of object diff --git a/CONTENT/BT/VIDEO/BUILD/ARMRS.BGF b/CONTENT/BT/VIDEO/BUILD/ARMRS.BGF new file mode 100644 index 0000000..5600fc5 Binary files /dev/null and b/CONTENT/BT/VIDEO/BUILD/ARMRS.BGF differ diff --git a/CONTENT/BT/VIDEO/BUILD/ARMRS.VGF b/CONTENT/BT/VIDEO/BUILD/ARMRS.VGF new file mode 100644 index 0000000..9d0a8db --- /dev/null +++ b/CONTENT/BT/VIDEO/BUILD/ARMRS.VGF @@ -0,0 +1,39 @@ +DIV-VIZ2 + +// file: armrs.vgf +// generated: Thu Mar 20 07:54:59 1997 +// from: Wavefront Object File "armrs.obj", and +// Material Library File "basev.mtl" +// by: obj2vgf (ver 0.29.01a) +// written: by Ken Olsen + +HEADER( + VERSION=02:05; + UNIT=m; + SCALE=1.0; + FILETYPE=GEOMETRY; +) +{ +} + +OBJECT( +) +{ + GEOGROUP + ( + F_MATERIAL="basev:shadow_mtl"; + ) + { + PMESH { + VERTEX_POOL { + { 1.3870, 0.2964, 2.2033} /* 0 */ + { 1.3630, 0.2964, -2.3542} /* 1 */ + {-1.3461, 0.2964, -2.2822} /* 2 */ + {-1.3221, 0.2964, 2.2273} /* 3 */ + } + CONNECTION_LIST (PCOUNT=4) { + {0, 1, 2, 3} /* */ + } + } // End of pmesh + } // End of geogroup +} // End of object diff --git a/CONTENT/BT/VIDEO/BUILD/BACKUP/GRASS.VMF b/CONTENT/BT/VIDEO/BUILD/BACKUP/GRASS.VMF new file mode 100644 index 0000000..a73f91d --- /dev/null +++ b/CONTENT/BT/VIDEO/BUILD/BACKUP/GRASS.VMF @@ -0,0 +1,82 @@ +DIV-VIZ2 + +// file: grass.vmf +// generated: Wed Mar 5 21:57:45 1997 +// from: Wavefront Object File "dummy", and +// Material Library File "grass.mtl" +// by: mtl2vmf (ver 0.27.00) +// written: by Ken Olsen + +HEADER( + VERSION=02:05; + FILETYPE=MATERIAL; +) +{ +} + +TEXTURE( + NAME=grassc_tex; +) +{ + MAP {"grassc"} + MAGNIFY {BILINEAR} // 6 bit bilinear + +} // End of texture + + RAMP(NAME=grass) +{ DATA { 0.05, 0.1, 0.05, 0.65, 0.45, 0.4 } +} // End of ramp + +TEXTURE( + NAME=tree9_tex; +) +{ + MAP {"tree"} + BITSLICE {8} // 16 bit color w/alpha (4,4,4,4) +} // End of texture + +TEXTURE( + NAME=bintA_tex; +) +{ + MAP {"bintA"} + MAGNIFY {BILINEAR} // 6 bit bilinear +} // End of texture + +MATERIAL( + NAME=grass_mtl; +) +{ + TEXTURE {"grassc_tex"} + AMBIENT {1, 1, 1} + DIFFUSE {1, 1, 1} + RAMP {grass} +} // End of material + +MATERIAL( + NAME=tree_mtl; +) +{ + TEXTURE {"tree9_tex"} + AMBIENT {1, 0.15, 0.131} + DIFFUSE {1, 0.15, 0.131} +} // End of material + +MATERIAL( + NAME=trunk_mtl; +) +{ + TEXTURE {"bintA_tex"} + AMBIENT {0.1898, 0.0885625, 0} + DIFFUSE {0.1898, 0.0641048, 0} +} // End of material + +MATERIAL( + NAME=leaves_mtl; +) +{ + TEXTURE {"tree9_tex"} + AMBIENT {1, 0.651,0.531} + DIFFUSE {1, 0.651,0.531} +} // End of material + \ No newline at end of file diff --git a/CONTENT/BT/VIDEO/BUILD/BASEV.BMF b/CONTENT/BT/VIDEO/BUILD/BASEV.BMF new file mode 100644 index 0000000..6478de8 Binary files /dev/null and b/CONTENT/BT/VIDEO/BUILD/BASEV.BMF differ diff --git a/CONTENT/BT/VIDEO/BUILD/BASEV.BSL b/CONTENT/BT/VIDEO/BUILD/BASEV.BSL new file mode 100644 index 0000000..a10d353 Binary files /dev/null and b/CONTENT/BT/VIDEO/BUILD/BASEV.BSL differ diff --git a/CONTENT/BT/VIDEO/BUILD/BLD03.BGF b/CONTENT/BT/VIDEO/BUILD/BLD03.BGF new file mode 100644 index 0000000..7fd12de Binary files /dev/null and b/CONTENT/BT/VIDEO/BUILD/BLD03.BGF differ diff --git a/CONTENT/BT/VIDEO/BUILD/BLD03_L0.BGF b/CONTENT/BT/VIDEO/BUILD/BLD03_L0.BGF new file mode 100644 index 0000000..8550bf3 Binary files /dev/null and b/CONTENT/BT/VIDEO/BUILD/BLD03_L0.BGF differ diff --git a/CONTENT/BT/VIDEO/BUILD/BLD04.BGF b/CONTENT/BT/VIDEO/BUILD/BLD04.BGF new file mode 100644 index 0000000..b8a1fd0 Binary files /dev/null and b/CONTENT/BT/VIDEO/BUILD/BLD04.BGF differ diff --git a/CONTENT/BT/VIDEO/BUILD/BLD08_LP.VGF b/CONTENT/BT/VIDEO/BUILD/BLD08_LP.VGF new file mode 100644 index 0000000..eb54e37 --- /dev/null +++ b/CONTENT/BT/VIDEO/BUILD/BLD08_LP.VGF @@ -0,0 +1,75 @@ +DIV-VIZ2 + +// file: bld08_lp.vgf +// generated: Fri Mar 21 18:17:00 1997 +// from: Wavefront Object File "bld08_lp.obj", and +// Material Library File "btfx.mtl" +// by: obj2vgf (ver 0.29.01a) +// written: by Ken Olsen + +HEADER( + VERSION=02:05; + UNIT=m; + SCALE=1.0; + FILETYPE=GEOMETRY; +) +{ +} + +OBJECT( +) +{ + GEOGROUP + ( + F_MATERIAL="btfx:litered_mtl"; + ) + { + SPHERELIST { + { -39.9902, 24.1508, -27.952, 0 } + { -57.8198, 24.1508, -27.952, 0 } + { -14.5801, 18.4199, -19.182, 0 } + { -41.7798, 18.4199, -19.182, 0 } + { 4.3999, 18.4199, -19.182, 0 } + { 77.7798, 18.4199, -19.182, 0 } + { 50.5801, 18.4199, -19.182, 0 } + { -57.8198, 24.1508, -27.952, 0 } + { -39.9902, 24.1508, -27.952, 0 } + { -86.9199, 18.4199, -18.6122, 0 } + { -41.7798, 18.4199, -40.182, 0 } + { -41.7798, 18.4199, -19.182, 0 } + { -14.5801, 18.4199, -40.182, 0 } + { -14.5801, 18.4199, -19.182, 0 } + { 4.3999, 18.4199, -40.182, 0 } + { 4.3999, 18.4199, -19.182, 0 } + { 31.6001, 18.4199, -40.182, 0 } + { 50.5801, 18.4199, -40.182, 0 } + { 77.7798, 18.4199, -40.182, 0 } + { 50.5801, 18.4199, -19.182, 0 } + { 77.7798, 18.4199, -19.182, 0 } + { -86.9199, 18.4199, 39.6481, 0 } + } // End of spherelist + } // End of geogroup + GEOGROUP + ( + F_MATERIAL="btfx:liteblu_mtl"; + ) + { + SPHERELIST { + { -83.3198, 14.2781, -18.7122, 0 } + { -63.3198, 14.2781, -18.7122, 0 } + { -38.1802, 14.2781, -40.282, 0 } + { -18.1802, 14.2781, -40.282, 0 } + { 8, 14.2781, -40.282, 0 } + { 28, 14.2781, -40.282, 0 } + { 54.1802, 14.2781, -40.282, 0 } + { 74.1802, 14.2781, -40.282, 0 } + { 71.31, 0.1, -50.18, 0 } + { 57.11, 0.1, -50.18, 0 } + { 25.11, 0.1, -50.18, 0 } + { 10.91, 0.1, -50.18, 0 } + { -21.09, 0.1, -50.18, 0 } + { -35.29, 0.1, -50.18, 0 } + } // End of spherelist + } // End of geogroup +} // End of object + \ No newline at end of file diff --git a/CONTENT/BT/VIDEO/BUILD/BLD24.BGF b/CONTENT/BT/VIDEO/BUILD/BLD24.BGF new file mode 100644 index 0000000..c80e0b7 Binary files /dev/null and b/CONTENT/BT/VIDEO/BUILD/BLD24.BGF differ diff --git a/CONTENT/BT/VIDEO/BUILD/BLD26.BGF b/CONTENT/BT/VIDEO/BUILD/BLD26.BGF new file mode 100644 index 0000000..4810a10 Binary files /dev/null and b/CONTENT/BT/VIDEO/BUILD/BLD26.BGF differ diff --git a/CONTENT/BT/VIDEO/BUILD/BLD26D.BGF b/CONTENT/BT/VIDEO/BUILD/BLD26D.BGF new file mode 100644 index 0000000..19f29fd Binary files /dev/null and b/CONTENT/BT/VIDEO/BUILD/BLD26D.BGF differ diff --git a/CONTENT/BT/VIDEO/BUILD/BUILDBAS.BAT b/CONTENT/BT/VIDEO/BUILD/BUILDBAS.BAT new file mode 100644 index 0000000..baa5b3b --- /dev/null +++ b/CONTENT/BT/VIDEO/BUILD/BUILDBAS.BAT @@ -0,0 +1,18 @@ +@echo off +rem +rem buildbas.bat +rem +echo. +echo PROCESSING TEXTURE FILES... +echo. +:bitslice +img2vtx.exe -b -o sbase.bsl -s 128,64 -m0 sbase1.tga -m1 sbase2.tga -m2 sbase3.tga -m3 sbase4.tga -m4 sbase5.tga -m5 sbase6.tga +if errorlevel 1 goto error +echo texture files processed. +goto end +:error +echo. +echo PROCESSING FAILED - SEE ABOVE +:end + + \ No newline at end of file diff --git a/CONTENT/BT/VIDEO/BUILD/BUILDGEN.BAT b/CONTENT/BT/VIDEO/BUILD/BUILDGEN.BAT new file mode 100644 index 0000000..f51ce8b --- /dev/null +++ b/CONTENT/BT/VIDEO/BUILD/BUILDGEN.BAT @@ -0,0 +1,18 @@ +@echo off +rem +rem buildgen.bat +rem +echo. +echo PROCESSING TEXTURE FILES... +echo. +:bitslice +img2vtx.exe -b -o gen.bsl -s 128,128 -m0 gen1.tga -m1 gen2.tga -m2 gen3.tga -m3 gen4.tga -m4 gen5.tga -m5 gen6.tga +if errorlevel 1 goto error +echo texture files processed. +goto end +:error +echo. +echo PROCESSING FAILED - SEE ABOVE +:end + + \ No newline at end of file diff --git a/CONTENT/BT/VIDEO/BUILD/BUILDLGO.BAT b/CONTENT/BT/VIDEO/BUILD/BUILDLGO.BAT new file mode 100644 index 0000000..611b3ba --- /dev/null +++ b/CONTENT/BT/VIDEO/BUILD/BUILDLGO.BAT @@ -0,0 +1,18 @@ +@echo off +rem +rem buildlgo.bat +rem +echo. +echo PROCESSING TEXTURE FILES... +echo. +:bitslice +img2vtx.exe -b -o lgo.bsl -s 128,64 -m0 lgo1.tga -m1 lgo2.tga -m2 lgo3.tga -m3 lgo4.tga -m4 lgo5.tga -m5 lgo6.tga +if errorlevel 1 goto error +echo texture files processed. +goto end +:error +echo. +echo PROCESSING FAILED - SEE ABOVE +:end + + \ No newline at end of file diff --git a/CONTENT/BT/VIDEO/BUILD/BUILDTEX.BAT b/CONTENT/BT/VIDEO/BUILD/BUILDTEX.BAT new file mode 100644 index 0000000..9c4aa33 --- /dev/null +++ b/CONTENT/BT/VIDEO/BUILD/BUILDTEX.BAT @@ -0,0 +1,20 @@ +@echo off +rem +rem buildtex.bat +rem +echo. +echo PROCESSING TEXTURE FILES... +echo. +:bitslice +img2vtx.exe -b -o basev.bsl -s 128,64 -m0 basev1.tga -m1 basev2.tga -m2 basev3.tga -m3 basev4.tga -m4 basev5.tga -m5 basev6.tga +if errorlevel 1 goto error +img2vtx.exe -b -o bexp.bsl -s 128,64 -m0 bexp1.tga -m1 bexp2.tga -m8 bexp99.tga +if errorlevel 1 goto error +echo texture files processed. +goto end +:error +echo. +echo PROCESSING FAILED - SEE ABOVE +:end + + \ No newline at end of file diff --git a/CONTENT/BT/VIDEO/BUILD/BULLS.BGF b/CONTENT/BT/VIDEO/BUILD/BULLS.BGF new file mode 100644 index 0000000..78857ac Binary files /dev/null and b/CONTENT/BT/VIDEO/BUILD/BULLS.BGF differ diff --git a/CONTENT/BT/VIDEO/BUILD/BULLS.VGF b/CONTENT/BT/VIDEO/BUILD/BULLS.VGF new file mode 100644 index 0000000..aed270f --- /dev/null +++ b/CONTENT/BT/VIDEO/BUILD/BULLS.VGF @@ -0,0 +1,39 @@ +DIV-VIZ2 + +// file: bulls.vgf +// generated: Thu Mar 20 07:33:10 1997 +// from: Wavefront Object File "bulls.obj", and +// Material Library File "basev.mtl" +// by: obj2vgf (ver 0.29.01a) +// written: by Ken Olsen + +HEADER( + VERSION=02:05; + UNIT=m; + SCALE=1.0; + FILETYPE=GEOMETRY; +) +{ +} + +OBJECT( +) +{ + GEOGROUP + ( + F_MATERIAL="basev:shadow_mtl"; + ) + { + PMESH { + VERTEX_POOL { + { 2.9234, 0.1000, 5.3819} /* 0 */ + { 2.9775, 0.1000, -3.0578} /* 1 */ + {-3.0246, 0.1000, -3.1119} /* 2 */ + {-3.0787, 0.1000, 5.3278} /* 3 */ + } + CONNECTION_LIST (PCOUNT=4) { + {0, 1, 2, 3} /* */ + } + } // End of pmesh + } // End of geogroup +} // End of object diff --git a/CONTENT/BT/VIDEO/BUILD/CALIOPE.BMF b/CONTENT/BT/VIDEO/BUILD/CALIOPE.BMF new file mode 100644 index 0000000..d32aebb Binary files /dev/null and b/CONTENT/BT/VIDEO/BUILD/CALIOPE.BMF differ diff --git a/CONTENT/BT/VIDEO/BUILD/CALP.BGF b/CONTENT/BT/VIDEO/BUILD/CALP.BGF new file mode 100644 index 0000000..ecb966a Binary files /dev/null and b/CONTENT/BT/VIDEO/BUILD/CALP.BGF differ diff --git a/CONTENT/BT/VIDEO/BUILD/CALPD.BGF b/CONTENT/BT/VIDEO/BUILD/CALPD.BGF new file mode 100644 index 0000000..b38dde8 Binary files /dev/null and b/CONTENT/BT/VIDEO/BUILD/CALPD.BGF differ diff --git a/CONTENT/BT/VIDEO/BUILD/CALP_LP.VGF b/CONTENT/BT/VIDEO/BUILD/CALP_LP.VGF new file mode 100644 index 0000000..2758110 --- /dev/null +++ b/CONTENT/BT/VIDEO/BUILD/CALP_LP.VGF @@ -0,0 +1,49 @@ +DIV-VIZ2 + +// file: calp_lp.vgf +// generated: Fri Mar 21 18:17:04 1997 +// from: Wavefront Object File "calp_lp.obj", and +// Material Library File "btfx.mtl" +// by: obj2vgf (ver 0.29.01a) +// written: by Ken Olsen + +HEADER( + VERSION=02:05; + UNIT=m; + SCALE=1.0; + FILETYPE=GEOMETRY; +) +{ +} + +OBJECT( +) +{ + GEOGROUP + ( + F_MATERIAL="btfx:litered_mtl"; + ) + { + SPHERELIST { + { -10.2, 17.8765, 8.1149, 0 } + { -10.2, 20.267, -9.29333, 0 } + { 10.2, 20.267, -9.29333, 0 } + { 10.2, 17.8765, 8.1149, 0 } + { -10.2, 20.2, -9.3, 0 } + { 10.2, 20.2, -9.3, 0 } + } // End of spherelist + } // End of geogroup + GEOGROUP + ( + F_MATERIAL="btfx:liteblu_mtl"; + ) + { + SPHERELIST { + { 7.65, 8.1, -1.4, 0 } + { 7.65, 10.1, -1.4, 0 } + { 7.65, 10.1, -0.4, 0 } + { 7.65, 8.1, -0.4, 0 } + } // End of spherelist + } // End of geogroup +} // End of object + \ No newline at end of file diff --git a/CONTENT/BT/VIDEO/BUILD/COMS.BGF b/CONTENT/BT/VIDEO/BUILD/COMS.BGF new file mode 100644 index 0000000..f005a0f Binary files /dev/null and b/CONTENT/BT/VIDEO/BUILD/COMS.BGF differ diff --git a/CONTENT/BT/VIDEO/BUILD/COMS.VGF b/CONTENT/BT/VIDEO/BUILD/COMS.VGF new file mode 100644 index 0000000..a37cc56 --- /dev/null +++ b/CONTENT/BT/VIDEO/BUILD/COMS.VGF @@ -0,0 +1,44 @@ +DIV-VIZ2 + +// file: coms.vgf +// generated: Thu Mar 20 07:59:44 1997 +// from: Wavefront Object File "coms.obj", and +// Material Library File "basev.mtl" +// by: obj2vgf (ver 0.29.01a) +// written: by Ken Olsen + +HEADER( + VERSION=02:05; + UNIT=m; + SCALE=1.0; + FILETYPE=GEOMETRY; +) +{ +} + +OBJECT( +) +{ + GEOGROUP + ( + F_MATERIAL="basev:shadow_mtl"; + ) + { + PMESH { + VERTEX_POOL { + { 1.1689, 0.4351, -1.9148} /* 0 */ + { 1.1689, 0.4351, -4.4108} /* 1 */ + {-0.9870, 0.4351, -4.4108} /* 2 */ + {-0.9870, 0.4351, -1.9148} /* 3 */ + { 1.8465, 0.4351, 4.9569} /* 4 */ + { 1.8465, 0.4351, -2.4078} /* 5 */ + {-1.6030, 0.4351, -2.4386} /* 6 */ + {-1.5106, 0.4351, 4.9569} /* 7 */ + } + CONNECTION_LIST (PCOUNT=4) { + {0, 1, 2, 3} /* */ + {4, 5, 6, 7} /* */ + } + } // End of pmesh + } // End of geogroup +} // End of object diff --git a/CONTENT/BT/VIDEO/BUILD/COOLS.BGF b/CONTENT/BT/VIDEO/BUILD/COOLS.BGF new file mode 100644 index 0000000..b666051 Binary files /dev/null and b/CONTENT/BT/VIDEO/BUILD/COOLS.BGF differ diff --git a/CONTENT/BT/VIDEO/BUILD/COOLS.VGF b/CONTENT/BT/VIDEO/BUILD/COOLS.VGF new file mode 100644 index 0000000..3dacd07 --- /dev/null +++ b/CONTENT/BT/VIDEO/BUILD/COOLS.VGF @@ -0,0 +1,39 @@ +DIV-VIZ2 + +// file: cools.vgf +// generated: Thu Mar 20 07:33:10 1997 +// from: Wavefront Object File "cools.obj", and +// Material Library File "basev.mtl" +// by: obj2vgf (ver 0.29.01a) +// written: by Ken Olsen + +HEADER( + VERSION=02:05; + UNIT=m; + SCALE=1.0; + FILETYPE=GEOMETRY; +) +{ +} + +OBJECT( +) +{ + GEOGROUP + ( + F_MATERIAL="basev:shadow_mtl"; + ) + { + PMESH { + VERTEX_POOL { + { 2.6987, 0.1000, 7.6439} /* 0 */ + { 2.6347, 0.1000, -6.6461} /* 1 */ + {-2.5532, 0.1000, -6.7742} /* 2 */ + {-2.4891, 0.1000, 7.5158} /* 3 */ + } + CONNECTION_LIST (PCOUNT=4) { + {0, 1, 2, 3} /* */ + } + } // End of pmesh + } // End of geogroup +} // End of object diff --git a/CONTENT/BT/VIDEO/BUILD/CTAR_LP.VGF b/CONTENT/BT/VIDEO/BUILD/CTAR_LP.VGF new file mode 100644 index 0000000..c66196c --- /dev/null +++ b/CONTENT/BT/VIDEO/BUILD/CTAR_LP.VGF @@ -0,0 +1,114 @@ +DIV-VIZ2 + +// file: ctarmac_lp.vgf +// generated: Fri Mar 21 18:17:05 1997 +// from: Wavefront Object File "ctarmac_lp.obj", and +// Material Library File "btfx.mtl" +// by: obj2vgf (ver 0.29.01a) +// written: by Ken Olsen + +HEADER( + VERSION=02:05; + UNIT=m; + SCALE=1.0; + FILETYPE=GEOMETRY; +) +{ +} + +OBJECT( +) +{ + GEOGROUP + ( + F_MATERIAL="btfx:britelite_mtl"; + ) + { + SPHERELIST { + { 920, 0.4, -652, 0 } + { 680, 0.4, -350, 0 } + { 340, 0.4, -440, 0 } + { 340, 0.4, -350, 0 } + { 596, 0.4, -652, 0 } + { 596, 0.4, -584, 0 } + { 969, 0.4, -412, 0 } + { 969, 0.4, -480, 0 } + { 458.5, 0.4, -464.5, 0 } + { 390.5, 0.4, -464.5, 0 } + { 660, 0.4, -14.9247, 0 } + { 660, 0.4, 14.9247, 0 } + { -680, 0.4, 14.9247, 0 } + { -680, 0.4, -14.9247, 0 } + { -540, 0.4, 14.9247, 0 } + { -540, 0.4, -14.9247, 0 } + { -340, 0.4, 14.9247, 0 } + { -340, 0.4, -14.9247, 0 } + { -180, 0.4, 14.9247, 0 } + { -180, 0.4, -14.9247, 0 } + { 540, 0.4, -14.9247, 0 } + { 540, 0.4, 14.9247, 0 } + { 360, 0.4, -14.9247, 0 } + { 360, 0.4, 14.9247, 0 } + { 200, 0.4, -14.9247, 0 } + { 200, 0.4, 14.9247, 0 } + { 36.0313, 0.4, -14.9247, 0 } + { 36.0313, 0.4, 14.9247, 0 } + } // End of spherelist + } // End of geogroup + GEOGROUP + ( + F_MATERIAL="btfx:liteblu_mtl"; + ) + { + SPHERELIST { + { 810.075, 0.4, -36.0313, 0 } + { 861.031, 0.4, 14.9247, 0 } + { 861.031, 0.4, -14.9247, 0 } + { 839.925, 0.4, -36.0313, 0 } + { 788.969, 0.4, -14.9247, 0 } + { 788.969, 0.4, 14.9247, 0 } + { 810.075, 0.4, 36.0313, 0 } + { 634.925, 0.4, -168.969, 0 } + { 605.075, 0.4, -241.031, 0 } + { 583.969, 0.4, -219.925, 0 } + { 583.969, 0.4, -190.075, 0 } + { 605.075, 0.4, -168.969, 0 } + { 656.031, 0.4, -190.075, 0 } + { 656.031, 0.4, -219.925, 0 } + { 634.925, 0.4, -241.031, 0 } + { 190.075, 0.4, 168.969, 0 } + { 219.925, 0.4, 241.031, 0 } + { 241.031, 0.4, 219.925, 0 } + { 241.031, 0.4, 190.075, 0 } + { 219.925, 0.4, 168.969, 0 } + { 190.075, 0.4, 241.031, 0 } + { 168.969, 0.4, 190.075, 0 } + { 168.969, 0.4, 219.925, 0 } + { -656.031, 0.4, 190.075, 0 } + { -583.969, 0.4, 219.925, 0 } + { -583.969, 0.4, 190.075, 0 } + { -605.075, 0.4, 168.969, 0 } + { -634.925, 0.4, 168.969, 0 } + { -656.031, 0.4, 219.925, 0 } + { -634.925, 0.4, 241.031, 0 } + { -605.075, 0.4, 241.031, 0 } + { -788.969, 0.4, 14.9247, 0 } + { -810.075, 0.4, 36.0313, 0 } + { -241.031, 0.4, -219.925, 0 } + { -168.969, 0.4, -190.075, 0 } + { -168.969, 0.4, -219.925, 0 } + { -190.075, 0.4, -241.031, 0 } + { -219.925, 0.4, -241.031, 0 } + { -190.075, 0.4, -168.969, 0 } + { -241.031, 0.4, -190.075, 0 } + { -219.925, 0.4, -168.969, 0 } + { -839.925, 0.4, -36.0313, 0 } + { -861.031, 0.4, -14.9247, 0 } + { -861.031, 0.4, 14.9247, 0 } + { -839.925, 0.4, 36.0313, 0 } + { -788.969, 0.4, -14.9247, 0 } + { -810.075, 0.4, -36.0313, 0 } + } // End of spherelist + } // End of geogroup +} // End of object + \ No newline at end of file diff --git a/CONTENT/BT/VIDEO/BUILD/DBASE.BMF b/CONTENT/BT/VIDEO/BUILD/DBASE.BMF new file mode 100644 index 0000000..09ea8eb Binary files /dev/null and b/CONTENT/BT/VIDEO/BUILD/DBASE.BMF differ diff --git a/CONTENT/BT/VIDEO/BUILD/DBASE.VMF b/CONTENT/BT/VIDEO/BUILD/DBASE.VMF new file mode 100644 index 0000000..d045592 --- /dev/null +++ b/CONTENT/BT/VIDEO/BUILD/DBASE.VMF @@ -0,0 +1,266 @@ +DIV-VIZ2 + +// file: dbase.vmf +// generated: Thu Mar 20 01:40:22 1997 +// from: Wavefront Object File "dummy", and +// Material Library File "dbase.mtl" +// by: mtl2vmf (ver 0.27.00) +// written: by Ken Olsen + +HEADER( + VERSION=02:05; + FILETYPE=MATERIAL; +) +{ +} + +TEXTURE( + NAME=gen3_tex; +) +{ + MAP {"gen"} + BITSLICE {2} // 4 bit mono C +} // End of texture + +TEXTURE( + NAME=saintb_tex; +) +{ + MAP {"saintb"} + MAGNIFY {BILINEAR} // 6 bit bilinear +} // End of texture + +TEXTURE( + NAME=gen5_tex; +) +{ + MAP {"gen"} + BITSLICE {4} // 4 bit mono E +} // End of texture + +TEXTURE( + NAME=bexp2_tex; +) +{ + MAP {"bexp"} + BITSLICE {1} // 4 bit mono B +} // End of texture + +TEXTURE( + NAME=bdam3_tex; +) +{ + MAP {"bdam"} + BITSLICE {2} // 4 bit mono C +} // End of texture + +TEXTURE( + NAME=bdam1_tex; +) +{ + MAP {"bdam"} + BITSLICE {0} // 4 bit mono A +} // End of texture + +TEXTURE( + NAME=bdet9_tex; +) +{ + MAP {"bdet"} + BITSLICE {8} // 16 bit color w/alpha (4,4,4,4) +} // End of texture + +TEXTURE( + NAME=gen6_tex; +) +{ + MAP {"gen"} + BITSLICE {5} // 4 bit mono F +} // End of texture + +TEXTURE( + NAME=bintA_tex; +) +{ + MAP {"bintA"} + MAGNIFY {BILINEAR} // 6 bit bilinear +} // End of texture + +TEXTURE( + NAME=bdet2_tex; +) +{ + MAP {"bdet"} + BITSLICE {1} // 4 bit mono B +} // End of texture + +RAMP(NAME=cdusty) +{ + DATA { 0.35, 0.28, 0.21, 0.99, 0.85, 0.8 } +} // End of ramp + +RAMP(NAME=darker) +{ + DATA { 0.27, 0.216, 0.167, 0.76, 0.635, 0.64 } +} // End of ramp + +MATERIAL( + NAME=baseb1gry_mtl; +) +{ + TEXTURE {"gen3_tex"} + AMBIENT {0.5239, 0.4928, 0.5239} + DIFFUSE {0.5239, 0.4928, 0.5239} + RAMP { cdusty } +} // End of material + +MATERIAL( + NAME=baseb4gry_mtl; +) +{ + TEXTURE {"saintb_tex"} + AMBIENT {0.7143, 0.674591, 0.7143} + DIFFUSE {0.7143, 0.656675, 0.7143} + RAMP { cdusty } +} // End of material + +MATERIAL( + NAME=baseb5gry_mtl; +) +{ + TEXTURE {"gen5_tex"} + AMBIENT {0.5239, 0.4928, 0.5239} + DIFFUSE {0.5239, 0.4928, 0.5239} + RAMP { cdusty } +} // End of material + +MATERIAL( + NAME=baseb6gry_mtl; +) +{ + TEXTURE {"bexp2_tex"} + AMBIENT {0.7143, 0.674591, 0.7143} + DIFFUSE {0.7143, 0.656675, 0.7143} + RAMP { cdusty } +} // End of material + +MATERIAL( + NAME=baseb7gry_mtl; +) +{ + TEXTURE {"bdam3_tex"} + AMBIENT {0.3239, 0.2928, 0.3239} + DIFFUSE {0.3239, 0.2928, 0.3239} + RAMP { cdusty } +} // End of material + +MATERIAL( + NAME=baseb9gry_mtl; +) +{ + TEXTURE {"gen3_tex"} + AMBIENT {0.5239, 0.4928, 0.5239} + DIFFUSE {0.5239, 0.4928, 0.5239} + RAMP { cdusty } +} // End of material + +MATERIAL( + NAME=baseb2gry_mtl; +) +{ + TEXTURE {"bdam1_tex"} + AMBIENT {0.4143, 0.356663, 0.4143} + DIFFUSE {0.4143, 0.332387, 0.4143} + RAMP { cdusty } +} // End of material + +MATERIAL( + NAME=baseb3gry_mtl; +) +{ + TEXTURE {"saintb_tex"} + AMBIENT {0.6143, 0.565464, 0.6143} + DIFFUSE {0.6143, 0.543846, 0.6143} + RAMP { cdusty } +} // End of material + +MATERIAL( + NAME=baseb8gry_mtl; +) +{ + TEXTURE {"bdet9_tex"} + AMBIENT {0.6959, 0.240569, 0.1959} + DIFFUSE {0.6959, 0.218238, 0.1959} + RAMP { cdusty } +} // End of material + +MATERIAL( + NAME=baseb10gry_mtl; +) +{ + TEXTURE {"saintb_tex"} + AMBIENT {0.8306, 0.804801, 0.8306} + DIFFUSE {0.8306, 0.792939, 0.8306} + RAMP { cdusty } +} // End of material + +MATERIAL( + NAME=baseb11gry_mtl; +) +{ + TEXTURE {"gen6_tex"} + AMBIENT {0.9143, 0.900479, 0.9143} + DIFFUSE {0.9143, 0.894048, 0.9143} + RAMP { cdusty } +} // End of material + +MATERIAL( + NAME=baseb12red_mtl; +) +{ + TEXTURE {"bintA_tex"} + AMBIENT {0.6653, 0.232882, 0.1733} + DIFFUSE {0.6653, 0.123629, 0.1733} + RAMP { cdusty } +} // End of material + +MATERIAL( + NAME=baseb13ylw_mtl; +) +{ + TEXTURE {"bdet2_tex"} + AMBIENT {0.772, 0.550094, 0.1} + DIFFUSE {0.772, 0.528067, 0.1} + RAMP { cdusty } +} // End of material + +MATERIAL( + NAME=internalwalls_mtl; +) +{ + TEXTURE {"gen5_tex"} + AMBIENT {0.5388, 0.485032, 0.5388} + DIFFUSE {0.5388, 0.46162, 0.5388} + RAMP { cdusty } +} // End of material + +MATERIAL( + NAME=tarmac_mtl; +) +{ + TEXTURE {"bintA_tex"} + AMBIENT {0.4367, 0.23203, 0.2246} + DIFFUSE {0.4367, 0.209973, 0.2246} + RAMP { cdusty } +} // End of material + +MATERIAL( + NAME=sidewalk_mtl; +) +{ + TEXTURE {"bintA_tex"} + AMBIENT {0.5061, 0.450772, 0.5061} + DIFFUSE {0.5061, 0.42687, 0.5061} + RAMP { cdusty } +} // End of material + \ No newline at end of file diff --git a/CONTENT/BT/VIDEO/BUILD/DCLOUDS.BGF b/CONTENT/BT/VIDEO/BUILD/DCLOUDS.BGF new file mode 100644 index 0000000..7726609 Binary files /dev/null and b/CONTENT/BT/VIDEO/BUILD/DCLOUDS.BGF differ diff --git a/CONTENT/BT/VIDEO/BUILD/DISH.BGF b/CONTENT/BT/VIDEO/BUILD/DISH.BGF new file mode 100644 index 0000000..24860a7 Binary files /dev/null and b/CONTENT/BT/VIDEO/BUILD/DISH.BGF differ diff --git a/CONTENT/BT/VIDEO/BUILD/DISH.BMF b/CONTENT/BT/VIDEO/BUILD/DISH.BMF new file mode 100644 index 0000000..73e8ac7 Binary files /dev/null and b/CONTENT/BT/VIDEO/BUILD/DISH.BMF differ diff --git a/CONTENT/BT/VIDEO/BUILD/DISH_LP.VGF b/CONTENT/BT/VIDEO/BUILD/DISH_LP.VGF new file mode 100644 index 0000000..41808a7 --- /dev/null +++ b/CONTENT/BT/VIDEO/BUILD/DISH_LP.VGF @@ -0,0 +1,36 @@ +DIV-VIZ2 + +// file: dish_lp.vgf +// generated: Fri Mar 21 18:17:07 1997 +// from: Wavefront Object File "dish_lp.obj", and +// Material Library File "btfx.mtl" +// by: obj2vgf (ver 0.29.01a) +// written: by Ken Olsen + +HEADER( + VERSION=02:05; + UNIT=m; + SCALE=1.0; + FILETYPE=GEOMETRY; +) +{ +} + +OBJECT( +) +{ + GEOGROUP + ( + F_MATERIAL="btfx:litered_mtl"; + ) + { + SPHERELIST { + { 0, 0.769873, 4.1, 0 } + { 5, 5.1, 1.6, 0 } + { -5, 5.1, 1.6, 0 } + { 0, 9.43013, -0.9, 0 } + { -0.125, 7.14575, 4.89335, 0 } + } // End of spherelist + } // End of geogroup +} // End of object + \ No newline at end of file diff --git a/CONTENT/BT/VIDEO/BUILD/DIVISION.SAV/APCS.BGF b/CONTENT/BT/VIDEO/BUILD/DIVISION.SAV/APCS.BGF new file mode 100644 index 0000000..c264aae Binary files /dev/null and b/CONTENT/BT/VIDEO/BUILD/DIVISION.SAV/APCS.BGF differ diff --git a/CONTENT/BT/VIDEO/BUILD/DIVISION.SAV/ARMRS.BGF b/CONTENT/BT/VIDEO/BUILD/DIVISION.SAV/ARMRS.BGF new file mode 100644 index 0000000..36f7619 Binary files /dev/null and b/CONTENT/BT/VIDEO/BUILD/DIVISION.SAV/ARMRS.BGF differ diff --git a/CONTENT/BT/VIDEO/BUILD/DIVISION.SAV/BASEV.BMF b/CONTENT/BT/VIDEO/BUILD/DIVISION.SAV/BASEV.BMF new file mode 100644 index 0000000..62f1447 Binary files /dev/null and b/CONTENT/BT/VIDEO/BUILD/DIVISION.SAV/BASEV.BMF differ diff --git a/CONTENT/BT/VIDEO/BUILD/DIVISION.SAV/BTRAVWIN.BMF b/CONTENT/BT/VIDEO/BUILD/DIVISION.SAV/BTRAVWIN.BMF new file mode 100644 index 0000000..cd16b61 Binary files /dev/null and b/CONTENT/BT/VIDEO/BUILD/DIVISION.SAV/BTRAVWIN.BMF differ diff --git a/CONTENT/BT/VIDEO/BUILD/DIVISION.SAV/BULLS.BGF b/CONTENT/BT/VIDEO/BUILD/DIVISION.SAV/BULLS.BGF new file mode 100644 index 0000000..9b9eaed Binary files /dev/null and b/CONTENT/BT/VIDEO/BUILD/DIVISION.SAV/BULLS.BGF differ diff --git a/CONTENT/BT/VIDEO/BUILD/DIVISION.SAV/CALIOPE.BMF b/CONTENT/BT/VIDEO/BUILD/DIVISION.SAV/CALIOPE.BMF new file mode 100644 index 0000000..658e625 Binary files /dev/null and b/CONTENT/BT/VIDEO/BUILD/DIVISION.SAV/CALIOPE.BMF differ diff --git a/CONTENT/BT/VIDEO/BUILD/DIVISION.SAV/COMS.BGF b/CONTENT/BT/VIDEO/BUILD/DIVISION.SAV/COMS.BGF new file mode 100644 index 0000000..7030d85 Binary files /dev/null and b/CONTENT/BT/VIDEO/BUILD/DIVISION.SAV/COMS.BGF differ diff --git a/CONTENT/BT/VIDEO/BUILD/DIVISION.SAV/COOLS.BGF b/CONTENT/BT/VIDEO/BUILD/DIVISION.SAV/COOLS.BGF new file mode 100644 index 0000000..6c5b0b2 Binary files /dev/null and b/CONTENT/BT/VIDEO/BUILD/DIVISION.SAV/COOLS.BGF differ diff --git a/CONTENT/BT/VIDEO/BUILD/DIVISION.SAV/DCLOUDS.BGF b/CONTENT/BT/VIDEO/BUILD/DIVISION.SAV/DCLOUDS.BGF new file mode 100644 index 0000000..b3d289e Binary files /dev/null and b/CONTENT/BT/VIDEO/BUILD/DIVISION.SAV/DCLOUDS.BGF differ diff --git a/CONTENT/BT/VIDEO/BUILD/DIVISION.SAV/DISH.BGF b/CONTENT/BT/VIDEO/BUILD/DIVISION.SAV/DISH.BGF new file mode 100644 index 0000000..c82a94b Binary files /dev/null and b/CONTENT/BT/VIDEO/BUILD/DIVISION.SAV/DISH.BGF differ diff --git a/CONTENT/BT/VIDEO/BUILD/DIVISION.SAV/DOZERS.BGF b/CONTENT/BT/VIDEO/BUILD/DIVISION.SAV/DOZERS.BGF new file mode 100644 index 0000000..36ee533 Binary files /dev/null and b/CONTENT/BT/VIDEO/BUILD/DIVISION.SAV/DOZERS.BGF differ diff --git a/CONTENT/BT/VIDEO/BUILD/DIVISION.SAV/GRASS.BMF b/CONTENT/BT/VIDEO/BUILD/DIVISION.SAV/GRASS.BMF new file mode 100644 index 0000000..1fc3828 Binary files /dev/null and b/CONTENT/BT/VIDEO/BUILD/DIVISION.SAV/GRASS.BMF differ diff --git a/CONTENT/BT/VIDEO/BUILD/DIVISION.SAV/HARASS.BGF b/CONTENT/BT/VIDEO/BUILD/DIVISION.SAV/HARASS.BGF new file mode 100644 index 0000000..d6f3a3c Binary files /dev/null and b/CONTENT/BT/VIDEO/BUILD/DIVISION.SAV/HARASS.BGF differ diff --git a/CONTENT/BT/VIDEO/BUILD/DIVISION.SAV/HUMMS.BGF b/CONTENT/BT/VIDEO/BUILD/DIVISION.SAV/HUMMS.BGF new file mode 100644 index 0000000..5061928 Binary files /dev/null and b/CONTENT/BT/VIDEO/BUILD/DIVISION.SAV/HUMMS.BGF differ diff --git a/CONTENT/BT/VIDEO/BUILD/DIVISION.SAV/LRMS.BGF b/CONTENT/BT/VIDEO/BUILD/DIVISION.SAV/LRMS.BGF new file mode 100644 index 0000000..0689e60 Binary files /dev/null and b/CONTENT/BT/VIDEO/BUILD/DIVISION.SAV/LRMS.BGF differ diff --git a/CONTENT/BT/VIDEO/BUILD/DIVISION.SAV/MECHMOVS.BGF b/CONTENT/BT/VIDEO/BUILD/DIVISION.SAV/MECHMOVS.BGF new file mode 100644 index 0000000..8feb041 Binary files /dev/null and b/CONTENT/BT/VIDEO/BUILD/DIVISION.SAV/MECHMOVS.BGF differ diff --git a/CONTENT/BT/VIDEO/BUILD/DIVISION.SAV/RAVFLOOR.BGF b/CONTENT/BT/VIDEO/BUILD/DIVISION.SAV/RAVFLOOR.BGF new file mode 100644 index 0000000..1575cdc Binary files /dev/null and b/CONTENT/BT/VIDEO/BUILD/DIVISION.SAV/RAVFLOOR.BGF differ diff --git a/CONTENT/BT/VIDEO/BUILD/DIVISION.SAV/RAVINES.BMF b/CONTENT/BT/VIDEO/BUILD/DIVISION.SAV/RAVINES.BMF new file mode 100644 index 0000000..7dfa566 Binary files /dev/null and b/CONTENT/BT/VIDEO/BUILD/DIVISION.SAV/RAVINES.BMF differ diff --git a/CONTENT/BT/VIDEO/BUILD/DIVISION.SAV/ROMMELS.BGF b/CONTENT/BT/VIDEO/BUILD/DIVISION.SAV/ROMMELS.BGF new file mode 100644 index 0000000..2d1ba98 Binary files /dev/null and b/CONTENT/BT/VIDEO/BUILD/DIVISION.SAV/ROMMELS.BGF differ diff --git a/CONTENT/BT/VIDEO/BUILD/DIVISION.SAV/SEMIRIGS.BGF b/CONTENT/BT/VIDEO/BUILD/DIVISION.SAV/SEMIRIGS.BGF new file mode 100644 index 0000000..cce9b04 Binary files /dev/null and b/CONTENT/BT/VIDEO/BUILD/DIVISION.SAV/SEMIRIGS.BGF differ diff --git a/CONTENT/BT/VIDEO/BUILD/DIVISION.SAV/SEMIS.BGF b/CONTENT/BT/VIDEO/BUILD/DIVISION.SAV/SEMIS.BGF new file mode 100644 index 0000000..d5cd779 Binary files /dev/null and b/CONTENT/BT/VIDEO/BUILD/DIVISION.SAV/SEMIS.BGF differ diff --git a/CONTENT/BT/VIDEO/BUILD/DIVISION.SAV/SRMS.BGF b/CONTENT/BT/VIDEO/BUILD/DIVISION.SAV/SRMS.BGF new file mode 100644 index 0000000..36a833c Binary files /dev/null and b/CONTENT/BT/VIDEO/BUILD/DIVISION.SAV/SRMS.BGF differ diff --git a/CONTENT/BT/VIDEO/BUILD/DIVISION.SAV/STRIKERS.BGF b/CONTENT/BT/VIDEO/BUILD/DIVISION.SAV/STRIKERS.BGF new file mode 100644 index 0000000..e87605f Binary files /dev/null and b/CONTENT/BT/VIDEO/BUILD/DIVISION.SAV/STRIKERS.BGF differ diff --git a/CONTENT/BT/VIDEO/BUILD/DIVISION.SAV/SWIFTS.BGF b/CONTENT/BT/VIDEO/BUILD/DIVISION.SAV/SWIFTS.BGF new file mode 100644 index 0000000..7b1f772 Binary files /dev/null and b/CONTENT/BT/VIDEO/BUILD/DIVISION.SAV/SWIFTS.BGF differ diff --git a/CONTENT/BT/VIDEO/BUILD/DOZERS.BGF b/CONTENT/BT/VIDEO/BUILD/DOZERS.BGF new file mode 100644 index 0000000..23e636f Binary files /dev/null and b/CONTENT/BT/VIDEO/BUILD/DOZERS.BGF differ diff --git a/CONTENT/BT/VIDEO/BUILD/DOZERS.VGF b/CONTENT/BT/VIDEO/BUILD/DOZERS.VGF new file mode 100644 index 0000000..0516e70 --- /dev/null +++ b/CONTENT/BT/VIDEO/BUILD/DOZERS.VGF @@ -0,0 +1,44 @@ +DIV-VIZ2 + +// file: dozers.vgf +// generated: Thu Mar 20 07:33:10 1997 +// from: Wavefront Object File "dozers.obj", and +// Material Library File "basev.mtl" +// by: obj2vgf (ver 0.29.01a) +// written: by Ken Olsen + +HEADER( + VERSION=02:05; + UNIT=m; + SCALE=1.0; + FILETYPE=GEOMETRY; +) +{ +} + +OBJECT( +) +{ + GEOGROUP + ( + F_MATERIAL="basev:shadow_mtl"; + ) + { + PMESH { + VERTEX_POOL { + {-0.1257, 0.1000, -3.0759} /* 0 */ + {-0.0921, 0.1000, -4.6559} /* 1 */ + {-0.5624, 0.1000, -4.6559} /* 2 */ + {-0.6296, 0.1000, -3.1096} /* 3 */ + { 2.1255, 0.1000, 4.7566} /* 4 */ + { 2.1255, 0.1000, -3.6138} /* 5 */ + {-2.1416, 0.1000, -3.6810} /* 6 */ + {-2.2088, 0.1000, 4.8238} /* 7 */ + } + CONNECTION_LIST (PCOUNT=4) { + {0, 1, 2, 3} /* */ + {4, 5, 6, 7} /* */ + } + } // End of pmesh + } // End of geogroup +} // End of object diff --git a/CONTENT/BT/VIDEO/BUILD/DTAR_LP.VGF b/CONTENT/BT/VIDEO/BUILD/DTAR_LP.VGF new file mode 100644 index 0000000..8edb241 --- /dev/null +++ b/CONTENT/BT/VIDEO/BUILD/DTAR_LP.VGF @@ -0,0 +1,93 @@ +DIV-VIZ2 + +// file: dtarmac_lp.vgf +// generated: Fri Mar 21 18:17:08 1997 +// from: Wavefront Object File "dtarmac_lp.obj", and +// Material Library File "btfx.mtl" +// by: obj2vgf (ver 0.29.01a) +// written: by Ken Olsen + +HEADER( + VERSION=02:05; + UNIT=m; + SCALE=1.0; + FILETYPE=GEOMETRY; +) +{ +} + +OBJECT( +) +{ + GEOGROUP + ( + F_MATERIAL="btfx:britelite_mtl"; + ) + { + SPHERELIST { + { 760, 0.6, -882, 0 } + { 520, 0.6, -580, 0 } + { 180, 0.6, -670, 0 } + { 180, 0.6, -580, 0 } + { 436, 0.6, -882, 0 } + { 436, 0.6, -814, 0 } + { 809, 0.6, -642, 0 } + { 809, 0.6, -710, 0 } + { 298.5, 0.6, -694.5, 0 } + { 230.5, 0.6, -694.5, 0 } + } // End of spherelist + } // End of geogroup + GEOGROUP + ( + F_MATERIAL="btfx:litered_mtl"; + ) + { + SPHERELIST { + { 500.468, 0.3, -514.996, 0 } + { 521.565, 0.3, -496.995, 0 } + { 668.075, 0.3, -643.969, 0 } + { 629.969, 0.3, -644.075, 0 } + { 370.967, 0.3, -385.916, 0 } + { 388.696, 0.3, -363.705, 0 } + { 190.378, 0.3, -205.915, 0 } + { 209.82, 0.3, -184.264, 0 } + { 36.0313, 0.3, -9.92465, 0 } + { 14.9247, 0.3, -31.0313, 0 } + { -463.969, 0.3, -80.0753, 0 } + { -536.031, 0.3, -109.925, 0 } + { -514.925, 0.3, -131.031, 0 } + { -136.031, 0.3, 290.075, 0 } + { -568.969, 0.3, 214.925, 0 } + { -590.075, 0.3, 236.031, 0 } + { 58.9687, 0.3, -285.075, 0 } + { -290.075, 0.3, 63.9687, 0 } + { -268.969, 0.3, 85.0753, 0 } + { 80.0753, 0.3, -263.969, 0 } + { -319.925, 0.3, 63.9687, 0 } + { -341.031, 0.3, 114.925, 0 } + { -690.075, 0.3, 463.969, 0 } + { -668.969, 0.3, 485.075, 0 } + { -319.925, 0.3, 136.031, 0 } + { -341.031, 0.3, 85.0753, 0 } + { 80.0753, 0.3, 463.969, 0 } + { 58.9687, 0.3, 485.075, 0 } + { -241.031, 0.3, 585.075, 0 } + { -219.925, 0.3, 563.969, 0 } + { -363.969, 0.3, 419.925, 0 } + { -385.075, 0.3, 441.031, 0 } + { -436.031, 0.3, 390.075, 0 } + { -485.075, 0.3, -58.9687, 0 } + { -591.117, 0.3, -207.224, 0 } + { -611.919, 0.3, -185.813, 0 } + { -690.075, 0.3, -263.969, 0 } + { -668.969, 0.3, -285.075, 0 } + { -114.925, 0.3, 268.969, 0 } + { -191.117, 0.3, 192.776, 0 } + { -211.919, 0.3, 214.187, 0 } + { -763.969, 0.3, 19.9247, 0 } + { -785.075, 0.3, 41.0313, 0 } + { -414.925, 0.3, 368.969, 0 } + } // End of spherelist + } // End of geogroup +} // End of object + \ No newline at end of file diff --git a/CONTENT/BT/VIDEO/BUILD/EDITBACK/BLD08_LP.VGF b/CONTENT/BT/VIDEO/BUILD/EDITBACK/BLD08_LP.VGF new file mode 100644 index 0000000..21ed75d --- /dev/null +++ b/CONTENT/BT/VIDEO/BUILD/EDITBACK/BLD08_LP.VGF @@ -0,0 +1,74 @@ +DIV-VIZ2 + +// file: bld08_lp.vgf +// generated: Fri Mar 21 18:17:00 1997 +// from: Wavefront Object File "bld08_lp.obj", and +// Material Library File "btfx.mtl" +// by: obj2vgf (ver 0.29.01a) +// written: by Ken Olsen + +HEADER( + VERSION=02:05; + UNIT=m; + SCALE=1.0; + FILETYPE=GEOMETRY; +) +{ +} + +OBJECT( +) +{ + GEOGROUP + ( + F_MATERIAL="btfx:britered_mtl"; + ) + { + SPHERELIST { + { -39.9902, 24.1508, -27.952, 0 } + { -57.8198, 24.1508, -27.952, 0 } + { -14.5801, 18.4199, -19.182, 0 } + { -41.7798, 18.4199, -19.182, 0 } + { 4.3999, 18.4199, -19.182, 0 } + { 77.7798, 18.4199, -19.182, 0 } + { 50.5801, 18.4199, -19.182, 0 } + { -57.8198, 24.1508, -27.952, 0 } + { -39.9902, 24.1508, -27.952, 0 } + { -86.9199, 18.4199, -18.6122, 0 } + { -41.7798, 18.4199, -40.182, 0 } + { -41.7798, 18.4199, -19.182, 0 } + { -14.5801, 18.4199, -40.182, 0 } + { -14.5801, 18.4199, -19.182, 0 } + { 4.3999, 18.4199, -40.182, 0 } + { 4.3999, 18.4199, -19.182, 0 } + { 31.6001, 18.4199, -40.182, 0 } + { 50.5801, 18.4199, -40.182, 0 } + { 77.7798, 18.4199, -40.182, 0 } + { 50.5801, 18.4199, -19.182, 0 } + { 77.7798, 18.4199, -19.182, 0 } + { -86.9199, 18.4199, 39.6481, 0 } + } // End of spherelist + } // End of geogroup + GEOGROUP + ( + F_MATERIAL="btfx:briteblu_mtl"; + ) + { + SPHERELIST { + { -83.3198, 14.2781, -18.7122, 0 } + { -63.3198, 14.2781, -18.7122, 0 } + { -38.1802, 14.2781, -40.282, 0 } + { -18.1802, 14.2781, -40.282, 0 } + { 8, 14.2781, -40.282, 0 } + { 28, 14.2781, -40.282, 0 } + { 54.1802, 14.2781, -40.282, 0 } + { 74.1802, 14.2781, -40.282, 0 } + { 71.31, 0.1, -50.18, 0 } + { 57.11, 0.1, -50.18, 0 } + { 25.11, 0.1, -50.18, 0 } + { 10.91, 0.1, -50.18, 0 } + { -21.09, 0.1, -50.18, 0 } + { -35.29, 0.1, -50.18, 0 } + } // End of spherelist + } // End of geogroup +} // End of object diff --git a/CONTENT/BT/VIDEO/BUILD/EDITBACK/BTRAVWIN.VMF b/CONTENT/BT/VIDEO/BUILD/EDITBACK/BTRAVWIN.VMF new file mode 100644 index 0000000..4c00f7a --- /dev/null +++ b/CONTENT/BT/VIDEO/BUILD/EDITBACK/BTRAVWIN.VMF @@ -0,0 +1,154 @@ +DIV-VIZ2 + +// file: btravwin.vmf +// generated: Tue Mar 4 07:56:49 1997 +// from: Wavefront Object File "dummy", and +// Material Library File "btravwin.mtl" +// by: mtl2vmf (ver 0.27.00) +// written: by Ken Olsen + +HEADER( + VERSION=02:05; + FILETYPE=MATERIAL; +) +{ +} + +TEXTURE( + NAME=bintA_tex; +) +{ + MAP {"bintA"} + MAGNIFY {BILINEAR} // 6 bit bilinear +} // End of texture + +TEXTURE( + NAME=bmap1_tex; +) +{ + MAP {"bmap"} + BITSLICE {0} // 4 bit mono A +} // End of texture + +TEXTURE( + NAME=bmap2_tex; +) +{ + MAP {"bmap"} + BITSLICE {1} // 4 bit mono B +} // End of texture + +TEXTURE( + NAME=bmap3_tex; +) +{ + MAP {"bmap"} + BITSLICE {2} // 4 bit mono C +} // End of texture + +TEXTURE( + NAME=bmap4_tex; +) +{ + MAP {"bmap"} + BITSLICE {3} // 4 bit mono D +} // End of texture + +TEXTURE( + NAME=bdet1_tex; +) +{ + MAP {"bdet"} + BITSLICE {0} // 4 bit mono A +} // End of texture + +MATERIAL( + NAME=humans_mtl; +) +{ + TEXTURE {"bintA_tex"} + AMBIENT {0.4245, 0.284295, 0.3413} + DIFFUSE {0.4245, 0.260868, 0.3413} +} // End of material + +MATERIAL( + NAME=name1_mtl; +) +{ + TEXTURE {"bmap1_tex"} + AMBIENT {0, 0.594108, 0.0523} + DIFFUSE {0, 0.573328, 0.0523} +} // End of material + +MATERIAL( + NAME=name2_mtl; +) +{ + TEXTURE {"bmap1_tex"} + AMBIENT {0.6408, 0, 0} + DIFFUSE {0.6408, 0, 0} +} // End of material + +MATERIAL( + NAME=name3_mtl; +) +{ + TEXTURE {"bmap2_tex"} + AMBIENT {0.6408, 0, 0} + DIFFUSE {0.6408, 0, 0} +} // End of material + +MATERIAL( + NAME=name4_mtl; +) +{ + TEXTURE {"bmap2_tex"} + AMBIENT {0.6408, 0, 0} + DIFFUSE {0.6408, 0, 0} +} // End of material + +MATERIAL( + NAME=name5_mtl; +) +{ + TEXTURE {"bmap3_tex"} + AMBIENT {0.6408, 0, 0} + DIFFUSE {0.6408, 0, 0} +} // End of material + +MATERIAL( + NAME=name6_mtl; +) +{ + TEXTURE {"bmap3_tex"} + AMBIENT {0.6408, 0, 0} + DIFFUSE {0.6408, 0, 0} +} // End of material + +MATERIAL( + NAME=name7_mtl; +) +{ + TEXTURE {"bmap4_tex"} + AMBIENT {0.6408, 0, 0} + DIFFUSE {0.6408, 0, 0} +} // End of material + +MATERIAL( + NAME=name8_mtl; +) +{ + TEXTURE {"bmap4_tex"} + AMBIENT {0.6408, 0, 0} + DIFFUSE {0.6408, 0, 0} +} // End of material + +MATERIAL( + NAME=standbrace_mtl; +) +{ + TEXTURE {"bdet1_tex"} + AMBIENT {0.1994, 0.42483, 0.5551} + DIFFUSE {0.1994, 0.400677, 0.5551} +} // End of material + \ No newline at end of file diff --git a/CONTENT/BT/VIDEO/BUILD/EDITBACK/BUILDBAS.BAT b/CONTENT/BT/VIDEO/BUILD/EDITBACK/BUILDBAS.BAT new file mode 100644 index 0000000..611b3ba --- /dev/null +++ b/CONTENT/BT/VIDEO/BUILD/EDITBACK/BUILDBAS.BAT @@ -0,0 +1,18 @@ +@echo off +rem +rem buildlgo.bat +rem +echo. +echo PROCESSING TEXTURE FILES... +echo. +:bitslice +img2vtx.exe -b -o lgo.bsl -s 128,64 -m0 lgo1.tga -m1 lgo2.tga -m2 lgo3.tga -m3 lgo4.tga -m4 lgo5.tga -m5 lgo6.tga +if errorlevel 1 goto error +echo texture files processed. +goto end +:error +echo. +echo PROCESSING FAILED - SEE ABOVE +:end + + \ No newline at end of file diff --git a/CONTENT/BT/VIDEO/BUILD/EDITBACK/BUILDGEN.BAT b/CONTENT/BT/VIDEO/BUILD/EDITBACK/BUILDGEN.BAT new file mode 100644 index 0000000..611b3ba --- /dev/null +++ b/CONTENT/BT/VIDEO/BUILD/EDITBACK/BUILDGEN.BAT @@ -0,0 +1,18 @@ +@echo off +rem +rem buildlgo.bat +rem +echo. +echo PROCESSING TEXTURE FILES... +echo. +:bitslice +img2vtx.exe -b -o lgo.bsl -s 128,64 -m0 lgo1.tga -m1 lgo2.tga -m2 lgo3.tga -m3 lgo4.tga -m4 lgo5.tga -m5 lgo6.tga +if errorlevel 1 goto error +echo texture files processed. +goto end +:error +echo. +echo PROCESSING FAILED - SEE ABOVE +:end + + \ No newline at end of file diff --git a/CONTENT/BT/VIDEO/BUILD/EDITBACK/BUILDLGO.BAT b/CONTENT/BT/VIDEO/BUILD/EDITBACK/BUILDLGO.BAT new file mode 100644 index 0000000..3a21a67 --- /dev/null +++ b/CONTENT/BT/VIDEO/BUILD/EDITBACK/BUILDLGO.BAT @@ -0,0 +1,19 @@ +@echo off +rem +rem buildtex.bat +rem +echo. +echo PROCESSING TEXTURE FILES... +echo. +:bitslice +img2vtx.exe -b -o basev.bsl -s 128,64 -m0 basev1.tga -m1 basev2.tga -m2 basev3.tga -m3 basev4.tga -m4 basev5.tga -m5 basev6.tga +if errorlevel 1 goto error +img2vtx.exe -b -o bexp.bsl -s 128,128 -m0 bexp1.tga -m1 bexp2.tga -m8 bexp9.tga +if errorlevel 1 goto error +echo texture files processed. +goto end +:error +echo. +echo PROCESSING FAILED - SEE ABOVE +:end + diff --git a/CONTENT/BT/VIDEO/BUILD/EDITBACK/BUILDTEX.BAT b/CONTENT/BT/VIDEO/BUILD/EDITBACK/BUILDTEX.BAT new file mode 100644 index 0000000..f04ac2b --- /dev/null +++ b/CONTENT/BT/VIDEO/BUILD/EDITBACK/BUILDTEX.BAT @@ -0,0 +1,20 @@ +@echo off +rem +rem buildtex.bat +rem +echo. +echo PROCESSING TEXTURE FILES... +echo. +:bitslice +img2vtx.exe -b -o basev.bsl -s 128,64 -m0 basev1.tga -m1 basev2.tga -m2 basev3.tga -m3 basev4.tga -m4 basev5.tga -m5 basev6.tga +if errorlevel 1 goto error +img2vtx.exe -b -o bexp.bsl -s 128,128 -m0 bexp1.tga -m1 bexp2.tga -m8 bexp99.tga +if errorlevel 1 goto error +echo texture files processed. +goto end +:error +echo. +echo PROCESSING FAILED - SEE ABOVE +:end + + \ No newline at end of file diff --git a/CONTENT/BT/VIDEO/BUILD/EDITBACK/CALP_LP.VGF b/CONTENT/BT/VIDEO/BUILD/EDITBACK/CALP_LP.VGF new file mode 100644 index 0000000..0cc7c0e --- /dev/null +++ b/CONTENT/BT/VIDEO/BUILD/EDITBACK/CALP_LP.VGF @@ -0,0 +1,48 @@ +DIV-VIZ2 + +// file: calp_lp.vgf +// generated: Fri Mar 21 18:17:04 1997 +// from: Wavefront Object File "calp_lp.obj", and +// Material Library File "btfx.mtl" +// by: obj2vgf (ver 0.29.01a) +// written: by Ken Olsen + +HEADER( + VERSION=02:05; + UNIT=m; + SCALE=1.0; + FILETYPE=GEOMETRY; +) +{ +} + +OBJECT( +) +{ + GEOGROUP + ( + F_MATERIAL="btfx:britered_mtl"; + ) + { + SPHERELIST { + { -10.2, 17.8765, 8.1149, 0 } + { -10.2, 20.267, -9.29333, 0 } + { 10.2, 20.267, -9.29333, 0 } + { 10.2, 17.8765, 8.1149, 0 } + { -10.2, 20.2, -9.3, 0 } + { 10.2, 20.2, -9.3, 0 } + } // End of spherelist + } // End of geogroup + GEOGROUP + ( + F_MATERIAL="btfx:briteblu_mtl"; + ) + { + SPHERELIST { + { 7.65, 8.1, -1.4, 0 } + { 7.65, 10.1, -1.4, 0 } + { 7.65, 10.1, -0.4, 0 } + { 7.65, 8.1, -0.4, 0 } + } // End of spherelist + } // End of geogroup +} // End of object diff --git a/CONTENT/BT/VIDEO/BUILD/EDITBACK/CTAR_LP.VGF b/CONTENT/BT/VIDEO/BUILD/EDITBACK/CTAR_LP.VGF new file mode 100644 index 0000000..13955ac --- /dev/null +++ b/CONTENT/BT/VIDEO/BUILD/EDITBACK/CTAR_LP.VGF @@ -0,0 +1,113 @@ +DIV-VIZ2 + +// file: ctarmac_lp.vgf +// generated: Fri Mar 21 18:17:05 1997 +// from: Wavefront Object File "ctarmac_lp.obj", and +// Material Library File "btfx.mtl" +// by: obj2vgf (ver 0.29.01a) +// written: by Ken Olsen + +HEADER( + VERSION=02:05; + UNIT=m; + SCALE=1.0; + FILETYPE=GEOMETRY; +) +{ +} + +OBJECT( +) +{ + GEOGROUP + ( + F_MATERIAL="btfx:britelite_mtl"; + ) + { + SPHERELIST { + { 920, 0.4, -652, 0 } + { 680, 0.4, -350, 0 } + { 340, 0.4, -440, 0 } + { 340, 0.4, -350, 0 } + { 596, 0.4, -652, 0 } + { 596, 0.4, -584, 0 } + { 969, 0.4, -412, 0 } + { 969, 0.4, -480, 0 } + { 458.5, 0.4, -464.5, 0 } + { 390.5, 0.4, -464.5, 0 } + { 660, 0.4, -14.9247, 0 } + { 660, 0.4, 14.9247, 0 } + { -680, 0.4, 14.9247, 0 } + { -680, 0.4, -14.9247, 0 } + { -540, 0.4, 14.9247, 0 } + { -540, 0.4, -14.9247, 0 } + { -340, 0.4, 14.9247, 0 } + { -340, 0.4, -14.9247, 0 } + { -180, 0.4, 14.9247, 0 } + { -180, 0.4, -14.9247, 0 } + { 540, 0.4, -14.9247, 0 } + { 540, 0.4, 14.9247, 0 } + { 360, 0.4, -14.9247, 0 } + { 360, 0.4, 14.9247, 0 } + { 200, 0.4, -14.9247, 0 } + { 200, 0.4, 14.9247, 0 } + { 36.0313, 0.4, -14.9247, 0 } + { 36.0313, 0.4, 14.9247, 0 } + } // End of spherelist + } // End of geogroup + GEOGROUP + ( + F_MATERIAL="btfx:briteblu_mtl"; + ) + { + SPHERELIST { + { 810.075, 0.4, -36.0313, 0 } + { 861.031, 0.4, 14.9247, 0 } + { 861.031, 0.4, -14.9247, 0 } + { 839.925, 0.4, -36.0313, 0 } + { 788.969, 0.4, -14.9247, 0 } + { 788.969, 0.4, 14.9247, 0 } + { 810.075, 0.4, 36.0313, 0 } + { 634.925, 0.4, -168.969, 0 } + { 605.075, 0.4, -241.031, 0 } + { 583.969, 0.4, -219.925, 0 } + { 583.969, 0.4, -190.075, 0 } + { 605.075, 0.4, -168.969, 0 } + { 656.031, 0.4, -190.075, 0 } + { 656.031, 0.4, -219.925, 0 } + { 634.925, 0.4, -241.031, 0 } + { 190.075, 0.4, 168.969, 0 } + { 219.925, 0.4, 241.031, 0 } + { 241.031, 0.4, 219.925, 0 } + { 241.031, 0.4, 190.075, 0 } + { 219.925, 0.4, 168.969, 0 } + { 190.075, 0.4, 241.031, 0 } + { 168.969, 0.4, 190.075, 0 } + { 168.969, 0.4, 219.925, 0 } + { -656.031, 0.4, 190.075, 0 } + { -583.969, 0.4, 219.925, 0 } + { -583.969, 0.4, 190.075, 0 } + { -605.075, 0.4, 168.969, 0 } + { -634.925, 0.4, 168.969, 0 } + { -656.031, 0.4, 219.925, 0 } + { -634.925, 0.4, 241.031, 0 } + { -605.075, 0.4, 241.031, 0 } + { -788.969, 0.4, 14.9247, 0 } + { -810.075, 0.4, 36.0313, 0 } + { -241.031, 0.4, -219.925, 0 } + { -168.969, 0.4, -190.075, 0 } + { -168.969, 0.4, -219.925, 0 } + { -190.075, 0.4, -241.031, 0 } + { -219.925, 0.4, -241.031, 0 } + { -190.075, 0.4, -168.969, 0 } + { -241.031, 0.4, -190.075, 0 } + { -219.925, 0.4, -168.969, 0 } + { -839.925, 0.4, -36.0313, 0 } + { -861.031, 0.4, -14.9247, 0 } + { -861.031, 0.4, 14.9247, 0 } + { -839.925, 0.4, 36.0313, 0 } + { -788.969, 0.4, -14.9247, 0 } + { -810.075, 0.4, -36.0313, 0 } + } // End of spherelist + } // End of geogroup +} // End of object diff --git a/CONTENT/BT/VIDEO/BUILD/EDITBACK/DBASE.VMF b/CONTENT/BT/VIDEO/BUILD/EDITBACK/DBASE.VMF new file mode 100644 index 0000000..1533bf7 --- /dev/null +++ b/CONTENT/BT/VIDEO/BUILD/EDITBACK/DBASE.VMF @@ -0,0 +1,266 @@ +DIV-VIZ2 + +// file: dbase.vmf +// generated: Thu Mar 20 01:40:22 1997 +// from: Wavefront Object File "dummy", and +// Material Library File "dbase.mtl" +// by: mtl2vmf (ver 0.27.00) +// written: by Ken Olsen + +HEADER( + VERSION=02:05; + FILETYPE=MATERIAL; +) +{ +} + +TEXTURE( + NAME=gen3_tex; +) +{ + MAP {"gen"} + BITSLICE {2} // 4 bit mono C +} // End of texture + +TEXTURE( + NAME=saintb_tex; +) +{ + MAP {"saintb"} + MAGNIFY {BILINEAR} // 6 bit bilinear +} // End of texture + +TEXTURE( + NAME=gen5_tex; +) +{ + MAP {"gen"} + BITSLICE {4} // 4 bit mono E +} // End of texture + +TEXTURE( + NAME=bexp2_tex; +) +{ + MAP {"bexp"} + BITSLICE {1} // 4 bit mono B +} // End of texture + +TEXTURE( + NAME=bdam3_tex; +) +{ + MAP {"bdam"} + BITSLICE {2} // 4 bit mono C +} // End of texture + +TEXTURE( + NAME=bdam1_tex; +) +{ + MAP {"bdam"} + BITSLICE {0} // 4 bit mono A +} // End of texture + +TEXTURE( + NAME=bdet9_tex; +) +{ + MAP {"bdet"} + BITSLICE {8} // 16 bit color w/alpha (4,4,4,4) +} // End of texture + +TEXTURE( + NAME=gen6_tex; +) +{ + MAP {"gen"} + BITSLICE {5} // 4 bit mono F +} // End of texture + +TEXTURE( + NAME=bintA_tex; +) +{ + MAP {"bintA"} + MAGNIFY {BILINEAR} // 6 bit bilinear +} // End of texture + +TEXTURE( + NAME=bdet2_tex; +) +{ + MAP {"bdet"} + BITSLICE {1} // 4 bit mono B +} // End of texture + +RAMP(NAME=cdusty) +{ + DATA { 0.35, 0.28, 0.21, 0.99, 0.85, 0.8 } +} // End of ramp + +RAMP(NAME=darker) +{ + DATA { 0.27, 0.216, 0.167, 0.76, 0.635, 0.64 } +} // End of ramp + +MATERIAL( + NAME=baseb1gry_mtl; +) +{ + TEXTURE {"gen3_tex"} + AMBIENT {0.5239, 0.4928, 0.5239} + DIFFUSE {0.5239, 0.4928, 0.5239} + RAMP { cdusty } +} // End of material + +MATERIAL( + NAME=baseb4gry_mtl; +) +{ + TEXTURE {"saintb_tex"} + AMBIENT {0.7143, 0.674591, 0.7143} + DIFFUSE {0.7143, 0.656675, 0.7143} + RAMP { cdusty } +} // End of material + +MATERIAL( + NAME=baseb5gry_mtl; +) +{ + TEXTURE {"gen5_tex"} + AMBIENT {0.5239, 0.4928, 0.5239} + DIFFUSE {0.5239, 0.4928, 0.5239} + RAMP { cdusty } +} // End of material + +MATERIAL( + NAME=baseb6gry_mtl; +) +{ + TEXTURE {"bexp2_tex"} + AMBIENT {0.7143, 0.674591, 0.7143} + DIFFUSE {0.7143, 0.656675, 0.7143} + RAMP { cdusty } +} // End of material + +MATERIAL( + NAME=baseb7gry_mtl; +) +{ + TEXTURE {"bdam3_tex"} + AMBIENT {0.4239, 0.3928, 0.4239} + DIFFUSE {0.4239, 0.3928, 0.4239} + RAMP { cdusty } +} // End of material + +MATERIAL( + NAME=baseb9gry_mtl; +) +{ + TEXTURE {"gen3_tex"} + AMBIENT {0.5239, 0.4928, 0.5239} + DIFFUSE {0.5239, 0.4928, 0.5239} + RAMP { cdusty } +} // End of material + +MATERIAL( + NAME=baseb2gry_mtl; +) +{ + TEXTURE {"bdam1_tex"} + AMBIENT {0.4143, 0.356663, 0.4143} + DIFFUSE {0.4143, 0.332387, 0.4143} + RAMP { cdusty } +} // End of material + +MATERIAL( + NAME=baseb3gry_mtl; +) +{ + TEXTURE {"saintb_tex"} + AMBIENT {0.6143, 0.565464, 0.6143} + DIFFUSE {0.6143, 0.543846, 0.6143} + RAMP { cdusty } +} // End of material + +MATERIAL( + NAME=baseb8gry_mtl; +) +{ + TEXTURE {"bdet9_tex"} + AMBIENT {0.6959, 0.240569, 0.1959} + DIFFUSE {0.6959, 0.218238, 0.1959} + RAMP { cdusty } +} // End of material + +MATERIAL( + NAME=baseb10gry_mtl; +) +{ + TEXTURE {"saintb_tex"} + AMBIENT {0.8306, 0.804801, 0.8306} + DIFFUSE {0.8306, 0.792939, 0.8306} + RAMP { cdusty } +} // End of material + +MATERIAL( + NAME=baseb11gry_mtl; +) +{ + TEXTURE {"gen6_tex"} + AMBIENT {0.9143, 0.900479, 0.9143} + DIFFUSE {0.9143, 0.894048, 0.9143} + RAMP { cdusty } +} // End of material + +MATERIAL( + NAME=baseb12red_mtl; +) +{ + TEXTURE {"bintA_tex"} + AMBIENT {0.6653, 0.232882, 0.1733} + DIFFUSE {0.6653, 0.123629, 0.1733} + RAMP { cdusty } +} // End of material + +MATERIAL( + NAME=baseb13ylw_mtl; +) +{ + TEXTURE {"bdet2_tex"} + AMBIENT {0.772, 0.550094, 0.1} + DIFFUSE {0.772, 0.528067, 0.1} + RAMP { cdusty } +} // End of material + +MATERIAL( + NAME=internalwalls_mtl; +) +{ + TEXTURE {"gen5_tex"} + AMBIENT {0.5388, 0.485032, 0.5388} + DIFFUSE {0.5388, 0.46162, 0.5388} + RAMP { cdusty } +} // End of material + +MATERIAL( + NAME=tarmac_mtl; +) +{ + TEXTURE {"bintA_tex"} + AMBIENT {0.4367, 0.23203, 0.2246} + DIFFUSE {0.4367, 0.209973, 0.2246} + RAMP { cdusty } +} // End of material + +MATERIAL( + NAME=sidewalk_mtl; +) +{ + TEXTURE {"bintA_tex"} + AMBIENT {0.5061, 0.450772, 0.5061} + DIFFUSE {0.5061, 0.42687, 0.5061} + RAMP { cdusty } +} // End of material + \ No newline at end of file diff --git a/CONTENT/BT/VIDEO/BUILD/EDITBACK/DISH_LP.VGF b/CONTENT/BT/VIDEO/BUILD/EDITBACK/DISH_LP.VGF new file mode 100644 index 0000000..0558e0c --- /dev/null +++ b/CONTENT/BT/VIDEO/BUILD/EDITBACK/DISH_LP.VGF @@ -0,0 +1,35 @@ +DIV-VIZ2 + +// file: dish_lp.vgf +// generated: Fri Mar 21 18:17:07 1997 +// from: Wavefront Object File "dish_lp.obj", and +// Material Library File "btfx.mtl" +// by: obj2vgf (ver 0.29.01a) +// written: by Ken Olsen + +HEADER( + VERSION=02:05; + UNIT=m; + SCALE=1.0; + FILETYPE=GEOMETRY; +) +{ +} + +OBJECT( +) +{ + GEOGROUP + ( + F_MATERIAL="btfx:britered_mtl"; + ) + { + SPHERELIST { + { 0, 0.769873, 4.1, 0 } + { 5, 5.1, 1.6, 0 } + { -5, 5.1, 1.6, 0 } + { 0, 9.43013, -0.9, 0 } + { -0.125, 7.14575, 4.89335, 0 } + } // End of spherelist + } // End of geogroup +} // End of object diff --git a/CONTENT/BT/VIDEO/BUILD/EDITBACK/DTAR_LP.VGF b/CONTENT/BT/VIDEO/BUILD/EDITBACK/DTAR_LP.VGF new file mode 100644 index 0000000..e2c7d53 --- /dev/null +++ b/CONTENT/BT/VIDEO/BUILD/EDITBACK/DTAR_LP.VGF @@ -0,0 +1,92 @@ +DIV-VIZ2 + +// file: dtarmac_lp.vgf +// generated: Fri Mar 21 18:17:08 1997 +// from: Wavefront Object File "dtarmac_lp.obj", and +// Material Library File "btfx.mtl" +// by: obj2vgf (ver 0.29.01a) +// written: by Ken Olsen + +HEADER( + VERSION=02:05; + UNIT=m; + SCALE=1.0; + FILETYPE=GEOMETRY; +) +{ +} + +OBJECT( +) +{ + GEOGROUP + ( + F_MATERIAL="btfx:britelite_mtl"; + ) + { + SPHERELIST { + { 760, 0.6, -882, 0 } + { 520, 0.6, -580, 0 } + { 180, 0.6, -670, 0 } + { 180, 0.6, -580, 0 } + { 436, 0.6, -882, 0 } + { 436, 0.6, -814, 0 } + { 809, 0.6, -642, 0 } + { 809, 0.6, -710, 0 } + { 298.5, 0.6, -694.5, 0 } + { 230.5, 0.6, -694.5, 0 } + } // End of spherelist + } // End of geogroup + GEOGROUP + ( + F_MATERIAL="btfx:britered_mtl"; + ) + { + SPHERELIST { + { 500.468, 0.3, -514.996, 0 } + { 521.565, 0.3, -496.995, 0 } + { 668.075, 0.3, -643.969, 0 } + { 629.969, 0.3, -644.075, 0 } + { 370.967, 0.3, -385.916, 0 } + { 388.696, 0.3, -363.705, 0 } + { 190.378, 0.3, -205.915, 0 } + { 209.82, 0.3, -184.264, 0 } + { 36.0313, 0.3, -9.92465, 0 } + { 14.9247, 0.3, -31.0313, 0 } + { -463.969, 0.3, -80.0753, 0 } + { -536.031, 0.3, -109.925, 0 } + { -514.925, 0.3, -131.031, 0 } + { -136.031, 0.3, 290.075, 0 } + { -568.969, 0.3, 214.925, 0 } + { -590.075, 0.3, 236.031, 0 } + { 58.9687, 0.3, -285.075, 0 } + { -290.075, 0.3, 63.9687, 0 } + { -268.969, 0.3, 85.0753, 0 } + { 80.0753, 0.3, -263.969, 0 } + { -319.925, 0.3, 63.9687, 0 } + { -341.031, 0.3, 114.925, 0 } + { -690.075, 0.3, 463.969, 0 } + { -668.969, 0.3, 485.075, 0 } + { -319.925, 0.3, 136.031, 0 } + { -341.031, 0.3, 85.0753, 0 } + { 80.0753, 0.3, 463.969, 0 } + { 58.9687, 0.3, 485.075, 0 } + { -241.031, 0.3, 585.075, 0 } + { -219.925, 0.3, 563.969, 0 } + { -363.969, 0.3, 419.925, 0 } + { -385.075, 0.3, 441.031, 0 } + { -436.031, 0.3, 390.075, 0 } + { -485.075, 0.3, -58.9687, 0 } + { -591.117, 0.3, -207.224, 0 } + { -611.919, 0.3, -185.813, 0 } + { -690.075, 0.3, -263.969, 0 } + { -668.969, 0.3, -285.075, 0 } + { -114.925, 0.3, 268.969, 0 } + { -191.117, 0.3, 192.776, 0 } + { -211.919, 0.3, 214.187, 0 } + { -763.969, 0.3, 19.9247, 0 } + { -785.075, 0.3, 41.0313, 0 } + { -414.925, 0.3, 368.969, 0 } + } // End of spherelist + } // End of geogroup +} // End of object diff --git a/CONTENT/BT/VIDEO/BUILD/EDITBACK/GRASS.VMF b/CONTENT/BT/VIDEO/BUILD/EDITBACK/GRASS.VMF new file mode 100644 index 0000000..ee6ce33 --- /dev/null +++ b/CONTENT/BT/VIDEO/BUILD/EDITBACK/GRASS.VMF @@ -0,0 +1,69 @@ +DIV-VIZ2 +HEADER +( + VERSION=2:08; + DATE=5:3:97; + TIME=23:48; + FILETYPE=MATERIAL +) +{ +} + +TEXTURE(NAME="grassc_tex") +{ + MAP {"grassc"} + MAGNIFY {BILINEAR} +} + +TEXTURE(NAME="tree9_tex") +{ + MAP {"tree"} + BITSLICE { 8 } +} + +TEXTURE(NAME="bintA_tex") +{ + MAP {"bintA"} + MAGNIFY {BILINEAR} +} + +RAMP(NAME="grass") +{ + DATA {0.1, 0.17, 0.1, 0.54, 0.44, 0.4} +} + +MATERIAL(NAME="grass_mtl") +{ + TEXTURE {"grassc_tex"} + RAMP {"grass"} +} + +MATERIAL(NAME="tree_mtl") +{ + TEXTURE {"tree9_tex"} + AMBIENT {1, 0.15, 0.131} + DIFFUSE {1, 0.15, 0.131} +} + +MATERIAL(NAME="trunk_mtl") +{ + TEXTURE {"bintA_tex"} + AMBIENT {0.1898, 0.088563, 0} + DIFFUSE {0.1898, 0.064105, 0} +} + +MATERIAL(NAME="rings_mtl") +{ + TEXTURE {"bintA_tex"} + AMBIENT {0.3898, 0.188563, 0.051} + DIFFUSE {0.3898, 0.164105, 0.051} +} + +MATERIAL(NAME="leaves_mtl") +{ + TEXTURE {"tree9_tex"} + AMBIENT {1, 0.651, 0.531} + DIFFUSE {1, 0.651, 0.531} +} + + \ No newline at end of file diff --git a/CONTENT/BT/VIDEO/BUILD/EDITBACK/RAVINES.VMF b/CONTENT/BT/VIDEO/BUILD/EDITBACK/RAVINES.VMF new file mode 100644 index 0000000..d149d80 --- /dev/null +++ b/CONTENT/BT/VIDEO/BUILD/EDITBACK/RAVINES.VMF @@ -0,0 +1,62 @@ +DIV-VIZ2 +HEADER +( + VERSION=2:08; + DATE=8:2:97; + TIME=1:39; + FILETYPE=MATERIAL +) +{ +} + +TEXTURE(NAME="bdinta_tex") +{ + MAP {"bdinta"} + MAGNIFY {BILINEAR} +} + +TEXTURE(NAME="bdintb_tex") +{ + MAP {"bdintb"} + MAGNIFY {BILINEAR} +} + +RAMP(NAME="dust") +{ + DATA {0.285, 0.21, 0.2, 0.75, 0.5, 0.4} +} + +RAMP(NAME="rock") +{ + DATA {0.25, 0.21, 0.21, 0.8, 0.5, 0.4} +} + +MATERIAL(NAME="ravinerock_mtl") +{ + TEXTURE {"bdinta_tex"} + RAMP {"rock"} +} + +MATERIAL(NAME="ravinerubble_mtl") +{ + TEXTURE {"bdintb_tex"} + RAMP {"dust"} +} + + +MATERIAL(NAME="tarmac_mtl") +{ + TEXTURE {"bdintb_tex"} + AMBIENT {0.4143, 0.4174591, 0.417143} + DIFFUSE {0.4143, 0.4156675, 0.417143} + RAMP {"dust"} +} + +MATERIAL(NAME="dirt_mtl") +{ + TEXTURE {"bdintb_tex"} + AMBIENT {0.6, 0.55, 0.5} + DIFFUSE {0.6, 0.55, 0.5} + RAMP {"dust"} +} + \ No newline at end of file diff --git a/CONTENT/BT/VIDEO/BUILD/GEN5.TGA b/CONTENT/BT/VIDEO/BUILD/GEN5.TGA new file mode 100644 index 0000000..a208cdf Binary files /dev/null and b/CONTENT/BT/VIDEO/BUILD/GEN5.TGA differ diff --git a/CONTENT/BT/VIDEO/BUILD/GEN6.TGA b/CONTENT/BT/VIDEO/BUILD/GEN6.TGA new file mode 100644 index 0000000..5ee2b00 Binary files /dev/null and b/CONTENT/BT/VIDEO/BUILD/GEN6.TGA differ diff --git a/CONTENT/BT/VIDEO/BUILD/GRASS.BMF b/CONTENT/BT/VIDEO/BUILD/GRASS.BMF new file mode 100644 index 0000000..1536daf Binary files /dev/null and b/CONTENT/BT/VIDEO/BUILD/GRASS.BMF differ diff --git a/CONTENT/BT/VIDEO/BUILD/GRASS.VMF b/CONTENT/BT/VIDEO/BUILD/GRASS.VMF new file mode 100644 index 0000000..f55f1c5 --- /dev/null +++ b/CONTENT/BT/VIDEO/BUILD/GRASS.VMF @@ -0,0 +1,69 @@ +DIV-VIZ2 +HEADER +( + VERSION=2:08; + DATE=5:3:97; + TIME=23:48; + FILETYPE=MATERIAL +) +{ +} + +TEXTURE(NAME="grassc_tex") +{ + MAP {"grassc"} + MAGNIFY {BILINEAR} +} + +TEXTURE(NAME="tree9_tex") +{ + MAP {"tree"} + BITSLICE { 8 } +} + +TEXTURE(NAME="bintA_tex") +{ + MAP {"bintA"} + MAGNIFY {BILINEAR} +} + +RAMP(NAME="grass") +{ + DATA {0.1, 0.17, 0.1, 0.54, 0.42, 0.4} +} + +MATERIAL(NAME="grass_mtl") +{ + TEXTURE {"grassc_tex"} + RAMP {"grass"} +} + +MATERIAL(NAME="tree_mtl") +{ + TEXTURE {"tree9_tex"} + AMBIENT {1, 0.15, 0.131} + DIFFUSE {1, 0.15, 0.131} +} + +MATERIAL(NAME="trunk_mtl") +{ + TEXTURE {"bintA_tex"} + AMBIENT {0.1898, 0.088563, 0} + DIFFUSE {0.1898, 0.064105, 0} +} + +MATERIAL(NAME="rings_mtl") +{ + TEXTURE {"bintA_tex"} + AMBIENT {0.3898, 0.188563, 0.051} + DIFFUSE {0.3898, 0.164105, 0.051} +} + +MATERIAL(NAME="leaves_mtl") +{ + TEXTURE {"tree9_tex"} + AMBIENT {1, 0.651, 0.531} + DIFFUSE {1, 0.651, 0.531} +} + + \ No newline at end of file diff --git a/CONTENT/BT/VIDEO/BUILD/HARASS.BGF b/CONTENT/BT/VIDEO/BUILD/HARASS.BGF new file mode 100644 index 0000000..114b0e5 Binary files /dev/null and b/CONTENT/BT/VIDEO/BUILD/HARASS.BGF differ diff --git a/CONTENT/BT/VIDEO/BUILD/HARASS.VGF b/CONTENT/BT/VIDEO/BUILD/HARASS.VGF new file mode 100644 index 0000000..3683cf5 --- /dev/null +++ b/CONTENT/BT/VIDEO/BUILD/HARASS.VGF @@ -0,0 +1,44 @@ +DIV-VIZ2 + +// file: harass.vgf +// generated: Thu Mar 20 07:33:11 1997 +// from: Wavefront Object File "harass.obj", and +// Material Library File "basev.mtl" +// by: obj2vgf (ver 0.29.01a) +// written: by Ken Olsen + +HEADER( + VERSION=02:05; + UNIT=m; + SCALE=1.0; + FILETYPE=GEOMETRY; +) +{ +} + +OBJECT( +) +{ + GEOGROUP + ( + F_MATERIAL="basev:shadow_mtl"; + ) + { + PMESH { + VERTEX_POOL { + { 0.8855, 0.1000, 3.2933} /* 0 */ + { 0.9240, 0.1000, 2.1763} /* 1 */ + {-0.8855, 0.1000, 2.1378} /* 2 */ + {-0.8085, 0.1000, 3.3318} /* 3 */ + { 2.4254, 0.1000, 2.3689} /* 4 */ + { 2.4254, 0.1000, -4.1407} /* 5 */ + {-2.4639, 0.1000, -4.2563} /* 6 */ + {-2.5024, 0.1000, 2.4074} /* 7 */ + } + CONNECTION_LIST (PCOUNT=4) { + {0, 1, 2, 3} /* */ + {4, 5, 6, 7} /* */ + } + } // End of pmesh + } // End of geogroup +} // End of object diff --git a/CONTENT/BT/VIDEO/BUILD/HUMMS.BGF b/CONTENT/BT/VIDEO/BUILD/HUMMS.BGF new file mode 100644 index 0000000..75f63f1 Binary files /dev/null and b/CONTENT/BT/VIDEO/BUILD/HUMMS.BGF differ diff --git a/CONTENT/BT/VIDEO/BUILD/HUMMS.VGF b/CONTENT/BT/VIDEO/BUILD/HUMMS.VGF new file mode 100644 index 0000000..3dc54b1 --- /dev/null +++ b/CONTENT/BT/VIDEO/BUILD/HUMMS.VGF @@ -0,0 +1,39 @@ +DIV-VIZ2 + +// file: humms.vgf +// generated: Thu Mar 20 07:33:11 1997 +// from: Wavefront Object File "humms.obj", and +// Material Library File "basev.mtl" +// by: obj2vgf (ver 0.29.01a) +// written: by Ken Olsen + +HEADER( + VERSION=02:05; + UNIT=m; + SCALE=1.0; + FILETYPE=GEOMETRY; +) +{ +} + +OBJECT( +) +{ + GEOGROUP + ( + F_MATERIAL="basev:shadow_mtl"; + ) + { + PMESH { + VERTEX_POOL { + { 1.2320, 0.1000, 2.7155} /* 0 */ + { 1.2704, 0.1000, -2.7541} /* 1 */ + {-1.4629, 0.1000, -2.7926} /* 2 */ + {-1.3859, 0.1000, 2.7155} /* 3 */ + } + CONNECTION_LIST (PCOUNT=4) { + {0, 1, 2, 3} /* */ + } + } // End of pmesh + } // End of geogroup +} // End of object diff --git a/CONTENT/BT/VIDEO/BUILD/LRMS.BGF b/CONTENT/BT/VIDEO/BUILD/LRMS.BGF new file mode 100644 index 0000000..c24ea4d Binary files /dev/null and b/CONTENT/BT/VIDEO/BUILD/LRMS.BGF differ diff --git a/CONTENT/BT/VIDEO/BUILD/LRMS.VGF b/CONTENT/BT/VIDEO/BUILD/LRMS.VGF new file mode 100644 index 0000000..117fef2 --- /dev/null +++ b/CONTENT/BT/VIDEO/BUILD/LRMS.VGF @@ -0,0 +1,51 @@ +DIV-VIZ2 + +// file: lrms.vgf +// generated: Thu Mar 20 07:33:11 1997 +// from: Wavefront Object File "lrms.obj", and +// Material Library File "basev.mtl" +// by: obj2vgf (ver 0.29.01a) +// written: by Ken Olsen + +HEADER( + VERSION=02:05; + UNIT=m; + SCALE=1.0; + FILETYPE=GEOMETRY; +) +{ +} + +OBJECT( +) +{ + GEOGROUP + ( + F_MATERIAL="basev:shadow_mtl"; + ) + { + PMESH { + VERTEX_POOL { + { 4.3888, 0.1000, -0.2504} /* 0 */ + { 3.2339, 0.1000, -0.5970} /* 1 */ + {-2.5024, 0.1000, -0.4815} /* 2 */ + {-4.2733, 0.1000, 0.0193} /* 3 */ + {-4.3503, 0.1000, 5.2963} /* 4 */ + {-2.5409, 0.1000, 5.9126} /* 5 */ + { 2.3099, 0.1000, 5.9896} /* 6 */ + { 4.2733, 0.1000, 5.2578} /* 7 */ + { 3.3879, 0.1000, 0.7511} /* 8 */ + { 3.3494, 0.1000, -3.4474} /* 9 */ + {-3.1954, 0.1000, -3.4474} /* 10 */ + {-3.2339, 0.1000, 0.8281} /* 11 */ + } + CONNECTION_LIST (PCOUNT=4) { + {0, 5, 6, 7} /* */ + {8, 9, 10, 11} /* */ + } + CONNECTION_LIST (PCOUNT=6) { + {0, 1, 2, 3, 4, 5} /* */ + } + } // End of pmesh + } // End of geogroup +} // End of object diff --git a/CONTENT/BT/VIDEO/BUILD/MECHMOVS.BGF b/CONTENT/BT/VIDEO/BUILD/MECHMOVS.BGF new file mode 100644 index 0000000..d64e0eb Binary files /dev/null and b/CONTENT/BT/VIDEO/BUILD/MECHMOVS.BGF differ diff --git a/CONTENT/BT/VIDEO/BUILD/MECHMOVS.VGF b/CONTENT/BT/VIDEO/BUILD/MECHMOVS.VGF new file mode 100644 index 0000000..323054f --- /dev/null +++ b/CONTENT/BT/VIDEO/BUILD/MECHMOVS.VGF @@ -0,0 +1,44 @@ +DIV-VIZ2 + +// file: mechmovs.vgf +// generated: Thu Mar 20 07:33:11 1997 +// from: Wavefront Object File "mechmovs.obj", and +// Material Library File "basev.mtl" +// by: obj2vgf (ver 0.29.01a) +// written: by Ken Olsen + +HEADER( + VERSION=02:05; + UNIT=m; + SCALE=1.0; + FILETYPE=GEOMETRY; +) +{ +} + +OBJECT( +) +{ + GEOGROUP + ( + F_MATERIAL="basev:shadow_mtl"; + ) + { + PMESH { + VERTEX_POOL { + { 0.6545, 0.1000, 8.0311} /* 0 */ + { 0.6930, 0.1000, 7.1067} /* 1 */ + {-0.5775, 0.1000, 7.1452} /* 2 */ + {-0.5005, 0.1000, 8.0311} /* 3 */ + { 2.4639, 0.1000, 7.4148} /* 4 */ + { 2.5024, 0.1000, -7.1452} /* 5 */ + {-2.6564, 0.1000, -7.1837} /* 6 */ + {-2.5794, 0.1000, 7.4148} /* 7 */ + } + CONNECTION_LIST (PCOUNT=4) { + {0, 1, 2, 3} /* */ + {4, 5, 6, 7} /* */ + } + } // End of pmesh + } // End of geogroup +} // End of object diff --git a/CONTENT/BT/VIDEO/BUILD/RAVINES.BMF b/CONTENT/BT/VIDEO/BUILD/RAVINES.BMF new file mode 100644 index 0000000..0471e9f Binary files /dev/null and b/CONTENT/BT/VIDEO/BUILD/RAVINES.BMF differ diff --git a/CONTENT/BT/VIDEO/BUILD/RAVINES.VMF b/CONTENT/BT/VIDEO/BUILD/RAVINES.VMF new file mode 100644 index 0000000..2d5aa6e --- /dev/null +++ b/CONTENT/BT/VIDEO/BUILD/RAVINES.VMF @@ -0,0 +1,62 @@ +DIV-VIZ2 +HEADER +( + VERSION=2:08; + DATE=8:2:97; + TIME=1:39; + FILETYPE=MATERIAL +) +{ +} + +TEXTURE(NAME="bdinta_tex") +{ + MAP {"bdinta"} + MAGNIFY {BILINEAR} +} + +TEXTURE(NAME="bdintb_tex") +{ + MAP {"bdintb"} + MAGNIFY {BILINEAR} +} + +RAMP(NAME="dust") +{ + DATA {0.285, 0.21, 0.2, 0.75, 0.5, 0.4} +} + +RAMP(NAME="rock") +{ + DATA {0.25, 0.21, 0.21, 0.8, 0.5, 0.4} +} + +MATERIAL(NAME="ravinerock_mtl") +{ + TEXTURE {"bdinta_tex"} + RAMP {"rock"} +} + +MATERIAL(NAME="ravinerubble_mtl") +{ + TEXTURE {"bdintb_tex"} + RAMP {"dust"} +} + + +MATERIAL(NAME="tarmac_mtl") +{ + TEXTURE {"bdintb_tex"} + AMBIENT {0.4143, 0.4174591, 0.417143} + DIFFUSE {0.4143, 0.4156675, 0.417143} + RAMP {"dust"} +} + +MATERIAL(NAME="dirt_mtl") +{ + TEXTURE {"bdintb_tex"} + AMBIENT {0.8, 0.8, 0.8} + DIFFUSE {0.8, 0.8, 0.8} + RAMP {"dust"} +} + \ No newline at end of file diff --git a/CONTENT/BT/VIDEO/BUILD/ROMMELS.BGF b/CONTENT/BT/VIDEO/BUILD/ROMMELS.BGF new file mode 100644 index 0000000..e3f0620 Binary files /dev/null and b/CONTENT/BT/VIDEO/BUILD/ROMMELS.BGF differ diff --git a/CONTENT/BT/VIDEO/BUILD/ROMMELS.VGF b/CONTENT/BT/VIDEO/BUILD/ROMMELS.VGF new file mode 100644 index 0000000..95149c7 --- /dev/null +++ b/CONTENT/BT/VIDEO/BUILD/ROMMELS.VGF @@ -0,0 +1,44 @@ +DIV-VIZ2 + +// file: rommels.vgf +// generated: Thu Mar 20 07:33:11 1997 +// from: Wavefront Object File "rommels.obj", and +// Material Library File "basev.mtl" +// by: obj2vgf (ver 0.29.01a) +// written: by Ken Olsen + +HEADER( + VERSION=02:05; + UNIT=m; + SCALE=1.0; + FILETYPE=GEOMETRY; +) +{ +} + +OBJECT( +) +{ + GEOGROUP + ( + F_MATERIAL="basev:shadow_mtl"; + ) + { + PMESH { + VERTEX_POOL { + { 1.1655, 0.1000, 5.1527} /* 0 */ + { 1.2599, 0.1000, 4.3648} /* 1 */ + { 0.7875, 0.1000, 4.3648} /* 2 */ + { 0.8190, 0.1000, 5.1212} /* 3 */ + { 2.5829, 0.1000, 4.4909} /* 4 */ + { 2.5514, 0.1000, -3.3564} /* 5 */ + {-2.5514, 0.1000, -3.3564} /* 6 */ + {-2.5829, 0.1000, 4.4909} /* 7 */ + } + CONNECTION_LIST (PCOUNT=4) { + {0, 1, 2, 3} /* */ + {4, 5, 6, 7} /* */ + } + } // End of pmesh + } // End of geogroup +} // End of object diff --git a/CONTENT/BT/VIDEO/BUILD/SEMIRIGS.BGF b/CONTENT/BT/VIDEO/BUILD/SEMIRIGS.BGF new file mode 100644 index 0000000..86ecafe Binary files /dev/null and b/CONTENT/BT/VIDEO/BUILD/SEMIRIGS.BGF differ diff --git a/CONTENT/BT/VIDEO/BUILD/SEMIRIGS.VGF b/CONTENT/BT/VIDEO/BUILD/SEMIRIGS.VGF new file mode 100644 index 0000000..e0dfeb3 --- /dev/null +++ b/CONTENT/BT/VIDEO/BUILD/SEMIRIGS.VGF @@ -0,0 +1,39 @@ +DIV-VIZ2 + +// file: semirigs.vgf +// generated: Thu Mar 20 08:08:26 1997 +// from: Wavefront Object File "semirigs.obj", and +// Material Library File "basev.mtl" +// by: obj2vgf (ver 0.29.01a) +// written: by Ken Olsen + +HEADER( + VERSION=02:05; + UNIT=m; + SCALE=1.0; + FILETYPE=GEOMETRY; +) +{ +} + +OBJECT( +) +{ + GEOGROUP + ( + F_MATERIAL="basev:shadow_mtl"; + ) + { + PMESH { + VERTEX_POOL { + { 1.1970, 0.1000, 8.8715} /* 0 */ + { 1.1970, 0.1000, 0.8982} /* 1 */ + {-1.2284, 0.1000, 0.8352} /* 2 */ + {-1.2284, 0.1000, 8.8715} /* 3 */ + } + CONNECTION_LIST (PCOUNT=4) { + {0, 1, 2, 3} /* */ + } + } // End of pmesh + } // End of geogroup +} // End of object diff --git a/CONTENT/BT/VIDEO/BUILD/SEMIS.BGF b/CONTENT/BT/VIDEO/BUILD/SEMIS.BGF new file mode 100644 index 0000000..f01b69e Binary files /dev/null and b/CONTENT/BT/VIDEO/BUILD/SEMIS.BGF differ diff --git a/CONTENT/BT/VIDEO/BUILD/SEMIS.VGF b/CONTENT/BT/VIDEO/BUILD/SEMIS.VGF new file mode 100644 index 0000000..b31b2ee --- /dev/null +++ b/CONTENT/BT/VIDEO/BUILD/SEMIS.VGF @@ -0,0 +1,39 @@ +DIV-VIZ2 + +// file: semis.vgf +// generated: Thu Mar 20 07:33:12 1997 +// from: Wavefront Object File "semis.obj", and +// Material Library File "basev.mtl" +// by: obj2vgf (ver 0.29.01a) +// written: by Ken Olsen + +HEADER( + VERSION=02:05; + UNIT=m; + SCALE=1.0; + FILETYPE=GEOMETRY; +) +{ +} + +OBJECT( +) +{ + GEOGROUP + ( + F_MATERIAL="basev:shadow_mtl"; + ) + { + PMESH { + VERTEX_POOL { + { 1.3859, 0.1000, 2.9782} /* 0 */ + { 1.3544, 0.1000, -3.0097} /* 1 */ + {-1.2599, 0.1000, -3.0097} /* 2 */ + {-1.3229, 0.1000, 2.9782} /* 3 */ + } + CONNECTION_LIST (PCOUNT=4) { + {0, 1, 2, 3} /* */ + } + } // End of pmesh + } // End of geogroup +} // End of object diff --git a/CONTENT/BT/VIDEO/BUILD/SRMS.BGF b/CONTENT/BT/VIDEO/BUILD/SRMS.BGF new file mode 100644 index 0000000..0671489 Binary files /dev/null and b/CONTENT/BT/VIDEO/BUILD/SRMS.BGF differ diff --git a/CONTENT/BT/VIDEO/BUILD/SRMS.VGF b/CONTENT/BT/VIDEO/BUILD/SRMS.VGF new file mode 100644 index 0000000..eaea0f1 --- /dev/null +++ b/CONTENT/BT/VIDEO/BUILD/SRMS.VGF @@ -0,0 +1,44 @@ +DIV-VIZ2 + +// file: srms.vgf +// generated: Thu Mar 20 07:33:12 1997 +// from: Wavefront Object File "srms.obj", and +// Material Library File "basev.mtl" +// by: obj2vgf (ver 0.29.01a) +// written: by Ken Olsen + +HEADER( + VERSION=02:05; + UNIT=m; + SCALE=1.0; + FILETYPE=GEOMETRY; +) +{ +} + +OBJECT( +) +{ + GEOGROUP + ( + F_MATERIAL="basev:shadow_mtl"; + ) + { + PMESH { + VERTEX_POOL { + { 2.8933, -0.0000, 4.5132} /* 0 */ + { 2.9320, -0.0000, -0.0913} /* 1 */ + {-2.3276, -0.0000, -0.0913} /* 2 */ + {-2.3276, -0.0000, 4.4745} /* 3 */ + { 2.7000, -0.0000, 3.1589} /* 4 */ + { 2.7386, -0.0000, -3.9220} /* 5 */ + {-2.9464, -0.0000, -3.8833} /* 6 */ + {-2.9464, -0.0000, 3.1589} /* 7 */ + } + CONNECTION_LIST (PCOUNT=4) { + {0, 1, 2, 3} /* */ + {4, 5, 6, 7} /* */ + } + } // End of pmesh + } // End of geogroup +} // End of object diff --git a/CONTENT/BT/VIDEO/BUILD/STATE.RST b/CONTENT/BT/VIDEO/BUILD/STATE.RST new file mode 100644 index 0000000..2265671 --- /dev/null +++ b/CONTENT/BT/VIDEO/BUILD/STATE.RST @@ -0,0 +1,64 @@ +[edit-] +screen=80 50 +toggles=1 1 0 1 0 0 +srch=arsky +src=briteblu +rpl=liteblu +file=c:\btravine\video\build\dtar_lp.vgf 1 1 1 1 +[brief] +file=c:\btravine\video\build\dtar_lp.vgf 1 1 1 1 1 47 78 1 c=0 +file=c:\btravine\video\build\dish_lp.vgf 1 1 1 1 +file=c:\btravine\video\build\ctar_lp.vgf 1 1 1 1 +[shared-] +pmark=c:\btravine\video\build\dtar_lp.vgf 1 1 +[brief-scrap] +0 3 + AMBIENT {0.5239, 0.4928, 0.5239} + DIFFUSE {0.5239, 0.4928, 0.5239} + RAMP { cdusty } +[end-brief-scrap] +[brief-history] + +[edit_file]::[File: ] +dtar_lp.vgf +ctar_lp.vgf +briteblu +dish.vgf +dtarmac.vgf +ravines.vmf +dbase.vmf +basev.vmf +basev.mtl +[search_fwd]::[ Search for: ] +arsky +gen2red +gen3red +ramp +bdam3 +darker +LOD +gen3 +cdusty +tarmac +[translate]::[ Pattern: ] +briteblu +britered +lgo +128,64 +berm +_ravines +DO_NOT_USE_ +blacktop +baseb +[translate]::[Replacement: ] +liteblu +litered +gen +128,128 +dirt +ravines +tarmac +dbase +RAVINES +[end-brief-history] + \ No newline at end of file diff --git a/CONTENT/BT/VIDEO/BUILD/STRIKERS.BGF b/CONTENT/BT/VIDEO/BUILD/STRIKERS.BGF new file mode 100644 index 0000000..489cab7 Binary files /dev/null and b/CONTENT/BT/VIDEO/BUILD/STRIKERS.BGF differ diff --git a/CONTENT/BT/VIDEO/BUILD/STRIKERS.VGF b/CONTENT/BT/VIDEO/BUILD/STRIKERS.VGF new file mode 100644 index 0000000..7d8a97f --- /dev/null +++ b/CONTENT/BT/VIDEO/BUILD/STRIKERS.VGF @@ -0,0 +1,44 @@ +DIV-VIZ2 + +// file: strikers.vgf +// generated: Thu Mar 20 07:33:12 1997 +// from: Wavefront Object File "strikers.obj", and +// Material Library File "basev.mtl" +// by: obj2vgf (ver 0.29.01a) +// written: by Ken Olsen + +HEADER( + VERSION=02:05; + UNIT=m; + SCALE=1.0; + FILETYPE=GEOMETRY; +) +{ +} + +OBJECT( +) +{ + GEOGROUP + ( + F_MATERIAL="basev:shadow_mtl"; + ) + { + PMESH { + VERTEX_POOL { + {-2.4984, 0.1000, 0.6767} /* 0 */ + { 2.4718, 0.1000, 0.6675} /* 1 */ + { 2.4718, 0.1000, -1.3407} /* 2 */ + {-2.4984, 0.1000, -1.2230} /* 3 */ + { 2.1463, 0.1000, 2.5672} /* 4 */ + { 2.0378, 0.1000, -8.3966} /* 5 */ + {-2.2271, 0.1000, -8.3331} /* 6 */ + {-2.1729, 0.1000, 2.5764} /* 7 */ + } + CONNECTION_LIST (PCOUNT=4) { + {0, 1, 2, 3} /* */ + {4, 5, 6, 7} /* */ + } + } // End of pmesh + } // End of geogroup +} // End of object diff --git a/CONTENT/BT/VIDEO/BUILD/SWIFTS.BGF b/CONTENT/BT/VIDEO/BUILD/SWIFTS.BGF new file mode 100644 index 0000000..aa9be93 Binary files /dev/null and b/CONTENT/BT/VIDEO/BUILD/SWIFTS.BGF differ diff --git a/CONTENT/BT/VIDEO/BUILD/SWIFTS.VGF b/CONTENT/BT/VIDEO/BUILD/SWIFTS.VGF new file mode 100644 index 0000000..b6d864b --- /dev/null +++ b/CONTENT/BT/VIDEO/BUILD/SWIFTS.VGF @@ -0,0 +1,55 @@ +DIV-VIZ2 + +// file: swifts.vgf +// generated: Thu Mar 20 07:33:12 1997 +// from: Wavefront Object File "swifts.obj", and +// Material Library File "basev.mtl" +// by: obj2vgf (ver 0.29.01a) +// written: by Ken Olsen + +HEADER( + VERSION=02:05; + UNIT=m; + SCALE=1.0; + FILETYPE=GEOMETRY; +) +{ +} + +OBJECT( +) +{ + GEOGROUP + ( + F_MATERIAL="basev:shadow_mtl"; + ) + { + PMESH { + VERTEX_POOL { + {-2.2165, 0.0500, 2.5501} /* 0 */ + { 2.2091, 0.0500, 2.5658} /* 1 */ + { 2.2091, 0.0500, 1.1949} /* 2 */ + {-2.2322, 0.0500, 1.2422} /* 3 */ + {-2.1561, 0.0500, -0.1452} /* 4 */ + { 2.2684, 0.0500, -0.1195} /* 5 */ + { 2.2406, 0.0500, -2.6499} /* 6 */ + {-2.1818, 0.0500, -2.6418} /* 7 */ + { 1.3166, 0.0500, -3.1822} /* 8 */ + {-0.7417, 0.0500, -3.7640} /* 9 */ + {-1.2558, 0.0500, -3.2080} /* 10 */ + {-1.3072, 0.0500, 3.2264} /* 11 */ + { 1.3166, 0.0500, 3.2264} /* 12 */ + { 0.9822, 0.0500, -3.8257} /* 13 */ + {-0.1239, 0.0500, -4.0058} /* 14 */ + } + CONNECTION_LIST (PCOUNT=4) { + {0, 1, 2, 3} /* */ + {4, 5, 6, 7} /* */ + {8, 13, 14, 9} /* */ + } + CONNECTION_LIST (PCOUNT=5) { + {8, 9, 10, 11, 12} /* */ + } + } // End of pmesh + } // End of geogroup +} // End of object diff --git a/CONTENT/BT/VIDEO/DAFC.PFX b/CONTENT/BT/VIDEO/DAFC.PFX new file mode 100644 index 0000000..ef516fd --- /dev/null +++ b/CONTENT/BT/VIDEO/DAFC.PFX @@ -0,0 +1,32 @@ +btfx:firesmoke1_scr_tex +0x30000668 25 0.2 100 +0 -0.25 -4 1.25 +2 1 -3 -4 -2 -3 +0.5 1 0 0 -1 0.0 +0 1 3 0 0.5 2 +1 0 +2.20 1.30 0.90 1.60 0.00 0.00 0.00 0.00 +2.00 0.50 0.00 0.60 0.00 0.00 0.00 0.00 +-0.10 -0.30 -1.0 -2 0.00 0.00 0.00 2.00 +0.00 0.00 -1.00 -2 0.00 0.00 0.00 2.00 +1 1 +0.1 0.4 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one diff --git a/CONTENT/BT/VIDEO/DBIGBOOM.PFX b/CONTENT/BT/VIDEO/DBIGBOOM.PFX new file mode 100644 index 0000000..4bafb27 --- /dev/null +++ b/CONTENT/BT/VIDEO/DBIGBOOM.PFX @@ -0,0 +1,33 @@ +btfx:firesmoke2_scr_tex +0x30000674 12 0.25 40 +0 1 0 5 +110 30 110 -220 -60 -220 +5.5 5.0 25 30 -1 0 +2.5 -0.5 2.5 -5 -10 -5 +2 0 +2.00 0.70 0.20 2.00 0.00 0.00 0.00 0.00 +1.00 0.30 0.00 1.00 0.00 0.00 0.00 0.00 +0.0 -0.20 -0.50 -0.50 0.00 0.00 0.00 0.00 +0.0 0.00 0.00 -2.00 0.00 0.00 0.00 0.00 +10 1 +1.0 1.5 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one + \ No newline at end of file diff --git a/CONTENT/BT/VIDEO/DDAM1.PFX b/CONTENT/BT/VIDEO/DDAM1.PFX new file mode 100644 index 0000000..90d3cc3 --- /dev/null +++ b/CONTENT/BT/VIDEO/DDAM1.PFX @@ -0,0 +1,32 @@ +btfx:firesmoke1_scr_tex +0x30000670 15 1 8 +0 0 0 1 +1 2 1 -2 1 -2 +0.5 0.5 1 1 0.00 0 +0 1 0 0 1 0 +0.5 0.5 +0.50 0.50 0.50 1.10 0.00 0.00 0.00 0.00 +0.50 0.50 0.50 1.00 0.00 0.00 0.00 0.00 +0.10 0.10 0.10 0.00 0.00 0.00 0.00 0.00 +0.10 0.10 0.10 0.00 0.00 0.00 0.00 0.00 +10 1 +1.0 0.5 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one diff --git a/CONTENT/BT/VIDEO/DDAM2.PFX b/CONTENT/BT/VIDEO/DDAM2.PFX new file mode 100644 index 0000000..5e0558c --- /dev/null +++ b/CONTENT/BT/VIDEO/DDAM2.PFX @@ -0,0 +1,32 @@ +btfx:firesmoke1_scr_tex +0x30000670 35 2 16 +0 0 0 1 +2 3 2 -4 1 -4 +0.5 0.5 1 1 0.00 0 +0 1 0 0 1 0 +0.5 0.5 +0.30 0.30 0.30 1.10 0.00 0.00 0.00 0.00 +0.30 0.30 0.30 1.00 0.00 0.00 0.00 0.00 +-0.00 -0.00 -0.00 0.00 0.00 0.00 0.00 0.00 +0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 +10 1 +1.5 0.5 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one diff --git a/CONTENT/BT/VIDEO/DDAM3.PFX b/CONTENT/BT/VIDEO/DDAM3.PFX new file mode 100644 index 0000000..e72e9c1 --- /dev/null +++ b/CONTENT/BT/VIDEO/DDAM3.PFX @@ -0,0 +1,32 @@ +btfx:firesmoke1_scr_tex +0x30000670 50 4 20 +0 0 0 1 +1 1 1 -2 1 -2 +0.6 0.6 1.2 1 -0.7 0 +0 0.75 0 0 1 0 +0.5 0.5 +0.50 0.20 0.00 1.50 0.00 0.00 0.00 0.00 +0.00 0.00 0.00 1.00 0.00 0.00 0.00 0.00 +-0.50 -0.50 -0.50 0.00 0.00 0.00 0.00 0.00 +0.00 0.00 0.00 -0.10 0.00 0.00 0.00 0.00 +10 1 +1.75 0.5 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one diff --git a/CONTENT/BT/VIDEO/DDAM4.PFX b/CONTENT/BT/VIDEO/DDAM4.PFX new file mode 100644 index 0000000..47dc9a1 --- /dev/null +++ b/CONTENT/BT/VIDEO/DDAM4.PFX @@ -0,0 +1,32 @@ +btfx:firesmoke1_scr_tex +0x30000670 55 5 20 +0 0 0 1 +1 1 1 -2 -2 -2 +0.5 0.5 1.5 1 -1.0 0 +0 2.5 0 0 1.5 0 +0.5 0.5 +1.70 0.70 0.20 2.00 0.00 0.00 0.00 0.00 +0.00 0.00 0.00 1.00 0.00 0.00 0.00 0.00 +-1.50 -1.50 -1.50 0.00 0.00 0.00 0.00 0.00 +0.00 0.00 0.00 -0.10 0.00 0.00 0.00 0.00 +10 1 +2.0 0.5 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one diff --git a/CONTENT/BT/VIDEO/DDAM5.PFX b/CONTENT/BT/VIDEO/DDAM5.PFX new file mode 100644 index 0000000..82807a6 --- /dev/null +++ b/CONTENT/BT/VIDEO/DDAM5.PFX @@ -0,0 +1,33 @@ +btfx:firesmoke4_scr_tex +0x30000674 15 0.5 20 +0 1 0 2 +15 10 20 -30 -20 -40 +1.5 2.0 5 5 -1 0 +2.5 2.5 2.5 -5 -10 -5 +7 3 +2.00 0.70 0.20 2.00 0.00 0.00 0.00 0.00 +1.00 0.30 0.00 1.00 0.00 0.00 0.00 0.00 +0.0 -0.20 -0.50 -0.50 0.00 0.00 0.00 0.00 +0.0 0.00 0.00 -2.00 0.00 0.00 0.00 0.00 +10 1 +1.5 0.5 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one + \ No newline at end of file diff --git a/CONTENT/BT/VIDEO/DDTHSMK.PFX b/CONTENT/BT/VIDEO/DDTHSMK.PFX new file mode 100644 index 0000000..373f49e --- /dev/null +++ b/CONTENT/BT/VIDEO/DDTHSMK.PFX @@ -0,0 +1,32 @@ +btfx:firesmoke1_scr_tex +0x30000002 30 10 3 +0 3 0 2 +1 5 1 -2 4 -2 +2.0 0.9 1.9 1 -0.001 0 +0 1 0 0 1 0.5 +0.1 0.1 + 0.70 0.30 0.10 2.00 0.00 0.00 0.00 0.50 + 0.50 0.20 0.00 1.00 0.00 0.00 0.00 0.50 +-2.30 -1.10 -1.00 0.00 0.00 0.00 0.00 0.00 +-2.00 -1.00 -0.60 0.00 0.00 0.00 0.00 0.00 +0 0 +6 2 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one diff --git a/CONTENT/BT/VIDEO/DLRMTAIL.PFX b/CONTENT/BT/VIDEO/DLRMTAIL.PFX new file mode 100644 index 0000000..4211e1b --- /dev/null +++ b/CONTENT/BT/VIDEO/DLRMTAIL.PFX @@ -0,0 +1,33 @@ +btfx:firesmoke4_scr_tex +0x30000667 35 2 30 +0 0 0 0 +3 2 10 -6 -1 20 +1 1 20 10 0 0 +6 3 3 -12 2 -6 +0 0 +2.20 1.00 0.50 1.60 0.00 0.00 0.00 0.00 +0.00 0.00 0.00 1.00 0.00 0.00 0.00 0.00 +-0.20 -0.20 -0.20 -0.50 0.00 0.00 0.00 0.00 +0.00 0.00 0.00 1.10 0.00 0.00 0.00 0.00 +10 1 +0.5 0.5 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one + \ No newline at end of file diff --git a/CONTENT/BT/VIDEO/DMEDBOOM.PFX b/CONTENT/BT/VIDEO/DMEDBOOM.PFX new file mode 100644 index 0000000..e350f99 --- /dev/null +++ b/CONTENT/BT/VIDEO/DMEDBOOM.PFX @@ -0,0 +1,33 @@ +btfx:firesmoke4_scr_tex +0x30000674 10 0.3 20 +0 1 0 2 +120 30 120 -240 -60 -240 +3.5 1.0 8 8 -1 0 +2.5 2.5 2.5 -5 -10 -5 +7 3 +1.30 0.50 0.30 2.00 0.00 0.00 0.00 0.00 +0.20 0.20 0.20 1.00 0.00 0.00 0.00 0.00 +0.0 0.00 0.00 -0.50 0.00 0.00 0.00 0.00 +0.0 0.00 0.00 -2.00 0.00 0.00 0.00 0.00 +10 1 +1.5 0.5 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one + \ No newline at end of file diff --git a/CONTENT/BT/VIDEO/DMISSING.PFX b/CONTENT/BT/VIDEO/DMISSING.PFX new file mode 100644 index 0000000..c075d20 --- /dev/null +++ b/CONTENT/BT/VIDEO/DMISSING.PFX @@ -0,0 +1,33 @@ +btfx:firesmoke1_scr_tex +0x30000670 55 6 18 +0 0 0 1 +1 1 1 -2 -2 -2 +0.5 0.5 1.5 1 -1.0 0 +0 2.5 0 0 1.5 0 +0.5 0.5 +0.0 1.0 0.0 2.00 0.00 0.00 0.00 0.00 +0.00 0.00 0.00 1.00 0.00 0.00 0.00 0.00 +0.0 1.0 0.0 0.00 0.00 0.00 0.00 0.00 +0.00 0.00 0.00 -0.10 0.00 0.00 0.00 0.00 +10 1 +2.0 0.5 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one + \ No newline at end of file diff --git a/CONTENT/BT/VIDEO/DNBOOM.PFX b/CONTENT/BT/VIDEO/DNBOOM.PFX new file mode 100644 index 0000000..9bdf19a --- /dev/null +++ b/CONTENT/BT/VIDEO/DNBOOM.PFX @@ -0,0 +1,33 @@ +btfx:firesmoke1_scr_tex +0x30000674 35 0.2 150 +0 1 0 2 +150 60 150 -300 -250 -300 +0.5 5.0 25 25 -5 0 +2.5 2.5 2.5 -5 -10 -5 +5 1 +0.8 0.30 0.00 2.00 0.00 0.00 0.00 0.00 +0.8 0.30 0.00 1.00 0.00 0.00 0.00 0.00 +0 00 0 -2 0.00 0.00 0.00 0.00 +0 00 0 -5 0.00 0.00 0.00 0.00 +10 1 +1.5 1 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one + \ No newline at end of file diff --git a/CONTENT/BT/VIDEO/DSMLBOOM.PFX b/CONTENT/BT/VIDEO/DSMLBOOM.PFX new file mode 100644 index 0000000..01ac495 --- /dev/null +++ b/CONTENT/BT/VIDEO/DSMLBOOM.PFX @@ -0,0 +1,33 @@ +btfx:firesmoke4_scr_tex +0x30000674 15 0.5 24 +0 1 0 1 +25 40 25 -50 -50 -50 +2.5 1.0 4 4 -1 0 +2.5 2.5 2.5 -5 -10 -5 +3 3 +0.90 0.90 0.90 1.00 0.00 0.00 0.00 0.00 +0.20 0.20 0.20 0.50 0.00 0.00 0.00 0.00 +0.0 0.00 0.00 -0.50 0.00 0.00 0.00 0.00 +0.0 0.00 0.00 -2.00 0.00 0.00 0.00 0.00 +10 1 +2.5 0.5 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one + \ No newline at end of file diff --git a/CONTENT/BT/VIDEO/DSRM.PFX b/CONTENT/BT/VIDEO/DSRM.PFX new file mode 100644 index 0000000..ff2447b --- /dev/null +++ b/CONTENT/BT/VIDEO/DSRM.PFX @@ -0,0 +1,33 @@ +btfx:firesmoke1_scr_tex +0x30000667 65 2 300 +0 0 0 1 +3 2 10 -6 -1 20 +1 2 4 2 6 0 +1 1 1 -2 -2 -2 +0 0 +1.80 0.90 0.20 1.60 0.00 0.00 0.00 0.00 +0.20 0.05 0.00 1.00 0.00 0.00 0.00 0.00 +0.20 0.05 0.00 0.0 0.00 0.00 0.00 0.00 +0.10 0.00 0.00 0.00 0.00 0.00 0.00 0.00 +10 1 +0.1 0.1 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one + \ No newline at end of file diff --git a/CONTENT/BT/VIDEO/DTRKBOOM.PFX b/CONTENT/BT/VIDEO/DTRKBOOM.PFX new file mode 100644 index 0000000..f65b214 --- /dev/null +++ b/CONTENT/BT/VIDEO/DTRKBOOM.PFX @@ -0,0 +1,33 @@ +btfx:firesmoke4_scr_tex +0x30000674 10 0.5 16 +0 1 0 2 +150 30 150 -300 -60 -300 +3.5 2.0 10 10 -1 0 +2.5 2.5 2.5 -5 -10 -5 +7 3 +2.00 0.70 0.20 2.00 0.00 0.00 0.00 0.00 +1.00 0.30 0.00 1.00 0.00 0.00 0.00 0.00 +0.0 -0.20 -0.50 -0.50 0.00 0.00 0.00 0.00 +0.0 0.00 0.00 -2.00 0.00 0.00 0.00 0.00 +10 1 +1.5 0.5 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one + \ No newline at end of file diff --git a/CONTENT/BT/VIDEO/DTRKBURN.PFX b/CONTENT/BT/VIDEO/DTRKBURN.PFX new file mode 100644 index 0000000..db60ab2 --- /dev/null +++ b/CONTENT/BT/VIDEO/DTRKBURN.PFX @@ -0,0 +1,32 @@ +btfx:firesmoke4_scr_tex +0x30000667 30 5 4 +0 0 0 1 +1 1 1 -2 1 -2 +1.5 0.5 0.5 0.5 0.00 0 +0 1 0 0 0.5 0 +0.25 0.2 +1.50 0.60 0.20 2.50 0.00 0.00 0.00 0.00 +1.00 0.30 0.00 1.00 0.00 0.00 0.00 0.00 +-0.20 -0.50 -0.90 0.00 0.00 0.00 0.00 0.00 +-0.10 -0.10 -0.10 0.00 0.00 0.00 0.00 0.00 +0 0 +4 1 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one diff --git a/CONTENT/BT/VIDEO/FIRSKIN.DZM b/CONTENT/BT/VIDEO/FIRSKIN.DZM new file mode 100644 index 0000000..cb6e8e6 --- /dev/null +++ b/CONTENT/BT/VIDEO/FIRSKIN.DZM @@ -0,0 +1,90 @@ +[dz_searchlight] +material=firskin:thor2_dz_searchlight_mtl +material=firskin:thor2wht_dz_searchlight_mtl +[dz_rearrtorso] +material=firskin:thor2_dz_rearrtorso_mtl +material=firskin:thor3_dz_rearrtorso_mtl +[dz_utorso] +material=firskin:thor2_dz_utorso_mtl +material=firskin:thor3_dz_utorso_mtl +material=firskin:thor1_dz_utorso_mtl +[dz_reardtorso] +material=firskin:thor2_dz_reardtorso_mtl +[dz_rearutorso] +material=firskin:thor2_dz_rearutorso_mtl +material=firskin:thor3_dz_rearutorso_mtl +[dz_rearltorso] +material=firskin:thor2_dz_rearltorso_mtl +material=firskin:thor3_dz_rearltorso_mtl +[dz_rfoot] +material=firskin:gen1a_dz_rfoot_mtl +material=firskin:gen1_dz_rfoot_mtl +[dz_lfoot] +material=firskin:gen1a_dz_lfoot_mtl +material=firskin:gen1_dz_lfoot_mtl +[dz_rtorso] +material=firskin:gen3a_dz_rtorso_mtl +material=firskin:gen3_dz_rtorso_mtl +material=firskin:thor3_dz_rtorso_mtl +material=firskin:thor4_dz_rtorso_mtl +material=firskin:thor1_dz_rtorso_mtl +[dz_ltorso] +material=firskin:gen3a_dz_ltorso_mtl +material=firskin:gen3_dz_ltorso_mtl +material=firskin:thor3_dz_ltorso_mtl +material=firskin:thor4_dz_ltorso_mtl +material=firskin:thor1_dz_ltorso_mtl +[dz_rgun] +material=firskin:gen3a_dz_rgun_mtl +material=firskin:gen3_dz_rgun_mtl +material=firskin:gen1_dz_rgun_mtl +material=firskin:gen4_dz_rgun_mtl +material=firskin:gen2_dz_rgun_mtl +material=firskin:gen2a_dz_rgun_mtl +material=firskin:damcolor_dz_rgun_mtl +material=firskin:gen3drkgry_dz_rgun_mtl +[dz_hip] +material=firskin:gen3a_dz_hip_mtl +material=firskin:gen3_dz_hip_mtl +material=firskin:gen4_dz_hip_mtl +[dz_larm] +material=firskin:gen3a_dz_larm_mtl +material=firskin:gen3_dz_larm_mtl +material=firskin:gen1_dz_larm_mtl +material=firskin:gen4_dz_larm_mtl +material=firskin:gen2_dz_larm_mtl +material=firskin:gen4a_dz_larm_mtl +material=firskin:damcolor_dz_larm_mtl +material=firskin:gen3drkgry_dz_larm_mtl +[dz_rarm] +material=firskin:gen3_dz_rarm_mtl +material=firskin:gen1_dz_rarm_mtl +material=firskin:blakskn_dz_rarm_mtl +material=firskin:gen2_dz_rarm_mtl +material=firskin:gen3drkgry_dz_rarm_mtl +material=firskin:gen3medgry_dz_rarm_mtl +[dz_rdleg] +material=firskin:gen1_dz_rdleg_mtl +material=firskin:lgo1_dz_rdleg_mtl +material=firskin:blakskn_dz_rdleg_mtl +[dz_ldleg] +material=firskin:gen1_dz_ldleg_mtl +material=firskin:lgo1_dz_ldleg_mtl +material=firskin:blakskn_dz_ldleg_mtl +[dz_ruleg] +material=firskin:gen1_dz_ruleg_mtl +material=firskin:gen4_dz_ruleg_mtl +material=firskin:gen2_dz_ruleg_mtl +[dz_luleg] +material=firskin:gen1_dz_luleg_mtl +material=firskin:gen4_dz_luleg_mtl +material=firskin:gen2_dz_luleg_mtl +[dz_dtorso] +material=firskin:thor4_dz_dtorso_mtl +material=firskin:thor1_dz_dtorso_mtl +[dz_lgun] +material=firskin:gen4_dz_lgun_mtl +material=firskin:gen2_dz_lgun_mtl +material=firskin:gen2a_dz_lgun_mtl +material=firskin:damcolor_dz_lgun_mtl +material=firskin:gen3drkgry_dz_lgun_mtl diff --git a/CONTENT/BT/VIDEO/FIRXSKIN.DZM b/CONTENT/BT/VIDEO/FIRXSKIN.DZM new file mode 100644 index 0000000..4f18a44 --- /dev/null +++ b/CONTENT/BT/VIDEO/FIRXSKIN.DZM @@ -0,0 +1,3 @@ +[dz_utorso] +material=fixskin:thx2_dz_utorso_mtl +material=fixskin:blakskn_dz_utorso_mtl diff --git a/CONTENT/BT/VIDEO/FLUSH.PFX b/CONTENT/BT/VIDEO/FLUSH.PFX new file mode 100644 index 0000000..2fa065a --- /dev/null +++ b/CONTENT/BT/VIDEO/FLUSH.PFX @@ -0,0 +1,33 @@ +btfx:firesmoke1_scr_tex +0x30000670 35 1 30 +0 2 0 2 +1 10 1 -2 3 -2 +2.5 0.5 2 2 0.00 0 +0 2 0 0 2 0 +0.3 0.9 +0.70 0.90 1.60 1.00 0.00 0.00 0.00 0.00 +0.70 0.90 1.30 0.80 0.00 0.00 0.00 0.00 +0.40 0.40 1.60 0.00 0.00 0.00 0.00 0.00 +0.40 0.50 1.40 0.00 0.00 0.00 0.00 0.00 +10 1 +3.5 0.5 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one + \ No newline at end of file diff --git a/CONTENT/BT/VIDEO/GEO/AB01.BGF b/CONTENT/BT/VIDEO/GEO/AB01.BGF new file mode 100644 index 0000000..34a7045 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/AB01.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/AB02.BGF b/CONTENT/BT/VIDEO/GEO/AB02.BGF new file mode 100644 index 0000000..1de034b Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/AB02.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/AB04.BGF b/CONTENT/BT/VIDEO/GEO/AB04.BGF new file mode 100644 index 0000000..5805ecd Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/AB04.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/AB05.BGF b/CONTENT/BT/VIDEO/GEO/AB05.BGF new file mode 100644 index 0000000..89e74f9 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/AB05.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/AB06D_FR.BGF b/CONTENT/BT/VIDEO/GEO/AB06D_FR.BGF new file mode 100644 index 0000000..4e92089 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/AB06D_FR.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/AB07.BGF b/CONTENT/BT/VIDEO/GEO/AB07.BGF new file mode 100644 index 0000000..9570d1a Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/AB07.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/AB07D_FR.BGF b/CONTENT/BT/VIDEO/GEO/AB07D_FR.BGF new file mode 100644 index 0000000..4f215e9 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/AB07D_FR.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/AB08.BGF b/CONTENT/BT/VIDEO/GEO/AB08.BGF new file mode 100644 index 0000000..513901e Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/AB08.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/AB09D_FR.BGF b/CONTENT/BT/VIDEO/GEO/AB09D_FR.BGF new file mode 100644 index 0000000..969efac Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/AB09D_FR.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/AB10D_FR.BGF b/CONTENT/BT/VIDEO/GEO/AB10D_FR.BGF new file mode 100644 index 0000000..856da77 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/AB10D_FR.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/ABG.BGF b/CONTENT/BT/VIDEO/GEO/ABG.BGF new file mode 100644 index 0000000..f4698c9 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/ABG.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/ACT01.BGF b/CONTENT/BT/VIDEO/GEO/ACT01.BGF new file mode 100644 index 0000000..b4864a2 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/ACT01.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/ACT02.BGF b/CONTENT/BT/VIDEO/GEO/ACT02.BGF new file mode 100644 index 0000000..fd1f4c6 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/ACT02.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/ACT03.BGF b/CONTENT/BT/VIDEO/GEO/ACT03.BGF new file mode 100644 index 0000000..b6cee82 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/ACT03.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/ACT04.BGF b/CONTENT/BT/VIDEO/GEO/ACT04.BGF new file mode 100644 index 0000000..a1f2c46 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/ACT04.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/ACT05.BGF b/CONTENT/BT/VIDEO/GEO/ACT05.BGF new file mode 100644 index 0000000..4242e04 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/ACT05.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/ADSUP1.BGF b/CONTENT/BT/VIDEO/GEO/ADSUP1.BGF new file mode 100644 index 0000000..1d22246 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/ADSUP1.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/ADSUP2.BGF b/CONTENT/BT/VIDEO/GEO/ADSUP2.BGF new file mode 100644 index 0000000..baa272d Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/ADSUP2.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/ADWLK1.BGF b/CONTENT/BT/VIDEO/GEO/ADWLK1.BGF new file mode 100644 index 0000000..7fdf7a2 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/ADWLK1.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/ADWLK2.BGF b/CONTENT/BT/VIDEO/GEO/ADWLK2.BGF new file mode 100644 index 0000000..bf3bd74 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/ADWLK2.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/ADWLK3.BGF b/CONTENT/BT/VIDEO/GEO/ADWLK3.BGF new file mode 100644 index 0000000..246ded5 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/ADWLK3.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/AFLOOR.BGF b/CONTENT/BT/VIDEO/GEO/AFLOOR.BGF new file mode 100644 index 0000000..77f3c37 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/AFLOOR.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/APCS.BGF b/CONTENT/BT/VIDEO/GEO/APCS.BGF new file mode 100644 index 0000000..84a2116 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/APCS.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/AR01_FR.BGF b/CONTENT/BT/VIDEO/GEO/AR01_FR.BGF new file mode 100644 index 0000000..dcf45f9 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/AR01_FR.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/AR02_FR.BGF b/CONTENT/BT/VIDEO/GEO/AR02_FR.BGF new file mode 100644 index 0000000..da60a4f Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/AR02_FR.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/AR03_FR.BGF b/CONTENT/BT/VIDEO/GEO/AR03_FR.BGF new file mode 100644 index 0000000..39c9e43 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/AR03_FR.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/AR04_FR.BGF b/CONTENT/BT/VIDEO/GEO/AR04_FR.BGF new file mode 100644 index 0000000..051a6f7 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/AR04_FR.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/AR05_FR.BGF b/CONTENT/BT/VIDEO/GEO/AR05_FR.BGF new file mode 100644 index 0000000..cc73edf Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/AR05_FR.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/ARBAN1.BGF b/CONTENT/BT/VIDEO/GEO/ARBAN1.BGF new file mode 100644 index 0000000..941470e Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/ARBAN1.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/ARBAN2.BGF b/CONTENT/BT/VIDEO/GEO/ARBAN2.BGF new file mode 100644 index 0000000..590972a Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/ARBAN2.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/ARBAN3.BGF b/CONTENT/BT/VIDEO/GEO/ARBAN3.BGF new file mode 100644 index 0000000..80ef65d Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/ARBAN3.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/ARBAN4.BGF b/CONTENT/BT/VIDEO/GEO/ARBAN4.BGF new file mode 100644 index 0000000..767cb48 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/ARBAN4.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/ARBAN5.BGF b/CONTENT/BT/VIDEO/GEO/ARBAN5.BGF new file mode 100644 index 0000000..f8d7d65 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/ARBAN5.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/ARBAN6.BGF b/CONTENT/BT/VIDEO/GEO/ARBAN6.BGF new file mode 100644 index 0000000..4f46e38 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/ARBAN6.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/ARCLD.BGF b/CONTENT/BT/VIDEO/GEO/ARCLD.BGF new file mode 100644 index 0000000..ed5ad79 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/ARCLD.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/ARENA/AVA_TSHD.BGF b/CONTENT/BT/VIDEO/GEO/ARENA/AVA_TSHD.BGF new file mode 100644 index 0000000..bc54a5e Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/ARENA/AVA_TSHD.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/ARENA/BLH_TSHD.BGF b/CONTENT/BT/VIDEO/GEO/ARENA/BLH_TSHD.BGF new file mode 100644 index 0000000..450c45d Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/ARENA/BLH_TSHD.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/ARENA/FIR_TSHD.BGF b/CONTENT/BT/VIDEO/GEO/ARENA/FIR_TSHD.BGF new file mode 100644 index 0000000..22f221d Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/ARENA/FIR_TSHD.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/ARENA/LOK_TSHD.BGF b/CONTENT/BT/VIDEO/GEO/ARENA/LOK_TSHD.BGF new file mode 100644 index 0000000..0cf4b3d Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/ARENA/LOK_TSHD.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/ARENA/MAD_TSHD.BGF b/CONTENT/BT/VIDEO/GEO/ARENA/MAD_TSHD.BGF new file mode 100644 index 0000000..a5ccef4 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/ARENA/MAD_TSHD.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/ARENA/OWN_TSHD.BGF b/CONTENT/BT/VIDEO/GEO/ARENA/OWN_TSHD.BGF new file mode 100644 index 0000000..001d5da Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/ARENA/OWN_TSHD.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/ARENA/RAP_TSHD.BGF b/CONTENT/BT/VIDEO/GEO/ARENA/RAP_TSHD.BGF new file mode 100644 index 0000000..001d5da Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/ARENA/RAP_TSHD.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/ARENA/SND_TSHD.BGF b/CONTENT/BT/VIDEO/GEO/ARENA/SND_TSHD.BGF new file mode 100644 index 0000000..f944a37 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/ARENA/SND_TSHD.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/ARENA/STI_TSHD.BGF b/CONTENT/BT/VIDEO/GEO/ARENA/STI_TSHD.BGF new file mode 100644 index 0000000..001d5da Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/ARENA/STI_TSHD.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/ARENA/THR_TSHD.BGF b/CONTENT/BT/VIDEO/GEO/ARENA/THR_TSHD.BGF new file mode 100644 index 0000000..22f221d Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/ARENA/THR_TSHD.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/ARENA/VUL_TSHD.BGF b/CONTENT/BT/VIDEO/GEO/ARENA/VUL_TSHD.BGF new file mode 100644 index 0000000..d6fe8fe Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/ARENA/VUL_TSHD.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/ARENA3/AVA_TSHD.BGF b/CONTENT/BT/VIDEO/GEO/ARENA3/AVA_TSHD.BGF new file mode 100644 index 0000000..bc54a5e Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/ARENA3/AVA_TSHD.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/ARENA3/BLH_TSHD.BGF b/CONTENT/BT/VIDEO/GEO/ARENA3/BLH_TSHD.BGF new file mode 100644 index 0000000..450c45d Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/ARENA3/BLH_TSHD.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/ARENA3/FIR_TSHD.BGF b/CONTENT/BT/VIDEO/GEO/ARENA3/FIR_TSHD.BGF new file mode 100644 index 0000000..22f221d Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/ARENA3/FIR_TSHD.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/ARENA3/LOK_TSHD.BGF b/CONTENT/BT/VIDEO/GEO/ARENA3/LOK_TSHD.BGF new file mode 100644 index 0000000..0cf4b3d Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/ARENA3/LOK_TSHD.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/ARENA3/MAD_TSHD.BGF b/CONTENT/BT/VIDEO/GEO/ARENA3/MAD_TSHD.BGF new file mode 100644 index 0000000..a5ccef4 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/ARENA3/MAD_TSHD.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/ARENA3/OWN_TSHD.BGF b/CONTENT/BT/VIDEO/GEO/ARENA3/OWN_TSHD.BGF new file mode 100644 index 0000000..001d5da Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/ARENA3/OWN_TSHD.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/ARENA3/RAP_TSHD.BGF b/CONTENT/BT/VIDEO/GEO/ARENA3/RAP_TSHD.BGF new file mode 100644 index 0000000..001d5da Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/ARENA3/RAP_TSHD.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/ARENA3/SND_TSHD.BGF b/CONTENT/BT/VIDEO/GEO/ARENA3/SND_TSHD.BGF new file mode 100644 index 0000000..f944a37 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/ARENA3/SND_TSHD.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/ARENA3/STI_TSHD.BGF b/CONTENT/BT/VIDEO/GEO/ARENA3/STI_TSHD.BGF new file mode 100644 index 0000000..001d5da Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/ARENA3/STI_TSHD.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/ARENA3/THR_TSHD.BGF b/CONTENT/BT/VIDEO/GEO/ARENA3/THR_TSHD.BGF new file mode 100644 index 0000000..22f221d Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/ARENA3/THR_TSHD.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/ARENA3/VUL_TSHD.BGF b/CONTENT/BT/VIDEO/GEO/ARENA3/VUL_TSHD.BGF new file mode 100644 index 0000000..d6fe8fe Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/ARENA3/VUL_TSHD.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/ARHORIZ.BGF b/CONTENT/BT/VIDEO/GEO/ARHORIZ.BGF new file mode 100644 index 0000000..551bdf4 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/ARHORIZ.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/ARLID.BGF b/CONTENT/BT/VIDEO/GEO/ARLID.BGF new file mode 100644 index 0000000..c84db7e Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/ARLID.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/ARMRS.BGF b/CONTENT/BT/VIDEO/GEO/ARMRS.BGF new file mode 100644 index 0000000..5600fc5 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/ARMRS.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/ARTCGRND.BGF b/CONTENT/BT/VIDEO/GEO/ARTCGRND.BGF new file mode 100644 index 0000000..5b29a30 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/ARTCGRND.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/AVADLARM.BGF b/CONTENT/BT/VIDEO/GEO/AVADLARM.BGF new file mode 100644 index 0000000..7c8ccff Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/AVADLARM.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/AVADLGUN.BGF b/CONTENT/BT/VIDEO/GEO/AVADLGUN.BGF new file mode 100644 index 0000000..57c29d8 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/AVADLGUN.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/AVADRARM.BGF b/CONTENT/BT/VIDEO/GEO/AVADRARM.BGF new file mode 100644 index 0000000..8c48613 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/AVADRARM.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/AVADRGUN.BGF b/CONTENT/BT/VIDEO/GEO/AVADRGUN.BGF new file mode 100644 index 0000000..3dab823 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/AVADRGUN.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/AVA_HIP.BGF b/CONTENT/BT/VIDEO/GEO/AVA_HIP.BGF new file mode 100644 index 0000000..0d242bd Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/AVA_HIP.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/AVA_LARM.BGF b/CONTENT/BT/VIDEO/GEO/AVA_LARM.BGF new file mode 100644 index 0000000..ad74d84 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/AVA_LARM.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/AVA_LBTO.BGF b/CONTENT/BT/VIDEO/GEO/AVA_LBTO.BGF new file mode 100644 index 0000000..1079bb9 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/AVA_LBTO.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/AVA_LDOO.BGF b/CONTENT/BT/VIDEO/GEO/AVA_LDOO.BGF new file mode 100644 index 0000000..88149a3 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/AVA_LDOO.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/AVA_LFOT.BGF b/CONTENT/BT/VIDEO/GEO/AVA_LFOT.BGF new file mode 100644 index 0000000..8a101d0 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/AVA_LFOT.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/AVA_LGUN.BGF b/CONTENT/BT/VIDEO/GEO/AVA_LGUN.BGF new file mode 100644 index 0000000..6f5e411 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/AVA_LGUN.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/AVA_LITO.BGF b/CONTENT/BT/VIDEO/GEO/AVA_LITO.BGF new file mode 100644 index 0000000..b1775ef Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/AVA_LITO.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/AVA_LOTO.BGF b/CONTENT/BT/VIDEO/GEO/AVA_LOTO.BGF new file mode 100644 index 0000000..fe2ae44 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/AVA_LOTO.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/AVA_RARM.BGF b/CONTENT/BT/VIDEO/GEO/AVA_RARM.BGF new file mode 100644 index 0000000..6878db2 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/AVA_RARM.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/AVA_RBTO.BGF b/CONTENT/BT/VIDEO/GEO/AVA_RBTO.BGF new file mode 100644 index 0000000..8c24d4d Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/AVA_RBTO.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/AVA_RDOO.BGF b/CONTENT/BT/VIDEO/GEO/AVA_RDOO.BGF new file mode 100644 index 0000000..74e7ca6 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/AVA_RDOO.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/AVA_RFOT.BGF b/CONTENT/BT/VIDEO/GEO/AVA_RFOT.BGF new file mode 100644 index 0000000..1a10f31 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/AVA_RFOT.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/AVA_RITO.BGF b/CONTENT/BT/VIDEO/GEO/AVA_RITO.BGF new file mode 100644 index 0000000..cbbce90 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/AVA_RITO.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/AVA_ROTO.BGF b/CONTENT/BT/VIDEO/GEO/AVA_ROTO.BGF new file mode 100644 index 0000000..5609bba Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/AVA_ROTO.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/AVX_COP.BGF b/CONTENT/BT/VIDEO/GEO/AVX_COP.BGF new file mode 100644 index 0000000..9bc8593 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/AVX_COP.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/AVX_TOR.BGF b/CONTENT/BT/VIDEO/GEO/AVX_TOR.BGF new file mode 100644 index 0000000..01d61c9 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/AVX_TOR.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/AW01.BGF b/CONTENT/BT/VIDEO/GEO/AW01.BGF new file mode 100644 index 0000000..4af501e Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/AW01.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/AW02.BGF b/CONTENT/BT/VIDEO/GEO/AW02.BGF new file mode 100644 index 0000000..8979d8a Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/AW02.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/AW03.BGF b/CONTENT/BT/VIDEO/GEO/AW03.BGF new file mode 100644 index 0000000..5864142 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/AW03.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/AW05.BGF b/CONTENT/BT/VIDEO/GEO/AW05.BGF new file mode 100644 index 0000000..6c4fdfa Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/AW05.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/AWBOX1.BGF b/CONTENT/BT/VIDEO/GEO/AWBOX1.BGF new file mode 100644 index 0000000..fd2ee82 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/AWBOX1.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/AWWLK1.BGF b/CONTENT/BT/VIDEO/GEO/AWWLK1.BGF new file mode 100644 index 0000000..37a8c31 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/AWWLK1.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/BAC1.BGF b/CONTENT/BT/VIDEO/GEO/BAC1.BGF new file mode 100644 index 0000000..3f26005 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/BAC1.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/BALL1.BGF b/CONTENT/BT/VIDEO/GEO/BALL1.BGF new file mode 100644 index 0000000..82b19d1 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/BALL1.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/BALL2.BGF b/CONTENT/BT/VIDEO/GEO/BALL2.BGF new file mode 100644 index 0000000..d47abbe Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/BALL2.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/BALL3.BGF b/CONTENT/BT/VIDEO/GEO/BALL3.BGF new file mode 100644 index 0000000..6676702 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/BALL3.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/BALL4.BGF b/CONTENT/BT/VIDEO/GEO/BALL4.BGF new file mode 100644 index 0000000..381021f Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/BALL4.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/BBG.BGF b/CONTENT/BT/VIDEO/GEO/BBG.BGF new file mode 100644 index 0000000..ae6178f Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/BBG.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/BCOR1.BGF b/CONTENT/BT/VIDEO/GEO/BCOR1.BGF new file mode 100644 index 0000000..74b2831 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/BCOR1.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/BCOR2.BGF b/CONTENT/BT/VIDEO/GEO/BCOR2.BGF new file mode 100644 index 0000000..8942aa7 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/BCOR2.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/BDET1.BGF b/CONTENT/BT/VIDEO/GEO/BDET1.BGF new file mode 100644 index 0000000..b63fa51 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/BDET1.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/BDET2.BGF b/CONTENT/BT/VIDEO/GEO/BDET2.BGF new file mode 100644 index 0000000..f1c55e1 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/BDET2.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/BDET3.BGF b/CONTENT/BT/VIDEO/GEO/BDET3.BGF new file mode 100644 index 0000000..d3f315a Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/BDET3.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/BDET4.BGF b/CONTENT/BT/VIDEO/GEO/BDET4.BGF new file mode 100644 index 0000000..0804c55 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/BDET4.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/BDET6.BGF b/CONTENT/BT/VIDEO/GEO/BDET6.BGF new file mode 100644 index 0000000..d76640c Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/BDET6.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/BLD03.BGF b/CONTENT/BT/VIDEO/GEO/BLD03.BGF new file mode 100644 index 0000000..0288a87 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/BLD03.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/BLD04.BGF b/CONTENT/BT/VIDEO/GEO/BLD04.BGF new file mode 100644 index 0000000..6209a92 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/BLD04.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/BLD08_LP.BGF b/CONTENT/BT/VIDEO/GEO/BLD08_LP.BGF new file mode 100644 index 0000000..0ab6851 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/BLD08_LP.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/BLD24.BGF b/CONTENT/BT/VIDEO/GEO/BLD24.BGF new file mode 100644 index 0000000..957e1e2 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/BLD24.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/BLD26.BGF b/CONTENT/BT/VIDEO/GEO/BLD26.BGF new file mode 100644 index 0000000..f18628b Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/BLD26.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/BLD26D.BGF b/CONTENT/BT/VIDEO/GEO/BLD26D.BGF new file mode 100644 index 0000000..6e1c844 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/BLD26D.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/BLHDLARM.BGF b/CONTENT/BT/VIDEO/GEO/BLHDLARM.BGF new file mode 100644 index 0000000..293484b Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/BLHDLARM.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/BLHDLGUN.BGF b/CONTENT/BT/VIDEO/GEO/BLHDLGUN.BGF new file mode 100644 index 0000000..1deb9ac Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/BLHDLGUN.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/BLHDRARM.BGF b/CONTENT/BT/VIDEO/GEO/BLHDRARM.BGF new file mode 100644 index 0000000..b09d8bb Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/BLHDRARM.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/BLHDRGUN.BGF b/CONTENT/BT/VIDEO/GEO/BLHDRGUN.BGF new file mode 100644 index 0000000..bdddd29 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/BLHDRGUN.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/BLH_LARM.BGF b/CONTENT/BT/VIDEO/GEO/BLH_LARM.BGF new file mode 100644 index 0000000..58fce43 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/BLH_LARM.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/BLH_LFOT.BGF b/CONTENT/BT/VIDEO/GEO/BLH_LFOT.BGF new file mode 100644 index 0000000..c722533 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/BLH_LFOT.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/BLH_LULE.BGF b/CONTENT/BT/VIDEO/GEO/BLH_LULE.BGF new file mode 100644 index 0000000..e04053c Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/BLH_LULE.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/BLH_RARM.BGF b/CONTENT/BT/VIDEO/GEO/BLH_RARM.BGF new file mode 100644 index 0000000..46f89ad Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/BLH_RARM.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/BLH_RFOT.BGF b/CONTENT/BT/VIDEO/GEO/BLH_RFOT.BGF new file mode 100644 index 0000000..072e9b7 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/BLH_RFOT.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/BLH_RULE.BGF b/CONTENT/BT/VIDEO/GEO/BLH_RULE.BGF new file mode 100644 index 0000000..f1adbc2 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/BLH_RULE.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/BLUEBEAM.BGF b/CONTENT/BT/VIDEO/GEO/BLUEBEAM.BGF new file mode 100644 index 0000000..60423b6 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/BLUEBEAM.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/BNKD_FR.BGF b/CONTENT/BT/VIDEO/GEO/BNKD_FR.BGF new file mode 100644 index 0000000..794e470 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/BNKD_FR.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/BNK_FR.BGF b/CONTENT/BT/VIDEO/GEO/BNK_FR.BGF new file mode 100644 index 0000000..503e1bd Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/BNK_FR.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/BNK_LP.BGF b/CONTENT/BT/VIDEO/GEO/BNK_LP.BGF new file mode 100644 index 0000000..597d472 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/BNK_LP.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/BPIP1.BGF b/CONTENT/BT/VIDEO/GEO/BPIP1.BGF new file mode 100644 index 0000000..8a59a30 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/BPIP1.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/BPIP1D.BGF b/CONTENT/BT/VIDEO/GEO/BPIP1D.BGF new file mode 100644 index 0000000..d1e35d3 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/BPIP1D.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/BULLET.BGF b/CONTENT/BT/VIDEO/GEO/BULLET.BGF new file mode 100644 index 0000000..b97f425 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/BULLET.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/BULLS.BGF b/CONTENT/BT/VIDEO/GEO/BULLS.BGF new file mode 100644 index 0000000..78857ac Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/BULLS.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/BUTTEF.BGF b/CONTENT/BT/VIDEO/GEO/BUTTEF.BGF new file mode 100644 index 0000000..460ae99 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/BUTTEF.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/BWLK1.BGF b/CONTENT/BT/VIDEO/GEO/BWLK1.BGF new file mode 100644 index 0000000..4009023 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/BWLK1.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/CALPD.BGF b/CONTENT/BT/VIDEO/GEO/CALPD.BGF new file mode 100644 index 0000000..bc2e43c Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/CALPD.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/CALP_LP.BGF b/CONTENT/BT/VIDEO/GEO/CALP_LP.BGF new file mode 100644 index 0000000..7ac9b65 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/CALP_LP.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/CAMPOS.BGF b/CONTENT/BT/VIDEO/GEO/CAMPOS.BGF new file mode 100644 index 0000000..5ea1db9 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/CAMPOS.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/CAVERN/AVA_TSHD.BGF b/CONTENT/BT/VIDEO/GEO/CAVERN/AVA_TSHD.BGF new file mode 100644 index 0000000..bc54a5e Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/CAVERN/AVA_TSHD.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/CAVERN/BLH_TSHD.BGF b/CONTENT/BT/VIDEO/GEO/CAVERN/BLH_TSHD.BGF new file mode 100644 index 0000000..450c45d Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/CAVERN/BLH_TSHD.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/CAVERN/FIR_TSHD.BGF b/CONTENT/BT/VIDEO/GEO/CAVERN/FIR_TSHD.BGF new file mode 100644 index 0000000..22f221d Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/CAVERN/FIR_TSHD.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/CAVERN/LOK_TSHD.BGF b/CONTENT/BT/VIDEO/GEO/CAVERN/LOK_TSHD.BGF new file mode 100644 index 0000000..0cf4b3d Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/CAVERN/LOK_TSHD.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/CAVERN/MAD_TSHD.BGF b/CONTENT/BT/VIDEO/GEO/CAVERN/MAD_TSHD.BGF new file mode 100644 index 0000000..a5ccef4 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/CAVERN/MAD_TSHD.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/CAVERN/OWN_TSHD.BGF b/CONTENT/BT/VIDEO/GEO/CAVERN/OWN_TSHD.BGF new file mode 100644 index 0000000..001d5da Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/CAVERN/OWN_TSHD.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/CAVERN/RAP_TSHD.BGF b/CONTENT/BT/VIDEO/GEO/CAVERN/RAP_TSHD.BGF new file mode 100644 index 0000000..001d5da Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/CAVERN/RAP_TSHD.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/CAVERN/SND_TSHD.BGF b/CONTENT/BT/VIDEO/GEO/CAVERN/SND_TSHD.BGF new file mode 100644 index 0000000..f944a37 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/CAVERN/SND_TSHD.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/CAVERN/STI_TSHD.BGF b/CONTENT/BT/VIDEO/GEO/CAVERN/STI_TSHD.BGF new file mode 100644 index 0000000..001d5da Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/CAVERN/STI_TSHD.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/CAVERN/THR_TSHD.BGF b/CONTENT/BT/VIDEO/GEO/CAVERN/THR_TSHD.BGF new file mode 100644 index 0000000..22f221d Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/CAVERN/THR_TSHD.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/CAVERN/VUL_TSHD.BGF b/CONTENT/BT/VIDEO/GEO/CAVERN/VUL_TSHD.BGF new file mode 100644 index 0000000..d6fe8fe Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/CAVERN/VUL_TSHD.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/CB1.BGF b/CONTENT/BT/VIDEO/GEO/CB1.BGF new file mode 100644 index 0000000..cab26e7 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/CB1.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/CB2.BGF b/CONTENT/BT/VIDEO/GEO/CB2.BGF new file mode 100644 index 0000000..44606a0 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/CB2.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/CH1.BGF b/CONTENT/BT/VIDEO/GEO/CH1.BGF new file mode 100644 index 0000000..ff584a3 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/CH1.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/CH2.BGF b/CONTENT/BT/VIDEO/GEO/CH2.BGF new file mode 100644 index 0000000..21ff64e Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/CH2.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/COMS.BGF b/CONTENT/BT/VIDEO/GEO/COMS.BGF new file mode 100644 index 0000000..f005a0f Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/COMS.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/COOLS.BGF b/CONTENT/BT/VIDEO/GEO/COOLS.BGF new file mode 100644 index 0000000..b666051 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/COOLS.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/CRTD_FR.BGF b/CONTENT/BT/VIDEO/GEO/CRTD_FR.BGF new file mode 100644 index 0000000..3eabc22 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/CRTD_FR.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/CTAR_LP.BGF b/CONTENT/BT/VIDEO/GEO/CTAR_LP.BGF new file mode 100644 index 0000000..f87462f Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/CTAR_LP.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/D1DIRT.BGF b/CONTENT/BT/VIDEO/GEO/D1DIRT.BGF new file mode 100644 index 0000000..8c35a69 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/D1DIRT.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/DAY/DIVISION.SAV/DSKY.BGF b/CONTENT/BT/VIDEO/GEO/DAY/DIVISION.SAV/DSKY.BGF new file mode 100644 index 0000000..7726609 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/DAY/DIVISION.SAV/DSKY.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/DAY/DSKY.BGF b/CONTENT/BT/VIDEO/GEO/DAY/DSKY.BGF new file mode 100644 index 0000000..34bc3a7 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/DAY/DSKY.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/DAY/DSKY.BMF b/CONTENT/BT/VIDEO/GEO/DAY/DSKY.BMF new file mode 100644 index 0000000..7726609 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/DAY/DSKY.BMF differ diff --git a/CONTENT/BT/VIDEO/GEO/DAY/DSKY.VGF b/CONTENT/BT/VIDEO/GEO/DAY/DSKY.VGF new file mode 100644 index 0000000..0015ad8 --- /dev/null +++ b/CONTENT/BT/VIDEO/GEO/DAY/DSKY.VGF @@ -0,0 +1,102 @@ +DIV-VIZ2 +HEADER +( + VERSION=2:08; + DATE=20:3:97; + TIME=14:0; + UNIT=m +) +{ +} + +BOUNDARY +{ + BBOX {-6000,110,-6000,6000,110,6000,0,0,0} + SPHERE {0,110,0,8485.28} +} +OBJECT +( +) +{ + LOD (DISTANCE= 0, 6928.2) + { + GEOGROUP + ( + F_MATERIAL="btfx:dsky_mtl"; + VERTEX=RGB 2D_TEXTURE ; + ) + { + PMESH { + VERTEX_POOL { + {3000, 110, 6000, 1, 1, 1, 1, 1.5, 2.5} + {3000, 110, 3000, 1, 1, 1, 1, 1.5, 1.5} + {6000, 110, 3000, 1, 1, 1, 1, 2.5, 1.5} + {6000, 110, 6000, 1, 1, 1, 1, 2.5, 2.5} + {3000, 110, 0, 1, 1, 1, 1, 1.5, 0.5} + {6000, 110, 0, 1, 1, 1, 1, 2.5, 0.5} + {3000, 110, 0, 1, 1, 1, 1, 1.5, 1.5} + {3000, 110, -3000, 1, 1, 1, 1, 1.5, 0.5} + {6000, 110, -3000, 1, 1, 1, 1, 2.5, 0.5} + {6000, 110, 0, 1, 1, 1, 1, 2.5, 1.5} + {3000, 110, -3000, 1, 1, 1, 1, 1.5, 1.5} + {3000, 110, -6000, 1, 1, 1, 1, 1.5, 0.5} + {6000, 110, -6000, 1, 1, 1, 1, 2.5, 0.5} + {6000, 110, -3000, 1, 1, 1, 1, 2.5, 1.5} + {0, 110, 6000, 1, 1, 1, 1, 0.5, 2.5} + {0, 110, 3000, 1, 1, 1, 1, 0.5, 1.5} + {0, 110, 0, 1, 1, 1, 1, 0.5, 0.5} + {0, 110, 0, 1, 1, 1, 1, 0.5, 1.5} + {0, 110, -3000, 1, 1, 1, 1, 0.5, 0.5} + {0, 110, -3000, 1, 1, 1, 1, 0.5, 1.5} + {0, 110, -6000, 1, 1, 1, 1, 0.5, 0.5} + {-3000, 110, 6000, 1, 1, 1, 1, 0.5, 2.5} + {-3000, 110, 3000, 1, 1, 1, 1, 0.5, 1.5} + {0, 110, 3000, 1, 1, 1, 1, 1.5, 1.5} + {0, 110, 6000, 1, 1, 1, 1, 1.5, 2.5} + {-3000, 110, 0, 1, 1, 1, 1, 0.5, 0.5} + {0, 110, 0, 1, 1, 1, 1, 1.5, 0.5} + {-3000, 110, 0, 1, 1, 1, 1, 0.5, 1.5} + {-3000, 110, -3000, 1, 1, 1, 1, 0.5, 0.5} + {0, 110, -3000, 1, 1, 1, 1, 1.5, 0.5} + {0, 110, 0, 1, 1, 1, 1, 1.5, 1.5} + {-3000, 110, -3000, 1, 1, 1, 1, 0.5, 1.5} + {-3000, 110, -6000, 1, 1, 1, 1, 0.5, 0.5} + {0, 110, -6000, 1, 1, 1, 1, 1.5, 0.5} + {0, 110, -3000, 1, 1, 1, 1, 1.5, 1.5} + {-6000, 110, 6000, 1, 1, 1, 1, 0.5, 2.5} + {-6000, 110, 3000, 1, 1, 1, 1, 0.5, 1.5} + {-3000, 110, 3000, 1, 1, 1, 1, 1.5, 1.5} + {-3000, 110, 6000, 1, 1, 1, 1, 1.5, 2.5} + {-6000, 110, 0, 1, 1, 1, 1, 0.5, 0.5} + {-3000, 110, 0, 1, 1, 1, 1, 1.5, 0.5} + {-6000, 110, 0, 1, 1, 1, 1, 0.5, 1.5} + {-6000, 110, -3000, 1, 1, 1, 1, 0.5, 0.5} + {-3000, 110, -3000, 1, 1, 1, 1, 1.5, 0.5} + {-3000, 110, 0, 1, 1, 1, 1, 1.5, 1.5} + {-6000, 110, -3000, 1, 1, 1, 1, 0.5, 1.5} + {-6000, 110, -6000, 1, 1, 1, 1, 0.5, 0.5} + {-3000, 110, -6000, 1, 1, 1, 1, 1.5, 0.5} + {-3000, 110, -3000, 1, 1, 1, 1, 1.5, 1.5} + } + CONNECTION_LIST (PCOUNT=4){ + {0, 1, 2, 3} + {1, 4, 5, 2} + {6, 7, 8, 9} + {10, 11, 12, 13} + {14, 15, 1, 0} + {15, 16, 4, 1} + {17, 18, 7, 6} + {19, 20, 11, 10} + {21, 22, 23, 24} + {22, 25, 26, 23} + {27, 28, 29, 30} + {31, 32, 33, 34} + {35, 36, 37, 38} + {36, 39, 40, 37} + {41, 42, 43, 44} + {45, 46, 47, 48} + } + } + } + } +} diff --git a/CONTENT/BT/VIDEO/GEO/DAY/SKY.BGF b/CONTENT/BT/VIDEO/GEO/DAY/SKY.BGF new file mode 100644 index 0000000..1b2ebc0 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/DAY/SKY.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/DAY/SKY.VGF b/CONTENT/BT/VIDEO/GEO/DAY/SKY.VGF new file mode 100644 index 0000000..ab6cc9a --- /dev/null +++ b/CONTENT/BT/VIDEO/GEO/DAY/SKY.VGF @@ -0,0 +1,267 @@ +DIV-VIZ2 +HEADER +( + VERSION=2:08; + DATE=25:5:96; + TIME=2:21; + UNIT=m +) +{ +} + +BOUNDARY +{ + BBOX {-5000,0,-5000,5000,0,5000,0,0,0} + SPHERE {0,0,0,7071.07} +} +OBJECT +( +) +{ + GEOGROUP + ( + F_MATERIAL="btfx:arsky_mtl"; + VERTEX=2D_TEXTURE ; + ) + { + PMESH { + VERTEX_POOL { + {3750, 0, 5000, 3.41667, 4.46823} + {3750, 0, 3750, 3.41667, 3.47618} + {5000, 0, 3750, 4.38889, 3.47618} + {5000, 0, 5000, 4.38889, 4.46823} + {3750, 0, 2500, 3.41667, 2.48412} + {5000, 0, 2500, 4.38889, 2.48412} + {2500, 0, 3750, 2.44445, 3.47618} + {2500, 0, 2500, 2.44445, 2.48412} + {5000, 0, 1250, 4.38889, 1.49206} + {3750, 0, 1250, 3.41667, 1.49206} + {3750, 0, 0, 3.41667, 0.5} + {5000, 0, 0, 4.38889, 0.5} + {2500, 0, 1250, 2.44445, 1.49206} + {2500, 0, 0, 2.44445, 0.5} + {1250, 0, 0, 1.47222, 0.5} + {1250, 0, 1250, 1.47222, 1.49206} + {0, 0, 1250, 0.5, 1.49206} + {0, 0, 0, 0.5, 0.5} + {1250, 0, 2500, 1.47222, 2.48412} + {0, 0, 2500, 0.5, 2.48412} + {5000, 0, -3750, 4.38889, 1.52382} + {3750, 0, -3750, 3.41667, 1.52382} + {3750, 0, -5000, 3.41667, 0.53177} + {5000, 0, -5000, 4.38889, 0.53177} + {2500, 0, -3750, 2.44445, 1.52382} + {2500, 0, -5000, 2.44445, 0.53177} + {2500, 0, -3750, 2.44445, 0.52382} + {3750, 0, -3750, 3.41667, 0.52382} + {3750, 0, -2500, 3.41667, 1.51588} + {2500, 0, -2500, 2.44445, 1.51588} + {1250, 0, -5000, 1.47222, 0.53177} + {1250, 0, -3750, 1.47222, 1.52382} + {0, 0, -3750, 0.5, 1.52382} + {0, 0, -5000, 0.5, 0.53177} + {0, 0, -3750, 0.5, 0.52382} + {1250, 0, -3750, 1.47222, 0.52382} + {1250, 0, -2500, 1.47222, 1.51588} + {0, 0, -2500, 0.5, 1.51588} + {0, 0, -1250, 0.5, 0.507942} + {1250, 0, -1250, 1.47222, 0.507942} + {1250, 0, 0, 1.47222, 1.5} + {0, 0, 0, 0.5, 1.5} + {2500, 0, -1250, 2.44445, 0.507942} + {2500, 0, 0, 2.44445, 1.5} + {2500, 0, -1250, 2.44445, 1.50794} + {1250, 0, -1250, 1.47222, 1.50794} + {1250, 0, -2500, 1.47222, 0.51588} + {2500, 0, -2500, 2.44445, 0.51588} + {-3750, 0, -5000, 1.58333, 0.53177} + {-3750, 0, -3750, 1.58333, 1.52382} + {-5000, 0, -3750, 0.61111, 1.52382} + {-5000, 0, -5000, 0.61111, 0.53177} + {-5000, 0, -3750, 0.61111, 0.52382} + {-3750, 0, -3750, 1.58333, 0.52382} + {-3750, 0, -2500, 1.58333, 1.51588} + {-5000, 0, -2500, 0.61111, 1.51588} + {-3750, 0, -2500, 0.58333, 1.51588} + {-3750, 0, -3750, 0.58333, 0.52382} + {-2500, 0, -3750, 1.55555, 0.52382} + {-2500, 0, -2500, 1.55555, 1.51588} + {-5000, 0, -1250, 0.61111, 0.507942} + {-3750, 0, -1250, 1.58333, 0.507942} + {-3750, 0, 0, 1.58333, 1.5} + {-5000, 0, 0, 0.61111, 1.5} + {-3750, 0, 0, 0.58333, 1.5} + {-3750, 0, -1250, 0.58333, 0.507942} + {-2500, 0, -1250, 1.55555, 0.507942} + {-2500, 0, 0, 1.55555, 1.5} + {-2500, 0, -1250, 1.55555, 1.50794} + {-3750, 0, -1250, 0.58333, 1.50794} + {-3750, 0, -2500, 0.58333, 0.51588} + {-2500, 0, -2500, 1.55555, 0.51588} + {-1250, 0, 0, 0.527777, 1.5} + {-1250, 0, -1250, 0.527777, 0.507942} + {0, 0, -1250, 1.5, 0.507942} + {0, 0, 0, 1.5, 1.5} + {0, 0, -1250, 1.5, 1.50794} + {-1250, 0, -1250, 0.527777, 1.50794} + {-1250, 0, -2500, 0.527777, 0.51588} + {0, 0, -2500, 1.5, 0.51588} + {-1250, 0, -2500, 1.52778, 0.51588} + {-1250, 0, -1250, 1.52778, 1.50794} + {-2500, 0, -1250, 0.55555, 1.50794} + {-2500, 0, -2500, 0.55555, 0.51588} + {-1250, 0, 5000, 0.527777, 4.46823} + {-1250, 0, 3750, 0.527777, 3.47618} + {0, 0, 3750, 1.5, 3.47618} + {0, 0, 5000, 1.5, 4.46823} + {-1250, 0, 2500, 0.527777, 2.48412} + {0, 0, 2500, 1.5, 2.48412} + {-1250, 0, 2500, 1.52778, 2.48412} + {-1250, 0, 3750, 1.52778, 3.47618} + {-2500, 0, 3750, 0.55555, 3.47618} + {-2500, 0, 2500, 0.55555, 2.48412} + {0, 0, 1250, 1.5, 1.49206} + {-1250, 0, 1250, 0.527777, 1.49206} + {-1250, 0, 0, 0.527777, 0.5} + {0, 0, 0, 1.5, 0.5} + {-1250, 0, 0, 1.52778, 0.5} + {-1250, 0, 1250, 1.52778, 1.49206} + {-2500, 0, 1250, 0.55555, 1.49206} + {-2500, 0, 0, 0.55555, 0.5} + {-3750, 0, 0, 1.58333, 0.5} + {-3750, 0, 1250, 1.58333, 1.49206} + {-5000, 0, 1250, 0.61111, 1.49206} + {-5000, 0, 0, 0.61111, 0.5} + {-3750, 0, 2500, 1.58333, 2.48412} + {-5000, 0, 2500, 0.61111, 2.48412} + {-3750, 0, 2500, 0.58333, 2.48412} + {-3750, 0, 1250, 0.58333, 1.49206} + {-2500, 0, 1250, 1.55555, 1.49206} + {-2500, 0, 2500, 1.55555, 2.48412} + {1250, 0, 5000, 1.47222, 4.46823} + {1250, 0, 3750, 1.47222, 3.47618} + {2500, 0, 5000, 2.44445, 4.46823} + {0, 0, 3750, 0.5, 3.47618} + {5000, 0, -1250, 4.38889, 1.50794} + {3750, 0, -1250, 3.41667, 1.50794} + {3750, 0, -2500, 3.41667, 0.51588} + {5000, 0, -2500, 4.38889, 0.51588} + {3750, 0, -1250, 3.41667, 0.507942} + {3750, 0, 0, 3.41667, 1.5} + {-1250, 0, -5000, 1.52778, 0.53177} + {-1250, 0, -3750, 1.52778, 1.52382} + {-2500, 0, -3750, 0.55555, 1.52382} + {-2500, 0, -5000, 0.55555, 0.53177} + {-2500, 0, -3750, 0.55555, 0.52382} + {-1250, 0, -3750, 1.52778, 0.52382} + {-1250, 0, -2500, 1.52778, 1.51588} + {-2500, 0, -2500, 0.55555, 1.51588} + {-1250, 0, -2500, 0.527777, 1.51588} + {-1250, 0, -3750, 0.527777, 0.52382} + {0, 0, -3750, 1.5, 0.52382} + {0, 0, -2500, 1.5, 1.51588} + {-3750, 0, 5000, 0.58333, 4.46823} + {-3750, 0, 3750, 0.58333, 3.47618} + {-2500, 0, 3750, 1.55555, 3.47618} + {-2500, 0, 5000, 1.55555, 4.46823} + {-3750, 0, 3750, 1.58333, 3.47618} + {-5000, 0, 3750, 0.61111, 3.47618} + {5000, 0, -2500, 4.38889, 1.51588} + {5000, 0, -3750, 4.38889, 0.52382} + {0, 0, -2500, 0.5, 0.51588} + {0, 0, -1250, 0.5, 1.50794} + {-2500, 0, -5000, 1.55555, 0.53177} + {-2500, 0, -3750, 1.55555, 1.52382} + {-3750, 0, -3750, 0.58333, 1.52382} + {-3750, 0, -5000, 0.58333, 0.53177} + {-5000, 0, -2500, 0.61111, 0.51588} + {-3750, 0, -2500, 1.58333, 0.51588} + {-3750, 0, -1250, 1.58333, 1.50794} + {-5000, 0, -1250, 0.61111, 1.50794} + {-2500, 0, 0, 0.55555, 1.5} + {-2500, 0, -1250, 0.55555, 0.507942} + {-1250, 0, -1250, 1.52778, 0.507942} + {-1250, 0, 0, 1.52778, 1.5} + {-2500, 0, 5000, 0.55555, 4.46823} + {-1250, 0, 5000, 1.52778, 4.46823} + {-2500, 0, 0, 1.55555, 0.5} + {-3750, 0, 0, 0.58333, 0.5} + {0, 0, 5000, 0.5, 4.46823} + {5000, 0, 0, 4.38889, 1.5} + {5000, 0, -1250, 4.38889, 0.507942} + {0, 0, -5000, 1.5, 0.53177} + {0, 0, -3750, 1.5, 1.52382} + {-1250, 0, -3750, 0.527777, 1.52382} + {-1250, 0, -5000, 0.527777, 0.53177} + {-5000, 0, 5000, 0.61111, 4.46823} + {-3750, 0, 5000, 1.58333, 4.46823} + } + CONNECTION_LIST (PCOUNT=4){ + {0, 1, 2, 3} + {2, 1, 4, 5} + {4, 1, 6, 7} + {8, 9, 10, 11} + {10, 9, 12, 13} + {12, 9, 4, 7} + {14, 15, 16, 17} + {16, 15, 18, 19} + {18, 15, 12, 7} + {20, 21, 22, 23} + {22, 21, 24, 25} + {26, 27, 28, 29} + {30, 31, 32, 33} + {34, 35, 36, 37} + {36, 35, 26, 29} + {38, 39, 40, 41} + {40, 39, 42, 43} + {44, 45, 46, 47} + {48, 49, 50, 51} + {52, 53, 54, 55} + {56, 57, 58, 59} + {60, 61, 62, 63} + {64, 65, 66, 67} + {68, 69, 70, 71} + {72, 73, 74, 75} + {76, 77, 78, 79} + {80, 81, 82, 83} + {84, 85, 86, 87} + {86, 85, 88, 89} + {90, 91, 92, 93} + {94, 95, 96, 97} + {98, 99, 100, 101} + {100, 99, 90, 93} + {102, 103, 104, 105} + {104, 103, 106, 107} + {108, 109, 110, 111} + {112, 113, 6, 114} + {6, 113, 18, 7} + {18, 113, 115, 19} + {116, 117, 118, 119} + {118, 117, 44, 47} + {42, 120, 121, 43} + {122, 123, 124, 125} + {126, 127, 128, 129} + {130, 131, 132, 133} + {134, 135, 136, 137} + {136, 135, 108, 111} + {106, 138, 139, 107} + {114, 6, 1, 0} + {5, 4, 9, 8} + {13, 12, 15, 14} + {140, 28, 27, 141} + {25, 24, 31, 30} + {142, 46, 45, 143} + {144, 145, 146, 147} + {148, 149, 150, 151} + {152, 153, 154, 155} + {156, 92, 91, 157} + {89, 88, 95, 94} + {158, 110, 109, 159} + {160, 115, 113, 112} + {161, 121, 120, 162} + {163, 164, 165, 166} + {167, 139, 138, 168} + } + } + } +} diff --git a/CONTENT/BT/VIDEO/GEO/DAY/SPOT.BGF b/CONTENT/BT/VIDEO/GEO/DAY/SPOT.BGF new file mode 100644 index 0000000..ff4260e Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/DAY/SPOT.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/DECLOUDS.BGF b/CONTENT/BT/VIDEO/GEO/DECLOUDS.BGF new file mode 100644 index 0000000..f6cff2b Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/DECLOUDS.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/DISHD.BGF b/CONTENT/BT/VIDEO/GEO/DISHD.BGF new file mode 100644 index 0000000..750e750 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/DISHD.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/DISH_LP.BGF b/CONTENT/BT/VIDEO/GEO/DISH_LP.BGF new file mode 100644 index 0000000..503f129 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/DISH_LP.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/DIVISION.SAV/ARMRS.BGF b/CONTENT/BT/VIDEO/GEO/DIVISION.SAV/ARMRS.BGF new file mode 100644 index 0000000..b664bf3 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/DIVISION.SAV/ARMRS.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/DIVISION.SAV/BLD03.BGF b/CONTENT/BT/VIDEO/GEO/DIVISION.SAV/BLD03.BGF new file mode 100644 index 0000000..4e202df Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/DIVISION.SAV/BLD03.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/DIVISION.SAV/BLD03_L0.BGF b/CONTENT/BT/VIDEO/GEO/DIVISION.SAV/BLD03_L0.BGF new file mode 100644 index 0000000..9c96d7a Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/DIVISION.SAV/BLD03_L0.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/DIVISION.SAV/BLD04.BGF b/CONTENT/BT/VIDEO/GEO/DIVISION.SAV/BLD04.BGF new file mode 100644 index 0000000..e3c9e43 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/DIVISION.SAV/BLD04.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/DIVISION.SAV/BLD08_LP.BGF b/CONTENT/BT/VIDEO/GEO/DIVISION.SAV/BLD08_LP.BGF new file mode 100644 index 0000000..20a64bd Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/DIVISION.SAV/BLD08_LP.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/DIVISION.SAV/BLD24.BGF b/CONTENT/BT/VIDEO/GEO/DIVISION.SAV/BLD24.BGF new file mode 100644 index 0000000..52bfe05 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/DIVISION.SAV/BLD24.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/DIVISION.SAV/BLD26.BGF b/CONTENT/BT/VIDEO/GEO/DIVISION.SAV/BLD26.BGF new file mode 100644 index 0000000..e19b65f Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/DIVISION.SAV/BLD26.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/DIVISION.SAV/BLD26D.BGF b/CONTENT/BT/VIDEO/GEO/DIVISION.SAV/BLD26D.BGF new file mode 100644 index 0000000..2b8cb6b Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/DIVISION.SAV/BLD26D.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/DIVISION.SAV/CALPD.BGF b/CONTENT/BT/VIDEO/GEO/DIVISION.SAV/CALPD.BGF new file mode 100644 index 0000000..4a79a1e Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/DIVISION.SAV/CALPD.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/DIVISION.SAV/CALP_LP.BGF b/CONTENT/BT/VIDEO/GEO/DIVISION.SAV/CALP_LP.BGF new file mode 100644 index 0000000..d93bb50 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/DIVISION.SAV/CALP_LP.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/DIVISION.SAV/COMS.BGF b/CONTENT/BT/VIDEO/GEO/DIVISION.SAV/COMS.BGF new file mode 100644 index 0000000..f52dd66 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/DIVISION.SAV/COMS.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/DIVISION.SAV/CTAR_LP.BGF b/CONTENT/BT/VIDEO/GEO/DIVISION.SAV/CTAR_LP.BGF new file mode 100644 index 0000000..2310621 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/DIVISION.SAV/CTAR_LP.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/DIVISION.SAV/D1DIRT.BGF b/CONTENT/BT/VIDEO/GEO/DIVISION.SAV/D1DIRT.BGF new file mode 100644 index 0000000..74ee4cf Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/DIVISION.SAV/D1DIRT.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/DIVISION.SAV/DISH_LP.BGF b/CONTENT/BT/VIDEO/GEO/DIVISION.SAV/DISH_LP.BGF new file mode 100644 index 0000000..2e42c2e Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/DIVISION.SAV/DISH_LP.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/DIVISION.SAV/DTAR_LP.BGF b/CONTENT/BT/VIDEO/GEO/DIVISION.SAV/DTAR_LP.BGF new file mode 100644 index 0000000..51b98f4 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/DIVISION.SAV/DTAR_LP.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/DIVISION.SAV/RAVFLOOR.BGF b/CONTENT/BT/VIDEO/GEO/DIVISION.SAV/RAVFLOOR.BGF new file mode 100644 index 0000000..44f05bb Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/DIVISION.SAV/RAVFLOOR.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/DIVISION.SAV/RAVINE0.BGF b/CONTENT/BT/VIDEO/GEO/DIVISION.SAV/RAVINE0.BGF new file mode 100644 index 0000000..9512bf4 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/DIVISION.SAV/RAVINE0.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/DIVISION.SAV/RAVINES.BMF b/CONTENT/BT/VIDEO/GEO/DIVISION.SAV/RAVINES.BMF new file mode 100644 index 0000000..0af2207 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/DIVISION.SAV/RAVINES.BMF differ diff --git a/CONTENT/BT/VIDEO/GEO/DIVISION.SAV/SEMIRIGS.BGF b/CONTENT/BT/VIDEO/GEO/DIVISION.SAV/SEMIRIGS.BGF new file mode 100644 index 0000000..464f71b Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/DIVISION.SAV/SEMIRIGS.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/DIVISION.SAV/TREE.BGF b/CONTENT/BT/VIDEO/GEO/DIVISION.SAV/TREE.BGF new file mode 100644 index 0000000..2b5afc3 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/DIVISION.SAV/TREE.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/DIVISION.SAV/TREESH.BGF b/CONTENT/BT/VIDEO/GEO/DIVISION.SAV/TREESH.BGF new file mode 100644 index 0000000..f1ef48d Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/DIVISION.SAV/TREESH.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/DIVISION.SAV/TRUNK.BGF b/CONTENT/BT/VIDEO/GEO/DIVISION.SAV/TRUNK.BGF new file mode 100644 index 0000000..5a9ea40 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/DIVISION.SAV/TRUNK.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/DOZERS.BGF b/CONTENT/BT/VIDEO/GEO/DOZERS.BGF new file mode 100644 index 0000000..23e636f Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/DOZERS.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/DTAR_LP.BGF b/CONTENT/BT/VIDEO/GEO/DTAR_LP.BGF new file mode 100644 index 0000000..2ce3969 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/DTAR_LP.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/ERMLASER.BGF b/CONTENT/BT/VIDEO/GEO/ERMLASER.BGF new file mode 100644 index 0000000..ff4b158 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/ERMLASER.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/EVENING/DSKY.BGF b/CONTENT/BT/VIDEO/GEO/EVENING/DSKY.BGF new file mode 100644 index 0000000..7726609 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/EVENING/DSKY.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/EVENING/SKY.BGF b/CONTENT/BT/VIDEO/GEO/EVENING/SKY.BGF new file mode 100644 index 0000000..0375eda Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/EVENING/SKY.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/EVENING/SPOT.BGF b/CONTENT/BT/VIDEO/GEO/EVENING/SPOT.BGF new file mode 100644 index 0000000..ff4260e Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/EVENING/SPOT.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/EVENING/SPOT.BU b/CONTENT/BT/VIDEO/GEO/EVENING/SPOT.BU new file mode 100644 index 0000000..ff4260e Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/EVENING/SPOT.BU differ diff --git a/CONTENT/BT/VIDEO/GEO/EXDISK_A.BGF b/CONTENT/BT/VIDEO/GEO/EXDISK_A.BGF new file mode 100644 index 0000000..dc2e8a4 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/EXDISK_A.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/EXDISK_B.BGF b/CONTENT/BT/VIDEO/GEO/EXDISK_B.BGF new file mode 100644 index 0000000..dc2e8a4 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/EXDISK_B.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/EXDISK_C.BGF b/CONTENT/BT/VIDEO/GEO/EXDISK_C.BGF new file mode 100644 index 0000000..b3941bd Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/EXDISK_C.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/EXP.BGF b/CONTENT/BT/VIDEO/GEO/EXP.BGF new file mode 100644 index 0000000..3a61e7b Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/EXP.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/FD1.BGF b/CONTENT/BT/VIDEO/GEO/FD1.BGF new file mode 100644 index 0000000..37f7a93 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/FD1.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/FD2.BGF b/CONTENT/BT/VIDEO/GEO/FD2.BGF new file mode 100644 index 0000000..dc6d3a1 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/FD2.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/FD3.BGF b/CONTENT/BT/VIDEO/GEO/FD3.BGF new file mode 100644 index 0000000..d4354e7 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/FD3.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/FD4.BGF b/CONTENT/BT/VIDEO/GEO/FD4.BGF new file mode 100644 index 0000000..04d9d04 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/FD4.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/FIRHIP.BGF b/CONTENT/BT/VIDEO/GEO/FIRHIP.BGF new file mode 100644 index 0000000..a068036 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/FIRHIP.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/FL1.BGF b/CONTENT/BT/VIDEO/GEO/FL1.BGF new file mode 100644 index 0000000..71cc45c Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/FL1.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/FLAMEBIG.BGF b/CONTENT/BT/VIDEO/GEO/FLAMEBIG.BGF new file mode 100644 index 0000000..290a26d Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/FLAMEBIG.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/FLAMEBIG.VGF b/CONTENT/BT/VIDEO/GEO/FLAMEBIG.VGF new file mode 100644 index 0000000..28baf2e --- /dev/null +++ b/CONTENT/BT/VIDEO/GEO/FLAMEBIG.VGF @@ -0,0 +1,71 @@ +DIV-VIZ2 +HEADER +( + VERSION=2:08; + DATE=31:1:96; + TIME=9:41; + UNIT=m +) +{ +} + +BOUNDARY +{ + BBOX {-6.7591,-0.5093,-0.7988,7.059,19.0764,2.7726,0,0,0} + SPHERE {0.14995,9.28355,0.9869,12.0483} +} +OBJECT +( +) +{ + LOD (DISTANCE= 0, 1200) + { + GEOGROUP + ( + F_MATERIAL="btfx:firesmoke1_mtl"; + VERTEX=RGB 2D_TEXTURE ; + ) + { + PMESH { + VERTEX_POOL { + {2.4853, 19.0764, 0.9001, 0.561, 0.141, 0.043, -0.2, 0.6, 1} + {0.2835, 9.067, 0.4099, 0.828, 0.402, 0.101, -0.033, 0.579633, 0.697047} + {4.7859, 6.2476, 0.4281, 0.659, 0.204, 0.051, -0.194, 1, 0.5} + {4.2288, 5.4624, 0.0423, 0.624, 0.231, 0.075, -0.2, 1, 0.375} + {0.246, 9.0905, 0.4098, 0.828, 0.401, 0.101, -0.028, 0.576131, 0.698689} + {0.2186, 8.5412, 0.2181, 0.838, 0.416, 0.105, 0.035, 0.599549, 0.625282} + {-3.2767, 9.9605, 0.516, 0.659, 0.165, 0.035, -0.194, 0.2, 0.75} + {-3.7826, 11.6132, 0.3936, 0.655, 0.161, 0.031, -0.2, 0.2, 0.875} + {-0.0403, 8.0209, 0.3118, 0.84, 0.415, 0.104, 0.08, 0.544957, 0.588301} + {-4.0912, 1.976, -0.7231, 0.78, 0.408, 0.125, 0.053, 0.2, 0.25} + {-0.2212, 3.5977, -0.3671, 0.902, 0.62, 0.309, 0.285, 0.572117, 0.308143} + {-0.9121, 3.2437, 2.0354, 0.941, 0.733, 0.502, 0.153, 0.6, 0.25} + {1.0239, -0.4439, 2.7726, 1, 0.988, 0.973, 1.2, 0.6, 0} + {-6.7591, -0.4241, -0.7988, 0.976, 0.8, 0.502, 0.735, 0.2, 0} + {7.059, -0.5093, 0.0944, 0.859, 0.478, 0.137, -0.135, 1, 0} + } + CONNECTION_LIST { + {0, 1, 2} + {3, 2, 1} + {6, 5, 7} + {5, 8, 3} + {9, 8, 6} + {8, 10, 3} + {11, 10, 9} + {4, 7, 5} + {12, 9, 13} + {12, 14, 3} + {12, 11, 9} + {12, 3, 11} + {11, 3, 10} + {8, 9, 10} + {5, 6, 8} + } + CONNECTION_LIST (PCOUNT=4){ + {3, 1, 4, 5} + {0, 7, 4, 1} + } + } + } + } +} diff --git a/CONTENT/BT/VIDEO/GEO/FLAMESML.BGF b/CONTENT/BT/VIDEO/GEO/FLAMESML.BGF new file mode 100644 index 0000000..15bffa4 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/FLAMESML.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/FLAMESML.VGF b/CONTENT/BT/VIDEO/GEO/FLAMESML.VGF new file mode 100644 index 0000000..81d7edc --- /dev/null +++ b/CONTENT/BT/VIDEO/GEO/FLAMESML.VGF @@ -0,0 +1,30 @@ +DIV-VIZ2 +HEADER +( + VERSION=2:08; + DATE=17:2:96; + TIME=1:22; + UNIT=m +) +{ +} + +BOUNDARY +{ + BBOX {0,0,0,0,0,0,0,0,0} + SPHERE {0,0,0,0} +} +OBJECT +( +) +{ + GEOGROUP + ( + F_MATERIAL="btfx:sparkred_mtl"; + ) + { + SPHERELIST { + {0, 0, 0, 0} + } + } +} diff --git a/CONTENT/BT/VIDEO/GEO/FP0_LP.BGF b/CONTENT/BT/VIDEO/GEO/FP0_LP.BGF new file mode 100644 index 0000000..c3593a7 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/FP0_LP.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/FP1D.BGF b/CONTENT/BT/VIDEO/GEO/FP1D.BGF new file mode 100644 index 0000000..109277e Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/FP1D.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/FP1D_FR.BGF b/CONTENT/BT/VIDEO/GEO/FP1D_FR.BGF new file mode 100644 index 0000000..62ba123 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/FP1D_FR.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/FP1_FR.BGF b/CONTENT/BT/VIDEO/GEO/FP1_FR.BGF new file mode 100644 index 0000000..8eb204a Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/FP1_FR.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/FP2.BGF b/CONTENT/BT/VIDEO/GEO/FP2.BGF new file mode 100644 index 0000000..15f1b2d Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/FP2.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/FP2_LP.BGF b/CONTENT/BT/VIDEO/GEO/FP2_LP.BGF new file mode 100644 index 0000000..df37deb Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/FP2_LP.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/FP3.BGF b/CONTENT/BT/VIDEO/GEO/FP3.BGF new file mode 100644 index 0000000..1717771 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/FP3.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/FP3D.BGF b/CONTENT/BT/VIDEO/GEO/FP3D.BGF new file mode 100644 index 0000000..f5c3776 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/FP3D.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/FT1D_FR.BGF b/CONTENT/BT/VIDEO/GEO/FT1D_FR.BGF new file mode 100644 index 0000000..9048dd4 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/FT1D_FR.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/FT1_FR.BGF b/CONTENT/BT/VIDEO/GEO/FT1_FR.BGF new file mode 100644 index 0000000..45cbbfa Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/FT1_FR.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/FT1_LP.BGF b/CONTENT/BT/VIDEO/GEO/FT1_LP.BGF new file mode 100644 index 0000000..9951b40 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/FT1_LP.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/FT2D.BGF b/CONTENT/BT/VIDEO/GEO/FT2D.BGF new file mode 100644 index 0000000..194d04b Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/FT2D.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/FT2D_FR.BGF b/CONTENT/BT/VIDEO/GEO/FT2D_FR.BGF new file mode 100644 index 0000000..1b304bd Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/FT2D_FR.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/FT2_FR.BGF b/CONTENT/BT/VIDEO/GEO/FT2_FR.BGF new file mode 100644 index 0000000..e97d23f Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/FT2_FR.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/FT2_LP.BGF b/CONTENT/BT/VIDEO/GEO/FT2_LP.BGF new file mode 100644 index 0000000..f6cffd1 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/FT2_LP.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/GD1.BGF b/CONTENT/BT/VIDEO/GEO/GD1.BGF new file mode 100644 index 0000000..abd59ac Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/GD1.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/GD2.BGF b/CONTENT/BT/VIDEO/GEO/GD2.BGF new file mode 100644 index 0000000..139bcc5 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/GD2.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/GD4.BGF b/CONTENT/BT/VIDEO/GEO/GD4.BGF new file mode 100644 index 0000000..e342131 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/GD4.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/GD5.BGF b/CONTENT/BT/VIDEO/GEO/GD5.BGF new file mode 100644 index 0000000..a6603d4 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/GD5.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/GNR_LP.BGF b/CONTENT/BT/VIDEO/GEO/GNR_LP.BGF new file mode 100644 index 0000000..c04838c Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/GNR_LP.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/GREEBEAM.BGF b/CONTENT/BT/VIDEO/GEO/GREEBEAM.BGF new file mode 100644 index 0000000..a53564b Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/GREEBEAM.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/HARASS.BGF b/CONTENT/BT/VIDEO/GEO/HARASS.BGF new file mode 100644 index 0000000..114b0e5 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/HARASS.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/HC1D_FR.BGF b/CONTENT/BT/VIDEO/GEO/HC1D_FR.BGF new file mode 100644 index 0000000..4ae3209 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/HC1D_FR.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/HC1_LP.BGF b/CONTENT/BT/VIDEO/GEO/HC1_LP.BGF new file mode 100644 index 0000000..bff68a4 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/HC1_LP.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/HC2D_FR.BGF b/CONTENT/BT/VIDEO/GEO/HC2D_FR.BGF new file mode 100644 index 0000000..c049f3e Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/HC2D_FR.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/HC2_LP.BGF b/CONTENT/BT/VIDEO/GEO/HC2_LP.BGF new file mode 100644 index 0000000..69b2971 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/HC2_LP.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/HILLA.BGF b/CONTENT/BT/VIDEO/GEO/HILLA.BGF new file mode 100644 index 0000000..a2f255d Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/HILLA.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/HILLB.BGF b/CONTENT/BT/VIDEO/GEO/HILLB.BGF new file mode 100644 index 0000000..9bb9a15 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/HILLB.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/HILLC.BGF b/CONTENT/BT/VIDEO/GEO/HILLC.BGF new file mode 100644 index 0000000..6f714d7 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/HILLC.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/HL1.BGF b/CONTENT/BT/VIDEO/GEO/HL1.BGF new file mode 100644 index 0000000..c1ae8ce Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/HL1.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/HN1D_FR.BGF b/CONTENT/BT/VIDEO/GEO/HN1D_FR.BGF new file mode 100644 index 0000000..d3ee556 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/HN1D_FR.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/HN1_FR.BGF b/CONTENT/BT/VIDEO/GEO/HN1_FR.BGF new file mode 100644 index 0000000..d290b39 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/HN1_FR.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/HN1_LP.BGF b/CONTENT/BT/VIDEO/GEO/HN1_LP.BGF new file mode 100644 index 0000000..ca0bc0e Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/HN1_LP.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/HND1_FR.BGF b/CONTENT/BT/VIDEO/GEO/HND1_FR.BGF new file mode 100644 index 0000000..0d8e4a1 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/HND1_FR.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/HOTBOX.BGF b/CONTENT/BT/VIDEO/GEO/HOTBOX.BGF new file mode 100644 index 0000000..d7b5c21 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/HOTBOX.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/HUMMS.BGF b/CONTENT/BT/VIDEO/GEO/HUMMS.BGF new file mode 100644 index 0000000..75f63f1 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/HUMMS.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/HUTD.BGF b/CONTENT/BT/VIDEO/GEO/HUTD.BGF new file mode 100644 index 0000000..7118eeb Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/HUTD.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/HUT_FR.BGF b/CONTENT/BT/VIDEO/GEO/HUT_FR.BGF new file mode 100644 index 0000000..7799d70 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/HUT_FR.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/HUT_LP.BGF b/CONTENT/BT/VIDEO/GEO/HUT_LP.BGF new file mode 100644 index 0000000..20b6277 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/HUT_LP.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/HWZD_FR.BGF b/CONTENT/BT/VIDEO/GEO/HWZD_FR.BGF new file mode 100644 index 0000000..ebe2f0f Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/HWZD_FR.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/HWZ_FR.BGF b/CONTENT/BT/VIDEO/GEO/HWZ_FR.BGF new file mode 100644 index 0000000..1b7e22b Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/HWZ_FR.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/JAX1.BGF b/CONTENT/BT/VIDEO/GEO/JAX1.BGF new file mode 100644 index 0000000..8288e93 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/JAX1.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/JAX1D_FR.BGF b/CONTENT/BT/VIDEO/GEO/JAX1D_FR.BGF new file mode 100644 index 0000000..e493aa4 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/JAX1D_FR.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/JAX1_FR.BGF b/CONTENT/BT/VIDEO/GEO/JAX1_FR.BGF new file mode 100644 index 0000000..5714cee Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/JAX1_FR.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/JAX2.BGF b/CONTENT/BT/VIDEO/GEO/JAX2.BGF new file mode 100644 index 0000000..5c39c47 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/JAX2.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/JAX2D_FR.BGF b/CONTENT/BT/VIDEO/GEO/JAX2D_FR.BGF new file mode 100644 index 0000000..5714cee Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/JAX2D_FR.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/JAX2_FR.BGF b/CONTENT/BT/VIDEO/GEO/JAX2_FR.BGF new file mode 100644 index 0000000..5714cee Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/JAX2_FR.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/LDBR.BGF b/CONTENT/BT/VIDEO/GEO/LDBR.BGF new file mode 100644 index 0000000..93b7c09 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/LDBR.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/LLASER.BGF b/CONTENT/BT/VIDEO/GEO/LLASER.BGF new file mode 100644 index 0000000..2ff1c38 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/LLASER.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/LOKDLARM.BGF b/CONTENT/BT/VIDEO/GEO/LOKDLARM.BGF new file mode 100644 index 0000000..6f03b81 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/LOKDLARM.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/LOKDLGUN.BGF b/CONTENT/BT/VIDEO/GEO/LOKDLGUN.BGF new file mode 100644 index 0000000..1553b2d Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/LOKDLGUN.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/LOKDLIGH.BGF b/CONTENT/BT/VIDEO/GEO/LOKDLIGH.BGF new file mode 100644 index 0000000..fd16f86 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/LOKDLIGH.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/LOKDMSL.BGF b/CONTENT/BT/VIDEO/GEO/LOKDMSL.BGF new file mode 100644 index 0000000..56b2b56 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/LOKDMSL.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/LOKDRARM.BGF b/CONTENT/BT/VIDEO/GEO/LOKDRARM.BGF new file mode 100644 index 0000000..be0500c Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/LOKDRARM.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/LOKDRGUN.BGF b/CONTENT/BT/VIDEO/GEO/LOKDRGUN.BGF new file mode 100644 index 0000000..ed183b7 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/LOKDRGUN.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/LOK_HIP.BGF b/CONTENT/BT/VIDEO/GEO/LOK_HIP.BGF new file mode 100644 index 0000000..d822a74 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/LOK_HIP.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/LOK_LDLE.BGF b/CONTENT/BT/VIDEO/GEO/LOK_LDLE.BGF new file mode 100644 index 0000000..1aca21b Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/LOK_LDLE.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/LOK_LFOT.BGF b/CONTENT/BT/VIDEO/GEO/LOK_LFOT.BGF new file mode 100644 index 0000000..9746608 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/LOK_LFOT.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/LOK_LGUN.BGF b/CONTENT/BT/VIDEO/GEO/LOK_LGUN.BGF new file mode 100644 index 0000000..4b04837 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/LOK_LGUN.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/LOK_LIGH.BGF b/CONTENT/BT/VIDEO/GEO/LOK_LIGH.BGF new file mode 100644 index 0000000..29780dc Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/LOK_LIGH.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/LOK_LULE.BGF b/CONTENT/BT/VIDEO/GEO/LOK_LULE.BGF new file mode 100644 index 0000000..e12208d Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/LOK_LULE.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/LOK_MSL.BGF b/CONTENT/BT/VIDEO/GEO/LOK_MSL.BGF new file mode 100644 index 0000000..4d859e6 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/LOK_MSL.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/LOK_RDLE.BGF b/CONTENT/BT/VIDEO/GEO/LOK_RDLE.BGF new file mode 100644 index 0000000..f372408 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/LOK_RDLE.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/LOK_RFOT.BGF b/CONTENT/BT/VIDEO/GEO/LOK_RFOT.BGF new file mode 100644 index 0000000..5e02657 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/LOK_RFOT.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/LOK_RULE.BGF b/CONTENT/BT/VIDEO/GEO/LOK_RULE.BGF new file mode 100644 index 0000000..f398244 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/LOK_RULE.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/LOX_COP.BGF b/CONTENT/BT/VIDEO/GEO/LOX_COP.BGF new file mode 100644 index 0000000..ef8ae3f Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/LOX_COP.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/LOX_TOR.BGF b/CONTENT/BT/VIDEO/GEO/LOX_TOR.BGF new file mode 100644 index 0000000..71ce1ec Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/LOX_TOR.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/LRMS.BGF b/CONTENT/BT/VIDEO/GEO/LRMS.BGF new file mode 100644 index 0000000..c24ea4d Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/LRMS.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/MADDLARM.BGF b/CONTENT/BT/VIDEO/GEO/MADDLARM.BGF new file mode 100644 index 0000000..9fb8bf2 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/MADDLARM.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/MADDLGUN.BGF b/CONTENT/BT/VIDEO/GEO/MADDLGUN.BGF new file mode 100644 index 0000000..9c57158 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/MADDLGUN.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/MADDRARM.BGF b/CONTENT/BT/VIDEO/GEO/MADDRARM.BGF new file mode 100644 index 0000000..100bb78 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/MADDRARM.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/MADDRGUN.BGF b/CONTENT/BT/VIDEO/GEO/MADDRGUN.BGF new file mode 100644 index 0000000..a43c513 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/MADDRGUN.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/MAD_HIP.BGF b/CONTENT/BT/VIDEO/GEO/MAD_HIP.BGF new file mode 100644 index 0000000..647f0c8 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/MAD_HIP.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/MAD_LBTO.BGF b/CONTENT/BT/VIDEO/GEO/MAD_LBTO.BGF new file mode 100644 index 0000000..b419ac7 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/MAD_LBTO.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/MAD_LDOO.BGF b/CONTENT/BT/VIDEO/GEO/MAD_LDOO.BGF new file mode 100644 index 0000000..1c97aee Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/MAD_LDOO.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/MAD_LFOT.BGF b/CONTENT/BT/VIDEO/GEO/MAD_LFOT.BGF new file mode 100644 index 0000000..c03d348 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/MAD_LFOT.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/MAD_LGUN.BGF b/CONTENT/BT/VIDEO/GEO/MAD_LGUN.BGF new file mode 100644 index 0000000..a43c3d8 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/MAD_LGUN.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/MAD_LITO.BGF b/CONTENT/BT/VIDEO/GEO/MAD_LITO.BGF new file mode 100644 index 0000000..bb6ee2c Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/MAD_LITO.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/MAD_LOTO.BGF b/CONTENT/BT/VIDEO/GEO/MAD_LOTO.BGF new file mode 100644 index 0000000..6076366 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/MAD_LOTO.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/MAD_RBTO.BGF b/CONTENT/BT/VIDEO/GEO/MAD_RBTO.BGF new file mode 100644 index 0000000..0af332d Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/MAD_RBTO.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/MAD_RDOO.BGF b/CONTENT/BT/VIDEO/GEO/MAD_RDOO.BGF new file mode 100644 index 0000000..959894a Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/MAD_RDOO.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/MAD_RFOT.BGF b/CONTENT/BT/VIDEO/GEO/MAD_RFOT.BGF new file mode 100644 index 0000000..fa64f70 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/MAD_RFOT.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/MAD_RGUN.BGF b/CONTENT/BT/VIDEO/GEO/MAD_RGUN.BGF new file mode 100644 index 0000000..327d1f9 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/MAD_RGUN.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/MAD_RITO.BGF b/CONTENT/BT/VIDEO/GEO/MAD_RITO.BGF new file mode 100644 index 0000000..1aec2e1 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/MAD_RITO.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/MAD_ROTO.BGF b/CONTENT/BT/VIDEO/GEO/MAD_ROTO.BGF new file mode 100644 index 0000000..c259166 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/MAD_ROTO.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/MAX_LBTO.BGF b/CONTENT/BT/VIDEO/GEO/MAX_LBTO.BGF new file mode 100644 index 0000000..9736d3e Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/MAX_LBTO.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/MAX_LDLE.BGF b/CONTENT/BT/VIDEO/GEO/MAX_LDLE.BGF new file mode 100644 index 0000000..3a41c3f Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/MAX_LDLE.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/MAX_LFOT.BGF b/CONTENT/BT/VIDEO/GEO/MAX_LFOT.BGF new file mode 100644 index 0000000..eb0f259 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/MAX_LFOT.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/MAX_LITO.BGF b/CONTENT/BT/VIDEO/GEO/MAX_LITO.BGF new file mode 100644 index 0000000..eb8e2d0 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/MAX_LITO.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/MAX_LOTO.BGF b/CONTENT/BT/VIDEO/GEO/MAX_LOTO.BGF new file mode 100644 index 0000000..3a0a0ae Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/MAX_LOTO.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/MAX_RBTO.BGF b/CONTENT/BT/VIDEO/GEO/MAX_RBTO.BGF new file mode 100644 index 0000000..685a7df Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/MAX_RBTO.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/MAX_RDLE.BGF b/CONTENT/BT/VIDEO/GEO/MAX_RDLE.BGF new file mode 100644 index 0000000..dd86db1 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/MAX_RDLE.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/MAX_RFOT.BGF b/CONTENT/BT/VIDEO/GEO/MAX_RFOT.BGF new file mode 100644 index 0000000..241ad98 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/MAX_RFOT.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/MAX_RITO.BGF b/CONTENT/BT/VIDEO/GEO/MAX_RITO.BGF new file mode 100644 index 0000000..29b21d0 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/MAX_RITO.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/MAX_ROTO.BGF b/CONTENT/BT/VIDEO/GEO/MAX_ROTO.BGF new file mode 100644 index 0000000..53adbba Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/MAX_ROTO.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/MECHMOVS.BGF b/CONTENT/BT/VIDEO/GEO/MECHMOVS.BGF new file mode 100644 index 0000000..d64e0eb Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/MECHMOVS.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/MISSILE.BGF b/CONTENT/BT/VIDEO/GEO/MISSILE.BGF new file mode 100644 index 0000000..6304728 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/MISSILE.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/MLASER.BGF b/CONTENT/BT/VIDEO/GEO/MLASER.BGF new file mode 100644 index 0000000..504c359 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/MLASER.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/MORNING/DSKY.BGF b/CONTENT/BT/VIDEO/GEO/MORNING/DSKY.BGF new file mode 100644 index 0000000..34bc3a7 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/MORNING/DSKY.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/MORNING/RAVFLOOR.BGF b/CONTENT/BT/VIDEO/GEO/MORNING/RAVFLOOR.BGF new file mode 100644 index 0000000..44f05bb Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/MORNING/RAVFLOOR.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/MORNING/SEMIS.BGF b/CONTENT/BT/VIDEO/GEO/MORNING/SEMIS.BGF new file mode 100644 index 0000000..765faea Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/MORNING/SEMIS.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/MORNING/SKY.BGF b/CONTENT/BT/VIDEO/GEO/MORNING/SKY.BGF new file mode 100644 index 0000000..0375eda Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/MORNING/SKY.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/MORNING/SPOT.BGF b/CONTENT/BT/VIDEO/GEO/MORNING/SPOT.BGF new file mode 100644 index 0000000..ff4260e Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/MORNING/SPOT.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/MSLB_LP.BGF b/CONTENT/BT/VIDEO/GEO/MSLB_LP.BGF new file mode 100644 index 0000000..30bb5dc Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/MSLB_LP.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/MSLG_FR.BGF b/CONTENT/BT/VIDEO/GEO/MSLG_FR.BGF new file mode 100644 index 0000000..ae03907 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/MSLG_FR.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/MSLG_LP.BGF b/CONTENT/BT/VIDEO/GEO/MSLG_LP.BGF new file mode 100644 index 0000000..dfe2773 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/MSLG_LP.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/MSLH_FR.BGF b/CONTENT/BT/VIDEO/GEO/MSLH_FR.BGF new file mode 100644 index 0000000..56ccf1c Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/MSLH_FR.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/MSLH_LP.BGF b/CONTENT/BT/VIDEO/GEO/MSLH_LP.BGF new file mode 100644 index 0000000..b845cfe Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/MSLH_LP.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/MSLRD_FR.BGF b/CONTENT/BT/VIDEO/GEO/MSLRD_FR.BGF new file mode 100644 index 0000000..1efaca4 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/MSLRD_FR.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/MSLROAD1.BGF b/CONTENT/BT/VIDEO/GEO/MSLROAD1.BGF new file mode 100644 index 0000000..0ce9d1a Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/MSLROAD1.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/MSLR_FR.BGF b/CONTENT/BT/VIDEO/GEO/MSLR_FR.BGF new file mode 100644 index 0000000..6066cd8 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/MSLR_FR.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/MSLR_LP.BGF b/CONTENT/BT/VIDEO/GEO/MSLR_LP.BGF new file mode 100644 index 0000000..6d20373 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/MSLR_LP.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/MSL_FR.BGF b/CONTENT/BT/VIDEO/GEO/MSL_FR.BGF new file mode 100644 index 0000000..3736774 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/MSL_FR.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/MUZFLASH.BGF b/CONTENT/BT/VIDEO/GEO/MUZFLASH.BGF new file mode 100644 index 0000000..83d4a90 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/MUZFLASH.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/NBEAM.BGF b/CONTENT/BT/VIDEO/GEO/NBEAM.BGF new file mode 100644 index 0000000..81a156b Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/NBEAM.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/NIGHT/DSKY.BGF b/CONTENT/BT/VIDEO/GEO/NIGHT/DSKY.BGF new file mode 100644 index 0000000..34bc3a7 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/NIGHT/DSKY.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/NIGHT/SKY.BGF b/CONTENT/BT/VIDEO/GEO/NIGHT/SKY.BGF new file mode 100644 index 0000000..73d1df7 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/NIGHT/SKY.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/NIGHT/SPOT.BGF b/CONTENT/BT/VIDEO/GEO/NIGHT/SPOT.BGF new file mode 100644 index 0000000..133beed Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/NIGHT/SPOT.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/NTR.BGF b/CONTENT/BT/VIDEO/GEO/NTR.BGF new file mode 100644 index 0000000..ebf8e34 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/NTR.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/OWNDCAM.BGF b/CONTENT/BT/VIDEO/GEO/OWNDCAM.BGF new file mode 100644 index 0000000..cc34451 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/OWNDCAM.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/OWNDLMSL.BGF b/CONTENT/BT/VIDEO/GEO/OWNDLMSL.BGF new file mode 100644 index 0000000..e1ea98d Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/OWNDLMSL.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/OWNDRMSL.BGF b/CONTENT/BT/VIDEO/GEO/OWNDRMSL.BGF new file mode 100644 index 0000000..8afaf08 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/OWNDRMSL.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/OWN_CAM.BGF b/CONTENT/BT/VIDEO/GEO/OWN_CAM.BGF new file mode 100644 index 0000000..6419ff4 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/OWN_CAM.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/OWN_LANT.BGF b/CONTENT/BT/VIDEO/GEO/OWN_LANT.BGF new file mode 100644 index 0000000..0dad0d0 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/OWN_LANT.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/OWN_LBTO.BGF b/CONTENT/BT/VIDEO/GEO/OWN_LBTO.BGF new file mode 100644 index 0000000..937c212 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/OWN_LBTO.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/OWN_LFTO.BGF b/CONTENT/BT/VIDEO/GEO/OWN_LFTO.BGF new file mode 100644 index 0000000..1e62380 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/OWN_LFTO.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/OWN_LMSL.BGF b/CONTENT/BT/VIDEO/GEO/OWN_LMSL.BGF new file mode 100644 index 0000000..92f0d16 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/OWN_LMSL.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/OWN_RANT.BGF b/CONTENT/BT/VIDEO/GEO/OWN_RANT.BGF new file mode 100644 index 0000000..e9dc4ce Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/OWN_RANT.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/OWN_RBTO.BGF b/CONTENT/BT/VIDEO/GEO/OWN_RBTO.BGF new file mode 100644 index 0000000..ff003b7 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/OWN_RBTO.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/OWN_RFTO.BGF b/CONTENT/BT/VIDEO/GEO/OWN_RFTO.BGF new file mode 100644 index 0000000..dc1a458 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/OWN_RFTO.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/OWN_RMSL.BGF b/CONTENT/BT/VIDEO/GEO/OWN_RMSL.BGF new file mode 100644 index 0000000..684c9fd Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/OWN_RMSL.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/OWX_LBTO.BGF b/CONTENT/BT/VIDEO/GEO/OWX_LBTO.BGF new file mode 100644 index 0000000..9ba848b Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/OWX_LBTO.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/OWX_LDLE.BGF b/CONTENT/BT/VIDEO/GEO/OWX_LDLE.BGF new file mode 100644 index 0000000..4e0dd85 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/OWX_LDLE.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/OWX_LFTO.BGF b/CONTENT/BT/VIDEO/GEO/OWX_LFTO.BGF new file mode 100644 index 0000000..a95bb91 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/OWX_LFTO.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/OWX_LULE.BGF b/CONTENT/BT/VIDEO/GEO/OWX_LULE.BGF new file mode 100644 index 0000000..f20b507 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/OWX_LULE.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/OWX_RBTO.BGF b/CONTENT/BT/VIDEO/GEO/OWX_RBTO.BGF new file mode 100644 index 0000000..6ab4c8d Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/OWX_RBTO.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/OWX_RDLE.BGF b/CONTENT/BT/VIDEO/GEO/OWX_RDLE.BGF new file mode 100644 index 0000000..9355501 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/OWX_RDLE.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/OWX_RFTO.BGF b/CONTENT/BT/VIDEO/GEO/OWX_RFTO.BGF new file mode 100644 index 0000000..80bfdf2 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/OWX_RFTO.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/OWX_RULE.BGF b/CONTENT/BT/VIDEO/GEO/OWX_RULE.BGF new file mode 100644 index 0000000..8bfc39b Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/OWX_RULE.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/PDSD_FR.BGF b/CONTENT/BT/VIDEO/GEO/PDSD_FR.BGF new file mode 100644 index 0000000..2a73ded Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/PDSD_FR.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/PDSH_FR.BGF b/CONTENT/BT/VIDEO/GEO/PDSH_FR.BGF new file mode 100644 index 0000000..e6af83b Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/PDSH_FR.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/PDSH_LP.BGF b/CONTENT/BT/VIDEO/GEO/PDSH_LP.BGF new file mode 100644 index 0000000..28a2694 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/PDSH_LP.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/PGNDBASE.BGF b/CONTENT/BT/VIDEO/GEO/PGNDBASE.BGF new file mode 100644 index 0000000..8283e3e Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/PGNDBASE.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/PGNDGUN.BGF b/CONTENT/BT/VIDEO/GEO/PGNDGUN.BGF new file mode 100644 index 0000000..c841606 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/PGNDGUN.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/PGND_FR.BGF b/CONTENT/BT/VIDEO/GEO/PGND_FR.BGF new file mode 100644 index 0000000..0fd634e Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/PGND_FR.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/PGN_BASE.BGF b/CONTENT/BT/VIDEO/GEO/PGN_BASE.BGF new file mode 100644 index 0000000..7561937 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/PGN_BASE.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/PGN_FR.BGF b/CONTENT/BT/VIDEO/GEO/PGN_FR.BGF new file mode 100644 index 0000000..d77c12d Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/PGN_FR.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/PLACE1.BGF b/CONTENT/BT/VIDEO/GEO/PLACE1.BGF new file mode 100644 index 0000000..b3d899d Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/PLACE1.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/PLACE2.BGF b/CONTENT/BT/VIDEO/GEO/PLACE2.BGF new file mode 100644 index 0000000..68d1e7a Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/PLACE2.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/PLACE3.BGF b/CONTENT/BT/VIDEO/GEO/PLACE3.BGF new file mode 100644 index 0000000..a93421e Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/PLACE3.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/PLACE4.BGF b/CONTENT/BT/VIDEO/GEO/PLACE4.BGF new file mode 100644 index 0000000..034b8b0 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/PLACE4.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/PLACE5.BGF b/CONTENT/BT/VIDEO/GEO/PLACE5.BGF new file mode 100644 index 0000000..54fb5f9 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/PLACE5.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/PLACE6.BGF b/CONTENT/BT/VIDEO/GEO/PLACE6.BGF new file mode 100644 index 0000000..bba49db Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/PLACE6.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/PLACE7.BGF b/CONTENT/BT/VIDEO/GEO/PLACE7.BGF new file mode 100644 index 0000000..5871fea Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/PLACE7.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/PLACE8.BGF b/CONTENT/BT/VIDEO/GEO/PLACE8.BGF new file mode 100644 index 0000000..b5c8b7e Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/PLACE8.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/PLIT_FR.BGF b/CONTENT/BT/VIDEO/GEO/PLIT_FR.BGF new file mode 100644 index 0000000..039dab3 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/PLIT_FR.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/PLTD_FR.BGF b/CONTENT/BT/VIDEO/GEO/PLTD_FR.BGF new file mode 100644 index 0000000..984ba2b Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/PLTD_FR.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/PNAME1.BGF b/CONTENT/BT/VIDEO/GEO/PNAME1.BGF new file mode 100644 index 0000000..710d6c9 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/PNAME1.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/PNAME2.BGF b/CONTENT/BT/VIDEO/GEO/PNAME2.BGF new file mode 100644 index 0000000..8228574 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/PNAME2.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/PNAME3.BGF b/CONTENT/BT/VIDEO/GEO/PNAME3.BGF new file mode 100644 index 0000000..383812c Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/PNAME3.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/PNAME4.BGF b/CONTENT/BT/VIDEO/GEO/PNAME4.BGF new file mode 100644 index 0000000..71a15eb Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/PNAME4.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/PNAME5.BGF b/CONTENT/BT/VIDEO/GEO/PNAME5.BGF new file mode 100644 index 0000000..703888f Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/PNAME5.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/PNAME6.BGF b/CONTENT/BT/VIDEO/GEO/PNAME6.BGF new file mode 100644 index 0000000..21252d7 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/PNAME6.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/PNAME7.BGF b/CONTENT/BT/VIDEO/GEO/PNAME7.BGF new file mode 100644 index 0000000..d2c7c3c Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/PNAME7.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/PNAME8.BGF b/CONTENT/BT/VIDEO/GEO/PNAME8.BGF new file mode 100644 index 0000000..fac4c61 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/PNAME8.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/POLAR/AVA_TSHD.BGF b/CONTENT/BT/VIDEO/GEO/POLAR/AVA_TSHD.BGF new file mode 100644 index 0000000..f4f35cc Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/POLAR/AVA_TSHD.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/POLAR/BLH_TSHD.BGF b/CONTENT/BT/VIDEO/GEO/POLAR/BLH_TSHD.BGF new file mode 100644 index 0000000..f4f35cc Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/POLAR/BLH_TSHD.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/POLAR/FIR_TSHD.BGF b/CONTENT/BT/VIDEO/GEO/POLAR/FIR_TSHD.BGF new file mode 100644 index 0000000..f4f35cc Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/POLAR/FIR_TSHD.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/POLAR/LOK_TSHD.BGF b/CONTENT/BT/VIDEO/GEO/POLAR/LOK_TSHD.BGF new file mode 100644 index 0000000..f4f35cc Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/POLAR/LOK_TSHD.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/POLAR/MAD_TSHD.BGF b/CONTENT/BT/VIDEO/GEO/POLAR/MAD_TSHD.BGF new file mode 100644 index 0000000..f4f35cc Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/POLAR/MAD_TSHD.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/POLAR/OWN_TSHD.BGF b/CONTENT/BT/VIDEO/GEO/POLAR/OWN_TSHD.BGF new file mode 100644 index 0000000..f4f35cc Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/POLAR/OWN_TSHD.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/POLAR/RAP_TSHD.BGF b/CONTENT/BT/VIDEO/GEO/POLAR/RAP_TSHD.BGF new file mode 100644 index 0000000..001d5da Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/POLAR/RAP_TSHD.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/POLAR/SND_TSHD.BGF b/CONTENT/BT/VIDEO/GEO/POLAR/SND_TSHD.BGF new file mode 100644 index 0000000..f4f35cc Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/POLAR/SND_TSHD.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/POLAR/STI_TSHD.BGF b/CONTENT/BT/VIDEO/GEO/POLAR/STI_TSHD.BGF new file mode 100644 index 0000000..f4f35cc Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/POLAR/STI_TSHD.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/POLAR/THR_TSHD.BGF b/CONTENT/BT/VIDEO/GEO/POLAR/THR_TSHD.BGF new file mode 100644 index 0000000..f4f35cc Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/POLAR/THR_TSHD.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/POLAR/VUL_TSHD.BGF b/CONTENT/BT/VIDEO/GEO/POLAR/VUL_TSHD.BGF new file mode 100644 index 0000000..f4f35cc Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/POLAR/VUL_TSHD.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/PPC.BGF b/CONTENT/BT/VIDEO/GEO/PPC.BGF new file mode 100644 index 0000000..911ccc1 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/PPC.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/PROFILE1.BGF b/CONTENT/BT/VIDEO/GEO/PROFILE1.BGF new file mode 100644 index 0000000..59ed31c Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/PROFILE1.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/PROFILE2.BGF b/CONTENT/BT/VIDEO/GEO/PROFILE2.BGF new file mode 100644 index 0000000..c437b81 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/PROFILE2.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/PROFILE3.BGF b/CONTENT/BT/VIDEO/GEO/PROFILE3.BGF new file mode 100644 index 0000000..4643e97 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/PROFILE3.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/PROFILE4.BGF b/CONTENT/BT/VIDEO/GEO/PROFILE4.BGF new file mode 100644 index 0000000..8ecebc7 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/PROFILE4.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/PROFILE5.BGF b/CONTENT/BT/VIDEO/GEO/PROFILE5.BGF new file mode 100644 index 0000000..edf1b16 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/PROFILE5.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/PROFILE6.BGF b/CONTENT/BT/VIDEO/GEO/PROFILE6.BGF new file mode 100644 index 0000000..79418fe Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/PROFILE6.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/PROFILE7.BGF b/CONTENT/BT/VIDEO/GEO/PROFILE7.BGF new file mode 100644 index 0000000..1a62653 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/PROFILE7.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/PROFILE8.BGF b/CONTENT/BT/VIDEO/GEO/PROFILE8.BGF new file mode 100644 index 0000000..ab86090 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/PROFILE8.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/PWIN1.BGF b/CONTENT/BT/VIDEO/GEO/PWIN1.BGF new file mode 100644 index 0000000..ba181d4 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/PWIN1.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/PWIN2.BGF b/CONTENT/BT/VIDEO/GEO/PWIN2.BGF new file mode 100644 index 0000000..b865e68 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/PWIN2.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/PWIN3.BGF b/CONTENT/BT/VIDEO/GEO/PWIN3.BGF new file mode 100644 index 0000000..c790b0c Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/PWIN3.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/PWIN4.BGF b/CONTENT/BT/VIDEO/GEO/PWIN4.BGF new file mode 100644 index 0000000..fd86e02 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/PWIN4.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/PWIN5.BGF b/CONTENT/BT/VIDEO/GEO/PWIN5.BGF new file mode 100644 index 0000000..a1c7e53 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/PWIN5.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/PWIN6.BGF b/CONTENT/BT/VIDEO/GEO/PWIN6.BGF new file mode 100644 index 0000000..66150d7 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/PWIN6.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/PWIN7.BGF b/CONTENT/BT/VIDEO/GEO/PWIN7.BGF new file mode 100644 index 0000000..184ab96 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/PWIN7.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/PWIN8.BGF b/CONTENT/BT/VIDEO/GEO/PWIN8.BGF new file mode 100644 index 0000000..66ac11f Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/PWIN8.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/RAV/AVA_TSHD.BGF b/CONTENT/BT/VIDEO/GEO/RAV/AVA_TSHD.BGF new file mode 100644 index 0000000..bc54a5e Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/RAV/AVA_TSHD.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/RAV/BLH_TSHD.BGF b/CONTENT/BT/VIDEO/GEO/RAV/BLH_TSHD.BGF new file mode 100644 index 0000000..450c45d Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/RAV/BLH_TSHD.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/RAV/FIR_TSHD.BGF b/CONTENT/BT/VIDEO/GEO/RAV/FIR_TSHD.BGF new file mode 100644 index 0000000..22f221d Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/RAV/FIR_TSHD.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/RAV/LOK_TSHD.BGF b/CONTENT/BT/VIDEO/GEO/RAV/LOK_TSHD.BGF new file mode 100644 index 0000000..0cf4b3d Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/RAV/LOK_TSHD.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/RAV/MAD_TSHD.BGF b/CONTENT/BT/VIDEO/GEO/RAV/MAD_TSHD.BGF new file mode 100644 index 0000000..a5ccef4 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/RAV/MAD_TSHD.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/RAV/OWN_TSHD.BGF b/CONTENT/BT/VIDEO/GEO/RAV/OWN_TSHD.BGF new file mode 100644 index 0000000..001d5da Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/RAV/OWN_TSHD.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/RAV/RAP_TSHD.BGF b/CONTENT/BT/VIDEO/GEO/RAV/RAP_TSHD.BGF new file mode 100644 index 0000000..001d5da Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/RAV/RAP_TSHD.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/RAV/SND_TSHD.BGF b/CONTENT/BT/VIDEO/GEO/RAV/SND_TSHD.BGF new file mode 100644 index 0000000..f944a37 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/RAV/SND_TSHD.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/RAV/STI_TSHD.BGF b/CONTENT/BT/VIDEO/GEO/RAV/STI_TSHD.BGF new file mode 100644 index 0000000..001d5da Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/RAV/STI_TSHD.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/RAV/THR_TSHD.BGF b/CONTENT/BT/VIDEO/GEO/RAV/THR_TSHD.BGF new file mode 100644 index 0000000..22f221d Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/RAV/THR_TSHD.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/RAV/VUL_TSHD.BGF b/CONTENT/BT/VIDEO/GEO/RAV/VUL_TSHD.BGF new file mode 100644 index 0000000..d6fe8fe Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/RAV/VUL_TSHD.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/RAV1/AVA_TSHD.BGF b/CONTENT/BT/VIDEO/GEO/RAV1/AVA_TSHD.BGF new file mode 100644 index 0000000..bc54a5e Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/RAV1/AVA_TSHD.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/RAV1/BLH_TSHD.BGF b/CONTENT/BT/VIDEO/GEO/RAV1/BLH_TSHD.BGF new file mode 100644 index 0000000..450c45d Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/RAV1/BLH_TSHD.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/RAV1/FIR_TSHD.BGF b/CONTENT/BT/VIDEO/GEO/RAV1/FIR_TSHD.BGF new file mode 100644 index 0000000..22f221d Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/RAV1/FIR_TSHD.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/RAV1/LOK_TSHD.BGF b/CONTENT/BT/VIDEO/GEO/RAV1/LOK_TSHD.BGF new file mode 100644 index 0000000..0cf4b3d Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/RAV1/LOK_TSHD.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/RAV1/MAD_TSHD.BGF b/CONTENT/BT/VIDEO/GEO/RAV1/MAD_TSHD.BGF new file mode 100644 index 0000000..a5ccef4 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/RAV1/MAD_TSHD.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/RAV1/OWN_TSHD.BGF b/CONTENT/BT/VIDEO/GEO/RAV1/OWN_TSHD.BGF new file mode 100644 index 0000000..001d5da Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/RAV1/OWN_TSHD.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/RAV1/RAP_TSHD.BGF b/CONTENT/BT/VIDEO/GEO/RAV1/RAP_TSHD.BGF new file mode 100644 index 0000000..001d5da Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/RAV1/RAP_TSHD.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/RAV1/SND_TSHD.BGF b/CONTENT/BT/VIDEO/GEO/RAV1/SND_TSHD.BGF new file mode 100644 index 0000000..f944a37 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/RAV1/SND_TSHD.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/RAV1/STI_TSHD.BGF b/CONTENT/BT/VIDEO/GEO/RAV1/STI_TSHD.BGF new file mode 100644 index 0000000..001d5da Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/RAV1/STI_TSHD.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/RAV1/THR_TSHD.BGF b/CONTENT/BT/VIDEO/GEO/RAV1/THR_TSHD.BGF new file mode 100644 index 0000000..22f221d Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/RAV1/THR_TSHD.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/RAV1/VUL_TSHD.BGF b/CONTENT/BT/VIDEO/GEO/RAV1/VUL_TSHD.BGF new file mode 100644 index 0000000..d6fe8fe Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/RAV1/VUL_TSHD.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/RAVFLOOR.BGF b/CONTENT/BT/VIDEO/GEO/RAVFLOOR.BGF new file mode 100644 index 0000000..6f0ddbb Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/RAVFLOOR.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/RAVINE0.BGF b/CONTENT/BT/VIDEO/GEO/RAVINE0.BGF new file mode 100644 index 0000000..c73185e Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/RAVINE0.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/RAVINES.BMF b/CONTENT/BT/VIDEO/GEO/RAVINES.BMF new file mode 100644 index 0000000..835b219 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/RAVINES.BMF differ diff --git a/CONTENT/BT/VIDEO/GEO/RAVWIN.BGF b/CONTENT/BT/VIDEO/GEO/RAVWIN.BGF new file mode 100644 index 0000000..a29d3af Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/RAVWIN.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/RB1.BGF b/CONTENT/BT/VIDEO/GEO/RB1.BGF new file mode 100644 index 0000000..11aaf65 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/RB1.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/RB2.BGF b/CONTENT/BT/VIDEO/GEO/RB2.BGF new file mode 100644 index 0000000..0fe23d8 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/RB2.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/RB3.BGF b/CONTENT/BT/VIDEO/GEO/RB3.BGF new file mode 100644 index 0000000..429deec Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/RB3.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/RB4.BGF b/CONTENT/BT/VIDEO/GEO/RB4.BGF new file mode 100644 index 0000000..96900c2 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/RB4.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/RB5.BGF b/CONTENT/BT/VIDEO/GEO/RB5.BGF new file mode 100644 index 0000000..2749ef9 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/RB5.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/RB6.BGF b/CONTENT/BT/VIDEO/GEO/RB6.BGF new file mode 100644 index 0000000..8f52a8b Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/RB6.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/RD1.BGF b/CONTENT/BT/VIDEO/GEO/RD1.BGF new file mode 100644 index 0000000..06be76f Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/RD1.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/RD2.BGF b/CONTENT/BT/VIDEO/GEO/RD2.BGF new file mode 100644 index 0000000..2c65cc0 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/RD2.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/RED_BEAM.BGF b/CONTENT/BT/VIDEO/GEO/RED_BEAM.BGF new file mode 100644 index 0000000..b88d8fc Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/RED_BEAM.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/RK4.BGF b/CONTENT/BT/VIDEO/GEO/RK4.BGF new file mode 100644 index 0000000..331c7ec Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/RK4.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/RK5.BGF b/CONTENT/BT/VIDEO/GEO/RK5.BGF new file mode 100644 index 0000000..e72bfe4 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/RK5.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/RK6.BGF b/CONTENT/BT/VIDEO/GEO/RK6.BGF new file mode 100644 index 0000000..98b35e9 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/RK6.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/RK7.BGF b/CONTENT/BT/VIDEO/GEO/RK7.BGF new file mode 100644 index 0000000..9920f4a Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/RK7.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/ROMMELS.BGF b/CONTENT/BT/VIDEO/GEO/ROMMELS.BGF new file mode 100644 index 0000000..e3f0620 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/ROMMELS.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/RWD.BGF b/CONTENT/BT/VIDEO/GEO/RWD.BGF new file mode 100644 index 0000000..c18f56b Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/RWD.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/RWIN1.BGF b/CONTENT/BT/VIDEO/GEO/RWIN1.BGF new file mode 100644 index 0000000..4651a8b Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/RWIN1.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SAW.BGF b/CONTENT/BT/VIDEO/GEO/SAW.BGF new file mode 100644 index 0000000..70e85fb Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SAW.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SB1.BGF b/CONTENT/BT/VIDEO/GEO/SB1.BGF new file mode 100644 index 0000000..e334ace Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SB1.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SB1B.BGF b/CONTENT/BT/VIDEO/GEO/SB1B.BGF new file mode 100644 index 0000000..3745612 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SB1B.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SB1C.BGF b/CONTENT/BT/VIDEO/GEO/SB1C.BGF new file mode 100644 index 0000000..9d19811 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SB1C.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SB1D.BGF b/CONTENT/BT/VIDEO/GEO/SB1D.BGF new file mode 100644 index 0000000..47ff88a Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SB1D.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SB1E.BGF b/CONTENT/BT/VIDEO/GEO/SB1E.BGF new file mode 100644 index 0000000..19748cd Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SB1E.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SB1N.BGF b/CONTENT/BT/VIDEO/GEO/SB1N.BGF new file mode 100644 index 0000000..8a991ea Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SB1N.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SB1S.BGF b/CONTENT/BT/VIDEO/GEO/SB1S.BGF new file mode 100644 index 0000000..075d892 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SB1S.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SB1W.BGF b/CONTENT/BT/VIDEO/GEO/SB1W.BGF new file mode 100644 index 0000000..ef6fafc Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SB1W.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SB2.BGF b/CONTENT/BT/VIDEO/GEO/SB2.BGF new file mode 100644 index 0000000..6b3100b Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SB2.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SB2B.BGF b/CONTENT/BT/VIDEO/GEO/SB2B.BGF new file mode 100644 index 0000000..6fb3f6b Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SB2B.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SB2C.BGF b/CONTENT/BT/VIDEO/GEO/SB2C.BGF new file mode 100644 index 0000000..d6dbb98 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SB2C.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SB2D.BGF b/CONTENT/BT/VIDEO/GEO/SB2D.BGF new file mode 100644 index 0000000..c6e417c Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SB2D.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SB2E.BGF b/CONTENT/BT/VIDEO/GEO/SB2E.BGF new file mode 100644 index 0000000..9f68ae2 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SB2E.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SB2N.BGF b/CONTENT/BT/VIDEO/GEO/SB2N.BGF new file mode 100644 index 0000000..f56e587 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SB2N.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SB2S.BGF b/CONTENT/BT/VIDEO/GEO/SB2S.BGF new file mode 100644 index 0000000..83c655e Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SB2S.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SB2W.BGF b/CONTENT/BT/VIDEO/GEO/SB2W.BGF new file mode 100644 index 0000000..32d1a30 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SB2W.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SB3E.BGF b/CONTENT/BT/VIDEO/GEO/SB3E.BGF new file mode 100644 index 0000000..7e6170b Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SB3E.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SB3N.BGF b/CONTENT/BT/VIDEO/GEO/SB3N.BGF new file mode 100644 index 0000000..49b7d24 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SB3N.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SB3S.BGF b/CONTENT/BT/VIDEO/GEO/SB3S.BGF new file mode 100644 index 0000000..8638209 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SB3S.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SB3W.BGF b/CONTENT/BT/VIDEO/GEO/SB3W.BGF new file mode 100644 index 0000000..eb3884a Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SB3W.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SB4E.BGF b/CONTENT/BT/VIDEO/GEO/SB4E.BGF new file mode 100644 index 0000000..c2fe5d6 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SB4E.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SB4N.BGF b/CONTENT/BT/VIDEO/GEO/SB4N.BGF new file mode 100644 index 0000000..07b835b Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SB4N.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SB4S.BGF b/CONTENT/BT/VIDEO/GEO/SB4S.BGF new file mode 100644 index 0000000..92024b1 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SB4S.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SB4W.BGF b/CONTENT/BT/VIDEO/GEO/SB4W.BGF new file mode 100644 index 0000000..bf12880 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SB4W.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SEMIRIGS.BGF b/CONTENT/BT/VIDEO/GEO/SEMIRIGS.BGF new file mode 100644 index 0000000..86ecafe Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SEMIRIGS.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SEMIS.BGF b/CONTENT/BT/VIDEO/GEO/SEMIS.BGF new file mode 100644 index 0000000..f01b69e Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SEMIS.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SHOCK.BGF b/CONTENT/BT/VIDEO/GEO/SHOCK.BGF new file mode 100644 index 0000000..bd9a600 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SHOCK.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SL2.BGF b/CONTENT/BT/VIDEO/GEO/SL2.BGF new file mode 100644 index 0000000..4f1be18 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SL2.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SL2D.BGF b/CONTENT/BT/VIDEO/GEO/SL2D.BGF new file mode 100644 index 0000000..e5630be Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SL2D.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SL2D_FR.BGF b/CONTENT/BT/VIDEO/GEO/SL2D_FR.BGF new file mode 100644 index 0000000..3d944da Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SL2D_FR.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SLASER.BGF b/CONTENT/BT/VIDEO/GEO/SLASER.BGF new file mode 100644 index 0000000..fe52dba Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SLASER.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SLD2.BGF b/CONTENT/BT/VIDEO/GEO/SLD2.BGF new file mode 100644 index 0000000..39104ba Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SLD2.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SLD2_FR.BGF b/CONTENT/BT/VIDEO/GEO/SLD2_FR.BGF new file mode 100644 index 0000000..f9a7af0 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SLD2_FR.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SLT.BGF b/CONTENT/BT/VIDEO/GEO/SLT.BGF new file mode 100644 index 0000000..892dd43 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SLT.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SMK_A.BGF b/CONTENT/BT/VIDEO/GEO/SMK_A.BGF new file mode 100644 index 0000000..4558d4a Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SMK_A.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SMK_B.BGF b/CONTENT/BT/VIDEO/GEO/SMK_B.BGF new file mode 100644 index 0000000..4558d4a Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SMK_B.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SMK_C.BGF b/CONTENT/BT/VIDEO/GEO/SMK_C.BGF new file mode 100644 index 0000000..b3cb5e9 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SMK_C.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SN1.BGF b/CONTENT/BT/VIDEO/GEO/SN1.BGF new file mode 100644 index 0000000..e2f187e Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SN1.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SN2.BGF b/CONTENT/BT/VIDEO/GEO/SN2.BGF new file mode 100644 index 0000000..a1560dc Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SN2.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SN4.BGF b/CONTENT/BT/VIDEO/GEO/SN4.BGF new file mode 100644 index 0000000..90a6798 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SN4.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SNDDLARM.BGF b/CONTENT/BT/VIDEO/GEO/SNDDLARM.BGF new file mode 100644 index 0000000..43c402d Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SNDDLARM.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SNDDLGUN.BGF b/CONTENT/BT/VIDEO/GEO/SNDDLGUN.BGF new file mode 100644 index 0000000..fd992ae Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SNDDLGUN.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SNDDRARM.BGF b/CONTENT/BT/VIDEO/GEO/SNDDRARM.BGF new file mode 100644 index 0000000..85bf327 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SNDDRARM.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SND_DOOR.BGF b/CONTENT/BT/VIDEO/GEO/SND_DOOR.BGF new file mode 100644 index 0000000..c88c37d Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SND_DOOR.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SND_HIP.BGF b/CONTENT/BT/VIDEO/GEO/SND_HIP.BGF new file mode 100644 index 0000000..4fb757a Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SND_HIP.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SND_LDLE.BGF b/CONTENT/BT/VIDEO/GEO/SND_LDLE.BGF new file mode 100644 index 0000000..fc647fc Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SND_LDLE.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SND_LFOT.BGF b/CONTENT/BT/VIDEO/GEO/SND_LFOT.BGF new file mode 100644 index 0000000..aa4dbea Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SND_LFOT.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SND_LULE.BGF b/CONTENT/BT/VIDEO/GEO/SND_LULE.BGF new file mode 100644 index 0000000..762d354 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SND_LULE.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SND_RARM.BGF b/CONTENT/BT/VIDEO/GEO/SND_RARM.BGF new file mode 100644 index 0000000..7b0e740 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SND_RARM.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SND_RDLE.BGF b/CONTENT/BT/VIDEO/GEO/SND_RDLE.BGF new file mode 100644 index 0000000..2312104 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SND_RDLE.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SND_RFOT.BGF b/CONTENT/BT/VIDEO/GEO/SND_RFOT.BGF new file mode 100644 index 0000000..b7f173f Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SND_RFOT.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SND_RULE.BGF b/CONTENT/BT/VIDEO/GEO/SND_RULE.BGF new file mode 100644 index 0000000..457506f Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SND_RULE.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SNHD_FR.BGF b/CONTENT/BT/VIDEO/GEO/SNHD_FR.BGF new file mode 100644 index 0000000..611e460 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SNHD_FR.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SNH_FR.BGF b/CONTENT/BT/VIDEO/GEO/SNH_FR.BGF new file mode 100644 index 0000000..ac8652b Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SNH_FR.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SNX_COP.BGF b/CONTENT/BT/VIDEO/GEO/SNX_COP.BGF new file mode 100644 index 0000000..e0ab238 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SNX_COP.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SNX_TOR.BGF b/CONTENT/BT/VIDEO/GEO/SNX_TOR.BGF new file mode 100644 index 0000000..a5e3725 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SNX_TOR.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SPK1.BGF b/CONTENT/BT/VIDEO/GEO/SPK1.BGF new file mode 100644 index 0000000..d588197 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SPK1.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SPK2.BGF b/CONTENT/BT/VIDEO/GEO/SPK2.BGF new file mode 100644 index 0000000..60a2ffe Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SPK2.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SPOT.BGF b/CONTENT/BT/VIDEO/GEO/SPOT.BGF new file mode 100644 index 0000000..5a8b1f8 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SPOT.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SR1E.BGF b/CONTENT/BT/VIDEO/GEO/SR1E.BGF new file mode 100644 index 0000000..0d4de54 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SR1E.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SR1N.BGF b/CONTENT/BT/VIDEO/GEO/SR1N.BGF new file mode 100644 index 0000000..6a9a71f Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SR1N.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SR1S.BGF b/CONTENT/BT/VIDEO/GEO/SR1S.BGF new file mode 100644 index 0000000..a4c320d Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SR1S.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SR1W.BGF b/CONTENT/BT/VIDEO/GEO/SR1W.BGF new file mode 100644 index 0000000..e91be65 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SR1W.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SRC1NE.BGF b/CONTENT/BT/VIDEO/GEO/SRC1NE.BGF new file mode 100644 index 0000000..f43d201 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SRC1NE.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SRC1NW.BGF b/CONTENT/BT/VIDEO/GEO/SRC1NW.BGF new file mode 100644 index 0000000..471f260 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SRC1NW.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SRC1SE.BGF b/CONTENT/BT/VIDEO/GEO/SRC1SE.BGF new file mode 100644 index 0000000..4626738 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SRC1SE.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SRC1SW.BGF b/CONTENT/BT/VIDEO/GEO/SRC1SW.BGF new file mode 100644 index 0000000..bb55be6 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SRC1SW.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SRMS.BGF b/CONTENT/BT/VIDEO/GEO/SRMS.BGF new file mode 100644 index 0000000..0671489 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SRMS.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/ST1.BGF b/CONTENT/BT/VIDEO/GEO/ST1.BGF new file mode 100644 index 0000000..b6c0c43 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/ST1.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/STF.BGF b/CONTENT/BT/VIDEO/GEO/STF.BGF new file mode 100644 index 0000000..cf2ccd7 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/STF.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/STILITO.BGF b/CONTENT/BT/VIDEO/GEO/STILITO.BGF new file mode 100644 index 0000000..e8157ef Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/STILITO.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/STILOTO.BGF b/CONTENT/BT/VIDEO/GEO/STILOTO.BGF new file mode 100644 index 0000000..d398062 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/STILOTO.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/STIRITO.BGF b/CONTENT/BT/VIDEO/GEO/STIRITO.BGF new file mode 100644 index 0000000..6bd519f Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/STIRITO.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/STIROTO.BGF b/CONTENT/BT/VIDEO/GEO/STIROTO.BGF new file mode 100644 index 0000000..306523b Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/STIROTO.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/STRIKERS.BGF b/CONTENT/BT/VIDEO/GEO/STRIKERS.BGF new file mode 100644 index 0000000..489cab7 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/STRIKERS.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/STX_COP.BGF b/CONTENT/BT/VIDEO/GEO/STX_COP.BGF new file mode 100644 index 0000000..3e6e5c5 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/STX_COP.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SV2BR.BGF b/CONTENT/BT/VIDEO/GEO/SV2BR.BGF new file mode 100644 index 0000000..2af25f1 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SV2BR.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SV2BS.BGF b/CONTENT/BT/VIDEO/GEO/SV2BS.BGF new file mode 100644 index 0000000..ebd4eb4 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SV2BS.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SV2CR.BGF b/CONTENT/BT/VIDEO/GEO/SV2CR.BGF new file mode 100644 index 0000000..36a2317 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SV2CR.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SV2DR.BGF b/CONTENT/BT/VIDEO/GEO/SV2DR.BGF new file mode 100644 index 0000000..fd869bf Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SV2DR.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SV2DS.BGF b/CONTENT/BT/VIDEO/GEO/SV2DS.BGF new file mode 100644 index 0000000..a8e96f1 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SV2DS.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SV2R.BGF b/CONTENT/BT/VIDEO/GEO/SV2R.BGF new file mode 100644 index 0000000..f52fdbf Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SV2R.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SV2S.BGF b/CONTENT/BT/VIDEO/GEO/SV2S.BGF new file mode 100644 index 0000000..63e80c1 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SV2S.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SV3BR.BGF b/CONTENT/BT/VIDEO/GEO/SV3BR.BGF new file mode 100644 index 0000000..dc3b4d1 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SV3BR.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SV3BS.BGF b/CONTENT/BT/VIDEO/GEO/SV3BS.BGF new file mode 100644 index 0000000..7465ecf Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SV3BS.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SV3CR.BGF b/CONTENT/BT/VIDEO/GEO/SV3CR.BGF new file mode 100644 index 0000000..be9c993 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SV3CR.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SV3CS.BGF b/CONTENT/BT/VIDEO/GEO/SV3CS.BGF new file mode 100644 index 0000000..ecaac74 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SV3CS.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SV3DR.BGF b/CONTENT/BT/VIDEO/GEO/SV3DR.BGF new file mode 100644 index 0000000..d4c2877 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SV3DR.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SV3DS.BGF b/CONTENT/BT/VIDEO/GEO/SV3DS.BGF new file mode 100644 index 0000000..371534a Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SV3DS.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SV3R.BGF b/CONTENT/BT/VIDEO/GEO/SV3R.BGF new file mode 100644 index 0000000..6642dce Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SV3R.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SV3S.BGF b/CONTENT/BT/VIDEO/GEO/SV3S.BGF new file mode 100644 index 0000000..d206236 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SV3S.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SW1.BGF b/CONTENT/BT/VIDEO/GEO/SW1.BGF new file mode 100644 index 0000000..1456a9e Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SW1.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SW2.BGF b/CONTENT/BT/VIDEO/GEO/SW2.BGF new file mode 100644 index 0000000..0eefb8a Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SW2.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SW3.BGF b/CONTENT/BT/VIDEO/GEO/SW3.BGF new file mode 100644 index 0000000..f70e282 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SW3.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SW4.BGF b/CONTENT/BT/VIDEO/GEO/SW4.BGF new file mode 100644 index 0000000..0635b1a Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SW4.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SW5.BGF b/CONTENT/BT/VIDEO/GEO/SW5.BGF new file mode 100644 index 0000000..08672df Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SW5.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SW6.BGF b/CONTENT/BT/VIDEO/GEO/SW6.BGF new file mode 100644 index 0000000..e152871 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SW6.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/SWIFTS.BGF b/CONTENT/BT/VIDEO/GEO/SWIFTS.BGF new file mode 100644 index 0000000..aa9be93 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/SWIFTS.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/THRDBR.BGF b/CONTENT/BT/VIDEO/GEO/THRDBR.BGF new file mode 100644 index 0000000..15bffa4 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/THRDBR.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/THRDLGUN.BGF b/CONTENT/BT/VIDEO/GEO/THRDLGUN.BGF new file mode 100644 index 0000000..6bea5cd Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/THRDLGUN.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/THRDMSL.BGF b/CONTENT/BT/VIDEO/GEO/THRDMSL.BGF new file mode 100644 index 0000000..d3b0eff Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/THRDMSL.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/THRDRARM.BGF b/CONTENT/BT/VIDEO/GEO/THRDRARM.BGF new file mode 100644 index 0000000..599259a Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/THRDRARM.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/THRDRGUN.BGF b/CONTENT/BT/VIDEO/GEO/THRDRGUN.BGF new file mode 100644 index 0000000..f4e02cf Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/THRDRGUN.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/THR_DOOR.BGF b/CONTENT/BT/VIDEO/GEO/THR_DOOR.BGF new file mode 100644 index 0000000..a236b76 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/THR_DOOR.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/THR_HIP.BGF b/CONTENT/BT/VIDEO/GEO/THR_HIP.BGF new file mode 100644 index 0000000..57f1cd9 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/THR_HIP.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/THR_LDLE.BGF b/CONTENT/BT/VIDEO/GEO/THR_LDLE.BGF new file mode 100644 index 0000000..1eae9b1 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/THR_LDLE.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/THR_LFOT.BGF b/CONTENT/BT/VIDEO/GEO/THR_LFOT.BGF new file mode 100644 index 0000000..4da0341 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/THR_LFOT.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/THR_LGUN.BGF b/CONTENT/BT/VIDEO/GEO/THR_LGUN.BGF new file mode 100644 index 0000000..1de26d8 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/THR_LGUN.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/THR_LULE.BGF b/CONTENT/BT/VIDEO/GEO/THR_LULE.BGF new file mode 100644 index 0000000..0f07ba8 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/THR_LULE.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/THR_MSL.BGF b/CONTENT/BT/VIDEO/GEO/THR_MSL.BGF new file mode 100644 index 0000000..f134f7b Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/THR_MSL.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/THR_RDLE.BGF b/CONTENT/BT/VIDEO/GEO/THR_RDLE.BGF new file mode 100644 index 0000000..c6b6657 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/THR_RDLE.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/THR_RFOT.BGF b/CONTENT/BT/VIDEO/GEO/THR_RFOT.BGF new file mode 100644 index 0000000..d42fd89 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/THR_RFOT.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/THR_RULE.BGF b/CONTENT/BT/VIDEO/GEO/THR_RULE.BGF new file mode 100644 index 0000000..e40c1ad Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/THR_RULE.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/THXDMSL.BGF b/CONTENT/BT/VIDEO/GEO/THXDMSL.BGF new file mode 100644 index 0000000..0b926fe Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/THXDMSL.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/THX_DOOR.BGF b/CONTENT/BT/VIDEO/GEO/THX_DOOR.BGF new file mode 100644 index 0000000..3b2d679 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/THX_DOOR.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/THX_MSL.BGF b/CONTENT/BT/VIDEO/GEO/THX_MSL.BGF new file mode 100644 index 0000000..0076e6f Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/THX_MSL.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/THX_TOR.BGF b/CONTENT/BT/VIDEO/GEO/THX_TOR.BGF new file mode 100644 index 0000000..dea1e6b Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/THX_TOR.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/TM1.BGF b/CONTENT/BT/VIDEO/GEO/TM1.BGF new file mode 100644 index 0000000..2fe03a6 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/TM1.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/TMC1.BGF b/CONTENT/BT/VIDEO/GEO/TMC1.BGF new file mode 100644 index 0000000..ff9ace5 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/TMC1.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/TMC2.BGF b/CONTENT/BT/VIDEO/GEO/TMC2.BGF new file mode 100644 index 0000000..c146241 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/TMC2.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/TMC3.BGF b/CONTENT/BT/VIDEO/GEO/TMC3.BGF new file mode 100644 index 0000000..e9a7e68 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/TMC3.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/TMC3_LP.BGF b/CONTENT/BT/VIDEO/GEO/TMC3_LP.BGF new file mode 100644 index 0000000..b3d5771 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/TMC3_LP.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/TMC4.BGF b/CONTENT/BT/VIDEO/GEO/TMC4.BGF new file mode 100644 index 0000000..66399a1 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/TMC4.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/TMC4_LP.BGF b/CONTENT/BT/VIDEO/GEO/TMC4_LP.BGF new file mode 100644 index 0000000..63d8d47 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/TMC4_LP.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/TMC5.BGF b/CONTENT/BT/VIDEO/GEO/TMC5.BGF new file mode 100644 index 0000000..93414cb Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/TMC5.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/TMC5_LP.BGF b/CONTENT/BT/VIDEO/GEO/TMC5_LP.BGF new file mode 100644 index 0000000..59469be Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/TMC5_LP.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/TMC6.BGF b/CONTENT/BT/VIDEO/GEO/TMC6.BGF new file mode 100644 index 0000000..3308b28 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/TMC6.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/TMC6_LP.BGF b/CONTENT/BT/VIDEO/GEO/TMC6_LP.BGF new file mode 100644 index 0000000..469c337 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/TMC6_LP.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/TMC7.BGF b/CONTENT/BT/VIDEO/GEO/TMC7.BGF new file mode 100644 index 0000000..c128eb9 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/TMC7.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/TMC7_LP.BGF b/CONTENT/BT/VIDEO/GEO/TMC7_LP.BGF new file mode 100644 index 0000000..c6e2815 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/TMC7_LP.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/TMC8.BGF b/CONTENT/BT/VIDEO/GEO/TMC8.BGF new file mode 100644 index 0000000..ce01d83 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/TMC8.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/TMC8_LP.BGF b/CONTENT/BT/VIDEO/GEO/TMC8_LP.BGF new file mode 100644 index 0000000..5b0867e Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/TMC8_LP.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/TMSM_A.BGF b/CONTENT/BT/VIDEO/GEO/TMSM_A.BGF new file mode 100644 index 0000000..9a2a00d Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/TMSM_A.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/TMSM_B.BGF b/CONTENT/BT/VIDEO/GEO/TMSM_B.BGF new file mode 100644 index 0000000..9a2a00d Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/TMSM_B.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/TMSM_C.BGF b/CONTENT/BT/VIDEO/GEO/TMSM_C.BGF new file mode 100644 index 0000000..6c45e26 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/TMSM_C.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/TMST_A.BGF b/CONTENT/BT/VIDEO/GEO/TMST_A.BGF new file mode 100644 index 0000000..3611879 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/TMST_A.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/TMST_C.BGF b/CONTENT/BT/VIDEO/GEO/TMST_C.BGF new file mode 100644 index 0000000..611de1b Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/TMST_C.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/TMS_A.BGF b/CONTENT/BT/VIDEO/GEO/TMS_A.BGF new file mode 100644 index 0000000..0d1f313 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/TMS_A.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/TMS_B.BGF b/CONTENT/BT/VIDEO/GEO/TMS_B.BGF new file mode 100644 index 0000000..0d1f313 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/TMS_B.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/TMS_C.BGF b/CONTENT/BT/VIDEO/GEO/TMS_C.BGF new file mode 100644 index 0000000..7b24740 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/TMS_C.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/TREE.BGF b/CONTENT/BT/VIDEO/GEO/TREE.BGF new file mode 100644 index 0000000..dc2dd33 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/TREE.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/TREESH.BGF b/CONTENT/BT/VIDEO/GEO/TREESH.BGF new file mode 100644 index 0000000..8ca96a0 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/TREESH.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/TRK1D_FR.BGF b/CONTENT/BT/VIDEO/GEO/TRK1D_FR.BGF new file mode 100644 index 0000000..cf994b8 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/TRK1D_FR.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/TRK1_FR.BGF b/CONTENT/BT/VIDEO/GEO/TRK1_FR.BGF new file mode 100644 index 0000000..0a7878f Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/TRK1_FR.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/TRK3D_FR.BGF b/CONTENT/BT/VIDEO/GEO/TRK3D_FR.BGF new file mode 100644 index 0000000..d95a71c Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/TRK3D_FR.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/TRK3_FR.BGF b/CONTENT/BT/VIDEO/GEO/TRK3_FR.BGF new file mode 100644 index 0000000..3b447fc Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/TRK3_FR.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/TRK4D_FR.BGF b/CONTENT/BT/VIDEO/GEO/TRK4D_FR.BGF new file mode 100644 index 0000000..147899f Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/TRK4D_FR.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/TRK4_FR.BGF b/CONTENT/BT/VIDEO/GEO/TRK4_FR.BGF new file mode 100644 index 0000000..d33d9bb Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/TRK4_FR.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/TRUNK.BGF b/CONTENT/BT/VIDEO/GEO/TRUNK.BGF new file mode 100644 index 0000000..f2e2313 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/TRUNK.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/TSPHERE.BGF b/CONTENT/BT/VIDEO/GEO/TSPHERE.BGF new file mode 100644 index 0000000..2b7360e Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/TSPHERE.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/TWRD_FR.BGF b/CONTENT/BT/VIDEO/GEO/TWRD_FR.BGF new file mode 100644 index 0000000..b1fe195 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/TWRD_FR.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/TWR_FR.BGF b/CONTENT/BT/VIDEO/GEO/TWR_FR.BGF new file mode 100644 index 0000000..d7c6c96 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/TWR_FR.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/TWR_LP.BGF b/CONTENT/BT/VIDEO/GEO/TWR_LP.BGF new file mode 100644 index 0000000..4892a38 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/TWR_LP.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/VULDLARM.BGF b/CONTENT/BT/VIDEO/GEO/VULDLARM.BGF new file mode 100644 index 0000000..f9a1200 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/VULDLARM.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/VULDLGUN.BGF b/CONTENT/BT/VIDEO/GEO/VULDLGUN.BGF new file mode 100644 index 0000000..1ec126d Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/VULDLGUN.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/VULDRARM.BGF b/CONTENT/BT/VIDEO/GEO/VULDRARM.BGF new file mode 100644 index 0000000..aed9ab1 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/VULDRARM.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/VULDRGUN.BGF b/CONTENT/BT/VIDEO/GEO/VULDRGUN.BGF new file mode 100644 index 0000000..b0ef6b1 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/VULDRGUN.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/VUL_HIP.BGF b/CONTENT/BT/VIDEO/GEO/VUL_HIP.BGF new file mode 100644 index 0000000..fe9491f Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/VUL_HIP.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/VUL_LBTO.BGF b/CONTENT/BT/VIDEO/GEO/VUL_LBTO.BGF new file mode 100644 index 0000000..493b3d9 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/VUL_LBTO.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/VUL_LDDO.BGF b/CONTENT/BT/VIDEO/GEO/VUL_LDDO.BGF new file mode 100644 index 0000000..c6eb7c3 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/VUL_LDDO.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/VUL_LFOT.BGF b/CONTENT/BT/VIDEO/GEO/VUL_LFOT.BGF new file mode 100644 index 0000000..c541ff9 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/VUL_LFOT.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/VUL_LGUN.BGF b/CONTENT/BT/VIDEO/GEO/VUL_LGUN.BGF new file mode 100644 index 0000000..4131d3b Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/VUL_LGUN.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/VUL_LITO.BGF b/CONTENT/BT/VIDEO/GEO/VUL_LITO.BGF new file mode 100644 index 0000000..a59bed7 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/VUL_LITO.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/VUL_LOTO.BGF b/CONTENT/BT/VIDEO/GEO/VUL_LOTO.BGF new file mode 100644 index 0000000..3a94182 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/VUL_LOTO.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/VUL_LUDO.BGF b/CONTENT/BT/VIDEO/GEO/VUL_LUDO.BGF new file mode 100644 index 0000000..a7337ce Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/VUL_LUDO.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/VUL_RBTO.BGF b/CONTENT/BT/VIDEO/GEO/VUL_RBTO.BGF new file mode 100644 index 0000000..6c54b5e Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/VUL_RBTO.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/VUL_RDDO.BGF b/CONTENT/BT/VIDEO/GEO/VUL_RDDO.BGF new file mode 100644 index 0000000..df1fb23 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/VUL_RDDO.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/VUL_RFOT.BGF b/CONTENT/BT/VIDEO/GEO/VUL_RFOT.BGF new file mode 100644 index 0000000..b1eab12 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/VUL_RFOT.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/VUL_RGUN.BGF b/CONTENT/BT/VIDEO/GEO/VUL_RGUN.BGF new file mode 100644 index 0000000..34c2bb2 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/VUL_RGUN.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/VUL_RITO.BGF b/CONTENT/BT/VIDEO/GEO/VUL_RITO.BGF new file mode 100644 index 0000000..7081a32 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/VUL_RITO.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/VUL_ROTO.BGF b/CONTENT/BT/VIDEO/GEO/VUL_ROTO.BGF new file mode 100644 index 0000000..7883842 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/VUL_ROTO.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/VUL_RUDO.BGF b/CONTENT/BT/VIDEO/GEO/VUL_RUDO.BGF new file mode 100644 index 0000000..223009a Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/VUL_RUDO.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/VUX_LBTO.BGF b/CONTENT/BT/VIDEO/GEO/VUX_LBTO.BGF new file mode 100644 index 0000000..31684f6 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/VUX_LBTO.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/VUX_LDLE.BGF b/CONTENT/BT/VIDEO/GEO/VUX_LDLE.BGF new file mode 100644 index 0000000..87c4c00 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/VUX_LDLE.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/VUX_LFOT.BGF b/CONTENT/BT/VIDEO/GEO/VUX_LFOT.BGF new file mode 100644 index 0000000..fcddc05 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/VUX_LFOT.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/VUX_LITO.BGF b/CONTENT/BT/VIDEO/GEO/VUX_LITO.BGF new file mode 100644 index 0000000..c14b1b5 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/VUX_LITO.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/VUX_LOTO.BGF b/CONTENT/BT/VIDEO/GEO/VUX_LOTO.BGF new file mode 100644 index 0000000..35f1151 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/VUX_LOTO.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/VUX_RBTO.BGF b/CONTENT/BT/VIDEO/GEO/VUX_RBTO.BGF new file mode 100644 index 0000000..7aa4979 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/VUX_RBTO.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/VUX_RDLE.BGF b/CONTENT/BT/VIDEO/GEO/VUX_RDLE.BGF new file mode 100644 index 0000000..60b00b6 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/VUX_RDLE.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/VUX_RFOT.BGF b/CONTENT/BT/VIDEO/GEO/VUX_RFOT.BGF new file mode 100644 index 0000000..c5c4fad Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/VUX_RFOT.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/VUX_RITO.BGF b/CONTENT/BT/VIDEO/GEO/VUX_RITO.BGF new file mode 100644 index 0000000..67ae627 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/VUX_RITO.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/VUX_ROTO.BGF b/CONTENT/BT/VIDEO/GEO/VUX_ROTO.BGF new file mode 100644 index 0000000..79a24f0 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/VUX_ROTO.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/WL7.BGF b/CONTENT/BT/VIDEO/GEO/WL7.BGF new file mode 100644 index 0000000..ed7222c Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/WL7.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/WL9.BGF b/CONTENT/BT/VIDEO/GEO/WL9.BGF new file mode 100644 index 0000000..964e960 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/WL9.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/WSTD_FR.BGF b/CONTENT/BT/VIDEO/GEO/WSTD_FR.BGF new file mode 100644 index 0000000..67eb661 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/WSTD_FR.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/WST_FR.BGF b/CONTENT/BT/VIDEO/GEO/WST_FR.BGF new file mode 100644 index 0000000..15d7343 Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/WST_FR.BGF differ diff --git a/CONTENT/BT/VIDEO/GEO/WST_LP.BGF b/CONTENT/BT/VIDEO/GEO/WST_LP.BGF new file mode 100644 index 0000000..faebfad Binary files /dev/null and b/CONTENT/BT/VIDEO/GEO/WST_LP.BGF differ diff --git a/CONTENT/BT/VIDEO/IDAM1.PFX b/CONTENT/BT/VIDEO/IDAM1.PFX new file mode 100644 index 0000000..dc811f5 --- /dev/null +++ b/CONTENT/BT/VIDEO/IDAM1.PFX @@ -0,0 +1,32 @@ +btfx:firesmoke1_scr_tex +0000670 5 1 3 +0 0 0 1 +1 2 1 -2 1 -2 +0.25 0.25 1 .5 0.00 0 +0 1 0 0 1 0 +0.5 0.5 +0.50 0.50 0.50 1.10 0.00 0.00 0.00 0.00 +0.50 0.50 0.50 1.00 0.00 0.00 0.00 0.00 +0.10 0.10 0.10 0.00 0.00 0.00 0.00 0.00 +0.10 0.10 0.10 0.00 0.00 0.00 0.00 0.00 +10 1 +1.0 0.5 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one diff --git a/CONTENT/BT/VIDEO/IDAM2.PFX b/CONTENT/BT/VIDEO/IDAM2.PFX new file mode 100644 index 0000000..73334a6 --- /dev/null +++ b/CONTENT/BT/VIDEO/IDAM2.PFX @@ -0,0 +1,32 @@ +btfx:firesmoke1_scr_tex +0000670 10 2 5 +0 0 0 1 +2 2 2 -4 1 -4 +0.25 0.25 .5 .5 0.00 0 +0 1 0 0 1 0 +0.5 0.5 +0.30 0.30 0.30 1.10 0.00 0.00 0.00 0.00 +0.30 0.30 0.30 1.00 0.00 0.00 0.00 0.00 +-0.00 -0.00 -0.00 0.00 0.00 0.00 0.00 0.00 +0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 +10 1 +0.75 0.25 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one diff --git a/CONTENT/BT/VIDEO/IDAM3.PFX b/CONTENT/BT/VIDEO/IDAM3.PFX new file mode 100644 index 0000000..f95d77f --- /dev/null +++ b/CONTENT/BT/VIDEO/IDAM3.PFX @@ -0,0 +1,32 @@ +btfx:firesmoke1_scr_tex +0000670 15 3 7 +0 0 0 1 +1 1 1 -2 1 -2 +0.2 0.3 1 0.5 -0.7 0 +0 0.75 0 0 1 0 +0.5 0.5 +0.50 0.20 0.00 1.50 0.00 0.00 0.00 0.00 +0.00 0.00 0.00 1.00 0.00 0.00 0.00 0.00 +-0.50 -0.50 -0.50 0.00 0.00 0.00 0.00 0.00 +0.00 0.00 0.00 -0.10 0.00 0.00 0.00 0.00 +10 1 +1.25 0.25 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one diff --git a/CONTENT/BT/VIDEO/IDAM4.PFX b/CONTENT/BT/VIDEO/IDAM4.PFX new file mode 100644 index 0000000..26a599c --- /dev/null +++ b/CONTENT/BT/VIDEO/IDAM4.PFX @@ -0,0 +1,32 @@ +btfx:firesmoke1_scr_tex +0000670 20 4 8 +0 0 0 1 +1 1 1 -2 -1 -2 +0.25 0.25 1 1 0 0 +0 2.5 0 0 0.5 0 +0.5 0.5 +1.70 0.70 0.20 2.00 0.00 0.00 0.00 0.00 +0.00 0.00 0.00 1.00 0.00 0.00 0.00 0.00 +-1.50 -1.50 -1.50 0.00 0.00 0.00 0.00 0.00 +0.00 0.00 0.00 -0.10 0.00 0.00 0.00 0.00 +10 1 +1.5 0.5 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one diff --git a/CONTENT/BT/VIDEO/IDAM5.PFX b/CONTENT/BT/VIDEO/IDAM5.PFX new file mode 100644 index 0000000..4496d25 --- /dev/null +++ b/CONTENT/BT/VIDEO/IDAM5.PFX @@ -0,0 +1,33 @@ +btfx:firesmoke4_scr_tex +00000674 5 0.25 12 +0 1 0 2 +15 10 20 -30 -20 -40 +1 2.0 4 4 -1 0 +2.5 1.5 2.5 -2 -10 -5 +7 3 +2.00 0.70 0.20 2.00 0.00 0.00 0.00 0.00 +1.00 0.30 0.00 1.00 0.00 0.00 0.00 0.00 +0.0 -0.20 -0.50 -0.50 0.00 0.00 0.00 0.00 +0.0 0.00 0.00 -2.00 0.00 0.00 0.00 0.00 +10 1 +1.5 0.5 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one + \ No newline at end of file diff --git a/CONTENT/BT/VIDEO/JAKSKIN.DZM b/CONTENT/BT/VIDEO/JAKSKIN.DZM new file mode 100644 index 0000000..7206a61 --- /dev/null +++ b/CONTENT/BT/VIDEO/JAKSKIN.DZM @@ -0,0 +1,74 @@ +[dz_searchlight] +material=jakskin:thor2_dz_searchlight_mtl +material=jakskin:thor2wht_dz_searchlight_mtl +[dz_rearrtorso] +material=jakskin:thor2_dz_rearrtorso_mtl +material=jakskin:thor3_dz_rearrtorso_mtl +[dz_utorso] +material=jakskin:thor2_dz_utorso_mtl +material=jakskin:thor3_dz_utorso_mtl +material=jakskin:thor1_dz_utorso_mtl +[dz_reardtorso] +material=jakskin:thor2_dz_reardtorso_mtl +[dz_rearutorso] +material=jakskin:thor2_dz_rearutorso_mtl +material=jakskin:thor3_dz_rearutorso_mtl +[dz_rearltorso] +material=jakskin:thor2_dz_rearltorso_mtl +material=jakskin:thor3_dz_rearltorso_mtl +[dz_rfoot] +material=jakskin:gen1a_dz_rfoot_mtl +material=jakskin:gen1_dz_rfoot_mtl +[dz_lfoot] +material=jakskin:gen1a_dz_lfoot_mtl +material=jakskin:gen1_dz_lfoot_mtl +[dz_rtorso] +material=jakskin:gen3a_dz_rtorso_mtl +material=jakskin:gen3_dz_rtorso_mtl +material=jakskin:thor3_dz_rtorso_mtl +material=jakskin:thor4_dz_rtorso_mtl +material=jakskin:thor1_dz_rtorso_mtl +[dz_ltorso] +material=jakskin:gen3a_dz_ltorso_mtl +material=jakskin:gen3_dz_ltorso_mtl +material=jakskin:thor3_dz_ltorso_mtl +material=jakskin:thor4_dz_ltorso_mtl +material=jakskin:thor1_dz_ltorso_mtl +[dz_rgun] +material=jakskin:gen3a_dz_rgun_mtl +material=jakskin:gen3_dz_rgun_mtl +material=jakskin:gen1_dz_rgun_mtl +material=jakskin:gen4_dz_rgun_mtl +material=jakskin:gen2_dz_rgun_mtl +material=jakskin:gen2a_dz_rgun_mtl +material=jakskin:damcolor_dz_rgun_mtl +material=jakskin:gen3drkgry_dz_rgun_mtl +[dz_hip] +material=jakskin:gen3a_dz_hip_mtl +material=jakskin:gen3_dz_hip_mtl +material=jakskin:gen4_dz_hip_mtl +[dz_rdleg] +material=jakskin:gen1_dz_rdleg_mtl +material=jakskin:lgo1_dz_rdleg_mtl +material=jakskin:blakskn_dz_rdleg_mtl +[dz_ldleg] +material=jakskin:gen1_dz_ldleg_mtl +material=jakskin:lgo1_dz_ldleg_mtl +material=jakskin:blakskn_dz_ldleg_mtl +[dz_ruleg] +material=jakskin:gen1_dz_ruleg_mtl +material=jakskin:gen4_dz_ruleg_mtl +material=jakskin:gen2_dz_ruleg_mtl +[dz_luleg] +material=jakskin:gen1_dz_luleg_mtl +material=jakskin:gen4_dz_luleg_mtl +material=jakskin:gen2_dz_luleg_mtl +[dz_dtorso] +material=jakskin:thor4_dz_dtorso_mtl +material=jakskin:thor1_dz_dtorso_mtl +[dz_lgun] +material=jakskin:gen4_dz_lgun_mtl +material=jakskin:gen2_dz_lgun_mtl +material=jakskin:gen2a_dz_lgun_mtl +material=jakskin:damcolor_dz_lgun_mtl +material=jakskin:gen3drkgry_dz_lgun_mtl diff --git a/CONTENT/BT/VIDEO/JAXSKIN.DZM b/CONTENT/BT/VIDEO/JAXSKIN.DZM new file mode 100644 index 0000000..6f5042e --- /dev/null +++ b/CONTENT/BT/VIDEO/JAXSKIN.DZM @@ -0,0 +1,3 @@ +[dz_utorso] +material=jaxskin:thx2_dz_utorso_mtl +material=jaxskin:blakskn_dz_utorso_mtl diff --git a/CONTENT/BT/VIDEO/LASARM.SKL b/CONTENT/BT/VIDEO/LASARM.SKL new file mode 100644 index 0000000..c54e544 --- /dev/null +++ b/CONTENT/BT/VIDEO/LASARM.SKL @@ -0,0 +1,86 @@ +[jointrgun] +parent=jointrshoulder +Type=hingex +Object=vul_rgun.bgf +dzone=dz_rgun +Former Segment=segrgun +tranx=1.055 +trany=-0.975 +tranz=0 +pitch=-6.93889e-15 +yaw=3.4639e-14 +roll=-2.27537e-14 +site=siterugunport +site=siterdgunport +site=siteedz_rgun + +[siterugunport] +parent=jointrgun +tranx=0.17 +trany=0.017 +tranz=-3.83199 +pitch=-2.73406e-11 +yaw=6.98481e-10 +roll=-8.81441e-14 + +[siterdgunport] +parent=jointrgun +tranx=0.527 +trany=-0.365002 +tranz=-3.833 +pitch=-4.93003e-10 +yaw=6.98481e-10 +roll=-8.81441e-14 + +[siteedz_rgun] +parent=jointrgun +tranx=0.34714 +trany=-0.17446 +tranz=-0.58661 +pitch=-3.58832e-08 +yaw=-3.0268e-09 +roll=-7.45067e-09 + +[jointlgun] +parent=jointlshoulder +Type=hingex +Object=vul_lgun.bgf +dzone=dz_lgun +Former Segment=seglgun +tranx=-1.06 +trany=-0.976 +tranz=0 +pitch=7.18212e-09 +yaw=6.61305e-09 +roll=-1.78814e-06 +site=sitelugunport +site=siteldgunport +site=siteedz_lgun + +[sitelugunport] +parent=jointlgun +tranx=-0.163 +trany=0.0179996 +tranz=-3.832 +pitch=-1.37373e-07 +yaw=1.64372e-08 +roll=-1.06563e-15 + +[siteldgunport] +parent=jointlgun +tranx=-0.519 +trany=-0.364002 +tranz=-3.83301 +pitch=-1.53205e-07 +yaw=2.01625e-08 +roll=-1.47851e-15 + +[siteedz_lgun] +parent=jointlgun +tranx=-0.34 +trany=-0.173011 +tranz=-0.587 +pitch=-1.56931e-07 +yaw=2.01626e-08 +roll=1.69874e-06 + diff --git a/CONTENT/BT/VIDEO/LOK1SKIN.DZM b/CONTENT/BT/VIDEO/LOK1SKIN.DZM new file mode 100644 index 0000000..c8cd5b8 --- /dev/null +++ b/CONTENT/BT/VIDEO/LOK1SKIN.DZM @@ -0,0 +1,88 @@ +[dz_dtorso] +material=lokskin:loki3_dz_dtorso_mtl +material=lokskin:gen3a_dz_dtorso_mtl +material=lokskin:loki1_dz_dtorso_mtl +[dz_ltorso] +material=lokskin:loki3_dz_ltorso_mtl +material=lokskin:gen3a_dz_ltorso_mtl +material=lokskin:loki1_dz_ltorso_mtl +[dz_rtorso] +material=lokskin:loki3_dz_rtorso_mtl +material=lokskin:gen3a_dz_rtorso_mtl +material=lokskin:loki1_dz_rtorso_mtl +[dz_rearutorso] +material=lokskin:loki3_dz_rearutorso_mtl +material=lokskin:loki2_dz_rearutorso_mtl +material=lokskin:loki4_dz_rearutorso_mtl +[dz_reardtorso] +material=lokskin:loki2_dz_reardtorso_mtl +[dz_rearltorso] +material=lokskin:loki2_dz_rearltorso_mtl +[dz_rearrtorso] +material=lokskin:loki2_dz_rearrtorso_mtl +[dz_hip] +material=lokskin:gen3a_dz_hip_mtl +material=lokskin:gen3_dz_hip_mtl +material=lokskin:gen4_dz_hip_mtl +[dz_utorso] +material=lokskin:loki1_dz_utorso_mtl +material=lokskin:loki4_dz_utorso_mtl +material=lokskin:loki6_dz_utorso_mtl +[dz_missle] +material=lokskin:loki4_dz_missle_mtl +material=lokskin:damcolor_dz_missle_mtl +material=lokskin:gen3drkgry_dz_missle_mtl +[dz_searchlight] +material=lokskin:loki4_dz_searchlight_mtl +material=lokskin:loki5_dz_searchlight_mtl +material=lokskin:gen3drkgry_dz_searchlight_mtl +[dz_luleg] +material=lokskin:gen4_dz_luleg_mtl +material=lokskin:gen2_dz_luleg_mtl +material=lokskin:gen1_dz_luleg_mtl +[dz_ruleg] +material=lokskin:gen4_dz_ruleg_mtl +material=lokskin:gen2_dz_ruleg_mtl +material=lokskin:gen1_dz_ruleg_mtl +[dz_rdleg] +material=lokskin:gen1_dz_rdleg_mtl +material=lokskin:blakskn_dz_rdleg_mtl +material=lokskin:lgo1_dz_rdleg_mtl +[dz_ldleg] +material=lokskin:gen1_dz_ldleg_mtl +material=lokskin:blakskn_dz_ldleg_mtl +material=lokskin:lgo1_dz_ldleg_mtl +[dz_lfoot] +material=lokskin:gen1_dz_lfoot_mtl +material=lokskin:gen1a_dz_lfoot_mtl +[dz_rfoot] +material=lokskin:gen1_dz_rfoot_mtl +material=lokskin:gen1a_dz_rfoot_mtl +[dz_rarm] +material=vulskin:gen3_dz_rarm_mtl +material=vulskin:gen1_dz_rarm_mtl +material=vulskin:gen2_dz_rarm_mtl +material=vulskin:gen3drkgry_dz_rarm_mtl +material=vulskin:gen3medgry_dz_rarm_mtl +[dz_rgun] +material=vulskin:gen3_dz_rgun_mtl +material=vulskin:blakskn_dz_rgun_mtl +material=vulskin:gen1_dz_rgun_mtl +material=vulskin:gen2a_dz_rgun_mtl +material=vulskin:gen4_dz_rgun_mtl +material=vulskin:damcolor_dz_rgun_mtl +material=vulskin:gen3medgry_dz_rgun_mtl +[dz_larm] +material=vulskin:gen3_dz_larm_mtl +material=vulskin:gen1_dz_larm_mtl +material=vulskin:gen2_dz_larm_mtl +material=vulskin:gen3drkgry_dz_larm_mtl +material=vulskin:gen3medgry_dz_larm_mtl +[dz_lgun] +material=vulskin:gen3_dz_lgun_mtl +material=vulskin:blakskn_dz_lgun_mtl +material=vulskin:gen1_dz_lgun_mtl +material=vulskin:gen2a_dz_lgun_mtl +material=vulskin:gen4_dz_lgun_mtl +material=vulskin:damcolor_dz_lgun_mtl +material=vulskin:gen3medgry_dz_lgun_mtl diff --git a/CONTENT/BT/VIDEO/LOKSKIN.DZM b/CONTENT/BT/VIDEO/LOKSKIN.DZM new file mode 100644 index 0000000..26665f0 --- /dev/null +++ b/CONTENT/BT/VIDEO/LOKSKIN.DZM @@ -0,0 +1,91 @@ +[dz_dtorso] +material=lokskin:loki3_dz_dtorso_mtl +material=lokskin:gen3a_dz_dtorso_mtl +material=lokskin:loki1_dz_dtorso_mtl +[dz_ltorso] +material=lokskin:loki3_dz_ltorso_mtl +material=lokskin:gen3a_dz_ltorso_mtl +material=lokskin:loki1_dz_ltorso_mtl +[dz_rtorso] +material=lokskin:loki3_dz_rtorso_mtl +material=lokskin:gen3a_dz_rtorso_mtl +material=lokskin:loki1_dz_rtorso_mtl +[dz_rearutorso] +material=lokskin:loki3_dz_rearutorso_mtl +material=lokskin:loki2_dz_rearutorso_mtl +material=lokskin:loki4_dz_rearutorso_mtl +[dz_reardtorso] +material=lokskin:loki2_dz_reardtorso_mtl +[dz_rearltorso] +material=lokskin:loki2_dz_rearltorso_mtl +[dz_rearrtorso] +material=lokskin:loki2_dz_rearrtorso_mtl +[dz_larm] +material=lokskin:gen3a_dz_larm_mtl +material=lokskin:gen3_dz_larm_mtl +material=lokskin:gen4_dz_larm_mtl +material=lokskin:gen2_dz_larm_mtl +material=lokskin:gen1_dz_larm_mtl +material=lokskin:gen4a_dz_larm_mtl +material=lokskin:damcolor_dz_larm_mtl +material=lokskin:gen3drkgry_dz_larm_mtl +[dz_rgun] +material=lokskin:gen3a_dz_rgun_mtl +material=lokskin:gen3_dz_rgun_mtl +material=lokskin:gen4_dz_rgun_mtl +material=lokskin:gen2_dz_rgun_mtl +material=lokskin:gen1_dz_rgun_mtl +material=lokskin:gen2a_dz_rgun_mtl +material=lokskin:damcolor_dz_rgun_mtl +material=lokskin:gen3drkgry_dz_rgun_mtl +[dz_hip] +material=lokskin:gen3a_dz_hip_mtl +material=lokskin:gen3_dz_hip_mtl +material=lokskin:gen4_dz_hip_mtl +[dz_utorso] +material=lokskin:loki1_dz_utorso_mtl +material=lokskin:loki4_dz_utorso_mtl +material=lokskin:loki6_dz_utorso_mtl +[dz_missle] +material=lokskin:loki4_dz_missle_mtl +material=lokskin:damcolor_dz_missle_mtl +material=lokskin:gen3drkgry_dz_missle_mtl +[dz_searchlight] +material=lokskin:loki4_dz_searchlight_mtl +material=lokskin:loki5_dz_searchlight_mtl +material=lokskin:gen3drkgry_dz_searchlight_mtl +[dz_rarm] +material=lokskin:gen3_dz_rarm_mtl +material=lokskin:gen2_dz_rarm_mtl +material=lokskin:gen1_dz_rarm_mtl +material=lokskin:blakskn_dz_rarm_mtl +material=lokskin:gen3drkgry_dz_rarm_mtl +material=lokskin:gen3medgry_dz_rarm_mtl +[dz_lgun] +material=lokskin:gen4_dz_lgun_mtl +material=lokskin:gen2_dz_lgun_mtl +material=lokskin:gen2a_dz_lgun_mtl +material=lokskin:damcolor_dz_lgun_mtl +material=lokskin:gen3drkgry_dz_lgun_mtl +[dz_luleg] +material=lokskin:gen4_dz_luleg_mtl +material=lokskin:gen2_dz_luleg_mtl +material=lokskin:gen1_dz_luleg_mtl +[dz_ruleg] +material=lokskin:gen4_dz_ruleg_mtl +material=lokskin:gen2_dz_ruleg_mtl +material=lokskin:gen1_dz_ruleg_mtl +[dz_rdleg] +material=lokskin:gen1_dz_rdleg_mtl +material=lokskin:blakskn_dz_rdleg_mtl +material=lokskin:lgo1_dz_rdleg_mtl +[dz_ldleg] +material=lokskin:gen1_dz_ldleg_mtl +material=lokskin:blakskn_dz_ldleg_mtl +material=lokskin:lgo1_dz_ldleg_mtl +[dz_lfoot] +material=lokskin:gen1_dz_lfoot_mtl +material=lokskin:gen1a_dz_lfoot_mtl +[dz_rfoot] +material=lokskin:gen1_dz_rfoot_mtl +material=lokskin:gen1a_dz_rfoot_mtl diff --git a/CONTENT/BT/VIDEO/LOX1SKIN.DZM b/CONTENT/BT/VIDEO/LOX1SKIN.DZM new file mode 100644 index 0000000..11791d7 --- /dev/null +++ b/CONTENT/BT/VIDEO/LOX1SKIN.DZM @@ -0,0 +1,9 @@ +[dz_utorso] +material=loxskin:blakskn_dz_utorso_mtl +material=loxskin:loki1_dz_utorso_mtl +[dz_ltorso] +material=loxskin:loki3_dz_ltorso_mtl +material=loxskin:loki1_dz_ltorso_mtl +[dz_rtorso] +material=loxskin:loki3_dz_rtorso_mtl +material=loxskin:loki1_dz_rtorso_mtl diff --git a/CONTENT/BT/VIDEO/LOXSKIN.DZM b/CONTENT/BT/VIDEO/LOXSKIN.DZM new file mode 100644 index 0000000..11791d7 --- /dev/null +++ b/CONTENT/BT/VIDEO/LOXSKIN.DZM @@ -0,0 +1,9 @@ +[dz_utorso] +material=loxskin:blakskn_dz_utorso_mtl +material=loxskin:loki1_dz_utorso_mtl +[dz_ltorso] +material=loxskin:loki3_dz_ltorso_mtl +material=loxskin:loki1_dz_ltorso_mtl +[dz_rtorso] +material=loxskin:loki3_dz_rtorso_mtl +material=loxskin:loki1_dz_rtorso_mtl diff --git a/CONTENT/BT/VIDEO/MAD1SKIN.DZM b/CONTENT/BT/VIDEO/MAD1SKIN.DZM new file mode 100644 index 0000000..5a0070d --- /dev/null +++ b/CONTENT/BT/VIDEO/MAD1SKIN.DZM @@ -0,0 +1,94 @@ +[dz_searchlight] +material=madskin:gen1b_dz_searchlight_mtl +[dz_utorso] +material=madskin:gen3a_dz_utorso_mtl +material=madskin:gen3_dz_utorso_mtl +material=madskin:mad2_dz_utorso_mtl +material=madskin:mad4_dz_utorso_mtl +material=madskin:mad3_dz_utorso_mtl +material=madskin:mad1_dz_utorso_mtl +[dz_rearutorso] +material=madskin:gen3_dz_rearutorso_mtl +material=madskin:mad3_dz_rearutorso_mtl +[dz_reardtorso] +material=madskin:gen3_dz_reardtorso_mtl +material=madskin:mad4_dz_reardtorso_mtl +material=madskin:mad3_dz_reardtorso_mtl +[dz_larm] +material=madskin:gen3_dz_larm_mtl +material=madskin:gen2_dz_larm_mtl +material=madskin:gen1_dz_larm_mtl +material=madskin:gen3drkgry_dz_larm_mtl +material=madskin:gen3medgry_dz_larm_mtl +[dz_ldleg] +material=madskin:gen3_dz_ldleg_mtl +material=madskin:gen1_dz_ldleg_mtl +material=madskin:blakskn_dz_ldleg_mtl +material=madskin:lgo5_dz_ldleg_mtl +[dz_ruleg] +material=madskin:gen3_dz_ruleg_mtl +[dz_luleg] +material=madskin:gen3_dz_luleg_mtl +[dz_rfoot] +material=madskin:gen3_dz_rfoot_mtl +material=madskin:blakskn_dz_rfoot_mtl +material=madskin:gen1a_dz_rfoot_mtl +[dz_lfoot] +material=madskin:gen3_dz_lfoot_mtl +material=madskin:blakskn_dz_lfoot_mtl +material=madskin:gen1a_dz_lfoot_mtl +[dz_rdleg] +material=madskin:gen3_dz_rdleg_mtl +material=madskin:gen1_dz_rdleg_mtl +material=madskin:blakskn_dz_rdleg_mtl +material=madskin:lgo5_dz_rdleg_mtl +[dz_hip] +material=madskin:gen3_dz_hip_mtl +material=madskin:gen2_dz_hip_mtl +[dz_rarm] +material=madskin:gen3_dz_rarm_mtl +material=madskin:gen2_dz_rarm_mtl +material=madskin:gen1_dz_rarm_mtl +material=madskin:gen3drkgry_dz_rarm_mtl +material=madskin:gen3medgry_dz_rarm_mtl +[dz_dtorso] +material=madskin:gen3_dz_dtorso_mtl +material=madskin:mad2_dz_dtorso_mtl +material=madskin:mad4_dz_dtorso_mtl +material=madskin:mad1_dz_dtorso_mtl +[dz_ltorso] +material=madskin:mad2_dz_ltorso_mtl +material=madskin:mad3_dz_ltorso_mtl +material=madskin:mad5_dz_ltorso_mtl +[dz_rtorso] +material=madskin:mad2_dz_rtorso_mtl +material=madskin:mad3_dz_rtorso_mtl +material=madskin:mad5_dz_rtorso_mtl +[dz_ldoor] +material=madskin:mad4_dz_ldoor_mtl +material=madskin:mad3_dz_ldoor_mtl +[dz_rdoor] +material=madskin:mad4_dz_rdoor_mtl +material=madskin:mad3_dz_rdoor_mtl +[dz_rearltorso] +material=madskin:mad3_dz_rearltorso_mtl +[dz_rearrtorso] +material=madskin:mad3_dz_rearrtorso_mtl +[dz_rgun] +material=avaskin:gen2a_dz_rgun_mtl +material=avaskin:gen2_dz_rgun_mtl +material=avaskin:gen3_dz_rgun_mtl +material=avaskin:gen1_dz_rgun_mtl +material=avaskin:gen4_dz_rgun_mtl +material=avaskin:gen3a_dz_rgun_mtl +material=avaskin:gen3drkgry_dz_rgun_mtl +material=avaskin:damcolor_dz_rgun_mtl +[dz_lgun] +material=sndskin:gen4_dz_lgun_mtl +material=sndskin:gen3_dz_lgun_mtl +material=sndskin:gen2_dz_lgun_mtl +material=sndskin:gen1_dz_lgun_mtl +material=sndskin:gen2a_dz_lgun_mtl +material=sndskin:gen3a_dz_lgun_mtl +material=sndskin:gen3drkgry_dz_lgun_mtl +material=sndskin:damcolor_dz_lgun_mtl diff --git a/CONTENT/BT/VIDEO/MAD2SKIN.DZM b/CONTENT/BT/VIDEO/MAD2SKIN.DZM new file mode 100644 index 0000000..f91ef3d --- /dev/null +++ b/CONTENT/BT/VIDEO/MAD2SKIN.DZM @@ -0,0 +1,93 @@ +[dz_searchlight] +material=madskin:gen1b_dz_searchlight_mtl +[dz_utorso] +material=madskin:gen3a_dz_utorso_mtl +material=madskin:gen3_dz_utorso_mtl +material=madskin:mad2_dz_utorso_mtl +material=madskin:mad4_dz_utorso_mtl +material=madskin:mad3_dz_utorso_mtl +material=madskin:mad1_dz_utorso_mtl +[dz_rearutorso] +material=madskin:gen3_dz_rearutorso_mtl +material=madskin:mad3_dz_rearutorso_mtl +[dz_reardtorso] +material=madskin:gen3_dz_reardtorso_mtl +material=madskin:mad4_dz_reardtorso_mtl +material=madskin:mad3_dz_reardtorso_mtl +[dz_larm] +material=madskin:gen3_dz_larm_mtl +material=madskin:gen2_dz_larm_mtl +material=madskin:gen1_dz_larm_mtl +material=madskin:gen3drkgry_dz_larm_mtl +material=madskin:gen3medgry_dz_larm_mtl +[dz_ldleg] +material=madskin:gen3_dz_ldleg_mtl +material=madskin:gen1_dz_ldleg_mtl +material=madskin:blakskn_dz_ldleg_mtl +material=madskin:lgo5_dz_ldleg_mtl +[dz_ruleg] +material=madskin:gen3_dz_ruleg_mtl +[dz_luleg] +material=madskin:gen3_dz_luleg_mtl +[dz_rfoot] +material=madskin:gen3_dz_rfoot_mtl +material=madskin:blakskn_dz_rfoot_mtl +material=madskin:gen1a_dz_rfoot_mtl +[dz_lfoot] +material=madskin:gen3_dz_lfoot_mtl +material=madskin:blakskn_dz_lfoot_mtl +material=madskin:gen1a_dz_lfoot_mtl +[dz_rdleg] +material=madskin:gen3_dz_rdleg_mtl +material=madskin:gen1_dz_rdleg_mtl +material=madskin:blakskn_dz_rdleg_mtl +material=madskin:lgo5_dz_rdleg_mtl +[dz_hip] +material=madskin:gen3_dz_hip_mtl +material=madskin:gen2_dz_hip_mtl +[dz_rarm] +material=madskin:gen3_dz_rarm_mtl +material=madskin:gen2_dz_rarm_mtl +material=madskin:gen1_dz_rarm_mtl +material=madskin:gen3drkgry_dz_rarm_mtl +material=madskin:gen3medgry_dz_rarm_mtl +[dz_dtorso] +material=madskin:gen3_dz_dtorso_mtl +material=madskin:mad2_dz_dtorso_mtl +material=madskin:mad4_dz_dtorso_mtl +material=madskin:mad1_dz_dtorso_mtl +[dz_ltorso] +material=madskin:mad2_dz_ltorso_mtl +material=madskin:mad3_dz_ltorso_mtl +material=madskin:mad5_dz_ltorso_mtl +[dz_rtorso] +material=madskin:mad2_dz_rtorso_mtl +material=madskin:mad3_dz_rtorso_mtl +material=madskin:mad5_dz_rtorso_mtl +[dz_ldoor] +material=madskin:mad4_dz_ldoor_mtl +material=madskin:mad3_dz_ldoor_mtl +[dz_rdoor] +material=madskin:mad4_dz_rdoor_mtl +material=madskin:mad3_dz_rdoor_mtl +[dz_rearltorso] +material=madskin:mad3_dz_rearltorso_mtl +[dz_rearrtorso] +material=madskin:mad3_dz_rearrtorso_mtl +[dz_rgun] +material=lokskin:gen3a_dz_rgun_mtl +material=lokskin:gen3_dz_rgun_mtl +material=lokskin:gen4_dz_rgun_mtl +material=lokskin:gen2_dz_rgun_mtl +material=lokskin:gen1_dz_rgun_mtl +material=lokskin:gen2a_dz_rgun_mtl +material=lokskin:damcolor_dz_rgun_mtl +material=lokskin:gen3drkgry_dz_rgun_mtl +[dz_lgun] +material=madskin:gen3_dz_lgun_mtl +material=madskin:gen1_dz_lgun_mtl +material=madskin:blakskn_dz_lgun_mtl +material=madskin:gen2a_dz_lgun_mtl +material=madskin:gen4_dz_lgun_mtl +material=madskin:damcolor_dz_lgun_mtl +material=madskin:gen3medgry_dz_lgun_mtl diff --git a/CONTENT/BT/VIDEO/MADSKIN.DZM b/CONTENT/BT/VIDEO/MADSKIN.DZM new file mode 100644 index 0000000..845004a --- /dev/null +++ b/CONTENT/BT/VIDEO/MADSKIN.DZM @@ -0,0 +1,91 @@ +[dz_searchlight] +material=madskin:gen1b_dz_searchlight_mtl +[dz_utorso] +material=madskin:gen3a_dz_utorso_mtl +material=madskin:gen3_dz_utorso_mtl +material=madskin:mad2_dz_utorso_mtl +material=madskin:mad4_dz_utorso_mtl +material=madskin:mad3_dz_utorso_mtl +material=madskin:mad1_dz_utorso_mtl +[dz_rearutorso] +material=madskin:gen3_dz_rearutorso_mtl +material=madskin:mad3_dz_rearutorso_mtl +[dz_reardtorso] +material=madskin:gen3_dz_reardtorso_mtl +material=madskin:mad4_dz_reardtorso_mtl +material=madskin:mad3_dz_reardtorso_mtl +[dz_larm] +material=madskin:gen3_dz_larm_mtl +material=madskin:gen2_dz_larm_mtl +material=madskin:gen1_dz_larm_mtl +material=madskin:gen3drkgry_dz_larm_mtl +material=madskin:gen3medgry_dz_larm_mtl +[dz_lgun] +material=lokskin:gen4_dz_lgun_mtl +material=lokskin:gen2_dz_lgun_mtl +material=lokskin:gen2a_dz_lgun_mtl +material=lokskin:damcolor_dz_lgun_mtl +material=lokskin:gen3drkgry_dz_lgun_mtl +[dz_ldleg] +material=madskin:gen3_dz_ldleg_mtl +material=madskin:gen1_dz_ldleg_mtl +material=madskin:blakskn_dz_ldleg_mtl +material=madskin:lgo5_dz_ldleg_mtl +[dz_ruleg] +material=madskin:gen3_dz_ruleg_mtl +[dz_luleg] +material=madskin:gen3_dz_luleg_mtl +[dz_rfoot] +material=madskin:gen3_dz_rfoot_mtl +material=madskin:blakskn_dz_rfoot_mtl +material=madskin:gen1a_dz_rfoot_mtl +[dz_lfoot] +material=madskin:gen3_dz_lfoot_mtl +material=madskin:blakskn_dz_lfoot_mtl +material=madskin:gen1a_dz_lfoot_mtl +[dz_rdleg] +material=madskin:gen3_dz_rdleg_mtl +material=madskin:gen1_dz_rdleg_mtl +material=madskin:blakskn_dz_rdleg_mtl +material=madskin:lgo5_dz_rdleg_mtl +[dz_hip] +material=madskin:gen3_dz_hip_mtl +material=madskin:gen2_dz_hip_mtl +[dz_rarm] +material=madskin:gen3_dz_rarm_mtl +material=madskin:gen2_dz_rarm_mtl +material=madskin:gen1_dz_rarm_mtl +material=madskin:gen3drkgry_dz_rarm_mtl +material=madskin:gen3medgry_dz_rarm_mtl +[dz_rgun] +material=madskin:gen3_dz_rgun_mtl +material=madskin:gen1_dz_rgun_mtl +material=madskin:blakskn_dz_rgun_mtl +material=madskin:gen2a_dz_rgun_mtl +material=madskin:gen4_dz_rgun_mtl +material=madskin:damcolor_dz_rgun_mtl +material=madskin:gen3medgry_dz_rgun_mtl +[dz_dtorso] +material=madskin:gen3_dz_dtorso_mtl +material=madskin:mad2_dz_dtorso_mtl +material=madskin:mad4_dz_dtorso_mtl +material=madskin:mad1_dz_dtorso_mtl +[dz_ltorso] +material=madskin:mad2_dz_ltorso_mtl +material=madskin:mad3_dz_ltorso_mtl +material=madskin:mad5_dz_ltorso_mtl +[dz_rtorso] +material=madskin:mad2_dz_rtorso_mtl +material=madskin:mad3_dz_rtorso_mtl +material=madskin:mad5_dz_rtorso_mtl +[dz_ldoor] +material=madskin:mad4_dz_ldoor_mtl +material=madskin:mad3_dz_ldoor_mtl +[dz_rdoor] +material=madskin:mad4_dz_rdoor_mtl +material=madskin:mad3_dz_rdoor_mtl +[dz_rearltorso] +material=madskin:mad3_dz_rearltorso_mtl +[dz_rearrtorso] +material=madskin:mad3_dz_rearrtorso_mtl + diff --git a/CONTENT/BT/VIDEO/MADSKIN.ORG b/CONTENT/BT/VIDEO/MADSKIN.ORG new file mode 100644 index 0000000..1c2c345 --- /dev/null +++ b/CONTENT/BT/VIDEO/MADSKIN.ORG @@ -0,0 +1,92 @@ +[dz_searchlight] +material=madskin:gen1b_dz_searchlight_mtl +[dz_utorso] +material=madskin:gen3a_dz_utorso_mtl +material=madskin:gen3_dz_utorso_mtl +material=madskin:mad2_dz_utorso_mtl +material=madskin:mad4_dz_utorso_mtl +material=madskin:mad3_dz_utorso_mtl +material=madskin:mad1_dz_utorso_mtl +[dz_rearutorso] +material=madskin:gen3_dz_rearutorso_mtl +material=madskin:mad3_dz_rearutorso_mtl +[dz_reardtorso] +material=madskin:gen3_dz_reardtorso_mtl +material=madskin:mad4_dz_reardtorso_mtl +material=madskin:mad3_dz_reardtorso_mtl +[dz_larm] +material=madskin:gen3_dz_larm_mtl +material=madskin:gen2_dz_larm_mtl +material=madskin:gen1_dz_larm_mtl +material=madskin:gen3drkgry_dz_larm_mtl +material=madskin:gen3medgry_dz_larm_mtl +[dz_lgun] +material=madskin:gen3_dz_lgun_mtl +material=madskin:gen1_dz_lgun_mtl +material=madskin:blakskn_dz_lgun_mtl +material=madskin:gen2a_dz_lgun_mtl +material=madskin:gen4_dz_lgun_mtl +material=madskin:damcolor_dz_lgun_mtl +material=madskin:gen3medgry_dz_lgun_mtl +[dz_ldleg] +material=madskin:gen3_dz_ldleg_mtl +material=madskin:gen1_dz_ldleg_mtl +material=madskin:blakskn_dz_ldleg_mtl +material=madskin:lgo5_dz_ldleg_mtl +[dz_ruleg] +material=madskin:gen3_dz_ruleg_mtl +[dz_luleg] +material=madskin:gen3_dz_luleg_mtl +[dz_rfoot] +material=madskin:gen3_dz_rfoot_mtl +material=madskin:blakskn_dz_rfoot_mtl +material=madskin:gen1a_dz_rfoot_mtl +[dz_lfoot] +material=madskin:gen3_dz_lfoot_mtl +material=madskin:blakskn_dz_lfoot_mtl +material=madskin:gen1a_dz_lfoot_mtl +[dz_rdleg] +material=madskin:gen3_dz_rdleg_mtl +material=madskin:gen1_dz_rdleg_mtl +material=madskin:blakskn_dz_rdleg_mtl +material=madskin:lgo5_dz_rdleg_mtl +[dz_hip] +material=madskin:gen3_dz_hip_mtl +material=madskin:gen2_dz_hip_mtl +[dz_rarm] +material=madskin:gen3_dz_rarm_mtl +material=madskin:gen2_dz_rarm_mtl +material=madskin:gen1_dz_rarm_mtl +material=madskin:gen3drkgry_dz_rarm_mtl +material=madskin:gen3medgry_dz_rarm_mtl +[dz_rgun] +material=madskin:gen3_dz_rgun_mtl +material=madskin:gen1_dz_rgun_mtl +material=madskin:blakskn_dz_rgun_mtl +material=madskin:gen2a_dz_rgun_mtl +material=madskin:gen4_dz_rgun_mtl +material=madskin:damcolor_dz_rgun_mtl +material=madskin:gen3medgry_dz_rgun_mtl +[dz_dtorso] +material=madskin:gen3_dz_dtorso_mtl +material=madskin:mad2_dz_dtorso_mtl +material=madskin:mad4_dz_dtorso_mtl +material=madskin:mad1_dz_dtorso_mtl +[dz_ltorso] +material=madskin:mad2_dz_ltorso_mtl +material=madskin:mad3_dz_ltorso_mtl +material=madskin:mad5_dz_ltorso_mtl +[dz_rtorso] +material=madskin:mad2_dz_rtorso_mtl +material=madskin:mad3_dz_rtorso_mtl +material=madskin:mad5_dz_rtorso_mtl +[dz_ldoor] +material=madskin:mad4_dz_ldoor_mtl +material=madskin:mad3_dz_ldoor_mtl +[dz_rdoor] +material=madskin:mad4_dz_rdoor_mtl +material=madskin:mad3_dz_rdoor_mtl +[dz_rearltorso] +material=madskin:mad3_dz_rearltorso_mtl +[dz_rearrtorso] +material=madskin:mad3_dz_rearrtorso_mtl diff --git a/CONTENT/BT/VIDEO/MAT/ARENA/BTVEH.BMF b/CONTENT/BT/VIDEO/MAT/ARENA/BTVEH.BMF new file mode 100644 index 0000000..446a17e Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/ARENA/BTVEH.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/AVAFX.BMF b/CONTENT/BT/VIDEO/MAT/AVAFX.BMF new file mode 100644 index 0000000..d677902 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/AVAFX.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/AVASKIN.BMF b/CONTENT/BT/VIDEO/MAT/AVASKIN.BMF new file mode 100644 index 0000000..30b352d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/AVASKIN.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/AVXSKIN.BMF b/CONTENT/BT/VIDEO/MAT/AVXSKIN.BMF new file mode 100644 index 0000000..56e4451 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/AVXSKIN.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/AVXSKIN0.BMF b/CONTENT/BT/VIDEO/MAT/AVXSKIN0.BMF new file mode 100644 index 0000000..56e4451 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/AVXSKIN0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/AVXSKIN1.BMF b/CONTENT/BT/VIDEO/MAT/AVXSKIN1.BMF new file mode 100644 index 0000000..56e4451 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/AVXSKIN1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/AVXSKIN2.BMF b/CONTENT/BT/VIDEO/MAT/AVXSKIN2.BMF new file mode 100644 index 0000000..56e4451 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/AVXSKIN2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/AVXSKIN3.BMF b/CONTENT/BT/VIDEO/MAT/AVXSKIN3.BMF new file mode 100644 index 0000000..56e4451 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/AVXSKIN3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/AVXSKIN4.BMF b/CONTENT/BT/VIDEO/MAT/AVXSKIN4.BMF new file mode 100644 index 0000000..56e4451 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/AVXSKIN4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/AVXSKIN5.BMF b/CONTENT/BT/VIDEO/MAT/AVXSKIN5.BMF new file mode 100644 index 0000000..56e4451 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/AVXSKIN5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/AVXSKIN6.BMF b/CONTENT/BT/VIDEO/MAT/AVXSKIN6.BMF new file mode 100644 index 0000000..56e4451 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/AVXSKIN6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/AVXSKIN7.BMF b/CONTENT/BT/VIDEO/MAT/AVXSKIN7.BMF new file mode 100644 index 0000000..56e4451 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/AVXSKIN7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/AVX_BLK0.BMF b/CONTENT/BT/VIDEO/MAT/AVX_BLK0.BMF new file mode 100644 index 0000000..bf1c417 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/AVX_BLK0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/AVX_BLK1.BMF b/CONTENT/BT/VIDEO/MAT/AVX_BLK1.BMF new file mode 100644 index 0000000..bf1c417 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/AVX_BLK1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/AVX_BLK2.BMF b/CONTENT/BT/VIDEO/MAT/AVX_BLK2.BMF new file mode 100644 index 0000000..bf1c417 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/AVX_BLK2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/AVX_BLK3.BMF b/CONTENT/BT/VIDEO/MAT/AVX_BLK3.BMF new file mode 100644 index 0000000..bf1c417 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/AVX_BLK3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/AVX_BLK4.BMF b/CONTENT/BT/VIDEO/MAT/AVX_BLK4.BMF new file mode 100644 index 0000000..bf1c417 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/AVX_BLK4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/AVX_BLK5.BMF b/CONTENT/BT/VIDEO/MAT/AVX_BLK5.BMF new file mode 100644 index 0000000..bf1c417 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/AVX_BLK5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/AVX_BLK6.BMF b/CONTENT/BT/VIDEO/MAT/AVX_BLK6.BMF new file mode 100644 index 0000000..bf1c417 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/AVX_BLK6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/AVX_BLK7.BMF b/CONTENT/BT/VIDEO/MAT/AVX_BLK7.BMF new file mode 100644 index 0000000..bf1c417 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/AVX_BLK7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/AVX_BRN0.BMF b/CONTENT/BT/VIDEO/MAT/AVX_BRN0.BMF new file mode 100644 index 0000000..664ad49 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/AVX_BRN0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/AVX_BRN1.BMF b/CONTENT/BT/VIDEO/MAT/AVX_BRN1.BMF new file mode 100644 index 0000000..664ad49 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/AVX_BRN1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/AVX_BRN2.BMF b/CONTENT/BT/VIDEO/MAT/AVX_BRN2.BMF new file mode 100644 index 0000000..664ad49 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/AVX_BRN2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/AVX_BRN3.BMF b/CONTENT/BT/VIDEO/MAT/AVX_BRN3.BMF new file mode 100644 index 0000000..664ad49 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/AVX_BRN3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/AVX_BRN4.BMF b/CONTENT/BT/VIDEO/MAT/AVX_BRN4.BMF new file mode 100644 index 0000000..664ad49 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/AVX_BRN4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/AVX_BRN5.BMF b/CONTENT/BT/VIDEO/MAT/AVX_BRN5.BMF new file mode 100644 index 0000000..664ad49 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/AVX_BRN5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/AVX_BRN6.BMF b/CONTENT/BT/VIDEO/MAT/AVX_BRN6.BMF new file mode 100644 index 0000000..664ad49 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/AVX_BRN6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/AVX_BRN7.BMF b/CONTENT/BT/VIDEO/MAT/AVX_BRN7.BMF new file mode 100644 index 0000000..664ad49 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/AVX_BRN7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/AVX_GRN0.BMF b/CONTENT/BT/VIDEO/MAT/AVX_GRN0.BMF new file mode 100644 index 0000000..09636dc Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/AVX_GRN0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/AVX_GRN1.BMF b/CONTENT/BT/VIDEO/MAT/AVX_GRN1.BMF new file mode 100644 index 0000000..09636dc Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/AVX_GRN1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/AVX_GRN2.BMF b/CONTENT/BT/VIDEO/MAT/AVX_GRN2.BMF new file mode 100644 index 0000000..09636dc Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/AVX_GRN2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/AVX_GRN3.BMF b/CONTENT/BT/VIDEO/MAT/AVX_GRN3.BMF new file mode 100644 index 0000000..09636dc Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/AVX_GRN3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/AVX_GRN4.BMF b/CONTENT/BT/VIDEO/MAT/AVX_GRN4.BMF new file mode 100644 index 0000000..09636dc Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/AVX_GRN4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/AVX_GRN5.BMF b/CONTENT/BT/VIDEO/MAT/AVX_GRN5.BMF new file mode 100644 index 0000000..09636dc Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/AVX_GRN5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/AVX_GRN6.BMF b/CONTENT/BT/VIDEO/MAT/AVX_GRN6.BMF new file mode 100644 index 0000000..09636dc Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/AVX_GRN6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/AVX_GRN7.BMF b/CONTENT/BT/VIDEO/MAT/AVX_GRN7.BMF new file mode 100644 index 0000000..09636dc Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/AVX_GRN7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/AVX_GRY0.BMF b/CONTENT/BT/VIDEO/MAT/AVX_GRY0.BMF new file mode 100644 index 0000000..95289c5 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/AVX_GRY0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/AVX_GRY1.BMF b/CONTENT/BT/VIDEO/MAT/AVX_GRY1.BMF new file mode 100644 index 0000000..95289c5 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/AVX_GRY1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/AVX_GRY2.BMF b/CONTENT/BT/VIDEO/MAT/AVX_GRY2.BMF new file mode 100644 index 0000000..95289c5 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/AVX_GRY2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/AVX_GRY3.BMF b/CONTENT/BT/VIDEO/MAT/AVX_GRY3.BMF new file mode 100644 index 0000000..95289c5 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/AVX_GRY3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/AVX_GRY4.BMF b/CONTENT/BT/VIDEO/MAT/AVX_GRY4.BMF new file mode 100644 index 0000000..95289c5 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/AVX_GRY4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/AVX_GRY5.BMF b/CONTENT/BT/VIDEO/MAT/AVX_GRY5.BMF new file mode 100644 index 0000000..95289c5 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/AVX_GRY5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/AVX_GRY6.BMF b/CONTENT/BT/VIDEO/MAT/AVX_GRY6.BMF new file mode 100644 index 0000000..95289c5 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/AVX_GRY6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/AVX_GRY7.BMF b/CONTENT/BT/VIDEO/MAT/AVX_GRY7.BMF new file mode 100644 index 0000000..95289c5 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/AVX_GRY7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/AVX_RED0.BMF b/CONTENT/BT/VIDEO/MAT/AVX_RED0.BMF new file mode 100644 index 0000000..92c6ef4 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/AVX_RED0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/AVX_RED1.BMF b/CONTENT/BT/VIDEO/MAT/AVX_RED1.BMF new file mode 100644 index 0000000..92c6ef4 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/AVX_RED1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/AVX_RED2.BMF b/CONTENT/BT/VIDEO/MAT/AVX_RED2.BMF new file mode 100644 index 0000000..92c6ef4 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/AVX_RED2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/AVX_RED3.BMF b/CONTENT/BT/VIDEO/MAT/AVX_RED3.BMF new file mode 100644 index 0000000..92c6ef4 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/AVX_RED3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/AVX_RED4.BMF b/CONTENT/BT/VIDEO/MAT/AVX_RED4.BMF new file mode 100644 index 0000000..92c6ef4 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/AVX_RED4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/AVX_RED5.BMF b/CONTENT/BT/VIDEO/MAT/AVX_RED5.BMF new file mode 100644 index 0000000..92c6ef4 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/AVX_RED5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/AVX_RED6.BMF b/CONTENT/BT/VIDEO/MAT/AVX_RED6.BMF new file mode 100644 index 0000000..92c6ef4 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/AVX_RED6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/AVX_RED7.BMF b/CONTENT/BT/VIDEO/MAT/AVX_RED7.BMF new file mode 100644 index 0000000..92c6ef4 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/AVX_RED7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/AVX_TAN0.BMF b/CONTENT/BT/VIDEO/MAT/AVX_TAN0.BMF new file mode 100644 index 0000000..86b90a5 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/AVX_TAN0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/AVX_TAN1.BMF b/CONTENT/BT/VIDEO/MAT/AVX_TAN1.BMF new file mode 100644 index 0000000..86b90a5 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/AVX_TAN1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/AVX_TAN2.BMF b/CONTENT/BT/VIDEO/MAT/AVX_TAN2.BMF new file mode 100644 index 0000000..86b90a5 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/AVX_TAN2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/AVX_TAN3.BMF b/CONTENT/BT/VIDEO/MAT/AVX_TAN3.BMF new file mode 100644 index 0000000..86b90a5 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/AVX_TAN3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/AVX_TAN4.BMF b/CONTENT/BT/VIDEO/MAT/AVX_TAN4.BMF new file mode 100644 index 0000000..86b90a5 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/AVX_TAN4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/AVX_TAN5.BMF b/CONTENT/BT/VIDEO/MAT/AVX_TAN5.BMF new file mode 100644 index 0000000..86b90a5 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/AVX_TAN5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/AVX_TAN6.BMF b/CONTENT/BT/VIDEO/MAT/AVX_TAN6.BMF new file mode 100644 index 0000000..86b90a5 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/AVX_TAN6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/AVX_TAN7.BMF b/CONTENT/BT/VIDEO/MAT/AVX_TAN7.BMF new file mode 100644 index 0000000..86b90a5 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/AVX_TAN7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/AVX_WHT0.BMF b/CONTENT/BT/VIDEO/MAT/AVX_WHT0.BMF new file mode 100644 index 0000000..4335ca3 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/AVX_WHT0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/AVX_WHT1.BMF b/CONTENT/BT/VIDEO/MAT/AVX_WHT1.BMF new file mode 100644 index 0000000..4335ca3 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/AVX_WHT1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/AVX_WHT2.BMF b/CONTENT/BT/VIDEO/MAT/AVX_WHT2.BMF new file mode 100644 index 0000000..4335ca3 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/AVX_WHT2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/AVX_WHT3.BMF b/CONTENT/BT/VIDEO/MAT/AVX_WHT3.BMF new file mode 100644 index 0000000..4335ca3 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/AVX_WHT3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/AVX_WHT4.BMF b/CONTENT/BT/VIDEO/MAT/AVX_WHT4.BMF new file mode 100644 index 0000000..4335ca3 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/AVX_WHT4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/AVX_WHT5.BMF b/CONTENT/BT/VIDEO/MAT/AVX_WHT5.BMF new file mode 100644 index 0000000..4335ca3 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/AVX_WHT5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/AVX_WHT6.BMF b/CONTENT/BT/VIDEO/MAT/AVX_WHT6.BMF new file mode 100644 index 0000000..4335ca3 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/AVX_WHT6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/AVX_WHT7.BMF b/CONTENT/BT/VIDEO/MAT/AVX_WHT7.BMF new file mode 100644 index 0000000..4335ca3 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/AVX_WHT7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/BASEV.BMF b/CONTENT/BT/VIDEO/MAT/BASEV.BMF new file mode 100644 index 0000000..147e482 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/BASEV.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/BLHFX.BMF b/CONTENT/BT/VIDEO/MAT/BLHFX.BMF new file mode 100644 index 0000000..0e48b8b Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/BLHFX.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/BLHSKIN.BMF b/CONTENT/BT/VIDEO/MAT/BLHSKIN.BMF new file mode 100644 index 0000000..7c5ded3 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/BLHSKIN.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/BLXSKIN.BMF b/CONTENT/BT/VIDEO/MAT/BLXSKIN.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/BLXSKIN.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/BLXSKIN0.BMF b/CONTENT/BT/VIDEO/MAT/BLXSKIN0.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/BLXSKIN0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/BLXSKIN1.BMF b/CONTENT/BT/VIDEO/MAT/BLXSKIN1.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/BLXSKIN1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/BLXSKIN2.BMF b/CONTENT/BT/VIDEO/MAT/BLXSKIN2.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/BLXSKIN2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/BLXSKIN3.BMF b/CONTENT/BT/VIDEO/MAT/BLXSKIN3.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/BLXSKIN3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/BLXSKIN4.BMF b/CONTENT/BT/VIDEO/MAT/BLXSKIN4.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/BLXSKIN4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/BLXSKIN5.BMF b/CONTENT/BT/VIDEO/MAT/BLXSKIN5.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/BLXSKIN5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/BLXSKIN6.BMF b/CONTENT/BT/VIDEO/MAT/BLXSKIN6.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/BLXSKIN6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/BLXSKIN7.BMF b/CONTENT/BT/VIDEO/MAT/BLXSKIN7.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/BLXSKIN7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/BLX_BLK0.BMF b/CONTENT/BT/VIDEO/MAT/BLX_BLK0.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/BLX_BLK0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/BLX_BLK1.BMF b/CONTENT/BT/VIDEO/MAT/BLX_BLK1.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/BLX_BLK1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/BLX_BLK2.BMF b/CONTENT/BT/VIDEO/MAT/BLX_BLK2.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/BLX_BLK2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/BLX_BLK3.BMF b/CONTENT/BT/VIDEO/MAT/BLX_BLK3.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/BLX_BLK3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/BLX_BLK4.BMF b/CONTENT/BT/VIDEO/MAT/BLX_BLK4.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/BLX_BLK4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/BLX_BLK5.BMF b/CONTENT/BT/VIDEO/MAT/BLX_BLK5.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/BLX_BLK5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/BLX_BLK6.BMF b/CONTENT/BT/VIDEO/MAT/BLX_BLK6.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/BLX_BLK6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/BLX_BLK7.BMF b/CONTENT/BT/VIDEO/MAT/BLX_BLK7.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/BLX_BLK7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/BLX_BRN0.BMF b/CONTENT/BT/VIDEO/MAT/BLX_BRN0.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/BLX_BRN0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/BLX_BRN1.BMF b/CONTENT/BT/VIDEO/MAT/BLX_BRN1.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/BLX_BRN1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/BLX_BRN2.BMF b/CONTENT/BT/VIDEO/MAT/BLX_BRN2.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/BLX_BRN2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/BLX_BRN3.BMF b/CONTENT/BT/VIDEO/MAT/BLX_BRN3.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/BLX_BRN3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/BLX_BRN4.BMF b/CONTENT/BT/VIDEO/MAT/BLX_BRN4.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/BLX_BRN4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/BLX_BRN5.BMF b/CONTENT/BT/VIDEO/MAT/BLX_BRN5.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/BLX_BRN5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/BLX_BRN6.BMF b/CONTENT/BT/VIDEO/MAT/BLX_BRN6.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/BLX_BRN6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/BLX_BRN7.BMF b/CONTENT/BT/VIDEO/MAT/BLX_BRN7.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/BLX_BRN7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/BLX_GRN0.BMF b/CONTENT/BT/VIDEO/MAT/BLX_GRN0.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/BLX_GRN0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/BLX_GRN1.BMF b/CONTENT/BT/VIDEO/MAT/BLX_GRN1.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/BLX_GRN1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/BLX_GRN2.BMF b/CONTENT/BT/VIDEO/MAT/BLX_GRN2.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/BLX_GRN2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/BLX_GRN3.BMF b/CONTENT/BT/VIDEO/MAT/BLX_GRN3.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/BLX_GRN3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/BLX_GRN4.BMF b/CONTENT/BT/VIDEO/MAT/BLX_GRN4.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/BLX_GRN4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/BLX_GRN5.BMF b/CONTENT/BT/VIDEO/MAT/BLX_GRN5.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/BLX_GRN5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/BLX_GRN6.BMF b/CONTENT/BT/VIDEO/MAT/BLX_GRN6.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/BLX_GRN6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/BLX_GRN7.BMF b/CONTENT/BT/VIDEO/MAT/BLX_GRN7.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/BLX_GRN7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/BLX_GRY0.BMF b/CONTENT/BT/VIDEO/MAT/BLX_GRY0.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/BLX_GRY0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/BLX_GRY1.BMF b/CONTENT/BT/VIDEO/MAT/BLX_GRY1.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/BLX_GRY1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/BLX_GRY2.BMF b/CONTENT/BT/VIDEO/MAT/BLX_GRY2.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/BLX_GRY2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/BLX_GRY3.BMF b/CONTENT/BT/VIDEO/MAT/BLX_GRY3.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/BLX_GRY3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/BLX_GRY4.BMF b/CONTENT/BT/VIDEO/MAT/BLX_GRY4.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/BLX_GRY4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/BLX_GRY5.BMF b/CONTENT/BT/VIDEO/MAT/BLX_GRY5.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/BLX_GRY5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/BLX_GRY6.BMF b/CONTENT/BT/VIDEO/MAT/BLX_GRY6.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/BLX_GRY6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/BLX_GRY7.BMF b/CONTENT/BT/VIDEO/MAT/BLX_GRY7.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/BLX_GRY7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/BLX_RED0.BMF b/CONTENT/BT/VIDEO/MAT/BLX_RED0.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/BLX_RED0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/BLX_RED1.BMF b/CONTENT/BT/VIDEO/MAT/BLX_RED1.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/BLX_RED1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/BLX_RED2.BMF b/CONTENT/BT/VIDEO/MAT/BLX_RED2.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/BLX_RED2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/BLX_RED3.BMF b/CONTENT/BT/VIDEO/MAT/BLX_RED3.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/BLX_RED3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/BLX_RED4.BMF b/CONTENT/BT/VIDEO/MAT/BLX_RED4.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/BLX_RED4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/BLX_RED5.BMF b/CONTENT/BT/VIDEO/MAT/BLX_RED5.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/BLX_RED5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/BLX_RED6.BMF b/CONTENT/BT/VIDEO/MAT/BLX_RED6.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/BLX_RED6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/BLX_RED7.BMF b/CONTENT/BT/VIDEO/MAT/BLX_RED7.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/BLX_RED7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/BLX_TAN0.BMF b/CONTENT/BT/VIDEO/MAT/BLX_TAN0.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/BLX_TAN0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/BLX_TAN1.BMF b/CONTENT/BT/VIDEO/MAT/BLX_TAN1.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/BLX_TAN1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/BLX_TAN2.BMF b/CONTENT/BT/VIDEO/MAT/BLX_TAN2.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/BLX_TAN2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/BLX_TAN3.BMF b/CONTENT/BT/VIDEO/MAT/BLX_TAN3.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/BLX_TAN3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/BLX_TAN4.BMF b/CONTENT/BT/VIDEO/MAT/BLX_TAN4.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/BLX_TAN4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/BLX_TAN5.BMF b/CONTENT/BT/VIDEO/MAT/BLX_TAN5.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/BLX_TAN5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/BLX_TAN6.BMF b/CONTENT/BT/VIDEO/MAT/BLX_TAN6.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/BLX_TAN6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/BLX_TAN7.BMF b/CONTENT/BT/VIDEO/MAT/BLX_TAN7.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/BLX_TAN7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/BLX_WHT0.BMF b/CONTENT/BT/VIDEO/MAT/BLX_WHT0.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/BLX_WHT0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/BLX_WHT1.BMF b/CONTENT/BT/VIDEO/MAT/BLX_WHT1.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/BLX_WHT1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/BLX_WHT2.BMF b/CONTENT/BT/VIDEO/MAT/BLX_WHT2.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/BLX_WHT2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/BLX_WHT3.BMF b/CONTENT/BT/VIDEO/MAT/BLX_WHT3.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/BLX_WHT3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/BLX_WHT4.BMF b/CONTENT/BT/VIDEO/MAT/BLX_WHT4.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/BLX_WHT4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/BLX_WHT5.BMF b/CONTENT/BT/VIDEO/MAT/BLX_WHT5.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/BLX_WHT5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/BLX_WHT6.BMF b/CONTENT/BT/VIDEO/MAT/BLX_WHT6.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/BLX_WHT6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/BLX_WHT7.BMF b/CONTENT/BT/VIDEO/MAT/BLX_WHT7.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/BLX_WHT7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/BMAP.BMF b/CONTENT/BT/VIDEO/MAT/BMAP.BMF new file mode 100644 index 0000000..c5f12f6 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/BMAP.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/BTCULT.BMF b/CONTENT/BT/VIDEO/MAT/BTCULT.BMF new file mode 100644 index 0000000..152f9ed --- /dev/null +++ b/CONTENT/BT/VIDEO/MAT/BTCULT.BMF @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/CONTENT/BT/VIDEO/MAT/BTPOLWIN.BMF b/CONTENT/BT/VIDEO/MAT/BTPOLWIN.BMF new file mode 100644 index 0000000..369504b Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/BTPOLWIN.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/BTRAVWIN.BMF b/CONTENT/BT/VIDEO/MAT/BTRAVWIN.BMF new file mode 100644 index 0000000..de5ff15 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/BTRAVWIN.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/CALIOPE.BMF b/CONTENT/BT/VIDEO/MAT/CALIOPE.BMF new file mode 100644 index 0000000..30e6fb0 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/CALIOPE.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/CAVERN/BTVEH.BMF b/CONTENT/BT/VIDEO/MAT/CAVERN/BTVEH.BMF new file mode 100644 index 0000000..70d7049 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/CAVERN/BTVEH.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/DAY/BTARENA.BMF b/CONTENT/BT/VIDEO/MAT/DAY/BTARENA.BMF new file mode 100644 index 0000000..9d8935c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/DAY/BTARENA.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/DAY/BTFX.BMF b/CONTENT/BT/VIDEO/MAT/DAY/BTFX.BMF new file mode 100644 index 0000000..d13628b Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/DAY/BTFX.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/DAY/BTPOLAR.BMF b/CONTENT/BT/VIDEO/MAT/DAY/BTPOLAR.BMF new file mode 100644 index 0000000..861aaa1 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/DAY/BTPOLAR.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/DAY/DIVISION.SAV/GRASS.BMF b/CONTENT/BT/VIDEO/MAT/DAY/DIVISION.SAV/GRASS.BMF new file mode 100644 index 0000000..b6ee2d0 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/DAY/DIVISION.SAV/GRASS.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/DAY/DIVISION.SAV/GRASSBU.BMF b/CONTENT/BT/VIDEO/MAT/DAY/DIVISION.SAV/GRASSBU.BMF new file mode 100644 index 0000000..82ee05c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/DAY/DIVISION.SAV/GRASSBU.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/DAY/DIVISION.SAV/RAVINES.BMF b/CONTENT/BT/VIDEO/MAT/DAY/DIVISION.SAV/RAVINES.BMF new file mode 100644 index 0000000..097ee0b Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/DAY/DIVISION.SAV/RAVINES.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/DAY/EBTFX.BMF b/CONTENT/BT/VIDEO/MAT/DAY/EBTFX.BMF new file mode 100644 index 0000000..b609c90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/DAY/EBTFX.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/DAY/GRASS.BMF b/CONTENT/BT/VIDEO/MAT/DAY/GRASS.BMF new file mode 100644 index 0000000..b6ee2d0 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/DAY/GRASS.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/DAY/GRASS.VMF b/CONTENT/BT/VIDEO/MAT/DAY/GRASS.VMF new file mode 100644 index 0000000..e0d2034 --- /dev/null +++ b/CONTENT/BT/VIDEO/MAT/DAY/GRASS.VMF @@ -0,0 +1,69 @@ +DIV-VIZ2 +HEADER +( + VERSION=2:08; + DATE=5:3:97; + TIME=23:48; + FILETYPE=MATERIAL +) +{ +} + +TEXTURE(NAME="grassc_tex") +{ + MAP {"grassc"} + MAGNIFY {BILINEAR} +} + +TEXTURE(NAME="tree9_tex") +{ + MAP {"tree"} + BITSLICE { 8 } +} + +TEXTURE(NAME="bintA_tex") +{ + MAP {"bintA"} + MAGNIFY {BILINEAR} +} + +RAMP(NAME="grass") +{ + DATA {0.13, 0.13, 0.07, 0.38, 0.33, 0.23} +} + +MATERIAL(NAME="grass_mtl") +{ + TEXTURE {"grassc_tex"} + RAMP {"grass"} +} + +MATERIAL(NAME="tree_mtl") +{ + TEXTURE {"tree9_tex"} + AMBIENT {1, 0.15, 0.131} + DIFFUSE {1, 0.15, 0.131} +} + +MATERIAL(NAME="trunk_mtl") +{ + TEXTURE {"bintA_tex"} + AMBIENT {0.1898, 0.088563, 0} + DIFFUSE {0.1898, 0.064105, 0} +} + +MATERIAL(NAME="rings_mtl") +{ + TEXTURE {"bintA_tex"} + AMBIENT {0.3898, 0.188563, 0.051} + DIFFUSE {0.3898, 0.164105, 0.051} +} + +MATERIAL(NAME="leaves_mtl") +{ + TEXTURE {"tree9_tex"} + AMBIENT {1, 0.651, 0.531} + DIFFUSE {1, 0.651, 0.531} +} + + \ No newline at end of file diff --git a/CONTENT/BT/VIDEO/MAT/DAY/GRASSBU.BMF b/CONTENT/BT/VIDEO/MAT/DAY/GRASSBU.BMF new file mode 100644 index 0000000..82ee05c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/DAY/GRASSBU.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/DAY/GRASSBU.VMF b/CONTENT/BT/VIDEO/MAT/DAY/GRASSBU.VMF new file mode 100644 index 0000000..e714531 --- /dev/null +++ b/CONTENT/BT/VIDEO/MAT/DAY/GRASSBU.VMF @@ -0,0 +1,69 @@ +DIV-VIZ2 +HEADER +( + VERSION=2:08; + DATE=5:3:97; + TIME=23:48; + FILETYPE=MATERIAL +) +{ +} + +TEXTURE(NAME="grassc_tex") +{ + MAP {"grassc"} + MAGNIFY {BILINEAR} +} + +TEXTURE(NAME="tree9_tex") +{ + MAP {"tree"} + BITSLICE { 8 } +} + +TEXTURE(NAME="bintA_tex") +{ + MAP {"bintA"} + MAGNIFY {BILINEAR} +} + +RAMP(NAME="grass") +{ + DATA {0.08, 0.1, 0.05, 0.38, 0.33, 0.23} +} + +MATERIAL(NAME="grass_mtl") +{ + TEXTURE {"grassc_tex"} + RAMP {"grass"} +} + +MATERIAL(NAME="tree_mtl") +{ + TEXTURE {"tree9_tex"} + AMBIENT {1, 0.15, 0.131} + DIFFUSE {1, 0.15, 0.131} +} + +MATERIAL(NAME="trunk_mtl") +{ + TEXTURE {"bintA_tex"} + AMBIENT {0.1898, 0.088563, 0} + DIFFUSE {0.1898, 0.064105, 0} +} + +MATERIAL(NAME="rings_mtl") +{ + TEXTURE {"bintA_tex"} + AMBIENT {0.3898, 0.188563, 0.051} + DIFFUSE {0.3898, 0.164105, 0.051} +} + +MATERIAL(NAME="leaves_mtl") +{ + TEXTURE {"tree9_tex"} + AMBIENT {1, 0.651, 0.531} + DIFFUSE {1, 0.651, 0.531} +} + + \ No newline at end of file diff --git a/CONTENT/BT/VIDEO/MAT/DAY/RAVINES.BMF b/CONTENT/BT/VIDEO/MAT/DAY/RAVINES.BMF new file mode 100644 index 0000000..097ee0b Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/DAY/RAVINES.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/DAY/RAVINES.VMF b/CONTENT/BT/VIDEO/MAT/DAY/RAVINES.VMF new file mode 100644 index 0000000..dd7f23a --- /dev/null +++ b/CONTENT/BT/VIDEO/MAT/DAY/RAVINES.VMF @@ -0,0 +1,62 @@ +DIV-VIZ2 +HEADER +( + VERSION=2:08; + DATE=8:2:97; + TIME=1:39; + FILETYPE=MATERIAL +) +{ +} + +TEXTURE(NAME="bdinta_tex") +{ + MAP {"bdinta"} + MAGNIFY {BILINEAR} +} + +TEXTURE(NAME="bdintb_tex") +{ + MAP {"bdintb"} + MAGNIFY {BILINEAR} +} + +RAMP(NAME="dust") +{ + DATA {0.285, 0.21, 0.15, 0.75, 0.5, 0.4} +} + +RAMP(NAME="rock") +{ + DATA {0.25, 0.21, 0.16, 0.8, 0.5, 0.4} +} + +MATERIAL(NAME="ravinerock_mtl") +{ + TEXTURE {"bdinta_tex"} + RAMP {"rock"} +} + +MATERIAL(NAME="ravinerubble_mtl") +{ + TEXTURE {"bdintb_tex"} + RAMP {"dust"} +} + +MATERIAL(NAME="tarmac_mtl") +{ + TEXTURE {"bdintb_tex"} + AMBIENT {0.4143, 0.417459, 0.417143} + DIFFUSE {0.4143, 0.415668, 0.417143} + RAMP {"dust"} +} + +MATERIAL(NAME="dirt_mtl") +{ + TEXTURE {"bdintb_tex"} + AMBIENT {0.8, 0.8, 0.8} + DIFFUSE {0.8, 0.8, 0.8} + RAMP {"dust"} +} + + \ No newline at end of file diff --git a/CONTENT/BT/VIDEO/MAT/DBASE.BMF b/CONTENT/BT/VIDEO/MAT/DBASE.BMF new file mode 100644 index 0000000..30af5ec Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/DBASE.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/DISH.BGF b/CONTENT/BT/VIDEO/MAT/DISH.BGF new file mode 100644 index 0000000..08f0e68 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/DISH.BGF differ diff --git a/CONTENT/BT/VIDEO/MAT/DISH.BMF b/CONTENT/BT/VIDEO/MAT/DISH.BMF new file mode 100644 index 0000000..fc4d4b4 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/DISH.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/DIVISION.SAV/BASEV.BMF b/CONTENT/BT/VIDEO/MAT/DIVISION.SAV/BASEV.BMF new file mode 100644 index 0000000..0d14213 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/DIVISION.SAV/BASEV.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/DIVISION.SAV/CALIOPE.BMF b/CONTENT/BT/VIDEO/MAT/DIVISION.SAV/CALIOPE.BMF new file mode 100644 index 0000000..917e003 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/DIVISION.SAV/CALIOPE.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/DIVISION.SAV/DBASE.BMF b/CONTENT/BT/VIDEO/MAT/DIVISION.SAV/DBASE.BMF new file mode 100644 index 0000000..d311292 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/DIVISION.SAV/DBASE.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/DIVISION.SAV/DISH.BMF b/CONTENT/BT/VIDEO/MAT/DIVISION.SAV/DISH.BMF new file mode 100644 index 0000000..71f1cc8 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/DIVISION.SAV/DISH.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/DIVISION.SAV/GRASS.BMF b/CONTENT/BT/VIDEO/MAT/DIVISION.SAV/GRASS.BMF new file mode 100644 index 0000000..83043fe Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/DIVISION.SAV/GRASS.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/DIVISION.SAV/GRASS.VMF b/CONTENT/BT/VIDEO/MAT/DIVISION.SAV/GRASS.VMF new file mode 100644 index 0000000..2901fca --- /dev/null +++ b/CONTENT/BT/VIDEO/MAT/DIVISION.SAV/GRASS.VMF @@ -0,0 +1,61 @@ +DIV-VIZ2 +HEADER +( + VERSION=2:08; + DATE=5:3:97; + TIME=23:48; + FILETYPE=MATERIAL +) +{ +} + +TEXTURE(NAME="grassc_tex") +{ + MAP {"grassc"} + MAGNIFY {BILINEAR} +} + +TEXTURE(NAME="tree9_tex") +{ + MAP {"tree"} + BITSLICE { 8 } +} + +TEXTURE(NAME="bintA_tex") +{ + MAP {"bintA"} + MAGNIFY {BILINEAR} +} + +RAMP(NAME="grass") +{ + DATA {0.05, 0.1, 0.05, 0.65, 0.45, 0.4} +} + +MATERIAL(NAME="grass_mtl") +{ + TEXTURE {"grassc_tex"} + RAMP {"grass"} +} + +MATERIAL(NAME="tree_mtl") +{ + TEXTURE {"tree9_tex"} + AMBIENT {1, 0.15, 0.131} + DIFFUSE {1, 0.15, 0.131} +} + +MATERIAL(NAME="trunk_mtl") +{ + TEXTURE {"bintA_tex"} + AMBIENT {0.1898, 0.088563, 0} + DIFFUSE {0.1898, 0.064105, 0} +} + +MATERIAL(NAME="leaves_mtl") +{ + TEXTURE {"tree9_tex"} + AMBIENT {1, 0.651, 0.531} + DIFFUSE {1, 0.651, 0.531} +} + diff --git a/CONTENT/BT/VIDEO/MAT/DIVISION.SAV/RAVINES.BMF b/CONTENT/BT/VIDEO/MAT/DIVISION.SAV/RAVINES.BMF new file mode 100644 index 0000000..43285a6 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/DIVISION.SAV/RAVINES.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/DIVISION.SAV/RAVINES.VMF b/CONTENT/BT/VIDEO/MAT/DIVISION.SAV/RAVINES.VMF new file mode 100644 index 0000000..d1c767c --- /dev/null +++ b/CONTENT/BT/VIDEO/MAT/DIVISION.SAV/RAVINES.VMF @@ -0,0 +1,50 @@ +DIV-VIZ2 +HEADER +( + VERSION=2:08; + DATE=8:2:97; + TIME=1:39; + FILETYPE=MATERIAL +) +{ +} + +TEXTURE(NAME="bdinta_tex") +{ + MAP {"bdinta"} + MAGNIFY {BILINEAR} +} + +TEXTURE(NAME="bdintb_tex") +{ + MAP {"bdintb"} + MAGNIFY {BILINEAR} +} + +RAMP(NAME="dust") +{ + DATA {0.285, 0.21, 0.2, 0.75, 0.5, 0.4} +} + +RAMP(NAME="rock") +{ + DATA {0.25, 0.21, 0.21, 0.8, 0.5, 0.4} +} + +MATERIAL(NAME="ravinerock_mtl") +{ + TEXTURE {"bdinta_tex"} + AMBIENT {1, 1, 1} + DIFFUSE {1, 1, 1} + RAMP {"rock"} +} + +MATERIAL(NAME="ravinerubble_mtl") +{ + TEXTURE {"bdintb_tex"} + AMBIENT {1, 1, 1} + DIFFUSE {1, 1, 1} + RAMP {"dust"} +} + + \ No newline at end of file diff --git a/CONTENT/BT/VIDEO/MAT/DUMMY.BMF b/CONTENT/BT/VIDEO/MAT/DUMMY.BMF new file mode 100644 index 0000000..82bfbaf Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/DUMMY.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/EVENING/BTPOLAR.BMF b/CONTENT/BT/VIDEO/MAT/EVENING/BTPOLAR.BMF new file mode 100644 index 0000000..574c002 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/EVENING/BTPOLAR.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/EVENING/DIVISION.SAV/BTFX.BMF b/CONTENT/BT/VIDEO/MAT/EVENING/DIVISION.SAV/BTFX.BMF new file mode 100644 index 0000000..13e948b Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/EVENING/DIVISION.SAV/BTFX.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/EVENING/DIVISION.SAV/GRASS.BMF b/CONTENT/BT/VIDEO/MAT/EVENING/DIVISION.SAV/GRASS.BMF new file mode 100644 index 0000000..c11f95b Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/EVENING/DIVISION.SAV/GRASS.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/EVENING/DIVISION.SAV/RAVINES.BMF b/CONTENT/BT/VIDEO/MAT/EVENING/DIVISION.SAV/RAVINES.BMF new file mode 100644 index 0000000..327ccff Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/EVENING/DIVISION.SAV/RAVINES.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/EVENING/GRASS.BMF b/CONTENT/BT/VIDEO/MAT/EVENING/GRASS.BMF new file mode 100644 index 0000000..37aeef7 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/EVENING/GRASS.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/EVENING/GRASS.VMF b/CONTENT/BT/VIDEO/MAT/EVENING/GRASS.VMF new file mode 100644 index 0000000..19592a0 --- /dev/null +++ b/CONTENT/BT/VIDEO/MAT/EVENING/GRASS.VMF @@ -0,0 +1,71 @@ +DIV-VIZ2 +HEADER +( + VERSION=2:08; + DATE=5:3:97; + TIME=23:48; + FILETYPE=MATERIAL +) +{ +} + +TEXTURE(NAME="grassc_tex") +{ + MAP {"grassc"} + MAGNIFY {BILINEAR} +} + +TEXTURE(NAME="tree9_tex") +{ + MAP {"tree"} + BITSLICE { 8 } +} + +TEXTURE(NAME="bintA_tex") +{ + MAP {"bintA"} + MAGNIFY {BILINEAR} +} + +RAMP(NAME="grass") +{ + DATA {0.2, 0.27, 0.2, 0.54, 0.42, 0.4} +} + +MATERIAL(NAME="grass_mtl") +{ + TEXTURE {"grassc_tex"} + AMBIENT {0.45, 0.3, 0.041372} + DIFFUSE {0.45, 0.3, 0.041372} + RAMP {"grass"} +} + +MATERIAL(NAME="tree_mtl") +{ + TEXTURE {"tree9_tex"} + AMBIENT {0.8, 0.1, 00} + DIFFUSE {0.8, 0.1, 00} +} + +MATERIAL(NAME="trunk_mtl") +{ + TEXTURE {"bintA_tex"} + AMBIENT {0.1898, 0.088563, 0} + DIFFUSE {0.1898, 0.064105, 0} +} + +MATERIAL(NAME="rings_mtl") +{ + TEXTURE {"bintA_tex"} + AMBIENT {0.13898, 0.0188563, 0.051} + DIFFUSE {0.13898, 0.0164105, 0.051} +} + +MATERIAL(NAME="leaves_mtl") +{ + TEXTURE {"tree9_tex"} + AMBIENT {0.6, 0.2651, 0.2531} + DIFFUSE {0.6, 0.2651, 0.2531} +} + + \ No newline at end of file diff --git a/CONTENT/BT/VIDEO/MAT/EVENING/RAVINES.BMF b/CONTENT/BT/VIDEO/MAT/EVENING/RAVINES.BMF new file mode 100644 index 0000000..532b5d0 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/EVENING/RAVINES.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/EVENING/RAVINES.VMF b/CONTENT/BT/VIDEO/MAT/EVENING/RAVINES.VMF new file mode 100644 index 0000000..ab309f4 --- /dev/null +++ b/CONTENT/BT/VIDEO/MAT/EVENING/RAVINES.VMF @@ -0,0 +1,62 @@ +DIV-VIZ2 +HEADER +( + VERSION=2:08; + DATE=8:2:97; + TIME=1:39; + FILETYPE=MATERIAL +) +{ +} + +TEXTURE(NAME="bdinta_tex") +{ + MAP {"bdinta"} + MAGNIFY {BILINEAR} +} + +TEXTURE(NAME="bdintb_tex") +{ + MAP {"bdintb"} + MAGNIFY {BILINEAR} +} + +RAMP(NAME="dust") +{ + DATA {0.21, 0.11, 0.02, 0.5, 0.2, 0.07} +} + +RAMP(NAME="rock") +{ + DATA {0.1875, 0.11, 0.02, 0.5, 0.2, 0.07} +} + +MATERIAL(NAME="ravinerock_mtl") +{ + TEXTURE {"bdinta_tex"} + RAMP {"rock"} +} + +MATERIAL(NAME="ravinerubble_mtl") +{ + TEXTURE {"bdintb_tex"} + RAMP {"dust"} +} + +MATERIAL(NAME="tarmac_mtl") +{ + TEXTURE {"bdintb_tex"} + AMBIENT {0.4143, 0.417459, 0.417143} + DIFFUSE {0.4143, 0.415668, 0.417143} + RAMP {"dust"} +} + +MATERIAL(NAME="dirt_mtl") +{ + TEXTURE {"bdintb_tex"} + AMBIENT {0.8, 0.8, 0.8} + DIFFUSE {0.8, 0.8, 0.8} + RAMP {"dust"} +} + + \ No newline at end of file diff --git a/CONTENT/BT/VIDEO/MAT/FIRFX.BMF b/CONTENT/BT/VIDEO/MAT/FIRFX.BMF new file mode 100644 index 0000000..effb09c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIRFX.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIRSKIN.BMF b/CONTENT/BT/VIDEO/MAT/FIRSKIN.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIRSKIN.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIRSKIN0.BMF b/CONTENT/BT/VIDEO/MAT/FIRSKIN0.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIRSKIN0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIRSKIN1.BMF b/CONTENT/BT/VIDEO/MAT/FIRSKIN1.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIRSKIN1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIRSKIN2.BMF b/CONTENT/BT/VIDEO/MAT/FIRSKIN2.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIRSKIN2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIRSKIN3.BMF b/CONTENT/BT/VIDEO/MAT/FIRSKIN3.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIRSKIN3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIRSKIN4.BMF b/CONTENT/BT/VIDEO/MAT/FIRSKIN4.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIRSKIN4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIRSKIN5.BMF b/CONTENT/BT/VIDEO/MAT/FIRSKIN5.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIRSKIN5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIRSKIN6.BMF b/CONTENT/BT/VIDEO/MAT/FIRSKIN6.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIRSKIN6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIRSKIN7.BMF b/CONTENT/BT/VIDEO/MAT/FIRSKIN7.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIRSKIN7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIR_BLK0.BMF b/CONTENT/BT/VIDEO/MAT/FIR_BLK0.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIR_BLK0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIR_BLK1.BMF b/CONTENT/BT/VIDEO/MAT/FIR_BLK1.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIR_BLK1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIR_BLK2.BMF b/CONTENT/BT/VIDEO/MAT/FIR_BLK2.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIR_BLK2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIR_BLK3.BMF b/CONTENT/BT/VIDEO/MAT/FIR_BLK3.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIR_BLK3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIR_BLK4.BMF b/CONTENT/BT/VIDEO/MAT/FIR_BLK4.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIR_BLK4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIR_BLK5.BMF b/CONTENT/BT/VIDEO/MAT/FIR_BLK5.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIR_BLK5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIR_BLK6.BMF b/CONTENT/BT/VIDEO/MAT/FIR_BLK6.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIR_BLK6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIR_BLK7.BMF b/CONTENT/BT/VIDEO/MAT/FIR_BLK7.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIR_BLK7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIR_BRN0.BMF b/CONTENT/BT/VIDEO/MAT/FIR_BRN0.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIR_BRN0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIR_BRN1.BMF b/CONTENT/BT/VIDEO/MAT/FIR_BRN1.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIR_BRN1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIR_BRN2.BMF b/CONTENT/BT/VIDEO/MAT/FIR_BRN2.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIR_BRN2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIR_BRN3.BMF b/CONTENT/BT/VIDEO/MAT/FIR_BRN3.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIR_BRN3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIR_BRN4.BMF b/CONTENT/BT/VIDEO/MAT/FIR_BRN4.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIR_BRN4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIR_BRN5.BMF b/CONTENT/BT/VIDEO/MAT/FIR_BRN5.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIR_BRN5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIR_BRN6.BMF b/CONTENT/BT/VIDEO/MAT/FIR_BRN6.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIR_BRN6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIR_BRN7.BMF b/CONTENT/BT/VIDEO/MAT/FIR_BRN7.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIR_BRN7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIR_GRN0.BMF b/CONTENT/BT/VIDEO/MAT/FIR_GRN0.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIR_GRN0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIR_GRN1.BMF b/CONTENT/BT/VIDEO/MAT/FIR_GRN1.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIR_GRN1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIR_GRN2.BMF b/CONTENT/BT/VIDEO/MAT/FIR_GRN2.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIR_GRN2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIR_GRN3.BMF b/CONTENT/BT/VIDEO/MAT/FIR_GRN3.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIR_GRN3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIR_GRN4.BMF b/CONTENT/BT/VIDEO/MAT/FIR_GRN4.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIR_GRN4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIR_GRN5.BMF b/CONTENT/BT/VIDEO/MAT/FIR_GRN5.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIR_GRN5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIR_GRN6.BMF b/CONTENT/BT/VIDEO/MAT/FIR_GRN6.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIR_GRN6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIR_GRN7.BMF b/CONTENT/BT/VIDEO/MAT/FIR_GRN7.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIR_GRN7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIR_GRY0.BMF b/CONTENT/BT/VIDEO/MAT/FIR_GRY0.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIR_GRY0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIR_GRY2.BMF b/CONTENT/BT/VIDEO/MAT/FIR_GRY2.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIR_GRY2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIR_GRY3.BMF b/CONTENT/BT/VIDEO/MAT/FIR_GRY3.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIR_GRY3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIR_GRY4.BMF b/CONTENT/BT/VIDEO/MAT/FIR_GRY4.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIR_GRY4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIR_GRY5.BMF b/CONTENT/BT/VIDEO/MAT/FIR_GRY5.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIR_GRY5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIR_GRY6.BMF b/CONTENT/BT/VIDEO/MAT/FIR_GRY6.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIR_GRY6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIR_GRY7.BMF b/CONTENT/BT/VIDEO/MAT/FIR_GRY7.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIR_GRY7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIR_RED0.BMF b/CONTENT/BT/VIDEO/MAT/FIR_RED0.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIR_RED0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIR_RED1.BMF b/CONTENT/BT/VIDEO/MAT/FIR_RED1.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIR_RED1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIR_RED2.BMF b/CONTENT/BT/VIDEO/MAT/FIR_RED2.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIR_RED2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIR_RED3.BMF b/CONTENT/BT/VIDEO/MAT/FIR_RED3.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIR_RED3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIR_RED4.BMF b/CONTENT/BT/VIDEO/MAT/FIR_RED4.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIR_RED4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIR_RED5.BMF b/CONTENT/BT/VIDEO/MAT/FIR_RED5.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIR_RED5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIR_RED6.BMF b/CONTENT/BT/VIDEO/MAT/FIR_RED6.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIR_RED6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIR_RED7.BMF b/CONTENT/BT/VIDEO/MAT/FIR_RED7.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIR_RED7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIR_TAN0.BMF b/CONTENT/BT/VIDEO/MAT/FIR_TAN0.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIR_TAN0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIR_TAN1.BMF b/CONTENT/BT/VIDEO/MAT/FIR_TAN1.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIR_TAN1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIR_TAN2.BMF b/CONTENT/BT/VIDEO/MAT/FIR_TAN2.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIR_TAN2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIR_TAN3.BMF b/CONTENT/BT/VIDEO/MAT/FIR_TAN3.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIR_TAN3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIR_TAN4.BMF b/CONTENT/BT/VIDEO/MAT/FIR_TAN4.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIR_TAN4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIR_TAN5.BMF b/CONTENT/BT/VIDEO/MAT/FIR_TAN5.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIR_TAN5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIR_TAN6.BMF b/CONTENT/BT/VIDEO/MAT/FIR_TAN6.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIR_TAN6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIR_TAN7.BMF b/CONTENT/BT/VIDEO/MAT/FIR_TAN7.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIR_TAN7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIR_WHT0.BMF b/CONTENT/BT/VIDEO/MAT/FIR_WHT0.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIR_WHT0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIR_WHT1.BMF b/CONTENT/BT/VIDEO/MAT/FIR_WHT1.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIR_WHT1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIR_WHT2.BMF b/CONTENT/BT/VIDEO/MAT/FIR_WHT2.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIR_WHT2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIR_WHT3.BMF b/CONTENT/BT/VIDEO/MAT/FIR_WHT3.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIR_WHT3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIR_WHT4.BMF b/CONTENT/BT/VIDEO/MAT/FIR_WHT4.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIR_WHT4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIR_WHT5.BMF b/CONTENT/BT/VIDEO/MAT/FIR_WHT5.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIR_WHT5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIR_WHT6.BMF b/CONTENT/BT/VIDEO/MAT/FIR_WHT6.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIR_WHT6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIR_WHT7.BMF b/CONTENT/BT/VIDEO/MAT/FIR_WHT7.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIR_WHT7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIXSKIN.BMF b/CONTENT/BT/VIDEO/MAT/FIXSKIN.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIXSKIN.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIXSKIN0.BMF b/CONTENT/BT/VIDEO/MAT/FIXSKIN0.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIXSKIN0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIXSKIN1.BMF b/CONTENT/BT/VIDEO/MAT/FIXSKIN1.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIXSKIN1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIXSKIN2.BMF b/CONTENT/BT/VIDEO/MAT/FIXSKIN2.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIXSKIN2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIXSKIN3.BMF b/CONTENT/BT/VIDEO/MAT/FIXSKIN3.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIXSKIN3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIXSKIN4.BMF b/CONTENT/BT/VIDEO/MAT/FIXSKIN4.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIXSKIN4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIXSKIN5.BMF b/CONTENT/BT/VIDEO/MAT/FIXSKIN5.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIXSKIN5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIXSKIN6.BMF b/CONTENT/BT/VIDEO/MAT/FIXSKIN6.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIXSKIN6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIXSKIN7.BMF b/CONTENT/BT/VIDEO/MAT/FIXSKIN7.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIXSKIN7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIX_BLK0.BMF b/CONTENT/BT/VIDEO/MAT/FIX_BLK0.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIX_BLK0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIX_BLK1.BMF b/CONTENT/BT/VIDEO/MAT/FIX_BLK1.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIX_BLK1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIX_BLK2.BMF b/CONTENT/BT/VIDEO/MAT/FIX_BLK2.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIX_BLK2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIX_BLK3.BMF b/CONTENT/BT/VIDEO/MAT/FIX_BLK3.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIX_BLK3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIX_BLK4.BMF b/CONTENT/BT/VIDEO/MAT/FIX_BLK4.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIX_BLK4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIX_BLK5.BMF b/CONTENT/BT/VIDEO/MAT/FIX_BLK5.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIX_BLK5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIX_BLK6.BMF b/CONTENT/BT/VIDEO/MAT/FIX_BLK6.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIX_BLK6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIX_BLK7.BMF b/CONTENT/BT/VIDEO/MAT/FIX_BLK7.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIX_BLK7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIX_BRN0.BMF b/CONTENT/BT/VIDEO/MAT/FIX_BRN0.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIX_BRN0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIX_BRN1.BMF b/CONTENT/BT/VIDEO/MAT/FIX_BRN1.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIX_BRN1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIX_BRN2.BMF b/CONTENT/BT/VIDEO/MAT/FIX_BRN2.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIX_BRN2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIX_BRN3.BMF b/CONTENT/BT/VIDEO/MAT/FIX_BRN3.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIX_BRN3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIX_BRN4.BMF b/CONTENT/BT/VIDEO/MAT/FIX_BRN4.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIX_BRN4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIX_BRN5.BMF b/CONTENT/BT/VIDEO/MAT/FIX_BRN5.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIX_BRN5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIX_BRN6.BMF b/CONTENT/BT/VIDEO/MAT/FIX_BRN6.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIX_BRN6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIX_BRN7.BMF b/CONTENT/BT/VIDEO/MAT/FIX_BRN7.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIX_BRN7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIX_GRN0.BMF b/CONTENT/BT/VIDEO/MAT/FIX_GRN0.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIX_GRN0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIX_GRN1.BMF b/CONTENT/BT/VIDEO/MAT/FIX_GRN1.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIX_GRN1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIX_GRN2.BMF b/CONTENT/BT/VIDEO/MAT/FIX_GRN2.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIX_GRN2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIX_GRN3.BMF b/CONTENT/BT/VIDEO/MAT/FIX_GRN3.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIX_GRN3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIX_GRN4.BMF b/CONTENT/BT/VIDEO/MAT/FIX_GRN4.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIX_GRN4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIX_GRN5.BMF b/CONTENT/BT/VIDEO/MAT/FIX_GRN5.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIX_GRN5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIX_GRN6.BMF b/CONTENT/BT/VIDEO/MAT/FIX_GRN6.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIX_GRN6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIX_GRN7.BMF b/CONTENT/BT/VIDEO/MAT/FIX_GRN7.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIX_GRN7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIX_GRY0.BMF b/CONTENT/BT/VIDEO/MAT/FIX_GRY0.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIX_GRY0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIX_GRY1.BMF b/CONTENT/BT/VIDEO/MAT/FIX_GRY1.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIX_GRY1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIX_GRY2.BMF b/CONTENT/BT/VIDEO/MAT/FIX_GRY2.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIX_GRY2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIX_GRY3.BMF b/CONTENT/BT/VIDEO/MAT/FIX_GRY3.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIX_GRY3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIX_GRY4.BMF b/CONTENT/BT/VIDEO/MAT/FIX_GRY4.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIX_GRY4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIX_GRY5.BMF b/CONTENT/BT/VIDEO/MAT/FIX_GRY5.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIX_GRY5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIX_GRY6.BMF b/CONTENT/BT/VIDEO/MAT/FIX_GRY6.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIX_GRY6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIX_GRY7.BMF b/CONTENT/BT/VIDEO/MAT/FIX_GRY7.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIX_GRY7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIX_RED0.BMF b/CONTENT/BT/VIDEO/MAT/FIX_RED0.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIX_RED0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIX_RED1.BMF b/CONTENT/BT/VIDEO/MAT/FIX_RED1.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIX_RED1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIX_RED2.BMF b/CONTENT/BT/VIDEO/MAT/FIX_RED2.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIX_RED2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIX_RED3.BMF b/CONTENT/BT/VIDEO/MAT/FIX_RED3.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIX_RED3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIX_RED4.BMF b/CONTENT/BT/VIDEO/MAT/FIX_RED4.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIX_RED4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIX_RED5.BMF b/CONTENT/BT/VIDEO/MAT/FIX_RED5.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIX_RED5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIX_RED6.BMF b/CONTENT/BT/VIDEO/MAT/FIX_RED6.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIX_RED6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIX_RED7.BMF b/CONTENT/BT/VIDEO/MAT/FIX_RED7.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIX_RED7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIX_TAN0.BMF b/CONTENT/BT/VIDEO/MAT/FIX_TAN0.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIX_TAN0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIX_TAN1.BMF b/CONTENT/BT/VIDEO/MAT/FIX_TAN1.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIX_TAN1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIX_TAN2.BMF b/CONTENT/BT/VIDEO/MAT/FIX_TAN2.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIX_TAN2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIX_TAN3.BMF b/CONTENT/BT/VIDEO/MAT/FIX_TAN3.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIX_TAN3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIX_TAN4.BMF b/CONTENT/BT/VIDEO/MAT/FIX_TAN4.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIX_TAN4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIX_TAN5.BMF b/CONTENT/BT/VIDEO/MAT/FIX_TAN5.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIX_TAN5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIX_TAN6.BMF b/CONTENT/BT/VIDEO/MAT/FIX_TAN6.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIX_TAN6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIX_TAN7.BMF b/CONTENT/BT/VIDEO/MAT/FIX_TAN7.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIX_TAN7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIX_WHT0.BMF b/CONTENT/BT/VIDEO/MAT/FIX_WHT0.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIX_WHT0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIX_WHT1.BMF b/CONTENT/BT/VIDEO/MAT/FIX_WHT1.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIX_WHT1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIX_WHT2.BMF b/CONTENT/BT/VIDEO/MAT/FIX_WHT2.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIX_WHT2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIX_WHT3.BMF b/CONTENT/BT/VIDEO/MAT/FIX_WHT3.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIX_WHT3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIX_WHT4.BMF b/CONTENT/BT/VIDEO/MAT/FIX_WHT4.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIX_WHT4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIX_WHT5.BMF b/CONTENT/BT/VIDEO/MAT/FIX_WHT5.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIX_WHT5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIX_WHT6.BMF b/CONTENT/BT/VIDEO/MAT/FIX_WHT6.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIX_WHT6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/FIX_WHT7.BMF b/CONTENT/BT/VIDEO/MAT/FIX_WHT7.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/FIX_WHT7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/GRASS.BMF b/CONTENT/BT/VIDEO/MAT/GRASS.BMF new file mode 100644 index 0000000..1536daf Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/GRASS.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/GRASS.VMF b/CONTENT/BT/VIDEO/MAT/GRASS.VMF new file mode 100644 index 0000000..5de05d7 --- /dev/null +++ b/CONTENT/BT/VIDEO/MAT/GRASS.VMF @@ -0,0 +1,68 @@ +DIV-VIZ2 +HEADER +( + VERSION=2:08; + DATE=5:3:97; + TIME=23:48; + FILETYPE=MATERIAL +) +{ +} + +TEXTURE(NAME="grassc_tex") +{ + MAP {"grassc"} + MAGNIFY {BILINEAR} +} + +TEXTURE(NAME="tree9_tex") +{ + MAP {"tree"} + BITSLICE { 8 } +} + +TEXTURE(NAME="bintA_tex") +{ + MAP {"bintA"} + MAGNIFY {BILINEAR} +} + +RAMP(NAME="grass") +{ + DATA {0.1, 0.17, 0.1, 0.54, 0.42, 0.4} +} + +MATERIAL(NAME="grass_mtl") +{ + TEXTURE {"grassc_tex"} + RAMP {"grass"} +} + +MATERIAL(NAME="tree_mtl") +{ + TEXTURE {"tree9_tex"} + AMBIENT {1, 0.15, 0.131} + DIFFUSE {1, 0.15, 0.131} +} + +MATERIAL(NAME="trunk_mtl") +{ + TEXTURE {"bintA_tex"} + AMBIENT {0.1898, 0.088563, 0} + DIFFUSE {0.1898, 0.064105, 0} +} + +MATERIAL(NAME="rings_mtl") +{ + TEXTURE {"bintA_tex"} + AMBIENT {0.3898, 0.188563, 0.051} + DIFFUSE {0.3898, 0.164105, 0.051} +} + +MATERIAL(NAME="leaves_mtl") +{ + TEXTURE {"tree9_tex"} + AMBIENT {1, 0.651, 0.531} + DIFFUSE {1, 0.651, 0.531} +} + diff --git a/CONTENT/BT/VIDEO/MAT/JAKSKIN.BMF b/CONTENT/BT/VIDEO/MAT/JAKSKIN.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAKSKIN.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAKSKIN0.BMF b/CONTENT/BT/VIDEO/MAT/JAKSKIN0.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAKSKIN0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAKSKIN1.BMF b/CONTENT/BT/VIDEO/MAT/JAKSKIN1.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAKSKIN1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAKSKIN2.BMF b/CONTENT/BT/VIDEO/MAT/JAKSKIN2.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAKSKIN2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAKSKIN3.BMF b/CONTENT/BT/VIDEO/MAT/JAKSKIN3.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAKSKIN3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAKSKIN4.BMF b/CONTENT/BT/VIDEO/MAT/JAKSKIN4.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAKSKIN4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAKSKIN5.BMF b/CONTENT/BT/VIDEO/MAT/JAKSKIN5.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAKSKIN5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAKSKIN6.BMF b/CONTENT/BT/VIDEO/MAT/JAKSKIN6.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAKSKIN6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAKSKIN7.BMF b/CONTENT/BT/VIDEO/MAT/JAKSKIN7.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAKSKIN7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAK_BLK0.BMF b/CONTENT/BT/VIDEO/MAT/JAK_BLK0.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAK_BLK0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAK_BLK1.BMF b/CONTENT/BT/VIDEO/MAT/JAK_BLK1.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAK_BLK1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAK_BLK2.BMF b/CONTENT/BT/VIDEO/MAT/JAK_BLK2.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAK_BLK2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAK_BLK3.BMF b/CONTENT/BT/VIDEO/MAT/JAK_BLK3.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAK_BLK3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAK_BLK4.BMF b/CONTENT/BT/VIDEO/MAT/JAK_BLK4.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAK_BLK4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAK_BLK5.BMF b/CONTENT/BT/VIDEO/MAT/JAK_BLK5.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAK_BLK5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAK_BLK6.BMF b/CONTENT/BT/VIDEO/MAT/JAK_BLK6.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAK_BLK6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAK_BLK7.BMF b/CONTENT/BT/VIDEO/MAT/JAK_BLK7.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAK_BLK7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAK_BRN0.BMF b/CONTENT/BT/VIDEO/MAT/JAK_BRN0.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAK_BRN0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAK_BRN1.BMF b/CONTENT/BT/VIDEO/MAT/JAK_BRN1.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAK_BRN1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAK_BRN2.BMF b/CONTENT/BT/VIDEO/MAT/JAK_BRN2.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAK_BRN2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAK_BRN3.BMF b/CONTENT/BT/VIDEO/MAT/JAK_BRN3.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAK_BRN3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAK_BRN4.BMF b/CONTENT/BT/VIDEO/MAT/JAK_BRN4.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAK_BRN4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAK_BRN5.BMF b/CONTENT/BT/VIDEO/MAT/JAK_BRN5.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAK_BRN5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAK_BRN6.BMF b/CONTENT/BT/VIDEO/MAT/JAK_BRN6.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAK_BRN6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAK_BRN7.BMF b/CONTENT/BT/VIDEO/MAT/JAK_BRN7.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAK_BRN7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAK_GRN0.BMF b/CONTENT/BT/VIDEO/MAT/JAK_GRN0.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAK_GRN0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAK_GRN1.BMF b/CONTENT/BT/VIDEO/MAT/JAK_GRN1.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAK_GRN1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAK_GRN2.BMF b/CONTENT/BT/VIDEO/MAT/JAK_GRN2.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAK_GRN2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAK_GRN3.BMF b/CONTENT/BT/VIDEO/MAT/JAK_GRN3.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAK_GRN3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAK_GRN4.BMF b/CONTENT/BT/VIDEO/MAT/JAK_GRN4.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAK_GRN4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAK_GRN5.BMF b/CONTENT/BT/VIDEO/MAT/JAK_GRN5.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAK_GRN5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAK_GRN6.BMF b/CONTENT/BT/VIDEO/MAT/JAK_GRN6.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAK_GRN6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAK_GRN7.BMF b/CONTENT/BT/VIDEO/MAT/JAK_GRN7.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAK_GRN7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAK_GRY0.BMF b/CONTENT/BT/VIDEO/MAT/JAK_GRY0.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAK_GRY0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAK_GRY1.BMF b/CONTENT/BT/VIDEO/MAT/JAK_GRY1.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAK_GRY1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAK_GRY2.BMF b/CONTENT/BT/VIDEO/MAT/JAK_GRY2.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAK_GRY2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAK_GRY3.BMF b/CONTENT/BT/VIDEO/MAT/JAK_GRY3.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAK_GRY3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAK_GRY4.BMF b/CONTENT/BT/VIDEO/MAT/JAK_GRY4.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAK_GRY4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAK_GRY5.BMF b/CONTENT/BT/VIDEO/MAT/JAK_GRY5.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAK_GRY5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAK_GRY6.BMF b/CONTENT/BT/VIDEO/MAT/JAK_GRY6.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAK_GRY6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAK_GRY7.BMF b/CONTENT/BT/VIDEO/MAT/JAK_GRY7.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAK_GRY7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAK_RED0.BMF b/CONTENT/BT/VIDEO/MAT/JAK_RED0.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAK_RED0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAK_RED1.BMF b/CONTENT/BT/VIDEO/MAT/JAK_RED1.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAK_RED1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAK_RED2.BMF b/CONTENT/BT/VIDEO/MAT/JAK_RED2.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAK_RED2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAK_RED3.BMF b/CONTENT/BT/VIDEO/MAT/JAK_RED3.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAK_RED3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAK_RED4.BMF b/CONTENT/BT/VIDEO/MAT/JAK_RED4.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAK_RED4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAK_RED5.BMF b/CONTENT/BT/VIDEO/MAT/JAK_RED5.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAK_RED5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAK_RED6.BMF b/CONTENT/BT/VIDEO/MAT/JAK_RED6.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAK_RED6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAK_RED7.BMF b/CONTENT/BT/VIDEO/MAT/JAK_RED7.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAK_RED7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAK_TAN0.BMF b/CONTENT/BT/VIDEO/MAT/JAK_TAN0.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAK_TAN0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAK_TAN1.BMF b/CONTENT/BT/VIDEO/MAT/JAK_TAN1.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAK_TAN1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAK_TAN2.BMF b/CONTENT/BT/VIDEO/MAT/JAK_TAN2.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAK_TAN2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAK_TAN3.BMF b/CONTENT/BT/VIDEO/MAT/JAK_TAN3.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAK_TAN3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAK_TAN4.BMF b/CONTENT/BT/VIDEO/MAT/JAK_TAN4.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAK_TAN4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAK_TAN5.BMF b/CONTENT/BT/VIDEO/MAT/JAK_TAN5.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAK_TAN5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAK_TAN6.BMF b/CONTENT/BT/VIDEO/MAT/JAK_TAN6.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAK_TAN6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAK_TAN7.BMF b/CONTENT/BT/VIDEO/MAT/JAK_TAN7.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAK_TAN7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAK_WHT0.BMF b/CONTENT/BT/VIDEO/MAT/JAK_WHT0.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAK_WHT0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAK_WHT1.BMF b/CONTENT/BT/VIDEO/MAT/JAK_WHT1.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAK_WHT1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAK_WHT2.BMF b/CONTENT/BT/VIDEO/MAT/JAK_WHT2.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAK_WHT2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAK_WHT3.BMF b/CONTENT/BT/VIDEO/MAT/JAK_WHT3.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAK_WHT3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAK_WHT4.BMF b/CONTENT/BT/VIDEO/MAT/JAK_WHT4.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAK_WHT4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAK_WHT5.BMF b/CONTENT/BT/VIDEO/MAT/JAK_WHT5.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAK_WHT5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAK_WHT6.BMF b/CONTENT/BT/VIDEO/MAT/JAK_WHT6.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAK_WHT6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAK_WHT7.BMF b/CONTENT/BT/VIDEO/MAT/JAK_WHT7.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAK_WHT7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAXSKIN.BMF b/CONTENT/BT/VIDEO/MAT/JAXSKIN.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAXSKIN.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAXSKIN0.BMF b/CONTENT/BT/VIDEO/MAT/JAXSKIN0.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAXSKIN0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAXSKIN1.BMF b/CONTENT/BT/VIDEO/MAT/JAXSKIN1.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAXSKIN1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAXSKIN2.BMF b/CONTENT/BT/VIDEO/MAT/JAXSKIN2.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAXSKIN2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAXSKIN3.BMF b/CONTENT/BT/VIDEO/MAT/JAXSKIN3.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAXSKIN3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAXSKIN4.BMF b/CONTENT/BT/VIDEO/MAT/JAXSKIN4.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAXSKIN4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAXSKIN5.BMF b/CONTENT/BT/VIDEO/MAT/JAXSKIN5.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAXSKIN5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAXSKIN6.BMF b/CONTENT/BT/VIDEO/MAT/JAXSKIN6.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAXSKIN6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAXSKIN7.BMF b/CONTENT/BT/VIDEO/MAT/JAXSKIN7.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAXSKIN7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAX_BLK0.BMF b/CONTENT/BT/VIDEO/MAT/JAX_BLK0.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAX_BLK0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAX_BLK1.BMF b/CONTENT/BT/VIDEO/MAT/JAX_BLK1.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAX_BLK1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAX_BLK2.BMF b/CONTENT/BT/VIDEO/MAT/JAX_BLK2.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAX_BLK2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAX_BLK3.BMF b/CONTENT/BT/VIDEO/MAT/JAX_BLK3.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAX_BLK3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAX_BLK4.BMF b/CONTENT/BT/VIDEO/MAT/JAX_BLK4.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAX_BLK4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAX_BLK5.BMF b/CONTENT/BT/VIDEO/MAT/JAX_BLK5.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAX_BLK5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAX_BLK6.BMF b/CONTENT/BT/VIDEO/MAT/JAX_BLK6.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAX_BLK6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAX_BLK7.BMF b/CONTENT/BT/VIDEO/MAT/JAX_BLK7.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAX_BLK7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAX_BRN0.BMF b/CONTENT/BT/VIDEO/MAT/JAX_BRN0.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAX_BRN0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAX_BRN1.BMF b/CONTENT/BT/VIDEO/MAT/JAX_BRN1.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAX_BRN1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAX_BRN2.BMF b/CONTENT/BT/VIDEO/MAT/JAX_BRN2.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAX_BRN2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAX_BRN3.BMF b/CONTENT/BT/VIDEO/MAT/JAX_BRN3.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAX_BRN3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAX_BRN4.BMF b/CONTENT/BT/VIDEO/MAT/JAX_BRN4.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAX_BRN4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAX_BRN5.BMF b/CONTENT/BT/VIDEO/MAT/JAX_BRN5.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAX_BRN5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAX_BRN6.BMF b/CONTENT/BT/VIDEO/MAT/JAX_BRN6.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAX_BRN6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAX_BRN7.BMF b/CONTENT/BT/VIDEO/MAT/JAX_BRN7.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAX_BRN7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAX_GRN0.BMF b/CONTENT/BT/VIDEO/MAT/JAX_GRN0.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAX_GRN0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAX_GRN1.BMF b/CONTENT/BT/VIDEO/MAT/JAX_GRN1.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAX_GRN1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAX_GRN2.BMF b/CONTENT/BT/VIDEO/MAT/JAX_GRN2.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAX_GRN2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAX_GRN3.BMF b/CONTENT/BT/VIDEO/MAT/JAX_GRN3.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAX_GRN3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAX_GRN4.BMF b/CONTENT/BT/VIDEO/MAT/JAX_GRN4.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAX_GRN4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAX_GRN5.BMF b/CONTENT/BT/VIDEO/MAT/JAX_GRN5.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAX_GRN5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAX_GRN6.BMF b/CONTENT/BT/VIDEO/MAT/JAX_GRN6.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAX_GRN6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAX_GRN7.BMF b/CONTENT/BT/VIDEO/MAT/JAX_GRN7.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAX_GRN7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAX_GRY0.BMF b/CONTENT/BT/VIDEO/MAT/JAX_GRY0.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAX_GRY0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAX_GRY1.BMF b/CONTENT/BT/VIDEO/MAT/JAX_GRY1.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAX_GRY1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAX_GRY2.BMF b/CONTENT/BT/VIDEO/MAT/JAX_GRY2.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAX_GRY2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAX_GRY3.BMF b/CONTENT/BT/VIDEO/MAT/JAX_GRY3.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAX_GRY3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAX_GRY4.BMF b/CONTENT/BT/VIDEO/MAT/JAX_GRY4.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAX_GRY4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAX_GRY5.BMF b/CONTENT/BT/VIDEO/MAT/JAX_GRY5.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAX_GRY5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAX_GRY6.BMF b/CONTENT/BT/VIDEO/MAT/JAX_GRY6.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAX_GRY6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAX_GRY7.BMF b/CONTENT/BT/VIDEO/MAT/JAX_GRY7.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAX_GRY7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAX_RED0.BMF b/CONTENT/BT/VIDEO/MAT/JAX_RED0.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAX_RED0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAX_RED1.BMF b/CONTENT/BT/VIDEO/MAT/JAX_RED1.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAX_RED1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAX_RED2.BMF b/CONTENT/BT/VIDEO/MAT/JAX_RED2.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAX_RED2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAX_RED3.BMF b/CONTENT/BT/VIDEO/MAT/JAX_RED3.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAX_RED3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAX_RED4.BMF b/CONTENT/BT/VIDEO/MAT/JAX_RED4.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAX_RED4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAX_RED5.BMF b/CONTENT/BT/VIDEO/MAT/JAX_RED5.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAX_RED5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAX_RED6.BMF b/CONTENT/BT/VIDEO/MAT/JAX_RED6.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAX_RED6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAX_RED7.BMF b/CONTENT/BT/VIDEO/MAT/JAX_RED7.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAX_RED7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAX_TAN0.BMF b/CONTENT/BT/VIDEO/MAT/JAX_TAN0.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAX_TAN0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAX_TAN1.BMF b/CONTENT/BT/VIDEO/MAT/JAX_TAN1.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAX_TAN1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAX_TAN2.BMF b/CONTENT/BT/VIDEO/MAT/JAX_TAN2.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAX_TAN2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAX_TAN3.BMF b/CONTENT/BT/VIDEO/MAT/JAX_TAN3.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAX_TAN3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAX_TAN4.BMF b/CONTENT/BT/VIDEO/MAT/JAX_TAN4.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAX_TAN4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAX_TAN5.BMF b/CONTENT/BT/VIDEO/MAT/JAX_TAN5.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAX_TAN5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAX_TAN6.BMF b/CONTENT/BT/VIDEO/MAT/JAX_TAN6.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAX_TAN6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAX_TAN7.BMF b/CONTENT/BT/VIDEO/MAT/JAX_TAN7.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAX_TAN7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAX_WHT0.BMF b/CONTENT/BT/VIDEO/MAT/JAX_WHT0.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAX_WHT0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAX_WHT1.BMF b/CONTENT/BT/VIDEO/MAT/JAX_WHT1.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAX_WHT1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAX_WHT2.BMF b/CONTENT/BT/VIDEO/MAT/JAX_WHT2.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAX_WHT2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAX_WHT3.BMF b/CONTENT/BT/VIDEO/MAT/JAX_WHT3.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAX_WHT3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAX_WHT4.BMF b/CONTENT/BT/VIDEO/MAT/JAX_WHT4.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAX_WHT4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAX_WHT5.BMF b/CONTENT/BT/VIDEO/MAT/JAX_WHT5.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAX_WHT5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAX_WHT6.BMF b/CONTENT/BT/VIDEO/MAT/JAX_WHT6.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAX_WHT6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/JAX_WHT7.BMF b/CONTENT/BT/VIDEO/MAT/JAX_WHT7.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/JAX_WHT7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/LOKFX.BMF b/CONTENT/BT/VIDEO/MAT/LOKFX.BMF new file mode 100644 index 0000000..582cc14 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/LOKFX.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/LOKSKIN.BMF b/CONTENT/BT/VIDEO/MAT/LOKSKIN.BMF new file mode 100644 index 0000000..9d3fd5e Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/LOKSKIN.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/LOXSKIN.BMF b/CONTENT/BT/VIDEO/MAT/LOXSKIN.BMF new file mode 100644 index 0000000..c617aed Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/LOXSKIN.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/LOXSKIN0.BMF b/CONTENT/BT/VIDEO/MAT/LOXSKIN0.BMF new file mode 100644 index 0000000..c617aed Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/LOXSKIN0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/LOXSKIN1.BMF b/CONTENT/BT/VIDEO/MAT/LOXSKIN1.BMF new file mode 100644 index 0000000..c617aed Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/LOXSKIN1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/LOXSKIN2.BMF b/CONTENT/BT/VIDEO/MAT/LOXSKIN2.BMF new file mode 100644 index 0000000..c617aed Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/LOXSKIN2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/LOXSKIN3.BMF b/CONTENT/BT/VIDEO/MAT/LOXSKIN3.BMF new file mode 100644 index 0000000..c617aed Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/LOXSKIN3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/LOXSKIN4.BMF b/CONTENT/BT/VIDEO/MAT/LOXSKIN4.BMF new file mode 100644 index 0000000..c617aed Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/LOXSKIN4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/LOXSKIN5.BMF b/CONTENT/BT/VIDEO/MAT/LOXSKIN5.BMF new file mode 100644 index 0000000..c617aed Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/LOXSKIN5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/LOXSKIN6.BMF b/CONTENT/BT/VIDEO/MAT/LOXSKIN6.BMF new file mode 100644 index 0000000..c617aed Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/LOXSKIN6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/LOXSKIN7.BMF b/CONTENT/BT/VIDEO/MAT/LOXSKIN7.BMF new file mode 100644 index 0000000..c617aed Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/LOXSKIN7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/LOX_BLK0.BMF b/CONTENT/BT/VIDEO/MAT/LOX_BLK0.BMF new file mode 100644 index 0000000..c6a0156 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/LOX_BLK0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/LOX_BLK1.BMF b/CONTENT/BT/VIDEO/MAT/LOX_BLK1.BMF new file mode 100644 index 0000000..c6a0156 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/LOX_BLK1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/LOX_BLK2.BMF b/CONTENT/BT/VIDEO/MAT/LOX_BLK2.BMF new file mode 100644 index 0000000..c6a0156 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/LOX_BLK2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/LOX_BLK3.BMF b/CONTENT/BT/VIDEO/MAT/LOX_BLK3.BMF new file mode 100644 index 0000000..c6a0156 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/LOX_BLK3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/LOX_BLK4.BMF b/CONTENT/BT/VIDEO/MAT/LOX_BLK4.BMF new file mode 100644 index 0000000..c6a0156 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/LOX_BLK4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/LOX_BLK5.BMF b/CONTENT/BT/VIDEO/MAT/LOX_BLK5.BMF new file mode 100644 index 0000000..c6a0156 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/LOX_BLK5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/LOX_BLK6.BMF b/CONTENT/BT/VIDEO/MAT/LOX_BLK6.BMF new file mode 100644 index 0000000..c6a0156 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/LOX_BLK6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/LOX_BLK7.BMF b/CONTENT/BT/VIDEO/MAT/LOX_BLK7.BMF new file mode 100644 index 0000000..c6a0156 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/LOX_BLK7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/LOX_BRN0.BMF b/CONTENT/BT/VIDEO/MAT/LOX_BRN0.BMF new file mode 100644 index 0000000..daaf5db Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/LOX_BRN0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/LOX_BRN1.BMF b/CONTENT/BT/VIDEO/MAT/LOX_BRN1.BMF new file mode 100644 index 0000000..daaf5db Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/LOX_BRN1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/LOX_BRN2.BMF b/CONTENT/BT/VIDEO/MAT/LOX_BRN2.BMF new file mode 100644 index 0000000..daaf5db Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/LOX_BRN2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/LOX_BRN3.BMF b/CONTENT/BT/VIDEO/MAT/LOX_BRN3.BMF new file mode 100644 index 0000000..daaf5db Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/LOX_BRN3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/LOX_BRN4.BMF b/CONTENT/BT/VIDEO/MAT/LOX_BRN4.BMF new file mode 100644 index 0000000..daaf5db Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/LOX_BRN4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/LOX_BRN5.BMF b/CONTENT/BT/VIDEO/MAT/LOX_BRN5.BMF new file mode 100644 index 0000000..daaf5db Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/LOX_BRN5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/LOX_BRN6.BMF b/CONTENT/BT/VIDEO/MAT/LOX_BRN6.BMF new file mode 100644 index 0000000..daaf5db Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/LOX_BRN6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/LOX_BRN7.BMF b/CONTENT/BT/VIDEO/MAT/LOX_BRN7.BMF new file mode 100644 index 0000000..daaf5db Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/LOX_BRN7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/LOX_GRN0.BMF b/CONTENT/BT/VIDEO/MAT/LOX_GRN0.BMF new file mode 100644 index 0000000..b312cf0 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/LOX_GRN0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/LOX_GRN1.BMF b/CONTENT/BT/VIDEO/MAT/LOX_GRN1.BMF new file mode 100644 index 0000000..b312cf0 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/LOX_GRN1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/LOX_GRN2.BMF b/CONTENT/BT/VIDEO/MAT/LOX_GRN2.BMF new file mode 100644 index 0000000..b312cf0 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/LOX_GRN2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/LOX_GRN3.BMF b/CONTENT/BT/VIDEO/MAT/LOX_GRN3.BMF new file mode 100644 index 0000000..b312cf0 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/LOX_GRN3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/LOX_GRN4.BMF b/CONTENT/BT/VIDEO/MAT/LOX_GRN4.BMF new file mode 100644 index 0000000..b312cf0 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/LOX_GRN4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/LOX_GRN5.BMF b/CONTENT/BT/VIDEO/MAT/LOX_GRN5.BMF new file mode 100644 index 0000000..b312cf0 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/LOX_GRN5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/LOX_GRN6.BMF b/CONTENT/BT/VIDEO/MAT/LOX_GRN6.BMF new file mode 100644 index 0000000..b312cf0 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/LOX_GRN6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/LOX_GRN7.BMF b/CONTENT/BT/VIDEO/MAT/LOX_GRN7.BMF new file mode 100644 index 0000000..b312cf0 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/LOX_GRN7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/LOX_GRY0.BMF b/CONTENT/BT/VIDEO/MAT/LOX_GRY0.BMF new file mode 100644 index 0000000..3974501 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/LOX_GRY0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/LOX_GRY1.BMF b/CONTENT/BT/VIDEO/MAT/LOX_GRY1.BMF new file mode 100644 index 0000000..3974501 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/LOX_GRY1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/LOX_GRY2.BMF b/CONTENT/BT/VIDEO/MAT/LOX_GRY2.BMF new file mode 100644 index 0000000..3974501 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/LOX_GRY2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/LOX_GRY3.BMF b/CONTENT/BT/VIDEO/MAT/LOX_GRY3.BMF new file mode 100644 index 0000000..3974501 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/LOX_GRY3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/LOX_GRY4.BMF b/CONTENT/BT/VIDEO/MAT/LOX_GRY4.BMF new file mode 100644 index 0000000..3974501 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/LOX_GRY4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/LOX_GRY5.BMF b/CONTENT/BT/VIDEO/MAT/LOX_GRY5.BMF new file mode 100644 index 0000000..3974501 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/LOX_GRY5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/LOX_GRY6.BMF b/CONTENT/BT/VIDEO/MAT/LOX_GRY6.BMF new file mode 100644 index 0000000..3974501 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/LOX_GRY6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/LOX_GRY7.BMF b/CONTENT/BT/VIDEO/MAT/LOX_GRY7.BMF new file mode 100644 index 0000000..3974501 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/LOX_GRY7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/LOX_RED0.BMF b/CONTENT/BT/VIDEO/MAT/LOX_RED0.BMF new file mode 100644 index 0000000..7403bd6 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/LOX_RED0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/LOX_RED1.BMF b/CONTENT/BT/VIDEO/MAT/LOX_RED1.BMF new file mode 100644 index 0000000..7403bd6 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/LOX_RED1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/LOX_RED2.BMF b/CONTENT/BT/VIDEO/MAT/LOX_RED2.BMF new file mode 100644 index 0000000..7403bd6 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/LOX_RED2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/LOX_RED3.BMF b/CONTENT/BT/VIDEO/MAT/LOX_RED3.BMF new file mode 100644 index 0000000..7403bd6 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/LOX_RED3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/LOX_RED4.BMF b/CONTENT/BT/VIDEO/MAT/LOX_RED4.BMF new file mode 100644 index 0000000..7403bd6 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/LOX_RED4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/LOX_RED5.BMF b/CONTENT/BT/VIDEO/MAT/LOX_RED5.BMF new file mode 100644 index 0000000..7403bd6 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/LOX_RED5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/LOX_RED6.BMF b/CONTENT/BT/VIDEO/MAT/LOX_RED6.BMF new file mode 100644 index 0000000..7403bd6 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/LOX_RED6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/LOX_RED7.BMF b/CONTENT/BT/VIDEO/MAT/LOX_RED7.BMF new file mode 100644 index 0000000..7403bd6 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/LOX_RED7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/LOX_TAN0.BMF b/CONTENT/BT/VIDEO/MAT/LOX_TAN0.BMF new file mode 100644 index 0000000..f11ea5d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/LOX_TAN0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/LOX_TAN1.BMF b/CONTENT/BT/VIDEO/MAT/LOX_TAN1.BMF new file mode 100644 index 0000000..f11ea5d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/LOX_TAN1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/LOX_TAN2.BMF b/CONTENT/BT/VIDEO/MAT/LOX_TAN2.BMF new file mode 100644 index 0000000..f11ea5d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/LOX_TAN2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/LOX_TAN3.BMF b/CONTENT/BT/VIDEO/MAT/LOX_TAN3.BMF new file mode 100644 index 0000000..f11ea5d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/LOX_TAN3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/LOX_TAN4.BMF b/CONTENT/BT/VIDEO/MAT/LOX_TAN4.BMF new file mode 100644 index 0000000..f11ea5d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/LOX_TAN4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/LOX_TAN5.BMF b/CONTENT/BT/VIDEO/MAT/LOX_TAN5.BMF new file mode 100644 index 0000000..f11ea5d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/LOX_TAN5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/LOX_TAN6.BMF b/CONTENT/BT/VIDEO/MAT/LOX_TAN6.BMF new file mode 100644 index 0000000..f11ea5d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/LOX_TAN6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/LOX_TAN7.BMF b/CONTENT/BT/VIDEO/MAT/LOX_TAN7.BMF new file mode 100644 index 0000000..f11ea5d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/LOX_TAN7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/LOX_WHT0.BMF b/CONTENT/BT/VIDEO/MAT/LOX_WHT0.BMF new file mode 100644 index 0000000..39d9b82 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/LOX_WHT0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/LOX_WHT1.BMF b/CONTENT/BT/VIDEO/MAT/LOX_WHT1.BMF new file mode 100644 index 0000000..39d9b82 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/LOX_WHT1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/LOX_WHT2.BMF b/CONTENT/BT/VIDEO/MAT/LOX_WHT2.BMF new file mode 100644 index 0000000..39d9b82 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/LOX_WHT2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/LOX_WHT3.BMF b/CONTENT/BT/VIDEO/MAT/LOX_WHT3.BMF new file mode 100644 index 0000000..39d9b82 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/LOX_WHT3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/LOX_WHT4.BMF b/CONTENT/BT/VIDEO/MAT/LOX_WHT4.BMF new file mode 100644 index 0000000..39d9b82 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/LOX_WHT4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/LOX_WHT5.BMF b/CONTENT/BT/VIDEO/MAT/LOX_WHT5.BMF new file mode 100644 index 0000000..39d9b82 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/LOX_WHT5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/LOX_WHT6.BMF b/CONTENT/BT/VIDEO/MAT/LOX_WHT6.BMF new file mode 100644 index 0000000..39d9b82 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/LOX_WHT6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/LOX_WHT7.BMF b/CONTENT/BT/VIDEO/MAT/LOX_WHT7.BMF new file mode 100644 index 0000000..39d9b82 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/LOX_WHT7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/MADFX.BMF b/CONTENT/BT/VIDEO/MAT/MADFX.BMF new file mode 100644 index 0000000..d677902 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/MADFX.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/MADSKIN.BMF b/CONTENT/BT/VIDEO/MAT/MADSKIN.BMF new file mode 100644 index 0000000..2784f81 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/MADSKIN.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/MAXSKIN.BMF b/CONTENT/BT/VIDEO/MAT/MAXSKIN.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/MAXSKIN.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/MAXSKIN0.BMF b/CONTENT/BT/VIDEO/MAT/MAXSKIN0.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/MAXSKIN0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/MAXSKIN1.BMF b/CONTENT/BT/VIDEO/MAT/MAXSKIN1.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/MAXSKIN1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/MAXSKIN2.BMF b/CONTENT/BT/VIDEO/MAT/MAXSKIN2.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/MAXSKIN2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/MAXSKIN3.BMF b/CONTENT/BT/VIDEO/MAT/MAXSKIN3.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/MAXSKIN3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/MAXSKIN4.BMF b/CONTENT/BT/VIDEO/MAT/MAXSKIN4.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/MAXSKIN4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/MAXSKIN5.BMF b/CONTENT/BT/VIDEO/MAT/MAXSKIN5.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/MAXSKIN5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/MAXSKIN6.BMF b/CONTENT/BT/VIDEO/MAT/MAXSKIN6.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/MAXSKIN6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/MAXSKIN7.BMF b/CONTENT/BT/VIDEO/MAT/MAXSKIN7.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/MAXSKIN7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/MAX_BLK0.BMF b/CONTENT/BT/VIDEO/MAT/MAX_BLK0.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/MAX_BLK0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/MAX_BLK1.BMF b/CONTENT/BT/VIDEO/MAT/MAX_BLK1.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/MAX_BLK1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/MAX_BLK2.BMF b/CONTENT/BT/VIDEO/MAT/MAX_BLK2.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/MAX_BLK2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/MAX_BLK3.BMF b/CONTENT/BT/VIDEO/MAT/MAX_BLK3.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/MAX_BLK3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/MAX_BLK4.BMF b/CONTENT/BT/VIDEO/MAT/MAX_BLK4.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/MAX_BLK4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/MAX_BLK5.BMF b/CONTENT/BT/VIDEO/MAT/MAX_BLK5.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/MAX_BLK5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/MAX_BLK6.BMF b/CONTENT/BT/VIDEO/MAT/MAX_BLK6.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/MAX_BLK6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/MAX_BLK7.BMF b/CONTENT/BT/VIDEO/MAT/MAX_BLK7.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/MAX_BLK7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/MAX_BRN0.BMF b/CONTENT/BT/VIDEO/MAT/MAX_BRN0.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/MAX_BRN0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/MAX_BRN1.BMF b/CONTENT/BT/VIDEO/MAT/MAX_BRN1.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/MAX_BRN1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/MAX_BRN2.BMF b/CONTENT/BT/VIDEO/MAT/MAX_BRN2.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/MAX_BRN2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/MAX_BRN3.BMF b/CONTENT/BT/VIDEO/MAT/MAX_BRN3.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/MAX_BRN3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/MAX_BRN4.BMF b/CONTENT/BT/VIDEO/MAT/MAX_BRN4.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/MAX_BRN4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/MAX_BRN5.BMF b/CONTENT/BT/VIDEO/MAT/MAX_BRN5.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/MAX_BRN5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/MAX_BRN6.BMF b/CONTENT/BT/VIDEO/MAT/MAX_BRN6.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/MAX_BRN6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/MAX_BRN7.BMF b/CONTENT/BT/VIDEO/MAT/MAX_BRN7.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/MAX_BRN7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/MAX_GRN0.BMF b/CONTENT/BT/VIDEO/MAT/MAX_GRN0.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/MAX_GRN0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/MAX_GRN1.BMF b/CONTENT/BT/VIDEO/MAT/MAX_GRN1.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/MAX_GRN1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/MAX_GRN2.BMF b/CONTENT/BT/VIDEO/MAT/MAX_GRN2.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/MAX_GRN2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/MAX_GRN3.BMF b/CONTENT/BT/VIDEO/MAT/MAX_GRN3.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/MAX_GRN3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/MAX_GRN4.BMF b/CONTENT/BT/VIDEO/MAT/MAX_GRN4.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/MAX_GRN4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/MAX_GRN5.BMF b/CONTENT/BT/VIDEO/MAT/MAX_GRN5.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/MAX_GRN5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/MAX_GRN6.BMF b/CONTENT/BT/VIDEO/MAT/MAX_GRN6.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/MAX_GRN6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/MAX_GRN7.BMF b/CONTENT/BT/VIDEO/MAT/MAX_GRN7.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/MAX_GRN7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/MAX_GRY0.BMF b/CONTENT/BT/VIDEO/MAT/MAX_GRY0.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/MAX_GRY0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/MAX_GRY1.BMF b/CONTENT/BT/VIDEO/MAT/MAX_GRY1.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/MAX_GRY1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/MAX_GRY2.BMF b/CONTENT/BT/VIDEO/MAT/MAX_GRY2.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/MAX_GRY2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/MAX_GRY3.BMF b/CONTENT/BT/VIDEO/MAT/MAX_GRY3.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/MAX_GRY3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/MAX_GRY4.BMF b/CONTENT/BT/VIDEO/MAT/MAX_GRY4.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/MAX_GRY4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/MAX_GRY5.BMF b/CONTENT/BT/VIDEO/MAT/MAX_GRY5.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/MAX_GRY5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/MAX_GRY6.BMF b/CONTENT/BT/VIDEO/MAT/MAX_GRY6.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/MAX_GRY6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/MAX_GRY7.BMF b/CONTENT/BT/VIDEO/MAT/MAX_GRY7.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/MAX_GRY7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/MAX_RED0.BMF b/CONTENT/BT/VIDEO/MAT/MAX_RED0.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/MAX_RED0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/MAX_RED1.BMF b/CONTENT/BT/VIDEO/MAT/MAX_RED1.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/MAX_RED1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/MAX_RED2.BMF b/CONTENT/BT/VIDEO/MAT/MAX_RED2.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/MAX_RED2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/MAX_RED3.BMF b/CONTENT/BT/VIDEO/MAT/MAX_RED3.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/MAX_RED3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/MAX_RED4.BMF b/CONTENT/BT/VIDEO/MAT/MAX_RED4.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/MAX_RED4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/MAX_RED5.BMF b/CONTENT/BT/VIDEO/MAT/MAX_RED5.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/MAX_RED5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/MAX_RED6.BMF b/CONTENT/BT/VIDEO/MAT/MAX_RED6.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/MAX_RED6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/MAX_RED7.BMF b/CONTENT/BT/VIDEO/MAT/MAX_RED7.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/MAX_RED7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/MAX_TAN0.BMF b/CONTENT/BT/VIDEO/MAT/MAX_TAN0.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/MAX_TAN0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/MAX_TAN1.BMF b/CONTENT/BT/VIDEO/MAT/MAX_TAN1.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/MAX_TAN1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/MAX_TAN2.BMF b/CONTENT/BT/VIDEO/MAT/MAX_TAN2.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/MAX_TAN2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/MAX_TAN3.BMF b/CONTENT/BT/VIDEO/MAT/MAX_TAN3.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/MAX_TAN3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/MAX_TAN4.BMF b/CONTENT/BT/VIDEO/MAT/MAX_TAN4.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/MAX_TAN4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/MAX_TAN5.BMF b/CONTENT/BT/VIDEO/MAT/MAX_TAN5.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/MAX_TAN5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/MAX_TAN6.BMF b/CONTENT/BT/VIDEO/MAT/MAX_TAN6.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/MAX_TAN6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/MAX_TAN7.BMF b/CONTENT/BT/VIDEO/MAT/MAX_TAN7.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/MAX_TAN7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/MAX_WHT0.BMF b/CONTENT/BT/VIDEO/MAT/MAX_WHT0.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/MAX_WHT0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/MAX_WHT1.BMF b/CONTENT/BT/VIDEO/MAT/MAX_WHT1.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/MAX_WHT1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/MAX_WHT2.BMF b/CONTENT/BT/VIDEO/MAT/MAX_WHT2.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/MAX_WHT2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/MAX_WHT3.BMF b/CONTENT/BT/VIDEO/MAT/MAX_WHT3.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/MAX_WHT3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/MAX_WHT4.BMF b/CONTENT/BT/VIDEO/MAT/MAX_WHT4.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/MAX_WHT4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/MAX_WHT5.BMF b/CONTENT/BT/VIDEO/MAT/MAX_WHT5.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/MAX_WHT5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/MAX_WHT6.BMF b/CONTENT/BT/VIDEO/MAT/MAX_WHT6.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/MAX_WHT6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/MAX_WHT7.BMF b/CONTENT/BT/VIDEO/MAT/MAX_WHT7.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/MAX_WHT7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/MECHFX.BMF b/CONTENT/BT/VIDEO/MAT/MECHFX.BMF new file mode 100644 index 0000000..faeeb1d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/MECHFX.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/MORNING/BTFX.BMF b/CONTENT/BT/VIDEO/MAT/MORNING/BTFX.BMF new file mode 100644 index 0000000..db82128 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/MORNING/BTFX.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/MORNING/BTPOLAR.BMF b/CONTENT/BT/VIDEO/MAT/MORNING/BTPOLAR.BMF new file mode 100644 index 0000000..5e7ccf9 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/MORNING/BTPOLAR.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/MORNING/DIVISION.SAV/BTFX.BMF b/CONTENT/BT/VIDEO/MAT/MORNING/DIVISION.SAV/BTFX.BMF new file mode 100644 index 0000000..9491824 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/MORNING/DIVISION.SAV/BTFX.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/MORNING/DIVISION.SAV/GRASS.BMF b/CONTENT/BT/VIDEO/MAT/MORNING/DIVISION.SAV/GRASS.BMF new file mode 100644 index 0000000..a670637 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/MORNING/DIVISION.SAV/GRASS.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/MORNING/DIVISION.SAV/RAVINES.BMF b/CONTENT/BT/VIDEO/MAT/MORNING/DIVISION.SAV/RAVINES.BMF new file mode 100644 index 0000000..3c03fce Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/MORNING/DIVISION.SAV/RAVINES.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/MORNING/DIVISION.SAV/RAVINES.VMF b/CONTENT/BT/VIDEO/MAT/MORNING/DIVISION.SAV/RAVINES.VMF new file mode 100644 index 0000000..22360ca --- /dev/null +++ b/CONTENT/BT/VIDEO/MAT/MORNING/DIVISION.SAV/RAVINES.VMF @@ -0,0 +1,61 @@ +DIV-VIZ2 +HEADER +( + VERSION=2:08; + DATE=8:2:97; + TIME=1:39; + FILETYPE=MATERIAL +) +{ +} + +TEXTURE(NAME="bdinta_tex") +{ + MAP {"bdinta"} + MAGNIFY {BILINEAR} +} + +TEXTURE(NAME="bdintb_tex") +{ + MAP {"bdintb"} + MAGNIFY {BILINEAR} +} + +RAMP(NAME="dust") +{ + DATA {0.285, 0.21, 0.2, 0.75, 0.5, 0.4} +} + +RAMP(NAME="rock") +{ + DATA {0.25, 0.21, 0.21, 0.8, 0.5, 0.4} +} + +MATERIAL(NAME="ravinerock_mtl") +{ + TEXTURE {"bdinta_tex"} + RAMP {"rock"} +} + +MATERIAL(NAME="ravinerubble_mtl") +{ + TEXTURE {"bdintb_tex"} + RAMP {"dust"} +} + +MATERIAL(NAME="tarmac_mtl") +{ + TEXTURE {"bdintb_tex"} + AMBIENT {0.4143, 0.417459, 0.417143} + DIFFUSE {0.4143, 0.415668, 0.417143} + RAMP {"dust"} +} + +MATERIAL(NAME="dirt_mtl") +{ + TEXTURE {"bdintb_tex"} + AMBIENT {0.8, 0.8, 0.8} + DIFFUSE {0.8, 0.8, 0.8} + RAMP {"dust"} +} + diff --git a/CONTENT/BT/VIDEO/MAT/MORNING/GRASS.BMF b/CONTENT/BT/VIDEO/MAT/MORNING/GRASS.BMF new file mode 100644 index 0000000..6d5b955 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/MORNING/GRASS.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/MORNING/GRASS.VMF b/CONTENT/BT/VIDEO/MAT/MORNING/GRASS.VMF new file mode 100644 index 0000000..487e461 --- /dev/null +++ b/CONTENT/BT/VIDEO/MAT/MORNING/GRASS.VMF @@ -0,0 +1,71 @@ +DIV-VIZ2 +HEADER +( + VERSION=2:08; + DATE=5:3:97; + TIME=23:48; + FILETYPE=MATERIAL +) +{ +} + +TEXTURE(NAME="grassc_tex") +{ + MAP {"grassc"} + MAGNIFY {BILINEAR} +} + +TEXTURE(NAME="tree9_tex") +{ + MAP {"tree"} + BITSLICE { 8 } +} + +TEXTURE(NAME="bintA_tex") +{ + MAP {"bintA"} + MAGNIFY {BILINEAR} +} + +RAMP(NAME="grass") +{ + DATA {0.2, 0.27, 0.2, 0.54, 0.42, 0.4} +} + +MATERIAL(NAME="grass_mtl") +{ + TEXTURE {"grassc_tex"} + AMBIENT {0.5, 0.5, 0.86372} + DIFFUSE {0.5, 0.5, 0.86372} + RAMP {"grass"} +} + +MATERIAL(NAME="tree_mtl") +{ + TEXTURE {"tree9_tex"} + AMBIENT {0.8, 0.1, 00} + DIFFUSE {0.8, 0.1, 00} +} + +MATERIAL(NAME="trunk_mtl") +{ + TEXTURE {"bintA_tex"} + AMBIENT {0.1898, 0.088563, 0} + DIFFUSE {0.1898, 0.064105, 0} +} + +MATERIAL(NAME="rings_mtl") +{ + TEXTURE {"bintA_tex"} + AMBIENT {0.13898, 0.0188563, 0.051} + DIFFUSE {0.13898, 0.0164105, 0.051} +} + +MATERIAL(NAME="leaves_mtl") +{ + TEXTURE {"tree9_tex"} + AMBIENT {0.6, 0.2651, 0.2531} + DIFFUSE {0.6, 0.2651, 0.2531} +} + + \ No newline at end of file diff --git a/CONTENT/BT/VIDEO/MAT/MORNING/RAVINES.BMF b/CONTENT/BT/VIDEO/MAT/MORNING/RAVINES.BMF new file mode 100644 index 0000000..9f5765a Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/MORNING/RAVINES.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/MORNING/RAVINES.VMF b/CONTENT/BT/VIDEO/MAT/MORNING/RAVINES.VMF new file mode 100644 index 0000000..3ff362b --- /dev/null +++ b/CONTENT/BT/VIDEO/MAT/MORNING/RAVINES.VMF @@ -0,0 +1,62 @@ +DIV-VIZ2 +HEADER +( + VERSION=2:08; + DATE=8:2:97; + TIME=1:39; + FILETYPE=MATERIAL +) +{ +} + +TEXTURE(NAME="bdinta_tex") +{ + MAP {"bdinta"} + MAGNIFY {BILINEAR} +} + +TEXTURE(NAME="bdintb_tex") +{ + MAP {"bdintb"} + MAGNIFY {BILINEAR} +} + +RAMP(NAME="dust") +{ + DATA {0.14, 0.1, 0.25, 0.6, 0.4, 0.51} +} + +RAMP(NAME="rock") +{ + DATA {0.125, 0.1, 0.25, 0.62, 0.4, 0.52} +} + +MATERIAL(NAME="ravinerock_mtl") +{ + TEXTURE {"bdinta_tex"} + RAMP {"rock"} +} + +MATERIAL(NAME="ravinerubble_mtl") +{ + TEXTURE {"bdintb_tex"} + RAMP {"dust"} +} + +MATERIAL(NAME="tarmac_mtl") +{ + TEXTURE {"bdintb_tex"} + AMBIENT {0.4143, 0.417459, 0.417143} + DIFFUSE {0.4143, 0.415668, 0.417143} + RAMP {"dust"} +} + +MATERIAL(NAME="dirt_mtl") +{ + TEXTURE {"bdintb_tex"} + AMBIENT {0.8, 0.8, 0.8} + DIFFUSE {0.8, 0.8, 0.8} + RAMP {"dust"} +} + + \ No newline at end of file diff --git a/CONTENT/BT/VIDEO/MAT/NIGHT/BTFX.BMF b/CONTENT/BT/VIDEO/MAT/NIGHT/BTFX.BMF new file mode 100644 index 0000000..15373b4 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/NIGHT/BTFX.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/NIGHT/BTPOLAR.BMF b/CONTENT/BT/VIDEO/MAT/NIGHT/BTPOLAR.BMF new file mode 100644 index 0000000..de199db Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/NIGHT/BTPOLAR.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/NIGHT/DIVISION.SAV/BTFX.BMF b/CONTENT/BT/VIDEO/MAT/NIGHT/DIVISION.SAV/BTFX.BMF new file mode 100644 index 0000000..1d19f67 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/NIGHT/DIVISION.SAV/BTFX.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/NIGHT/DIVISION.SAV/GRASS.BMF b/CONTENT/BT/VIDEO/MAT/NIGHT/DIVISION.SAV/GRASS.BMF new file mode 100644 index 0000000..6d5b955 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/NIGHT/DIVISION.SAV/GRASS.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/NIGHT/DIVISION.SAV/RAVINES.BMF b/CONTENT/BT/VIDEO/MAT/NIGHT/DIVISION.SAV/RAVINES.BMF new file mode 100644 index 0000000..85e7021 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/NIGHT/DIVISION.SAV/RAVINES.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/NIGHT/DIVISION.SAV/RAVINES.VMF b/CONTENT/BT/VIDEO/MAT/NIGHT/DIVISION.SAV/RAVINES.VMF new file mode 100644 index 0000000..b4459b2 --- /dev/null +++ b/CONTENT/BT/VIDEO/MAT/NIGHT/DIVISION.SAV/RAVINES.VMF @@ -0,0 +1,61 @@ +DIV-VIZ2 +HEADER +( + VERSION=2:08; + DATE=8:2:97; + TIME=1:39; + FILETYPE=MATERIAL +) +{ +} + +TEXTURE(NAME="bdinta_tex") +{ + MAP {"bdinta"} + MAGNIFY {BILINEAR} +} + +TEXTURE(NAME="bdintb_tex") +{ + MAP {"bdintb"} + MAGNIFY {BILINEAR} +} + +RAMP(NAME="dust") +{ + DATA {0.21, 0.15, 0.15, 0.6, 0.3, 0.15} +} + +RAMP(NAME="rock") +{ + DATA {0.1875, 0.15, 0.15, 0.6, 0.3, 0.15} +} + +MATERIAL(NAME="ravinerock_mtl") +{ + TEXTURE {"bdinta_tex"} + RAMP {"rock"} +} + +MATERIAL(NAME="ravinerubble_mtl") +{ + TEXTURE {"bdintb_tex"} + RAMP {"dust"} +} + +MATERIAL(NAME="tarmac_mtl") +{ + TEXTURE {"bdintb_tex"} + AMBIENT {0.4143, 0.417459, 0.417143} + DIFFUSE {0.4143, 0.415668, 0.417143} + RAMP {"dust"} +} + +MATERIAL(NAME="dirt_mtl") +{ + TEXTURE {"bdintb_tex"} + AMBIENT {0.8, 0.8, 0.8} + DIFFUSE {0.8, 0.8, 0.8} + RAMP {"dust"} +} + diff --git a/CONTENT/BT/VIDEO/MAT/NIGHT/GRASS.BMF b/CONTENT/BT/VIDEO/MAT/NIGHT/GRASS.BMF new file mode 100644 index 0000000..f101fbf Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/NIGHT/GRASS.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/NIGHT/GRASS.VMF b/CONTENT/BT/VIDEO/MAT/NIGHT/GRASS.VMF new file mode 100644 index 0000000..6c4bf30 --- /dev/null +++ b/CONTENT/BT/VIDEO/MAT/NIGHT/GRASS.VMF @@ -0,0 +1,71 @@ +DIV-VIZ2 +HEADER +( + VERSION=2:08; + DATE=5:3:97; + TIME=23:48; + FILETYPE=MATERIAL +) +{ +} + +TEXTURE(NAME="grassc_tex") +{ + MAP {"grassc"} + MAGNIFY {BILINEAR} +} + +TEXTURE(NAME="tree9_tex") +{ + MAP {"tree"} + BITSLICE { 8 } +} + +TEXTURE(NAME="bintA_tex") +{ + MAP {"bintA"} + MAGNIFY {BILINEAR} +} + +RAMP(NAME="grass") +{ + DATA {0.08, 0.1, 0.02, 0.38, 0.33, 0.13} +} + +MATERIAL(NAME="grass_mtl") +{ + TEXTURE {"grassc_tex"} + AMBIENT {0.5, 0.5, 0.86372} + DIFFUSE {0.5, 0.5, 0.86372} + RAMP {"grass"} +} + +MATERIAL(NAME="tree_mtl") +{ + TEXTURE {"tree9_tex"} + AMBIENT {0.8, 0.1, 0} + DIFFUSE {0.8, 0.1, 0} +} + +MATERIAL(NAME="trunk_mtl") +{ + TEXTURE {"bintA_tex"} + AMBIENT {0.1898, 0.088563, 0} + DIFFUSE {0.1898, 0.064105, 0} +} + +MATERIAL(NAME="rings_mtl") +{ + TEXTURE {"bintA_tex"} + AMBIENT {0.13898, 0.018856, 0.051} + DIFFUSE {0.13898, 0.01641, 0.051} +} + +MATERIAL(NAME="leaves_mtl") +{ + TEXTURE {"tree9_tex"} + AMBIENT {0.6, 0.2651, 0.2531} + DIFFUSE {0.6, 0.2651, 0.2531} +} + + \ No newline at end of file diff --git a/CONTENT/BT/VIDEO/MAT/NIGHT/RAVINES.BMF b/CONTENT/BT/VIDEO/MAT/NIGHT/RAVINES.BMF new file mode 100644 index 0000000..fd7c13d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/NIGHT/RAVINES.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/NIGHT/RAVINES.VMF b/CONTENT/BT/VIDEO/MAT/NIGHT/RAVINES.VMF new file mode 100644 index 0000000..f0942e5 --- /dev/null +++ b/CONTENT/BT/VIDEO/MAT/NIGHT/RAVINES.VMF @@ -0,0 +1,62 @@ +DIV-VIZ2 +HEADER +( + VERSION=2:08; + DATE=8:2:97; + TIME=1:39; + FILETYPE=MATERIAL +) +{ +} + +TEXTURE(NAME="bdinta_tex") +{ + MAP {"bdinta"} + MAGNIFY {BILINEAR} +} + +TEXTURE(NAME="bdintb_tex") +{ + MAP {"bdintb"} + MAGNIFY {BILINEAR} +} + +RAMP(NAME="dust") +{ + DATA {0.14, 0.1, 0.1, 0.55, 0.3, 0.2} +} + +RAMP(NAME="rock") +{ + DATA {0.125, 0.1, 0.1, 0.58, 0.3, 0.2} +} + +MATERIAL(NAME="ravinerock_mtl") +{ + TEXTURE {"bdinta_tex"} + RAMP {"rock"} +} + +MATERIAL(NAME="ravinerubble_mtl") +{ + TEXTURE {"bdintb_tex"} + RAMP {"dust"} +} + +MATERIAL(NAME="tarmac_mtl") +{ + TEXTURE {"bdintb_tex"} + AMBIENT {0.4143, 0.417459, 0.417143} + DIFFUSE {0.4143, 0.415668, 0.417143} + RAMP {"dust"} +} + +MATERIAL(NAME="dirt_mtl") +{ + TEXTURE {"bdintb_tex"} + AMBIENT {0.8, 0.8, 0.8} + DIFFUSE {0.8, 0.8, 0.8} + RAMP {"dust"} +} + + \ No newline at end of file diff --git a/CONTENT/BT/VIDEO/MAT/OWNFX.BMF b/CONTENT/BT/VIDEO/MAT/OWNFX.BMF new file mode 100644 index 0000000..effb09c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/OWNFX.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/OWNSKIN.BMF b/CONTENT/BT/VIDEO/MAT/OWNSKIN.BMF new file mode 100644 index 0000000..ebea9c1 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/OWNSKIN.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/OWXSKIN.BMF b/CONTENT/BT/VIDEO/MAT/OWXSKIN.BMF new file mode 100644 index 0000000..21d5a66 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/OWXSKIN.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/OWXSKIN0.BMF b/CONTENT/BT/VIDEO/MAT/OWXSKIN0.BMF new file mode 100644 index 0000000..21d5a66 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/OWXSKIN0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/OWXSKIN1.BMF b/CONTENT/BT/VIDEO/MAT/OWXSKIN1.BMF new file mode 100644 index 0000000..21d5a66 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/OWXSKIN1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/OWXSKIN2.BMF b/CONTENT/BT/VIDEO/MAT/OWXSKIN2.BMF new file mode 100644 index 0000000..21d5a66 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/OWXSKIN2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/OWXSKIN3.BMF b/CONTENT/BT/VIDEO/MAT/OWXSKIN3.BMF new file mode 100644 index 0000000..21d5a66 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/OWXSKIN3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/OWXSKIN4.BMF b/CONTENT/BT/VIDEO/MAT/OWXSKIN4.BMF new file mode 100644 index 0000000..21d5a66 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/OWXSKIN4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/OWXSKIN5.BMF b/CONTENT/BT/VIDEO/MAT/OWXSKIN5.BMF new file mode 100644 index 0000000..21d5a66 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/OWXSKIN5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/OWXSKIN6.BMF b/CONTENT/BT/VIDEO/MAT/OWXSKIN6.BMF new file mode 100644 index 0000000..21d5a66 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/OWXSKIN6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/OWXSKIN7.BMF b/CONTENT/BT/VIDEO/MAT/OWXSKIN7.BMF new file mode 100644 index 0000000..21d5a66 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/OWXSKIN7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/OWX_BLK0.BMF b/CONTENT/BT/VIDEO/MAT/OWX_BLK0.BMF new file mode 100644 index 0000000..ca044c1 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/OWX_BLK0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/OWX_BLK1.BMF b/CONTENT/BT/VIDEO/MAT/OWX_BLK1.BMF new file mode 100644 index 0000000..ca044c1 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/OWX_BLK1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/OWX_BLK2.BMF b/CONTENT/BT/VIDEO/MAT/OWX_BLK2.BMF new file mode 100644 index 0000000..ca044c1 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/OWX_BLK2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/OWX_BLK3.BMF b/CONTENT/BT/VIDEO/MAT/OWX_BLK3.BMF new file mode 100644 index 0000000..ca044c1 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/OWX_BLK3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/OWX_BLK4.BMF b/CONTENT/BT/VIDEO/MAT/OWX_BLK4.BMF new file mode 100644 index 0000000..ca044c1 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/OWX_BLK4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/OWX_BLK5.BMF b/CONTENT/BT/VIDEO/MAT/OWX_BLK5.BMF new file mode 100644 index 0000000..ca044c1 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/OWX_BLK5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/OWX_BLK6.BMF b/CONTENT/BT/VIDEO/MAT/OWX_BLK6.BMF new file mode 100644 index 0000000..ca044c1 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/OWX_BLK6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/OWX_BLK7.BMF b/CONTENT/BT/VIDEO/MAT/OWX_BLK7.BMF new file mode 100644 index 0000000..ca044c1 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/OWX_BLK7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/OWX_BRN0.BMF b/CONTENT/BT/VIDEO/MAT/OWX_BRN0.BMF new file mode 100644 index 0000000..8cb98c0 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/OWX_BRN0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/OWX_BRN1.BMF b/CONTENT/BT/VIDEO/MAT/OWX_BRN1.BMF new file mode 100644 index 0000000..8cb98c0 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/OWX_BRN1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/OWX_BRN2.BMF b/CONTENT/BT/VIDEO/MAT/OWX_BRN2.BMF new file mode 100644 index 0000000..8cb98c0 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/OWX_BRN2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/OWX_BRN3.BMF b/CONTENT/BT/VIDEO/MAT/OWX_BRN3.BMF new file mode 100644 index 0000000..8cb98c0 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/OWX_BRN3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/OWX_BRN4.BMF b/CONTENT/BT/VIDEO/MAT/OWX_BRN4.BMF new file mode 100644 index 0000000..8cb98c0 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/OWX_BRN4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/OWX_BRN5.BMF b/CONTENT/BT/VIDEO/MAT/OWX_BRN5.BMF new file mode 100644 index 0000000..8cb98c0 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/OWX_BRN5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/OWX_BRN6.BMF b/CONTENT/BT/VIDEO/MAT/OWX_BRN6.BMF new file mode 100644 index 0000000..8cb98c0 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/OWX_BRN6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/OWX_BRN7.BMF b/CONTENT/BT/VIDEO/MAT/OWX_BRN7.BMF new file mode 100644 index 0000000..8cb98c0 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/OWX_BRN7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/OWX_GRN0.BMF b/CONTENT/BT/VIDEO/MAT/OWX_GRN0.BMF new file mode 100644 index 0000000..da15e84 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/OWX_GRN0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/OWX_GRN1.BMF b/CONTENT/BT/VIDEO/MAT/OWX_GRN1.BMF new file mode 100644 index 0000000..da15e84 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/OWX_GRN1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/OWX_GRN2.BMF b/CONTENT/BT/VIDEO/MAT/OWX_GRN2.BMF new file mode 100644 index 0000000..da15e84 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/OWX_GRN2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/OWX_GRN3.BMF b/CONTENT/BT/VIDEO/MAT/OWX_GRN3.BMF new file mode 100644 index 0000000..da15e84 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/OWX_GRN3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/OWX_GRN4.BMF b/CONTENT/BT/VIDEO/MAT/OWX_GRN4.BMF new file mode 100644 index 0000000..da15e84 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/OWX_GRN4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/OWX_GRN5.BMF b/CONTENT/BT/VIDEO/MAT/OWX_GRN5.BMF new file mode 100644 index 0000000..da15e84 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/OWX_GRN5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/OWX_GRN6.BMF b/CONTENT/BT/VIDEO/MAT/OWX_GRN6.BMF new file mode 100644 index 0000000..da15e84 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/OWX_GRN6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/OWX_GRN7.BMF b/CONTENT/BT/VIDEO/MAT/OWX_GRN7.BMF new file mode 100644 index 0000000..da15e84 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/OWX_GRN7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/OWX_GRY0.BMF b/CONTENT/BT/VIDEO/MAT/OWX_GRY0.BMF new file mode 100644 index 0000000..12be908 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/OWX_GRY0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/OWX_GRY1.BMF b/CONTENT/BT/VIDEO/MAT/OWX_GRY1.BMF new file mode 100644 index 0000000..12be908 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/OWX_GRY1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/OWX_GRY2.BMF b/CONTENT/BT/VIDEO/MAT/OWX_GRY2.BMF new file mode 100644 index 0000000..12be908 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/OWX_GRY2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/OWX_GRY3.BMF b/CONTENT/BT/VIDEO/MAT/OWX_GRY3.BMF new file mode 100644 index 0000000..12be908 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/OWX_GRY3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/OWX_GRY4.BMF b/CONTENT/BT/VIDEO/MAT/OWX_GRY4.BMF new file mode 100644 index 0000000..12be908 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/OWX_GRY4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/OWX_GRY5.BMF b/CONTENT/BT/VIDEO/MAT/OWX_GRY5.BMF new file mode 100644 index 0000000..12be908 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/OWX_GRY5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/OWX_GRY6.BMF b/CONTENT/BT/VIDEO/MAT/OWX_GRY6.BMF new file mode 100644 index 0000000..12be908 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/OWX_GRY6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/OWX_GRY7.BMF b/CONTENT/BT/VIDEO/MAT/OWX_GRY7.BMF new file mode 100644 index 0000000..12be908 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/OWX_GRY7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/OWX_RED0.BMF b/CONTENT/BT/VIDEO/MAT/OWX_RED0.BMF new file mode 100644 index 0000000..724f0d6 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/OWX_RED0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/OWX_RED1.BMF b/CONTENT/BT/VIDEO/MAT/OWX_RED1.BMF new file mode 100644 index 0000000..724f0d6 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/OWX_RED1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/OWX_RED2.BMF b/CONTENT/BT/VIDEO/MAT/OWX_RED2.BMF new file mode 100644 index 0000000..724f0d6 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/OWX_RED2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/OWX_RED3.BMF b/CONTENT/BT/VIDEO/MAT/OWX_RED3.BMF new file mode 100644 index 0000000..724f0d6 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/OWX_RED3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/OWX_RED4.BMF b/CONTENT/BT/VIDEO/MAT/OWX_RED4.BMF new file mode 100644 index 0000000..724f0d6 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/OWX_RED4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/OWX_RED5.BMF b/CONTENT/BT/VIDEO/MAT/OWX_RED5.BMF new file mode 100644 index 0000000..724f0d6 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/OWX_RED5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/OWX_RED6.BMF b/CONTENT/BT/VIDEO/MAT/OWX_RED6.BMF new file mode 100644 index 0000000..724f0d6 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/OWX_RED6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/OWX_RED7.BMF b/CONTENT/BT/VIDEO/MAT/OWX_RED7.BMF new file mode 100644 index 0000000..724f0d6 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/OWX_RED7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/OWX_TAN0.BMF b/CONTENT/BT/VIDEO/MAT/OWX_TAN0.BMF new file mode 100644 index 0000000..dfb6fcc Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/OWX_TAN0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/OWX_TAN1.BMF b/CONTENT/BT/VIDEO/MAT/OWX_TAN1.BMF new file mode 100644 index 0000000..dfb6fcc Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/OWX_TAN1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/OWX_TAN2.BMF b/CONTENT/BT/VIDEO/MAT/OWX_TAN2.BMF new file mode 100644 index 0000000..dfb6fcc Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/OWX_TAN2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/OWX_TAN3.BMF b/CONTENT/BT/VIDEO/MAT/OWX_TAN3.BMF new file mode 100644 index 0000000..dfb6fcc Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/OWX_TAN3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/OWX_TAN4.BMF b/CONTENT/BT/VIDEO/MAT/OWX_TAN4.BMF new file mode 100644 index 0000000..dfb6fcc Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/OWX_TAN4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/OWX_TAN5.BMF b/CONTENT/BT/VIDEO/MAT/OWX_TAN5.BMF new file mode 100644 index 0000000..dfb6fcc Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/OWX_TAN5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/OWX_TAN6.BMF b/CONTENT/BT/VIDEO/MAT/OWX_TAN6.BMF new file mode 100644 index 0000000..dfb6fcc Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/OWX_TAN6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/OWX_TAN7.BMF b/CONTENT/BT/VIDEO/MAT/OWX_TAN7.BMF new file mode 100644 index 0000000..dfb6fcc Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/OWX_TAN7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/OWX_WHT0.BMF b/CONTENT/BT/VIDEO/MAT/OWX_WHT0.BMF new file mode 100644 index 0000000..1dd3ecd Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/OWX_WHT0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/OWX_WHT1.BMF b/CONTENT/BT/VIDEO/MAT/OWX_WHT1.BMF new file mode 100644 index 0000000..1dd3ecd Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/OWX_WHT1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/OWX_WHT2.BMF b/CONTENT/BT/VIDEO/MAT/OWX_WHT2.BMF new file mode 100644 index 0000000..1dd3ecd Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/OWX_WHT2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/OWX_WHT3.BMF b/CONTENT/BT/VIDEO/MAT/OWX_WHT3.BMF new file mode 100644 index 0000000..1dd3ecd Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/OWX_WHT3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/OWX_WHT4.BMF b/CONTENT/BT/VIDEO/MAT/OWX_WHT4.BMF new file mode 100644 index 0000000..1dd3ecd Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/OWX_WHT4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/OWX_WHT5.BMF b/CONTENT/BT/VIDEO/MAT/OWX_WHT5.BMF new file mode 100644 index 0000000..1dd3ecd Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/OWX_WHT5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/OWX_WHT6.BMF b/CONTENT/BT/VIDEO/MAT/OWX_WHT6.BMF new file mode 100644 index 0000000..1dd3ecd Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/OWX_WHT6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/OWX_WHT7.BMF b/CONTENT/BT/VIDEO/MAT/OWX_WHT7.BMF new file mode 100644 index 0000000..1dd3ecd Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/OWX_WHT7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAPFX.BMF b/CONTENT/BT/VIDEO/MAT/RAPFX.BMF new file mode 100644 index 0000000..effb09c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAPFX.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAPSKIN.BMF b/CONTENT/BT/VIDEO/MAT/RAPSKIN.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAPSKIN.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAPSKIN0.BMF b/CONTENT/BT/VIDEO/MAT/RAPSKIN0.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAPSKIN0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAPSKIN1.BMF b/CONTENT/BT/VIDEO/MAT/RAPSKIN1.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAPSKIN1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAPSKIN2.BMF b/CONTENT/BT/VIDEO/MAT/RAPSKIN2.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAPSKIN2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAPSKIN3.BMF b/CONTENT/BT/VIDEO/MAT/RAPSKIN3.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAPSKIN3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAPSKIN4.BMF b/CONTENT/BT/VIDEO/MAT/RAPSKIN4.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAPSKIN4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAPSKIN5.BMF b/CONTENT/BT/VIDEO/MAT/RAPSKIN5.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAPSKIN5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAPSKIN6.BMF b/CONTENT/BT/VIDEO/MAT/RAPSKIN6.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAPSKIN6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAPSKIN7.BMF b/CONTENT/BT/VIDEO/MAT/RAPSKIN7.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAPSKIN7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAP_BLK0.BMF b/CONTENT/BT/VIDEO/MAT/RAP_BLK0.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAP_BLK0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAP_BLK1.BMF b/CONTENT/BT/VIDEO/MAT/RAP_BLK1.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAP_BLK1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAP_BLK2.BMF b/CONTENT/BT/VIDEO/MAT/RAP_BLK2.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAP_BLK2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAP_BLK3.BMF b/CONTENT/BT/VIDEO/MAT/RAP_BLK3.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAP_BLK3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAP_BLK4.BMF b/CONTENT/BT/VIDEO/MAT/RAP_BLK4.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAP_BLK4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAP_BLK5.BMF b/CONTENT/BT/VIDEO/MAT/RAP_BLK5.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAP_BLK5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAP_BLK6.BMF b/CONTENT/BT/VIDEO/MAT/RAP_BLK6.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAP_BLK6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAP_BLK7.BMF b/CONTENT/BT/VIDEO/MAT/RAP_BLK7.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAP_BLK7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAP_BRN0.BMF b/CONTENT/BT/VIDEO/MAT/RAP_BRN0.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAP_BRN0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAP_BRN1.BMF b/CONTENT/BT/VIDEO/MAT/RAP_BRN1.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAP_BRN1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAP_BRN2.BMF b/CONTENT/BT/VIDEO/MAT/RAP_BRN2.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAP_BRN2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAP_BRN3.BMF b/CONTENT/BT/VIDEO/MAT/RAP_BRN3.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAP_BRN3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAP_BRN4.BMF b/CONTENT/BT/VIDEO/MAT/RAP_BRN4.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAP_BRN4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAP_BRN5.BMF b/CONTENT/BT/VIDEO/MAT/RAP_BRN5.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAP_BRN5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAP_BRN6.BMF b/CONTENT/BT/VIDEO/MAT/RAP_BRN6.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAP_BRN6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAP_BRN7.BMF b/CONTENT/BT/VIDEO/MAT/RAP_BRN7.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAP_BRN7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAP_GRN0.BMF b/CONTENT/BT/VIDEO/MAT/RAP_GRN0.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAP_GRN0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAP_GRN1.BMF b/CONTENT/BT/VIDEO/MAT/RAP_GRN1.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAP_GRN1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAP_GRN2.BMF b/CONTENT/BT/VIDEO/MAT/RAP_GRN2.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAP_GRN2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAP_GRN3.BMF b/CONTENT/BT/VIDEO/MAT/RAP_GRN3.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAP_GRN3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAP_GRN4.BMF b/CONTENT/BT/VIDEO/MAT/RAP_GRN4.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAP_GRN4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAP_GRN5.BMF b/CONTENT/BT/VIDEO/MAT/RAP_GRN5.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAP_GRN5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAP_GRN6.BMF b/CONTENT/BT/VIDEO/MAT/RAP_GRN6.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAP_GRN6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAP_GRN7.BMF b/CONTENT/BT/VIDEO/MAT/RAP_GRN7.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAP_GRN7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAP_GRY0.BMF b/CONTENT/BT/VIDEO/MAT/RAP_GRY0.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAP_GRY0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAP_GRY1.BMF b/CONTENT/BT/VIDEO/MAT/RAP_GRY1.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAP_GRY1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAP_GRY2.BMF b/CONTENT/BT/VIDEO/MAT/RAP_GRY2.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAP_GRY2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAP_GRY3.BMF b/CONTENT/BT/VIDEO/MAT/RAP_GRY3.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAP_GRY3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAP_GRY4.BMF b/CONTENT/BT/VIDEO/MAT/RAP_GRY4.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAP_GRY4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAP_GRY5.BMF b/CONTENT/BT/VIDEO/MAT/RAP_GRY5.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAP_GRY5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAP_GRY6.BMF b/CONTENT/BT/VIDEO/MAT/RAP_GRY6.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAP_GRY6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAP_GRY7.BMF b/CONTENT/BT/VIDEO/MAT/RAP_GRY7.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAP_GRY7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAP_RED0.BMF b/CONTENT/BT/VIDEO/MAT/RAP_RED0.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAP_RED0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAP_RED1.BMF b/CONTENT/BT/VIDEO/MAT/RAP_RED1.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAP_RED1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAP_RED2.BMF b/CONTENT/BT/VIDEO/MAT/RAP_RED2.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAP_RED2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAP_RED3.BMF b/CONTENT/BT/VIDEO/MAT/RAP_RED3.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAP_RED3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAP_RED4.BMF b/CONTENT/BT/VIDEO/MAT/RAP_RED4.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAP_RED4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAP_RED5.BMF b/CONTENT/BT/VIDEO/MAT/RAP_RED5.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAP_RED5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAP_RED6.BMF b/CONTENT/BT/VIDEO/MAT/RAP_RED6.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAP_RED6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAP_RED7.BMF b/CONTENT/BT/VIDEO/MAT/RAP_RED7.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAP_RED7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAP_TAN0.BMF b/CONTENT/BT/VIDEO/MAT/RAP_TAN0.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAP_TAN0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAP_TAN1.BMF b/CONTENT/BT/VIDEO/MAT/RAP_TAN1.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAP_TAN1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAP_TAN2.BMF b/CONTENT/BT/VIDEO/MAT/RAP_TAN2.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAP_TAN2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAP_TAN3.BMF b/CONTENT/BT/VIDEO/MAT/RAP_TAN3.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAP_TAN3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAP_TAN4.BMF b/CONTENT/BT/VIDEO/MAT/RAP_TAN4.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAP_TAN4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAP_TAN5.BMF b/CONTENT/BT/VIDEO/MAT/RAP_TAN5.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAP_TAN5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAP_TAN6.BMF b/CONTENT/BT/VIDEO/MAT/RAP_TAN6.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAP_TAN6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAP_TAN7.BMF b/CONTENT/BT/VIDEO/MAT/RAP_TAN7.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAP_TAN7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAP_WHT0.BMF b/CONTENT/BT/VIDEO/MAT/RAP_WHT0.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAP_WHT0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAP_WHT1.BMF b/CONTENT/BT/VIDEO/MAT/RAP_WHT1.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAP_WHT1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAP_WHT2.BMF b/CONTENT/BT/VIDEO/MAT/RAP_WHT2.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAP_WHT2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAP_WHT3.BMF b/CONTENT/BT/VIDEO/MAT/RAP_WHT3.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAP_WHT3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAP_WHT4.BMF b/CONTENT/BT/VIDEO/MAT/RAP_WHT4.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAP_WHT4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAP_WHT5.BMF b/CONTENT/BT/VIDEO/MAT/RAP_WHT5.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAP_WHT5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAP_WHT6.BMF b/CONTENT/BT/VIDEO/MAT/RAP_WHT6.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAP_WHT6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAP_WHT7.BMF b/CONTENT/BT/VIDEO/MAT/RAP_WHT7.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAP_WHT7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAVBU.VMF b/CONTENT/BT/VIDEO/MAT/RAVBU.VMF new file mode 100644 index 0000000..34cd66d --- /dev/null +++ b/CONTENT/BT/VIDEO/MAT/RAVBU.VMF @@ -0,0 +1,50 @@ +DIV-VIZ2 +HEADER +( + VERSION=2:08; + DATE=8:2:97; + TIME=1:39; + FILETYPE=MATERIAL +) +{ +} + +TEXTURE(NAME="bdinta_tex") +{ + MAP {"bdinta"} + MAGNIFY {BILINEAR} +} + +TEXTURE(NAME="bdintb_tex") +{ + MAP {"bdintb"} + MAGNIFY {BILINEAR} +} + +RAMP(NAME="dust") +{ + DATA {0.285, 0.21, 0.2, 0.73, 0.68, 0.72} +} + +RAMP(NAME="rock") +{ + DATA {0.25, 0.21, 0.21, 0.8, 0.75, 0.75} +} + +MATERIAL(NAME="ravinerock_mtl") +{ + TEXTURE {"bdinta_tex"} + AMBIENT {0.78102, 0.52455, 0.353209} + DIFFUSE {0.78102, 0.524312, 0.353209} + RAMP {"rock"} +} + +MATERIAL(NAME="ravinerubble_mtl") +{ + TEXTURE {"bdintb_tex"} + AMBIENT {0.878102, 0.643055, 0.375321} + DIFFUSE {0.878102, 0.643052, 0.375321} + RAMP {"dust"} +} + + \ No newline at end of file diff --git a/CONTENT/BT/VIDEO/MAT/RAVINES.BMF b/CONTENT/BT/VIDEO/MAT/RAVINES.BMF new file mode 100644 index 0000000..43285a6 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAVINES.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAXFX.BMF b/CONTENT/BT/VIDEO/MAT/RAXFX.BMF new file mode 100644 index 0000000..effb09c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAXFX.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAXSKIN.BMF b/CONTENT/BT/VIDEO/MAT/RAXSKIN.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAXSKIN.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAXSKIN0.BMF b/CONTENT/BT/VIDEO/MAT/RAXSKIN0.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAXSKIN0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAXSKIN1.BMF b/CONTENT/BT/VIDEO/MAT/RAXSKIN1.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAXSKIN1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAXSKIN2.BMF b/CONTENT/BT/VIDEO/MAT/RAXSKIN2.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAXSKIN2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAXSKIN3.BMF b/CONTENT/BT/VIDEO/MAT/RAXSKIN3.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAXSKIN3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAXSKIN4.BMF b/CONTENT/BT/VIDEO/MAT/RAXSKIN4.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAXSKIN4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAXSKIN5.BMF b/CONTENT/BT/VIDEO/MAT/RAXSKIN5.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAXSKIN5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAXSKIN6.BMF b/CONTENT/BT/VIDEO/MAT/RAXSKIN6.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAXSKIN6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAXSKIN7.BMF b/CONTENT/BT/VIDEO/MAT/RAXSKIN7.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAXSKIN7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAX_BLK0.BMF b/CONTENT/BT/VIDEO/MAT/RAX_BLK0.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAX_BLK0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAX_BLK1.BMF b/CONTENT/BT/VIDEO/MAT/RAX_BLK1.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAX_BLK1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAX_BLK2.BMF b/CONTENT/BT/VIDEO/MAT/RAX_BLK2.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAX_BLK2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAX_BLK3.BMF b/CONTENT/BT/VIDEO/MAT/RAX_BLK3.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAX_BLK3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAX_BLK4.BMF b/CONTENT/BT/VIDEO/MAT/RAX_BLK4.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAX_BLK4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAX_BLK5.BMF b/CONTENT/BT/VIDEO/MAT/RAX_BLK5.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAX_BLK5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAX_BLK6.BMF b/CONTENT/BT/VIDEO/MAT/RAX_BLK6.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAX_BLK6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAX_BLK7.BMF b/CONTENT/BT/VIDEO/MAT/RAX_BLK7.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAX_BLK7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAX_BRN0.BMF b/CONTENT/BT/VIDEO/MAT/RAX_BRN0.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAX_BRN0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAX_BRN1.BMF b/CONTENT/BT/VIDEO/MAT/RAX_BRN1.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAX_BRN1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAX_BRN2.BMF b/CONTENT/BT/VIDEO/MAT/RAX_BRN2.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAX_BRN2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAX_BRN3.BMF b/CONTENT/BT/VIDEO/MAT/RAX_BRN3.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAX_BRN3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAX_BRN4.BMF b/CONTENT/BT/VIDEO/MAT/RAX_BRN4.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAX_BRN4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAX_BRN5.BMF b/CONTENT/BT/VIDEO/MAT/RAX_BRN5.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAX_BRN5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAX_BRN6.BMF b/CONTENT/BT/VIDEO/MAT/RAX_BRN6.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAX_BRN6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAX_BRN7.BMF b/CONTENT/BT/VIDEO/MAT/RAX_BRN7.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAX_BRN7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAX_GRN0.BMF b/CONTENT/BT/VIDEO/MAT/RAX_GRN0.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAX_GRN0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAX_GRN1.BMF b/CONTENT/BT/VIDEO/MAT/RAX_GRN1.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAX_GRN1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAX_GRN2.BMF b/CONTENT/BT/VIDEO/MAT/RAX_GRN2.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAX_GRN2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAX_GRN3.BMF b/CONTENT/BT/VIDEO/MAT/RAX_GRN3.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAX_GRN3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAX_GRN4.BMF b/CONTENT/BT/VIDEO/MAT/RAX_GRN4.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAX_GRN4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAX_GRN5.BMF b/CONTENT/BT/VIDEO/MAT/RAX_GRN5.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAX_GRN5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAX_GRN6.BMF b/CONTENT/BT/VIDEO/MAT/RAX_GRN6.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAX_GRN6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAX_GRN7.BMF b/CONTENT/BT/VIDEO/MAT/RAX_GRN7.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAX_GRN7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAX_GRY0.BMF b/CONTENT/BT/VIDEO/MAT/RAX_GRY0.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAX_GRY0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAX_GRY1.BMF b/CONTENT/BT/VIDEO/MAT/RAX_GRY1.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAX_GRY1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAX_GRY2.BMF b/CONTENT/BT/VIDEO/MAT/RAX_GRY2.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAX_GRY2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAX_GRY3.BMF b/CONTENT/BT/VIDEO/MAT/RAX_GRY3.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAX_GRY3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAX_GRY4.BMF b/CONTENT/BT/VIDEO/MAT/RAX_GRY4.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAX_GRY4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAX_GRY5.BMF b/CONTENT/BT/VIDEO/MAT/RAX_GRY5.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAX_GRY5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAX_GRY6.BMF b/CONTENT/BT/VIDEO/MAT/RAX_GRY6.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAX_GRY6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAX_GRY7.BMF b/CONTENT/BT/VIDEO/MAT/RAX_GRY7.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAX_GRY7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAX_RED0.BMF b/CONTENT/BT/VIDEO/MAT/RAX_RED0.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAX_RED0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAX_RED1.BMF b/CONTENT/BT/VIDEO/MAT/RAX_RED1.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAX_RED1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAX_RED2.BMF b/CONTENT/BT/VIDEO/MAT/RAX_RED2.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAX_RED2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAX_RED3.BMF b/CONTENT/BT/VIDEO/MAT/RAX_RED3.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAX_RED3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAX_RED4.BMF b/CONTENT/BT/VIDEO/MAT/RAX_RED4.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAX_RED4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAX_RED5.BMF b/CONTENT/BT/VIDEO/MAT/RAX_RED5.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAX_RED5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAX_RED6.BMF b/CONTENT/BT/VIDEO/MAT/RAX_RED6.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAX_RED6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAX_RED7.BMF b/CONTENT/BT/VIDEO/MAT/RAX_RED7.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAX_RED7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAX_TAN0.BMF b/CONTENT/BT/VIDEO/MAT/RAX_TAN0.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAX_TAN0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAX_TAN1.BMF b/CONTENT/BT/VIDEO/MAT/RAX_TAN1.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAX_TAN1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAX_TAN2.BMF b/CONTENT/BT/VIDEO/MAT/RAX_TAN2.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAX_TAN2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAX_TAN3.BMF b/CONTENT/BT/VIDEO/MAT/RAX_TAN3.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAX_TAN3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAX_TAN4.BMF b/CONTENT/BT/VIDEO/MAT/RAX_TAN4.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAX_TAN4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAX_TAN5.BMF b/CONTENT/BT/VIDEO/MAT/RAX_TAN5.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAX_TAN5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAX_TAN6.BMF b/CONTENT/BT/VIDEO/MAT/RAX_TAN6.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAX_TAN6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAX_TAN7.BMF b/CONTENT/BT/VIDEO/MAT/RAX_TAN7.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAX_TAN7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAX_WHT0.BMF b/CONTENT/BT/VIDEO/MAT/RAX_WHT0.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAX_WHT0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAX_WHT1.BMF b/CONTENT/BT/VIDEO/MAT/RAX_WHT1.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAX_WHT1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAX_WHT2.BMF b/CONTENT/BT/VIDEO/MAT/RAX_WHT2.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAX_WHT2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAX_WHT3.BMF b/CONTENT/BT/VIDEO/MAT/RAX_WHT3.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAX_WHT3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAX_WHT4.BMF b/CONTENT/BT/VIDEO/MAT/RAX_WHT4.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAX_WHT4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAX_WHT5.BMF b/CONTENT/BT/VIDEO/MAT/RAX_WHT5.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAX_WHT5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAX_WHT6.BMF b/CONTENT/BT/VIDEO/MAT/RAX_WHT6.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAX_WHT6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/RAX_WHT7.BMF b/CONTENT/BT/VIDEO/MAT/RAX_WHT7.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/RAX_WHT7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/SNDFX.BMF b/CONTENT/BT/VIDEO/MAT/SNDFX.BMF new file mode 100644 index 0000000..582cc14 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/SNDFX.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/SNDSKIN.BMF b/CONTENT/BT/VIDEO/MAT/SNDSKIN.BMF new file mode 100644 index 0000000..a888695 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/SNDSKIN.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/SNXSKIN.BMF b/CONTENT/BT/VIDEO/MAT/SNXSKIN.BMF new file mode 100644 index 0000000..b9e483f Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/SNXSKIN.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/SNXSKIN0.BMF b/CONTENT/BT/VIDEO/MAT/SNXSKIN0.BMF new file mode 100644 index 0000000..b9e483f Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/SNXSKIN0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/SNXSKIN1.BMF b/CONTENT/BT/VIDEO/MAT/SNXSKIN1.BMF new file mode 100644 index 0000000..b9e483f Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/SNXSKIN1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/SNXSKIN2.BMF b/CONTENT/BT/VIDEO/MAT/SNXSKIN2.BMF new file mode 100644 index 0000000..b9e483f Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/SNXSKIN2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/SNXSKIN3.BMF b/CONTENT/BT/VIDEO/MAT/SNXSKIN3.BMF new file mode 100644 index 0000000..b9e483f Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/SNXSKIN3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/SNXSKIN4.BMF b/CONTENT/BT/VIDEO/MAT/SNXSKIN4.BMF new file mode 100644 index 0000000..b9e483f Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/SNXSKIN4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/SNXSKIN5.BMF b/CONTENT/BT/VIDEO/MAT/SNXSKIN5.BMF new file mode 100644 index 0000000..b9e483f Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/SNXSKIN5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/SNXSKIN6.BMF b/CONTENT/BT/VIDEO/MAT/SNXSKIN6.BMF new file mode 100644 index 0000000..b9e483f Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/SNXSKIN6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/SNXSKIN7.BMF b/CONTENT/BT/VIDEO/MAT/SNXSKIN7.BMF new file mode 100644 index 0000000..b9e483f Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/SNXSKIN7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/SNX_BLK0.BMF b/CONTENT/BT/VIDEO/MAT/SNX_BLK0.BMF new file mode 100644 index 0000000..33606fd Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/SNX_BLK0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/SNX_BLK1.BMF b/CONTENT/BT/VIDEO/MAT/SNX_BLK1.BMF new file mode 100644 index 0000000..33606fd Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/SNX_BLK1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/SNX_BLK2.BMF b/CONTENT/BT/VIDEO/MAT/SNX_BLK2.BMF new file mode 100644 index 0000000..33606fd Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/SNX_BLK2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/SNX_BLK3.BMF b/CONTENT/BT/VIDEO/MAT/SNX_BLK3.BMF new file mode 100644 index 0000000..33606fd Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/SNX_BLK3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/SNX_BLK4.BMF b/CONTENT/BT/VIDEO/MAT/SNX_BLK4.BMF new file mode 100644 index 0000000..33606fd Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/SNX_BLK4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/SNX_BLK5.BMF b/CONTENT/BT/VIDEO/MAT/SNX_BLK5.BMF new file mode 100644 index 0000000..33606fd Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/SNX_BLK5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/SNX_BLK6.BMF b/CONTENT/BT/VIDEO/MAT/SNX_BLK6.BMF new file mode 100644 index 0000000..33606fd Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/SNX_BLK6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/SNX_BLK7.BMF b/CONTENT/BT/VIDEO/MAT/SNX_BLK7.BMF new file mode 100644 index 0000000..33606fd Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/SNX_BLK7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/SNX_BRN0.BMF b/CONTENT/BT/VIDEO/MAT/SNX_BRN0.BMF new file mode 100644 index 0000000..399ef70 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/SNX_BRN0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/SNX_BRN1.BMF b/CONTENT/BT/VIDEO/MAT/SNX_BRN1.BMF new file mode 100644 index 0000000..399ef70 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/SNX_BRN1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/SNX_BRN2.BMF b/CONTENT/BT/VIDEO/MAT/SNX_BRN2.BMF new file mode 100644 index 0000000..399ef70 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/SNX_BRN2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/SNX_BRN3.BMF b/CONTENT/BT/VIDEO/MAT/SNX_BRN3.BMF new file mode 100644 index 0000000..399ef70 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/SNX_BRN3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/SNX_BRN4.BMF b/CONTENT/BT/VIDEO/MAT/SNX_BRN4.BMF new file mode 100644 index 0000000..399ef70 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/SNX_BRN4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/SNX_BRN5.BMF b/CONTENT/BT/VIDEO/MAT/SNX_BRN5.BMF new file mode 100644 index 0000000..399ef70 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/SNX_BRN5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/SNX_BRN6.BMF b/CONTENT/BT/VIDEO/MAT/SNX_BRN6.BMF new file mode 100644 index 0000000..399ef70 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/SNX_BRN6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/SNX_BRN7.BMF b/CONTENT/BT/VIDEO/MAT/SNX_BRN7.BMF new file mode 100644 index 0000000..399ef70 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/SNX_BRN7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/SNX_GRN0.BMF b/CONTENT/BT/VIDEO/MAT/SNX_GRN0.BMF new file mode 100644 index 0000000..1b6d251 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/SNX_GRN0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/SNX_GRN1.BMF b/CONTENT/BT/VIDEO/MAT/SNX_GRN1.BMF new file mode 100644 index 0000000..1b6d251 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/SNX_GRN1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/SNX_GRN2.BMF b/CONTENT/BT/VIDEO/MAT/SNX_GRN2.BMF new file mode 100644 index 0000000..1b6d251 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/SNX_GRN2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/SNX_GRN3.BMF b/CONTENT/BT/VIDEO/MAT/SNX_GRN3.BMF new file mode 100644 index 0000000..1b6d251 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/SNX_GRN3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/SNX_GRN4.BMF b/CONTENT/BT/VIDEO/MAT/SNX_GRN4.BMF new file mode 100644 index 0000000..1b6d251 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/SNX_GRN4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/SNX_GRN5.BMF b/CONTENT/BT/VIDEO/MAT/SNX_GRN5.BMF new file mode 100644 index 0000000..1b6d251 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/SNX_GRN5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/SNX_GRN6.BMF b/CONTENT/BT/VIDEO/MAT/SNX_GRN6.BMF new file mode 100644 index 0000000..1b6d251 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/SNX_GRN6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/SNX_GRN7.BMF b/CONTENT/BT/VIDEO/MAT/SNX_GRN7.BMF new file mode 100644 index 0000000..1b6d251 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/SNX_GRN7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/SNX_GRY0.BMF b/CONTENT/BT/VIDEO/MAT/SNX_GRY0.BMF new file mode 100644 index 0000000..69d6565 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/SNX_GRY0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/SNX_GRY1.BMF b/CONTENT/BT/VIDEO/MAT/SNX_GRY1.BMF new file mode 100644 index 0000000..69d6565 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/SNX_GRY1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/SNX_GRY2.BMF b/CONTENT/BT/VIDEO/MAT/SNX_GRY2.BMF new file mode 100644 index 0000000..69d6565 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/SNX_GRY2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/SNX_GRY3.BMF b/CONTENT/BT/VIDEO/MAT/SNX_GRY3.BMF new file mode 100644 index 0000000..69d6565 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/SNX_GRY3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/SNX_GRY4.BMF b/CONTENT/BT/VIDEO/MAT/SNX_GRY4.BMF new file mode 100644 index 0000000..69d6565 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/SNX_GRY4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/SNX_GRY5.BMF b/CONTENT/BT/VIDEO/MAT/SNX_GRY5.BMF new file mode 100644 index 0000000..69d6565 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/SNX_GRY5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/SNX_GRY6.BMF b/CONTENT/BT/VIDEO/MAT/SNX_GRY6.BMF new file mode 100644 index 0000000..69d6565 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/SNX_GRY6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/SNX_GRY7.BMF b/CONTENT/BT/VIDEO/MAT/SNX_GRY7.BMF new file mode 100644 index 0000000..69d6565 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/SNX_GRY7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/SNX_RED0.BMF b/CONTENT/BT/VIDEO/MAT/SNX_RED0.BMF new file mode 100644 index 0000000..56a1ed6 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/SNX_RED0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/SNX_RED1.BMF b/CONTENT/BT/VIDEO/MAT/SNX_RED1.BMF new file mode 100644 index 0000000..56a1ed6 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/SNX_RED1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/SNX_RED2.BMF b/CONTENT/BT/VIDEO/MAT/SNX_RED2.BMF new file mode 100644 index 0000000..56a1ed6 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/SNX_RED2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/SNX_RED3.BMF b/CONTENT/BT/VIDEO/MAT/SNX_RED3.BMF new file mode 100644 index 0000000..56a1ed6 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/SNX_RED3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/SNX_RED4.BMF b/CONTENT/BT/VIDEO/MAT/SNX_RED4.BMF new file mode 100644 index 0000000..56a1ed6 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/SNX_RED4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/SNX_RED5.BMF b/CONTENT/BT/VIDEO/MAT/SNX_RED5.BMF new file mode 100644 index 0000000..56a1ed6 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/SNX_RED5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/SNX_RED6.BMF b/CONTENT/BT/VIDEO/MAT/SNX_RED6.BMF new file mode 100644 index 0000000..56a1ed6 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/SNX_RED6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/SNX_RED7.BMF b/CONTENT/BT/VIDEO/MAT/SNX_RED7.BMF new file mode 100644 index 0000000..56a1ed6 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/SNX_RED7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/SNX_TAN0.BMF b/CONTENT/BT/VIDEO/MAT/SNX_TAN0.BMF new file mode 100644 index 0000000..51ed92a Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/SNX_TAN0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/SNX_TAN1.BMF b/CONTENT/BT/VIDEO/MAT/SNX_TAN1.BMF new file mode 100644 index 0000000..51ed92a Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/SNX_TAN1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/SNX_TAN2.BMF b/CONTENT/BT/VIDEO/MAT/SNX_TAN2.BMF new file mode 100644 index 0000000..51ed92a Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/SNX_TAN2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/SNX_TAN3.BMF b/CONTENT/BT/VIDEO/MAT/SNX_TAN3.BMF new file mode 100644 index 0000000..51ed92a Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/SNX_TAN3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/SNX_TAN4.BMF b/CONTENT/BT/VIDEO/MAT/SNX_TAN4.BMF new file mode 100644 index 0000000..51ed92a Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/SNX_TAN4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/SNX_TAN5.BMF b/CONTENT/BT/VIDEO/MAT/SNX_TAN5.BMF new file mode 100644 index 0000000..51ed92a Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/SNX_TAN5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/SNX_TAN6.BMF b/CONTENT/BT/VIDEO/MAT/SNX_TAN6.BMF new file mode 100644 index 0000000..51ed92a Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/SNX_TAN6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/SNX_TAN7.BMF b/CONTENT/BT/VIDEO/MAT/SNX_TAN7.BMF new file mode 100644 index 0000000..51ed92a Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/SNX_TAN7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/SNX_WHT0.BMF b/CONTENT/BT/VIDEO/MAT/SNX_WHT0.BMF new file mode 100644 index 0000000..b0d6b3e Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/SNX_WHT0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/SNX_WHT1.BMF b/CONTENT/BT/VIDEO/MAT/SNX_WHT1.BMF new file mode 100644 index 0000000..b0d6b3e Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/SNX_WHT1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/SNX_WHT2.BMF b/CONTENT/BT/VIDEO/MAT/SNX_WHT2.BMF new file mode 100644 index 0000000..b0d6b3e Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/SNX_WHT2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/SNX_WHT3.BMF b/CONTENT/BT/VIDEO/MAT/SNX_WHT3.BMF new file mode 100644 index 0000000..b0d6b3e Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/SNX_WHT3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/SNX_WHT4.BMF b/CONTENT/BT/VIDEO/MAT/SNX_WHT4.BMF new file mode 100644 index 0000000..b0d6b3e Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/SNX_WHT4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/SNX_WHT5.BMF b/CONTENT/BT/VIDEO/MAT/SNX_WHT5.BMF new file mode 100644 index 0000000..b0d6b3e Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/SNX_WHT5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/SNX_WHT6.BMF b/CONTENT/BT/VIDEO/MAT/SNX_WHT6.BMF new file mode 100644 index 0000000..b0d6b3e Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/SNX_WHT6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/SNX_WHT7.BMF b/CONTENT/BT/VIDEO/MAT/SNX_WHT7.BMF new file mode 100644 index 0000000..b0d6b3e Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/SNX_WHT7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STIFX.BMF b/CONTENT/BT/VIDEO/MAT/STIFX.BMF new file mode 100644 index 0000000..c8f965c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STIFX.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STISKIN.BMF b/CONTENT/BT/VIDEO/MAT/STISKIN.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STISKIN.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STISKIN0.BMF b/CONTENT/BT/VIDEO/MAT/STISKIN0.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STISKIN0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STISKIN1.BMF b/CONTENT/BT/VIDEO/MAT/STISKIN1.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STISKIN1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STISKIN2.BMF b/CONTENT/BT/VIDEO/MAT/STISKIN2.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STISKIN2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STISKIN3.BMF b/CONTENT/BT/VIDEO/MAT/STISKIN3.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STISKIN3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STISKIN4.BMF b/CONTENT/BT/VIDEO/MAT/STISKIN4.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STISKIN4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STISKIN5.BMF b/CONTENT/BT/VIDEO/MAT/STISKIN5.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STISKIN5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STISKIN6.BMF b/CONTENT/BT/VIDEO/MAT/STISKIN6.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STISKIN6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STISKIN7.BMF b/CONTENT/BT/VIDEO/MAT/STISKIN7.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STISKIN7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STI_BLK0.BMF b/CONTENT/BT/VIDEO/MAT/STI_BLK0.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STI_BLK0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STI_BLK1.BMF b/CONTENT/BT/VIDEO/MAT/STI_BLK1.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STI_BLK1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STI_BLK2.BMF b/CONTENT/BT/VIDEO/MAT/STI_BLK2.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STI_BLK2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STI_BLK3.BMF b/CONTENT/BT/VIDEO/MAT/STI_BLK3.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STI_BLK3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STI_BLK4.BMF b/CONTENT/BT/VIDEO/MAT/STI_BLK4.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STI_BLK4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STI_BLK5.BMF b/CONTENT/BT/VIDEO/MAT/STI_BLK5.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STI_BLK5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STI_BLK6.BMF b/CONTENT/BT/VIDEO/MAT/STI_BLK6.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STI_BLK6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STI_BLK7.BMF b/CONTENT/BT/VIDEO/MAT/STI_BLK7.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STI_BLK7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STI_BRN0.BMF b/CONTENT/BT/VIDEO/MAT/STI_BRN0.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STI_BRN0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STI_BRN1.BMF b/CONTENT/BT/VIDEO/MAT/STI_BRN1.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STI_BRN1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STI_BRN2.BMF b/CONTENT/BT/VIDEO/MAT/STI_BRN2.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STI_BRN2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STI_BRN3.BMF b/CONTENT/BT/VIDEO/MAT/STI_BRN3.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STI_BRN3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STI_BRN4.BMF b/CONTENT/BT/VIDEO/MAT/STI_BRN4.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STI_BRN4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STI_BRN5.BMF b/CONTENT/BT/VIDEO/MAT/STI_BRN5.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STI_BRN5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STI_BRN6.BMF b/CONTENT/BT/VIDEO/MAT/STI_BRN6.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STI_BRN6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STI_BRN7.BMF b/CONTENT/BT/VIDEO/MAT/STI_BRN7.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STI_BRN7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STI_GRN0.BMF b/CONTENT/BT/VIDEO/MAT/STI_GRN0.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STI_GRN0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STI_GRN1.BMF b/CONTENT/BT/VIDEO/MAT/STI_GRN1.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STI_GRN1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STI_GRN2.BMF b/CONTENT/BT/VIDEO/MAT/STI_GRN2.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STI_GRN2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STI_GRN3.BMF b/CONTENT/BT/VIDEO/MAT/STI_GRN3.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STI_GRN3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STI_GRN4.BMF b/CONTENT/BT/VIDEO/MAT/STI_GRN4.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STI_GRN4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STI_GRN5.BMF b/CONTENT/BT/VIDEO/MAT/STI_GRN5.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STI_GRN5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STI_GRN6.BMF b/CONTENT/BT/VIDEO/MAT/STI_GRN6.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STI_GRN6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STI_GRN7.BMF b/CONTENT/BT/VIDEO/MAT/STI_GRN7.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STI_GRN7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STI_GRY0.BMF b/CONTENT/BT/VIDEO/MAT/STI_GRY0.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STI_GRY0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STI_GRY1.BMF b/CONTENT/BT/VIDEO/MAT/STI_GRY1.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STI_GRY1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STI_GRY2.BMF b/CONTENT/BT/VIDEO/MAT/STI_GRY2.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STI_GRY2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STI_GRY3.BMF b/CONTENT/BT/VIDEO/MAT/STI_GRY3.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STI_GRY3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STI_GRY4.BMF b/CONTENT/BT/VIDEO/MAT/STI_GRY4.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STI_GRY4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STI_GRY5.BMF b/CONTENT/BT/VIDEO/MAT/STI_GRY5.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STI_GRY5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STI_GRY6.BMF b/CONTENT/BT/VIDEO/MAT/STI_GRY6.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STI_GRY6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STI_GRY7.BMF b/CONTENT/BT/VIDEO/MAT/STI_GRY7.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STI_GRY7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STI_RED0.BMF b/CONTENT/BT/VIDEO/MAT/STI_RED0.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STI_RED0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STI_RED1.BMF b/CONTENT/BT/VIDEO/MAT/STI_RED1.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STI_RED1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STI_RED2.BMF b/CONTENT/BT/VIDEO/MAT/STI_RED2.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STI_RED2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STI_RED3.BMF b/CONTENT/BT/VIDEO/MAT/STI_RED3.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STI_RED3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STI_RED4.BMF b/CONTENT/BT/VIDEO/MAT/STI_RED4.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STI_RED4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STI_RED5.BMF b/CONTENT/BT/VIDEO/MAT/STI_RED5.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STI_RED5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STI_RED6.BMF b/CONTENT/BT/VIDEO/MAT/STI_RED6.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STI_RED6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STI_RED7.BMF b/CONTENT/BT/VIDEO/MAT/STI_RED7.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STI_RED7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STI_TAN0.BMF b/CONTENT/BT/VIDEO/MAT/STI_TAN0.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STI_TAN0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STI_TAN1.BMF b/CONTENT/BT/VIDEO/MAT/STI_TAN1.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STI_TAN1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STI_TAN2.BMF b/CONTENT/BT/VIDEO/MAT/STI_TAN2.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STI_TAN2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STI_TAN3.BMF b/CONTENT/BT/VIDEO/MAT/STI_TAN3.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STI_TAN3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STI_TAN4.BMF b/CONTENT/BT/VIDEO/MAT/STI_TAN4.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STI_TAN4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STI_TAN5.BMF b/CONTENT/BT/VIDEO/MAT/STI_TAN5.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STI_TAN5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STI_TAN6.BMF b/CONTENT/BT/VIDEO/MAT/STI_TAN6.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STI_TAN6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STI_TAN7.BMF b/CONTENT/BT/VIDEO/MAT/STI_TAN7.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STI_TAN7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STI_WHT0.BMF b/CONTENT/BT/VIDEO/MAT/STI_WHT0.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STI_WHT0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STI_WHT1.BMF b/CONTENT/BT/VIDEO/MAT/STI_WHT1.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STI_WHT1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STI_WHT2.BMF b/CONTENT/BT/VIDEO/MAT/STI_WHT2.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STI_WHT2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STI_WHT3.BMF b/CONTENT/BT/VIDEO/MAT/STI_WHT3.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STI_WHT3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STI_WHT4.BMF b/CONTENT/BT/VIDEO/MAT/STI_WHT4.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STI_WHT4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STI_WHT5.BMF b/CONTENT/BT/VIDEO/MAT/STI_WHT5.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STI_WHT5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STI_WHT6.BMF b/CONTENT/BT/VIDEO/MAT/STI_WHT6.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STI_WHT6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STI_WHT7.BMF b/CONTENT/BT/VIDEO/MAT/STI_WHT7.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STI_WHT7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STXFX.BMF b/CONTENT/BT/VIDEO/MAT/STXFX.BMF new file mode 100644 index 0000000..c8f965c Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STXFX.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STXSKIN.BMF b/CONTENT/BT/VIDEO/MAT/STXSKIN.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STXSKIN.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STXSKIN0.BMF b/CONTENT/BT/VIDEO/MAT/STXSKIN0.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STXSKIN0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STXSKIN1.BMF b/CONTENT/BT/VIDEO/MAT/STXSKIN1.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STXSKIN1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STXSKIN2.BMF b/CONTENT/BT/VIDEO/MAT/STXSKIN2.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STXSKIN2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STXSKIN3.BMF b/CONTENT/BT/VIDEO/MAT/STXSKIN3.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STXSKIN3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STXSKIN4.BMF b/CONTENT/BT/VIDEO/MAT/STXSKIN4.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STXSKIN4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STXSKIN5.BMF b/CONTENT/BT/VIDEO/MAT/STXSKIN5.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STXSKIN5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STXSKIN6.BMF b/CONTENT/BT/VIDEO/MAT/STXSKIN6.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STXSKIN6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STXSKIN7.BMF b/CONTENT/BT/VIDEO/MAT/STXSKIN7.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STXSKIN7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STX_BLK0.BMF b/CONTENT/BT/VIDEO/MAT/STX_BLK0.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STX_BLK0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STX_BLK1.BMF b/CONTENT/BT/VIDEO/MAT/STX_BLK1.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STX_BLK1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STX_BLK2.BMF b/CONTENT/BT/VIDEO/MAT/STX_BLK2.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STX_BLK2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STX_BLK3.BMF b/CONTENT/BT/VIDEO/MAT/STX_BLK3.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STX_BLK3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STX_BLK4.BMF b/CONTENT/BT/VIDEO/MAT/STX_BLK4.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STX_BLK4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STX_BLK5.BMF b/CONTENT/BT/VIDEO/MAT/STX_BLK5.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STX_BLK5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STX_BLK6.BMF b/CONTENT/BT/VIDEO/MAT/STX_BLK6.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STX_BLK6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STX_BLK7.BMF b/CONTENT/BT/VIDEO/MAT/STX_BLK7.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STX_BLK7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STX_BRN0.BMF b/CONTENT/BT/VIDEO/MAT/STX_BRN0.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STX_BRN0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STX_BRN1.BMF b/CONTENT/BT/VIDEO/MAT/STX_BRN1.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STX_BRN1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STX_BRN2.BMF b/CONTENT/BT/VIDEO/MAT/STX_BRN2.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STX_BRN2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STX_BRN3.BMF b/CONTENT/BT/VIDEO/MAT/STX_BRN3.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STX_BRN3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STX_BRN4.BMF b/CONTENT/BT/VIDEO/MAT/STX_BRN4.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STX_BRN4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STX_BRN5.BMF b/CONTENT/BT/VIDEO/MAT/STX_BRN5.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STX_BRN5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STX_BRN6.BMF b/CONTENT/BT/VIDEO/MAT/STX_BRN6.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STX_BRN6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STX_BRN7.BMF b/CONTENT/BT/VIDEO/MAT/STX_BRN7.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STX_BRN7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STX_GRN0.BMF b/CONTENT/BT/VIDEO/MAT/STX_GRN0.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STX_GRN0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STX_GRN1.BMF b/CONTENT/BT/VIDEO/MAT/STX_GRN1.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STX_GRN1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STX_GRN2.BMF b/CONTENT/BT/VIDEO/MAT/STX_GRN2.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STX_GRN2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STX_GRN3.BMF b/CONTENT/BT/VIDEO/MAT/STX_GRN3.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STX_GRN3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STX_GRN4.BMF b/CONTENT/BT/VIDEO/MAT/STX_GRN4.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STX_GRN4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STX_GRN5.BMF b/CONTENT/BT/VIDEO/MAT/STX_GRN5.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STX_GRN5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STX_GRN6.BMF b/CONTENT/BT/VIDEO/MAT/STX_GRN6.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STX_GRN6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STX_GRN7.BMF b/CONTENT/BT/VIDEO/MAT/STX_GRN7.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STX_GRN7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STX_GRY0.BMF b/CONTENT/BT/VIDEO/MAT/STX_GRY0.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STX_GRY0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STX_GRY1.BMF b/CONTENT/BT/VIDEO/MAT/STX_GRY1.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STX_GRY1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STX_GRY2.BMF b/CONTENT/BT/VIDEO/MAT/STX_GRY2.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STX_GRY2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STX_GRY3.BMF b/CONTENT/BT/VIDEO/MAT/STX_GRY3.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STX_GRY3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STX_GRY4.BMF b/CONTENT/BT/VIDEO/MAT/STX_GRY4.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STX_GRY4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STX_GRY5.BMF b/CONTENT/BT/VIDEO/MAT/STX_GRY5.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STX_GRY5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STX_GRY6.BMF b/CONTENT/BT/VIDEO/MAT/STX_GRY6.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STX_GRY6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STX_GRY7.BMF b/CONTENT/BT/VIDEO/MAT/STX_GRY7.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STX_GRY7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STX_RED0.BMF b/CONTENT/BT/VIDEO/MAT/STX_RED0.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STX_RED0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STX_RED1.BMF b/CONTENT/BT/VIDEO/MAT/STX_RED1.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STX_RED1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STX_RED2.BMF b/CONTENT/BT/VIDEO/MAT/STX_RED2.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STX_RED2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STX_RED3.BMF b/CONTENT/BT/VIDEO/MAT/STX_RED3.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STX_RED3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STX_RED4.BMF b/CONTENT/BT/VIDEO/MAT/STX_RED4.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STX_RED4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STX_RED5.BMF b/CONTENT/BT/VIDEO/MAT/STX_RED5.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STX_RED5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STX_RED6.BMF b/CONTENT/BT/VIDEO/MAT/STX_RED6.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STX_RED6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STX_RED7.BMF b/CONTENT/BT/VIDEO/MAT/STX_RED7.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STX_RED7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STX_TAN0.BMF b/CONTENT/BT/VIDEO/MAT/STX_TAN0.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STX_TAN0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STX_TAN1.BMF b/CONTENT/BT/VIDEO/MAT/STX_TAN1.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STX_TAN1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STX_TAN2.BMF b/CONTENT/BT/VIDEO/MAT/STX_TAN2.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STX_TAN2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STX_TAN3.BMF b/CONTENT/BT/VIDEO/MAT/STX_TAN3.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STX_TAN3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STX_TAN4.BMF b/CONTENT/BT/VIDEO/MAT/STX_TAN4.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STX_TAN4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STX_TAN5.BMF b/CONTENT/BT/VIDEO/MAT/STX_TAN5.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STX_TAN5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STX_TAN6.BMF b/CONTENT/BT/VIDEO/MAT/STX_TAN6.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STX_TAN6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STX_TAN7.BMF b/CONTENT/BT/VIDEO/MAT/STX_TAN7.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STX_TAN7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STX_WHT0.BMF b/CONTENT/BT/VIDEO/MAT/STX_WHT0.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STX_WHT0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STX_WHT1.BMF b/CONTENT/BT/VIDEO/MAT/STX_WHT1.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STX_WHT1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STX_WHT2.BMF b/CONTENT/BT/VIDEO/MAT/STX_WHT2.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STX_WHT2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STX_WHT3.BMF b/CONTENT/BT/VIDEO/MAT/STX_WHT3.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STX_WHT3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STX_WHT4.BMF b/CONTENT/BT/VIDEO/MAT/STX_WHT4.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STX_WHT4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STX_WHT5.BMF b/CONTENT/BT/VIDEO/MAT/STX_WHT5.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STX_WHT5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STX_WHT6.BMF b/CONTENT/BT/VIDEO/MAT/STX_WHT6.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STX_WHT6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/STX_WHT7.BMF b/CONTENT/BT/VIDEO/MAT/STX_WHT7.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/STX_WHT7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/THRFX.BMF b/CONTENT/BT/VIDEO/MAT/THRFX.BMF new file mode 100644 index 0000000..839b207 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/THRFX.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/THRSKIN.BMF b/CONTENT/BT/VIDEO/MAT/THRSKIN.BMF new file mode 100644 index 0000000..e081964 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/THRSKIN.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/THXSKIN.BMF b/CONTENT/BT/VIDEO/MAT/THXSKIN.BMF new file mode 100644 index 0000000..e45104b Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/THXSKIN.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/THXSKIN0.BMF b/CONTENT/BT/VIDEO/MAT/THXSKIN0.BMF new file mode 100644 index 0000000..e45104b Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/THXSKIN0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/THXSKIN1.BMF b/CONTENT/BT/VIDEO/MAT/THXSKIN1.BMF new file mode 100644 index 0000000..e45104b Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/THXSKIN1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/THXSKIN2.BMF b/CONTENT/BT/VIDEO/MAT/THXSKIN2.BMF new file mode 100644 index 0000000..e45104b Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/THXSKIN2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/THXSKIN3.BMF b/CONTENT/BT/VIDEO/MAT/THXSKIN3.BMF new file mode 100644 index 0000000..e45104b Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/THXSKIN3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/THXSKIN4.BMF b/CONTENT/BT/VIDEO/MAT/THXSKIN4.BMF new file mode 100644 index 0000000..e45104b Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/THXSKIN4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/THXSKIN5.BMF b/CONTENT/BT/VIDEO/MAT/THXSKIN5.BMF new file mode 100644 index 0000000..e45104b Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/THXSKIN5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/THXSKIN6.BMF b/CONTENT/BT/VIDEO/MAT/THXSKIN6.BMF new file mode 100644 index 0000000..e45104b Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/THXSKIN6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/THXSKIN7.BMF b/CONTENT/BT/VIDEO/MAT/THXSKIN7.BMF new file mode 100644 index 0000000..e45104b Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/THXSKIN7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/THX_BLK0.BMF b/CONTENT/BT/VIDEO/MAT/THX_BLK0.BMF new file mode 100644 index 0000000..98cf302 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/THX_BLK0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/THX_BLK1.BMF b/CONTENT/BT/VIDEO/MAT/THX_BLK1.BMF new file mode 100644 index 0000000..98cf302 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/THX_BLK1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/THX_BLK2.BMF b/CONTENT/BT/VIDEO/MAT/THX_BLK2.BMF new file mode 100644 index 0000000..98cf302 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/THX_BLK2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/THX_BLK3.BMF b/CONTENT/BT/VIDEO/MAT/THX_BLK3.BMF new file mode 100644 index 0000000..98cf302 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/THX_BLK3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/THX_BLK4.BMF b/CONTENT/BT/VIDEO/MAT/THX_BLK4.BMF new file mode 100644 index 0000000..98cf302 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/THX_BLK4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/THX_BLK5.BMF b/CONTENT/BT/VIDEO/MAT/THX_BLK5.BMF new file mode 100644 index 0000000..98cf302 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/THX_BLK5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/THX_BLK6.BMF b/CONTENT/BT/VIDEO/MAT/THX_BLK6.BMF new file mode 100644 index 0000000..98cf302 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/THX_BLK6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/THX_BLK7.BMF b/CONTENT/BT/VIDEO/MAT/THX_BLK7.BMF new file mode 100644 index 0000000..98cf302 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/THX_BLK7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/THX_BRN0.BMF b/CONTENT/BT/VIDEO/MAT/THX_BRN0.BMF new file mode 100644 index 0000000..d2b16ea Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/THX_BRN0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/THX_BRN1.BMF b/CONTENT/BT/VIDEO/MAT/THX_BRN1.BMF new file mode 100644 index 0000000..d2b16ea Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/THX_BRN1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/THX_BRN2.BMF b/CONTENT/BT/VIDEO/MAT/THX_BRN2.BMF new file mode 100644 index 0000000..d2b16ea Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/THX_BRN2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/THX_BRN3.BMF b/CONTENT/BT/VIDEO/MAT/THX_BRN3.BMF new file mode 100644 index 0000000..d2b16ea Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/THX_BRN3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/THX_BRN4.BMF b/CONTENT/BT/VIDEO/MAT/THX_BRN4.BMF new file mode 100644 index 0000000..d2b16ea Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/THX_BRN4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/THX_BRN5.BMF b/CONTENT/BT/VIDEO/MAT/THX_BRN5.BMF new file mode 100644 index 0000000..d2b16ea Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/THX_BRN5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/THX_BRN6.BMF b/CONTENT/BT/VIDEO/MAT/THX_BRN6.BMF new file mode 100644 index 0000000..d2b16ea Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/THX_BRN6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/THX_BRN7.BMF b/CONTENT/BT/VIDEO/MAT/THX_BRN7.BMF new file mode 100644 index 0000000..d2b16ea Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/THX_BRN7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/THX_GRN0.BMF b/CONTENT/BT/VIDEO/MAT/THX_GRN0.BMF new file mode 100644 index 0000000..effe42e Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/THX_GRN0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/THX_GRN1.BMF b/CONTENT/BT/VIDEO/MAT/THX_GRN1.BMF new file mode 100644 index 0000000..effe42e Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/THX_GRN1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/THX_GRN2.BMF b/CONTENT/BT/VIDEO/MAT/THX_GRN2.BMF new file mode 100644 index 0000000..effe42e Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/THX_GRN2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/THX_GRN3.BMF b/CONTENT/BT/VIDEO/MAT/THX_GRN3.BMF new file mode 100644 index 0000000..effe42e Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/THX_GRN3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/THX_GRN4.BMF b/CONTENT/BT/VIDEO/MAT/THX_GRN4.BMF new file mode 100644 index 0000000..effe42e Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/THX_GRN4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/THX_GRN5.BMF b/CONTENT/BT/VIDEO/MAT/THX_GRN5.BMF new file mode 100644 index 0000000..effe42e Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/THX_GRN5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/THX_GRN6.BMF b/CONTENT/BT/VIDEO/MAT/THX_GRN6.BMF new file mode 100644 index 0000000..effe42e Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/THX_GRN6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/THX_GRN7.BMF b/CONTENT/BT/VIDEO/MAT/THX_GRN7.BMF new file mode 100644 index 0000000..effe42e Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/THX_GRN7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/THX_GRY0.BMF b/CONTENT/BT/VIDEO/MAT/THX_GRY0.BMF new file mode 100644 index 0000000..bd5e3f1 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/THX_GRY0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/THX_GRY1.BMF b/CONTENT/BT/VIDEO/MAT/THX_GRY1.BMF new file mode 100644 index 0000000..bd5e3f1 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/THX_GRY1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/THX_GRY2.BMF b/CONTENT/BT/VIDEO/MAT/THX_GRY2.BMF new file mode 100644 index 0000000..bd5e3f1 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/THX_GRY2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/THX_GRY3.BMF b/CONTENT/BT/VIDEO/MAT/THX_GRY3.BMF new file mode 100644 index 0000000..bd5e3f1 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/THX_GRY3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/THX_GRY4.BMF b/CONTENT/BT/VIDEO/MAT/THX_GRY4.BMF new file mode 100644 index 0000000..bd5e3f1 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/THX_GRY4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/THX_GRY5.BMF b/CONTENT/BT/VIDEO/MAT/THX_GRY5.BMF new file mode 100644 index 0000000..bd5e3f1 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/THX_GRY5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/THX_GRY6.BMF b/CONTENT/BT/VIDEO/MAT/THX_GRY6.BMF new file mode 100644 index 0000000..bd5e3f1 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/THX_GRY6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/THX_GRY7.BMF b/CONTENT/BT/VIDEO/MAT/THX_GRY7.BMF new file mode 100644 index 0000000..bd5e3f1 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/THX_GRY7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/THX_RED0.BMF b/CONTENT/BT/VIDEO/MAT/THX_RED0.BMF new file mode 100644 index 0000000..856eaf4 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/THX_RED0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/THX_RED1.BMF b/CONTENT/BT/VIDEO/MAT/THX_RED1.BMF new file mode 100644 index 0000000..856eaf4 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/THX_RED1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/THX_RED2.BMF b/CONTENT/BT/VIDEO/MAT/THX_RED2.BMF new file mode 100644 index 0000000..856eaf4 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/THX_RED2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/THX_RED3.BMF b/CONTENT/BT/VIDEO/MAT/THX_RED3.BMF new file mode 100644 index 0000000..856eaf4 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/THX_RED3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/THX_RED4.BMF b/CONTENT/BT/VIDEO/MAT/THX_RED4.BMF new file mode 100644 index 0000000..856eaf4 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/THX_RED4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/THX_RED5.BMF b/CONTENT/BT/VIDEO/MAT/THX_RED5.BMF new file mode 100644 index 0000000..856eaf4 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/THX_RED5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/THX_RED6.BMF b/CONTENT/BT/VIDEO/MAT/THX_RED6.BMF new file mode 100644 index 0000000..856eaf4 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/THX_RED6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/THX_RED7.BMF b/CONTENT/BT/VIDEO/MAT/THX_RED7.BMF new file mode 100644 index 0000000..856eaf4 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/THX_RED7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/THX_TAN0.BMF b/CONTENT/BT/VIDEO/MAT/THX_TAN0.BMF new file mode 100644 index 0000000..30360f7 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/THX_TAN0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/THX_TAN1.BMF b/CONTENT/BT/VIDEO/MAT/THX_TAN1.BMF new file mode 100644 index 0000000..30360f7 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/THX_TAN1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/THX_TAN2.BMF b/CONTENT/BT/VIDEO/MAT/THX_TAN2.BMF new file mode 100644 index 0000000..30360f7 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/THX_TAN2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/THX_TAN3.BMF b/CONTENT/BT/VIDEO/MAT/THX_TAN3.BMF new file mode 100644 index 0000000..30360f7 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/THX_TAN3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/THX_TAN4.BMF b/CONTENT/BT/VIDEO/MAT/THX_TAN4.BMF new file mode 100644 index 0000000..30360f7 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/THX_TAN4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/THX_TAN5.BMF b/CONTENT/BT/VIDEO/MAT/THX_TAN5.BMF new file mode 100644 index 0000000..30360f7 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/THX_TAN5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/THX_TAN6.BMF b/CONTENT/BT/VIDEO/MAT/THX_TAN6.BMF new file mode 100644 index 0000000..30360f7 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/THX_TAN6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/THX_TAN7.BMF b/CONTENT/BT/VIDEO/MAT/THX_TAN7.BMF new file mode 100644 index 0000000..30360f7 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/THX_TAN7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/THX_WHT0.BMF b/CONTENT/BT/VIDEO/MAT/THX_WHT0.BMF new file mode 100644 index 0000000..351a468 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/THX_WHT0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/THX_WHT1.BMF b/CONTENT/BT/VIDEO/MAT/THX_WHT1.BMF new file mode 100644 index 0000000..351a468 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/THX_WHT1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/THX_WHT2.BMF b/CONTENT/BT/VIDEO/MAT/THX_WHT2.BMF new file mode 100644 index 0000000..351a468 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/THX_WHT2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/THX_WHT3.BMF b/CONTENT/BT/VIDEO/MAT/THX_WHT3.BMF new file mode 100644 index 0000000..351a468 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/THX_WHT3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/THX_WHT4.BMF b/CONTENT/BT/VIDEO/MAT/THX_WHT4.BMF new file mode 100644 index 0000000..351a468 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/THX_WHT4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/THX_WHT5.BMF b/CONTENT/BT/VIDEO/MAT/THX_WHT5.BMF new file mode 100644 index 0000000..351a468 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/THX_WHT5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/THX_WHT6.BMF b/CONTENT/BT/VIDEO/MAT/THX_WHT6.BMF new file mode 100644 index 0000000..351a468 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/THX_WHT6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/THX_WHT7.BMF b/CONTENT/BT/VIDEO/MAT/THX_WHT7.BMF new file mode 100644 index 0000000..351a468 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/THX_WHT7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/VULFX.BMF b/CONTENT/BT/VIDEO/MAT/VULFX.BMF new file mode 100644 index 0000000..d677902 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/VULFX.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/VULSKIN.BMF b/CONTENT/BT/VIDEO/MAT/VULSKIN.BMF new file mode 100644 index 0000000..b0c8988 Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/VULSKIN.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/VUXSKIN.BMF b/CONTENT/BT/VIDEO/MAT/VUXSKIN.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/VUXSKIN.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/VUXSKIN0.BMF b/CONTENT/BT/VIDEO/MAT/VUXSKIN0.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/VUXSKIN0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/VUXSKIN1.BMF b/CONTENT/BT/VIDEO/MAT/VUXSKIN1.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/VUXSKIN1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/VUXSKIN2.BMF b/CONTENT/BT/VIDEO/MAT/VUXSKIN2.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/VUXSKIN2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/VUXSKIN3.BMF b/CONTENT/BT/VIDEO/MAT/VUXSKIN3.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/VUXSKIN3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/VUXSKIN4.BMF b/CONTENT/BT/VIDEO/MAT/VUXSKIN4.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/VUXSKIN4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/VUXSKIN5.BMF b/CONTENT/BT/VIDEO/MAT/VUXSKIN5.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/VUXSKIN5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/VUXSKIN6.BMF b/CONTENT/BT/VIDEO/MAT/VUXSKIN6.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/VUXSKIN6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/VUXSKIN7.BMF b/CONTENT/BT/VIDEO/MAT/VUXSKIN7.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/VUXSKIN7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/VUX_BLK0.BMF b/CONTENT/BT/VIDEO/MAT/VUX_BLK0.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/VUX_BLK0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/VUX_BLK1.BMF b/CONTENT/BT/VIDEO/MAT/VUX_BLK1.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/VUX_BLK1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/VUX_BLK2.BMF b/CONTENT/BT/VIDEO/MAT/VUX_BLK2.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/VUX_BLK2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/VUX_BLK3.BMF b/CONTENT/BT/VIDEO/MAT/VUX_BLK3.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/VUX_BLK3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/VUX_BLK4.BMF b/CONTENT/BT/VIDEO/MAT/VUX_BLK4.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/VUX_BLK4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/VUX_BLK5.BMF b/CONTENT/BT/VIDEO/MAT/VUX_BLK5.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/VUX_BLK5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/VUX_BLK6.BMF b/CONTENT/BT/VIDEO/MAT/VUX_BLK6.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/VUX_BLK6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/VUX_BLK7.BMF b/CONTENT/BT/VIDEO/MAT/VUX_BLK7.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/VUX_BLK7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/VUX_BRN0.BMF b/CONTENT/BT/VIDEO/MAT/VUX_BRN0.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/VUX_BRN0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/VUX_BRN1.BMF b/CONTENT/BT/VIDEO/MAT/VUX_BRN1.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/VUX_BRN1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/VUX_BRN2.BMF b/CONTENT/BT/VIDEO/MAT/VUX_BRN2.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/VUX_BRN2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/VUX_BRN3.BMF b/CONTENT/BT/VIDEO/MAT/VUX_BRN3.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/VUX_BRN3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/VUX_BRN4.BMF b/CONTENT/BT/VIDEO/MAT/VUX_BRN4.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/VUX_BRN4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/VUX_BRN5.BMF b/CONTENT/BT/VIDEO/MAT/VUX_BRN5.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/VUX_BRN5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/VUX_BRN6.BMF b/CONTENT/BT/VIDEO/MAT/VUX_BRN6.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/VUX_BRN6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/VUX_BRN7.BMF b/CONTENT/BT/VIDEO/MAT/VUX_BRN7.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/VUX_BRN7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/VUX_GRN0.BMF b/CONTENT/BT/VIDEO/MAT/VUX_GRN0.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/VUX_GRN0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/VUX_GRN1.BMF b/CONTENT/BT/VIDEO/MAT/VUX_GRN1.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/VUX_GRN1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/VUX_GRN2.BMF b/CONTENT/BT/VIDEO/MAT/VUX_GRN2.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/VUX_GRN2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/VUX_GRN3.BMF b/CONTENT/BT/VIDEO/MAT/VUX_GRN3.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/VUX_GRN3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/VUX_GRN4.BMF b/CONTENT/BT/VIDEO/MAT/VUX_GRN4.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/VUX_GRN4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/VUX_GRN5.BMF b/CONTENT/BT/VIDEO/MAT/VUX_GRN5.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/VUX_GRN5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/VUX_GRN6.BMF b/CONTENT/BT/VIDEO/MAT/VUX_GRN6.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/VUX_GRN6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/VUX_GRN7.BMF b/CONTENT/BT/VIDEO/MAT/VUX_GRN7.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/VUX_GRN7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/VUX_GRY0.BMF b/CONTENT/BT/VIDEO/MAT/VUX_GRY0.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/VUX_GRY0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/VUX_GRY1.BMF b/CONTENT/BT/VIDEO/MAT/VUX_GRY1.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/VUX_GRY1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/VUX_GRY2.BMF b/CONTENT/BT/VIDEO/MAT/VUX_GRY2.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/VUX_GRY2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/VUX_GRY3.BMF b/CONTENT/BT/VIDEO/MAT/VUX_GRY3.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/VUX_GRY3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/VUX_GRY4.BMF b/CONTENT/BT/VIDEO/MAT/VUX_GRY4.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/VUX_GRY4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/VUX_GRY5.BMF b/CONTENT/BT/VIDEO/MAT/VUX_GRY5.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/VUX_GRY5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/VUX_GRY6.BMF b/CONTENT/BT/VIDEO/MAT/VUX_GRY6.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/VUX_GRY6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/VUX_GRY7.BMF b/CONTENT/BT/VIDEO/MAT/VUX_GRY7.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/VUX_GRY7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/VUX_RED0.BMF b/CONTENT/BT/VIDEO/MAT/VUX_RED0.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/VUX_RED0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/VUX_RED1.BMF b/CONTENT/BT/VIDEO/MAT/VUX_RED1.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/VUX_RED1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/VUX_RED2.BMF b/CONTENT/BT/VIDEO/MAT/VUX_RED2.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/VUX_RED2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/VUX_RED3.BMF b/CONTENT/BT/VIDEO/MAT/VUX_RED3.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/VUX_RED3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/VUX_RED4.BMF b/CONTENT/BT/VIDEO/MAT/VUX_RED4.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/VUX_RED4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/VUX_RED5.BMF b/CONTENT/BT/VIDEO/MAT/VUX_RED5.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/VUX_RED5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/VUX_RED6.BMF b/CONTENT/BT/VIDEO/MAT/VUX_RED6.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/VUX_RED6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/VUX_RED7.BMF b/CONTENT/BT/VIDEO/MAT/VUX_RED7.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/VUX_RED7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/VUX_TAN0.BMF b/CONTENT/BT/VIDEO/MAT/VUX_TAN0.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/VUX_TAN0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/VUX_TAN1.BMF b/CONTENT/BT/VIDEO/MAT/VUX_TAN1.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/VUX_TAN1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/VUX_TAN2.BMF b/CONTENT/BT/VIDEO/MAT/VUX_TAN2.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/VUX_TAN2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/VUX_TAN3.BMF b/CONTENT/BT/VIDEO/MAT/VUX_TAN3.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/VUX_TAN3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/VUX_TAN4.BMF b/CONTENT/BT/VIDEO/MAT/VUX_TAN4.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/VUX_TAN4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/VUX_TAN5.BMF b/CONTENT/BT/VIDEO/MAT/VUX_TAN5.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/VUX_TAN5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/VUX_TAN6.BMF b/CONTENT/BT/VIDEO/MAT/VUX_TAN6.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/VUX_TAN6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/VUX_TAN7.BMF b/CONTENT/BT/VIDEO/MAT/VUX_TAN7.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/VUX_TAN7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/VUX_WHT0.BMF b/CONTENT/BT/VIDEO/MAT/VUX_WHT0.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/VUX_WHT0.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/VUX_WHT1.BMF b/CONTENT/BT/VIDEO/MAT/VUX_WHT1.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/VUX_WHT1.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/VUX_WHT2.BMF b/CONTENT/BT/VIDEO/MAT/VUX_WHT2.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/VUX_WHT2.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/VUX_WHT3.BMF b/CONTENT/BT/VIDEO/MAT/VUX_WHT3.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/VUX_WHT3.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/VUX_WHT4.BMF b/CONTENT/BT/VIDEO/MAT/VUX_WHT4.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/VUX_WHT4.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/VUX_WHT5.BMF b/CONTENT/BT/VIDEO/MAT/VUX_WHT5.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/VUX_WHT5.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/VUX_WHT6.BMF b/CONTENT/BT/VIDEO/MAT/VUX_WHT6.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/VUX_WHT6.BMF differ diff --git a/CONTENT/BT/VIDEO/MAT/VUX_WHT7.BMF b/CONTENT/BT/VIDEO/MAT/VUX_WHT7.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT/VIDEO/MAT/VUX_WHT7.BMF differ diff --git a/CONTENT/BT/VIDEO/MAX.ORG b/CONTENT/BT/VIDEO/MAX.ORG new file mode 100644 index 0000000..fb62e66 --- /dev/null +++ b/CONTENT/BT/VIDEO/MAX.ORG @@ -0,0 +1,658 @@ +[LAB_ONLY] // this file has not been approved for release + +[DamageZones] // call MakeEntryList with 'dz_' +dz_utorso=0 + +[ROOT] +JointCount=25 +DZoneCount=1 +Former Segment=segroot +tranx=0 +trany=0 +tranz=0 +pitch=0 +yaw=-0 +roll=0 +joint=jointlocal + +joint=jointshadow + +[jointlocal] +parent=ROOT +Type=balltranslate +Former Segment=segem1 +tranx=0 +trany=5.29 +tranz=0 +pitch=0 +yaw=-0.00261799 +roll=0 +joint=jointhip +joint=jointlthigh +joint=jointrthigh + +[jointhip] +parent=jointlocal +Type=hingex +Former Segment=seghip +tranx=-4.93114e-07 +trany=0.373967 +tranz=-0.000188355 +pitch=0 +yaw=-0 +roll=0 +joint=jointtorso +site=siteedz_hip + +[jointtorso] +parent=jointhip +Type=hingey +Object=max_cop.bgf +dzone=dz_utorso +Former Segment=segtor +tranx=5.88841e-07 +trany=0.30755 +tranz=0.000188448 +pitch=-5.82075e-11 +yaw=3.22776e-24 +roll=1.10905e-13 +joint=jointshakey + +joint=jointeye +[jointshakey] +parent=jointtorso +Type=ball +Former Segment=segshake +tranx=-1.47042e-07 +trany=0.100963 +tranz=-9.42898e-08 +pitch=5.49888e-16 +yaw=0.00261798 +roll=1.52387e-13 +joint=jointrshoulder +joint=jointlshoulder +site=sitelmissleport +site=sitermissleport +site=sitelight +site=siterutorsoport +site=siterdtorsoport +site=sitelutorsoport +site=siteldtorsoport +joint=jointlmissledoor +joint=jointrmissledoor +site=siteedz_rtorso +site=siteedz_ltorso +site=siteedz_utorso +site=siteedz_dtorso +site=siteedz_rearutorso +site=siteedz_reardtorso +site=siteedz_rearrtorso +site=siteedz_rearltorso +site=siteedz_searchlight + +[jointrshoulder] +parent=jointshakey +Type=hingex +Former Segment=segrarm +tranx=1.746 +trany=1.35502 +tranz=0.988 +pitch=-2.12633e-09 +yaw=-2.85749e-26 +roll=-2.68771e-17 +joint=jointrgun +site=siteedz_rarm + +[jointrgun] +parent=jointrshoulder +Type=hingex +Former Segment=segrgun +tranx=1.056 +trany=-0.959001 +tranz=-5.96046e-08 +pitch=2.85992e-08 +yaw=3.07336e-08 +roll=-1.01557e-13 +site=siterugunport +site=siterdgunport +site=siteedz_rgun + +[siterugunport] +parent=jointrgun +tranx=0.17 +trany=0.0179999 +tranz=-3.819 +pitch=1.27931e-10 +yaw=4.65826e-10 +roll=-9.26676e-15 + +[siterdgunport] +parent=jointrgun +tranx=0.53 +trany=-0.366999 +tranz=-3.819 +pitch=1.27931e-10 +yaw=4.65826e-10 +roll=-9.26676e-15 + +[siteedz_rgun] +parent=jointrgun +tranx=0.32896 +trany=-0.186245 +tranz=-0.345314 +pitch=-3.57279e-08 +yaw=-3.25957e-09 +roll=-2.12342e-06 + +[siteedz_rarm] +parent=jointrshoulder +tranx=0.526 +trany=-0.35102 +tranz=7.03335e-06 +pitch=2.96466e-08 +yaw=2.65423e-08 +roll=-1.01683e-13 + +[jointlshoulder] +parent=jointshakey +Type=hingex +Former Segment=seglarm +tranx=-1.743 +trany=1.35502 +tranz=0.988 +pitch=-3.27953e-09 +yaw=-6.78302e-26 +roll=-4.13659e-17 +joint=jointlgun +site=siteedz_larm + +[jointlgun] +parent=jointlshoulder +Type=hingex +Former Segment=seglgun +tranx=-1.06 +trany=-0.958 +tranz=5.96046e-08 +pitch=8.20184e-08 +yaw=7.4126e-08 +roll=-1.75833e-06 +site=sitelugunport +site=siteldgunport +site=siteedz_lgun + +[sitelugunport] +parent=jointlgun +tranx=-0.165 +trany=0.0170004 +tranz=-3.819 +pitch=-8.93909e-08 +yaw=1.29528e-08 +roll=-3.83964e-15 + +[siteldgunport] +parent=jointlgun +tranx=-0.523999 +trany=-0.368001 +tranz=-3.819 +pitch=-1.06155e-07 +yaw=1.6678e-08 +roll=-4.80842e-15 + +[siteedz_lgun] +parent=jointlgun +tranx=-0.328 +trany=-0.187021 +tranz=-0.345319 +pitch=-4.42217e-08 +yaw=9.22739e-09 +roll=-1.92803e-15 + +[siteedz_larm] +parent=jointlshoulder +tranx=-0.52937 +trany=-0.3509 +tranz=7.09295e-06 +pitch=8.38229e-08 +yaw=6.69089e-08 +roll=-1.75833e-06 + +[sitelmissleport] +parent=jointshakey +tranx=-2.318 +trany=2.64102 +tranz=0.245 +pitch=-1.57161e-09 +yaw=-1.56389e-26 +roll=-1.99018e-17 + +[sitermissleport] +parent=jointshakey +tranx=2.315 +trany=2.64102 +tranz=0.245 +pitch=-1.10594e-09 +yaw=-7.72272e-27 +roll=-1.39658e-17 + +[sitelight] +parent=jointshakey +tranx=5.85843e-08 +trany=0.10002 +tranz=-2.044 +pitch=-6.98497e-10 +yaw=-3.10969e-27 +roll=-8.90395e-18 + +[siterutorsoport] +parent=jointshakey +tranx=0.764 +trany=0.86902 +tranz=-2.761 +pitch=-4.07446e-10 +yaw=-1.06712e-27 +roll=-5.23808e-18 + +[siterdtorsoport] +parent=jointshakey +tranx=0.774 +trany=0.57602 +tranz=-2.349 +pitch=-2.91033e-10 +yaw=-5.33461e-28 +roll=-3.66598e-18 + +[sitelutorsoport] +parent=jointshakey +tranx=-0.766 +trany=0.86902 +tranz=-2.761 +pitch=4.07464e-10 +yaw=-1.03125e-27 +roll=5.06179e-18 + +[siteldtorsoport] +parent=jointshakey +tranx=-0.779 +trany=0.57602 +tranz=-2.349 +pitch=1.7462e-10 +yaw=-1.82816e-28 +roll=2.09388e-18 + +[jointlmissledoor] +parent=jointshakey +Type=hingex +Former Segment=segldoor +tranx=-2.114 +trany=3.795 +tranz=0.263498 +pitch=-3.27953e-09 +yaw=5.35516e-09 +roll=-4.10601e-17 +site=siteedz_ldoor + +[siteedz_ldoor] +parent=jointlmissledoor +tranx=0 +trany=-0.983 +tranz=-0.078498 +pitch=-4.11285e-09 +yaw=5.3556e-09 +roll=1.31602e-17 + +[jointrmissledoor] +parent=jointshakey +Type=hingex +Former Segment=segrdoor +tranx=2.114 +trany=3.79453 +tranz=0.263498 +pitch=-3.0467e-09 +yaw=1.39701e-09 +roll=-3.83169e-17 +site=siteedz_rdoor + +[siteedz_rdoor] +parent=jointrmissledoor +tranx=-0.000169992 +trany=-0.98231 +tranz=-0.078138 +pitch=3.10491e-09 +yaw=8.02223e-10 +roll=1.09168e-11 + +[siteedz_rtorso] +parent=jointshakey +tranx=2.114 +trany=2.79299 +tranz=1.15422 +pitch=1.74622e-09 +yaw=-1.9045e-26 +roll=2.18128e-17 + +[siteedz_ltorso] +parent=jointshakey +tranx=-2.114 +trany=2.793 +tranz=1.154 +pitch=1.16413e-10 +yaw=-8.08573e-29 +roll=1.38914e-18 + +[siteedz_utorso] +parent=jointshakey +tranx=4.57201e-08 +trany=2.03599 +tranz=-0.363648 +pitch=5.82074e-09 +yaw=-2.12814e-25 +roll=7.31226e-17 + +[siteedz_dtorso] +parent=jointshakey +tranx=1.76362e-08 +trany=0.36167 +tranz=-1.16012 +pitch=1.10594e-08 +yaw=-7.68186e-25 +roll=1.3892e-16 + +[siteedz_rearutorso] +parent=jointshakey +tranx=8.41722e-08 +trany=2.03599 +tranz=2.17676 +pitch=6.92669e-09 +yaw=-3.01617e-25 +roll=8.70884e-17 + +[siteedz_reardtorso] +parent=jointshakey +tranx=7.06844e-08 +trany=0.57603 +tranz=1.43517 +pitch=1.37952e-08 +yaw=-1.19542e-24 +roll=1.7331e-16 + +[siteedz_rearrtorso] +parent=jointshakey +tranx=2.114 +trany=2.793 +tranz=2.17676 +pitch=3.31782e-09 +yaw=-6.92008e-26 +roll=4.17147e-17 + +[siteedz_rearltorso] +parent=jointshakey +tranx=-2.114 +trany=2.79301 +tranz=2.177 +pitch=1.10594e-09 +yaw=-7.62155e-27 +roll=1.37829e-17 + +[siteedz_searchlight] +parent=jointshakey +tranx=5.32242e-08 +trany=0.10002 +tranz=-1.87191 +pitch=2.91034e-10 +yaw=-5.32476e-28 +roll=3.6592e-18 + +[siteedz_hip] +parent=jointhip +tranx=-0.000890357 +trany=-0.0815088 +tranz=-0.34009 +pitch=-5.82027e-11 +yaw=5.61625e-23 +roll=1.92989e-12 + +[jointlthigh] +parent=jointlocal +Type=hingex +Former Segment=segluleg +tranx=-1.69818 +trany=0.235867 +tranz=0.00425748 +pitch=0 +yaw=-0 +roll=0 +joint=jointlknee +site=siteedz_luleg + +[jointlknee] +parent=jointlthigh +Type=hingex +Former Segment=segldleg +tranx=0.00376296 +trany=-1.96938 +tranz=1.43734 +pitch=2.96845e-08 +yaw=0.002618 +roll=-4.50033e-08 +joint=jointlankle +site=siteedz_ldleg + +[jointlankle] +parent=jointlknee +Type=hingex +Former Segment=seglfot +tranx=1.19209e-07 +trany=-2.38752 +tranz=-1.43651 +pitch=2.02656e-06 +yaw=-1.04583e-13 +roll=-1.73066e-13 +joint=jointlbacktoe +joint=jointloutertoe +joint=jointlinnertoe +site=siteedz_lfoot + +[jointlbacktoe] +parent=jointlankle +Type=hingex +Former Segment=seglbto +tranx=-2.00272e-05 +trany=-0.514369 +tranz=0.689937 +pitch=5.83996e-06 +yaw=-4.11746e-08 +roll=5.37255e-09 + +[jointloutertoe] +parent=jointlankle +Type=hingex +Former Segment=segloto +tranx=-0.51023 +trany=-0.514372 +tranz=-1.04087 +pitch=-2.85103e-06 +yaw=0.785398 +roll=-2.01072e-06 + +[jointlinnertoe] +parent=jointlankle +Type=hingex +Former Segment=seglito +tranx=0.4988 +trany=-0.514362 +tranz=-1.04083 +pitch=-2.94107e-06 +yaw=-0.785398 +roll=2.10201e-06 + +[siteedz_lfoot] +parent=jointlankle +tranx=0.00019002 +trany=-0.756791 +tranz=-0.341029 +pitch=5.83996e-06 +yaw=-3.95577e-08 +roll=3.95133e-09 + +[siteedz_ldleg] +parent=jointlknee +tranx=0.00019002 +trany=-1.27301 +tranz=-0.68516 +pitch=2.02656e-06 +yaw=4.28164e-10 +roll=-1.72638e-13 + +[siteedz_luleg] +parent=jointlthigh +tranx=0.271583 +trany=-1.09312 +tranz=0.527891 +pitch=2.96816e-08 +yaw=0.002618 +roll=-4.61203e-08 + +[jointrthigh] +parent=jointlocal +Type=hingex +Former Segment=segruleg +tranx=1.70076 +trany=0.237486 +tranz=-0.0044526 +pitch=0 +yaw=-0 +roll=0 +joint=jointrknee +site=siteedz_ruleg + +[jointrknee] +parent=jointrthigh +Type=hingex +Former Segment=segrdleg +tranx=0.00376308 +trany=-1.97125 +tranz=1.43737 +pitch=1.78845e-06 +yaw=0.00261799 +roll=1.18749e-07 +joint=jointrankle +site=siteedz_rdleg + +[jointrankle] +parent=jointrknee +Type=hingex +Former Segment=segrfot +tranx=-2.38419e-07 +trany=-2.38756 +tranz=-1.43738 +pitch=-4.76157e-27 +yaw=5.58442e-14 +roll=-1.7053e-13 +joint=jointrbacktoe +joint=jointrinnertoe +joint=jointroutertoe +site=siteedz_rfoot + +[jointrbacktoe] +parent=jointrankle +Type=hingex +Former Segment=segrbto +tranx=-1.19209e-07 +trany=-0.514069 +tranz=0.689989 +pitch=6.34684e-06 +yaw=7.48792e-13 +roll=3.93519e-09 + +[jointrinnertoe] +parent=jointrankle +Type=hingex +Former Segment=segrito +tranx=-0.50311 +trany=-0.514062 +tranz=-1.04019 +pitch=-2.09713e-06 +yaw=0.785398 +roll=-1.74167e-06 + +[jointroutertoe] +parent=jointrankle +Type=hingex +Former Segment=segroto +tranx=0.50682 +trany=-0.514072 +tranz=-1.04024 +pitch=-2.71565e-06 +yaw=-0.785398 +roll=1.83461e-06 + +[siteedz_rfoot] +parent=jointrankle +tranx=-0.000170112 +trany=-0.7562 +tranz=-0.339987 +pitch=6.34684e-06 +yaw=4.42963e-09 +roll=5.71235e-10 + +[siteedz_rdleg] +parent=jointrknee +tranx=0.000229836 +trany=-1.27285 +tranz=-0.685479 +pitch=-1.75964e-21 +yaw=1.75578e-08 +roll=-2.00439e-13 + +[siteedz_ruleg] +parent=jointrthigh +tranx=-0.271387 +trany=-1.09474 +tranz=0.528712 +pitch=1.78844e-06 +yaw=0.002618 +roll=1.14403e-07 + +[jointshadow] // apply terrain angle to pitch and roll +parent=ROOT +Type=balltranslate +Former Segment=segshd +tranx=0 +trany=0.05 +tranz=0 +pitch=0 +yaw=0 +roll=0 +joint=jointtshadow + +[jointtshadow] // apply torso twist to yaw +parent=jointshadow +Type=hingey +Former Segment=segtshd +tranx=0 +trany=0 +tranz=0 +pitch=0 +yaw=0 +roll=0 + +[jointeye] +parent=jointtorso +Type=balltranslate +Former Segment=segnone +tranx=-0.00345132 +trany=1.68696 +tranz=-1.31825 +pitch=9.31331e-10 +yaw=-1.74623e-07 +roll=6.64025e-13 +site=siteeyepoint + +[siteeyepoint] // moved by AddEyeJoint +parent=jointeye +tranx=0 +trany=0 +tranz=0 +pitch=0 +yaw=0 +roll=0 diff --git a/CONTENT/BT/VIDEO/MAX1SKIN.DZM b/CONTENT/BT/VIDEO/MAX1SKIN.DZM new file mode 100644 index 0000000..d5412fa --- /dev/null +++ b/CONTENT/BT/VIDEO/MAX1SKIN.DZM @@ -0,0 +1,2 @@ +[dz_utorso] +material=maxskin:blakskn_dz_utorso_mtl diff --git a/CONTENT/BT/VIDEO/MAX2SKIN.DZM b/CONTENT/BT/VIDEO/MAX2SKIN.DZM new file mode 100644 index 0000000..d5412fa --- /dev/null +++ b/CONTENT/BT/VIDEO/MAX2SKIN.DZM @@ -0,0 +1,2 @@ +[dz_utorso] +material=maxskin:blakskn_dz_utorso_mtl diff --git a/CONTENT/BT/VIDEO/MAXSKIN.DZM b/CONTENT/BT/VIDEO/MAXSKIN.DZM new file mode 100644 index 0000000..d5412fa --- /dev/null +++ b/CONTENT/BT/VIDEO/MAXSKIN.DZM @@ -0,0 +1,2 @@ +[dz_utorso] +material=maxskin:blakskn_dz_utorso_mtl diff --git a/CONTENT/BT/VIDEO/MAXSKIN.ORG b/CONTENT/BT/VIDEO/MAXSKIN.ORG new file mode 100644 index 0000000..d5412fa --- /dev/null +++ b/CONTENT/BT/VIDEO/MAXSKIN.ORG @@ -0,0 +1,2 @@ +[dz_utorso] +material=maxskin:blakskn_dz_utorso_mtl diff --git a/CONTENT/BT/VIDEO/NAFC.PFX b/CONTENT/BT/VIDEO/NAFC.PFX new file mode 100644 index 0000000..0d9648b --- /dev/null +++ b/CONTENT/BT/VIDEO/NAFC.PFX @@ -0,0 +1,32 @@ +btfx:firesmoke1_scr_tex +0x00000668 35 0.2 150 +0 -0.25 -4 1.25 +2 1 -3 -4 -2 -3 +0.5 1 0 0 -1 0.0 +0 1 3 0 0.5 2 +1 0 +2.20 1.30 0.90 1.60 0.00 0.00 0.00 0.00 +2.00 0.50 0.00 0.60 0.00 0.00 0.00 0.00 +-0.10 -0.30 -1.0 -2 0.00 0.00 0.00 2.00 +0.00 0.00 -1.00 -2 0.00 0.00 0.00 2.00 +1 1 +0.1 0.4 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one diff --git a/CONTENT/BT/VIDEO/NBIGBOOM.PFX b/CONTENT/BT/VIDEO/NBIGBOOM.PFX new file mode 100644 index 0000000..1b18154 --- /dev/null +++ b/CONTENT/BT/VIDEO/NBIGBOOM.PFX @@ -0,0 +1,33 @@ +btfx:firesmoke2_scr_tex +0x00000674 25 0.5 40 +0 1 0 5 +150 40 150 -280 -60 -280 +5.5 5.0 25 30 -1 0 +2.5 -0.5 2.5 -5 -10 -5 +2 0 +2.00 0.70 0.20 2.00 0.00 0.00 0.00 0.00 +1.00 0.30 0.00 1.00 0.00 0.00 0.00 0.00 +0.0 -0.20 -0.50 -0.50 0.00 0.00 0.00 0.00 +0.0 0.00 0.00 -2.00 0.00 0.00 0.00 0.00 +10 1 +5.0 1.5 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one + \ No newline at end of file diff --git a/CONTENT/BT/VIDEO/NDAM1.PFX b/CONTENT/BT/VIDEO/NDAM1.PFX new file mode 100644 index 0000000..3aec0ab --- /dev/null +++ b/CONTENT/BT/VIDEO/NDAM1.PFX @@ -0,0 +1,32 @@ +btfx:firesmoke1_scr_tex +0x00000670 10 1 6 +0 0 0 1 +1 2 1 -2 1 -2 +0.5 0.5 1 1 0.00 0 +0 1 0 0 1 0 +0.5 0.5 +0.50 0.50 0.50 1.10 0.00 0.00 0.00 0.00 +0.50 0.50 0.50 1.00 0.00 0.00 0.00 0.00 +0.10 0.10 0.10 0.00 0.00 0.00 0.00 0.00 +0.10 0.10 0.10 0.00 0.00 0.00 0.00 0.00 +10 1 +1.0 0.5 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one diff --git a/CONTENT/BT/VIDEO/NDAM2.PFX b/CONTENT/BT/VIDEO/NDAM2.PFX new file mode 100644 index 0000000..ec24c10 --- /dev/null +++ b/CONTENT/BT/VIDEO/NDAM2.PFX @@ -0,0 +1,32 @@ +btfx:firesmoke1_scr_tex +0x00000670 20 2 12 +0 0 0 1 +2 3 2 -4 1 -4 +0.5 0.5 1 1 0.00 0 +0 1 0 0 1 0 +0.5 0.5 +0.30 0.30 0.30 1.10 0.00 0.00 0.00 0.00 +0.30 0.30 0.30 1.00 0.00 0.00 0.00 0.00 +-0.00 -0.00 -0.00 0.00 0.00 0.00 0.00 0.00 +0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 +10 1 +1.0 0.5 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one diff --git a/CONTENT/BT/VIDEO/NDAM3.PFX b/CONTENT/BT/VIDEO/NDAM3.PFX new file mode 100644 index 0000000..38c260b --- /dev/null +++ b/CONTENT/BT/VIDEO/NDAM3.PFX @@ -0,0 +1,32 @@ +btfx:firesmoke1_scr_tex +0x00000670 35 4 16 +0 0 0 1 +1 1 1 -2 1 -2 +0.6 0.6 1.2 1 -0.7 0 +0 0.75 0 0 1 0 +0.5 0.5 +0.50 0.20 0.00 1.50 0.00 0.00 0.00 0.00 +0.00 0.00 0.00 1.00 0.00 0.00 0.00 0.00 +-0.50 -0.50 -0.50 0.00 0.00 0.00 0.00 0.00 +0.00 0.00 0.00 -0.10 0.00 0.00 0.00 0.00 +10 1 +1.75 0.25 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one diff --git a/CONTENT/BT/VIDEO/NDAM4.PFX b/CONTENT/BT/VIDEO/NDAM4.PFX new file mode 100644 index 0000000..cd00ba6 --- /dev/null +++ b/CONTENT/BT/VIDEO/NDAM4.PFX @@ -0,0 +1,33 @@ +btfx:firesmoke1_scr_tex +0x00000670 40 5 18 +0 0 0 1 +1 1 1 -2 -2 -2 +0.5 0.5 1.5 1 -1.0 0 +0 2.5 0 0 1.5 0 +0.5 0.5 +1.70 0.70 0.20 2.00 0.00 0.00 0.00 0.00 +0.00 0.00 0.00 1.00 0.00 0.00 0.00 0.00 +-1.50 -1.50 -1.50 0.00 0.00 0.00 0.00 0.00 +0.00 0.00 0.00 -0.10 0.00 0.00 0.00 0.00 +10 1 +1.5 0.5 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one + \ No newline at end of file diff --git a/CONTENT/BT/VIDEO/NDAM5.PFX b/CONTENT/BT/VIDEO/NDAM5.PFX new file mode 100644 index 0000000..0936a3a --- /dev/null +++ b/CONTENT/BT/VIDEO/NDAM5.PFX @@ -0,0 +1,33 @@ +btfx:firesmoke4_scr_tex +0x00000674 10 0.25 20 +0 1 0 2 +15 10 20 -30 -20 -40 +1.5 2.0 5 5 -1 0 +2.5 2.5 2.5 -5 -10 -5 +7 3 +2.00 0.70 0.20 2.00 0.00 0.00 0.00 0.00 +1.00 0.30 0.00 1.00 0.00 0.00 0.00 0.00 +0.0 -0.20 -0.50 -0.50 0.00 0.00 0.00 0.00 +0.0 0.00 0.00 -2.00 0.00 0.00 0.00 0.00 +10 1 +1.5 0.5 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one + \ No newline at end of file diff --git a/CONTENT/BT/VIDEO/NDTHSMK.PFX b/CONTENT/BT/VIDEO/NDTHSMK.PFX new file mode 100644 index 0000000..1aeec35 --- /dev/null +++ b/CONTENT/BT/VIDEO/NDTHSMK.PFX @@ -0,0 +1,32 @@ +btfx:firesmoke1_scr_tex +0x00000002 25 10 3 +0 3 0 2 +1 5 1 -2 4 -2 +2.0 0.9 1.9 1 -0.001 0 +0 1 0 0 1 0.5 +0.1 0.1 + 0.70 0.30 0.10 2.00 0.00 0.00 0.00 0.50 + 0.50 0.20 0.00 1.00 0.00 0.00 0.00 0.50 +-2.30 -1.10 -1.00 0.00 0.00 0.00 0.00 0.00 +-2.00 -1.00 -0.60 0.00 0.00 0.00 0.00 0.00 +0 0 +5 2 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one diff --git a/CONTENT/BT/VIDEO/NLRMTAIL.PFX b/CONTENT/BT/VIDEO/NLRMTAIL.PFX new file mode 100644 index 0000000..ea5fd23 --- /dev/null +++ b/CONTENT/BT/VIDEO/NLRMTAIL.PFX @@ -0,0 +1,33 @@ +btfx:firesmoke1_scr_tex +0x00000667 40 2 30 +0 0 0 0 +3 2 10 -6 -1 20 +1 1 20 10 0 0 +6 3 3 -12 2 -6 +0 0 +2.20 1.00 0.50 1.60 0.00 0.00 0.00 0.00 +0.00 0.00 0.00 1.00 0.00 0.00 0.00 0.00 +-0.20 -0.20 -0.20 -0.50 0.00 0.00 0.00 0.00 +0.00 0.00 0.00 1.10 0.00 0.00 0.00 0.00 +10 1 +0.5 0.5 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one + \ No newline at end of file diff --git a/CONTENT/BT/VIDEO/NMEDBOOM.PFX b/CONTENT/BT/VIDEO/NMEDBOOM.PFX new file mode 100644 index 0000000..047526e --- /dev/null +++ b/CONTENT/BT/VIDEO/NMEDBOOM.PFX @@ -0,0 +1,33 @@ +btfx:firesmoke4_scr_tex +0x00000674 10 0.5 16 +0 1 0 2 +120 30 120 -240 -60 -240 +3.5 1.0 8 8 -1 0 +2.5 2.5 2.5 -5 -10 -5 +7 3 +1.30 0.50 0.30 2.00 0.00 0.00 0.00 0.00 +0.20 0.20 0.20 1.00 0.00 0.00 0.00 0.00 +0.0 0.00 0.00 -0.50 0.00 0.00 0.00 0.00 +0.0 0.00 0.00 -2.00 0.00 0.00 0.00 0.00 +10 1 +1.5 0.5 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one + \ No newline at end of file diff --git a/CONTENT/BT/VIDEO/NMISSING.PFX b/CONTENT/BT/VIDEO/NMISSING.PFX new file mode 100644 index 0000000..7820b2c --- /dev/null +++ b/CONTENT/BT/VIDEO/NMISSING.PFX @@ -0,0 +1,33 @@ +btfx:firesmoke1_scr_tex +0x00000670 35 8 20 +0 0 0 1 +1 1 1 -2 -2 -2 +0.5 0.5 1.5 1 -1.0 0 +0 2.5 0 0 1.5 0 +0.5 0.5 +0.0 1.0 0.0 2.00 0.00 0.00 0.00 0.00 +0.00 0.00 0.00 1.00 0.00 0.00 0.00 0.00 +0.0 1.0 0.0 0.00 0.00 0.00 0.00 0.00 +0.00 0.00 0.00 -0.10 0.00 0.00 0.00 0.00 +10 1 +1.0 0.5 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one + \ No newline at end of file diff --git a/CONTENT/BT/VIDEO/NNBOOM.PFX b/CONTENT/BT/VIDEO/NNBOOM.PFX new file mode 100644 index 0000000..c0b9773 --- /dev/null +++ b/CONTENT/BT/VIDEO/NNBOOM.PFX @@ -0,0 +1,33 @@ +btfx:firesmoke1_scr_tex +0x00000674 35 0.2 150 +0 1 0 2 +150 60 150 -300 -250 -300 +0.5 5.0 25 25 -5 0 +2.5 2.5 2.5 -5 -10 -5 +5 1 +0.8 0.30 0.00 2.00 0.00 0.00 0.00 0.00 +0.8 0.30 0.00 1.00 0.00 0.00 0.00 0.00 +0 00 0 -2 0.00 0.00 0.00 0.00 +0 00 0 -5 0.00 0.00 0.00 0.00 +10 1 +1.5 1 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one + \ No newline at end of file diff --git a/CONTENT/BT/VIDEO/NSMLBOOM.PFX b/CONTENT/BT/VIDEO/NSMLBOOM.PFX new file mode 100644 index 0000000..c9d4e2d --- /dev/null +++ b/CONTENT/BT/VIDEO/NSMLBOOM.PFX @@ -0,0 +1,33 @@ +btfx:firesmoke4_scr_tex +0x30000674 10 0.25 30 +0 1 0 1 +25 40 25 -50 -50 -50 +2.5 1.0 4 4 -1 0 +2.5 2.5 2.5 -5 -10 -5 +3 3 +0.90 0.90 0.90 1.00 0.00 0.00 0.00 0.00 +0.20 0.20 0.20 1.00 0.00 0.00 0.00 0.00 +0.0 0.00 0.00 -0.50 0.00 0.00 0.00 0.00 +0.0 0.00 0.00 -2.00 0.00 0.00 0.00 0.00 +10 1 +2.5 0.5 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one + \ No newline at end of file diff --git a/CONTENT/BT/VIDEO/NSRM.PFX b/CONTENT/BT/VIDEO/NSRM.PFX new file mode 100644 index 0000000..147290f --- /dev/null +++ b/CONTENT/BT/VIDEO/NSRM.PFX @@ -0,0 +1,33 @@ +btfx:firesmoke1_scr_tex +0x00000667 65 2 300 +0 0 0 1 +3 2 10 -6 -1 20 +1 2 2 2 6 0 +1 1 1 -2 -2 -2 +0 0 +1.80 0.90 0.20 1.60 0.00 0.00 0.00 0.00 +0.20 0.05 0.00 1.00 0.00 0.00 0.00 0.00 +0.20 0.05 0.00 0.0 0.00 0.00 0.00 0.00 +0.10 0.00 0.00 0.00 0.00 0.00 0.00 0.00 +10 1 +0.1 0.1 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one + \ No newline at end of file diff --git a/CONTENT/BT/VIDEO/NTRKBOOM.PFX b/CONTENT/BT/VIDEO/NTRKBOOM.PFX new file mode 100644 index 0000000..bc41011 --- /dev/null +++ b/CONTENT/BT/VIDEO/NTRKBOOM.PFX @@ -0,0 +1,33 @@ +btfx:firesmoke4_scr_tex +0x00000674 10 0.25 24 +0 1 0 2 +150 30 150 -300 -60 -300 +3.5 2.0 10 10 -1 0 +2.5 2.5 2.5 -5 -10 -5 +7 3 +2.00 0.70 0.20 2.00 0.00 0.00 0.00 0.00 +1.00 0.30 0.00 1.00 0.00 0.00 0.00 0.00 +0.0 -0.20 -0.50 -0.50 0.00 0.00 0.00 0.00 +0.0 0.00 0.00 -2.00 0.00 0.00 0.00 0.00 +10 1 +1.5 0.5 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one + \ No newline at end of file diff --git a/CONTENT/BT/VIDEO/NTRKBURN.PFX b/CONTENT/BT/VIDEO/NTRKBURN.PFX new file mode 100644 index 0000000..8cd6465 --- /dev/null +++ b/CONTENT/BT/VIDEO/NTRKBURN.PFX @@ -0,0 +1,32 @@ +btfx:firesmoke4_scr_tex +0x00000667 35 4 4 +0 0 0 1 +1 1 1 -2 1 -2 +1.5 0.5 0.5 0.5 0.00 0 +0 1 0 0 0.5 0 +0.25 0.2 +1.50 0.60 0.20 2.50 0.00 0.00 0.00 0.00 +1.00 0.30 0.00 1.00 0.00 0.00 0.00 0.00 +-0.20 -0.50 -0.90 0.00 0.00 0.00 0.00 0.00 +-0.10 -0.10 -0.10 0.00 0.00 0.00 0.00 0.00 +0 0 +5 1 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one diff --git a/CONTENT/BT/VIDEO/OWNSKIN.DZM b/CONTENT/BT/VIDEO/OWNSKIN.DZM new file mode 100644 index 0000000..0b0d787 --- /dev/null +++ b/CONTENT/BT/VIDEO/OWNSKIN.DZM @@ -0,0 +1,88 @@ +[dz_rdleg] +material=ownskin:gen4_dz_rdleg_mtl +material=ownskin:gen3_dz_rdleg_mtl +material=ownskin:blakskn_dz_rdleg_mtl +material=ownskin:owen3_dz_rdleg_mtl +material=ownskin:owen4_dz_rdleg_mtl +material=ownskin:lgo1_dz_rdleg_mtl +[dz_ldleg] +material=ownskin:gen4_dz_ldleg_mtl +material=ownskin:gen3_dz_ldleg_mtl +material=ownskin:blakskn_dz_ldleg_mtl +material=ownskin:owen3_dz_ldleg_mtl +material=ownskin:owen4_dz_ldleg_mtl +material=ownskin:lgo1_dz_ldleg_mtl +[dz_ruleg] +material=ownskin:gen4_dz_ruleg_mtl +material=ownskin:gen3_dz_ruleg_mtl +material=ownskin:blakskn_dz_ruleg_mtl +material=ownskin:owen3_dz_ruleg_mtl +material=ownskin:owen4_dz_ruleg_mtl +material=ownskin:gen3a_dz_ruleg_mtl +[dz_luleg] +material=ownskin:gen4_dz_luleg_mtl +material=ownskin:gen3_dz_luleg_mtl +material=ownskin:blakskn_dz_luleg_mtl +material=ownskin:owen3_dz_luleg_mtl +material=ownskin:owen4_dz_luleg_mtl +material=ownskin:gen3a_dz_luleg_mtl +[dz_rearrtorso] +material=ownskin:owen3_dz_rearrtorso_mtl +material=ownskin:owen2_dz_rearrtorso_mtl +[dz_rearutorso] +material=ownskin:owen3_dz_rearutorso_mtl +material=ownskin:owen4_dz_rearutorso_mtl +material=ownskin:owen2_dz_rearutorso_mtl +material=ownskin:gen4a_dz_rearutorso_mtl +[dz_rearltorso] +material=ownskin:owen3_dz_rearltorso_mtl +material=ownskin:owen2_dz_rearltorso_mtl +[dz_reardtorso] +material=ownskin:owen3_dz_reardtorso_mtl +[dz_dtorso] +material=ownskin:owen3_dz_dtorso_mtl +material=ownskin:owen2_dz_dtorso_mtl +material=ownskin:owen1_dz_dtorso_mtl +material=ownskin:gen3a_dz_dtorso_mtl +[dz_utorso] +material=ownskin:owen3_dz_utorso_mtl +material=ownskin:owen4_dz_utorso_mtl +material=ownskin:owen2_dz_utorso_mtl +material=ownskin:owen1_dz_utorso_mtl +[dz_rtorso] +material=ownskin:owen3_dz_rtorso_mtl +material=ownskin:owen4_dz_rtorso_mtl +material=ownskin:owen2_dz_rtorso_mtl +material=ownskin:owen1_dz_rtorso_mtl +[dz_ltorso] +material=ownskin:owen3_dz_ltorso_mtl +material=ownskin:owen4_dz_ltorso_mtl +material=ownskin:owen2_dz_ltorso_mtl +material=ownskin:owen1_dz_ltorso_mtl +[dz_lmissle] +material=ownskin:owen3_dz_lmissle_mtl +material=ownskin:owen4_dz_lmissle_mtl +material=ownskin:owen5_dz_lmissle_mtl +material=ownskin:gen3drkgry_dz_lmissle_mtl +material=ownskin:gen3medgry_dz_lmissle_mtl +material=ownskin:damcolor_dz_lmissle_mtl +[dz_rmissle] +material=ownskin:owen3_dz_rmissle_mtl +material=ownskin:owen4_dz_rmissle_mtl +material=ownskin:owen5_dz_rmissle_mtl +material=ownskin:gen3drkgry_dz_rmissle_mtl +material=ownskin:gen3medgry_dz_rmissle_mtl +material=ownskin:damcolor_dz_rmissle_mtl +[dz_searchlight] +material=ownskin:owen4_dz_searchlight_mtl +material=ownskin:owen2_dz_searchlight_mtl +material=ownskin:gen3a_dz_searchlight_mtl +material=ownskin:owen6_dz_searchlight_mtl +material=ownskin:gen3drkgry_dz_searchlight_mtl +material=ownskin:gen3medgry_dz_searchlight_mtl +[dz_lfoot] +material=ownskin:gen1_dz_lfoot_mtl +material=ownskin:gen1a_dz_lfoot_mtl +[dz_rfoot] +material=ownskin:gen1_dz_rfoot_mtl +material=ownskin:gen1a_dz_rfoot_mtl diff --git a/CONTENT/BT/VIDEO/OWXSKIN.DZM b/CONTENT/BT/VIDEO/OWXSKIN.DZM new file mode 100644 index 0000000..e26058d --- /dev/null +++ b/CONTENT/BT/VIDEO/OWXSKIN.DZM @@ -0,0 +1,35 @@ +[dz_utorso] +material=owxskin:owen1_dz_utorso_mtl +material=owxskin:owen2_dz_utorso_mtl +material=owxskin:owen4_dz_utorso_mtl +material=owxskin:blakskn_dz_utorso_mtl +[dz_luleg] +material=owxskin:owen4_dz_luleg_mtl +material=owxskin:gen3_dz_luleg_mtl +material=owxskin:blakskn_dz_luleg_mtl +material=owxskin:gen4_dz_luleg_mtl +material=owxskin:owen3_dz_luleg_mtl +material=owxskin:gen3a_dz_luleg_mtl +[dz_ldleg] +material=owxskin:owen4_dz_ldleg_mtl +material=owxskin:gen3_dz_ldleg_mtl +material=owxskin:blakskn_dz_ldleg_mtl +material=owxskin:gen4_dz_ldleg_mtl +material=owxskin:owen3_dz_ldleg_mtl +[dz_rdleg] +material=owxskin:owen4_dz_rdleg_mtl +material=owxskin:gen3_dz_rdleg_mtl +material=owxskin:blakskn_dz_rdleg_mtl +material=owxskin:gen4_dz_rdleg_mtl +material=owxskin:owen3_dz_rdleg_mtl +[dz_ruleg] +material=owxskin:owen4_dz_ruleg_mtl +material=owxskin:gen3_dz_ruleg_mtl +material=owxskin:blakskn_dz_ruleg_mtl +material=owxskin:gen4_dz_ruleg_mtl +material=owxskin:owen3_dz_ruleg_mtl +material=owxskin:gen3a_dz_ruleg_mtl +[dz_lfoot] +material=owxskin:gen1_dz_lfoot_mtl +[dz_rfoot] +material=owxskin:gen1_dz_rfoot_mtl diff --git a/CONTENT/BT/VIDEO/PGN.SKL b/CONTENT/BT/VIDEO/PGN.SKL new file mode 100644 index 0000000..213abc7 --- /dev/null +++ b/CONTENT/BT/VIDEO/PGN.SKL @@ -0,0 +1,55 @@ +[LAB_ONLY] // this file has not been approved for release + +[DamageZones] // call MakeEntryList with 'dz_' +dz_base=0 + +[ROOT] +JointCount=2 +DZoneCount=1 +Object=pgn_base.bgf +dzone=dz_base +Former Segment=segbase +tranx=0 +trany=0 +tranz=0 +pitch=0 +yaw=-0 +roll=0 +joint=jointturret + +[jointturret] +parent=ROOT +Type=hingey +Object=pgn_tur.bgf +dzone=dz_base +Former Segment=segtur +tranx=0 +trany=1.00013 +tranz=0 +pitch=0 +yaw=-0 +roll=0 +joint=jointgun + +[jointgun] +parent=jointturret +Type=hingex +Object=pgn_gun.bgf +dzone=dz_base +Former Segment=seggun +tranx=0 +trany=1.47583 +tranz=-0.669305 +pitch=0 +yaw=-3.55272e-14 +roll=-1.74845e-07 +site=sitegunport + +[sitegunport] +parent=jointgun +tranx=-2.84217e-13 +trany=0 +tranz=-9.8505 +pitch=-2.3283e-10 +yaw=4.08692e-14 +roll=-6.21892e-25 diff --git a/CONTENT/BT/VIDEO/PGND.SKL b/CONTENT/BT/VIDEO/PGND.SKL new file mode 100644 index 0000000..934f491 --- /dev/null +++ b/CONTENT/BT/VIDEO/PGND.SKL @@ -0,0 +1,55 @@ +[LAB_ONLY] // this file has not been approved for release + +[DamageZones] // call MakeEntryList with 'dz_' +dz_base=0 + +[ROOT] +JointCount=2 +DZoneCount=1 +Object=pgndbase.bgf +dzone=dz_base +Former Segment=segbase +tranx=0 +trany=0 +tranz=0 +pitch=0 +yaw=-0 +roll=0 +joint=jointturret + +[jointturret] +parent=ROOT +Type=hingey +Object=pgndtur.bgf +dzone=dz_base +Former Segment=segtur +tranx=0 +trany=1.00013 +tranz=0 +pitch=0 +yaw=-0 +roll=0 +joint=jointgun + +[jointgun] +parent=jointturret +Type=hingex +Object=pgndgun.bgf +dzone=dz_base +Former Segment=seggun +tranx=0 +trany=1.47583 +tranz=-0.669305 +pitch=0 +yaw=-3.55272e-14 +roll=-1.74845e-07 +site=sitegunport + +[sitegunport] +parent=jointgun +tranx=-2.84217e-13 +trany=0 +tranz=-9.8505 +pitch=-2.3283e-10 +yaw=4.08692e-14 +roll=-6.21892e-25 diff --git a/CONTENT/BT/VIDEO/RAPSKIN.DZM b/CONTENT/BT/VIDEO/RAPSKIN.DZM new file mode 100644 index 0000000..985026d --- /dev/null +++ b/CONTENT/BT/VIDEO/RAPSKIN.DZM @@ -0,0 +1,81 @@ +[dz_rdleg] +material=rapskin:gen4_dz_rdleg_mtl +material=rapskin:gen3_dz_rdleg_mtl +material=rapskin:blakskn_dz_rdleg_mtl +material=rapskin:raptr3_dz_rdleg_mtl +material=rapskin:raptr4_dz_rdleg_mtl +material=rapskin:lgo1_dz_rdleg_mtl +[dz_ldleg] +material=rapskin:gen4_dz_ldleg_mtl +material=rapskin:gen3_dz_ldleg_mtl +material=rapskin:blakskn_dz_ldleg_mtl +material=rapskin:raptr3_dz_ldleg_mtl +material=rapskin:raptr4_dz_ldleg_mtl +material=rapskin:lgo1_dz_ldleg_mtl +[dz_ruleg] +material=rapskin:gen4_dz_ruleg_mtl +material=rapskin:gen3_dz_ruleg_mtl +material=rapskin:blakskn_dz_ruleg_mtl +material=rapskin:raptr3_dz_ruleg_mtl +material=rapskin:raptr4_dz_ruleg_mtl +material=rapskin:gen3a_dz_ruleg_mtl +[dz_luleg] +material=rapskin:gen4_dz_luleg_mtl +material=rapskin:gen3_dz_luleg_mtl +material=rapskin:blakskn_dz_luleg_mtl +material=rapskin:raptr3_dz_luleg_mtl +material=rapskin:raptr4_dz_luleg_mtl +material=rapskin:gen3a_dz_luleg_mtl +[dz_rearrtorso] +material=rapskin:raptr3_dz_rearrtorso_mtl +material=rapskin:raptr2_dz_rearrtorso_mtl +[dz_rearutorso] +material=rapskin:raptr3_dz_rearutorso_mtl +material=rapskin:raptr4_dz_rearutorso_mtl +material=rapskin:raptr2_dz_rearutorso_mtl +material=rapskin:gen4a_dz_rearutorso_mtl +[dz_rearltorso] +material=rapskin:raptr3_dz_rearltorso_mtl +material=rapskin:raptr2_dz_rearltorso_mtl +[dz_reardtorso] +material=rapskin:raptr3_dz_reardtorso_mtl +[dz_dtorso] +material=rapskin:raptr3_dz_dtorso_mtl +material=rapskin:raptr2_dz_dtorso_mtl +material=rapskin:raptr1_dz_dtorso_mtl +material=rapskin:gen3a_dz_dtorso_mtl +[dz_utorso] +material=rapskin:raptr3_dz_utorso_mtl +material=rapskin:raptr4_dz_utorso_mtl +material=rapskin:raptr2_dz_utorso_mtl +material=rapskin:raptr1_dz_utorso_mtl +[dz_rtorso] +material=rapskin:raptr3_dz_rtorso_mtl +material=rapskin:raptr4_dz_rtorso_mtl +material=rapskin:raptr2_dz_rtorso_mtl +material=rapskin:raptr1_dz_rtorso_mtl +[dz_ltorso] +material=rapskin:raptr3_dz_ltorso_mtl +material=rapskin:raptr4_dz_ltorso_mtl +material=rapskin:raptr2_dz_ltorso_mtl +material=rapskin:raptr1_dz_ltorso_mtl +[dz_missle] +material=rapskin:raptr3_dz_missle_mtl +material=rapskin:raptr4_dz_missle_mtl +material=rapskin:raptr5_dz_missle_mtl +material=rapskin:gen3drkgry_dz_missle_mtl +material=rapskin:gen3medgry_dz_missle_mtl +material=rapskin:damcolor_dz_missle_mtl +[dz_searchlight] +material=rapskin:raptr4_dz_searchlight_mtl +material=rapskin:raptr2_dz_searchlight_mtl +material=rapskin:gen3a_dz_searchlight_mtl +material=rapskin:raptr6_dz_searchlight_mtl +material=rapskin:gen3drkgry_dz_searchlight_mtl +material=rapskin:gen3medgry_dz_searchlight_mtl +[dz_lfoot] +material=rapskin:gen1_dz_lfoot_mtl +material=rapskin:gen1a_dz_lfoot_mtl +[dz_rfoot] +material=rapskin:gen1_dz_rfoot_mtl +material=rapskin:gen1a_dz_rfoot_mtl diff --git a/CONTENT/BT/VIDEO/RAXSKIN.DZM b/CONTENT/BT/VIDEO/RAXSKIN.DZM new file mode 100644 index 0000000..0a545da --- /dev/null +++ b/CONTENT/BT/VIDEO/RAXSKIN.DZM @@ -0,0 +1,81 @@ +[dz_rdleg] +material=raxskin:gen4_dz_rdleg_mtl +material=raxskin:gen3_dz_rdleg_mtl +material=raxskin:blakskn_dz_rdleg_mtl +material=raxskin:raptr3_dz_rdleg_mtl +material=raxskin:raptr4_dz_rdleg_mtl +material=raxskin:lgo1_dz_rdleg_mtl +[dz_ldleg] +material=raxskin:gen4_dz_ldleg_mtl +material=raxskin:gen3_dz_ldleg_mtl +material=raxskin:blakskn_dz_ldleg_mtl +material=raxskin:raptr3_dz_ldleg_mtl +material=raxskin:raptr4_dz_ldleg_mtl +material=raxskin:lgo1_dz_ldleg_mtl +[dz_ruleg] +material=raxskin:gen4_dz_ruleg_mtl +material=raxskin:gen3_dz_ruleg_mtl +material=raxskin:blakskn_dz_ruleg_mtl +material=raxskin:raptr3_dz_ruleg_mtl +material=raxskin:raptr4_dz_ruleg_mtl +material=raxskin:gen3a_dz_ruleg_mtl +[dz_luleg] +material=raxskin:gen4_dz_luleg_mtl +material=raxskin:gen3_dz_luleg_mtl +material=raxskin:blakskn_dz_luleg_mtl +material=raxskin:raptr3_dz_luleg_mtl +material=raxskin:raptr4_dz_luleg_mtl +material=raxskin:gen3a_dz_luleg_mtl +[dz_rearrtorso] +material=raxskin:raptr3_dz_rearrtorso_mtl +material=raxskin:raptr2_dz_rearrtorso_mtl +[dz_rearutorso] +material=raxskin:raptr3_dz_rearutorso_mtl +material=raxskin:raptr4_dz_rearutorso_mtl +material=raxskin:raptr2_dz_rearutorso_mtl +material=raxskin:gen4a_dz_rearutorso_mtl +[dz_rearltorso] +material=raxskin:raptr3_dz_rearltorso_mtl +material=raxskin:raptr2_dz_rearltorso_mtl +[dz_reardtorso] +material=raxskin:raptr3_dz_reardtorso_mtl +[dz_dtorso] +material=raxskin:raptr3_dz_dtorso_mtl +material=raxskin:raptr2_dz_dtorso_mtl +material=raxskin:raptr1_dz_dtorso_mtl +material=raxskin:gen3a_dz_dtorso_mtl +[dz_utorso] +material=raxskin:raptr3_dz_utorso_mtl +material=raxskin:raptr4_dz_utorso_mtl +material=raxskin:raptr2_dz_utorso_mtl +material=raxskin:raptr1_dz_utorso_mtl +[dz_rtorso] +material=raxskin:raptr3_dz_rtorso_mtl +material=raxskin:raptr4_dz_rtorso_mtl +material=raxskin:raptr2_dz_rtorso_mtl +material=raxskin:raptr1_dz_rtorso_mtl +[dz_ltorso] +material=raxskin:raptr3_dz_ltorso_mtl +material=raxskin:raptr4_dz_ltorso_mtl +material=raxskin:raptr2_dz_ltorso_mtl +material=raxskin:raptr1_dz_ltorso_mtl +[dz_missle] +material=raxskin:raptr3_dz_missle_mtl +material=raxskin:raptr4_dz_missle_mtl +material=raxskin:raptr5_dz_missle_mtl +material=raxskin:gen3drkgry_dz_missle_mtl +material=raxskin:gen3medgry_dz_missle_mtl +material=raxskin:damcolor_dz_missle_mtl +[dz_searchlight] +material=raxskin:raptr4_dz_searchlight_mtl +material=raxskin:raptr2_dz_searchlight_mtl +material=raxskin:gen3a_dz_searchlight_mtl +material=raxskin:raptr6_dz_searchlight_mtl +material=raxskin:gen3drkgry_dz_searchlight_mtl +material=raxskin:gen3medgry_dz_searchlight_mtl +[dz_lfoot] +material=raxskin:gen1_dz_lfoot_mtl +material=raxskin:gen1a_dz_lfoot_mtl +[dz_rfoot] +material=raxskin:gen1_dz_rfoot_mtl +material=raxskin:gen1a_dz_rfoot_mtl diff --git a/CONTENT/BT/VIDEO/RESULT2.TXT b/CONTENT/BT/VIDEO/RESULT2.TXT new file mode 100644 index 0000000..9680d2c --- /dev/null +++ b/CONTENT/BT/VIDEO/RESULT2.TXT @@ -0,0 +1,5 @@ +BattleTech v4.2 + + +Error - Resource file btl4.res v1.0.0.0 is obsolete! + diff --git a/CONTENT/BT/VIDEO/SHKWAVE.PFX b/CONTENT/BT/VIDEO/SHKWAVE.PFX new file mode 100644 index 0000000..0b59655 --- /dev/null +++ b/CONTENT/BT/VIDEO/SHKWAVE.PFX @@ -0,0 +1,33 @@ +btfx:firesmoke2_scr_tex +00000674 5 0.2 1 +0 0 0 2 +0 2 0 0 0 0 +0.5 1.0 350 25 0 0 +0 0 0 0 0 0 +10 1 +1.0 1.00 1.00 0.75 0.00 0.00 0.00 0.00 +1.0 1.00 1.00 0.90 0.00 0.00 0.00 0.00 +0.5 0.50 0.50 -0.10 0.00 0.00 0.00 0.00 +0.5 0.50 0.50 -0.10 0.00 0.00 0.00 0.00 +0 1 +0.5 0 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one + \ No newline at end of file diff --git a/CONTENT/BT/VIDEO/SMLFLASH.PFX b/CONTENT/BT/VIDEO/SMLFLASH.PFX new file mode 100644 index 0000000..bcf3d82 --- /dev/null +++ b/CONTENT/BT/VIDEO/SMLFLASH.PFX @@ -0,0 +1,33 @@ +btfx:firesmoke4_scr_tex +0x0f000674 45 0.1 400 +0 1 0 2 +20 10 20 -40 10 -40 +3.5 1.0 8 8 -1 0 +0.0 -8.0 0.0 0 -5 0 +0.5 0.5 +2.30 0.70 0.10 3.00 1.00 0.50 0.00 0.00 +0.20 0.20 0.20 1.00 0.00 0.00 0.00 0.00 +0.0 0.00 0.00 -0.50 0.00 0.00 0.00 0.00 +0.0 0.00 0.00 -2.00 0.00 0.00 0.00 0.00 +10 1 +3.0 0.2 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one + \ No newline at end of file diff --git a/CONTENT/BT/VIDEO/SMLSMOKE.PFX b/CONTENT/BT/VIDEO/SMLSMOKE.PFX new file mode 100644 index 0000000..818f714 --- /dev/null +++ b/CONTENT/BT/VIDEO/SMLSMOKE.PFX @@ -0,0 +1,33 @@ +btfx:firesmoke4_scr_tex +0x30000667 25 10 4 +0 0 0 1 +1 1 1 -2 1 -2 +0.5 0.5 0.5 0.25 0.00 0 +0 1 0 0 0.5 0 +0.25 0.2 +0.70 0.40 0.30 1.50 0.00 0.00 0.00 0.00 +0.00 0.00 0.00 1.00 0.00 0.00 0.00 0.00 +-0.00 -0.00 -0.00 0.00 0.00 0.00 0.00 0.00 +-0.00 -0.00 -0.00 0.00 0.00 0.00 0.00 0.00 +0 0 +5 1 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one + \ No newline at end of file diff --git a/CONTENT/BT/VIDEO/SND2SKIN.DZM b/CONTENT/BT/VIDEO/SND2SKIN.DZM new file mode 100644 index 0000000..84b1a45 --- /dev/null +++ b/CONTENT/BT/VIDEO/SND2SKIN.DZM @@ -0,0 +1,90 @@ +[dz_rgun] +material=sndskin:gen4_dz_rgun_mtl +material=sndskin:gen3_dz_rgun_mtl +material=sndskin:gen2_dz_rgun_mtl +material=sndskin:gen1_dz_rgun_mtl +material=sndskin:blakskn_dz_rgun_mtl +material=sndskin:gen2a_dz_rgun_mtl +material=sndskin:gen3medgry_dz_rgun_mtl +material=sndskin:damcolor_dz_rgun_mtl +material=sndskin:gen4a_dz_rgun_mtl +[dz_hip] +material=sndskin:gen4_dz_hip_mtl +material=sndskin:gen3_dz_hip_mtl +material=sndskin:gen3a_dz_hip_mtl +[dz_luleg] +material=sndskin:gen4_dz_luleg_mtl +material=sndskin:gen2_dz_luleg_mtl +material=sndskin:gen1_dz_luleg_mtl +[dz_rarm] +material=sndskin:gen4_dz_rarm_mtl +material=sndskin:gen3_dz_rarm_mtl +material=sndskin:gen1_dz_rarm_mtl +material=sndskin:gen3medgry_dz_rarm_mtl +material=sndskin:gen3drkgry_dz_rarm_mtl +material=sndskin:damcolor_dz_rarm_mtl +material=sndskin:gen2medgry_dz_rarm_mtl +[dz_lgun] +material=sndskin:gen4_dz_lgun_mtl +material=sndskin:gen3_dz_lgun_mtl +material=sndskin:gen2_dz_lgun_mtl +material=sndskin:gen1_dz_lgun_mtl +material=sndskin:gen2a_dz_lgun_mtl +material=sndskin:gen3a_dz_lgun_mtl +material=sndskin:gen3drkgry_dz_lgun_mtl +material=sndskin:damcolor_dz_lgun_mtl +[dz_ruleg] +material=sndskin:gen4_dz_ruleg_mtl +material=sndskin:gen2_dz_ruleg_mtl +material=sndskin:gen1_dz_ruleg_mtl +[dz_larm] +material=sndskin:gen3_dz_larm_mtl +material=sndskin:gen2_dz_larm_mtl +material=sndskin:gen1_dz_larm_mtl +material=sndskin:blakskn_dz_larm_mtl +material=sndskin:gen3medgry_dz_larm_mtl +material=sndskin:gen3drkgry_dz_larm_mtl +[dz_rfoot] +material=sndskin:gen1_dz_rfoot_mtl +material=sndskin:gen1a_dz_rfoot_mtl +[dz_rdleg] +material=sndskin:gen1_dz_rdleg_mtl +material=sndskin:blakskn_dz_rdleg_mtl +material=sndskin:lgo1_dz_rdleg_mtl +[dz_door] +material=sndskin:gen1_dz_door_mtl +material=sndskin:sund2_dz_door_mtl +[dz_ldleg] +material=sndskin:gen1_dz_ldleg_mtl +material=sndskin:blakskn_dz_ldleg_mtl +material=sndskin:lgo1_dz_ldleg_mtl +[dz_lfoot] +material=sndskin:gen1_dz_lfoot_mtl +material=sndskin:gen1a_dz_lfoot_mtl +[dz_rtorso] +material=sndskin:sund2_dz_rtorso_mtl +material=sndskin:sund1_dz_rtorso_mtl +material=sndskin:sund3_dz_rtorso_mtl +[dz_ltorso] +material=sndskin:sund2_dz_ltorso_mtl +material=sndskin:sund1_dz_ltorso_mtl +material=sndskin:sund3_dz_ltorso_mtl +[dz_dtorso] +material=sndskin:sund2_dz_dtorso_mtl +material=sndskin:sund1_dz_dtorso_mtl +[dz_utorso] +material=sndskin:sund1_dz_utorso_mtl +material=sndskin:sund3_dz_utorso_mtl +material=sndskin:sund4_dz_utorso_mtl +[dz_rearltorso] +material=sndskin:sund1_dz_rearltorso_mtl +material=sndskin:sund3_dz_rearltorso_mtl +[dz_rearrtorso] +material=sndskin:sund1_dz_rearrtorso_mtl +material=sndskin:sund3_dz_rearrtorso_mtl +[dz_reardtorso] +material=sndskin:sund3_dz_reardtorso_mtl +[dz_rearutorso] +material=sndskin:sund3_dz_rearutorso_mtl +[dz_searchlight] +material=sndskin:sund1wht_dz_searchlight_mtl diff --git a/CONTENT/BT/VIDEO/SNX2SKIN.DZM b/CONTENT/BT/VIDEO/SNX2SKIN.DZM new file mode 100644 index 0000000..ec604ce --- /dev/null +++ b/CONTENT/BT/VIDEO/SNX2SKIN.DZM @@ -0,0 +1,8 @@ +[dz_utorso] +material=snxskin:blakskn_dz_utorso_mtl +[dz_ltorso] +material=snxskin:sund1_dz_ltorso_mtl +[dz_rtorso] +material=snxskin:sund1_dz_rtorso_mtl +[dz_searchlight] +material=snxskin:sund1wht_dz_searchlight_mtl diff --git a/CONTENT/BT/VIDEO/SNXSKIN.DZM b/CONTENT/BT/VIDEO/SNXSKIN.DZM new file mode 100644 index 0000000..ec604ce --- /dev/null +++ b/CONTENT/BT/VIDEO/SNXSKIN.DZM @@ -0,0 +1,8 @@ +[dz_utorso] +material=snxskin:blakskn_dz_utorso_mtl +[dz_ltorso] +material=snxskin:sund1_dz_ltorso_mtl +[dz_rtorso] +material=snxskin:sund1_dz_rtorso_mtl +[dz_searchlight] +material=snxskin:sund1wht_dz_searchlight_mtl diff --git a/CONTENT/BT/VIDEO/STISKIN.DZM b/CONTENT/BT/VIDEO/STISKIN.DZM new file mode 100644 index 0000000..9ab6170 --- /dev/null +++ b/CONTENT/BT/VIDEO/STISKIN.DZM @@ -0,0 +1,99 @@ +[dz_door] +material=stiskin:thor2_dz_door_mtl +material=stiskin:gen1a_dz_door_mtl +[dz_searchlight] +material=stiskin:thor2_dz_searchlight_mtl +material=stiskin:thor2wht_dz_searchlight_mtl +[dz_rearrtorso] +material=stiskin:thor2_dz_rearrtorso_mtl +material=stiskin:thor3_dz_rearrtorso_mtl +[dz_utorso] +material=stiskin:thor2_dz_utorso_mtl +material=stiskin:thor3_dz_utorso_mtl +material=stiskin:thor1_dz_utorso_mtl +[dz_reardtorso] +material=stiskin:thor2_dz_reardtorso_mtl +[dz_rearutorso] +material=stiskin:thor2_dz_rearutorso_mtl +material=stiskin:thor3_dz_rearutorso_mtl +[dz_rearltorso] +material=stiskin:thor2_dz_rearltorso_mtl +material=stiskin:thor3_dz_rearltorso_mtl +[dz_rfoot] +material=stiskin:gen1a_dz_rfoot_mtl +material=stiskin:gen1_dz_rfoot_mtl +[dz_lfoot] +material=stiskin:gen1a_dz_lfoot_mtl +material=stiskin:gen1_dz_lfoot_mtl +[dz_rtorso] +material=stiskin:gen3a_dz_rtorso_mtl +material=stiskin:gen3_dz_rtorso_mtl +material=stiskin:thor3_dz_rtorso_mtl +material=stiskin:thor4_dz_rtorso_mtl +material=stiskin:thor1_dz_rtorso_mtl +[dz_ltorso] +material=stiskin:gen3a_dz_ltorso_mtl +material=stiskin:gen3_dz_ltorso_mtl +material=stiskin:thor3_dz_ltorso_mtl +material=stiskin:thor4_dz_ltorso_mtl +material=stiskin:thor1_dz_ltorso_mtl +[dz_rgun] +material=stiskin:gen3a_dz_rgun_mtl +material=stiskin:gen3_dz_rgun_mtl +material=stiskin:gen1_dz_rgun_mtl +material=stiskin:gen4_dz_rgun_mtl +material=stiskin:gen2_dz_rgun_mtl +material=stiskin:gen2a_dz_rgun_mtl +material=stiskin:damcolor_dz_rgun_mtl +material=stiskin:gen3drkgry_dz_rgun_mtl +[dz_hip] +material=stiskin:gen3a_dz_hip_mtl +material=stiskin:gen3_dz_hip_mtl +material=stiskin:gen4_dz_hip_mtl +[dz_larm] +material=stiskin:gen3a_dz_larm_mtl +material=stiskin:gen3_dz_larm_mtl +material=stiskin:gen1_dz_larm_mtl +material=stiskin:gen4_dz_larm_mtl +material=stiskin:gen2_dz_larm_mtl +material=stiskin:gen4a_dz_larm_mtl +material=stiskin:damcolor_dz_larm_mtl +material=stiskin:gen3drkgry_dz_larm_mtl +[dz_rarm] +material=stiskin:gen3_dz_rarm_mtl +material=stiskin:gen1_dz_rarm_mtl +material=stiskin:blakskn_dz_rarm_mtl +material=stiskin:gen2_dz_rarm_mtl +material=stiskin:gen3drkgry_dz_rarm_mtl +material=stiskin:gen3medgry_dz_rarm_mtl +[dz_missle] +material=stiskin:gen1_dz_missle_mtl +material=stiskin:thor3_dz_missle_mtl +material=stiskin:thor5_dz_missle_mtl +material=stiskin:gen3drkgry_dz_missle_mtl +material=stiskin:gen3medgry_dz_missle_mtl +[dz_rdleg] +material=stiskin:gen1_dz_rdleg_mtl +material=stiskin:lgo1_dz_rdleg_mtl +material=stiskin:blakskn_dz_rdleg_mtl +[dz_ldleg] +material=stiskin:gen1_dz_ldleg_mtl +material=stiskin:lgo1_dz_ldleg_mtl +material=stiskin:blakskn_dz_ldleg_mtl +[dz_ruleg] +material=stiskin:gen1_dz_ruleg_mtl +material=stiskin:gen4_dz_ruleg_mtl +material=stiskin:gen2_dz_ruleg_mtl +[dz_luleg] +material=stiskin:gen1_dz_luleg_mtl +material=stiskin:gen4_dz_luleg_mtl +material=stiskin:gen2_dz_luleg_mtl +[dz_dtorso] +material=stiskin:thor4_dz_dtorso_mtl +material=stiskin:thor1_dz_dtorso_mtl +[dz_lgun] +material=stiskin:gen4_dz_lgun_mtl +material=stiskin:gen2_dz_lgun_mtl +material=stiskin:gen2a_dz_lgun_mtl +material=stiskin:damcolor_dz_lgun_mtl +material=stiskin:gen3drkgry_dz_lgun_mtl diff --git a/CONTENT/BT/VIDEO/STXSKIN.DZM b/CONTENT/BT/VIDEO/STXSKIN.DZM new file mode 100644 index 0000000..ce3903b --- /dev/null +++ b/CONTENT/BT/VIDEO/STXSKIN.DZM @@ -0,0 +1,11 @@ +[dz_door] +material=thxskin:thx2_dz_door_mtl +material=thxskin:thx1_dz_door_mtl +[dz_missle] +material=thxskin:thx2_dz_missle_mtl +material=thxskin:thx1_dz_missle_mtl +material=thxskin:gen3_dz_missle_mtl +material=thxskin:thx3_dz_missle_mtl +[dz_utorso] +material=thxskin:thx2_dz_utorso_mtl +material=thxskin:blakskn_dz_utorso_mtl diff --git a/CONTENT/BT/VIDEO/TEX/BDINTA.VTX b/CONTENT/BT/VIDEO/TEX/BDINTA.VTX new file mode 100644 index 0000000..db3b4cf Binary files /dev/null and b/CONTENT/BT/VIDEO/TEX/BDINTA.VTX differ diff --git a/CONTENT/BT/VIDEO/TEX/BDINTB.VTX b/CONTENT/BT/VIDEO/TEX/BDINTB.VTX new file mode 100644 index 0000000..e44e2fd Binary files /dev/null and b/CONTENT/BT/VIDEO/TEX/BDINTB.VTX differ diff --git a/CONTENT/BT/VIDEO/TEX/BDINTC.VTX b/CONTENT/BT/VIDEO/TEX/BDINTC.VTX new file mode 100644 index 0000000..77b1db4 Binary files /dev/null and b/CONTENT/BT/VIDEO/TEX/BDINTC.VTX differ diff --git a/CONTENT/BT/VIDEO/TEX/BUILD/BDLGO128.BAT b/CONTENT/BT/VIDEO/TEX/BUILD/BDLGO128.BAT new file mode 100644 index 0000000..833f7ee --- /dev/null +++ b/CONTENT/BT/VIDEO/TEX/BUILD/BDLGO128.BAT @@ -0,0 +1,17 @@ +@echo off +rem +rem buildlgo.bat +rem +echo. +echo PROCESSING TEXTURE FILES... +echo. +:bitslice +img2vtx.exe -b -o lgo128.bsl -s 128,128 -m0 lgo1.tga -m1 lgo2.tga -m2 lgo3.tga -m3 lgo4.tga -m4 lgo5.tga -m5 lgo6.tga -m7 lgo7.tga +if errorlevel 1 goto error +echo texture files processed. +goto end +:error +echo. +echo PROCESSING FAILED - SEE ABOVE +:end + diff --git a/CONTENT/BT/VIDEO/TEX/BUILD/BUILDLGO.BAT b/CONTENT/BT/VIDEO/TEX/BUILD/BUILDLGO.BAT new file mode 100644 index 0000000..c90ea07 --- /dev/null +++ b/CONTENT/BT/VIDEO/TEX/BUILD/BUILDLGO.BAT @@ -0,0 +1,18 @@ +@echo off +rem +rem buildlgo.bat +rem +echo. +echo PROCESSING TEXTURE FILES... +echo. +:bitslice +img2vtx.exe -b -o lgo.bsl -s 128,64 -m0 lgo1.tga -m1 lgo2.tga -m2 lgo3.tga -m3 lgo4.tga -m4 lgo5.tga -m5 lgo6.tga -m7 lgo7.tga +rem img2vtx.exe -b -o lgo.bsl -s 128,64 -m0 lgo7.tga +if errorlevel 1 goto error +echo texture files processed. +goto end +:error +echo. +echo PROCESSING FAILED - SEE ABOVE +:end + diff --git a/CONTENT/BT/VIDEO/TEX/BUILD/LGO1.TGA b/CONTENT/BT/VIDEO/TEX/BUILD/LGO1.TGA new file mode 100644 index 0000000..a08dfee Binary files /dev/null and b/CONTENT/BT/VIDEO/TEX/BUILD/LGO1.TGA differ diff --git a/CONTENT/BT/VIDEO/TEX/BUILD/LGO2.TGA b/CONTENT/BT/VIDEO/TEX/BUILD/LGO2.TGA new file mode 100644 index 0000000..1bcb091 Binary files /dev/null and b/CONTENT/BT/VIDEO/TEX/BUILD/LGO2.TGA differ diff --git a/CONTENT/BT/VIDEO/TEX/BUILD/LGO3.TGA b/CONTENT/BT/VIDEO/TEX/BUILD/LGO3.TGA new file mode 100644 index 0000000..19b8ceb Binary files /dev/null and b/CONTENT/BT/VIDEO/TEX/BUILD/LGO3.TGA differ diff --git a/CONTENT/BT/VIDEO/TEX/BUILD/LGO4.TGA b/CONTENT/BT/VIDEO/TEX/BUILD/LGO4.TGA new file mode 100644 index 0000000..f4a920e Binary files /dev/null and b/CONTENT/BT/VIDEO/TEX/BUILD/LGO4.TGA differ diff --git a/CONTENT/BT/VIDEO/TEX/BUILD/LGO5.TGA b/CONTENT/BT/VIDEO/TEX/BUILD/LGO5.TGA new file mode 100644 index 0000000..66f53b7 Binary files /dev/null and b/CONTENT/BT/VIDEO/TEX/BUILD/LGO5.TGA differ diff --git a/CONTENT/BT/VIDEO/TEX/BUILD/LGO6.TGA b/CONTENT/BT/VIDEO/TEX/BUILD/LGO6.TGA new file mode 100644 index 0000000..90f248f Binary files /dev/null and b/CONTENT/BT/VIDEO/TEX/BUILD/LGO6.TGA differ diff --git a/CONTENT/BT/VIDEO/TEX/GRASSC.VTX b/CONTENT/BT/VIDEO/TEX/GRASSC.VTX new file mode 100644 index 0000000..3dc3beb Binary files /dev/null and b/CONTENT/BT/VIDEO/TEX/GRASSC.VTX differ diff --git a/CONTENT/BT/VIDEO/TEX/LGO.BSL b/CONTENT/BT/VIDEO/TEX/LGO.BSL new file mode 100644 index 0000000..915906d Binary files /dev/null and b/CONTENT/BT/VIDEO/TEX/LGO.BSL differ diff --git a/CONTENT/BT/VIDEO/TEX/SAINTB.VTX b/CONTENT/BT/VIDEO/TEX/SAINTB.VTX new file mode 100644 index 0000000..d95f66f Binary files /dev/null and b/CONTENT/BT/VIDEO/TEX/SAINTB.VTX differ diff --git a/CONTENT/BT/VIDEO/TEX/SBASE.BSL b/CONTENT/BT/VIDEO/TEX/SBASE.BSL new file mode 100644 index 0000000..6ee1135 Binary files /dev/null and b/CONTENT/BT/VIDEO/TEX/SBASE.BSL differ diff --git a/CONTENT/BT/VIDEO/THR1SKIN.DZM b/CONTENT/BT/VIDEO/THR1SKIN.DZM new file mode 100644 index 0000000..4466945 --- /dev/null +++ b/CONTENT/BT/VIDEO/THR1SKIN.DZM @@ -0,0 +1,100 @@ +[dz_door] +material=thrskin:thor2_dz_door_mtl +material=thrskin:gen1a_dz_door_mtl +[dz_searchlight] +material=thrskin:thor2_dz_searchlight_mtl +material=thrskin:thor2wht_dz_searchlight_mtl +[dz_rearrtorso] +material=thrskin:thor2_dz_rearrtorso_mtl +material=thrskin:thor3_dz_rearrtorso_mtl +[dz_utorso] +material=thrskin:thor2_dz_utorso_mtl +material=thrskin:thor3_dz_utorso_mtl +material=thrskin:thor1_dz_utorso_mtl +[dz_reardtorso] +material=thrskin:thor2_dz_reardtorso_mtl +[dz_rearutorso] +material=thrskin:thor2_dz_rearutorso_mtl +material=thrskin:thor3_dz_rearutorso_mtl +[dz_rearltorso] +material=thrskin:thor2_dz_rearltorso_mtl +material=thrskin:thor3_dz_rearltorso_mtl +[dz_rfoot] +material=thrskin:gen1a_dz_rfoot_mtl +material=thrskin:gen1_dz_rfoot_mtl +[dz_lfoot] +material=thrskin:gen1a_dz_lfoot_mtl +material=thrskin:gen1_dz_lfoot_mtl +[dz_rtorso] +material=thrskin:gen3a_dz_rtorso_mtl +material=thrskin:gen3_dz_rtorso_mtl +material=thrskin:thor3_dz_rtorso_mtl +material=thrskin:thor4_dz_rtorso_mtl +material=thrskin:thor1_dz_rtorso_mtl +[dz_ltorso] +material=thrskin:gen3a_dz_ltorso_mtl +material=thrskin:gen3_dz_ltorso_mtl +material=thrskin:thor3_dz_ltorso_mtl +material=thrskin:thor4_dz_ltorso_mtl +material=thrskin:thor1_dz_ltorso_mtl +[dz_rgun] +material=thrskin:gen3a_dz_rgun_mtl +material=thrskin:gen3_dz_rgun_mtl +material=thrskin:gen1_dz_rgun_mtl +material=thrskin:gen4_dz_rgun_mtl +material=thrskin:gen2_dz_rgun_mtl +material=thrskin:gen2a_dz_rgun_mtl +material=thrskin:damcolor_dz_rgun_mtl +material=thrskin:gen3drkgry_dz_rgun_mtl +[dz_hip] +material=thrskin:gen3a_dz_hip_mtl +material=thrskin:gen3_dz_hip_mtl +material=thrskin:gen4_dz_hip_mtl +[dz_rarm] +material=thrskin:gen3_dz_rarm_mtl +material=thrskin:gen1_dz_rarm_mtl +material=thrskin:blakskn_dz_rarm_mtl +material=thrskin:gen2_dz_rarm_mtl +material=thrskin:gen3drkgry_dz_rarm_mtl +material=thrskin:gen3medgry_dz_rarm_mtl +[dz_missle] +material=thrskin:gen1_dz_missle_mtl +material=thrskin:thor3_dz_missle_mtl +material=thrskin:thor5_dz_missle_mtl +material=thrskin:gen3drkgry_dz_missle_mtl +material=thrskin:gen3medgry_dz_missle_mtl +[dz_rdleg] +material=thrskin:gen1_dz_rdleg_mtl +material=thrskin:lgo1_dz_rdleg_mtl +material=thrskin:blakskn_dz_rdleg_mtl +[dz_ldleg] +material=thrskin:gen1_dz_ldleg_mtl +material=thrskin:lgo1_dz_ldleg_mtl +material=thrskin:blakskn_dz_ldleg_mtl +[dz_ruleg] +material=thrskin:gen1_dz_ruleg_mtl +material=thrskin:gen4_dz_ruleg_mtl +material=thrskin:gen2_dz_ruleg_mtl +[dz_luleg] +material=thrskin:gen1_dz_luleg_mtl +material=thrskin:gen4_dz_luleg_mtl +material=thrskin:gen2_dz_luleg_mtl +[dz_dtorso] +material=thrskin:thor4_dz_dtorso_mtl +material=thrskin:thor1_dz_dtorso_mtl +[dz_lgun] +material=sndskin:gen4_dz_lgun_mtl +material=sndskin:gen3_dz_lgun_mtl +material=sndskin:gen2_dz_lgun_mtl +material=sndskin:gen1_dz_lgun_mtl +material=sndskin:gen2a_dz_lgun_mtl +material=sndskin:gen3a_dz_lgun_mtl +material=sndskin:gen3drkgry_dz_lgun_mtl +material=sndskin:damcolor_dz_lgun_mtl +[dz_larm] +material=sndskin:gen3_dz_larm_mtl +material=sndskin:gen2_dz_larm_mtl +material=sndskin:gen1_dz_larm_mtl +material=sndskin:blakskn_dz_larm_mtl +material=sndskin:gen3medgry_dz_larm_mtl +material=sndskin:gen3drkgry_dz_larm_mtl diff --git a/CONTENT/BT/VIDEO/THRSKIN.DZM b/CONTENT/BT/VIDEO/THRSKIN.DZM new file mode 100644 index 0000000..2c19ac7 --- /dev/null +++ b/CONTENT/BT/VIDEO/THRSKIN.DZM @@ -0,0 +1,99 @@ +[dz_door] +material=thrskin:thor2_dz_door_mtl +material=thrskin:gen1a_dz_door_mtl +[dz_searchlight] +material=thrskin:thor2_dz_searchlight_mtl +material=thrskin:thor2wht_dz_searchlight_mtl +[dz_rearrtorso] +material=thrskin:thor2_dz_rearrtorso_mtl +material=thrskin:thor3_dz_rearrtorso_mtl +[dz_utorso] +material=thrskin:thor2_dz_utorso_mtl +material=thrskin:thor3_dz_utorso_mtl +material=thrskin:thor1_dz_utorso_mtl +[dz_reardtorso] +material=thrskin:thor2_dz_reardtorso_mtl +[dz_rearutorso] +material=thrskin:thor2_dz_rearutorso_mtl +material=thrskin:thor3_dz_rearutorso_mtl +[dz_rearltorso] +material=thrskin:thor2_dz_rearltorso_mtl +material=thrskin:thor3_dz_rearltorso_mtl +[dz_rfoot] +material=thrskin:gen1a_dz_rfoot_mtl +material=thrskin:gen1_dz_rfoot_mtl +[dz_lfoot] +material=thrskin:gen1a_dz_lfoot_mtl +material=thrskin:gen1_dz_lfoot_mtl +[dz_rtorso] +material=thrskin:gen3a_dz_rtorso_mtl +material=thrskin:gen3_dz_rtorso_mtl +material=thrskin:thor3_dz_rtorso_mtl +material=thrskin:thor4_dz_rtorso_mtl +material=thrskin:thor1_dz_rtorso_mtl +[dz_ltorso] +material=thrskin:gen3a_dz_ltorso_mtl +material=thrskin:gen3_dz_ltorso_mtl +material=thrskin:thor3_dz_ltorso_mtl +material=thrskin:thor4_dz_ltorso_mtl +material=thrskin:thor1_dz_ltorso_mtl +[dz_rgun] +material=thrskin:gen3a_dz_rgun_mtl +material=thrskin:gen3_dz_rgun_mtl +material=thrskin:gen1_dz_rgun_mtl +material=thrskin:gen4_dz_rgun_mtl +material=thrskin:gen2_dz_rgun_mtl +material=thrskin:gen2a_dz_rgun_mtl +material=thrskin:damcolor_dz_rgun_mtl +material=thrskin:gen3drkgry_dz_rgun_mtl +[dz_hip] +material=thrskin:gen3a_dz_hip_mtl +material=thrskin:gen3_dz_hip_mtl +material=thrskin:gen4_dz_hip_mtl +[dz_larm] +material=thrskin:gen3a_dz_larm_mtl +material=thrskin:gen3_dz_larm_mtl +material=thrskin:gen1_dz_larm_mtl +material=thrskin:gen4_dz_larm_mtl +material=thrskin:gen2_dz_larm_mtl +material=thrskin:gen4a_dz_larm_mtl +material=thrskin:damcolor_dz_larm_mtl +material=thrskin:gen3drkgry_dz_larm_mtl +[dz_rarm] +material=thrskin:gen3_dz_rarm_mtl +material=thrskin:gen1_dz_rarm_mtl +material=thrskin:blakskn_dz_rarm_mtl +material=thrskin:gen2_dz_rarm_mtl +material=thrskin:gen3drkgry_dz_rarm_mtl +material=thrskin:gen3medgry_dz_rarm_mtl +[dz_missle] +material=thrskin:gen1_dz_missle_mtl +material=thrskin:thor3_dz_missle_mtl +material=thrskin:thor5_dz_missle_mtl +material=thrskin:gen3drkgry_dz_missle_mtl +material=thrskin:gen3medgry_dz_missle_mtl +[dz_rdleg] +material=thrskin:gen1_dz_rdleg_mtl +material=thrskin:lgo1_dz_rdleg_mtl +material=thrskin:blakskn_dz_rdleg_mtl +[dz_ldleg] +material=thrskin:gen1_dz_ldleg_mtl +material=thrskin:lgo1_dz_ldleg_mtl +material=thrskin:blakskn_dz_ldleg_mtl +[dz_ruleg] +material=thrskin:gen1_dz_ruleg_mtl +material=thrskin:gen4_dz_ruleg_mtl +material=thrskin:gen2_dz_ruleg_mtl +[dz_luleg] +material=thrskin:gen1_dz_luleg_mtl +material=thrskin:gen4_dz_luleg_mtl +material=thrskin:gen2_dz_luleg_mtl +[dz_dtorso] +material=thrskin:thor4_dz_dtorso_mtl +material=thrskin:thor1_dz_dtorso_mtl +[dz_lgun] +material=thrskin:gen4_dz_lgun_mtl +material=thrskin:gen2_dz_lgun_mtl +material=thrskin:gen2a_dz_lgun_mtl +material=thrskin:damcolor_dz_lgun_mtl +material=thrskin:gen3drkgry_dz_lgun_mtl diff --git a/CONTENT/BT/VIDEO/THX1SKIN.DZM b/CONTENT/BT/VIDEO/THX1SKIN.DZM new file mode 100644 index 0000000..ce3903b --- /dev/null +++ b/CONTENT/BT/VIDEO/THX1SKIN.DZM @@ -0,0 +1,11 @@ +[dz_door] +material=thxskin:thx2_dz_door_mtl +material=thxskin:thx1_dz_door_mtl +[dz_missle] +material=thxskin:thx2_dz_missle_mtl +material=thxskin:thx1_dz_missle_mtl +material=thxskin:gen3_dz_missle_mtl +material=thxskin:thx3_dz_missle_mtl +[dz_utorso] +material=thxskin:thx2_dz_utorso_mtl +material=thxskin:blakskn_dz_utorso_mtl diff --git a/CONTENT/BT/VIDEO/THXSKIN.DZM b/CONTENT/BT/VIDEO/THXSKIN.DZM new file mode 100644 index 0000000..ce3903b --- /dev/null +++ b/CONTENT/BT/VIDEO/THXSKIN.DZM @@ -0,0 +1,11 @@ +[dz_door] +material=thxskin:thx2_dz_door_mtl +material=thxskin:thx1_dz_door_mtl +[dz_missle] +material=thxskin:thx2_dz_missle_mtl +material=thxskin:thx1_dz_missle_mtl +material=thxskin:gen3_dz_missle_mtl +material=thxskin:thx3_dz_missle_mtl +[dz_utorso] +material=thxskin:thx2_dz_utorso_mtl +material=thxskin:blakskn_dz_utorso_mtl diff --git a/CONTENT/BT/VIDEO/VUL1SKIN.DZM b/CONTENT/BT/VIDEO/VUL1SKIN.DZM new file mode 100644 index 0000000..1f70eb2 --- /dev/null +++ b/CONTENT/BT/VIDEO/VUL1SKIN.DZM @@ -0,0 +1,91 @@ +[dz_rdleg] +material=vulskin:gen3_dz_rdleg_mtl +material=vulskin:lgo5_dz_rdleg_mtl +material=vulskin:blakskn_dz_rdleg_mtl +material=vulskin:gen1_dz_rdleg_mtl +[dz_ldleg] +material=vulskin:gen3_dz_ldleg_mtl +material=vulskin:lgo5_dz_ldleg_mtl +material=vulskin:blakskn_dz_ldleg_mtl +material=vulskin:gen1_dz_ldleg_mtl +[dz_rarm] +material=vulskin:gen3_dz_rarm_mtl +material=vulskin:gen1_dz_rarm_mtl +material=vulskin:gen2_dz_rarm_mtl +material=vulskin:gen3drkgry_dz_rarm_mtl +material=vulskin:gen3medgry_dz_rarm_mtl +[dz_larm] +material=vulskin:gen3_dz_larm_mtl +material=vulskin:gen1_dz_larm_mtl +material=vulskin:gen2_dz_larm_mtl +material=vulskin:gen3drkgry_dz_larm_mtl +material=vulskin:gen3medgry_dz_larm_mtl +[dz_lfoot] +material=vulskin:gen3_dz_lfoot_mtl +material=vulskin:blakskn_dz_lfoot_mtl +material=vulskin:gen1a_dz_lfoot_mtl +[dz_hip] +material=vulskin:gen3_dz_hip_mtl +material=vulskin:gen2_dz_hip_mtl +[dz_rfoot] +material=vulskin:gen3_dz_rfoot_mtl +material=vulskin:blakskn_dz_rfoot_mtl +material=vulskin:gen1a_dz_rfoot_mtl +[dz_luleg] +material=vulskin:gen3_dz_luleg_mtl +[dz_ruleg] +material=vulskin:gen3_dz_ruleg_mtl +[dz_dtorso] +material=vulskin:blakskn_dz_dtorso_mtl +material=vulskin:gen2a_dz_dtorso_mtl +material=vulskin:vultt1_dz_dtorso_mtl +material=vulskin:vultt4_dz_dtorso_mtl +[dz_lddoor] +material=vulskin:gen2_dz_lddoor_mtl +material=vulskin:vultt3_dz_lddoor_mtl +[dz_rddoor] +material=vulskin:gen2_dz_rddoor_mtl +material=vulskin:vultt3_dz_rddoor_mtl +[dz_ludoor] +material=vulskin:vultt1_dz_ludoor_mtl +material=vulskin:gen4_dz_ludoor_mtl +[dz_rudoor] +material=vulskin:vultt1_dz_rudoor_mtl +material=vulskin:gen4_dz_rudoor_mtl +[dz_utorso] +material=vulskin:vultt1_dz_utorso_mtl +material=vulskin:vultt4_dz_utorso_mtl +[dz_ltorso] +material=vulskin:vultt2_dz_ltorso_mtl +material=vulskin:vultt6_dz_ltorso_mtl +material=vulskin:vultt3_dz_ltorso_mtl +material=vulskin:vultt4_dz_ltorso_mtl +[dz_rtorso] +material=vulskin:vultt2_dz_rtorso_mtl +material=vulskin:vultt6_dz_rtorso_mtl +material=vulskin:vultt3_dz_rtorso_mtl +material=vulskin:vultt4_dz_rtorso_mtl +[dz_rearltorso] +material=vulskin:vultt3_dz_rearltorso_mtl +[dz_rearrtorso] +material=vulskin:vultt3_dz_rearrtorso_mtl +[dz_reardtorso] +material=vulskin:vultt4_dz_reardtorso_mtl +[dz_rearutorso] +material=vulskin:vultt4_dz_rearutorso_mtl +[dz_searchlight] +material=vulskin:vultt5a_dz_searchlight_mtl +[dz_rgun] +material=blhskin:gen4_dz_rgun_mtl +material=blhskin:blkhwk1_dz_rgun_mtl +material=blhskin:blkhwk2_dz_rgun_mtl +material=blhskin:gen4a_dz_rgun_mtl +material=blhskin:gen3medgry_dz_rgun_mtl +material=blhskin:damcolor_dz_rgun_mtl +[dz_lgun] +material=blhskin:gen4_dz_lgun_mtl +material=blhskin:blkhwk1_dz_lgun_mtl +material=blhskin:blkhwk2_dz_lgun_mtl +material=blhskin:gen4a_dz_lgun_mtl +material=blhskin:gen3medgry_dz_lgun_mtl +material=blhskin:damcolor_dz_lgun_mtl diff --git a/CONTENT/BT/VIDEO/VUL2SKIN.DZM b/CONTENT/BT/VIDEO/VUL2SKIN.DZM new file mode 100644 index 0000000..15e6d3a --- /dev/null +++ b/CONTENT/BT/VIDEO/VUL2SKIN.DZM @@ -0,0 +1,79 @@ +[dz_rdleg] +material=vulskin:gen3_dz_rdleg_mtl +material=vulskin:lgo5_dz_rdleg_mtl +material=vulskin:blakskn_dz_rdleg_mtl +material=vulskin:gen1_dz_rdleg_mtl +[dz_ldleg] +material=vulskin:gen3_dz_ldleg_mtl +material=vulskin:lgo5_dz_ldleg_mtl +material=vulskin:blakskn_dz_ldleg_mtl +material=vulskin:gen1_dz_ldleg_mtl +[dz_lfoot] +material=vulskin:gen3_dz_lfoot_mtl +material=vulskin:blakskn_dz_lfoot_mtl +material=vulskin:gen1a_dz_lfoot_mtl +[dz_hip] +material=vulskin:gen3_dz_hip_mtl +material=vulskin:gen2_dz_hip_mtl +[dz_rfoot] +material=vulskin:gen3_dz_rfoot_mtl +material=vulskin:blakskn_dz_rfoot_mtl +material=vulskin:gen1a_dz_rfoot_mtl +[dz_luleg] +material=vulskin:gen3_dz_luleg_mtl +[dz_ruleg] +material=vulskin:gen3_dz_ruleg_mtl +[dz_dtorso] +material=vulskin:blakskn_dz_dtorso_mtl +material=vulskin:gen2a_dz_dtorso_mtl +material=vulskin:vultt1_dz_dtorso_mtl +material=vulskin:vultt4_dz_dtorso_mtl +[dz_lddoor] +material=vulskin:gen2_dz_lddoor_mtl +material=vulskin:vultt3_dz_lddoor_mtl +[dz_rddoor] +material=vulskin:gen2_dz_rddoor_mtl +material=vulskin:vultt3_dz_rddoor_mtl +[dz_ludoor] +material=vulskin:vultt1_dz_ludoor_mtl +material=vulskin:gen4_dz_ludoor_mtl +[dz_rudoor] +material=vulskin:vultt1_dz_rudoor_mtl +material=vulskin:gen4_dz_rudoor_mtl +[dz_utorso] +material=vulskin:vultt1_dz_utorso_mtl +material=vulskin:vultt4_dz_utorso_mtl +[dz_ltorso] +material=vulskin:vultt2_dz_ltorso_mtl +material=vulskin:vultt6_dz_ltorso_mtl +material=vulskin:vultt3_dz_ltorso_mtl +material=vulskin:vultt4_dz_ltorso_mtl +[dz_rtorso] +material=vulskin:vultt2_dz_rtorso_mtl +material=vulskin:vultt6_dz_rtorso_mtl +material=vulskin:vultt3_dz_rtorso_mtl +material=vulskin:vultt4_dz_rtorso_mtl +[dz_rearltorso] +material=vulskin:vultt3_dz_rearltorso_mtl +[dz_rearrtorso] +material=vulskin:vultt3_dz_rearrtorso_mtl +[dz_reardtorso] +material=vulskin:vultt4_dz_reardtorso_mtl +[dz_rearutorso] +material=vulskin:vultt4_dz_rearutorso_mtl +[dz_searchlight] +material=vulskin:vultt5a_dz_searchlight_mtl +[dz_lmissle] +material=ownskin:owen3_dz_lmissle_mtl +material=ownskin:owen4_dz_lmissle_mtl +material=ownskin:owen5_dz_lmissle_mtl +material=ownskin:gen3drkgry_dz_lmissle_mtl +material=ownskin:gen3medgry_dz_lmissle_mtl +material=ownskin:damcolor_dz_lmissle_mtl +[dz_rmissle] +material=ownskin:owen3_dz_rmissle_mtl +material=ownskin:owen4_dz_rmissle_mtl +material=ownskin:owen5_dz_rmissle_mtl +material=ownskin:gen3drkgry_dz_rmissle_mtl +material=ownskin:gen3medgry_dz_rmissle_mtl +material=ownskin:damcolor_dz_rmissle_mtl diff --git a/CONTENT/BT/VIDEO/VUX1SKIN.DZM b/CONTENT/BT/VIDEO/VUX1SKIN.DZM new file mode 100644 index 0000000..3c53969 --- /dev/null +++ b/CONTENT/BT/VIDEO/VUX1SKIN.DZM @@ -0,0 +1,2 @@ +[dz_utorso] +material=vuxskin:blakskn_dz_utorso_mtl diff --git a/CONTENT/BT/VIDEO/VUX2SKIN.DZM b/CONTENT/BT/VIDEO/VUX2SKIN.DZM new file mode 100644 index 0000000..3c53969 --- /dev/null +++ b/CONTENT/BT/VIDEO/VUX2SKIN.DZM @@ -0,0 +1,2 @@ +[dz_utorso] +material=vuxskin:blakskn_dz_utorso_mtl diff --git a/CONTENT/BT/VIDEO/VUXSKIN.DZM b/CONTENT/BT/VIDEO/VUXSKIN.DZM new file mode 100644 index 0000000..3c53969 --- /dev/null +++ b/CONTENT/BT/VIDEO/VUXSKIN.DZM @@ -0,0 +1,2 @@ +[dz_utorso] +material=vuxskin:blakskn_dz_utorso_mtl diff --git a/CONTENT/BT/WATTCP.CFG b/CONTENT/BT/WATTCP.CFG new file mode 100644 index 0000000..2ba343d --- /dev/null +++ b/CONTENT/BT/WATTCP.CFG @@ -0,0 +1,4 @@ +my_ip = 200.0.0.111 +netmask = 255.255.255.0 +nameserver = 200.0.0.1 +gateway = 200.0.0.1 diff --git a/CONTENT/BT3025/32STUB.EXE b/CONTENT/BT3025/32STUB.EXE new file mode 100644 index 0000000..8747672 Binary files /dev/null and b/CONTENT/BT3025/32STUB.EXE differ diff --git a/CONTENT/BT3025/ANIM.BAT b/CONTENT/BT3025/ANIM.BAT new file mode 100644 index 0000000..2230542 --- /dev/null +++ b/CONTENT/BT3025/ANIM.BAT @@ -0,0 +1,64 @@ +call .\btcam\btcam01.bat %1 %2 +ren dump0.tga %201.tga +call .\btcam\btcam02.bat %1 %2 +ren dump0.tga %202.tga +call .\btcam\btcam03.bat %1 %2 +ren dump0.tga %203.tga +call .\btcam\btcam04.bat %1 %2 +ren dump0.tga %204.tga +call .\btcam\btcam05.bat %1 %2 +ren dump0.tga %205.tga +call .\btcam\btcam06.bat %1 %2 +ren dump0.tga %206.tga +call .\btcam\btcam07.bat %1 %2 +ren dump0.tga %207.tga +call .\btcam\btcam08.bat %1 %2 +ren dump0.tga %208.tga +call .\btcam\btcam09.bat %1 %2 +ren dump0.tga %209.tga +call .\btcam\btcam10.bat %1 %2 +ren dump0.tga %210.tga +call .\btcam\btcam11.bat %1 %2 +ren dump0.tga %211.tga +call .\btcam\btcam12.bat %1 %2 +ren dump0.tga %212.tga +call .\btcam\btcam13.bat %1 %2 +ren dump0.tga %213.tga +call .\btcam\btcam14.bat %1 %2 +ren dump0.tga %214.tga +call .\btcam\btcam15.bat %1 %2 +ren dump0.tga %215.tga +call .\btcam\btcam16.bat %1 %2 +ren dump0.tga %216.tga +call .\btcam\btcam17.bat %1 %2 +ren dump0.tga %217.tga +call .\btcam\btcam18.bat %1 %2 +ren dump0.tga %218.tga +call .\btcam\btcam19.bat %1 %2 +ren dump0.tga %219.tga +call .\btcam\btcam20.bat %1 %2 +ren dump0.tga %220.tga +call .\btcam\btcam21.bat %1 %2 +ren dump0.tga %221.tga +call .\btcam\btcam22.bat %1 %2 +ren dump0.tga %222.tga +call .\btcam\btcam23.bat %1 %2 +ren dump0.tga %223.tga +call .\btcam\btcam24.bat %1 %2 +ren dump0.tga %224.tga +call .\btcam\btcam25.bat %1 %2 +ren dump0.tga %225.tga +call .\btcam\btcam26.bat %1 %2 +ren dump0.tga %226.tga +call .\btcam\btcam27.bat %1 %2 +ren dump0.tga %227.tga +call .\btcam\btcam28.bat %1 %2 +ren dump0.tga %228.tga +call .\btcam\btcam29.bat %1 %2 +ren dump0.tga %229.tga +call .\btcam\btcam30.bat %1 %2 +ren dump0.tga %230.tga +call .\btcam\btcam31.bat %1 %2 +ren dump0.tga %231.tga +call .\btcam\btcam32.bat %1 %2 +ren dump0.tga %232.tga diff --git a/CONTENT/BT3025/ANIM1.BAT b/CONTENT/BT3025/ANIM1.BAT new file mode 100644 index 0000000..8048a0f --- /dev/null +++ b/CONTENT/BT3025/ANIM1.BAT @@ -0,0 +1,2 @@ +call .\btcam\btcam01.bat %1 %2 +ren dump0.tga %201.tga diff --git a/CONTENT/BT3025/ANIMCAM.BAT b/CONTENT/BT3025/ANIMCAM.BAT new file mode 100644 index 0000000..8048a0f --- /dev/null +++ b/CONTENT/BT3025/ANIMCAM.BAT @@ -0,0 +1,2 @@ +call .\btcam\btcam01.bat %1 %2 +ren dump0.tga %201.tga diff --git a/CONTENT/BT3025/ANIMS/BLHBMP.ANI b/CONTENT/BT3025/ANIMS/BLHBMP.ANI new file mode 100644 index 0000000..467377b --- /dev/null +++ b/CONTENT/BT3025/ANIMS/BLHBMP.ANI @@ -0,0 +1,70 @@ +[LAB_ONLY] + +[HEADER] +framecount=3 +framerate=30 +skeletonfile=blh.skl +jointcount=8 + +[Time] +frame1=0 +frame8=0.233333 +frame15=0.466667 + +[JointIndices] +jointlocal=0 +jointshakey=1 +jointrthigh=10 +jointrknee=11 +jointrankle=13 +jointlthigh=6 +jointlknee=7 +jointlankle=9 + +[JointType] +jointlocal=balltranslate +jointshakey=ball +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointrthigh=0.944220 0.000000 0.000000 +jointrknee=-0.387435 0.000000 0.000000 +jointrankle=-0.037888 0.000000 0.000000 +jointlthigh=-0.438282 0.000000 0.000000 +jointlknee=-1.050563 0.000000 0.000000 +jointlankle=-1.625223 0.000000 0.000000 +[frame8] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.436332 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +[frame15] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame8=0.000000 -5.358000 0.000000 +frame15=0.000000 -5.358000 0.000000 + +[KeyJointPos] +frame1=0.000000 0.966000 0.000000 +frame8=0.000000 0.000000 0.000000 +frame15=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT3025/ANIMS/BLHBMPI.ANI b/CONTENT/BT3025/ANIMS/BLHBMPI.ANI new file mode 100644 index 0000000..467377b --- /dev/null +++ b/CONTENT/BT3025/ANIMS/BLHBMPI.ANI @@ -0,0 +1,70 @@ +[LAB_ONLY] + +[HEADER] +framecount=3 +framerate=30 +skeletonfile=blh.skl +jointcount=8 + +[Time] +frame1=0 +frame8=0.233333 +frame15=0.466667 + +[JointIndices] +jointlocal=0 +jointshakey=1 +jointrthigh=10 +jointrknee=11 +jointrankle=13 +jointlthigh=6 +jointlknee=7 +jointlankle=9 + +[JointType] +jointlocal=balltranslate +jointshakey=ball +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointrthigh=0.944220 0.000000 0.000000 +jointrknee=-0.387435 0.000000 0.000000 +jointrankle=-0.037888 0.000000 0.000000 +jointlthigh=-0.438282 0.000000 0.000000 +jointlknee=-1.050563 0.000000 0.000000 +jointlankle=-1.625223 0.000000 0.000000 +[frame8] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.436332 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +[frame15] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame8=0.000000 -5.358000 0.000000 +frame15=0.000000 -5.358000 0.000000 + +[KeyJointPos] +frame1=0.000000 0.966000 0.000000 +frame8=0.000000 0.000000 0.000000 +frame15=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT3025/ANIMS/BLHSQI.ANI b/CONTENT/BT3025/ANIMS/BLHSQI.ANI new file mode 100644 index 0000000..e69de29 diff --git a/CONTENT/BT3025/ANIMS/BLHSQT.ANI b/CONTENT/BT3025/ANIMS/BLHSQT.ANI new file mode 100644 index 0000000..e69de29 diff --git a/CONTENT/BT3025/ANIMS/FIRBMP.ANI b/CONTENT/BT3025/ANIMS/FIRBMP.ANI new file mode 100644 index 0000000..473ef80 --- /dev/null +++ b/CONTENT/BT3025/ANIMS/FIRBMP.ANI @@ -0,0 +1,80 @@ +[LAB_ONLY] + +[HEADER] +framecount=3 +framerate=30 +skeletonfile=fir.skl +jointcount=10 + +[Time] +frame1=0 +frame8=0.233333 +frame15=0.466667 + +[JointIndices] +jointlocal=0 +jointhip=1 +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 +jointrshoulder=7 +jointlshoulder=5 + +[JointType] +jointlocal=balltranslate +jointhip=hingex +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointrshoulder=hingex +jointlshoulder=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointhip=-0.296706 0.000000 0.000000 +jointlthigh=-0.422979 0.000000 0.000000 +jointlknee=-1.440987 0.000000 0.000000 +jointlankle=-0.529400 0.000000 0.000000 +jointrthigh=0.996014 0.000000 0.000000 +jointrknee=-0.315163 0.000000 0.000000 +jointrankle=0.114052 0.000000 0.000000 +jointrshoulder=0.296706 0.000000 0.000000 +jointlshoulder=0.296706 0.000000 0.000000 +[frame8] +jointlocal=0.000000 0.000000 0.000000 +jointhip=0.436332 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointrshoulder=0.000000 0.000000 0.000000 +jointlshoulder=0.000000 0.000000 0.000000 +[frame15] +jointlocal=0.000000 0.000000 0.000000 +jointhip=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointrshoulder=0.000000 0.000000 0.000000 +jointlshoulder=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.363000 0.000000 +frame8=0.000000 -5.363000 0.000000 +frame15=0.000000 -5.363000 0.000000 + +[KeyJointPos] +frame1=0.000000 0.380000 0.000000 +frame8=0.000000 0.000000 0.000000 +frame15=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT3025/ANIMS/FIRBMPI.ANI b/CONTENT/BT3025/ANIMS/FIRBMPI.ANI new file mode 100644 index 0000000..b898137 --- /dev/null +++ b/CONTENT/BT3025/ANIMS/FIRBMPI.ANI @@ -0,0 +1,85 @@ +[LAB_ONLY] + +[HEADER] +framecount=3 +framerate=30 +skeletonfile=fir.skl +jointcount=11 + +[Time] +frame1=0 +frame8=0.233333 +frame15=0.466667 + +[JointIndices] +jointlocal=0 +jointhip=1 +jointshakey=3 +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 +jointrshoulder=7 +jointlshoulder=5 + +[JointType] +jointlocal=balltranslate +jointhip=hingex +jointshakey=ball +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointrshoulder=hingex +jointlshoulder=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointhip=-0.296706 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.422979 0.000000 0.000000 +jointlknee=-1.440987 0.000000 0.000000 +jointlankle=-0.529400 0.000000 0.000000 +jointrthigh=0.996014 0.000000 0.000000 +jointrknee=-0.315163 0.000000 0.000000 +jointrankle=0.114052 0.000000 0.000000 +jointrshoulder=0.296706 0.000000 0.000000 +jointlshoulder=0.296706 0.000000 0.000000 +[frame8] +jointlocal=0.000000 0.000000 0.000000 +jointhip=0.436332 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointrshoulder=0.000000 0.000000 0.000000 +jointlshoulder=0.000000 0.000000 0.000000 +[frame15] +jointlocal=0.000000 0.000000 0.000000 +jointhip=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointrshoulder=0.000000 0.000000 0.000000 +jointlshoulder=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.363000 0.000000 +frame8=0.000000 -5.363000 0.000000 +frame15=0.000000 -5.363000 0.000000 + +[KeyJointPos] +frame1=0.000000 0.380000 0.000000 +frame8=0.000000 0.000000 0.000000 +frame15=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT3025/ANIMS/FIRRRL.ANI b/CONTENT/BT3025/ANIMS/FIRRRL.ANI new file mode 100644 index 0000000..3a34a5a --- /dev/null +++ b/CONTENT/BT3025/ANIMS/FIRRRL.ANI @@ -0,0 +1,87 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=fir.skl +jointcount=7 + +[Time] +frame1=0 +frame3=0.0666667 +frame5=0.133333 +frame10=0.3 +frame15=0.466667 + +[JointIndices] +jointlocal=0 +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 + +[JointType] +jointlocal=balltranslate +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.220568 0.000000 0.000000 +jointlknee=-1.578886 0.000000 0.000000 +jointlankle=0.520927 0.000000 0.000000 +jointrthigh=0.408901 0.000000 0.000000 +jointrknee=-0.388051 0.000000 0.000000 +jointrankle=-0.021774 0.000000 0.000000 +[frame3] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.519267 0.000000 0.000000 +jointlknee=-1.587195 0.000000 0.000000 +jointlankle=0.608116 0.000000 0.000000 +jointrthigh=0.013721 0.000000 0.000000 +jointrknee=-0.750172 0.000000 0.000000 +jointrankle=0.738035 0.000000 0.000000 +[frame5] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=1.251680 0.000000 0.000000 +jointlknee=-1.602998 0.000000 0.000000 +jointlankle=0.012005 0.000000 0.000000 +jointrthigh=-0.369797 0.000000 0.000000 +jointrknee=-0.660626 0.000000 0.000000 +jointrankle=0.221044 0.000000 0.000000 +[frame10] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.996014 0.000000 0.000000 +jointlknee=-0.315163 0.000000 0.000000 +jointlankle=0.114052 0.000000 0.000000 +jointrthigh=-0.422979 0.000000 0.000000 +jointrknee=-1.440987 0.000000 0.000000 +jointrankle=-0.529400 0.000000 0.000000 +[frame15] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.408901 0.000000 0.000000 +jointlknee=-0.388051 0.000000 0.000000 +jointlankle=-0.021774 0.000000 0.000000 +jointrthigh=-0.045188 0.000000 0.000000 +jointrknee=-1.753532 0.000000 0.000000 +jointrankle=0.520927 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.363000 0.000000 +frame3=0.000000 -5.363000 38.401505 +frame5=0.000000 -5.363000 37.318493 +frame10=0.000000 -5.363000 39.082203 +frame15=0.000000 -5.363000 41.769611 + +[KeyJointPos] +frame1=0.000000 -0.220070 0.000000 +frame3=0.000000 -0.661920 0.000000 +frame5=0.000000 -0.220070 0.000000 +frame10=0.000000 0.380350 0.000000 +frame15=0.000000 -0.220000 0.000000 diff --git a/CONTENT/BT3025/ANIMS/FIRRRLI.ANI b/CONTENT/BT3025/ANIMS/FIRRRLI.ANI new file mode 100644 index 0000000..f5c9e13 --- /dev/null +++ b/CONTENT/BT3025/ANIMS/FIRRRLI.ANI @@ -0,0 +1,94 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=fir.skl +jointcount=8 + +[Time] +frame1=0 +frame3=0.0666667 +frame5=0.133333 +frame10=0.3 +frame15=0.466667 + +[JointIndices] +jointlocal=0 +jointshakey=3 +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 + +[JointType] +jointlocal=balltranslate +jointshakey=ball +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.220568 0.000000 0.000000 +jointlknee=-1.578886 0.000000 0.000000 +jointlankle=0.520927 0.000000 0.000000 +jointrthigh=0.408901 0.000000 0.000000 +jointrknee=-0.388051 0.000000 0.000000 +jointrankle=-0.021774 0.000000 0.000000 +[frame3] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.519267 0.000000 0.000000 +jointlknee=-1.587195 0.000000 0.000000 +jointlankle=0.608116 0.000000 0.000000 +jointrthigh=0.013721 0.000000 0.000000 +jointrknee=-0.750172 0.000000 0.000000 +jointrankle=0.738035 0.000000 0.000000 +[frame5] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=1.251680 0.000000 0.000000 +jointlknee=-1.602998 0.000000 0.000000 +jointlankle=0.012005 0.000000 0.000000 +jointrthigh=-0.369797 0.000000 0.000000 +jointrknee=-0.660626 0.000000 0.000000 +jointrankle=0.221044 0.000000 0.000000 +[frame10] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.996014 0.000000 0.000000 +jointlknee=-0.315163 0.000000 0.000000 +jointlankle=0.114052 0.000000 0.000000 +jointrthigh=-0.422979 0.000000 0.000000 +jointrknee=-1.440987 0.000000 0.000000 +jointrankle=-0.529400 0.000000 0.000000 +[frame15] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.408901 0.000000 0.000000 +jointlknee=-0.388051 0.000000 0.000000 +jointlankle=-0.021774 0.000000 0.000000 +jointrthigh=-0.045188 0.000000 0.000000 +jointrknee=-1.753532 0.000000 0.000000 +jointrankle=0.520927 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.363000 0.000000 +frame3=0.000000 -5.363000 38.401505 +frame5=0.000000 -5.363000 37.318493 +frame10=0.000000 -5.363000 39.082203 +frame15=0.000000 -5.363000 41.769611 + +[KeyJointPos] +frame1=0.000000 -0.220070 0.000000 +frame3=0.000000 -0.661920 0.000000 +frame5=0.000000 -0.220070 0.000000 +frame10=0.000000 0.380350 0.000000 +frame15=0.000000 -0.220000 0.000000 diff --git a/CONTENT/BT3025/ANIMS/FIRRRR.ANI b/CONTENT/BT3025/ANIMS/FIRRRR.ANI new file mode 100644 index 0000000..324fe0d --- /dev/null +++ b/CONTENT/BT3025/ANIMS/FIRRRR.ANI @@ -0,0 +1,87 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=fir.skl +jointcount=7 + +[Time] +frame1=0 +frame3=0.0666667 +frame5=0.133333 +frame10=0.3 +frame15=0.466667 + +[JointIndices] +jointlocal=0 +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 + +[JointType] +jointlocal=balltranslate +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.408901 0.000000 0.000000 +jointlknee=-0.388051 0.000000 0.000000 +jointlankle=-0.021774 0.000000 0.000000 +jointrthigh=-0.045188 0.000000 0.000000 +jointrknee=-1.753532 0.000000 0.000000 +jointrankle=0.520927 0.000000 0.000000 +[frame3] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.014113 0.000000 0.000000 +jointlknee=-0.750825 0.000000 0.000000 +jointlankle=0.737932 0.000000 0.000000 +jointrthigh=0.519267 0.000000 0.000000 +jointrknee=-1.587195 0.000000 0.000000 +jointrankle=0.608116 0.000000 0.000000 +[frame5] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.395999 0.000000 0.000000 +jointlknee=-0.606619 0.000000 0.000000 +jointlankle=0.194431 0.000000 0.000000 +jointrthigh=1.251680 0.000000 0.000000 +jointrknee=-1.602998 0.000000 0.000000 +jointrankle=0.012005 0.000000 0.000000 +[frame10] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.422979 0.000000 0.000000 +jointlknee=-1.440987 0.000000 0.000000 +jointlankle=-0.529400 0.000000 0.000000 +jointrthigh=0.996014 0.000000 0.000000 +jointrknee=-0.315163 0.000000 0.000000 +jointrankle=0.114052 0.000000 0.000000 +[frame15] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.045188 0.000000 0.000000 +jointlknee=-1.753532 0.000000 0.000000 +jointlankle=0.520927 0.000000 0.000000 +jointrthigh=0.408901 0.000000 0.000000 +jointrknee=-0.388051 0.000000 0.000000 +jointrankle=-0.021774 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.363000 0.000000 +frame3=0.000000 -5.363000 38.935486 +frame5=0.000000 -5.363000 37.492500 +frame10=0.000000 -5.363000 39.383995 +frame15=0.000000 -5.363000 41.687992 + +[KeyJointPos] +frame1=0.000000 -0.220000 0.000000 +frame3=0.000000 -0.660000 0.000000 +frame5=0.000000 -0.220000 0.000000 +frame10=0.000000 0.380000 0.000000 +frame15=0.000000 -0.220000 0.000000 diff --git a/CONTENT/BT3025/ANIMS/FIRRRRI.ANI b/CONTENT/BT3025/ANIMS/FIRRRRI.ANI new file mode 100644 index 0000000..f2d8878 --- /dev/null +++ b/CONTENT/BT3025/ANIMS/FIRRRRI.ANI @@ -0,0 +1,94 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=fir.skl +jointcount=8 + +[Time] +frame1=0 +frame3=0.0666667 +frame5=0.133333 +frame10=0.3 +frame15=0.466667 + +[JointIndices] +jointlocal=0 +jointshakey=3 +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 + +[JointType] +jointlocal=balltranslate +jointshakey=ball +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.408901 0.000000 0.000000 +jointlknee=-0.388051 0.000000 0.000000 +jointlankle=-0.021774 0.000000 0.000000 +jointrthigh=-0.045188 0.000000 0.000000 +jointrknee=-1.753532 0.000000 0.000000 +jointrankle=0.520927 0.000000 0.000000 +[frame3] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.014113 0.000000 0.000000 +jointlknee=-0.750825 0.000000 0.000000 +jointlankle=0.737932 0.000000 0.000000 +jointrthigh=0.519267 0.000000 0.000000 +jointrknee=-1.587195 0.000000 0.000000 +jointrankle=0.608116 0.000000 0.000000 +[frame5] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.395999 0.000000 0.000000 +jointlknee=-0.606619 0.000000 0.000000 +jointlankle=0.194431 0.000000 0.000000 +jointrthigh=1.251680 0.000000 0.000000 +jointrknee=-1.602998 0.000000 0.000000 +jointrankle=0.012005 0.000000 0.000000 +[frame10] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.422979 0.000000 0.000000 +jointlknee=-1.440987 0.000000 0.000000 +jointlankle=-0.529400 0.000000 0.000000 +jointrthigh=0.996014 0.000000 0.000000 +jointrknee=-0.315163 0.000000 0.000000 +jointrankle=0.114052 0.000000 0.000000 +[frame15] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.045188 0.000000 0.000000 +jointlknee=-1.753532 0.000000 0.000000 +jointlankle=0.520927 0.000000 0.000000 +jointrthigh=0.408901 0.000000 0.000000 +jointrknee=-0.388051 0.000000 0.000000 +jointrankle=-0.021774 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.363000 0.000000 +frame3=0.000000 -5.363000 38.935486 +frame5=0.000000 -5.363000 37.492500 +frame10=0.000000 -5.363000 39.383995 +frame15=0.000000 -5.363000 41.687992 + +[KeyJointPos] +frame1=0.000000 -0.220000 0.000000 +frame3=0.000000 -0.660000 0.000000 +frame5=0.000000 -0.220000 0.000000 +frame10=0.000000 0.380000 0.000000 +frame15=0.000000 -0.220000 0.000000 diff --git a/CONTENT/BT3025/ANIMS/FIRRWL.ANI b/CONTENT/BT3025/ANIMS/FIRRWL.ANI new file mode 100644 index 0000000..7eba6d7 --- /dev/null +++ b/CONTENT/BT3025/ANIMS/FIRRWL.ANI @@ -0,0 +1,94 @@ +[LAB_ONLY] + +[HEADER] +framecount=4 +framerate=30 +skeletonfile=fir.skl +jointcount=10 + +[Time] +frame1=0 +frame3=0.0666667 +frame7=0.2 +frame9=0.266667 + +[JointIndices] +jointlocal=0 +jointhip=1 +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 +jointrshoulder=7 +jointlshoulder=5 + +[JointType] +jointlocal=balltranslate +jointhip=hingex +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointrshoulder=hingex +jointlshoulder=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointhip=-0.122173 0.000000 0.000000 +jointlthigh=-0.045188 0.000000 0.000000 +jointlknee=-1.753532 0.000000 0.000000 +jointlankle=0.520927 0.000000 0.000000 +jointrthigh=0.417493 0.000000 0.000000 +jointrknee=-0.408109 0.000000 0.000000 +jointrankle=-0.009100 0.000000 0.000000 +jointrshoulder=0.296706 0.000000 0.000000 +jointlshoulder=0.296706 0.000000 0.000000 +[frame3] +jointlocal=0.000000 0.000000 0.000000 +jointhip=-0.084842 0.000000 0.000000 +jointlthigh=0.305459 0.000000 0.000000 +jointlknee=-1.474681 0.000000 0.000000 +jointlankle=0.660375 0.000000 0.000000 +jointrthigh=0.326904 0.000000 0.000000 +jointrknee=-0.690684 0.000000 0.000000 +jointrankle=0.364294 0.000000 0.000000 +jointrshoulder=0.253073 0.000000 0.000000 +jointlshoulder=0.253073 0.000000 0.000000 +[frame7] +jointlocal=0.000000 0.000000 0.000000 +jointhip=-0.040724 0.000000 0.000000 +jointlthigh=0.686574 0.000000 0.000000 +jointlknee=-0.979039 0.000000 0.000000 +jointlankle=0.315547 0.000000 0.000000 +jointrthigh=-0.150802 0.000000 0.000000 +jointrknee=-0.612981 0.000000 0.000000 +jointrankle=0.495899 0.000000 0.000000 +jointrshoulder=0.165806 0.000000 0.000000 +jointlshoulder=0.165806 0.000000 0.000000 +[frame9] +jointlocal=0.000000 0.000000 0.000000 +jointhip=0.000000 0.000000 0.000000 +jointlthigh=0.763780 0.000000 0.000000 +jointlknee=-0.532840 0.000000 0.000000 +jointlankle=0.108070 0.000000 0.000000 +jointrthigh=-0.389655 0.000000 0.000000 +jointrknee=-0.574130 0.000000 0.000000 +jointrankle=0.561701 0.000000 0.000000 +jointrshoulder=0.122173 0.000000 0.000000 +jointlshoulder=0.122173 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.363000 0.000000 +frame3=0.000000 -5.363000 16.108131 +frame7=0.000000 -5.363000 16.108133 +frame9=0.000000 -5.363000 16.108130 + +[KeyJointPos] +frame1=0.000000 -0.220000 0.000000 +frame3=0.000000 -0.315000 0.000000 +frame7=0.000000 -0.505000 0.000000 +frame9=0.000000 -0.600000 0.000000 diff --git a/CONTENT/BT3025/ANIMS/FIRRWR.ANI b/CONTENT/BT3025/ANIMS/FIRRWR.ANI new file mode 100644 index 0000000..7d9e953 --- /dev/null +++ b/CONTENT/BT3025/ANIMS/FIRRWR.ANI @@ -0,0 +1,94 @@ +[LAB_ONLY] + +[HEADER] +framecount=4 +framerate=30 +skeletonfile=fir.skl +jointcount=10 + +[Time] +frame1=0 +frame3=0.0666667 +frame7=0.2 +frame9=0.266667 + +[JointIndices] +jointlocal=0 +jointhip=1 +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 +jointrshoulder=7 +jointlshoulder=5 + +[JointType] +jointlocal=balltranslate +jointhip=hingex +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointrshoulder=hingex +jointlshoulder=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointhip=-0.122173 0.000000 0.000000 +jointlthigh=0.417493 0.000000 0.000000 +jointlknee=-0.408109 0.000000 0.000000 +jointlankle=-0.009100 0.000000 0.000000 +jointrthigh=-0.045188 0.000000 0.000000 +jointrknee=-1.753532 0.000000 0.000000 +jointrankle=0.520927 0.000000 0.000000 +jointrshoulder=0.296706 0.000000 0.000000 +jointlshoulder=0.296706 0.000000 0.000000 +[frame3] +jointlocal=0.000000 0.000000 0.000000 +jointhip=-0.084842 0.000000 0.000000 +jointlthigh=0.326904 0.000000 0.000000 +jointlknee=-0.690684 0.000000 0.000000 +jointlankle=0.364294 0.000000 0.000000 +jointrthigh=0.305459 0.000000 0.000000 +jointrknee=-1.474681 0.000000 0.000000 +jointrankle=0.660375 0.000000 0.000000 +jointrshoulder=0.253073 0.000000 0.000000 +jointlshoulder=0.253073 0.000000 0.000000 +[frame7] +jointlocal=0.000000 0.000000 0.000000 +jointhip=-0.040724 0.000000 0.000000 +jointlthigh=-0.150947 0.000000 0.000000 +jointlknee=-0.612709 0.000000 0.000000 +jointlankle=0.495774 0.000000 0.000000 +jointrthigh=0.686574 0.000000 0.000000 +jointrknee=-0.979039 0.000000 0.000000 +jointrankle=0.315547 0.000000 0.000000 +jointrshoulder=0.165806 0.000000 0.000000 +jointlshoulder=0.165806 0.000000 0.000000 +[frame9] +jointlocal=0.000000 0.000000 0.000000 +jointhip=0.000000 0.000000 0.000000 +jointlthigh=-0.389872 0.000000 0.000000 +jointlknee=-0.573721 0.000000 0.000000 +jointlankle=0.561514 0.000000 0.000000 +jointrthigh=0.763780 0.000000 0.000000 +jointrknee=-0.532840 0.000000 0.000000 +jointrankle=0.108070 0.000000 0.000000 +jointrshoulder=0.122173 0.000000 0.000000 +jointlshoulder=0.122173 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.363000 0.000000 +frame3=0.000000 -5.363000 16.108131 +frame7=0.000000 -5.363000 16.108133 +frame9=0.000000 -5.363000 16.108130 + +[KeyJointPos] +frame1=0.000000 -0.220000 0.000000 +frame3=0.000000 -0.315000 0.000000 +frame7=0.000000 -0.505000 0.000000 +frame9=0.000000 -0.600000 0.000000 diff --git a/CONTENT/BT3025/ANIMS/FIRSWL.ANI b/CONTENT/BT3025/ANIMS/FIRSWL.ANI new file mode 100644 index 0000000..ecdda73 --- /dev/null +++ b/CONTENT/BT3025/ANIMS/FIRSWL.ANI @@ -0,0 +1,87 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=fir.skl +jointcount=7 + +[Time] +frame1=0 +frame10=0.3 +frame23=0.733333 +frame34=1.1 +frame64=2.1 + +[JointIndices] +jointlocal=0 +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 + +[JointType] +jointlocal=balltranslate +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +[frame10] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.432606 0.000000 0.000000 +jointlknee=-0.820387 0.000000 0.000000 +jointlankle=0.300443 0.000000 0.000000 +jointrthigh=-0.213646 0.000000 0.000000 +jointrknee=-0.005362 0.000000 0.000000 +jointrankle=0.213883 0.000000 0.000000 +[frame23] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.647784 0.000000 0.000000 +jointlknee=-0.806660 0.000000 0.000000 +jointlankle=0.175491 0.000000 0.000000 +jointrthigh=-0.437360 0.000000 0.000000 +jointrknee=-0.037040 0.000000 0.000000 +jointrankle=0.379963 0.000000 0.000000 +[frame34] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.763780 0.000000 0.000000 +jointlknee=-0.532840 0.000000 0.000000 +jointlankle=0.108070 0.000000 0.000000 +jointrthigh=-0.549325 0.000000 0.000000 +jointrknee=-0.265173 0.000000 0.000000 +jointrankle=0.445083 0.000000 0.000000 +[frame64] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.763780 0.000000 0.000000 +jointlknee=-0.532840 0.000000 0.000000 +jointlankle=0.108070 0.000000 0.000000 +jointrthigh=-0.504240 0.000000 0.000000 +jointrknee=-0.357518 0.000000 0.000000 +jointrankle=0.491385 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.365190 0.000000 +frame10=0.000000 -5.365190 3.496686 +frame23=0.000000 -5.363000 2.669077 +frame34=0.000000 -5.363000 3.141382 +frame64=0.000000 -5.363000 3.001030 + +[KeyJointPos] +frame1=0.000000 0.000000 0.000000 +frame10=0.000000 -0.120010 0.000000 +frame23=0.000000 -0.340260 0.000000 +frame34=0.000000 -0.600000 0.000000 +frame64=0.000000 -0.600000 0.000000 diff --git a/CONTENT/BT3025/ANIMS/FIRSWLI.ANI b/CONTENT/BT3025/ANIMS/FIRSWLI.ANI new file mode 100644 index 0000000..ee8b62f --- /dev/null +++ b/CONTENT/BT3025/ANIMS/FIRSWLI.ANI @@ -0,0 +1,94 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=fir.skl +jointcount=8 + +[Time] +frame1=0 +frame10=0.3 +frame23=0.733333 +frame34=1.1 +frame64=2.1 + +[JointIndices] +jointlocal=0 +jointshakey=3 +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 + +[JointType] +jointlocal=balltranslate +jointshakey=ball +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +[frame10] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.432606 0.000000 0.000000 +jointlknee=-0.820387 0.000000 0.000000 +jointlankle=0.300443 0.000000 0.000000 +jointrthigh=-0.213646 0.000000 0.000000 +jointrknee=-0.005362 0.000000 0.000000 +jointrankle=0.213883 0.000000 0.000000 +[frame23] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.647784 0.000000 0.000000 +jointlknee=-0.806660 0.000000 0.000000 +jointlankle=0.175491 0.000000 0.000000 +jointrthigh=-0.437360 0.000000 0.000000 +jointrknee=-0.037040 0.000000 0.000000 +jointrankle=0.379963 0.000000 0.000000 +[frame34] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.763780 0.000000 0.000000 +jointlknee=-0.532840 0.000000 0.000000 +jointlankle=0.108070 0.000000 0.000000 +jointrthigh=-0.549325 0.000000 0.000000 +jointrknee=-0.265173 0.000000 0.000000 +jointrankle=0.445083 0.000000 0.000000 +[frame64] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.763780 0.000000 0.000000 +jointlknee=-0.532840 0.000000 0.000000 +jointlankle=0.108070 0.000000 0.000000 +jointrthigh=-0.504240 0.000000 0.000000 +jointrknee=-0.357518 0.000000 0.000000 +jointrankle=0.491385 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.365190 0.000000 +frame10=0.000000 -5.365190 3.496686 +frame23=0.000000 -5.363000 2.669077 +frame34=0.000000 -5.363000 3.141382 +frame64=0.000000 -5.363000 3.001030 + +[KeyJointPos] +frame1=0.000000 0.000000 0.000000 +frame10=0.000000 -0.120010 0.000000 +frame23=0.000000 -0.340260 0.000000 +frame34=0.000000 -0.600000 0.000000 +frame64=0.000000 -0.600000 0.000000 diff --git a/CONTENT/BT3025/ANIMS/FIRSWR.ANI b/CONTENT/BT3025/ANIMS/FIRSWR.ANI new file mode 100644 index 0000000..3d045e7 --- /dev/null +++ b/CONTENT/BT3025/ANIMS/FIRSWR.ANI @@ -0,0 +1,87 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=fir.skl +jointcount=7 + +[Time] +frame1=0 +frame10=0.3 +frame23=0.733333 +frame34=1.1 +frame64=2.1 + +[JointIndices] +jointlocal=0 +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 + +[JointType] +jointlocal=balltranslate +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +[frame10] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.213646 0.000000 0.000000 +jointlknee=-0.005362 0.000000 0.000000 +jointlankle=0.213883 0.000000 0.000000 +jointrthigh=0.432606 0.000000 0.000000 +jointrknee=-0.820387 0.000000 0.000000 +jointrankle=0.300443 0.000000 0.000000 +[frame23] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.437360 0.000000 0.000000 +jointlknee=-0.037040 0.000000 0.000000 +jointlankle=0.379963 0.000000 0.000000 +jointrthigh=0.647784 0.000000 0.000000 +jointrknee=-0.806660 0.000000 0.000000 +jointrankle=0.175491 0.000000 0.000000 +[frame34] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.549325 0.000000 0.000000 +jointlknee=-0.265173 0.000000 0.000000 +jointlankle=0.445083 0.000000 0.000000 +jointrthigh=0.763780 0.000000 0.000000 +jointrknee=-0.532840 0.000000 0.000000 +jointrankle=0.108070 0.000000 0.000000 +[frame64] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.504240 0.000000 0.000000 +jointlknee=-0.357518 0.000000 0.000000 +jointlankle=0.491385 0.000000 0.000000 +jointrthigh=0.763780 0.000000 0.000000 +jointrknee=-0.532840 0.000000 0.000000 +jointrankle=0.108070 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.365190 0.000000 +frame10=0.000000 -5.365190 3.496686 +frame23=0.000000 -5.363000 2.669077 +frame34=0.000000 -5.363000 3.141382 +frame64=0.000000 -5.363000 3.001030 + +[KeyJointPos] +frame1=0.000000 0.000000 0.000000 +frame10=0.000000 -0.120010 0.000000 +frame23=0.000000 -0.340260 0.000000 +frame34=0.000000 -0.600000 0.000000 +frame64=0.000000 -0.600000 0.000000 diff --git a/CONTENT/BT3025/ANIMS/FIRSWRI.ANI b/CONTENT/BT3025/ANIMS/FIRSWRI.ANI new file mode 100644 index 0000000..d985c10 --- /dev/null +++ b/CONTENT/BT3025/ANIMS/FIRSWRI.ANI @@ -0,0 +1,94 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=fir.skl +jointcount=8 + +[Time] +frame1=0 +frame10=0.3 +frame23=0.733333 +frame34=1.1 +frame64=2.1 + +[JointIndices] +jointlocal=0 +jointshakey=3 +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 + +[JointType] +jointlocal=balltranslate +jointshakey=ball +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +[frame10] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.213646 0.000000 0.000000 +jointlknee=-0.005362 0.000000 0.000000 +jointlankle=0.213883 0.000000 0.000000 +jointrthigh=0.432606 0.000000 0.000000 +jointrknee=-0.820387 0.000000 0.000000 +jointrankle=0.300443 0.000000 0.000000 +[frame23] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.437360 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlknee=-0.037040 0.000000 0.000000 +jointlankle=0.379963 0.000000 0.000000 +jointrthigh=0.647784 0.000000 0.000000 +jointrknee=-0.806660 0.000000 0.000000 +jointrankle=0.175491 0.000000 0.000000 +[frame34] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.549325 0.000000 0.000000 +jointlknee=-0.265173 0.000000 0.000000 +jointlankle=0.445083 0.000000 0.000000 +jointrthigh=0.763780 0.000000 0.000000 +jointrknee=-0.532840 0.000000 0.000000 +jointrankle=0.108070 0.000000 0.000000 +[frame64] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.504240 0.000000 0.000000 +jointlknee=-0.357518 0.000000 0.000000 +jointlankle=0.491385 0.000000 0.000000 +jointrthigh=0.763780 0.000000 0.000000 +jointrknee=-0.532840 0.000000 0.000000 +jointrankle=0.108070 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.365190 0.000000 +frame10=0.000000 -5.365190 3.496686 +frame23=0.000000 -5.363000 2.669077 +frame34=0.000000 -5.363000 3.141382 +frame64=0.000000 -5.363000 3.001030 + +[KeyJointPos] +frame1=0.000000 0.000000 0.000000 +frame10=0.000000 -0.120010 0.000000 +frame23=0.000000 -0.340260 0.000000 +frame34=0.000000 -0.600000 0.000000 +frame64=0.000000 -0.600000 0.000000 diff --git a/CONTENT/BT3025/ANIMS/FIRTRN.ANI b/CONTENT/BT3025/ANIMS/FIRTRN.ANI new file mode 100644 index 0000000..552acbd --- /dev/null +++ b/CONTENT/BT3025/ANIMS/FIRTRN.ANI @@ -0,0 +1,87 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=fir.skl +jointcount=7 + +[Time] +frame1=0 +frame12=0.366667 +frame23=0.733333 +frame34=1.1 +frame45=1.46667 + +[JointIndices] +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 +jointlocal=0 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate + +[frame1] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame12] +jointlthigh=0.293659 0.000000 0.000000 +jointlknee=-0.760082 0.000000 0.000000 +jointlankle=0.454452 0.000000 0.000000 +jointrthigh=0.058707 0.000000 0.000000 +jointrknee=-0.159500 0.000000 0.000000 +jointrankle=0.101507 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.018326 +[frame23] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame34] +jointlthigh=0.044154 0.000000 0.000000 +jointlknee=-0.119840 0.000000 0.000000 +jointlankle=0.076623 0.000000 0.000000 +jointrthigh=0.307909 0.000000 0.000000 +jointrknee=-0.797483 0.000000 0.000000 +jointrankle=0.477670 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.018326 +[frame45] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame12=0.000000 -5.350000 0.000000 +frame23=0.000000 -5.350000 0.000000 +frame34=0.000000 -5.350000 0.000000 +frame45=0.000000 -5.350000 0.000000 + +[KeyJointPos] +frame1=0.000000 0.000000 0.000000 +frame12=0.113777 -0.001042 0.000000 +frame23=0.000000 0.000000 0.000000 +frame34=-0.113777 -0.001042 0.000000 +frame45=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT3025/ANIMS/FIRTRNI.ANI b/CONTENT/BT3025/ANIMS/FIRTRNI.ANI new file mode 100644 index 0000000..4e71487 --- /dev/null +++ b/CONTENT/BT3025/ANIMS/FIRTRNI.ANI @@ -0,0 +1,94 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=fir.skl +jointcount=8 + +[Time] +frame1=0 +frame12=0.366667 +frame23=0.733333 +frame34=1.1 +frame45=1.46667 + +[JointIndices] +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame12] +jointlthigh=0.285597 0.000000 0.000000 +jointlknee=-0.733401 0.000000 0.000000 +jointlankle=0.435383 0.000000 0.000000 +jointrthigh=0.000030 0.000000 0.000000 +jointrknee=-0.000382 0.000000 0.000000 +jointrankle=0.000807 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.009163 +jointshakey=0.000000 0.000000 -0.009163 +[frame23] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame34] +jointlthigh=0.061957 0.000000 0.000000 +jointlknee=-0.168362 0.000000 0.000000 +jointlankle=0.107585 0.000000 0.000000 +jointrthigh=0.300350 0.000000 0.000000 +jointrknee=-0.771961 0.000000 0.000000 +jointrankle=0.459248 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.009163 +jointshakey=0.000000 0.000000 0.009163 +[frame45] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame12=0.000000 -5.350000 0.000000 +frame23=0.000000 -5.350000 0.000000 +frame34=0.000000 -5.350000 0.000000 +frame45=0.000000 -5.350000 0.000000 + +[KeyJointPos] +frame1=0.000000 0.000000 0.000000 +frame12=0.000000 0.000000 0.000000 +frame23=0.000000 0.000000 0.000000 +frame34=0.000000 0.000000 0.000000 +frame45=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT3025/ANIMS/FIRWSL.ANI b/CONTENT/BT3025/ANIMS/FIRWSL.ANI new file mode 100644 index 0000000..d19e5cc --- /dev/null +++ b/CONTENT/BT3025/ANIMS/FIRWSL.ANI @@ -0,0 +1,87 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=fir.skl +jointcount=7 + +[Time] +frame1=0 +frame11=0.333333 +frame20=0.633333 +frame26=0.833333 +frame30=0.966667 + +[JointIndices] +jointlocal=0 +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 + +[JointType] +jointlocal=balltranslate +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.418985 0.000000 0.000000 +jointlknee=-0.525405 0.000000 0.000000 +jointlankle=0.571320 0.000000 0.000000 +jointrthigh=0.763780 0.000000 0.000000 +jointrknee=-0.532840 0.000000 0.000000 +jointrankle=0.108070 0.000000 0.000000 +[frame11] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.068947 0.000000 0.000000 +jointlknee=-1.083500 0.000000 0.000000 +jointlankle=0.601760 0.000000 0.000000 +jointrthigh=0.564644 0.000000 0.000000 +jointrknee=-0.519783 0.000000 0.000000 +jointrankle=-0.042618 0.000000 0.000000 +[frame20] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.218730 0.000000 0.000000 +jointlknee=-0.942397 0.000000 0.000000 +jointlankle=0.581957 0.000000 0.000000 +jointrthigh=0.374021 0.000000 0.000000 +jointrknee=-0.476005 0.000000 0.000000 +jointrankle=0.101927 0.000000 0.000000 +[frame26] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.064478 0.000000 0.000000 +jointlknee=-0.305907 0.000000 0.000000 +jointlankle=0.246479 0.000000 0.000000 +jointrthigh=0.149608 0.000000 0.000000 +jointrknee=-0.190402 0.000000 0.000000 +jointrankle=0.040771 0.000000 0.000000 +[frame30] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.363000 0.000000 +frame11=0.000000 -5.363730 3.367201 +frame20=0.000000 -5.364460 2.565333 +frame26=0.000000 -5.364898 1.928702 +frame30=0.000000 -5.365190 1.928702 + +[KeyJointPos] +frame1=0.000000 -0.600000 0.000000 +frame11=0.000000 -0.400000 0.000000 +frame20=0.000000 -0.200000 0.000000 +frame26=0.000000 -0.080000 0.000000 +frame30=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT3025/ANIMS/FIRWSLI.ANI b/CONTENT/BT3025/ANIMS/FIRWSLI.ANI new file mode 100644 index 0000000..f35d801 --- /dev/null +++ b/CONTENT/BT3025/ANIMS/FIRWSLI.ANI @@ -0,0 +1,94 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=fir.skl +jointcount=8 + +[Time] +frame1=0 +frame11=0.333333 +frame20=0.633333 +frame26=0.833333 +frame30=0.966667 + +[JointIndices] +jointlocal=0 +jointshakey=3 +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 + +[JointType] +jointlocal=balltranslate +jointshakey=ball +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.418985 0.000000 0.000000 +jointlknee=-0.525405 0.000000 0.000000 +jointlankle=0.571320 0.000000 0.000000 +jointrthigh=0.763780 0.000000 0.000000 +jointrknee=-0.532840 0.000000 0.000000 +jointrankle=0.108070 0.000000 0.000000 +[frame11] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.068947 0.000000 0.000000 +jointlknee=-1.083500 0.000000 0.000000 +jointlankle=0.601760 0.000000 0.000000 +jointrthigh=0.564644 0.000000 0.000000 +jointrknee=-0.519783 0.000000 0.000000 +jointrankle=-0.042618 0.000000 0.000000 +[frame20] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.218730 0.000000 0.000000 +jointlknee=-0.942397 0.000000 0.000000 +jointlankle=0.581957 0.000000 0.000000 +jointrthigh=0.374021 0.000000 0.000000 +jointrknee=-0.476005 0.000000 0.000000 +jointrankle=0.101927 0.000000 0.000000 +[frame26] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.064478 0.000000 0.000000 +jointlknee=-0.305907 0.000000 0.000000 +jointlankle=0.246479 0.000000 0.000000 +jointrthigh=0.149608 0.000000 0.000000 +jointrknee=-0.190402 0.000000 0.000000 +jointrankle=0.040771 0.000000 0.000000 +[frame30] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.363000 0.000000 +frame11=0.000000 -5.363730 3.367201 +frame20=0.000000 -5.364460 2.565333 +frame26=0.000000 -5.364898 1.928702 +frame30=0.000000 -5.365190 1.928702 + +[KeyJointPos] +frame1=0.000000 -0.600000 0.000000 +frame11=0.000000 -0.400000 0.000000 +frame20=0.000000 -0.200000 0.000000 +frame26=0.000000 -0.080000 0.000000 +frame30=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT3025/ANIMS/FIRWSR.ANI b/CONTENT/BT3025/ANIMS/FIRWSR.ANI new file mode 100644 index 0000000..a5317cc --- /dev/null +++ b/CONTENT/BT3025/ANIMS/FIRWSR.ANI @@ -0,0 +1,87 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=fir.skl +jointcount=7 + +[Time] +frame1=0 +frame11=0.333333 +frame20=0.633333 +frame26=0.833333 +frame30=0.966667 + +[JointIndices] +jointlocal=0 +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 + +[JointType] +jointlocal=balltranslate +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.763780 0.000000 0.000000 +jointlknee=-0.532840 0.000000 0.000000 +jointlankle=0.108070 0.000000 0.000000 +jointrthigh=-0.418985 0.000000 0.000000 +jointrknee=-0.525405 0.000000 0.000000 +jointrankle=0.571320 0.000000 0.000000 +[frame11] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.564644 0.000000 0.000000 +jointlknee=-0.519783 0.000000 0.000000 +jointlankle=-0.042618 0.000000 0.000000 +jointrthigh=0.068947 0.000000 0.000000 +jointrknee=-1.083500 0.000000 0.000000 +jointrankle=0.601760 0.000000 0.000000 +[frame20] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.374021 0.000000 0.000000 +jointlknee=-0.476005 0.000000 0.000000 +jointlankle=0.101927 0.000000 0.000000 +jointrthigh=0.217938 0.000000 0.000000 +jointrknee=-0.825595 0.000000 0.000000 +jointrankle=0.513219 0.000000 0.000000 +[frame26] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.149608 0.000000 0.000000 +jointlknee=-0.190402 0.000000 0.000000 +jointlankle=0.040771 0.000000 0.000000 +jointrthigh=0.124593 0.000000 0.000000 +jointrknee=-0.381197 0.000000 0.000000 +jointrankle=0.246479 0.000000 0.000000 +[frame30] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.363000 0.000000 +frame11=0.000000 -5.363730 3.367201 +frame20=0.000000 -5.364460 2.565333 +frame26=0.000000 -5.364898 1.928702 +frame30=0.000000 -5.365190 1.928702 + +[KeyJointPos] +frame1=0.000000 -0.600000 0.000000 +frame11=0.000000 -0.400000 0.000000 +frame20=0.000000 -0.200000 0.000000 +frame26=0.000000 -0.080000 0.000000 +frame30=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT3025/ANIMS/FIRWSRI.ANI b/CONTENT/BT3025/ANIMS/FIRWSRI.ANI new file mode 100644 index 0000000..9fde0cc --- /dev/null +++ b/CONTENT/BT3025/ANIMS/FIRWSRI.ANI @@ -0,0 +1,94 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=fir.skl +jointcount=8 + +[Time] +frame1=0 +frame11=0.333333 +frame20=0.633333 +frame26=0.833333 +frame30=0.966667 + +[JointIndices] +jointlocal=0 +jointshakey=3 +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 + +[JointType] +jointlocal=balltranslate +jointshakey=ball +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.763780 0.000000 0.000000 +jointlknee=-0.532840 0.000000 0.000000 +jointlankle=0.108070 0.000000 0.000000 +jointrthigh=-0.418985 0.000000 0.000000 +jointrknee=-0.525405 0.000000 0.000000 +jointrankle=0.571320 0.000000 0.000000 +[frame11] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.564644 0.000000 0.000000 +jointlknee=-0.519783 0.000000 0.000000 +jointlankle=-0.042618 0.000000 0.000000 +jointrthigh=0.068947 0.000000 0.000000 +jointrknee=-1.083500 0.000000 0.000000 +jointrankle=0.601760 0.000000 0.000000 +[frame20] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.374021 0.000000 0.000000 +jointlknee=-0.476005 0.000000 0.000000 +jointlankle=0.101927 0.000000 0.000000 +jointrthigh=0.217938 0.000000 0.000000 +jointrknee=-0.825595 0.000000 0.000000 +jointrankle=0.513219 0.000000 0.000000 +[frame26] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.149608 0.000000 0.000000 +jointlknee=-0.190402 0.000000 0.000000 +jointlankle=0.040771 0.000000 0.000000 +jointrthigh=0.124593 0.000000 0.000000 +jointrknee=-0.381197 0.000000 0.000000 +jointrankle=0.246479 0.000000 0.000000 +[frame30] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.363000 0.000000 +frame11=0.000000 -5.363730 3.367201 +frame20=0.000000 -5.364460 2.565333 +frame26=0.000000 -5.364898 1.928702 +frame30=0.000000 -5.365190 1.928702 + +[KeyJointPos] +frame1=0.000000 -0.600000 0.000000 +frame11=0.000000 -0.400000 0.000000 +frame20=0.000000 -0.200000 0.000000 +frame26=0.000000 -0.080000 0.000000 +frame30=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT3025/ANIMS/JAKBMP.ANI b/CONTENT/BT3025/ANIMS/JAKBMP.ANI new file mode 100644 index 0000000..9984ba8 --- /dev/null +++ b/CONTENT/BT3025/ANIMS/JAKBMP.ANI @@ -0,0 +1,70 @@ +[LAB_ONLY] + +[HEADER] +framecount=3 +framerate=30 +skeletonfile=jak.skl +jointcount=8 + +[Time] +frame1=0 +frame8=0.233333 +frame15=0.466667 + +[JointIndices] +jointlocal=0 +jointhip=1 +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=12 +jointrknee=13 +jointrankle=14 + +[JointType] +jointlocal=balltranslate +jointhip=hingex +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointhip=0.000000 0.000000 0.000000 +jointlthigh=-0.383931 0.000000 0.000000 +jointlknee=-1.164100 0.000000 0.000000 +jointlankle=-0.369045 0.000000 0.000000 +jointrthigh=0.965050 0.000000 0.000000 +jointrknee=-0.162689 0.000000 0.000000 +jointrankle=-0.250045 0.000000 0.000000 +[frame8] +jointlocal=0.000000 0.000000 0.000000 +jointhip=0.436332 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +[frame15] +jointlocal=0.000000 0.000000 0.000000 +jointhip=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.022705 -5.367000 0.000000 +frame8=0.022705 -5.367000 0.000000 +frame15=0.022705 -5.367000 0.000000 + +[KeyJointPos] +frame1=0.000000 0.070393 0.000000 +frame8=0.000000 0.000000 0.000000 +frame15=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT3025/ANIMS/JAKBMPI.ANI b/CONTENT/BT3025/ANIMS/JAKBMPI.ANI new file mode 100644 index 0000000..962b708 --- /dev/null +++ b/CONTENT/BT3025/ANIMS/JAKBMPI.ANI @@ -0,0 +1,76 @@ +[LAB_ONLY] + +[HEADER] +framecount=3 +framerate=30 +skeletonfile=jak.skl +jointcount=9 + +[Time] +frame1=0 +frame8=0.233333 +frame15=0.466667 + +[JointIndices] +jointlocal=0 +jointhip=1 +jointshakey=3 +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=12 +jointrknee=13 +jointrankle=14 + + +[JointType] +jointlocal=balltranslate +jointhip=hingex +jointshakey=ball +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointhip=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.383931 0.000000 0.000000 +jointlknee=-1.164100 0.000000 0.000000 +jointlankle=-0.369045 0.000000 0.000000 +jointrthigh=0.965050 0.000000 0.000000 +jointrknee=-0.162689 0.000000 0.000000 +jointrankle=-0.250045 0.000000 0.000000 +[frame8] +jointlocal=0.000000 0.000000 0.000000 +jointhip=0.436332 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +[frame15] +jointlocal=0.000000 0.000000 0.000000 +jointhip=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.022705 -5.367000 0.000000 +frame8=0.022705 -5.367000 0.000000 +frame15=0.022705 -5.367000 0.000000 + +[KeyJointPos] +frame1=0.000000 0.070393 0.000000 +frame8=0.000000 0.000000 0.000000 +frame15=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT3025/ANIMS/JAKBSL.ANI b/CONTENT/BT3025/ANIMS/JAKBSL.ANI new file mode 100644 index 0000000..5f8da94 --- /dev/null +++ b/CONTENT/BT3025/ANIMS/JAKBSL.ANI @@ -0,0 +1,76 @@ +[LAB_ONLY] + +[HEADER] +framecount=4 +framerate=30 +skeletonfile=jak.skl +jointcount=7 + +[Time] +frame1=0 +frame14=0.433333 +frame18=0.566667 +frame25=0.8 + +[JointIndices] +jointlocal=0 +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=12 +jointrknee=13 +jointrankle=14 + +[JointType] +jointlocal=balltranslate +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.629025 0.000000 0.000000 +jointlknee=-0.231209 0.000000 0.000000 +jointlankle=-0.013522 0.000000 0.000000 +jointrthigh=-0.459470 0.000000 0.000000 +jointrknee=-0.186817 0.000000 0.000000 +jointrankle=0.455412 0.000000 0.000000 +[frame14] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.380822 0.000000 0.000000 +jointlknee=-0.462648 0.000000 0.000000 +jointlankle=0.125419 0.000000 0.000000 +jointrthigh=-0.218775 0.000000 0.000000 +jointrknee=-0.014805 0.000000 0.000000 +jointrankle=0.218170 0.000000 0.000000 +[frame18] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.257063 0.000000 0.000000 +jointlknee=-0.371272 0.000000 0.000000 +jointlankle=0.141490 0.000000 0.000000 +jointrthigh=-0.135466 0.000000 0.000000 +jointrknee=-0.010869 0.000000 0.000000 +jointrankle=0.131098 0.000000 0.000000 +[frame25] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.022705 -5.367000 0.000000 +frame14=0.022705 -5.367000 -3.897208 +frame18=0.022692 -5.367000 -3.248550 +frame25=0.022679 -5.367080 -3.049657 + +[KeyJointPos] +frame1=0.000000 -0.375690 0.000000 +frame14=0.000000 -0.093863 0.000000 +frame18=0.000000 -0.023465 0.000000 +frame25=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT3025/ANIMS/JAKBSLI.ANI b/CONTENT/BT3025/ANIMS/JAKBSLI.ANI new file mode 100644 index 0000000..d73f617 --- /dev/null +++ b/CONTENT/BT3025/ANIMS/JAKBSLI.ANI @@ -0,0 +1,83 @@ +[LAB_ONLY] + +[HEADER] +framecount=4 +framerate=30 +skeletonfile=jak.skl +jointcount=8 + +[Time] +frame1=0 +frame14=0.433333 +frame18=0.566667 +frame25=0.8 + +[JointIndices] +jointlocal=0 +jointshakey=3 +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=12 +jointrknee=13 +jointrankle=14 + + +[JointType] +jointlocal=balltranslate +jointshakey=ball +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.629025 0.000000 0.000000 +jointlknee=-0.231209 0.000000 0.000000 +jointlankle=-0.013522 0.000000 0.000000 +jointrthigh=-0.459470 0.000000 0.000000 +jointrknee=-0.186817 0.000000 0.000000 +jointrankle=0.455412 0.000000 0.000000 +[frame14] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.380822 0.000000 0.000000 +jointlknee=-0.462648 0.000000 0.000000 +jointlankle=0.125419 0.000000 0.000000 +jointrthigh=-0.218775 0.000000 0.000000 +jointrknee=-0.014805 0.000000 0.000000 +jointrankle=0.218170 0.000000 0.000000 +[frame18] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.257063 0.000000 0.000000 +jointlknee=-0.371272 0.000000 0.000000 +jointlankle=0.141490 0.000000 0.000000 +jointrthigh=-0.135466 0.000000 0.000000 +jointrknee=-0.010869 0.000000 0.000000 +jointrankle=0.131098 0.000000 0.000000 +[frame25] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.022705 -5.367000 0.000000 +frame14=0.022705 -5.367000 -3.897208 +frame18=0.022692 -5.367000 -3.248550 +frame25=0.022679 -5.367080 -3.049657 + +[KeyJointPos] +frame1=0.000000 -0.375690 0.000000 +frame14=0.000000 -0.093863 0.000000 +frame18=0.000000 -0.023465 0.000000 +frame25=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT3025/ANIMS/JAKBSR.ANI b/CONTENT/BT3025/ANIMS/JAKBSR.ANI new file mode 100644 index 0000000..5a9d4cb --- /dev/null +++ b/CONTENT/BT3025/ANIMS/JAKBSR.ANI @@ -0,0 +1,76 @@ +[LAB_ONLY] + +[HEADER] +framecount=4 +framerate=30 +skeletonfile=jak.skl +jointcount=7 + +[Time] +frame1=0 +frame14=0.433333 +frame18=0.566667 +frame25=0.8 + +[JointIndices] +jointlocal=0 +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=12 +jointrknee=13 +jointrankle=14 + +[JointType] +jointlocal=balltranslate +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.459470 0.000000 0.000000 +jointlknee=-0.186817 0.000000 0.000000 +jointlankle=0.455412 0.000000 0.000000 +jointrthigh=0.629025 0.000000 0.000000 +jointrknee=-0.231209 0.000000 0.000000 +jointrankle=-0.013522 0.000000 0.000000 +[frame14] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.218775 0.000000 0.000000 +jointlknee=-0.014805 0.000000 0.000000 +jointlankle=0.218170 0.000000 0.000000 +jointrthigh=0.380822 0.000000 0.000000 +jointrknee=-0.462648 0.000000 0.000000 +jointrankle=0.125419 0.000000 0.000000 +[frame18] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.135466 0.000000 0.000000 +jointlknee=-0.010869 0.000000 0.000000 +jointlankle=0.131098 0.000000 0.000000 +jointrthigh=0.257063 0.000000 0.000000 +jointrknee=-0.371272 0.000000 0.000000 +jointrankle=0.141490 0.000000 0.000000 +[frame25] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.022705 -5.367000 0.000000 +frame14=0.022705 -5.367000 -3.897208 +frame18=0.022692 -5.367000 -3.248550 +frame25=0.022679 -5.367080 -3.049657 + +[KeyJointPos] +frame1=0.000000 -0.375690 0.000000 +frame14=0.000000 -0.093863 0.000000 +frame18=0.000000 -0.023465 0.000000 +frame25=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT3025/ANIMS/JAKBSRI.ANI b/CONTENT/BT3025/ANIMS/JAKBSRI.ANI new file mode 100644 index 0000000..bd65d00 --- /dev/null +++ b/CONTENT/BT3025/ANIMS/JAKBSRI.ANI @@ -0,0 +1,83 @@ +[LAB_ONLY] + +[HEADER] +framecount=4 +framerate=30 +skeletonfile=jak.skl +jointcount=8 + +[Time] +frame1=0 +frame14=0.433333 +frame18=0.566667 +frame25=0.8 + +[JointIndices] +jointlocal=0 +jointshakey=3 +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=12 +jointrknee=13 +jointrankle=14 + + +[JointType] +jointlocal=balltranslate +jointshakey=ball +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.459470 0.000000 0.000000 +jointlknee=-0.186817 0.000000 0.000000 +jointlankle=0.455412 0.000000 0.000000 +jointrthigh=0.629025 0.000000 0.000000 +jointrknee=-0.231209 0.000000 0.000000 +jointrankle=-0.013522 0.000000 0.000000 +[frame14] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.218775 0.000000 0.000000 +jointlknee=-0.014805 0.000000 0.000000 +jointlankle=0.218170 0.000000 0.000000 +jointrthigh=0.380822 0.000000 0.000000 +jointrknee=-0.462648 0.000000 0.000000 +jointrankle=0.125419 0.000000 0.000000 +[frame18] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.135466 0.000000 0.000000 +jointlknee=-0.010869 0.000000 0.000000 +jointlankle=0.131098 0.000000 0.000000 +jointrthigh=0.257063 0.000000 0.000000 +jointrknee=-0.371272 0.000000 0.000000 +jointrankle=0.141490 0.000000 0.000000 +[frame25] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.022705 -5.367000 0.000000 +frame14=0.022705 -5.367000 -3.897208 +frame18=0.022692 -5.367000 -3.248550 +frame25=0.022679 -5.367080 -3.049657 + +[KeyJointPos] +frame1=0.000000 -0.375690 0.000000 +frame14=0.000000 -0.093863 0.000000 +frame18=0.000000 -0.023465 0.000000 +frame25=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT3025/ANIMS/JAKRWL.ANI b/CONTENT/BT3025/ANIMS/JAKRWL.ANI new file mode 100644 index 0000000..2091796 --- /dev/null +++ b/CONTENT/BT3025/ANIMS/JAKRWL.ANI @@ -0,0 +1,87 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=jak.skl +jointcount=7 + +[Time] +frame1=0 +frame4=0.1 +frame7=0.2 +frame8=0.233333 +frame9=0.266667 + +[JointIndices] +jointlocal=0 +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=12 +jointrknee=13 +jointrankle=14 + +[JointType] +jointlocal=balltranslate +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.125867 0.000000 0.000000 +jointlknee=-1.372056 0.000000 0.000000 +jointlankle=0.546410 0.000000 0.000000 +jointrthigh=0.740852 0.000000 0.000000 +jointrknee=-0.731824 0.000000 0.000000 +jointrankle=-0.010616 0.000000 0.000000 +[frame4] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.227024 0.000000 0.000000 +jointlknee=-1.163234 0.000000 0.000000 +jointlankle=0.737962 0.000000 0.000000 +jointrthigh=0.391528 0.000000 0.000000 +jointrknee=-0.890176 0.000000 0.000000 +jointrankle=0.494703 0.000000 0.000000 +[frame7] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.723509 0.000000 0.000000 +jointlknee=-0.923883 0.000000 0.000000 +jointlankle=0.309838 0.000000 0.000000 +jointrthigh=-0.090580 0.000000 0.000000 +jointrknee=-0.501983 0.000000 0.000000 +jointrankle=0.495967 0.000000 0.000000 +[frame8] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.771818 0.000000 0.000000 +jointlknee=-0.618335 0.000000 0.000000 +jointlankle=0.130211 0.000000 0.000000 +jointrthigh=-0.166147 0.000000 0.000000 +jointrknee=-0.518128 0.000000 0.000000 +jointrankle=0.520940 0.000000 0.000000 +[frame9] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.593300 0.000000 0.000000 +jointlknee=-0.135467 0.000000 0.000000 +jointlankle=-0.074152 0.000000 0.000000 +jointrthigh=-0.241714 0.000000 0.000000 +jointrknee=-0.534273 0.000000 0.000000 +jointrankle=0.545913 0.000000 0.000000 + +[RootTranslation] +frame1=0.022705 -5.367000 0.000000 +frame4=0.022705 -5.367000 19.724007 +frame7=0.022705 -5.367000 14.234390 +frame8=0.022705 -5.367000 14.234391 +frame9=0.022705 -5.367000 14.234385 + +[KeyJointPos] +frame1=0.000000 -0.611179 0.000000 +frame4=0.000000 -0.522871 0.000000 +frame7=0.000000 -0.434562 0.000000 +frame8=0.000000 -0.405126 0.000000 +frame9=0.000000 -0.375690 0.000000 diff --git a/CONTENT/BT3025/ANIMS/JAKRWLI.ANI b/CONTENT/BT3025/ANIMS/JAKRWLI.ANI new file mode 100644 index 0000000..796d9b3 --- /dev/null +++ b/CONTENT/BT3025/ANIMS/JAKRWLI.ANI @@ -0,0 +1,95 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=jak.skl +jointcount=8 + +[Time] +frame1=0 +frame4=0.1 +frame7=0.2 +frame8=0.233333 +frame9=0.266667 + +[JointIndices] +jointlocal=0 +jointshakey=3 +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=12 +jointrknee=13 +jointrankle=14 + + +[JointType] +jointlocal=balltranslate +jointshakey=ball +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.125867 0.000000 0.000000 +jointlknee=-1.372056 0.000000 0.000000 +jointlankle=0.546410 0.000000 0.000000 +jointrthigh=0.740852 0.000000 0.000000 +jointrknee=-0.731824 0.000000 0.000000 +jointrankle=-0.010616 0.000000 0.000000 +[frame4] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.227024 0.000000 0.000000 +jointlknee=-1.163234 0.000000 0.000000 +jointlankle=0.737962 0.000000 0.000000 +jointrthigh=0.391528 0.000000 0.000000 +jointrknee=-0.890176 0.000000 0.000000 +jointrankle=0.494703 0.000000 0.000000 +[frame7] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.723509 0.000000 0.000000 +jointlknee=-0.923883 0.000000 0.000000 +jointlankle=0.309838 0.000000 0.000000 +jointrthigh=-0.090580 0.000000 0.000000 +jointrknee=-0.501983 0.000000 0.000000 +jointrankle=0.495967 0.000000 0.000000 +[frame8] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.771818 0.000000 0.000000 +jointlknee=-0.618335 0.000000 0.000000 +jointlankle=0.130211 0.000000 0.000000 +jointrthigh=-0.166147 0.000000 0.000000 +jointrknee=-0.518128 0.000000 0.000000 +jointrankle=0.520940 0.000000 0.000000 +[frame9] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.593300 0.000000 0.000000 +jointlknee=-0.135467 0.000000 0.000000 +jointlankle=-0.074152 0.000000 0.000000 +jointrthigh=-0.241714 0.000000 0.000000 +jointrknee=-0.534273 0.000000 0.000000 +jointrankle=0.545913 0.000000 0.000000 + +[RootTranslation] +frame1=0.022705 -5.367000 0.000000 +frame4=0.022705 -5.367000 19.724007 +frame7=0.022705 -5.367000 14.234390 +frame8=0.022705 -5.367000 14.234391 +frame9=0.022705 -5.367000 14.234385 + +[KeyJointPos] +frame1=0.000000 -0.611179 0.000000 +frame4=0.000000 -0.522871 0.000000 +frame7=0.000000 -0.434562 0.000000 +frame8=0.000000 -0.405126 0.000000 +frame9=0.000000 -0.375690 0.000000 diff --git a/CONTENT/BT3025/ANIMS/JAKRWR.ANI b/CONTENT/BT3025/ANIMS/JAKRWR.ANI new file mode 100644 index 0000000..ba46737 --- /dev/null +++ b/CONTENT/BT3025/ANIMS/JAKRWR.ANI @@ -0,0 +1,87 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=jak.skl +jointcount=7 + +[Time] +frame1=0 +frame4=0.1 +frame7=0.2 +frame8=0.233333 +frame9=0.266667 + +[JointIndices] +jointlocal=0 +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=12 +jointrknee=13 +jointrankle=14 + +[JointType] +jointlocal=balltranslate +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.740852 0.000000 0.000000 +jointlknee=-0.731824 0.000000 0.000000 +jointlankle=-0.010616 0.000000 0.000000 +jointrthigh=-0.125867 0.000000 0.000000 +jointrknee=-1.372056 0.000000 0.000000 +jointrankle=0.546410 0.000000 0.000000 +[frame4] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.391528 0.000000 0.000000 +jointlknee=-0.890176 0.000000 0.000000 +jointlankle=0.494703 0.000000 0.000000 +jointrthigh=0.227024 0.000000 0.000000 +jointrknee=-1.163234 0.000000 0.000000 +jointrankle=0.737962 0.000000 0.000000 +[frame7] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.209289 0.000000 0.000000 +jointlknee=-0.315376 0.000000 0.000000 +jointlankle=0.525911 0.000000 0.000000 +jointrthigh=0.723509 0.000000 0.000000 +jointrknee=-0.923883 0.000000 0.000000 +jointrankle=0.309838 0.000000 0.000000 +[frame8] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.221272 0.000000 0.000000 +jointlknee=-0.432610 0.000000 0.000000 +jointlankle=0.539170 0.000000 0.000000 +jointrthigh=0.771818 0.000000 0.000000 +jointrknee=-0.618335 0.000000 0.000000 +jointrankle=0.130211 0.000000 0.000000 +[frame9] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.233255 0.000000 0.000000 +jointlknee=-0.549845 0.000000 0.000000 +jointlankle=0.552428 0.000000 0.000000 +jointrthigh=0.593300 0.000000 0.000000 +jointrknee=-0.135467 0.000000 0.000000 +jointrankle=-0.074152 0.000000 0.000000 + +[RootTranslation] +frame1=0.022705 -5.367000 0.000000 +frame4=0.022705 -5.367000 19.724007 +frame7=0.022705 -5.367000 14.234390 +frame8=0.022705 -5.367000 14.234391 +frame9=0.022705 -5.367000 14.234385 + +[KeyJointPos] +frame1=0.000000 -0.611179 0.000000 +frame4=0.000000 -0.522871 0.000000 +frame7=0.000000 -0.434562 0.000000 +frame8=0.000000 -0.405126 0.000000 +frame9=0.000000 -0.375690 0.000000 diff --git a/CONTENT/BT3025/ANIMS/JAKRWRI.ANI b/CONTENT/BT3025/ANIMS/JAKRWRI.ANI new file mode 100644 index 0000000..5a1803a --- /dev/null +++ b/CONTENT/BT3025/ANIMS/JAKRWRI.ANI @@ -0,0 +1,95 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=jak.skl +jointcount=8 + +[Time] +frame1=0 +frame4=0.1 +frame7=0.2 +frame8=0.233333 +frame9=0.266667 + +[JointIndices] +jointlocal=0 +jointshakey=3 +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=12 +jointrknee=13 +jointrankle=14 + + +[JointType] +jointlocal=balltranslate +jointshakey=ball +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.740852 0.000000 0.000000 +jointlknee=-0.731824 0.000000 0.000000 +jointlankle=-0.010616 0.000000 0.000000 +jointrthigh=-0.125867 0.000000 0.000000 +jointrknee=-1.372056 0.000000 0.000000 +jointrankle=0.546410 0.000000 0.000000 +[frame4] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.391528 0.000000 0.000000 +jointlknee=-0.890176 0.000000 0.000000 +jointlankle=0.494703 0.000000 0.000000 +jointrthigh=0.227024 0.000000 0.000000 +jointrknee=-1.163234 0.000000 0.000000 +jointrankle=0.737962 0.000000 0.000000 +[frame7] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.209289 0.000000 0.000000 +jointlknee=-0.315376 0.000000 0.000000 +jointlankle=0.525911 0.000000 0.000000 +jointrthigh=0.723509 0.000000 0.000000 +jointrknee=-0.923883 0.000000 0.000000 +jointrankle=0.309838 0.000000 0.000000 +[frame8] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.221272 0.000000 0.000000 +jointlknee=-0.432610 0.000000 0.000000 +jointlankle=0.539170 0.000000 0.000000 +jointrthigh=0.771818 0.000000 0.000000 +jointrknee=-0.618335 0.000000 0.000000 +jointrankle=0.130211 0.000000 0.000000 +[frame9] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.233255 0.000000 0.000000 +jointlknee=-0.549845 0.000000 0.000000 +jointlankle=0.552428 0.000000 0.000000 +jointrthigh=0.593300 0.000000 0.000000 +jointrknee=-0.135467 0.000000 0.000000 +jointrankle=-0.074152 0.000000 0.000000 + +[RootTranslation] +frame1=0.022705 -5.367000 0.000000 +frame4=0.022705 -5.367000 19.724007 +frame7=0.022705 -5.367000 14.234390 +frame8=0.022705 -5.367000 14.234391 +frame9=0.022705 -5.367000 14.234385 + +[KeyJointPos] +frame1=0.000000 -0.611179 0.000000 +frame4=0.000000 -0.522871 0.000000 +frame7=0.000000 -0.434562 0.000000 +frame8=0.000000 -0.405126 0.000000 +frame9=0.000000 -0.375690 0.000000 diff --git a/CONTENT/BT3025/ANIMS/JAKSWL.ANI b/CONTENT/BT3025/ANIMS/JAKSWL.ANI new file mode 100644 index 0000000..0b83780 --- /dev/null +++ b/CONTENT/BT3025/ANIMS/JAKSWL.ANI @@ -0,0 +1,87 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=jak.skl +jointcount=7 + +[Time] +frame1=0 +frame8=0.233333 +frame12=0.366667 +frame25=0.8 +frame55=1.8 + +[JointIndices] +jointlocal=0 +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=12 +jointrknee=13 +jointrankle=14 + +[JointType] +jointlocal=balltranslate +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +[frame8] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.257063 0.000000 0.000000 +jointlknee=-0.371272 0.000000 0.000000 +jointlankle=0.141490 0.000000 0.000000 +jointrthigh=-0.135466 0.000000 0.000000 +jointrknee=-0.010869 0.000000 0.000000 +jointrankle=0.131098 0.000000 0.000000 +[frame12] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.380822 0.000000 0.000000 +jointlknee=-0.462648 0.000000 0.000000 +jointlankle=0.125419 0.000000 0.000000 +jointrthigh=-0.218775 0.000000 0.000000 +jointrknee=-0.014805 0.000000 0.000000 +jointrankle=0.218170 0.000000 0.000000 +[frame25] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.629025 0.000000 0.000000 +jointlknee=-0.231209 0.000000 0.000000 +jointlankle=-0.013522 0.000000 0.000000 +jointrthigh=-0.459470 0.000000 0.000000 +jointrknee=-0.186817 0.000000 0.000000 +jointrankle=0.455412 0.000000 0.000000 +[frame55] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.629025 0.000000 0.000000 +jointlknee=-0.231209 0.000000 0.000000 +jointlankle=-0.013522 0.000000 0.000000 +jointrthigh=-0.436133 0.000000 0.000000 +jointrknee=-0.220021 0.000000 0.000000 +jointrankle=0.464659 0.000000 0.000000 + +[RootTranslation] +frame1=0.022679 -5.367080 0.000000 +frame8=0.022692 -5.367000 3.049658 +frame12=0.022705 -5.367000 3.248550 +frame25=0.022705 -5.367000 3.897208 +frame55=0.022705 -5.367000 3.892190 + +[KeyJointPos] +frame1=0.000000 0.000000 0.000000 +frame8=0.000000 -0.023465 0.000000 +frame12=0.000000 -0.093863 0.000000 +frame25=0.000000 -0.375690 0.000000 +frame55=0.000000 -0.375690 0.000000 diff --git a/CONTENT/BT3025/ANIMS/JAKSWLI.ANI b/CONTENT/BT3025/ANIMS/JAKSWLI.ANI new file mode 100644 index 0000000..1e725d9 --- /dev/null +++ b/CONTENT/BT3025/ANIMS/JAKSWLI.ANI @@ -0,0 +1,94 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=jak.skl +jointcount=8 + +[Time] +frame1=0 +frame8=0.233333 +frame12=0.366667 +frame25=0.8 +frame55=1.8 + +[JointIndices] +jointlocal=0 +jointshakey=3 +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=12 +jointrknee=13 +jointrankle=14 + +[JointType] +jointlocal=balltranslate +jointshakey=ball +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +[frame8] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.257063 0.000000 0.000000 +jointlknee=-0.371272 0.000000 0.000000 +jointlankle=0.141490 0.000000 0.000000 +jointrthigh=-0.135466 0.000000 0.000000 +jointrknee=-0.010869 0.000000 0.000000 +jointrankle=0.131098 0.000000 0.000000 +[frame12] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.380822 0.000000 0.000000 +jointlknee=-0.462648 0.000000 0.000000 +jointlankle=0.125419 0.000000 0.000000 +jointrthigh=-0.218775 0.000000 0.000000 +jointrknee=-0.014805 0.000000 0.000000 +jointrankle=0.218170 0.000000 0.000000 +[frame25] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.629025 0.000000 0.000000 +jointlknee=-0.231209 0.000000 0.000000 +jointlankle=-0.013522 0.000000 0.000000 +jointrthigh=-0.459470 0.000000 0.000000 +jointrknee=-0.186817 0.000000 0.000000 +jointrankle=0.455412 0.000000 0.000000 +[frame55] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.629025 0.000000 0.000000 +jointlknee=-0.231209 0.000000 0.000000 +jointlankle=-0.013522 0.000000 0.000000 +jointrthigh=-0.436133 0.000000 0.000000 +jointrknee=-0.220021 0.000000 0.000000 +jointrankle=0.464659 0.000000 0.000000 + +[RootTranslation] +frame1=0.022679 -5.367080 0.000000 +frame8=0.022692 -5.367000 3.049658 +frame12=0.022705 -5.367000 3.248550 +frame25=0.022705 -5.367000 3.897208 +frame55=0.022705 -5.367000 3.892190 + +[KeyJointPos] +frame1=0.000000 0.000000 0.000000 +frame8=0.000000 -0.023465 0.000000 +frame12=0.000000 -0.093863 0.000000 +frame25=0.000000 -0.375690 0.000000 +frame55=0.000000 -0.375690 0.000000 diff --git a/CONTENT/BT3025/ANIMS/JAKSWR.ANI b/CONTENT/BT3025/ANIMS/JAKSWR.ANI new file mode 100644 index 0000000..cb5c327 --- /dev/null +++ b/CONTENT/BT3025/ANIMS/JAKSWR.ANI @@ -0,0 +1,87 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=jak.skl +jointcount=7 + +[Time] +frame1=0 +frame8=0.233333 +frame12=0.366667 +frame25=0.8 +frame55=1.8 + +[JointIndices] +jointlocal=0 +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=12 +jointrknee=13 +jointrankle=14 + +[JointType] +jointlocal=balltranslate +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +[frame8] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.135466 0.000000 0.000000 +jointlknee=-0.010869 0.000000 0.000000 +jointlankle=0.131098 0.000000 0.000000 +jointrthigh=0.257063 0.000000 0.000000 +jointrknee=-0.371272 0.000000 0.000000 +jointrankle=0.141490 0.000000 0.000000 +[frame12] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.218775 0.000000 0.000000 +jointlknee=-0.014805 0.000000 0.000000 +jointlankle=0.218170 0.000000 0.000000 +jointrthigh=0.380822 0.000000 0.000000 +jointrknee=-0.462648 0.000000 0.000000 +jointrankle=0.125419 0.000000 0.000000 +[frame25] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.459470 0.000000 0.000000 +jointlknee=-0.186817 0.000000 0.000000 +jointlankle=0.455412 0.000000 0.000000 +jointrthigh=0.629025 0.000000 0.000000 +jointrknee=-0.231209 0.000000 0.000000 +jointrankle=-0.013522 0.000000 0.000000 +[frame55] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.436133 0.000000 0.000000 +jointlknee=-0.220021 0.000000 0.000000 +jointlankle=0.464659 0.000000 0.000000 +jointrthigh=0.629025 0.000000 0.000000 +jointrknee=-0.231209 0.000000 0.000000 +jointrankle=-0.013522 0.000000 0.000000 + +[RootTranslation] +frame1=0.022679 -5.367080 0.000000 +frame8=0.022692 -5.367000 3.049658 +frame12=0.022705 -5.367000 3.248550 +frame25=0.022705 -5.367000 3.897208 +frame55=0.022705 -5.367000 3.892190 + +[KeyJointPos] +frame1=0.000000 0.000000 0.000000 +frame8=0.000000 -0.023465 0.000000 +frame12=0.000000 -0.093863 0.000000 +frame25=0.000000 -0.375690 0.000000 +frame55=0.000000 -0.375690 0.000000 diff --git a/CONTENT/BT3025/ANIMS/JAKSWRI.ANI b/CONTENT/BT3025/ANIMS/JAKSWRI.ANI new file mode 100644 index 0000000..27effe7 --- /dev/null +++ b/CONTENT/BT3025/ANIMS/JAKSWRI.ANI @@ -0,0 +1,94 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=jak.skl +jointcount=8 + +[Time] +frame1=0 +frame8=0.233333 +frame12=0.366667 +frame25=0.8 +frame55=1.8 + +[JointIndices] +jointlocal=0 +jointshakey=3 +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=12 +jointrknee=13 +jointrankle=14 + +[JointType] +jointlocal=balltranslate +jointshakey=ball +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +[frame8] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.135466 0.000000 0.000000 +jointlknee=-0.010869 0.000000 0.000000 +jointlankle=0.131098 0.000000 0.000000 +jointrthigh=0.257063 0.000000 0.000000 +jointrknee=-0.371272 0.000000 0.000000 +jointrankle=0.141490 0.000000 0.000000 +[frame12] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.218775 0.000000 0.000000 +jointlknee=-0.014805 0.000000 0.000000 +jointlankle=0.218170 0.000000 0.000000 +jointrthigh=0.380822 0.000000 0.000000 +jointrknee=-0.462648 0.000000 0.000000 +jointrankle=0.125419 0.000000 0.000000 +[frame25] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.459470 0.000000 0.000000 +jointlknee=-0.186817 0.000000 0.000000 +jointlankle=0.455412 0.000000 0.000000 +jointrthigh=0.629025 0.000000 0.000000 +jointrknee=-0.231209 0.000000 0.000000 +jointrankle=-0.013522 0.000000 0.000000 +[frame55] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.436133 0.000000 0.000000 +jointlknee=-0.220021 0.000000 0.000000 +jointlankle=0.464659 0.000000 0.000000 +jointrthigh=0.629025 0.000000 0.000000 +jointrknee=-0.231209 0.000000 0.000000 +jointrankle=-0.013522 0.000000 0.000000 + +[RootTranslation] +frame1=0.022679 -5.367080 0.000000 +frame8=0.022692 -5.367000 3.049658 +frame12=0.022705 -5.367000 3.248550 +frame25=0.022705 -5.367000 3.897208 +frame55=0.022705 -5.367000 3.892190 + +[KeyJointPos] +frame1=0.000000 0.000000 0.000000 +frame8=0.000000 -0.023465 0.000000 +frame12=0.000000 -0.093863 0.000000 +frame25=0.000000 -0.375690 0.000000 +frame55=0.000000 -0.375690 0.000000 diff --git a/CONTENT/BT3025/ANIMS/JAKTRN.ANI b/CONTENT/BT3025/ANIMS/JAKTRN.ANI new file mode 100644 index 0000000..34eb1f2 --- /dev/null +++ b/CONTENT/BT3025/ANIMS/JAKTRN.ANI @@ -0,0 +1,87 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=jak.skl +jointcount=7 + +[Time] +frame1=0 +frame12=0.366667 +frame23=0.733333 +frame34=1.1 +frame45=1.46667 + +[JointIndices] +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=12 +jointrknee=13 +jointrankle=14 +jointlocal=0 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate + +[frame1] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame12] +jointlthigh=0.293659 0.000000 0.000000 +jointlknee=-0.760082 0.000000 0.000000 +jointlankle=0.454452 0.000000 0.000000 +jointrthigh=0.058707 0.000000 0.000000 +jointrknee=-0.159500 0.000000 0.000000 +jointrankle=0.101507 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.018326 +[frame23] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame34] +jointlthigh=0.044154 0.000000 0.000000 +jointlknee=-0.119840 0.000000 0.000000 +jointlankle=0.076623 0.000000 0.000000 +jointrthigh=0.307909 0.000000 0.000000 +jointrknee=-0.797483 0.000000 0.000000 +jointrankle=0.477670 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.018326 +[frame45] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame12=0.000000 -5.350000 0.000000 +frame23=0.000000 -5.350000 0.000000 +frame34=0.000000 -5.350000 0.000000 +frame45=0.000000 -5.350000 0.000000 + +[KeyJointPos] +frame1=0.000000 0.000000 0.000000 +frame12=0.113777 -0.001042 0.000000 +frame23=0.000000 0.000000 0.000000 +frame34=-0.113777 -0.001042 0.000000 +frame45=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT3025/ANIMS/JAKTRNI.ANI b/CONTENT/BT3025/ANIMS/JAKTRNI.ANI new file mode 100644 index 0000000..6cafdf4 --- /dev/null +++ b/CONTENT/BT3025/ANIMS/JAKTRNI.ANI @@ -0,0 +1,94 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=jak.skl +jointcount=8 + +[Time] +frame1=0 +frame12=0.366667 +frame23=0.733333 +frame34=1.1 +frame45=1.46667 + +[JointIndices] +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=12 +jointrknee=13 +jointrankle=14 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame12] +jointlthigh=0.285597 0.000000 0.000000 +jointlknee=-0.733401 0.000000 0.000000 +jointlankle=0.435383 0.000000 0.000000 +jointrthigh=0.000030 0.000000 0.000000 +jointrknee=-0.000382 0.000000 0.000000 +jointrankle=0.000807 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.009163 +jointshakey=0.000000 0.000000 -0.009163 +[frame23] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame34] +jointlthigh=0.061957 0.000000 0.000000 +jointlknee=-0.168362 0.000000 0.000000 +jointlankle=0.107585 0.000000 0.000000 +jointrthigh=0.300350 0.000000 0.000000 +jointrknee=-0.771961 0.000000 0.000000 +jointrankle=0.459248 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.009163 +jointshakey=0.000000 0.000000 0.009163 +[frame45] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame12=0.000000 -5.350000 0.000000 +frame23=0.000000 -5.350000 0.000000 +frame34=0.000000 -5.350000 0.000000 +frame45=0.000000 -5.350000 0.000000 + +[KeyJointPos] +frame1=0.000000 0.000000 0.000000 +frame12=0.000000 0.000000 0.000000 +frame23=0.000000 0.000000 0.000000 +frame34=0.000000 0.000000 0.000000 +frame45=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT3025/ANIMS/LOKBBLI.ANI b/CONTENT/BT3025/ANIMS/LOKBBLI.ANI new file mode 100644 index 0000000..394c8ed --- /dev/null +++ b/CONTENT/BT3025/ANIMS/LOKBBLI.ANI @@ -0,0 +1,82 @@ +[LAB_ONLY] + +[HEADER] +framecount=4 +framerate=30 +skeletonfile=lok.skl +jointcount=8 + +[Time] +frame1=0 +frame5=0.133333 +frame10=0.3 +frame14=0.433333 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=0.395614 0.000000 0.000000 +jointlknee=-0.220767 0.000000 0.000000 +jointlankle=0.133954 0.000000 0.000000 +jointrthigh=-0.489790 0.000000 0.000000 +jointrknee=-0.478915 0.000000 0.000000 +jointrankle=0.634445 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame5] +jointlthigh=0.296118 0.000000 0.000000 +jointlknee=-1.254241 0.000000 0.000000 +jointlankle=0.620185 0.000000 0.000000 +jointrthigh=-0.215133 0.000000 0.000000 +jointrknee=-0.377098 0.000000 0.000000 +jointrankle=0.587595 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.009163 +jointshakey=0.000000 0.000000 -0.009163 +[frame10] +jointlthigh=-0.098360 0.000000 0.000000 +jointlknee=-1.177303 0.000000 0.000000 +jointlankle=-0.232991 0.000000 0.000000 +jointrthigh=0.198357 0.000000 0.000000 +jointrknee=-0.335459 0.000000 0.000000 +jointrankle=0.133389 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.011345 +jointshakey=0.000000 0.000000 -0.011345 +[frame14] +jointlthigh=-0.491890 0.000000 0.000000 +jointlknee=-0.472590 0.000000 0.000000 +jointlankle=0.630289 0.000000 0.000000 +jointrthigh=0.395614 0.000000 0.000000 +jointrknee=-0.220767 0.000000 0.000000 +jointrankle=0.133954 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame5=0.000000 -5.350000 -14.646974 +frame10=0.000000 -5.350000 -13.574518 +frame14=0.000000 -5.350000 -11.933628 + +[KeyJointPos] +frame1=0.000000 -0.273189 0.000000 +frame5=0.000000 -0.074506 0.000000 +frame10=0.000000 -0.149024 0.000000 +frame14=0.000000 -0.273276 0.000000 diff --git a/CONTENT/BT3025/ANIMS/LOKBBRI.ANI b/CONTENT/BT3025/ANIMS/LOKBBRI.ANI new file mode 100644 index 0000000..8bce006 --- /dev/null +++ b/CONTENT/BT3025/ANIMS/LOKBBRI.ANI @@ -0,0 +1,82 @@ +[LAB_ONLY] + +[HEADER] +framecount=4 +framerate=30 +skeletonfile=lok.skl +jointcount=8 + +[Time] +frame1=0 +frame5=0.133333 +frame10=0.3 +frame14=0.433333 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=-0.488771 0.000000 0.000000 +jointlknee=-0.480292 0.000000 0.000000 +jointlankle=0.634804 0.000000 0.000000 +jointrthigh=0.395614 0.000000 0.000000 +jointrknee=-0.220767 0.000000 0.000000 +jointrankle=0.133954 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame5] +jointlthigh=-0.232567 0.000000 0.000000 +jointlknee=-0.328183 0.000000 0.000000 +jointlankle=0.556160 0.000000 0.000000 +jointrthigh=0.296118 0.000000 0.000000 +jointrknee=-1.254241 0.000000 0.000000 +jointrankle=0.620185 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.009163 +jointshakey=0.000000 0.000000 0.009163 +[frame10] +jointlthigh=0.180383 0.000000 0.000000 +jointlknee=-0.288658 0.000000 0.000000 +jointlankle=0.110245 0.000000 0.000000 +jointrthigh=-0.097648 0.000000 0.000000 +jointrknee=-1.171596 0.000000 0.000000 +jointrankle=-0.239320 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.011345 +jointshakey=0.000000 0.000000 0.011345 +[frame14] +jointlthigh=0.395614 0.000000 0.000000 +jointlknee=-0.220767 0.000000 0.000000 +jointlankle=0.133954 0.000000 0.000000 +jointrthigh=-0.489790 0.000000 0.000000 +jointrknee=-0.478915 0.000000 0.000000 +jointrankle=0.634445 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame5=0.000000 -5.350000 -14.550003 +frame10=0.000000 -5.350000 -13.577997 +frame14=0.000000 -5.350000 -11.872130 + +[KeyJointPos] +frame1=0.000000 -0.273189 0.000000 +frame5=0.000000 -0.074506 0.000000 +frame10=0.000000 -0.149012 0.000000 +frame14=0.000000 -0.273189 0.000000 diff --git a/CONTENT/BT3025/ANIMS/LOKBMP.ANI b/CONTENT/BT3025/ANIMS/LOKBMP.ANI new file mode 100644 index 0000000..bd2c40b --- /dev/null +++ b/CONTENT/BT3025/ANIMS/LOKBMP.ANI @@ -0,0 +1,80 @@ +[LAB_ONLY] + +[HEADER] +framecount=3 +framerate=30 +skeletonfile=lok.skl +jointcount=10 + +[Time] +frame1=0 +frame8=0.233333 +frame15=0.466667 + +[JointIndices] +jointhip=1 +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointrshoulder=4 +jointlshoulder=6 +jointlocal=0 + +[JointType] +jointhip=hingex +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointrshoulder=hingex +jointlshoulder=hingex +jointlocal=balltranslate + +[frame1] +jointhip=-0.208689 0.000000 0.000000 +jointlthigh=0.668932 0.000000 0.000000 +jointlknee=-0.021625 0.000000 0.000000 +jointlankle=0.154636 0.000000 0.000000 +jointrthigh=-0.924082 0.000000 0.000000 +jointrknee=-0.950576 0.000000 0.000000 +jointrankle=-0.043616 0.000000 0.000000 +jointrshoulder=0.208689 0.000000 0.000000 +jointlshoulder=0.208689 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame8] +jointhip=0.349066 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointrshoulder=0.000000 0.000000 0.000000 +jointlshoulder=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame15] +jointhip=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointrshoulder=0.000000 0.000000 0.000000 +jointlshoulder=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame8=0.000000 -5.350000 0.000000 +frame15=0.000000 -5.350000 0.000000 + +[KeyJointPos] +frame1=0.000000 0.248415 0.000000 +frame8=0.000000 0.000000 0.000000 +frame15=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT3025/ANIMS/LOKBMPI.ANI b/CONTENT/BT3025/ANIMS/LOKBMPI.ANI new file mode 100644 index 0000000..bd2c40b --- /dev/null +++ b/CONTENT/BT3025/ANIMS/LOKBMPI.ANI @@ -0,0 +1,80 @@ +[LAB_ONLY] + +[HEADER] +framecount=3 +framerate=30 +skeletonfile=lok.skl +jointcount=10 + +[Time] +frame1=0 +frame8=0.233333 +frame15=0.466667 + +[JointIndices] +jointhip=1 +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointrshoulder=4 +jointlshoulder=6 +jointlocal=0 + +[JointType] +jointhip=hingex +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointrshoulder=hingex +jointlshoulder=hingex +jointlocal=balltranslate + +[frame1] +jointhip=-0.208689 0.000000 0.000000 +jointlthigh=0.668932 0.000000 0.000000 +jointlknee=-0.021625 0.000000 0.000000 +jointlankle=0.154636 0.000000 0.000000 +jointrthigh=-0.924082 0.000000 0.000000 +jointrknee=-0.950576 0.000000 0.000000 +jointrankle=-0.043616 0.000000 0.000000 +jointrshoulder=0.208689 0.000000 0.000000 +jointlshoulder=0.208689 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame8] +jointhip=0.349066 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointrshoulder=0.000000 0.000000 0.000000 +jointlshoulder=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame15] +jointhip=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointrshoulder=0.000000 0.000000 0.000000 +jointlshoulder=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame8=0.000000 -5.350000 0.000000 +frame15=0.000000 -5.350000 0.000000 + +[KeyJointPos] +frame1=0.000000 0.248415 0.000000 +frame8=0.000000 0.000000 0.000000 +frame15=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT3025/ANIMS/LOKBSLI.ANI b/CONTENT/BT3025/ANIMS/LOKBSLI.ANI new file mode 100644 index 0000000..dd61979 --- /dev/null +++ b/CONTENT/BT3025/ANIMS/LOKBSLI.ANI @@ -0,0 +1,82 @@ +[LAB_ONLY] + +[HEADER] +framecount=4 +framerate=30 +skeletonfile=lok.skl +jointcount=8 + +[Time] +frame1=0 +frame15=0.466667 +frame26=0.833333 +frame35=1.13333 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=0.412577 0.000000 0.000000 +jointlknee=-0.267172 0.000000 0.000000 +jointlankle=0.163489 0.000000 0.000000 +jointrthigh=-0.491544 0.000000 0.000000 +jointrknee=-0.473590 0.000000 0.000000 +jointrankle=0.630928 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame15] +jointlthigh=0.356075 0.000000 0.000000 +jointlknee=-0.458147 0.000000 0.000000 +jointlankle=0.299338 0.000000 0.000000 +jointrthigh=-0.318334 0.000000 0.000000 +jointrknee=-0.226909 0.000000 0.000000 +jointrankle=0.543921 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.009163 +jointshakey=0.000000 0.000000 -0.009163 +[frame26] +jointlthigh=0.163888 0.000000 0.000000 +jointlknee=-0.226755 0.000000 0.000000 +jointlankle=0.113602 0.000000 0.000000 +jointrthigh=-0.105608 0.000000 0.000000 +jointrknee=-0.163046 0.000000 0.000000 +jointrankle=0.270057 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.004573 +jointshakey=0.000000 0.000000 -0.004573 +[frame35] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame15=0.000000 -5.350000 -3.622714 +frame26=0.000000 -5.350000 -3.426955 +frame35=0.000000 -5.350000 -2.954667 + +[KeyJointPos] +frame1=0.000000 -0.273276 0.000000 +frame15=0.000000 -0.074506 0.000000 +frame26=0.000000 -0.030821 0.000000 +frame35=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT3025/ANIMS/LOKBSRI.ANI b/CONTENT/BT3025/ANIMS/LOKBSRI.ANI new file mode 100644 index 0000000..5465984 --- /dev/null +++ b/CONTENT/BT3025/ANIMS/LOKBSRI.ANI @@ -0,0 +1,82 @@ +[LAB_ONLY] + +[HEADER] +framecount=4 +framerate=30 +skeletonfile=lok.skl +jointcount=8 + +[Time] +frame1=0 +frame15=0.466667 +frame26=0.833333 +frame35=1.13333 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=-0.491890 0.000000 0.000000 +jointlknee=-0.472590 0.000000 0.000000 +jointlankle=0.630289 0.000000 0.000000 +jointrthigh=0.395614 0.000000 0.000000 +jointrknee=-0.220767 0.000000 0.000000 +jointrankle=0.133954 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame15] +jointlthigh=-0.291309 0.000000 0.000000 +jointlknee=-0.226886 0.000000 0.000000 +jointlankle=0.543906 0.000000 0.000000 +jointrthigh=0.356066 0.000000 0.000000 +jointrknee=-0.458126 0.000000 0.000000 +jointrankle=0.299324 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.009163 +jointshakey=0.000000 0.000000 0.009163 +[frame26] +jointlthigh=-0.123992 0.000000 0.000000 +jointlknee=-0.329948 0.000000 0.000000 +jointlankle=0.357515 0.000000 0.000000 +jointrthigh=0.163888 0.000000 0.000000 +jointrknee=-0.226755 0.000000 0.000000 +jointrankle=0.113602 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.004573 +jointshakey=0.000000 0.000000 0.004573 +[frame35] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame15=0.000000 -5.350000 -3.622714 +frame26=0.000000 -5.350000 -3.426955 +frame35=0.000000 -5.350000 -2.954667 + +[KeyJointPos] +frame1=0.000000 -0.273276 0.000000 +frame15=0.000000 -0.074506 0.000000 +frame26=0.000000 -0.030821 0.000000 +frame35=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT3025/ANIMS/LOKTRN.ANI b/CONTENT/BT3025/ANIMS/LOKTRN.ANI new file mode 100644 index 0000000..2d94abe --- /dev/null +++ b/CONTENT/BT3025/ANIMS/LOKTRN.ANI @@ -0,0 +1,87 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=lok.skl +jointcount=7 + +[Time] +frame1=0 +frame12=0.366667 +frame23=0.733333 +frame34=1.1 +frame45=1.46667 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate + +[frame1] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame12] +jointlthigh=0.293659 0.000000 0.000000 +jointlknee=-0.760082 0.000000 0.000000 +jointlankle=0.454452 0.000000 0.000000 +jointrthigh=0.058707 0.000000 0.000000 +jointrknee=-0.159500 0.000000 0.000000 +jointrankle=0.101507 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.018326 +[frame23] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame34] +jointlthigh=0.044154 0.000000 0.000000 +jointlknee=-0.119840 0.000000 0.000000 +jointlankle=0.076623 0.000000 0.000000 +jointrthigh=0.307909 0.000000 0.000000 +jointrknee=-0.797483 0.000000 0.000000 +jointrankle=0.477670 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.018326 +[frame45] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame12=0.000000 -5.350000 0.000000 +frame23=0.000000 -5.350000 0.000000 +frame34=0.000000 -5.350000 0.000000 +frame45=0.000000 -5.350000 0.000000 + +[KeyJointPos] +frame1=0.000000 0.000000 0.000000 +frame12=0.113777 -0.001042 0.000000 +frame23=0.000000 0.000000 0.000000 +frame34=-0.113777 -0.001042 0.000000 +frame45=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT3025/ANIMS/LOKTRNI.ANI b/CONTENT/BT3025/ANIMS/LOKTRNI.ANI new file mode 100644 index 0000000..c0dccbe --- /dev/null +++ b/CONTENT/BT3025/ANIMS/LOKTRNI.ANI @@ -0,0 +1,94 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=lok.skl +jointcount=8 + +[Time] +frame1=0 +frame12=0.366667 +frame23=0.733333 +frame34=1.1 +frame45=1.46667 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame12] +jointlthigh=0.285597 0.000000 0.000000 +jointlknee=-0.733401 0.000000 0.000000 +jointlankle=0.435383 0.000000 0.000000 +jointrthigh=0.000030 0.000000 0.000000 +jointrknee=-0.000382 0.000000 0.000000 +jointrankle=0.000807 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.009163 +jointshakey=0.000000 0.000000 -0.009163 +[frame23] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame34] +jointlthigh=0.061957 0.000000 0.000000 +jointlknee=-0.168362 0.000000 0.000000 +jointlankle=0.107585 0.000000 0.000000 +jointrthigh=0.300350 0.000000 0.000000 +jointrknee=-0.771961 0.000000 0.000000 +jointrankle=0.459248 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.009163 +jointshakey=0.000000 0.000000 0.009163 +[frame45] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame12=0.000000 -5.350000 0.000000 +frame23=0.000000 -5.350000 0.000000 +frame34=0.000000 -5.350000 0.000000 +frame45=0.000000 -5.350000 0.000000 + +[KeyJointPos] +frame1=0.000000 0.000000 0.000000 +frame12=0.000000 0.000000 0.000000 +frame23=0.000000 0.000000 0.000000 +frame34=0.000000 0.000000 0.000000 +frame45=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT3025/ANIMS/LOKWSLI.ANI b/CONTENT/BT3025/ANIMS/LOKWSLI.ANI new file mode 100644 index 0000000..8662bb8 --- /dev/null +++ b/CONTENT/BT3025/ANIMS/LOKWSLI.ANI @@ -0,0 +1,94 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=lok.skl +jointcount=8 + +[Time] +frame1=0 +frame7=0.2 +frame12=0.366667 +frame17=0.533333 +frame22=0.7 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=-0.488771 0.000000 0.000000 +jointlknee=-0.480292 0.000000 0.000000 +jointlankle=0.634804 0.000000 0.000000 +jointrthigh=0.395614 0.000000 0.000000 +jointrknee=-0.220767 0.000000 0.000000 +jointrankle=0.133954 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame7] +jointlthigh=-0.150568 0.000000 0.000000 +jointlknee=-1.044379 0.000000 0.000000 +jointlankle=0.668538 0.000000 0.000000 +jointrthigh=0.254865 0.000000 0.000000 +jointrknee=-0.120479 0.000000 0.000000 +jointrankle=-0.057184 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.006188 +jointshakey=0.000000 0.000000 -0.006188 +[frame12] +jointlthigh=-0.027415 0.000000 0.000000 +jointlknee=-0.976342 0.000000 0.000000 +jointlankle=0.616031 0.000000 0.000000 +jointrthigh=0.166625 0.000000 0.000000 +jointrknee=-0.162448 0.000000 0.000000 +jointrankle=-0.004668 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.011345 +jointshakey=0.000000 0.000000 -0.011345 +[frame17] +jointlthigh=0.057597 0.000000 0.000000 +jointlknee=-0.727137 0.000000 0.000000 +jointlankle=0.611028 0.000000 0.000000 +jointrthigh=0.105456 0.000000 0.000000 +jointrknee=-0.187485 0.000000 0.000000 +jointrankle=0.082065 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.005672 +jointshakey=0.000000 0.000000 -0.005672 +[frame22] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame7=0.000000 -5.350000 3.921542 +frame12=0.000000 -5.350000 3.921547 +frame17=0.000000 -5.350000 2.201397 +frame22=0.000000 -5.350000 1.080609 + +[KeyJointPos] +frame1=0.000000 -0.273189 0.000000 +frame7=0.000000 -0.205463 0.000000 +frame12=0.000000 -0.149024 0.000000 +frame17=0.000000 -0.074512 0.000000 +frame22=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT3025/ANIMS/LOKWSRI.ANI b/CONTENT/BT3025/ANIMS/LOKWSRI.ANI new file mode 100644 index 0000000..960c160 --- /dev/null +++ b/CONTENT/BT3025/ANIMS/LOKWSRI.ANI @@ -0,0 +1,94 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=lok.skl +jointcount=8 + +[Time] +frame1=0 +frame7=0.2 +frame12=0.366667 +frame17=0.533333 +frame22=0.7 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=0.395614 0.000000 0.000000 +jointlknee=-0.220767 0.000000 0.000000 +jointlankle=0.133954 0.000000 0.000000 +jointrthigh=-0.488771 0.000000 0.000000 +jointrknee=-0.480292 0.000000 0.000000 +jointrankle=0.634804 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame7] +jointlthigh=0.254865 0.000000 0.000000 +jointlknee=-0.120479 0.000000 0.000000 +jointlankle=-0.057184 0.000000 0.000000 +jointrthigh=-0.150568 0.000000 0.000000 +jointrknee=-1.044379 0.000000 0.000000 +jointrankle=0.668538 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.006188 +jointshakey=0.000000 0.000000 0.006188 +[frame12] +jointlthigh=0.187099 0.000000 0.000000 +jointlknee=-0.208450 0.000000 0.000000 +jointlankle=0.018567 0.000000 0.000000 +jointrthigh=-0.030099 0.000000 0.000000 +jointrknee=-0.967366 0.000000 0.000000 +jointrankle=0.609624 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.011345 +jointshakey=0.000000 0.000000 0.011345 +[frame17] +jointlthigh=0.109106 0.000000 0.000000 +jointlknee=-0.194308 0.000000 0.000000 +jointlankle=0.083546 0.000000 0.000000 +jointrthigh=0.057598 0.000000 0.000000 +jointrknee=-0.727141 0.000000 0.000000 +jointrankle=0.611031 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.005672 +jointshakey=0.000000 0.000000 0.005672 +[frame22] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame7=0.000000 -5.350000 3.921542 +frame12=0.000000 -5.350000 3.921547 +frame17=0.000000 -5.350000 2.201397 +frame22=0.000000 -5.350000 1.080609 + +[KeyJointPos] +frame1=0.000000 -0.273189 0.000000 +frame7=0.000000 -0.205463 0.000000 +frame12=0.000000 -0.149024 0.000000 +frame17=0.000000 -0.074512 0.000000 +frame22=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT3025/ANIMS/LOKWWL.ANI b/CONTENT/BT3025/ANIMS/LOKWWL.ANI new file mode 100644 index 0000000..df46191 --- /dev/null +++ b/CONTENT/BT3025/ANIMS/LOKWWL.ANI @@ -0,0 +1,76 @@ +[LAB_ONLY] + +[HEADER] +framecount=4 +framerate=30 +skeletonfile=lok.skl +jointcount=7 + +[Time] +frame1=0 +frame4=0.1 +frame9=0.266667 +frame13=0.4 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate + +[frame1] +jointlthigh=-0.491890 0.000000 0.000000 +jointlknee=-0.472590 0.000000 0.000000 +jointlankle=0.630289 0.000000 0.000000 +jointrthigh=0.395614 0.000000 0.000000 +jointrknee=-0.220767 0.000000 0.000000 +jointrankle=0.133954 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame4] +jointlthigh=-0.126581 0.000000 0.000000 +jointlknee=-1.117190 0.000000 0.000000 +jointlankle=-0.265688 0.000000 0.000000 +jointrthigh=0.176339 0.000000 0.000000 +jointrknee=-0.201414 0.000000 0.000000 +jointrankle=0.024431 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.017453 +[frame9] +jointlthigh=0.296118 0.000000 0.000000 +jointlknee=-1.254241 0.000000 0.000000 +jointlankle=0.620185 0.000000 0.000000 +jointrthigh=-0.243920 0.000000 0.000000 +jointrknee=-0.299546 0.000000 0.000000 +jointrankle=0.543405 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.013090 +[frame13] +jointlthigh=0.395614 0.000000 0.000000 +jointlknee=-0.220767 0.000000 0.000000 +jointlankle=0.133954 0.000000 0.000000 +jointrthigh=-0.488196 0.000000 0.000000 +jointrknee=-0.483620 0.000000 0.000000 +jointrankle=0.651607 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame4=0.000000 -5.350000 14.534702 +frame9=0.000000 -5.350000 14.400597 +frame13=0.000000 -5.350000 14.646976 + +[KeyJointPos] +frame1=0.000000 -0.273276 0.000000 +frame4=0.105758 -0.149948 0.000000 +frame9=0.080296 -0.075032 0.000000 +frame13=0.000000 -0.273189 0.000000 diff --git a/CONTENT/BT3025/ANIMS/LOKWWLI.ANI b/CONTENT/BT3025/ANIMS/LOKWWLI.ANI new file mode 100644 index 0000000..651cc81 --- /dev/null +++ b/CONTENT/BT3025/ANIMS/LOKWWLI.ANI @@ -0,0 +1,82 @@ +[LAB_ONLY] + +[HEADER] +framecount=4 +framerate=30 +skeletonfile=lok.skl +jointcount=8 + +[Time] +frame1=0 +frame4=0.1 +frame9=0.266667 +frame13=0.4 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=-0.491890 0.000000 0.000000 +jointlknee=-0.472590 0.000000 0.000000 +jointlankle=0.630289 0.000000 0.000000 +jointrthigh=0.395614 0.000000 0.000000 +jointrknee=-0.220767 0.000000 0.000000 +jointrankle=0.133954 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame4] +jointlthigh=-0.133885 0.000000 0.000000 +jointlknee=-1.101011 0.000000 0.000000 +jointlankle=-0.274800 0.000000 0.000000 +jointrthigh=0.165597 0.000000 0.000000 +jointrknee=-0.179633 0.000000 0.000000 +jointrankle=0.014138 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.011345 +jointshakey=0.000000 0.000000 -0.011345 +[frame9] +jointlthigh=0.296118 0.000000 0.000000 +jointlknee=-1.254241 0.000000 0.000000 +jointlankle=0.620185 0.000000 0.000000 +jointrthigh=-0.254172 0.000000 0.000000 +jointrknee=-0.270229 0.000000 0.000000 +jointrankle=0.523918 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.009163 +jointshakey=0.000000 0.000000 -0.009163 +[frame13] +jointlthigh=0.395614 0.000000 0.000000 +jointlknee=-0.220767 0.000000 0.000000 +jointlankle=0.133954 0.000000 0.000000 +jointrthigh=-0.488196 0.000000 0.000000 +jointrknee=-0.483620 0.000000 0.000000 +jointrankle=0.651607 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame4=0.000000 -5.350000 14.534702 +frame9=0.000000 -5.350000 14.400597 +frame13=0.000000 -5.350000 14.646976 + +[KeyJointPos] +frame1=0.000000 -0.273276 0.000000 +frame4=0.000000 -0.149024 0.000000 +frame9=0.000000 -0.074506 0.000000 +frame13=0.000000 -0.273189 0.000000 diff --git a/CONTENT/BT3025/ANIMS/LOKWWR.ANI b/CONTENT/BT3025/ANIMS/LOKWWR.ANI new file mode 100644 index 0000000..f114d8c --- /dev/null +++ b/CONTENT/BT3025/ANIMS/LOKWWR.ANI @@ -0,0 +1,76 @@ +[LAB_ONLY] + +[HEADER] +framecount=4 +framerate=30 +skeletonfile=lok.skl +jointcount=7 + +[Time] +frame1=0 +frame4=0.1 +frame9=0.266667 +frame13=0.4 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate + +[frame1] +jointlthigh=0.395614 0.000000 0.000000 +jointlknee=-0.220767 0.000000 0.000000 +jointlankle=0.133954 0.000000 0.000000 +jointrthigh=-0.491890 0.000000 0.000000 +jointrknee=-0.472590 0.000000 0.000000 +jointrankle=0.630289 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame4] +jointlthigh=0.170555 0.000000 0.000000 +jointlknee=-0.186947 0.000000 0.000000 +jointlankle=0.016811 0.000000 0.000000 +jointrthigh=-0.133886 0.000000 0.000000 +jointrknee=-1.101006 0.000000 0.000000 +jointrankle=-0.274804 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.017453 +[frame9] +jointlthigh=-0.245446 0.000000 0.000000 +jointlknee=-0.293273 0.000000 0.000000 +jointlankle=0.539197 0.000000 0.000000 +jointrthigh=0.296118 0.000000 0.000000 +jointrknee=-1.254241 0.000000 0.000000 +jointrankle=0.620185 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.013090 +[frame13] +jointlthigh=-0.488196 0.000000 0.000000 +jointlknee=-0.483620 0.000000 0.000000 +jointlankle=0.651607 0.000000 0.000000 +jointrthigh=0.395614 0.000000 0.000000 +jointrknee=-0.220767 0.000000 0.000000 +jointrankle=0.133954 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame4=0.000000 -5.350000 14.534702 +frame9=0.000000 -5.350000 14.400597 +frame13=0.000000 -5.350000 14.646976 + +[KeyJointPos] +frame1=0.000000 -0.273276 0.000000 +frame4=-0.105758 -0.149948 0.000000 +frame9=-0.080296 -0.075032 0.000000 +frame13=0.000000 -0.273189 0.000000 diff --git a/CONTENT/BT3025/ANIMS/LOKWWRI.ANI b/CONTENT/BT3025/ANIMS/LOKWWRI.ANI new file mode 100644 index 0000000..fc4b09e --- /dev/null +++ b/CONTENT/BT3025/ANIMS/LOKWWRI.ANI @@ -0,0 +1,82 @@ +[LAB_ONLY] + +[HEADER] +framecount=4 +framerate=30 +skeletonfile=lok.skl +jointcount=8 + +[Time] +frame1=0 +frame4=0.1 +frame9=0.266667 +frame13=0.4 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=0.395614 0.000000 0.000000 +jointlknee=-0.220767 0.000000 0.000000 +jointlankle=0.133954 0.000000 0.000000 +jointrthigh=-0.491890 0.000000 0.000000 +jointrknee=-0.472590 0.000000 0.000000 +jointrankle=0.630289 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame4] +jointlthigh=0.147616 0.000000 0.000000 +jointlknee=-0.129438 0.000000 0.000000 +jointlankle=-0.015679 0.000000 0.000000 +jointrthigh=-0.141287 0.000000 0.000000 +jointrknee=-1.084371 0.000000 0.000000 +jointrankle=-0.284291 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.011345 +jointshakey=0.000000 0.000000 0.011345 +[frame9] +jointlthigh=-0.255354 0.000000 0.000000 +jointlknee=-0.265047 0.000000 0.000000 +jointlankle=0.520209 0.000000 0.000000 +jointrthigh=0.296118 0.000000 0.000000 +jointrknee=-1.254241 0.000000 0.000000 +jointrankle=0.620185 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.009163 +jointshakey=0.000000 0.000000 0.009163 +[frame13] +jointlthigh=-0.488196 0.000000 0.000000 +jointlknee=-0.483620 0.000000 0.000000 +jointlankle=0.651607 0.000000 0.000000 +jointrthigh=0.395614 0.000000 0.000000 +jointrknee=-0.220767 0.000000 0.000000 +jointrankle=0.133954 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame4=0.000000 -5.350000 14.534702 +frame9=0.000000 -5.350000 14.400597 +frame13=0.000000 -5.350000 14.646976 + +[KeyJointPos] +frame1=0.000000 -0.273276 0.000000 +frame4=0.000000 -0.149024 0.000000 +frame9=0.000000 -0.074506 0.000000 +frame13=0.000000 -0.273189 0.000000 diff --git a/CONTENT/BT3025/ANIMS/OWNBMP.ANI b/CONTENT/BT3025/ANIMS/OWNBMP.ANI new file mode 100644 index 0000000..1184a56 --- /dev/null +++ b/CONTENT/BT3025/ANIMS/OWNBMP.ANI @@ -0,0 +1,80 @@ +[LAB_ONLY] + +[HEADER] +framecount=3 +framerate=30 +skeletonfile=own.skl +jointcount=10 + +[Time] +frame1=0 +frame8=0.233333 +frame15=0.466667 + +[JointIndices] +jointlocal=0 +jointhip=1 +jointlknee=10 +jointlbacktoe=11 +jointlthigh=9 +jointrknee=14 +jointrbacktoe=15 +jointrthigh=13 +jointlfronttoe=12 +jointrfronttoe=16 + +[JointType] +jointlocal=balltranslate +jointhip=hingex +jointlknee=hingex +jointlbacktoe=hingex +jointlthigh=hingex +jointrknee=hingex +jointrbacktoe=hingex +jointrthigh=hingex +jointlfronttoe=hingex +jointrfronttoe=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointhip=0.000000 0.000000 0.000000 +jointlknee=0.321645 0.000000 0.000000 +jointlbacktoe=0.953948 0.000000 0.000000 +jointlthigh=-1.297094 0.000000 0.000000 +jointrknee=-0.027914 0.000000 0.000000 +jointrbacktoe=0.446546 0.000000 0.000000 +jointrthigh=0.895050 0.000000 0.000000 +jointlfronttoe=-1.340985 0.000000 0.000000 +jointrfronttoe=0.106965 0.000000 0.000000 +[frame8] +jointlocal=0.000000 0.000000 0.000000 +jointhip=0.436332 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlbacktoe=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrbacktoe=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointlfronttoe=0.000000 0.000000 0.000000 +jointrfronttoe=0.000000 0.000000 0.000000 +[frame15] +jointlocal=0.000000 0.000000 0.000000 +jointhip=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlbacktoe=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrbacktoe=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointlfronttoe=0.000000 0.000000 0.000000 +jointrfronttoe=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame8=0.000000 -5.358000 0.000000 +frame15=0.000000 -5.358000 0.000000 + +[KeyJointPos] +frame1=0.000000 0.343465 0.000000 +frame8=0.000000 0.000000 0.000000 +frame15=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT3025/ANIMS/OWNBMPI.ANI b/CONTENT/BT3025/ANIMS/OWNBMPI.ANI new file mode 100644 index 0000000..1184a56 --- /dev/null +++ b/CONTENT/BT3025/ANIMS/OWNBMPI.ANI @@ -0,0 +1,80 @@ +[LAB_ONLY] + +[HEADER] +framecount=3 +framerate=30 +skeletonfile=own.skl +jointcount=10 + +[Time] +frame1=0 +frame8=0.233333 +frame15=0.466667 + +[JointIndices] +jointlocal=0 +jointhip=1 +jointlknee=10 +jointlbacktoe=11 +jointlthigh=9 +jointrknee=14 +jointrbacktoe=15 +jointrthigh=13 +jointlfronttoe=12 +jointrfronttoe=16 + +[JointType] +jointlocal=balltranslate +jointhip=hingex +jointlknee=hingex +jointlbacktoe=hingex +jointlthigh=hingex +jointrknee=hingex +jointrbacktoe=hingex +jointrthigh=hingex +jointlfronttoe=hingex +jointrfronttoe=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointhip=0.000000 0.000000 0.000000 +jointlknee=0.321645 0.000000 0.000000 +jointlbacktoe=0.953948 0.000000 0.000000 +jointlthigh=-1.297094 0.000000 0.000000 +jointrknee=-0.027914 0.000000 0.000000 +jointrbacktoe=0.446546 0.000000 0.000000 +jointrthigh=0.895050 0.000000 0.000000 +jointlfronttoe=-1.340985 0.000000 0.000000 +jointrfronttoe=0.106965 0.000000 0.000000 +[frame8] +jointlocal=0.000000 0.000000 0.000000 +jointhip=0.436332 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlbacktoe=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrbacktoe=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointlfronttoe=0.000000 0.000000 0.000000 +jointrfronttoe=0.000000 0.000000 0.000000 +[frame15] +jointlocal=0.000000 0.000000 0.000000 +jointhip=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlbacktoe=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrbacktoe=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointlfronttoe=0.000000 0.000000 0.000000 +jointrfronttoe=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame8=0.000000 -5.358000 0.000000 +frame15=0.000000 -5.358000 0.000000 + +[KeyJointPos] +frame1=0.000000 0.343465 0.000000 +frame8=0.000000 0.000000 0.000000 +frame15=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT3025/ANIMS/OWNSQI.ANI b/CONTENT/BT3025/ANIMS/OWNSQI.ANI new file mode 100644 index 0000000..e69de29 diff --git a/CONTENT/BT3025/ANIMS/OWNSQT.ANI b/CONTENT/BT3025/ANIMS/OWNSQT.ANI new file mode 100644 index 0000000..e69de29 diff --git a/CONTENT/BT3025/ANIMS/RAPBMP.ANI b/CONTENT/BT3025/ANIMS/RAPBMP.ANI new file mode 100644 index 0000000..6291361 --- /dev/null +++ b/CONTENT/BT3025/ANIMS/RAPBMP.ANI @@ -0,0 +1,70 @@ +[LAB_ONLY] + +[HEADER] +framecount=3 +framerate=30 +skeletonfile=rap.skl +jointcount=8 + +[Time] +frame1=0 +frame8=0.233333 +frame15=0.466667 + +[JointIndices] +jointlocal=0 +jointhip=1 +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=11 +jointrknee=12 +jointrankle=13 + +[JointType] +jointlocal=balltranslate +jointhip=hingex +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointhip=0.000000 0.000000 0.000000 +jointlthigh=-0.418821 0.000000 0.000000 +jointlknee=-0.971260 0.000000 0.000000 +jointlankle=-1.320198 0.000000 0.000000 +jointrthigh=1.837011 0.000000 0.000000 +jointrknee=-0.964085 0.000000 0.000000 +jointrankle=-0.053803 0.000000 0.000000 +[frame8] +jointlocal=0.000000 0.000000 0.000000 +jointhip=0.436332 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +[frame15] +jointlocal=0.000000 0.000000 0.000000 +jointhip=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.362000 0.000000 +frame8=0.000000 -5.362000 0.000000 +frame15=0.000000 -5.362000 0.000000 + +[KeyJointPos] +frame1=0.000000 1.030758 0.000000 +frame8=0.000000 0.000000 0.000000 +frame15=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT3025/ANIMS/RAPBMPI.ANI b/CONTENT/BT3025/ANIMS/RAPBMPI.ANI new file mode 100644 index 0000000..3853136 --- /dev/null +++ b/CONTENT/BT3025/ANIMS/RAPBMPI.ANI @@ -0,0 +1,75 @@ +[LAB_ONLY] + +[HEADER] +framecount=3 +framerate=30 +skeletonfile=rap.skl +jointcount=9 + +[Time] +frame1=0 +frame8=0.233333 +frame15=0.466667 + +[JointIndices] +jointlocal=0 +jointhip=1 +jointshakey=3 +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=11 +jointrknee=12 +jointrankle=13 + +[JointType] +jointlocal=balltranslate +jointhip=hingex +jointshakey=ball +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointhip=0.000000 0.000000 0.000000 +jointlthigh=-0.418821 0.000000 0.000000 +jointlknee=-0.971260 0.000000 0.000000 +jointlankle=-1.320198 0.000000 0.000000 +jointrthigh=1.837011 0.000000 0.000000 +jointrknee=-0.964085 0.000000 0.000000 +jointrankle=-0.053803 0.000000 0.000000 +[frame8] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointhip=0.436332 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +[frame15] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointhip=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.362000 0.000000 +frame8=0.000000 -5.362000 0.000000 +frame15=0.000000 -5.362000 0.000000 + +[KeyJointPos] +frame1=0.000000 1.030758 0.000000 +frame8=0.000000 0.000000 0.000000 +frame15=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT3025/ANIMS/RAPRWL.ANI b/CONTENT/BT3025/ANIMS/RAPRWL.ANI new file mode 100644 index 0000000..8d6c9fc --- /dev/null +++ b/CONTENT/BT3025/ANIMS/RAPRWL.ANI @@ -0,0 +1,87 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=rap.skl +jointcount=7 + +[Time] +frame1=0 +frame4=0.1 +frame6=0.166667 +frame8=0.233333 +frame10=0.3 + +[JointIndices] +jointlocal=0 +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=11 +jointrknee=12 +jointrankle=13 + +[JointType] +jointlocal=balltranslate +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.564656 0.000000 0.000000 +jointlknee=-0.136135 0.000000 0.000000 +jointlankle=-1.505734 0.000000 0.000000 +jointrthigh=1.365237 0.000000 0.000000 +jointrknee=-0.985238 0.000000 0.000000 +jointrankle=-0.385981 0.000000 0.000000 +[frame4] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.729008 0.000000 0.000000 +jointlknee=0.456226 0.000000 0.000000 +jointlankle=-1.678071 0.000000 0.000000 +jointrthigh=0.266285 0.000000 0.000000 +jointrknee=0.105129 0.000000 0.000000 +jointrankle=-0.369980 0.000000 0.000000 +[frame6] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.234649 0.000000 0.000000 +jointlknee=0.669835 0.000000 0.000000 +jointlankle=-1.756080 0.000000 0.000000 +jointrthigh=-0.208799 0.000000 0.000000 +jointrknee=0.092874 0.000000 0.000000 +jointrankle=0.115218 0.000000 0.000000 +[frame8] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.480032 0.000000 0.000000 +jointlknee=0.309248 0.000000 0.000000 +jointlankle=-1.224270 0.000000 0.000000 +jointrthigh=-0.286527 0.000000 0.000000 +jointrknee=-0.382775 0.000000 0.000000 +jointrankle=0.667009 0.000000 0.000000 +[frame10] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=1.183946 0.000000 0.000000 +jointlknee=-0.503477 0.000000 0.000000 +jointlankle=-0.692461 0.000000 0.000000 +jointrthigh=-0.391907 0.000000 0.000000 +jointrknee=-0.664246 0.000000 0.000000 +jointrankle=0.416228 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.362000 0.000000 +frame4=0.000000 -5.362000 24.766006 +frame6=0.000000 -5.362000 26.323584 +frame8=0.000000 -5.362000 25.071032 +frame10=0.000000 -5.362000 25.070911 + +[KeyJointPos] +frame1=0.000000 0.286753 0.000000 +frame4=0.000000 -0.190715 0.000000 +frame6=0.000000 -0.302684 0.000000 +frame8=0.000000 -0.326807 0.000000 +frame10=0.000000 -0.350930 0.000000 diff --git a/CONTENT/BT3025/ANIMS/RAPRWLI.ANI b/CONTENT/BT3025/ANIMS/RAPRWLI.ANI new file mode 100644 index 0000000..63c391f --- /dev/null +++ b/CONTENT/BT3025/ANIMS/RAPRWLI.ANI @@ -0,0 +1,94 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=rap.skl +jointcount=8 + +[Time] +frame1=0 +frame4=0.1 +frame6=0.166667 +frame8=0.233333 +frame10=0.3 + +[JointIndices] +jointlocal=0 +jointshakey=3 +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=11 +jointrknee=12 +jointrankle=13 + +[JointType] +jointlocal=balltranslate +jointshakey=ball +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.564656 0.000000 0.000000 +jointlknee=-0.136135 0.000000 0.000000 +jointlankle=-1.505734 0.000000 0.000000 +jointrthigh=1.365237 0.000000 0.000000 +jointrknee=-0.985238 0.000000 0.000000 +jointrankle=-0.385981 0.000000 0.000000 +[frame4] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.729008 0.000000 0.000000 +jointlknee=0.456226 0.000000 0.000000 +jointlankle=-1.678071 0.000000 0.000000 +jointrthigh=0.266285 0.000000 0.000000 +jointrknee=0.105129 0.000000 0.000000 +jointrankle=-0.369980 0.000000 0.000000 +[frame6] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.234649 0.000000 0.000000 +jointlknee=0.669835 0.000000 0.000000 +jointlankle=-1.756080 0.000000 0.000000 +jointrthigh=-0.208799 0.000000 0.000000 +jointrknee=0.092874 0.000000 0.000000 +jointrankle=0.115218 0.000000 0.000000 +[frame8] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.480032 0.000000 0.000000 +jointlknee=0.309248 0.000000 0.000000 +jointlankle=-1.224270 0.000000 0.000000 +jointrthigh=-0.286527 0.000000 0.000000 +jointrknee=-0.382775 0.000000 0.000000 +jointrankle=0.667009 0.000000 0.000000 +[frame10] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=1.183946 0.000000 0.000000 +jointlknee=-0.503477 0.000000 0.000000 +jointlankle=-0.692461 0.000000 0.000000 +jointrthigh=-0.391907 0.000000 0.000000 +jointrknee=-0.664246 0.000000 0.000000 +jointrankle=0.416228 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.362000 0.000000 +frame4=0.000000 -5.362000 24.766006 +frame6=0.000000 -5.362000 26.323584 +frame8=0.000000 -5.362000 25.071032 +frame10=0.000000 -5.362000 25.070911 + +[KeyJointPos] +frame1=0.000000 0.286753 0.000000 +frame4=0.000000 -0.190715 0.000000 +frame6=0.000000 -0.302684 0.000000 +frame8=0.000000 -0.326807 0.000000 +frame10=0.000000 -0.350930 0.000000 diff --git a/CONTENT/BT3025/ANIMS/RAPRWR.ANI b/CONTENT/BT3025/ANIMS/RAPRWR.ANI new file mode 100644 index 0000000..6eee0d7 --- /dev/null +++ b/CONTENT/BT3025/ANIMS/RAPRWR.ANI @@ -0,0 +1,87 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=rap.skl +jointcount=7 + +[Time] +frame1=0 +frame4=0.1 +frame6=0.166667 +frame8=0.233333 +frame10=0.3 + +[JointIndices] +jointlocal=0 +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=11 +jointrknee=12 +jointrankle=13 + +[JointType] +jointlocal=balltranslate +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=1.365237 0.000000 0.000000 +jointlknee=-0.985238 0.000000 0.000000 +jointlankle=-0.385981 0.000000 0.000000 +jointrthigh=-0.564656 0.000000 0.000000 +jointrknee=-0.136135 0.000000 0.000000 +jointrankle=-1.505734 0.000000 0.000000 +[frame4] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=0.266285 0.000000 0.000000 +jointlknee=0.105129 0.000000 0.000000 +jointlankle=-0.369980 0.000000 0.000000 +jointrthigh=-0.729008 0.000000 0.000000 +jointrknee=0.456226 0.000000 0.000000 +jointrankle=-1.678071 0.000000 0.000000 +[frame6] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.208799 0.000000 0.000000 +jointlknee=0.092874 0.000000 0.000000 +jointlankle=0.115218 0.000000 0.000000 +jointrthigh=-0.234649 0.000000 0.000000 +jointrknee=0.669835 0.000000 0.000000 +jointrankle=-1.756080 0.000000 0.000000 +[frame8] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.286527 0.000000 0.000000 +jointlknee=-0.382775 0.000000 0.000000 +jointlankle=0.667009 0.000000 0.000000 +jointrthigh=0.480032 0.000000 0.000000 +jointrknee=0.309248 0.000000 0.000000 +jointrankle=-1.224270 0.000000 0.000000 +[frame10] +jointlocal=0.000000 0.000000 0.000000 +jointlthigh=-0.400953 0.000000 0.000000 +jointlknee=-0.647580 0.000000 0.000000 +jointlankle=0.394820 0.000000 0.000000 +jointrthigh=1.183946 0.000000 0.000000 +jointrknee=-0.503477 0.000000 0.000000 +jointrankle=-0.692461 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.362000 0.000000 +frame4=0.000000 -5.362000 24.766006 +frame6=0.000000 -5.362000 26.323584 +frame8=0.000000 -5.362000 25.071032 +frame10=0.000000 -5.362000 25.070911 + +[KeyJointPos] +frame1=0.000000 0.286753 0.000000 +frame4=0.000000 -0.190715 0.000000 +frame6=0.000000 -0.302684 0.000000 +frame8=0.000000 -0.326807 0.000000 +frame10=0.000000 -0.350930 0.000000 diff --git a/CONTENT/BT3025/ANIMS/RAPRWRI.ANI b/CONTENT/BT3025/ANIMS/RAPRWRI.ANI new file mode 100644 index 0000000..f457d3c --- /dev/null +++ b/CONTENT/BT3025/ANIMS/RAPRWRI.ANI @@ -0,0 +1,94 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=rap.skl +jointcount=8 + +[Time] +frame1=0 +frame4=0.1 +frame6=0.166667 +frame8=0.233333 +frame10=0.3 + +[JointIndices] +jointlocal=0 +jointshakey=3 +jointlthigh=8 +jointlknee=9 +jointlankle=10 +jointrthigh=11 +jointrknee=12 +jointrankle=13 + +[JointType] +jointlocal=balltranslate +jointshakey=ball +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex + +[frame1] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=1.365237 0.000000 0.000000 +jointlknee=-0.985238 0.000000 0.000000 +jointlankle=-0.385981 0.000000 0.000000 +jointrthigh=-0.564656 0.000000 0.000000 +jointrknee=-0.136135 0.000000 0.000000 +jointrankle=-1.505734 0.000000 0.000000 +[frame4] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=0.266285 0.000000 0.000000 +jointlknee=0.105129 0.000000 0.000000 +jointlankle=-0.369980 0.000000 0.000000 +jointrthigh=-0.729008 0.000000 0.000000 +jointrknee=0.456226 0.000000 0.000000 +jointrankle=-1.678071 0.000000 0.000000 +[frame6] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.208799 0.000000 0.000000 +jointlknee=0.092874 0.000000 0.000000 +jointlankle=0.115218 0.000000 0.000000 +jointrthigh=-0.234649 0.000000 0.000000 +jointrknee=0.669835 0.000000 0.000000 +jointrankle=-1.756080 0.000000 0.000000 +[frame8] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.286527 0.000000 0.000000 +jointlknee=-0.382775 0.000000 0.000000 +jointlankle=0.667009 0.000000 0.000000 +jointrthigh=0.480032 0.000000 0.000000 +jointrknee=0.309248 0.000000 0.000000 +jointrankle=-1.224270 0.000000 0.000000 +[frame10] +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +jointlthigh=-0.400953 0.000000 0.000000 +jointlknee=-0.647580 0.000000 0.000000 +jointlankle=0.394820 0.000000 0.000000 +jointrthigh=1.183946 0.000000 0.000000 +jointrknee=-0.503477 0.000000 0.000000 +jointrankle=-0.692461 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 -5.362000 0.000000 +frame4=0.000000 -5.362000 24.766006 +frame6=0.000000 -5.362000 26.323584 +frame8=0.000000 -5.362000 25.071032 +frame10=0.000000 -5.362000 25.070911 + +[KeyJointPos] +frame1=0.000000 0.286753 0.000000 +frame4=0.000000 -0.190715 0.000000 +frame6=0.000000 -0.302684 0.000000 +frame8=0.000000 -0.326807 0.000000 +frame10=0.000000 -0.350930 0.000000 diff --git a/CONTENT/BT3025/ANIMS/SNDBBLI.ANI b/CONTENT/BT3025/ANIMS/SNDBBLI.ANI new file mode 100644 index 0000000..36795e3 --- /dev/null +++ b/CONTENT/BT3025/ANIMS/SNDBBLI.ANI @@ -0,0 +1,82 @@ +[LAB_ONLY] + +[HEADER] +framecount=4 +framerate=30 +skeletonfile=snd.skl +jointcount=8 + +[Time] +frame1=0 +frame5=0.133333 +frame10=0.3 +frame14=0.433333 + +[JointIndices] +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=0.395614 0.000000 0.000000 +jointlknee=-0.220767 0.000000 0.000000 +jointlankle=0.133954 0.000000 0.000000 +jointrthigh=-0.489790 0.000000 0.000000 +jointrknee=-0.478915 0.000000 0.000000 +jointrankle=0.634445 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame5] +jointlthigh=0.296118 0.000000 0.000000 +jointlknee=-1.254241 0.000000 0.000000 +jointlankle=0.620185 0.000000 0.000000 +jointrthigh=-0.215133 0.000000 0.000000 +jointrknee=-0.377098 0.000000 0.000000 +jointrankle=0.587595 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.009163 +jointshakey=0.000000 0.000000 -0.009163 +[frame10] +jointlthigh=-0.098360 0.000000 0.000000 +jointlknee=-1.177303 0.000000 0.000000 +jointlankle=-0.232991 0.000000 0.000000 +jointrthigh=0.198357 0.000000 0.000000 +jointrknee=-0.335459 0.000000 0.000000 +jointrankle=0.133389 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.011345 +jointshakey=0.000000 0.000000 -0.011345 +[frame14] +jointlthigh=-0.491890 0.000000 0.000000 +jointlknee=-0.472590 0.000000 0.000000 +jointlankle=0.630289 0.000000 0.000000 +jointrthigh=0.395614 0.000000 0.000000 +jointrknee=-0.220767 0.000000 0.000000 +jointrankle=0.133954 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame5=0.000000 -5.350000 -14.646974 +frame10=0.000000 -5.350000 -13.574518 +frame14=0.000000 -5.350000 -11.933628 + +[KeyJointPos] +frame1=0.000000 -0.273189 0.000000 +frame5=0.000000 -0.074506 0.000000 +frame10=0.000000 -0.149024 0.000000 +frame14=0.000000 -0.273276 0.000000 diff --git a/CONTENT/BT3025/ANIMS/SNDBBRI.ANI b/CONTENT/BT3025/ANIMS/SNDBBRI.ANI new file mode 100644 index 0000000..5a15612 --- /dev/null +++ b/CONTENT/BT3025/ANIMS/SNDBBRI.ANI @@ -0,0 +1,82 @@ +[LAB_ONLY] + +[HEADER] +framecount=4 +framerate=30 +skeletonfile=snd.skl +jointcount=8 + +[Time] +frame1=0 +frame5=0.133333 +frame10=0.3 +frame14=0.433333 + +[JointIndices] +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=-0.488771 0.000000 0.000000 +jointlknee=-0.480292 0.000000 0.000000 +jointlankle=0.634804 0.000000 0.000000 +jointrthigh=0.395614 0.000000 0.000000 +jointrknee=-0.220767 0.000000 0.000000 +jointrankle=0.133954 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame5] +jointlthigh=-0.232567 0.000000 0.000000 +jointlknee=-0.328183 0.000000 0.000000 +jointlankle=0.556160 0.000000 0.000000 +jointrthigh=0.296118 0.000000 0.000000 +jointrknee=-1.254241 0.000000 0.000000 +jointrankle=0.620185 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.009163 +jointshakey=0.000000 0.000000 0.009163 +[frame10] +jointlthigh=0.180383 0.000000 0.000000 +jointlknee=-0.288658 0.000000 0.000000 +jointlankle=0.110245 0.000000 0.000000 +jointrthigh=-0.097648 0.000000 0.000000 +jointrknee=-1.171596 0.000000 0.000000 +jointrankle=-0.239320 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.011345 +jointshakey=0.000000 0.000000 0.011345 +[frame14] +jointlthigh=0.395614 0.000000 0.000000 +jointlknee=-0.220767 0.000000 0.000000 +jointlankle=0.133954 0.000000 0.000000 +jointrthigh=-0.489790 0.000000 0.000000 +jointrknee=-0.478915 0.000000 0.000000 +jointrankle=0.634445 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame5=0.000000 -5.350000 -14.550003 +frame10=0.000000 -5.350000 -13.577997 +frame14=0.000000 -5.350000 -11.872130 + +[KeyJointPos] +frame1=0.000000 -0.273189 0.000000 +frame5=0.000000 -0.074506 0.000000 +frame10=0.000000 -0.149012 0.000000 +frame14=0.000000 -0.273189 0.000000 diff --git a/CONTENT/BT3025/ANIMS/SNDBMP.ANI b/CONTENT/BT3025/ANIMS/SNDBMP.ANI new file mode 100644 index 0000000..4a6970e --- /dev/null +++ b/CONTENT/BT3025/ANIMS/SNDBMP.ANI @@ -0,0 +1,80 @@ +[LAB_ONLY] + +[HEADER] +framecount=3 +framerate=30 +skeletonfile=snd.skl +jointcount=10 + +[Time] +frame1=0 +frame8=0.233333 +frame15=0.466667 + +[JointIndices] +jointhip=1 +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 +jointrshoulder=4 +jointlshoulder=6 +jointlocal=0 + +[JointType] +jointhip=hingex +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointrshoulder=hingex +jointlshoulder=hingex +jointlocal=balltranslate + +[frame1] +jointhip=-0.208689 0.000000 0.000000 +jointlthigh=0.668932 0.000000 0.000000 +jointlknee=-0.021625 0.000000 0.000000 +jointlankle=0.154636 0.000000 0.000000 +jointrthigh=-0.924082 0.000000 0.000000 +jointrknee=-0.950576 0.000000 0.000000 +jointrankle=-0.043616 0.000000 0.000000 +jointrshoulder=0.208689 0.000000 0.000000 +jointlshoulder=0.208689 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame8] +jointhip=0.349066 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointrshoulder=0.000000 0.000000 0.000000 +jointlshoulder=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame15] +jointhip=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointrshoulder=0.000000 0.000000 0.000000 +jointlshoulder=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame8=0.000000 -5.350000 0.000000 +frame15=0.000000 -5.350000 0.000000 + +[KeyJointPos] +frame1=0.000000 0.248415 0.000000 +frame8=0.000000 0.000000 0.000000 +frame15=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT3025/ANIMS/SNDBMPI.ANI b/CONTENT/BT3025/ANIMS/SNDBMPI.ANI new file mode 100644 index 0000000..4a6970e --- /dev/null +++ b/CONTENT/BT3025/ANIMS/SNDBMPI.ANI @@ -0,0 +1,80 @@ +[LAB_ONLY] + +[HEADER] +framecount=3 +framerate=30 +skeletonfile=snd.skl +jointcount=10 + +[Time] +frame1=0 +frame8=0.233333 +frame15=0.466667 + +[JointIndices] +jointhip=1 +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 +jointrshoulder=4 +jointlshoulder=6 +jointlocal=0 + +[JointType] +jointhip=hingex +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointrshoulder=hingex +jointlshoulder=hingex +jointlocal=balltranslate + +[frame1] +jointhip=-0.208689 0.000000 0.000000 +jointlthigh=0.668932 0.000000 0.000000 +jointlknee=-0.021625 0.000000 0.000000 +jointlankle=0.154636 0.000000 0.000000 +jointrthigh=-0.924082 0.000000 0.000000 +jointrknee=-0.950576 0.000000 0.000000 +jointrankle=-0.043616 0.000000 0.000000 +jointrshoulder=0.208689 0.000000 0.000000 +jointlshoulder=0.208689 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame8] +jointhip=0.349066 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointrshoulder=0.000000 0.000000 0.000000 +jointlshoulder=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame15] +jointhip=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointrshoulder=0.000000 0.000000 0.000000 +jointlshoulder=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame8=0.000000 -5.350000 0.000000 +frame15=0.000000 -5.350000 0.000000 + +[KeyJointPos] +frame1=0.000000 0.248415 0.000000 +frame8=0.000000 0.000000 0.000000 +frame15=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT3025/ANIMS/SNDBSLI.ANI b/CONTENT/BT3025/ANIMS/SNDBSLI.ANI new file mode 100644 index 0000000..57977fe --- /dev/null +++ b/CONTENT/BT3025/ANIMS/SNDBSLI.ANI @@ -0,0 +1,82 @@ +[LAB_ONLY] + +[HEADER] +framecount=4 +framerate=30 +skeletonfile=snd.skl +jointcount=8 + +[Time] +frame1=0 +frame15=0.466667 +frame26=0.833333 +frame35=1.13333 + +[JointIndices] +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=0.412577 0.000000 0.000000 +jointlknee=-0.267172 0.000000 0.000000 +jointlankle=0.163489 0.000000 0.000000 +jointrthigh=-0.491544 0.000000 0.000000 +jointrknee=-0.473590 0.000000 0.000000 +jointrankle=0.630928 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame15] +jointlthigh=0.356075 0.000000 0.000000 +jointlknee=-0.458147 0.000000 0.000000 +jointlankle=0.299338 0.000000 0.000000 +jointrthigh=-0.318334 0.000000 0.000000 +jointrknee=-0.226909 0.000000 0.000000 +jointrankle=0.543921 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.009163 +jointshakey=0.000000 0.000000 -0.009163 +[frame26] +jointlthigh=0.163888 0.000000 0.000000 +jointlknee=-0.226755 0.000000 0.000000 +jointlankle=0.113602 0.000000 0.000000 +jointrthigh=-0.105608 0.000000 0.000000 +jointrknee=-0.163046 0.000000 0.000000 +jointrankle=0.270057 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.004573 +jointshakey=0.000000 0.000000 -0.004573 +[frame35] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame15=0.000000 -5.350000 -3.622714 +frame26=0.000000 -5.350000 -3.426955 +frame35=0.000000 -5.350000 -2.954667 + +[KeyJointPos] +frame1=0.000000 -0.273276 0.000000 +frame15=0.000000 -0.074506 0.000000 +frame26=0.000000 -0.030821 0.000000 +frame35=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT3025/ANIMS/SNDBSRI.ANI b/CONTENT/BT3025/ANIMS/SNDBSRI.ANI new file mode 100644 index 0000000..df8a738 --- /dev/null +++ b/CONTENT/BT3025/ANIMS/SNDBSRI.ANI @@ -0,0 +1,82 @@ +[LAB_ONLY] + +[HEADER] +framecount=4 +framerate=30 +skeletonfile=snd.skl +jointcount=8 + +[Time] +frame1=0 +frame15=0.466667 +frame26=0.833333 +frame35=1.13333 + +[JointIndices] +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=-0.491890 0.000000 0.000000 +jointlknee=-0.472590 0.000000 0.000000 +jointlankle=0.630289 0.000000 0.000000 +jointrthigh=0.395614 0.000000 0.000000 +jointrknee=-0.220767 0.000000 0.000000 +jointrankle=0.133954 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame15] +jointlthigh=-0.291309 0.000000 0.000000 +jointlknee=-0.226886 0.000000 0.000000 +jointlankle=0.543906 0.000000 0.000000 +jointrthigh=0.356066 0.000000 0.000000 +jointrknee=-0.458126 0.000000 0.000000 +jointrankle=0.299324 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.009163 +jointshakey=0.000000 0.000000 0.009163 +[frame26] +jointlthigh=-0.123992 0.000000 0.000000 +jointlknee=-0.329948 0.000000 0.000000 +jointlankle=0.357515 0.000000 0.000000 +jointrthigh=0.163888 0.000000 0.000000 +jointrknee=-0.226755 0.000000 0.000000 +jointrankle=0.113602 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.004573 +jointshakey=0.000000 0.000000 0.004573 +[frame35] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame15=0.000000 -5.350000 -3.622714 +frame26=0.000000 -5.350000 -3.426955 +frame35=0.000000 -5.350000 -2.954667 + +[KeyJointPos] +frame1=0.000000 -0.273276 0.000000 +frame15=0.000000 -0.074506 0.000000 +frame26=0.000000 -0.030821 0.000000 +frame35=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT3025/ANIMS/SNDTRN.ANI b/CONTENT/BT3025/ANIMS/SNDTRN.ANI new file mode 100644 index 0000000..69e6dba --- /dev/null +++ b/CONTENT/BT3025/ANIMS/SNDTRN.ANI @@ -0,0 +1,87 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=snd.skl +jointcount=7 + +[Time] +frame1=0 +frame12=0.366667 +frame23=0.733333 +frame34=1.1 +frame45=1.46667 + +[JointIndices] +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 +jointlocal=0 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate + +[frame1] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame12] +jointlthigh=0.293659 0.000000 0.000000 +jointlknee=-0.760082 0.000000 0.000000 +jointlankle=0.454452 0.000000 0.000000 +jointrthigh=0.058707 0.000000 0.000000 +jointrknee=-0.159500 0.000000 0.000000 +jointrankle=0.101507 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.018326 +[frame23] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame34] +jointlthigh=0.044154 0.000000 0.000000 +jointlknee=-0.119840 0.000000 0.000000 +jointlankle=0.076623 0.000000 0.000000 +jointrthigh=0.307909 0.000000 0.000000 +jointrknee=-0.797483 0.000000 0.000000 +jointrankle=0.477670 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.018326 +[frame45] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame12=0.000000 -5.350000 0.000000 +frame23=0.000000 -5.350000 0.000000 +frame34=0.000000 -5.350000 0.000000 +frame45=0.000000 -5.350000 0.000000 + +[KeyJointPos] +frame1=0.000000 0.000000 0.000000 +frame12=0.113777 -0.001042 0.000000 +frame23=0.000000 0.000000 0.000000 +frame34=-0.113777 -0.001042 0.000000 +frame45=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT3025/ANIMS/SNDTRNI.ANI b/CONTENT/BT3025/ANIMS/SNDTRNI.ANI new file mode 100644 index 0000000..21c052a --- /dev/null +++ b/CONTENT/BT3025/ANIMS/SNDTRNI.ANI @@ -0,0 +1,94 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=snd.skl +jointcount=8 + +[Time] +frame1=0 +frame12=0.366667 +frame23=0.733333 +frame34=1.1 +frame45=1.46667 + +[JointIndices] +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame12] +jointlthigh=0.285597 0.000000 0.000000 +jointlknee=-0.733401 0.000000 0.000000 +jointlankle=0.435383 0.000000 0.000000 +jointrthigh=0.000030 0.000000 0.000000 +jointrknee=-0.000382 0.000000 0.000000 +jointrankle=0.000807 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.009163 +jointshakey=0.000000 0.000000 -0.009163 +[frame23] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame34] +jointlthigh=0.061957 0.000000 0.000000 +jointlknee=-0.168362 0.000000 0.000000 +jointlankle=0.107585 0.000000 0.000000 +jointrthigh=0.300350 0.000000 0.000000 +jointrknee=-0.771961 0.000000 0.000000 +jointrankle=0.459248 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.009163 +jointshakey=0.000000 0.000000 0.009163 +[frame45] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame12=0.000000 -5.350000 0.000000 +frame23=0.000000 -5.350000 0.000000 +frame34=0.000000 -5.350000 0.000000 +frame45=0.000000 -5.350000 0.000000 + +[KeyJointPos] +frame1=0.000000 0.000000 0.000000 +frame12=0.000000 0.000000 0.000000 +frame23=0.000000 0.000000 0.000000 +frame34=0.000000 0.000000 0.000000 +frame45=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT3025/ANIMS/SNDWSLI.ANI b/CONTENT/BT3025/ANIMS/SNDWSLI.ANI new file mode 100644 index 0000000..5cdb047 --- /dev/null +++ b/CONTENT/BT3025/ANIMS/SNDWSLI.ANI @@ -0,0 +1,94 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=snd.skl +jointcount=8 + +[Time] +frame1=0 +frame7=0.2 +frame12=0.366667 +frame17=0.533333 +frame22=0.7 + +[JointIndices] +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=-0.488771 0.000000 0.000000 +jointlknee=-0.480292 0.000000 0.000000 +jointlankle=0.634804 0.000000 0.000000 +jointrthigh=0.395614 0.000000 0.000000 +jointrknee=-0.220767 0.000000 0.000000 +jointrankle=0.133954 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame7] +jointlthigh=-0.150568 0.000000 0.000000 +jointlknee=-1.044379 0.000000 0.000000 +jointlankle=0.668538 0.000000 0.000000 +jointrthigh=0.254865 0.000000 0.000000 +jointrknee=-0.120479 0.000000 0.000000 +jointrankle=-0.057184 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.006188 +jointshakey=0.000000 0.000000 -0.006188 +[frame12] +jointlthigh=-0.027415 0.000000 0.000000 +jointlknee=-0.976342 0.000000 0.000000 +jointlankle=0.616031 0.000000 0.000000 +jointrthigh=0.166625 0.000000 0.000000 +jointrknee=-0.162448 0.000000 0.000000 +jointrankle=-0.004668 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.011345 +jointshakey=0.000000 0.000000 -0.011345 +[frame17] +jointlthigh=0.057597 0.000000 0.000000 +jointlknee=-0.727137 0.000000 0.000000 +jointlankle=0.611028 0.000000 0.000000 +jointrthigh=0.105456 0.000000 0.000000 +jointrknee=-0.187485 0.000000 0.000000 +jointrankle=0.082065 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.005672 +jointshakey=0.000000 0.000000 -0.005672 +[frame22] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame7=0.000000 -5.350000 3.921542 +frame12=0.000000 -5.350000 3.921547 +frame17=0.000000 -5.350000 2.201397 +frame22=0.000000 -5.350000 1.080609 + +[KeyJointPos] +frame1=0.000000 -0.273189 0.000000 +frame7=0.000000 -0.205463 0.000000 +frame12=0.000000 -0.149024 0.000000 +frame17=0.000000 -0.074512 0.000000 +frame22=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT3025/ANIMS/SNDWSRI.ANI b/CONTENT/BT3025/ANIMS/SNDWSRI.ANI new file mode 100644 index 0000000..2767ecd --- /dev/null +++ b/CONTENT/BT3025/ANIMS/SNDWSRI.ANI @@ -0,0 +1,94 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=snd.skl +jointcount=8 + +[Time] +frame1=0 +frame7=0.2 +frame12=0.366667 +frame17=0.533333 +frame22=0.7 + +[JointIndices] +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=0.395614 0.000000 0.000000 +jointlknee=-0.220767 0.000000 0.000000 +jointlankle=0.133954 0.000000 0.000000 +jointrthigh=-0.488771 0.000000 0.000000 +jointrknee=-0.480292 0.000000 0.000000 +jointrankle=0.634804 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame7] +jointlthigh=0.254865 0.000000 0.000000 +jointlknee=-0.120479 0.000000 0.000000 +jointlankle=-0.057184 0.000000 0.000000 +jointrthigh=-0.150568 0.000000 0.000000 +jointrknee=-1.044379 0.000000 0.000000 +jointrankle=0.668538 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.006188 +jointshakey=0.000000 0.000000 0.006188 +[frame12] +jointlthigh=0.187099 0.000000 0.000000 +jointlknee=-0.208450 0.000000 0.000000 +jointlankle=0.018567 0.000000 0.000000 +jointrthigh=-0.030099 0.000000 0.000000 +jointrknee=-0.967366 0.000000 0.000000 +jointrankle=0.609624 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.011345 +jointshakey=0.000000 0.000000 0.011345 +[frame17] +jointlthigh=0.109106 0.000000 0.000000 +jointlknee=-0.194308 0.000000 0.000000 +jointlankle=0.083546 0.000000 0.000000 +jointrthigh=0.057598 0.000000 0.000000 +jointrknee=-0.727141 0.000000 0.000000 +jointrankle=0.611031 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.005672 +jointshakey=0.000000 0.000000 0.005672 +[frame22] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame7=0.000000 -5.350000 3.921542 +frame12=0.000000 -5.350000 3.921547 +frame17=0.000000 -5.350000 2.201397 +frame22=0.000000 -5.350000 1.080609 + +[KeyJointPos] +frame1=0.000000 -0.273189 0.000000 +frame7=0.000000 -0.205463 0.000000 +frame12=0.000000 -0.149024 0.000000 +frame17=0.000000 -0.074512 0.000000 +frame22=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT3025/ANIMS/SNDWWL.ANI b/CONTENT/BT3025/ANIMS/SNDWWL.ANI new file mode 100644 index 0000000..f3faa64 --- /dev/null +++ b/CONTENT/BT3025/ANIMS/SNDWWL.ANI @@ -0,0 +1,76 @@ +[LAB_ONLY] + +[HEADER] +framecount=4 +framerate=30 +skeletonfile=snd.skl +jointcount=7 + +[Time] +frame1=0 +frame4=0.1 +frame9=0.266667 +frame13=0.4 + +[JointIndices] +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 +jointlocal=0 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate + +[frame1] +jointlthigh=-0.491890 0.000000 0.000000 +jointlknee=-0.472590 0.000000 0.000000 +jointlankle=0.630289 0.000000 0.000000 +jointrthigh=0.395614 0.000000 0.000000 +jointrknee=-0.220767 0.000000 0.000000 +jointrankle=0.133954 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame4] +jointlthigh=-0.126581 0.000000 0.000000 +jointlknee=-1.117190 0.000000 0.000000 +jointlankle=-0.265688 0.000000 0.000000 +jointrthigh=0.176339 0.000000 0.000000 +jointrknee=-0.201414 0.000000 0.000000 +jointrankle=0.024431 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.017453 +[frame9] +jointlthigh=0.296118 0.000000 0.000000 +jointlknee=-1.254241 0.000000 0.000000 +jointlankle=0.620185 0.000000 0.000000 +jointrthigh=-0.243920 0.000000 0.000000 +jointrknee=-0.299546 0.000000 0.000000 +jointrankle=0.543405 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.013090 +[frame13] +jointlthigh=0.395614 0.000000 0.000000 +jointlknee=-0.220767 0.000000 0.000000 +jointlankle=0.133954 0.000000 0.000000 +jointrthigh=-0.488196 0.000000 0.000000 +jointrknee=-0.483620 0.000000 0.000000 +jointrankle=0.651607 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame4=0.000000 -5.350000 14.534702 +frame9=0.000000 -5.350000 14.400597 +frame13=0.000000 -5.350000 14.646976 + +[KeyJointPos] +frame1=0.000000 -0.273276 0.000000 +frame4=0.105758 -0.149948 0.000000 +frame9=0.080296 -0.075032 0.000000 +frame13=0.000000 -0.273189 0.000000 diff --git a/CONTENT/BT3025/ANIMS/SNDWWLI.ANI b/CONTENT/BT3025/ANIMS/SNDWWLI.ANI new file mode 100644 index 0000000..fffb58a --- /dev/null +++ b/CONTENT/BT3025/ANIMS/SNDWWLI.ANI @@ -0,0 +1,82 @@ +[LAB_ONLY] + +[HEADER] +framecount=4 +framerate=30 +skeletonfile=snd.skl +jointcount=8 + +[Time] +frame1=0 +frame4=0.1 +frame9=0.266667 +frame13=0.4 + +[JointIndices] +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=-0.491890 0.000000 0.000000 +jointlknee=-0.472590 0.000000 0.000000 +jointlankle=0.630289 0.000000 0.000000 +jointrthigh=0.395614 0.000000 0.000000 +jointrknee=-0.220767 0.000000 0.000000 +jointrankle=0.133954 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame4] +jointlthigh=-0.133885 0.000000 0.000000 +jointlknee=-1.101011 0.000000 0.000000 +jointlankle=-0.274800 0.000000 0.000000 +jointrthigh=0.165597 0.000000 0.000000 +jointrknee=-0.179633 0.000000 0.000000 +jointrankle=0.014138 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.011345 +jointshakey=0.000000 0.000000 -0.011345 +[frame9] +jointlthigh=0.296118 0.000000 0.000000 +jointlknee=-1.254241 0.000000 0.000000 +jointlankle=0.620185 0.000000 0.000000 +jointrthigh=-0.254172 0.000000 0.000000 +jointrknee=-0.270229 0.000000 0.000000 +jointrankle=0.523918 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.009163 +jointshakey=0.000000 0.000000 -0.009163 +[frame13] +jointlthigh=0.395614 0.000000 0.000000 +jointlknee=-0.220767 0.000000 0.000000 +jointlankle=0.133954 0.000000 0.000000 +jointrthigh=-0.488196 0.000000 0.000000 +jointrknee=-0.483620 0.000000 0.000000 +jointrankle=0.651607 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame4=0.000000 -5.350000 14.534702 +frame9=0.000000 -5.350000 14.400597 +frame13=0.000000 -5.350000 14.646976 + +[KeyJointPos] +frame1=0.000000 -0.273276 0.000000 +frame4=0.000000 -0.149024 0.000000 +frame9=0.000000 -0.074506 0.000000 +frame13=0.000000 -0.273189 0.000000 diff --git a/CONTENT/BT3025/ANIMS/SNDWWR.ANI b/CONTENT/BT3025/ANIMS/SNDWWR.ANI new file mode 100644 index 0000000..c3afd38 --- /dev/null +++ b/CONTENT/BT3025/ANIMS/SNDWWR.ANI @@ -0,0 +1,76 @@ +[LAB_ONLY] + +[HEADER] +framecount=4 +framerate=30 +skeletonfile=snd.skl +jointcount=7 + +[Time] +frame1=0 +frame4=0.1 +frame9=0.266667 +frame13=0.4 + +[JointIndices] +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 +jointlocal=0 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate + +[frame1] +jointlthigh=0.395614 0.000000 0.000000 +jointlknee=-0.220767 0.000000 0.000000 +jointlankle=0.133954 0.000000 0.000000 +jointrthigh=-0.491890 0.000000 0.000000 +jointrknee=-0.472590 0.000000 0.000000 +jointrankle=0.630289 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame4] +jointlthigh=0.170555 0.000000 0.000000 +jointlknee=-0.186947 0.000000 0.000000 +jointlankle=0.016811 0.000000 0.000000 +jointrthigh=-0.133886 0.000000 0.000000 +jointrknee=-1.101006 0.000000 0.000000 +jointrankle=-0.274804 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.017453 +[frame9] +jointlthigh=-0.245446 0.000000 0.000000 +jointlknee=-0.293273 0.000000 0.000000 +jointlankle=0.539197 0.000000 0.000000 +jointrthigh=0.296118 0.000000 0.000000 +jointrknee=-1.254241 0.000000 0.000000 +jointrankle=0.620185 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.013090 +[frame13] +jointlthigh=-0.488196 0.000000 0.000000 +jointlknee=-0.483620 0.000000 0.000000 +jointlankle=0.651607 0.000000 0.000000 +jointrthigh=0.395614 0.000000 0.000000 +jointrknee=-0.220767 0.000000 0.000000 +jointrankle=0.133954 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame4=0.000000 -5.350000 14.534702 +frame9=0.000000 -5.350000 14.400597 +frame13=0.000000 -5.350000 14.646976 + +[KeyJointPos] +frame1=0.000000 -0.273276 0.000000 +frame4=-0.105758 -0.149948 0.000000 +frame9=-0.080296 -0.075032 0.000000 +frame13=0.000000 -0.273189 0.000000 diff --git a/CONTENT/BT3025/ANIMS/SNDWWRI.ANI b/CONTENT/BT3025/ANIMS/SNDWWRI.ANI new file mode 100644 index 0000000..c888358 --- /dev/null +++ b/CONTENT/BT3025/ANIMS/SNDWWRI.ANI @@ -0,0 +1,82 @@ +[LAB_ONLY] + +[HEADER] +framecount=4 +framerate=30 +skeletonfile=snd.skl +jointcount=8 + +[Time] +frame1=0 +frame4=0.1 +frame9=0.266667 +frame13=0.4 + +[JointIndices] +jointlthigh=9 +jointlknee=10 +jointlankle=11 +jointrthigh=13 +jointrknee=14 +jointrankle=15 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=0.395614 0.000000 0.000000 +jointlknee=-0.220767 0.000000 0.000000 +jointlankle=0.133954 0.000000 0.000000 +jointrthigh=-0.491890 0.000000 0.000000 +jointrknee=-0.472590 0.000000 0.000000 +jointrankle=0.630289 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame4] +jointlthigh=0.147616 0.000000 0.000000 +jointlknee=-0.129438 0.000000 0.000000 +jointlankle=-0.015679 0.000000 0.000000 +jointrthigh=-0.141287 0.000000 0.000000 +jointrknee=-1.084371 0.000000 0.000000 +jointrankle=-0.284291 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.011345 +jointshakey=0.000000 0.000000 0.011345 +[frame9] +jointlthigh=-0.255354 0.000000 0.000000 +jointlknee=-0.265047 0.000000 0.000000 +jointlankle=0.520209 0.000000 0.000000 +jointrthigh=0.296118 0.000000 0.000000 +jointrknee=-1.254241 0.000000 0.000000 +jointrankle=0.620185 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.009163 +jointshakey=0.000000 0.000000 0.009163 +[frame13] +jointlthigh=-0.488196 0.000000 0.000000 +jointlknee=-0.483620 0.000000 0.000000 +jointlankle=0.651607 0.000000 0.000000 +jointrthigh=0.395614 0.000000 0.000000 +jointrknee=-0.220767 0.000000 0.000000 +jointrankle=0.133954 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame4=0.000000 -5.350000 14.534702 +frame9=0.000000 -5.350000 14.400597 +frame13=0.000000 -5.350000 14.646976 + +[KeyJointPos] +frame1=0.000000 -0.273276 0.000000 +frame4=0.000000 -0.149024 0.000000 +frame9=0.000000 -0.074506 0.000000 +frame13=0.000000 -0.273189 0.000000 diff --git a/CONTENT/BT3025/ANIMS/THR4JERR.ANI b/CONTENT/BT3025/ANIMS/THR4JERR.ANI new file mode 100644 index 0000000..e69de29 diff --git a/CONTENT/BT3025/ANIMS/THRBBLI.ANI b/CONTENT/BT3025/ANIMS/THRBBLI.ANI new file mode 100644 index 0000000..48762d0 --- /dev/null +++ b/CONTENT/BT3025/ANIMS/THRBBLI.ANI @@ -0,0 +1,82 @@ +[LAB_ONLY] + +[HEADER] +framecount=4 +framerate=30 +skeletonfile=thr.skl +jointcount=8 + +[Time] +frame1=0 +frame5=0.133333 +frame10=0.3 +frame14=0.433333 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=0.395614 0.000000 0.000000 +jointlknee=-0.220767 0.000000 0.000000 +jointlankle=0.133954 0.000000 0.000000 +jointrthigh=-0.489790 0.000000 0.000000 +jointrknee=-0.478915 0.000000 0.000000 +jointrankle=0.634445 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame5] +jointlthigh=0.296118 0.000000 0.000000 +jointlknee=-1.254241 0.000000 0.000000 +jointlankle=0.620185 0.000000 0.000000 +jointrthigh=-0.215133 0.000000 0.000000 +jointrknee=-0.377098 0.000000 0.000000 +jointrankle=0.587595 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.009163 +jointshakey=0.000000 0.000000 -0.009163 +[frame10] +jointlthigh=-0.098360 0.000000 0.000000 +jointlknee=-1.177303 0.000000 0.000000 +jointlankle=-0.232991 0.000000 0.000000 +jointrthigh=0.198357 0.000000 0.000000 +jointrknee=-0.335459 0.000000 0.000000 +jointrankle=0.133389 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.011345 +jointshakey=0.000000 0.000000 -0.011345 +[frame14] +jointlthigh=-0.491890 0.000000 0.000000 +jointlknee=-0.472590 0.000000 0.000000 +jointlankle=0.630289 0.000000 0.000000 +jointrthigh=0.395614 0.000000 0.000000 +jointrknee=-0.220767 0.000000 0.000000 +jointrankle=0.133954 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame5=0.000000 -5.350000 -14.646974 +frame10=0.000000 -5.350000 -13.574518 +frame14=0.000000 -5.350000 -11.933628 + +[KeyJointPos] +frame1=0.000000 -0.273189 0.000000 +frame5=0.000000 -0.074506 0.000000 +frame10=0.000000 -0.149024 0.000000 +frame14=0.000000 -0.273276 0.000000 diff --git a/CONTENT/BT3025/ANIMS/THRBBRI.ANI b/CONTENT/BT3025/ANIMS/THRBBRI.ANI new file mode 100644 index 0000000..d2b4843 --- /dev/null +++ b/CONTENT/BT3025/ANIMS/THRBBRI.ANI @@ -0,0 +1,82 @@ +[LAB_ONLY] + +[HEADER] +framecount=4 +framerate=30 +skeletonfile=thr.skl +jointcount=8 + +[Time] +frame1=0 +frame5=0.133333 +frame10=0.3 +frame14=0.433333 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=-0.488771 0.000000 0.000000 +jointlknee=-0.480292 0.000000 0.000000 +jointlankle=0.634804 0.000000 0.000000 +jointrthigh=0.395614 0.000000 0.000000 +jointrknee=-0.220767 0.000000 0.000000 +jointrankle=0.133954 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame5] +jointlthigh=-0.232567 0.000000 0.000000 +jointlknee=-0.328183 0.000000 0.000000 +jointlankle=0.556160 0.000000 0.000000 +jointrthigh=0.296118 0.000000 0.000000 +jointrknee=-1.254241 0.000000 0.000000 +jointrankle=0.620185 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.009163 +jointshakey=0.000000 0.000000 0.009163 +[frame10] +jointlthigh=0.180383 0.000000 0.000000 +jointlknee=-0.288658 0.000000 0.000000 +jointlankle=0.110245 0.000000 0.000000 +jointrthigh=-0.097648 0.000000 0.000000 +jointrknee=-1.171596 0.000000 0.000000 +jointrankle=-0.239320 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.011345 +jointshakey=0.000000 0.000000 0.011345 +[frame14] +jointlthigh=0.395614 0.000000 0.000000 +jointlknee=-0.220767 0.000000 0.000000 +jointlankle=0.133954 0.000000 0.000000 +jointrthigh=-0.489790 0.000000 0.000000 +jointrknee=-0.478915 0.000000 0.000000 +jointrankle=0.634445 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame5=0.000000 -5.350000 -14.550003 +frame10=0.000000 -5.350000 -13.577997 +frame14=0.000000 -5.350000 -11.872130 + +[KeyJointPos] +frame1=0.000000 -0.273189 0.000000 +frame5=0.000000 -0.074506 0.000000 +frame10=0.000000 -0.149012 0.000000 +frame14=0.000000 -0.273189 0.000000 diff --git a/CONTENT/BT3025/ANIMS/THRBMP.ANI b/CONTENT/BT3025/ANIMS/THRBMP.ANI new file mode 100644 index 0000000..60e93c6 --- /dev/null +++ b/CONTENT/BT3025/ANIMS/THRBMP.ANI @@ -0,0 +1,80 @@ +[LAB_ONLY] + +[HEADER] +framecount=3 +framerate=30 +skeletonfile=thr.skl +jointcount=10 + +[Time] +frame1=0 +frame8=0.233333 +frame15=0.466667 + +[JointIndices] +jointhip=1 +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointrshoulder=4 +jointlshoulder=6 +jointlocal=0 + +[JointType] +jointhip=hingex +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointrshoulder=hingex +jointlshoulder=hingex +jointlocal=balltranslate + +[frame1] +jointhip=-0.208689 0.000000 0.000000 +jointlthigh=0.668932 0.000000 0.000000 +jointlknee=-0.021625 0.000000 0.000000 +jointlankle=0.154636 0.000000 0.000000 +jointrthigh=-0.924082 0.000000 0.000000 +jointrknee=-0.950576 0.000000 0.000000 +jointrankle=-0.043616 0.000000 0.000000 +jointrshoulder=0.208689 0.000000 0.000000 +jointlshoulder=0.208689 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame8] +jointhip=0.349066 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointrshoulder=0.000000 0.000000 0.000000 +jointlshoulder=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame15] +jointhip=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointrshoulder=0.000000 0.000000 0.000000 +jointlshoulder=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame8=0.000000 -5.350000 0.000000 +frame15=0.000000 -5.350000 0.000000 + +[KeyJointPos] +frame1=0.000000 0.248415 0.000000 +frame8=0.000000 0.000000 0.000000 +frame15=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT3025/ANIMS/THRBMPI.ANI b/CONTENT/BT3025/ANIMS/THRBMPI.ANI new file mode 100644 index 0000000..60e93c6 --- /dev/null +++ b/CONTENT/BT3025/ANIMS/THRBMPI.ANI @@ -0,0 +1,80 @@ +[LAB_ONLY] + +[HEADER] +framecount=3 +framerate=30 +skeletonfile=thr.skl +jointcount=10 + +[Time] +frame1=0 +frame8=0.233333 +frame15=0.466667 + +[JointIndices] +jointhip=1 +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointrshoulder=4 +jointlshoulder=6 +jointlocal=0 + +[JointType] +jointhip=hingex +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointrshoulder=hingex +jointlshoulder=hingex +jointlocal=balltranslate + +[frame1] +jointhip=-0.208689 0.000000 0.000000 +jointlthigh=0.668932 0.000000 0.000000 +jointlknee=-0.021625 0.000000 0.000000 +jointlankle=0.154636 0.000000 0.000000 +jointrthigh=-0.924082 0.000000 0.000000 +jointrknee=-0.950576 0.000000 0.000000 +jointrankle=-0.043616 0.000000 0.000000 +jointrshoulder=0.208689 0.000000 0.000000 +jointlshoulder=0.208689 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame8] +jointhip=0.349066 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointrshoulder=0.000000 0.000000 0.000000 +jointlshoulder=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame15] +jointhip=0.000000 0.000000 0.000000 +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointrshoulder=0.000000 0.000000 0.000000 +jointlshoulder=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame8=0.000000 -5.350000 0.000000 +frame15=0.000000 -5.350000 0.000000 + +[KeyJointPos] +frame1=0.000000 0.248415 0.000000 +frame8=0.000000 0.000000 0.000000 +frame15=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT3025/ANIMS/THRBSLI.ANI b/CONTENT/BT3025/ANIMS/THRBSLI.ANI new file mode 100644 index 0000000..9a5affc --- /dev/null +++ b/CONTENT/BT3025/ANIMS/THRBSLI.ANI @@ -0,0 +1,82 @@ +[LAB_ONLY] + +[HEADER] +framecount=4 +framerate=30 +skeletonfile=thr.skl +jointcount=8 + +[Time] +frame1=0 +frame15=0.466667 +frame26=0.833333 +frame35=1.13333 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=0.412577 0.000000 0.000000 +jointlknee=-0.267172 0.000000 0.000000 +jointlankle=0.163489 0.000000 0.000000 +jointrthigh=-0.491544 0.000000 0.000000 +jointrknee=-0.473590 0.000000 0.000000 +jointrankle=0.630928 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame15] +jointlthigh=0.356075 0.000000 0.000000 +jointlknee=-0.458147 0.000000 0.000000 +jointlankle=0.299338 0.000000 0.000000 +jointrthigh=-0.318334 0.000000 0.000000 +jointrknee=-0.226909 0.000000 0.000000 +jointrankle=0.543921 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.009163 +jointshakey=0.000000 0.000000 -0.009163 +[frame26] +jointlthigh=0.163888 0.000000 0.000000 +jointlknee=-0.226755 0.000000 0.000000 +jointlankle=0.113602 0.000000 0.000000 +jointrthigh=-0.105608 0.000000 0.000000 +jointrknee=-0.163046 0.000000 0.000000 +jointrankle=0.270057 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.004573 +jointshakey=0.000000 0.000000 -0.004573 +[frame35] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame15=0.000000 -5.350000 -3.622714 +frame26=0.000000 -5.350000 -3.426955 +frame35=0.000000 -5.350000 -2.954667 + +[KeyJointPos] +frame1=0.000000 -0.273276 0.000000 +frame15=0.000000 -0.074506 0.000000 +frame26=0.000000 -0.030821 0.000000 +frame35=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT3025/ANIMS/THRBSRI.ANI b/CONTENT/BT3025/ANIMS/THRBSRI.ANI new file mode 100644 index 0000000..06037f3 --- /dev/null +++ b/CONTENT/BT3025/ANIMS/THRBSRI.ANI @@ -0,0 +1,82 @@ +[LAB_ONLY] + +[HEADER] +framecount=4 +framerate=30 +skeletonfile=thr.skl +jointcount=8 + +[Time] +frame1=0 +frame15=0.466667 +frame26=0.833333 +frame35=1.13333 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=-0.491890 0.000000 0.000000 +jointlknee=-0.472590 0.000000 0.000000 +jointlankle=0.630289 0.000000 0.000000 +jointrthigh=0.395614 0.000000 0.000000 +jointrknee=-0.220767 0.000000 0.000000 +jointrankle=0.133954 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame15] +jointlthigh=-0.291309 0.000000 0.000000 +jointlknee=-0.226886 0.000000 0.000000 +jointlankle=0.543906 0.000000 0.000000 +jointrthigh=0.356066 0.000000 0.000000 +jointrknee=-0.458126 0.000000 0.000000 +jointrankle=0.299324 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.009163 +jointshakey=0.000000 0.000000 0.009163 +[frame26] +jointlthigh=-0.123992 0.000000 0.000000 +jointlknee=-0.329948 0.000000 0.000000 +jointlankle=0.357515 0.000000 0.000000 +jointrthigh=0.163888 0.000000 0.000000 +jointrknee=-0.226755 0.000000 0.000000 +jointrankle=0.113602 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.004573 +jointshakey=0.000000 0.000000 0.004573 +[frame35] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame15=0.000000 -5.350000 -3.622714 +frame26=0.000000 -5.350000 -3.426955 +frame35=0.000000 -5.350000 -2.954667 + +[KeyJointPos] +frame1=0.000000 -0.273276 0.000000 +frame15=0.000000 -0.074506 0.000000 +frame26=0.000000 -0.030821 0.000000 +frame35=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT3025/ANIMS/THRCLI.ANI b/CONTENT/BT3025/ANIMS/THRCLI.ANI new file mode 100644 index 0000000..e69de29 diff --git a/CONTENT/BT3025/ANIMS/THROPI.ANI b/CONTENT/BT3025/ANIMS/THROPI.ANI new file mode 100644 index 0000000..e69de29 diff --git a/CONTENT/BT3025/ANIMS/THRSQT.ANI b/CONTENT/BT3025/ANIMS/THRSQT.ANI new file mode 100644 index 0000000..e69de29 diff --git a/CONTENT/BT3025/ANIMS/THRTRI.ANI b/CONTENT/BT3025/ANIMS/THRTRI.ANI new file mode 100644 index 0000000..e69de29 diff --git a/CONTENT/BT3025/ANIMS/THRTRN.ANI b/CONTENT/BT3025/ANIMS/THRTRN.ANI new file mode 100644 index 0000000..39b7c99 --- /dev/null +++ b/CONTENT/BT3025/ANIMS/THRTRN.ANI @@ -0,0 +1,87 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=thr.skl +jointcount=7 + +[Time] +frame1=0 +frame12=0.366667 +frame23=0.733333 +frame34=1.1 +frame45=1.46667 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate + +[frame1] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame12] +jointlthigh=0.293659 0.000000 0.000000 +jointlknee=-0.760082 0.000000 0.000000 +jointlankle=0.454452 0.000000 0.000000 +jointrthigh=0.058707 0.000000 0.000000 +jointrknee=-0.159500 0.000000 0.000000 +jointrankle=0.101507 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.018326 +[frame23] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame34] +jointlthigh=0.044154 0.000000 0.000000 +jointlknee=-0.119840 0.000000 0.000000 +jointlankle=0.076623 0.000000 0.000000 +jointrthigh=0.307909 0.000000 0.000000 +jointrknee=-0.797483 0.000000 0.000000 +jointrankle=0.477670 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.018326 +[frame45] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame12=0.000000 -5.350000 0.000000 +frame23=0.000000 -5.350000 0.000000 +frame34=0.000000 -5.350000 0.000000 +frame45=0.000000 -5.350000 0.000000 + +[KeyJointPos] +frame1=0.000000 0.000000 0.000000 +frame12=0.113777 -0.001042 0.000000 +frame23=0.000000 0.000000 0.000000 +frame34=-0.113777 -0.001042 0.000000 +frame45=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT3025/ANIMS/THRTRNI.ANI b/CONTENT/BT3025/ANIMS/THRTRNI.ANI new file mode 100644 index 0000000..4960d11 --- /dev/null +++ b/CONTENT/BT3025/ANIMS/THRTRNI.ANI @@ -0,0 +1,94 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=thr.skl +jointcount=8 + +[Time] +frame1=0 +frame12=0.366667 +frame23=0.733333 +frame34=1.1 +frame45=1.46667 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame12] +jointlthigh=0.285597 0.000000 0.000000 +jointlknee=-0.733401 0.000000 0.000000 +jointlankle=0.435383 0.000000 0.000000 +jointrthigh=0.000030 0.000000 0.000000 +jointrknee=-0.000382 0.000000 0.000000 +jointrankle=0.000807 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.009163 +jointshakey=0.000000 0.000000 -0.009163 +[frame23] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame34] +jointlthigh=0.061957 0.000000 0.000000 +jointlknee=-0.168362 0.000000 0.000000 +jointlankle=0.107585 0.000000 0.000000 +jointrthigh=0.300350 0.000000 0.000000 +jointrknee=-0.771961 0.000000 0.000000 +jointrankle=0.459248 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.009163 +jointshakey=0.000000 0.000000 0.009163 +[frame45] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame12=0.000000 -5.350000 0.000000 +frame23=0.000000 -5.350000 0.000000 +frame34=0.000000 -5.350000 0.000000 +frame45=0.000000 -5.350000 0.000000 + +[KeyJointPos] +frame1=0.000000 0.000000 0.000000 +frame12=0.000000 0.000000 0.000000 +frame23=0.000000 0.000000 0.000000 +frame34=0.000000 0.000000 0.000000 +frame45=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT3025/ANIMS/THRTSI.ANI b/CONTENT/BT3025/ANIMS/THRTSI.ANI new file mode 100644 index 0000000..e69de29 diff --git a/CONTENT/BT3025/ANIMS/THRTST.ANI b/CONTENT/BT3025/ANIMS/THRTST.ANI new file mode 100644 index 0000000..e69de29 diff --git a/CONTENT/BT3025/ANIMS/THRWSLI.ANI b/CONTENT/BT3025/ANIMS/THRWSLI.ANI new file mode 100644 index 0000000..b4d32fc --- /dev/null +++ b/CONTENT/BT3025/ANIMS/THRWSLI.ANI @@ -0,0 +1,94 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=thr.skl +jointcount=8 + +[Time] +frame1=0 +frame7=0.2 +frame12=0.366667 +frame17=0.533333 +frame22=0.7 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=-0.488771 0.000000 0.000000 +jointlknee=-0.480292 0.000000 0.000000 +jointlankle=0.634804 0.000000 0.000000 +jointrthigh=0.395614 0.000000 0.000000 +jointrknee=-0.220767 0.000000 0.000000 +jointrankle=0.133954 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame7] +jointlthigh=-0.150568 0.000000 0.000000 +jointlknee=-1.044379 0.000000 0.000000 +jointlankle=0.668538 0.000000 0.000000 +jointrthigh=0.254865 0.000000 0.000000 +jointrknee=-0.120479 0.000000 0.000000 +jointrankle=-0.057184 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.006188 +jointshakey=0.000000 0.000000 -0.006188 +[frame12] +jointlthigh=-0.027415 0.000000 0.000000 +jointlknee=-0.976342 0.000000 0.000000 +jointlankle=0.616031 0.000000 0.000000 +jointrthigh=0.166625 0.000000 0.000000 +jointrknee=-0.162448 0.000000 0.000000 +jointrankle=-0.004668 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.011345 +jointshakey=0.000000 0.000000 -0.011345 +[frame17] +jointlthigh=0.057597 0.000000 0.000000 +jointlknee=-0.727137 0.000000 0.000000 +jointlankle=0.611028 0.000000 0.000000 +jointrthigh=0.105456 0.000000 0.000000 +jointrknee=-0.187485 0.000000 0.000000 +jointrankle=0.082065 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.005672 +jointshakey=0.000000 0.000000 -0.005672 +[frame22] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame7=0.000000 -5.350000 3.921542 +frame12=0.000000 -5.350000 3.921547 +frame17=0.000000 -5.350000 2.201397 +frame22=0.000000 -5.350000 1.080609 + +[KeyJointPos] +frame1=0.000000 -0.273189 0.000000 +frame7=0.000000 -0.205463 0.000000 +frame12=0.000000 -0.149024 0.000000 +frame17=0.000000 -0.074512 0.000000 +frame22=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT3025/ANIMS/THRWSRI.ANI b/CONTENT/BT3025/ANIMS/THRWSRI.ANI new file mode 100644 index 0000000..2840a46 --- /dev/null +++ b/CONTENT/BT3025/ANIMS/THRWSRI.ANI @@ -0,0 +1,94 @@ +[LAB_ONLY] + +[HEADER] +framecount=5 +framerate=30 +skeletonfile=thr.skl +jointcount=8 + +[Time] +frame1=0 +frame7=0.2 +frame12=0.366667 +frame17=0.533333 +frame22=0.7 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=0.395614 0.000000 0.000000 +jointlknee=-0.220767 0.000000 0.000000 +jointlankle=0.133954 0.000000 0.000000 +jointrthigh=-0.488771 0.000000 0.000000 +jointrknee=-0.480292 0.000000 0.000000 +jointrankle=0.634804 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame7] +jointlthigh=0.254865 0.000000 0.000000 +jointlknee=-0.120479 0.000000 0.000000 +jointlankle=-0.057184 0.000000 0.000000 +jointrthigh=-0.150568 0.000000 0.000000 +jointrknee=-1.044379 0.000000 0.000000 +jointrankle=0.668538 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.006188 +jointshakey=0.000000 0.000000 0.006188 +[frame12] +jointlthigh=0.187099 0.000000 0.000000 +jointlknee=-0.208450 0.000000 0.000000 +jointlankle=0.018567 0.000000 0.000000 +jointrthigh=-0.030099 0.000000 0.000000 +jointrknee=-0.967366 0.000000 0.000000 +jointrankle=0.609624 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.011345 +jointshakey=0.000000 0.000000 0.011345 +[frame17] +jointlthigh=0.109106 0.000000 0.000000 +jointlknee=-0.194308 0.000000 0.000000 +jointlankle=0.083546 0.000000 0.000000 +jointrthigh=0.057598 0.000000 0.000000 +jointrknee=-0.727141 0.000000 0.000000 +jointrankle=0.611031 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.005672 +jointshakey=0.000000 0.000000 0.005672 +[frame22] +jointlthigh=0.000000 0.000000 0.000000 +jointlknee=0.000000 0.000000 0.000000 +jointlankle=0.000000 0.000000 0.000000 +jointrthigh=0.000000 0.000000 0.000000 +jointrknee=0.000000 0.000000 0.000000 +jointrankle=0.000000 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame7=0.000000 -5.350000 3.921542 +frame12=0.000000 -5.350000 3.921547 +frame17=0.000000 -5.350000 2.201397 +frame22=0.000000 -5.350000 1.080609 + +[KeyJointPos] +frame1=0.000000 -0.273189 0.000000 +frame7=0.000000 -0.205463 0.000000 +frame12=0.000000 -0.149024 0.000000 +frame17=0.000000 -0.074512 0.000000 +frame22=0.000000 0.000000 0.000000 diff --git a/CONTENT/BT3025/ANIMS/THRWWL.ANI b/CONTENT/BT3025/ANIMS/THRWWL.ANI new file mode 100644 index 0000000..6dbbbfe --- /dev/null +++ b/CONTENT/BT3025/ANIMS/THRWWL.ANI @@ -0,0 +1,76 @@ +[LAB_ONLY] + +[HEADER] +framecount=4 +framerate=30 +skeletonfile=thr.skl +jointcount=7 + +[Time] +frame1=0 +frame4=0.1 +frame9=0.266667 +frame13=0.4 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate + +[frame1] +jointlthigh=-0.491890 0.000000 0.000000 +jointlknee=-0.472590 0.000000 0.000000 +jointlankle=0.630289 0.000000 0.000000 +jointrthigh=0.395614 0.000000 0.000000 +jointrknee=-0.220767 0.000000 0.000000 +jointrankle=0.133954 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame4] +jointlthigh=-0.126581 0.000000 0.000000 +jointlknee=-1.117190 0.000000 0.000000 +jointlankle=-0.265688 0.000000 0.000000 +jointrthigh=0.176339 0.000000 0.000000 +jointrknee=-0.201414 0.000000 0.000000 +jointrankle=0.024431 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.017453 +[frame9] +jointlthigh=0.296118 0.000000 0.000000 +jointlknee=-1.254241 0.000000 0.000000 +jointlankle=0.620185 0.000000 0.000000 +jointrthigh=-0.243920 0.000000 0.000000 +jointrknee=-0.299546 0.000000 0.000000 +jointrankle=0.543405 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.013090 +[frame13] +jointlthigh=0.395614 0.000000 0.000000 +jointlknee=-0.220767 0.000000 0.000000 +jointlankle=0.133954 0.000000 0.000000 +jointrthigh=-0.488196 0.000000 0.000000 +jointrknee=-0.483620 0.000000 0.000000 +jointrankle=0.651607 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame4=0.000000 -5.350000 14.534702 +frame9=0.000000 -5.350000 14.400597 +frame13=0.000000 -5.350000 14.646976 + +[KeyJointPos] +frame1=0.000000 -0.273276 0.000000 +frame4=0.105758 -0.149948 0.000000 +frame9=0.080296 -0.075032 0.000000 +frame13=0.000000 -0.273189 0.000000 diff --git a/CONTENT/BT3025/ANIMS/THRWWLI.ANI b/CONTENT/BT3025/ANIMS/THRWWLI.ANI new file mode 100644 index 0000000..daf6e79 --- /dev/null +++ b/CONTENT/BT3025/ANIMS/THRWWLI.ANI @@ -0,0 +1,82 @@ +[LAB_ONLY] + +[HEADER] +framecount=4 +framerate=30 +skeletonfile=thr.skl +jointcount=8 + +[Time] +frame1=0 +frame4=0.1 +frame9=0.266667 +frame13=0.4 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=-0.491890 0.000000 0.000000 +jointlknee=-0.472590 0.000000 0.000000 +jointlankle=0.630289 0.000000 0.000000 +jointrthigh=0.395614 0.000000 0.000000 +jointrknee=-0.220767 0.000000 0.000000 +jointrankle=0.133954 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame4] +jointlthigh=-0.133885 0.000000 0.000000 +jointlknee=-1.101011 0.000000 0.000000 +jointlankle=-0.274800 0.000000 0.000000 +jointrthigh=0.165597 0.000000 0.000000 +jointrknee=-0.179633 0.000000 0.000000 +jointrankle=0.014138 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.011345 +jointshakey=0.000000 0.000000 -0.011345 +[frame9] +jointlthigh=0.296118 0.000000 0.000000 +jointlknee=-1.254241 0.000000 0.000000 +jointlankle=0.620185 0.000000 0.000000 +jointrthigh=-0.254172 0.000000 0.000000 +jointrknee=-0.270229 0.000000 0.000000 +jointrankle=0.523918 0.000000 0.000000 +jointlocal=0.000000 0.000000 -0.009163 +jointshakey=0.000000 0.000000 -0.009163 +[frame13] +jointlthigh=0.395614 0.000000 0.000000 +jointlknee=-0.220767 0.000000 0.000000 +jointlankle=0.133954 0.000000 0.000000 +jointrthigh=-0.488196 0.000000 0.000000 +jointrknee=-0.483620 0.000000 0.000000 +jointrankle=0.651607 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame4=0.000000 -5.350000 14.534702 +frame9=0.000000 -5.350000 14.400597 +frame13=0.000000 -5.350000 14.646976 + +[KeyJointPos] +frame1=0.000000 -0.273276 0.000000 +frame4=0.000000 -0.149024 0.000000 +frame9=0.000000 -0.074506 0.000000 +frame13=0.000000 -0.273189 0.000000 diff --git a/CONTENT/BT3025/ANIMS/THRWWR.ANI b/CONTENT/BT3025/ANIMS/THRWWR.ANI new file mode 100644 index 0000000..8c3389f --- /dev/null +++ b/CONTENT/BT3025/ANIMS/THRWWR.ANI @@ -0,0 +1,76 @@ +[LAB_ONLY] + +[HEADER] +framecount=4 +framerate=30 +skeletonfile=thr.skl +jointcount=7 + +[Time] +frame1=0 +frame4=0.1 +frame9=0.266667 +frame13=0.4 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate + +[frame1] +jointlthigh=0.395614 0.000000 0.000000 +jointlknee=-0.220767 0.000000 0.000000 +jointlankle=0.133954 0.000000 0.000000 +jointrthigh=-0.491890 0.000000 0.000000 +jointrknee=-0.472590 0.000000 0.000000 +jointrankle=0.630289 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +[frame4] +jointlthigh=0.170555 0.000000 0.000000 +jointlknee=-0.186947 0.000000 0.000000 +jointlankle=0.016811 0.000000 0.000000 +jointrthigh=-0.133886 0.000000 0.000000 +jointrknee=-1.101006 0.000000 0.000000 +jointrankle=-0.274804 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.017453 +[frame9] +jointlthigh=-0.245446 0.000000 0.000000 +jointlknee=-0.293273 0.000000 0.000000 +jointlankle=0.539197 0.000000 0.000000 +jointrthigh=0.296118 0.000000 0.000000 +jointrknee=-1.254241 0.000000 0.000000 +jointrankle=0.620185 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.013090 +[frame13] +jointlthigh=-0.488196 0.000000 0.000000 +jointlknee=-0.483620 0.000000 0.000000 +jointlankle=0.651607 0.000000 0.000000 +jointrthigh=0.395614 0.000000 0.000000 +jointrknee=-0.220767 0.000000 0.000000 +jointrankle=0.133954 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame4=0.000000 -5.350000 14.534702 +frame9=0.000000 -5.350000 14.400597 +frame13=0.000000 -5.350000 14.646976 + +[KeyJointPos] +frame1=0.000000 -0.273276 0.000000 +frame4=-0.105758 -0.149948 0.000000 +frame9=-0.080296 -0.075032 0.000000 +frame13=0.000000 -0.273189 0.000000 diff --git a/CONTENT/BT3025/ANIMS/THRWWRI.ANI b/CONTENT/BT3025/ANIMS/THRWWRI.ANI new file mode 100644 index 0000000..97554d0 --- /dev/null +++ b/CONTENT/BT3025/ANIMS/THRWWRI.ANI @@ -0,0 +1,82 @@ +[LAB_ONLY] + +[HEADER] +framecount=4 +framerate=30 +skeletonfile=thr.skl +jointcount=8 + +[Time] +frame1=0 +frame4=0.1 +frame9=0.266667 +frame13=0.4 + +[JointIndices] +jointlthigh=10 +jointlknee=11 +jointlankle=12 +jointrthigh=14 +jointrknee=15 +jointrankle=16 +jointlocal=0 +jointshakey=3 + +[JointType] +jointlthigh=hingex +jointlknee=hingex +jointlankle=hingex +jointrthigh=hingex +jointrknee=hingex +jointrankle=hingex +jointlocal=balltranslate +jointshakey=ball + +[frame1] +jointlthigh=0.395614 0.000000 0.000000 +jointlknee=-0.220767 0.000000 0.000000 +jointlankle=0.133954 0.000000 0.000000 +jointrthigh=-0.491890 0.000000 0.000000 +jointrknee=-0.472590 0.000000 0.000000 +jointrankle=0.630289 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 +[frame4] +jointlthigh=0.147616 0.000000 0.000000 +jointlknee=-0.129438 0.000000 0.000000 +jointlankle=-0.015679 0.000000 0.000000 +jointrthigh=-0.141287 0.000000 0.000000 +jointrknee=-1.084371 0.000000 0.000000 +jointrankle=-0.284291 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.011345 +jointshakey=0.000000 0.000000 0.011345 +[frame9] +jointlthigh=-0.255354 0.000000 0.000000 +jointlknee=-0.265047 0.000000 0.000000 +jointlankle=0.520209 0.000000 0.000000 +jointrthigh=0.296118 0.000000 0.000000 +jointrknee=-1.254241 0.000000 0.000000 +jointrankle=0.620185 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.009163 +jointshakey=0.000000 0.000000 0.009163 +[frame13] +jointlthigh=-0.488196 0.000000 0.000000 +jointlknee=-0.483620 0.000000 0.000000 +jointlankle=0.651607 0.000000 0.000000 +jointrthigh=0.395614 0.000000 0.000000 +jointrknee=-0.220767 0.000000 0.000000 +jointrankle=0.133954 0.000000 0.000000 +jointlocal=0.000000 0.000000 0.000000 +jointshakey=0.000000 0.000000 0.000000 + +[RootTranslation] +frame1=0.000000 0.000000 0.000000 +frame4=0.000000 -5.350000 14.534702 +frame9=0.000000 -5.350000 14.400597 +frame13=0.000000 -5.350000 14.646976 + +[KeyJointPos] +frame1=0.000000 -0.273276 0.000000 +frame4=0.000000 -0.149024 0.000000 +frame9=0.000000 -0.074506 0.000000 +frame13=0.000000 -0.273189 0.000000 diff --git a/CONTENT/BT3025/ARCBT.BAT b/CONTENT/BT3025/ARCBT.BAT new file mode 100644 index 0000000..6d180a6 --- /dev/null +++ b/CONTENT/BT3025/ARCBT.BAT @@ -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= diff --git a/CONTENT/BT3025/ARCFILES.LST b/CONTENT/BT3025/ARCFILES.LST new file mode 100644 index 0000000..d1b09eb --- /dev/null +++ b/CONTENT/BT3025/ARCFILES.LST @@ -0,0 +1,37 @@ +readme.txt +btdpl.ini +btl4opt.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 + diff --git a/CONTENT/BT3025/AUDIO/ABFWRN01.MID b/CONTENT/BT3025/AUDIO/ABFWRN01.MID new file mode 100644 index 0000000..9b86b79 Binary files /dev/null and b/CONTENT/BT3025/AUDIO/ABFWRN01.MID differ diff --git a/CONTENT/BT3025/AUDIO/ABNTRG.SCP b/CONTENT/BT3025/AUDIO/ABNTRG.SCP new file mode 100644 index 0000000..b95a3ef --- /dev/null +++ b/CONTENT/BT3025/AUDIO/ABNTRG.SCP @@ -0,0 +1,96 @@ +# +################################################################### +# Projectile Internal Audio Script +################################################################### +# + +# +################################################################### +# Includes +################################################################### +# +[include] +file=audio\dsttrg.scp + +# +################################################################### +# AmmoBinEjecting component +################################################################### +# + +[AudioStateTrigger] +subsystem=MechSubsystem +attribute=AmmoState +audio_component=AmmoBinEjectingComponent +trigger_state=AmmoBin::Ejecting +inverse_trigger=False +control_ID=StartAudioControlID +control_value=0.0 +dump_value=False + +[AudioStateTrigger] +subsystem=MechSubsystem +attribute=AmmoState +audio_component=AmmoBinEjectingComponent +trigger_state=AmmoBin::Ejecting +inverse_trigger=True +control_ID=StopAudioControlID +control_value=0.0 +dump_value=False + +# +################################################################### +# AmmoBinEjected component +################################################################### +# + +[AudioStateTrigger] +subsystem=MechSubsystem +attribute=AmmoState +audio_component=AmmoBinEjectedComponent +trigger_state=AmmoBin::Ejected +inverse_trigger=False +control_ID=StartAudioControlID +control_value=1.0 +dump_value=False + +# +################################################################### +# AmmoBinDumped component +################################################################### +# + +[AudioStateTrigger] +subsystem=MechSubsystem +attribute=AmmoState +audio_component=AmmoBinDumpedComponent +trigger_state=AmmoBin::AmmoDumped +inverse_trigger=False +control_ID=StartAudioControlID +control_value=3.0 +dump_value=False + +# +################################################################### +# AmmoBinFireWarning component +################################################################### +# + +[AudioLogicalTrigger] +subsystem=MechSubsystem +attribute=FireCountdownStarted +audio_component=AmmoBinFireWarningSequence +attribute_match_value=True +control_ID=StartAudioControlID +control_value=0.0 +dump_value=False + +[AudioLogicalTrigger] +subsystem=MechSubsystem +attribute=FireCountdownStarted +audio_component=AmmoBinFireWarningSequence +attribute_match_value=False +control_ID=StopAudioControlID +control_value=0.0 +dump_value=False + diff --git a/CONTENT/BT3025/AUDIO/ACNCMP.SCP b/CONTENT/BT3025/AUDIO/ACNCMP.SCP new file mode 100644 index 0000000..27db5e8 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/ACNCMP.SCP @@ -0,0 +1,34 @@ +# +################################################################### +# Mech AutoCannon Audio Script +################################################################### +# + +[macro] +ProjectileFireResource=AutoCannonAction01 +ProjectileFireComponent=AutoCannonFireComponent +# +ProjectileLaunchResource=AutoCannonFire01 +ProjectileLaunchComponent=AutoCannonLaunchComponent +# +ProjectileLoadingResource=AutoCannonLoading01 +ProjectileLoadingComponent=AutoCannonLoadingComponent +# +ProjectileLoadedResource=AutoCannonLoaded01 +ProjectileLoadedComponent=AutoCannonLoadedComponent +ProjectileLoadedSequence=AutoCannonLoadedSequence +# +ProjectileTriggerDuringLoadResource=TriggerDuringLoad01 +ProjectileTriggerDuringLoadComponent=AutoCannonTriggerDuringLoadComponent +# +ProjectileMisfireResource=AutoCannonMisfire01 +ProjectileMisfireComponent=AutoCannonMisfireComponent +ProjectileMisfireSequence=AutoCannonMisfireSequence +# +ProjectileJamResource=AutoCannonJam01 +ProjectileJamComponent=AutoCannonJamComponent +ProjectileJamSequence=AutoCannonJamSequence + +[include] +file=audio\prjcmp.scp + diff --git a/CONTENT/BT3025/AUDIO/ACNCMPE.SCP b/CONTENT/BT3025/AUDIO/ACNCMPE.SCP new file mode 100644 index 0000000..d0264fc --- /dev/null +++ b/CONTENT/BT3025/AUDIO/ACNCMPE.SCP @@ -0,0 +1,13 @@ +# +################################################################### +# AutoCannon External Audio Script +################################################################### +# + +[macro] +ProjectileLaunchResource=AutoCannonFireExt01 +ProjectileLaunchVolume=AutoCannonExtLaunchVolume +ProjectileLaunchComponent=AutoCannonExtLaunchComponent + +[include] +file=audio\prjcmpe.scp \ No newline at end of file diff --git a/CONTENT/BT3025/AUDIO/ACNTRG.SCP b/CONTENT/BT3025/AUDIO/ACNTRG.SCP new file mode 100644 index 0000000..98186fd --- /dev/null +++ b/CONTENT/BT3025/AUDIO/ACNTRG.SCP @@ -0,0 +1,12 @@ +# +################################################################### +# Mech AutoCannon Internal Audio Script +################################################################### +# + +[include] +file=audio\prjtrg.scp +file=audio\clttrg.scp +file=audio\buttrg.scp +file=audio\dsttrg.scp + diff --git a/CONTENT/BT3025/AUDIO/ACNTRGE.SCP b/CONTENT/BT3025/AUDIO/ACNTRGE.SCP new file mode 100644 index 0000000..5951aa7 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/ACNTRGE.SCP @@ -0,0 +1,8 @@ +# +################################################################### +# AutoCannon External Audio Script +################################################################### +# + +[include] +file=audio\prjtrge.scp diff --git a/CONTENT/BT3025/AUDIO/ALMINT.SCP b/CONTENT/BT3025/AUDIO/ALMINT.SCP new file mode 100644 index 0000000..55a0113 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/ALMINT.SCP @@ -0,0 +1,78 @@ +# +################################################################### +# Mech Alarm Internal Audio Script +################################################################### +# + +# +################################################################### +# IncomingAlarm component +################################################################### +# + +[DirectPatchSource] +location=OriginLocation +resource=IncomingAlarm01 +position=RearDirectPatchPosition +priority=3 +mix_presence=0 +volume_mix_level=IncomingAlarmVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=False +use_attack_time_scale=False +has_compression_curve=False +compression_duration=0.0 +name=IncomingAlarmComponent + +#------------------------------------------------------------------ + +[AudioControlSequence] +audio_component=IncomingAlarmComponent +tempo=100 +midi_file=audio\incarm01.mid +is_looped=True +dump_value=False +name=IncomingAlarmSequence + +[AudioIdleWatcher] +audio_component=IncomingAlarmSequence + +#------------------------------------------------------------------ + +# +# distance to missile -> tempo +# + +[AudioScalarScale] +subsystem=Entity +attribute=DistanceToMissile +audio_component=IncomingAlarmSequence +attribute_value_boundary1=100.0 +attribute_value_boundary2=800.0 +control_ID=TempoAudioControlID +control_value_boundary1=600 +control_value_boundary2=10 +exponent=1.0 +dump_value=False + +#------------------------------------------------------------------ + +[AudioLogicalTrigger] +subsystem=Entity +attribute=IncomingLock +audio_component=IncomingAlarmSequence +attribute_match_value=True +control_ID=StartAudioControlID +control_value=0.0 +dump_value=False + +[AudioLogicalTrigger] +subsystem=Entity +attribute=IncomingLock +audio_component=IncomingAlarmSequence +attribute_match_value=False +control_ID=StopAudioControlID +control_value=0.0 +dump_value=False + diff --git a/CONTENT/BT3025/AUDIO/AUDIO.INI b/CONTENT/BT3025/AUDIO/AUDIO.INI new file mode 100644 index 0000000..b5bcc45 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/AUDIO.INI @@ -0,0 +1,53 @@ +[AudioRenderer] + +# +# Radius of clipping sphere +# +clipping_radius=450.0 + +# +# Distance between ears +# +distance_between_ears=2.0 + +# +# Control amplitude rolloff +# +amplitude_rolloff=2.0 +amplitude_rolloff_knee=60.0 +amplitude_rolloff_distance_scale=0.003 + +# +# Control high frequency rolloff +# +high_frequency_rolloff=2.0 +high_frequency_rolloff_knee=60.0 +high_frequency_rolloff_distance_scale=0.0035 + +# +# Control doppler +# +doppler_range=600.0 +speed_of_sound=250.0 + +# +# Control source compression +# +compression_scale=0.92 +compression_exponent=8.5 + +# +# ITD difference constant +# +itd_difference=0.0015 + +# +# Global reverb scale +# +global_reverb_scale=0.3 + +[AudioResources] +front_audio_resource=audio\audio1.res +front_audio_resource=audio\audio2.res +rear_audio_resource=audio\audio1.res +rear_audio_resource=audio\audio2.res diff --git a/CONTENT/BT3025/AUDIO/AUDIOMR.INI b/CONTENT/BT3025/AUDIO/AUDIOMR.INI new file mode 100644 index 0000000..a7afe88 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/AUDIOMR.INI @@ -0,0 +1,53 @@ +[AudioRenderer] + +# +# Radius of clipping sphere +# +clipping_radius=700.0 + +# +# Distance between ears +# +distance_between_ears=2.0 + +# +# Control amplitude rolloff +# +amplitude_rolloff=2.0 +amplitude_rolloff_knee=60.0 +amplitude_rolloff_distance_scale=0.002 + +# +# Control high frequency rolloff +# +high_frequency_rolloff=2.0 +high_frequency_rolloff_knee=60.0 +high_frequency_rolloff_distance_scale=0.003 + +# +# Control doppler +# +doppler_range=600.0 +speed_of_sound=250.0 + +# +# Control source compression +# +compression_scale=0.1 +compression_exponent=9.0 + +# +# ITD difference constant +# +itd_difference=0.0015 + +# +# Global reverb scale +# +global_reverb_scale=0.3 + +[AudioResources] +front_audio_resource=audio\audio1.res +front_audio_resource=audio\audio2.res +rear_audio_resource=audio\audio1.res +rear_audio_resource=audio\audio2.res diff --git a/CONTENT/BT3025/AUDIO/AVA1EXT.SCP b/CONTENT/BT3025/AUDIO/AVA1EXT.SCP new file mode 100644 index 0000000..ec99344 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/AVA1EXT.SCP @@ -0,0 +1,43 @@ +# +# External Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchext.scp + +# +# AFC100 component +# +[include] +file=audio\acncmpe.scp + +# AFC100 watcher +[macro] +MechSubsystem=AFC100 +[include] +file=audio\acntrge.scp + +# +# PPC component +# +[include] +file=audio\glrcmpe.scp + +# PPC watcher +[macro] +MechSubsystem=PPC +[include] +file=audio\glrtrge.scp + +# ERMLaser_1 watcher +[macro] +MechSubsystem=ERMLaser_1 +[include] +file=audio\glrtrge.scp + +# ERMLaser_2 watcher +[macro] +MechSubsystem=ERMLaser_2 +[include] +file=audio\glrtrge.scp + diff --git a/CONTENT/BT3025/AUDIO/AVA1INT.SCP b/CONTENT/BT3025/AUDIO/AVA1INT.SCP new file mode 100644 index 0000000..6511451 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/AVA1INT.SCP @@ -0,0 +1,97 @@ +# +# Internal Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchint.scp + +# +# AmmoBinAFC100 component +# +[include] +file=audio\abncmp.scp + +# AmmoBinAFC100 watcher +[macro] +MechSubsystem=AmmoBinAFC100 +[include] +file=audio\abntrg.scp + +# +# AFC100 component +# +[include] +file=audio\laccmp.scp + +# AFC100 watcher +[macro] +MechSubsystem=AFC100 +[include] +file=audio\lactrg.scp + +# +# PPC component +# +[include] +file=audio\ppccmp.scp + +# PPC watcher +[macro] +MechSubsystem=PPC +[include] +file=audio\ppctrg.scp + +# +# ERMLaser_1 component +# +[include] +file=audio\ermcmp.scp + +# ERMLaser_1 watcher +[macro] +MechSubsystem=ERMLaser_1 +[include] +file=audio\ermtrg.scp + +# ERMLaser_2 watcher +[macro] +MechSubsystem=ERMLaser_2 +[include] +file=audio\ermtrg.scp + +# AmmoBinLRM5 watcher +[macro] +MechSubsystem=AmmoBinLRM5 +[include] +file=audio\abntrg.scp + +# +# LRM5 component +# +[include] +file=audio\lrmcmp.scp + +# LRM5 watcher +[macro] +MechSubsystem=LRM5 +[include] +file=audio\lrmtrg.scp + +# AmmoBinSRM2 watcher +[macro] +MechSubsystem=AmmoBinSRM2 +[include] +file=audio\abntrg.scp + +# +# SRM2 component +# +[include] +file=audio\srmcmp.scp + +# SRM2 watcher +[macro] +MechSubsystem=SRM2 +[include] +file=audio\srmtrg.scp + diff --git a/CONTENT/BT3025/AUDIO/AVA2.SCP b/CONTENT/BT3025/AUDIO/AVA2.SCP new file mode 100644 index 0000000..2282034 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/AVA2.SCP @@ -0,0 +1,55 @@ +# +# External Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchext.scp + +# +# AFC5_1 component +# +[include] +file=audio\acncmpe.scp + +# AFC5_1 watcher +[macro] +MechSubsystem=AFC5_1 +[include] +file=audio\acntrge.scp + +# AFC5_2 watcher +[macro] +MechSubsystem=AFC5_2 +[include] +file=audio\acntrge.scp + +# AFC5_3 watcher +[macro] +MechSubsystem=AFC5_3 +[include] +file=audio\acntrge.scp + +# AFC5_4 watcher +[macro] +MechSubsystem=AFC5_4 +[include] +file=audio\acntrge.scp + +# +# ERMLaser_1 component +# +[include] +file=audio\glrcmpe.scp + +# ERMLaser_1 watcher +[macro] +MechSubsystem=ERMLaser_1 +[include] +file=audio\glrtrge.scp + +# ERMLaser_2 watcher +[macro] +MechSubsystem=ERMLaser_2 +[include] +file=audio\glrtrge.scp + diff --git a/CONTENT/BT3025/AUDIO/AVAEXT.SCP b/CONTENT/BT3025/AUDIO/AVAEXT.SCP new file mode 100644 index 0000000..e1aaba3 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/AVAEXT.SCP @@ -0,0 +1,61 @@ +# +# External Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchext.scp + +# +# AFC50 component +# +[include] +file=audio\acncmpe.scp + +# AFC50 watcher +[macro] +MechSubsystem=AFC50 +[include] +file=audio\acntrge.scp + +# +# ERLLaser_1 component +# +[include] +file=audio\glrcmpe.scp + +# ERLLaser_1 watcher +[macro] +MechSubsystem=ERLLaser_1 +[include] +file=audio\glrtrge.scp + +# ERLLaser_2 watcher +[macro] +MechSubsystem=ERLLaser_2 +[include] +file=audio\glrtrge.scp + +# ERMLaser_1 watcher +[macro] +MechSubsystem=ERMLaser_1 +[include] +file=audio\glrtrge.scp + +# ERMLaser_2 watcher +[macro] +MechSubsystem=ERMLaser_2 +[include] +file=audio\glrtrge.scp + +# ERMLaser_3 watcher +[macro] +MechSubsystem=ERMLaser_3 +[include] +file=audio\glrtrge.scp + +# ERMLaser_4 watcher +[macro] +MechSubsystem=ERMLaser_4 +[include] +file=audio\glrtrge.scp + diff --git a/CONTENT/BT3025/AUDIO/AVAINT.SCP b/CONTENT/BT3025/AUDIO/AVAINT.SCP new file mode 100644 index 0000000..82dae63 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/AVAINT.SCP @@ -0,0 +1,109 @@ +# +# Internal Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchint.scp + +# +# AmmoBinAFC50 component +# +[include] +file=audio\abncmp.scp + +# AmmoBinAFC50 watcher +[macro] +MechSubsystem=AmmoBinAFC50 +[include] +file=audio\abntrg.scp + +# +# AFC50 component +# +[include] +file=audio\maccmp.scp + +# AFC50 watcher +[macro] +MechSubsystem=AFC50 +[include] +file=audio\mactrg.scp + +# +# ERLLaser_1 component +# +[include] +file=audio\erlcmp.scp + +# ERLLaser_1 watcher +[macro] +MechSubsystem=ERLLaser_1 +[include] +file=audio\erltrg.scp + +# ERLLaser_2 watcher +[macro] +MechSubsystem=ERLLaser_2 +[include] +file=audio\erltrg.scp + +# +# ERMLaser_1 component +# +[include] +file=audio\ermcmp.scp + +# ERMLaser_1 watcher +[macro] +MechSubsystem=ERMLaser_1 +[include] +file=audio\ermtrg.scp + +# ERMLaser_2 watcher +[macro] +MechSubsystem=ERMLaser_2 +[include] +file=audio\ermtrg.scp + +# ERMLaser_3 watcher +[macro] +MechSubsystem=ERMLaser_3 +[include] +file=audio\ermtrg.scp + +# ERMLaser_4 watcher +[macro] +MechSubsystem=ERMLaser_4 +[include] +file=audio\ermtrg.scp + +# AmmoBinLRM10_1 watcher +[macro] +MechSubsystem=AmmoBinLRM10_1 +[include] +file=audio\abntrg.scp + +# +# LRM10_1 component +# +[include] +file=audio\lrmcmp.scp + +# LRM10_1 watcher +[macro] +MechSubsystem=LRM10_1 +[include] +file=audio\lrmtrg.scp + +# AmmoBinLRM10_2 watcher +[macro] +MechSubsystem=AmmoBinLRM10_2 +[include] +file=audio\abntrg.scp + +# LRM10_2 watcher +[macro] +MechSubsystem=LRM10_2 +[include] +file=audio\lrmtrg.scp + diff --git a/CONTENT/BT3025/AUDIO/BATEXT.SCP b/CONTENT/BT3025/AUDIO/BATEXT.SCP new file mode 100644 index 0000000..f76f79a --- /dev/null +++ b/CONTENT/BT3025/AUDIO/BATEXT.SCP @@ -0,0 +1,25 @@ +# +# External Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchext.scp + +# +# PPC_1 component +# +[include] +file=audio\glrcmpe.scp + +# PPC_1 watcher +[macro] +MechSubsystem=PPC_1 +[include] +file=audio\glrtrge.scp + +# PPC_2 watcher +[macro] +MechSubsystem=PPC_2 +[include] +file=audio\glrtrge.scp + diff --git a/CONTENT/BT3025/AUDIO/BATINT.SCP b/CONTENT/BT3025/AUDIO/BATINT.SCP new file mode 100644 index 0000000..aa2a9e4 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/BATINT.SCP @@ -0,0 +1,85 @@ +# +# Internal Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchint.scp + +# +# PPC_1 component +# +[include] +file=audio\ppccmp.scp + +# PPC_1 watcher +[macro] +MechSubsystem=PPC_1 +[include] +file=audio\ppctrg.scp + +# PPC_2 watcher +[macro] +MechSubsystem=PPC_2 +[include] +file=audio\ppctrg.scp + +# +# AmmoBinLRM15_1 component +# +[include] +file=audio\abncmp.scp + +# AmmoBinLRM15_1 watcher +[macro] +MechSubsystem=AmmoBinLRM15_1 +[include] +file=audio\abntrg.scp + +# +# LRM15_1 component +# +[include] +file=audio\lrmcmp.scp + +# LRM15_1 watcher +[macro] +MechSubsystem=LRM15_1 +[include] +file=audio\lrmtrg.scp + +# AmmoBinLRM15_2 watcher +[macro] +MechSubsystem=AmmoBinLRM15_2 +[include] +file=audio\abntrg.scp + +# LRM15_2 watcher +[macro] +MechSubsystem=LRM15_2 +[include] +file=audio\lrmtrg.scp + +# AmmoBinLRM15_3 watcher +[macro] +MechSubsystem=AmmoBinLRM15_3 +[include] +file=audio\abntrg.scp + +# LRM15_3 watcher +[macro] +MechSubsystem=LRM15_3 +[include] +file=audio\lrmtrg.scp + +# AmmoBinLRM15_4 watcher +[macro] +MechSubsystem=AmmoBinLRM15_4 +[include] +file=audio\abntrg.scp + +# LRM15_4 watcher +[macro] +MechSubsystem=LRM15_4 +[include] +file=audio\lrmtrg.scp + diff --git a/CONTENT/BT3025/AUDIO/BHK1EXT.SCP b/CONTENT/BT3025/AUDIO/BHK1EXT.SCP new file mode 100644 index 0000000..b1f6056 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/BHK1EXT.SCP @@ -0,0 +1,43 @@ +# +# External Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchext.scp + +# +# PPC_1 component +# +[include] +file=audio\glrcmpe.scp + +# PPC_1 watcher +[macro] +MechSubsystem=PPC_1 +[include] +file=audio\glrtrge.scp + +# PPC_2 watcher +[macro] +MechSubsystem=PPC_2 +[include] +file=audio\glrtrge.scp + +# ERMLaser_1 watcher +[macro] +MechSubsystem=ERMLaser_1 +[include] +file=audio\glrtrge.scp + +# ERMLaser_2 watcher +[macro] +MechSubsystem=ERMLaser_2 +[include] +file=audio\glrtrge.scp + +# ERMLaser_3 watcher +[macro] +MechSubsystem=ERMLaser_3 +[include] +file=audio\glrtrge.scp + diff --git a/CONTENT/BT3025/AUDIO/BHK1INT.SCP b/CONTENT/BT3025/AUDIO/BHK1INT.SCP new file mode 100644 index 0000000..3b4888b --- /dev/null +++ b/CONTENT/BT3025/AUDIO/BHK1INT.SCP @@ -0,0 +1,85 @@ +# +# Internal Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchint.scp + +# +# PPC_1 component +# +[include] +file=audio\ppccmp.scp + +# PPC_1 watcher +[macro] +MechSubsystem=PPC_1 +[include] +file=audio\ppctrg.scp + +# PPC_2 watcher +[macro] +MechSubsystem=PPC_2 +[include] +file=audio\ppctrg.scp + +# +# ERMLaser_1 component +# +[include] +file=audio\ermcmp.scp + +# ERMLaser_1 watcher +[macro] +MechSubsystem=ERMLaser_1 +[include] +file=audio\ermtrg.scp + +# ERMLaser_2 watcher +[macro] +MechSubsystem=ERMLaser_2 +[include] +file=audio\ermtrg.scp + +# ERMLaser_3 watcher +[macro] +MechSubsystem=ERMLaser_3 +[include] +file=audio\ermtrg.scp + +# +# AmmoBinSRM6_1 component +# +[include] +file=audio\abncmp.scp + +# AmmoBinSRM6_1 watcher +[macro] +MechSubsystem=AmmoBinSRM6_1 +[include] +file=audio\abntrg.scp + +# +# SRM6_1 component +# +[include] +file=audio\srmcmp.scp + +# SRM6_1 watcher +[macro] +MechSubsystem=SRM6_1 +[include] +file=audio\srmtrg.scp + +# AmmoBinSRM6_2 watcher +[macro] +MechSubsystem=AmmoBinSRM6_2 +[include] +file=audio\abntrg.scp + +# SRM6_2 watcher +[macro] +MechSubsystem=SRM6_2 +[include] +file=audio\srmtrg.scp + diff --git a/CONTENT/BT3025/AUDIO/BIGEXP.SCP b/CONTENT/BT3025/AUDIO/BIGEXP.SCP new file mode 100644 index 0000000..36e90b6 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/BIGEXP.SCP @@ -0,0 +1,91 @@ +# +################################################################### +# Big Explosion Audio Script +################################################################### +# + +[include] +file=audio\macros.scp + +# +################################################################### +# Audio locations +################################################################### +# + +[L4AudioLocation] +location_offset=0.0,0.0,0.0 +name=OriginLocation + +# +################################################################### +# BigExplosion component +################################################################### +# + +[Dynamic3DPatchSource] +location=OriginLocation +resource=AuxExplosion01 +priority=0 +mix_presence=3 +volume_mix_level=BigExplosionVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=True +use_attack_time_scale=False +has_compression_curve=True +compression_duration=0.5 +name=BigExplosionComponent + +#------------------------------------------------------------------ + +# +# sample and hold -> pitch +# + +[AudioSampleAndHold] +audio_component=BigExplosionComponent +control_ID=PitchAudioControlID +sample_duration=99.0 +min_value=-200 +max_value=200 +name=BigExplosionPitchSampleAndHold + +# +# sample and hold -> filter +# + +[AudioSampleAndHold] +audio_component=BigExplosionComponent +control_ID=BrightnessAudioControlID +sample_duration=99.0 +min_value=0.7 +max_value=1.0 +name=BigExplosionBrightnessSampleAndHold + +#------------------------------------------------------------------ + +[AudioControlSplitter] +audio_component=BigExplosionPitchSampleAndHold +audio_component=BigExplosionBrightnessSampleAndHold +audio_component=BigExplosionComponent +name=BigExplosionSplitter + +[AudioControlSequence] +audio_component=BigExplosionSplitter +tempo=160 +midi_file=audio\bigexp01.mid +is_looped=False +dump_value=False +name=BigExplosionSequence + +[AudioIdleWatcher] +audio_component=BigExplosionSequence + +#------------------------------------------------------------------ + +[AudioControlSend] +audio_component=BigExplosionSequence +control_ID=StartAudioControlID +control_value=0.0 + diff --git a/CONTENT/BT3025/AUDIO/BIGEXP01.MID b/CONTENT/BT3025/AUDIO/BIGEXP01.MID new file mode 100644 index 0000000..0f41bde Binary files /dev/null and b/CONTENT/BT3025/AUDIO/BIGEXP01.MID differ diff --git a/CONTENT/BT3025/AUDIO/BLKEXT.SCP b/CONTENT/BT3025/AUDIO/BLKEXT.SCP new file mode 100644 index 0000000..49cf53d --- /dev/null +++ b/CONTENT/BT3025/AUDIO/BLKEXT.SCP @@ -0,0 +1,61 @@ +# +# External Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchext.scp + +# +# ERLLaser component +# +[include] +file=audio\glrcmpe.scp + +# ERLLaser watcher +[macro] +MechSubsystem=ERLLaser +[include] +file=audio\glrtrge.scp + +# ERMLaser_1 watcher +[macro] +MechSubsystem=ERMLaser_1 +[include] +file=audio\glrtrge.scp + +# ERMLaser_2 watcher +[macro] +MechSubsystem=ERMLaser_2 +[include] +file=audio\glrtrge.scp + +# ERMLaser_3 watcher +[macro] +MechSubsystem=ERMLaser_3 +[include] +file=audio\glrtrge.scp + +# ERMLaser_4 watcher +[macro] +MechSubsystem=ERMLaser_4 +[include] +file=audio\glrtrge.scp + +# ERMLaser_5 watcher +[macro] +MechSubsystem=ERMLaser_5 +[include] +file=audio\glrtrge.scp + +# ERSLaser_1 watcher +[macro] +MechSubsystem=ERSLaser_1 +[include] +file=audio\glrtrge.scp + +# ERSLaser_2 watcher +[macro] +MechSubsystem=ERSLaser_2 +[include] +file=audio\glrtrge.scp + diff --git a/CONTENT/BT3025/AUDIO/BLKINT.SCP b/CONTENT/BT3025/AUDIO/BLKINT.SCP new file mode 100644 index 0000000..50c6329 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/BLKINT.SCP @@ -0,0 +1,109 @@ +# +# Internal Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchint.scp + +# +# ERLLaser component +# +[include] +file=audio\erlcmp.scp + +# ERLLaser watcher +[macro] +MechSubsystem=ERLLaser +[include] +file=audio\erltrg.scp + +# +# ERMLaser_1 component +# +[include] +file=audio\ermcmp.scp + +# ERMLaser_1 watcher +[macro] +MechSubsystem=ERMLaser_1 +[include] +file=audio\ermtrg.scp + +# ERMLaser_2 watcher +[macro] +MechSubsystem=ERMLaser_2 +[include] +file=audio\ermtrg.scp + +# ERMLaser_3 watcher +[macro] +MechSubsystem=ERMLaser_3 +[include] +file=audio\ermtrg.scp + +# ERMLaser_4 watcher +[macro] +MechSubsystem=ERMLaser_4 +[include] +file=audio\ermtrg.scp + +# ERMLaser_5 watcher +[macro] +MechSubsystem=ERMLaser_5 +[include] +file=audio\ermtrg.scp + +# +# ERSLaser_1 component +# +[include] +file=audio\erscmp.scp + +# ERSLaser_1 watcher +[macro] +MechSubsystem=ERSLaser_1 +[include] +file=audio\erstrg.scp + +# ERSLaser_2 watcher +[macro] +MechSubsystem=ERSLaser_2 +[include] +file=audio\erstrg.scp + +# +# AmmoBinSRM6_1 component +# +[include] +file=audio\abncmp.scp + +# AmmoBinSRM6_1 watcher +[macro] +MechSubsystem=AmmoBinSRM6_1 +[include] +file=audio\abntrg.scp + +# +# SRM6_1 component +# +[include] +file=audio\srmcmp.scp + +# SRM6_1 watcher +[macro] +MechSubsystem=SRM6_1 +[include] +file=audio\srmtrg.scp + +# AmmoBinSRM6_2 watcher +[macro] +MechSubsystem=AmmoBinSRM6_2 +[include] +file=audio\abntrg.scp + +# SRM6_2 watcher +[macro] +MechSubsystem=SRM6_2 +[include] +file=audio\srmtrg.scp + diff --git a/CONTENT/BT3025/AUDIO/CALEXT.SCP b/CONTENT/BT3025/AUDIO/CALEXT.SCP new file mode 100644 index 0000000..a4b7f3f --- /dev/null +++ b/CONTENT/BT3025/AUDIO/CALEXT.SCP @@ -0,0 +1,49 @@ +# +# External Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchext.scp + +# +# PPC_1 component +# +[include] +file=audio\glrcmpe.scp + +# PPC_1 watcher +[macro] +MechSubsystem=PPC_1 +[include] +file=audio\glrtrge.scp + +# PPC_2 watcher +[macro] +MechSubsystem=PPC_2 +[include] +file=audio\glrtrge.scp + +# ERSLaser_1 watcher +[macro] +MechSubsystem=ERSLaser_1 +[include] +file=audio\glrtrge.scp + +# ERSLaser_2 watcher +[macro] +MechSubsystem=ERSLaser_2 +[include] +file=audio\glrtrge.scp + +# ERSLaser_3 watcher +[macro] +MechSubsystem=ERSLaser_3 +[include] +file=audio\glrtrge.scp + +# ERSLaser_4 watcher +[macro] +MechSubsystem=ERSLaser_4 +[include] +file=audio\glrtrge.scp + diff --git a/CONTENT/BT3025/AUDIO/CALINT.SCP b/CONTENT/BT3025/AUDIO/CALINT.SCP new file mode 100644 index 0000000..922879c --- /dev/null +++ b/CONTENT/BT3025/AUDIO/CALINT.SCP @@ -0,0 +1,91 @@ +# +# Internal Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchint.scp + +# +# PPC_1 component +# +[include] +file=audio\ppccmp.scp + +# PPC_1 watcher +[macro] +MechSubsystem=PPC_1 +[include] +file=audio\ppctrg.scp + +# PPC_2 watcher +[macro] +MechSubsystem=PPC_2 +[include] +file=audio\ppctrg.scp + +# +# ERSLaser_1 component +# +[include] +file=audio\erscmp.scp + +# ERSLaser_1 watcher +[macro] +MechSubsystem=ERSLaser_1 +[include] +file=audio\erstrg.scp + +# ERSLaser_2 watcher +[macro] +MechSubsystem=ERSLaser_2 +[include] +file=audio\erstrg.scp + +# ERSLaser_3 watcher +[macro] +MechSubsystem=ERSLaser_3 +[include] +file=audio\erstrg.scp + +# ERSLaser_4 watcher +[macro] +MechSubsystem=ERSLaser_4 +[include] +file=audio\erstrg.scp + +# +# AmmoBinLRM15_1 component +# +[include] +file=audio\abncmp.scp + +# AmmoBinLRM15_1 watcher +[macro] +MechSubsystem=AmmoBinLRM15_1 +[include] +file=audio\abntrg.scp + +# +# LRM15_1 component +# +[include] +file=audio\lrmcmp.scp + +# LRM15_1 watcher +[macro] +MechSubsystem=LRM15_1 +[include] +file=audio\lrmtrg.scp + +# AmmoBinLRM15_2 watcher +[macro] +MechSubsystem=AmmoBinLRM15_2 +[include] +file=audio\abntrg.scp + +# LRM15_2 watcher +[macro] +MechSubsystem=LRM15_2 +[include] +file=audio\lrmtrg.scp + diff --git a/CONTENT/BT3025/AUDIO/CLKWRN01.MID b/CONTENT/BT3025/AUDIO/CLKWRN01.MID new file mode 100644 index 0000000..c044502 Binary files /dev/null and b/CONTENT/BT3025/AUDIO/CLKWRN01.MID differ diff --git a/CONTENT/BT3025/AUDIO/CLTCMP.SCP b/CONTENT/BT3025/AUDIO/CLTCMP.SCP new file mode 100644 index 0000000..f045653 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/CLTCMP.SCP @@ -0,0 +1,74 @@ +# +################################################################### +# Coolant System Audio Script +################################################################### +# + +# +################################################################### +# CoolantLeakWarning component +################################################################### +# + +[DirectPatchSource] +location=OriginLocation +resource=Warnings01 +position=FrontDirectPatchPosition +priority=3 +mix_presence=2 +volume_mix_level=WarningVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=False +use_attack_time_scale=False +has_compression_curve=False +compression_duration=0.0 +name=CoolantLeakWarningComponent + +#------------------------------------------------------------------ + +[AudioControlSequence] +audio_component=CoolantLeakWarningComponent +tempo=160 +midi_file=audio\clkwrn01.mid +is_looped=True +dump_value=False +name=CoolantLeakWarningSequence + +[AudioIdleWatcher] +audio_component=CoolantLeakWarningSequence + +# +################################################################### +# CoolantLeak component +################################################################### +# + +[!DirectPatchSource] +location=OriginLocation +resource=CoolantLeak01 +position=RearDirectPatchPosition +priority=0 +mix_presence=0 +volume_mix_level=CoolantLeakVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=False +use_attack_time_scale=False +has_compression_curve=False +compression_duration=0.0 +name=CoolantLeakComponent + +#------------------------------------------------------------------ + +# +# amplitude smoother -> amplitude +# + +[!AudioControlSmoother] +audio_component=CoolantLeakComponent +number_of_samples=4 +control_ID=VolumeAudioControlID +name=CoolantLeakAmplitudeSmoother + + diff --git a/CONTENT/BT3025/AUDIO/CLTTRG.SCP b/CONTENT/BT3025/AUDIO/CLTTRG.SCP new file mode 100644 index 0000000..d6ac9f0 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/CLTTRG.SCP @@ -0,0 +1,63 @@ +# +################################################################### +# Coolant System Buttons Audio Script +################################################################### +# + +# +################################################################### +# CoolantLeakWarning component +################################################################### +# + +[AudioLogicalTrigger] +subsystem=MechSubsystem +attribute=ReportLeak +audio_component=CoolantLeakWarningSequence +attribute_match_value=True +control_ID=StartAudioControlID +control_value=0.0 +dump_value=False + +[AudioLogicalTrigger] +subsystem=MechSubsystem +attribute=ReportLeak +audio_component=CoolantLeakWarningSequence +attribute_match_value=False +control_ID=StopAudioControlID +control_value=0.0 +dump_value=False + +# +################################################################### +# CoolantLeak component +################################################################### +# + +[!AudioScalarScale] +subsystem=MechSubsystem +attribute=CoolantMassLeakRate +audio_component=CoolantLeakAmplitudeSmoother +attribute_value_boundary1=0.0 +attribute_value_boundary2=0.1 +control_ID=TempoAudioControlID +control_value_boundary1=0.0 +control_value_boundary2=1.0 +exponent=0.5 +dump_value=False + +#------------------------------------------------------------------ + +[!AudioScalarTrigger] +subsystem=MechSubsystem +attribute=CoolantMassLeakRate +audio_component=CoolantLeakComponent +attribute_value_threshold=0.01 +control_ID_on=StartAudioControlID +control_ID_off=StopAudioControlID +control_value_on=0.0 +control_value_off=0.0 +inverse_trigger=False +dump_value=False + + diff --git a/CONTENT/BT3025/AUDIO/CNDCMP.SCP b/CONTENT/BT3025/AUDIO/CNDCMP.SCP new file mode 100644 index 0000000..f3730c4 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/CNDCMP.SCP @@ -0,0 +1,49 @@ +# +################################################################### +# Condenser Audio Script +################################################################### +# + +# +################################################################### +# CoolantPressureIncrease component +################################################################### +# + +[DirectPatchSource] +location=OriginLocation +resource=CoolantPressureIncrease03 +position=FrontDirectPatchPosition +priority=3 +mix_presence=0 +volume_mix_level=CoolantPressureVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=False +use_attack_time_scale=False +has_compression_curve=False +compression_duration=0.0 +name=CoolantPressureIncreaseComponent + +# +################################################################### +# CoolantPressureDecrease component +################################################################### +# + +[DirectPatchSource] +location=OriginLocation +resource=CoolantPressureDecrease03 +position=FrontDirectPatchPosition +priority=3 +mix_presence=0 +volume_mix_level=CoolantPressureVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=False +use_attack_time_scale=False +has_compression_curve=False +compression_duration=0.0 +name=CoolantPressureDecreaseComponent + + diff --git a/CONTENT/BT3025/AUDIO/CNDTRG.SCP b/CONTENT/BT3025/AUDIO/CNDTRG.SCP new file mode 100644 index 0000000..490de8a --- /dev/null +++ b/CONTENT/BT3025/AUDIO/CNDTRG.SCP @@ -0,0 +1,46 @@ +# +################################################################### +# Condenser Audio Script +################################################################### +# + +# +################################################################### +# Includes +################################################################### +# +[include] +file=audio\clttrg.scp + +# +################################################################### +# CoolantPressureIncrease component +################################################################### +# + +[AudioStateTrigger] +subsystem=MechSubsystem +attribute=CondenserState +audio_component=CoolantPressureIncreaseComponent +trigger_state=Condenser::OpeningCondenserState +inverse_trigger=False +control_ID=StartAudioControlID +control_value=4.0 +dump_value=False + +# +################################################################### +# CoolantPressureDecrease component +################################################################### +# + +[AudioStateTrigger] +subsystem=MechSubsystem +attribute=CondenserState +audio_component=CoolantPressureDecreaseComponent +trigger_state=Condenser::ClosingCondenserState +inverse_trigger=False +control_ID=StartAudioControlID +control_value=4.0 +dump_value=False + diff --git a/CONTENT/BT3025/AUDIO/COLEXT.SCP b/CONTENT/BT3025/AUDIO/COLEXT.SCP new file mode 100644 index 0000000..f3ab54d --- /dev/null +++ b/CONTENT/BT3025/AUDIO/COLEXT.SCP @@ -0,0 +1,102 @@ +# +################################################################### +# Mech Internal Collision Audio Script +################################################################### +# + +[macro] +CollisionTopSpeed=25 + +# +################################################################### +# Collision component +################################################################### +# + +[Dynamic3DPatchSource] +location=OriginLocation +resource=CollisionExt01 +priority=0 +mix_presence=0 +volume_mix_level=CollisionExternalVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=True +use_attack_time_scale=False +has_compression_curve=False +compression_duration=0.0 +name=CollisionExternalComponent + +#------------------------------------------------------------------ + +# +# resource select +# + +[AudioResourceSelector] +audio_source=CollisionExternalComponent +audio_resource_index=CollisionExtIndex +control_ID=100 +min_control_value=0.0 +max_control_value=1.0 +dump_value=False +name=CollisionExternalResourceSelect + +# +# sample and hold -> resource select +# + +[AudioSampleAndHold] +audio_component=CollisionExternalResourceSelect +control_ID=100 +sample_duration=0.0 +name=CollisionExternalSampleAndHold + +#------------------------------------------------------------------ + +# +# collision speed -> attack volume +# + +[AudioScalarScale] +subsystem=Entity +attribute=CollisionSpeed +audio_component=CollisionExternalComponent +attribute_value_boundary1=0.0 +attribute_value_boundary2=CollisionTopSpeed +control_ID=AttackVolumeAudioControlID +control_value_boundary1=0.9 +control_value_boundary2=1.0 +exponent=0.5 +dump_value=False + +#------------------------------------------------------------------ + +# +# collision speed -> filter +# + +[AudioScalarScale] +subsystem=Entity +attribute=CollisionSpeed +audio_component=CollisionExternalComponent +attribute_value_boundary1=0.0 +attribute_value_boundary2=CollisionTopSpeed +control_ID=BrightnessAudioControlID +control_value_boundary1=0.8 +control_value_boundary2=1.0 +exponent=1.0 +dump_value=False + +#------------------------------------------------------------------ + +[AudioStateTrigger] +subsystem=Entity +attribute=CollisionState +audio_component=CollisionExternalComponent +trigger_state=Mech::InitialHitState +inverse_trigger=0 +control_ID=StartAudioControlID +control_value=3.0 +dump_value=False + diff --git a/CONTENT/BT3025/AUDIO/CRNEXP.SCP b/CONTENT/BT3025/AUDIO/CRNEXP.SCP new file mode 100644 index 0000000..d92479b --- /dev/null +++ b/CONTENT/BT3025/AUDIO/CRNEXP.SCP @@ -0,0 +1,84 @@ +# +################################################################### +# Crunch Audio Script +################################################################### +# + +[include] +file=audio\macros.scp + +# +################################################################### +# Audio locations +################################################################### +# + +[L4AudioLocation] +location_offset=0.0,0.0,0.0 +clipping_scale=0.25 +name=OriginLocation + +# +################################################################### +# Crunch component +################################################################### +# + +[Dynamic3DPatchSource] +location=OriginLocation +resource=Crunch01 +priority=0 +mix_presence=3 +volume_mix_level=CrunchExplosionVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=True +use_attack_time_scale=False +has_compression_curve=True +compression_duration=0.5 +name=CrunchComponent + +#------------------------------------------------------------------ + +# +# sample and hold -> pitch +# + +[AudioSampleAndHold] +audio_component=CrunchComponent +control_ID=PitchAudioControlID +sample_duration=99.0 +min_value=-200 +max_value=200 +name=CrunchPitchSampleAndHold + +# +# sample and hold -> filter +# + +[AudioSampleAndHold] +audio_component=CrunchComponent +control_ID=BrightnessAudioControlID +sample_duration=99.0 +min_value=0.7 +max_value=1.0 +name=CrunchBrightnessSampleAndHold + +#------------------------------------------------------------------ + +[AudioControlSplitter] +audio_component=CrunchPitchSampleAndHold +audio_component=CrunchBrightnessSampleAndHold +name=CrunchSplitter + +[AudioControlSend] +audio_component=CrunchSplitter +control_ID=StartAudioControlID +control_value=0.0 + +[AudioControlSend] +audio_component=CrunchComponent +control_ID=StartAudioControlID +control_value=3.0 + + diff --git a/CONTENT/BT3025/AUDIO/CTMIX.CFG b/CONTENT/BT3025/AUDIO/CTMIX.CFG new file mode 100644 index 0000000..90b2515 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/CTMIX.CFG @@ -0,0 +1,15 @@ +/MA:229;0 +/VO:0;0 +/MI:229;0 +/CD:0;0 +/LI:0;0 +/MIC:0 +/SP:0 +/TR:114;0 +/BA:114;0 +/IPL:MIC- CDR- CDL- LIR- LIL- MIR- MIL- +/IPR:MIC- CDR- CDL- LIR- LIL- MIR- MIL- +/OPS:MIC- CDR- CDL- LIR- LIL- +/AGC:- +/IPG:1,1 +/OPG:1,1 diff --git a/CONTENT/BT3025/AUDIO/DGAEXP.SCP b/CONTENT/BT3025/AUDIO/DGAEXP.SCP new file mode 100644 index 0000000..c3ded99 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/DGAEXP.SCP @@ -0,0 +1,47 @@ +# +################################################################### +# DamageBurn A Audio Script +################################################################### +# + +[include] +file=audio\macros.scp + +# +################################################################### +# Audio locations +################################################################### +# + +[L4AudioLocation] +location_offset=0.0,0.0,0.0 +clipping_scale=0.33 +name=OriginLocation + +# +################################################################### +# DamageBurn component +################################################################### +# + +[Dynamic3DPatchSource] +location=OriginLocation +resource=Damage01 +priority=0 +mix_presence=0 +volume_mix_level=DamageBurnAVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=False +use_attack_time_scale=False +has_compression_curve=False +compression_duration=0.0 +name=DamageBurnComponent + +#------------------------------------------------------------------ + +[AudioControlSend] +audio_component=DamageBurnComponent +control_ID=StartAudioControlID +control_value=0.0 + diff --git a/CONTENT/BT3025/AUDIO/DGBEXP.SCP b/CONTENT/BT3025/AUDIO/DGBEXP.SCP new file mode 100644 index 0000000..574ccf1 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/DGBEXP.SCP @@ -0,0 +1,47 @@ +# +################################################################### +# DamageBurn B Audio Script +################################################################### +# + +[include] +file=audio\macros.scp + +# +################################################################### +# Audio locations +################################################################### +# + +[L4AudioLocation] +location_offset=0.0,0.0,0.0 +clipping_scale=0.33 +name=OriginLocation + +# +################################################################### +# DamageBurn component +################################################################### +# + +[Dynamic3DPatchSource] +location=OriginLocation +resource=Damage02 +priority=0 +mix_presence=0 +volume_mix_level=DamageBurnBVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=False +use_attack_time_scale=False +has_compression_curve=False +compression_duration=0.0 +name=DamageBurnComponent + +#------------------------------------------------------------------ + +[AudioControlSend] +audio_component=DamageBurnComponent +control_ID=StartAudioControlID +control_value=0.0 + diff --git a/CONTENT/BT3025/AUDIO/DGCEXP.SCP b/CONTENT/BT3025/AUDIO/DGCEXP.SCP new file mode 100644 index 0000000..7c8a750 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/DGCEXP.SCP @@ -0,0 +1,48 @@ +# +################################################################### +# DamageBurn C Audio Script +################################################################### +# + +[include] +file=audio\macros.scp + +# +################################################################### +# Audio locations +################################################################### +# + +[L4AudioLocation] +location_offset=0.0,0.0,0.0 +clipping_scale=0.33 +name=OriginLocation + +# +################################################################### +# DamageBurn component +################################################################### +# + +[Static3DPatchSource] +location=OriginLocation +resource=Damage03 +priority=1 +mix_presence=0 +volume_mix_level=DamageBurnCVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=False +use_attack_time_scale=False +has_compression_curve=False +compression_duration=0.0 +use_internal=False +name=DamageBurnComponent + +#------------------------------------------------------------------ + +[AudioControlSend] +audio_component=DamageBurnComponent +control_ID=StartAudioControlID +control_value=0.0 + diff --git a/CONTENT/BT3025/AUDIO/DSTCMP.SCP b/CONTENT/BT3025/AUDIO/DSTCMP.SCP new file mode 100644 index 0000000..2794d5d --- /dev/null +++ b/CONTENT/BT3025/AUDIO/DSTCMP.SCP @@ -0,0 +1,38 @@ +# +################################################################### +# Destroyed Internal Audio Script +################################################################### +# + +# +################################################################### +# SubsystemDestroyed component +################################################################### +# + +[DirectPatchSource] +location=OriginLocation +resource=DestroyedInt06 +position=RearDirectPatchPosition +priority=0 +mix_presence=3 +volume_mix_level=SubsystemDestroyedVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=False +use_attack_time_scale=False +has_compression_curve=True +compression_duration=1.0 +name=SubsystemDestroyedComponent + +[AudioControlSequence] +audio_component=SubsystemDestroyedComponent +tempo=160 +midi_file=audio\dstrd02.mid +is_looped=False +dump_value=False +name=SubsystemDestroyedSequence + +[AudioIdleWatcher] +audio_component=SubsystemDestroyedSequence + diff --git a/CONTENT/BT3025/AUDIO/DSTRD01.MID b/CONTENT/BT3025/AUDIO/DSTRD01.MID new file mode 100644 index 0000000..b18194a Binary files /dev/null and b/CONTENT/BT3025/AUDIO/DSTRD01.MID differ diff --git a/CONTENT/BT3025/AUDIO/DSTRD02.MID b/CONTENT/BT3025/AUDIO/DSTRD02.MID new file mode 100644 index 0000000..3bb9786 Binary files /dev/null and b/CONTENT/BT3025/AUDIO/DSTRD02.MID differ diff --git a/CONTENT/BT3025/AUDIO/DSTTRG.SCP b/CONTENT/BT3025/AUDIO/DSTTRG.SCP new file mode 100644 index 0000000..3666a82 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/DSTTRG.SCP @@ -0,0 +1,22 @@ +# +################################################################### +# Destroyed Internal Audio Script +################################################################### +# + +# +################################################################### +# Destroyed component +################################################################### +# + +[AudioStateTrigger] +subsystem=MechSubsystem +attribute=SimulationState +audio_component=SubsystemDestroyedSequence +trigger_state=MechSubsystem::Destroyed +inverse_trigger=False +control_ID=StartAudioControlID +control_value=0.0 +dump_value=False + diff --git a/CONTENT/BT3025/AUDIO/EPCCMP.SCP b/CONTENT/BT3025/AUDIO/EPCCMP.SCP new file mode 100644 index 0000000..c661ea9 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/EPCCMP.SCP @@ -0,0 +1,57 @@ +# +################################################################### +# ER PPC Audio Script +################################################################### +# + +[macro] +LaserFireResource=LaserAFire01 +LaserFirePitchOffset=-200 +LaserFireComponent=PPCFireComponent +LaserFireIndex=LaserAFireIndex +LaserFireResourceSelect=PPCFireResourceSelect +LaserFireSampleAndHold=PPCFireSampleAndHold +# +LaserSustainResource=LaserASustain01 +LaserSustainComponent=PPCSustainComponent +LaserSustainIndex=LaserASustainIndex +LaserSustainResourceSelect=PPCSustainResourceSelect +LaserSustainSampleAndHold=PPCSustainSampleAndHold +# +LaserReleaseResource=LaserARelease01 +LaserReleaseComponent=PPCReleaseComponent +LaserReleaseIndex=LaserAReleaseIndex +LaserReleaseResourceSelect=PPCReleaseResourceSelect +LaserReleaseSampleAndHold=PPCReleaseSampleAndHold +# +LaserChargeResource=LaserACharge01 +LaserChargeComponent=PPCChargeComponent +LaserChargeIndex=LaserAChargeIndex +LaserChargeResourceSelect=PPCChargeResourceSelect +LaserChargeSampleAndHold=PPCChargeSampleAndHold +# +LaserLoadedResource=LaserLoaded01 +LaserLoadedComponent=SmallLaserLoadedComponent +LaserLoadedSequence=SmallLaserLoadedSequence +# +LaserTriggerDuringLoadResource=TriggerDuringLoad01 +LaserTriggerDuringLoadComponent=PPCTriggerDuringLoadComponent +# +LaserMisfireResource=LaserAMisfire01 +LaserMisfireComponent=PPCMisfireComponent +# +LaserSeekLevelResource=BasicBeep02 +LaserSeekLevelComponent=PPCSeekLevelComponent + +[include] +file=audio\lsrcmp.scp + +#------------------------------------------------------------------ + +[macro] +CoolantLeakComponent=PPCCoolantLeakComponent +CoolantLeakAmplitudeSmoother=PPCCoolantLeakAmplitudeSmoother + +[include] +file=audio\cltcmp.scp + diff --git a/CONTENT/BT3025/AUDIO/EPPCMP.SCP b/CONTENT/BT3025/AUDIO/EPPCMP.SCP new file mode 100644 index 0000000..a5a5782 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/EPPCMP.SCP @@ -0,0 +1,48 @@ +# +################################################################### +# ER PPC Audio Script +################################################################### +# + +[macro] +LaserFireResource=LaserAFire01 +LaserFirePitchOffset=-200 +LaserFireComponent=PPCFireComponent +LaserFireIndex=LaserAFireIndex +LaserFireResourceSelect=PPCFireResourceSelect +LaserFireSampleAndHold=PPCFireSampleAndHold +# +LaserSustainResource=LaserASustain01 +LaserSustainComponent=PPCSustainComponent +LaserSustainIndex=LaserASustainIndex +LaserSustainResourceSelect=PPCSustainResourceSelect +LaserSustainSampleAndHold=PPCSustainSampleAndHold +# +LaserReleaseResource=LaserARelease01 +LaserReleaseComponent=PPCReleaseComponent +LaserReleaseIndex=LaserAReleaseIndex +LaserReleaseResourceSelect=PPCReleaseResourceSelect +LaserReleaseSampleAndHold=PPCReleaseSampleAndHold +# +LaserChargeResource=LaserACharge01 +LaserChargeComponent=PPCChargeComponent +LaserChargeIndex=LaserAChargeIndex +LaserChargeResourceSelect=PPCChargeResourceSelect +LaserChargeSampleAndHold=PPCChargeSampleAndHold +# +LaserLoadedResource=LaserLoaded01 +LaserLoadedComponent=PPCLoadedComponent +LaserLoadedSequence=PPCLoadedSequence +# +LaserTriggerDuringLoadResource=TriggerDuringLoad01 +LaserTriggerDuringLoadComponent=PPCTriggerDuringLoadComponent +# +LaserMisfireResource=LaserAMisfire01 +LaserMisfireComponent=PPCMisfireComponent +# +LaserSeekLevelResource=BasicBeep02 +LaserSeekLevelComponent=PPCSeekLevelComponent + +[include] +file=audio\lsrcmp.scp + diff --git a/CONTENT/BT3025/AUDIO/EPPCMPE.SCP b/CONTENT/BT3025/AUDIO/EPPCMPE.SCP new file mode 100644 index 0000000..c2d8c10 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/EPPCMPE.SCP @@ -0,0 +1,14 @@ +# +################################################################### +# ER PPC External Audio Script +################################################################### +# + +[macro] +LaserSustainResource=LaserASustain01 +LaserSustainVolume=LaserExternalSustainVolume +LaserPitchOffset=-100 +LaserSustainComponent=ERPPCExternalSustainComponent + +[include] +file=audio\lsrcmpe.scp diff --git a/CONTENT/BT3025/AUDIO/EPPTRG.SCP b/CONTENT/BT3025/AUDIO/EPPTRG.SCP new file mode 100644 index 0000000..042ba9c --- /dev/null +++ b/CONTENT/BT3025/AUDIO/EPPTRG.SCP @@ -0,0 +1,12 @@ +# +################################################################### +# PPC Internal Audio Script +################################################################### +# + +[include] +file=audio\lsrtrg.scp +file=audio\clttrg.scp +file=audio\buttrg.scp +file=audio\dsttrg.scp + diff --git a/CONTENT/BT3025/AUDIO/EPPTRGE.SCP b/CONTENT/BT3025/AUDIO/EPPTRGE.SCP new file mode 100644 index 0000000..86e97c1 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/EPPTRGE.SCP @@ -0,0 +1,9 @@ +# +################################################################### +# PPC External Audio Script +################################################################### +# + +[include] +file=audio\lsrtrge.scp + diff --git a/CONTENT/BT3025/AUDIO/ERLCMP.SCP b/CONTENT/BT3025/AUDIO/ERLCMP.SCP new file mode 100644 index 0000000..91db4fb --- /dev/null +++ b/CONTENT/BT3025/AUDIO/ERLCMP.SCP @@ -0,0 +1,48 @@ +# +################################################################### +# Extended Range Large Laser Audio Script +################################################################### +# + +[macro] +LaserFireResource=LaserCFire01 +LaserFirePitchOffset=-200 +LaserFireComponent=ERLLaserFireComponent +LaserFireIndex=LaserCFireIndex +LaserFireResourceSelect=ERLLaserFireResourceSelect +LaserFireSampleAndHold=ERLLaserFireSampleAndHold +# +LaserSustainResource=LaserCSustain01 +LaserSustainComponent=ERLLaserSustainComponent +LaserSustainIndex=LaserCSustainIndex +LaserSustainResourceSelect=ERLLaserSustainResourceSelect +LaserSustainSampleAndHold=ERLLaserSustainSampleAndHold +# +LaserReleaseResource=LaserARelease01 +LaserReleaseComponent=ERLLaserReleaseComponent +LaserReleaseIndex=LaserAReleaseIndex +LaserReleaseResourceSelect=ERLLaserReleaseResourceSelect +LaserReleaseSampleAndHold=ERLLaserReleaseSampleAndHold +# +LaserChargeResource=LaserACharge01 +LaserChargeComponent=ERLLaserChargeComponent +LaserChargeIndex=LaserAChargeIndex +LaserChargeResourceSelect=ERLLaserChargeResourceSelect +LaserChargeSampleAndHold=ERLLaserChargeSampleAndHold +# +LaserLoadedResource=LaserLoaded01 +LaserLoadedComponent=ERLLaserLoadedComponent +LaserLoadedSequence=ERLLaserLoadedSequence +# +LaserTriggerDuringLoadResource=TriggerDuringLoad01 +LaserTriggerDuringLoadComponent=ERLLaserTriggerDuringLoadComponent +# +LaserMisfireResource=LaserAMisfire01 +LaserMisfireComponent=ERLLaserMisfireComponent +# +LaserSeekLevelResource=BasicBeep02 +LaserSeekLevelComponent=ERLLaserSeekLevelComponent + +[include] +file=audio\lsrcmp.scp + diff --git a/CONTENT/BT3025/AUDIO/ERLCMPE.SCP b/CONTENT/BT3025/AUDIO/ERLCMPE.SCP new file mode 100644 index 0000000..1765e35 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/ERLCMPE.SCP @@ -0,0 +1,14 @@ +# +################################################################### +# ER Large Laser External Audio Script +################################################################### +# + +[macro] +LaserSustainResource=LaserCSustainExt01 +LaserSustainVolume=LaserExternalSustainVolume +LaserPitchOffset=-200 +LaserSustainComponent=ERLLaserExternalSustainComponent + +[include] +file=audio\lsrcmpe.scp diff --git a/CONTENT/BT3025/AUDIO/ERLTRG.SCP b/CONTENT/BT3025/AUDIO/ERLTRG.SCP new file mode 100644 index 0000000..251ed5b --- /dev/null +++ b/CONTENT/BT3025/AUDIO/ERLTRG.SCP @@ -0,0 +1,12 @@ +# +################################################################### +# ER Large Laser Audio Script +################################################################### +# + +[include] +file=audio\lsrtrg.scp +file=audio\clttrg.scp +file=audio\buttrg.scp +file=audio\dsttrg.scp + diff --git a/CONTENT/BT3025/AUDIO/ERLTRGE.SCP b/CONTENT/BT3025/AUDIO/ERLTRGE.SCP new file mode 100644 index 0000000..ab9013c --- /dev/null +++ b/CONTENT/BT3025/AUDIO/ERLTRGE.SCP @@ -0,0 +1,8 @@ +# +################################################################### +# ER Laser External Triggers +################################################################### +# + +[include] +file=audio\lsrtrge.scp diff --git a/CONTENT/BT3025/AUDIO/ERMCMP.SCP b/CONTENT/BT3025/AUDIO/ERMCMP.SCP new file mode 100644 index 0000000..524270d --- /dev/null +++ b/CONTENT/BT3025/AUDIO/ERMCMP.SCP @@ -0,0 +1,49 @@ +# +################################################################### +# Extended Range Medium Laser Audio Script +################################################################### +# + +[macro] +LaserFireResource=LaserCFire01 +LaserFirePitchOffset=0 +LaserFireComponent=ERMLaserFireComponent +LaserFireIndex=LaserCFireIndex +LaserFireResourceSelect=ERMLaserFireResourceSelect +LaserFireSampleAndHold=ERMLaserFireSampleAndHold +# +LaserSustainResource=LaserCSustain01 +LaserSustainComponent=ERMLaserSustainComponent +LaserSustainIndex=LaserCSustainIndex +LaserSustainResourceSelect=ERMLaserSustainResourceSelect +LaserSustainSampleAndHold=ERMLaserSustainSampleAndHold +# +LaserReleaseResource=LaserARelease01 +LaserReleaseComponent=ERMLaserReleaseComponent +LaserReleaseIndex=LaserAReleaseIndex +LaserReleaseResourceSelect=ERMLaserReleaseResourceSelect +LaserReleaseSampleAndHold=ERMLaserReleaseSampleAndHold +# +LaserChargeResource=LaserACharge01 +LaserChargeComponent=ERMLaserChargeComponent +LaserChargeIndex=LaserAChargeIndex +LaserChargeResourceSelect=ERMLaserChargeResourceSelect +LaserChargeSampleAndHold=ERMLaserChargeSampleAndHold +# +LaserLoadedResource=LaserLoaded01 +LaserLoadedComponent=ERMLaserLoadedComponent +LaserLoadedSequence=ERMLaserLoadedSequence +# +LaserTriggerDuringLoadResource=TriggerDuringLoad01 +LaserTriggerDuringLoadComponent=ERMLaserTriggerDuringLoadComponent +# +LaserMisfireResource=LaserAMisfire01 +LaserMisfireComponent=ERMLaserMisfireComponent +# +LaserSeekLevelResource=BasicBeep02 +LaserSeekLevelComponent=ERMLaserSeekLevelComponent + +[include] +file=audio\lsrcmp.scp + + diff --git a/CONTENT/BT3025/AUDIO/ERMCMPE.SCP b/CONTENT/BT3025/AUDIO/ERMCMPE.SCP new file mode 100644 index 0000000..07971b6 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/ERMCMPE.SCP @@ -0,0 +1,14 @@ +# +################################################################### +# ER Medium Laser External Audio Script +################################################################### +# + +[macro] +LaserSustainResource=LaserCSustainExt01 +LaserSustainVolume=LaserExternalSustainVolume +LaserPitchOffset=0 +LaserSustainComponent=ERMLaserExternalSustainComponent + +[include] +file=audio\lsrcmpe.scp diff --git a/CONTENT/BT3025/AUDIO/ERMTRG.SCP b/CONTENT/BT3025/AUDIO/ERMTRG.SCP new file mode 100644 index 0000000..9b2edc6 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/ERMTRG.SCP @@ -0,0 +1,12 @@ +# +################################################################### +# ER Medium Laser Audio Script +################################################################### +# + +[include] +file=audio\lsrtrg.scp +file=audio\clttrg.scp +file=audio\buttrg.scp +file=audio\dsttrg.scp + diff --git a/CONTENT/BT3025/AUDIO/ERMTRGE.SCP b/CONTENT/BT3025/AUDIO/ERMTRGE.SCP new file mode 100644 index 0000000..ab9013c --- /dev/null +++ b/CONTENT/BT3025/AUDIO/ERMTRGE.SCP @@ -0,0 +1,8 @@ +# +################################################################### +# ER Laser External Triggers +################################################################### +# + +[include] +file=audio\lsrtrge.scp diff --git a/CONTENT/BT3025/AUDIO/ERSCMP.SCP b/CONTENT/BT3025/AUDIO/ERSCMP.SCP new file mode 100644 index 0000000..ab13ade --- /dev/null +++ b/CONTENT/BT3025/AUDIO/ERSCMP.SCP @@ -0,0 +1,48 @@ +# +################################################################### +# Extended Range Small Laser Audio Script +################################################################### +# + +[macro] +LaserFireResource=LaserCFire01 +LaserFirePitchOffset=200 +LaserFireComponent=ERSLaserFireComponent +LaserFireIndex=LaserCFireIndex +LaserFireResourceSelect=ERSLaserFireResourceSelect +LaserFireSampleAndHold=ERSLaserFireSampleAndHold +# +LaserSustainResource=LaserCSustain01 +LaserSustainComponent=ERSLaserSustainComponent +LaserSustainIndex=LaserCSustainIndex +LaserSustainResourceSelect=ERSLaserSustainResourceSelect +LaserSustainSampleAndHold=ERSLaserSustainSampleAndHold +# +LaserReleaseResource=LaserARelease01 +LaserReleaseComponent=ERSLaserReleaseComponent +LaserReleaseIndex=LaserAReleaseIndex +LaserReleaseResourceSelect=ERSLaserReleaseResourceSelect +LaserReleaseSampleAndHold=ERSLaserReleaseSampleAndHold +# +LaserChargeResource=LaserACharge01 +LaserChargeComponent=ERSLaserChargeComponent +LaserChargeIndex=LaserAChargeIndex +LaserChargeResourceSelect=ERSLaserChargeResourceSelect +LaserChargeSampleAndHold=ERSLaserChargeSampleAndHold +# +LaserLoadedComponent=ERSLaserLoadedComponent +LaserLoadedSequence=ERSLaserLoadedSequence +# +LaserTriggerDuringLoadResource=TriggerDuringLoad01 +LaserTriggerDuringLoadComponent=ERSLaserTriggerDuringLoadComponent +# +LaserMisfireResource=LaserAMisfire01 +LaserMisfireComponent=ERSLaserMisfireComponent +# +LaserSeekLevelResource=BasicBeep02 +LaserSeekLevelComponent=ERSLaserSeekLevelComponent + +[include] +file=audio\lsrcmp.scp + + diff --git a/CONTENT/BT3025/AUDIO/ERSCMPE.SCP b/CONTENT/BT3025/AUDIO/ERSCMPE.SCP new file mode 100644 index 0000000..29494ed --- /dev/null +++ b/CONTENT/BT3025/AUDIO/ERSCMPE.SCP @@ -0,0 +1,14 @@ +# +################################################################### +# ER Small Laser External Audio Script +################################################################### +# + +[macro] +LaserSustainResource=LaserCSustainExt01 +LaserSustainVolume=LaserExternalSustainVolume +LaserPitchOffset=200 +LaserSustainComponent=ERSLaserExternalSustainComponent + +[include] +file=audio\lsrcmpe.scp diff --git a/CONTENT/BT3025/AUDIO/ERSTRG.SCP b/CONTENT/BT3025/AUDIO/ERSTRG.SCP new file mode 100644 index 0000000..3ac1265 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/ERSTRG.SCP @@ -0,0 +1,12 @@ +# +################################################################### +# ER Small Laser Audio Script +################################################################### +# + +[include] +file=audio\lsrtrg.scp +file=audio\clttrg.scp +file=audio\buttrg.scp +file=audio\dsttrg.scp + diff --git a/CONTENT/BT3025/AUDIO/ERSTRGE.SCP b/CONTENT/BT3025/AUDIO/ERSTRGE.SCP new file mode 100644 index 0000000..ab9013c --- /dev/null +++ b/CONTENT/BT3025/AUDIO/ERSTRGE.SCP @@ -0,0 +1,8 @@ +# +################################################################### +# ER Laser External Triggers +################################################################### +# + +[include] +file=audio\lsrtrge.scp diff --git a/CONTENT/BT3025/AUDIO/FIND.TXT b/CONTENT/BT3025/AUDIO/FIND.TXT new file mode 100644 index 0000000..e69de29 diff --git a/CONTENT/BT3025/AUDIO/FIREXT.SCP b/CONTENT/BT3025/AUDIO/FIREXT.SCP new file mode 100644 index 0000000..ade38d8 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/FIREXT.SCP @@ -0,0 +1,43 @@ +# +# External Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchext.scp + +# +# LLaser component +# +[include] +file=audio\glrcmpe.scp + +# LLaser watcher +[macro] +MechSubsystem=LLaser +[include] +file=audio\glrtrge.scp + +# ERMLaser_1 watcher +[macro] +MechSubsystem=ERMLaser_1 +[include] +file=audio\glrtrge.scp + +# ERMLaser_2 watcher +[macro] +MechSubsystem=ERMLaser_2 +[include] +file=audio\glrtrge.scp + +# ERSLaser_1 watcher +[macro] +MechSubsystem=ERSLaser_1 +[include] +file=audio\glrtrge.scp + +# ERSLaser_2 watcher +[macro] +MechSubsystem=ERSLaser_2 +[include] +file=audio\glrtrge.scp + diff --git a/CONTENT/BT3025/AUDIO/FIRINT.SCP b/CONTENT/BT3025/AUDIO/FIRINT.SCP new file mode 100644 index 0000000..33562db --- /dev/null +++ b/CONTENT/BT3025/AUDIO/FIRINT.SCP @@ -0,0 +1,79 @@ +# +# Internal Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchint.scp + +# +# LLaser component +# +[include] +file=audio\llrcmp.scp + +# LLaser watcher +[macro] +MechSubsystem=LLaser +[include] +file=audio\llrtrg.scp + +# +# ERMLaser_1 component +# +[include] +file=audio\ermcmp.scp + +# ERMLaser_1 watcher +[macro] +MechSubsystem=ERMLaser_1 +[include] +file=audio\ermtrg.scp + +# ERMLaser_2 watcher +[macro] +MechSubsystem=ERMLaser_2 +[include] +file=audio\ermtrg.scp + +# +# ERSLaser_1 component +# +[include] +file=audio\erscmp.scp + +# ERSLaser_1 watcher +[macro] +MechSubsystem=ERSLaser_1 +[include] +file=audio\erstrg.scp + +# ERSLaser_2 watcher +[macro] +MechSubsystem=ERSLaser_2 +[include] +file=audio\erstrg.scp + +# +# AmmoBinSTRK4 component +# +[include] +file=audio\abncmp.scp + +# AmmoBinSTRK4 watcher +[macro] +MechSubsystem=AmmoBinSTRK4 +[include] +file=audio\abntrg.scp + +# +# STRK4 component +# +[include] +file=audio\srmcmp.scp + +# STRK4 watcher +[macro] +MechSubsystem=STRK4 +[include] +file=audio\srmtrg.scp + diff --git a/CONTENT/BT3025/AUDIO/GENCMP.SCP b/CONTENT/BT3025/AUDIO/GENCMP.SCP new file mode 100644 index 0000000..f3da8dd --- /dev/null +++ b/CONTENT/BT3025/AUDIO/GENCMP.SCP @@ -0,0 +1,61 @@ +# +################################################################### +# Generator Audio Script +################################################################### +# + +# +################################################################### +# GeneratorOn component +################################################################### +# + +[DirectPatchSource] +location=OriginLocation +resource=BasicBeep01 +position=FrontDirectPatchPosition +priority=3 +mix_presence=0 +volume_mix_level=GeneratorOnVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=False +use_attack_time_scale=False +has_compression_curve=False +compression_duration=0.0 +name=GeneratorOnComponent + +# +################################################################### +# GeneratorOutWarning component +################################################################### +# + +[DirectPatchSource] +location=OriginLocation +resource=Warnings01 +position=FrontDirectPatchPosition +priority=3 +mix_presence=2 +volume_mix_level=WarningVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=False +use_attack_time_scale=False +has_compression_curve=False +compression_duration=0.0 +name=GeneratorOutWarningComponent + +#------------------------------------------------------------------ + +[AudioControlSequence] +audio_component=GeneratorOutWarningComponent +tempo=160 +midi_file=audio\genwrn02.mid +is_looped=False +dump_value=False +name=GeneratorOutWarningSequence + +[AudioIdleWatcher] +audio_component=GeneratorOutWarningSequence + diff --git a/CONTENT/BT3025/AUDIO/GENTRG.SCP b/CONTENT/BT3025/AUDIO/GENTRG.SCP new file mode 100644 index 0000000..143e7af --- /dev/null +++ b/CONTENT/BT3025/AUDIO/GENTRG.SCP @@ -0,0 +1,65 @@ +# +################################################################### +# Generator Audio Script +################################################################### +# + +# +################################################################### +# Includes +################################################################### +# +[include] +file=audio\clttrg.scp + +# +################################################################### +# GeneratorOn component +################################################################### +# + +[AudioLogicalTrigger] +subsystem=MechSubsystem +attribute=GeneratorOn +audio_component=GeneratorOnComponent +attribute_match_value=True +control_ID=StartAudioControlID +control_value=0.5 +dump_value=False + +[AudioLogicalTrigger] +subsystem=MechSubsystem +attribute=GeneratorOn +audio_component=GeneratorOnComponent +attribute_match_value=False +control_ID=StartAudioControlID +control_value=0.5 +dump_value=False + +# +################################################################### +# GeneratorOutWarning component +################################################################### +# + +[AudioStateTrigger] +subsystem=MechSubsystem +attribute=GeneratorState +audio_component=GeneratorOutWarningSequence +trigger_state=Generator::Off +inverse_trigger=False +control_ID=StartAudioControlID +control_value=0.0 +dump_value=False + +[AudioStateTrigger] +subsystem=MechSubsystem +attribute=GeneratorState +audio_component=GeneratorOutWarningSequence +trigger_state=Generator::Overheated +inverse_trigger=True +control_ID=StartAudioControlID +control_value=0.0 +dump_value=False + + diff --git a/CONTENT/BT3025/AUDIO/GENWRN01.MID b/CONTENT/BT3025/AUDIO/GENWRN01.MID new file mode 100644 index 0000000..eb7ea95 Binary files /dev/null and b/CONTENT/BT3025/AUDIO/GENWRN01.MID differ diff --git a/CONTENT/BT3025/AUDIO/GENWRN02.MID b/CONTENT/BT3025/AUDIO/GENWRN02.MID new file mode 100644 index 0000000..c491531 Binary files /dev/null and b/CONTENT/BT3025/AUDIO/GENWRN02.MID differ diff --git a/CONTENT/BT3025/AUDIO/GLRCMPE.SCP b/CONTENT/BT3025/AUDIO/GLRCMPE.SCP new file mode 100644 index 0000000..603e5eb --- /dev/null +++ b/CONTENT/BT3025/AUDIO/GLRCMPE.SCP @@ -0,0 +1,14 @@ +# +################################################################### +# Generic Laser External Audio Script +################################################################### +# + +[macro] +LaserSustainResource=LaserCSustainExt04 +LaserSustainVolume=LaserExternalSustainVolume +LaserPitchOffset=-200 +LaserSustainComponent=GenericLaserExternalSustainComponent + +[include] +file=audio\lsrcmpe.scp diff --git a/CONTENT/BT3025/AUDIO/GLRTRGE.SCP b/CONTENT/BT3025/AUDIO/GLRTRGE.SCP new file mode 100644 index 0000000..ab9013c --- /dev/null +++ b/CONTENT/BT3025/AUDIO/GLRTRGE.SCP @@ -0,0 +1,8 @@ +# +################################################################### +# ER Laser External Triggers +################################################################### +# + +[include] +file=audio\lsrtrge.scp diff --git a/CONTENT/BT3025/AUDIO/HETEXT.SCP b/CONTENT/BT3025/AUDIO/HETEXT.SCP new file mode 100644 index 0000000..f2ec50f --- /dev/null +++ b/CONTENT/BT3025/AUDIO/HETEXT.SCP @@ -0,0 +1,39 @@ +# +################################################################### +# Heat Management External Audio Script +################################################################### +# + +# +################################################################### +# CoolantDump component +################################################################### +# + +[Dynamic3DPatchSource] +location=OriginLocation +resource=CoolantDumpExt01 +priority=0 +mix_presence=0 +volume_mix_level=CoolantDumpExternalVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=False +use_attack_time_scale=False +has_compression_curve=False +compression_duration=0.0 +name=CoolantDumpComponent + +#------------------------------------------------------------------ + +[AudioStateTrigger] +subsystem=Reservoir +attribute=ReservoirState +audio_component=CoolantDumpComponent +trigger_state=Reservoir::InjectingState +inverse_trigger=False +control_ID=StartAudioControlID +control_value=4.0 +dump_value=False + + diff --git a/CONTENT/BT3025/AUDIO/HETINT.SCP b/CONTENT/BT3025/AUDIO/HETINT.SCP new file mode 100644 index 0000000..927e68f --- /dev/null +++ b/CONTENT/BT3025/AUDIO/HETINT.SCP @@ -0,0 +1,85 @@ +# +################################################################### +# Heat Management Audio Script +################################################################### +# + +# +################################################################### +# CoolantDump component +################################################################### +# + +[DirectPatchSource] +location=OriginLocation +resource=CoolantDump05 +position=FrontDirectPatchPosition +priority=3 +mix_presence=0 +volume_mix_level=CoolantDumpVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=False +use_attack_time_scale=False +has_compression_curve=False +compression_duration=0.0 +name=CoolantDumpComponent + +#------------------------------------------------------------------ + +[AudioScalarScale] +subsystem=HeatSink +attribute=CurrentTemperature +audio_component=CoolantDumpComponent +attribute_value_boundary1=300 +attribute_value_boundary2=1200 +control_ID=PitchAudioControlID +control_value_boundary1=-100 +control_value_boundary2=100 +exponent=3.0 +dump_value=False + +[AudioStateTrigger] +subsystem=Reservoir +attribute=ReservoirState +audio_component=CoolantDumpComponent +trigger_state=Reservoir::InjectingState +inverse_trigger=False +control_ID=StartAudioControlID +control_value=6.0 +dump_value=False + +# +################################################################### +# HeatManagement component +################################################################### +# + +[DirectPatchSource] +location=OriginLocation +resource=BasicClick01 +position=FrontDirectPatchPosition +priority=3 +mix_presence=0 +volume_mix_level=HeatManagementVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=False +use_attack_time_scale=False +has_compression_curve=False +compression_duration=0.0 +name=HeatManagementComponent + +#------------------------------------------------------------------ + +[AudioControlsButtonTrigger] +subsystem=Entity +attribute=ReduceButton +audio_component=HeatManagementComponent +attribute_value_threshold=0.0 +control_ID_on=StartAudioControlID +control_ID_off=NullAudioControlID +control_value_on=0.5 +control_value_off=0.0 +inverse_trigger=False +dump_value=False diff --git a/CONTENT/BT3025/AUDIO/ICOM.CFG b/CONTENT/BT3025/AUDIO/ICOM.CFG new file mode 100644 index 0000000..3b00802 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/ICOM.CFG @@ -0,0 +1,15 @@ +/MA:229;0 +/VO:0;0 +/MI:229;0 +/CD:0;0 +/LI:0;0 +/MIC:0 +/SP:0 +/TR:114;0 +/BA:114;0 +/IPL:MIC- CDR- CDL- LIR- LIL+ MIR- MIL- +/IPR:MIC- CDR- CDL- LIR+ LIL- MIR- MIL- +/OPS:MIC- CDR- CDL- LIR+ LIL+ +/AGC:- +/IPG:1,1 +/OPG:1,1 diff --git a/CONTENT/BT3025/AUDIO/INCARM01.MID b/CONTENT/BT3025/AUDIO/INCARM01.MID new file mode 100644 index 0000000..0ebaa2a Binary files /dev/null and b/CONTENT/BT3025/AUDIO/INCARM01.MID differ diff --git a/CONTENT/BT3025/AUDIO/JAKEXT.SCP b/CONTENT/BT3025/AUDIO/JAKEXT.SCP new file mode 100644 index 0000000..c99cdb2 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/JAKEXT.SCP @@ -0,0 +1,49 @@ +# +# External Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchext.scp + +# +# GAUSS_1 component +# +[include] +file=audio\acncmpe.scp + +# GAUSS_1 watcher +[macro] +MechSubsystem=GAUSS_1 +[include] +file=audio\acntrge.scp + +# +# LLaser component +# +[include] +file=audio\glrcmpe.scp + +# LLaser watcher +[macro] +MechSubsystem=LLaser +[include] +file=audio\glrtrge.scp + +# ERSLaser_1 watcher +[macro] +MechSubsystem=ERSLaser_1 +[include] +file=audio\glrtrge.scp + +# ERSLaser_2 watcher +[macro] +MechSubsystem=ERSLaser_2 +[include] +file=audio\glrtrge.scp + +# ERSLaser_3 watcher +[macro] +MechSubsystem=ERSLaser_3 +[include] +file=audio\glrtrge.scp + diff --git a/CONTENT/BT3025/AUDIO/JAKINT.SCP b/CONTENT/BT3025/AUDIO/JAKINT.SCP new file mode 100644 index 0000000..bde7649 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/JAKINT.SCP @@ -0,0 +1,97 @@ +# +# Internal Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchint.scp + +# +# AmmoBinGAUSS_1 component +# +[include] +file=audio\abncmp.scp + +# AmmoBinGAUSS_1 watcher +[macro] +MechSubsystem=AmmoBinGAUSS_1 +[include] +file=audio\abntrg.scp + +# +# GAUSS_1 component +# +[include] +file=audio\saccmp.scp + +# GAUSS_1 watcher +[macro] +MechSubsystem=GAUSS_1 +[include] +file=audio\sactrg.scp + +# +# LLaser component +# +[include] +file=audio\llrcmp.scp + +# LLaser watcher +[macro] +MechSubsystem=LLaser +[include] +file=audio\llrtrg.scp + +# +# ERSLaser_1 component +# +[include] +file=audio\erscmp.scp + +# ERSLaser_1 watcher +[macro] +MechSubsystem=ERSLaser_1 +[include] +file=audio\erstrg.scp + +# ERSLaser_2 watcher +[macro] +MechSubsystem=ERSLaser_2 +[include] +file=audio\erstrg.scp + +# ERSLaser_3 watcher +[macro] +MechSubsystem=ERSLaser_3 +[include] +file=audio\erstrg.scp + +# AmmoBinLRM15_1 watcher +[macro] +MechSubsystem=AmmoBinLRM15_1 +[include] +file=audio\abntrg.scp + +# +# LRM15_1 component +# +[include] +file=audio\lrmcmp.scp + +# LRM15_1 watcher +[macro] +MechSubsystem=LRM15_1 +[include] +file=audio\lrmtrg.scp + +# AmmoBinLRM15_2 watcher +[macro] +MechSubsystem=AmmoBinLRM15_2 +[include] +file=audio\abntrg.scp + +# LRM15_2 watcher +[macro] +MechSubsystem=LRM15_2 +[include] +file=audio\lrmtrg.scp + diff --git a/CONTENT/BT3025/AUDIO/LACCMP.SCP b/CONTENT/BT3025/AUDIO/LACCMP.SCP new file mode 100644 index 0000000..cc36293 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/LACCMP.SCP @@ -0,0 +1,38 @@ +# +################################################################### +# Large AutoCannon Audio Script +################################################################### +# + +[macro] +ProjectileFireResource=AutoCannonAction01 +ProjectileFireVolume=LargeAutoCannonFireVolume +ProjectileFirePitchOffset=-200 +ProjectileFireComponent=LargeAutoCannonFireComponent +# +ProjectileLaunchResource=AutoCannonFire01 +ProjectileLaunchVolume=LargeAutoCannonLaunchVolume +ProjectileLaunchPitchOffset=-200 +ProjectileLaunchComponent=LargeAutoCannonLaunchComponent +# +ProjectileLoadingResource=AutoCannonLoading01 +ProjectileLoadingComponent=LargeAutoCannonLoadingComponent +# +ProjectileLoadedResource=AutoCannonLoaded01 +ProjectileLoadedComponent=LargeAutoCannonLoadedComponent +ProjectileLoadedSequence=LargeAutoCannonLoadedSequence +# +ProjectileTriggerDuringLoadResource=TriggerDuringLoad01 +ProjectileTriggerDuringLoadComponent=LargeAutoCannonTriggerDuringLoadComponent +# +ProjectileMisfireResource=AutoCannonMisfire01 +ProjectileMisfireComponent=LargeAutoCannonMisfireComponent +ProjectileMisfireSequence=LargeAutoCannonMisfireSequence +# +ProjectileJamResource=AutoCannonJam01 +ProjectileJamComponent=LargeAutoCannonJamComponent +ProjectileJamSequence=LargeAutoCannonJamSequence + +[include] +file=audio\prjcmp.scp + diff --git a/CONTENT/BT3025/AUDIO/LACTRG.SCP b/CONTENT/BT3025/AUDIO/LACTRG.SCP new file mode 100644 index 0000000..98186fd --- /dev/null +++ b/CONTENT/BT3025/AUDIO/LACTRG.SCP @@ -0,0 +1,12 @@ +# +################################################################### +# Mech AutoCannon Internal Audio Script +################################################################### +# + +[include] +file=audio\prjtrg.scp +file=audio\clttrg.scp +file=audio\buttrg.scp +file=audio\dsttrg.scp + diff --git a/CONTENT/BT3025/AUDIO/LEGWRN01.MID b/CONTENT/BT3025/AUDIO/LEGWRN01.MID new file mode 100644 index 0000000..d8b1ec8 Binary files /dev/null and b/CONTENT/BT3025/AUDIO/LEGWRN01.MID differ diff --git a/CONTENT/BT3025/AUDIO/LLRCMP.SCP b/CONTENT/BT3025/AUDIO/LLRCMP.SCP new file mode 100644 index 0000000..3a5d7cc --- /dev/null +++ b/CONTENT/BT3025/AUDIO/LLRCMP.SCP @@ -0,0 +1,49 @@ +# +################################################################### +# Large Laser Audio Script +################################################################### +# + +[macro] +LaserFireResource=LaserBFire01 +LaserFirePitchOffset=-200 +LaserFireComponent=LargeLaserFireComponent +LaserFireIndex=LaserBFireIndex +LaserFireResourceSelect=LargeLaserFireResourceSelect +LaserFireSampleAndHold=LargeLaserFireSampleAndHold +# +LaserSustainResource=LaserBSustain01 +LaserSustainComponent=LargeLaserSustainComponent +LaserSustainIndex=LaserBSustainIndex +LaserSustainResourceSelect=LargeLaserSustainResourceSelect +LaserSustainSampleAndHold=LargeLaserSustainSampleAndHold +# +LaserReleaseResource=LaserARelease01 +LaserReleaseComponent=LargeLaserReleaseComponent +LaserReleaseIndex=LaserAReleaseIndex +LaserReleaseResourceSelect=LargeLaserReleaseResourceSelect +LaserReleaseSampleAndHold=LargeLaserReleaseSampleAndHold +# +LaserChargeResource=LaserACharge01 +LaserChargeComponent=LargeLaserChargeComponent +LaserChargeIndex=LaserAChargeIndex +LaserChargeResourceSelect=LargeLaserChargeResourceSelect +LaserChargeSampleAndHold=LargeLaserChargeSampleAndHold +# +LaserLoadedResource=LaserLoaded01 +LaserLoadedComponent=LargeLaserLoadedComponent +LaserLoadedSequence=LargeLaserLoadedSequence +# +LaserTriggerDuringLoadResource=TriggerDuringLoad01 +LaserTriggerDuringLoadComponent=LargeLaserTriggerDuringLoadComponent +# +LaserMisfireResource=LaserAMisfire01 +LaserMisfireComponent=LargeLaserMisfireComponent +# +LaserSeekLevelResource=BasicBeep02 +LaserSeekLevelComponent=LargeLaserSeekLevelComponent + +[include] +file=audio\lsrcmp.scp + + diff --git a/CONTENT/BT3025/AUDIO/LLRCMPE.SCP b/CONTENT/BT3025/AUDIO/LLRCMPE.SCP new file mode 100644 index 0000000..aeea41a --- /dev/null +++ b/CONTENT/BT3025/AUDIO/LLRCMPE.SCP @@ -0,0 +1,14 @@ +# +################################################################### +# Medium Laser External Audio Script +################################################################### +# + +[macro] +LaserSustainResource=LaserBSustainExt01 +LaserSustainVolume=LaserExternalSustainVolume +LaserPitchOffset=-200 +LaserSustainComponent=LargeLaserExternalSustainComponent + +[include] +file=audio\lsrcmpe.scp diff --git a/CONTENT/BT3025/AUDIO/LLRTRG.SCP b/CONTENT/BT3025/AUDIO/LLRTRG.SCP new file mode 100644 index 0000000..8c6971c --- /dev/null +++ b/CONTENT/BT3025/AUDIO/LLRTRG.SCP @@ -0,0 +1,12 @@ +# +################################################################### +# Large Laser Internal Audio Script +################################################################### +# + +[include] +file=audio\lsrtrg.scp +file=audio\clttrg.scp +file=audio\buttrg.scp +file=audio\dsttrg.scp + diff --git a/CONTENT/BT3025/AUDIO/LLRTRGE.SCP b/CONTENT/BT3025/AUDIO/LLRTRGE.SCP new file mode 100644 index 0000000..3b64622 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/LLRTRGE.SCP @@ -0,0 +1,9 @@ +# +################################################################### +# Laser External Triggers +################################################################### +# + +[include] +file=audio\lsrtrge.scp + diff --git a/CONTENT/BT3025/AUDIO/LO1EXT.SCP b/CONTENT/BT3025/AUDIO/LO1EXT.SCP new file mode 100644 index 0000000..1ced3f0 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/LO1EXT.SCP @@ -0,0 +1,67 @@ +# +# External Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchext.scp + +# +# AFC1 component +# +[include] +file=audio\acncmpe.scp + +# AFC1 watcher +[macro] +MechSubsystem=AFC1 +[include] +file=audio\acntrge.scp + +# AFC2 watcher +[macro] +MechSubsystem=AFC2 +[include] +file=audio\acntrge.scp + +# +# ERMLaser component +# +[include] +file=audio\glrcmpe.scp + +# ERMLaser watcher +[macro] +MechSubsystem=ERMLaser +[include] +file=audio\glrtrge.scp + +# ERSLaser1 watcher +[macro] +MechSubsystem=ERSLaser1 +[include] +file=audio\glrtrge.scp + +# ERSLaser2 watcher +[macro] +MechSubsystem=ERSLaser2 +[include] +file=audio\glrtrge.scp + +# ERSLaser3 watcher +[macro] +MechSubsystem=ERSLaser3 +[include] +file=audio\glrtrge.scp + +# MLaser1 watcher +[macro] +MechSubsystem=MLaser1 +[include] +file=audio\glrtrge.scp + +# MLaser2 watcher +[macro] +MechSubsystem=MLaser2 +[include] +file=audio\glrtrge.scp + diff --git a/CONTENT/BT3025/AUDIO/LO1INT.SCP b/CONTENT/BT3025/AUDIO/LO1INT.SCP new file mode 100644 index 0000000..1239b16 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/LO1INT.SCP @@ -0,0 +1,121 @@ +# +# Internal Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchint.scp + +# +# AmmoBinAFC1 component +# +[include] +file=audio\abncmp.scp + +# AmmoBinAFC1 watcher +[macro] +MechSubsystem=AmmoBinAFC1 +[include] +file=audio\abntrg.scp + +# +# AFC1 component +# +[include] +file=audio\laccmp.scp + +# AFC1 watcher +[macro] +MechSubsystem=AFC1 +[include] +file=audio\lactrg.scp + +# AmmoBinAFC2 watcher +[macro] +MechSubsystem=AmmoBinAFC2 +[include] +file=audio\abntrg.scp + +# +# AFC2 component +# +[include] +file=audio\maccmp.scp + +# AFC2 watcher +[macro] +MechSubsystem=AFC2 +[include] +file=audio\mactrg.scp + +# +# ERMLaser component +# +[include] +file=audio\ermcmp.scp + +# ERMLaser watcher +[macro] +MechSubsystem=ERMLaser +[include] +file=audio\ermtrg.scp + +# +# ERSLaser1 component +# +[include] +file=audio\erscmp.scp + +# ERSLaser1 watcher +[macro] +MechSubsystem=ERSLaser1 +[include] +file=audio\erstrg.scp + +# ERSLaser2 watcher +[macro] +MechSubsystem=ERSLaser2 +[include] +file=audio\erstrg.scp + +# ERSLaser3 watcher +[macro] +MechSubsystem=ERSLaser3 +[include] +file=audio\erstrg.scp + +# +# MLaser1 component +# +[include] +file=audio\mlrcmp.scp + +# MLaser1 watcher +[macro] +MechSubsystem=MLaser1 +[include] +file=audio\mlrtrg.scp + +# MLaser2 watcher +[macro] +MechSubsystem=MLaser2 +[include] +file=audio\mlrtrg.scp + +# AmmoBinSRM watcher +[macro] +MechSubsystem=AmmoBinSRM +[include] +file=audio\abntrg.scp + +# +# SRM component +# +[include] +file=audio\srmcmp.scp + +# SRM watcher +[macro] +MechSubsystem=SRM +[include] +file=audio\srmtrg.scp + diff --git a/CONTENT/BT3025/AUDIO/LOK1EXT.SCP b/CONTENT/BT3025/AUDIO/LOK1EXT.SCP new file mode 100644 index 0000000..ea11477 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/LOK1EXT.SCP @@ -0,0 +1,61 @@ +# +# External Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchext.scp + +# +# PPC_1 component +# +[include] +file=audio\glrcmpe.scp + +# PPC_1 watcher +[macro] +MechSubsystem=PPC_1 +[include] +file=audio\glrtrge.scp + +# PPC_2 watcher +[macro] +MechSubsystem=PPC_2 +[include] +file=audio\glrtrge.scp + +# LLaser_1 watcher +[macro] +MechSubsystem=LLaser_1 +[include] +file=audio\glrtrge.scp + +# LLaser_2 watcher +[macro] +MechSubsystem=LLaser_2 +[include] +file=audio\glrtrge.scp + +# MLaser_1 watcher +[macro] +MechSubsystem=MLaser_1 +[include] +file=audio\glrtrge.scp + +# MLaser_2 watcher +[macro] +MechSubsystem=MLaser_2 +[include] +file=audio\glrtrge.scp + +# SLaser_1 watcher +[macro] +MechSubsystem=SLaser_1 +[include] +file=audio\glrtrge.scp + +# SLaser_2 watcher +[macro] +MechSubsystem=SLaser_2 +[include] +file=audio\glrtrge.scp + diff --git a/CONTENT/BT3025/AUDIO/LOK1INT.SCP b/CONTENT/BT3025/AUDIO/LOK1INT.SCP new file mode 100644 index 0000000..2728593 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/LOK1INT.SCP @@ -0,0 +1,103 @@ +# +# Internal Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchint.scp + +# +# PPC_1 component +# +[include] +file=audio\ppccmp.scp + +# PPC_1 watcher +[macro] +MechSubsystem=PPC_1 +[include] +file=audio\ppctrg.scp + +# PPC_2 watcher +[macro] +MechSubsystem=PPC_2 +[include] +file=audio\ppctrg.scp + +# +# LLaser_1 component +# +[include] +file=audio\llrcmp.scp + +# LLaser_1 watcher +[macro] +MechSubsystem=LLaser_1 +[include] +file=audio\llrtrg.scp + +# LLaser_2 watcher +[macro] +MechSubsystem=LLaser_2 +[include] +file=audio\llrtrg.scp + +# +# MLaser_1 component +# +[include] +file=audio\mlrcmp.scp + +# MLaser_1 watcher +[macro] +MechSubsystem=MLaser_1 +[include] +file=audio\mlrtrg.scp + +# MLaser_2 watcher +[macro] +MechSubsystem=MLaser_2 +[include] +file=audio\mlrtrg.scp + +# +# SLaser_1 component +# +[include] +file=audio\slrcmp.scp + +# SLaser_1 watcher +[macro] +MechSubsystem=SLaser_1 +[include] +file=audio\slrtrg.scp + +# SLaser_2 watcher +[macro] +MechSubsystem=SLaser_2 +[include] +file=audio\slrtrg.scp + +# +# AmmoBinSRM4 component +# +[include] +file=audio\abncmp.scp + +# AmmoBinSRM4 watcher +[macro] +MechSubsystem=AmmoBinSRM4 +[include] +file=audio\abntrg.scp + +# +# SRM4 component +# +[include] +file=audio\srmcmp.scp + +# SRM4 watcher +[macro] +MechSubsystem=SRM4 +[include] +file=audio\srmtrg.scp + diff --git a/CONTENT/BT3025/AUDIO/LOK2EXT.SCP b/CONTENT/BT3025/AUDIO/LOK2EXT.SCP new file mode 100644 index 0000000..43d63da --- /dev/null +++ b/CONTENT/BT3025/AUDIO/LOK2EXT.SCP @@ -0,0 +1,67 @@ +# +# External Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchext.scp + +# +# PPC component +# +[include] +file=audio\glrcmpe.scp + +# PPC watcher +[macro] +MechSubsystem=PPC +[include] +file=audio\glrtrge.scp + +# +# GAUSS component +# +[include] +file=audio\acncmpe.scp + +# GAUSS watcher +[macro] +MechSubsystem=GAUSS +[include] +file=audio\acntrge.scp + +# AFC25 watcher +[macro] +MechSubsystem=AFC25 +[include] +file=audio\acntrge.scp + +# MLaser_1 watcher +[macro] +MechSubsystem=MLaser_1 +[include] +file=audio\glrtrge.scp + +# MLaser_2 watcher +[macro] +MechSubsystem=MLaser_2 +[include] +file=audio\glrtrge.scp + +# MLaser_3 watcher +[macro] +MechSubsystem=MLaser_3 +[include] +file=audio\glrtrge.scp + +# SLaser_1 watcher +[macro] +MechSubsystem=SLaser_1 +[include] +file=audio\glrtrge.scp + +# SLaser_2 watcher +[macro] +MechSubsystem=SLaser_2 +[include] +file=audio\glrtrge.scp + diff --git a/CONTENT/BT3025/AUDIO/LOK2INT.SCP b/CONTENT/BT3025/AUDIO/LOK2INT.SCP new file mode 100644 index 0000000..3a559e8 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/LOK2INT.SCP @@ -0,0 +1,115 @@ +# +# Internal Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchint.scp + +# +# PPC component +# +[include] +file=audio\ppccmp.scp + +# PPC watcher +[macro] +MechSubsystem=PPC +[include] +file=audio\ppctrg.scp + +# +# AmmoBinGAUSS component +# +[include] +file=audio\abncmp.scp + +# AmmoBinGAUSS watcher +[macro] +MechSubsystem=AmmoBinGAUSS +[include] +file=audio\abntrg.scp + +# +# GAUSS component +# +[include] +file=audio\saccmp.scp + +# GAUSS watcher +[macro] +MechSubsystem=GAUSS +[include] +file=audio\sactrg.scp + +# AmmoBinAFC25 watcher +[macro] +MechSubsystem=AmmoBinAFC25 +[include] +file=audio\abntrg.scp + +# AFC25 watcher +[macro] +MechSubsystem=AFC25 +[include] +file=audio\sactrg.scp + +# +# MLaser_1 component +# +[include] +file=audio\mlrcmp.scp + +# MLaser_1 watcher +[macro] +MechSubsystem=MLaser_1 +[include] +file=audio\mlrtrg.scp + +# MLaser_2 watcher +[macro] +MechSubsystem=MLaser_2 +[include] +file=audio\mlrtrg.scp + +# MLaser_3 watcher +[macro] +MechSubsystem=MLaser_3 +[include] +file=audio\mlrtrg.scp + +# +# SLaser_1 component +# +[include] +file=audio\slrcmp.scp + +# SLaser_1 watcher +[macro] +MechSubsystem=SLaser_1 +[include] +file=audio\slrtrg.scp + +# SLaser_2 watcher +[macro] +MechSubsystem=SLaser_2 +[include] +file=audio\slrtrg.scp + +# AmmoBinSRM4 watcher +[macro] +MechSubsystem=AmmoBinSRM4 +[include] +file=audio\abntrg.scp + +# +# SRM4 component +# +[include] +file=audio\srmcmp.scp + +# SRM4 watcher +[macro] +MechSubsystem=SRM4 +[include] +file=audio\srmtrg.scp + diff --git a/CONTENT/BT3025/AUDIO/LOKEXT.SCP b/CONTENT/BT3025/AUDIO/LOKEXT.SCP new file mode 100644 index 0000000..e2576c5 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/LOKEXT.SCP @@ -0,0 +1,55 @@ +# +# External Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchext.scp + +# +# AFC50_1 component +# +[include] +file=audio\acncmpe.scp + +# AFC50_1 watcher +[macro] +MechSubsystem=AFC50_1 +[include] +file=audio\acntrge.scp + +# AFC50_2 watcher +[macro] +MechSubsystem=AFC50_2 +[include] +file=audio\acntrge.scp + +# +# ERMLaser_1 component +# +[include] +file=audio\glrcmpe.scp + +# ERMLaser_1 watcher +[macro] +MechSubsystem=ERMLaser_1 +[include] +file=audio\glrtrge.scp + +# ERMLaser_2 watcher +[macro] +MechSubsystem=ERMLaser_2 +[include] +file=audio\glrtrge.scp + +# ERSLaser_1 watcher +[macro] +MechSubsystem=ERSLaser_1 +[include] +file=audio\glrtrge.scp + +# ERSLaser_2 watcher +[macro] +MechSubsystem=ERSLaser_2 +[include] +file=audio\glrtrge.scp + diff --git a/CONTENT/BT3025/AUDIO/LOKINT.SCP b/CONTENT/BT3025/AUDIO/LOKINT.SCP new file mode 100644 index 0000000..3741c0a --- /dev/null +++ b/CONTENT/BT3025/AUDIO/LOKINT.SCP @@ -0,0 +1,97 @@ +# +# Internal Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchint.scp + +# +# AmmoBinAFC50_1 component +# +[include] +file=audio\abncmp.scp + +# AmmoBinAFC50_1 watcher +[macro] +MechSubsystem=AmmoBinAFC50_1 +[include] +file=audio\abntrg.scp + +# +# AFC50_1 component +# +[include] +file=audio\maccmp.scp + +# AFC50_1 watcher +[macro] +MechSubsystem=AFC50_1 +[include] +file=audio\mactrg.scp + +# AmmoBinAFC50_2 watcher +[macro] +MechSubsystem=AmmoBinAFC50_2 +[include] +file=audio\abntrg.scp + +# AFC50_2 watcher +[macro] +MechSubsystem=AFC50_2 +[include] +file=audio\mactrg.scp + +# +# ERMLaser_1 component +# +[include] +file=audio\ermcmp.scp + +# ERMLaser_1 watcher +[macro] +MechSubsystem=ERMLaser_1 +[include] +file=audio\ermtrg.scp + +# ERMLaser_2 watcher +[macro] +MechSubsystem=ERMLaser_2 +[include] +file=audio\ermtrg.scp + +# +# ERSLaser_1 component +# +[include] +file=audio\erscmp.scp + +# ERSLaser_1 watcher +[macro] +MechSubsystem=ERSLaser_1 +[include] +file=audio\erstrg.scp + +# ERSLaser_2 watcher +[macro] +MechSubsystem=ERSLaser_2 +[include] +file=audio\erstrg.scp + +# AmmoBinSRM4 watcher +[macro] +MechSubsystem=AmmoBinSRM4 +[include] +file=audio\abntrg.scp + +# +# SRM4 component +# +[include] +file=audio\srmcmp.scp + +# SRM4 watcher +[macro] +MechSubsystem=SRM4 +[include] +file=audio\srmtrg.scp + diff --git a/CONTENT/BT3025/AUDIO/LRMCMP.SCP b/CONTENT/BT3025/AUDIO/LRMCMP.SCP new file mode 100644 index 0000000..7316f1e --- /dev/null +++ b/CONTENT/BT3025/AUDIO/LRMCMP.SCP @@ -0,0 +1,32 @@ +# +################################################################### +# LRM Audio Script +################################################################### +# + +[macro] +MissileFireResource=MissileLaunch01 +MissileFirePitchOffset=-100 +MissileFireComponent=LRMFireComponent +# +MissileLoadingResource=MissileLoading01 +MissileLoadingComponent=LRMLoadingComponent +# +MissileLoadedResource=MissileLoaded01 +MissileLoadedComponent=LRMLoadedComponent +MissileLoadedSequence=LRMLoadedSequence +# +MissileTriggerDuringLoadResource=TriggerDuringLoad01 +MissileTriggerDuringLoadComponent=LRMTriggerDuringLoadComponent +# +MissileMisfireResource=MissileMisfire01 +MissileMisfireComponent=LRMMisfireComponent +MissileMisfireSequence=LRMMisfireSequence +# +MissileJamResource=MissileJam01 +MissileJamComponent=LRMJamComponent +MissileJamSequence=LRMJamSequence + +[include] +file=audio\mslcmp.scp + diff --git a/CONTENT/BT3025/AUDIO/LRMTRG.SCP b/CONTENT/BT3025/AUDIO/LRMTRG.SCP new file mode 100644 index 0000000..4b922d3 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/LRMTRG.SCP @@ -0,0 +1,12 @@ +# +################################################################### +# LRM Internal Audio Script +################################################################### +# + +[include] +file=audio\msltrg.scp +file=audio\clttrg.scp +file=audio\buttrg.scp +file=audio\dsttrg.scp + diff --git a/CONTENT/BT3025/AUDIO/LSRCMPE.SCP b/CONTENT/BT3025/AUDIO/LSRCMPE.SCP new file mode 100644 index 0000000..56aa9c8 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/LSRCMPE.SCP @@ -0,0 +1,26 @@ +# +################################################################### +# Mech Laser External Audio Script +################################################################### +# + +# +################################################################### +# Laser Sustain component +################################################################### +# + +[Dynamic3DPatchSource] +location=OriginLocation +resource=LaserSustainResource +priority=0 +mix_presence=0 +volume_mix_level=LaserSustainVolume +pitch_mix_offset=LaserPitchOffset +brightness_mix_level=1.0 +use_brightness_scale=False +use_attack_time_scale=False +has_compression_curve=False +compression_duration=0.0 +name=LaserSustainComponent + diff --git a/CONTENT/BT3025/AUDIO/LSREXP.SCP b/CONTENT/BT3025/AUDIO/LSREXP.SCP new file mode 100644 index 0000000..6879163 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/LSREXP.SCP @@ -0,0 +1,109 @@ +# +################################################################### +# Laser Explosion Audio Script +################################################################### +# + +[include] +file=audio\macros.scp + +# +################################################################### +# Audio locations +################################################################### +# + +[L4AudioLocation] +location_offset=0.0,0.0,0.0 +clipping_scale=0.75 +name=OriginLocation + +# +################################################################### +# Laser Explosion component +################################################################### +# + +[Dynamic3DPatchSource] +location=OriginLocation +resource=LaserExplosion01 +priority=0 +mix_presence=3 +volume_mix_level=LaserExplosionVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=True +use_attack_time_scale=False +has_compression_curve=True +compression_duration=0.5 +name=LaserExplosionComponent + +#------------------------------------------------------------------ + +# +# resource select +# + +[AudioResourceSelector] +audio_source=LaserExplosionComponent +audio_resource_index=LaserExplosionIndex +control_ID=100 +min_control_value=0.0 +max_control_value=1.0 +dump_value=False +name=LaserExplosionResourceSelect + +# +# sample and hold -> resource select +# + +[AudioSampleAndHold] +audio_component=LaserExplosionResourceSelect +control_ID=100 +sample_duration=99.0 +name=LaserExplosionSampleAndHold + +#------------------------------------------------------------------ + +# +# sample and hold -> pitch +# + +[AudioSampleAndHold] +audio_component=LaserExplosionComponent +control_ID=PitchAudioControlID +sample_duration=99.0 +min_value=-400 +max_value=400 +name=LaserExplosionPitchSampleAndHold + +# +# sample and hold -> filter +# + +[AudioSampleAndHold] +audio_component=LaserExplosionComponent +control_ID=BrightnessAudioControlID +sample_duration=99.0 +min_value=0.9 +max_value=1.0 +name=LaserExplosionBrightnessSampleAndHold + +#------------------------------------------------------------------ + +[AudioControlSplitter] +audio_component=LaserExplosionSampleAndHold +audio_component=LaserExplosionPitchSampleAndHold +audio_component=LaserExplosionBrightnessSampleAndHold +name=LaserExplosionSplitter + +[AudioControlSend] +audio_component=LaserExplosionSplitter +control_ID=StartAudioControlID +control_value=0.0 + +[AudioControlSend] +audio_component=LaserExplosionComponent +control_ID=StartAudioControlID +control_value=4.0 + diff --git a/CONTENT/BT3025/AUDIO/LSRLDD01.MID b/CONTENT/BT3025/AUDIO/LSRLDD01.MID new file mode 100644 index 0000000..d360727 Binary files /dev/null and b/CONTENT/BT3025/AUDIO/LSRLDD01.MID differ diff --git a/CONTENT/BT3025/AUDIO/LSRTRGE.SCP b/CONTENT/BT3025/AUDIO/LSRTRGE.SCP new file mode 100644 index 0000000..6acb055 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/LSRTRGE.SCP @@ -0,0 +1,40 @@ +# +################################################################### +# Laser External Audio Script +################################################################### +# + +# +################################################################### +# Laser Sustain component +################################################################### +# + +[AudioLogicalTrigger] +subsystem=MechSubsystem +attribute=LaserOn +audio_component=LaserSustainComponent +attribute_match_value=True +control_ID=StartAudioControlID +control_value=0.0 +dump_value=False + +[AudioLogicalTrigger] +subsystem=MechSubsystem +attribute=LaserOn +audio_component=LaserSustainComponent +attribute_match_value=False +control_ID=StopAudioControlID +control_value=0.0 +dump_value=False + +[!AudioStateTrigger] +subsystem=MechSubsystem +attribute=WeaponState +audio_component=LaserSustainComponent +trigger_state=MechWeapon::Firing +inverse_trigger=False +control_ID=StartAudioControlID +control_value=1.0 +dump_value=False + diff --git a/CONTENT/BT3025/AUDIO/MACCMP.SCP b/CONTENT/BT3025/AUDIO/MACCMP.SCP new file mode 100644 index 0000000..a3bfcc0 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/MACCMP.SCP @@ -0,0 +1,38 @@ +# +################################################################### +# Medium AutoCannon Audio Script +################################################################### +# + +[macro] +ProjectileFireResource=AutoCannonAction01 +ProjectileFireVolume=MediumAutoCannonFireVolume +ProjectileFirePitchOffset=0 +ProjectileFireComponent=MediumAutoCannonFireComponent +# +ProjectileLaunchResource=AutoCannonFire01 +ProjectileLaunchVolume=MediumAutoCannonLaunchVolume +ProjectileLaunchPitchOffset=0 +ProjectileLaunchComponent=MediumAutoCannonLaunchComponent +# +ProjectileLoadingResource=AutoCannonLoading01 +ProjectileLoadingComponent=MediumAutoCannonLoadingComponent +# +ProjectileLoadedResource=AutoCannonLoaded01 +ProjectileLoadedComponent=MediumAutoCannonLoadedComponent +ProjectileLoadedSequence=MediumAutoCannonLoadedSequence +# +ProjectileTriggerDuringLoadResource=TriggerDuringLoad01 +ProjectileTriggerDuringLoadComponent=MediumAutoCannonTriggerDuringLoadComponent +# +ProjectileMisfireResource=AutoCannonMisfire01 +ProjectileMisfireComponent=MediumAutoCannonMisfireComponent +ProjectileMisfireSequence=MediumAutoCannonMisfireSequence +# +ProjectileJamResource=AutoCannonJam01 +ProjectileJamComponent=MediumAutoCannonJamComponent +ProjectileJamSequence=MediumAutoCannonJamSequence + +[include] +file=audio\prjcmp.scp + diff --git a/CONTENT/BT3025/AUDIO/MACTRG.SCP b/CONTENT/BT3025/AUDIO/MACTRG.SCP new file mode 100644 index 0000000..98186fd --- /dev/null +++ b/CONTENT/BT3025/AUDIO/MACTRG.SCP @@ -0,0 +1,12 @@ +# +################################################################### +# Mech AutoCannon Internal Audio Script +################################################################### +# + +[include] +file=audio\prjtrg.scp +file=audio\clttrg.scp +file=audio\buttrg.scp +file=audio\dsttrg.scp + diff --git a/CONTENT/BT3025/AUDIO/MAD1EXT.SCP b/CONTENT/BT3025/AUDIO/MAD1EXT.SCP new file mode 100644 index 0000000..8459cf5 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/MAD1EXT.SCP @@ -0,0 +1,55 @@ +# +# External Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchext.scp + +# +# AFC25_1 component +# +[include] +file=audio\acncmpe.scp + +# AFC25_1 watcher +[macro] +MechSubsystem=AFC25_1 +[include] +file=audio\acntrge.scp + +# AFC25_2 watcher +[macro] +MechSubsystem=AFC25_2 +[include] +file=audio\acntrge.scp + +# +# MLaser1 component +# +[include] +file=audio\glrcmpe.scp + +# MLaser1 watcher +[macro] +MechSubsystem=MLaser1 +[include] +file=audio\glrtrge.scp + +# MLaser2 watcher +[macro] +MechSubsystem=MLaser2 +[include] +file=audio\glrtrge.scp + +# MLaser3 watcher +[macro] +MechSubsystem=MLaser3 +[include] +file=audio\glrtrge.scp + +# MLaser4 watcher +[macro] +MechSubsystem=MLaser4 +[include] +file=audio\glrtrge.scp + diff --git a/CONTENT/BT3025/AUDIO/MAD1INT.SCP b/CONTENT/BT3025/AUDIO/MAD1INT.SCP new file mode 100644 index 0000000..5f9fadf --- /dev/null +++ b/CONTENT/BT3025/AUDIO/MAD1INT.SCP @@ -0,0 +1,103 @@ +# +# Internal Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchint.scp + +# +# AmmoBinAFC25_1 component +# +[include] +file=audio\abncmp.scp + +# AmmoBinAFC25_1 watcher +[macro] +MechSubsystem=AmmoBinAFC25_1 +[include] +file=audio\abntrg.scp + +# +# AFC25_1 component +# +[include] +file=audio\saccmp.scp + +# AFC25_1 watcher +[macro] +MechSubsystem=AFC25_1 +[include] +file=audio\sactrg.scp + +# AmmoBinAFC25_2 watcher +[macro] +MechSubsystem=AmmoBinAFC25_2 +[include] +file=audio\abntrg.scp + +# AFC25_2 watcher +[macro] +MechSubsystem=AFC25_2 +[include] +file=audio\sactrg.scp + +# +# MLaser1 component +# +[include] +file=audio\mlrcmp.scp + +# MLaser1 watcher +[macro] +MechSubsystem=MLaser1 +[include] +file=audio\mlrtrg.scp + +# MLaser2 watcher +[macro] +MechSubsystem=MLaser2 +[include] +file=audio\mlrtrg.scp + +# MLaser3 watcher +[macro] +MechSubsystem=MLaser3 +[include] +file=audio\mlrtrg.scp + +# MLaser4 watcher +[macro] +MechSubsystem=MLaser4 +[include] +file=audio\mlrtrg.scp + +# AmmoBinLRM10_1 watcher +[macro] +MechSubsystem=AmmoBinLRM10_1 +[include] +file=audio\abntrg.scp + +# +# LRM10_1 component +# +[include] +file=audio\lrmcmp.scp + +# LRM10_1 watcher +[macro] +MechSubsystem=LRM10_1 +[include] +file=audio\lrmtrg.scp + +# AmmoBinLRM10_2 watcher +[macro] +MechSubsystem=AmmoBinLRM10_2 +[include] +file=audio\abntrg.scp + +# LRM10_2 watcher +[macro] +MechSubsystem=LRM10_2 +[include] +file=audio\lrmtrg.scp + diff --git a/CONTENT/BT3025/AUDIO/MAD2EXT.SCP b/CONTENT/BT3025/AUDIO/MAD2EXT.SCP new file mode 100644 index 0000000..e15cc17 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/MAD2EXT.SCP @@ -0,0 +1,43 @@ +# +# External Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchext.scp + +# +# ERPPC component +# +[include] +file=audio\glrcmpe.scp + +# ERPPC watcher +[macro] +MechSubsystem=ERPPC +[include] +file=audio\glrtrge.scp + +# +# AFC50 component +# +[include] +file=audio\acncmpe.scp + +# AFC50 watcher +[macro] +MechSubsystem=AFC50 +[include] +file=audio\acntrge.scp + +# ERMLaser_1 watcher +[macro] +MechSubsystem=ERMLaser_1 +[include] +file=audio\glrtrge.scp + +# ERMLaser_2 watcher +[macro] +MechSubsystem=ERMLaser_2 +[include] +file=audio\glrtrge.scp + diff --git a/CONTENT/BT3025/AUDIO/MAD2INT.SCP b/CONTENT/BT3025/AUDIO/MAD2INT.SCP new file mode 100644 index 0000000..c151e41 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/MAD2INT.SCP @@ -0,0 +1,109 @@ +# +# Internal Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchint.scp + +# +# ERPPC component +# +[include] +file=audio\eppcmp.scp + +# ERPPC watcher +[macro] +MechSubsystem=ERPPC +[include] +file=audio\epptrg.scp + +# +# AmmoBinAFC50 component +# +[include] +file=audio\abncmp.scp + +# AmmoBinAFC50 watcher +[macro] +MechSubsystem=AmmoBinAFC50 +[include] +file=audio\abntrg.scp + +# +# AFC50 component +# +[include] +file=audio\maccmp.scp + +# AFC50 watcher +[macro] +MechSubsystem=AFC50 +[include] +file=audio\mactrg.scp + +# +# ERMLaser_1 component +# +[include] +file=audio\ermcmp.scp + +# ERMLaser_1 watcher +[macro] +MechSubsystem=ERMLaser_1 +[include] +file=audio\ermtrg.scp + +# ERMLaser_2 watcher +[macro] +MechSubsystem=ERMLaser_2 +[include] +file=audio\ermtrg.scp + +# AmmoBinLRM15 watcher +[macro] +MechSubsystem=AmmoBinLRM15 +[include] +file=audio\abntrg.scp + +# +# LRM15 component +# +[include] +file=audio\lrmcmp.scp + +# LRM15 watcher +[macro] +MechSubsystem=LRM15 +[include] +file=audio\lrmtrg.scp + +# AmmoBinSRM6_1 watcher +[macro] +MechSubsystem=AmmoBinSRM6_1 +[include] +file=audio\abntrg.scp + +# +# SRM6_1 component +# +[include] +file=audio\srmcmp.scp + +# SRM6_1 watcher +[macro] +MechSubsystem=SRM6_1 +[include] +file=audio\srmtrg.scp + +# AmmoBinSRM6_2 watcher +[macro] +MechSubsystem=AmmoBinSRM6_2 +[include] +file=audio\abntrg.scp + +# SRM6_2 watcher +[macro] +MechSubsystem=SRM6_2 +[include] +file=audio\srmtrg.scp + diff --git a/CONTENT/BT3025/AUDIO/MADEXT.SCP b/CONTENT/BT3025/AUDIO/MADEXT.SCP new file mode 100644 index 0000000..8d9c8c3 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/MADEXT.SCP @@ -0,0 +1,43 @@ +# +# External Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchext.scp + +# +# AFC100 component +# +[include] +file=audio\acncmpe.scp + +# AFC100 watcher +[macro] +MechSubsystem=AFC100 +[include] +file=audio\acntrge.scp + +# +# ERLLaser component +# +[include] +file=audio\glrcmpe.scp + +# ERLLaser watcher +[macro] +MechSubsystem=ERLLaser +[include] +file=audio\glrtrge.scp + +# ERSLaser_1 watcher +[macro] +MechSubsystem=ERSLaser_1 +[include] +file=audio\glrtrge.scp + +# ERSLaser_2 watcher +[macro] +MechSubsystem=ERSLaser_2 +[include] +file=audio\glrtrge.scp + diff --git a/CONTENT/BT3025/AUDIO/MADINT.SCP b/CONTENT/BT3025/AUDIO/MADINT.SCP new file mode 100644 index 0000000..06e2b89 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/MADINT.SCP @@ -0,0 +1,91 @@ +# +# Internal Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchint.scp + +# +# AmmoBinAFC100 component +# +[include] +file=audio\abncmp.scp + +# AmmoBinAFC100 watcher +[macro] +MechSubsystem=AmmoBinAFC100 +[include] +file=audio\abntrg.scp + +# +# AFC100 component +# +[include] +file=audio\laccmp.scp + +# AFC100 watcher +[macro] +MechSubsystem=AFC100 +[include] +file=audio\lactrg.scp + +# +# ERLLaser component +# +[include] +file=audio\erlcmp.scp + +# ERLLaser watcher +[macro] +MechSubsystem=ERLLaser +[include] +file=audio\erltrg.scp + +# +# ERSLaser_1 component +# +[include] +file=audio\erscmp.scp + +# ERSLaser_1 watcher +[macro] +MechSubsystem=ERSLaser_1 +[include] +file=audio\erstrg.scp + +# ERSLaser_2 watcher +[macro] +MechSubsystem=ERSLaser_2 +[include] +file=audio\erstrg.scp + +# AmmoBinLRM15_1 watcher +[macro] +MechSubsystem=AmmoBinLRM15_1 +[include] +file=audio\abntrg.scp + +# +# LRM15_1 component +# +[include] +file=audio\lrmcmp.scp + +# LRM15_1 watcher +[macro] +MechSubsystem=LRM15_1 +[include] +file=audio\lrmtrg.scp + +# AmmoBinLRM15_2 watcher +[macro] +MechSubsystem=AmmoBinLRM15_2 +[include] +file=audio\abntrg.scp + +# LRM15_2 watcher +[macro] +MechSubsystem=LRM15_2 +[include] +file=audio\lrmtrg.scp + diff --git a/CONTENT/BT3025/AUDIO/MCHEXP03.MID b/CONTENT/BT3025/AUDIO/MCHEXP03.MID new file mode 100644 index 0000000..027d7c3 Binary files /dev/null and b/CONTENT/BT3025/AUDIO/MCHEXP03.MID differ diff --git a/CONTENT/BT3025/AUDIO/MCHEXP04.MID b/CONTENT/BT3025/AUDIO/MCHEXP04.MID new file mode 100644 index 0000000..c544a0a Binary files /dev/null and b/CONTENT/BT3025/AUDIO/MCHEXP04.MID differ diff --git a/CONTENT/BT3025/AUDIO/MCHEXP05.MID b/CONTENT/BT3025/AUDIO/MCHEXP05.MID new file mode 100644 index 0000000..70d989e Binary files /dev/null and b/CONTENT/BT3025/AUDIO/MCHEXP05.MID differ diff --git a/CONTENT/BT3025/AUDIO/MCHEXP06.MID b/CONTENT/BT3025/AUDIO/MCHEXP06.MID new file mode 100644 index 0000000..4960635 Binary files /dev/null and b/CONTENT/BT3025/AUDIO/MCHEXP06.MID differ diff --git a/CONTENT/BT3025/AUDIO/MCHEXP07.MID b/CONTENT/BT3025/AUDIO/MCHEXP07.MID new file mode 100644 index 0000000..fc6d642 Binary files /dev/null and b/CONTENT/BT3025/AUDIO/MCHEXP07.MID differ diff --git a/CONTENT/BT3025/AUDIO/MCHEXPI1.MID b/CONTENT/BT3025/AUDIO/MCHEXPI1.MID new file mode 100644 index 0000000..8a185e7 Binary files /dev/null and b/CONTENT/BT3025/AUDIO/MCHEXPI1.MID differ diff --git a/CONTENT/BT3025/AUDIO/MCHEXPI2.MID b/CONTENT/BT3025/AUDIO/MCHEXPI2.MID new file mode 100644 index 0000000..98696d6 Binary files /dev/null and b/CONTENT/BT3025/AUDIO/MCHEXPI2.MID differ diff --git a/CONTENT/BT3025/AUDIO/MCHEXPI3.MID b/CONTENT/BT3025/AUDIO/MCHEXPI3.MID new file mode 100644 index 0000000..b5e133c Binary files /dev/null and b/CONTENT/BT3025/AUDIO/MCHEXPI3.MID differ diff --git a/CONTENT/BT3025/AUDIO/MCHEXT.SCP b/CONTENT/BT3025/AUDIO/MCHEXT.SCP new file mode 100644 index 0000000..ec6131e --- /dev/null +++ b/CONTENT/BT3025/AUDIO/MCHEXT.SCP @@ -0,0 +1,29 @@ +# +################################################################### +# Mech External Audio Script +################################################################### +# + +# +################################################################### +# Audio locations +################################################################### +# + +[L4AudioLocation] +location_offset=0.0,0.0,0.0 +clipping_scale=0.25 +name=OriginLocation + +# +################################################################### +# Includes +################################################################### +# + +[include] +file=audio\fotext.scp +file=audio\shfext.scp +file=audio\trsext.scp +file=audio\colext.scp +file=audio\hetext.scp diff --git a/CONTENT/BT3025/AUDIO/MCHFRE01.MID b/CONTENT/BT3025/AUDIO/MCHFRE01.MID new file mode 100644 index 0000000..07dff85 Binary files /dev/null and b/CONTENT/BT3025/AUDIO/MCHFRE01.MID differ diff --git a/CONTENT/BT3025/AUDIO/MCTINT.SCP b/CONTENT/BT3025/AUDIO/MCTINT.SCP new file mode 100644 index 0000000..06bfb8e --- /dev/null +++ b/CONTENT/BT3025/AUDIO/MCTINT.SCP @@ -0,0 +1,15 @@ +# +#------------------------------------------------------------------ +# Madcat Internal Audio Script +#------------------------------------------------------------------ +# + +# +#------------------------------------------------------------------ +# Includes +#------------------------------------------------------------------ +# + +[include] +file=audio\mchint.scp + diff --git a/CONTENT/BT3025/AUDIO/MEDEXP.SCP b/CONTENT/BT3025/AUDIO/MEDEXP.SCP new file mode 100644 index 0000000..3e5306e --- /dev/null +++ b/CONTENT/BT3025/AUDIO/MEDEXP.SCP @@ -0,0 +1,92 @@ +# +################################################################### +# Medium Explosion Audio Script +################################################################### +# + +[include] +file=audio\macros.scp + +# +################################################################### +# Audio locations +################################################################### +# + +[L4AudioLocation] +location_offset=0.0,0.0,0.0 +clipping_scale=0.75 +name=OriginLocation + +# +################################################################### +# MediumExplosion component +################################################################### +# + +[Dynamic3DPatchSource] +location=OriginLocation +resource=AuxExplosion01 +priority=0 +mix_presence=3 +volume_mix_level=MediumExplosionVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=True +use_attack_time_scale=False +has_compression_curve=True +compression_duration=0.5 +name=MediumExplosionComponent + +#------------------------------------------------------------------ + +# +# sample and hold -> pitch +# + +[AudioSampleAndHold] +audio_component=MediumExplosionComponent +control_ID=PitchAudioControlID +sample_duration=99.0 +min_value=-200 +max_value=200 +name=MediumExplosionPitchSampleAndHold + +# +# sample and hold -> filter +# + +[AudioSampleAndHold] +audio_component=MediumExplosionComponent +control_ID=BrightnessAudioControlID +sample_duration=99.0 +min_value=0.7 +max_value=1.0 +name=MediumExplosionBrightnessSampleAndHold + +#------------------------------------------------------------------ + +[AudioControlSplitter] +audio_component=MediumExplosionPitchSampleAndHold +audio_component=MediumExplosionBrightnessSampleAndHold +audio_component=MediumExplosionComponent +name=MediumExplosionSplitter + +[AudioControlSequence] +audio_component=MediumExplosionSplitter +tempo=160 +midi_file=audio\medexp01.mid +is_looped=False +dump_value=False +name=MediumExplosionSequence + +[AudioIdleWatcher] +audio_component=MediumExplosionSequence + +#------------------------------------------------------------------ + +[AudioControlSend] +audio_component=MediumExplosionSequence +control_ID=StartAudioControlID +control_value=0.0 + diff --git a/CONTENT/BT3025/AUDIO/MEDEXP01.MID b/CONTENT/BT3025/AUDIO/MEDEXP01.MID new file mode 100644 index 0000000..11a2d66 Binary files /dev/null and b/CONTENT/BT3025/AUDIO/MEDEXP01.MID differ diff --git a/CONTENT/BT3025/AUDIO/MGNTRG.SCP b/CONTENT/BT3025/AUDIO/MGNTRG.SCP new file mode 100644 index 0000000..ed61292 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/MGNTRG.SCP @@ -0,0 +1,74 @@ +# +################################################################### +# Mech AutoCannon Internal Audio Script +################################################################### +# + +# +################################################################### +# Projectile Internal Audio Script +################################################################### +# + +# +################################################################### +# Projectile Fire component +################################################################### +# + +[AudioStateTrigger] +subsystem=MechSubsystem +attribute=WeaponState +audio_component=ProjectileFireComponent +trigger_state=MechWeapon::Firing +inverse_trigger=False +control_ID=StartAudioControlID +control_value=2.0 +dump_value=False + +# +################################################################### +# Projectile Misfire component +################################################################### +# + +[AudioStateTrigger] +subsystem=MechSubsystem +attribute=WeaponState +audio_component=ProjectileMisfireComponent +trigger_state=MechWeapon::Misfire +inverse_trigger=False +control_ID=StartAudioControlID +control_value=1.0 +dump_value=False + +# +################################################################### +# Projectile Jam component +################################################################### +# + +[AudioStateTrigger] +subsystem=MechSubsystem +attribute=WeaponState +audio_component=ProjectileJamComponent +trigger_state=ProjectileWeapon::TriggerDuringJam +inverse_trigger=False +control_ID=StartAudioControlID +control_value=1.0 +dump_value=False + +# +################################################################### +# Projectile Eject component +################################################################### +# + +[AudioControlsButtonMessageWatcher] +subsystem=MechSubsystem +message_ID=ProjectileWeapon::EjectAmmoMessageID +audio_component=ProjectileEjectComponent +control_ID=StartAudioControlID +control_value=0.5 +dump_value=False + diff --git a/CONTENT/BT3025/AUDIO/MLRCMP.SCP b/CONTENT/BT3025/AUDIO/MLRCMP.SCP new file mode 100644 index 0000000..368b9d0 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/MLRCMP.SCP @@ -0,0 +1,49 @@ +# +################################################################### +# Medium Laser Audio Script +################################################################### +# + +[macro] +LaserFireResource=LaserBFire01 +LaserFirePitchOffset=0 +LaserFireComponent=MediumLaserFireComponent +LaserFireIndex=LaserBFireIndex +LaserFireResourceSelect=MediumLaserFireResourceSelect +LaserFireSampleAndHold=MediumLaserFireSampleAndHold +# +LaserSustainResource=LaserBSustain01 +LaserSustainComponent=MediumLaserSustainComponent +LaserSustainIndex=LaserBSustainIndex +LaserSustainResourceSelect=MediumLaserSustainResourceSelect +LaserSustainSampleAndHold=MediumLaserSustainSampleAndHold +# +LaserReleaseResource=LaserARelease01 +LaserReleaseComponent=MediumLaserReleaseComponent +LaserReleaseIndex=LaserAReleaseIndex +LaserReleaseResourceSelect=MediumLaserReleaseResourceSelect +LaserReleaseSampleAndHold=MediumLaserReleaseSampleAndHold +# +LaserChargeResource=LaserACharge01 +LaserChargeComponent=MediumLaserChargeComponent +LaserChargeIndex=LaserAChargeIndex +LaserChargeResourceSelect=MediumLaserChargeResourceSelect +LaserChargeSampleAndHold=MediumLaserChargeSampleAndHold +# +LaserLoadedResource=LaserLoaded01 +LaserLoadedComponent=MediumLaserLoadedComponent +LaserLoadedSequence=MediumLaserLoadedSequence +# +LaserTriggerDuringLoadResource=TriggerDuringLoad01 +LaserTriggerDuringLoadComponent=MediumLaserTriggerDuringLoadComponent +# +LaserMisfireResource=LaserAMisfire01 +LaserMisfireComponent=MediumLaserMisfireComponent +# +LaserSeekLevelResource=BasicBeep02 +LaserSeekLevelComponent=MediumLaserSeekLevelComponent + +[include] +file=audio\lsrcmp.scp + + diff --git a/CONTENT/BT3025/AUDIO/MLRCMPE.SCP b/CONTENT/BT3025/AUDIO/MLRCMPE.SCP new file mode 100644 index 0000000..859f7a8 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/MLRCMPE.SCP @@ -0,0 +1,14 @@ +# +################################################################### +# Medium Laser External Audio Script +################################################################### +# + +[macro] +LaserSustainResource=LaserBSustainExt01 +LaserSustainVolume=LaserExternalSustainVolume +LaserPitchOffset=0 +LaserSustainComponent=MediumLaserExternalSustainComponent + +[include] +file=audio\lsrcmpe.scp diff --git a/CONTENT/BT3025/AUDIO/MLRTRG.SCP b/CONTENT/BT3025/AUDIO/MLRTRG.SCP new file mode 100644 index 0000000..645da98 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/MLRTRG.SCP @@ -0,0 +1,12 @@ +# +################################################################### +# Medium Laser Internal Audio Script +################################################################### +# + +[include] +file=audio\lsrtrg.scp +file=audio\clttrg.scp +file=audio\buttrg.scp +file=audio\dsttrg.scp + diff --git a/CONTENT/BT3025/AUDIO/MLRTRGE.SCP b/CONTENT/BT3025/AUDIO/MLRTRGE.SCP new file mode 100644 index 0000000..3b64622 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/MLRTRGE.SCP @@ -0,0 +1,9 @@ +# +################################################################### +# Laser External Triggers +################################################################### +# + +[include] +file=audio\lsrtrge.scp + diff --git a/CONTENT/BT3025/AUDIO/MSLEXP.SCP b/CONTENT/BT3025/AUDIO/MSLEXP.SCP new file mode 100644 index 0000000..ddf2458 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/MSLEXP.SCP @@ -0,0 +1,108 @@ +# +################################################################### +# Missile Explosion Audio Script +################################################################### +# + +[include] +file=audio\macros.scp + +# +################################################################### +# Audio locations +################################################################### +# + +[L4AudioLocation] +location_offset=0.0,0.0,0.0 +name=OriginLocation + +# +################################################################### +# Missile Explosion component +################################################################### +# + +[Dynamic3DPatchSource] +location=OriginLocation +resource=BigExplosion01 +priority=0 +mix_presence=3 +volume_mix_level=MissileExplosionVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=True +use_attack_time_scale=False +has_compression_curve=True +compression_duration=0.5 +name=MissileExplosionComponent + +#------------------------------------------------------------------ + +# +# resource select +# + +[AudioResourceSelector] +audio_source=MissileExplosionComponent +audio_resource_index=MissileExplosionIndex +control_ID=100 +min_control_value=0.0 +max_control_value=1.0 +dump_value=False +name=MissileExplosionResourceSelect + +# +# sample and hold -> resource select +# + +[AudioSampleAndHold] +audio_component=MissileExplosionResourceSelect +control_ID=100 +sample_duration=99.0 +name=MissileExplosionSampleAndHold + +#------------------------------------------------------------------ + +# +# sample and hold -> pitch +# + +[AudioSampleAndHold] +audio_component=MissileExplosionComponent +control_ID=PitchAudioControlID +sample_duration=99.0 +min_value=-400 +max_value=400 +name=MissileExplosionPitchSampleAndHold + +# +# sample and hold -> filter +# + +[AudioSampleAndHold] +audio_component=MissileExplosionComponent +control_ID=BrightnessAudioControlID +sample_duration=99.0 +min_value=0.9 +max_value=1.0 +name=MissileExplosionBrightnessSampleAndHold + +#------------------------------------------------------------------ + +[AudioControlSplitter] +audio_component=MissileExplosionSampleAndHold +audio_component=MissileExplosionPitchSampleAndHold +audio_component=MissileExplosionBrightnessSampleAndHold +name=MissileExplosionSplitter + +[AudioControlSend] +audio_component=MissileExplosionSplitter +control_ID=StartAudioControlID +control_value=0.0 + +[AudioControlSend] +audio_component=MissileExplosionComponent +control_ID=StartAudioControlID +control_value=5.0 + diff --git a/CONTENT/BT3025/AUDIO/MSLJAM01.MID b/CONTENT/BT3025/AUDIO/MSLJAM01.MID new file mode 100644 index 0000000..2752b76 Binary files /dev/null and b/CONTENT/BT3025/AUDIO/MSLJAM01.MID differ diff --git a/CONTENT/BT3025/AUDIO/MSLLDD01.MID b/CONTENT/BT3025/AUDIO/MSLLDD01.MID new file mode 100644 index 0000000..d360727 Binary files /dev/null and b/CONTENT/BT3025/AUDIO/MSLLDD01.MID differ diff --git a/CONTENT/BT3025/AUDIO/MSLMFR01.MID b/CONTENT/BT3025/AUDIO/MSLMFR01.MID new file mode 100644 index 0000000..38680b0 Binary files /dev/null and b/CONTENT/BT3025/AUDIO/MSLMFR01.MID differ diff --git a/CONTENT/BT3025/AUDIO/MSLTVL.SCP b/CONTENT/BT3025/AUDIO/MSLTVL.SCP new file mode 100644 index 0000000..806d858 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/MSLTVL.SCP @@ -0,0 +1,46 @@ +# +################################################################### +# Missile Travel Audio Script +################################################################### +# + +[include] +file=audio\macros.scp + +# +################################################################### +# Audio locations +################################################################### +# + +[L4AudioLocation] +location_offset=0.0,0.0,0.0 +name=OriginLocation + +# +################################################################### +# Missile Travel component +################################################################### +# + +[Dynamic3DPatchSource] +location=OriginLocation +resource=MissileTravel01 +priority=0 +mix_presence=0 +volume_mix_level=MissileTravelVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=True +use_attack_time_scale=False +has_compression_curve=False +compression_duration=0.0 +name=MissileTravelComponent + +#------------------------------------------------------------------ + +[AudioControlSend] +audio_component=MissileTravelComponent +control_ID=StartAudioControlID +control_value=0.0 + diff --git a/CONTENT/BT3025/AUDIO/MYRCMP.SCP b/CONTENT/BT3025/AUDIO/MYRCMP.SCP new file mode 100644 index 0000000..0fb4b03 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/MYRCMP.SCP @@ -0,0 +1,27 @@ +# +################################################################### +# Myomer Audio Script +################################################################### +# + +# +################################################################### +# MyomerSeekLevel component +################################################################### +# + +[DirectPatchSource] +location=OriginLocation +resource=BasicBeep02 +position=FrontDirectPatchPosition +priority=3 +mix_presence=0 +volume_mix_level=MyomerSeekLevelVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=False +use_attack_time_scale=False +has_compression_curve=True +compression_duration=1.0 +name=MyomerSeekLevelComponent + diff --git a/CONTENT/BT3025/AUDIO/MYRTRG.SCP b/CONTENT/BT3025/AUDIO/MYRTRG.SCP new file mode 100644 index 0000000..9dcd99e --- /dev/null +++ b/CONTENT/BT3025/AUDIO/MYRTRG.SCP @@ -0,0 +1,31 @@ +# +################################################################### +# Myomer Audio Script +################################################################### +# + +# +################################################################### +# Includes +################################################################### +# + +[include] +file=audio\buttrg.scp +file=audio\dsttrg.scp +file=audio\clttrg.scp + +# +################################################################### +# MyomerSeekLevel component +################################################################### +# + +[AudioControlsButtonMessageWatcher] +subsystem=MechSubsystem +message_ID=Myomers::ToggleSeekVoltageMessageID +audio_component=MyomerSeekLevelComponent +control_ID=StartAudioControlID +control_value=0.5 +dump_value=False + diff --git a/CONTENT/BT3025/AUDIO/OWN1EXT.SCP b/CONTENT/BT3025/AUDIO/OWN1EXT.SCP new file mode 100644 index 0000000..1a1409d --- /dev/null +++ b/CONTENT/BT3025/AUDIO/OWN1EXT.SCP @@ -0,0 +1,37 @@ +# +# External Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchext.scp + +# +# AFC25 component +# +[include] +file=audio\acncmpe.scp + +# AFC25 watcher +[macro] +MechSubsystem=AFC25 +[include] +file=audio\acntrge.scp + +# +# ERMLaser component +# +[include] +file=audio\glrcmpe.scp + +# ERMLaser watcher +[macro] +MechSubsystem=ERMLaser +[include] +file=audio\glrtrge.scp + +# ERSLaser watcher +[macro] +MechSubsystem=ERSLaser +[include] +file=audio\glrtrge.scp + diff --git a/CONTENT/BT3025/AUDIO/OWN1INT.SCP b/CONTENT/BT3025/AUDIO/OWN1INT.SCP new file mode 100644 index 0000000..6ef9a50 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/OWN1INT.SCP @@ -0,0 +1,85 @@ +# +# Internal Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchint.scp + +# +# AmmoBinAFC25 component +# +[include] +file=audio\abncmp.scp + +# AmmoBinAFC25 watcher +[macro] +MechSubsystem=AmmoBinAFC25 +[include] +file=audio\abntrg.scp + +# +# AFC25 component +# +[include] +file=audio\saccmp.scp + +# AFC25 watcher +[macro] +MechSubsystem=AFC25 +[include] +file=audio\sactrg.scp + +# +# ERMLaser component +# +[include] +file=audio\ermcmp.scp + +# ERMLaser watcher +[macro] +MechSubsystem=ERMLaser +[include] +file=audio\ermtrg.scp + +# +# ERSLaser component +# +[include] +file=audio\erscmp.scp + +# ERSLaser watcher +[macro] +MechSubsystem=ERSLaser +[include] +file=audio\erstrg.scp + +# AmmoBinNRK5_1 watcher +[macro] +MechSubsystem=AmmoBinNRK5_1 +[include] +file=audio\abntrg.scp + +# +# NRK5_1 component +# +[include] +file=audio\lrmcmp.scp + +# NRK5_1 watcher +[macro] +MechSubsystem=NRK5_1 +[include] +file=audio\lrmtrg.scp + +# AmmoBinNRK5_2 watcher +[macro] +MechSubsystem=AmmoBinNRK5_2 +[include] +file=audio\abntrg.scp + +# NRK5_2 watcher +[macro] +MechSubsystem=NRK5_2 +[include] +file=audio\lrmtrg.scp + diff --git a/CONTENT/BT3025/AUDIO/OWNEXT.SCP b/CONTENT/BT3025/AUDIO/OWNEXT.SCP new file mode 100644 index 0000000..0caf0f3 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/OWNEXT.SCP @@ -0,0 +1,49 @@ +# +# External Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchext.scp + +# +# ERMLaser_1 component +# +[include] +file=audio\glrcmpe.scp + +# ERMLaser_1 watcher +[macro] +MechSubsystem=ERMLaser_1 +[include] +file=audio\glrtrge.scp + +# ERMLaser_2 watcher +[macro] +MechSubsystem=ERMLaser_2 +[include] +file=audio\glrtrge.scp + +# ERSLaser_1 watcher +[macro] +MechSubsystem=ERSLaser_1 +[include] +file=audio\glrtrge.scp + +# ERSLaser_2 watcher +[macro] +MechSubsystem=ERSLaser_2 +[include] +file=audio\glrtrge.scp + +# ERSLaser_3 watcher +[macro] +MechSubsystem=ERSLaser_3 +[include] +file=audio\glrtrge.scp + +# ERSLaser_4 watcher +[macro] +MechSubsystem=ERSLaser_4 +[include] +file=audio\glrtrge.scp + diff --git a/CONTENT/BT3025/AUDIO/OWNINT.SCP b/CONTENT/BT3025/AUDIO/OWNINT.SCP new file mode 100644 index 0000000..38e8726 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/OWNINT.SCP @@ -0,0 +1,91 @@ +# +# Internal Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchint.scp + +# +# ERMLaser_1 component +# +[include] +file=audio\ermcmp.scp + +# ERMLaser_1 watcher +[macro] +MechSubsystem=ERMLaser_1 +[include] +file=audio\ermtrg.scp + +# ERMLaser_2 watcher +[macro] +MechSubsystem=ERMLaser_2 +[include] +file=audio\ermtrg.scp + +# +# ERSLaser_1 component +# +[include] +file=audio\erscmp.scp + +# ERSLaser_1 watcher +[macro] +MechSubsystem=ERSLaser_1 +[include] +file=audio\erstrg.scp + +# ERSLaser_2 watcher +[macro] +MechSubsystem=ERSLaser_2 +[include] +file=audio\erstrg.scp + +# ERSLaser_3 watcher +[macro] +MechSubsystem=ERSLaser_3 +[include] +file=audio\erstrg.scp + +# ERSLaser_4 watcher +[macro] +MechSubsystem=ERSLaser_4 +[include] +file=audio\erstrg.scp + +# +# AmmoBinSRM6_1 component +# +[include] +file=audio\abncmp.scp + +# AmmoBinSRM6_1 watcher +[macro] +MechSubsystem=AmmoBinSRM6_1 +[include] +file=audio\abntrg.scp + +# +# SRM6_1 component +# +[include] +file=audio\srmcmp.scp + +# SRM6_1 watcher +[macro] +MechSubsystem=SRM6_1 +[include] +file=audio\srmtrg.scp + +# AmmoBinSRM6_2 watcher +[macro] +MechSubsystem=AmmoBinSRM6_2 +[include] +file=audio\abntrg.scp + +# SRM6_2 watcher +[macro] +MechSubsystem=SRM6_2 +[include] +file=audio\srmtrg.scp + diff --git a/CONTENT/BT3025/AUDIO/PLYINT.SCP b/CONTENT/BT3025/AUDIO/PLYINT.SCP new file mode 100644 index 0000000..8247fcd --- /dev/null +++ b/CONTENT/BT3025/AUDIO/PLYINT.SCP @@ -0,0 +1,88 @@ +# +################################################################### +# BT Player audio script +################################################################### +# + +# +################################################################### +# Includes +################################################################### +# +[include] +file=audio\macros.scp + +# +################################################################### +# Audio locations +################################################################### +# + +[L4AudioLocation] +location_offset=0.0,0.0,0.0 +name=OriginLocation + +# +################################################################### +# Translocation component +################################################################### +# + +[DirectPatchSource] +location=OriginLocation +resource=Translocation01 +position=FrontDirectPatchPosition +priority=4 +mix_presence=1 +volume_mix_level=TranslocationVolume +pitch_mix_offset=0.0 +brightness_mix_level=0.0 +use_brightness_scale=False +use_attack_time_scale=False +has_compression_curve=True +compression_duration=5.0 +name=TranslocationComponent01 + +[DirectPatchSource] +location=OriginLocation +resource=Translocation01 +position=RearDirectPatchPosition +priority=4 +mix_presence=1 +volume_mix_level=TranslocationVolume +pitch_mix_offset=0.0 +brightness_mix_level=0.0 +use_brightness_scale=False +use_attack_time_scale=False +has_compression_curve=True +compression_duration=5.0 +name=TranslocationComponent02 + +#------------------------------------------------------------------ + +[AudioControlSplitter] +audio_component=TranslocationComponent01 +audio_component=TranslocationComponent02 +name=TranslocationSplitter + +[AudioStateTrigger] +subsystem=Entity +attribute=SimulationState +audio_component=TranslocationSplitter +trigger_state=BTPlayer::MissionStartingState +inverse_trigger=False +control_ID=StartAudioControlID +control_value=5.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Entity +attribute=SimulationState +audio_component=TranslocationSplitter +trigger_state=BTPlayer::DropZoneAcquiredState +inverse_trigger=False +control_ID=StartAudioControlID +control_value=5.0 +dump_value=0 + + diff --git a/CONTENT/BT3025/AUDIO/PPCCMP.SCP b/CONTENT/BT3025/AUDIO/PPCCMP.SCP new file mode 100644 index 0000000..1a84d1f --- /dev/null +++ b/CONTENT/BT3025/AUDIO/PPCCMP.SCP @@ -0,0 +1,48 @@ +# +################################################################### +# PPC Audio Script +################################################################### +# + +[macro] +LaserFireResource=LaserAFire01 +LaserFirePitchOffset=0 +LaserFireComponent=PPCFireComponent +LaserFireIndex=LaserAFireIndex +LaserFireResourceSelect=PPCFireResourceSelect +LaserFireSampleAndHold=PPCFireSampleAndHold +# +LaserSustainResource=LaserASustain01 +LaserSustainComponent=PPCSustainComponent +LaserSustainIndex=LaserASustainIndex +LaserSustainResourceSelect=PPCSustainResourceSelect +LaserSustainSampleAndHold=PPCSustainSampleAndHold +# +LaserReleaseResource=LaserARelease01 +LaserReleaseComponent=PPCReleaseComponent +LaserReleaseIndex=LaserAReleaseIndex +LaserReleaseResourceSelect=PPCReleaseResourceSelect +LaserReleaseSampleAndHold=PPCReleaseSampleAndHold +# +LaserChargeResource=LaserACharge01 +LaserChargeComponent=PPCChargeComponent +LaserChargeIndex=LaserAChargeIndex +LaserChargeResourceSelect=PPCChargeResourceSelect +LaserChargeSampleAndHold=PPCChargeSampleAndHold +# +LaserLoadedResource=LaserLoaded01 +LaserLoadedComponent=SmallLaserLoadedComponent +LaserLoadedSequence=SmallLaserLoadedSequence +# +LaserTriggerDuringLoadResource=TriggerDuringLoad01 +LaserTriggerDuringLoadComponent=PPCTriggerDuringLoadComponent +# +LaserMisfireResource=LaserAMisfire01 +LaserMisfireComponent=PPCMisfireComponent +# +LaserSeekLevelResource=BasicBeep02 +LaserSeekLevelComponent=PPCSeekLevelComponent + +[include] +file=audio\lsrcmp.scp + diff --git a/CONTENT/BT3025/AUDIO/PPCCMPE.SCP b/CONTENT/BT3025/AUDIO/PPCCMPE.SCP new file mode 100644 index 0000000..d0619db --- /dev/null +++ b/CONTENT/BT3025/AUDIO/PPCCMPE.SCP @@ -0,0 +1,14 @@ +# +################################################################### +# PPC External Audio Script +################################################################### +# + +[macro] +LaserSustainResource=LaserASustain01 +LaserSustainVolume=LaserExternalSustainVolume +LaserPitchOffset=100 +LaserSustainComponent=PPCExternalSustainComponent + +[include] +file=audio\lsrcmpe.scp diff --git a/CONTENT/BT3025/AUDIO/PPCEXP.SCP b/CONTENT/BT3025/AUDIO/PPCEXP.SCP new file mode 100644 index 0000000..207de43 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/PPCEXP.SCP @@ -0,0 +1,108 @@ +# +################################################################### +# PPC Explosion Audio Script +################################################################### +# + +[include] +file=audio\macros.scp + +# +################################################################### +# Audio locations +################################################################### +# + +[L4AudioLocation] +location_offset=0.0,0.0,0.0 +name=OriginLocation + +# +################################################################### +# PPC Explosion component +################################################################### +# + +[Dynamic3DPatchSource] +location=OriginLocation +resource=PPCExplosion01 +priority=0 +mix_presence=3 +volume_mix_level=PPCExplosionVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=True +use_attack_time_scale=False +has_compression_curve=True +compression_duration=0.5 +name=PPCExplosionComponent + +#------------------------------------------------------------------ + +# +# resource select +# + +[AudioResourceSelector] +audio_source=PPCExplosionComponent +audio_resource_index=PPCExplosionIndex +control_ID=100 +min_control_value=0.0 +max_control_value=1.0 +dump_value=False +name=PPCExplosionResourceSelect + +# +# sample and hold -> resource select +# + +[AudioSampleAndHold] +audio_component=PPCExplosionResourceSelect +control_ID=100 +sample_duration=99.0 +name=PPCExplosionSampleAndHold + +#------------------------------------------------------------------ + +# +# sample and hold -> pitch +# + +[AudioSampleAndHold] +audio_component=PPCExplosionComponent +control_ID=PitchAudioControlID +sample_duration=99.0 +min_value=-400 +max_value=400 +name=PPCExplosionPitchSampleAndHold + +# +# sample and hold -> filter +# + +[AudioSampleAndHold] +audio_component=PPCExplosionComponent +control_ID=BrightnessAudioControlID +sample_duration=99.0 +min_value=0.9 +max_value=1.0 +name=PPCExplosionBrightnessSampleAndHold + +#------------------------------------------------------------------ + +[AudioControlSplitter] +audio_component=PPCExplosionSampleAndHold +audio_component=PPCExplosionPitchSampleAndHold +audio_component=PPCExplosionBrightnessSampleAndHold +name=PPCExplosionSplitter + +[AudioControlSend] +audio_component=PPCExplosionSplitter +control_ID=StartAudioControlID +control_value=0.0 + +[AudioControlSend] +audio_component=PPCExplosionComponent +control_ID=StartAudioControlID +control_value=1.5 + diff --git a/CONTENT/BT3025/AUDIO/PPCEXPI.SCP b/CONTENT/BT3025/AUDIO/PPCEXPI.SCP new file mode 100644 index 0000000..1a9b993 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/PPCEXPI.SCP @@ -0,0 +1,109 @@ +# +################################################################### +# PPC Explosion Internal Audio Script +################################################################### +# + +[include] +file=audio\macros.scp + +# +################################################################### +# Audio locations +################################################################### +# + +[L4AudioLocation] +location_offset=0.0,0.0,0.0 +name=OriginLocation + +# +################################################################### +# PPC Explosion Internal component +################################################################### +# + +[Static3DPatchSource] +location=OriginLocation +resource=PPCExplosionInt01 +priority=2 +mix_presence=3 +volume_mix_level=PPCExplosionIntVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=True +use_attack_time_scale=False +has_compression_curve=True +compression_duration=0.5 +use_internal=False +name=PPCExplosionIntComponent + +#------------------------------------------------------------------ + +# +# resource select +# + +[AudioResourceSelector] +audio_source=PPCExplosionIntComponent +audio_resource_index=PPCExplosionIntIndex +control_ID=100 +min_control_value=0.0 +max_control_value=1.0 +dump_value=False +name=PPCExplosionIntResourceSelect + +# +# sample and hold -> resource select +# + +[AudioSampleAndHold] +audio_component=PPCExplosionIntResourceSelect +control_ID=100 +sample_duration=99.0 +name=PPCExplosionIntSampleAndHold + +#------------------------------------------------------------------ + +# +# sample and hold -> pitch +# + +[AudioSampleAndHold] +audio_component=PPCExplosionIntComponent +control_ID=PitchAudioControlID +sample_duration=99.0 +min_value=-100 +max_value=100 +name=PPCExplosionIntPitchSampleAndHold + +# +# sample and hold -> filter +# + +[AudioSampleAndHold] +audio_component=PPCExplosionIntComponent +control_ID=BrightnessAudioControlID +sample_duration=99.0 +min_value=0.8 +max_value=1.0 +name=PPCExplosionIntBrightnessSampleAndHold + +#------------------------------------------------------------------ + +[AudioControlSplitter] +audio_component=PPCExplosionIntSampleAndHold +audio_component=PPCExplosionIntPitchSampleAndHold +audio_component=PPCExplosionIntBrightnessSampleAndHold +name=PPCExplosionIntSplitter + +[AudioControlSend] +audio_component=PPCExplosionIntSplitter +control_ID=StartAudioControlID +control_value=0.0 + +[AudioControlSend] +audio_component=PPCExplosionIntComponent +control_ID=StartAudioControlID +control_value=3.0 + diff --git a/CONTENT/BT3025/AUDIO/PPCTRG.SCP b/CONTENT/BT3025/AUDIO/PPCTRG.SCP new file mode 100644 index 0000000..042ba9c --- /dev/null +++ b/CONTENT/BT3025/AUDIO/PPCTRG.SCP @@ -0,0 +1,12 @@ +# +################################################################### +# PPC Internal Audio Script +################################################################### +# + +[include] +file=audio\lsrtrg.scp +file=audio\clttrg.scp +file=audio\buttrg.scp +file=audio\dsttrg.scp + diff --git a/CONTENT/BT3025/AUDIO/PPCTRGE.SCP b/CONTENT/BT3025/AUDIO/PPCTRGE.SCP new file mode 100644 index 0000000..86e97c1 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/PPCTRGE.SCP @@ -0,0 +1,9 @@ +# +################################################################### +# PPC External Audio Script +################################################################### +# + +[include] +file=audio\lsrtrge.scp + diff --git a/CONTENT/BT3025/AUDIO/PRGBUT01.MID b/CONTENT/BT3025/AUDIO/PRGBUT01.MID new file mode 100644 index 0000000..75365f3 Binary files /dev/null and b/CONTENT/BT3025/AUDIO/PRGBUT01.MID differ diff --git a/CONTENT/BT3025/AUDIO/PRJCMPE.SCP b/CONTENT/BT3025/AUDIO/PRJCMPE.SCP new file mode 100644 index 0000000..b7a4f62 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/PRJCMPE.SCP @@ -0,0 +1,26 @@ +# +################################################################### +# Projectile External Audio Script +################################################################### +# + +# +################################################################### +# Projectile Launch component +################################################################### +# + +[Dynamic3DPatchSource] +location=OriginLocation +resource=ProjectileLaunchResource +priority=0 +mix_presence=0 +volume_mix_level=ProjectileLaunchVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=False +use_attack_time_scale=False +has_compression_curve=False +compression_duration=0.0 +name=ProjectileLaunchComponent + diff --git a/CONTENT/BT3025/AUDIO/PRJJAM01.MID b/CONTENT/BT3025/AUDIO/PRJJAM01.MID new file mode 100644 index 0000000..46e6904 Binary files /dev/null and b/CONTENT/BT3025/AUDIO/PRJJAM01.MID differ diff --git a/CONTENT/BT3025/AUDIO/PRJLDD01.MID b/CONTENT/BT3025/AUDIO/PRJLDD01.MID new file mode 100644 index 0000000..2752b76 Binary files /dev/null and b/CONTENT/BT3025/AUDIO/PRJLDD01.MID differ diff --git a/CONTENT/BT3025/AUDIO/PRJMFR01.MID b/CONTENT/BT3025/AUDIO/PRJMFR01.MID new file mode 100644 index 0000000..d9e76c5 Binary files /dev/null and b/CONTENT/BT3025/AUDIO/PRJMFR01.MID differ diff --git a/CONTENT/BT3025/AUDIO/PRJTRGE.SCP b/CONTENT/BT3025/AUDIO/PRJTRGE.SCP new file mode 100644 index 0000000..87268d9 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/PRJTRGE.SCP @@ -0,0 +1,23 @@ +# +################################################################### +# Projectile External Audio Script +################################################################### +# + +# +################################################################### +# Projectile Launch component +################################################################### +# + +[AudioStateTrigger] +subsystem=MechSubsystem +attribute=WeaponState +audio_component=ProjectileLaunchComponent +trigger_state=MechWeapon::Firing +inverse_trigger=False +control_ID=StartAudioControlID +control_value=2.0 +dump_value=False + + diff --git a/CONTENT/BT3025/AUDIO/PRJTVL.SCP b/CONTENT/BT3025/AUDIO/PRJTVL.SCP new file mode 100644 index 0000000..81f25b0 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/PRJTVL.SCP @@ -0,0 +1,46 @@ +# +################################################################### +# Projectile Travel Audio Script +################################################################### +# + +[include] +file=audio\macros.scp + +# +################################################################### +# Audio locations +################################################################### +# + +[L4AudioLocation] +location_offset=0.0,0.0,0.0 +name=OriginLocation + +# +################################################################### +# Projectile Travel component +################################################################### +# + +[Dynamic3DPatchSource] +location=OriginLocation +resource=ProjectileATravel01 +priority=0 +mix_presence=0 +volume_mix_level=ProjectileTravelVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=True +use_attack_time_scale=False +has_compression_curve=False +compression_duration=0.0 +name=ProjectileTravelComponent + +#------------------------------------------------------------------ + +[AudioControlSend] +audio_component=ProjectileTravelComponent +control_ID=StartAudioControlID +control_value=0.0 + diff --git a/CONTENT/BT3025/AUDIO/RAPEXT.SCP b/CONTENT/BT3025/AUDIO/RAPEXT.SCP new file mode 100644 index 0000000..8aa3f10 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/RAPEXT.SCP @@ -0,0 +1,37 @@ +# +# External Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchext.scp + +# +# MLaser_1 component +# +[include] +file=audio\glrcmpe.scp + +# MLaser_1 watcher +[macro] +MechSubsystem=MLaser_1 +[include] +file=audio\glrtrge.scp + +# MLaser_2 watcher +[macro] +MechSubsystem=MLaser_2 +[include] +file=audio\glrtrge.scp + +# SLaser_1 watcher +[macro] +MechSubsystem=SLaser_1 +[include] +file=audio\glrtrge.scp + +# SLaser_2 watcher +[macro] +MechSubsystem=SLaser_2 +[include] +file=audio\glrtrge.scp + diff --git a/CONTENT/BT3025/AUDIO/RAPINT.SCP b/CONTENT/BT3025/AUDIO/RAPINT.SCP new file mode 100644 index 0000000..057a821 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/RAPINT.SCP @@ -0,0 +1,91 @@ +# +# Internal Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchint.scp + +# +# MLaser_1 component +# +[include] +file=audio\mlrcmp.scp + +# MLaser_1 watcher +[macro] +MechSubsystem=MLaser_1 +[include] +file=audio\mlrtrg.scp + +# MLaser_2 watcher +[macro] +MechSubsystem=MLaser_2 +[include] +file=audio\mlrtrg.scp + +# +# SLaser_1 component +# +[include] +file=audio\slrcmp.scp + +# SLaser_1 watcher +[macro] +MechSubsystem=SLaser_1 +[include] +file=audio\slrtrg.scp + +# SLaser_2 watcher +[macro] +MechSubsystem=SLaser_2 +[include] +file=audio\slrtrg.scp + +# +# AmmoBinLRM5_1 component +# +[include] +file=audio\abncmp.scp + +# AmmoBinLRM5_1 watcher +[macro] +MechSubsystem=AmmoBinLRM5_1 +[include] +file=audio\abntrg.scp + +# +# LRM5_1 component +# +[include] +file=audio\lrmcmp.scp + +# LRM5_1 watcher +[macro] +MechSubsystem=LRM5_1 +[include] +file=audio\lrmtrg.scp + +# AmmoBinLRM5_2 watcher +[macro] +MechSubsystem=AmmoBinLRM5_2 +[include] +file=audio\abntrg.scp + +# LRM5_2 watcher +[macro] +MechSubsystem=LRM5_2 +[include] +file=audio\lrmtrg.scp + +# AmmoBinLRM5_3 watcher +[macro] +MechSubsystem=AmmoBinLRM5_3 +[include] +file=audio\abntrg.scp + +# LRM5_3 watcher +[macro] +MechSubsystem=LRM5_3 +[include] +file=audio\lrmtrg.scp + diff --git a/CONTENT/BT3025/AUDIO/SACCMP.SCP b/CONTENT/BT3025/AUDIO/SACCMP.SCP new file mode 100644 index 0000000..18518d9 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/SACCMP.SCP @@ -0,0 +1,38 @@ +# +################################################################### +# Small AutoCannon Audio Script +################################################################### +# + +[macro] +ProjectileFireResource=AutoCannonAction01 +ProjectileFireVolume=SmallAutoCannonFireVolume +ProjectileFirePitchOffset=200 +ProjectileFireComponent=SmallAutoCannonFireComponent +# +ProjectileLaunchResource=AutoCannonFire01 +ProjectileLaunchVolume=SmallAutoCannonLaunchVolume +ProjectileLaunchPitchOffset=200 +ProjectileLaunchComponent=SmallAutoCannonLaunchComponent +# +ProjectileLoadingResource=AutoCannonLoading01 +ProjectileLoadingComponent=SmallAutoCannonLoadingComponent +# +ProjectileLoadedResource=AutoCannonLoaded01 +ProjectileLoadedComponent=SmallAutoCannonLoadedComponent +ProjectileLoadedSequence=SmallAutoCannonLoadedSequence +# +ProjectileTriggerDuringLoadResource=TriggerDuringLoad01 +ProjectileTriggerDuringLoadComponent=SmallAutoCannonTriggerDuringLoadComponent +# +ProjectileMisfireResource=AutoCannonMisfire01 +ProjectileMisfireComponent=SmallAutoCannonMisfireComponent +ProjectileMisfireSequence=SmallAutoCannonMisfireSequence +# +ProjectileJamResource=AutoCannonJam01 +ProjectileJamComponent=SmallAutoCannonJamComponent +ProjectileJamSequence=SmallAutoCannonJamSequence + +[include] +file=audio\prjcmp.scp + diff --git a/CONTENT/BT3025/AUDIO/SACTRG.SCP b/CONTENT/BT3025/AUDIO/SACTRG.SCP new file mode 100644 index 0000000..98186fd --- /dev/null +++ b/CONTENT/BT3025/AUDIO/SACTRG.SCP @@ -0,0 +1,12 @@ +# +################################################################### +# Mech AutoCannon Internal Audio Script +################################################################### +# + +[include] +file=audio\prjtrg.scp +file=audio\clttrg.scp +file=audio\buttrg.scp +file=audio\dsttrg.scp + diff --git a/CONTENT/BT3025/AUDIO/SLRCMP.SCP b/CONTENT/BT3025/AUDIO/SLRCMP.SCP new file mode 100644 index 0000000..be58c60 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/SLRCMP.SCP @@ -0,0 +1,49 @@ +# +################################################################### +# Small Laser Audio Script +################################################################### +# + +[macro] +LaserFireResource=LaserBFire01 +LaserFirePitchOffset=200 +LaserFireComponent=SmallLaserFireComponent +LaserFireIndex=LaserBFireIndex +LaserFireResourceSelect=SmallLaserFireResourceSelect +LaserFireSampleAndHold=SmallLaserFireSampleAndHold +# +LaserSustainResource=LaserBSustain01 +LaserSustainComponent=SmallLaserSustainComponent +LaserSustainIndex=LaserBSustainIndex +LaserSustainResourceSelect=SmallLaserSustainResourceSelect +LaserSustainSampleAndHold=SmallLaserSustainSampleAndHold +# +LaserReleaseResource=LaserARelease01 +LaserReleaseComponent=SmallLaserReleaseComponent +LaserReleaseIndex=LaserAReleaseIndex +LaserReleaseResourceSelect=SmallLaserReleaseResourceSelect +LaserReleaseSampleAndHold=SmallLaserReleaseSampleAndHold +# +LaserChargeResource=LaserACharge01 +LaserChargeComponent=SmallLaserChargeComponent +LaserChargeIndex=LaserAChargeIndex +LaserChargeResourceSelect=SmallLaserChargeResourceSelect +LaserChargeSampleAndHold=SmallLaserChargeSampleAndHold +# +LaserLoadedResource=LaserLoaded01 +LaserLoadedComponent=SmallLaserLoadedComponent +LaserLoadedSequence=SmallLaserLoadedSequence +# +LaserTriggerDuringLoadResource=TriggerDuringLoad01 +LaserTriggerDuringLoadComponent=SmallLaserTriggerDuringLoadComponent +# +LaserMisfireResource=LaserAMisfire01 +LaserMisfireComponent=SmallLaserMisfireComponent +# +LaserSeekLevelResource=BasicBeep02 +LaserSeekLevelComponent=SmallLaserSeekLevelComponent + +[include] +file=audio\lsrcmp.scp + + diff --git a/CONTENT/BT3025/AUDIO/SLRCMPE.SCP b/CONTENT/BT3025/AUDIO/SLRCMPE.SCP new file mode 100644 index 0000000..751a50e --- /dev/null +++ b/CONTENT/BT3025/AUDIO/SLRCMPE.SCP @@ -0,0 +1,14 @@ +# +################################################################### +# Small Laser External Audio Script +################################################################### +# + +[macro] +LaserSustainResource=LaserBSustainExt01 +LaserSustainVolume=LaserExternalSustainVolume +LaserPitchOffset=200 +LaserSustainComponent=SmallLaserExternalSustainComponent + +[include] +file=audio\lsrcmpe.scp diff --git a/CONTENT/BT3025/AUDIO/SLRTRG.SCP b/CONTENT/BT3025/AUDIO/SLRTRG.SCP new file mode 100644 index 0000000..924cb62 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/SLRTRG.SCP @@ -0,0 +1,12 @@ +# +################################################################### +# Small Laser Internal Audio Script +################################################################### +# + +[include] +file=audio\lsrtrg.scp +file=audio\clttrg.scp +file=audio\buttrg.scp +file=audio\dsttrg.scp + diff --git a/CONTENT/BT3025/AUDIO/SLRTRGE.SCP b/CONTENT/BT3025/AUDIO/SLRTRGE.SCP new file mode 100644 index 0000000..2901a5d --- /dev/null +++ b/CONTENT/BT3025/AUDIO/SLRTRGE.SCP @@ -0,0 +1,9 @@ +# +################################################################### +# Small Laser External Triggers +################################################################### +# + +[include] +file=audio\lsrtrge.scp + diff --git a/CONTENT/BT3025/AUDIO/SMLEXP.SCP b/CONTENT/BT3025/AUDIO/SMLEXP.SCP new file mode 100644 index 0000000..4f13b8e --- /dev/null +++ b/CONTENT/BT3025/AUDIO/SMLEXP.SCP @@ -0,0 +1,108 @@ +# +################################################################### +# Small Explosion Audio Script +################################################################### +# + +[include] +file=audio\macros.scp + +# +################################################################### +# Audio locations +################################################################### +# + +[L4AudioLocation] +location_offset=0.0,0.0,0.0 +name=OriginLocation + +# +################################################################### +# SmallExplosion component +################################################################### +# + +[Dynamic3DPatchSource] +location=OriginLocation +resource=SmallExplosion01 +priority=0 +mix_presence=3 +volume_mix_level=SmallExplosionVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=True +use_attack_time_scale=False +has_compression_curve=True +compression_duration=0.5 +name=SmallExplosionComponent + +#------------------------------------------------------------------ + +# +# resource select +# + +[AudioResourceSelector] +audio_source=SmallExplosionComponent +audio_resource_index=SmallExplosionIndex +control_ID=100 +min_control_value=0.0 +max_control_value=1.0 +dump_value=False +name=SmallExplosionResourceSelect + +# +# sample and hold -> resource select +# + +[AudioSampleAndHold] +audio_component=SmallExplosionResourceSelect +control_ID=100 +sample_duration=99.0 +name=SmallExplosionSampleAndHold + +#------------------------------------------------------------------ + +# +# sample and hold -> pitch +# + +[AudioSampleAndHold] +audio_component=SmallExplosionComponent +control_ID=PitchAudioControlID +sample_duration=99.0 +min_value=-200 +max_value=200 +name=SmallExplosionPitchSampleAndHold + +# +# sample and hold -> filter +# + +[AudioSampleAndHold] +audio_component=SmallExplosionComponent +control_ID=BrightnessAudioControlID +sample_duration=99.0 +min_value=0.7 +max_value=1.0 +name=SmallExplosionBrightnessSampleAndHold + +#------------------------------------------------------------------ + +[AudioControlSplitter] +audio_component=SmallExplosionSampleAndHold +audio_component=SmallExplosionPitchSampleAndHold +audio_component=SmallExplosionBrightnessSampleAndHold +name=SmallExplosionSplitter + +[AudioControlSend] +audio_component=SmallExplosionSplitter +control_ID=StartAudioControlID +control_value=0.0 + +[AudioControlSend] +audio_component=SmallExplosionComponent +control_ID=StartAudioControlID +control_value=3.0 + diff --git a/CONTENT/BT3025/AUDIO/SND1EXT.SCP b/CONTENT/BT3025/AUDIO/SND1EXT.SCP new file mode 100644 index 0000000..dd6cdc8 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/SND1EXT.SCP @@ -0,0 +1,49 @@ +# +# External Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchext.scp + +# +# PPC_1 component +# +[include] +file=audio\glrcmpe.scp + +# PPC_1 watcher +[macro] +MechSubsystem=PPC_1 +[include] +file=audio\glrtrge.scp + +# PPC_2 watcher +[macro] +MechSubsystem=PPC_2 +[include] +file=audio\glrtrge.scp + +# PPC_3 watcher +[macro] +MechSubsystem=PPC_3 +[include] +file=audio\glrtrge.scp + +# +# AFC25 component +# +[include] +file=audio\acncmpe.scp + +# AFC25 watcher +[macro] +MechSubsystem=AFC25 +[include] +file=audio\acntrge.scp + +# ERSLaser watcher +[macro] +MechSubsystem=ERSLaser +[include] +file=audio\glrtrge.scp + diff --git a/CONTENT/BT3025/AUDIO/SND1INT.SCP b/CONTENT/BT3025/AUDIO/SND1INT.SCP new file mode 100644 index 0000000..7b2587c --- /dev/null +++ b/CONTENT/BT3025/AUDIO/SND1INT.SCP @@ -0,0 +1,85 @@ +# +# Internal Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchint.scp + +# +# PPC_1 component +# +[include] +file=audio\ppccmp.scp + +# PPC_1 watcher +[macro] +MechSubsystem=PPC_1 +[include] +file=audio\ppctrg.scp + +# PPC_2 watcher +[macro] +MechSubsystem=PPC_2 +[include] +file=audio\ppctrg.scp + +# PPC_3 watcher +[macro] +MechSubsystem=PPC_3 +[include] +file=audio\ppctrg.scp + +# +# AmmoBinAFC25 component +# +[include] +file=audio\abncmp.scp + +# AmmoBinAFC25 watcher +[macro] +MechSubsystem=AmmoBinAFC25 +[include] +file=audio\abntrg.scp + +# +# AFC25 component +# +[include] +file=audio\saccmp.scp + +# AFC25 watcher +[macro] +MechSubsystem=AFC25 +[include] +file=audio\sactrg.scp + +# +# ERSLaser component +# +[include] +file=audio\erscmp.scp + +# ERSLaser watcher +[macro] +MechSubsystem=ERSLaser +[include] +file=audio\erstrg.scp + +# AmmoBinLRM5 watcher +[macro] +MechSubsystem=AmmoBinLRM5 +[include] +file=audio\abntrg.scp + +# +# LRM5 component +# +[include] +file=audio\lrmcmp.scp + +# LRM5 watcher +[macro] +MechSubsystem=LRM5 +[include] +file=audio\lrmtrg.scp + diff --git a/CONTENT/BT3025/AUDIO/SND2EXT.SCP b/CONTENT/BT3025/AUDIO/SND2EXT.SCP new file mode 100644 index 0000000..6641dc4 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/SND2EXT.SCP @@ -0,0 +1,73 @@ +# +# External Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchext.scp + +# +# PPC_1 component +# +[include] +file=audio\glrcmpe.scp + +# PPC_1 watcher +[macro] +MechSubsystem=PPC_1 +[include] +file=audio\glrtrge.scp + +# MLaser_1 watcher +[macro] +MechSubsystem=MLaser_1 +[include] +file=audio\glrtrge.scp + +# MLaser_2 watcher +[macro] +MechSubsystem=MLaser_2 +[include] +file=audio\glrtrge.scp + +# MLaser_3 watcher +[macro] +MechSubsystem=MLaser_3 +[include] +file=audio\glrtrge.scp + +# MLaser_4 watcher +[macro] +MechSubsystem=MLaser_4 +[include] +file=audio\glrtrge.scp + +# MLaser_5 watcher +[macro] +MechSubsystem=MLaser_5 +[include] +file=audio\glrtrge.scp + +# MLaser_6 watcher +[macro] +MechSubsystem=MLaser_6 +[include] +file=audio\glrtrge.scp + +# +# AFC25_1 component +# +[include] +file=audio\acncmpe.scp + +# AFC25_1 watcher +[macro] +MechSubsystem=AFC25_1 +[include] +file=audio\acntrge.scp + +# AFC25_2 watcher +[macro] +MechSubsystem=AFC25_2 +[include] +file=audio\acntrge.scp + diff --git a/CONTENT/BT3025/AUDIO/SND2INT.SCP b/CONTENT/BT3025/AUDIO/SND2INT.SCP new file mode 100644 index 0000000..4cdd750 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/SND2INT.SCP @@ -0,0 +1,115 @@ +# +# Internal Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchint.scp + +# +# PPC_1 component +# +[include] +file=audio\eppcmp.scp + +# PPC_1 watcher +[macro] +MechSubsystem=PPC_1 +[include] +file=audio\epptrg.scp + +# +# MLaser_1 component +# +[include] +file=audio\ermcmp.scp + +# MLaser_1 watcher +[macro] +MechSubsystem=MLaser_1 +[include] +file=audio\ermtrg.scp + +# MLaser_2 watcher +[macro] +MechSubsystem=MLaser_2 +[include] +file=audio\ermtrg.scp + +# MLaser_3 watcher +[macro] +MechSubsystem=MLaser_3 +[include] +file=audio\ermtrg.scp + +# MLaser_4 watcher +[macro] +MechSubsystem=MLaser_4 +[include] +file=audio\ermtrg.scp + +# MLaser_5 watcher +[macro] +MechSubsystem=MLaser_5 +[include] +file=audio\ermtrg.scp + +# MLaser_6 watcher +[macro] +MechSubsystem=MLaser_6 +[include] +file=audio\ermtrg.scp + +# +# AmmoBinAFC25_1 component +# +[include] +file=audio\abncmp.scp + +# AmmoBinAFC25_1 watcher +[macro] +MechSubsystem=AmmoBinAFC25_1 +[include] +file=audio\abntrg.scp + +# +# AFC25_1 component +# +[include] +file=audio\saccmp.scp + +# AFC25_1 watcher +[macro] +MechSubsystem=AFC25_1 +[include] +file=audio\sactrg.scp + +# AmmoBinAFC25_2 watcher +[macro] +MechSubsystem=AmmoBinAFC25_2 +[include] +file=audio\abntrg.scp + +# AFC25_2 watcher +[macro] +MechSubsystem=AFC25_2 +[include] +file=audio\sactrg.scp + +# AmmoBinSRM6 watcher +[macro] +MechSubsystem=AmmoBinSRM6 +[include] +file=audio\abntrg.scp + +# +# SRM6 component +# +[include] +file=audio\srmcmp.scp + +# SRM6 watcher +[macro] +MechSubsystem=SRM6 +[include] +file=audio\srmtrg.scp + diff --git a/CONTENT/BT3025/AUDIO/SNDEXT.SCP b/CONTENT/BT3025/AUDIO/SNDEXT.SCP new file mode 100644 index 0000000..83b0955 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/SNDEXT.SCP @@ -0,0 +1,67 @@ +# +# External Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchext.scp + +# +# AFC25 component +# +[include] +file=audio\acncmpe.scp + +# AFC25 watcher +[macro] +MechSubsystem=AFC25 +[include] +file=audio\acntrge.scp + +# AFC100 watcher +[macro] +MechSubsystem=AFC100 +[include] +file=audio\acntrge.scp + +# +# ERMLaser_1 component +# +[include] +file=audio\glrcmpe.scp + +# ERMLaser_1 watcher +[macro] +MechSubsystem=ERMLaser_1 +[include] +file=audio\glrtrge.scp + +# ERMLaser_2 watcher +[macro] +MechSubsystem=ERMLaser_2 +[include] +file=audio\glrtrge.scp + +# ERSLaser_1 watcher +[macro] +MechSubsystem=ERSLaser_1 +[include] +file=audio\glrtrge.scp + +# ERSLaser_2 watcher +[macro] +MechSubsystem=ERSLaser_2 +[include] +file=audio\glrtrge.scp + +# MLaser_1 watcher +[macro] +MechSubsystem=MLaser_1 +[include] +file=audio\glrtrge.scp + +# MLaser_2 watcher +[macro] +MechSubsystem=MLaser_2 +[include] +file=audio\glrtrge.scp + diff --git a/CONTENT/BT3025/AUDIO/SNDINT.SCP b/CONTENT/BT3025/AUDIO/SNDINT.SCP new file mode 100644 index 0000000..019ae67 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/SNDINT.SCP @@ -0,0 +1,121 @@ +# +# Internal Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchint.scp + +# +# AmmoBinAFC25 component +# +[include] +file=audio\abncmp.scp + +# AmmoBinAFC25 watcher +[macro] +MechSubsystem=AmmoBinAFC25 +[include] +file=audio\abntrg.scp + +# +# AFC25 component +# +[include] +file=audio\saccmp.scp + +# AFC25 watcher +[macro] +MechSubsystem=AFC25 +[include] +file=audio\sactrg.scp + +# AmmoBinAFC100 watcher +[macro] +MechSubsystem=AmmoBinAFC100 +[include] +file=audio\abntrg.scp + +# +# AFC100 component +# +[include] +file=audio\laccmp.scp + +# AFC100 watcher +[macro] +MechSubsystem=AFC100 +[include] +file=audio\lactrg.scp + +# +# ERMLaser_1 component +# +[include] +file=audio\ermcmp.scp + +# ERMLaser_1 watcher +[macro] +MechSubsystem=ERMLaser_1 +[include] +file=audio\ermtrg.scp + +# ERMLaser_2 watcher +[macro] +MechSubsystem=ERMLaser_2 +[include] +file=audio\ermtrg.scp + +# +# ERSLaser_1 component +# +[include] +file=audio\erscmp.scp + +# ERSLaser_1 watcher +[macro] +MechSubsystem=ERSLaser_1 +[include] +file=audio\erstrg.scp + +# ERSLaser_2 watcher +[macro] +MechSubsystem=ERSLaser_2 +[include] +file=audio\erstrg.scp + +# +# MLaser_1 component +# +[include] +file=audio\mlrcmp.scp + +# MLaser_1 watcher +[macro] +MechSubsystem=MLaser_1 +[include] +file=audio\mlrtrg.scp + +# MLaser_2 watcher +[macro] +MechSubsystem=MLaser_2 +[include] +file=audio\mlrtrg.scp + +# AmmoBinLRM10 watcher +[macro] +MechSubsystem=AmmoBinLRM10 +[include] +file=audio\abntrg.scp + +# +# LRM10 component +# +[include] +file=audio\lrmcmp.scp + +# LRM10 watcher +[macro] +MechSubsystem=LRM10 +[include] +file=audio\lrmtrg.scp + diff --git a/CONTENT/BT3025/AUDIO/SNRTRG.SCP b/CONTENT/BT3025/AUDIO/SNRTRG.SCP new file mode 100644 index 0000000..565b4be --- /dev/null +++ b/CONTENT/BT3025/AUDIO/SNRTRG.SCP @@ -0,0 +1,12 @@ +# +################################################################### +# Sensor Audio Script +################################################################### +# + +[include] +file=audio\buttrg.scp +file=audio\dsttrg.scp +file=audio\clttrg.scp + + diff --git a/CONTENT/BT3025/AUDIO/SRMCMP.SCP b/CONTENT/BT3025/AUDIO/SRMCMP.SCP new file mode 100644 index 0000000..beb0646 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/SRMCMP.SCP @@ -0,0 +1,33 @@ +# +################################################################### +# SRM Audio Script +################################################################### +# + +[macro] +MissileFireResource=MissileLaunch01 +MissileFirePitchOffset=100 +MissileFireComponent=SRMFireComponent +# +MissileLoadingResource=MissileLoading01 +MissileLoadingComponent=SRMLoadingComponent +# +MissileLoadedResource=MissileLoaded01 +MissileLoadedComponent=SRMLoadedComponent +MissileLoadedSequence=SRMLoadedSequence +# +MissileTriggerDuringLoadResource=TriggerDuringLoad01 +MissileTriggerDuringLoadComponent=SRMTriggerDuringLoadComponent +# +MissileMisfireResource=MissileMisfire01 +MissileMisfireComponent=SRMMisfireComponent +MissileMisfireSequence=SRMMisfireSequence +# +MissileJamResource=MissileJam01 +MissileJamComponent=SRMJamComponent +MissileJamSequence=SRMJamSequence + +[include] +file=audio\mslcmp.scp + + diff --git a/CONTENT/BT3025/AUDIO/SRMTRG.SCP b/CONTENT/BT3025/AUDIO/SRMTRG.SCP new file mode 100644 index 0000000..d3e2639 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/SRMTRG.SCP @@ -0,0 +1,12 @@ +# +################################################################### +# SRM Internal Audio Script +################################################################### +# + +[include] +file=audio\msltrg.scp +file=audio\clttrg.scp +file=audio\buttrg.scp +file=audio\dsttrg.scp + diff --git a/CONTENT/BT3025/AUDIO/STATIC.SCP b/CONTENT/BT3025/AUDIO/STATIC.SCP new file mode 100644 index 0000000..bc91d7b --- /dev/null +++ b/CONTENT/BT3025/AUDIO/STATIC.SCP @@ -0,0 +1,14 @@ +# +#------------------------------------------------------------------ +# Static audio resources +#------------------------------------------------------------------ +# + +[include] +file=audio\macros.scp +file=audio\static1.scp +file=audio\static2.scp +file=audio\static3.scp +file=audio\static4.scp + + diff --git a/CONTENT/BT3025/AUDIO/STIEXT.SCP b/CONTENT/BT3025/AUDIO/STIEXT.SCP new file mode 100644 index 0000000..ba8b799 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/STIEXT.SCP @@ -0,0 +1,37 @@ +# +# External Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchext.scp + +# +# ERMLaser_1 component +# +[include] +file=audio\glrcmpe.scp + +# ERMLaser_1 watcher +[macro] +MechSubsystem=ERMLaser_1 +[include] +file=audio\glrtrge.scp + +# ERMLaser_2 watcher +[macro] +MechSubsystem=ERMLaser_2 +[include] +file=audio\glrtrge.scp + +# +# GAUSS component +# +[include] +file=audio\acncmpe.scp + +# GAUSS watcher +[macro] +MechSubsystem=GAUSS +[include] +file=audio\acntrge.scp + diff --git a/CONTENT/BT3025/AUDIO/STIINT.SCP b/CONTENT/BT3025/AUDIO/STIINT.SCP new file mode 100644 index 0000000..99cfabd --- /dev/null +++ b/CONTENT/BT3025/AUDIO/STIINT.SCP @@ -0,0 +1,79 @@ +# +# Internal Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchint.scp + +# +# ERMLaser_1 component +# +[include] +file=audio\ermcmp.scp + +# ERMLaser_1 watcher +[macro] +MechSubsystem=ERMLaser_1 +[include] +file=audio\ermtrg.scp + +# ERMLaser_2 watcher +[macro] +MechSubsystem=ERMLaser_2 +[include] +file=audio\ermtrg.scp + +# +# AmmoBinSRM6_1 component +# +[include] +file=audio\abncmp.scp + +# AmmoBinSRM6_1 watcher +[macro] +MechSubsystem=AmmoBinSRM6_1 +[include] +file=audio\abntrg.scp + +# +# SRM6_1 component +# +[include] +file=audio\srmcmp.scp + +# SRM6_1 watcher +[macro] +MechSubsystem=SRM6_1 +[include] +file=audio\srmtrg.scp + +# AmmoBinSRM6_2 watcher +[macro] +MechSubsystem=AmmoBinSRM6_2 +[include] +file=audio\abntrg.scp + +# SRM6_2 watcher +[macro] +MechSubsystem=SRM6_2 +[include] +file=audio\srmtrg.scp + +# AmmoBinGAUSS watcher +[macro] +MechSubsystem=AmmoBinGAUSS +[include] +file=audio\abntrg.scp + +# +# GAUSS component +# +[include] +file=audio\saccmp.scp + +# GAUSS watcher +[macro] +MechSubsystem=GAUSS +[include] +file=audio\sactrg.scp + diff --git a/CONTENT/BT3025/AUDIO/THR1EXT.SCP b/CONTENT/BT3025/AUDIO/THR1EXT.SCP new file mode 100644 index 0000000..aa0f595 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/THR1EXT.SCP @@ -0,0 +1,67 @@ +# +# External Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchext.scp + +# +# AFC25_1 component +# +[include] +file=audio\acncmpe.scp + +# AFC25_1 watcher +[macro] +MechSubsystem=AFC25_1 +[include] +file=audio\acntrge.scp + +# AFC25_2 watcher +[macro] +MechSubsystem=AFC25_2 +[include] +file=audio\acntrge.scp + +# +# LLaser_1 component +# +[include] +file=audio\glrcmpe.scp + +# LLaser_1 watcher +[macro] +MechSubsystem=LLaser_1 +[include] +file=audio\glrtrge.scp + +# LLaser_2 watcher +[macro] +MechSubsystem=LLaser_2 +[include] +file=audio\glrtrge.scp + +# ERSLaser_1 watcher +[macro] +MechSubsystem=ERSLaser_1 +[include] +file=audio\glrtrge.scp + +# ERSLaser_2 watcher +[macro] +MechSubsystem=ERSLaser_2 +[include] +file=audio\glrtrge.scp + +# ERSLaser_3 watcher +[macro] +MechSubsystem=ERSLaser_3 +[include] +file=audio\glrtrge.scp + +# ERSLaser_4 watcher +[macro] +MechSubsystem=ERSLaser_4 +[include] +file=audio\glrtrge.scp + diff --git a/CONTENT/BT3025/AUDIO/THR1INT.SCP b/CONTENT/BT3025/AUDIO/THR1INT.SCP new file mode 100644 index 0000000..0427a14 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/THR1INT.SCP @@ -0,0 +1,109 @@ +# +# Internal Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchint.scp + +# +# AmmoBinAFC25_1 component +# +[include] +file=audio\abncmp.scp + +# AmmoBinAFC25_1 watcher +[macro] +MechSubsystem=AmmoBinAFC25_1 +[include] +file=audio\abntrg.scp + +# +# AFC25_1 component +# +[include] +file=audio\saccmp.scp + +# AFC25_1 watcher +[macro] +MechSubsystem=AFC25_1 +[include] +file=audio\sactrg.scp + +# AmmoBinAFC25_2 watcher +[macro] +MechSubsystem=AmmoBinAFC25_2 +[include] +file=audio\abntrg.scp + +# AFC25_2 watcher +[macro] +MechSubsystem=AFC25_2 +[include] +file=audio\sactrg.scp + +# +# LLaser_1 component +# +[include] +file=audio\llrcmp.scp + +# LLaser_1 watcher +[macro] +MechSubsystem=LLaser_1 +[include] +file=audio\llrtrg.scp + +# LLaser_2 watcher +[macro] +MechSubsystem=LLaser_2 +[include] +file=audio\llrtrg.scp + +# +# ERSLaser_1 component +# +[include] +file=audio\erscmp.scp + +# ERSLaser_1 watcher +[macro] +MechSubsystem=ERSLaser_1 +[include] +file=audio\erstrg.scp + +# ERSLaser_2 watcher +[macro] +MechSubsystem=ERSLaser_2 +[include] +file=audio\erstrg.scp + +# ERSLaser_3 watcher +[macro] +MechSubsystem=ERSLaser_3 +[include] +file=audio\erstrg.scp + +# ERSLaser_4 watcher +[macro] +MechSubsystem=ERSLaser_4 +[include] +file=audio\erstrg.scp + +# AmmoBinLRM10 watcher +[macro] +MechSubsystem=AmmoBinLRM10 +[include] +file=audio\abntrg.scp + +# +# LRM10 component +# +[include] +file=audio\lrmcmp.scp + +# LRM10 watcher +[macro] +MechSubsystem=LRM10 +[include] +file=audio\lrmtrg.scp + diff --git a/CONTENT/BT3025/AUDIO/THR6EXT.SCP b/CONTENT/BT3025/AUDIO/THR6EXT.SCP new file mode 100644 index 0000000..9d07691 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/THR6EXT.SCP @@ -0,0 +1,73 @@ +# +# External Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchext.scp + +# +# ERPPC component +# +[include] +file=audio\glrcmpe.scp + +# ERPPC watcher +[macro] +MechSubsystem=ERPPC +[include] +file=audio\glrtrge.scp + +# ERLLaser watcher +[macro] +MechSubsystem=ERLLaser +[include] +file=audio\glrtrge.scp + +# ERMLaser_1 watcher +[macro] +MechSubsystem=ERMLaser_1 +[include] +file=audio\glrtrge.scp + +# ERMLaser_2 watcher +[macro] +MechSubsystem=ERMLaser_2 +[include] +file=audio\glrtrge.scp + +# +# MG_1 component +# +[include] +file=audio\acncmpe.scp + +# MG_1 watcher +[macro] +MechSubsystem=MG_1 +[include] +file=audio\acntrge.scp + +# MG_2 watcher +[macro] +MechSubsystem=MG_2 +[include] +file=audio\acntrge.scp + +# MG_3 watcher +[macro] +MechSubsystem=MG_3 +[include] +file=audio\acntrge.scp + +# MG_4 watcher +[macro] +MechSubsystem=MG_4 +[include] +file=audio\acntrge.scp + +# MG_5 watcher +[macro] +MechSubsystem=MG_5 +[include] +file=audio\acntrge.scp + diff --git a/CONTENT/BT3025/AUDIO/THR6INT.SCP b/CONTENT/BT3025/AUDIO/THR6INT.SCP new file mode 100644 index 0000000..04eede1 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/THR6INT.SCP @@ -0,0 +1,139 @@ +# +# Internal Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchint.scp + +# +# ERPPC component +# +[include] +file=audio\eppcmp.scp + +# ERPPC watcher +[macro] +MechSubsystem=ERPPC +[include] +file=audio\epptrg.scp + +# +# ERLLaser component +# +[include] +file=audio\erlcmp.scp + +# ERLLaser watcher +[macro] +MechSubsystem=ERLLaser +[include] +file=audio\erltrg.scp + +# +# ERMLaser_1 component +# +[include] +file=audio\ermcmp.scp + +# ERMLaser_1 watcher +[macro] +MechSubsystem=ERMLaser_1 +[include] +file=audio\ermtrg.scp + +# ERMLaser_2 watcher +[macro] +MechSubsystem=ERMLaser_2 +[include] +file=audio\ermtrg.scp + +# +# AmmoBinMG_1 component +# +[include] +file=audio\abncmp.scp + +# AmmoBinMG_1 watcher +[macro] +MechSubsystem=AmmoBinMG_1 +[include] +file=audio\abntrg.scp + +# +# MG_1 component +# +[include] +file=audio\saccmp.scp + +# MG_1 watcher +[macro] +MechSubsystem=MG_1 +[include] +file=audio\sactrg.scp + +# AmmoBinMG_2 watcher +[macro] +MechSubsystem=AmmoBinMG_2 +[include] +file=audio\abntrg.scp + +# MG_2 watcher +[macro] +MechSubsystem=MG_2 +[include] +file=audio\sactrg.scp + +# AmmoBinMG_3 watcher +[macro] +MechSubsystem=AmmoBinMG_3 +[include] +file=audio\abntrg.scp + +# MG_3 watcher +[macro] +MechSubsystem=MG_3 +[include] +file=audio\sactrg.scp + +# AmmoBinMG_4 watcher +[macro] +MechSubsystem=AmmoBinMG_4 +[include] +file=audio\abntrg.scp + +# MG_4 watcher +[macro] +MechSubsystem=MG_4 +[include] +file=audio\sactrg.scp + +# AmmoBinMG_5 watcher +[macro] +MechSubsystem=AmmoBinMG_5 +[include] +file=audio\abntrg.scp + +# MG_5 watcher +[macro] +MechSubsystem=MG_5 +[include] +file=audio\sactrg.scp + +# AmmoBinNRK10 watcher +[macro] +MechSubsystem=AmmoBinNRK10 +[include] +file=audio\abntrg.scp + +# +# NRK10 component +# +[include] +file=audio\lrmcmp.scp + +# NRK10 watcher +[macro] +MechSubsystem=NRK10 +[include] +file=audio\lrmtrg.scp + diff --git a/CONTENT/BT3025/AUDIO/THREXT.SCP b/CONTENT/BT3025/AUDIO/THREXT.SCP new file mode 100644 index 0000000..10e84bf --- /dev/null +++ b/CONTENT/BT3025/AUDIO/THREXT.SCP @@ -0,0 +1,49 @@ +# +# External Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchext.scp + +# +# ERPPC_1 component +# +[include] +file=audio\glrcmpe.scp + +# ERPPC_1 watcher +[macro] +MechSubsystem=ERPPC_1 +[include] +file=audio\glrtrge.scp + +# ERPPC_2 watcher +[macro] +MechSubsystem=ERPPC_2 +[include] +file=audio\glrtrge.scp + +# LLaser watcher +[macro] +MechSubsystem=LLaser +[include] +file=audio\glrtrge.scp + +# ERMLaser watcher +[macro] +MechSubsystem=ERMLaser +[include] +file=audio\glrtrge.scp + +# ERSLaser_1 watcher +[macro] +MechSubsystem=ERSLaser_1 +[include] +file=audio\glrtrge.scp + +# ERSLaser_2 watcher +[macro] +MechSubsystem=ERSLaser_2 +[include] +file=audio\glrtrge.scp + diff --git a/CONTENT/BT3025/AUDIO/THRINT.SCP b/CONTENT/BT3025/AUDIO/THRINT.SCP new file mode 100644 index 0000000..c58f08c --- /dev/null +++ b/CONTENT/BT3025/AUDIO/THRINT.SCP @@ -0,0 +1,91 @@ +# +# Internal Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchint.scp + +# +# ERPPC_1 component +# +[include] +file=audio\eppcmp.scp + +# ERPPC_1 watcher +[macro] +MechSubsystem=ERPPC_1 +[include] +file=audio\epptrg.scp + +# ERPPC_2 watcher +[macro] +MechSubsystem=ERPPC_2 +[include] +file=audio\epptrg.scp + +# +# LLaser component +# +[include] +file=audio\llrcmp.scp + +# LLaser watcher +[macro] +MechSubsystem=LLaser +[include] +file=audio\llrtrg.scp + +# +# ERMLaser component +# +[include] +file=audio\ermcmp.scp + +# ERMLaser watcher +[macro] +MechSubsystem=ERMLaser +[include] +file=audio\ermtrg.scp + +# +# ERSLaser_1 component +# +[include] +file=audio\erscmp.scp + +# ERSLaser_1 watcher +[macro] +MechSubsystem=ERSLaser_1 +[include] +file=audio\erstrg.scp + +# ERSLaser_2 watcher +[macro] +MechSubsystem=ERSLaser_2 +[include] +file=audio\erstrg.scp + +# +# AmmoBinLRM15 component +# +[include] +file=audio\abncmp.scp + +# AmmoBinLRM15 watcher +[macro] +MechSubsystem=AmmoBinLRM15 +[include] +file=audio\abntrg.scp + +# +# LRM15 component +# +[include] +file=audio\lrmcmp.scp + +# LRM15 watcher +[macro] +MechSubsystem=LRM15 +[include] +file=audio\lrmtrg.scp + diff --git a/CONTENT/BT3025/AUDIO/TRSEXT.SCP b/CONTENT/BT3025/AUDIO/TRSEXT.SCP new file mode 100644 index 0000000..c056b05 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/TRSEXT.SCP @@ -0,0 +1,52 @@ +# +################################################################### +# Mech External Torso component +################################################################### +# + +[!Dynamic3DPatchSource] +location=OriginLocation +resource=TorsoTwistExt01 +priority=0 +mix_presence=0 +volume_mix_level=TorsoTwistExternalVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=True +use_attack_time_scale=False +has_compression_curve=False +compression_duration=0.0 +name=TorsoTwistExternalComponent + +#------------------------------------------------------------------ + +# +# torso speed -> pitch +# + +[!AudioScalarScale] +subsystem=Torso +attribute=SpeedOfTorsoHorizontal +audio_component=TorsoTwistExternalComponent +attribute_value_boundary1=0.5 +attribute_value_boundary2=0.9 +control_ID=PitchAudioControlID +control_value_boundary1=-200 +control_value_boundary2=200 +exponent=1.0 +dump_value=False + +#------------------------------------------------------------------ + +[!AudioScalarTrigger] +subsystem=Torso +attribute=SpeedOfTorsoHorizontal +audio_component=TorsoTwistExternalComponent +attribute_value_threshold=0.2 +control_ID_on=StartAudioControlID +control_ID_off=StopAudioControlID +control_value_on=0.0 +control_value_off=0.0 +inverse_trigger=False +dump_value=False + diff --git a/CONTENT/BT3025/AUDIO/TRSINT.SCP b/CONTENT/BT3025/AUDIO/TRSINT.SCP new file mode 100644 index 0000000..e52d995 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/TRSINT.SCP @@ -0,0 +1,85 @@ +# +################################################################### +# Mech Internal Torso component +################################################################### +# + +[DirectPatchSource] +location=OriginLocation +resource=TorsoTwistInt01 +position=RearDirectPatchPosition +priority=2 +mix_presence=0 +volume_mix_level=TorsoTwistStartVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=True +use_attack_time_scale=False +has_compression_curve=False +compression_duration=0.0 +name=TosoTwistStartComponent + +#------------------------------------------------------------------ + +# +# torso speed -> pitch +# + +[AudioScalarScale] +subsystem=Torso +attribute=SpeedOfTorsoHorizontal +audio_component=TosoTwistStartComponent +attribute_value_boundary1=0.5 +attribute_value_boundary2=0.9 +control_ID=PitchAudioControlID +control_value_boundary1=-200 +control_value_boundary2=200 +exponent=1.0 +dump_value=False + +#------------------------------------------------------------------ + +[AudioScalarTrigger] +subsystem=Torso +attribute=SpeedOfTorsoHorizontal +audio_component=TosoTwistStartComponent +attribute_value_threshold=0.25 +control_ID_on=StartAudioControlID +control_ID_off=StopAudioControlID +control_value_on=0.0 +control_value_off=0.0 +inverse_trigger=False +dump_value=False + +# +################################################################### +# Mech Internal TorsoStop component +################################################################### +# + +[DirectPatchSource] +location=OriginLocation +resource=TorsoTwistStop01 +position=RearDirectPatchPosition +priority=2 +mix_presence=0 +volume_mix_level=TorsoTwistStopVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=True +use_attack_time_scale=False +has_compression_curve=False +compression_duration=0.0 +name=TorsoTwistStopComponent + +#------------------------------------------------------------------ + +[AudioEnumerationTrigger] +subsystem=Torso +attribute=MotionState +audio_component=TorsoTwistStopComponent +attribute_match_value=Torso::HitExtent +control_ID=StartAudioControlID +control_value=1.5 +dump_value=False + diff --git a/CONTENT/BT3025/AUDIO/VUL1EXT.SCP b/CONTENT/BT3025/AUDIO/VUL1EXT.SCP new file mode 100644 index 0000000..a4b7f3f --- /dev/null +++ b/CONTENT/BT3025/AUDIO/VUL1EXT.SCP @@ -0,0 +1,49 @@ +# +# External Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchext.scp + +# +# PPC_1 component +# +[include] +file=audio\glrcmpe.scp + +# PPC_1 watcher +[macro] +MechSubsystem=PPC_1 +[include] +file=audio\glrtrge.scp + +# PPC_2 watcher +[macro] +MechSubsystem=PPC_2 +[include] +file=audio\glrtrge.scp + +# ERSLaser_1 watcher +[macro] +MechSubsystem=ERSLaser_1 +[include] +file=audio\glrtrge.scp + +# ERSLaser_2 watcher +[macro] +MechSubsystem=ERSLaser_2 +[include] +file=audio\glrtrge.scp + +# ERSLaser_3 watcher +[macro] +MechSubsystem=ERSLaser_3 +[include] +file=audio\glrtrge.scp + +# ERSLaser_4 watcher +[macro] +MechSubsystem=ERSLaser_4 +[include] +file=audio\glrtrge.scp + diff --git a/CONTENT/BT3025/AUDIO/VUL1INT.SCP b/CONTENT/BT3025/AUDIO/VUL1INT.SCP new file mode 100644 index 0000000..922879c --- /dev/null +++ b/CONTENT/BT3025/AUDIO/VUL1INT.SCP @@ -0,0 +1,91 @@ +# +# Internal Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchint.scp + +# +# PPC_1 component +# +[include] +file=audio\ppccmp.scp + +# PPC_1 watcher +[macro] +MechSubsystem=PPC_1 +[include] +file=audio\ppctrg.scp + +# PPC_2 watcher +[macro] +MechSubsystem=PPC_2 +[include] +file=audio\ppctrg.scp + +# +# ERSLaser_1 component +# +[include] +file=audio\erscmp.scp + +# ERSLaser_1 watcher +[macro] +MechSubsystem=ERSLaser_1 +[include] +file=audio\erstrg.scp + +# ERSLaser_2 watcher +[macro] +MechSubsystem=ERSLaser_2 +[include] +file=audio\erstrg.scp + +# ERSLaser_3 watcher +[macro] +MechSubsystem=ERSLaser_3 +[include] +file=audio\erstrg.scp + +# ERSLaser_4 watcher +[macro] +MechSubsystem=ERSLaser_4 +[include] +file=audio\erstrg.scp + +# +# AmmoBinLRM15_1 component +# +[include] +file=audio\abncmp.scp + +# AmmoBinLRM15_1 watcher +[macro] +MechSubsystem=AmmoBinLRM15_1 +[include] +file=audio\abntrg.scp + +# +# LRM15_1 component +# +[include] +file=audio\lrmcmp.scp + +# LRM15_1 watcher +[macro] +MechSubsystem=LRM15_1 +[include] +file=audio\lrmtrg.scp + +# AmmoBinLRM15_2 watcher +[macro] +MechSubsystem=AmmoBinLRM15_2 +[include] +file=audio\abntrg.scp + +# LRM15_2 watcher +[macro] +MechSubsystem=LRM15_2 +[include] +file=audio\lrmtrg.scp + diff --git a/CONTENT/BT3025/AUDIO/VUL2EXT.SCP b/CONTENT/BT3025/AUDIO/VUL2EXT.SCP new file mode 100644 index 0000000..10acd2d --- /dev/null +++ b/CONTENT/BT3025/AUDIO/VUL2EXT.SCP @@ -0,0 +1,37 @@ +# +# External Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchext.scp + +# +# SLaser_1 component +# +[include] +file=audio\glrcmpe.scp + +# SLaser_1 watcher +[macro] +MechSubsystem=SLaser_1 +[include] +file=audio\glrtrge.scp + +# SLaser_2 watcher +[macro] +MechSubsystem=SLaser_2 +[include] +file=audio\glrtrge.scp + +# SLaser_3 watcher +[macro] +MechSubsystem=SLaser_3 +[include] +file=audio\glrtrge.scp + +# SLaser_4 watcher +[macro] +MechSubsystem=SLaser_4 +[include] +file=audio\glrtrge.scp + diff --git a/CONTENT/BT3025/AUDIO/VUL2INT.SCP b/CONTENT/BT3025/AUDIO/VUL2INT.SCP new file mode 100644 index 0000000..4b8e8b3 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/VUL2INT.SCP @@ -0,0 +1,121 @@ +# +# Internal Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchint.scp + +# +# SLaser_1 component +# +[include] +file=audio\slrcmp.scp + +# SLaser_1 watcher +[macro] +MechSubsystem=SLaser_1 +[include] +file=audio\slrtrg.scp + +# SLaser_2 watcher +[macro] +MechSubsystem=SLaser_2 +[include] +file=audio\slrtrg.scp + +# SLaser_3 watcher +[macro] +MechSubsystem=SLaser_3 +[include] +file=audio\slrtrg.scp + +# SLaser_4 watcher +[macro] +MechSubsystem=SLaser_4 +[include] +file=audio\slrtrg.scp + +# +# AmmoBinSTRK6_1 component +# +[include] +file=audio\abncmp.scp + +# AmmoBinSTRK6_1 watcher +[macro] +MechSubsystem=AmmoBinSTRK6_1 +[include] +file=audio\abntrg.scp + +# +# STRK6_1 component +# +[include] +file=audio\srmcmp.scp + +# STRK6_1 watcher +[macro] +MechSubsystem=STRK6_1 +[include] +file=audio\srmtrg.scp + +# AmmoBinSTRK6_2 watcher +[macro] +MechSubsystem=AmmoBinSTRK6_2 +[include] +file=audio\abntrg.scp + +# STRK6_2 watcher +[macro] +MechSubsystem=STRK6_2 +[include] +file=audio\srmtrg.scp + +# AmmoBinSTRK6_3 watcher +[macro] +MechSubsystem=AmmoBinSTRK6_3 +[include] +file=audio\abntrg.scp + +# STRK6_3 watcher +[macro] +MechSubsystem=STRK6_3 +[include] +file=audio\srmtrg.scp + +# AmmoBinSTRK6_4 watcher +[macro] +MechSubsystem=AmmoBinSTRK6_4 +[include] +file=audio\abntrg.scp + +# STRK6_4 watcher +[macro] +MechSubsystem=STRK6_4 +[include] +file=audio\srmtrg.scp + +# AmmoBinSTRK6_5 watcher +[macro] +MechSubsystem=AmmoBinSTRK6_5 +[include] +file=audio\abntrg.scp + +# STRK6_5 watcher +[macro] +MechSubsystem=STRK6_5 +[include] +file=audio\srmtrg.scp + +# AmmoBinSTRK6_6 watcher +[macro] +MechSubsystem=AmmoBinSTRK6_6 +[include] +file=audio\abntrg.scp + +# STRK6_6 watcher +[macro] +MechSubsystem=STRK6_6 +[include] +file=audio\srmtrg.scp + diff --git a/CONTENT/BT3025/AUDIO/VULEXT.SCP b/CONTENT/BT3025/AUDIO/VULEXT.SCP new file mode 100644 index 0000000..f8d8988 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/VULEXT.SCP @@ -0,0 +1,49 @@ +# +# External Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchext.scp + +# +# LLaser_1 component +# +[include] +file=audio\glrcmpe.scp + +# LLaser_1 watcher +[macro] +MechSubsystem=LLaser_1 +[include] +file=audio\glrtrge.scp + +# LLaser_2 watcher +[macro] +MechSubsystem=LLaser_2 +[include] +file=audio\glrtrge.scp + +# ERSLaser_1 watcher +[macro] +MechSubsystem=ERSLaser_1 +[include] +file=audio\glrtrge.scp + +# ERSLaser_2 watcher +[macro] +MechSubsystem=ERSLaser_2 +[include] +file=audio\glrtrge.scp + +# ERMLaser_1 watcher +[macro] +MechSubsystem=ERMLaser_1 +[include] +file=audio\glrtrge.scp + +# ERMLaser_2 watcher +[macro] +MechSubsystem=ERMLaser_2 +[include] +file=audio\glrtrge.scp + diff --git a/CONTENT/BT3025/AUDIO/VULINT.SCP b/CONTENT/BT3025/AUDIO/VULINT.SCP new file mode 100644 index 0000000..8457aa5 --- /dev/null +++ b/CONTENT/BT3025/AUDIO/VULINT.SCP @@ -0,0 +1,97 @@ +# +# Internal Audio Script +# +[include] +file=audio\macros.scp +file=audio\mchint.scp + +# +# LLaser_1 component +# +[include] +file=audio\llrcmp.scp + +# LLaser_1 watcher +[macro] +MechSubsystem=LLaser_1 +[include] +file=audio\llrtrg.scp + +# LLaser_2 watcher +[macro] +MechSubsystem=LLaser_2 +[include] +file=audio\llrtrg.scp + +# +# ERSLaser_1 component +# +[include] +file=audio\erscmp.scp + +# ERSLaser_1 watcher +[macro] +MechSubsystem=ERSLaser_1 +[include] +file=audio\erstrg.scp + +# ERSLaser_2 watcher +[macro] +MechSubsystem=ERSLaser_2 +[include] +file=audio\erstrg.scp + +# +# ERMLaser_1 component +# +[include] +file=audio\ermcmp.scp + +# ERMLaser_1 watcher +[macro] +MechSubsystem=ERMLaser_1 +[include] +file=audio\ermtrg.scp + +# ERMLaser_2 watcher +[macro] +MechSubsystem=ERMLaser_2 +[include] +file=audio\ermtrg.scp + +# +# AmmoBinLRM20_1 component +# +[include] +file=audio\abncmp.scp + +# AmmoBinLRM20_1 watcher +[macro] +MechSubsystem=AmmoBinLRM20_1 +[include] +file=audio\abntrg.scp + +# +# LRM20_1 component +# +[include] +file=audio\lrmcmp.scp + +# LRM20_1 watcher +[macro] +MechSubsystem=LRM20_1 +[include] +file=audio\lrmtrg.scp + +# AmmoBinLRM20_2 watcher +[macro] +MechSubsystem=AmmoBinLRM20_2 +[include] +file=audio\abntrg.scp + +# LRM20_2 watcher +[macro] +MechSubsystem=LRM20_2 +[include] +file=audio\lrmtrg.scp + diff --git a/CONTENT/BT3025/AUDIO/WNDEXT01.SCP b/CONTENT/BT3025/AUDIO/WNDEXT01.SCP new file mode 100644 index 0000000..04a8bae --- /dev/null +++ b/CONTENT/BT3025/AUDIO/WNDEXT01.SCP @@ -0,0 +1,80 @@ +# +################################################################### +# Wind Audio Script +################################################################### +# + +[include] +file=audio\macros.scp + +# +################################################################### +# Audio locations +################################################################### +# + +[L4AudioLocation] +location_offset=0.0,0.0,0.0 +clipping_scale=0.5 +name=OriginLocation + +# +################################################################### +# WindLoop component +################################################################### +# + +[Dynamic3DPatchSource] +location=OriginLocation +resource=WindLoop01 +priority=0 +mix_presence=4 +volume_mix_level=WindVolume +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=False +use_attack_time_scale=False +has_compression_curve=False +compression_duration=0.0 +name=WindLoopComponent + +#------------------------------------------------------------------ + +# +# sample and hold -> pitch +# + +[AudioSampleAndHold] +audio_component=WindLoopComponent +control_ID=PitchAudioControlID +sample_duration=99.0 +min_value=-300 +max_value=100 +name=WindLoopPitchSampleAndHold + +# +# sample and hold -> filter +# + +[AudioSampleAndHold] +audio_component=WindLoopComponent +control_ID=BrightnessAudioControlID +sample_duration=99.0 +min_value=0.6 +max_value=1.0 +name=WindLoopBrightnessSampleAndHold + +#------------------------------------------------------------------ + +[AudioControlSplitter] +audio_component=WindLoopPitchSampleAndHold +audio_component=WindLoopBrightnessSampleAndHold +audio_component=WindLoopComponent +name=WindLoopSplitter + +[AudioControlSend] +audio_component=WindLoopSplitter +control_ID=StartAudioControlID +control_value=0.0 + + diff --git a/CONTENT/BT3025/AUDIO/WPNINT.SCP b/CONTENT/BT3025/AUDIO/WPNINT.SCP new file mode 100644 index 0000000..e20e57f --- /dev/null +++ b/CONTENT/BT3025/AUDIO/WPNINT.SCP @@ -0,0 +1,113 @@ +# +################################################################### +# Weapon Mech Internal Audio Script +################################################################### +# + +# +################################################################### +# Includes +################################################################### +# + +[include] +file=audio\macros.scp +file=audio\mchint.scp + +# +################################################################### +# Mech Subsystems +################################################################### +# +[include] +file=audio\butcmp.scp +file=audio\dstcmp.scp + +# +################################################################### +# Sensor +################################################################### +# +[macro] +MechSubsystem=Avionics + +[include] +file=audio\buttrg.scp +file=audio\dsttrg.scp + +# +################################################################### +# Myomers +################################################################### +# +[macro] +MechSubsystem=Myomers + +[include] +file=audio\buttrg.scp +file=audio\dsttrg.scp + +# +################################################################### +# PPC +################################################################### +# +[include] +file=audio\ppccmp.scp + +[macro] +MechSubsystem=PPC + +[include] +file=audio\ppctrg.scp +file=audio\buttrg.scp +file=audio\dsttrg.scp + +# +################################################################### +# MACHINE GUN +################################################################### +# +[include] +file=audio\mgncmp.scp + +[macro] +MechSubsystem=MG + +[include] +file=audio\mgntrg.scp +file=audio\buttrg.scp +file=audio\dsttrg.scp + +# +################################################################### +# AUTO CANON +################################################################### +# +[include] +file=audio\acncmp.scp + +[macro] +MechSubsystem=AutoCannon + +[include] +file=audio\acntrg.scp +file=audio\buttrg.scp +file=audio\dsttrg.scp + +# +################################################################### +# SRM +################################################################### +# +[include] +file=audio\srmcmp.scp + +[macro] +MechSubsystem=SRM6 + +[include] +file=audio\srmtrg.scp +file=audio\buttrg.scp +file=audio\dsttrg.scp + diff --git a/CONTENT/BT3025/AUTOEXEC.BAT b/CONTENT/BT3025/AUTOEXEC.BAT new file mode 100644 index 0000000..c1568e5 --- /dev/null +++ b/CONTENT/BT3025/AUTOEXEC.BAT @@ -0,0 +1,22 @@ +@ECHO Off +rem ******* +rem * Standard autoexec.bat for field pods, this should not be edited without +rem * approval from STS +rem ******* +PATH C:\;C:\NWDOS;C:\NWCLIENT;C:\VGL_LABS +VERIFY OFF +PROMPT $P$G +SET NWDOSCFG=C:\NWDOS +SET FBP_USER=Virtual World Entertainment +rem +rem *** load the network stuff +rem +lh c:\nwclient\lsl +lh c:\nwclient\lnepci +lh c:\nwclient\odipkt +NWCACHE 1024 1024 /LEND=OFF /DELAY=1000 +call PARAMETR.bat Rel410 BT POD SLOW SVGA +if exist c:\%VERSION%\%PREFGAME%\last.spl copy c:\%VERSION%\%PREFGAME%\last.spl c:\%VERSION%\%PREFGAME%\bad.spl +if exist c:\%VERSION%\%PREFGAME%\last.spl del c:\%VERSION%\%PREFGAME%\last.spl +call c:\vgl_labs\update.bat +c:\vgl_labs\go.bat diff --git a/CONTENT/BT3025/BT.BAT b/CONTENT/BT3025/BT.BAT new file mode 100644 index 0000000..fe5a713 --- /dev/null +++ b/CONTENT/BT3025/BT.BAT @@ -0,0 +1,24 @@ +@echo off +call setenv.bat r s n n +call showenv.bat +set a0= +if exist btl4d3s.exe set a0=btl4d3s.exe +if exist btl4d2s.exe set a0=btl4d2s.exe +if exist btl4d0.exe set a0=btl4d0.exe +if exist btl4opt.exe set a0=btl4opt.exe +if "%a0%"=="" goto error +if "%1"=="" set aa=test +if not "%1"=="" set aa=%1 +echo on +32rtm.exe -x +%a0% -egg %aa%.egg +32rtm.exe -u +@echo off +set aa= +goto end +:error +echo. +echo Program not found in current directory. +echo. +:end +set a0= diff --git a/CONTENT/BT3025/BTCAM.BAT b/CONTENT/BT3025/BTCAM.BAT new file mode 100644 index 0000000..8fe0a06 --- /dev/null +++ b/CONTENT/BT3025/BTCAM.BAT @@ -0,0 +1,43 @@ +@echo off +rem ------------------------------------------------------------------ +rem L4EYES=x y z pitch yaw roll [relative] +rem ------------------------------------------------------------------ +rem set L4EYES=25 5.9 -10 0 95 0 r +rem set L4EYES=0 7.3 -19 -7 180 0 r +rem Animation Cycle +rem set L4EYES=0 7.3 -19 -6 180 0 r +rem set L4EYES=-3.706716 7.3 -18.634920 -6 191.25 0 r +rem set L4EYES=-7.270985 7.3 -17.553711 -6 202.5 0 r +rem set L4EYES=-10.555834 7.3 -15.797922 -6 213.75 0 r +set L4EYES=-13.435028 7.3 -13.435028 -6 225 0 r +rem set L4EYES=-15.797922 7.3 -10.555834 -6 236.25 0 r +rem set L4EYES=-17.553711 7.3 -7.270985 -6 247.5 0 r +rem set L4EYES=-18.634920 7.3 -3.706716 -6 258.75 0 r +rem set L4EYES=-19 7.3 0 -6 270 0 r +rem set L4EYES=-18.634920 7.3 3.706716 -6 281.25 0 r +rem set L4EYES=-17.553711 7.3 7.270985 -6 292.5 0 r +rem set L4EYES=-15.797922 7.3 10.555834 -6 303.75 0 r +rem set L4EYES=-13.435028 7.3 13.435028 -6 315 0 r +rem set L4EYES=-10.555834 7.3 15.797922 -6 326.25 0 r +rem set L4EYES=-7.270985 7.3 17.553711 -6 337.5 0 r +rem set L4EYES=-3.706716 7.3 18.634920 -6 348.75 0 r +rem set L4EYES=0 7.3 19 -6 0 0 r +rem set L4EYES=3.706716 7.3 18.634920 -6 11.25 0 r +rem set L4EYES=7.270985 7.3 17.553711 -6 22.5 0 r +rem set L4EYES=10.555834 7.3 15.797922 -6 33.75 0 r +rem set L4EYES=13.435028 7.3 13.435028 -6 45 0 r +rem set L4EYES=15.797922 7.3 10.555834 -6 56.25 0 r +rem set L4EYES=17.553711 7.3 7.270985 -6 67.5 0 r +rem set L4EYES=18.634920 7.3 3.706716 -6 78.75 0 r +rem set L4EYES=19 7.3 0 -6 90 0 r +rem set L4EYES=18.634920 7.3 -3.706716 -6 101.25 0 r +rem set L4EYES=17.553711 7.3 -7.270985 -6 112.5 0 r +rem set L4EYES=15.797922 7.3 -10.555834 -6 123.75 0 r +rem set L4EYES=13.435028 7.3 -13.435028 -6 135 0 r +rem set L4EYES=10.555834 7.3 -15.797922 -6 146.25 0 r +rem set L4EYES=7.270985 7.3 -17.553711 -6 157.5 0 r +rem set L4EYES=3.706716 7.3 -18.634920 -6 168.75 0 r +set L4VIEWEXT=True +rem ------------------------------------------------------------------ +call btprep.bat %1 %2 %3 %4 %5 %6 %7 %8 %9 +menu.bat short diff --git a/CONTENT/BT3025/BTCAM/BTCAM01.BAT b/CONTENT/BT3025/BTCAM/BTCAM01.BAT new file mode 100644 index 0000000..e0aa52f --- /dev/null +++ b/CONTENT/BT3025/BTCAM/BTCAM01.BAT @@ -0,0 +1,43 @@ +@echo off +rem ------------------------------------------------------------------ +rem L4EYES=x y z pitch yaw roll [relative] +rem ------------------------------------------------------------------ +rem set L4EYES=25 5.9 -10 0 95 0 r +rem set L4EYES=0 7.3 -19 -7 180 0 r +rem Animation Cycle +set L4EYES=0 7.3 -19 -6 180 0 r +rem set L4EYES=-3.706716 7.3 -18.634920 -6 191.25 0 r +rem set L4EYES=-7.270985 7.3 -17.553711 -6 202.5 0 r +rem set L4EYES=-10.555834 7.3 -15.797922 -6 213.75 0 r +rem set L4EYES=-13.435028 7.3 -13.435028 -6 225 0 r +rem set L4EYES=-15.797922 7.3 -10.555834 -6 236.25 0 r +rem set L4EYES=-17.553711 7.3 -7.270985 -6 247.5 0 r +rem set L4EYES=-18.634920 7.3 -3.706716 -6 258.75 0 r +rem set L4EYES=-19 7.3 0 -6 270 0 r +rem set L4EYES=-18.634920 7.3 3.706716 -6 281.25 0 r +rem set L4EYES=-17.553711 7.3 7.270985 -6 292.5 0 r +rem set L4EYES=-15.797922 7.3 10.555834 -6 303.75 0 r +rem set L4EYES=-13.435028 7.3 13.435028 -6 315 0 r +rem set L4EYES=-10.555834 7.3 15.797922 -6 326.25 0 r +rem set L4EYES=-7.270985 7.3 17.553711 -6 337.5 0 r +rem set L4EYES=-3.706716 7.3 18.634920 -6 348.75 0 r +rem set L4EYES=0 7.3 19 -6 0 0 r +rem set L4EYES=3.706716 7.3 18.634920 -6 11.25 0 r +rem set L4EYES=7.270985 7.3 17.553711 -6 22.5 0 r +rem set L4EYES=10.555834 7.3 15.797922 -6 33.75 0 r +rem set L4EYES=13.435028 7.3 13.435028 -6 45 0 r +rem set L4EYES=15.797922 7.3 10.555834 -6 56.25 0 r +rem set L4EYES=17.553711 7.3 7.270985 -6 67.5 0 r +rem set L4EYES=18.634920 7.3 3.706716 -6 78.75 0 r +rem set L4EYES=19 7.3 0 -6 90 0 r +rem set L4EYES=18.634920 7.3 -3.706716 -6 101.25 0 r +rem set L4EYES=17.553711 7.3 -7.270985 -6 112.5 0 r +rem set L4EYES=15.797922 7.3 -10.555834 -6 123.75 0 r +rem set L4EYES=13.435028 7.3 -13.435028 -6 135 0 r +rem set L4EYES=10.555834 7.3 -15.797922 -6 146.25 0 r +rem set L4EYES=7.270985 7.3 -17.553711 -6 157.5 0 r +rem set L4EYES=3.706716 7.3 -18.634920 -6 168.75 0 r +set L4VIEWEXT=True +rem ------------------------------------------------------------------ +call btprep.bat %1 %2 %3 %4 %5 %6 %7 %8 %9 +menu.bat short diff --git a/CONTENT/BT3025/BTCAM/BTCAM02.BAT b/CONTENT/BT3025/BTCAM/BTCAM02.BAT new file mode 100644 index 0000000..9b1d296 --- /dev/null +++ b/CONTENT/BT3025/BTCAM/BTCAM02.BAT @@ -0,0 +1,43 @@ +@echo off +rem ------------------------------------------------------------------ +rem L4EYES=x y z pitch yaw roll [relative] +rem ------------------------------------------------------------------ +rem set L4EYES=25 5.9 -10 0 95 0 r +rem set L4EYES=0 7.3 -19 -7 180 0 r +rem Animation Cycle +rem set L4EYES=0 7.3 -19 -6 180 0 r +set L4EYES=-3.706716 7.3 -18.634920 -6 191.25 0 r +rem set L4EYES=-7.270985 7.3 -17.553711 -6 202.5 0 r +rem set L4EYES=-10.555834 7.3 -15.797922 -6 213.75 0 r +rem set L4EYES=-13.435028 7.3 -13.435028 -6 225 0 r +rem set L4EYES=-15.797922 7.3 -10.555834 -6 236.25 0 r +rem set L4EYES=-17.553711 7.3 -7.270985 -6 247.5 0 r +rem set L4EYES=-18.634920 7.3 -3.706716 -6 258.75 0 r +rem set L4EYES=-19 7.3 0 -6 270 0 r +rem set L4EYES=-18.634920 7.3 3.706716 -6 281.25 0 r +rem set L4EYES=-17.553711 7.3 7.270985 -6 292.5 0 r +rem set L4EYES=-15.797922 7.3 10.555834 -6 303.75 0 r +rem set L4EYES=-13.435028 7.3 13.435028 -6 315 0 r +rem set L4EYES=-10.555834 7.3 15.797922 -6 326.25 0 r +rem set L4EYES=-7.270985 7.3 17.553711 -6 337.5 0 r +rem set L4EYES=-3.706716 7.3 18.634920 -6 348.75 0 r +rem set L4EYES=0 7.3 19 -6 0 0 r +rem set L4EYES=3.706716 7.3 18.634920 -6 11.25 0 r +rem set L4EYES=7.270985 7.3 17.553711 -6 22.5 0 r +rem set L4EYES=10.555834 7.3 15.797922 -6 33.75 0 r +rem set L4EYES=13.435028 7.3 13.435028 -6 45 0 r +rem set L4EYES=15.797922 7.3 10.555834 -6 56.25 0 r +rem set L4EYES=17.553711 7.3 7.270985 -6 67.5 0 r +rem set L4EYES=18.634920 7.3 3.706716 -6 78.75 0 r +rem set L4EYES=19 7.3 0 -6 90 0 r +rem set L4EYES=18.634920 7.3 -3.706716 -6 101.25 0 r +rem set L4EYES=17.553711 7.3 -7.270985 -6 112.5 0 r +rem set L4EYES=15.797922 7.3 -10.555834 -6 123.75 0 r +rem set L4EYES=13.435028 7.3 -13.435028 -6 135 0 r +rem set L4EYES=10.555834 7.3 -15.797922 -6 146.25 0 r +rem set L4EYES=7.270985 7.3 -17.553711 -6 157.5 0 r +rem set L4EYES=3.706716 7.3 -18.634920 -6 168.75 0 r +set L4VIEWEXT=True +rem ------------------------------------------------------------------ +call btprep.bat %1 %2 %3 %4 %5 %6 %7 %8 %9 +menu.bat short diff --git a/CONTENT/BT3025/BTCAM/BTCAM03.BAT b/CONTENT/BT3025/BTCAM/BTCAM03.BAT new file mode 100644 index 0000000..edde84c --- /dev/null +++ b/CONTENT/BT3025/BTCAM/BTCAM03.BAT @@ -0,0 +1,43 @@ +@echo off +rem ------------------------------------------------------------------ +rem L4EYES=x y z pitch yaw roll [relative] +rem ------------------------------------------------------------------ +rem set L4EYES=25 5.9 -10 0 95 0 r +rem set L4EYES=0 7.3 -19 -7 180 0 r +rem Animation Cycle +rem set L4EYES=0 7.3 -19 -6 180 0 r +rem set L4EYES=-3.706716 7.3 -18.634920 -6 191.25 0 r +set L4EYES=-7.270985 7.3 -17.553711 -6 202.5 0 r +rem set L4EYES=-10.555834 7.3 -15.797922 -6 213.75 0 r +rem set L4EYES=-13.435028 7.3 -13.435028 -6 225 0 r +rem set L4EYES=-15.797922 7.3 -10.555834 -6 236.25 0 r +rem set L4EYES=-17.553711 7.3 -7.270985 -6 247.5 0 r +rem set L4EYES=-18.634920 7.3 -3.706716 -6 258.75 0 r +rem set L4EYES=-19 7.3 0 -6 270 0 r +rem set L4EYES=-18.634920 7.3 3.706716 -6 281.25 0 r +rem set L4EYES=-17.553711 7.3 7.270985 -6 292.5 0 r +rem set L4EYES=-15.797922 7.3 10.555834 -6 303.75 0 r +rem set L4EYES=-13.435028 7.3 13.435028 -6 315 0 r +rem set L4EYES=-10.555834 7.3 15.797922 -6 326.25 0 r +rem set L4EYES=-7.270985 7.3 17.553711 -6 337.5 0 r +rem set L4EYES=-3.706716 7.3 18.634920 -6 348.75 0 r +rem set L4EYES=0 7.3 19 -6 0 0 r +rem set L4EYES=3.706716 7.3 18.634920 -6 11.25 0 r +rem set L4EYES=7.270985 7.3 17.553711 -6 22.5 0 r +rem set L4EYES=10.555834 7.3 15.797922 -6 33.75 0 r +rem set L4EYES=13.435028 7.3 13.435028 -6 45 0 r +rem set L4EYES=15.797922 7.3 10.555834 -6 56.25 0 r +rem set L4EYES=17.553711 7.3 7.270985 -6 67.5 0 r +rem set L4EYES=18.634920 7.3 3.706716 -6 78.75 0 r +rem set L4EYES=19 7.3 0 -6 90 0 r +rem set L4EYES=18.634920 7.3 -3.706716 -6 101.25 0 r +rem set L4EYES=17.553711 7.3 -7.270985 -6 112.5 0 r +rem set L4EYES=15.797922 7.3 -10.555834 -6 123.75 0 r +rem set L4EYES=13.435028 7.3 -13.435028 -6 135 0 r +rem set L4EYES=10.555834 7.3 -15.797922 -6 146.25 0 r +rem set L4EYES=7.270985 7.3 -17.553711 -6 157.5 0 r +rem set L4EYES=3.706716 7.3 -18.634920 -6 168.75 0 r +set L4VIEWEXT=True +rem ------------------------------------------------------------------ +call btprep.bat %1 %2 %3 %4 %5 %6 %7 %8 %9 +menu.bat short diff --git a/CONTENT/BT3025/BTCAM/BTCAM04.BAT b/CONTENT/BT3025/BTCAM/BTCAM04.BAT new file mode 100644 index 0000000..8b8de44 --- /dev/null +++ b/CONTENT/BT3025/BTCAM/BTCAM04.BAT @@ -0,0 +1,43 @@ +@echo off +rem ------------------------------------------------------------------ +rem L4EYES=x y z pitch yaw roll [relative] +rem ------------------------------------------------------------------ +rem set L4EYES=25 5.9 -10 0 95 0 r +rem set L4EYES=0 7.3 -19 -7 180 0 r +rem Animation Cycle +rem set L4EYES=0 7.3 -19 -6 180 0 r +rem set L4EYES=-3.706716 7.3 -18.634920 -6 191.25 0 r +rem set L4EYES=-7.270985 7.3 -17.553711 -6 202.5 0 r +set L4EYES=-10.555834 7.3 -15.797922 -6 213.75 0 r +rem set L4EYES=-13.435028 7.3 -13.435028 -6 225 0 r +rem set L4EYES=-15.797922 7.3 -10.555834 -6 236.25 0 r +rem set L4EYES=-17.553711 7.3 -7.270985 -6 247.5 0 r +rem set L4EYES=-18.634920 7.3 -3.706716 -6 258.75 0 r +rem set L4EYES=-19 7.3 0 -6 270 0 r +rem set L4EYES=-18.634920 7.3 3.706716 -6 281.25 0 r +rem set L4EYES=-17.553711 7.3 7.270985 -6 292.5 0 r +rem set L4EYES=-15.797922 7.3 10.555834 -6 303.75 0 r +rem set L4EYES=-13.435028 7.3 13.435028 -6 315 0 r +rem set L4EYES=-10.555834 7.3 15.797922 -6 326.25 0 r +rem set L4EYES=-7.270985 7.3 17.553711 -6 337.5 0 r +rem set L4EYES=-3.706716 7.3 18.634920 -6 348.75 0 r +rem set L4EYES=0 7.3 19 -6 0 0 r +rem set L4EYES=3.706716 7.3 18.634920 -6 11.25 0 r +rem set L4EYES=7.270985 7.3 17.553711 -6 22.5 0 r +rem set L4EYES=10.555834 7.3 15.797922 -6 33.75 0 r +rem set L4EYES=13.435028 7.3 13.435028 -6 45 0 r +rem set L4EYES=15.797922 7.3 10.555834 -6 56.25 0 r +rem set L4EYES=17.553711 7.3 7.270985 -6 67.5 0 r +rem set L4EYES=18.634920 7.3 3.706716 -6 78.75 0 r +rem set L4EYES=19 7.3 0 -6 90 0 r +rem set L4EYES=18.634920 7.3 -3.706716 -6 101.25 0 r +rem set L4EYES=17.553711 7.3 -7.270985 -6 112.5 0 r +rem set L4EYES=15.797922 7.3 -10.555834 -6 123.75 0 r +rem set L4EYES=13.435028 7.3 -13.435028 -6 135 0 r +rem set L4EYES=10.555834 7.3 -15.797922 -6 146.25 0 r +rem set L4EYES=7.270985 7.3 -17.553711 -6 157.5 0 r +rem set L4EYES=3.706716 7.3 -18.634920 -6 168.75 0 r +set L4VIEWEXT=True +rem ------------------------------------------------------------------ +call btprep.bat %1 %2 %3 %4 %5 %6 %7 %8 %9 +menu.bat short diff --git a/CONTENT/BT3025/BTCAM/BTCAM05.BAT b/CONTENT/BT3025/BTCAM/BTCAM05.BAT new file mode 100644 index 0000000..8fe0a06 --- /dev/null +++ b/CONTENT/BT3025/BTCAM/BTCAM05.BAT @@ -0,0 +1,43 @@ +@echo off +rem ------------------------------------------------------------------ +rem L4EYES=x y z pitch yaw roll [relative] +rem ------------------------------------------------------------------ +rem set L4EYES=25 5.9 -10 0 95 0 r +rem set L4EYES=0 7.3 -19 -7 180 0 r +rem Animation Cycle +rem set L4EYES=0 7.3 -19 -6 180 0 r +rem set L4EYES=-3.706716 7.3 -18.634920 -6 191.25 0 r +rem set L4EYES=-7.270985 7.3 -17.553711 -6 202.5 0 r +rem set L4EYES=-10.555834 7.3 -15.797922 -6 213.75 0 r +set L4EYES=-13.435028 7.3 -13.435028 -6 225 0 r +rem set L4EYES=-15.797922 7.3 -10.555834 -6 236.25 0 r +rem set L4EYES=-17.553711 7.3 -7.270985 -6 247.5 0 r +rem set L4EYES=-18.634920 7.3 -3.706716 -6 258.75 0 r +rem set L4EYES=-19 7.3 0 -6 270 0 r +rem set L4EYES=-18.634920 7.3 3.706716 -6 281.25 0 r +rem set L4EYES=-17.553711 7.3 7.270985 -6 292.5 0 r +rem set L4EYES=-15.797922 7.3 10.555834 -6 303.75 0 r +rem set L4EYES=-13.435028 7.3 13.435028 -6 315 0 r +rem set L4EYES=-10.555834 7.3 15.797922 -6 326.25 0 r +rem set L4EYES=-7.270985 7.3 17.553711 -6 337.5 0 r +rem set L4EYES=-3.706716 7.3 18.634920 -6 348.75 0 r +rem set L4EYES=0 7.3 19 -6 0 0 r +rem set L4EYES=3.706716 7.3 18.634920 -6 11.25 0 r +rem set L4EYES=7.270985 7.3 17.553711 -6 22.5 0 r +rem set L4EYES=10.555834 7.3 15.797922 -6 33.75 0 r +rem set L4EYES=13.435028 7.3 13.435028 -6 45 0 r +rem set L4EYES=15.797922 7.3 10.555834 -6 56.25 0 r +rem set L4EYES=17.553711 7.3 7.270985 -6 67.5 0 r +rem set L4EYES=18.634920 7.3 3.706716 -6 78.75 0 r +rem set L4EYES=19 7.3 0 -6 90 0 r +rem set L4EYES=18.634920 7.3 -3.706716 -6 101.25 0 r +rem set L4EYES=17.553711 7.3 -7.270985 -6 112.5 0 r +rem set L4EYES=15.797922 7.3 -10.555834 -6 123.75 0 r +rem set L4EYES=13.435028 7.3 -13.435028 -6 135 0 r +rem set L4EYES=10.555834 7.3 -15.797922 -6 146.25 0 r +rem set L4EYES=7.270985 7.3 -17.553711 -6 157.5 0 r +rem set L4EYES=3.706716 7.3 -18.634920 -6 168.75 0 r +set L4VIEWEXT=True +rem ------------------------------------------------------------------ +call btprep.bat %1 %2 %3 %4 %5 %6 %7 %8 %9 +menu.bat short diff --git a/CONTENT/BT3025/BTCAM/BTCAM06.BAT b/CONTENT/BT3025/BTCAM/BTCAM06.BAT new file mode 100644 index 0000000..5ef6e5a --- /dev/null +++ b/CONTENT/BT3025/BTCAM/BTCAM06.BAT @@ -0,0 +1,43 @@ +@echo off +rem ------------------------------------------------------------------ +rem L4EYES=x y z pitch yaw roll [relative] +rem ------------------------------------------------------------------ +rem set L4EYES=25 5.9 -10 0 95 0 r +rem set L4EYES=0 7.3 -19 -7 180 0 r +rem Animation Cycle +rem set L4EYES=0 7.3 -19 -6 180 0 r +rem set L4EYES=-3.706716 7.3 -18.634920 -6 191.25 0 r +rem set L4EYES=-7.270985 7.3 -17.553711 -6 202.5 0 r +rem set L4EYES=-10.555834 7.3 -15.797922 -6 213.75 0 r +rem set L4EYES=-13.435028 7.3 -13.435028 -6 225 0 r +set L4EYES=-15.797922 7.3 -10.555834 -6 236.25 0 r +rem set L4EYES=-17.553711 7.3 -7.270985 -6 247.5 0 r +rem set L4EYES=-18.634920 7.3 -3.706716 -6 258.75 0 r +rem set L4EYES=-19 7.3 0 -6 270 0 r +rem set L4EYES=-18.634920 7.3 3.706716 -6 281.25 0 r +rem set L4EYES=-17.553711 7.3 7.270985 -6 292.5 0 r +rem set L4EYES=-15.797922 7.3 10.555834 -6 303.75 0 r +rem set L4EYES=-13.435028 7.3 13.435028 -6 315 0 r +rem set L4EYES=-10.555834 7.3 15.797922 -6 326.25 0 r +rem set L4EYES=-7.270985 7.3 17.553711 -6 337.5 0 r +rem set L4EYES=-3.706716 7.3 18.634920 -6 348.75 0 r +rem set L4EYES=0 7.3 19 -6 0 0 r +rem set L4EYES=3.706716 7.3 18.634920 -6 11.25 0 r +rem set L4EYES=7.270985 7.3 17.553711 -6 22.5 0 r +rem set L4EYES=10.555834 7.3 15.797922 -6 33.75 0 r +rem set L4EYES=13.435028 7.3 13.435028 -6 45 0 r +rem set L4EYES=15.797922 7.3 10.555834 -6 56.25 0 r +rem set L4EYES=17.553711 7.3 7.270985 -6 67.5 0 r +rem set L4EYES=18.634920 7.3 3.706716 -6 78.75 0 r +rem set L4EYES=19 7.3 0 -6 90 0 r +rem set L4EYES=18.634920 7.3 -3.706716 -6 101.25 0 r +rem set L4EYES=17.553711 7.3 -7.270985 -6 112.5 0 r +rem set L4EYES=15.797922 7.3 -10.555834 -6 123.75 0 r +rem set L4EYES=13.435028 7.3 -13.435028 -6 135 0 r +rem set L4EYES=10.555834 7.3 -15.797922 -6 146.25 0 r +rem set L4EYES=7.270985 7.3 -17.553711 -6 157.5 0 r +rem set L4EYES=3.706716 7.3 -18.634920 -6 168.75 0 r +set L4VIEWEXT=True +rem ------------------------------------------------------------------ +call btprep.bat %1 %2 %3 %4 %5 %6 %7 %8 %9 +menu.bat short diff --git a/CONTENT/BT3025/BTCAM/BTCAM07.BAT b/CONTENT/BT3025/BTCAM/BTCAM07.BAT new file mode 100644 index 0000000..ffdc350 --- /dev/null +++ b/CONTENT/BT3025/BTCAM/BTCAM07.BAT @@ -0,0 +1,43 @@ +@echo off +rem ------------------------------------------------------------------ +rem L4EYES=x y z pitch yaw roll [relative] +rem ------------------------------------------------------------------ +rem set L4EYES=25 5.9 -10 0 95 0 r +rem set L4EYES=0 7.3 -19 -7 180 0 r +rem Animation Cycle +rem set L4EYES=0 7.3 -19 -6 180 0 r +rem set L4EYES=-3.706716 7.3 -18.634920 -6 191.25 0 r +rem set L4EYES=-7.270985 7.3 -17.553711 -6 202.5 0 r +rem set L4EYES=-10.555834 7.3 -15.797922 -6 213.75 0 r +rem set L4EYES=-13.435028 7.3 -13.435028 -6 225 0 r +rem set L4EYES=-15.797922 7.3 -10.555834 -6 236.25 0 r +set L4EYES=-17.553711 7.3 -7.270985 -6 247.5 0 r +rem set L4EYES=-18.634920 7.3 -3.706716 -6 258.75 0 r +rem set L4EYES=-19 7.3 0 -6 270 0 r +rem set L4EYES=-18.634920 7.3 3.706716 -6 281.25 0 r +rem set L4EYES=-17.553711 7.3 7.270985 -6 292.5 0 r +rem set L4EYES=-15.797922 7.3 10.555834 -6 303.75 0 r +rem set L4EYES=-13.435028 7.3 13.435028 -6 315 0 r +rem set L4EYES=-10.555834 7.3 15.797922 -6 326.25 0 r +rem set L4EYES=-7.270985 7.3 17.553711 -6 337.5 0 r +rem set L4EYES=-3.706716 7.3 18.634920 -6 348.75 0 r +rem set L4EYES=0 7.3 19 -6 0 0 r +rem set L4EYES=3.706716 7.3 18.634920 -6 11.25 0 r +rem set L4EYES=7.270985 7.3 17.553711 -6 22.5 0 r +rem set L4EYES=10.555834 7.3 15.797922 -6 33.75 0 r +rem set L4EYES=13.435028 7.3 13.435028 -6 45 0 r +rem set L4EYES=15.797922 7.3 10.555834 -6 56.25 0 r +rem set L4EYES=17.553711 7.3 7.270985 -6 67.5 0 r +rem set L4EYES=18.634920 7.3 3.706716 -6 78.75 0 r +rem set L4EYES=19 7.3 0 -6 90 0 r +rem set L4EYES=18.634920 7.3 -3.706716 -6 101.25 0 r +rem set L4EYES=17.553711 7.3 -7.270985 -6 112.5 0 r +rem set L4EYES=15.797922 7.3 -10.555834 -6 123.75 0 r +rem set L4EYES=13.435028 7.3 -13.435028 -6 135 0 r +rem set L4EYES=10.555834 7.3 -15.797922 -6 146.25 0 r +rem set L4EYES=7.270985 7.3 -17.553711 -6 157.5 0 r +rem set L4EYES=3.706716 7.3 -18.634920 -6 168.75 0 r +set L4VIEWEXT=True +rem ------------------------------------------------------------------ +call btprep.bat %1 %2 %3 %4 %5 %6 %7 %8 %9 +menu.bat short diff --git a/CONTENT/BT3025/BTCAM/BTCAM08.BAT b/CONTENT/BT3025/BTCAM/BTCAM08.BAT new file mode 100644 index 0000000..2493074 --- /dev/null +++ b/CONTENT/BT3025/BTCAM/BTCAM08.BAT @@ -0,0 +1,43 @@ +@echo off +rem ------------------------------------------------------------------ +rem L4EYES=x y z pitch yaw roll [relative] +rem ------------------------------------------------------------------ +rem set L4EYES=25 5.9 -10 0 95 0 r +rem set L4EYES=0 7.3 -19 -7 180 0 r +rem Animation Cycle +rem set L4EYES=0 7.3 -19 -6 180 0 r +rem set L4EYES=-3.706716 7.3 -18.634920 -6 191.25 0 r +rem set L4EYES=-7.270985 7.3 -17.553711 -6 202.5 0 r +rem set L4EYES=-10.555834 7.3 -15.797922 -6 213.75 0 r +rem set L4EYES=-13.435028 7.3 -13.435028 -6 225 0 r +rem set L4EYES=-15.797922 7.3 -10.555834 -6 236.25 0 r +rem set L4EYES=-17.553711 7.3 -7.270985 -6 247.5 0 r +set L4EYES=-18.634920 7.3 -3.706716 -6 258.75 0 r +rem set L4EYES=-19 7.3 0 -6 270 0 r +rem set L4EYES=-18.634920 7.3 3.706716 -6 281.25 0 r +rem set L4EYES=-17.553711 7.3 7.270985 -6 292.5 0 r +rem set L4EYES=-15.797922 7.3 10.555834 -6 303.75 0 r +rem set L4EYES=-13.435028 7.3 13.435028 -6 315 0 r +rem set L4EYES=-10.555834 7.3 15.797922 -6 326.25 0 r +rem set L4EYES=-7.270985 7.3 17.553711 -6 337.5 0 r +rem set L4EYES=-3.706716 7.3 18.634920 -6 348.75 0 r +rem set L4EYES=0 7.3 19 -6 0 0 r +rem set L4EYES=3.706716 7.3 18.634920 -6 11.25 0 r +rem set L4EYES=7.270985 7.3 17.553711 -6 22.5 0 r +rem set L4EYES=10.555834 7.3 15.797922 -6 33.75 0 r +rem set L4EYES=13.435028 7.3 13.435028 -6 45 0 r +rem set L4EYES=15.797922 7.3 10.555834 -6 56.25 0 r +rem set L4EYES=17.553711 7.3 7.270985 -6 67.5 0 r +rem set L4EYES=18.634920 7.3 3.706716 -6 78.75 0 r +rem set L4EYES=19 7.3 0 -6 90 0 r +rem set L4EYES=18.634920 7.3 -3.706716 -6 101.25 0 r +rem set L4EYES=17.553711 7.3 -7.270985 -6 112.5 0 r +rem set L4EYES=15.797922 7.3 -10.555834 -6 123.75 0 r +rem set L4EYES=13.435028 7.3 -13.435028 -6 135 0 r +rem set L4EYES=10.555834 7.3 -15.797922 -6 146.25 0 r +rem set L4EYES=7.270985 7.3 -17.553711 -6 157.5 0 r +rem set L4EYES=3.706716 7.3 -18.634920 -6 168.75 0 r +set L4VIEWEXT=True +rem ------------------------------------------------------------------ +call btprep.bat %1 %2 %3 %4 %5 %6 %7 %8 %9 +menu.bat short diff --git a/CONTENT/BT3025/BTCAM/BTCAM09.BAT b/CONTENT/BT3025/BTCAM/BTCAM09.BAT new file mode 100644 index 0000000..81dda88 --- /dev/null +++ b/CONTENT/BT3025/BTCAM/BTCAM09.BAT @@ -0,0 +1,43 @@ +@echo off +rem ------------------------------------------------------------------ +rem L4EYES=x y z pitch yaw roll [relative] +rem ------------------------------------------------------------------ +rem set L4EYES=25 5.9 -10 0 95 0 r +rem set L4EYES=0 7.3 -19 -7 180 0 r +rem Animation Cycle +rem set L4EYES=0 7.3 -19 -6 180 0 r +rem set L4EYES=-3.706716 7.3 -18.634920 -6 191.25 0 r +rem set L4EYES=-7.270985 7.3 -17.553711 -6 202.5 0 r +rem set L4EYES=-10.555834 7.3 -15.797922 -6 213.75 0 r +rem set L4EYES=-13.435028 7.3 -13.435028 -6 225 0 r +rem set L4EYES=-15.797922 7.3 -10.555834 -6 236.25 0 r +rem set L4EYES=-17.553711 7.3 -7.270985 -6 247.5 0 r +rem set L4EYES=-18.634920 7.3 -3.706716 -6 258.75 0 r +set L4EYES=-19 7.3 0 -6 270 0 r +rem set L4EYES=-18.634920 7.3 3.706716 -6 281.25 0 r +rem set L4EYES=-17.553711 7.3 7.270985 -6 292.5 0 r +rem set L4EYES=-15.797922 7.3 10.555834 -6 303.75 0 r +rem set L4EYES=-13.435028 7.3 13.435028 -6 315 0 r +rem set L4EYES=-10.555834 7.3 15.797922 -6 326.25 0 r +rem set L4EYES=-7.270985 7.3 17.553711 -6 337.5 0 r +rem set L4EYES=-3.706716 7.3 18.634920 -6 348.75 0 r +rem set L4EYES=0 7.3 19 -6 0 0 r +rem set L4EYES=3.706716 7.3 18.634920 -6 11.25 0 r +rem set L4EYES=7.270985 7.3 17.553711 -6 22.5 0 r +rem set L4EYES=10.555834 7.3 15.797922 -6 33.75 0 r +rem set L4EYES=13.435028 7.3 13.435028 -6 45 0 r +rem set L4EYES=15.797922 7.3 10.555834 -6 56.25 0 r +rem set L4EYES=17.553711 7.3 7.270985 -6 67.5 0 r +rem set L4EYES=18.634920 7.3 3.706716 -6 78.75 0 r +rem set L4EYES=19 7.3 0 -6 90 0 r +rem set L4EYES=18.634920 7.3 -3.706716 -6 101.25 0 r +rem set L4EYES=17.553711 7.3 -7.270985 -6 112.5 0 r +rem set L4EYES=15.797922 7.3 -10.555834 -6 123.75 0 r +rem set L4EYES=13.435028 7.3 -13.435028 -6 135 0 r +rem set L4EYES=10.555834 7.3 -15.797922 -6 146.25 0 r +rem set L4EYES=7.270985 7.3 -17.553711 -6 157.5 0 r +rem set L4EYES=3.706716 7.3 -18.634920 -6 168.75 0 r +set L4VIEWEXT=True +rem ------------------------------------------------------------------ +call btprep.bat %1 %2 %3 %4 %5 %6 %7 %8 %9 +menu.bat short diff --git a/CONTENT/BT3025/BTCAM/BTCAM10.BAT b/CONTENT/BT3025/BTCAM/BTCAM10.BAT new file mode 100644 index 0000000..0e261c0 --- /dev/null +++ b/CONTENT/BT3025/BTCAM/BTCAM10.BAT @@ -0,0 +1,43 @@ +@echo off +rem ------------------------------------------------------------------ +rem L4EYES=x y z pitch yaw roll [relative] +rem ------------------------------------------------------------------ +rem set L4EYES=25 5.9 -10 0 95 0 r +rem set L4EYES=0 7.3 -19 -7 180 0 r +rem Animation Cycle +rem set L4EYES=0 7.3 -19 -6 180 0 r +rem set L4EYES=-3.706716 7.3 -18.634920 -6 191.25 0 r +rem set L4EYES=-7.270985 7.3 -17.553711 -6 202.5 0 r +rem set L4EYES=-10.555834 7.3 -15.797922 -6 213.75 0 r +rem set L4EYES=-13.435028 7.3 -13.435028 -6 225 0 r +rem set L4EYES=-15.797922 7.3 -10.555834 -6 236.25 0 r +rem set L4EYES=-17.553711 7.3 -7.270985 -6 247.5 0 r +rem set L4EYES=-18.634920 7.3 -3.706716 -6 258.75 0 r +rem set L4EYES=-19 7.3 0 -6 270 0 r +set L4EYES=-18.634920 7.3 3.706716 -6 281.25 0 r +rem set L4EYES=-17.553711 7.3 7.270985 -6 292.5 0 r +rem set L4EYES=-15.797922 7.3 10.555834 -6 303.75 0 r +rem set L4EYES=-13.435028 7.3 13.435028 -6 315 0 r +rem set L4EYES=-10.555834 7.3 15.797922 -6 326.25 0 r +rem set L4EYES=-7.270985 7.3 17.553711 -6 337.5 0 r +rem set L4EYES=-3.706716 7.3 18.634920 -6 348.75 0 r +rem set L4EYES=0 7.3 19 -6 0 0 r +rem set L4EYES=3.706716 7.3 18.634920 -6 11.25 0 r +rem set L4EYES=7.270985 7.3 17.553711 -6 22.5 0 r +rem set L4EYES=10.555834 7.3 15.797922 -6 33.75 0 r +rem set L4EYES=13.435028 7.3 13.435028 -6 45 0 r +rem set L4EYES=15.797922 7.3 10.555834 -6 56.25 0 r +rem set L4EYES=17.553711 7.3 7.270985 -6 67.5 0 r +rem set L4EYES=18.634920 7.3 3.706716 -6 78.75 0 r +rem set L4EYES=19 7.3 0 -6 90 0 r +rem set L4EYES=18.634920 7.3 -3.706716 -6 101.25 0 r +rem set L4EYES=17.553711 7.3 -7.270985 -6 112.5 0 r +rem set L4EYES=15.797922 7.3 -10.555834 -6 123.75 0 r +rem set L4EYES=13.435028 7.3 -13.435028 -6 135 0 r +rem set L4EYES=10.555834 7.3 -15.797922 -6 146.25 0 r +rem set L4EYES=7.270985 7.3 -17.553711 -6 157.5 0 r +rem set L4EYES=3.706716 7.3 -18.634920 -6 168.75 0 r +set L4VIEWEXT=True +rem ------------------------------------------------------------------ +call btprep.bat %1 %2 %3 %4 %5 %6 %7 %8 %9 +menu.bat short diff --git a/CONTENT/BT3025/BTCAM/BTCAM11.BAT b/CONTENT/BT3025/BTCAM/BTCAM11.BAT new file mode 100644 index 0000000..5be6414 --- /dev/null +++ b/CONTENT/BT3025/BTCAM/BTCAM11.BAT @@ -0,0 +1,43 @@ +@echo off +rem ------------------------------------------------------------------ +rem L4EYES=x y z pitch yaw roll [relative] +rem ------------------------------------------------------------------ +rem set L4EYES=25 5.9 -10 0 95 0 r +rem set L4EYES=0 7.3 -19 -7 180 0 r +rem Animation Cycle +rem set L4EYES=0 7.3 -19 -6 180 0 r +rem set L4EYES=-3.706716 7.3 -18.634920 -6 191.25 0 r +rem set L4EYES=-7.270985 7.3 -17.553711 -6 202.5 0 r +rem set L4EYES=-10.555834 7.3 -15.797922 -6 213.75 0 r +rem set L4EYES=-13.435028 7.3 -13.435028 -6 225 0 r +rem set L4EYES=-15.797922 7.3 -10.555834 -6 236.25 0 r +rem set L4EYES=-17.553711 7.3 -7.270985 -6 247.5 0 r +rem set L4EYES=-18.634920 7.3 -3.706716 -6 258.75 0 r +rem set L4EYES=-19 7.3 0 -6 270 0 r +rem set L4EYES=-18.634920 7.3 3.706716 -6 281.25 0 r +set L4EYES=-17.553711 7.3 7.270985 -6 292.5 0 r +rem set L4EYES=-15.797922 7.3 10.555834 -6 303.75 0 r +rem set L4EYES=-13.435028 7.3 13.435028 -6 315 0 r +rem set L4EYES=-10.555834 7.3 15.797922 -6 326.25 0 r +rem set L4EYES=-7.270985 7.3 17.553711 -6 337.5 0 r +rem set L4EYES=-3.706716 7.3 18.634920 -6 348.75 0 r +rem set L4EYES=0 7.3 19 -6 0 0 r +rem set L4EYES=3.706716 7.3 18.634920 -6 11.25 0 r +rem set L4EYES=7.270985 7.3 17.553711 -6 22.5 0 r +rem set L4EYES=10.555834 7.3 15.797922 -6 33.75 0 r +rem set L4EYES=13.435028 7.3 13.435028 -6 45 0 r +rem set L4EYES=15.797922 7.3 10.555834 -6 56.25 0 r +rem set L4EYES=17.553711 7.3 7.270985 -6 67.5 0 r +rem set L4EYES=18.634920 7.3 3.706716 -6 78.75 0 r +rem set L4EYES=19 7.3 0 -6 90 0 r +rem set L4EYES=18.634920 7.3 -3.706716 -6 101.25 0 r +rem set L4EYES=17.553711 7.3 -7.270985 -6 112.5 0 r +rem set L4EYES=15.797922 7.3 -10.555834 -6 123.75 0 r +rem set L4EYES=13.435028 7.3 -13.435028 -6 135 0 r +rem set L4EYES=10.555834 7.3 -15.797922 -6 146.25 0 r +rem set L4EYES=7.270985 7.3 -17.553711 -6 157.5 0 r +rem set L4EYES=3.706716 7.3 -18.634920 -6 168.75 0 r +set L4VIEWEXT=True +rem ------------------------------------------------------------------ +call btprep.bat %1 %2 %3 %4 %5 %6 %7 %8 %9 +menu.bat short diff --git a/CONTENT/BT3025/BTCAM/BTCAM12.BAT b/CONTENT/BT3025/BTCAM/BTCAM12.BAT new file mode 100644 index 0000000..afed698 --- /dev/null +++ b/CONTENT/BT3025/BTCAM/BTCAM12.BAT @@ -0,0 +1,43 @@ +@echo off +rem ------------------------------------------------------------------ +rem L4EYES=x y z pitch yaw roll [relative] +rem ------------------------------------------------------------------ +rem set L4EYES=25 5.9 -10 0 95 0 r +rem set L4EYES=0 7.3 -19 -7 180 0 r +rem Animation Cycle +rem set L4EYES=0 7.3 -19 -6 180 0 r +rem set L4EYES=-3.706716 7.3 -18.634920 -6 191.25 0 r +rem set L4EYES=-7.270985 7.3 -17.553711 -6 202.5 0 r +rem set L4EYES=-10.555834 7.3 -15.797922 -6 213.75 0 r +rem set L4EYES=-13.435028 7.3 -13.435028 -6 225 0 r +rem set L4EYES=-15.797922 7.3 -10.555834 -6 236.25 0 r +rem set L4EYES=-17.553711 7.3 -7.270985 -6 247.5 0 r +rem set L4EYES=-18.634920 7.3 -3.706716 -6 258.75 0 r +rem set L4EYES=-19 7.3 0 -6 270 0 r +rem set L4EYES=-18.634920 7.3 3.706716 -6 281.25 0 r +rem set L4EYES=-17.553711 7.3 7.270985 -6 292.5 0 r +set L4EYES=-15.797922 7.3 10.555834 -6 303.75 0 r +rem set L4EYES=-13.435028 7.3 13.435028 -6 315 0 r +rem set L4EYES=-10.555834 7.3 15.797922 -6 326.25 0 r +rem set L4EYES=-7.270985 7.3 17.553711 -6 337.5 0 r +rem set L4EYES=-3.706716 7.3 18.634920 -6 348.75 0 r +rem set L4EYES=0 7.3 19 -6 0 0 r +rem set L4EYES=3.706716 7.3 18.634920 -6 11.25 0 r +rem set L4EYES=7.270985 7.3 17.553711 -6 22.5 0 r +rem set L4EYES=10.555834 7.3 15.797922 -6 33.75 0 r +rem set L4EYES=13.435028 7.3 13.435028 -6 45 0 r +rem set L4EYES=15.797922 7.3 10.555834 -6 56.25 0 r +rem set L4EYES=17.553711 7.3 7.270985 -6 67.5 0 r +rem set L4EYES=18.634920 7.3 3.706716 -6 78.75 0 r +rem set L4EYES=19 7.3 0 -6 90 0 r +rem set L4EYES=18.634920 7.3 -3.706716 -6 101.25 0 r +rem set L4EYES=17.553711 7.3 -7.270985 -6 112.5 0 r +rem set L4EYES=15.797922 7.3 -10.555834 -6 123.75 0 r +rem set L4EYES=13.435028 7.3 -13.435028 -6 135 0 r +rem set L4EYES=10.555834 7.3 -15.797922 -6 146.25 0 r +rem set L4EYES=7.270985 7.3 -17.553711 -6 157.5 0 r +rem set L4EYES=3.706716 7.3 -18.634920 -6 168.75 0 r +set L4VIEWEXT=True +rem ------------------------------------------------------------------ +call btprep.bat %1 %2 %3 %4 %5 %6 %7 %8 %9 +menu.bat short diff --git a/CONTENT/BT3025/BTCAM/BTCAM13.BAT b/CONTENT/BT3025/BTCAM/BTCAM13.BAT new file mode 100644 index 0000000..2cd7bbc --- /dev/null +++ b/CONTENT/BT3025/BTCAM/BTCAM13.BAT @@ -0,0 +1,43 @@ +@echo off +rem ------------------------------------------------------------------ +rem L4EYES=x y z pitch yaw roll [relative] +rem ------------------------------------------------------------------ +rem set L4EYES=25 5.9 -10 0 95 0 r +rem set L4EYES=0 7.3 -19 -7 180 0 r +rem Animation Cycle +rem set L4EYES=0 7.3 -19 -6 180 0 r +rem set L4EYES=-3.706716 7.3 -18.634920 -6 191.25 0 r +rem set L4EYES=-7.270985 7.3 -17.553711 -6 202.5 0 r +rem set L4EYES=-10.555834 7.3 -15.797922 -6 213.75 0 r +rem set L4EYES=-13.435028 7.3 -13.435028 -6 225 0 r +rem set L4EYES=-15.797922 7.3 -10.555834 -6 236.25 0 r +rem set L4EYES=-17.553711 7.3 -7.270985 -6 247.5 0 r +rem set L4EYES=-18.634920 7.3 -3.706716 -6 258.75 0 r +rem set L4EYES=-19 7.3 0 -6 270 0 r +rem set L4EYES=-18.634920 7.3 3.706716 -6 281.25 0 r +rem set L4EYES=-17.553711 7.3 7.270985 -6 292.5 0 r +rem set L4EYES=-15.797922 7.3 10.555834 -6 303.75 0 r +set L4EYES=-13.435028 7.3 13.435028 -6 315 0 r +rem set L4EYES=-10.555834 7.3 15.797922 -6 326.25 0 r +rem set L4EYES=-7.270985 7.3 17.553711 -6 337.5 0 r +rem set L4EYES=-3.706716 7.3 18.634920 -6 348.75 0 r +rem set L4EYES=0 7.3 19 -6 0 0 r +rem set L4EYES=3.706716 7.3 18.634920 -6 11.25 0 r +rem set L4EYES=7.270985 7.3 17.553711 -6 22.5 0 r +rem set L4EYES=10.555834 7.3 15.797922 -6 33.75 0 r +rem set L4EYES=13.435028 7.3 13.435028 -6 45 0 r +rem set L4EYES=15.797922 7.3 10.555834 -6 56.25 0 r +rem set L4EYES=17.553711 7.3 7.270985 -6 67.5 0 r +rem set L4EYES=18.634920 7.3 3.706716 -6 78.75 0 r +rem set L4EYES=19 7.3 0 -6 90 0 r +rem set L4EYES=18.634920 7.3 -3.706716 -6 101.25 0 r +rem set L4EYES=17.553711 7.3 -7.270985 -6 112.5 0 r +rem set L4EYES=15.797922 7.3 -10.555834 -6 123.75 0 r +rem set L4EYES=13.435028 7.3 -13.435028 -6 135 0 r +rem set L4EYES=10.555834 7.3 -15.797922 -6 146.25 0 r +rem set L4EYES=7.270985 7.3 -17.553711 -6 157.5 0 r +rem set L4EYES=3.706716 7.3 -18.634920 -6 168.75 0 r +set L4VIEWEXT=True +rem ------------------------------------------------------------------ +call btprep.bat %1 %2 %3 %4 %5 %6 %7 %8 %9 +menu.bat short diff --git a/CONTENT/BT3025/BTCAM/BTCAM14.BAT b/CONTENT/BT3025/BTCAM/BTCAM14.BAT new file mode 100644 index 0000000..dad1d08 --- /dev/null +++ b/CONTENT/BT3025/BTCAM/BTCAM14.BAT @@ -0,0 +1,43 @@ +@echo off +rem ------------------------------------------------------------------ +rem L4EYES=x y z pitch yaw roll [relative] +rem ------------------------------------------------------------------ +rem set L4EYES=25 5.9 -10 0 95 0 r +rem set L4EYES=0 7.3 -19 -7 180 0 r +rem Animation Cycle +rem set L4EYES=0 7.3 -19 -6 180 0 r +rem set L4EYES=-3.706716 7.3 -18.634920 -6 191.25 0 r +rem set L4EYES=-7.270985 7.3 -17.553711 -6 202.5 0 r +rem set L4EYES=-10.555834 7.3 -15.797922 -6 213.75 0 r +rem set L4EYES=-13.435028 7.3 -13.435028 -6 225 0 r +rem set L4EYES=-15.797922 7.3 -10.555834 -6 236.25 0 r +rem set L4EYES=-17.553711 7.3 -7.270985 -6 247.5 0 r +rem set L4EYES=-18.634920 7.3 -3.706716 -6 258.75 0 r +rem set L4EYES=-19 7.3 0 -6 270 0 r +rem set L4EYES=-18.634920 7.3 3.706716 -6 281.25 0 r +rem set L4EYES=-17.553711 7.3 7.270985 -6 292.5 0 r +rem set L4EYES=-15.797922 7.3 10.555834 -6 303.75 0 r +rem set L4EYES=-13.435028 7.3 13.435028 -6 315 0 r +set L4EYES=-10.555834 7.3 15.797922 -6 326.25 0 r +rem set L4EYES=-7.270985 7.3 17.553711 -6 337.5 0 r +rem set L4EYES=-3.706716 7.3 18.634920 -6 348.75 0 r +rem set L4EYES=0 7.3 19 -6 0 0 r +rem set L4EYES=3.706716 7.3 18.634920 -6 11.25 0 r +rem set L4EYES=7.270985 7.3 17.553711 -6 22.5 0 r +rem set L4EYES=10.555834 7.3 15.797922 -6 33.75 0 r +rem set L4EYES=13.435028 7.3 13.435028 -6 45 0 r +rem set L4EYES=15.797922 7.3 10.555834 -6 56.25 0 r +rem set L4EYES=17.553711 7.3 7.270985 -6 67.5 0 r +rem set L4EYES=18.634920 7.3 3.706716 -6 78.75 0 r +rem set L4EYES=19 7.3 0 -6 90 0 r +rem set L4EYES=18.634920 7.3 -3.706716 -6 101.25 0 r +rem set L4EYES=17.553711 7.3 -7.270985 -6 112.5 0 r +rem set L4EYES=15.797922 7.3 -10.555834 -6 123.75 0 r +rem set L4EYES=13.435028 7.3 -13.435028 -6 135 0 r +rem set L4EYES=10.555834 7.3 -15.797922 -6 146.25 0 r +rem set L4EYES=7.270985 7.3 -17.553711 -6 157.5 0 r +rem set L4EYES=3.706716 7.3 -18.634920 -6 168.75 0 r +set L4VIEWEXT=True +rem ------------------------------------------------------------------ +call btprep.bat %1 %2 %3 %4 %5 %6 %7 %8 %9 +menu.bat short diff --git a/CONTENT/BT3025/BTCAM/BTCAM15.BAT b/CONTENT/BT3025/BTCAM/BTCAM15.BAT new file mode 100644 index 0000000..1bf02df --- /dev/null +++ b/CONTENT/BT3025/BTCAM/BTCAM15.BAT @@ -0,0 +1,43 @@ +@echo off +rem ------------------------------------------------------------------ +rem L4EYES=x y z pitch yaw roll [relative] +rem ------------------------------------------------------------------ +rem set L4EYES=25 5.9 -10 0 95 0 r +rem set L4EYES=0 7.3 -19 -7 180 0 r +rem Animation Cycle +rem set L4EYES=0 7.3 -19 -6 180 0 r +rem set L4EYES=-3.706716 7.3 -18.634920 -6 191.25 0 r +rem set L4EYES=-7.270985 7.3 -17.553711 -6 202.5 0 r +rem set L4EYES=-10.555834 7.3 -15.797922 -6 213.75 0 r +rem set L4EYES=-13.435028 7.3 -13.435028 -6 225 0 r +rem set L4EYES=-15.797922 7.3 -10.555834 -6 236.25 0 r +rem set L4EYES=-17.553711 7.3 -7.270985 -6 247.5 0 r +rem set L4EYES=-18.634920 7.3 -3.706716 -6 258.75 0 r +rem set L4EYES=-19 7.3 0 -6 270 0 r +rem set L4EYES=-18.634920 7.3 3.706716 -6 281.25 0 r +rem set L4EYES=-17.553711 7.3 7.270985 -6 292.5 0 r +rem set L4EYES=-15.797922 7.3 10.555834 -6 303.75 0 r +rem set L4EYES=-13.435028 7.3 13.435028 -6 315 0 r +rem set L4EYES=-10.555834 7.3 15.797922 -6 326.25 0 r +set L4EYES=-7.270985 7.3 17.553711 -6 337.5 0 r +rem set L4EYES=-3.706716 7.3 18.634920 -6 348.75 0 r +rem set L4EYES=0 7.3 19 -6 0 0 r +rem set L4EYES=3.706716 7.3 18.634920 -6 11.25 0 r +rem set L4EYES=7.270985 7.3 17.553711 -6 22.5 0 r +rem set L4EYES=10.555834 7.3 15.797922 -6 33.75 0 r +rem set L4EYES=13.435028 7.3 13.435028 -6 45 0 r +rem set L4EYES=15.797922 7.3 10.555834 -6 56.25 0 r +rem set L4EYES=17.553711 7.3 7.270985 -6 67.5 0 r +rem set L4EYES=18.634920 7.3 3.706716 -6 78.75 0 r +rem set L4EYES=19 7.3 0 -6 90 0 r +rem set L4EYES=18.634920 7.3 -3.706716 -6 101.25 0 r +rem set L4EYES=17.553711 7.3 -7.270985 -6 112.5 0 r +rem set L4EYES=15.797922 7.3 -10.555834 -6 123.75 0 r +rem set L4EYES=13.435028 7.3 -13.435028 -6 135 0 r +rem set L4EYES=10.555834 7.3 -15.797922 -6 146.25 0 r +rem set L4EYES=7.270985 7.3 -17.553711 -6 157.5 0 r +rem set L4EYES=3.706716 7.3 -18.634920 -6 168.75 0 r +set L4VIEWEXT=True +rem ------------------------------------------------------------------ +call btprep.bat %1 %2 %3 %4 %5 %6 %7 %8 %9 +menu.bat short diff --git a/CONTENT/BT3025/BTCAM/BTCAM16.BAT b/CONTENT/BT3025/BTCAM/BTCAM16.BAT new file mode 100644 index 0000000..28a44f6 --- /dev/null +++ b/CONTENT/BT3025/BTCAM/BTCAM16.BAT @@ -0,0 +1,43 @@ +@echo off +rem ------------------------------------------------------------------ +rem L4EYES=x y z pitch yaw roll [relative] +rem ------------------------------------------------------------------ +rem set L4EYES=25 5.9 -10 0 95 0 r +rem set L4EYES=0 7.3 -19 -7 180 0 r +rem Animation Cycle +rem set L4EYES=0 7.3 -19 -6 180 0 r +rem set L4EYES=-3.706716 7.3 -18.634920 -6 191.25 0 r +rem set L4EYES=-7.270985 7.3 -17.553711 -6 202.5 0 r +rem set L4EYES=-10.555834 7.3 -15.797922 -6 213.75 0 r +rem set L4EYES=-13.435028 7.3 -13.435028 -6 225 0 r +rem set L4EYES=-15.797922 7.3 -10.555834 -6 236.25 0 r +rem set L4EYES=-17.553711 7.3 -7.270985 -6 247.5 0 r +rem set L4EYES=-18.634920 7.3 -3.706716 -6 258.75 0 r +rem set L4EYES=-19 7.3 0 -6 270 0 r +rem set L4EYES=-18.634920 7.3 3.706716 -6 281.25 0 r +rem set L4EYES=-17.553711 7.3 7.270985 -6 292.5 0 r +rem set L4EYES=-15.797922 7.3 10.555834 -6 303.75 0 r +rem set L4EYES=-13.435028 7.3 13.435028 -6 315 0 r +rem set L4EYES=-10.555834 7.3 15.797922 -6 326.25 0 r +rem set L4EYES=-7.270985 7.3 17.553711 -6 337.5 0 r +set L4EYES=-3.706716 7.3 18.634920 -6 348.75 0 r +rem set L4EYES=0 7.3 19 -6 0 0 r +rem set L4EYES=3.706716 7.3 18.634920 -6 11.25 0 r +rem set L4EYES=7.270985 7.3 17.553711 -6 22.5 0 r +rem set L4EYES=10.555834 7.3 15.797922 -6 33.75 0 r +rem set L4EYES=13.435028 7.3 13.435028 -6 45 0 r +rem set L4EYES=15.797922 7.3 10.555834 -6 56.25 0 r +rem set L4EYES=17.553711 7.3 7.270985 -6 67.5 0 r +rem set L4EYES=18.634920 7.3 3.706716 -6 78.75 0 r +rem set L4EYES=19 7.3 0 -6 90 0 r +rem set L4EYES=18.634920 7.3 -3.706716 -6 101.25 0 r +rem set L4EYES=17.553711 7.3 -7.270985 -6 112.5 0 r +rem set L4EYES=15.797922 7.3 -10.555834 -6 123.75 0 r +rem set L4EYES=13.435028 7.3 -13.435028 -6 135 0 r +rem set L4EYES=10.555834 7.3 -15.797922 -6 146.25 0 r +rem set L4EYES=7.270985 7.3 -17.553711 -6 157.5 0 r +rem set L4EYES=3.706716 7.3 -18.634920 -6 168.75 0 r +set L4VIEWEXT=True +rem ------------------------------------------------------------------ +call btprep.bat %1 %2 %3 %4 %5 %6 %7 %8 %9 +menu.bat short diff --git a/CONTENT/BT3025/BTCAM/BTCAM17.BAT b/CONTENT/BT3025/BTCAM/BTCAM17.BAT new file mode 100644 index 0000000..f20835c --- /dev/null +++ b/CONTENT/BT3025/BTCAM/BTCAM17.BAT @@ -0,0 +1,43 @@ +@echo off +rem ------------------------------------------------------------------ +rem L4EYES=x y z pitch yaw roll [relative] +rem ------------------------------------------------------------------ +rem set L4EYES=25 5.9 -10 0 95 0 r +rem set L4EYES=0 7.3 -19 -7 180 0 r +rem Animation Cycle +rem set L4EYES=0 7.3 -19 -6 180 0 r +rem set L4EYES=-3.706716 7.3 -18.634920 -6 191.25 0 r +rem set L4EYES=-7.270985 7.3 -17.553711 -6 202.5 0 r +rem set L4EYES=-10.555834 7.3 -15.797922 -6 213.75 0 r +rem set L4EYES=-13.435028 7.3 -13.435028 -6 225 0 r +rem set L4EYES=-15.797922 7.3 -10.555834 -6 236.25 0 r +rem set L4EYES=-17.553711 7.3 -7.270985 -6 247.5 0 r +rem set L4EYES=-18.634920 7.3 -3.706716 -6 258.75 0 r +rem set L4EYES=-19 7.3 0 -6 270 0 r +rem set L4EYES=-18.634920 7.3 3.706716 -6 281.25 0 r +rem set L4EYES=-17.553711 7.3 7.270985 -6 292.5 0 r +rem set L4EYES=-15.797922 7.3 10.555834 -6 303.75 0 r +rem set L4EYES=-13.435028 7.3 13.435028 -6 315 0 r +rem set L4EYES=-10.555834 7.3 15.797922 -6 326.25 0 r +rem set L4EYES=-7.270985 7.3 17.553711 -6 337.5 0 r +rem set L4EYES=-3.706716 7.3 18.634920 -6 348.75 0 r +set L4EYES=0 7.3 19 -6 0 0 r +rem set L4EYES=3.706716 7.3 18.634920 -6 11.25 0 r +rem set L4EYES=7.270985 7.3 17.553711 -6 22.5 0 r +rem set L4EYES=10.555834 7.3 15.797922 -6 33.75 0 r +rem set L4EYES=13.435028 7.3 13.435028 -6 45 0 r +rem set L4EYES=15.797922 7.3 10.555834 -6 56.25 0 r +rem set L4EYES=17.553711 7.3 7.270985 -6 67.5 0 r +rem set L4EYES=18.634920 7.3 3.706716 -6 78.75 0 r +rem set L4EYES=19 7.3 0 -6 90 0 r +rem set L4EYES=18.634920 7.3 -3.706716 -6 101.25 0 r +rem set L4EYES=17.553711 7.3 -7.270985 -6 112.5 0 r +rem set L4EYES=15.797922 7.3 -10.555834 -6 123.75 0 r +rem set L4EYES=13.435028 7.3 -13.435028 -6 135 0 r +rem set L4EYES=10.555834 7.3 -15.797922 -6 146.25 0 r +rem set L4EYES=7.270985 7.3 -17.553711 -6 157.5 0 r +rem set L4EYES=3.706716 7.3 -18.634920 -6 168.75 0 r +set L4VIEWEXT=True +rem ------------------------------------------------------------------ +call btprep.bat %1 %2 %3 %4 %5 %6 %7 %8 %9 +menu.bat short diff --git a/CONTENT/BT3025/BTCAM/BTCAM18.BAT b/CONTENT/BT3025/BTCAM/BTCAM18.BAT new file mode 100644 index 0000000..d9a1b23 --- /dev/null +++ b/CONTENT/BT3025/BTCAM/BTCAM18.BAT @@ -0,0 +1,43 @@ +@echo off +rem ------------------------------------------------------------------ +rem L4EYES=x y z pitch yaw roll [relative] +rem ------------------------------------------------------------------ +rem set L4EYES=25 5.9 -10 0 95 0 r +rem set L4EYES=0 7.3 -19 -7 180 0 r +rem Animation Cycle +rem set L4EYES=0 7.3 -19 -6 180 0 r +rem set L4EYES=-3.706716 7.3 -18.634920 -6 191.25 0 r +rem set L4EYES=-7.270985 7.3 -17.553711 -6 202.5 0 r +rem set L4EYES=-10.555834 7.3 -15.797922 -6 213.75 0 r +rem set L4EYES=-13.435028 7.3 -13.435028 -6 225 0 r +rem set L4EYES=-15.797922 7.3 -10.555834 -6 236.25 0 r +rem set L4EYES=-17.553711 7.3 -7.270985 -6 247.5 0 r +rem set L4EYES=-18.634920 7.3 -3.706716 -6 258.75 0 r +rem set L4EYES=-19 7.3 0 -6 270 0 r +rem set L4EYES=-18.634920 7.3 3.706716 -6 281.25 0 r +rem set L4EYES=-17.553711 7.3 7.270985 -6 292.5 0 r +rem set L4EYES=-15.797922 7.3 10.555834 -6 303.75 0 r +rem set L4EYES=-13.435028 7.3 13.435028 -6 315 0 r +rem set L4EYES=-10.555834 7.3 15.797922 -6 326.25 0 r +rem set L4EYES=-7.270985 7.3 17.553711 -6 337.5 0 r +rem set L4EYES=-3.706716 7.3 18.634920 -6 348.75 0 r +rem set L4EYES=0 7.3 19 -6 0 0 r +set L4EYES=3.706716 7.3 18.634920 -6 11.25 0 r +rem set L4EYES=7.270985 7.3 17.553711 -6 22.5 0 r +rem set L4EYES=10.555834 7.3 15.797922 -6 33.75 0 r +rem set L4EYES=13.435028 7.3 13.435028 -6 45 0 r +rem set L4EYES=15.797922 7.3 10.555834 -6 56.25 0 r +rem set L4EYES=17.553711 7.3 7.270985 -6 67.5 0 r +rem set L4EYES=18.634920 7.3 3.706716 -6 78.75 0 r +rem set L4EYES=19 7.3 0 -6 90 0 r +rem set L4EYES=18.634920 7.3 -3.706716 -6 101.25 0 r +rem set L4EYES=17.553711 7.3 -7.270985 -6 112.5 0 r +rem set L4EYES=15.797922 7.3 -10.555834 -6 123.75 0 r +rem set L4EYES=13.435028 7.3 -13.435028 -6 135 0 r +rem set L4EYES=10.555834 7.3 -15.797922 -6 146.25 0 r +rem set L4EYES=7.270985 7.3 -17.553711 -6 157.5 0 r +rem set L4EYES=3.706716 7.3 -18.634920 -6 168.75 0 r +set L4VIEWEXT=True +rem ------------------------------------------------------------------ +call btprep.bat %1 %2 %3 %4 %5 %6 %7 %8 %9 +menu.bat short diff --git a/CONTENT/BT3025/BTCAM/BTCAM19.BAT b/CONTENT/BT3025/BTCAM/BTCAM19.BAT new file mode 100644 index 0000000..c2ca9d4 --- /dev/null +++ b/CONTENT/BT3025/BTCAM/BTCAM19.BAT @@ -0,0 +1,43 @@ +@echo off +rem ------------------------------------------------------------------ +rem L4EYES=x y z pitch yaw roll [relative] +rem ------------------------------------------------------------------ +rem set L4EYES=25 5.9 -10 0 95 0 r +rem set L4EYES=0 7.3 -19 -7 180 0 r +rem Animation Cycle +rem set L4EYES=0 7.3 -19 -6 180 0 r +rem set L4EYES=-3.706716 7.3 -18.634920 -6 191.25 0 r +rem set L4EYES=-7.270985 7.3 -17.553711 -6 202.5 0 r +rem set L4EYES=-10.555834 7.3 -15.797922 -6 213.75 0 r +rem set L4EYES=-13.435028 7.3 -13.435028 -6 225 0 r +rem set L4EYES=-15.797922 7.3 -10.555834 -6 236.25 0 r +rem set L4EYES=-17.553711 7.3 -7.270985 -6 247.5 0 r +rem set L4EYES=-18.634920 7.3 -3.706716 -6 258.75 0 r +rem set L4EYES=-19 7.3 0 -6 270 0 r +rem set L4EYES=-18.634920 7.3 3.706716 -6 281.25 0 r +rem set L4EYES=-17.553711 7.3 7.270985 -6 292.5 0 r +rem set L4EYES=-15.797922 7.3 10.555834 -6 303.75 0 r +rem set L4EYES=-13.435028 7.3 13.435028 -6 315 0 r +rem set L4EYES=-10.555834 7.3 15.797922 -6 326.25 0 r +rem set L4EYES=-7.270985 7.3 17.553711 -6 337.5 0 r +rem set L4EYES=-3.706716 7.3 18.634920 -6 348.75 0 r +rem set L4EYES=0 7.3 19 -6 0 0 r +rem set L4EYES=3.706716 7.3 18.634920 -6 11.25 0 r +set L4EYES=7.270985 7.3 17.553711 -6 22.5 0 r +rem set L4EYES=10.555834 7.3 15.797922 -6 33.75 0 r +rem set L4EYES=13.435028 7.3 13.435028 -6 45 0 r +rem set L4EYES=15.797922 7.3 10.555834 -6 56.25 0 r +rem set L4EYES=17.553711 7.3 7.270985 -6 67.5 0 r +rem set L4EYES=18.634920 7.3 3.706716 -6 78.75 0 r +rem set L4EYES=19 7.3 0 -6 90 0 r +rem set L4EYES=18.634920 7.3 -3.706716 -6 101.25 0 r +rem set L4EYES=17.553711 7.3 -7.270985 -6 112.5 0 r +rem set L4EYES=15.797922 7.3 -10.555834 -6 123.75 0 r +rem set L4EYES=13.435028 7.3 -13.435028 -6 135 0 r +rem set L4EYES=10.555834 7.3 -15.797922 -6 146.25 0 r +rem set L4EYES=7.270985 7.3 -17.553711 -6 157.5 0 r +rem set L4EYES=3.706716 7.3 -18.634920 -6 168.75 0 r +set L4VIEWEXT=True +rem ------------------------------------------------------------------ +call btprep.bat %1 %2 %3 %4 %5 %6 %7 %8 %9 +menu.bat short diff --git a/CONTENT/BT3025/BTCAM/BTCAM20.BAT b/CONTENT/BT3025/BTCAM/BTCAM20.BAT new file mode 100644 index 0000000..760f59f --- /dev/null +++ b/CONTENT/BT3025/BTCAM/BTCAM20.BAT @@ -0,0 +1,43 @@ +@echo off +rem ------------------------------------------------------------------ +rem L4EYES=x y z pitch yaw roll [relative] +rem ------------------------------------------------------------------ +rem set L4EYES=25 5.9 -10 0 95 0 r +rem set L4EYES=0 7.3 -19 -7 180 0 r +rem Animation Cycle +rem set L4EYES=0 7.3 -19 -6 180 0 r +rem set L4EYES=-3.706716 7.3 -18.634920 -6 191.25 0 r +rem set L4EYES=-7.270985 7.3 -17.553711 -6 202.5 0 r +rem set L4EYES=-10.555834 7.3 -15.797922 -6 213.75 0 r +rem set L4EYES=-13.435028 7.3 -13.435028 -6 225 0 r +rem set L4EYES=-15.797922 7.3 -10.555834 -6 236.25 0 r +rem set L4EYES=-17.553711 7.3 -7.270985 -6 247.5 0 r +rem set L4EYES=-18.634920 7.3 -3.706716 -6 258.75 0 r +rem set L4EYES=-19 7.3 0 -6 270 0 r +rem set L4EYES=-18.634920 7.3 3.706716 -6 281.25 0 r +rem set L4EYES=-17.553711 7.3 7.270985 -6 292.5 0 r +rem set L4EYES=-15.797922 7.3 10.555834 -6 303.75 0 r +rem set L4EYES=-13.435028 7.3 13.435028 -6 315 0 r +rem set L4EYES=-10.555834 7.3 15.797922 -6 326.25 0 r +rem set L4EYES=-7.270985 7.3 17.553711 -6 337.5 0 r +rem set L4EYES=-3.706716 7.3 18.634920 -6 348.75 0 r +rem set L4EYES=0 7.3 19 -6 0 0 r +rem set L4EYES=3.706716 7.3 18.634920 -6 11.25 0 r +rem set L4EYES=7.270985 7.3 17.553711 -6 22.5 0 r +set L4EYES=10.555834 7.3 15.797922 -6 33.75 0 r +rem set L4EYES=13.435028 7.3 13.435028 -6 45 0 r +rem set L4EYES=15.797922 7.3 10.555834 -6 56.25 0 r +rem set L4EYES=17.553711 7.3 7.270985 -6 67.5 0 r +rem set L4EYES=18.634920 7.3 3.706716 -6 78.75 0 r +rem set L4EYES=19 7.3 0 -6 90 0 r +rem set L4EYES=18.634920 7.3 -3.706716 -6 101.25 0 r +rem set L4EYES=17.553711 7.3 -7.270985 -6 112.5 0 r +rem set L4EYES=15.797922 7.3 -10.555834 -6 123.75 0 r +rem set L4EYES=13.435028 7.3 -13.435028 -6 135 0 r +rem set L4EYES=10.555834 7.3 -15.797922 -6 146.25 0 r +rem set L4EYES=7.270985 7.3 -17.553711 -6 157.5 0 r +rem set L4EYES=3.706716 7.3 -18.634920 -6 168.75 0 r +set L4VIEWEXT=True +rem ------------------------------------------------------------------ +call btprep.bat %1 %2 %3 %4 %5 %6 %7 %8 %9 +menu.bat short diff --git a/CONTENT/BT3025/BTCAM/BTCAM21.BAT b/CONTENT/BT3025/BTCAM/BTCAM21.BAT new file mode 100644 index 0000000..7e37ed9 --- /dev/null +++ b/CONTENT/BT3025/BTCAM/BTCAM21.BAT @@ -0,0 +1,43 @@ +@echo off +rem ------------------------------------------------------------------ +rem L4EYES=x y z pitch yaw roll [relative] +rem ------------------------------------------------------------------ +rem set L4EYES=25 5.9 -10 0 95 0 r +rem set L4EYES=0 7.3 -19 -7 180 0 r +rem Animation Cycle +rem set L4EYES=0 7.3 -19 -6 180 0 r +rem set L4EYES=-3.706716 7.3 -18.634920 -6 191.25 0 r +rem set L4EYES=-7.270985 7.3 -17.553711 -6 202.5 0 r +rem set L4EYES=-10.555834 7.3 -15.797922 -6 213.75 0 r +rem set L4EYES=-13.435028 7.3 -13.435028 -6 225 0 r +rem set L4EYES=-15.797922 7.3 -10.555834 -6 236.25 0 r +rem set L4EYES=-17.553711 7.3 -7.270985 -6 247.5 0 r +rem set L4EYES=-18.634920 7.3 -3.706716 -6 258.75 0 r +rem set L4EYES=-19 7.3 0 -6 270 0 r +rem set L4EYES=-18.634920 7.3 3.706716 -6 281.25 0 r +rem set L4EYES=-17.553711 7.3 7.270985 -6 292.5 0 r +rem set L4EYES=-15.797922 7.3 10.555834 -6 303.75 0 r +rem set L4EYES=-13.435028 7.3 13.435028 -6 315 0 r +rem set L4EYES=-10.555834 7.3 15.797922 -6 326.25 0 r +rem set L4EYES=-7.270985 7.3 17.553711 -6 337.5 0 r +rem set L4EYES=-3.706716 7.3 18.634920 -6 348.75 0 r +rem set L4EYES=0 7.3 19 -6 0 0 r +rem set L4EYES=3.706716 7.3 18.634920 -6 11.25 0 r +rem set L4EYES=7.270985 7.3 17.553711 -6 22.5 0 r +rem set L4EYES=10.555834 7.3 15.797922 -6 33.75 0 r +set L4EYES=13.435028 7.3 13.435028 -6 45 0 r +rem set L4EYES=15.797922 7.3 10.555834 -6 56.25 0 r +rem set L4EYES=17.553711 7.3 7.270985 -6 67.5 0 r +rem set L4EYES=18.634920 7.3 3.706716 -6 78.75 0 r +rem set L4EYES=19 7.3 0 -6 90 0 r +rem set L4EYES=18.634920 7.3 -3.706716 -6 101.25 0 r +rem set L4EYES=17.553711 7.3 -7.270985 -6 112.5 0 r +rem set L4EYES=15.797922 7.3 -10.555834 -6 123.75 0 r +rem set L4EYES=13.435028 7.3 -13.435028 -6 135 0 r +rem set L4EYES=10.555834 7.3 -15.797922 -6 146.25 0 r +rem set L4EYES=7.270985 7.3 -17.553711 -6 157.5 0 r +rem set L4EYES=3.706716 7.3 -18.634920 -6 168.75 0 r +set L4VIEWEXT=True +rem ------------------------------------------------------------------ +call btprep.bat %1 %2 %3 %4 %5 %6 %7 %8 %9 +menu.bat short diff --git a/CONTENT/BT3025/BTCAM/BTCAM22.BAT b/CONTENT/BT3025/BTCAM/BTCAM22.BAT new file mode 100644 index 0000000..982ee90 --- /dev/null +++ b/CONTENT/BT3025/BTCAM/BTCAM22.BAT @@ -0,0 +1,43 @@ +@echo off +rem ------------------------------------------------------------------ +rem L4EYES=x y z pitch yaw roll [relative] +rem ------------------------------------------------------------------ +rem set L4EYES=25 5.9 -10 0 95 0 r +rem set L4EYES=0 7.3 -19 -7 180 0 r +rem Animation Cycle +rem set L4EYES=0 7.3 -19 -6 180 0 r +rem set L4EYES=-3.706716 7.3 -18.634920 -6 191.25 0 r +rem set L4EYES=-7.270985 7.3 -17.553711 -6 202.5 0 r +rem set L4EYES=-10.555834 7.3 -15.797922 -6 213.75 0 r +rem set L4EYES=-13.435028 7.3 -13.435028 -6 225 0 r +rem set L4EYES=-15.797922 7.3 -10.555834 -6 236.25 0 r +rem set L4EYES=-17.553711 7.3 -7.270985 -6 247.5 0 r +rem set L4EYES=-18.634920 7.3 -3.706716 -6 258.75 0 r +rem set L4EYES=-19 7.3 0 -6 270 0 r +rem set L4EYES=-18.634920 7.3 3.706716 -6 281.25 0 r +rem set L4EYES=-17.553711 7.3 7.270985 -6 292.5 0 r +rem set L4EYES=-15.797922 7.3 10.555834 -6 303.75 0 r +rem set L4EYES=-13.435028 7.3 13.435028 -6 315 0 r +rem set L4EYES=-10.555834 7.3 15.797922 -6 326.25 0 r +rem set L4EYES=-7.270985 7.3 17.553711 -6 337.5 0 r +rem set L4EYES=-3.706716 7.3 18.634920 -6 348.75 0 r +rem set L4EYES=0 7.3 19 -6 0 0 r +rem set L4EYES=3.706716 7.3 18.634920 -6 11.25 0 r +rem set L4EYES=7.270985 7.3 17.553711 -6 22.5 0 r +rem set L4EYES=10.555834 7.3 15.797922 -6 33.75 0 r +rem set L4EYES=13.435028 7.3 13.435028 -6 45 0 r +set L4EYES=15.797922 7.3 10.555834 -6 56.25 0 r +rem set L4EYES=17.553711 7.3 7.270985 -6 67.5 0 r +rem set L4EYES=18.634920 7.3 3.706716 -6 78.75 0 r +rem set L4EYES=19 7.3 0 -6 90 0 r +rem set L4EYES=18.634920 7.3 -3.706716 -6 101.25 0 r +rem set L4EYES=17.553711 7.3 -7.270985 -6 112.5 0 r +rem set L4EYES=15.797922 7.3 -10.555834 -6 123.75 0 r +rem set L4EYES=13.435028 7.3 -13.435028 -6 135 0 r +rem set L4EYES=10.555834 7.3 -15.797922 -6 146.25 0 r +rem set L4EYES=7.270985 7.3 -17.553711 -6 157.5 0 r +rem set L4EYES=3.706716 7.3 -18.634920 -6 168.75 0 r +set L4VIEWEXT=True +rem ------------------------------------------------------------------ +call btprep.bat %1 %2 %3 %4 %5 %6 %7 %8 %9 +menu.bat short diff --git a/CONTENT/BT3025/BTCAM/BTCAM23.BAT b/CONTENT/BT3025/BTCAM/BTCAM23.BAT new file mode 100644 index 0000000..5311405 --- /dev/null +++ b/CONTENT/BT3025/BTCAM/BTCAM23.BAT @@ -0,0 +1,43 @@ +@echo off +rem ------------------------------------------------------------------ +rem L4EYES=x y z pitch yaw roll [relative] +rem ------------------------------------------------------------------ +rem set L4EYES=25 5.9 -10 0 95 0 r +rem set L4EYES=0 7.3 -19 -7 180 0 r +rem Animation Cycle +rem set L4EYES=0 7.3 -19 -6 180 0 r +rem set L4EYES=-3.706716 7.3 -18.634920 -6 191.25 0 r +rem set L4EYES=-7.270985 7.3 -17.553711 -6 202.5 0 r +rem set L4EYES=-10.555834 7.3 -15.797922 -6 213.75 0 r +rem set L4EYES=-13.435028 7.3 -13.435028 -6 225 0 r +rem set L4EYES=-15.797922 7.3 -10.555834 -6 236.25 0 r +rem set L4EYES=-17.553711 7.3 -7.270985 -6 247.5 0 r +rem set L4EYES=-18.634920 7.3 -3.706716 -6 258.75 0 r +rem set L4EYES=-19 7.3 0 -6 270 0 r +rem set L4EYES=-18.634920 7.3 3.706716 -6 281.25 0 r +rem set L4EYES=-17.553711 7.3 7.270985 -6 292.5 0 r +rem set L4EYES=-15.797922 7.3 10.555834 -6 303.75 0 r +rem set L4EYES=-13.435028 7.3 13.435028 -6 315 0 r +rem set L4EYES=-10.555834 7.3 15.797922 -6 326.25 0 r +rem set L4EYES=-7.270985 7.3 17.553711 -6 337.5 0 r +rem set L4EYES=-3.706716 7.3 18.634920 -6 348.75 0 r +rem set L4EYES=0 7.3 19 -6 0 0 r +rem set L4EYES=3.706716 7.3 18.634920 -6 11.25 0 r +rem set L4EYES=7.270985 7.3 17.553711 -6 22.5 0 r +rem set L4EYES=10.555834 7.3 15.797922 -6 33.75 0 r +rem set L4EYES=13.435028 7.3 13.435028 -6 45 0 r +rem set L4EYES=15.797922 7.3 10.555834 -6 56.25 0 r +set L4EYES=17.553711 7.3 7.270985 -6 67.5 0 r +rem set L4EYES=18.634920 7.3 3.706716 -6 78.75 0 r +rem set L4EYES=19 7.3 0 -6 90 0 r +rem set L4EYES=18.634920 7.3 -3.706716 -6 101.25 0 r +rem set L4EYES=17.553711 7.3 -7.270985 -6 112.5 0 r +rem set L4EYES=15.797922 7.3 -10.555834 -6 123.75 0 r +rem set L4EYES=13.435028 7.3 -13.435028 -6 135 0 r +rem set L4EYES=10.555834 7.3 -15.797922 -6 146.25 0 r +rem set L4EYES=7.270985 7.3 -17.553711 -6 157.5 0 r +rem set L4EYES=3.706716 7.3 -18.634920 -6 168.75 0 r +set L4VIEWEXT=True +rem ------------------------------------------------------------------ +call btprep.bat %1 %2 %3 %4 %5 %6 %7 %8 %9 +menu.bat short diff --git a/CONTENT/BT3025/BTCAM/BTCAM24.BAT b/CONTENT/BT3025/BTCAM/BTCAM24.BAT new file mode 100644 index 0000000..487e086 --- /dev/null +++ b/CONTENT/BT3025/BTCAM/BTCAM24.BAT @@ -0,0 +1,43 @@ +@echo off +rem ------------------------------------------------------------------ +rem L4EYES=x y z pitch yaw roll [relative] +rem ------------------------------------------------------------------ +rem set L4EYES=25 5.9 -10 0 95 0 r +rem set L4EYES=0 7.3 -19 -7 180 0 r +rem Animation Cycle +rem set L4EYES=0 7.3 -19 -6 180 0 r +rem set L4EYES=-3.706716 7.3 -18.634920 -6 191.25 0 r +rem set L4EYES=-7.270985 7.3 -17.553711 -6 202.5 0 r +rem set L4EYES=-10.555834 7.3 -15.797922 -6 213.75 0 r +rem set L4EYES=-13.435028 7.3 -13.435028 -6 225 0 r +rem set L4EYES=-15.797922 7.3 -10.555834 -6 236.25 0 r +rem set L4EYES=-17.553711 7.3 -7.270985 -6 247.5 0 r +rem set L4EYES=-18.634920 7.3 -3.706716 -6 258.75 0 r +rem set L4EYES=-19 7.3 0 -6 270 0 r +rem set L4EYES=-18.634920 7.3 3.706716 -6 281.25 0 r +rem set L4EYES=-17.553711 7.3 7.270985 -6 292.5 0 r +rem set L4EYES=-15.797922 7.3 10.555834 -6 303.75 0 r +rem set L4EYES=-13.435028 7.3 13.435028 -6 315 0 r +rem set L4EYES=-10.555834 7.3 15.797922 -6 326.25 0 r +rem set L4EYES=-7.270985 7.3 17.553711 -6 337.5 0 r +rem set L4EYES=-3.706716 7.3 18.634920 -6 348.75 0 r +rem set L4EYES=0 7.3 19 -6 0 0 r +rem set L4EYES=3.706716 7.3 18.634920 -6 11.25 0 r +rem set L4EYES=7.270985 7.3 17.553711 -6 22.5 0 r +rem set L4EYES=10.555834 7.3 15.797922 -6 33.75 0 r +rem set L4EYES=13.435028 7.3 13.435028 -6 45 0 r +rem set L4EYES=15.797922 7.3 10.555834 -6 56.25 0 r +rem set L4EYES=17.553711 7.3 7.270985 -6 67.5 0 r +set L4EYES=18.634920 7.3 3.706716 -6 78.75 0 r +rem set L4EYES=19 7.3 0 -6 90 0 r +rem set L4EYES=18.634920 7.3 -3.706716 -6 101.25 0 r +rem set L4EYES=17.553711 7.3 -7.270985 -6 112.5 0 r +rem set L4EYES=15.797922 7.3 -10.555834 -6 123.75 0 r +rem set L4EYES=13.435028 7.3 -13.435028 -6 135 0 r +rem set L4EYES=10.555834 7.3 -15.797922 -6 146.25 0 r +rem set L4EYES=7.270985 7.3 -17.553711 -6 157.5 0 r +rem set L4EYES=3.706716 7.3 -18.634920 -6 168.75 0 r +set L4VIEWEXT=True +rem ------------------------------------------------------------------ +call btprep.bat %1 %2 %3 %4 %5 %6 %7 %8 %9 +menu.bat short diff --git a/CONTENT/BT3025/BTCAM/BTCAM25.BAT b/CONTENT/BT3025/BTCAM/BTCAM25.BAT new file mode 100644 index 0000000..dec5a68 --- /dev/null +++ b/CONTENT/BT3025/BTCAM/BTCAM25.BAT @@ -0,0 +1,43 @@ +@echo off +rem ------------------------------------------------------------------ +rem L4EYES=x y z pitch yaw roll [relative] +rem ------------------------------------------------------------------ +rem set L4EYES=25 5.9 -10 0 95 0 r +rem set L4EYES=0 7.3 -19 -7 180 0 r +rem Animation Cycle +rem set L4EYES=0 7.3 -19 -6 180 0 r +rem set L4EYES=-3.706716 7.3 -18.634920 -6 191.25 0 r +rem set L4EYES=-7.270985 7.3 -17.553711 -6 202.5 0 r +rem set L4EYES=-10.555834 7.3 -15.797922 -6 213.75 0 r +rem set L4EYES=-13.435028 7.3 -13.435028 -6 225 0 r +rem set L4EYES=-15.797922 7.3 -10.555834 -6 236.25 0 r +rem set L4EYES=-17.553711 7.3 -7.270985 -6 247.5 0 r +rem set L4EYES=-18.634920 7.3 -3.706716 -6 258.75 0 r +rem set L4EYES=-19 7.3 0 -6 270 0 r +rem set L4EYES=-18.634920 7.3 3.706716 -6 281.25 0 r +rem set L4EYES=-17.553711 7.3 7.270985 -6 292.5 0 r +rem set L4EYES=-15.797922 7.3 10.555834 -6 303.75 0 r +rem set L4EYES=-13.435028 7.3 13.435028 -6 315 0 r +rem set L4EYES=-10.555834 7.3 15.797922 -6 326.25 0 r +rem set L4EYES=-7.270985 7.3 17.553711 -6 337.5 0 r +rem set L4EYES=-3.706716 7.3 18.634920 -6 348.75 0 r +rem set L4EYES=0 7.3 19 -6 0 0 r +rem set L4EYES=3.706716 7.3 18.634920 -6 11.25 0 r +rem set L4EYES=7.270985 7.3 17.553711 -6 22.5 0 r +rem set L4EYES=10.555834 7.3 15.797922 -6 33.75 0 r +rem set L4EYES=13.435028 7.3 13.435028 -6 45 0 r +rem set L4EYES=15.797922 7.3 10.555834 -6 56.25 0 r +rem set L4EYES=17.553711 7.3 7.270985 -6 67.5 0 r +rem set L4EYES=18.634920 7.3 3.706716 -6 78.75 0 r +set L4EYES=19 7.3 0 -6 90 0 r +rem set L4EYES=18.634920 7.3 -3.706716 -6 101.25 0 r +rem set L4EYES=17.553711 7.3 -7.270985 -6 112.5 0 r +rem set L4EYES=15.797922 7.3 -10.555834 -6 123.75 0 r +rem set L4EYES=13.435028 7.3 -13.435028 -6 135 0 r +rem set L4EYES=10.555834 7.3 -15.797922 -6 146.25 0 r +rem set L4EYES=7.270985 7.3 -17.553711 -6 157.5 0 r +rem set L4EYES=3.706716 7.3 -18.634920 -6 168.75 0 r +set L4VIEWEXT=True +rem ------------------------------------------------------------------ +call btprep.bat %1 %2 %3 %4 %5 %6 %7 %8 %9 +menu.bat short diff --git a/CONTENT/BT3025/BTCAM/BTCAM26.BAT b/CONTENT/BT3025/BTCAM/BTCAM26.BAT new file mode 100644 index 0000000..eecd505 --- /dev/null +++ b/CONTENT/BT3025/BTCAM/BTCAM26.BAT @@ -0,0 +1,43 @@ +@echo off +rem ------------------------------------------------------------------ +rem L4EYES=x y z pitch yaw roll [relative] +rem ------------------------------------------------------------------ +rem set L4EYES=25 5.9 -10 0 95 0 r +rem set L4EYES=0 7.3 -19 -7 180 0 r +rem Animation Cycle +rem set L4EYES=0 7.3 -19 -6 180 0 r +rem set L4EYES=-3.706716 7.3 -18.634920 -6 191.25 0 r +rem set L4EYES=-7.270985 7.3 -17.553711 -6 202.5 0 r +rem set L4EYES=-10.555834 7.3 -15.797922 -6 213.75 0 r +rem set L4EYES=-13.435028 7.3 -13.435028 -6 225 0 r +rem set L4EYES=-15.797922 7.3 -10.555834 -6 236.25 0 r +rem set L4EYES=-17.553711 7.3 -7.270985 -6 247.5 0 r +rem set L4EYES=-18.634920 7.3 -3.706716 -6 258.75 0 r +rem set L4EYES=-19 7.3 0 -6 270 0 r +rem set L4EYES=-18.634920 7.3 3.706716 -6 281.25 0 r +rem set L4EYES=-17.553711 7.3 7.270985 -6 292.5 0 r +rem set L4EYES=-15.797922 7.3 10.555834 -6 303.75 0 r +rem set L4EYES=-13.435028 7.3 13.435028 -6 315 0 r +rem set L4EYES=-10.555834 7.3 15.797922 -6 326.25 0 r +rem set L4EYES=-7.270985 7.3 17.553711 -6 337.5 0 r +rem set L4EYES=-3.706716 7.3 18.634920 -6 348.75 0 r +rem set L4EYES=0 7.3 19 -6 0 0 r +rem set L4EYES=3.706716 7.3 18.634920 -6 11.25 0 r +rem set L4EYES=7.270985 7.3 17.553711 -6 22.5 0 r +rem set L4EYES=10.555834 7.3 15.797922 -6 33.75 0 r +rem set L4EYES=13.435028 7.3 13.435028 -6 45 0 r +rem set L4EYES=15.797922 7.3 10.555834 -6 56.25 0 r +rem set L4EYES=17.553711 7.3 7.270985 -6 67.5 0 r +rem set L4EYES=18.634920 7.3 3.706716 -6 78.75 0 r +rem set L4EYES=19 7.3 0 -6 90 0 r +set L4EYES=18.634920 7.3 -3.706716 -6 101.25 0 r +rem set L4EYES=17.553711 7.3 -7.270985 -6 112.5 0 r +rem set L4EYES=15.797922 7.3 -10.555834 -6 123.75 0 r +rem set L4EYES=13.435028 7.3 -13.435028 -6 135 0 r +rem set L4EYES=10.555834 7.3 -15.797922 -6 146.25 0 r +rem set L4EYES=7.270985 7.3 -17.553711 -6 157.5 0 r +rem set L4EYES=3.706716 7.3 -18.634920 -6 168.75 0 r +set L4VIEWEXT=True +rem ------------------------------------------------------------------ +call btprep.bat %1 %2 %3 %4 %5 %6 %7 %8 %9 +menu.bat short diff --git a/CONTENT/BT3025/BTCAM/BTCAM27.BAT b/CONTENT/BT3025/BTCAM/BTCAM27.BAT new file mode 100644 index 0000000..c24b864 --- /dev/null +++ b/CONTENT/BT3025/BTCAM/BTCAM27.BAT @@ -0,0 +1,43 @@ +@echo off +rem ------------------------------------------------------------------ +rem L4EYES=x y z pitch yaw roll [relative] +rem ------------------------------------------------------------------ +rem set L4EYES=25 5.9 -10 0 95 0 r +rem set L4EYES=0 7.3 -19 -7 180 0 r +rem Animation Cycle +rem set L4EYES=0 7.3 -19 -6 180 0 r +rem set L4EYES=-3.706716 7.3 -18.634920 -6 191.25 0 r +rem set L4EYES=-7.270985 7.3 -17.553711 -6 202.5 0 r +rem set L4EYES=-10.555834 7.3 -15.797922 -6 213.75 0 r +rem set L4EYES=-13.435028 7.3 -13.435028 -6 225 0 r +rem set L4EYES=-15.797922 7.3 -10.555834 -6 236.25 0 r +rem set L4EYES=-17.553711 7.3 -7.270985 -6 247.5 0 r +rem set L4EYES=-18.634920 7.3 -3.706716 -6 258.75 0 r +rem set L4EYES=-19 7.3 0 -6 270 0 r +rem set L4EYES=-18.634920 7.3 3.706716 -6 281.25 0 r +rem set L4EYES=-17.553711 7.3 7.270985 -6 292.5 0 r +rem set L4EYES=-15.797922 7.3 10.555834 -6 303.75 0 r +rem set L4EYES=-13.435028 7.3 13.435028 -6 315 0 r +rem set L4EYES=-10.555834 7.3 15.797922 -6 326.25 0 r +rem set L4EYES=-7.270985 7.3 17.553711 -6 337.5 0 r +rem set L4EYES=-3.706716 7.3 18.634920 -6 348.75 0 r +rem set L4EYES=0 7.3 19 -6 0 0 r +rem set L4EYES=3.706716 7.3 18.634920 -6 11.25 0 r +rem set L4EYES=7.270985 7.3 17.553711 -6 22.5 0 r +rem set L4EYES=10.555834 7.3 15.797922 -6 33.75 0 r +rem set L4EYES=13.435028 7.3 13.435028 -6 45 0 r +rem set L4EYES=15.797922 7.3 10.555834 -6 56.25 0 r +rem set L4EYES=17.553711 7.3 7.270985 -6 67.5 0 r +rem set L4EYES=18.634920 7.3 3.706716 -6 78.75 0 r +rem set L4EYES=19 7.3 0 -6 90 0 r +rem set L4EYES=18.634920 7.3 -3.706716 -6 101.25 0 r +set L4EYES=17.553711 7.3 -7.270985 -6 112.5 0 r +rem set L4EYES=15.797922 7.3 -10.555834 -6 123.75 0 r +rem set L4EYES=13.435028 7.3 -13.435028 -6 135 0 r +rem set L4EYES=10.555834 7.3 -15.797922 -6 146.25 0 r +rem set L4EYES=7.270985 7.3 -17.553711 -6 157.5 0 r +rem set L4EYES=3.706716 7.3 -18.634920 -6 168.75 0 r +set L4VIEWEXT=True +rem ------------------------------------------------------------------ +call btprep.bat %1 %2 %3 %4 %5 %6 %7 %8 %9 +menu.bat short diff --git a/CONTENT/BT3025/BTCAM/BTCAM28.BAT b/CONTENT/BT3025/BTCAM/BTCAM28.BAT new file mode 100644 index 0000000..ef8cc23 --- /dev/null +++ b/CONTENT/BT3025/BTCAM/BTCAM28.BAT @@ -0,0 +1,43 @@ +@echo off +rem ------------------------------------------------------------------ +rem L4EYES=x y z pitch yaw roll [relative] +rem ------------------------------------------------------------------ +rem set L4EYES=25 5.9 -10 0 95 0 r +rem set L4EYES=0 7.3 -19 -7 180 0 r +rem Animation Cycle +rem set L4EYES=0 7.3 -19 -6 180 0 r +rem set L4EYES=-3.706716 7.3 -18.634920 -6 191.25 0 r +rem set L4EYES=-7.270985 7.3 -17.553711 -6 202.5 0 r +rem set L4EYES=-10.555834 7.3 -15.797922 -6 213.75 0 r +rem set L4EYES=-13.435028 7.3 -13.435028 -6 225 0 r +rem set L4EYES=-15.797922 7.3 -10.555834 -6 236.25 0 r +rem set L4EYES=-17.553711 7.3 -7.270985 -6 247.5 0 r +rem set L4EYES=-18.634920 7.3 -3.706716 -6 258.75 0 r +rem set L4EYES=-19 7.3 0 -6 270 0 r +rem set L4EYES=-18.634920 7.3 3.706716 -6 281.25 0 r +rem set L4EYES=-17.553711 7.3 7.270985 -6 292.5 0 r +rem set L4EYES=-15.797922 7.3 10.555834 -6 303.75 0 r +rem set L4EYES=-13.435028 7.3 13.435028 -6 315 0 r +rem set L4EYES=-10.555834 7.3 15.797922 -6 326.25 0 r +rem set L4EYES=-7.270985 7.3 17.553711 -6 337.5 0 r +rem set L4EYES=-3.706716 7.3 18.634920 -6 348.75 0 r +rem set L4EYES=0 7.3 19 -6 0 0 r +rem set L4EYES=3.706716 7.3 18.634920 -6 11.25 0 r +rem set L4EYES=7.270985 7.3 17.553711 -6 22.5 0 r +rem set L4EYES=10.555834 7.3 15.797922 -6 33.75 0 r +rem set L4EYES=13.435028 7.3 13.435028 -6 45 0 r +rem set L4EYES=15.797922 7.3 10.555834 -6 56.25 0 r +rem set L4EYES=17.553711 7.3 7.270985 -6 67.5 0 r +rem set L4EYES=18.634920 7.3 3.706716 -6 78.75 0 r +rem set L4EYES=19 7.3 0 -6 90 0 r +rem set L4EYES=18.634920 7.3 -3.706716 -6 101.25 0 r +rem set L4EYES=17.553711 7.3 -7.270985 -6 112.5 0 r +set L4EYES=15.797922 7.3 -10.555834 -6 123.75 0 r +rem set L4EYES=13.435028 7.3 -13.435028 -6 135 0 r +rem set L4EYES=10.555834 7.3 -15.797922 -6 146.25 0 r +rem set L4EYES=7.270985 7.3 -17.553711 -6 157.5 0 r +rem set L4EYES=3.706716 7.3 -18.634920 -6 168.75 0 r +set L4VIEWEXT=True +rem ------------------------------------------------------------------ +call btprep.bat %1 %2 %3 %4 %5 %6 %7 %8 %9 +menu.bat short diff --git a/CONTENT/BT3025/BTCAM/BTCAM29.BAT b/CONTENT/BT3025/BTCAM/BTCAM29.BAT new file mode 100644 index 0000000..70d32eb --- /dev/null +++ b/CONTENT/BT3025/BTCAM/BTCAM29.BAT @@ -0,0 +1,43 @@ +@echo off +rem ------------------------------------------------------------------ +rem L4EYES=x y z pitch yaw roll [relative] +rem ------------------------------------------------------------------ +rem set L4EYES=25 5.9 -10 0 95 0 r +rem set L4EYES=0 7.3 -19 -7 180 0 r +rem Animation Cycle +rem set L4EYES=0 7.3 -19 -6 180 0 r +rem set L4EYES=-3.706716 7.3 -18.634920 -6 191.25 0 r +rem set L4EYES=-7.270985 7.3 -17.553711 -6 202.5 0 r +rem set L4EYES=-10.555834 7.3 -15.797922 -6 213.75 0 r +rem set L4EYES=-13.435028 7.3 -13.435028 -6 225 0 r +rem set L4EYES=-15.797922 7.3 -10.555834 -6 236.25 0 r +rem set L4EYES=-17.553711 7.3 -7.270985 -6 247.5 0 r +rem set L4EYES=-18.634920 7.3 -3.706716 -6 258.75 0 r +rem set L4EYES=-19 7.3 0 -6 270 0 r +rem set L4EYES=-18.634920 7.3 3.706716 -6 281.25 0 r +rem set L4EYES=-17.553711 7.3 7.270985 -6 292.5 0 r +rem set L4EYES=-15.797922 7.3 10.555834 -6 303.75 0 r +rem set L4EYES=-13.435028 7.3 13.435028 -6 315 0 r +rem set L4EYES=-10.555834 7.3 15.797922 -6 326.25 0 r +rem set L4EYES=-7.270985 7.3 17.553711 -6 337.5 0 r +rem set L4EYES=-3.706716 7.3 18.634920 -6 348.75 0 r +rem set L4EYES=0 7.3 19 -6 0 0 r +rem set L4EYES=3.706716 7.3 18.634920 -6 11.25 0 r +rem set L4EYES=7.270985 7.3 17.553711 -6 22.5 0 r +rem set L4EYES=10.555834 7.3 15.797922 -6 33.75 0 r +rem set L4EYES=13.435028 7.3 13.435028 -6 45 0 r +rem set L4EYES=15.797922 7.3 10.555834 -6 56.25 0 r +rem set L4EYES=17.553711 7.3 7.270985 -6 67.5 0 r +rem set L4EYES=18.634920 7.3 3.706716 -6 78.75 0 r +rem set L4EYES=19 7.3 0 -6 90 0 r +rem set L4EYES=18.634920 7.3 -3.706716 -6 101.25 0 r +rem set L4EYES=17.553711 7.3 -7.270985 -6 112.5 0 r +rem set L4EYES=15.797922 7.3 -10.555834 -6 123.75 0 r +set L4EYES=13.435028 7.3 -13.435028 -6 135 0 r +rem set L4EYES=10.555834 7.3 -15.797922 -6 146.25 0 r +rem set L4EYES=7.270985 7.3 -17.553711 -6 157.5 0 r +rem set L4EYES=3.706716 7.3 -18.634920 -6 168.75 0 r +set L4VIEWEXT=True +rem ------------------------------------------------------------------ +call btprep.bat %1 %2 %3 %4 %5 %6 %7 %8 %9 +menu.bat short diff --git a/CONTENT/BT3025/BTCAM/BTCAM30.BAT b/CONTENT/BT3025/BTCAM/BTCAM30.BAT new file mode 100644 index 0000000..fcba19a --- /dev/null +++ b/CONTENT/BT3025/BTCAM/BTCAM30.BAT @@ -0,0 +1,43 @@ +@echo off +rem ------------------------------------------------------------------ +rem L4EYES=x y z pitch yaw roll [relative] +rem ------------------------------------------------------------------ +rem set L4EYES=25 5.9 -10 0 95 0 r +rem set L4EYES=0 7.3 -19 -7 180 0 r +rem Animation Cycle +rem set L4EYES=0 7.3 -19 -6 180 0 r +rem set L4EYES=-3.706716 7.3 -18.634920 -6 191.25 0 r +rem set L4EYES=-7.270985 7.3 -17.553711 -6 202.5 0 r +rem set L4EYES=-10.555834 7.3 -15.797922 -6 213.75 0 r +rem set L4EYES=-13.435028 7.3 -13.435028 -6 225 0 r +rem set L4EYES=-15.797922 7.3 -10.555834 -6 236.25 0 r +rem set L4EYES=-17.553711 7.3 -7.270985 -6 247.5 0 r +rem set L4EYES=-18.634920 7.3 -3.706716 -6 258.75 0 r +rem set L4EYES=-19 7.3 0 -6 270 0 r +rem set L4EYES=-18.634920 7.3 3.706716 -6 281.25 0 r +rem set L4EYES=-17.553711 7.3 7.270985 -6 292.5 0 r +rem set L4EYES=-15.797922 7.3 10.555834 -6 303.75 0 r +rem set L4EYES=-13.435028 7.3 13.435028 -6 315 0 r +rem set L4EYES=-10.555834 7.3 15.797922 -6 326.25 0 r +rem set L4EYES=-7.270985 7.3 17.553711 -6 337.5 0 r +rem set L4EYES=-3.706716 7.3 18.634920 -6 348.75 0 r +rem set L4EYES=0 7.3 19 -6 0 0 r +rem set L4EYES=3.706716 7.3 18.634920 -6 11.25 0 r +rem set L4EYES=7.270985 7.3 17.553711 -6 22.5 0 r +rem set L4EYES=10.555834 7.3 15.797922 -6 33.75 0 r +rem set L4EYES=13.435028 7.3 13.435028 -6 45 0 r +rem set L4EYES=15.797922 7.3 10.555834 -6 56.25 0 r +rem set L4EYES=17.553711 7.3 7.270985 -6 67.5 0 r +rem set L4EYES=18.634920 7.3 3.706716 -6 78.75 0 r +rem set L4EYES=19 7.3 0 -6 90 0 r +rem set L4EYES=18.634920 7.3 -3.706716 -6 101.25 0 r +rem set L4EYES=17.553711 7.3 -7.270985 -6 112.5 0 r +rem set L4EYES=15.797922 7.3 -10.555834 -6 123.75 0 r +rem set L4EYES=13.435028 7.3 -13.435028 -6 135 0 r +set L4EYES=10.555834 7.3 -15.797922 -6 146.25 0 r +rem set L4EYES=7.270985 7.3 -17.553711 -6 157.5 0 r +rem set L4EYES=3.706716 7.3 -18.634920 -6 168.75 0 r +set L4VIEWEXT=True +rem ------------------------------------------------------------------ +call btprep.bat %1 %2 %3 %4 %5 %6 %7 %8 %9 +menu.bat short diff --git a/CONTENT/BT3025/BTCAM/BTCAM31.BAT b/CONTENT/BT3025/BTCAM/BTCAM31.BAT new file mode 100644 index 0000000..251f59e --- /dev/null +++ b/CONTENT/BT3025/BTCAM/BTCAM31.BAT @@ -0,0 +1,43 @@ +@echo off +rem ------------------------------------------------------------------ +rem L4EYES=x y z pitch yaw roll [relative] +rem ------------------------------------------------------------------ +rem set L4EYES=25 5.9 -10 0 95 0 r +rem set L4EYES=0 7.3 -19 -7 180 0 r +rem Animation Cycle +rem set L4EYES=0 7.3 -19 -6 180 0 r +rem set L4EYES=-3.706716 7.3 -18.634920 -6 191.25 0 r +rem set L4EYES=-7.270985 7.3 -17.553711 -6 202.5 0 r +rem set L4EYES=-10.555834 7.3 -15.797922 -6 213.75 0 r +rem set L4EYES=-13.435028 7.3 -13.435028 -6 225 0 r +rem set L4EYES=-15.797922 7.3 -10.555834 -6 236.25 0 r +rem set L4EYES=-17.553711 7.3 -7.270985 -6 247.5 0 r +rem set L4EYES=-18.634920 7.3 -3.706716 -6 258.75 0 r +rem set L4EYES=-19 7.3 0 -6 270 0 r +rem set L4EYES=-18.634920 7.3 3.706716 -6 281.25 0 r +rem set L4EYES=-17.553711 7.3 7.270985 -6 292.5 0 r +rem set L4EYES=-15.797922 7.3 10.555834 -6 303.75 0 r +rem set L4EYES=-13.435028 7.3 13.435028 -6 315 0 r +rem set L4EYES=-10.555834 7.3 15.797922 -6 326.25 0 r +rem set L4EYES=-7.270985 7.3 17.553711 -6 337.5 0 r +rem set L4EYES=-3.706716 7.3 18.634920 -6 348.75 0 r +rem set L4EYES=0 7.3 19 -6 0 0 r +rem set L4EYES=3.706716 7.3 18.634920 -6 11.25 0 r +rem set L4EYES=7.270985 7.3 17.553711 -6 22.5 0 r +rem set L4EYES=10.555834 7.3 15.797922 -6 33.75 0 r +rem set L4EYES=13.435028 7.3 13.435028 -6 45 0 r +rem set L4EYES=15.797922 7.3 10.555834 -6 56.25 0 r +rem set L4EYES=17.553711 7.3 7.270985 -6 67.5 0 r +rem set L4EYES=18.634920 7.3 3.706716 -6 78.75 0 r +rem set L4EYES=19 7.3 0 -6 90 0 r +rem set L4EYES=18.634920 7.3 -3.706716 -6 101.25 0 r +rem set L4EYES=17.553711 7.3 -7.270985 -6 112.5 0 r +rem set L4EYES=15.797922 7.3 -10.555834 -6 123.75 0 r +rem set L4EYES=13.435028 7.3 -13.435028 -6 135 0 r +rem set L4EYES=10.555834 7.3 -15.797922 -6 146.25 0 r +set L4EYES=7.270985 7.3 -17.553711 -6 157.5 0 r +rem set L4EYES=3.706716 7.3 -18.634920 -6 168.75 0 r +set L4VIEWEXT=True +rem ------------------------------------------------------------------ +call btprep.bat %1 %2 %3 %4 %5 %6 %7 %8 %9 +menu.bat short diff --git a/CONTENT/BT3025/BTCAM/BTCAM32.BAT b/CONTENT/BT3025/BTCAM/BTCAM32.BAT new file mode 100644 index 0000000..0ba629b --- /dev/null +++ b/CONTENT/BT3025/BTCAM/BTCAM32.BAT @@ -0,0 +1,43 @@ +@echo off +rem ------------------------------------------------------------------ +rem L4EYES=x y z pitch yaw roll [relative] +rem ------------------------------------------------------------------ +rem set L4EYES=25 5.9 -10 0 95 0 r +rem set L4EYES=0 7.3 -19 -7 180 0 r +rem Animation Cycle +rem set L4EYES=0 7.3 -19 -6 180 0 r +rem set L4EYES=-3.706716 7.3 -18.634920 -6 191.25 0 r +rem set L4EYES=-7.270985 7.3 -17.553711 -6 202.5 0 r +rem set L4EYES=-10.555834 7.3 -15.797922 -6 213.75 0 r +rem set L4EYES=-13.435028 7.3 -13.435028 -6 225 0 r +rem set L4EYES=-15.797922 7.3 -10.555834 -6 236.25 0 r +rem set L4EYES=-17.553711 7.3 -7.270985 -6 247.5 0 r +rem set L4EYES=-18.634920 7.3 -3.706716 -6 258.75 0 r +rem set L4EYES=-19 7.3 0 -6 270 0 r +rem set L4EYES=-18.634920 7.3 3.706716 -6 281.25 0 r +rem set L4EYES=-17.553711 7.3 7.270985 -6 292.5 0 r +rem set L4EYES=-15.797922 7.3 10.555834 -6 303.75 0 r +rem set L4EYES=-13.435028 7.3 13.435028 -6 315 0 r +rem set L4EYES=-10.555834 7.3 15.797922 -6 326.25 0 r +rem set L4EYES=-7.270985 7.3 17.553711 -6 337.5 0 r +rem set L4EYES=-3.706716 7.3 18.634920 -6 348.75 0 r +rem set L4EYES=0 7.3 19 -6 0 0 r +rem set L4EYES=3.706716 7.3 18.634920 -6 11.25 0 r +rem set L4EYES=7.270985 7.3 17.553711 -6 22.5 0 r +rem set L4EYES=10.555834 7.3 15.797922 -6 33.75 0 r +rem set L4EYES=13.435028 7.3 13.435028 -6 45 0 r +rem set L4EYES=15.797922 7.3 10.555834 -6 56.25 0 r +rem set L4EYES=17.553711 7.3 7.270985 -6 67.5 0 r +rem set L4EYES=18.634920 7.3 3.706716 -6 78.75 0 r +rem set L4EYES=19 7.3 0 -6 90 0 r +rem set L4EYES=18.634920 7.3 -3.706716 -6 101.25 0 r +rem set L4EYES=17.553711 7.3 -7.270985 -6 112.5 0 r +rem set L4EYES=15.797922 7.3 -10.555834 -6 123.75 0 r +rem set L4EYES=13.435028 7.3 -13.435028 -6 135 0 r +rem set L4EYES=10.555834 7.3 -15.797922 -6 146.25 0 r +rem set L4EYES=7.270985 7.3 -17.553711 -6 157.5 0 r +set L4EYES=3.706716 7.3 -18.634920 -6 168.75 0 r +set L4VIEWEXT=True +rem ------------------------------------------------------------------ +call btprep.bat %1 %2 %3 %4 %5 %6 %7 %8 %9 +menu.bat short diff --git a/CONTENT/BT3025/BTGO.BAT b/CONTENT/BT3025/BTGO.BAT new file mode 100644 index 0000000..1a0932c --- /dev/null +++ b/CONTENT/BT3025/BTGO.BAT @@ -0,0 +1,9 @@ +@echo off +rem ------------------------------------------------------------------ +rem L4EYES=x y z pitch yaw roll [relative] +rem ------------------------------------------------------------------ +set L4EYES= +set L4VIEWEXT= +rem ------------------------------------------------------------------ +call btprep.bat %1 %2 %3 %4 %5 %6 %7 %8 %9 +menu.bat short diff --git a/CONTENT/BT3025/BTLOOK.BAT b/CONTENT/BT3025/BTLOOK.BAT new file mode 100644 index 0000000..6beb8c4 --- /dev/null +++ b/CONTENT/BT3025/BTLOOK.BAT @@ -0,0 +1,12 @@ +@echo off +rem ------------------------------------------------------------------ +rem L4EYES=x y z pitch yaw roll [relative] +rem ------------------------------------------------------------------ +set L4EYES=195 4 250 2 60.5 0 +if "%1"=="arena0" set L4EYES= 45 4 142 2 10.5 0 +rem if "%1"=="arena1" set L4EYES=-229 4 -131 2 200.0 0 +if "%1"=="arena1" set L4EYES=195 4 250 2 60.5 0 +set L4VIEWEXT=True +rem ------------------------------------------------------------------ +call btprep.bat %1 %2 %3 %4 %5 %6 %7 %8 %9 +menu.bat short diff --git a/CONTENT/BT3025/BTNET.BAT b/CONTENT/BT3025/BTNET.BAT new file mode 100644 index 0000000..bc112b2 --- /dev/null +++ b/CONTENT/BT3025/BTNET.BAT @@ -0,0 +1,22 @@ +@echo off +call setenv.bat t s n n +call showenv.bat +set a0= +if exist btl4d3s.exe set a0=btl4d3s.exe +if exist btl4d2s.exe set a0=btl4d2s.exe +if exist btl4d0.exe set a0=btl4d0.exe +if exist btl4opt.exe set a0=btl4opt.exe +if "%a0%"=="" goto error +echo on +32rtm.exe -x +netnub.exe -f %a0% +32rtm.exe -u +@echo off +goto end +:error +echo. +echo Program not found in current directory. +echo. +:end +set a0= +menu.bat short diff --git a/CONTENT/BT3025/BTPREP.BAT b/CONTENT/BT3025/BTPREP.BAT new file mode 100644 index 0000000..cc5f449 --- /dev/null +++ b/CONTENT/BT3025/BTPREP.BAT @@ -0,0 +1,44 @@ +@echo off +rem +rem usage: btprep.bat [course [vehicle [dropzone [inifile]]]] +rem +rem ------------------------------------------------------------------ +rem L4ANIMATION=scale (default = 1.0 NEVER make zero or negative) +rem ------------------------------------------------------------------ +set L4ANIMATION=1.0 +rem ------------------------------------------------------------------ +if "%1"=="" set a1=arena1 +if not "%1"=="" set a1=%1 +if not exist maps\%a1%.map goto nomap +rem ------------------------------------------------------------------ +if "%2"=="" set a2=thor +if not "%2"=="" set a2=%2 +if not exist models\%a2%.mod goto noveh +rem ------------------------------------------------------------------ +set A4DPLCFG= +if "%4"=="" goto bt +set A4DPLCFG=%4.ini +if not exist %A4DPLCFG% goto noenv +rem ------------------------------------------------------------------ +:bt +call makeegg.bat %a1% %a2% %3 +call bt.bat temp +goto end +:nomap +echo. +echo Course '%a1%' not found. +echo. +goto end +:noveh +echo. +echo Vehicle '%a2%' not found. +echo. +goto end +:noenv +echo. +echo Renderer configuration file '%A4DPLCFG%' not found. +echo. +goto end +:end +set a2= +set a1= diff --git a/CONTENT/BT3025/BUILD.BAT b/CONTENT/BT3025/BUILD.BAT new file mode 100644 index 0000000..fe7342b --- /dev/null +++ b/CONTENT/BT3025/BUILD.BAT @@ -0,0 +1,6 @@ +@echo off +rem build.bat +set s0=test.bld +if not exist %s0% set s0= +btl4tool.exe -b btl4.bld %s0% +set s0= diff --git a/CONTENT/BT3025/BUILD1.BAT b/CONTENT/BT3025/BUILD1.BAT new file mode 100644 index 0000000..6ed4be5 --- /dev/null +++ b/CONTENT/BT3025/BUILD1.BAT @@ -0,0 +1,82 @@ +@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 +xdel d:\dev\*.bak /s /n +set Path=c:\nwdos;c:\nwclient;c:\net;c:\pkware;d:\dev\bt3025;d:\dev\bt3025\models +d: +cd \dev\bt3025 +cd models +@echo Building Mechs... > ..\result1.txt +@echo Building avatar... >> ..\result1.txt +mechbld avatar.mch >> ..\result1.txt +@echo Building blkhawk... >> ..\result1.txt +mechbld blkhawk.mch >> ..\result1.txt +@echo Building loki... >> ..\result1.txt +mechbld loki.mch >> ..\result1.txt +@echo Building madcat... >> ..\result1.txt +mechbld madcat.mch >> ..\result1.txt +@echo Building owens... >> ..\result1.txt +mechbld owens.mch >> ..\result1.txt +@echo Building sunder... >> ..\result1.txt +mechbld sunder.mch >> ..\result1.txt +@echo Building thor... >> ..\result1.txt +mechbld thor.mch >> ..\result1.txt +@echo Building vulture... >> ..\result1.txt +mechbld vulture.mch >> ..\result1.txt +@rem @echo Building firestarter... >> ..\result1.txt +@rem mechbld firstrtr.mch >> ..\result1.txt +@rem @echo Building blackjack... >> ..\result1.txt +@rem mechbld blkjack.mch >> ..\result1.txt +@echo Building ava1... >> ..\result1.txt +mechbld ava1.mch >> ..\result1.txt +@echo Building bhk1... >> ..\result1.txt +mechbld bhk1.mch >> ..\result1.txt +@echo Building Lok1... >> ..\result1.txt +mechbld lok1.mch >> ..\result1.txt +@echo Building Lok2... >> ..\result1.txt +mechbld lok2.mch >> ..\result1.txt +@echo Building mad1... >> ..\result1.txt +mechbld mad1.mch >> ..\result1.txt +@echo Building mad2... >> ..\result1.txt +mechbld mad2.mch >> ..\result1.txt +@echo Building thr1... >> ..\result1.txt +mechbld thr1.mch >> ..\result1.txt +@echo Building vul1... >> ..\result1.txt +mechbld vul1.mch >> ..\result1.txt +@echo Building own1... >> ..\result1.txt +mechbld own1.mch >> ..\result1.txt +@echo Building snd1... >> ..\result1.txt +mechbld snd1.mch >> ..\result1.txt +@REM @echo Building snd2... >> ..\result1.txt +@REM mechbld snd2.mch >> ..\result1.txt +@REM @echo Building vul2... >> ..\result1.txt +@REM mechbld vul2.mch >> ..\result1.txt +@REM @echo Building thr6... >> ..\result1.txt +@REM mechbld thr6.mch >> ..\result1.txt +@REM @echo Building ava2... >> ..\result1.txt +@REM mechbld ava2.mch >> ..\result1.txt + +@rem @echo Building raptor... >> ..\result1.txt +@rem mechbld raptor.mch >> ..\result1.txt +@rem @echo Building strider... >> ..\result1.txt +@rem mechbld strider.mch >> ..\result1.txt +@REM @echo Building bat... >> ..\result1.txt +@REM mechbld bat.mch >> ..\result1.txt +cd .. +btl4tool -b btl4.bld >> result1.txt +call arcbt f . >> result1.txt +del c:\vgl_labs\archive\bt3025.exe +copy bt.zip c:\vgl_labs\archive\bt3025.zip +del bt.zip +c: +cd c:\vgl_labs\archive +zip2exe bt3025.zip +del bt3025.zip +d: +cd d:\dev\bt3025 +rem edit result1.txt diff --git a/CONTENT/BT3025/DEARCBT.BAT b/CONTENT/BT3025/DEARCBT.BAT new file mode 100644 index 0000000..abd65cb --- /dev/null +++ b/CONTENT/BT3025/DEARCBT.BAT @@ -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 diff --git a/CONTENT/BT3025/EXCLUDE.LST b/CONTENT/BT3025/EXCLUDE.LST new file mode 100644 index 0000000..001f660 --- /dev/null +++ b/CONTENT/BT3025/EXCLUDE.LST @@ -0,0 +1,7 @@ +joystick.ini +anims\vcs.cfg +audio\vcs.cfg +gauge\vcs.cfg +maps\vcs.cfg +models\vcs.cfg +solids\vcs.cfg diff --git a/CONTENT/BT3025/FAILURE.LOG b/CONTENT/BT3025/FAILURE.LOG new file mode 100644 index 0000000..ecf86ed --- /dev/null +++ b/CONTENT/BT3025/FAILURE.LOG @@ -0,0 +1,12 @@ +[RIOBoardErrors] +error=missing_board@Slot=5:Address=0 +[RIODeadLamps] +lamp=TeslaRelay3 +lamp=undefined_0x17 +lamp=TeslaRelay1 +lamp=PanicButton +lamp=IcomAmpEnableRelay +lamp=IcomIncRelay +lamp=IcomPTTRelay +lamp=undefined_0x3D +lamp=FloorEntry diff --git a/CONTENT/BT3025/GAUGE/AB01_GA.GIM b/CONTENT/BT3025/GAUGE/AB01_GA.GIM new file mode 100644 index 0000000..b09f101 --- /dev/null +++ b/CONTENT/BT3025/GAUGE/AB01_GA.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=20, 0, 50 +v1=-69, 0, 50 +v2=-69, 0, -50 +v3=20, 0, -50 + +[level0] +linelist=a_bld v0 v1 v2 v3 v0 + diff --git a/CONTENT/BT3025/GAUGE/AB02_GA.GIM b/CONTENT/BT3025/GAUGE/AB02_GA.GIM new file mode 100644 index 0000000..04db4ca --- /dev/null +++ b/CONTENT/BT3025/GAUGE/AB02_GA.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=25, 0, 45 +v1=-25, 0, 45 +v2=-25, 0, -45 +v3=25, 0, -45 + +[level0] +linelist=a_bld v0 v1 v2 v3 v0 + diff --git a/CONTENT/BT3025/GAUGE/AB03_GA.GIM b/CONTENT/BT3025/GAUGE/AB03_GA.GIM new file mode 100644 index 0000000..b3a9879 --- /dev/null +++ b/CONTENT/BT3025/GAUGE/AB03_GA.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=68, 0, 50 +v1=-20, 0, 50 +v2=-20, 0, -50 +v3=68, 0, -50 + +[level0] +linelist=a_bld v0 v1 v2 v3 v0 + diff --git a/CONTENT/BT3025/GAUGE/AB04_GA.GIM b/CONTENT/BT3025/GAUGE/AB04_GA.GIM new file mode 100644 index 0000000..723bd2a --- /dev/null +++ b/CONTENT/BT3025/GAUGE/AB04_GA.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=38, 0, 38 +v1=-37, 0, 38 +v2=-37, 0, -51 +v3=38, 0, -51 + +[level0] +linelist=a_bld v0 v1 v2 v3 v0 + diff --git a/CONTENT/BT3025/GAUGE/AB05_GA.GIM b/CONTENT/BT3025/GAUGE/AB05_GA.GIM new file mode 100644 index 0000000..ab8b5b0 --- /dev/null +++ b/CONTENT/BT3025/GAUGE/AB05_GA.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=150, 0, 44 +v1=-150, 0, 44 +v2=-150, 0, -45 +v3=150, 0, -45 + +[level0] +linelist=a_bld v0 v1 v2 v3 v0 + diff --git a/CONTENT/BT3025/GAUGE/AB06_GA.GIM b/CONTENT/BT3025/GAUGE/AB06_GA.GIM new file mode 100644 index 0000000..0fe0e4c --- /dev/null +++ b/CONTENT/BT3025/GAUGE/AB06_GA.GIM @@ -0,0 +1,29 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=3000 +level1=10000 + +[vertices] +v0=50, 0, -7 +v1=35, 0, -7 +v2=35, 0, -33 +v3=50, 0, -33 +v4=50, 0, 33 +v5=35, 0, 33 +v6=35, 0, 7 +v7=50, 0, 7 +v8=50, 0, 50 +v9=-50, 0, 50 +v10=-50, 0, -50 +v11=50, 0, -50 + +[level0] +linelist=a_bay v0 v1 v2 v3 v0 +linelist=a_bay v4 v5 v6 v7 v4 +linelist=a_hanger v8 v9 v10 v11 v8 + +[level1] +linelist=a_hanger v8 v9 v10 v11 v8 + diff --git a/CONTENT/BT3025/GAUGE/AB07_GA.GIM b/CONTENT/BT3025/GAUGE/AB07_GA.GIM new file mode 100644 index 0000000..34d357b --- /dev/null +++ b/CONTENT/BT3025/GAUGE/AB07_GA.GIM @@ -0,0 +1,20 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=2500 +level1=10000 + +[vertices] +v0=10, 0, 15 +v1=0, 0, 15 +v2=-15, 0, 0 +v3=-15, 0, -10 +v4=10, 0, -10 + +[level0] +linelist=a_hanger v0 v1 v2 v3 v4 v0 + +[level1] +linelist=a_hanger v0 v1 v2 v3 v4 v0 + diff --git a/CONTENT/BT3025/GAUGE/AB08_GA.GIM b/CONTENT/BT3025/GAUGE/AB08_GA.GIM new file mode 100644 index 0000000..f90ec6d --- /dev/null +++ b/CONTENT/BT3025/GAUGE/AB08_GA.GIM @@ -0,0 +1,16 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=60, 0, -60 +v1=60, 0, -2.62268e-06 +v2=2.62268e-06, 0, 60 +v3=-60, 0, 60 +v4=-60, 0, -60 + +[level0] +linelist=a_stands v0 v1 v2 v3 v4 v0 + diff --git a/CONTENT/BT3025/GAUGE/AB09_GA.GIM b/CONTENT/BT3025/GAUGE/AB09_GA.GIM new file mode 100644 index 0000000..b5fc55c --- /dev/null +++ b/CONTENT/BT3025/GAUGE/AB09_GA.GIM @@ -0,0 +1,25 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=7, 0, 23 +v1=7, 0, 6 +v2=33, 0, 6 +v3=33, 0, 23 +v4=-33, 0, 23 +v5=-33, 0, 6 +v6=-7, 0, 6 +v7=-7, 0, 23 +v8=-50, 0, 23 +v9=-50, 0, -27 +v10=50, 0, -27 +v11=50, 0, 23 + +[level0] +linelist=a_bay v0 v1 v2 v3 v0 +linelist=a_bay v4 v5 v6 v7 v4 +linelist=a_hanger v8 v9 v10 v11 v8 + diff --git a/CONTENT/BT3025/GAUGE/AB10_GA.GIM b/CONTENT/BT3025/GAUGE/AB10_GA.GIM new file mode 100644 index 0000000..cd7d52b --- /dev/null +++ b/CONTENT/BT3025/GAUGE/AB10_GA.GIM @@ -0,0 +1,29 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=2000 +level1=10000 + +[vertices] +v0=7, 0, -23 +v1=33, 0, -23 +v2=33, 0, -6 +v3=7, 0, -6 +v4=-33, 0, -23 +v5=-7, 0, -23 +v6=-7, 0, -6 +v7=-33, 0, -6 +v8=-50, 0, -23 +v9=50, 0, -23 +v10=50, 0, 27 +v11=-50, 0, 27 + +[level0] +linelist=a_bay v0 v1 v2 v3 v0 +linelist=a_bay v4 v5 v6 v7 v4 +linelist=a_hanger v8 v9 v10 v11 v8 + +[level1] +linelist=a_hanger v8 v9 v10 v11 v8 + diff --git a/CONTENT/BT3025/GAUGE/AD01_GA.GIM b/CONTENT/BT3025/GAUGE/AD01_GA.GIM new file mode 100644 index 0000000..7a0e541 --- /dev/null +++ b/CONTENT/BT3025/GAUGE/AD01_GA.GIM @@ -0,0 +1,40 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=3000 +level1=10000 + +[vertices] +v0=14, 0, -7 +v1=-9, 0, -7 +v2=-9, 0, -11 +v3=14, 0, -11 +v4=55, 0, 9 +v5=28, 0, 9 +v6=55, 0, -18 +v7=28, 0, -1 +v8=15, 0, -1 +v9=15, 0, -18 +v10=-10, 0, -1 +v11=-23, 0, -1 +v12=-10, 0, -18 +v13=-50, 0, -18 +v14=-50, 0, 9 +v15=-23, 0, 9 + +[level0] +linelist=a_door v0 v1 v2 v3 v0 +linelist=a_wall v4 v5 v6 v4 +linelist=a_wall v5 v7 v6 v5 +linelist=a_wall v8 v9 v7 v8 +linelist=a_wall v7 v9 v6 v7 +linelist=a_wall v10 v11 v12 v10 +linelist=a_wall v12 v11 v13 v12 +linelist=a_wall v13 v11 v14 v13 +linelist=a_wall v11 v15 v14 v11 + +[level1] +linelist=a_door v0 v1 v2 v3 v0 +linelist=a_wall v4 v14 v13 v6 v4 + diff --git a/CONTENT/BT3025/GAUGE/ADPAL.PCC b/CONTENT/BT3025/GAUGE/ADPAL.PCC new file mode 100644 index 0000000..987e374 Binary files /dev/null and b/CONTENT/BT3025/GAUGE/ADPAL.PCC differ diff --git a/CONTENT/BT3025/GAUGE/ADPAL2.PCC b/CONTENT/BT3025/GAUGE/ADPAL2.PCC new file mode 100644 index 0000000..fe29ea2 Binary files /dev/null and b/CONTENT/BT3025/GAUGE/ADPAL2.PCC differ diff --git a/CONTENT/BT3025/GAUGE/APC.GIM b/CONTENT/BT3025/GAUGE/APC.GIM new file mode 100644 index 0000000..9c8e485 --- /dev/null +++ b/CONTENT/BT3025/GAUGE/APC.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=-2.5, 0, -5.5 +v1=2.5, 0, -5.5 +v2=2.5, 0, 5 +v3=-2.5, 0, 5 + +[level0] +linelist=a_vehicle v0 v1 v2 v3 v0 + diff --git a/CONTENT/BT3025/GAUGE/AR01_GA.GIM b/CONTENT/BT3025/GAUGE/AR01_GA.GIM new file mode 100644 index 0000000..1a191fd --- /dev/null +++ b/CONTENT/BT3025/GAUGE/AR01_GA.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=30, 0, 25 +v1=-33, 0, 25 +v2=-33, 0, -26 +v3=30, 0, -26 + +[level0] +linelist=a_bld v0 v1 v2 v3 v0 + diff --git a/CONTENT/BT3025/GAUGE/AR02_GA.GIM b/CONTENT/BT3025/GAUGE/AR02_GA.GIM new file mode 100644 index 0000000..90b38c3 --- /dev/null +++ b/CONTENT/BT3025/GAUGE/AR02_GA.GIM @@ -0,0 +1,24 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=3000 +level1=10000 + +[vertices] +v0=11, 0, -25 +v1=11, 0, 20 +v2=-11, 0, 20 +v3=-11, 0, -25 +v4=25, 0, -25 +v5=25, 0, 26 +v6=-25, 0, 26 +v7=-25, 0, -25 + +[level0] +linelist=a_bay v0 v1 v2 v3 v0 +linelist=a_hanger v4 v5 v6 v7 v4 + +[level1] +linelist=a_hanger v4 v5 v6 v7 v4 + diff --git a/CONTENT/BT3025/GAUGE/AR03_GA.GIM b/CONTENT/BT3025/GAUGE/AR03_GA.GIM new file mode 100644 index 0000000..af3c507 --- /dev/null +++ b/CONTENT/BT3025/GAUGE/AR03_GA.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=50, 0, 25 +v1=-50, 0, 25 +v2=-50, 0, -25 +v3=50, 0, -25 + +[level0] +linelist=a_bld v0 v1 v2 v3 v0 + diff --git a/CONTENT/BT3025/GAUGE/AR04_GA.GIM b/CONTENT/BT3025/GAUGE/AR04_GA.GIM new file mode 100644 index 0000000..96ac195 --- /dev/null +++ b/CONTENT/BT3025/GAUGE/AR04_GA.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=25, 0, 25 +v1=-25, 0, 25 +v2=-25, 0, -25 +v3=25, 0, -25 + +[level0] +linelist=a_bld v0 v1 v2 v3 v0 + diff --git a/CONTENT/BT3025/GAUGE/AR05_GA.GIM b/CONTENT/BT3025/GAUGE/AR05_GA.GIM new file mode 100644 index 0000000..96ac195 --- /dev/null +++ b/CONTENT/BT3025/GAUGE/AR05_GA.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=25, 0, 25 +v1=-25, 0, 25 +v2=-25, 0, -25 +v3=25, 0, -25 + +[level0] +linelist=a_bld v0 v1 v2 v3 v0 + diff --git a/CONTENT/BT3025/GAUGE/ARENA_GA.GIM b/CONTENT/BT3025/GAUGE/ARENA_GA.GIM new file mode 100644 index 0000000..a53241e --- /dev/null +++ b/CONTENT/BT3025/GAUGE/ARENA_GA.GIM @@ -0,0 +1,70 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=1000 + +[vertices] +v0=650, 0, 650 +v1=-650, 0, 650 +v2=-650, 0, -650 +v3=650, 0, -650 +v4=-100, 0, 450 +v5=-150, 0, 450 +v6=-150, 0, 400 +v7=-100, 0, 400 +v8=150, 0, 450 +v9=100, 0, 450 +v10=100, 0, 400 +v11=150, 0, 400 +v12=450, 0, 150 +v13=400, 0, 150 +v14=400, 0, 100 +v15=450, 0, 100 +v16=450, 0, -100 +v17=400, 0, -100 +v18=400, 0, -150 +v19=450, 0, -150 +v20=450, 0, -400 +v21=400, 0, -400 +v22=400, 0, -450 +v23=450, 0, -450 +v24=200, 0, -400 +v25=100, 0, -400 +v26=100, 0, -450 +v27=200, 0, -450 +v28=-100, 0, -400 +v29=-150, 0, -400 +v30=-150, 0, -450 +v31=-100, 0, -450 +v32=-100, 0, -100 +v33=-150, 0, -100 +v34=-150, 0, -150 +v35=-100, 0, -150 +v36=-100, 0, 300 +v37=-200, 0, 300 +v38=-200, 0, 250 +v39=-100, 0, 250 +v40=-350, 0, 150 +v41=-450, 0, 150 +v42=-450, 0, 100 +v43=-350, 0, 100 +v44=-350, 0, -100 +v45=-450, 0, -100 +v46=-450, 0, -200 +v47=-350, 0, -200 + +[level0] +linelist=a_arenawall v0 v1 v2 v3 v0 +linelist=a_arenawall v4 v5 v6 v7 v4 +linelist=a_arenawall v8 v9 v10 v11 v8 +linelist=a_arenawall v12 v13 v14 v15 v12 +linelist=a_arenawall v16 v17 v18 v19 v16 +linelist=a_arenawall v20 v21 v22 v23 v20 +linelist=a_arenawall v24 v25 v26 v27 v24 +linelist=a_arenawall v28 v29 v30 v31 v28 +linelist=a_arenawall v32 v33 v34 v35 v32 +linelist=a_arenawall v36 v37 v38 v39 v36 +linelist=a_arenawall v40 v41 v42 v43 v40 +linelist=a_arenawall v44 v45 v46 v47 v44 + diff --git a/CONTENT/BT3025/GAUGE/ARMRMOVR.GIM b/CONTENT/BT3025/GAUGE/ARMRMOVR.GIM new file mode 100644 index 0000000..140475f --- /dev/null +++ b/CONTENT/BT3025/GAUGE/ARMRMOVR.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=-2, 0, -2 +v1=2, 0, -2 +v2=2, 0, 2 +v3=-2, 0, 2 + +[level0] +linelist=a_vehicle v0 v1 v2 v3 v0 + diff --git a/CONTENT/BT3025/GAUGE/AW01_GA.GIM b/CONTENT/BT3025/GAUGE/AW01_GA.GIM new file mode 100644 index 0000000..7ea759a --- /dev/null +++ b/CONTENT/BT3025/GAUGE/AW01_GA.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=50, 0, 5 +v1=-50, 0, 5 +v2=-50, 0, -10 +v3=50, 0, -10 + +[level0] +linelist=a_wall v0 v1 v2 v3 v0 + diff --git a/CONTENT/BT3025/GAUGE/AW02_GA.GIM b/CONTENT/BT3025/GAUGE/AW02_GA.GIM new file mode 100644 index 0000000..5aedfe3 --- /dev/null +++ b/CONTENT/BT3025/GAUGE/AW02_GA.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=50, 0, 0 +v1=-50, 0, 0 +v2=-50, 0, -12 +v3=50, 0, -12 + +[level0] +linelist=a_wall v0 v1 v2 v3 v0 + diff --git a/CONTENT/BT3025/GAUGE/AW03_GA.GIM b/CONTENT/BT3025/GAUGE/AW03_GA.GIM new file mode 100644 index 0000000..6d00853 --- /dev/null +++ b/CONTENT/BT3025/GAUGE/AW03_GA.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=0, 0, 100 +v1=-20, 0, 100 +v2=-20, 0, -100 +v3=0, 0, -100 + +[level0] +linelist=a_wall v0 v1 v2 v3 v0 + diff --git a/CONTENT/BT3025/GAUGE/AW04_GA.GIM b/CONTENT/BT3025/GAUGE/AW04_GA.GIM new file mode 100644 index 0000000..436564b --- /dev/null +++ b/CONTENT/BT3025/GAUGE/AW04_GA.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=52, 0, 75 +v1=-5, 0, 75 +v2=-5, 0, -75 +v3=52, 0, -75 + +[level0] +linelist=a_hanger v0 v1 v2 v3 v0 + diff --git a/CONTENT/BT3025/GAUGE/AW05_GA.GIM b/CONTENT/BT3025/GAUGE/AW05_GA.GIM new file mode 100644 index 0000000..a6e9415 --- /dev/null +++ b/CONTENT/BT3025/GAUGE/AW05_GA.GIM @@ -0,0 +1,19 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=15, 0, 35 +v1=10, 0, 35 +v2=10, 0, -10 +v3=15, 0, -10 +v4=-35, 0, -10 +v5=-35, 0, -15 +v6=15, 0, -15 + +[level0] +linelist=a_wall v0 v1 v2 v3 v0 +linelist=a_wall v3 v4 v5 v6 v3 + diff --git a/CONTENT/BT3025/GAUGE/BDUCK.PCC b/CONTENT/BT3025/GAUGE/BDUCK.PCC new file mode 100644 index 0000000..7708f23 Binary files /dev/null and b/CONTENT/BT3025/GAUGE/BDUCK.PCC differ diff --git a/CONTENT/BT3025/GAUGE/BLD03_GA.GIM b/CONTENT/BT3025/GAUGE/BLD03_GA.GIM new file mode 100644 index 0000000..51de1e5 --- /dev/null +++ b/CONTENT/BT3025/GAUGE/BLD03_GA.GIM @@ -0,0 +1,26 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=-29, 0, -17 +v1=17, 0, -17 +v2=17, 0, 11 +v3=-29, 0, 11 + +v4=1, 0, -23 +v5=29, 0, -23 +v6=29, 0, 23 +v7=1, 0, 23 + +v8=10, 0, 5 +v9=20, 0, 5 +v10=20, 0, 15 +v11=10, 0, 15 + +[level0] +linelist=a_bunker v0 v1 v2 v3 v0 +linelist=a_bunker v4 v5 v6 v7 v4 +linelist=a_bunker v8 v9 v10 v11 v8 \ No newline at end of file diff --git a/CONTENT/BT3025/GAUGE/BLD04_GA.GIM b/CONTENT/BT3025/GAUGE/BLD04_GA.GIM new file mode 100644 index 0000000..1479251 --- /dev/null +++ b/CONTENT/BT3025/GAUGE/BLD04_GA.GIM @@ -0,0 +1,24 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=-7, 0, 9 +v1=-7, 0, 20 +v2=6.5, 0, 20 +v3=6.5, 0, 9 +v4=-12, 0, -17 +v5=-12, 0, 3 +v6=12, 0, 3 +v7=12, 0, -17 +v8=-5.5, 0, 3 +v9=-5.5, 0, 9 +v10=4.5, 0, 9 +v11=4.5, 0, 3 + +[level0] +linelist=a_bunker v0 v1 v2 v3 v0 +linelist=a_bunker v4 v5 v6 v7 v4 +linelist=a_bunker v8 v9 v10 v11 v8 diff --git a/CONTENT/BT3025/GAUGE/BLD06_GA.GIM b/CONTENT/BT3025/GAUGE/BLD06_GA.GIM new file mode 100644 index 0000000..e540372 --- /dev/null +++ b/CONTENT/BT3025/GAUGE/BLD06_GA.GIM @@ -0,0 +1,50 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=-20.0781, 0, -7.04688 +v1=-2.92188, 0, -7.04688 +v2=-2.92188, 0, 11.0469 +v3=-20.0781, 0, 11.0469 + +v4=2.92188, 0, -7.04688 +v5=20.0781, 0, -7.04688 +v6=20.0781, 0, 11.0469 +v7=2.92188, 0, 11.0469 + +v8=-9.07812, 0, -3.04688 +v9=9.07812, 0, -3.04688 +v10=9.07812, 0, 15.0469 +v11=-9.07812, 0, 15.0469 + +v12=20, 0, -10 +v13=22, 0, -10 +v14=22, 0, -3 +v15=20, 0, -3 + +v16=2.54688, 0, -10 +v17=4.54688, 0, -10 +v18=4.54688, 0, -3 +v19=2.54688, 0, -3 + +v20=-21.9219, 0, -10 +v21=-19.9219, 0, -10 +v22=-19.9219, 0, -3 +v23=-21.9219, 0, -3 + +v24=-4.46094, 0, -10 +v25=-2.46094, 0, -10 +v26=-2.46094, 0, -3 +v27=-4.46094, 0, -3 + +[level0] +linelist=a_bunker v0 v1 v2 v3 v0 +linelist=a_bunker v4 v5 v6 v7 v4 +linelist=a_bunker v8 v9 v10 v11 v8 +linelist=a_bunker v12 v13 v14 v15 v12 +linelist=a_bunker v16 v17 v18 v19 v16 +linelist=a_bunker v20 v21 v22 v23 v20 +linelist=a_bunker v24 v25 v26 v27 v24 \ No newline at end of file diff --git a/CONTENT/BT3025/GAUGE/BLD20_GA.GIM b/CONTENT/BT3025/GAUGE/BLD20_GA.GIM new file mode 100644 index 0000000..95cc2c9 --- /dev/null +++ b/CONTENT/BT3025/GAUGE/BLD20_GA.GIM @@ -0,0 +1,33 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=-17.0312, 0, -11.9375 +v1=15.9688, 0, -11.9375 +v2=15.9688, 0, 8.0625 +v3=-17.0312, 0, 8.0625 + +v4=-26.0312, 0, -3.9375 +v5=-9.03125, 0, -3.9375 +v6=-9.03125, 0, 14.0625 +v7=-26.0312, 0, 14.0625 + +v8=7.96875, 0, -13.9375 +v9=25.9688, 0, -13.9375 +v10=25.9688, 0, 14.0625 +v11=7.96875, 0, 14.0625 + +v12=-9.03125, 0, -2.9375 +v13=2.96875, 0, -2.9375 +v14=2.96875, 0, 5.0625 +v15=-9.03125, 0, 5.0625 + + +[level0] +linelist=a_bunker v0 v1 v2 v3 v0 +linelist=a_bunker v4 v5 v6 v7 v4 +linelist=a_bunker v8 v9 v10 v11 v8 +linelist=a_bunker v12 v13 v14 v15 v12 diff --git a/CONTENT/BT3025/GAUGE/BLD24_GA.GIM b/CONTENT/BT3025/GAUGE/BLD24_GA.GIM new file mode 100644 index 0000000..af5cf88 --- /dev/null +++ b/CONTENT/BT3025/GAUGE/BLD24_GA.GIM @@ -0,0 +1,20 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=-2.24219, 0, -21.3906 +v1=9.25781, 0, -21.3906 +v2=9.25781, 0, 0.109375 +v3=-2.24219, 0, 0.109375 + +v4=-8.74219, 0, 0.109375 +v5=9.25781, 0, 0.109375 +v6=9.25781, 0, 22.1094 +v7=-8.74219, 0, 22.1094 + +[level0] +linelist=a_bunker v0 v1 v2 v3 v0 +linelist=a_bunker v4 v5 v6 v7 v4 \ No newline at end of file diff --git a/CONTENT/BT3025/GAUGE/BLD26_GA.GIM b/CONTENT/BT3025/GAUGE/BLD26_GA.GIM new file mode 100644 index 0000000..e85e379 --- /dev/null +++ b/CONTENT/BT3025/GAUGE/BLD26_GA.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=-6, 0, -9 +v1=6, 0, -9 +v2=6, 0, 9 +v3=-6, 0, 9 + +[level0] +linelist=a_bunker v0 v1 v2 v3 v0 + diff --git a/CONTENT/BT3025/GAUGE/BLD27_GA.GIM b/CONTENT/BT3025/GAUGE/BLD27_GA.GIM new file mode 100644 index 0000000..a3237da --- /dev/null +++ b/CONTENT/BT3025/GAUGE/BLD27_GA.GIM @@ -0,0 +1,45 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=-40, 0, -8 +v1=-40, 0, -28 +v2=-58, 0, -28 +v3=-58, 0, -8 +v4=-52, 0, -19 +v5=-52, 0, -6 +v6=-63, 0, -6 +v7=-63, 0, -19 +v8=-83, 0, -19 +v9=-83, 0, -6 +v10=-87, 0, -6 +v11=-87, 0, -19 +v12=-83, 0, -19 +v13=-83, 0, -6 +v14=-63, 0, -6 +v15=-63, 0, -19 +v16=-87, 0, 8.5 +v17=-87, 0, -6 +v18=-52, 0, -6 +v19=-52, 0, 8.5 +v20=-82, 0, 8.5 +v21=-82, 0, 14.5 +v22=-58, 0, 14.5 +v23=-58, 0, 8.5 +v24=-87, 0, 40 +v25=-87, 0, 14.5 +v26=-52, 0, 14.5 +v27=-52, 0, 40 + +[level0] +linelist=a_bunker v0 v1 v2 v3 v0 +linelist=a_bunker v4 v5 v6 v7 v4 +linelist=a_bunker v8 v9 v10 v11 v8 +linelist=a_hanger v12 v13 v14 v15 v12 +linelist=a_bunker v16 v17 v18 v19 v16 +linelist=a_bunker v20 v21 v22 v23 v20 +linelist=a_bunker v24 v25 v26 v27 v24 + diff --git a/CONTENT/BT3025/GAUGE/BLH_GA.GIM b/CONTENT/BT3025/GAUGE/BLH_GA.GIM new file mode 100644 index 0000000..a692b91 --- /dev/null +++ b/CONTENT/BT3025/GAUGE/BLH_GA.GIM @@ -0,0 +1,21 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=1000 + +[vertices] +v0=2.5, 0, -0.6 +v1=0, 0, -3 +v2=-2.5, 0, -0.6 +v3=-2.5, 0, 0.7 +v4=2.5, 0, 0.7 +v5=-0.2, 0, -1.5 +v6=-1.5, 0, -1.5 +v7=-1.5, 0, 0.9 +v8=-0.2, 0, 0.9 + +[level0] +linelist=a_mech v0 v1 v2 v3 v4 v0 +linelist=a_mech v5 v6 v7 v8 v5 + diff --git a/CONTENT/BT3025/GAUGE/BNK_GA.GIM b/CONTENT/BT3025/GAUGE/BNK_GA.GIM new file mode 100644 index 0000000..750f0d4 --- /dev/null +++ b/CONTENT/BT3025/GAUGE/BNK_GA.GIM @@ -0,0 +1,24 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=3000 +level1=10000 + +[vertices] +v0=-1.7, 0, 3 +v1=1.7, 0, 3 +v2=2, 0, 3.7 +v3=-2, 0, 3.7 +v4=3.7, 0, -3.7 +v5=3.7, 0, 3.7 +v6=-3.7, 0, 3.7 +v7=-3.7, 0, -3.7 + +[level0] +linelist=a_bay v0 v1 v2 v3 v0 +linelist=a_bunker v4 v5 v6 v7 v4 + +[level1] +linelist=a_bunker v4 v5 v6 v7 v4 + diff --git a/CONTENT/BT3025/GAUGE/BTEBUS.PCC b/CONTENT/BT3025/GAUGE/BTEBUS.PCC new file mode 100644 index 0000000..47e2a19 Binary files /dev/null and b/CONTENT/BT3025/GAUGE/BTEBUS.PCC differ diff --git a/CONTENT/BT3025/GAUGE/BTECMODE.PCC b/CONTENT/BT3025/GAUGE/BTECMODE.PCC new file mode 100644 index 0000000..1b85086 Binary files /dev/null and b/CONTENT/BT3025/GAUGE/BTECMODE.PCC differ diff --git a/CONTENT/BT3025/GAUGE/BTEFIRE.PCC b/CONTENT/BT3025/GAUGE/BTEFIRE.PCC new file mode 100644 index 0000000..fcafe89 Binary files /dev/null and b/CONTENT/BT3025/GAUGE/BTEFIRE.PCC differ diff --git a/CONTENT/BT3025/GAUGE/BTEHFAIL.PCC b/CONTENT/BT3025/GAUGE/BTEHFAIL.PCC new file mode 100644 index 0000000..de0ad97 Binary files /dev/null and b/CONTENT/BT3025/GAUGE/BTEHFAIL.PCC differ diff --git a/CONTENT/BT3025/GAUGE/BTEJAM.PCC b/CONTENT/BT3025/GAUGE/BTEJAM.PCC new file mode 100644 index 0000000..470d9f6 Binary files /dev/null and b/CONTENT/BT3025/GAUGE/BTEJAM.PCC differ diff --git a/CONTENT/BT3025/GAUGE/BTELOOP.PCC b/CONTENT/BT3025/GAUGE/BTELOOP.PCC new file mode 100644 index 0000000..2902f51 Binary files /dev/null and b/CONTENT/BT3025/GAUGE/BTELOOP.PCC differ diff --git a/CONTENT/BT3025/GAUGE/BTEPFAIL.PCC b/CONTENT/BT3025/GAUGE/BTEPFAIL.PCC new file mode 100644 index 0000000..96003f6 Binary files /dev/null and b/CONTENT/BT3025/GAUGE/BTEPFAIL.PCC differ diff --git a/CONTENT/BT3025/GAUGE/BTESFAIL.PCC b/CONTENT/BT3025/GAUGE/BTESFAIL.PCC new file mode 100644 index 0000000..60e41fd Binary files /dev/null and b/CONTENT/BT3025/GAUGE/BTESFAIL.PCC differ diff --git a/CONTENT/BT3025/GAUGE/BTESLEV.PCC b/CONTENT/BT3025/GAUGE/BTESLEV.PCC new file mode 100644 index 0000000..817e0a9 Binary files /dev/null and b/CONTENT/BT3025/GAUGE/BTESLEV.PCC differ diff --git a/CONTENT/BT3025/GAUGE/BTESRNGE.PCC b/CONTENT/BT3025/GAUGE/BTESRNGE.PCC new file mode 100644 index 0000000..649d9c2 Binary files /dev/null and b/CONTENT/BT3025/GAUGE/BTESRNGE.PCC differ diff --git a/CONTENT/BT3025/GAUGE/BTEUNJM.PCC b/CONTENT/BT3025/GAUGE/BTEUNJM.PCC new file mode 100644 index 0000000..444551b Binary files /dev/null and b/CONTENT/BT3025/GAUGE/BTEUNJM.PCC differ diff --git a/CONTENT/BT3025/GAUGE/BTOPAL.PCC b/CONTENT/BT3025/GAUGE/BTOPAL.PCC new file mode 100644 index 0000000..a26f410 Binary files /dev/null and b/CONTENT/BT3025/GAUGE/BTOPAL.PCC differ diff --git a/CONTENT/BT3025/GAUGE/BTPBUS.PCC b/CONTENT/BT3025/GAUGE/BTPBUS.PCC new file mode 100644 index 0000000..ba1933e Binary files /dev/null and b/CONTENT/BT3025/GAUGE/BTPBUS.PCC differ diff --git a/CONTENT/BT3025/GAUGE/BTPLOOP.PCC b/CONTENT/BT3025/GAUGE/BTPLOOP.PCC new file mode 100644 index 0000000..631b026 Binary files /dev/null and b/CONTENT/BT3025/GAUGE/BTPLOOP.PCC differ diff --git a/CONTENT/BT3025/GAUGE/BTSPAL.PCC b/CONTENT/BT3025/GAUGE/BTSPAL.PCC new file mode 100644 index 0000000..ba2bc01 Binary files /dev/null and b/CONTENT/BT3025/GAUGE/BTSPAL.PCC differ diff --git a/CONTENT/BT3025/GAUGE/BTWARN.PCC b/CONTENT/BT3025/GAUGE/BTWARN.PCC new file mode 100644 index 0000000..1e71f8f Binary files /dev/null and b/CONTENT/BT3025/GAUGE/BTWARN.PCC differ diff --git a/CONTENT/BT3025/GAUGE/BULLDOG.GIM b/CONTENT/BT3025/GAUGE/BULLDOG.GIM new file mode 100644 index 0000000..cce989d --- /dev/null +++ b/CONTENT/BT3025/GAUGE/BULLDOG.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=-4, 0, -3 +v1=4, 0, -3 +v2=4, 0, 5 +v3=-4, 0, 5 + +[level0] +linelist=a_vehicle v0 v1 v2 v3 v0 + diff --git a/CONTENT/BT3025/GAUGE/BUTTEA_G.GIM b/CONTENT/BT3025/GAUGE/BUTTEA_G.GIM new file mode 100644 index 0000000..420be35 --- /dev/null +++ b/CONTENT/BT3025/GAUGE/BUTTEA_G.GIM @@ -0,0 +1,27 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=39, 0, 0 +v1=33.03, 0, 14.92 +v2=27.57, 0, 27.57 +v3=14.92, 0, 33.03 +v4=0, 0, 39 +v5=-14.92, 0, 33.03 +v6=-27.57, 0, 27.57 +v7=-33.03, 0, 14.92 +v8=-39, 0, 0 +v9=-33.03, 0, -14.92 +v10=-27.57, 0, -27.57 +v11=-14.92, 0, -33.03 +v12=0, 0, -39 +v13=14.92, 0, -33.03 +v14=27.57, 0, -27.57 +v15=33.03, 0, -14.92 + +[level0] +linelist=a_rock v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 +linelist=a_rock v9 v10 v11 v12 v13 v14 v15 v0 diff --git a/CONTENT/BT3025/GAUGE/BUTTEB_G.GIM b/CONTENT/BT3025/GAUGE/BUTTEB_G.GIM new file mode 100644 index 0000000..3cd9f1b --- /dev/null +++ b/CONTENT/BT3025/GAUGE/BUTTEB_G.GIM @@ -0,0 +1,27 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=36, 0, 0 +v1=33.25, 0, 13.77 +v2=25.45, 0, 25.45 +v3=13.77, 0, 33.25 +v4=0, 0, 36 +v5=-13.77, 0, 33.25 +v6=-25.45, 0, 25.45 +v7=-33.25, 0, 13.77 +v8=-36, 0, 0 +v9=-33.25, 0, -13.77 +v10=-25.45, 0, -25.45 +v11=-13.77, 0, -33.25 +v12=0, 0, -36 +v13=13.77, 0, -33.25 +v14=25.45, 0, -25.45 +v15=33.25, 0, -13.77 + +[level0] +linelist=a_rock v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 +linelist=a_rock v9 v10 v11 v12 v13 v14 v15 v0 diff --git a/CONTENT/BT3025/GAUGE/BUTTEC_G.GIM b/CONTENT/BT3025/GAUGE/BUTTEC_G.GIM new file mode 100644 index 0000000..b2c50ad --- /dev/null +++ b/CONTENT/BT3025/GAUGE/BUTTEC_G.GIM @@ -0,0 +1,27 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=58.5, 0, 0 +v1=54.04, 0, 22.38 +v2=41.36, 0, 41.36 +v3=22.38, 0, 54.04 +v4=0, 0, 58.5 +v5=-22.38, 0, 54.04 +v6=-41.36, 0, 41.36 +v7=-54.04, 0, 22.38 +v8=-58.5, 0, 0 +v9=-54.04, 0, -22.38 +v10=-41.36, 0, -41.36 +v11=-22.38, 0, -54.04 +v12=0, 0, -58.5 +v13=22.38, 0, -54.04 +v14=41.36, 0, -41.36 +v15=54.04, 0, -22.38 + +[level0] +linelist=a_rock v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 +linelist=a_rock v9 v10 v11 v12 v13 v14 v15 v0 diff --git a/CONTENT/BT3025/GAUGE/BUTTED_G.GIM b/CONTENT/BT3025/GAUGE/BUTTED_G.GIM new file mode 100644 index 0000000..eb63c1f --- /dev/null +++ b/CONTENT/BT3025/GAUGE/BUTTED_G.GIM @@ -0,0 +1,27 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=78, 0, 0 +v1=72.06, 0, 29.84 +v2=55.14, 0, 55.14 +v3=29.84, 0, 72.06 +v4=0, 0, 78 +v5=-29.84, 0, 72.06 +v6=-55.14, 0, 55.14 +v7=-72.06, 0, 29.84 +v8=-78, 0, 0 +v9=-72.06, 0, -29.84 +v10=-55.14, 0, -55.14 +v11=-29.84, 0, -72.06 +v12=0, 0, -78 +v13=29.84, 0, -72.06 +v14=55.14, 0, -55.14 +v15=72.06, 0, -29.84 + +[level0] +linelist=a_rock v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 +linelist=a_rock v9 v10 v11 v12 v13 v14 v15 v0 diff --git a/CONTENT/BT3025/GAUGE/BUTTEE_G.GIM b/CONTENT/BT3025/GAUGE/BUTTEE_G.GIM new file mode 100644 index 0000000..feba39d --- /dev/null +++ b/CONTENT/BT3025/GAUGE/BUTTEE_G.GIM @@ -0,0 +1,27 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=18, 0, 0 +v1=16.62, 0, 6.88 +v2=12.72, 0, 12.72 +v3=6.88, 0, 16.62 +v4=0, 0, 18 +v5=-6.88, 0, 16.62 +v6=-12.72, 0, 12.72 +v7=-16.62, 0, 6.88 +v8=-18, 0, 0 +v9=-16.62, 0, -6.88 +v10=-12.72, 0, -12.72 +v11=-6.88, 0, -16.62 +v12=0, 0, -18 +v13=6.88, 0, -16.62 +v14=12.72, 0, -12.72 +v15=16.62, 0, -6.88 + +[level0] +linelist=a_rock v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 +linelist=a_rock v9 v10 v11 v12 v13 v14 v15 v0 diff --git a/CONTENT/BT3025/GAUGE/CALPB_GA.GIM b/CONTENT/BT3025/GAUGE/CALPB_GA.GIM new file mode 100644 index 0000000..6257b80 --- /dev/null +++ b/CONTENT/BT3025/GAUGE/CALPB_GA.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=-15, 0, -15 +v1=15, 0, -15 +v2=15, 0, 15 +v3=-15, 0, 15 + +[level0] +linelist=a_misslebase v0 v1 v2 v3 v0 + diff --git a/CONTENT/BT3025/GAUGE/CALP_GA.GIM b/CONTENT/BT3025/GAUGE/CALP_GA.GIM new file mode 100644 index 0000000..55e4495 --- /dev/null +++ b/CONTENT/BT3025/GAUGE/CALP_GA.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=-11, 0, -9.75 +v1=10.75, 0, -9.75 +v2=10.75, 0, 8 +v3=-11, 0, 8 + +[level0] +linelist=a_missle v0 v1 v2 v3 v0 + diff --git a/CONTENT/BT3025/GAUGE/CM_BOTH.PCC b/CONTENT/BT3025/GAUGE/CM_BOTH.PCC new file mode 100644 index 0000000..e5fe2b4 Binary files /dev/null and b/CONTENT/BT3025/GAUGE/CM_BOTH.PCC differ diff --git a/CONTENT/BT3025/GAUGE/CM_OFF.PCC b/CONTENT/BT3025/GAUGE/CM_OFF.PCC new file mode 100644 index 0000000..86039b8 Binary files /dev/null and b/CONTENT/BT3025/GAUGE/CM_OFF.PCC differ diff --git a/CONTENT/BT3025/GAUGE/CM_ONLY.PCC b/CONTENT/BT3025/GAUGE/CM_ONLY.PCC new file mode 100644 index 0000000..807c6ea Binary files /dev/null and b/CONTENT/BT3025/GAUGE/CM_ONLY.PCC differ diff --git a/CONTENT/BT3025/GAUGE/CM_OTHER.PCC b/CONTENT/BT3025/GAUGE/CM_OTHER.PCC new file mode 100644 index 0000000..8c8d701 Binary files /dev/null and b/CONTENT/BT3025/GAUGE/CM_OTHER.PCC differ diff --git a/CONTENT/BT3025/GAUGE/COMTRUCK.GIM b/CONTENT/BT3025/GAUGE/COMTRUCK.GIM new file mode 100644 index 0000000..4f7c011 --- /dev/null +++ b/CONTENT/BT3025/GAUGE/COMTRUCK.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=-2, 0, -4.5 +v1=2, 0, -4.5 +v2=2, 0, 4 +v3=-2, 0, 4 + +[level0] +linelist=a_vehicle v0 v1 v2 v3 v0 + diff --git a/CONTENT/BT3025/GAUGE/COOLANT.GIM b/CONTENT/BT3025/GAUGE/COOLANT.GIM new file mode 100644 index 0000000..662d42d --- /dev/null +++ b/CONTENT/BT3025/GAUGE/COOLANT.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=-2.5, 0, -7 +v1=2.5, 0, -7 +v2=2.5, 0, 8 +v3=-2.5, 0, 8 + +[level0] +linelist=a_vehicle v0 v1 v2 v3 v0 + diff --git a/CONTENT/BT3025/GAUGE/DISH_GA.GIM b/CONTENT/BT3025/GAUGE/DISH_GA.GIM new file mode 100644 index 0000000..6f9b929 --- /dev/null +++ b/CONTENT/BT3025/GAUGE/DISH_GA.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=-3.5, 0, -2 +v1=3.5, 0, -2 +v2=3.5, 0, 3.25 +v3=-3.5, 0, 3.25 + +[level0] +linelist=a_dish v0 v1 v2 v3 v0 + diff --git a/CONTENT/BT3025/GAUGE/DOZER.GIM b/CONTENT/BT3025/GAUGE/DOZER.GIM new file mode 100644 index 0000000..f5b3e11 --- /dev/null +++ b/CONTENT/BT3025/GAUGE/DOZER.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=-2, 0, -3.5 +v1=2, 0, -3.5 +v2=2, 0, 4.5 +v3=-2, 0, 4.5 + +[level0] +linelist=a_vehicle v0 v1 v2 v3 v0 + diff --git a/CONTENT/BT3025/GAUGE/EAFC10.PCC b/CONTENT/BT3025/GAUGE/EAFC10.PCC new file mode 100644 index 0000000..465b8b1 Binary files /dev/null and b/CONTENT/BT3025/GAUGE/EAFC10.PCC differ diff --git a/CONTENT/BT3025/GAUGE/EAFC100.PCC b/CONTENT/BT3025/GAUGE/EAFC100.PCC new file mode 100644 index 0000000..c5ae0af Binary files /dev/null and b/CONTENT/BT3025/GAUGE/EAFC100.PCC differ diff --git a/CONTENT/BT3025/GAUGE/EAFC25.PCC b/CONTENT/BT3025/GAUGE/EAFC25.PCC new file mode 100644 index 0000000..7c018d3 Binary files /dev/null and b/CONTENT/BT3025/GAUGE/EAFC25.PCC differ diff --git a/CONTENT/BT3025/GAUGE/EAFC5.PCC b/CONTENT/BT3025/GAUGE/EAFC5.PCC new file mode 100644 index 0000000..febf3c6 Binary files /dev/null and b/CONTENT/BT3025/GAUGE/EAFC5.PCC differ diff --git a/CONTENT/BT3025/GAUGE/EAFC50.PCC b/CONTENT/BT3025/GAUGE/EAFC50.PCC new file mode 100644 index 0000000..2a6b89e Binary files /dev/null and b/CONTENT/BT3025/GAUGE/EAFC50.PCC differ diff --git a/CONTENT/BT3025/GAUGE/EDESTRYD.PCC b/CONTENT/BT3025/GAUGE/EDESTRYD.PCC new file mode 100644 index 0000000..9176f1d Binary files /dev/null and b/CONTENT/BT3025/GAUGE/EDESTRYD.PCC differ diff --git a/CONTENT/BT3025/GAUGE/EERLLAS.PCC b/CONTENT/BT3025/GAUGE/EERLLAS.PCC new file mode 100644 index 0000000..06253c3 Binary files /dev/null and b/CONTENT/BT3025/GAUGE/EERLLAS.PCC differ diff --git a/CONTENT/BT3025/GAUGE/EERPPC.PCC b/CONTENT/BT3025/GAUGE/EERPPC.PCC new file mode 100644 index 0000000..219f620 Binary files /dev/null and b/CONTENT/BT3025/GAUGE/EERPPC.PCC differ diff --git a/CONTENT/BT3025/GAUGE/EERSLAS.PCC b/CONTENT/BT3025/GAUGE/EERSLAS.PCC new file mode 100644 index 0000000..390e47e Binary files /dev/null and b/CONTENT/BT3025/GAUGE/EERSLAS.PCC differ diff --git a/CONTENT/BT3025/GAUGE/ELBX10.PCC b/CONTENT/BT3025/GAUGE/ELBX10.PCC new file mode 100644 index 0000000..465b8b1 Binary files /dev/null and b/CONTENT/BT3025/GAUGE/ELBX10.PCC differ diff --git a/CONTENT/BT3025/GAUGE/ELBX100.PCC b/CONTENT/BT3025/GAUGE/ELBX100.PCC new file mode 100644 index 0000000..c5ae0af Binary files /dev/null and b/CONTENT/BT3025/GAUGE/ELBX100.PCC differ diff --git a/CONTENT/BT3025/GAUGE/ELBX25.PCC b/CONTENT/BT3025/GAUGE/ELBX25.PCC new file mode 100644 index 0000000..7c018d3 Binary files /dev/null and b/CONTENT/BT3025/GAUGE/ELBX25.PCC differ diff --git a/CONTENT/BT3025/GAUGE/ELBX5.PCC b/CONTENT/BT3025/GAUGE/ELBX5.PCC new file mode 100644 index 0000000..febf3c6 Binary files /dev/null and b/CONTENT/BT3025/GAUGE/ELBX5.PCC differ diff --git a/CONTENT/BT3025/GAUGE/ELEAK.PCC b/CONTENT/BT3025/GAUGE/ELEAK.PCC new file mode 100644 index 0000000..ebd47b9 Binary files /dev/null and b/CONTENT/BT3025/GAUGE/ELEAK.PCC differ diff --git a/CONTENT/BT3025/GAUGE/ELLAS.PCC b/CONTENT/BT3025/GAUGE/ELLAS.PCC new file mode 100644 index 0000000..efe0112 Binary files /dev/null and b/CONTENT/BT3025/GAUGE/ELLAS.PCC differ diff --git a/CONTENT/BT3025/GAUGE/ELRM10.PCC b/CONTENT/BT3025/GAUGE/ELRM10.PCC new file mode 100644 index 0000000..4104f1a Binary files /dev/null and b/CONTENT/BT3025/GAUGE/ELRM10.PCC differ diff --git a/CONTENT/BT3025/GAUGE/ELRM15.PCC b/CONTENT/BT3025/GAUGE/ELRM15.PCC new file mode 100644 index 0000000..1b7eb20 Binary files /dev/null and b/CONTENT/BT3025/GAUGE/ELRM15.PCC differ diff --git a/CONTENT/BT3025/GAUGE/ELRM20.PCC b/CONTENT/BT3025/GAUGE/ELRM20.PCC new file mode 100644 index 0000000..f15cb4c Binary files /dev/null and b/CONTENT/BT3025/GAUGE/ELRM20.PCC differ diff --git a/CONTENT/BT3025/GAUGE/ELRM5.PCC b/CONTENT/BT3025/GAUGE/ELRM5.PCC new file mode 100644 index 0000000..c0c72a4 Binary files /dev/null and b/CONTENT/BT3025/GAUGE/ELRM5.PCC differ diff --git a/CONTENT/BT3025/GAUGE/EMG.PCC b/CONTENT/BT3025/GAUGE/EMG.PCC new file mode 100644 index 0000000..17aeb1a Binary files /dev/null and b/CONTENT/BT3025/GAUGE/EMG.PCC differ diff --git a/CONTENT/BT3025/GAUGE/ENRK15.PCC b/CONTENT/BT3025/GAUGE/ENRK15.PCC new file mode 100644 index 0000000..bbd3163 Binary files /dev/null and b/CONTENT/BT3025/GAUGE/ENRK15.PCC differ diff --git a/CONTENT/BT3025/GAUGE/ENRK5.PCC b/CONTENT/BT3025/GAUGE/ENRK5.PCC new file mode 100644 index 0000000..6e7b6a5 Binary files /dev/null and b/CONTENT/BT3025/GAUGE/ENRK5.PCC differ diff --git a/CONTENT/BT3025/GAUGE/EPPC.PCC b/CONTENT/BT3025/GAUGE/EPPC.PCC new file mode 100644 index 0000000..b4d0364 Binary files /dev/null and b/CONTENT/BT3025/GAUGE/EPPC.PCC differ diff --git a/CONTENT/BT3025/GAUGE/ESCND.PCC b/CONTENT/BT3025/GAUGE/ESCND.PCC new file mode 100644 index 0000000..f5b7a46 Binary files /dev/null and b/CONTENT/BT3025/GAUGE/ESCND.PCC differ diff --git a/CONTENT/BT3025/GAUGE/ESENSORS.PCC b/CONTENT/BT3025/GAUGE/ESENSORS.PCC new file mode 100644 index 0000000..567e621 Binary files /dev/null and b/CONTENT/BT3025/GAUGE/ESENSORS.PCC differ diff --git a/CONTENT/BT3025/GAUGE/ESRM2.PCC b/CONTENT/BT3025/GAUGE/ESRM2.PCC new file mode 100644 index 0000000..89f9700 Binary files /dev/null and b/CONTENT/BT3025/GAUGE/ESRM2.PCC differ diff --git a/CONTENT/BT3025/GAUGE/ESRM4.PCC b/CONTENT/BT3025/GAUGE/ESRM4.PCC new file mode 100644 index 0000000..f8f9124 Binary files /dev/null and b/CONTENT/BT3025/GAUGE/ESRM4.PCC differ diff --git a/CONTENT/BT3025/GAUGE/ESRM6.PCC b/CONTENT/BT3025/GAUGE/ESRM6.PCC new file mode 100644 index 0000000..eddcc7a Binary files /dev/null and b/CONTENT/BT3025/GAUGE/ESRM6.PCC differ diff --git a/CONTENT/BT3025/GAUGE/ESTRK2.PCC b/CONTENT/BT3025/GAUGE/ESTRK2.PCC new file mode 100644 index 0000000..f5f8bbb Binary files /dev/null and b/CONTENT/BT3025/GAUGE/ESTRK2.PCC differ diff --git a/CONTENT/BT3025/GAUGE/ESTRK4.PCC b/CONTENT/BT3025/GAUGE/ESTRK4.PCC new file mode 100644 index 0000000..3e87a61 Binary files /dev/null and b/CONTENT/BT3025/GAUGE/ESTRK4.PCC differ diff --git a/CONTENT/BT3025/GAUGE/ESTRK6.PCC b/CONTENT/BT3025/GAUGE/ESTRK6.PCC new file mode 100644 index 0000000..9b855ae Binary files /dev/null and b/CONTENT/BT3025/GAUGE/ESTRK6.PCC differ diff --git a/CONTENT/BT3025/GAUGE/EVOLT.PCC b/CONTENT/BT3025/GAUGE/EVOLT.PCC new file mode 100644 index 0000000..e9225ff Binary files /dev/null and b/CONTENT/BT3025/GAUGE/EVOLT.PCC differ diff --git a/CONTENT/BT3025/GAUGE/FP1_GA.GIM b/CONTENT/BT3025/GAUGE/FP1_GA.GIM new file mode 100644 index 0000000..a448b9b --- /dev/null +++ b/CONTENT/BT3025/GAUGE/FP1_GA.GIM @@ -0,0 +1,78 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=1000 +level1=3000 +level2=10000 + +[vertices] +v0=3, 0, -31.5 +v1=3, 0, -28.5 +v2=1.6, 0, -28.5 +v3=1.6, 0, -15.5 +v4=3.6, 0, -15.5 +v5=3.6, 0, -11.6 +v6=1.6, 0, -11.6 +v7=1.6, 0, -1.5 +v8=18, 0, -1.5 +v9=18, 0, -4.5 +v10=21, 0, -4.5 +v11=21, 0, 3 +v12=18, 0, 3 +v13=18, 0, 1.4 +v14=1.6, 0, 1.4 +v15=1.6, 0, 5.5 +v16=3.6, 0, 5.5 +v17=3.6, 0, 9.4 +v18=1.6, 0, 9.4 +v19=1.6, 0, 25.5 +v20=3, 0, 25.5 +v21=3, 0, 28.5 +v22=-3, 0, 28.5 +v23=-3, 0, 25.5 +v24=-1.6, 0, 25.5 +v25=-1.6, 0, 9.4 +v26=-3.6, 0, 9.4 +v27=-3.6, 0, 5.5 +v28=-1.6, 0, 5.5 +v29=-1.6, 0, -3.7 +v30=-12, 0, -3.7 +v31=-12, 0, 0 +v32=-15, 0, 0 +v33=-15, 0, -7.5 +v34=-12, 0, -7.5 +v35=-12, 0, -6.4 +v36=-1.6, 0, -6.4 +v37=-1.6, 0, -11.6 +v38=-3.6, 0, -11.6 +v39=-3.6, 0, -15.5 +v40=-1.6, 0, -15.5 +v41=-1.6, 0, -28.5 +v42=-3, 0, -28.5 +v43=-3, 0, -31.5 +v44=-16.5, 0, 13.5 +v45=-6, 0, 13.5 +v46=-6, 0, 3 +v47=-16.5, 0, 3 +v48=1.6, 0, -31.5 +v49=21, 0, -1.5 +v50=21, 0, 1.4 +v51=1.6, 0, 28.5 +v52=-1.6, 0, 28.5 +v53=-15, 0, -3.7 +v54=-15, 0, -6.4 +v55=-1.6, 0, -31.5 + +[level0] +linelist=a_fuelpump v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v0 +linelist=a_fuelpump v44 v45 v46 v47 v44 + +[level1] +linelist=a_fuelpump v0 v1 v2 v7 v8 v9 v10 v11 v12 v13 v14 v19 v20 v21 v22 v23 v24 v29 v30 v31 v32 v33 v34 v35 v36 v41 v42 v43 v0 +linelist=a_fuelpump v44 v45 v46 v47 v44 + +[level2] +linelist=a_fuelpump v48 v7 v49 v50 v14 v51 v52 v29 v53 v54 v36 v55 v48 +linelist=a_fuelpump v44 v45 v46 v47 v44 + diff --git a/CONTENT/BT3025/GAUGE/FP2_GA.GIM b/CONTENT/BT3025/GAUGE/FP2_GA.GIM new file mode 100644 index 0000000..03ec3d1 --- /dev/null +++ b/CONTENT/BT3025/GAUGE/FP2_GA.GIM @@ -0,0 +1,25 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=3000 +level1=10000 + +[vertices] +v0=-3, 0, -8 +v1=-1.2, 0, -8 +v2=-1.2, 0, 10 +v3=2.1, 0, 10 +v4=2.1, 0, -8 +v5=3, 0, -8 +v6=3, 0, -10 +v7=-3, 0, -10 +v8=2.1, 0, -10 +v9=-1.2, 0, -10 + +[level0] +linelist=a_fuelpipe v0 v1 v2 v3 v4 v5 v6 v7 v0 + +[level1] +linelist=a_fuelpipe v2 v3 v8 v9 v2 + diff --git a/CONTENT/BT3025/GAUGE/FT1_GA.GIM b/CONTENT/BT3025/GAUGE/FT1_GA.GIM new file mode 100644 index 0000000..ca16c25 --- /dev/null +++ b/CONTENT/BT3025/GAUGE/FT1_GA.GIM @@ -0,0 +1,29 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=3000 +level1=10000 + +[vertices] +v0=0.44, 0, -1.05 +v1=-0.56, 0, -2.05 +v2=-1.56, 0, -1.05 +v3=-0.56, 0, -0.0499999 +v4=1.6, 0, 0.55 +v5=0.6, 0, -0.45 +v6=-0.4, 0, 0.55 +v7=0.6, 0, 1.55 +v8=1.65, 0, -2.05 +v9=1.65, 0, 2.05 +v10=-1.65, 0, 2.05 +v11=-1.65, 0, -2.05 + +[level0] +linelist=a_silo v0 v1 v2 v3 v0 +linelist=a_silo v4 v5 v6 v7 v4 +linelist=a_tarmac v8 v9 v10 v11 v8 + +[level1] +linelist=a_tarmac v8 v9 v10 v11 v8 + diff --git a/CONTENT/BT3025/GAUGE/FT2_GA.GIM b/CONTENT/BT3025/GAUGE/FT2_GA.GIM new file mode 100644 index 0000000..3b6d3ff --- /dev/null +++ b/CONTENT/BT3025/GAUGE/FT2_GA.GIM @@ -0,0 +1,24 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=3000 +level1=10000 + +[vertices] +v0=3.4, 0, -3.25 +v1=3.4, 0, 3.31 +v2=-3.01, 0, 3.31 +v3=-3.01, 0, -3.25 +v4=2.2, 0, -2.2 +v5=2.2, 0, 2.2 +v6=-2.2, 0, 2.2 +v7=-2.2, 0, -2.2 + +[level0] +linelist=a_tarmac v0 v1 v2 v3 v0 +linelist=a_silo v4 v5 v6 v7 v4 + +[level1] +linelist=a_tarmac v0 v1 v2 v3 v0 + diff --git a/CONTENT/BT3025/GAUGE/GAUGE.GAT b/CONTENT/BT3025/GAUGE/GAUGE.GAT new file mode 100644 index 0000000..282684c --- /dev/null +++ b/CONTENT/BT3025/GAUGE/GAUGE.GAT @@ -0,0 +1,75 @@ +; +; gauge.gat - gauge attribute file +; + +;---------------------------------------------------------- +; color definitions +;---------------------------------------------------------- +[colors] +; special meaning colors +default=0 +colorteam1=1 +colorteam2=2 +colorteam3=3 +colorteam4=4 +colorteam5=5 +colorteam6=6 +colorteam7=7 +colorteam8=8 + +; pallet index colors +brightRed=1 +brightGreen=2 +brightBlue=24 +gray=3 + +amber0=4 ; dark amber +amber1=5 +amber2=6 +amber3=7 ; bright amber + +green=25 +blue=26 +yellow= + +;---------------------------------------------------------- +; attribute definitions +;---------------------------------------------------------- +[attributes] +unscaled=1 ; shape will not be scaled: 1 meter = 1 pixel + +;---------------------------------------------------------- +; groups based on pallet indexes +;---------------------------------------------------------- +[groups] +a_arenabarrier=brightGreen +a_arenablock=brightGreen +a_arenahole=brightBlue +a_arenawall=brightGreen +a_bay=brightBlue +a_bld=amber1 +a_bunker=gray +a_dish=brightBlue +a_door=gray +a_fuelpipe=amber2 +a_fuelpump=gray +a_gantry=amber2 +a_garage=amber0 +a_generator=blue +a_gun=brightRed +a_hanger=amber3 +a_mech=brightRed +a_missle=brightRed +a_misslebase=gray +a_rock=amber0 +a_silo=amber0 +a_snowhill=amber0 +a_stands=amber0 +a_tarmac=gray +a_tent=amber0 +a_twr=blue +a_wall=amber0 +a_wthrstation=blue +a_vehicle=brightBlue +a_incoming=amber3 +a_tree=green \ No newline at end of file diff --git a/CONTENT/BT3025/GAUGE/GNR_GA.GIM b/CONTENT/BT3025/GAUGE/GNR_GA.GIM new file mode 100644 index 0000000..cdd0647 --- /dev/null +++ b/CONTENT/BT3025/GAUGE/GNR_GA.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=3.5, 0, -3.9 +v1=3.5, 0, 3.8 +v2=-3.5, 0, 3.8 +v3=-3.5, 0, -3.9 + +[level0] +linelist=a_generator v0 v1 v2 v3 v0 + diff --git a/CONTENT/BT3025/GAUGE/HARASSER.GIM b/CONTENT/BT3025/GAUGE/HARASSER.GIM new file mode 100644 index 0000000..a088600 --- /dev/null +++ b/CONTENT/BT3025/GAUGE/HARASSER.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=-3, 0, -4 +v1=3, 0, -4 +v2=3, 0, 2 +v3=-3, 0, 2 + +[level0] +linelist=a_vehicle v0 v1 v2 v3 v0 + diff --git a/CONTENT/BT3025/GAUGE/HEATPAL.PCC b/CONTENT/BT3025/GAUGE/HEATPAL.PCC new file mode 100644 index 0000000..44413bc Binary files /dev/null and b/CONTENT/BT3025/GAUGE/HEATPAL.PCC differ diff --git a/CONTENT/BT3025/GAUGE/HEATPAL2.PCC b/CONTENT/BT3025/GAUGE/HEATPAL2.PCC new file mode 100644 index 0000000..a60a614 Binary files /dev/null and b/CONTENT/BT3025/GAUGE/HEATPAL2.PCC differ diff --git a/CONTENT/BT3025/GAUGE/HELV15.PCC b/CONTENT/BT3025/GAUGE/HELV15.PCC new file mode 100644 index 0000000..67b9fee Binary files /dev/null and b/CONTENT/BT3025/GAUGE/HELV15.PCC differ diff --git a/CONTENT/BT3025/GAUGE/HELV18.PCC b/CONTENT/BT3025/GAUGE/HELV18.PCC new file mode 100644 index 0000000..1dc2f99 Binary files /dev/null and b/CONTENT/BT3025/GAUGE/HELV18.PCC differ diff --git a/CONTENT/BT3025/GAUGE/HILLG1_G.GIM b/CONTENT/BT3025/GAUGE/HILLG1_G.GIM new file mode 100644 index 0000000..11a0f39 --- /dev/null +++ b/CONTENT/BT3025/GAUGE/HILLG1_G.GIM @@ -0,0 +1,50 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=-70, 0, -578 +v1=-28, 0, -585 +v2=13, 0, -609 +v3=55, 0, -703 +v4=13, 0, -796 +v5=-28, 0, -820 +v6=-70, 0, -828 +v7=-111, 0, -820 +v8=-153, 0, -796 +v9=-195, 0, -703 +v10=-153, 0, -609 +v11=-111, 0, -585 + +v12=486, 0, -56 +v13=586, 0, -73 +v14=686, 0, -132 +v15=786, 0, -356 +v16=686, 0, -579 +v17=586, 0, -638 +v18=486, 0, -656 +v19=386, 0, -638 +v20=286, 0, -579 +v21=186, 0, -356 +v22=286, 0, -132 +v23=386, 0, -73 + +v24=-460, 0, 782 +v25=-385, 0, 769 +v26=-310, 0, 724 +v27=-235, 0, 557 +v28=-310, 0, 389 +v29=-385, 0, 344 +v30=-460, 0, 332 +v31=-535, 0, 344 +v32=-610, 0, 389 +v33=-685, 0, 557 +v34=-610, 0, 724 +v35=-535, 0, 769 + +[level0] +linelist=a_rock v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v0 +linelist=a_rock v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v12 +linelist=a_rock v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v24 diff --git a/CONTENT/BT3025/GAUGE/HILLG2_G.GIM b/CONTENT/BT3025/GAUGE/HILLG2_G.GIM new file mode 100644 index 0000000..ee352c6 --- /dev/null +++ b/CONTENT/BT3025/GAUGE/HILLG2_G.GIM @@ -0,0 +1,36 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=190, 0, 883 +v1=273, 0, 868 +v2=356, 0, 819 +v3=440, 0, 633 +v4=356, 0, 446 +v5=273, 0, 397 +v6=190, 0, 383 +v7=106, 0, 397 +v8=23, 0, 446 +v9=-60, 0, 633 +v10=23, 0, 819 +v11=106, 0, 868 + +v12=668, 0, 550 +v13=734, 0, 538 +v14=801, 0, 499 +v15=868, 0, 350 +v16=801, 0, 200 +v17=734, 0, 161 +v18=668, 0, 150 +v19=601, 0, 161 +v20=534, 0, 200 +v21=468, 0, 350 +v22=534, 0, 499 +v23=601, 0, 538 + +[level0] +linelist=a_rock v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v0 +linelist=a_rock v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v12 diff --git a/CONTENT/BT3025/GAUGE/HILLG3_G.GIM b/CONTENT/BT3025/GAUGE/HILLG3_G.GIM new file mode 100644 index 0000000..7b401ec --- /dev/null +++ b/CONTENT/BT3025/GAUGE/HILLG3_G.GIM @@ -0,0 +1,36 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=845, 0, -732 +v1=886, 0, -739 +v2=928, 0, -763 +v3=970, 0, -857 +v4=928, 0, -950 +v5=886, 0, -974 +v6=845, 0, -982 +v7=803, 0, -974 +v8=761, 0, -950 +v9=720, 0, -857 +v10=761, 0, -763 +v11=803, 0, -739 + +v12=-665, 0, 181 +v13=-575, 0, 165 +v14=-485, 0, 112 +v15=-395, 0, -89 +v16=-485, 0, -290 +v17=-575, 0, -343 +v18=-665, 0, -359 +v19=-755, 0, -343 +v20=-845, 0, -290 +v21=-935, 0, -89 +v22=-845, 0, 112 +v23=-755, 0, 165 + +[level0] +linelist=a_rock v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v0 +linelist=a_rock v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v12 diff --git a/CONTENT/BT3025/GAUGE/HL1_GA.GIM b/CONTENT/BT3025/GAUGE/HL1_GA.GIM new file mode 100644 index 0000000..64db20f --- /dev/null +++ b/CONTENT/BT3025/GAUGE/HL1_GA.GIM @@ -0,0 +1,31 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=1000 +level1=3000 +level2=10000 + +[vertices] +v0=-5.4043, 0, -50.0103 +v1=-25.3601, 0, -46.9075 +v2=-46.3768, 0, -21.174 +v3=-49.6013, 0, 9.33131 +v4=-30.1188, 0, 41.1559 +v5=-5.15319, 0, 49.4922 +v6=37.3305, 0, 39.4294 +v7=45.7911, 0, 28.7064 +v8=48.4628, 0, 4.7905 +v9=41.0469, 0, -8.22213 +v10=-16.9222, 0, -54.6389 +v11=56.3869, 0, 18.9084 + +[level0] +linelist=a_snowhill v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v0 + +[level1] +linelist=a_snowhill v0 v1 v3 v5 v7 v8 v0 + +[level2] +linelist=a_snowhill v10 v3 v5 v11 v10 + diff --git a/CONTENT/BT3025/GAUGE/HL2_GA.GIM b/CONTENT/BT3025/GAUGE/HL2_GA.GIM new file mode 100644 index 0000000..0788f0d --- /dev/null +++ b/CONTENT/BT3025/GAUGE/HL2_GA.GIM @@ -0,0 +1,26 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=3000 +level1=10000 + +[vertices] +v0=-22.8781, 0, -58.5037 +v1=-88.6784, 0, -53.4424 +v2=-142.132, 0, -24.7217 +v3=-142.308, 0, 15.4915 +v4=-67.774, 0, 53.079 +v5=105.28, 0, 44.7328 +v6=142.674, 0, 18.5693 +v7=137.383, 0, -1.07203 +v8=-55.7782, 0, -69.8131 +v9=-141.99, 0, -7.1501 +v10=150.514, 0, 11.1893 + +[level0] +linelist=a_snowhill v0 v1 v2 v3 v4 v5 v6 v7 v0 + +[level1] +linelist=a_snowhill v8 v9 v4 v5 v10 v8 + diff --git a/CONTENT/BT3025/GAUGE/HN1_GA.GIM b/CONTENT/BT3025/GAUGE/HN1_GA.GIM new file mode 100644 index 0000000..6de3395 --- /dev/null +++ b/CONTENT/BT3025/GAUGE/HN1_GA.GIM @@ -0,0 +1,26 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=3000 +level1=10000 + +[vertices] +v0=9, 0, -17.15 +v1=9, 0, -10 +v2=13.05, 0, -10 +v3=13.05, 0, 2 +v4=-7.25, 0, 2 +v5=-7.25, 0, -17.15 +v6=8.7, 0, -15.95 +v7=8.7, 0, -0.5 +v8=-6, 0, -0.5 +v9=-6, 0, -15.95 + +[level0] +linelist=a_tarmac v0 v1 v2 v3 v4 v5 v0 +linelist=a_hanger v6 v7 v8 v9 v6 + +[level1] +linelist=a_tarmac v0 v1 v2 v3 v4 v5 v0 + diff --git a/CONTENT/BT3025/GAUGE/HUMMER.GIM b/CONTENT/BT3025/GAUGE/HUMMER.GIM new file mode 100644 index 0000000..8871e59 --- /dev/null +++ b/CONTENT/BT3025/GAUGE/HUMMER.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=-1.5, 0, -3 +v1=1.5, 0, -3 +v2=1.5, 0, 3 +v3=-1.5, 0, 3 + +[level0] +linelist=a_vehicle v0 v1 v2 v3 v0 + diff --git a/CONTENT/BT3025/GAUGE/HUT_GA.GIM b/CONTENT/BT3025/GAUGE/HUT_GA.GIM new file mode 100644 index 0000000..89e9906 --- /dev/null +++ b/CONTENT/BT3025/GAUGE/HUT_GA.GIM @@ -0,0 +1,24 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=3000 +level1=10000 + +[vertices] +v0=10, 0, -10 +v1=10, 0, 24 +v2=-10, 0, 24 +v3=-10, 0, -10 +v4=9, 0, 0 +v5=9, 0, 14.25 +v6=-9, 0, 14.25 +v7=-9, 0, 0 + +[level0] +linelist=a_tarmac v0 v1 v2 v3 v0 +linelist=a_hanger v4 v5 v6 v7 v4 + +[level1] +linelist=a_tarmac v0 v1 v2 v3 v0 + diff --git a/CONTENT/BT3025/GAUGE/HWZ_GA.GIM b/CONTENT/BT3025/GAUGE/HWZ_GA.GIM new file mode 100644 index 0000000..efe2214 --- /dev/null +++ b/CONTENT/BT3025/GAUGE/HWZ_GA.GIM @@ -0,0 +1,25 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=-0.3, 0, -1.5 +v1=-0.3, 0, -6.2 +v2=0.3, 0, -6.2 +v3=0.3, 0, -1.5 +v4=1.5, 0, -1.5 +v5=1.5, 0, 1.2 +v6=5.5, 0, 5.5 +v7=5.2, 0, 5.7 +v8=0.7, 0, 1.4 +v9=-0.7, 0, 1.4 +v10=-5.2, 0, 5.7 +v11=-5.5, 0, 5.5 +v12=-1.4, 0, 1.2 +v13=-1.4, 0, -1.5 + +[level0] +linelist=a_gun v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v0 + diff --git a/CONTENT/BT3025/GAUGE/JAK_GA.GIM b/CONTENT/BT3025/GAUGE/JAK_GA.GIM new file mode 100644 index 0000000..a692b91 --- /dev/null +++ b/CONTENT/BT3025/GAUGE/JAK_GA.GIM @@ -0,0 +1,21 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=1000 + +[vertices] +v0=2.5, 0, -0.6 +v1=0, 0, -3 +v2=-2.5, 0, -0.6 +v3=-2.5, 0, 0.7 +v4=2.5, 0, 0.7 +v5=-0.2, 0, -1.5 +v6=-1.5, 0, -1.5 +v7=-1.5, 0, 0.9 +v8=-0.2, 0, 0.9 + +[level0] +linelist=a_mech v0 v1 v2 v3 v4 v0 +linelist=a_mech v5 v6 v7 v8 v5 + diff --git a/CONTENT/BT3025/GAUGE/L4GAUGE.INI b/CONTENT/BT3025/GAUGE/L4GAUGE.INI new file mode 100644 index 0000000..535958c --- /dev/null +++ b/CONTENT/BT3025/GAUGE/L4GAUGE.INI @@ -0,0 +1,36 @@ +; +; VESA SVGA mode summary +; +[misc] +timeStamp=Tue Mar 3 16:47:06 1996 +manufacturer=STB Horizon+ PCI 1.2 + +[640x480x8] +mode=257 ;0101h +width=640 +height=480 +sizeInKB=64 +granularityInKB=4 +bytesPerLine=1280 +pageFcnPtr=794632 ;C000:2008 +special=1 + +[640x480x16] +mode=273 ;0111h +width=640 +height=480 +sizeInKB=64 +granularityInKB=4 +bytesPerLine=1280 +pageFcnPtr=796182 ;C000:2616 +special=0 + +[800x600x16] +mode=276 ;0114h +width=800 +height=600 +sizeInKB=64 +granularityInKB=4 +bytesPerLine=1600 +pageFcnPtr=796182 ;C000:2616 +special=0 diff --git a/CONTENT/BT3025/GAUGE/LRMCARRY.GIM b/CONTENT/BT3025/GAUGE/LRMCARRY.GIM new file mode 100644 index 0000000..111a4a3 --- /dev/null +++ b/CONTENT/BT3025/GAUGE/LRMCARRY.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=-5, 0, -4 +v1=5, 0, -4 +v2=5, 0, 6 +v3=-5, 0, 6 + +[level0] +linelist=a_vehicle v0 v1 v2 v3 v0 + diff --git a/CONTENT/BT3025/GAUGE/MECHMOVR.GIM b/CONTENT/BT3025/GAUGE/MECHMOVR.GIM new file mode 100644 index 0000000..1a0c407 --- /dev/null +++ b/CONTENT/BT3025/GAUGE/MECHMOVR.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=-2.5, 0, -7.5 +v1=2.5, 0, -7.5 +v2=2.5, 0, 7.5 +v3=-2.5, 0, 7.5 + +[level0] +linelist=a_vehicle v0 v1 v2 v3 v0 + diff --git a/CONTENT/BT3025/GAUGE/MRPAL.PCC b/CONTENT/BT3025/GAUGE/MRPAL.PCC new file mode 100644 index 0000000..5e7561a Binary files /dev/null and b/CONTENT/BT3025/GAUGE/MRPAL.PCC differ diff --git a/CONTENT/BT3025/GAUGE/MSLG_GA.GIM b/CONTENT/BT3025/GAUGE/MSLG_GA.GIM new file mode 100644 index 0000000..0011d65 --- /dev/null +++ b/CONTENT/BT3025/GAUGE/MSLG_GA.GIM @@ -0,0 +1,35 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=3000 +level1=10000 + +[vertices] +v0=-0.75, 0, 3 +v1=0.75, 0, 3 +v2=0.75, 0, 1 +v3=-0.75, 0, 1 +v4=1, 0, -2 +v5=2, 0, -1 +v6=2, 0, 1.75 +v7=1, 0, 2.75 +v8=-1, 0, 2.75 +v9=-2, 0, 1.75 +v10=-2, 0, -1 +v11=-1, 0, -2 +v12=0.6, 0, 0 +v13=0.3, 0, -0.519615 +v14=-0.3, 0, -0.519615 +v15=-0.6, 0, 0 +v16=-0.3, 0, 0.519615 +v17=0.3, 0, 0.519615 + +[level0] +linelist=a_gantry v0 v1 v2 v3 v0 +linelist=a_tarmac v4 v5 v6 v7 v8 v9 v10 v11 v4 +linelist=a_missle v12 v13 v14 v15 v16 v17 v12 + +[level1] +linelist=a_tarmac v4 v5 v6 v7 v8 v9 v10 v11 v4 + diff --git a/CONTENT/BT3025/GAUGE/MSLR_GA.GIM b/CONTENT/BT3025/GAUGE/MSLR_GA.GIM new file mode 100644 index 0000000..6e2ec0c --- /dev/null +++ b/CONTENT/BT3025/GAUGE/MSLR_GA.GIM @@ -0,0 +1,63 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=3000 +level1=10000 + +[vertices] +v0=-2.49909, 0, -40 +v1=-1.875, 0, -19.8202 +v2=1.875, 0, -19.8202 +v3=2.49909, 0, -40 +v4=-30.0537, 0, -26.5187 +v5=-15.3408, 0, -12.6891 +v6=-12.6891, 0, -15.3408 +v7=-26.5191, 0, -30.0533 +v8=-40, 0, 2.49938 +v9=-19.8202, 0, 1.875 +v10=-19.8202, 0, -1.875 +v11=-40, 0, -2.49938 +v12=-26.5187, 0, 30.0533 +v13=-12.6891, 0, 15.3408 +v14=-15.3408, 0, 12.6891 +v15=-30.0533, 0, 26.5187 +v16=2.49909, 0, 40 +v17=1.875, 0, 19.8202 +v18=-1.875, 0, 19.8202 +v19=-2.49909, 0, 40 +v20=30.0533, 0, 26.5186 +v21=15.3408, 0, 12.6891 +v22=12.6891, 0, 15.3408 +v23=26.5187, 0, 30.0533 +v24=40, 0, -2.49938 +v25=19.8202, 0, -1.875 +v26=19.8202, 0, 1.875 +v27=40, 0, 2.49938 +v28=26.5187, 0, -30.0533 +v29=12.6891, 0, -15.3408 +v30=15.3408, 0, -12.6891 +v31=30.0533, 0, -26.5187 +v32=8.5, 0, -21.5 +v33=21.5, 0, -8.5 +v34=21.5, 0, 8.5 +v35=8.5, 0, 21.5 +v36=-8.5, 0, 21.5 +v37=-21.5, 0, 8.5 +v38=-21.5, 0, -8.5 +v39=-8.5, 0, -21.5 + +[level0] +linelist=a_tarmac v0 v1 v2 v3 v0 +linelist=a_tarmac v4 v5 v6 v7 v4 +linelist=a_tarmac v8 v9 v10 v11 v8 +linelist=a_tarmac v12 v13 v14 v15 v12 +linelist=a_tarmac v16 v17 v18 v19 v16 +linelist=a_tarmac v20 v21 v22 v23 v20 +linelist=a_tarmac v24 v25 v26 v27 v24 +linelist=a_tarmac v28 v29 v30 v31 v28 +linelist=a_misslebase v32 v33 v34 v35 v36 v37 v38 v39 v32 + +[level1] +linelist=a_misslebase v32 v33 v34 v35 v36 v37 v38 v39 v32 + diff --git a/CONTENT/BT3025/GAUGE/PDSH_GA.GIM b/CONTENT/BT3025/GAUGE/PDSH_GA.GIM new file mode 100644 index 0000000..a7f5428 --- /dev/null +++ b/CONTENT/BT3025/GAUGE/PDSH_GA.GIM @@ -0,0 +1,23 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=3000 +level1=10000 + +[vertices] +v0=4.6, 0, -5 +v1=4.6, 0, -0.1 +v2=2.5, 0, 1.5 +v3=2.5, 0, 3.5 +v4=-2.5, 0, 3.5 +v5=-2.5, 0, 1.5 +v6=-4.6, 0, -0.1 +v7=-4.6, 0, -5 + +[level0] +linelist=a_dish v0 v1 v2 v3 v4 v5 v6 v7 v0 + +[level1] +linelist=a_dish v0 v3 v4 v7 v0 + diff --git a/CONTENT/BT3025/GAUGE/PGN_GA.GIM b/CONTENT/BT3025/GAUGE/PGN_GA.GIM new file mode 100644 index 0000000..f469a87 --- /dev/null +++ b/CONTENT/BT3025/GAUGE/PGN_GA.GIM @@ -0,0 +1,30 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=3000 +level1=10000 + +[vertices] +v0=0.5, 0, -10.6 +v1=0.5, 0, -2.6 +v2=2, 0, -1.5 +v3=2, 0, 1.6 +v4=1.3, 0, 4.5 +v5=-1.3, 0, 4.5 +v6=-2, 0, 1.6 +v7=-2, 0, -1.5 +v8=-0.5, 0, -2.6 +v9=-0.5, 0, -10.6 +v10=3, 0, -3 +v11=3, 0, 3 +v12=-3, 0, 3 +v13=-3, 0, -3 + +[level0] +linelist=a_gun v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v0 +linelist=a_tarmac v10 v11 v12 v13 v10 + +[level1] +linelist=a_gun v0 v1 v2 v4 v5 v7 v8 v9 v0 + diff --git a/CONTENT/BT3025/GAUGE/QAFC10.PCC b/CONTENT/BT3025/GAUGE/QAFC10.PCC new file mode 100644 index 0000000..465b8b1 Binary files /dev/null and b/CONTENT/BT3025/GAUGE/QAFC10.PCC differ diff --git a/CONTENT/BT3025/GAUGE/QAFC100.PCC b/CONTENT/BT3025/GAUGE/QAFC100.PCC new file mode 100644 index 0000000..c5ae0af Binary files /dev/null and b/CONTENT/BT3025/GAUGE/QAFC100.PCC differ diff --git a/CONTENT/BT3025/GAUGE/QAFC25.PCC b/CONTENT/BT3025/GAUGE/QAFC25.PCC new file mode 100644 index 0000000..7c018d3 Binary files /dev/null and b/CONTENT/BT3025/GAUGE/QAFC25.PCC differ diff --git a/CONTENT/BT3025/GAUGE/QAFC5.PCC b/CONTENT/BT3025/GAUGE/QAFC5.PCC new file mode 100644 index 0000000..febf3c6 Binary files /dev/null and b/CONTENT/BT3025/GAUGE/QAFC5.PCC differ diff --git a/CONTENT/BT3025/GAUGE/QAFC50.PCC b/CONTENT/BT3025/GAUGE/QAFC50.PCC new file mode 100644 index 0000000..2a6b89e Binary files /dev/null and b/CONTENT/BT3025/GAUGE/QAFC50.PCC differ diff --git a/CONTENT/BT3025/GAUGE/QCIRCLE.PCC b/CONTENT/BT3025/GAUGE/QCIRCLE.PCC new file mode 100644 index 0000000..86612b0 Binary files /dev/null and b/CONTENT/BT3025/GAUGE/QCIRCLE.PCC differ diff --git a/CONTENT/BT3025/GAUGE/QCIRCR.PCC b/CONTENT/BT3025/GAUGE/QCIRCR.PCC new file mode 100644 index 0000000..6f5bc7f Binary files /dev/null and b/CONTENT/BT3025/GAUGE/QCIRCR.PCC differ diff --git a/CONTENT/BT3025/GAUGE/QERLLAS.PCC b/CONTENT/BT3025/GAUGE/QERLLAS.PCC new file mode 100644 index 0000000..06253c3 Binary files /dev/null and b/CONTENT/BT3025/GAUGE/QERLLAS.PCC differ diff --git a/CONTENT/BT3025/GAUGE/QERPPC.PCC b/CONTENT/BT3025/GAUGE/QERPPC.PCC new file mode 100644 index 0000000..219f620 Binary files /dev/null and b/CONTENT/BT3025/GAUGE/QERPPC.PCC differ diff --git a/CONTENT/BT3025/GAUGE/QERSLAS.PCC b/CONTENT/BT3025/GAUGE/QERSLAS.PCC new file mode 100644 index 0000000..390e47e Binary files /dev/null and b/CONTENT/BT3025/GAUGE/QERSLAS.PCC differ diff --git a/CONTENT/BT3025/GAUGE/QFIR0.PCC b/CONTENT/BT3025/GAUGE/QFIR0.PCC new file mode 100644 index 0000000..e847aad Binary files /dev/null and b/CONTENT/BT3025/GAUGE/QFIR0.PCC differ diff --git a/CONTENT/BT3025/GAUGE/QLBX10.PCC b/CONTENT/BT3025/GAUGE/QLBX10.PCC new file mode 100644 index 0000000..465b8b1 Binary files /dev/null and b/CONTENT/BT3025/GAUGE/QLBX10.PCC differ diff --git a/CONTENT/BT3025/GAUGE/QLBX100.PCC b/CONTENT/BT3025/GAUGE/QLBX100.PCC new file mode 100644 index 0000000..c5ae0af Binary files /dev/null and b/CONTENT/BT3025/GAUGE/QLBX100.PCC differ diff --git a/CONTENT/BT3025/GAUGE/QLBX25.PCC b/CONTENT/BT3025/GAUGE/QLBX25.PCC new file mode 100644 index 0000000..7c018d3 Binary files /dev/null and b/CONTENT/BT3025/GAUGE/QLBX25.PCC differ diff --git a/CONTENT/BT3025/GAUGE/QLBX5.PCC b/CONTENT/BT3025/GAUGE/QLBX5.PCC new file mode 100644 index 0000000..febf3c6 Binary files /dev/null and b/CONTENT/BT3025/GAUGE/QLBX5.PCC differ diff --git a/CONTENT/BT3025/GAUGE/QLBX50.PCC b/CONTENT/BT3025/GAUGE/QLBX50.PCC new file mode 100644 index 0000000..2a6b89e Binary files /dev/null and b/CONTENT/BT3025/GAUGE/QLBX50.PCC differ diff --git a/CONTENT/BT3025/GAUGE/QLLAS.PCC b/CONTENT/BT3025/GAUGE/QLLAS.PCC new file mode 100644 index 0000000..efe0112 Binary files /dev/null and b/CONTENT/BT3025/GAUGE/QLLAS.PCC differ diff --git a/CONTENT/BT3025/GAUGE/QLRM10.PCC b/CONTENT/BT3025/GAUGE/QLRM10.PCC new file mode 100644 index 0000000..4104f1a Binary files /dev/null and b/CONTENT/BT3025/GAUGE/QLRM10.PCC differ diff --git a/CONTENT/BT3025/GAUGE/QLRM15.PCC b/CONTENT/BT3025/GAUGE/QLRM15.PCC new file mode 100644 index 0000000..1b7eb20 Binary files /dev/null and b/CONTENT/BT3025/GAUGE/QLRM15.PCC differ diff --git a/CONTENT/BT3025/GAUGE/QLRM20.PCC b/CONTENT/BT3025/GAUGE/QLRM20.PCC new file mode 100644 index 0000000..f15cb4c Binary files /dev/null and b/CONTENT/BT3025/GAUGE/QLRM20.PCC differ diff --git a/CONTENT/BT3025/GAUGE/QLRM5.PCC b/CONTENT/BT3025/GAUGE/QLRM5.PCC new file mode 100644 index 0000000..c0c72a4 Binary files /dev/null and b/CONTENT/BT3025/GAUGE/QLRM5.PCC differ diff --git a/CONTENT/BT3025/GAUGE/QMG.PCC b/CONTENT/BT3025/GAUGE/QMG.PCC new file mode 100644 index 0000000..17aeb1a Binary files /dev/null and b/CONTENT/BT3025/GAUGE/QMG.PCC differ diff --git a/CONTENT/BT3025/GAUGE/QNRK15.PCC b/CONTENT/BT3025/GAUGE/QNRK15.PCC new file mode 100644 index 0000000..bbd3163 Binary files /dev/null and b/CONTENT/BT3025/GAUGE/QNRK15.PCC differ diff --git a/CONTENT/BT3025/GAUGE/QNRK5.PCC b/CONTENT/BT3025/GAUGE/QNRK5.PCC new file mode 100644 index 0000000..6e7b6a5 Binary files /dev/null and b/CONTENT/BT3025/GAUGE/QNRK5.PCC differ diff --git a/CONTENT/BT3025/GAUGE/QPPC.PCC b/CONTENT/BT3025/GAUGE/QPPC.PCC new file mode 100644 index 0000000..b4d0364 Binary files /dev/null and b/CONTENT/BT3025/GAUGE/QPPC.PCC differ diff --git a/CONTENT/BT3025/GAUGE/QSENSORS.PCC b/CONTENT/BT3025/GAUGE/QSENSORS.PCC new file mode 100644 index 0000000..567e621 Binary files /dev/null and b/CONTENT/BT3025/GAUGE/QSENSORS.PCC differ diff --git a/CONTENT/BT3025/GAUGE/QSLASER.PCC b/CONTENT/BT3025/GAUGE/QSLASER.PCC new file mode 100644 index 0000000..473844d Binary files /dev/null and b/CONTENT/BT3025/GAUGE/QSLASER.PCC differ diff --git a/CONTENT/BT3025/GAUGE/QSRM2.PCC b/CONTENT/BT3025/GAUGE/QSRM2.PCC new file mode 100644 index 0000000..89f9700 Binary files /dev/null and b/CONTENT/BT3025/GAUGE/QSRM2.PCC differ diff --git a/CONTENT/BT3025/GAUGE/QSRM4.PCC b/CONTENT/BT3025/GAUGE/QSRM4.PCC new file mode 100644 index 0000000..f8f9124 Binary files /dev/null and b/CONTENT/BT3025/GAUGE/QSRM4.PCC differ diff --git a/CONTENT/BT3025/GAUGE/QSRM6.PCC b/CONTENT/BT3025/GAUGE/QSRM6.PCC new file mode 100644 index 0000000..eddcc7a Binary files /dev/null and b/CONTENT/BT3025/GAUGE/QSRM6.PCC differ diff --git a/CONTENT/BT3025/GAUGE/QSTRK2.PCC b/CONTENT/BT3025/GAUGE/QSTRK2.PCC new file mode 100644 index 0000000..f5f8bbb Binary files /dev/null and b/CONTENT/BT3025/GAUGE/QSTRK2.PCC differ diff --git a/CONTENT/BT3025/GAUGE/QSTRK4.PCC b/CONTENT/BT3025/GAUGE/QSTRK4.PCC new file mode 100644 index 0000000..3e87a61 Binary files /dev/null and b/CONTENT/BT3025/GAUGE/QSTRK4.PCC differ diff --git a/CONTENT/BT3025/GAUGE/QSTRK6.PCC b/CONTENT/BT3025/GAUGE/QSTRK6.PCC new file mode 100644 index 0000000..9b855ae Binary files /dev/null and b/CONTENT/BT3025/GAUGE/QSTRK6.PCC differ diff --git a/CONTENT/BT3025/GAUGE/RAP_GA.GIM b/CONTENT/BT3025/GAUGE/RAP_GA.GIM new file mode 100644 index 0000000..a692b91 --- /dev/null +++ b/CONTENT/BT3025/GAUGE/RAP_GA.GIM @@ -0,0 +1,21 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=1000 + +[vertices] +v0=2.5, 0, -0.6 +v1=0, 0, -3 +v2=-2.5, 0, -0.6 +v3=-2.5, 0, 0.7 +v4=2.5, 0, 0.7 +v5=-0.2, 0, -1.5 +v6=-1.5, 0, -1.5 +v7=-1.5, 0, 0.9 +v8=-0.2, 0, 0.9 + +[level0] +linelist=a_mech v0 v1 v2 v3 v4 v0 +linelist=a_mech v5 v6 v7 v8 v5 + diff --git a/CONTENT/BT3025/GAUGE/RESULT2.TXT b/CONTENT/BT3025/GAUGE/RESULT2.TXT new file mode 100644 index 0000000..052672e --- /dev/null +++ b/CONTENT/BT3025/GAUGE/RESULT2.TXT @@ -0,0 +1,5 @@ +BattleTech v4.10 + + +Error - Resource file btl4.res v1.0.0.0 is obsolete! + diff --git a/CONTENT/BT3025/GAUGE/RIVET_GA.GIM b/CONTENT/BT3025/GAUGE/RIVET_GA.GIM new file mode 100644 index 0000000..6383ad0 --- /dev/null +++ b/CONTENT/BT3025/GAUGE/RIVET_GA.GIM @@ -0,0 +1,18 @@ +# built by hand: 6-6-95 cpb + +[object] +gatfile=gauge.gat + +[lods] +level0=100000 + +[vertices] +v0=-5, 0, 5 +v1=5, 0, 5 +v2=5, 0, -5 +v3=-5, 0, -5 + +[level0] +linelist=a_incoming v0 v2 +linelist=a_incoming v1 v3 + diff --git a/CONTENT/BT3025/GAUGE/RK1_GA.GIM b/CONTENT/BT3025/GAUGE/RK1_GA.GIM new file mode 100644 index 0000000..68bcd10 --- /dev/null +++ b/CONTENT/BT3025/GAUGE/RK1_GA.GIM @@ -0,0 +1,38 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=1000 +level1=3000 +level2=10000 + +[vertices] +v0=-98, 0, 3 +v1=-79, 0, 6 +v2=-84, 0, -5 +v3=-95, 0, -11 +v4=91, 0, -17 +v5=49, 0, -28 +v6=16, 0, -28 +v7=-20, 0, -36 +v8=-67, 0, -18 +v9=-65, 0, -11 +v10=-49, 0, 15 +v11=-34, 0, 19 +v12=2, 0, 19 +v13=2, 0, 27 +v14=26, 0, 37 +v15=99, 0, -3 + +[level0] +linelist=a_rock v0 v1 v2 v3 v0 +linelist=a_rock v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v4 + +[level1] +linelist=a_rock v0 v1 v2 v3 v0 +linelist=a_rock v4 v7 v8 v10 v14 v15 v4 + +[level2] +linelist=a_rock v0 v1 v3 v0 +linelist=a_rock v15 v7 v8 v10 v14 v15 + diff --git a/CONTENT/BT3025/GAUGE/RK2_GA.GIM b/CONTENT/BT3025/GAUGE/RK2_GA.GIM new file mode 100644 index 0000000..7f0027a --- /dev/null +++ b/CONTENT/BT3025/GAUGE/RK2_GA.GIM @@ -0,0 +1,22 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=3000 +level1=10000 + +[vertices] +v0=-51, 0, -12 +v1=-47, 0, 23 +v2=-22, 0, 33 +v3=50, 0, -8 +v4=43, 0, -22 +v5=1, 0, -33 +v6=-29, 0, -33 + +[level0] +linelist=a_rock v0 v1 v2 v3 v4 v5 v6 v0 + +[level1] +linelist=a_rock v1 v2 v3 v4 v6 v1 + diff --git a/CONTENT/BT3025/GAUGE/RK3_GA.GIM b/CONTENT/BT3025/GAUGE/RK3_GA.GIM new file mode 100644 index 0000000..7e7a2e4 --- /dev/null +++ b/CONTENT/BT3025/GAUGE/RK3_GA.GIM @@ -0,0 +1,23 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=3000 +level1=10000 + +[vertices] +v0=-40, 0, -9 +v1=-39, 0, -3 +v2=-21, 0, 23 +v3=-7, 0, 27 +v4=26, 0, 27 +v5=39, 0, 13 +v6=39, 0, -22 +v7=7, 0, -28 + +[level0] +linelist=a_rock v0 v1 v2 v3 v4 v5 v6 v7 v0 + +[level1] +linelist=a_rock v0 v2 v4 v6 v7 v0 + diff --git a/CONTENT/BT3025/GAUGE/RK4_GA.GIM b/CONTENT/BT3025/GAUGE/RK4_GA.GIM new file mode 100644 index 0000000..581b1c4 --- /dev/null +++ b/CONTENT/BT3025/GAUGE/RK4_GA.GIM @@ -0,0 +1,22 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=3000 +level1=10000 + +[vertices] +v0=-24, 0, 0 +v1=-18, 0, 11 +v2=14, 0, 12 +v3=23, 0, 8 +v4=22, 0, -2 +v5=10, 0, -11 +v6=-6, 0, -12 + +[level0] +linelist=a_rock v0 v1 v2 v3 v4 v5 v6 v0 + +[level1] +linelist=a_rock v0 v1 v2 v3 v4 v6 v0 + diff --git a/CONTENT/BT3025/GAUGE/RK5_GA.GIM b/CONTENT/BT3025/GAUGE/RK5_GA.GIM new file mode 100644 index 0000000..c660868 --- /dev/null +++ b/CONTENT/BT3025/GAUGE/RK5_GA.GIM @@ -0,0 +1,25 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=3000 +level1=10000 + +[vertices] +v0=-10.5, 0, -6.5 +v1=-9, 0, 1 +v2=-2, 0, 3 +v3=-1.5, 0, 7.5 +v4=4, 0, 8 +v5=10, 0, 4 +v6=8.5, 0, -3.5 +v7=1.5, 0, -6 +v8=-1, 0, -5.5 +v9=-3.5, 0, -8 + +[level0] +linelist=a_rock v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v0 + +[level1] +linelist=a_rock v0 v1 v2 v3 v4 v5 v6 v9 v0 + diff --git a/CONTENT/BT3025/GAUGE/RK6_GA.GIM b/CONTENT/BT3025/GAUGE/RK6_GA.GIM new file mode 100644 index 0000000..58116ac --- /dev/null +++ b/CONTENT/BT3025/GAUGE/RK6_GA.GIM @@ -0,0 +1,26 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=3000 +level1=10000 + +[vertices] +v0=-16, 0, -20 +v1=-18.5, 0, -13.5 +v2=-24, 0, -7 +v3=-19.5, 0, 15 +v4=-7, 0, 24.5 +v5=19.5, 0, 15.5 +v6=23.5, 0, -0.5 +v7=21.5, 0, -7 +v8=12.5, 0, -11 +v9=12.5, 0, -18 +v10=2.5, 0, -24 + +[level0] +linelist=a_rock v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v0 + +[level1] +linelist=a_rock v0 v2 v3 v4 v5 v7 v10 v0 + diff --git a/CONTENT/BT3025/GAUGE/RK7_GA.GIM b/CONTENT/BT3025/GAUGE/RK7_GA.GIM new file mode 100644 index 0000000..ff9e7be --- /dev/null +++ b/CONTENT/BT3025/GAUGE/RK7_GA.GIM @@ -0,0 +1,24 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=3000 +level1=10000 + +[vertices] +v0=-10, 0, -13 +v1=-13.5, 0, -2 +v2=-12.5, 0, 6 +v3=-6.5, 0, 13.5 +v4=0.5, 0, 12 +v5=2.5, 0, 5 +v6=9, 0, 7 +v7=13.5, 0, -0.5 +v8=5, 0, -13.5 + +[level0] +linelist=a_rock v0 v1 v2 v3 v4 v5 v6 v7 v8 v0 + +[level1] +linelist=a_rock v0 v2 v3 v4 v5 v6 v7 v8 v0 + diff --git a/CONTENT/BT3025/GAUGE/ROMMEL.GIM b/CONTENT/BT3025/GAUGE/ROMMEL.GIM new file mode 100644 index 0000000..eac4ed1 --- /dev/null +++ b/CONTENT/BT3025/GAUGE/ROMMEL.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=-3.5, 0, -3 +v1=3.5, 0, -3 +v2=3.5, 0, 4 +v3=-3.5, 0, 4 + +[level0] +linelist=a_vehicle v0 v1 v2 v3 v0 + diff --git a/CONTENT/BT3025/GAUGE/SB1E_GA.GIM b/CONTENT/BT3025/GAUGE/SB1E_GA.GIM new file mode 100644 index 0000000..5bb815c --- /dev/null +++ b/CONTENT/BT3025/GAUGE/SB1E_GA.GIM @@ -0,0 +1,13 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=100000 + +[vertices] +v0=0, 0, -125 +v1=0, 0, 125 + +[level0] +linelist=a_rock v0 v1 + diff --git a/CONTENT/BT3025/GAUGE/SB1N_GA.GIM b/CONTENT/BT3025/GAUGE/SB1N_GA.GIM new file mode 100644 index 0000000..f398126 --- /dev/null +++ b/CONTENT/BT3025/GAUGE/SB1N_GA.GIM @@ -0,0 +1,13 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=100000 + +[vertices] +v0=125, 0, 0 +v1=-125, 0, 0 + +[level0] +linelist=a_rock v0 v1 + diff --git a/CONTENT/BT3025/GAUGE/SB1S_GA.GIM b/CONTENT/BT3025/GAUGE/SB1S_GA.GIM new file mode 100644 index 0000000..f398126 --- /dev/null +++ b/CONTENT/BT3025/GAUGE/SB1S_GA.GIM @@ -0,0 +1,13 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=100000 + +[vertices] +v0=125, 0, 0 +v1=-125, 0, 0 + +[level0] +linelist=a_rock v0 v1 + diff --git a/CONTENT/BT3025/GAUGE/SB1W_GA.GIM b/CONTENT/BT3025/GAUGE/SB1W_GA.GIM new file mode 100644 index 0000000..5bb815c --- /dev/null +++ b/CONTENT/BT3025/GAUGE/SB1W_GA.GIM @@ -0,0 +1,13 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=100000 + +[vertices] +v0=0, 0, -125 +v1=0, 0, 125 + +[level0] +linelist=a_rock v0 v1 + diff --git a/CONTENT/BT3025/GAUGE/SB3S_GA.GIM b/CONTENT/BT3025/GAUGE/SB3S_GA.GIM new file mode 100644 index 0000000..f398126 --- /dev/null +++ b/CONTENT/BT3025/GAUGE/SB3S_GA.GIM @@ -0,0 +1,13 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=100000 + +[vertices] +v0=125, 0, 0 +v1=-125, 0, 0 + +[level0] +linelist=a_rock v0 v1 + diff --git a/CONTENT/BT3025/GAUGE/SEMI.GIM b/CONTENT/BT3025/GAUGE/SEMI.GIM new file mode 100644 index 0000000..8871e59 --- /dev/null +++ b/CONTENT/BT3025/GAUGE/SEMI.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=-1.5, 0, -3 +v1=1.5, 0, -3 +v2=1.5, 0, 3 +v3=-1.5, 0, 3 + +[level0] +linelist=a_vehicle v0 v1 v2 v3 v0 + diff --git a/CONTENT/BT3025/GAUGE/SEMIRIG.GIM b/CONTENT/BT3025/GAUGE/SEMIRIG.GIM new file mode 100644 index 0000000..a3fc17e --- /dev/null +++ b/CONTENT/BT3025/GAUGE/SEMIRIG.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=-1.5, 0, 0.5 +v1=1.5, 0, 0.5 +v2=1.5, 0, 9 +v3=-1.5, 0, 9 + +[level0] +linelist=a_vehicle v0 v1 v2 v3 v0 + diff --git a/CONTENT/BT3025/GAUGE/SGEN1.PCC b/CONTENT/BT3025/GAUGE/SGEN1.PCC new file mode 100644 index 0000000..b971303 Binary files /dev/null and b/CONTENT/BT3025/GAUGE/SGEN1.PCC differ diff --git a/CONTENT/BT3025/GAUGE/SGEN2.PCC b/CONTENT/BT3025/GAUGE/SGEN2.PCC new file mode 100644 index 0000000..752e044 Binary files /dev/null and b/CONTENT/BT3025/GAUGE/SGEN2.PCC differ diff --git a/CONTENT/BT3025/GAUGE/SGEN3.PCC b/CONTENT/BT3025/GAUGE/SGEN3.PCC new file mode 100644 index 0000000..9ce35f1 Binary files /dev/null and b/CONTENT/BT3025/GAUGE/SGEN3.PCC differ diff --git a/CONTENT/BT3025/GAUGE/SGEN4.PCC b/CONTENT/BT3025/GAUGE/SGEN4.PCC new file mode 100644 index 0000000..026d60c Binary files /dev/null and b/CONTENT/BT3025/GAUGE/SGEN4.PCC differ diff --git a/CONTENT/BT3025/GAUGE/SGEN5.PCC b/CONTENT/BT3025/GAUGE/SGEN5.PCC new file mode 100644 index 0000000..0621b49 Binary files /dev/null and b/CONTENT/BT3025/GAUGE/SGEN5.PCC differ diff --git a/CONTENT/BT3025/GAUGE/SGEN6.PCC b/CONTENT/BT3025/GAUGE/SGEN6.PCC new file mode 100644 index 0000000..72f1bbe Binary files /dev/null and b/CONTENT/BT3025/GAUGE/SGEN6.PCC differ diff --git a/CONTENT/BT3025/GAUGE/SGENA.PCC b/CONTENT/BT3025/GAUGE/SGENA.PCC new file mode 100644 index 0000000..e123a5b Binary files /dev/null and b/CONTENT/BT3025/GAUGE/SGENA.PCC differ diff --git a/CONTENT/BT3025/GAUGE/SGENB.PCC b/CONTENT/BT3025/GAUGE/SGENB.PCC new file mode 100644 index 0000000..46b7202 Binary files /dev/null and b/CONTENT/BT3025/GAUGE/SGENB.PCC differ diff --git a/CONTENT/BT3025/GAUGE/SGENBG.PCC b/CONTENT/BT3025/GAUGE/SGENBG.PCC new file mode 100644 index 0000000..9297d58 Binary files /dev/null and b/CONTENT/BT3025/GAUGE/SGENBG.PCC differ diff --git a/CONTENT/BT3025/GAUGE/SGENC.PCC b/CONTENT/BT3025/GAUGE/SGENC.PCC new file mode 100644 index 0000000..565c3bf Binary files /dev/null and b/CONTENT/BT3025/GAUGE/SGENC.PCC differ diff --git a/CONTENT/BT3025/GAUGE/SGEND.PCC b/CONTENT/BT3025/GAUGE/SGEND.PCC new file mode 100644 index 0000000..050a43a Binary files /dev/null and b/CONTENT/BT3025/GAUGE/SGEND.PCC differ diff --git a/CONTENT/BT3025/GAUGE/SGENLEAK.PCC b/CONTENT/BT3025/GAUGE/SGENLEAK.PCC new file mode 100644 index 0000000..6316a05 Binary files /dev/null and b/CONTENT/BT3025/GAUGE/SGENLEAK.PCC differ diff --git a/CONTENT/BT3025/GAUGE/SGENTEMP.PCC b/CONTENT/BT3025/GAUGE/SGENTEMP.PCC new file mode 100644 index 0000000..582c83c Binary files /dev/null and b/CONTENT/BT3025/GAUGE/SGENTEMP.PCC differ diff --git a/CONTENT/BT3025/GAUGE/SGENVOLT.PCC b/CONTENT/BT3025/GAUGE/SGENVOLT.PCC new file mode 100644 index 0000000..c05da3f Binary files /dev/null and b/CONTENT/BT3025/GAUGE/SGENVOLT.PCC differ diff --git a/CONTENT/BT3025/GAUGE/SIZUMIN.PCC b/CONTENT/BT3025/GAUGE/SIZUMIN.PCC new file mode 100644 index 0000000..2daff25 Binary files /dev/null and b/CONTENT/BT3025/GAUGE/SIZUMIN.PCC differ diff --git a/CONTENT/BT3025/GAUGE/SIZUMOUT.PCC b/CONTENT/BT3025/GAUGE/SIZUMOUT.PCC new file mode 100644 index 0000000..293e268 Binary files /dev/null and b/CONTENT/BT3025/GAUGE/SIZUMOUT.PCC differ diff --git a/CONTENT/BT3025/GAUGE/SMLFONT.PCC b/CONTENT/BT3025/GAUGE/SMLFONT.PCC new file mode 100644 index 0000000..c0ebd7d Binary files /dev/null and b/CONTENT/BT3025/GAUGE/SMLFONT.PCC differ diff --git a/CONTENT/BT3025/GAUGE/SR1E_GA.GIM b/CONTENT/BT3025/GAUGE/SR1E_GA.GIM new file mode 100644 index 0000000..5bb815c --- /dev/null +++ b/CONTENT/BT3025/GAUGE/SR1E_GA.GIM @@ -0,0 +1,13 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=100000 + +[vertices] +v0=0, 0, -125 +v1=0, 0, 125 + +[level0] +linelist=a_rock v0 v1 + diff --git a/CONTENT/BT3025/GAUGE/SR1N_GA.GIM b/CONTENT/BT3025/GAUGE/SR1N_GA.GIM new file mode 100644 index 0000000..f398126 --- /dev/null +++ b/CONTENT/BT3025/GAUGE/SR1N_GA.GIM @@ -0,0 +1,13 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=100000 + +[vertices] +v0=125, 0, 0 +v1=-125, 0, 0 + +[level0] +linelist=a_rock v0 v1 + diff --git a/CONTENT/BT3025/GAUGE/SR1S_GA.GIM b/CONTENT/BT3025/GAUGE/SR1S_GA.GIM new file mode 100644 index 0000000..f398126 --- /dev/null +++ b/CONTENT/BT3025/GAUGE/SR1S_GA.GIM @@ -0,0 +1,13 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=100000 + +[vertices] +v0=125, 0, 0 +v1=-125, 0, 0 + +[level0] +linelist=a_rock v0 v1 + diff --git a/CONTENT/BT3025/GAUGE/SR1W_GA.GIM b/CONTENT/BT3025/GAUGE/SR1W_GA.GIM new file mode 100644 index 0000000..5bb815c --- /dev/null +++ b/CONTENT/BT3025/GAUGE/SR1W_GA.GIM @@ -0,0 +1,13 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=100000 + +[vertices] +v0=0, 0, -125 +v1=0, 0, 125 + +[level0] +linelist=a_rock v0 v1 + diff --git a/CONTENT/BT3025/GAUGE/SRMCARRY.GIM b/CONTENT/BT3025/GAUGE/SRMCARRY.GIM new file mode 100644 index 0000000..48dea8c --- /dev/null +++ b/CONTENT/BT3025/GAUGE/SRMCARRY.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=-2.5, 0, -4.5 +v1=2.5, 0, -4.5 +v2=2.5, 0, 5.5 +v3=-2.5, 0, 5.5 + +[level0] +linelist=a_vehicle v0 v1 v2 v3 v0 + diff --git a/CONTENT/BT3025/GAUGE/ST1_GA.GIM b/CONTENT/BT3025/GAUGE/ST1_GA.GIM new file mode 100644 index 0000000..e014970 --- /dev/null +++ b/CONTENT/BT3025/GAUGE/ST1_GA.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=100000 + +[vertices] +v0=-125, 0, 125 +v1=-125, 0, -125 +v2=125, 0, -125 +v3=125, 0, 125 + +[level0] +linelist=a_rock v0 v1 v2 v3 v0 + diff --git a/CONTENT/BT3025/GAUGE/STB_GA.GIM b/CONTENT/BT3025/GAUGE/STB_GA.GIM new file mode 100644 index 0000000..4dfe0e4 --- /dev/null +++ b/CONTENT/BT3025/GAUGE/STB_GA.GIM @@ -0,0 +1,18 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=1000 + +[vertices] +v0=26, 0, -13 +v1=26, 0, 0 +v2=20, 0, 6 +v3=20, 0, 20 +v4=-20, 0, 20 +v5=-20, 0, -20 +v6=20, 0, -20 + +[level0] +linelist=a_arenablock v0 v1 v2 v3 v4 v5 v6 v0 + diff --git a/CONTENT/BT3025/GAUGE/STF_GA.GIM b/CONTENT/BT3025/GAUGE/STF_GA.GIM new file mode 100644 index 0000000..80bcbf5 --- /dev/null +++ b/CONTENT/BT3025/GAUGE/STF_GA.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=1000 + +[vertices] +v0=50, 0, 50 +v1=-50, 0, 50 +v2=-50, 0, -50 +v3=50, 0, -50 + +[level0] +linelist=a_arenahole v0 v1 v2 v3 v0 + diff --git a/CONTENT/BT3025/GAUGE/STH_GA.GIM b/CONTENT/BT3025/GAUGE/STH_GA.GIM new file mode 100644 index 0000000..1b46f23 --- /dev/null +++ b/CONTENT/BT3025/GAUGE/STH_GA.GIM @@ -0,0 +1,27 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=100000 + +[vertices] +v0=-80, 0, 10 +v1=-50, 0, 40 +v2=-5, 0, 40 +v3=-5, 0, 110 +v4=5, 0, 110 +v5=5, 0, 40 +v6=50, 0, 40 +v7=80, 0, 10 +v8=310, 0, 10 +v9=310, 0, 5 +v10=80, 0, 5 +v11=80, 0, -40 +v12=-80, 0, -40 +v13=-80, 0, 5 +v14=-315, 0, 5 +v15=-315, 0, 10 + +[level0] +linelist=a_arenawall v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v0 + diff --git a/CONTENT/BT3025/GAUGE/STI_GA.GIM b/CONTENT/BT3025/GAUGE/STI_GA.GIM new file mode 100644 index 0000000..a692b91 --- /dev/null +++ b/CONTENT/BT3025/GAUGE/STI_GA.GIM @@ -0,0 +1,21 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=1000 + +[vertices] +v0=2.5, 0, -0.6 +v1=0, 0, -3 +v2=-2.5, 0, -0.6 +v3=-2.5, 0, 0.7 +v4=2.5, 0, 0.7 +v5=-0.2, 0, -1.5 +v6=-1.5, 0, -1.5 +v7=-1.5, 0, 0.9 +v8=-0.2, 0, 0.9 + +[level0] +linelist=a_mech v0 v1 v2 v3 v4 v0 +linelist=a_mech v5 v6 v7 v8 v5 + diff --git a/CONTENT/BT3025/GAUGE/STRIKER.GIM b/CONTENT/BT3025/GAUGE/STRIKER.GIM new file mode 100644 index 0000000..69ac797 --- /dev/null +++ b/CONTENT/BT3025/GAUGE/STRIKER.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=-2, 0, -8.5 +v1=2, 0, -8.5 +v2=2, 0, 3.5 +v3=-2, 0, 3.5 + +[level0] +linelist=a_vehicle v0 v1 v2 v3 v0 + diff --git a/CONTENT/BT3025/GAUGE/STS_GA.GIM b/CONTENT/BT3025/GAUGE/STS_GA.GIM new file mode 100644 index 0000000..7303447 --- /dev/null +++ b/CONTENT/BT3025/GAUGE/STS_GA.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=100000 + +[vertices] +v0=-40, 0, -5 +v1=5, 0, 40 +v2=85, 0, 40 +v3=-40, 0, -85 + +[level0] +linelist=a_arenawall v0 v1 v2 v3 v0 + diff --git a/CONTENT/BT3025/GAUGE/STT_GA.GIM b/CONTENT/BT3025/GAUGE/STT_GA.GIM new file mode 100644 index 0000000..1b46f23 --- /dev/null +++ b/CONTENT/BT3025/GAUGE/STT_GA.GIM @@ -0,0 +1,27 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=100000 + +[vertices] +v0=-80, 0, 10 +v1=-50, 0, 40 +v2=-5, 0, 40 +v3=-5, 0, 110 +v4=5, 0, 110 +v5=5, 0, 40 +v6=50, 0, 40 +v7=80, 0, 10 +v8=310, 0, 10 +v9=310, 0, 5 +v10=80, 0, 5 +v11=80, 0, -40 +v12=-80, 0, -40 +v13=-80, 0, 5 +v14=-315, 0, 5 +v15=-315, 0, 10 + +[level0] +linelist=a_arenawall v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v0 + diff --git a/CONTENT/BT3025/GAUGE/SVISION.PCC b/CONTENT/BT3025/GAUGE/SVISION.PCC new file mode 100644 index 0000000..4c54d54 Binary files /dev/null and b/CONTENT/BT3025/GAUGE/SVISION.PCC differ diff --git a/CONTENT/BT3025/GAUGE/SW1_GA.GIM b/CONTENT/BT3025/GAUGE/SW1_GA.GIM new file mode 100644 index 0000000..7550ec2 --- /dev/null +++ b/CONTENT/BT3025/GAUGE/SW1_GA.GIM @@ -0,0 +1,17 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=1000 + +[vertices] +v0=25, 0, -25 +v1=-25, 0, -25 +v2=-25, 0, 25 +v3=-21, 0, 25 +v4=-21, 0, -21 +v5=25, 0, -21 + +[level0] +linelist=a_arenabarrier v0 v1 v2 v3 v4 v5 v0 + diff --git a/CONTENT/BT3025/GAUGE/SW2_GA.GIM b/CONTENT/BT3025/GAUGE/SW2_GA.GIM new file mode 100644 index 0000000..6c82f14 --- /dev/null +++ b/CONTENT/BT3025/GAUGE/SW2_GA.GIM @@ -0,0 +1,20 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=1000 + +[vertices] +v0=-21, 0, 2 +v1=25, 0, 2 +v2=25, 0, -2 +v3=-21, 0, -2 +v4=-21, 0, 25 +v5=-21, 0, -25 +v6=-25, 0, -25 +v7=-25, 0, 25 + +[level0] +linelist=a_arenabarrier v0 v1 v2 v3 v0 +linelist=a_arenabarrier v4 v5 v6 v7 v4 + diff --git a/CONTENT/BT3025/GAUGE/SW3_GA.GIM b/CONTENT/BT3025/GAUGE/SW3_GA.GIM new file mode 100644 index 0000000..51d94b8 --- /dev/null +++ b/CONTENT/BT3025/GAUGE/SW3_GA.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=1000 + +[vertices] +v0=25, 0, -2 +v1=-25, 0, -2 +v2=-25, 0, 2 +v3=25, 0, 2 + +[level0] +linelist=a_arenabarrier v0 v1 v2 v3 v0 + diff --git a/CONTENT/BT3025/GAUGE/SW4_GA.GIM b/CONTENT/BT3025/GAUGE/SW4_GA.GIM new file mode 100644 index 0000000..b5d0fc7 --- /dev/null +++ b/CONTENT/BT3025/GAUGE/SW4_GA.GIM @@ -0,0 +1,17 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=1000 + +[vertices] +v0=25, 0, -25 +v1=25, 0, -21 +v2=-21, 0, -21 +v3=-21, 0, 25 +v4=-25, 0, 25 +v5=-25, 0, -25 + +[level0] +linelist=a_arenabarrier v0 v1 v2 v3 v4 v5 v0 v0 + diff --git a/CONTENT/BT3025/GAUGE/SW5_GA.GIM b/CONTENT/BT3025/GAUGE/SW5_GA.GIM new file mode 100644 index 0000000..6c82f14 --- /dev/null +++ b/CONTENT/BT3025/GAUGE/SW5_GA.GIM @@ -0,0 +1,20 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=1000 + +[vertices] +v0=-21, 0, 2 +v1=25, 0, 2 +v2=25, 0, -2 +v3=-21, 0, -2 +v4=-21, 0, 25 +v5=-21, 0, -25 +v6=-25, 0, -25 +v7=-25, 0, 25 + +[level0] +linelist=a_arenabarrier v0 v1 v2 v3 v0 +linelist=a_arenabarrier v4 v5 v6 v7 v4 + diff --git a/CONTENT/BT3025/GAUGE/SW6_GA.GIM b/CONTENT/BT3025/GAUGE/SW6_GA.GIM new file mode 100644 index 0000000..94be01e --- /dev/null +++ b/CONTENT/BT3025/GAUGE/SW6_GA.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=1000 + +[vertices] +v0=-25, 0, 2 +v1=25, 0, 2 +v2=25, 0, -2 +v3=-25, 0, -2 + +[level0] +linelist=a_arenabarrier v0 v1 v2 v3 v0 + diff --git a/CONTENT/BT3025/GAUGE/SWIFTWND.GIM b/CONTENT/BT3025/GAUGE/SWIFTWND.GIM new file mode 100644 index 0000000..8cfd08b --- /dev/null +++ b/CONTENT/BT3025/GAUGE/SWIFTWND.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=-2, 0, -3.5 +v1=2, 0, -3.5 +v2=2, 0, 3.5 +v3=-2, 0, 3.5 + +[level0] +linelist=a_vehicle v0 v1 v2 v3 v0 + diff --git a/CONTENT/BT3025/GAUGE/THOR_GA.GIM b/CONTENT/BT3025/GAUGE/THOR_GA.GIM new file mode 100644 index 0000000..a692b91 --- /dev/null +++ b/CONTENT/BT3025/GAUGE/THOR_GA.GIM @@ -0,0 +1,21 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=1000 + +[vertices] +v0=2.5, 0, -0.6 +v1=0, 0, -3 +v2=-2.5, 0, -0.6 +v3=-2.5, 0, 0.7 +v4=2.5, 0, 0.7 +v5=-0.2, 0, -1.5 +v6=-1.5, 0, -1.5 +v7=-1.5, 0, 0.9 +v8=-0.2, 0, 0.9 + +[level0] +linelist=a_mech v0 v1 v2 v3 v4 v0 +linelist=a_mech v5 v6 v7 v8 v5 + diff --git a/CONTENT/BT3025/GAUGE/TINYFONT.PCC b/CONTENT/BT3025/GAUGE/TINYFONT.PCC new file mode 100644 index 0000000..6c9e042 Binary files /dev/null and b/CONTENT/BT3025/GAUGE/TINYFONT.PCC differ diff --git a/CONTENT/BT3025/GAUGE/TMC1_GA.GIM b/CONTENT/BT3025/GAUGE/TMC1_GA.GIM new file mode 100644 index 0000000..3a7f5be --- /dev/null +++ b/CONTENT/BT3025/GAUGE/TMC1_GA.GIM @@ -0,0 +1,25 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=-24.9, 0, -83.1 +v1=-24.9, 0, -42.9 +v2=-38.9, 0, -42.9 +v3=-38.9, 0, 5 +v4=-77.1, 0, 5 +v5=-77, 0, -83.1 +v6=-8.1, 0, 90.1 +v7=70, 0, 90.1 +v8=70, 0, 45.1 +v9=57.1, 0, 32.2 +v10=36.9, 0, 32.2 +v11=23.2, 0, 45.1 +v12=-8.1, 0, 45.1 + +[level0] +linelist=a_tarmac v0 v1 v2 v3 v4 v5 v0 +linelist=a_tarmac v6 v7 v8 v9 v10 v11 v12 v6 + diff --git a/CONTENT/BT3025/GAUGE/TMC2_GA.GIM b/CONTENT/BT3025/GAUGE/TMC2_GA.GIM new file mode 100644 index 0000000..d3119e9 --- /dev/null +++ b/CONTENT/BT3025/GAUGE/TMC2_GA.GIM @@ -0,0 +1,17 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=-10, 0, -40 +v1=-10, 0, -25.7 +v2=-29.5, 0, -16 +v3=-29.5, 0, 8 +v4=40, 0, 8 +v5=40, 0, -40 + +[level0] +linelist=a_tarmac v0 v1 v2 v3 v4 v5 v0 + diff --git a/CONTENT/BT3025/GAUGE/TNT_GA.GIM b/CONTENT/BT3025/GAUGE/TNT_GA.GIM new file mode 100644 index 0000000..69ff8a8 --- /dev/null +++ b/CONTENT/BT3025/GAUGE/TNT_GA.GIM @@ -0,0 +1,27 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=3000 +level1=10000 + +[vertices] +v0=-6.1, 0, -2.9 +v1=-6.1, 0, 3 +v2=-4.7, 0, 4.3 +v3=4.7, 0, 4.3 +v4=6.1, 0, 3 +v5=6.1, 0, -2.9 +v6=4.7, 0, -4.2 +v7=-4.7, 0, -4.2 +v8=-6.1, 0, 4.3 +v9=6.1, 0, 4.3 +v10=6.1, 0, -4.2 +v11=-6.1, 0, -4.2 + +[level0] +linelist=a_tent v0 v1 v2 v3 v4 v5 v6 v7 v0 + +[level1] +linelist=a_tent v8 v9 v10 v11 v8 + diff --git a/CONTENT/BT3025/GAUGE/TREE_GA.GIM b/CONTENT/BT3025/GAUGE/TREE_GA.GIM new file mode 100644 index 0000000..407e290 --- /dev/null +++ b/CONTENT/BT3025/GAUGE/TREE_GA.GIM @@ -0,0 +1,19 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=1000 + +[vertices] +v0=-5, 0, 5 +v1=5, 0, 5 +v2=5, 0, -5 +v3=-5, 0, -5 +v4=-5, 0, 0 +v5=5, 0, 0 +v6=0, 0, -5 +v7=0, 0, 5 + +[level0] +linelist=a_tree v0 v2 +linelist=a_tree v1 v3 diff --git a/CONTENT/BT3025/GAUGE/TWR_GA.GIM b/CONTENT/BT3025/GAUGE/TWR_GA.GIM new file mode 100644 index 0000000..8dae702 --- /dev/null +++ b/CONTENT/BT3025/GAUGE/TWR_GA.GIM @@ -0,0 +1,28 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=3000 +level1=10000 + +[vertices] +v0=-2, 0, -1 +v1=-2, 0, 1 +v2=-1, 0, 2 +v3=1, 0, 2 +v4=2, 0, 1 +v5=2, 0, -1 +v6=1, 0, -2 +v7=-1, 0, -2 +v8=2, 0, -2 +v9=2, 0, 2 +v10=-2, 0, 2 +v11=-2, 0, -2 + +[level0] +linelist=a_twr v0 v1 v2 v3 v4 v5 v6 v7 v0 +linelist=a_tarmac v8 v9 v10 v11 v8 + +[level1] +linelist=a_tarmac v8 v9 v10 v11 v8 + diff --git a/CONTENT/BT3025/GAUGE/WALL1_GA.GIM b/CONTENT/BT3025/GAUGE/WALL1_GA.GIM new file mode 100644 index 0000000..0080f13 --- /dev/null +++ b/CONTENT/BT3025/GAUGE/WALL1_GA.GIM @@ -0,0 +1,16 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=38, 0, 41 +v1=23, 0, 32 +v2=11, 0, 15 +v3=-10, 0, -6 +v4=-15, 0, -20 +v5=-50, 0, -43 + +[level0] +linelist=a_rock v0 v1 v2 v3 v4 v5 diff --git a/CONTENT/BT3025/GAUGE/WALL2_GA.GIM b/CONTENT/BT3025/GAUGE/WALL2_GA.GIM new file mode 100644 index 0000000..5a0cd44 --- /dev/null +++ b/CONTENT/BT3025/GAUGE/WALL2_GA.GIM @@ -0,0 +1,16 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=-52,0, -54 +v1=-41, 0, -38 +v2=-34, 0, -22 +v3=-8, 0, 1 +v4=2, 0, 16 +v5=32, 0, 39 + +[level0] +linelist=a_rock v0 v1 v2 v3 v4 v5 diff --git a/CONTENT/BT3025/GAUGE/WALL3_GA.GIM b/CONTENT/BT3025/GAUGE/WALL3_GA.GIM new file mode 100644 index 0000000..df01e34 --- /dev/null +++ b/CONTENT/BT3025/GAUGE/WALL3_GA.GIM @@ -0,0 +1,25 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=144, 0, 3 +v1=132, 0, 3 +v2=120, 0, 0 +v3=97, 0, 10 +v4=82, 0, 7 +v5=66, 0, -2 +v6=50, 0, -2 +v7=27, 0, -5 +v8=3, 0, -5 +v9=-12, 0, -2 +v10=-32, 0, 7 +v11=-61, 0, 2 +v12=-68, 0, 2 +v13=-98, 0, 16 +v14=-134, 0, 4 + +[level0] +linelist=a_rock v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 \ No newline at end of file diff --git a/CONTENT/BT3025/GAUGE/WST_GA.GIM b/CONTENT/BT3025/GAUGE/WST_GA.GIM new file mode 100644 index 0000000..2f49f58 --- /dev/null +++ b/CONTENT/BT3025/GAUGE/WST_GA.GIM @@ -0,0 +1,27 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=3000 +level1=10000 + +[vertices] +v0=2, 0, -2.5 +v1=2, 0, -1 +v2=4, 0, -1 +v3=4, 0, 1 +v4=2, 0, 1 +v5=2, 0, 2.5 +v6=0.5, 0, 3.3 +v7=-0.5, 0, 3.3 +v8=-2, 0, 2.5 +v9=-2, 0, -2.5 +v10=2, 0, 3.3 +v11=-2, 0, 3.3 + +[level0] +linelist=a_wthrstation v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v0 + +[level1] +linelist=a_wthrstation v0 v10 v11 v9 v0 + diff --git a/CONTENT/BT3025/GAUGE/X_GA.GIM b/CONTENT/BT3025/GAUGE/X_GA.GIM new file mode 100644 index 0000000..f2b48c6 --- /dev/null +++ b/CONTENT/BT3025/GAUGE/X_GA.GIM @@ -0,0 +1,18 @@ +# built by hand: 6-6-95 cpb + +[object] +gatfile=gauge.gat + +[lods] +level0=100000 + +[vertices] +v0=-5, 0, 5 +v1=5, 0, 5 +v2=5, 0, -5 +v3=-5, 0, -5 + +[level0] +linelist=a_rock v0 v2 +linelist=a_rock v1 v3 + diff --git a/CONTENT/BT3025/GO.BAT b/CONTENT/BT3025/GO.BAT new file mode 100644 index 0000000..3fd6bea --- /dev/null +++ b/CONTENT/BT3025/GO.BAT @@ -0,0 +1 @@ +btl4opt.exe -egg test.egg > result2.txt \ No newline at end of file diff --git a/CONTENT/BT3025/JOYSTICK.INI b/CONTENT/BT3025/JOYSTICK.INI new file mode 100644 index 0000000..caf1d3b --- /dev/null +++ b/CONTENT/BT3025/JOYSTICK.INI @@ -0,0 +1,587 @@ +[JoystickX] +high=309 +center=209 +low=109 +[JoystickY] +high=100 +center=0 +low=-100 +[operator] +time=Wed Oct 25 14:44:38 2000 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/CONTENT/BT3025/LAST.EGG b/CONTENT/BT3025/LAST.EGG new file mode 100644 index 0000000..c5c9ee3 --- /dev/null +++ b/CONTENT/BT3025/LAST.EGG @@ -0,0 +1,229 @@ +[mission] +adventure=BattleTech +map=arena2 +scenario=freeforall +time=day +weather=clear +temperature=27 +length=600 +[ordinals] +bitmap=Ordinal::BitMap::1 +bitmap=Ordinal::BitMap::2 +bitmap=Ordinal::BitMap::3 +bitmap=Ordinal::BitMap::4 +[Ordinal::BitMap::1] +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=000038000003C000001FF00000000F00 +bitmap=0000F8000003C000003FF80000000F00 +bitmap=0001F8000003C00000707C0000000F00 +bitmap=0001F8000003C00000603C0000000F00 +bitmap=00007801FC0FF00000003C3DF807FF00 +bitmap=00007803FE0FF00000003C3FFC0FFF00 +bitmap=00007803C703C00000003C3E3C1F0F00 +bitmap=000078078303C0000000783C1E1E0F00 +bitmap=000078078003C0000000783C1E1E0F00 +bitmap=00007807C003C0000000F03C1E1E0F00 +bitmap=00007807F003C0000001E03C1E1E0F00 +bitmap=00007803FC03C0000003C03C1E1E0F00 +bitmap=00007801FE03C0000007803C1E1E0F00 +bitmap=000078007F03C000000F003C1E1E0F00 +bitmap=000078001F03C000001E003C1E1E0F00 +bitmap=000078000F03C000003C003C1E1E0F00 +bitmap=000078060F03C0000078003C1E1E0F00 +bitmap=000078071E03E0000078003C1E1F1F00 +bitmap=00007803FE01F000007FFC3C1E0FFF00 +bitmap=00007801FC00F000007FFC3C1E07EF00 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +x=128 +y=32 +width=8 +[Ordinal::BitMap::2] +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=001FFF0000003C0000003C03C0780000 +bitmap=001FFF0000003C0000007C03C0780000 +bitmap=00000E0000003C000000FC03C0780000 +bitmap=00003C0000003C000001BC03C0780000 +bitmap=0000700F3E1FFC000003BC0FF07BF000 +bitmap=0001E00F7E3FFC0000073C0FF07FF800 +bitmap=0003800FFE7C3C0000063C03C07C7800 +bitmap=0007F80FFE783C00000C3C03C0783C00 +bitmap=0007FE0F80783C0000183C03C0783C00 +bitmap=00001E0F00783C0000383C03C0783C00 +bitmap=00000F0F00783C0000703C03C0783C00 +bitmap=00000F0F00783C00007FFF03C0783C00 +bitmap=00000F0F00783C00007FFF03C0783C00 +bitmap=00000F0F00783C0000003C03C0783C00 +bitmap=00000F0F00783C0000003C03C0783C00 +bitmap=00000F0F00783C0000003C03C0783C00 +bitmap=00180F0F00783C0000003C03C0783C00 +bitmap=001C1F0F007C7C0000003C03E0783C00 +bitmap=000FFE0F003FFC0000003C01F0783C00 +bitmap=0007FC0F001FBC0000003C00F0783C00 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +x=128 +y=32 +width=8 +[Ordinal::BitMap::3] +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=001FFF03C07800000000FC03C0780000 +bitmap=001FFF03C07800000003FC03C0780000 +bitmap=001E0003C07800000007C003C0780000 +bitmap=001E0003C0780000000F0003C0780000 +bitmap=001E000FF07BF000000F000FF07BF000 +bitmap=001E000FF07FF800001E000FF07FF800 +bitmap=001E0003C07C7800001E0003C07C7800 +bitmap=001FFC03C0783C00001EFC03C0783C00 +bitmap=001FFE03C0783C00001FFE03C0783C00 +bitmap=00001F03C0783C00001F1F03C0783C00 +bitmap=00000F03C0783C00001E0F03C0783C00 +bitmap=00000F03C0783C00001E0F03C0783C00 +bitmap=00000F03C0783C00001E0F03C0783C00 +bitmap=00000F03C0783C00001E0F03C0783C00 +bitmap=00000F03C0783C00001E0F03C0783C00 +bitmap=00000F03C0783C00001E0F03C0783C00 +bitmap=00180F03C0783C00001E0F03C0783C00 +bitmap=001C1F03E0783C00001F1F03E0783C00 +bitmap=000FFE01F0783C00000FFE01F0783C00 +bitmap=0007FC00F0783C000007FC00F0783C00 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +x=128 +y=32 +width=8 +[Ordinal::BitMap::4] +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=001FFF03C07800000007FC03C0780000 +bitmap=001FFF03C0780000000FFE03C0780000 +bitmap=00000F03C0780000001F1F03C0780000 +bitmap=00000F03C0780000001E0F03C0780000 +bitmap=00000F0FF07BF000001E0F0FF07BF000 +bitmap=00001F0FF07FF800001E0F0FF07FF800 +bitmap=00001E03C07C7800001E0F03C07C7800 +bitmap=00003E03C0783C00001E0F03C0783C00 +bitmap=00003C03C0783C00000F1E03C0783C00 +bitmap=00003C03C0783C000007FC03C0783C00 +bitmap=00007803C0783C000007FC03C0783C00 +bitmap=00007803C0783C00000F1E03C0783C00 +bitmap=00007803C0783C00001E0F03C0783C00 +bitmap=0000F003C0783C00001E0F03C0783C00 +bitmap=0000F003C0783C00001E0F03C0783C00 +bitmap=0000F003C0783C00001E0F03C0783C00 +bitmap=0000F003C0783C00001E0F03C0783C00 +bitmap=0000F003E0783C00000F1E03E0783C00 +bitmap=0000F001F0783C00000FFE01F0783C00 +bitmap=0000F000F0783C000007FC00F0783C00 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +x=128 +y=32 +width=8 +[pilots] +pilot=200.0.0.96 +[200.0.0.96] +hostType=0 +advancedDamage=1 +loadzones=1 +name=Aeolus +bitmapindex=1 +experience=expert +badge=VGL +patch=Yellow +role=Role::Default +dropzone=one +vehicle=loki +vehicleValue=1000 +color=White +[largebitmap] +bitmap=BitMap::Large::Aeolus +[BitMap::Large::Aeolus] +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=000003FE0000000001E0000000000000 +bitmap=000007FF0000000001E0000000000000 +bitmap=00000F8F8000000001E0000000000000 +bitmap=00000F078000000001E0000000000000 +bitmap=00000F0781FF00FF81E0F0781FC00000 +bitmap=00000F0783FF81FFC1E0F0783FE00000 +bitmap=00000F0787C7C3E3E1E0F0783C700000 +bitmap=00000F078783C3C1E1E0F07878300000 +bitmap=00000F078783C3C1E1E0F07878000000 +bitmap=00000FFF8783C3C1E1E0F0787C000000 +bitmap=00000FFF8783C3C1E1E0F0787F000000 +bitmap=00000F0787FFC3C1E1E0F0783FC00000 +bitmap=00000F0787FFC3C1E1E0F0781FE00000 +bitmap=00000F07878003C1E1E0F07807F00000 +bitmap=00000F07878003C1E1E0F07801F00000 +bitmap=00000F07878003C1E1E0F07800F00000 +bitmap=00000F078780C3C1E1E0F07860F00000 +bitmap=00000F0787C1C3E3E1E078F871E00000 +bitmap=00000F0783FF81FFC1E07FF83FE00000 +bitmap=00000F0781FF00FF81E03F781FC00000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +x=128 +y=32 +width=8 +[smallbitmap] +bitmap=BitMap::Small::Aeolus +[BitMap::Small::Aeolus] +bitmap=00000000000000000000000000000000 +bitmap=0000000000000000003E00000C000000 +bitmap=006300000C00000000631F0F8CC63C00 +bitmap=00633198CCC66200007F3198CCC66000 +bitmap=00633F98CCC6780000633018CCC61E00 +bitmap=00633018CCC6060000633098CCC64600 +bitmap=00631F0F8C7E3C000000000000000000 +bitmap=00000000000000000000000000000000 +x=64 +y=16 +width=4 +[Role::Default] +model=dfltrole +[Role::NoReturn] +model=noretun diff --git a/CONTENT/BT3025/MAKEEGG.BAT b/CONTENT/BT3025/MAKEEGG.BAT new file mode 100644 index 0000000..4af68bf --- /dev/null +++ b/CONTENT/BT3025/MAKEEGG.BAT @@ -0,0 +1,97 @@ +@echo off +rem +rem makeegg.bat +rem +if "%2"=="" goto usage +if "%3"=="" goto droptable +set a3=%3 +goto begin +:droptable +set a3=one +rem if "%1"=="choice2" set a3=dname +rem if "%1"=="CHOICE2" set a3=dname +:begin +set eggfile=temp.egg +echo [mission]>%eggfile% +echo adventure=BattleTech>>%eggfile% +echo map=%1>>%eggfile% +echo scenario=freeforall>>%eggfile% +echo ; uncomment one time and one weather>>%eggfile% +echo //time=morning>>%eggfile% +echo //time=day>>%eggfile% +echo //time=evening>>%eggfile% +echo time=night>>%eggfile% +echo weather=clear>>%eggfile% +echo //weather=fog>>%eggfile% +echo //weather=soup>>%eggfile% +echo temperature=80>>%eggfile% +echo //length=600>>%eggfile% +echo.>>%eggfile% +echo [pilots]>>%eggfile% +echo pilot=200.0.0.255>>%eggfile% +echo.>>%eggfile% +echo [200.0.0.255]>>%eggfile% +echo hostType=0>>%eggfile% +echo advancedDamage=0>>%eggfile% +echo loadzones=1>>%eggfile% +echo name=Warrior>>%eggfile% +echo bitmapindex=1>>%eggfile% +echo ; uncomment one experience>>%eggfile% +echo experience=novice>>%eggfile% +echo //experience=standard>>%eggfile% +rem echo //experience=veteran>>%eggfile% +echo //experience=expert>>%eggfile% +echo role=Role::Default>>%eggfile% +rem echo dropzone=%1.%a3%>>%eggfile% +echo dropzone=%a3%>>%eggfile% +echo vehicle=%2>>%eggfile% +echo vehicleValue=0>>%eggfile% +rem echo return=1>>%eggfile% +rem echo collision=0>>%eggfile% +rem echo splash=0>>%eggfile% +rem echo heat=0>>%eggfile% +echo ; uncomment one badge, one patch, and one color>>%eggfile% +echo //badge=Davion>>%eggfile% +echo badge=Kurita>>%eggfile% +echo //badge=Liao>>%eggfile% +echo //badge=Marik>>%eggfile% +echo //badge=None>>%eggfile% +echo //badge=Steiner>>%eggfile% +echo //badge=VGL>>%eggfile% +echo //patch=Black>>%eggfile% +echo //patch=Blue>>%eggfile% +echo //patch=Green>>%eggfile% +echo //patch=Grey>>%eggfile% +echo patch=Red>>%eggfile% +echo //patch=Violet>>%eggfile% +echo //patch=White>>%eggfile% +echo //patch=Yellow>>%eggfile% +echo color=Black>>%eggfile% +echo //color=Brown>>%eggfile% +echo //color=Crimson>>%eggfile% +echo //color=Green>>%eggfile% +echo //color=Grey>>%eggfile% +echo //color=Tan>>%eggfile% +echo //color=White>>%eggfile% +echo.>>%eggfile% +echo [Role::Default]>>%eggfile% +echo model=dfltrole>>%eggfile% +echo dmgInflctdMdfr=100>>%eggfile% +echo dmgRcvdMdfr=100>>%eggfile% +echo dmgBias=100>>%eggfile% +echo friendlyFire=100>>%eggfile% +echo return=2147483647>>%eggfile% +echo supply=0>>%eggfile% +echo.>>%eggfile% +if exist bitmaps.egg type bitmaps.egg>>%eggfile% +echo. +echo '%eggfile%' made for course '%1', vehicle '%2', and dropzone '%a3%'. +echo. +set eggfile= +set a3= +goto end +:usage +echo. +echo usage: makeegg course vehicle [dropzone] (no extensions) +echo. +:end diff --git a/CONTENT/BT3025/MAPS/ADROP.MAP b/CONTENT/BT3025/MAPS/ADROP.MAP new file mode 100644 index 0000000..57ca498 --- /dev/null +++ b/CONTENT/BT3025/MAPS/ADROP.MAP @@ -0,0 +1,32 @@ +[LAB_ONLY] // this file has not been approved for release + +[two] +type=dropzone +dropzone= -574.031921 10.000000 -556.769409 0.000000 -2.443453 0.000000 +dropzone= -599.031921 10.000000 -531.769409 0.000000 -2.443453 0.000000 +dropzone= -524.031921 10.000000 -606.769409 0.000000 -2.443453 0.000000 +dropzone= -549.031921 10.000000 -581.769409 0.000000 -2.443453 0.000000 +[three] +type=dropzone +dropzone= 521.223511 0.000000 -559.285828 0.000000 2.268936 0.000000 +dropzone= 546.223511 0.000000 -534.285828 0.000000 2.268936 0.000000 +dropzone= 571.223511 0.000000 -509.285797 0.000000 2.268933 0.000000 +dropzone= 496.223511 0.000000 -584.285828 0.000000 2.268936 0.000000 +[four] +type=dropzone +dropzone= 557.085388 0.000000 508.039093 0.000000 0.785390 0.000000 +dropzone= 532.085388 0.000000 533.039124 0.000000 0.785387 0.000000 +dropzone= 507.085388 0.000000 558.039124 0.000000 0.785387 0.000000 +dropzone= 582.085388 0.000000 483.039093 0.000000 0.785390 0.000000 +[five] +type=dropzone +dropzone= -473.580200 10.000000 529.291077 0.000000 -0.785406 0.000000 +dropzone= -498.580200 10.000000 504.291107 0.000000 -0.785406 0.000000 +dropzone= -523.580200 10.000000 479.291107 0.000000 -0.785409 0.000000 +dropzone= -448.580200 10.000000 554.291077 0.000000 -0.785406 0.000000 +[adrop] +type=map +instancedropzone=two -561.531921 10.000000 -569.269409 0.000000 -2.443453 0.000000 +instancedropzone=three 533.723511 0.000000 -546.785828 0.000000 2.268936 0.000000 +instancedropzone=four 544.585388 0.000000 520.539124 0.000000 0.785390 0.000000 +instancedropzone=five -486.080200 0.000000 516.791077 0.000000 -0.785406 0.000000 diff --git a/CONTENT/BT3025/MAPS/ALL.ZNE b/CONTENT/BT3025/MAPS/ALL.ZNE new file mode 100644 index 0000000..0b8389c --- /dev/null +++ b/CONTENT/BT3025/MAPS/ALL.ZNE @@ -0,0 +1,28 @@ +#---------------------------------------------------------------------------- + +[EnvironmentZone] +# +# ExtentBox +# minX, minY, minZ, maxX, maxY, maxZ, +extent_box=-1000000,-1000000,-1000000,1000000,1000000,1000000 +# +# Environment +# gravity, air_density, audio_reverb, audio_reflectivity, audio_absorption, +# wind_velocity_x, wind_velocity_y, wind_velocity_z, ambient_temp +environment=9.8,1.0,0.0,0.0,0.0,0.0,0.0,0.0,300.0 + +#---------------------------------------------------------------------------- + +[InterestZone] +# +# ExtentBox +# minX, minY, minZ, maxX, maxY, maxZ, +extent_box=-1000000,-1000000,-1000000,1000000,1000000,1000000 +# +# InterestZoneID +# id +interest_zone_ID=1 +# +# MapResourceName +# name +map_resource_name=unused diff --git a/CONTENT/BT3025/MAPS/ARENA1.MAP b/CONTENT/BT3025/MAPS/ARENA1.MAP new file mode 100644 index 0000000..775ddf1 --- /dev/null +++ b/CONTENT/BT3025/MAPS/ARENA1.MAP @@ -0,0 +1,20 @@ +[LAB_ONLY] // this file has not been approved for release + +[sky] +type=model +modelfile=sky.mod +[arenall] +type=include +file=arenall.map +[artrucks] +type=include +file=artrucks.map +[adrop] +type=include +file=adrop.map +[arena1] +type=map +instance=sky 0 150 0 0 0 0 +instance=arenall 0 0 0 0 0 0 +instance=artrucks 0 0 0 0 0 0 +instance=adrop 0 0 0 0 0 0 diff --git a/CONTENT/BT3025/MAPS/ARENA2.MAP b/CONTENT/BT3025/MAPS/ARENA2.MAP new file mode 100644 index 0000000..5f4ef3b --- /dev/null +++ b/CONTENT/BT3025/MAPS/ARENA2.MAP @@ -0,0 +1,21 @@ +[LAB_ONLY] // this file has not been approved for release + +[sky] +type=model +modelfile=sky.mod +[arenall2] +type=include +file=arenall2.map +[adrop] +type=include +file=adrop.map +//[artrucks] +//type=include +//file=artrucks.map +[arena2] +type=map +instance=sky 0 150 0 0 0 0 +instance=adrop 0 0 0 0 0 0 +instance=arenall2 0 0 0 0 0 0 +//instance=artrucks 0 0 0 0 0 0 + diff --git a/CONTENT/BT3025/MAPS/BLANK.MAP b/CONTENT/BT3025/MAPS/BLANK.MAP new file mode 100644 index 0000000..7c35f83 --- /dev/null +++ b/CONTENT/BT3025/MAPS/BLANK.MAP @@ -0,0 +1,21 @@ +[LAB_ONLY] // this file has not been approved for release + +[wall10k] +type=model +modelfile=wall10k.mod +[one] +type=dropzone +dropzone=0 0 0 0 0 0 +[win1] +type=dropzone +dropzone= 1.646641 -0.350000 4248.688965 0.000000 -3.141593 0.000000 +[rwin1] +type=model +modelfile=rwin1.mod +[blank] +type=map +instance=wall10k 0.000000 -0.351562 0.000000 0.000000 0.000000 0.000000 +instance=rwin1 0.632812 -0.351562 4257.796875 0.000000 0.000000 0.000000 + +instancedropzone=one 0 0 0 0 0 0 +instancedropzone=win1 1.646641 -0.350000 4248.688965 0.000000 -3.141593 0.000000 diff --git a/CONTENT/BT3025/MAPS/PDROP.MAP b/CONTENT/BT3025/MAPS/PDROP.MAP new file mode 100644 index 0000000..3576fd9 --- /dev/null +++ b/CONTENT/BT3025/MAPS/PDROP.MAP @@ -0,0 +1,27 @@ +[LAB_ONLY] // this file has not been approved for release + +[three] +type=dropzone +dropzone= 754.000000 100.000000 525.000000 0.000000 1.570796 0.000000 +dropzone= 754.000000 100.000000 575.000000 0.000000 1.570796 0.000000 +dropzone= 754.000000 100.000000 625.000000 0.000000 1.570796 0.000000 +dropzone= 754.000000 100.000000 675.000000 0.000000 1.570796 0.000000 +dropzone= 754.000000 100.000000 725.000000 0.000000 1.570796 0.000000 +dropzone= 754.000000 100.000000 775.000000 0.000000 1.570796 0.000000 +dropzone= 754.000000 100.000000 425.000000 0.000000 1.570796 0.000000 +dropzone= 754.000000 100.000000 475.000000 0.000000 1.570796 0.000000 +[four] +type=dropzone +dropzone= -975.443115 100.000000 253.478394 0.000000 -1.570796 0.000000 +dropzone= -975.443115 100.000000 303.478394 0.000000 -1.570796 0.000000 +dropzone= -975.443115 100.000000 353.478394 0.000000 -1.570796 0.000000 +dropzone= -975.443115 100.000000 403.478394 0.000000 -1.570796 0.000000 +dropzone= -975.443115 100.000000 453.478394 0.000000 -1.570796 0.000000 +dropzone= -975.443115 100.000000 203.478394 0.000000 -1.570796 0.000000 +dropzone= -975.443115 100.000000 503.478394 0.000000 -1.570796 0.000000 +dropzone= -975.443115 100.000000 553.478394 0.000000 -1.570796 0.000000 +[pdrop] +type=map +instancedropzone=three 754.000000 100.000000 600.000000 0.000000 1.570796 0.000000 +instancedropzone=four -975.443237 100.000000 378.478394 0.000000 -1.570796 0.000000 + \ No newline at end of file diff --git a/CONTENT/BT3025/MAPS/POL3SFX.MAP b/CONTENT/BT3025/MAPS/POL3SFX.MAP new file mode 100644 index 0000000..f42fa00 --- /dev/null +++ b/CONTENT/BT3025/MAPS/POL3SFX.MAP @@ -0,0 +1,23 @@ +[LAB_ONLY] // this file has not been approved for release + +[wndsfx01] +type=model +modelfile=wndsfx01.mod +[wndsfx02] +type=model +modelfile=wndsfx02.mod +[wndsfx03] +type=model +modelfile=wndsfx03.mod +[pol3sfx] +type=map +instance=wndsfx01 -175.000000 103.000000 -283.000000 0.000000 0.000000 0.000000 +instance=wndsfx01 -366.000000 86.000000 217.000000 0.000000 0.000000 0.000000 +instance=wndsfx01 -175.000000 103.000000 717.000000 0.000000 0.000000 0.000000 +instance=wndsfx01 240.000000 103.000000 717.000000 0.000000 0.000000 0.000000 +instance=wndsfx01 240.000000 103.000000 -283.000000 0.000000 0.000000 0.000000 +instance=wndsfx01 355.000000 86.000000 217.000000 0.000000 0.000000 0.000000 +instance=wndsfx02 -26.000000 103.000000 1254.000000 0.000000 0.000000 0.000000 +instance=wndsfx02 92.000000 96.000000 1209.000000 0.000000 0.000000 0.000000 +instance=wndsfx03 -293.000000 99.000000 1769.000000 0.000000 0.000000 0.000000 +instance=wndsfx03 356.000000 99.000000 1846.000000 0.000000 0.000000 0.000000 diff --git a/CONTENT/BT3025/MAPS/POL4DROP.MAP b/CONTENT/BT3025/MAPS/POL4DROP.MAP new file mode 100644 index 0000000..239f740 --- /dev/null +++ b/CONTENT/BT3025/MAPS/POL4DROP.MAP @@ -0,0 +1,33 @@ +[LAB_ONLY] // this file has not been approved for release + +[three] +type=dropzone +dropzone= 725.521606 25.000000 -446.443115 0.000000 1.570796 0.000000 +dropzone= 725.521606 25.000000 -321.443115 0.000000 1.570796 0.000000 +dropzone= 700.521606 25.000000 -371.443115 0.000000 1.570796 0.000000 +dropzone= 700.521606 25.000000 -496.443115 0.000000 1.570796 0.000000 +[four] +type=dropzone +dropzone= 1.108519 25.000000 -581.385071 0.000000 -3.141593 0.000000 +dropzone= 56.991581 25.000000 -462.390991 0.000000 -3.141593 0.000000 +dropzone= 33.167511 25.000000 -523.288574 0.000000 -3.141593 0.000000 +dropzone= -16.391310 25.000000 -556.385071 0.000000 -3.141593 0.000000 +[two] +type=dropzone +dropzone= -1325.443970 25.000000 -171.521194 0.000000 -1.570796 0.000000 +dropzone= -1300.443970 25.000000 -146.521194 0.000000 -1.570796 0.000000 +dropzone= -1400.443970 25.000000 -221.521194 0.000000 -1.570796 0.000000 +dropzone= -1275.443970 25.000000 -271.521210 0.000000 -1.570796 0.000000 +[five] +type=dropzone +dropzone= -275.000000 50.000000 554.000000 0.000000 0.000000 0.000000 +dropzone= -225.000000 50.000000 554.000000 0.000000 0.000000 0.000000 +dropzone= -250.000000 50.000000 504.000000 0.000000 0.000000 0.000000 +dropzone= -200.000000 50.000000 479.000000 0.000000 0.000000 0.000000 +[pol4drop] +type=map +instancedropzone=three 713.021606 25.000000 -408.943115 0.000000 1.570796 0.000000 +instancedropzone=four 18.719074 25.000000 -530.862427 0.000000 -3.141593 0.000000 +instancedropzone=two -1325.443970 25.000000 -202.771210 0.000000 -1.570796 0.000000 +instancedropzone=five -237.500000 50.000000 522.750000 0.000000 0.000000 0.000000 + \ No newline at end of file diff --git a/CONTENT/BT3025/MAPS/POL4SFX.MAP b/CONTENT/BT3025/MAPS/POL4SFX.MAP new file mode 100644 index 0000000..9068a26 --- /dev/null +++ b/CONTENT/BT3025/MAPS/POL4SFX.MAP @@ -0,0 +1,23 @@ +[LAB_ONLY] // this file has not been approved for release + +[wndsfx01] +type=model +modelfile=wndsfx01.mod +[wndsfx02] +type=model +modelfile=wndsfx02.mod +[wndsfx03] +type=model +modelfile=wndsfx03.mod +[pol4sfx] +type=map +instance=wndsfx01 -285.000000 48.000000 -1113.000000 0.000000 0.000000 0.000000 +instance=wndsfx01 -476.000000 31.000000 -613.000000 0.000000 0.000000 0.000000 +instance=wndsfx01 -285.000000 48.000000 -113.000000 0.000000 0.000000 0.000000 +instance=wndsfx01 130.000000 48.000000 -113.000000 0.000000 0.000000 0.000000 +instance=wndsfx01 130.000000 48.000000 -1113.000000 0.000000 0.000000 0.000000 +instance=wndsfx01 245.000000 31.000000 -613.000000 0.000000 0.000000 0.000000 +instance=wndsfx02 -266.000000 48.000000 244.000000 0.000000 0.000000 0.000000 +instance=wndsfx02 192.000000 41.000000 369.000000 0.000000 0.000000 0.000000 +instance=wndsfx03 -628.000000 44.000000 179.000000 0.000000 0.000000 0.000000 +instance=wndsfx03 -769.000000 44.000000 -334.000000 0.000000 0.000000 0.000000 diff --git a/CONTENT/BT3025/MAPS/TEST.MAP b/CONTENT/BT3025/MAPS/TEST.MAP new file mode 100644 index 0000000..de63191 --- /dev/null +++ b/CONTENT/BT3025/MAPS/TEST.MAP @@ -0,0 +1,59 @@ +[LAB_ONLY] // this file has not been approved for release + +[one] +type=dropzone +dropzone= 1516.998047 0.000000 858.638489 0.000000 0.000000 0.000000 +dropzone= 1571.911987 0.000000 895.264587 0.000000 0.000000 0.000000 +dropzone= 1626.827026 0.000000 931.890686 0.000000 0.000000 0.000000 +dropzone= 1681.740967 0.000000 968.516785 0.000000 0.000000 0.000000 +dropzone= 1736.656006 0.000000 1005.143005 0.000000 0.000000 0.000000 +dropzone= 1791.569946 0.000000 1041.769043 0.000000 0.000000 0.000000 +dropzone= 1846.484985 0.000000 1078.395020 0.000000 0.000000 0.000000 +dropzone= 1462.083008 0.000000 822.012512 0.000000 0.000000 0.000000 +[buttea] +type=model +modelfile=buttea.mod +[butteb] +type=model +modelfile=butteb.mod +[buttec] +type=model +modelfile=buttec.mod +[butted] +type=model +modelfile=butted.mod +[buttee] +type=model +modelfile=buttee.mod +[dg100] +type=model +modelfile=dg100.mod +[dhillg1] +type=model +modelfile=dhillg1.mod +[two] +type=dropzone +dropzone= 2249.412109 0.000000 644.686279 0.000000 0.000000 0.000000 +[three] +type=dropzone +dropzone= 3286.033936 0.000000 722.874329 0.000000 0.000000 0.000000 +[four] +type=dropzone +dropzone= 3481.282959 0.000000 1763.738037 0.000000 0.000000 0.000000 +[five] +type=dropzone +dropzone= 4495.966797 0.000000 1781.145996 0.000000 0.000000 0.000000 +[test] +type=map +instance=buttea 1457.429687 0.000000 187.679687 0.000000 0.000000 0.000000 +instance=butteb 1690.195312 0.000000 182.921875 0.000000 0.000000 0.000000 +instance=buttec 2017.976562 0.000000 168.664062 0.000000 0.000000 0.000000 +instance=butted 2459.765625 0.000000 163.914062 0.000000 0.000000 0.000000 +instance=buttee 2832.226562 0.000000 191.757812 0.000000 0.000000 0.000000 +instance=dg100 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 +instance=dhillg1 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 +instancedropzone=one 1654.284180 0.000000 950.203796 0.000000 0.000000 0.000000 +instancedropzone=two 2249.412109 0.000000 644.686279 0.000000 0.000000 0.000000 +instancedropzone=three 3286.033936 0.000000 722.874329 0.000000 0.000000 0.000000 +instancedropzone=four 3481.282959 0.000000 1763.738037 0.000000 0.000000 0.000000 +instancedropzone=five 4495.966797 0.000000 1781.145996 0.000000 0.000000 0.000000 diff --git a/CONTENT/BT3025/MAPS/TEST1.MAP b/CONTENT/BT3025/MAPS/TEST1.MAP new file mode 100644 index 0000000..96d8e7e --- /dev/null +++ b/CONTENT/BT3025/MAPS/TEST1.MAP @@ -0,0 +1,31 @@ +[LAB_ONLY] // this file has not been approved for release + +[arcld] +type=model +modelfile=arcld.mod +[arena1] +type=include +file=arena1.map +[artrucks] +type=include +file=artrucks.map +[one] +type=dropzone +dropzone= 54.178699 20.000000 -662.464905 0.000000 -3.141593 0.000000 +dropzone= -170.500000 0.000000 260.899994 0.000000 0.000000 0.000000 +dropzone= -642.643005 0.000000 -347.921692 0.000000 -1.570796 0.000000 +dropzone= -641.043030 0.000000 -243.721603 0.000000 -1.570796 0.000000 +dropzone= 129.578705 10.000000 -412.364990 0.000000 -3.141593 0.000000 +dropzone= 172.478699 10.000000 -410.565002 0.000000 -3.141593 0.000000 +dropzone= 682.921692 20.000000 1.956543 0.000000 1.570796 0.000000 +dropzone= -357.643097 0.000000 -170.121796 0.000000 -1.570796 0.000000 +dropzone= -358.843109 0.000000 -130.121796 0.000000 -1.570796 0.000000 +dropzone= -51.121311 20.000000 -662.965027 0.000000 -3.141593 0.000000 +dropzone= -129.600006 0.000000 263.299988 0.000000 0.000000 0.000000 +[test1] +type=map +instance=arcld 0 150 0 0 0 0 +instance=arena1 0 0 0 0 0 0 +instance=artrucks 0 0 0 0 0 0 +instancedropzone=one 0 0 0 0 0 0 + diff --git a/CONTENT/BT3025/MAPS/TEST5.MAP b/CONTENT/BT3025/MAPS/TEST5.MAP new file mode 100644 index 0000000..72a398e --- /dev/null +++ b/CONTENT/BT3025/MAPS/TEST5.MAP @@ -0,0 +1,21 @@ +[LAB_ONLY] // this file has not been approved for release + +[lntrk1] +type=model +modelfile=lntrk1.mod +[kurita] +type=model +modelfile=kurita.mod +[davion] +type=model +modelfile=davion.mod +[arena1] +type=include +file=arena1.map +[test5] +type=map +instance=kurita -1.000000 3.000000 0.000000 0.000000 0.000000 0.000000 500 Team Kurita, +instance=davion 6.000000 0.000000 0.000000 0.000000 0.000000 0.000000 500 Team Davion, +instance=lntrk1 -105.000000 0.000000 220.000000 0.000000 0.000000 0.000000 Team Kurita,dfltrole,Davion's Target, +instance=lntrk1 -128.000000 0.000000 -106.000000 0.000000 0.000000 0.000000 Team Davion,dfltrole,Kurita's Target, +instance=arena1 0 0 0 0 0 0 diff --git a/CONTENT/BT3025/MENU.BAT b/CONTENT/BT3025/MENU.BAT new file mode 100644 index 0000000..f3a05af --- /dev/null +++ b/CONTENT/BT3025/MENU.BAT @@ -0,0 +1,28 @@ +@echo off +echo. +echo commands: +echo. +echo btnet - network game (munga) - 'Q' to exit +echo btgo [map [mech]] - 1st person (munga) - F12 to exit +echo btlook [map [mech]] - fixed view (munga) - F12 to exit +echo btcam [map [mech]] - relative view (munga) - F12 to exit +echo btfly [map] - fly scene file (flyk) - Esc to exit +echo. +echo maps: +echo. +echo arena1 - Solaris VII Arena (default) +echo polar1 - somewhere cold +echo. +echo mechs: +echo. +echo blkhawk - Black Hawk +rem blkjack - Black Jack +rem firstrtr - Fire Starter +echo loki - Loki +echo madcat - MadCat +echo owens - Owens +rem raptor - Raptor +rem strider - Strider +echo thor - Thor (default) +echo vulture - Vulture +echo. diff --git a/CONTENT/BT3025/MODELS/AB01.MOD b/CONTENT/BT3025/MODELS/AB01.MOD new file mode 100644 index 0000000..e49a44b --- /dev/null +++ b/CONTENT/BT3025/MODELS/AB01.MOD @@ -0,0 +1,12 @@ +[video] +object=ab01.bgf + +[gauge] +image=ab01_ga.gim + +[collision] +name=ab01_cv.sld + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/BT3025/MODELS/AB02.MOD b/CONTENT/BT3025/MODELS/AB02.MOD new file mode 100644 index 0000000..1300bc9 --- /dev/null +++ b/CONTENT/BT3025/MODELS/AB02.MOD @@ -0,0 +1,12 @@ +[video] +object=ab02.bgf + +[gauge] +image=ab02_ga.gim + +[collision] +name=ab02_cv.sld + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/BT3025/MODELS/AB03.MOD b/CONTENT/BT3025/MODELS/AB03.MOD new file mode 100644 index 0000000..0bf8fb7 --- /dev/null +++ b/CONTENT/BT3025/MODELS/AB03.MOD @@ -0,0 +1,12 @@ +[video] +object=ab03.bgf + +[gauge] +image=ab03_ga.gim + +[collision] +name=ab03_cv.sld + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/BT3025/MODELS/AB04.MOD b/CONTENT/BT3025/MODELS/AB04.MOD new file mode 100644 index 0000000..285c0c1 --- /dev/null +++ b/CONTENT/BT3025/MODELS/AB04.MOD @@ -0,0 +1,12 @@ +[video] +object=ab04.bgf + +[gauge] +image=ab04_ga.gim + +[collision] +name=ab04_cv.sld + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/BT3025/MODELS/AB05.MOD b/CONTENT/BT3025/MODELS/AB05.MOD new file mode 100644 index 0000000..7e54627 --- /dev/null +++ b/CONTENT/BT3025/MODELS/AB05.MOD @@ -0,0 +1,12 @@ +[video] +object=ab05.bgf + +[gauge] +image=ab05_ga.gim + +[collision] +name=ab05_cv.sld + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/BT3025/MODELS/AB06.MOD b/CONTENT/BT3025/MODELS/AB06.MOD new file mode 100644 index 0000000..843f7c9 --- /dev/null +++ b/CONTENT/BT3025/MODELS/AB06.MOD @@ -0,0 +1,12 @@ +[video] +object=ab06.bgf + +[gauge] +image=ab06_ga.gim + +[collision] +name=ab06_cv.sld + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/BT3025/MODELS/AB06D.MOD b/CONTENT/BT3025/MODELS/AB06D.MOD new file mode 100644 index 0000000..677713f --- /dev/null +++ b/CONTENT/BT3025/MODELS/AB06D.MOD @@ -0,0 +1,12 @@ +[video] +object=ab06d.bgf ab06d_FR.bgf + +[gauge] +image=ab06_ga.gim + +[collision] +name=ab06d_cv.sld + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/BT3025/MODELS/AB07.MOD b/CONTENT/BT3025/MODELS/AB07.MOD new file mode 100644 index 0000000..f4f62fa --- /dev/null +++ b/CONTENT/BT3025/MODELS/AB07.MOD @@ -0,0 +1,17 @@ +[video] +object=ab07.bgf +rubble=ab07d.bgf ab07d_FR.bgf + +[gauge] +image=ab07_ga.gim + +[collision] +name=ab07_cv.sld + +[gamedata] +class=CulturalIconClassID +DamageZones=med.dmg +StoppingCollisionVolume=1 +ExplosionModelFile=meddead +TimeDelay=0.5 + diff --git a/CONTENT/BT3025/MODELS/AB08.MOD b/CONTENT/BT3025/MODELS/AB08.MOD new file mode 100644 index 0000000..2efdeeb --- /dev/null +++ b/CONTENT/BT3025/MODELS/AB08.MOD @@ -0,0 +1,8 @@ +[video] +object=ab08.bgf + +[gauge] +image=ab08_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/AB09.MOD b/CONTENT/BT3025/MODELS/AB09.MOD new file mode 100644 index 0000000..dc99fba --- /dev/null +++ b/CONTENT/BT3025/MODELS/AB09.MOD @@ -0,0 +1,13 @@ +[video] +object=ab09.bgf + +[gauge] +image=ab09_ga.gim + +[collision] +name=ab09_cv.sld + +[gamedata] +class=UnscalableTerrainClassID + + diff --git a/CONTENT/BT3025/MODELS/AB09D.MOD b/CONTENT/BT3025/MODELS/AB09D.MOD new file mode 100644 index 0000000..7652d8b --- /dev/null +++ b/CONTENT/BT3025/MODELS/AB09D.MOD @@ -0,0 +1,13 @@ +[video] +object=ab09d.bgf ab09d_FR.bgf + +[gauge] +image=ab09_ga.gim + +[collision] +name=ab09d_cv.sld + +[gamedata] +class=UnscalableTerrainClassID + + diff --git a/CONTENT/BT3025/MODELS/AB10.MOD b/CONTENT/BT3025/MODELS/AB10.MOD new file mode 100644 index 0000000..a2fbf52 --- /dev/null +++ b/CONTENT/BT3025/MODELS/AB10.MOD @@ -0,0 +1,12 @@ +[video] +object=ab10.bgf + +[gauge] +image=ab10_ga.gim + +[collision] +name=ab10_cv.sld + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/BT3025/MODELS/AB10D.MOD b/CONTENT/BT3025/MODELS/AB10D.MOD new file mode 100644 index 0000000..181d46d --- /dev/null +++ b/CONTENT/BT3025/MODELS/AB10D.MOD @@ -0,0 +1,12 @@ +[video] +object=ab10d.bgf ab10d_FR.bgf + +[gauge] +image=ab10_ga.gim + +[collision] +name=ab10d_cv.sld + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/BT3025/MODELS/ACT01.MOD b/CONTENT/BT3025/MODELS/ACT01.MOD new file mode 100644 index 0000000..ec47ba0 --- /dev/null +++ b/CONTENT/BT3025/MODELS/ACT01.MOD @@ -0,0 +1,5 @@ +[video] +object=act01.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/ACT02.MOD b/CONTENT/BT3025/MODELS/ACT02.MOD new file mode 100644 index 0000000..7376047 --- /dev/null +++ b/CONTENT/BT3025/MODELS/ACT02.MOD @@ -0,0 +1,5 @@ +[video] +object=act02.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/ACT03.MOD b/CONTENT/BT3025/MODELS/ACT03.MOD new file mode 100644 index 0000000..c87c861 --- /dev/null +++ b/CONTENT/BT3025/MODELS/ACT03.MOD @@ -0,0 +1,5 @@ +[video] +object=act03.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/ACT04.MOD b/CONTENT/BT3025/MODELS/ACT04.MOD new file mode 100644 index 0000000..5c5769d --- /dev/null +++ b/CONTENT/BT3025/MODELS/ACT04.MOD @@ -0,0 +1,5 @@ +[video] +object=act04.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/ACT05.MOD b/CONTENT/BT3025/MODELS/ACT05.MOD new file mode 100644 index 0000000..4a393ae --- /dev/null +++ b/CONTENT/BT3025/MODELS/ACT05.MOD @@ -0,0 +1,5 @@ +[video] +object=act05.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/AD01.MOD b/CONTENT/BT3025/MODELS/AD01.MOD new file mode 100644 index 0000000..4dc3a3d --- /dev/null +++ b/CONTENT/BT3025/MODELS/AD01.MOD @@ -0,0 +1,8 @@ +[video] +object=ad01.bgf + +[gauge] +image=ad01_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/ADSUP1.MOD b/CONTENT/BT3025/MODELS/ADSUP1.MOD new file mode 100644 index 0000000..1b93f93 --- /dev/null +++ b/CONTENT/BT3025/MODELS/ADSUP1.MOD @@ -0,0 +1,5 @@ +[video] +object=adsup1.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/ADSUP2.MOD b/CONTENT/BT3025/MODELS/ADSUP2.MOD new file mode 100644 index 0000000..8ebca70 --- /dev/null +++ b/CONTENT/BT3025/MODELS/ADSUP2.MOD @@ -0,0 +1,5 @@ +[video] +object=adsup2.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/ADWLK1.MOD b/CONTENT/BT3025/MODELS/ADWLK1.MOD new file mode 100644 index 0000000..36786e5 --- /dev/null +++ b/CONTENT/BT3025/MODELS/ADWLK1.MOD @@ -0,0 +1,12 @@ +[video] +object=adwlk1.bgf + +[collision] +name=adwlk1~1.sld + +[gamedata] +class=CulturalIconClassID +DamageZones=med.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=meddead +TimeDelay=0.5 diff --git a/CONTENT/BT3025/MODELS/ADWLK2.MOD b/CONTENT/BT3025/MODELS/ADWLK2.MOD new file mode 100644 index 0000000..b516e30 --- /dev/null +++ b/CONTENT/BT3025/MODELS/ADWLK2.MOD @@ -0,0 +1,12 @@ +[video] +object=adwlk2.bgf + +[collision] +name=adwlk2~1.sld + +[gamedata] +class=CulturalIconClassID +DamageZones=med.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=meddead +TimeDelay=0.5 diff --git a/CONTENT/BT3025/MODELS/ADWLK3.MOD b/CONTENT/BT3025/MODELS/ADWLK3.MOD new file mode 100644 index 0000000..c022ed4 --- /dev/null +++ b/CONTENT/BT3025/MODELS/ADWLK3.MOD @@ -0,0 +1,12 @@ +[video] +object=adwlk3.bgf + +[collision] +name=adwlk3~1.sld + +[gamedata] +class=CulturalIconClassID +DamageZones=med.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=meddead +TimeDelay=0.5 diff --git a/CONTENT/BT3025/MODELS/AFC100.SUB b/CONTENT/BT3025/MODELS/AFC100.SUB new file mode 100644 index 0000000..fa1969f --- /dev/null +++ b/CONTENT/BT3025/MODELS/AFC100.SUB @@ -0,0 +1,31 @@ +[ProjectileWeapon] +Type=ProjectileWeaponClassID +StartingTemperature=77.0 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +ThermalConductance=3.55e4 +ThermalMass=9.47e4 +HeatSink=None +AmmoBin=None +VoltageSource=None +TracerInterval=1 +ExplosionModelFile=canhit +RechargeRate=8.0 +DamageAmount=25.0 +DamageType=BallisticDamage +WeaponDamagePoints=3.0 +WeaponRange=400 +HeatCostToFire=6.5e7 +VitalSubsystem=False +ThermalResistivityCoefficient=0.0024 +AuxScreenNumber=0 +AuxScreenLabel=qafc100.pcc +EngScreenLabel=eafc100.pcc +MinTimeOfFlight=1000000 +MinVoltagePercentToFire=0.30 +MinJamChance=0.05 +StartTime=1.0 +PipPosition=1 +PipColor=1.0 0.5 0.0 +PipExtendedRange=False +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT3025/MODELS/AFC25.SUB b/CONTENT/BT3025/MODELS/AFC25.SUB new file mode 100644 index 0000000..5285bdb --- /dev/null +++ b/CONTENT/BT3025/MODELS/AFC25.SUB @@ -0,0 +1,31 @@ +[ProjectileWeapon] +Type=ProjectileWeaponClassID +StartingTemperature=77.0 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +ThermalConductance=1.78e4 +ThermalMass=1.19e4 +HeatSink=None +AmmoBin=None +VoltageSource=None +TracerInterval=1 +ExplosionModelFile=canhit +RechargeRate=2.0 +DamageAmount=7.0 +DamageType=BallisticDamage +WeaponDamagePoints=3.0 +WeaponRange=900 +HeatCostToFire=1.5e6 +VitalSubsystem=False +ThermalResistivityCoefficient=0.0024 +AuxScreenNumber=0 +AuxScreenLabel=qafc25.pcc +EngScreenLabel=eafc25.pcc +MinTimeOfFlight=1000000 +MinVoltagePercentToFire=0.30 +MinJamChance=0.05 +StartTime=1.0 +PipPosition=1 +PipColor=1.0 0.5 0.0 +PipExtendedRange=False +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT3025/MODELS/AFC5.SUB b/CONTENT/BT3025/MODELS/AFC5.SUB new file mode 100644 index 0000000..07a4568 --- /dev/null +++ b/CONTENT/BT3025/MODELS/AFC5.SUB @@ -0,0 +1,31 @@ +[ProjectileWeapon] +Type=ProjectileWeaponClassID +StartingTemperature=77.0 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +ThermalConductance=1.78e4 +ThermalMass=1.19e4 +HeatSink=None +AmmoBin=None +VoltageSource=None +TracerInterval=1.0 +ExplosionModelFile=canhit +RechargeRate=1.0 +DamageAmount=3.0 +DamageType=BallisticDamage +WeaponDamagePoints=2.0 +WeaponRange=1500 +HeatCostToFire=1.0e6 +VitalSubsystem=False +ThermalResistivityCoefficient=0.0024 +AuxScreenNumber=0 +AuxScreenLabel=qafc5.pcc +EngScreenLabel=eafc5.pcc +MinTimeOfFlight=1000000 +MinVoltagePercentToFire=0.30 +MinJamChance=0.02 +StartTime=1.0 +PipPosition=1 +PipColor=1.0 0.5 0.0 +PipExtendedRange=False +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT3025/MODELS/AFC50.SUB b/CONTENT/BT3025/MODELS/AFC50.SUB new file mode 100644 index 0000000..823b0e8 --- /dev/null +++ b/CONTENT/BT3025/MODELS/AFC50.SUB @@ -0,0 +1,31 @@ +[ProjectileWeapon] +Type=ProjectileWeaponClassID +StartingTemperature=77.0 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +ThermalConductance=2.37e4 +ThermalMass=3.16e4 +HeatSink=None +AmmoBin=None +VoltageSource=None +TracerInterval=1 +ExplosionModelFile=canhit +RechargeRate=5.0 +DamageAmount=10.0 +DamageType=BallisticDamage +WeaponDamagePoints=3.0 +WeaponRange=900.0 +HeatCostToFire=2.0e7 +VitalSubsystem=False +ThermalResistivityCoefficient=0.0024 +AuxScreenNumber=0 +AuxScreenLabel=qafc50.pcc +EngScreenLabel=eafc50.pcc +MinTimeOfFlight=1000000 +MinVoltagePercentToFire=0.30 +MinJamChance=0.05 +PipPosition=1 +PipColor=1.0 0.5 0.0 +PipExtendedRange=False +StartTime=1.0 +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT3025/MODELS/AFLOOR.MOD b/CONTENT/BT3025/MODELS/AFLOOR.MOD new file mode 100644 index 0000000..0c51d85 --- /dev/null +++ b/CONTENT/BT3025/MODELS/AFLOOR.MOD @@ -0,0 +1,8 @@ +[video] +object=afloor.bgf + +[collision] +name=afloor~1.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/AMAFC100.SUB b/CONTENT/BT3025/MODELS/AMAFC100.SUB new file mode 100644 index 0000000..67ddf31 --- /dev/null +++ b/CONTENT/BT3025/MODELS/AMAFC100.SUB @@ -0,0 +1,14 @@ +[AmmoBin] +Type=AmmoBinClassID +ArmorValue=20.0 +WatchedSubsystem=None +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +AmmoCount=15 +FeedRate=2.0 +AmmoClassID=ProjectileClassID +AmmoModelFile=projtile +WeaponDamagePoints=2.0 +ExplosionModelFile=canhit +VitalSubsystem=False +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT3025/MODELS/AMBSSDOR.MOD b/CONTENT/BT3025/MODELS/AMBSSDOR.MOD new file mode 100644 index 0000000..286683e --- /dev/null +++ b/CONTENT/BT3025/MODELS/AMBSSDOR.MOD @@ -0,0 +1,8 @@ +[gamedata] +class=ScenarioRoleClassID +KillBonus=500.0 +DamageReceivedModifier=1.0 +DamageInflictedModifier=1.0 +DamageBias=1.0 +FriendlyFirePenalty=1.0 +ReturnFromDeath=100 diff --git a/CONTENT/BT3025/MODELS/AMLBX100.SUB b/CONTENT/BT3025/MODELS/AMLBX100.SUB new file mode 100644 index 0000000..dca5273 --- /dev/null +++ b/CONTENT/BT3025/MODELS/AMLBX100.SUB @@ -0,0 +1,16 @@ +[AmmoBin] +Type=AmmoBinClassID +ArmorValue=20.0 +WatchedSubsystem=None +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +AmmoCount=15 +FeedRate=2.0 +AmmoClassID=MissileClassID +AmmoModelFile=lbx +StandardResistance=1.0 +VoltageSource=None +WeaponDamagePoints=2.0 +ExplosionModelFile=canhit +VitalSubsystem=False +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT3025/MODELS/AMMAFC25.SUB b/CONTENT/BT3025/MODELS/AMMAFC25.SUB new file mode 100644 index 0000000..55c80ad --- /dev/null +++ b/CONTENT/BT3025/MODELS/AMMAFC25.SUB @@ -0,0 +1,14 @@ +[AmmoBin] +Type=AmmoBinClassID +ArmorValue=20.0 +WatchedSubsystem=None +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +AmmoCount=200 +FeedRate=2.0 +AmmoClassID=ProjectileClassID +AmmoModelFile=projtile +WeaponDamagePoints=2.0 +ExplosionModelFile=canhit +VitalSubsystem=False +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT3025/MODELS/AMMAFC5.SUB b/CONTENT/BT3025/MODELS/AMMAFC5.SUB new file mode 100644 index 0000000..5633bfd --- /dev/null +++ b/CONTENT/BT3025/MODELS/AMMAFC5.SUB @@ -0,0 +1,14 @@ +[AmmoBin] +Type=AmmoBinClassID +ArmorValue=20.0 +WatchedSubsystem=None +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +AmmoCount=500 +FeedRate=0.2 +AmmoClassID=ProjectileClassID +AmmoModelFile=projtile +WeaponDamagePoints=2.0 +ExplosionModelFile=canhit +VitalSubsystem=False +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT3025/MODELS/AMMAFC50.SUB b/CONTENT/BT3025/MODELS/AMMAFC50.SUB new file mode 100644 index 0000000..68b92ef --- /dev/null +++ b/CONTENT/BT3025/MODELS/AMMAFC50.SUB @@ -0,0 +1,14 @@ +[AmmoBin] +Type=AmmoBinClassID +ArmorValue=20.0 +WatchedSubsystem=None +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +AmmoCount=100 +FeedRate=0.20 +AmmoClassID=ProjectileClassID +AmmoModelFile=projtile +WeaponDamagePoints=2.0 +ExplosionModelFile=canhit +VitalSubsystem=False +CriticalHitScoreBonus=0 \ No newline at end of file diff --git a/CONTENT/BT3025/MODELS/AMMLBX25.SUB b/CONTENT/BT3025/MODELS/AMMLBX25.SUB new file mode 100644 index 0000000..6073aa3 --- /dev/null +++ b/CONTENT/BT3025/MODELS/AMMLBX25.SUB @@ -0,0 +1,16 @@ +[AmmoBin] +Type=AmmoBinClassID +ArmorValue=20.0 +WatchedSubsystem=None +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +AmmoCount=200 +FeedRate=2.0 +AmmoClassID=MissileClassID +AmmoModelFile=lbx +StandardResistance=1.0 +VoltageSource=None +WeaponDamagePoints=2.0 +ExplosionModelFile=canhit +VitalSubsystem=False +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT3025/MODELS/AMMLBX5.SUB b/CONTENT/BT3025/MODELS/AMMLBX5.SUB new file mode 100644 index 0000000..f2fecf6 --- /dev/null +++ b/CONTENT/BT3025/MODELS/AMMLBX5.SUB @@ -0,0 +1,16 @@ +[AmmoBin] +Type=AmmoBinClassID +ArmorValue=20.0 +WatchedSubsystem=None +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +AmmoCount=500 +FeedRate=0.2 +AmmoClassID=MissileClassID +AmmoModelFile=lbx +StandardResistance=1.0 +VoltageSource=None +WeaponDamagePoints=2.0 +ExplosionModelFile=canhit +VitalSubsystem=False +CriticalHitScoreBonus=0 \ No newline at end of file diff --git a/CONTENT/BT3025/MODELS/AMMLBX50.SUB b/CONTENT/BT3025/MODELS/AMMLBX50.SUB new file mode 100644 index 0000000..95cd98d --- /dev/null +++ b/CONTENT/BT3025/MODELS/AMMLBX50.SUB @@ -0,0 +1,16 @@ +[AmmoBin] +Type=AmmoBinClassID +ArmorValue=20.0 +WatchedSubsystem=None +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +AmmoCount=100 +FeedRate=0.20 +AmmoClassID=MissileClassID +AmmoModelFile=lbx +StandardResistance=1.0 +VoltageSource=None +WeaponDamagePoints=2.0 +ExplosionModelFile=canhit +VitalSubsystem=False +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT3025/MODELS/AMMLRM10.SUB b/CONTENT/BT3025/MODELS/AMMLRM10.SUB new file mode 100644 index 0000000..3faa5ec --- /dev/null +++ b/CONTENT/BT3025/MODELS/AMMLRM10.SUB @@ -0,0 +1,16 @@ +[AmmoBin] +Type=AmmoBinClassID +ArmorValue=20.0 +WatchedSubsystem=None +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +AmmoCount=36 +FeedRate=0.50 +AmmoClassID=MissileClassID +AmmoModelFile=lrm +StandardResistance=1.0 +VoltageSource=None +WeaponDamagePoints=2.0 +ExplosionModelFile=mslhit +VitalSubsystem=False +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT3025/MODELS/AMMLRM15.SUB b/CONTENT/BT3025/MODELS/AMMLRM15.SUB new file mode 100644 index 0000000..3faa5ec --- /dev/null +++ b/CONTENT/BT3025/MODELS/AMMLRM15.SUB @@ -0,0 +1,16 @@ +[AmmoBin] +Type=AmmoBinClassID +ArmorValue=20.0 +WatchedSubsystem=None +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +AmmoCount=36 +FeedRate=0.50 +AmmoClassID=MissileClassID +AmmoModelFile=lrm +StandardResistance=1.0 +VoltageSource=None +WeaponDamagePoints=2.0 +ExplosionModelFile=mslhit +VitalSubsystem=False +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT3025/MODELS/AMMLRM20.SUB b/CONTENT/BT3025/MODELS/AMMLRM20.SUB new file mode 100644 index 0000000..3faa5ec --- /dev/null +++ b/CONTENT/BT3025/MODELS/AMMLRM20.SUB @@ -0,0 +1,16 @@ +[AmmoBin] +Type=AmmoBinClassID +ArmorValue=20.0 +WatchedSubsystem=None +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +AmmoCount=36 +FeedRate=0.50 +AmmoClassID=MissileClassID +AmmoModelFile=lrm +StandardResistance=1.0 +VoltageSource=None +WeaponDamagePoints=2.0 +ExplosionModelFile=mslhit +VitalSubsystem=False +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT3025/MODELS/AMMLRM5.SUB b/CONTENT/BT3025/MODELS/AMMLRM5.SUB new file mode 100644 index 0000000..b10a871 --- /dev/null +++ b/CONTENT/BT3025/MODELS/AMMLRM5.SUB @@ -0,0 +1,16 @@ +[AmmoBin] +Type=AmmoBinClassID +ArmorValue=10.0 +WatchedSubsystem=None +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +AmmoCount=36 +FeedRate=0.50 +AmmoClassID=MissileClassID +AmmoModelFile=lrm +StandardResistance=1.0 +VoltageSource=None +WeaponDamagePoints=2.0 +ExplosionModelFile=mslhit +VitalSubsystem=False +CriticalHitScoreBonus=0 \ No newline at end of file diff --git a/CONTENT/BT3025/MODELS/AMMNRK10.SUB b/CONTENT/BT3025/MODELS/AMMNRK10.SUB new file mode 100644 index 0000000..96c70cc --- /dev/null +++ b/CONTENT/BT3025/MODELS/AMMNRK10.SUB @@ -0,0 +1,16 @@ +[AmmoBin] +Type=AmmoBinClassID +ArmorValue=20.0 +WatchedSubsystem=None +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +AmmoCount=36 +FeedRate=0.50 +AmmoClassID=MissileClassID +AmmoModelFile=nrk +StandardResistance=1.0 +VoltageSource=None +WeaponDamagePoints=2.0 +ExplosionModelFile=mslhit +VitalSubsystem=False +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT3025/MODELS/AMMNRK15.SUB b/CONTENT/BT3025/MODELS/AMMNRK15.SUB new file mode 100644 index 0000000..96c70cc --- /dev/null +++ b/CONTENT/BT3025/MODELS/AMMNRK15.SUB @@ -0,0 +1,16 @@ +[AmmoBin] +Type=AmmoBinClassID +ArmorValue=20.0 +WatchedSubsystem=None +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +AmmoCount=36 +FeedRate=0.50 +AmmoClassID=MissileClassID +AmmoModelFile=nrk +StandardResistance=1.0 +VoltageSource=None +WeaponDamagePoints=2.0 +ExplosionModelFile=mslhit +VitalSubsystem=False +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT3025/MODELS/AMMNRK20.SUB b/CONTENT/BT3025/MODELS/AMMNRK20.SUB new file mode 100644 index 0000000..96c70cc --- /dev/null +++ b/CONTENT/BT3025/MODELS/AMMNRK20.SUB @@ -0,0 +1,16 @@ +[AmmoBin] +Type=AmmoBinClassID +ArmorValue=20.0 +WatchedSubsystem=None +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +AmmoCount=36 +FeedRate=0.50 +AmmoClassID=MissileClassID +AmmoModelFile=nrk +StandardResistance=1.0 +VoltageSource=None +WeaponDamagePoints=2.0 +ExplosionModelFile=mslhit +VitalSubsystem=False +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT3025/MODELS/AMMNRK5.SUB b/CONTENT/BT3025/MODELS/AMMNRK5.SUB new file mode 100644 index 0000000..a85a374 --- /dev/null +++ b/CONTENT/BT3025/MODELS/AMMNRK5.SUB @@ -0,0 +1,16 @@ +[AmmoBin] +Type=AmmoBinClassID +ArmorValue=10.0 +WatchedSubsystem=None +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +AmmoCount=36 +FeedRate=0.50 +AmmoClassID=MissileClassID +AmmoModelFile=nrk +StandardResistance=1.0 +VoltageSource=None +WeaponDamagePoints=2.0 +ExplosionModelFile=mslhit +VitalSubsystem=False +CriticalHitScoreBonus=0 \ No newline at end of file diff --git a/CONTENT/BT3025/MODELS/AMMOAC.SUB b/CONTENT/BT3025/MODELS/AMMOAC.SUB new file mode 100644 index 0000000..5415864 --- /dev/null +++ b/CONTENT/BT3025/MODELS/AMMOAC.SUB @@ -0,0 +1,15 @@ +[AmmoBin] +Type=AmmoBinClassID +ArmorValue=20.0 +StartingTemperature=300.0 +ThermalConductance=1.0 +ThermalMass=1.0 +HeatSink=None +AmmoCount=200 +FeedRate=0.50 +AmmoClassID=ProjectileClassID +AmmoModelFile=projtile +StandardResistance=1.0 +VoltageSource=None +WeaponDamagePoints=2.0 +CriticalHitScoreBonus=0 \ No newline at end of file diff --git a/CONTENT/BT3025/MODELS/AMMOAC10.SUB b/CONTENT/BT3025/MODELS/AMMOAC10.SUB new file mode 100644 index 0000000..2490fb2 --- /dev/null +++ b/CONTENT/BT3025/MODELS/AMMOAC10.SUB @@ -0,0 +1,14 @@ +[AmmoBin] +Type=AmmoBinClassID +ArmorValue=20.0 +WatchedSubsystem=None +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +AmmoCount=200 +FeedRate=0.50 +AmmoClassID=ProjectileClassID +AmmoModelFile=projtile +WeaponDamagePoints=2.0 +ExplosionModelFile=canhit +VitalSubsystem=False +CriticalHitScoreBonus=0 \ No newline at end of file diff --git a/CONTENT/BT3025/MODELS/AMMOGAUS.SUB b/CONTENT/BT3025/MODELS/AMMOGAUS.SUB new file mode 100644 index 0000000..9dec700 --- /dev/null +++ b/CONTENT/BT3025/MODELS/AMMOGAUS.SUB @@ -0,0 +1,14 @@ +[AmmoBin] +Type=AmmoBinClassID +ArmorValue=20.0 +WatchedSubsystem=None +DegradationTemperature=4000.0 +FailureTemperature=8000.0 +AmmoCount=12 +FeedRate=0.50 +AmmoClassID=ProjectileClassID +AmmoModelFile=projtile +WeaponDamagePoints=2.0 +ExplosionModelFile=mghit +VitalSubsystem=False +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT3025/MODELS/AMMOMG.SUB b/CONTENT/BT3025/MODELS/AMMOMG.SUB new file mode 100644 index 0000000..106f180 --- /dev/null +++ b/CONTENT/BT3025/MODELS/AMMOMG.SUB @@ -0,0 +1,16 @@ +[AmmoBin] +Type=AmmoBinClassID +ArmorValue=20.0 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +WatchedSubsystem=None +AmmoCount=200 +FeedRate=0.1 +AmmoClassID=ProjectileClassID +AmmoModelFile=projtile +StandardResistance=1.0 +VoltageSource=None +WeaponDamagePoints=2.0 +ExplosionModelFile=canhit +VitalSubsystem=False +CriticalHitScoreBonus=0 \ No newline at end of file diff --git a/CONTENT/BT3025/MODELS/AMMSRM2.SUB b/CONTENT/BT3025/MODELS/AMMSRM2.SUB new file mode 100644 index 0000000..a7c3dee --- /dev/null +++ b/CONTENT/BT3025/MODELS/AMMSRM2.SUB @@ -0,0 +1,16 @@ +[AmmoBin] +Type=AmmoBinClassID +ArmorValue=20.0 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +WatchedSubsystem=None +AmmoCount=24 +FeedRate=0.50 +AmmoClassID=MissileClassID +AmmoModelFile=srm +StandardResistance=1.0 +VoltageSource=None +WeaponDamagePoints=2.0 +ExplosionModelFile=mslhit +VitalSubsystem=False +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT3025/MODELS/AMMSRM25.SUB b/CONTENT/BT3025/MODELS/AMMSRM25.SUB new file mode 100644 index 0000000..5b58a6d --- /dev/null +++ b/CONTENT/BT3025/MODELS/AMMSRM25.SUB @@ -0,0 +1,16 @@ +[AmmoBin] +Type=AmmoBinClassID +ArmorValue=20.0 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +WatchedSubsystem=None +AmmoCount=25 +FeedRate=0.50 +AmmoClassID=MissileClassID +AmmoModelFile=srm +StandardResistance=1.0 +VoltageSource=None +WeaponDamagePoints=2.0 +ExplosionModelFile=mslhit +VitalSubsystem=False +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT3025/MODELS/AMMSRM30.SUB b/CONTENT/BT3025/MODELS/AMMSRM30.SUB new file mode 100644 index 0000000..e496612 --- /dev/null +++ b/CONTENT/BT3025/MODELS/AMMSRM30.SUB @@ -0,0 +1,16 @@ +[AmmoBin] +Type=AmmoBinClassID +ArmorValue=20.0 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +WatchedSubsystem=None +AmmoCount=30 +FeedRate=0.50 +AmmoClassID=MissileClassID +AmmoModelFile=srm +StandardResistance=1.0 +VoltageSource=None +WeaponDamagePoints=2.0 +ExplosionModelFile=mslhit +VitalSubsystem=False +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT3025/MODELS/AMMSRM4.SUB b/CONTENT/BT3025/MODELS/AMMSRM4.SUB new file mode 100644 index 0000000..a7c3dee --- /dev/null +++ b/CONTENT/BT3025/MODELS/AMMSRM4.SUB @@ -0,0 +1,16 @@ +[AmmoBin] +Type=AmmoBinClassID +ArmorValue=20.0 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +WatchedSubsystem=None +AmmoCount=24 +FeedRate=0.50 +AmmoClassID=MissileClassID +AmmoModelFile=srm +StandardResistance=1.0 +VoltageSource=None +WeaponDamagePoints=2.0 +ExplosionModelFile=mslhit +VitalSubsystem=False +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT3025/MODELS/AMMSRM6.SUB b/CONTENT/BT3025/MODELS/AMMSRM6.SUB new file mode 100644 index 0000000..443291c --- /dev/null +++ b/CONTENT/BT3025/MODELS/AMMSRM6.SUB @@ -0,0 +1,16 @@ +[AmmoBin] +Type=AmmoBinClassID +ArmorValue=20.0 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +WatchedSubsystem=None +AmmoCount=36 +FeedRate=0.50 +AmmoClassID=MissileClassID +AmmoModelFile=srm +StandardResistance=1.0 +VoltageSource=None +WeaponDamagePoints=2.0 +ExplosionModelFile=mslhit +VitalSubsystem=False +CriticalHitScoreBonus=0 \ No newline at end of file diff --git a/CONTENT/BT3025/MODELS/AMMSTRK2.SUB b/CONTENT/BT3025/MODELS/AMMSTRK2.SUB new file mode 100644 index 0000000..5a62292 --- /dev/null +++ b/CONTENT/BT3025/MODELS/AMMSTRK2.SUB @@ -0,0 +1,16 @@ +[AmmoBin] +Type=AmmoBinClassID +ArmorValue=20.0 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +WatchedSubsystem=None +AmmoCount=24 +FeedRate=0.50 +AmmoClassID=MissileClassID +AmmoModelFile=strk +StandardResistance=1.0 +VoltageSource=None +WeaponDamagePoints=2.0 +ExplosionModelFile=mslhit +VitalSubsystem=False +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT3025/MODELS/AMMSTRK4.SUB b/CONTENT/BT3025/MODELS/AMMSTRK4.SUB new file mode 100644 index 0000000..5a62292 --- /dev/null +++ b/CONTENT/BT3025/MODELS/AMMSTRK4.SUB @@ -0,0 +1,16 @@ +[AmmoBin] +Type=AmmoBinClassID +ArmorValue=20.0 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +WatchedSubsystem=None +AmmoCount=24 +FeedRate=0.50 +AmmoClassID=MissileClassID +AmmoModelFile=strk +StandardResistance=1.0 +VoltageSource=None +WeaponDamagePoints=2.0 +ExplosionModelFile=mslhit +VitalSubsystem=False +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT3025/MODELS/AMMSTRK6.SUB b/CONTENT/BT3025/MODELS/AMMSTRK6.SUB new file mode 100644 index 0000000..38d67ba --- /dev/null +++ b/CONTENT/BT3025/MODELS/AMMSTRK6.SUB @@ -0,0 +1,16 @@ +[AmmoBin] +Type=AmmoBinClassID +ArmorValue=20.0 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +WatchedSubsystem=None +AmmoCount=36 +FeedRate=0.50 +AmmoClassID=MissileClassID +AmmoModelFile=strk +StandardResistance=1.0 +VoltageSource=None +WeaponDamagePoints=2.0 +ExplosionModelFile=mslhit +VitalSubsystem=False +CriticalHitScoreBonus=0 \ No newline at end of file diff --git a/CONTENT/BT3025/MODELS/APC.MOD b/CONTENT/BT3025/MODELS/APC.MOD new file mode 100644 index 0000000..f2b4d3c --- /dev/null +++ b/CONTENT/BT3025/MODELS/APC.MOD @@ -0,0 +1,17 @@ +[video] +object=apc.bgf apcs.bgf +rubble=apcd.bgf + +[collision] +name=apc.sld + +[gauge] +image=apc.gim + +[gamedata] +class=CulturalIconClassID +DamageZones=trk.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=trkdead +TimeDelay=0.5 +CrunchExplosionModelFile=stephit diff --git a/CONTENT/BT3025/MODELS/AR01.MOD b/CONTENT/BT3025/MODELS/AR01.MOD new file mode 100644 index 0000000..98bc239 --- /dev/null +++ b/CONTENT/BT3025/MODELS/AR01.MOD @@ -0,0 +1,12 @@ +[video] +object=ar01.bgf ar01_FR.bgf + +[gauge] +image=ar01_ga.gim + +[collision] +name=ar01_cv.sld + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/BT3025/MODELS/AR02.MOD b/CONTENT/BT3025/MODELS/AR02.MOD new file mode 100644 index 0000000..6ff591e --- /dev/null +++ b/CONTENT/BT3025/MODELS/AR02.MOD @@ -0,0 +1,12 @@ +[video] +object=ar02.bgf ar02_FR.bgf + +[gauge] +image=ar02_ga.gim + +[collision] +name=ar02_cv.sld + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/BT3025/MODELS/AR03.MOD b/CONTENT/BT3025/MODELS/AR03.MOD new file mode 100644 index 0000000..ff9c024 --- /dev/null +++ b/CONTENT/BT3025/MODELS/AR03.MOD @@ -0,0 +1,12 @@ +[video] +object=ar03.bgf ar03_FR.bgf + +[gauge] +image=ar03_ga.gim + +[collision] +name=ar03_cv.sld + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/BT3025/MODELS/AR04.MOD b/CONTENT/BT3025/MODELS/AR04.MOD new file mode 100644 index 0000000..b9942d2 --- /dev/null +++ b/CONTENT/BT3025/MODELS/AR04.MOD @@ -0,0 +1,12 @@ +[video] +object=ar04.bgf ar04_FR.bgf + +[gauge] +image=ar04_ga.gim + +[collision] +name=ar04_cv.sld + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/BT3025/MODELS/AR05.MOD b/CONTENT/BT3025/MODELS/AR05.MOD new file mode 100644 index 0000000..208637c --- /dev/null +++ b/CONTENT/BT3025/MODELS/AR05.MOD @@ -0,0 +1,12 @@ +[video] +object=ar05.bgf ar05_FR.bgf + +[gauge] +image=ar05_ga.gim + +[collision] +name=ar05_cv.sld + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/BT3025/MODELS/ARBAN1.MOD b/CONTENT/BT3025/MODELS/ARBAN1.MOD new file mode 100644 index 0000000..08fd208 --- /dev/null +++ b/CONTENT/BT3025/MODELS/ARBAN1.MOD @@ -0,0 +1,12 @@ +[video] +object=arban1.bgf + +[collision] +name=arban_cv.sld + +[gamedata] +class=CulturalIconClassID +DamageZones=med.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=meddead +TimeDelay=0.5 diff --git a/CONTENT/BT3025/MODELS/ARBAN2.MOD b/CONTENT/BT3025/MODELS/ARBAN2.MOD new file mode 100644 index 0000000..e20bde7 --- /dev/null +++ b/CONTENT/BT3025/MODELS/ARBAN2.MOD @@ -0,0 +1,12 @@ +[video] +object=arban2.bgf + +[collision] +name=arban_cv.sld + +[gamedata] +class=CulturalIconClassID +DamageZones=med.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=meddead +TimeDelay=0.5 diff --git a/CONTENT/BT3025/MODELS/ARBAN3.MOD b/CONTENT/BT3025/MODELS/ARBAN3.MOD new file mode 100644 index 0000000..5ef6651 --- /dev/null +++ b/CONTENT/BT3025/MODELS/ARBAN3.MOD @@ -0,0 +1,12 @@ +[video] +object=arban3.bgf + +[collision] +name=arban_cv.sld + +[gamedata] +class=CulturalIconClassID +DamageZones=med.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=meddead +TimeDelay=0.5 diff --git a/CONTENT/BT3025/MODELS/ARBAN4.MOD b/CONTENT/BT3025/MODELS/ARBAN4.MOD new file mode 100644 index 0000000..11f23a9 --- /dev/null +++ b/CONTENT/BT3025/MODELS/ARBAN4.MOD @@ -0,0 +1,12 @@ +[video] +object=arban4.bgf + +[collision] +name=arban_cv.sld + +[gamedata] +class=CulturalIconClassID +DamageZones=med.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=meddead +TimeDelay=0.5 diff --git a/CONTENT/BT3025/MODELS/ARBAN5.MOD b/CONTENT/BT3025/MODELS/ARBAN5.MOD new file mode 100644 index 0000000..0ce0586 --- /dev/null +++ b/CONTENT/BT3025/MODELS/ARBAN5.MOD @@ -0,0 +1,12 @@ +[video] +object=arban5.bgf + +[collision] +name=arban_cv.sld + +[gamedata] +class=CulturalIconClassID +DamageZones=med.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=meddead +TimeDelay=0.5 diff --git a/CONTENT/BT3025/MODELS/ARBAN6.MOD b/CONTENT/BT3025/MODELS/ARBAN6.MOD new file mode 100644 index 0000000..792249c --- /dev/null +++ b/CONTENT/BT3025/MODELS/ARBAN6.MOD @@ -0,0 +1,12 @@ +[video] +object=arban6.bgf + +[collision] +name=arban_cv.sld + +[gamedata] +class=CulturalIconClassID +DamageZones=med.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=meddead +TimeDelay=0.5 diff --git a/CONTENT/BT3025/MODELS/ARCLD.MOD b/CONTENT/BT3025/MODELS/ARCLD.MOD new file mode 100644 index 0000000..b306602 --- /dev/null +++ b/CONTENT/BT3025/MODELS/ARCLD.MOD @@ -0,0 +1,5 @@ +[video] +object=arcld.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/ARENA.MOD b/CONTENT/BT3025/MODELS/ARENA.MOD new file mode 100644 index 0000000..b80251f --- /dev/null +++ b/CONTENT/BT3025/MODELS/ARENA.MOD @@ -0,0 +1,11 @@ +[video] +object=arena.bgf + +[collision] +name=arena_cv.sld + +[gauge] +image=arena_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/ARHORIZ.MOD b/CONTENT/BT3025/MODELS/ARHORIZ.MOD new file mode 100644 index 0000000..62c3e58 --- /dev/null +++ b/CONTENT/BT3025/MODELS/ARHORIZ.MOD @@ -0,0 +1,5 @@ +[video] +object=arhoriz.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/ARLID.MOD b/CONTENT/BT3025/MODELS/ARLID.MOD new file mode 100644 index 0000000..d5ec25a --- /dev/null +++ b/CONTENT/BT3025/MODELS/ARLID.MOD @@ -0,0 +1,8 @@ +[video] +object=arlid.bgf + +[collision] +name=arlid_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/ARMOR1.DMG b/CONTENT/BT3025/MODELS/ARMOR1.DMG new file mode 100644 index 0000000..f3a81d4 --- /dev/null +++ b/CONTENT/BT3025/MODELS/ARMOR1.DMG @@ -0,0 +1,4 @@ +[default] +WeaponDamagePoints=10 +VitalDamageZone=True + diff --git a/CONTENT/BT3025/MODELS/ARMRMOVR.MOD b/CONTENT/BT3025/MODELS/ARMRMOVR.MOD new file mode 100644 index 0000000..67e6f23 --- /dev/null +++ b/CONTENT/BT3025/MODELS/ARMRMOVR.MOD @@ -0,0 +1,17 @@ +[video] +object=ARMRMOVR.bgf armrs.bgf +rubble=ARMRD.bgf + +[collision] +name=ARMRMOVR.sld + +[gauge] +image=armrmovr.gim + +[gamedata] +class=CulturalIconClassID +DamageZones=trk.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=trkdead +TimeDelay=0.5 +CrunchExplosionModelFile=stephit diff --git a/CONTENT/BT3025/MODELS/ARWC.MOD b/CONTENT/BT3025/MODELS/ARWC.MOD new file mode 100644 index 0000000..beee64d --- /dev/null +++ b/CONTENT/BT3025/MODELS/ARWC.MOD @@ -0,0 +1,5 @@ +[video] +object=arwc.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/ATTACKER.MOD b/CONTENT/BT3025/MODELS/ATTACKER.MOD new file mode 100644 index 0000000..286683e --- /dev/null +++ b/CONTENT/BT3025/MODELS/ATTACKER.MOD @@ -0,0 +1,8 @@ +[gamedata] +class=ScenarioRoleClassID +KillBonus=500.0 +DamageReceivedModifier=1.0 +DamageInflictedModifier=1.0 +DamageBias=1.0 +FriendlyFirePenalty=1.0 +ReturnFromDeath=100 diff --git a/CONTENT/BT3025/MODELS/AVA1DEAD.MOD b/CONTENT/BT3025/MODELS/AVA1DEAD.MOD new file mode 100644 index 0000000..e70cd7c --- /dev/null +++ b/CONTENT/BT3025/MODELS/AVA1DEAD.MOD @@ -0,0 +1,9 @@ +[video] +object=104 3 4 5 1007 15 1001 + +[audio] +external=brnext.scp + +[gamedata] +class=ExplosionClassID +ExplosionDuration=44.0 diff --git a/CONTENT/BT3025/MODELS/AVA1DMG.EXP b/CONTENT/BT3025/MODELS/AVA1DMG.EXP new file mode 100644 index 0000000..c9b1598 --- /dev/null +++ b/CONTENT/BT3025/MODELS/AVA1DMG.EXP @@ -0,0 +1,28 @@ +[OneDamage] +ExplosionModelFile=dam1hit +DamageLevel=0.2 +TimeDelay=0.0 + +[TwoDamage] +ExplosionModelFile=dam2hit +DamageLevel=0.4 +TimeDelay=0.0 + +[ThreeDamage] +ExplosionModelFile=dam3hit +DamageLevel=0.6 +TimeDelay=0.0 + +[FourDamage] +ExplosionModelFile=dam4hit +DamageLevel=0.8 +TimeDelay=0.0 + +[DestroyedExplosion] +ExplosionModelFile=desthit +GraphicState=Destroyed + +[GoneExplosion] +ExplosionModelFile=desthit +GraphicState=Gone + diff --git a/CONTENT/BT3025/MODELS/AVA1THR.CTL b/CONTENT/BT3025/MODELS/AVA1THR.CTL new file mode 100644 index 0000000..55a98ef --- /dev/null +++ b/CONTENT/BT3025/MODELS/AVA1THR.CTL @@ -0,0 +1,57 @@ +[StickPosition_JP] +IOMapping=JoystickPhysical +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=StickPosition +Mode=ModeAlwaysActive + +[TorsoLeft_BJHL] +IOMapping=ButtonJoystickHatLeft +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoLeft +Mode=ModeAlwaysActive + +[TorsoRight_BJHR] +IOMapping=ButtonJoystickHatRight +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoRight +Mode=ModeAlwaysActive + +[AFC100_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=AFC100 +AttributeID=TriggerState +Mode=ModeNonMapping +[PPC_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=PPC +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[SRM2_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=SRM2 +AttributeID=TriggerState +Mode=ModeNonMapping +[LRM5_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=LRM5 +AttributeID=TriggerState +Mode=ModeNonMapping diff --git a/CONTENT/BT3025/MODELS/AVA2DEAD.MOD b/CONTENT/BT3025/MODELS/AVA2DEAD.MOD new file mode 100644 index 0000000..e70cd7c --- /dev/null +++ b/CONTENT/BT3025/MODELS/AVA2DEAD.MOD @@ -0,0 +1,9 @@ +[video] +object=104 3 4 5 1007 15 1001 + +[audio] +external=brnext.scp + +[gamedata] +class=ExplosionClassID +ExplosionDuration=44.0 diff --git a/CONTENT/BT3025/MODELS/AVA2DMG.EXP b/CONTENT/BT3025/MODELS/AVA2DMG.EXP new file mode 100644 index 0000000..c9b1598 --- /dev/null +++ b/CONTENT/BT3025/MODELS/AVA2DMG.EXP @@ -0,0 +1,28 @@ +[OneDamage] +ExplosionModelFile=dam1hit +DamageLevel=0.2 +TimeDelay=0.0 + +[TwoDamage] +ExplosionModelFile=dam2hit +DamageLevel=0.4 +TimeDelay=0.0 + +[ThreeDamage] +ExplosionModelFile=dam3hit +DamageLevel=0.6 +TimeDelay=0.0 + +[FourDamage] +ExplosionModelFile=dam4hit +DamageLevel=0.8 +TimeDelay=0.0 + +[DestroyedExplosion] +ExplosionModelFile=desthit +GraphicState=Destroyed + +[GoneExplosion] +ExplosionModelFile=desthit +GraphicState=Gone + diff --git a/CONTENT/BT3025/MODELS/AVA2THR.CTL b/CONTENT/BT3025/MODELS/AVA2THR.CTL new file mode 100644 index 0000000..016aba8 --- /dev/null +++ b/CONTENT/BT3025/MODELS/AVA2THR.CTL @@ -0,0 +1,81 @@ +[StickPosition_JP] +IOMapping=JoystickPhysical +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=StickPosition +Mode=ModeAlwaysActive + +[TorsoLeft_BJHL] +IOMapping=ButtonJoystickHatLeft +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoLeft +Mode=ModeAlwaysActive + +[TorsoRight_BJHR] +IOMapping=ButtonJoystickHatRight +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoRight +Mode=ModeAlwaysActive + +[AFC5_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=AFC5_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[AFC5_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=AFC5_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[AFC5_3_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=AFC5_3 +AttributeID=TriggerState +Mode=ModeNonMapping +[AFC5_4_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=AFC5_4 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[NRK5_1_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=NRK5_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[NRK5_2_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=NRK5_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[NRK5_3_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=NRK5_3 +AttributeID=TriggerState +Mode=ModeNonMapping +[NRK5_4_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=NRK5_4 +AttributeID=TriggerState +Mode=ModeNonMapping diff --git a/CONTENT/BT3025/MODELS/AVADEAD.MOD b/CONTENT/BT3025/MODELS/AVADEAD.MOD new file mode 100644 index 0000000..83959ea --- /dev/null +++ b/CONTENT/BT3025/MODELS/AVADEAD.MOD @@ -0,0 +1,9 @@ +[video] +object=104 3 4 5 1007 15 1001 + +[audio] +external=brnext.scp + +[gamedata] +class=ExplosionClassID +ExplosionDuration=9.0 diff --git a/CONTENT/BT3025/MODELS/AVADMG.EXP b/CONTENT/BT3025/MODELS/AVADMG.EXP new file mode 100644 index 0000000..c9b1598 --- /dev/null +++ b/CONTENT/BT3025/MODELS/AVADMG.EXP @@ -0,0 +1,28 @@ +[OneDamage] +ExplosionModelFile=dam1hit +DamageLevel=0.2 +TimeDelay=0.0 + +[TwoDamage] +ExplosionModelFile=dam2hit +DamageLevel=0.4 +TimeDelay=0.0 + +[ThreeDamage] +ExplosionModelFile=dam3hit +DamageLevel=0.6 +TimeDelay=0.0 + +[FourDamage] +ExplosionModelFile=dam4hit +DamageLevel=0.8 +TimeDelay=0.0 + +[DestroyedExplosion] +ExplosionModelFile=desthit +GraphicState=Destroyed + +[GoneExplosion] +ExplosionModelFile=desthit +GraphicState=Gone + diff --git a/CONTENT/BT3025/MODELS/AVATHR.CTL b/CONTENT/BT3025/MODELS/AVATHR.CTL new file mode 100644 index 0000000..91b2b9e --- /dev/null +++ b/CONTENT/BT3025/MODELS/AVATHR.CTL @@ -0,0 +1,75 @@ +[StickPosition_JP] +IOMapping=JoystickPhysical +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=StickPosition +Mode=ModeAlwaysActive + +[TorsoLeft_BJHL] +IOMapping=ButtonJoystickHatLeft +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoLeft +Mode=ModeAlwaysActive + +[TorsoRight_BJHR] +IOMapping=ButtonJoystickHatRight +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoRight +Mode=ModeAlwaysActive + +[AFC50_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=AFC50 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERLLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERLLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERLLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERLLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_3_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_3 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_4_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_4 +AttributeID=TriggerState +Mode=ModeNonMapping +[LRM10_1_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=LRM10_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[LRM10_2_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=LRM10_2 +AttributeID=TriggerState +Mode=ModeNonMapping diff --git a/CONTENT/BT3025/MODELS/AW01.MOD b/CONTENT/BT3025/MODELS/AW01.MOD new file mode 100644 index 0000000..95e6a50 --- /dev/null +++ b/CONTENT/BT3025/MODELS/AW01.MOD @@ -0,0 +1,8 @@ +[video] +object=aw01.bgf + +[gauge] +image=aw01_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/AW02.MOD b/CONTENT/BT3025/MODELS/AW02.MOD new file mode 100644 index 0000000..a7a0bae --- /dev/null +++ b/CONTENT/BT3025/MODELS/AW02.MOD @@ -0,0 +1,8 @@ +[video] +object=aw02.bgf + +[gauge] +image=aw02_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/AW03.MOD b/CONTENT/BT3025/MODELS/AW03.MOD new file mode 100644 index 0000000..2c92604 --- /dev/null +++ b/CONTENT/BT3025/MODELS/AW03.MOD @@ -0,0 +1,11 @@ +[video] +object=aw03.bgf + +[collision] +name=aw03_cv.sld + +[gauge] +image=aw03_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/AW04.MOD b/CONTENT/BT3025/MODELS/AW04.MOD new file mode 100644 index 0000000..3655fb3 --- /dev/null +++ b/CONTENT/BT3025/MODELS/AW04.MOD @@ -0,0 +1,8 @@ +[video] +object=aw04.bgf + +[gauge] +image=aw04_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/AW05.MOD b/CONTENT/BT3025/MODELS/AW05.MOD new file mode 100644 index 0000000..063aa31 --- /dev/null +++ b/CONTENT/BT3025/MODELS/AW05.MOD @@ -0,0 +1,12 @@ +[video] +object=aw05.bgf + +[gauge] +image=aw05_ga.gim + +[collision] +name=aw05_cv.sld + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/BT3025/MODELS/AWBOX1.MOD b/CONTENT/BT3025/MODELS/AWBOX1.MOD new file mode 100644 index 0000000..7293753 --- /dev/null +++ b/CONTENT/BT3025/MODELS/AWBOX1.MOD @@ -0,0 +1,8 @@ +[video] +object=awbox1.bgf + +[collision] +name=awbox_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/AWWLK1.MOD b/CONTENT/BT3025/MODELS/AWWLK1.MOD new file mode 100644 index 0000000..42de51d --- /dev/null +++ b/CONTENT/BT3025/MODELS/AWWLK1.MOD @@ -0,0 +1,9 @@ +[video] +object=awwlk1.bgf + +[gamedata] +class=CulturalIconClassID +DamageZones=med.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=meddead +TimeDelay=0.5 diff --git a/CONTENT/BT3025/MODELS/BAC1.MOD b/CONTENT/BT3025/MODELS/BAC1.MOD new file mode 100644 index 0000000..0cb4c5b --- /dev/null +++ b/CONTENT/BT3025/MODELS/BAC1.MOD @@ -0,0 +1,12 @@ +[video] +object=bac1.bgf + +[collision] +name=bac1_cv.sld + +[gamedata] +class=CulturalIconClassID +DamageZones=med.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=meddead +TimeDelay=0.1 diff --git a/CONTENT/BT3025/MODELS/BATDMG.EXP b/CONTENT/BT3025/MODELS/BATDMG.EXP new file mode 100644 index 0000000..c9b1598 --- /dev/null +++ b/CONTENT/BT3025/MODELS/BATDMG.EXP @@ -0,0 +1,28 @@ +[OneDamage] +ExplosionModelFile=dam1hit +DamageLevel=0.2 +TimeDelay=0.0 + +[TwoDamage] +ExplosionModelFile=dam2hit +DamageLevel=0.4 +TimeDelay=0.0 + +[ThreeDamage] +ExplosionModelFile=dam3hit +DamageLevel=0.6 +TimeDelay=0.0 + +[FourDamage] +ExplosionModelFile=dam4hit +DamageLevel=0.8 +TimeDelay=0.0 + +[DestroyedExplosion] +ExplosionModelFile=desthit +GraphicState=Destroyed + +[GoneExplosion] +ExplosionModelFile=desthit +GraphicState=Gone + diff --git a/CONTENT/BT3025/MODELS/BATTHR.CTL b/CONTENT/BT3025/MODELS/BATTHR.CTL new file mode 100644 index 0000000..82c9fdf --- /dev/null +++ b/CONTENT/BT3025/MODELS/BATTHR.CTL @@ -0,0 +1,57 @@ +[StickPosition_JP] +IOMapping=JoystickPhysical +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=StickPosition +Mode=ModeAlwaysActive + +[TorsoLeft_BJHL] +IOMapping=ButtonJoystickHatLeft +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoLeft +Mode=ModeAlwaysActive + +[TorsoRight_BJHR] +IOMapping=ButtonJoystickHatRight +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoRight +Mode=ModeAlwaysActive + +[PPC_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=PPC_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[PPC_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=PPC_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[LRM15_1_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=LRM15_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[LRM15_2_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=LRM15_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[LRM15_3_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=LRM15_3 +AttributeID=TriggerState +Mode=ModeNonMapping +[LRM15_4_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=LRM15_4 +AttributeID=TriggerState +Mode=ModeNonMapping diff --git a/CONTENT/BT3025/MODELS/BCOR1.MOD b/CONTENT/BT3025/MODELS/BCOR1.MOD new file mode 100644 index 0000000..4b8919c --- /dev/null +++ b/CONTENT/BT3025/MODELS/BCOR1.MOD @@ -0,0 +1,8 @@ +[video] +object=bcor1.bgf + +[collision] +name=bcor1_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/BCOR2.MOD b/CONTENT/BT3025/MODELS/BCOR2.MOD new file mode 100644 index 0000000..6d48e91 --- /dev/null +++ b/CONTENT/BT3025/MODELS/BCOR2.MOD @@ -0,0 +1,8 @@ +[video] +object=bcor2.bgf + +[collision] +name=bcor2_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/BDET1.MOD b/CONTENT/BT3025/MODELS/BDET1.MOD new file mode 100644 index 0000000..f88539c --- /dev/null +++ b/CONTENT/BT3025/MODELS/BDET1.MOD @@ -0,0 +1,5 @@ +[video] +object=bdet1.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/BDET2.MOD b/CONTENT/BT3025/MODELS/BDET2.MOD new file mode 100644 index 0000000..b017e02 --- /dev/null +++ b/CONTENT/BT3025/MODELS/BDET2.MOD @@ -0,0 +1,5 @@ +[video] +object=bdet2.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/BDET3.MOD b/CONTENT/BT3025/MODELS/BDET3.MOD new file mode 100644 index 0000000..dde7871 --- /dev/null +++ b/CONTENT/BT3025/MODELS/BDET3.MOD @@ -0,0 +1,5 @@ +[video] +object=bdet3.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/BDET4.MOD b/CONTENT/BT3025/MODELS/BDET4.MOD new file mode 100644 index 0000000..106d452 --- /dev/null +++ b/CONTENT/BT3025/MODELS/BDET4.MOD @@ -0,0 +1,12 @@ +[video] +object=bdet4.bgf + +[collision] +name=bdet4_cv.sld + +[gamedata] +class=CulturalIconClassID +DamageZones=med.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=meddead +TimeDelay=0.5 diff --git a/CONTENT/BT3025/MODELS/BDET6.MOD b/CONTENT/BT3025/MODELS/BDET6.MOD new file mode 100644 index 0000000..7b2239b --- /dev/null +++ b/CONTENT/BT3025/MODELS/BDET6.MOD @@ -0,0 +1,5 @@ +[video] +object=bdet6.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/BHK1DEAD.MOD b/CONTENT/BT3025/MODELS/BHK1DEAD.MOD new file mode 100644 index 0000000..e70cd7c --- /dev/null +++ b/CONTENT/BT3025/MODELS/BHK1DEAD.MOD @@ -0,0 +1,9 @@ +[video] +object=104 3 4 5 1007 15 1001 + +[audio] +external=brnext.scp + +[gamedata] +class=ExplosionClassID +ExplosionDuration=44.0 diff --git a/CONTENT/BT3025/MODELS/BHK1DMG.EXP b/CONTENT/BT3025/MODELS/BHK1DMG.EXP new file mode 100644 index 0000000..c9b1598 --- /dev/null +++ b/CONTENT/BT3025/MODELS/BHK1DMG.EXP @@ -0,0 +1,28 @@ +[OneDamage] +ExplosionModelFile=dam1hit +DamageLevel=0.2 +TimeDelay=0.0 + +[TwoDamage] +ExplosionModelFile=dam2hit +DamageLevel=0.4 +TimeDelay=0.0 + +[ThreeDamage] +ExplosionModelFile=dam3hit +DamageLevel=0.6 +TimeDelay=0.0 + +[FourDamage] +ExplosionModelFile=dam4hit +DamageLevel=0.8 +TimeDelay=0.0 + +[DestroyedExplosion] +ExplosionModelFile=desthit +GraphicState=Destroyed + +[GoneExplosion] +ExplosionModelFile=desthit +GraphicState=Gone + diff --git a/CONTENT/BT3025/MODELS/BHK1THR.CTL b/CONTENT/BT3025/MODELS/BHK1THR.CTL new file mode 100644 index 0000000..759e57e --- /dev/null +++ b/CONTENT/BT3025/MODELS/BHK1THR.CTL @@ -0,0 +1,63 @@ +[StickPosition_JP] +IOMapping=JoystickPhysical +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=StickPosition +Mode=ModeAlwaysActive + +[TorsoLeft_BJHL] +IOMapping=ButtonJoystickHatLeft +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoLeft +Mode=ModeAlwaysActive + +[TorsoRight_BJHR] +IOMapping=ButtonJoystickHatRight +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoRight +Mode=ModeAlwaysActive + +[PPC_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=PPC_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[PPC_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=PPC_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_3_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_3 +AttributeID=TriggerState +Mode=ModeNonMapping +[SRM6_1_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=SRM6_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[SRM6_2_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=SRM6_2 +AttributeID=TriggerState +Mode=ModeNonMapping diff --git a/CONTENT/BT3025/MODELS/BIGDEAD.MOD b/CONTENT/BT3025/MODELS/BIGDEAD.MOD new file mode 100644 index 0000000..5148fa9 --- /dev/null +++ b/CONTENT/BT3025/MODELS/BIGDEAD.MOD @@ -0,0 +1,11 @@ +[video] +object=1017 1016 + +[audio] +external=bigexp.scp + +[gamedata] +class=ExplosionClassID +// Audio requires ExplosionDuration >= 5.0 +ExplosionDuration=5.0 + diff --git a/CONTENT/BT3025/MODELS/BLD.MOD b/CONTENT/BT3025/MODELS/BLD.MOD new file mode 100644 index 0000000..f611d4d --- /dev/null +++ b/CONTENT/BT3025/MODELS/BLD.MOD @@ -0,0 +1,20 @@ +[video] +; +; hn1.mod - Warehouse +; +object=hn1.bgf hn1_FR.bgf hn1_LP.bgf +rubble=hn1d.bgf hn1d_FR.bgf + +[collision] +name=hn1_cv.sld + +[gauge] +image=hn1_ga.gim + +[gamedata] +class=CulturalIconClassID +DamageZones=med.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=meddead +TimeDelay=0.5 +CrunchExplosionModelFile=stephit diff --git a/CONTENT/BT3025/MODELS/BLD01.MOD b/CONTENT/BT3025/MODELS/BLD01.MOD new file mode 100644 index 0000000..aa0c126 --- /dev/null +++ b/CONTENT/BT3025/MODELS/BLD01.MOD @@ -0,0 +1,10 @@ +[video] +; +; bld01.mod +; +object=bld01.bgf + + +[gamedata] +class=UnscalableTerrainClassID + \ No newline at end of file diff --git a/CONTENT/BT3025/MODELS/BLD02.MOD b/CONTENT/BT3025/MODELS/BLD02.MOD new file mode 100644 index 0000000..62709c0 --- /dev/null +++ b/CONTENT/BT3025/MODELS/BLD02.MOD @@ -0,0 +1,10 @@ +[video] +; +; bld02.mod +; +object=bld02.bgf + + +[gamedata] +class=UnscalableTerrainClassID + \ No newline at end of file diff --git a/CONTENT/BT3025/MODELS/BLD03.MOD b/CONTENT/BT3025/MODELS/BLD03.MOD new file mode 100644 index 0000000..15a8339 --- /dev/null +++ b/CONTENT/BT3025/MODELS/BLD03.MOD @@ -0,0 +1,18 @@ +[video] +; +object=bld03.bgf +rubble=bld03d.bgf + +[collision] +name=bld03_cv.sld + +[gauge] +image=bld03_ga.gim + +[gamedata] +class=CulturalIconClassID +DamageZones=med.dmg +StoppingCollisionVolume=1 +ExplosionModelFile=bigdead +TimeDelay=0.5 +CrunchExplosionModelFile=stephit diff --git a/CONTENT/BT3025/MODELS/BLD04.MOD b/CONTENT/BT3025/MODELS/BLD04.MOD new file mode 100644 index 0000000..63e60e7 --- /dev/null +++ b/CONTENT/BT3025/MODELS/BLD04.MOD @@ -0,0 +1,20 @@ +[video] +; +; bld04.mod - Warehouse +; +object=bld04.bgf +rubble=bld04d.bgf + +[collision] +name=bld04_cv.sld + +[gauge] +image=bld04_ga.gim + +[gamedata] +class=CulturalIconClassID +DamageZones=med.dmg +StoppingCollisionVolume=1 +ExplosionModelFile=bigdead +TimeDelay=0.5 +CrunchExplosionModelFile=stephit diff --git a/CONTENT/BT3025/MODELS/BLD05.MOD b/CONTENT/BT3025/MODELS/BLD05.MOD new file mode 100644 index 0000000..6855440 --- /dev/null +++ b/CONTENT/BT3025/MODELS/BLD05.MOD @@ -0,0 +1,9 @@ +[video] +; +; bld05.mod +; +object=bld05.bgf + +[gamedata] +class=UnscalableTerrainClassID + \ No newline at end of file diff --git a/CONTENT/BT3025/MODELS/BLD06.MOD b/CONTENT/BT3025/MODELS/BLD06.MOD new file mode 100644 index 0000000..bf72370 --- /dev/null +++ b/CONTENT/BT3025/MODELS/BLD06.MOD @@ -0,0 +1,15 @@ +[video] +; +; bld06.mod +; +object=bld06.bgf + +[collision] +name=bld06_cv.sld + +[gauge] +image=bld06_ga.gim + +[gamedata] +class=UnscalableTerrainClassID + \ No newline at end of file diff --git a/CONTENT/BT3025/MODELS/BLD08.MOD b/CONTENT/BT3025/MODELS/BLD08.MOD new file mode 100644 index 0000000..0adb1f5 --- /dev/null +++ b/CONTENT/BT3025/MODELS/BLD08.MOD @@ -0,0 +1,14 @@ +[video] +; +; bld08.mod +; +object=bld08.bgf bld08_lp.bgf + +[collision] +name=bld08_cv.sld + +[gauge] +image=bld08_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/BLD20.MOD b/CONTENT/BT3025/MODELS/BLD20.MOD new file mode 100644 index 0000000..da08b9a --- /dev/null +++ b/CONTENT/BT3025/MODELS/BLD20.MOD @@ -0,0 +1,20 @@ +[video] +; +; bld20.mod - Warehouse +; +object=bld20.bgf +rubble=bld20d.bgf + +[collision] +name=bld20_cv.sld + +[gauge] +image=bld20_ga.gim + +[gamedata] +class=CulturalIconClassID +DamageZones=med.dmg +StoppingCollisionVolume=1 +ExplosionModelFile=bigdead +TimeDelay=0.5 +CrunchExplosionModelFile=stephit diff --git a/CONTENT/BT3025/MODELS/BLD24.MOD b/CONTENT/BT3025/MODELS/BLD24.MOD new file mode 100644 index 0000000..cf2de2e --- /dev/null +++ b/CONTENT/BT3025/MODELS/BLD24.MOD @@ -0,0 +1,20 @@ +[video] +; +; bld24.mod - Warehouse +; +object=bld24.bgf +rubble=bld24d.bgf + +[collision] +name=bld24_cv.sld + +[gauge] +image=bld24_ga.gim + +[gamedata] +class=CulturalIconClassID +DamageZones=med.dmg +StoppingCollisionVolume=1 +ExplosionModelFile=bigdead +TimeDelay=0.5 +CrunchExplosionModelFile=stephit diff --git a/CONTENT/BT3025/MODELS/BLD26.MOD b/CONTENT/BT3025/MODELS/BLD26.MOD new file mode 100644 index 0000000..62c0194 --- /dev/null +++ b/CONTENT/BT3025/MODELS/BLD26.MOD @@ -0,0 +1,21 @@ +[video] +; +; bld26.mod - Warehouse +; +object=bld26.bgf +rubble=bld26d.bgf + +[collision] +name=bld26_cv.sld + +[gauge] +image=bld26_ga.gim + +[gamedata] +class=CulturalIconClassID +DamageZones=med.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=meddead +TimeDelay=0.5 +CrunchExplosionModelFile=stephit + \ No newline at end of file diff --git a/CONTENT/BT3025/MODELS/BLD27.MOD b/CONTENT/BT3025/MODELS/BLD27.MOD new file mode 100644 index 0000000..9c7e1b6 --- /dev/null +++ b/CONTENT/BT3025/MODELS/BLD27.MOD @@ -0,0 +1,14 @@ +[video] +; +; bld27.mod +; +object=bld27.bgf + +[collision] +name=bld27_cv.sld + +[gauge] +image=bld27_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/BLHDEAD.MOD b/CONTENT/BT3025/MODELS/BLHDEAD.MOD new file mode 100644 index 0000000..83959ea --- /dev/null +++ b/CONTENT/BT3025/MODELS/BLHDEAD.MOD @@ -0,0 +1,9 @@ +[video] +object=104 3 4 5 1007 15 1001 + +[audio] +external=brnext.scp + +[gamedata] +class=ExplosionClassID +ExplosionDuration=9.0 diff --git a/CONTENT/BT3025/MODELS/BLHDMG.EXP b/CONTENT/BT3025/MODELS/BLHDMG.EXP new file mode 100644 index 0000000..c9b1598 --- /dev/null +++ b/CONTENT/BT3025/MODELS/BLHDMG.EXP @@ -0,0 +1,28 @@ +[OneDamage] +ExplosionModelFile=dam1hit +DamageLevel=0.2 +TimeDelay=0.0 + +[TwoDamage] +ExplosionModelFile=dam2hit +DamageLevel=0.4 +TimeDelay=0.0 + +[ThreeDamage] +ExplosionModelFile=dam3hit +DamageLevel=0.6 +TimeDelay=0.0 + +[FourDamage] +ExplosionModelFile=dam4hit +DamageLevel=0.8 +TimeDelay=0.0 + +[DestroyedExplosion] +ExplosionModelFile=desthit +GraphicState=Destroyed + +[GoneExplosion] +ExplosionModelFile=desthit +GraphicState=Gone + diff --git a/CONTENT/BT3025/MODELS/BLHTHR.CTL b/CONTENT/BT3025/MODELS/BLHTHR.CTL new file mode 100644 index 0000000..4aa4255 --- /dev/null +++ b/CONTENT/BT3025/MODELS/BLHTHR.CTL @@ -0,0 +1,81 @@ +[StickPosition_JP] +IOMapping=JoystickPhysical +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=StickPosition +Mode=ModeAlwaysActive + +[TorsoLeft_BJHL] +IOMapping=ButtonJoystickHatLeft +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoLeft +Mode=ModeAlwaysActive + +[TorsoRight_BJHR] +IOMapping=ButtonJoystickHatRight +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoRight +Mode=ModeAlwaysActive + +[ERLLaser_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERLLaser +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_3_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_3 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_4_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_4 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_5_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_5 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[SRM6_1_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=SRM6_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[SRM6_2_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=SRM6_2 +AttributeID=TriggerState +Mode=ModeNonMapping diff --git a/CONTENT/BT3025/MODELS/BNK.MOD b/CONTENT/BT3025/MODELS/BNK.MOD new file mode 100644 index 0000000..043260e --- /dev/null +++ b/CONTENT/BT3025/MODELS/BNK.MOD @@ -0,0 +1,20 @@ +[video] +; +; bnk.mod - Bunker +; +object=bnk.bgf bnk_FR.bgf bnk_LP.bgf +rubble=bnkd.bgf bnkd_FR.bgf + +[collision] +name=bnk_cv.sld + +[gauge] +image=bnk_ga.gim + +[gamedata] +class=CulturalIconClassID +DamageZones=med.dmg +StoppingCollisionVolume=1 +ExplosionModelFile=smldead +TimeDelay=0.5 +//CrunchExplosionModelFile=stephit diff --git a/CONTENT/BT3025/MODELS/BPIP1.MOD b/CONTENT/BT3025/MODELS/BPIP1.MOD new file mode 100644 index 0000000..7069568 --- /dev/null +++ b/CONTENT/BT3025/MODELS/BPIP1.MOD @@ -0,0 +1,12 @@ +[video] +object=bpip1.bgf +rubble=bpip1d.bgf +[collision] +name=bpip1_cv.sld + +[gamedata] +class=CulturalIconClassID +DamageZones=med.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=meddead +TimeDelay=0.5 diff --git a/CONTENT/BT3025/MODELS/BULLDOG.MOD b/CONTENT/BT3025/MODELS/BULLDOG.MOD new file mode 100644 index 0000000..8b630a7 --- /dev/null +++ b/CONTENT/BT3025/MODELS/BULLDOG.MOD @@ -0,0 +1,18 @@ +[video] +object=BULLDOG.bgf bulls.bgf +rubble=BULLD.bgf + +[collision] +name=BULLDOG.sld + +[gauge] +image=bulldog.gim + +[gamedata] +class=CulturalIconClassID +DamageZones=trk.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=trkdead +TimeDelay=0.5 +CrunchExplosionModelFile=stephit + \ No newline at end of file diff --git a/CONTENT/BT3025/MODELS/BUTTEA.MOD b/CONTENT/BT3025/MODELS/BUTTEA.MOD new file mode 100644 index 0000000..219d736 --- /dev/null +++ b/CONTENT/BT3025/MODELS/BUTTEA.MOD @@ -0,0 +1,11 @@ +[video] +object=buttea.bgf + +[collision] +name=buttea_c.sld + +[gauge] +image=buttea_g.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/BUTTEB.MOD b/CONTENT/BT3025/MODELS/BUTTEB.MOD new file mode 100644 index 0000000..5a7fcbe --- /dev/null +++ b/CONTENT/BT3025/MODELS/BUTTEB.MOD @@ -0,0 +1,11 @@ +[video] +object=butteb.bgf + +[collision] +name=butteb_c.sld + +[gauge] +image=butteb_g.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/BUTTEC.MOD b/CONTENT/BT3025/MODELS/BUTTEC.MOD new file mode 100644 index 0000000..8f06bd6 --- /dev/null +++ b/CONTENT/BT3025/MODELS/BUTTEC.MOD @@ -0,0 +1,11 @@ +[video] +object=buttec.bgf + +[collision] +name=buttec_c.sld + +[gauge] +image=buttec_g.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/BUTTED.MOD b/CONTENT/BT3025/MODELS/BUTTED.MOD new file mode 100644 index 0000000..e5851b4 --- /dev/null +++ b/CONTENT/BT3025/MODELS/BUTTED.MOD @@ -0,0 +1,11 @@ +[video] +object=butted.bgf + +[collision] +name=butted_c.sld + +[gauge] +image=butted_g.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/BUTTEE.MOD b/CONTENT/BT3025/MODELS/BUTTEE.MOD new file mode 100644 index 0000000..a2f8278 --- /dev/null +++ b/CONTENT/BT3025/MODELS/BUTTEE.MOD @@ -0,0 +1,11 @@ +[video] +object=buttee.bgf + +[collision] +name=buttee_c.sld + +[gauge] +image=buttee_g.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/BUTTEEU.MOD b/CONTENT/BT3025/MODELS/BUTTEEU.MOD new file mode 100644 index 0000000..05c2091 --- /dev/null +++ b/CONTENT/BT3025/MODELS/BUTTEEU.MOD @@ -0,0 +1,5 @@ +[video] +object=buttee.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/BUTTEF.MOD b/CONTENT/BT3025/MODELS/BUTTEF.MOD new file mode 100644 index 0000000..94f74a5 --- /dev/null +++ b/CONTENT/BT3025/MODELS/BUTTEF.MOD @@ -0,0 +1,9 @@ +[video] +object=buttef.bgf + +[collision] +name=butted_c.sld + +[gamedata] +class=UnscalableTerrainClassID + \ No newline at end of file diff --git a/CONTENT/BT3025/MODELS/BWLK1.MOD b/CONTENT/BT3025/MODELS/BWLK1.MOD new file mode 100644 index 0000000..feca01f --- /dev/null +++ b/CONTENT/BT3025/MODELS/BWLK1.MOD @@ -0,0 +1,12 @@ +[video] +object=bwlk1.bgf + +[collision] +name=bwlk1_cv.sld + +[gamedata] +class=CulturalIconClassID +DamageZones=med.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=meddead +TimeDelay=0.5 diff --git a/CONTENT/BT3025/MODELS/CALP.DMG b/CONTENT/BT3025/MODELS/CALP.DMG new file mode 100644 index 0000000..b884884 --- /dev/null +++ b/CONTENT/BT3025/MODELS/CALP.DMG @@ -0,0 +1,34 @@ +// This file is intentionally empty and MUST be read-only! +[dz_missle] +ExplosionTable=calpdmg.exp +DefaultEffectSiteName=siteedz_missle +WeaponDamagePoints=75 +VitalDamageZone=True +LegDamageZone=RightLeg +CriticalSubsystem=HeatSink 100 1.000000 +CriticalSubsystem=Reservoir 10 1.000000 +CriticalSubsystem=Condenser1 2 1.000000 +CriticalSubsystem=Condenser2 2 1.000000 +CriticalSubsystem=Condenser3 2 1.000000 +CriticalSubsystem=Condenser4 2 1.000000 +CriticalSubsystem=Condenser5 2 1.000000 +CriticalSubsystem=Condenser6 2 1.000000 +CriticalSubsystem=GeneratorA 10 1.000000 +CriticalSubsystem=GeneratorB 10 1.000000 +CriticalSubsystem=GeneratorC 10 1.000000 +CriticalSubsystem=GeneratorD 10 1.000000 +CriticalSubsystem=Myomers 15 1.000000 +CriticalSubsystem=Avionics 5 1.000000 +CriticalSubsystem=Gyroscope 30 1.000000 +CriticalSubsystem=HUD 15 1.000000 +CriticalSubsystem=Torso 15 1.000000 +CriticalSubsystem=Searchlight 45 1.000000 +CriticalSubsystem=ThermalSight 30 1.000000 +CriticalSubsystem=AmmoBinLRM20_1 15 1.000000 +CriticalSubsystem=LRM20_1 15 1.000000 +CriticalSubsystem=AmmoBinLRM20_2 15 1.000000 +CriticalSubsystem=LRM20_2 15 1.000000 +CriticalSubsystem=AmmoBinLRM20_3 15 1.000000 +CriticalSubsystem=LRM20_3 15 1.000000 +CriticalSubsystem=AmmoBinLRM20_4 15 1.000000 +CriticalSubsystem=LRM20_4 15 1.000000 diff --git a/CONTENT/BT3025/MODELS/CALP.MOD b/CONTENT/BT3025/MODELS/CALP.MOD new file mode 100644 index 0000000..7f46221 --- /dev/null +++ b/CONTENT/BT3025/MODELS/CALP.MOD @@ -0,0 +1,20 @@ +[video] +; +; calp.mod - Missile Launcher +; +object=calp.bgf calp_lp.bgf +rubble=calpd.bgf + +[collision] +name=calp_cv.sld + +[gauge] +image=calp_ga.gim + +[gamedata] +class=CulturalIconClassID +DamageZones=msl.dmg +StoppingCollisionVolume=1 +ExplosionModelFile=msldead +TimeDelay=0.5 +//CrunchExplosionModelFile=stephit diff --git a/CONTENT/BT3025/MODELS/CALPB.MOD b/CONTENT/BT3025/MODELS/CALPB.MOD new file mode 100644 index 0000000..2b66f3a --- /dev/null +++ b/CONTENT/BT3025/MODELS/CALPB.MOD @@ -0,0 +1,11 @@ +[video] +object=calpb.bgf + +[collision] +name=calpb_cv.sld + +[gauge] +image=calpb_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/CAMERA.MOD b/CONTENT/BT3025/MODELS/CAMERA.MOD new file mode 100644 index 0000000..d872177 --- /dev/null +++ b/CONTENT/BT3025/MODELS/CAMERA.MOD @@ -0,0 +1,13 @@ +[gamedata] +class=CameraShipClassID +MoverMass=150.0 +MomentOfInertia=1.75 3.125 1.75 +PositiveLinearDragCoefficients=0.14 0.4 0.07 +NegativeLinearDragCoefficients=0.14 0.2 0.08 +AngularDragCoefficients=9.0 9.0 9.0 +FrictionCoefficient=0.0 +ElasticityCoefficient=30.0 +MinimumBounceSpeed=0. +PreShowSpeed=25.0 +CameraMode=WinnerCam +CaptureRadius=275.0 diff --git a/CONTENT/BT3025/MODELS/CAMPOS.MOD b/CONTENT/BT3025/MODELS/CAMPOS.MOD new file mode 100644 index 0000000..4da77c0 --- /dev/null +++ b/CONTENT/BT3025/MODELS/CAMPOS.MOD @@ -0,0 +1,8 @@ +[video] +object=campos.bgf + +[gauge] +image=rivet_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/CANHIT.MOD b/CONTENT/BT3025/MODELS/CANHIT.MOD new file mode 100644 index 0000000..bc35420 --- /dev/null +++ b/CONTENT/BT3025/MODELS/CANHIT.MOD @@ -0,0 +1,11 @@ +[video] +object=11 + +[audio] +external=prjexp.scp + +[gamedata] +class=ExplosionClassID +ExplosionResourceTable=CanonExplosionResourceTable +// WARNING Audio Effects require ExplosionDuration >= 3.0 secs +ExplosionDuration=3.0 diff --git a/CONTENT/BT3025/MODELS/CANHITI.MOD b/CONTENT/BT3025/MODELS/CANHITI.MOD new file mode 100644 index 0000000..5555ee5 --- /dev/null +++ b/CONTENT/BT3025/MODELS/CANHITI.MOD @@ -0,0 +1,10 @@ +[video] +object=11 + +[audio] +external=prjexpi.scp + +[gamedata] +class=ExplosionClassID +// WARNING Audio Effects require ExplosionDuration >= 3.0 secs +ExplosionDuration=3.0 diff --git a/CONTENT/BT3025/MODELS/CB1.MOD b/CONTENT/BT3025/MODELS/CB1.MOD new file mode 100644 index 0000000..a3afefe --- /dev/null +++ b/CONTENT/BT3025/MODELS/CB1.MOD @@ -0,0 +1,8 @@ +[video] +object=cb1.bgf + +[collision] +name=fl1_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/CLD.MOD b/CONTENT/BT3025/MODELS/CLD.MOD new file mode 100644 index 0000000..8f91856 --- /dev/null +++ b/CONTENT/BT3025/MODELS/CLD.MOD @@ -0,0 +1,5 @@ +[video] +object=cld.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/COMTRUCK.MOD b/CONTENT/BT3025/MODELS/COMTRUCK.MOD new file mode 100644 index 0000000..df6988a --- /dev/null +++ b/CONTENT/BT3025/MODELS/COMTRUCK.MOD @@ -0,0 +1,17 @@ +[video] +object=COMTRUCK.bgf coms.bgf +rubble=COMD.bgf + +[collision] +name=COMTRUCK.sld + +[gauge] +image=comtruck.gim + +[gamedata] +class=CulturalIconClassID +DamageZones=trk.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=trkdead +TimeDelay=0.5 +CrunchExplosionModelFile=stephit diff --git a/CONTENT/BT3025/MODELS/CONDENSR.SUB b/CONTENT/BT3025/MODELS/CONDENSR.SUB new file mode 100644 index 0000000..1440e10 --- /dev/null +++ b/CONTENT/BT3025/MODELS/CONDENSR.SUB @@ -0,0 +1,14 @@ +[Condenser] +Type=CondenserClassID +ArmorValue=20.0 +StartingTemperature=77.0 +DegradationTemperature=2000.0 +FailureTemperature=2000.0 +ThermalConductance=3.15e5 +ThermalMass=4.2e5 +HeatSink=None +ValveSetting=.166667 +RefrigerationFactor=3.0 +WeaponDamagePoints=5.0 +VitalSubsystem=False +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT3025/MODELS/CONVOY.MOD b/CONTENT/BT3025/MODELS/CONVOY.MOD new file mode 100644 index 0000000..a77d75f --- /dev/null +++ b/CONTENT/BT3025/MODELS/CONVOY.MOD @@ -0,0 +1,10 @@ +[gamedata] +class=ScenarioRoleClassID +KillBonus=500.0 +DamageReceivedModifier=1.0 +DamageInflictedModifier=1.0 +DamageBias=1.0 +FriendlyFirePenalty=1.0 +ReturnFromDeath=100 +SpecialCaseDeathPenalty=500.0 + diff --git a/CONTENT/BT3025/MODELS/COOLANT.MOD b/CONTENT/BT3025/MODELS/COOLANT.MOD new file mode 100644 index 0000000..46fbdd2 --- /dev/null +++ b/CONTENT/BT3025/MODELS/COOLANT.MOD @@ -0,0 +1,17 @@ +[video] +object=COOLANT.bgf cools.bgf +rubble=COOLD.bgf + +[collision] +name=COOLANT.sld + +[gauge] +image=coolant.gim + +[gamedata] +class=CulturalIconClassID +DamageZones=trk.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=trkdead +TimeDelay=0.5 +CrunchExplosionModelFile=stephit diff --git a/CONTENT/BT3025/MODELS/CRT.MOD b/CONTENT/BT3025/MODELS/CRT.MOD new file mode 100644 index 0000000..26e51b6 --- /dev/null +++ b/CONTENT/BT3025/MODELS/CRT.MOD @@ -0,0 +1,18 @@ +[video] +; +; crt.mod - Crate +; +object=crt.bgf +rubble=crtd.bgf crtd_FR.bgf + +[collision] +name=crt_cv.sld + +[gamedata] +class=CulturalIconClassID +DamageZones=sml.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=smldead +TimeDelay=0.5 +CrunchExplosionModelFile=smldead + diff --git a/CONTENT/BT3025/MODELS/CTARMAC.MOD b/CONTENT/BT3025/MODELS/CTARMAC.MOD new file mode 100644 index 0000000..ea099af --- /dev/null +++ b/CONTENT/BT3025/MODELS/CTARMAC.MOD @@ -0,0 +1,6 @@ +[video] +object=ctarmac.bgf ctar_lp.bgf + +[gamedata] +class=UnscalableTerrainClassID + \ No newline at end of file diff --git a/CONTENT/BT3025/MODELS/DAM1HIT.MOD b/CONTENT/BT3025/MODELS/DAM1HIT.MOD new file mode 100644 index 0000000..2f1bd14 --- /dev/null +++ b/CONTENT/BT3025/MODELS/DAM1HIT.MOD @@ -0,0 +1,7 @@ +[video] +object=1002 + +[gamedata] +class=ExplosionClassID +ExplosionResourceTable=Dam1ExplosionResourceTable +ExplosionDuration=10.0 diff --git a/CONTENT/BT3025/MODELS/DAM1HITI.MOD b/CONTENT/BT3025/MODELS/DAM1HITI.MOD new file mode 100644 index 0000000..953e0b8 --- /dev/null +++ b/CONTENT/BT3025/MODELS/DAM1HITI.MOD @@ -0,0 +1,6 @@ +[video] +object=1009 + +[gamedata] +class=ExplosionClassID +ExplosionDuration=10.0 diff --git a/CONTENT/BT3025/MODELS/DAM2HIT.MOD b/CONTENT/BT3025/MODELS/DAM2HIT.MOD new file mode 100644 index 0000000..4241d45 --- /dev/null +++ b/CONTENT/BT3025/MODELS/DAM2HIT.MOD @@ -0,0 +1,7 @@ +[video] +object=1003 + +[gamedata] +class=ExplosionClassID +ExplosionResourceTable=Dam2ExplosionResourceTable +ExplosionDuration=10.0 diff --git a/CONTENT/BT3025/MODELS/DAM2HITI.MOD b/CONTENT/BT3025/MODELS/DAM2HITI.MOD new file mode 100644 index 0000000..52c103c --- /dev/null +++ b/CONTENT/BT3025/MODELS/DAM2HITI.MOD @@ -0,0 +1,6 @@ +[video] +object=1010 + +[gamedata] +class=ExplosionClassID +ExplosionDuration=10.0 diff --git a/CONTENT/BT3025/MODELS/DAM3EXP.MOD b/CONTENT/BT3025/MODELS/DAM3EXP.MOD new file mode 100644 index 0000000..a9d51c6 --- /dev/null +++ b/CONTENT/BT3025/MODELS/DAM3EXP.MOD @@ -0,0 +1,6 @@ +[audio] +external=dgbexp.scp + +[gamedata] +class=ExplosionClassID +ExplosionDuration=8.0 diff --git a/CONTENT/BT3025/MODELS/DAM3HIT.MOD b/CONTENT/BT3025/MODELS/DAM3HIT.MOD new file mode 100644 index 0000000..32744dc --- /dev/null +++ b/CONTENT/BT3025/MODELS/DAM3HIT.MOD @@ -0,0 +1,10 @@ +[video] +object=1004 + +[audio] +model=dam3exp + +[gamedata] +class=ExplosionClassID +ExplosionResourceTable=Dam3ExplosionResourceTable +ExplosionDuration=10.0 diff --git a/CONTENT/BT3025/MODELS/DAM3HITI.MOD b/CONTENT/BT3025/MODELS/DAM3HITI.MOD new file mode 100644 index 0000000..f1cd7c5 --- /dev/null +++ b/CONTENT/BT3025/MODELS/DAM3HITI.MOD @@ -0,0 +1,6 @@ +[video] +object=1011 + +[gamedata] +class=ExplosionClassID +ExplosionDuration=10.0 diff --git a/CONTENT/BT3025/MODELS/DAM4EXP.MOD b/CONTENT/BT3025/MODELS/DAM4EXP.MOD new file mode 100644 index 0000000..e5e2a81 --- /dev/null +++ b/CONTENT/BT3025/MODELS/DAM4EXP.MOD @@ -0,0 +1,6 @@ +[audio] +external=dgaexp.scp + +[gamedata] +class=ExplosionClassID +ExplosionDuration=15.0 diff --git a/CONTENT/BT3025/MODELS/DAM4EXPI.MOD b/CONTENT/BT3025/MODELS/DAM4EXPI.MOD new file mode 100644 index 0000000..84ebc7e --- /dev/null +++ b/CONTENT/BT3025/MODELS/DAM4EXPI.MOD @@ -0,0 +1,6 @@ +[audio] +external=dgcexp.scp + +[gamedata] +class=ExplosionClassID +ExplosionDuration=15.0 diff --git a/CONTENT/BT3025/MODELS/DAM4HIT.MOD b/CONTENT/BT3025/MODELS/DAM4HIT.MOD new file mode 100644 index 0000000..6d552cb --- /dev/null +++ b/CONTENT/BT3025/MODELS/DAM4HIT.MOD @@ -0,0 +1,10 @@ +[video] +object=1005 + +[audio] +model=dam4exp + +[gamedata] +class=ExplosionClassID +ExplosionResourceTable=Dam4ExplosionResourceTable +ExplosionDuration=10.0 diff --git a/CONTENT/BT3025/MODELS/DAM4HITI.MOD b/CONTENT/BT3025/MODELS/DAM4HITI.MOD new file mode 100644 index 0000000..5aac226 --- /dev/null +++ b/CONTENT/BT3025/MODELS/DAM4HITI.MOD @@ -0,0 +1,9 @@ +[video] +object=1012 + +[audio] +model=dam4expi + +[gamedata] +class=ExplosionClassID +ExplosionDuration=10.0 diff --git a/CONTENT/BT3025/MODELS/DAVION.MOD b/CONTENT/BT3025/MODELS/DAVION.MOD new file mode 100644 index 0000000..0fa27a8 --- /dev/null +++ b/CONTENT/BT3025/MODELS/DAVION.MOD @@ -0,0 +1,2 @@ +[gamedata] +class=BTTeamClassID diff --git a/CONTENT/BT3025/MODELS/DECOY.MOD b/CONTENT/BT3025/MODELS/DECOY.MOD new file mode 100644 index 0000000..286683e --- /dev/null +++ b/CONTENT/BT3025/MODELS/DECOY.MOD @@ -0,0 +1,8 @@ +[gamedata] +class=ScenarioRoleClassID +KillBonus=500.0 +DamageReceivedModifier=1.0 +DamageInflictedModifier=1.0 +DamageBias=1.0 +FriendlyFirePenalty=1.0 +ReturnFromDeath=100 diff --git a/CONTENT/BT3025/MODELS/DEFENDER.MOD b/CONTENT/BT3025/MODELS/DEFENDER.MOD new file mode 100644 index 0000000..286683e --- /dev/null +++ b/CONTENT/BT3025/MODELS/DEFENDER.MOD @@ -0,0 +1,8 @@ +[gamedata] +class=ScenarioRoleClassID +KillBonus=500.0 +DamageReceivedModifier=1.0 +DamageInflictedModifier=1.0 +DamageBias=1.0 +FriendlyFirePenalty=1.0 +ReturnFromDeath=100 diff --git a/CONTENT/BT3025/MODELS/DESTHIT.MOD b/CONTENT/BT3025/MODELS/DESTHIT.MOD new file mode 100644 index 0000000..d918df9 --- /dev/null +++ b/CONTENT/BT3025/MODELS/DESTHIT.MOD @@ -0,0 +1,7 @@ +[video] +object=1008 + +[gamedata] +class=ExplosionClassID +ExplosionResourceTable=DestroyedExplosionResourceTable +ExplosionDuration=3.0 diff --git a/CONTENT/BT3025/MODELS/DESTHITI.MOD b/CONTENT/BT3025/MODELS/DESTHITI.MOD new file mode 100644 index 0000000..e163dde --- /dev/null +++ b/CONTENT/BT3025/MODELS/DESTHITI.MOD @@ -0,0 +1,6 @@ +[video] +object=1013 + +[gamedata] +class=ExplosionClassID +ExplosionDuration=3.0 diff --git a/CONTENT/BT3025/MODELS/DFLTROLE.MOD b/CONTENT/BT3025/MODELS/DFLTROLE.MOD new file mode 100644 index 0000000..e61558f --- /dev/null +++ b/CONTENT/BT3025/MODELS/DFLTROLE.MOD @@ -0,0 +1,10 @@ +[gamedata] +class=ScenarioRoleClassID +KillBonus=500.0 +DamageReceivedModifier=0.0 +DamageInflictedModifier=1.0 +DamageBias=1.0 +FriendlyFirePenalty=1.0 +ReturnFromDeath=1000 +SpecialCaseDeathPenalty=500.0 + diff --git a/CONTENT/BT3025/MODELS/DG100.MOD b/CONTENT/BT3025/MODELS/DG100.MOD new file mode 100644 index 0000000..7cffe4e --- /dev/null +++ b/CONTENT/BT3025/MODELS/DG100.MOD @@ -0,0 +1,9 @@ +[video] +object=dg100.bgf + +[collision] +name=gr100_cv.sld + +[gamedata] +class=UnscalableTerrainClassID + \ No newline at end of file diff --git a/CONTENT/BT3025/MODELS/DG100A.MOD b/CONTENT/BT3025/MODELS/DG100A.MOD new file mode 100644 index 0000000..5bd7c3d --- /dev/null +++ b/CONTENT/BT3025/MODELS/DG100A.MOD @@ -0,0 +1,8 @@ +[video] +object=dg100.bgf + +[collision] +name=gr100acv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/DHILLG1.MOD b/CONTENT/BT3025/MODELS/DHILLG1.MOD new file mode 100644 index 0000000..c0768a6 --- /dev/null +++ b/CONTENT/BT3025/MODELS/DHILLG1.MOD @@ -0,0 +1,11 @@ +[video] +object=dhillg1.bgf + +[collision] +name=hillg1_c.sld + +[gauge] +image=hillg1_g.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/DHILLG2.MOD b/CONTENT/BT3025/MODELS/DHILLG2.MOD new file mode 100644 index 0000000..2f118ab --- /dev/null +++ b/CONTENT/BT3025/MODELS/DHILLG2.MOD @@ -0,0 +1,11 @@ +[video] +object=dhillg2.bgf + +[collision] +name=hillg2_c.sld + +[gauge] +image=hillg2_g.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/DHILLG3.MOD b/CONTENT/BT3025/MODELS/DHILLG3.MOD new file mode 100644 index 0000000..2442bae --- /dev/null +++ b/CONTENT/BT3025/MODELS/DHILLG3.MOD @@ -0,0 +1,11 @@ +[video] +object=dhillg3.bgf + +[collision] +name=hillg3_c.sld + +[gauge] +image=hillg3_g.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/DISH.MOD b/CONTENT/BT3025/MODELS/DISH.MOD new file mode 100644 index 0000000..d6a9efa --- /dev/null +++ b/CONTENT/BT3025/MODELS/DISH.MOD @@ -0,0 +1,17 @@ +[video] +object=dish.bgf dish_lp.bgf +rubble=dishD.bgf + +[collision] +name=dish_cv.sld + +[gauge] +image=dish_ga.gim + +[gamedata] +class=CulturalIconClassID +DamageZones=trk.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=trkdead +TimeDelay=0.5 +CrunchExplosionModelFile=stephit diff --git a/CONTENT/BT3025/MODELS/DMG.BLD b/CONTENT/BT3025/MODELS/DMG.BLD new file mode 100644 index 0000000..7dae822 --- /dev/null +++ b/CONTENT/BT3025/MODELS/DMG.BLD @@ -0,0 +1 @@ +// This file is intentionally empty and MUST be read-only! \ No newline at end of file diff --git a/CONTENT/BT3025/MODELS/DOZER.MOD b/CONTENT/BT3025/MODELS/DOZER.MOD new file mode 100644 index 0000000..2927a2e --- /dev/null +++ b/CONTENT/BT3025/MODELS/DOZER.MOD @@ -0,0 +1,14 @@ +[video] +object=DOZER.bgf dozers.bgf +rubble=DOZD.bgf + +[collision] +name=DOZER.sld + +[gamedata] +class=CulturalIconClassID +DamageZones=trk.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=trkdead +TimeDelay=0.5 +CrunchExplosionModelFile=stephit diff --git a/CONTENT/BT3025/MODELS/DRESF.MOD b/CONTENT/BT3025/MODELS/DRESF.MOD new file mode 100644 index 0000000..1249cde --- /dev/null +++ b/CONTENT/BT3025/MODELS/DRESF.MOD @@ -0,0 +1,8 @@ +[video] +object=dresf.bgf + +[collision] +name=fl1_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/DSKY.MOD b/CONTENT/BT3025/MODELS/DSKY.MOD new file mode 100644 index 0000000..631e550 --- /dev/null +++ b/CONTENT/BT3025/MODELS/DSKY.MOD @@ -0,0 +1,6 @@ +[video] +object=dsky.bgf + +[gamedata] +class=UnscalableTerrainClassID + \ No newline at end of file diff --git a/CONTENT/BT3025/MODELS/DTARMAC.MOD b/CONTENT/BT3025/MODELS/DTARMAC.MOD new file mode 100644 index 0000000..5483f46 --- /dev/null +++ b/CONTENT/BT3025/MODELS/DTARMAC.MOD @@ -0,0 +1,6 @@ +[video] +object=dtarmac.bgf dtar_lp.bgf + +[gamedata] +class=UnscalableTerrainClassID + \ No newline at end of file diff --git a/CONTENT/BT3025/MODELS/DUMB.MOD b/CONTENT/BT3025/MODELS/DUMB.MOD new file mode 100644 index 0000000..b731259 --- /dev/null +++ b/CONTENT/BT3025/MODELS/DUMB.MOD @@ -0,0 +1,24 @@ +[video] +object=tms_c.bgf + +[audio] +external=msltvl.scp + +[gauge] +image=rivet_ga.gim + +[gamedata] +class=MissileClassID +MoverMass=50.0 +MomentOfInertia=0.1 0.1 0.001 +PositiveLinearDragCoefficients=0.001 0.001 .001 +NegativeLinearDragCoefficients=0.001 0.001 .001 +AngularDragCoefficients=0.05 0.05 0.001 +FrictionCoefficient=0.0 +ElasticityCoefficient=0.0 +MinimumBounceSpeed=0.0 +MaxThrusterRotationRate=0.0 +BurnTime=10 +ThrusterAcceleration=600.0 +ThrusterClimb=0.0 +SplashRadius=30.0 diff --git a/CONTENT/BT3025/MODELS/DUMB2.SUB b/CONTENT/BT3025/MODELS/DUMB2.SUB new file mode 100644 index 0000000..6d8f928 --- /dev/null +++ b/CONTENT/BT3025/MODELS/DUMB2.SUB @@ -0,0 +1,33 @@ +[MissileLauncher] +Type=MissileLauncherClassID +StartingTemperature=77.0 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +ThermalConductance=4.74e4 +ThermalMass=2.37e4 +WeaponDamagePoints=3.0 +HeatSink=None +AmmoBin=None +VoltageSource=None +MuzzleVelocity=0.0 0.0 100.0 +TracerInterval=1 +ExplosionModelFile=mslhit +RechargeRate=2.0 +DamageAmount=10.0 +DamageType=ExplosiveDamage +WeaponRange=800.0 +HeatCostToFire=1.5e7 +VitalSubsystem=False +ThermalResistivityCoefficient=0.00024 +MissileCount=2 +AuxScreenNumber=0 +AuxScreenLabel=qstrk2.pcc +EngScreenLabel=estrk2.pcc +MinTimeOfFlight=0.5 +MinVoltagePercentToFire=0.30 +MinJamChance=0.05 +PipPosition=1 +PipColor=0.6 0.4 0.0 +PipExtendedRange=False +StartTime=1.0 +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT3025/MODELS/DUMB4.SUB b/CONTENT/BT3025/MODELS/DUMB4.SUB new file mode 100644 index 0000000..7578773 --- /dev/null +++ b/CONTENT/BT3025/MODELS/DUMB4.SUB @@ -0,0 +1,33 @@ +[MissileLauncher] +Type=MissileLauncherClassID +StartingTemperature=77.0 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +ThermalConductance=4.74e4 +ThermalMass=4.74e4 +WeaponDamagePoints=3.0 +HeatSink=None +AmmoBin=None +VoltageSource=None +MuzzleVelocity=0.0 0.0 100.0 +TracerInterval=1 +ExplosionModelFile=mslhit +RechargeRate=3.0 +DamageAmount=20.0 +DamageType=ExplosiveDamage +WeaponRange=800.0 +HeatCostToFire=3e7 +VitalSubsystem=False +ThermalResistivityCoefficient=0.00024 +MissileCount=4 +AuxScreenNumber=0 +AuxScreenLabel=qstrk4.pcc +EngScreenLabel=estrk4.pcc +MinTimeOfFlight=0.5 +MinVoltagePercentToFire=0.30 +MinJamChance=0.05 +PipPosition=1 +PipColor=0.6 0.4 0.0 +PipExtendedRange=False +StartTime=1.0 +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT3025/MODELS/DUMB6.SUB b/CONTENT/BT3025/MODELS/DUMB6.SUB new file mode 100644 index 0000000..819a317 --- /dev/null +++ b/CONTENT/BT3025/MODELS/DUMB6.SUB @@ -0,0 +1,33 @@ +[MissileLauncher] +Type=MissileLauncherClassID +StartingTemperature=77.0 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +ThermalConductance=4.74e4 +ThermalMass=7.89e4 +WeaponDamagePoints=3.0 +HeatSink=None +AmmoBin=None +VoltageSource=None +MuzzleVelocity=0.0 0.0 100.0 +TracerInterval=1 +ExplosionModelFile=mslhit +RechargeRate=5.0 +DamageAmount=35.0 +DamageType=ExplosiveDamage +WeaponRange=800.0 +HeatCostToFire=5e7 +VitalSubsystem=False +ThermalResistivityCoefficient=0.00024 +MissileCount=6 +AuxScreenNumber=0 +AuxScreenLabel=qstrk6.pcc +EngScreenLabel=estrk6.pcc +MinTimeOfFlight=0.5 +MinVoltagePercentToFire=0.30 +MinJamChance=0.05 +PipPosition=1 +PipColor=0.6 0.4 0.0 +PipExtendedRange=False +StartTime=1.0 +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT3025/MODELS/ERLLASER.SUB b/CONTENT/BT3025/MODELS/ERLLASER.SUB new file mode 100644 index 0000000..8c851fa --- /dev/null +++ b/CONTENT/BT3025/MODELS/ERLLASER.SUB @@ -0,0 +1,36 @@ +[Emitter] +Type=EmitterClassID +StartingTemperature=77.0 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +ThermalConductance=7.01e4 +ThermalMass=1.34e5 +WeaponDamagePoints=3.0 +HeatSink=None +VoltageSource=None +//ThresholdVoltagePercent=0.95 +ExplosionModelFile=lzrhit +DamageAmount=6.0 +DamageType=LaserDamage +WeaponRange=750.0 +RechargeRate=4.0 +DischargeTime=0.2 +AmmoModelFile=None +VitalSubsystem=False +VideoObjectName=ermlaser.bgf +GraphicLength=2000 +HeatCostToFire=8.5 +ThermalResistivityCoefficient=0.0024 +AuxScreenNumber=0 +AuxScreenLabel=qerllas.pcc +EngScreenLabel=eerllas.pcc +SeekVoltage=0.6 +SeekVoltage=0.7 +SeekVoltage=0.8 +SeekVoltage=0.99 +SeekVoltageRecommendedIndex=2 +PipPosition=1 +PipColor=1.0 0.0 0.0 +PipExtendedRange=True +StartTime=1.0 +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT3025/MODELS/ERMLASER.SUB b/CONTENT/BT3025/MODELS/ERMLASER.SUB new file mode 100644 index 0000000..20c3758 --- /dev/null +++ b/CONTENT/BT3025/MODELS/ERMLASER.SUB @@ -0,0 +1,36 @@ +[Emitter] +Type=EmitterClassID +StartingTemperature=77.0 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +ThermalConductance=8.29e4 +ThermalMass=5.53e4 +WeaponDamagePoints=3.0 +HeatSink=None +VoltageSource=None +//ThresholdVoltagePercent=0.95 +ExplosionModelFile=lzrhit +DamageAmount=5.0 +DamageType=LaserDamage +WeaponRange=540.0 +RechargeRate=5.0 +DischargeTime=0.2 +AmmoModelFile=None +VitalSubsystem=False +VideoObjectName=ermlaser.bgf +GraphicLength=2000 +HeatCostToFire=3.5 +ThermalResistivityCoefficient=0.0024 +AuxScreenNumber=0 +AuxScreenLabel=qermlas.pcc +EngScreenLabel=eermlas.pcc +SeekVoltage=0.6 +SeekVoltage=0.7 +SeekVoltage=0.8 +SeekVoltage=0.99 +SeekVoltageRecommendedIndex=2 +PipPosition=1 +PipColor=1.0 0.0 0.0 +PipExtendedRange=True +StartTime=1.0 +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT3025/MODELS/ERPPC.SUB b/CONTENT/BT3025/MODELS/ERPPC.SUB new file mode 100644 index 0000000..84d9d09 --- /dev/null +++ b/CONTENT/BT3025/MODELS/ERPPC.SUB @@ -0,0 +1,36 @@ +[PPC] +Type=PPCClassID +StartingTemperature=77.0 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +ThermalConductance=1.26e5 +ThermalMass=2.53e5 +WeaponDamagePoints=3.0 +HeatSink=None +VoltageSource=None +//ThresholdVoltagePercent=0.95 +AmmoModelFile=None +ExplosionModelFile=ppchit +DamageAmount=16.0 +DamageType=EnergyDamage +WeaponRange=950.0 +RechargeRate=5.0 +DischargeTime=0.2 +VitalSubsystem=False +VideoObjectName=ppc.bgf +GraphicLength=2000 +HeatCostToFire=16.0 +ThermalResistivityCoefficient=0.0024 +AuxScreenNumber=0 +AuxScreenLabel=qerppc.pcc +EngScreenLabel=eerppc.pcc +SeekVoltage=0.6 +SeekVoltage=0.7 +SeekVoltage=0.8 +SeekVoltage=0.99 +SeekVoltageRecommendedIndex=2 +PipPosition=1 +PipColor=0 0 1 +PipExtendedRange=False +StartTime=1.0 +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT3025/MODELS/ERSLASER.SUB b/CONTENT/BT3025/MODELS/ERSLASER.SUB new file mode 100644 index 0000000..c8a1d8a --- /dev/null +++ b/CONTENT/BT3025/MODELS/ERSLASER.SUB @@ -0,0 +1,35 @@ +[Emitter] +Type=EmitterClassID +StartingTemperature=77.0 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +ThermalConductance=7.10e4 +ThermalMass=2.37e4 +WeaponDamagePoints=3.0 +HeatSink=None +VoltageSource=None +ExplosionModelFile=lzrhit +DamageAmount=3.0 +DamageType=LaserDamage +WeaponRange=180.0 +RechargeRate=3.0 +DischargeTime=0.2 +AmmoModelFile=None +VitalSubsystem=False +VideoObjectName=ermlaser.bgf +GraphicLength=2000 +HeatCostToFire=1.5 +ThermalResistivityCoefficient=0.0024 +AuxScreenNumber=0 +AuxScreenLabel=qerslas.pcc +EngScreenLabel=eerslas.pcc +SeekVoltage=0.6 +SeekVoltage=0.7 +SeekVoltage=0.8 +SeekVoltage=0.99 +SeekVoltageRecommendedIndex=2 +PipPosition=1 +PipColor=1.0 0.0 0.0 +PipExtendedRange=True +StartTime=1.0 +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT3025/MODELS/EXPLODE.MOD b/CONTENT/BT3025/MODELS/EXPLODE.MOD new file mode 100644 index 0000000..a13f1f1 --- /dev/null +++ b/CONTENT/BT3025/MODELS/EXPLODE.MOD @@ -0,0 +1,6 @@ +[video] +object=6 + +[gamedata] +class=ExplosionClassID +ExplosionDuration=3.0 diff --git a/CONTENT/BT3025/MODELS/EXPLODE.ONL b/CONTENT/BT3025/MODELS/EXPLODE.ONL new file mode 100644 index 0000000..b1906de --- /dev/null +++ b/CONTENT/BT3025/MODELS/EXPLODE.ONL @@ -0,0 +1,58 @@ +# +#---------------------------------------------------------------- +# Static objects for bt +#---------------------------------------------------------------- +# + +# +#---------------------------------------------------------------- +# Compiled symbols +# HACK - use symbols currently compiled for audio, should have +# symbols for entire game or separate for models +#---------------------------------------------------------------- +# +[include] +file=audio\symbols.scp + +# +#---------------------------------------------------------------- +# Explosion Resource Tables +#---------------------------------------------------------------- +# + +[ExplosionResourceTable] +table_entry=BoxedSolid::OurCraftMaterial, lzrhiti +name=LaserExplosionResourceTable + +[ExplosionResourceTable] +table_entry=BoxedSolid::OurCraftMaterial, ppchiti +name=PPCExplosionResourceTable + +[ExplosionResourceTable] +table_entry=BoxedSolid::OurCraftMaterial, canhiti +name=CanonExplosionResourceTable + +[ExplosionResourceTable] +table_entry=BoxedSolid::OurCraftMaterial, mslhiti +name=MissileExplosionResourceTable + +[ExplosionResourceTable] +table_entry=BoxedSolid::OurCraftMaterial, dam1hiti +name=Dam1ExplosionResourceTable + +[ExplosionResourceTable] +table_entry=BoxedSolid::OurCraftMaterial, dam2hiti +name=Dam2ExplosionResourceTable + +[ExplosionResourceTable] +table_entry=BoxedSolid::OurCraftMaterial, dam3hiti +name=Dam3ExplosionResourceTable + +[ExplosionResourceTable] +table_entry=BoxedSolid::OurCraftMaterial, dam4hiti +name=Dam4ExplosionResourceTable + +[ExplosionResourceTable] +table_entry=BoxedSolid::OurCraftMaterial, desthiti +name=DestroyedExplosionResourceTable + diff --git a/CONTENT/BT3025/MODELS/FD1.MOD b/CONTENT/BT3025/MODELS/FD1.MOD new file mode 100644 index 0000000..2735772 --- /dev/null +++ b/CONTENT/BT3025/MODELS/FD1.MOD @@ -0,0 +1,5 @@ +[video] +object=fd1.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/FD2.MOD b/CONTENT/BT3025/MODELS/FD2.MOD new file mode 100644 index 0000000..4ef8683 --- /dev/null +++ b/CONTENT/BT3025/MODELS/FD2.MOD @@ -0,0 +1,5 @@ +[video] +object=fd2.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/FD3.MOD b/CONTENT/BT3025/MODELS/FD3.MOD new file mode 100644 index 0000000..b804e5c --- /dev/null +++ b/CONTENT/BT3025/MODELS/FD3.MOD @@ -0,0 +1,5 @@ +[video] +object=fd3.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/FD4.MOD b/CONTENT/BT3025/MODELS/FD4.MOD new file mode 100644 index 0000000..3cae560 --- /dev/null +++ b/CONTENT/BT3025/MODELS/FD4.MOD @@ -0,0 +1,8 @@ +[video] +object=fd4.bgf + +[collision] +name=thor.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/FIND.TXT b/CONTENT/BT3025/MODELS/FIND.TXT new file mode 100644 index 0000000..f8cf499 --- /dev/null +++ b/CONTENT/BT3025/MODELS/FIND.TXT @@ -0,0 +1,11 @@ +c:\rel410\bt\models\blkjack.dmg +c:\rel410\bt\models\blkjack.mch +c:\rel410\bt\models\firstrtr.dmg +c:\rel410\bt\models\firstrtr.mch +c:\rel410\bt\models\mad.dmg +c:\rel410\bt\models\raptor.dmg +c:\rel410\bt\models\raptor.mch +c:\rel410\bt\models\strider.dmg +c:\rel410\bt\models\strider.mch +c:\rel410\bt\models\thr.dmg +c:\rel410\bt\models\wpnmech.dmg diff --git a/CONTENT/BT3025/MODELS/FIRDMG.EXP b/CONTENT/BT3025/MODELS/FIRDMG.EXP new file mode 100644 index 0000000..c9b1598 --- /dev/null +++ b/CONTENT/BT3025/MODELS/FIRDMG.EXP @@ -0,0 +1,28 @@ +[OneDamage] +ExplosionModelFile=dam1hit +DamageLevel=0.2 +TimeDelay=0.0 + +[TwoDamage] +ExplosionModelFile=dam2hit +DamageLevel=0.4 +TimeDelay=0.0 + +[ThreeDamage] +ExplosionModelFile=dam3hit +DamageLevel=0.6 +TimeDelay=0.0 + +[FourDamage] +ExplosionModelFile=dam4hit +DamageLevel=0.8 +TimeDelay=0.0 + +[DestroyedExplosion] +ExplosionModelFile=desthit +GraphicState=Destroyed + +[GoneExplosion] +ExplosionModelFile=desthit +GraphicState=Gone + diff --git a/CONTENT/BT3025/MODELS/FIRTHR.CTL b/CONTENT/BT3025/MODELS/FIRTHR.CTL new file mode 100644 index 0000000..5ca0097 --- /dev/null +++ b/CONTENT/BT3025/MODELS/FIRTHR.CTL @@ -0,0 +1,57 @@ +[StickPosition_JP] +IOMapping=JoystickPhysical +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=StickPosition +Mode=ModeAlwaysActive + +[TorsoLeft_BJHL] +IOMapping=ButtonJoystickHatLeft +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoLeft +Mode=ModeAlwaysActive + +[TorsoRight_BJHR] +IOMapping=ButtonJoystickHatRight +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoRight +Mode=ModeAlwaysActive + +[LLaser_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=LLaser +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[STRK4_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=STRK4 +AttributeID=TriggerState +Mode=ModeNonMapping diff --git a/CONTENT/BT3025/MODELS/FL1.MOD b/CONTENT/BT3025/MODELS/FL1.MOD new file mode 100644 index 0000000..001afeb --- /dev/null +++ b/CONTENT/BT3025/MODELS/FL1.MOD @@ -0,0 +1,8 @@ +[video] +object=fl1.bgf + +[collision] +name=fl1_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/FP0.MOD b/CONTENT/BT3025/MODELS/FP0.MOD new file mode 100644 index 0000000..42d6a78 --- /dev/null +++ b/CONTENT/BT3025/MODELS/FP0.MOD @@ -0,0 +1,17 @@ +[video] +; +; fp0.mod - Fuel Pump +; +object=fp0.bgf fp0_LP.bgf +rubble=fp0d.bgf + +[collision] +name=fp0_cv.sld + +[gamedata] +class=CulturalIconClassID +DamageZones=med.dmg +StoppingCollisionVolume=1 +ExplosionModelFile=meddead +TimeDelay=0.5 +CrunchExplosionModelFile=stephit diff --git a/CONTENT/BT3025/MODELS/FP0D.MOD b/CONTENT/BT3025/MODELS/FP0D.MOD new file mode 100644 index 0000000..00f74fe --- /dev/null +++ b/CONTENT/BT3025/MODELS/FP0D.MOD @@ -0,0 +1,5 @@ +[collision] +name=fp0d_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/FP1.MOD b/CONTENT/BT3025/MODELS/FP1.MOD new file mode 100644 index 0000000..90a1279 --- /dev/null +++ b/CONTENT/BT3025/MODELS/FP1.MOD @@ -0,0 +1,20 @@ +[video] +; +; fp1.mod - Fuel Pipe +; +object=fp1.bgf fp1_FR.bgf +rubble=fp1d.bgf fp1d_FR.bgf + +[collision] +name=fp1_cv.sld + +[gauge] +image=fp1_ga.gim + +[gamedata] +class=CulturalIconClassID +DamageZones=med.dmg +StoppingCollisionVolume=1 +ExplosionModelFile=meddead +TimeDelay=0.5 +CrunchExplosionModelFile=stephit diff --git a/CONTENT/BT3025/MODELS/FP2.MOD b/CONTENT/BT3025/MODELS/FP2.MOD new file mode 100644 index 0000000..d5c14dd --- /dev/null +++ b/CONTENT/BT3025/MODELS/FP2.MOD @@ -0,0 +1,20 @@ +[video] +; +; fp2.mod - Fuel Pipe +; +object=fp2.bgf fp2_LP.bgf +rubble=fp2d.bgf + +[collision] +name=fp2_cv.sld + +[gauge] +image=fp2_ga.gim + +[gamedata] +class=CulturalIconClassID +DamageZones=med.dmg +StoppingCollisionVolume=1 +ExplosionModelFile=meddead +TimeDelay=0.5 +CrunchExplosionModelFile=stephit diff --git a/CONTENT/BT3025/MODELS/FP2D.MOD b/CONTENT/BT3025/MODELS/FP2D.MOD new file mode 100644 index 0000000..6367837 --- /dev/null +++ b/CONTENT/BT3025/MODELS/FP2D.MOD @@ -0,0 +1,5 @@ +[collision] +name=fp2d_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/FP3.MOD b/CONTENT/BT3025/MODELS/FP3.MOD new file mode 100644 index 0000000..0c9a7f0 --- /dev/null +++ b/CONTENT/BT3025/MODELS/FP3.MOD @@ -0,0 +1,17 @@ +[video] +; +; fp3.mod - Fuel Pipe +; +object=fp3.bgf +rubble=fp3d.bgf + +[collision] +name=fp3_cv.sld + +[gamedata] +class=CulturalIconClassID +DamageZones=med.dmg +StoppingCollisionVolume=1 +ExplosionModelFile=meddead +TimeDelay=0.5 +CrunchExplosionModelFile=stephit diff --git a/CONTENT/BT3025/MODELS/FT1.MOD b/CONTENT/BT3025/MODELS/FT1.MOD new file mode 100644 index 0000000..3d87d28 --- /dev/null +++ b/CONTENT/BT3025/MODELS/FT1.MOD @@ -0,0 +1,20 @@ +[video] +; +; ft1.mod - Fuel tank +; +object=ft1.bgf ft1_FR.bgf ft1_LP.bgf +rubble=ft1d.bgf ft1d_FR.bgf + +[collision] +name=ft1_cv.sld + +[gauge] +image=ft1_ga.gim + +[gamedata] +class=CulturalIconClassID +DamageZones=med.dmg +StoppingCollisionVolume=1 +ExplosionModelFile=bigdead +TimeDelay=0.5 +//CrunchExplosionModelFile=stephit diff --git a/CONTENT/BT3025/MODELS/FT2.MOD b/CONTENT/BT3025/MODELS/FT2.MOD new file mode 100644 index 0000000..e871b86 --- /dev/null +++ b/CONTENT/BT3025/MODELS/FT2.MOD @@ -0,0 +1,20 @@ +[video] +; +; ft2.mod - Fuel tank +; +object=ft2.bgf ft2_FR.bgf ft2_LP.bgf +rubble=ft2d.bgf ft2d_FR.bgf + +[collision] +name=ft2_cv.sld + +[gauge] +image=ft2_ga.gim + +[gamedata] +class=CulturalIconClassID +DamageZones=med.dmg +StoppingCollisionVolume=1 +ExplosionModelFile=bigdead +TimeDelay=0.5 +//CrunchExplosionModelFile=stephit diff --git a/CONTENT/BT3025/MODELS/GAUSSRFL.SUB b/CONTENT/BT3025/MODELS/GAUSSRFL.SUB new file mode 100644 index 0000000..00bfd06 --- /dev/null +++ b/CONTENT/BT3025/MODELS/GAUSSRFL.SUB @@ -0,0 +1,33 @@ +[ProjectileWeapon] +Type=ProjectileWeaponClassID +StartingTemperature=77.0 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +//ThermalConductance=91000 +//ThermalMass=120000 +ThermalConductance=2.37e4 +ThermalMass=3.16e4 +HeatSink=None +AmmoBin=None +VoltageSource=None +TracerInterval=1 +ExplosionModelFile=canhit +RechargeRate=8.0 +DamageAmount=20.0 +DamageType=BallisticDamage +WeaponDamagePoints=1.0 +WeaponRange=900 +HeatCostToFire=1.0e6 +VitalSubsystem=False +ThermalResistivityCoefficient=0.0004 +AuxScreenNumber=0 +AuxScreenLabel=qgauss.pcc +EngScreenLabel=egauss.pcc +MinTimeOfFlight=1000000 +MinVoltagePercentToFire=0.30 +MinJamChance=0.05 +StartTime=1.0 +PipPosition=1 +PipColor=1.0 1.0 0.0 +PipExtendedRange=False +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT3025/MODELS/GD1.MOD b/CONTENT/BT3025/MODELS/GD1.MOD new file mode 100644 index 0000000..4d3ffb7 --- /dev/null +++ b/CONTENT/BT3025/MODELS/GD1.MOD @@ -0,0 +1,8 @@ +[video] +object=gd1.bgf + +[collision] +name=gd1_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/GD2.MOD b/CONTENT/BT3025/MODELS/GD2.MOD new file mode 100644 index 0000000..65a6f76 --- /dev/null +++ b/CONTENT/BT3025/MODELS/GD2.MOD @@ -0,0 +1,8 @@ +[video] +object=gd2.bgf + +[collision] +name=gd2_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/GD3.MOD b/CONTENT/BT3025/MODELS/GD3.MOD new file mode 100644 index 0000000..4204324 --- /dev/null +++ b/CONTENT/BT3025/MODELS/GD3.MOD @@ -0,0 +1,8 @@ +[video] +object=gd3.bgf + +[collision] +name=gd3_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/GD4.MOD b/CONTENT/BT3025/MODELS/GD4.MOD new file mode 100644 index 0000000..b4d7aba --- /dev/null +++ b/CONTENT/BT3025/MODELS/GD4.MOD @@ -0,0 +1,8 @@ +[video] +object=gd4.bgf + +[collision] +name=gd4_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/GD5.MOD b/CONTENT/BT3025/MODELS/GD5.MOD new file mode 100644 index 0000000..533bf09 --- /dev/null +++ b/CONTENT/BT3025/MODELS/GD5.MOD @@ -0,0 +1,10 @@ +[video] +object=gd5.bgf + +[collision] +name=gd5_cv.sld + +[gamedata] +class=UnscalableTerrainClassID + + diff --git a/CONTENT/BT3025/MODELS/GENRATOR.SUB b/CONTENT/BT3025/MODELS/GENRATOR.SUB new file mode 100644 index 0000000..25e33ff --- /dev/null +++ b/CONTENT/BT3025/MODELS/GENRATOR.SUB @@ -0,0 +1,17 @@ +[Generator] +Type=GeneratorClassID +ArmorValue=20.0 +StartingTemperature=77.0 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +ThermalConductance=5.63e5 +ThermalMass=7.26e5 +HeatSink=None +ThermalResistance=0.0024 +RatedVoltage=10000.0 +WeaponDamagePoints=5.0 +VitalSubsystem=False +StartTime=1.0 +ShortRecoveryTime=1.0 +MaxTapCount=6 +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT3025/MODELS/GNDHIT.MOD b/CONTENT/BT3025/MODELS/GNDHIT.MOD new file mode 100644 index 0000000..dce902f --- /dev/null +++ b/CONTENT/BT3025/MODELS/GNDHIT.MOD @@ -0,0 +1,9 @@ +[video] +object=12 + +[audio] +external=smlexp.scp + +[gamedata] +class=ExplosionClassID +ExplosionDuration=3.0 diff --git a/CONTENT/BT3025/MODELS/GNR.MOD b/CONTENT/BT3025/MODELS/GNR.MOD new file mode 100644 index 0000000..00a3ba7 --- /dev/null +++ b/CONTENT/BT3025/MODELS/GNR.MOD @@ -0,0 +1,20 @@ +[video] +; +; gnr.mod - Generator +; +object=gnr.bgf gnr_LP.bgf +rubble=gnrd.bgf + +[collision] +name=gnr_cv.sld + +[gauge] +image=gnr_ga.gim + +[gamedata] +class=CulturalIconClassID +DamageZones=med.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=meddead +TimeDelay=0.5 +CrunchExplosionModelFile=smldead diff --git a/CONTENT/BT3025/MODELS/GRND100.MOD b/CONTENT/BT3025/MODELS/GRND100.MOD new file mode 100644 index 0000000..5b0483e --- /dev/null +++ b/CONTENT/BT3025/MODELS/GRND100.MOD @@ -0,0 +1,9 @@ +[video] +object=grnd100.bgf + +[collision] +name=gr100_cv.sld + +[gamedata] +class=UnscalableTerrainClassID + \ No newline at end of file diff --git a/CONTENT/BT3025/MODELS/GTARMAC.MOD b/CONTENT/BT3025/MODELS/GTARMAC.MOD new file mode 100644 index 0000000..b276c5f --- /dev/null +++ b/CONTENT/BT3025/MODELS/GTARMAC.MOD @@ -0,0 +1,6 @@ +[video] +object=gtarmac.bgf + +[gamedata] +class=UnscalableTerrainClassID + \ No newline at end of file diff --git a/CONTENT/BT3025/MODELS/GYRO.SUB b/CONTENT/BT3025/MODELS/GYRO.SUB new file mode 100644 index 0000000..33644b3 --- /dev/null +++ b/CONTENT/BT3025/MODELS/GYRO.SUB @@ -0,0 +1,82 @@ +[Gyroscope] +Type=GyroscopeClassID +ArmorValue=20.0 +WatchedSubsystem=None +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +WeaponDamagePoints=5.0 +MaxAnimationNoise=1.2 +MinAnimationNoise=0.0 +RotationPerSecond=1.0 +PercentageOnNormal=0.0 +PercentageOnDestruction=1.2 +PercentageOnDegradation=0.7 +PercentageOnFailure=1.0 +EyeJoint=jointlocal + +VitalSubsystem=False +CriticalHitScoreBonus=0 +MinVoltagePercent=50 +CollisionCriticalHitWeight=0.35 + +MechJoint=jointeye +//MechJoint=jointshakey + +Exageration=0.6 + +SpringConstantX=-0.20 +SpringConstantY=-12.0 +SpringConstantZ=-0.20 +DampingConstantX=-2.0 +DampingConstantY=-3.0 +DampingConstantZ=-2.0 +PosSpringX=0.10 +PosSpringY=0.15 +PosSpringZ=0.10 +NegSpringX=-0.10 +NegSpringY=-0.15 +NegSpringZ=-0.10 + +RotationSpringConstantPitch=-0.9 +RotationSpringConstantYaw=-0.9 +RotationSpringConstantRoll=-0.9 +RotationDampingConstantPitch=-4.0 +RotationDampingConstantYaw=-4.0 +RotationDampingConstantRoll=-4.0 +RotationPosSpringPitch=22.0 +RotationPosSpringYaw=22.0 +RotationPosSpringRoll=22.0 +RotationNegSpringPitch=-22.0 +RotationNegSpringYaw=-22.0 +RotationNegSpringRoll=-22.0 + +CollisionDamageMultiplier=1 +BallisticDamageMultiplier=20 +ExplosiveDamageMultiplier=50 +LaserDamageMultiplier=6 +EnergyDamageMultiplier=14 + +CollisionDamageTrans=0.0 +CollisionDamagePitchRoll=0.0 +CollisionDamageYaw=0.0 +CollisionDamageVibration=0.0 + +BallisticDamageTrans=0.52 +BallisticDamagePitchRoll=1.04 +BallisticDamageYaw=1.04 +BallisticDamageVibration=0.0 + +ExplosiveDamageTrans=1.0 +ExplosiveDamagePitchRoll=1.0 +ExplosiveDamageYaw=1.0 +ExplosiveDamageVibration=1.0 + +LaserDamageTrans=0.086 +LaserDamagePitchRoll=0.0 +LaserDamageYaw=0.0 +LaserDamageVibration=0.86 + +EnergyDamageTrans=0.107 +EnergyDamagePitchRoll=0.32 +EnergyDamageYaw=0.32 +EnergyDamageVibration=1.07 diff --git a/CONTENT/BT3025/MODELS/HARASSER.MOD b/CONTENT/BT3025/MODELS/HARASSER.MOD new file mode 100644 index 0000000..8020498 --- /dev/null +++ b/CONTENT/BT3025/MODELS/HARASSER.MOD @@ -0,0 +1,18 @@ +[video] +object=HARASSER.bgf harass.bgf +rubble=HARSRD.bgf + +[collision] +name=HARASSER.sld + +[gauge] +image=harasser.gim + +[gamedata] +class=CulturalIconClassID +DamageZones=trk.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=trkdead +TimeDelay=0.5 +CrunchExplosionModelFile=stephit + \ No newline at end of file diff --git a/CONTENT/BT3025/MODELS/HC1.MOD b/CONTENT/BT3025/MODELS/HC1.MOD new file mode 100644 index 0000000..787fd70 --- /dev/null +++ b/CONTENT/BT3025/MODELS/HC1.MOD @@ -0,0 +1,14 @@ +[video] +object=hc1.bgf hc1_LP.bgf +rubble=hc1d.bgf + +[collision] +name=hc1_cv.sld + +[gamedata] +class=CulturalIconClassID +DamageZones=med.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=meddead +TimeDelay=0.5 +CrunchExplosionModelFile=stephit diff --git a/CONTENT/BT3025/MODELS/HC2.MOD b/CONTENT/BT3025/MODELS/HC2.MOD new file mode 100644 index 0000000..7c3d155 --- /dev/null +++ b/CONTENT/BT3025/MODELS/HC2.MOD @@ -0,0 +1,14 @@ +[video] +object=hc2.bgf +rubble=hc2d.bgf hc2d_FR.bgf + +[collision] +name=hc2_cv.sld + +[gamedata] +class=CulturalIconClassID +DamageZones=med.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=meddead +TimeDelay=0.5 +CrunchExplosionModelFile=stephit diff --git a/CONTENT/BT3025/MODELS/HEATSNK.SUB b/CONTENT/BT3025/MODELS/HEATSNK.SUB new file mode 100644 index 0000000..18a11a8 --- /dev/null +++ b/CONTENT/BT3025/MODELS/HEATSNK.SUB @@ -0,0 +1,15 @@ +[HeatSink] +Type=HeatSinkClassID +ArmorValue=20.0 +StartingTemperature=77.0 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +ThermalConductance=2.31e5 +ThermalMass=1.39e6 +HeatSink=None +HeatSinkCount=0 +WeaponDamagePoints=10.0 +RechargeRate=10.0 +VitalSubsystem=False +CriticalHitScoreBonus=0 +CollisionCriticalHitWeight=0.30 diff --git a/CONTENT/BT3025/MODELS/HILLA.MOD b/CONTENT/BT3025/MODELS/HILLA.MOD new file mode 100644 index 0000000..40cd28d --- /dev/null +++ b/CONTENT/BT3025/MODELS/HILLA.MOD @@ -0,0 +1,12 @@ +[video] +object=hilla.bgf + +[collision] +name=hilla_cv.sld + +[gauge] +image=hl1_ga.gim + +[gamedata] +class=UnscalableTerrainClassID + \ No newline at end of file diff --git a/CONTENT/BT3025/MODELS/HILLC.MOD b/CONTENT/BT3025/MODELS/HILLC.MOD new file mode 100644 index 0000000..61ad924 --- /dev/null +++ b/CONTENT/BT3025/MODELS/HILLC.MOD @@ -0,0 +1,12 @@ +[video] +object=hillc.bgf + +[collision] +name=hillc_cv.sld + +[gauge] +image=hl2_ga.gim + +[gamedata] +class=UnscalableTerrainClassID + \ No newline at end of file diff --git a/CONTENT/BT3025/MODELS/HILLG1.MOD b/CONTENT/BT3025/MODELS/HILLG1.MOD new file mode 100644 index 0000000..5f48da4 --- /dev/null +++ b/CONTENT/BT3025/MODELS/HILLG1.MOD @@ -0,0 +1,11 @@ +[video] +object=hillg1.bgf + +[collision] +name=hillg1_c.sld + +[gauge] +image=hillg1_g.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/HILLG2.MOD b/CONTENT/BT3025/MODELS/HILLG2.MOD new file mode 100644 index 0000000..9ca139d --- /dev/null +++ b/CONTENT/BT3025/MODELS/HILLG2.MOD @@ -0,0 +1,11 @@ +[video] +object=hillg2.bgf + +[collision] +name=hillg2_c.sld + +[gauge] +image=hillg2_g.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/HILLG3.MOD b/CONTENT/BT3025/MODELS/HILLG3.MOD new file mode 100644 index 0000000..fca4704 --- /dev/null +++ b/CONTENT/BT3025/MODELS/HILLG3.MOD @@ -0,0 +1,11 @@ +[video] +object=hillg3.bgf + +[collision] +name=hillg3_c.sld + +[gauge] +image=hillg3_g.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/HL1.MOD b/CONTENT/BT3025/MODELS/HL1.MOD new file mode 100644 index 0000000..40cd28d --- /dev/null +++ b/CONTENT/BT3025/MODELS/HL1.MOD @@ -0,0 +1,12 @@ +[video] +object=hilla.bgf + +[collision] +name=hilla_cv.sld + +[gauge] +image=hl1_ga.gim + +[gamedata] +class=UnscalableTerrainClassID + \ No newline at end of file diff --git a/CONTENT/BT3025/MODELS/HL2.MOD b/CONTENT/BT3025/MODELS/HL2.MOD new file mode 100644 index 0000000..61ad924 --- /dev/null +++ b/CONTENT/BT3025/MODELS/HL2.MOD @@ -0,0 +1,12 @@ +[video] +object=hillc.bgf + +[collision] +name=hillc_cv.sld + +[gauge] +image=hl2_ga.gim + +[gamedata] +class=UnscalableTerrainClassID + \ No newline at end of file diff --git a/CONTENT/BT3025/MODELS/HN1.MOD b/CONTENT/BT3025/MODELS/HN1.MOD new file mode 100644 index 0000000..f611d4d --- /dev/null +++ b/CONTENT/BT3025/MODELS/HN1.MOD @@ -0,0 +1,20 @@ +[video] +; +; hn1.mod - Warehouse +; +object=hn1.bgf hn1_FR.bgf hn1_LP.bgf +rubble=hn1d.bgf hn1d_FR.bgf + +[collision] +name=hn1_cv.sld + +[gauge] +image=hn1_ga.gim + +[gamedata] +class=CulturalIconClassID +DamageZones=med.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=meddead +TimeDelay=0.5 +CrunchExplosionModelFile=stephit diff --git a/CONTENT/BT3025/MODELS/HOSTAGE.MOD b/CONTENT/BT3025/MODELS/HOSTAGE.MOD new file mode 100644 index 0000000..286683e --- /dev/null +++ b/CONTENT/BT3025/MODELS/HOSTAGE.MOD @@ -0,0 +1,8 @@ +[gamedata] +class=ScenarioRoleClassID +KillBonus=500.0 +DamageReceivedModifier=1.0 +DamageInflictedModifier=1.0 +DamageBias=1.0 +FriendlyFirePenalty=1.0 +ReturnFromDeath=100 diff --git a/CONTENT/BT3025/MODELS/HUD.SUB b/CONTENT/BT3025/MODELS/HUD.SUB new file mode 100644 index 0000000..0ef30ab --- /dev/null +++ b/CONTENT/BT3025/MODELS/HUD.SUB @@ -0,0 +1,14 @@ +[HUD] +Type=HUDClassID +ArmorValue=20.0 +WatchedSubsystem=None +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +WeaponDamagePoints=10.0 +FlickerRate=10.0 +MinVoltagePercent=50 +VitalSubsystem=False +CriticalHitScoreBonus=0 +SegmentPageName=siteeyepoint +HorizontalMovementPerSecond=0.9 +HorizontalLimit=1.2 diff --git a/CONTENT/BT3025/MODELS/HUMMER.MOD b/CONTENT/BT3025/MODELS/HUMMER.MOD new file mode 100644 index 0000000..c256fb8 --- /dev/null +++ b/CONTENT/BT3025/MODELS/HUMMER.MOD @@ -0,0 +1,17 @@ +[video] +object=HUMMER.bgf humms.bgf +rubble=HUMMD.bgf + +[collision] +name=HUMMER.sld + +[gauge] +image=hummer.gim + +[gamedata] +class=CulturalIconClassID +DamageZones=trk.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=trkdead +TimeDelay=0.5 +CrunchExplosionModelFile=stephit diff --git a/CONTENT/BT3025/MODELS/HUT.MOD b/CONTENT/BT3025/MODELS/HUT.MOD new file mode 100644 index 0000000..b41ada3 --- /dev/null +++ b/CONTENT/BT3025/MODELS/HUT.MOD @@ -0,0 +1,20 @@ +[video] +; +; hut.mod - Hut +; +object=hut.bgf hut_LP.bgf hut_FR.bgf +rubble=hutd.bgf + +[collision] +name=hut_cv.sld + +[gauge] +image=hut_ga.gim + +[gamedata] +class=CulturalIconClassID +DamageZones=med.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=meddead +TimeDelay=0.5 +CrunchExplosionModelFile=stephit diff --git a/CONTENT/BT3025/MODELS/HWZ.MOD b/CONTENT/BT3025/MODELS/HWZ.MOD new file mode 100644 index 0000000..dda39d6 --- /dev/null +++ b/CONTENT/BT3025/MODELS/HWZ.MOD @@ -0,0 +1,20 @@ +[video] +; +; hwz.mod - Howitzer +; +object=hwz.bgf hwz_FR.bgf +rubble=hwzd.bgf hwzd_FR.bgf + +[collision] +name=hwz_cv.sld + +[gauge] +image=hwz_ga.gim + +[gamedata] +class=CulturalIconClassID +DamageZones=med.dmg +StoppingCollisionVolume=1 +ExplosionModelFile=meddead +TimeDelay=0.5 +CrunchExplosionModelFile=smldead diff --git a/CONTENT/BT3025/MODELS/ICONBLH.MOD b/CONTENT/BT3025/MODELS/ICONBLH.MOD new file mode 100644 index 0000000..8e25a37 --- /dev/null +++ b/CONTENT/BT3025/MODELS/ICONBLH.MOD @@ -0,0 +1,16 @@ +[video] +object=blh.bgf +rubble=blh_tshd.bgf + +[collision] +name=blh_cv.sld + +[gauge] +image=blh_ga.gim + +[gamedata] +class=CulturalIconClassID +DamageZones=trk.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=thrdead +TimeDelay=0.5 diff --git a/CONTENT/BT3025/MODELS/ICONJAK.MOD b/CONTENT/BT3025/MODELS/ICONJAK.MOD new file mode 100644 index 0000000..c9275ed --- /dev/null +++ b/CONTENT/BT3025/MODELS/ICONJAK.MOD @@ -0,0 +1,11 @@ +[video] +object=jaktor.bgf jakhip.bgf + +[collision] +name=jak_cv.sld + +[gauge] +image=thor_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/ICONLOK.MOD b/CONTENT/BT3025/MODELS/ICONLOK.MOD new file mode 100644 index 0000000..f765750 --- /dev/null +++ b/CONTENT/BT3025/MODELS/ICONLOK.MOD @@ -0,0 +1,16 @@ +[video] +object=lok.bgf +rubble=lok_tshd.bgf + +[collision] +name=lok_cv.sld + +[gauge] +image=thor_ga.gim + +[gamedata] +class=CulturalIconClassID +DamageZones=trk.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=thrdead +TimeDelay=0.5 diff --git a/CONTENT/BT3025/MODELS/ICONOWN.MOD b/CONTENT/BT3025/MODELS/ICONOWN.MOD new file mode 100644 index 0000000..384a621 --- /dev/null +++ b/CONTENT/BT3025/MODELS/ICONOWN.MOD @@ -0,0 +1,16 @@ +[video] +object=own.bgf +rubble=own_tshd.bgf + +[collision] +name=own_cv.sld + +[gauge] +image=thor_ga.gim + +[gamedata] +class=CulturalIconClassID +DamageZones=trk.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=thrdead +TimeDelay=0.5 diff --git a/CONTENT/BT3025/MODELS/ICONTHR.DMG b/CONTENT/BT3025/MODELS/ICONTHR.DMG new file mode 100644 index 0000000..8a402ba --- /dev/null +++ b/CONTENT/BT3025/MODELS/ICONTHR.DMG @@ -0,0 +1,3 @@ +[default] +WeaponDamagePoints=200 +VitalDamageZone=True diff --git a/CONTENT/BT3025/MODELS/ICONTHR.MOD b/CONTENT/BT3025/MODELS/ICONTHR.MOD new file mode 100644 index 0000000..a94d32d --- /dev/null +++ b/CONTENT/BT3025/MODELS/ICONTHR.MOD @@ -0,0 +1,16 @@ +[video] +object=thr.bgf +rubble=thr_tshd.bgf + +[collision] +name=thr_cv.sld + +[gauge] +image=thor_ga.gim + +[gamedata] +class=CulturalIconClassID +DamageZones=iconthr.dmg +StoppingCollisionVolume=1 +ExplosionModelFile=thrdead +TimeDelay=0.5 diff --git a/CONTENT/BT3025/MODELS/ICONTHRD.MOD b/CONTENT/BT3025/MODELS/ICONTHRD.MOD new file mode 100644 index 0000000..1d21e52 --- /dev/null +++ b/CONTENT/BT3025/MODELS/ICONTHRD.MOD @@ -0,0 +1,11 @@ +[video] +object=thrtor_a.bgf thrd.bgf thrhip_a.bgf + +[collision] +name=thr_cv.sld + +[gauge] +image=thor_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/ICONVUL.DMG b/CONTENT/BT3025/MODELS/ICONVUL.DMG new file mode 100644 index 0000000..8a402ba --- /dev/null +++ b/CONTENT/BT3025/MODELS/ICONVUL.DMG @@ -0,0 +1,3 @@ +[default] +WeaponDamagePoints=200 +VitalDamageZone=True diff --git a/CONTENT/BT3025/MODELS/ICONVUL.MOD b/CONTENT/BT3025/MODELS/ICONVUL.MOD new file mode 100644 index 0000000..4a5bf34 --- /dev/null +++ b/CONTENT/BT3025/MODELS/ICONVUL.MOD @@ -0,0 +1,16 @@ +[video] +object=vul.bgf +rubble=thr_tshd.bgf + +[collision] +name=vul_cv.sld + +[gauge] +image=thor_ga.gim + +[gamedata] +class=CulturalIconClassID +DamageZones=iconvul.dmg +StoppingCollisionVolume=1 +ExplosionModelFile=thrdead +TimeDelay=0.5 diff --git a/CONTENT/BT3025/MODELS/JAKDMG.EXP b/CONTENT/BT3025/MODELS/JAKDMG.EXP new file mode 100644 index 0000000..c9b1598 --- /dev/null +++ b/CONTENT/BT3025/MODELS/JAKDMG.EXP @@ -0,0 +1,28 @@ +[OneDamage] +ExplosionModelFile=dam1hit +DamageLevel=0.2 +TimeDelay=0.0 + +[TwoDamage] +ExplosionModelFile=dam2hit +DamageLevel=0.4 +TimeDelay=0.0 + +[ThreeDamage] +ExplosionModelFile=dam3hit +DamageLevel=0.6 +TimeDelay=0.0 + +[FourDamage] +ExplosionModelFile=dam4hit +DamageLevel=0.8 +TimeDelay=0.0 + +[DestroyedExplosion] +ExplosionModelFile=desthit +GraphicState=Destroyed + +[GoneExplosion] +ExplosionModelFile=desthit +GraphicState=Gone + diff --git a/CONTENT/BT3025/MODELS/JAKTHR.CTL b/CONTENT/BT3025/MODELS/JAKTHR.CTL new file mode 100644 index 0000000..92cbc70 --- /dev/null +++ b/CONTENT/BT3025/MODELS/JAKTHR.CTL @@ -0,0 +1,63 @@ +[StickPosition_JP] +IOMapping=JoystickPhysical +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=StickPosition +Mode=ModeAlwaysActive + +[TorsoLeft_BJHL] +IOMapping=ButtonJoystickHatLeft +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoLeft +Mode=ModeAlwaysActive + +[TorsoRight_BJHR] +IOMapping=ButtonJoystickHatRight +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoRight +Mode=ModeAlwaysActive + +[GAUSS_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=GAUSS_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[LLaser_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=LLaser +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_3_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser_3 +AttributeID=TriggerState +Mode=ModeNonMapping +[LRM15_1_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=LRM15_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[LRM15_2_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=LRM15_2 +AttributeID=TriggerState +Mode=ModeNonMapping diff --git a/CONTENT/BT3025/MODELS/KURITA.MOD b/CONTENT/BT3025/MODELS/KURITA.MOD new file mode 100644 index 0000000..0fa27a8 --- /dev/null +++ b/CONTENT/BT3025/MODELS/KURITA.MOD @@ -0,0 +1,2 @@ +[gamedata] +class=BTTeamClassID diff --git a/CONTENT/BT3025/MODELS/LASER.MOD b/CONTENT/BT3025/MODELS/LASER.MOD new file mode 100644 index 0000000..8de1c62 --- /dev/null +++ b/CONTENT/BT3025/MODELS/LASER.MOD @@ -0,0 +1,65 @@ +[video] +skeleton=thr.skl + +[collision] +name=thr_cv.sld + +[gamedata] +class=MechClassID +MoverMass=2000.0 +MomentOfInertia=1.75 3.125 1.75 +PositiveLinearDragCoefficients=0.14 0.4 0.07 +NegativeLinearDragCoefficients=0.14 0.2 0.08 +AngularDragCoefficients=0.3 0.5 0.3 +FrictionCoefficient=0.1 +ElasticityCoefficient=0.2 +MinimumBounceSpeed=0.2 +MaxAcceleration=4.8 +AnimationPrefix=thr +Subsystems=thor.sub +DamageZones=thor.dmg +RelativeMechValue=1.0 + +[ControlMappings] +Thrustmaster=thrthr.ctl +L4=thrl4.ctl + +[animations] +animationtransition=thrswr.ani +animation=thrwwl.ani +animation=thrwwr.ani +animation=thrwsr.ani +animation=thrwsl.ani +animationtransition=thrwrl.ani +animationtransition=thrwrr.ani +animation=thrrrl.ani +animation=thrrrr.ani +animation=thrrwl.ani +animation=thrrwr.ani +animation=thrbmp.ani +animation=thrbbl.ani +animation=thrbbr.ani +animation=thrbsl.ani +animation=thrbsr.ani +animationtransition=thrsbl.ani +animationtransition=thrsbr.ani + +animationtransition=thrswri.ani +animation=thrwwli.ani +animation=thrwwri.ani +animation=thrwsri.ani +animation=thrwsli.ani +animationtransition=thrwrli.ani +animationtransition=thrwrri.ani +animation=thrrrli.ani +animation=thrrrri.ani +animation=thrrwli.ani +animation=thrrwri.ani +animation=thrbmpi.ani +animation=thrbbli.ani +animation=thrbbri.ani +animation=thrbsli.ani +animation=thrbsri.ani +animationtransition=thrsbli.ani +animationtransition=thrsbri.ani + diff --git a/CONTENT/BT3025/MODELS/LLASER.SUB b/CONTENT/BT3025/MODELS/LLASER.SUB new file mode 100644 index 0000000..61b7f94 --- /dev/null +++ b/CONTENT/BT3025/MODELS/LLASER.SUB @@ -0,0 +1,36 @@ +[Emitter] +Type=EmitterClassID +StartingTemperature=77 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +ThermalConductance=7.10e4 +ThermalMass=9.47e4 +WeaponDamagePoints=3.0 +HeatSink=None +VoltageSource=None +ExplosionModelFile=lzrhit +DamageAmount=5.0 +DamageType=LaserDamage +WeaponRange=600.0 +RechargeRate=4.0 +DischargeTime=0.2 +VitalSubsystem=False +AmmoModelFile=None +VideoObjectName=llaser.bgf +GraphicLength=2000 +HeatCostToFire=6.0 +ThermalResistivityCoefficient=0.0024 +AuxScreenNumber=0 +AuxScreenLabel=qllas.pcc +EngScreenLabel=ellas.pcc +SeekVoltage=0.6 +SeekVoltage=0.7 +SeekVoltage=0.8 +SeekVoltage=0.99 +SeekVoltageRecommendedIndex=2 +PipPosition=1 +PipPosition=1 +PipColor=1.0 0.0 0.0 +PipExtendedRange=False +StartTime=1.0 +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT3025/MODELS/LNTRK1.MOD b/CONTENT/BT3025/MODELS/LNTRK1.MOD new file mode 100644 index 0000000..3564bf2 --- /dev/null +++ b/CONTENT/BT3025/MODELS/LNTRK1.MOD @@ -0,0 +1,14 @@ +[video] +object=trk1.bgf +rubble=trk1d.bgf + +[collision] +name=trk1_cv.sld + +[gamedata] +class=LandmarkClassID +DamageZones=trk.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=desthit +TimeDelay=0.5 +CrunchExplosionModelFile=stephit diff --git a/CONTENT/BT3025/MODELS/LOK1DMG.EXP b/CONTENT/BT3025/MODELS/LOK1DMG.EXP new file mode 100644 index 0000000..c9b1598 --- /dev/null +++ b/CONTENT/BT3025/MODELS/LOK1DMG.EXP @@ -0,0 +1,28 @@ +[OneDamage] +ExplosionModelFile=dam1hit +DamageLevel=0.2 +TimeDelay=0.0 + +[TwoDamage] +ExplosionModelFile=dam2hit +DamageLevel=0.4 +TimeDelay=0.0 + +[ThreeDamage] +ExplosionModelFile=dam3hit +DamageLevel=0.6 +TimeDelay=0.0 + +[FourDamage] +ExplosionModelFile=dam4hit +DamageLevel=0.8 +TimeDelay=0.0 + +[DestroyedExplosion] +ExplosionModelFile=desthit +GraphicState=Destroyed + +[GoneExplosion] +ExplosionModelFile=desthit +GraphicState=Gone + diff --git a/CONTENT/BT3025/MODELS/LOK1THR.CTL b/CONTENT/BT3025/MODELS/LOK1THR.CTL new file mode 100644 index 0000000..589d6a2 --- /dev/null +++ b/CONTENT/BT3025/MODELS/LOK1THR.CTL @@ -0,0 +1,75 @@ +[StickPosition_JP] +IOMapping=JoystickPhysical +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=StickPosition +Mode=ModeAlwaysActive + +[TorsoLeft_BJHL] +IOMapping=ButtonJoystickHatLeft +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoLeft +Mode=ModeAlwaysActive + +[TorsoRight_BJHR] +IOMapping=ButtonJoystickHatRight +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoRight +Mode=ModeAlwaysActive + +[PPC_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=PPC_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[PPC_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=PPC_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[LLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=LLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[LLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=LLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[MLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=MLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[MLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=MLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[SLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=SLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[SLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=SLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[SRM4_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=SRM4 +AttributeID=TriggerState +Mode=ModeNonMapping diff --git a/CONTENT/BT3025/MODELS/LOK2DMG.EXP b/CONTENT/BT3025/MODELS/LOK2DMG.EXP new file mode 100644 index 0000000..c9b1598 --- /dev/null +++ b/CONTENT/BT3025/MODELS/LOK2DMG.EXP @@ -0,0 +1,28 @@ +[OneDamage] +ExplosionModelFile=dam1hit +DamageLevel=0.2 +TimeDelay=0.0 + +[TwoDamage] +ExplosionModelFile=dam2hit +DamageLevel=0.4 +TimeDelay=0.0 + +[ThreeDamage] +ExplosionModelFile=dam3hit +DamageLevel=0.6 +TimeDelay=0.0 + +[FourDamage] +ExplosionModelFile=dam4hit +DamageLevel=0.8 +TimeDelay=0.0 + +[DestroyedExplosion] +ExplosionModelFile=desthit +GraphicState=Destroyed + +[GoneExplosion] +ExplosionModelFile=desthit +GraphicState=Gone + diff --git a/CONTENT/BT3025/MODELS/LOK2THR.CTL b/CONTENT/BT3025/MODELS/LOK2THR.CTL new file mode 100644 index 0000000..4cccfd8 --- /dev/null +++ b/CONTENT/BT3025/MODELS/LOK2THR.CTL @@ -0,0 +1,75 @@ +[StickPosition_JP] +IOMapping=JoystickPhysical +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=StickPosition +Mode=ModeAlwaysActive + +[TorsoLeft_BJHL] +IOMapping=ButtonJoystickHatLeft +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoLeft +Mode=ModeAlwaysActive + +[TorsoRight_BJHR] +IOMapping=ButtonJoystickHatRight +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoRight +Mode=ModeAlwaysActive + +[PPC_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=PPC +AttributeID=TriggerState +Mode=ModeNonMapping +[GAUSS_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=GAUSS +AttributeID=TriggerState +Mode=ModeNonMapping +[AFC25_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=AFC25 +AttributeID=TriggerState +Mode=ModeNonMapping +[MLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=MLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[MLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=MLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[MLaser_3_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=MLaser_3 +AttributeID=TriggerState +Mode=ModeNonMapping +[SLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=SLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[SLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=SLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[SRM4_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=SRM4 +AttributeID=TriggerState +Mode=ModeNonMapping diff --git a/CONTENT/BT3025/MODELS/LOKDEAD.MOD b/CONTENT/BT3025/MODELS/LOKDEAD.MOD new file mode 100644 index 0000000..83959ea --- /dev/null +++ b/CONTENT/BT3025/MODELS/LOKDEAD.MOD @@ -0,0 +1,9 @@ +[video] +object=104 3 4 5 1007 15 1001 + +[audio] +external=brnext.scp + +[gamedata] +class=ExplosionClassID +ExplosionDuration=9.0 diff --git a/CONTENT/BT3025/MODELS/LOKDMG.EXP b/CONTENT/BT3025/MODELS/LOKDMG.EXP new file mode 100644 index 0000000..c9b1598 --- /dev/null +++ b/CONTENT/BT3025/MODELS/LOKDMG.EXP @@ -0,0 +1,28 @@ +[OneDamage] +ExplosionModelFile=dam1hit +DamageLevel=0.2 +TimeDelay=0.0 + +[TwoDamage] +ExplosionModelFile=dam2hit +DamageLevel=0.4 +TimeDelay=0.0 + +[ThreeDamage] +ExplosionModelFile=dam3hit +DamageLevel=0.6 +TimeDelay=0.0 + +[FourDamage] +ExplosionModelFile=dam4hit +DamageLevel=0.8 +TimeDelay=0.0 + +[DestroyedExplosion] +ExplosionModelFile=desthit +GraphicState=Destroyed + +[GoneExplosion] +ExplosionModelFile=desthit +GraphicState=Gone + diff --git a/CONTENT/BT3025/MODELS/LOKI.SUB b/CONTENT/BT3025/MODELS/LOKI.SUB new file mode 100644 index 0000000..3cf1c01 --- /dev/null +++ b/CONTENT/BT3025/MODELS/LOKI.SUB @@ -0,0 +1,212 @@ +[HeatSink] +Type=HeatSinkClassID +Include=heatsnk.sub +HeatSinkCount=15 +SubsystemFlags=DontReplicateFlag + +[Reservoir] +Type=ReservoirClassID +Include=reserve.sub +HeatSink=HeatSink +SegmentPageName=siteeyepoint + +[Condenser1] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser2] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser3] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser4] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser5] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser6] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[GeneratorA] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser1 +SubsystemFlags=DontReplicateFlag + +[GeneratorB] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser2 +SubsystemFlags=DontReplicateFlag + +[GeneratorC] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser3 +SubsystemFlags=DontReplicateFlag + +[GeneratorD] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser5 +SubsystemFlags=DontReplicateFlag + +[Avionics] +Type=SensorClassID +Include=sensor.sub +HeatSink=Condenser2 +VoltageSource=GeneratorD +AuxScreenNumber=5 +SubsystemFlags=DontReplicateFlag + +AuxScreenPlacement=2 +[Myomers] +Type=MyomersClassID +Include=myomers.sub +HeatSink=Condenser5 +VoltageSource=GeneratorD +AuxScreenNumber=6 +SubsystemFlags=DontReplicateFlag + +AuxScreenPlacement=0 +[Gyroscope] +Type=GyroscopeClassID +Include=gyro.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag + +[Torso] +Type=TorsoClassID +Include=torso.sub +WatchedSubsystem=Myomers + +HorizontalRotationPerSecond=45 +VerticalRotationPerSecond=30 +HorizontalLimitRight=-180 +HorizontalLimitLeft=180 +[HUD] +Type=HUDClassID +Include=hud.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag + +[Searchlight] +Type=SearchlightClassID +Include=srchlite.sub +WatchedSubsystem=Avionics +SegmentPageName=sitelight + +[ThermalSight] +Type=ThermalSightClassID +Include=Thermal.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag +[AmmoBinAFC50_1] +Type=AmmoBinClassID +Include=ammafc50.sub +WatchedSubsystem=AFC50_1 +AmmoCount=20 +[AFC50_1] +AmmoBin=AmmoBinAFC50_1 +Type=ProjectileWeaponClassID +Include=afc50.sub +SegmentPageName=sitelgunport +PipPosition=1 +VoltageSource=GeneratorA +HeatSink=Condenser4 +AuxScreenNumber=1 +AuxScreenPlacement=4 +[AmmoBinAFC50_2] +Type=AmmoBinClassID +Include=ammafc50.sub +WatchedSubsystem=AFC50_2 +AmmoCount=20 +[AFC50_2] +AmmoBin=AmmoBinAFC50_2 +Type=ProjectileWeaponClassID +Include=afc50.sub +SegmentPageName=sitergunport +PipPosition=2 +VoltageSource=GeneratorC +HeatSink=Condenser6 +AuxScreenNumber=10 +AuxScreenPlacement=6 +[ERMLaser_1] +Type=EmitterClassID +Include=ermlaser.sub +SegmentPageName=sitelgunport +PipPosition=1 +VoltageSource=GeneratorA +HeatSink=Condenser4 +AuxScreenNumber=3 +AuxScreenPlacement=4 +[ERMLaser_2] +Type=EmitterClassID +Include=ermlaser.sub +SegmentPageName=sitergunport +PipPosition=2 +VoltageSource=GeneratorC +HeatSink=Condenser6 +AuxScreenNumber=12 +AuxScreenPlacement=6 +[ERSLaser_1] +Type=EmitterClassID +Include=erslaser.sub +SegmentPageName=siteltorsoport +PipPosition=1 +VoltageSource=GeneratorA +HeatSink=Condenser1 +AuxScreenNumber=2 +AuxScreenPlacement=1 +[ERSLaser_2] +Type=EmitterClassID +Include=erslaser.sub +SegmentPageName=sitertorsoport +PipPosition=2 +VoltageSource=GeneratorC +HeatSink=Condenser3 +AuxScreenNumber=9 +AuxScreenPlacement=3 +[AmmoBinSRM4] +Type=AmmoBinClassID +Include=ammsrm4.sub +WatchedSubsystem=SRM4 +AmmoCount=12 +[SRM4] +AmmoBin=AmmoBinSRM4 +Type=MissileLauncherClassID +Include=srm4.sub +SegmentPageName=sitemissleport +PipPosition=1 +VoltageSource=GeneratorB +HeatSink=Condenser2 +AuxScreenNumber=8 +AuxScreenPlacement=7 +[MessageManager] +Type=SubsystemMessageManagerClassID +ExplosionModelFile=majhit 1.0 +TerrainHitExplosion=gndhit +RendererCompensateTime=0.3 +[MechTech] +Type=MechTechClassID +AlarmModel=mechalrm +SubsystemFlags=DontReplicateFlag diff --git a/CONTENT/BT3025/MODELS/LOKTHR.CTL b/CONTENT/BT3025/MODELS/LOKTHR.CTL new file mode 100644 index 0000000..77d9f99 --- /dev/null +++ b/CONTENT/BT3025/MODELS/LOKTHR.CTL @@ -0,0 +1,63 @@ +[StickPosition_JP] +IOMapping=JoystickPhysical +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=StickPosition +Mode=ModeAlwaysActive + +[TorsoLeft_BJHL] +IOMapping=ButtonJoystickHatLeft +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoLeft +Mode=ModeAlwaysActive + +[TorsoRight_BJHR] +IOMapping=ButtonJoystickHatRight +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoRight +Mode=ModeAlwaysActive + +[AFC50_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=AFC50_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[AFC50_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=AFC50_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[SRM4_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=SRM4 +AttributeID=TriggerState +Mode=ModeNonMapping diff --git a/CONTENT/BT3025/MODELS/LRM.MOD b/CONTENT/BT3025/MODELS/LRM.MOD new file mode 100644 index 0000000..1a0cd96 --- /dev/null +++ b/CONTENT/BT3025/MODELS/LRM.MOD @@ -0,0 +1,24 @@ +[video] +object=tms_c.bgf + +[audio] +external=msltvl.scp + +[gauge] +image=rivet_ga.gim + +[gamedata] +class=MissileClassID +MoverMass=20.0 +MomentOfInertia=0.01 0.01 0.001 +PositiveLinearDragCoefficients=0.001 0.001 .001 +NegativeLinearDragCoefficients=0.001 0.001 .001 +AngularDragCoefficients=0.01 0.01 0.001 +FrictionCoefficient=0.1 +ElasticityCoefficient=0.0 +MinimumBounceSpeed=0.0 +MaxThrusterRotationRate=60.0 +BurnTime=10.0 +ThrusterAcceleration=300.0 +ThrusterClimb=50.0 +SplashRadius=30.0 diff --git a/CONTENT/BT3025/MODELS/LRM10.SUB b/CONTENT/BT3025/MODELS/LRM10.SUB new file mode 100644 index 0000000..f5560d1 --- /dev/null +++ b/CONTENT/BT3025/MODELS/LRM10.SUB @@ -0,0 +1,33 @@ +[MissileLauncher] +Type=MissileLauncherClassID +StartingTemperature=77.0 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +ThermalConductance=5.33e4 +ThermalMass=7.10e4 +WeaponDamagePoints=3.0 +HeatSink=None +AmmoBin=None +VoltageSource=None +MuzzleVelocity=0.0 5.0 30.0 +TracerInterval=1 +ExplosionModelFile=mslhit +RechargeRate=4.0 +DamageAmount=35.0 +DamageType=ExplosiveDamage +WeaponRange=6000 +HeatCostToFire=4.5e7 +VitalSubsystem=False +MissileCount=10 +ThermalResistivityCoefficient=0.00024 +AuxScreenNumber=0 +AuxScreenLabel=qlrm10.pcc +EngScreenLabel=elrm10.pcc +MinTimeOfFlight=0.5 +MinVoltagePercentToFire=0.30 +MinJamChance=0.05 +PipPosition=1 +PipColor=0.0 1.0 0.0 +PipExtendedRange=True +StartTime=1.0 +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT3025/MODELS/LRM15.SUB b/CONTENT/BT3025/MODELS/LRM15.SUB new file mode 100644 index 0000000..c97915b --- /dev/null +++ b/CONTENT/BT3025/MODELS/LRM15.SUB @@ -0,0 +1,33 @@ +[MissileLauncher] +Type=MissileLauncherClassID +StartingTemperature=77 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +ThermalConductance=5.13e4 +ThermalMass=1.03e5 +WeaponDamagePoints=3.0 +HeatSink=None +AmmoBin=None +VoltageSource=None +MuzzleVelocity=0.0 0.0 30.0 +TracerInterval=1 +ExplosionModelFile=mslhit +RechargeRate=6.0 +DamageAmount=50.0 +DamageType=ExplosiveDamage +WeaponRange=6000 +HeatCostToFire=6.5e7 +VitalSubsystem=False +MissileCount=15 +ThermalResistivityCoefficient=0.00024 +AuxScreenNumber=0 +AuxScreenLabel=qlrm15.pcc +EngScreenLabel=elrm15.pcc +MinTimeOfFlight=0.5 +MinVoltagePercentToFire=0.30 +MinJamChance=0.05 +PipPosition=1 +PipColor=0.0 1.0 0.0 +PipExtendedRange=True +StartTime=1.0 +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT3025/MODELS/LRM20.SUB b/CONTENT/BT3025/MODELS/LRM20.SUB new file mode 100644 index 0000000..cca41c0 --- /dev/null +++ b/CONTENT/BT3025/MODELS/LRM20.SUB @@ -0,0 +1,33 @@ +[MissileLauncher] +Type=MissileLauncherClassID +StartingTemperature=77.0 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +ThermalConductance=5.0e4 +ThermalMass=1.5e5 +WeaponDamagePoints=3.0 +HeatSink=None +AmmoBin=None +VoltageSource=None +MuzzleVelocity=0.0 5.0 30.0 +TracerInterval=1 +ExplosionModelFile=mslhit +RechargeRate=9.0 +DamageAmount=65.0 +DamageType=ExplosiveDamage +WeaponRange=6000 +HeatCostToFire=9.5e7 +MissileCount=20 +VitalSubsystem=False +ThermalResistivityCoefficient=0.00024 +MinTimeOfFlight=0.5 +MinVoltagePercentToFire=0.30 +MinJamChance=0.05 +AuxScreenNumber=0 +AuxScreenLabel=qlrm20.pcc +EngScreenLabel=elrm20.pcc +PipPosition=0 +PipColor=0.0 1.0 0.0 +PipExtendedRange=True +StartTime=1.0 +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT3025/MODELS/LRM5.SUB b/CONTENT/BT3025/MODELS/LRM5.SUB new file mode 100644 index 0000000..ee2c8dc --- /dev/null +++ b/CONTENT/BT3025/MODELS/LRM5.SUB @@ -0,0 +1,33 @@ +[MissileLauncher] +Type=MissileLauncherClassID +StartingTemperature=77.0 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +ThermalConductance=3.94e4 +ThermalMass=2.37e4 +WeaponDamagePoints=3.0 +HeatSink=None +AmmoBin=None +VoltageSource=None +MuzzleVelocity=0.0 0.0 30.0 +TracerInterval=1 +ExplosionModelFile=mslhit +RechargeRate=2.5 +DamageAmount=20.0 +DamageType=ExplosiveDamage +WeaponRange=6000 +HeatCostToFire=1.5e7 +VitalSubsystem=False +ThermalResistivityCoefficient=0.00024 +MissileCount=5 +AuxScreenNumber=0 +AuxScreenLabel=qlrm5.pcc +EngScreenLabel=elrm5.pcc +MinTimeOfFlight=0.5 +MinVoltagePercentToFire=0.30 +MinJamChance=0.05 +PipPosition=1 +PipColor=0.0 1.0 0.0 +PipExtendedRange=True +StartTime=1.0 +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT3025/MODELS/LRMCARRY.MOD b/CONTENT/BT3025/MODELS/LRMCARRY.MOD new file mode 100644 index 0000000..36716a1 --- /dev/null +++ b/CONTENT/BT3025/MODELS/LRMCARRY.MOD @@ -0,0 +1,18 @@ +[video] +object=LRMCARRY.bgf lrms.bgf +rubble=LRMD.bgf + +[collision] +name=LRMCARRY.sld + +[gauge] +image=lrmcarry.gim + +[gamedata] +class=CulturalIconClassID +DamageZones=trk.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=trkdead +TimeDelay=0.5 +CrunchExplosionModelFile=stephit + \ No newline at end of file diff --git a/CONTENT/BT3025/MODELS/LRMLANCH.SUB b/CONTENT/BT3025/MODELS/LRMLANCH.SUB new file mode 100644 index 0000000..ded85ae --- /dev/null +++ b/CONTENT/BT3025/MODELS/LRMLANCH.SUB @@ -0,0 +1,28 @@ +[MissileLauncher] +Type=MissileLauncherClassID +ArmorValue=20.0 +StartingTemperature=300.0 +DegradationTemperature=400.0 +FailureTemperature=500.0 +ThermalConductance=1.0 +ThermalMass=1.0 +WeaponDamagePoints=3.0 +StandardResistance=1.0 +HeatSink=None +AmmoBin=None +VoltageSource=None +MuzzleVelocity=0.0 5.0 30.0 +TracerInterval=1 +ExplosionModelFile=explode +RechargeRate=0.25 +DamageAmount=10.0 +DamageType=ExplosiveDamage +WeaponDamagePoints=10.0 +WeaponRange=6000 +HeatCostToFire=1.0 +ThermalResistivityCoefficient=0.0004 +MinTimeOfFlight=0.5 +MinVoltagePercentToFire=0.30 +PipPosition=1 +StartTime=1.0 +VitalSubsystem=False \ No newline at end of file diff --git a/CONTENT/BT3025/MODELS/LZRHIT.MOD b/CONTENT/BT3025/MODELS/LZRHIT.MOD new file mode 100644 index 0000000..32b5934 --- /dev/null +++ b/CONTENT/BT3025/MODELS/LZRHIT.MOD @@ -0,0 +1,11 @@ +[video] +object=9 + +[audio] +external=lsrexp.scp + +[gamedata] +class=ExplosionClassID +ExplosionResourceTable=LaserExplosionResourceTable +// WARNING Audio Effects require ExplosionDuration >= 4.0 secs +ExplosionDuration=4.0 diff --git a/CONTENT/BT3025/MODELS/LZRHITI.MOD b/CONTENT/BT3025/MODELS/LZRHITI.MOD new file mode 100644 index 0000000..790ee32 --- /dev/null +++ b/CONTENT/BT3025/MODELS/LZRHITI.MOD @@ -0,0 +1,10 @@ +[video] +object=9 + +[audio] +external=lsrexpi.scp + +[gamedata] +class=ExplosionClassID +// WARNING Audio Effects require ExplosionDuration >= 4.0 secs +ExplosionDuration=4.0 diff --git a/CONTENT/BT3025/MODELS/MACHGUN.SUB b/CONTENT/BT3025/MODELS/MACHGUN.SUB new file mode 100644 index 0000000..c3b5370 --- /dev/null +++ b/CONTENT/BT3025/MODELS/MACHGUN.SUB @@ -0,0 +1,33 @@ +[ProjectileWeapon] +Type=ProjectileWeaponClassID +ArmorValue=20.0 +StartingTemperature=77.0 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +ThermalConductance=1.0e4 +ThermalMass=1.19e4 +StandardResistance=1.0 +HeatSink=None +AmmoBin=None +VoltageSource=None +ExplosionModelFile=canhit +RechargeRate=0.2 +DamageAmount=1.0 +DamageType=BallisticDamage +WeaponDamagePoints=2.0 +WeaponRange=150 +HeatCostToFire=1000 +VitalSubsystem=False +TracerInterval=1 +ThermalResistivityCoefficient=0.0024 +AuxScreenNumber=0 +AuxScreenLabel=qmg.pcc +EngScreenLabel=emg.pcc +MinTimeOfFlight=0.5 +MinVoltagePercentToFire=0.30 +MinJamChance=0.1 +PipPosition=1 +PipColor=0.5 0.5 0.5 +PipExtendedRange=False +StartTime=1.0 +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT3025/MODELS/MAD.DMG b/CONTENT/BT3025/MODELS/MAD.DMG new file mode 100644 index 0000000..d705fbf --- /dev/null +++ b/CONTENT/BT3025/MODELS/MAD.DMG @@ -0,0 +1,114 @@ +// Holds Damage Zone Information-- +[dz_btorso] +WeaponDamagePoints=50 +CriticalSubsystem=Power 5 +VitalDamageZone=True + +[dz_dtorso] +WeaponDamagePoints=50 +CriticalSubsystem=Power 5 +VitalDamageZone=True + +[dz_ftorso] +WeaponDamagePoints=50 +CriticalSubsystem=Power 5 +CriticalSubsystem=AmmoBin 10 +VitalDamageZone=True + +[dz_ltorso] +WeaponDamagePoints=50 +CriticalSubsystem=Power 5 +VitalDamageZone=True + +[dz_reardtorso] +WeaponDamagePoints=50 +CriticalSubsystem=Power 5 +VitalDamageZone=True + +[dz_rearltorso] +WeaponDamagePoints=50 +CriticalSubsystem=Power 5 +VitalDamageZone=True + +[dz_rearrtorso] +WeaponDamagePoints=50 +CriticalSubsystem=Power 5 +VitalDamageZone=True + +[dz_rearutorso] +WeaponDamagePoints=50 +CriticalSubsystem=Power 5 +VitalDamageZone=True + +[dz_rtorso] +WeaponDamagePoints=50 +CriticalSubsystem=Power 5 +VitalDamageZone=True + +[dz_searchlight] +WeaponDamagePoints=50 +VitalDamageZone=False + +[dz_utorso] +WeaponDamagePoints=50 +CriticalSubsystem=Power 5 +VitalDamageZone=True + +[dz_rarm] +WeaponDamagePoints=50 +CriticalSubsystem=AmmoBin 10 +VitalDamageZone=False + +[dz_rgun] +WeaponDamagePoints=50 +CriticalSubsystem=AmmoBin 5 +VitalDamageZone=False + +[dz_larm] +WeaponDamagePoints=50 +CriticalSubsystem=PowerBar 10 +VitalDamageZone=False + +[dz_lgun] +WeaponDamagePoints=50 +CriticalSubsystem=PowerBar 5 +VitalDamageZone=False + +[dz_missle] +WeaponDamagePoints=50 +VitalDamageZone=False + +[dz_luleg] +WeaponDamagePoints=50 +CriticalSubsystem=Power 5 +VitalDamageZone=False + +[dz_ldleg] +WeaponDamagePoints=50 +CriticalSubsystem=Power 5 +VitalDamageZone=False + +[dz_lfoot] +WeaponDamagePoints=50 +CriticalSubsystem=Power 5 +VitalDamageZone=False + +[dz_ruleg] +WeaponDamagePoints=50 +CriticalSubsystem=Power 5 +VitalDamageZone=False + +[dz_rdleg] +WeaponDamagePoints=50 +CriticalSubsystem=Power 5 +VitalDamageZone=False + +[dz_rfoot] +WeaponDamagePoints=50 +CriticalSubsystem=Power 5 +VitalDamageZone=False + +[dz_hip] +WeaponDamagePoints=50 +CriticalSubsystem=Power 5 +VitalDamageZone=True diff --git a/CONTENT/BT3025/MODELS/MAD1DMG.EXP b/CONTENT/BT3025/MODELS/MAD1DMG.EXP new file mode 100644 index 0000000..c9b1598 --- /dev/null +++ b/CONTENT/BT3025/MODELS/MAD1DMG.EXP @@ -0,0 +1,28 @@ +[OneDamage] +ExplosionModelFile=dam1hit +DamageLevel=0.2 +TimeDelay=0.0 + +[TwoDamage] +ExplosionModelFile=dam2hit +DamageLevel=0.4 +TimeDelay=0.0 + +[ThreeDamage] +ExplosionModelFile=dam3hit +DamageLevel=0.6 +TimeDelay=0.0 + +[FourDamage] +ExplosionModelFile=dam4hit +DamageLevel=0.8 +TimeDelay=0.0 + +[DestroyedExplosion] +ExplosionModelFile=desthit +GraphicState=Destroyed + +[GoneExplosion] +ExplosionModelFile=desthit +GraphicState=Gone + diff --git a/CONTENT/BT3025/MODELS/MAD1THR.CTL b/CONTENT/BT3025/MODELS/MAD1THR.CTL new file mode 100644 index 0000000..d180080 --- /dev/null +++ b/CONTENT/BT3025/MODELS/MAD1THR.CTL @@ -0,0 +1,69 @@ +[StickPosition_JP] +IOMapping=JoystickPhysical +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=StickPosition +Mode=ModeAlwaysActive + +[TorsoLeft_BJHL] +IOMapping=ButtonJoystickHatLeft +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoLeft +Mode=ModeAlwaysActive + +[TorsoRight_BJHR] +IOMapping=ButtonJoystickHatRight +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoRight +Mode=ModeAlwaysActive + +[AFC25_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=AFC25_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[AFC25_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=AFC25_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[MLaser1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=MLaser1 +AttributeID=TriggerState +Mode=ModeNonMapping +[MLaser2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=MLaser2 +AttributeID=TriggerState +Mode=ModeNonMapping +[MLaser3_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=MLaser3 +AttributeID=TriggerState +Mode=ModeNonMapping +[MLaser4_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=MLaser4 +AttributeID=TriggerState +Mode=ModeNonMapping +[LRM10_1_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=LRM10_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[LRM10_2_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=LRM10_2 +AttributeID=TriggerState +Mode=ModeNonMapping diff --git a/CONTENT/BT3025/MODELS/MAD2DMG.EXP b/CONTENT/BT3025/MODELS/MAD2DMG.EXP new file mode 100644 index 0000000..c9b1598 --- /dev/null +++ b/CONTENT/BT3025/MODELS/MAD2DMG.EXP @@ -0,0 +1,28 @@ +[OneDamage] +ExplosionModelFile=dam1hit +DamageLevel=0.2 +TimeDelay=0.0 + +[TwoDamage] +ExplosionModelFile=dam2hit +DamageLevel=0.4 +TimeDelay=0.0 + +[ThreeDamage] +ExplosionModelFile=dam3hit +DamageLevel=0.6 +TimeDelay=0.0 + +[FourDamage] +ExplosionModelFile=dam4hit +DamageLevel=0.8 +TimeDelay=0.0 + +[DestroyedExplosion] +ExplosionModelFile=desthit +GraphicState=Destroyed + +[GoneExplosion] +ExplosionModelFile=desthit +GraphicState=Gone + diff --git a/CONTENT/BT3025/MODELS/MAD2THR.CTL b/CONTENT/BT3025/MODELS/MAD2THR.CTL new file mode 100644 index 0000000..8279b28 --- /dev/null +++ b/CONTENT/BT3025/MODELS/MAD2THR.CTL @@ -0,0 +1,63 @@ +[StickPosition_JP] +IOMapping=JoystickPhysical +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=StickPosition +Mode=ModeAlwaysActive + +[TorsoLeft_BJHL] +IOMapping=ButtonJoystickHatLeft +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoLeft +Mode=ModeAlwaysActive + +[TorsoRight_BJHR] +IOMapping=ButtonJoystickHatRight +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoRight +Mode=ModeAlwaysActive + +[ERPPC_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERPPC +AttributeID=TriggerState +Mode=ModeNonMapping +[AFC50_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=AFC50 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[LRM15_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=LRM15 +AttributeID=TriggerState +Mode=ModeNonMapping +[SRM6_1_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=SRM6_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[SRM6_2_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=SRM6_2 +AttributeID=TriggerState +Mode=ModeNonMapping diff --git a/CONTENT/BT3025/MODELS/MADDEAD.MOD b/CONTENT/BT3025/MODELS/MADDEAD.MOD new file mode 100644 index 0000000..83959ea --- /dev/null +++ b/CONTENT/BT3025/MODELS/MADDEAD.MOD @@ -0,0 +1,9 @@ +[video] +object=104 3 4 5 1007 15 1001 + +[audio] +external=brnext.scp + +[gamedata] +class=ExplosionClassID +ExplosionDuration=9.0 diff --git a/CONTENT/BT3025/MODELS/MADDMG.EXP b/CONTENT/BT3025/MODELS/MADDMG.EXP new file mode 100644 index 0000000..c9b1598 --- /dev/null +++ b/CONTENT/BT3025/MODELS/MADDMG.EXP @@ -0,0 +1,28 @@ +[OneDamage] +ExplosionModelFile=dam1hit +DamageLevel=0.2 +TimeDelay=0.0 + +[TwoDamage] +ExplosionModelFile=dam2hit +DamageLevel=0.4 +TimeDelay=0.0 + +[ThreeDamage] +ExplosionModelFile=dam3hit +DamageLevel=0.6 +TimeDelay=0.0 + +[FourDamage] +ExplosionModelFile=dam4hit +DamageLevel=0.8 +TimeDelay=0.0 + +[DestroyedExplosion] +ExplosionModelFile=desthit +GraphicState=Destroyed + +[GoneExplosion] +ExplosionModelFile=desthit +GraphicState=Gone + diff --git a/CONTENT/BT3025/MODELS/MADTHR.CTL b/CONTENT/BT3025/MODELS/MADTHR.CTL new file mode 100644 index 0000000..4958c22 --- /dev/null +++ b/CONTENT/BT3025/MODELS/MADTHR.CTL @@ -0,0 +1,57 @@ +[StickPosition_JP] +IOMapping=JoystickPhysical +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=StickPosition +Mode=ModeAlwaysActive + +[TorsoLeft_BJHL] +IOMapping=ButtonJoystickHatLeft +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoLeft +Mode=ModeAlwaysActive + +[TorsoRight_BJHR] +IOMapping=ButtonJoystickHatRight +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoRight +Mode=ModeAlwaysActive + +[AFC100_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=AFC100 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERLLaser_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERLLaser +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[LRM15_1_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=LRM15_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[LRM15_2_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=LRM15_2 +AttributeID=TriggerState +Mode=ModeNonMapping diff --git a/CONTENT/BT3025/MODELS/MAJHIT.MOD b/CONTENT/BT3025/MODELS/MAJHIT.MOD new file mode 100644 index 0000000..f39f276 --- /dev/null +++ b/CONTENT/BT3025/MODELS/MAJHIT.MOD @@ -0,0 +1,9 @@ +[video] +object=1003 + +[audio] +external=medexp.scp + +[gamedata] +class=ExplosionClassID +ExplosionDuration=3.0 diff --git a/CONTENT/BT3025/MODELS/MECHALRM.MOD b/CONTENT/BT3025/MODELS/MECHALRM.MOD new file mode 100644 index 0000000..7636b10 --- /dev/null +++ b/CONTENT/BT3025/MODELS/MECHALRM.MOD @@ -0,0 +1,25 @@ +[gaugeAlarm] + +Destroyed=gotoEngineering +Destroyed=engCooling +Destroyed=engBusMode +// I have no idea what to do for 'destroyed'. + +//Damaged +// I have no idea what to do for 'damaged'. + +CoolantLeaking=gotoEngineering +CoolantLeaking=engCooling + +//Overheating +// I have no idea what to do for 'overheating'. + +ammoBurning=gotoEngineering +ammoBurning=engEject + +Jammed=gotoEngineering +Jammed=engEject + +BadPower=gotoEngineering +BadPower=engBusMode + diff --git a/CONTENT/BT3025/MODELS/MECHDEAD.MOD b/CONTENT/BT3025/MODELS/MECHDEAD.MOD new file mode 100644 index 0000000..9cfd097 --- /dev/null +++ b/CONTENT/BT3025/MODELS/MECHDEAD.MOD @@ -0,0 +1,10 @@ +[video] +object=102 + +[audio] +external=brnext.scp + +[gamedata] +class=ExplosionClassID +// WARNING Audio Effects require ExplosionDuration >= 8.0 secs +ExplosionDuration=8.0 diff --git a/CONTENT/BT3025/MODELS/MECHMOVR.MOD b/CONTENT/BT3025/MODELS/MECHMOVR.MOD new file mode 100644 index 0000000..77b69f9 --- /dev/null +++ b/CONTENT/BT3025/MODELS/MECHMOVR.MOD @@ -0,0 +1,17 @@ +[video] +object=MECHMOVR.bgf mechmovs.bgf +rubble=MECHMD.bgf + +[collision] +name=MECHMOVR.sld + +[gauge] +image=mechmovr.gim + +[gamedata] +class=CulturalIconClassID +DamageZones=trk.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=trkdead +TimeDelay=0.5 +CrunchExplosionModelFile=stephit diff --git a/CONTENT/BT3025/MODELS/MED.DMG b/CONTENT/BT3025/MODELS/MED.DMG new file mode 100644 index 0000000..8405f4a --- /dev/null +++ b/CONTENT/BT3025/MODELS/MED.DMG @@ -0,0 +1,3 @@ +[default] +WeaponDamagePoints=1 +VitalDamageZone=True diff --git a/CONTENT/BT3025/MODELS/MEDDEAD.MOD b/CONTENT/BT3025/MODELS/MEDDEAD.MOD new file mode 100644 index 0000000..ef5a6db --- /dev/null +++ b/CONTENT/BT3025/MODELS/MEDDEAD.MOD @@ -0,0 +1,10 @@ +[video] +object=1018 1016 + +[audio] +external=mbnexp.scp + +[gamedata] +class=ExplosionClassID +// WARNING Audio requires ExplosionDuration >= 12.0 +ExplosionDuration=12.0 diff --git a/CONTENT/BT3025/MODELS/MGHIT.MOD b/CONTENT/BT3025/MODELS/MGHIT.MOD new file mode 100644 index 0000000..052f10e --- /dev/null +++ b/CONTENT/BT3025/MODELS/MGHIT.MOD @@ -0,0 +1,10 @@ +[video] +object=7 11 + +[audio] +external=prjexp.scp + +[gamedata] +class=ExplosionClassID +ExplosionResourceTable=CanonExplosionResourceTable +ExplosionDuration=3.0 diff --git a/CONTENT/BT3025/MODELS/MGHITI.MOD b/CONTENT/BT3025/MODELS/MGHITI.MOD new file mode 100644 index 0000000..288e97a --- /dev/null +++ b/CONTENT/BT3025/MODELS/MGHITI.MOD @@ -0,0 +1,9 @@ +[video] +object=7 9 + +[audio] +external=prjexpi.scp + +[gamedata] +class=ExplosionClassID +ExplosionDuration=3.0 \ No newline at end of file diff --git a/CONTENT/BT3025/MODELS/MINHIT.MOD b/CONTENT/BT3025/MODELS/MINHIT.MOD new file mode 100644 index 0000000..c5db924 --- /dev/null +++ b/CONTENT/BT3025/MODELS/MINHIT.MOD @@ -0,0 +1,9 @@ +[video] +object=1002 + +[audio] +external=smlexp.scp + +[gamedata] +class=ExplosionClassID +ExplosionDuration=3.0 diff --git a/CONTENT/BT3025/MODELS/MLASER.SUB b/CONTENT/BT3025/MODELS/MLASER.SUB new file mode 100644 index 0000000..67fbc5d --- /dev/null +++ b/CONTENT/BT3025/MODELS/MLASER.SUB @@ -0,0 +1,35 @@ +[Emitter] +Type=EmitterClassID +StartingTemperature=77.0 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +ThermalConductance=4.74e4 +ThermalMass=3.16e4 +WeaponDamagePoints=2.0 +HeatSink=None +VoltageSource=None +ExplosionModelFile=lzrhit +DamageAmount=2.5 +DamageType=LaserDamage +WeaponRange=350.0 +RechargeRate=2.0 +DischargeTime=0.2 +VitalSubsystem=False +AmmoModelFile=None +VideoObjectName=mlaser.bgf +GraphicLength=2000 +HeatCostToFire=2.0 +ThermalResistivityCoefficient=0.0024 +AuxScreenNumber=0 +AuxScreenLabel=qmlas.pcc +EngScreenLabel=emlas.pcc +SeekVoltage=0.6 +SeekVoltage=0.7 +SeekVoltage=0.8 +SeekVoltage=0.99 +SeekVoltageRecommendedIndex=2 +PipPosition=1 +PipColor=1.0 0.0 0.0 +PipExtendedRange=False +StartTime=1.0 +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT3025/MODELS/MSL.DMG b/CONTENT/BT3025/MODELS/MSL.DMG new file mode 100644 index 0000000..ba47c42 --- /dev/null +++ b/CONTENT/BT3025/MODELS/MSL.DMG @@ -0,0 +1,3 @@ +[default] +WeaponDamagePoints=30 +VitalDamageZone=True diff --git a/CONTENT/BT3025/MODELS/MSL.MOD b/CONTENT/BT3025/MODELS/MSL.MOD new file mode 100644 index 0000000..8e6db38 --- /dev/null +++ b/CONTENT/BT3025/MODELS/MSL.MOD @@ -0,0 +1,16 @@ +[video] +; +; msl.mod - Missile +; +object=msl.bgf msl_FR.bgf + +[collision] +name=msl_cv.sld + +[gamedata] +class=CulturalIconClassID +DamageZones=msl.dmg +StoppingCollisionVolume=1 +ExplosionModelFile=msldead +TimeDelay=0.5 +//CrunchExplosionModelFile=stephit diff --git a/CONTENT/BT3025/MODELS/MSLBASE.MOD b/CONTENT/BT3025/MODELS/MSLBASE.MOD new file mode 100644 index 0000000..1af25c9 --- /dev/null +++ b/CONTENT/BT3025/MODELS/MSLBASE.MOD @@ -0,0 +1,8 @@ +[video] +object=mslbase.bgf + +[collision] +name=mslbs_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/MSLDEAD.MOD b/CONTENT/BT3025/MODELS/MSLDEAD.MOD new file mode 100644 index 0000000..5148fa9 --- /dev/null +++ b/CONTENT/BT3025/MODELS/MSLDEAD.MOD @@ -0,0 +1,11 @@ +[video] +object=1017 1016 + +[audio] +external=bigexp.scp + +[gamedata] +class=ExplosionClassID +// Audio requires ExplosionDuration >= 5.0 +ExplosionDuration=5.0 + diff --git a/CONTENT/BT3025/MODELS/MSLG.MOD b/CONTENT/BT3025/MODELS/MSLG.MOD new file mode 100644 index 0000000..496409d --- /dev/null +++ b/CONTENT/BT3025/MODELS/MSLG.MOD @@ -0,0 +1,20 @@ +[video] +; +; mslg.mod - Missile gantry +; +object=mslg.bgf mslg_FR.bgf msl.bgf mslg_LP.bgf +rubble=mslgd.bgf + +[collision] +name=mslg_cv.sld + +[gauge] +image=mslg_ga.gim + +[gamedata] +class=CulturalIconClassID +DamageZones=msl.dmg +StoppingCollisionVolume=1 +ExplosionModelFile=msldead +TimeDelay=0.8 +//CrunchExplosionModelFile=stephit diff --git a/CONTENT/BT3025/MODELS/MSLH.MOD b/CONTENT/BT3025/MODELS/MSLH.MOD new file mode 100644 index 0000000..fd0b20d --- /dev/null +++ b/CONTENT/BT3025/MODELS/MSLH.MOD @@ -0,0 +1,11 @@ +[video] +; +; mslh.mod - Missile hub +; +object=mslh.bgf mslh_FR.bgf mslh_LP.bgf + +[collision] +name=mslh_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/MSLHIT.MOD b/CONTENT/BT3025/MODELS/MSLHIT.MOD new file mode 100644 index 0000000..251dc2b --- /dev/null +++ b/CONTENT/BT3025/MODELS/MSLHIT.MOD @@ -0,0 +1,11 @@ +[video] +object=10 12 1023 + +[audio] +external=mslexp.scp + +[gamedata] +class=ExplosionClassID +ExplosionResourceTable=MissileExplosionResourceTable +// WARNING Audio Effects require ExplosionDuration >= 5.0 secs +ExplosionDuration=5.0 diff --git a/CONTENT/BT3025/MODELS/MSLHITI.MOD b/CONTENT/BT3025/MODELS/MSLHITI.MOD new file mode 100644 index 0000000..c878817 --- /dev/null +++ b/CONTENT/BT3025/MODELS/MSLHITI.MOD @@ -0,0 +1,10 @@ +[video] +object=10 12 + +[audio] +external=mslexpi.scp + +[gamedata] +class=ExplosionClassID +// WARNING Audio Effects require ExplosionDuration >= 5.0 secs +ExplosionDuration=5.0 diff --git a/CONTENT/BT3025/MODELS/MSLR.DMG b/CONTENT/BT3025/MODELS/MSLR.DMG new file mode 100644 index 0000000..94cf553 --- /dev/null +++ b/CONTENT/BT3025/MODELS/MSLR.DMG @@ -0,0 +1,3 @@ +[default] +WeaponDamagePoints=500 +VitalDamageZone=True diff --git a/CONTENT/BT3025/MODELS/MSLR.MOD b/CONTENT/BT3025/MODELS/MSLR.MOD new file mode 100644 index 0000000..094149a --- /dev/null +++ b/CONTENT/BT3025/MODELS/MSLR.MOD @@ -0,0 +1,20 @@ +[video] +; +; mslr.mod - Missile hanger +; +object=mslr.bgf mslr_FR.bgf mslr_LP.bgf +rubble=thr_tshd.bgf + +[collision] +name=mslr_cv.sld + +[gauge] +image=mslr_ga.gim + +[gamedata] +class=CulturalIconClassID +DamageZones=mslr.dmg +StoppingCollisionVolume=1 +ExplosionModelFile=msldead +TimeDelay=0.5 +//CrunchExplosionModelFile=stephit diff --git a/CONTENT/BT3025/MODELS/MSLRB.MOD b/CONTENT/BT3025/MODELS/MSLRB.MOD new file mode 100644 index 0000000..c5ae065 --- /dev/null +++ b/CONTENT/BT3025/MODELS/MSLRB.MOD @@ -0,0 +1,11 @@ +[video] +; +; mslrb.mod - Missile hanger base +; +object=calpb.bgf + +[collision] +name=mslrb_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/MSLROAD1.MOD b/CONTENT/BT3025/MODELS/MSLROAD1.MOD new file mode 100644 index 0000000..cce9f2c --- /dev/null +++ b/CONTENT/BT3025/MODELS/MSLROAD1.MOD @@ -0,0 +1,5 @@ +[video] +object=mslroad1.bgf mslb_lp.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/MYOMERS.SUB b/CONTENT/BT3025/MODELS/MYOMERS.SUB new file mode 100644 index 0000000..f35ddef --- /dev/null +++ b/CONTENT/BT3025/MODELS/MYOMERS.SUB @@ -0,0 +1,27 @@ +[Myomers] +Type=MyomersClassID +ArmorValue=20.0 +StartingTemperature=77.0 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +ThermalConductance=190000 +ThermalMass=250000 +HeatSink=None +WeaponDamagePoints=10.0 +VitalSubsystem=True +VelocityEfficiency=0.995 +AccelerationEfficiency=0.8 +VoltageSource=None +StandardResistance=1.0 +ThermalResistivityCoefficient=0.00024 +AuxScreenNumber=0 +AuxScreenLabel=qmyomers.pcc +EngScreenLabel=emyomers.pcc +StartTime=0.0 +SeekVoltage=0.3 +SeekVoltage=0.5 +SeekVoltage=0.7 +SeekVoltage=0.9999 +SeekVoltageRecommendedIndex=2 +CriticalHitScoreBonus=0 +CollisionCriticalHitWeight=0.35 diff --git a/CONTENT/BT3025/MODELS/NORETURN.MOD b/CONTENT/BT3025/MODELS/NORETURN.MOD new file mode 100644 index 0000000..14a3b9f --- /dev/null +++ b/CONTENT/BT3025/MODELS/NORETURN.MOD @@ -0,0 +1,10 @@ +[gamedata] +class=ScenarioRoleClassID +KillBonus=500.0 +DamageReceivedModifier=0.0 +DamageInflictedModifier=1.0 +DamageBias=1.0 +FriendlyFirePenalty=1.0 +ReturnFromDeath=0 +SpecialCaseDeathPenalty=500.0 + diff --git a/CONTENT/BT3025/MODELS/NRK.MOD b/CONTENT/BT3025/MODELS/NRK.MOD new file mode 100644 index 0000000..81cf8a7 --- /dev/null +++ b/CONTENT/BT3025/MODELS/NRK.MOD @@ -0,0 +1,24 @@ +[video] +object=tms_c.bgf + +[audio] +external=msltvl.scp + +[gauge] +image=rivet_ga.gim + +[gamedata] +class=MissileClassID +MoverMass=20.0 +MomentOfInertia=0.01 0.01 0.001 +PositiveLinearDragCoefficients=0.001 0.001 .001 +NegativeLinearDragCoefficients=0.001 0.001 .001 +AngularDragCoefficients=0.01 0.01 0.001 +FrictionCoefficient=0.1 +ElasticityCoefficient=0.0 +MinimumBounceSpeed=0.0 +MaxThrusterRotationRate=360.0 +BurnTime=10.0 +ThrusterAcceleration=300.0 +ThrusterClimb=50.0 +SplashRadius=30.0 diff --git a/CONTENT/BT3025/MODELS/NRK10.SUB b/CONTENT/BT3025/MODELS/NRK10.SUB new file mode 100644 index 0000000..4b79d6a --- /dev/null +++ b/CONTENT/BT3025/MODELS/NRK10.SUB @@ -0,0 +1,33 @@ +[MissileLauncher] +Type=MissileLauncherClassID +StartingTemperature=77.0 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +ThermalConductance=5.33e4 +ThermalMass=7.10e4 +WeaponDamagePoints=3.0 +HeatSink=None +AmmoBin=None +VoltageSource=None +MuzzleVelocity=0.0 0.0 30.0 +TracerInterval=1 +ExplosionModelFile=mslhit +RechargeRate=4.0 +DamageAmount=20.0 +DamageType=ExplosiveDamage +WeaponRange=6000 +HeatCostToFire=4.5e7 +VitalSubsystem=False +MissileCount=10 +ThermalResistivityCoefficient=0.00024 +AuxScreenNumber=0 +AuxScreenLabel=qnrk10.pcc +EngScreenLabel=enrk10.pcc +MinTimeOfFlight=0.5 +MinVoltagePercentToFire=0.30 +MinJamChance=0.05 +PipPosition=1 +PipColor=0.0 1.0 0.0 +PipExtendedRange=True +StartTime=1.0 +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT3025/MODELS/NRK15.SUB b/CONTENT/BT3025/MODELS/NRK15.SUB new file mode 100644 index 0000000..9f28c85 --- /dev/null +++ b/CONTENT/BT3025/MODELS/NRK15.SUB @@ -0,0 +1,33 @@ +[MissileLauncher] +Type=MissileLauncherClassID +StartingTemperature=77 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +ThermalConductance=5.13e4 +ThermalMass=1.03e5 +WeaponDamagePoints=3.0 +HeatSink=None +AmmoBin=None +VoltageSource=None +MuzzleVelocity=0.0 5.0 30.0 +TracerInterval=1 +ExplosionModelFile=mslhit +RechargeRate=6.0 +DamageAmount=35.0 +DamageType=ExplosiveDamage +WeaponRange=6000 +HeatCostToFire=6.5e7 +VitalSubsystem=False +MissileCount=15 +ThermalResistivityCoefficient=0.00024 +AuxScreenNumber=0 +AuxScreenLabel=qnrk15.pcc +EngScreenLabel=enrk15.pcc +MinTimeOfFlight=0.5 +MinVoltagePercentToFire=0.30 +MinJamChance=0.05 +PipPosition=1 +PipColor=0.0 1.0 0.0 +PipExtendedRange=True +StartTime=1.0 +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT3025/MODELS/NRK20.SUB b/CONTENT/BT3025/MODELS/NRK20.SUB new file mode 100644 index 0000000..c9f4cd8 --- /dev/null +++ b/CONTENT/BT3025/MODELS/NRK20.SUB @@ -0,0 +1,33 @@ +[MissileLauncher] +Type=MissileLauncherClassID +StartingTemperature=77.0 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +ThermalConductance=5.0e4 +ThermalMass=1.5e5 +WeaponDamagePoints=3.0 +HeatSink=None +AmmoBin=None +VoltageSource=None +MuzzleVelocity=0.0 5.0 30.0 +TracerInterval=1 +ExplosionModelFile=mslhit +RechargeRate=9.0 +DamageAmount=50.0 +DamageType=ExplosiveDamage +WeaponRange=6000 +HeatCostToFire=9.5e7 +MissileCount=20 +VitalSubsystem=False +ThermalResistivityCoefficient=0.00024 +MinTimeOfFlight=0.5 +MinVoltagePercentToFire=0.30 +MinJamChance=0.05 +AuxScreenNumber=0 +AuxScreenLabel=qnrk20.pcc +EngScreenLabel=enrk20.pcc +PipPosition=0 +PipColor=0.0 1.0 0.0 +PipExtendedRange=True +StartTime=1.0 +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT3025/MODELS/NRK5.SUB b/CONTENT/BT3025/MODELS/NRK5.SUB new file mode 100644 index 0000000..fb711e3 --- /dev/null +++ b/CONTENT/BT3025/MODELS/NRK5.SUB @@ -0,0 +1,33 @@ +[MissileLauncher] +Type=MissileLauncherClassID +StartingTemperature=77.0 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +ThermalConductance=3.94e4 +ThermalMass=2.37e4 +WeaponDamagePoints=3.0 +HeatSink=None +AmmoBin=None +VoltageSource=None +MuzzleVelocity=0.0 5.0 30.0 +TracerInterval=1 +ExplosionModelFile=mslhit +RechargeRate=2.5 +DamageAmount=10.0 +DamageType=ExplosiveDamage +WeaponRange=6000 +HeatCostToFire=1.5e7 +VitalSubsystem=False +ThermalResistivityCoefficient=0.00024 +MissileCount=5 +AuxScreenNumber=0 +AuxScreenLabel=qnrk5.pcc +EngScreenLabel=enrk5.pcc +MinTimeOfFlight=0.5 +MinVoltagePercentToFire=0.30 +MinJamChance=0.05 +PipPosition=1 +PipColor=0.0 1.0 0.0 +PipExtendedRange=True +StartTime=1.0 +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT3025/MODELS/NTR.MOD b/CONTENT/BT3025/MODELS/NTR.MOD new file mode 100644 index 0000000..fe011ba --- /dev/null +++ b/CONTENT/BT3025/MODELS/NTR.MOD @@ -0,0 +1,5 @@ +[video] +object=ntr.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/OLDCON.SUB b/CONTENT/BT3025/MODELS/OLDCON.SUB new file mode 100644 index 0000000..55b43dc --- /dev/null +++ b/CONTENT/BT3025/MODELS/OLDCON.SUB @@ -0,0 +1,13 @@ +[Condenser] +Type=CondenserClassID +ArmorValue=10.0 +StartingTemperature=77.0 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +ThermalConductance=190000 +ThermalMass=17000 +HeatSink=None +ValveSetting=.166667 +RefrigerationFactor=2.0 +WeaponDamagePoints=50.0 +VitalSubsystem=False diff --git a/CONTENT/BT3025/MODELS/OLDGEN.SUB b/CONTENT/BT3025/MODELS/OLDGEN.SUB new file mode 100644 index 0000000..1e476e8 --- /dev/null +++ b/CONTENT/BT3025/MODELS/OLDGEN.SUB @@ -0,0 +1,17 @@ +[Generator] +Type=GeneratorClassID +ArmorValue=10.0 +StartingTemperature=373.0 +DegradationTemperature=1200.0 +FailureTemperature=1357.0 +ThermalConductance=400000 +ThermalMass=300000 +HeatSink=None +WeaponDamagePoints=50.0 +ThermalResistance=0.0004 +RatedVoltage=10000.0 +WeaponDamagePoints=50.0 +VitalSubsystem=False +StartTime=1.0 +ShortRecoveryTime=1.0 +MaxTapCount=6 \ No newline at end of file diff --git a/CONTENT/BT3025/MODELS/OLDLOKI.SUB b/CONTENT/BT3025/MODELS/OLDLOKI.SUB new file mode 100644 index 0000000..dff0827 --- /dev/null +++ b/CONTENT/BT3025/MODELS/OLDLOKI.SUB @@ -0,0 +1,132 @@ +[HeatSink] +Type=HeatSinkClassID +Include=heatsnk.sub +HeatSinkCount=26 + +// Condenser1 is for lasers +[Condenser1] +Type=CondenserClassID +Include=condensr.sub +ValveSetting=1.0 +HeatSink=HeatSink + +// Condenser2 is for all other weapons +[Condenser2] +Type=CondenserClassID +Include=condensr.sub +ValveSetting=1.0 +HeatSink=HeatSink + + +[Generator] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=HeatSink + +[PowerBar] +Type=PowerBarClassID +Include=pwrbar.sub +HeatSink=HeatSink +VoltageSource=Generator + + +[AmmoBinGaussRifle] +Type=AmmoBinClassID +Include=ammogaus.sub +HeatSink=HeatSink +VoltageSource=Generator + +[GaussRifle] +Type=GaussRifleClassID +Include=gaussrfl.sub +HeatSink=Condenser2 +VoltageSource=PowerBar +AmmoBin=AmmoBinGaussRifle +SegmentPageName=sitelgunport + +[AmmoBinAutoCannon] +Type=AmmoBinClassID +Include=ammoac10.sub +HeatSink=HeatSink +VoltageSource=Generator + +[AutoCannon] +Type=ProjectileWeaponClassID +Include=ac10.sub +HeatSink=Condenser2 +VoltageSource=AmmoBinAutoCannon +SegmentPageName=sitergunport + +[AmmoBinMG1] +Type=AmmoBinClassID +Include=ammomg.sub +HeatSink=HeatSink +VoltageSource=Generator + +[AmmoBinMG2] +Type=AmmoBinClassID +Include=ammomg.sub +HeatSink=HeatSink +VoltageSource=Generator + +[MachineGun1] +Type=ProjectileWeaponClassID +Include=machgun.sub +HeatSink=Condenser2 +VoltageSource=AmmoBinMG1 +SegmentPageName=siteltorsoport + +[MachineGun2] +Type=ProjectileWeaponClassID +Include=machgun.sub +HeatSink=Condenser2 +VoltageSource=AmmoBinMG2 +SegmentPageName=sitertorsoport + +[AmmoBinSRM] +Type=AmmoBinClassID +Include=ammsrm6.sub +HeatSink=HeatSink +VoltageSource=Generator + +[SRM] +Type=MissileLauncherClassID +Include=srm6.sub +HeatSink=Condenser2 +VoltageSource=AmmoBinSRM +AmmoBin=AmmoBinSRM +SegmentPageName=sitemissleport + +[MediumLaser1] +Type=EmitterClassID +Include=mlaser.sub +HeatSink=Condenser1 +VoltageSource=PowerBar +SegmentPageName=sitelgunport + +[MediumLaser2] +Type=EmitterClassID +Include=mlaser.sub +HeatSink=Condenser1 +VoltageSource=PowerBar +SegmentPageName=sitergunport + +[SmallLaser1] +Type=EmitterClassID +Include=slaser.sub +HeatSink=Condenser1 +VoltageSource=PowerBar +SegmentPageName=siteltorsoport + +[SmallLaser2] +Type=EmitterClassID +Include=slaser.sub +HeatSink=Condenser1 +VoltageSource=PowerBar +SegmentPageName=sitertorsoport + + + + + + diff --git a/CONTENT/BT3025/MODELS/OWN1DMG.EXP b/CONTENT/BT3025/MODELS/OWN1DMG.EXP new file mode 100644 index 0000000..c9b1598 --- /dev/null +++ b/CONTENT/BT3025/MODELS/OWN1DMG.EXP @@ -0,0 +1,28 @@ +[OneDamage] +ExplosionModelFile=dam1hit +DamageLevel=0.2 +TimeDelay=0.0 + +[TwoDamage] +ExplosionModelFile=dam2hit +DamageLevel=0.4 +TimeDelay=0.0 + +[ThreeDamage] +ExplosionModelFile=dam3hit +DamageLevel=0.6 +TimeDelay=0.0 + +[FourDamage] +ExplosionModelFile=dam4hit +DamageLevel=0.8 +TimeDelay=0.0 + +[DestroyedExplosion] +ExplosionModelFile=desthit +GraphicState=Destroyed + +[GoneExplosion] +ExplosionModelFile=desthit +GraphicState=Gone + diff --git a/CONTENT/BT3025/MODELS/OWN1THR.CTL b/CONTENT/BT3025/MODELS/OWN1THR.CTL new file mode 100644 index 0000000..190ad1b --- /dev/null +++ b/CONTENT/BT3025/MODELS/OWN1THR.CTL @@ -0,0 +1,51 @@ +[StickPosition_JP] +IOMapping=JoystickPhysical +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=StickPosition +Mode=ModeAlwaysActive + +[TorsoLeft_BJHL] +IOMapping=ButtonJoystickHatLeft +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoLeft +Mode=ModeAlwaysActive + +[TorsoRight_BJHR] +IOMapping=ButtonJoystickHatRight +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoRight +Mode=ModeAlwaysActive + +[AFC25_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=AFC25 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser +AttributeID=TriggerState +Mode=ModeNonMapping +[NRK5_1_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=NRK5_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[NRK5_2_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=NRK5_2 +AttributeID=TriggerState +Mode=ModeNonMapping diff --git a/CONTENT/BT3025/MODELS/OWNDEAD.MOD b/CONTENT/BT3025/MODELS/OWNDEAD.MOD new file mode 100644 index 0000000..83959ea --- /dev/null +++ b/CONTENT/BT3025/MODELS/OWNDEAD.MOD @@ -0,0 +1,9 @@ +[video] +object=104 3 4 5 1007 15 1001 + +[audio] +external=brnext.scp + +[gamedata] +class=ExplosionClassID +ExplosionDuration=9.0 diff --git a/CONTENT/BT3025/MODELS/OWNDMG.EXP b/CONTENT/BT3025/MODELS/OWNDMG.EXP new file mode 100644 index 0000000..c9b1598 --- /dev/null +++ b/CONTENT/BT3025/MODELS/OWNDMG.EXP @@ -0,0 +1,28 @@ +[OneDamage] +ExplosionModelFile=dam1hit +DamageLevel=0.2 +TimeDelay=0.0 + +[TwoDamage] +ExplosionModelFile=dam2hit +DamageLevel=0.4 +TimeDelay=0.0 + +[ThreeDamage] +ExplosionModelFile=dam3hit +DamageLevel=0.6 +TimeDelay=0.0 + +[FourDamage] +ExplosionModelFile=dam4hit +DamageLevel=0.8 +TimeDelay=0.0 + +[DestroyedExplosion] +ExplosionModelFile=desthit +GraphicState=Destroyed + +[GoneExplosion] +ExplosionModelFile=desthit +GraphicState=Gone + diff --git a/CONTENT/BT3025/MODELS/OWNTHR.CTL b/CONTENT/BT3025/MODELS/OWNTHR.CTL new file mode 100644 index 0000000..880db63 --- /dev/null +++ b/CONTENT/BT3025/MODELS/OWNTHR.CTL @@ -0,0 +1,69 @@ +[StickPosition_JP] +IOMapping=JoystickPhysical +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=StickPosition +Mode=ModeAlwaysActive + +[TorsoLeft_BJHL] +IOMapping=ButtonJoystickHatLeft +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoLeft +Mode=ModeAlwaysActive + +[TorsoRight_BJHR] +IOMapping=ButtonJoystickHatRight +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoRight +Mode=ModeAlwaysActive + +[ERMLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_3_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser_3 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_4_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser_4 +AttributeID=TriggerState +Mode=ModeNonMapping +[SRM6_1_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=SRM6_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[SRM6_2_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=SRM6_2 +AttributeID=TriggerState +Mode=ModeNonMapping diff --git a/CONTENT/BT3025/MODELS/PDSH.MOD b/CONTENT/BT3025/MODELS/PDSH.MOD new file mode 100644 index 0000000..a20abc0 --- /dev/null +++ b/CONTENT/BT3025/MODELS/PDSH.MOD @@ -0,0 +1,20 @@ +[video] +; +; pdsh.mod - Radar dish +; +object=pdsh.bgf pdsh_FR.bgf pdsh_LP.bgf +rubble=pdsd.bgf pdsd_FR.bgf + +[collision] +name=pdsh_cv.sld + +[gauge] +image=pdsh_ga.gim + +[gamedata] +class=CulturalIconClassID +DamageZones=med.dmg +StoppingCollisionVolume=1 +ExplosionModelFile=meddead +TimeDelay=0.5 +CrunchExplosionModelFile=stephit diff --git a/CONTENT/BT3025/MODELS/PGN.DMG b/CONTENT/BT3025/MODELS/PGN.DMG new file mode 100644 index 0000000..9590cdf --- /dev/null +++ b/CONTENT/BT3025/MODELS/PGN.DMG @@ -0,0 +1,3 @@ +[dz_base] +WeaponDamagePoints=1 +VitalDamageZone=True diff --git a/CONTENT/BT3025/MODELS/PGN.MOD b/CONTENT/BT3025/MODELS/PGN.MOD new file mode 100644 index 0000000..889ec4c --- /dev/null +++ b/CONTENT/BT3025/MODELS/PGN.MOD @@ -0,0 +1,36 @@ +[video] +skeleton=pgn.skl +//destroyed=pgnd.skl + +[collision] +name=pgn_cv.sld + +[gauge] +image=pgn_ga.gim + +[gamedata] +class=TurretClassID +MoverMass=2.0 +MomentOfInertia=1.75 3.125 1.75 +PositiveLinearDragCoefficients=0.14 0.4 0.07 +NegativeLinearDragCoefficients=0.14 0.2 0.08 +AngularDragCoefficients=0.3 0.5 0.3 +FrictionCoefficient=0.0 +ElasticityCoefficient=0.0 +MinimumBounceSpeed=0.0 +DamageZones=pgn.dmg +ExplosionModelFile=majhit +TurretJointName=jointturret +GunJointName=jointgun +RotationSpeedMin=0.5 +RotationSpeedMax=1.0 +ElevationSpeedMin=0.1 +ElevationSpeedMax=0.2 +RateSkillMin=2.0 +RateSkillMax=1.0 +RateAdjMin=0.001 +RateAdjMax=0.005 +AccuracySkillMin=0.4 +AccuracySkillMax=0.8 +AccuracyAdjMin=0.001 +AccuracyAdjMax=0.005 diff --git a/CONTENT/BT3025/MODELS/PLAYER.MOD b/CONTENT/BT3025/MODELS/PLAYER.MOD new file mode 100644 index 0000000..d3288b5 --- /dev/null +++ b/CONTENT/BT3025/MODELS/PLAYER.MOD @@ -0,0 +1,3 @@ +[audio] +internal=plyint.scp + diff --git a/CONTENT/BT3025/MODELS/PLIT.MOD b/CONTENT/BT3025/MODELS/PLIT.MOD new file mode 100644 index 0000000..1b0d0ef --- /dev/null +++ b/CONTENT/BT3025/MODELS/PLIT.MOD @@ -0,0 +1,17 @@ +[video] +; +; plit.mod - Utility light +; +object=plit.bgf plit_FR.bgf +rubble=pltd.bgf pltd_FR.bgf + +[collision] +name=plit_cv.sld + +[gamedata] +class=CulturalIconClassID +DamageZones=sml.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=smldead +TimeDelay=0.5 +CrunchExplosionModelFile=smldead diff --git a/CONTENT/BT3025/MODELS/PPC.SUB b/CONTENT/BT3025/MODELS/PPC.SUB new file mode 100644 index 0000000..fa205d2 --- /dev/null +++ b/CONTENT/BT3025/MODELS/PPC.SUB @@ -0,0 +1,36 @@ +[PPC] +Type=PPCClassID +StartingTemperature=77.0 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +ThermalConductance=8.68e4 +ThermalMass=1.74e5 +WeaponDamagePoints=3.0 +HeatSink=None +VoltageSource=None +//ThresholdVoltagePercent=0.95 +AmmoModelFile=None +ExplosionModelFile=ppchit +DamageAmount=12.0 +DamageType=EnergyDamage +WeaponRange=900.0 +RechargeRate=5.0 +DischargeTime=0.2 +VitalSubsystem=False +VideoObjectName=ppc.bgf +GraphicLength=2000 +HeatCostToFire=11.0 +ThermalResistivityCoefficient=0.0024 +AuxScreenNumber=0 +AuxScreenLabel=qppc.pcc +EngScreenLabel=eppc.pcc +SeekVoltage=0.6 +SeekVoltage=0.7 +SeekVoltage=0.8 +SeekVoltage=0.99 +SeekVoltageRecommendedIndex=2 +PipPosition=1 +PipColor=0 0 1 +PipExtendedRange=False +StartTime=1.0 +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT3025/MODELS/PPCHIT.MOD b/CONTENT/BT3025/MODELS/PPCHIT.MOD new file mode 100644 index 0000000..7c1fb3c --- /dev/null +++ b/CONTENT/BT3025/MODELS/PPCHIT.MOD @@ -0,0 +1,12 @@ +[video] +object=8 + +[audio] +external=ppcexp.scp + +[gamedata] +class=ExplosionClassID +ExplosionResourceTable=PPCExplosionResourceTable +// WARNING Audio Effects require ExplosionDuration >= 3.0 secs +ExplosionDuration=3.0 + diff --git a/CONTENT/BT3025/MODELS/PPCHITI.MOD b/CONTENT/BT3025/MODELS/PPCHITI.MOD new file mode 100644 index 0000000..bce62c3 --- /dev/null +++ b/CONTENT/BT3025/MODELS/PPCHITI.MOD @@ -0,0 +1,10 @@ +[video] +object=8 + +[audio] +external=ppcexpi.scp + +[gamedata] +class=ExplosionClassID +// WARNING Audio Effects require ExplosionDuration >= 3.0 secs +ExplosionDuration=3.0 diff --git a/CONTENT/BT3025/MODELS/PROFILE1.MOD b/CONTENT/BT3025/MODELS/PROFILE1.MOD new file mode 100644 index 0000000..d4ae98c --- /dev/null +++ b/CONTENT/BT3025/MODELS/PROFILE1.MOD @@ -0,0 +1,5 @@ +[video] +object=profile1.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/PROFILE2.MOD b/CONTENT/BT3025/MODELS/PROFILE2.MOD new file mode 100644 index 0000000..9da7570 --- /dev/null +++ b/CONTENT/BT3025/MODELS/PROFILE2.MOD @@ -0,0 +1,5 @@ +[video] +object=profile2.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/PROFILE3.MOD b/CONTENT/BT3025/MODELS/PROFILE3.MOD new file mode 100644 index 0000000..8e6d0c5 --- /dev/null +++ b/CONTENT/BT3025/MODELS/PROFILE3.MOD @@ -0,0 +1,5 @@ +[video] +object=profile3.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/PROFILE4.MOD b/CONTENT/BT3025/MODELS/PROFILE4.MOD new file mode 100644 index 0000000..d28be53 --- /dev/null +++ b/CONTENT/BT3025/MODELS/PROFILE4.MOD @@ -0,0 +1,5 @@ +[video] +object=profile4.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/PROFILE5.MOD b/CONTENT/BT3025/MODELS/PROFILE5.MOD new file mode 100644 index 0000000..20a6b27 --- /dev/null +++ b/CONTENT/BT3025/MODELS/PROFILE5.MOD @@ -0,0 +1,5 @@ +[video] +object=profile5.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/PROFILE6.MOD b/CONTENT/BT3025/MODELS/PROFILE6.MOD new file mode 100644 index 0000000..b000473 --- /dev/null +++ b/CONTENT/BT3025/MODELS/PROFILE6.MOD @@ -0,0 +1,5 @@ +[video] +object=profile6.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/PROFILE7.MOD b/CONTENT/BT3025/MODELS/PROFILE7.MOD new file mode 100644 index 0000000..264f76f --- /dev/null +++ b/CONTENT/BT3025/MODELS/PROFILE7.MOD @@ -0,0 +1,5 @@ +[video] +object=profile7.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/PROFILE8.MOD b/CONTENT/BT3025/MODELS/PROFILE8.MOD new file mode 100644 index 0000000..51cc5de --- /dev/null +++ b/CONTENT/BT3025/MODELS/PROFILE8.MOD @@ -0,0 +1,5 @@ +[video] +object=profile8.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/PROJTILE.MOD b/CONTENT/BT3025/MODELS/PROJTILE.MOD new file mode 100644 index 0000000..b1b3e3b --- /dev/null +++ b/CONTENT/BT3025/MODELS/PROJTILE.MOD @@ -0,0 +1,16 @@ +[video] +object=bullet.bgf + +[audio] +external=prjtvl.scp + +[gamedata] +class=ProjectileClassID +MoverMass=2.0 +MomentOfInertia=1.75 3.125 1.75 +PositiveLinearDragCoefficients=0.14 0.4 0.07 +NegativeLinearDragCoefficients=0.14 0.2 0.08 +AngularDragCoefficients=0.3 0.5 0.3 +FrictionCoefficient=0.0 +ElasticityCoefficient=0.0 +MinimumBounceSpeed=0.0 diff --git a/CONTENT/BT3025/MODELS/PWIN1.MOD b/CONTENT/BT3025/MODELS/PWIN1.MOD new file mode 100644 index 0000000..1258d66 --- /dev/null +++ b/CONTENT/BT3025/MODELS/PWIN1.MOD @@ -0,0 +1,5 @@ +[video] +object=pwin1.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/PWIN2.MOD b/CONTENT/BT3025/MODELS/PWIN2.MOD new file mode 100644 index 0000000..09fbace --- /dev/null +++ b/CONTENT/BT3025/MODELS/PWIN2.MOD @@ -0,0 +1,5 @@ +[video] +object=pwin2.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/PWIN3.MOD b/CONTENT/BT3025/MODELS/PWIN3.MOD new file mode 100644 index 0000000..3c2e6bb --- /dev/null +++ b/CONTENT/BT3025/MODELS/PWIN3.MOD @@ -0,0 +1,5 @@ +[video] +object=pwin3.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/PWIN4.MOD b/CONTENT/BT3025/MODELS/PWIN4.MOD new file mode 100644 index 0000000..ffe85a8 --- /dev/null +++ b/CONTENT/BT3025/MODELS/PWIN4.MOD @@ -0,0 +1,5 @@ +[video] +object=pwin4.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/PWIN5.MOD b/CONTENT/BT3025/MODELS/PWIN5.MOD new file mode 100644 index 0000000..e9d9a3a --- /dev/null +++ b/CONTENT/BT3025/MODELS/PWIN5.MOD @@ -0,0 +1,5 @@ +[video] +object=pwin5.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/PWIN6.MOD b/CONTENT/BT3025/MODELS/PWIN6.MOD new file mode 100644 index 0000000..e455e24 --- /dev/null +++ b/CONTENT/BT3025/MODELS/PWIN6.MOD @@ -0,0 +1,5 @@ +[video] +object=pwin6.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/PWIN7.MOD b/CONTENT/BT3025/MODELS/PWIN7.MOD new file mode 100644 index 0000000..5585098 --- /dev/null +++ b/CONTENT/BT3025/MODELS/PWIN7.MOD @@ -0,0 +1,5 @@ +[video] +object=pwin7.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/PWIN8.MOD b/CONTENT/BT3025/MODELS/PWIN8.MOD new file mode 100644 index 0000000..c338c0a --- /dev/null +++ b/CONTENT/BT3025/MODELS/PWIN8.MOD @@ -0,0 +1,5 @@ +[video] +object=pwin8.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/RAPDEAD.MOD b/CONTENT/BT3025/MODELS/RAPDEAD.MOD new file mode 100644 index 0000000..83959ea --- /dev/null +++ b/CONTENT/BT3025/MODELS/RAPDEAD.MOD @@ -0,0 +1,9 @@ +[video] +object=104 3 4 5 1007 15 1001 + +[audio] +external=brnext.scp + +[gamedata] +class=ExplosionClassID +ExplosionDuration=9.0 diff --git a/CONTENT/BT3025/MODELS/RAPDMG.EXP b/CONTENT/BT3025/MODELS/RAPDMG.EXP new file mode 100644 index 0000000..c9b1598 --- /dev/null +++ b/CONTENT/BT3025/MODELS/RAPDMG.EXP @@ -0,0 +1,28 @@ +[OneDamage] +ExplosionModelFile=dam1hit +DamageLevel=0.2 +TimeDelay=0.0 + +[TwoDamage] +ExplosionModelFile=dam2hit +DamageLevel=0.4 +TimeDelay=0.0 + +[ThreeDamage] +ExplosionModelFile=dam3hit +DamageLevel=0.6 +TimeDelay=0.0 + +[FourDamage] +ExplosionModelFile=dam4hit +DamageLevel=0.8 +TimeDelay=0.0 + +[DestroyedExplosion] +ExplosionModelFile=desthit +GraphicState=Destroyed + +[GoneExplosion] +ExplosionModelFile=desthit +GraphicState=Gone + diff --git a/CONTENT/BT3025/MODELS/RAPTHR.CTL b/CONTENT/BT3025/MODELS/RAPTHR.CTL new file mode 100644 index 0000000..72e17cc --- /dev/null +++ b/CONTENT/BT3025/MODELS/RAPTHR.CTL @@ -0,0 +1,63 @@ +[StickPosition_JP] +IOMapping=JoystickPhysical +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=StickPosition +Mode=ModeAlwaysActive + +[TorsoLeft_BJHL] +IOMapping=ButtonJoystickHatLeft +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoLeft +Mode=ModeAlwaysActive + +[TorsoRight_BJHR] +IOMapping=ButtonJoystickHatRight +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoRight +Mode=ModeAlwaysActive + +[MLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=MLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[MLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=MLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[SLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=SLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[SLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=SLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[LRM5_1_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=LRM5_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[LRM5_2_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=LRM5_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[LRM5_3_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=LRM5_3 +AttributeID=TriggerState +Mode=ModeNonMapping diff --git a/CONTENT/BT3025/MODELS/RAVFLOOR.MOD b/CONTENT/BT3025/MODELS/RAVFLOOR.MOD new file mode 100644 index 0000000..ec1b1d2 --- /dev/null +++ b/CONTENT/BT3025/MODELS/RAVFLOOR.MOD @@ -0,0 +1,9 @@ +[video] +object=ravfloor.bgf + +[collision] +name=rfloor_c.sld + +[gamedata] +class=UnscalableTerrainClassID + \ No newline at end of file diff --git a/CONTENT/BT3025/MODELS/RAVINET1.MOD b/CONTENT/BT3025/MODELS/RAVINET1.MOD new file mode 100644 index 0000000..3d6f8e4 --- /dev/null +++ b/CONTENT/BT3025/MODELS/RAVINET1.MOD @@ -0,0 +1,6 @@ +[video] +object=ravinet1.bgf + +[gamedata] +class=UnscalableTerrainClassID + \ No newline at end of file diff --git a/CONTENT/BT3025/MODELS/RAVINET2.MOD b/CONTENT/BT3025/MODELS/RAVINET2.MOD new file mode 100644 index 0000000..d012b1c --- /dev/null +++ b/CONTENT/BT3025/MODELS/RAVINET2.MOD @@ -0,0 +1,6 @@ +[video] +object=ravinet2.bgf + +[gamedata] +class=UnscalableTerrainClassID + \ No newline at end of file diff --git a/CONTENT/BT3025/MODELS/RAVINET3.MOD b/CONTENT/BT3025/MODELS/RAVINET3.MOD new file mode 100644 index 0000000..3ec55e4 --- /dev/null +++ b/CONTENT/BT3025/MODELS/RAVINET3.MOD @@ -0,0 +1,6 @@ +[video] +object=ravinet3.bgf + +[gamedata] +class=UnscalableTerrainClassID + \ No newline at end of file diff --git a/CONTENT/BT3025/MODELS/RAVINET4.MOD b/CONTENT/BT3025/MODELS/RAVINET4.MOD new file mode 100644 index 0000000..ac0b266 --- /dev/null +++ b/CONTENT/BT3025/MODELS/RAVINET4.MOD @@ -0,0 +1,6 @@ +[video] +object=ravinet4.bgf + +[gamedata] +class=UnscalableTerrainClassID + \ No newline at end of file diff --git a/CONTENT/BT3025/MODELS/RAVINET5.MOD b/CONTENT/BT3025/MODELS/RAVINET5.MOD new file mode 100644 index 0000000..9be3aa2 --- /dev/null +++ b/CONTENT/BT3025/MODELS/RAVINET5.MOD @@ -0,0 +1,6 @@ +[video] +object=ravinet5.bgf + +[gamedata] +class=UnscalableTerrainClassID + \ No newline at end of file diff --git a/CONTENT/BT3025/MODELS/RAVINET6.MOD b/CONTENT/BT3025/MODELS/RAVINET6.MOD new file mode 100644 index 0000000..4ecc3ed --- /dev/null +++ b/CONTENT/BT3025/MODELS/RAVINET6.MOD @@ -0,0 +1,6 @@ +[video] +object=ravinet6.bgf + +[gamedata] +class=UnscalableTerrainClassID + \ No newline at end of file diff --git a/CONTENT/BT3025/MODELS/RAVINET7.MOD b/CONTENT/BT3025/MODELS/RAVINET7.MOD new file mode 100644 index 0000000..05a6fb3 --- /dev/null +++ b/CONTENT/BT3025/MODELS/RAVINET7.MOD @@ -0,0 +1,6 @@ +[video] +object=ravinet7.bgf + +[gamedata] +class=UnscalableTerrainClassID + \ No newline at end of file diff --git a/CONTENT/BT3025/MODELS/RAVINET8.MOD b/CONTENT/BT3025/MODELS/RAVINET8.MOD new file mode 100644 index 0000000..5491485 --- /dev/null +++ b/CONTENT/BT3025/MODELS/RAVINET8.MOD @@ -0,0 +1,6 @@ +[video] +object=ravinet8.bgf + +[gamedata] +class=UnscalableTerrainClassID + \ No newline at end of file diff --git a/CONTENT/BT3025/MODELS/RAVWIN.MOD b/CONTENT/BT3025/MODELS/RAVWIN.MOD new file mode 100644 index 0000000..ee1ec2c --- /dev/null +++ b/CONTENT/BT3025/MODELS/RAVWIN.MOD @@ -0,0 +1,6 @@ +[video] +object=ravwin.bgf + +[gamedata] +class=UnscalableTerrainClassID + \ No newline at end of file diff --git a/CONTENT/BT3025/MODELS/RB1.MOD b/CONTENT/BT3025/MODELS/RB1.MOD new file mode 100644 index 0000000..43c1edd --- /dev/null +++ b/CONTENT/BT3025/MODELS/RB1.MOD @@ -0,0 +1,5 @@ +[video] +object=rb1.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/RB2.MOD b/CONTENT/BT3025/MODELS/RB2.MOD new file mode 100644 index 0000000..36626bb --- /dev/null +++ b/CONTENT/BT3025/MODELS/RB2.MOD @@ -0,0 +1,5 @@ +[video] +object=rb2.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/RB3.MOD b/CONTENT/BT3025/MODELS/RB3.MOD new file mode 100644 index 0000000..366dd96 --- /dev/null +++ b/CONTENT/BT3025/MODELS/RB3.MOD @@ -0,0 +1,5 @@ +[video] +object=rb3.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/RB4.MOD b/CONTENT/BT3025/MODELS/RB4.MOD new file mode 100644 index 0000000..cf11e93 --- /dev/null +++ b/CONTENT/BT3025/MODELS/RB4.MOD @@ -0,0 +1,5 @@ +[video] +object=rb4.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/RB5.MOD b/CONTENT/BT3025/MODELS/RB5.MOD new file mode 100644 index 0000000..f82b64e --- /dev/null +++ b/CONTENT/BT3025/MODELS/RB5.MOD @@ -0,0 +1,5 @@ +[video] +object=rb5.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/RB6.MOD b/CONTENT/BT3025/MODELS/RB6.MOD new file mode 100644 index 0000000..61b6323 --- /dev/null +++ b/CONTENT/BT3025/MODELS/RB6.MOD @@ -0,0 +1,5 @@ +[video] +object=rb6.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/RD1.MOD b/CONTENT/BT3025/MODELS/RD1.MOD new file mode 100644 index 0000000..20f2b30 --- /dev/null +++ b/CONTENT/BT3025/MODELS/RD1.MOD @@ -0,0 +1,5 @@ +[video] +object=rd1.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/RD2.MOD b/CONTENT/BT3025/MODELS/RD2.MOD new file mode 100644 index 0000000..233614f --- /dev/null +++ b/CONTENT/BT3025/MODELS/RD2.MOD @@ -0,0 +1,5 @@ +[video] +object=rd2.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/RESERVE.SUB b/CONTENT/BT3025/MODELS/RESERVE.SUB new file mode 100644 index 0000000..8563ead --- /dev/null +++ b/CONTENT/BT3025/MODELS/RESERVE.SUB @@ -0,0 +1,14 @@ +[Reservoir] +Type=ReservoirClassID +ArmorValue=20.0 +StartingTemperature=77.0 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +ThermalConductance=190000 +ThermalMass=3.42e6 +HeatSink=None +WeaponDamagePoints=10.0 +VitalSubsystem=False +CoolantCapacity=20.0 +CoolantSquirtMass=0.5 +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT3025/MODELS/RESULT.TXT b/CONTENT/BT3025/MODELS/RESULT.TXT new file mode 100644 index 0000000..fe3be47 --- /dev/null +++ b/CONTENT/BT3025/MODELS/RESULT.TXT @@ -0,0 +1,8 @@ +^C +^C +^C +^C +^C +^C +^C +^C diff --git a/CONTENT/BT3025/MODELS/RESULT2.TXT b/CONTENT/BT3025/MODELS/RESULT2.TXT new file mode 100644 index 0000000..052672e --- /dev/null +++ b/CONTENT/BT3025/MODELS/RESULT2.TXT @@ -0,0 +1,5 @@ +BattleTech v4.10 + + +Error - Resource file btl4.res v1.0.0.0 is obsolete! + diff --git a/CONTENT/BT3025/MODELS/RK1.MOD b/CONTENT/BT3025/MODELS/RK1.MOD new file mode 100644 index 0000000..c1e87dc --- /dev/null +++ b/CONTENT/BT3025/MODELS/RK1.MOD @@ -0,0 +1,11 @@ +[video] +object=rk1.bgf + +[collision] +name=rk1_cv.sld + +[gauge] +image=rk1_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/RK2.MOD b/CONTENT/BT3025/MODELS/RK2.MOD new file mode 100644 index 0000000..40ba9e2 --- /dev/null +++ b/CONTENT/BT3025/MODELS/RK2.MOD @@ -0,0 +1,11 @@ +[video] +object=rk2.bgf + +[collision] +name=rk2_cv.sld + +[gauge] +image=rk2_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/RK3.MOD b/CONTENT/BT3025/MODELS/RK3.MOD new file mode 100644 index 0000000..0029d71 --- /dev/null +++ b/CONTENT/BT3025/MODELS/RK3.MOD @@ -0,0 +1,11 @@ +[video] +object=rk3.bgf + +[collision] +name=rk3_cv.sld + +[gauge] +image=rk3_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/RK4.MOD b/CONTENT/BT3025/MODELS/RK4.MOD new file mode 100644 index 0000000..2f08253 --- /dev/null +++ b/CONTENT/BT3025/MODELS/RK4.MOD @@ -0,0 +1,11 @@ +[video] +object=rk4.bgf + +[collision] +name=rk4_cv.sld + +[gauge] +image=rk4_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/RK5.MOD b/CONTENT/BT3025/MODELS/RK5.MOD new file mode 100644 index 0000000..6285c2d --- /dev/null +++ b/CONTENT/BT3025/MODELS/RK5.MOD @@ -0,0 +1,11 @@ +[video] +object=rk5.bgf + +[collision] +name=rk5_cv.sld + +[gauge] +image=rk5_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/RK6.MOD b/CONTENT/BT3025/MODELS/RK6.MOD new file mode 100644 index 0000000..757eada --- /dev/null +++ b/CONTENT/BT3025/MODELS/RK6.MOD @@ -0,0 +1,11 @@ +[video] +object=rk6.bgf + +[collision] +name=rk6_cv.sld + +[gauge] +image=rk6_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/RK7.MOD b/CONTENT/BT3025/MODELS/RK7.MOD new file mode 100644 index 0000000..88e1df7 --- /dev/null +++ b/CONTENT/BT3025/MODELS/RK7.MOD @@ -0,0 +1,11 @@ +[video] +object=rk7.bgf + +[collision] +name=rk7_cv.sld + +[gauge] +image=rk7_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/ROMMEL.MOD b/CONTENT/BT3025/MODELS/ROMMEL.MOD new file mode 100644 index 0000000..64386fc --- /dev/null +++ b/CONTENT/BT3025/MODELS/ROMMEL.MOD @@ -0,0 +1,17 @@ +[video] +object=ROMMEL.bgf rommels.bgf +rubble=ROMD.bgf + +[collision] +name=ROMMEL.sld + +[gauge] +image=rommel.gim + +[gamedata] +class=CulturalIconClassID +DamageZones=trk.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=trkdead +TimeDelay=0.5 +CrunchExplosionModelFile=stephit diff --git a/CONTENT/BT3025/MODELS/RWD.MOD b/CONTENT/BT3025/MODELS/RWD.MOD new file mode 100644 index 0000000..3f83b7b --- /dev/null +++ b/CONTENT/BT3025/MODELS/RWD.MOD @@ -0,0 +1,8 @@ +[video] +object=rwd.bgf + +[collision] +name=thor.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/RWIN1.MOD b/CONTENT/BT3025/MODELS/RWIN1.MOD new file mode 100644 index 0000000..1eaf217 --- /dev/null +++ b/CONTENT/BT3025/MODELS/RWIN1.MOD @@ -0,0 +1,6 @@ +[video] +object=rwin1.bgf + +[gamedata] +class=UnscalableTerrainClassID + \ No newline at end of file diff --git a/CONTENT/BT3025/MODELS/SAW.MOD b/CONTENT/BT3025/MODELS/SAW.MOD new file mode 100644 index 0000000..19cd7f0 --- /dev/null +++ b/CONTENT/BT3025/MODELS/SAW.MOD @@ -0,0 +1,8 @@ +[video] +object=saw.bgf + +[collision] +name=saw_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/SB1.MOD b/CONTENT/BT3025/MODELS/SB1.MOD new file mode 100644 index 0000000..ea76b6e --- /dev/null +++ b/CONTENT/BT3025/MODELS/SB1.MOD @@ -0,0 +1,8 @@ +[video] +object=sb1.bgf + +[collision] +name=sb1_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/SB1B.MOD b/CONTENT/BT3025/MODELS/SB1B.MOD new file mode 100644 index 0000000..e14e8fd --- /dev/null +++ b/CONTENT/BT3025/MODELS/SB1B.MOD @@ -0,0 +1,8 @@ +[video] +object=sb1b.bgf + +[collision] +name=sb1b_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/SB1C.MOD b/CONTENT/BT3025/MODELS/SB1C.MOD new file mode 100644 index 0000000..ed9b952 --- /dev/null +++ b/CONTENT/BT3025/MODELS/SB1C.MOD @@ -0,0 +1,8 @@ +[video] +object=sb1c.bgf + +[collision] +name=sb1c_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/SB1D.MOD b/CONTENT/BT3025/MODELS/SB1D.MOD new file mode 100644 index 0000000..3eae647 --- /dev/null +++ b/CONTENT/BT3025/MODELS/SB1D.MOD @@ -0,0 +1,8 @@ +[video] +object=sb1d.bgf + +[collision] +name=sb1d_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/SB1E.MOD b/CONTENT/BT3025/MODELS/SB1E.MOD new file mode 100644 index 0000000..863d6d2 --- /dev/null +++ b/CONTENT/BT3025/MODELS/SB1E.MOD @@ -0,0 +1,11 @@ +[video] +object=sb1e.bgf + +[collision] +name=sb1e_cv.sld + +//[gauge] +//image=sb1e_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/SB1N.MOD b/CONTENT/BT3025/MODELS/SB1N.MOD new file mode 100644 index 0000000..1501151 --- /dev/null +++ b/CONTENT/BT3025/MODELS/SB1N.MOD @@ -0,0 +1,11 @@ +[video] +object=sb1n.bgf + +[collision] +name=sb1n_cv.sld + +//[gauge] +//image=sb1n_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/SB1S.MOD b/CONTENT/BT3025/MODELS/SB1S.MOD new file mode 100644 index 0000000..f1caae3 --- /dev/null +++ b/CONTENT/BT3025/MODELS/SB1S.MOD @@ -0,0 +1,11 @@ +[video] +object=sb1s.bgf + +[collision] +name=sb1s_cv.sld + +//[gauge] +//image=sb1s_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/SB1W.MOD b/CONTENT/BT3025/MODELS/SB1W.MOD new file mode 100644 index 0000000..fe6c958 --- /dev/null +++ b/CONTENT/BT3025/MODELS/SB1W.MOD @@ -0,0 +1,11 @@ +[video] +object=sb1w.bgf + +[collision] +name=sb1w_cv.sld + +//[gauge] +//image=sb1w_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/SB2.MOD b/CONTENT/BT3025/MODELS/SB2.MOD new file mode 100644 index 0000000..3157708 --- /dev/null +++ b/CONTENT/BT3025/MODELS/SB2.MOD @@ -0,0 +1,8 @@ +[video] +object=sb2.bgf + +[collision] +name=sb2_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/SB2B.MOD b/CONTENT/BT3025/MODELS/SB2B.MOD new file mode 100644 index 0000000..3fe402a --- /dev/null +++ b/CONTENT/BT3025/MODELS/SB2B.MOD @@ -0,0 +1,8 @@ +[video] +object=sb2b.bgf + +[collision] +name=sb2b_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/SB2C.MOD b/CONTENT/BT3025/MODELS/SB2C.MOD new file mode 100644 index 0000000..e0cce14 --- /dev/null +++ b/CONTENT/BT3025/MODELS/SB2C.MOD @@ -0,0 +1,8 @@ +[video] +object=sb2c.bgf + +[collision] +name=sb2c_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/SB2D.MOD b/CONTENT/BT3025/MODELS/SB2D.MOD new file mode 100644 index 0000000..af855f0 --- /dev/null +++ b/CONTENT/BT3025/MODELS/SB2D.MOD @@ -0,0 +1,8 @@ +[video] +object=sb2d.bgf + +[collision] +name=sb2d_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/SB2E.MOD b/CONTENT/BT3025/MODELS/SB2E.MOD new file mode 100644 index 0000000..019caa2 --- /dev/null +++ b/CONTENT/BT3025/MODELS/SB2E.MOD @@ -0,0 +1,8 @@ +[video] +object=sb2e.bgf + +[collision] +name=sb2e_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/SB2N.MOD b/CONTENT/BT3025/MODELS/SB2N.MOD new file mode 100644 index 0000000..5c1ea6f --- /dev/null +++ b/CONTENT/BT3025/MODELS/SB2N.MOD @@ -0,0 +1,8 @@ +[video] +object=sb2n.bgf + +[collision] +name=sb2n_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/SB2S.MOD b/CONTENT/BT3025/MODELS/SB2S.MOD new file mode 100644 index 0000000..8a3171a --- /dev/null +++ b/CONTENT/BT3025/MODELS/SB2S.MOD @@ -0,0 +1,8 @@ +[video] +object=sb2s.bgf + +[collision] +name=sb2s_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/SB2W.MOD b/CONTENT/BT3025/MODELS/SB2W.MOD new file mode 100644 index 0000000..2d27e0d --- /dev/null +++ b/CONTENT/BT3025/MODELS/SB2W.MOD @@ -0,0 +1,8 @@ +[video] +object=sb2w.bgf + +[collision] +name=sb2w_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/SB3E.MOD b/CONTENT/BT3025/MODELS/SB3E.MOD new file mode 100644 index 0000000..b9ba4b4 --- /dev/null +++ b/CONTENT/BT3025/MODELS/SB3E.MOD @@ -0,0 +1,8 @@ +[video] +object=sb3e.bgf + +[collision] +name=sb3e_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/SB3N.MOD b/CONTENT/BT3025/MODELS/SB3N.MOD new file mode 100644 index 0000000..a19be90 --- /dev/null +++ b/CONTENT/BT3025/MODELS/SB3N.MOD @@ -0,0 +1,8 @@ +[video] +object=sb3n.bgf + +[collision] +name=sb3n_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/SB3S.MOD b/CONTENT/BT3025/MODELS/SB3S.MOD new file mode 100644 index 0000000..832f9c4 --- /dev/null +++ b/CONTENT/BT3025/MODELS/SB3S.MOD @@ -0,0 +1,11 @@ +[video] +object=sb3s.bgf + +[collision] +name=sb3s_cv.sld + +//[gauge] +//image=sb3s_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/SB3W.MOD b/CONTENT/BT3025/MODELS/SB3W.MOD new file mode 100644 index 0000000..914f468 --- /dev/null +++ b/CONTENT/BT3025/MODELS/SB3W.MOD @@ -0,0 +1,8 @@ +[video] +object=sb3w.bgf + +[collision] +name=sb3w_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/SB4E.MOD b/CONTENT/BT3025/MODELS/SB4E.MOD new file mode 100644 index 0000000..f16bc40 --- /dev/null +++ b/CONTENT/BT3025/MODELS/SB4E.MOD @@ -0,0 +1,8 @@ +[video] +object=sb4e.bgf + +[collision] +name=sb4e_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/SB4N.MOD b/CONTENT/BT3025/MODELS/SB4N.MOD new file mode 100644 index 0000000..a70f39b --- /dev/null +++ b/CONTENT/BT3025/MODELS/SB4N.MOD @@ -0,0 +1,8 @@ +[video] +object=sb4n.bgf + +[collision] +name=sb4n_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/SB4S.MOD b/CONTENT/BT3025/MODELS/SB4S.MOD new file mode 100644 index 0000000..2f2d3bf --- /dev/null +++ b/CONTENT/BT3025/MODELS/SB4S.MOD @@ -0,0 +1,8 @@ +[video] +object=sb4s.bgf + +[collision] +name=sb4s_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/SB4W.MOD b/CONTENT/BT3025/MODELS/SB4W.MOD new file mode 100644 index 0000000..c4fe9bd --- /dev/null +++ b/CONTENT/BT3025/MODELS/SB4W.MOD @@ -0,0 +1,8 @@ +[video] +object=sb4w.bgf + +[collision] +name=sb4w_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/SEMI.MOD b/CONTENT/BT3025/MODELS/SEMI.MOD new file mode 100644 index 0000000..f3ef6c8 --- /dev/null +++ b/CONTENT/BT3025/MODELS/SEMI.MOD @@ -0,0 +1,14 @@ +[video] +object=SEMI.bgf semis.bgf +rubble=SEMID.bgf + +[collision] +name=SEMI.sld + +[gamedata] +class=CulturalIconClassID +DamageZones=trk.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=trkdead +TimeDelay=0.5 +CrunchExplosionModelFile=stephit diff --git a/CONTENT/BT3025/MODELS/SEMIRIG.MOD b/CONTENT/BT3025/MODELS/SEMIRIG.MOD new file mode 100644 index 0000000..0802e69 --- /dev/null +++ b/CONTENT/BT3025/MODELS/SEMIRIG.MOD @@ -0,0 +1,14 @@ +[video] +object=SEMIRIG.bgf semirigs.bgf +rubble=SEMIRD.bgf + +[collision] +name=SEMIRIG.sld + +[gamedata] +class=CulturalIconClassID +DamageZones=trk.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=trkdead +TimeDelay=0.5 +CrunchExplosionModelFile=stephit diff --git a/CONTENT/BT3025/MODELS/SENSOR.SUB b/CONTENT/BT3025/MODELS/SENSOR.SUB new file mode 100644 index 0000000..eae1b31 --- /dev/null +++ b/CONTENT/BT3025/MODELS/SENSOR.SUB @@ -0,0 +1,19 @@ +[Sensor] +Type=SensorClassID +ArmorValue=20.0 +StartingTemperature=77.0 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +ThermalConductance=3.63e5 +ThermalMass=50 +HeatSink=None +WeaponDamagePoints=10.0 +VitalSubsystem=False +CriticalHitScoreBonus=0 +VoltageSource=None +StandardResistance=1.0 +ThermalResistivityCoefficient=0.00024 +AuxScreenNumber=0 +AuxScreenLabel=qsensors.pcc +EngScreenLabel=esensors.pcc +StartTime=0.0 diff --git a/CONTENT/BT3025/MODELS/SKY.MOD b/CONTENT/BT3025/MODELS/SKY.MOD new file mode 100644 index 0000000..67aa8c5 --- /dev/null +++ b/CONTENT/BT3025/MODELS/SKY.MOD @@ -0,0 +1,5 @@ +[video] +object=sky.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/SL2.MOD b/CONTENT/BT3025/MODELS/SL2.MOD new file mode 100644 index 0000000..ab179ce --- /dev/null +++ b/CONTENT/BT3025/MODELS/SL2.MOD @@ -0,0 +1,17 @@ +[video] +; +; sl2.mod - Light pole +; +object=sl2.bgf +rubble=sl2d.bgf sl2d_FR.bgf + +[collision] +name=sl2_cv.sld + +[gamedata] +class=CulturalIconClassID +DamageZones=sml.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=smldead +TimeDelay=0.5 +//CrunchExplosionModelFile=smldead diff --git a/CONTENT/BT3025/MODELS/SLASER.SUB b/CONTENT/BT3025/MODELS/SLASER.SUB new file mode 100644 index 0000000..a9f2fcb --- /dev/null +++ b/CONTENT/BT3025/MODELS/SLASER.SUB @@ -0,0 +1,35 @@ +[Emitter] +Type=EmitterClassID +StartingTemperature=77.0 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +ThermalConductance=3.55e4 +ThermalMass=1.18e4 +WeaponDamagePoints=1.0 +HeatSink=None +VoltageSource=None +ExplosionModelFile=lzrhit +DamageAmount=1.5 +DamageType=LaserDamage +WeaponRange=150.0 +RechargeRate=1.0 +DischargeTime=0.2 +VitalSubsystem=False +VideoObjectName=slaser.bgf +GraphicLength=2000 +AmmoModelFile=None +HeatCostToFire=0.75 +ThermalResistivityCoefficient=0.0024 +AuxScreenNumber=0 +AuxScreenLabel=qslas.pcc +EngScreenLabel=eslas.pcc +SeekVoltage=0.6 +SeekVoltage=0.7 +SeekVoltage=0.8 +SeekVoltage=0.99 +SeekVoltageRecommendedIndex=2 +PipPosition=1 +PipColor=1.0 0.0 0.0 +PipExtendedRange=False +StartTime=1.0 +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT3025/MODELS/SLT.MOD b/CONTENT/BT3025/MODELS/SLT.MOD new file mode 100644 index 0000000..36dfd6c --- /dev/null +++ b/CONTENT/BT3025/MODELS/SLT.MOD @@ -0,0 +1,8 @@ +[video] +object=slt.bgf + +[collision] +name=slt_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/SML.DMG b/CONTENT/BT3025/MODELS/SML.DMG new file mode 100644 index 0000000..8405f4a --- /dev/null +++ b/CONTENT/BT3025/MODELS/SML.DMG @@ -0,0 +1,3 @@ +[default] +WeaponDamagePoints=1 +VitalDamageZone=True diff --git a/CONTENT/BT3025/MODELS/SMLDEAD.MOD b/CONTENT/BT3025/MODELS/SMLDEAD.MOD new file mode 100644 index 0000000..86322e3 --- /dev/null +++ b/CONTENT/BT3025/MODELS/SMLDEAD.MOD @@ -0,0 +1,10 @@ +[video] +object=1020 1022 1021 + +[audio] +external=mbnexp.scp + +[gamedata] +class=ExplosionClassID +// Audio requires ExplosionDuration >= 12.0 +ExplosionDuration=12.0 diff --git a/CONTENT/BT3025/MODELS/SN1.MOD b/CONTENT/BT3025/MODELS/SN1.MOD new file mode 100644 index 0000000..fdc2826 --- /dev/null +++ b/CONTENT/BT3025/MODELS/SN1.MOD @@ -0,0 +1,8 @@ +[video] +object=sn1.bgf + +[collision] +name=sn1_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/SN2.MOD b/CONTENT/BT3025/MODELS/SN2.MOD new file mode 100644 index 0000000..0318f44 --- /dev/null +++ b/CONTENT/BT3025/MODELS/SN2.MOD @@ -0,0 +1,12 @@ +[video] +; +; sn2 - Snow field (flat) +; +object=sn2.bgf + +[collision] +// yes, we want this to point to sn1's solids +name=sn1_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/SN4.MOD b/CONTENT/BT3025/MODELS/SN4.MOD new file mode 100644 index 0000000..e1c3a48 --- /dev/null +++ b/CONTENT/BT3025/MODELS/SN4.MOD @@ -0,0 +1,12 @@ +[video] +; +; sn4 - Snow field (flat) +; +object=sn4.bgf + +[collision] +// yes, we want this to point to sn1's solids +name=sn1_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/SND1DMG.EXP b/CONTENT/BT3025/MODELS/SND1DMG.EXP new file mode 100644 index 0000000..c9b1598 --- /dev/null +++ b/CONTENT/BT3025/MODELS/SND1DMG.EXP @@ -0,0 +1,28 @@ +[OneDamage] +ExplosionModelFile=dam1hit +DamageLevel=0.2 +TimeDelay=0.0 + +[TwoDamage] +ExplosionModelFile=dam2hit +DamageLevel=0.4 +TimeDelay=0.0 + +[ThreeDamage] +ExplosionModelFile=dam3hit +DamageLevel=0.6 +TimeDelay=0.0 + +[FourDamage] +ExplosionModelFile=dam4hit +DamageLevel=0.8 +TimeDelay=0.0 + +[DestroyedExplosion] +ExplosionModelFile=desthit +GraphicState=Destroyed + +[GoneExplosion] +ExplosionModelFile=desthit +GraphicState=Gone + diff --git a/CONTENT/BT3025/MODELS/SND1THR.CTL b/CONTENT/BT3025/MODELS/SND1THR.CTL new file mode 100644 index 0000000..a0078b8 --- /dev/null +++ b/CONTENT/BT3025/MODELS/SND1THR.CTL @@ -0,0 +1,57 @@ +[StickPosition_JP] +IOMapping=JoystickPhysical +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=StickPosition +Mode=ModeAlwaysActive + +[TorsoLeft_BJHL] +IOMapping=ButtonJoystickHatLeft +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoLeft +Mode=ModeAlwaysActive + +[TorsoRight_BJHR] +IOMapping=ButtonJoystickHatRight +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoRight +Mode=ModeAlwaysActive + +[PPC_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=PPC_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[PPC_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=PPC_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[PPC_3_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=PPC_3 +AttributeID=TriggerState +Mode=ModeNonMapping +[AFC25_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=AFC25 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser +AttributeID=TriggerState +Mode=ModeNonMapping +[LRM5_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=LRM5 +AttributeID=TriggerState +Mode=ModeNonMapping diff --git a/CONTENT/BT3025/MODELS/SND2DMG.EXP b/CONTENT/BT3025/MODELS/SND2DMG.EXP new file mode 100644 index 0000000..c9b1598 --- /dev/null +++ b/CONTENT/BT3025/MODELS/SND2DMG.EXP @@ -0,0 +1,28 @@ +[OneDamage] +ExplosionModelFile=dam1hit +DamageLevel=0.2 +TimeDelay=0.0 + +[TwoDamage] +ExplosionModelFile=dam2hit +DamageLevel=0.4 +TimeDelay=0.0 + +[ThreeDamage] +ExplosionModelFile=dam3hit +DamageLevel=0.6 +TimeDelay=0.0 + +[FourDamage] +ExplosionModelFile=dam4hit +DamageLevel=0.8 +TimeDelay=0.0 + +[DestroyedExplosion] +ExplosionModelFile=desthit +GraphicState=Destroyed + +[GoneExplosion] +ExplosionModelFile=desthit +GraphicState=Gone + diff --git a/CONTENT/BT3025/MODELS/SND2THR.CTL b/CONTENT/BT3025/MODELS/SND2THR.CTL new file mode 100644 index 0000000..5fe8c30 --- /dev/null +++ b/CONTENT/BT3025/MODELS/SND2THR.CTL @@ -0,0 +1,81 @@ +[StickPosition_JP] +IOMapping=JoystickPhysical +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=StickPosition +Mode=ModeAlwaysActive + +[TorsoLeft_BJHL] +IOMapping=ButtonJoystickHatLeft +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoLeft +Mode=ModeAlwaysActive + +[TorsoRight_BJHR] +IOMapping=ButtonJoystickHatRight +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoRight +Mode=ModeAlwaysActive + +[PPC_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=PPC_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[MLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=MLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[MLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=MLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[MLaser_3_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=MLaser_3 +AttributeID=TriggerState +Mode=ModeNonMapping +[MLaser_4_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=MLaser_4 +AttributeID=TriggerState +Mode=ModeNonMapping +[MLaser_5_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=MLaser_5 +AttributeID=TriggerState +Mode=ModeNonMapping +[MLaser_6_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=MLaser_6 +AttributeID=TriggerState +Mode=ModeNonMapping +[AFC25_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=AFC25_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[AFC25_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=AFC25_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[SRM6_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=SRM6 +AttributeID=TriggerState +Mode=ModeNonMapping diff --git a/CONTENT/BT3025/MODELS/SNDDEAD.MOD b/CONTENT/BT3025/MODELS/SNDDEAD.MOD new file mode 100644 index 0000000..83959ea --- /dev/null +++ b/CONTENT/BT3025/MODELS/SNDDEAD.MOD @@ -0,0 +1,9 @@ +[video] +object=104 3 4 5 1007 15 1001 + +[audio] +external=brnext.scp + +[gamedata] +class=ExplosionClassID +ExplosionDuration=9.0 diff --git a/CONTENT/BT3025/MODELS/SNDDMG.EXP b/CONTENT/BT3025/MODELS/SNDDMG.EXP new file mode 100644 index 0000000..c9b1598 --- /dev/null +++ b/CONTENT/BT3025/MODELS/SNDDMG.EXP @@ -0,0 +1,28 @@ +[OneDamage] +ExplosionModelFile=dam1hit +DamageLevel=0.2 +TimeDelay=0.0 + +[TwoDamage] +ExplosionModelFile=dam2hit +DamageLevel=0.4 +TimeDelay=0.0 + +[ThreeDamage] +ExplosionModelFile=dam3hit +DamageLevel=0.6 +TimeDelay=0.0 + +[FourDamage] +ExplosionModelFile=dam4hit +DamageLevel=0.8 +TimeDelay=0.0 + +[DestroyedExplosion] +ExplosionModelFile=desthit +GraphicState=Destroyed + +[GoneExplosion] +ExplosionModelFile=desthit +GraphicState=Gone + diff --git a/CONTENT/BT3025/MODELS/SNDTHR.CTL b/CONTENT/BT3025/MODELS/SNDTHR.CTL new file mode 100644 index 0000000..122fdf8 --- /dev/null +++ b/CONTENT/BT3025/MODELS/SNDTHR.CTL @@ -0,0 +1,75 @@ +[StickPosition_JP] +IOMapping=JoystickPhysical +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=StickPosition +Mode=ModeAlwaysActive + +[TorsoLeft_BJHL] +IOMapping=ButtonJoystickHatLeft +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoLeft +Mode=ModeAlwaysActive + +[TorsoRight_BJHR] +IOMapping=ButtonJoystickHatRight +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoRight +Mode=ModeAlwaysActive + +[AFC25_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=AFC25 +AttributeID=TriggerState +Mode=ModeNonMapping +[AFC100_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=AFC100 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[MLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=MLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[MLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=MLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[LRM10_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=LRM10 +AttributeID=TriggerState +Mode=ModeNonMapping diff --git a/CONTENT/BT3025/MODELS/SNH.MOD b/CONTENT/BT3025/MODELS/SNH.MOD new file mode 100644 index 0000000..b5a1da9 --- /dev/null +++ b/CONTENT/BT3025/MODELS/SNH.MOD @@ -0,0 +1,14 @@ +[video] +object=snh.bgf snh_FR.bgf +rubble=snhd.bgf snhd_FR.bgf + +[collision] +name=snh_cv.sld + +[gamedata] +class=CulturalIconClassID +DamageZones=trk.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=trkdead +TimeDelay=0.5 +CrunchExplosionModelFile=stephit diff --git a/CONTENT/BT3025/MODELS/SNTK1.MOD b/CONTENT/BT3025/MODELS/SNTK1.MOD new file mode 100644 index 0000000..52662e0 --- /dev/null +++ b/CONTENT/BT3025/MODELS/SNTK1.MOD @@ -0,0 +1,12 @@ +[video] +object=trk1.bgf +rubble=trk1d.bgf + +[collision] +name=trk1_cv.sld + +[gamedata] +class=LandmarkClassID +DamageZones=trk.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=desthit diff --git a/CONTENT/BT3025/MODELS/SR1E.MOD b/CONTENT/BT3025/MODELS/SR1E.MOD new file mode 100644 index 0000000..7a1f9a1 --- /dev/null +++ b/CONTENT/BT3025/MODELS/SR1E.MOD @@ -0,0 +1,11 @@ +[video] +object=sr1e.bgf + +[collision] +name=sr1e_cv.sld + +[gauge] +image=sr1e_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/SR1N.MOD b/CONTENT/BT3025/MODELS/SR1N.MOD new file mode 100644 index 0000000..9b79e01 --- /dev/null +++ b/CONTENT/BT3025/MODELS/SR1N.MOD @@ -0,0 +1,11 @@ +[video] +object=sr1n.bgf + +[collision] +name=sr1n_cv.sld + +[gauge] +image=sr1n_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/SR1S.MOD b/CONTENT/BT3025/MODELS/SR1S.MOD new file mode 100644 index 0000000..b4f6485 --- /dev/null +++ b/CONTENT/BT3025/MODELS/SR1S.MOD @@ -0,0 +1,11 @@ +[video] +object=sr1s.bgf + +[collision] +name=sr1s_cv.sld + +[gauge] +image=sr1s_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/SR1W.MOD b/CONTENT/BT3025/MODELS/SR1W.MOD new file mode 100644 index 0000000..d775584 --- /dev/null +++ b/CONTENT/BT3025/MODELS/SR1W.MOD @@ -0,0 +1,11 @@ +[video] +object=sr1w.bgf + +[collision] +name=sr1w_cv.sld + +[gauge] +image=sr1w_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/SRC1NE.MOD b/CONTENT/BT3025/MODELS/SRC1NE.MOD new file mode 100644 index 0000000..43bc2f9 --- /dev/null +++ b/CONTENT/BT3025/MODELS/SRC1NE.MOD @@ -0,0 +1,8 @@ +[video] +object=src1ne.bgf + +[collision] +name=src1ne_c.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/SRC1NW.MOD b/CONTENT/BT3025/MODELS/SRC1NW.MOD new file mode 100644 index 0000000..1c39252 --- /dev/null +++ b/CONTENT/BT3025/MODELS/SRC1NW.MOD @@ -0,0 +1,8 @@ +[video] +object=src1nw.bgf + +[collision] +name=src1nw_c.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/SRC1SE.MOD b/CONTENT/BT3025/MODELS/SRC1SE.MOD new file mode 100644 index 0000000..0972dc0 --- /dev/null +++ b/CONTENT/BT3025/MODELS/SRC1SE.MOD @@ -0,0 +1,8 @@ +[video] +object=src1se.bgf + +[collision] +name=src1se_c.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/SRC1SW.MOD b/CONTENT/BT3025/MODELS/SRC1SW.MOD new file mode 100644 index 0000000..32d6c5e --- /dev/null +++ b/CONTENT/BT3025/MODELS/SRC1SW.MOD @@ -0,0 +1,8 @@ +[video] +object=src1sw.bgf + +[collision] +name=src1sw_c.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/SRCHLITE.SUB b/CONTENT/BT3025/MODELS/SRCHLITE.SUB new file mode 100644 index 0000000..045be0b --- /dev/null +++ b/CONTENT/BT3025/MODELS/SRCHLITE.SUB @@ -0,0 +1,10 @@ +[Searchlight] +Type=SearchlightClassID +ArmorValue=20.0 +WatchedSubsystem=None +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +WeaponDamagePoints=10.0 +VitalSubsystem=False +CriticalHitScoreBonus=0 +MinVoltagePercent=10 diff --git a/CONTENT/BT3025/MODELS/SRM.MOD b/CONTENT/BT3025/MODELS/SRM.MOD new file mode 100644 index 0000000..6a46649 --- /dev/null +++ b/CONTENT/BT3025/MODELS/SRM.MOD @@ -0,0 +1,24 @@ +[video] +object=tms_c.bgf + +[audio] +external=msltvl.scp + +[gauge] +image=rivet_ga.gim + +[gamedata] +class=MissileClassID +MoverMass=50.0 +MomentOfInertia=0.1 0.1 0.001 +PositiveLinearDragCoefficients=0.001 0.001 .001 +NegativeLinearDragCoefficients=0.001 0.001 .001 +AngularDragCoefficients=0.05 0.05 0.001 +FrictionCoefficient=0.0 +ElasticityCoefficient=0.0 +MinimumBounceSpeed=0.0 +MaxThrusterRotationRate=120.0 +BurnTime=1.0 +ThrusterAcceleration=600.0 +ThrusterClimb=0.0 +SplashRadius=30.0 diff --git a/CONTENT/BT3025/MODELS/SRM2.SUB b/CONTENT/BT3025/MODELS/SRM2.SUB new file mode 100644 index 0000000..ad06921 --- /dev/null +++ b/CONTENT/BT3025/MODELS/SRM2.SUB @@ -0,0 +1,33 @@ +[MissileLauncher] +Type=MissileLauncherClassID +StartingTemperature=77.0 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +ThermalConductance=4.74e4 +ThermalMass=2.37e4 +WeaponDamagePoints=3.0 +HeatSink=None +AmmoBin=None +VoltageSource=None +MuzzleVelocity=0.0 0.0 100.0 +TracerInterval=1 +ExplosionModelFile=mslhit +RechargeRate=2.0 +DamageAmount=20.0 +DamageType=ExplosiveDamage +WeaponRange=800.0 +HeatCostToFire=1.5e7 +VitalSubsystem=False +ThermalResistivityCoefficient=0.00024 +MissileCount=2 +AuxScreenNumber=0 +AuxScreenLabel=qsrm2.pcc +EngScreenLabel=esrm2.pcc +MinTimeOfFlight=0.5 +MinVoltagePercentToFire=0.30 +MinJamChance=0.05 +PipPosition=1 +PipColor=0.6 0.4 0.0 +PipExtendedRange=False +StartTime=1.0 +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT3025/MODELS/SRM4.SUB b/CONTENT/BT3025/MODELS/SRM4.SUB new file mode 100644 index 0000000..75791c5 --- /dev/null +++ b/CONTENT/BT3025/MODELS/SRM4.SUB @@ -0,0 +1,33 @@ +[MissileLauncher] +Type=MissileLauncherClassID +StartingTemperature=77.0 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +ThermalConductance=4.74e4 +ThermalMass=4.74e4 +WeaponDamagePoints=3.0 +HeatSink=None +AmmoBin=None +VoltageSource=None +MuzzleVelocity=0.0 0.0 100.0 +TracerInterval=1 +ExplosionModelFile=mslhit +RechargeRate=5.0 +DamageAmount=6.0 +DamageType=ExplosiveDamage +WeaponRange=270.0 +HeatCostToFire=3e7 +VitalSubsystem=False +ThermalResistivityCoefficient=0.00024 +MissileCount=4 +AuxScreenNumber=0 +AuxScreenLabel=qsrm4.pcc +EngScreenLabel=esrm4.pcc +MinTimeOfFlight=0.5 +MinVoltagePercentToFire=0.30 +MinJamChance=0.05 +PipPosition=1 +PipColor=0.6 0.4 0.0 +PipExtendedRange=False +StartTime=1.0 +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT3025/MODELS/SRM6.SUB b/CONTENT/BT3025/MODELS/SRM6.SUB new file mode 100644 index 0000000..ee752bf --- /dev/null +++ b/CONTENT/BT3025/MODELS/SRM6.SUB @@ -0,0 +1,33 @@ +[MissileLauncher] +Type=MissileLauncherClassID +StartingTemperature=77.0 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +ThermalConductance=4.74e4 +ThermalMass=7.89e4 +WeaponDamagePoints=3.0 +HeatSink=None +AmmoBin=None +VoltageSource=None +MuzzleVelocity=0.0 0.0 100.0 +TracerInterval=1 +ExplosionModelFile=mslhit +RechargeRate=5.0 +DamageAmount=50.0 +DamageType=ExplosiveDamage +WeaponRange=800.0 +HeatCostToFire=5e7 +VitalSubsystem=False +ThermalResistivityCoefficient=0.00024 +MissileCount=6 +AuxScreenNumber=0 +AuxScreenLabel=qsrm6.pcc +EngScreenLabel=esrm6.pcc +MinTimeOfFlight=0.5 +MinVoltagePercentToFire=0.30 +MinJamChance=0.05 +PipPosition=1 +PipColor=0.6 0.4 0.0 +PipExtendedRange=False +StartTime=1.0 +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT3025/MODELS/SRMCARRY.MOD b/CONTENT/BT3025/MODELS/SRMCARRY.MOD new file mode 100644 index 0000000..95b51e2 --- /dev/null +++ b/CONTENT/BT3025/MODELS/SRMCARRY.MOD @@ -0,0 +1,18 @@ +[video] +object=SRMCARRY.bgf srms.bgf +rubble=SRMD.bgf + +[collision] +name=SRMCARRY.sld + +[gauge] +image=srmcarry.gim + +[gamedata] +class=CulturalIconClassID +DamageZones=trk.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=trkdead +TimeDelay=0.5 +CrunchExplosionModelFile=stephit + \ No newline at end of file diff --git a/CONTENT/BT3025/MODELS/ST1.MOD b/CONTENT/BT3025/MODELS/ST1.MOD new file mode 100644 index 0000000..e7410bf --- /dev/null +++ b/CONTENT/BT3025/MODELS/ST1.MOD @@ -0,0 +1,11 @@ +[video] +object=st1.bgf + +//[gauge] +//image=st1_ga.gim + +[collision] +name=st1_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/STATE.RST b/CONTENT/BT3025/MODELS/STATE.RST new file mode 100644 index 0000000..03f1760 --- /dev/null +++ b/CONTENT/BT3025/MODELS/STATE.RST @@ -0,0 +1,12 @@ +[edit-] +screen=80 50 +toggles=1 1 0 1 0 0 +srch= +src= +rpl= +file=p:\super\models\dsky.mod 1 1 1 1 +[brief] +file=p:\super\models\dsky.mod 1 1 1 1 1 47 78 1 c=0 +[shared-] +pmark=p:\super\models\dsky.mod 1 1 + \ No newline at end of file diff --git a/CONTENT/BT3025/MODELS/STB.MOD b/CONTENT/BT3025/MODELS/STB.MOD new file mode 100644 index 0000000..f7fd711 --- /dev/null +++ b/CONTENT/BT3025/MODELS/STB.MOD @@ -0,0 +1,11 @@ +[video] +object=stb.bgf + +[collision] +name=stb_cv.sld + +[gauge] +image=stb_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/STEPHIT.MOD b/CONTENT/BT3025/MODELS/STEPHIT.MOD new file mode 100644 index 0000000..19d0b1e --- /dev/null +++ b/CONTENT/BT3025/MODELS/STEPHIT.MOD @@ -0,0 +1,11 @@ +[video] +object=1008 + +[audio] +external=crnexp.scp + +[gamedata] +class=ExplosionClassID +ExplosionResourceTable=DestroyedExplosionResourceTable +// Audio requires ExplosionDuration >= 3.0 +ExplosionDuration=3.0 diff --git a/CONTENT/BT3025/MODELS/STF.MOD b/CONTENT/BT3025/MODELS/STF.MOD new file mode 100644 index 0000000..ba20d33 --- /dev/null +++ b/CONTENT/BT3025/MODELS/STF.MOD @@ -0,0 +1,11 @@ +[video] +object=stf.bgf + +[collision] +name=stf_cv.sld + +[gauge] +image=stf_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/STH.MOD b/CONTENT/BT3025/MODELS/STH.MOD new file mode 100644 index 0000000..85d2d55 --- /dev/null +++ b/CONTENT/BT3025/MODELS/STH.MOD @@ -0,0 +1,11 @@ +[video] +object=sth.bgf + +[collision] +name=sth_cv.sld + +[gauge] +image=sth_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/STIDEAD.MOD b/CONTENT/BT3025/MODELS/STIDEAD.MOD new file mode 100644 index 0000000..83959ea --- /dev/null +++ b/CONTENT/BT3025/MODELS/STIDEAD.MOD @@ -0,0 +1,9 @@ +[video] +object=104 3 4 5 1007 15 1001 + +[audio] +external=brnext.scp + +[gamedata] +class=ExplosionClassID +ExplosionDuration=9.0 diff --git a/CONTENT/BT3025/MODELS/STIDMG.EXP b/CONTENT/BT3025/MODELS/STIDMG.EXP new file mode 100644 index 0000000..c9b1598 --- /dev/null +++ b/CONTENT/BT3025/MODELS/STIDMG.EXP @@ -0,0 +1,28 @@ +[OneDamage] +ExplosionModelFile=dam1hit +DamageLevel=0.2 +TimeDelay=0.0 + +[TwoDamage] +ExplosionModelFile=dam2hit +DamageLevel=0.4 +TimeDelay=0.0 + +[ThreeDamage] +ExplosionModelFile=dam3hit +DamageLevel=0.6 +TimeDelay=0.0 + +[FourDamage] +ExplosionModelFile=dam4hit +DamageLevel=0.8 +TimeDelay=0.0 + +[DestroyedExplosion] +ExplosionModelFile=desthit +GraphicState=Destroyed + +[GoneExplosion] +ExplosionModelFile=desthit +GraphicState=Gone + diff --git a/CONTENT/BT3025/MODELS/STITHR.CTL b/CONTENT/BT3025/MODELS/STITHR.CTL new file mode 100644 index 0000000..f29cd16 --- /dev/null +++ b/CONTENT/BT3025/MODELS/STITHR.CTL @@ -0,0 +1,51 @@ +[StickPosition_JP] +IOMapping=JoystickPhysical +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=StickPosition +Mode=ModeAlwaysActive + +[TorsoLeft_BJHL] +IOMapping=ButtonJoystickHatLeft +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoLeft +Mode=ModeAlwaysActive + +[TorsoRight_BJHR] +IOMapping=ButtonJoystickHatRight +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoRight +Mode=ModeAlwaysActive + +[ERMLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[SRM6_1_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=SRM6_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[SRM6_2_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=SRM6_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[GAUSS_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=GAUSS +AttributeID=TriggerState +Mode=ModeNonMapping diff --git a/CONTENT/BT3025/MODELS/STRIKER.MOD b/CONTENT/BT3025/MODELS/STRIKER.MOD new file mode 100644 index 0000000..35ff73a --- /dev/null +++ b/CONTENT/BT3025/MODELS/STRIKER.MOD @@ -0,0 +1,18 @@ +[video] +object=STRIKER.bgf strikers.bgf +rubble=STRIKD.bgf + +[collision] +name=STRIKER.sld + +[gauge] +image=striker.gim + +[gamedata] +class=CulturalIconClassID +DamageZones=trk.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=trkdead +TimeDelay=0.5 +CrunchExplosionModelFile=stephit + \ No newline at end of file diff --git a/CONTENT/BT3025/MODELS/STRK.MOD b/CONTENT/BT3025/MODELS/STRK.MOD new file mode 100644 index 0000000..0899bf0 --- /dev/null +++ b/CONTENT/BT3025/MODELS/STRK.MOD @@ -0,0 +1,24 @@ +[video] +object=tms_c.bgf + +[audio] +external=msltvl.scp + +[gauge] +image=rivet_ga.gim + +[gamedata] +class=MissileClassID +MoverMass=50.0 +MomentOfInertia=0.1 0.1 0.001 +PositiveLinearDragCoefficients=0.001 0.001 .001 +NegativeLinearDragCoefficients=0.001 0.001 .001 +AngularDragCoefficients=0.05 0.05 0.001 +FrictionCoefficient=0.0 +ElasticityCoefficient=0.0 +MinimumBounceSpeed=0.0 +MaxThrusterRotationRate=360.0 +BurnTime=3 +ThrusterAcceleration=300.0 +ThrusterClimb=0.0 +SplashRadius=30.0 diff --git a/CONTENT/BT3025/MODELS/STRK2.SUB b/CONTENT/BT3025/MODELS/STRK2.SUB new file mode 100644 index 0000000..6d8f928 --- /dev/null +++ b/CONTENT/BT3025/MODELS/STRK2.SUB @@ -0,0 +1,33 @@ +[MissileLauncher] +Type=MissileLauncherClassID +StartingTemperature=77.0 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +ThermalConductance=4.74e4 +ThermalMass=2.37e4 +WeaponDamagePoints=3.0 +HeatSink=None +AmmoBin=None +VoltageSource=None +MuzzleVelocity=0.0 0.0 100.0 +TracerInterval=1 +ExplosionModelFile=mslhit +RechargeRate=2.0 +DamageAmount=10.0 +DamageType=ExplosiveDamage +WeaponRange=800.0 +HeatCostToFire=1.5e7 +VitalSubsystem=False +ThermalResistivityCoefficient=0.00024 +MissileCount=2 +AuxScreenNumber=0 +AuxScreenLabel=qstrk2.pcc +EngScreenLabel=estrk2.pcc +MinTimeOfFlight=0.5 +MinVoltagePercentToFire=0.30 +MinJamChance=0.05 +PipPosition=1 +PipColor=0.6 0.4 0.0 +PipExtendedRange=False +StartTime=1.0 +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT3025/MODELS/STRK4.SUB b/CONTENT/BT3025/MODELS/STRK4.SUB new file mode 100644 index 0000000..7578773 --- /dev/null +++ b/CONTENT/BT3025/MODELS/STRK4.SUB @@ -0,0 +1,33 @@ +[MissileLauncher] +Type=MissileLauncherClassID +StartingTemperature=77.0 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +ThermalConductance=4.74e4 +ThermalMass=4.74e4 +WeaponDamagePoints=3.0 +HeatSink=None +AmmoBin=None +VoltageSource=None +MuzzleVelocity=0.0 0.0 100.0 +TracerInterval=1 +ExplosionModelFile=mslhit +RechargeRate=3.0 +DamageAmount=20.0 +DamageType=ExplosiveDamage +WeaponRange=800.0 +HeatCostToFire=3e7 +VitalSubsystem=False +ThermalResistivityCoefficient=0.00024 +MissileCount=4 +AuxScreenNumber=0 +AuxScreenLabel=qstrk4.pcc +EngScreenLabel=estrk4.pcc +MinTimeOfFlight=0.5 +MinVoltagePercentToFire=0.30 +MinJamChance=0.05 +PipPosition=1 +PipColor=0.6 0.4 0.0 +PipExtendedRange=False +StartTime=1.0 +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT3025/MODELS/STRK6.SUB b/CONTENT/BT3025/MODELS/STRK6.SUB new file mode 100644 index 0000000..819a317 --- /dev/null +++ b/CONTENT/BT3025/MODELS/STRK6.SUB @@ -0,0 +1,33 @@ +[MissileLauncher] +Type=MissileLauncherClassID +StartingTemperature=77.0 +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +ThermalConductance=4.74e4 +ThermalMass=7.89e4 +WeaponDamagePoints=3.0 +HeatSink=None +AmmoBin=None +VoltageSource=None +MuzzleVelocity=0.0 0.0 100.0 +TracerInterval=1 +ExplosionModelFile=mslhit +RechargeRate=5.0 +DamageAmount=35.0 +DamageType=ExplosiveDamage +WeaponRange=800.0 +HeatCostToFire=5e7 +VitalSubsystem=False +ThermalResistivityCoefficient=0.00024 +MissileCount=6 +AuxScreenNumber=0 +AuxScreenLabel=qstrk6.pcc +EngScreenLabel=estrk6.pcc +MinTimeOfFlight=0.5 +MinVoltagePercentToFire=0.30 +MinJamChance=0.05 +PipPosition=1 +PipColor=0.6 0.4 0.0 +PipExtendedRange=False +StartTime=1.0 +CriticalHitScoreBonus=0 diff --git a/CONTENT/BT3025/MODELS/STS.MOD b/CONTENT/BT3025/MODELS/STS.MOD new file mode 100644 index 0000000..b3744d3 --- /dev/null +++ b/CONTENT/BT3025/MODELS/STS.MOD @@ -0,0 +1,11 @@ +[video] +object=sts.bgf + +[collision] +name=sts_cv.sld + +[gauge] +image=sts_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/STT.MOD b/CONTENT/BT3025/MODELS/STT.MOD new file mode 100644 index 0000000..7e09419 --- /dev/null +++ b/CONTENT/BT3025/MODELS/STT.MOD @@ -0,0 +1,11 @@ +[video] +object=stt.bgf + +[collision] +name=sth_cv.sld + +[gauge] +image=stt_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/SUB.BLD b/CONTENT/BT3025/MODELS/SUB.BLD new file mode 100644 index 0000000..93b6332 --- /dev/null +++ b/CONTENT/BT3025/MODELS/SUB.BLD @@ -0,0 +1,116 @@ +[HeatSink] +Type=HeatSinkClassID +Include=heatsnk.sub +HeatSinkCount=0 +SubsystemFlags=DontReplicateFlag + +[Reservoir] +Type=ReservoirClassID +Include=reserve.sub +HeatSink=HeatSink +SegmentPageName=siteeyepoint + +[Condenser1] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser2] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser3] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser4] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser5] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[Condenser6] +Type=CondenserClassID +Include=condensr.sub +HeatSink=HeatSink +SubsystemFlags=DontReplicateFlag + +[GeneratorA] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser1 +SubsystemFlags=DontReplicateFlag + +[GeneratorB] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser2 +SubsystemFlags=DontReplicateFlag + +[GeneratorC] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser3 +SubsystemFlags=DontReplicateFlag + +[GeneratorD] +Type=GeneratorClassID +Include=genrator.sub +HeatSink=Condenser5 +SubsystemFlags=DontReplicateFlag + +[Avionics] +Type=SensorClassID +Include=sensor.sub +HeatSink= +VoltageSource= +AuxScreenNumber= +SubsystemFlags=DontReplicateFlag + +[Myomers] +Type=MyomersClassID +Include=myomers.sub +HeatSink=Condenser5 +VoltageSource= +AuxScreenNumber= +SubsystemFlags=DontReplicateFlag + +[Gyroscope] +Type=GyroscopeClassID +Include=gyro.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag + +[Torso] +Type=TorsoClassID +Include=torso.sub +WatchedSubsystem=Myomers + +[HUD] +Type=HUDClassID +Include=hud.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag + +[Searchlight] +Type=SearchlightClassID +Include=srchlite.sub +WatchedSubsystem=Avionics +SegmentPageName=sitelight + +[ThermalSight] +Type=ThermalSightClassID +Include=Thermal.sub +WatchedSubsystem=Avionics +SubsystemFlags=DontReplicateFlag diff --git a/CONTENT/BT3025/MODELS/SV2.MOD b/CONTENT/BT3025/MODELS/SV2.MOD new file mode 100644 index 0000000..8fa8b5b --- /dev/null +++ b/CONTENT/BT3025/MODELS/SV2.MOD @@ -0,0 +1,8 @@ +[video] +object=sv2s.bgf sv2r.bgf + +[collision] +name=sv2_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/SV2B.MOD b/CONTENT/BT3025/MODELS/SV2B.MOD new file mode 100644 index 0000000..85f55dc --- /dev/null +++ b/CONTENT/BT3025/MODELS/SV2B.MOD @@ -0,0 +1,8 @@ +[video] +object=sv2bs.bgf sv2br.bgf + +[collision] +name=sv2b_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/SV2C.MOD b/CONTENT/BT3025/MODELS/SV2C.MOD new file mode 100644 index 0000000..659f8ee --- /dev/null +++ b/CONTENT/BT3025/MODELS/SV2C.MOD @@ -0,0 +1,8 @@ +[video] +object=sv2cr.bgf + +[collision] +name=sv2c_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/SV2D.MOD b/CONTENT/BT3025/MODELS/SV2D.MOD new file mode 100644 index 0000000..02bb8b8 --- /dev/null +++ b/CONTENT/BT3025/MODELS/SV2D.MOD @@ -0,0 +1,8 @@ +[video] +object=sv2ds.bgf sv2dr.bgf + +[collision] +name=sv2d_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/SV3.MOD b/CONTENT/BT3025/MODELS/SV3.MOD new file mode 100644 index 0000000..fb6c444 --- /dev/null +++ b/CONTENT/BT3025/MODELS/SV3.MOD @@ -0,0 +1,8 @@ +[video] +object=sv3s.bgf sv3r.bgf + +[collision] +name=sv3_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/SV3B.MOD b/CONTENT/BT3025/MODELS/SV3B.MOD new file mode 100644 index 0000000..a587e31 --- /dev/null +++ b/CONTENT/BT3025/MODELS/SV3B.MOD @@ -0,0 +1,8 @@ +[video] +object=sv3bs.bgf sv3br.bgf + +[collision] +name=sv3b_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/SV3C.MOD b/CONTENT/BT3025/MODELS/SV3C.MOD new file mode 100644 index 0000000..cc24815 --- /dev/null +++ b/CONTENT/BT3025/MODELS/SV3C.MOD @@ -0,0 +1,8 @@ +[video] +object=sv3cr.bgf sv3cs.bgf + +[collision] +name=sv3c_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/SV3D.MOD b/CONTENT/BT3025/MODELS/SV3D.MOD new file mode 100644 index 0000000..3bfcd3f --- /dev/null +++ b/CONTENT/BT3025/MODELS/SV3D.MOD @@ -0,0 +1,8 @@ +[video] +object=sv3ds.bgf sv3dr.bgf + +[collision] +name=sv3d_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/SW1.MOD b/CONTENT/BT3025/MODELS/SW1.MOD new file mode 100644 index 0000000..4fc2b9c --- /dev/null +++ b/CONTENT/BT3025/MODELS/SW1.MOD @@ -0,0 +1,11 @@ +[video] +object=sw1.bgf + +[collision] +name=sw1_cv.sld + +[gauge] +image=sw1_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/SW2.MOD b/CONTENT/BT3025/MODELS/SW2.MOD new file mode 100644 index 0000000..2a02269 --- /dev/null +++ b/CONTENT/BT3025/MODELS/SW2.MOD @@ -0,0 +1,11 @@ +[video] +object=sw2.bgf + +[collision] +name=sw2_cv.sld + +[gauge] +image=sw2_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/SW3.MOD b/CONTENT/BT3025/MODELS/SW3.MOD new file mode 100644 index 0000000..4152ab8 --- /dev/null +++ b/CONTENT/BT3025/MODELS/SW3.MOD @@ -0,0 +1,11 @@ +[video] +object=sw3.bgf + +[collision] +name=sw3_cv.sld + +[gauge] +image=sw3_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/SW4.MOD b/CONTENT/BT3025/MODELS/SW4.MOD new file mode 100644 index 0000000..40cc548 --- /dev/null +++ b/CONTENT/BT3025/MODELS/SW4.MOD @@ -0,0 +1,11 @@ +[video] +object=sw4.bgf + +[collision] +name=sw4_cv.sld + +[gauge] +image=sw4_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/SW5.MOD b/CONTENT/BT3025/MODELS/SW5.MOD new file mode 100644 index 0000000..d8ade04 --- /dev/null +++ b/CONTENT/BT3025/MODELS/SW5.MOD @@ -0,0 +1,11 @@ +[video] +object=sw5.bgf + +[collision] +name=sw5_cv.sld + +[gauge] +image=sw5_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/SW6.MOD b/CONTENT/BT3025/MODELS/SW6.MOD new file mode 100644 index 0000000..c39020e --- /dev/null +++ b/CONTENT/BT3025/MODELS/SW6.MOD @@ -0,0 +1,11 @@ +[video] +object=sw6.bgf + +[collision] +name=sw6_cv.sld + +[gauge] +image=sw6_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/SWIFTWND.MOD b/CONTENT/BT3025/MODELS/SWIFTWND.MOD new file mode 100644 index 0000000..42843f2 --- /dev/null +++ b/CONTENT/BT3025/MODELS/SWIFTWND.MOD @@ -0,0 +1,18 @@ +[video] +object=SWIFTWND.bgf swifts.bgf +rubble=SWIFTD.bgf + +[collision] +name=SWIFTWND.sld + +[gauge] +image=swiftwnd.gim + +[gamedata] +class=CulturalIconClassID +DamageZones=trk.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=trkdead +TimeDelay=0.5 +CrunchExplosionModelFile=stephit + \ No newline at end of file diff --git a/CONTENT/BT3025/MODELS/TEST.TXT b/CONTENT/BT3025/MODELS/TEST.TXT new file mode 100644 index 0000000..df01b59 --- /dev/null +++ b/CONTENT/BT3025/MODELS/TEST.TXT @@ -0,0 +1 @@ +32stub error: Can't find 32RTM.EXE. It must be on the path to run this program. diff --git a/CONTENT/BT3025/MODELS/TEXT.TXT b/CONTENT/BT3025/MODELS/TEXT.TXT new file mode 100644 index 0000000..f19d0b2 --- /dev/null +++ b/CONTENT/BT3025/MODELS/TEXT.TXT @@ -0,0 +1,20 @@ +Random Seed = 950029739 +Processing subsystem_file +Processing control_file + +32loader runtime error: Unhandled exception + + Exception 0E at 0197:0046507E error code 00000004 + + CS=0197 DS=019F ES=019F SS=019F FS=01B7 GS=0000 + EAX=00000000 EBX=00CB02F0 ECX=00000000 EDX=00000000 + EBP=0012CD84 ESP=0012CD7C EDI=00000002 ESI=00000002 + + The invalid instruction was executed at 0046507E + +Module 'C:\REL410\BT\MODELS\MECHBLD.EXE' section 'CODE' offset 0006407E + +[00465076]: EC 53 56 8B 55 08 33 C9 - 8A 02 42 0F BE D8 F6 83 + + The instruction referenced illegal address 00000000 + diff --git a/CONTENT/BT3025/MODELS/THERMAL.SUB b/CONTENT/BT3025/MODELS/THERMAL.SUB new file mode 100644 index 0000000..e6e6010 --- /dev/null +++ b/CONTENT/BT3025/MODELS/THERMAL.SUB @@ -0,0 +1,10 @@ +[ThermalSight] +Type=ThermalSightClassID +ArmorValue=20.0 +WatchedSubsystem=None +DegradationTemperature=1000.0 +FailureTemperature=2000.0 +WeaponDamagePoints=10.0 +VitalSubsystem=False +CriticalHitScoreBonus=0 +MinVoltagePercent=10 diff --git a/CONTENT/BT3025/MODELS/THR.DMG b/CONTENT/BT3025/MODELS/THR.DMG new file mode 100644 index 0000000..6c3c92b --- /dev/null +++ b/CONTENT/BT3025/MODELS/THR.DMG @@ -0,0 +1,121 @@ +// Holds Damage Zone Information +[dz_btorso] +WeaponDamagePoints=424 +CriticalSubsystem=AmmoBinAutoCannon1 10 +CriticalSubsystem=AmmoBinAutoCannon2 10 +CriticalSubsystem=Generator 10 + +[dz_dtorso] +WeaponDamagePoints=228 +CriticalSubsystem=Generator 10 + +[dz_ftorso] +WeaponDamagePoints=307 +CriticalSubsystem=Generator 10 +CriticalSubsystem=AmmoBinAutoCannon1 10 +CriticalSubsystem=AmmoBinAutoCannon2 10 + + +[dz_ltorso] +WeaponDamagePoints=143 +CriticalSubsystem=Generator 5 +CriticalSubsystem=AmmoBinAutoCannon1 10 + + + +[dz_reardtorso] +WeaponDamagePoints=98 +CriticalSubsystem=Generator 5 + +[dz_rearltorso] +WeaponDamagePoints=98 +CriticalSubsystem=Generator 5 +CriticalSubsystem=AmmoBinAutoCannon1 10 + + + +[dz_rearrtorso] +WeaponDamagePoints=98 +CriticalSubsystem=AmmoBinAutoCannon2 10 + +[dz_rearutorso] +WeaponDamagePoints=98 +CriticalSubsystem=Generator 5 +CriticalSubsystem=AmmoBinAutoCannon1 10 +CriticalSubsystem=AmmoBinAutoCannon2 10 + + +[dz_rtorso] +WeaponDamagePoints=143 +CriticalSubsystem=Generator 10 +CriticalSubsystem=AmmoBinAutoCannon1 10 +CriticalSubsystem=AmmoBinAutoCannon2 10 + + +[dz_searchlight] +WeaponDamagePoints=45 +CriticalSubsystem=Power 5 + +[dz_utorso] +WeaponDamagePoints=167 +CriticalSubsystem=Generator 10 +CriticalSubsystem=AmmoBinAutoCannon1 10 +CriticalSubsystem=AmmoBinAutoCannon2 10 + + +[dz_rarm] +WeaponDamagePoints=75 +CriticalSubsystem=Power 5 +CriticalSubsystem=PowerBar 10 + + +[dz_rgun] +WeaponDamagePoints=85 +CriticalSubsystem=AutoCannon2 10 +CriticalSubsystem=ERMLaser3 +CriticalSubsystem=ERMLaser4 +CriticalSubsystem=PowerBar 5 + +[dz_larm] +WeaponDamagePoints=75 +CriticalSubsystem=Power 5 +CriticalSubsystem=PowerBar 10 + +[dz_lgun] +WeaponDamagePoints=85 +CriticalSubsystem=AutoCannon1 10 +CriticalSubsystem=ERMLaser1 +CriticalSubsystem=ERMLaser2 +CriticalSubsystem=PowerBar 5 + +[dz_missle] +WeaponDamagePoints=45 +CriticalSubsystem=LRM 10 + +[dz_luleg] +WeaponDamagePoints=95 +CriticalSubsystem=Power 5 + +[dz_ldleg] +WeaponDamagePoints=90 +CriticalSubsystem=Power 5 + +[dz_lfoot] +WeaponDamagePoints=80 +CriticalSubsystem=Power 5 + +[dz_ruleg] +WeaponDamagePoints=95 +CriticalSubsystem=Power 5 + +[dz_rdleg] +WeaponDamagePoints=90 +CriticalSubsystem=Power 5 + +[dz_rfoot] +WeaponDamagePoints=80 +CriticalSubsystem=Power 5 + +[dz_hip] +WeaponDamagePoints=110 +CriticalSubsystem=Power 5 diff --git a/CONTENT/BT3025/MODELS/THR1DEAD.MOD b/CONTENT/BT3025/MODELS/THR1DEAD.MOD new file mode 100644 index 0000000..e70cd7c --- /dev/null +++ b/CONTENT/BT3025/MODELS/THR1DEAD.MOD @@ -0,0 +1,9 @@ +[video] +object=104 3 4 5 1007 15 1001 + +[audio] +external=brnext.scp + +[gamedata] +class=ExplosionClassID +ExplosionDuration=44.0 diff --git a/CONTENT/BT3025/MODELS/THR1DMG.EXP b/CONTENT/BT3025/MODELS/THR1DMG.EXP new file mode 100644 index 0000000..c9b1598 --- /dev/null +++ b/CONTENT/BT3025/MODELS/THR1DMG.EXP @@ -0,0 +1,28 @@ +[OneDamage] +ExplosionModelFile=dam1hit +DamageLevel=0.2 +TimeDelay=0.0 + +[TwoDamage] +ExplosionModelFile=dam2hit +DamageLevel=0.4 +TimeDelay=0.0 + +[ThreeDamage] +ExplosionModelFile=dam3hit +DamageLevel=0.6 +TimeDelay=0.0 + +[FourDamage] +ExplosionModelFile=dam4hit +DamageLevel=0.8 +TimeDelay=0.0 + +[DestroyedExplosion] +ExplosionModelFile=desthit +GraphicState=Destroyed + +[GoneExplosion] +ExplosionModelFile=desthit +GraphicState=Gone + diff --git a/CONTENT/BT3025/MODELS/THR1THR.CTL b/CONTENT/BT3025/MODELS/THR1THR.CTL new file mode 100644 index 0000000..fa31023 --- /dev/null +++ b/CONTENT/BT3025/MODELS/THR1THR.CTL @@ -0,0 +1,75 @@ +[StickPosition_JP] +IOMapping=JoystickPhysical +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=StickPosition +Mode=ModeAlwaysActive + +[TorsoLeft_BJHL] +IOMapping=ButtonJoystickHatLeft +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoLeft +Mode=ModeAlwaysActive + +[TorsoRight_BJHR] +IOMapping=ButtonJoystickHatRight +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoRight +Mode=ModeAlwaysActive + +[AFC25_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=AFC25_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[AFC25_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=AFC25_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[LLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=LLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[LLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=LLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_3_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser_3 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_4_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser_4 +AttributeID=TriggerState +Mode=ModeNonMapping +[LRM10_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=LRM10 +AttributeID=TriggerState +Mode=ModeNonMapping diff --git a/CONTENT/BT3025/MODELS/THR6DEAD.MOD b/CONTENT/BT3025/MODELS/THR6DEAD.MOD new file mode 100644 index 0000000..e70cd7c --- /dev/null +++ b/CONTENT/BT3025/MODELS/THR6DEAD.MOD @@ -0,0 +1,9 @@ +[video] +object=104 3 4 5 1007 15 1001 + +[audio] +external=brnext.scp + +[gamedata] +class=ExplosionClassID +ExplosionDuration=44.0 diff --git a/CONTENT/BT3025/MODELS/THR6DMG.EXP b/CONTENT/BT3025/MODELS/THR6DMG.EXP new file mode 100644 index 0000000..c9b1598 --- /dev/null +++ b/CONTENT/BT3025/MODELS/THR6DMG.EXP @@ -0,0 +1,28 @@ +[OneDamage] +ExplosionModelFile=dam1hit +DamageLevel=0.2 +TimeDelay=0.0 + +[TwoDamage] +ExplosionModelFile=dam2hit +DamageLevel=0.4 +TimeDelay=0.0 + +[ThreeDamage] +ExplosionModelFile=dam3hit +DamageLevel=0.6 +TimeDelay=0.0 + +[FourDamage] +ExplosionModelFile=dam4hit +DamageLevel=0.8 +TimeDelay=0.0 + +[DestroyedExplosion] +ExplosionModelFile=desthit +GraphicState=Destroyed + +[GoneExplosion] +ExplosionModelFile=desthit +GraphicState=Gone + diff --git a/CONTENT/BT3025/MODELS/THR6THR.CTL b/CONTENT/BT3025/MODELS/THR6THR.CTL new file mode 100644 index 0000000..cff3194 --- /dev/null +++ b/CONTENT/BT3025/MODELS/THR6THR.CTL @@ -0,0 +1,81 @@ +[StickPosition_JP] +IOMapping=JoystickPhysical +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=StickPosition +Mode=ModeAlwaysActive + +[TorsoLeft_BJHL] +IOMapping=ButtonJoystickHatLeft +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoLeft +Mode=ModeAlwaysActive + +[TorsoRight_BJHR] +IOMapping=ButtonJoystickHatRight +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoRight +Mode=ModeAlwaysActive + +[ERPPC_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERPPC +AttributeID=TriggerState +Mode=ModeNonMapping +[ERLLaser_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERLLaser +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[MG_1_ThumbLow] +IOMapping=ButtonJoystickThumbLow +Type=DirectMapping +Subsystem=MG_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[MG_2_ThumbLow] +IOMapping=ButtonJoystickThumbLow +Type=DirectMapping +Subsystem=MG_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[MG_3_ThumbLow] +IOMapping=ButtonJoystickThumbLow +Type=DirectMapping +Subsystem=MG_3 +AttributeID=TriggerState +Mode=ModeNonMapping +[MG_4_ThumbLow] +IOMapping=ButtonJoystickThumbLow +Type=DirectMapping +Subsystem=MG_4 +AttributeID=TriggerState +Mode=ModeNonMapping +[MG_5_ThumbLow] +IOMapping=ButtonJoystickThumbLow +Type=DirectMapping +Subsystem=MG_5 +AttributeID=TriggerState +Mode=ModeNonMapping +[NRK10_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=NRK10 +AttributeID=TriggerState +Mode=ModeNonMapping diff --git a/CONTENT/BT3025/MODELS/THRCTL.BLD b/CONTENT/BT3025/MODELS/THRCTL.BLD new file mode 100644 index 0000000..f67688b --- /dev/null +++ b/CONTENT/BT3025/MODELS/THRCTL.BLD @@ -0,0 +1,21 @@ +[StickPosition_JP] +IOMapping=JoystickPhysical +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=StickPosition +Mode=ModeAlwaysActive + +[TorsoLeft_BJHL] +IOMapping=ButtonJoystickHatLeft +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoLeft +Mode=ModeAlwaysActive + +[TorsoRight_BJHR] +IOMapping=ButtonJoystickHatRight +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoRight +Mode=ModeAlwaysActive + diff --git a/CONTENT/BT3025/MODELS/THRDEAD.MOD b/CONTENT/BT3025/MODELS/THRDEAD.MOD new file mode 100644 index 0000000..83959ea --- /dev/null +++ b/CONTENT/BT3025/MODELS/THRDEAD.MOD @@ -0,0 +1,9 @@ +[video] +object=104 3 4 5 1007 15 1001 + +[audio] +external=brnext.scp + +[gamedata] +class=ExplosionClassID +ExplosionDuration=9.0 diff --git a/CONTENT/BT3025/MODELS/THRDMG.EXP b/CONTENT/BT3025/MODELS/THRDMG.EXP new file mode 100644 index 0000000..c9b1598 --- /dev/null +++ b/CONTENT/BT3025/MODELS/THRDMG.EXP @@ -0,0 +1,28 @@ +[OneDamage] +ExplosionModelFile=dam1hit +DamageLevel=0.2 +TimeDelay=0.0 + +[TwoDamage] +ExplosionModelFile=dam2hit +DamageLevel=0.4 +TimeDelay=0.0 + +[ThreeDamage] +ExplosionModelFile=dam3hit +DamageLevel=0.6 +TimeDelay=0.0 + +[FourDamage] +ExplosionModelFile=dam4hit +DamageLevel=0.8 +TimeDelay=0.0 + +[DestroyedExplosion] +ExplosionModelFile=desthit +GraphicState=Destroyed + +[GoneExplosion] +ExplosionModelFile=desthit +GraphicState=Gone + diff --git a/CONTENT/BT3025/MODELS/THRDMGRD.EXP b/CONTENT/BT3025/MODELS/THRDMGRD.EXP new file mode 100644 index 0000000..1d1e45b --- /dev/null +++ b/CONTENT/BT3025/MODELS/THRDMGRD.EXP @@ -0,0 +1,9 @@ +[LightDamage] +ExplosionModelFile=minhit +DamageLevel=0.5 +TimeDelay=0.1 + +[HeavyDamage] +ExplosionModelFile=majhit +DamageLevel=1.0 +TimeDelay=0.1 diff --git a/CONTENT/BT3025/MODELS/THRTHR.CTL b/CONTENT/BT3025/MODELS/THRTHR.CTL new file mode 100644 index 0000000..5015122 --- /dev/null +++ b/CONTENT/BT3025/MODELS/THRTHR.CTL @@ -0,0 +1,63 @@ +[StickPosition_JP] +IOMapping=JoystickPhysical +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=StickPosition +Mode=ModeAlwaysActive + +[TorsoLeft_BJHL] +IOMapping=ButtonJoystickHatLeft +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoLeft +Mode=ModeAlwaysActive + +[TorsoRight_BJHR] +IOMapping=ButtonJoystickHatRight +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoRight +Mode=ModeAlwaysActive + +[ERPPC_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERPPC_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERPPC_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERPPC_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[LLaser_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=LLaser +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[LRM15_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=LRM15 +AttributeID=TriggerState +Mode=ModeNonMapping diff --git a/CONTENT/BT3025/MODELS/TK1.MOD b/CONTENT/BT3025/MODELS/TK1.MOD new file mode 100644 index 0000000..49da398 --- /dev/null +++ b/CONTENT/BT3025/MODELS/TK1.MOD @@ -0,0 +1,8 @@ +[video] +object=tk1.bgf + +[collision] +name=tk1_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/TM1.MOD b/CONTENT/BT3025/MODELS/TM1.MOD new file mode 100644 index 0000000..f9faea9 --- /dev/null +++ b/CONTENT/BT3025/MODELS/TM1.MOD @@ -0,0 +1,5 @@ +[video] +object=tm1.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/TM2.MOD b/CONTENT/BT3025/MODELS/TM2.MOD new file mode 100644 index 0000000..9f66bf6 --- /dev/null +++ b/CONTENT/BT3025/MODELS/TM2.MOD @@ -0,0 +1,5 @@ +[video] +object=tm2.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/TMC1.MOD b/CONTENT/BT3025/MODELS/TMC1.MOD new file mode 100644 index 0000000..31438ff --- /dev/null +++ b/CONTENT/BT3025/MODELS/TMC1.MOD @@ -0,0 +1,11 @@ +[video] +; +; tmc1.mod - Tarmac for small base +; +object=tmc1.bgf + +[gauge] +image=tmc1_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/TMC2.MOD b/CONTENT/BT3025/MODELS/TMC2.MOD new file mode 100644 index 0000000..5564b5f --- /dev/null +++ b/CONTENT/BT3025/MODELS/TMC2.MOD @@ -0,0 +1,11 @@ +[video] +; +; tmc2.mod - Tarmac for small base +; +object=tmc2.bgf + +[gauge] +image=tmc2_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/TMC3.MOD b/CONTENT/BT3025/MODELS/TMC3.MOD new file mode 100644 index 0000000..3691524 --- /dev/null +++ b/CONTENT/BT3025/MODELS/TMC3.MOD @@ -0,0 +1,8 @@ +[video] +; +; tmc3.mod - Tarmac for small base +; +object=tmc3.bgf tmc3_lp.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/TMC4.MOD b/CONTENT/BT3025/MODELS/TMC4.MOD new file mode 100644 index 0000000..bec5372 --- /dev/null +++ b/CONTENT/BT3025/MODELS/TMC4.MOD @@ -0,0 +1,8 @@ +[video] +; +; tmc4.mod - Tarmac for small base +; +object=tmc4.bgf tmc4_lp.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/TMC5.MOD b/CONTENT/BT3025/MODELS/TMC5.MOD new file mode 100644 index 0000000..b9ed817 --- /dev/null +++ b/CONTENT/BT3025/MODELS/TMC5.MOD @@ -0,0 +1,8 @@ +[video] +; +; tmc5.mod - Tarmac for small base +; +object=tmc5.bgf tmc5_lp.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/TMC6.MOD b/CONTENT/BT3025/MODELS/TMC6.MOD new file mode 100644 index 0000000..a294ca6 --- /dev/null +++ b/CONTENT/BT3025/MODELS/TMC6.MOD @@ -0,0 +1,8 @@ +[video] +; +; tmc6.mod - Tarmac for small base +; +object=tmc6.bgf tmc6_lp.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/TMC7.MOD b/CONTENT/BT3025/MODELS/TMC7.MOD new file mode 100644 index 0000000..8a5cba9 --- /dev/null +++ b/CONTENT/BT3025/MODELS/TMC7.MOD @@ -0,0 +1,8 @@ +[video] +; +; tmc7.mod - Tarmac for small base +; +object=tmc7.bgf tmc7_lp.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/TMC8.MOD b/CONTENT/BT3025/MODELS/TMC8.MOD new file mode 100644 index 0000000..aabdf69 --- /dev/null +++ b/CONTENT/BT3025/MODELS/TMC8.MOD @@ -0,0 +1,8 @@ +[video] +; +; tmc8.mod - Tarmac for small base +; +object=tmc8.bgf tmc8_lp.bgf + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/TNT.MOD b/CONTENT/BT3025/MODELS/TNT.MOD new file mode 100644 index 0000000..b3933cc --- /dev/null +++ b/CONTENT/BT3025/MODELS/TNT.MOD @@ -0,0 +1,20 @@ +[video] +; +; tnt.mod - Tent +; +object=tnt.bgf +rubble=tntd.bgf + +[collision] +name=tnt_cv.sld + +[gauge] +image=tnt_ga.gim + +[gamedata] +class=CulturalIconClassID +DamageZones=sml.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=smldead +TimeDelay=0.5 +//CrunchExplosionModelFile=smldead diff --git a/CONTENT/BT3025/MODELS/TORSO.SUB b/CONTENT/BT3025/MODELS/TORSO.SUB new file mode 100644 index 0000000..dffa697 --- /dev/null +++ b/CONTENT/BT3025/MODELS/TORSO.SUB @@ -0,0 +1,21 @@ +[Torso] +Type=TorsoClassID +ArmorValue=20.0 +WatchedSubsystem=None +DegradationTemperature=1500.0 +FailureTemperature=2000.0 +WeaponDamagePoints=5.0 +TorsoHorizontalJoint=jointtorso +TorsoHorizontalShadowJoint=jointtshadow +HorizontalRotationPerSecond=20.0 +VerticalRotationPerSecond=40.0 +VerticalLimitTop=20.0 +VerticalLimitBottom=-40.0 +HorizontalLimitRight=-80.0 +HorizontalLimitLeft=80 +VitalSubsystem=False +CriticalHitScoreBonus=0 +MinVoltagePercent=50 +CollisionCriticalHitWeight=0.25 +ButtonAccelerationStartValue=0.3 +ButtonAccelerationPerSecond=0.3 diff --git a/CONTENT/BT3025/MODELS/TORSOLMT.SUB b/CONTENT/BT3025/MODELS/TORSOLMT.SUB new file mode 100644 index 0000000..2025615 --- /dev/null +++ b/CONTENT/BT3025/MODELS/TORSOLMT.SUB @@ -0,0 +1,20 @@ +[Torso] +Type=TorsoClassID +ArmorValue=20.0 +WatchedSubsystem=None +DegradationTemperature=1500.0 +FailureTemperature=2000.0 +WeaponDamagePoints=5.0 +TorsoHorizontalEnabled=False +HorizontalRotationPerSecond=0.0 +VerticalRotationPerSecond=50.0 +VerticalLimitTop=20.0 +VerticalLimitBottom=-40.0 +HorizontalLimitRight=-0.01 +HorizontalLimitLeft=0.01 +VitalSubsystem=False +CriticalHitScoreBonus=0 +MinVoltagePercent=50 +CollisionCriticalHitWeight=0.25 +ButtonAccelerationStartValue=0.3 +ButtonAccelerationPerSecond=0.3 \ No newline at end of file diff --git a/CONTENT/BT3025/MODELS/TREE.MOD b/CONTENT/BT3025/MODELS/TREE.MOD new file mode 100644 index 0000000..9d29b92 --- /dev/null +++ b/CONTENT/BT3025/MODELS/TREE.MOD @@ -0,0 +1,17 @@ +[video] +object=treesh.bgf tree.bgf/BY +rubble=trunk.bgf + +[collision] +name=tree_cv.sld + +[gauge] +image=tree_ga.gim + +[gamedata] +class=CulturalIconClassID +DamageZones=sml.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=smldead +TimeDelay=0.2 +CrunchExplosionModelFile=stephit diff --git a/CONTENT/BT3025/MODELS/TRK.DMG b/CONTENT/BT3025/MODELS/TRK.DMG new file mode 100644 index 0000000..8405f4a --- /dev/null +++ b/CONTENT/BT3025/MODELS/TRK.DMG @@ -0,0 +1,3 @@ +[default] +WeaponDamagePoints=1 +VitalDamageZone=True diff --git a/CONTENT/BT3025/MODELS/TRK1.MOD b/CONTENT/BT3025/MODELS/TRK1.MOD new file mode 100644 index 0000000..1191aca --- /dev/null +++ b/CONTENT/BT3025/MODELS/TRK1.MOD @@ -0,0 +1,14 @@ +[video] +object=trk1.bgf trk1_FR.bgf +rubble=trk1d.bgf trk1d_FR.bgf + +[collision] +name=trk1_cv.sld + +[gamedata] +class=CulturalIconClassID +DamageZones=trk.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=trkdead +TimeDelay=0.5 +CrunchExplosionModelFile=stephit diff --git a/CONTENT/BT3025/MODELS/TRK3.MOD b/CONTENT/BT3025/MODELS/TRK3.MOD new file mode 100644 index 0000000..d9b8dc2 --- /dev/null +++ b/CONTENT/BT3025/MODELS/TRK3.MOD @@ -0,0 +1,14 @@ +[video] +object=trk3.bgf trk3_FR.bgf +rubble=trk3d.bgf trk3d_FR.bgf + +[collision] +name=trk3_cv.sld + +[gamedata] +class=CulturalIconClassID +DamageZones=trk.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=trkdead +TimeDelay=0.5 +CrunchExplosionModelFile=stephit diff --git a/CONTENT/BT3025/MODELS/TRK4.MOD b/CONTENT/BT3025/MODELS/TRK4.MOD new file mode 100644 index 0000000..64c663e --- /dev/null +++ b/CONTENT/BT3025/MODELS/TRK4.MOD @@ -0,0 +1,14 @@ +[video] +object=trk4.bgf trk4_FR.bgf +rubble=trk4d.bgf trk4d_FR.bgf + +[collision] +name=trk4_cv.sld + +[gamedata] +class=CulturalIconClassID +DamageZones=trk.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=trkdead +TimeDelay=0.5 +CrunchExplosionModelFile=stephit diff --git a/CONTENT/BT3025/MODELS/TRKDEAD.MOD b/CONTENT/BT3025/MODELS/TRKDEAD.MOD new file mode 100644 index 0000000..770d9f0 --- /dev/null +++ b/CONTENT/BT3025/MODELS/TRKDEAD.MOD @@ -0,0 +1,10 @@ +[video] +object=1015 1016 + +[audio] +external=sbnexp.scp + +[gamedata] +class=ExplosionClassID +// Audio requires ExplosionDuration >= 12.0 +ExplosionDuration=12.0 diff --git a/CONTENT/BT3025/MODELS/TT1.MOD b/CONTENT/BT3025/MODELS/TT1.MOD new file mode 100644 index 0000000..2c08b5a --- /dev/null +++ b/CONTENT/BT3025/MODELS/TT1.MOD @@ -0,0 +1,14 @@ +[video] +object=tt1.bgf +rubble=tt1d.bgf + +[collision] +name=tt1_cv.sld + +[gamedata] +class=CulturalIconClassID +DamageZones=trk.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=trkdead +TimeDelay=0.5 +CrunchExplosionModelFile=stephit diff --git a/CONTENT/BT3025/MODELS/TT2.MOD b/CONTENT/BT3025/MODELS/TT2.MOD new file mode 100644 index 0000000..6827917 --- /dev/null +++ b/CONTENT/BT3025/MODELS/TT2.MOD @@ -0,0 +1,14 @@ +[video] +object=tt2.bgf +rubble=tt2d.bgf + +[collision] +name=tt2_cv.sld + +[gamedata] +class=CulturalIconClassID +DamageZones=trk.dmg +StoppingCollisionVolume=0 +ExplosionModelFile=trkdead +CrunchExplosionModelFile=stephit +TimeDelay=0.5 diff --git a/CONTENT/BT3025/MODELS/TWR.DMG b/CONTENT/BT3025/MODELS/TWR.DMG new file mode 100644 index 0000000..1d82e46 --- /dev/null +++ b/CONTENT/BT3025/MODELS/TWR.DMG @@ -0,0 +1,3 @@ +[default] +WeaponDamagePoints=100 +VitalDamageZone=True diff --git a/CONTENT/BT3025/MODELS/TWR.MOD b/CONTENT/BT3025/MODELS/TWR.MOD new file mode 100644 index 0000000..d703c58 --- /dev/null +++ b/CONTENT/BT3025/MODELS/TWR.MOD @@ -0,0 +1,20 @@ +[video] +; +; twr.mod - Tower +; +object=twr.bgf twr_FR.bgf twr_LP.bgf +rubble=twrd.bgf twrd_FR.bgf + +[collision] +name=twr_cv.sld + +[gauge] +image=twr_ga.gim + +[gamedata] +class=CulturalIconClassID +DamageZones=twr.dmg +StoppingCollisionVolume=1 +ExplosionModelFile=twrdead +TimeDelay=1.5 +//CrunchExplosionModelFile=stephit diff --git a/CONTENT/BT3025/MODELS/TWRDEAD.MOD b/CONTENT/BT3025/MODELS/TWRDEAD.MOD new file mode 100644 index 0000000..3eb731c --- /dev/null +++ b/CONTENT/BT3025/MODELS/TWRDEAD.MOD @@ -0,0 +1,11 @@ +[video] +object=1017 1016 + +[audio] +external=bigexp.scp + +[gamedata] +class=ExplosionClassID +// WARNING Audio requires ExplosionDuration >= 5.0 +ExplosionDuration=5.0 + diff --git a/CONTENT/BT3025/MODELS/VEHICLE.TBL b/CONTENT/BT3025/MODELS/VEHICLE.TBL new file mode 100644 index 0000000..9a557e6 --- /dev/null +++ b/CONTENT/BT3025/MODELS/VEHICLE.TBL @@ -0,0 +1,46 @@ +; +; vehicle.tbl - BattleTech +; +[vehicle] +blkhawk=blh +firstrtr=fir +blkjack=jak +loki=lok +madcat=mad +owens=own +raptor=rap +strider=sti +thor=thr +vulture=vul + +[color] // mech camo colors +Black=blk +Brown=brn +Crimson=red +Green=grn +Grey=gry +Tan=tan +White=wht + +[badge] // emblem patterns (insignia) +Davion=lgo2 +Kurita=lgo1 +Liao=lgo3 +Marik=lgo5 +None=lgo0 +Steiner=lgo4 +VGL=lgo6 + +[patch] // emblem colors +Black=blk +Blue=blu +Green=grn +Grey=gry +Red=red +Violet=vlt +White=wht +Yellow=yel + +[substitute] +skin:lgo=<< +skin:=_%color%%serno%: diff --git a/CONTENT/BT3025/MODELS/VUL1DMG.EXP b/CONTENT/BT3025/MODELS/VUL1DMG.EXP new file mode 100644 index 0000000..c9b1598 --- /dev/null +++ b/CONTENT/BT3025/MODELS/VUL1DMG.EXP @@ -0,0 +1,28 @@ +[OneDamage] +ExplosionModelFile=dam1hit +DamageLevel=0.2 +TimeDelay=0.0 + +[TwoDamage] +ExplosionModelFile=dam2hit +DamageLevel=0.4 +TimeDelay=0.0 + +[ThreeDamage] +ExplosionModelFile=dam3hit +DamageLevel=0.6 +TimeDelay=0.0 + +[FourDamage] +ExplosionModelFile=dam4hit +DamageLevel=0.8 +TimeDelay=0.0 + +[DestroyedExplosion] +ExplosionModelFile=desthit +GraphicState=Destroyed + +[GoneExplosion] +ExplosionModelFile=desthit +GraphicState=Gone + diff --git a/CONTENT/BT3025/MODELS/VUL1THR.CTL b/CONTENT/BT3025/MODELS/VUL1THR.CTL new file mode 100644 index 0000000..5c7436e --- /dev/null +++ b/CONTENT/BT3025/MODELS/VUL1THR.CTL @@ -0,0 +1,69 @@ +[StickPosition_JP] +IOMapping=JoystickPhysical +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=StickPosition +Mode=ModeAlwaysActive + +[TorsoLeft_BJHL] +IOMapping=ButtonJoystickHatLeft +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoLeft +Mode=ModeAlwaysActive + +[TorsoRight_BJHR] +IOMapping=ButtonJoystickHatRight +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoRight +Mode=ModeAlwaysActive + +[PPC_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=PPC_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[PPC_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=PPC_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_3_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser_3 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_4_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser_4 +AttributeID=TriggerState +Mode=ModeNonMapping +[LRM15_1_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=LRM15_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[LRM15_2_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=LRM15_2 +AttributeID=TriggerState +Mode=ModeNonMapping diff --git a/CONTENT/BT3025/MODELS/VUL2DMG.EXP b/CONTENT/BT3025/MODELS/VUL2DMG.EXP new file mode 100644 index 0000000..c9b1598 --- /dev/null +++ b/CONTENT/BT3025/MODELS/VUL2DMG.EXP @@ -0,0 +1,28 @@ +[OneDamage] +ExplosionModelFile=dam1hit +DamageLevel=0.2 +TimeDelay=0.0 + +[TwoDamage] +ExplosionModelFile=dam2hit +DamageLevel=0.4 +TimeDelay=0.0 + +[ThreeDamage] +ExplosionModelFile=dam3hit +DamageLevel=0.6 +TimeDelay=0.0 + +[FourDamage] +ExplosionModelFile=dam4hit +DamageLevel=0.8 +TimeDelay=0.0 + +[DestroyedExplosion] +ExplosionModelFile=desthit +GraphicState=Destroyed + +[GoneExplosion] +ExplosionModelFile=desthit +GraphicState=Gone + diff --git a/CONTENT/BT3025/MODELS/VUL2THR.CTL b/CONTENT/BT3025/MODELS/VUL2THR.CTL new file mode 100644 index 0000000..dddf8ad --- /dev/null +++ b/CONTENT/BT3025/MODELS/VUL2THR.CTL @@ -0,0 +1,81 @@ +[StickPosition_JP] +IOMapping=JoystickPhysical +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=StickPosition +Mode=ModeAlwaysActive + +[TorsoLeft_BJHL] +IOMapping=ButtonJoystickHatLeft +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoLeft +Mode=ModeAlwaysActive + +[TorsoRight_BJHR] +IOMapping=ButtonJoystickHatRight +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoRight +Mode=ModeAlwaysActive + +[SLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=SLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[SLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=SLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[SLaser_3_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=SLaser_3 +AttributeID=TriggerState +Mode=ModeNonMapping +[SLaser_4_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=SLaser_4 +AttributeID=TriggerState +Mode=ModeNonMapping +[STRK6_1_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=STRK6_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[STRK6_2_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=STRK6_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[STRK6_3_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=STRK6_3 +AttributeID=TriggerState +Mode=ModeNonMapping +[STRK6_4_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=STRK6_4 +AttributeID=TriggerState +Mode=ModeNonMapping +[STRK6_5_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=STRK6_5 +AttributeID=TriggerState +Mode=ModeNonMapping +[STRK6_6_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=STRK6_6 +AttributeID=TriggerState +Mode=ModeNonMapping diff --git a/CONTENT/BT3025/MODELS/VULDEAD.MOD b/CONTENT/BT3025/MODELS/VULDEAD.MOD new file mode 100644 index 0000000..83959ea --- /dev/null +++ b/CONTENT/BT3025/MODELS/VULDEAD.MOD @@ -0,0 +1,9 @@ +[video] +object=104 3 4 5 1007 15 1001 + +[audio] +external=brnext.scp + +[gamedata] +class=ExplosionClassID +ExplosionDuration=9.0 diff --git a/CONTENT/BT3025/MODELS/VULDMG.EXP b/CONTENT/BT3025/MODELS/VULDMG.EXP new file mode 100644 index 0000000..c9b1598 --- /dev/null +++ b/CONTENT/BT3025/MODELS/VULDMG.EXP @@ -0,0 +1,28 @@ +[OneDamage] +ExplosionModelFile=dam1hit +DamageLevel=0.2 +TimeDelay=0.0 + +[TwoDamage] +ExplosionModelFile=dam2hit +DamageLevel=0.4 +TimeDelay=0.0 + +[ThreeDamage] +ExplosionModelFile=dam3hit +DamageLevel=0.6 +TimeDelay=0.0 + +[FourDamage] +ExplosionModelFile=dam4hit +DamageLevel=0.8 +TimeDelay=0.0 + +[DestroyedExplosion] +ExplosionModelFile=desthit +GraphicState=Destroyed + +[GoneExplosion] +ExplosionModelFile=desthit +GraphicState=Gone + diff --git a/CONTENT/BT3025/MODELS/VULTHR.CTL b/CONTENT/BT3025/MODELS/VULTHR.CTL new file mode 100644 index 0000000..3d4fd64 --- /dev/null +++ b/CONTENT/BT3025/MODELS/VULTHR.CTL @@ -0,0 +1,69 @@ +[StickPosition_JP] +IOMapping=JoystickPhysical +Type=DirectMapping +Subsystem=ControlsMapper +AttributeID=StickPosition +Mode=ModeAlwaysActive + +[TorsoLeft_BJHL] +IOMapping=ButtonJoystickHatLeft +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoLeft +Mode=ModeAlwaysActive + +[TorsoRight_BJHR] +IOMapping=ButtonJoystickHatRight +Type=DirectMapping +Subsystem=Torso +AttributeID=TorsoRight +Mode=ModeAlwaysActive + +[LLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=LLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[LLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=LLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERSLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERSLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_1_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[ERMLaser_2_Trigger] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Subsystem=ERMLaser_2 +AttributeID=TriggerState +Mode=ModeNonMapping +[LRM20_1_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=LRM20_1 +AttributeID=TriggerState +Mode=ModeNonMapping +[LRM20_2_ThumbHigh] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Subsystem=LRM20_2 +AttributeID=TriggerState +Mode=ModeNonMapping diff --git a/CONTENT/BT3025/MODELS/WALL1.MOD b/CONTENT/BT3025/MODELS/WALL1.MOD new file mode 100644 index 0000000..e7f122e --- /dev/null +++ b/CONTENT/BT3025/MODELS/WALL1.MOD @@ -0,0 +1,11 @@ +[video] +object=wall1.bgf + +[gauge] +image=wall1_ga.gim + +[collision] +name=wall1_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/WALL10K.MOD b/CONTENT/BT3025/MODELS/WALL10K.MOD new file mode 100644 index 0000000..da9f123 --- /dev/null +++ b/CONTENT/BT3025/MODELS/WALL10K.MOD @@ -0,0 +1,7 @@ +[collision] +name=wall10k.sld + + +[gamedata] +class=UnscalableTerrainClassID + \ No newline at end of file diff --git a/CONTENT/BT3025/MODELS/WALL2.MOD b/CONTENT/BT3025/MODELS/WALL2.MOD new file mode 100644 index 0000000..1b92cf7 --- /dev/null +++ b/CONTENT/BT3025/MODELS/WALL2.MOD @@ -0,0 +1,11 @@ +[video] +object=wall2.bgf + +[gauge] +image=wall2_ga.gim + +[collision] +name=wall2_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/WALL3.MOD b/CONTENT/BT3025/MODELS/WALL3.MOD new file mode 100644 index 0000000..002fb84 --- /dev/null +++ b/CONTENT/BT3025/MODELS/WALL3.MOD @@ -0,0 +1,11 @@ +[video] +object=wall3.bgf + +[gauge] +image=wall3_ga.gim + +[collision] +name=wall3_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/WL1.MOD b/CONTENT/BT3025/MODELS/WL1.MOD new file mode 100644 index 0000000..befae8e --- /dev/null +++ b/CONTENT/BT3025/MODELS/WL1.MOD @@ -0,0 +1,8 @@ +[video] +object=wl1.bgf + +[collision] +name=wl1_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/WL2.MOD b/CONTENT/BT3025/MODELS/WL2.MOD new file mode 100644 index 0000000..9f779f5 --- /dev/null +++ b/CONTENT/BT3025/MODELS/WL2.MOD @@ -0,0 +1,8 @@ +[video] +object=wl2.bgf + +[collision] +name=wl2_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/WL3.MOD b/CONTENT/BT3025/MODELS/WL3.MOD new file mode 100644 index 0000000..3f71601 --- /dev/null +++ b/CONTENT/BT3025/MODELS/WL3.MOD @@ -0,0 +1,8 @@ +[video] +object=wl3.bgf + +[collision] +name=wl3_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/WL4.MOD b/CONTENT/BT3025/MODELS/WL4.MOD new file mode 100644 index 0000000..fa3d674 --- /dev/null +++ b/CONTENT/BT3025/MODELS/WL4.MOD @@ -0,0 +1,8 @@ +[video] +object=wl4.bgf + +[collision] +name=wl4_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/WL5.MOD b/CONTENT/BT3025/MODELS/WL5.MOD new file mode 100644 index 0000000..9bce322 --- /dev/null +++ b/CONTENT/BT3025/MODELS/WL5.MOD @@ -0,0 +1,8 @@ +[video] +object=wl5.bgf + +[collision] +name=wl5_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/WL6.MOD b/CONTENT/BT3025/MODELS/WL6.MOD new file mode 100644 index 0000000..de06f3c --- /dev/null +++ b/CONTENT/BT3025/MODELS/WL6.MOD @@ -0,0 +1,8 @@ +[video] +object=wl6.bgf + +[collision] +name=wl6_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/WL7.MOD b/CONTENT/BT3025/MODELS/WL7.MOD new file mode 100644 index 0000000..e2a85e4 --- /dev/null +++ b/CONTENT/BT3025/MODELS/WL7.MOD @@ -0,0 +1,8 @@ +[video] +object=wl7.bgf + +[collision] +name=wl7_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/WL8.MOD b/CONTENT/BT3025/MODELS/WL8.MOD new file mode 100644 index 0000000..ae0ed73 --- /dev/null +++ b/CONTENT/BT3025/MODELS/WL8.MOD @@ -0,0 +1,8 @@ +[video] +object=wl8.bgf + +[collision] +name=wl8_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/WL9.MOD b/CONTENT/BT3025/MODELS/WL9.MOD new file mode 100644 index 0000000..61ef4a3 --- /dev/null +++ b/CONTENT/BT3025/MODELS/WL9.MOD @@ -0,0 +1,8 @@ +[video] +object=wl9.bgf + +[collision] +name=wl9_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/WNDSFX01.MOD b/CONTENT/BT3025/MODELS/WNDSFX01.MOD new file mode 100644 index 0000000..f39c507 --- /dev/null +++ b/CONTENT/BT3025/MODELS/WNDSFX01.MOD @@ -0,0 +1,5 @@ +[audio] +external=wndext01.scp + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/WNDSFX02.MOD b/CONTENT/BT3025/MODELS/WNDSFX02.MOD new file mode 100644 index 0000000..f39c507 --- /dev/null +++ b/CONTENT/BT3025/MODELS/WNDSFX02.MOD @@ -0,0 +1,5 @@ +[audio] +external=wndext01.scp + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/WNDSFX03.MOD b/CONTENT/BT3025/MODELS/WNDSFX03.MOD new file mode 100644 index 0000000..f39c507 --- /dev/null +++ b/CONTENT/BT3025/MODELS/WNDSFX03.MOD @@ -0,0 +1,5 @@ +[audio] +external=wndext01.scp + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/BT3025/MODELS/WOLF.MOD b/CONTENT/BT3025/MODELS/WOLF.MOD new file mode 100644 index 0000000..0fa27a8 --- /dev/null +++ b/CONTENT/BT3025/MODELS/WOLF.MOD @@ -0,0 +1,2 @@ +[gamedata] +class=BTTeamClassID diff --git a/CONTENT/BT3025/MODELS/WPN.BLD b/CONTENT/BT3025/MODELS/WPN.BLD new file mode 100644 index 0000000..c0c1fbd --- /dev/null +++ b/CONTENT/BT3025/MODELS/WPN.BLD @@ -0,0 +1,64 @@ +[ammo] +machgun.sub=ammomg.sub +gaussrfl.sub=ammogaus.sub + +afc5.sub=ammafc5.sub +afc25.sub=ammafc25.sub +afc50.sub=ammafc50.sub +afc100.sub=amafc100.sub + +srm2.sub=ammsrm2.sub +srm4.sub=ammsrm4.sub +srm6.sub=ammsrm6.sub + +strk2.sub=ammstrk2.sub +strk4.sub=ammstrk4.sub +strk6.sub=ammstrk6.sub + +lrm5.sub=ammlrm5.sub +lrm10.sub=ammlrm10.sub +lrm15.sub=ammlrm15.sub +lrm20.sub=ammlrm20.sub + +nrk5.sub=ammnrk5.sub +nrk10.sub=ammnrk10.sub +nrk15.sub=ammnrk15.sub +nrk20.sub=ammnrk20.sub + +[weapon] +machgun.sub=ProjectileWeaponClassID +gaussrfl.sub=ProjectileWeaponClassID + +afc5.sub=ProjectileWeaponClassID +afc25.sub=ProjectileWeaponClassID +afc50.sub=ProjectileWeaponClassID +afc100.sub=ProjectileWeaponClassID + +srm2.sub=MissileLauncherClassID +srm4.sub=MissileLauncherClassID +srm6.sub=MissileLauncherClassID + +strk2.sub=MissileLauncherClassID +strk4.sub=MissileLauncherClassID +strk6.sub=MissileLauncherClassID + +lrm5.sub=MissileLauncherClassID +lrm10.sub=MissileLauncherClassID +lrm15.sub=MissileLauncherClassID +lrm20.sub=MissileLauncherClassID + +nrk5.sub=MissileLauncherClassID +nrk10.sub=MissileLauncherClassID +nrk15.sub=MissileLauncherClassID +nrk20.sub=MissileLauncherClassID + +mlaser.sub=EmitterClassID +slaser.sub=EmitterClassID +llaser.sub=EmitterClassID + +erslaser.sub=EmitterClassID +ermlaser.sub=EmitterClassID +erllaser.sub=EmitterClassID + +ppc.sub=PPCClassID +erppc.sub=PPCClassID diff --git a/CONTENT/BT3025/MODELS/WPNDMG.TBL b/CONTENT/BT3025/MODELS/WPNDMG.TBL new file mode 100644 index 0000000..eab0d79 --- /dev/null +++ b/CONTENT/BT3025/MODELS/WPNDMG.TBL @@ -0,0 +1,47 @@ +[LeftFoot] +DamageZone=dz_lfoot 1.0 +[RightFoot] +DamageZone=dz_rfoot 1.0 + +[LeftLeg] +DamageZone=dz_luleg 0.4 +DamageZone=dz_ldleg 0.4 +DamageZone=dz_ruleg 0.1 +DamageZone=dz_rdleg 0.1 + +[RightLeg] +DamageZone=dz_ruleg 0.4 +DamageZone=dz_rdleg 0.4 +DamageZone=dz_luleg 0.1 +DamageZone=dz_ldleg 0.1 + +[UpperLeft] +DamageZone=dz_larm 0.5 +DamageZone=dz_lgun 0.5 + +[UpperRight] +DamageZone=dz_rarm 0.5 +DamageZone=dz_rgun 0.5 + +[Top] +DamageZone=dz_missle 1.0 + +// The data in this table is totally bogus. GDU 12-2-95 +[Layer1] +PieSlice=LeftFoot +PieSlice=RightFoot +RotateWithTorso=False + +[Layer2] +PieSlice=LeftLeg +PieSlice=RightLeg +RotateWithTorso=False + +[Layer3] +PieSlice=UpperLeft +PieSlice=UpperRight +RotateWithTorso=True + +[Layer4] +PieSlice=Top +RotateWithTorso=True \ No newline at end of file diff --git a/CONTENT/BT3025/MODELS/WST.MOD b/CONTENT/BT3025/MODELS/WST.MOD new file mode 100644 index 0000000..553f852 --- /dev/null +++ b/CONTENT/BT3025/MODELS/WST.MOD @@ -0,0 +1,20 @@ +[video] +; +; wst.mod - Weather station +; +object=wst.bgf wst_FR.bgf wst_LP.bgf +rubble=wstd.bgf wstd_FR.bgf + +[collision] +name=wst_cv.sld + +[gauge] +image=wst_ga.gim + +[gamedata] +class=CulturalIconClassID +DamageZones=med.dmg +StoppingCollisionVolume=1 +ExplosionModelFile=meddead +TimeDelay=0.5 +CrunchExplosionModelFile=stephit diff --git a/CONTENT/BT3025/NEWSTUFF.BLD b/CONTENT/BT3025/NEWSTUFF.BLD new file mode 100644 index 0000000..148235d --- /dev/null +++ b/CONTENT/BT3025/NEWSTUFF.BLD @@ -0,0 +1,21 @@ +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 diff --git a/CONTENT/BT3025/NULL b/CONTENT/BT3025/NULL new file mode 100644 index 0000000..8a98a20 --- /dev/null +++ b/CONTENT/BT3025/NULL @@ -0,0 +1,24 @@ +BattleTech v4.2 +BTL4Application::BTL4Application +GaugeInterpreter: undefined label 'Initialization' +MakeVehicleSystems hud=0x00ce87a8 +Warning: damage zone 'dz_missle' not found! +Warning: damage zone 'dz_missle' not found! +Warning: damage zone 'dz_lmissle' not found! +Warning: damage zone 'dz_rmissle' not found! +Warning: damage zone 'dz_ftorso' not found! +Warning: damage zone 'dz_btorso' not found! +Entity -1:1 class42 couldn't figure out how to MakeEntityRenderables +BTL4Application::RunMissionMessageHandler +Turning Plasma Score Display On +BTL4Application::RunMissionMessageHandler +Turning Plasma Score Display On +Mission stopped by keystroke! +~RankAndScore: I think my score is 1000 +SVGA16::~SVGA16: pixel management statistics ------------ +Number of dirty pixels =2585407 +Number of transferred pixels=1725787 +Times overflowed =0 +Ratio =1.4981 +------------------------------------------------------- +2):>>>> init pxpl ware, mode 0x8 clk 0x9 sog 0 rgb 1 mono 1 dup 0 diff --git a/CONTENT/BT3025/RESULT2.TXT b/CONTENT/BT3025/RESULT2.TXT new file mode 100644 index 0000000..d29c5a1 --- /dev/null +++ b/CONTENT/BT3025/RESULT2.TXT @@ -0,0 +1,21 @@ +BattleTech v4.10 +BTL4Application::BTL4Application +GaugeInterpreter: undefined label 'Initialization' +MakeVehicleSystems hud=0x01121660 +Warning: damage zone 'dz_lmissle' not found! +Warning: damage zone 'dz_rmissle' not found! +Warning: damage zone 'dz_ftorso' not found! +Warning: damage zone 'dz_btorso' not found! +BTL4Application::RunMissionMessageHandler +Turning Plasma Score Display On +BTL4Application::RunMissionMessageHandler +Turning Plasma Score Display On +Mission stopped by keystroke! +~RankAndScore: I think my score is 1000 +SVGA16::~SVGA16: pixel management statistics ------------ +Number of dirty pixels =7824028 +Number of transferred pixels=6174399 +Times overflowed =0 +Ratio =1.26717 +------------------------------------------------------- +2):>>>> init pxpl ware, mode 0x8 clk 0x9 sog 0 rgb 1 mono 1 dup 0 diff --git a/CONTENT/BT3025/SHOWENV.BAT b/CONTENT/BT3025/SHOWENV.BAT new file mode 100644 index 0000000..d0b4698 --- /dev/null +++ b/CONTENT/BT3025/SHOWENV.BAT @@ -0,0 +1,12 @@ +@echo off +echo REVIEW=%REVIEW% +echo L4EYES=%L4EYES% +echo L4VIEWEXT=%L4VIEWEXT% +echo L4ANIMATION=%L4ANIMATION% +echo L4DPLCFG=%L4DPLCFG% +echo L4CONTROLS=%L4CONTROLS% +echo L4TIMER=%L4TIMER% +echo L4GAUGE=%L4GAUGE% +echo AWE_FRONT=%AWE_FRONT% +echo AWE_REAR=%AWE_REAR% +echo DPLARG=%DPLARG% diff --git a/CONTENT/BT3025/SOLIDS/AB01_CV.SLD b/CONTENT/BT3025/SOLIDS/AB01_CV.SLD new file mode 100644 index 0000000..0605e02 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/AB01_CV.SLD @@ -0,0 +1,113 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-68.5 +extmaxX=20 +extminY=-20 +extmaxY=15 +extminZ=-50 +extmaxZ=-5.5 + +slcminX=-68.5 +slcmaxX=20 +slcminY=-20 +slcmaxY=15 +slcminZ=-50 +slcmaxZ=-5.5 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-68.5 +extmaxX=13 +extminY=-20 +extmaxY=15 +extminZ=-5.5 +extmaxZ=0 + +slcminX=-68.5 +slcmaxX=13 +slcminY=-20 +slcmaxY=15 +slcminZ=-5.5 +slcmaxZ=0 + + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-68.5 +extmaxX=20 +extminY=-20 +extmaxY=15 +extminZ=0 +extmaxZ=13 + +slcminX=-68.5 +slcmaxX=20 +slcminY=-20 +slcmaxY=15 +slcminZ=0 +slcmaxZ=13 + + +[volume 3] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-68.5 +extmaxX=20 +extminY=-20 +extmaxY=15 +extminZ=18.5 +extmaxZ=50 + +slcminX=-68.5 +slcmaxX=20 +slcminY=-20 +slcmaxY=15 +slcminZ=18.5 +slcmaxZ=50 + + +[volume 4] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-68.5 +extmaxX=13 +extminY=-20 +extmaxY=15 +extminZ=13 +extmaxZ=18.5 + +slcminX=-68.5 +slcmaxX=13 +slcminY=-20 +slcmaxY=15 +slcminZ=13 +slcmaxZ=18.5 + + +[COLLISION] +name=ab01_cv.sld +count=5 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/AB02_CV.SLD b/CONTENT/BT3025/SOLIDS/AB02_CV.SLD new file mode 100644 index 0000000..faa6346 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/AB02_CV.SLD @@ -0,0 +1,113 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-25 +extmaxX=-12 +extminY=0 +extmaxY=35 +extminZ=-45 +extmaxZ=45.5 + +slcminX=-25 +slcmaxX=-12 +slcminY=0 +slcmaxY=35 +slcminZ=-45 +slcmaxZ=45.5 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-12 +extmaxX=-6.5 +extminY=0 +extmaxY=35 +extminZ=-38 +extmaxZ=45.5 + +slcminX=-12 +slcmaxX=-6.5 +slcminY=0 +slcmaxY=35 +slcminZ=-38 +slcmaxZ=45.5 + + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-6.5 +extmaxX=6.5 +extminY=0 +extmaxY=35 +extminZ=-45 +extmaxZ=45.5 + +slcminX=-6.5 +slcmaxX=6.5 +slcminY=0 +slcmaxY=35 +slcminZ=-45 +slcmaxZ=45.5 + + +[volume 3] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=12 +extmaxX=25 +extminY=0 +extmaxY=35 +extminZ=-45 +extmaxZ=45.5 + +slcminX=12 +slcmaxX=25 +slcminY=0 +slcmaxY=35 +slcminZ=-45 +slcmaxZ=45.5 + + +[volume 4] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=6.5 +extmaxX=12 +extminY=0 +extmaxY=35 +extminZ=-38 +extmaxZ=45.5 + +slcminX=6.5 +slcmaxX=12 +slcminY=0 +slcmaxY=35 +slcminZ=-38 +slcmaxZ=45.5 + + +[COLLISION] +name=ab02_cv.sld +count=5 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/AB03_CV.SLD b/CONTENT/BT3025/SOLIDS/AB03_CV.SLD new file mode 100644 index 0000000..edd7a13 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/AB03_CV.SLD @@ -0,0 +1,155 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-20 +extmaxX=68.5 +extminY=0 +extmaxY=35 +extminZ=37 +extmaxZ=50 + +slcminX=-20 +slcmaxX=68.5 +slcminY=0 +slcmaxY=35 +slcminZ=37 +slcmaxZ=50 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-13 +extmaxX=68.5 +extminY=0 +extmaxY=35 +extminZ=13 +extmaxZ=18.5 + +slcminX=-13 +slcmaxX=68.5 +slcminY=0 +slcmaxY=35 +slcminZ=13 +slcmaxZ=18.5 + + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-20 +extmaxX=68.5 +extminY=0 +extmaxY=35 +extminZ=0 +extmaxZ=13 + +slcminX=-20 +slcmaxX=68.5 +slcminY=0 +slcmaxY=35 +slcminZ=0 +slcmaxZ=13 + + +[volume 3] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-20 +extmaxX=68.5 +extminY=0 +extmaxY=35 +extminZ=18.5 +extmaxZ=31.5 + +slcminX=-20 +slcmaxX=68.5 +slcminY=0 +slcmaxY=35 +slcminZ=18.5 +slcmaxZ=31.5 + + +[volume 4] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-13 +extmaxX=68.5 +extminY=0 +extmaxY=35 +extminZ=31.5 +extmaxZ=37 + +slcminX=-13 +slcmaxX=68.5 +slcminY=0 +slcmaxY=35 +slcminZ=31.5 +slcmaxZ=37 + + +[volume 5] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-20 +extmaxX=68.5 +extminY=0 +extmaxY=35 +extminZ=-50 +extmaxZ=-5.5 + +slcminX=-20 +slcmaxX=68.5 +slcminY=0 +slcmaxY=35 +slcminZ=-50 +slcmaxZ=-5.5 + + +[volume 6] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-13 +extmaxX=68.5 +extminY=0 +extmaxY=35 +extminZ=-5.5 +extmaxZ=0 + +slcminX=-13 +slcmaxX=68.5 +slcminY=0 +slcmaxY=35 +slcminZ=-5.5 +slcmaxZ=0 + + +[COLLISION] +name=ab03_cv.sld +count=7 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/AB04_CV.SLD b/CONTENT/BT3025/SOLIDS/AB04_CV.SLD new file mode 100644 index 0000000..1a3c395 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/AB04_CV.SLD @@ -0,0 +1,155 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-37 +extmaxX=-30.5 +extminY=-10 +extmaxY=15 +extminZ=-52.5 +extmaxZ=38 + +slcminX=-37 +slcmaxX=-30.5 +slcminY=-10 +slcmaxY=15 +slcminZ=-52.5 +slcmaxZ=38 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-30.5 +extmaxX=-12 +extminY=-5 +extmaxY=15 +extminZ=-52.5 +extmaxZ=31.5 + +slcminX=-30.5 +slcmaxX=-12 +slcminY=-5 +slcmaxY=15 +slcminZ=-52.5 +slcmaxZ=31.5 + + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-12 +extmaxX=-3 +extminY=-10 +extmaxY=15 +extminZ=-52.5 +extmaxZ=38 + +slcminX=-12 +slcmaxX=-3 +slcminY=-10 +slcmaxY=15 +slcminZ=-52.5 +slcmaxZ=38 + + +[volume 3] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-30.5 +extmaxX=-28.5 +extminY=-10 +extmaxY=-5 +extminZ=-52.5 +extmaxZ=31.5 + +slcminX=-30.5 +slcmaxX=-28.5 +slcminY=-10 +slcmaxY=-5 +slcminZ=-52.5 +slcmaxZ=31.5 + + +[volume 4] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-22 +extmaxX=-12 +extminY=-10 +extmaxY=-5 +extminZ=-52.5 +extmaxZ=31.5 + +slcminX=-22 +slcmaxX=-12 +slcminY=-10 +slcmaxY=-5 +slcminZ=-52.5 +slcmaxZ=31.5 + + +[volume 5] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=2.5 +extmaxX=38 +extminY=-10 +extmaxY=15 +extminZ=-52.5 +extmaxZ=38 + +slcminX=2.5 +slcmaxX=38 +slcminY=-10 +slcmaxY=15 +slcminZ=-52.5 +slcmaxZ=38 + + +[volume 6] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-3 +extmaxX=2.5 +extminY=-10 +extmaxY=15 +extminZ=-52.5 +extmaxZ=31 + +slcminX=-3 +slcmaxX=2.5 +slcminY=-10 +slcmaxY=15 +slcminZ=-52.5 +slcmaxZ=31 + + +[COLLISION] +name=ab04_cv.sld +count=7 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/AB05_CV.SLD b/CONTENT/BT3025/SOLIDS/AB05_CV.SLD new file mode 100644 index 0000000..5203010 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/AB05_CV.SLD @@ -0,0 +1,113 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-150 +extmaxX=-137 +extminY=-10 +extmaxY=15 +extminZ=-45 +extmaxZ=43.5 + +slcminX=-150 +slcmaxX=-137 +slcminY=-10 +slcmaxY=15 +slcminZ=-45 +slcmaxZ=43.5 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-137 +extmaxX=-131.5 +extminY=-10 +extmaxY=15 +extminZ=-38 +extmaxZ=43.5 + +slcminX=-137 +slcmaxX=-131.5 +slcminY=-10 +slcmaxY=15 +slcminZ=-38 +slcmaxZ=43.5 + + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-131.5 +extmaxX=-118.5 +extminY=-10 +extmaxY=15 +extminZ=-45 +extmaxZ=43.5 + +slcminX=-131.5 +slcmaxX=-118.5 +slcminY=-10 +slcmaxY=15 +slcminZ=-45 +slcmaxZ=43.5 + + +[volume 3] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-113 +extmaxX=150 +extminY=-10 +extmaxY=15 +extminZ=-45 +extmaxZ=43.5 + +slcminX=-113 +slcmaxX=150 +slcminY=-10 +slcmaxY=15 +slcminZ=-45 +slcmaxZ=43.5 + + +[volume 4] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-118.5 +extmaxX=-113 +extminY=-10 +extmaxY=15 +extminZ=-38 +extmaxZ=43.5 + +slcminX=-118.5 +slcmaxX=-113 +slcminY=-10 +slcmaxY=15 +slcminZ=-38 +slcmaxZ=43.5 + + +[COLLISION] +name=ab05_cv.sld +count=5 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/AB09_CV.SLD b/CONTENT/BT3025/SOLIDS/AB09_CV.SLD new file mode 100644 index 0000000..7233fd1 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/AB09_CV.SLD @@ -0,0 +1,197 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-50 +extmaxX=-33 +extminY=0 +extmaxY=12.5 +extminZ=-27 +extmaxZ=23 + +slcminX=-50 +slcmaxX=-33 +slcminY=0 +slcmaxY=12.5 +slcminZ=-27 +slcmaxZ=23 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-7 +extmaxX=7 +extminY=0 +extmaxY=14 +extminZ=-27 +extmaxZ=23 + +slcminX=-7 +slcmaxX=7 +slcminY=0 +slcmaxY=14 +slcminZ=-27 +slcmaxZ=23 + + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=7 +extmaxX=33 +extminY=0 +extmaxY=12.5 +extminZ=-27 +extmaxZ=5.5 + +slcminX=7 +slcmaxX=33 +slcminY=0 +slcmaxY=12.5 +slcminZ=-27 +slcmaxZ=5.5 + + +[volume 3] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-33 +extmaxX=-7 +extminY=0 +extmaxY=12.5 +extminZ=-27 +extmaxZ=5.5 + +slcminX=-33 +slcmaxX=-7 +slcminY=0 +slcmaxY=12.5 +slcminZ=-27 +slcmaxZ=5.5 + + +[volume 4] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-50 +extmaxX=50 +extminY=12.5 +extmaxY=16 +extminZ=-27 +extmaxZ=23 + +slcminX=-50 +slcmaxX=50 +slcminY=12.5 +slcmaxY=16 +slcminZ=-27 +slcmaxZ=23 + + +[volume 5] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=37.5 +extmaxX=42.5 +extminY=0 +extmaxY=15.5 +extminZ=23 +extmaxZ=27.5 + +slcminX=37.5 +slcmaxX=42.5 +slcminY=0 +slcmaxY=15.5 +slcminZ=23 +slcmaxZ=27.5 + + +[volume 6] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2.5 +extmaxX=2.5 +extminY=0 +extmaxY=15.5 +extminZ=23 +extmaxZ=27.5 + +slcminX=-2.5 +slcmaxX=2.5 +slcminY=0 +slcmaxY=15.5 +slcminZ=23 +slcmaxZ=27.5 + + +[volume 7] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-42.5 +extmaxX=-37.5 +extminY=0 +extmaxY=15.5 +extminZ=23 +extmaxZ=27.5 + +slcminX=-42.5 +slcmaxX=-37.5 +slcminY=0 +slcmaxY=15.5 +slcminZ=23 +slcmaxZ=27.5 + + +[volume 8] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=33 +extmaxX=50 +extminY=0 +extmaxY=12.5 +extminZ=-27 +extmaxZ=23 + +slcminX=33 +slcmaxX=50 +slcminY=0 +slcmaxY=12.5 +slcminZ=-27 +slcmaxZ=23 + + +[COLLISION] +name=ab09_cv.sld +count=9 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/ADWLK1~1.SLD b/CONTENT/BT3025/SOLIDS/ADWLK1~1.SLD new file mode 100644 index 0000000..e512438 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/ADWLK1~1.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-9.39844 +extmaxX=-8.79688 +extminY=6.79688 +extmaxY=8.5 +extminZ=-10 +extmaxZ=0 + +slcminX=-9.39844 +slcmaxX=-8.79688 +slcminY=6.79688 +slcmaxY=8.5 +slcminZ=-10 +slcmaxZ=0 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-22.2031 +extmaxX=-9.39844 +extminY=6.79688 +extmaxY=8.5 +extminZ=-0.898438 +extmaxZ=0 + +slcminX=-22.2031 +slcmaxX=-9.39844 +slcminY=6.79688 +slcmaxY=8.5 +slcminZ=-0.898438 +slcmaxZ=0 + + +[COLLISION] +name=adwlk1_cv.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/ADWLK2~1.SLD b/CONTENT/BT3025/SOLIDS/ADWLK2~1.SLD new file mode 100644 index 0000000..4d7d6ba --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/ADWLK2~1.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=13.7969 +extmaxX=14.3984 +extminY=6.79688 +extmaxY=8.5 +extminZ=-10 +extmaxZ=0 + +slcminX=13.7969 +slcmaxX=14.3984 +slcminY=6.79688 +slcmaxY=8.5 +slcminZ=-10 +slcmaxZ=0 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=14.3984 +extmaxX=27.2031 +extminY=6.79688 +extmaxY=8.5 +extminZ=-0.898438 +extmaxZ=0 + +slcminX=14.3984 +slcmaxX=27.2031 +slcminY=6.79688 +slcmaxY=8.5 +slcminZ=-0.898438 +slcmaxZ=0 + + +[COLLISION] +name=adwlk2_cv.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/ADWLK3~1.SLD b/CONTENT/BT3025/SOLIDS/ADWLK3~1.SLD new file mode 100644 index 0000000..84e095a --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/ADWLK3~1.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-12.1016 +extmaxX=13.2031 +extminY=6.79688 +extmaxY=8.5 +extminZ=-0.898438 +extmaxZ=0 + +slcminX=-12.1016 +slcmaxX=13.2031 +slcminY=6.79688 +slcmaxY=8.5 +slcminZ=-0.898438 +slcmaxZ=0 + + +[COLLISION] +name=adwlk3_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/APC.SLD b/CONTENT/BT3025/SOLIDS/APC.SLD new file mode 100644 index 0000000..19676be --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/APC.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2.5 +extmaxX=2.5 +extminY=0 +extmaxY=3 +extminZ=-5.5 +extmaxZ=-0.5 + +slcminX=-2.5 +slcmaxX=2.5 +slcminY=0 +slcmaxY=3 +slcminZ=-5.5 +slcmaxZ=-0.5 + + +[volume 1] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2.5 +extmaxX=2.5 +extminY=0 +extmaxY=4 +extminZ=0 +extmaxZ=5 + +slcminX=-2.5 +slcmaxX=2.5 +slcminY=0 +slcmaxY=4 +slcminZ=0 +slcmaxZ=5 + + +[COLLISION] +name=apc.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/AR02_CV.SLD b/CONTENT/BT3025/SOLIDS/AR02_CV.SLD new file mode 100644 index 0000000..f0f490c --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/AR02_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-25 +extmaxX=25 +extminY=0 +extmaxY=25 +extminZ=-25 +extmaxZ=25 + +slcminX=-25 +slcmaxX=25 +slcminY=0 +slcmaxY=25 +slcminZ=-25 +slcmaxZ=25 + + +[COLLISION] +name=ar02_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/AR04_CV.SLD b/CONTENT/BT3025/SOLIDS/AR04_CV.SLD new file mode 100644 index 0000000..768b038 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/AR04_CV.SLD @@ -0,0 +1,197 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=10 +extmaxX=25 +extminY=0 +extmaxY=22 +extminZ=-25 +extmaxZ=25 + +slcminX=10 +slcmaxX=25 +slcminY=0 +slcmaxY=22 +slcminZ=-25 +slcmaxZ=25 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-25 +extmaxX=10 +extminY=0 +extmaxY=22 +extminZ=23 +extmaxZ=25 + +slcminX=-25 +slcmaxX=10 +slcminY=0 +slcmaxY=22 +slcminZ=23 +slcmaxZ=25 + + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-25 +extmaxX=-20 +extminY=0 +extmaxY=22 +extminZ=-25 +extmaxZ=23 + +slcminX=-25 +slcmaxX=-20 +slcminY=0 +slcmaxY=22 +slcminZ=-25 +slcmaxZ=23 + + +[volume 3] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-20 +extmaxX=-2 +extminY=0 +extmaxY=12 +extminZ=14 +extmaxZ=23 + +slcminX=-20 +slcmaxX=-2 +slcminY=0 +slcmaxY=12 +slcminZ=14 +slcmaxZ=23 + + +[volume 4] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-28 +extmaxX=-25 +extminY=0 +extmaxY=12 +extminZ=-20 +extmaxZ=-14 + +slcminX=-28 +slcmaxX=-25 +slcminY=0 +slcmaxY=12 +slcminZ=-20 +slcmaxZ=-14 + + +[volume 5] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-28 +extmaxX=-25 +extminY=0 +extmaxY=12 +extminZ=14 +extmaxZ=20 + +slcminX=-28 +slcmaxX=-25 +slcminY=0 +slcmaxY=12 +slcminZ=14 +slcmaxZ=20 + + +[volume 6] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=25 +extmaxX=28 +extminY=0 +extmaxY=12 +extminZ=-20 +extmaxZ=-14 + +slcminX=25 +slcmaxX=28 +slcminY=0 +slcmaxY=12 +slcminZ=-20 +slcmaxZ=-14 + + +[volume 7] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=25 +extmaxX=28 +extminY=0 +extmaxY=12 +extminZ=14 +extmaxZ=20 + +slcminX=25 +slcmaxX=28 +slcminY=0 +slcmaxY=12 +slcminZ=14 +slcmaxZ=20 + + +[volume 8] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-20 +extmaxX=10 +extminY=18.7031 +extmaxY=24.7031 +extminZ=-25 +extmaxZ=23 + +slcminX=-20 +slcmaxX=10 +slcminY=18.7031 +slcmaxY=24.7031 +slcminZ=-25 +slcmaxZ=23 + + +[COLLISION] +name=ar04_cv.sld +count=9 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/ARBAN_CV.SLD b/CONTENT/BT3025/SOLIDS/ARBAN_CV.SLD new file mode 100644 index 0000000..88617d8 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/ARBAN_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=0 +extmaxX=1.39844 +extminY=-3 +extmaxY=11 +extminZ=-3 +extmaxZ=3 + +slcminX=0 +slcmaxX=1.39844 +slcminY=-3 +slcmaxY=11 +slcminZ=-3 +slcmaxZ=3 + + +[COLLISION] +name=arban_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/ARENA1.XST b/CONTENT/BT3025/SOLIDS/ARENA1.XST new file mode 100644 index 0000000..1e9e378 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/ARENA1.XST @@ -0,0 +1,17 @@ +[LAB_ONLY] + +[extent 0] +extminX=-700 +extmaxX=700 +extminY=-5 +extmaxY=105 +extminZ=-700 +extmaxZ=700 + + +[COLLISION] +name=arena1.xst +count=0 +extentcount=1 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/ARENA2.XST b/CONTENT/BT3025/SOLIDS/ARENA2.XST new file mode 100644 index 0000000..433d215 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/ARENA2.XST @@ -0,0 +1,17 @@ +[LAB_ONLY] + +[extent 0] +extminX=-700 +extmaxX=700 +extminY=-5 +extmaxY=105 +extminZ=-700 +extmaxZ=700 + + +[COLLISION] +name=arena2.xst +count=0 +extentcount=1 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/ARENA3.XST b/CONTENT/BT3025/SOLIDS/ARENA3.XST new file mode 100644 index 0000000..01264ca --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/ARENA3.XST @@ -0,0 +1,17 @@ +[LAB_ONLY] + +[extent 0] +extminX=-700 +extmaxX=700 +extminY=-5 +extmaxY=105 +extminZ=-700 +extmaxZ=700 + + +[COLLISION] +name=arena3.xst +count=0 +extentcount=1 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/ARLID_CV.SLD b/CONTENT/BT3025/SOLIDS/ARLID_CV.SLD new file mode 100644 index 0000000..8d3e6b1 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/ARLID_CV.SLD @@ -0,0 +1,28 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-800 +extmaxX=800 +extminY=0 +extmaxY=10 +extminZ=-800 +extmaxZ=800 + +slcminX=-800 +slcmaxX=800 +slcminY=0 +slcmaxY=10 +slcminZ=-800 +slcmaxZ=800 + +[COLLISION] +name=arlid_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/ARMRMOVR.SLD b/CONTENT/BT3025/SOLIDS/ARMRMOVR.SLD new file mode 100644 index 0000000..5db5d98 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/ARMRMOVR.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2 +extmaxX=2 +extminY=0 +extmaxY=2 +extminZ=-2 +extmaxZ=2 + +slcminX=-2 +slcmaxX=2 +slcminY=0 +slcmaxY=2 +slcminZ=-2 +slcmaxZ=2 + + +[COLLISION] +name=armrmovr.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/ARTRUCKS.XST b/CONTENT/BT3025/SOLIDS/ARTRUCKS.XST new file mode 100644 index 0000000..1e9e378 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/ARTRUCKS.XST @@ -0,0 +1,17 @@ +[LAB_ONLY] + +[extent 0] +extminX=-700 +extmaxX=700 +extminY=-5 +extmaxY=105 +extminZ=-700 +extmaxZ=700 + + +[COLLISION] +name=arena1.xst +count=0 +extentcount=1 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/AVA_CV.SLD b/CONTENT/BT3025/SOLIDS/AVA_CV.SLD new file mode 100644 index 0000000..f17d4de --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/AVA_CV.SLD @@ -0,0 +1,30 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-3.85938 +extmaxX=3.88281 +extminY=2 +extmaxY=11.1094 +extminZ=-4.20312 +extmaxZ=3.53906 + +slcminX=-3.85938 +slcmaxX=3.88281 +slcminY=2 +slcmaxY=11.1094 +slcminZ=-4.20312 +slcmaxZ=3.53906 + + +[COLLISION] +name=ava_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + + \ No newline at end of file diff --git a/CONTENT/BT3025/SOLIDS/AW03_CV.SLD b/CONTENT/BT3025/SOLIDS/AW03_CV.SLD new file mode 100644 index 0000000..57a24f0 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/AW03_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-20 +extmaxX=0 +extminY=-10 +extmaxY=5 +extminZ=-100 +extmaxZ=100 + +slcminX=-20 +slcmaxX=0 +slcminY=-10 +slcmaxY=5 +slcminZ=-100 +slcmaxZ=100 + + +[COLLISION] +name=aw03_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/AW05_CV.SLD b/CONTENT/BT3025/SOLIDS/AW05_CV.SLD new file mode 100644 index 0000000..598ed79 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/AW05_CV.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-35 +extmaxX=15 +extminY=-5 +extmaxY=10 +extminZ=-15 +extmaxZ=-10 + +slcminX=-35 +slcmaxX=15 +slcminY=-5 +slcmaxY=10 +slcminZ=-15 +slcmaxZ=-10 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=10 +extmaxX=15 +extminY=-5 +extmaxY=10 +extminZ=-10 +extmaxZ=35 + +slcminX=10 +slcmaxX=15 +slcminY=-5 +slcmaxY=10 +slcminZ=-10 +slcmaxZ=35 + + +[COLLISION] +name=aw05_cv.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/AWBOX_CV.SLD b/CONTENT/BT3025/SOLIDS/AWBOX_CV.SLD new file mode 100644 index 0000000..d5ea18b --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/AWBOX_CV.SLD @@ -0,0 +1,71 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=14 +TypeName=WedgeFacingPositiveZAndNegativeXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-25.5 +extmaxX=20.5 +extminY=-5 +extmaxY=10 +extminZ=-10.5 +extmaxZ=-5.5 + +slcminX=-25.5 +slcmaxX=20.5 +slcminY=-5 +slcmaxY=10 +slcminZ=-10.5 +slcmaxZ=-5.5 + + +[volume 1] +TypeNumber=13 +TypeName=WedgeFacingNegativeZAndNegativeXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-25.5 +extmaxX=20.5 +extminY=-5 +extmaxY=10 +extminZ=5.5 +extmaxZ=10.5 + +slcminX=-25.5 +slcmaxX=20.5 +slcminY=-5 +slcmaxY=10 +slcminZ=5.5 +slcmaxZ=10.5 + + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-25.5 +extmaxX=20.5 +extminY=-5 +extmaxY=10 +extminZ=-5.5 +extmaxZ=5.5 + +slcminX=-25.5 +slcmaxX=20.5 +slcminY=-5 +slcmaxY=10 +slcminZ=-5.5 +slcmaxZ=5.5 + + +[COLLISION] +name=awbox_cv.sld +count=3 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/BAC1_CV.SLD b/CONTENT/BT3025/SOLIDS/BAC1_CV.SLD new file mode 100644 index 0000000..72c9aec --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/BAC1_CV.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=1 +extmaxX=9.5 +extminY=0 +extmaxY=3.89844 +extminZ=-15 +extmaxZ=15 + +slcminX=1 +slcmaxX=9.5 +slcminY=0 +slcmaxY=3.89844 +slcminZ=-15 +slcmaxZ=15 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-14 +extmaxX=1 +extminY=0 +extmaxY=2 +extminZ=-12.6016 +extmaxZ=-7.60156 + +slcminX=-14 +slcmaxX=1 +slcminY=0 +slcmaxY=2 +slcminZ=-12.6016 +slcmaxZ=-7.60156 + + +[COLLISION] +name=bac1_cv.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/BCOR1_CV.SLD b/CONTENT/BT3025/SOLIDS/BCOR1_CV.SLD new file mode 100644 index 0000000..8a7e083 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/BCOR1_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-4 +extmaxX=5 +extminY=-10 +extmaxY=20 +extminZ=-4.5 +extmaxZ=4.5 + +slcminX=-4 +slcmaxX=5 +slcminY=-10 +slcmaxY=20 +slcminZ=-4.5 +slcmaxZ=4.5 + + +[COLLISION] +name=bcor1_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/BCOR2_CV.SLD b/CONTENT/BT3025/SOLIDS/BCOR2_CV.SLD new file mode 100644 index 0000000..9681af8 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/BCOR2_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-4 +extmaxX=5 +extminY=-10 +extmaxY=10 +extminZ=-4.5 +extmaxZ=4.5 + +slcminX=-4 +slcmaxX=5 +slcminY=-10 +slcmaxY=10 +slcminZ=-4.5 +slcmaxZ=4.5 + + +[COLLISION] +name=bcor2_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/BDET4_CV.SLD b/CONTENT/BT3025/SOLIDS/BDET4_CV.SLD new file mode 100644 index 0000000..5e81b01 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/BDET4_CV.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-1.39844 +extmaxX=0 +extminY=3.5 +extmaxY=5.5 +extminZ=-2 +extmaxZ=1 + +slcminX=-1.39844 +slcmaxX=0 +slcminY=3.5 +slcmaxY=5.5 +slcminZ=-2 +slcmaxZ=1 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-0.398438 +extmaxX=0 +extminY=5.5 +extmaxY=9.5 +extminZ=-1 +extmaxZ=0 + +slcminX=-0.398438 +slcmaxX=0 +slcminY=5.5 +slcmaxY=9.5 +slcminZ=-1 +slcmaxZ=0 + + +[COLLISION] +name=bdet4_cv.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/BLANK.XST b/CONTENT/BT3025/SOLIDS/BLANK.XST new file mode 100644 index 0000000..3087826 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/BLANK.XST @@ -0,0 +1,17 @@ +[LAB_ONLY] + +[extent 0] +extminX=-7000 +extmaxX=7000 +extminY=-5 +extmaxY=105 +extminZ=-7000 +extmaxZ=7000 + + +[COLLISION] +name=nazca.xst +count=0 +extentcount=1 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/BLD03_CV.SLD b/CONTENT/BT3025/SOLIDS/BLD03_CV.SLD new file mode 100644 index 0000000..262437c --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/BLD03_CV.SLD @@ -0,0 +1,71 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-29 +extmaxX=17 +extminY=0 +extmaxY=7 +extminZ=-17 +extmaxZ=11 + +slcminX=-29 +slcmaxX=17 +slcminY=0 +slcmaxY=7 +slcminZ=-17 +slcmaxZ=11 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=1 +extmaxX=29 +extminY=0 +extmaxY=4 +extminZ=-23 +extmaxZ=23 + +slcminX=1 +slcmaxX=29 +slcminY=0 +slcmaxY=4 +slcminZ=-23 +slcmaxZ=23 + + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=10 +extmaxX=20 +extminY=4 +extmaxY=18 +extminZ=5 +extmaxZ=15 + +slcminX=10 +slcmaxX=20 +slcminY=4 +slcmaxY=18 +slcminZ=5 +slcmaxZ=15 + + +[COLLISION] +name=bld03_cv.sld +count=3 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/BLD04_CV.SLD b/CONTENT/BT3025/SOLIDS/BLD04_CV.SLD new file mode 100644 index 0000000..480fe0c --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/BLD04_CV.SLD @@ -0,0 +1,71 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-7 +extmaxX=6.5 +extminY=0 +extmaxY=14 +extminZ=9 +extmaxZ=20 + +slcminX=-7 +slcmaxX=6.5 +slcminY=0 +slcmaxY=14 +slcminZ=9 +slcmaxZ=20 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-12 +extmaxX=12 +extminY=0 +extmaxY=7 +extminZ=-17 +extmaxZ=3 + +slcminX=-12 +slcmaxX=12 +slcminY=0 +slcmaxY=7 +slcminZ=-17 +slcmaxZ=3 + + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-5.5 +extmaxX=4.5 +extminY=0 +extmaxY=5 +extminZ=3 +extmaxZ=9 + +slcminX=-5.5 +slcmaxX=4.5 +slcminY=0 +slcmaxY=5 +slcminZ=3 +slcmaxZ=9 + + +[COLLISION] +name=bld04_cv.sld +count=3 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/BLD06_CV.SLD b/CONTENT/BT3025/SOLIDS/BLD06_CV.SLD new file mode 100644 index 0000000..dc45eb3 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/BLD06_CV.SLD @@ -0,0 +1,155 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-20.0781 +extmaxX=-2.92188 +extminY=0 +extmaxY=10 +extminZ=-7.04688 +extmaxZ=11.0469 + +slcminX=-20.0781 +slcmaxX=-2.92188 +slcminY=0 +slcmaxY=10 +slcminZ=-7.04688 +slcmaxZ=11.0469 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=2.92188 +extmaxX=20.0781 +extminY=0 +extmaxY=10 +extminZ=-7.04688 +extmaxZ=11.0469 + +slcminX=2.92188 +slcmaxX=20.0781 +slcminY=0 +slcmaxY=10 +slcminZ=-7.04688 +slcmaxZ=11.0469 + + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-9.07812 +extmaxX=9.07812 +extminY=0 +extmaxY=12 +extminZ=-3.04688 +extmaxZ=15.0469 + +slcminX=-9.07812 +slcmaxX=9.07812 +slcminY=0 +slcmaxY=12 +slcminZ=-3.04688 +slcmaxZ=15.0469 + + +[volume 3] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=20 +extmaxX=22 +extminY=0 +extmaxY=10 +extminZ=-10 +extmaxZ=-3 + +slcminX=20 +slcmaxX=22 +slcminY=0 +slcmaxY=10 +slcminZ=-10 +slcmaxZ=-3 + + +[volume 4] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=2.54688 +extmaxX=4.54688 +extminY=0 +extmaxY=10 +extminZ=-10 +extmaxZ=-3 + +slcminX=2.54688 +slcmaxX=4.54688 +slcminY=0 +slcmaxY=10 +slcminZ=-10 +slcmaxZ=-3 + + +[volume 5] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-21.9219 +extmaxX=-19.9219 +extminY=0 +extmaxY=10 +extminZ=-10 +extmaxZ=-3 + +slcminX=-21.9219 +slcmaxX=-19.9219 +slcminY=0 +slcmaxY=10 +slcminZ=-10 +slcmaxZ=-3 + + +[volume 6] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-4.46094 +extmaxX=-2.46094 +extminY=0 +extmaxY=10 +extminZ=-10 +extmaxZ=-3 + +slcminX=-4.46094 +slcmaxX=-2.46094 +slcminY=0 +slcmaxY=10 +slcminZ=-10 +slcmaxZ=-3 + + +[COLLISION] +name=bld06_cv.sld +count=7 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/BLD20_CV.SLD b/CONTENT/BT3025/SOLIDS/BLD20_CV.SLD new file mode 100644 index 0000000..ab98290 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/BLD20_CV.SLD @@ -0,0 +1,92 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-17.0312 +extmaxX=15.9688 +extminY=0 +extmaxY=3 +extminZ=-11.9375 +extmaxZ=8.0625 + +slcminX=-17.0312 +slcmaxX=15.9688 +slcminY=0 +slcmaxY=3 +slcminZ=-11.9375 +slcmaxZ=8.0625 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-26.0312 +extmaxX=-9.03125 +extminY=0 +extmaxY=5 +extminZ=-3.9375 +extmaxZ=14.0625 + +slcminX=-26.0312 +slcmaxX=-9.03125 +slcminY=0 +slcmaxY=5 +slcminZ=-3.9375 +slcmaxZ=14.0625 + + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=7.96875 +extmaxX=25.9688 +extminY=0 +extmaxY=5 +extminZ=-13.9375 +extmaxZ=14.0625 + +slcminX=7.96875 +slcmaxX=25.9688 +slcminY=0 +slcmaxY=5 +slcminZ=-13.9375 +slcmaxZ=14.0625 + + +[volume 3] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-9.03125 +extmaxX=2.96875 +extminY=3 +extmaxY=6 +extminZ=-2.9375 +extmaxZ=5.0625 + +slcminX=-9.03125 +slcmaxX=2.96875 +slcminY=3 +slcmaxY=6 +slcminZ=-2.9375 +slcmaxZ=5.0625 + + +[COLLISION] +name=bld20_cv.sld +count=4 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/BLD24_CV.SLD b/CONTENT/BT3025/SOLIDS/BLD24_CV.SLD new file mode 100644 index 0000000..b9ba289 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/BLD24_CV.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2.24219 +extmaxX=9.25781 +extminY=0.046875 +extmaxY=5.04688 +extminZ=-21.3906 +extmaxZ=0.109375 + +slcminX=-2.24219 +slcmaxX=9.25781 +slcminY=0.046875 +slcmaxY=5.04688 +slcminZ=-21.3906 +slcmaxZ=0.109375 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-8.74219 +extmaxX=9.25781 +extminY=0.046875 +extmaxY=8.04688 +extminZ=0.109375 +extmaxZ=22.1094 + +slcminX=-8.74219 +slcmaxX=9.25781 +slcminY=0.046875 +slcmaxY=8.04688 +slcminZ=0.109375 +slcmaxZ=22.1094 + + +[COLLISION] +name=bld24_cv.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/BLD26_CV.SLD b/CONTENT/BT3025/SOLIDS/BLD26_CV.SLD new file mode 100644 index 0000000..e556a1d --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/BLD26_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-6 +extmaxX=6 +extminY=0 +extmaxY=5 +extminZ=-9 +extmaxZ=9 + +slcminX=-6 +slcmaxX=6 +slcminY=0 +slcmaxY=5 +slcminZ=-9 +slcmaxZ=9 + + +[COLLISION] +name=bld26_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/BLD27_CV.SLD b/CONTENT/BT3025/SOLIDS/BLD27_CV.SLD new file mode 100644 index 0000000..fdab809 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/BLD27_CV.SLD @@ -0,0 +1,155 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-58 +extmaxX=-40 +extminY=0 +extmaxY=25 +extminZ=-28 +extmaxZ=-8 + +slcminX=-58 +slcmaxX=-40 +slcminY=0 +slcmaxY=25 +slcminZ=-28 +slcmaxZ=-8 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-83 +extmaxX=-63 +extminY=15 +extmaxY=19 +extminZ=-19 +extmaxZ=-6 + +slcminX=-83 +slcmaxX=-63 +slcminY=15 +slcmaxY=19 +slcminZ=-19 +slcmaxZ=-6 + + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-63 +extmaxX=-52 +extminY=0 +extmaxY=19 +extminZ=-19 +extmaxZ=-6 + +slcminX=-63 +slcmaxX=-52 +slcminY=0 +slcmaxY=19 +slcminZ=-19 +slcmaxZ=-6 + + +[volume 3] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-87 +extmaxX=-83 +extminY=0 +extmaxY=19 +extminZ=-19 +extmaxZ=-6 + +slcminX=-87 +slcmaxX=-83 +slcminY=0 +slcmaxY=19 +slcminZ=-19 +slcmaxZ=-6 + + +[volume 4] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-87 +extmaxX=-52 +extminY=0 +extmaxY=19 +extminZ=-6 +extmaxZ=8.5 + +slcminX=-87 +slcmaxX=-52 +slcminY=0 +slcmaxY=19 +slcminZ=-6 +slcmaxZ=8.5 + + +[volume 5] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-82 +extmaxX=-58 +extminY=0 +extmaxY=16 +extminZ=8.5 +extmaxZ=14.5 + +slcminX=-82 +slcmaxX=-58 +slcminY=0 +slcmaxY=16 +slcminZ=8.5 +slcmaxZ=14.5 + + +[volume 6] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-87 +extmaxX=-52 +extminY=0 +extmaxY=19 +extminZ=14.5 +extmaxZ=40 + +slcminX=-87 +slcmaxX=-52 +slcminY=0 +slcmaxY=19 +slcminZ=14.5 +slcmaxZ=40 + + +[COLLISION] +name=bld27_cv.sld +count=7 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/BLH_CV.SLD b/CONTENT/BT3025/SOLIDS/BLH_CV.SLD new file mode 100644 index 0000000..f834ac8 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/BLH_CV.SLD @@ -0,0 +1,30 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-3.79688 +extmaxX=3.79688 +extminY=2 +extmaxY=7.10156 +extminZ=-4.10156 +extmaxZ=3.5 + +slcminX=-3.79688 +slcmaxX=3.79688 +slcminY=1 +slcmaxY=7.10156 +slcminZ=-4.10156 +slcmaxZ=3.5 + + +[COLLISION] +name=blh_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + + \ No newline at end of file diff --git a/CONTENT/BT3025/SOLIDS/BNK_CV.SLD b/CONTENT/BT3025/SOLIDS/BNK_CV.SLD new file mode 100644 index 0000000..983e240 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/BNK_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-3.77344 +extmaxX=3.77344 +extminY=0 +extmaxY=2.39844 +extminZ=-3.75781 +extmaxZ=3.75781 + +slcminX=-3.77344 +slcmaxX=3.77344 +slcminY=0 +slcmaxY=2.39844 +slcminZ=-3.75781 +slcmaxZ=3.75781 + + +[COLLISION] +name=bnk_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/BPIP1_CV.SLD b/CONTENT/BT3025/SOLIDS/BPIP1_CV.SLD new file mode 100644 index 0000000..868589a --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/BPIP1_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=0 +extmaxX=2 +extminY=-11 +extmaxY=10 +extminZ=-2.5 +extmaxZ=3.5 + +slcminX=0 +slcmaxX=2 +slcminY=-11 +slcmaxY=10 +slcminZ=-2.5 +slcmaxZ=3.5 + + +[COLLISION] +name=bpip1_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/BULLDOG.SLD b/CONTENT/BT3025/SOLIDS/BULLDOG.SLD new file mode 100644 index 0000000..8f1c617 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/BULLDOG.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-4 +extmaxX=4 +extminY=0 +extmaxY=3 +extminZ=-3 +extmaxZ=5 + +slcminX=-4 +slcmaxX=4 +slcminY=0 +slcmaxY=3 +slcminZ=-3 +slcmaxZ=5 + + +[COLLISION] +name=bulldog.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/BUTTEA_C.SLD b/CONTENT/BT3025/SOLIDS/BUTTEA_C.SLD new file mode 100644 index 0000000..3dab171 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/BUTTEA_C.SLD @@ -0,0 +1,92 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-63.703 +extmaxX=63.703 +extminY=0 +extmaxY=24.2266 +extminZ=-63.703 +extmaxZ=63.703 + +slcminX=-63.703 +slcmaxX=63.703 +slcminY=0 +slcmaxY=24.2266 +slcminZ=-63.703 +slcmaxZ=63.703 + + +[volume 1] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-39 +extmaxX=39 +extminY=8 +extmaxY=18 +extminZ=-39 +extmaxZ=39 + +slcminX=-39 +slcmaxX=39 +slcminY=8 +slcmaxY=18 +slcminZ=-39 +slcmaxZ=39 + + +[volume 2] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-31 +extmaxX=31 +extminY=18 +extmaxY=26 +extminZ=-31 +extmaxZ=31 + +slcminX=-31 +slcmaxX=31 +slcminY=18 +slcmaxY=26 +slcminZ=-31 +slcmaxZ=31 + + +[volume 3] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-27 +extmaxX=27 +extminY=26 +extmaxY=42 +extminZ=-27 +extmaxZ=27 + +slcminX=-27 +slcmaxX=27 +slcminY=26 +slcmaxY=42 +slcminZ=-27 +slcmaxZ=27 + + +[COLLISION] +name=buttea_cv.sld +count=4 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/BUTTEB_C.SLD b/CONTENT/BT3025/SOLIDS/BUTTEB_C.SLD new file mode 100644 index 0000000..4822506 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/BUTTEB_C.SLD @@ -0,0 +1,113 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-58.5 +extmaxX=58.5 +extminY=0 +extmaxY=12 +extminZ=-58.5 +extmaxZ=58.5 + +slcminX=-58.5 +slcmaxX=58.5 +slcminY=0 +slcmaxY=12 +slcminZ=-58.5 +slcmaxZ=58.5 + + +[volume 1] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-29.25 +extmaxX=29.25 +extminY=8 +extmaxY=18 +extminZ=-29.25 +extmaxZ=29.25 + +slcminX=-29.25 +slcmaxX=29.25 +slcminY=8 +slcmaxY=18 +slcminZ=-29.25 +slcmaxZ=29.25 + + +[volume 2] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-23.25 +extmaxX=23.25 +extminY=18 +extmaxY=26 +extminZ=-23.25 +extmaxZ=23.25 + +slcminX=-23.25 +slcmaxX=23.25 +slcminY=18 +slcmaxY=26 +slcminZ=-23.25 +slcmaxZ=23.25 + + +[volume 3] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-20.25 +extmaxX=20.25 +extminY=26 +extmaxY=42 +extminZ=-20.25 +extmaxZ=20.25 + +slcminX=-20.25 +slcmaxX=20.25 +slcminY=26 +slcmaxY=42 +slcminZ=-20.25 +slcmaxZ=20.25 + + +[volume 4] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-36 +extmaxX=36 +extminY=4 +extmaxY=8 +extminZ=-36 +extmaxZ=36 + +slcminX=-36 +slcmaxX=36 +slcminY=4 +slcmaxY=8 +slcminZ=-36 +slcmaxZ=36 + + +[COLLISION] +name=butteb_cv.sld +count=5 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/BUTTEC_C.SLD b/CONTENT/BT3025/SOLIDS/BUTTEC_C.SLD new file mode 100644 index 0000000..da6d79e --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/BUTTEC_C.SLD @@ -0,0 +1,113 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-76.047 +extmaxX=76.047 +extminY=5 +extmaxY=29 +extminZ=-76.047 +extmaxZ=76.047 + +slcminX=-76.047 +slcmaxX=76.047 +slcminY=5 +slcmaxY=29 +slcminZ=-76.047 +slcmaxZ=76.047 + + +[volume 1] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-117 +extmaxX=117 +extminY=0 +extmaxY=16 +extminZ=-117 +extmaxZ=117 + +slcminX=-117 +slcmaxX=117 +slcminY=0 +slcmaxY=16 +slcminZ=-117 +slcmaxZ=117 + + +[volume 2] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-58.5 +extmaxX=58.5 +extminY=8 +extmaxY=18 +extminZ=-58.5 +extmaxZ=58.5 + +slcminX=-58.5 +slcmaxX=58.5 +slcminY=8 +slcmaxY=18 +slcminZ=-58.5 +slcmaxZ=58.5 + + +[volume 3] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-46.5 +extmaxX=46.5 +extminY=18 +extmaxY=26 +extminZ=-46.5 +extmaxZ=46.5 + +slcminX=-46.5 +slcmaxX=46.5 +slcminY=18 +slcmaxY=26 +slcminZ=-46.5 +slcmaxZ=46.5 + + +[volume 4] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-40.5 +extmaxX=40.5 +extminY=26 +extmaxY=42 +extminZ=-40.5 +extmaxZ=40.5 + +slcminX=-40.5 +slcmaxX=40.5 +slcminY=26 +slcmaxY=42 +slcminZ=-40.5 +slcmaxZ=40.5 + + +[COLLISION] +name=buttec_cv.sld +count=5 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/BUTTED_C.SLD b/CONTENT/BT3025/SOLIDS/BUTTED_C.SLD new file mode 100644 index 0000000..fa9f41e --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/BUTTED_C.SLD @@ -0,0 +1,92 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-126.359 +extmaxX=126.359 +extminY=0 +extmaxY=24 +extminZ=-126.359 +extmaxZ=126.359 + +slcminX=-126.359 +slcmaxX=126.359 +slcminY=0 +slcmaxY=24 +slcminZ=-126.359 +slcmaxZ=126.359 + + +[volume 1] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-78 +extmaxX=78 +extminY=8 +extmaxY=18 +extminZ=-78 +extmaxZ=78 + +slcminX=-78 +slcmaxX=78 +slcminY=8 +slcmaxY=18 +slcminZ=-78 +slcmaxZ=78 + + +[volume 2] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-62 +extmaxX=62 +extminY=18 +extmaxY=26 +extminZ=-62 +extmaxZ=62 + +slcminX=-62 +slcmaxX=62 +slcminY=18 +slcmaxY=26 +slcminZ=-62 +slcmaxZ=62 + + +[volume 3] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-54 +extmaxX=54 +extminY=26 +extmaxY=42 +extminZ=-54 +extmaxZ=54 + +slcminX=-54 +slcmaxX=54 +slcminY=26 +slcmaxY=42 +slcminZ=-54 +slcmaxZ=54 + + +[COLLISION] +name=butted_cv.sld +count=4 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/BUTTEE_C.SLD b/CONTENT/BT3025/SOLIDS/BUTTEE_C.SLD new file mode 100644 index 0000000..0b1e7a5 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/BUTTEE_C.SLD @@ -0,0 +1,113 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-29.25 +extmaxX=29.25 +extminY=0 +extmaxY=12 +extminZ=-29.25 +extmaxZ=29.25 + +slcminX=-29.25 +slcmaxX=29.25 +slcminY=0 +slcmaxY=12 +slcminZ=-29.25 +slcmaxZ=29.25 + + +[volume 1] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-14.625 +extmaxX=14.625 +extminY=8 +extmaxY=18 +extminZ=-14.625 +extmaxZ=14.625 + +slcminX=-14.625 +slcmaxX=14.625 +slcminY=8 +slcmaxY=18 +slcminZ=-14.625 +slcmaxZ=14.625 + + +[volume 2] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-11.625 +extmaxX=11.625 +extminY=18 +extmaxY=26 +extminZ=-11.625 +extmaxZ=11.625 + +slcminX=-11.625 +slcmaxX=11.625 +slcminY=18 +slcmaxY=26 +slcminZ=-11.625 +slcmaxZ=11.625 + + +[volume 3] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-10.125 +extmaxX=10.125 +extminY=26 +extmaxY=42 +extminZ=-10.125 +extmaxZ=10.125 + +slcminX=-10.125 +slcmaxX=10.125 +slcminY=26 +slcmaxY=42 +slcminZ=-10.125 +slcmaxZ=10.125 + + +[volume 4] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-18 +extmaxX=18 +extminY=4 +extmaxY=8 +extminZ=-18 +extmaxZ=18 + +slcminX=-18 +slcmaxX=18 +slcminY=4 +slcmaxY=8 +slcminZ=-18 +slcmaxZ=18 + + +[COLLISION] +name=buttee_cv.sld +count=5 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/BWLK1_CV.SLD b/CONTENT/BT3025/SOLIDS/BWLK1_CV.SLD new file mode 100644 index 0000000..46f76f0 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/BWLK1_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-5 +extmaxX=2 +extminY=-0.796875 +extmaxY=1.10156 +extminZ=-2.5 +extmaxZ=3 + +slcminX=-5 +slcmaxX=2 +slcminY=-0.796875 +slcmaxY=1.10156 +slcminZ=-2.5 +slcmaxZ=3 + + +[COLLISION] +name=bwlk1_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/CALPB_CV.SLD b/CONTENT/BT3025/SOLIDS/CALPB_CV.SLD new file mode 100644 index 0000000..5a009db --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/CALPB_CV.SLD @@ -0,0 +1,113 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-10 +extmaxX=10 +extminY=0 +extmaxY=5 +extminZ=-10 +extmaxZ=10 + +slcminX=-10 +slcmaxX=10 +slcminY=0 +slcmaxY=5 +slcminZ=-10 +slcmaxZ=10 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-3 +extmaxX=3 +extminY=0 +extmaxY=3 +extminZ=-15 +extmaxZ=-10 + +slcminX=-3 +slcmaxX=3 +slcminY=0 +slcmaxY=3 +slcminZ=-15 +slcmaxZ=-10 + + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-3 +extmaxX=3 +extminY=0 +extmaxY=3 +extminZ=10 +extmaxZ=15 + +slcminX=-3 +slcmaxX=3 +slcminY=0 +slcmaxY=3 +slcminZ=10 +slcmaxZ=15 + + +[volume 3] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=10 +extmaxX=15 +extminY=0 +extmaxY=3 +extminZ=-3 +extmaxZ=3 + +slcminX=10 +slcmaxX=15 +slcminY=0 +slcmaxY=3 +slcminZ=-3 +slcmaxZ=3 + + +[volume 4] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-15 +extmaxX=-10 +extminY=0 +extmaxY=3 +extminZ=-3 +extmaxZ=3 + +slcminX=-15 +slcmaxX=-10 +slcminY=0 +slcmaxY=3 +slcminZ=-3 +slcmaxZ=3 + + +[COLLISION] +name=calpb_cv.sld +count=5 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/CALP_CV.SLD b/CONTENT/BT3025/SOLIDS/CALP_CV.SLD new file mode 100644 index 0000000..ce4e324 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/CALP_CV.SLD @@ -0,0 +1,155 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-4 +extmaxX=4 +extminY=5 +extmaxY=9.5 +extminZ=-3.75 +extmaxZ=4.25 + +slcminX=-4 +slcmaxX=4 +slcminY=5 +slcmaxY=9.5 +slcminZ=-3.75 +slcmaxZ=4.25 + + +[volume 1] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-7.5 +extmaxX=7.5 +extminY=9.5 +extmaxY=14 +extminZ=-7.25 +extmaxZ=7.75 + +slcminX=-7.5 +slcmaxX=7.5 +slcminY=9.5 +slcmaxY=14 +slcminZ=-7.25 +slcmaxZ=7.75 + + +[volume 2] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=3.75 +extmaxX=10.75 +extminY=14.25 +extmaxY=19.25 +extminZ=-9.75 +extmaxZ=-2.75 + +slcminX=3.75 +slcmaxX=10.75 +slcminY=14.25 +slcmaxY=19.25 +slcminZ=-9.75 +slcmaxZ=-2.75 + + +[volume 3] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=3.5 +extmaxX=10.5 +extminY=14 +extmaxY=18 +extminZ=1 +extmaxZ=8 + +slcminX=3.5 +slcmaxX=10.5 +slcminY=14 +slcmaxY=18 +slcminZ=1 +slcmaxZ=8 + + +[volume 4] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-10.75 +extmaxX=-3.75 +extminY=14.25 +extmaxY=19.25 +extminZ=-9.75 +extmaxZ=-2.75 + +slcminX=-10.75 +slcmaxX=-3.75 +slcminY=14.25 +slcmaxY=19.25 +slcminZ=-9.75 +slcmaxZ=-2.75 + + +[volume 5] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-11 +extmaxX=-4 +extminY=14 +extmaxY=18 +extminZ=1 +extmaxZ=8 + +slcminX=-11 +slcmaxX=-4 +slcminY=14 +slcmaxY=18 +slcminZ=1 +slcmaxZ=8 + + +[volume 6] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-3.5 +extmaxX=3.5 +extminY=14 +extmaxY=16.5 +extminZ=-3.5 +extmaxZ=3.5 + +slcminX=-3.5 +slcmaxX=3.5 +slcminY=14 +slcmaxY=16.5 +slcminZ=-3.5 +slcmaxZ=3.5 + + +[COLLISION] +name=calp_cv.sld +count=7 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/CAVERN.XST b/CONTENT/BT3025/SOLIDS/CAVERN.XST new file mode 100644 index 0000000..245535c --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/CAVERN.XST @@ -0,0 +1,16 @@ +[LAB_ONLY] + +[extent 0] +extminX=-7000 +extmaxX=7000 +extminY=-5 +extmaxY=105 +extminZ=-7000 +extmaxZ=7000 + +[COLLISION] +name=cavern.xst +count=0 +extentcount=1 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/CITY1.XST b/CONTENT/BT3025/SOLIDS/CITY1.XST new file mode 100644 index 0000000..daedef5 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/CITY1.XST @@ -0,0 +1,15 @@ +[LAB_ONLY] + +[extent 0] +extminX=-2355 +extmaxX=2765 +extminY=-100 +extmaxY=150 +extminZ=-5295 +extmaxZ=2525 + + +[COLLISION] +name=city1.xst +count=0 +extentcount=1 \ No newline at end of file diff --git a/CONTENT/BT3025/SOLIDS/COMTRUCK.SLD b/CONTENT/BT3025/SOLIDS/COMTRUCK.SLD new file mode 100644 index 0000000..62e1e18 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/COMTRUCK.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2 +extmaxX=2 +extminY=0 +extmaxY=3 +extminZ=-4.5 +extmaxZ=-0.5 + +slcminX=-2 +slcmaxX=2 +slcminY=0 +slcmaxY=3 +slcminZ=-4.5 +slcmaxZ=-0.5 + + +[volume 1] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2 +extmaxX=2 +extminY=0 +extmaxY=4 +extminZ=0 +extmaxZ=4 + +slcminX=-2 +slcmaxX=2 +slcminY=0 +slcmaxY=4 +slcminZ=0 +slcmaxZ=4 + + +[COLLISION] +name=comtruck.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/COOLANT.SLD b/CONTENT/BT3025/SOLIDS/COOLANT.SLD new file mode 100644 index 0000000..9252531 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/COOLANT.SLD @@ -0,0 +1,71 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2.5 +extmaxX=2.5 +extminY=0 +extmaxY=3 +extminZ=-7 +extmaxZ=-2 + +slcminX=-2.5 +slcmaxX=2.5 +slcminY=0 +slcmaxY=3 +slcminZ=-7 +slcmaxZ=-2 + + +[volume 1] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2.5 +extmaxX=2.5 +extminY=0 +extmaxY=3 +extminZ=-2 +extmaxZ=3 + +slcminX=-2.5 +slcmaxX=2.5 +slcminY=0 +slcmaxY=3 +slcminZ=-2 +slcmaxZ=3 + + +[volume 2] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2.5 +extmaxX=2.5 +extminY=0 +extmaxY=3 +extminZ=3 +extmaxZ=8 + +slcminX=-2.5 +slcmaxX=2.5 +slcminY=0 +slcmaxY=3 +slcminZ=3 +slcmaxZ=8 + + +[COLLISION] +name=coolant.sld +count=3 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/CRT_CV.SLD b/CONTENT/BT3025/SOLIDS/CRT_CV.SLD new file mode 100644 index 0000000..401a5f7 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/CRT_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-0.898438 +extmaxX=0.898438 +extminY=0 +extmaxY=5.20312 +extminZ=-2.36719 +extmaxZ=2.40625 + +slcminX=-0.898438 +slcmaxX=0.898438 +slcminY=0 +slcmaxY=5.20312 +slcminZ=-2.36719 +slcmaxZ=2.40625 + + +[COLLISION] +name=crt_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/DBASE.XST b/CONTENT/BT3025/SOLIDS/DBASE.XST new file mode 100644 index 0000000..97b8ef2 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/DBASE.XST @@ -0,0 +1,18 @@ +[LAB_ONLY] + +[extent 0] +extminX=-7000 +extmaxX=7000 +extminY=-5 +extmaxY=105 +extminZ=-7000 +extmaxZ=7000 + + +[COLLISION] +name=dbase.xst +count=0 +extentcount=1 +evilextentcount=0 + + \ No newline at end of file diff --git a/CONTENT/BT3025/SOLIDS/DES.XST b/CONTENT/BT3025/SOLIDS/DES.XST new file mode 100644 index 0000000..b15c1d3 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/DES.XST @@ -0,0 +1,17 @@ +[LAB_ONLY] + +[extent 0] +extminX=-7000 +extmaxX=7000 +extminY=-500 +extmaxY=1050 +extminZ=-7000 +extmaxZ=7000 + + +[COLLISION] +name=polar3.xst +count=0 +extentcount=1 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/DISH_CV.SLD b/CONTENT/BT3025/SOLIDS/DISH_CV.SLD new file mode 100644 index 0000000..1b45378 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/DISH_CV.SLD @@ -0,0 +1,92 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=4 +TypeName=RampFacingNegativeZType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-3.5 +extmaxX=3.5 +extminY=1.75 +extmaxY=8 +extminZ=-0.25 +extmaxZ=3.25 + +slcminX=-3.5 +slcmaxX=3.5 +slcminY=1.75 +slcmaxY=8 +slcminZ=-0.25 +slcmaxZ=3.25 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-3.5 +extmaxX=3.5 +extminY=1.75 +extmaxY=8 +extminZ=-0.5 +extmaxZ=-0.25 + +slcminX=-3.5 +slcmaxX=3.5 +slcminY=1.75 +slcmaxY=8 +slcminZ=-0.5 +slcmaxZ=-0.25 + + +[volume 2] +TypeNumber=6 +TypeName=RampFacingPositiveZType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-1.25 +extmaxX=1.25 +extminY=0 +extmaxY=4.75 +extminZ=-2 +extmaxZ=1 + +slcminX=-1.25 +slcmaxX=1.25 +slcminY=0 +slcmaxY=4.75 +slcminZ=-2 +slcmaxZ=1 + + +[volume 3] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2.25 +extmaxX=2.25 +extminY=0 +extmaxY=1.75 +extminZ=1 +extmaxZ=2 + +slcminX=-2.25 +slcmaxX=2.25 +slcminY=0 +slcmaxY=1.75 +slcminZ=1 +slcmaxZ=2 + + +[COLLISION] +name=dish_cv.sld +count=4 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/DOZER.SLD b/CONTENT/BT3025/SOLIDS/DOZER.SLD new file mode 100644 index 0000000..ded4cc9 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/DOZER.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2 +extmaxX=2 +extminY=0 +extmaxY=3 +extminZ=-3.5 +extmaxZ=0.5 + +slcminX=-2 +slcmaxX=2 +slcminY=0 +slcmaxY=3 +slcminZ=-3.5 +slcmaxZ=0.5 + + +[volume 1] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2 +extmaxX=2 +extminY=1.5 +extmaxY=4.5 +extminZ=0.5 +extmaxZ=4.5 + +slcminX=-2 +slcmaxX=2 +slcminY=1.5 +slcmaxY=4.5 +slcminZ=0.5 +slcmaxZ=4.5 + + +[COLLISION] +name=dozer.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/FIR_CV.SLD b/CONTENT/BT3025/SOLIDS/FIR_CV.SLD new file mode 100644 index 0000000..bb39f09 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/FIR_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2.64062 +extmaxX=2.64062 +extminY=1 +extmaxY=10.3516 +extminZ=-3.25 +extmaxZ=2.03125 + +slcminX=-2.64062 +slcmaxX=2.64062 +slcminY=1 +slcmaxY=10.3516 +slcminZ=-3.25 +slcmaxZ=2.03125 + + +[COLLISION] +name=fir_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/FL1_CV.SLD b/CONTENT/BT3025/SOLIDS/FL1_CV.SLD new file mode 100644 index 0000000..28ebf2a --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/FL1_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-100 +extmaxX=100 +extminY=-4 +extmaxY=0 +extminZ=-100 +extmaxZ=100 + +slcminX=-100 +slcmaxX=100 +slcminY=-4 +slcmaxY=0 +slcminZ=-100 +slcmaxZ=100 + + +[COLLISION] +name=fl1_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/FP2D_CV.SLD b/CONTENT/BT3025/SOLIDS/FP2D_CV.SLD new file mode 100644 index 0000000..aef8a52 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/FP2D_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-1.15625 +extmaxX=1.65625 +extminY=0 +extmaxY=3.96094 +extminZ=-10 +extmaxZ=-8 + +slcminX=-1.15625 +slcmaxX=1.65625 +slcminY=0 +slcmaxY=3.96094 +slcminZ=-10 +slcmaxZ=-8 + + +[COLLISION] +name=fp2_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/FP2_CV.SLD b/CONTENT/BT3025/SOLIDS/FP2_CV.SLD new file mode 100644 index 0000000..aef8a52 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/FP2_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-1.15625 +extmaxX=1.65625 +extminY=0 +extmaxY=3.96094 +extminZ=-10 +extmaxZ=-8 + +slcminX=-1.15625 +slcmaxX=1.65625 +slcminY=0 +slcmaxY=3.96094 +slcminZ=-10 +slcmaxZ=-8 + + +[COLLISION] +name=fp2_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/FP3_CV.SLD b/CONTENT/BT3025/SOLIDS/FP3_CV.SLD new file mode 100644 index 0000000..640d8ac --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/FP3_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-1.15625 +extmaxX=1.65625 +extminY=0 +extmaxY=2.78125 +extminZ=-8 +extmaxZ=10 + +slcminX=-1.15625 +slcmaxX=1.65625 +slcminY=0 +slcmaxY=2.78125 +slcminZ=-8 +slcmaxZ=10 + + +[COLLISION] +name=fp3_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/FRSTRM.XST b/CONTENT/BT3025/SOLIDS/FRSTRM.XST new file mode 100644 index 0000000..4a6e4f3 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/FRSTRM.XST @@ -0,0 +1,17 @@ +[LAB_ONLY] + +[extent 0] +extminX=-7000 +extmaxX=7000 +extminY=-5 +extmaxY=105 +extminZ=-7000 +extmaxZ=7000 + + +[COLLISION] +name=frstrm.xst +count=0 +extentcount=1 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/FT1_CV.SLD b/CONTENT/BT3025/SOLIDS/FT1_CV.SLD new file mode 100644 index 0000000..928e92a --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/FT1_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-1.8125 +extmaxX=1.77344 +extminY=0 +extmaxY=9.0625 +extminZ=-1.99219 +extmaxZ=1.59375 + +slcminX=-1.8125 +slcmaxX=1.77344 +slcminY=0 +slcmaxY=9.0625 +slcminZ=-1.99219 +slcmaxZ=1.59375 + + +[COLLISION] +name=ft1_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/FT2_CV.SLD b/CONTENT/BT3025/SOLIDS/FT2_CV.SLD new file mode 100644 index 0000000..1a0545b --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/FT2_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2.72656 +extmaxX=2.92969 +extminY=0 +extmaxY=10 +extminZ=-2.84375 +extmaxZ=2.82031 + +slcminX=-2.72656 +slcmaxX=2.92969 +slcminY=0 +slcmaxY=10 +slcminZ=-2.84375 +slcmaxZ=2.82031 + + +[COLLISION] +name=ft2_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/GD1_CV.SLD b/CONTENT/BT3025/SOLIDS/GD1_CV.SLD new file mode 100644 index 0000000..f3ac673 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/GD1_CV.SLD @@ -0,0 +1,71 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=0.5 +extmaxX=9.5 +extminY=6.25 +extmaxY=7.25 +extminZ=-0.5 +extmaxZ=0.5 + +slcminX=0.5 +slcmaxX=9.5 +slcminY=6.25 +slcmaxY=7.25 +slcminZ=-0.5 +slcmaxZ=0.5 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-0.5 +extmaxX=0.5 +extminY=6.25 +extmaxY=7.25 +extminZ=-10 +extmaxZ=-0.5 + +slcminX=-0.5 +slcmaxX=0.5 +slcminY=6.25 +slcmaxY=7.25 +slcminZ=-10 +slcmaxZ=-0.5 + + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-0.5 +extmaxX=0.5 +extminY=0 +extmaxY=10 +extminZ=-0.5 +extmaxZ=0.5 + +slcminX=-0.5 +slcmaxX=0.5 +slcminY=0 +slcmaxY=10 +slcminZ=-0.5 +slcmaxZ=0.5 + + +[COLLISION] +name=gd1_cv.sld +count=3 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/GD2_CV.SLD b/CONTENT/BT3025/SOLIDS/GD2_CV.SLD new file mode 100644 index 0000000..c2e7012 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/GD2_CV.SLD @@ -0,0 +1,92 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=7.5 +extmaxX=8.5 +extminY=0 +extmaxY=10.25 +extminZ=-7.75 +extmaxZ=-6.75 + +slcminX=7.5 +slcmaxX=8.5 +slcminY=0 +slcmaxY=10.25 +slcminZ=-7.75 +slcmaxZ=-6.75 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=7.5 +extmaxX=8.5 +extminY=0 +extmaxY=9 +extminZ=-0.75 +extmaxZ=0.25 + +slcminX=7.5 +slcmaxX=8.5 +slcminY=0 +slcmaxY=9 +slcminZ=-0.75 +slcmaxZ=0.25 + + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-0.5 +extmaxX=0.5 +extminY=0 +extmaxY=8 +extminZ=-0.75 +extmaxZ=0.25 + +slcminX=-0.5 +slcmaxX=0.5 +slcminY=0 +slcmaxY=8 +slcminZ=-0.75 +slcmaxZ=0.25 + + +[volume 3] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-0.5 +extmaxX=0.5 +extminY=0 +extmaxY=10 +extminZ=-7.75 +extmaxZ=-6.75 + +slcminX=-0.5 +slcmaxX=0.5 +slcminY=0 +slcmaxY=10 +slcminZ=-7.75 +slcmaxZ=-6.75 + + +[COLLISION] +name=gd2_cv.sld +count=4 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/GD3_CV.SLD b/CONTENT/BT3025/SOLIDS/GD3_CV.SLD new file mode 100644 index 0000000..3668a1b --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/GD3_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-1.10156 +extmaxX=1.89844 +extminY=0 +extmaxY=2.5 +extminZ=-1.60156 +extmaxZ=1.39844 + +slcminX=-1.10156 +slcmaxX=1.89844 +slcminY=0 +slcmaxY=2.5 +slcminZ=-1.60156 +slcmaxZ=1.39844 + + +[COLLISION] +name=gd3_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/GD4_CV.SLD b/CONTENT/BT3025/SOLIDS/GD4_CV.SLD new file mode 100644 index 0000000..c33cd5f --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/GD4_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-1.35156 +extmaxX=1.35156 +extminY=0 +extmaxY=2.39844 +extminZ=-1.39844 +extmaxZ=1.29688 + +slcminX=-1.35156 +slcmaxX=1.35156 +slcminY=0 +slcmaxY=2.39844 +slcminZ=-1.39844 +slcmaxZ=1.29688 + + +[COLLISION] +name=gd4_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/GD5_CV.SLD b/CONTENT/BT3025/SOLIDS/GD5_CV.SLD new file mode 100644 index 0000000..de580a9 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/GD5_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-0.5 +extmaxX=0.5 +extminY=0 +extmaxY=10 +extminZ=-0.5 +extmaxZ=0.5 + +slcminX=-0.5 +slcmaxX=0.5 +slcminY=0 +slcmaxY=10 +slcminZ=-0.5 +slcmaxZ=0.5 + + +[COLLISION] +name=gd5_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/GNR_CV.SLD b/CONTENT/BT3025/SOLIDS/GNR_CV.SLD new file mode 100644 index 0000000..5293e56 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/GNR_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-3.75781 +extmaxX=3.75781 +extminY=0 +extmaxY=3.07812 +extminZ=-3.75781 +extmaxZ=3.75781 + +slcminX=-3.75781 +slcmaxX=3.75781 +slcminY=0 +slcmaxY=3.07812 +slcminZ=-3.75781 +slcmaxZ=3.75781 + + +[COLLISION] +name=gnr_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/GR100ACV.SLD b/CONTENT/BT3025/SOLIDS/GR100ACV.SLD new file mode 100644 index 0000000..b28653a --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/GR100ACV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-10000 +extmaxX=10000 +extminY=0 +extmaxY=50 +extminZ=-10000 +extmaxZ=10000 + +slcminX=-10000 +slcmaxX=10000 +slcminY=0 +slcmaxY=50 +slcminZ=-10000 +slcmaxZ=10000 + + +[COLLISION] +name=gr100acv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/GR100COL.SLD b/CONTENT/BT3025/SOLIDS/GR100COL.SLD new file mode 100644 index 0000000..63f0984 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/GR100COL.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-10000 +extmaxX=10000 +extminY=-50 +extmaxY=0 +extminZ=-10000 +extmaxZ=10000 + +slcminX=-10000 +slcmaxX=10000 +slcminY=-50 +slcmaxY=0 +slcminZ=-10000 +slcmaxZ=10000 + + +[COLLISION] +name=gr100col.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/GR100_CV.SLD b/CONTENT/BT3025/SOLIDS/GR100_CV.SLD new file mode 100644 index 0000000..63f0984 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/GR100_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-10000 +extmaxX=10000 +extminY=-50 +extmaxY=0 +extminZ=-10000 +extmaxZ=10000 + +slcminX=-10000 +slcmaxX=10000 +slcminY=-50 +slcmaxY=0 +slcminZ=-10000 +slcmaxZ=10000 + + +[COLLISION] +name=gr100col.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/GRASS.XST b/CONTENT/BT3025/SOLIDS/GRASS.XST new file mode 100644 index 0000000..b15c1d3 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/GRASS.XST @@ -0,0 +1,17 @@ +[LAB_ONLY] + +[extent 0] +extminX=-7000 +extmaxX=7000 +extminY=-500 +extmaxY=1050 +extminZ=-7000 +extmaxZ=7000 + + +[COLLISION] +name=polar3.xst +count=0 +extentcount=1 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/HARASSER.SLD b/CONTENT/BT3025/SOLIDS/HARASSER.SLD new file mode 100644 index 0000000..e79ab31 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/HARASSER.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-3 +extmaxX=3 +extminY=0 +extmaxY=3 +extminZ=-4 +extmaxZ=2 + +slcminX=-3 +slcmaxX=3 +slcminY=0 +slcmaxY=3 +slcminZ=-4 +slcmaxZ=2 + + +[COLLISION] +name=harasser.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/HC1_CV.SLD b/CONTENT/BT3025/SOLIDS/HC1_CV.SLD new file mode 100644 index 0000000..9fb8583 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/HC1_CV.SLD @@ -0,0 +1,92 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2.40625 +extmaxX=2.59375 +extminY=0 +extmaxY=1.5625 +extminZ=-2.70312 +extmaxZ=2.29688 + +slcminX=-2.40625 +slcmaxX=2.59375 +slcminY=0 +slcmaxY=1.5625 +slcminZ=-2.70312 +slcmaxZ=2.29688 + + +[volume 1] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2.40625 +extmaxX=2.59375 +extminY=1.5625 +extmaxY=2.89844 +extminZ=-2.70312 +extmaxZ=2.29688 + +slcminX=-2.40625 +slcmaxX=2.59375 +slcminY=1.5625 +slcmaxY=2.89844 +slcminZ=-2.70312 +slcmaxZ=2.29688 + + +[volume 2] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-1.10938 +extmaxX=1.28906 +extminY=0 +extmaxY=1.5625 +extminZ=4.70312 +extmaxZ=7.10156 + +slcminX=-1.10938 +slcmaxX=1.28906 +slcminY=0 +slcmaxY=1.5625 +slcminZ=4.70312 +slcmaxZ=7.10156 + + +[volume 3] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-1.10938 +extmaxX=1.28906 +extminY=1.5625 +extmaxY=2.89844 +extminZ=2.29688 +extmaxZ=4.70312 + +slcminX=-1.10938 +slcmaxX=1.28906 +slcminY=1.5625 +slcmaxY=2.89844 +slcminZ=2.29688 +slcmaxZ=4.70312 + + +[COLLISION] +name=hc1_cv.sld +count=4 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/HC2_CV.SLD b/CONTENT/BT3025/SOLIDS/HC2_CV.SLD new file mode 100644 index 0000000..f491eb0 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/HC2_CV.SLD @@ -0,0 +1,71 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-1.32812 +extmaxX=1.32812 +extminY=0 +extmaxY=4.0625 +extminZ=-7.32812 +extmaxZ=-4.67188 + +slcminX=-1.32812 +slcmaxX=1.32812 +slcminY=0 +slcmaxY=4.0625 +slcminZ=-7.32812 +slcmaxZ=-4.67188 + + +[volume 1] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-6.10938 +extmaxX=6.10938 +extminY=3.3125 +extmaxY=4.0625 +extminZ=-4.67188 +extmaxZ=7.54688 + +slcminX=-6.10938 +slcmaxX=6.10938 +slcminY=3.3125 +slcmaxY=4.0625 +slcminZ=-4.67188 +slcmaxZ=7.54688 + + +[volume 2] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2.59375 +extmaxX=2.59375 +extminY=0 +extmaxY=4.0625 +extminZ=7.54688 +extmaxZ=12.7266 + +slcminX=-2.59375 +slcmaxX=2.59375 +slcminY=0 +slcmaxY=4.0625 +slcminZ=7.54688 +slcmaxZ=12.7266 + + +[COLLISION] +name=hc2_cv.sld +count=3 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/HILLA_CV.SLD b/CONTENT/BT3025/SOLIDS/HILLA_CV.SLD new file mode 100644 index 0000000..3032f5f --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/HILLA_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-45 +extmaxX=45 +extminY=0 +extmaxY=15 +extminZ=-45 +extmaxZ=45 + +slcminX=-45 +slcmaxX=45 +slcminY=0 +slcmaxY=15 +slcminZ=-45 +slcmaxZ=45 + + +[COLLISION] +name=hilla.col.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/HILLB_CV.SLD b/CONTENT/BT3025/SOLIDS/HILLB_CV.SLD new file mode 100644 index 0000000..0b4bd2f --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/HILLB_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-38.75 +extmaxX=36.25 +extminY=0 +extmaxY=18.75 +extminZ=-37.5 +extmaxZ=37.5 + +slcminX=-38.75 +slcmaxX=36.25 +slcminY=0 +slcmaxY=18.75 +slcminZ=-37.5 +slcmaxZ=37.5 + + +[COLLISION] +name=hillb.col.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/HILLC_CV.SLD b/CONTENT/BT3025/SOLIDS/HILLC_CV.SLD new file mode 100644 index 0000000..2a3b7c8 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/HILLC_CV.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-9.215 +extmaxX=90.153 +extminY=0 +extmaxY=20.0234 +extminZ=-50.329 +extmaxZ=49.039 + +slcminX=-9.215 +slcmaxX=90.153 +slcminY=0 +slcmaxY=20.0234 +slcminZ=-50.329 +slcmaxZ=49.039 + + +[volume 1] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-60 +extmaxX=60 +extminY=0 +extmaxY=15 +extminZ=-60 +extmaxZ=60 + +slcminX=-60 +slcmaxX=60 +slcminY=0 +slcmaxY=15 +slcminZ=-60 +slcmaxZ=60 + + +[COLLISION] +name=hillc.col.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/HILLG1CO.SLD b/CONTENT/BT3025/SOLIDS/HILLG1CO.SLD new file mode 100644 index 0000000..3541742 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/HILLG1CO.SLD @@ -0,0 +1,71 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-195.547 +extmaxX=54.453 +extminY=0 +extmaxY=20 +extminZ=-828.406 +extmaxZ=-578.406 + +slcminX=-195.547 +slcmaxX=54.453 +slcminY=0 +slcmaxY=20 +slcminZ=-828.406 +slcmaxZ=-578.406 + + +[volume 1] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=183.312 +extmaxX=783.312 +extminY=0 +extmaxY=40 +extminZ=-656.164 +extmaxZ=-56.164 + +slcminX=183.312 +slcmaxX=783.312 +slcminY=0 +slcmaxY=40 +slcminZ=-656.164 +slcmaxZ=-56.164 + + +[volume 2] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-685.703 +extmaxX=-235.703 +extminY=0 +extmaxY=40 +extminZ=332.109 +extmaxZ=782.109 + +slcminX=-685.703 +slcmaxX=-235.703 +slcminY=0 +slcmaxY=40 +slcminZ=332.109 +slcmaxZ=782.109 + + +[COLLISION] +name=hillg1col.sld +count=3 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/HILLG1_C.SLD b/CONTENT/BT3025/SOLIDS/HILLG1_C.SLD new file mode 100644 index 0000000..3541742 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/HILLG1_C.SLD @@ -0,0 +1,71 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-195.547 +extmaxX=54.453 +extminY=0 +extmaxY=20 +extminZ=-828.406 +extmaxZ=-578.406 + +slcminX=-195.547 +slcmaxX=54.453 +slcminY=0 +slcmaxY=20 +slcminZ=-828.406 +slcmaxZ=-578.406 + + +[volume 1] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=183.312 +extmaxX=783.312 +extminY=0 +extmaxY=40 +extminZ=-656.164 +extmaxZ=-56.164 + +slcminX=183.312 +slcmaxX=783.312 +slcminY=0 +slcmaxY=40 +slcminZ=-656.164 +slcmaxZ=-56.164 + + +[volume 2] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-685.703 +extmaxX=-235.703 +extminY=0 +extmaxY=40 +extminZ=332.109 +extmaxZ=782.109 + +slcminX=-685.703 +slcmaxX=-235.703 +slcminY=0 +slcmaxY=40 +slcminZ=332.109 +slcmaxZ=782.109 + + +[COLLISION] +name=hillg1col.sld +count=3 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/HILLG2CO.SLD b/CONTENT/BT3025/SOLIDS/HILLG2CO.SLD new file mode 100644 index 0000000..a7536e9 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/HILLG2CO.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-60.078 +extmaxX=439.922 +extminY=0 +extmaxY=60 +extminZ=383.07 +extmaxZ=883.07 + +slcminX=-60.078 +slcmaxX=439.922 +slcminY=0 +slcmaxY=60 +slcminZ=383.07 +slcmaxZ=883.07 + + +[volume 1] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=468.352 +extmaxX=868.352 +extminY=0 +extmaxY=36 +extminZ=149.656 +extmaxZ=549.656 + +slcminX=468.352 +slcmaxX=868.352 +slcminY=0 +slcmaxY=36 +slcminZ=149.656 +slcmaxZ=549.656 + + +[COLLISION] +name=hillg2col.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/HILLG2_C.SLD b/CONTENT/BT3025/SOLIDS/HILLG2_C.SLD new file mode 100644 index 0000000..a7536e9 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/HILLG2_C.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-60.078 +extmaxX=439.922 +extminY=0 +extmaxY=60 +extminZ=383.07 +extmaxZ=883.07 + +slcminX=-60.078 +slcmaxX=439.922 +slcminY=0 +slcmaxY=60 +slcminZ=383.07 +slcmaxZ=883.07 + + +[volume 1] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=468.352 +extmaxX=868.352 +extminY=0 +extmaxY=36 +extminZ=149.656 +extmaxZ=549.656 + +slcminX=468.352 +slcmaxX=868.352 +slcminY=0 +slcmaxY=36 +slcminZ=149.656 +slcmaxZ=549.656 + + +[COLLISION] +name=hillg2col.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/HILLG3CO.SLD b/CONTENT/BT3025/SOLIDS/HILLG3CO.SLD new file mode 100644 index 0000000..fde6b38 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/HILLG3CO.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=720.445 +extmaxX=970.445 +extminY=0 +extmaxY=20 +extminZ=-982.953 +extmaxZ=-732.953 + +slcminX=720.445 +slcmaxX=970.445 +slcminY=0 +slcmaxY=20 +slcminZ=-982.953 +slcmaxZ=-732.953 + + +[volume 1] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-935.359 +extmaxX=-395.359 +extminY=0 +extmaxY=36 +extminZ=-359.711 +extmaxZ=180.289 + +slcminX=-935.359 +slcmaxX=-395.359 +slcminY=0 +slcmaxY=36 +slcminZ=-359.711 +slcmaxZ=180.289 + + +[COLLISION] +name=hillg3col.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/HILLG3_C.SLD b/CONTENT/BT3025/SOLIDS/HILLG3_C.SLD new file mode 100644 index 0000000..fde6b38 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/HILLG3_C.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=720.445 +extmaxX=970.445 +extminY=0 +extmaxY=20 +extminZ=-982.953 +extmaxZ=-732.953 + +slcminX=720.445 +slcmaxX=970.445 +slcminY=0 +slcmaxY=20 +slcminZ=-982.953 +slcmaxZ=-732.953 + + +[volume 1] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-935.359 +extmaxX=-395.359 +extminY=0 +extmaxY=36 +extminZ=-359.711 +extmaxZ=180.289 + +slcminX=-935.359 +slcmaxX=-395.359 +slcminY=0 +slcmaxY=36 +slcminZ=-359.711 +slcmaxZ=180.289 + + +[COLLISION] +name=hillg3col.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/HL1_CV.SLD b/CONTENT/BT3025/SOLIDS/HL1_CV.SLD new file mode 100644 index 0000000..ae15ebf --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/HL1_CV.SLD @@ -0,0 +1,113 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-10.0469 +extmaxX=48.3438 +extminY=0 +extmaxY=6.17188 +extminZ=-16.7188 +extmaxZ=41.6719 + +slcminX=-10.0469 +slcmaxX=48.3438 +slcminY=0 +slcmaxY=6.17188 +slcminZ=-16.7188 +slcmaxZ=41.6719 + + +[volume 1] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-10.0625 +extmaxX=48.375 +extminY=6.17188 +extmaxY=24.9844 +extminZ=-16.75 +extmaxZ=41.6875 + +slcminX=-10.0625 +slcmaxX=48.375 +slcminY=6.17188 +slcmaxY=24.9844 +slcminZ=-16.75 +slcmaxZ=41.6875 + + +[volume 2] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-48.125 +extmaxX=27 +extminY=0 +extmaxY=21.6172 +extminZ=-45.6875 +extmaxZ=29.4375 + +slcminX=-48.125 +slcmaxX=27 +slcminY=0 +slcmaxY=21.6172 +slcminZ=-45.6875 +slcmaxZ=29.4375 + + +[volume 3] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-52.8125 +extmaxX=31.1875 +extminY=0 +extmaxY=8.39844 +extminZ=-48 +extmaxZ=36 + +slcminX=-52.8125 +slcmaxX=31.1875 +slcminY=0 +slcmaxY=8.39844 +slcminZ=-48 +slcmaxZ=36 + + +[volume 4] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-45.8125 +extmaxX=36.8125 +extminY=0 +extmaxY=24.9844 +extminZ=-35.625 +extmaxZ=47 + +slcminX=-45.8125 +slcmaxX=36.8125 +slcminY=0 +slcmaxY=24.9844 +slcminZ=-35.625 +slcmaxZ=47 + + +[COLLISION] +name=hl1_cv.sld +count=5 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/HN1_CV.SLD b/CONTENT/BT3025/SOLIDS/HN1_CV.SLD new file mode 100644 index 0000000..88cade8 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/HN1_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-6.57031 +extmaxX=10.1484 +extminY=0 +extmaxY=5.21875 +extminZ=-16.3281 +extmaxZ=-0.632812 + +slcminX=-6.57031 +slcmaxX=10.1484 +slcminY=0 +slcmaxY=5.21875 +slcminZ=-16.3281 +slcmaxZ=-0.632812 + + +[COLLISION] +name=hn1_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/HUMMER.SLD b/CONTENT/BT3025/SOLIDS/HUMMER.SLD new file mode 100644 index 0000000..5e37b3d --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/HUMMER.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-1.5 +extmaxX=1.5 +extminY=0 +extmaxY=2 +extminZ=-3 +extmaxZ=0 + +slcminX=-1.5 +slcmaxX=1.5 +slcminY=0 +slcmaxY=2 +slcminZ=-3 +slcmaxZ=0 + + +[volume 1] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-1.5 +extmaxX=1.5 +extminY=0 +extmaxY=2 +extminZ=0 +extmaxZ=3 + +slcminX=-1.5 +slcmaxX=1.5 +slcminY=0 +slcmaxY=2 +slcminZ=0 +slcmaxZ=3 + + +[COLLISION] +name=hummer.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/HUT_CV.SLD b/CONTENT/BT3025/SOLIDS/HUT_CV.SLD new file mode 100644 index 0000000..0c363d2 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/HUT_CV.SLD @@ -0,0 +1,71 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=7 +TypeName=RampFacingPositiveXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-9.17969 +extmaxX=-5 +extminY=0.0078125 +extmaxY=7.60938 +extminZ=-2.15625 +extmaxZ=16.6406 + +slcminX=-9.17969 +slcmaxX=-5 +slcminY=0.0078125 +slcmaxY=7.60938 +slcminZ=-2.15625 +slcmaxZ=16.6406 + + +[volume 1] +TypeNumber=5 +TypeName=RampFacingNegativeXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=5 +extmaxX=9.1875 +extminY=0.0078125 +extmaxY=7.60938 +extminZ=-2.15625 +extmaxZ=16.6406 + +slcminX=5 +slcmaxX=9.1875 +slcminY=0.0078125 +slcmaxY=7.60938 +slcminZ=-2.15625 +slcmaxZ=16.6406 + + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-5 +extmaxX=5 +extminY=0.0078125 +extmaxY=7.60938 +extminZ=-2.15625 +extmaxZ=16.6406 + +slcminX=-5 +slcmaxX=5 +slcminY=0.0078125 +slcmaxY=7.60938 +slcminZ=-2.15625 +slcmaxZ=16.6406 + + +[COLLISION] +name=hut_cv.sld +count=3 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/HWZ_CV.SLD b/CONTENT/BT3025/SOLIDS/HWZ_CV.SLD new file mode 100644 index 0000000..004840e --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/HWZ_CV.SLD @@ -0,0 +1,113 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-0.5 +extmaxX=0.5 +extminY=5.75 +extmaxY=6.25 +extminZ=-6.20312 +extmaxZ=-5.20312 + +slcminX=-0.5 +slcmaxX=0.5 +slcminY=5.75 +slcmaxY=6.25 +slcminZ=-6.20312 +slcmaxZ=-5.20312 + + +[volume 1] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-0.5 +extmaxX=0.5 +extminY=4.45312 +extmaxY=4.95312 +extminZ=-4.5 +extmaxZ=-3.5 + +slcminX=-0.5 +slcmaxX=0.5 +slcminY=4.45312 +slcmaxY=4.95312 +slcminZ=-4.5 +slcmaxZ=-3.5 + + +[volume 2] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-0.5 +extmaxX=0.5 +extminY=3.45312 +extmaxY=3.95312 +extminZ=-2.89844 +extmaxZ=-1.89844 + +slcminX=-0.5 +slcmaxX=0.5 +slcminY=3.45312 +slcmaxY=3.95312 +slcminZ=-2.89844 +slcmaxZ=-1.89844 + + +[volume 3] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-1.14062 +extmaxX=1.14062 +extminY=1.29688 +extmaxY=2.75781 +extminZ=-1.29688 +extmaxZ=0.976562 + +slcminX=-1.14062 +slcmaxX=1.14062 +slcminY=1.29688 +slcmaxY=2.75781 +slcminZ=-1.29688 +slcmaxZ=0.976562 + + +[volume 4] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-4 +extmaxX=4 +extminY=-0.101562 +extmaxY=1.29688 +extminZ=-1.79688 +extmaxZ=6.20312 + +slcminX=-4 +slcmaxX=4 +slcminY=-0.101562 +slcmaxY=1.29688 +slcminZ=-1.79688 +slcmaxZ=6.20312 + + +[COLLISION] +name=hwz_cv.sld +count=5 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/JAK_CV.SLD b/CONTENT/BT3025/SOLIDS/JAK_CV.SLD new file mode 100644 index 0000000..4ff3baa --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/JAK_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-3.89844 +extmaxX=3.89844 +extminY=2 +extmaxY=11.1562 +extminZ=-4.38281 +extmaxZ=3.42188 + +slcminX=-3.89844 +slcmaxX=3.89844 +slcminY=1 +slcmaxY=11.1562 +slcminZ=-4.38281 +slcmaxZ=3.42188 + + +[COLLISION] +name=thr_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/JAX1_CV.SLD b/CONTENT/BT3025/SOLIDS/JAX1_CV.SLD new file mode 100644 index 0000000..f7c16b0 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/JAX1_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-1.79688 +extmaxX=1.79688 +extminY=0 +extmaxY=3 +extminZ=-1.79688 +extmaxZ=1.79688 + +slcminX=-1.79688 +slcmaxX=1.79688 +slcminY=0 +slcmaxY=3 +slcminZ=-1.79688 +slcmaxZ=1.79688 + + +[COLLISION] +name=jax1_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/JAX2_CV.SLD b/CONTENT/BT3025/SOLIDS/JAX2_CV.SLD new file mode 100644 index 0000000..6dd4603 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/JAX2_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-1.79688 +extmaxX=1.79688 +extminY=0 +extmaxY=3 +extminZ=-1.79688 +extmaxZ=1.79688 + +slcminX=-1.79688 +slcmaxX=1.79688 +slcminY=0 +slcmaxY=3 +slcminZ=-1.79688 +slcmaxZ=1.79688 + + +[COLLISION] +name=jax2_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/LOK_CV.SLD b/CONTENT/BT3025/SOLIDS/LOK_CV.SLD new file mode 100644 index 0000000..7dfa9ed --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/LOK_CV.SLD @@ -0,0 +1,30 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-3.89844 +extmaxX=3.89844 +extminY=2 +extmaxY=11.1562 +extminZ=-4.34375 +extmaxZ=3.46094 + +slcminX=-3.89844 +slcmaxX=3.89844 +slcminY=1 +slcmaxY=11.1562 +slcminZ=-4.34375 +slcmaxZ=3.46094 + + +[COLLISION] +name=lok_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + + \ No newline at end of file diff --git a/CONTENT/BT3025/SOLIDS/LRMCARRY.SLD b/CONTENT/BT3025/SOLIDS/LRMCARRY.SLD new file mode 100644 index 0000000..ccef1d4 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/LRMCARRY.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-5 +extmaxX=5 +extminY=-0.5 +extmaxY=4.5 +extminZ=-4 +extmaxZ=6 + +slcminX=-5 +slcmaxX=5 +slcminY=-0.5 +slcmaxY=4.5 +slcminZ=-4 +slcmaxZ=6 + + +[COLLISION] +name=lrmcarry.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/MAD_CV.SLD b/CONTENT/BT3025/SOLIDS/MAD_CV.SLD new file mode 100644 index 0000000..d30019d --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/MAD_CV.SLD @@ -0,0 +1,30 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-3.85938 +extmaxX=3.88281 +extminY=2 +extmaxY=9.90625 +extminZ=-4.10156 +extmaxZ=3.64062 + +slcminX=-3.85938 +slcmaxX=3.88281 +slcminY=1 +slcmaxY=9.90625 +slcminZ=-4.10156 +slcmaxZ=3.64062 + + +[COLLISION] +name=mad_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + + \ No newline at end of file diff --git a/CONTENT/BT3025/SOLIDS/MECHMOVR.SLD b/CONTENT/BT3025/SOLIDS/MECHMOVR.SLD new file mode 100644 index 0000000..b04410d --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/MECHMOVR.SLD @@ -0,0 +1,71 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2.5 +extmaxX=2.5 +extminY=0 +extmaxY=4 +extminZ=-7.5 +extmaxZ=-2.5 + +slcminX=-2.5 +slcmaxX=2.5 +slcminY=0 +slcmaxY=4 +slcminZ=-7.5 +slcmaxZ=-2.5 + + +[volume 1] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2.5 +extmaxX=2.5 +extminY=0 +extmaxY=3 +extminZ=-2.5 +extmaxZ=2.5 + +slcminX=-2.5 +slcmaxX=2.5 +slcminY=0 +slcmaxY=3 +slcminZ=-2.5 +slcmaxZ=2.5 + + +[volume 2] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2.5 +extmaxX=2.5 +extminY=0 +extmaxY=3 +extminZ=2.5 +extmaxZ=7.5 + +slcminX=-2.5 +slcmaxX=2.5 +slcminY=0 +slcmaxY=3 +slcminZ=2.5 +slcmaxZ=7.5 + + +[COLLISION] +name=mechmovr.sld +count=3 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/MSLBS_CV.SLD b/CONTENT/BT3025/SOLIDS/MSLBS_CV.SLD new file mode 100644 index 0000000..2d45fb7 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/MSLBS_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-375 +extmaxX=375 +extminY=-10 +extmaxY=0 +extminZ=-875 +extmaxZ=125 + +slcminX=-375 +slcmaxX=375 +slcminY=-10 +slcmaxY=0 +slcminZ=-875 +slcmaxZ=125 + + +[COLLISION] +name=mslbs_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/MSLG_CV.SLD b/CONTENT/BT3025/SOLIDS/MSLG_CV.SLD new file mode 100644 index 0000000..910c35b --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/MSLG_CV.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-0.59375 +extmaxX=0.59375 +extminY=1 +extmaxY=9.02344 +extminZ=1.49219 +extmaxZ=2.67188 + +slcminX=-0.59375 +slcmaxX=0.59375 +slcminY=1 +slcmaxY=9.02344 +slcminZ=1.49219 +slcmaxZ=2.67188 + + +[volume 1] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2.22656 +extmaxX=2.22656 +extminY=0 +extmaxY=1 +extminZ=-1.78906 +extmaxZ=2.67188 + +slcminX=-2.22656 +slcmaxX=2.22656 +slcminY=0 +slcmaxY=1 +slcminZ=-1.78906 +slcmaxZ=2.67188 + + +[COLLISION] +name=mslg_cv.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/MSLH_CV.SLD b/CONTENT/BT3025/SOLIDS/MSLH_CV.SLD new file mode 100644 index 0000000..df0fa71 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/MSLH_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-25.2578 +extmaxX=25.2578 +extminY=0 +extmaxY=17.0781 +extminZ=-25.2578 +extmaxZ=25.2578 + +slcminX=-25.2578 +slcmaxX=25.2578 +slcminY=0 +slcmaxY=17.0781 +slcminZ=-25.2578 +slcmaxZ=25.2578 + + +[COLLISION] +name=mslh_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/MSLRB_CV.SLD b/CONTENT/BT3025/SOLIDS/MSLRB_CV.SLD new file mode 100644 index 0000000..5685697 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/MSLRB_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-24.5 +extmaxX=24.5 +extminY=0 +extmaxY=5 +extminZ=-24.5 +extmaxZ=24.5 + +slcminX=-24.5 +slcmaxX=24.5 +slcminY=0 +slcmaxY=5 +slcminZ=-24.5 +slcmaxZ=24.5 + + +[COLLISION] +name=mslrb_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/MSLR_CV.SLD b/CONTENT/BT3025/SOLIDS/MSLR_CV.SLD new file mode 100644 index 0000000..8c1a2bf --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/MSLR_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-21.5 +extmaxX=21.5 +extminY=0 +extmaxY=15.8984 +extminZ=-21.5 +extmaxZ=21.5 + +slcminX=-21.5 +slcmaxX=21.5 +slcminY=0 +slcmaxY=15.8984 +slcminZ=-21.5 +slcmaxZ=21.5 + + +[COLLISION] +name=mslr_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/MSL_CV.SLD b/CONTENT/BT3025/SOLIDS/MSL_CV.SLD new file mode 100644 index 0000000..8eabef9 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/MSL_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-0.5 +extmaxX=0.5 +extminY=0 +extmaxY=10 +extminZ=-0.5 +extmaxZ=0.5 + +slcminX=-0.5 +slcmaxX=0.5 +slcminY=0 +slcmaxY=10 +slcminZ=-0.5 +slcmaxZ=0.5 + + +[COLLISION] +name=msl_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/OWN_CV.SLD b/CONTENT/BT3025/SOLIDS/OWN_CV.SLD new file mode 100644 index 0000000..2e6b4e1 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/OWN_CV.SLD @@ -0,0 +1,30 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-3.55469 +extmaxX=3.55469 +extminY=2 +extmaxY=9.03906 +extminZ=-4.04688 +extmaxZ=3.0625 + +slcminX=-3.55469 +slcmaxX=3.55469 +slcminY=1 +slcmaxY=9.03906 +slcminZ=-4.04688 +slcmaxZ=3.0625 + + +[COLLISION] +name=own_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + + \ No newline at end of file diff --git a/CONTENT/BT3025/SOLIDS/PDSH_CV.SLD b/CONTENT/BT3025/SOLIDS/PDSH_CV.SLD new file mode 100644 index 0000000..76fe788 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/PDSH_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-4.14844 +extmaxX=4.13281 +extminY=-0.0078125 +extmaxY=9.99219 +extminZ=-4.5625 +extmaxZ=3.71875 + +slcminX=-4.14844 +slcmaxX=4.13281 +slcminY=-0.0078125 +slcmaxY=9.99219 +slcminZ=-4.5625 +slcmaxZ=3.71875 + + +[COLLISION] +name=pdsh_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/PGN_CV.SLD b/CONTENT/BT3025/SOLIDS/PGN_CV.SLD new file mode 100644 index 0000000..944ed0c --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/PGN_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-4 +extmaxX=4 +extminY=0 +extmaxY=4 +extminZ=-4 +extmaxZ=4 + +slcminX=-4 +slcmaxX=4 +slcminY=0 +slcmaxY=4 +slcminZ=-4 +slcmaxZ=4 + + +[COLLISION] +name=pgn_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/PLIT_CV.SLD b/CONTENT/BT3025/SOLIDS/PLIT_CV.SLD new file mode 100644 index 0000000..2bd15c8 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/PLIT_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-1 +extmaxX=1 +extminY=0 +extmaxY=6.5 +extminZ=-1 +extmaxZ=1 + +slcminX=-1 +slcmaxX=1 +slcminY=0 +slcmaxY=6.5 +slcminZ=-1 +slcmaxZ=1 + + +[COLLISION] +name=plit_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/POLAR1.XST b/CONTENT/BT3025/SOLIDS/POLAR1.XST new file mode 100644 index 0000000..e28df18 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/POLAR1.XST @@ -0,0 +1,17 @@ +[LAB_ONLY] + +[extent 0] +extminX=-7000 +extmaxX=7000 +extminY=-500 +extmaxY=1050 +extminZ=-7000 +extmaxZ=7000 + + +[COLLISION] +name=polar.xst +count=0 +extentcount=1 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/POLAR2.XST b/CONTENT/BT3025/SOLIDS/POLAR2.XST new file mode 100644 index 0000000..1301d8b --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/POLAR2.XST @@ -0,0 +1,17 @@ +[LAB_ONLY] + +[extent 0] +extminX=-7000 +extmaxX=7000 +extminY=-500 +extmaxY=1050 +extminZ=-7000 +extmaxZ=7000 + + +[COLLISION] +name=polar2.xst +count=0 +extentcount=1 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/POLAR3.XST b/CONTENT/BT3025/SOLIDS/POLAR3.XST new file mode 100644 index 0000000..b15c1d3 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/POLAR3.XST @@ -0,0 +1,17 @@ +[LAB_ONLY] + +[extent 0] +extminX=-7000 +extmaxX=7000 +extminY=-500 +extmaxY=1050 +extminZ=-7000 +extmaxZ=7000 + + +[COLLISION] +name=polar3.xst +count=0 +extentcount=1 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/POLAR4.XST b/CONTENT/BT3025/SOLIDS/POLAR4.XST new file mode 100644 index 0000000..2a3893d --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/POLAR4.XST @@ -0,0 +1,17 @@ +[LAB_ONLY] + +[extent 0] +extminX=-7000 +extmaxX=7000 +extminY=-500 +extmaxY=1050 +extminZ=-7000 +extmaxZ=7000 + + +[COLLISION] +name=polar4.xst +count=0 +extentcount=1 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/RAP_CV.SLD b/CONTENT/BT3025/SOLIDS/RAP_CV.SLD new file mode 100644 index 0000000..932c1b9 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/RAP_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2.82812 +extmaxX=2.82812 +extminY=1 +extmaxY=7.33594 +extminZ=-2.5 +extmaxZ=3.15625 + +slcminX=-2.82812 +slcmaxX=2.82812 +slcminY=1 +slcmaxY=7.33594 +slcminZ=-2.5 +slcmaxZ=3.15625 + + +[COLLISION] +name=rap_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/RAV.XST b/CONTENT/BT3025/SOLIDS/RAV.XST new file mode 100644 index 0000000..4c6e639 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/RAV.XST @@ -0,0 +1,17 @@ +[LAB_ONLY] + +[extent 0] +extminX=-1000 +extmaxX=1000 +extminY=-5 +extmaxY=105 +extminZ=-1000 +extmaxZ=1000 + + +[COLLISION] +name=rav.xst +count=0 +extentcount=1 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/RAV1.XST b/CONTENT/BT3025/SOLIDS/RAV1.XST new file mode 100644 index 0000000..a37f026 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/RAV1.XST @@ -0,0 +1,17 @@ +[LAB_ONLY] + +[extent 0] +extminX=-1000 +extmaxX=1000 +extminY=-5 +extmaxY=105 +extminZ=-1000 +extmaxZ=1000 + + +[COLLISION] +name=rav1.xst +count=0 +extentcount=1 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/RFLOOR.SLD b/CONTENT/BT3025/SOLIDS/RFLOOR.SLD new file mode 100644 index 0000000..004c85b --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/RFLOOR.SLD @@ -0,0 +1,30 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2000 +extmaxX=2000 +extminY=-50 +extmaxY=0 +extminZ=-2000 +extmaxZ=2000 + +slcminX=-2000 +slcmaxX=2000 +slcminY=-50 +slcmaxY=0 +slcminZ=-2000 +slcmaxZ=2000 + + +[COLLISION] +name=rfloor.sld +count=1 +extentcount=0 +evilextentcount=0 + + \ No newline at end of file diff --git a/CONTENT/BT3025/SOLIDS/RFLOOR_C.SLD b/CONTENT/BT3025/SOLIDS/RFLOOR_C.SLD new file mode 100644 index 0000000..6119266 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/RFLOOR_C.SLD @@ -0,0 +1,30 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2000 +extmaxX=2000 +extminY=-50 +extmaxY=0 +extminZ=-2000 +extmaxZ=2000 + +slcminX=-2000 +slcmaxX=2000 +slcminY=-50 +slcmaxY=0 +slcminZ=-2000 +slcmaxZ=2000 + + +[COLLISION] +name=rfloor_c.sld +count=1 +extentcount=0 +evilextentcount=0 + + \ No newline at end of file diff --git a/CONTENT/BT3025/SOLIDS/RK5_CV.SLD b/CONTENT/BT3025/SOLIDS/RK5_CV.SLD new file mode 100644 index 0000000..c46eba7 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/RK5_CV.SLD @@ -0,0 +1,92 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-1.61719 +extmaxX=8.08594 +extminY=10.9219 +extmaxY=16.7031 +extminZ=-5.90625 +extmaxZ=3.79688 + +slcminX=-1.61719 +slcmaxX=8.08594 +slcminY=10.9219 +slcmaxY=16.7031 +slcminZ=-5.90625 +slcmaxZ=3.79688 + + +[volume 1] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2.41406 +extmaxX=8.88281 +extminY=8.47656 +extmaxY=10.9219 +extminZ=-5.90625 +extmaxZ=5.39844 + +slcminX=-2.41406 +slcmaxX=8.88281 +slcminY=8.47656 +slcmaxY=10.9219 +slcminZ=-5.90625 +slcmaxZ=5.39844 + + +[volume 2] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-3.77344 +extmaxX=9.49219 +extminY=0 +extmaxY=8.47656 +extminZ=-5.97656 +extmaxZ=7.28125 + +slcminX=-3.77344 +slcmaxX=9.49219 +slcminY=0 +slcmaxY=8.47656 +slcminZ=-5.97656 +slcmaxZ=7.28125 + + +[volume 3] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-10.375 +extmaxX=1.5 +extminY=0 +extmaxY=7.79688 +extminZ=-9.07812 +extmaxZ=2.80469 + +slcminX=-10.375 +slcmaxX=1.5 +slcminY=0 +slcmaxY=7.79688 +slcminZ=-9.07812 +slcmaxZ=2.80469 + + +[COLLISION] +name=rk5_cv.sld +count=4 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/RK6_CV.SLD b/CONTENT/BT3025/SOLIDS/RK6_CV.SLD new file mode 100644 index 0000000..645a0fd --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/RK6_CV.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=0.09375 +extmaxX=18.5469 +extminY=4.65625 +extmaxY=6.96094 +extminZ=-4.23438 +extmaxZ=14.2109 + +slcminX=0.09375 +slcmaxX=18.5469 +slcminY=4.65625 +slcmaxY=6.96094 +slcminZ=-4.23438 +slcmaxZ=14.2109 + + +[volume 1] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-22.0859 +extmaxX=19.8047 +extminY=0 +extmaxY=4.65625 +extminZ=-20.5625 +extmaxZ=21.3203 + +slcminX=-22.0859 +slcmaxX=19.8047 +slcminY=0 +slcmaxY=4.65625 +slcminZ=-20.5625 +slcmaxZ=21.3203 + + +[COLLISION] +name=rk6_cv.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/RK7_CV.SLD b/CONTENT/BT3025/SOLIDS/RK7_CV.SLD new file mode 100644 index 0000000..55bf404 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/RK7_CV.SLD @@ -0,0 +1,113 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=0.265625 +extmaxX=3.64062 +extminY=5.82031 +extmaxY=7.23438 +extminZ=-1.07812 +extmaxZ=2.30469 + +slcminX=0.265625 +slcmaxX=3.64062 +slcminY=5.82031 +slcmaxY=7.23438 +slcminZ=-1.07812 +slcmaxZ=2.30469 + + +[volume 1] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=3.55469 +extmaxX=7.91406 +extminY=5.82031 +extmaxY=8.40625 +extminZ=-0.796875 +extmaxZ=3.5625 + +slcminX=3.55469 +slcmaxX=7.91406 +slcminY=5.82031 +slcmaxY=8.40625 +slcminZ=-0.796875 +slcmaxZ=3.5625 + + +[volume 2] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=6.625 +extmaxX=11.0547 +extminY=5.82031 +extmaxY=8.40625 +extminZ=-3.88281 +extmaxZ=0.539062 + +slcminX=6.625 +slcmaxX=11.0547 +slcminY=5.82031 +slcmaxY=8.40625 +slcminZ=-3.88281 +slcmaxZ=0.539062 + + +[volume 3] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-13.1562 +extmaxX=11.7109 +extminY=-0.0078125 +extmaxY=3.92188 +extminZ=-13.3203 +extmaxZ=11.5469 + +slcminX=-13.1562 +slcmaxX=11.7109 +slcminY=-0.0078125 +slcmaxY=3.92188 +slcminZ=-13.3203 +slcmaxZ=11.5469 + + +[volume 4] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2.67969 +extmaxX=11.6797 +extminY=3.92188 +extmaxY=5.82031 +extminZ=-10.2344 +extmaxZ=4.125 + +slcminX=-2.67969 +slcmaxX=11.6797 +slcminY=3.92188 +slcmaxY=5.82031 +slcminZ=-10.2344 +slcmaxZ=4.125 + + +[COLLISION] +name=rk7_cv.sld +count=5 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/ROMMEL.SLD b/CONTENT/BT3025/SOLIDS/ROMMEL.SLD new file mode 100644 index 0000000..cdedd66 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/ROMMEL.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-3.5 +extmaxX=3.5 +extminY=0 +extmaxY=3 +extminZ=-3 +extmaxZ=4 + +slcminX=-3.5 +slcmaxX=3.5 +slcminY=0 +slcmaxY=3 +slcminZ=-3 +slcmaxZ=4 + + +[COLLISION] +name=rommel.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/SAW_CV.SLD b/CONTENT/BT3025/SOLIDS/SAW_CV.SLD new file mode 100644 index 0000000..14e6db9 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/SAW_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=13 +TypeName=WedgeFacingNegativeZAndNegativeXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-182 +extmaxX=180 +extminY=0 +extmaxY=20 +extminZ=-180 +extmaxZ=182 + +slcminX=-182 +slcmaxX=180 +slcminY=0 +slcmaxY=20 +slcminZ=-180 +slcmaxZ=182 + + +[COLLISION] +name=saw_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/SB1B_CV.SLD b/CONTENT/BT3025/SOLIDS/SB1B_CV.SLD new file mode 100644 index 0000000..4418380 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/SB1B_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=5 +TypeName=RampFacingNegativeXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=125 +extminY=-12.7031 +extmaxY=12.2969 +extminZ=-125 +extmaxZ=125 + +slcminX=-125 +slcmaxX=125 +slcminY=-12.7031 +slcmaxY=12.2969 +slcminZ=-125 +slcmaxZ=125 + + +[COLLISION] +name=sb1b_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/SB1C_CV.SLD b/CONTENT/BT3025/SOLIDS/SB1C_CV.SLD new file mode 100644 index 0000000..7aad8f3 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/SB1C_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=6 +TypeName=RampFacingPositiveZType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=125 +extminY=-12.7031 +extmaxY=12.2969 +extminZ=-125 +extmaxZ=125 + +slcminX=-125 +slcmaxX=125 +slcminY=-12.7031 +slcmaxY=12.2969 +slcminZ=-125 +slcmaxZ=125 + + +[COLLISION] +name=sb1c_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/SB1D_CV.SLD b/CONTENT/BT3025/SOLIDS/SB1D_CV.SLD new file mode 100644 index 0000000..d593d1a --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/SB1D_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=7 +TypeName=RampFacingPositiveXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=125 +extminY=-12.7031 +extmaxY=12.2969 +extminZ=-125 +extmaxZ=125 + +slcminX=-125 +slcmaxX=125 +slcminY=-12.7031 +slcmaxY=12.2969 +slcminZ=-125 +slcmaxZ=125 + + +[COLLISION] +name=sb1d_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/SB1E_CV.SLD b/CONTENT/BT3025/SOLIDS/SB1E_CV.SLD new file mode 100644 index 0000000..53247ea --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/SB1E_CV.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=7 +TypeName=RampFacingPositiveXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=0 +extminY=0 +extmaxY=25 +extminZ=-125 +extmaxZ=125 + +slcminX=-125 +slcmaxX=0 +slcminY=0 +slcmaxY=25 +slcminZ=-125 +slcmaxZ=125 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=0 +extmaxX=125 +extminY=0 +extmaxY=25 +extminZ=-125 +extmaxZ=125 + +slcminX=0 +slcmaxX=125 +slcminY=0 +slcmaxY=25 +slcminZ=-125 +slcmaxZ=125 + + +[COLLISION] +name=sb1e_cv.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/SB1N_CV.SLD b/CONTENT/BT3025/SOLIDS/SB1N_CV.SLD new file mode 100644 index 0000000..bc83f1c --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/SB1N_CV.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=4 +TypeName=RampFacingNegativeZType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=125 +extminY=0 +extmaxY=25 +extminZ=0 +extmaxZ=125 + +slcminX=-125 +slcmaxX=125 +slcminY=0 +slcmaxY=25 +slcminZ=0 +slcmaxZ=125 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=125 +extminY=0 +extmaxY=25 +extminZ=-125 +extmaxZ=0 + +slcminX=-125 +slcmaxX=125 +slcminY=0 +slcmaxY=25 +slcminZ=-125 +slcmaxZ=0 + + +[COLLISION] +name=sb1n_cv.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/SB1S_CV.SLD b/CONTENT/BT3025/SOLIDS/SB1S_CV.SLD new file mode 100644 index 0000000..52513e9 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/SB1S_CV.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=6 +TypeName=RampFacingPositiveZType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=125 +extminY=0 +extmaxY=25 +extminZ=-125 +extmaxZ=0 + +slcminX=-125 +slcmaxX=125 +slcminY=0 +slcmaxY=25 +slcminZ=-125 +slcmaxZ=0 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=125 +extminY=0 +extmaxY=25 +extminZ=0 +extmaxZ=125 + +slcminX=-125 +slcmaxX=125 +slcminY=0 +slcmaxY=25 +slcminZ=0 +slcmaxZ=125 + + +[COLLISION] +name=sb1s_cv.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/SB1W_CV.SLD b/CONTENT/BT3025/SOLIDS/SB1W_CV.SLD new file mode 100644 index 0000000..1cabde4 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/SB1W_CV.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=5 +TypeName=RampFacingNegativeXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=0 +extmaxX=125 +extminY=0 +extmaxY=25 +extminZ=-125 +extmaxZ=125 + +slcminX=0 +slcmaxX=125 +slcminY=0 +slcmaxY=25 +slcminZ=-125 +slcmaxZ=125 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=0 +extminY=0 +extmaxY=25 +extminZ=-125 +extmaxZ=125 + +slcminX=-125 +slcmaxX=0 +slcminY=0 +slcmaxY=25 +slcminZ=-125 +slcmaxZ=125 + + +[COLLISION] +name=sb1w_cv.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/SB1_CV.SLD b/CONTENT/BT3025/SOLIDS/SB1_CV.SLD new file mode 100644 index 0000000..7e4ccf5 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/SB1_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=4 +TypeName=RampFacingNegativeZType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=125 +extminY=-12.7031 +extmaxY=12.2969 +extminZ=-125 +extmaxZ=125 + +slcminX=-125 +slcmaxX=125 +slcminY=-12.7031 +slcmaxY=12.2969 +slcminZ=-125 +slcmaxZ=125 + + +[COLLISION] +name=sb1_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/SB2B_CV.SLD b/CONTENT/BT3025/SOLIDS/SB2B_CV.SLD new file mode 100644 index 0000000..866b3f0 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/SB2B_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=5 +TypeName=RampFacingNegativeXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=125 +extminY=-25.2031 +extmaxY=24.7969 +extminZ=-125 +extmaxZ=125 + +slcminX=-125 +slcmaxX=125 +slcminY=-25.2031 +slcmaxY=24.7969 +slcminZ=-125 +slcmaxZ=125 + + +[COLLISION] +name=sb2b_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/SB2C_CV.SLD b/CONTENT/BT3025/SOLIDS/SB2C_CV.SLD new file mode 100644 index 0000000..e0e5fe6 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/SB2C_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=6 +TypeName=RampFacingPositiveZType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=125 +extminY=-25.2031 +extmaxY=24.7969 +extminZ=-125 +extmaxZ=125 + +slcminX=-125 +slcmaxX=125 +slcminY=-25.2031 +slcmaxY=24.7969 +slcminZ=-125 +slcmaxZ=125 + + +[COLLISION] +name=sb2c_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/SB2D_CV.SLD b/CONTENT/BT3025/SOLIDS/SB2D_CV.SLD new file mode 100644 index 0000000..fbaecb3 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/SB2D_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=7 +TypeName=RampFacingPositiveXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=125 +extminY=-25.2031 +extmaxY=24.7969 +extminZ=-125 +extmaxZ=125 + +slcminX=-125 +slcmaxX=125 +slcminY=-25.2031 +slcmaxY=24.7969 +slcminZ=-125 +slcmaxZ=125 + + +[COLLISION] +name=sb2d_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/SB2E_CV.SLD b/CONTENT/BT3025/SOLIDS/SB2E_CV.SLD new file mode 100644 index 0000000..9b69b23 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/SB2E_CV.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=7 +TypeName=RampFacingPositiveXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=0 +extmaxX=125 +extminY=0 +extmaxY=25 +extminZ=-125 +extmaxZ=125 + +slcminX=0 +slcmaxX=125 +slcminY=0 +slcmaxY=25 +slcminZ=-125 +slcmaxZ=125 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=0 +extminY=-25 +extmaxY=0 +extminZ=-125 +extmaxZ=125 + +slcminX=-125 +slcmaxX=0 +slcminY=-25 +slcmaxY=0 +slcminZ=-125 +slcmaxZ=125 + + +[COLLISION] +name=sb2e_cv.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/SB2N_CV.SLD b/CONTENT/BT3025/SOLIDS/SB2N_CV.SLD new file mode 100644 index 0000000..ce02e7b --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/SB2N_CV.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=4 +TypeName=RampFacingNegativeZType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=125 +extminY=0 +extmaxY=25 +extminZ=-125 +extmaxZ=0 + +slcminX=-125 +slcmaxX=125 +slcminY=0 +slcmaxY=25 +slcminZ=-125 +slcmaxZ=0 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=125 +extminY=-25 +extmaxY=0 +extminZ=0 +extmaxZ=125 + +slcminX=-125 +slcmaxX=125 +slcminY=-25 +slcmaxY=0 +slcminZ=0 +slcmaxZ=125 + + +[COLLISION] +name=sb2n_cv.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/SB2S_CV.SLD b/CONTENT/BT3025/SOLIDS/SB2S_CV.SLD new file mode 100644 index 0000000..951a75d --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/SB2S_CV.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=6 +TypeName=RampFacingPositiveZType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=125 +extminY=0 +extmaxY=25 +extminZ=0 +extmaxZ=125 + +slcminX=-125 +slcmaxX=125 +slcminY=0 +slcmaxY=25 +slcminZ=0 +slcmaxZ=125 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=125 +extminY=-25 +extmaxY=0 +extminZ=-125 +extmaxZ=0 + +slcminX=-125 +slcmaxX=125 +slcminY=-25 +slcmaxY=0 +slcminZ=-125 +slcmaxZ=0 + + +[COLLISION] +name=sb2s_cv.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/SB2W_CV.SLD b/CONTENT/BT3025/SOLIDS/SB2W_CV.SLD new file mode 100644 index 0000000..dd85bfc --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/SB2W_CV.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=5 +TypeName=RampFacingNegativeXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=0 +extminY=0 +extmaxY=25 +extminZ=-125 +extmaxZ=125 + +slcminX=-125 +slcmaxX=0 +slcminY=0 +slcmaxY=25 +slcminZ=-125 +slcmaxZ=125 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=0 +extmaxX=125 +extminY=-25 +extmaxY=0 +extminZ=-125 +extmaxZ=125 + +slcminX=0 +slcmaxX=125 +slcminY=-25 +slcmaxY=0 +slcminZ=-125 +slcmaxZ=125 + + +[COLLISION] +name=sb2w_cv.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/SB2_CV.SLD b/CONTENT/BT3025/SOLIDS/SB2_CV.SLD new file mode 100644 index 0000000..5872fde --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/SB2_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=4 +TypeName=RampFacingNegativeZType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=125 +extminY=-25.2031 +extmaxY=24.7969 +extminZ=-125 +extmaxZ=125 + +slcminX=-125 +slcmaxX=125 +slcminY=-25.2031 +slcmaxY=24.7969 +slcminZ=-125 +slcmaxZ=125 + + +[COLLISION] +name=sb2_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/SB3E_CV.SLD b/CONTENT/BT3025/SOLIDS/SB3E_CV.SLD new file mode 100644 index 0000000..6a711bb --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/SB3E_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=7 +TypeName=RampFacingPositiveXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=125 +extminY=0 +extmaxY=25 +extminZ=-125 +extmaxZ=125 + +slcminX=-125 +slcmaxX=125 +slcminY=0 +slcmaxY=25 +slcminZ=-125 +slcmaxZ=125 + + +[COLLISION] +name=sb3e_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/SB3N_CV.SLD b/CONTENT/BT3025/SOLIDS/SB3N_CV.SLD new file mode 100644 index 0000000..fbc9d7f --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/SB3N_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=4 +TypeName=RampFacingNegativeZType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=125 +extminY=0 +extmaxY=25 +extminZ=-125 +extmaxZ=125 + +slcminX=-125 +slcmaxX=125 +slcminY=0 +slcmaxY=25 +slcminZ=-125 +slcmaxZ=125 + + +[COLLISION] +name=sb3n_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/SB3S_CV.SLD b/CONTENT/BT3025/SOLIDS/SB3S_CV.SLD new file mode 100644 index 0000000..b97bdd9 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/SB3S_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=6 +TypeName=RampFacingPositiveZType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=125 +extminY=0 +extmaxY=25 +extminZ=-125 +extmaxZ=125 + +slcminX=-125 +slcmaxX=125 +slcminY=0 +slcmaxY=25 +slcminZ=-125 +slcmaxZ=125 + + +[COLLISION] +name=sb3s_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/SB3W_CV.SLD b/CONTENT/BT3025/SOLIDS/SB3W_CV.SLD new file mode 100644 index 0000000..2f5b93f --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/SB3W_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=5 +TypeName=RampFacingNegativeXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=125 +extminY=0 +extmaxY=25 +extminZ=-125 +extmaxZ=125 + +slcminX=-125 +slcmaxX=125 +slcminY=0 +slcmaxY=25 +slcminZ=-125 +slcmaxZ=125 + + +[COLLISION] +name=sb3w_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/SB4E_CV.SLD b/CONTENT/BT3025/SOLIDS/SB4E_CV.SLD new file mode 100644 index 0000000..3f0b3de --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/SB4E_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=7 +TypeName=RampFacingPositiveXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=125 +extminY=0 +extmaxY=50 +extminZ=-125 +extmaxZ=125 + +slcminX=-125 +slcmaxX=125 +slcminY=0 +slcmaxY=50 +slcminZ=-125 +slcmaxZ=125 + + +[COLLISION] +name=sb4e_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/SB4N_CV.SLD b/CONTENT/BT3025/SOLIDS/SB4N_CV.SLD new file mode 100644 index 0000000..b213be1 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/SB4N_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=4 +TypeName=RampFacingNegativeZType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=125 +extminY=0 +extmaxY=50 +extminZ=-125 +extmaxZ=125 + +slcminX=-125 +slcmaxX=125 +slcminY=0 +slcmaxY=50 +slcminZ=-125 +slcmaxZ=125 + + +[COLLISION] +name=sb4n_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/SB4S_CV.SLD b/CONTENT/BT3025/SOLIDS/SB4S_CV.SLD new file mode 100644 index 0000000..ca724dd --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/SB4S_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=6 +TypeName=RampFacingPositiveZType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=125 +extminY=0 +extmaxY=50 +extminZ=-125 +extmaxZ=125 + +slcminX=-125 +slcmaxX=125 +slcminY=0 +slcmaxY=50 +slcminZ=-125 +slcmaxZ=125 + + +[COLLISION] +name=sb4s_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/SB4W_CV.SLD b/CONTENT/BT3025/SOLIDS/SB4W_CV.SLD new file mode 100644 index 0000000..01692d3 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/SB4W_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=5 +TypeName=RampFacingNegativeXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=125 +extminY=0 +extmaxY=50 +extminZ=-125 +extmaxZ=125 + +slcminX=-125 +slcmaxX=125 +slcminY=0 +slcmaxY=50 +slcminZ=-125 +slcmaxZ=125 + + +[COLLISION] +name=sb4w_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/SEMI.SLD b/CONTENT/BT3025/SOLIDS/SEMI.SLD new file mode 100644 index 0000000..a4d3a98 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/SEMI.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-1.5 +extmaxX=1.5 +extminY=0 +extmaxY=3 +extminZ=-3 +extmaxZ=0 + +slcminX=-1.5 +slcmaxX=1.5 +slcminY=0 +slcmaxY=3 +slcminZ=-3 +slcmaxZ=0 + + +[volume 1] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-1.5 +extmaxX=1.5 +extminY=0 +extmaxY=1 +extminZ=0 +extmaxZ=3 + +slcminX=-1.5 +slcmaxX=1.5 +slcminY=0 +slcmaxY=1 +slcminZ=0 +slcmaxZ=3 + + +[COLLISION] +name=semi.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/SEMIRIG.SLD b/CONTENT/BT3025/SOLIDS/SEMIRIG.SLD new file mode 100644 index 0000000..2a90184 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/SEMIRIG.SLD @@ -0,0 +1,71 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-1.5 +extmaxX=1.5 +extminY=1.5 +extmaxY=3.5 +extminZ=0.5 +extmaxZ=3.5 + +slcminX=-1.5 +slcmaxX=1.5 +slcminY=1.5 +slcmaxY=3.5 +slcminZ=0.5 +slcmaxZ=3.5 + + +[volume 1] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-1 +extmaxX=1 +extminY=1.5 +extmaxY=3.5 +extminZ=3.75 +extmaxZ=5.75 + +slcminX=-1 +slcmaxX=1 +slcminY=1.5 +slcmaxY=3.5 +slcminZ=3.75 +slcmaxZ=5.75 + + +[volume 2] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-1.5 +extmaxX=1.5 +extminY=1.5 +extmaxY=3.5 +extminZ=6 +extmaxZ=9 + +slcminX=-1.5 +slcmaxX=1.5 +slcminY=1.5 +slcmaxY=3.5 +slcminZ=6 +slcmaxZ=9 + + +[COLLISION] +name=semirig.sld +count=3 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/SL2_CV.SLD b/CONTENT/BT3025/SOLIDS/SL2_CV.SLD new file mode 100644 index 0000000..dce6261 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/SL2_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-0.25 +extmaxX=0.25 +extminY=0 +extmaxY=6 +extminZ=-0.25 +extmaxZ=0.25 + +slcminX=-0.25 +slcmaxX=0.25 +slcminY=0 +slcmaxY=6 +slcminZ=-0.25 +slcmaxZ=0.25 + + +[COLLISION] +name=sl2_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/SN1_CV.SLD b/CONTENT/BT3025/SOLIDS/SN1_CV.SLD new file mode 100644 index 0000000..42d13fd --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/SN1_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=125 +extminY=-25.2031 +extmaxY=-0.203125 +extminZ=-125 +extmaxZ=125 + +slcminX=-125 +slcmaxX=125 +slcminY=-25.2031 +slcmaxY=-0.203125 +slcminZ=-125 +slcmaxZ=125 + + +[COLLISION] +name=sn1_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/SND_CV.SLD b/CONTENT/BT3025/SOLIDS/SND_CV.SLD new file mode 100644 index 0000000..a9b6bbf --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/SND_CV.SLD @@ -0,0 +1,30 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-3.89844 +extmaxX=3.89844 +extminY=2 +extmaxY=12.1562 +extminZ=-4.38281 +extmaxZ=3.42188 + +slcminX=-3.89844 +slcmaxX=3.89844 +slcminY=1 +slcmaxY=12.1562 +slcminZ=-4.38281 +slcmaxZ=3.42188 + + +[COLLISION] +name=snd_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + + \ No newline at end of file diff --git a/CONTENT/BT3025/SOLIDS/SNH_CV.SLD b/CONTENT/BT3025/SOLIDS/SNH_CV.SLD new file mode 100644 index 0000000..f37502f --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/SNH_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2.38281 +extmaxX=2.38281 +extminY=0 +extmaxY=2.45312 +extminZ=-2.28906 +extmaxZ=2.46875 + +slcminX=-2.38281 +slcmaxX=2.38281 +slcminY=0 +slcmaxY=2.45312 +slcminZ=-2.28906 +slcmaxZ=2.46875 + + +[COLLISION] +name=snh_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/SR1E_CV.SLD b/CONTENT/BT3025/SOLIDS/SR1E_CV.SLD new file mode 100644 index 0000000..4b43087 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/SR1E_CV.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=7 +TypeName=RampFacingPositiveXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=0 +extminY=0 +extmaxY=12.5 +extminZ=-125 +extmaxZ=125 + +slcminX=-125 +slcmaxX=0 +slcminY=0 +slcmaxY=12.5 +slcminZ=-125 +slcmaxZ=125 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=0 +extmaxX=122 +extminY=12.5 +extmaxY=45.5 +extminZ=-125 +extmaxZ=125 + +slcminX=0 +slcmaxX=122 +slcminY=12.5 +slcmaxY=45.5 +slcminZ=-125 +slcmaxZ=125 + + +[COLLISION] +name=sr1e_cv.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/SR1N_CV.SLD b/CONTENT/BT3025/SOLIDS/SR1N_CV.SLD new file mode 100644 index 0000000..b37cffc --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/SR1N_CV.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=4 +TypeName=RampFacingNegativeZType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=125 +extminY=0 +extmaxY=12.5 +extminZ=0 +extmaxZ=125 + +slcminX=-125 +slcmaxX=125 +slcminY=0 +slcmaxY=12.5 +slcminZ=0 +slcmaxZ=125 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=125 +extminY=12.5 +extmaxY=45.5 +extminZ=-122 +extmaxZ=0 + +slcminX=-125 +slcmaxX=125 +slcminY=12.5 +slcmaxY=45.5 +slcminZ=-122 +slcmaxZ=0 + + +[COLLISION] +name=sr1n_cv.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/SR1S_CV.SLD b/CONTENT/BT3025/SOLIDS/SR1S_CV.SLD new file mode 100644 index 0000000..8f3e448 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/SR1S_CV.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=6 +TypeName=RampFacingPositiveZType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=125 +extminY=0 +extmaxY=12.5 +extminZ=-125 +extmaxZ=0 + +slcminX=-125 +slcmaxX=125 +slcminY=0 +slcmaxY=12.5 +slcminZ=-125 +slcmaxZ=0 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=125 +extminY=12.5 +extmaxY=45.5 +extminZ=0 +extmaxZ=122 + +slcminX=-125 +slcmaxX=125 +slcminY=12.5 +slcmaxY=45.5 +slcminZ=0 +slcmaxZ=122 + + +[COLLISION] +name=sr1s_cv.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/SR1W_CV.SLD b/CONTENT/BT3025/SOLIDS/SR1W_CV.SLD new file mode 100644 index 0000000..a0354a3 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/SR1W_CV.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=5 +TypeName=RampFacingNegativeXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=0 +extmaxX=125 +extminY=0 +extmaxY=12.5 +extminZ=-125 +extmaxZ=125 + +slcminX=0 +slcmaxX=125 +slcminY=0 +slcmaxY=12.5 +slcminZ=-125 +slcmaxZ=125 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-122 +extmaxX=0 +extminY=12.5 +extmaxY=45.5 +extminZ=-125 +extmaxZ=125 + +slcminX=-122 +slcmaxX=0 +slcminY=12.5 +slcmaxY=45.5 +slcminZ=-125 +slcmaxZ=125 + + +[COLLISION] +name=sr1w_cv.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/SRC1NE_C.SLD b/CONTENT/BT3025/SOLIDS/SRC1NE_C.SLD new file mode 100644 index 0000000..284b74e --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/SRC1NE_C.SLD @@ -0,0 +1,72 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=0 +extmaxX=250 +extminY=12.5234 +extmaxY=162.4766 +extminZ=-250 +extmaxZ=0 + +slcminX=0 +slcmaxX=250 +slcminY=12.5234 +slcmaxY=162.4766 +slcminZ=-250 +slcmaxZ=0 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=125 +extminY=-12.5 +extmaxY=0 +extminZ=-125 +extmaxZ=125 + +slcminX=-125 +slcmaxX=125 +slcminY=-12.5 +slcmaxY=0 +slcminZ=-125 +slcmaxZ=125 + + +[volume 2] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=375 +extminY=0 +extmaxY=25 +extminZ=-375 +extmaxZ=125 + +slcminX=-125 +slcmaxX=375 +slcminY=0 +slcmaxY=25 +slcminZ=-375 +slcmaxZ=125 + + +[COLLISION] +name=src1ne_c.sld +count=3 +extentcount=0 +evilextentcount=0 + + \ No newline at end of file diff --git a/CONTENT/BT3025/SOLIDS/SRC1NW_C.SLD b/CONTENT/BT3025/SOLIDS/SRC1NW_C.SLD new file mode 100644 index 0000000..76b7633 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/SRC1NW_C.SLD @@ -0,0 +1,72 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-250 +extmaxX=0 +extminY=12.5234 +extmaxY=162.4766 +extminZ=-250 +extmaxZ=0 + +slcminX=-250 +slcmaxX=0 +slcminY=12.5234 +slcmaxY=162.4766 +slcminZ=-250 +slcmaxZ=0 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=125 +extminY=-12.5 +extmaxY=0 +extminZ=-125 +extmaxZ=125 + +slcminX=-125 +slcmaxX=125 +slcminY=-12.5 +slcmaxY=0 +slcminZ=-125 +slcmaxZ=125 + + +[volume 2] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-375 +extmaxX=125 +extminY=0 +extmaxY=25 +extminZ=-375 +extmaxZ=125 + +slcminX=-375 +slcmaxX=125 +slcminY=0 +slcmaxY=25 +slcminZ=-375 +slcmaxZ=125 + + +[COLLISION] +name=src1nw_c.sld +count=3 +extentcount=0 +evilextentcount=0 + + \ No newline at end of file diff --git a/CONTENT/BT3025/SOLIDS/SRC1SE_C.SLD b/CONTENT/BT3025/SOLIDS/SRC1SE_C.SLD new file mode 100644 index 0000000..425f318 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/SRC1SE_C.SLD @@ -0,0 +1,72 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=0 +extmaxX=250 +extminY=12.5234 +extmaxY=162.4766 +extminZ=0 +extmaxZ=250 + +slcminX=0 +slcmaxX=250 +slcminY=12.5234 +slcmaxY=162.4766 +slcminZ=0 +slcmaxZ=250 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=125 +extminY=-12.5 +extmaxY=0 +extminZ=-125 +extmaxZ=125 + +slcminX=-125 +slcmaxX=125 +slcminY=-12.5 +slcmaxY=0 +slcminZ=-125 +slcmaxZ=125 + + +[volume 2] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=375 +extminY=0 +extmaxY=25.375 +extminZ=-125 +extmaxZ=375 + +slcminX=-125 +slcmaxX=375 +slcminY=0 +slcmaxY=25.375 +slcminZ=-125 +slcmaxZ=375 + + +[COLLISION] +name=src1se_c.sld +count=3 +extentcount=0 +evilextentcount=0 + + \ No newline at end of file diff --git a/CONTENT/BT3025/SOLIDS/SRC1SW_C.SLD b/CONTENT/BT3025/SOLIDS/SRC1SW_C.SLD new file mode 100644 index 0000000..970c8d1 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/SRC1SW_C.SLD @@ -0,0 +1,72 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-250 +extmaxX=0 +extminY=12.5234 +extmaxY=162.4766 +extminZ=0 +extmaxZ=250 + +slcminX=-250 +slcmaxX=0 +slcminY=12.5234 +slcmaxY=162.4766 +slcminZ=0 +slcmaxZ=250 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=125 +extminY=-12.5 +extmaxY=0 +extminZ=-125 +extmaxZ=125 + +slcminX=-125 +slcmaxX=125 +slcminY=-12.5 +slcmaxY=0 +slcminZ=-125 +slcmaxZ=125 + + +[volume 2] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-375 +extmaxX=125 +extminY=0 +extmaxY=25 +extminZ=-125 +extmaxZ=375 + +slcminX=-375 +slcmaxX=125 +slcminY=0 +slcmaxY=25 +slcminZ=-125 +slcmaxZ=375 + + +[COLLISION] +name=src1sw_c.sld +count=3 +extentcount=0 +evilextentcount=0 + + \ No newline at end of file diff --git a/CONTENT/BT3025/SOLIDS/SRMCARRY.SLD b/CONTENT/BT3025/SOLIDS/SRMCARRY.SLD new file mode 100644 index 0000000..902165b --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/SRMCARRY.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2.5 +extmaxX=2.5 +extminY=0 +extmaxY=3 +extminZ=-4.5 +extmaxZ=0.5 + +slcminX=-2.5 +slcmaxX=2.5 +slcminY=0 +slcmaxY=3 +slcminZ=-4.5 +slcmaxZ=0.5 + + +[volume 1] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2.5 +extmaxX=2.5 +extminY=0 +extmaxY=6 +extminZ=0.5 +extmaxZ=5.5 + +slcminX=-2.5 +slcmaxX=2.5 +slcminY=0 +slcmaxY=6 +slcminZ=0.5 +slcmaxZ=5.5 + + +[COLLISION] +name=srmcarry.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/ST1_CV.SLD b/CONTENT/BT3025/SOLIDS/ST1_CV.SLD new file mode 100644 index 0000000..1ca6915 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/ST1_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=125 +extminY=-25 +extmaxY=0 +extminZ=-125 +extmaxZ=125 + +slcminX=-125 +slcmaxX=125 +slcminY=-25 +slcmaxY=0 +slcminZ=-125 +slcmaxZ=125 + + +[COLLISION] +name=st1_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/STATE.RST b/CONTENT/BT3025/SOLIDS/STATE.RST new file mode 100644 index 0000000..d888a5b --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/STATE.RST @@ -0,0 +1,12 @@ +[edit-] +screen=80 50 +toggles=1 1 0 1 0 0 +srch= +src= +rpl= +file=p:\super\solids\rfloor_c.sld 1 1 14 25 +[brief] +file=p:\super\solids\rfloor_c.sld 1 1 14 25 1 47 78 1 c=0 +[shared-] +pmark=p:\super\solids\rfloor_c.sld 14 25 + \ No newline at end of file diff --git a/CONTENT/BT3025/SOLIDS/STB_CV.SLD b/CONTENT/BT3025/SOLIDS/STB_CV.SLD new file mode 100644 index 0000000..efdb1a7 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/STB_CV.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=20 +extmaxX=26 +extminY=12 +extmaxY=27 +extminZ=-16 +extmaxZ=4 + +slcminX=20 +slcmaxX=26 +slcminY=12 +slcmaxY=27 +slcminZ=-16 +slcmaxZ=4 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-20 +extmaxX=20 +extminY=0 +extmaxY=27 +extminZ=-20 +extmaxZ=20 + +slcminX=-20 +slcmaxX=20 +slcminY=0 +slcmaxY=27 +slcminZ=-20 +slcmaxZ=20 + + +[COLLISION] +name=stb_cv.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/STF_CV.SLD b/CONTENT/BT3025/SOLIDS/STF_CV.SLD new file mode 100644 index 0000000..3157212 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/STF_CV.SLD @@ -0,0 +1,113 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=50 +extmaxX=700 +extminY=-30 +extmaxY=0 +extminZ=-50 +extmaxZ=50 + +slcminX=50 +slcmaxX=700 +slcminY=-30 +slcmaxY=0 +slcminZ=-50 +slcmaxZ=50 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-700 +extmaxX=700 +extminY=-30 +extmaxY=0 +extminZ=-700 +extmaxZ=-50 + +slcminX=-700 +slcmaxX=700 +slcminY=-30 +slcmaxY=0 +slcminZ=-700 +slcmaxZ=-50 + + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-700 +extmaxX=700 +extminY=-30 +extmaxY=0 +extminZ=50 +extmaxZ=700 + +slcminX=-700 +slcmaxX=700 +slcminY=-30 +slcmaxY=0 +slcminZ=50 +slcmaxZ=700 + + +[volume 3] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-700 +extmaxX=-50 +extminY=-30 +extmaxY=0 +extminZ=-50 +extmaxZ=50 + +slcminX=-700 +slcmaxX=-50 +slcminY=-30 +slcmaxY=0 +slcminZ=-50 +slcmaxZ=50 + + +[volume 4] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-50 +extmaxX=50 +extminY=-35 +extmaxY=-30 +extminZ=-50 +extmaxZ=50 + +slcminX=-50 +slcmaxX=50 +slcminY=-35 +slcmaxY=-30 +slcminZ=-50 +slcmaxZ=50 + + +[COLLISION] +name=stf_cv.sld +count=5 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/STI_CV.SLD b/CONTENT/BT3025/SOLIDS/STI_CV.SLD new file mode 100644 index 0000000..fbbc4ea --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/STI_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2.03906 +extmaxX=2.03906 +extminY=1 +extmaxY=6.40625 +extminZ=-2.71875 +extmaxZ=1.35938 + +slcminX=-2.03906 +slcmaxX=2.03906 +slcminY=1 +slcmaxY=6.40625 +slcminZ=-2.71875 +slcmaxZ=1.35938 + + +[COLLISION] +name=sti_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/STRIKER.SLD b/CONTENT/BT3025/SOLIDS/STRIKER.SLD new file mode 100644 index 0000000..0b4004b --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/STRIKER.SLD @@ -0,0 +1,71 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2 +extmaxX=2 +extminY=0 +extmaxY=3 +extminZ=-8.5 +extmaxZ=-4.5 + +slcminX=-2 +slcmaxX=2 +slcminY=0 +slcmaxY=3 +slcminZ=-8.5 +slcmaxZ=-4.5 + + +[volume 1] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2 +extmaxX=2 +extminY=0 +extmaxY=3 +extminZ=-4.5 +extmaxZ=-0.5 + +slcminX=-2 +slcmaxX=2 +slcminY=0 +slcmaxY=3 +slcminZ=-4.5 +slcmaxZ=-0.5 + + +[volume 2] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2 +extmaxX=2 +extminY=0 +extmaxY=3 +extminZ=-0.5 +extmaxZ=3.5 + +slcminX=-2 +slcmaxX=2 +slcminY=0 +slcmaxY=3 +slcminZ=-0.5 +slcmaxZ=3.5 + + +[COLLISION] +name=striker.sld +count=3 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/STS_CV.SLD b/CONTENT/BT3025/SOLIDS/STS_CV.SLD new file mode 100644 index 0000000..2c3909a --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/STS_CV.SLD @@ -0,0 +1,71 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=6 +extmaxX=81 +extminY=0 +extmaxY=20 +extminZ=36 +extmaxZ=41 + +slcminX=6 +slcmaxX=81 +slcminY=0 +slcmaxY=20 +slcminZ=36 +slcmaxZ=41 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-42 +extmaxX=-34 +extminY=0 +extmaxY=20 +extminZ=-82 +extmaxZ=-7 + +slcminX=-42 +slcmaxX=-34 +slcminY=0 +slcmaxY=20 +slcminZ=-82 +slcmaxZ=-7 + + +[volume 2] +TypeNumber=12 +TypeName=WedgeFacingNegativeZAndPositiveXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-42 +extmaxX=6 +extminY=0 +extmaxY=20 +extminZ=-7 +extmaxZ=41 + +slcminX=-42 +slcmaxX=6 +slcminY=0 +slcmaxY=20 +slcminZ=-7 +slcmaxZ=41 + + +[COLLISION] +name=sts_cv.sld +count=3 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/SV2B_CV.SLD b/CONTENT/BT3025/SOLIDS/SV2B_CV.SLD new file mode 100644 index 0000000..610ad51 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/SV2B_CV.SLD @@ -0,0 +1,113 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-157.75 +extmaxX=82.125 +extminY=-17.0781 +extmaxY=34.7969 +extminZ=-30.625 +extmaxZ=209.25 + +slcminX=-157.75 +slcmaxX=82.125 +slcminY=-17.0781 +slcmaxY=34.7969 +slcminZ=-30.625 +slcmaxZ=209.25 + + +[volume 1] +TypeNumber=5 +TypeName=RampFacingNegativeXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=125 +extminY=-25.2031 +extmaxY=24.7969 +extminZ=-125 +extmaxZ=125 + +slcminX=-125 +slcmaxX=125 +slcminY=-25.2031 +slcmaxY=24.7969 +slcminZ=-125 +slcmaxZ=125 + + +[volume 2] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-157.375 +extmaxX=77.375 +extminY=-17.0781 +extmaxY=48.1016 +extminZ=-220.75 +extmaxZ=14 + +slcminX=-157.375 +slcmaxX=77.375 +slcminY=-17.0781 +slcmaxY=48.1016 +slcminZ=-220.75 +slcmaxZ=14 + + +[volume 3] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-110 +extmaxX=64 +extminY=-17.0781 +extmaxY=-3.38281 +extminZ=-138.703 +extmaxZ=35.2969 + +slcminX=-110 +slcmaxX=64 +slcminY=-17.0781 +slcmaxY=-3.38281 +slcminZ=-138.703 +slcmaxZ=35.2969 + + +[volume 4] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-168 +extmaxX=76 +extminY=-17.0781 +extmaxY=48.3203 +extminZ=-81.625 +extmaxZ=162.375 + +slcminX=-168 +slcmaxX=76 +slcminY=-17.0781 +slcmaxY=48.3203 +slcminZ=-81.625 +slcmaxZ=162.375 + + +[COLLISION] +name=sv2b_cvnew3.sld +count=5 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/SV2C_CV.SLD b/CONTENT/BT3025/SOLIDS/SV2C_CV.SLD new file mode 100644 index 0000000..c157bac --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/SV2C_CV.SLD @@ -0,0 +1,92 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-207.312 +extmaxX=11.3125 +extminY=-25.2031 +extmaxY=50.7031 +extminZ=-125 +extmaxZ=93.625 + +slcminX=-207.312 +slcmaxX=11.3125 +slcminY=-25.2031 +slcmaxY=50.7031 +slcminZ=-125 +slcmaxZ=93.625 + + +[volume 1] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-25.3125 +extmaxX=212.312 +extminY=-25.2031 +extmaxY=45.7969 +extminZ=-124.625 +extmaxZ=113 + +slcminX=-25.3125 +slcmaxX=212.312 +slcminY=-25.2031 +slcmaxY=45.7969 +slcminZ=-124.625 +slcmaxZ=113 + + +[volume 2] +TypeNumber=6 +TypeName=RampFacingPositiveZType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=125 +extminY=-25.2031 +extmaxY=24.7969 +extminZ=-125 +extmaxZ=125 + +slcminX=-125 +slcmaxX=125 +slcminY=-25.2031 +slcmaxY=24.7969 +slcminZ=-125 +slcmaxZ=125 + + +[volume 3] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-157.938 +extmaxX=122.562 +extminY=-25.2031 +extmaxY=58.4766 +extminZ=-124.938 +extmaxZ=155.562 + +slcminX=-157.938 +slcmaxX=122.562 +slcminY=-25.2031 +slcmaxY=58.4766 +slcminZ=-124.938 +slcmaxZ=155.562 + + +[COLLISION] +name=sv2c_cvnew2.sld +count=4 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/SV2D_CV.SLD b/CONTENT/BT3025/SOLIDS/SV2D_CV.SLD new file mode 100644 index 0000000..d7f59a7 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/SV2D_CV.SLD @@ -0,0 +1,92 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=7 +TypeName=RampFacingPositiveXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=125 +extminY=-25.2031 +extmaxY=24.7969 +extminZ=-125 +extmaxZ=125 + +slcminX=-125 +slcmaxX=125 +slcminY=-25.2031 +slcmaxY=24.7969 +slcminZ=-125 +slcmaxZ=125 + + +[volume 1] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-81.6875 +extmaxX=240.312 +extminY=-19.8984 +extmaxY=57 +extminZ=-118.312 +extmaxZ=203.688 + +slcminX=-81.6875 +slcmaxX=240.312 +slcminY=-19.8984 +slcmaxY=57 +slcminZ=-118.312 +slcmaxZ=203.688 + + +[volume 2] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-124.875 +extmaxX=229.062 +extminY=-25.2031 +extmaxY=24.1953 +extminZ=-239.25 +extmaxZ=114.688 + +slcminX=-124.875 +slcmaxX=229.062 +slcminY=-25.2031 +slcmaxY=24.1953 +slcminZ=-239.25 +slcmaxZ=114.688 + + +[volume 3] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-97.6875 +extmaxX=257.5 +extminY=-19.8984 +extmaxY=72 +extminZ=-242 +extmaxZ=113.188 + +slcminX=-97.6875 +slcmaxX=257.5 +slcminY=-19.8984 +slcmaxY=72 +slcminZ=-242 +slcmaxZ=113.188 + + +[COLLISION] +name=sv2d_cvnew2.sld +count=4 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/SV2_CV.SLD b/CONTENT/BT3025/SOLIDS/SV2_CV.SLD new file mode 100644 index 0000000..5e7ad2f --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/SV2_CV.SLD @@ -0,0 +1,113 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-205.312 +extmaxX=-60.6875 +extminY=-15.5 +extmaxY=31.5 +extminZ=-68.5 +extmaxZ=76.125 + +slcminX=-205.312 +slcmaxX=-60.6875 +slcminY=-15.5 +slcmaxY=31.5 +slcminZ=-68.5 +slcmaxZ=76.125 + + +[volume 1] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-7.9375 +extmaxX=207.938 +extminY=-15.5 +extmaxY=43.9531 +extminZ=-141.938 +extmaxZ=73.9375 + +slcminX=-7.9375 +slcmaxX=207.938 +slcminY=-15.5 +slcmaxY=43.9531 +slcminZ=-141.938 +slcmaxZ=73.9375 + + +[volume 2] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-144.312 +extmaxX=49.3125 +extminY=-15.5 +extmaxY=60.5 +extminZ=-121.5 +extmaxZ=72.125 + +slcminX=-144.312 +slcmaxX=49.3125 +slcminY=-15.5 +slcmaxY=60.5 +slcminZ=-121.5 +slcmaxZ=72.125 + + +[volume 3] +TypeNumber=4 +TypeName=RampFacingNegativeZType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=125 +extminY=-25.2031 +extmaxY=24.7969 +extminZ=-125 +extmaxZ=125 + +slcminX=-125 +slcmaxX=125 +slcminY=-25.2031 +slcmaxY=24.7969 +slcminZ=-125 +slcmaxZ=125 + + +[volume 4] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-76.3984 +extmaxX=86 +extminY=-15.5 +extmaxY=11.6016 +extminZ=-100.703 +extmaxZ=61.7031 + +slcminX=-76.3984 +slcmaxX=86 +slcminY=-15.5 +slcmaxY=11.6016 +slcminZ=-100.703 +slcmaxZ=61.7031 + + +[COLLISION] +name=sv2_cvnew6.sld +count=5 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/SV3B_CV.SLD b/CONTENT/BT3025/SOLIDS/SV3B_CV.SLD new file mode 100644 index 0000000..9612cc6 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/SV3B_CV.SLD @@ -0,0 +1,176 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=125 +extminY=-35 +extmaxY=-25.2031 +extminZ=-125 +extmaxZ=125 + +slcminX=-125 +slcmaxX=125 +slcminY=-35 +slcmaxY=-25.2031 +slcminZ=-125 +slcmaxZ=125 + + +[volume 1] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=239.375 +extminY=-25.2031 +extmaxY=12.1406 +extminZ=-57.3125 +extmaxZ=307.062 + +slcminX=-125 +slcmaxX=239.375 +slcminY=-25.2031 +slcmaxY=12.1406 +slcminZ=-57.3125 +slcmaxZ=307.062 + + +[volume 2] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-124.375 +extmaxX=23.625 +extminY=-25.2031 +extmaxY=-9.79688 +extminZ=-81.625 +extmaxZ=66.375 + +slcminX=-124.375 +slcmaxX=23.625 +slcminY=-25.2031 +slcmaxY=-9.79688 +slcminZ=-81.625 +slcmaxZ=66.375 + + +[volume 3] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-103.062 +extmaxX=100.25 +extminY=-25.2031 +extmaxY=24.0781 +extminZ=-124.938 +extmaxZ=78.375 + +slcminX=-103.062 +slcmaxX=100.25 +slcminY=-25.2031 +slcmaxY=24.0781 +slcminZ=-124.938 +slcmaxZ=78.375 + + +[volume 4] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-107 +extmaxX=34 +extminY=-25.2031 +extmaxY=18.1797 +extminZ=-125 +extmaxZ=16 + +slcminX=-107 +slcmaxX=34 +slcminY=-25.2031 +slcmaxY=18.1797 +slcminZ=-125 +slcmaxZ=16 + + +[volume 5] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-53.1875 +extmaxX=266 +extminY=-25.2031 +extmaxY=58.8984 +extminZ=-125 +extmaxZ=194.188 + +slcminX=-53.1875 +slcmaxX=266 +slcminY=-25.2031 +slcmaxY=58.8984 +slcminZ=-125 +slcmaxZ=194.188 + + +[volume 6] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-92.625 +extmaxX=139.188 +extminY=-22.0938 +extmaxY=41.6094 +extminZ=-30.3125 +extmaxZ=201.5 + +slcminX=-92.625 +slcmaxX=139.188 +slcminY=-22.0938 +slcmaxY=41.6094 +slcminZ=-30.3125 +slcmaxZ=201.5 + + +[volume 7] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-126.031 +extmaxX=-44.7656 +extminY=-25.2031 +extmaxY=-20.8984 +extminZ=-127.031 +extmaxZ=-45.7656 + +slcminX=-126.031 +slcmaxX=-44.7656 +slcminY=-25.2031 +slcmaxY=-20.8984 +slcminZ=-127.031 +slcmaxZ=-45.7656 + + +[COLLISION] +name=sv3b_cvnew3.sld +count=8 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/SV3C_CV.SLD b/CONTENT/BT3025/SOLIDS/SV3C_CV.SLD new file mode 100644 index 0000000..722608b --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/SV3C_CV.SLD @@ -0,0 +1,113 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-83.7031 +extmaxX=147.898 +extminY=-25.2031 +extmaxY=2.10156 +extminZ=-157.297 +extmaxZ=74.2969 + +slcminX=-83.7031 +slcmaxX=147.898 +slcminY=-25.2031 +slcmaxY=2.10156 +slcminZ=-157.297 +slcmaxZ=74.2969 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=125 +extminY=-35 +extmaxY=-25.2031 +extminZ=-125 +extmaxZ=125 + +slcminX=-125 +slcmaxX=125 +slcminY=-35 +slcmaxY=-25.2031 +slcminZ=-125 +slcmaxZ=125 + + +[volume 2] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-124.312 +extmaxX=111.688 +extminY=-25.2031 +extmaxY=-1 +extminZ=-113.125 +extmaxZ=122.875 + +slcminX=-124.312 +slcmaxX=111.688 +slcminY=-25.2031 +slcmaxY=-1 +slcminZ=-113.125 +slcmaxZ=122.875 + + +[volume 3] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-124.875 +extmaxX=75.125 +extminY=-25.2031 +extmaxY=-4.5 +extminZ=-225 +extmaxZ=-25 + +slcminX=-124.875 +slcmaxX=75.125 +slcminY=-25.2031 +slcmaxY=-4.5 +slcminZ=-225 +slcmaxZ=-25 + + +[volume 4] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=22.375 +extmaxX=227.625 +extminY=-25.2031 +extmaxY=-3.50781 +extminZ=-80.125 +extmaxZ=125.125 + +slcminX=22.375 +slcmaxX=227.625 +slcminY=-25.2031 +slcmaxY=-3.50781 +slcminZ=-80.125 +slcmaxZ=125.125 + + +[COLLISION] +name=sv3c_cvnew2.sld +count=5 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/SV3D_CV.SLD b/CONTENT/BT3025/SOLIDS/SV3D_CV.SLD new file mode 100644 index 0000000..19b7779 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/SV3D_CV.SLD @@ -0,0 +1,134 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-75.3125 +extmaxX=124.875 +extminY=-25.2031 +extmaxY=-4 +extminZ=-215 +extmaxZ=-14.8125 + +slcminX=-75.3125 +slcmaxX=124.875 +slcminY=-25.2031 +slcmaxY=-4 +slcminZ=-215 +slcmaxZ=-14.8125 + + +[volume 1] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-215 +extmaxX=-33 +extminY=-25.2031 +extmaxY=-5.79688 +extminZ=-58 +extmaxZ=124 + +slcminX=-215 +slcmaxX=-33 +slcminY=-25.2031 +slcmaxY=-5.79688 +slcminZ=-58 +slcmaxZ=124 + + +[volume 2] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-172.977 +extmaxX=67.7734 +extminY=-25.2031 +extmaxY=16.6016 +extminZ=-165.172 +extmaxZ=75.5781 + +slcminX=-172.977 +slcmaxX=67.7734 +slcminY=-25.2031 +slcmaxY=16.6016 +slcminZ=-165.172 +slcmaxZ=75.5781 + + +[volume 3] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-113.125 +extmaxX=122.875 +extminY=-25.2031 +extmaxY=-1 +extminZ=-111.688 +extmaxZ=124.312 + +slcminX=-113.125 +slcmaxX=122.875 +slcminY=-25.2031 +slcmaxY=-1 +slcminZ=-111.688 +slcmaxZ=124.312 + + +[volume 4] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-95.5 +extmaxX=93.5 +extminY=-25.2031 +extmaxY=26.7969 +extminZ=-184.5 +extmaxZ=4.5 + +slcminX=-95.5 +slcmaxX=93.5 +slcminY=-25.2031 +slcmaxY=26.7969 +slcminZ=-184.5 +slcmaxZ=4.5 + + +[volume 5] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=125 +extminY=-35 +extmaxY=-25.2031 +extminZ=-125 +extmaxZ=125 + +slcminX=-125 +slcmaxX=125 +slcminY=-35 +slcmaxY=-25.2031 +slcminZ=-125 +slcmaxZ=125 + + +[COLLISION] +name=sv3d_cvnew2.sld +count=6 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/SV3_CV.SLD b/CONTENT/BT3025/SOLIDS/SV3_CV.SLD new file mode 100644 index 0000000..14e3880 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/SV3_CV.SLD @@ -0,0 +1,155 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-134.297 +extmaxX=81.5 +extminY=-25.2031 +extmaxY=-7.89844 +extminZ=-20.1016 +extmaxZ=195.703 + +slcminX=-134.297 +slcmaxX=81.5 +slcminY=-25.2031 +slcmaxY=-7.89844 +slcminZ=-20.1016 +slcmaxZ=195.703 + + +[volume 1] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-25.8984 +extmaxX=81.1016 +extminY=-25.2031 +extmaxY=-7.89844 +extminZ=-22.8984 +extmaxZ=84.1016 + +slcminX=-25.8984 +slcmaxX=81.1016 +slcminY=-25.2031 +slcmaxY=-7.89844 +slcminZ=-22.8984 +slcmaxZ=84.1016 + + +[volume 2] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-75.3125 +extmaxX=124.875 +extminY=-25.2031 +extmaxY=-3.85156 +extminZ=25 +extmaxZ=225.188 + +slcminX=-75.3125 +slcmaxX=124.875 +slcminY=-25.2031 +slcmaxY=-3.85156 +slcminZ=25 +slcmaxZ=225.188 + + +[volume 3] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-172.812 +extmaxX=-17.1875 +extminY=-25.2031 +extmaxY=23.3516 +extminZ=-125 +extmaxZ=30.625 + +slcminX=-172.812 +slcmaxX=-17.1875 +slcminY=-25.2031 +slcmaxY=23.3516 +slcminZ=-125 +slcmaxZ=30.625 + + +[volume 4] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-160 +extmaxX=93 +extminY=-25.2031 +extmaxY=41.2031 +extminZ=-125 +extmaxZ=128 + +slcminX=-160 +slcmaxX=93 +slcminY=-25.2031 +slcmaxY=41.2031 +slcminZ=-125 +slcmaxZ=128 + + +[volume 5] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-125 +extmaxX=125 +extminY=-35 +extmaxY=-25.2031 +extminZ=-125 +extmaxZ=125 + +slcminX=-125 +slcmaxX=125 +slcminY=-35 +slcmaxY=-25.2031 +slcminZ=-125 +slcmaxZ=125 + + +[volume 6] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-69.3125 +extmaxX=124.688 +extminY=-25.2031 +extmaxY=-5.70312 +extminZ=-77.375 +extmaxZ=116.625 + +slcminX=-69.3125 +slcmaxX=124.688 +slcminY=-25.2031 +slcmaxY=-5.70312 +slcminZ=-77.375 +slcmaxZ=116.625 + + +[COLLISION] +name=sv3_cvnew2.sld +count=7 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/SW1_CV.SLD b/CONTENT/BT3025/SOLIDS/SW1_CV.SLD new file mode 100644 index 0000000..635dbf1 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/SW1_CV.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-25 +extmaxX=-21 +extminY=0 +extmaxY=13 +extminZ=-25 +extmaxZ=25 + +slcminX=-25 +slcmaxX=-21 +slcminY=0 +slcmaxY=13 +slcminZ=-25 +slcmaxZ=25 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-21 +extmaxX=25 +extminY=0 +extmaxY=13 +extminZ=-25 +extmaxZ=-21 + +slcminX=-21 +slcmaxX=25 +slcminY=0 +slcmaxY=13 +slcminZ=-25 +slcmaxZ=-21 + + +[COLLISION] +name=sw1_cv.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/SW2_CV.SLD b/CONTENT/BT3025/SOLIDS/SW2_CV.SLD new file mode 100644 index 0000000..219b087 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/SW2_CV.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-25 +extmaxX=-21 +extminY=0 +extmaxY=13 +extminZ=-25 +extmaxZ=25 + +slcminX=-25 +slcmaxX=-21 +slcminY=0 +slcmaxY=13 +slcminZ=-25 +slcmaxZ=25 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-21 +extmaxX=25 +extminY=0 +extmaxY=13 +extminZ=-2 +extmaxZ=2 + +slcminX=-21 +slcmaxX=25 +slcminY=0 +slcmaxY=13 +slcminZ=-2 +slcmaxZ=2 + + +[COLLISION] +name=sw2_cv.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/SW3_CV.SLD b/CONTENT/BT3025/SOLIDS/SW3_CV.SLD new file mode 100644 index 0000000..b68d462 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/SW3_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-25 +extmaxX=25 +extminY=0 +extmaxY=13 +extminZ=-2 +extmaxZ=2 + +slcminX=-25 +slcmaxX=25 +slcminY=0 +slcmaxY=13 +slcminZ=-2 +slcmaxZ=2 + + +[COLLISION] +name=sw3_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/SW4_CV.SLD b/CONTENT/BT3025/SOLIDS/SW4_CV.SLD new file mode 100644 index 0000000..e064b95 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/SW4_CV.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-25 +extmaxX=-21 +extminY=0 +extmaxY=5 +extminZ=-25 +extmaxZ=25 + +slcminX=-25 +slcmaxX=-21 +slcminY=0 +slcmaxY=5 +slcminZ=-25 +slcmaxZ=25 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-21 +extmaxX=25 +extminY=0 +extmaxY=5 +extminZ=-25 +extmaxZ=-21 + +slcminX=-21 +slcmaxX=25 +slcminY=0 +slcmaxY=5 +slcminZ=-25 +slcmaxZ=-21 + + +[COLLISION] +name=sw4_cv.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/SW5_CV.SLD b/CONTENT/BT3025/SOLIDS/SW5_CV.SLD new file mode 100644 index 0000000..54c752e --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/SW5_CV.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-25 +extmaxX=-21 +extminY=0 +extmaxY=5 +extminZ=-25 +extmaxZ=25 + +slcminX=-25 +slcmaxX=-21 +slcminY=0 +slcmaxY=5 +slcminZ=-25 +slcmaxZ=25 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-21 +extmaxX=25 +extminY=0 +extmaxY=5 +extminZ=-2 +extmaxZ=2 + +slcminX=-21 +slcmaxX=25 +slcminY=0 +slcmaxY=5 +slcminZ=-2 +slcmaxZ=2 + + +[COLLISION] +name=sw5_cv.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/SW6_CV.SLD b/CONTENT/BT3025/SOLIDS/SW6_CV.SLD new file mode 100644 index 0000000..6b982ec --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/SW6_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-25 +extmaxX=25 +extminY=0 +extmaxY=5 +extminZ=-2 +extmaxZ=2 + +slcminX=-25 +slcmaxX=25 +slcminY=0 +slcmaxY=5 +slcminZ=-2 +slcmaxZ=2 + + +[COLLISION] +name=sw6_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/SWIFTWND.SLD b/CONTENT/BT3025/SOLIDS/SWIFTWND.SLD new file mode 100644 index 0000000..8f33cf4 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/SWIFTWND.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2 +extmaxX=2 +extminY=0 +extmaxY=3 +extminZ=-3.5 +extmaxZ=0.5 + +slcminX=-2 +slcmaxX=2 +slcminY=0 +slcmaxY=3 +slcminZ=-3.5 +slcmaxZ=0.5 + + +[volume 1] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-1.5 +extmaxX=1.5 +extminY=0 +extmaxY=2 +extminZ=0.5 +extmaxZ=3.5 + +slcminX=-1.5 +slcmaxX=1.5 +slcminY=0 +slcmaxY=2 +slcminZ=0.5 +slcmaxZ=3.5 + + +[COLLISION] +name=swiftwnd.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/TEST.XST b/CONTENT/BT3025/SOLIDS/TEST.XST new file mode 100644 index 0000000..0ae04af --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/TEST.XST @@ -0,0 +1,18 @@ +[LAB_ONLY] + +[extent 0] +extminX=-7000 +extmaxX=7000 +extminY=-5 +extmaxY=105 +extminZ=-7000 +extmaxZ=7000 + + +[COLLISION] +name=test.xst +count=0 +extentcount=1 +evilextentcount=0 + + \ No newline at end of file diff --git a/CONTENT/BT3025/SOLIDS/THR_CV.SLD b/CONTENT/BT3025/SOLIDS/THR_CV.SLD new file mode 100644 index 0000000..611fda5 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/THR_CV.SLD @@ -0,0 +1,30 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-3.89844 +extmaxX=3.89844 +extminY=2 +extmaxY=11.1562 +extminZ=-4.38281 +extmaxZ=3.42188 + +slcminX=-3.89844 +slcmaxX=3.89844 +slcminY=1 +slcmaxY=11.1562 +slcminZ=-4.38281 +slcmaxZ=3.42188 + + +[COLLISION] +name=thr_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + + \ No newline at end of file diff --git a/CONTENT/BT3025/SOLIDS/TK1_CV.SLD b/CONTENT/BT3025/SOLIDS/TK1_CV.SLD new file mode 100644 index 0000000..111abe2 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/TK1_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2 +extmaxX=2 +extminY=0 +extmaxY=2.10156 +extminZ=-3.20312 +extmaxZ=3.29688 + +slcminX=-2 +slcmaxX=2 +slcminY=0 +slcmaxY=2.10156 +slcminZ=-3.20312 +slcmaxZ=3.29688 + + +[COLLISION] +name=tk1_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/TNT_CV.SLD b/CONTENT/BT3025/SOLIDS/TNT_CV.SLD new file mode 100644 index 0000000..daaf7f0 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/TNT_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-5.07031 +extmaxX=5.07031 +extminY=0.0390625 +extmaxY=2.15625 +extminZ=-5.07031 +extmaxZ=5.07031 + +slcminX=-5.07031 +slcmaxX=5.07031 +slcminY=0.0390625 +slcmaxY=2.15625 +slcminZ=-5.07031 +slcmaxZ=5.07031 + + +[COLLISION] +name=tnt_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/TREE_CV.SLD b/CONTENT/BT3025/SOLIDS/TREE_CV.SLD new file mode 100644 index 0000000..758c884 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/TREE_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2.898 +extmaxX=2.898 +extminY=0 +extmaxY=7 +extminZ=-2.882 +extmaxZ=2.914 + +slcminX=-2.898 +slcmaxX=2.898 +slcminY=0 +slcmaxY=7 +slcminZ=-2.882 +slcmaxZ=2.914 + + +[COLLISION] +name=tree_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/TRK1_CV.SLD b/CONTENT/BT3025/SOLIDS/TRK1_CV.SLD new file mode 100644 index 0000000..2b0ca10 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/TRK1_CV.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2.9375 +extmaxX=2.9375 +extminY=0 +extmaxY=5 +extminZ=-6.03906 +extmaxZ=-0.164062 + +slcminX=-2.9375 +slcmaxX=2.9375 +slcminY=0 +slcmaxY=5 +slcminZ=-6.03906 +slcmaxZ=-0.164062 + + +[volume 1] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2.9375 +extmaxX=2.9375 +extminY=0 +extmaxY=5 +extminZ=-0.164062 +extmaxZ=5.71875 + +slcminX=-2.9375 +slcmaxX=2.9375 +slcminY=0 +slcmaxY=5 +slcminZ=-0.164062 +slcmaxZ=5.71875 + + +[COLLISION] +name=trk1_cv.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/TRK3_CV.SLD b/CONTENT/BT3025/SOLIDS/TRK3_CV.SLD new file mode 100644 index 0000000..e7d824e --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/TRK3_CV.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2.20312 +extmaxX=2.20312 +extminY=0 +extmaxY=3.20312 +extminZ=-4.33594 +extmaxZ=0.0703125 + +slcminX=-2.20312 +slcmaxX=2.20312 +slcminY=0 +slcmaxY=3.20312 +slcminZ=-4.33594 +slcmaxZ=0.0703125 + + +[volume 1] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2.20312 +extmaxX=2.20312 +extminY=0 +extmaxY=3.20312 +extminZ=0.0703125 +extmaxZ=4.48438 + +slcminX=-2.20312 +slcmaxX=2.20312 +slcminY=0 +slcmaxY=3.20312 +slcminZ=0.0703125 +slcmaxZ=4.48438 + + +[COLLISION] +name=trk3_cv.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/TRK4_CV.SLD b/CONTENT/BT3025/SOLIDS/TRK4_CV.SLD new file mode 100644 index 0000000..9e900b5 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/TRK4_CV.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-1.98438 +extmaxX=1.98438 +extminY=0 +extmaxY=3.20312 +extminZ=-3.90625 +extmaxZ=0.0625 + +slcminX=-1.98438 +slcmaxX=1.98438 +slcminY=0 +slcmaxY=3.20312 +slcminZ=-3.90625 +slcmaxZ=0.0625 + + +[volume 1] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-1.98438 +extmaxX=1.98438 +extminY=0 +extmaxY=1.70312 +extminZ=0.0625 +extmaxZ=4.03125 + +slcminX=-1.98438 +slcmaxX=1.98438 +slcminY=0 +slcmaxY=1.70312 +slcminZ=0.0625 +slcmaxZ=4.03125 + + +[COLLISION] +name=trk4_cv.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/TT1_CV.SLD b/CONTENT/BT3025/SOLIDS/TT1_CV.SLD new file mode 100644 index 0000000..271257d --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/TT1_CV.SLD @@ -0,0 +1,92 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-1.57031 +extmaxX=1.57031 +extminY=0 +extmaxY=3.85156 +extminZ=2.4375 +extmaxZ=5.57812 + +slcminX=-1.57031 +slcmaxX=1.57031 +slcminY=0 +slcmaxY=3.85156 +slcminZ=2.4375 +slcmaxZ=5.57812 + + +[volume 1] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-1.57031 +extmaxX=1.57031 +extminY=0 +extmaxY=3.85156 +extminZ=-0.695312 +extmaxZ=2.4375 + +slcminX=-1.57031 +slcmaxX=1.57031 +slcminY=0 +slcmaxY=3.85156 +slcminZ=-0.695312 +slcmaxZ=2.4375 + + +[volume 2] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-1.57031 +extmaxX=1.57031 +extminY=0 +extmaxY=3.85156 +extminZ=-3.82812 +extmaxZ=-0.695312 + +slcminX=-1.57031 +slcmaxX=1.57031 +slcminY=0 +slcmaxY=3.85156 +slcminZ=-3.82812 +slcmaxZ=-0.695312 + + +[volume 3] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-1.57031 +extmaxX=1.57031 +extminY=0 +extmaxY=3.85156 +extminZ=-6.96094 +extmaxZ=-3.82812 + +slcminX=-1.57031 +slcmaxX=1.57031 +slcminY=0 +slcmaxY=3.85156 +slcminZ=-6.96094 +slcmaxZ=-3.82812 + + +[COLLISION] +name=tt1_cv.sld +count=4 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/TT2_CV.SLD b/CONTENT/BT3025/SOLIDS/TT2_CV.SLD new file mode 100644 index 0000000..ec70366 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/TT2_CV.SLD @@ -0,0 +1,92 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-1.64844 +extmaxX=1.64844 +extminY=0 +extmaxY=3.5 +extminZ=2.38281 +extmaxZ=5.67969 + +slcminX=-1.64844 +slcmaxX=1.64844 +slcminY=0 +slcmaxY=3.5 +slcminZ=2.38281 +slcmaxZ=5.67969 + + +[volume 1] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-1.64844 +extmaxX=1.64844 +extminY=0 +extmaxY=3.5 +extminZ=-0.921875 +extmaxZ=2.38281 + +slcminX=-1.64844 +slcmaxX=1.64844 +slcminY=0 +slcmaxY=3.5 +slcminZ=-0.921875 +slcmaxZ=2.38281 + + +[volume 2] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-1.64844 +extmaxX=1.64844 +extminY=0 +extmaxY=3.5 +extminZ=-4.21875 +extmaxZ=-0.921875 + +slcminX=-1.64844 +slcmaxX=1.64844 +slcminY=0 +slcmaxY=3.5 +slcminZ=-4.21875 +slcmaxZ=-0.921875 + + +[volume 3] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-1.64844 +extmaxX=1.64844 +extminY=0 +extmaxY=3.5 +extminZ=-7.52344 +extmaxZ=-4.21875 + +slcminX=-1.64844 +slcmaxX=1.64844 +slcminY=0 +slcmaxY=3.5 +slcminZ=-7.52344 +slcmaxZ=-4.21875 + + +[COLLISION] +name=tt2_cv.sld +count=4 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/TWR_CV.SLD b/CONTENT/BT3025/SOLIDS/TWR_CV.SLD new file mode 100644 index 0000000..ff63776 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/TWR_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-1.79688 +extmaxX=1.79688 +extminY=0 +extmaxY=16.6719 +extminZ=-1.79688 +extmaxZ=1.79688 + +slcminX=-1.79688 +slcmaxX=1.79688 +slcminY=0 +slcmaxY=16.6719 +slcminZ=-1.79688 +slcmaxZ=1.79688 + + +[COLLISION] +name=twr_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/VUL_CV.SLD b/CONTENT/BT3025/SOLIDS/VUL_CV.SLD new file mode 100644 index 0000000..0b4c7b4 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/VUL_CV.SLD @@ -0,0 +1,30 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-3.85938 +extmaxX=3.88281 +extminY=2 +extmaxY=9.90625 +extminZ=-3.82812 +extmaxZ=3.90625 + +slcminX=-3.85938 +slcmaxX=3.88281 +slcminY=1 +slcmaxY=9.90625 +slcminZ=-3.82812 +slcmaxZ=3.90625 + + +[COLLISION] +name=vul_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + + \ No newline at end of file diff --git a/CONTENT/BT3025/SOLIDS/WALL10K.SLD b/CONTENT/BT3025/SOLIDS/WALL10K.SLD new file mode 100644 index 0000000..05373f0 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/WALL10K.SLD @@ -0,0 +1,93 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-4000 +extmaxX=4000 +extminY=0 +extmaxY=50 +extminZ=-4100 +extmaxZ=-4000 + +slcminX=-4000 +slcmaxX=4000 +slcminY=0 +slcmaxY=50 +slcminZ=-4100 +slcmaxZ=-4000 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-4100 +extmaxX=-4000 +extminY=0 +extmaxY=50 +extminZ=-4000 +extmaxZ=4000 + +slcminX=-4100 +slcmaxX=-4000 +slcminY=0 +slcmaxY=50 +slcminZ=-4000 +slcmaxZ=4000 + + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-4000 +extmaxX=4000 +extminY=0 +extmaxY=50 +extminZ=4000 +extmaxZ=4100 + +slcminX=-4000 +slcmaxX=4000 +slcminY=0 +slcmaxY=50 +slcminZ=4000 +slcmaxZ=4100 + + +[volume 3] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=4000 +extmaxX=4100 +extminY=0 +extmaxY=50 +extminZ=-4000 +extmaxZ=4000 + +slcminX=4000 +slcmaxX=4100 +slcminY=0 +slcmaxY=50 +slcminZ=-4000 +slcmaxZ=4000 + + +[COLLISION] +name=wall10k.sld +count=4 +extentcount=0 +evilextentcount=0 + + \ No newline at end of file diff --git a/CONTENT/BT3025/SOLIDS/WL2_CV.SLD b/CONTENT/BT3025/SOLIDS/WL2_CV.SLD new file mode 100644 index 0000000..32d1047 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/WL2_CV.SLD @@ -0,0 +1,92 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=14.75 +extmaxX=17.25 +extminY=0 +extmaxY=11 +extminZ=-1 +extmaxZ=1.5 + +slcminX=14.75 +slcmaxX=17.25 +slcminY=0 +slcmaxY=11 +slcminZ=-1 +slcmaxZ=1.5 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-7.5 +extmaxX=-5 +extminY=0 +extmaxY=13 +extminZ=-1 +extmaxZ=1.5 + +slcminX=-7.5 +slcmaxX=-5 +slcminY=0 +slcmaxY=13 +slcminZ=-1 +slcmaxZ=1.5 + + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-18.25 +extmaxX=-15.75 +extminY=0 +extmaxY=11 +extminZ=-1 +extmaxZ=1.5 + +slcminX=-18.25 +slcmaxX=-15.75 +slcminY=0 +slcmaxY=11 +slcminZ=-1 +slcmaxZ=1.5 + + +[volume 3] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=3.75 +extmaxX=6.25 +extminY=0 +extmaxY=14 +extminZ=-1.5 +extmaxZ=1 + +slcminX=3.75 +slcmaxX=6.25 +slcminY=0 +slcmaxY=14 +slcminZ=-1.5 +slcmaxZ=1 + + +[COLLISION] +name=wl2_cv.sld +count=4 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/WL4_CV.SLD b/CONTENT/BT3025/SOLIDS/WL4_CV.SLD new file mode 100644 index 0000000..0e22d3b --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/WL4_CV.SLD @@ -0,0 +1,113 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-11 +extmaxX=-9.5 +extminY=0 +extmaxY=2 +extminZ=-0.5 +extmaxZ=0.5 + +slcminX=-11 +slcmaxX=-9.5 +slcminY=0 +slcmaxY=2 +slcminZ=-0.5 +slcmaxZ=0.5 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=0.5 +extmaxX=2 +extminY=4 +extmaxY=7 +extminZ=-0.5 +extmaxZ=0.5 + +slcminX=0.5 +slcmaxX=2 +slcminY=4 +slcmaxY=7 +slcminZ=-0.5 +slcmaxZ=0.5 + + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=2 +extmaxX=4.5 +extminY=4 +extmaxY=8.5 +extminZ=-0.5 +extmaxZ=0.5 + +slcminX=2 +slcmaxX=4.5 +slcminY=4 +slcmaxY=8.5 +slcminZ=-0.5 +slcmaxZ=0.5 + + +[volume 3] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-3.25 +extmaxX=-0.25 +extminY=4 +extmaxY=7.5 +extminZ=-0.5 +extmaxZ=0.5 + +slcminX=-3.25 +slcmaxX=-0.25 +slcminY=4 +slcmaxY=7.5 +slcminZ=-0.5 +slcmaxZ=0.5 + + +[volume 4] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-9.5 +extmaxX=10.5 +extminY=0 +extmaxY=4 +extminZ=-0.5 +extmaxZ=0.5 + +slcminX=-9.5 +slcmaxX=10.5 +slcminY=0 +slcmaxY=4 +slcminZ=-0.5 +slcmaxZ=0.5 + + +[COLLISION] +name=wl4_cv.sld +count=5 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/WL5_CV.SLD b/CONTENT/BT3025/SOLIDS/WL5_CV.SLD new file mode 100644 index 0000000..10808ff --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/WL5_CV.SLD @@ -0,0 +1,155 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=0.5 +extmaxX=1 +extminY=0 +extmaxY=3.5 +extminZ=1.5 +extmaxZ=3 + +slcminX=0.5 +slcmaxX=1 +slcminY=0 +slcmaxY=3.5 +slcminZ=1.5 +slcmaxZ=3 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=0.5 +extmaxX=1 +extminY=0 +extmaxY=5 +extminZ=0.5 +extmaxZ=1.5 + +slcminX=0.5 +slcmaxX=1 +slcminY=0 +slcmaxY=5 +slcminZ=0.5 +slcmaxZ=1.5 + + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=0.5 +extmaxX=1 +extminY=0 +extmaxY=5.5 +extminZ=-1.5 +extmaxZ=0.5 + +slcminX=0.5 +slcmaxX=1 +slcminY=0 +slcmaxY=5.5 +slcminZ=-1.5 +slcmaxZ=0.5 + + +[volume 3] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-1 +extmaxX=0 +extminY=3 +extmaxY=5 +extminZ=-2 +extmaxZ=-1.5 + +slcminX=-1 +slcmaxX=0 +slcminY=3 +slcmaxY=5 +slcminZ=-2 +slcmaxZ=-1.5 + + +[volume 4] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=2 +extmaxX=3.5 +extminY=3 +extmaxY=5 +extminZ=-2 +extmaxZ=-1.5 + +slcminX=2 +slcmaxX=3.5 +slcminY=3 +slcmaxY=5 +slcminZ=-2 +slcmaxZ=-1.5 + + +[volume 5] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=0 +extmaxX=2 +extminY=3 +extmaxY=6 +extminZ=-2 +extmaxZ=-1.5 + +slcminX=0 +slcmaxX=2 +slcminY=3 +slcmaxY=6 +slcminZ=-2 +slcmaxZ=-1.5 + + +[volume 6] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-3 +extmaxX=4 +extminY=0 +extmaxY=3 +extminZ=-2 +extmaxZ=-1.5 + +slcminX=-3 +slcmaxX=4 +slcminY=0 +slcmaxY=3 +slcminZ=-2 +slcmaxZ=-1.5 + + +[COLLISION] +name=wl5_cv.sld +count=7 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/WL6_CV.SLD b/CONTENT/BT3025/SOLIDS/WL6_CV.SLD new file mode 100644 index 0000000..93ea79a --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/WL6_CV.SLD @@ -0,0 +1,155 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=2.5 +extmaxX=3 +extminY=3.5 +extmaxY=4 +extminZ=0 +extmaxZ=1 + +slcminX=2.5 +slcmaxX=3 +slcminY=3.5 +slcmaxY=4 +slcminZ=0 +slcmaxZ=1 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=2.5 +extmaxX=3 +extminY=2 +extmaxY=3.5 +extminZ=0 +extmaxZ=2.5 + +slcminX=2.5 +slcmaxX=3 +slcminY=2 +slcmaxY=3.5 +slcminZ=0 +slcmaxZ=2.5 + + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=2.5 +extmaxX=3 +extminY=0 +extmaxY=2 +extminZ=0 +extmaxZ=3.5 + +slcminX=2.5 +slcmaxX=3 +slcminY=0 +slcmaxY=2 +slcminZ=0 +slcmaxZ=3.5 + + +[volume 3] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=2.5 +extmaxX=3 +extminY=0 +extmaxY=5 +extminZ=-3 +extmaxZ=0 + +slcminX=2.5 +slcmaxX=3 +slcminY=0 +slcmaxY=5 +slcminZ=-3 +slcmaxZ=0 + + +[volume 4] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-3 +extmaxX=-2 +extminY=0 +extmaxY=2.5 +extminZ=-3 +extmaxZ=-2.5 + +slcminX=-3 +slcmaxX=-2 +slcminY=0 +slcmaxY=2.5 +slcminZ=-3 +slcmaxZ=-2.5 + + +[volume 5] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2 +extmaxX=0 +extminY=0 +extmaxY=3.5 +extminZ=-3 +extmaxZ=-2.5 + +slcminX=-2 +slcmaxX=0 +slcminY=0 +slcmaxY=3.5 +slcminZ=-3 +slcmaxZ=-2.5 + + +[volume 6] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=0 +extmaxX=2.5 +extminY=0 +extmaxY=5 +extminZ=-3 +extmaxZ=-2.5 + +slcminX=0 +slcmaxX=2.5 +slcminY=0 +slcmaxY=5 +slcminZ=-3 +slcmaxZ=-2.5 + + +[COLLISION] +name=wl6_cv.sld +count=7 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/WL7_CV.SLD b/CONTENT/BT3025/SOLIDS/WL7_CV.SLD new file mode 100644 index 0000000..d00c7b4 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/WL7_CV.SLD @@ -0,0 +1,176 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=2.5 +extmaxX=3 +extminY=0 +extmaxY=2.45312 +extminZ=3 +extmaxZ=5 + +slcminX=2.5 +slcmaxX=3 +slcminY=0 +slcmaxY=2.45312 +slcminZ=3 +slcmaxZ=5 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=2.5 +extmaxX=3 +extminY=0 +extmaxY=3.85156 +extminZ=1 +extmaxZ=3 + +slcminX=2.5 +slcmaxX=3 +slcminY=0 +slcmaxY=3.85156 +slcminZ=1 +slcmaxZ=3 + + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=2.5 +extmaxX=3 +extminY=0 +extmaxY=4.75 +extminZ=-1 +extmaxZ=1 + +slcminX=2.5 +slcmaxX=3 +slcminY=0 +slcmaxY=4.75 +slcminZ=-1 +slcmaxZ=1 + + +[volume 3] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=2.5 +extmaxX=3 +extminY=0 +extmaxY=5.25 +extminZ=-3 +extmaxZ=-1 + +slcminX=2.5 +slcmaxX=3 +slcminY=0 +slcmaxY=5.25 +slcminZ=-3 +slcmaxZ=-1 + + +[volume 4] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-3 +extmaxX=-2 +extminY=0 +extmaxY=1.5 +extminZ=-3 +extmaxZ=-2.5 + +slcminX=-3 +slcmaxX=-2 +slcminY=0 +slcmaxY=1.5 +slcminZ=-3 +slcmaxZ=-2.5 + + +[volume 5] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-1 +extmaxX=0.5 +extminY=0 +extmaxY=4.04688 +extminZ=-3 +extmaxZ=-2.5 + +slcminX=-1 +slcmaxX=0.5 +slcminY=0 +slcmaxY=4.04688 +slcminZ=-3 +slcmaxZ=-2.5 + + +[volume 6] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=0.5 +extmaxX=2.5 +extminY=0 +extmaxY=5.25 +extminZ=-3 +extmaxZ=-2.5 + +slcminX=0.5 +slcmaxX=2.5 +slcminY=0 +slcmaxY=5.25 +slcminZ=-3 +slcmaxZ=-2.5 + + +[volume 7] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2 +extmaxX=-1 +extminY=0 +extmaxY=2.70312 +extminZ=-3 +extmaxZ=-2.5 + +slcminX=-2 +slcmaxX=-1 +slcminY=0 +slcmaxY=2.70312 +slcminZ=-3 +slcmaxZ=-2.5 + + +[COLLISION] +name=wl7_cv.sld +count=8 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/WL9_CV.SLD b/CONTENT/BT3025/SOLIDS/WL9_CV.SLD new file mode 100644 index 0000000..650ce91 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/WL9_CV.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-9 +extmaxX=6.89844 +extminY=0 +extmaxY=3.60156 +extminZ=9.14844 +extmaxZ=10.0469 + +slcminX=-9 +slcmaxX=6.89844 +slcminY=0 +slcmaxY=3.60156 +slcminZ=9.14844 +slcmaxZ=10.0469 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-5.5 +extmaxX=3.39844 +extminY=3.60156 +extmaxY=5.60156 +extminZ=9.14844 +extmaxZ=10.0469 + +slcminX=-5.5 +slcmaxX=3.39844 +slcminY=3.60156 +slcmaxY=5.60156 +slcminZ=9.14844 +slcmaxZ=10.0469 + + +[COLLISION] +name=wl9_cv.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/SOLIDS/WST_CV.SLD b/CONTENT/BT3025/SOLIDS/WST_CV.SLD new file mode 100644 index 0000000..2724155 --- /dev/null +++ b/CONTENT/BT3025/SOLIDS/WST_CV.SLD @@ -0,0 +1,92 @@ +[LAB_ONLY] // this file has not been approved for release + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=0.75 +extmaxX=2.17969 +extminY=2.5 +extmaxY=4.20312 +extminZ=-2.39844 +extmaxZ=-0.210938 + +slcminX=0.75 +slcmaxX=2.17969 +slcminY=2.5 +slcmaxY=4.20312 +slcminZ=-2.39844 +slcmaxZ=-0.210938 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2.42969 +extmaxX=2.17969 +extminY=0 +extmaxY=2.5 +extminZ=-2.39844 +extmaxZ=3.09375 + +slcminX=-2.42969 +slcmaxX=2.17969 +slcminY=0 +slcmaxY=2.5 +slcminZ=-2.39844 +slcmaxZ=3.09375 + + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=2.17969 +extmaxX=3.99219 +extminY=0 +extmaxY=2.5 +extminZ=-0.210938 +extmaxZ=0.710938 + +slcminX=2.17969 +slcmaxX=3.99219 +slcminY=0 +slcmaxY=2.5 +slcminZ=-0.210938 +slcmaxZ=0.710938 + + +[volume 3] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-1.47656 +extmaxX=-0.65625 +extminY=2.5 +extmaxY=10.8281 +extminZ=-0.210938 +extmaxZ=0.710938 + +slcminX=-1.47656 +slcmaxX=-0.65625 +slcminY=2.5 +slcmaxY=10.8281 +slcminZ=-0.210938 +slcmaxZ=0.710938 + + +[COLLISION] +name=wst_cv.sld +count=4 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/BT3025/TEST.BAT b/CONTENT/BT3025/TEST.BAT new file mode 100644 index 0000000..eb2ac34 --- /dev/null +++ b/CONTENT/BT3025/TEST.BAT @@ -0,0 +1,48 @@ +@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 ************************************************************** + + + +if "%1"=="a" goto BUILD + +if "%1"=="f" goto FRESHEN + +goto USAGE + +:BUILD +echo on +pkzip -a -P -eX -x@exclude.lst %2\bt.zip @arcfiles.lst +@echo off +goto END + +:FRESHEN +echo on +pkzip -u -P -eX -x@exclude.lst %2\bt.zip @arcfiles.lst +@echo off +goto END + +:NOLISTFILE +echo. +goto END + +:NOEXCLUDEFILE +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 diff --git a/CONTENT/BT3025/VIDEO/AUTOARM.SKL b/CONTENT/BT3025/VIDEO/AUTOARM.SKL new file mode 100644 index 0000000..07d5f69 --- /dev/null +++ b/CONTENT/BT3025/VIDEO/AUTOARM.SKL @@ -0,0 +1,116 @@ +[jointrshoulder] +parent=jointshakey +Type=hingex +Object=thr_rarm.bgf +dzone=dz_rarm +Former Segment=segrarm +tranx=1.8 +trany=2.3 +tranz=0.519 +pitch=2.62699e-24 +yaw=1.73978e-17 +roll=3.01991e-07 +joint=jointrgun +site=siteedz_rarm + +[jointrgun] +parent=jointrshoulder +Type=hingex +Object=thr_rgun.bgf +dzone=dz_rgun +Former Segment=segrgun +tranx=1.4 +trany=-1.038 +tranz=0 +pitch=3.38514e-10 +yaw=4.5657e-10 +roll=-3.96716e-09 +site=sitergunport +site=siteedz_rgun + +[sitergunport] +parent=jointrgun +tranx=0.233 +trany=-0.38 +tranz=-2.889 +pitch=-3.37917e-10 +yaw=-4.56569e-10 +roll=7.71412e-20 + +[siteedz_rgun] +parent=jointrgun +tranx=0.233 +trany=-0.5521 +tranz=-1.12673 +pitch=2.94645e-08 +yaw=-4.516e-08 +roll=-6.50951e-16 + +[siteedz_rarm] +parent=jointrshoulder +tranx=0.72898 +trany=-0.34702 +tranz=0 +pitch=3.38514e-10 +yaw=4.5657e-10 +roll=-3.96716e-09 + + + +[jointlshoulder] +parent=jointshakey +Type=hingex +Object=snd_larm.bgf +dzone=dz_larm +Former Segment=seglarm +tranx=-2.53993 +trany=2.98391 +tranz=0.827469 +pitch=2.68881e-41 +yaw=-5.08938e-18 +roll=-1.05662e-23 +joint=jointlgun +site=siteedz_larm + +[jointlgun] +parent=jointlshoulder +Type=hingex +Object=snd_lgun.bgf +dzone=dz_lgun +Former Segment=seglgun +tranx=-1.06438 +trany=-0.97388 +tranz=-0.00197399 +pitch=8.73111e-10 +yaw=-5.03068e-16 +roll=1.08806e-23 +site=sitelgunport +site=siteedz_lgun + +[sitelgunport] +parent=jointlgun +tranx=-0.35713 +trany=-0.43919 +tranz=-2.85113 +pitch=-8.72515e-10 +yaw=-1.49012e-08 +roll=2.98024e-08 + +[siteedz_lgun] +parent=jointlgun +tranx=-0.35713 +trany=-0.47223 +tranz=-1.37149 +pitch=-8.72515e-10 +yaw=-1.49012e-08 +roll=2.98024e-08 + +[siteedz_larm] +parent=jointlshoulder +tranx=-0.61169 +trany=-0.41769 +tranz=-0.00197399 +pitch=8.73103e-10 +yaw=-1.19696e-15 +roll=1.08802e-23 + diff --git a/CONTENT/BT3025/VIDEO/AUTODARM.SKL b/CONTENT/BT3025/VIDEO/AUTODARM.SKL new file mode 100644 index 0000000..1c0ba04 --- /dev/null +++ b/CONTENT/BT3025/VIDEO/AUTODARM.SKL @@ -0,0 +1,116 @@ +[jointrshoulder] +parent=jointshakey +Type=hingex +Object=thrdrarm.bgf +dzone=dz_rarm +Former Segment=segrarm +tranx=1.8 +trany=2.3 +tranz=0.519 +pitch=2.62699e-24 +yaw=1.73978e-17 +roll=3.01991e-07 +joint=jointrgun +site=siteedz_rarm + +[jointrgun] +parent=jointrshoulder +Type=hingex +Object=thrdrgun.bgf +dzone=dz_rgun +Former Segment=segrgun +tranx=1.4 +trany=-1.038 +tranz=0 +pitch=3.38514e-10 +yaw=4.5657e-10 +roll=-3.96716e-09 +site=sitergunport +site=siteedz_rgun + +[sitergunport] +parent=jointrgun +tranx=0.233 +trany=-0.38 +tranz=-2.889 +pitch=-3.37917e-10 +yaw=-4.56569e-10 +roll=7.71412e-20 + +[siteedz_rgun] +parent=jointrgun +tranx=0.233 +trany=-0.5521 +tranz=-1.12673 +pitch=2.94645e-08 +yaw=-4.516e-08 +roll=-6.50951e-16 + +[siteedz_rarm] +parent=jointrshoulder +tranx=0.72898 +trany=-0.34702 +tranz=0 +pitch=3.38514e-10 +yaw=4.5657e-10 +roll=-3.96716e-09 + + + +[jointlshoulder] +parent=jointshakey +Type=hingex +Object=snddlarm.bgf +dzone=dz_larm +Former Segment=seglarm +tranx=-2.53993 +trany=2.98391 +tranz=0.827469 +pitch=2.68881e-41 +yaw=-5.08938e-18 +roll=-1.05662e-23 +joint=jointlgun +site=siteedz_larm + +[jointlgun] +parent=jointlshoulder +Type=hingex +Object=snddlgun.bgf +dzone=dz_lgun +Former Segment=seglgun +tranx=-1.06438 +trany=-0.97388 +tranz=-0.00197399 +pitch=8.73111e-10 +yaw=-5.03068e-16 +roll=1.08806e-23 +site=sitelgunport +site=siteedz_lgun + +[sitelgunport] +parent=jointlgun +tranx=-0.35713 +trany=-0.43919 +tranz=-2.85113 +pitch=-8.72515e-10 +yaw=-1.49012e-08 +roll=2.98024e-08 + +[siteedz_lgun] +parent=jointlgun +tranx=-0.35713 +trany=-0.47223 +tranz=-1.37149 +pitch=-8.72515e-10 +yaw=-1.49012e-08 +roll=2.98024e-08 + +[siteedz_larm] +parent=jointlshoulder +tranx=-0.61169 +trany=-0.41769 +tranz=-0.00197399 +pitch=8.73103e-10 +yaw=-1.19696e-15 +roll=1.08802e-23 + diff --git a/CONTENT/BT3025/VIDEO/AVX2SKIN.DZM b/CONTENT/BT3025/VIDEO/AVX2SKIN.DZM new file mode 100644 index 0000000..18ce3d9 --- /dev/null +++ b/CONTENT/BT3025/VIDEO/AVX2SKIN.DZM @@ -0,0 +1,5 @@ +[dz_utorso] +material=avxskin:blakskn_dz_utorso_mtl +material=avxskin:avat1_dz_utorso_mtl +[dz_dtorso] +material=avxskin:gen2a_dz_dtorso_mtl diff --git a/CONTENT/BT3025/VIDEO/AVXSKIN.DZM b/CONTENT/BT3025/VIDEO/AVXSKIN.DZM new file mode 100644 index 0000000..18ce3d9 --- /dev/null +++ b/CONTENT/BT3025/VIDEO/AVXSKIN.DZM @@ -0,0 +1,5 @@ +[dz_utorso] +material=avxskin:blakskn_dz_utorso_mtl +material=avxskin:avat1_dz_utorso_mtl +[dz_dtorso] +material=avxskin:gen2a_dz_dtorso_mtl diff --git a/CONTENT/BT3025/VIDEO/BAXSKIN.DZM b/CONTENT/BT3025/VIDEO/BAXSKIN.DZM new file mode 100644 index 0000000..3c53969 --- /dev/null +++ b/CONTENT/BT3025/VIDEO/BAXSKIN.DZM @@ -0,0 +1,2 @@ +[dz_utorso] +material=vuxskin:blakskn_dz_utorso_mtl diff --git a/CONTENT/BT3025/VIDEO/BLXSKIN.DZM b/CONTENT/BT3025/VIDEO/BLXSKIN.DZM new file mode 100644 index 0000000..de94d09 --- /dev/null +++ b/CONTENT/BT3025/VIDEO/BLXSKIN.DZM @@ -0,0 +1,6 @@ +[dz_ltorso] +material=blxskin:blakskn_dz_ltorso_mtl +[dz_rtorso] +material=blxskin:blakskn_dz_rtorso_mtl +[dz_utorso] +material=blxskin:blakskn_dz_utorso_mtl diff --git a/CONTENT/BT3025/VIDEO/BUILD/APCS.BGF b/CONTENT/BT3025/VIDEO/BUILD/APCS.BGF new file mode 100644 index 0000000..84a2116 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/BUILD/APCS.BGF differ diff --git a/CONTENT/BT3025/VIDEO/BUILD/APCS.VGF b/CONTENT/BT3025/VIDEO/BUILD/APCS.VGF new file mode 100644 index 0000000..1c8f80c --- /dev/null +++ b/CONTENT/BT3025/VIDEO/BUILD/APCS.VGF @@ -0,0 +1,44 @@ +DIV-VIZ2 + +// file: apcs.vgf +// generated: Thu Mar 20 07:33:10 1997 +// from: Wavefront Object File "apcs.obj", and +// Material Library File "basev.mtl" +// by: obj2vgf (ver 0.29.01a) +// written: by Ken Olsen + +HEADER( + VERSION=02:05; + UNIT=m; + SCALE=1.0; + FILETYPE=GEOMETRY; +) +{ +} + +OBJECT( +) +{ + GEOGROUP + ( + F_MATERIAL="basev:shadow_mtl"; + ) + { + PMESH { + VERTEX_POOL { + { 1.0032, 0.1000, 4.8372} /* 0 */ + { 1.0398, 0.1000, 2.9344} /* 1 */ + {-1.1912, 0.1000, 2.9344} /* 2 */ + {-1.1180, 0.1000, 4.8372} /* 3 */ + { 2.4296, 0.1000, 3.5565} /* 4 */ + { 2.4296, 0.1000, -5.2623} /* 5 */ + {-2.3250, 0.1000, -5.2989} /* 6 */ + {-2.2884, 0.1000, 3.5565} /* 7 */ + } + CONNECTION_LIST (PCOUNT=4) { + {0, 1, 2, 3} /* */ + {4, 5, 6, 7} /* */ + } + } // End of pmesh + } // End of geogroup +} // End of object diff --git a/CONTENT/BT3025/VIDEO/BUILD/ARMRS.BGF b/CONTENT/BT3025/VIDEO/BUILD/ARMRS.BGF new file mode 100644 index 0000000..5600fc5 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/BUILD/ARMRS.BGF differ diff --git a/CONTENT/BT3025/VIDEO/BUILD/ARMRS.VGF b/CONTENT/BT3025/VIDEO/BUILD/ARMRS.VGF new file mode 100644 index 0000000..9d0a8db --- /dev/null +++ b/CONTENT/BT3025/VIDEO/BUILD/ARMRS.VGF @@ -0,0 +1,39 @@ +DIV-VIZ2 + +// file: armrs.vgf +// generated: Thu Mar 20 07:54:59 1997 +// from: Wavefront Object File "armrs.obj", and +// Material Library File "basev.mtl" +// by: obj2vgf (ver 0.29.01a) +// written: by Ken Olsen + +HEADER( + VERSION=02:05; + UNIT=m; + SCALE=1.0; + FILETYPE=GEOMETRY; +) +{ +} + +OBJECT( +) +{ + GEOGROUP + ( + F_MATERIAL="basev:shadow_mtl"; + ) + { + PMESH { + VERTEX_POOL { + { 1.3870, 0.2964, 2.2033} /* 0 */ + { 1.3630, 0.2964, -2.3542} /* 1 */ + {-1.3461, 0.2964, -2.2822} /* 2 */ + {-1.3221, 0.2964, 2.2273} /* 3 */ + } + CONNECTION_LIST (PCOUNT=4) { + {0, 1, 2, 3} /* */ + } + } // End of pmesh + } // End of geogroup +} // End of object diff --git a/CONTENT/BT3025/VIDEO/BUILD/BACKUP/GRASS.VMF b/CONTENT/BT3025/VIDEO/BUILD/BACKUP/GRASS.VMF new file mode 100644 index 0000000..a73f91d --- /dev/null +++ b/CONTENT/BT3025/VIDEO/BUILD/BACKUP/GRASS.VMF @@ -0,0 +1,82 @@ +DIV-VIZ2 + +// file: grass.vmf +// generated: Wed Mar 5 21:57:45 1997 +// from: Wavefront Object File "dummy", and +// Material Library File "grass.mtl" +// by: mtl2vmf (ver 0.27.00) +// written: by Ken Olsen + +HEADER( + VERSION=02:05; + FILETYPE=MATERIAL; +) +{ +} + +TEXTURE( + NAME=grassc_tex; +) +{ + MAP {"grassc"} + MAGNIFY {BILINEAR} // 6 bit bilinear + +} // End of texture + + RAMP(NAME=grass) +{ DATA { 0.05, 0.1, 0.05, 0.65, 0.45, 0.4 } +} // End of ramp + +TEXTURE( + NAME=tree9_tex; +) +{ + MAP {"tree"} + BITSLICE {8} // 16 bit color w/alpha (4,4,4,4) +} // End of texture + +TEXTURE( + NAME=bintA_tex; +) +{ + MAP {"bintA"} + MAGNIFY {BILINEAR} // 6 bit bilinear +} // End of texture + +MATERIAL( + NAME=grass_mtl; +) +{ + TEXTURE {"grassc_tex"} + AMBIENT {1, 1, 1} + DIFFUSE {1, 1, 1} + RAMP {grass} +} // End of material + +MATERIAL( + NAME=tree_mtl; +) +{ + TEXTURE {"tree9_tex"} + AMBIENT {1, 0.15, 0.131} + DIFFUSE {1, 0.15, 0.131} +} // End of material + +MATERIAL( + NAME=trunk_mtl; +) +{ + TEXTURE {"bintA_tex"} + AMBIENT {0.1898, 0.0885625, 0} + DIFFUSE {0.1898, 0.0641048, 0} +} // End of material + +MATERIAL( + NAME=leaves_mtl; +) +{ + TEXTURE {"tree9_tex"} + AMBIENT {1, 0.651,0.531} + DIFFUSE {1, 0.651,0.531} +} // End of material + \ No newline at end of file diff --git a/CONTENT/BT3025/VIDEO/BUILD/BLD08_LP.VGF b/CONTENT/BT3025/VIDEO/BUILD/BLD08_LP.VGF new file mode 100644 index 0000000..eb54e37 --- /dev/null +++ b/CONTENT/BT3025/VIDEO/BUILD/BLD08_LP.VGF @@ -0,0 +1,75 @@ +DIV-VIZ2 + +// file: bld08_lp.vgf +// generated: Fri Mar 21 18:17:00 1997 +// from: Wavefront Object File "bld08_lp.obj", and +// Material Library File "btfx.mtl" +// by: obj2vgf (ver 0.29.01a) +// written: by Ken Olsen + +HEADER( + VERSION=02:05; + UNIT=m; + SCALE=1.0; + FILETYPE=GEOMETRY; +) +{ +} + +OBJECT( +) +{ + GEOGROUP + ( + F_MATERIAL="btfx:litered_mtl"; + ) + { + SPHERELIST { + { -39.9902, 24.1508, -27.952, 0 } + { -57.8198, 24.1508, -27.952, 0 } + { -14.5801, 18.4199, -19.182, 0 } + { -41.7798, 18.4199, -19.182, 0 } + { 4.3999, 18.4199, -19.182, 0 } + { 77.7798, 18.4199, -19.182, 0 } + { 50.5801, 18.4199, -19.182, 0 } + { -57.8198, 24.1508, -27.952, 0 } + { -39.9902, 24.1508, -27.952, 0 } + { -86.9199, 18.4199, -18.6122, 0 } + { -41.7798, 18.4199, -40.182, 0 } + { -41.7798, 18.4199, -19.182, 0 } + { -14.5801, 18.4199, -40.182, 0 } + { -14.5801, 18.4199, -19.182, 0 } + { 4.3999, 18.4199, -40.182, 0 } + { 4.3999, 18.4199, -19.182, 0 } + { 31.6001, 18.4199, -40.182, 0 } + { 50.5801, 18.4199, -40.182, 0 } + { 77.7798, 18.4199, -40.182, 0 } + { 50.5801, 18.4199, -19.182, 0 } + { 77.7798, 18.4199, -19.182, 0 } + { -86.9199, 18.4199, 39.6481, 0 } + } // End of spherelist + } // End of geogroup + GEOGROUP + ( + F_MATERIAL="btfx:liteblu_mtl"; + ) + { + SPHERELIST { + { -83.3198, 14.2781, -18.7122, 0 } + { -63.3198, 14.2781, -18.7122, 0 } + { -38.1802, 14.2781, -40.282, 0 } + { -18.1802, 14.2781, -40.282, 0 } + { 8, 14.2781, -40.282, 0 } + { 28, 14.2781, -40.282, 0 } + { 54.1802, 14.2781, -40.282, 0 } + { 74.1802, 14.2781, -40.282, 0 } + { 71.31, 0.1, -50.18, 0 } + { 57.11, 0.1, -50.18, 0 } + { 25.11, 0.1, -50.18, 0 } + { 10.91, 0.1, -50.18, 0 } + { -21.09, 0.1, -50.18, 0 } + { -35.29, 0.1, -50.18, 0 } + } // End of spherelist + } // End of geogroup +} // End of object + \ No newline at end of file diff --git a/CONTENT/BT3025/VIDEO/BUILD/BUILDBAS.BAT b/CONTENT/BT3025/VIDEO/BUILD/BUILDBAS.BAT new file mode 100644 index 0000000..baa5b3b --- /dev/null +++ b/CONTENT/BT3025/VIDEO/BUILD/BUILDBAS.BAT @@ -0,0 +1,18 @@ +@echo off +rem +rem buildbas.bat +rem +echo. +echo PROCESSING TEXTURE FILES... +echo. +:bitslice +img2vtx.exe -b -o sbase.bsl -s 128,64 -m0 sbase1.tga -m1 sbase2.tga -m2 sbase3.tga -m3 sbase4.tga -m4 sbase5.tga -m5 sbase6.tga +if errorlevel 1 goto error +echo texture files processed. +goto end +:error +echo. +echo PROCESSING FAILED - SEE ABOVE +:end + + \ No newline at end of file diff --git a/CONTENT/BT3025/VIDEO/BUILD/BUILDGEN.BAT b/CONTENT/BT3025/VIDEO/BUILD/BUILDGEN.BAT new file mode 100644 index 0000000..f51ce8b --- /dev/null +++ b/CONTENT/BT3025/VIDEO/BUILD/BUILDGEN.BAT @@ -0,0 +1,18 @@ +@echo off +rem +rem buildgen.bat +rem +echo. +echo PROCESSING TEXTURE FILES... +echo. +:bitslice +img2vtx.exe -b -o gen.bsl -s 128,128 -m0 gen1.tga -m1 gen2.tga -m2 gen3.tga -m3 gen4.tga -m4 gen5.tga -m5 gen6.tga +if errorlevel 1 goto error +echo texture files processed. +goto end +:error +echo. +echo PROCESSING FAILED - SEE ABOVE +:end + + \ No newline at end of file diff --git a/CONTENT/BT3025/VIDEO/BUILD/BUILDLGO.BAT b/CONTENT/BT3025/VIDEO/BUILD/BUILDLGO.BAT new file mode 100644 index 0000000..611b3ba --- /dev/null +++ b/CONTENT/BT3025/VIDEO/BUILD/BUILDLGO.BAT @@ -0,0 +1,18 @@ +@echo off +rem +rem buildlgo.bat +rem +echo. +echo PROCESSING TEXTURE FILES... +echo. +:bitslice +img2vtx.exe -b -o lgo.bsl -s 128,64 -m0 lgo1.tga -m1 lgo2.tga -m2 lgo3.tga -m3 lgo4.tga -m4 lgo5.tga -m5 lgo6.tga +if errorlevel 1 goto error +echo texture files processed. +goto end +:error +echo. +echo PROCESSING FAILED - SEE ABOVE +:end + + \ No newline at end of file diff --git a/CONTENT/BT3025/VIDEO/BUILD/BUILDTEX.BAT b/CONTENT/BT3025/VIDEO/BUILD/BUILDTEX.BAT new file mode 100644 index 0000000..9c4aa33 --- /dev/null +++ b/CONTENT/BT3025/VIDEO/BUILD/BUILDTEX.BAT @@ -0,0 +1,20 @@ +@echo off +rem +rem buildtex.bat +rem +echo. +echo PROCESSING TEXTURE FILES... +echo. +:bitslice +img2vtx.exe -b -o basev.bsl -s 128,64 -m0 basev1.tga -m1 basev2.tga -m2 basev3.tga -m3 basev4.tga -m4 basev5.tga -m5 basev6.tga +if errorlevel 1 goto error +img2vtx.exe -b -o bexp.bsl -s 128,64 -m0 bexp1.tga -m1 bexp2.tga -m8 bexp99.tga +if errorlevel 1 goto error +echo texture files processed. +goto end +:error +echo. +echo PROCESSING FAILED - SEE ABOVE +:end + + \ No newline at end of file diff --git a/CONTENT/BT3025/VIDEO/BUILD/BULLS.BGF b/CONTENT/BT3025/VIDEO/BUILD/BULLS.BGF new file mode 100644 index 0000000..78857ac Binary files /dev/null and b/CONTENT/BT3025/VIDEO/BUILD/BULLS.BGF differ diff --git a/CONTENT/BT3025/VIDEO/BUILD/BULLS.VGF b/CONTENT/BT3025/VIDEO/BUILD/BULLS.VGF new file mode 100644 index 0000000..aed270f --- /dev/null +++ b/CONTENT/BT3025/VIDEO/BUILD/BULLS.VGF @@ -0,0 +1,39 @@ +DIV-VIZ2 + +// file: bulls.vgf +// generated: Thu Mar 20 07:33:10 1997 +// from: Wavefront Object File "bulls.obj", and +// Material Library File "basev.mtl" +// by: obj2vgf (ver 0.29.01a) +// written: by Ken Olsen + +HEADER( + VERSION=02:05; + UNIT=m; + SCALE=1.0; + FILETYPE=GEOMETRY; +) +{ +} + +OBJECT( +) +{ + GEOGROUP + ( + F_MATERIAL="basev:shadow_mtl"; + ) + { + PMESH { + VERTEX_POOL { + { 2.9234, 0.1000, 5.3819} /* 0 */ + { 2.9775, 0.1000, -3.0578} /* 1 */ + {-3.0246, 0.1000, -3.1119} /* 2 */ + {-3.0787, 0.1000, 5.3278} /* 3 */ + } + CONNECTION_LIST (PCOUNT=4) { + {0, 1, 2, 3} /* */ + } + } // End of pmesh + } // End of geogroup +} // End of object diff --git a/CONTENT/BT3025/VIDEO/BUILD/CALIOPE.BMF b/CONTENT/BT3025/VIDEO/BUILD/CALIOPE.BMF new file mode 100644 index 0000000..d32aebb Binary files /dev/null and b/CONTENT/BT3025/VIDEO/BUILD/CALIOPE.BMF differ diff --git a/CONTENT/BT3025/VIDEO/BUILD/CALP_LP.VGF b/CONTENT/BT3025/VIDEO/BUILD/CALP_LP.VGF new file mode 100644 index 0000000..2758110 --- /dev/null +++ b/CONTENT/BT3025/VIDEO/BUILD/CALP_LP.VGF @@ -0,0 +1,49 @@ +DIV-VIZ2 + +// file: calp_lp.vgf +// generated: Fri Mar 21 18:17:04 1997 +// from: Wavefront Object File "calp_lp.obj", and +// Material Library File "btfx.mtl" +// by: obj2vgf (ver 0.29.01a) +// written: by Ken Olsen + +HEADER( + VERSION=02:05; + UNIT=m; + SCALE=1.0; + FILETYPE=GEOMETRY; +) +{ +} + +OBJECT( +) +{ + GEOGROUP + ( + F_MATERIAL="btfx:litered_mtl"; + ) + { + SPHERELIST { + { -10.2, 17.8765, 8.1149, 0 } + { -10.2, 20.267, -9.29333, 0 } + { 10.2, 20.267, -9.29333, 0 } + { 10.2, 17.8765, 8.1149, 0 } + { -10.2, 20.2, -9.3, 0 } + { 10.2, 20.2, -9.3, 0 } + } // End of spherelist + } // End of geogroup + GEOGROUP + ( + F_MATERIAL="btfx:liteblu_mtl"; + ) + { + SPHERELIST { + { 7.65, 8.1, -1.4, 0 } + { 7.65, 10.1, -1.4, 0 } + { 7.65, 10.1, -0.4, 0 } + { 7.65, 8.1, -0.4, 0 } + } // End of spherelist + } // End of geogroup +} // End of object + \ No newline at end of file diff --git a/CONTENT/BT3025/VIDEO/BUILD/COMS.BGF b/CONTENT/BT3025/VIDEO/BUILD/COMS.BGF new file mode 100644 index 0000000..f005a0f Binary files /dev/null and b/CONTENT/BT3025/VIDEO/BUILD/COMS.BGF differ diff --git a/CONTENT/BT3025/VIDEO/BUILD/COMS.VGF b/CONTENT/BT3025/VIDEO/BUILD/COMS.VGF new file mode 100644 index 0000000..a37cc56 --- /dev/null +++ b/CONTENT/BT3025/VIDEO/BUILD/COMS.VGF @@ -0,0 +1,44 @@ +DIV-VIZ2 + +// file: coms.vgf +// generated: Thu Mar 20 07:59:44 1997 +// from: Wavefront Object File "coms.obj", and +// Material Library File "basev.mtl" +// by: obj2vgf (ver 0.29.01a) +// written: by Ken Olsen + +HEADER( + VERSION=02:05; + UNIT=m; + SCALE=1.0; + FILETYPE=GEOMETRY; +) +{ +} + +OBJECT( +) +{ + GEOGROUP + ( + F_MATERIAL="basev:shadow_mtl"; + ) + { + PMESH { + VERTEX_POOL { + { 1.1689, 0.4351, -1.9148} /* 0 */ + { 1.1689, 0.4351, -4.4108} /* 1 */ + {-0.9870, 0.4351, -4.4108} /* 2 */ + {-0.9870, 0.4351, -1.9148} /* 3 */ + { 1.8465, 0.4351, 4.9569} /* 4 */ + { 1.8465, 0.4351, -2.4078} /* 5 */ + {-1.6030, 0.4351, -2.4386} /* 6 */ + {-1.5106, 0.4351, 4.9569} /* 7 */ + } + CONNECTION_LIST (PCOUNT=4) { + {0, 1, 2, 3} /* */ + {4, 5, 6, 7} /* */ + } + } // End of pmesh + } // End of geogroup +} // End of object diff --git a/CONTENT/BT3025/VIDEO/BUILD/COOLS.BGF b/CONTENT/BT3025/VIDEO/BUILD/COOLS.BGF new file mode 100644 index 0000000..b666051 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/BUILD/COOLS.BGF differ diff --git a/CONTENT/BT3025/VIDEO/BUILD/COOLS.VGF b/CONTENT/BT3025/VIDEO/BUILD/COOLS.VGF new file mode 100644 index 0000000..3dacd07 --- /dev/null +++ b/CONTENT/BT3025/VIDEO/BUILD/COOLS.VGF @@ -0,0 +1,39 @@ +DIV-VIZ2 + +// file: cools.vgf +// generated: Thu Mar 20 07:33:10 1997 +// from: Wavefront Object File "cools.obj", and +// Material Library File "basev.mtl" +// by: obj2vgf (ver 0.29.01a) +// written: by Ken Olsen + +HEADER( + VERSION=02:05; + UNIT=m; + SCALE=1.0; + FILETYPE=GEOMETRY; +) +{ +} + +OBJECT( +) +{ + GEOGROUP + ( + F_MATERIAL="basev:shadow_mtl"; + ) + { + PMESH { + VERTEX_POOL { + { 2.6987, 0.1000, 7.6439} /* 0 */ + { 2.6347, 0.1000, -6.6461} /* 1 */ + {-2.5532, 0.1000, -6.7742} /* 2 */ + {-2.4891, 0.1000, 7.5158} /* 3 */ + } + CONNECTION_LIST (PCOUNT=4) { + {0, 1, 2, 3} /* */ + } + } // End of pmesh + } // End of geogroup +} // End of object diff --git a/CONTENT/BT3025/VIDEO/BUILD/DBASE.BMF b/CONTENT/BT3025/VIDEO/BUILD/DBASE.BMF new file mode 100644 index 0000000..09ea8eb Binary files /dev/null and b/CONTENT/BT3025/VIDEO/BUILD/DBASE.BMF differ diff --git a/CONTENT/BT3025/VIDEO/BUILD/DCLOUDS.BGF b/CONTENT/BT3025/VIDEO/BUILD/DCLOUDS.BGF new file mode 100644 index 0000000..7726609 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/BUILD/DCLOUDS.BGF differ diff --git a/CONTENT/BT3025/VIDEO/BUILD/DISH_LP.VGF b/CONTENT/BT3025/VIDEO/BUILD/DISH_LP.VGF new file mode 100644 index 0000000..41808a7 --- /dev/null +++ b/CONTENT/BT3025/VIDEO/BUILD/DISH_LP.VGF @@ -0,0 +1,36 @@ +DIV-VIZ2 + +// file: dish_lp.vgf +// generated: Fri Mar 21 18:17:07 1997 +// from: Wavefront Object File "dish_lp.obj", and +// Material Library File "btfx.mtl" +// by: obj2vgf (ver 0.29.01a) +// written: by Ken Olsen + +HEADER( + VERSION=02:05; + UNIT=m; + SCALE=1.0; + FILETYPE=GEOMETRY; +) +{ +} + +OBJECT( +) +{ + GEOGROUP + ( + F_MATERIAL="btfx:litered_mtl"; + ) + { + SPHERELIST { + { 0, 0.769873, 4.1, 0 } + { 5, 5.1, 1.6, 0 } + { -5, 5.1, 1.6, 0 } + { 0, 9.43013, -0.9, 0 } + { -0.125, 7.14575, 4.89335, 0 } + } // End of spherelist + } // End of geogroup +} // End of object + \ No newline at end of file diff --git a/CONTENT/BT3025/VIDEO/BUILD/DIVISION.SAV/APCS.BGF b/CONTENT/BT3025/VIDEO/BUILD/DIVISION.SAV/APCS.BGF new file mode 100644 index 0000000..c264aae Binary files /dev/null and b/CONTENT/BT3025/VIDEO/BUILD/DIVISION.SAV/APCS.BGF differ diff --git a/CONTENT/BT3025/VIDEO/BUILD/DIVISION.SAV/ARMRS.BGF b/CONTENT/BT3025/VIDEO/BUILD/DIVISION.SAV/ARMRS.BGF new file mode 100644 index 0000000..36f7619 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/BUILD/DIVISION.SAV/ARMRS.BGF differ diff --git a/CONTENT/BT3025/VIDEO/BUILD/DIVISION.SAV/BTRAVWIN.BMF b/CONTENT/BT3025/VIDEO/BUILD/DIVISION.SAV/BTRAVWIN.BMF new file mode 100644 index 0000000..cd16b61 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/BUILD/DIVISION.SAV/BTRAVWIN.BMF differ diff --git a/CONTENT/BT3025/VIDEO/BUILD/DIVISION.SAV/BULLS.BGF b/CONTENT/BT3025/VIDEO/BUILD/DIVISION.SAV/BULLS.BGF new file mode 100644 index 0000000..9b9eaed Binary files /dev/null and b/CONTENT/BT3025/VIDEO/BUILD/DIVISION.SAV/BULLS.BGF differ diff --git a/CONTENT/BT3025/VIDEO/BUILD/DIVISION.SAV/CALIOPE.BMF b/CONTENT/BT3025/VIDEO/BUILD/DIVISION.SAV/CALIOPE.BMF new file mode 100644 index 0000000..658e625 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/BUILD/DIVISION.SAV/CALIOPE.BMF differ diff --git a/CONTENT/BT3025/VIDEO/BUILD/DIVISION.SAV/COMS.BGF b/CONTENT/BT3025/VIDEO/BUILD/DIVISION.SAV/COMS.BGF new file mode 100644 index 0000000..7030d85 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/BUILD/DIVISION.SAV/COMS.BGF differ diff --git a/CONTENT/BT3025/VIDEO/BUILD/DIVISION.SAV/COOLS.BGF b/CONTENT/BT3025/VIDEO/BUILD/DIVISION.SAV/COOLS.BGF new file mode 100644 index 0000000..6c5b0b2 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/BUILD/DIVISION.SAV/COOLS.BGF differ diff --git a/CONTENT/BT3025/VIDEO/BUILD/DIVISION.SAV/DCLOUDS.BGF b/CONTENT/BT3025/VIDEO/BUILD/DIVISION.SAV/DCLOUDS.BGF new file mode 100644 index 0000000..b3d289e Binary files /dev/null and b/CONTENT/BT3025/VIDEO/BUILD/DIVISION.SAV/DCLOUDS.BGF differ diff --git a/CONTENT/BT3025/VIDEO/BUILD/DIVISION.SAV/DOZERS.BGF b/CONTENT/BT3025/VIDEO/BUILD/DIVISION.SAV/DOZERS.BGF new file mode 100644 index 0000000..36ee533 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/BUILD/DIVISION.SAV/DOZERS.BGF differ diff --git a/CONTENT/BT3025/VIDEO/BUILD/DIVISION.SAV/GRASS.BMF b/CONTENT/BT3025/VIDEO/BUILD/DIVISION.SAV/GRASS.BMF new file mode 100644 index 0000000..1fc3828 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/BUILD/DIVISION.SAV/GRASS.BMF differ diff --git a/CONTENT/BT3025/VIDEO/BUILD/DIVISION.SAV/HARASS.BGF b/CONTENT/BT3025/VIDEO/BUILD/DIVISION.SAV/HARASS.BGF new file mode 100644 index 0000000..d6f3a3c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/BUILD/DIVISION.SAV/HARASS.BGF differ diff --git a/CONTENT/BT3025/VIDEO/BUILD/DIVISION.SAV/HUMMS.BGF b/CONTENT/BT3025/VIDEO/BUILD/DIVISION.SAV/HUMMS.BGF new file mode 100644 index 0000000..5061928 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/BUILD/DIVISION.SAV/HUMMS.BGF differ diff --git a/CONTENT/BT3025/VIDEO/BUILD/DIVISION.SAV/LRMS.BGF b/CONTENT/BT3025/VIDEO/BUILD/DIVISION.SAV/LRMS.BGF new file mode 100644 index 0000000..0689e60 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/BUILD/DIVISION.SAV/LRMS.BGF differ diff --git a/CONTENT/BT3025/VIDEO/BUILD/DIVISION.SAV/MECHMOVS.BGF b/CONTENT/BT3025/VIDEO/BUILD/DIVISION.SAV/MECHMOVS.BGF new file mode 100644 index 0000000..8feb041 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/BUILD/DIVISION.SAV/MECHMOVS.BGF differ diff --git a/CONTENT/BT3025/VIDEO/BUILD/DIVISION.SAV/RAVINES.BMF b/CONTENT/BT3025/VIDEO/BUILD/DIVISION.SAV/RAVINES.BMF new file mode 100644 index 0000000..7dfa566 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/BUILD/DIVISION.SAV/RAVINES.BMF differ diff --git a/CONTENT/BT3025/VIDEO/BUILD/DIVISION.SAV/ROMMELS.BGF b/CONTENT/BT3025/VIDEO/BUILD/DIVISION.SAV/ROMMELS.BGF new file mode 100644 index 0000000..2d1ba98 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/BUILD/DIVISION.SAV/ROMMELS.BGF differ diff --git a/CONTENT/BT3025/VIDEO/BUILD/DIVISION.SAV/SEMIRIGS.BGF b/CONTENT/BT3025/VIDEO/BUILD/DIVISION.SAV/SEMIRIGS.BGF new file mode 100644 index 0000000..cce9b04 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/BUILD/DIVISION.SAV/SEMIRIGS.BGF differ diff --git a/CONTENT/BT3025/VIDEO/BUILD/DIVISION.SAV/SEMIS.BGF b/CONTENT/BT3025/VIDEO/BUILD/DIVISION.SAV/SEMIS.BGF new file mode 100644 index 0000000..d5cd779 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/BUILD/DIVISION.SAV/SEMIS.BGF differ diff --git a/CONTENT/BT3025/VIDEO/BUILD/DIVISION.SAV/SRMS.BGF b/CONTENT/BT3025/VIDEO/BUILD/DIVISION.SAV/SRMS.BGF new file mode 100644 index 0000000..36a833c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/BUILD/DIVISION.SAV/SRMS.BGF differ diff --git a/CONTENT/BT3025/VIDEO/BUILD/DIVISION.SAV/STRIKERS.BGF b/CONTENT/BT3025/VIDEO/BUILD/DIVISION.SAV/STRIKERS.BGF new file mode 100644 index 0000000..e87605f Binary files /dev/null and b/CONTENT/BT3025/VIDEO/BUILD/DIVISION.SAV/STRIKERS.BGF differ diff --git a/CONTENT/BT3025/VIDEO/BUILD/DIVISION.SAV/SWIFTS.BGF b/CONTENT/BT3025/VIDEO/BUILD/DIVISION.SAV/SWIFTS.BGF new file mode 100644 index 0000000..7b1f772 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/BUILD/DIVISION.SAV/SWIFTS.BGF differ diff --git a/CONTENT/BT3025/VIDEO/BUILD/DOZERS.BGF b/CONTENT/BT3025/VIDEO/BUILD/DOZERS.BGF new file mode 100644 index 0000000..23e636f Binary files /dev/null and b/CONTENT/BT3025/VIDEO/BUILD/DOZERS.BGF differ diff --git a/CONTENT/BT3025/VIDEO/BUILD/DOZERS.VGF b/CONTENT/BT3025/VIDEO/BUILD/DOZERS.VGF new file mode 100644 index 0000000..0516e70 --- /dev/null +++ b/CONTENT/BT3025/VIDEO/BUILD/DOZERS.VGF @@ -0,0 +1,44 @@ +DIV-VIZ2 + +// file: dozers.vgf +// generated: Thu Mar 20 07:33:10 1997 +// from: Wavefront Object File "dozers.obj", and +// Material Library File "basev.mtl" +// by: obj2vgf (ver 0.29.01a) +// written: by Ken Olsen + +HEADER( + VERSION=02:05; + UNIT=m; + SCALE=1.0; + FILETYPE=GEOMETRY; +) +{ +} + +OBJECT( +) +{ + GEOGROUP + ( + F_MATERIAL="basev:shadow_mtl"; + ) + { + PMESH { + VERTEX_POOL { + {-0.1257, 0.1000, -3.0759} /* 0 */ + {-0.0921, 0.1000, -4.6559} /* 1 */ + {-0.5624, 0.1000, -4.6559} /* 2 */ + {-0.6296, 0.1000, -3.1096} /* 3 */ + { 2.1255, 0.1000, 4.7566} /* 4 */ + { 2.1255, 0.1000, -3.6138} /* 5 */ + {-2.1416, 0.1000, -3.6810} /* 6 */ + {-2.2088, 0.1000, 4.8238} /* 7 */ + } + CONNECTION_LIST (PCOUNT=4) { + {0, 1, 2, 3} /* */ + {4, 5, 6, 7} /* */ + } + } // End of pmesh + } // End of geogroup +} // End of object diff --git a/CONTENT/BT3025/VIDEO/BUILD/EDITBACK/BLD08_LP.VGF b/CONTENT/BT3025/VIDEO/BUILD/EDITBACK/BLD08_LP.VGF new file mode 100644 index 0000000..21ed75d --- /dev/null +++ b/CONTENT/BT3025/VIDEO/BUILD/EDITBACK/BLD08_LP.VGF @@ -0,0 +1,74 @@ +DIV-VIZ2 + +// file: bld08_lp.vgf +// generated: Fri Mar 21 18:17:00 1997 +// from: Wavefront Object File "bld08_lp.obj", and +// Material Library File "btfx.mtl" +// by: obj2vgf (ver 0.29.01a) +// written: by Ken Olsen + +HEADER( + VERSION=02:05; + UNIT=m; + SCALE=1.0; + FILETYPE=GEOMETRY; +) +{ +} + +OBJECT( +) +{ + GEOGROUP + ( + F_MATERIAL="btfx:britered_mtl"; + ) + { + SPHERELIST { + { -39.9902, 24.1508, -27.952, 0 } + { -57.8198, 24.1508, -27.952, 0 } + { -14.5801, 18.4199, -19.182, 0 } + { -41.7798, 18.4199, -19.182, 0 } + { 4.3999, 18.4199, -19.182, 0 } + { 77.7798, 18.4199, -19.182, 0 } + { 50.5801, 18.4199, -19.182, 0 } + { -57.8198, 24.1508, -27.952, 0 } + { -39.9902, 24.1508, -27.952, 0 } + { -86.9199, 18.4199, -18.6122, 0 } + { -41.7798, 18.4199, -40.182, 0 } + { -41.7798, 18.4199, -19.182, 0 } + { -14.5801, 18.4199, -40.182, 0 } + { -14.5801, 18.4199, -19.182, 0 } + { 4.3999, 18.4199, -40.182, 0 } + { 4.3999, 18.4199, -19.182, 0 } + { 31.6001, 18.4199, -40.182, 0 } + { 50.5801, 18.4199, -40.182, 0 } + { 77.7798, 18.4199, -40.182, 0 } + { 50.5801, 18.4199, -19.182, 0 } + { 77.7798, 18.4199, -19.182, 0 } + { -86.9199, 18.4199, 39.6481, 0 } + } // End of spherelist + } // End of geogroup + GEOGROUP + ( + F_MATERIAL="btfx:briteblu_mtl"; + ) + { + SPHERELIST { + { -83.3198, 14.2781, -18.7122, 0 } + { -63.3198, 14.2781, -18.7122, 0 } + { -38.1802, 14.2781, -40.282, 0 } + { -18.1802, 14.2781, -40.282, 0 } + { 8, 14.2781, -40.282, 0 } + { 28, 14.2781, -40.282, 0 } + { 54.1802, 14.2781, -40.282, 0 } + { 74.1802, 14.2781, -40.282, 0 } + { 71.31, 0.1, -50.18, 0 } + { 57.11, 0.1, -50.18, 0 } + { 25.11, 0.1, -50.18, 0 } + { 10.91, 0.1, -50.18, 0 } + { -21.09, 0.1, -50.18, 0 } + { -35.29, 0.1, -50.18, 0 } + } // End of spherelist + } // End of geogroup +} // End of object diff --git a/CONTENT/BT3025/VIDEO/BUILD/EDITBACK/BTRAVWIN.VMF b/CONTENT/BT3025/VIDEO/BUILD/EDITBACK/BTRAVWIN.VMF new file mode 100644 index 0000000..4c00f7a --- /dev/null +++ b/CONTENT/BT3025/VIDEO/BUILD/EDITBACK/BTRAVWIN.VMF @@ -0,0 +1,154 @@ +DIV-VIZ2 + +// file: btravwin.vmf +// generated: Tue Mar 4 07:56:49 1997 +// from: Wavefront Object File "dummy", and +// Material Library File "btravwin.mtl" +// by: mtl2vmf (ver 0.27.00) +// written: by Ken Olsen + +HEADER( + VERSION=02:05; + FILETYPE=MATERIAL; +) +{ +} + +TEXTURE( + NAME=bintA_tex; +) +{ + MAP {"bintA"} + MAGNIFY {BILINEAR} // 6 bit bilinear +} // End of texture + +TEXTURE( + NAME=bmap1_tex; +) +{ + MAP {"bmap"} + BITSLICE {0} // 4 bit mono A +} // End of texture + +TEXTURE( + NAME=bmap2_tex; +) +{ + MAP {"bmap"} + BITSLICE {1} // 4 bit mono B +} // End of texture + +TEXTURE( + NAME=bmap3_tex; +) +{ + MAP {"bmap"} + BITSLICE {2} // 4 bit mono C +} // End of texture + +TEXTURE( + NAME=bmap4_tex; +) +{ + MAP {"bmap"} + BITSLICE {3} // 4 bit mono D +} // End of texture + +TEXTURE( + NAME=bdet1_tex; +) +{ + MAP {"bdet"} + BITSLICE {0} // 4 bit mono A +} // End of texture + +MATERIAL( + NAME=humans_mtl; +) +{ + TEXTURE {"bintA_tex"} + AMBIENT {0.4245, 0.284295, 0.3413} + DIFFUSE {0.4245, 0.260868, 0.3413} +} // End of material + +MATERIAL( + NAME=name1_mtl; +) +{ + TEXTURE {"bmap1_tex"} + AMBIENT {0, 0.594108, 0.0523} + DIFFUSE {0, 0.573328, 0.0523} +} // End of material + +MATERIAL( + NAME=name2_mtl; +) +{ + TEXTURE {"bmap1_tex"} + AMBIENT {0.6408, 0, 0} + DIFFUSE {0.6408, 0, 0} +} // End of material + +MATERIAL( + NAME=name3_mtl; +) +{ + TEXTURE {"bmap2_tex"} + AMBIENT {0.6408, 0, 0} + DIFFUSE {0.6408, 0, 0} +} // End of material + +MATERIAL( + NAME=name4_mtl; +) +{ + TEXTURE {"bmap2_tex"} + AMBIENT {0.6408, 0, 0} + DIFFUSE {0.6408, 0, 0} +} // End of material + +MATERIAL( + NAME=name5_mtl; +) +{ + TEXTURE {"bmap3_tex"} + AMBIENT {0.6408, 0, 0} + DIFFUSE {0.6408, 0, 0} +} // End of material + +MATERIAL( + NAME=name6_mtl; +) +{ + TEXTURE {"bmap3_tex"} + AMBIENT {0.6408, 0, 0} + DIFFUSE {0.6408, 0, 0} +} // End of material + +MATERIAL( + NAME=name7_mtl; +) +{ + TEXTURE {"bmap4_tex"} + AMBIENT {0.6408, 0, 0} + DIFFUSE {0.6408, 0, 0} +} // End of material + +MATERIAL( + NAME=name8_mtl; +) +{ + TEXTURE {"bmap4_tex"} + AMBIENT {0.6408, 0, 0} + DIFFUSE {0.6408, 0, 0} +} // End of material + +MATERIAL( + NAME=standbrace_mtl; +) +{ + TEXTURE {"bdet1_tex"} + AMBIENT {0.1994, 0.42483, 0.5551} + DIFFUSE {0.1994, 0.400677, 0.5551} +} // End of material + \ No newline at end of file diff --git a/CONTENT/BT3025/VIDEO/BUILD/EDITBACK/BUILDBAS.BAT b/CONTENT/BT3025/VIDEO/BUILD/EDITBACK/BUILDBAS.BAT new file mode 100644 index 0000000..611b3ba --- /dev/null +++ b/CONTENT/BT3025/VIDEO/BUILD/EDITBACK/BUILDBAS.BAT @@ -0,0 +1,18 @@ +@echo off +rem +rem buildlgo.bat +rem +echo. +echo PROCESSING TEXTURE FILES... +echo. +:bitslice +img2vtx.exe -b -o lgo.bsl -s 128,64 -m0 lgo1.tga -m1 lgo2.tga -m2 lgo3.tga -m3 lgo4.tga -m4 lgo5.tga -m5 lgo6.tga +if errorlevel 1 goto error +echo texture files processed. +goto end +:error +echo. +echo PROCESSING FAILED - SEE ABOVE +:end + + \ No newline at end of file diff --git a/CONTENT/BT3025/VIDEO/BUILD/EDITBACK/BUILDGEN.BAT b/CONTENT/BT3025/VIDEO/BUILD/EDITBACK/BUILDGEN.BAT new file mode 100644 index 0000000..611b3ba --- /dev/null +++ b/CONTENT/BT3025/VIDEO/BUILD/EDITBACK/BUILDGEN.BAT @@ -0,0 +1,18 @@ +@echo off +rem +rem buildlgo.bat +rem +echo. +echo PROCESSING TEXTURE FILES... +echo. +:bitslice +img2vtx.exe -b -o lgo.bsl -s 128,64 -m0 lgo1.tga -m1 lgo2.tga -m2 lgo3.tga -m3 lgo4.tga -m4 lgo5.tga -m5 lgo6.tga +if errorlevel 1 goto error +echo texture files processed. +goto end +:error +echo. +echo PROCESSING FAILED - SEE ABOVE +:end + + \ No newline at end of file diff --git a/CONTENT/BT3025/VIDEO/BUILD/EDITBACK/BUILDLGO.BAT b/CONTENT/BT3025/VIDEO/BUILD/EDITBACK/BUILDLGO.BAT new file mode 100644 index 0000000..3a21a67 --- /dev/null +++ b/CONTENT/BT3025/VIDEO/BUILD/EDITBACK/BUILDLGO.BAT @@ -0,0 +1,19 @@ +@echo off +rem +rem buildtex.bat +rem +echo. +echo PROCESSING TEXTURE FILES... +echo. +:bitslice +img2vtx.exe -b -o basev.bsl -s 128,64 -m0 basev1.tga -m1 basev2.tga -m2 basev3.tga -m3 basev4.tga -m4 basev5.tga -m5 basev6.tga +if errorlevel 1 goto error +img2vtx.exe -b -o bexp.bsl -s 128,128 -m0 bexp1.tga -m1 bexp2.tga -m8 bexp9.tga +if errorlevel 1 goto error +echo texture files processed. +goto end +:error +echo. +echo PROCESSING FAILED - SEE ABOVE +:end + diff --git a/CONTENT/BT3025/VIDEO/BUILD/EDITBACK/BUILDTEX.BAT b/CONTENT/BT3025/VIDEO/BUILD/EDITBACK/BUILDTEX.BAT new file mode 100644 index 0000000..f04ac2b --- /dev/null +++ b/CONTENT/BT3025/VIDEO/BUILD/EDITBACK/BUILDTEX.BAT @@ -0,0 +1,20 @@ +@echo off +rem +rem buildtex.bat +rem +echo. +echo PROCESSING TEXTURE FILES... +echo. +:bitslice +img2vtx.exe -b -o basev.bsl -s 128,64 -m0 basev1.tga -m1 basev2.tga -m2 basev3.tga -m3 basev4.tga -m4 basev5.tga -m5 basev6.tga +if errorlevel 1 goto error +img2vtx.exe -b -o bexp.bsl -s 128,128 -m0 bexp1.tga -m1 bexp2.tga -m8 bexp99.tga +if errorlevel 1 goto error +echo texture files processed. +goto end +:error +echo. +echo PROCESSING FAILED - SEE ABOVE +:end + + \ No newline at end of file diff --git a/CONTENT/BT3025/VIDEO/BUILD/EDITBACK/CALP_LP.VGF b/CONTENT/BT3025/VIDEO/BUILD/EDITBACK/CALP_LP.VGF new file mode 100644 index 0000000..0cc7c0e --- /dev/null +++ b/CONTENT/BT3025/VIDEO/BUILD/EDITBACK/CALP_LP.VGF @@ -0,0 +1,48 @@ +DIV-VIZ2 + +// file: calp_lp.vgf +// generated: Fri Mar 21 18:17:04 1997 +// from: Wavefront Object File "calp_lp.obj", and +// Material Library File "btfx.mtl" +// by: obj2vgf (ver 0.29.01a) +// written: by Ken Olsen + +HEADER( + VERSION=02:05; + UNIT=m; + SCALE=1.0; + FILETYPE=GEOMETRY; +) +{ +} + +OBJECT( +) +{ + GEOGROUP + ( + F_MATERIAL="btfx:britered_mtl"; + ) + { + SPHERELIST { + { -10.2, 17.8765, 8.1149, 0 } + { -10.2, 20.267, -9.29333, 0 } + { 10.2, 20.267, -9.29333, 0 } + { 10.2, 17.8765, 8.1149, 0 } + { -10.2, 20.2, -9.3, 0 } + { 10.2, 20.2, -9.3, 0 } + } // End of spherelist + } // End of geogroup + GEOGROUP + ( + F_MATERIAL="btfx:briteblu_mtl"; + ) + { + SPHERELIST { + { 7.65, 8.1, -1.4, 0 } + { 7.65, 10.1, -1.4, 0 } + { 7.65, 10.1, -0.4, 0 } + { 7.65, 8.1, -0.4, 0 } + } // End of spherelist + } // End of geogroup +} // End of object diff --git a/CONTENT/BT3025/VIDEO/BUILD/EDITBACK/DISH_LP.VGF b/CONTENT/BT3025/VIDEO/BUILD/EDITBACK/DISH_LP.VGF new file mode 100644 index 0000000..0558e0c --- /dev/null +++ b/CONTENT/BT3025/VIDEO/BUILD/EDITBACK/DISH_LP.VGF @@ -0,0 +1,35 @@ +DIV-VIZ2 + +// file: dish_lp.vgf +// generated: Fri Mar 21 18:17:07 1997 +// from: Wavefront Object File "dish_lp.obj", and +// Material Library File "btfx.mtl" +// by: obj2vgf (ver 0.29.01a) +// written: by Ken Olsen + +HEADER( + VERSION=02:05; + UNIT=m; + SCALE=1.0; + FILETYPE=GEOMETRY; +) +{ +} + +OBJECT( +) +{ + GEOGROUP + ( + F_MATERIAL="btfx:britered_mtl"; + ) + { + SPHERELIST { + { 0, 0.769873, 4.1, 0 } + { 5, 5.1, 1.6, 0 } + { -5, 5.1, 1.6, 0 } + { 0, 9.43013, -0.9, 0 } + { -0.125, 7.14575, 4.89335, 0 } + } // End of spherelist + } // End of geogroup +} // End of object diff --git a/CONTENT/BT3025/VIDEO/BUILD/EDITBACK/GRASS.VMF b/CONTENT/BT3025/VIDEO/BUILD/EDITBACK/GRASS.VMF new file mode 100644 index 0000000..ee6ce33 --- /dev/null +++ b/CONTENT/BT3025/VIDEO/BUILD/EDITBACK/GRASS.VMF @@ -0,0 +1,69 @@ +DIV-VIZ2 +HEADER +( + VERSION=2:08; + DATE=5:3:97; + TIME=23:48; + FILETYPE=MATERIAL +) +{ +} + +TEXTURE(NAME="grassc_tex") +{ + MAP {"grassc"} + MAGNIFY {BILINEAR} +} + +TEXTURE(NAME="tree9_tex") +{ + MAP {"tree"} + BITSLICE { 8 } +} + +TEXTURE(NAME="bintA_tex") +{ + MAP {"bintA"} + MAGNIFY {BILINEAR} +} + +RAMP(NAME="grass") +{ + DATA {0.1, 0.17, 0.1, 0.54, 0.44, 0.4} +} + +MATERIAL(NAME="grass_mtl") +{ + TEXTURE {"grassc_tex"} + RAMP {"grass"} +} + +MATERIAL(NAME="tree_mtl") +{ + TEXTURE {"tree9_tex"} + AMBIENT {1, 0.15, 0.131} + DIFFUSE {1, 0.15, 0.131} +} + +MATERIAL(NAME="trunk_mtl") +{ + TEXTURE {"bintA_tex"} + AMBIENT {0.1898, 0.088563, 0} + DIFFUSE {0.1898, 0.064105, 0} +} + +MATERIAL(NAME="rings_mtl") +{ + TEXTURE {"bintA_tex"} + AMBIENT {0.3898, 0.188563, 0.051} + DIFFUSE {0.3898, 0.164105, 0.051} +} + +MATERIAL(NAME="leaves_mtl") +{ + TEXTURE {"tree9_tex"} + AMBIENT {1, 0.651, 0.531} + DIFFUSE {1, 0.651, 0.531} +} + + \ No newline at end of file diff --git a/CONTENT/BT3025/VIDEO/BUILD/EDITBACK/RAVINES.VMF b/CONTENT/BT3025/VIDEO/BUILD/EDITBACK/RAVINES.VMF new file mode 100644 index 0000000..d149d80 --- /dev/null +++ b/CONTENT/BT3025/VIDEO/BUILD/EDITBACK/RAVINES.VMF @@ -0,0 +1,62 @@ +DIV-VIZ2 +HEADER +( + VERSION=2:08; + DATE=8:2:97; + TIME=1:39; + FILETYPE=MATERIAL +) +{ +} + +TEXTURE(NAME="bdinta_tex") +{ + MAP {"bdinta"} + MAGNIFY {BILINEAR} +} + +TEXTURE(NAME="bdintb_tex") +{ + MAP {"bdintb"} + MAGNIFY {BILINEAR} +} + +RAMP(NAME="dust") +{ + DATA {0.285, 0.21, 0.2, 0.75, 0.5, 0.4} +} + +RAMP(NAME="rock") +{ + DATA {0.25, 0.21, 0.21, 0.8, 0.5, 0.4} +} + +MATERIAL(NAME="ravinerock_mtl") +{ + TEXTURE {"bdinta_tex"} + RAMP {"rock"} +} + +MATERIAL(NAME="ravinerubble_mtl") +{ + TEXTURE {"bdintb_tex"} + RAMP {"dust"} +} + + +MATERIAL(NAME="tarmac_mtl") +{ + TEXTURE {"bdintb_tex"} + AMBIENT {0.4143, 0.4174591, 0.417143} + DIFFUSE {0.4143, 0.4156675, 0.417143} + RAMP {"dust"} +} + +MATERIAL(NAME="dirt_mtl") +{ + TEXTURE {"bdintb_tex"} + AMBIENT {0.6, 0.55, 0.5} + DIFFUSE {0.6, 0.55, 0.5} + RAMP {"dust"} +} + \ No newline at end of file diff --git a/CONTENT/BT3025/VIDEO/BUILD/GRASS.BMF b/CONTENT/BT3025/VIDEO/BUILD/GRASS.BMF new file mode 100644 index 0000000..1536daf Binary files /dev/null and b/CONTENT/BT3025/VIDEO/BUILD/GRASS.BMF differ diff --git a/CONTENT/BT3025/VIDEO/BUILD/GRASS.VMF b/CONTENT/BT3025/VIDEO/BUILD/GRASS.VMF new file mode 100644 index 0000000..f55f1c5 --- /dev/null +++ b/CONTENT/BT3025/VIDEO/BUILD/GRASS.VMF @@ -0,0 +1,69 @@ +DIV-VIZ2 +HEADER +( + VERSION=2:08; + DATE=5:3:97; + TIME=23:48; + FILETYPE=MATERIAL +) +{ +} + +TEXTURE(NAME="grassc_tex") +{ + MAP {"grassc"} + MAGNIFY {BILINEAR} +} + +TEXTURE(NAME="tree9_tex") +{ + MAP {"tree"} + BITSLICE { 8 } +} + +TEXTURE(NAME="bintA_tex") +{ + MAP {"bintA"} + MAGNIFY {BILINEAR} +} + +RAMP(NAME="grass") +{ + DATA {0.1, 0.17, 0.1, 0.54, 0.42, 0.4} +} + +MATERIAL(NAME="grass_mtl") +{ + TEXTURE {"grassc_tex"} + RAMP {"grass"} +} + +MATERIAL(NAME="tree_mtl") +{ + TEXTURE {"tree9_tex"} + AMBIENT {1, 0.15, 0.131} + DIFFUSE {1, 0.15, 0.131} +} + +MATERIAL(NAME="trunk_mtl") +{ + TEXTURE {"bintA_tex"} + AMBIENT {0.1898, 0.088563, 0} + DIFFUSE {0.1898, 0.064105, 0} +} + +MATERIAL(NAME="rings_mtl") +{ + TEXTURE {"bintA_tex"} + AMBIENT {0.3898, 0.188563, 0.051} + DIFFUSE {0.3898, 0.164105, 0.051} +} + +MATERIAL(NAME="leaves_mtl") +{ + TEXTURE {"tree9_tex"} + AMBIENT {1, 0.651, 0.531} + DIFFUSE {1, 0.651, 0.531} +} + + \ No newline at end of file diff --git a/CONTENT/BT3025/VIDEO/BUILD/HARASS.BGF b/CONTENT/BT3025/VIDEO/BUILD/HARASS.BGF new file mode 100644 index 0000000..114b0e5 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/BUILD/HARASS.BGF differ diff --git a/CONTENT/BT3025/VIDEO/BUILD/HARASS.VGF b/CONTENT/BT3025/VIDEO/BUILD/HARASS.VGF new file mode 100644 index 0000000..3683cf5 --- /dev/null +++ b/CONTENT/BT3025/VIDEO/BUILD/HARASS.VGF @@ -0,0 +1,44 @@ +DIV-VIZ2 + +// file: harass.vgf +// generated: Thu Mar 20 07:33:11 1997 +// from: Wavefront Object File "harass.obj", and +// Material Library File "basev.mtl" +// by: obj2vgf (ver 0.29.01a) +// written: by Ken Olsen + +HEADER( + VERSION=02:05; + UNIT=m; + SCALE=1.0; + FILETYPE=GEOMETRY; +) +{ +} + +OBJECT( +) +{ + GEOGROUP + ( + F_MATERIAL="basev:shadow_mtl"; + ) + { + PMESH { + VERTEX_POOL { + { 0.8855, 0.1000, 3.2933} /* 0 */ + { 0.9240, 0.1000, 2.1763} /* 1 */ + {-0.8855, 0.1000, 2.1378} /* 2 */ + {-0.8085, 0.1000, 3.3318} /* 3 */ + { 2.4254, 0.1000, 2.3689} /* 4 */ + { 2.4254, 0.1000, -4.1407} /* 5 */ + {-2.4639, 0.1000, -4.2563} /* 6 */ + {-2.5024, 0.1000, 2.4074} /* 7 */ + } + CONNECTION_LIST (PCOUNT=4) { + {0, 1, 2, 3} /* */ + {4, 5, 6, 7} /* */ + } + } // End of pmesh + } // End of geogroup +} // End of object diff --git a/CONTENT/BT3025/VIDEO/BUILD/HUMMS.BGF b/CONTENT/BT3025/VIDEO/BUILD/HUMMS.BGF new file mode 100644 index 0000000..75f63f1 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/BUILD/HUMMS.BGF differ diff --git a/CONTENT/BT3025/VIDEO/BUILD/HUMMS.VGF b/CONTENT/BT3025/VIDEO/BUILD/HUMMS.VGF new file mode 100644 index 0000000..3dc54b1 --- /dev/null +++ b/CONTENT/BT3025/VIDEO/BUILD/HUMMS.VGF @@ -0,0 +1,39 @@ +DIV-VIZ2 + +// file: humms.vgf +// generated: Thu Mar 20 07:33:11 1997 +// from: Wavefront Object File "humms.obj", and +// Material Library File "basev.mtl" +// by: obj2vgf (ver 0.29.01a) +// written: by Ken Olsen + +HEADER( + VERSION=02:05; + UNIT=m; + SCALE=1.0; + FILETYPE=GEOMETRY; +) +{ +} + +OBJECT( +) +{ + GEOGROUP + ( + F_MATERIAL="basev:shadow_mtl"; + ) + { + PMESH { + VERTEX_POOL { + { 1.2320, 0.1000, 2.7155} /* 0 */ + { 1.2704, 0.1000, -2.7541} /* 1 */ + {-1.4629, 0.1000, -2.7926} /* 2 */ + {-1.3859, 0.1000, 2.7155} /* 3 */ + } + CONNECTION_LIST (PCOUNT=4) { + {0, 1, 2, 3} /* */ + } + } // End of pmesh + } // End of geogroup +} // End of object diff --git a/CONTENT/BT3025/VIDEO/BUILD/LRMS.BGF b/CONTENT/BT3025/VIDEO/BUILD/LRMS.BGF new file mode 100644 index 0000000..c24ea4d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/BUILD/LRMS.BGF differ diff --git a/CONTENT/BT3025/VIDEO/BUILD/LRMS.VGF b/CONTENT/BT3025/VIDEO/BUILD/LRMS.VGF new file mode 100644 index 0000000..117fef2 --- /dev/null +++ b/CONTENT/BT3025/VIDEO/BUILD/LRMS.VGF @@ -0,0 +1,51 @@ +DIV-VIZ2 + +// file: lrms.vgf +// generated: Thu Mar 20 07:33:11 1997 +// from: Wavefront Object File "lrms.obj", and +// Material Library File "basev.mtl" +// by: obj2vgf (ver 0.29.01a) +// written: by Ken Olsen + +HEADER( + VERSION=02:05; + UNIT=m; + SCALE=1.0; + FILETYPE=GEOMETRY; +) +{ +} + +OBJECT( +) +{ + GEOGROUP + ( + F_MATERIAL="basev:shadow_mtl"; + ) + { + PMESH { + VERTEX_POOL { + { 4.3888, 0.1000, -0.2504} /* 0 */ + { 3.2339, 0.1000, -0.5970} /* 1 */ + {-2.5024, 0.1000, -0.4815} /* 2 */ + {-4.2733, 0.1000, 0.0193} /* 3 */ + {-4.3503, 0.1000, 5.2963} /* 4 */ + {-2.5409, 0.1000, 5.9126} /* 5 */ + { 2.3099, 0.1000, 5.9896} /* 6 */ + { 4.2733, 0.1000, 5.2578} /* 7 */ + { 3.3879, 0.1000, 0.7511} /* 8 */ + { 3.3494, 0.1000, -3.4474} /* 9 */ + {-3.1954, 0.1000, -3.4474} /* 10 */ + {-3.2339, 0.1000, 0.8281} /* 11 */ + } + CONNECTION_LIST (PCOUNT=4) { + {0, 5, 6, 7} /* */ + {8, 9, 10, 11} /* */ + } + CONNECTION_LIST (PCOUNT=6) { + {0, 1, 2, 3, 4, 5} /* */ + } + } // End of pmesh + } // End of geogroup +} // End of object diff --git a/CONTENT/BT3025/VIDEO/BUILD/MECHMOVS.BGF b/CONTENT/BT3025/VIDEO/BUILD/MECHMOVS.BGF new file mode 100644 index 0000000..d64e0eb Binary files /dev/null and b/CONTENT/BT3025/VIDEO/BUILD/MECHMOVS.BGF differ diff --git a/CONTENT/BT3025/VIDEO/BUILD/MECHMOVS.VGF b/CONTENT/BT3025/VIDEO/BUILD/MECHMOVS.VGF new file mode 100644 index 0000000..323054f --- /dev/null +++ b/CONTENT/BT3025/VIDEO/BUILD/MECHMOVS.VGF @@ -0,0 +1,44 @@ +DIV-VIZ2 + +// file: mechmovs.vgf +// generated: Thu Mar 20 07:33:11 1997 +// from: Wavefront Object File "mechmovs.obj", and +// Material Library File "basev.mtl" +// by: obj2vgf (ver 0.29.01a) +// written: by Ken Olsen + +HEADER( + VERSION=02:05; + UNIT=m; + SCALE=1.0; + FILETYPE=GEOMETRY; +) +{ +} + +OBJECT( +) +{ + GEOGROUP + ( + F_MATERIAL="basev:shadow_mtl"; + ) + { + PMESH { + VERTEX_POOL { + { 0.6545, 0.1000, 8.0311} /* 0 */ + { 0.6930, 0.1000, 7.1067} /* 1 */ + {-0.5775, 0.1000, 7.1452} /* 2 */ + {-0.5005, 0.1000, 8.0311} /* 3 */ + { 2.4639, 0.1000, 7.4148} /* 4 */ + { 2.5024, 0.1000, -7.1452} /* 5 */ + {-2.6564, 0.1000, -7.1837} /* 6 */ + {-2.5794, 0.1000, 7.4148} /* 7 */ + } + CONNECTION_LIST (PCOUNT=4) { + {0, 1, 2, 3} /* */ + {4, 5, 6, 7} /* */ + } + } // End of pmesh + } // End of geogroup +} // End of object diff --git a/CONTENT/BT3025/VIDEO/BUILD/RAVINES.BMF b/CONTENT/BT3025/VIDEO/BUILD/RAVINES.BMF new file mode 100644 index 0000000..0471e9f Binary files /dev/null and b/CONTENT/BT3025/VIDEO/BUILD/RAVINES.BMF differ diff --git a/CONTENT/BT3025/VIDEO/BUILD/RAVINES.VMF b/CONTENT/BT3025/VIDEO/BUILD/RAVINES.VMF new file mode 100644 index 0000000..2d5aa6e --- /dev/null +++ b/CONTENT/BT3025/VIDEO/BUILD/RAVINES.VMF @@ -0,0 +1,62 @@ +DIV-VIZ2 +HEADER +( + VERSION=2:08; + DATE=8:2:97; + TIME=1:39; + FILETYPE=MATERIAL +) +{ +} + +TEXTURE(NAME="bdinta_tex") +{ + MAP {"bdinta"} + MAGNIFY {BILINEAR} +} + +TEXTURE(NAME="bdintb_tex") +{ + MAP {"bdintb"} + MAGNIFY {BILINEAR} +} + +RAMP(NAME="dust") +{ + DATA {0.285, 0.21, 0.2, 0.75, 0.5, 0.4} +} + +RAMP(NAME="rock") +{ + DATA {0.25, 0.21, 0.21, 0.8, 0.5, 0.4} +} + +MATERIAL(NAME="ravinerock_mtl") +{ + TEXTURE {"bdinta_tex"} + RAMP {"rock"} +} + +MATERIAL(NAME="ravinerubble_mtl") +{ + TEXTURE {"bdintb_tex"} + RAMP {"dust"} +} + + +MATERIAL(NAME="tarmac_mtl") +{ + TEXTURE {"bdintb_tex"} + AMBIENT {0.4143, 0.4174591, 0.417143} + DIFFUSE {0.4143, 0.4156675, 0.417143} + RAMP {"dust"} +} + +MATERIAL(NAME="dirt_mtl") +{ + TEXTURE {"bdintb_tex"} + AMBIENT {0.8, 0.8, 0.8} + DIFFUSE {0.8, 0.8, 0.8} + RAMP {"dust"} +} + \ No newline at end of file diff --git a/CONTENT/BT3025/VIDEO/BUILD/ROMMELS.BGF b/CONTENT/BT3025/VIDEO/BUILD/ROMMELS.BGF new file mode 100644 index 0000000..e3f0620 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/BUILD/ROMMELS.BGF differ diff --git a/CONTENT/BT3025/VIDEO/BUILD/ROMMELS.VGF b/CONTENT/BT3025/VIDEO/BUILD/ROMMELS.VGF new file mode 100644 index 0000000..95149c7 --- /dev/null +++ b/CONTENT/BT3025/VIDEO/BUILD/ROMMELS.VGF @@ -0,0 +1,44 @@ +DIV-VIZ2 + +// file: rommels.vgf +// generated: Thu Mar 20 07:33:11 1997 +// from: Wavefront Object File "rommels.obj", and +// Material Library File "basev.mtl" +// by: obj2vgf (ver 0.29.01a) +// written: by Ken Olsen + +HEADER( + VERSION=02:05; + UNIT=m; + SCALE=1.0; + FILETYPE=GEOMETRY; +) +{ +} + +OBJECT( +) +{ + GEOGROUP + ( + F_MATERIAL="basev:shadow_mtl"; + ) + { + PMESH { + VERTEX_POOL { + { 1.1655, 0.1000, 5.1527} /* 0 */ + { 1.2599, 0.1000, 4.3648} /* 1 */ + { 0.7875, 0.1000, 4.3648} /* 2 */ + { 0.8190, 0.1000, 5.1212} /* 3 */ + { 2.5829, 0.1000, 4.4909} /* 4 */ + { 2.5514, 0.1000, -3.3564} /* 5 */ + {-2.5514, 0.1000, -3.3564} /* 6 */ + {-2.5829, 0.1000, 4.4909} /* 7 */ + } + CONNECTION_LIST (PCOUNT=4) { + {0, 1, 2, 3} /* */ + {4, 5, 6, 7} /* */ + } + } // End of pmesh + } // End of geogroup +} // End of object diff --git a/CONTENT/BT3025/VIDEO/BUILD/SEMIRIGS.BGF b/CONTENT/BT3025/VIDEO/BUILD/SEMIRIGS.BGF new file mode 100644 index 0000000..86ecafe Binary files /dev/null and b/CONTENT/BT3025/VIDEO/BUILD/SEMIRIGS.BGF differ diff --git a/CONTENT/BT3025/VIDEO/BUILD/SEMIRIGS.VGF b/CONTENT/BT3025/VIDEO/BUILD/SEMIRIGS.VGF new file mode 100644 index 0000000..e0dfeb3 --- /dev/null +++ b/CONTENT/BT3025/VIDEO/BUILD/SEMIRIGS.VGF @@ -0,0 +1,39 @@ +DIV-VIZ2 + +// file: semirigs.vgf +// generated: Thu Mar 20 08:08:26 1997 +// from: Wavefront Object File "semirigs.obj", and +// Material Library File "basev.mtl" +// by: obj2vgf (ver 0.29.01a) +// written: by Ken Olsen + +HEADER( + VERSION=02:05; + UNIT=m; + SCALE=1.0; + FILETYPE=GEOMETRY; +) +{ +} + +OBJECT( +) +{ + GEOGROUP + ( + F_MATERIAL="basev:shadow_mtl"; + ) + { + PMESH { + VERTEX_POOL { + { 1.1970, 0.1000, 8.8715} /* 0 */ + { 1.1970, 0.1000, 0.8982} /* 1 */ + {-1.2284, 0.1000, 0.8352} /* 2 */ + {-1.2284, 0.1000, 8.8715} /* 3 */ + } + CONNECTION_LIST (PCOUNT=4) { + {0, 1, 2, 3} /* */ + } + } // End of pmesh + } // End of geogroup +} // End of object diff --git a/CONTENT/BT3025/VIDEO/BUILD/SEMIS.BGF b/CONTENT/BT3025/VIDEO/BUILD/SEMIS.BGF new file mode 100644 index 0000000..f01b69e Binary files /dev/null and b/CONTENT/BT3025/VIDEO/BUILD/SEMIS.BGF differ diff --git a/CONTENT/BT3025/VIDEO/BUILD/SEMIS.VGF b/CONTENT/BT3025/VIDEO/BUILD/SEMIS.VGF new file mode 100644 index 0000000..b31b2ee --- /dev/null +++ b/CONTENT/BT3025/VIDEO/BUILD/SEMIS.VGF @@ -0,0 +1,39 @@ +DIV-VIZ2 + +// file: semis.vgf +// generated: Thu Mar 20 07:33:12 1997 +// from: Wavefront Object File "semis.obj", and +// Material Library File "basev.mtl" +// by: obj2vgf (ver 0.29.01a) +// written: by Ken Olsen + +HEADER( + VERSION=02:05; + UNIT=m; + SCALE=1.0; + FILETYPE=GEOMETRY; +) +{ +} + +OBJECT( +) +{ + GEOGROUP + ( + F_MATERIAL="basev:shadow_mtl"; + ) + { + PMESH { + VERTEX_POOL { + { 1.3859, 0.1000, 2.9782} /* 0 */ + { 1.3544, 0.1000, -3.0097} /* 1 */ + {-1.2599, 0.1000, -3.0097} /* 2 */ + {-1.3229, 0.1000, 2.9782} /* 3 */ + } + CONNECTION_LIST (PCOUNT=4) { + {0, 1, 2, 3} /* */ + } + } // End of pmesh + } // End of geogroup +} // End of object diff --git a/CONTENT/BT3025/VIDEO/BUILD/SRMS.BGF b/CONTENT/BT3025/VIDEO/BUILD/SRMS.BGF new file mode 100644 index 0000000..0671489 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/BUILD/SRMS.BGF differ diff --git a/CONTENT/BT3025/VIDEO/BUILD/SRMS.VGF b/CONTENT/BT3025/VIDEO/BUILD/SRMS.VGF new file mode 100644 index 0000000..eaea0f1 --- /dev/null +++ b/CONTENT/BT3025/VIDEO/BUILD/SRMS.VGF @@ -0,0 +1,44 @@ +DIV-VIZ2 + +// file: srms.vgf +// generated: Thu Mar 20 07:33:12 1997 +// from: Wavefront Object File "srms.obj", and +// Material Library File "basev.mtl" +// by: obj2vgf (ver 0.29.01a) +// written: by Ken Olsen + +HEADER( + VERSION=02:05; + UNIT=m; + SCALE=1.0; + FILETYPE=GEOMETRY; +) +{ +} + +OBJECT( +) +{ + GEOGROUP + ( + F_MATERIAL="basev:shadow_mtl"; + ) + { + PMESH { + VERTEX_POOL { + { 2.8933, -0.0000, 4.5132} /* 0 */ + { 2.9320, -0.0000, -0.0913} /* 1 */ + {-2.3276, -0.0000, -0.0913} /* 2 */ + {-2.3276, -0.0000, 4.4745} /* 3 */ + { 2.7000, -0.0000, 3.1589} /* 4 */ + { 2.7386, -0.0000, -3.9220} /* 5 */ + {-2.9464, -0.0000, -3.8833} /* 6 */ + {-2.9464, -0.0000, 3.1589} /* 7 */ + } + CONNECTION_LIST (PCOUNT=4) { + {0, 1, 2, 3} /* */ + {4, 5, 6, 7} /* */ + } + } // End of pmesh + } // End of geogroup +} // End of object diff --git a/CONTENT/BT3025/VIDEO/BUILD/STATE.RST b/CONTENT/BT3025/VIDEO/BUILD/STATE.RST new file mode 100644 index 0000000..2265671 --- /dev/null +++ b/CONTENT/BT3025/VIDEO/BUILD/STATE.RST @@ -0,0 +1,64 @@ +[edit-] +screen=80 50 +toggles=1 1 0 1 0 0 +srch=arsky +src=briteblu +rpl=liteblu +file=c:\btravine\video\build\dtar_lp.vgf 1 1 1 1 +[brief] +file=c:\btravine\video\build\dtar_lp.vgf 1 1 1 1 1 47 78 1 c=0 +file=c:\btravine\video\build\dish_lp.vgf 1 1 1 1 +file=c:\btravine\video\build\ctar_lp.vgf 1 1 1 1 +[shared-] +pmark=c:\btravine\video\build\dtar_lp.vgf 1 1 +[brief-scrap] +0 3 + AMBIENT {0.5239, 0.4928, 0.5239} + DIFFUSE {0.5239, 0.4928, 0.5239} + RAMP { cdusty } +[end-brief-scrap] +[brief-history] + +[edit_file]::[File: ] +dtar_lp.vgf +ctar_lp.vgf +briteblu +dish.vgf +dtarmac.vgf +ravines.vmf +dbase.vmf +basev.vmf +basev.mtl +[search_fwd]::[ Search for: ] +arsky +gen2red +gen3red +ramp +bdam3 +darker +LOD +gen3 +cdusty +tarmac +[translate]::[ Pattern: ] +briteblu +britered +lgo +128,64 +berm +_ravines +DO_NOT_USE_ +blacktop +baseb +[translate]::[Replacement: ] +liteblu +litered +gen +128,128 +dirt +ravines +tarmac +dbase +RAVINES +[end-brief-history] + \ No newline at end of file diff --git a/CONTENT/BT3025/VIDEO/BUILD/STRIKERS.BGF b/CONTENT/BT3025/VIDEO/BUILD/STRIKERS.BGF new file mode 100644 index 0000000..489cab7 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/BUILD/STRIKERS.BGF differ diff --git a/CONTENT/BT3025/VIDEO/BUILD/STRIKERS.VGF b/CONTENT/BT3025/VIDEO/BUILD/STRIKERS.VGF new file mode 100644 index 0000000..7d8a97f --- /dev/null +++ b/CONTENT/BT3025/VIDEO/BUILD/STRIKERS.VGF @@ -0,0 +1,44 @@ +DIV-VIZ2 + +// file: strikers.vgf +// generated: Thu Mar 20 07:33:12 1997 +// from: Wavefront Object File "strikers.obj", and +// Material Library File "basev.mtl" +// by: obj2vgf (ver 0.29.01a) +// written: by Ken Olsen + +HEADER( + VERSION=02:05; + UNIT=m; + SCALE=1.0; + FILETYPE=GEOMETRY; +) +{ +} + +OBJECT( +) +{ + GEOGROUP + ( + F_MATERIAL="basev:shadow_mtl"; + ) + { + PMESH { + VERTEX_POOL { + {-2.4984, 0.1000, 0.6767} /* 0 */ + { 2.4718, 0.1000, 0.6675} /* 1 */ + { 2.4718, 0.1000, -1.3407} /* 2 */ + {-2.4984, 0.1000, -1.2230} /* 3 */ + { 2.1463, 0.1000, 2.5672} /* 4 */ + { 2.0378, 0.1000, -8.3966} /* 5 */ + {-2.2271, 0.1000, -8.3331} /* 6 */ + {-2.1729, 0.1000, 2.5764} /* 7 */ + } + CONNECTION_LIST (PCOUNT=4) { + {0, 1, 2, 3} /* */ + {4, 5, 6, 7} /* */ + } + } // End of pmesh + } // End of geogroup +} // End of object diff --git a/CONTENT/BT3025/VIDEO/BUILD/SWIFTS.BGF b/CONTENT/BT3025/VIDEO/BUILD/SWIFTS.BGF new file mode 100644 index 0000000..aa9be93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/BUILD/SWIFTS.BGF differ diff --git a/CONTENT/BT3025/VIDEO/BUILD/SWIFTS.VGF b/CONTENT/BT3025/VIDEO/BUILD/SWIFTS.VGF new file mode 100644 index 0000000..b6d864b --- /dev/null +++ b/CONTENT/BT3025/VIDEO/BUILD/SWIFTS.VGF @@ -0,0 +1,55 @@ +DIV-VIZ2 + +// file: swifts.vgf +// generated: Thu Mar 20 07:33:12 1997 +// from: Wavefront Object File "swifts.obj", and +// Material Library File "basev.mtl" +// by: obj2vgf (ver 0.29.01a) +// written: by Ken Olsen + +HEADER( + VERSION=02:05; + UNIT=m; + SCALE=1.0; + FILETYPE=GEOMETRY; +) +{ +} + +OBJECT( +) +{ + GEOGROUP + ( + F_MATERIAL="basev:shadow_mtl"; + ) + { + PMESH { + VERTEX_POOL { + {-2.2165, 0.0500, 2.5501} /* 0 */ + { 2.2091, 0.0500, 2.5658} /* 1 */ + { 2.2091, 0.0500, 1.1949} /* 2 */ + {-2.2322, 0.0500, 1.2422} /* 3 */ + {-2.1561, 0.0500, -0.1452} /* 4 */ + { 2.2684, 0.0500, -0.1195} /* 5 */ + { 2.2406, 0.0500, -2.6499} /* 6 */ + {-2.1818, 0.0500, -2.6418} /* 7 */ + { 1.3166, 0.0500, -3.1822} /* 8 */ + {-0.7417, 0.0500, -3.7640} /* 9 */ + {-1.2558, 0.0500, -3.2080} /* 10 */ + {-1.3072, 0.0500, 3.2264} /* 11 */ + { 1.3166, 0.0500, 3.2264} /* 12 */ + { 0.9822, 0.0500, -3.8257} /* 13 */ + {-0.1239, 0.0500, -4.0058} /* 14 */ + } + CONNECTION_LIST (PCOUNT=4) { + {0, 1, 2, 3} /* */ + {4, 5, 6, 7} /* */ + {8, 13, 14, 9} /* */ + } + CONNECTION_LIST (PCOUNT=5) { + {8, 9, 10, 11, 12} /* */ + } + } // End of pmesh + } // End of geogroup +} // End of object diff --git a/CONTENT/BT3025/VIDEO/DAFC.PFX b/CONTENT/BT3025/VIDEO/DAFC.PFX new file mode 100644 index 0000000..ef516fd --- /dev/null +++ b/CONTENT/BT3025/VIDEO/DAFC.PFX @@ -0,0 +1,32 @@ +btfx:firesmoke1_scr_tex +0x30000668 25 0.2 100 +0 -0.25 -4 1.25 +2 1 -3 -4 -2 -3 +0.5 1 0 0 -1 0.0 +0 1 3 0 0.5 2 +1 0 +2.20 1.30 0.90 1.60 0.00 0.00 0.00 0.00 +2.00 0.50 0.00 0.60 0.00 0.00 0.00 0.00 +-0.10 -0.30 -1.0 -2 0.00 0.00 0.00 2.00 +0.00 0.00 -1.00 -2 0.00 0.00 0.00 2.00 +1 1 +0.1 0.4 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one diff --git a/CONTENT/BT3025/VIDEO/DBIGBOOM.PFX b/CONTENT/BT3025/VIDEO/DBIGBOOM.PFX new file mode 100644 index 0000000..4bafb27 --- /dev/null +++ b/CONTENT/BT3025/VIDEO/DBIGBOOM.PFX @@ -0,0 +1,33 @@ +btfx:firesmoke2_scr_tex +0x30000674 12 0.25 40 +0 1 0 5 +110 30 110 -220 -60 -220 +5.5 5.0 25 30 -1 0 +2.5 -0.5 2.5 -5 -10 -5 +2 0 +2.00 0.70 0.20 2.00 0.00 0.00 0.00 0.00 +1.00 0.30 0.00 1.00 0.00 0.00 0.00 0.00 +0.0 -0.20 -0.50 -0.50 0.00 0.00 0.00 0.00 +0.0 0.00 0.00 -2.00 0.00 0.00 0.00 0.00 +10 1 +1.0 1.5 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one + \ No newline at end of file diff --git a/CONTENT/BT3025/VIDEO/DDAM1.PFX b/CONTENT/BT3025/VIDEO/DDAM1.PFX new file mode 100644 index 0000000..90d3cc3 --- /dev/null +++ b/CONTENT/BT3025/VIDEO/DDAM1.PFX @@ -0,0 +1,32 @@ +btfx:firesmoke1_scr_tex +0x30000670 15 1 8 +0 0 0 1 +1 2 1 -2 1 -2 +0.5 0.5 1 1 0.00 0 +0 1 0 0 1 0 +0.5 0.5 +0.50 0.50 0.50 1.10 0.00 0.00 0.00 0.00 +0.50 0.50 0.50 1.00 0.00 0.00 0.00 0.00 +0.10 0.10 0.10 0.00 0.00 0.00 0.00 0.00 +0.10 0.10 0.10 0.00 0.00 0.00 0.00 0.00 +10 1 +1.0 0.5 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one diff --git a/CONTENT/BT3025/VIDEO/DDAM2.PFX b/CONTENT/BT3025/VIDEO/DDAM2.PFX new file mode 100644 index 0000000..5e0558c --- /dev/null +++ b/CONTENT/BT3025/VIDEO/DDAM2.PFX @@ -0,0 +1,32 @@ +btfx:firesmoke1_scr_tex +0x30000670 35 2 16 +0 0 0 1 +2 3 2 -4 1 -4 +0.5 0.5 1 1 0.00 0 +0 1 0 0 1 0 +0.5 0.5 +0.30 0.30 0.30 1.10 0.00 0.00 0.00 0.00 +0.30 0.30 0.30 1.00 0.00 0.00 0.00 0.00 +-0.00 -0.00 -0.00 0.00 0.00 0.00 0.00 0.00 +0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 +10 1 +1.5 0.5 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one diff --git a/CONTENT/BT3025/VIDEO/DDAM3.PFX b/CONTENT/BT3025/VIDEO/DDAM3.PFX new file mode 100644 index 0000000..e72e9c1 --- /dev/null +++ b/CONTENT/BT3025/VIDEO/DDAM3.PFX @@ -0,0 +1,32 @@ +btfx:firesmoke1_scr_tex +0x30000670 50 4 20 +0 0 0 1 +1 1 1 -2 1 -2 +0.6 0.6 1.2 1 -0.7 0 +0 0.75 0 0 1 0 +0.5 0.5 +0.50 0.20 0.00 1.50 0.00 0.00 0.00 0.00 +0.00 0.00 0.00 1.00 0.00 0.00 0.00 0.00 +-0.50 -0.50 -0.50 0.00 0.00 0.00 0.00 0.00 +0.00 0.00 0.00 -0.10 0.00 0.00 0.00 0.00 +10 1 +1.75 0.5 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one diff --git a/CONTENT/BT3025/VIDEO/DDAM4.PFX b/CONTENT/BT3025/VIDEO/DDAM4.PFX new file mode 100644 index 0000000..47dc9a1 --- /dev/null +++ b/CONTENT/BT3025/VIDEO/DDAM4.PFX @@ -0,0 +1,32 @@ +btfx:firesmoke1_scr_tex +0x30000670 55 5 20 +0 0 0 1 +1 1 1 -2 -2 -2 +0.5 0.5 1.5 1 -1.0 0 +0 2.5 0 0 1.5 0 +0.5 0.5 +1.70 0.70 0.20 2.00 0.00 0.00 0.00 0.00 +0.00 0.00 0.00 1.00 0.00 0.00 0.00 0.00 +-1.50 -1.50 -1.50 0.00 0.00 0.00 0.00 0.00 +0.00 0.00 0.00 -0.10 0.00 0.00 0.00 0.00 +10 1 +2.0 0.5 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one diff --git a/CONTENT/BT3025/VIDEO/DDAM5.PFX b/CONTENT/BT3025/VIDEO/DDAM5.PFX new file mode 100644 index 0000000..82807a6 --- /dev/null +++ b/CONTENT/BT3025/VIDEO/DDAM5.PFX @@ -0,0 +1,33 @@ +btfx:firesmoke4_scr_tex +0x30000674 15 0.5 20 +0 1 0 2 +15 10 20 -30 -20 -40 +1.5 2.0 5 5 -1 0 +2.5 2.5 2.5 -5 -10 -5 +7 3 +2.00 0.70 0.20 2.00 0.00 0.00 0.00 0.00 +1.00 0.30 0.00 1.00 0.00 0.00 0.00 0.00 +0.0 -0.20 -0.50 -0.50 0.00 0.00 0.00 0.00 +0.0 0.00 0.00 -2.00 0.00 0.00 0.00 0.00 +10 1 +1.5 0.5 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one + \ No newline at end of file diff --git a/CONTENT/BT3025/VIDEO/DDTHSMK.PFX b/CONTENT/BT3025/VIDEO/DDTHSMK.PFX new file mode 100644 index 0000000..373f49e --- /dev/null +++ b/CONTENT/BT3025/VIDEO/DDTHSMK.PFX @@ -0,0 +1,32 @@ +btfx:firesmoke1_scr_tex +0x30000002 30 10 3 +0 3 0 2 +1 5 1 -2 4 -2 +2.0 0.9 1.9 1 -0.001 0 +0 1 0 0 1 0.5 +0.1 0.1 + 0.70 0.30 0.10 2.00 0.00 0.00 0.00 0.50 + 0.50 0.20 0.00 1.00 0.00 0.00 0.00 0.50 +-2.30 -1.10 -1.00 0.00 0.00 0.00 0.00 0.00 +-2.00 -1.00 -0.60 0.00 0.00 0.00 0.00 0.00 +0 0 +6 2 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one diff --git a/CONTENT/BT3025/VIDEO/DLRMTAIL.PFX b/CONTENT/BT3025/VIDEO/DLRMTAIL.PFX new file mode 100644 index 0000000..4211e1b --- /dev/null +++ b/CONTENT/BT3025/VIDEO/DLRMTAIL.PFX @@ -0,0 +1,33 @@ +btfx:firesmoke4_scr_tex +0x30000667 35 2 30 +0 0 0 0 +3 2 10 -6 -1 20 +1 1 20 10 0 0 +6 3 3 -12 2 -6 +0 0 +2.20 1.00 0.50 1.60 0.00 0.00 0.00 0.00 +0.00 0.00 0.00 1.00 0.00 0.00 0.00 0.00 +-0.20 -0.20 -0.20 -0.50 0.00 0.00 0.00 0.00 +0.00 0.00 0.00 1.10 0.00 0.00 0.00 0.00 +10 1 +0.5 0.5 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one + \ No newline at end of file diff --git a/CONTENT/BT3025/VIDEO/DMEDBOOM.PFX b/CONTENT/BT3025/VIDEO/DMEDBOOM.PFX new file mode 100644 index 0000000..e350f99 --- /dev/null +++ b/CONTENT/BT3025/VIDEO/DMEDBOOM.PFX @@ -0,0 +1,33 @@ +btfx:firesmoke4_scr_tex +0x30000674 10 0.3 20 +0 1 0 2 +120 30 120 -240 -60 -240 +3.5 1.0 8 8 -1 0 +2.5 2.5 2.5 -5 -10 -5 +7 3 +1.30 0.50 0.30 2.00 0.00 0.00 0.00 0.00 +0.20 0.20 0.20 1.00 0.00 0.00 0.00 0.00 +0.0 0.00 0.00 -0.50 0.00 0.00 0.00 0.00 +0.0 0.00 0.00 -2.00 0.00 0.00 0.00 0.00 +10 1 +1.5 0.5 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one + \ No newline at end of file diff --git a/CONTENT/BT3025/VIDEO/DMISSING.PFX b/CONTENT/BT3025/VIDEO/DMISSING.PFX new file mode 100644 index 0000000..c075d20 --- /dev/null +++ b/CONTENT/BT3025/VIDEO/DMISSING.PFX @@ -0,0 +1,33 @@ +btfx:firesmoke1_scr_tex +0x30000670 55 6 18 +0 0 0 1 +1 1 1 -2 -2 -2 +0.5 0.5 1.5 1 -1.0 0 +0 2.5 0 0 1.5 0 +0.5 0.5 +0.0 1.0 0.0 2.00 0.00 0.00 0.00 0.00 +0.00 0.00 0.00 1.00 0.00 0.00 0.00 0.00 +0.0 1.0 0.0 0.00 0.00 0.00 0.00 0.00 +0.00 0.00 0.00 -0.10 0.00 0.00 0.00 0.00 +10 1 +2.0 0.5 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one + \ No newline at end of file diff --git a/CONTENT/BT3025/VIDEO/DNBOOM.PFX b/CONTENT/BT3025/VIDEO/DNBOOM.PFX new file mode 100644 index 0000000..9bdf19a --- /dev/null +++ b/CONTENT/BT3025/VIDEO/DNBOOM.PFX @@ -0,0 +1,33 @@ +btfx:firesmoke1_scr_tex +0x30000674 35 0.2 150 +0 1 0 2 +150 60 150 -300 -250 -300 +0.5 5.0 25 25 -5 0 +2.5 2.5 2.5 -5 -10 -5 +5 1 +0.8 0.30 0.00 2.00 0.00 0.00 0.00 0.00 +0.8 0.30 0.00 1.00 0.00 0.00 0.00 0.00 +0 00 0 -2 0.00 0.00 0.00 0.00 +0 00 0 -5 0.00 0.00 0.00 0.00 +10 1 +1.5 1 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one + \ No newline at end of file diff --git a/CONTENT/BT3025/VIDEO/DSMLBOOM.PFX b/CONTENT/BT3025/VIDEO/DSMLBOOM.PFX new file mode 100644 index 0000000..01ac495 --- /dev/null +++ b/CONTENT/BT3025/VIDEO/DSMLBOOM.PFX @@ -0,0 +1,33 @@ +btfx:firesmoke4_scr_tex +0x30000674 15 0.5 24 +0 1 0 1 +25 40 25 -50 -50 -50 +2.5 1.0 4 4 -1 0 +2.5 2.5 2.5 -5 -10 -5 +3 3 +0.90 0.90 0.90 1.00 0.00 0.00 0.00 0.00 +0.20 0.20 0.20 0.50 0.00 0.00 0.00 0.00 +0.0 0.00 0.00 -0.50 0.00 0.00 0.00 0.00 +0.0 0.00 0.00 -2.00 0.00 0.00 0.00 0.00 +10 1 +2.5 0.5 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one + \ No newline at end of file diff --git a/CONTENT/BT3025/VIDEO/DSRM.PFX b/CONTENT/BT3025/VIDEO/DSRM.PFX new file mode 100644 index 0000000..ff2447b --- /dev/null +++ b/CONTENT/BT3025/VIDEO/DSRM.PFX @@ -0,0 +1,33 @@ +btfx:firesmoke1_scr_tex +0x30000667 65 2 300 +0 0 0 1 +3 2 10 -6 -1 20 +1 2 4 2 6 0 +1 1 1 -2 -2 -2 +0 0 +1.80 0.90 0.20 1.60 0.00 0.00 0.00 0.00 +0.20 0.05 0.00 1.00 0.00 0.00 0.00 0.00 +0.20 0.05 0.00 0.0 0.00 0.00 0.00 0.00 +0.10 0.00 0.00 0.00 0.00 0.00 0.00 0.00 +10 1 +0.1 0.1 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one + \ No newline at end of file diff --git a/CONTENT/BT3025/VIDEO/DTRKBOOM.PFX b/CONTENT/BT3025/VIDEO/DTRKBOOM.PFX new file mode 100644 index 0000000..f65b214 --- /dev/null +++ b/CONTENT/BT3025/VIDEO/DTRKBOOM.PFX @@ -0,0 +1,33 @@ +btfx:firesmoke4_scr_tex +0x30000674 10 0.5 16 +0 1 0 2 +150 30 150 -300 -60 -300 +3.5 2.0 10 10 -1 0 +2.5 2.5 2.5 -5 -10 -5 +7 3 +2.00 0.70 0.20 2.00 0.00 0.00 0.00 0.00 +1.00 0.30 0.00 1.00 0.00 0.00 0.00 0.00 +0.0 -0.20 -0.50 -0.50 0.00 0.00 0.00 0.00 +0.0 0.00 0.00 -2.00 0.00 0.00 0.00 0.00 +10 1 +1.5 0.5 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one + \ No newline at end of file diff --git a/CONTENT/BT3025/VIDEO/DTRKBURN.PFX b/CONTENT/BT3025/VIDEO/DTRKBURN.PFX new file mode 100644 index 0000000..db60ab2 --- /dev/null +++ b/CONTENT/BT3025/VIDEO/DTRKBURN.PFX @@ -0,0 +1,32 @@ +btfx:firesmoke4_scr_tex +0x30000667 30 5 4 +0 0 0 1 +1 1 1 -2 1 -2 +1.5 0.5 0.5 0.5 0.00 0 +0 1 0 0 0.5 0 +0.25 0.2 +1.50 0.60 0.20 2.50 0.00 0.00 0.00 0.00 +1.00 0.30 0.00 1.00 0.00 0.00 0.00 0.00 +-0.20 -0.50 -0.90 0.00 0.00 0.00 0.00 0.00 +-0.10 -0.10 -0.10 0.00 0.00 0.00 0.00 0.00 +0 0 +4 1 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one diff --git a/CONTENT/BT3025/VIDEO/FIRXSKIN.DZM b/CONTENT/BT3025/VIDEO/FIRXSKIN.DZM new file mode 100644 index 0000000..4f18a44 --- /dev/null +++ b/CONTENT/BT3025/VIDEO/FIRXSKIN.DZM @@ -0,0 +1,3 @@ +[dz_utorso] +material=fixskin:thx2_dz_utorso_mtl +material=fixskin:blakskn_dz_utorso_mtl diff --git a/CONTENT/BT3025/VIDEO/FLUSH.PFX b/CONTENT/BT3025/VIDEO/FLUSH.PFX new file mode 100644 index 0000000..2fa065a --- /dev/null +++ b/CONTENT/BT3025/VIDEO/FLUSH.PFX @@ -0,0 +1,33 @@ +btfx:firesmoke1_scr_tex +0x30000670 35 1 30 +0 2 0 2 +1 10 1 -2 3 -2 +2.5 0.5 2 2 0.00 0 +0 2 0 0 2 0 +0.3 0.9 +0.70 0.90 1.60 1.00 0.00 0.00 0.00 0.00 +0.70 0.90 1.30 0.80 0.00 0.00 0.00 0.00 +0.40 0.40 1.60 0.00 0.00 0.00 0.00 0.00 +0.40 0.50 1.40 0.00 0.00 0.00 0.00 0.00 +10 1 +3.5 0.5 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one + \ No newline at end of file diff --git a/CONTENT/BT3025/VIDEO/GEO/AB07D_FR.BGF b/CONTENT/BT3025/VIDEO/GEO/AB07D_FR.BGF new file mode 100644 index 0000000..4f215e9 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/AB07D_FR.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/AB08.BGF b/CONTENT/BT3025/VIDEO/GEO/AB08.BGF new file mode 100644 index 0000000..513901e Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/AB08.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/AB09D_FR.BGF b/CONTENT/BT3025/VIDEO/GEO/AB09D_FR.BGF new file mode 100644 index 0000000..969efac Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/AB09D_FR.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/AB10D_FR.BGF b/CONTENT/BT3025/VIDEO/GEO/AB10D_FR.BGF new file mode 100644 index 0000000..856da77 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/AB10D_FR.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/ABG.BGF b/CONTENT/BT3025/VIDEO/GEO/ABG.BGF new file mode 100644 index 0000000..f4698c9 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/ABG.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/ACT01.BGF b/CONTENT/BT3025/VIDEO/GEO/ACT01.BGF new file mode 100644 index 0000000..b4864a2 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/ACT01.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/ACT02.BGF b/CONTENT/BT3025/VIDEO/GEO/ACT02.BGF new file mode 100644 index 0000000..fd1f4c6 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/ACT02.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/ACT03.BGF b/CONTENT/BT3025/VIDEO/GEO/ACT03.BGF new file mode 100644 index 0000000..b6cee82 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/ACT03.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/ACT04.BGF b/CONTENT/BT3025/VIDEO/GEO/ACT04.BGF new file mode 100644 index 0000000..a1f2c46 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/ACT04.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/ACT05.BGF b/CONTENT/BT3025/VIDEO/GEO/ACT05.BGF new file mode 100644 index 0000000..4242e04 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/ACT05.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/ADSUP1.BGF b/CONTENT/BT3025/VIDEO/GEO/ADSUP1.BGF new file mode 100644 index 0000000..1d22246 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/ADSUP1.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/ADSUP2.BGF b/CONTENT/BT3025/VIDEO/GEO/ADSUP2.BGF new file mode 100644 index 0000000..baa272d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/ADSUP2.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/ADWLK1.BGF b/CONTENT/BT3025/VIDEO/GEO/ADWLK1.BGF new file mode 100644 index 0000000..7fdf7a2 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/ADWLK1.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/ADWLK2.BGF b/CONTENT/BT3025/VIDEO/GEO/ADWLK2.BGF new file mode 100644 index 0000000..bf3bd74 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/ADWLK2.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/ADWLK3.BGF b/CONTENT/BT3025/VIDEO/GEO/ADWLK3.BGF new file mode 100644 index 0000000..246ded5 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/ADWLK3.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/APCS.BGF b/CONTENT/BT3025/VIDEO/GEO/APCS.BGF new file mode 100644 index 0000000..84a2116 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/APCS.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/AR01_FR.BGF b/CONTENT/BT3025/VIDEO/GEO/AR01_FR.BGF new file mode 100644 index 0000000..dcf45f9 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/AR01_FR.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/AR03_FR.BGF b/CONTENT/BT3025/VIDEO/GEO/AR03_FR.BGF new file mode 100644 index 0000000..39c9e43 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/AR03_FR.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/AR04_FR.BGF b/CONTENT/BT3025/VIDEO/GEO/AR04_FR.BGF new file mode 100644 index 0000000..051a6f7 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/AR04_FR.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/ARBAN1.BGF b/CONTENT/BT3025/VIDEO/GEO/ARBAN1.BGF new file mode 100644 index 0000000..941470e Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/ARBAN1.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/ARBAN2.BGF b/CONTENT/BT3025/VIDEO/GEO/ARBAN2.BGF new file mode 100644 index 0000000..590972a Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/ARBAN2.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/ARBAN3.BGF b/CONTENT/BT3025/VIDEO/GEO/ARBAN3.BGF new file mode 100644 index 0000000..80ef65d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/ARBAN3.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/ARBAN4.BGF b/CONTENT/BT3025/VIDEO/GEO/ARBAN4.BGF new file mode 100644 index 0000000..767cb48 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/ARBAN4.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/ARBAN5.BGF b/CONTENT/BT3025/VIDEO/GEO/ARBAN5.BGF new file mode 100644 index 0000000..f8d7d65 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/ARBAN5.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/ARBAN6.BGF b/CONTENT/BT3025/VIDEO/GEO/ARBAN6.BGF new file mode 100644 index 0000000..4f46e38 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/ARBAN6.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/ARCLD.BGF b/CONTENT/BT3025/VIDEO/GEO/ARCLD.BGF new file mode 100644 index 0000000..ed5ad79 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/ARCLD.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/ARENA/AVA_TSHD.BGF b/CONTENT/BT3025/VIDEO/GEO/ARENA/AVA_TSHD.BGF new file mode 100644 index 0000000..bc54a5e Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/ARENA/AVA_TSHD.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/ARENA/BLH_TSHD.BGF b/CONTENT/BT3025/VIDEO/GEO/ARENA/BLH_TSHD.BGF new file mode 100644 index 0000000..450c45d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/ARENA/BLH_TSHD.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/ARENA/FIR_TSHD.BGF b/CONTENT/BT3025/VIDEO/GEO/ARENA/FIR_TSHD.BGF new file mode 100644 index 0000000..22f221d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/ARENA/FIR_TSHD.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/ARENA/LOK_TSHD.BGF b/CONTENT/BT3025/VIDEO/GEO/ARENA/LOK_TSHD.BGF new file mode 100644 index 0000000..0cf4b3d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/ARENA/LOK_TSHD.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/ARENA/MAD_TSHD.BGF b/CONTENT/BT3025/VIDEO/GEO/ARENA/MAD_TSHD.BGF new file mode 100644 index 0000000..a5ccef4 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/ARENA/MAD_TSHD.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/ARENA/OWN_TSHD.BGF b/CONTENT/BT3025/VIDEO/GEO/ARENA/OWN_TSHD.BGF new file mode 100644 index 0000000..001d5da Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/ARENA/OWN_TSHD.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/ARENA/RAP_TSHD.BGF b/CONTENT/BT3025/VIDEO/GEO/ARENA/RAP_TSHD.BGF new file mode 100644 index 0000000..001d5da Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/ARENA/RAP_TSHD.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/ARENA/SND_TSHD.BGF b/CONTENT/BT3025/VIDEO/GEO/ARENA/SND_TSHD.BGF new file mode 100644 index 0000000..f944a37 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/ARENA/SND_TSHD.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/ARENA/STI_TSHD.BGF b/CONTENT/BT3025/VIDEO/GEO/ARENA/STI_TSHD.BGF new file mode 100644 index 0000000..001d5da Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/ARENA/STI_TSHD.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/ARENA/THR_TSHD.BGF b/CONTENT/BT3025/VIDEO/GEO/ARENA/THR_TSHD.BGF new file mode 100644 index 0000000..22f221d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/ARENA/THR_TSHD.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/ARENA/VUL_TSHD.BGF b/CONTENT/BT3025/VIDEO/GEO/ARENA/VUL_TSHD.BGF new file mode 100644 index 0000000..d6fe8fe Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/ARENA/VUL_TSHD.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/ARENA3/AVA_TSHD.BGF b/CONTENT/BT3025/VIDEO/GEO/ARENA3/AVA_TSHD.BGF new file mode 100644 index 0000000..bc54a5e Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/ARENA3/AVA_TSHD.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/ARENA3/BLH_TSHD.BGF b/CONTENT/BT3025/VIDEO/GEO/ARENA3/BLH_TSHD.BGF new file mode 100644 index 0000000..450c45d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/ARENA3/BLH_TSHD.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/ARENA3/FIR_TSHD.BGF b/CONTENT/BT3025/VIDEO/GEO/ARENA3/FIR_TSHD.BGF new file mode 100644 index 0000000..22f221d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/ARENA3/FIR_TSHD.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/ARENA3/LOK_TSHD.BGF b/CONTENT/BT3025/VIDEO/GEO/ARENA3/LOK_TSHD.BGF new file mode 100644 index 0000000..0cf4b3d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/ARENA3/LOK_TSHD.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/ARENA3/MAD_TSHD.BGF b/CONTENT/BT3025/VIDEO/GEO/ARENA3/MAD_TSHD.BGF new file mode 100644 index 0000000..a5ccef4 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/ARENA3/MAD_TSHD.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/ARENA3/OWN_TSHD.BGF b/CONTENT/BT3025/VIDEO/GEO/ARENA3/OWN_TSHD.BGF new file mode 100644 index 0000000..001d5da Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/ARENA3/OWN_TSHD.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/ARENA3/RAP_TSHD.BGF b/CONTENT/BT3025/VIDEO/GEO/ARENA3/RAP_TSHD.BGF new file mode 100644 index 0000000..001d5da Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/ARENA3/RAP_TSHD.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/ARENA3/SND_TSHD.BGF b/CONTENT/BT3025/VIDEO/GEO/ARENA3/SND_TSHD.BGF new file mode 100644 index 0000000..f944a37 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/ARENA3/SND_TSHD.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/ARENA3/STI_TSHD.BGF b/CONTENT/BT3025/VIDEO/GEO/ARENA3/STI_TSHD.BGF new file mode 100644 index 0000000..001d5da Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/ARENA3/STI_TSHD.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/ARENA3/THR_TSHD.BGF b/CONTENT/BT3025/VIDEO/GEO/ARENA3/THR_TSHD.BGF new file mode 100644 index 0000000..22f221d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/ARENA3/THR_TSHD.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/ARENA3/VUL_TSHD.BGF b/CONTENT/BT3025/VIDEO/GEO/ARENA3/VUL_TSHD.BGF new file mode 100644 index 0000000..d6fe8fe Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/ARENA3/VUL_TSHD.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/ARHORIZ.BGF b/CONTENT/BT3025/VIDEO/GEO/ARHORIZ.BGF new file mode 100644 index 0000000..551bdf4 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/ARHORIZ.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/ARLID.BGF b/CONTENT/BT3025/VIDEO/GEO/ARLID.BGF new file mode 100644 index 0000000..c84db7e Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/ARLID.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/ARMRS.BGF b/CONTENT/BT3025/VIDEO/GEO/ARMRS.BGF new file mode 100644 index 0000000..5600fc5 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/ARMRS.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/AVA_LBTO.BGF b/CONTENT/BT3025/VIDEO/GEO/AVA_LBTO.BGF new file mode 100644 index 0000000..1079bb9 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/AVA_LBTO.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/AVA_LDOO.BGF b/CONTENT/BT3025/VIDEO/GEO/AVA_LDOO.BGF new file mode 100644 index 0000000..88149a3 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/AVA_LDOO.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/AVA_LFOT.BGF b/CONTENT/BT3025/VIDEO/GEO/AVA_LFOT.BGF new file mode 100644 index 0000000..8a101d0 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/AVA_LFOT.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/AVA_LITO.BGF b/CONTENT/BT3025/VIDEO/GEO/AVA_LITO.BGF new file mode 100644 index 0000000..b1775ef Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/AVA_LITO.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/AVA_LOTO.BGF b/CONTENT/BT3025/VIDEO/GEO/AVA_LOTO.BGF new file mode 100644 index 0000000..fe2ae44 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/AVA_LOTO.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/AVA_RBTO.BGF b/CONTENT/BT3025/VIDEO/GEO/AVA_RBTO.BGF new file mode 100644 index 0000000..8c24d4d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/AVA_RBTO.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/AVA_RDOO.BGF b/CONTENT/BT3025/VIDEO/GEO/AVA_RDOO.BGF new file mode 100644 index 0000000..74e7ca6 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/AVA_RDOO.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/AVA_RFOT.BGF b/CONTENT/BT3025/VIDEO/GEO/AVA_RFOT.BGF new file mode 100644 index 0000000..1a10f31 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/AVA_RFOT.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/AVA_RITO.BGF b/CONTENT/BT3025/VIDEO/GEO/AVA_RITO.BGF new file mode 100644 index 0000000..cbbce90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/AVA_RITO.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/AVA_ROTO.BGF b/CONTENT/BT3025/VIDEO/GEO/AVA_ROTO.BGF new file mode 100644 index 0000000..5609bba Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/AVA_ROTO.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/AVX_TOR.BGF b/CONTENT/BT3025/VIDEO/GEO/AVX_TOR.BGF new file mode 100644 index 0000000..01d61c9 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/AVX_TOR.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/AW01.BGF b/CONTENT/BT3025/VIDEO/GEO/AW01.BGF new file mode 100644 index 0000000..4af501e Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/AW01.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/AW02.BGF b/CONTENT/BT3025/VIDEO/GEO/AW02.BGF new file mode 100644 index 0000000..8979d8a Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/AW02.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/AW03.BGF b/CONTENT/BT3025/VIDEO/GEO/AW03.BGF new file mode 100644 index 0000000..5864142 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/AW03.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/AW05.BGF b/CONTENT/BT3025/VIDEO/GEO/AW05.BGF new file mode 100644 index 0000000..6c4fdfa Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/AW05.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/AWBOX1.BGF b/CONTENT/BT3025/VIDEO/GEO/AWBOX1.BGF new file mode 100644 index 0000000..fd2ee82 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/AWBOX1.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/AWWLK1.BGF b/CONTENT/BT3025/VIDEO/GEO/AWWLK1.BGF new file mode 100644 index 0000000..37a8c31 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/AWWLK1.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/BAC1.BGF b/CONTENT/BT3025/VIDEO/GEO/BAC1.BGF new file mode 100644 index 0000000..3f26005 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/BAC1.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/BALL1.BGF b/CONTENT/BT3025/VIDEO/GEO/BALL1.BGF new file mode 100644 index 0000000..82b19d1 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/BALL1.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/BALL2.BGF b/CONTENT/BT3025/VIDEO/GEO/BALL2.BGF new file mode 100644 index 0000000..d47abbe Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/BALL2.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/BALL3.BGF b/CONTENT/BT3025/VIDEO/GEO/BALL3.BGF new file mode 100644 index 0000000..6676702 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/BALL3.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/BALL4.BGF b/CONTENT/BT3025/VIDEO/GEO/BALL4.BGF new file mode 100644 index 0000000..381021f Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/BALL4.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/BBG.BGF b/CONTENT/BT3025/VIDEO/GEO/BBG.BGF new file mode 100644 index 0000000..ae6178f Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/BBG.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/BCOR1.BGF b/CONTENT/BT3025/VIDEO/GEO/BCOR1.BGF new file mode 100644 index 0000000..74b2831 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/BCOR1.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/BCOR2.BGF b/CONTENT/BT3025/VIDEO/GEO/BCOR2.BGF new file mode 100644 index 0000000..8942aa7 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/BCOR2.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/BDET1.BGF b/CONTENT/BT3025/VIDEO/GEO/BDET1.BGF new file mode 100644 index 0000000..b63fa51 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/BDET1.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/BDET2.BGF b/CONTENT/BT3025/VIDEO/GEO/BDET2.BGF new file mode 100644 index 0000000..f1c55e1 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/BDET2.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/BDET3.BGF b/CONTENT/BT3025/VIDEO/GEO/BDET3.BGF new file mode 100644 index 0000000..d3f315a Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/BDET3.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/BDET4.BGF b/CONTENT/BT3025/VIDEO/GEO/BDET4.BGF new file mode 100644 index 0000000..0804c55 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/BDET4.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/BDET6.BGF b/CONTENT/BT3025/VIDEO/GEO/BDET6.BGF new file mode 100644 index 0000000..d76640c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/BDET6.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/BLD08_LP.BGF b/CONTENT/BT3025/VIDEO/GEO/BLD08_LP.BGF new file mode 100644 index 0000000..0ab6851 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/BLD08_LP.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/BLHDLARM.BGF b/CONTENT/BT3025/VIDEO/GEO/BLHDLARM.BGF new file mode 100644 index 0000000..293484b Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/BLHDLARM.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/BLHDRARM.BGF b/CONTENT/BT3025/VIDEO/GEO/BLHDRARM.BGF new file mode 100644 index 0000000..b09d8bb Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/BLHDRARM.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/BLUEBEAM.BGF b/CONTENT/BT3025/VIDEO/GEO/BLUEBEAM.BGF new file mode 100644 index 0000000..60423b6 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/BLUEBEAM.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/BNKD_FR.BGF b/CONTENT/BT3025/VIDEO/GEO/BNKD_FR.BGF new file mode 100644 index 0000000..794e470 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/BNKD_FR.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/BNK_FR.BGF b/CONTENT/BT3025/VIDEO/GEO/BNK_FR.BGF new file mode 100644 index 0000000..503e1bd Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/BNK_FR.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/BNK_LP.BGF b/CONTENT/BT3025/VIDEO/GEO/BNK_LP.BGF new file mode 100644 index 0000000..597d472 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/BNK_LP.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/BPIP1.BGF b/CONTENT/BT3025/VIDEO/GEO/BPIP1.BGF new file mode 100644 index 0000000..8a59a30 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/BPIP1.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/BPIP1D.BGF b/CONTENT/BT3025/VIDEO/GEO/BPIP1D.BGF new file mode 100644 index 0000000..d1e35d3 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/BPIP1D.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/BULLET.BGF b/CONTENT/BT3025/VIDEO/GEO/BULLET.BGF new file mode 100644 index 0000000..b97f425 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/BULLET.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/BULLS.BGF b/CONTENT/BT3025/VIDEO/GEO/BULLS.BGF new file mode 100644 index 0000000..78857ac Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/BULLS.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/BWLK1.BGF b/CONTENT/BT3025/VIDEO/GEO/BWLK1.BGF new file mode 100644 index 0000000..4009023 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/BWLK1.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/CALP_LP.BGF b/CONTENT/BT3025/VIDEO/GEO/CALP_LP.BGF new file mode 100644 index 0000000..7ac9b65 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/CALP_LP.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/CAMPOS.BGF b/CONTENT/BT3025/VIDEO/GEO/CAMPOS.BGF new file mode 100644 index 0000000..5ea1db9 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/CAMPOS.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/CAVERN/AVA_TSHD.BGF b/CONTENT/BT3025/VIDEO/GEO/CAVERN/AVA_TSHD.BGF new file mode 100644 index 0000000..bc54a5e Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/CAVERN/AVA_TSHD.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/CAVERN/BLH_TSHD.BGF b/CONTENT/BT3025/VIDEO/GEO/CAVERN/BLH_TSHD.BGF new file mode 100644 index 0000000..450c45d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/CAVERN/BLH_TSHD.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/CAVERN/FIR_TSHD.BGF b/CONTENT/BT3025/VIDEO/GEO/CAVERN/FIR_TSHD.BGF new file mode 100644 index 0000000..22f221d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/CAVERN/FIR_TSHD.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/CAVERN/LOK_TSHD.BGF b/CONTENT/BT3025/VIDEO/GEO/CAVERN/LOK_TSHD.BGF new file mode 100644 index 0000000..0cf4b3d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/CAVERN/LOK_TSHD.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/CAVERN/MAD_TSHD.BGF b/CONTENT/BT3025/VIDEO/GEO/CAVERN/MAD_TSHD.BGF new file mode 100644 index 0000000..a5ccef4 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/CAVERN/MAD_TSHD.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/CAVERN/OWN_TSHD.BGF b/CONTENT/BT3025/VIDEO/GEO/CAVERN/OWN_TSHD.BGF new file mode 100644 index 0000000..001d5da Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/CAVERN/OWN_TSHD.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/CAVERN/RAP_TSHD.BGF b/CONTENT/BT3025/VIDEO/GEO/CAVERN/RAP_TSHD.BGF new file mode 100644 index 0000000..001d5da Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/CAVERN/RAP_TSHD.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/CAVERN/SND_TSHD.BGF b/CONTENT/BT3025/VIDEO/GEO/CAVERN/SND_TSHD.BGF new file mode 100644 index 0000000..f944a37 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/CAVERN/SND_TSHD.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/CAVERN/STI_TSHD.BGF b/CONTENT/BT3025/VIDEO/GEO/CAVERN/STI_TSHD.BGF new file mode 100644 index 0000000..001d5da Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/CAVERN/STI_TSHD.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/CAVERN/THR_TSHD.BGF b/CONTENT/BT3025/VIDEO/GEO/CAVERN/THR_TSHD.BGF new file mode 100644 index 0000000..22f221d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/CAVERN/THR_TSHD.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/CAVERN/VUL_TSHD.BGF b/CONTENT/BT3025/VIDEO/GEO/CAVERN/VUL_TSHD.BGF new file mode 100644 index 0000000..d6fe8fe Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/CAVERN/VUL_TSHD.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/CH1.BGF b/CONTENT/BT3025/VIDEO/GEO/CH1.BGF new file mode 100644 index 0000000..ff584a3 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/CH1.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/CH2.BGF b/CONTENT/BT3025/VIDEO/GEO/CH2.BGF new file mode 100644 index 0000000..21ff64e Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/CH2.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/COMS.BGF b/CONTENT/BT3025/VIDEO/GEO/COMS.BGF new file mode 100644 index 0000000..f005a0f Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/COMS.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/COOLS.BGF b/CONTENT/BT3025/VIDEO/GEO/COOLS.BGF new file mode 100644 index 0000000..b666051 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/COOLS.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/CRTD_FR.BGF b/CONTENT/BT3025/VIDEO/GEO/CRTD_FR.BGF new file mode 100644 index 0000000..3eabc22 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/CRTD_FR.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/CTAR_LP.BGF b/CONTENT/BT3025/VIDEO/GEO/CTAR_LP.BGF new file mode 100644 index 0000000..f87462f Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/CTAR_LP.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/D1DIRT.BGF b/CONTENT/BT3025/VIDEO/GEO/D1DIRT.BGF new file mode 100644 index 0000000..8c35a69 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/D1DIRT.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/DAY/DIVISION.SAV/DSKY.BGF b/CONTENT/BT3025/VIDEO/GEO/DAY/DIVISION.SAV/DSKY.BGF new file mode 100644 index 0000000..7726609 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/DAY/DIVISION.SAV/DSKY.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/DAY/DSKY.BGF b/CONTENT/BT3025/VIDEO/GEO/DAY/DSKY.BGF new file mode 100644 index 0000000..34bc3a7 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/DAY/DSKY.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/DAY/DSKY.BMF b/CONTENT/BT3025/VIDEO/GEO/DAY/DSKY.BMF new file mode 100644 index 0000000..7726609 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/DAY/DSKY.BMF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/DAY/SPOT.BGF b/CONTENT/BT3025/VIDEO/GEO/DAY/SPOT.BGF new file mode 100644 index 0000000..ff4260e Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/DAY/SPOT.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/DECLOUDS.BGF b/CONTENT/BT3025/VIDEO/GEO/DECLOUDS.BGF new file mode 100644 index 0000000..f6cff2b Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/DECLOUDS.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/DISH_LP.BGF b/CONTENT/BT3025/VIDEO/GEO/DISH_LP.BGF new file mode 100644 index 0000000..503f129 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/DISH_LP.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/DIVISION.SAV/ARMRS.BGF b/CONTENT/BT3025/VIDEO/GEO/DIVISION.SAV/ARMRS.BGF new file mode 100644 index 0000000..b664bf3 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/DIVISION.SAV/ARMRS.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/DIVISION.SAV/BLD08_LP.BGF b/CONTENT/BT3025/VIDEO/GEO/DIVISION.SAV/BLD08_LP.BGF new file mode 100644 index 0000000..20a64bd Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/DIVISION.SAV/BLD08_LP.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/DIVISION.SAV/CALP_LP.BGF b/CONTENT/BT3025/VIDEO/GEO/DIVISION.SAV/CALP_LP.BGF new file mode 100644 index 0000000..d93bb50 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/DIVISION.SAV/CALP_LP.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/DIVISION.SAV/COMS.BGF b/CONTENT/BT3025/VIDEO/GEO/DIVISION.SAV/COMS.BGF new file mode 100644 index 0000000..f52dd66 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/DIVISION.SAV/COMS.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/DIVISION.SAV/CTAR_LP.BGF b/CONTENT/BT3025/VIDEO/GEO/DIVISION.SAV/CTAR_LP.BGF new file mode 100644 index 0000000..2310621 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/DIVISION.SAV/CTAR_LP.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/DIVISION.SAV/D1DIRT.BGF b/CONTENT/BT3025/VIDEO/GEO/DIVISION.SAV/D1DIRT.BGF new file mode 100644 index 0000000..74ee4cf Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/DIVISION.SAV/D1DIRT.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/DIVISION.SAV/DISH_LP.BGF b/CONTENT/BT3025/VIDEO/GEO/DIVISION.SAV/DISH_LP.BGF new file mode 100644 index 0000000..2e42c2e Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/DIVISION.SAV/DISH_LP.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/DIVISION.SAV/DTAR_LP.BGF b/CONTENT/BT3025/VIDEO/GEO/DIVISION.SAV/DTAR_LP.BGF new file mode 100644 index 0000000..51b98f4 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/DIVISION.SAV/DTAR_LP.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/DIVISION.SAV/RAVFLOOR.BGF b/CONTENT/BT3025/VIDEO/GEO/DIVISION.SAV/RAVFLOOR.BGF new file mode 100644 index 0000000..44f05bb Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/DIVISION.SAV/RAVFLOOR.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/DIVISION.SAV/RAVINES.BMF b/CONTENT/BT3025/VIDEO/GEO/DIVISION.SAV/RAVINES.BMF new file mode 100644 index 0000000..0af2207 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/DIVISION.SAV/RAVINES.BMF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/DIVISION.SAV/SEMIRIGS.BGF b/CONTENT/BT3025/VIDEO/GEO/DIVISION.SAV/SEMIRIGS.BGF new file mode 100644 index 0000000..464f71b Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/DIVISION.SAV/SEMIRIGS.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/DIVISION.SAV/TREESH.BGF b/CONTENT/BT3025/VIDEO/GEO/DIVISION.SAV/TREESH.BGF new file mode 100644 index 0000000..f1ef48d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/DIVISION.SAV/TREESH.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/DIVISION.SAV/TRUNK.BGF b/CONTENT/BT3025/VIDEO/GEO/DIVISION.SAV/TRUNK.BGF new file mode 100644 index 0000000..5a9ea40 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/DIVISION.SAV/TRUNK.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/DOZERS.BGF b/CONTENT/BT3025/VIDEO/GEO/DOZERS.BGF new file mode 100644 index 0000000..23e636f Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/DOZERS.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/DTAR_LP.BGF b/CONTENT/BT3025/VIDEO/GEO/DTAR_LP.BGF new file mode 100644 index 0000000..2ce3969 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/DTAR_LP.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/EVENING/DSKY.BGF b/CONTENT/BT3025/VIDEO/GEO/EVENING/DSKY.BGF new file mode 100644 index 0000000..7726609 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/EVENING/DSKY.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/EVENING/SKY.BGF b/CONTENT/BT3025/VIDEO/GEO/EVENING/SKY.BGF new file mode 100644 index 0000000..0375eda Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/EVENING/SKY.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/EVENING/SPOT.BGF b/CONTENT/BT3025/VIDEO/GEO/EVENING/SPOT.BGF new file mode 100644 index 0000000..ff4260e Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/EVENING/SPOT.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/EVENING/SPOT.BU b/CONTENT/BT3025/VIDEO/GEO/EVENING/SPOT.BU new file mode 100644 index 0000000..ff4260e Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/EVENING/SPOT.BU differ diff --git a/CONTENT/BT3025/VIDEO/GEO/EXDISK_A.BGF b/CONTENT/BT3025/VIDEO/GEO/EXDISK_A.BGF new file mode 100644 index 0000000..dc2e8a4 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/EXDISK_A.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/EXDISK_B.BGF b/CONTENT/BT3025/VIDEO/GEO/EXDISK_B.BGF new file mode 100644 index 0000000..dc2e8a4 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/EXDISK_B.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/EXDISK_C.BGF b/CONTENT/BT3025/VIDEO/GEO/EXDISK_C.BGF new file mode 100644 index 0000000..b3941bd Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/EXDISK_C.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/EXP.BGF b/CONTENT/BT3025/VIDEO/GEO/EXP.BGF new file mode 100644 index 0000000..3a61e7b Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/EXP.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/FD1.BGF b/CONTENT/BT3025/VIDEO/GEO/FD1.BGF new file mode 100644 index 0000000..37f7a93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/FD1.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/FD2.BGF b/CONTENT/BT3025/VIDEO/GEO/FD2.BGF new file mode 100644 index 0000000..dc6d3a1 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/FD2.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/FD3.BGF b/CONTENT/BT3025/VIDEO/GEO/FD3.BGF new file mode 100644 index 0000000..d4354e7 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/FD3.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/FD4.BGF b/CONTENT/BT3025/VIDEO/GEO/FD4.BGF new file mode 100644 index 0000000..04d9d04 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/FD4.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/FL1.BGF b/CONTENT/BT3025/VIDEO/GEO/FL1.BGF new file mode 100644 index 0000000..71cc45c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/FL1.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/FLAMEBIG.BGF b/CONTENT/BT3025/VIDEO/GEO/FLAMEBIG.BGF new file mode 100644 index 0000000..290a26d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/FLAMEBIG.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/FLAMEBIG.VGF b/CONTENT/BT3025/VIDEO/GEO/FLAMEBIG.VGF new file mode 100644 index 0000000..28baf2e --- /dev/null +++ b/CONTENT/BT3025/VIDEO/GEO/FLAMEBIG.VGF @@ -0,0 +1,71 @@ +DIV-VIZ2 +HEADER +( + VERSION=2:08; + DATE=31:1:96; + TIME=9:41; + UNIT=m +) +{ +} + +BOUNDARY +{ + BBOX {-6.7591,-0.5093,-0.7988,7.059,19.0764,2.7726,0,0,0} + SPHERE {0.14995,9.28355,0.9869,12.0483} +} +OBJECT +( +) +{ + LOD (DISTANCE= 0, 1200) + { + GEOGROUP + ( + F_MATERIAL="btfx:firesmoke1_mtl"; + VERTEX=RGB 2D_TEXTURE ; + ) + { + PMESH { + VERTEX_POOL { + {2.4853, 19.0764, 0.9001, 0.561, 0.141, 0.043, -0.2, 0.6, 1} + {0.2835, 9.067, 0.4099, 0.828, 0.402, 0.101, -0.033, 0.579633, 0.697047} + {4.7859, 6.2476, 0.4281, 0.659, 0.204, 0.051, -0.194, 1, 0.5} + {4.2288, 5.4624, 0.0423, 0.624, 0.231, 0.075, -0.2, 1, 0.375} + {0.246, 9.0905, 0.4098, 0.828, 0.401, 0.101, -0.028, 0.576131, 0.698689} + {0.2186, 8.5412, 0.2181, 0.838, 0.416, 0.105, 0.035, 0.599549, 0.625282} + {-3.2767, 9.9605, 0.516, 0.659, 0.165, 0.035, -0.194, 0.2, 0.75} + {-3.7826, 11.6132, 0.3936, 0.655, 0.161, 0.031, -0.2, 0.2, 0.875} + {-0.0403, 8.0209, 0.3118, 0.84, 0.415, 0.104, 0.08, 0.544957, 0.588301} + {-4.0912, 1.976, -0.7231, 0.78, 0.408, 0.125, 0.053, 0.2, 0.25} + {-0.2212, 3.5977, -0.3671, 0.902, 0.62, 0.309, 0.285, 0.572117, 0.308143} + {-0.9121, 3.2437, 2.0354, 0.941, 0.733, 0.502, 0.153, 0.6, 0.25} + {1.0239, -0.4439, 2.7726, 1, 0.988, 0.973, 1.2, 0.6, 0} + {-6.7591, -0.4241, -0.7988, 0.976, 0.8, 0.502, 0.735, 0.2, 0} + {7.059, -0.5093, 0.0944, 0.859, 0.478, 0.137, -0.135, 1, 0} + } + CONNECTION_LIST { + {0, 1, 2} + {3, 2, 1} + {6, 5, 7} + {5, 8, 3} + {9, 8, 6} + {8, 10, 3} + {11, 10, 9} + {4, 7, 5} + {12, 9, 13} + {12, 14, 3} + {12, 11, 9} + {12, 3, 11} + {11, 3, 10} + {8, 9, 10} + {5, 6, 8} + } + CONNECTION_LIST (PCOUNT=4){ + {3, 1, 4, 5} + {0, 7, 4, 1} + } + } + } + } +} diff --git a/CONTENT/BT3025/VIDEO/GEO/FLAMESML.BGF b/CONTENT/BT3025/VIDEO/GEO/FLAMESML.BGF new file mode 100644 index 0000000..15bffa4 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/FLAMESML.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/FLAMESML.VGF b/CONTENT/BT3025/VIDEO/GEO/FLAMESML.VGF new file mode 100644 index 0000000..81d7edc --- /dev/null +++ b/CONTENT/BT3025/VIDEO/GEO/FLAMESML.VGF @@ -0,0 +1,30 @@ +DIV-VIZ2 +HEADER +( + VERSION=2:08; + DATE=17:2:96; + TIME=1:22; + UNIT=m +) +{ +} + +BOUNDARY +{ + BBOX {0,0,0,0,0,0,0,0,0} + SPHERE {0,0,0,0} +} +OBJECT +( +) +{ + GEOGROUP + ( + F_MATERIAL="btfx:sparkred_mtl"; + ) + { + SPHERELIST { + {0, 0, 0, 0} + } + } +} diff --git a/CONTENT/BT3025/VIDEO/GEO/FP0_LP.BGF b/CONTENT/BT3025/VIDEO/GEO/FP0_LP.BGF new file mode 100644 index 0000000..c3593a7 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/FP0_LP.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/FP1D.BGF b/CONTENT/BT3025/VIDEO/GEO/FP1D.BGF new file mode 100644 index 0000000..109277e Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/FP1D.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/FP2.BGF b/CONTENT/BT3025/VIDEO/GEO/FP2.BGF new file mode 100644 index 0000000..15f1b2d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/FP2.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/FP2_LP.BGF b/CONTENT/BT3025/VIDEO/GEO/FP2_LP.BGF new file mode 100644 index 0000000..df37deb Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/FP2_LP.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/FT1D_FR.BGF b/CONTENT/BT3025/VIDEO/GEO/FT1D_FR.BGF new file mode 100644 index 0000000..9048dd4 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/FT1D_FR.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/FT1_FR.BGF b/CONTENT/BT3025/VIDEO/GEO/FT1_FR.BGF new file mode 100644 index 0000000..45cbbfa Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/FT1_FR.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/FT1_LP.BGF b/CONTENT/BT3025/VIDEO/GEO/FT1_LP.BGF new file mode 100644 index 0000000..9951b40 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/FT1_LP.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/FT2D_FR.BGF b/CONTENT/BT3025/VIDEO/GEO/FT2D_FR.BGF new file mode 100644 index 0000000..1b304bd Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/FT2D_FR.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/FT2_FR.BGF b/CONTENT/BT3025/VIDEO/GEO/FT2_FR.BGF new file mode 100644 index 0000000..e97d23f Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/FT2_FR.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/FT2_LP.BGF b/CONTENT/BT3025/VIDEO/GEO/FT2_LP.BGF new file mode 100644 index 0000000..f6cffd1 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/FT2_LP.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/GD5.BGF b/CONTENT/BT3025/VIDEO/GEO/GD5.BGF new file mode 100644 index 0000000..a6603d4 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/GD5.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/GNR_LP.BGF b/CONTENT/BT3025/VIDEO/GEO/GNR_LP.BGF new file mode 100644 index 0000000..c04838c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/GNR_LP.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/GREEBEAM.BGF b/CONTENT/BT3025/VIDEO/GEO/GREEBEAM.BGF new file mode 100644 index 0000000..a53564b Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/GREEBEAM.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/HARASS.BGF b/CONTENT/BT3025/VIDEO/GEO/HARASS.BGF new file mode 100644 index 0000000..114b0e5 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/HARASS.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/HC1D_FR.BGF b/CONTENT/BT3025/VIDEO/GEO/HC1D_FR.BGF new file mode 100644 index 0000000..4ae3209 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/HC1D_FR.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/HC1_LP.BGF b/CONTENT/BT3025/VIDEO/GEO/HC1_LP.BGF new file mode 100644 index 0000000..bff68a4 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/HC1_LP.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/HC2D_FR.BGF b/CONTENT/BT3025/VIDEO/GEO/HC2D_FR.BGF new file mode 100644 index 0000000..c049f3e Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/HC2D_FR.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/HC2_LP.BGF b/CONTENT/BT3025/VIDEO/GEO/HC2_LP.BGF new file mode 100644 index 0000000..69b2971 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/HC2_LP.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/HN1_FR.BGF b/CONTENT/BT3025/VIDEO/GEO/HN1_FR.BGF new file mode 100644 index 0000000..d290b39 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/HN1_FR.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/HN1_LP.BGF b/CONTENT/BT3025/VIDEO/GEO/HN1_LP.BGF new file mode 100644 index 0000000..ca0bc0e Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/HN1_LP.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/HOTBOX.BGF b/CONTENT/BT3025/VIDEO/GEO/HOTBOX.BGF new file mode 100644 index 0000000..d7b5c21 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/HOTBOX.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/HUMMS.BGF b/CONTENT/BT3025/VIDEO/GEO/HUMMS.BGF new file mode 100644 index 0000000..75f63f1 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/HUMMS.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/HUT_FR.BGF b/CONTENT/BT3025/VIDEO/GEO/HUT_FR.BGF new file mode 100644 index 0000000..7799d70 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/HUT_FR.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/HUT_LP.BGF b/CONTENT/BT3025/VIDEO/GEO/HUT_LP.BGF new file mode 100644 index 0000000..20b6277 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/HUT_LP.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/JAX1.BGF b/CONTENT/BT3025/VIDEO/GEO/JAX1.BGF new file mode 100644 index 0000000..8288e93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/JAX1.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/JAX1D_FR.BGF b/CONTENT/BT3025/VIDEO/GEO/JAX1D_FR.BGF new file mode 100644 index 0000000..e493aa4 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/JAX1D_FR.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/JAX1_FR.BGF b/CONTENT/BT3025/VIDEO/GEO/JAX1_FR.BGF new file mode 100644 index 0000000..5714cee Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/JAX1_FR.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/JAX2.BGF b/CONTENT/BT3025/VIDEO/GEO/JAX2.BGF new file mode 100644 index 0000000..5c39c47 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/JAX2.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/JAX2D_FR.BGF b/CONTENT/BT3025/VIDEO/GEO/JAX2D_FR.BGF new file mode 100644 index 0000000..5714cee Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/JAX2D_FR.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/JAX2_FR.BGF b/CONTENT/BT3025/VIDEO/GEO/JAX2_FR.BGF new file mode 100644 index 0000000..5714cee Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/JAX2_FR.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/LDBR.BGF b/CONTENT/BT3025/VIDEO/GEO/LDBR.BGF new file mode 100644 index 0000000..93b7c09 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/LDBR.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/LOKDLIGH.BGF b/CONTENT/BT3025/VIDEO/GEO/LOKDLIGH.BGF new file mode 100644 index 0000000..fd16f86 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/LOKDLIGH.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/LOKDRARM.BGF b/CONTENT/BT3025/VIDEO/GEO/LOKDRARM.BGF new file mode 100644 index 0000000..be0500c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/LOKDRARM.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/LOKDRGUN.BGF b/CONTENT/BT3025/VIDEO/GEO/LOKDRGUN.BGF new file mode 100644 index 0000000..ed183b7 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/LOKDRGUN.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/LOK_LIGH.BGF b/CONTENT/BT3025/VIDEO/GEO/LOK_LIGH.BGF new file mode 100644 index 0000000..29780dc Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/LOK_LIGH.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/LOK_MSL.BGF b/CONTENT/BT3025/VIDEO/GEO/LOK_MSL.BGF new file mode 100644 index 0000000..4d859e6 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/LOK_MSL.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/LOX_TOR.BGF b/CONTENT/BT3025/VIDEO/GEO/LOX_TOR.BGF new file mode 100644 index 0000000..71ce1ec Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/LOX_TOR.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/LRMS.BGF b/CONTENT/BT3025/VIDEO/GEO/LRMS.BGF new file mode 100644 index 0000000..c24ea4d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/LRMS.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/MAD_LBTO.BGF b/CONTENT/BT3025/VIDEO/GEO/MAD_LBTO.BGF new file mode 100644 index 0000000..b419ac7 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/MAD_LBTO.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/MAD_LDOO.BGF b/CONTENT/BT3025/VIDEO/GEO/MAD_LDOO.BGF new file mode 100644 index 0000000..1c97aee Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/MAD_LDOO.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/MAD_LFOT.BGF b/CONTENT/BT3025/VIDEO/GEO/MAD_LFOT.BGF new file mode 100644 index 0000000..c03d348 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/MAD_LFOT.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/MAD_LITO.BGF b/CONTENT/BT3025/VIDEO/GEO/MAD_LITO.BGF new file mode 100644 index 0000000..bb6ee2c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/MAD_LITO.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/MAD_LOTO.BGF b/CONTENT/BT3025/VIDEO/GEO/MAD_LOTO.BGF new file mode 100644 index 0000000..6076366 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/MAD_LOTO.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/MAD_RBTO.BGF b/CONTENT/BT3025/VIDEO/GEO/MAD_RBTO.BGF new file mode 100644 index 0000000..0af332d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/MAD_RBTO.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/MAD_RDOO.BGF b/CONTENT/BT3025/VIDEO/GEO/MAD_RDOO.BGF new file mode 100644 index 0000000..959894a Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/MAD_RDOO.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/MAD_RFOT.BGF b/CONTENT/BT3025/VIDEO/GEO/MAD_RFOT.BGF new file mode 100644 index 0000000..fa64f70 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/MAD_RFOT.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/MAD_RITO.BGF b/CONTENT/BT3025/VIDEO/GEO/MAD_RITO.BGF new file mode 100644 index 0000000..1aec2e1 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/MAD_RITO.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/MAD_ROTO.BGF b/CONTENT/BT3025/VIDEO/GEO/MAD_ROTO.BGF new file mode 100644 index 0000000..c259166 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/MAD_ROTO.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/MAX_LBTO.BGF b/CONTENT/BT3025/VIDEO/GEO/MAX_LBTO.BGF new file mode 100644 index 0000000..9736d3e Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/MAX_LBTO.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/MAX_LFOT.BGF b/CONTENT/BT3025/VIDEO/GEO/MAX_LFOT.BGF new file mode 100644 index 0000000..eb0f259 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/MAX_LFOT.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/MAX_LITO.BGF b/CONTENT/BT3025/VIDEO/GEO/MAX_LITO.BGF new file mode 100644 index 0000000..eb8e2d0 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/MAX_LITO.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/MAX_LOTO.BGF b/CONTENT/BT3025/VIDEO/GEO/MAX_LOTO.BGF new file mode 100644 index 0000000..3a0a0ae Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/MAX_LOTO.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/MAX_RBTO.BGF b/CONTENT/BT3025/VIDEO/GEO/MAX_RBTO.BGF new file mode 100644 index 0000000..685a7df Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/MAX_RBTO.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/MAX_RFOT.BGF b/CONTENT/BT3025/VIDEO/GEO/MAX_RFOT.BGF new file mode 100644 index 0000000..241ad98 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/MAX_RFOT.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/MAX_RITO.BGF b/CONTENT/BT3025/VIDEO/GEO/MAX_RITO.BGF new file mode 100644 index 0000000..29b21d0 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/MAX_RITO.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/MAX_ROTO.BGF b/CONTENT/BT3025/VIDEO/GEO/MAX_ROTO.BGF new file mode 100644 index 0000000..53adbba Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/MAX_ROTO.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/MECHMOVS.BGF b/CONTENT/BT3025/VIDEO/GEO/MECHMOVS.BGF new file mode 100644 index 0000000..d64e0eb Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/MECHMOVS.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/MISSILE.BGF b/CONTENT/BT3025/VIDEO/GEO/MISSILE.BGF new file mode 100644 index 0000000..6304728 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/MISSILE.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/MORNING/DSKY.BGF b/CONTENT/BT3025/VIDEO/GEO/MORNING/DSKY.BGF new file mode 100644 index 0000000..34bc3a7 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/MORNING/DSKY.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/MORNING/RAVFLOOR.BGF b/CONTENT/BT3025/VIDEO/GEO/MORNING/RAVFLOOR.BGF new file mode 100644 index 0000000..44f05bb Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/MORNING/RAVFLOOR.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/MORNING/SEMIS.BGF b/CONTENT/BT3025/VIDEO/GEO/MORNING/SEMIS.BGF new file mode 100644 index 0000000..765faea Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/MORNING/SEMIS.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/MORNING/SKY.BGF b/CONTENT/BT3025/VIDEO/GEO/MORNING/SKY.BGF new file mode 100644 index 0000000..0375eda Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/MORNING/SKY.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/MORNING/SPOT.BGF b/CONTENT/BT3025/VIDEO/GEO/MORNING/SPOT.BGF new file mode 100644 index 0000000..ff4260e Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/MORNING/SPOT.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/MSLB_LP.BGF b/CONTENT/BT3025/VIDEO/GEO/MSLB_LP.BGF new file mode 100644 index 0000000..30bb5dc Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/MSLB_LP.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/MSLG_FR.BGF b/CONTENT/BT3025/VIDEO/GEO/MSLG_FR.BGF new file mode 100644 index 0000000..ae03907 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/MSLG_FR.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/MSLG_LP.BGF b/CONTENT/BT3025/VIDEO/GEO/MSLG_LP.BGF new file mode 100644 index 0000000..dfe2773 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/MSLG_LP.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/MSLH_FR.BGF b/CONTENT/BT3025/VIDEO/GEO/MSLH_FR.BGF new file mode 100644 index 0000000..56ccf1c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/MSLH_FR.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/MSLH_LP.BGF b/CONTENT/BT3025/VIDEO/GEO/MSLH_LP.BGF new file mode 100644 index 0000000..b845cfe Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/MSLH_LP.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/MSLRD_FR.BGF b/CONTENT/BT3025/VIDEO/GEO/MSLRD_FR.BGF new file mode 100644 index 0000000..1efaca4 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/MSLRD_FR.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/MSLR_FR.BGF b/CONTENT/BT3025/VIDEO/GEO/MSLR_FR.BGF new file mode 100644 index 0000000..6066cd8 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/MSLR_FR.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/MSLR_LP.BGF b/CONTENT/BT3025/VIDEO/GEO/MSLR_LP.BGF new file mode 100644 index 0000000..6d20373 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/MSLR_LP.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/MSL_FR.BGF b/CONTENT/BT3025/VIDEO/GEO/MSL_FR.BGF new file mode 100644 index 0000000..3736774 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/MSL_FR.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/MUZFLASH.BGF b/CONTENT/BT3025/VIDEO/GEO/MUZFLASH.BGF new file mode 100644 index 0000000..83d4a90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/MUZFLASH.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/NIGHT/DSKY.BGF b/CONTENT/BT3025/VIDEO/GEO/NIGHT/DSKY.BGF new file mode 100644 index 0000000..34bc3a7 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/NIGHT/DSKY.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/NIGHT/SKY.BGF b/CONTENT/BT3025/VIDEO/GEO/NIGHT/SKY.BGF new file mode 100644 index 0000000..73d1df7 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/NIGHT/SKY.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/NIGHT/SPOT.BGF b/CONTENT/BT3025/VIDEO/GEO/NIGHT/SPOT.BGF new file mode 100644 index 0000000..133beed Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/NIGHT/SPOT.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/NTR.BGF b/CONTENT/BT3025/VIDEO/GEO/NTR.BGF new file mode 100644 index 0000000..ebf8e34 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/NTR.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/OWNDCAM.BGF b/CONTENT/BT3025/VIDEO/GEO/OWNDCAM.BGF new file mode 100644 index 0000000..cc34451 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/OWNDCAM.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/OWN_LANT.BGF b/CONTENT/BT3025/VIDEO/GEO/OWN_LANT.BGF new file mode 100644 index 0000000..0dad0d0 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/OWN_LANT.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/OWN_RANT.BGF b/CONTENT/BT3025/VIDEO/GEO/OWN_RANT.BGF new file mode 100644 index 0000000..e9dc4ce Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/OWN_RANT.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/OWX_LBTO.BGF b/CONTENT/BT3025/VIDEO/GEO/OWX_LBTO.BGF new file mode 100644 index 0000000..9ba848b Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/OWX_LBTO.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/OWX_LDLE.BGF b/CONTENT/BT3025/VIDEO/GEO/OWX_LDLE.BGF new file mode 100644 index 0000000..4e0dd85 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/OWX_LDLE.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/OWX_LFTO.BGF b/CONTENT/BT3025/VIDEO/GEO/OWX_LFTO.BGF new file mode 100644 index 0000000..a95bb91 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/OWX_LFTO.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/OWX_RBTO.BGF b/CONTENT/BT3025/VIDEO/GEO/OWX_RBTO.BGF new file mode 100644 index 0000000..6ab4c8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/OWX_RBTO.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/OWX_RDLE.BGF b/CONTENT/BT3025/VIDEO/GEO/OWX_RDLE.BGF new file mode 100644 index 0000000..9355501 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/OWX_RDLE.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/OWX_RFTO.BGF b/CONTENT/BT3025/VIDEO/GEO/OWX_RFTO.BGF new file mode 100644 index 0000000..80bfdf2 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/OWX_RFTO.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/PDSD_FR.BGF b/CONTENT/BT3025/VIDEO/GEO/PDSD_FR.BGF new file mode 100644 index 0000000..2a73ded Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/PDSD_FR.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/PDSH_FR.BGF b/CONTENT/BT3025/VIDEO/GEO/PDSH_FR.BGF new file mode 100644 index 0000000..e6af83b Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/PDSH_FR.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/PDSH_LP.BGF b/CONTENT/BT3025/VIDEO/GEO/PDSH_LP.BGF new file mode 100644 index 0000000..28a2694 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/PDSH_LP.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/PGNDBASE.BGF b/CONTENT/BT3025/VIDEO/GEO/PGNDBASE.BGF new file mode 100644 index 0000000..8283e3e Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/PGNDBASE.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/PGND_FR.BGF b/CONTENT/BT3025/VIDEO/GEO/PGND_FR.BGF new file mode 100644 index 0000000..0fd634e Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/PGND_FR.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/PGN_BASE.BGF b/CONTENT/BT3025/VIDEO/GEO/PGN_BASE.BGF new file mode 100644 index 0000000..7561937 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/PGN_BASE.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/PGN_FR.BGF b/CONTENT/BT3025/VIDEO/GEO/PGN_FR.BGF new file mode 100644 index 0000000..d77c12d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/PGN_FR.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/PLACE1.BGF b/CONTENT/BT3025/VIDEO/GEO/PLACE1.BGF new file mode 100644 index 0000000..b3d899d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/PLACE1.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/PLACE2.BGF b/CONTENT/BT3025/VIDEO/GEO/PLACE2.BGF new file mode 100644 index 0000000..68d1e7a Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/PLACE2.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/PLACE3.BGF b/CONTENT/BT3025/VIDEO/GEO/PLACE3.BGF new file mode 100644 index 0000000..a93421e Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/PLACE3.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/PLACE4.BGF b/CONTENT/BT3025/VIDEO/GEO/PLACE4.BGF new file mode 100644 index 0000000..034b8b0 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/PLACE4.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/PLACE5.BGF b/CONTENT/BT3025/VIDEO/GEO/PLACE5.BGF new file mode 100644 index 0000000..54fb5f9 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/PLACE5.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/PLACE6.BGF b/CONTENT/BT3025/VIDEO/GEO/PLACE6.BGF new file mode 100644 index 0000000..bba49db Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/PLACE6.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/PLACE7.BGF b/CONTENT/BT3025/VIDEO/GEO/PLACE7.BGF new file mode 100644 index 0000000..5871fea Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/PLACE7.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/PLACE8.BGF b/CONTENT/BT3025/VIDEO/GEO/PLACE8.BGF new file mode 100644 index 0000000..b5c8b7e Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/PLACE8.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/PLIT_FR.BGF b/CONTENT/BT3025/VIDEO/GEO/PLIT_FR.BGF new file mode 100644 index 0000000..039dab3 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/PLIT_FR.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/PLTD_FR.BGF b/CONTENT/BT3025/VIDEO/GEO/PLTD_FR.BGF new file mode 100644 index 0000000..984ba2b Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/PLTD_FR.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/PNAME1.BGF b/CONTENT/BT3025/VIDEO/GEO/PNAME1.BGF new file mode 100644 index 0000000..710d6c9 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/PNAME1.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/PNAME2.BGF b/CONTENT/BT3025/VIDEO/GEO/PNAME2.BGF new file mode 100644 index 0000000..8228574 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/PNAME2.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/PNAME3.BGF b/CONTENT/BT3025/VIDEO/GEO/PNAME3.BGF new file mode 100644 index 0000000..383812c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/PNAME3.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/PNAME4.BGF b/CONTENT/BT3025/VIDEO/GEO/PNAME4.BGF new file mode 100644 index 0000000..71a15eb Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/PNAME4.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/PNAME5.BGF b/CONTENT/BT3025/VIDEO/GEO/PNAME5.BGF new file mode 100644 index 0000000..703888f Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/PNAME5.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/PNAME6.BGF b/CONTENT/BT3025/VIDEO/GEO/PNAME6.BGF new file mode 100644 index 0000000..21252d7 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/PNAME6.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/PNAME7.BGF b/CONTENT/BT3025/VIDEO/GEO/PNAME7.BGF new file mode 100644 index 0000000..d2c7c3c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/PNAME7.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/PNAME8.BGF b/CONTENT/BT3025/VIDEO/GEO/PNAME8.BGF new file mode 100644 index 0000000..fac4c61 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/PNAME8.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/POLAR/AVA_TSHD.BGF b/CONTENT/BT3025/VIDEO/GEO/POLAR/AVA_TSHD.BGF new file mode 100644 index 0000000..f4f35cc Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/POLAR/AVA_TSHD.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/POLAR/BLH_TSHD.BGF b/CONTENT/BT3025/VIDEO/GEO/POLAR/BLH_TSHD.BGF new file mode 100644 index 0000000..f4f35cc Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/POLAR/BLH_TSHD.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/POLAR/FIR_TSHD.BGF b/CONTENT/BT3025/VIDEO/GEO/POLAR/FIR_TSHD.BGF new file mode 100644 index 0000000..f4f35cc Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/POLAR/FIR_TSHD.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/POLAR/LOK_TSHD.BGF b/CONTENT/BT3025/VIDEO/GEO/POLAR/LOK_TSHD.BGF new file mode 100644 index 0000000..f4f35cc Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/POLAR/LOK_TSHD.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/POLAR/MAD_TSHD.BGF b/CONTENT/BT3025/VIDEO/GEO/POLAR/MAD_TSHD.BGF new file mode 100644 index 0000000..f4f35cc Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/POLAR/MAD_TSHD.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/POLAR/OWN_TSHD.BGF b/CONTENT/BT3025/VIDEO/GEO/POLAR/OWN_TSHD.BGF new file mode 100644 index 0000000..f4f35cc Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/POLAR/OWN_TSHD.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/POLAR/RAP_TSHD.BGF b/CONTENT/BT3025/VIDEO/GEO/POLAR/RAP_TSHD.BGF new file mode 100644 index 0000000..001d5da Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/POLAR/RAP_TSHD.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/POLAR/SND_TSHD.BGF b/CONTENT/BT3025/VIDEO/GEO/POLAR/SND_TSHD.BGF new file mode 100644 index 0000000..f4f35cc Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/POLAR/SND_TSHD.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/POLAR/STI_TSHD.BGF b/CONTENT/BT3025/VIDEO/GEO/POLAR/STI_TSHD.BGF new file mode 100644 index 0000000..f4f35cc Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/POLAR/STI_TSHD.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/POLAR/THR_TSHD.BGF b/CONTENT/BT3025/VIDEO/GEO/POLAR/THR_TSHD.BGF new file mode 100644 index 0000000..f4f35cc Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/POLAR/THR_TSHD.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/POLAR/VUL_TSHD.BGF b/CONTENT/BT3025/VIDEO/GEO/POLAR/VUL_TSHD.BGF new file mode 100644 index 0000000..f4f35cc Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/POLAR/VUL_TSHD.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/PROFILE1.BGF b/CONTENT/BT3025/VIDEO/GEO/PROFILE1.BGF new file mode 100644 index 0000000..59ed31c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/PROFILE1.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/PROFILE2.BGF b/CONTENT/BT3025/VIDEO/GEO/PROFILE2.BGF new file mode 100644 index 0000000..c437b81 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/PROFILE2.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/PROFILE3.BGF b/CONTENT/BT3025/VIDEO/GEO/PROFILE3.BGF new file mode 100644 index 0000000..4643e97 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/PROFILE3.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/PROFILE4.BGF b/CONTENT/BT3025/VIDEO/GEO/PROFILE4.BGF new file mode 100644 index 0000000..8ecebc7 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/PROFILE4.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/PROFILE5.BGF b/CONTENT/BT3025/VIDEO/GEO/PROFILE5.BGF new file mode 100644 index 0000000..edf1b16 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/PROFILE5.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/PROFILE6.BGF b/CONTENT/BT3025/VIDEO/GEO/PROFILE6.BGF new file mode 100644 index 0000000..79418fe Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/PROFILE6.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/PROFILE7.BGF b/CONTENT/BT3025/VIDEO/GEO/PROFILE7.BGF new file mode 100644 index 0000000..1a62653 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/PROFILE7.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/PROFILE8.BGF b/CONTENT/BT3025/VIDEO/GEO/PROFILE8.BGF new file mode 100644 index 0000000..ab86090 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/PROFILE8.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/PWIN1.BGF b/CONTENT/BT3025/VIDEO/GEO/PWIN1.BGF new file mode 100644 index 0000000..ba181d4 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/PWIN1.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/PWIN2.BGF b/CONTENT/BT3025/VIDEO/GEO/PWIN2.BGF new file mode 100644 index 0000000..b865e68 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/PWIN2.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/PWIN3.BGF b/CONTENT/BT3025/VIDEO/GEO/PWIN3.BGF new file mode 100644 index 0000000..c790b0c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/PWIN3.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/PWIN4.BGF b/CONTENT/BT3025/VIDEO/GEO/PWIN4.BGF new file mode 100644 index 0000000..fd86e02 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/PWIN4.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/PWIN5.BGF b/CONTENT/BT3025/VIDEO/GEO/PWIN5.BGF new file mode 100644 index 0000000..a1c7e53 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/PWIN5.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/PWIN6.BGF b/CONTENT/BT3025/VIDEO/GEO/PWIN6.BGF new file mode 100644 index 0000000..66150d7 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/PWIN6.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/PWIN7.BGF b/CONTENT/BT3025/VIDEO/GEO/PWIN7.BGF new file mode 100644 index 0000000..184ab96 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/PWIN7.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/PWIN8.BGF b/CONTENT/BT3025/VIDEO/GEO/PWIN8.BGF new file mode 100644 index 0000000..66ac11f Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/PWIN8.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/RAV/AVA_TSHD.BGF b/CONTENT/BT3025/VIDEO/GEO/RAV/AVA_TSHD.BGF new file mode 100644 index 0000000..bc54a5e Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/RAV/AVA_TSHD.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/RAV/BLH_TSHD.BGF b/CONTENT/BT3025/VIDEO/GEO/RAV/BLH_TSHD.BGF new file mode 100644 index 0000000..450c45d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/RAV/BLH_TSHD.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/RAV/FIR_TSHD.BGF b/CONTENT/BT3025/VIDEO/GEO/RAV/FIR_TSHD.BGF new file mode 100644 index 0000000..22f221d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/RAV/FIR_TSHD.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/RAV/LOK_TSHD.BGF b/CONTENT/BT3025/VIDEO/GEO/RAV/LOK_TSHD.BGF new file mode 100644 index 0000000..0cf4b3d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/RAV/LOK_TSHD.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/RAV/MAD_TSHD.BGF b/CONTENT/BT3025/VIDEO/GEO/RAV/MAD_TSHD.BGF new file mode 100644 index 0000000..a5ccef4 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/RAV/MAD_TSHD.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/RAV/OWN_TSHD.BGF b/CONTENT/BT3025/VIDEO/GEO/RAV/OWN_TSHD.BGF new file mode 100644 index 0000000..001d5da Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/RAV/OWN_TSHD.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/RAV/RAP_TSHD.BGF b/CONTENT/BT3025/VIDEO/GEO/RAV/RAP_TSHD.BGF new file mode 100644 index 0000000..001d5da Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/RAV/RAP_TSHD.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/RAV/SND_TSHD.BGF b/CONTENT/BT3025/VIDEO/GEO/RAV/SND_TSHD.BGF new file mode 100644 index 0000000..f944a37 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/RAV/SND_TSHD.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/RAV/STI_TSHD.BGF b/CONTENT/BT3025/VIDEO/GEO/RAV/STI_TSHD.BGF new file mode 100644 index 0000000..001d5da Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/RAV/STI_TSHD.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/RAV/THR_TSHD.BGF b/CONTENT/BT3025/VIDEO/GEO/RAV/THR_TSHD.BGF new file mode 100644 index 0000000..22f221d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/RAV/THR_TSHD.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/RAV/VUL_TSHD.BGF b/CONTENT/BT3025/VIDEO/GEO/RAV/VUL_TSHD.BGF new file mode 100644 index 0000000..d6fe8fe Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/RAV/VUL_TSHD.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/RAV1/AVA_TSHD.BGF b/CONTENT/BT3025/VIDEO/GEO/RAV1/AVA_TSHD.BGF new file mode 100644 index 0000000..bc54a5e Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/RAV1/AVA_TSHD.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/RAV1/BLH_TSHD.BGF b/CONTENT/BT3025/VIDEO/GEO/RAV1/BLH_TSHD.BGF new file mode 100644 index 0000000..450c45d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/RAV1/BLH_TSHD.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/RAV1/FIR_TSHD.BGF b/CONTENT/BT3025/VIDEO/GEO/RAV1/FIR_TSHD.BGF new file mode 100644 index 0000000..22f221d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/RAV1/FIR_TSHD.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/RAV1/LOK_TSHD.BGF b/CONTENT/BT3025/VIDEO/GEO/RAV1/LOK_TSHD.BGF new file mode 100644 index 0000000..0cf4b3d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/RAV1/LOK_TSHD.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/RAV1/MAD_TSHD.BGF b/CONTENT/BT3025/VIDEO/GEO/RAV1/MAD_TSHD.BGF new file mode 100644 index 0000000..a5ccef4 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/RAV1/MAD_TSHD.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/RAV1/OWN_TSHD.BGF b/CONTENT/BT3025/VIDEO/GEO/RAV1/OWN_TSHD.BGF new file mode 100644 index 0000000..001d5da Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/RAV1/OWN_TSHD.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/RAV1/RAP_TSHD.BGF b/CONTENT/BT3025/VIDEO/GEO/RAV1/RAP_TSHD.BGF new file mode 100644 index 0000000..001d5da Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/RAV1/RAP_TSHD.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/RAV1/SND_TSHD.BGF b/CONTENT/BT3025/VIDEO/GEO/RAV1/SND_TSHD.BGF new file mode 100644 index 0000000..f944a37 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/RAV1/SND_TSHD.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/RAV1/STI_TSHD.BGF b/CONTENT/BT3025/VIDEO/GEO/RAV1/STI_TSHD.BGF new file mode 100644 index 0000000..001d5da Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/RAV1/STI_TSHD.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/RAV1/THR_TSHD.BGF b/CONTENT/BT3025/VIDEO/GEO/RAV1/THR_TSHD.BGF new file mode 100644 index 0000000..22f221d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/RAV1/THR_TSHD.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/RAV1/VUL_TSHD.BGF b/CONTENT/BT3025/VIDEO/GEO/RAV1/VUL_TSHD.BGF new file mode 100644 index 0000000..d6fe8fe Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/RAV1/VUL_TSHD.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/RAVFLOOR.BGF b/CONTENT/BT3025/VIDEO/GEO/RAVFLOOR.BGF new file mode 100644 index 0000000..6f0ddbb Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/RAVFLOOR.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/RAVINES.BMF b/CONTENT/BT3025/VIDEO/GEO/RAVINES.BMF new file mode 100644 index 0000000..835b219 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/RAVINES.BMF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/RB6.BGF b/CONTENT/BT3025/VIDEO/GEO/RB6.BGF new file mode 100644 index 0000000..8f52a8b Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/RB6.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/RD1.BGF b/CONTENT/BT3025/VIDEO/GEO/RD1.BGF new file mode 100644 index 0000000..06be76f Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/RD1.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/RD2.BGF b/CONTENT/BT3025/VIDEO/GEO/RD2.BGF new file mode 100644 index 0000000..2c65cc0 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/RD2.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/RED_BEAM.BGF b/CONTENT/BT3025/VIDEO/GEO/RED_BEAM.BGF new file mode 100644 index 0000000..b88d8fc Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/RED_BEAM.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/ROMMELS.BGF b/CONTENT/BT3025/VIDEO/GEO/ROMMELS.BGF new file mode 100644 index 0000000..e3f0620 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/ROMMELS.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/RWD.BGF b/CONTENT/BT3025/VIDEO/GEO/RWD.BGF new file mode 100644 index 0000000..c18f56b Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/RWD.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/RWIN1.BGF b/CONTENT/BT3025/VIDEO/GEO/RWIN1.BGF new file mode 100644 index 0000000..4651a8b Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/RWIN1.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/SAW.BGF b/CONTENT/BT3025/VIDEO/GEO/SAW.BGF new file mode 100644 index 0000000..70e85fb Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/SAW.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/SB1.BGF b/CONTENT/BT3025/VIDEO/GEO/SB1.BGF new file mode 100644 index 0000000..e334ace Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/SB1.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/SB1B.BGF b/CONTENT/BT3025/VIDEO/GEO/SB1B.BGF new file mode 100644 index 0000000..3745612 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/SB1B.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/SB1C.BGF b/CONTENT/BT3025/VIDEO/GEO/SB1C.BGF new file mode 100644 index 0000000..9d19811 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/SB1C.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/SB1D.BGF b/CONTENT/BT3025/VIDEO/GEO/SB1D.BGF new file mode 100644 index 0000000..47ff88a Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/SB1D.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/SB1E.BGF b/CONTENT/BT3025/VIDEO/GEO/SB1E.BGF new file mode 100644 index 0000000..19748cd Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/SB1E.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/SB1N.BGF b/CONTENT/BT3025/VIDEO/GEO/SB1N.BGF new file mode 100644 index 0000000..8a991ea Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/SB1N.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/SB1S.BGF b/CONTENT/BT3025/VIDEO/GEO/SB1S.BGF new file mode 100644 index 0000000..075d892 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/SB1S.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/SB1W.BGF b/CONTENT/BT3025/VIDEO/GEO/SB1W.BGF new file mode 100644 index 0000000..ef6fafc Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/SB1W.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/SB2.BGF b/CONTENT/BT3025/VIDEO/GEO/SB2.BGF new file mode 100644 index 0000000..6b3100b Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/SB2.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/SB2B.BGF b/CONTENT/BT3025/VIDEO/GEO/SB2B.BGF new file mode 100644 index 0000000..6fb3f6b Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/SB2B.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/SB2C.BGF b/CONTENT/BT3025/VIDEO/GEO/SB2C.BGF new file mode 100644 index 0000000..d6dbb98 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/SB2C.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/SB2D.BGF b/CONTENT/BT3025/VIDEO/GEO/SB2D.BGF new file mode 100644 index 0000000..c6e417c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/SB2D.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/SB2E.BGF b/CONTENT/BT3025/VIDEO/GEO/SB2E.BGF new file mode 100644 index 0000000..9f68ae2 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/SB2E.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/SB2N.BGF b/CONTENT/BT3025/VIDEO/GEO/SB2N.BGF new file mode 100644 index 0000000..f56e587 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/SB2N.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/SB2S.BGF b/CONTENT/BT3025/VIDEO/GEO/SB2S.BGF new file mode 100644 index 0000000..83c655e Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/SB2S.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/SB2W.BGF b/CONTENT/BT3025/VIDEO/GEO/SB2W.BGF new file mode 100644 index 0000000..32d1a30 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/SB2W.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/SB3E.BGF b/CONTENT/BT3025/VIDEO/GEO/SB3E.BGF new file mode 100644 index 0000000..7e6170b Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/SB3E.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/SB3N.BGF b/CONTENT/BT3025/VIDEO/GEO/SB3N.BGF new file mode 100644 index 0000000..49b7d24 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/SB3N.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/SB3S.BGF b/CONTENT/BT3025/VIDEO/GEO/SB3S.BGF new file mode 100644 index 0000000..8638209 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/SB3S.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/SB3W.BGF b/CONTENT/BT3025/VIDEO/GEO/SB3W.BGF new file mode 100644 index 0000000..eb3884a Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/SB3W.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/SB4E.BGF b/CONTENT/BT3025/VIDEO/GEO/SB4E.BGF new file mode 100644 index 0000000..c2fe5d6 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/SB4E.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/SB4N.BGF b/CONTENT/BT3025/VIDEO/GEO/SB4N.BGF new file mode 100644 index 0000000..07b835b Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/SB4N.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/SB4S.BGF b/CONTENT/BT3025/VIDEO/GEO/SB4S.BGF new file mode 100644 index 0000000..92024b1 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/SB4S.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/SB4W.BGF b/CONTENT/BT3025/VIDEO/GEO/SB4W.BGF new file mode 100644 index 0000000..bf12880 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/SB4W.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/SEMIRIGS.BGF b/CONTENT/BT3025/VIDEO/GEO/SEMIRIGS.BGF new file mode 100644 index 0000000..86ecafe Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/SEMIRIGS.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/SEMIS.BGF b/CONTENT/BT3025/VIDEO/GEO/SEMIS.BGF new file mode 100644 index 0000000..f01b69e Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/SEMIS.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/SHOCK.BGF b/CONTENT/BT3025/VIDEO/GEO/SHOCK.BGF new file mode 100644 index 0000000..bd9a600 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/SHOCK.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/SL2D_FR.BGF b/CONTENT/BT3025/VIDEO/GEO/SL2D_FR.BGF new file mode 100644 index 0000000..3d944da Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/SL2D_FR.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/SLD2_FR.BGF b/CONTENT/BT3025/VIDEO/GEO/SLD2_FR.BGF new file mode 100644 index 0000000..f9a7af0 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/SLD2_FR.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/SLT.BGF b/CONTENT/BT3025/VIDEO/GEO/SLT.BGF new file mode 100644 index 0000000..892dd43 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/SLT.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/SMK_A.BGF b/CONTENT/BT3025/VIDEO/GEO/SMK_A.BGF new file mode 100644 index 0000000..4558d4a Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/SMK_A.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/SMK_B.BGF b/CONTENT/BT3025/VIDEO/GEO/SMK_B.BGF new file mode 100644 index 0000000..4558d4a Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/SMK_B.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/SMK_C.BGF b/CONTENT/BT3025/VIDEO/GEO/SMK_C.BGF new file mode 100644 index 0000000..b3cb5e9 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/SMK_C.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/SN1.BGF b/CONTENT/BT3025/VIDEO/GEO/SN1.BGF new file mode 100644 index 0000000..e2f187e Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/SN1.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/SN2.BGF b/CONTENT/BT3025/VIDEO/GEO/SN2.BGF new file mode 100644 index 0000000..a1560dc Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/SN2.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/SN4.BGF b/CONTENT/BT3025/VIDEO/GEO/SN4.BGF new file mode 100644 index 0000000..90a6798 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/SN4.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/SND_DOOR.BGF b/CONTENT/BT3025/VIDEO/GEO/SND_DOOR.BGF new file mode 100644 index 0000000..c88c37d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/SND_DOOR.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/SND_RARM.BGF b/CONTENT/BT3025/VIDEO/GEO/SND_RARM.BGF new file mode 100644 index 0000000..7b0e740 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/SND_RARM.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/SNHD_FR.BGF b/CONTENT/BT3025/VIDEO/GEO/SNHD_FR.BGF new file mode 100644 index 0000000..611e460 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/SNHD_FR.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/SNH_FR.BGF b/CONTENT/BT3025/VIDEO/GEO/SNH_FR.BGF new file mode 100644 index 0000000..ac8652b Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/SNH_FR.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/SNX_TOR.BGF b/CONTENT/BT3025/VIDEO/GEO/SNX_TOR.BGF new file mode 100644 index 0000000..a5e3725 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/SNX_TOR.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/SPK1.BGF b/CONTENT/BT3025/VIDEO/GEO/SPK1.BGF new file mode 100644 index 0000000..d588197 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/SPK1.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/SPK2.BGF b/CONTENT/BT3025/VIDEO/GEO/SPK2.BGF new file mode 100644 index 0000000..60a2ffe Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/SPK2.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/SPOT.BGF b/CONTENT/BT3025/VIDEO/GEO/SPOT.BGF new file mode 100644 index 0000000..5a8b1f8 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/SPOT.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/SR1E.BGF b/CONTENT/BT3025/VIDEO/GEO/SR1E.BGF new file mode 100644 index 0000000..0d4de54 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/SR1E.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/SR1N.BGF b/CONTENT/BT3025/VIDEO/GEO/SR1N.BGF new file mode 100644 index 0000000..6a9a71f Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/SR1N.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/SR1S.BGF b/CONTENT/BT3025/VIDEO/GEO/SR1S.BGF new file mode 100644 index 0000000..a4c320d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/SR1S.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/SR1W.BGF b/CONTENT/BT3025/VIDEO/GEO/SR1W.BGF new file mode 100644 index 0000000..e91be65 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/SR1W.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/SRMS.BGF b/CONTENT/BT3025/VIDEO/GEO/SRMS.BGF new file mode 100644 index 0000000..0671489 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/SRMS.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/ST1.BGF b/CONTENT/BT3025/VIDEO/GEO/ST1.BGF new file mode 100644 index 0000000..b6c0c43 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/ST1.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/STF.BGF b/CONTENT/BT3025/VIDEO/GEO/STF.BGF new file mode 100644 index 0000000..cf2ccd7 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/STF.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/STRIKERS.BGF b/CONTENT/BT3025/VIDEO/GEO/STRIKERS.BGF new file mode 100644 index 0000000..489cab7 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/STRIKERS.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/SV2BR.BGF b/CONTENT/BT3025/VIDEO/GEO/SV2BR.BGF new file mode 100644 index 0000000..2af25f1 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/SV2BR.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/SV2BS.BGF b/CONTENT/BT3025/VIDEO/GEO/SV2BS.BGF new file mode 100644 index 0000000..ebd4eb4 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/SV2BS.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/SV2DR.BGF b/CONTENT/BT3025/VIDEO/GEO/SV2DR.BGF new file mode 100644 index 0000000..fd869bf Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/SV2DR.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/SV2DS.BGF b/CONTENT/BT3025/VIDEO/GEO/SV2DS.BGF new file mode 100644 index 0000000..a8e96f1 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/SV2DS.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/SV2R.BGF b/CONTENT/BT3025/VIDEO/GEO/SV2R.BGF new file mode 100644 index 0000000..f52fdbf Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/SV2R.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/SV2S.BGF b/CONTENT/BT3025/VIDEO/GEO/SV2S.BGF new file mode 100644 index 0000000..63e80c1 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/SV2S.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/SV3BR.BGF b/CONTENT/BT3025/VIDEO/GEO/SV3BR.BGF new file mode 100644 index 0000000..dc3b4d1 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/SV3BR.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/SV3BS.BGF b/CONTENT/BT3025/VIDEO/GEO/SV3BS.BGF new file mode 100644 index 0000000..7465ecf Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/SV3BS.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/SV3CR.BGF b/CONTENT/BT3025/VIDEO/GEO/SV3CR.BGF new file mode 100644 index 0000000..be9c993 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/SV3CR.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/SV3CS.BGF b/CONTENT/BT3025/VIDEO/GEO/SV3CS.BGF new file mode 100644 index 0000000..ecaac74 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/SV3CS.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/SV3DR.BGF b/CONTENT/BT3025/VIDEO/GEO/SV3DR.BGF new file mode 100644 index 0000000..d4c2877 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/SV3DR.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/SV3DS.BGF b/CONTENT/BT3025/VIDEO/GEO/SV3DS.BGF new file mode 100644 index 0000000..371534a Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/SV3DS.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/SV3R.BGF b/CONTENT/BT3025/VIDEO/GEO/SV3R.BGF new file mode 100644 index 0000000..6642dce Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/SV3R.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/SV3S.BGF b/CONTENT/BT3025/VIDEO/GEO/SV3S.BGF new file mode 100644 index 0000000..d206236 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/SV3S.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/SW1.BGF b/CONTENT/BT3025/VIDEO/GEO/SW1.BGF new file mode 100644 index 0000000..1456a9e Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/SW1.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/SW2.BGF b/CONTENT/BT3025/VIDEO/GEO/SW2.BGF new file mode 100644 index 0000000..0eefb8a Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/SW2.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/SW3.BGF b/CONTENT/BT3025/VIDEO/GEO/SW3.BGF new file mode 100644 index 0000000..f70e282 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/SW3.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/SW4.BGF b/CONTENT/BT3025/VIDEO/GEO/SW4.BGF new file mode 100644 index 0000000..0635b1a Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/SW4.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/SW5.BGF b/CONTENT/BT3025/VIDEO/GEO/SW5.BGF new file mode 100644 index 0000000..08672df Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/SW5.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/SW6.BGF b/CONTENT/BT3025/VIDEO/GEO/SW6.BGF new file mode 100644 index 0000000..e152871 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/SW6.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/SWIFTS.BGF b/CONTENT/BT3025/VIDEO/GEO/SWIFTS.BGF new file mode 100644 index 0000000..aa9be93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/SWIFTS.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/THRDBR.BGF b/CONTENT/BT3025/VIDEO/GEO/THRDBR.BGF new file mode 100644 index 0000000..15bffa4 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/THRDBR.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/THXDMSL.BGF b/CONTENT/BT3025/VIDEO/GEO/THXDMSL.BGF new file mode 100644 index 0000000..0b926fe Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/THXDMSL.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/THX_DOOR.BGF b/CONTENT/BT3025/VIDEO/GEO/THX_DOOR.BGF new file mode 100644 index 0000000..3b2d679 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/THX_DOOR.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/THX_TOR.BGF b/CONTENT/BT3025/VIDEO/GEO/THX_TOR.BGF new file mode 100644 index 0000000..dea1e6b Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/THX_TOR.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/TMC1.BGF b/CONTENT/BT3025/VIDEO/GEO/TMC1.BGF new file mode 100644 index 0000000..ff9ace5 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/TMC1.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/TMC2.BGF b/CONTENT/BT3025/VIDEO/GEO/TMC2.BGF new file mode 100644 index 0000000..c146241 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/TMC2.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/TMC3.BGF b/CONTENT/BT3025/VIDEO/GEO/TMC3.BGF new file mode 100644 index 0000000..e9a7e68 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/TMC3.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/TMC3_LP.BGF b/CONTENT/BT3025/VIDEO/GEO/TMC3_LP.BGF new file mode 100644 index 0000000..b3d5771 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/TMC3_LP.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/TMC4.BGF b/CONTENT/BT3025/VIDEO/GEO/TMC4.BGF new file mode 100644 index 0000000..66399a1 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/TMC4.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/TMC4_LP.BGF b/CONTENT/BT3025/VIDEO/GEO/TMC4_LP.BGF new file mode 100644 index 0000000..63d8d47 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/TMC4_LP.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/TMC5.BGF b/CONTENT/BT3025/VIDEO/GEO/TMC5.BGF new file mode 100644 index 0000000..93414cb Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/TMC5.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/TMC5_LP.BGF b/CONTENT/BT3025/VIDEO/GEO/TMC5_LP.BGF new file mode 100644 index 0000000..59469be Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/TMC5_LP.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/TMC6.BGF b/CONTENT/BT3025/VIDEO/GEO/TMC6.BGF new file mode 100644 index 0000000..3308b28 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/TMC6.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/TMC6_LP.BGF b/CONTENT/BT3025/VIDEO/GEO/TMC6_LP.BGF new file mode 100644 index 0000000..469c337 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/TMC6_LP.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/TMC7.BGF b/CONTENT/BT3025/VIDEO/GEO/TMC7.BGF new file mode 100644 index 0000000..c128eb9 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/TMC7.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/TMC7_LP.BGF b/CONTENT/BT3025/VIDEO/GEO/TMC7_LP.BGF new file mode 100644 index 0000000..c6e2815 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/TMC7_LP.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/TMC8.BGF b/CONTENT/BT3025/VIDEO/GEO/TMC8.BGF new file mode 100644 index 0000000..ce01d83 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/TMC8.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/TMC8_LP.BGF b/CONTENT/BT3025/VIDEO/GEO/TMC8_LP.BGF new file mode 100644 index 0000000..5b0867e Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/TMC8_LP.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/TMSM_A.BGF b/CONTENT/BT3025/VIDEO/GEO/TMSM_A.BGF new file mode 100644 index 0000000..9a2a00d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/TMSM_A.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/TMSM_B.BGF b/CONTENT/BT3025/VIDEO/GEO/TMSM_B.BGF new file mode 100644 index 0000000..9a2a00d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/TMSM_B.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/TMSM_C.BGF b/CONTENT/BT3025/VIDEO/GEO/TMSM_C.BGF new file mode 100644 index 0000000..6c45e26 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/TMSM_C.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/TMS_A.BGF b/CONTENT/BT3025/VIDEO/GEO/TMS_A.BGF new file mode 100644 index 0000000..0d1f313 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/TMS_A.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/TMS_B.BGF b/CONTENT/BT3025/VIDEO/GEO/TMS_B.BGF new file mode 100644 index 0000000..0d1f313 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/TMS_B.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/TMS_C.BGF b/CONTENT/BT3025/VIDEO/GEO/TMS_C.BGF new file mode 100644 index 0000000..7b24740 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/TMS_C.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/TREESH.BGF b/CONTENT/BT3025/VIDEO/GEO/TREESH.BGF new file mode 100644 index 0000000..8ca96a0 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/TREESH.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/TRK1D_FR.BGF b/CONTENT/BT3025/VIDEO/GEO/TRK1D_FR.BGF new file mode 100644 index 0000000..cf994b8 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/TRK1D_FR.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/TRK1_FR.BGF b/CONTENT/BT3025/VIDEO/GEO/TRK1_FR.BGF new file mode 100644 index 0000000..0a7878f Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/TRK1_FR.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/TRK3D_FR.BGF b/CONTENT/BT3025/VIDEO/GEO/TRK3D_FR.BGF new file mode 100644 index 0000000..d95a71c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/TRK3D_FR.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/TRK3_FR.BGF b/CONTENT/BT3025/VIDEO/GEO/TRK3_FR.BGF new file mode 100644 index 0000000..3b447fc Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/TRK3_FR.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/TRK4D_FR.BGF b/CONTENT/BT3025/VIDEO/GEO/TRK4D_FR.BGF new file mode 100644 index 0000000..147899f Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/TRK4D_FR.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/TRK4_FR.BGF b/CONTENT/BT3025/VIDEO/GEO/TRK4_FR.BGF new file mode 100644 index 0000000..d33d9bb Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/TRK4_FR.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/TRUNK.BGF b/CONTENT/BT3025/VIDEO/GEO/TRUNK.BGF new file mode 100644 index 0000000..f2e2313 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/TRUNK.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/TSPHERE.BGF b/CONTENT/BT3025/VIDEO/GEO/TSPHERE.BGF new file mode 100644 index 0000000..2b7360e Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/TSPHERE.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/TWRD_FR.BGF b/CONTENT/BT3025/VIDEO/GEO/TWRD_FR.BGF new file mode 100644 index 0000000..b1fe195 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/TWRD_FR.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/TWR_FR.BGF b/CONTENT/BT3025/VIDEO/GEO/TWR_FR.BGF new file mode 100644 index 0000000..d7c6c96 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/TWR_FR.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/TWR_LP.BGF b/CONTENT/BT3025/VIDEO/GEO/TWR_LP.BGF new file mode 100644 index 0000000..4892a38 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/TWR_LP.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/VUL_LBTO.BGF b/CONTENT/BT3025/VIDEO/GEO/VUL_LBTO.BGF new file mode 100644 index 0000000..493b3d9 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/VUL_LBTO.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/VUL_LDDO.BGF b/CONTENT/BT3025/VIDEO/GEO/VUL_LDDO.BGF new file mode 100644 index 0000000..c6eb7c3 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/VUL_LDDO.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/VUL_LFOT.BGF b/CONTENT/BT3025/VIDEO/GEO/VUL_LFOT.BGF new file mode 100644 index 0000000..c541ff9 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/VUL_LFOT.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/VUL_LITO.BGF b/CONTENT/BT3025/VIDEO/GEO/VUL_LITO.BGF new file mode 100644 index 0000000..a59bed7 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/VUL_LITO.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/VUL_LOTO.BGF b/CONTENT/BT3025/VIDEO/GEO/VUL_LOTO.BGF new file mode 100644 index 0000000..3a94182 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/VUL_LOTO.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/VUL_LUDO.BGF b/CONTENT/BT3025/VIDEO/GEO/VUL_LUDO.BGF new file mode 100644 index 0000000..a7337ce Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/VUL_LUDO.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/VUL_RBTO.BGF b/CONTENT/BT3025/VIDEO/GEO/VUL_RBTO.BGF new file mode 100644 index 0000000..6c54b5e Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/VUL_RBTO.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/VUL_RDDO.BGF b/CONTENT/BT3025/VIDEO/GEO/VUL_RDDO.BGF new file mode 100644 index 0000000..df1fb23 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/VUL_RDDO.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/VUL_RFOT.BGF b/CONTENT/BT3025/VIDEO/GEO/VUL_RFOT.BGF new file mode 100644 index 0000000..b1eab12 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/VUL_RFOT.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/VUL_RITO.BGF b/CONTENT/BT3025/VIDEO/GEO/VUL_RITO.BGF new file mode 100644 index 0000000..7081a32 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/VUL_RITO.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/VUL_ROTO.BGF b/CONTENT/BT3025/VIDEO/GEO/VUL_ROTO.BGF new file mode 100644 index 0000000..7883842 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/VUL_ROTO.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/VUL_RUDO.BGF b/CONTENT/BT3025/VIDEO/GEO/VUL_RUDO.BGF new file mode 100644 index 0000000..223009a Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/VUL_RUDO.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/VUX_LBTO.BGF b/CONTENT/BT3025/VIDEO/GEO/VUX_LBTO.BGF new file mode 100644 index 0000000..31684f6 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/VUX_LBTO.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/VUX_LFOT.BGF b/CONTENT/BT3025/VIDEO/GEO/VUX_LFOT.BGF new file mode 100644 index 0000000..fcddc05 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/VUX_LFOT.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/VUX_LITO.BGF b/CONTENT/BT3025/VIDEO/GEO/VUX_LITO.BGF new file mode 100644 index 0000000..c14b1b5 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/VUX_LITO.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/VUX_LOTO.BGF b/CONTENT/BT3025/VIDEO/GEO/VUX_LOTO.BGF new file mode 100644 index 0000000..35f1151 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/VUX_LOTO.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/VUX_RBTO.BGF b/CONTENT/BT3025/VIDEO/GEO/VUX_RBTO.BGF new file mode 100644 index 0000000..7aa4979 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/VUX_RBTO.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/VUX_RFOT.BGF b/CONTENT/BT3025/VIDEO/GEO/VUX_RFOT.BGF new file mode 100644 index 0000000..c5c4fad Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/VUX_RFOT.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/VUX_RITO.BGF b/CONTENT/BT3025/VIDEO/GEO/VUX_RITO.BGF new file mode 100644 index 0000000..67ae627 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/VUX_RITO.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/VUX_ROTO.BGF b/CONTENT/BT3025/VIDEO/GEO/VUX_ROTO.BGF new file mode 100644 index 0000000..79a24f0 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/VUX_ROTO.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/WSTD_FR.BGF b/CONTENT/BT3025/VIDEO/GEO/WSTD_FR.BGF new file mode 100644 index 0000000..67eb661 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/WSTD_FR.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/WST_FR.BGF b/CONTENT/BT3025/VIDEO/GEO/WST_FR.BGF new file mode 100644 index 0000000..15d7343 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/WST_FR.BGF differ diff --git a/CONTENT/BT3025/VIDEO/GEO/WST_LP.BGF b/CONTENT/BT3025/VIDEO/GEO/WST_LP.BGF new file mode 100644 index 0000000..faebfad Binary files /dev/null and b/CONTENT/BT3025/VIDEO/GEO/WST_LP.BGF differ diff --git a/CONTENT/BT3025/VIDEO/IDAM1.PFX b/CONTENT/BT3025/VIDEO/IDAM1.PFX new file mode 100644 index 0000000..dc811f5 --- /dev/null +++ b/CONTENT/BT3025/VIDEO/IDAM1.PFX @@ -0,0 +1,32 @@ +btfx:firesmoke1_scr_tex +0000670 5 1 3 +0 0 0 1 +1 2 1 -2 1 -2 +0.25 0.25 1 .5 0.00 0 +0 1 0 0 1 0 +0.5 0.5 +0.50 0.50 0.50 1.10 0.00 0.00 0.00 0.00 +0.50 0.50 0.50 1.00 0.00 0.00 0.00 0.00 +0.10 0.10 0.10 0.00 0.00 0.00 0.00 0.00 +0.10 0.10 0.10 0.00 0.00 0.00 0.00 0.00 +10 1 +1.0 0.5 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one diff --git a/CONTENT/BT3025/VIDEO/IDAM2.PFX b/CONTENT/BT3025/VIDEO/IDAM2.PFX new file mode 100644 index 0000000..73334a6 --- /dev/null +++ b/CONTENT/BT3025/VIDEO/IDAM2.PFX @@ -0,0 +1,32 @@ +btfx:firesmoke1_scr_tex +0000670 10 2 5 +0 0 0 1 +2 2 2 -4 1 -4 +0.25 0.25 .5 .5 0.00 0 +0 1 0 0 1 0 +0.5 0.5 +0.30 0.30 0.30 1.10 0.00 0.00 0.00 0.00 +0.30 0.30 0.30 1.00 0.00 0.00 0.00 0.00 +-0.00 -0.00 -0.00 0.00 0.00 0.00 0.00 0.00 +0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 +10 1 +0.75 0.25 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one diff --git a/CONTENT/BT3025/VIDEO/IDAM3.PFX b/CONTENT/BT3025/VIDEO/IDAM3.PFX new file mode 100644 index 0000000..f95d77f --- /dev/null +++ b/CONTENT/BT3025/VIDEO/IDAM3.PFX @@ -0,0 +1,32 @@ +btfx:firesmoke1_scr_tex +0000670 15 3 7 +0 0 0 1 +1 1 1 -2 1 -2 +0.2 0.3 1 0.5 -0.7 0 +0 0.75 0 0 1 0 +0.5 0.5 +0.50 0.20 0.00 1.50 0.00 0.00 0.00 0.00 +0.00 0.00 0.00 1.00 0.00 0.00 0.00 0.00 +-0.50 -0.50 -0.50 0.00 0.00 0.00 0.00 0.00 +0.00 0.00 0.00 -0.10 0.00 0.00 0.00 0.00 +10 1 +1.25 0.25 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one diff --git a/CONTENT/BT3025/VIDEO/IDAM4.PFX b/CONTENT/BT3025/VIDEO/IDAM4.PFX new file mode 100644 index 0000000..26a599c --- /dev/null +++ b/CONTENT/BT3025/VIDEO/IDAM4.PFX @@ -0,0 +1,32 @@ +btfx:firesmoke1_scr_tex +0000670 20 4 8 +0 0 0 1 +1 1 1 -2 -1 -2 +0.25 0.25 1 1 0 0 +0 2.5 0 0 0.5 0 +0.5 0.5 +1.70 0.70 0.20 2.00 0.00 0.00 0.00 0.00 +0.00 0.00 0.00 1.00 0.00 0.00 0.00 0.00 +-1.50 -1.50 -1.50 0.00 0.00 0.00 0.00 0.00 +0.00 0.00 0.00 -0.10 0.00 0.00 0.00 0.00 +10 1 +1.5 0.5 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one diff --git a/CONTENT/BT3025/VIDEO/IDAM5.PFX b/CONTENT/BT3025/VIDEO/IDAM5.PFX new file mode 100644 index 0000000..4496d25 --- /dev/null +++ b/CONTENT/BT3025/VIDEO/IDAM5.PFX @@ -0,0 +1,33 @@ +btfx:firesmoke4_scr_tex +00000674 5 0.25 12 +0 1 0 2 +15 10 20 -30 -20 -40 +1 2.0 4 4 -1 0 +2.5 1.5 2.5 -2 -10 -5 +7 3 +2.00 0.70 0.20 2.00 0.00 0.00 0.00 0.00 +1.00 0.30 0.00 1.00 0.00 0.00 0.00 0.00 +0.0 -0.20 -0.50 -0.50 0.00 0.00 0.00 0.00 +0.0 0.00 0.00 -2.00 0.00 0.00 0.00 0.00 +10 1 +1.5 0.5 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one + \ No newline at end of file diff --git a/CONTENT/BT3025/VIDEO/JAKSKIN.DZM b/CONTENT/BT3025/VIDEO/JAKSKIN.DZM new file mode 100644 index 0000000..7206a61 --- /dev/null +++ b/CONTENT/BT3025/VIDEO/JAKSKIN.DZM @@ -0,0 +1,74 @@ +[dz_searchlight] +material=jakskin:thor2_dz_searchlight_mtl +material=jakskin:thor2wht_dz_searchlight_mtl +[dz_rearrtorso] +material=jakskin:thor2_dz_rearrtorso_mtl +material=jakskin:thor3_dz_rearrtorso_mtl +[dz_utorso] +material=jakskin:thor2_dz_utorso_mtl +material=jakskin:thor3_dz_utorso_mtl +material=jakskin:thor1_dz_utorso_mtl +[dz_reardtorso] +material=jakskin:thor2_dz_reardtorso_mtl +[dz_rearutorso] +material=jakskin:thor2_dz_rearutorso_mtl +material=jakskin:thor3_dz_rearutorso_mtl +[dz_rearltorso] +material=jakskin:thor2_dz_rearltorso_mtl +material=jakskin:thor3_dz_rearltorso_mtl +[dz_rfoot] +material=jakskin:gen1a_dz_rfoot_mtl +material=jakskin:gen1_dz_rfoot_mtl +[dz_lfoot] +material=jakskin:gen1a_dz_lfoot_mtl +material=jakskin:gen1_dz_lfoot_mtl +[dz_rtorso] +material=jakskin:gen3a_dz_rtorso_mtl +material=jakskin:gen3_dz_rtorso_mtl +material=jakskin:thor3_dz_rtorso_mtl +material=jakskin:thor4_dz_rtorso_mtl +material=jakskin:thor1_dz_rtorso_mtl +[dz_ltorso] +material=jakskin:gen3a_dz_ltorso_mtl +material=jakskin:gen3_dz_ltorso_mtl +material=jakskin:thor3_dz_ltorso_mtl +material=jakskin:thor4_dz_ltorso_mtl +material=jakskin:thor1_dz_ltorso_mtl +[dz_rgun] +material=jakskin:gen3a_dz_rgun_mtl +material=jakskin:gen3_dz_rgun_mtl +material=jakskin:gen1_dz_rgun_mtl +material=jakskin:gen4_dz_rgun_mtl +material=jakskin:gen2_dz_rgun_mtl +material=jakskin:gen2a_dz_rgun_mtl +material=jakskin:damcolor_dz_rgun_mtl +material=jakskin:gen3drkgry_dz_rgun_mtl +[dz_hip] +material=jakskin:gen3a_dz_hip_mtl +material=jakskin:gen3_dz_hip_mtl +material=jakskin:gen4_dz_hip_mtl +[dz_rdleg] +material=jakskin:gen1_dz_rdleg_mtl +material=jakskin:lgo1_dz_rdleg_mtl +material=jakskin:blakskn_dz_rdleg_mtl +[dz_ldleg] +material=jakskin:gen1_dz_ldleg_mtl +material=jakskin:lgo1_dz_ldleg_mtl +material=jakskin:blakskn_dz_ldleg_mtl +[dz_ruleg] +material=jakskin:gen1_dz_ruleg_mtl +material=jakskin:gen4_dz_ruleg_mtl +material=jakskin:gen2_dz_ruleg_mtl +[dz_luleg] +material=jakskin:gen1_dz_luleg_mtl +material=jakskin:gen4_dz_luleg_mtl +material=jakskin:gen2_dz_luleg_mtl +[dz_dtorso] +material=jakskin:thor4_dz_dtorso_mtl +material=jakskin:thor1_dz_dtorso_mtl +[dz_lgun] +material=jakskin:gen4_dz_lgun_mtl +material=jakskin:gen2_dz_lgun_mtl +material=jakskin:gen2a_dz_lgun_mtl +material=jakskin:damcolor_dz_lgun_mtl +material=jakskin:gen3drkgry_dz_lgun_mtl diff --git a/CONTENT/BT3025/VIDEO/JAXSKIN.DZM b/CONTENT/BT3025/VIDEO/JAXSKIN.DZM new file mode 100644 index 0000000..6f5042e --- /dev/null +++ b/CONTENT/BT3025/VIDEO/JAXSKIN.DZM @@ -0,0 +1,3 @@ +[dz_utorso] +material=jaxskin:thx2_dz_utorso_mtl +material=jaxskin:blakskn_dz_utorso_mtl diff --git a/CONTENT/BT3025/VIDEO/LASARM.SKL b/CONTENT/BT3025/VIDEO/LASARM.SKL new file mode 100644 index 0000000..c54e544 --- /dev/null +++ b/CONTENT/BT3025/VIDEO/LASARM.SKL @@ -0,0 +1,86 @@ +[jointrgun] +parent=jointrshoulder +Type=hingex +Object=vul_rgun.bgf +dzone=dz_rgun +Former Segment=segrgun +tranx=1.055 +trany=-0.975 +tranz=0 +pitch=-6.93889e-15 +yaw=3.4639e-14 +roll=-2.27537e-14 +site=siterugunport +site=siterdgunport +site=siteedz_rgun + +[siterugunport] +parent=jointrgun +tranx=0.17 +trany=0.017 +tranz=-3.83199 +pitch=-2.73406e-11 +yaw=6.98481e-10 +roll=-8.81441e-14 + +[siterdgunport] +parent=jointrgun +tranx=0.527 +trany=-0.365002 +tranz=-3.833 +pitch=-4.93003e-10 +yaw=6.98481e-10 +roll=-8.81441e-14 + +[siteedz_rgun] +parent=jointrgun +tranx=0.34714 +trany=-0.17446 +tranz=-0.58661 +pitch=-3.58832e-08 +yaw=-3.0268e-09 +roll=-7.45067e-09 + +[jointlgun] +parent=jointlshoulder +Type=hingex +Object=vul_lgun.bgf +dzone=dz_lgun +Former Segment=seglgun +tranx=-1.06 +trany=-0.976 +tranz=0 +pitch=7.18212e-09 +yaw=6.61305e-09 +roll=-1.78814e-06 +site=sitelugunport +site=siteldgunport +site=siteedz_lgun + +[sitelugunport] +parent=jointlgun +tranx=-0.163 +trany=0.0179996 +tranz=-3.832 +pitch=-1.37373e-07 +yaw=1.64372e-08 +roll=-1.06563e-15 + +[siteldgunport] +parent=jointlgun +tranx=-0.519 +trany=-0.364002 +tranz=-3.83301 +pitch=-1.53205e-07 +yaw=2.01625e-08 +roll=-1.47851e-15 + +[siteedz_lgun] +parent=jointlgun +tranx=-0.34 +trany=-0.173011 +tranz=-0.587 +pitch=-1.56931e-07 +yaw=2.01626e-08 +roll=1.69874e-06 + diff --git a/CONTENT/BT3025/VIDEO/LOX1SKIN.DZM b/CONTENT/BT3025/VIDEO/LOX1SKIN.DZM new file mode 100644 index 0000000..11791d7 --- /dev/null +++ b/CONTENT/BT3025/VIDEO/LOX1SKIN.DZM @@ -0,0 +1,9 @@ +[dz_utorso] +material=loxskin:blakskn_dz_utorso_mtl +material=loxskin:loki1_dz_utorso_mtl +[dz_ltorso] +material=loxskin:loki3_dz_ltorso_mtl +material=loxskin:loki1_dz_ltorso_mtl +[dz_rtorso] +material=loxskin:loki3_dz_rtorso_mtl +material=loxskin:loki1_dz_rtorso_mtl diff --git a/CONTENT/BT3025/VIDEO/LOXSKIN.DZM b/CONTENT/BT3025/VIDEO/LOXSKIN.DZM new file mode 100644 index 0000000..11791d7 --- /dev/null +++ b/CONTENT/BT3025/VIDEO/LOXSKIN.DZM @@ -0,0 +1,9 @@ +[dz_utorso] +material=loxskin:blakskn_dz_utorso_mtl +material=loxskin:loki1_dz_utorso_mtl +[dz_ltorso] +material=loxskin:loki3_dz_ltorso_mtl +material=loxskin:loki1_dz_ltorso_mtl +[dz_rtorso] +material=loxskin:loki3_dz_rtorso_mtl +material=loxskin:loki1_dz_rtorso_mtl diff --git a/CONTENT/BT3025/VIDEO/MAT/AVAFX.BMF b/CONTENT/BT3025/VIDEO/MAT/AVAFX.BMF new file mode 100644 index 0000000..d677902 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/AVAFX.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/AVXSKIN.BMF b/CONTENT/BT3025/VIDEO/MAT/AVXSKIN.BMF new file mode 100644 index 0000000..56e4451 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/AVXSKIN.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/AVXSKIN0.BMF b/CONTENT/BT3025/VIDEO/MAT/AVXSKIN0.BMF new file mode 100644 index 0000000..56e4451 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/AVXSKIN0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/AVXSKIN1.BMF b/CONTENT/BT3025/VIDEO/MAT/AVXSKIN1.BMF new file mode 100644 index 0000000..56e4451 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/AVXSKIN1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/AVXSKIN2.BMF b/CONTENT/BT3025/VIDEO/MAT/AVXSKIN2.BMF new file mode 100644 index 0000000..56e4451 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/AVXSKIN2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/AVXSKIN3.BMF b/CONTENT/BT3025/VIDEO/MAT/AVXSKIN3.BMF new file mode 100644 index 0000000..56e4451 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/AVXSKIN3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/AVXSKIN4.BMF b/CONTENT/BT3025/VIDEO/MAT/AVXSKIN4.BMF new file mode 100644 index 0000000..56e4451 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/AVXSKIN4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/AVXSKIN5.BMF b/CONTENT/BT3025/VIDEO/MAT/AVXSKIN5.BMF new file mode 100644 index 0000000..56e4451 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/AVXSKIN5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/AVXSKIN6.BMF b/CONTENT/BT3025/VIDEO/MAT/AVXSKIN6.BMF new file mode 100644 index 0000000..56e4451 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/AVXSKIN6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/AVXSKIN7.BMF b/CONTENT/BT3025/VIDEO/MAT/AVXSKIN7.BMF new file mode 100644 index 0000000..56e4451 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/AVXSKIN7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/AVX_BLK0.BMF b/CONTENT/BT3025/VIDEO/MAT/AVX_BLK0.BMF new file mode 100644 index 0000000..bf1c417 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/AVX_BLK0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/AVX_BLK1.BMF b/CONTENT/BT3025/VIDEO/MAT/AVX_BLK1.BMF new file mode 100644 index 0000000..bf1c417 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/AVX_BLK1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/AVX_BLK2.BMF b/CONTENT/BT3025/VIDEO/MAT/AVX_BLK2.BMF new file mode 100644 index 0000000..bf1c417 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/AVX_BLK2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/AVX_BLK3.BMF b/CONTENT/BT3025/VIDEO/MAT/AVX_BLK3.BMF new file mode 100644 index 0000000..bf1c417 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/AVX_BLK3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/AVX_BLK4.BMF b/CONTENT/BT3025/VIDEO/MAT/AVX_BLK4.BMF new file mode 100644 index 0000000..bf1c417 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/AVX_BLK4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/AVX_BLK5.BMF b/CONTENT/BT3025/VIDEO/MAT/AVX_BLK5.BMF new file mode 100644 index 0000000..bf1c417 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/AVX_BLK5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/AVX_BLK6.BMF b/CONTENT/BT3025/VIDEO/MAT/AVX_BLK6.BMF new file mode 100644 index 0000000..bf1c417 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/AVX_BLK6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/AVX_BLK7.BMF b/CONTENT/BT3025/VIDEO/MAT/AVX_BLK7.BMF new file mode 100644 index 0000000..bf1c417 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/AVX_BLK7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/AVX_BRN0.BMF b/CONTENT/BT3025/VIDEO/MAT/AVX_BRN0.BMF new file mode 100644 index 0000000..664ad49 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/AVX_BRN0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/AVX_BRN1.BMF b/CONTENT/BT3025/VIDEO/MAT/AVX_BRN1.BMF new file mode 100644 index 0000000..664ad49 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/AVX_BRN1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/AVX_BRN2.BMF b/CONTENT/BT3025/VIDEO/MAT/AVX_BRN2.BMF new file mode 100644 index 0000000..664ad49 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/AVX_BRN2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/AVX_BRN3.BMF b/CONTENT/BT3025/VIDEO/MAT/AVX_BRN3.BMF new file mode 100644 index 0000000..664ad49 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/AVX_BRN3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/AVX_BRN4.BMF b/CONTENT/BT3025/VIDEO/MAT/AVX_BRN4.BMF new file mode 100644 index 0000000..664ad49 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/AVX_BRN4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/AVX_BRN5.BMF b/CONTENT/BT3025/VIDEO/MAT/AVX_BRN5.BMF new file mode 100644 index 0000000..664ad49 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/AVX_BRN5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/AVX_BRN6.BMF b/CONTENT/BT3025/VIDEO/MAT/AVX_BRN6.BMF new file mode 100644 index 0000000..664ad49 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/AVX_BRN6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/AVX_BRN7.BMF b/CONTENT/BT3025/VIDEO/MAT/AVX_BRN7.BMF new file mode 100644 index 0000000..664ad49 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/AVX_BRN7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/AVX_GRN0.BMF b/CONTENT/BT3025/VIDEO/MAT/AVX_GRN0.BMF new file mode 100644 index 0000000..09636dc Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/AVX_GRN0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/AVX_GRN1.BMF b/CONTENT/BT3025/VIDEO/MAT/AVX_GRN1.BMF new file mode 100644 index 0000000..09636dc Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/AVX_GRN1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/AVX_GRN2.BMF b/CONTENT/BT3025/VIDEO/MAT/AVX_GRN2.BMF new file mode 100644 index 0000000..09636dc Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/AVX_GRN2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/AVX_GRN3.BMF b/CONTENT/BT3025/VIDEO/MAT/AVX_GRN3.BMF new file mode 100644 index 0000000..09636dc Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/AVX_GRN3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/AVX_GRN4.BMF b/CONTENT/BT3025/VIDEO/MAT/AVX_GRN4.BMF new file mode 100644 index 0000000..09636dc Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/AVX_GRN4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/AVX_GRN5.BMF b/CONTENT/BT3025/VIDEO/MAT/AVX_GRN5.BMF new file mode 100644 index 0000000..09636dc Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/AVX_GRN5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/AVX_GRN6.BMF b/CONTENT/BT3025/VIDEO/MAT/AVX_GRN6.BMF new file mode 100644 index 0000000..09636dc Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/AVX_GRN6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/AVX_GRN7.BMF b/CONTENT/BT3025/VIDEO/MAT/AVX_GRN7.BMF new file mode 100644 index 0000000..09636dc Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/AVX_GRN7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/AVX_GRY0.BMF b/CONTENT/BT3025/VIDEO/MAT/AVX_GRY0.BMF new file mode 100644 index 0000000..95289c5 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/AVX_GRY0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/AVX_GRY1.BMF b/CONTENT/BT3025/VIDEO/MAT/AVX_GRY1.BMF new file mode 100644 index 0000000..95289c5 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/AVX_GRY1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/AVX_GRY2.BMF b/CONTENT/BT3025/VIDEO/MAT/AVX_GRY2.BMF new file mode 100644 index 0000000..95289c5 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/AVX_GRY2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/AVX_GRY3.BMF b/CONTENT/BT3025/VIDEO/MAT/AVX_GRY3.BMF new file mode 100644 index 0000000..95289c5 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/AVX_GRY3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/AVX_GRY4.BMF b/CONTENT/BT3025/VIDEO/MAT/AVX_GRY4.BMF new file mode 100644 index 0000000..95289c5 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/AVX_GRY4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/AVX_GRY5.BMF b/CONTENT/BT3025/VIDEO/MAT/AVX_GRY5.BMF new file mode 100644 index 0000000..95289c5 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/AVX_GRY5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/AVX_GRY6.BMF b/CONTENT/BT3025/VIDEO/MAT/AVX_GRY6.BMF new file mode 100644 index 0000000..95289c5 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/AVX_GRY6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/AVX_GRY7.BMF b/CONTENT/BT3025/VIDEO/MAT/AVX_GRY7.BMF new file mode 100644 index 0000000..95289c5 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/AVX_GRY7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/AVX_RED0.BMF b/CONTENT/BT3025/VIDEO/MAT/AVX_RED0.BMF new file mode 100644 index 0000000..92c6ef4 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/AVX_RED0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/AVX_RED1.BMF b/CONTENT/BT3025/VIDEO/MAT/AVX_RED1.BMF new file mode 100644 index 0000000..92c6ef4 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/AVX_RED1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/AVX_RED2.BMF b/CONTENT/BT3025/VIDEO/MAT/AVX_RED2.BMF new file mode 100644 index 0000000..92c6ef4 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/AVX_RED2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/AVX_RED3.BMF b/CONTENT/BT3025/VIDEO/MAT/AVX_RED3.BMF new file mode 100644 index 0000000..92c6ef4 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/AVX_RED3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/AVX_RED4.BMF b/CONTENT/BT3025/VIDEO/MAT/AVX_RED4.BMF new file mode 100644 index 0000000..92c6ef4 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/AVX_RED4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/AVX_RED5.BMF b/CONTENT/BT3025/VIDEO/MAT/AVX_RED5.BMF new file mode 100644 index 0000000..92c6ef4 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/AVX_RED5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/AVX_RED6.BMF b/CONTENT/BT3025/VIDEO/MAT/AVX_RED6.BMF new file mode 100644 index 0000000..92c6ef4 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/AVX_RED6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/AVX_RED7.BMF b/CONTENT/BT3025/VIDEO/MAT/AVX_RED7.BMF new file mode 100644 index 0000000..92c6ef4 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/AVX_RED7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/AVX_TAN0.BMF b/CONTENT/BT3025/VIDEO/MAT/AVX_TAN0.BMF new file mode 100644 index 0000000..86b90a5 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/AVX_TAN0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/AVX_TAN1.BMF b/CONTENT/BT3025/VIDEO/MAT/AVX_TAN1.BMF new file mode 100644 index 0000000..86b90a5 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/AVX_TAN1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/AVX_TAN2.BMF b/CONTENT/BT3025/VIDEO/MAT/AVX_TAN2.BMF new file mode 100644 index 0000000..86b90a5 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/AVX_TAN2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/AVX_TAN3.BMF b/CONTENT/BT3025/VIDEO/MAT/AVX_TAN3.BMF new file mode 100644 index 0000000..86b90a5 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/AVX_TAN3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/AVX_TAN4.BMF b/CONTENT/BT3025/VIDEO/MAT/AVX_TAN4.BMF new file mode 100644 index 0000000..86b90a5 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/AVX_TAN4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/AVX_TAN5.BMF b/CONTENT/BT3025/VIDEO/MAT/AVX_TAN5.BMF new file mode 100644 index 0000000..86b90a5 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/AVX_TAN5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/AVX_TAN6.BMF b/CONTENT/BT3025/VIDEO/MAT/AVX_TAN6.BMF new file mode 100644 index 0000000..86b90a5 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/AVX_TAN6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/AVX_TAN7.BMF b/CONTENT/BT3025/VIDEO/MAT/AVX_TAN7.BMF new file mode 100644 index 0000000..86b90a5 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/AVX_TAN7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/AVX_WHT0.BMF b/CONTENT/BT3025/VIDEO/MAT/AVX_WHT0.BMF new file mode 100644 index 0000000..4335ca3 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/AVX_WHT0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/AVX_WHT1.BMF b/CONTENT/BT3025/VIDEO/MAT/AVX_WHT1.BMF new file mode 100644 index 0000000..4335ca3 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/AVX_WHT1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/AVX_WHT2.BMF b/CONTENT/BT3025/VIDEO/MAT/AVX_WHT2.BMF new file mode 100644 index 0000000..4335ca3 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/AVX_WHT2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/AVX_WHT3.BMF b/CONTENT/BT3025/VIDEO/MAT/AVX_WHT3.BMF new file mode 100644 index 0000000..4335ca3 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/AVX_WHT3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/AVX_WHT4.BMF b/CONTENT/BT3025/VIDEO/MAT/AVX_WHT4.BMF new file mode 100644 index 0000000..4335ca3 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/AVX_WHT4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/AVX_WHT5.BMF b/CONTENT/BT3025/VIDEO/MAT/AVX_WHT5.BMF new file mode 100644 index 0000000..4335ca3 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/AVX_WHT5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/AVX_WHT6.BMF b/CONTENT/BT3025/VIDEO/MAT/AVX_WHT6.BMF new file mode 100644 index 0000000..4335ca3 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/AVX_WHT6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/AVX_WHT7.BMF b/CONTENT/BT3025/VIDEO/MAT/AVX_WHT7.BMF new file mode 100644 index 0000000..4335ca3 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/AVX_WHT7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/BLHFX.BMF b/CONTENT/BT3025/VIDEO/MAT/BLHFX.BMF new file mode 100644 index 0000000..0e48b8b Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/BLHFX.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/BLXSKIN.BMF b/CONTENT/BT3025/VIDEO/MAT/BLXSKIN.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/BLXSKIN.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/BLXSKIN0.BMF b/CONTENT/BT3025/VIDEO/MAT/BLXSKIN0.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/BLXSKIN0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/BLXSKIN1.BMF b/CONTENT/BT3025/VIDEO/MAT/BLXSKIN1.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/BLXSKIN1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/BLXSKIN2.BMF b/CONTENT/BT3025/VIDEO/MAT/BLXSKIN2.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/BLXSKIN2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/BLXSKIN3.BMF b/CONTENT/BT3025/VIDEO/MAT/BLXSKIN3.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/BLXSKIN3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/BLXSKIN4.BMF b/CONTENT/BT3025/VIDEO/MAT/BLXSKIN4.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/BLXSKIN4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/BLXSKIN5.BMF b/CONTENT/BT3025/VIDEO/MAT/BLXSKIN5.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/BLXSKIN5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/BLXSKIN6.BMF b/CONTENT/BT3025/VIDEO/MAT/BLXSKIN6.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/BLXSKIN6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/BLXSKIN7.BMF b/CONTENT/BT3025/VIDEO/MAT/BLXSKIN7.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/BLXSKIN7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/BLX_BLK0.BMF b/CONTENT/BT3025/VIDEO/MAT/BLX_BLK0.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/BLX_BLK0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/BLX_BLK1.BMF b/CONTENT/BT3025/VIDEO/MAT/BLX_BLK1.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/BLX_BLK1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/BLX_BLK2.BMF b/CONTENT/BT3025/VIDEO/MAT/BLX_BLK2.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/BLX_BLK2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/BLX_BLK3.BMF b/CONTENT/BT3025/VIDEO/MAT/BLX_BLK3.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/BLX_BLK3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/BLX_BLK4.BMF b/CONTENT/BT3025/VIDEO/MAT/BLX_BLK4.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/BLX_BLK4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/BLX_BLK5.BMF b/CONTENT/BT3025/VIDEO/MAT/BLX_BLK5.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/BLX_BLK5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/BLX_BLK6.BMF b/CONTENT/BT3025/VIDEO/MAT/BLX_BLK6.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/BLX_BLK6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/BLX_BLK7.BMF b/CONTENT/BT3025/VIDEO/MAT/BLX_BLK7.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/BLX_BLK7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/BLX_BRN0.BMF b/CONTENT/BT3025/VIDEO/MAT/BLX_BRN0.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/BLX_BRN0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/BLX_BRN1.BMF b/CONTENT/BT3025/VIDEO/MAT/BLX_BRN1.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/BLX_BRN1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/BLX_BRN2.BMF b/CONTENT/BT3025/VIDEO/MAT/BLX_BRN2.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/BLX_BRN2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/BLX_BRN3.BMF b/CONTENT/BT3025/VIDEO/MAT/BLX_BRN3.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/BLX_BRN3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/BLX_BRN4.BMF b/CONTENT/BT3025/VIDEO/MAT/BLX_BRN4.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/BLX_BRN4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/BLX_BRN5.BMF b/CONTENT/BT3025/VIDEO/MAT/BLX_BRN5.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/BLX_BRN5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/BLX_BRN6.BMF b/CONTENT/BT3025/VIDEO/MAT/BLX_BRN6.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/BLX_BRN6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/BLX_BRN7.BMF b/CONTENT/BT3025/VIDEO/MAT/BLX_BRN7.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/BLX_BRN7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/BLX_GRN0.BMF b/CONTENT/BT3025/VIDEO/MAT/BLX_GRN0.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/BLX_GRN0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/BLX_GRN1.BMF b/CONTENT/BT3025/VIDEO/MAT/BLX_GRN1.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/BLX_GRN1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/BLX_GRN2.BMF b/CONTENT/BT3025/VIDEO/MAT/BLX_GRN2.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/BLX_GRN2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/BLX_GRN3.BMF b/CONTENT/BT3025/VIDEO/MAT/BLX_GRN3.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/BLX_GRN3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/BLX_GRN4.BMF b/CONTENT/BT3025/VIDEO/MAT/BLX_GRN4.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/BLX_GRN4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/BLX_GRN5.BMF b/CONTENT/BT3025/VIDEO/MAT/BLX_GRN5.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/BLX_GRN5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/BLX_GRN6.BMF b/CONTENT/BT3025/VIDEO/MAT/BLX_GRN6.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/BLX_GRN6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/BLX_GRN7.BMF b/CONTENT/BT3025/VIDEO/MAT/BLX_GRN7.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/BLX_GRN7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/BLX_GRY0.BMF b/CONTENT/BT3025/VIDEO/MAT/BLX_GRY0.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/BLX_GRY0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/BLX_GRY1.BMF b/CONTENT/BT3025/VIDEO/MAT/BLX_GRY1.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/BLX_GRY1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/BLX_GRY2.BMF b/CONTENT/BT3025/VIDEO/MAT/BLX_GRY2.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/BLX_GRY2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/BLX_GRY3.BMF b/CONTENT/BT3025/VIDEO/MAT/BLX_GRY3.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/BLX_GRY3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/BLX_GRY4.BMF b/CONTENT/BT3025/VIDEO/MAT/BLX_GRY4.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/BLX_GRY4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/BLX_GRY5.BMF b/CONTENT/BT3025/VIDEO/MAT/BLX_GRY5.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/BLX_GRY5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/BLX_GRY6.BMF b/CONTENT/BT3025/VIDEO/MAT/BLX_GRY6.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/BLX_GRY6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/BLX_GRY7.BMF b/CONTENT/BT3025/VIDEO/MAT/BLX_GRY7.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/BLX_GRY7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/BLX_RED0.BMF b/CONTENT/BT3025/VIDEO/MAT/BLX_RED0.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/BLX_RED0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/BLX_RED1.BMF b/CONTENT/BT3025/VIDEO/MAT/BLX_RED1.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/BLX_RED1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/BLX_RED2.BMF b/CONTENT/BT3025/VIDEO/MAT/BLX_RED2.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/BLX_RED2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/BLX_RED3.BMF b/CONTENT/BT3025/VIDEO/MAT/BLX_RED3.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/BLX_RED3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/BLX_RED4.BMF b/CONTENT/BT3025/VIDEO/MAT/BLX_RED4.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/BLX_RED4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/BLX_RED5.BMF b/CONTENT/BT3025/VIDEO/MAT/BLX_RED5.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/BLX_RED5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/BLX_RED6.BMF b/CONTENT/BT3025/VIDEO/MAT/BLX_RED6.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/BLX_RED6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/BLX_RED7.BMF b/CONTENT/BT3025/VIDEO/MAT/BLX_RED7.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/BLX_RED7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/BLX_TAN0.BMF b/CONTENT/BT3025/VIDEO/MAT/BLX_TAN0.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/BLX_TAN0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/BLX_TAN1.BMF b/CONTENT/BT3025/VIDEO/MAT/BLX_TAN1.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/BLX_TAN1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/BLX_TAN2.BMF b/CONTENT/BT3025/VIDEO/MAT/BLX_TAN2.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/BLX_TAN2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/BLX_TAN3.BMF b/CONTENT/BT3025/VIDEO/MAT/BLX_TAN3.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/BLX_TAN3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/BLX_TAN4.BMF b/CONTENT/BT3025/VIDEO/MAT/BLX_TAN4.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/BLX_TAN4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/BLX_TAN5.BMF b/CONTENT/BT3025/VIDEO/MAT/BLX_TAN5.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/BLX_TAN5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/BLX_TAN6.BMF b/CONTENT/BT3025/VIDEO/MAT/BLX_TAN6.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/BLX_TAN6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/BLX_TAN7.BMF b/CONTENT/BT3025/VIDEO/MAT/BLX_TAN7.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/BLX_TAN7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/BLX_WHT0.BMF b/CONTENT/BT3025/VIDEO/MAT/BLX_WHT0.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/BLX_WHT0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/BLX_WHT1.BMF b/CONTENT/BT3025/VIDEO/MAT/BLX_WHT1.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/BLX_WHT1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/BLX_WHT2.BMF b/CONTENT/BT3025/VIDEO/MAT/BLX_WHT2.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/BLX_WHT2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/BLX_WHT3.BMF b/CONTENT/BT3025/VIDEO/MAT/BLX_WHT3.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/BLX_WHT3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/BLX_WHT4.BMF b/CONTENT/BT3025/VIDEO/MAT/BLX_WHT4.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/BLX_WHT4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/BLX_WHT5.BMF b/CONTENT/BT3025/VIDEO/MAT/BLX_WHT5.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/BLX_WHT5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/BLX_WHT6.BMF b/CONTENT/BT3025/VIDEO/MAT/BLX_WHT6.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/BLX_WHT6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/BLX_WHT7.BMF b/CONTENT/BT3025/VIDEO/MAT/BLX_WHT7.BMF new file mode 100644 index 0000000..5f7b83c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/BLX_WHT7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/BMAP.BMF b/CONTENT/BT3025/VIDEO/MAT/BMAP.BMF new file mode 100644 index 0000000..c5f12f6 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/BMAP.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/BTCULT.BMF b/CONTENT/BT3025/VIDEO/MAT/BTCULT.BMF new file mode 100644 index 0000000..152f9ed --- /dev/null +++ b/CONTENT/BT3025/VIDEO/MAT/BTCULT.BMF @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/CONTENT/BT3025/VIDEO/MAT/BTPOLWIN.BMF b/CONTENT/BT3025/VIDEO/MAT/BTPOLWIN.BMF new file mode 100644 index 0000000..369504b Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/BTPOLWIN.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/BTRAVWIN.BMF b/CONTENT/BT3025/VIDEO/MAT/BTRAVWIN.BMF new file mode 100644 index 0000000..de5ff15 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/BTRAVWIN.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/CALIOPE.BMF b/CONTENT/BT3025/VIDEO/MAT/CALIOPE.BMF new file mode 100644 index 0000000..30e6fb0 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/CALIOPE.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/DAY/DIVISION.SAV/GRASS.BMF b/CONTENT/BT3025/VIDEO/MAT/DAY/DIVISION.SAV/GRASS.BMF new file mode 100644 index 0000000..b6ee2d0 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/DAY/DIVISION.SAV/GRASS.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/DAY/DIVISION.SAV/GRASSBU.BMF b/CONTENT/BT3025/VIDEO/MAT/DAY/DIVISION.SAV/GRASSBU.BMF new file mode 100644 index 0000000..82ee05c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/DAY/DIVISION.SAV/GRASSBU.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/DAY/DIVISION.SAV/RAVINES.BMF b/CONTENT/BT3025/VIDEO/MAT/DAY/DIVISION.SAV/RAVINES.BMF new file mode 100644 index 0000000..097ee0b Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/DAY/DIVISION.SAV/RAVINES.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/DAY/GRASS.BMF b/CONTENT/BT3025/VIDEO/MAT/DAY/GRASS.BMF new file mode 100644 index 0000000..b6ee2d0 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/DAY/GRASS.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/DAY/GRASS.VMF b/CONTENT/BT3025/VIDEO/MAT/DAY/GRASS.VMF new file mode 100644 index 0000000..e0d2034 --- /dev/null +++ b/CONTENT/BT3025/VIDEO/MAT/DAY/GRASS.VMF @@ -0,0 +1,69 @@ +DIV-VIZ2 +HEADER +( + VERSION=2:08; + DATE=5:3:97; + TIME=23:48; + FILETYPE=MATERIAL +) +{ +} + +TEXTURE(NAME="grassc_tex") +{ + MAP {"grassc"} + MAGNIFY {BILINEAR} +} + +TEXTURE(NAME="tree9_tex") +{ + MAP {"tree"} + BITSLICE { 8 } +} + +TEXTURE(NAME="bintA_tex") +{ + MAP {"bintA"} + MAGNIFY {BILINEAR} +} + +RAMP(NAME="grass") +{ + DATA {0.13, 0.13, 0.07, 0.38, 0.33, 0.23} +} + +MATERIAL(NAME="grass_mtl") +{ + TEXTURE {"grassc_tex"} + RAMP {"grass"} +} + +MATERIAL(NAME="tree_mtl") +{ + TEXTURE {"tree9_tex"} + AMBIENT {1, 0.15, 0.131} + DIFFUSE {1, 0.15, 0.131} +} + +MATERIAL(NAME="trunk_mtl") +{ + TEXTURE {"bintA_tex"} + AMBIENT {0.1898, 0.088563, 0} + DIFFUSE {0.1898, 0.064105, 0} +} + +MATERIAL(NAME="rings_mtl") +{ + TEXTURE {"bintA_tex"} + AMBIENT {0.3898, 0.188563, 0.051} + DIFFUSE {0.3898, 0.164105, 0.051} +} + +MATERIAL(NAME="leaves_mtl") +{ + TEXTURE {"tree9_tex"} + AMBIENT {1, 0.651, 0.531} + DIFFUSE {1, 0.651, 0.531} +} + + \ No newline at end of file diff --git a/CONTENT/BT3025/VIDEO/MAT/DAY/GRASSBU.BMF b/CONTENT/BT3025/VIDEO/MAT/DAY/GRASSBU.BMF new file mode 100644 index 0000000..82ee05c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/DAY/GRASSBU.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/DAY/GRASSBU.VMF b/CONTENT/BT3025/VIDEO/MAT/DAY/GRASSBU.VMF new file mode 100644 index 0000000..e714531 --- /dev/null +++ b/CONTENT/BT3025/VIDEO/MAT/DAY/GRASSBU.VMF @@ -0,0 +1,69 @@ +DIV-VIZ2 +HEADER +( + VERSION=2:08; + DATE=5:3:97; + TIME=23:48; + FILETYPE=MATERIAL +) +{ +} + +TEXTURE(NAME="grassc_tex") +{ + MAP {"grassc"} + MAGNIFY {BILINEAR} +} + +TEXTURE(NAME="tree9_tex") +{ + MAP {"tree"} + BITSLICE { 8 } +} + +TEXTURE(NAME="bintA_tex") +{ + MAP {"bintA"} + MAGNIFY {BILINEAR} +} + +RAMP(NAME="grass") +{ + DATA {0.08, 0.1, 0.05, 0.38, 0.33, 0.23} +} + +MATERIAL(NAME="grass_mtl") +{ + TEXTURE {"grassc_tex"} + RAMP {"grass"} +} + +MATERIAL(NAME="tree_mtl") +{ + TEXTURE {"tree9_tex"} + AMBIENT {1, 0.15, 0.131} + DIFFUSE {1, 0.15, 0.131} +} + +MATERIAL(NAME="trunk_mtl") +{ + TEXTURE {"bintA_tex"} + AMBIENT {0.1898, 0.088563, 0} + DIFFUSE {0.1898, 0.064105, 0} +} + +MATERIAL(NAME="rings_mtl") +{ + TEXTURE {"bintA_tex"} + AMBIENT {0.3898, 0.188563, 0.051} + DIFFUSE {0.3898, 0.164105, 0.051} +} + +MATERIAL(NAME="leaves_mtl") +{ + TEXTURE {"tree9_tex"} + AMBIENT {1, 0.651, 0.531} + DIFFUSE {1, 0.651, 0.531} +} + + \ No newline at end of file diff --git a/CONTENT/BT3025/VIDEO/MAT/DAY/RAVINES.BMF b/CONTENT/BT3025/VIDEO/MAT/DAY/RAVINES.BMF new file mode 100644 index 0000000..097ee0b Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/DAY/RAVINES.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/DAY/RAVINES.VMF b/CONTENT/BT3025/VIDEO/MAT/DAY/RAVINES.VMF new file mode 100644 index 0000000..dd7f23a --- /dev/null +++ b/CONTENT/BT3025/VIDEO/MAT/DAY/RAVINES.VMF @@ -0,0 +1,62 @@ +DIV-VIZ2 +HEADER +( + VERSION=2:08; + DATE=8:2:97; + TIME=1:39; + FILETYPE=MATERIAL +) +{ +} + +TEXTURE(NAME="bdinta_tex") +{ + MAP {"bdinta"} + MAGNIFY {BILINEAR} +} + +TEXTURE(NAME="bdintb_tex") +{ + MAP {"bdintb"} + MAGNIFY {BILINEAR} +} + +RAMP(NAME="dust") +{ + DATA {0.285, 0.21, 0.15, 0.75, 0.5, 0.4} +} + +RAMP(NAME="rock") +{ + DATA {0.25, 0.21, 0.16, 0.8, 0.5, 0.4} +} + +MATERIAL(NAME="ravinerock_mtl") +{ + TEXTURE {"bdinta_tex"} + RAMP {"rock"} +} + +MATERIAL(NAME="ravinerubble_mtl") +{ + TEXTURE {"bdintb_tex"} + RAMP {"dust"} +} + +MATERIAL(NAME="tarmac_mtl") +{ + TEXTURE {"bdintb_tex"} + AMBIENT {0.4143, 0.417459, 0.417143} + DIFFUSE {0.4143, 0.415668, 0.417143} + RAMP {"dust"} +} + +MATERIAL(NAME="dirt_mtl") +{ + TEXTURE {"bdintb_tex"} + AMBIENT {0.8, 0.8, 0.8} + DIFFUSE {0.8, 0.8, 0.8} + RAMP {"dust"} +} + + \ No newline at end of file diff --git a/CONTENT/BT3025/VIDEO/MAT/DBASE.BMF b/CONTENT/BT3025/VIDEO/MAT/DBASE.BMF new file mode 100644 index 0000000..30af5ec Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/DBASE.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/DIVISION.SAV/CALIOPE.BMF b/CONTENT/BT3025/VIDEO/MAT/DIVISION.SAV/CALIOPE.BMF new file mode 100644 index 0000000..917e003 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/DIVISION.SAV/CALIOPE.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/DIVISION.SAV/DBASE.BMF b/CONTENT/BT3025/VIDEO/MAT/DIVISION.SAV/DBASE.BMF new file mode 100644 index 0000000..d311292 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/DIVISION.SAV/DBASE.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/DIVISION.SAV/GRASS.BMF b/CONTENT/BT3025/VIDEO/MAT/DIVISION.SAV/GRASS.BMF new file mode 100644 index 0000000..83043fe Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/DIVISION.SAV/GRASS.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/DIVISION.SAV/GRASS.VMF b/CONTENT/BT3025/VIDEO/MAT/DIVISION.SAV/GRASS.VMF new file mode 100644 index 0000000..2901fca --- /dev/null +++ b/CONTENT/BT3025/VIDEO/MAT/DIVISION.SAV/GRASS.VMF @@ -0,0 +1,61 @@ +DIV-VIZ2 +HEADER +( + VERSION=2:08; + DATE=5:3:97; + TIME=23:48; + FILETYPE=MATERIAL +) +{ +} + +TEXTURE(NAME="grassc_tex") +{ + MAP {"grassc"} + MAGNIFY {BILINEAR} +} + +TEXTURE(NAME="tree9_tex") +{ + MAP {"tree"} + BITSLICE { 8 } +} + +TEXTURE(NAME="bintA_tex") +{ + MAP {"bintA"} + MAGNIFY {BILINEAR} +} + +RAMP(NAME="grass") +{ + DATA {0.05, 0.1, 0.05, 0.65, 0.45, 0.4} +} + +MATERIAL(NAME="grass_mtl") +{ + TEXTURE {"grassc_tex"} + RAMP {"grass"} +} + +MATERIAL(NAME="tree_mtl") +{ + TEXTURE {"tree9_tex"} + AMBIENT {1, 0.15, 0.131} + DIFFUSE {1, 0.15, 0.131} +} + +MATERIAL(NAME="trunk_mtl") +{ + TEXTURE {"bintA_tex"} + AMBIENT {0.1898, 0.088563, 0} + DIFFUSE {0.1898, 0.064105, 0} +} + +MATERIAL(NAME="leaves_mtl") +{ + TEXTURE {"tree9_tex"} + AMBIENT {1, 0.651, 0.531} + DIFFUSE {1, 0.651, 0.531} +} + diff --git a/CONTENT/BT3025/VIDEO/MAT/DIVISION.SAV/RAVINES.BMF b/CONTENT/BT3025/VIDEO/MAT/DIVISION.SAV/RAVINES.BMF new file mode 100644 index 0000000..43285a6 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/DIVISION.SAV/RAVINES.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/DIVISION.SAV/RAVINES.VMF b/CONTENT/BT3025/VIDEO/MAT/DIVISION.SAV/RAVINES.VMF new file mode 100644 index 0000000..d1c767c --- /dev/null +++ b/CONTENT/BT3025/VIDEO/MAT/DIVISION.SAV/RAVINES.VMF @@ -0,0 +1,50 @@ +DIV-VIZ2 +HEADER +( + VERSION=2:08; + DATE=8:2:97; + TIME=1:39; + FILETYPE=MATERIAL +) +{ +} + +TEXTURE(NAME="bdinta_tex") +{ + MAP {"bdinta"} + MAGNIFY {BILINEAR} +} + +TEXTURE(NAME="bdintb_tex") +{ + MAP {"bdintb"} + MAGNIFY {BILINEAR} +} + +RAMP(NAME="dust") +{ + DATA {0.285, 0.21, 0.2, 0.75, 0.5, 0.4} +} + +RAMP(NAME="rock") +{ + DATA {0.25, 0.21, 0.21, 0.8, 0.5, 0.4} +} + +MATERIAL(NAME="ravinerock_mtl") +{ + TEXTURE {"bdinta_tex"} + AMBIENT {1, 1, 1} + DIFFUSE {1, 1, 1} + RAMP {"rock"} +} + +MATERIAL(NAME="ravinerubble_mtl") +{ + TEXTURE {"bdintb_tex"} + AMBIENT {1, 1, 1} + DIFFUSE {1, 1, 1} + RAMP {"dust"} +} + + \ No newline at end of file diff --git a/CONTENT/BT3025/VIDEO/MAT/DUMMY.BMF b/CONTENT/BT3025/VIDEO/MAT/DUMMY.BMF new file mode 100644 index 0000000..82bfbaf Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/DUMMY.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/EVENING/DIVISION.SAV/GRASS.BMF b/CONTENT/BT3025/VIDEO/MAT/EVENING/DIVISION.SAV/GRASS.BMF new file mode 100644 index 0000000..c11f95b Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/EVENING/DIVISION.SAV/GRASS.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/EVENING/DIVISION.SAV/RAVINES.BMF b/CONTENT/BT3025/VIDEO/MAT/EVENING/DIVISION.SAV/RAVINES.BMF new file mode 100644 index 0000000..327ccff Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/EVENING/DIVISION.SAV/RAVINES.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/EVENING/GRASS.BMF b/CONTENT/BT3025/VIDEO/MAT/EVENING/GRASS.BMF new file mode 100644 index 0000000..37aeef7 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/EVENING/GRASS.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/EVENING/GRASS.VMF b/CONTENT/BT3025/VIDEO/MAT/EVENING/GRASS.VMF new file mode 100644 index 0000000..19592a0 --- /dev/null +++ b/CONTENT/BT3025/VIDEO/MAT/EVENING/GRASS.VMF @@ -0,0 +1,71 @@ +DIV-VIZ2 +HEADER +( + VERSION=2:08; + DATE=5:3:97; + TIME=23:48; + FILETYPE=MATERIAL +) +{ +} + +TEXTURE(NAME="grassc_tex") +{ + MAP {"grassc"} + MAGNIFY {BILINEAR} +} + +TEXTURE(NAME="tree9_tex") +{ + MAP {"tree"} + BITSLICE { 8 } +} + +TEXTURE(NAME="bintA_tex") +{ + MAP {"bintA"} + MAGNIFY {BILINEAR} +} + +RAMP(NAME="grass") +{ + DATA {0.2, 0.27, 0.2, 0.54, 0.42, 0.4} +} + +MATERIAL(NAME="grass_mtl") +{ + TEXTURE {"grassc_tex"} + AMBIENT {0.45, 0.3, 0.041372} + DIFFUSE {0.45, 0.3, 0.041372} + RAMP {"grass"} +} + +MATERIAL(NAME="tree_mtl") +{ + TEXTURE {"tree9_tex"} + AMBIENT {0.8, 0.1, 00} + DIFFUSE {0.8, 0.1, 00} +} + +MATERIAL(NAME="trunk_mtl") +{ + TEXTURE {"bintA_tex"} + AMBIENT {0.1898, 0.088563, 0} + DIFFUSE {0.1898, 0.064105, 0} +} + +MATERIAL(NAME="rings_mtl") +{ + TEXTURE {"bintA_tex"} + AMBIENT {0.13898, 0.0188563, 0.051} + DIFFUSE {0.13898, 0.0164105, 0.051} +} + +MATERIAL(NAME="leaves_mtl") +{ + TEXTURE {"tree9_tex"} + AMBIENT {0.6, 0.2651, 0.2531} + DIFFUSE {0.6, 0.2651, 0.2531} +} + + \ No newline at end of file diff --git a/CONTENT/BT3025/VIDEO/MAT/EVENING/RAVINES.BMF b/CONTENT/BT3025/VIDEO/MAT/EVENING/RAVINES.BMF new file mode 100644 index 0000000..532b5d0 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/EVENING/RAVINES.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/EVENING/RAVINES.VMF b/CONTENT/BT3025/VIDEO/MAT/EVENING/RAVINES.VMF new file mode 100644 index 0000000..ab309f4 --- /dev/null +++ b/CONTENT/BT3025/VIDEO/MAT/EVENING/RAVINES.VMF @@ -0,0 +1,62 @@ +DIV-VIZ2 +HEADER +( + VERSION=2:08; + DATE=8:2:97; + TIME=1:39; + FILETYPE=MATERIAL +) +{ +} + +TEXTURE(NAME="bdinta_tex") +{ + MAP {"bdinta"} + MAGNIFY {BILINEAR} +} + +TEXTURE(NAME="bdintb_tex") +{ + MAP {"bdintb"} + MAGNIFY {BILINEAR} +} + +RAMP(NAME="dust") +{ + DATA {0.21, 0.11, 0.02, 0.5, 0.2, 0.07} +} + +RAMP(NAME="rock") +{ + DATA {0.1875, 0.11, 0.02, 0.5, 0.2, 0.07} +} + +MATERIAL(NAME="ravinerock_mtl") +{ + TEXTURE {"bdinta_tex"} + RAMP {"rock"} +} + +MATERIAL(NAME="ravinerubble_mtl") +{ + TEXTURE {"bdintb_tex"} + RAMP {"dust"} +} + +MATERIAL(NAME="tarmac_mtl") +{ + TEXTURE {"bdintb_tex"} + AMBIENT {0.4143, 0.417459, 0.417143} + DIFFUSE {0.4143, 0.415668, 0.417143} + RAMP {"dust"} +} + +MATERIAL(NAME="dirt_mtl") +{ + TEXTURE {"bdintb_tex"} + AMBIENT {0.8, 0.8, 0.8} + DIFFUSE {0.8, 0.8, 0.8} + RAMP {"dust"} +} + + \ No newline at end of file diff --git a/CONTENT/BT3025/VIDEO/MAT/FIRFX.BMF b/CONTENT/BT3025/VIDEO/MAT/FIRFX.BMF new file mode 100644 index 0000000..effb09c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIRFX.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIRSKIN.BMF b/CONTENT/BT3025/VIDEO/MAT/FIRSKIN.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIRSKIN.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIRSKIN0.BMF b/CONTENT/BT3025/VIDEO/MAT/FIRSKIN0.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIRSKIN0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIRSKIN1.BMF b/CONTENT/BT3025/VIDEO/MAT/FIRSKIN1.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIRSKIN1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIRSKIN2.BMF b/CONTENT/BT3025/VIDEO/MAT/FIRSKIN2.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIRSKIN2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIRSKIN3.BMF b/CONTENT/BT3025/VIDEO/MAT/FIRSKIN3.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIRSKIN3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIRSKIN4.BMF b/CONTENT/BT3025/VIDEO/MAT/FIRSKIN4.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIRSKIN4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIRSKIN5.BMF b/CONTENT/BT3025/VIDEO/MAT/FIRSKIN5.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIRSKIN5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIRSKIN6.BMF b/CONTENT/BT3025/VIDEO/MAT/FIRSKIN6.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIRSKIN6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIRSKIN7.BMF b/CONTENT/BT3025/VIDEO/MAT/FIRSKIN7.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIRSKIN7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIR_BLK0.BMF b/CONTENT/BT3025/VIDEO/MAT/FIR_BLK0.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIR_BLK0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIR_BLK1.BMF b/CONTENT/BT3025/VIDEO/MAT/FIR_BLK1.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIR_BLK1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIR_BLK2.BMF b/CONTENT/BT3025/VIDEO/MAT/FIR_BLK2.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIR_BLK2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIR_BLK3.BMF b/CONTENT/BT3025/VIDEO/MAT/FIR_BLK3.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIR_BLK3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIR_BLK4.BMF b/CONTENT/BT3025/VIDEO/MAT/FIR_BLK4.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIR_BLK4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIR_BLK5.BMF b/CONTENT/BT3025/VIDEO/MAT/FIR_BLK5.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIR_BLK5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIR_BLK6.BMF b/CONTENT/BT3025/VIDEO/MAT/FIR_BLK6.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIR_BLK6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIR_BLK7.BMF b/CONTENT/BT3025/VIDEO/MAT/FIR_BLK7.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIR_BLK7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIR_BRN0.BMF b/CONTENT/BT3025/VIDEO/MAT/FIR_BRN0.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIR_BRN0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIR_BRN1.BMF b/CONTENT/BT3025/VIDEO/MAT/FIR_BRN1.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIR_BRN1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIR_BRN2.BMF b/CONTENT/BT3025/VIDEO/MAT/FIR_BRN2.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIR_BRN2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIR_BRN3.BMF b/CONTENT/BT3025/VIDEO/MAT/FIR_BRN3.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIR_BRN3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIR_BRN4.BMF b/CONTENT/BT3025/VIDEO/MAT/FIR_BRN4.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIR_BRN4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIR_BRN5.BMF b/CONTENT/BT3025/VIDEO/MAT/FIR_BRN5.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIR_BRN5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIR_BRN6.BMF b/CONTENT/BT3025/VIDEO/MAT/FIR_BRN6.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIR_BRN6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIR_BRN7.BMF b/CONTENT/BT3025/VIDEO/MAT/FIR_BRN7.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIR_BRN7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIR_GRN0.BMF b/CONTENT/BT3025/VIDEO/MAT/FIR_GRN0.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIR_GRN0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIR_GRN1.BMF b/CONTENT/BT3025/VIDEO/MAT/FIR_GRN1.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIR_GRN1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIR_GRN2.BMF b/CONTENT/BT3025/VIDEO/MAT/FIR_GRN2.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIR_GRN2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIR_GRN3.BMF b/CONTENT/BT3025/VIDEO/MAT/FIR_GRN3.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIR_GRN3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIR_GRN4.BMF b/CONTENT/BT3025/VIDEO/MAT/FIR_GRN4.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIR_GRN4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIR_GRN5.BMF b/CONTENT/BT3025/VIDEO/MAT/FIR_GRN5.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIR_GRN5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIR_GRN6.BMF b/CONTENT/BT3025/VIDEO/MAT/FIR_GRN6.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIR_GRN6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIR_GRN7.BMF b/CONTENT/BT3025/VIDEO/MAT/FIR_GRN7.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIR_GRN7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIR_GRY0.BMF b/CONTENT/BT3025/VIDEO/MAT/FIR_GRY0.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIR_GRY0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIR_GRY2.BMF b/CONTENT/BT3025/VIDEO/MAT/FIR_GRY2.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIR_GRY2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIR_GRY3.BMF b/CONTENT/BT3025/VIDEO/MAT/FIR_GRY3.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIR_GRY3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIR_GRY4.BMF b/CONTENT/BT3025/VIDEO/MAT/FIR_GRY4.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIR_GRY4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIR_GRY5.BMF b/CONTENT/BT3025/VIDEO/MAT/FIR_GRY5.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIR_GRY5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIR_GRY6.BMF b/CONTENT/BT3025/VIDEO/MAT/FIR_GRY6.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIR_GRY6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIR_GRY7.BMF b/CONTENT/BT3025/VIDEO/MAT/FIR_GRY7.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIR_GRY7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIR_RED0.BMF b/CONTENT/BT3025/VIDEO/MAT/FIR_RED0.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIR_RED0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIR_RED1.BMF b/CONTENT/BT3025/VIDEO/MAT/FIR_RED1.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIR_RED1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIR_RED2.BMF b/CONTENT/BT3025/VIDEO/MAT/FIR_RED2.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIR_RED2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIR_RED3.BMF b/CONTENT/BT3025/VIDEO/MAT/FIR_RED3.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIR_RED3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIR_RED4.BMF b/CONTENT/BT3025/VIDEO/MAT/FIR_RED4.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIR_RED4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIR_RED5.BMF b/CONTENT/BT3025/VIDEO/MAT/FIR_RED5.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIR_RED5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIR_RED6.BMF b/CONTENT/BT3025/VIDEO/MAT/FIR_RED6.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIR_RED6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIR_RED7.BMF b/CONTENT/BT3025/VIDEO/MAT/FIR_RED7.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIR_RED7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIR_TAN0.BMF b/CONTENT/BT3025/VIDEO/MAT/FIR_TAN0.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIR_TAN0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIR_TAN1.BMF b/CONTENT/BT3025/VIDEO/MAT/FIR_TAN1.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIR_TAN1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIR_TAN2.BMF b/CONTENT/BT3025/VIDEO/MAT/FIR_TAN2.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIR_TAN2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIR_TAN3.BMF b/CONTENT/BT3025/VIDEO/MAT/FIR_TAN3.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIR_TAN3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIR_TAN4.BMF b/CONTENT/BT3025/VIDEO/MAT/FIR_TAN4.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIR_TAN4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIR_TAN5.BMF b/CONTENT/BT3025/VIDEO/MAT/FIR_TAN5.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIR_TAN5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIR_TAN6.BMF b/CONTENT/BT3025/VIDEO/MAT/FIR_TAN6.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIR_TAN6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIR_TAN7.BMF b/CONTENT/BT3025/VIDEO/MAT/FIR_TAN7.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIR_TAN7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIR_WHT0.BMF b/CONTENT/BT3025/VIDEO/MAT/FIR_WHT0.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIR_WHT0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIR_WHT1.BMF b/CONTENT/BT3025/VIDEO/MAT/FIR_WHT1.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIR_WHT1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIR_WHT2.BMF b/CONTENT/BT3025/VIDEO/MAT/FIR_WHT2.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIR_WHT2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIR_WHT3.BMF b/CONTENT/BT3025/VIDEO/MAT/FIR_WHT3.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIR_WHT3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIR_WHT4.BMF b/CONTENT/BT3025/VIDEO/MAT/FIR_WHT4.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIR_WHT4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIR_WHT5.BMF b/CONTENT/BT3025/VIDEO/MAT/FIR_WHT5.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIR_WHT5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIR_WHT6.BMF b/CONTENT/BT3025/VIDEO/MAT/FIR_WHT6.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIR_WHT6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIR_WHT7.BMF b/CONTENT/BT3025/VIDEO/MAT/FIR_WHT7.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIR_WHT7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIXSKIN.BMF b/CONTENT/BT3025/VIDEO/MAT/FIXSKIN.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIXSKIN.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIXSKIN0.BMF b/CONTENT/BT3025/VIDEO/MAT/FIXSKIN0.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIXSKIN0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIXSKIN1.BMF b/CONTENT/BT3025/VIDEO/MAT/FIXSKIN1.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIXSKIN1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIXSKIN2.BMF b/CONTENT/BT3025/VIDEO/MAT/FIXSKIN2.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIXSKIN2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIXSKIN3.BMF b/CONTENT/BT3025/VIDEO/MAT/FIXSKIN3.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIXSKIN3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIXSKIN4.BMF b/CONTENT/BT3025/VIDEO/MAT/FIXSKIN4.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIXSKIN4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIXSKIN5.BMF b/CONTENT/BT3025/VIDEO/MAT/FIXSKIN5.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIXSKIN5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIXSKIN6.BMF b/CONTENT/BT3025/VIDEO/MAT/FIXSKIN6.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIXSKIN6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIXSKIN7.BMF b/CONTENT/BT3025/VIDEO/MAT/FIXSKIN7.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIXSKIN7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIX_BLK0.BMF b/CONTENT/BT3025/VIDEO/MAT/FIX_BLK0.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIX_BLK0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIX_BLK1.BMF b/CONTENT/BT3025/VIDEO/MAT/FIX_BLK1.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIX_BLK1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIX_BLK2.BMF b/CONTENT/BT3025/VIDEO/MAT/FIX_BLK2.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIX_BLK2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIX_BLK3.BMF b/CONTENT/BT3025/VIDEO/MAT/FIX_BLK3.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIX_BLK3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIX_BLK4.BMF b/CONTENT/BT3025/VIDEO/MAT/FIX_BLK4.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIX_BLK4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIX_BLK5.BMF b/CONTENT/BT3025/VIDEO/MAT/FIX_BLK5.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIX_BLK5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIX_BLK6.BMF b/CONTENT/BT3025/VIDEO/MAT/FIX_BLK6.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIX_BLK6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIX_BLK7.BMF b/CONTENT/BT3025/VIDEO/MAT/FIX_BLK7.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIX_BLK7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIX_BRN0.BMF b/CONTENT/BT3025/VIDEO/MAT/FIX_BRN0.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIX_BRN0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIX_BRN1.BMF b/CONTENT/BT3025/VIDEO/MAT/FIX_BRN1.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIX_BRN1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIX_BRN2.BMF b/CONTENT/BT3025/VIDEO/MAT/FIX_BRN2.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIX_BRN2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIX_BRN3.BMF b/CONTENT/BT3025/VIDEO/MAT/FIX_BRN3.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIX_BRN3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIX_BRN4.BMF b/CONTENT/BT3025/VIDEO/MAT/FIX_BRN4.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIX_BRN4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIX_BRN5.BMF b/CONTENT/BT3025/VIDEO/MAT/FIX_BRN5.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIX_BRN5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIX_BRN6.BMF b/CONTENT/BT3025/VIDEO/MAT/FIX_BRN6.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIX_BRN6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIX_BRN7.BMF b/CONTENT/BT3025/VIDEO/MAT/FIX_BRN7.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIX_BRN7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIX_GRN0.BMF b/CONTENT/BT3025/VIDEO/MAT/FIX_GRN0.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIX_GRN0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIX_GRN1.BMF b/CONTENT/BT3025/VIDEO/MAT/FIX_GRN1.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIX_GRN1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIX_GRN2.BMF b/CONTENT/BT3025/VIDEO/MAT/FIX_GRN2.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIX_GRN2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIX_GRN3.BMF b/CONTENT/BT3025/VIDEO/MAT/FIX_GRN3.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIX_GRN3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIX_GRN4.BMF b/CONTENT/BT3025/VIDEO/MAT/FIX_GRN4.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIX_GRN4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIX_GRN5.BMF b/CONTENT/BT3025/VIDEO/MAT/FIX_GRN5.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIX_GRN5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIX_GRN6.BMF b/CONTENT/BT3025/VIDEO/MAT/FIX_GRN6.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIX_GRN6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIX_GRN7.BMF b/CONTENT/BT3025/VIDEO/MAT/FIX_GRN7.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIX_GRN7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIX_GRY0.BMF b/CONTENT/BT3025/VIDEO/MAT/FIX_GRY0.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIX_GRY0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIX_GRY1.BMF b/CONTENT/BT3025/VIDEO/MAT/FIX_GRY1.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIX_GRY1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIX_GRY2.BMF b/CONTENT/BT3025/VIDEO/MAT/FIX_GRY2.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIX_GRY2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIX_GRY3.BMF b/CONTENT/BT3025/VIDEO/MAT/FIX_GRY3.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIX_GRY3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIX_GRY4.BMF b/CONTENT/BT3025/VIDEO/MAT/FIX_GRY4.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIX_GRY4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIX_GRY5.BMF b/CONTENT/BT3025/VIDEO/MAT/FIX_GRY5.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIX_GRY5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIX_GRY6.BMF b/CONTENT/BT3025/VIDEO/MAT/FIX_GRY6.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIX_GRY6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIX_GRY7.BMF b/CONTENT/BT3025/VIDEO/MAT/FIX_GRY7.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIX_GRY7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIX_RED0.BMF b/CONTENT/BT3025/VIDEO/MAT/FIX_RED0.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIX_RED0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIX_RED1.BMF b/CONTENT/BT3025/VIDEO/MAT/FIX_RED1.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIX_RED1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIX_RED2.BMF b/CONTENT/BT3025/VIDEO/MAT/FIX_RED2.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIX_RED2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIX_RED3.BMF b/CONTENT/BT3025/VIDEO/MAT/FIX_RED3.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIX_RED3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIX_RED4.BMF b/CONTENT/BT3025/VIDEO/MAT/FIX_RED4.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIX_RED4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIX_RED5.BMF b/CONTENT/BT3025/VIDEO/MAT/FIX_RED5.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIX_RED5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIX_RED6.BMF b/CONTENT/BT3025/VIDEO/MAT/FIX_RED6.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIX_RED6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIX_RED7.BMF b/CONTENT/BT3025/VIDEO/MAT/FIX_RED7.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIX_RED7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIX_TAN0.BMF b/CONTENT/BT3025/VIDEO/MAT/FIX_TAN0.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIX_TAN0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIX_TAN1.BMF b/CONTENT/BT3025/VIDEO/MAT/FIX_TAN1.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIX_TAN1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIX_TAN2.BMF b/CONTENT/BT3025/VIDEO/MAT/FIX_TAN2.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIX_TAN2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIX_TAN3.BMF b/CONTENT/BT3025/VIDEO/MAT/FIX_TAN3.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIX_TAN3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIX_TAN4.BMF b/CONTENT/BT3025/VIDEO/MAT/FIX_TAN4.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIX_TAN4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIX_TAN5.BMF b/CONTENT/BT3025/VIDEO/MAT/FIX_TAN5.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIX_TAN5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIX_TAN6.BMF b/CONTENT/BT3025/VIDEO/MAT/FIX_TAN6.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIX_TAN6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIX_TAN7.BMF b/CONTENT/BT3025/VIDEO/MAT/FIX_TAN7.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIX_TAN7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIX_WHT0.BMF b/CONTENT/BT3025/VIDEO/MAT/FIX_WHT0.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIX_WHT0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIX_WHT1.BMF b/CONTENT/BT3025/VIDEO/MAT/FIX_WHT1.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIX_WHT1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIX_WHT2.BMF b/CONTENT/BT3025/VIDEO/MAT/FIX_WHT2.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIX_WHT2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIX_WHT3.BMF b/CONTENT/BT3025/VIDEO/MAT/FIX_WHT3.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIX_WHT3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIX_WHT4.BMF b/CONTENT/BT3025/VIDEO/MAT/FIX_WHT4.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIX_WHT4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIX_WHT5.BMF b/CONTENT/BT3025/VIDEO/MAT/FIX_WHT5.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIX_WHT5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIX_WHT6.BMF b/CONTENT/BT3025/VIDEO/MAT/FIX_WHT6.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIX_WHT6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/FIX_WHT7.BMF b/CONTENT/BT3025/VIDEO/MAT/FIX_WHT7.BMF new file mode 100644 index 0000000..2bbcf90 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/FIX_WHT7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/GRASS.BMF b/CONTENT/BT3025/VIDEO/MAT/GRASS.BMF new file mode 100644 index 0000000..1536daf Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/GRASS.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/GRASS.VMF b/CONTENT/BT3025/VIDEO/MAT/GRASS.VMF new file mode 100644 index 0000000..5de05d7 --- /dev/null +++ b/CONTENT/BT3025/VIDEO/MAT/GRASS.VMF @@ -0,0 +1,68 @@ +DIV-VIZ2 +HEADER +( + VERSION=2:08; + DATE=5:3:97; + TIME=23:48; + FILETYPE=MATERIAL +) +{ +} + +TEXTURE(NAME="grassc_tex") +{ + MAP {"grassc"} + MAGNIFY {BILINEAR} +} + +TEXTURE(NAME="tree9_tex") +{ + MAP {"tree"} + BITSLICE { 8 } +} + +TEXTURE(NAME="bintA_tex") +{ + MAP {"bintA"} + MAGNIFY {BILINEAR} +} + +RAMP(NAME="grass") +{ + DATA {0.1, 0.17, 0.1, 0.54, 0.42, 0.4} +} + +MATERIAL(NAME="grass_mtl") +{ + TEXTURE {"grassc_tex"} + RAMP {"grass"} +} + +MATERIAL(NAME="tree_mtl") +{ + TEXTURE {"tree9_tex"} + AMBIENT {1, 0.15, 0.131} + DIFFUSE {1, 0.15, 0.131} +} + +MATERIAL(NAME="trunk_mtl") +{ + TEXTURE {"bintA_tex"} + AMBIENT {0.1898, 0.088563, 0} + DIFFUSE {0.1898, 0.064105, 0} +} + +MATERIAL(NAME="rings_mtl") +{ + TEXTURE {"bintA_tex"} + AMBIENT {0.3898, 0.188563, 0.051} + DIFFUSE {0.3898, 0.164105, 0.051} +} + +MATERIAL(NAME="leaves_mtl") +{ + TEXTURE {"tree9_tex"} + AMBIENT {1, 0.651, 0.531} + DIFFUSE {1, 0.651, 0.531} +} + diff --git a/CONTENT/BT3025/VIDEO/MAT/JAKSKIN.BMF b/CONTENT/BT3025/VIDEO/MAT/JAKSKIN.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAKSKIN.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAKSKIN0.BMF b/CONTENT/BT3025/VIDEO/MAT/JAKSKIN0.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAKSKIN0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAKSKIN1.BMF b/CONTENT/BT3025/VIDEO/MAT/JAKSKIN1.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAKSKIN1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAKSKIN2.BMF b/CONTENT/BT3025/VIDEO/MAT/JAKSKIN2.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAKSKIN2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAKSKIN3.BMF b/CONTENT/BT3025/VIDEO/MAT/JAKSKIN3.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAKSKIN3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAKSKIN4.BMF b/CONTENT/BT3025/VIDEO/MAT/JAKSKIN4.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAKSKIN4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAKSKIN5.BMF b/CONTENT/BT3025/VIDEO/MAT/JAKSKIN5.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAKSKIN5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAKSKIN6.BMF b/CONTENT/BT3025/VIDEO/MAT/JAKSKIN6.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAKSKIN6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAKSKIN7.BMF b/CONTENT/BT3025/VIDEO/MAT/JAKSKIN7.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAKSKIN7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAK_BLK0.BMF b/CONTENT/BT3025/VIDEO/MAT/JAK_BLK0.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAK_BLK0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAK_BLK1.BMF b/CONTENT/BT3025/VIDEO/MAT/JAK_BLK1.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAK_BLK1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAK_BLK2.BMF b/CONTENT/BT3025/VIDEO/MAT/JAK_BLK2.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAK_BLK2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAK_BLK3.BMF b/CONTENT/BT3025/VIDEO/MAT/JAK_BLK3.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAK_BLK3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAK_BLK4.BMF b/CONTENT/BT3025/VIDEO/MAT/JAK_BLK4.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAK_BLK4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAK_BLK5.BMF b/CONTENT/BT3025/VIDEO/MAT/JAK_BLK5.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAK_BLK5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAK_BLK6.BMF b/CONTENT/BT3025/VIDEO/MAT/JAK_BLK6.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAK_BLK6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAK_BLK7.BMF b/CONTENT/BT3025/VIDEO/MAT/JAK_BLK7.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAK_BLK7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAK_BRN0.BMF b/CONTENT/BT3025/VIDEO/MAT/JAK_BRN0.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAK_BRN0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAK_BRN1.BMF b/CONTENT/BT3025/VIDEO/MAT/JAK_BRN1.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAK_BRN1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAK_BRN2.BMF b/CONTENT/BT3025/VIDEO/MAT/JAK_BRN2.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAK_BRN2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAK_BRN3.BMF b/CONTENT/BT3025/VIDEO/MAT/JAK_BRN3.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAK_BRN3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAK_BRN4.BMF b/CONTENT/BT3025/VIDEO/MAT/JAK_BRN4.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAK_BRN4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAK_BRN5.BMF b/CONTENT/BT3025/VIDEO/MAT/JAK_BRN5.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAK_BRN5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAK_BRN6.BMF b/CONTENT/BT3025/VIDEO/MAT/JAK_BRN6.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAK_BRN6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAK_BRN7.BMF b/CONTENT/BT3025/VIDEO/MAT/JAK_BRN7.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAK_BRN7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAK_GRN0.BMF b/CONTENT/BT3025/VIDEO/MAT/JAK_GRN0.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAK_GRN0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAK_GRN1.BMF b/CONTENT/BT3025/VIDEO/MAT/JAK_GRN1.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAK_GRN1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAK_GRN2.BMF b/CONTENT/BT3025/VIDEO/MAT/JAK_GRN2.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAK_GRN2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAK_GRN3.BMF b/CONTENT/BT3025/VIDEO/MAT/JAK_GRN3.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAK_GRN3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAK_GRN4.BMF b/CONTENT/BT3025/VIDEO/MAT/JAK_GRN4.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAK_GRN4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAK_GRN5.BMF b/CONTENT/BT3025/VIDEO/MAT/JAK_GRN5.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAK_GRN5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAK_GRN6.BMF b/CONTENT/BT3025/VIDEO/MAT/JAK_GRN6.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAK_GRN6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAK_GRN7.BMF b/CONTENT/BT3025/VIDEO/MAT/JAK_GRN7.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAK_GRN7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAK_GRY0.BMF b/CONTENT/BT3025/VIDEO/MAT/JAK_GRY0.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAK_GRY0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAK_GRY1.BMF b/CONTENT/BT3025/VIDEO/MAT/JAK_GRY1.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAK_GRY1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAK_GRY2.BMF b/CONTENT/BT3025/VIDEO/MAT/JAK_GRY2.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAK_GRY2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAK_GRY3.BMF b/CONTENT/BT3025/VIDEO/MAT/JAK_GRY3.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAK_GRY3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAK_GRY4.BMF b/CONTENT/BT3025/VIDEO/MAT/JAK_GRY4.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAK_GRY4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAK_GRY5.BMF b/CONTENT/BT3025/VIDEO/MAT/JAK_GRY5.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAK_GRY5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAK_GRY6.BMF b/CONTENT/BT3025/VIDEO/MAT/JAK_GRY6.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAK_GRY6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAK_GRY7.BMF b/CONTENT/BT3025/VIDEO/MAT/JAK_GRY7.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAK_GRY7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAK_RED0.BMF b/CONTENT/BT3025/VIDEO/MAT/JAK_RED0.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAK_RED0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAK_RED1.BMF b/CONTENT/BT3025/VIDEO/MAT/JAK_RED1.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAK_RED1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAK_RED2.BMF b/CONTENT/BT3025/VIDEO/MAT/JAK_RED2.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAK_RED2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAK_RED3.BMF b/CONTENT/BT3025/VIDEO/MAT/JAK_RED3.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAK_RED3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAK_RED4.BMF b/CONTENT/BT3025/VIDEO/MAT/JAK_RED4.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAK_RED4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAK_RED5.BMF b/CONTENT/BT3025/VIDEO/MAT/JAK_RED5.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAK_RED5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAK_RED6.BMF b/CONTENT/BT3025/VIDEO/MAT/JAK_RED6.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAK_RED6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAK_RED7.BMF b/CONTENT/BT3025/VIDEO/MAT/JAK_RED7.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAK_RED7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAK_TAN0.BMF b/CONTENT/BT3025/VIDEO/MAT/JAK_TAN0.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAK_TAN0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAK_TAN1.BMF b/CONTENT/BT3025/VIDEO/MAT/JAK_TAN1.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAK_TAN1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAK_TAN2.BMF b/CONTENT/BT3025/VIDEO/MAT/JAK_TAN2.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAK_TAN2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAK_TAN3.BMF b/CONTENT/BT3025/VIDEO/MAT/JAK_TAN3.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAK_TAN3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAK_TAN4.BMF b/CONTENT/BT3025/VIDEO/MAT/JAK_TAN4.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAK_TAN4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAK_TAN5.BMF b/CONTENT/BT3025/VIDEO/MAT/JAK_TAN5.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAK_TAN5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAK_TAN6.BMF b/CONTENT/BT3025/VIDEO/MAT/JAK_TAN6.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAK_TAN6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAK_TAN7.BMF b/CONTENT/BT3025/VIDEO/MAT/JAK_TAN7.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAK_TAN7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAK_WHT0.BMF b/CONTENT/BT3025/VIDEO/MAT/JAK_WHT0.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAK_WHT0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAK_WHT1.BMF b/CONTENT/BT3025/VIDEO/MAT/JAK_WHT1.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAK_WHT1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAK_WHT2.BMF b/CONTENT/BT3025/VIDEO/MAT/JAK_WHT2.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAK_WHT2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAK_WHT3.BMF b/CONTENT/BT3025/VIDEO/MAT/JAK_WHT3.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAK_WHT3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAK_WHT4.BMF b/CONTENT/BT3025/VIDEO/MAT/JAK_WHT4.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAK_WHT4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAK_WHT5.BMF b/CONTENT/BT3025/VIDEO/MAT/JAK_WHT5.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAK_WHT5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAK_WHT6.BMF b/CONTENT/BT3025/VIDEO/MAT/JAK_WHT6.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAK_WHT6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAK_WHT7.BMF b/CONTENT/BT3025/VIDEO/MAT/JAK_WHT7.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAK_WHT7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAXSKIN.BMF b/CONTENT/BT3025/VIDEO/MAT/JAXSKIN.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAXSKIN.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAXSKIN0.BMF b/CONTENT/BT3025/VIDEO/MAT/JAXSKIN0.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAXSKIN0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAXSKIN1.BMF b/CONTENT/BT3025/VIDEO/MAT/JAXSKIN1.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAXSKIN1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAXSKIN2.BMF b/CONTENT/BT3025/VIDEO/MAT/JAXSKIN2.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAXSKIN2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAXSKIN3.BMF b/CONTENT/BT3025/VIDEO/MAT/JAXSKIN3.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAXSKIN3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAXSKIN4.BMF b/CONTENT/BT3025/VIDEO/MAT/JAXSKIN4.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAXSKIN4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAXSKIN5.BMF b/CONTENT/BT3025/VIDEO/MAT/JAXSKIN5.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAXSKIN5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAXSKIN6.BMF b/CONTENT/BT3025/VIDEO/MAT/JAXSKIN6.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAXSKIN6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAXSKIN7.BMF b/CONTENT/BT3025/VIDEO/MAT/JAXSKIN7.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAXSKIN7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAX_BLK0.BMF b/CONTENT/BT3025/VIDEO/MAT/JAX_BLK0.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAX_BLK0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAX_BLK1.BMF b/CONTENT/BT3025/VIDEO/MAT/JAX_BLK1.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAX_BLK1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAX_BLK2.BMF b/CONTENT/BT3025/VIDEO/MAT/JAX_BLK2.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAX_BLK2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAX_BLK3.BMF b/CONTENT/BT3025/VIDEO/MAT/JAX_BLK3.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAX_BLK3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAX_BLK4.BMF b/CONTENT/BT3025/VIDEO/MAT/JAX_BLK4.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAX_BLK4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAX_BLK5.BMF b/CONTENT/BT3025/VIDEO/MAT/JAX_BLK5.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAX_BLK5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAX_BLK6.BMF b/CONTENT/BT3025/VIDEO/MAT/JAX_BLK6.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAX_BLK6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAX_BLK7.BMF b/CONTENT/BT3025/VIDEO/MAT/JAX_BLK7.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAX_BLK7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAX_BRN0.BMF b/CONTENT/BT3025/VIDEO/MAT/JAX_BRN0.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAX_BRN0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAX_BRN1.BMF b/CONTENT/BT3025/VIDEO/MAT/JAX_BRN1.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAX_BRN1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAX_BRN2.BMF b/CONTENT/BT3025/VIDEO/MAT/JAX_BRN2.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAX_BRN2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAX_BRN3.BMF b/CONTENT/BT3025/VIDEO/MAT/JAX_BRN3.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAX_BRN3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAX_BRN4.BMF b/CONTENT/BT3025/VIDEO/MAT/JAX_BRN4.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAX_BRN4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAX_BRN5.BMF b/CONTENT/BT3025/VIDEO/MAT/JAX_BRN5.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAX_BRN5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAX_BRN6.BMF b/CONTENT/BT3025/VIDEO/MAT/JAX_BRN6.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAX_BRN6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAX_BRN7.BMF b/CONTENT/BT3025/VIDEO/MAT/JAX_BRN7.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAX_BRN7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAX_GRN0.BMF b/CONTENT/BT3025/VIDEO/MAT/JAX_GRN0.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAX_GRN0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAX_GRN1.BMF b/CONTENT/BT3025/VIDEO/MAT/JAX_GRN1.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAX_GRN1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAX_GRN2.BMF b/CONTENT/BT3025/VIDEO/MAT/JAX_GRN2.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAX_GRN2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAX_GRN3.BMF b/CONTENT/BT3025/VIDEO/MAT/JAX_GRN3.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAX_GRN3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAX_GRN4.BMF b/CONTENT/BT3025/VIDEO/MAT/JAX_GRN4.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAX_GRN4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAX_GRN5.BMF b/CONTENT/BT3025/VIDEO/MAT/JAX_GRN5.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAX_GRN5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAX_GRN6.BMF b/CONTENT/BT3025/VIDEO/MAT/JAX_GRN6.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAX_GRN6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAX_GRN7.BMF b/CONTENT/BT3025/VIDEO/MAT/JAX_GRN7.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAX_GRN7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAX_GRY0.BMF b/CONTENT/BT3025/VIDEO/MAT/JAX_GRY0.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAX_GRY0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAX_GRY1.BMF b/CONTENT/BT3025/VIDEO/MAT/JAX_GRY1.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAX_GRY1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAX_GRY2.BMF b/CONTENT/BT3025/VIDEO/MAT/JAX_GRY2.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAX_GRY2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAX_GRY3.BMF b/CONTENT/BT3025/VIDEO/MAT/JAX_GRY3.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAX_GRY3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAX_GRY4.BMF b/CONTENT/BT3025/VIDEO/MAT/JAX_GRY4.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAX_GRY4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAX_GRY5.BMF b/CONTENT/BT3025/VIDEO/MAT/JAX_GRY5.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAX_GRY5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAX_GRY6.BMF b/CONTENT/BT3025/VIDEO/MAT/JAX_GRY6.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAX_GRY6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAX_GRY7.BMF b/CONTENT/BT3025/VIDEO/MAT/JAX_GRY7.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAX_GRY7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAX_RED0.BMF b/CONTENT/BT3025/VIDEO/MAT/JAX_RED0.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAX_RED0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAX_RED1.BMF b/CONTENT/BT3025/VIDEO/MAT/JAX_RED1.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAX_RED1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAX_RED2.BMF b/CONTENT/BT3025/VIDEO/MAT/JAX_RED2.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAX_RED2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAX_RED3.BMF b/CONTENT/BT3025/VIDEO/MAT/JAX_RED3.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAX_RED3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAX_RED4.BMF b/CONTENT/BT3025/VIDEO/MAT/JAX_RED4.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAX_RED4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAX_RED5.BMF b/CONTENT/BT3025/VIDEO/MAT/JAX_RED5.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAX_RED5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAX_RED6.BMF b/CONTENT/BT3025/VIDEO/MAT/JAX_RED6.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAX_RED6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAX_RED7.BMF b/CONTENT/BT3025/VIDEO/MAT/JAX_RED7.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAX_RED7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAX_TAN0.BMF b/CONTENT/BT3025/VIDEO/MAT/JAX_TAN0.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAX_TAN0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAX_TAN1.BMF b/CONTENT/BT3025/VIDEO/MAT/JAX_TAN1.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAX_TAN1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAX_TAN2.BMF b/CONTENT/BT3025/VIDEO/MAT/JAX_TAN2.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAX_TAN2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAX_TAN3.BMF b/CONTENT/BT3025/VIDEO/MAT/JAX_TAN3.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAX_TAN3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAX_TAN4.BMF b/CONTENT/BT3025/VIDEO/MAT/JAX_TAN4.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAX_TAN4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAX_TAN5.BMF b/CONTENT/BT3025/VIDEO/MAT/JAX_TAN5.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAX_TAN5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAX_TAN6.BMF b/CONTENT/BT3025/VIDEO/MAT/JAX_TAN6.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAX_TAN6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAX_TAN7.BMF b/CONTENT/BT3025/VIDEO/MAT/JAX_TAN7.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAX_TAN7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAX_WHT0.BMF b/CONTENT/BT3025/VIDEO/MAT/JAX_WHT0.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAX_WHT0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAX_WHT1.BMF b/CONTENT/BT3025/VIDEO/MAT/JAX_WHT1.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAX_WHT1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAX_WHT2.BMF b/CONTENT/BT3025/VIDEO/MAT/JAX_WHT2.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAX_WHT2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAX_WHT3.BMF b/CONTENT/BT3025/VIDEO/MAT/JAX_WHT3.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAX_WHT3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAX_WHT4.BMF b/CONTENT/BT3025/VIDEO/MAT/JAX_WHT4.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAX_WHT4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAX_WHT5.BMF b/CONTENT/BT3025/VIDEO/MAT/JAX_WHT5.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAX_WHT5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAX_WHT6.BMF b/CONTENT/BT3025/VIDEO/MAT/JAX_WHT6.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAX_WHT6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/JAX_WHT7.BMF b/CONTENT/BT3025/VIDEO/MAT/JAX_WHT7.BMF new file mode 100644 index 0000000..009154c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/JAX_WHT7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/LOKFX.BMF b/CONTENT/BT3025/VIDEO/MAT/LOKFX.BMF new file mode 100644 index 0000000..582cc14 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/LOKFX.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/LOXSKIN.BMF b/CONTENT/BT3025/VIDEO/MAT/LOXSKIN.BMF new file mode 100644 index 0000000..c617aed Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/LOXSKIN.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/LOXSKIN0.BMF b/CONTENT/BT3025/VIDEO/MAT/LOXSKIN0.BMF new file mode 100644 index 0000000..c617aed Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/LOXSKIN0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/LOXSKIN1.BMF b/CONTENT/BT3025/VIDEO/MAT/LOXSKIN1.BMF new file mode 100644 index 0000000..c617aed Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/LOXSKIN1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/LOXSKIN2.BMF b/CONTENT/BT3025/VIDEO/MAT/LOXSKIN2.BMF new file mode 100644 index 0000000..c617aed Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/LOXSKIN2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/LOXSKIN3.BMF b/CONTENT/BT3025/VIDEO/MAT/LOXSKIN3.BMF new file mode 100644 index 0000000..c617aed Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/LOXSKIN3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/LOXSKIN4.BMF b/CONTENT/BT3025/VIDEO/MAT/LOXSKIN4.BMF new file mode 100644 index 0000000..c617aed Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/LOXSKIN4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/LOXSKIN5.BMF b/CONTENT/BT3025/VIDEO/MAT/LOXSKIN5.BMF new file mode 100644 index 0000000..c617aed Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/LOXSKIN5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/LOXSKIN6.BMF b/CONTENT/BT3025/VIDEO/MAT/LOXSKIN6.BMF new file mode 100644 index 0000000..c617aed Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/LOXSKIN6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/LOXSKIN7.BMF b/CONTENT/BT3025/VIDEO/MAT/LOXSKIN7.BMF new file mode 100644 index 0000000..c617aed Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/LOXSKIN7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/LOX_BLK0.BMF b/CONTENT/BT3025/VIDEO/MAT/LOX_BLK0.BMF new file mode 100644 index 0000000..c6a0156 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/LOX_BLK0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/LOX_BLK1.BMF b/CONTENT/BT3025/VIDEO/MAT/LOX_BLK1.BMF new file mode 100644 index 0000000..c6a0156 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/LOX_BLK1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/LOX_BLK2.BMF b/CONTENT/BT3025/VIDEO/MAT/LOX_BLK2.BMF new file mode 100644 index 0000000..c6a0156 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/LOX_BLK2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/LOX_BLK3.BMF b/CONTENT/BT3025/VIDEO/MAT/LOX_BLK3.BMF new file mode 100644 index 0000000..c6a0156 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/LOX_BLK3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/LOX_BLK4.BMF b/CONTENT/BT3025/VIDEO/MAT/LOX_BLK4.BMF new file mode 100644 index 0000000..c6a0156 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/LOX_BLK4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/LOX_BLK5.BMF b/CONTENT/BT3025/VIDEO/MAT/LOX_BLK5.BMF new file mode 100644 index 0000000..c6a0156 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/LOX_BLK5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/LOX_BLK6.BMF b/CONTENT/BT3025/VIDEO/MAT/LOX_BLK6.BMF new file mode 100644 index 0000000..c6a0156 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/LOX_BLK6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/LOX_BLK7.BMF b/CONTENT/BT3025/VIDEO/MAT/LOX_BLK7.BMF new file mode 100644 index 0000000..c6a0156 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/LOX_BLK7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/LOX_BRN0.BMF b/CONTENT/BT3025/VIDEO/MAT/LOX_BRN0.BMF new file mode 100644 index 0000000..daaf5db Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/LOX_BRN0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/LOX_BRN1.BMF b/CONTENT/BT3025/VIDEO/MAT/LOX_BRN1.BMF new file mode 100644 index 0000000..daaf5db Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/LOX_BRN1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/LOX_BRN2.BMF b/CONTENT/BT3025/VIDEO/MAT/LOX_BRN2.BMF new file mode 100644 index 0000000..daaf5db Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/LOX_BRN2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/LOX_BRN3.BMF b/CONTENT/BT3025/VIDEO/MAT/LOX_BRN3.BMF new file mode 100644 index 0000000..daaf5db Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/LOX_BRN3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/LOX_BRN4.BMF b/CONTENT/BT3025/VIDEO/MAT/LOX_BRN4.BMF new file mode 100644 index 0000000..daaf5db Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/LOX_BRN4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/LOX_BRN5.BMF b/CONTENT/BT3025/VIDEO/MAT/LOX_BRN5.BMF new file mode 100644 index 0000000..daaf5db Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/LOX_BRN5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/LOX_BRN6.BMF b/CONTENT/BT3025/VIDEO/MAT/LOX_BRN6.BMF new file mode 100644 index 0000000..daaf5db Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/LOX_BRN6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/LOX_BRN7.BMF b/CONTENT/BT3025/VIDEO/MAT/LOX_BRN7.BMF new file mode 100644 index 0000000..daaf5db Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/LOX_BRN7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/LOX_GRN0.BMF b/CONTENT/BT3025/VIDEO/MAT/LOX_GRN0.BMF new file mode 100644 index 0000000..b312cf0 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/LOX_GRN0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/LOX_GRN1.BMF b/CONTENT/BT3025/VIDEO/MAT/LOX_GRN1.BMF new file mode 100644 index 0000000..b312cf0 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/LOX_GRN1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/LOX_GRN2.BMF b/CONTENT/BT3025/VIDEO/MAT/LOX_GRN2.BMF new file mode 100644 index 0000000..b312cf0 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/LOX_GRN2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/LOX_GRN3.BMF b/CONTENT/BT3025/VIDEO/MAT/LOX_GRN3.BMF new file mode 100644 index 0000000..b312cf0 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/LOX_GRN3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/LOX_GRN4.BMF b/CONTENT/BT3025/VIDEO/MAT/LOX_GRN4.BMF new file mode 100644 index 0000000..b312cf0 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/LOX_GRN4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/LOX_GRN5.BMF b/CONTENT/BT3025/VIDEO/MAT/LOX_GRN5.BMF new file mode 100644 index 0000000..b312cf0 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/LOX_GRN5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/LOX_GRN6.BMF b/CONTENT/BT3025/VIDEO/MAT/LOX_GRN6.BMF new file mode 100644 index 0000000..b312cf0 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/LOX_GRN6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/LOX_GRN7.BMF b/CONTENT/BT3025/VIDEO/MAT/LOX_GRN7.BMF new file mode 100644 index 0000000..b312cf0 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/LOX_GRN7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/LOX_GRY0.BMF b/CONTENT/BT3025/VIDEO/MAT/LOX_GRY0.BMF new file mode 100644 index 0000000..3974501 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/LOX_GRY0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/LOX_GRY1.BMF b/CONTENT/BT3025/VIDEO/MAT/LOX_GRY1.BMF new file mode 100644 index 0000000..3974501 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/LOX_GRY1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/LOX_GRY2.BMF b/CONTENT/BT3025/VIDEO/MAT/LOX_GRY2.BMF new file mode 100644 index 0000000..3974501 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/LOX_GRY2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/LOX_GRY3.BMF b/CONTENT/BT3025/VIDEO/MAT/LOX_GRY3.BMF new file mode 100644 index 0000000..3974501 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/LOX_GRY3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/LOX_GRY4.BMF b/CONTENT/BT3025/VIDEO/MAT/LOX_GRY4.BMF new file mode 100644 index 0000000..3974501 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/LOX_GRY4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/LOX_GRY5.BMF b/CONTENT/BT3025/VIDEO/MAT/LOX_GRY5.BMF new file mode 100644 index 0000000..3974501 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/LOX_GRY5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/LOX_GRY6.BMF b/CONTENT/BT3025/VIDEO/MAT/LOX_GRY6.BMF new file mode 100644 index 0000000..3974501 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/LOX_GRY6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/LOX_GRY7.BMF b/CONTENT/BT3025/VIDEO/MAT/LOX_GRY7.BMF new file mode 100644 index 0000000..3974501 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/LOX_GRY7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/LOX_RED0.BMF b/CONTENT/BT3025/VIDEO/MAT/LOX_RED0.BMF new file mode 100644 index 0000000..7403bd6 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/LOX_RED0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/LOX_RED1.BMF b/CONTENT/BT3025/VIDEO/MAT/LOX_RED1.BMF new file mode 100644 index 0000000..7403bd6 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/LOX_RED1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/LOX_RED2.BMF b/CONTENT/BT3025/VIDEO/MAT/LOX_RED2.BMF new file mode 100644 index 0000000..7403bd6 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/LOX_RED2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/LOX_RED3.BMF b/CONTENT/BT3025/VIDEO/MAT/LOX_RED3.BMF new file mode 100644 index 0000000..7403bd6 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/LOX_RED3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/LOX_RED4.BMF b/CONTENT/BT3025/VIDEO/MAT/LOX_RED4.BMF new file mode 100644 index 0000000..7403bd6 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/LOX_RED4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/LOX_RED5.BMF b/CONTENT/BT3025/VIDEO/MAT/LOX_RED5.BMF new file mode 100644 index 0000000..7403bd6 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/LOX_RED5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/LOX_RED6.BMF b/CONTENT/BT3025/VIDEO/MAT/LOX_RED6.BMF new file mode 100644 index 0000000..7403bd6 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/LOX_RED6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/LOX_RED7.BMF b/CONTENT/BT3025/VIDEO/MAT/LOX_RED7.BMF new file mode 100644 index 0000000..7403bd6 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/LOX_RED7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/LOX_TAN0.BMF b/CONTENT/BT3025/VIDEO/MAT/LOX_TAN0.BMF new file mode 100644 index 0000000..f11ea5d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/LOX_TAN0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/LOX_TAN1.BMF b/CONTENT/BT3025/VIDEO/MAT/LOX_TAN1.BMF new file mode 100644 index 0000000..f11ea5d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/LOX_TAN1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/LOX_TAN2.BMF b/CONTENT/BT3025/VIDEO/MAT/LOX_TAN2.BMF new file mode 100644 index 0000000..f11ea5d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/LOX_TAN2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/LOX_TAN3.BMF b/CONTENT/BT3025/VIDEO/MAT/LOX_TAN3.BMF new file mode 100644 index 0000000..f11ea5d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/LOX_TAN3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/LOX_TAN4.BMF b/CONTENT/BT3025/VIDEO/MAT/LOX_TAN4.BMF new file mode 100644 index 0000000..f11ea5d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/LOX_TAN4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/LOX_TAN5.BMF b/CONTENT/BT3025/VIDEO/MAT/LOX_TAN5.BMF new file mode 100644 index 0000000..f11ea5d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/LOX_TAN5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/LOX_TAN6.BMF b/CONTENT/BT3025/VIDEO/MAT/LOX_TAN6.BMF new file mode 100644 index 0000000..f11ea5d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/LOX_TAN6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/LOX_TAN7.BMF b/CONTENT/BT3025/VIDEO/MAT/LOX_TAN7.BMF new file mode 100644 index 0000000..f11ea5d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/LOX_TAN7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/LOX_WHT0.BMF b/CONTENT/BT3025/VIDEO/MAT/LOX_WHT0.BMF new file mode 100644 index 0000000..39d9b82 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/LOX_WHT0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/LOX_WHT1.BMF b/CONTENT/BT3025/VIDEO/MAT/LOX_WHT1.BMF new file mode 100644 index 0000000..39d9b82 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/LOX_WHT1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/LOX_WHT2.BMF b/CONTENT/BT3025/VIDEO/MAT/LOX_WHT2.BMF new file mode 100644 index 0000000..39d9b82 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/LOX_WHT2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/LOX_WHT3.BMF b/CONTENT/BT3025/VIDEO/MAT/LOX_WHT3.BMF new file mode 100644 index 0000000..39d9b82 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/LOX_WHT3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/LOX_WHT4.BMF b/CONTENT/BT3025/VIDEO/MAT/LOX_WHT4.BMF new file mode 100644 index 0000000..39d9b82 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/LOX_WHT4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/LOX_WHT5.BMF b/CONTENT/BT3025/VIDEO/MAT/LOX_WHT5.BMF new file mode 100644 index 0000000..39d9b82 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/LOX_WHT5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/LOX_WHT6.BMF b/CONTENT/BT3025/VIDEO/MAT/LOX_WHT6.BMF new file mode 100644 index 0000000..39d9b82 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/LOX_WHT6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/LOX_WHT7.BMF b/CONTENT/BT3025/VIDEO/MAT/LOX_WHT7.BMF new file mode 100644 index 0000000..39d9b82 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/LOX_WHT7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/MADFX.BMF b/CONTENT/BT3025/VIDEO/MAT/MADFX.BMF new file mode 100644 index 0000000..d677902 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/MADFX.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/MAXSKIN.BMF b/CONTENT/BT3025/VIDEO/MAT/MAXSKIN.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/MAXSKIN.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/MAXSKIN0.BMF b/CONTENT/BT3025/VIDEO/MAT/MAXSKIN0.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/MAXSKIN0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/MAXSKIN1.BMF b/CONTENT/BT3025/VIDEO/MAT/MAXSKIN1.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/MAXSKIN1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/MAXSKIN2.BMF b/CONTENT/BT3025/VIDEO/MAT/MAXSKIN2.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/MAXSKIN2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/MAXSKIN3.BMF b/CONTENT/BT3025/VIDEO/MAT/MAXSKIN3.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/MAXSKIN3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/MAXSKIN4.BMF b/CONTENT/BT3025/VIDEO/MAT/MAXSKIN4.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/MAXSKIN4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/MAXSKIN5.BMF b/CONTENT/BT3025/VIDEO/MAT/MAXSKIN5.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/MAXSKIN5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/MAXSKIN6.BMF b/CONTENT/BT3025/VIDEO/MAT/MAXSKIN6.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/MAXSKIN6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/MAXSKIN7.BMF b/CONTENT/BT3025/VIDEO/MAT/MAXSKIN7.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/MAXSKIN7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/MAX_BLK0.BMF b/CONTENT/BT3025/VIDEO/MAT/MAX_BLK0.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/MAX_BLK0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/MAX_BLK1.BMF b/CONTENT/BT3025/VIDEO/MAT/MAX_BLK1.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/MAX_BLK1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/MAX_BLK2.BMF b/CONTENT/BT3025/VIDEO/MAT/MAX_BLK2.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/MAX_BLK2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/MAX_BLK3.BMF b/CONTENT/BT3025/VIDEO/MAT/MAX_BLK3.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/MAX_BLK3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/MAX_BLK4.BMF b/CONTENT/BT3025/VIDEO/MAT/MAX_BLK4.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/MAX_BLK4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/MAX_BLK5.BMF b/CONTENT/BT3025/VIDEO/MAT/MAX_BLK5.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/MAX_BLK5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/MAX_BLK6.BMF b/CONTENT/BT3025/VIDEO/MAT/MAX_BLK6.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/MAX_BLK6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/MAX_BLK7.BMF b/CONTENT/BT3025/VIDEO/MAT/MAX_BLK7.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/MAX_BLK7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/MAX_BRN0.BMF b/CONTENT/BT3025/VIDEO/MAT/MAX_BRN0.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/MAX_BRN0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/MAX_BRN1.BMF b/CONTENT/BT3025/VIDEO/MAT/MAX_BRN1.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/MAX_BRN1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/MAX_BRN2.BMF b/CONTENT/BT3025/VIDEO/MAT/MAX_BRN2.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/MAX_BRN2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/MAX_BRN3.BMF b/CONTENT/BT3025/VIDEO/MAT/MAX_BRN3.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/MAX_BRN3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/MAX_BRN4.BMF b/CONTENT/BT3025/VIDEO/MAT/MAX_BRN4.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/MAX_BRN4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/MAX_BRN5.BMF b/CONTENT/BT3025/VIDEO/MAT/MAX_BRN5.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/MAX_BRN5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/MAX_BRN6.BMF b/CONTENT/BT3025/VIDEO/MAT/MAX_BRN6.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/MAX_BRN6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/MAX_BRN7.BMF b/CONTENT/BT3025/VIDEO/MAT/MAX_BRN7.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/MAX_BRN7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/MAX_GRN0.BMF b/CONTENT/BT3025/VIDEO/MAT/MAX_GRN0.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/MAX_GRN0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/MAX_GRN1.BMF b/CONTENT/BT3025/VIDEO/MAT/MAX_GRN1.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/MAX_GRN1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/MAX_GRN2.BMF b/CONTENT/BT3025/VIDEO/MAT/MAX_GRN2.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/MAX_GRN2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/MAX_GRN3.BMF b/CONTENT/BT3025/VIDEO/MAT/MAX_GRN3.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/MAX_GRN3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/MAX_GRN4.BMF b/CONTENT/BT3025/VIDEO/MAT/MAX_GRN4.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/MAX_GRN4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/MAX_GRN5.BMF b/CONTENT/BT3025/VIDEO/MAT/MAX_GRN5.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/MAX_GRN5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/MAX_GRN6.BMF b/CONTENT/BT3025/VIDEO/MAT/MAX_GRN6.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/MAX_GRN6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/MAX_GRN7.BMF b/CONTENT/BT3025/VIDEO/MAT/MAX_GRN7.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/MAX_GRN7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/MAX_GRY0.BMF b/CONTENT/BT3025/VIDEO/MAT/MAX_GRY0.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/MAX_GRY0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/MAX_GRY1.BMF b/CONTENT/BT3025/VIDEO/MAT/MAX_GRY1.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/MAX_GRY1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/MAX_GRY2.BMF b/CONTENT/BT3025/VIDEO/MAT/MAX_GRY2.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/MAX_GRY2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/MAX_GRY3.BMF b/CONTENT/BT3025/VIDEO/MAT/MAX_GRY3.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/MAX_GRY3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/MAX_GRY4.BMF b/CONTENT/BT3025/VIDEO/MAT/MAX_GRY4.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/MAX_GRY4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/MAX_GRY5.BMF b/CONTENT/BT3025/VIDEO/MAT/MAX_GRY5.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/MAX_GRY5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/MAX_GRY6.BMF b/CONTENT/BT3025/VIDEO/MAT/MAX_GRY6.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/MAX_GRY6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/MAX_GRY7.BMF b/CONTENT/BT3025/VIDEO/MAT/MAX_GRY7.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/MAX_GRY7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/MAX_RED0.BMF b/CONTENT/BT3025/VIDEO/MAT/MAX_RED0.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/MAX_RED0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/MAX_RED1.BMF b/CONTENT/BT3025/VIDEO/MAT/MAX_RED1.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/MAX_RED1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/MAX_RED2.BMF b/CONTENT/BT3025/VIDEO/MAT/MAX_RED2.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/MAX_RED2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/MAX_RED3.BMF b/CONTENT/BT3025/VIDEO/MAT/MAX_RED3.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/MAX_RED3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/MAX_RED4.BMF b/CONTENT/BT3025/VIDEO/MAT/MAX_RED4.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/MAX_RED4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/MAX_RED5.BMF b/CONTENT/BT3025/VIDEO/MAT/MAX_RED5.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/MAX_RED5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/MAX_RED6.BMF b/CONTENT/BT3025/VIDEO/MAT/MAX_RED6.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/MAX_RED6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/MAX_RED7.BMF b/CONTENT/BT3025/VIDEO/MAT/MAX_RED7.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/MAX_RED7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/MAX_TAN0.BMF b/CONTENT/BT3025/VIDEO/MAT/MAX_TAN0.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/MAX_TAN0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/MAX_TAN1.BMF b/CONTENT/BT3025/VIDEO/MAT/MAX_TAN1.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/MAX_TAN1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/MAX_TAN2.BMF b/CONTENT/BT3025/VIDEO/MAT/MAX_TAN2.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/MAX_TAN2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/MAX_TAN3.BMF b/CONTENT/BT3025/VIDEO/MAT/MAX_TAN3.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/MAX_TAN3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/MAX_TAN4.BMF b/CONTENT/BT3025/VIDEO/MAT/MAX_TAN4.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/MAX_TAN4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/MAX_TAN5.BMF b/CONTENT/BT3025/VIDEO/MAT/MAX_TAN5.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/MAX_TAN5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/MAX_TAN6.BMF b/CONTENT/BT3025/VIDEO/MAT/MAX_TAN6.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/MAX_TAN6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/MAX_TAN7.BMF b/CONTENT/BT3025/VIDEO/MAT/MAX_TAN7.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/MAX_TAN7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/MAX_WHT0.BMF b/CONTENT/BT3025/VIDEO/MAT/MAX_WHT0.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/MAX_WHT0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/MAX_WHT1.BMF b/CONTENT/BT3025/VIDEO/MAT/MAX_WHT1.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/MAX_WHT1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/MAX_WHT2.BMF b/CONTENT/BT3025/VIDEO/MAT/MAX_WHT2.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/MAX_WHT2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/MAX_WHT3.BMF b/CONTENT/BT3025/VIDEO/MAT/MAX_WHT3.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/MAX_WHT3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/MAX_WHT4.BMF b/CONTENT/BT3025/VIDEO/MAT/MAX_WHT4.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/MAX_WHT4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/MAX_WHT5.BMF b/CONTENT/BT3025/VIDEO/MAT/MAX_WHT5.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/MAX_WHT5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/MAX_WHT6.BMF b/CONTENT/BT3025/VIDEO/MAT/MAX_WHT6.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/MAX_WHT6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/MAX_WHT7.BMF b/CONTENT/BT3025/VIDEO/MAT/MAX_WHT7.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/MAX_WHT7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/MECHFX.BMF b/CONTENT/BT3025/VIDEO/MAT/MECHFX.BMF new file mode 100644 index 0000000..faeeb1d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/MECHFX.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/MORNING/DIVISION.SAV/GRASS.BMF b/CONTENT/BT3025/VIDEO/MAT/MORNING/DIVISION.SAV/GRASS.BMF new file mode 100644 index 0000000..a670637 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/MORNING/DIVISION.SAV/GRASS.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/MORNING/DIVISION.SAV/RAVINES.BMF b/CONTENT/BT3025/VIDEO/MAT/MORNING/DIVISION.SAV/RAVINES.BMF new file mode 100644 index 0000000..3c03fce Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/MORNING/DIVISION.SAV/RAVINES.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/MORNING/DIVISION.SAV/RAVINES.VMF b/CONTENT/BT3025/VIDEO/MAT/MORNING/DIVISION.SAV/RAVINES.VMF new file mode 100644 index 0000000..22360ca --- /dev/null +++ b/CONTENT/BT3025/VIDEO/MAT/MORNING/DIVISION.SAV/RAVINES.VMF @@ -0,0 +1,61 @@ +DIV-VIZ2 +HEADER +( + VERSION=2:08; + DATE=8:2:97; + TIME=1:39; + FILETYPE=MATERIAL +) +{ +} + +TEXTURE(NAME="bdinta_tex") +{ + MAP {"bdinta"} + MAGNIFY {BILINEAR} +} + +TEXTURE(NAME="bdintb_tex") +{ + MAP {"bdintb"} + MAGNIFY {BILINEAR} +} + +RAMP(NAME="dust") +{ + DATA {0.285, 0.21, 0.2, 0.75, 0.5, 0.4} +} + +RAMP(NAME="rock") +{ + DATA {0.25, 0.21, 0.21, 0.8, 0.5, 0.4} +} + +MATERIAL(NAME="ravinerock_mtl") +{ + TEXTURE {"bdinta_tex"} + RAMP {"rock"} +} + +MATERIAL(NAME="ravinerubble_mtl") +{ + TEXTURE {"bdintb_tex"} + RAMP {"dust"} +} + +MATERIAL(NAME="tarmac_mtl") +{ + TEXTURE {"bdintb_tex"} + AMBIENT {0.4143, 0.417459, 0.417143} + DIFFUSE {0.4143, 0.415668, 0.417143} + RAMP {"dust"} +} + +MATERIAL(NAME="dirt_mtl") +{ + TEXTURE {"bdintb_tex"} + AMBIENT {0.8, 0.8, 0.8} + DIFFUSE {0.8, 0.8, 0.8} + RAMP {"dust"} +} + diff --git a/CONTENT/BT3025/VIDEO/MAT/MORNING/GRASS.BMF b/CONTENT/BT3025/VIDEO/MAT/MORNING/GRASS.BMF new file mode 100644 index 0000000..6d5b955 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/MORNING/GRASS.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/MORNING/GRASS.VMF b/CONTENT/BT3025/VIDEO/MAT/MORNING/GRASS.VMF new file mode 100644 index 0000000..487e461 --- /dev/null +++ b/CONTENT/BT3025/VIDEO/MAT/MORNING/GRASS.VMF @@ -0,0 +1,71 @@ +DIV-VIZ2 +HEADER +( + VERSION=2:08; + DATE=5:3:97; + TIME=23:48; + FILETYPE=MATERIAL +) +{ +} + +TEXTURE(NAME="grassc_tex") +{ + MAP {"grassc"} + MAGNIFY {BILINEAR} +} + +TEXTURE(NAME="tree9_tex") +{ + MAP {"tree"} + BITSLICE { 8 } +} + +TEXTURE(NAME="bintA_tex") +{ + MAP {"bintA"} + MAGNIFY {BILINEAR} +} + +RAMP(NAME="grass") +{ + DATA {0.2, 0.27, 0.2, 0.54, 0.42, 0.4} +} + +MATERIAL(NAME="grass_mtl") +{ + TEXTURE {"grassc_tex"} + AMBIENT {0.5, 0.5, 0.86372} + DIFFUSE {0.5, 0.5, 0.86372} + RAMP {"grass"} +} + +MATERIAL(NAME="tree_mtl") +{ + TEXTURE {"tree9_tex"} + AMBIENT {0.8, 0.1, 00} + DIFFUSE {0.8, 0.1, 00} +} + +MATERIAL(NAME="trunk_mtl") +{ + TEXTURE {"bintA_tex"} + AMBIENT {0.1898, 0.088563, 0} + DIFFUSE {0.1898, 0.064105, 0} +} + +MATERIAL(NAME="rings_mtl") +{ + TEXTURE {"bintA_tex"} + AMBIENT {0.13898, 0.0188563, 0.051} + DIFFUSE {0.13898, 0.0164105, 0.051} +} + +MATERIAL(NAME="leaves_mtl") +{ + TEXTURE {"tree9_tex"} + AMBIENT {0.6, 0.2651, 0.2531} + DIFFUSE {0.6, 0.2651, 0.2531} +} + + \ No newline at end of file diff --git a/CONTENT/BT3025/VIDEO/MAT/MORNING/RAVINES.BMF b/CONTENT/BT3025/VIDEO/MAT/MORNING/RAVINES.BMF new file mode 100644 index 0000000..9f5765a Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/MORNING/RAVINES.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/MORNING/RAVINES.VMF b/CONTENT/BT3025/VIDEO/MAT/MORNING/RAVINES.VMF new file mode 100644 index 0000000..3ff362b --- /dev/null +++ b/CONTENT/BT3025/VIDEO/MAT/MORNING/RAVINES.VMF @@ -0,0 +1,62 @@ +DIV-VIZ2 +HEADER +( + VERSION=2:08; + DATE=8:2:97; + TIME=1:39; + FILETYPE=MATERIAL +) +{ +} + +TEXTURE(NAME="bdinta_tex") +{ + MAP {"bdinta"} + MAGNIFY {BILINEAR} +} + +TEXTURE(NAME="bdintb_tex") +{ + MAP {"bdintb"} + MAGNIFY {BILINEAR} +} + +RAMP(NAME="dust") +{ + DATA {0.14, 0.1, 0.25, 0.6, 0.4, 0.51} +} + +RAMP(NAME="rock") +{ + DATA {0.125, 0.1, 0.25, 0.62, 0.4, 0.52} +} + +MATERIAL(NAME="ravinerock_mtl") +{ + TEXTURE {"bdinta_tex"} + RAMP {"rock"} +} + +MATERIAL(NAME="ravinerubble_mtl") +{ + TEXTURE {"bdintb_tex"} + RAMP {"dust"} +} + +MATERIAL(NAME="tarmac_mtl") +{ + TEXTURE {"bdintb_tex"} + AMBIENT {0.4143, 0.417459, 0.417143} + DIFFUSE {0.4143, 0.415668, 0.417143} + RAMP {"dust"} +} + +MATERIAL(NAME="dirt_mtl") +{ + TEXTURE {"bdintb_tex"} + AMBIENT {0.8, 0.8, 0.8} + DIFFUSE {0.8, 0.8, 0.8} + RAMP {"dust"} +} + + \ No newline at end of file diff --git a/CONTENT/BT3025/VIDEO/MAT/NIGHT/DIVISION.SAV/GRASS.BMF b/CONTENT/BT3025/VIDEO/MAT/NIGHT/DIVISION.SAV/GRASS.BMF new file mode 100644 index 0000000..6d5b955 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/NIGHT/DIVISION.SAV/GRASS.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/NIGHT/DIVISION.SAV/RAVINES.BMF b/CONTENT/BT3025/VIDEO/MAT/NIGHT/DIVISION.SAV/RAVINES.BMF new file mode 100644 index 0000000..85e7021 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/NIGHT/DIVISION.SAV/RAVINES.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/NIGHT/DIVISION.SAV/RAVINES.VMF b/CONTENT/BT3025/VIDEO/MAT/NIGHT/DIVISION.SAV/RAVINES.VMF new file mode 100644 index 0000000..b4459b2 --- /dev/null +++ b/CONTENT/BT3025/VIDEO/MAT/NIGHT/DIVISION.SAV/RAVINES.VMF @@ -0,0 +1,61 @@ +DIV-VIZ2 +HEADER +( + VERSION=2:08; + DATE=8:2:97; + TIME=1:39; + FILETYPE=MATERIAL +) +{ +} + +TEXTURE(NAME="bdinta_tex") +{ + MAP {"bdinta"} + MAGNIFY {BILINEAR} +} + +TEXTURE(NAME="bdintb_tex") +{ + MAP {"bdintb"} + MAGNIFY {BILINEAR} +} + +RAMP(NAME="dust") +{ + DATA {0.21, 0.15, 0.15, 0.6, 0.3, 0.15} +} + +RAMP(NAME="rock") +{ + DATA {0.1875, 0.15, 0.15, 0.6, 0.3, 0.15} +} + +MATERIAL(NAME="ravinerock_mtl") +{ + TEXTURE {"bdinta_tex"} + RAMP {"rock"} +} + +MATERIAL(NAME="ravinerubble_mtl") +{ + TEXTURE {"bdintb_tex"} + RAMP {"dust"} +} + +MATERIAL(NAME="tarmac_mtl") +{ + TEXTURE {"bdintb_tex"} + AMBIENT {0.4143, 0.417459, 0.417143} + DIFFUSE {0.4143, 0.415668, 0.417143} + RAMP {"dust"} +} + +MATERIAL(NAME="dirt_mtl") +{ + TEXTURE {"bdintb_tex"} + AMBIENT {0.8, 0.8, 0.8} + DIFFUSE {0.8, 0.8, 0.8} + RAMP {"dust"} +} + diff --git a/CONTENT/BT3025/VIDEO/MAT/NIGHT/GRASS.BMF b/CONTENT/BT3025/VIDEO/MAT/NIGHT/GRASS.BMF new file mode 100644 index 0000000..f101fbf Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/NIGHT/GRASS.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/NIGHT/GRASS.VMF b/CONTENT/BT3025/VIDEO/MAT/NIGHT/GRASS.VMF new file mode 100644 index 0000000..6c4bf30 --- /dev/null +++ b/CONTENT/BT3025/VIDEO/MAT/NIGHT/GRASS.VMF @@ -0,0 +1,71 @@ +DIV-VIZ2 +HEADER +( + VERSION=2:08; + DATE=5:3:97; + TIME=23:48; + FILETYPE=MATERIAL +) +{ +} + +TEXTURE(NAME="grassc_tex") +{ + MAP {"grassc"} + MAGNIFY {BILINEAR} +} + +TEXTURE(NAME="tree9_tex") +{ + MAP {"tree"} + BITSLICE { 8 } +} + +TEXTURE(NAME="bintA_tex") +{ + MAP {"bintA"} + MAGNIFY {BILINEAR} +} + +RAMP(NAME="grass") +{ + DATA {0.08, 0.1, 0.02, 0.38, 0.33, 0.13} +} + +MATERIAL(NAME="grass_mtl") +{ + TEXTURE {"grassc_tex"} + AMBIENT {0.5, 0.5, 0.86372} + DIFFUSE {0.5, 0.5, 0.86372} + RAMP {"grass"} +} + +MATERIAL(NAME="tree_mtl") +{ + TEXTURE {"tree9_tex"} + AMBIENT {0.8, 0.1, 0} + DIFFUSE {0.8, 0.1, 0} +} + +MATERIAL(NAME="trunk_mtl") +{ + TEXTURE {"bintA_tex"} + AMBIENT {0.1898, 0.088563, 0} + DIFFUSE {0.1898, 0.064105, 0} +} + +MATERIAL(NAME="rings_mtl") +{ + TEXTURE {"bintA_tex"} + AMBIENT {0.13898, 0.018856, 0.051} + DIFFUSE {0.13898, 0.01641, 0.051} +} + +MATERIAL(NAME="leaves_mtl") +{ + TEXTURE {"tree9_tex"} + AMBIENT {0.6, 0.2651, 0.2531} + DIFFUSE {0.6, 0.2651, 0.2531} +} + + \ No newline at end of file diff --git a/CONTENT/BT3025/VIDEO/MAT/NIGHT/RAVINES.BMF b/CONTENT/BT3025/VIDEO/MAT/NIGHT/RAVINES.BMF new file mode 100644 index 0000000..fd7c13d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/NIGHT/RAVINES.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/NIGHT/RAVINES.VMF b/CONTENT/BT3025/VIDEO/MAT/NIGHT/RAVINES.VMF new file mode 100644 index 0000000..f0942e5 --- /dev/null +++ b/CONTENT/BT3025/VIDEO/MAT/NIGHT/RAVINES.VMF @@ -0,0 +1,62 @@ +DIV-VIZ2 +HEADER +( + VERSION=2:08; + DATE=8:2:97; + TIME=1:39; + FILETYPE=MATERIAL +) +{ +} + +TEXTURE(NAME="bdinta_tex") +{ + MAP {"bdinta"} + MAGNIFY {BILINEAR} +} + +TEXTURE(NAME="bdintb_tex") +{ + MAP {"bdintb"} + MAGNIFY {BILINEAR} +} + +RAMP(NAME="dust") +{ + DATA {0.14, 0.1, 0.1, 0.55, 0.3, 0.2} +} + +RAMP(NAME="rock") +{ + DATA {0.125, 0.1, 0.1, 0.58, 0.3, 0.2} +} + +MATERIAL(NAME="ravinerock_mtl") +{ + TEXTURE {"bdinta_tex"} + RAMP {"rock"} +} + +MATERIAL(NAME="ravinerubble_mtl") +{ + TEXTURE {"bdintb_tex"} + RAMP {"dust"} +} + +MATERIAL(NAME="tarmac_mtl") +{ + TEXTURE {"bdintb_tex"} + AMBIENT {0.4143, 0.417459, 0.417143} + DIFFUSE {0.4143, 0.415668, 0.417143} + RAMP {"dust"} +} + +MATERIAL(NAME="dirt_mtl") +{ + TEXTURE {"bdintb_tex"} + AMBIENT {0.8, 0.8, 0.8} + DIFFUSE {0.8, 0.8, 0.8} + RAMP {"dust"} +} + + \ No newline at end of file diff --git a/CONTENT/BT3025/VIDEO/MAT/OWNFX.BMF b/CONTENT/BT3025/VIDEO/MAT/OWNFX.BMF new file mode 100644 index 0000000..effb09c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/OWNFX.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/OWXSKIN.BMF b/CONTENT/BT3025/VIDEO/MAT/OWXSKIN.BMF new file mode 100644 index 0000000..21d5a66 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/OWXSKIN.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/OWXSKIN0.BMF b/CONTENT/BT3025/VIDEO/MAT/OWXSKIN0.BMF new file mode 100644 index 0000000..21d5a66 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/OWXSKIN0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/OWXSKIN1.BMF b/CONTENT/BT3025/VIDEO/MAT/OWXSKIN1.BMF new file mode 100644 index 0000000..21d5a66 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/OWXSKIN1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/OWXSKIN2.BMF b/CONTENT/BT3025/VIDEO/MAT/OWXSKIN2.BMF new file mode 100644 index 0000000..21d5a66 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/OWXSKIN2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/OWXSKIN3.BMF b/CONTENT/BT3025/VIDEO/MAT/OWXSKIN3.BMF new file mode 100644 index 0000000..21d5a66 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/OWXSKIN3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/OWXSKIN4.BMF b/CONTENT/BT3025/VIDEO/MAT/OWXSKIN4.BMF new file mode 100644 index 0000000..21d5a66 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/OWXSKIN4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/OWXSKIN5.BMF b/CONTENT/BT3025/VIDEO/MAT/OWXSKIN5.BMF new file mode 100644 index 0000000..21d5a66 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/OWXSKIN5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/OWXSKIN6.BMF b/CONTENT/BT3025/VIDEO/MAT/OWXSKIN6.BMF new file mode 100644 index 0000000..21d5a66 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/OWXSKIN6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/OWXSKIN7.BMF b/CONTENT/BT3025/VIDEO/MAT/OWXSKIN7.BMF new file mode 100644 index 0000000..21d5a66 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/OWXSKIN7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/OWX_BLK0.BMF b/CONTENT/BT3025/VIDEO/MAT/OWX_BLK0.BMF new file mode 100644 index 0000000..ca044c1 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/OWX_BLK0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/OWX_BLK1.BMF b/CONTENT/BT3025/VIDEO/MAT/OWX_BLK1.BMF new file mode 100644 index 0000000..ca044c1 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/OWX_BLK1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/OWX_BLK2.BMF b/CONTENT/BT3025/VIDEO/MAT/OWX_BLK2.BMF new file mode 100644 index 0000000..ca044c1 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/OWX_BLK2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/OWX_BLK3.BMF b/CONTENT/BT3025/VIDEO/MAT/OWX_BLK3.BMF new file mode 100644 index 0000000..ca044c1 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/OWX_BLK3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/OWX_BLK4.BMF b/CONTENT/BT3025/VIDEO/MAT/OWX_BLK4.BMF new file mode 100644 index 0000000..ca044c1 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/OWX_BLK4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/OWX_BLK5.BMF b/CONTENT/BT3025/VIDEO/MAT/OWX_BLK5.BMF new file mode 100644 index 0000000..ca044c1 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/OWX_BLK5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/OWX_BLK6.BMF b/CONTENT/BT3025/VIDEO/MAT/OWX_BLK6.BMF new file mode 100644 index 0000000..ca044c1 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/OWX_BLK6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/OWX_BLK7.BMF b/CONTENT/BT3025/VIDEO/MAT/OWX_BLK7.BMF new file mode 100644 index 0000000..ca044c1 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/OWX_BLK7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/OWX_BRN0.BMF b/CONTENT/BT3025/VIDEO/MAT/OWX_BRN0.BMF new file mode 100644 index 0000000..8cb98c0 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/OWX_BRN0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/OWX_BRN1.BMF b/CONTENT/BT3025/VIDEO/MAT/OWX_BRN1.BMF new file mode 100644 index 0000000..8cb98c0 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/OWX_BRN1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/OWX_BRN2.BMF b/CONTENT/BT3025/VIDEO/MAT/OWX_BRN2.BMF new file mode 100644 index 0000000..8cb98c0 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/OWX_BRN2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/OWX_BRN3.BMF b/CONTENT/BT3025/VIDEO/MAT/OWX_BRN3.BMF new file mode 100644 index 0000000..8cb98c0 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/OWX_BRN3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/OWX_BRN4.BMF b/CONTENT/BT3025/VIDEO/MAT/OWX_BRN4.BMF new file mode 100644 index 0000000..8cb98c0 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/OWX_BRN4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/OWX_BRN5.BMF b/CONTENT/BT3025/VIDEO/MAT/OWX_BRN5.BMF new file mode 100644 index 0000000..8cb98c0 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/OWX_BRN5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/OWX_BRN6.BMF b/CONTENT/BT3025/VIDEO/MAT/OWX_BRN6.BMF new file mode 100644 index 0000000..8cb98c0 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/OWX_BRN6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/OWX_BRN7.BMF b/CONTENT/BT3025/VIDEO/MAT/OWX_BRN7.BMF new file mode 100644 index 0000000..8cb98c0 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/OWX_BRN7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/OWX_GRN0.BMF b/CONTENT/BT3025/VIDEO/MAT/OWX_GRN0.BMF new file mode 100644 index 0000000..da15e84 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/OWX_GRN0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/OWX_GRN1.BMF b/CONTENT/BT3025/VIDEO/MAT/OWX_GRN1.BMF new file mode 100644 index 0000000..da15e84 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/OWX_GRN1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/OWX_GRN2.BMF b/CONTENT/BT3025/VIDEO/MAT/OWX_GRN2.BMF new file mode 100644 index 0000000..da15e84 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/OWX_GRN2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/OWX_GRN3.BMF b/CONTENT/BT3025/VIDEO/MAT/OWX_GRN3.BMF new file mode 100644 index 0000000..da15e84 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/OWX_GRN3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/OWX_GRN4.BMF b/CONTENT/BT3025/VIDEO/MAT/OWX_GRN4.BMF new file mode 100644 index 0000000..da15e84 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/OWX_GRN4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/OWX_GRN5.BMF b/CONTENT/BT3025/VIDEO/MAT/OWX_GRN5.BMF new file mode 100644 index 0000000..da15e84 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/OWX_GRN5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/OWX_GRN6.BMF b/CONTENT/BT3025/VIDEO/MAT/OWX_GRN6.BMF new file mode 100644 index 0000000..da15e84 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/OWX_GRN6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/OWX_GRN7.BMF b/CONTENT/BT3025/VIDEO/MAT/OWX_GRN7.BMF new file mode 100644 index 0000000..da15e84 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/OWX_GRN7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/OWX_GRY0.BMF b/CONTENT/BT3025/VIDEO/MAT/OWX_GRY0.BMF new file mode 100644 index 0000000..12be908 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/OWX_GRY0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/OWX_GRY1.BMF b/CONTENT/BT3025/VIDEO/MAT/OWX_GRY1.BMF new file mode 100644 index 0000000..12be908 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/OWX_GRY1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/OWX_GRY2.BMF b/CONTENT/BT3025/VIDEO/MAT/OWX_GRY2.BMF new file mode 100644 index 0000000..12be908 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/OWX_GRY2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/OWX_GRY3.BMF b/CONTENT/BT3025/VIDEO/MAT/OWX_GRY3.BMF new file mode 100644 index 0000000..12be908 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/OWX_GRY3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/OWX_GRY4.BMF b/CONTENT/BT3025/VIDEO/MAT/OWX_GRY4.BMF new file mode 100644 index 0000000..12be908 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/OWX_GRY4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/OWX_GRY5.BMF b/CONTENT/BT3025/VIDEO/MAT/OWX_GRY5.BMF new file mode 100644 index 0000000..12be908 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/OWX_GRY5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/OWX_GRY6.BMF b/CONTENT/BT3025/VIDEO/MAT/OWX_GRY6.BMF new file mode 100644 index 0000000..12be908 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/OWX_GRY6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/OWX_GRY7.BMF b/CONTENT/BT3025/VIDEO/MAT/OWX_GRY7.BMF new file mode 100644 index 0000000..12be908 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/OWX_GRY7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/OWX_RED0.BMF b/CONTENT/BT3025/VIDEO/MAT/OWX_RED0.BMF new file mode 100644 index 0000000..724f0d6 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/OWX_RED0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/OWX_RED1.BMF b/CONTENT/BT3025/VIDEO/MAT/OWX_RED1.BMF new file mode 100644 index 0000000..724f0d6 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/OWX_RED1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/OWX_RED2.BMF b/CONTENT/BT3025/VIDEO/MAT/OWX_RED2.BMF new file mode 100644 index 0000000..724f0d6 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/OWX_RED2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/OWX_RED3.BMF b/CONTENT/BT3025/VIDEO/MAT/OWX_RED3.BMF new file mode 100644 index 0000000..724f0d6 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/OWX_RED3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/OWX_RED4.BMF b/CONTENT/BT3025/VIDEO/MAT/OWX_RED4.BMF new file mode 100644 index 0000000..724f0d6 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/OWX_RED4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/OWX_RED5.BMF b/CONTENT/BT3025/VIDEO/MAT/OWX_RED5.BMF new file mode 100644 index 0000000..724f0d6 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/OWX_RED5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/OWX_RED6.BMF b/CONTENT/BT3025/VIDEO/MAT/OWX_RED6.BMF new file mode 100644 index 0000000..724f0d6 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/OWX_RED6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/OWX_RED7.BMF b/CONTENT/BT3025/VIDEO/MAT/OWX_RED7.BMF new file mode 100644 index 0000000..724f0d6 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/OWX_RED7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/OWX_TAN0.BMF b/CONTENT/BT3025/VIDEO/MAT/OWX_TAN0.BMF new file mode 100644 index 0000000..dfb6fcc Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/OWX_TAN0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/OWX_TAN1.BMF b/CONTENT/BT3025/VIDEO/MAT/OWX_TAN1.BMF new file mode 100644 index 0000000..dfb6fcc Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/OWX_TAN1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/OWX_TAN2.BMF b/CONTENT/BT3025/VIDEO/MAT/OWX_TAN2.BMF new file mode 100644 index 0000000..dfb6fcc Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/OWX_TAN2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/OWX_TAN3.BMF b/CONTENT/BT3025/VIDEO/MAT/OWX_TAN3.BMF new file mode 100644 index 0000000..dfb6fcc Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/OWX_TAN3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/OWX_TAN4.BMF b/CONTENT/BT3025/VIDEO/MAT/OWX_TAN4.BMF new file mode 100644 index 0000000..dfb6fcc Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/OWX_TAN4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/OWX_TAN5.BMF b/CONTENT/BT3025/VIDEO/MAT/OWX_TAN5.BMF new file mode 100644 index 0000000..dfb6fcc Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/OWX_TAN5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/OWX_TAN6.BMF b/CONTENT/BT3025/VIDEO/MAT/OWX_TAN6.BMF new file mode 100644 index 0000000..dfb6fcc Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/OWX_TAN6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/OWX_TAN7.BMF b/CONTENT/BT3025/VIDEO/MAT/OWX_TAN7.BMF new file mode 100644 index 0000000..dfb6fcc Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/OWX_TAN7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/OWX_WHT0.BMF b/CONTENT/BT3025/VIDEO/MAT/OWX_WHT0.BMF new file mode 100644 index 0000000..1dd3ecd Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/OWX_WHT0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/OWX_WHT1.BMF b/CONTENT/BT3025/VIDEO/MAT/OWX_WHT1.BMF new file mode 100644 index 0000000..1dd3ecd Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/OWX_WHT1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/OWX_WHT2.BMF b/CONTENT/BT3025/VIDEO/MAT/OWX_WHT2.BMF new file mode 100644 index 0000000..1dd3ecd Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/OWX_WHT2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/OWX_WHT3.BMF b/CONTENT/BT3025/VIDEO/MAT/OWX_WHT3.BMF new file mode 100644 index 0000000..1dd3ecd Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/OWX_WHT3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/OWX_WHT4.BMF b/CONTENT/BT3025/VIDEO/MAT/OWX_WHT4.BMF new file mode 100644 index 0000000..1dd3ecd Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/OWX_WHT4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/OWX_WHT5.BMF b/CONTENT/BT3025/VIDEO/MAT/OWX_WHT5.BMF new file mode 100644 index 0000000..1dd3ecd Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/OWX_WHT5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/OWX_WHT6.BMF b/CONTENT/BT3025/VIDEO/MAT/OWX_WHT6.BMF new file mode 100644 index 0000000..1dd3ecd Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/OWX_WHT6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/OWX_WHT7.BMF b/CONTENT/BT3025/VIDEO/MAT/OWX_WHT7.BMF new file mode 100644 index 0000000..1dd3ecd Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/OWX_WHT7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAPFX.BMF b/CONTENT/BT3025/VIDEO/MAT/RAPFX.BMF new file mode 100644 index 0000000..effb09c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAPFX.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAPSKIN.BMF b/CONTENT/BT3025/VIDEO/MAT/RAPSKIN.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAPSKIN.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAPSKIN0.BMF b/CONTENT/BT3025/VIDEO/MAT/RAPSKIN0.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAPSKIN0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAPSKIN1.BMF b/CONTENT/BT3025/VIDEO/MAT/RAPSKIN1.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAPSKIN1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAPSKIN2.BMF b/CONTENT/BT3025/VIDEO/MAT/RAPSKIN2.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAPSKIN2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAPSKIN3.BMF b/CONTENT/BT3025/VIDEO/MAT/RAPSKIN3.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAPSKIN3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAPSKIN4.BMF b/CONTENT/BT3025/VIDEO/MAT/RAPSKIN4.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAPSKIN4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAPSKIN5.BMF b/CONTENT/BT3025/VIDEO/MAT/RAPSKIN5.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAPSKIN5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAPSKIN6.BMF b/CONTENT/BT3025/VIDEO/MAT/RAPSKIN6.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAPSKIN6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAPSKIN7.BMF b/CONTENT/BT3025/VIDEO/MAT/RAPSKIN7.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAPSKIN7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAP_BLK0.BMF b/CONTENT/BT3025/VIDEO/MAT/RAP_BLK0.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAP_BLK0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAP_BLK1.BMF b/CONTENT/BT3025/VIDEO/MAT/RAP_BLK1.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAP_BLK1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAP_BLK2.BMF b/CONTENT/BT3025/VIDEO/MAT/RAP_BLK2.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAP_BLK2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAP_BLK3.BMF b/CONTENT/BT3025/VIDEO/MAT/RAP_BLK3.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAP_BLK3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAP_BLK4.BMF b/CONTENT/BT3025/VIDEO/MAT/RAP_BLK4.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAP_BLK4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAP_BLK5.BMF b/CONTENT/BT3025/VIDEO/MAT/RAP_BLK5.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAP_BLK5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAP_BLK6.BMF b/CONTENT/BT3025/VIDEO/MAT/RAP_BLK6.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAP_BLK6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAP_BLK7.BMF b/CONTENT/BT3025/VIDEO/MAT/RAP_BLK7.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAP_BLK7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAP_BRN0.BMF b/CONTENT/BT3025/VIDEO/MAT/RAP_BRN0.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAP_BRN0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAP_BRN1.BMF b/CONTENT/BT3025/VIDEO/MAT/RAP_BRN1.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAP_BRN1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAP_BRN2.BMF b/CONTENT/BT3025/VIDEO/MAT/RAP_BRN2.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAP_BRN2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAP_BRN3.BMF b/CONTENT/BT3025/VIDEO/MAT/RAP_BRN3.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAP_BRN3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAP_BRN4.BMF b/CONTENT/BT3025/VIDEO/MAT/RAP_BRN4.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAP_BRN4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAP_BRN5.BMF b/CONTENT/BT3025/VIDEO/MAT/RAP_BRN5.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAP_BRN5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAP_BRN6.BMF b/CONTENT/BT3025/VIDEO/MAT/RAP_BRN6.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAP_BRN6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAP_BRN7.BMF b/CONTENT/BT3025/VIDEO/MAT/RAP_BRN7.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAP_BRN7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAP_GRN0.BMF b/CONTENT/BT3025/VIDEO/MAT/RAP_GRN0.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAP_GRN0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAP_GRN1.BMF b/CONTENT/BT3025/VIDEO/MAT/RAP_GRN1.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAP_GRN1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAP_GRN2.BMF b/CONTENT/BT3025/VIDEO/MAT/RAP_GRN2.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAP_GRN2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAP_GRN3.BMF b/CONTENT/BT3025/VIDEO/MAT/RAP_GRN3.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAP_GRN3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAP_GRN4.BMF b/CONTENT/BT3025/VIDEO/MAT/RAP_GRN4.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAP_GRN4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAP_GRN5.BMF b/CONTENT/BT3025/VIDEO/MAT/RAP_GRN5.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAP_GRN5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAP_GRN6.BMF b/CONTENT/BT3025/VIDEO/MAT/RAP_GRN6.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAP_GRN6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAP_GRN7.BMF b/CONTENT/BT3025/VIDEO/MAT/RAP_GRN7.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAP_GRN7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAP_GRY0.BMF b/CONTENT/BT3025/VIDEO/MAT/RAP_GRY0.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAP_GRY0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAP_GRY1.BMF b/CONTENT/BT3025/VIDEO/MAT/RAP_GRY1.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAP_GRY1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAP_GRY2.BMF b/CONTENT/BT3025/VIDEO/MAT/RAP_GRY2.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAP_GRY2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAP_GRY3.BMF b/CONTENT/BT3025/VIDEO/MAT/RAP_GRY3.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAP_GRY3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAP_GRY4.BMF b/CONTENT/BT3025/VIDEO/MAT/RAP_GRY4.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAP_GRY4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAP_GRY5.BMF b/CONTENT/BT3025/VIDEO/MAT/RAP_GRY5.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAP_GRY5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAP_GRY6.BMF b/CONTENT/BT3025/VIDEO/MAT/RAP_GRY6.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAP_GRY6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAP_GRY7.BMF b/CONTENT/BT3025/VIDEO/MAT/RAP_GRY7.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAP_GRY7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAP_RED0.BMF b/CONTENT/BT3025/VIDEO/MAT/RAP_RED0.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAP_RED0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAP_RED1.BMF b/CONTENT/BT3025/VIDEO/MAT/RAP_RED1.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAP_RED1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAP_RED2.BMF b/CONTENT/BT3025/VIDEO/MAT/RAP_RED2.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAP_RED2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAP_RED3.BMF b/CONTENT/BT3025/VIDEO/MAT/RAP_RED3.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAP_RED3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAP_RED4.BMF b/CONTENT/BT3025/VIDEO/MAT/RAP_RED4.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAP_RED4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAP_RED5.BMF b/CONTENT/BT3025/VIDEO/MAT/RAP_RED5.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAP_RED5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAP_RED6.BMF b/CONTENT/BT3025/VIDEO/MAT/RAP_RED6.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAP_RED6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAP_RED7.BMF b/CONTENT/BT3025/VIDEO/MAT/RAP_RED7.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAP_RED7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAP_TAN0.BMF b/CONTENT/BT3025/VIDEO/MAT/RAP_TAN0.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAP_TAN0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAP_TAN1.BMF b/CONTENT/BT3025/VIDEO/MAT/RAP_TAN1.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAP_TAN1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAP_TAN2.BMF b/CONTENT/BT3025/VIDEO/MAT/RAP_TAN2.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAP_TAN2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAP_TAN3.BMF b/CONTENT/BT3025/VIDEO/MAT/RAP_TAN3.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAP_TAN3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAP_TAN4.BMF b/CONTENT/BT3025/VIDEO/MAT/RAP_TAN4.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAP_TAN4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAP_TAN5.BMF b/CONTENT/BT3025/VIDEO/MAT/RAP_TAN5.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAP_TAN5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAP_TAN6.BMF b/CONTENT/BT3025/VIDEO/MAT/RAP_TAN6.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAP_TAN6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAP_TAN7.BMF b/CONTENT/BT3025/VIDEO/MAT/RAP_TAN7.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAP_TAN7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAP_WHT0.BMF b/CONTENT/BT3025/VIDEO/MAT/RAP_WHT0.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAP_WHT0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAP_WHT1.BMF b/CONTENT/BT3025/VIDEO/MAT/RAP_WHT1.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAP_WHT1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAP_WHT2.BMF b/CONTENT/BT3025/VIDEO/MAT/RAP_WHT2.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAP_WHT2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAP_WHT3.BMF b/CONTENT/BT3025/VIDEO/MAT/RAP_WHT3.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAP_WHT3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAP_WHT4.BMF b/CONTENT/BT3025/VIDEO/MAT/RAP_WHT4.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAP_WHT4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAP_WHT5.BMF b/CONTENT/BT3025/VIDEO/MAT/RAP_WHT5.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAP_WHT5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAP_WHT6.BMF b/CONTENT/BT3025/VIDEO/MAT/RAP_WHT6.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAP_WHT6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAP_WHT7.BMF b/CONTENT/BT3025/VIDEO/MAT/RAP_WHT7.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAP_WHT7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAVBU.VMF b/CONTENT/BT3025/VIDEO/MAT/RAVBU.VMF new file mode 100644 index 0000000..34cd66d --- /dev/null +++ b/CONTENT/BT3025/VIDEO/MAT/RAVBU.VMF @@ -0,0 +1,50 @@ +DIV-VIZ2 +HEADER +( + VERSION=2:08; + DATE=8:2:97; + TIME=1:39; + FILETYPE=MATERIAL +) +{ +} + +TEXTURE(NAME="bdinta_tex") +{ + MAP {"bdinta"} + MAGNIFY {BILINEAR} +} + +TEXTURE(NAME="bdintb_tex") +{ + MAP {"bdintb"} + MAGNIFY {BILINEAR} +} + +RAMP(NAME="dust") +{ + DATA {0.285, 0.21, 0.2, 0.73, 0.68, 0.72} +} + +RAMP(NAME="rock") +{ + DATA {0.25, 0.21, 0.21, 0.8, 0.75, 0.75} +} + +MATERIAL(NAME="ravinerock_mtl") +{ + TEXTURE {"bdinta_tex"} + AMBIENT {0.78102, 0.52455, 0.353209} + DIFFUSE {0.78102, 0.524312, 0.353209} + RAMP {"rock"} +} + +MATERIAL(NAME="ravinerubble_mtl") +{ + TEXTURE {"bdintb_tex"} + AMBIENT {0.878102, 0.643055, 0.375321} + DIFFUSE {0.878102, 0.643052, 0.375321} + RAMP {"dust"} +} + + \ No newline at end of file diff --git a/CONTENT/BT3025/VIDEO/MAT/RAVINES.BMF b/CONTENT/BT3025/VIDEO/MAT/RAVINES.BMF new file mode 100644 index 0000000..43285a6 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAVINES.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAXFX.BMF b/CONTENT/BT3025/VIDEO/MAT/RAXFX.BMF new file mode 100644 index 0000000..effb09c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAXFX.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAXSKIN.BMF b/CONTENT/BT3025/VIDEO/MAT/RAXSKIN.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAXSKIN.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAXSKIN0.BMF b/CONTENT/BT3025/VIDEO/MAT/RAXSKIN0.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAXSKIN0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAXSKIN1.BMF b/CONTENT/BT3025/VIDEO/MAT/RAXSKIN1.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAXSKIN1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAXSKIN2.BMF b/CONTENT/BT3025/VIDEO/MAT/RAXSKIN2.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAXSKIN2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAXSKIN3.BMF b/CONTENT/BT3025/VIDEO/MAT/RAXSKIN3.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAXSKIN3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAXSKIN4.BMF b/CONTENT/BT3025/VIDEO/MAT/RAXSKIN4.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAXSKIN4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAXSKIN5.BMF b/CONTENT/BT3025/VIDEO/MAT/RAXSKIN5.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAXSKIN5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAXSKIN6.BMF b/CONTENT/BT3025/VIDEO/MAT/RAXSKIN6.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAXSKIN6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAXSKIN7.BMF b/CONTENT/BT3025/VIDEO/MAT/RAXSKIN7.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAXSKIN7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAX_BLK0.BMF b/CONTENT/BT3025/VIDEO/MAT/RAX_BLK0.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAX_BLK0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAX_BLK1.BMF b/CONTENT/BT3025/VIDEO/MAT/RAX_BLK1.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAX_BLK1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAX_BLK2.BMF b/CONTENT/BT3025/VIDEO/MAT/RAX_BLK2.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAX_BLK2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAX_BLK3.BMF b/CONTENT/BT3025/VIDEO/MAT/RAX_BLK3.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAX_BLK3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAX_BLK4.BMF b/CONTENT/BT3025/VIDEO/MAT/RAX_BLK4.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAX_BLK4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAX_BLK5.BMF b/CONTENT/BT3025/VIDEO/MAT/RAX_BLK5.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAX_BLK5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAX_BLK6.BMF b/CONTENT/BT3025/VIDEO/MAT/RAX_BLK6.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAX_BLK6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAX_BLK7.BMF b/CONTENT/BT3025/VIDEO/MAT/RAX_BLK7.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAX_BLK7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAX_BRN0.BMF b/CONTENT/BT3025/VIDEO/MAT/RAX_BRN0.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAX_BRN0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAX_BRN1.BMF b/CONTENT/BT3025/VIDEO/MAT/RAX_BRN1.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAX_BRN1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAX_BRN2.BMF b/CONTENT/BT3025/VIDEO/MAT/RAX_BRN2.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAX_BRN2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAX_BRN3.BMF b/CONTENT/BT3025/VIDEO/MAT/RAX_BRN3.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAX_BRN3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAX_BRN4.BMF b/CONTENT/BT3025/VIDEO/MAT/RAX_BRN4.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAX_BRN4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAX_BRN5.BMF b/CONTENT/BT3025/VIDEO/MAT/RAX_BRN5.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAX_BRN5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAX_BRN6.BMF b/CONTENT/BT3025/VIDEO/MAT/RAX_BRN6.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAX_BRN6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAX_BRN7.BMF b/CONTENT/BT3025/VIDEO/MAT/RAX_BRN7.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAX_BRN7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAX_GRN0.BMF b/CONTENT/BT3025/VIDEO/MAT/RAX_GRN0.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAX_GRN0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAX_GRN1.BMF b/CONTENT/BT3025/VIDEO/MAT/RAX_GRN1.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAX_GRN1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAX_GRN2.BMF b/CONTENT/BT3025/VIDEO/MAT/RAX_GRN2.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAX_GRN2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAX_GRN3.BMF b/CONTENT/BT3025/VIDEO/MAT/RAX_GRN3.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAX_GRN3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAX_GRN4.BMF b/CONTENT/BT3025/VIDEO/MAT/RAX_GRN4.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAX_GRN4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAX_GRN5.BMF b/CONTENT/BT3025/VIDEO/MAT/RAX_GRN5.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAX_GRN5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAX_GRN6.BMF b/CONTENT/BT3025/VIDEO/MAT/RAX_GRN6.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAX_GRN6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAX_GRN7.BMF b/CONTENT/BT3025/VIDEO/MAT/RAX_GRN7.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAX_GRN7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAX_GRY0.BMF b/CONTENT/BT3025/VIDEO/MAT/RAX_GRY0.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAX_GRY0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAX_GRY1.BMF b/CONTENT/BT3025/VIDEO/MAT/RAX_GRY1.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAX_GRY1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAX_GRY2.BMF b/CONTENT/BT3025/VIDEO/MAT/RAX_GRY2.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAX_GRY2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAX_GRY3.BMF b/CONTENT/BT3025/VIDEO/MAT/RAX_GRY3.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAX_GRY3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAX_GRY4.BMF b/CONTENT/BT3025/VIDEO/MAT/RAX_GRY4.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAX_GRY4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAX_GRY5.BMF b/CONTENT/BT3025/VIDEO/MAT/RAX_GRY5.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAX_GRY5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAX_GRY6.BMF b/CONTENT/BT3025/VIDEO/MAT/RAX_GRY6.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAX_GRY6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAX_GRY7.BMF b/CONTENT/BT3025/VIDEO/MAT/RAX_GRY7.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAX_GRY7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAX_RED0.BMF b/CONTENT/BT3025/VIDEO/MAT/RAX_RED0.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAX_RED0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAX_RED1.BMF b/CONTENT/BT3025/VIDEO/MAT/RAX_RED1.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAX_RED1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAX_RED2.BMF b/CONTENT/BT3025/VIDEO/MAT/RAX_RED2.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAX_RED2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAX_RED3.BMF b/CONTENT/BT3025/VIDEO/MAT/RAX_RED3.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAX_RED3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAX_RED4.BMF b/CONTENT/BT3025/VIDEO/MAT/RAX_RED4.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAX_RED4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAX_RED5.BMF b/CONTENT/BT3025/VIDEO/MAT/RAX_RED5.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAX_RED5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAX_RED6.BMF b/CONTENT/BT3025/VIDEO/MAT/RAX_RED6.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAX_RED6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAX_RED7.BMF b/CONTENT/BT3025/VIDEO/MAT/RAX_RED7.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAX_RED7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAX_TAN0.BMF b/CONTENT/BT3025/VIDEO/MAT/RAX_TAN0.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAX_TAN0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAX_TAN1.BMF b/CONTENT/BT3025/VIDEO/MAT/RAX_TAN1.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAX_TAN1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAX_TAN2.BMF b/CONTENT/BT3025/VIDEO/MAT/RAX_TAN2.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAX_TAN2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAX_TAN3.BMF b/CONTENT/BT3025/VIDEO/MAT/RAX_TAN3.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAX_TAN3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAX_TAN4.BMF b/CONTENT/BT3025/VIDEO/MAT/RAX_TAN4.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAX_TAN4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAX_TAN5.BMF b/CONTENT/BT3025/VIDEO/MAT/RAX_TAN5.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAX_TAN5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAX_TAN6.BMF b/CONTENT/BT3025/VIDEO/MAT/RAX_TAN6.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAX_TAN6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAX_TAN7.BMF b/CONTENT/BT3025/VIDEO/MAT/RAX_TAN7.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAX_TAN7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAX_WHT0.BMF b/CONTENT/BT3025/VIDEO/MAT/RAX_WHT0.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAX_WHT0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAX_WHT1.BMF b/CONTENT/BT3025/VIDEO/MAT/RAX_WHT1.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAX_WHT1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAX_WHT2.BMF b/CONTENT/BT3025/VIDEO/MAT/RAX_WHT2.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAX_WHT2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAX_WHT3.BMF b/CONTENT/BT3025/VIDEO/MAT/RAX_WHT3.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAX_WHT3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAX_WHT4.BMF b/CONTENT/BT3025/VIDEO/MAT/RAX_WHT4.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAX_WHT4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAX_WHT5.BMF b/CONTENT/BT3025/VIDEO/MAT/RAX_WHT5.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAX_WHT5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAX_WHT6.BMF b/CONTENT/BT3025/VIDEO/MAT/RAX_WHT6.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAX_WHT6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/RAX_WHT7.BMF b/CONTENT/BT3025/VIDEO/MAT/RAX_WHT7.BMF new file mode 100644 index 0000000..8c5787d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/RAX_WHT7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/SNDFX.BMF b/CONTENT/BT3025/VIDEO/MAT/SNDFX.BMF new file mode 100644 index 0000000..582cc14 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/SNDFX.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/SNXSKIN.BMF b/CONTENT/BT3025/VIDEO/MAT/SNXSKIN.BMF new file mode 100644 index 0000000..b9e483f Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/SNXSKIN.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/SNXSKIN0.BMF b/CONTENT/BT3025/VIDEO/MAT/SNXSKIN0.BMF new file mode 100644 index 0000000..b9e483f Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/SNXSKIN0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/SNXSKIN1.BMF b/CONTENT/BT3025/VIDEO/MAT/SNXSKIN1.BMF new file mode 100644 index 0000000..b9e483f Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/SNXSKIN1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/SNXSKIN2.BMF b/CONTENT/BT3025/VIDEO/MAT/SNXSKIN2.BMF new file mode 100644 index 0000000..b9e483f Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/SNXSKIN2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/SNXSKIN3.BMF b/CONTENT/BT3025/VIDEO/MAT/SNXSKIN3.BMF new file mode 100644 index 0000000..b9e483f Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/SNXSKIN3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/SNXSKIN4.BMF b/CONTENT/BT3025/VIDEO/MAT/SNXSKIN4.BMF new file mode 100644 index 0000000..b9e483f Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/SNXSKIN4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/SNXSKIN5.BMF b/CONTENT/BT3025/VIDEO/MAT/SNXSKIN5.BMF new file mode 100644 index 0000000..b9e483f Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/SNXSKIN5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/SNXSKIN6.BMF b/CONTENT/BT3025/VIDEO/MAT/SNXSKIN6.BMF new file mode 100644 index 0000000..b9e483f Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/SNXSKIN6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/SNXSKIN7.BMF b/CONTENT/BT3025/VIDEO/MAT/SNXSKIN7.BMF new file mode 100644 index 0000000..b9e483f Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/SNXSKIN7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/SNX_BLK0.BMF b/CONTENT/BT3025/VIDEO/MAT/SNX_BLK0.BMF new file mode 100644 index 0000000..33606fd Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/SNX_BLK0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/SNX_BLK1.BMF b/CONTENT/BT3025/VIDEO/MAT/SNX_BLK1.BMF new file mode 100644 index 0000000..33606fd Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/SNX_BLK1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/SNX_BLK2.BMF b/CONTENT/BT3025/VIDEO/MAT/SNX_BLK2.BMF new file mode 100644 index 0000000..33606fd Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/SNX_BLK2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/SNX_BLK3.BMF b/CONTENT/BT3025/VIDEO/MAT/SNX_BLK3.BMF new file mode 100644 index 0000000..33606fd Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/SNX_BLK3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/SNX_BLK4.BMF b/CONTENT/BT3025/VIDEO/MAT/SNX_BLK4.BMF new file mode 100644 index 0000000..33606fd Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/SNX_BLK4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/SNX_BLK5.BMF b/CONTENT/BT3025/VIDEO/MAT/SNX_BLK5.BMF new file mode 100644 index 0000000..33606fd Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/SNX_BLK5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/SNX_BLK6.BMF b/CONTENT/BT3025/VIDEO/MAT/SNX_BLK6.BMF new file mode 100644 index 0000000..33606fd Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/SNX_BLK6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/SNX_BLK7.BMF b/CONTENT/BT3025/VIDEO/MAT/SNX_BLK7.BMF new file mode 100644 index 0000000..33606fd Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/SNX_BLK7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/SNX_BRN0.BMF b/CONTENT/BT3025/VIDEO/MAT/SNX_BRN0.BMF new file mode 100644 index 0000000..399ef70 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/SNX_BRN0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/SNX_BRN1.BMF b/CONTENT/BT3025/VIDEO/MAT/SNX_BRN1.BMF new file mode 100644 index 0000000..399ef70 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/SNX_BRN1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/SNX_BRN2.BMF b/CONTENT/BT3025/VIDEO/MAT/SNX_BRN2.BMF new file mode 100644 index 0000000..399ef70 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/SNX_BRN2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/SNX_BRN3.BMF b/CONTENT/BT3025/VIDEO/MAT/SNX_BRN3.BMF new file mode 100644 index 0000000..399ef70 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/SNX_BRN3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/SNX_BRN4.BMF b/CONTENT/BT3025/VIDEO/MAT/SNX_BRN4.BMF new file mode 100644 index 0000000..399ef70 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/SNX_BRN4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/SNX_BRN5.BMF b/CONTENT/BT3025/VIDEO/MAT/SNX_BRN5.BMF new file mode 100644 index 0000000..399ef70 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/SNX_BRN5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/SNX_BRN6.BMF b/CONTENT/BT3025/VIDEO/MAT/SNX_BRN6.BMF new file mode 100644 index 0000000..399ef70 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/SNX_BRN6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/SNX_BRN7.BMF b/CONTENT/BT3025/VIDEO/MAT/SNX_BRN7.BMF new file mode 100644 index 0000000..399ef70 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/SNX_BRN7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/SNX_GRN0.BMF b/CONTENT/BT3025/VIDEO/MAT/SNX_GRN0.BMF new file mode 100644 index 0000000..1b6d251 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/SNX_GRN0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/SNX_GRN1.BMF b/CONTENT/BT3025/VIDEO/MAT/SNX_GRN1.BMF new file mode 100644 index 0000000..1b6d251 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/SNX_GRN1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/SNX_GRN2.BMF b/CONTENT/BT3025/VIDEO/MAT/SNX_GRN2.BMF new file mode 100644 index 0000000..1b6d251 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/SNX_GRN2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/SNX_GRN3.BMF b/CONTENT/BT3025/VIDEO/MAT/SNX_GRN3.BMF new file mode 100644 index 0000000..1b6d251 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/SNX_GRN3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/SNX_GRN4.BMF b/CONTENT/BT3025/VIDEO/MAT/SNX_GRN4.BMF new file mode 100644 index 0000000..1b6d251 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/SNX_GRN4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/SNX_GRN5.BMF b/CONTENT/BT3025/VIDEO/MAT/SNX_GRN5.BMF new file mode 100644 index 0000000..1b6d251 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/SNX_GRN5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/SNX_GRN6.BMF b/CONTENT/BT3025/VIDEO/MAT/SNX_GRN6.BMF new file mode 100644 index 0000000..1b6d251 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/SNX_GRN6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/SNX_GRN7.BMF b/CONTENT/BT3025/VIDEO/MAT/SNX_GRN7.BMF new file mode 100644 index 0000000..1b6d251 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/SNX_GRN7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/SNX_GRY0.BMF b/CONTENT/BT3025/VIDEO/MAT/SNX_GRY0.BMF new file mode 100644 index 0000000..69d6565 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/SNX_GRY0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/SNX_GRY1.BMF b/CONTENT/BT3025/VIDEO/MAT/SNX_GRY1.BMF new file mode 100644 index 0000000..69d6565 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/SNX_GRY1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/SNX_GRY2.BMF b/CONTENT/BT3025/VIDEO/MAT/SNX_GRY2.BMF new file mode 100644 index 0000000..69d6565 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/SNX_GRY2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/SNX_GRY3.BMF b/CONTENT/BT3025/VIDEO/MAT/SNX_GRY3.BMF new file mode 100644 index 0000000..69d6565 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/SNX_GRY3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/SNX_GRY4.BMF b/CONTENT/BT3025/VIDEO/MAT/SNX_GRY4.BMF new file mode 100644 index 0000000..69d6565 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/SNX_GRY4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/SNX_GRY5.BMF b/CONTENT/BT3025/VIDEO/MAT/SNX_GRY5.BMF new file mode 100644 index 0000000..69d6565 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/SNX_GRY5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/SNX_GRY6.BMF b/CONTENT/BT3025/VIDEO/MAT/SNX_GRY6.BMF new file mode 100644 index 0000000..69d6565 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/SNX_GRY6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/SNX_GRY7.BMF b/CONTENT/BT3025/VIDEO/MAT/SNX_GRY7.BMF new file mode 100644 index 0000000..69d6565 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/SNX_GRY7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/SNX_RED0.BMF b/CONTENT/BT3025/VIDEO/MAT/SNX_RED0.BMF new file mode 100644 index 0000000..56a1ed6 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/SNX_RED0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/SNX_RED1.BMF b/CONTENT/BT3025/VIDEO/MAT/SNX_RED1.BMF new file mode 100644 index 0000000..56a1ed6 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/SNX_RED1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/SNX_RED2.BMF b/CONTENT/BT3025/VIDEO/MAT/SNX_RED2.BMF new file mode 100644 index 0000000..56a1ed6 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/SNX_RED2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/SNX_RED3.BMF b/CONTENT/BT3025/VIDEO/MAT/SNX_RED3.BMF new file mode 100644 index 0000000..56a1ed6 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/SNX_RED3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/SNX_RED4.BMF b/CONTENT/BT3025/VIDEO/MAT/SNX_RED4.BMF new file mode 100644 index 0000000..56a1ed6 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/SNX_RED4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/SNX_RED5.BMF b/CONTENT/BT3025/VIDEO/MAT/SNX_RED5.BMF new file mode 100644 index 0000000..56a1ed6 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/SNX_RED5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/SNX_RED6.BMF b/CONTENT/BT3025/VIDEO/MAT/SNX_RED6.BMF new file mode 100644 index 0000000..56a1ed6 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/SNX_RED6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/SNX_RED7.BMF b/CONTENT/BT3025/VIDEO/MAT/SNX_RED7.BMF new file mode 100644 index 0000000..56a1ed6 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/SNX_RED7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/SNX_TAN0.BMF b/CONTENT/BT3025/VIDEO/MAT/SNX_TAN0.BMF new file mode 100644 index 0000000..51ed92a Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/SNX_TAN0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/SNX_TAN1.BMF b/CONTENT/BT3025/VIDEO/MAT/SNX_TAN1.BMF new file mode 100644 index 0000000..51ed92a Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/SNX_TAN1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/SNX_TAN2.BMF b/CONTENT/BT3025/VIDEO/MAT/SNX_TAN2.BMF new file mode 100644 index 0000000..51ed92a Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/SNX_TAN2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/SNX_TAN3.BMF b/CONTENT/BT3025/VIDEO/MAT/SNX_TAN3.BMF new file mode 100644 index 0000000..51ed92a Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/SNX_TAN3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/SNX_TAN4.BMF b/CONTENT/BT3025/VIDEO/MAT/SNX_TAN4.BMF new file mode 100644 index 0000000..51ed92a Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/SNX_TAN4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/SNX_TAN5.BMF b/CONTENT/BT3025/VIDEO/MAT/SNX_TAN5.BMF new file mode 100644 index 0000000..51ed92a Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/SNX_TAN5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/SNX_TAN6.BMF b/CONTENT/BT3025/VIDEO/MAT/SNX_TAN6.BMF new file mode 100644 index 0000000..51ed92a Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/SNX_TAN6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/SNX_TAN7.BMF b/CONTENT/BT3025/VIDEO/MAT/SNX_TAN7.BMF new file mode 100644 index 0000000..51ed92a Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/SNX_TAN7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/SNX_WHT0.BMF b/CONTENT/BT3025/VIDEO/MAT/SNX_WHT0.BMF new file mode 100644 index 0000000..b0d6b3e Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/SNX_WHT0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/SNX_WHT1.BMF b/CONTENT/BT3025/VIDEO/MAT/SNX_WHT1.BMF new file mode 100644 index 0000000..b0d6b3e Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/SNX_WHT1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/SNX_WHT2.BMF b/CONTENT/BT3025/VIDEO/MAT/SNX_WHT2.BMF new file mode 100644 index 0000000..b0d6b3e Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/SNX_WHT2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/SNX_WHT3.BMF b/CONTENT/BT3025/VIDEO/MAT/SNX_WHT3.BMF new file mode 100644 index 0000000..b0d6b3e Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/SNX_WHT3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/SNX_WHT4.BMF b/CONTENT/BT3025/VIDEO/MAT/SNX_WHT4.BMF new file mode 100644 index 0000000..b0d6b3e Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/SNX_WHT4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/SNX_WHT5.BMF b/CONTENT/BT3025/VIDEO/MAT/SNX_WHT5.BMF new file mode 100644 index 0000000..b0d6b3e Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/SNX_WHT5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/SNX_WHT6.BMF b/CONTENT/BT3025/VIDEO/MAT/SNX_WHT6.BMF new file mode 100644 index 0000000..b0d6b3e Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/SNX_WHT6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/SNX_WHT7.BMF b/CONTENT/BT3025/VIDEO/MAT/SNX_WHT7.BMF new file mode 100644 index 0000000..b0d6b3e Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/SNX_WHT7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STIFX.BMF b/CONTENT/BT3025/VIDEO/MAT/STIFX.BMF new file mode 100644 index 0000000..c8f965c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STIFX.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STISKIN.BMF b/CONTENT/BT3025/VIDEO/MAT/STISKIN.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STISKIN.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STISKIN0.BMF b/CONTENT/BT3025/VIDEO/MAT/STISKIN0.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STISKIN0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STISKIN1.BMF b/CONTENT/BT3025/VIDEO/MAT/STISKIN1.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STISKIN1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STISKIN2.BMF b/CONTENT/BT3025/VIDEO/MAT/STISKIN2.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STISKIN2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STISKIN3.BMF b/CONTENT/BT3025/VIDEO/MAT/STISKIN3.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STISKIN3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STISKIN4.BMF b/CONTENT/BT3025/VIDEO/MAT/STISKIN4.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STISKIN4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STISKIN5.BMF b/CONTENT/BT3025/VIDEO/MAT/STISKIN5.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STISKIN5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STISKIN6.BMF b/CONTENT/BT3025/VIDEO/MAT/STISKIN6.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STISKIN6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STISKIN7.BMF b/CONTENT/BT3025/VIDEO/MAT/STISKIN7.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STISKIN7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STI_BLK0.BMF b/CONTENT/BT3025/VIDEO/MAT/STI_BLK0.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STI_BLK0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STI_BLK1.BMF b/CONTENT/BT3025/VIDEO/MAT/STI_BLK1.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STI_BLK1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STI_BLK2.BMF b/CONTENT/BT3025/VIDEO/MAT/STI_BLK2.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STI_BLK2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STI_BLK3.BMF b/CONTENT/BT3025/VIDEO/MAT/STI_BLK3.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STI_BLK3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STI_BLK4.BMF b/CONTENT/BT3025/VIDEO/MAT/STI_BLK4.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STI_BLK4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STI_BLK5.BMF b/CONTENT/BT3025/VIDEO/MAT/STI_BLK5.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STI_BLK5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STI_BLK6.BMF b/CONTENT/BT3025/VIDEO/MAT/STI_BLK6.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STI_BLK6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STI_BLK7.BMF b/CONTENT/BT3025/VIDEO/MAT/STI_BLK7.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STI_BLK7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STI_BRN0.BMF b/CONTENT/BT3025/VIDEO/MAT/STI_BRN0.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STI_BRN0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STI_BRN1.BMF b/CONTENT/BT3025/VIDEO/MAT/STI_BRN1.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STI_BRN1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STI_BRN2.BMF b/CONTENT/BT3025/VIDEO/MAT/STI_BRN2.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STI_BRN2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STI_BRN3.BMF b/CONTENT/BT3025/VIDEO/MAT/STI_BRN3.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STI_BRN3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STI_BRN4.BMF b/CONTENT/BT3025/VIDEO/MAT/STI_BRN4.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STI_BRN4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STI_BRN5.BMF b/CONTENT/BT3025/VIDEO/MAT/STI_BRN5.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STI_BRN5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STI_BRN6.BMF b/CONTENT/BT3025/VIDEO/MAT/STI_BRN6.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STI_BRN6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STI_BRN7.BMF b/CONTENT/BT3025/VIDEO/MAT/STI_BRN7.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STI_BRN7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STI_GRN0.BMF b/CONTENT/BT3025/VIDEO/MAT/STI_GRN0.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STI_GRN0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STI_GRN1.BMF b/CONTENT/BT3025/VIDEO/MAT/STI_GRN1.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STI_GRN1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STI_GRN2.BMF b/CONTENT/BT3025/VIDEO/MAT/STI_GRN2.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STI_GRN2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STI_GRN3.BMF b/CONTENT/BT3025/VIDEO/MAT/STI_GRN3.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STI_GRN3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STI_GRN4.BMF b/CONTENT/BT3025/VIDEO/MAT/STI_GRN4.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STI_GRN4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STI_GRN5.BMF b/CONTENT/BT3025/VIDEO/MAT/STI_GRN5.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STI_GRN5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STI_GRN6.BMF b/CONTENT/BT3025/VIDEO/MAT/STI_GRN6.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STI_GRN6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STI_GRN7.BMF b/CONTENT/BT3025/VIDEO/MAT/STI_GRN7.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STI_GRN7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STI_GRY0.BMF b/CONTENT/BT3025/VIDEO/MAT/STI_GRY0.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STI_GRY0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STI_GRY1.BMF b/CONTENT/BT3025/VIDEO/MAT/STI_GRY1.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STI_GRY1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STI_GRY2.BMF b/CONTENT/BT3025/VIDEO/MAT/STI_GRY2.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STI_GRY2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STI_GRY3.BMF b/CONTENT/BT3025/VIDEO/MAT/STI_GRY3.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STI_GRY3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STI_GRY4.BMF b/CONTENT/BT3025/VIDEO/MAT/STI_GRY4.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STI_GRY4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STI_GRY5.BMF b/CONTENT/BT3025/VIDEO/MAT/STI_GRY5.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STI_GRY5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STI_GRY6.BMF b/CONTENT/BT3025/VIDEO/MAT/STI_GRY6.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STI_GRY6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STI_GRY7.BMF b/CONTENT/BT3025/VIDEO/MAT/STI_GRY7.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STI_GRY7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STI_RED0.BMF b/CONTENT/BT3025/VIDEO/MAT/STI_RED0.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STI_RED0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STI_RED1.BMF b/CONTENT/BT3025/VIDEO/MAT/STI_RED1.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STI_RED1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STI_RED2.BMF b/CONTENT/BT3025/VIDEO/MAT/STI_RED2.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STI_RED2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STI_RED3.BMF b/CONTENT/BT3025/VIDEO/MAT/STI_RED3.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STI_RED3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STI_RED4.BMF b/CONTENT/BT3025/VIDEO/MAT/STI_RED4.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STI_RED4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STI_RED5.BMF b/CONTENT/BT3025/VIDEO/MAT/STI_RED5.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STI_RED5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STI_RED6.BMF b/CONTENT/BT3025/VIDEO/MAT/STI_RED6.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STI_RED6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STI_RED7.BMF b/CONTENT/BT3025/VIDEO/MAT/STI_RED7.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STI_RED7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STI_TAN0.BMF b/CONTENT/BT3025/VIDEO/MAT/STI_TAN0.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STI_TAN0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STI_TAN1.BMF b/CONTENT/BT3025/VIDEO/MAT/STI_TAN1.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STI_TAN1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STI_TAN2.BMF b/CONTENT/BT3025/VIDEO/MAT/STI_TAN2.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STI_TAN2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STI_TAN3.BMF b/CONTENT/BT3025/VIDEO/MAT/STI_TAN3.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STI_TAN3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STI_TAN4.BMF b/CONTENT/BT3025/VIDEO/MAT/STI_TAN4.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STI_TAN4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STI_TAN5.BMF b/CONTENT/BT3025/VIDEO/MAT/STI_TAN5.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STI_TAN5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STI_TAN6.BMF b/CONTENT/BT3025/VIDEO/MAT/STI_TAN6.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STI_TAN6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STI_TAN7.BMF b/CONTENT/BT3025/VIDEO/MAT/STI_TAN7.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STI_TAN7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STI_WHT0.BMF b/CONTENT/BT3025/VIDEO/MAT/STI_WHT0.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STI_WHT0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STI_WHT1.BMF b/CONTENT/BT3025/VIDEO/MAT/STI_WHT1.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STI_WHT1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STI_WHT2.BMF b/CONTENT/BT3025/VIDEO/MAT/STI_WHT2.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STI_WHT2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STI_WHT3.BMF b/CONTENT/BT3025/VIDEO/MAT/STI_WHT3.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STI_WHT3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STI_WHT4.BMF b/CONTENT/BT3025/VIDEO/MAT/STI_WHT4.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STI_WHT4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STI_WHT5.BMF b/CONTENT/BT3025/VIDEO/MAT/STI_WHT5.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STI_WHT5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STI_WHT6.BMF b/CONTENT/BT3025/VIDEO/MAT/STI_WHT6.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STI_WHT6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STI_WHT7.BMF b/CONTENT/BT3025/VIDEO/MAT/STI_WHT7.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STI_WHT7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STXFX.BMF b/CONTENT/BT3025/VIDEO/MAT/STXFX.BMF new file mode 100644 index 0000000..c8f965c Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STXFX.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STXSKIN.BMF b/CONTENT/BT3025/VIDEO/MAT/STXSKIN.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STXSKIN.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STXSKIN0.BMF b/CONTENT/BT3025/VIDEO/MAT/STXSKIN0.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STXSKIN0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STXSKIN1.BMF b/CONTENT/BT3025/VIDEO/MAT/STXSKIN1.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STXSKIN1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STXSKIN2.BMF b/CONTENT/BT3025/VIDEO/MAT/STXSKIN2.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STXSKIN2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STXSKIN3.BMF b/CONTENT/BT3025/VIDEO/MAT/STXSKIN3.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STXSKIN3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STXSKIN4.BMF b/CONTENT/BT3025/VIDEO/MAT/STXSKIN4.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STXSKIN4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STXSKIN5.BMF b/CONTENT/BT3025/VIDEO/MAT/STXSKIN5.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STXSKIN5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STXSKIN6.BMF b/CONTENT/BT3025/VIDEO/MAT/STXSKIN6.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STXSKIN6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STXSKIN7.BMF b/CONTENT/BT3025/VIDEO/MAT/STXSKIN7.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STXSKIN7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STX_BLK0.BMF b/CONTENT/BT3025/VIDEO/MAT/STX_BLK0.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STX_BLK0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STX_BLK1.BMF b/CONTENT/BT3025/VIDEO/MAT/STX_BLK1.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STX_BLK1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STX_BLK2.BMF b/CONTENT/BT3025/VIDEO/MAT/STX_BLK2.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STX_BLK2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STX_BLK3.BMF b/CONTENT/BT3025/VIDEO/MAT/STX_BLK3.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STX_BLK3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STX_BLK4.BMF b/CONTENT/BT3025/VIDEO/MAT/STX_BLK4.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STX_BLK4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STX_BLK5.BMF b/CONTENT/BT3025/VIDEO/MAT/STX_BLK5.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STX_BLK5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STX_BLK6.BMF b/CONTENT/BT3025/VIDEO/MAT/STX_BLK6.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STX_BLK6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STX_BLK7.BMF b/CONTENT/BT3025/VIDEO/MAT/STX_BLK7.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STX_BLK7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STX_BRN0.BMF b/CONTENT/BT3025/VIDEO/MAT/STX_BRN0.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STX_BRN0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STX_BRN1.BMF b/CONTENT/BT3025/VIDEO/MAT/STX_BRN1.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STX_BRN1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STX_BRN2.BMF b/CONTENT/BT3025/VIDEO/MAT/STX_BRN2.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STX_BRN2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STX_BRN3.BMF b/CONTENT/BT3025/VIDEO/MAT/STX_BRN3.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STX_BRN3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STX_BRN4.BMF b/CONTENT/BT3025/VIDEO/MAT/STX_BRN4.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STX_BRN4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STX_BRN5.BMF b/CONTENT/BT3025/VIDEO/MAT/STX_BRN5.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STX_BRN5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STX_BRN6.BMF b/CONTENT/BT3025/VIDEO/MAT/STX_BRN6.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STX_BRN6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STX_BRN7.BMF b/CONTENT/BT3025/VIDEO/MAT/STX_BRN7.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STX_BRN7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STX_GRN0.BMF b/CONTENT/BT3025/VIDEO/MAT/STX_GRN0.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STX_GRN0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STX_GRN1.BMF b/CONTENT/BT3025/VIDEO/MAT/STX_GRN1.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STX_GRN1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STX_GRN2.BMF b/CONTENT/BT3025/VIDEO/MAT/STX_GRN2.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STX_GRN2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STX_GRN3.BMF b/CONTENT/BT3025/VIDEO/MAT/STX_GRN3.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STX_GRN3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STX_GRN4.BMF b/CONTENT/BT3025/VIDEO/MAT/STX_GRN4.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STX_GRN4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STX_GRN5.BMF b/CONTENT/BT3025/VIDEO/MAT/STX_GRN5.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STX_GRN5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STX_GRN6.BMF b/CONTENT/BT3025/VIDEO/MAT/STX_GRN6.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STX_GRN6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STX_GRN7.BMF b/CONTENT/BT3025/VIDEO/MAT/STX_GRN7.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STX_GRN7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STX_GRY0.BMF b/CONTENT/BT3025/VIDEO/MAT/STX_GRY0.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STX_GRY0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STX_GRY1.BMF b/CONTENT/BT3025/VIDEO/MAT/STX_GRY1.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STX_GRY1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STX_GRY2.BMF b/CONTENT/BT3025/VIDEO/MAT/STX_GRY2.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STX_GRY2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STX_GRY3.BMF b/CONTENT/BT3025/VIDEO/MAT/STX_GRY3.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STX_GRY3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STX_GRY4.BMF b/CONTENT/BT3025/VIDEO/MAT/STX_GRY4.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STX_GRY4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STX_GRY5.BMF b/CONTENT/BT3025/VIDEO/MAT/STX_GRY5.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STX_GRY5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STX_GRY6.BMF b/CONTENT/BT3025/VIDEO/MAT/STX_GRY6.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STX_GRY6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STX_GRY7.BMF b/CONTENT/BT3025/VIDEO/MAT/STX_GRY7.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STX_GRY7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STX_RED0.BMF b/CONTENT/BT3025/VIDEO/MAT/STX_RED0.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STX_RED0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STX_RED1.BMF b/CONTENT/BT3025/VIDEO/MAT/STX_RED1.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STX_RED1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STX_RED2.BMF b/CONTENT/BT3025/VIDEO/MAT/STX_RED2.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STX_RED2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STX_RED3.BMF b/CONTENT/BT3025/VIDEO/MAT/STX_RED3.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STX_RED3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STX_RED4.BMF b/CONTENT/BT3025/VIDEO/MAT/STX_RED4.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STX_RED4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STX_RED5.BMF b/CONTENT/BT3025/VIDEO/MAT/STX_RED5.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STX_RED5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STX_RED6.BMF b/CONTENT/BT3025/VIDEO/MAT/STX_RED6.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STX_RED6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STX_RED7.BMF b/CONTENT/BT3025/VIDEO/MAT/STX_RED7.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STX_RED7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STX_TAN0.BMF b/CONTENT/BT3025/VIDEO/MAT/STX_TAN0.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STX_TAN0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STX_TAN1.BMF b/CONTENT/BT3025/VIDEO/MAT/STX_TAN1.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STX_TAN1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STX_TAN2.BMF b/CONTENT/BT3025/VIDEO/MAT/STX_TAN2.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STX_TAN2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STX_TAN3.BMF b/CONTENT/BT3025/VIDEO/MAT/STX_TAN3.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STX_TAN3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STX_TAN4.BMF b/CONTENT/BT3025/VIDEO/MAT/STX_TAN4.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STX_TAN4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STX_TAN5.BMF b/CONTENT/BT3025/VIDEO/MAT/STX_TAN5.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STX_TAN5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STX_TAN6.BMF b/CONTENT/BT3025/VIDEO/MAT/STX_TAN6.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STX_TAN6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STX_TAN7.BMF b/CONTENT/BT3025/VIDEO/MAT/STX_TAN7.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STX_TAN7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STX_WHT0.BMF b/CONTENT/BT3025/VIDEO/MAT/STX_WHT0.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STX_WHT0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STX_WHT1.BMF b/CONTENT/BT3025/VIDEO/MAT/STX_WHT1.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STX_WHT1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STX_WHT2.BMF b/CONTENT/BT3025/VIDEO/MAT/STX_WHT2.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STX_WHT2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STX_WHT3.BMF b/CONTENT/BT3025/VIDEO/MAT/STX_WHT3.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STX_WHT3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STX_WHT4.BMF b/CONTENT/BT3025/VIDEO/MAT/STX_WHT4.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STX_WHT4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STX_WHT5.BMF b/CONTENT/BT3025/VIDEO/MAT/STX_WHT5.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STX_WHT5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STX_WHT6.BMF b/CONTENT/BT3025/VIDEO/MAT/STX_WHT6.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STX_WHT6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/STX_WHT7.BMF b/CONTENT/BT3025/VIDEO/MAT/STX_WHT7.BMF new file mode 100644 index 0000000..d839f93 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/STX_WHT7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/THRFX.BMF b/CONTENT/BT3025/VIDEO/MAT/THRFX.BMF new file mode 100644 index 0000000..839b207 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/THRFX.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/THXSKIN.BMF b/CONTENT/BT3025/VIDEO/MAT/THXSKIN.BMF new file mode 100644 index 0000000..e45104b Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/THXSKIN.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/THXSKIN0.BMF b/CONTENT/BT3025/VIDEO/MAT/THXSKIN0.BMF new file mode 100644 index 0000000..e45104b Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/THXSKIN0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/THXSKIN1.BMF b/CONTENT/BT3025/VIDEO/MAT/THXSKIN1.BMF new file mode 100644 index 0000000..e45104b Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/THXSKIN1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/THXSKIN2.BMF b/CONTENT/BT3025/VIDEO/MAT/THXSKIN2.BMF new file mode 100644 index 0000000..e45104b Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/THXSKIN2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/THXSKIN3.BMF b/CONTENT/BT3025/VIDEO/MAT/THXSKIN3.BMF new file mode 100644 index 0000000..e45104b Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/THXSKIN3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/THXSKIN4.BMF b/CONTENT/BT3025/VIDEO/MAT/THXSKIN4.BMF new file mode 100644 index 0000000..e45104b Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/THXSKIN4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/THXSKIN5.BMF b/CONTENT/BT3025/VIDEO/MAT/THXSKIN5.BMF new file mode 100644 index 0000000..e45104b Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/THXSKIN5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/THXSKIN6.BMF b/CONTENT/BT3025/VIDEO/MAT/THXSKIN6.BMF new file mode 100644 index 0000000..e45104b Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/THXSKIN6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/THXSKIN7.BMF b/CONTENT/BT3025/VIDEO/MAT/THXSKIN7.BMF new file mode 100644 index 0000000..e45104b Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/THXSKIN7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/THX_BLK0.BMF b/CONTENT/BT3025/VIDEO/MAT/THX_BLK0.BMF new file mode 100644 index 0000000..98cf302 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/THX_BLK0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/THX_BLK1.BMF b/CONTENT/BT3025/VIDEO/MAT/THX_BLK1.BMF new file mode 100644 index 0000000..98cf302 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/THX_BLK1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/THX_BLK2.BMF b/CONTENT/BT3025/VIDEO/MAT/THX_BLK2.BMF new file mode 100644 index 0000000..98cf302 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/THX_BLK2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/THX_BLK3.BMF b/CONTENT/BT3025/VIDEO/MAT/THX_BLK3.BMF new file mode 100644 index 0000000..98cf302 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/THX_BLK3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/THX_BLK4.BMF b/CONTENT/BT3025/VIDEO/MAT/THX_BLK4.BMF new file mode 100644 index 0000000..98cf302 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/THX_BLK4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/THX_BLK5.BMF b/CONTENT/BT3025/VIDEO/MAT/THX_BLK5.BMF new file mode 100644 index 0000000..98cf302 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/THX_BLK5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/THX_BLK6.BMF b/CONTENT/BT3025/VIDEO/MAT/THX_BLK6.BMF new file mode 100644 index 0000000..98cf302 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/THX_BLK6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/THX_BLK7.BMF b/CONTENT/BT3025/VIDEO/MAT/THX_BLK7.BMF new file mode 100644 index 0000000..98cf302 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/THX_BLK7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/THX_BRN0.BMF b/CONTENT/BT3025/VIDEO/MAT/THX_BRN0.BMF new file mode 100644 index 0000000..d2b16ea Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/THX_BRN0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/THX_BRN1.BMF b/CONTENT/BT3025/VIDEO/MAT/THX_BRN1.BMF new file mode 100644 index 0000000..d2b16ea Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/THX_BRN1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/THX_BRN2.BMF b/CONTENT/BT3025/VIDEO/MAT/THX_BRN2.BMF new file mode 100644 index 0000000..d2b16ea Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/THX_BRN2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/THX_BRN3.BMF b/CONTENT/BT3025/VIDEO/MAT/THX_BRN3.BMF new file mode 100644 index 0000000..d2b16ea Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/THX_BRN3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/THX_BRN4.BMF b/CONTENT/BT3025/VIDEO/MAT/THX_BRN4.BMF new file mode 100644 index 0000000..d2b16ea Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/THX_BRN4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/THX_BRN5.BMF b/CONTENT/BT3025/VIDEO/MAT/THX_BRN5.BMF new file mode 100644 index 0000000..d2b16ea Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/THX_BRN5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/THX_BRN6.BMF b/CONTENT/BT3025/VIDEO/MAT/THX_BRN6.BMF new file mode 100644 index 0000000..d2b16ea Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/THX_BRN6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/THX_BRN7.BMF b/CONTENT/BT3025/VIDEO/MAT/THX_BRN7.BMF new file mode 100644 index 0000000..d2b16ea Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/THX_BRN7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/THX_GRN0.BMF b/CONTENT/BT3025/VIDEO/MAT/THX_GRN0.BMF new file mode 100644 index 0000000..effe42e Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/THX_GRN0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/THX_GRN1.BMF b/CONTENT/BT3025/VIDEO/MAT/THX_GRN1.BMF new file mode 100644 index 0000000..effe42e Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/THX_GRN1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/THX_GRN2.BMF b/CONTENT/BT3025/VIDEO/MAT/THX_GRN2.BMF new file mode 100644 index 0000000..effe42e Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/THX_GRN2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/THX_GRN3.BMF b/CONTENT/BT3025/VIDEO/MAT/THX_GRN3.BMF new file mode 100644 index 0000000..effe42e Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/THX_GRN3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/THX_GRN4.BMF b/CONTENT/BT3025/VIDEO/MAT/THX_GRN4.BMF new file mode 100644 index 0000000..effe42e Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/THX_GRN4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/THX_GRN5.BMF b/CONTENT/BT3025/VIDEO/MAT/THX_GRN5.BMF new file mode 100644 index 0000000..effe42e Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/THX_GRN5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/THX_GRN6.BMF b/CONTENT/BT3025/VIDEO/MAT/THX_GRN6.BMF new file mode 100644 index 0000000..effe42e Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/THX_GRN6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/THX_GRN7.BMF b/CONTENT/BT3025/VIDEO/MAT/THX_GRN7.BMF new file mode 100644 index 0000000..effe42e Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/THX_GRN7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/THX_GRY0.BMF b/CONTENT/BT3025/VIDEO/MAT/THX_GRY0.BMF new file mode 100644 index 0000000..bd5e3f1 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/THX_GRY0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/THX_GRY1.BMF b/CONTENT/BT3025/VIDEO/MAT/THX_GRY1.BMF new file mode 100644 index 0000000..bd5e3f1 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/THX_GRY1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/THX_GRY2.BMF b/CONTENT/BT3025/VIDEO/MAT/THX_GRY2.BMF new file mode 100644 index 0000000..bd5e3f1 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/THX_GRY2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/THX_GRY3.BMF b/CONTENT/BT3025/VIDEO/MAT/THX_GRY3.BMF new file mode 100644 index 0000000..bd5e3f1 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/THX_GRY3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/THX_GRY4.BMF b/CONTENT/BT3025/VIDEO/MAT/THX_GRY4.BMF new file mode 100644 index 0000000..bd5e3f1 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/THX_GRY4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/THX_GRY5.BMF b/CONTENT/BT3025/VIDEO/MAT/THX_GRY5.BMF new file mode 100644 index 0000000..bd5e3f1 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/THX_GRY5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/THX_GRY6.BMF b/CONTENT/BT3025/VIDEO/MAT/THX_GRY6.BMF new file mode 100644 index 0000000..bd5e3f1 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/THX_GRY6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/THX_GRY7.BMF b/CONTENT/BT3025/VIDEO/MAT/THX_GRY7.BMF new file mode 100644 index 0000000..bd5e3f1 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/THX_GRY7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/THX_RED0.BMF b/CONTENT/BT3025/VIDEO/MAT/THX_RED0.BMF new file mode 100644 index 0000000..856eaf4 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/THX_RED0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/THX_RED1.BMF b/CONTENT/BT3025/VIDEO/MAT/THX_RED1.BMF new file mode 100644 index 0000000..856eaf4 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/THX_RED1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/THX_RED2.BMF b/CONTENT/BT3025/VIDEO/MAT/THX_RED2.BMF new file mode 100644 index 0000000..856eaf4 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/THX_RED2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/THX_RED3.BMF b/CONTENT/BT3025/VIDEO/MAT/THX_RED3.BMF new file mode 100644 index 0000000..856eaf4 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/THX_RED3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/THX_RED4.BMF b/CONTENT/BT3025/VIDEO/MAT/THX_RED4.BMF new file mode 100644 index 0000000..856eaf4 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/THX_RED4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/THX_RED5.BMF b/CONTENT/BT3025/VIDEO/MAT/THX_RED5.BMF new file mode 100644 index 0000000..856eaf4 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/THX_RED5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/THX_RED6.BMF b/CONTENT/BT3025/VIDEO/MAT/THX_RED6.BMF new file mode 100644 index 0000000..856eaf4 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/THX_RED6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/THX_RED7.BMF b/CONTENT/BT3025/VIDEO/MAT/THX_RED7.BMF new file mode 100644 index 0000000..856eaf4 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/THX_RED7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/THX_TAN0.BMF b/CONTENT/BT3025/VIDEO/MAT/THX_TAN0.BMF new file mode 100644 index 0000000..30360f7 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/THX_TAN0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/THX_TAN1.BMF b/CONTENT/BT3025/VIDEO/MAT/THX_TAN1.BMF new file mode 100644 index 0000000..30360f7 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/THX_TAN1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/THX_TAN2.BMF b/CONTENT/BT3025/VIDEO/MAT/THX_TAN2.BMF new file mode 100644 index 0000000..30360f7 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/THX_TAN2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/THX_TAN3.BMF b/CONTENT/BT3025/VIDEO/MAT/THX_TAN3.BMF new file mode 100644 index 0000000..30360f7 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/THX_TAN3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/THX_TAN4.BMF b/CONTENT/BT3025/VIDEO/MAT/THX_TAN4.BMF new file mode 100644 index 0000000..30360f7 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/THX_TAN4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/THX_TAN5.BMF b/CONTENT/BT3025/VIDEO/MAT/THX_TAN5.BMF new file mode 100644 index 0000000..30360f7 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/THX_TAN5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/THX_TAN6.BMF b/CONTENT/BT3025/VIDEO/MAT/THX_TAN6.BMF new file mode 100644 index 0000000..30360f7 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/THX_TAN6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/THX_TAN7.BMF b/CONTENT/BT3025/VIDEO/MAT/THX_TAN7.BMF new file mode 100644 index 0000000..30360f7 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/THX_TAN7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/THX_WHT0.BMF b/CONTENT/BT3025/VIDEO/MAT/THX_WHT0.BMF new file mode 100644 index 0000000..351a468 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/THX_WHT0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/THX_WHT1.BMF b/CONTENT/BT3025/VIDEO/MAT/THX_WHT1.BMF new file mode 100644 index 0000000..351a468 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/THX_WHT1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/THX_WHT2.BMF b/CONTENT/BT3025/VIDEO/MAT/THX_WHT2.BMF new file mode 100644 index 0000000..351a468 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/THX_WHT2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/THX_WHT3.BMF b/CONTENT/BT3025/VIDEO/MAT/THX_WHT3.BMF new file mode 100644 index 0000000..351a468 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/THX_WHT3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/THX_WHT4.BMF b/CONTENT/BT3025/VIDEO/MAT/THX_WHT4.BMF new file mode 100644 index 0000000..351a468 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/THX_WHT4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/THX_WHT5.BMF b/CONTENT/BT3025/VIDEO/MAT/THX_WHT5.BMF new file mode 100644 index 0000000..351a468 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/THX_WHT5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/THX_WHT6.BMF b/CONTENT/BT3025/VIDEO/MAT/THX_WHT6.BMF new file mode 100644 index 0000000..351a468 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/THX_WHT6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/THX_WHT7.BMF b/CONTENT/BT3025/VIDEO/MAT/THX_WHT7.BMF new file mode 100644 index 0000000..351a468 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/THX_WHT7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/VULFX.BMF b/CONTENT/BT3025/VIDEO/MAT/VULFX.BMF new file mode 100644 index 0000000..d677902 Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/VULFX.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/VUXSKIN.BMF b/CONTENT/BT3025/VIDEO/MAT/VUXSKIN.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/VUXSKIN.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/VUXSKIN0.BMF b/CONTENT/BT3025/VIDEO/MAT/VUXSKIN0.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/VUXSKIN0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/VUXSKIN1.BMF b/CONTENT/BT3025/VIDEO/MAT/VUXSKIN1.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/VUXSKIN1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/VUXSKIN2.BMF b/CONTENT/BT3025/VIDEO/MAT/VUXSKIN2.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/VUXSKIN2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/VUXSKIN3.BMF b/CONTENT/BT3025/VIDEO/MAT/VUXSKIN3.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/VUXSKIN3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/VUXSKIN4.BMF b/CONTENT/BT3025/VIDEO/MAT/VUXSKIN4.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/VUXSKIN4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/VUXSKIN5.BMF b/CONTENT/BT3025/VIDEO/MAT/VUXSKIN5.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/VUXSKIN5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/VUXSKIN6.BMF b/CONTENT/BT3025/VIDEO/MAT/VUXSKIN6.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/VUXSKIN6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/VUXSKIN7.BMF b/CONTENT/BT3025/VIDEO/MAT/VUXSKIN7.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/VUXSKIN7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/VUX_BLK0.BMF b/CONTENT/BT3025/VIDEO/MAT/VUX_BLK0.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/VUX_BLK0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/VUX_BLK1.BMF b/CONTENT/BT3025/VIDEO/MAT/VUX_BLK1.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/VUX_BLK1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/VUX_BLK2.BMF b/CONTENT/BT3025/VIDEO/MAT/VUX_BLK2.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/VUX_BLK2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/VUX_BLK3.BMF b/CONTENT/BT3025/VIDEO/MAT/VUX_BLK3.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/VUX_BLK3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/VUX_BLK4.BMF b/CONTENT/BT3025/VIDEO/MAT/VUX_BLK4.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/VUX_BLK4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/VUX_BLK5.BMF b/CONTENT/BT3025/VIDEO/MAT/VUX_BLK5.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/VUX_BLK5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/VUX_BLK6.BMF b/CONTENT/BT3025/VIDEO/MAT/VUX_BLK6.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/VUX_BLK6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/VUX_BLK7.BMF b/CONTENT/BT3025/VIDEO/MAT/VUX_BLK7.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/VUX_BLK7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/VUX_BRN0.BMF b/CONTENT/BT3025/VIDEO/MAT/VUX_BRN0.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/VUX_BRN0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/VUX_BRN1.BMF b/CONTENT/BT3025/VIDEO/MAT/VUX_BRN1.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/VUX_BRN1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/VUX_BRN2.BMF b/CONTENT/BT3025/VIDEO/MAT/VUX_BRN2.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/VUX_BRN2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/VUX_BRN3.BMF b/CONTENT/BT3025/VIDEO/MAT/VUX_BRN3.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/VUX_BRN3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/VUX_BRN4.BMF b/CONTENT/BT3025/VIDEO/MAT/VUX_BRN4.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/VUX_BRN4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/VUX_BRN5.BMF b/CONTENT/BT3025/VIDEO/MAT/VUX_BRN5.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/VUX_BRN5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/VUX_BRN6.BMF b/CONTENT/BT3025/VIDEO/MAT/VUX_BRN6.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/VUX_BRN6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/VUX_BRN7.BMF b/CONTENT/BT3025/VIDEO/MAT/VUX_BRN7.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/VUX_BRN7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/VUX_GRN0.BMF b/CONTENT/BT3025/VIDEO/MAT/VUX_GRN0.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/VUX_GRN0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/VUX_GRN1.BMF b/CONTENT/BT3025/VIDEO/MAT/VUX_GRN1.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/VUX_GRN1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/VUX_GRN2.BMF b/CONTENT/BT3025/VIDEO/MAT/VUX_GRN2.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/VUX_GRN2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/VUX_GRN3.BMF b/CONTENT/BT3025/VIDEO/MAT/VUX_GRN3.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/VUX_GRN3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/VUX_GRN4.BMF b/CONTENT/BT3025/VIDEO/MAT/VUX_GRN4.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/VUX_GRN4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/VUX_GRN5.BMF b/CONTENT/BT3025/VIDEO/MAT/VUX_GRN5.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/VUX_GRN5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/VUX_GRN6.BMF b/CONTENT/BT3025/VIDEO/MAT/VUX_GRN6.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/VUX_GRN6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/VUX_GRN7.BMF b/CONTENT/BT3025/VIDEO/MAT/VUX_GRN7.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/VUX_GRN7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/VUX_GRY0.BMF b/CONTENT/BT3025/VIDEO/MAT/VUX_GRY0.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/VUX_GRY0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/VUX_GRY1.BMF b/CONTENT/BT3025/VIDEO/MAT/VUX_GRY1.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/VUX_GRY1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/VUX_GRY2.BMF b/CONTENT/BT3025/VIDEO/MAT/VUX_GRY2.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/VUX_GRY2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/VUX_GRY3.BMF b/CONTENT/BT3025/VIDEO/MAT/VUX_GRY3.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/VUX_GRY3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/VUX_GRY4.BMF b/CONTENT/BT3025/VIDEO/MAT/VUX_GRY4.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/VUX_GRY4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/VUX_GRY5.BMF b/CONTENT/BT3025/VIDEO/MAT/VUX_GRY5.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/VUX_GRY5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/VUX_GRY6.BMF b/CONTENT/BT3025/VIDEO/MAT/VUX_GRY6.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/VUX_GRY6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/VUX_GRY7.BMF b/CONTENT/BT3025/VIDEO/MAT/VUX_GRY7.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/VUX_GRY7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/VUX_RED0.BMF b/CONTENT/BT3025/VIDEO/MAT/VUX_RED0.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/VUX_RED0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/VUX_RED1.BMF b/CONTENT/BT3025/VIDEO/MAT/VUX_RED1.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/VUX_RED1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/VUX_RED2.BMF b/CONTENT/BT3025/VIDEO/MAT/VUX_RED2.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/VUX_RED2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/VUX_RED3.BMF b/CONTENT/BT3025/VIDEO/MAT/VUX_RED3.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/VUX_RED3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/VUX_RED4.BMF b/CONTENT/BT3025/VIDEO/MAT/VUX_RED4.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/VUX_RED4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/VUX_RED5.BMF b/CONTENT/BT3025/VIDEO/MAT/VUX_RED5.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/VUX_RED5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/VUX_RED6.BMF b/CONTENT/BT3025/VIDEO/MAT/VUX_RED6.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/VUX_RED6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/VUX_RED7.BMF b/CONTENT/BT3025/VIDEO/MAT/VUX_RED7.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/VUX_RED7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/VUX_TAN0.BMF b/CONTENT/BT3025/VIDEO/MAT/VUX_TAN0.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/VUX_TAN0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/VUX_TAN1.BMF b/CONTENT/BT3025/VIDEO/MAT/VUX_TAN1.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/VUX_TAN1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/VUX_TAN2.BMF b/CONTENT/BT3025/VIDEO/MAT/VUX_TAN2.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/VUX_TAN2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/VUX_TAN3.BMF b/CONTENT/BT3025/VIDEO/MAT/VUX_TAN3.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/VUX_TAN3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/VUX_TAN4.BMF b/CONTENT/BT3025/VIDEO/MAT/VUX_TAN4.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/VUX_TAN4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/VUX_TAN5.BMF b/CONTENT/BT3025/VIDEO/MAT/VUX_TAN5.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/VUX_TAN5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/VUX_TAN6.BMF b/CONTENT/BT3025/VIDEO/MAT/VUX_TAN6.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/VUX_TAN6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/VUX_TAN7.BMF b/CONTENT/BT3025/VIDEO/MAT/VUX_TAN7.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/VUX_TAN7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/VUX_WHT0.BMF b/CONTENT/BT3025/VIDEO/MAT/VUX_WHT0.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/VUX_WHT0.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/VUX_WHT1.BMF b/CONTENT/BT3025/VIDEO/MAT/VUX_WHT1.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/VUX_WHT1.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/VUX_WHT2.BMF b/CONTENT/BT3025/VIDEO/MAT/VUX_WHT2.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/VUX_WHT2.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/VUX_WHT3.BMF b/CONTENT/BT3025/VIDEO/MAT/VUX_WHT3.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/VUX_WHT3.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/VUX_WHT4.BMF b/CONTENT/BT3025/VIDEO/MAT/VUX_WHT4.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/VUX_WHT4.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/VUX_WHT5.BMF b/CONTENT/BT3025/VIDEO/MAT/VUX_WHT5.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/VUX_WHT5.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/VUX_WHT6.BMF b/CONTENT/BT3025/VIDEO/MAT/VUX_WHT6.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/VUX_WHT6.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAT/VUX_WHT7.BMF b/CONTENT/BT3025/VIDEO/MAT/VUX_WHT7.BMF new file mode 100644 index 0000000..fddac8d Binary files /dev/null and b/CONTENT/BT3025/VIDEO/MAT/VUX_WHT7.BMF differ diff --git a/CONTENT/BT3025/VIDEO/MAX1SKIN.DZM b/CONTENT/BT3025/VIDEO/MAX1SKIN.DZM new file mode 100644 index 0000000..d5412fa --- /dev/null +++ b/CONTENT/BT3025/VIDEO/MAX1SKIN.DZM @@ -0,0 +1,2 @@ +[dz_utorso] +material=maxskin:blakskn_dz_utorso_mtl diff --git a/CONTENT/BT3025/VIDEO/MAX2SKIN.DZM b/CONTENT/BT3025/VIDEO/MAX2SKIN.DZM new file mode 100644 index 0000000..d5412fa --- /dev/null +++ b/CONTENT/BT3025/VIDEO/MAX2SKIN.DZM @@ -0,0 +1,2 @@ +[dz_utorso] +material=maxskin:blakskn_dz_utorso_mtl diff --git a/CONTENT/BT3025/VIDEO/MAXSKIN.DZM b/CONTENT/BT3025/VIDEO/MAXSKIN.DZM new file mode 100644 index 0000000..d5412fa --- /dev/null +++ b/CONTENT/BT3025/VIDEO/MAXSKIN.DZM @@ -0,0 +1,2 @@ +[dz_utorso] +material=maxskin:blakskn_dz_utorso_mtl diff --git a/CONTENT/BT3025/VIDEO/MAXSKIN.ORG b/CONTENT/BT3025/VIDEO/MAXSKIN.ORG new file mode 100644 index 0000000..d5412fa --- /dev/null +++ b/CONTENT/BT3025/VIDEO/MAXSKIN.ORG @@ -0,0 +1,2 @@ +[dz_utorso] +material=maxskin:blakskn_dz_utorso_mtl diff --git a/CONTENT/BT3025/VIDEO/NAFC.PFX b/CONTENT/BT3025/VIDEO/NAFC.PFX new file mode 100644 index 0000000..0d9648b --- /dev/null +++ b/CONTENT/BT3025/VIDEO/NAFC.PFX @@ -0,0 +1,32 @@ +btfx:firesmoke1_scr_tex +0x00000668 35 0.2 150 +0 -0.25 -4 1.25 +2 1 -3 -4 -2 -3 +0.5 1 0 0 -1 0.0 +0 1 3 0 0.5 2 +1 0 +2.20 1.30 0.90 1.60 0.00 0.00 0.00 0.00 +2.00 0.50 0.00 0.60 0.00 0.00 0.00 0.00 +-0.10 -0.30 -1.0 -2 0.00 0.00 0.00 2.00 +0.00 0.00 -1.00 -2 0.00 0.00 0.00 2.00 +1 1 +0.1 0.4 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one diff --git a/CONTENT/BT3025/VIDEO/NBIGBOOM.PFX b/CONTENT/BT3025/VIDEO/NBIGBOOM.PFX new file mode 100644 index 0000000..1b18154 --- /dev/null +++ b/CONTENT/BT3025/VIDEO/NBIGBOOM.PFX @@ -0,0 +1,33 @@ +btfx:firesmoke2_scr_tex +0x00000674 25 0.5 40 +0 1 0 5 +150 40 150 -280 -60 -280 +5.5 5.0 25 30 -1 0 +2.5 -0.5 2.5 -5 -10 -5 +2 0 +2.00 0.70 0.20 2.00 0.00 0.00 0.00 0.00 +1.00 0.30 0.00 1.00 0.00 0.00 0.00 0.00 +0.0 -0.20 -0.50 -0.50 0.00 0.00 0.00 0.00 +0.0 0.00 0.00 -2.00 0.00 0.00 0.00 0.00 +10 1 +5.0 1.5 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one + \ No newline at end of file diff --git a/CONTENT/BT3025/VIDEO/NDAM1.PFX b/CONTENT/BT3025/VIDEO/NDAM1.PFX new file mode 100644 index 0000000..3aec0ab --- /dev/null +++ b/CONTENT/BT3025/VIDEO/NDAM1.PFX @@ -0,0 +1,32 @@ +btfx:firesmoke1_scr_tex +0x00000670 10 1 6 +0 0 0 1 +1 2 1 -2 1 -2 +0.5 0.5 1 1 0.00 0 +0 1 0 0 1 0 +0.5 0.5 +0.50 0.50 0.50 1.10 0.00 0.00 0.00 0.00 +0.50 0.50 0.50 1.00 0.00 0.00 0.00 0.00 +0.10 0.10 0.10 0.00 0.00 0.00 0.00 0.00 +0.10 0.10 0.10 0.00 0.00 0.00 0.00 0.00 +10 1 +1.0 0.5 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one diff --git a/CONTENT/BT3025/VIDEO/NDAM2.PFX b/CONTENT/BT3025/VIDEO/NDAM2.PFX new file mode 100644 index 0000000..ec24c10 --- /dev/null +++ b/CONTENT/BT3025/VIDEO/NDAM2.PFX @@ -0,0 +1,32 @@ +btfx:firesmoke1_scr_tex +0x00000670 20 2 12 +0 0 0 1 +2 3 2 -4 1 -4 +0.5 0.5 1 1 0.00 0 +0 1 0 0 1 0 +0.5 0.5 +0.30 0.30 0.30 1.10 0.00 0.00 0.00 0.00 +0.30 0.30 0.30 1.00 0.00 0.00 0.00 0.00 +-0.00 -0.00 -0.00 0.00 0.00 0.00 0.00 0.00 +0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 +10 1 +1.0 0.5 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one diff --git a/CONTENT/BT3025/VIDEO/NDAM3.PFX b/CONTENT/BT3025/VIDEO/NDAM3.PFX new file mode 100644 index 0000000..38c260b --- /dev/null +++ b/CONTENT/BT3025/VIDEO/NDAM3.PFX @@ -0,0 +1,32 @@ +btfx:firesmoke1_scr_tex +0x00000670 35 4 16 +0 0 0 1 +1 1 1 -2 1 -2 +0.6 0.6 1.2 1 -0.7 0 +0 0.75 0 0 1 0 +0.5 0.5 +0.50 0.20 0.00 1.50 0.00 0.00 0.00 0.00 +0.00 0.00 0.00 1.00 0.00 0.00 0.00 0.00 +-0.50 -0.50 -0.50 0.00 0.00 0.00 0.00 0.00 +0.00 0.00 0.00 -0.10 0.00 0.00 0.00 0.00 +10 1 +1.75 0.25 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one diff --git a/CONTENT/BT3025/VIDEO/NDAM4.PFX b/CONTENT/BT3025/VIDEO/NDAM4.PFX new file mode 100644 index 0000000..cd00ba6 --- /dev/null +++ b/CONTENT/BT3025/VIDEO/NDAM4.PFX @@ -0,0 +1,33 @@ +btfx:firesmoke1_scr_tex +0x00000670 40 5 18 +0 0 0 1 +1 1 1 -2 -2 -2 +0.5 0.5 1.5 1 -1.0 0 +0 2.5 0 0 1.5 0 +0.5 0.5 +1.70 0.70 0.20 2.00 0.00 0.00 0.00 0.00 +0.00 0.00 0.00 1.00 0.00 0.00 0.00 0.00 +-1.50 -1.50 -1.50 0.00 0.00 0.00 0.00 0.00 +0.00 0.00 0.00 -0.10 0.00 0.00 0.00 0.00 +10 1 +1.5 0.5 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one + \ No newline at end of file diff --git a/CONTENT/BT3025/VIDEO/NDAM5.PFX b/CONTENT/BT3025/VIDEO/NDAM5.PFX new file mode 100644 index 0000000..0936a3a --- /dev/null +++ b/CONTENT/BT3025/VIDEO/NDAM5.PFX @@ -0,0 +1,33 @@ +btfx:firesmoke4_scr_tex +0x00000674 10 0.25 20 +0 1 0 2 +15 10 20 -30 -20 -40 +1.5 2.0 5 5 -1 0 +2.5 2.5 2.5 -5 -10 -5 +7 3 +2.00 0.70 0.20 2.00 0.00 0.00 0.00 0.00 +1.00 0.30 0.00 1.00 0.00 0.00 0.00 0.00 +0.0 -0.20 -0.50 -0.50 0.00 0.00 0.00 0.00 +0.0 0.00 0.00 -2.00 0.00 0.00 0.00 0.00 +10 1 +1.5 0.5 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one + \ No newline at end of file diff --git a/CONTENT/BT3025/VIDEO/NDTHSMK.PFX b/CONTENT/BT3025/VIDEO/NDTHSMK.PFX new file mode 100644 index 0000000..1aeec35 --- /dev/null +++ b/CONTENT/BT3025/VIDEO/NDTHSMK.PFX @@ -0,0 +1,32 @@ +btfx:firesmoke1_scr_tex +0x00000002 25 10 3 +0 3 0 2 +1 5 1 -2 4 -2 +2.0 0.9 1.9 1 -0.001 0 +0 1 0 0 1 0.5 +0.1 0.1 + 0.70 0.30 0.10 2.00 0.00 0.00 0.00 0.50 + 0.50 0.20 0.00 1.00 0.00 0.00 0.00 0.50 +-2.30 -1.10 -1.00 0.00 0.00 0.00 0.00 0.00 +-2.00 -1.00 -0.60 0.00 0.00 0.00 0.00 0.00 +0 0 +5 2 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one diff --git a/CONTENT/BT3025/VIDEO/NLRMTAIL.PFX b/CONTENT/BT3025/VIDEO/NLRMTAIL.PFX new file mode 100644 index 0000000..ea5fd23 --- /dev/null +++ b/CONTENT/BT3025/VIDEO/NLRMTAIL.PFX @@ -0,0 +1,33 @@ +btfx:firesmoke1_scr_tex +0x00000667 40 2 30 +0 0 0 0 +3 2 10 -6 -1 20 +1 1 20 10 0 0 +6 3 3 -12 2 -6 +0 0 +2.20 1.00 0.50 1.60 0.00 0.00 0.00 0.00 +0.00 0.00 0.00 1.00 0.00 0.00 0.00 0.00 +-0.20 -0.20 -0.20 -0.50 0.00 0.00 0.00 0.00 +0.00 0.00 0.00 1.10 0.00 0.00 0.00 0.00 +10 1 +0.5 0.5 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one + \ No newline at end of file diff --git a/CONTENT/BT3025/VIDEO/NMEDBOOM.PFX b/CONTENT/BT3025/VIDEO/NMEDBOOM.PFX new file mode 100644 index 0000000..047526e --- /dev/null +++ b/CONTENT/BT3025/VIDEO/NMEDBOOM.PFX @@ -0,0 +1,33 @@ +btfx:firesmoke4_scr_tex +0x00000674 10 0.5 16 +0 1 0 2 +120 30 120 -240 -60 -240 +3.5 1.0 8 8 -1 0 +2.5 2.5 2.5 -5 -10 -5 +7 3 +1.30 0.50 0.30 2.00 0.00 0.00 0.00 0.00 +0.20 0.20 0.20 1.00 0.00 0.00 0.00 0.00 +0.0 0.00 0.00 -0.50 0.00 0.00 0.00 0.00 +0.0 0.00 0.00 -2.00 0.00 0.00 0.00 0.00 +10 1 +1.5 0.5 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one + \ No newline at end of file diff --git a/CONTENT/BT3025/VIDEO/NMISSING.PFX b/CONTENT/BT3025/VIDEO/NMISSING.PFX new file mode 100644 index 0000000..7820b2c --- /dev/null +++ b/CONTENT/BT3025/VIDEO/NMISSING.PFX @@ -0,0 +1,33 @@ +btfx:firesmoke1_scr_tex +0x00000670 35 8 20 +0 0 0 1 +1 1 1 -2 -2 -2 +0.5 0.5 1.5 1 -1.0 0 +0 2.5 0 0 1.5 0 +0.5 0.5 +0.0 1.0 0.0 2.00 0.00 0.00 0.00 0.00 +0.00 0.00 0.00 1.00 0.00 0.00 0.00 0.00 +0.0 1.0 0.0 0.00 0.00 0.00 0.00 0.00 +0.00 0.00 0.00 -0.10 0.00 0.00 0.00 0.00 +10 1 +1.0 0.5 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one + \ No newline at end of file diff --git a/CONTENT/BT3025/VIDEO/NNBOOM.PFX b/CONTENT/BT3025/VIDEO/NNBOOM.PFX new file mode 100644 index 0000000..c0b9773 --- /dev/null +++ b/CONTENT/BT3025/VIDEO/NNBOOM.PFX @@ -0,0 +1,33 @@ +btfx:firesmoke1_scr_tex +0x00000674 35 0.2 150 +0 1 0 2 +150 60 150 -300 -250 -300 +0.5 5.0 25 25 -5 0 +2.5 2.5 2.5 -5 -10 -5 +5 1 +0.8 0.30 0.00 2.00 0.00 0.00 0.00 0.00 +0.8 0.30 0.00 1.00 0.00 0.00 0.00 0.00 +0 00 0 -2 0.00 0.00 0.00 0.00 +0 00 0 -5 0.00 0.00 0.00 0.00 +10 1 +1.5 1 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one + \ No newline at end of file diff --git a/CONTENT/BT3025/VIDEO/NSMLBOOM.PFX b/CONTENT/BT3025/VIDEO/NSMLBOOM.PFX new file mode 100644 index 0000000..c9d4e2d --- /dev/null +++ b/CONTENT/BT3025/VIDEO/NSMLBOOM.PFX @@ -0,0 +1,33 @@ +btfx:firesmoke4_scr_tex +0x30000674 10 0.25 30 +0 1 0 1 +25 40 25 -50 -50 -50 +2.5 1.0 4 4 -1 0 +2.5 2.5 2.5 -5 -10 -5 +3 3 +0.90 0.90 0.90 1.00 0.00 0.00 0.00 0.00 +0.20 0.20 0.20 1.00 0.00 0.00 0.00 0.00 +0.0 0.00 0.00 -0.50 0.00 0.00 0.00 0.00 +0.0 0.00 0.00 -2.00 0.00 0.00 0.00 0.00 +10 1 +2.5 0.5 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one + \ No newline at end of file diff --git a/CONTENT/BT3025/VIDEO/NSRM.PFX b/CONTENT/BT3025/VIDEO/NSRM.PFX new file mode 100644 index 0000000..147290f --- /dev/null +++ b/CONTENT/BT3025/VIDEO/NSRM.PFX @@ -0,0 +1,33 @@ +btfx:firesmoke1_scr_tex +0x00000667 65 2 300 +0 0 0 1 +3 2 10 -6 -1 20 +1 2 2 2 6 0 +1 1 1 -2 -2 -2 +0 0 +1.80 0.90 0.20 1.60 0.00 0.00 0.00 0.00 +0.20 0.05 0.00 1.00 0.00 0.00 0.00 0.00 +0.20 0.05 0.00 0.0 0.00 0.00 0.00 0.00 +0.10 0.00 0.00 0.00 0.00 0.00 0.00 0.00 +10 1 +0.1 0.1 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one + \ No newline at end of file diff --git a/CONTENT/BT3025/VIDEO/NTRKBOOM.PFX b/CONTENT/BT3025/VIDEO/NTRKBOOM.PFX new file mode 100644 index 0000000..bc41011 --- /dev/null +++ b/CONTENT/BT3025/VIDEO/NTRKBOOM.PFX @@ -0,0 +1,33 @@ +btfx:firesmoke4_scr_tex +0x00000674 10 0.25 24 +0 1 0 2 +150 30 150 -300 -60 -300 +3.5 2.0 10 10 -1 0 +2.5 2.5 2.5 -5 -10 -5 +7 3 +2.00 0.70 0.20 2.00 0.00 0.00 0.00 0.00 +1.00 0.30 0.00 1.00 0.00 0.00 0.00 0.00 +0.0 -0.20 -0.50 -0.50 0.00 0.00 0.00 0.00 +0.0 0.00 0.00 -2.00 0.00 0.00 0.00 0.00 +10 1 +1.5 0.5 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one + \ No newline at end of file diff --git a/CONTENT/BT3025/VIDEO/NTRKBURN.PFX b/CONTENT/BT3025/VIDEO/NTRKBURN.PFX new file mode 100644 index 0000000..8cd6465 --- /dev/null +++ b/CONTENT/BT3025/VIDEO/NTRKBURN.PFX @@ -0,0 +1,32 @@ +btfx:firesmoke4_scr_tex +0x00000667 35 4 4 +0 0 0 1 +1 1 1 -2 1 -2 +1.5 0.5 0.5 0.5 0.00 0 +0 1 0 0 0.5 0 +0.25 0.2 +1.50 0.60 0.20 2.50 0.00 0.00 0.00 0.00 +1.00 0.30 0.00 1.00 0.00 0.00 0.00 0.00 +-0.20 -0.50 -0.90 0.00 0.00 0.00 0.00 0.00 +-0.10 -0.10 -0.10 0.00 0.00 0.00 0.00 0.00 +0 0 +5 1 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one diff --git a/CONTENT/BT3025/VIDEO/OWXSKIN.DZM b/CONTENT/BT3025/VIDEO/OWXSKIN.DZM new file mode 100644 index 0000000..e26058d --- /dev/null +++ b/CONTENT/BT3025/VIDEO/OWXSKIN.DZM @@ -0,0 +1,35 @@ +[dz_utorso] +material=owxskin:owen1_dz_utorso_mtl +material=owxskin:owen2_dz_utorso_mtl +material=owxskin:owen4_dz_utorso_mtl +material=owxskin:blakskn_dz_utorso_mtl +[dz_luleg] +material=owxskin:owen4_dz_luleg_mtl +material=owxskin:gen3_dz_luleg_mtl +material=owxskin:blakskn_dz_luleg_mtl +material=owxskin:gen4_dz_luleg_mtl +material=owxskin:owen3_dz_luleg_mtl +material=owxskin:gen3a_dz_luleg_mtl +[dz_ldleg] +material=owxskin:owen4_dz_ldleg_mtl +material=owxskin:gen3_dz_ldleg_mtl +material=owxskin:blakskn_dz_ldleg_mtl +material=owxskin:gen4_dz_ldleg_mtl +material=owxskin:owen3_dz_ldleg_mtl +[dz_rdleg] +material=owxskin:owen4_dz_rdleg_mtl +material=owxskin:gen3_dz_rdleg_mtl +material=owxskin:blakskn_dz_rdleg_mtl +material=owxskin:gen4_dz_rdleg_mtl +material=owxskin:owen3_dz_rdleg_mtl +[dz_ruleg] +material=owxskin:owen4_dz_ruleg_mtl +material=owxskin:gen3_dz_ruleg_mtl +material=owxskin:blakskn_dz_ruleg_mtl +material=owxskin:gen4_dz_ruleg_mtl +material=owxskin:owen3_dz_ruleg_mtl +material=owxskin:gen3a_dz_ruleg_mtl +[dz_lfoot] +material=owxskin:gen1_dz_lfoot_mtl +[dz_rfoot] +material=owxskin:gen1_dz_rfoot_mtl diff --git a/CONTENT/BT3025/VIDEO/PGN.SKL b/CONTENT/BT3025/VIDEO/PGN.SKL new file mode 100644 index 0000000..213abc7 --- /dev/null +++ b/CONTENT/BT3025/VIDEO/PGN.SKL @@ -0,0 +1,55 @@ +[LAB_ONLY] // this file has not been approved for release + +[DamageZones] // call MakeEntryList with 'dz_' +dz_base=0 + +[ROOT] +JointCount=2 +DZoneCount=1 +Object=pgn_base.bgf +dzone=dz_base +Former Segment=segbase +tranx=0 +trany=0 +tranz=0 +pitch=0 +yaw=-0 +roll=0 +joint=jointturret + +[jointturret] +parent=ROOT +Type=hingey +Object=pgn_tur.bgf +dzone=dz_base +Former Segment=segtur +tranx=0 +trany=1.00013 +tranz=0 +pitch=0 +yaw=-0 +roll=0 +joint=jointgun + +[jointgun] +parent=jointturret +Type=hingex +Object=pgn_gun.bgf +dzone=dz_base +Former Segment=seggun +tranx=0 +trany=1.47583 +tranz=-0.669305 +pitch=0 +yaw=-3.55272e-14 +roll=-1.74845e-07 +site=sitegunport + +[sitegunport] +parent=jointgun +tranx=-2.84217e-13 +trany=0 +tranz=-9.8505 +pitch=-2.3283e-10 +yaw=4.08692e-14 +roll=-6.21892e-25 diff --git a/CONTENT/BT3025/VIDEO/PGND.SKL b/CONTENT/BT3025/VIDEO/PGND.SKL new file mode 100644 index 0000000..934f491 --- /dev/null +++ b/CONTENT/BT3025/VIDEO/PGND.SKL @@ -0,0 +1,55 @@ +[LAB_ONLY] // this file has not been approved for release + +[DamageZones] // call MakeEntryList with 'dz_' +dz_base=0 + +[ROOT] +JointCount=2 +DZoneCount=1 +Object=pgndbase.bgf +dzone=dz_base +Former Segment=segbase +tranx=0 +trany=0 +tranz=0 +pitch=0 +yaw=-0 +roll=0 +joint=jointturret + +[jointturret] +parent=ROOT +Type=hingey +Object=pgndtur.bgf +dzone=dz_base +Former Segment=segtur +tranx=0 +trany=1.00013 +tranz=0 +pitch=0 +yaw=-0 +roll=0 +joint=jointgun + +[jointgun] +parent=jointturret +Type=hingex +Object=pgndgun.bgf +dzone=dz_base +Former Segment=seggun +tranx=0 +trany=1.47583 +tranz=-0.669305 +pitch=0 +yaw=-3.55272e-14 +roll=-1.74845e-07 +site=sitegunport + +[sitegunport] +parent=jointgun +tranx=-2.84217e-13 +trany=0 +tranz=-9.8505 +pitch=-2.3283e-10 +yaw=4.08692e-14 +roll=-6.21892e-25 diff --git a/CONTENT/BT3025/VIDEO/RESULT2.TXT b/CONTENT/BT3025/VIDEO/RESULT2.TXT new file mode 100644 index 0000000..9680d2c --- /dev/null +++ b/CONTENT/BT3025/VIDEO/RESULT2.TXT @@ -0,0 +1,5 @@ +BattleTech v4.2 + + +Error - Resource file btl4.res v1.0.0.0 is obsolete! + diff --git a/CONTENT/BT3025/VIDEO/SHKWAVE.PFX b/CONTENT/BT3025/VIDEO/SHKWAVE.PFX new file mode 100644 index 0000000..0b59655 --- /dev/null +++ b/CONTENT/BT3025/VIDEO/SHKWAVE.PFX @@ -0,0 +1,33 @@ +btfx:firesmoke2_scr_tex +00000674 5 0.2 1 +0 0 0 2 +0 2 0 0 0 0 +0.5 1.0 350 25 0 0 +0 0 0 0 0 0 +10 1 +1.0 1.00 1.00 0.75 0.00 0.00 0.00 0.00 +1.0 1.00 1.00 0.90 0.00 0.00 0.00 0.00 +0.5 0.50 0.50 -0.10 0.00 0.00 0.00 0.00 +0.5 0.50 0.50 -0.10 0.00 0.00 0.00 0.00 +0 1 +0.5 0 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one + \ No newline at end of file diff --git a/CONTENT/BT3025/VIDEO/SMLFLASH.PFX b/CONTENT/BT3025/VIDEO/SMLFLASH.PFX new file mode 100644 index 0000000..bcf3d82 --- /dev/null +++ b/CONTENT/BT3025/VIDEO/SMLFLASH.PFX @@ -0,0 +1,33 @@ +btfx:firesmoke4_scr_tex +0x0f000674 45 0.1 400 +0 1 0 2 +20 10 20 -40 10 -40 +3.5 1.0 8 8 -1 0 +0.0 -8.0 0.0 0 -5 0 +0.5 0.5 +2.30 0.70 0.10 3.00 1.00 0.50 0.00 0.00 +0.20 0.20 0.20 1.00 0.00 0.00 0.00 0.00 +0.0 0.00 0.00 -0.50 0.00 0.00 0.00 0.00 +0.0 0.00 0.00 -2.00 0.00 0.00 0.00 0.00 +10 1 +3.0 0.2 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one + \ No newline at end of file diff --git a/CONTENT/BT3025/VIDEO/SMLSMOKE.PFX b/CONTENT/BT3025/VIDEO/SMLSMOKE.PFX new file mode 100644 index 0000000..818f714 --- /dev/null +++ b/CONTENT/BT3025/VIDEO/SMLSMOKE.PFX @@ -0,0 +1,33 @@ +btfx:firesmoke4_scr_tex +0x30000667 25 10 4 +0 0 0 1 +1 1 1 -2 1 -2 +0.5 0.5 0.5 0.25 0.00 0 +0 1 0 0 0.5 0 +0.25 0.2 +0.70 0.40 0.30 1.50 0.00 0.00 0.00 0.00 +0.00 0.00 0.00 1.00 0.00 0.00 0.00 0.00 +-0.00 -0.00 -0.00 0.00 0.00 0.00 0.00 0.00 +-0.00 -0.00 -0.00 0.00 0.00 0.00 0.00 0.00 +0 0 +5 1 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one + \ No newline at end of file diff --git a/CONTENT/BT3025/VIDEO/SNX2SKIN.DZM b/CONTENT/BT3025/VIDEO/SNX2SKIN.DZM new file mode 100644 index 0000000..ec604ce --- /dev/null +++ b/CONTENT/BT3025/VIDEO/SNX2SKIN.DZM @@ -0,0 +1,8 @@ +[dz_utorso] +material=snxskin:blakskn_dz_utorso_mtl +[dz_ltorso] +material=snxskin:sund1_dz_ltorso_mtl +[dz_rtorso] +material=snxskin:sund1_dz_rtorso_mtl +[dz_searchlight] +material=snxskin:sund1wht_dz_searchlight_mtl diff --git a/CONTENT/BT3025/VIDEO/SNXSKIN.DZM b/CONTENT/BT3025/VIDEO/SNXSKIN.DZM new file mode 100644 index 0000000..ec604ce --- /dev/null +++ b/CONTENT/BT3025/VIDEO/SNXSKIN.DZM @@ -0,0 +1,8 @@ +[dz_utorso] +material=snxskin:blakskn_dz_utorso_mtl +[dz_ltorso] +material=snxskin:sund1_dz_ltorso_mtl +[dz_rtorso] +material=snxskin:sund1_dz_rtorso_mtl +[dz_searchlight] +material=snxskin:sund1wht_dz_searchlight_mtl diff --git a/CONTENT/BT3025/VIDEO/STXSKIN.DZM b/CONTENT/BT3025/VIDEO/STXSKIN.DZM new file mode 100644 index 0000000..ce3903b --- /dev/null +++ b/CONTENT/BT3025/VIDEO/STXSKIN.DZM @@ -0,0 +1,11 @@ +[dz_door] +material=thxskin:thx2_dz_door_mtl +material=thxskin:thx1_dz_door_mtl +[dz_missle] +material=thxskin:thx2_dz_missle_mtl +material=thxskin:thx1_dz_missle_mtl +material=thxskin:gen3_dz_missle_mtl +material=thxskin:thx3_dz_missle_mtl +[dz_utorso] +material=thxskin:thx2_dz_utorso_mtl +material=thxskin:blakskn_dz_utorso_mtl diff --git a/CONTENT/BT3025/VIDEO/TEX/BUILD/BDLGO128.BAT b/CONTENT/BT3025/VIDEO/TEX/BUILD/BDLGO128.BAT new file mode 100644 index 0000000..833f7ee --- /dev/null +++ b/CONTENT/BT3025/VIDEO/TEX/BUILD/BDLGO128.BAT @@ -0,0 +1,17 @@ +@echo off +rem +rem buildlgo.bat +rem +echo. +echo PROCESSING TEXTURE FILES... +echo. +:bitslice +img2vtx.exe -b -o lgo128.bsl -s 128,128 -m0 lgo1.tga -m1 lgo2.tga -m2 lgo3.tga -m3 lgo4.tga -m4 lgo5.tga -m5 lgo6.tga -m7 lgo7.tga +if errorlevel 1 goto error +echo texture files processed. +goto end +:error +echo. +echo PROCESSING FAILED - SEE ABOVE +:end + diff --git a/CONTENT/BT3025/VIDEO/TEX/BUILD/BUILDLGO.BAT b/CONTENT/BT3025/VIDEO/TEX/BUILD/BUILDLGO.BAT new file mode 100644 index 0000000..c90ea07 --- /dev/null +++ b/CONTENT/BT3025/VIDEO/TEX/BUILD/BUILDLGO.BAT @@ -0,0 +1,18 @@ +@echo off +rem +rem buildlgo.bat +rem +echo. +echo PROCESSING TEXTURE FILES... +echo. +:bitslice +img2vtx.exe -b -o lgo.bsl -s 128,64 -m0 lgo1.tga -m1 lgo2.tga -m2 lgo3.tga -m3 lgo4.tga -m4 lgo5.tga -m5 lgo6.tga -m7 lgo7.tga +rem img2vtx.exe -b -o lgo.bsl -s 128,64 -m0 lgo7.tga +if errorlevel 1 goto error +echo texture files processed. +goto end +:error +echo. +echo PROCESSING FAILED - SEE ABOVE +:end + diff --git a/CONTENT/BT3025/VIDEO/THX1SKIN.DZM b/CONTENT/BT3025/VIDEO/THX1SKIN.DZM new file mode 100644 index 0000000..ce3903b --- /dev/null +++ b/CONTENT/BT3025/VIDEO/THX1SKIN.DZM @@ -0,0 +1,11 @@ +[dz_door] +material=thxskin:thx2_dz_door_mtl +material=thxskin:thx1_dz_door_mtl +[dz_missle] +material=thxskin:thx2_dz_missle_mtl +material=thxskin:thx1_dz_missle_mtl +material=thxskin:gen3_dz_missle_mtl +material=thxskin:thx3_dz_missle_mtl +[dz_utorso] +material=thxskin:thx2_dz_utorso_mtl +material=thxskin:blakskn_dz_utorso_mtl diff --git a/CONTENT/BT3025/VIDEO/THXSKIN.DZM b/CONTENT/BT3025/VIDEO/THXSKIN.DZM new file mode 100644 index 0000000..ce3903b --- /dev/null +++ b/CONTENT/BT3025/VIDEO/THXSKIN.DZM @@ -0,0 +1,11 @@ +[dz_door] +material=thxskin:thx2_dz_door_mtl +material=thxskin:thx1_dz_door_mtl +[dz_missle] +material=thxskin:thx2_dz_missle_mtl +material=thxskin:thx1_dz_missle_mtl +material=thxskin:gen3_dz_missle_mtl +material=thxskin:thx3_dz_missle_mtl +[dz_utorso] +material=thxskin:thx2_dz_utorso_mtl +material=thxskin:blakskn_dz_utorso_mtl diff --git a/CONTENT/BT3025/VIDEO/VUL2SKIN.DZM b/CONTENT/BT3025/VIDEO/VUL2SKIN.DZM new file mode 100644 index 0000000..15e6d3a --- /dev/null +++ b/CONTENT/BT3025/VIDEO/VUL2SKIN.DZM @@ -0,0 +1,79 @@ +[dz_rdleg] +material=vulskin:gen3_dz_rdleg_mtl +material=vulskin:lgo5_dz_rdleg_mtl +material=vulskin:blakskn_dz_rdleg_mtl +material=vulskin:gen1_dz_rdleg_mtl +[dz_ldleg] +material=vulskin:gen3_dz_ldleg_mtl +material=vulskin:lgo5_dz_ldleg_mtl +material=vulskin:blakskn_dz_ldleg_mtl +material=vulskin:gen1_dz_ldleg_mtl +[dz_lfoot] +material=vulskin:gen3_dz_lfoot_mtl +material=vulskin:blakskn_dz_lfoot_mtl +material=vulskin:gen1a_dz_lfoot_mtl +[dz_hip] +material=vulskin:gen3_dz_hip_mtl +material=vulskin:gen2_dz_hip_mtl +[dz_rfoot] +material=vulskin:gen3_dz_rfoot_mtl +material=vulskin:blakskn_dz_rfoot_mtl +material=vulskin:gen1a_dz_rfoot_mtl +[dz_luleg] +material=vulskin:gen3_dz_luleg_mtl +[dz_ruleg] +material=vulskin:gen3_dz_ruleg_mtl +[dz_dtorso] +material=vulskin:blakskn_dz_dtorso_mtl +material=vulskin:gen2a_dz_dtorso_mtl +material=vulskin:vultt1_dz_dtorso_mtl +material=vulskin:vultt4_dz_dtorso_mtl +[dz_lddoor] +material=vulskin:gen2_dz_lddoor_mtl +material=vulskin:vultt3_dz_lddoor_mtl +[dz_rddoor] +material=vulskin:gen2_dz_rddoor_mtl +material=vulskin:vultt3_dz_rddoor_mtl +[dz_ludoor] +material=vulskin:vultt1_dz_ludoor_mtl +material=vulskin:gen4_dz_ludoor_mtl +[dz_rudoor] +material=vulskin:vultt1_dz_rudoor_mtl +material=vulskin:gen4_dz_rudoor_mtl +[dz_utorso] +material=vulskin:vultt1_dz_utorso_mtl +material=vulskin:vultt4_dz_utorso_mtl +[dz_ltorso] +material=vulskin:vultt2_dz_ltorso_mtl +material=vulskin:vultt6_dz_ltorso_mtl +material=vulskin:vultt3_dz_ltorso_mtl +material=vulskin:vultt4_dz_ltorso_mtl +[dz_rtorso] +material=vulskin:vultt2_dz_rtorso_mtl +material=vulskin:vultt6_dz_rtorso_mtl +material=vulskin:vultt3_dz_rtorso_mtl +material=vulskin:vultt4_dz_rtorso_mtl +[dz_rearltorso] +material=vulskin:vultt3_dz_rearltorso_mtl +[dz_rearrtorso] +material=vulskin:vultt3_dz_rearrtorso_mtl +[dz_reardtorso] +material=vulskin:vultt4_dz_reardtorso_mtl +[dz_rearutorso] +material=vulskin:vultt4_dz_rearutorso_mtl +[dz_searchlight] +material=vulskin:vultt5a_dz_searchlight_mtl +[dz_lmissle] +material=ownskin:owen3_dz_lmissle_mtl +material=ownskin:owen4_dz_lmissle_mtl +material=ownskin:owen5_dz_lmissle_mtl +material=ownskin:gen3drkgry_dz_lmissle_mtl +material=ownskin:gen3medgry_dz_lmissle_mtl +material=ownskin:damcolor_dz_lmissle_mtl +[dz_rmissle] +material=ownskin:owen3_dz_rmissle_mtl +material=ownskin:owen4_dz_rmissle_mtl +material=ownskin:owen5_dz_rmissle_mtl +material=ownskin:gen3drkgry_dz_rmissle_mtl +material=ownskin:gen3medgry_dz_rmissle_mtl +material=ownskin:damcolor_dz_rmissle_mtl diff --git a/CONTENT/BT3025/VIDEO/VUX1SKIN.DZM b/CONTENT/BT3025/VIDEO/VUX1SKIN.DZM new file mode 100644 index 0000000..3c53969 --- /dev/null +++ b/CONTENT/BT3025/VIDEO/VUX1SKIN.DZM @@ -0,0 +1,2 @@ +[dz_utorso] +material=vuxskin:blakskn_dz_utorso_mtl diff --git a/CONTENT/BT3025/VIDEO/VUX2SKIN.DZM b/CONTENT/BT3025/VIDEO/VUX2SKIN.DZM new file mode 100644 index 0000000..3c53969 --- /dev/null +++ b/CONTENT/BT3025/VIDEO/VUX2SKIN.DZM @@ -0,0 +1,2 @@ +[dz_utorso] +material=vuxskin:blakskn_dz_utorso_mtl diff --git a/CONTENT/BT3025/VIDEO/VUXSKIN.DZM b/CONTENT/BT3025/VIDEO/VUXSKIN.DZM new file mode 100644 index 0000000..3c53969 --- /dev/null +++ b/CONTENT/BT3025/VIDEO/VUXSKIN.DZM @@ -0,0 +1,2 @@ +[dz_utorso] +material=vuxskin:blakskn_dz_utorso_mtl diff --git a/CONTENT/BT3025/WATTCP.CFG b/CONTENT/BT3025/WATTCP.CFG new file mode 100644 index 0000000..2ba343d --- /dev/null +++ b/CONTENT/BT3025/WATTCP.CFG @@ -0,0 +1,4 @@ +my_ip = 200.0.0.111 +netmask = 255.255.255.0 +nameserver = 200.0.0.1 +gateway = 200.0.0.1 diff --git a/CONTENT/MTMCDAI.SYS b/CONTENT/MTMCDAI.SYS new file mode 100644 index 0000000..a49dd49 Binary files /dev/null and b/CONTENT/MTMCDAI.SYS differ diff --git a/CONTENT/RP/$$ARCALL.TMP b/CONTENT/RP/$$ARCALL.TMP new file mode 100644 index 0000000..81c374f --- /dev/null +++ b/CONTENT/RP/$$ARCALL.TMP @@ -0,0 +1,7 @@ +wattcp.cfg +joystick.ini +vrend?.btl +*.zip +*.??- +*.bak +*.tr2 diff --git a/CONTENT/RP/32STUB.EXE b/CONTENT/RP/32STUB.EXE new file mode 100644 index 0000000..8747672 Binary files /dev/null and b/CONTENT/RP/32STUB.EXE differ diff --git a/CONTENT/RP/ANIM.BAT b/CONTENT/RP/ANIM.BAT new file mode 100644 index 0000000..4bb480e --- /dev/null +++ b/CONTENT/RP/ANIM.BAT @@ -0,0 +1,4 @@ +rem call edit makeegg.bat +call edit animcam.bat +call animcam blank dragon +ren dump0.tga anim%1.tga diff --git a/CONTENT/RP/ANIMCAM.BAT b/CONTENT/RP/ANIMCAM.BAT new file mode 100644 index 0000000..e47c7cf --- /dev/null +++ b/CONTENT/RP/ANIMCAM.BAT @@ -0,0 +1,60 @@ +@echo off +rem ------------------------------------------------------------------ +rem L4EYES=x y z pitch yaw roll [relative] +rem ------------------------------------------------------------------ +rem set L4EYES=25 5.9 -10 0 95 0 r +rem set L4EYES=0 -3.3 -12.5 15 180 0 r +rem set L4EYES=0 12 -4.5 -70 180 0 r +rem set L4EYES=0 -3.5 -9.5 24 180 0 r +rem Animation Cycle +rem set L4EYES=0 -3.5 -12.5 15 180 0 r +rem set L4EYES=-2.438629 -3.5 -12.25982 15 191.25 0 r +rem set L4EYES=-4.783542 -3.5 -11.54849 15 202.5 0 r +rem set L4EYES=-6.944627 -3.5 -10.393370 15 213.75 0 r +rem set L4EYES=-8.838834 -3.5 -8.838834 15 225 0 r +rem set L4EYES=-10.393370 -3.5 -6.944627 15 236.25 0 r +rem set L4EYES=-11.548494 -3.5 -4.783542 15 247.5 0 r +rem set L4EYES=-12.259816 -3.5 -2.438629 15 258.75 0 r +rem set L4EYES=-12.5 -3.5 0 15 270 0 r +rem set L4EYES=-12.259816 -3.5 2.438629 15 281.25 0 r +rem set L4EYES=-11.548494 -3.5 4.783542 15 292.5 0 r +rem set L4EYES=-10.393370 -3.5 6.944627 15 303.75 0 r +rem set L4EYES=-8.838834 -3.5 8.838834 15 315 0 r +rem set L4EYES=-6.944627 -3.5 10.393370 15 326.25 0 r +rem set L4EYES=-4.783542 -3.5 11.548494 15 337.5 0 r +rem set L4EYES=-2.438629 -3.5 12.259816 15 348.75 0 r +rem set L4EYES=0 -3.5 12.5 15 0 0 r +rem set L4EYES=2.438629 -3.5 12.259816 15 11.25 0 r +rem set L4EYES=4.783542 -3.5 11.548494 15 22.5 0 r +rem set L4EYES=6.944627 -3.5 10.393370 15 33.75 0 r +rem set L4EYES=8.838834 -3.5 8.838834 15 45 0 r +rem set L4EYES=10.393370 -3.5 6.944627 15 56.25 0 r +rem set L4EYES=11.548494 -3.5 4.783542 15 67.5 0 r +rem set L4EYES=12.259816 -3.5 2.438629 15 78.75 0 r +rem set L4EYES=12.5 -3.5 0 15 90 0 r +rem set L4EYES=12.259816 -3.5 -2.438629 15 101.25 0 r +rem set L4EYES=11.548494 -3.5 -4.783542 15 112.5 0 r +rem set L4EYES=10.393370 -3.5 -6.944627 15 123.75 0 r +rem set L4EYES=8.838834 -3.5 -8.838834 15 135 0 r +rem set L4EYES=6.944627 -3.5 -10.393370 15 146.25 0 r +rem set L4EYES=4.783542 -3.5 -11.548494 15 157.5 0 r +set L4EYES=2.438629 -3.5 -12.259816 15 168.75 0 r +set L4VIEWEXT=True +rem ------------------------------------------------------------------ +call rpprep.bat %1 %2 %3 %4 %5 %6 %7 %8 %9 +menu.bat short + + + + + + + + + + + + + + + diff --git a/CONTENT/RP/ARCALL.BAT b/CONTENT/RP/ARCALL.BAT new file mode 100644 index 0000000..bd073c2 --- /dev/null +++ b/CONTENT/RP/ARCALL.BAT @@ -0,0 +1,86 @@ +@echo off +rem --------------------------- +rem arcall.bat for Red Planet +rem --------------------------- +set c1=%2 +if "%c1%"=="" set c1=%PODBAYON%\%VCSID% +set c2=RPALL.ZIP +set c3=*.* +set d0=$$arcall.tmp +set v0= +if "%1"=="-c" set v0=a +if "%1"=="-C" set v0=a +if "%1"=="-u" set v0=u +if "%1"=="-U" set v0=u +if "%v0%"=="" goto USAGE + +:Check +if not "%2"=="" goto CheckDirectory +if "%PODBAYON%"=="" goto NO_PODBAYON +if "%VCSID%"=="" goto NO_VCSID +:CheckDirectory +echo.>%c1%\%d0% +if not exist %c1%\%d0% goto BAD_DIRECTORY +del %c1%\%d0% + +:Process +set v1=process +if "%v0%"=="a" set v1=creat +if "%v0%"=="u" set v1=updat +echo. +echo %v1%ing %c1%\%c2% +echo. + +:Exclude +echo wattcp.cfg>%d0% +echo joystick.ini>>%d0% +echo vrend?.btl>>%d0% +echo *.zip>>%d0% +echo *.??->>%d0% +echo *.bak>>%d0% +echo *.tr2>>%d0% + +:Archive +if "%v0%"=="a" if exist %c1%\%c2% del %c1%\%c2% +echo on +pkzip.exe -%v0% -eX -r -P -x@%d0% %c1%\%c2% %c3% +@echo off +echo done. +goto END + +:NO_PODBAYON +echo. +echo Environment variable PODBAYON required for default directory. +echo. +goto END + +:NO_VCSID +echo. +echo Environment variable VCSID required for default directory. +echo. +goto END + +:BAD_DIRECTORY +echo. +echo Error - Can't write to directory '%c1%'. Check network drive. +echo. +goto END + +:USAGE +echo. +echo usage: arcall option [destination] +echo. +echo option '-c' - create (overwrite) %c1%\%c2% +echo '-u' - update (freshen) %c1%\%c2% +echo destination is drive and/or directory for archive file +echo. +goto END + +:END +if exist %d0% del %d0% +set c1= +set c2= +set c3= +set d0= +set v0= +set v1= diff --git a/CONTENT/RP/ARCFILES.LST b/CONTENT/RP/ARCFILES.LST new file mode 100644 index 0000000..e7448a5 --- /dev/null +++ b/CONTENT/RP/ARCFILES.LST @@ -0,0 +1,23 @@ +rpl4*.exe +rpl4.res +netnub.exe +setenv.bat +dpmi32vm.ovl +32*.exe +rpdpl.ini +mars*.ini +dpldflt.ini +l4gauge.ini +vr*.* +*.386 +test.egg +video\*.* +gauge\*.cfg +gauge\*.ini +gauge\*.pc? +gauge\*.gat +gauge\*.gim +audio\*.cfg +audio\*.ini +audio\*.res + diff --git a/CONTENT/RP/ARCRP.BAT b/CONTENT/RP/ARCRP.BAT new file mode 100644 index 0000000..95c55a1 --- /dev/null +++ b/CONTENT/RP/ARCRP.BAT @@ -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\rp.zip @%a3% +@echo off +goto END + +:FRESHEN +echo on +pkzip -u -P -eX -x@%s1% %2\rp.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: arcrp 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= diff --git a/CONTENT/RP/AUDIO/AUDIO.INI b/CONTENT/RP/AUDIO/AUDIO.INI new file mode 100644 index 0000000..619d7fb --- /dev/null +++ b/CONTENT/RP/AUDIO/AUDIO.INI @@ -0,0 +1,60 @@ +[AudioRenderer] + +# +# Radius of clipping sphere +# +#clipping_radius=400.0 +#clipping_radius=350.0 +clipping_radius=550.0 + +# +# Distance between ears -> average size of cockpit +# +distance_between_ears=12.0 + +# +# Control amplitude rolloff +# +amplitude_rolloff=2.0 +amplitude_rolloff_knee=60.0 +#amplitude_rolloff_distance_scale=0.005 +amplitude_rolloff_distance_scale=0.003 + +# +# Control high frequency rolloff +# +high_frequency_rolloff=2.0 +high_frequency_rolloff_knee=60.0 +#high_frequency_rolloff_distance_scale=0.01 +high_frequency_rolloff_distance_scale=0.005 + +# +# Control doppler +# +doppler_range=600.0 +speed_of_sound=250.0 + +# +# Control source compression +# +#compression_scale=0.95 +compression_scale=0.92 +#compression_exponent=4.0 +compression_exponent=8.5 + +# +# ITD difference constant +# +itd_difference=0.0015 + +# +# Global reverb scale +# +#global_reverb_scale=0.3 +global_reverb_scale=0.35 + +[AudioResources] +front_audio_resource=audio\audio1.res +front_audio_resource=audio\audio2.res +rear_audio_resource=audio\audio1.res +rear_audio_resource=audio\audio2.res diff --git a/CONTENT/RP/AUDIO/AUDIO.RES b/CONTENT/RP/AUDIO/AUDIO.RES new file mode 100644 index 0000000..152f9ed --- /dev/null +++ b/CONTENT/RP/AUDIO/AUDIO.RES @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/CONTENT/RP/AUDIO/AUDIOMR.INI b/CONTENT/RP/AUDIO/AUDIOMR.INI new file mode 100644 index 0000000..bce276b --- /dev/null +++ b/CONTENT/RP/AUDIO/AUDIOMR.INI @@ -0,0 +1,60 @@ +[AudioRenderer] + +# +# Radius of clipping sphere +# +#clipping_radius=400.0 +#clipping_radius=350.0 +clipping_radius=550.0 + +# +# Distance between ears -> average size of cockpit +# +distance_between_ears=12.0 + +# +# Control amplitude rolloff +# +amplitude_rolloff=2.0 +amplitude_rolloff_knee=60.0 +#amplitude_rolloff_distance_scale=0.005 +amplitude_rolloff_distance_scale=0.003 + +# +# Control high frequency rolloff +# +high_frequency_rolloff=2.0 +high_frequency_rolloff_knee=60.0 +#high_frequency_rolloff_distance_scale=0.01 +high_frequency_rolloff_distance_scale=0.005 + +# +# Control doppler +# +doppler_range=600.0 +speed_of_sound=250.0 + +# +# Control source compression +# +#compression_scale=0.92 +#compression_exponent=8.5 +compression_scale=0.1 +compression_exponent=9.0 + +# +# ITD difference constant +# +itd_difference=0.0015 + +# +# Global reverb scale +# +#global_reverb_scale=0.3 +global_reverb_scale=0.35 + +[AudioResources] +front_audio_resource=audio\audio1.res +front_audio_resource=audio\audio2.res +rear_audio_resource=audio\audio1.res +rear_audio_resource=audio\audio2.res diff --git a/CONTENT/RP/AUDIO/BARGE.SCP b/CONTENT/RP/AUDIO/BARGE.SCP new file mode 100644 index 0000000..ea2d273 --- /dev/null +++ b/CONTENT/RP/AUDIO/BARGE.SCP @@ -0,0 +1,161 @@ +# +#------------------------------------------------------------------ +# Barge Audio Script +#------------------------------------------------------------------ +# + +# +#------------------------------------------------------------------ +# AudioRenderTypes +# +# TransientAudioRenderType = 0 +# SustainedAudioRenderType = 1 +# +#------------------------------------------------------------------ +# AudioSourcePriority +# +# MinAudioSourcePriority = 0 +# LowAudioSourcePriority = 1 +# MedAudioSourcePriority = 2 +# HighAudioSourcePriority = 3 +# MaxAudioSourcePriority = 4 +# +#------------------------------------------------------------------ +# AudioSourceMixPresence +# +# ManualAudioSourceMixPresence = 0 +# MaxAudioSourceMixPresence = 1 +# HighAudioSourceMixPresence = 2 +# MedAudioSourceMixPresence = 3 +# LowAudioSourceMixPresence = 4 +# MinAudioSourceMixPresence = 5 +# +#------------------------------------------------------------------ +# AudioControlID +# +# NullAudioControlID = 0 +# StartAudioControlID = 1 +# StopAudioControlID = 2 +# VolumeAudioControlID = 3 +# PitchAudioControlID = 4 +# BrightnessAudioControlID = 5 +# AttackVolumeAudioControlID = 6 +# AttackTimeAudioControlID = 7 +# AudioControlIDCount = 8 +# + +# +#------------------------------------------------------------------ +# Includes +#------------------------------------------------------------------ +# +[include] +file=audio\vtvint.scp +file=audio\chute.scp + +# +#------------------------------------------------------------------ +# Booster trigger +#------------------------------------------------------------------ +# +[AudioStateTrigger] +subsystem=Booster1 +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster2 +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster1 +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=1 +inverse_trigger=1 +control_ID=2 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster2 +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=1 +inverse_trigger=1 +control_ID=2 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Entity +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=2 +inverse_trigger=0 +control_ID=2 +control_value=0.0 +dump_value=0 + +# Booster Loop +[AudioStateTrigger] +subsystem=Booster1 +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster2 +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster1 +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=1 +inverse_trigger=1 +control_ID=2 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster2 +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=1 +inverse_trigger=1 +control_ID=2 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Entity +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=2 +inverse_trigger=0 +control_ID=2 +control_value=0.0 +dump_value=0 + diff --git a/CONTENT/RP/AUDIO/BLKSPK.SCP b/CONTENT/RP/AUDIO/BLKSPK.SCP new file mode 100644 index 0000000..cee4f9f --- /dev/null +++ b/CONTENT/RP/AUDIO/BLKSPK.SCP @@ -0,0 +1,161 @@ +# +#------------------------------------------------------------------ +# Speck Audio Script +#------------------------------------------------------------------ +# + +# +#------------------------------------------------------------------ +# AudioRenderTypes +# +# TransientAudioRenderType = 0 +# SustainedAudioRenderType = 1 +# +#------------------------------------------------------------------ +# AudioSourcePriority +# +# MinAudioSourcePriority = 0 +# LowAudioSourcePriority = 1 +# MedAudioSourcePriority = 2 +# HighAudioSourcePriority = 3 +# MaxAudioSourcePriority = 4 +# +#------------------------------------------------------------------ +# AudioSourceMixPresence +# +# ManualAudioSourceMixPresence = 0 +# MaxAudioSourceMixPresence = 1 +# HighAudioSourceMixPresence = 2 +# MedAudioSourceMixPresence = 3 +# LowAudioSourceMixPresence = 4 +# MinAudioSourceMixPresence = 5 +# +#------------------------------------------------------------------ +# AudioControlID +# +# NullAudioControlID = 0 +# StartAudioControlID = 1 +# StopAudioControlID = 2 +# VolumeAudioControlID = 3 +# PitchAudioControlID = 4 +# BrightnessAudioControlID = 5 +# AttackVolumeAudioControlID = 6 +# AttackTimeAudioControlID = 7 +# AudioControlIDCount = 8 +# + +# +#------------------------------------------------------------------ +# Includes +#------------------------------------------------------------------ +# +[include] +file=audio\vtvint.scp +file=audio\chute.scp + +# +#------------------------------------------------------------------ +# Booster trigger +#------------------------------------------------------------------ +# +[AudioStateTrigger] +subsystem=Booster1 +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster2 +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster1 +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=1 +inverse_trigger=1 +control_ID=2 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster2 +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=1 +inverse_trigger=1 +control_ID=2 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Entity +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=2 +inverse_trigger=0 +control_ID=2 +control_value=0.0 +dump_value=0 + +# Booster Loop +[AudioStateTrigger] +subsystem=Booster1 +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster2 +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster1 +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=1 +inverse_trigger=1 +control_ID=2 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster2 +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=1 +inverse_trigger=1 +control_ID=2 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Entity +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=2 +inverse_trigger=0 +control_ID=2 +control_value=0.0 +dump_value=0 + diff --git a/CONTENT/RP/AUDIO/BROCCOLI.SCP b/CONTENT/RP/AUDIO/BROCCOLI.SCP new file mode 100644 index 0000000..bb47f1c --- /dev/null +++ b/CONTENT/RP/AUDIO/BROCCOLI.SCP @@ -0,0 +1,201 @@ +# +#------------------------------------------------------------------ +# Spitter Audio Script +#------------------------------------------------------------------ +# + +# +#------------------------------------------------------------------ +# AudioRenderTypes +# +# TransientAudioRenderType = 0 +# SustainedAudioRenderType = 1 +# +#------------------------------------------------------------------ +# AudioSourcePriority +# +# MinAudioSourcePriority = 0 +# LowAudioSourcePriority = 1 +# MedAudioSourcePriority = 2 +# HighAudioSourcePriority = 3 +# MaxAudioSourcePriority = 4 +# +#------------------------------------------------------------------ +# AudioSourceMixPresence +# +# ManualAudioSourceMixPresence = 0 +# MaxAudioSourceMixPresence = 1 +# HighAudioSourceMixPresence = 2 +# MedAudioSourceMixPresence = 3 +# LowAudioSourceMixPresence = 4 +# MinAudioSourceMixPresence = 5 +# +#------------------------------------------------------------------ +# AudioControlID +# +# NullAudioControlID = 0 +# StartAudioControlID = 1 +# StopAudioControlID = 2 +# VolumeAudioControlID = 3 +# PitchAudioControlID = 4 +# BrightnessAudioControlID = 5 +# AttackVolumeAudioControlID = 6 +# AttackTimeAudioControlID = 7 +# AudioControlIDCount = 8 +# + +# +#------------------------------------------------------------------ +# Includes +#------------------------------------------------------------------ +# +[include] +file=audio\vtvint.scp +file=audio\chute.scp + +# +#------------------------------------------------------------------ +# Booster trigger +#------------------------------------------------------------------ +# +[AudioStateTrigger] +subsystem=Booster1 +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster2 +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster3 +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster1 +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=1 +inverse_trigger=1 +control_ID=2 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster2 +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=1 +inverse_trigger=1 +control_ID=2 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster3 +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=1 +inverse_trigger=1 +control_ID=2 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Entity +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=2 +inverse_trigger=0 +control_ID=2 +control_value=0.0 +dump_value=0 + +# Booster Loop +[AudioStateTrigger] +subsystem=Booster1 +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster2 +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster3 +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster1 +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=1 +inverse_trigger=1 +control_ID=2 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster2 +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=1 +inverse_trigger=1 +control_ID=2 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster3 +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=1 +inverse_trigger=1 +control_ID=2 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Entity +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=2 +inverse_trigger=0 +control_ID=2 +control_value=0.0 +dump_value=0 + diff --git a/CONTENT/RP/AUDIO/BTLEXT.SCP b/CONTENT/RP/AUDIO/BTLEXT.SCP new file mode 100644 index 0000000..9267762 --- /dev/null +++ b/CONTENT/RP/AUDIO/BTLEXT.SCP @@ -0,0 +1,71 @@ +# +#------------------------------------------------------------------ +# Battle Barge External Audio Script +#------------------------------------------------------------------ +# + +# +#------------------------------------------------------------------ +# AudioRenderTypes +# +# TransientAudioRenderType = 0 +# SustainedAudioRenderType = 1 +# +#------------------------------------------------------------------ +# AudioSourcePriority +# +# MinAudioSourcePriority = 0 +# LowAudioSourcePriority = 1 +# MedAudioSourcePriority = 2 +# HighAudioSourcePriority = 3 +# MaxAudioSourcePriority = 4 +# +#------------------------------------------------------------------ +# AudioSourceMixPresence +# +# ManualAudioSourceMixPresence = 0 +# MaxAudioSourceMixPresence = 1 +# HighAudioSourceMixPresence = 2 +# MedAudioSourceMixPresence = 3 +# LowAudioSourceMixPresence = 4 +# MinAudioSourceMixPresence = 5 +# +#------------------------------------------------------------------ +# AudioControlID +# +# NullAudioControlID = 0 +# StartAudioControlID = 1 +# StopAudioControlID = 2 +# VolumeAudioControlID = 3 +# PitchAudioControlID = 4 +# BrightnessAudioControlID = 5 +# AttackVolumeAudioControlID = 6 +# AttackTimeAudioControlID = 7 +# AudioControlIDCount = 8 +# + +# +#------------------------------------------------------------------ +# Includes +#------------------------------------------------------------------ +# +[include] +file=audio\vtvext.scp +file=audio\lsrext.scp + +# +#------------------------------------------------------------------ +# Laser trigger +#------------------------------------------------------------------ +# +[AudioStateTrigger] +subsystem=LaserGun +attribute=SimulationState +audio_component=LaserFireExtComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=1.0 +dump_value=0 + + diff --git a/CONTENT/RP/AUDIO/BTTLBRG.SCP b/CONTENT/RP/AUDIO/BTTLBRG.SCP new file mode 100644 index 0000000..30e8d74 --- /dev/null +++ b/CONTENT/RP/AUDIO/BTTLBRG.SCP @@ -0,0 +1,203 @@ +# +#------------------------------------------------------------------ +# Battle Barge Audio Script +#------------------------------------------------------------------ +# + +# +#------------------------------------------------------------------ +# AudioRenderTypes +# +# TransientAudioRenderType = 0 +# SustainedAudioRenderType = 1 +# +#------------------------------------------------------------------ +# AudioSourcePriority +# +# MinAudioSourcePriority = 0 +# LowAudioSourcePriority = 1 +# MedAudioSourcePriority = 2 +# HighAudioSourcePriority = 3 +# MaxAudioSourcePriority = 4 +# +#------------------------------------------------------------------ +# AudioSourceMixPresence +# +# ManualAudioSourceMixPresence = 0 +# MaxAudioSourceMixPresence = 1 +# HighAudioSourceMixPresence = 2 +# MedAudioSourceMixPresence = 3 +# LowAudioSourceMixPresence = 4 +# MinAudioSourceMixPresence = 5 +# +#------------------------------------------------------------------ +# AudioControlID +# +# NullAudioControlID = 0 +# StartAudioControlID = 1 +# StopAudioControlID = 2 +# VolumeAudioControlID = 3 +# PitchAudioControlID = 4 +# BrightnessAudioControlID = 5 +# AttackVolumeAudioControlID = 6 +# AttackTimeAudioControlID = 7 +# AudioControlIDCount = 8 +# + +# +#------------------------------------------------------------------ +# Includes +#------------------------------------------------------------------ +# +[include] +file=audio\vtvint.scp +file=audio\vtvlsr.scp +file=audio\vtvmne.scp +file=audio\chute.scp + +# +#------------------------------------------------------------------ +# Booster trigger +#------------------------------------------------------------------ +# +[AudioStateTrigger] +subsystem=Booster1 +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster2 +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster1 +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=1 +inverse_trigger=1 +control_ID=2 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster2 +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=1 +inverse_trigger=1 +control_ID=2 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Entity +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=2 +inverse_trigger=0 +control_ID=2 +control_value=0.0 +dump_value=0 + +# Booster Loop +[AudioStateTrigger] +subsystem=Booster1 +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster2 +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster1 +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=1 +inverse_trigger=1 +control_ID=2 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster2 +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=1 +inverse_trigger=1 +control_ID=2 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Entity +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=2 +inverse_trigger=0 +control_ID=2 +control_value=0.0 +dump_value=0 + +# +#------------------------------------------------------------------ +# Laser trigger +#------------------------------------------------------------------ +# +[AudioStateTrigger] +subsystem=LaserGun +attribute=SimulationState +audio_component=LaserFireIntComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=2.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=LaserGun +attribute=SimulationState +audio_component=LaserFireIntEmptyComponent +trigger_state=3 +inverse_trigger=0 +control_ID=1 +control_value=0.5 +dump_value=0 + +# +#------------------------------------------------------------------ +# Mine trigger +#------------------------------------------------------------------ +# +[AudioStateTrigger] +subsystem=DemopackDropper +attribute=SimulationState +audio_component=MineReleaseComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=1.0 +dump_value=0 + diff --git a/CONTENT/RP/AUDIO/BUG.SCP b/CONTENT/RP/AUDIO/BUG.SCP new file mode 100644 index 0000000..0de431a --- /dev/null +++ b/CONTENT/RP/AUDIO/BUG.SCP @@ -0,0 +1,161 @@ +# +#------------------------------------------------------------------ +# Spitter Audio Script +#------------------------------------------------------------------ +# + +# +#------------------------------------------------------------------ +# AudioRenderTypes +# +# TransientAudioRenderType = 0 +# SustainedAudioRenderType = 1 +# +#------------------------------------------------------------------ +# AudioSourcePriority +# +# MinAudioSourcePriority = 0 +# LowAudioSourcePriority = 1 +# MedAudioSourcePriority = 2 +# HighAudioSourcePriority = 3 +# MaxAudioSourcePriority = 4 +# +#------------------------------------------------------------------ +# AudioSourceMixPresence +# +# ManualAudioSourceMixPresence = 0 +# MaxAudioSourceMixPresence = 1 +# HighAudioSourceMixPresence = 2 +# MedAudioSourceMixPresence = 3 +# LowAudioSourceMixPresence = 4 +# MinAudioSourceMixPresence = 5 +# +#------------------------------------------------------------------ +# AudioControlID +# +# NullAudioControlID = 0 +# StartAudioControlID = 1 +# StopAudioControlID = 2 +# VolumeAudioControlID = 3 +# PitchAudioControlID = 4 +# BrightnessAudioControlID = 5 +# AttackVolumeAudioControlID = 6 +# AttackTimeAudioControlID = 7 +# AudioControlIDCount = 8 +# + +# +#------------------------------------------------------------------ +# Includes +#------------------------------------------------------------------ +# +[include] +file=audio\vtvint.scp +file=audio\chute.scp + +# +#------------------------------------------------------------------ +# Booster trigger +#------------------------------------------------------------------ +# +[AudioStateTrigger] +subsystem=Booster1 +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster2 +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster1 +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=1 +inverse_trigger=1 +control_ID=2 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster2 +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=1 +inverse_trigger=1 +control_ID=2 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Entity +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=2 +inverse_trigger=0 +control_ID=2 +control_value=0.0 +dump_value=0 + +# Booster Loop +[AudioStateTrigger] +subsystem=Booster1 +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster2 +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster1 +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=1 +inverse_trigger=1 +control_ID=2 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster2 +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=1 +inverse_trigger=1 +control_ID=2 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Entity +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=2 +inverse_trigger=0 +control_ID=2 +control_value=0.0 +dump_value=0 + diff --git a/CONTENT/RP/AUDIO/BURRO.SCP b/CONTENT/RP/AUDIO/BURRO.SCP new file mode 100644 index 0000000..7e314cb --- /dev/null +++ b/CONTENT/RP/AUDIO/BURRO.SCP @@ -0,0 +1,136 @@ +# +#------------------------------------------------------------------ +# Grunt Audio Script +#------------------------------------------------------------------ +# + +# +#------------------------------------------------------------------ +# AudioRenderTypes +# +# TransientAudioRenderType = 0 +# SustainedAudioRenderType = 1 +# +#------------------------------------------------------------------ +# AudioSourcePriority +# +# MinAudioSourcePriority = 0 +# LowAudioSourcePriority = 1 +# MedAudioSourcePriority = 2 +# HighAudioSourcePriority = 3 +# MaxAudioSourcePriority = 4 +# +#------------------------------------------------------------------ +# AudioSourceMixPresence +# +# ManualAudioSourceMixPresence = 0 +# MaxAudioSourceMixPresence = 1 +# HighAudioSourceMixPresence = 2 +# MedAudioSourceMixPresence = 3 +# LowAudioSourceMixPresence = 4 +# MinAudioSourceMixPresence = 5 +# +#------------------------------------------------------------------ +# AudioControlID +# +# NullAudioControlID = 0 +# StartAudioControlID = 1 +# StopAudioControlID = 2 +# VolumeAudioControlID = 3 +# PitchAudioControlID = 4 +# BrightnessAudioControlID = 5 +# AttackVolumeAudioControlID = 6 +# AttackTimeAudioControlID = 7 +# AudioControlIDCount = 8 +# + +# +#------------------------------------------------------------------ +# Includes +#------------------------------------------------------------------ +# +[include] +file=audio\vtvint.scp +#file=audio\vtvrvt.scp +file=audio\chute.scp + +# +#------------------------------------------------------------------ +# Booster trigger +#------------------------------------------------------------------ +# +[AudioStateTrigger] +subsystem=Booster1 +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster1 +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=1 +inverse_trigger=1 +control_ID=2 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Entity +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=2 +inverse_trigger=0 +control_ID=2 +control_value=0.0 +dump_value=0 + +# Booster Loop +[AudioStateTrigger] +subsystem=Booster1 +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster1 +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=1 +inverse_trigger=1 +control_ID=2 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Entity +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=2 +inverse_trigger=0 +control_ID=2 +control_value=0.0 +dump_value=0 + +# +#------------------------------------------------------------------ +# Rivet trigger +#------------------------------------------------------------------ +# +[!AudioStateTrigger] +subsystem=RivetGun +attribute=SimulationState +audio_component=RivetFireCenterComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=0.5 +dump_value=0 diff --git a/CONTENT/RP/AUDIO/CHIGGER.SCP b/CONTENT/RP/AUDIO/CHIGGER.SCP new file mode 100644 index 0000000..8ee69dc --- /dev/null +++ b/CONTENT/RP/AUDIO/CHIGGER.SCP @@ -0,0 +1,177 @@ +# +#------------------------------------------------------------------ +# Spitter Audio Script +#------------------------------------------------------------------ +# + +# +#------------------------------------------------------------------ +# AudioRenderTypes +# +# TransientAudioRenderType = 0 +# SustainedAudioRenderType = 1 +# +#------------------------------------------------------------------ +# AudioSourcePriority +# +# MinAudioSourcePriority = 0 +# LowAudioSourcePriority = 1 +# MedAudioSourcePriority = 2 +# HighAudioSourcePriority = 3 +# MaxAudioSourcePriority = 4 +# +#------------------------------------------------------------------ +# AudioSourceMixPresence +# +# ManualAudioSourceMixPresence = 0 +# MaxAudioSourceMixPresence = 1 +# HighAudioSourceMixPresence = 2 +# MedAudioSourceMixPresence = 3 +# LowAudioSourceMixPresence = 4 +# MinAudioSourceMixPresence = 5 +# +#------------------------------------------------------------------ +# AudioControlID +# +# NullAudioControlID = 0 +# StartAudioControlID = 1 +# StopAudioControlID = 2 +# VolumeAudioControlID = 3 +# PitchAudioControlID = 4 +# BrightnessAudioControlID = 5 +# AttackVolumeAudioControlID = 6 +# AttackTimeAudioControlID = 7 +# AudioControlIDCount = 8 +# + +# +#------------------------------------------------------------------ +# Includes +#------------------------------------------------------------------ +# +[include] +file=audio\vtvint.scp +file=audio\vtvrvt.scp +file=audio\chute.scp + +# +#------------------------------------------------------------------ +# Booster trigger +#------------------------------------------------------------------ +# +[AudioStateTrigger] +subsystem=Booster1 +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster2 +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster1 +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=1 +inverse_trigger=1 +control_ID=2 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster2 +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=1 +inverse_trigger=1 +control_ID=2 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Entity +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=2 +inverse_trigger=0 +control_ID=2 +control_value=0.0 +dump_value=0 + +# Booster Loop +[AudioStateTrigger] +subsystem=Booster1 +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster2 +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster1 +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=1 +inverse_trigger=1 +control_ID=2 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster2 +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=1 +inverse_trigger=1 +control_ID=2 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Entity +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=2 +inverse_trigger=0 +control_ID=2 +control_value=0.0 +dump_value=0 + +# +#------------------------------------------------------------------ +# Rivet trigger +#------------------------------------------------------------------ +# +[AudioStateTrigger] +subsystem=RivetGun +attribute=SimulationState +audio_component=RivetFireCenterComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=0.5 +dump_value=0 + diff --git a/CONTENT/RP/AUDIO/CHUTE.SCP b/CONTENT/RP/AUDIO/CHUTE.SCP new file mode 100644 index 0000000..3da50e1 --- /dev/null +++ b/CONTENT/RP/AUDIO/CHUTE.SCP @@ -0,0 +1,79 @@ +# +#------------------------------------------------------------------ +# Chute Audio Script +#------------------------------------------------------------------ +# + +# +#------------------------------------------------------------------ +# AudioRenderTypes +# +# TransientAudioRenderType = 0 +# SustainedAudioRenderType = 1 +# +#------------------------------------------------------------------ +# AudioSourcePriority +# +# MinAudioSourcePriority = 0 +# LowAudioSourcePriority = 1 +# MedAudioSourcePriority = 2 +# HighAudioSourcePriority = 3 +# MaxAudioSourcePriority = 4 +# +#------------------------------------------------------------------ +# AudioSourceMixPresence +# +# ManualAudioSourceMixPresence = 0 +# MaxAudioSourceMixPresence = 1 +# HighAudioSourceMixPresence = 2 +# MedAudioSourceMixPresence = 3 +# LowAudioSourceMixPresence = 4 +# MinAudioSourceMixPresence = 5 +# +#------------------------------------------------------------------ +# AudioControlID +# +# NullAudioControlID = 0 +# StartAudioControlID = 1 +# StopAudioControlID = 2 +# VolumeAudioControlID = 3 +# PitchAudioControlID = 4 +# BrightnessAudioControlID = 5 +# AttackVolumeAudioControlID = 6 +# AttackTimeAudioControlID = 7 +# AudioControlIDCount = 8 +# + +# +# Chute component +# +[DirectPatchSource] +location=OriginLocation +resource=Chute01 +position=1 +priority=3 +mix_presence=2 +volume_mix_level=1.0 +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=0 +use_attack_time_scale=0 +has_compression_curve=1 +compression_duration=0.5 +name=ChuteComponent + +# +#------------------------------------------------------------------ +# Chute trigger +#------------------------------------------------------------------ +# +[AudioStateTrigger] +subsystem=Chute +attribute=SimulationState +audio_component=ChuteComponent +trigger_state=2 +inverse_trigger=0 +control_ID=1 +control_value=3.0 +dump_value=0 + diff --git a/CONTENT/RP/AUDIO/COLTWR1.SCP b/CONTENT/RP/AUDIO/COLTWR1.SCP new file mode 100644 index 0000000..8c93b50 --- /dev/null +++ b/CONTENT/RP/AUDIO/COLTWR1.SCP @@ -0,0 +1,97 @@ +# +#------------------------------------------------------------------ +# Cooling Tower Audio Script +#------------------------------------------------------------------ +# + +# +#------------------------------------------------------------------ +# AudioRenderTypes +# +# TransientAudioRenderType = 0 +# SustainedAudioRenderType = 1 +# +#------------------------------------------------------------------ +# AudioSourcePriority +# +# MinAudioSourcePriority = 0 +# LowAudioSourcePriority = 1 +# MedAudioSourcePriority = 2 +# HighAudioSourcePriority = 3 +# MaxAudioSourcePriority = 4 +# +#------------------------------------------------------------------ +# AudioSourceMixPresence +# +# ManualAudioSourceMixPresence = 0 +# MaxAudioSourceMixPresence = 1 +# HighAudioSourceMixPresence = 2 +# MedAudioSourceMixPresence = 3 +# LowAudioSourceMixPresence = 4 +# MinAudioSourceMixPresence = 5 +# +#------------------------------------------------------------------ +# AudioControlID +# +# NullAudioControlID = 0 +# StartAudioControlID = 1 +# StopAudioControlID = 2 +# VolumeAudioControlID = 3 +# PitchAudioControlID = 4 +# BrightnessAudioControlID = 5 +# AttackVolumeAudioControlID = 6 +# AttackTimeAudioControlID = 7 +# AudioControlIDCount = 8 +# + +# +#------------------------------------------------------------------ +# Audio locations +#------------------------------------------------------------------ +# +[L4AudioLocation] +location_offset=0.0,34.50,1.50 +name=Location01 + +# +#------------------------------------------------------------------ +# Audio source components +#------------------------------------------------------------------ +# + +# +# Flame Machine component +# +[Dynamic3DPatchSource] +location=Location01 +resource=FlameMachine01 +priority=1 +mix_presence=3 +volume_mix_level=0.5 +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=0 +use_attack_time_scale=0 +has_compression_curve=0 +compression_duration=0.0 +name=FlameMachineComponent + +# +#------------------------------------------------------------------ +# Non-trigger watchers +#------------------------------------------------------------------ +# + +# +#------------------------------------------------------------------ +# Trigger watchers +#------------------------------------------------------------------ +# + +# +# Flame Machine : Start control +# +[AudioControlSend] +audio_component=FlameMachineComponent +control_ID=1 +control_value=0.0 diff --git a/CONTENT/RP/AUDIO/CTMIX.CFG b/CONTENT/RP/AUDIO/CTMIX.CFG new file mode 100644 index 0000000..22ed385 --- /dev/null +++ b/CONTENT/RP/AUDIO/CTMIX.CFG @@ -0,0 +1,15 @@ +/MA:229;0 +/VO:0;0 +/MI:229;0 +/CD:0;0 +/LI:0;0 +/MIC:0 +/SP:0 +/TR:114;0 +/BA:114;0 +/IPL:MIC- CDR- CDL- LIR- LIL- MIR- MIL- +/IPR:MIC- CDR- CDL- LIR- LIL- MIR- MIL- +/OPS:MIC- CDR- CDL- LIR- LIL- +/AGC:- +/IPG:1,1 +/OPG:1,1 diff --git a/CONTENT/RP/AUDIO/DARK.SCP b/CONTENT/RP/AUDIO/DARK.SCP new file mode 100644 index 0000000..75b50e5 --- /dev/null +++ b/CONTENT/RP/AUDIO/DARK.SCP @@ -0,0 +1,146 @@ +# +#------------------------------------------------------------------ +# Puck Audio Script +#------------------------------------------------------------------ +# + +# +#------------------------------------------------------------------ +# AudioRenderTypes +# +# TransientAudioRenderType = 0 +# SustainedAudioRenderType = 1 +# +#------------------------------------------------------------------ +# AudioSourcePriority +# +# MinAudioSourcePriority = 0 +# LowAudioSourcePriority = 1 +# MedAudioSourcePriority = 2 +# HighAudioSourcePriority = 3 +# MaxAudioSourcePriority = 4 +# +#------------------------------------------------------------------ +# AudioSourceMixPresence +# +# ManualAudioSourceMixPresence = 0 +# MaxAudioSourceMixPresence = 1 +# HighAudioSourceMixPresence = 2 +# MedAudioSourceMixPresence = 3 +# LowAudioSourceMixPresence = 4 +# MinAudioSourceMixPresence = 5 +# +#------------------------------------------------------------------ +# AudioControlID +# +# NullAudioControlID = 0 +# StartAudioControlID = 1 +# StopAudioControlID = 2 +# VolumeAudioControlID = 3 +# PitchAudioControlID = 4 +# BrightnessAudioControlID = 5 +# AttackVolumeAudioControlID = 6 +# AttackTimeAudioControlID = 7 +# AudioControlIDCount = 8 +# + +# +#------------------------------------------------------------------ +# Includes +#------------------------------------------------------------------ +# +[include] +file=audio\vtvint.scp +file=audio\vtvlsr.scp + +# +#------------------------------------------------------------------ +# Booster trigger +#------------------------------------------------------------------ +# +[AudioStateTrigger] +subsystem=Booster1 +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster1 +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=1 +inverse_trigger=1 +control_ID=2 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Entity +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=2 +inverse_trigger=0 +control_ID=2 +control_value=0.0 +dump_value=0 + +# Booster Loop +[AudioStateTrigger] +subsystem=Booster1 +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster1 +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=1 +inverse_trigger=1 +control_ID=2 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Entity +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=2 +inverse_trigger=0 +control_ID=2 +control_value=0.0 +dump_value=0 + +# +#------------------------------------------------------------------ +# Laser trigger +#------------------------------------------------------------------ +# +[AudioStateTrigger] +subsystem=LaserGun2 +attribute=SimulationState +audio_component=LaserFireIntComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=2.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=LaserGun2 +attribute=SimulationState +audio_component=LaserFireIntEmptyComponent +trigger_state=3 +inverse_trigger=0 +control_ID=1 +control_value=0.5 +dump_value=0 + diff --git a/CONTENT/RP/AUDIO/DARKEXT.SCP b/CONTENT/RP/AUDIO/DARKEXT.SCP new file mode 100644 index 0000000..93fbaca --- /dev/null +++ b/CONTENT/RP/AUDIO/DARKEXT.SCP @@ -0,0 +1,71 @@ +# +#------------------------------------------------------------------ +# Puck External Audio Script +#------------------------------------------------------------------ +# + +# +#------------------------------------------------------------------ +# AudioRenderTypes +# +# TransientAudioRenderType = 0 +# SustainedAudioRenderType = 1 +# +#------------------------------------------------------------------ +# AudioSourcePriority +# +# MinAudioSourcePriority = 0 +# LowAudioSourcePriority = 1 +# MedAudioSourcePriority = 2 +# HighAudioSourcePriority = 3 +# MaxAudioSourcePriority = 4 +# +#------------------------------------------------------------------ +# AudioSourceMixPresence +# +# ManualAudioSourceMixPresence = 0 +# MaxAudioSourceMixPresence = 1 +# HighAudioSourceMixPresence = 2 +# MedAudioSourceMixPresence = 3 +# LowAudioSourceMixPresence = 4 +# MinAudioSourceMixPresence = 5 +# +#------------------------------------------------------------------ +# AudioControlID +# +# NullAudioControlID = 0 +# StartAudioControlID = 1 +# StopAudioControlID = 2 +# VolumeAudioControlID = 3 +# PitchAudioControlID = 4 +# BrightnessAudioControlID = 5 +# AttackVolumeAudioControlID = 6 +# AttackTimeAudioControlID = 7 +# AudioControlIDCount = 8 +# + +# +#------------------------------------------------------------------ +# Includes +#------------------------------------------------------------------ +# +[include] +file=audio\vtvext.scp +file=audio\lsrext.scp + +# +#------------------------------------------------------------------ +# Laser trigger +#------------------------------------------------------------------ +# +[AudioStateTrigger] +subsystem=LaserGun2 +attribute=SimulationState +audio_component=LaserFireExtComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=1.0 +dump_value=0 + + diff --git a/CONTENT/RP/AUDIO/DEMOPACK.SCP b/CONTENT/RP/AUDIO/DEMOPACK.SCP new file mode 100644 index 0000000..cbe3698 --- /dev/null +++ b/CONTENT/RP/AUDIO/DEMOPACK.SCP @@ -0,0 +1,97 @@ +# +#------------------------------------------------------------------ +# Mine Audio Script +#------------------------------------------------------------------ +# + +# +#------------------------------------------------------------------ +# AudioRenderTypes +# +# TransientAudioRenderType = 0 +# SustainedAudioRenderType = 1 +# +#------------------------------------------------------------------ +# AudioSourcePriority +# +# MinAudioSourcePriority = 0 +# LowAudioSourcePriority = 1 +# MedAudioSourcePriority = 2 +# HighAudioSourcePriority = 3 +# MaxAudioSourcePriority = 4 +# +#------------------------------------------------------------------ +# AudioSourceMixPresence +# +# ManualAudioSourceMixPresence = 0 +# MaxAudioSourceMixPresence = 1 +# HighAudioSourceMixPresence = 2 +# MedAudioSourceMixPresence = 3 +# LowAudioSourceMixPresence = 4 +# MinAudioSourceMixPresence = 5 +# +#------------------------------------------------------------------ +# AudioControlID +# +# NullAudioControlID = 0 +# StartAudioControlID = 1 +# StopAudioControlID = 2 +# VolumeAudioControlID = 3 +# PitchAudioControlID = 4 +# BrightnessAudioControlID = 5 +# AttackVolumeAudioControlID = 6 +# AttackTimeAudioControlID = 7 +# AudioControlIDCount = 8 +# + +# +#------------------------------------------------------------------ +# Audio locations +#------------------------------------------------------------------ +# +[L4AudioLocation] +location_offset=0.0,0.0,0.0 +name=OriginLocation + +# +#------------------------------------------------------------------ +# Audio source components +#------------------------------------------------------------------ +# + +# +# Mine component +# +[Dynamic3DPatchSource] +location=OriginLocation +resource=MineCoast01 +priority=1 +mix_presence=0 +volume_mix_level=0.85 +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=0 +use_attack_time_scale=0 +has_compression_curve=0 +compression_duration=0.0 +name=MineComponent + +# +#------------------------------------------------------------------ +# Non-trigger watchers +#------------------------------------------------------------------ +# + +# +#------------------------------------------------------------------ +# Trigger watchers +#------------------------------------------------------------------ +# + +# +# Mine : Start control +# +[AudioControlSend] +audio_component=MineComponent +control_ID=1 +control_value=0.0 diff --git a/CONTENT/RP/AUDIO/DPEXP.SCP b/CONTENT/RP/AUDIO/DPEXP.SCP new file mode 100644 index 0000000..170f654 --- /dev/null +++ b/CONTENT/RP/AUDIO/DPEXP.SCP @@ -0,0 +1,123 @@ +# +#------------------------------------------------------------------ +# Demopack Explode Audio Script +#------------------------------------------------------------------ +# + +# +#------------------------------------------------------------------ +# AudioRenderTypes +# +# TransientAudioRenderType = 0 +# SustainedAudioRenderType = 1 +# +#------------------------------------------------------------------ +# AudioSourcePriority +# +# MinAudioSourcePriority = 0 +# LowAudioSourcePriority = 1 +# MedAudioSourcePriority = 2 +# HighAudioSourcePriority = 3 +# MaxAudioSourcePriority = 4 +# +#------------------------------------------------------------------ +# AudioSourceMixPresence +# +# ManualAudioSourceMixPresence = 0 +# MaxAudioSourceMixPresence = 1 +# HighAudioSourceMixPresence = 2 +# MedAudioSourceMixPresence = 3 +# LowAudioSourceMixPresence = 4 +# MinAudioSourceMixPresence = 5 +# +#------------------------------------------------------------------ +# AudioControlID +# +# NullAudioControlID = 0 +# StartAudioControlID = 1 +# StopAudioControlID = 2 +# VolumeAudioControlID = 3 +# PitchAudioControlID = 4 +# BrightnessAudioControlID = 5 +# AttackVolumeAudioControlID = 6 +# AttackTimeAudioControlID = 7 +# AudioControlIDCount = 8 +# + +# +#------------------------------------------------------------------ +# Audio locations +#------------------------------------------------------------------ +# + +[L4AudioLocation] +location_offset=0.0,0.0,0.0 +name=OriginLocation + +# +#------------------------------------------------------------------ +# Audio source components +#------------------------------------------------------------------ +# + +# +# Mine Explode component +# + +[Dynamic3DPatchSource] +location=OriginLocation +resource=MineExplode01 +priority=1 +mix_presence=2 +volume_mix_level=0.9 +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=0 +use_attack_time_scale=0 +has_compression_curve=1 +compression_duration=0.5 +name=MineExplodeComponent + +# +#------------------------------------------------------------------ +# Non-trigger watchers +#------------------------------------------------------------------ +# + +#------------------------------------------------------------------ + +# +# Mine Explode : resource select +# + +[!AudioResourceSelector] +audio_source=RivetExplodeComponent +audio_resource_index=RivetExplodeIndex +control_ID=100 +min_control_value=0.0 +max_control_value=1.0 +dump_value=0 +name=RivetExplodeResourceSelect + +# +# Mine Explode : sample and hold -> resource select +# + +[!AudioSampleAndHold] +audio_component=RivetExplodeResourceSelect + +# +#------------------------------------------------------------------ +# Trigger watchers +#------------------------------------------------------------------ +# + +# +# Mine Explode : Start control +# + +[AudioControlSend] +audio_component=MineExplodeComponent +control_ID=1 +control_value=3.0 + diff --git a/CONTENT/RP/AUDIO/DRAGON.SCP b/CONTENT/RP/AUDIO/DRAGON.SCP new file mode 100644 index 0000000..5ec52cc --- /dev/null +++ b/CONTENT/RP/AUDIO/DRAGON.SCP @@ -0,0 +1,186 @@ +# +#------------------------------------------------------------------ +# Spitter Audio Script +#------------------------------------------------------------------ +# + +# +#------------------------------------------------------------------ +# AudioRenderTypes +# +# TransientAudioRenderType = 0 +# SustainedAudioRenderType = 1 +# +#------------------------------------------------------------------ +# AudioSourcePriority +# +# MinAudioSourcePriority = 0 +# LowAudioSourcePriority = 1 +# MedAudioSourcePriority = 2 +# HighAudioSourcePriority = 3 +# MaxAudioSourcePriority = 4 +# +#------------------------------------------------------------------ +# AudioSourceMixPresence +# +# ManualAudioSourceMixPresence = 0 +# MaxAudioSourceMixPresence = 1 +# HighAudioSourceMixPresence = 2 +# MedAudioSourceMixPresence = 3 +# LowAudioSourceMixPresence = 4 +# MinAudioSourceMixPresence = 5 +# +#------------------------------------------------------------------ +# AudioControlID +# +# NullAudioControlID = 0 +# StartAudioControlID = 1 +# StopAudioControlID = 2 +# VolumeAudioControlID = 3 +# PitchAudioControlID = 4 +# BrightnessAudioControlID = 5 +# AttackVolumeAudioControlID = 6 +# AttackTimeAudioControlID = 7 +# AudioControlIDCount = 8 +# + +# +#------------------------------------------------------------------ +# Includes +#------------------------------------------------------------------ +# +[include] +file=audio\vtvint.scp +file=audio\vtvrvt.scp +file=audio\chute.scp + +# +#------------------------------------------------------------------ +# Booster trigger +#------------------------------------------------------------------ +# +[AudioStateTrigger] +subsystem=Booster1 +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster2 +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster1 +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=1 +inverse_trigger=1 +control_ID=2 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster2 +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=1 +inverse_trigger=1 +control_ID=2 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Entity +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=2 +inverse_trigger=0 +control_ID=2 +control_value=0.0 +dump_value=0 + +# Booster Loop +[AudioStateTrigger] +subsystem=Booster1 +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster2 +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster1 +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=1 +inverse_trigger=1 +control_ID=2 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster2 +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=1 +inverse_trigger=1 +control_ID=2 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Entity +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=2 +inverse_trigger=0 +control_ID=2 +control_value=0.0 +dump_value=0 + +# +#------------------------------------------------------------------ +# Rivet trigger +#------------------------------------------------------------------ +# +[AudioStateTrigger] +subsystem=RivetGun1 +attribute=SimulationState +audio_component=RivetFireLeftComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=0.5 +dump_value=0 + +[AudioStateTrigger] +subsystem=RivetGun2 +attribute=SimulationState +audio_component=RivetFireRightComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=0.5 +dump_value=0 diff --git a/CONTENT/RP/AUDIO/FULTNK1.SCP b/CONTENT/RP/AUDIO/FULTNK1.SCP new file mode 100644 index 0000000..880fa6f --- /dev/null +++ b/CONTENT/RP/AUDIO/FULTNK1.SCP @@ -0,0 +1,97 @@ +# +#------------------------------------------------------------------ +# Fuel Tank Audio Script +#------------------------------------------------------------------ +# + +# +#------------------------------------------------------------------ +# AudioRenderTypes +# +# TransientAudioRenderType = 0 +# SustainedAudioRenderType = 1 +# +#------------------------------------------------------------------ +# AudioSourcePriority +# +# MinAudioSourcePriority = 0 +# LowAudioSourcePriority = 1 +# MedAudioSourcePriority = 2 +# HighAudioSourcePriority = 3 +# MaxAudioSourcePriority = 4 +# +#------------------------------------------------------------------ +# AudioSourceMixPresence +# +# ManualAudioSourceMixPresence = 0 +# MaxAudioSourceMixPresence = 1 +# HighAudioSourceMixPresence = 2 +# MedAudioSourceMixPresence = 3 +# LowAudioSourceMixPresence = 4 +# MinAudioSourceMixPresence = 5 +# +#------------------------------------------------------------------ +# AudioControlID +# +# NullAudioControlID = 0 +# StartAudioControlID = 1 +# StopAudioControlID = 2 +# VolumeAudioControlID = 3 +# PitchAudioControlID = 4 +# BrightnessAudioControlID = 5 +# AttackVolumeAudioControlID = 6 +# AttackTimeAudioControlID = 7 +# AudioControlIDCount = 8 +# + +# +#------------------------------------------------------------------ +# Audio locations +#------------------------------------------------------------------ +# +[L4AudioLocation] +location_offset=0.0,0.0,0.0 +name=OriginLocation + +# +#------------------------------------------------------------------ +# Audio source components +#------------------------------------------------------------------ +# + +# +# Fuel Tank component +# +[Dynamic3DPatchSource] +location=OriginLocation +resource=FuelTank01 +priority=1 +mix_presence=3 +volume_mix_level=0.75 +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=0 +use_attack_time_scale=0 +has_compression_curve=0 +compression_duration=0.0 +name=FuelTankComponent + +# +#------------------------------------------------------------------ +# Non-trigger watchers +#------------------------------------------------------------------ +# + +# +#------------------------------------------------------------------ +# Trigger watchers +#------------------------------------------------------------------ +# + +# +# Fuel Tank : Start control +# +[AudioControlSend] +audio_component=FuelTankComponent +control_ID=1 +control_value=0.0 diff --git a/CONTENT/RP/AUDIO/GATOR.SCP b/CONTENT/RP/AUDIO/GATOR.SCP new file mode 100644 index 0000000..9288884 --- /dev/null +++ b/CONTENT/RP/AUDIO/GATOR.SCP @@ -0,0 +1,193 @@ +# +#------------------------------------------------------------------ +# Gator Audio Script +#------------------------------------------------------------------ +# + +# +#------------------------------------------------------------------ +# AudioRenderTypes +# +# TransientAudioRenderType = 0 +# SustainedAudioRenderType = 1 +# +#------------------------------------------------------------------ +# AudioSourcePriority +# +# MinAudioSourcePriority = 0 +# LowAudioSourcePriority = 1 +# MedAudioSourcePriority = 2 +# HighAudioSourcePriority = 3 +# MaxAudioSourcePriority = 4 +# +#------------------------------------------------------------------ +# AudioSourceMixPresence +# +# ManualAudioSourceMixPresence = 0 +# MaxAudioSourceMixPresence = 1 +# HighAudioSourceMixPresence = 2 +# MedAudioSourceMixPresence = 3 +# LowAudioSourceMixPresence = 4 +# MinAudioSourceMixPresence = 5 +# +#------------------------------------------------------------------ +# AudioControlID +# +# NullAudioControlID = 0 +# StartAudioControlID = 1 +# StopAudioControlID = 2 +# VolumeAudioControlID = 3 +# PitchAudioControlID = 4 +# BrightnessAudioControlID = 5 +# AttackVolumeAudioControlID = 6 +# AttackTimeAudioControlID = 7 +# AudioControlIDCount = 8 +# + +# +#------------------------------------------------------------------ +# Includes +#------------------------------------------------------------------ +# +[include] +file=audio\vtvint.scp +file=audio\vtvrvt.scp +file=audio\vtvmne.scp +file=audio\chute.scp + +# +#------------------------------------------------------------------ +# Booster trigger +#------------------------------------------------------------------ +# +[AudioStateTrigger] +subsystem=Booster1 +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster2 +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster1 +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=1 +inverse_trigger=1 +control_ID=2 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster2 +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=1 +inverse_trigger=1 +control_ID=2 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Entity +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=2 +inverse_trigger=0 +control_ID=2 +control_value=0.0 +dump_value=0 + +# Booster Loop +[AudioStateTrigger] +subsystem=Booster1 +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster2 +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster1 +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=1 +inverse_trigger=1 +control_ID=2 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster2 +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=1 +inverse_trigger=1 +control_ID=2 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Entity +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=2 +inverse_trigger=0 +control_ID=2 +control_value=0.0 +dump_value=0 + +# +#------------------------------------------------------------------ +# Rivet trigger +#------------------------------------------------------------------ +# +[AudioStateTrigger] +subsystem=RivetGun +attribute=SimulationState +audio_component=RivetFireCenterComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=0.5 +dump_value=0 + +# +#------------------------------------------------------------------ +# Mine trigger +#------------------------------------------------------------------ +# +[AudioStateTrigger] +subsystem=DemopackDropper +attribute=SimulationState +audio_component=MineReleaseComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=1.0 +dump_value=0 + diff --git a/CONTENT/RP/AUDIO/GRUNT.SCP b/CONTENT/RP/AUDIO/GRUNT.SCP new file mode 100644 index 0000000..d0f97c4 --- /dev/null +++ b/CONTENT/RP/AUDIO/GRUNT.SCP @@ -0,0 +1,176 @@ +# +#------------------------------------------------------------------ +# Grunt Audio Script +#------------------------------------------------------------------ +# + +# +#------------------------------------------------------------------ +# AudioRenderTypes +# +# TransientAudioRenderType = 0 +# SustainedAudioRenderType = 1 +# +#------------------------------------------------------------------ +# AudioSourcePriority +# +# MinAudioSourcePriority = 0 +# LowAudioSourcePriority = 1 +# MedAudioSourcePriority = 2 +# HighAudioSourcePriority = 3 +# MaxAudioSourcePriority = 4 +# +#------------------------------------------------------------------ +# AudioSourceMixPresence +# +# ManualAudioSourceMixPresence = 0 +# MaxAudioSourceMixPresence = 1 +# HighAudioSourceMixPresence = 2 +# MedAudioSourceMixPresence = 3 +# LowAudioSourceMixPresence = 4 +# MinAudioSourceMixPresence = 5 +# +#------------------------------------------------------------------ +# AudioControlID +# +# NullAudioControlID = 0 +# StartAudioControlID = 1 +# StopAudioControlID = 2 +# VolumeAudioControlID = 3 +# PitchAudioControlID = 4 +# BrightnessAudioControlID = 5 +# AttackVolumeAudioControlID = 6 +# AttackTimeAudioControlID = 7 +# AudioControlIDCount = 8 +# + +# +#------------------------------------------------------------------ +# Includes +#------------------------------------------------------------------ +# +[include] +file=audio\vtvint.scp +file=audio\vtvrvt.scp +file=audio\chute.scp + +# +#------------------------------------------------------------------ +# Booster trigger +#------------------------------------------------------------------ +# +[AudioStateTrigger] +subsystem=Booster1 +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster2 +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster1 +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=1 +inverse_trigger=1 +control_ID=2 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster2 +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=1 +inverse_trigger=1 +control_ID=2 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Entity +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=2 +inverse_trigger=0 +control_ID=2 +control_value=0.0 +dump_value=0 + +# Booster Loop +[AudioStateTrigger] +subsystem=Booster1 +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster2 +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster1 +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=1 +inverse_trigger=1 +control_ID=2 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster2 +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=1 +inverse_trigger=1 +control_ID=2 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Entity +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=2 +inverse_trigger=0 +control_ID=2 +control_value=0.0 +dump_value=0 + +# +#------------------------------------------------------------------ +# Rivet trigger +#------------------------------------------------------------------ +# +[AudioStateTrigger] +subsystem=RivetGun +attribute=SimulationState +audio_component=RivetFireCenterComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=0.5 +dump_value=0 diff --git a/CONTENT/RP/AUDIO/HVAC1.SCP b/CONTENT/RP/AUDIO/HVAC1.SCP new file mode 100644 index 0000000..60e25a1 --- /dev/null +++ b/CONTENT/RP/AUDIO/HVAC1.SCP @@ -0,0 +1,101 @@ +# +#------------------------------------------------------------------ +# HVAC Audio Script +#------------------------------------------------------------------ +# + +# +#------------------------------------------------------------------ +# AudioRenderTypes +# +# TransientAudioRenderType = 0 +# SustainedAudioRenderType = 1 +# +#------------------------------------------------------------------ +# AudioSourcePriority +# +# MinAudioSourcePriority = 0 +# LowAudioSourcePriority = 1 +# MedAudioSourcePriority = 2 +# HighAudioSourcePriority = 3 +# MaxAudioSourcePriority = 4 +# +#------------------------------------------------------------------ +# AudioSourceMixPresence +# +# ManualAudioSourceMixPresence = 0 +# MaxAudioSourceMixPresence = 1 +# HighAudioSourceMixPresence = 2 +# MedAudioSourceMixPresence = 3 +# LowAudioSourceMixPresence = 4 +# MinAudioSourceMixPresence = 5 +# +#------------------------------------------------------------------ +# AudioControlID +# +# NullAudioControlID = 0 +# StartAudioControlID = 1 +# StopAudioControlID = 2 +# VolumeAudioControlID = 3 +# PitchAudioControlID = 4 +# BrightnessAudioControlID = 5 +# AttackVolumeAudioControlID = 6 +# AttackTimeAudioControlID = 7 +# AudioControlIDCount = 8 +# + +# +#------------------------------------------------------------------ +# Audio locations +#------------------------------------------------------------------ +# + +[L4AudioLocation] +location_offset=-0.76,28.20,-4.49 +name=Location01 + +# +#------------------------------------------------------------------ +# Audio source components +#------------------------------------------------------------------ +# + +# +# HVAC component +# + +[Dynamic3DPatchSource] +location=Location01 +resource=HVAC01 +priority=1 +mix_presence=3 +volume_mix_level=0.85 +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=0 +use_attack_time_scale=0 +has_compression_curve=0 +compression_duration=0.0 +name=HVACComponent + +# +#------------------------------------------------------------------ +# Non-trigger watchers +#------------------------------------------------------------------ +# + +# +#------------------------------------------------------------------ +# Trigger watchers +#------------------------------------------------------------------ +# + +# +# HVAC : Start control +# + +[AudioControlSend] +audio_component=HVACComponent +control_ID=1 +control_value=0.0 + diff --git a/CONTENT/RP/AUDIO/HVAC2.SCP b/CONTENT/RP/AUDIO/HVAC2.SCP new file mode 100644 index 0000000..3ed7e93 --- /dev/null +++ b/CONTENT/RP/AUDIO/HVAC2.SCP @@ -0,0 +1,101 @@ +# +#------------------------------------------------------------------ +# HVAC Audio Script +#------------------------------------------------------------------ +# + +# +#------------------------------------------------------------------ +# AudioRenderTypes +# +# TransientAudioRenderType = 0 +# SustainedAudioRenderType = 1 +# +#------------------------------------------------------------------ +# AudioSourcePriority +# +# MinAudioSourcePriority = 0 +# LowAudioSourcePriority = 1 +# MedAudioSourcePriority = 2 +# HighAudioSourcePriority = 3 +# MaxAudioSourcePriority = 4 +# +#------------------------------------------------------------------ +# AudioSourceMixPresence +# +# ManualAudioSourceMixPresence = 0 +# MaxAudioSourceMixPresence = 1 +# HighAudioSourceMixPresence = 2 +# MedAudioSourceMixPresence = 3 +# LowAudioSourceMixPresence = 4 +# MinAudioSourceMixPresence = 5 +# +#------------------------------------------------------------------ +# AudioControlID +# +# NullAudioControlID = 0 +# StartAudioControlID = 1 +# StopAudioControlID = 2 +# VolumeAudioControlID = 3 +# PitchAudioControlID = 4 +# BrightnessAudioControlID = 5 +# AttackVolumeAudioControlID = 6 +# AttackTimeAudioControlID = 7 +# AudioControlIDCount = 8 +# + +# +#------------------------------------------------------------------ +# Audio locations +#------------------------------------------------------------------ +# + +[L4AudioLocation] +location_offset=0.30,30.00,17.10 +name=Location01 + +# +#------------------------------------------------------------------ +# Audio source components +#------------------------------------------------------------------ +# + +# +# HVAC component +# + +[Dynamic3DPatchSource] +location=Location01 +resource=HVAC02 +priority=1 +mix_presence=3 +volume_mix_level=0.9 +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=0 +use_attack_time_scale=0 +has_compression_curve=0 +compression_duration=0.0 +name=HVACComponent + +# +#------------------------------------------------------------------ +# Non-trigger watchers +#------------------------------------------------------------------ +# + +# +#------------------------------------------------------------------ +# Trigger watchers +#------------------------------------------------------------------ +# + +# +# HVAC : Start control +# + +[AudioControlSend] +audio_component=HVACComponent +control_ID=1 +control_value=0.0 + diff --git a/CONTENT/RP/AUDIO/HVAC3.SCP b/CONTENT/RP/AUDIO/HVAC3.SCP new file mode 100644 index 0000000..b81cdf8 --- /dev/null +++ b/CONTENT/RP/AUDIO/HVAC3.SCP @@ -0,0 +1,101 @@ +# +#------------------------------------------------------------------ +# HVAC Audio Script +#------------------------------------------------------------------ +# + +# +#------------------------------------------------------------------ +# AudioRenderTypes +# +# TransientAudioRenderType = 0 +# SustainedAudioRenderType = 1 +# +#------------------------------------------------------------------ +# AudioSourcePriority +# +# MinAudioSourcePriority = 0 +# LowAudioSourcePriority = 1 +# MedAudioSourcePriority = 2 +# HighAudioSourcePriority = 3 +# MaxAudioSourcePriority = 4 +# +#------------------------------------------------------------------ +# AudioSourceMixPresence +# +# ManualAudioSourceMixPresence = 0 +# MaxAudioSourceMixPresence = 1 +# HighAudioSourceMixPresence = 2 +# MedAudioSourceMixPresence = 3 +# LowAudioSourceMixPresence = 4 +# MinAudioSourceMixPresence = 5 +# +#------------------------------------------------------------------ +# AudioControlID +# +# NullAudioControlID = 0 +# StartAudioControlID = 1 +# StopAudioControlID = 2 +# VolumeAudioControlID = 3 +# PitchAudioControlID = 4 +# BrightnessAudioControlID = 5 +# AttackVolumeAudioControlID = 6 +# AttackTimeAudioControlID = 7 +# AudioControlIDCount = 8 +# + +# +#------------------------------------------------------------------ +# Audio locations +#------------------------------------------------------------------ +# + +[L4AudioLocation] +location_offset=0.00,29.40,-0.60 +name=Location01 + +# +#------------------------------------------------------------------ +# Audio source components +#------------------------------------------------------------------ +# + +# +# HVAC component +# + +[Dynamic3DPatchSource] +location=Location01 +resource=HVAC02 +priority=1 +mix_presence=3 +volume_mix_level=0.9 +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=0 +use_attack_time_scale=0 +has_compression_curve=0 +compression_duration=0.0 +name=HVACComponent + +# +#------------------------------------------------------------------ +# Non-trigger watchers +#------------------------------------------------------------------ +# + +# +#------------------------------------------------------------------ +# Trigger watchers +#------------------------------------------------------------------ +# + +# +# HVAC : Start control +# + +[AudioControlSend] +audio_component=HVACComponent +control_ID=1 +control_value=0.0 + diff --git a/CONTENT/RP/AUDIO/ICOM.CFG b/CONTENT/RP/AUDIO/ICOM.CFG new file mode 100644 index 0000000..84a291c --- /dev/null +++ b/CONTENT/RP/AUDIO/ICOM.CFG @@ -0,0 +1,15 @@ +/MA:229;0 +/VO:0;0 +/MI:229;0 +/CD:0;0 +/LI:0;0 +/MIC:0 +/SP:0 +/TR:114;0 +/BA:114;0 +/IPL:MIC- CDR- CDL- LIR- LIL+ MIR- MIL- +/IPR:MIC- CDR- CDL- LIR+ LIL- MIR- MIL- +/OPS:MIC- CDR- CDL- LIR+ LIL+ +/AGC:- +/IPG:1,1 +/OPG:1,1 diff --git a/CONTENT/RP/AUDIO/LASEREXP.SCP b/CONTENT/RP/AUDIO/LASEREXP.SCP new file mode 100644 index 0000000..c76f62c --- /dev/null +++ b/CONTENT/RP/AUDIO/LASEREXP.SCP @@ -0,0 +1,135 @@ +# +#------------------------------------------------------------------ +# Laser Explode Audio Script +#------------------------------------------------------------------ +# + +# +#------------------------------------------------------------------ +# AudioRenderTypes +# +# TransientAudioRenderType = 0 +# SustainedAudioRenderType = 1 +# +#------------------------------------------------------------------ +# AudioSourcePriority +# +# MinAudioSourcePriority = 0 +# LowAudioSourcePriority = 1 +# MedAudioSourcePriority = 2 +# HighAudioSourcePriority = 3 +# MaxAudioSourcePriority = 4 +# +#------------------------------------------------------------------ +# AudioSourceMixPresence +# +# ManualAudioSourceMixPresence = 0 +# MaxAudioSourceMixPresence = 1 +# HighAudioSourceMixPresence = 2 +# MedAudioSourceMixPresence = 3 +# LowAudioSourceMixPresence = 4 +# MinAudioSourceMixPresence = 5 +# +#------------------------------------------------------------------ +# AudioControlID +# +# NullAudioControlID = 0 +# StartAudioControlID = 1 +# StopAudioControlID = 2 +# VolumeAudioControlID = 3 +# PitchAudioControlID = 4 +# BrightnessAudioControlID = 5 +# AttackVolumeAudioControlID = 6 +# AttackTimeAudioControlID = 7 +# AudioControlIDCount = 8 +# + +# +#------------------------------------------------------------------ +# Audio locations +#------------------------------------------------------------------ +# + +[L4AudioLocation] +location_offset=0.0,0.0,0.0 +name=OriginLocation + +# +#------------------------------------------------------------------ +# Audio source components +#------------------------------------------------------------------ +# + +# +# Laser Explode component +# + +[Dynamic3DPatchSource] +location=OriginLocation +resource=LaserHitExt01 +priority=1 +mix_presence=0 +volume_mix_level=0.75 +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=0 +use_attack_time_scale=0 +has_compression_curve=0 +compression_duration=0.0 +name=LaserHitExtComponent + +# +#------------------------------------------------------------------ +# Non-trigger watchers +#------------------------------------------------------------------ +# + +#------------------------------------------------------------------ + +# +# Laser Explode : resource select +# + +[AudioResourceSelector] +audio_source=LaserHitExtComponent +audio_resource_index=LaserHitExtIndex +control_ID=100 +min_control_value=0.0 +max_control_value=1.0 +dump_value=0 +name=LaserHitExtResourceSelect + +# +# Laser Explode : Sample and hold -> resource select +# + +[AudioSampleAndHold] +audio_component=LaserHitExtResourceSelect +control_ID=100 +sample_duration=0.0 +name=LaserHitExtSampleAndHold + +# +#------------------------------------------------------------------ +# Trigger watchers +#------------------------------------------------------------------ +# + +# +# Laser Explode : Sample +# + +[AudioControlSend] +audio_component=LaserHitExtSampleAndHold +control_ID=1 +control_value=0.0 + +# +# Laser Explode : Start control +# + +[AudioControlSend] +audio_component=LaserHitExtComponent +control_ID=1 +control_value=0.75 + diff --git a/CONTENT/RP/AUDIO/LEPTON.SCP b/CONTENT/RP/AUDIO/LEPTON.SCP new file mode 100644 index 0000000..66d2207 --- /dev/null +++ b/CONTENT/RP/AUDIO/LEPTON.SCP @@ -0,0 +1,161 @@ +# +#------------------------------------------------------------------ +# Lepton Audio Script +#------------------------------------------------------------------ +# + +# +#------------------------------------------------------------------ +# AudioRenderTypes +# +# TransientAudioRenderType = 0 +# SustainedAudioRenderType = 1 +# +#------------------------------------------------------------------ +# AudioSourcePriority +# +# MinAudioSourcePriority = 0 +# LowAudioSourcePriority = 1 +# MedAudioSourcePriority = 2 +# HighAudioSourcePriority = 3 +# MaxAudioSourcePriority = 4 +# +#------------------------------------------------------------------ +# AudioSourceMixPresence +# +# ManualAudioSourceMixPresence = 0 +# MaxAudioSourceMixPresence = 1 +# HighAudioSourceMixPresence = 2 +# MedAudioSourceMixPresence = 3 +# LowAudioSourceMixPresence = 4 +# MinAudioSourceMixPresence = 5 +# +#------------------------------------------------------------------ +# AudioControlID +# +# NullAudioControlID = 0 +# StartAudioControlID = 1 +# StopAudioControlID = 2 +# VolumeAudioControlID = 3 +# PitchAudioControlID = 4 +# BrightnessAudioControlID = 5 +# AttackVolumeAudioControlID = 6 +# AttackTimeAudioControlID = 7 +# AudioControlIDCount = 8 +# + +# +#------------------------------------------------------------------ +# Includes +#------------------------------------------------------------------ +# +[include] +file=audio\vtvint.scp +file=audio\chute.scp + +# +#------------------------------------------------------------------ +# Booster trigger +#------------------------------------------------------------------ +# +[AudioStateTrigger] +subsystem=Booster1 +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster2 +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster1 +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=1 +inverse_trigger=1 +control_ID=2 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster2 +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=1 +inverse_trigger=1 +control_ID=2 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Entity +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=2 +inverse_trigger=0 +control_ID=2 +control_value=0.0 +dump_value=0 + +# Booster Loop +[AudioStateTrigger] +subsystem=Booster1 +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster2 +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster1 +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=1 +inverse_trigger=1 +control_ID=2 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster2 +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=1 +inverse_trigger=1 +control_ID=2 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Entity +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=2 +inverse_trigger=0 +control_ID=2 +control_value=0.0 +dump_value=0 + diff --git a/CONTENT/RP/AUDIO/LSREXPC.SCP b/CONTENT/RP/AUDIO/LSREXPC.SCP new file mode 100644 index 0000000..60e0c01 --- /dev/null +++ b/CONTENT/RP/AUDIO/LSREXPC.SCP @@ -0,0 +1,135 @@ +# +#------------------------------------------------------------------ +# Laser Hit Craft Audio Script +#------------------------------------------------------------------ +# + +# +#------------------------------------------------------------------ +# AudioRenderTypes +# +# TransientAudioRenderType = 0 +# SustainedAudioRenderType = 1 +# +#------------------------------------------------------------------ +# AudioSourcePriority +# +# MinAudioSourcePriority = 0 +# LowAudioSourcePriority = 1 +# MedAudioSourcePriority = 2 +# HighAudioSourcePriority = 3 +# MaxAudioSourcePriority = 4 +# +#------------------------------------------------------------------ +# AudioSourceMixPresence +# +# ManualAudioSourceMixPresence = 0 +# MaxAudioSourceMixPresence = 1 +# HighAudioSourceMixPresence = 2 +# MedAudioSourceMixPresence = 3 +# LowAudioSourceMixPresence = 4 +# MinAudioSourceMixPresence = 5 +# +#------------------------------------------------------------------ +# AudioControlID +# +# NullAudioControlID = 0 +# StartAudioControlID = 1 +# StopAudioControlID = 2 +# VolumeAudioControlID = 3 +# PitchAudioControlID = 4 +# BrightnessAudioControlID = 5 +# AttackVolumeAudioControlID = 6 +# AttackTimeAudioControlID = 7 +# AudioControlIDCount = 8 +# + +# +#------------------------------------------------------------------ +# Audio locations +#------------------------------------------------------------------ +# + +[L4AudioLocation] +location_offset=0.0,0.0,0.0 +name=OriginLocation + +# +#------------------------------------------------------------------ +# Audio source components +#------------------------------------------------------------------ +# + +# +# Laser Explode component +# + +[Dynamic3DPatchSource] +location=OriginLocation +resource=LaserHitCraft01 +priority=1 +mix_presence=2 +volume_mix_level=0.9 +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=0 +use_attack_time_scale=0 +has_compression_curve=1 +compression_duration=0.5 +name=LaserHitCraftComponent + +# +#------------------------------------------------------------------ +# Non-trigger watchers +#------------------------------------------------------------------ +# + +#------------------------------------------------------------------ + +# +# Laser Explode : resource select +# + +[AudioResourceSelector] +audio_source=LaserHitCraftComponent +audio_resource_index=LaserHitCraftIndex +control_ID=100 +min_control_value=0.0 +max_control_value=1.0 +dump_value=0 +name=LaserHitCraftResourceSelect + +# +# Laser Explode : Sample and hold -> resource select +# + +[AudioSampleAndHold] +audio_component=LaserHitCraftResourceSelect +control_ID=100 +sample_duration=0.0 +name=LaserHitCraftSampleAndHold + +# +#------------------------------------------------------------------ +# Trigger watchers +#------------------------------------------------------------------ +# + +# +# Laser Explode : Sample +# + +[AudioControlSend] +audio_component=LaserHitCraftSampleAndHold +control_ID=1 +control_value=0.0 + +# +# Laser Explode : Start control +# + +[AudioControlSend] +audio_component=LaserHitCraftComponent +control_ID=1 +control_value=1.0 + diff --git a/CONTENT/RP/AUDIO/LSREXPI.SCP b/CONTENT/RP/AUDIO/LSREXPI.SCP new file mode 100644 index 0000000..f42809a --- /dev/null +++ b/CONTENT/RP/AUDIO/LSREXPI.SCP @@ -0,0 +1,150 @@ +# +#------------------------------------------------------------------ +# Laser Hit Internal Audio Script +#------------------------------------------------------------------ +# + +# +#------------------------------------------------------------------ +# AudioRenderTypes +# +# TransientAudioRenderType = 0 +# SustainedAudioRenderType = 1 +# +#------------------------------------------------------------------ +# AudioSourcePriority +# +# MinAudioSourcePriority = 0 +# LowAudioSourcePriority = 1 +# MedAudioSourcePriority = 2 +# HighAudioSourcePriority = 3 +# MaxAudioSourcePriority = 4 +# +#------------------------------------------------------------------ +# AudioSourceMixPresence +# +# ManualAudioSourceMixPresence = 0 +# MaxAudioSourceMixPresence = 1 +# HighAudioSourceMixPresence = 2 +# MedAudioSourceMixPresence = 3 +# LowAudioSourceMixPresence = 4 +# MinAudioSourceMixPresence = 5 +# +#------------------------------------------------------------------ +# AudioControlID +# +# NullAudioControlID = 0 +# StartAudioControlID = 1 +# StopAudioControlID = 2 +# VolumeAudioControlID = 3 +# PitchAudioControlID = 4 +# BrightnessAudioControlID = 5 +# AttackVolumeAudioControlID = 6 +# AttackTimeAudioControlID = 7 +# AudioControlIDCount = 8 +# + +# +#------------------------------------------------------------------ +# Audio locations +#------------------------------------------------------------------ +# + +[L4AudioLocation] +location_offset=0.0,0.0,0.0 +name=OriginLocation + +# +#------------------------------------------------------------------ +# Audio source components +#------------------------------------------------------------------ +# + +# +# Laser Explode component +# + +[!Dynamic3DPatchSource] +location=OriginLocation +resource=LaserHitInt01 +priority=2 +mix_presence=2 +volume_mix_level=1.0 +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=0 +use_attack_time_scale=0 +has_compression_curve=1 +compression_duration=1.0 +name=LaserHitIntComponent + +[Static3DPatchSource] +location=OriginLocation +resource=LaserHitInt01 +priority=2 +mix_presence=2 +volume_mix_level=1.0 +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=0 +use_attack_time_scale=0 +has_compression_curve=1 +compression_duration=1.0 +use_internal=0 +name=LaserHitIntComponent + +# +#------------------------------------------------------------------ +# Non-trigger watchers +#------------------------------------------------------------------ +# + +#------------------------------------------------------------------ + +# +# Laser Explode : resource select +# + +[AudioResourceSelector] +audio_source=LaserHitIntComponent +audio_resource_index=LaserHitIntIndex +control_ID=100 +min_control_value=0.0 +max_control_value=1.0 +dump_value=0 +name=LaserHitIntResourceSelect + +# +# Laser Explode : Sample and hold -> resource select +# + +[AudioSampleAndHold] +audio_component=LaserHitIntResourceSelect +control_ID=100 +sample_duration=0.0 +name=LaserHitIntSampleAndHold + +# +#------------------------------------------------------------------ +# Trigger watchers +#------------------------------------------------------------------ +# + +# +# Laser Explode : Sample +# + +[AudioControlSend] +audio_component=LaserHitIntSampleAndHold +control_ID=1 +control_value=0.0 + +# +# Laser Explode : Start control +# + +[AudioControlSend] +audio_component=LaserHitIntComponent +control_ID=1 +control_value=1.5 + diff --git a/CONTENT/RP/AUDIO/LSREXT.SCP b/CONTENT/RP/AUDIO/LSREXT.SCP new file mode 100644 index 0000000..6572283 --- /dev/null +++ b/CONTENT/RP/AUDIO/LSREXT.SCP @@ -0,0 +1,97 @@ +# +#------------------------------------------------------------------ +# Laser External Audio Script +#------------------------------------------------------------------ +# + +# +#------------------------------------------------------------------ +# AudioRenderTypes +# +# TransientAudioRenderType = 0 +# SustainedAudioRenderType = 1 +# +#------------------------------------------------------------------ +# AudioSourcePriority +# +# MinAudioSourcePriority = 0 +# LowAudioSourcePriority = 1 +# MedAudioSourcePriority = 2 +# HighAudioSourcePriority = 3 +# MaxAudioSourcePriority = 4 +# +#------------------------------------------------------------------ +# AudioSourceMixPresence +# +# ManualAudioSourceMixPresence = 0 +# MaxAudioSourceMixPresence = 1 +# HighAudioSourceMixPresence = 2 +# MedAudioSourceMixPresence = 3 +# LowAudioSourceMixPresence = 4 +# MinAudioSourceMixPresence = 5 +# +#------------------------------------------------------------------ +# AudioControlID +# +# NullAudioControlID = 0 +# StartAudioControlID = 1 +# StopAudioControlID = 2 +# VolumeAudioControlID = 3 +# PitchAudioControlID = 4 +# BrightnessAudioControlID = 5 +# AttackVolumeAudioControlID = 6 +# AttackTimeAudioControlID = 7 +# AudioControlIDCount = 8 +# + +# +#------------------------------------------------------------------ +# Audio source components +#------------------------------------------------------------------ +# + +# +# Laser fire component +# +[Dynamic3DPatchSource] +location=OriginLocation +resource=LaserFireExt01 +priority=1 +mix_presence=2 +volume_mix_level=0.95 +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=0 +use_attack_time_scale=1 +has_compression_curve=1 +compression_duration=0.5 +name=LaserFireExtComponent + +# +#------------------------------------------------------------------ +# Non-trigger watchers +#------------------------------------------------------------------ +# + +#------------------------------------------------------------------ + +# +# Laser Fire : resource select +# +[AudioResourceSelector] +audio_source=LaserFireExtComponent +audio_resource_index=LaserFireExtIndex +control_ID=100 +min_control_value=0.0 +max_control_value=1.0 +dump_value=0 +name=LaserFireExtResourceSelect + +# +# Laser Fire : Sample and hold -> resource select +# +[AudioSampleAndHold] +audio_component=LaserFireExtResourceSelect +control_ID=100 +sample_duration=0.0 +name=LaserFireExtSampleAndHold diff --git a/CONTENT/RP/AUDIO/MANTIS.SCP b/CONTENT/RP/AUDIO/MANTIS.SCP new file mode 100644 index 0000000..4a76b40 --- /dev/null +++ b/CONTENT/RP/AUDIO/MANTIS.SCP @@ -0,0 +1,206 @@ +# +#------------------------------------------------------------------ +# Mantis Audio Script +#------------------------------------------------------------------ +# + +# +#------------------------------------------------------------------ +# AudioRenderTypes +# +# TransientAudioRenderType = 0 +# SustainedAudioRenderType = 1 +# +#------------------------------------------------------------------ +# AudioSourcePriority +# +# MinAudioSourcePriority = 0 +# LowAudioSourcePriority = 1 +# MedAudioSourcePriority = 2 +# HighAudioSourcePriority = 3 +# MaxAudioSourcePriority = 4 +# +#------------------------------------------------------------------ +# AudioSourceMixPresence +# +# ManualAudioSourceMixPresence = 0 +# MaxAudioSourceMixPresence = 1 +# HighAudioSourceMixPresence = 2 +# MedAudioSourceMixPresence = 3 +# LowAudioSourceMixPresence = 4 +# MinAudioSourceMixPresence = 5 +# +#------------------------------------------------------------------ +# AudioControlID +# +# NullAudioControlID = 0 +# StartAudioControlID = 1 +# StopAudioControlID = 2 +# VolumeAudioControlID = 3 +# PitchAudioControlID = 4 +# BrightnessAudioControlID = 5 +# AttackVolumeAudioControlID = 6 +# AttackTimeAudioControlID = 7 +# AudioControlIDCount = 8 +# + +# +#------------------------------------------------------------------ +# Includes +#------------------------------------------------------------------ +# +[include] +file=audio\vtvint.scp +file=audio\vtvlsr.scp +file=audio\chute.scp + +# +#------------------------------------------------------------------ +# Booster trigger +#------------------------------------------------------------------ +# +[AudioStateTrigger] +subsystem=Booster1 +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster2 +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster1 +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=1 +inverse_trigger=1 +control_ID=2 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster2 +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=1 +inverse_trigger=1 +control_ID=2 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Entity +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=2 +inverse_trigger=0 +control_ID=2 +control_value=0.0 +dump_value=0 + +# Booster Loop +[AudioStateTrigger] +subsystem=Booster1 +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster2 +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster1 +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=1 +inverse_trigger=1 +control_ID=2 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster2 +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=1 +inverse_trigger=1 +control_ID=2 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Entity +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=2 +inverse_trigger=0 +control_ID=2 +control_value=0.0 +dump_value=0 + +# +#------------------------------------------------------------------ +# Laser trigger +#------------------------------------------------------------------ +# +[AudioStateTrigger] +subsystem=LaserGun1 +attribute=SimulationState +audio_component=LaserFireIntComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=2.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=LaserGun1 +attribute=SimulationState +audio_component=LaserFireIntEmptyComponent +trigger_state=3 +inverse_trigger=0 +control_ID=1 +control_value=0.5 +dump_value=0 + +[AudioStateTrigger] +subsystem=LaserGun2 +attribute=SimulationState +audio_component=LaserFireIntComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=2.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=LaserGun2 +attribute=SimulationState +audio_component=LaserFireIntEmptyComponent +trigger_state=3 +inverse_trigger=0 +control_ID=1 +control_value=0.5 +dump_value=0 diff --git a/CONTENT/RP/AUDIO/MTNCDR1.SCP b/CONTENT/RP/AUDIO/MTNCDR1.SCP new file mode 100644 index 0000000..27c97a0 --- /dev/null +++ b/CONTENT/RP/AUDIO/MTNCDR1.SCP @@ -0,0 +1,132 @@ +# +#------------------------------------------------------------------ +# Maintenance Corridor 1 Audio Script +#------------------------------------------------------------------ +# + +# +#------------------------------------------------------------------ +# AudioRenderTypes +# +# TransientAudioRenderType = 0 +# SustainedAudioRenderType = 1 +# +#------------------------------------------------------------------ +# AudioSourcePriority +# +# MinAudioSourcePriority = 0 +# LowAudioSourcePriority = 1 +# MedAudioSourcePriority = 2 +# HighAudioSourcePriority = 3 +# MaxAudioSourcePriority = 4 +# +#------------------------------------------------------------------ +# AudioSourceMixPresence +# +# ManualAudioSourceMixPresence = 0 +# MaxAudioSourceMixPresence = 1 +# HighAudioSourceMixPresence = 2 +# MedAudioSourceMixPresence = 3 +# LowAudioSourceMixPresence = 4 +# MinAudioSourceMixPresence = 5 +# +#------------------------------------------------------------------ +# AudioControlID +# +# NullAudioControlID = 0 +# StartAudioControlID = 1 +# StopAudioControlID = 2 +# VolumeAudioControlID = 3 +# PitchAudioControlID = 4 +# BrightnessAudioControlID = 5 +# AttackVolumeAudioControlID = 6 +# AttackTimeAudioControlID = 7 +# AudioControlIDCount = 8 +# + +# +#------------------------------------------------------------------ +# Audio locations +#------------------------------------------------------------------ +# + +[L4AudioLocation] +location_offset=-28.71,23.40,4.46 +name=Location01 + +[L4AudioLocation] +location_offset=29.11,31.20,30.47 +name=Location02 + +# +#------------------------------------------------------------------ +# Audio source components +#------------------------------------------------------------------ +# + +# +# Generator component +# + +[Dynamic3DPatchSource] +location=Location01 +resource=Generator02 +priority=1 +mix_presence=3 +volume_mix_level=1.0 +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=0 +use_attack_time_scale=0 +has_compression_curve=0 +compression_duration=0.0 +name=GeneratorComponent + +# +# Pipe Machine component +# + +[Dynamic3DPatchSource] +location=Location02 +resource=PipeMachine01 +priority=1 +mix_presence=3 +volume_mix_level=1.0 +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=0 +use_attack_time_scale=0 +has_compression_curve=0 +compression_duration=0.0 +name=PipeMachine + +# +#------------------------------------------------------------------ +# Non-trigger watchers +#------------------------------------------------------------------ +# + +# +#------------------------------------------------------------------ +# Trigger watchers +#------------------------------------------------------------------ +# + +# +# GeneratorComponent : Start control +# + +[AudioControlSend] +audio_component=GeneratorComponent +control_ID=1 +control_value=0.0 + +# +# Pipe Work : Start control +# + +[AudioControlSend] +audio_component=PipeMachine +control_ID=1 +control_value=0.0 + diff --git a/CONTENT/RP/AUDIO/MTNCDR2.SCP b/CONTENT/RP/AUDIO/MTNCDR2.SCP new file mode 100644 index 0000000..b1b9c3e --- /dev/null +++ b/CONTENT/RP/AUDIO/MTNCDR2.SCP @@ -0,0 +1,97 @@ +# +#------------------------------------------------------------------ +# Maintenance Corridor 2 Audio Script +#------------------------------------------------------------------ +# + +# +#------------------------------------------------------------------ +# AudioRenderTypes +# +# TransientAudioRenderType = 0 +# SustainedAudioRenderType = 1 +# +#------------------------------------------------------------------ +# AudioSourcePriority +# +# MinAudioSourcePriority = 0 +# LowAudioSourcePriority = 1 +# MedAudioSourcePriority = 2 +# HighAudioSourcePriority = 3 +# MaxAudioSourcePriority = 4 +# +#------------------------------------------------------------------ +# AudioSourceMixPresence +# +# ManualAudioSourceMixPresence = 0 +# MaxAudioSourceMixPresence = 1 +# HighAudioSourceMixPresence = 2 +# MedAudioSourceMixPresence = 3 +# LowAudioSourceMixPresence = 4 +# MinAudioSourceMixPresence = 5 +# +#------------------------------------------------------------------ +# AudioControlID +# +# NullAudioControlID = 0 +# StartAudioControlID = 1 +# StopAudioControlID = 2 +# VolumeAudioControlID = 3 +# PitchAudioControlID = 4 +# BrightnessAudioControlID = 5 +# AttackVolumeAudioControlID = 6 +# AttackTimeAudioControlID = 7 +# AudioControlIDCount = 8 +# + +# +#------------------------------------------------------------------ +# Audio locations +#------------------------------------------------------------------ +# +[L4AudioLocation] +location_offset=-14.09 17.10 18.75 +name=Location01 + +# +#------------------------------------------------------------------ +# Audio source components +#------------------------------------------------------------------ +# + +# +# Generator component +# +[Dynamic3DPatchSource] +location=Location01 +resource=Generator02 +priority=1 +mix_presence=3 +volume_mix_level=1.0 +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=0 +use_attack_time_scale=0 +has_compression_curve=0 +compression_duration=0.0 +name=GeneratorComponent + +# +#------------------------------------------------------------------ +# Non-trigger watchers +#------------------------------------------------------------------ +# + +# +#------------------------------------------------------------------ +# Trigger watchers +#------------------------------------------------------------------ +# + +# +# GeneratorComponent : Start control +# +[AudioControlSend] +audio_component=GeneratorComponent +control_ID=1 +control_value=0.0 diff --git a/CONTENT/RP/AUDIO/MTNCDR3.SCP b/CONTENT/RP/AUDIO/MTNCDR3.SCP new file mode 100644 index 0000000..0e18496 --- /dev/null +++ b/CONTENT/RP/AUDIO/MTNCDR3.SCP @@ -0,0 +1,97 @@ +# +#------------------------------------------------------------------ +# Maintenance Corridor 3 Audio Script +#------------------------------------------------------------------ +# + +# +#------------------------------------------------------------------ +# AudioRenderTypes +# +# TransientAudioRenderType = 0 +# SustainedAudioRenderType = 1 +# +#------------------------------------------------------------------ +# AudioSourcePriority +# +# MinAudioSourcePriority = 0 +# LowAudioSourcePriority = 1 +# MedAudioSourcePriority = 2 +# HighAudioSourcePriority = 3 +# MaxAudioSourcePriority = 4 +# +#------------------------------------------------------------------ +# AudioSourceMixPresence +# +# ManualAudioSourceMixPresence = 0 +# MaxAudioSourceMixPresence = 1 +# HighAudioSourceMixPresence = 2 +# MedAudioSourceMixPresence = 3 +# LowAudioSourceMixPresence = 4 +# MinAudioSourceMixPresence = 5 +# +#------------------------------------------------------------------ +# AudioControlID +# +# NullAudioControlID = 0 +# StartAudioControlID = 1 +# StopAudioControlID = 2 +# VolumeAudioControlID = 3 +# PitchAudioControlID = 4 +# BrightnessAudioControlID = 5 +# AttackVolumeAudioControlID = 6 +# AttackTimeAudioControlID = 7 +# AudioControlIDCount = 8 +# + +# +#------------------------------------------------------------------ +# Audio locations +#------------------------------------------------------------------ +# +[L4AudioLocation] +location_offset=4.35 30.60 24.98 +name=Location01 + +# +#------------------------------------------------------------------ +# Audio source components +#------------------------------------------------------------------ +# + +# +# Pulse component +# +[Dynamic3DPatchSource] +location=Location01 +resource=MaintPulse01 +priority=1 +mix_presence=3 +volume_mix_level=1.0 +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=0 +use_attack_time_scale=0 +has_compression_curve=0 +compression_duration=0.0 +name=PulseComponent + +# +#------------------------------------------------------------------ +# Non-trigger watchers +#------------------------------------------------------------------ +# + +# +#------------------------------------------------------------------ +# Trigger watchers +#------------------------------------------------------------------ +# + +# +# PulseComponent : Start control +# +[AudioControlSend] +audio_component=PulseComponent +control_ID=1 +control_value=0.0 diff --git a/CONTENT/RP/AUDIO/MTNCDR4.SCP b/CONTENT/RP/AUDIO/MTNCDR4.SCP new file mode 100644 index 0000000..fbbd2b9 --- /dev/null +++ b/CONTENT/RP/AUDIO/MTNCDR4.SCP @@ -0,0 +1,97 @@ +# +#------------------------------------------------------------------ +# Maintenance Corridor 4 Audio Script +#------------------------------------------------------------------ +# + +# +#------------------------------------------------------------------ +# AudioRenderTypes +# +# TransientAudioRenderType = 0 +# SustainedAudioRenderType = 1 +# +#------------------------------------------------------------------ +# AudioSourcePriority +# +# MinAudioSourcePriority = 0 +# LowAudioSourcePriority = 1 +# MedAudioSourcePriority = 2 +# HighAudioSourcePriority = 3 +# MaxAudioSourcePriority = 4 +# +#------------------------------------------------------------------ +# AudioSourceMixPresence +# +# ManualAudioSourceMixPresence = 0 +# MaxAudioSourceMixPresence = 1 +# HighAudioSourceMixPresence = 2 +# MedAudioSourceMixPresence = 3 +# LowAudioSourceMixPresence = 4 +# MinAudioSourceMixPresence = 5 +# +#------------------------------------------------------------------ +# AudioControlID +# +# NullAudioControlID = 0 +# StartAudioControlID = 1 +# StopAudioControlID = 2 +# VolumeAudioControlID = 3 +# PitchAudioControlID = 4 +# BrightnessAudioControlID = 5 +# AttackVolumeAudioControlID = 6 +# AttackTimeAudioControlID = 7 +# AudioControlIDCount = 8 +# + +# +#------------------------------------------------------------------ +# Audio locations +#------------------------------------------------------------------ +# +[L4AudioLocation] +location_offset=0.00,23.10,25.50 +name=Location01 + +# +#------------------------------------------------------------------ +# Audio source components +#------------------------------------------------------------------ +# + +# +# PipeMachine component +# +[Dynamic3DPatchSource] +location=Location01 +resource=PipeMachine02 +priority=1 +mix_presence=3 +volume_mix_level=1.0 +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=0 +use_attack_time_scale=0 +has_compression_curve=0 +compression_duration=0.0 +name=PipeMachineComponent + +# +#------------------------------------------------------------------ +# Non-trigger watchers +#------------------------------------------------------------------ +# + +# +#------------------------------------------------------------------ +# Trigger watchers +#------------------------------------------------------------------ +# + +# +# PipeMachineComponent : Start control +# +[AudioControlSend] +audio_component=PipeMachineComponent +control_ID=1 +control_value=0.0 diff --git a/CONTENT/RP/AUDIO/MTSEXT.SCP b/CONTENT/RP/AUDIO/MTSEXT.SCP new file mode 100644 index 0000000..3b4cea5 --- /dev/null +++ b/CONTENT/RP/AUDIO/MTSEXT.SCP @@ -0,0 +1,69 @@ +# +#------------------------------------------------------------------ +# Mantis External Audio Script +#------------------------------------------------------------------ +# + +# +#------------------------------------------------------------------ +# AudioRenderTypes +# +# TransientAudioRenderType = 0 +# SustainedAudioRenderType = 1 +# +#------------------------------------------------------------------ +# AudioSourcePriority +# +# MinAudioSourcePriority = 0 +# LowAudioSourcePriority = 1 +# MedAudioSourcePriority = 2 +# HighAudioSourcePriority = 3 +# MaxAudioSourcePriority = 4 +# +#------------------------------------------------------------------ +# AudioSourceMixPresence +# +# ManualAudioSourceMixPresence = 0 +# MaxAudioSourceMixPresence = 1 +# HighAudioSourceMixPresence = 2 +# MedAudioSourceMixPresence = 3 +# LowAudioSourceMixPresence = 4 +# MinAudioSourceMixPresence = 5 +# +#------------------------------------------------------------------ +# AudioControlID +# +# NullAudioControlID = 0 +# StartAudioControlID = 1 +# StopAudioControlID = 2 +# VolumeAudioControlID = 3 +# PitchAudioControlID = 4 +# BrightnessAudioControlID = 5 +# AttackVolumeAudioControlID = 6 +# AttackTimeAudioControlID = 7 +# AudioControlIDCount = 8 +# + +# +#------------------------------------------------------------------ +# Includes +#------------------------------------------------------------------ +# +[include] +file=audio\vtvext.scp +file=audio\lsrext.scp + +# +#------------------------------------------------------------------ +# Laser trigger +#------------------------------------------------------------------ +# +[AudioStateTrigger] +subsystem=LaserGun1 +attribute=SimulationState +audio_component=LaserFireExtComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=1.0 +dump_value=0 diff --git a/CONTENT/RP/AUDIO/OREDRP1.SCP b/CONTENT/RP/AUDIO/OREDRP1.SCP new file mode 100644 index 0000000..08051d0 --- /dev/null +++ b/CONTENT/RP/AUDIO/OREDRP1.SCP @@ -0,0 +1,143 @@ +# +#------------------------------------------------------------------ +# Ore Drop 1 Audio Script +#------------------------------------------------------------------ +# + +# +#------------------------------------------------------------------ +# AudioRenderTypes +# +# TransientAudioRenderType = 0 +# SustainedAudioRenderType = 1 +# +#------------------------------------------------------------------ +# AudioSourcePriority +# +# MinAudioSourcePriority = 0 +# LowAudioSourcePriority = 1 +# MedAudioSourcePriority = 2 +# HighAudioSourcePriority = 3 +# MaxAudioSourcePriority = 4 +# +#------------------------------------------------------------------ +# AudioSourceMixPresence +# +# ManualAudioSourceMixPresence = 0 +# MaxAudioSourceMixPresence = 1 +# HighAudioSourceMixPresence = 2 +# MedAudioSourceMixPresence = 3 +# LowAudioSourceMixPresence = 4 +# MinAudioSourceMixPresence = 5 +# +#------------------------------------------------------------------ +# AudioControlID +# +# NullAudioControlID = 0 +# StartAudioControlID = 1 +# StopAudioControlID = 2 +# VolumeAudioControlID = 3 +# PitchAudioControlID = 4 +# BrightnessAudioControlID = 5 +# AttackVolumeAudioControlID = 6 +# AttackTimeAudioControlID = 7 +# AudioControlIDCount = 8 +# + +# +#------------------------------------------------------------------ +# Audio locations +#------------------------------------------------------------------ +# +[L4AudioLocation] +location_offset=-16.2 7.5 7.5 +name=Location01 + +[L4AudioLocation] +location_offset=-15.79 18.3 -152.10 +name=Location02 + +[L4AudioLocation] +location_offset=16.2 7.5 35.7 +name=Location03 + +# +#------------------------------------------------------------------ +# Audio source components +#------------------------------------------------------------------ +# + +# +# Ore carrier components +# +[Dynamic3DPatchSource] +location=Location01 +resource=OreDrop01 +priority=1 +mix_presence=3 +volume_mix_level=0.9 +pitch_mix_offset=100.0 +brightness_mix_level=1.0 +use_brightness_scale=0 +use_attack_time_scale=0 +has_compression_curve=0 +compression_duration=0.0 +name=OreCarrierComponent01 + +[Dynamic3DPatchSource] +location=Location02 +resource=OreDrop02 +priority=1 +mix_presence=3 +volume_mix_level=0.9 +pitch_mix_offset=100.0 +brightness_mix_level=1.0 +use_brightness_scale=0 +use_attack_time_scale=0 +has_compression_curve=0 +compression_duration=0.0 +name=OreCarrierComponent02 + +[Dynamic3DPatchSource] +location=Location03 +resource=OreDrop03 +priority=1 +mix_presence=3 +volume_mix_level=0.9 +pitch_mix_offset=100.0 +brightness_mix_level=1.0 +use_brightness_scale=0 +use_attack_time_scale=0 +has_compression_curve=0 +compression_duration=0.0 +name=OreCarrierComponent03 + +# +#------------------------------------------------------------------ +# Non-trigger watchers +#------------------------------------------------------------------ +# + +# +#------------------------------------------------------------------ +# Trigger watchers +#------------------------------------------------------------------ +# + +# +# Ore carrier : Start control +# +[AudioControlSend] +audio_component=OreCarrierComponent01 +control_ID=1 +control_value=0.0 + +[AudioControlSend] +audio_component=OreCarrierComponent02 +control_ID=1 +control_value=0.0 + +[AudioControlSend] +audio_component=OreCarrierComponent03 +control_ID=1 +control_value=0.0 diff --git a/CONTENT/RP/AUDIO/OREDRP2.SCP b/CONTENT/RP/AUDIO/OREDRP2.SCP new file mode 100644 index 0000000..b47b5e6 --- /dev/null +++ b/CONTENT/RP/AUDIO/OREDRP2.SCP @@ -0,0 +1,143 @@ +# +#------------------------------------------------------------------ +# Ore Drop 3 Audio Script +#------------------------------------------------------------------ +# + +# +#------------------------------------------------------------------ +# AudioRenderTypes +# +# TransientAudioRenderType = 0 +# SustainedAudioRenderType = 1 +# +#------------------------------------------------------------------ +# AudioSourcePriority +# +# MinAudioSourcePriority = 0 +# LowAudioSourcePriority = 1 +# MedAudioSourcePriority = 2 +# HighAudioSourcePriority = 3 +# MaxAudioSourcePriority = 4 +# +#------------------------------------------------------------------ +# AudioSourceMixPresence +# +# ManualAudioSourceMixPresence = 0 +# MaxAudioSourceMixPresence = 1 +# HighAudioSourceMixPresence = 2 +# MedAudioSourceMixPresence = 3 +# LowAudioSourceMixPresence = 4 +# MinAudioSourceMixPresence = 5 +# +#------------------------------------------------------------------ +# AudioControlID +# +# NullAudioControlID = 0 +# StartAudioControlID = 1 +# StopAudioControlID = 2 +# VolumeAudioControlID = 3 +# PitchAudioControlID = 4 +# BrightnessAudioControlID = 5 +# AttackVolumeAudioControlID = 6 +# AttackTimeAudioControlID = 7 +# AudioControlIDCount = 8 +# + +# +#------------------------------------------------------------------ +# Audio locations +#------------------------------------------------------------------ +# +[L4AudioLocation] +location_offset=16.13,12.00,35.70 +name=Location01 + +[L4AudioLocation] +location_offset=-15.90,11.10,49.50 +name=Location02 + +[L4AudioLocation] +location_offset=-15.80,20.40,-151.47 +name=Location03 + +# +#------------------------------------------------------------------ +# Audio source components +#------------------------------------------------------------------ +# + +# +# Ore carrier components +# +[Dynamic3DPatchSource] +location=Location01 +resource=OreDrop01 +priority=1 +mix_presence=3 +volume_mix_level=0.9 +pitch_mix_offset=100.0 +brightness_mix_level=1.0 +use_brightness_scale=0 +use_attack_time_scale=0 +has_compression_curve=0 +compression_duration=0.0 +name=OreCarrierComponent01 + +[Dynamic3DPatchSource] +location=Location02 +resource=OreDrop02 +priority=1 +mix_presence=3 +volume_mix_level=0.9 +pitch_mix_offset=100.0 +brightness_mix_level=1.0 +use_brightness_scale=0 +use_attack_time_scale=0 +has_compression_curve=0 +compression_duration=0.0 +name=OreCarrierComponent02 + +[Dynamic3DPatchSource] +location=Location03 +resource=OreDrop03 +priority=1 +mix_presence=3 +volume_mix_level=0.9 +pitch_mix_offset=100.0 +brightness_mix_level=1.0 +use_brightness_scale=0 +use_attack_time_scale=0 +has_compression_curve=0 +compression_duration=0.0 +name=OreCarrierComponent03 + +# +#------------------------------------------------------------------ +# Non-trigger watchers +#------------------------------------------------------------------ +# + +# +#------------------------------------------------------------------ +# Trigger watchers +#------------------------------------------------------------------ +# + +# +# Ore carrier : Start control +# +[AudioControlSend] +audio_component=OreCarrierComponent01 +control_ID=1 +control_value=0.0 + +[AudioControlSend] +audio_component=OreCarrierComponent02 +control_ID=1 +control_value=0.0 + +[AudioControlSend] +audio_component=OreCarrierComponent03 +control_ID=1 +control_value=0.0 diff --git a/CONTENT/RP/AUDIO/PCKEXT.SCP b/CONTENT/RP/AUDIO/PCKEXT.SCP new file mode 100644 index 0000000..93fbaca --- /dev/null +++ b/CONTENT/RP/AUDIO/PCKEXT.SCP @@ -0,0 +1,71 @@ +# +#------------------------------------------------------------------ +# Puck External Audio Script +#------------------------------------------------------------------ +# + +# +#------------------------------------------------------------------ +# AudioRenderTypes +# +# TransientAudioRenderType = 0 +# SustainedAudioRenderType = 1 +# +#------------------------------------------------------------------ +# AudioSourcePriority +# +# MinAudioSourcePriority = 0 +# LowAudioSourcePriority = 1 +# MedAudioSourcePriority = 2 +# HighAudioSourcePriority = 3 +# MaxAudioSourcePriority = 4 +# +#------------------------------------------------------------------ +# AudioSourceMixPresence +# +# ManualAudioSourceMixPresence = 0 +# MaxAudioSourceMixPresence = 1 +# HighAudioSourceMixPresence = 2 +# MedAudioSourceMixPresence = 3 +# LowAudioSourceMixPresence = 4 +# MinAudioSourceMixPresence = 5 +# +#------------------------------------------------------------------ +# AudioControlID +# +# NullAudioControlID = 0 +# StartAudioControlID = 1 +# StopAudioControlID = 2 +# VolumeAudioControlID = 3 +# PitchAudioControlID = 4 +# BrightnessAudioControlID = 5 +# AttackVolumeAudioControlID = 6 +# AttackTimeAudioControlID = 7 +# AudioControlIDCount = 8 +# + +# +#------------------------------------------------------------------ +# Includes +#------------------------------------------------------------------ +# +[include] +file=audio\vtvext.scp +file=audio\lsrext.scp + +# +#------------------------------------------------------------------ +# Laser trigger +#------------------------------------------------------------------ +# +[AudioStateTrigger] +subsystem=LaserGun2 +attribute=SimulationState +audio_component=LaserFireExtComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=1.0 +dump_value=0 + + diff --git a/CONTENT/RP/AUDIO/PLYEXT.SCP b/CONTENT/RP/AUDIO/PLYEXT.SCP new file mode 100644 index 0000000..01e611e --- /dev/null +++ b/CONTENT/RP/AUDIO/PLYEXT.SCP @@ -0,0 +1,96 @@ +# +#------------------------------------------------------------------ +# Player External Audio Script +#------------------------------------------------------------------ +# + +# +#------------------------------------------------------------------ +# AudioRenderTypes +# +# TransientAudioRenderType = 0 +# SustainedAudioRenderType = 1 +# +#------------------------------------------------------------------ +# AudioSourcePriority +# +# MinAudioSourcePriority = 0 +# LowAudioSourcePriority = 1 +# MedAudioSourcePriority = 2 +# HighAudioSourcePriority = 3 +# MaxAudioSourcePriority = 4 +# +#------------------------------------------------------------------ +# AudioSourceMixPresence +# +# ManualAudioSourceMixPresence = 0 +# MaxAudioSourceMixPresence = 1 +# HighAudioSourceMixPresence = 2 +# MedAudioSourceMixPresence = 3 +# LowAudioSourceMixPresence = 4 +# MinAudioSourceMixPresence = 5 +# +#------------------------------------------------------------------ +# AudioControlID +# +# NullAudioControlID = 0 +# StartAudioControlID = 1 +# StopAudioControlID = 2 +# VolumeAudioControlID = 3 +# PitchAudioControlID = 4 +# BrightnessAudioControlID = 5 +# AttackVolumeAudioControlID = 6 +# AttackTimeAudioControlID = 7 +# AudioControlIDCount = 8 +# + +# +#------------------------------------------------------------------ +# Audio locations +#------------------------------------------------------------------ +# + +[L4AudioLocation] +location_offset=0.0,0.0,0.0 +name=OriginLocation + +# +#------------------------------------------------------------------ +# Audio source components +#------------------------------------------------------------------ +# + +# +# Translocation components +# + +[Dynamic3DPatchSource] +location=OriginLocation +resource=TranslocationExt01 +priority=1 +mix_presence=3 +volume_mix_level=1.0 +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=0 +use_attack_time_scale=0 +has_compression_curve=0 +compression_duration=0.0 +name=TranslocationComponent01 + +# +#------------------------------------------------------------------ +# Translocation trigger +#------------------------------------------------------------------ +# + +[AudioStateTrigger] +subsystem=Entity +attribute=SimulationState +audio_component=TranslocationComponent01 +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=4.0 +dump_value=0 + diff --git a/CONTENT/RP/AUDIO/PLYINT.SCP b/CONTENT/RP/AUDIO/PLYINT.SCP new file mode 100644 index 0000000..4c8558e --- /dev/null +++ b/CONTENT/RP/AUDIO/PLYINT.SCP @@ -0,0 +1,143 @@ +# +#------------------------------------------------------------------ +# Player Audio Script +#------------------------------------------------------------------ +# + +# +#------------------------------------------------------------------ +# AudioRenderTypes +# +# TransientAudioRenderType = 0 +# SustainedAudioRenderType = 1 +# +#------------------------------------------------------------------ +# AudioSourcePriority +# +# MinAudioSourcePriority = 0 +# LowAudioSourcePriority = 1 +# MedAudioSourcePriority = 2 +# HighAudioSourcePriority = 3 +# MaxAudioSourcePriority = 4 +# +#------------------------------------------------------------------ +# AudioSourceMixPresence +# +# ManualAudioSourceMixPresence = 0 +# MaxAudioSourceMixPresence = 1 +# HighAudioSourceMixPresence = 2 +# MedAudioSourceMixPresence = 3 +# LowAudioSourceMixPresence = 4 +# MinAudioSourceMixPresence = 5 +# +#------------------------------------------------------------------ +# AudioControlID +# +# NullAudioControlID = 0 +# StartAudioControlID = 1 +# StopAudioControlID = 2 +# VolumeAudioControlID = 3 +# PitchAudioControlID = 4 +# BrightnessAudioControlID = 5 +# AttackVolumeAudioControlID = 6 +# AttackTimeAudioControlID = 7 +# AudioControlIDCount = 8 +# + +# +#------------------------------------------------------------------ +# Audio locations +#------------------------------------------------------------------ +# + +[L4AudioLocation] +location_offset=0.0,0.0,0.0 +name=OriginLocation + +# +#------------------------------------------------------------------ +# Audio source components +#------------------------------------------------------------------ +# + + +# +# Translocation components +# + +[DirectPatchSource] +location=OriginLocation +resource=Translocation01 +position=0 +priority=4 +mix_presence=1 +volume_mix_level=0.95 +pitch_mix_offset=0.0 +brightness_mix_level=0.0 +use_brightness_scale=0 +use_attack_time_scale=0 +has_compression_curve=1 +compression_duration=4.0 +name=TranslocationComponent01 + +[DirectPatchSource] +location=OriginLocation +resource=Translocation02 +position=1 +priority=4 +mix_presence=1 +volume_mix_level=1.0 +pitch_mix_offset=0.0 +brightness_mix_level=0.0 +use_brightness_scale=0 +use_attack_time_scale=0 +has_compression_curve=1 +compression_duration=4.0 +name=TranslocationComponent02 + +# +#------------------------------------------------------------------ +# Translocation trigger +#------------------------------------------------------------------ +# + +[AudioStateTrigger] +subsystem=Entity +attribute=SimulationState +audio_component=TranslocationComponent01 +trigger_state=3 +inverse_trigger=0 +control_ID=1 +control_value=4.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Entity +attribute=SimulationState +audio_component=TranslocationComponent02 +trigger_state=3 +inverse_trigger=0 +control_ID=1 +control_value=4.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Entity +attribute=SimulationState +audio_component=TranslocationComponent01 +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=4.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Entity +attribute=SimulationState +audio_component=TranslocationComponent02 +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=4.0 +dump_value=0 + diff --git a/CONTENT/RP/AUDIO/QUARK.SCP b/CONTENT/RP/AUDIO/QUARK.SCP new file mode 100644 index 0000000..467e0e4 --- /dev/null +++ b/CONTENT/RP/AUDIO/QUARK.SCP @@ -0,0 +1,160 @@ +# +#------------------------------------------------------------------ +# Quark Audio Script +#------------------------------------------------------------------ +# + +# +#------------------------------------------------------------------ +# AudioRenderTypes +# +# TransientAudioRenderType = 0 +# SustainedAudioRenderType = 1 +# +#------------------------------------------------------------------ +# AudioSourcePriority +# +# MinAudioSourcePriority = 0 +# LowAudioSourcePriority = 1 +# MedAudioSourcePriority = 2 +# HighAudioSourcePriority = 3 +# MaxAudioSourcePriority = 4 +# +#------------------------------------------------------------------ +# AudioSourceMixPresence +# +# ManualAudioSourceMixPresence = 0 +# MaxAudioSourceMixPresence = 1 +# HighAudioSourceMixPresence = 2 +# MedAudioSourceMixPresence = 3 +# LowAudioSourceMixPresence = 4 +# MinAudioSourceMixPresence = 5 +# +#------------------------------------------------------------------ +# AudioControlID +# +# NullAudioControlID = 0 +# StartAudioControlID = 1 +# StopAudioControlID = 2 +# VolumeAudioControlID = 3 +# PitchAudioControlID = 4 +# BrightnessAudioControlID = 5 +# AttackVolumeAudioControlID = 6 +# AttackTimeAudioControlID = 7 +# AudioControlIDCount = 8 +# + +# +#------------------------------------------------------------------ +# Includes +#------------------------------------------------------------------ +# +[include] +file=audio\vtvint.scp + +# +#------------------------------------------------------------------ +# Booster trigger +#------------------------------------------------------------------ +# +[AudioStateTrigger] +subsystem=Booster1 +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster2 +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster1 +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=1 +inverse_trigger=1 +control_ID=2 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster2 +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=1 +inverse_trigger=1 +control_ID=2 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Entity +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=2 +inverse_trigger=0 +control_ID=2 +control_value=0.0 +dump_value=0 + +# Booster Loop +[AudioStateTrigger] +subsystem=Booster1 +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster2 +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster1 +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=1 +inverse_trigger=1 +control_ID=2 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster2 +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=1 +inverse_trigger=1 +control_ID=2 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Entity +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=2 +inverse_trigger=0 +control_ID=2 +control_value=0.0 +dump_value=0 + diff --git a/CONTENT/RP/AUDIO/RDBEXT.SCP b/CONTENT/RP/AUDIO/RDBEXT.SCP new file mode 100644 index 0000000..6f47b48 --- /dev/null +++ b/CONTENT/RP/AUDIO/RDBEXT.SCP @@ -0,0 +1,70 @@ +# +#------------------------------------------------------------------ +# Road Block External Audio Script +#------------------------------------------------------------------ +# + +# +#------------------------------------------------------------------ +# AudioRenderTypes +# +# TransientAudioRenderType = 0 +# SustainedAudioRenderType = 1 +# +#------------------------------------------------------------------ +# AudioSourcePriority +# +# MinAudioSourcePriority = 0 +# LowAudioSourcePriority = 1 +# MedAudioSourcePriority = 2 +# HighAudioSourcePriority = 3 +# MaxAudioSourcePriority = 4 +# +#------------------------------------------------------------------ +# AudioSourceMixPresence +# +# ManualAudioSourceMixPresence = 0 +# MaxAudioSourceMixPresence = 1 +# HighAudioSourceMixPresence = 2 +# MedAudioSourceMixPresence = 3 +# LowAudioSourceMixPresence = 4 +# MinAudioSourceMixPresence = 5 +# +#------------------------------------------------------------------ +# AudioControlID +# +# NullAudioControlID = 0 +# StartAudioControlID = 1 +# StopAudioControlID = 2 +# VolumeAudioControlID = 3 +# PitchAudioControlID = 4 +# BrightnessAudioControlID = 5 +# AttackVolumeAudioControlID = 6 +# AttackTimeAudioControlID = 7 +# AudioControlIDCount = 8 +# + +# +#------------------------------------------------------------------ +# Includes +#------------------------------------------------------------------ +# +[include] +file=audio\vtvext.scp +file=audio\lsrext.scp + +# +#------------------------------------------------------------------ +# Laser trigger +#------------------------------------------------------------------ +# +[AudioStateTrigger] +subsystem=LaserGun1 +attribute=SimulationState +audio_component=LaserFireExtComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=1.0 +dump_value=0 + diff --git a/CONTENT/RP/AUDIO/REFINERY.SCP b/CONTENT/RP/AUDIO/REFINERY.SCP new file mode 100644 index 0000000..426ab31 --- /dev/null +++ b/CONTENT/RP/AUDIO/REFINERY.SCP @@ -0,0 +1,125 @@ +# +#------------------------------------------------------------------ +# Refinery Audio Script +#------------------------------------------------------------------ +# + +# +#------------------------------------------------------------------ +# AudioRenderTypes +# +# TransientAudioRenderType = 0 +# SustainedAudioRenderType = 1 +# +#------------------------------------------------------------------ +# AudioSourcePriority +# +# MinAudioSourcePriority = 0 +# LowAudioSourcePriority = 1 +# MedAudioSourcePriority = 2 +# HighAudioSourcePriority = 3 +# MaxAudioSourcePriority = 4 +# +#------------------------------------------------------------------ +# AudioSourceMixPresence +# +# ManualAudioSourceMixPresence = 0 +# MaxAudioSourceMixPresence = 1 +# HighAudioSourceMixPresence = 2 +# MedAudioSourceMixPresence = 3 +# LowAudioSourceMixPresence = 4 +# MinAudioSourceMixPresence = 5 +# +#------------------------------------------------------------------ +# AudioControlID +# +# NullAudioControlID = 0 +# StartAudioControlID = 1 +# StopAudioControlID = 2 +# VolumeAudioControlID = 3 +# PitchAudioControlID = 4 +# BrightnessAudioControlID = 5 +# AttackVolumeAudioControlID = 6 +# AttackTimeAudioControlID = 7 +# AudioControlIDCount = 8 +# + +# +#------------------------------------------------------------------ +# Audio locations +#------------------------------------------------------------------ +# + +[L4AudioLocation] +location_offset=-46.50,50.70,50.10 +name=Location01 + +[L4AudioLocation] +location_offset=74.70,50.70,50.10 +name=Location02 + +# +#------------------------------------------------------------------ +# Audio source components +#------------------------------------------------------------------ +# + +# +# Refinery component +# + +[Dynamic3DPatchSource] +location=Location01 +resource=Refinery06 +priority=1 +mix_presence=3 +volume_mix_level=0.95 +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=0 +use_attack_time_scale=0 +has_compression_curve=0 +compression_duration=0.0 +name=RefineryComponent01 + +[Dynamic3DPatchSource] +location=Location02 +resource=Refinery07 +priority=1 +mix_presence=3 +volume_mix_level=0.95 +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=0 +use_attack_time_scale=0 +has_compression_curve=0 +compression_duration=0.0 +name=RefineryComponent02 + +# +#------------------------------------------------------------------ +# Non-trigger watchers +#------------------------------------------------------------------ +# + +# +#------------------------------------------------------------------ +# Trigger watchers +#------------------------------------------------------------------ +# + +# +# Refinery : Start control +# + +[AudioControlSend] +audio_component=RefineryComponent01 +control_ID=1 +control_value=0.0 + +[AudioControlSend] +audio_component=RefineryComponent02 +control_ID=1 +control_value=0.0 + + diff --git a/CONTENT/RP/AUDIO/RIPPER.SCP b/CONTENT/RP/AUDIO/RIPPER.SCP new file mode 100644 index 0000000..f86514a --- /dev/null +++ b/CONTENT/RP/AUDIO/RIPPER.SCP @@ -0,0 +1,176 @@ +# +#------------------------------------------------------------------ +# Ripper Audio Script +#------------------------------------------------------------------ +# + +# +#------------------------------------------------------------------ +# AudioRenderTypes +# +# TransientAudioRenderType = 0 +# SustainedAudioRenderType = 1 +# +#------------------------------------------------------------------ +# AudioSourcePriority +# +# MinAudioSourcePriority = 0 +# LowAudioSourcePriority = 1 +# MedAudioSourcePriority = 2 +# HighAudioSourcePriority = 3 +# MaxAudioSourcePriority = 4 +# +#------------------------------------------------------------------ +# AudioSourceMixPresence +# +# ManualAudioSourceMixPresence = 0 +# MaxAudioSourceMixPresence = 1 +# HighAudioSourceMixPresence = 2 +# MedAudioSourceMixPresence = 3 +# LowAudioSourceMixPresence = 4 +# MinAudioSourceMixPresence = 5 +# +#------------------------------------------------------------------ +# AudioControlID +# +# NullAudioControlID = 0 +# StartAudioControlID = 1 +# StopAudioControlID = 2 +# VolumeAudioControlID = 3 +# PitchAudioControlID = 4 +# BrightnessAudioControlID = 5 +# AttackVolumeAudioControlID = 6 +# AttackTimeAudioControlID = 7 +# AudioControlIDCount = 8 +# + +# +#------------------------------------------------------------------ +# Includes +#------------------------------------------------------------------ +# +[include] +file=audio\vtvint.scp +file=audio\vtvmne.scp +file=audio\chute.scp + +# +#------------------------------------------------------------------ +# Booster trigger +#------------------------------------------------------------------ +# +[AudioStateTrigger] +subsystem=Booster1 +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster2 +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster1 +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=1 +inverse_trigger=1 +control_ID=2 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster2 +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=1 +inverse_trigger=1 +control_ID=2 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Entity +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=2 +inverse_trigger=0 +control_ID=2 +control_value=0.0 +dump_value=0 + +# Booster Loop +[AudioStateTrigger] +subsystem=Booster1 +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster2 +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster1 +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=1 +inverse_trigger=1 +control_ID=2 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster2 +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=1 +inverse_trigger=1 +control_ID=2 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Entity +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=2 +inverse_trigger=0 +control_ID=2 +control_value=0.0 +dump_value=0 + +# +#------------------------------------------------------------------ +# Mine trigger +#------------------------------------------------------------------ +# +[AudioStateTrigger] +subsystem=DemopackDropper +attribute=SimulationState +audio_component=MineReleaseComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=1.0 +dump_value=0 diff --git a/CONTENT/RP/AUDIO/RIVET.SCP b/CONTENT/RP/AUDIO/RIVET.SCP new file mode 100644 index 0000000..4b205fb --- /dev/null +++ b/CONTENT/RP/AUDIO/RIVET.SCP @@ -0,0 +1,97 @@ +# +#------------------------------------------------------------------ +# Rivet Audio Script +#------------------------------------------------------------------ +# + +# +#------------------------------------------------------------------ +# AudioRenderTypes +# +# TransientAudioRenderType = 0 +# SustainedAudioRenderType = 1 +# +#------------------------------------------------------------------ +# AudioSourcePriority +# +# MinAudioSourcePriority = 0 +# LowAudioSourcePriority = 1 +# MedAudioSourcePriority = 2 +# HighAudioSourcePriority = 3 +# MaxAudioSourcePriority = 4 +# +#------------------------------------------------------------------ +# AudioSourceMixPresence +# +# ManualAudioSourceMixPresence = 0 +# MaxAudioSourceMixPresence = 1 +# HighAudioSourceMixPresence = 2 +# MedAudioSourceMixPresence = 3 +# LowAudioSourceMixPresence = 4 +# MinAudioSourceMixPresence = 5 +# +#------------------------------------------------------------------ +# AudioControlID +# +# NullAudioControlID = 0 +# StartAudioControlID = 1 +# StopAudioControlID = 2 +# VolumeAudioControlID = 3 +# PitchAudioControlID = 4 +# BrightnessAudioControlID = 5 +# AttackVolumeAudioControlID = 6 +# AttackTimeAudioControlID = 7 +# AudioControlIDCount = 8 +# + +# +#------------------------------------------------------------------ +# Audio locations +#------------------------------------------------------------------ +# +[L4AudioLocation] +location_offset=0.0,0.0,0.0 +name=OriginLocation + +# +#------------------------------------------------------------------ +# Audio source components +#------------------------------------------------------------------ +# + +# +# Rivet component +# +[Dynamic3DPatchSource] +location=OriginLocation +resource=RivetTravel01 +priority=1 +mix_presence=0 +volume_mix_level=0.9 +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=0 +use_attack_time_scale=0 +has_compression_curve=0 +compression_duration=0.0 +name=RivetComponent + +# +#------------------------------------------------------------------ +# Non-trigger watchers +#------------------------------------------------------------------ +# + +# +#------------------------------------------------------------------ +# Trigger watchers +#------------------------------------------------------------------ +# + +# +# Rivet : Start control +# +[AudioControlSend] +audio_component=RivetComponent +control_ID=1 +control_value=0.0 diff --git a/CONTENT/RP/AUDIO/RIVETEXP.SCP b/CONTENT/RP/AUDIO/RIVETEXP.SCP new file mode 100644 index 0000000..d39fdf7 --- /dev/null +++ b/CONTENT/RP/AUDIO/RIVETEXP.SCP @@ -0,0 +1,128 @@ +# +#------------------------------------------------------------------ +# Rivet Explode External Audio Script +#------------------------------------------------------------------ +# + +# +#------------------------------------------------------------------ +# AudioRenderTypes +# +# TransientAudioRenderType = 0 +# SustainedAudioRenderType = 1 +# +#------------------------------------------------------------------ +# AudioSourcePriority +# +# MinAudioSourcePriority = 0 +# LowAudioSourcePriority = 1 +# MedAudioSourcePriority = 2 +# HighAudioSourcePriority = 3 +# MaxAudioSourcePriority = 4 +# +#------------------------------------------------------------------ +# AudioSourceMixPresence +# +# ManualAudioSourceMixPresence = 0 +# MaxAudioSourceMixPresence = 1 +# HighAudioSourceMixPresence = 2 +# MedAudioSourceMixPresence = 3 +# LowAudioSourceMixPresence = 4 +# MinAudioSourceMixPresence = 5 +# +#------------------------------------------------------------------ +# AudioControlID +# +# NullAudioControlID = 0 +# StartAudioControlID = 1 +# StopAudioControlID = 2 +# VolumeAudioControlID = 3 +# PitchAudioControlID = 4 +# BrightnessAudioControlID = 5 +# AttackVolumeAudioControlID = 6 +# AttackTimeAudioControlID = 7 +# AudioControlIDCount = 8 +# + +# +#------------------------------------------------------------------ +# Audio locations +#------------------------------------------------------------------ +# +[L4AudioLocation] +location_offset=0.0,0.0,0.0 +name=OriginLocation + +# +#------------------------------------------------------------------ +# Audio source components +#------------------------------------------------------------------ +# + +# +# Rivet Explode component +# +[Dynamic3DPatchSource] +location=OriginLocation +resource=RivetHitExt01 +priority=1 +mix_presence=0 +volume_mix_level=0.75 +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=0 +use_attack_time_scale=0 +has_compression_curve=0 +compression_duration=0.0 +name=RivetExplodeExtComponent + +# +#------------------------------------------------------------------ +# Non-trigger watchers +#------------------------------------------------------------------ +# + +#------------------------------------------------------------------ + +# +# Rivet Explode : resource select +# +[AudioResourceSelector] +audio_source=RivetExplodeExtComponent +audio_resource_index=RivetHitExtIndex +control_ID=100 +min_control_value=0.0 +max_control_value=1.0 +dump_value=0 +name=RivetHitExtResourceSelect + +# +# Rivet Explode : Sample and hold -> resource select +# +[AudioSampleAndHold] +audio_component=RivetHitExtResourceSelect +control_ID=100 +sample_duration=0.0 +name=RivetHitExtSampleAndHold + +# +#------------------------------------------------------------------ +# Trigger watchers +#------------------------------------------------------------------ +# + +# +# Rivet Explode : Sample +# +[AudioControlSend] +audio_component=RivetHitExtSampleAndHold +control_ID=1 +control_value=0.0 + +# +# Rivet Explode : Start control +# +[AudioControlSend] +audio_component=RivetExplodeExtComponent +control_ID=1 +control_value=0.5 diff --git a/CONTENT/RP/AUDIO/ROADBLK.SCP b/CONTENT/RP/AUDIO/ROADBLK.SCP new file mode 100644 index 0000000..55bebf7 --- /dev/null +++ b/CONTENT/RP/AUDIO/ROADBLK.SCP @@ -0,0 +1,219 @@ +# +#------------------------------------------------------------------ +# Road Block Audio Script +#------------------------------------------------------------------ +# + +# +#------------------------------------------------------------------ +# AudioRenderTypes +# +# TransientAudioRenderType = 0 +# SustainedAudioRenderType = 1 +# +#------------------------------------------------------------------ +# AudioSourcePriority +# +# MinAudioSourcePriority = 0 +# LowAudioSourcePriority = 1 +# MedAudioSourcePriority = 2 +# HighAudioSourcePriority = 3 +# MaxAudioSourcePriority = 4 +# +#------------------------------------------------------------------ +# AudioSourceMixPresence +# +# ManualAudioSourceMixPresence = 0 +# MaxAudioSourceMixPresence = 1 +# HighAudioSourceMixPresence = 2 +# MedAudioSourceMixPresence = 3 +# LowAudioSourceMixPresence = 4 +# MinAudioSourceMixPresence = 5 +# +#------------------------------------------------------------------ +# AudioControlID +# +# NullAudioControlID = 0 +# StartAudioControlID = 1 +# StopAudioControlID = 2 +# VolumeAudioControlID = 3 +# PitchAudioControlID = 4 +# BrightnessAudioControlID = 5 +# AttackVolumeAudioControlID = 6 +# AttackTimeAudioControlID = 7 +# AudioControlIDCount = 8 +# + +# +#------------------------------------------------------------------ +# Includes +#------------------------------------------------------------------ +# +[include] +file=audio\vtvint.scp +file=audio\vtvrvt.scp +file=audio\vtvlsr.scp +file=audio\vtvmne.scp +file=audio\chute.scp + +# +#------------------------------------------------------------------ +# Booster trigger +#------------------------------------------------------------------ +# +[AudioStateTrigger] +subsystem=Booster1 +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster2 +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster1 +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=1 +inverse_trigger=1 +control_ID=2 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster2 +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=1 +inverse_trigger=1 +control_ID=2 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Entity +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=2 +inverse_trigger=0 +control_ID=2 +control_value=0.0 +dump_value=0 + +# Booster Loop +[AudioStateTrigger] +subsystem=Booster1 +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster2 +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster1 +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=1 +inverse_trigger=1 +control_ID=2 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster2 +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=1 +inverse_trigger=1 +control_ID=2 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Entity +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=2 +inverse_trigger=0 +control_ID=2 +control_value=0.0 +dump_value=0 + +# +#------------------------------------------------------------------ +# Rivet trigger +#------------------------------------------------------------------ +# +[AudioStateTrigger] +subsystem=RivetGun +attribute=SimulationState +audio_component=RivetFireCenterComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=0.5 +dump_value=0 + +# +#------------------------------------------------------------------ +# Laser trigger +#------------------------------------------------------------------ +# +[AudioStateTrigger] +subsystem=LaserGun1 +attribute=SimulationState +audio_component=LaserFireIntComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=2.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=LaserGun1 +attribute=SimulationState +audio_component=LaserFireIntEmptyComponent +trigger_state=3 +inverse_trigger=0 +control_ID=1 +control_value=0.5 +dump_value=0 + +# +#------------------------------------------------------------------ +# Mine trigger +#------------------------------------------------------------------ +# +[AudioStateTrigger] +subsystem=DemopackDropper +attribute=SimulationState +audio_component=MineReleaseComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=1.0 +dump_value=0 + diff --git a/CONTENT/RP/AUDIO/RVTEXPC.SCP b/CONTENT/RP/AUDIO/RVTEXPC.SCP new file mode 100644 index 0000000..33dd5f5 --- /dev/null +++ b/CONTENT/RP/AUDIO/RVTEXPC.SCP @@ -0,0 +1,128 @@ +# +#------------------------------------------------------------------ +# Rivet Explode Craft Audio Script +#------------------------------------------------------------------ +# + +# +#------------------------------------------------------------------ +# AudioRenderTypes +# +# TransientAudioRenderType = 0 +# SustainedAudioRenderType = 1 +# +#------------------------------------------------------------------ +# AudioSourcePriority +# +# MinAudioSourcePriority = 0 +# LowAudioSourcePriority = 1 +# MedAudioSourcePriority = 2 +# HighAudioSourcePriority = 3 +# MaxAudioSourcePriority = 4 +# +#------------------------------------------------------------------ +# AudioSourceMixPresence +# +# ManualAudioSourceMixPresence = 0 +# MaxAudioSourceMixPresence = 1 +# HighAudioSourceMixPresence = 2 +# MedAudioSourceMixPresence = 3 +# LowAudioSourceMixPresence = 4 +# MinAudioSourceMixPresence = 5 +# +#------------------------------------------------------------------ +# AudioControlID +# +# NullAudioControlID = 0 +# StartAudioControlID = 1 +# StopAudioControlID = 2 +# VolumeAudioControlID = 3 +# PitchAudioControlID = 4 +# BrightnessAudioControlID = 5 +# AttackVolumeAudioControlID = 6 +# AttackTimeAudioControlID = 7 +# AudioControlIDCount = 8 +# + +# +#------------------------------------------------------------------ +# Audio locations +#------------------------------------------------------------------ +# +[L4AudioLocation] +location_offset=0.0,0.0,0.0 +name=OriginLocation + +# +#------------------------------------------------------------------ +# Audio source components +#------------------------------------------------------------------ +# + +# +# Rivet Explode component +# +[Dynamic3DPatchSource] +location=OriginLocation +resource=RivetHitCraft01 +priority=1 +mix_presence=0 +volume_mix_level=1.0 +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=0 +use_attack_time_scale=0 +has_compression_curve=0 +compression_duration=0.0 +name=RivetExplodeCraftComponent + +# +#------------------------------------------------------------------ +# Non-trigger watchers +#------------------------------------------------------------------ +# + +#------------------------------------------------------------------ + +# +# Rivet Explode : resource select +# +[AudioResourceSelector] +audio_source=RivetExplodeCraftComponent +audio_resource_index=RivetHitCraftIndex +control_ID=100 +min_control_value=0.0 +max_control_value=1.0 +dump_value=0 +name=RivetHitCraftResourceSelect + +# +# Rivet Explode : Sample and hold -> resource select +# +[AudioSampleAndHold] +audio_component=RivetHitCraftResourceSelect +control_ID=100 +sample_duration=0.0 +name=RivetHitCraftSampleAndHold + +# +#------------------------------------------------------------------ +# Trigger watchers +#------------------------------------------------------------------ +# + +# +# Rivet Explode : Sample +# +[AudioControlSend] +audio_component=RivetHitCraftSampleAndHold +control_ID=1 +control_value=0.0 + +# +# Rivet Explode : Start control +# +[AudioControlSend] +audio_component=RivetExplodeCraftComponent +control_ID=1 +control_value=1.0 diff --git a/CONTENT/RP/AUDIO/RVTEXPI.SCP b/CONTENT/RP/AUDIO/RVTEXPI.SCP new file mode 100644 index 0000000..c2074d7 --- /dev/null +++ b/CONTENT/RP/AUDIO/RVTEXPI.SCP @@ -0,0 +1,150 @@ +# +#------------------------------------------------------------------ +# Rivet Explode Internal Audio Script +#------------------------------------------------------------------ +# + +# +#------------------------------------------------------------------ +# AudioRenderTypes +# +# TransientAudioRenderType = 0 +# SustainedAudioRenderType = 1 +# +#------------------------------------------------------------------ +# AudioSourcePriority +# +# MinAudioSourcePriority = 0 +# LowAudioSourcePriority = 1 +# MedAudioSourcePriority = 2 +# HighAudioSourcePriority = 3 +# MaxAudioSourcePriority = 4 +# +#------------------------------------------------------------------ +# AudioSourceMixPresence +# +# ManualAudioSourceMixPresence = 0 +# MaxAudioSourceMixPresence = 1 +# HighAudioSourceMixPresence = 2 +# MedAudioSourceMixPresence = 3 +# LowAudioSourceMixPresence = 4 +# MinAudioSourceMixPresence = 5 +# +#------------------------------------------------------------------ +# AudioControlID +# +# NullAudioControlID = 0 +# StartAudioControlID = 1 +# StopAudioControlID = 2 +# VolumeAudioControlID = 3 +# PitchAudioControlID = 4 +# BrightnessAudioControlID = 5 +# AttackVolumeAudioControlID = 6 +# AttackTimeAudioControlID = 7 +# AudioControlIDCount = 8 +# + +# +#------------------------------------------------------------------ +# Audio locations +#------------------------------------------------------------------ +# + +[L4AudioLocation] +location_offset=0.0,0.0,0.0 +name=OriginLocation + +# +#------------------------------------------------------------------ +# Audio source components +#------------------------------------------------------------------ +# + +# +# Rivet Explode component +# + +[!Dynamic3DPatchSource] +location=OriginLocation +resource=RivetHitInt01 +priority=2 +mix_presence=2 +volume_mix_level=1.0 +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=0 +use_attack_time_scale=0 +has_compression_curve=1 +compression_duration=1.0 +name=RivetExplodeIntComponent + +[Static3DPatchSource] +location=OriginLocation +resource=RivetHitInt01 +priority=2 +mix_presence=2 +volume_mix_level=1.0 +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=0 +use_attack_time_scale=0 +has_compression_curve=1 +compression_duration=1.0 +use_internal=0 +name=RivetExplodeIntComponent + +# +#------------------------------------------------------------------ +# Non-trigger watchers +#------------------------------------------------------------------ +# + +#------------------------------------------------------------------ + +# +# Rivet Explode : resource select +# + +[AudioResourceSelector] +audio_source=RivetExplodeIntComponent +audio_resource_index=RivetHitIntIndex +control_ID=100 +min_control_value=0.0 +max_control_value=1.0 +dump_value=0 +name=RivetHitIntResourceSelect + +# +# Rivet Explode : Sample and hold -> resource select +# + +[AudioSampleAndHold] +audio_component=RivetHitIntResourceSelect +control_ID=100 +sample_duration=0.0 +name=RivetHitIntSampleAndHold + +# +#------------------------------------------------------------------ +# Trigger watchers +#------------------------------------------------------------------ +# + +# +# Rivet Explode : Sample +# + +[AudioControlSend] +audio_component=RivetHitIntSampleAndHold +control_ID=1 +control_value=0.0 + +# +# Rivet Explode : Start control +# + +[AudioControlSend] +audio_component=RivetExplodeIntComponent +control_ID=1 +control_value=1.5 + diff --git a/CONTENT/RP/AUDIO/SCORING.SCP b/CONTENT/RP/AUDIO/SCORING.SCP new file mode 100644 index 0000000..1eb3ca7 --- /dev/null +++ b/CONTENT/RP/AUDIO/SCORING.SCP @@ -0,0 +1,166 @@ +# +#------------------------------------------------------------------ +# VTV Scoring Script +#------------------------------------------------------------------ +# + +# +#------------------------------------------------------------------ +# AudioRenderTypes +# +# TransientAudioRenderType = 0 +# SustainedAudioRenderType = 1 +# +#------------------------------------------------------------------ +# AudioSourcePriority +# +# MinAudioSourcePriority = 0 +# LowAudioSourcePriority = 1 +# MedAudioSourcePriority = 2 +# HighAudioSourcePriority = 3 +# MaxAudioSourcePriority = 4 +# +#------------------------------------------------------------------ +# AudioSourceMixPresence +# +# ManualAudioSourceMixPresence = 0 +# MaxAudioSourceMixPresence = 1 +# HighAudioSourceMixPresence = 2 +# MedAudioSourceMixPresence = 3 +# LowAudioSourceMixPresence = 4 +# MinAudioSourceMixPresence = 5 +# +#------------------------------------------------------------------ +# AudioControlID +# +# NullAudioControlID = 0 +# StartAudioControlID = 1 +# StopAudioControlID = 2 +# VolumeAudioControlID = 3 +# PitchAudioControlID = 4 +# BrightnessAudioControlID = 5 +# AttackVolumeAudioControlID = 6 +# AttackTimeAudioControlID = 7 +# AudioControlIDCount = 8 +# + +# +# Score Zone component1 +# +[DirectPatchSource] +location=OriginLocation +resource=ScoreZone01 +position=0 +priority=4 +mix_presence=0 +volume_mix_level=0.93 +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=0 +use_attack_time_scale=0 +has_compression_curve=1 +compression_duration=3.0 +name=ScoreZoneComponent1 + +# +# Score Zone component2 +# +[DirectPatchSource] +location=OriginLocation +resource=ScoreZone01 +position=1 +priority=4 +mix_presence=0 +volume_mix_level=0.93 +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=0 +use_attack_time_scale=0 +has_compression_curve=0 +compression_duration=0.0 +name=ScoreZoneComponent2 + +# +# Score Kill component1 +# +[DirectPatchSource] +location=OriginLocation +resource=ScoreKill01 +position=1 +priority=4 +mix_presence=0 +volume_mix_level=0.88 +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=0 +use_attack_time_scale=0 +has_compression_curve=0 +compression_duration=0.0 +name=ScoreKillComponent1 + +# +# Score Kill component2 +# +[DirectPatchSource] +location=OriginLocation +resource=ScoreKill01 +position=0 +priority=4 +mix_presence=0 +volume_mix_level=0.88 +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=0 +use_attack_time_scale=0 +has_compression_curve=0 +compression_duration=0.0 +name=ScoreKillComponent2 + +# +#------------------------------------------------------------------ +# Score trigger +#------------------------------------------------------------------ +# + +# Score Zone +[AudioStateTrigger] +subsystem=Entity +attribute=ScoreState +audio_component=ScoreZoneComponent1 +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=3.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Entity +attribute=ScoreState +audio_component=ScoreZoneComponent2 +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=3.0 +dump_value=0 + +# Score Kill +[AudioStateTrigger] +subsystem=Entity +attribute=ScoreState +audio_component=ScoreKillComponent1 +trigger_state=2 +inverse_trigger=0 +control_ID=1 +control_value=3.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Entity +attribute=ScoreState +audio_component=ScoreKillComponent2 +trigger_state=2 +inverse_trigger=0 +control_ID=1 +control_value=3.0 +dump_value=0 + diff --git a/CONTENT/RP/AUDIO/SKEETER.SCP b/CONTENT/RP/AUDIO/SKEETER.SCP new file mode 100644 index 0000000..7a10a14 --- /dev/null +++ b/CONTENT/RP/AUDIO/SKEETER.SCP @@ -0,0 +1,187 @@ +# +#------------------------------------------------------------------ +# Spitter Audio Script +#------------------------------------------------------------------ +# + +# +#------------------------------------------------------------------ +# AudioRenderTypes +# +# TransientAudioRenderType = 0 +# SustainedAudioRenderType = 1 +# +#------------------------------------------------------------------ +# AudioSourcePriority +# +# MinAudioSourcePriority = 0 +# LowAudioSourcePriority = 1 +# MedAudioSourcePriority = 2 +# HighAudioSourcePriority = 3 +# MaxAudioSourcePriority = 4 +# +#------------------------------------------------------------------ +# AudioSourceMixPresence +# +# ManualAudioSourceMixPresence = 0 +# MaxAudioSourceMixPresence = 1 +# HighAudioSourceMixPresence = 2 +# MedAudioSourceMixPresence = 3 +# LowAudioSourceMixPresence = 4 +# MinAudioSourceMixPresence = 5 +# +#------------------------------------------------------------------ +# AudioControlID +# +# NullAudioControlID = 0 +# StartAudioControlID = 1 +# StopAudioControlID = 2 +# VolumeAudioControlID = 3 +# PitchAudioControlID = 4 +# BrightnessAudioControlID = 5 +# AttackVolumeAudioControlID = 6 +# AttackTimeAudioControlID = 7 +# AudioControlIDCount = 8 +# + +# +#------------------------------------------------------------------ +# Includes +#------------------------------------------------------------------ +# +[include] +file=audio\vtvint.scp +file=audio\vtvlsr.scp +file=audio\chute.scp + +# +#------------------------------------------------------------------ +# Booster trigger +#------------------------------------------------------------------ +# +[AudioStateTrigger] +subsystem=Booster1 +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster2 +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster1 +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=1 +inverse_trigger=1 +control_ID=2 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster2 +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=1 +inverse_trigger=1 +control_ID=2 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Entity +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=2 +inverse_trigger=0 +control_ID=2 +control_value=0.0 +dump_value=0 + +# Booster Loop +[AudioStateTrigger] +subsystem=Booster1 +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster2 +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster1 +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=1 +inverse_trigger=1 +control_ID=2 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster2 +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=1 +inverse_trigger=1 +control_ID=2 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Entity +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=2 +inverse_trigger=0 +control_ID=2 +control_value=0.0 +dump_value=0 + +# +#------------------------------------------------------------------ +# Laser trigger +#------------------------------------------------------------------ +# +[AudioStateTrigger] +subsystem=LaserGun2 +attribute=SimulationState +audio_component=LaserFireIntComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=2.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=LaserGun2 +attribute=SimulationState +audio_component=LaserFireIntEmptyComponent +trigger_state=3 +inverse_trigger=0 +control_ID=1 +control_value=0.5 +dump_value=0 + diff --git a/CONTENT/RP/AUDIO/SKTEXT.SCP b/CONTENT/RP/AUDIO/SKTEXT.SCP new file mode 100644 index 0000000..e0f9085 --- /dev/null +++ b/CONTENT/RP/AUDIO/SKTEXT.SCP @@ -0,0 +1,71 @@ +# +#------------------------------------------------------------------ +# Skeeter External Audio Script +#------------------------------------------------------------------ +# + +# +#------------------------------------------------------------------ +# AudioRenderTypes +# +# TransientAudioRenderType = 0 +# SustainedAudioRenderType = 1 +# +#------------------------------------------------------------------ +# AudioSourcePriority +# +# MinAudioSourcePriority = 0 +# LowAudioSourcePriority = 1 +# MedAudioSourcePriority = 2 +# HighAudioSourcePriority = 3 +# MaxAudioSourcePriority = 4 +# +#------------------------------------------------------------------ +# AudioSourceMixPresence +# +# ManualAudioSourceMixPresence = 0 +# MaxAudioSourceMixPresence = 1 +# HighAudioSourceMixPresence = 2 +# MedAudioSourceMixPresence = 3 +# LowAudioSourceMixPresence = 4 +# MinAudioSourceMixPresence = 5 +# +#------------------------------------------------------------------ +# AudioControlID +# +# NullAudioControlID = 0 +# StartAudioControlID = 1 +# StopAudioControlID = 2 +# VolumeAudioControlID = 3 +# PitchAudioControlID = 4 +# BrightnessAudioControlID = 5 +# AttackVolumeAudioControlID = 6 +# AttackTimeAudioControlID = 7 +# AudioControlIDCount = 8 +# + +# +#------------------------------------------------------------------ +# Includes +#------------------------------------------------------------------ +# +[include] +file=audio\vtvext.scp +file=audio\lsrext.scp + +# +#------------------------------------------------------------------ +# Laser trigger +#------------------------------------------------------------------ +# +[AudioStateTrigger] +subsystem=LaserGun2 +attribute=SimulationState +audio_component=LaserFireExtComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=1.0 +dump_value=0 + + diff --git a/CONTENT/RP/AUDIO/SPITTER.SCP b/CONTENT/RP/AUDIO/SPITTER.SCP new file mode 100644 index 0000000..50279c4 --- /dev/null +++ b/CONTENT/RP/AUDIO/SPITTER.SCP @@ -0,0 +1,187 @@ +# +#------------------------------------------------------------------ +# Spitter Audio Script +#------------------------------------------------------------------ +# + +# +#------------------------------------------------------------------ +# AudioRenderTypes +# +# TransientAudioRenderType = 0 +# SustainedAudioRenderType = 1 +# +#------------------------------------------------------------------ +# AudioSourcePriority +# +# MinAudioSourcePriority = 0 +# LowAudioSourcePriority = 1 +# MedAudioSourcePriority = 2 +# HighAudioSourcePriority = 3 +# MaxAudioSourcePriority = 4 +# +#------------------------------------------------------------------ +# AudioSourceMixPresence +# +# ManualAudioSourceMixPresence = 0 +# MaxAudioSourceMixPresence = 1 +# HighAudioSourceMixPresence = 2 +# MedAudioSourceMixPresence = 3 +# LowAudioSourceMixPresence = 4 +# MinAudioSourceMixPresence = 5 +# +#------------------------------------------------------------------ +# AudioControlID +# +# NullAudioControlID = 0 +# StartAudioControlID = 1 +# StopAudioControlID = 2 +# VolumeAudioControlID = 3 +# PitchAudioControlID = 4 +# BrightnessAudioControlID = 5 +# AttackVolumeAudioControlID = 6 +# AttackTimeAudioControlID = 7 +# AudioControlIDCount = 8 +# + +# +#------------------------------------------------------------------ +# Includes +#------------------------------------------------------------------ +# +[include] +file=audio\vtvint.scp +file=audio\vtvrvt.scp +file=audio\chute.scp + +# +#------------------------------------------------------------------ +# Booster trigger +#------------------------------------------------------------------ +# +[AudioStateTrigger] +subsystem=Booster1 +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster2 +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster1 +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=1 +inverse_trigger=1 +control_ID=2 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster2 +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=1 +inverse_trigger=1 +control_ID=2 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Entity +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=2 +inverse_trigger=0 +control_ID=2 +control_value=0.0 +dump_value=0 + +# Booster Loop +[AudioStateTrigger] +subsystem=Booster1 +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster2 +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster1 +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=1 +inverse_trigger=1 +control_ID=2 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster2 +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=1 +inverse_trigger=1 +control_ID=2 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Entity +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=2 +inverse_trigger=0 +control_ID=2 +control_value=0.0 +dump_value=0 + +# +#------------------------------------------------------------------ +# Rivet trigger +#------------------------------------------------------------------ +# +[AudioStateTrigger] +subsystem=RivetGun1 +attribute=SimulationState +audio_component=RivetFireLeftComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=0.5 +dump_value=0 + +[AudioStateTrigger] +subsystem=RivetGun2 +attribute=SimulationState +audio_component=RivetFireRightComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=0.5 +dump_value=0 + diff --git a/CONTENT/RP/AUDIO/SYMBOLS.SCP b/CONTENT/RP/AUDIO/SYMBOLS.SCP new file mode 100644 index 0000000..baa1963 --- /dev/null +++ b/CONTENT/RP/AUDIO/SYMBOLS.SCP @@ -0,0 +1,40 @@ +[macro] +BoxedSolid::StoneMaterial=0 +BoxedSolid::GravelMaterial=1 +BoxedSolid::ConcreteMaterial=2 +BoxedSolid::WoodMaterial=4 +BoxedSolid::RockMaterial=5 +BoxedSolid::OurCraftMaterial=6 +BoxedSolid::OtherCraftMaterial=7 +TransientAudioRenderType=0 +SustainedAudioRenderType=1 +MinAudioSourcePriority=0 +LowAudioSourcePriority=1 +MedAudioSourcePriority=2 +HighAudioSourcePriority=3 +MaxAudioSourcePriority=4 +MinAudioSourceMixPresence=5 +LowAudioSourceMixPresence=4 +MedAudioSourceMixPresence=3 +HighAudioSourceMixPresence=2 +MaxAudioSourceMixPresence=1 +ManualAudioSourceMixPresence=0 +NullAudioControlID=0 +NoteAudioControlID=8 +AttackVolumeAudioControlID=6 +AttackTimeAudioControlID=7 +DurationAudioControlID=10 +VolumeAudioControlID=3 +PitchAudioControlID=4 +BrightnessAudioControlID=5 +StartAudioControlID=1 +StopAudioControlID=2 +IdleAudioControlID=9 +FlushMessagesAudioControlID=11 +TempoAudioControlID=12 +FrontDirectPatchPosition=0 +RearDirectPatchPosition=1 +FrontLeftDirectPatchPosition=2 +FrontRightDirectPatchPosition=3 +RearLeftDirectPatchPosition=4 +RearRightDirectPatchPosition=5 diff --git a/CONTENT/RP/AUDIO/TEMPLATE.SCP b/CONTENT/RP/AUDIO/TEMPLATE.SCP new file mode 100644 index 0000000..1763d12 --- /dev/null +++ b/CONTENT/RP/AUDIO/TEMPLATE.SCP @@ -0,0 +1,75 @@ +# +#------------------------------------------------------------------ +# Template Audio Script +#------------------------------------------------------------------ +# + +# +#------------------------------------------------------------------ +# AudioRenderTypes +# +# TransientAudioRenderType = 0 +# SustainedAudioRenderType = 1 +# +#------------------------------------------------------------------ +# AudioSourcePriority +# +# MinAudioSourcePriority = 0 +# LowAudioSourcePriority = 1 +# MedAudioSourcePriority = 2 +# HighAudioSourcePriority = 3 +# MaxAudioSourcePriority = 4 +# +#------------------------------------------------------------------ +# AudioSourceMixPresence +# +# ManualAudioSourceMixPresence = 0 +# MaxAudioSourceMixPresence = 1 +# HighAudioSourceMixPresence = 2 +# MedAudioSourceMixPresence = 3 +# LowAudioSourceMixPresence = 4 +# MinAudioSourceMixPresence = 5 +# +#------------------------------------------------------------------ +# AudioControlID +# +# NullAudioControlID = 0 +# StartAudioControlID = 1 +# StopAudioControlID = 2 +# VolumeAudioControlID = 3 +# PitchAudioControlID = 4 +# BrightnessAudioControlID = 5 +# AttackVolumeAudioControlID = 6 +# AttackTimeAudioControlID = 7 +# AudioControlIDCount = 8 +# + +# +#------------------------------------------------------------------ +# Audio locations +#------------------------------------------------------------------ +# +[L4AudioLocation] +location_offset=0.0,0.0,0.0 +name=OriginLocation + +# +#------------------------------------------------------------------ +# Audio source components +#------------------------------------------------------------------ +# + +# +#------------------------------------------------------------------ +# Non-trigger watchers +#------------------------------------------------------------------ +# + +#------------------------------------------------------------------ + +# +#------------------------------------------------------------------ +# Trigger watchers +#------------------------------------------------------------------ +# + diff --git a/CONTENT/RP/AUDIO/VCS.CFG b/CONTENT/RP/AUDIO/VCS.CFG new file mode 100644 index 0000000..2645dcb --- /dev/null +++ b/CONTENT/RP/AUDIO/VCS.CFG @@ -0,0 +1 @@ +vcsdir=r:\resource\rp\l4\audio diff --git a/CONTENT/RP/AUDIO/VLEEXT.SCP b/CONTENT/RP/AUDIO/VLEEXT.SCP new file mode 100644 index 0000000..43f7dc4 --- /dev/null +++ b/CONTENT/RP/AUDIO/VLEEXT.SCP @@ -0,0 +1,69 @@ +# +#------------------------------------------------------------------ +# Mantis External Audio Script +#------------------------------------------------------------------ +# + +# +#------------------------------------------------------------------ +# AudioRenderTypes +# +# TransientAudioRenderType = 0 +# SustainedAudioRenderType = 1 +# +#------------------------------------------------------------------ +# AudioSourcePriority +# +# MinAudioSourcePriority = 0 +# LowAudioSourcePriority = 1 +# MedAudioSourcePriority = 2 +# HighAudioSourcePriority = 3 +# MaxAudioSourcePriority = 4 +# +#------------------------------------------------------------------ +# AudioSourceMixPresence +# +# ManualAudioSourceMixPresence = 0 +# MaxAudioSourceMixPresence = 1 +# HighAudioSourceMixPresence = 2 +# MedAudioSourceMixPresence = 3 +# LowAudioSourceMixPresence = 4 +# MinAudioSourceMixPresence = 5 +# +#------------------------------------------------------------------ +# AudioControlID +# +# NullAudioControlID = 0 +# StartAudioControlID = 1 +# StopAudioControlID = 2 +# VolumeAudioControlID = 3 +# PitchAudioControlID = 4 +# BrightnessAudioControlID = 5 +# AttackVolumeAudioControlID = 6 +# AttackTimeAudioControlID = 7 +# AudioControlIDCount = 8 +# + +# +#------------------------------------------------------------------ +# Includes +#------------------------------------------------------------------ +# +[include] +file=audio\vtvext.scp +file=audio\lsrext.scp + +# +#------------------------------------------------------------------ +# Laser trigger +#------------------------------------------------------------------ +# +[AudioStateTrigger] +subsystem=LaserGun +attribute=SimulationState +audio_component=LaserFireExtComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=1.0 +dump_value=0 diff --git a/CONTENT/RP/AUDIO/VOLE.SCP b/CONTENT/RP/AUDIO/VOLE.SCP new file mode 100644 index 0000000..7367d7f --- /dev/null +++ b/CONTENT/RP/AUDIO/VOLE.SCP @@ -0,0 +1,186 @@ +# +#------------------------------------------------------------------ +# Vole Audio Script +#------------------------------------------------------------------ +# + +# +#------------------------------------------------------------------ +# AudioRenderTypes +# +# TransientAudioRenderType = 0 +# SustainedAudioRenderType = 1 +# +#------------------------------------------------------------------ +# AudioSourcePriority +# +# MinAudioSourcePriority = 0 +# LowAudioSourcePriority = 1 +# MedAudioSourcePriority = 2 +# HighAudioSourcePriority = 3 +# MaxAudioSourcePriority = 4 +# +#------------------------------------------------------------------ +# AudioSourceMixPresence +# +# ManualAudioSourceMixPresence = 0 +# MaxAudioSourceMixPresence = 1 +# HighAudioSourceMixPresence = 2 +# MedAudioSourceMixPresence = 3 +# LowAudioSourceMixPresence = 4 +# MinAudioSourceMixPresence = 5 +# +#------------------------------------------------------------------ +# AudioControlID +# +# NullAudioControlID = 0 +# StartAudioControlID = 1 +# StopAudioControlID = 2 +# VolumeAudioControlID = 3 +# PitchAudioControlID = 4 +# BrightnessAudioControlID = 5 +# AttackVolumeAudioControlID = 6 +# AttackTimeAudioControlID = 7 +# AudioControlIDCount = 8 +# + +# +#------------------------------------------------------------------ +# Includes +#------------------------------------------------------------------ +# +[include] +file=audio\vtvint.scp +file=audio\vtvlsr.scp +file=audio\chute.scp + +# +#------------------------------------------------------------------ +# Booster trigger +#------------------------------------------------------------------ +# +[AudioStateTrigger] +subsystem=Booster1 +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster2 +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster1 +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=1 +inverse_trigger=1 +control_ID=2 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster2 +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=1 +inverse_trigger=1 +control_ID=2 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Entity +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=2 +inverse_trigger=0 +control_ID=2 +control_value=0.0 +dump_value=0 + +# Booster Loop +[AudioStateTrigger] +subsystem=Booster1 +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster2 +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster1 +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=1 +inverse_trigger=1 +control_ID=2 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster2 +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=1 +inverse_trigger=1 +control_ID=2 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Entity +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=2 +inverse_trigger=0 +control_ID=2 +control_value=0.0 +dump_value=0 + +# +#------------------------------------------------------------------ +# Laser trigger +#------------------------------------------------------------------ +# +[AudioStateTrigger] +subsystem=LaserGun +attribute=SimulationState +audio_component=LaserFireIntComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=2.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=LaserGun +attribute=SimulationState +audio_component=LaserFireIntEmptyComponent +trigger_state=3 +inverse_trigger=0 +control_ID=1 +control_value=0.5 +dump_value=0 diff --git a/CONTENT/RP/AUDIO/VTVLSR.SCP b/CONTENT/RP/AUDIO/VTVLSR.SCP new file mode 100644 index 0000000..5fb55ef --- /dev/null +++ b/CONTENT/RP/AUDIO/VTVLSR.SCP @@ -0,0 +1,121 @@ +# +#------------------------------------------------------------------ +# VTV laser Audio Script +#------------------------------------------------------------------ +# + +# +#------------------------------------------------------------------ +# AudioRenderTypes +# +# TransientAudioRenderType = 0 +# SustainedAudioRenderType = 1 +# +#------------------------------------------------------------------ +# AudioSourcePriority +# +# MinAudioSourcePriority = 0 +# LowAudioSourcePriority = 1 +# MedAudioSourcePriority = 2 +# HighAudioSourcePriority = 3 +# MaxAudioSourcePriority = 4 +# +#------------------------------------------------------------------ +# AudioSourceMixPresence +# +# ManualAudioSourceMixPresence = 0 +# MaxAudioSourceMixPresence = 1 +# HighAudioSourceMixPresence = 2 +# MedAudioSourceMixPresence = 3 +# LowAudioSourceMixPresence = 4 +# MinAudioSourceMixPresence = 5 +# +#------------------------------------------------------------------ +# AudioControlID +# +# NullAudioControlID = 0 +# StartAudioControlID = 1 +# StopAudioControlID = 2 +# VolumeAudioControlID = 3 +# PitchAudioControlID = 4 +# BrightnessAudioControlID = 5 +# AttackVolumeAudioControlID = 6 +# AttackTimeAudioControlID = 7 +# AudioControlIDCount = 8 +# + +# +#------------------------------------------------------------------ +# Audio source components +#------------------------------------------------------------------ +# + +# +# Laser fire component +# + +[DirectPatchSource] +location=OriginLocation +resource=LaserFireInt01 +position=0 +priority=3 +mix_presence=2 +volume_mix_level=0.75 +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=0 +use_attack_time_scale=0 +has_compression_curve=1 +compression_duration=1.0 +name=LaserFireIntComponent + +# +# Laser fire empty component +# + +[DirectPatchSource] +location=OriginLocation +resource=LaserFireIntEmpty +position=0 +priority=3 +mix_presence=0 +volume_mix_level=0.9 +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=0 +use_attack_time_scale=0 +has_compression_curve=0 +compression_duration=0.0 +name=LaserFireIntEmptyComponent + +# +#------------------------------------------------------------------ +# Non-trigger watchers +#------------------------------------------------------------------ +# + +#------------------------------------------------------------------ + +# +# Laser Fire : resource select +# + +[AudioResourceSelector] +audio_source=LaserFireIntComponent +audio_resource_index=LaserFireIntIndex +control_ID=100 +min_control_value=0.0 +max_control_value=1.0 +dump_value=0 +name=LaserFireIntResourceSelect + +# +# Laser Fire : Sample and hold -> resource select +# + +[AudioSampleAndHold] +audio_component=LaserFireIntResourceSelect +control_ID=100 +sample_duration=0.0 +name=LaserFireIntSampleAndHold + diff --git a/CONTENT/RP/AUDIO/VTVMNE.SCP b/CONTENT/RP/AUDIO/VTVMNE.SCP new file mode 100644 index 0000000..475520f --- /dev/null +++ b/CONTENT/RP/AUDIO/VTVMNE.SCP @@ -0,0 +1,74 @@ +# +#------------------------------------------------------------------ +# VTV Mine Audio Script +#------------------------------------------------------------------ +# + +# +#------------------------------------------------------------------ +# AudioRenderTypes +# +# TransientAudioRenderType = 0 +# SustainedAudioRenderType = 1 +# +#------------------------------------------------------------------ +# AudioSourcePriority +# +# MinAudioSourcePriority = 0 +# LowAudioSourcePriority = 1 +# MedAudioSourcePriority = 2 +# HighAudioSourcePriority = 3 +# MaxAudioSourcePriority = 4 +# +#------------------------------------------------------------------ +# AudioSourceMixPresence +# +# ManualAudioSourceMixPresence = 0 +# MaxAudioSourceMixPresence = 1 +# HighAudioSourceMixPresence = 2 +# MedAudioSourceMixPresence = 3 +# LowAudioSourceMixPresence = 4 +# MinAudioSourceMixPresence = 5 +# +#------------------------------------------------------------------ +# AudioControlID +# +# NullAudioControlID = 0 +# StartAudioControlID = 1 +# StopAudioControlID = 2 +# VolumeAudioControlID = 3 +# PitchAudioControlID = 4 +# BrightnessAudioControlID = 5 +# AttackVolumeAudioControlID = 6 +# AttackTimeAudioControlID = 7 +# AudioControlIDCount = 8 +# + +# +#------------------------------------------------------------------ +# Audio source components +#------------------------------------------------------------------ +# + +# +# Mine release component +# + +[DirectPatchSource] +location=OriginLocation +resource=MineRelease01 +position=1 +priority=3 +mix_presence=2 +volume_mix_level=0.95 +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=0 +use_attack_time_scale=0 +has_compression_curve=1 +compression_duration=0.5 +name=MineReleaseComponent + +# +# L€ + diff --git a/CONTENT/RP/AUDIO/VTVRVT.SCP b/CONTENT/RP/AUDIO/VTVRVT.SCP new file mode 100644 index 0000000..7c8bc8e --- /dev/null +++ b/CONTENT/RP/AUDIO/VTVRVT.SCP @@ -0,0 +1,109 @@ +# +#------------------------------------------------------------------ +# VTV rivets Audio Script +#------------------------------------------------------------------ +# + +# +#------------------------------------------------------------------ +# AudioRenderTypes +# +# TransientAudioRenderType = 0 +# SustainedAudioRenderType = 1 +# +#------------------------------------------------------------------ +# AudioSourcePriority +# +# MinAudioSourcePriority = 0 +# LowAudioSourcePriority = 1 +# MedAudioSourcePriority = 2 +# HighAudioSourcePriority = 3 +# MaxAudioSourcePriority = 4 +# +#------------------------------------------------------------------ +# AudioSourceMixPresence +# +# ManualAudioSourceMixPresence = 0 +# MaxAudioSourceMixPresence = 1 +# HighAudioSourceMixPresence = 2 +# MedAudioSourceMixPresence = 3 +# LowAudioSourceMixPresence = 4 +# MinAudioSourceMixPresence = 5 +# +#------------------------------------------------------------------ +# AudioControlID +# +# NullAudioControlID = 0 +# StartAudioControlID = 1 +# StopAudioControlID = 2 +# VolumeAudioControlID = 3 +# PitchAudioControlID = 4 +# BrightnessAudioControlID = 5 +# AttackVolumeAudioControlID = 6 +# AttackTimeAudioControlID = 7 +# AudioControlIDCount = 8 +# + +# +#------------------------------------------------------------------ +# Audio source components +#------------------------------------------------------------------ +# + +# +# Rivet fire left component +# + +[DirectPatchSource] +location=OriginLocation +resource=RivetFireLeft +position=0 +priority=3 +mix_presence=2 +volume_mix_level=0.9 +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=0 +use_attack_time_scale=0 +has_compression_curve=1 +compression_duration=0.25 +name=RivetFireLeftComponent + +# +# Rivet fire right component +# + +[DirectPatchSource] +location=OriginLocation +resource=RivetFireRight +position=0 +priority=3 +mix_presence=2 +volume_mix_level=0.9 +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=0 +use_attack_time_scale=0 +has_compression_curve=1 +compression_duration=0.25 +name=RivetFireRightComponent + +# +# Rivet fire center component +# + +[DirectPatchSource] +location=OriginLocation +resource=RivetFireCenter +position=0 +priority=3 +mix_presence=2 +volume_mix_level=0.9 +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=0 +use_attack_time_scale=0 +has_compression_curve=1 +compression_duration=0.25 +name=RivetFireCenterComponent + diff --git a/CONTENT/RP/AUDIO/WASP.SCP b/CONTENT/RP/AUDIO/WASP.SCP new file mode 100644 index 0000000..4cc4057 --- /dev/null +++ b/CONTENT/RP/AUDIO/WASP.SCP @@ -0,0 +1,176 @@ +# +#------------------------------------------------------------------ +# Flea Audio Script +#------------------------------------------------------------------ +# + +# +#------------------------------------------------------------------ +# AudioRenderTypes +# +# TransientAudioRenderType = 0 +# SustainedAudioRenderType = 1 +# +#------------------------------------------------------------------ +# AudioSourcePriority +# +# MinAudioSourcePriority = 0 +# LowAudioSourcePriority = 1 +# MedAudioSourcePriority = 2 +# HighAudioSourcePriority = 3 +# MaxAudioSourcePriority = 4 +# +#------------------------------------------------------------------ +# AudioSourceMixPresence +# +# ManualAudioSourceMixPresence = 0 +# MaxAudioSourceMixPresence = 1 +# HighAudioSourceMixPresence = 2 +# MedAudioSourceMixPresence = 3 +# LowAudioSourceMixPresence = 4 +# MinAudioSourceMixPresence = 5 +# +#------------------------------------------------------------------ +# AudioControlID +# +# NullAudioControlID = 0 +# StartAudioControlID = 1 +# StopAudioControlID = 2 +# VolumeAudioControlID = 3 +# PitchAudioControlID = 4 +# BrightnessAudioControlID = 5 +# AttackVolumeAudioControlID = 6 +# AttackTimeAudioControlID = 7 +# AudioControlIDCount = 8 +# + +# +#------------------------------------------------------------------ +# Includes +#------------------------------------------------------------------ +# +[include] +file=audio\vtvint.scp +file=audio\vtvmne.scp +file=audio\chute.scp + +# +#------------------------------------------------------------------ +# Booster trigger +#------------------------------------------------------------------ +# +[AudioStateTrigger] +subsystem=Booster1 +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster2 +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster1 +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=1 +inverse_trigger=1 +control_ID=2 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster2 +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=1 +inverse_trigger=1 +control_ID=2 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Entity +attribute=SimulationState +audio_component=BoosterComponent +trigger_state=2 +inverse_trigger=0 +control_ID=2 +control_value=0.0 +dump_value=0 + +# Booster Loop +[AudioStateTrigger] +subsystem=Booster1 +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster2 +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster1 +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=1 +inverse_trigger=1 +control_ID=2 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Booster2 +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=1 +inverse_trigger=1 +control_ID=2 +control_value=0.0 +dump_value=0 + +[AudioStateTrigger] +subsystem=Entity +attribute=SimulationState +audio_component=BoosterLoopComponent +trigger_state=2 +inverse_trigger=0 +control_ID=2 +control_value=0.0 +dump_value=0 + +# +#------------------------------------------------------------------ +# Mine trigger +#------------------------------------------------------------------ +# +[AudioStateTrigger] +subsystem=DemopackDropper +attribute=SimulationState +audio_component=MineReleaseComponent +trigger_state=1 +inverse_trigger=0 +control_ID=1 +control_value=1.0 +dump_value=0 diff --git a/CONTENT/RP/AUDIO/WELLHD1.SCP b/CONTENT/RP/AUDIO/WELLHD1.SCP new file mode 100644 index 0000000..42b59c6 --- /dev/null +++ b/CONTENT/RP/AUDIO/WELLHD1.SCP @@ -0,0 +1,101 @@ +# +#------------------------------------------------------------------ +# Wellhead Audio Script +#------------------------------------------------------------------ +# + +# +#------------------------------------------------------------------ +# AudioRenderTypes +# +# TransientAudioRenderType = 0 +# SustainedAudioRenderType = 1 +# +#------------------------------------------------------------------ +# AudioSourcePriority +# +# MinAudioSourcePriority = 0 +# LowAudioSourcePriority = 1 +# MedAudioSourcePriority = 2 +# HighAudioSourcePriority = 3 +# MaxAudioSourcePriority = 4 +# +#------------------------------------------------------------------ +# AudioSourceMixPresence +# +# ManualAudioSourceMixPresence = 0 +# MaxAudioSourceMixPresence = 1 +# HighAudioSourceMixPresence = 2 +# MedAudioSourceMixPresence = 3 +# LowAudioSourceMixPresence = 4 +# MinAudioSourceMixPresence = 5 +# +#------------------------------------------------------------------ +# AudioControlID +# +# NullAudioControlID = 0 +# StartAudioControlID = 1 +# StopAudioControlID = 2 +# VolumeAudioControlID = 3 +# PitchAudioControlID = 4 +# BrightnessAudioControlID = 5 +# AttackVolumeAudioControlID = 6 +# AttackTimeAudioControlID = 7 +# AudioControlIDCount = 8 +# + +# +#------------------------------------------------------------------ +# Audio locations +#------------------------------------------------------------------ +# + +[L4AudioLocation] +location_offset=0.0,0.0,0.0 +name=OriginLocation + +# +#------------------------------------------------------------------ +# Audio source components +#------------------------------------------------------------------ +# + +# +# Wellhead drill component +# + +[Dynamic3DPatchSource] +location=OriginLocation +resource=WellheadDrill01 +priority=1 +mix_presence=3 +volume_mix_level=0.9 +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=0 +use_attack_time_scale=0 +has_compression_curve=0 +compression_duration=0.0 +name=WellheadDrillComponent + +# +#------------------------------------------------------------------ +# Non-trigger watchers +#------------------------------------------------------------------ +# + +# +#------------------------------------------------------------------ +# Trigger watchers +#------------------------------------------------------------------ +# + +# +# Wellhead drill : Start control +# + +[AudioControlSend] +audio_component=WellheadDrillComponent +control_ID=1 +control_value=0.0 + diff --git a/CONTENT/RP/AUDIO/WELLHD2.SCP b/CONTENT/RP/AUDIO/WELLHD2.SCP new file mode 100644 index 0000000..413779f --- /dev/null +++ b/CONTENT/RP/AUDIO/WELLHD2.SCP @@ -0,0 +1,101 @@ +# +#------------------------------------------------------------------ +# Wellhead Capped Audio Script +#------------------------------------------------------------------ +# + +# +#------------------------------------------------------------------ +# AudioRenderTypes +# +# TransientAudioRenderType = 0 +# SustainedAudioRenderType = 1 +# +#------------------------------------------------------------------ +# AudioSourcePriority +# +# MinAudioSourcePriority = 0 +# LowAudioSourcePriority = 1 +# MedAudioSourcePriority = 2 +# HighAudioSourcePriority = 3 +# MaxAudioSourcePriority = 4 +# +#------------------------------------------------------------------ +# AudioSourceMixPresence +# +# ManualAudioSourceMixPresence = 0 +# MaxAudioSourceMixPresence = 1 +# HighAudioSourceMixPresence = 2 +# MedAudioSourceMixPresence = 3 +# LowAudioSourceMixPresence = 4 +# MinAudioSourceMixPresence = 5 +# +#------------------------------------------------------------------ +# AudioControlID +# +# NullAudioControlID = 0 +# StartAudioControlID = 1 +# StopAudioControlID = 2 +# VolumeAudioControlID = 3 +# PitchAudioControlID = 4 +# BrightnessAudioControlID = 5 +# AttackVolumeAudioControlID = 6 +# AttackTimeAudioControlID = 7 +# AudioControlIDCount = 8 +# + +# +#------------------------------------------------------------------ +# Audio locations +#------------------------------------------------------------------ +# + +[L4AudioLocation] +location_offset=0.0,0.0,0.0 +name=OriginLocation + +# +#------------------------------------------------------------------ +# Audio source components +#------------------------------------------------------------------ +# + +# +# Wellhead drill component +# + +[Dynamic3DPatchSource] +location=OriginLocation +resource=WellheadDrill02 +priority=1 +mix_presence=3 +volume_mix_level=0.9 +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=0 +use_attack_time_scale=0 +has_compression_curve=0 +compression_duration=0.0 +name=WellheadDrillComponent + +# +#------------------------------------------------------------------ +# Non-trigger watchers +#------------------------------------------------------------------ +# + +# +#------------------------------------------------------------------ +# Trigger watchers +#------------------------------------------------------------------ +# + +# +# Wellhead drill : Start control +# + +[AudioControlSend] +audio_component=WellheadDrillComponent +control_ID=1 +control_value=0.0 + diff --git a/CONTENT/RP/AUDIO/WELLHD3.SCP b/CONTENT/RP/AUDIO/WELLHD3.SCP new file mode 100644 index 0000000..9faf38d --- /dev/null +++ b/CONTENT/RP/AUDIO/WELLHD3.SCP @@ -0,0 +1,101 @@ +# +#------------------------------------------------------------------ +# Wellhead Device Audio Script +#------------------------------------------------------------------ +# + +# +#------------------------------------------------------------------ +# AudioRenderTypes +# +# TransientAudioRenderType = 0 +# SustainedAudioRenderType = 1 +# +#------------------------------------------------------------------ +# AudioSourcePriority +# +# MinAudioSourcePriority = 0 +# LowAudioSourcePriority = 1 +# MedAudioSourcePriority = 2 +# HighAudioSourcePriority = 3 +# MaxAudioSourcePriority = 4 +# +#------------------------------------------------------------------ +# AudioSourceMixPresence +# +# ManualAudioSourceMixPresence = 0 +# MaxAudioSourceMixPresence = 1 +# HighAudioSourceMixPresence = 2 +# MedAudioSourceMixPresence = 3 +# LowAudioSourceMixPresence = 4 +# MinAudioSourceMixPresence = 5 +# +#------------------------------------------------------------------ +# AudioControlID +# +# NullAudioControlID = 0 +# StartAudioControlID = 1 +# StopAudioControlID = 2 +# VolumeAudioControlID = 3 +# PitchAudioControlID = 4 +# BrightnessAudioControlID = 5 +# AttackVolumeAudioControlID = 6 +# AttackTimeAudioControlID = 7 +# AudioControlIDCount = 8 +# + +# +#------------------------------------------------------------------ +# Audio locations +#------------------------------------------------------------------ +# + +[L4AudioLocation] +location_offset=-35.83, 27.30, -68.80 +name=OriginLocation + +# +#------------------------------------------------------------------ +# Audio source components +#------------------------------------------------------------------ +# + +# +# Wellhead device component +# + +[Dynamic3DPatchSource] +location=OriginLocation +resource=WellheadDevice01 +priority=1 +mix_presence=3 +volume_mix_level=1.0 +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=0 +use_attack_time_scale=0 +has_compression_curve=0 +compression_duration=0.0 +name=WellheadDeviceComponent + +# +#------------------------------------------------------------------ +# Non-trigger watchers +#------------------------------------------------------------------ +# + +# +#------------------------------------------------------------------ +# Trigger watchers +#------------------------------------------------------------------ +# + +# +# Wellhead drill : Start control +# + +[AudioControlSend] +audio_component=WellheadDeviceComponent +control_ID=1 +control_value=0.0 + diff --git a/CONTENT/RP/AUDIO/WELLHD4.SCP b/CONTENT/RP/AUDIO/WELLHD4.SCP new file mode 100644 index 0000000..edb06ac --- /dev/null +++ b/CONTENT/RP/AUDIO/WELLHD4.SCP @@ -0,0 +1,101 @@ +# +#------------------------------------------------------------------ +# Wellhead Device Audio Script +#------------------------------------------------------------------ +# + +# +#------------------------------------------------------------------ +# AudioRenderTypes +# +# TransientAudioRenderType = 0 +# SustainedAudioRenderType = 1 +# +#------------------------------------------------------------------ +# AudioSourcePriority +# +# MinAudioSourcePriority = 0 +# LowAudioSourcePriority = 1 +# MedAudioSourcePriority = 2 +# HighAudioSourcePriority = 3 +# MaxAudioSourcePriority = 4 +# +#------------------------------------------------------------------ +# AudioSourceMixPresence +# +# ManualAudioSourceMixPresence = 0 +# MaxAudioSourceMixPresence = 1 +# HighAudioSourceMixPresence = 2 +# MedAudioSourceMixPresence = 3 +# LowAudioSourceMixPresence = 4 +# MinAudioSourceMixPresence = 5 +# +#------------------------------------------------------------------ +# AudioControlID +# +# NullAudioControlID = 0 +# StartAudioControlID = 1 +# StopAudioControlID = 2 +# VolumeAudioControlID = 3 +# PitchAudioControlID = 4 +# BrightnessAudioControlID = 5 +# AttackVolumeAudioControlID = 6 +# AttackTimeAudioControlID = 7 +# AudioControlIDCount = 8 +# + +# +#------------------------------------------------------------------ +# Audio locations +#------------------------------------------------------------------ +# + +[L4AudioLocation] +location_offset=0.00,14.40,-47.70 +name=OriginLocation + +# +#------------------------------------------------------------------ +# Audio source components +#------------------------------------------------------------------ +# + +# +# HVAC component +# + +[Dynamic3DPatchSource] +location=OriginLocation +resource=HVAC03 +priority=1 +mix_presence=3 +volume_mix_level=1.0 +pitch_mix_offset=0.0 +brightness_mix_level=1.0 +use_brightness_scale=0 +use_attack_time_scale=0 +has_compression_curve=0 +compression_duration=0.0 +name=HVACComponent + +# +#------------------------------------------------------------------ +# Non-trigger watchers +#------------------------------------------------------------------ +# + +# +#------------------------------------------------------------------ +# Trigger watchers +#------------------------------------------------------------------ +# + +# +# Start control +# + +[AudioControlSend] +audio_component=HVACComponent +control_ID=1 +control_value=0.0 + diff --git a/CONTENT/RP/AUTOEXEC.BAT b/CONTENT/RP/AUTOEXEC.BAT new file mode 100644 index 0000000..c1568e5 --- /dev/null +++ b/CONTENT/RP/AUTOEXEC.BAT @@ -0,0 +1,22 @@ +@ECHO Off +rem ******* +rem * Standard autoexec.bat for field pods, this should not be edited without +rem * approval from STS +rem ******* +PATH C:\;C:\NWDOS;C:\NWCLIENT;C:\VGL_LABS +VERIFY OFF +PROMPT $P$G +SET NWDOSCFG=C:\NWDOS +SET FBP_USER=Virtual World Entertainment +rem +rem *** load the network stuff +rem +lh c:\nwclient\lsl +lh c:\nwclient\lnepci +lh c:\nwclient\odipkt +NWCACHE 1024 1024 /LEND=OFF /DELAY=1000 +call PARAMETR.bat Rel410 BT POD SLOW SVGA +if exist c:\%VERSION%\%PREFGAME%\last.spl copy c:\%VERSION%\%PREFGAME%\last.spl c:\%VERSION%\%PREFGAME%\bad.spl +if exist c:\%VERSION%\%PREFGAME%\last.spl del c:\%VERSION%\%PREFGAME%\last.spl +call c:\vgl_labs\update.bat +c:\vgl_labs\go.bat diff --git a/CONTENT/RP/BLDFILES.LST b/CONTENT/RP/BLDFILES.LST new file mode 100644 index 0000000..3ca5a22 --- /dev/null +++ b/CONTENT/RP/BLDFILES.LST @@ -0,0 +1,32 @@ +hmi*.386 +bitmaps.egg +build.bat +dearcrp.bat +makeegg.bat +menu.bat +rp.bat +rpcam.bat +rpgo.bat +rplook.bat +rpnet.bat +rpprep.bat +setenv.bat +showenv.bat +rpl4.bld +test.bld +vr*.* +32*.exe +build*.exe +flyk.exe +netnub.exe +resli*.exe +rpl4*.exe +*.ini +dpmi*.ovl +rpl4.res +audio\*.* +gauge\*.* +maps\*.* +models\*.* +solids\*.* +video\*.* diff --git a/CONTENT/RP/BUILD.BAT b/CONTENT/RP/BUILD.BAT new file mode 100644 index 0000000..8752808 --- /dev/null +++ b/CONTENT/RP/BUILD.BAT @@ -0,0 +1,6 @@ +@echo off +rem build.bat +set s0=test.bld +if not exist %s0% set s0= +rpl4tool.exe -b rpl4.bld %s0% +set s0= diff --git a/CONTENT/RP/BUILD1.BAT b/CONTENT/RP/BUILD1.BAT new file mode 100644 index 0000000..8799769 --- /dev/null +++ b/CONTENT/RP/BUILD1.BAT @@ -0,0 +1,22 @@ +@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 ************************************************************************** +@rem xdel c:\rel410\rp\*.bak /s/n +@rem set Path=c:\nwdos;c:\net;c:\pkz;c:\rel410 +@rem c:\net\net use f: \\vgl_code\podbay +@rem C: +@rem cd \rel410\rp +rpl4tool -b rpl4.bld > result1.txt +rem call arcrp f . >> result1.txt +rem del \vgl_labs\archive\rprel410.exe +rem copy rp.zip c:\vgl_labs\archive\rprel410.zip +rem del rp.zip +rem cd \vgl_labs\archive +rem zip2exe rprel410.zip +rem del rprel410.zip +rem cd \rel410\rp +rem edit result1.txt \ No newline at end of file diff --git a/CONTENT/RP/BUILDRES.BAK b/CONTENT/RP/BUILDRES.BAK new file mode 100644 index 0000000..87f2944 --- /dev/null +++ b/CONTENT/RP/BUILDRES.BAK @@ -0,0 +1,23 @@ +@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 ************************************************************************** +@rem xdel c:\rel410\rp\*.bak /s/n +@rem set Path=c:\nwdos;c:\net;c:\pkz;c:\rel410 +@rem c:\net\net use f: \\vgl_code\podbay +@rem C: +@rem cd \rel410\rp +rpl4tool -b rpl4.bld > result1.txt +call arcrp f . >> result1.txt +del c:\vgl_labs\archive\rprel410.exe +copy rp.zip c:\vgl_labs\archive\rprel410.zip +del rp.zip +c: +cd \vgl_labs\archive +zip2exe rprel410.zip +del rprel410.zip +cd \rel410\rp +rem edit result1.txt \ No newline at end of file diff --git a/CONTENT/RP/BUILDRES.BAT b/CONTENT/RP/BUILDRES.BAT new file mode 100644 index 0000000..eafecdc --- /dev/null +++ b/CONTENT/RP/BUILDRES.BAT @@ -0,0 +1,23 @@ +@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 ************************************************************************** +@rem xdel c:\rel410\rp\*.bak /s/n +@rem set Path=c:\nwdos;c:\net;c:\pkz;c:\rel410 +@rem c:\net\net use f: \\vgl_code\podbay +@rem C: +@rem cd \rel410\rp +rpl4tool -b rpl4.bld > result1.txt +call arcrp f . >> result1.txt +del c:\vgl_labs\archive\rprel410.exe +copy rp.zip c:\vgl_labs\archive\rprel410.zip +del rp.zip +c: +cd \vgl_labs\archive +zip2exe rprel410.zip +del rprel410.zip +cd \rel410\rp +@rem edit result1.txt \ No newline at end of file diff --git a/CONTENT/RP/DEARCRP.BAT b/CONTENT/RP/DEARCRP.BAT new file mode 100644 index 0000000..63c1699 --- /dev/null +++ b/CONTENT/RP/DEARCRP.BAT @@ -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\rp.zip +goto END + +:FRESHEN +pkunzip -n -d %2\rp.zip +goto END + +:END \ No newline at end of file diff --git a/CONTENT/RP/EXCLUDE.LST b/CONTENT/RP/EXCLUDE.LST new file mode 100644 index 0000000..5a9dca9 --- /dev/null +++ b/CONTENT/RP/EXCLUDE.LST @@ -0,0 +1,7 @@ +joystick.ini +audio\vcs.cfg +gauge\vcs.cfg +maps\vcs.cfg +models\vcs.cfg +solids\vcs.cfg +rpl4tool.exe \ No newline at end of file diff --git a/CONTENT/RP/FAILURE.LOG b/CONTENT/RP/FAILURE.LOG new file mode 100644 index 0000000..9dceccc --- /dev/null +++ b/CONTENT/RP/FAILURE.LOG @@ -0,0 +1,13 @@ +[RIOBoardErrors] +error=missing_board@Slot=4:Address=0 +error=missing_board@Slot=5:Address=0 +[RIODeadLamps] +lamp=TeslaRelay3 +lamp=undefined_0x17 +lamp=TeslaRelay1 +lamp=PanicButton +lamp=IcomAmpEnableRelay +lamp=IcomIncRelay +lamp=IcomPTTRelay +lamp=undefined_0x3D +lamp=FloorEntry diff --git a/CONTENT/RP/FIND.TXT b/CONTENT/RP/FIND.TXT new file mode 100644 index 0000000..85a804c --- /dev/null +++ b/CONTENT/RP/FIND.TXT @@ -0,0 +1,11 @@ + +---------- d:\dev\rp\gauge\dpack_ga.gim +linelist=a_rock v4 v5 +linelist=a_rock v6 v7 + +---------- d:\dev\rp\gauge\gauge.gat +a_rock=canaledge + +---------- d:\dev\rp\gauge\sting.gim +linelist=a_rock v4 v5 +linelist=a_rock v6 v7 diff --git a/CONTENT/RP/FRSTRM.BAT b/CONTENT/RP/FRSTRM.BAT new file mode 100644 index 0000000..6e55a73 --- /dev/null +++ b/CONTENT/RP/FRSTRM.BAT @@ -0,0 +1,3 @@ +cd \rel4_9\rp\maps +edit frstrm.map +cd \rel4_9\rp diff --git a/CONTENT/RP/GAUGE/BP1_GA.GIM b/CONTENT/RP/GAUGE/BP1_GA.GIM new file mode 100644 index 0000000..42e2c6f --- /dev/null +++ b/CONTENT/RP/GAUGE/BP1_GA.GIM @@ -0,0 +1,18 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=100000 + +[vertices] +v0=-25, 0, -15 +v1=25, 0, -15 +v2=25, 0, -10 +v3=10, 0, 15 +v4=-10, 0, 15 +v5=-25, 0, -10 + +[level0] +linelist=a_concrete v0 v1 v2 v3 v4 v5 v0 + + diff --git a/CONTENT/RP/GAUGE/BR1B_GA.GIM b/CONTENT/RP/GAUGE/BR1B_GA.GIM new file mode 100644 index 0000000..adb57a5 --- /dev/null +++ b/CONTENT/RP/GAUGE/BR1B_GA.GIM @@ -0,0 +1,17 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10 + +[vertices] +v0=5, 0, 880 +v1=5, 0, -880 +v2=-5, 0, -880 +v3=-5, 0, 880 + +[level0] +linelist=a_concrete v0 v1 v2 v3 v0 + + + diff --git a/CONTENT/RP/GAUGE/BR1_GA.GIM b/CONTENT/RP/GAUGE/BR1_GA.GIM new file mode 100644 index 0000000..60129c5 --- /dev/null +++ b/CONTENT/RP/GAUGE/BR1_GA.GIM @@ -0,0 +1,17 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10 + +[vertices] +v0=5, 0, 40 +v1=5, 0, -40 +v2=-5, 0, -40 +v3=-5, 0, 40 + +[level0] +linelist=a_concrete v0 v1 v2 v3 v0 + + + diff --git a/CONTENT/RP/GAUGE/BR2_GA.GIM b/CONTENT/RP/GAUGE/BR2_GA.GIM new file mode 100644 index 0000000..a550ad7 --- /dev/null +++ b/CONTENT/RP/GAUGE/BR2_GA.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=100000 + +[vertices] +v0=50, 0, 100 +v1=-50, 0, 100 +v2=-50, 0, -100 +v3=50, 0, -100 + +[level0] +linelist=a_concrete v0 v1 v2 v3 v0 + diff --git a/CONTENT/RP/GAUGE/BR3_GA.GIM b/CONTENT/RP/GAUGE/BR3_GA.GIM new file mode 100644 index 0000000..92d1878 --- /dev/null +++ b/CONTENT/RP/GAUGE/BR3_GA.GIM @@ -0,0 +1,17 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10 + +[vertices] +v0=5, 0, 25 +v1=5, 0, -25 +v2=-5, 0, -25 +v3=-5, 0, 25 + +[level0] +linelist=a_concrete v0 v1 v2 v3 v0 + + + diff --git a/CONTENT/RP/GAUGE/BRE1_GA.GIM b/CONTENT/RP/GAUGE/BRE1_GA.GIM new file mode 100644 index 0000000..411959a --- /dev/null +++ b/CONTENT/RP/GAUGE/BRE1_GA.GIM @@ -0,0 +1,25 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=50, 0, -150 +v1=150, 0, -50 +v2=250, 0, -50 +v3=250, 0, 50 +v4=150, 0, 50 +v5=50, 0, 150 +v6=50, 0, 250 +v7=-50, 0, 250 +v8=-50, 0, 150 +v9=-150, 0, 50 +v10=-250, 0, 50 +v11=-250, 0, -50 +v12=-150, 0, -50 +v13=-50, 0, -150 + +[level0] +linelist=a_concrete v0 v1 v4 v5 v8 v9 v12 v13 v0 + diff --git a/CONTENT/RP/GAUGE/BUTCROSS.PCC b/CONTENT/RP/GAUGE/BUTCROSS.PCC new file mode 100644 index 0000000..ee40bbb Binary files /dev/null and b/CONTENT/RP/GAUGE/BUTCROSS.PCC differ diff --git a/CONTENT/RP/GAUGE/BUTHORN.PCC b/CONTENT/RP/GAUGE/BUTHORN.PCC new file mode 100644 index 0000000..2d96717 Binary files /dev/null and b/CONTENT/RP/GAUGE/BUTHORN.PCC differ diff --git a/CONTENT/RP/GAUGE/BUTPRES1.PCC b/CONTENT/RP/GAUGE/BUTPRES1.PCC new file mode 100644 index 0000000..a74d621 Binary files /dev/null and b/CONTENT/RP/GAUGE/BUTPRES1.PCC differ diff --git a/CONTENT/RP/GAUGE/BUTPRES2.PCC b/CONTENT/RP/GAUGE/BUTPRES2.PCC new file mode 100644 index 0000000..567d9f2 Binary files /dev/null and b/CONTENT/RP/GAUGE/BUTPRES2.PCC differ diff --git a/CONTENT/RP/GAUGE/BUTPRES3.PCC b/CONTENT/RP/GAUGE/BUTPRES3.PCC new file mode 100644 index 0000000..d6c6550 Binary files /dev/null and b/CONTENT/RP/GAUGE/BUTPRES3.PCC differ diff --git a/CONTENT/RP/GAUGE/BUTPRES4.PCC b/CONTENT/RP/GAUGE/BUTPRES4.PCC new file mode 100644 index 0000000..aabcff2 Binary files /dev/null and b/CONTENT/RP/GAUGE/BUTPRES4.PCC differ diff --git a/CONTENT/RP/GAUGE/BUTPRES5.PCC b/CONTENT/RP/GAUGE/BUTPRES5.PCC new file mode 100644 index 0000000..f05f676 Binary files /dev/null and b/CONTENT/RP/GAUGE/BUTPRES5.PCC differ diff --git a/CONTENT/RP/GAUGE/BUTPRES6.PCC b/CONTENT/RP/GAUGE/BUTPRES6.PCC new file mode 100644 index 0000000..7cc06a1 Binary files /dev/null and b/CONTENT/RP/GAUGE/BUTPRES6.PCC differ diff --git a/CONTENT/RP/GAUGE/BUTZMIN.PCC b/CONTENT/RP/GAUGE/BUTZMIN.PCC new file mode 100644 index 0000000..055df67 Binary files /dev/null and b/CONTENT/RP/GAUGE/BUTZMIN.PCC differ diff --git a/CONTENT/RP/GAUGE/BUTZMOUT.PCC b/CONTENT/RP/GAUGE/BUTZMOUT.PCC new file mode 100644 index 0000000..2b202f1 Binary files /dev/null and b/CONTENT/RP/GAUGE/BUTZMOUT.PCC differ diff --git a/CONTENT/RP/GAUGE/BU_GA.GIM b/CONTENT/RP/GAUGE/BU_GA.GIM new file mode 100644 index 0000000..a8a0c3e --- /dev/null +++ b/CONTENT/RP/GAUGE/BU_GA.GIM @@ -0,0 +1,70 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=0.1 +level1=1 +level2=10 +level3=100000 + +[vertices] +v0=1, 0, -4.5 +v1=1, 0, 4.8 +v2=-1, 0, 4.8 +v3=-1, 0, -4.5 +v4=-1, 0, 4 +v5=-2.8, 0, 3.2 +v6=-2.8, 0, -3.2 +v7=-1, 0, -4 +v8=2.8, 0, -3.2 +v9=2.8, 0, 3.2 +v10=1, 0, 4 +v11=1, 0, -4 +v12=-3.8, 0, -2.7 +v13=-2.8, 0, -1.3 +v14=-3.8, 0, -1.8 +v15=-3.8, 0, -0.5 +v16=-2.8, 0, -1 +v17=-2.8, 0, 0.9 +v18=-3.8, 0, 0.4 +v19=-3.8, 0, 1.7 +v20=-2.8, 0, 1.2 +v21=-2.8, 0, 3.1 +v22=-3.8, 0, 2.6 +v23=3.8, 0, 1.7 +v24=3.8, 0, 2.6 +v25=2.8, 0, 3.1 +v26=2.8, 0, 1.2 +v27=3.8, 0, -0.5 +v28=3.8, 0, 0.4 +v29=2.8, 0, 0.9 +v30=2.8, 0, -1 +v31=3.8, 0, -2.7 +v32=3.8, 0, -1.8 +v33=2.8, 0, -1.3 +v34=-2.8, 0, 3.5 +v35=0, 0, -4.6 +v36=2.6, 0, 3.5 + +[level0] +linelist=a_vtv v0 v1 v2 v3 v0 +linelist=a_vtv v4 v5 v6 v7 v4 +linelist=a_vtv v8 v9 v10 v11 v8 +linelist=a_vtv v12 v6 v13 v14 v12 +linelist=a_vtv v15 v16 v17 v18 v15 +linelist=a_vtv v19 v20 v21 v22 v19 +linelist=a_vtv v23 v24 v25 v26 v23 +linelist=a_vtv v27 v28 v29 v30 v27 +linelist=a_vtv v31 v32 v33 v8 v31 + +[level1] +linelist=a_vtv v4 v22 v12 v7 v4 +linelist=a_vtv v31 v24 v10 v11 v31 +linelist=a_vtv v0 v1 v2 v3 v0 + +[level2] +linelist=a_vtv v0 v31 v24 v1 v2 v22 v12 v3 v0 + +[level3] +linelist=a_vtv v34 v35 v36 v34 + diff --git a/CONTENT/RP/GAUGE/CAMPAL.PCC b/CONTENT/RP/GAUGE/CAMPAL.PCC new file mode 100644 index 0000000..5afcf8b Binary files /dev/null and b/CONTENT/RP/GAUGE/CAMPAL.PCC differ diff --git a/CONTENT/RP/GAUGE/CC1_GA.GIM b/CONTENT/RP/GAUGE/CC1_GA.GIM new file mode 100644 index 0000000..d787e48 --- /dev/null +++ b/CONTENT/RP/GAUGE/CC1_GA.GIM @@ -0,0 +1,20 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=-50, 0, 15 +v1=-45, 0, -15 +v2=-35, 0, -45 +v3=-10, 0, -50 +v4=10, 0, -50 +v5=30, 0, -35 +v6=45, 0, -15 +v7=50, 0, 50 +v8=-50, 0, 50 + +[level0] +linelist=a_redrock v0 v1 v2 v3 v4 v5 v6 v7 v8 v0 + diff --git a/CONTENT/RP/GAUGE/CFGBOTH.PCC b/CONTENT/RP/GAUGE/CFGBOTH.PCC new file mode 100644 index 0000000..67057d2 Binary files /dev/null and b/CONTENT/RP/GAUGE/CFGBOTH.PCC differ diff --git a/CONTENT/RP/GAUGE/CFGME.PCC b/CONTENT/RP/GAUGE/CFGME.PCC new file mode 100644 index 0000000..5899a71 Binary files /dev/null and b/CONTENT/RP/GAUGE/CFGME.PCC differ diff --git a/CONTENT/RP/GAUGE/CFGNONE.PCC b/CONTENT/RP/GAUGE/CFGNONE.PCC new file mode 100644 index 0000000..f34511d Binary files /dev/null and b/CONTENT/RP/GAUGE/CFGNONE.PCC differ diff --git a/CONTENT/RP/GAUGE/CFGOTHER.PCC b/CONTENT/RP/GAUGE/CFGOTHER.PCC new file mode 100644 index 0000000..7a2e83b Binary files /dev/null and b/CONTENT/RP/GAUGE/CFGOTHER.PCC differ diff --git a/CONTENT/RP/GAUGE/CL1_GA.GIM b/CONTENT/RP/GAUGE/CL1_GA.GIM new file mode 100644 index 0000000..da30460 --- /dev/null +++ b/CONTENT/RP/GAUGE/CL1_GA.GIM @@ -0,0 +1,20 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=100000 + +[vertices] +v0=0, 0, 2.25 +v1=1.59, 0, 1.59 +v2=2.25, 0, 0 +v3=1.59, 0, -1.59 +v4=0, 0, -2.25 +v5=-1.59, 0, -1.59 +v6=-2.25, 0, 0 +v7=-1.59, 0, 1.59 + +[level0] +linelist=a_pipe v0 v1 v2 v3 v4 v5 v6 v7 v0 + + diff --git a/CONTENT/RP/GAUGE/CLKFONT.PCC b/CONTENT/RP/GAUGE/CLKFONT.PCC new file mode 100644 index 0000000..eb0a354 Binary files /dev/null and b/CONTENT/RP/GAUGE/CLKFONT.PCC differ diff --git a/CONTENT/RP/GAUGE/CN1_GA.GIM b/CONTENT/RP/GAUGE/CN1_GA.GIM new file mode 100644 index 0000000..8c0ef26 --- /dev/null +++ b/CONTENT/RP/GAUGE/CN1_GA.GIM @@ -0,0 +1,29 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10 +level1=100000 + +[vertices] +v0=30, 0, 50 +v1=-30, 0, 50 +v2=-30, 0, -50 +v3=30, 0, -50 +v4=27.9, 0, -50.002 +v5=27.4142, 0, 50 +v6=24, 0, 50 +v7=24, 0, -50 +v8=-22.5, 0, -50 +v9=-22.5, 0, 50 +v10=-25.7071, 0, 50 +v11=-25.7071, 0, -50 + +[level0] +linelist=a_pipe v4 v5 v6 v7 v4 +linelist=a_pipe v8 v9 v10 v11 v8 + +[level1] +linelist=a_tunnel v0 v1 v2 v3 v0 + + diff --git a/CONTENT/RP/GAUGE/CN2_GA.GIM b/CONTENT/RP/GAUGE/CN2_GA.GIM new file mode 100644 index 0000000..a0ef55b --- /dev/null +++ b/CONTENT/RP/GAUGE/CN2_GA.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=100000 + +[vertices] +v0=30, 0, 50 +v1=-30, 0, 50 +v2=-30, 0, -50 +v3=30, 0, -50 + +[level0] +linelist=a_tunnel v0 v1 v2 v3 v0 + diff --git a/CONTENT/RP/GAUGE/CN3U_GA.GIM b/CONTENT/RP/GAUGE/CN3U_GA.GIM new file mode 100644 index 0000000..7aefd07 --- /dev/null +++ b/CONTENT/RP/GAUGE/CN3U_GA.GIM @@ -0,0 +1,20 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=1000 + +[vertices] +v0=44.5, 0, 47.5 +v1=19.5, 0, 47.5 +v2=19.5, 0, 52.5 +v3=44.5, 0, 52.5 +v4=-44.5, 0, 52.5 +v5=-19.5, 0, 52.5 +v6=-19.5, 0, 47.5 +v7=-44.5, 0, 47.5 + +[level0] +linelist=a_concrete v0 v1 v2 v3 v0 +linelist=a_concrete v4 v5 v6 v7 v4 + diff --git a/CONTENT/RP/GAUGE/CN3_GA.GIM b/CONTENT/RP/GAUGE/CN3_GA.GIM new file mode 100644 index 0000000..7aefd07 --- /dev/null +++ b/CONTENT/RP/GAUGE/CN3_GA.GIM @@ -0,0 +1,20 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=1000 + +[vertices] +v0=44.5, 0, 47.5 +v1=19.5, 0, 47.5 +v2=19.5, 0, 52.5 +v3=44.5, 0, 52.5 +v4=-44.5, 0, 52.5 +v5=-19.5, 0, 52.5 +v6=-19.5, 0, 47.5 +v7=-44.5, 0, 47.5 + +[level0] +linelist=a_concrete v0 v1 v2 v3 v0 +linelist=a_concrete v4 v5 v6 v7 v4 + diff --git a/CONTENT/RP/GAUGE/CN4_GA.GIM b/CONTENT/RP/GAUGE/CN4_GA.GIM new file mode 100644 index 0000000..a0ef55b --- /dev/null +++ b/CONTENT/RP/GAUGE/CN4_GA.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=100000 + +[vertices] +v0=30, 0, 50 +v1=-30, 0, 50 +v2=-30, 0, -50 +v3=30, 0, -50 + +[level0] +linelist=a_tunnel v0 v1 v2 v3 v0 + diff --git a/CONTENT/RP/GAUGE/CN5U_GA.GIM b/CONTENT/RP/GAUGE/CN5U_GA.GIM new file mode 100644 index 0000000..b00c616 --- /dev/null +++ b/CONTENT/RP/GAUGE/CN5U_GA.GIM @@ -0,0 +1,27 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10 +level1=100000 + +[vertices] +v0=30, 0, 50 +v1=-30, 0, 50 +v2=-30, 0, -50 +v3=30, 0, -50 +v4=27.9, 0, -50.002 +v5=27.4142, 0, 50 +v6=24, 0, 50 +v7=24, 0, -50 +v8=-22.5, 0, -50 +v9=-22.5, 0, 50 +v10=-25.7071, 0, 50 +v11=-25.7071, 0, -50 + +[level0] +linelist=a_pipe v4 v5 v6 v7 v4 +linelist=a_pipe v8 v9 v10 v11 v8 + +[level1] +linelist=a_tunnel v0 v1 v2 v3 v0 diff --git a/CONTENT/RP/GAUGE/CN5_GA.GIM b/CONTENT/RP/GAUGE/CN5_GA.GIM new file mode 100644 index 0000000..b00c616 --- /dev/null +++ b/CONTENT/RP/GAUGE/CN5_GA.GIM @@ -0,0 +1,27 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10 +level1=100000 + +[vertices] +v0=30, 0, 50 +v1=-30, 0, 50 +v2=-30, 0, -50 +v3=30, 0, -50 +v4=27.9, 0, -50.002 +v5=27.4142, 0, 50 +v6=24, 0, 50 +v7=24, 0, -50 +v8=-22.5, 0, -50 +v9=-22.5, 0, 50 +v10=-25.7071, 0, 50 +v11=-25.7071, 0, -50 + +[level0] +linelist=a_pipe v4 v5 v6 v7 v4 +linelist=a_pipe v8 v9 v10 v11 v8 + +[level1] +linelist=a_tunnel v0 v1 v2 v3 v0 diff --git a/CONTENT/RP/GAUGE/CN6_GA.GIM b/CONTENT/RP/GAUGE/CN6_GA.GIM new file mode 100644 index 0000000..f7a3ef5 --- /dev/null +++ b/CONTENT/RP/GAUGE/CN6_GA.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=100000 + +[vertices] +v0=44.5, 0, 60 +v1=-44.5, 0, 60 +v2=-44.5, 0, -50 +v3=44.5, 0, -50 + +[level0] +linelist=a_tunnel v0 v1 v2 v3 v0 + diff --git a/CONTENT/RP/GAUGE/CN7U_GA.GIM b/CONTENT/RP/GAUGE/CN7U_GA.GIM new file mode 100644 index 0000000..8c0ef26 --- /dev/null +++ b/CONTENT/RP/GAUGE/CN7U_GA.GIM @@ -0,0 +1,29 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10 +level1=100000 + +[vertices] +v0=30, 0, 50 +v1=-30, 0, 50 +v2=-30, 0, -50 +v3=30, 0, -50 +v4=27.9, 0, -50.002 +v5=27.4142, 0, 50 +v6=24, 0, 50 +v7=24, 0, -50 +v8=-22.5, 0, -50 +v9=-22.5, 0, 50 +v10=-25.7071, 0, 50 +v11=-25.7071, 0, -50 + +[level0] +linelist=a_pipe v4 v5 v6 v7 v4 +linelist=a_pipe v8 v9 v10 v11 v8 + +[level1] +linelist=a_tunnel v0 v1 v2 v3 v0 + + diff --git a/CONTENT/RP/GAUGE/CQ1_GA.GIM b/CONTENT/RP/GAUGE/CQ1_GA.GIM new file mode 100644 index 0000000..c249aed --- /dev/null +++ b/CONTENT/RP/GAUGE/CQ1_GA.GIM @@ -0,0 +1,17 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=100000 + +[vertices] +v0=-5.5, 0, -28.5 +v1=5.5, 0, -28.5 +v2=5.5, 0, 19 +v3=-2.5, 0, 28.5 +v4=-5.5, 0, 28.5 + +[level0] +linelist=a_concrete v0 v1 v2 v3 v4 v0 + + diff --git a/CONTENT/RP/GAUGE/CQ2_GA.GIM b/CONTENT/RP/GAUGE/CQ2_GA.GIM new file mode 100644 index 0000000..8d6fdcb --- /dev/null +++ b/CONTENT/RP/GAUGE/CQ2_GA.GIM @@ -0,0 +1,16 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=100000 + +[vertices] +v0=-87, 0, -34 +v1=11, 0, -34 +v2=11, 0, 34 +v3=-87, 0, 34 + +[level0] +linelist=a_concrete v0 v1 v2 v3 v0 + + diff --git a/CONTENT/RP/GAUGE/CR1A_GA.GIM b/CONTENT/RP/GAUGE/CR1A_GA.GIM new file mode 100644 index 0000000..5152390 --- /dev/null +++ b/CONTENT/RP/GAUGE/CR1A_GA.GIM @@ -0,0 +1,41 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=5 +level1=100 +level2=100000 + +[vertices] +v0=15, 0, -35 +v1=-15, 0, -35 +v2=-15, 0, -41 +v3=15, 0, -41 +v4=6, 0, 44 +v5=5, 0, 47 +v6=1, 0, 47 +v7=-1, 0, 44 +v8=-1, 0, -35 +v9=6, 0, -35 +v10=15, 0, -18 +v11=22, 0, -18 +v12=22, 0, 44 +v13=15, 0, 44 +v14=15, 0, 50 +v15=-15, 0, 50 +v16=-15, 0, 35 +v17=-10, 0, 25 +v18=-10, 0, 0 +v19=-15, 0, -10 +v20=-15, 0, -50 +v21=15, 0, -50 + +[level0] +linelist=a_tunnel v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v10 + +[level1] +linelist=a_tunnel v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v10 + +[level2] +linelist=a_tunnel v14 v15 v20 v21 v14 + diff --git a/CONTENT/RP/GAUGE/CR1_GA.GIM b/CONTENT/RP/GAUGE/CR1_GA.GIM new file mode 100644 index 0000000..2802952 --- /dev/null +++ b/CONTENT/RP/GAUGE/CR1_GA.GIM @@ -0,0 +1,43 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=5 +level1=100 +level2=100000 + +[vertices] +v0=15, 0, -35 +v1=-15, 0, -35 +v2=-15, 0, -41 +v3=15, 0, -41 +v4=6, 0, 44 +v5=5, 0, 47 +v6=1, 0, 47 +v7=-1, 0, 44 +v8=-1, 0, -35 +v9=6, 0, -35 +v10=15, 0, -18 +v11=22, 0, -18 +v12=22, 0, 44 +v13=15, 0, 44 +v14=15, 0, 50 +v15=-15, 0, 50 +v16=-15, 0, 35 +v17=-10, 0, 25 +v18=-10, 0, 0 +v19=-15, 0, -10 +v20=-15, 0, -50 +v21=15, 0, -50 + +[level0] +linelist=a_pipe v0 v1 v2 v3 v0 +linelist=a_pipe v4 v5 v6 v7 v8 v9 v4 +linelist=a_tunnel v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v10 + +[level1] +linelist=a_tunnel v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v10 + +[level2] +linelist=a_tunnel v14 v15 v20 v21 v14 + diff --git a/CONTENT/RP/GAUGE/CR2_GA.GIM b/CONTENT/RP/GAUGE/CR2_GA.GIM new file mode 100644 index 0000000..81ca9c2 --- /dev/null +++ b/CONTENT/RP/GAUGE/CR2_GA.GIM @@ -0,0 +1,34 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10 +level1=100000 + +[vertices] +v0=15, 0, 40 +v1=-15, 0, 40 +v2=-15, 0, 36 +v3=15, 0, 36 +v4=15, 0, 4 +v5=-15, 0, 4 +v6=-15, 0, 1 +v7=15, 0, 1 +v8=15, 0, -29 +v9=-15, 0, -29 +v10=-15, 0, -39 +v11=15, 0, -39 +v12=15, 0, 50 +v13=-15, 0, 50 +v14=-15, 0, -50 +v15=15, 0, -50 + +[level0] +linelist=a_pipe v0 v1 v2 v3 v0 +linelist=a_pipe v4 v5 v6 v7 v4 +linelist=a_pipe v8 v9 v10 v11 v8 +linelist=a_tunnel v12 v13 v14 v15 v12 + +[level1] +linelist=a_tunnel v12 v13 v14 v15 v12 + diff --git a/CONTENT/RP/GAUGE/CR3_GA.GIM b/CONTENT/RP/GAUGE/CR3_GA.GIM new file mode 100644 index 0000000..f6d5e2f --- /dev/null +++ b/CONTENT/RP/GAUGE/CR3_GA.GIM @@ -0,0 +1,35 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10 +level1=100000 + +[vertices] +v0=-15, 0, 9 +v1=-27, 0, -3 +v2=-27, 0, -36 +v3=-15, 0, -48 +v4=15, 0, 50 +v5=-15, 0, 50 +v6=-15, 0, -50 +v7=15, 0, -50 +v8=-6, 0, 4 +v9=-4, 0, 1 +v10=4, 0, 1 +v11=8, 0, 6 +v12=8, 0, 40 +v13=4, 0, 44 +v14=-4, 0, 44 +v15=-6, 0, 40 +v16=-15, 0, 40 +v17=-15, 0, 4 + +[level0] +linelist=a_tunnel v0 v1 v2 v3 v0 +linelist=a_tunnel v4 v5 v6 v7 v4 +linelist=a_pipe v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v8 + +[level1] +linelist=a_tunnel v4 v5 v6 v7 v4 + diff --git a/CONTENT/RP/GAUGE/CR4_GA.GIM b/CONTENT/RP/GAUGE/CR4_GA.GIM new file mode 100644 index 0000000..bd7ec7e --- /dev/null +++ b/CONTENT/RP/GAUGE/CR4_GA.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=100000 + +[vertices] +v0=15, 0, 50 +v1=-15, 0, 50 +v2=-15, 0, -50 +v3=15, 0, -50 + +[level0] +linelist=a_tunnel v0 v1 v2 v3 v0 + diff --git a/CONTENT/RP/GAUGE/CR5_GA.GIM b/CONTENT/RP/GAUGE/CR5_GA.GIM new file mode 100644 index 0000000..020c073 --- /dev/null +++ b/CONTENT/RP/GAUGE/CR5_GA.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=100000 + +[vertices] +v0=15, 0, 50 +v1=-15, 0, 50 +v2=-20, 0, -50 +v3=20, 0, -50 + +[level0] +linelist=a_tunnel v0 v1 v2 v3 v0 + diff --git a/CONTENT/RP/GAUGE/CR6_GA.GIM b/CONTENT/RP/GAUGE/CR6_GA.GIM new file mode 100644 index 0000000..c6c3c70 --- /dev/null +++ b/CONTENT/RP/GAUGE/CR6_GA.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=20, 0, 100 +v1=-20, 0, 100 +v2=-20, 0, -100 +v3=20, 0, -100 + +[level0] +linelist=a_tunnel v0 v1 v2 v3 v0 + diff --git a/CONTENT/RP/GAUGE/CR8_GA.GIM b/CONTENT/RP/GAUGE/CR8_GA.GIM new file mode 100644 index 0000000..a0ef55b --- /dev/null +++ b/CONTENT/RP/GAUGE/CR8_GA.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=100000 + +[vertices] +v0=30, 0, 50 +v1=-30, 0, 50 +v2=-30, 0, -50 +v3=30, 0, -50 + +[level0] +linelist=a_tunnel v0 v1 v2 v3 v0 + diff --git a/CONTENT/RP/GAUGE/CRE_GA.GIM b/CONTENT/RP/GAUGE/CRE_GA.GIM new file mode 100644 index 0000000..2cd0993 --- /dev/null +++ b/CONTENT/RP/GAUGE/CRE_GA.GIM @@ -0,0 +1,24 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10 +level1=100000 + +[vertices] +v0=25, 0, 25 +v1=-25, 0, 25 +v2=-15, 0, -25 +v3=15, 0, -25 +v4=51, 0, 25 +v5=51, 0, 27 +v6=-50, 0, 27 +v7=-50, 0, 25 + +[level0] +linelist=a_tunnel v0 v1 v2 v3 v0 +linelist=a_concrete v4 v5 v6 v7 v4 + +[level1] +linelist=a_tunnel v4 v7 v2 v3 v4 + diff --git a/CONTENT/RP/GAUGE/CT1_GA.GIM b/CONTENT/RP/GAUGE/CT1_GA.GIM new file mode 100644 index 0000000..26aef8f --- /dev/null +++ b/CONTENT/RP/GAUGE/CT1_GA.GIM @@ -0,0 +1,19 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=100 + +[vertices] +v0=0, 0, 4.07187 +v1=-2.87918, 0, 2.87931 +v2=-4.07187, 0, 0.000189 +v3=-2.87945, 0, -2.87905 +v4=-0.000377, 0, -4.07187 +v5=2.87891, 0, -2.87958 +v6=4.07187, 0, -0.000566 +v7=2.87971, 0, 2.87878 + +[level0] +linelist=a_machine v0 v1 v2 v3 v4 v5 v6 v7 v0 + diff --git a/CONTENT/RP/GAUGE/D45_GA.GIM b/CONTENT/RP/GAUGE/D45_GA.GIM new file mode 100644 index 0000000..15a174a --- /dev/null +++ b/CONTENT/RP/GAUGE/D45_GA.GIM @@ -0,0 +1,17 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=100000 + +[vertices] +v0=-26, 0, 0 +v1=-10, 0, 37 +v2=59, 0, 107 +v3=112, 0, 107 +v4=97, 0, 70 +v5=26, 0, 0 + +[level0] +linelist=a_demo v0 v1 v2 v3 v4 v5 v0 + diff --git a/CONTENT/RP/GAUGE/DPACK_GA.BAK b/CONTENT/RP/GAUGE/DPACK_GA.BAK new file mode 100644 index 0000000..09d520c --- /dev/null +++ b/CONTENT/RP/GAUGE/DPACK_GA.BAK @@ -0,0 +1,23 @@ +# built by hand: 6-6-95 cpb + +[object] +gatfile=gauge.gat + +[lods] +level0=100000 + +[vertices] +v0=-5, 0, 5 +v1=5, 0, 5 +v2=5, 0, -5 +v3=-5, 0, -5 +v4=-5, 0, 0 +v5=5, 0, 0 +v6=0, 0, -5 +v7=0, 0, 5 + +[level0] +linelist=a_demo v0 v2 +linelist=a_demo v1 v3 +linelist=a_mine v4 v5 +linelist=a_mine v6 v7 diff --git a/CONTENT/RP/GAUGE/DPACK_GA.GIM b/CONTENT/RP/GAUGE/DPACK_GA.GIM new file mode 100644 index 0000000..2910357 --- /dev/null +++ b/CONTENT/RP/GAUGE/DPACK_GA.GIM @@ -0,0 +1,23 @@ +# built by hand: 6-6-95 cpb + +[object] +gatfile=gauge.gat + +[lods] +level0=100000 + +[vertices] +v0=-5, 0, 5 +v1=5, 0, 5 +v2=5, 0, -5 +v3=-5, 0, -5 +v4=-5, 0, 0 +v5=5, 0, 0 +v6=0, 0, -5 +v7=0, 0, 5 + +[level0] +linelist=a_demo v0 v2 +linelist=a_demo v1 v3 +linelist=a_pipe v4 v5 +linelist=a_pipe v6 v7 diff --git a/CONTENT/RP/GAUGE/DR1_GA.GIM b/CONTENT/RP/GAUGE/DR1_GA.GIM new file mode 100644 index 0000000..42652ab --- /dev/null +++ b/CONTENT/RP/GAUGE/DR1_GA.GIM @@ -0,0 +1,32 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=5 +level1=50000 + +[vertices] +v0=75, 0, 24 +v1=25, 0, 24 +v2=25, 0, -25 +v3=75, 0, -25 +v4=-25, 0, 24 +v5=-75, 0, 24 +v6=-75, 0, -25 +v7=-25, 0, -25 +v8=0, 0, 0 +v9=-25, 0, -12 +v10=-25, 0, 10 +v11=25, 0, 10 +v12=25, 0, -12 +v13=75, 0, 20 +v14=75, 0, -22 +v15=-75, 0, -22 +v16=-75, 0, 20 + +[level0] +linelist=a_door v8 v9 v10 v8 + +[level1] +linelist=a_door v8 v13 v14 v8 + diff --git a/CONTENT/RP/GAUGE/DR2_GA.GIM b/CONTENT/RP/GAUGE/DR2_GA.GIM new file mode 100644 index 0000000..1898002 --- /dev/null +++ b/CONTENT/RP/GAUGE/DR2_GA.GIM @@ -0,0 +1,32 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=5 +level1=50000 + +[vertices] +v0=75, 0, 24 +v1=25, 0, 24 +v2=25, 0, -25 +v3=75, 0, -25 +v4=-25, 0, 24 +v5=-75, 0, 24 +v6=-75, 0, -25 +v7=-25, 0, -25 +v8=0, 0, 0 +v9=-25, 0, -12 +v10=-25, 0, 10 +v11=25, 0, 10 +v12=25, 0, -12 +v13=75, 0, 20 +v14=75, 0, -22 +v15=-75, 0, -22 +v16=-75, 0, 20 + +[level0] +linelist=a_door v8 v11 v12 v8 + +[level1] +linelist=a_door v8 v15 v16 v8 + diff --git a/CONTENT/RP/GAUGE/DRW_GA.GIM b/CONTENT/RP/GAUGE/DRW_GA.GIM new file mode 100644 index 0000000..916705e --- /dev/null +++ b/CONTENT/RP/GAUGE/DRW_GA.GIM @@ -0,0 +1,36 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=5 +level1=50000 + +[vertices] +v0=75, 0, 24 +v1=25, 0, 24 +v2=25, 0, -25 +v3=75, 0, -25 +v4=-25, 0, 24 +v5=-75, 0, 24 +v6=-75, 0, -25 +v7=-25, 0, -25 +v8=0, 0, 0 +v9=-25, 0, -12 +v10=-25, 0, 10 +v11=25, 0, 10 +v12=25, 0, -12 +v13=75, 0, 20 +v14=75, 0, -22 +v15=-75, 0, -22 +v16=-75, 0, 20 + +[level0] +linelist=a_concrete v0 v1 v2 v3 v0 +linelist=a_concrete v4 v5 v6 v7 v4 +linelist=a_door v8 v9 v10 v8 +linelist=a_door v8 v11 v12 v8 + +[level1] +linelist=a_door v8 v13 v14 v8 +linelist=a_door v8 v15 v16 v8 + diff --git a/CONTENT/RP/GAUGE/FT1_GA.GIM b/CONTENT/RP/GAUGE/FT1_GA.GIM new file mode 100644 index 0000000..1a0fea4 --- /dev/null +++ b/CONTENT/RP/GAUGE/FT1_GA.GIM @@ -0,0 +1,19 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=1000 + +[vertices] +v0=4.72069e-05, 0, 8.14385 +v1=-5.75831, 0, 5.75874 +v2=-8.14369, 0, 0.000491785 +v3=-5.75885, 0, -5.75798 +v4=-0.000706793, 0, -8.14362 +v5=5.75787, 0, -5.75905 +v6=8.14379, 0, -0.00101821 +v7=5.75947, 0, 5.75767 + +[level0] +linelist=a_machine v0 v1 v2 v3 v4 v5 v6 v7 v0 + diff --git a/CONTENT/RP/GAUGE/GAR1_GA.GIM b/CONTENT/RP/GAUGE/GAR1_GA.GIM new file mode 100644 index 0000000..8459ddf --- /dev/null +++ b/CONTENT/RP/GAUGE/GAR1_GA.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level10=100000 + +[vertices] +v0=-200, 0, 100 +v1=0, 0, -100 +v2=100, 0, 100 +v3=300, 0, -100 + +[level10] +linelist=a_concrete v0 v1 +linelist=a_concrete v2 v3 diff --git a/CONTENT/RP/GAUGE/GAR2_GA.GIM b/CONTENT/RP/GAUGE/GAR2_GA.GIM new file mode 100644 index 0000000..071ad86 --- /dev/null +++ b/CONTENT/RP/GAUGE/GAR2_GA.GIM @@ -0,0 +1,16 @@ +[object] +gatfile=gauge.gat + +[lods] +level10=100000 + +[vertices] +v0=-200, 0, 100 +v1=0, 0, -100 +v2=300, 0, -100 +v3=300, 0, 0 +v4=100, 0, 0 +v5=100, 0, 100 + +[level10] +linelist=a_concrete v0 v1 v2 v3 v4 v5 diff --git a/CONTENT/RP/GAUGE/GAR_GA.GIM b/CONTENT/RP/GAUGE/GAR_GA.GIM new file mode 100644 index 0000000..15df24d --- /dev/null +++ b/CONTENT/RP/GAUGE/GAR_GA.GIM @@ -0,0 +1,21 @@ +[object] +gatfile=gauge.gat + +[lods] +level10=100000 + +[vertices] +v0=-50, 0, -50 +v1=-150, 0, -150 +v2=-150, 0, -250 +v3=150, 0, -250 +v4=150, 0, -150 +v5=50, 0, -50 +v6=50, 0, -150 +v7=50, 0, -250 +v8=-50, 0, -250 +v9=-50, 0, -150 + +[level10] +linelist=a_concrete v3 v4 v5 v0 v1 v2 +linelist=a_concrete v6 v7 v8 v9 v6 diff --git a/CONTENT/RP/GAUGE/GAUGE.BAK b/CONTENT/RP/GAUGE/GAUGE.BAK new file mode 100644 index 0000000..d99b809 --- /dev/null +++ b/CONTENT/RP/GAUGE/GAUGE.BAK @@ -0,0 +1,63 @@ +; +; gauge.gat - gauge attribute file +; +[colors] +; special meaning colors +default=0 +colorteam1=1 +colorteam2=2 +colorteam3=3 +colorteam4=4 +colorteam5=5 +colorteam6=6 +colorteam7=7 +colorteam8=8 + +; pallet index colors +blue=58 +red=57 +yellow=56 +gray=55 +lightgray=51 +darkgray=60 +white=54 +cyan=50 +brightred=49 +green=41 + +; additional colors based on pallet indexes +;canaledge=31 +canaledge=51 +redpipe=30 +;concrete=29 +concrete=51 +machine=28 +;tunnel=27 +tunnel=51 +door=26 +drop=25 +warning=24 +mine=23 +police=22 + +[attributes] +unscaled = 1 ; shape will not be scaled: 1 meter = 1 pixel + +[groups] +a_body=red +a_wings=yellow +a_cab=white +a_rock=canaledge +a_pipe=redpipe +a_concrete=concrete +a_machine=machine +a_tunnel=tunnel +a_redrock=canaledge +a_door=door +a_drop=drop +a_warning=warning +a_mine=mine +a_demo=yellow +a_police=police +a_vtv=default +a_sting=green \ No newline at end of file diff --git a/CONTENT/RP/GAUGE/GAUGE.GAT b/CONTENT/RP/GAUGE/GAUGE.GAT new file mode 100644 index 0000000..445df7c --- /dev/null +++ b/CONTENT/RP/GAUGE/GAUGE.GAT @@ -0,0 +1,63 @@ +; +; gauge.gat - gauge attribute file +; +[colors] +; special meaning colors +default=0 +colorteam1=1 +colorteam2=2 +colorteam3=3 +colorteam4=4 +colorteam5=5 +colorteam6=6 +colorteam7=7 +colorteam8=8 + +; pallet index colors +blue=58 +red=57 +yellow=56 +gray=55 +lightgray=51 +darkgray=60 +white=54 +cyan=50 +brightred=49 +green=41 + +; additional colors based on pallet indexes +;canaledge=31 +canaledge=51 +redpipe=30 +;concrete=29 +concrete=51 +machine=28 +;tunnel=27 +tunnel=51 +door=26 +drop=25 +warning=24 +mine=23 +police=22 + +[attributes] +unscaled = 1 ; shape will not be scaled: 1 meter = 1 pixel + +[groups] +a_body=red +a_wings=yellow +a_cab=white +a_rock=canaledge +a_pipe=redpipe +a_concrete=concrete +a_machine=machine +a_tunnel=tunnel +a_redrock=canaledge +a_door=door +a_drop=drop +a_warning=warning +a_mine=mine +a_demo=yellow +a_police=police +a_vtv=default +a_sting=green diff --git a/CONTENT/RP/GAUGE/GR1_GA.GIM b/CONTENT/RP/GAUGE/GR1_GA.GIM new file mode 100644 index 0000000..b855f38 --- /dev/null +++ b/CONTENT/RP/GAUGE/GR1_GA.GIM @@ -0,0 +1,37 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=5 +level1=100000 + +[vertices] +v0=-50, 0, 20 +v1=-50, 0, -20 +v2=50, 0, -20 +v3=50, 0, 20 +v4=-35, 0, -40 +v5=-35, 0, -25 +v6=-50, 0, -45 +v7=35, 0, 40 +v8=35, 0, 25 +v9=50, 0, 45 +v10=35, 0, 15 +v11=45, 0, -15 +v12=25, 0, -15 +v13=-35, 0, -15 +v14=-25, 0, 15 +v15=-45, 0, 15 + +[level0] +linelist=a_concrete v0 v1 v2 v3 v0 +linelist=a_concrete v4 v5 v1 v6 v4 +linelist=a_concrete v7 v8 v3 v9 v7 +linelist=a_drop v10 v11 v12 v10 +linelist=a_drop v13 v14 v15 v13 + +[level1] +linelist=a_concrete v0 v1 v2 v3 v0 +linelist=a_drop v13 v14 v15 v13 +linelist=a_drop v10 v11 v12 v10 + diff --git a/CONTENT/RP/GAUGE/GR2_GA.GIM b/CONTENT/RP/GAUGE/GR2_GA.GIM new file mode 100644 index 0000000..e0e25fc --- /dev/null +++ b/CONTENT/RP/GAUGE/GR2_GA.GIM @@ -0,0 +1,36 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=-50, 0, 20 +v1=-50, 0, -20 +v2=50, 0, -20 +v3=50, 0, 20 +v4=25, 0, -50 +v5=55, 0, -20 +v6=55, 0, 20 +v7=25, 0, 50 +v8=25, 0, 100 +v9=-25, 0, 100 +v10=-25, 0, 50 +v11=-55, 0, 20 +v12=-55, 0, -20 +v13=-25, 0, -50 +v14=-25, 0, -100 +v15=25, 0, -100 +v16=-35, 0, -15 +v17=-25, 0, 15 +v18=-45, 0, 15 +v19=35, 0, 15 +v20=45, 0, -15 +v21=25, 0, -15 + +[level0] +linelist=a_concrete v0 v1 v2 v3 v0 +linelist=a_tunnel v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v4 +linelist=a_drop v16 v17 v18 v16 +linelist=a_drop v19 v20 v21 v19 + diff --git a/CONTENT/RP/GAUGE/HV5_GA.GIM b/CONTENT/RP/GAUGE/HV5_GA.GIM new file mode 100644 index 0000000..6bf5476 --- /dev/null +++ b/CONTENT/RP/GAUGE/HV5_GA.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=60, 0, 50 +v1=-55, 0, 50 +v2=-55, 0, 30 +v3=60, 0, 30 + +[level0] +linelist=a_warning v0 v1 v2 v3 v0 + diff --git a/CONTENT/RP/GAUGE/HVE_GA.GIM b/CONTENT/RP/GAUGE/HVE_GA.GIM new file mode 100644 index 0000000..6ff15d3 --- /dev/null +++ b/CONTENT/RP/GAUGE/HVE_GA.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=60, 0, 60 +v1=-55, 0, 60 +v2=-55, 0, 40 +v3=60, 0, 40 + +[level0] +linelist=a_warning v0 v1 v2 v3 v0 + diff --git a/CONTENT/RP/GAUGE/L4GAUGE.1 b/CONTENT/RP/GAUGE/L4GAUGE.1 new file mode 100644 index 0000000..c48513d --- /dev/null +++ b/CONTENT/RP/GAUGE/L4GAUGE.1 @@ -0,0 +1,20 @@ +################################## +# lepton +################################## +leptonInit +{ + common_setup; + twoBoosterInit; + oneChuteInit; + lu; +} + +################################## +# quark +################################## +quarkInit +{ + common_setup; + twoBoosterInit; + lu; +} diff --git a/CONTENT/RP/GAUGE/L4GAUGE.2 b/CONTENT/RP/GAUGE/L4GAUGE.2 new file mode 100644 index 0000000..78d174b --- /dev/null +++ b/CONTENT/RP/GAUGE/L4GAUGE.2 @@ -0,0 +1,17 @@ +#################################################################### +# LU (lepton,unarmored)-based VTV's +#################################################################### +lu +{ + offset=(162,86); bgPixelMap(ModeAlwaysActive, slu.pcc, 1); + offset=(162,86); colorState( + Q, ModeAlwaysActive, + sdlu.pcc, + 0x3A,0.2, + 0x29,0.4, + 0x38,0.6, + 0x39,0.8, + 0x31,0, + DamageZones + ); +} diff --git a/CONTENT/RP/GAUGE/L4GAUGE.GF b/CONTENT/RP/GAUGE/L4GAUGE.GF new file mode 100644 index 0000000..860ac1e --- /dev/null +++ b/CONTENT/RP/GAUGE/L4GAUGE.GF @@ -0,0 +1 @@ +# This file OBSOLETED 8-4-95 by cpb diff --git a/CONTENT/RP/GAUGE/L4GAUGE.INI b/CONTENT/RP/GAUGE/L4GAUGE.INI new file mode 100644 index 0000000..535958c --- /dev/null +++ b/CONTENT/RP/GAUGE/L4GAUGE.INI @@ -0,0 +1,36 @@ +; +; VESA SVGA mode summary +; +[misc] +timeStamp=Tue Mar 3 16:47:06 1996 +manufacturer=STB Horizon+ PCI 1.2 + +[640x480x8] +mode=257 ;0101h +width=640 +height=480 +sizeInKB=64 +granularityInKB=4 +bytesPerLine=1280 +pageFcnPtr=794632 ;C000:2008 +special=1 + +[640x480x16] +mode=273 ;0111h +width=640 +height=480 +sizeInKB=64 +granularityInKB=4 +bytesPerLine=1280 +pageFcnPtr=796182 ;C000:2616 +special=0 + +[800x600x16] +mode=276 ;0114h +width=800 +height=600 +sizeInKB=64 +granularityInKB=4 +bytesPerLine=1600 +pageFcnPtr=796182 ;C000:2616 +special=0 diff --git a/CONTENT/RP/GAUGE/MD3_GA.GIM b/CONTENT/RP/GAUGE/MD3_GA.GIM new file mode 100644 index 0000000..4d7022e --- /dev/null +++ b/CONTENT/RP/GAUGE/MD3_GA.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=50000 + +[vertices] +v0=10, 0, 50 +v1=-10, 0, 50 +v2=-10, 0, -50 +v3=10, 0, -50 + +[level0] +linelist=a_mine v0 v1 v2 v3 v0 + diff --git a/CONTENT/RP/GAUGE/MD4_GA.GIM b/CONTENT/RP/GAUGE/MD4_GA.GIM new file mode 100644 index 0000000..4d7022e --- /dev/null +++ b/CONTENT/RP/GAUGE/MD4_GA.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=50000 + +[vertices] +v0=10, 0, 50 +v1=-10, 0, 50 +v2=-10, 0, -50 +v3=10, 0, -50 + +[level0] +linelist=a_mine v0 v1 v2 v3 v0 + diff --git a/CONTENT/RP/GAUGE/ME1_GA.GIM b/CONTENT/RP/GAUGE/ME1_GA.GIM new file mode 100644 index 0000000..05b471f --- /dev/null +++ b/CONTENT/RP/GAUGE/ME1_GA.GIM @@ -0,0 +1,20 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=100000 + +[vertices] +v0=50, 0, 50 +v1=-50, 0, 50 +v2=-50, 0, -50 +v3=50, 0, -50 +v4=40, 0, 50 +v5=-40, 0, 50 +v6=-15, 0, -50 +v7=15, 0, -50 + +[level0] +linelist=a_redrock v0 v1 v2 v3 v0 +linelist=a_mine v4 v5 v6 v7 v4 + diff --git a/CONTENT/RP/GAUGE/ME3_GA.GIM b/CONTENT/RP/GAUGE/ME3_GA.GIM new file mode 100644 index 0000000..4d426d6 --- /dev/null +++ b/CONTENT/RP/GAUGE/ME3_GA.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=100000 + +[vertices] +v0=50, 0, 50 +v1=-50, 0, 50 +v2=-50, 0, -50 +v3=50, 0, -50 + +[level0] +linelist=a_concrete v0 v1 v2 v3 v0 + diff --git a/CONTENT/RP/GAUGE/MULE_GA.GIM b/CONTENT/RP/GAUGE/MULE_GA.GIM new file mode 100644 index 0000000..152f9ed --- /dev/null +++ b/CONTENT/RP/GAUGE/MULE_GA.GIM @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/CONTENT/RP/GAUGE/MU_GA.GIM b/CONTENT/RP/GAUGE/MU_GA.GIM new file mode 100644 index 0000000..5afc953 --- /dev/null +++ b/CONTENT/RP/GAUGE/MU_GA.GIM @@ -0,0 +1,56 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=0.1 +level1=1 +level2=10 +level3=100 +level4=100000 + +[vertices] +v0=-1.5, 0, 2.5 +v1=-4.5, 0, 1 +v2=-4.5, 0, -0.5 +v3=-1.5, 0, -2 +v4=1.5, 0, 2.5 +v5=1.5, 0, -2 +v6=4.5, 0, -0.5 +v7=4.5, 0, 1 +v8=1.5, 0, -4.5 +v9=1.5, 0, 4.5 +v10=-1.5, 0, 4.5 +v11=-1.5, 0, -4.5 +v12=0.75, 0, 3.5 +v13=-0.75, 0, 3.5 +v14=-0.75, 0, 1.25 +v15=0.75, 0, 1.25 +v16=-2.8, 0, 3.5 +v17=0, 0, -4.6 +v18=2.6, 0, 3.5 + +[level0] +linelist=a_vtv v0 v1 v2 v3 v0 +linelist=a_vtv v4 v5 v6 v7 v4 +linelist=a_vtv v8 v9 v10 v11 v8 +linelist=a_vtv v12 v13 v14 v15 v12 + +[level1] +linelist=a_vtv v8 v9 v10 v11 v8 +linelist=a_vtv v0 v1 v2 v3 v0 +linelist=a_vtv v4 v5 v6 v7 v4 +linelist=a_vtv v12 v13 v14 v15 v12 + +[level2] +linelist=a_vtv v8 v9 v10 v11 v8 +linelist=a_vtv v4 v5 v6 v7 v4 +linelist=a_vtv v0 v1 v2 v3 v0 + +[level3] +linelist=a_vtv v0 v1 v2 v3 v0 +linelist=a_vtv v4 v5 v6 v7 v4 +linelist=a_vtv v8 v9 v10 v11 v8 + +[level4] +linelist=a_vtv v16 v17 v18 v16 + diff --git a/CONTENT/RP/GAUGE/OA1_GA.GIM b/CONTENT/RP/GAUGE/OA1_GA.GIM new file mode 100644 index 0000000..f2d4f02 --- /dev/null +++ b/CONTENT/RP/GAUGE/OA1_GA.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=5000 + +[vertices] +v0=30, 0, 50 +v1=-30, 0, 50 +v2=-30, 0, 0 +v3=30, 0, 0 + +[level0] +linelist=a_concrete v0 v1 v2 v3 v0 + diff --git a/CONTENT/RP/GAUGE/OA3_GA.GIM b/CONTENT/RP/GAUGE/OA3_GA.GIM new file mode 100644 index 0000000..028e728 --- /dev/null +++ b/CONTENT/RP/GAUGE/OA3_GA.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=50, 0, 50 +v1=-50, 0, 50 +v2=-50, 0, -50 +v3=50, 0, -50 + +[level0] +linelist=a_concrete v0 v1 v2 v3 v0 + diff --git a/CONTENT/RP/GAUGE/OAO_GA.GIM b/CONTENT/RP/GAUGE/OAO_GA.GIM new file mode 100644 index 0000000..4d426d6 --- /dev/null +++ b/CONTENT/RP/GAUGE/OAO_GA.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=100000 + +[vertices] +v0=50, 0, 50 +v1=-50, 0, 50 +v2=-50, 0, -50 +v3=50, 0, -50 + +[level0] +linelist=a_concrete v0 v1 v2 v3 v0 + diff --git a/CONTENT/RP/GAUGE/OD3_GA.GIM b/CONTENT/RP/GAUGE/OD3_GA.GIM new file mode 100644 index 0000000..d347583 --- /dev/null +++ b/CONTENT/RP/GAUGE/OD3_GA.GIM @@ -0,0 +1,34 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=5 +level1=100000 + +[vertices] +v0=20, 0, -120 +v1=0, 0, -120 +v2=0, 0, -140 +v3=20, 0, -140 +v4=-20, 0, 80 +v5=-20, 0, -160 +v6=-10, 0, -160 +v7=-10, 0, 80 +v8=20, 0, 95 +v9=10, 0, 95 +v10=10, 0, -125 +v11=20, 0, -125 +v12=65, 0, -100 +v13=-60, 0, -100 +v14=-60, 0, -200 +v15=65, 0, -200 + +[level0] +linelist=a_warning v0 v1 v2 v3 v0 +linelist=a_machine v4 v5 v6 v7 v4 +linelist=a_machine v8 v9 v10 v11 v8 +linelist=a_concrete v12 v13 v14 v15 v12 + +[level1] +linelist=a_concrete v12 v13 v14 v15 v12 + diff --git a/CONTENT/RP/GAUGE/PIT1_GA.GIM b/CONTENT/RP/GAUGE/PIT1_GA.GIM new file mode 100644 index 0000000..524016a --- /dev/null +++ b/CONTENT/RP/GAUGE/PIT1_GA.GIM @@ -0,0 +1,26 @@ +[object] +gatfile=gauge.gat + +[lods] +level10=100000 + +[vertices] +v0=-50, 0, 150 +v1=-150, 0, 50 +v2=-250, 0, 50 +v3=-250, 0, -50 +v4=-150, 0, -50 +v5=-50, 0, -150 +v6=50, 0, -150 +v7=150, 0, -50 +v8=250, 0, -50 +v9=250, 0, 50 +v10=150, 0, 50 +v11=50, 0, 150 +v12=-50, 0, 50 +v13=-50, 0, -50 +v14=50, 0, -50 +v15=50, 0, 50 + +[level10] +linelist=a_concrete v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v0 diff --git a/CONTENT/RP/GAUGE/PIT2_GA.GIM b/CONTENT/RP/GAUGE/PIT2_GA.GIM new file mode 100644 index 0000000..ec62ab4 --- /dev/null +++ b/CONTENT/RP/GAUGE/PIT2_GA.GIM @@ -0,0 +1,26 @@ +[object] +gatfile=gauge.gat + +[lods] +level10=100000 + +[vertices] +v0=-50, 0, 150 +v1=-150, 0, 50 +v2=-250, 0, 50 +v3=-250, 0, -50 +v4=-150, 0, -50 +v5=-50, 0, -150 +v6=-50, 0, -250 +v7=50, 0, -250 +v8=50, 0, -150 +v9=150, 0, -50 +v10=150, 0, 50 +v11=50, 0, 150 +v12=-50, 0, 50 +v13=-50, 0, -50 +v14=50, 0, -50 +v15=50, 0, 50 + +[level10] +linelist=a_concrete v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v0 diff --git a/CONTENT/RP/GAUGE/PL1_GA.GIM b/CONTENT/RP/GAUGE/PL1_GA.GIM new file mode 100644 index 0000000..b6535f3 --- /dev/null +++ b/CONTENT/RP/GAUGE/PL1_GA.GIM @@ -0,0 +1,27 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10 +level1=50000 + +[vertices] +v0=60, 0, 50 +v1=-55, 0, 50 +v2=-55, 0, -75 +v3=60, 0, -75 +v4=40, 0, 20 +v5=10, 0, 20 +v6=-30, 0, 0 +v7=-30, 0, -20 +v8=10, 0, -35 +v9=10, 0, -55 +v10=40, 0, -55 + +[level0] +linelist=a_police v0 v1 v2 v3 v0 +linelist=a_police v4 v5 v6 v7 v8 v9 v10 v4 + +[level1] +linelist=a_police v0 v1 v2 v3 v0 + diff --git a/CONTENT/RP/GAUGE/PM1_GA.GIM b/CONTENT/RP/GAUGE/PM1_GA.GIM new file mode 100644 index 0000000..30e47d9 --- /dev/null +++ b/CONTENT/RP/GAUGE/PM1_GA.GIM @@ -0,0 +1,19 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=2000 + +[vertices] +v0=5.6684e-05, 0, 8.95825 +v1=-6.33414, 0, 6.33463 +v2=-8.95805, 0, 0.000552324 +v3=-6.33473, 0, -6.33377 +v4=-0.000772716, 0, -8.95798 +v5=6.33366, 0, -6.33494 +v6=8.95817, 0, -0.00110868 +v7=6.33542, 0, 6.33345 + +[level0] +linelist=a_machine v0 v1 v2 v3 v4 v5 v6 v7 v0 + diff --git a/CONTENT/RP/GAUGE/PO_GA.GIM b/CONTENT/RP/GAUGE/PO_GA.GIM new file mode 100644 index 0000000..febbdad --- /dev/null +++ b/CONTENT/RP/GAUGE/PO_GA.GIM @@ -0,0 +1,58 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=0.1 +level1=1 +level2=10 +level3=100000 + +[vertices] +v0=-1.2, 0, -3.2 +v1=1.2, 0, -3.2 +v2=1.2, 0, -1.5 +v3=-1.2, 0, -1.5 +v4=0.7, 0, -2.7 +v5=1.2, 0, -2.1 +v6=1.2, 0, 0.5 +v7=0.7, 0, 3 +v8=-0.7, 0, 3 +v9=-1.2, 0, 0.5 +v10=-1.2, 0, -2.1 +v11=-0.7, 0, -2.7 +v12=-2.4, 0, -1 +v13=-2.4, 0, 0 +v14=2.4, 0, -1 +v15=2.4, 0, 0 +v16=-1.2, 0, 2.6 +v17=-0.8, 0, 2.4 +v18=-1.2, 0, 3 +v19=1.2, 0, 2.6 +v20=1.2, 0, 3 +v21=0.8, 0, 2.4 +v22=1.2, 0, -3.1 +v23=-1.2, 0, -3.1 +v24=-2.4, 0, -0.1 +v25=-2.8, 0, 3.5 +v26=0, 0, -4.6 +v27=2.6, 0, 3.5 + +[level0] +linelist=a_vtv v0 v1 v2 v3 v0 +linelist=a_vtv v4 v5 v6 v7 v8 v9 v10 v11 v4 +linelist=a_vtv v12 v3 v9 v13 v12 +linelist=a_vtv v14 v15 v6 v2 v14 +linelist=a_vtv v16 v17 v8 v18 v16 +linelist=a_vtv v19 v20 v7 v21 v19 + +[level1] +linelist=a_vtv v22 v6 v7 v8 v9 v23 v22 +linelist=a_vtv v12 v3 v9 v13 v12 +linelist=a_vtv v14 v15 v6 v2 v14 + +[level2] +linelist=a_vtv v22 v15 v7 v8 v24 v23 v22 + +[level3] +linelist=a_vtv v25 v26 v27 v25 + diff --git a/CONTENT/RP/GAUGE/RF1_GA.GIM b/CONTENT/RP/GAUGE/RF1_GA.GIM new file mode 100644 index 0000000..d61a0f8 --- /dev/null +++ b/CONTENT/RP/GAUGE/RF1_GA.GIM @@ -0,0 +1,39 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=2 +level1=50000 + +[vertices] +v0=-30, 0, 55 +v1=-155, 0, 5 +v2=-145, 0, -20 +v3=-20, 0, 30 +v4=50, 0, -40 +v5=-135, 0, -115 +v6=-120, 0, -150 +v7=65, 0, -75 +v8=100, 0, 15 +v9=-10, 0, -30 +v10=25, 0, -115 +v11=135, 0, -70 +v12=40, 0, 90 +v13=-70, 0, 45 +v14=-25, 0, -65 +v15=85, 0, -20 +v16=-170, 0, 5 +v17=-125, 0, -105 +v18=-80, 0, -55 +v19=-45, 0, -140 + +[level0] +linelist=a_machine v0 v1 v2 v3 v0 +linelist=a_machine v4 v5 v6 v7 v4 +linelist=a_machine v8 v9 v10 v11 v8 +linelist=a_machine v12 v13 v14 v15 v12 + +[level1] +linelist=a_machine v12 v16 v17 v15 v12 +linelist=a_machine v8 v18 v19 v11 v8 + diff --git a/CONTENT/RP/GAUGE/RIVET_GA.GIM b/CONTENT/RP/GAUGE/RIVET_GA.GIM new file mode 100644 index 0000000..d1c7ae9 --- /dev/null +++ b/CONTENT/RP/GAUGE/RIVET_GA.GIM @@ -0,0 +1,15 @@ +# built by hand: 6-6-95 cpb + +[object] +gatfile=gauge.gat + +[lods] +level0=100000 + +[vertices] +v0=0, 0, 5 +v1=0, 0, -5 + +[level0] +linelist=a_demo v0 v1 + diff --git a/CONTENT/RP/GAUGE/RL1_GA.GIM b/CONTENT/RP/GAUGE/RL1_GA.GIM new file mode 100644 index 0000000..b230bc8 --- /dev/null +++ b/CONTENT/RP/GAUGE/RL1_GA.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=5, 0, 40 +v1=-5, 0, 40 +v2=-5, 0, -40 +v3=5, 0, -40 + +[level0] +linelist=a_concrete v0 v1 v2 v3 v0 + diff --git a/CONTENT/RP/GAUGE/RL2_GA.GIM b/CONTENT/RP/GAUGE/RL2_GA.GIM new file mode 100644 index 0000000..26a901f --- /dev/null +++ b/CONTENT/RP/GAUGE/RL2_GA.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=5, 0, 82.5 +v1=-5, 0, 82.5 +v2=-5, 0, -82.5 +v3=5, 0, -82.5 + +[level0] +linelist=a_concrete v0 v1 v2 v3 v0 + diff --git a/CONTENT/RP/GAUGE/RL3_GA.GIM b/CONTENT/RP/GAUGE/RL3_GA.GIM new file mode 100644 index 0000000..8eb6482 --- /dev/null +++ b/CONTENT/RP/GAUGE/RL3_GA.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=5, 0, 105 +v1=-5, 0, 105 +v2=-5, 0, -105 +v3=5, 0, -105 + +[level0] +linelist=a_concrete v0 v1 v2 v3 v0 + diff --git a/CONTENT/RP/GAUGE/RP1_GA.GIM b/CONTENT/RP/GAUGE/RP1_GA.GIM new file mode 100644 index 0000000..080bdb8 --- /dev/null +++ b/CONTENT/RP/GAUGE/RP1_GA.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=5, 0, 20 +v1=-5, 0, 20 +v2=-5, 0, -20 +v3=5, 0, -20 + +[level0] +linelist=a_concrete v0 v1 v2 v3 v0 + diff --git a/CONTENT/RP/GAUGE/RP2_GA.GIM b/CONTENT/RP/GAUGE/RP2_GA.GIM new file mode 100644 index 0000000..d93c906 --- /dev/null +++ b/CONTENT/RP/GAUGE/RP2_GA.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=5, 0, 54.45 +v1=-5, 0, 54.45 +v2=-5, 0, -54.45 +v3=5, 0, -54.45 + +[level0] +linelist=a_concrete v0 v1 v2 v3 v0 + diff --git a/CONTENT/RP/GAUGE/RP3_GA.GIM b/CONTENT/RP/GAUGE/RP3_GA.GIM new file mode 100644 index 0000000..fb04c8f --- /dev/null +++ b/CONTENT/RP/GAUGE/RP3_GA.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10000 + +[vertices] +v0=5, 0, 69.3 +v1=-5, 0, 69.3 +v2=-5, 0, -69.3 +v3=5, 0, -69.3 + +[level0] +linelist=a_concrete v0 v1 v2 v3 v0 + diff --git a/CONTENT/RP/GAUGE/RPSALTB.PCC b/CONTENT/RP/GAUGE/RPSALTB.PCC new file mode 100644 index 0000000..250f7d1 Binary files /dev/null and b/CONTENT/RP/GAUGE/RPSALTB.PCC differ diff --git a/CONTENT/RP/GAUGE/RPSCMPB.PCC b/CONTENT/RP/GAUGE/RPSCMPB.PCC new file mode 100644 index 0000000..59e8112 Binary files /dev/null and b/CONTENT/RP/GAUGE/RPSCMPB.PCC differ diff --git a/CONTENT/RP/GAUGE/RPSCMPE.PCC b/CONTENT/RP/GAUGE/RPSCMPE.PCC new file mode 100644 index 0000000..cbe0b42 Binary files /dev/null and b/CONTENT/RP/GAUGE/RPSCMPE.PCC differ diff --git a/CONTENT/RP/GAUGE/RPSCMPN.PCC b/CONTENT/RP/GAUGE/RPSCMPN.PCC new file mode 100644 index 0000000..fab7a5a Binary files /dev/null and b/CONTENT/RP/GAUGE/RPSCMPN.PCC differ diff --git a/CONTENT/RP/GAUGE/RPSCMPS.PCC b/CONTENT/RP/GAUGE/RPSCMPS.PCC new file mode 100644 index 0000000..cbfc4f2 Binary files /dev/null and b/CONTENT/RP/GAUGE/RPSCMPS.PCC differ diff --git a/CONTENT/RP/GAUGE/RPSCMPW.PCC b/CONTENT/RP/GAUGE/RPSCMPW.PCC new file mode 100644 index 0000000..1365555 Binary files /dev/null and b/CONTENT/RP/GAUGE/RPSCMPW.PCC differ diff --git a/CONTENT/RP/GAUGE/RPSREV.PCC b/CONTENT/RP/GAUGE/RPSREV.PCC new file mode 100644 index 0000000..09dbc41 Binary files /dev/null and b/CONTENT/RP/GAUGE/RPSREV.PCC differ diff --git a/CONTENT/RP/GAUGE/RPSSPDB.PCC b/CONTENT/RP/GAUGE/RPSSPDB.PCC new file mode 100644 index 0000000..4d705fb Binary files /dev/null and b/CONTENT/RP/GAUGE/RPSSPDB.PCC differ diff --git a/CONTENT/RP/GAUGE/SC500_GA.GIM b/CONTENT/RP/GAUGE/SC500_GA.GIM new file mode 100644 index 0000000..aeca95b --- /dev/null +++ b/CONTENT/RP/GAUGE/SC500_GA.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=100000 + +[vertices] +v0=225, 0, 104 +v1=225, 0, -105 +v2=-225, 0, -105 +v3=-225, 0, 104 + +[level0] +linelist=a_demo v0 v1 v2 v3 v0 + diff --git a/CONTENT/RP/GAUGE/SC50_GA.GIM b/CONTENT/RP/GAUGE/SC50_GA.GIM new file mode 100644 index 0000000..bbb1b39 --- /dev/null +++ b/CONTENT/RP/GAUGE/SC50_GA.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=100000 + +[vertices] +v0=40, 0, 40 +v1=40, 0, -40 +v2=-40, 0, -40 +v3=-40, 0, 40 + +[level0] +linelist=a_demo v0 v1 v2 v3 v0 + diff --git a/CONTENT/RP/GAUGE/SDBU.PCC b/CONTENT/RP/GAUGE/SDBU.PCC new file mode 100644 index 0000000..9961182 Binary files /dev/null and b/CONTENT/RP/GAUGE/SDBU.PCC differ diff --git a/CONTENT/RP/GAUGE/SDLU.PCC b/CONTENT/RP/GAUGE/SDLU.PCC new file mode 100644 index 0000000..5399a3d Binary files /dev/null and b/CONTENT/RP/GAUGE/SDLU.PCC differ diff --git a/CONTENT/RP/GAUGE/SDMA.PCC b/CONTENT/RP/GAUGE/SDMA.PCC new file mode 100644 index 0000000..841efbb Binary files /dev/null and b/CONTENT/RP/GAUGE/SDMA.PCC differ diff --git a/CONTENT/RP/GAUGE/SDPA.PCC b/CONTENT/RP/GAUGE/SDPA.PCC new file mode 100644 index 0000000..22a3ff8 Binary files /dev/null and b/CONTENT/RP/GAUGE/SDPA.PCC differ diff --git a/CONTENT/RP/GAUGE/SDPO.PCC b/CONTENT/RP/GAUGE/SDPO.PCC new file mode 100644 index 0000000..1d6ec9d Binary files /dev/null and b/CONTENT/RP/GAUGE/SDPO.PCC differ diff --git a/CONTENT/RP/GAUGE/SDPU.PCC b/CONTENT/RP/GAUGE/SDPU.PCC new file mode 100644 index 0000000..22a3ff8 Binary files /dev/null and b/CONTENT/RP/GAUGE/SDPU.PCC differ diff --git a/CONTENT/RP/GAUGE/SDSA.PCC b/CONTENT/RP/GAUGE/SDSA.PCC new file mode 100644 index 0000000..cd413b1 Binary files /dev/null and b/CONTENT/RP/GAUGE/SDSA.PCC differ diff --git a/CONTENT/RP/GAUGE/SDSU.PCC b/CONTENT/RP/GAUGE/SDSU.PCC new file mode 100644 index 0000000..130c237 Binary files /dev/null and b/CONTENT/RP/GAUGE/SDSU.PCC differ diff --git a/CONTENT/RP/GAUGE/SECPAL.PCC b/CONTENT/RP/GAUGE/SECPAL.PCC new file mode 100644 index 0000000..d718f04 Binary files /dev/null and b/CONTENT/RP/GAUGE/SECPAL.PCC differ diff --git a/CONTENT/RP/GAUGE/SLU.PCC b/CONTENT/RP/GAUGE/SLU.PCC new file mode 100644 index 0000000..6f87fc6 Binary files /dev/null and b/CONTENT/RP/GAUGE/SLU.PCC differ diff --git a/CONTENT/RP/GAUGE/SMLFONT.PCC b/CONTENT/RP/GAUGE/SMLFONT.PCC new file mode 100644 index 0000000..c0ebd7d Binary files /dev/null and b/CONTENT/RP/GAUGE/SMLFONT.PCC differ diff --git a/CONTENT/RP/GAUGE/SPO.PCC b/CONTENT/RP/GAUGE/SPO.PCC new file mode 100644 index 0000000..5540dc2 Binary files /dev/null and b/CONTENT/RP/GAUGE/SPO.PCC differ diff --git a/CONTENT/RP/GAUGE/SP_GA.GIM b/CONTENT/RP/GAUGE/SP_GA.GIM new file mode 100644 index 0000000..febbdad --- /dev/null +++ b/CONTENT/RP/GAUGE/SP_GA.GIM @@ -0,0 +1,58 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=0.1 +level1=1 +level2=10 +level3=100000 + +[vertices] +v0=-1.2, 0, -3.2 +v1=1.2, 0, -3.2 +v2=1.2, 0, -1.5 +v3=-1.2, 0, -1.5 +v4=0.7, 0, -2.7 +v5=1.2, 0, -2.1 +v6=1.2, 0, 0.5 +v7=0.7, 0, 3 +v8=-0.7, 0, 3 +v9=-1.2, 0, 0.5 +v10=-1.2, 0, -2.1 +v11=-0.7, 0, -2.7 +v12=-2.4, 0, -1 +v13=-2.4, 0, 0 +v14=2.4, 0, -1 +v15=2.4, 0, 0 +v16=-1.2, 0, 2.6 +v17=-0.8, 0, 2.4 +v18=-1.2, 0, 3 +v19=1.2, 0, 2.6 +v20=1.2, 0, 3 +v21=0.8, 0, 2.4 +v22=1.2, 0, -3.1 +v23=-1.2, 0, -3.1 +v24=-2.4, 0, -0.1 +v25=-2.8, 0, 3.5 +v26=0, 0, -4.6 +v27=2.6, 0, 3.5 + +[level0] +linelist=a_vtv v0 v1 v2 v3 v0 +linelist=a_vtv v4 v5 v6 v7 v8 v9 v10 v11 v4 +linelist=a_vtv v12 v3 v9 v13 v12 +linelist=a_vtv v14 v15 v6 v2 v14 +linelist=a_vtv v16 v17 v8 v18 v16 +linelist=a_vtv v19 v20 v7 v21 v19 + +[level1] +linelist=a_vtv v22 v6 v7 v8 v9 v23 v22 +linelist=a_vtv v12 v3 v9 v13 v12 +linelist=a_vtv v14 v15 v6 v2 v14 + +[level2] +linelist=a_vtv v22 v15 v7 v8 v24 v23 v22 + +[level3] +linelist=a_vtv v25 v26 v27 v25 + diff --git a/CONTENT/RP/GAUGE/SSA.PCC b/CONTENT/RP/GAUGE/SSA.PCC new file mode 100644 index 0000000..9a8a845 Binary files /dev/null and b/CONTENT/RP/GAUGE/SSA.PCC differ diff --git a/CONTENT/RP/GAUGE/SSU.PCC b/CONTENT/RP/GAUGE/SSU.PCC new file mode 100644 index 0000000..0312fb4 Binary files /dev/null and b/CONTENT/RP/GAUGE/SSU.PCC differ diff --git a/CONTENT/RP/GAUGE/STING.BAK b/CONTENT/RP/GAUGE/STING.BAK new file mode 100644 index 0000000..7b4a71e --- /dev/null +++ b/CONTENT/RP/GAUGE/STING.BAK @@ -0,0 +1,23 @@ +# built by hand: 6-6-95 cpb + +[object] +gatfile=gauge.gat + +[lods] +level0=100000 + +[vertices] +v0=-5, 0, 5 +v1=5, 0, 5 +v2=5, 0, -5 +v3=-5, 0, -5 +v4=-5, 0, 0 +v5=5, 0, 0 +v6=0, 0, -5 +v7=0, 0, 5 + +[level0] +linelist=a_demo v0 v2 +linelist=a_demo v1 v3 +linelist=a_rock v4 v5 +linelist=a_rock v6 v7 diff --git a/CONTENT/RP/GAUGE/STING.GIM b/CONTENT/RP/GAUGE/STING.GIM new file mode 100644 index 0000000..7ffb209 --- /dev/null +++ b/CONTENT/RP/GAUGE/STING.GIM @@ -0,0 +1,23 @@ +# built by hand: 6-6-95 cpb + +[object] +gatfile=gauge.gat + +[lods] +level0=100000 + +[vertices] +v0=-5, 0, 5 +v1=5, 0, 5 +v2=5, 0, -5 +v3=-5, 0, -5 +v4=-5, 0, 0 +v5=5, 0, 0 +v6=0, 0, -5 +v7=0, 0, 5 + +[level0] +linelist=a_demo v0 v2 +linelist=a_demo v1 v3 +linelist=a_sting v4 v5 +linelist=a_sting v6 v7 diff --git a/CONTENT/RP/GAUGE/TINYFONT.PCC b/CONTENT/RP/GAUGE/TINYFONT.PCC new file mode 100644 index 0000000..6c9e042 Binary files /dev/null and b/CONTENT/RP/GAUGE/TINYFONT.PCC differ diff --git a/CONTENT/RP/GAUGE/TRS_GA.GIM b/CONTENT/RP/GAUGE/TRS_GA.GIM new file mode 100644 index 0000000..ffcbbf0 --- /dev/null +++ b/CONTENT/RP/GAUGE/TRS_GA.GIM @@ -0,0 +1,17 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=10 + +[vertices] +v0=52, 0, 5.25 +v1=52, 0, -5.25 +v2=-52, 0, -5.25 +v3=-52, 0, 5.25 + +[level0] +linelist=a_concrete v0 v1 v2 v3 v0 + + + diff --git a/CONTENT/RP/GAUGE/VCS.CFG b/CONTENT/RP/GAUGE/VCS.CFG new file mode 100644 index 0000000..7d8d113 --- /dev/null +++ b/CONTENT/RP/GAUGE/VCS.CFG @@ -0,0 +1 @@ +vcsdir=r:\resource\rp\l4\gauge diff --git a/CONTENT/RP/GAUGE/VM1_GA.GIM b/CONTENT/RP/GAUGE/VM1_GA.GIM new file mode 100644 index 0000000..a419219 --- /dev/null +++ b/CONTENT/RP/GAUGE/VM1_GA.GIM @@ -0,0 +1,15 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=100000 + +[vertices] +v0=55, 0, 50 +v1=-55, 0, 50 +v2=-55, 0, -75 +v3=55, 0, -75 + +[level0] +linelist=a_concrete v0 v1 v2 v3 v0 + diff --git a/CONTENT/RP/GAUGE/WH1_GA.GIM b/CONTENT/RP/GAUGE/WH1_GA.GIM new file mode 100644 index 0000000..9faa4f1 --- /dev/null +++ b/CONTENT/RP/GAUGE/WH1_GA.GIM @@ -0,0 +1,37 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=100000 + +[vertices] +v0=400, 0, 400 +v1=-400, 0, 400 +v2=-400, 0, -400 +v3=400, 0, -400 +v4=150, 0, 150 +v5=-150, 0, 150 +v6=-150, 0, -150 +v7=150, 0, -150 +v8=20, 0, 150 +v9=5, 0, 110 +v10=20, 0, 110 +v11=60, 0, 150 +v12=60, 0, 110 +v13=75, 0, 110 +v14=25, 0, 0 +v15=17.6777, 0, 17.6777 +v16=-1.09278e-06, 0, 25 +v17=-17.6777, 0, 17.6777 +v18=-25, 0, 0 +v19=-17.6777, 0, -17.6777 +v20=0, 0, -25 +v21=17.6777, 0, -17.6777 + +[level0] +linelist=a_concrete v0 v1 v2 v3 v0 +linelist=a_concrete v4 v5 v6 v7 v4 +linelist=a_warning v8 v9 v10 v8 +linelist=a_warning v11 v12 v13 v11 +linelist=a_machine v14 v15 v16 v17 v18 v19 v20 v21 v14 + diff --git a/CONTENT/RP/GAUGE/WH2_GA.GIM b/CONTENT/RP/GAUGE/WH2_GA.GIM new file mode 100644 index 0000000..8e83336 --- /dev/null +++ b/CONTENT/RP/GAUGE/WH2_GA.GIM @@ -0,0 +1,36 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=100000 + +[vertices] +v0=325, 0, 325 +v1=-300, 0, 325 +v2=-300, 0, -325 +v3=325, 0, -325 +v4=75, 0, 75 +v5=-50, 0, 75 +v6=-50, 0, -75 +v7=75, 0, -75 +v8=-30, 0, 75 +v9=-30, 0, 35 +v10=-15, 0, 35 +v11=-65, 0, 35 +v12=-50, 0, 35 +v13=25, 0, 0 +v14=17.6777, 0, 17.6777 +v15=-1.09278e-06, 0, 25 +v16=-17.6777, 0, 17.6777 +v17=-25, 0, 0 +v18=-17.6777, 0, -17.6777 +v19=0, 0, -25 +v20=17.6777, 0, -17.6777 + +[level0] +linelist=a_concrete v0 v1 v2 v3 v0 +linelist=a_concrete v4 v5 v6 v7 v4 +linelist=a_warning v8 v9 v10 v8 +linelist=a_warning v5 v11 v12 v5 +linelist=a_machine v13 v14 v15 v16 v17 v18 v19 v20 v13 + diff --git a/CONTENT/RP/GAUGE/WH3_GA.GIM b/CONTENT/RP/GAUGE/WH3_GA.GIM new file mode 100644 index 0000000..c260ee2 --- /dev/null +++ b/CONTENT/RP/GAUGE/WH3_GA.GIM @@ -0,0 +1,37 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=100000 + +[vertices] +v0=400, 0, 400 +v1=-400, 0, 400 +v2=-400, 0, -400 +v3=400, 0, -400 +v4=150, 0, 150 +v5=-150, 0, 150 +v6=-150, 0, -150 +v7=150, 0, -150 +v8=20, 0, 375 +v9=5, 0, 335 +v10=20, 0, 335 +v11=60, 0, 375 +v12=60, 0, 335 +v13=75, 0, 335 +v14=25, 0, 0 +v15=17.6777, 0, 17.6777 +v16=-1.09278e-06, 0, 25 +v17=-17.6777, 0, 17.6777 +v18=-25, 0, 0 +v19=-17.6777, 0, -17.6777 +v20=0, 0, -25 +v21=17.6777, 0, -17.6777 + +[level0] +linelist=a_concrete v0 v1 v2 v3 v0 +linelist=a_concrete v4 v5 v6 v7 v4 +linelist=a_warning v8 v9 v10 v8 +linelist=a_warning v11 v12 v13 v11 +linelist=a_machine v14 v15 v16 v17 v18 v19 v20 v21 v14 + diff --git a/CONTENT/RP/GAUGE/WH4_GA.GIM b/CONTENT/RP/GAUGE/WH4_GA.GIM new file mode 100644 index 0000000..c260ee2 --- /dev/null +++ b/CONTENT/RP/GAUGE/WH4_GA.GIM @@ -0,0 +1,37 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=100000 + +[vertices] +v0=400, 0, 400 +v1=-400, 0, 400 +v2=-400, 0, -400 +v3=400, 0, -400 +v4=150, 0, 150 +v5=-150, 0, 150 +v6=-150, 0, -150 +v7=150, 0, -150 +v8=20, 0, 375 +v9=5, 0, 335 +v10=20, 0, 335 +v11=60, 0, 375 +v12=60, 0, 335 +v13=75, 0, 335 +v14=25, 0, 0 +v15=17.6777, 0, 17.6777 +v16=-1.09278e-06, 0, 25 +v17=-17.6777, 0, 17.6777 +v18=-25, 0, 0 +v19=-17.6777, 0, -17.6777 +v20=0, 0, -25 +v21=17.6777, 0, -17.6777 + +[level0] +linelist=a_concrete v0 v1 v2 v3 v0 +linelist=a_concrete v4 v5 v6 v7 v4 +linelist=a_warning v8 v9 v10 v8 +linelist=a_warning v11 v12 v13 v11 +linelist=a_machine v14 v15 v16 v17 v18 v19 v20 v21 v14 + diff --git a/CONTENT/RP/GAUGE/WH5_GA.GIM b/CONTENT/RP/GAUGE/WH5_GA.GIM new file mode 100644 index 0000000..6659309 --- /dev/null +++ b/CONTENT/RP/GAUGE/WH5_GA.GIM @@ -0,0 +1,37 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=100000 + +[vertices] +v0=400, 0, 400 +v1=-400, 0, 400 +v2=-400, 0, -400 +v3=400, 0, -400 +v4=240, 0, 150 +v5=-240, 0, 150 +v6=-240, 0, -240 +v7=240, 0, -240 +v8=20, 0, 375 +v9=5, 0, 335 +v10=20, 0, 335 +v11=60, 0, 375 +v12=60, 0, 335 +v13=75, 0, 335 +v14=25, 0, 0 +v15=17.6777, 0, 17.6777 +v16=-1.09278e-06, 0, 25 +v17=-17.6777, 0, 17.6777 +v18=-25, 0, 0 +v19=-17.6777, 0, -17.6777 +v20=0, 0, -25 +v21=17.6777, 0, -17.6777 + +[level0] +linelist=a_concrete v0 v1 v2 v3 v0 +linelist=a_concrete v4 v5 v6 v7 v4 +linelist=a_warning v8 v9 v10 v8 +linelist=a_warning v11 v12 v13 v11 +linelist=a_machine v14 v15 v16 v17 v18 v19 v20 v21 v14 + diff --git a/CONTENT/RP/GAUGE/WH6_GA.GIM b/CONTENT/RP/GAUGE/WH6_GA.GIM new file mode 100644 index 0000000..692cd9d --- /dev/null +++ b/CONTENT/RP/GAUGE/WH6_GA.GIM @@ -0,0 +1,87 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=100000 + +[vertices] +v0=400, 0, 400 +v1=-400, 0, 400 +v2=-400, 0, -400 +v3=400, 0, -400 +v4=240, 0, 150 +v5=-240, 0, 150 +v6=-240, 0, -240 +v7=240, 0, -240 +v8=25, 0, 250 +v9=10, 0, 100 +v10=25, 0, 100 +v11=55, 0, 250 +v12=55, 0, 100 +v13=70, 0, 100 +v14=25, 0, 0 +v15=17.6777, 0, 17.6777 +v16=-1.09278e-06, 0, 25 +v17=-17.6777, 0, 17.6777 +v18=-25, 0, 0 +v19=-17.6777, 0, -17.6777 +v20=0, 0, -25 +v21=17.6777, 0, -17.6777 +v22=190, 0, -85 +v23=240, 0, -85 +v24=240, 0, -55 +v25=190, 0, -55 +v26=135, 0, -240 +v27=165, 0, -240 +v28=165, 0, -190 +v29=135, 0, -190 +v30=55, 0, -240 +v31=85, 0, -240 +v32=85, 0, -190 +v33=55, 0, -190 +v34=-55, 0, -240 +v35=-85, 0, -240 +v36=-85, 0, -190 +v37=-55, 0, -190 +v38=-165, 0, -240 +v39=-135, 0, -240 +v40=-135, 0, -190 +v41=-165, 0, -190 +v42=-240, 0, -165 +v43=-190, 0, -165 +v44=-190, 0, -135 +v45=-240, 0, -135 +v46=-240, 0, -85 +v47=-190, 0, -85 +v48=-190, 0, -55 +v49=-240, 0, -55 +v50=-240, 0, 85 +v51=-190, 0, 85 +v52=-190, 0, 55 +v53=-240, 0, 55 +v54=240, 0, 85 +v55=190, 0, 85 +v56=190, 0, 55 +v57=240, 0, 55 +v58=240, 0, -165 +v59=190, 0, -165 +v60=190, 0, -135 +v61=240, 0, -135 + + +[level0] +linelist=a_concrete v0 v1 v2 v3 v0 +linelist=a_concrete v4 v5 v6 v7 v4 +linelist=a_warning v8 v9 v10 v8 +linelist=a_warning v11 v12 v13 v11 +linelist=a_machine v14 v15 v16 v17 v18 v19 v20 v21 v14 +linelist=a_concrete v22 v23 v24 v25 v22 +linelist=a_concrete v26 v27 v28 v29 v26 +linelist=a_concrete v30 v31 v32 v33 v30 +linelist=a_concrete v34 v35 v36 v37 v34 +linelist=a_concrete v38 v39 v40 v41 v38 +linelist=a_concrete v42 v43 v44 v45 v42 +linelist=a_concrete v46 v47 v48 v49 v46 +linelist=a_concrete v50 v51 v52 v53 v50 +linelist=a_concrete v54 v55 v56 v57 v54 +linelist=a_concrete v58 v59 v60 v61 v58 diff --git a/CONTENT/RP/GAUGE/WH9_GA.GIM b/CONTENT/RP/GAUGE/WH9_GA.GIM new file mode 100644 index 0000000..8ef99dd --- /dev/null +++ b/CONTENT/RP/GAUGE/WH9_GA.GIM @@ -0,0 +1,25 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=100000 + +[vertices] +v0=22.5, 0, 75 +v1=22.5, 0, -75 +v2=19.5633, 0, -93.5411 +v3=11.041, 0, -110.267 +v4=-2.23291, 0, -123.541 +v5=-18.959, 0, -132.063 +v6=-37.5, 0, -135 +v7=-56.041, 0, -132.063 +v8=-72.7671, 0, -123.541 +v9=-86.0409, 0, -110.267 +v10=-94.5633, 0, -93.5409 +v11=-97.4998, 0, -75 +v12=-94.5633, 0, -56.4591 +v13=-22.5, 0, 75 + +[level0] +linelist=a_concrete v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v0 + diff --git a/CONTENT/RP/GAUGE/WT1_GA.GIM b/CONTENT/RP/GAUGE/WT1_GA.GIM new file mode 100644 index 0000000..07cfefb --- /dev/null +++ b/CONTENT/RP/GAUGE/WT1_GA.GIM @@ -0,0 +1,37 @@ +[object] +gatfile=gauge.gat + +[lods] +level0=100000 + +[vertices] +v0=400, 0, 400 +v1=-400, 0, 400 +v2=-400, 0, -400 +v3=400, 0, -400 +v4=150, 0, 150 +v5=-150, 0, 150 +v6=-150, 0, -150 +v7=150, 0, -150 +v8=15, 0, 370 +v9=0, 0, 330 +v10=15, 0, 330 +v11=65, 0, 370 +v12=65, 0, 330 +v13=80, 0, 330 +v14=25, 0, 0 +v15=17.6777, 0, 17.6777 +v16=-1.09278e-06, 0, 25 +v17=-17.6777, 0, 17.6777 +v18=-25, 0, 0 +v19=-17.6777, 0, -17.6777 +v20=0, 0, -25 +v21=17.6777, 0, -17.6777 + +[level0] +linelist=a_concrete v0 v1 v2 v3 v0 +linelist=a_concrete v4 v5 v6 v7 v4 +linelist=a_warning v8 v9 v10 v8 +linelist=a_warning v11 v12 v13 v11 +linelist=a_machine v14 v15 v16 v17 v18 v19 v20 v21 v14 + diff --git a/CONTENT/RP/GETAUD.BAT b/CONTENT/RP/GETAUD.BAT new file mode 100644 index 0000000..466c031 --- /dev/null +++ b/CONTENT/RP/GETAUD.BAT @@ -0,0 +1,44 @@ +@echo off +rem +rem getaud.bat for RedPlanet +rem +set c0=s: +set c1=\resource\RP\l4 +set c2=audio.zip +set c3=audio\*.* +set v0= +if "%1"=="a" set v0=o +if "%1"=="A" set v0=o +if "%1"=="u" set v0=n +if "%1"=="U" set v0=n +if not "%v0%"=="" goto Check +:Usage +echo. +echo usage: getaud.bat option +echo. +echo 'a' - get all .\%c3% +echo 'u' - get newer .\%c3% +echo. +goto End +:Check +if exist %c0%%c1%\%c2% goto Process +echo. +echo Error - Zip file %c0%%c1%\%c3% not found. Check drive %c0%. +echo. +goto End +:Process +set v1=process +if "%v0%"=="o" set v1=writ +if "%v0%"=="n" set v1=updat +echo. +echo %v1%ing %c0%%c1%\%c3% +echo. +pkunzip.exe -%v0% -d %c0%%c1%\%c2% +echo done. +:End +set c0= +set c1= +set c2= +set c3= +set v0= +set v1= diff --git a/CONTENT/RP/GETVID.BAT b/CONTENT/RP/GETVID.BAT new file mode 100644 index 0000000..c509a3e --- /dev/null +++ b/CONTENT/RP/GETVID.BAT @@ -0,0 +1,44 @@ +@echo off +rem +rem getvid.bat +rem +set c0=s: +set c1=\resource\rp\l4 +set c2=video.zip +set c3=video\*.* +set v0= +if "%1"=="a" set v0=o +if "%1"=="A" set v0=o +if "%1"=="u" set v0=n +if "%1"=="U" set v0=n +if not "%v0%"=="" goto Check +:Usage +echo. +echo usage: getvid.bat option +echo. +echo 'a' - get all .\%c3% +echo 'u' - get newer .\%c3% +echo. +goto End +:Check +if exist %c0%%c1%\%c2% goto Process +echo. +echo Error - Zip file %c0%%c1%\%c3% not found. Check drive %c0%. +echo. +goto End +:Process +set v1=process +if "%v0%"=="o" set v1=writ +if "%v0%"=="n" set v1=updat +echo. +echo %v1%ing %c0%%c1%\%c3% +echo. +pkunzip.exe -%v0% -d %c0%%c1%\%c2% +echo done. +:End +set c0= +set c1= +set c2= +set c3= +set v0= +set v1= diff --git a/CONTENT/RP/GO.BAT b/CONTENT/RP/GO.BAT new file mode 100644 index 0000000..1e76d79 --- /dev/null +++ b/CONTENT/RP/GO.BAT @@ -0,0 +1 @@ +rpl4opt -egg test.egg > result2.txt diff --git a/CONTENT/RP/GRABOPT.BAT b/CONTENT/RP/GRABOPT.BAT new file mode 100644 index 0000000..25f9a23 --- /dev/null +++ b/CONTENT/RP/GRABOPT.BAT @@ -0,0 +1,2 @@ +xcopy \teslarp\rp\l4\opt\rpl4opt.exe . + diff --git a/CONTENT/RP/GRABRES.BAT b/CONTENT/RP/GRABRES.BAT new file mode 100644 index 0000000..03c9c7c --- /dev/null +++ b/CONTENT/RP/GRABRES.BAT @@ -0,0 +1,36 @@ +c:\pvcs\get -u grabres.bat +@echo off +echo ********************************************************************** +echo * Get resource source files from the source server mounted on S: and +echo * put them in the right local directories which must already exist. +echo * video and sound bank files are always copied because they aren't +echo * under source code control. PVCS parameters can be supplied on the +echo * command line, ie: grabres -u or grabres -y -u. +echo * BEWARE of the -y option as if you have any of the resource files +echo * checked out they will get clobbered. +echo * NOTE the video and audio copies are at the end of this file so you +echo * can skip them with a control-C if you don't want them updated. +echo * Greg Corson 6/7/95 Ken Olsen 6/9/95 +echo ********************************************************************** +set v0=a +if "%1"=="-u" set g0=u +if "%2"=="-u" set g0=u +if "%3"=="-u" set g0=u +if "%4"=="-u" set g0=u +echo on +cd audio +get %1 %2 %3 %4 *.??v +cd ..\maps +get %1 %2 %3 %4 *.??v +cd ..\models +get %1 %2 %3 %4 *.??v +cd ..\solids +get %1 %2 %3 %4 *.??v +cd ..\gauge +get %1 %2 %3 %4 *.??v +cd .. +get %1 %2 %3 %4 *.??v +call getvid.bat %g0% +call getaud.bat %g0% +@echo off +set g0= diff --git a/CONTENT/RP/JOYSTICK.INI b/CONTENT/RP/JOYSTICK.INI new file mode 100644 index 0000000..3f4754e --- /dev/null +++ b/CONTENT/RP/JOYSTICK.INI @@ -0,0 +1,26 @@ +[JoystickX] +high=310 +center=210 +low=110 +[JoystickY] +high=100 +center=0 +low=-100 +[operator] +time=Thu Sep 07 12:20:36 2000 + + + + + + + + + + + + + + + + diff --git a/CONTENT/RP/LAST.EGG b/CONTENT/RP/LAST.EGG new file mode 100644 index 0000000..f0341f1 --- /dev/null +++ b/CONTENT/RP/LAST.EGG @@ -0,0 +1,243 @@ +[mission] +adventure=Red Planet +map=burnt +scenario=race +time=day +weather=clear +temperature=0 +compression=0 +//length=600 + +[pilots] +pilot=200.0.0.255 + +[200.0.0.255] +hostType=0 +dropzone=one +name=Firestorm +bitmapindex=1 +loadzones=1 +vehicle=flea +; uncomment one color and one badge +//color=Aqua +//color=Black +//color=Blue +//color=Green +//color=Pink +//color=Purple +//color=Red +//color=White +color=Yellow +//badge=None +//badge=Celtic +//badge=Desert +badge=Flames +//badge=Giraffe +//badge=Hawaii +//badge=Korean +//badge=Lightning +//badge=Razzle Dazzle +//badge=Rising Sun +//badge=Tiger Stripe + +[ordinals] +bitmap=Ordinal::BitMap::1 +bitmap=Ordinal::BitMap::2 +bitmap=Ordinal::BitMap::3 +bitmap=Ordinal::BitMap::4 +[Ordinal::BitMap::1] +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=000038000003C000001FF00000000F00 +bitmap=0000F8000003C000003FF80000000F00 +bitmap=0001F8000003C00000707C0000000F00 +bitmap=0001F8000003C00000603C0000000F00 +bitmap=00007801FC0FF00000003C3DF807FF00 +bitmap=00007803FE0FF00000003C3FFC0FFF00 +bitmap=00007803C703C00000003C3E3C1F0F00 +bitmap=000078078303C0000000783C1E1E0F00 +bitmap=000078078003C0000000783C1E1E0F00 +bitmap=00007807C003C0000000F03C1E1E0F00 +bitmap=00007807F003C0000001E03C1E1E0F00 +bitmap=00007803FC03C0000003C03C1E1E0F00 +bitmap=00007801FE03C0000007803C1E1E0F00 +bitmap=000078007F03C000000F003C1E1E0F00 +bitmap=000078001F03C000001E003C1E1E0F00 +bitmap=000078000F03C000003C003C1E1E0F00 +bitmap=000078060F03C0000078003C1E1E0F00 +bitmap=000078071E03E0000078003C1E1F1F00 +bitmap=00007803FE01F000007FFC3C1E0FFF00 +bitmap=00007801FC00F000007FFC3C1E07EF00 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +x=128 +y=32 +width=8 +[Ordinal::BitMap::2] +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=001FFF0000003C0000003C03C0780000 +bitmap=001FFF0000003C0000007C03C0780000 +bitmap=00000E0000003C000000FC03C0780000 +bitmap=00003C0000003C000001BC03C0780000 +bitmap=0000700F3E1FFC000003BC0FF07BF000 +bitmap=0001E00F7E3FFC0000073C0FF07FF800 +bitmap=0003800FFE7C3C0000063C03C07C7800 +bitmap=0007F80FFE783C00000C3C03C0783C00 +bitmap=0007FE0F80783C0000183C03C0783C00 +bitmap=00001E0F00783C0000383C03C0783C00 +bitmap=00000F0F00783C0000703C03C0783C00 +bitmap=00000F0F00783C00007FFF03C0783C00 +bitmap=00000F0F00783C00007FFF03C0783C00 +bitmap=00000F0F00783C0000003C03C0783C00 +bitmap=00000F0F00783C0000003C03C0783C00 +bitmap=00000F0F00783C0000003C03C0783C00 +bitmap=00180F0F00783C0000003C03C0783C00 +bitmap=001C1F0F007C7C0000003C03E0783C00 +bitmap=000FFE0F003FFC0000003C01F0783C00 +bitmap=0007FC0F001FBC0000003C00F0783C00 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +x=128 +y=32 +width=8 +[Ordinal::BitMap::3] +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=001FFF03C07800000000FC03C0780000 +bitmap=001FFF03C07800000003FC03C0780000 +bitmap=001E0003C07800000007C003C0780000 +bitmap=001E0003C0780000000F0003C0780000 +bitmap=001E000FF07BF000000F000FF07BF000 +bitmap=001E000FF07FF800001E000FF07FF800 +bitmap=001E0003C07C7800001E0003C07C7800 +bitmap=001FFC03C0783C00001EFC03C0783C00 +bitmap=001FFE03C0783C00001FFE03C0783C00 +bitmap=00001F03C0783C00001F1F03C0783C00 +bitmap=00000F03C0783C00001E0F03C0783C00 +bitmap=00000F03C0783C00001E0F03C0783C00 +bitmap=00000F03C0783C00001E0F03C0783C00 +bitmap=00000F03C0783C00001E0F03C0783C00 +bitmap=00000F03C0783C00001E0F03C0783C00 +bitmap=00000F03C0783C00001E0F03C0783C00 +bitmap=00180F03C0783C00001E0F03C0783C00 +bitmap=001C1F03E0783C00001F1F03E0783C00 +bitmap=000FFE01F0783C00000FFE01F0783C00 +bitmap=0007FC00F0783C000007FC00F0783C00 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +x=128 +y=32 +width=8 +[Ordinal::BitMap::4] +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=001FFF03C07800000007FC03C0780000 +bitmap=001FFF03C0780000000FFE03C0780000 +bitmap=00000F03C0780000001F1F03C0780000 +bitmap=00000F03C0780000001E0F03C0780000 +bitmap=00000F0FF07BF000001E0F0FF07BF000 +bitmap=00001F0FF07FF800001E0F0FF07FF800 +bitmap=00001E03C07C7800001E0F03C07C7800 +bitmap=00003E03C0783C00001E0F03C0783C00 +bitmap=00003C03C0783C00000F1E03C0783C00 +bitmap=00003C03C0783C000007FC03C0783C00 +bitmap=00007803C0783C000007FC03C0783C00 +bitmap=00007803C0783C00000F1E03C0783C00 +bitmap=00007803C0783C00001E0F03C0783C00 +bitmap=0000F003C0783C00001E0F03C0783C00 +bitmap=0000F003C0783C00001E0F03C0783C00 +bitmap=0000F003C0783C00001E0F03C0783C00 +bitmap=0000F003C0783C00001E0F03C0783C00 +bitmap=0000F003E0783C00000F1E03E0783C00 +bitmap=0000F001F0783C00000FFE01F0783C00 +bitmap=0000F000F0783C000007FC00F0783C00 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +x=128 +y=32 +width=8 +[largebitmap] +bitmap=BitMap::Large::Slag +[BitMap::Large::Slag] +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=00000000000000000000000000000000 +bitmap=0000000001FC0F000000000000000000 +bitmap=0000000003FE0F000000000000000000 +bitmap=0000000007C70F000000000000000000 +bitmap=0000000007830F000000000000000000 +bitmap=0000000007800F01FF00FFE000000000 +bitmap=0000000007800F03FF81FFE000000000 +bitmap=0000000007C00F0707C3E1E000000000 +bitmap=0000000007E00F0603C3C1E000000000 +bitmap=0000000003F00F0003C3C1E000000000 +bitmap=0000000001F80F0003C3C1E000000000 +bitmap=0000000000FC0F0003C3C1E000000000 +bitmap=00000000007E0F01FFC3C1E000000000 +bitmap=00000000003F0F03FFC3C1E000000000 +bitmap=00000000001F0F07C3C3C1E000000000 +bitmap=00000000000F0F0783C3C1E000000000 +bitmap=00000000000F0F0783C3C1E000000000 +bitmap=00000000060F0F0783C3C1E000000000 +bitmap=00000000071F0F03C7C3E3E000000000 +bitmap=0000000003FE0F03FFC1FFE000000000 +bitmap=0000000001FC0F00FBC0FDE000000000 +bitmap=0000000000000000000001E000000000 +bitmap=0000000000000000000001E000000000 +bitmap=0000000000000000000301E000000000 +bitmap=0000000000000000000383E000000000 +bitmap=00000000000000000001FFC000000000 +bitmap=00000000000000000000FF8000000000 +x=128 +y=32 +width=8 +[smallbitmap] +bitmap=BitMap::Small::Slag +[BitMap::Small::Slag] +bitmap=00000000000000000000000000000000 +bitmap=000000000000000000001E3000000000 +bitmap=000031300000000000003031F0FC0000 +bitmap=00003832198C000000001C30198C0000 +bitmap=00000E31F98C000000000733198C0000 +bitmap=00000333198C000000002333198C0000 +bitmap=00001E31F8FC000000000000000C0000 +bitmap=00000000010C00000000000000F80000 +x=64 +y=16 +width=4 diff --git a/CONTENT/RP/MAKEEGG.BAT b/CONTENT/RP/MAKEEGG.BAT new file mode 100644 index 0000000..d4be394 --- /dev/null +++ b/CONTENT/RP/MAKEEGG.BAT @@ -0,0 +1,72 @@ +@echo off +rem +rem makeegg.bat +rem +if "%2"=="" goto usage +if "%3"=="" goto droptable +set a3=%3 +goto begin +:droptable +set a3=one +if "%1"=="dr" set a3=dname +if "%1"=="DR" set a3=dname +rem if "%1"=="choice2" set a3=dname +rem if "%1"=="CHOICE2" set a3=dname +if "%1"=="shoot" set a3=dname +if "%1"=="SHOOT" set a3=dname +:begin +set eggfile=temp.egg +echo [mission]>%eggfile% +echo adventure=Red Planet>>%eggfile% +echo map=%1>>%eggfile% +echo scenario=race>>%eggfile% +echo time=night>>%eggfile% +echo weather=clear>>%eggfile% +echo temperature=0>>%eggfile% +echo compression=0>>%eggfile% +echo //length=600>>%eggfile% +echo.>>%eggfile% +echo [pilots]>>%eggfile% +echo pilot=200.0.0.255>>%eggfile% +echo.>>%eggfile% +echo [200.0.0.255]>>%eggfile% +echo hostType=0>>%eggfile% +echo dropzone=%a3%>>%eggfile% +echo name=Slag>>%eggfile% +echo bitmapindex=1>>%eggfile% +echo loadzones=1>>%eggfile% +echo vehicle=%2>>%eggfile% +echo ; uncomment one color and one badge>>%eggfile% +echo //color=Aqua>>%eggfile% +echo //color=Black>>%eggfile% +echo //color=Blue>>%eggfile% +echo //color=Green>>%eggfile% +echo color=Pink>>%eggfile% +echo //color=Purple>>%eggfile% +echo //color=Red>>%eggfile% +echo //color=White>>%eggfile% +echo //color=Yellow>>%eggfile% +echo //badge=None>>%eggfile% +echo //badge=Celtic>>%eggfile% +echo //badge=Desert>>%eggfile% +echo //badge=Flames>>%eggfile% +echo //badge=Giraffe>>%eggfile% +echo badge=Hawaii>>%eggfile% +echo //badge=Korean>>%eggfile% +echo //badge=Lightning>>%eggfile% +echo //badge=Razzle Dazzle>>%eggfile% +echo //badge=Rising Sun>>%eggfile% +echo //badge=Tiger Stripe>>%eggfile% +echo.>>%eggfile% +if exist bitmaps.egg type bitmaps.egg>>%eggfile% +echo. +echo '%eggfile%' made for course '%1', vehicle '%2', and dropzone '%a3%'. +echo. +set eggfile= +set a3= +goto end +:usage +echo. +echo usage: makeegg course vehicle [dropzone] (no extensions) +echo. +:end diff --git a/CONTENT/RP/MAPS/ALL.ZNE b/CONTENT/RP/MAPS/ALL.ZNE new file mode 100644 index 0000000..e4a7e0b --- /dev/null +++ b/CONTENT/RP/MAPS/ALL.ZNE @@ -0,0 +1,28 @@ +#---------------------------------------------------------------------------- + +[EnvironmentZone] +# +# ExtentBox +# minX, minY, minZ, maxX, maxY, maxZ, +extent_box=-1000000,-1000000,-1000000,1000000,1000000,1000000 +# +# Environment +# gravity, air_density, audio_reverb, audio_reflectivity, audio_absorption, +# wind_velocity_x, wind_velocity_y, wind_velocity_z, ambient_temp +environment=6.5,1.0,0.0,0.0,0.0,0.0,0.0,0.0,300.0 + +#---------------------------------------------------------------------------- + +[InterestZone] +# +# ExtentBox +# minX, minY, minZ, maxX, maxY, maxZ, +extent_box=-1000000,-1000000,-1000000,1000000,1000000,1000000 +# +# InterestZoneID +# id +interest_zone_ID=1 +# +# MapResourceName +# name +map_resource_name=unused diff --git a/CONTENT/RP/MAPS/ARENA.CAM b/CONTENT/RP/MAPS/ARENA.CAM new file mode 100644 index 0000000..55c861c --- /dev/null +++ b/CONTENT/RP/MAPS/ARENA.CAM @@ -0,0 +1,300 @@ +[Camera0] +cameraID=0 +cameraType=DefaultCameraType +tranx=-20.3556 +trany=17.83787 +tranz=290.412 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera1] +cameraID=1 +cameraType=DefaultCameraType +tranx=-15.5144 +trany=16.39069 +tranz=729.567 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera2] +cameraID=2 +cameraType=DefaultCameraType +tranx=-25.7902 +trany=36.7837 +tranz=995.202 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera3] +cameraID=3 +cameraType=DefaultCameraType +tranx=18.3568 +trany=33.615 +tranz=1187.66 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera4] +cameraID=4 +cameraType=DefaultCameraType +tranx=-3.05212 +trany=43.0741 +tranz=1534.77 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera5] +cameraID=5 +cameraType=DefaultCameraType +tranx=133.051 +trany=74.8383 +tranz=1912.86 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera6] +cameraID=6 +cameraType=DefaultCameraType +tranx=-14.4762 +trany=36.3051 +tranz=-1072.58 +quatx=-4.20752e-06 +quaty=-0.929383 +quatz=1.67107e-06 +quatw=0.369118 +minYawClamp=-0.494056 +maxYawClamp=0.954443 +minPitchClamp=-0.913818 +maxPitchClamp=0.436825 + +[Camera7] +cameraID=7 +cameraType=DefaultCameraType +tranx=-16.1775 +trany=16.30525 +tranz=-292.705 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera8] +cameraID=8 +cameraType=DefaultCameraType +tranx=-25.1474 +trany=33.9382 +tranz=-689.108 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera9] +cameraID=9 +cameraType=DefaultCameraType +tranx=-133.051 +trany=74.8383 +tranz=1980.86 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera10] +cameraID=10 +cameraType=DefaultCameraType +tranx=-7.40412 +trany=6.52669 +tranz=-1404.6 +quatx=-3.05311e-08 +quaty=0.00430008 +quatz=-7.10005e-06 +quatw=0.999991 +minYawClamp=-3.10433 +maxYawClamp=3.01313 +minPitchClamp=-1.52111 +maxPitchClamp=1.55565 + +[Camera11] +cameraID=11 +cameraType=DefaultCameraType +tranx=-9.62165 +trany=28.9959 +tranz=-1740.7 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera12] +cameraID=12 +cameraType=DefaultCameraType +tranx=-18.7203 +trany=6.9871 +tranz=-2140.21 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera13] +cameraID=13 +cameraType=DefaultCameraType +tranx=-15.0131 +trany=38.599 +tranz=-2766.91 +quatx=2.47511e-09 +quaty=-0.966014 +quatz=-6.62296e-10 +quatw=0.258488 +minYawClamp=0 +maxYawClamp=0 +minPitchClamp=-0.0286774 +maxPitchClamp=-0.0286774 + +[Camera15] +cameraID=15 +cameraType=DefaultCameraType +tranx=-4.39795 +trany=38.5178 +tranz=-3339.77 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera16] +cameraID=16 +cameraType=DefaultCameraType +tranx=0.798032 +trany=74.4984 +tranz=-3730.9 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + + +[Camera17] +cameraID=17 +cameraType=DefaultCameraType +tranx=-181.958 +trany=74.3845 +tranz=-3655.41 +quatx=-1.67607e-06 +quaty=-0.9347 +quatz=6.37357e-07 +quatw=0.355437 +minYawClamp=-3.10165 +maxYawClamp=3.11354 +minPitchClamp=-1.51855 +maxPitchClamp=1.55488 + +[Camera18] +cameraID=18 +cameraType=DefaultCameraType +tranx=-22 +trany=38 +tranz=-2750 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera19] +cameraID=19 +cameraType=DefaultCameraType +tranx=-25 +trany=38 +tranz=-3100 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[WinnerCamera] +cameraID=20 +cameraType=DefaultCameraType +tranx=1200 +trany=15 +tranz=-38 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 diff --git a/CONTENT/RP/MAPS/BLADE.CAM b/CONTENT/RP/MAPS/BLADE.CAM new file mode 100644 index 0000000..cb65b78 --- /dev/null +++ b/CONTENT/RP/MAPS/BLADE.CAM @@ -0,0 +1,315 @@ +[Camera9] +cameraID=9 +cameraType=DefaultCameraType +tranx=-13.3524 +trany=17.3021 +tranz=2250.27 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera8] +cameraID=8 +cameraType=DefaultCameraType +tranx=0.325519 +trany=43.0041 +tranz=1470.91 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera7] +cameraID=7 +cameraType=DefaultCameraType +tranx=-15.3596 +trany=18.6001 +tranz=1254.92 +quatx=5.9322e-11 +quaty=0.00672021 +quatz=8.82721e-09 +quatw=0.999977 +minYawClamp=0 +maxYawClamp=0 +minPitchClamp=-0.0194519 +maxPitchClamp=-0.0194519 + +[Camera6] +cameraID=6 +cameraType=DefaultCameraType +tranx=-16.2781 +trany=16.8744 +tranz=474.876 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera5] +cameraID=5 +cameraType=DefaultCameraType +tranx=-25.3261 +trany=35.4597 +tranz=200.084 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera4] +cameraID=4 +cameraType=DefaultCameraType +tranx=-25.3261 +trany=18.7266 +tranz=200.084 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera15] +cameraID=15 +cameraType=DefaultCameraType +tranx=29.9416 +trany=29.5353 +tranz=-4213.11 +quatx=-6.7357e-08 +quaty=-0.168988 +quatz=3.92857e-07 +quatw=0.985618 +minYawClamp=-1.53932 +maxYawClamp=1.80964 +minPitchClamp=-0.389046 +maxPitchClamp=0.431481 + +[Camera14] +cameraID=14 +cameraType=DefaultCameraType +tranx=13.9769 +trany=43.109 +tranz=-4100.64 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera13] +cameraID=13 +cameraType=DefaultCameraType +tranx=7.77184 +trany=44.9657 +tranz=-3643.03 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera12] +cameraID=12 +cameraType=DefaultCameraType +tranx=31.4001 +trany=29.652 +tranz=-3312.58 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera11] +cameraID=11 +cameraType=DefaultCameraType +tranx=1.28567 +trany=12.5289 +tranz=-2600.67 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera10] +cameraID=10 +cameraType=DefaultCameraType +tranx=24.5687 +trany=29.3758 +tranz=-1724.82 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera2] +cameraID=2 +cameraType=DefaultCameraType +tranx=27.4266 +trany=29.4793 +tranz=-1065.26 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera1] +cameraID=1 +cameraType=DefaultCameraType +tranx=23.3973 +trany=23.5811 +tranz=-701.019 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera17] +cameraID=17 +cameraType=DefaultCameraType +tranx=18.9392 +trany=43.3104 +tranz=-439.646 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera0] +cameraID=0 +cameraType=DefaultCameraType +tranx=18.9392 +trany=16.5595 +tranz=-439.646 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera16] +cameraID=16 +cameraType=DefaultCameraType +tranx=-16.8441 +trany=43.6516 +tranz=-105.828 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera3] +cameraID=3 +cameraType=DefaultCameraType +tranx=-16.8441 +trany=14.233 +tranz=-105.828 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[WinnerCamera] +cameraID=18 +cameraType=DefaultCameraType +tranx=1200 +trany=15 +tranz=-38 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[camera19] +cameraID=19 +cameraType=DefaultCameraType +tranx=110.83 +trany=-38.3085 +tranz=-4673.1 +quatx=3.39231e-05 +quaty=0.992537 +quatz=4.16782e-06 +quatw=0.121944 +minYawClamp=-1.46454 +maxYawClamp=1.44395 +minPitchClamp=-0.291667 +maxPitchClamp=1.2507 + +[camera20] +cameraID=20 +cameraType=DefaultCameraType +tranx=-19.8883 +trany=18.9946 +tranz=900.902 +quatx=0 +quaty=0.999332 +quatz=0 +quatw=0.0365331 +minYawClamp=-3.10972 +maxYawClamp=3.14028 +minPitchClamp=-0.325558 +maxPitchClamp=0.122366 + diff --git a/CONTENT/RP/MAPS/BLANK.CAM b/CONTENT/RP/MAPS/BLANK.CAM new file mode 100644 index 0000000..7f6961c --- /dev/null +++ b/CONTENT/RP/MAPS/BLANK.CAM @@ -0,0 +1,240 @@ +[Camera0] +cameraID=0 +cameraType=DefaultCameraType +tranx=-19.0306 +trany=10.0355 +tranz=1252.26 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera1] +cameraID=1 +cameraType=DefaultCameraType +tranx=-16.1416 +trany=7.31996 +tranz=190.897 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera2] +cameraID=2 +cameraType=DefaultCameraType +tranx=-15.6209 +trany=15.9248 +tranz=2387.17 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera3] +cameraID=3 +cameraType=DefaultCameraType +tranx=-14.8076 +trany=14.6758 +tranz=2818.68 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera4] +cameraID=4 +cameraType=DefaultCameraType +tranx=10.7871 +trany=5.85403 +tranz=3171.35 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera5] +cameraID=5 +cameraType=DefaultCameraType +tranx=-13.5508 +trany=29.9017 +tranz=3597.47 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera6] +cameraID=6 +cameraType=DefaultCameraType +tranx=75.4862 +trany=50.8615 +tranz=3999.25 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera7] +cameraID=7 +cameraType=DefaultCameraType +tranx=-25.3088 +trany=27.563 +tranz=559.575 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera8] +cameraID=8 +cameraType=DefaultCameraType +tranx=-20.386 +trany=9.5556 +tranz=-99.3075 +quatx=-7.62717e-05 +quaty=-0.613536 +quatz=9.81674e-05 +quatw=0.789667 +minYawClamp=-1.86494 +maxYawClamp=1.57383 +minPitchClamp=-0.223591 +maxPitchClamp=0.0816295 + +[Camera9] +cameraID=9 +cameraType=DefaultCameraType +tranx=-20.4213 +trany=40.5437 +tranz=-102.732 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera10] +cameraID=10 +cameraType=DefaultCameraType +tranx=-19.4784 +trany=24.907 +tranz=-376.775 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera11] +cameraID=11 +cameraType=DefaultCameraType +tranx=-0.27937 +trany=44.2401 +tranz=-621.978 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera12] +cameraID=12 +cameraType=DefaultCameraType +tranx=6.05433 +trany=46.8135 +tranz=-1096.54 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera13] +cameraID=13 +cameraType=DefaultCameraType +tranx=119.953 +trany=55.4483 +tranz=-1448.84 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[WinnerCamera] +cameraID=14 +cameraType=DefaultCameraType +tranx=1200 +trany=15 +tranz=-38 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[camera15] +cameraID=15 +cameraType=DefaultCameraType +tranx=-20.6113 +trany=11.2708 +tranz=2043.04 +quatx=-1.18344e-14 +quaty=-0.000568823 +quatz=2.08051e-11 +quatw=1 +minYawClamp=-2.97821 +maxYawClamp=0.017642 +minPitchClamp=-0.450782 +maxPitchClamp=0.00588747 + diff --git a/CONTENT/RP/MAPS/BLANK.SCN b/CONTENT/RP/MAPS/BLANK.SCN new file mode 100644 index 0000000..0af5465 --- /dev/null +++ b/CONTENT/RP/MAPS/BLANK.SCN @@ -0,0 +1,124 @@ +END + +STATIC snAwork 1.0 12.5078 3.84375 2567.26 0 0 0 +STATIC snAcrane 1.0 -25 20.5312 2749.43 0 0 0 +STATIC snAcrane 1.0 26.9219 25.1562 2848.15 0 180 0 +STATIC snAmfac 1.0 0 28.2266 2657 0 0 0 +STATIC snAmfac 1.0 0 28.2266 2702.91 0 180 0 +STATIC snAale 1.0 -12.25 27.5625 644.523 0 0 0 +STATIC snAale 1.0 -12.125 27.5625 654.141 0 180 0 +STATIC snAevac 1.0 -29.2109 54.3203 4069.38 0 0 0 +STATIC snAevac 1.0 30.6328 54.3203 -1538.92 0 180 0 +STATIC wh6 1.0 40.0078 45 3880 0 180 0 +STATIC snAnorc 1.0 16.0234 18.1797 1249.76 0 0 0 +STATIC snAheadm 1.0 -14.1484 18.1797 2350.36 0 180 0 +STATIC snAtspd 1.0 -8.14844 18.1797 2350.36 0 180 0 +STATIC snAwelc 1.0 10.8203 16.4844 154.672 0 180 0 +STATIC snAtspd 1.0 10.0234 18.1797 1249.76 0 0 0 +STATIC cn2 1.0 0 5 1300 0 180 0 +STATIC rp0 1.0 0 2.5 1250 0 180 0 +STATIC cn5 1.0 0 0 1200 0 0 0 +STATIC snAloxm 1.0 -8.74219 38.3047 1144.29 0 0 0 +STATIC snAspds 1.0 4.72656 6.17969 748.062 0 0 0 +STATIC snArads 1.0 4.98438 6.26562 548.195 0 0 0 +STATIC ft1 1.0 10 10 825 0 0 0 +STATIC ft1 1.0 10 10 880 0 0 0 +STATIC oa1 1.0 30 0 850 0 0 0 +STATIC oa1 1.0 30 0 850 0 180 0 +STATIC wh6 1.0 -40 45 -1350 0 0 0 +STATIC cn1 1.0 0 0 400 0 0 0 +STATIC cn4 1.0 0 5 1700 0 0 0 +STATIC cn4 1.0 0 5 1600 0 0 0 +STATIC cn4 1.0 0 5 2200 0 0 0 +STATIC cn4 1.0 0 5 2100 0 0 0 +STATIC cn4 1.0 0 5 2000 0 0 0 +STATIC cn4 1.0 0 5 1800 0 0 0 +STATIC cn4 1.0 0 5 1900 0 0 0 +STATIC cn5 1.0 0 0 2500 0 180 0 +STATIC cn3 1.0 0 0 2500 0 180 0 +STATIC cn5 1.0 0 0 2400 0 180 0 +STATIC cn2 1.0 0 5 2300 0 0 0 +STATIC rp0 1.0 0 2.5 2350 0 0 0 +STATIC cn5 1.0 0 1 2999 0 180 0 +STATIC cre 1.0 0 0 3055 0 180 0 +STATIC cr4 1.0 0 0 3130 0 180 0 +STATIC cr4 1.0 0 0 3230 0 180 0 +STATIC cr4 1.0 0 0 3530 0 180 0 +STATIC cn3 1.0 0 0 2600 0 0 0 +STATIC odc 1.0 19.8984 34.0469 2602.59 0 0 0 +STATIC odc 1.0 19.8984 34.0469 2582.59 0 0 0 +STATIC odc 1.0 19.8984 34.0469 2642.59 0 0 0 +STATIC odc 1.0 -20 34.0469 2613.44 0 180 0 +STATIC cn5 1.0 0 0 2600 0 0 0 +STATIC cn5 1.0 0 0 2700 0 0 0 +STATIC rp0 1.0 0 2.85156 2750 0 180 0 +STATIC odc 1.0 -20 34.0469 2570.62 0 180 0 +STATIC cn3 1.0 0 0 2900 0 180 0 +STATIC cr1 1.0 0 0 -900 0 0 0 +STATIC cr4 1.0 0 0 -700 0 0 0 +STATIC cr2 1.0 0 0 -600 0 0 0 +STATIC cr4 1.0 0 0 -800 0 0 0 +STATIC cr4 1.0 0 0 -1000 0 0 0 +STATIC cn1 1.0 0 0 300 0 0 0 +STATIC cn1 1.0 0 0 200 0 0 0 +STATIC oa3 1.0 0 3 -100 0 0 0 +STATIC ct1 1.0 -10 0 50 0 0 0 +STATIC cn1 1.0 0 0 100 0 0 0 +STATIC cn5 1.0 0 0 0 0 0 0 +STATIC pz1 1.0 -10 18 101 0 0 0 +STATIC trs 1.0 0 -1.5 150 0 0 0 +STATIC cn3 1.0 0 0 0 0 0 0 +STATIC cn3 1.0 0 0 100 0 0 0 +STATIC rp0 1.0 0 3 -50 0 0 0 +STATIC cre 1.0 0 0 -425 0 0 0 +STATIC cr4 1.0 0 0 -500 0 0 0 +STATIC ct1 1.0 10.7812 0 750.188 0 180 0 +STATIC pz1 1.0 10.8359 31 699.945 0 0 0 +STATIC ct1 1.0 10.7812 0 550.188 0 180 0 +STATIC trs 1.0 0 11.5 649.5 0 0 0 +STATIC pz1 1.0 10.8281 27.8125 601.234 0 0 0 +STATIC cn3 1.0 0 0 500 0 0 0 +STATIC cn1 1.0 0 0 500 0 0 0 +STATIC cn3 1.0 0 0 400 0 0 0 +STATIC cn3 1.0 0 0 600 0 0 0 +STATIC cn1 1.0 0 0 700 0 0 0 +STATIC cn1 1.0 0 0 600 0 0 0 +STATIC cld 1.0 -455 385 162.5 0 180 0 +STATIC cn5 1.0 0 0 -200 0 0 0 +STATIC trs 1.0 0 21.5 1149.5 0 0 0 +STATIC pp1 1.0 0 5 1445 0 0 0 +STATIC drw 1.0 0 0 -300 0 0 0 +STATIC cn5 1.0 0 0 -400 0 0 0 +STATIC cn3 1.0 0 0 1000 0 0 0 +STATIC cn3 1.0 0 0 800 0 0 0 +STATIC cn3 1.0 0 0 1000 0 0 0 +STATIC cn1 1.0 0 0 900 0 0 0 +STATIC cn1 1.0 0 0 1000 0 0 0 +STATIC cn3 1.0 0 0 -300 0 0 0 +STATIC cn3 1.0 0 0 -400 0 0 0 +STATIC cn3 1.0 0 0 900 0 0 0 +STATIC cn1 1.0 0 0 800 0 0 0 +STATIC cn3 1.0 0 0 700 0 0 0 +STATIC cn4 1.0 0 5 1500 0 0 0 +STATIC cn4 1.0 0 5 1400 0 0 0 +STATIC cn5 1.0 0 0 1100 0 0 0 +STATIC cn3 1.0 0 0 1100 0 0 0 +STATIC cn5 1.0 0 0 -300 0 0 0 +STATIC cn3 1.0 0 0 300 0 0 0 +STATIC rp0 1.0 0 3 -150 0 180 0 +STATIC sc500 1.0 30 45.25 -1460 0 0 0 +STATIC sc500 1.0 -30 45.25 3989.98 0 0 0 +STATIC snAlimit 1.0 101.609 53.7266 4069.18 0 0 0 +STATIC snAdos 1.0 40 88 3901 0 180 0 +STATIC cr4 1.0 0 0 3430 0 180 0 +STATIC snAdos 1.0 0.671875 79.875 3630 0 180 0 +STATIC cr1 1.0 0 0 3330 0 180 0 +STATIC snAlimit 1.0 14.7891 13 3291.54 0 90 0 +STATIC snAhaz 1.0 -0.757812 51.0156 3029.74 0 0 0 +STATIC snAhaz 1.0 -29.7422 26.2188 2944.33 0 0 0 +STATIC drw 1.0 0 1 2954 0 0 0 +STATIC cn5 1.0 0 1 2899 0 180 0 +STATIC snAenter 1.0 6.50781 51.0234 3029.78 0 0 0 +STATIC snAenter 1.0 27.8594 23.1328 2944 0 0 0 +STATIC od3 1.0 0 0 2650 0 180 0 +STATIC wcircle 1.0 1200 0 0 0 0 0 diff --git a/CONTENT/RP/MAPS/BREWERS.CAM b/CONTENT/RP/MAPS/BREWERS.CAM new file mode 100644 index 0000000..579f8e0 --- /dev/null +++ b/CONTENT/RP/MAPS/BREWERS.CAM @@ -0,0 +1,299 @@ +[WinnerCamera] +cameraID=0 +cameraType=DefaultCameraType +tranx=1200 +trany=15 +tranz=-38 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera1] +cameraID=1 +cameraType=DefaultCameraType +tranx=-21.0 +trany=5.0 +tranz=0.0 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera2] +cameraID=2 +cameraType=DefaultCameraType +tranx=-0.0 +trany=5.0 +tranz=400.0 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera3] +cameraID=3 +cameraType=DefaultCameraType +tranx=-0.0 +trany=5.0 +tranz=800.0 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera4] +cameraID=4 +cameraType=DefaultCameraType +tranx=-0.0 +trany=5.0 +tranz=1200.0 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera5] +cameraID=5 +cameraType=DefaultCameraType +tranx=-0.0 +trany=5.0 +tranz=1600.0 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera6] +cameraID=6 +cameraType=DefaultCameraType +tranx=-15.0 +trany=-35.0 +tranz=2050.0 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera7] +cameraID=7 +cameraType=DefaultCameraType +tranx=0.0 +trany=15.0 +tranz=2645.0 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera8] +cameraID=8 +cameraType=DefaultCameraType +tranx=0.0 +trany=5.0 +tranz=-300.0 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera9] +cameraID=9 +cameraType=DefaultCameraType +tranx=300.0 +trany=5.0 +tranz=-600.0 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera10] +cameraID=10 +cameraType=DefaultCameraType +tranx=600.0 +trany=5.0 +tranz=-600.0 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera11] +cameraID=11 +cameraType=DefaultCameraType +tranx=900.0 +trany=5.0 +tranz=-625.0 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera12] +cameraID=12 +cameraType=DefaultCameraType +tranx=1200.0 +trany=5.0 +tranz=-600.0 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera13] +cameraID=13 +cameraType=DefaultCameraType +tranx=1600.0 +trany=5.0 +tranz=-600.0 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera14] +cameraID=14 +cameraType=DefaultCameraType +tranx=2000.0 +trany=5.0 +tranz=-600.0 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera15] +cameraID=15 +cameraType=DefaultCameraType +tranx=2400.0 +trany=5.0 +tranz=-600.0 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera16] +cameraID=16 +cameraType=DefaultCameraType +tranx=2745.0 +trany=5.0 +tranz=-625.0 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera17] +cameraID=17 +cameraType=DefaultCameraType +tranx=2700.0 +trany=5.0 +tranz=-900.0 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera18] +cameraID=18 +cameraType=DefaultCameraType +tranx=2700.0 +trany=-35.0 +tranz=-1350.0 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera19] +cameraID=19 +cameraType=DefaultCameraType +tranx=2700.0 +trany=5.0 +tranz=-1845.0 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 diff --git a/CONTENT/RP/MAPS/BURNT.BAK b/CONTENT/RP/MAPS/BURNT.BAK new file mode 100644 index 0000000..9729aaf --- /dev/null +++ b/CONTENT/RP/MAPS/BURNT.BAK @@ -0,0 +1,255 @@ +[camera0] +cameraID=0 +cameraType=DefaultCameraType +tranx=-25.308800 +trany=27.563000 +tranz=-30.000000 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[camera1] +cameraID=1 +cameraType=DefaultCameraType +tranx=-16.141600 +trany=15.319960 +tranz=-240.897000 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[camera2] +cameraID=2 +cameraType=DefaultCameraType +tranx=-25.308800 +trany=27.563000 +tranz=-559.575000 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[camera3] +cameraID=3 +cameraType=DefaultCameraType +tranx=-20.141600 +trany=15.319960 +tranz=-890.897000 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[camera4] +cameraID=4 +cameraType=DefaultCameraType +tranx=-20.030600 +trany=15.319960 +tranz=-1352.260000 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[camera5] +cameraID=5 +cameraType=DefaultCameraType +tranx=-20.030600 +trany=15.319960 +tranz=-1750.000000 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[camera6] +cameraID=6 +cameraType=DefaultCameraType +tranx=0.000000 +trany=10.000000 +tranz=-2000.000000 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[camera7] +cameraID=7 +cameraType=DefaultCameraType +tranx=100.000000 +trany=30.000000 +tranz=-2400.000000 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[camera8] +cameraID=8 +cameraType=DefaultCameraType +tranx=25.308800 +trany=27.563000 +tranz=30.000000 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[camera9] +cameraID=9 +cameraType=DefaultCameraType +tranx=16.141600 +trany=15.319960 +tranz=240.897000 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[camera10] +cameraID=10 +cameraType=DefaultCameraType +tranx=25.308800 +trany=27.563000 +tranz=559.575000 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[camera11] +cameraID=11 +cameraType=DefaultCameraType +tranx=20.141600 +trany=15.319960 +tranz=890.897000 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[camera12] +cameraID=12 +cameraType=DefaultCameraType +tranx=20.030600 +trany=15.319960 +tranz=1352.260000 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[camera13] +cameraID=13 +cameraType=DefaultCameraType +tranx=20.030600 +trany=15.319960 +tranz=1750.000000 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + + +[camera14] +cameraID=14 +cameraType=DefaultCameraType +tranx=0.000000 +trany=10.000000 +tranz=2000.000000 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[camera15] +cameraID=15 +cameraType=DefaultCameraType +tranx=100.000000 +trany=30.000000 +tranz=2400.000000 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[WinnerCamera] +cameraID=15 +cameraType=DefaultCameraType +tranx=1200 +trany=15 +tranz=-38 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 diff --git a/CONTENT/RP/MAPS/BURNT.CAM b/CONTENT/RP/MAPS/BURNT.CAM new file mode 100644 index 0000000..27d924c --- /dev/null +++ b/CONTENT/RP/MAPS/BURNT.CAM @@ -0,0 +1,255 @@ +[camera0] +cameraID=0 +cameraType=DefaultCameraType +tranx=-25.308800 +trany=27.563000 +tranz=-30.000000 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[camera1] +cameraID=1 +cameraType=DefaultCameraType +tranx=-16.141600 +trany=15.319960 +tranz=-240.897000 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[camera2] +cameraID=2 +cameraType=DefaultCameraType +tranx=-25.308800 +trany=27.563000 +tranz=-559.575000 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[camera3] +cameraID=3 +cameraType=DefaultCameraType +tranx=-20.141600 +trany=15.319960 +tranz=-990.897000 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[camera4] +cameraID=4 +cameraType=DefaultCameraType +tranx=-20.030600 +trany=15.319960 +tranz=-1452.260000 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[camera5] +cameraID=5 +cameraType=DefaultCameraType +tranx=-20.030600 +trany=15.319960 +tranz=-1850.000000 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[camera6] +cameraID=6 +cameraType=DefaultCameraType +tranx=0.000000 +trany=10.000000 +tranz=-2100.000000 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[camera7] +cameraID=7 +cameraType=DefaultCameraType +tranx=100.000000 +trany=30.000000 +tranz=-2500.000000 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[camera8] +cameraID=8 +cameraType=DefaultCameraType +tranx=25.308800 +trany=27.563000 +tranz=30.000000 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[camera9] +cameraID=9 +cameraType=DefaultCameraType +tranx=16.141600 +trany=15.319960 +tranz=240.897000 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[camera10] +cameraID=10 +cameraType=DefaultCameraType +tranx=25.308800 +trany=27.563000 +tranz=559.575000 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[camera11] +cameraID=11 +cameraType=DefaultCameraType +tranx=20.141600 +trany=15.319960 +tranz=990.897000 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[camera12] +cameraID=12 +cameraType=DefaultCameraType +tranx=20.030600 +trany=15.319960 +tranz=1452.260000 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[camera13] +cameraID=13 +cameraType=DefaultCameraType +tranx=20.030600 +trany=15.319960 +tranz=1850.000000 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + + +[camera14] +cameraID=14 +cameraType=DefaultCameraType +tranx=0.000000 +trany=10.000000 +tranz=2100.000000 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[camera15] +cameraID=15 +cameraType=DefaultCameraType +tranx=100.000000 +trany=30.000000 +tranz=2500.000000 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[WinnerCamera] +cameraID=15 +cameraType=DefaultCameraType +tranx=1200 +trany=15 +tranz=-38 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 diff --git a/CONTENT/RP/MAPS/CANAL.MAP b/CONTENT/RP/MAPS/CANAL.MAP new file mode 100644 index 0000000..95189cb --- /dev/null +++ b/CONTENT/RP/MAPS/CANAL.MAP @@ -0,0 +1,35 @@ +[cc1] +type=Model +modelfile=cc1.mod + +[cn1] +type=Model +modelfile=cn1.mod + +[me1] +type=Model +modelfile=me1.mod + +[mus] +type=Model +modelfile=mus.mod + +[one] +type=dropzone +dropzone=0 10 0 0 0 0 + +[canal] +type=Map +instance=me1 0 0 0 0 0 0 +instance=cn1 0 0 -200 0 0 0 +instance=cn1 0 0 200 0 0 0 +instance=cn1 0 0 -100 0 0 0 +instance=cn1 0 0 100 0 0 0 +instance=cn1 0 0 -300 0 0 0 +instance=cn1 0 0 300 0 0 0 +instance=cn1 0 0 -400 0 0 0 +instance=cn1 0 0 400 0 0 0 +instance=cc1 0 0 -500 0 0 0 +instance=cc1 0 0 500 0 3.1415926 0 +instance=mus 0 5 -200 0 3.1415926 0 +instancedropzone=one 0 0 0 0 0 0 diff --git a/CONTENT/RP/MAPS/CN b/CONTENT/RP/MAPS/CN new file mode 100644 index 0000000..8696a52 --- /dev/null +++ b/CONTENT/RP/MAPS/CN @@ -0,0 +1,2 @@ +END + diff --git a/CONTENT/RP/MAPS/DR.MAP b/CONTENT/RP/MAPS/DR.MAP new file mode 100644 index 0000000..41b174a --- /dev/null +++ b/CONTENT/RP/MAPS/DR.MAP @@ -0,0 +1,103 @@ +[LAB_ONLY] + +[cn3] +type=model +modelfile=cn3.mod +[drw] +type=model +modelfile=drw.mod +[cn1] +type=model +modelfile=cn1.mod +[oa1] +type=model +modelfile=oa1.mod +[br1] +type=model +modelfile=br1.mod +[rp1] +type=model +modelfile=rp1.mod +[ct1] +type=model +modelfile=ct1.mod +[cn5] +type=model +modelfile=cn5.mod +[cc1] +type=model +modelfile=cc1.mod +[bn1] +type=model +modelfile=bn1.mod +[gr1] +type=model +modelfile=gr1.mod +[dname] +dropzone= 10.632600 36.984669 410.000000 0.000000 0.000000 0.000000 +dropzone= 0.632605 36.984669 410.000000 0.000000 0.000000 0.000000 +dropzone= -9.367395 36.984669 410.000000 0.000000 0.000000 0.000000 +dropzone= -19.367399 36.984669 410.000000 0.000000 0.000000 0.000000 +dropzone= -14.475880 30.248470 410.000000 0.000000 0.000000 0.000000 +dropzone= -4.475876 30.248470 410.000000 0.000000 0.000000 0.000000 +dropzone= 5.524124 30.248470 410.000000 0.000000 0.000000 0.000000 +dropzone= 15.524120 30.248470 410.000000 0.000000 0.000000 0.000000 +type=dropzone +[pz1] +type=model +modelfile=pz1.mod +[dr] +instancedropzone=dname -1.921638 33.616570 410.000000 0.000000 0.000000 0.000000 +type=map +instance=cn3 0.000000 0.000000 -490.000000 0.000000 3.141593 0.000000 +instance=drw 5.000000 0.000000 260.000000 0.000000 0.000000 0.000000 +instance=cn1 0.000000 0.000000 1010.000000 0.000000 3.141593 0.000000 +instance=cn3 0.000000 0.000000 1010.000000 0.000000 3.141593 0.000000 +instance=oa1 0.000000 0.000000 610.000000 0.000000 0.000000 0.000000 +instance=oa1 0.000000 0.000000 610.000000 0.000000 3.141593 0.000000 +instance=cn3 0.000000 0.000000 610.000000 0.000000 3.141593 0.000000 +instance=cn3 0.000000 0.000000 710.000000 0.000000 3.141593 0.000000 +instance=cn1 0.000000 0.000000 710.000000 0.000000 3.141593 0.000000 +instance=cn1 0.000000 0.000000 610.000000 0.000000 3.141593 0.000000 +instance=br1 -10.000000 10.000000 700.000000 0.000000 3.141593 0.000000 +instance=rp1 -10.000000 0.000000 760.000000 0.000000 3.141593 0.000000 +instance=ct1 8.500000 0.000000 760.000000 0.000000 3.141593 0.000000 +instance=cn3 0.000000 0.000000 810.000000 0.000000 3.141593 0.000000 +instance=rp1 -10.000000 0.000000 540.000000 0.000000 0.000000 0.000000 +instance=rp1 -10.000000 0.000000 -360.000000 0.000000 0.000000 0.000000 +instance=cn1 0.000000 0.000000 -390.000000 0.000000 3.141593 0.000000 +instance=cn3 0.000000 0.000000 -90.000000 0.000000 3.141593 0.000000 +instance=ct1 8.500000 0.000000 -140.000000 0.000000 3.141593 0.000000 +instance=br1 -10.000000 10.000000 -200.000000 0.000000 3.141593 0.000000 +instance=rp1 -10.000000 0.000000 -140.000000 0.000000 3.141593 0.000000 +instance=cn1 0.000000 0.000000 -290.000000 0.000000 3.141593 0.000000 +instance=cn1 0.000000 0.000000 -190.000000 0.000000 3.141593 0.000000 +instance=cn3 0.000000 0.000000 -190.000000 0.000000 3.141593 0.000000 +instance=cn3 0.000000 0.000000 -290.000000 0.000000 3.141593 0.000000 +instance=cn3 0.000000 0.000000 -390.000000 0.000000 3.141593 0.000000 +instance=oa1 0.000000 0.000000 -290.000000 0.000000 3.141593 0.000000 +instance=oa1 0.000000 0.000000 -290.000000 0.000000 0.000000 0.000000 +instance=cn1 0.000000 0.000000 -490.000000 0.000000 3.141593 0.000000 +instance=cn3 0.000000 0.000000 110.000000 0.000000 3.141593 0.000000 +instance=cn3 0.000000 0.000000 10.000000 0.000000 3.141593 0.000000 +instance=cn1 0.000000 0.000000 -90.000000 0.000000 3.141593 0.000000 +instance=cn1 0.000000 0.000000 10.000000 0.000000 3.141593 0.000000 +instance=cn1 0.000000 0.000000 110.000000 0.000000 3.141593 0.000000 +instance=cn5 0.000000 0.000000 210.000000 0.000000 0.000000 0.000000 +instance=cn3 0.000000 0.000000 110.000000 0.000000 0.000000 0.000000 +instance=cc1 0.000000 0.000000 1110.000000 0.000000 3.141593 0.000000 +instance=cc1 0.000000 0.000000 -590.000000 0.000000 0.000000 0.000000 +instance=cn1 0.000000 0.000000 810.000000 0.000000 3.141593 0.000000 +instance=cn1 0.000000 0.000000 910.000000 0.000000 3.141593 0.000000 +instance=cn3 0.000000 0.000000 1110.000000 0.000000 3.141593 0.000000 +instance=cn3 0.000000 0.000000 910.000000 0.000000 3.141593 0.000000 +instance=bn1 10.398438 0.000000 -443.148437 0.000000 0.000000 0.000000 +instance=cn1 0.000000 0.000000 510.000000 0.000000 3.141593 0.000000 +instance=cn3 0.000000 0.000000 510.000000 0.000000 3.141593 0.000000 +instance=cn3 0.000000 0.000000 310.000000 0.000000 0.000000 0.000000 +instance=gr1 0.000000 0.000000 410.000000 0.000000 0.000000 0.000000 +instance=cn5 0.000000 0.000000 410.000000 0.000000 0.000000 0.000000 +instance=cn5 0.000000 0.000000 310.000000 0.000000 0.000000 0.000000 +instance=pz1 12.000000 4.500000 -390.000000 0.000000 0.000000 0.000000 +instance=pz1 -25.000000 5.500000 410.000000 0.000000 0.000000 0.000000 +instance=pz1 -27.000000 8.500000 410.000000 0.000000 0.000000 0.000000 diff --git a/CONTENT/RP/MAPS/FIRST.MAP b/CONTENT/RP/MAPS/FIRST.MAP new file mode 100644 index 0000000..068e2ee --- /dev/null +++ b/CONTENT/RP/MAPS/FIRST.MAP @@ -0,0 +1,36 @@ +[cn2] +type=Model +modelfile=cn2.mod +[rf1] +type=Model +modelfile=rf1.mod +[cn1] +type=Model +modelfile=cn1.mod +[rp1] +type=Model +modelfile=rp1.mod +[cc1] +type=Model +modelfile=cc1.mod +[one] +type=dropzone +dropzone=0 10 0 0 0 0 +[floc] +type=Map +instance=cn2 12.0000000 5.000000 444.999023 0.000000 0.000000 0.000000 +instance=cn2 12.0000000 5.000000 244.971405 0.000000 3.141593 0.000000 +instance=rf1 25.000000 -5.000000 -225.000000 0.000000 0.000000 0.000000 +instance=cn1 20.000000 -5.000000 -105.000000 0.000000 0.000000 0.000000 +instance=cn1 20.000000 -5.000000 -205.000000 0.000000 0.000000 0.000000 +instance=cn1 20.000000 -5.000000 -305.000000 0.000000 0.000000 0.000000 +instance=cn1 20.000000 -5.000000 -405.000000 0.000000 0.000000 0.000000 +instance=cn1 20.000000 -5.000000 695.000000 0.000000 0.000000 0.000000 +instance=cn1 20.000000 -5.000000 595.000000 0.000000 0.000000 0.000000 +instance=cn1 20.000000 -5.000000 -5.000000 0.000000 0.000000 0.000000 +instance=cn1 20.000000 -5.000000 94.999985 0.000000 0.000000 0.000000 +instance=rp1 20.000000 -5.000000 125.000000 0.000000 0.000000 0.000000 +instance=rp1 20.000000 -5.000000 564.935913 0.000000 3.141593 0.000000 +instance=cc1 20.000000 -5.000000 794.936279 0.000000 3.141593 0.000000 +instance=cc1 20.000000 -5.000000 -505.000000 0.000000 0.000000 0.000000 +instancedropzone=one 0 0 0 0 0 0 diff --git a/CONTENT/RP/MAPS/GENE.MAP b/CONTENT/RP/MAPS/GENE.MAP new file mode 100644 index 0000000..b3fad93 --- /dev/null +++ b/CONTENT/RP/MAPS/GENE.MAP @@ -0,0 +1,54 @@ +[cr6] +type=model +modelfile=cr6.mod +[cr5] +type=model +modelfile=cr5.mod +[cre] +type=model +modelfile=cre.mod +[wh1] +type=model +modelfile=wh1.mod +[cr4] +type=model +modelfile=cr4.mod +[cr1] +type=model +modelfile=cr1.mod +[cn1] +type=model +modelfile=cn1.mod +[cn3] +type=model +modelfile=cn3.mod +[one] +type=dropzone +dropzone=0 10 0 0 0 0 +[greg] +type=map +instance=cr6 1.250000 35.000000 801.500000 0.000000 0.000000 0.000000 +instance=cr6 1.250000 35.000000 1001.500000 0.000000 0.000000 0.000000 +instance=cr5 1.250000 0.000000 651.625000 0.000000 3.141593 0.000000 +instance=cre 1.221668 0.000000 576.689514 0.000000 3.141593 0.000000 +instance=cr6 0.000000 35.000000 -500.000000 0.000000 0.000000 0.000000 +instance=cr6 0.000000 35.000000 -700.000000 0.000000 0.000000 0.000000 +instance=wh1 -40.000000 -45.000000 -1200.000000 0.000000 0.000000 0.000000 +instance=cr5 0.000000 0.000000 -350.000000 0.000000 0.000000 0.000000 +instance=cr4 0.000000 0.000000 -250.000000 0.000000 0.000000 0.000000 +instance=cr1 0.000000 0.000000 -150.000000 0.000000 0.000000 0.000000 +instance=cre 0.000000 0.000000 -75.000000 0.000000 0.000000 0.000000 +instance=cn1 0.000000 0.000000 500.000000 0.000000 0.000000 0.000000 +instance=cn3 0.000000 0.000000 500.000000 0.000000 0.000000 0.000000 +instance=cn1 0.000000 0.000000 400.000000 0.000000 0.000000 0.000000 +instance=cn3 0.000000 0.000000 400.000000 0.000000 0.000000 0.000000 +instance=cn1 0.000000 0.000000 300.000000 0.000000 0.000000 0.000000 +instance=cn3 0.000000 0.000000 300.000000 0.000000 0.000000 0.000000 +instance=cn1 0.000000 0.000000 200.000000 0.000000 0.000000 0.000000 +instance=cn3 0.000000 0.000000 200.000000 0.000000 0.000000 0.000000 +instance=cn1 0.000000 0.000000 100.000000 0.000000 0.000000 0.000000 +instance=cn3 0.000000 0.000000 100.000000 0.000000 0.000000 0.000000 +instance=cn3 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 +instance=cn1 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 +instance=wh1 41.284393 -45.000000 1501.447021 0.000000 3.141593 0.000000 +instancedropzone=one 0 0 0 0 0 0 diff --git a/CONTENT/RP/MAPS/GREG.MAP b/CONTENT/RP/MAPS/GREG.MAP new file mode 100644 index 0000000..fd5d553 --- /dev/null +++ b/CONTENT/RP/MAPS/GREG.MAP @@ -0,0 +1,60 @@ +[cr6] +type=model +modelfile=cr6.mod +[cr5] +type=model +modelfile=cr5.mod +[cre] +type=model +modelfile=cre.mod +[wh1] +type=model +modelfile=wh1.mod +[cr4] +type=model +modelfile=cr4.mod +[cr1] +type=model +modelfile=cr1.mod +[cn1] +type=model +modelfile=cn1.mod +[cn3] +type=model +modelfile=cn3.mod +[mus] +type=Model +modelfile=mus.mod +[one] +type=dropzone +dropzone=0 10 0 0 0 0 +[greg] +type=map +instance=cr6 1.250000 35.000000 801.500000 0.000000 0.000000 0.000000 +instance=cr6 1.250000 35.000000 1001.500000 0.000000 0.000000 0.000000 +instance=cr5 1.250000 0.000000 651.625000 0.000000 3.141593 0.000000 +instance=cre 1.221668 0.000000 576.689514 0.000000 3.141593 0.000000 +instance=cr6 0.000000 35.000000 -500.000000 0.000000 0.000000 0.000000 +instance=cr6 0.000000 35.000000 -700.000000 0.000000 0.000000 0.000000 +instance=wh1 -40.000000 -45.000000 -1200.000000 0.000000 0.000000 0.000000 +instance=cr5 0.000000 0.000000 -350.000000 0.000000 0.000000 0.000000 +instance=cr4 0.000000 0.000000 -250.000000 0.000000 0.000000 0.000000 +instance=cr1 0.000000 0.000000 -150.000000 0.000000 0.000000 0.000000 +instance=cre 0.000000 0.000000 -75.000000 0.000000 0.000000 0.000000 +instance=cn1 0.000000 0.000000 500.000000 0.000000 0.000000 0.000000 +instance=cn3 0.000000 0.000000 500.000000 0.000000 0.000000 0.000000 +instance=cn1 0.000000 0.000000 400.000000 0.000000 0.000000 0.000000 +instance=cn3 0.000000 0.000000 400.000000 0.000000 0.000000 0.000000 +instance=cn1 0.000000 0.000000 300.000000 0.000000 0.000000 0.000000 +instance=cn3 0.000000 0.000000 300.000000 0.000000 0.000000 0.000000 +instance=cn1 0.000000 0.000000 200.000000 0.000000 0.000000 0.000000 +instance=cn3 0.000000 0.000000 200.000000 0.000000 0.000000 0.000000 +instance=cn1 0.000000 0.000000 100.000000 0.000000 0.000000 0.000000 +instance=cn3 0.000000 0.000000 100.000000 0.000000 0.000000 0.000000 +instance=cn3 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 +instance=cn1 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 +instance=wh1 41.284393 -45.000000 1501.447021 0.000000 3.141593 0.000000 +instance=mus 0.0 10.0 20.0 0.0 0.0 0.0 +instance=mus 0.0 5.0 40.0 0.0 0.0 0.0 +instance=mus 0.0 6.0 60.0 0.0 0.0 0.0 +instancedropzone=one 0 0 0 0 0 0 diff --git a/CONTENT/RP/MAPS/HEADMF.CAM b/CONTENT/RP/MAPS/HEADMF.CAM new file mode 100644 index 0000000..d6b4136 --- /dev/null +++ b/CONTENT/RP/MAPS/HEADMF.CAM @@ -0,0 +1,269 @@ +[camera0] +cameraID=0 +cameraType=DefaultCameraType +tranx=-25.308800 +trany=37.563000 +tranz=-30.000000 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[camera1] +cameraID=1 +cameraType=DefaultCameraType +tranx=-16.141600 +trany=15.319960 +tranz=-240.897000 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[camera2] +cameraID=2 +cameraType=DefaultCameraType +tranx=-10.308800 +trany=27.563000 +tranz=-559.575000 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[camera3] +cameraID=3 +cameraType=DefaultCameraType +tranx=0.000000 +trany=20.319960 +tranz=-910.897000 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[camera4] +cameraID=4 +cameraType=DefaultCameraType +tranx=10.030600 +trany=15.319960 +tranz=-1352.260000 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[camera5] +cameraID=5 +cameraType=DefaultCameraType +tranx=-10.030600 +trany=15.319960 +tranz=-1750.000000 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[camera6] +cameraID=6 +cameraType=DefaultCameraType +tranx=10.000000 +trany=10.000000 +tranz=-2000.000000 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[camera7] +cameraID=7 +cameraType=DefaultCameraType +tranx=10.000000 +trany=10.000000 +tranz=-2200.000000 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[camera8] +cameraID=8 +cameraType=DefaultCameraType +tranx=10.000000 +trany=10.000000 +tranz=-2500.000000 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[camera9] +cameraID=9 +cameraType=DefaultCameraType +tranx=100.000000 +trany=30.000000 +tranz=-2800.000000 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[camera10] +cameraID=10 +cameraType=DefaultCameraType +tranx=25.308800 +trany=27.563000 +tranz=30.000000 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[camera11] +cameraID=11 +cameraType=DefaultCameraType +tranx=16.141600 +trany=15.319960 +tranz=240.897000 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[camera12] +cameraID=12 +cameraType=DefaultCameraType +tranx=25.308800 +trany=27.563000 +tranz=559.575000 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[camera13] +cameraID=13 +cameraType=DefaultCameraType +tranx=20.141600 +trany=10.319960 +tranz=790.897000 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[camera14] +cameraID=14 +cameraType=DefaultCameraType +tranx=20.030600 +trany=15.319960 +tranz=1200.000000 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[camera15] +cameraID=15 +cameraType=DefaultCameraType +tranx=5.000000 +trany=0.000000 +tranz=1500.000000 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[camera16] +cameraID=15 +cameraType=DefaultCameraType +tranx=100.000000 +trany=30.000000 +tranz=1800.000000 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[WinnerCamera] +cameraID=16 +cameraType=DefaultCameraType +tranx=1200 +trany=15 +tranz=-38 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 diff --git a/CONTENT/RP/MAPS/HEADOFF.BAK b/CONTENT/RP/MAPS/HEADOFF.BAK new file mode 100644 index 0000000..6925324 --- /dev/null +++ b/CONTENT/RP/MAPS/HEADOFF.BAK @@ -0,0 +1,269 @@ +[camera0] +cameraID=0 +cameraType=DefaultCameraType +tranx=-25.308800 +trany=37.563000 +tranz=-30.000000 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[camera1] +cameraID=1 +cameraType=DefaultCameraType +tranx=-16.141600 +trany=15.319960 +tranz=-240.897000 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[camera2] +cameraID=2 +cameraType=DefaultCameraType +tranx=-10.308800 +trany=27.563000 +tranz=-559.575000 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[camera3] +cameraID=3 +cameraType=DefaultCameraType +tranx=0.000000 +trany=20.319960 +tranz=-910.897000 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[camera4] +cameraID=4 +cameraType=DefaultCameraType +tranx=10.030600 +trany=15.319960 +tranz=-1352.260000 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[camera5] +cameraID=5 +cameraType=DefaultCameraType +tranx=-10.030600 +trany=15.319960 +tranz=-1750.000000 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[camera6] +cameraID=6 +cameraType=DefaultCameraType +tranx=10.000000 +trany=10.000000 +tranz=-2000.000000 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[camera7] +cameraID=7 +cameraType=DefaultCameraType +tranx=10.000000 +trany=10.000000 +tranz=-2200.000000 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[camera8] +cameraID=8 +cameraType=DefaultCameraType +tranx=10.000000 +trany=10.000000 +tranz=-2500.000000 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[camera9] +cameraID=9 +cameraType=DefaultCameraType +tranx=100.000000 +trany=30.000000 +tranz=-2800.000000 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[camera10] +cameraID=10 +cameraType=DefaultCameraType +tranx=25.308800 +trany=27.563000 +tranz=30.000000 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[camera11] +cameraID=11 +cameraType=DefaultCameraType +tranx=16.141600 +trany=15.319960 +tranz=240.897000 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[camera12] +cameraID=12 +cameraType=DefaultCameraType +tranx=25.308800 +trany=27.563000 +tranz=559.575000 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[camera13] +cameraID=13 +cameraType=DefaultCameraType +tranx=20.141600 +trany=10.319960 +tranz=790.897000 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[camera14] +cameraID=14 +cameraType=DefaultCameraType +tranx=20.030600 +trany=15.319960 +tranz=1200.000000 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[camera15] +cameraID=15 +cameraType=DefaultCameraType +tranx=5.000000 +trany=10.000000 +tranz=1500.000000 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[camera16] +cameraID=15 +cameraType=DefaultCameraType +tranx=100.000000 +trany=30.000000 +tranz=1800.000000 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[WinnerCamera] +cameraID=16 +cameraType=DefaultCameraType +tranx=1200 +trany=15 +tranz=-38 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 diff --git a/CONTENT/RP/MAPS/LYZLANE.CAM b/CONTENT/RP/MAPS/LYZLANE.CAM new file mode 100644 index 0000000..cea3880 --- /dev/null +++ b/CONTENT/RP/MAPS/LYZLANE.CAM @@ -0,0 +1,180 @@ +[Camera0] +cameraID=0 +cameraType=DefaultCameraType +tranx=21.5046 +trany=36.7533 +tranz=-1548.81 +quatx=-0.000456745 +quaty=0.996173 +quatz=0 +quatw=0.0874075 +minYawClamp=-2.84726 +maxYawClamp=0.0571846 +minPitchClamp=-1.35048 +maxPitchClamp=-0.192801 + +[Camera1] +cameraID=1 +cameraType=DefaultCameraType +tranx=-24.4303 +trany=20.126 +tranz=353.943 +quatx=2.51385e-11 +quaty=-0.0356937 +quatz=-7.03833e-10 +quatw=0.999363 +minYawClamp=-2.74973 +maxYawClamp=4.9871e-06 +minPitchClamp=-0.684925 +maxPitchClamp=-0.127456 + +[Camera2] +cameraID=2 +cameraType=DefaultCameraType +tranx=-40.9312 +trany=32.3787 +tranz=1182.34 +quatx=5.25978e-08 +quaty=-0.676216 +quatz=-5.73027e-08 +quatw=0.736704 +minYawClamp=-1.17499 +maxYawClamp=1.56348 +minPitchClamp=0.253306 +maxPitchClamp=1.40914 + +[Camera4] +cameraID=4 +cameraType=DefaultCameraType +tranx=-18.5426 +trany=2.5382 +tranz=40.2621 +quatx=-8.13886e-07 +quaty=-0.641169 +quatz=9.74121e-07 +quatw=0.7674 +minYawClamp=-1.73556 +maxYawClamp=1.48318 +minPitchClamp=-0.147521 +maxPitchClamp=0.0666744 + +[Camera5] +cameraID=5 +cameraType=DefaultCameraType +tranx=-7.116 +trany=27.8094 +tranz=1790.2 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera6] +cameraID=6 +cameraType=DefaultCameraType +tranx=-20.7276 +trany=3.48801 +tranz=-749.834 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera7] +cameraID=7 +cameraType=DefaultCameraType +tranx=21.5066 +trany=45.5032 +tranz=-1549.54 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[WinnerCamera] +cameraID=8 +cameraType=DefaultCameraType +tranx=1200 +trany=15 +tranz=-38 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[camera9] +cameraID=9 +cameraType=DefaultCameraType +tranx=-27.9205 +trany=17.9217 +tranz=865.703 +quatx=1.56324e-06 +quaty=-0.730473 +quatz=-1.46152e-06 +quatw=0.682942 +minYawClamp=-1.14978 +maxYawClamp=1.35033 +minPitchClamp=-0.564776 +maxPitchClamp=-0.163749 + +[camera10] +cameraID=10 +cameraType=DefaultCameraType +tranx=-28.8414 +trany=30.3802 +tranz=873.654 +quatx=8.92329e-07 +quaty=-0.700382 +quatz=-9.09383e-07 +quatw=0.713768 +minYawClamp=-1.42729 +maxYawClamp=1.66214 +minPitchClamp=0.293634 +maxPitchClamp=0.360658 + +[camera11] +cameraID=11 +cameraType=DefaultCameraType +tranx=-31.1544 +trany=30.2863 +tranz=349.919 +quatx=1.95126e-05 +quaty=-0.695978 +quatz=-2.01318e-05 +quatw=0.718063 +minYawClamp=-1.59178 +maxYawClamp=1.45469 +minPitchClamp=0.221485 +maxPitchClamp=1.1702 + +[camera3] +cameraID=3 +cameraType=DefaultCameraType +tranx=-15.3214 +trany=29.8623 +tranz=2314.03 +quatx=0 +quaty=0.708474 +quatz=0 +quatw=0.705737 +minYawClamp=-3.12994 +maxYawClamp=3.13772 +minPitchClamp=-1.5708 +maxPitchClamp=0.248081 + diff --git a/CONTENT/RP/MAPS/PAIN.CAM b/CONTENT/RP/MAPS/PAIN.CAM new file mode 100644 index 0000000..ed7fffa --- /dev/null +++ b/CONTENT/RP/MAPS/PAIN.CAM @@ -0,0 +1,270 @@ +[Camera1] +cameraID=1 +cameraType=DefaultCameraType +tranx=-418.151 +trany=7.18161 +tranz=2844.4 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera2] +cameraID=2 +cameraType=DefaultCameraType +tranx=-429.859 +trany=27.4121 +tranz=3240.27 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera3] +cameraID=3 +cameraType=DefaultCameraType +tranx=-405.508 +trany=5.18381 +tranz=3884.1 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera0] +cameraID=0 +cameraType=DefaultCameraType +tranx=-21.0053 +trany=11.8226 +tranz=2836.24 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera4] +cameraID=4 +cameraType=DefaultCameraType +tranx=-406.516 +trany=4.23482 +tranz=4762.36 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera6] +cameraID=6 +cameraType=DefaultCameraType +tranx=-24.5895 +trany=26.3084 +tranz=186.549 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera7] +cameraID=7 +cameraType=DefaultCameraType +tranx=-17.3926 +trany=30.7505 +tranz=-825.139 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera8] +cameraID=8 +cameraType=DefaultCameraType +tranx=-10.2934 +trany=47.1822 +tranz=-1173.89 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera9] +cameraID=9 +cameraType=DefaultCameraType +tranx=-24.27 +trany=32.349 +tranz=-2233.73 +quatx=7.17811e-10 +quaty=-0.128289 +quatz=-5.54903e-09 +quatw=0.991737 +minYawClamp=-2.79945 +maxYawClamp=0.0421235 +minPitchClamp=-1.05636 +maxPitchClamp=0.085193 + +[Camera10] +cameraID=10 +cameraType=DefaultCameraType +tranx=-0.179368 +trany=32.1248 +tranz=-2557.24 +quatx=-0.000244141 +quaty=-0.99587 +quatz=0 +quatw=0.0907881 +minYawClamp=0 +maxYawClamp=0 +minPitchClamp=-0.00493341 +maxPitchClamp=-0.00493341 + +[Camera12] +cameraID=12 +cameraType=DefaultCameraType +tranx=-22.9339 +trany=31.16 +tranz=840.635 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera5] +cameraID=5 +cameraType=DefaultCameraType +tranx=-7.55068 +trany=20.5381 +tranz=1887.91 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera11] +cameraID=11 +cameraType=DefaultCameraType +tranx=-12.5716 +trany=2.59426 +tranz=2482.6 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera13] +cameraID=13 +cameraType=DefaultCameraType +tranx=-7.3736 +trany=21.9783 +tranz=1339.31 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera14] +cameraID=14 +cameraType=DefaultCameraType +tranx=-5.86642 +trany=-57.0116 +tranz=1339.3 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera15] +cameraID=15 +cameraType=DefaultCameraType +tranx=-7.55068 +trany=-52.2418 +tranz=1887.91 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[WinnerCamera] +cameraID=16 +cameraType=DefaultCameraType +tranx=1200 +trany=15 +tranz=-38 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[camera17] +cameraID=17 +cameraType=DefaultCameraType +tranx=-0.179368 +trany=32.1248 +tranz=-2557.24 +quatx=0 +quaty=-0.997867 +quatz=0 +quatw=0.0652772 +minYawClamp=-3.10902 +maxYawClamp=3.06849 +minPitchClamp=-0.113968 +maxPitchClamp=1.34288 + diff --git a/CONTENT/RP/MAPS/PUCKLAND.CAM b/CONTENT/RP/MAPS/PUCKLAND.CAM new file mode 100644 index 0000000..d59dac9 --- /dev/null +++ b/CONTENT/RP/MAPS/PUCKLAND.CAM @@ -0,0 +1,88 @@ +[Camera0] +cameraID=0 +cameraType=DefaultCameraType +tranx=21.5066 +trany=45.5032 +tranz=-1549.54 +quatx=0.0370168 +quaty=0.758794 +quatz=-0.04329 +quatw=0.648836 + +[Camera1] +cameraID=1 +cameraType=DefaultCameraType +tranx=-12.4707 +trany=5.68399 +tranz=377.5 +quatx=-0.0194762 +quaty=-0.941925 +quatz=-0.330634 +quatw=0.0554844 + +[Camera2] +cameraID=2 +cameraType=DefaultCameraType +tranx=-18.7479 +trany=19.3848 +tranz=923.39 +quatx=0.00225417 +quaty=0.994189 +quatz=-0.105512 +quatw=0.0212304 + +[Camera3] +cameraID=3 +cameraType=DefaultCameraType +tranx=-16.7018 +trany=37.9637 +tranz=2409.45 +quatx=0.157592 +quaty=0.817235 +quatz=-0.264307 +quatw=0.487272 + +[Camera4] +cameraID=4 +cameraType=DefaultCameraType +tranx=-18.4517 +trany=10.8331 +tranz=44.095 +quatx=0.0770715 +quaty=-0.0621684 +quatz=0.00481513 +quatw=0.995074 + +[Camera5] +cameraID=5 +cameraType=DefaultCameraType +tranx=-7.116 +trany=27.8094 +tranz=1790.2 +quatx=-0.000345267 +quaty=-0.999475 +quatz=-0.0110661 +quatw=0.0304589 + +[Camera6] +cameraID=6 +cameraType=DefaultCameraType +tranx=-20.7276 +trany=3.48801 +tranz=-749.834 +quatx=0.0516421 +quaty=-0.0493259 +quatz=0.00255382 +quatw=0.997443 + +[Camera7] +cameraID=7 +cameraType=DefaultCameraType +tranx=21.5066 +trany=45.5032 +tranz=-1549.54 +quatx=0.000172633 +quaty=0.997457 +quatz=-0.00266885 +quatw=0.0712205 + diff --git a/CONTENT/RP/MAPS/PUCKLAND.MAP b/CONTENT/RP/MAPS/PUCKLAND.MAP new file mode 100644 index 0000000..152f9ed --- /dev/null +++ b/CONTENT/RP/MAPS/PUCKLAND.MAP @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/CONTENT/RP/MAPS/THIRD.MAP b/CONTENT/RP/MAPS/THIRD.MAP new file mode 100644 index 0000000..cbe11ca --- /dev/null +++ b/CONTENT/RP/MAPS/THIRD.MAP @@ -0,0 +1,60 @@ +[LAB_ONLY] + +[cr6] +type=model +modelfile=cr6.mod +[cr5] +type=model +modelfile=cr5.mod +[cre] +type=model +modelfile=cre.mod +[wh1] +type=model +modelfile=wh1.mod +[cr4] +type=model +modelfile=cr4.mod +[cr1] +type=model +modelfile=cr1.mod +[cn1] +type=model +modelfile=cn1.mod +[cn3] +type=model +modelfile=cn3.mod +[mus] +type=model +modelfile=mus.mod +[one] +type=dropzone +dropzone=0 10 0 0 0 0 +[third] +type=map +instance=cr6 1.250000 35.000000 801.500000 0.000000 0.000000 0.000000 +instance=cr6 1.250000 35.000000 1001.500000 0.000000 0.000000 0.000000 +instance=cr5 1.250000 0.000000 651.625000 0.000000 3.141593 0.000000 +instance=cre 1.221668 0.000000 576.689514 0.000000 3.141593 0.000000 +instance=cr6 0.000000 35.000000 -500.000000 0.000000 0.000000 0.000000 +instance=cr6 0.000000 35.000000 -700.000000 0.000000 0.000000 0.000000 +instance=wh1 -40.000000 -45.000000 -1200.000000 0.000000 0.000000 0.000000 +instance=cr5 0.000000 0.000000 -350.000000 0.000000 0.000000 0.000000 +instance=cr4 0.000000 0.000000 -250.000000 0.000000 0.000000 0.000000 +instance=cr1 0.000000 0.000000 -150.000000 0.000000 0.000000 0.000000 +instance=cre 0.000000 0.000000 -75.000000 0.000000 0.000000 0.000000 +instance=cn1 0.000000 0.000000 500.000000 0.000000 0.000000 0.000000 +instance=cn3 0.000000 0.000000 500.000000 0.000000 0.000000 0.000000 +instance=cn1 0.000000 0.000000 400.000000 0.000000 0.000000 0.000000 +instance=cn3 0.000000 0.000000 400.000000 0.000000 0.000000 0.000000 +instance=cn1 0.000000 0.000000 300.000000 0.000000 0.000000 0.000000 +instance=cn3 0.000000 0.000000 300.000000 0.000000 0.000000 0.000000 +instance=cn1 0.000000 0.000000 200.000000 0.000000 0.000000 0.000000 +instance=cn3 0.000000 0.000000 200.000000 0.000000 0.000000 0.000000 +instance=cn1 0.000000 0.000000 100.000000 0.000000 0.000000 0.000000 +instance=cn3 0.000000 0.000000 100.000000 0.000000 0.000000 0.000000 +instance=cn3 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 +instance=cn1 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 +instance=wh1 41.284393 -45.000000 1501.447021 0.000000 3.141593 0.000000 +instance=mus 6.000000 6.000000 0.000000 0.000000 0.000000 0.000000 +instancedropzone=one 0 0 0 0 0 0 diff --git a/CONTENT/RP/MAPS/THRDRACE.SCE b/CONTENT/RP/MAPS/THRDRACE.SCE new file mode 100644 index 0000000..ab0b371 --- /dev/null +++ b/CONTENT/RP/MAPS/THRDRACE.SCE @@ -0,0 +1,6 @@ +[dropzones] +//name=x y z yaw +drop1=0 0 0 0 +drop2=0 0 100 180 +drop3=0 100 100 180 +drop4=20 0 0 0 diff --git a/CONTENT/RP/MAPS/VCS.CFG b/CONTENT/RP/MAPS/VCS.CFG new file mode 100644 index 0000000..7895cbe --- /dev/null +++ b/CONTENT/RP/MAPS/VCS.CFG @@ -0,0 +1 @@ +vcsdir=r:\resource\rp\l4\maps diff --git a/CONTENT/RP/MAPS/YIP.CAM b/CONTENT/RP/MAPS/YIP.CAM new file mode 100644 index 0000000..fc42676 --- /dev/null +++ b/CONTENT/RP/MAPS/YIP.CAM @@ -0,0 +1,300 @@ +[Camera0] +cameraID=0 +cameraType=DefaultCameraType +tranx=-20.3556 +trany=7.83787 +tranz=290.412 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera1] +cameraID=1 +cameraType=DefaultCameraType +tranx=-15.5144 +trany=3.39069 +tranz=729.567 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera2] +cameraID=2 +cameraType=DefaultCameraType +tranx=-31.7902 +trany=36.7837 +tranz=995.202 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera3] +cameraID=3 +cameraType=DefaultCameraType +tranx=18.3568 +trany=33.615 +tranz=1187.66 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera4] +cameraID=4 +cameraType=DefaultCameraType +tranx=-3.05212 +trany=45.0741 +tranz=1534.77 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera5] +cameraID=5 +cameraType=DefaultCameraType +tranx=133.051 +trany=74.8383 +tranz=1912.86 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera6] +cameraID=6 +cameraType=DefaultCameraType +tranx=-21.4762 +trany=36.3051 +tranz=-1072.58 +quatx=-4.20752e-06 +quaty=-0.929383 +quatz=1.67107e-06 +quatw=0.369118 +minYawClamp=-0.494056 +maxYawClamp=0.954443 +minPitchClamp=-0.913818 +maxPitchClamp=0.436825 + +[Camera7] +cameraID=7 +cameraType=DefaultCameraType +tranx=-16.1775 +trany=6.30525 +tranz=-292.705 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera8] +cameraID=8 +cameraType=DefaultCameraType +tranx=-32.1474 +trany=33.9382 +tranz=-689.108 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera9] +cameraID=9 +cameraType=DefaultCameraType +tranx=-12.8207 +trany=32.326 +tranz=-1068.63 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera10] +cameraID=10 +cameraType=DefaultCameraType +tranx=-3.40412 +trany=7.52669 +tranz=-1444.6 +quatx=-3.05311e-08 +quaty=0.00430008 +quatz=-7.10005e-06 +quatw=0.999991 +minYawClamp=-3.10433 +maxYawClamp=3.01313 +minPitchClamp=-1.52111 +maxPitchClamp=1.55565 + +[Camera11] +cameraID=11 +cameraType=DefaultCameraType +tranx=-3.62165 +trany=28.9959 +tranz=-1740.7 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera12] +cameraID=12 +cameraType=DefaultCameraType +tranx=-18.7203 +trany=23.9871 +tranz=-2140.21 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera13] +cameraID=13 +cameraType=DefaultCameraType +tranx=-15.0131 +trany=30.599 +tranz=-2466.91 +quatx=2.47511e-09 +quaty=-0.966014 +quatz=-6.62296e-10 +quatw=0.258488 +minYawClamp=0 +maxYawClamp=0 +minPitchClamp=-0.0286774 +maxPitchClamp=-0.0286774 + +[Camera15] +cameraID=15 +cameraType=DefaultCameraType +tranx=-4.39795 +trany=42.5178 +tranz=-3339.77 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera16] +cameraID=16 +cameraType=DefaultCameraType +tranx=0.798032 +trany=-32.4984 +tranz=-3730.9 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera17] +cameraID=17 +cameraType=DefaultCameraType +tranx=102.711 +trany=60.2426 +tranz=-3719.79 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera18] +cameraID=18 +cameraType=DefaultCameraType +tranx=-176.566 +trany=74.4529 +tranz=-3733.21 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera19] +cameraID=19 +cameraType=DefaultCameraType +tranx=-181.958 +trany=-49.3845 +tranz=-3655.41 +quatx=-1.67607e-06 +quaty=-0.9347 +quatz=6.37357e-07 +quatw=0.355437 +minYawClamp=-3.10165 +maxYawClamp=3.11354 +minPitchClamp=-1.51855 +maxPitchClamp=1.55488 + +[WinnerCamera] +cameraID=20 +cameraType=DefaultCameraType +tranx=1200 +trany=15 +tranz=-38 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + diff --git a/CONTENT/RP/MENU.BAT b/CONTENT/RP/MENU.BAT new file mode 100644 index 0000000..7d03620 --- /dev/null +++ b/CONTENT/RP/MENU.BAT @@ -0,0 +1,55 @@ +@echo off +rem if "%1"=="short" goto short +echo. +echo commands: +echo. +echo rpnet - network game (munga) - '&' to exit +echo rpspl - show last.spl (munga) - '&' to exit +echo rpgo [map [vtv]] - 1st person (munga) - '&' to exit +echo rplook [map [vtv]] - fixed view (munga) - '&' to exit +echo rpcam [map [vtv]] - relative view (munga) - '&' to exit +echo rpfly [map] - fly scene file (flyk) - Esc to exit +echo. +echo maps: +echo. +echo lyzlane - Lyz's Lane (default) +echo wise - Wiseguy's Wake +echo yip - Yip's Yahoorama +echo pain - Paingod's Passage +echo blade - Blade's Edge +echo otto - Berserker's Bahnzai +echo frstrm - Firestorm's Fury +echo burnt - Burnt Cookies +echo. +echo vtvs: +echo. +echo puck - Armadillo - micro class; laser +echo speck - Speck - bug class; no tools +echo bug - Bug - " " ; no tools +echo flea - Flea - " " ; demolition packs +echo chigger - Chigger - " " ; medium rivets +echo skeeter - Skeeter - " " ; light laser +echo roach - Roach - " " ; light rivets +echo dragon - Dragon - " " ; 3 light rivets +echo barge - Barge - mule class; no tools +echo mule - Mule - " " ; no tools +echo broccoli - Screaming Broccoli - " " ; no tools +echo vole - Vole - " " ; heavy laser +echo grunt - Grunt - " " ; heavy rivets +echo bttlbrg - Battle Barge - " " ; medium laser, demo packs +echo gator - Gator - " " ; light rivets, demo packs +echo burro - Burro - " " ; no tools +echo bull - Bull - bull class; no tools +echo tarntula - Tarantula - " " ; no tools +echo ripper - Ripper - " " ; demolition packs +echo spitter - Spitter - " " ; medium rivets +echo mantis - Mantis - " " ; medium lasers +echo roadblk - Roadblock - " " ; heavy lasers, demo packs +echo. +goto end +:short +echo {rpgo, rplook, rpcam} {wise, yip, pain, blade, otto, frstrm} +echo {puck, speck, bug, flea, chigger, skeeter, roach, barge, mule, +echo broccoli, vole, grunt, bttlbrg, gator, burro, bull, tarntula, +echo ripper, spitter, mantis, roadblk, dragon} +:end diff --git a/CONTENT/RP/MODELS/2LSRTHR.CTL b/CONTENT/RP/MODELS/2LSRTHR.CTL new file mode 100644 index 0000000..18153d3 --- /dev/null +++ b/CONTENT/RP/MODELS/2LSRTHR.CTL @@ -0,0 +1,100 @@ +[LaserGun1_BJT] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Mode=ModePreset1,ModePreset2,ModePreset3,ModePreset4,ModePreset5 +Subsystem=LaserGun1 +AttributeID=TriggerState + +[LaserGun2_BJT] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Mode=ModePreset1,ModePreset2,ModePreset3,ModePreset4,ModePreset5 +Subsystem=LaserGun2 +AttributeID=TriggerState + +[LaserGun1_BJP] +IOMapping=ButtonJoystickPinky +Type=DirectMapping +Mode=ModePreset6 +Subsystem=LaserGun1 +AttributeID=TriggerState + +[LaserGun2_BJP] +IOMapping=ButtonJoystickPinky +Type=DirectMapping +Mode=ModePreset6 +Subsystem=LaserGun2 +AttributeID=TriggerState + +//---------------------------------------------------------- +// Booster mappings +// +[Booster1_BJTH] +IOMapping=ButtonJoystickThumbHigh +Type=EventMapping +Mode=ModePreset1,ModePreset2,ModePreset3,ModePreset4,ModePreset5,ModePreset6 +Subsystem=Booster1 +MessageID=Activate + +[Booster2_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=EventMapping +Mode=ModePreset6 +Subsystem=Booster2 +MessageID=Activate + +//---------------------------------------------------------- +// Chute mappings +// +[Chute_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=EventMapping +Mode=ModePreset1,ModePreset2 +Subsystem=Chute +MessageID=Activate + +[Chute_BJP] +IOMapping=ButtonJoystickPinky +Type=EventMapping +Mode=ModePreset4 +Subsystem=Chute +MessageID=Activate + +//----------------------------------------------------------- +// Other joystick mappings +// +[LiftCut_BJP] +IOMapping=ButtonJoystickPinky +Type=DirectMapping +Mode=ModePreset2,ModePreset5 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[LiftCut_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=DirectMapping +Mode=ModePreset3,ModePreset4 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[LiftCut_BJT] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Mode=ModePreset6 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[Horn_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=EventMapping +Mode=ModePreset5 +Subsystem=ControlsMapper +MessageID=ActivateHorn + +//[PTT_BJTP] +//IOMapping=ButtonJoystickPinky +//Type=EventMapping +//Mode=ModePreset1,ModePreset3 +//Subsystem=ControlsMapper +//MessageID=ActivatePTT + diff --git a/CONTENT/RP/MODELS/2RIVTHR.CTL b/CONTENT/RP/MODELS/2RIVTHR.CTL new file mode 100644 index 0000000..48773c6 --- /dev/null +++ b/CONTENT/RP/MODELS/2RIVTHR.CTL @@ -0,0 +1,99 @@ +[RivetGun1_BJT] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Mode=ModePreset1,ModePreset2,ModePreset3,ModePreset4,ModePreset5 +Subsystem=RivetGun1 +AttributeID=TriggerState + +[RivetGun2_BJT] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Mode=ModePreset1,ModePreset2,ModePreset3,ModePreset4,ModePreset5 +Subsystem=RivetGun2 +AttributeID=TriggerState + +[RivetGun1_BJP] +IOMapping=ButtonJoystickPinky +Type=DirectMapping +Mode=ModePreset6 +Subsystem=RivetGun1 +AttributeID=TriggerState + +[RivetGun2_BJP] +IOMapping=ButtonJoystickPinky +Type=DirectMapping +Mode=ModePreset6 +Subsystem=RivetGun2 +AttributeID=TriggerState + +//---------------------------------------------------------- +// Booster mappings +// +[Booster1_BJTH] +IOMapping=ButtonJoystickThumbHigh +Type=EventMapping +Mode=ModePreset1,ModePreset2,ModePreset3,ModePreset4,ModePreset5,ModePreset6 +Subsystem=Booster1 +MessageID=Activate + +[Booster1_BJTP] +IOMapping=ButtonJoystickPinky +Type=EventMapping +Mode=ModePreset6 +Subsystem=Booster2 +MessageID=Activate + +//---------------------------------------------------------- +// Chute mappings +// +[Chute_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=EventMapping +Mode=ModePreset1,ModePreset2 +Subsystem=Chute +MessageID=Activate + +[Chute_BJP] +IOMapping=ButtonJoystickPinky +Type=EventMapping +Mode=ModePreset4 +Subsystem=Chute +MessageID=Activate + +//----------------------------------------------------------- +// Other joystick mappings +// +[LiftCut_BJP] +IOMapping=ButtonJoystickPinky +Type=DirectMapping +Mode=ModePreset2,ModePreset5 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[LiftCut_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=DirectMapping +Mode=ModePreset3,ModePreset4 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[LiftCut_BJT] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Mode=ModePreset6 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[Horn_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=EventMapping +Mode=ModePreset5 +Subsystem=ControlsMapper +MessageID=ActivateHorn + +//[PTT_BJTP] +//IOMapping=ButtonJoystickPinky +//Type=EventMapping +//Mode=ModePreset1,ModePreset3 +//Subsystem=ControlsMapper +//MessageID=ActivatePTT diff --git a/CONTENT/RP/MODELS/2X6L4.CTL b/CONTENT/RP/MODELS/2X6L4.CTL new file mode 100644 index 0000000..d2e7ef6 --- /dev/null +++ b/CONTENT/RP/MODELS/2X6L4.CTL @@ -0,0 +1,170 @@ +[Booster1_BALL1_1] +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Mode=ModeNonConfig +Subsystem=Booster1 +MessageID=Activate + +[Booster1_BALL1_2] +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Mode=ModeConfiguring +Subsystem=Booster1 +MessageID=ConfigureMappables + +[Booster1_BALL2_1] +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Mode=ModeNonConfig +Subsystem=Booster1 +MessageID=Activate + +[Booster1_BALL2_2] +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Mode=ModeConfiguring +Subsystem=Booster1 +MessageID=ConfigureMappables + +[Booster1_BJT] +IOMapping=ButtonJoystickTrigger +Type=EventMapping +Mode=ModePreset1,ModePreset2,ModePreset3,ModePreset4,ModePreset5 +Subsystem=Booster1 +MessageID=Activate + +[Booster1_BJTH] +IOMapping=ButtonJoystickThumbHigh +Type=EventMapping +Mode=ModePreset6 +Subsystem=Booster1 +MessageID=Activate + +//----------------------------------------------------------------------- +// Booster 2 mappings +// +[Booster2_BALL3_1] +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Mode=ModeNonConfig +Subsystem=Booster2 +MessageID=Activate + +[Booster2_BALL3_2] +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Mode=ModeConfiguring +Subsystem=Booster2 +MessageID=ConfigureMappables + +[Booster2_BALL4_1] +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Mode=ModeNonConfig +Subsystem=Booster2 +MessageID=Activate + +[Booster2_BALL4_2] +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Mode=ModeConfiguring +Subsystem=Booster2 +MessageID=ConfigureMappables + +[Booster2_BJTH] +IOMapping=ButtonJoystickThumbHigh +Type=EventMapping +Mode=ModePreset1,ModePreset2,ModePreset3,ModePreset4,ModePreset5 +Subsystem=Booster2 +MessageID=Activate + +[Booster2_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=EventMapping +Mode=ModePreset6 +Subsystem=Booster2 +MessageID=Activate + +//----------------------------------------------------------------------- +// Chute system mappings +// +[Chute_BALL5_1] +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Mode=ModeNonConfig +Subsystem=Chute +MessageID=Activate + +[Chute_BALL5_2] +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Mode=ModeConfiguring +Subsystem=Chute +MessageID=ConfigureMappables + +[Chute_BALL6_1] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Mode=ModeNonConfig +Subsystem=Chute +MessageID=Activate + +[Chute_BALL6_2] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Mode=ModeConfiguring +Subsystem=Chute +MessageID=ConfigureMappables + +[Chute_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=EventMapping +Mode=ModePreset1,ModePreset2 +Subsystem=Chute +MessageID=Activate + +[Chute_BJP] +IOMapping=ButtonJoystickPinky +Type=EventMapping +Mode=ModePreset4,ModePreset6 +Subsystem=Chute +MessageID=Activate + +//----------------------------------------------------------- +// Other joystick mappings +// +[LiftCut_BJP] +IOMapping=ButtonJoystickPinky +Type=DirectMapping +Mode=ModePreset2,ModePreset5 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[LiftCut_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=DirectMapping +Mode=ModePreset3,ModePreset4 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[LiftCut_BJT] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Mode=ModePreset6 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[Horn_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=EventMapping +Mode=ModePreset5 +Subsystem=ControlsMapper +MessageID=ActivateHorn + +[PTT_BJTP] +IOMapping=ButtonJoystickPinky +Type=EventMapping +Mode=ModePreset1,ModePreset3 +Subsystem=ControlsMapper +MessageID=ActivatePTT + diff --git a/CONTENT/RP/MODELS/2X6THR.CTL b/CONTENT/RP/MODELS/2X6THR.CTL new file mode 100644 index 0000000..8c0b92f --- /dev/null +++ b/CONTENT/RP/MODELS/2X6THR.CTL @@ -0,0 +1,83 @@ +[Booster1_BJT] +IOMapping=ButtonJoystickTrigger +Type=EventMapping +Mode=ModePreset1,ModePreset2,ModePreset3,ModePreset4,ModePreset5 +Subsystem=Booster1 +MessageID=Activate + +[Booster2_BJTH] +IOMapping=ButtonJoystickThumbHigh +Type=EventMapping +Mode=ModePreset1,ModePreset2,ModePreset3,ModePreset4,ModePreset5 +Subsystem=Booster2 +MessageID=Activate + +[Booster1_BJTH] +IOMapping=ButtonJoystickThumbHigh +Type=EventMapping +Mode=ModePreset6 +Subsystem=Booster1 +MessageID=Activate + +[Booster2_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=EventMapping +Mode=ModePreset6 +Subsystem=Booster2 +MessageID=Activate + +//---------------------------------------------------------- +// Chute mappings +// +[Chute_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=EventMapping +Mode=ModePreset1,ModePreset2 +Subsystem=Chute +MessageID=Activate + +[Chute_BJP] +IOMapping=ButtonJoystickPinky +Type=EventMapping +Mode=ModePreset4 +Subsystem=Chute +MessageID=Activate + +//----------------------------------------------------------- +// Other joystick mappings +// +[LiftCut_BJP] +IOMapping=ButtonJoystickPinky +Type=DirectMapping +Mode=ModePreset2,ModePreset5 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[LiftCut_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=DirectMapping +Mode=ModePreset3,ModePreset4 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[LiftCut_BJT] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Mode=ModePreset6 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[Horn_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=EventMapping +Mode=ModePreset5 +Subsystem=ControlsMapper +MessageID=ActivateHorn + +//[PTT_BJTP] +//IOMapping=ButtonJoystickPinky +//Type=EventMapping +//Mode=ModePreset1,ModePreset3 +//Subsystem=ControlsMapper +//MessageID=ActivatePTT + diff --git a/CONTENT/RP/MODELS/3RIVTHR.CTL b/CONTENT/RP/MODELS/3RIVTHR.CTL new file mode 100644 index 0000000..9cab834 --- /dev/null +++ b/CONTENT/RP/MODELS/3RIVTHR.CTL @@ -0,0 +1,127 @@ +[RivetGun1_BJT] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Mode=ModePreset1,ModePreset2,ModePreset3,ModePreset4,ModePreset5 +Subsystem=RivetGun1 +AttributeID=TriggerState + +[RivetGun2_BJT] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Mode=ModePreset1,ModePreset2,ModePreset3,ModePreset4,ModePreset5 +Subsystem=RivetGun2 +AttributeID=TriggerState + +//[RivetGun3_BJT] +//IOMapping=ButtonJoystickTrigger +//Type=DirectMapping +//Mode=ModePreset1,ModePreset2,ModePreset3,ModePreset4,ModePreset5 +//Subsystem=RivetGun3 +//AttributeID=TriggerState + +[Slaver3_BJT] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Mode=ModePreset1,ModePreset2,ModePreset3,ModePreset4,ModePreset5 +Subsystem=Slaver3 +AttributeID=TriggerState + +[RivetGun1_BJP] +IOMapping=ButtonJoystickPinky +Type=DirectMapping +Mode=ModePreset6 +Subsystem=RivetGun1 +AttributeID=TriggerState + +[RivetGun2_BJP] +IOMapping=ButtonJoystickPinky +Type=DirectMapping +Mode=ModePreset6 +Subsystem=RivetGun2 +AttributeID=TriggerState + +//[RivetGun3_BJP] +//IOMapping=ButtonJoystickPinky +//Type=DirectMapping +//Mode=ModePreset6 +//Subsystem=RivetGun3 +//AttributeID=TriggerState + +[Slaver3_BJP] +IOMapping=ButtonJoystickPinky +Type=DirectMapping +Mode=ModePreset6 +Subsystem=Slaver3 +AttributeID=TriggerState + +//---------------------------------------------------------- +// Booster mappings +// +[Booster1_BJTH] +IOMapping=ButtonJoystickThumbHigh +Type=EventMapping +Mode=ModePreset1,ModePreset2,ModePreset3,ModePreset4,ModePreset5,ModePreset6 +Subsystem=Booster1 +MessageID=Activate + +[Booster1_BJTP] +IOMapping=ButtonJoystickPinky +Type=EventMapping +Mode=ModePreset6 +Subsystem=Booster2 +MessageID=Activate + +//---------------------------------------------------------- +// Chute mappings +// +[Chute_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=EventMapping +Mode=ModePreset1,ModePreset2 +Subsystem=Chute +MessageID=Activate + +[Chute_BJP] +IOMapping=ButtonJoystickPinky +Type=EventMapping +Mode=ModePreset4 +Subsystem=Chute +MessageID=Activate + +//----------------------------------------------------------- +// Other joystick mappings +// +[LiftCut_BJP] +IOMapping=ButtonJoystickPinky +Type=DirectMapping +Mode=ModePreset2,ModePreset5 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[LiftCut_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=DirectMapping +Mode=ModePreset3,ModePreset4 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[LiftCut_BJT] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Mode=ModePreset6 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[Horn_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=EventMapping +Mode=ModePreset5 +Subsystem=ControlsMapper +MessageID=ActivateHorn + +//[PTT_BJTP] +//IOMapping=ButtonJoystickPinky +//Type=EventMapping +//Mode=ModePreset1,ModePreset3 +//Subsystem=ControlsMapper +//MessageID=ActivatePTT diff --git a/CONTENT/RP/MODELS/3X4L4.CTL b/CONTENT/RP/MODELS/3X4L4.CTL new file mode 100644 index 0000000..b26d7fa --- /dev/null +++ b/CONTENT/RP/MODELS/3X4L4.CTL @@ -0,0 +1,208 @@ +[Booster1_BALL1_1] +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Mode=ModeNonConfig +Subsystem=Booster1 +MessageID=Activate + +[Booster1_BALL1_2] +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Mode=ModeConfiguring +Subsystem=Booster1 +MessageID=ConfigureMappables + +[Booster1_BALL2_1] +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Mode=ModeNonConfig +Subsystem=Booster1 +MessageID=Activate + +[Booster1_BALL2_2] +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Mode=ModeConfiguring +Subsystem=Booster1 +MessageID=ConfigureMappables + +[Booster1_BJT] +IOMapping=ButtonJoystickTrigger +Type=EventMapping +Mode=ModePreset1,ModePreset2,ModePreset3,ModePreset4,ModePreset5 +Subsystem=Booster1 +MessageID=Activate + +[Booster1_BJTH] +IOMapping=ButtonJoystickThumbHigh +Type=EventMapping +Mode=ModePreset6 +Subsystem=Booster1 +MessageID=Activate + +//----------------------------------------------------------------------- +// Booster 2 mappings +// +[Booster2_BALL3_1] +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Mode=ModeNonConfig +Subsystem=Booster2 +MessageID=Activate + +[Booster2_BALL3_2] +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Mode=ModeConfiguring +Subsystem=Booster2 +MessageID=ConfigureMappables + +[Booster2_BALL4_1] +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Mode=ModeNonConfig +Subsystem=Booster2 +MessageID=Activate + +[Booster2_BALL4_2] +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Mode=ModeConfiguring +Subsystem=Booster2 +MessageID=ConfigureMappables + +[Booster2_BJTH] +IOMapping=ButtonJoystickThumbHigh +Type=EventMapping +Mode=ModePreset1,ModePreset2,ModePreset3,ModePreset4,ModePreset5 +Subsystem=Booster2 +MessageID=Activate + +[Booster2_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=EventMapping +Mode=ModePreset6 +Subsystem=Booster2 +MessageID=Activate + +//----------------------------------------------------------------------- +// Booster 3 mappings +// +[Booster3_BALL7_1] +IOMapping=ButtonAuxLowerLeft7 +Type=EventMapping +Mode=ModeNonConfig +Subsystem=Booster3 +MessageID=Activate + +[Booster3_BALL7_2] +IOMapping=ButtonAuxLowerLeft7 +Type=EventMapping +Mode=ModeConfiguring +Subsystem=Booster3 +MessageID=ConfigureMappables + +[Booster3_BALL8_1] +IOMapping=ButtonAuxLowerLeft8 +Type=EventMapping +Mode=ModeNonConfig +Subsystem=Booster3 +MessageID=Activate + +[Booster3_BALL8_2] +IOMapping=ButtonAuxLowerLeft8 +Type=EventMapping +Mode=ModeConfiguring +Subsystem=Booster3 +MessageID=ConfigureMappables + +[Booster3_BJTH] +IOMapping=ButtonJoystickThumbHigh +Type=EventMapping +Mode=ModePreset4 +Subsystem=Booster3 +MessageID=Activate + +//----------------------------------------------------------------------- +// Chute system mappings +// +[Chute_BALL5_1] +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Mode=ModeNonConfig +Subsystem=Chute +MessageID=Activate + +[Chute_BALL5_2] +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Mode=ModeConfiguring +Subsystem=Chute +MessageID=ConfigureMappables + +[Chute_BALL6_1] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Mode=ModeNonConfig +Subsystem=Chute +MessageID=Activate + +[Chute_BALL6_2] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Mode=ModeConfiguring +Subsystem=Chute +MessageID=ConfigureMappables + +[Chute_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=EventMapping +Mode=ModePreset1,ModePreset2 +Subsystem=Chute +MessageID=Activate + +[Chute_BJP] +IOMapping=ButtonJoystickPinky +Type=EventMapping +Mode=ModePreset4,ModePreset6 +Subsystem=Chute +MessageID=Activate + +//----------------------------------------------------------- +// Other joystick mappings +// +[LiftCut_BJP] +IOMapping=ButtonJoystickPinky +Type=DirectMapping +Mode=ModePreset2,ModePreset5 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[LiftCut_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=DirectMapping +Mode=ModePreset3,ModePreset4 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[LiftCut_BJT] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Mode=ModePreset6 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[Horn_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=EventMapping +Mode=ModePreset5 +Subsystem=ControlsMapper +MessageID=ActivateHorn + +[PTT_BJTP] +IOMapping=ButtonJoystickPinky +Type=EventMapping +Mode=ModePreset1,ModePreset3 +Subsystem=ControlsMapper +MessageID=ActivatePTT + diff --git a/CONTENT/RP/MODELS/3X4THR.CTL b/CONTENT/RP/MODELS/3X4THR.CTL new file mode 100644 index 0000000..dd6935a --- /dev/null +++ b/CONTENT/RP/MODELS/3X4THR.CTL @@ -0,0 +1,90 @@ +[Booster1_BJT] +IOMapping=ButtonJoystickTrigger +Type=EventMapping +Mode=ModePreset1,ModePreset2,ModePreset3,ModePreset4,ModePreset5 +Subsystem=Booster1 +MessageID=Activate + +[Booster2_BJTH] +IOMapping=ButtonJoystickThumbHigh +Type=EventMapping +Mode=ModePreset1,ModePreset2,ModePreset3,ModePreset4,ModePreset5 +Subsystem=Booster2 +MessageID=Activate + +[Booster3_BJTH] +IOMapping=ButtonJoystickThumbHigh +Type=EventMapping +Mode=ModePreset4 +Subsystem=Booster3 +MessageID=Activate + +[Booster1_BJTH] +IOMapping=ButtonJoystickThumbHigh +Type=EventMapping +Mode=ModePreset6 +Subsystem=Booster1 +MessageID=Activate + +[Booster2_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=EventMapping +Mode=ModePreset6 +Subsystem=Booster2 +MessageID=Activate + +//---------------------------------------------------------- +// Chute mappings +// +[Chute_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=EventMapping +Mode=ModePreset1,ModePreset2 +Subsystem=Chute +MessageID=Activate + +[Chute_BJP] +IOMapping=ButtonJoystickPinky +Type=EventMapping +Mode=ModePreset4 +Subsystem=Chute +MessageID=Activate + +//----------------------------------------------------------- +// Other joystick mappings +// +[LiftCut_BJP] +IOMapping=ButtonJoystickPinky +Type=DirectMapping +Mode=ModePreset2,ModePreset5 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[LiftCut_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=DirectMapping +Mode=ModePreset3,ModePreset4 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[LiftCut_BJT] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Mode=ModePreset6 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[Horn_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=EventMapping +Mode=ModePreset5 +Subsystem=ControlsMapper +MessageID=ActivateHorn + +[PTT_BJTP] +IOMapping=ButtonJoystickPinky +Type=EventMapping +Mode=ModePreset1,ModePreset3 +Subsystem=ControlsMapper +MessageID=ActivatePTT + diff --git a/CONTENT/RP/MODELS/4X4L4.CTL b/CONTENT/RP/MODELS/4X4L4.CTL new file mode 100644 index 0000000..091f1f1 --- /dev/null +++ b/CONTENT/RP/MODELS/4X4L4.CTL @@ -0,0 +1,246 @@ +[Booster1_BALL1_1] +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Mode=ModeNonConfig +Subsystem=Booster1 +MessageID=Activate + +[Booster1_BALL1_2] +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Mode=ModeConfiguring +Subsystem=Booster1 +MessageID=ConfigureMappables + +[Booster1_BALL2_1] +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Mode=ModeNonConfig +Subsystem=Booster1 +MessageID=Activate + +[Booster1_BALL2_2] +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Mode=ModeConfiguring +Subsystem=Booster1 +MessageID=ConfigureMappables + +[Booster1_BJT] +IOMapping=ButtonJoystickTrigger +Type=EventMapping +Mode=ModePreset1,ModePreset2,ModePreset3,ModePreset4,ModePreset5 +Subsystem=Booster1 +MessageID=Activate + +[Booster1_BJTH] +IOMapping=ButtonJoystickThumbHigh +Type=EventMapping +Mode=ModePreset6 +Subsystem=Booster1 +MessageID=Activate + +//----------------------------------------------------------------------- +// Booster 2 mappings +// +[Booster2_BALL3_1] +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Mode=ModeNonConfig +Subsystem=Booster2 +MessageID=Activate + +[Booster2_BALL3_2] +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Mode=ModeConfiguring +Subsystem=Booster2 +MessageID=ConfigureMappables + +[Booster2_BALL4_1] +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Mode=ModeNonConfig +Subsystem=Booster2 +MessageID=Activate + +[Booster2_BALL4_2] +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Mode=ModeConfiguring +Subsystem=Booster2 +MessageID=ConfigureMappables + +[Booster2_BJT] +IOMapping=ButtonJoystickTrigger +Type=EventMapping +Mode=ModePreset1,ModePreset2,ModePreset3,ModePreset4,ModePreset5 +Subsystem=Booster2 +MessageID=Activate + +[Booster2_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=EventMapping +Mode=ModePreset6 +Subsystem=Booster2 +MessageID=Activate + +//----------------------------------------------------------------------- +// Booster 3 mappings +// +[Booster3_BALL5_1] +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Mode=ModeNonConfig +Subsystem=Booster3 +MessageID=Activate + +[Booster3_BALL5_2] +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Mode=ModeConfiguring +Subsystem=Booster3 +MessageID=ConfigureMappables + +[Booster3_BALL6_1] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Mode=ModeNonConfig +Subsystem=Booster3 +MessageID=Activate + +[Booster3_BALL6_2] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Mode=ModeConfiguring +Subsystem=Booster3 +MessageID=ConfigureMappables + +[Booster3_BJTH] +IOMapping=ButtonJoystickThumbHigh +Type=EventMapping +Mode=ModePreset4 +Subsystem=Booster3 +MessageID=Activate + +//----------------------------------------------------------------------- +// Booster 4 mappings +// +[Booster4_BALL7_1] +IOMapping=ButtonAuxLowerLeft7 +Type=EventMapping +Mode=ModeNonConfig +Subsystem=Booster4 +MessageID=Activate + +[Booster4_BALL7_2] +IOMapping=ButtonAuxLowerLeft7 +Type=EventMapping +Mode=ModeConfiguring +Subsystem=Booster4 +MessageID=ConfigureMappables + +[Booster4_BALL8_1] +IOMapping=ButtonAuxLowerLeft8 +Type=EventMapping +Mode=ModeNonConfig +Subsystem=Booster4 +MessageID=Activate + +[Booster4_BALL8_2] +IOMapping=ButtonAuxLowerLeft8 +Type=EventMapping +Mode=ModeConfiguring +Subsystem=Booster4 +MessageID=ConfigureMappables + +[Booster4_BJTH] +IOMapping=ButtonJoystickThumbHigh +Type=EventMapping +Mode=ModePreset4 +Subsystem=Booster4 +MessageID=Activate + +//----------------------------------------------------------------------- +// Chute system mappings +// +[Chute_BALR1_1] +IOMapping=ButtonAuxLowerRight1 +Type=EventMapping +Mode=ModeNonConfig +Subsystem=Chute +MessageID=Activate + +[Chute_BALR1_2] +IOMapping=ButtonAuxLowerRight1 +Type=EventMapping +Mode=ModeConfiguring +Subsystem=Chute +MessageID=ConfigureMappables + +[Chute_BALR2_1] +IOMapping=ButtonAuxLowerRight2 +Type=EventMapping +Mode=ModeNonConfig +Subsystem=Chute +MessageID=Activate + +[Chute_BALR2_2] +IOMapping=ButtonAuxLowerRight2 +Type=EventMapping +Mode=ModeConfiguring +Subsystem=Chute +MessageID=ConfigureMappables + +[Chute_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=EventMapping +Mode=ModePreset1,ModePreset2 +Subsystem=Chute +MessageID=Activate + +[Chute_BJP] +IOMapping=ButtonJoystickPinky +Type=EventMapping +Mode=ModePreset4,ModePreset6 +Subsystem=Chute +MessageID=Activate + +//----------------------------------------------------------- +// Other joystick mappings +// +[LiftCut_BJP] +IOMapping=ButtonJoystickPinky +Type=DirectMapping +Mode=ModePreset2,ModePreset5 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[LiftCut_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=DirectMapping +Mode=ModePreset3,ModePreset4 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[LiftCut_BJT] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Mode=ModePreset6 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[Horn_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=EventMapping +Mode=ModePreset5 +Subsystem=ControlsMapper +MessageID=ActivateHorn + +[PTT_BJTP] +IOMapping=ButtonJoystickPinky +Type=EventMapping +Mode=ModePreset1,ModePreset3 +Subsystem=ControlsMapper +MessageID=ActivatePTT + diff --git a/CONTENT/RP/MODELS/4X4THR.CTL b/CONTENT/RP/MODELS/4X4THR.CTL new file mode 100644 index 0000000..cdfd746 --- /dev/null +++ b/CONTENT/RP/MODELS/4X4THR.CTL @@ -0,0 +1,97 @@ +[Booster1_BJT] +IOMapping=ButtonJoystickTrigger +Type=EventMapping +Mode=ModePreset1,ModePreset2,ModePreset3,ModePreset4,ModePreset5 +Subsystem=Booster1 +MessageID=Activate + +[Booster2_BJT] +IOMapping=ButtonJoystickTrigger +Type=EventMapping +Mode=ModePreset1,ModePreset2,ModePreset3,ModePreset4,ModePreset5 +Subsystem=Booster2 +MessageID=Activate + +[Booster3_BJTH] +IOMapping=ButtonJoystickThumbHigh +Type=EventMapping +Mode=ModePreset4 +Subsystem=Booster3 +MessageID=Activate + +[Booster4_BJTH] +IOMapping=ButtonJoystickThumbHigh +Type=EventMapping +Mode=ModePreset4 +Subsystem=Booster4 +MessageID=Activate + +[Booster1_BJTH] +IOMapping=ButtonJoystickThumbHigh +Type=EventMapping +Mode=ModePreset6 +Subsystem=Booster1 +MessageID=Activate + +[Booster2_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=EventMapping +Mode=ModePreset6 +Subsystem=Booster2 +MessageID=Activate + +//---------------------------------------------------------- +// Chute mappings +// +[Chute_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=EventMapping +Mode=ModePreset1,ModePreset2 +Subsystem=Chute +MessageID=Activate + +[Chute_BJP] +IOMapping=ButtonJoystickPinky +Type=EventMapping +Mode=ModePreset4 +Subsystem=Chute +MessageID=Activate + +//----------------------------------------------------------- +// Other joystick mappings +// +[LiftCut_BJP] +IOMapping=ButtonJoystickPinky +Type=DirectMapping +Mode=ModePreset2,ModePreset5 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[LiftCut_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=DirectMapping +Mode=ModePreset3,ModePreset4 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[LiftCut_BJT] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Mode=ModePreset6 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[Horn_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=EventMapping +Mode=ModePreset5 +Subsystem=ControlsMapper +MessageID=ActivateHorn + +[PTT_BJTP] +IOMapping=ButtonJoystickPinky +Type=EventMapping +Mode=ModePreset1,ModePreset3 +Subsystem=ControlsMapper +MessageID=ActivatePTT + diff --git a/CONTENT/RP/MODELS/BAN.DMG b/CONTENT/RP/MODELS/BAN.DMG new file mode 100644 index 0000000..152f9ed --- /dev/null +++ b/CONTENT/RP/MODELS/BAN.DMG @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/BAN.MOD b/CONTENT/RP/MODELS/BAN.MOD new file mode 100644 index 0000000..152f9ed --- /dev/null +++ b/CONTENT/RP/MODELS/BAN.MOD @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/BARGE.BAK b/CONTENT/RP/MODELS/BARGE.BAK new file mode 100644 index 0000000..38a73a2 --- /dev/null +++ b/CONTENT/RP/MODELS/BARGE.BAK @@ -0,0 +1,47 @@ +[video] +skeleton=mun.skl +skeletons=mus.skl +skeletont=mut.skl +skeletono=mun.skl +skeletona=mua.skl +skeletonb=mub.skl +skeletonc=muc.skl +skeletond=mua.skl + +[collision] +name=mu_cv.sld + +[gauge] +image=mu_ga.gim + +[audio] +external=vtvext.scp +internal=barge.scp + +[gamedata] +class=VTVClassID +MoverMass=1900.0 +MomentOfInertia=5.8125 10.125 5.8125 +PositiveLinearDragCoefficients=0.14 0.3 0.08 +NegativeLinearDragCoefficients=0.14 0.3 0.059 +AngularDragCoefficients=1.5 0.5 1.5 +FrictionCoefficient=0.4 +ElasticityCoefficient=0.2 +MinimumBounceSpeed=0.2 +MaxAcceleration=6.18 +MaxThrusterRotationRate=4.7 +GroundEffectDomainSquared=0.11111111 +GroundEffectRange=5.0 +AngularSpringFactor=12.6 +MaxYawVelocity=47.5 +MaxAngularAcceleration=0.0 4.7 0.0 +BankFactor=1.0 +DeathSpeed=275.0 +DeathScoreLoss=250.0 +MaxImpactSpeed=315.0 +Subsystems=barge.sub +DamageZones=barge.dmg + +[ControlMappings] +Thrustmaster=2x6thr.ctl +L4=2x6l4.ctl diff --git a/CONTENT/RP/MODELS/BARGE.DMG b/CONTENT/RP/MODELS/BARGE.DMG new file mode 100644 index 0000000..7ef5977 --- /dev/null +++ b/CONTENT/RP/MODELS/BARGE.DMG @@ -0,0 +1,2 @@ +[dz_vtv] +WeaponDamagePoints=250 \ No newline at end of file diff --git a/CONTENT/RP/MODELS/BARGE.MOD b/CONTENT/RP/MODELS/BARGE.MOD new file mode 100644 index 0000000..3a71cae --- /dev/null +++ b/CONTENT/RP/MODELS/BARGE.MOD @@ -0,0 +1,47 @@ +[video] +skeleton=mun.skl +skeletons=mus.skl +skeletont=mut.skl +skeletono=mun.skl +skeletona=mua.skl +skeletonb=mub.skl +skeletonc=muc.skl +skeletond=mua.skl + +[collision] +name=mu_cv.sld + +[gauge] +image=mu_ga.gim + +[audio] +external=vtvext.scp +internal=barge.scp + +[gamedata] +class=VTVClassID +MoverMass=1900.0 +MomentOfInertia=5.8125 10.125 5.8125 +PositiveLinearDragCoefficients=0.14 0.3 0.08 +NegativeLinearDragCoefficients=0.14 0.3 0.059 +AngularDragCoefficients=1.5 0.5 1.5 +FrictionCoefficient=0.4 +ElasticityCoefficient=0.2 +MinimumBounceSpeed=0.2 +MaxAcceleration=6.18 +MaxThrusterRotationRate=4.7 +GroundEffectDomainSquared=0.11111111 +GroundEffectRange=5.0 +AngularSpringFactor=12.6 +MaxYawVelocity=47.5 +MaxAngularAcceleration=0.0 4.7 0.0 +BankFactor=1.0 +DeathSpeed=275.0 +DeathScoreLoss=250.0 +MaxImpactSpeed=290.0 +Subsystems=barge.sub +DamageZones=barge.dmg + +[ControlMappings] +Thrustmaster=2x6thr.ctl +L4=2x6l4.ctl diff --git a/CONTENT/RP/MODELS/BARGE.SUB b/CONTENT/RP/MODELS/BARGE.SUB new file mode 100644 index 0000000..c003992 --- /dev/null +++ b/CONTENT/RP/MODELS/BARGE.SUB @@ -0,0 +1,21 @@ +[Booster1] +Type=BoosterClassID +BoosterCount=6 +BurnTime=8 +BoosterAcceleration=8 + +[Booster2] +Type=BoosterClassID +BoosterCount=6 +BurnTime=8 +BoosterAcceleration=8 + +[Chute] +Type=ChuteClassID +ChuteCount=3 +ReloadTime=3 +DragForce=0.14 +MinVelocity=20 +MaxRotation=60 +DeployTime=0.2 +SegmentPageName=sitechute diff --git a/CONTENT/RP/MODELS/BARGEL4.CTL b/CONTENT/RP/MODELS/BARGEL4.CTL new file mode 100644 index 0000000..152f9ed --- /dev/null +++ b/CONTENT/RP/MODELS/BARGEL4.CTL @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/BARGETHR.CTL b/CONTENT/RP/MODELS/BARGETHR.CTL new file mode 100644 index 0000000..152f9ed --- /dev/null +++ b/CONTENT/RP/MODELS/BARGETHR.CTL @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/BAS.DMG b/CONTENT/RP/MODELS/BAS.DMG new file mode 100644 index 0000000..152f9ed --- /dev/null +++ b/CONTENT/RP/MODELS/BAS.DMG @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/BAS.MOD b/CONTENT/RP/MODELS/BAS.MOD new file mode 100644 index 0000000..152f9ed --- /dev/null +++ b/CONTENT/RP/MODELS/BAS.MOD @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/BAS.SUB b/CONTENT/RP/MODELS/BAS.SUB new file mode 100644 index 0000000..152f9ed --- /dev/null +++ b/CONTENT/RP/MODELS/BAS.SUB @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/BASL4.CTL b/CONTENT/RP/MODELS/BASL4.CTL new file mode 100644 index 0000000..152f9ed --- /dev/null +++ b/CONTENT/RP/MODELS/BASL4.CTL @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/BASTHR.CTL b/CONTENT/RP/MODELS/BASTHR.CTL new file mode 100644 index 0000000..152f9ed --- /dev/null +++ b/CONTENT/RP/MODELS/BASTHR.CTL @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/BAT.DMG b/CONTENT/RP/MODELS/BAT.DMG new file mode 100644 index 0000000..152f9ed --- /dev/null +++ b/CONTENT/RP/MODELS/BAT.DMG @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/BAT.MOD b/CONTENT/RP/MODELS/BAT.MOD new file mode 100644 index 0000000..152f9ed --- /dev/null +++ b/CONTENT/RP/MODELS/BAT.MOD @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/BLKSPK.DMG b/CONTENT/RP/MODELS/BLKSPK.DMG new file mode 100644 index 0000000..1086c20 --- /dev/null +++ b/CONTENT/RP/MODELS/BLKSPK.DMG @@ -0,0 +1,2 @@ +[dz_vtv] +WeaponDamagePoints=150.0 \ No newline at end of file diff --git a/CONTENT/RP/MODELS/BLKSPK.MOD b/CONTENT/RP/MODELS/BLKSPK.MOD new file mode 100644 index 0000000..4329c44 --- /dev/null +++ b/CONTENT/RP/MODELS/BLKSPK.MOD @@ -0,0 +1,47 @@ +[video] +skeleton=sun.skl +skeletons=sus.skl +skeletont=sut.skl +skeletono=sun.skl +skeletona=sua.skl +skeletonb=sub.skl +skeletonc=suc.skl +skeletond=sua.skl + +[collision] +name=su_cv.sld + +[gauge] +image=sp_ga.gim + +[audio] +external=vtvext.scp +internal=blkspk.scp + +[gamedata] +class=VTVClassID +MoverMass=600.0 +MomentOfInertia=2.02 3.38 2.02 +PositiveLinearDragCoefficients=0.14 0.3 0.08 +NegativeLinearDragCoefficients=0.14 0.3 0.058 +AngularDragCoefficients=1.5 0.5 1.5 +FrictionCoefficient=0.4 +ElasticityCoefficient=0.2 +MinimumBounceSpeed=0.2 +MaxAcceleration=6.4 +MaxThrusterRotationRate=4.7 +GroundEffectDomainSquared=0.3 +GroundEffectRange=17.0 +MaxYawVelocity=60 +MaxAngularAcceleration=0.0 4.7 0.0 +AngularSpringFactor=17.0 +BankFactor=1.5 +DeathSpeed=275.0 +DeathScoreLoss=250.0 +MaxImpactSpeed=115.0 +Subsystems=blkspk.sub +DamageZones=blkspk.dmg + +[ControlMappings] +Thrustmaster=3x4thr.ctl +L4=3x4l4.ctl diff --git a/CONTENT/RP/MODELS/BLKSPK.SUB b/CONTENT/RP/MODELS/BLKSPK.SUB new file mode 100644 index 0000000..c32a75c --- /dev/null +++ b/CONTENT/RP/MODELS/BLKSPK.SUB @@ -0,0 +1,27 @@ +[Booster1] +Type=BoosterClassID +BoosterCount=8 +BurnTime=8 +BoosterAcceleration=13 + +[Booster2] +Type=BoosterClassID +BoosterCount=8 +BurnTime=8 +BoosterAcceleration=13 + +[Booster3] +Type=BoosterClassID +BoosterCount=8 +BurnTime=8 +BoosterAcceleration=13 + +[Chute] +Type=ChuteClassID +ChuteCount=3 +ReloadTime=3 +DragForce=0.14 +MinVelocity=20 +MaxRotation=60 +DeployTime=0.2 +SegmentPageName=sitechute \ No newline at end of file diff --git a/CONTENT/RP/MODELS/BLKTRN.DMG b/CONTENT/RP/MODELS/BLKTRN.DMG new file mode 100644 index 0000000..db4919f --- /dev/null +++ b/CONTENT/RP/MODELS/BLKTRN.DMG @@ -0,0 +1,2 @@ +[dz_vtv] +WeaponDamagePoints=300 \ No newline at end of file diff --git a/CONTENT/RP/MODELS/BLKTRN.MOD b/CONTENT/RP/MODELS/BLKTRN.MOD new file mode 100644 index 0000000..24a8aa6 --- /dev/null +++ b/CONTENT/RP/MODELS/BLKTRN.MOD @@ -0,0 +1,48 @@ +[video] +skeleton=bun.skl +skeletons=bus.skl +skeletont=but.skl +skeletono=bun.skl +skeletona=bua.skl +skeletonb=bub.skl +skeletonc=buc.skl +skeletond=bua.skl + +[collision] +name=bu_cv.sld + +[gauge] +image=bu_ga.gim + +[audio] +external=vtvext.scp +internal=blktrn.scp + +[gamedata] +class=VTVClassID +MoverMass=3500.0 +MomentOfInertia=5.143 9.245 5.143 +PositiveLinearDragCoefficients=0.14 0.3 0.08 +NegativeLinearDragCoefficients=0.14 0.3 0.063 +AngularDragCoefficients=1.5 0.5 1.5 +FrictionCoefficient=0.4 +ElasticityCoefficient=0.2 +MinimumBounceSpeed=0.2 +MaxAcceleration=5.7 +MaxThrusterRotationRate=4.7 +GroundEffectDomainSquared=0.05 +GroundEffectRange=4.0 +MaxYawVelocity=45 +MaxAngularAcceleration=0.0 4.7 0.0 +AngularSpringFactor=10.0 +BankFactor=0.8 +DeathSpeed=275.0 +DeathScoreLoss=250.0 +MaxImpactSpeed=425.0 +Subsystems=blktrn.sub +DamageZones=blktrn.dmg + +[ControlMappings] +Thrustmaster=4x4thr.ctl +L4=4x4l4.ctl + diff --git a/CONTENT/RP/MODELS/BLKTRN.SUB b/CONTENT/RP/MODELS/BLKTRN.SUB new file mode 100644 index 0000000..82a09e5 --- /dev/null +++ b/CONTENT/RP/MODELS/BLKTRN.SUB @@ -0,0 +1,33 @@ +[Booster1] +Type=BoosterClassID +BoosterCount=4 +BurnTime=8 +BoosterAcceleration=7 + +[Booster2] +Type=BoosterClassID +BoosterCount=4 +BurnTime=8 +BoosterAcceleration=7 + +[Booster3] +Type=BoosterClassID +BoosterCount=4 +BurnTime=8 +BoosterAcceleration=7 + +[Booster4] +Type=BoosterClassID +BoosterCount=4 +BurnTime=8 +BoosterAcceleration=7 + +[Chute] +Type=ChuteClassID +ChuteCount=3 +ReloadTime=3 +DragForce=0.14 +MinVelocity=20 +MaxRotation=60 +DeployTime=3.0 +SegmentPageName=sitechute \ No newline at end of file diff --git a/CONTENT/RP/MODELS/BN1.MOD b/CONTENT/RP/MODELS/BN1.MOD new file mode 100644 index 0000000..5f8eb5c --- /dev/null +++ b/CONTENT/RP/MODELS/BN1.MOD @@ -0,0 +1,9 @@ +[video] +object=bn1.bgf bn1l.bgf + +[collision] +name=bn1_cv.sld + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/RP/MODELS/BP1.MOD b/CONTENT/RP/MODELS/BP1.MOD new file mode 100644 index 0000000..fbfa061 --- /dev/null +++ b/CONTENT/RP/MODELS/BP1.MOD @@ -0,0 +1,11 @@ +[video] +object=bp1.bgf + +[collision] +name=bp1_cv.sld + +[gauge] +image=bp1_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/RP/MODELS/BR1.MOD b/CONTENT/RP/MODELS/BR1.MOD new file mode 100644 index 0000000..968f17c --- /dev/null +++ b/CONTENT/RP/MODELS/BR1.MOD @@ -0,0 +1,12 @@ +[video] +object=br1.bgf br1l.bgf + +[collision] +name=br1_cv.sld + +[gauge] +image=br1_ga.gim + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/RP/MODELS/BR1A.MOD b/CONTENT/RP/MODELS/BR1A.MOD new file mode 100644 index 0000000..a98d44f --- /dev/null +++ b/CONTENT/RP/MODELS/BR1A.MOD @@ -0,0 +1,12 @@ +[video] +object=br1.bgf br1l.bgf + +[collision] +name=br1a_cv.sld + +[gauge] +image=br1_ga.gim + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/RP/MODELS/BR1B.MOD b/CONTENT/RP/MODELS/BR1B.MOD new file mode 100644 index 0000000..c10f1ec --- /dev/null +++ b/CONTENT/RP/MODELS/BR1B.MOD @@ -0,0 +1,6 @@ +[collision] +name=br1b_cv.sld + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/RP/MODELS/BR2.MOD b/CONTENT/RP/MODELS/BR2.MOD new file mode 100644 index 0000000..bd544e3 --- /dev/null +++ b/CONTENT/RP/MODELS/BR2.MOD @@ -0,0 +1,12 @@ +[video] +object=br2.bgf br2l.bgf + +[collision] +name=br2_cv.sld + +[gauge] +image=br2_ga.gim + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/RP/MODELS/BR3.MOD b/CONTENT/RP/MODELS/BR3.MOD new file mode 100644 index 0000000..f1ad203 --- /dev/null +++ b/CONTENT/RP/MODELS/BR3.MOD @@ -0,0 +1,12 @@ +[video] +object=br3.bgf + +[collision] +name=br3_cv.sld + +[gauge] +image=br3_ga.gim + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/RP/MODELS/BR4.MOD b/CONTENT/RP/MODELS/BR4.MOD new file mode 100644 index 0000000..3082f1e --- /dev/null +++ b/CONTENT/RP/MODELS/BR4.MOD @@ -0,0 +1,12 @@ +[video] +object=br4.bgf + +[collision] +name=br4_cv.sld + +[gauge] +image=br2_ga.gim + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/RP/MODELS/BRE1.MOD b/CONTENT/RP/MODELS/BRE1.MOD new file mode 100644 index 0000000..4075093 --- /dev/null +++ b/CONTENT/RP/MODELS/BRE1.MOD @@ -0,0 +1,9 @@ +[collision] +name=bre1_cv.sld + +[gauge] +image=bre1_ga.gim + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/RP/MODELS/BREW.MOD b/CONTENT/RP/MODELS/BREW.MOD new file mode 100644 index 0000000..40cc534 --- /dev/null +++ b/CONTENT/RP/MODELS/BREW.MOD @@ -0,0 +1,6 @@ +[collision] +name=brew_cv.sld + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/RP/MODELS/BROCCOLI.BAK b/CONTENT/RP/MODELS/BROCCOLI.BAK new file mode 100644 index 0000000..eef582d --- /dev/null +++ b/CONTENT/RP/MODELS/BROCCOLI.BAK @@ -0,0 +1,27 @@ +[Booster1] +Type=BoosterClassID +BoosterCount=4 +BurnTime=8 +BoosterAcceleration=8 + +[Booster2] +Type=BoosterClassID +BoosterCount=4 +BurnTime=8 +BoosterAcceleration=8 + +[Booster3] +Type=BoosterClassID +BoosterCount=4 +BurnTime=8 +BoosterAcceleration=8 + +[Chute] +Type=ChuteClassID +ChuteCount=3 +ReloadTime=3 +DragForce=0.14 +MinVelocity=20 +MaxRotation=60 +DeployTime=0.2 +SegmentPageName=sitechute \ No newline at end of file diff --git a/CONTENT/RP/MODELS/BROCCOLI.DMG b/CONTENT/RP/MODELS/BROCCOLI.DMG new file mode 100644 index 0000000..7ef5977 --- /dev/null +++ b/CONTENT/RP/MODELS/BROCCOLI.DMG @@ -0,0 +1,2 @@ +[dz_vtv] +WeaponDamagePoints=250 \ No newline at end of file diff --git a/CONTENT/RP/MODELS/BROCCOLI.MOD b/CONTENT/RP/MODELS/BROCCOLI.MOD new file mode 100644 index 0000000..c590be9 --- /dev/null +++ b/CONTENT/RP/MODELS/BROCCOLI.MOD @@ -0,0 +1,47 @@ +[video] +skeleton=mun.skl +skeletons=mus.skl +skeletont=mut.skl +skeletono=mun.skl +skeletona=mua.skl +skeletonb=mub.skl +skeletonc=muc.skl +skeletond=mua.skl + +[collision] +name=mu_cv.sld + +[gauge] +image=mu_ga.gim + +[audio] +external=vtvext.scp +internal=broccoli.scp + +[gamedata] +class=VTVClassID +MoverMass=2250.0 +MomentOfInertia=5.8125 10.125 5.8125 +PositiveLinearDragCoefficients=0.14 0.3 0.08 +NegativeLinearDragCoefficients=0.14 0.3 0.066 +AngularDragCoefficients=1.5 0.5 1.5 +FrictionCoefficient=0.4 +ElasticityCoefficient=0.2 +MinimumBounceSpeed=0.2 +MaxAcceleration=6.26 +MaxThrusterRotationRate=4.7 +GroundEffectDomainSquared=0.11111111 +GroundEffectRange=5.0 +AngularSpringFactor=12.6 +MaxYawVelocity=50.0 +MaxAngularAcceleration=0.0 4.7 0.0 +BankFactor=1.0 +DeathSpeed=275.0 +DeathScoreLoss=250.0 +MaxImpactSpeed=330.0 +Subsystems=broccoli.sub +DamageZones=broccoli.dmg + +[ControlMappings] +Thrustmaster=3x4thr.ctl +L4=3x4l4.ctl diff --git a/CONTENT/RP/MODELS/BROCCOLI.SUB b/CONTENT/RP/MODELS/BROCCOLI.SUB new file mode 100644 index 0000000..7bdfb89 --- /dev/null +++ b/CONTENT/RP/MODELS/BROCCOLI.SUB @@ -0,0 +1,27 @@ +[Booster1] +Type=BoosterClassID +BoosterCount=4 +BurnTime=8 +BoosterAcceleration=9 + +[Booster2] +Type=BoosterClassID +BoosterCount=4 +BurnTime=8 +BoosterAcceleration=9 + +[Booster3] +Type=BoosterClassID +BoosterCount=4 +BurnTime=8 +BoosterAcceleration=9 + +[Chute] +Type=ChuteClassID +ChuteCount=3 +ReloadTime=3 +DragForce=0.14 +MinVelocity=20 +MaxRotation=60 +DeployTime=0.2 +SegmentPageName=sitechute \ No newline at end of file diff --git a/CONTENT/RP/MODELS/BTTLBRG.BAK b/CONTENT/RP/MODELS/BTTLBRG.BAK new file mode 100644 index 0000000..fd943c3 --- /dev/null +++ b/CONTENT/RP/MODELS/BTTLBRG.BAK @@ -0,0 +1,48 @@ +[video] +skeleton=man.skl +skeletons=mas.skl +skeletont=mat.skl +skeletono=man.skl +skeletona=maa.skl +skeletonb=mab.skl +skeletonc=mac.skl +skeletond=maa.skl + +[collision] +name=mu_cv.sld + +[gauge] +image=mu_ga.gim + +[audio] +external=btlext.scp +internal=bttlbrg.scp + +[gamedata] +class=VTVClassID +MoverMass=1900.0 +MomentOfInertia=5.8125 10.125 5.8125 +PositiveLinearDragCoefficients=0.14 0.3 0.08 +NegativeLinearDragCoefficients=0.14 0.3 0.064 +AngularDragCoefficients=1.5 0.5 1.5 +FrictionCoefficient=0.4 +ElasticityCoefficient=0.2 +MinimumBounceSpeed=0.2 +MaxAcceleration=5.76 +MaxThrusterRotationRate=4.7 +GroundEffectDomainSquared=0.11111111 +GroundEffectRange=5.0 +AngularSpringFactor=12.6 +MaxYawVelocity=42.5 +MaxAngularAcceleration=0.0 4.7 0.0 +BankFactor=1.0 +DeathSpeed=275.0 +DeathScoreLoss=250.0 +MaxImpactSpeed=300.0 +Subsystems=bttlbrg.sub +DamageZones=bttlbrg.dmg +ReticleY=0.09 + +[ControlMappings] +Thrustmaster=bttlthr.ctl +L4=bttll4.ctl diff --git a/CONTENT/RP/MODELS/BTTLBRG.DMG b/CONTENT/RP/MODELS/BTTLBRG.DMG new file mode 100644 index 0000000..7ef5977 --- /dev/null +++ b/CONTENT/RP/MODELS/BTTLBRG.DMG @@ -0,0 +1,2 @@ +[dz_vtv] +WeaponDamagePoints=250 \ No newline at end of file diff --git a/CONTENT/RP/MODELS/BTTLBRG.MOD b/CONTENT/RP/MODELS/BTTLBRG.MOD new file mode 100644 index 0000000..b91a41b --- /dev/null +++ b/CONTENT/RP/MODELS/BTTLBRG.MOD @@ -0,0 +1,48 @@ +[video] +skeleton=man.skl +skeletons=mas.skl +skeletont=mat.skl +skeletono=man.skl +skeletona=maa.skl +skeletonb=mab.skl +skeletonc=mac.skl +skeletond=maa.skl + +[collision] +name=mu_cv.sld + +[gauge] +image=mu_ga.gim + +[audio] +external=btlext.scp +internal=bttlbrg.scp + +[gamedata] +class=VTVClassID +MoverMass=1900.0 +MomentOfInertia=5.8125 10.125 5.8125 +PositiveLinearDragCoefficients=0.14 0.3 0.08 +NegativeLinearDragCoefficients=0.14 0.3 0.064 +AngularDragCoefficients=1.5 0.5 1.5 +FrictionCoefficient=0.4 +ElasticityCoefficient=0.2 +MinimumBounceSpeed=0.2 +MaxAcceleration=5.76 +MaxThrusterRotationRate=4.7 +GroundEffectDomainSquared=0.11111111 +GroundEffectRange=5.0 +AngularSpringFactor=12.6 +MaxYawVelocity=42.5 +MaxAngularAcceleration=0.0 4.7 0.0 +BankFactor=1.0 +DeathSpeed=275.0 +DeathScoreLoss=250.0 +MaxImpactSpeed=275.0 +Subsystems=bttlbrg.sub +DamageZones=bttlbrg.dmg +ReticleY=0.09 + +[ControlMappings] +Thrustmaster=bttlthr.ctl +L4=bttll4.ctl diff --git a/CONTENT/RP/MODELS/BTTLBRG.SUB b/CONTENT/RP/MODELS/BTTLBRG.SUB new file mode 100644 index 0000000..fb24db2 --- /dev/null +++ b/CONTENT/RP/MODELS/BTTLBRG.SUB @@ -0,0 +1,44 @@ +[Booster1] +Type=BoosterClassID +BoosterCount=6 +BurnTime=8 +BoosterAcceleration=8 + +[Booster2] +Type=BoosterClassID +BoosterCount=6 +BurnTime=8 +BoosterAcceleration=8 + +[Chute] +Type=ChuteClassID +ChuteCount=3 +ReloadTime=3 +DragForce=0.14 +MinVelocity=20 +MaxRotation=60 +DeployTime=0.2 +SegmentPageName=sitechute + +[LaserGun] +Type=LaserDrillClassID +FullChargeDuration=4.0 +LaserDuration=0.10 +PulseDuration=0.25 +ChargePerSecond=0.10 +DrainPerSecond=0.25 +LaserLength=150.0 +ExplosionModelFile=laserexp +AmmoModelFile=hrivet +DamageAmount=100.0 +SegmentPageName=sitefrontcenterport +RearSiteName=sitebackcenterport + +[DemopackDropper] +Type=DemolitionPackDropperClassID +SubsystemFlags=DontReplicateFlag +AmmoCount=5.0 +LoadTime=5.0 +AmmoModelFile=demopack +MuzzleVelocity=0.0 -2.0 0.0 +SegmentPageName=sitemineport \ No newline at end of file diff --git a/CONTENT/RP/MODELS/BTTLTHR.CTL b/CONTENT/RP/MODELS/BTTLTHR.CTL new file mode 100644 index 0000000..079b8b9 --- /dev/null +++ b/CONTENT/RP/MODELS/BTTLTHR.CTL @@ -0,0 +1,89 @@ +[Booster1_BJTH] +IOMapping=ButtonJoystickThumbHigh +Type=EventMapping +Mode=ModePreset1,ModePreset2,ModePreset3,ModePreset4,ModePreset5,ModePreset6 +Subsystem=Booster1 +MessageID=Activate + +[Booster2_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=EventMapping +Mode=ModePreset6 +Subsystem=Booster2 +MessageID=Activate + +//----------------------------------------------------------------------- +// Chute system mappings +// +[Chute_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=EventMapping +Mode=ModePreset1,ModePreset2 +Subsystem=Chute +MessageID=Activate + +[Chute_BJP] +IOMapping=ButtonJoystickPinky +Type=EventMapping +Mode=ModePreset4 +Subsystem=Chute +MessageID=Activate + +//----------------------------------------------------------------------- +// Laser gun mappings +// +[LaserGun_BJT] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Mode=ModePreset1,ModePreset2,ModePreset3,ModePreset4,ModePreset5 +Subsystem=LaserGun +AttributeID=TriggerState + +[LaserGun_BJP] +IOMapping=ButtonJoystickPinky +Type=DirectMapping +Mode=ModePreset6 +Subsystem=LaserGun +AttributeID=TriggerState + +//----------------------------------------------------------------------- +// demolition pack mappings +// +[DemoPack_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=DirectMapping +Mode=ModePreset5 +Subsystem=DemopackDropper +AttributeID=TriggerState + +//----------------------------------------------------------- +// Other joystick mappings +// +[LiftCut_BJP] +IOMapping=ButtonJoystickPinky +Type=DirectMapping +Mode=ModePreset2,ModePreset5 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[LiftCut_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=DirectMapping +Mode=ModePreset3,ModePreset4 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[LiftCut_BJT] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Mode=ModePreset6 +Subsystem=ControlsMapper +AttributeID=LiftCut + +//[PTT_BJTP] +//IOMapping=ButtonJoystickPinky +//Type=EventMapping +//Mode=ModePreset1,ModePreset3 +//Subsystem=ControlsMapper +//MessageID=ActivatePTT + diff --git a/CONTENT/RP/MODELS/BUG.BAK b/CONTENT/RP/MODELS/BUG.BAK new file mode 100644 index 0000000..83cb2d8 --- /dev/null +++ b/CONTENT/RP/MODELS/BUG.BAK @@ -0,0 +1,47 @@ +[video] +skeleton=sun.skl +skeletons=sus.skl +skeletont=sut.skl +skeletono=sun.skl +skeletona=sua.skl +skeletonb=sub.skl +skeletonc=suc.skl +skeletond=sua.skl + +[collision] +name=su_cv.sld + +[gauge] +image=sp_ga.gim + +[audio] +external=vtvext.scp +internal=bug.scp + +[gamedata] +class=VTVClassID +MoverMass=1000.0 +MomentOfInertia=2.02 3.38 2.02 +PositiveLinearDragCoefficients=0.14 0.3 0.08 +NegativeLinearDragCoefficients=0.14 0.3 0.061 +AngularDragCoefficients=1.5 0.5 1.5 +FrictionCoefficient=0.4 +ElasticityCoefficient=0.2 +MinimumBounceSpeed=0.2 +MaxAcceleration=6.3 +MaxThrusterRotationRate=4.7 +GroundEffectDomainSquared=0.3 +GroundEffectRange=17.0 +MaxYawVelocity=55 +MaxAngularAcceleration=0.0 4.7 0.0 +AngularSpringFactor=17.0 +BankFactor=1.5 +DeathSpeed=275.0 +DeathScoreLoss=250.0 +MaxImpactSpeed=200.0 +Subsystems=bug.sub +DamageZones=bug.dmg + +[ControlMappings] +Thrustmaster=2x6thr.ctl +L4=2x6l4.ctl diff --git a/CONTENT/RP/MODELS/BUG.DMG b/CONTENT/RP/MODELS/BUG.DMG new file mode 100644 index 0000000..d4c52dd --- /dev/null +++ b/CONTENT/RP/MODELS/BUG.DMG @@ -0,0 +1,2 @@ +[dz_vtv] +WeaponDamagePoints=200.0 \ No newline at end of file diff --git a/CONTENT/RP/MODELS/BUG.MOD b/CONTENT/RP/MODELS/BUG.MOD new file mode 100644 index 0000000..1e837ea --- /dev/null +++ b/CONTENT/RP/MODELS/BUG.MOD @@ -0,0 +1,47 @@ +[video] +skeleton=sun.skl +skeletons=sus.skl +skeletont=sut.skl +skeletono=sun.skl +skeletona=sua.skl +skeletonb=sub.skl +skeletonc=suc.skl +skeletond=sua.skl + +[collision] +name=su_cv.sld + +[gauge] +image=sp_ga.gim + +[audio] +external=vtvext.scp +internal=bug.scp + +[gamedata] +class=VTVClassID +MoverMass=1000.0 +MomentOfInertia=2.02 3.38 2.02 +PositiveLinearDragCoefficients=0.14 0.3 0.08 +NegativeLinearDragCoefficients=0.14 0.3 0.061 +AngularDragCoefficients=1.5 0.5 1.5 +FrictionCoefficient=0.4 +ElasticityCoefficient=0.2 +MinimumBounceSpeed=0.2 +MaxAcceleration=6.3 +MaxThrusterRotationRate=4.7 +GroundEffectDomainSquared=0.3 +GroundEffectRange=17.0 +MaxYawVelocity=55 +MaxAngularAcceleration=0.0 4.7 0.0 +AngularSpringFactor=17.0 +BankFactor=1.5 +DeathSpeed=275.0 +DeathScoreLoss=250.0 +MaxImpactSpeed=175.0 +Subsystems=bug.sub +DamageZones=bug.dmg + +[ControlMappings] +Thrustmaster=2x6thr.ctl +L4=2x6l4.ctl diff --git a/CONTENT/RP/MODELS/BUG.SUB b/CONTENT/RP/MODELS/BUG.SUB new file mode 100644 index 0000000..58b3668 --- /dev/null +++ b/CONTENT/RP/MODELS/BUG.SUB @@ -0,0 +1,21 @@ +[Booster1] +Type=BoosterClassID +BoosterCount=6 +BurnTime=8 +BoosterAcceleration=13 + +[Booster2] +Type=BoosterClassID +BoosterCount=6 +BurnTime=8 +BoosterAcceleration=13 + +[Chute] +Type=ChuteClassID +ChuteCount=3 +ReloadTime=3 +DragForce=0.14 +MinVelocity=20 +MaxRotation=60 +DeployTime=0.2 +SegmentPageName=sitechute \ No newline at end of file diff --git a/CONTENT/RP/MODELS/BULL.BAK b/CONTENT/RP/MODELS/BULL.BAK new file mode 100644 index 0000000..2bd19dc --- /dev/null +++ b/CONTENT/RP/MODELS/BULL.BAK @@ -0,0 +1,48 @@ +[video] +skeleton=bun.skl +skeletons=bus.skl +skeletont=but.skl +skeletono=bun.skl +skeletona=bua.skl +skeletonb=bub.skl +skeletonc=buc.skl +skeletond=bua.skl + +[collision] +name=bu_cv.sld + +[gauge] +image=bu_ga.gim + +[audio] +external=vtvext.scp +internal=bull.scp + +[gamedata] +class=VTVClassID +MoverMass=3000.0 +MomentOfInertia=5.143 9.245 5.143 +PositiveLinearDragCoefficients=0.14 0.3 0.08 +NegativeLinearDragCoefficients=0.14 0.3 0.06 +AngularDragCoefficients=1.5 0.5 1.5 +FrictionCoefficient=0.4 +ElasticityCoefficient=0.2 +MinimumBounceSpeed=0.2 +MaxAcceleration=5.5 +MaxThrusterRotationRate=4.7 +GroundEffectDomainSquared=0.05 +GroundEffectRange=5.0 +MaxYawVelocity=40 +MaxAngularAcceleration=0.0 4.7 0.0 +AngularSpringFactor=10.0 +BankFactor=0.8 +DeathSpeed=275.0 +DeathScoreLoss=250.0 +MaxImpactSpeed=385.0 +Subsystems=bull.sub +DamageZones=bull.dmg + +[ControlMappings] +Thrustmaster=2x6thr.ctl +L4=2x6l4.ctl + diff --git a/CONTENT/RP/MODELS/BULL.DMG b/CONTENT/RP/MODELS/BULL.DMG new file mode 100644 index 0000000..db4919f --- /dev/null +++ b/CONTENT/RP/MODELS/BULL.DMG @@ -0,0 +1,2 @@ +[dz_vtv] +WeaponDamagePoints=300 \ No newline at end of file diff --git a/CONTENT/RP/MODELS/BULL.MOD b/CONTENT/RP/MODELS/BULL.MOD new file mode 100644 index 0000000..2bd19dc --- /dev/null +++ b/CONTENT/RP/MODELS/BULL.MOD @@ -0,0 +1,48 @@ +[video] +skeleton=bun.skl +skeletons=bus.skl +skeletont=but.skl +skeletono=bun.skl +skeletona=bua.skl +skeletonb=bub.skl +skeletonc=buc.skl +skeletond=bua.skl + +[collision] +name=bu_cv.sld + +[gauge] +image=bu_ga.gim + +[audio] +external=vtvext.scp +internal=bull.scp + +[gamedata] +class=VTVClassID +MoverMass=3000.0 +MomentOfInertia=5.143 9.245 5.143 +PositiveLinearDragCoefficients=0.14 0.3 0.08 +NegativeLinearDragCoefficients=0.14 0.3 0.06 +AngularDragCoefficients=1.5 0.5 1.5 +FrictionCoefficient=0.4 +ElasticityCoefficient=0.2 +MinimumBounceSpeed=0.2 +MaxAcceleration=5.5 +MaxThrusterRotationRate=4.7 +GroundEffectDomainSquared=0.05 +GroundEffectRange=5.0 +MaxYawVelocity=40 +MaxAngularAcceleration=0.0 4.7 0.0 +AngularSpringFactor=10.0 +BankFactor=0.8 +DeathSpeed=275.0 +DeathScoreLoss=250.0 +MaxImpactSpeed=385.0 +Subsystems=bull.sub +DamageZones=bull.dmg + +[ControlMappings] +Thrustmaster=2x6thr.ctl +L4=2x6l4.ctl + diff --git a/CONTENT/RP/MODELS/BULL.SUB b/CONTENT/RP/MODELS/BULL.SUB new file mode 100644 index 0000000..8a6f4fd --- /dev/null +++ b/CONTENT/RP/MODELS/BULL.SUB @@ -0,0 +1,21 @@ +[Booster1] +Type=BoosterClassID +BoosterCount=6 +BurnTime=8 +BoosterAcceleration=7 + +[Booster2] +Type=BoosterClassID +BoosterCount=6 +BurnTime=8 +BoosterAcceleration=7 + +[Chute] +Type=ChuteClassID +ChuteCount=3 +ReloadTime=3 +DragForce=0.14 +MinVelocity=20 +MaxRotation=60 +DeployTime=0.2 +SegmentPageName=sitechute \ No newline at end of file diff --git a/CONTENT/RP/MODELS/BULLET.MOD b/CONTENT/RP/MODELS/BULLET.MOD new file mode 100644 index 0000000..b19c8a9 --- /dev/null +++ b/CONTENT/RP/MODELS/BULLET.MOD @@ -0,0 +1,15 @@ +[video] +object=bullet.bgf + +[gamedata] +class=RivetClassID +DamageLevel=10.0 +MoverMass=2.0 +MomentOfInertia=1.75 3.125 1.75 +PositiveLinearDragCoefficients=0.14 0.4 0.07 +NegativeLinearDragCoefficients=0.14 0.2 0.08 +AngularDragCoefficients=0.3 0.5 0.3 +FrictionCoefficient=0.0 +ElasticityCoefficient=0.0 +MinimumBounceSpeed=0.0 +ExplosionModelFile=explode diff --git a/CONTENT/RP/MODELS/BUN.DMG b/CONTENT/RP/MODELS/BUN.DMG new file mode 100644 index 0000000..152f9ed --- /dev/null +++ b/CONTENT/RP/MODELS/BUN.DMG @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/BUN.MOD b/CONTENT/RP/MODELS/BUN.MOD new file mode 100644 index 0000000..152f9ed --- /dev/null +++ b/CONTENT/RP/MODELS/BUN.MOD @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/BURRO.BAK b/CONTENT/RP/MODELS/BURRO.BAK new file mode 100644 index 0000000..6ea9a7d --- /dev/null +++ b/CONTENT/RP/MODELS/BURRO.BAK @@ -0,0 +1,47 @@ +[video] +skeleton=mun.skl +skeletons=mus.skl +skeletont=mut.skl +skeletono=mun.skl +skeletona=mua.skl +skeletonb=mub.skl +skeletonc=muc.skl +skeletond=mua.skl + +[collision] +name=mu_cv.sld + +[gauge] +image=mu_ga.gim + +[audio] +external=vtvext.scp +internal=burro.scp + +[gamedata] +class=VTVClassID +MoverMass=2250.0 +MomentOfInertia=5.8125 10.125 5.8125 +PositiveLinearDragCoefficients=0.14 0.3 0.08 +NegativeLinearDragCoefficients=0.14 0.3 0.0636 +AngularDragCoefficients=1.5 0.5 1.5 +FrictionCoefficient=0.4 +ElasticityCoefficient=0.2 +MinimumBounceSpeed=0.2 +MaxAcceleration=6.26 +MaxThrusterRotationRate=4.7 +GroundEffectDomainSquared=0.11111111 +GroundEffectRange=5.0 +AngularSpringFactor=12.6 +MaxYawVelocity=50.0 +MaxAngularAcceleration=0.0 4.7 0.0 +BankFactor=1.0 +DeathSpeed=275.0 +DeathScoreLoss=250.0 +MaxImpactSpeed=355.0 +Subsystems=burro.sub +DamageZones=burro.dmg + +[ControlMappings] +Thrustmaster=burrothr.ctl +L4=burrol4.ctl diff --git a/CONTENT/RP/MODELS/BURRO.DMG b/CONTENT/RP/MODELS/BURRO.DMG new file mode 100644 index 0000000..7ef5977 --- /dev/null +++ b/CONTENT/RP/MODELS/BURRO.DMG @@ -0,0 +1,2 @@ +[dz_vtv] +WeaponDamagePoints=250 \ No newline at end of file diff --git a/CONTENT/RP/MODELS/BURRO.MOD b/CONTENT/RP/MODELS/BURRO.MOD new file mode 100644 index 0000000..4ea04cd --- /dev/null +++ b/CONTENT/RP/MODELS/BURRO.MOD @@ -0,0 +1,47 @@ +[video] +skeleton=mun.skl +skeletons=mus.skl +skeletont=mut.skl +skeletono=mun.skl +skeletona=mua.skl +skeletonb=mub.skl +skeletonc=muc.skl +skeletond=mua.skl + +[collision] +name=mu_cv.sld + +[gauge] +image=mu_ga.gim + +[audio] +external=vtvext.scp +internal=burro.scp + +[gamedata] +class=VTVClassID +MoverMass=2250.0 +MomentOfInertia=5.8125 10.125 5.8125 +PositiveLinearDragCoefficients=0.14 0.3 0.08 +NegativeLinearDragCoefficients=0.14 0.3 0.0636 +AngularDragCoefficients=1.5 0.5 1.5 +FrictionCoefficient=0.4 +ElasticityCoefficient=0.2 +MinimumBounceSpeed=0.2 +MaxAcceleration=6.26 +MaxThrusterRotationRate=4.7 +GroundEffectDomainSquared=0.11111111 +GroundEffectRange=5.0 +AngularSpringFactor=12.6 +MaxYawVelocity=50.0 +MaxAngularAcceleration=0.0 4.7 0.0 +BankFactor=1.0 +DeathSpeed=275.0 +DeathScoreLoss=250.0 +MaxImpactSpeed=330.0 +Subsystems=burro.sub +DamageZones=burro.dmg + +[ControlMappings] +Thrustmaster=burrothr.ctl +L4=burrol4.ctl diff --git a/CONTENT/RP/MODELS/BURRO.SUB b/CONTENT/RP/MODELS/BURRO.SUB new file mode 100644 index 0000000..487fcc6 --- /dev/null +++ b/CONTENT/RP/MODELS/BURRO.SUB @@ -0,0 +1,16 @@ +[Booster1] +Type=BoosterClassID +BoosterCount=12 +BurnTime=8 +BoosterAcceleration=8 + +[Chute] +Type=ChuteClassID +ChuteCount=3 +ReloadTime=3 +DragForce=0.14 +MinVelocity=20 +MaxRotation=60 +DeployTime=0.2 +SegmentPageName=sitechute + diff --git a/CONTENT/RP/MODELS/BURROL4.CTL b/CONTENT/RP/MODELS/BURROL4.CTL new file mode 100644 index 0000000..16b6e17 --- /dev/null +++ b/CONTENT/RP/MODELS/BURROL4.CTL @@ -0,0 +1,137 @@ +[Booster1_BALL1_1] +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Mode=ModeNonConfig +Subsystem=Booster1 +MessageID=Activate + +[Booster1_BALL1_2] +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Mode=ModeConfiguring +Subsystem=Booster1 +MessageID=ConfigureMappables + +[Booster1_BALL2_1] +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Mode=ModeNonConfig +Subsystem=Booster1 +MessageID=Activate + +[Booster1_BALL2_2] +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Mode=ModeConfiguring +Subsystem=Booster1 +MessageID=ConfigureMappables + +[Booster1_BJTH] +IOMapping=ButtonJoystickThumbHigh +Type=EventMapping +Mode=ModePreset1,ModePreset2,ModePreset3,ModePreset4,ModePreset5,ModePreset6 +Subsystem=Booster1 +MessageID=Activate + +[Booster1_BJT] +IOMapping=ButtonJoystickTrigger +Type=EventMapping +Mode=ModePreset1,ModePreset2,ModePreset3,ModePreset4,ModePreset5 +Subsystem=Booster1 +MessageID=Activate + +[Booster1_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=EventMapping +Mode=ModePreset6 +Subsystem=Booster1 +MessageID=Activate + +//----------------------------------------------------------------------- +// Chute system mappings +// +[Chute_BALL5_1] +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Mode=ModeNonConfig +Subsystem=Chute +MessageID=Activate + +[Chute_BALL5_2] +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Mode=ModeConfiguring +Subsystem=Chute +MessageID=ConfigureMappables + +[Chute_BALL6_1] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Mode=ModeNonConfig +Subsystem=Chute +MessageID=Activate + +[Chute_BALL6_2] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Mode=ModeConfiguring +Subsystem=Chute +MessageID=ConfigureMappables + +[Chute_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=EventMapping +Mode=ModePreset1,ModePreset2 +Subsystem=Chute +MessageID=Activate + +[Chute_BJP] +IOMapping=ButtonJoystickPinky +Type=EventMapping +Mode=ModePreset4,ModePreset6 +Subsystem=Chute +MessageID=Activate + +/----------------------------------------------------------- +// Other joystick mappings +// +[LiftCut_BJP] +IOMapping=ButtonJoystickPinky +Type=DirectMapping +Mode=ModePreset2,ModePreset5 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[LiftCut_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=DirectMapping +Mode=ModePreset3,ModePreset4 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[LiftCut_BJT] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Mode=ModePreset6 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[Horn_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=EventMapping +Mode=ModePreset5 +Subsystem=ControlsMapper +MessageID=ActivateHorn + +//-------------------------------------------------------------- +// re-install this once we really have an intercom! +// (until we do, it shows a mapping on the configuration +// mapper that doesn't belong to anything the pilot can control) +//-------------------------------------------------------------- +//[PTT_BJTP] +//IOMapping=ButtonJoystickPinky +//Type=EventMapping +//Mode=ModePreset1,ModePreset3 +//Subsystem=ControlsMapper +//MessageID=ActivatePTT + diff --git a/CONTENT/RP/MODELS/BURROTHR.CTL b/CONTENT/RP/MODELS/BURROTHR.CTL new file mode 100644 index 0000000..29aad30 --- /dev/null +++ b/CONTENT/RP/MODELS/BURROTHR.CTL @@ -0,0 +1,76 @@ +[Booster1_BJTH] +IOMapping=ButtonJoystickThumbHigh +Type=EventMapping +Mode=ModePreset1,ModePreset2,ModePreset3,ModePreset4,ModePreset5,ModePreset6 +Subsystem=Booster1 +MessageID=Activate + +[Booster1_BJT] +IOMapping=ButtonJoystickTrigger +Type=EventMapping +Mode=ModePreset1,ModePreset2,ModePreset3,ModePreset4,ModePreset5 +Subsystem=Booster1 +MessageID=Activate + +[Booster1_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=EventMapping +Mode=ModePreset6 +Subsystem=Booster1 +MessageID=Activate + +//----------------------------------------------------------------------- +// Chute system mappings +// +[Chute_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=EventMapping +Mode=ModePreset1,ModePreset2 +Subsystem=Chute +MessageID=Activate + +[Chute_BJP] +IOMapping=ButtonJoystickPinky +Type=EventMapping +Mode=ModePreset4,ModePreset6 +Subsystem=Chute +MessageID=Activate + +//----------------------------------------------------------- +// Other joystick mappings +// +[LiftCut_BJP] +IOMapping=ButtonJoystickPinky +Type=DirectMapping +Mode=ModePreset2,ModePreset5 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[LiftCut_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=DirectMapping +Mode=ModePreset3,ModePreset4 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[LiftCut_BJT] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Mode=ModePreset6 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[Horn_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=EventMapping +Mode=ModePreset5 +Subsystem=ControlsMapper +MessageID=ActivateHorn + +[PTT_BJTP] +IOMapping=ButtonJoystickPinky +Type=EventMapping +Mode=ModePreset1,ModePreset3 +Subsystem=ControlsMapper +MessageID=ActivatePTT + diff --git a/CONTENT/RP/MODELS/BUS.DMG b/CONTENT/RP/MODELS/BUS.DMG new file mode 100644 index 0000000..152f9ed --- /dev/null +++ b/CONTENT/RP/MODELS/BUS.DMG @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/BUS.MOD b/CONTENT/RP/MODELS/BUS.MOD new file mode 100644 index 0000000..152f9ed --- /dev/null +++ b/CONTENT/RP/MODELS/BUS.MOD @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/BUS.SUB b/CONTENT/RP/MODELS/BUS.SUB new file mode 100644 index 0000000..152f9ed --- /dev/null +++ b/CONTENT/RP/MODELS/BUS.SUB @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/BUSL4.CTL b/CONTENT/RP/MODELS/BUSL4.CTL new file mode 100644 index 0000000..152f9ed --- /dev/null +++ b/CONTENT/RP/MODELS/BUSL4.CTL @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/BUSTHR.CTL b/CONTENT/RP/MODELS/BUSTHR.CTL new file mode 100644 index 0000000..152f9ed --- /dev/null +++ b/CONTENT/RP/MODELS/BUSTHR.CTL @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/BUT.DMG b/CONTENT/RP/MODELS/BUT.DMG new file mode 100644 index 0000000..152f9ed --- /dev/null +++ b/CONTENT/RP/MODELS/BUT.DMG @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/BUT.MOD b/CONTENT/RP/MODELS/BUT.MOD new file mode 100644 index 0000000..152f9ed --- /dev/null +++ b/CONTENT/RP/MODELS/BUT.MOD @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/C8E.MOD b/CONTENT/RP/MODELS/C8E.MOD new file mode 100644 index 0000000..5c6bfb0 --- /dev/null +++ b/CONTENT/RP/MODELS/C8E.MOD @@ -0,0 +1,8 @@ +[video] +object=c8e.bgf c8el.bgf + +[collision] +name=c8e_cv.sld + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/RP/MODELS/CAMERA.MOD b/CONTENT/RP/MODELS/CAMERA.MOD new file mode 100644 index 0000000..5ebc77b --- /dev/null +++ b/CONTENT/RP/MODELS/CAMERA.MOD @@ -0,0 +1,17 @@ +[gamedata] +class=CameraShipClassID +MoverMass=150.0 +MomentOfInertia=1.75 3.125 1.75 +PositiveLinearDragCoefficients=0.14 0.4 0.07 +NegativeLinearDragCoefficients=0.14 0.2 0.08 +AngularDragCoefficients=9.0 9.0 9.0 +FrictionCoefficient=0.0 +ElasticityCoefficient=30.0 +MinimumBounceSpeed=0. +PreShowSpeed=10.0 +CameraMode=WinnerCam +MinCutTime=30.0 +MinOnBoardCutTime=5.0 +CaptureRadius=275.0 +OnBoardLinearOffset=0.0 2.0 -2.0 +OnBoardAngularOffset=0.0 0.0 0.0 \ No newline at end of file diff --git a/CONTENT/RP/MODELS/CAMPOS.MOD b/CONTENT/RP/MODELS/CAMPOS.MOD new file mode 100644 index 0000000..4735a00 --- /dev/null +++ b/CONTENT/RP/MODELS/CAMPOS.MOD @@ -0,0 +1,9 @@ +[video] +object=campos.bgf + +[gauge] +image=dpack_ga.gim + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/RP/MODELS/CAP.MOD b/CONTENT/RP/MODELS/CAP.MOD new file mode 100644 index 0000000..0dc237a --- /dev/null +++ b/CONTENT/RP/MODELS/CAP.MOD @@ -0,0 +1,6 @@ +[collision] +name=cap_cv.sld + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/RP/MODELS/CC1.MOD b/CONTENT/RP/MODELS/CC1.MOD new file mode 100644 index 0000000..2ef97a2 --- /dev/null +++ b/CONTENT/RP/MODELS/CC1.MOD @@ -0,0 +1,12 @@ +[video] +object=cc1.bgf + +[collision] +name=cc1_cv.sld + +[gauge] +image=cc1_ga.gim + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/RP/MODELS/CHIGGER.BAK b/CONTENT/RP/MODELS/CHIGGER.BAK new file mode 100644 index 0000000..8b22d8d --- /dev/null +++ b/CONTENT/RP/MODELS/CHIGGER.BAK @@ -0,0 +1,47 @@ +[video] +skeleton=san.skl +skeletons=sas.skl +skeletont=sat.skl +skeletono=san.skl +skeletona=saa.skl +skeletonb=sab.skl +skeletonc=sac.skl +skeletond=saa.skl + +[collision] +name=sa_cv.sld + +[gauge] +image=sp_ga.gim + +[audio] +external=vtvext.scp +internal=chigger.scp + +[gamedata] +class=VTVClassID +MoverMass=800.0 +MomentOfInertia=1.89 3.125 1.89 +PositiveLinearDragCoefficients=0.14 0.3 0.085 +NegativeLinearDragCoefficients=0.14 0.3 0.064 +AngularDragCoefficients=1.5 0.5 1.5 +FrictionCoefficient=0.4 +ElasticityCoefficient=0.2 +MinimumBounceSpeed=0.2 +MaxAcceleration=6.3 +MaxThrusterRotationRate=4.7 +GroundEffectDomainSquared=0.3 +GroundEffectRange=17.0 +MaxYawVelocity=50.0 +MaxAngularAcceleration=0.0 4.7 0.0 +AngularSpringFactor=17.0 +BankFactor=1.5 +DeathSpeed=275.0 +DeathScoreLoss=250.0 +MaxImpactSpeed=165.0 +Subsystems=chigger.sub +DamageZones=chigger.dmg + +[ControlMappings] +Thrustmaster=rivetthr.ctl +L4=rivetl4.ctl diff --git a/CONTENT/RP/MODELS/CHIGGER.DMG b/CONTENT/RP/MODELS/CHIGGER.DMG new file mode 100644 index 0000000..30a63ee --- /dev/null +++ b/CONTENT/RP/MODELS/CHIGGER.DMG @@ -0,0 +1,2 @@ +[dz_vtv] +WeaponDamagePoints=200 \ No newline at end of file diff --git a/CONTENT/RP/MODELS/CHIGGER.MOD b/CONTENT/RP/MODELS/CHIGGER.MOD new file mode 100644 index 0000000..905e70f --- /dev/null +++ b/CONTENT/RP/MODELS/CHIGGER.MOD @@ -0,0 +1,47 @@ +[video] +skeleton=san.skl +skeletons=sas.skl +skeletont=sat.skl +skeletono=san.skl +skeletona=saa.skl +skeletonb=sab.skl +skeletonc=sac.skl +skeletond=saa.skl + +[collision] +name=sa_cv.sld + +[gauge] +image=sp_ga.gim + +[audio] +external=vtvext.scp +internal=chigger.scp + +[gamedata] +class=VTVClassID +MoverMass=800.0 +MomentOfInertia=1.89 3.125 1.89 +PositiveLinearDragCoefficients=0.14 0.3 0.085 +NegativeLinearDragCoefficients=0.14 0.3 0.064 +AngularDragCoefficients=1.5 0.5 1.5 +FrictionCoefficient=0.4 +ElasticityCoefficient=0.2 +MinimumBounceSpeed=0.2 +MaxAcceleration=6.3 +MaxThrusterRotationRate=4.7 +GroundEffectDomainSquared=0.3 +GroundEffectRange=17.0 +MaxYawVelocity=50.0 +MaxAngularAcceleration=0.0 4.7 0.0 +AngularSpringFactor=17.0 +BankFactor=1.5 +DeathSpeed=275.0 +DeathScoreLoss=250.0 +MaxImpactSpeed=140.0 +Subsystems=chigger.sub +DamageZones=chigger.dmg + +[ControlMappings] +Thrustmaster=rivetthr.ctl +L4=rivetl4.ctl diff --git a/CONTENT/RP/MODELS/CHIGGER.SUB b/CONTENT/RP/MODELS/CHIGGER.SUB new file mode 100644 index 0000000..e71c061 --- /dev/null +++ b/CONTENT/RP/MODELS/CHIGGER.SUB @@ -0,0 +1,31 @@ +[Booster1] +Type=BoosterClassID +BoosterCount=6 +BurnTime=8 +BoosterAcceleration=13 + +[Booster2] +Type=BoosterClassID +BoosterCount=6 +BurnTime=8 +BoosterAcceleration=13 + +[Chute] +Type=ChuteClassID +ChuteCount=3 +ReloadTime=3 +DragForce=0.14 +MinVelocity=20 +MaxRotation=60 +DeployTime=0.2 +SegmentPageName=sitechute + +[RivetGun] +Type=RivetGunClassID +SubsystemFlags=DontReplicateFlag +AmmoCount=300 +LoadTime=0.5 +AmmoModelFile=mrivet +MuzzleVelocity=0.0 6.5 350.0 +SegmentPageName=sitefrontrightport +RearSiteName=sitebackrightport diff --git a/CONTENT/RP/MODELS/CL1.MOD b/CONTENT/RP/MODELS/CL1.MOD new file mode 100644 index 0000000..b781e70 --- /dev/null +++ b/CONTENT/RP/MODELS/CL1.MOD @@ -0,0 +1,12 @@ +[video] +object=cl1.bgf + +[collision] +name=cl1_cv.sld + +[gauge] +image=cl1_ga.gim + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/RP/MODELS/CL2.MOD b/CONTENT/RP/MODELS/CL2.MOD new file mode 100644 index 0000000..f071bb5 --- /dev/null +++ b/CONTENT/RP/MODELS/CL2.MOD @@ -0,0 +1,10 @@ +[video] +object=cl2.bgf + +[collision] +name=cl2_cv.sld + +[gamedata] +class=UnscalableTerrainClassID + + diff --git a/CONTENT/RP/MODELS/CL3.MOD b/CONTENT/RP/MODELS/CL3.MOD new file mode 100644 index 0000000..5108e40 --- /dev/null +++ b/CONTENT/RP/MODELS/CL3.MOD @@ -0,0 +1,9 @@ +[video] +object=cl3.bgf + +[collision] +name=cl3_cv.sld + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/RP/MODELS/CLD.MOD b/CONTENT/RP/MODELS/CLD.MOD new file mode 100644 index 0000000..ccec2fe --- /dev/null +++ b/CONTENT/RP/MODELS/CLD.MOD @@ -0,0 +1,6 @@ +[video] +object=cld.bgf + +[gamedata] +class=UnscalableTerrainClassID + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/CN1.MOD b/CONTENT/RP/MODELS/CN1.MOD new file mode 100644 index 0000000..d7e32f2 --- /dev/null +++ b/CONTENT/RP/MODELS/CN1.MOD @@ -0,0 +1,11 @@ +[video] +object=cn1.bgf cp1.bgf + +[collision] +name=cn1_cv.sld + +[gauge] +image=cn1_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/RP/MODELS/CN2.MOD b/CONTENT/RP/MODELS/CN2.MOD new file mode 100644 index 0000000..89f02af --- /dev/null +++ b/CONTENT/RP/MODELS/CN2.MOD @@ -0,0 +1,11 @@ +[video] +object=cn2.bgf cn2l.bgf + +[collision] +name=cn2_cv.sld + +[gauge] +image=cn2_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/RP/MODELS/CN3.MOD b/CONTENT/RP/MODELS/CN3.MOD new file mode 100644 index 0000000..2ff2438 --- /dev/null +++ b/CONTENT/RP/MODELS/CN3.MOD @@ -0,0 +1,12 @@ +[video] +object=cn3.bgf + +[collision] +name=cn3_cv.sld + +[gauge] +image=cn3_ga.gim + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/RP/MODELS/CN3U.MOD b/CONTENT/RP/MODELS/CN3U.MOD new file mode 100644 index 0000000..61042c8 --- /dev/null +++ b/CONTENT/RP/MODELS/CN3U.MOD @@ -0,0 +1,12 @@ +[video] +object=cn3u.bgf + +[collision] +name=cn3u_cv.sld + +[gauge] +image=cn3u_ga.gim + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/RP/MODELS/CN4.MOD b/CONTENT/RP/MODELS/CN4.MOD new file mode 100644 index 0000000..c10f426 --- /dev/null +++ b/CONTENT/RP/MODELS/CN4.MOD @@ -0,0 +1,12 @@ +[video] +object=cn4.bgf + +[collision] +name=cn4_cv.sld + +[gauge] +image=cn4_ga.gim + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/RP/MODELS/CN5.MOD b/CONTENT/RP/MODELS/CN5.MOD new file mode 100644 index 0000000..bc777d2 --- /dev/null +++ b/CONTENT/RP/MODELS/CN5.MOD @@ -0,0 +1,11 @@ +[video] +object=cn5.bgf + +[collision] +name=cn1_cv.sld + +[gauge] +image=cn5_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/RP/MODELS/CN5N.MOD b/CONTENT/RP/MODELS/CN5N.MOD new file mode 100644 index 0000000..9fd4b6d --- /dev/null +++ b/CONTENT/RP/MODELS/CN5N.MOD @@ -0,0 +1,8 @@ +[video] +object=cn5u.bgf + +[gauge] +image=cn5u_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/RP/MODELS/CN5U.MOD b/CONTENT/RP/MODELS/CN5U.MOD new file mode 100644 index 0000000..411dc18 --- /dev/null +++ b/CONTENT/RP/MODELS/CN5U.MOD @@ -0,0 +1,11 @@ +[video] +object=cn5u.bgf + +[collision] +name=cn5u_cv.sld + +[gauge] +image=cn5u_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/RP/MODELS/CN6.MOD b/CONTENT/RP/MODELS/CN6.MOD new file mode 100644 index 0000000..c414bf5 --- /dev/null +++ b/CONTENT/RP/MODELS/CN6.MOD @@ -0,0 +1,11 @@ +[video] +object=cn6.bgf + +[collision] +name=cn6_cv.sld + +[gauge] +image=cn6_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/RP/MODELS/CN7.MOD b/CONTENT/RP/MODELS/CN7.MOD new file mode 100644 index 0000000..78d1a1f --- /dev/null +++ b/CONTENT/RP/MODELS/CN7.MOD @@ -0,0 +1,12 @@ +[video] +object=cn7.bgf + +[collision] +name=cn7_cv.sld + +[gauge] +image=cn1_ga.gim + +[gamedata] +class=UnscalableTerrainClassID + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/CN7U.MOD b/CONTENT/RP/MODELS/CN7U.MOD new file mode 100644 index 0000000..ad23609 --- /dev/null +++ b/CONTENT/RP/MODELS/CN7U.MOD @@ -0,0 +1,11 @@ +[video] +object=cn7u.bgf + +[collision] +name=cn7u_cv.sld + +[gauge] +image=cn7u_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/RP/MODELS/CQ1.MOD b/CONTENT/RP/MODELS/CQ1.MOD new file mode 100644 index 0000000..1dabc74 --- /dev/null +++ b/CONTENT/RP/MODELS/CQ1.MOD @@ -0,0 +1,12 @@ +[video] +object=cq1.bgf + +[collision] +name=cq1_cv.sld + +[gauge] +image=cq1_ga.gim + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/RP/MODELS/CQ1A.MOD b/CONTENT/RP/MODELS/CQ1A.MOD new file mode 100644 index 0000000..4df1ebc --- /dev/null +++ b/CONTENT/RP/MODELS/CQ1A.MOD @@ -0,0 +1,12 @@ +[video] +object=cq1.bgf + +//[collision] +//name=cq1_cv.sld + +//[gauge] +//image=cq1_ga.gim + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/RP/MODELS/CQ2.MOD b/CONTENT/RP/MODELS/CQ2.MOD new file mode 100644 index 0000000..3e3a4e0 --- /dev/null +++ b/CONTENT/RP/MODELS/CQ2.MOD @@ -0,0 +1,12 @@ +[video] +object=cq2.bgf + +[collision] +name=cq2_cv.sld + +[gauge] +image=cq2_ga.gim + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/RP/MODELS/CR1.MOD b/CONTENT/RP/MODELS/CR1.MOD new file mode 100644 index 0000000..48211d6 --- /dev/null +++ b/CONTENT/RP/MODELS/CR1.MOD @@ -0,0 +1,15 @@ +[video] +object=cr1.bgf + +[collision] +name=cr1_cv.sld + +[gauge] +image=cr1_ga.gim + +[audio] +external=mtncdr1.scp + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/RP/MODELS/CR1A.MOD b/CONTENT/RP/MODELS/CR1A.MOD new file mode 100644 index 0000000..440c5d0 --- /dev/null +++ b/CONTENT/RP/MODELS/CR1A.MOD @@ -0,0 +1,15 @@ +[video] +object=cr1a.bgf + +[collision] +name=cr1a_cv.sld + +[gauge] +image=cr1a_ga.gim + +[audio] +external=mtncdr1.scp + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/RP/MODELS/CR2.MOD b/CONTENT/RP/MODELS/CR2.MOD new file mode 100644 index 0000000..8a10cab --- /dev/null +++ b/CONTENT/RP/MODELS/CR2.MOD @@ -0,0 +1,15 @@ +[video] +object=cr2.bgf cr2l.bgf + +[collision] +name=cr2_cv.sld + +[gauge] +image=cr2_ga.gim + +[audio] +external=mtncdr2.scp + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/RP/MODELS/CR3.MOD b/CONTENT/RP/MODELS/CR3.MOD new file mode 100644 index 0000000..da1c6da --- /dev/null +++ b/CONTENT/RP/MODELS/CR3.MOD @@ -0,0 +1,15 @@ +[video] +object=cr3.bgf cr3l.bgf + +[collision] +name=cr3_cv.sld + +[gauge] +image=cr3_ga.gim + +[audio] +external=mtncdr4.scp + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/RP/MODELS/CR4.MOD b/CONTENT/RP/MODELS/CR4.MOD new file mode 100644 index 0000000..fa06daf --- /dev/null +++ b/CONTENT/RP/MODELS/CR4.MOD @@ -0,0 +1,12 @@ +[video] +object=cr4.bgf + +[collision] +name=cr4_cv.sld + +[gauge] +image=cr4_ga.gim + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/RP/MODELS/CR5.MOD b/CONTENT/RP/MODELS/CR5.MOD new file mode 100644 index 0000000..b4b92e9 --- /dev/null +++ b/CONTENT/RP/MODELS/CR5.MOD @@ -0,0 +1,12 @@ +[video] +object=cr5.bgf + +[collision] +name=cr5_cv.sld + +[gauge] +image=cr5_ga.gim + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/RP/MODELS/CR5U.MOD b/CONTENT/RP/MODELS/CR5U.MOD new file mode 100644 index 0000000..4b8ef6c --- /dev/null +++ b/CONTENT/RP/MODELS/CR5U.MOD @@ -0,0 +1,12 @@ +[video] +object=cr5.bgf + +[collision] +name=cr5u_cv.sld + +[gauge] +image=cr5_ga.gim + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/RP/MODELS/CR6.MOD b/CONTENT/RP/MODELS/CR6.MOD new file mode 100644 index 0000000..3b5ec61 --- /dev/null +++ b/CONTENT/RP/MODELS/CR6.MOD @@ -0,0 +1,12 @@ +[video] +object=cr6.bgf + +[collision] +name=cr6_cv.sld + +[gauge] +image=cr6_ga.gim + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/RP/MODELS/CR7.MOD b/CONTENT/RP/MODELS/CR7.MOD new file mode 100644 index 0000000..54f0bbf --- /dev/null +++ b/CONTENT/RP/MODELS/CR7.MOD @@ -0,0 +1,14 @@ +[video] +object=cr7.bgf + +[collision] +name=cr7_cv.sld + +[gauge] +image=me3_ga.gim + +[gamedata] +class=UnscalableTerrainClassID + + + diff --git a/CONTENT/RP/MODELS/CR8.MOD b/CONTENT/RP/MODELS/CR8.MOD new file mode 100644 index 0000000..cbaede4 --- /dev/null +++ b/CONTENT/RP/MODELS/CR8.MOD @@ -0,0 +1,11 @@ +[video] +object=cr8.bgf + +[collision] +name=cr8_cv.sld + +[gauge] +image=cr8_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/RP/MODELS/CRE.MOD b/CONTENT/RP/MODELS/CRE.MOD new file mode 100644 index 0000000..f03ea53 --- /dev/null +++ b/CONTENT/RP/MODELS/CRE.MOD @@ -0,0 +1,12 @@ +[video] +object=cre.bgf crel.bgf + +[collision] +name=cre_cv.sld + +[gauge] +image=cre_ga.gim + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/RP/MODELS/CRP.MOD b/CONTENT/RP/MODELS/CRP.MOD new file mode 100644 index 0000000..52533ac --- /dev/null +++ b/CONTENT/RP/MODELS/CRP.MOD @@ -0,0 +1,10 @@ +[video] +object=crp.bgf + +[collision] +name=crp_cv.sld + +[gamedata] +class=UnscalableTerrainClassID + + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/CT1.MOD b/CONTENT/RP/MODELS/CT1.MOD new file mode 100644 index 0000000..c81e115 --- /dev/null +++ b/CONTENT/RP/MODELS/CT1.MOD @@ -0,0 +1,15 @@ +[video] +object=ct1.bgf ct1l.bgf ctf.bgf + +[collision] +name=ct1_cv.sld + +[audio] +external=coltwr1.scp + +[gauge] +image=ct1_ga.gim + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/RP/MODELS/D45.MOD b/CONTENT/RP/MODELS/D45.MOD new file mode 100644 index 0000000..0e3702d --- /dev/null +++ b/CONTENT/RP/MODELS/D45.MOD @@ -0,0 +1,9 @@ +[collision] +name=d45_cv.sld + +[gauge] +image=d45_ga.gim + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/RP/MODELS/DARK.DMG b/CONTENT/RP/MODELS/DARK.DMG new file mode 100644 index 0000000..a0891f0 --- /dev/null +++ b/CONTENT/RP/MODELS/DARK.DMG @@ -0,0 +1,2 @@ +[dz_vtv] +WeaponDamagePoints=100 \ No newline at end of file diff --git a/CONTENT/RP/MODELS/DARK.MOD b/CONTENT/RP/MODELS/DARK.MOD new file mode 100644 index 0000000..be5f2f6 --- /dev/null +++ b/CONTENT/RP/MODELS/DARK.MOD @@ -0,0 +1,47 @@ +[video] +skeleton=dun.skl +skeletons=dus.skl +skeletont=dut.skl +skeletono=dun.skl +skeletona=dua.skl +skeletonb=dub.skl +skeletonc=duc.skl +skeletond=dua.skl + +[collision] +name=du_cv.sld + +[gauge] +image=sp_ga.gim + +[audio] +external=darkext.scp +internal=dark.scp + +[gamedata] +class=VTVClassID +MoverMass=1000.0 +MomentOfInertia=5.8125 10.125 5.8125 +PositiveLinearDragCoefficients=0.14 0.3 0.085 +NegativeLinearDragCoefficients=0.14 0.3 0.085 +AngularDragCoefficients=1.5 0.5 1.5 +FrictionCoefficient=0.4 +ElasticityCoefficient=0.2 +MinimumBounceSpeed=0.2 +MaxAcceleration=9.72 +MaxThrusterRotationRate=4.7 +GroundEffectDomainSquared=0 +GroundEffectRange=5.0 +AngularSpringFactor=12.6 +MaxYawVelocity=55.0 +MaxAngularAcceleration=0.0 4.7 0.0 +BankFactor=0.5 +DeathSpeed=275.0 +DeathScoreLoss=250.0 +MaxImpactSpeed=500.0 +Subsystems=dark.sub +DamageZones=dark.dmg + +[ControlMappings] +Thrustmaster=darkthr.ctl +L4=darkl4.ctl diff --git a/CONTENT/RP/MODELS/DARK.SUB b/CONTENT/RP/MODELS/DARK.SUB new file mode 100644 index 0000000..a4f0e3a --- /dev/null +++ b/CONTENT/RP/MODELS/DARK.SUB @@ -0,0 +1,36 @@ +[Booster1] +Type=BoosterClassID +BoosterCount=12 +BurnTime=8 +BoosterAcceleration=10 + +[LaserGun2] +Type=LaserDrillClassID +DamageAmount=25.0 +FullChargeDuration=4.0 +LaserDuration=0.10 +PulseDuration=0.25 +ChargePerSecond=0.10 +DrainPerSecond=0.25 +LaserLength=100.0 +AmmoModelFile=mrivet +SegmentPageName=sitefrontleftport +ExplosionModelFile=laserexp + +[DemopackDropper] +Type=DemolitionPackDropperClassID +SubsystemFlag=DontReplicateFlag +AmmoCount=2 +LoadTime=1.0 +AmmoModelFile=demo3 +SegmentPageName=sitebackleftport +MuzzleVelocity=5.0 5.0 5.0 + +[DemopackDropper2] +Type=DemolitionPackDropperClassID +SubsystemFlag=DontReplicateFlag +AmmoCount=2 +LoadTime=1.0 +AmmoModelFile=demo3 +SegmentPageName=sitebackrightport +MuzzleVelocity=-5.0 5.0 5.0 diff --git a/CONTENT/RP/MODELS/DARKL4.CTL b/CONTENT/RP/MODELS/DARKL4.CTL new file mode 100644 index 0000000..f28781f --- /dev/null +++ b/CONTENT/RP/MODELS/DARKL4.CTL @@ -0,0 +1,206 @@ +[Booster1_BALL1_1] +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Mode=ModeNonConfig +Subsystem=Booster1 +MessageID=Activate + +[Booster1_BALL1_2] +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Mode=ModeConfiguring +Subsystem=Booster1 +MessageID=ConfigureMappables + +[Booster1_BALL2_1] +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Mode=ModeNonConfig +Subsystem=Booster1 +MessageID=Activate + +[Booster1_BALL2_2] +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Mode=ModeConfiguring +Subsystem=Booster1 +MessageID=ConfigureMappables + +[Booster1_BJTH] +IOMapping=ButtonJoystickThumbHigh +Type=EventMapping +Mode=ModePreset1,ModePreset2,ModePreset3,ModePreset4,ModePreset5,ModePreset6 +Subsystem=Booster1 +MessageID=Activate + +//----------------------------------------------------------------------- +// Demopack dropper mappings +// +[DemoPack_BALR1_1] +IOMapping=ButtonAuxLowerRight1 +Type=DirectMapping +Mode=ModeNonConfig +Subsystem=DemopackDropper +AttributeID=TriggerState + +[DemoPack_BALR1_2] +IOMapping=ButtonAuxLowerRight1 +Type=EventMapping +Mode=ModeConfiguring +Subsystem=DemopackDropper +MessageID=ConfigureMappables + +[DemoPack_BALR2_1] +IOMapping=ButtonAuxLowerRight2 +Type=DirectMapping +Mode=ModeNonConfig +Subsystem=DemopackDropper +AttributeID=TriggerState + +[DemoPack_BALR2_2] +IOMapping=ButtonAuxLowerRight2 +Type=EventMapping +Mode=ModeConfiguring +Subsystem=DemopackDropper +MessageID=ConfigureMappables + +[DemopackDropper_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=DirectMapping +Mode=ModePreset5 +Subsystem=DemopackDropper +AttributeID=TriggerState + +//----------------------------------------------------------------------- +// Demopack dropper 2 mappings +// +[DemoPack2_BALR3_1] +IOMapping=ButtonAuxLowerRight3 +Type=DirectMapping +Mode=ModeNonConfig +Subsystem=DemopackDropper2 +AttributeID=TriggerState + +[DemoPack2_BALR3_2] +IOMapping=ButtonAuxLowerRight3 +Type=EventMapping +Mode=ModeConfiguring +Subsystem=DemopackDropper2 +MessageID=ConfigureMappables + +[DemoPack2_BALR4_1] +IOMapping=ButtonAuxLowerRight4 +Type=DirectMapping +Mode=ModeNonConfig +Subsystem=DemopackDropper2 +AttributeID=TriggerState + +[DemoPack2_BALR4_2] +IOMapping=ButtonAuxLowerRight4 +Type=EventMapping +Mode=ModeConfiguring +Subsystem=DemopackDropper2 +MessageID=ConfigureMappables + +[DemopackDropper2_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=DirectMapping +Mode=ModePreset5 +Subsystem=DemopackDropper2 +AttributeID=TriggerState + +//----------------------------------------------------------------------- +// Laser gun mappings +// +[LaserGun2_BALR5_1] +IOMapping=ButtonAuxLowerRight5 +Type=DirectMapping +Mode=ModeNonConfig +Subsystem=LaserGun2 +AttributeID=TriggerState + +[LaserGun2_BALR5_2] +IOMapping=ButtonAuxLowerRight5 +Type=EventMapping +Mode=ModeConfiguring +Subsystem=LaserGun2 +MessageID=ConfigureMappables + +[LaserGun2_BALR6_1] +IOMapping=ButtonAuxLowerRight6 +Type=DirectMapping +Mode=ModeNonConfig +Subsystem=LaserGun2 +AttributeID=TriggerState + +[LaserGun2_BALR6_2] +IOMapping=ButtonAuxLowerRight6 +Type=EventMapping +Mode=ModeConfiguring +Subsystem=LaserGun2 +MessageID=ConfigureMappables + +[LaserGun2_BJT] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Mode=ModePreset1,ModePreset2,ModePreset3,ModePreset4,ModePreset5 +Subsystem=LaserGun2 +AttributeID=TriggerState + +[LaserGun2_BJP] +IOMapping=ButtonJoystickPinky +Type=DirectMapping +Mode=ModePreset6 +Subsystem=LaserGun2 +AttributeID=TriggerState + +//----------------------------------------------------------- +// Other joystick mappings +// +[LiftCut_BJP] +IOMapping=ButtonJoystickPinky +Type=DirectMapping +Mode=ModePreset2,ModePreset5 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[LiftCut_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=DirectMapping +Mode=ModePreset3,ModePreset4 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[LiftCut_BJT] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Mode=ModePreset6 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[Horn_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=EventMapping +Mode=ModePreset1,ModePreset2 +Subsystem=ControlsMapper +MessageID=ActivateHorn + +[Horn_BJP] +IOMapping=ButtonJoystickPinky +Type=EventMapping +Mode=ModePreset4 +Subsystem=ControlsMapper +MessageID=ActivateHorn + +//-------------------------------------------------------------- +// re-install this once we really have an intercom! +// (until we do, it shows a mapping on the configuration +// mapper that doesn't belong to anything the pilot can control) +//-------------------------------------------------------------- +//[PTT_BJTP] +//IOMapping=ButtonJoystickPinky +//Type=EventMapping +//Mode=ModePreset1,ModePreset3 +//Subsystem=ControlsMapper +//MessageID=ActivatePTT + diff --git a/CONTENT/RP/MODELS/DARKTHR.CTL b/CONTENT/RP/MODELS/DARKTHR.CTL new file mode 100644 index 0000000..0895871 --- /dev/null +++ b/CONTENT/RP/MODELS/DARKTHR.CTL @@ -0,0 +1,100 @@ +[DemopackDropper_BJT] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Mode=ModePreset1,ModePreset2,ModePreset3,ModePreset4,ModePreset5 +Subsystem=DemopackDropper +AttributeID=TriggerState + +[DemopackDropper_BJP] +IOMapping=ButtonJoystickPinky +Type=DirectMapping +Mode=ModePreset6 +Subsystem=DemopackDropper +AttributeID=TriggerState + +[DemopackDropper2_BJT] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Mode=ModePreset1,ModePreset2,ModePreset3,ModePreset4,ModePreset5 +Subsystem=DemopackDropper2 +AttributeID=TriggerState + +[DemopackDropper2_BJP] +IOMapping=ButtonJoystickPinky +Type=DirectMapping +Mode=ModePreset6 +Subsystem=DemopackDropper2 +AttributeID=TriggerState + +[LaserGun2_BJT] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Mode=ModePreset1,ModePreset2,ModePreset3,ModePreset4,ModePreset5 +Subsystem=LaserGun2 +AttributeID=TriggerState + +[LaserGun2_BJP] +IOMapping=ButtonJoystickPinky +Type=DirectMapping +Mode=ModePreset6 +Subsystem=LaserGun2 +AttributeID=TriggerState + +//---------------------------------------------------------- +// Booster mappings +// +[Booster1_BJTH] +IOMapping=ButtonJoystickThumbHigh +Type=EventMapping +Mode=ModePreset1,ModePreset2,ModePreset3,ModePreset4,ModePreset5,ModePreset6 +Subsystem=Booster1 +MessageID=Activate + +//---------------------------------------------------------- +// Horn +// +[Horn_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=EventMapping +Mode=ModePreset1,ModePreset2,ModePreset5 +Subsystem=ControlsMapper +MessageID=ActivateHorn + +[Horn_BJP] +IOMapping=ButtonJoystickPinky +Type=EventMapping +Mode=ModePreset4 +Subsystem=ControlsMapper +MessageID=ActivateHorn + +//----------------------------------------------------------- +// Other joystick mappings +// +[LiftCut_BJP] +IOMapping=ButtonJoystickPinky +Type=DirectMapping +Mode=ModePreset2,ModePreset5 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[LiftCut_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=DirectMapping +Mode=ModePreset3,ModePreset4 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[LiftCut_BJT] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Mode=ModePreset6 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[PTT_BJTP] +IOMapping=ButtonJoystickPinky +Type=EventMapping +Mode=ModePreset1,ModePreset3 +Subsystem=ControlsMapper +MessageID=ActivatePTT + diff --git a/CONTENT/RP/MODELS/DEMO2.BAK b/CONTENT/RP/MODELS/DEMO2.BAK new file mode 100644 index 0000000..2d1de14 --- /dev/null +++ b/CONTENT/RP/MODELS/DEMO2.BAK @@ -0,0 +1,29 @@ +[video] +object=chg.bgf + +[collision] +name=chg_cv.sld + +[gauge] +image=dpack_ga.gim + +[audio] +external=demopack.scp + +[gamedata] +class=DemolitionPackClassID +MoverMass=2.0 +MomentOfInertia=1.75 3.125 1.75 +PositiveLinearDragCoefficients=0.05 0.12 0.05 +NegativeLinearDragCoefficients=0.05 0.2 0.05 +AngularDragCoefficients=0.3 0.5 0.3 +FrictionCoefficient=4.0 +ElasticityCoefficient=0.01 +MinimumBounceSpeed=10.0 +DamageAmount=10.0 +DamageType=ExplosiveDamage +ExplosionModelFile=dpexp +BlastRadius=25.0 +DetectionRadius=15.0 +ConcussiveForce=35000.0 +FuseTime=0.1 diff --git a/CONTENT/RP/MODELS/DEMO2.MOD b/CONTENT/RP/MODELS/DEMO2.MOD new file mode 100644 index 0000000..254a18e --- /dev/null +++ b/CONTENT/RP/MODELS/DEMO2.MOD @@ -0,0 +1,29 @@ +[video] +object=chg.bgf + +[collision] +name=chg_cv.sld + +[gauge] +image=sting.gim + +[audio] +external=demopack.scp + +[gamedata] +class=DemolitionPackClassID +MoverMass=2.0 +MomentOfInertia=1.75 3.125 1.75 +PositiveLinearDragCoefficients=0.05 0.12 0.05 +NegativeLinearDragCoefficients=0.05 0.2 0.05 +AngularDragCoefficients=0.3 0.5 0.3 +FrictionCoefficient=4.0 +ElasticityCoefficient=0.01 +MinimumBounceSpeed=10.0 +DamageAmount=10.0 +DamageType=ExplosiveDamage +ExplosionModelFile=dpexp +BlastRadius=25.0 +DetectionRadius=15.0 +ConcussiveForce=35000.0 +FuseTime=0.1 diff --git a/CONTENT/RP/MODELS/DEMO3.MOD b/CONTENT/RP/MODELS/DEMO3.MOD new file mode 100644 index 0000000..0b04e5c --- /dev/null +++ b/CONTENT/RP/MODELS/DEMO3.MOD @@ -0,0 +1,29 @@ +[video] +object=chg.bgf + +[collision] +name=chg_cv.sld + +[gauge] +image=dpack_ga.gim + +[audio] +external=demopack.scp + +[gamedata] +class=DemolitionPackClassID +MoverMass=2.0 +MomentOfInertia=1.75 3.125 1.75 +PositiveLinearDragCoefficients=0.05 0.12 0.05 +NegativeLinearDragCoefficients=0.05 0.2 0.05 +AngularDragCoefficients=0.3 0.5 0.3 +FrictionCoefficient=4.0 +ElasticityCoefficient=0.01 +MinimumBounceSpeed=10.0 +DamageAmount=150.0 +DamageType=ExplosiveDamage +ExplosionModelFile=dpexp +BlastRadius=25.0 +DetectionRadius=15.0 +ConcussiveForce=30000.0 +FuseTime=1.0 diff --git a/CONTENT/RP/MODELS/DEMOPACK.MOD b/CONTENT/RP/MODELS/DEMOPACK.MOD new file mode 100644 index 0000000..320b2f3 --- /dev/null +++ b/CONTENT/RP/MODELS/DEMOPACK.MOD @@ -0,0 +1,29 @@ +[video] +object=chg.bgf + +[collision] +name=chg_cv.sld + +[gauge] +image=dpack_ga.gim + +[audio] +external=demopack.scp + +[gamedata] +class=DemolitionPackClassID +MoverMass=2.0 +MomentOfInertia=1.75 3.125 1.75 +PositiveLinearDragCoefficients=0.05 0.12 0.05 +NegativeLinearDragCoefficients=0.05 0.2 0.05 +AngularDragCoefficients=0.3 0.5 0.3 +FrictionCoefficient=4.0 +ElasticityCoefficient=0.01 +MinimumBounceSpeed=10.0 +DamageAmount=150.0 +DamageType=ExplosiveDamage +ExplosionModelFile=dpexp +BlastRadius=25.0 +DetectionRadius=15.0 +ConcussiveForce=30000.0 +FuseTime=3.0 diff --git a/CONTENT/RP/MODELS/DP2THR.CTL b/CONTENT/RP/MODELS/DP2THR.CTL new file mode 100644 index 0000000..4a761fb --- /dev/null +++ b/CONTENT/RP/MODELS/DP2THR.CTL @@ -0,0 +1,101 @@ +[DemopackDropper_BJT] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Mode=ModePreset1,ModePreset2,ModePreset3,ModePreset4,ModePreset5 +Subsystem=DemopackDropper +AttributeID=TriggerState + +[DemopackDropper_BJP] +IOMapping=ButtonJoystickPinky +Type=DirectMapping +Mode=ModePreset6 +Subsystem=DemopackDropper +AttributeID=TriggerState + +[DemopackDropper2_BJT] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Mode=ModePreset1,ModePreset2,ModePreset3,ModePreset4,ModePreset5 +Subsystem=DemopackDropper2 +AttributeID=TriggerState + +[DemopackDropper2_BJP] +IOMapping=ButtonJoystickPinky +Type=DirectMapping +Mode=ModePreset6 +Subsystem=DemopackDropper2 +AttributeID=TriggerState + + +//---------------------------------------------------------- +// Booster mappings +// +[Booster1_BJTH] +IOMapping=ButtonJoystickThumbHigh +Type=EventMapping +Mode=ModePreset1,ModePreset2,ModePreset3,ModePreset4,ModePreset5,ModePreset6 +Subsystem=Booster1 +MessageID=Activate + +[Booster2_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=EventMapping +Mode=ModePreset6 +Subsystem=Booster2 +MessageID=Activate + +//---------------------------------------------------------- +// Chute mappings +// +[Chute_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=EventMapping +Mode=ModePreset1,ModePreset2 +Subsystem=Chute +MessageID=Activate + +[Chute_BJP] +IOMapping=ButtonJoystickPinky +Type=EventMapping +Mode=ModePreset4 +Subsystem=Chute +MessageID=Activate + +//----------------------------------------------------------- +// Other joystick mappings +// +[LiftCut_BJP] +IOMapping=ButtonJoystickPinky +Type=DirectMapping +Mode=ModePreset2,ModePreset5 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[LiftCut_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=DirectMapping +Mode=ModePreset3,ModePreset4 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[LiftCut_BJT] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Mode=ModePreset6 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[Horn_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=EventMapping +Mode=ModePreset5 +Subsystem=ControlsMapper +MessageID=ActivateHorn + +[PTT_BJTP] +IOMapping=ButtonJoystickPinky +Type=EventMapping +Mode=ModePreset1,ModePreset3 +Subsystem=ControlsMapper +MessageID=ActivatePTT + diff --git a/CONTENT/RP/MODELS/DPEXP.MOD b/CONTENT/RP/MODELS/DPEXP.MOD new file mode 100644 index 0000000..3df2e05 --- /dev/null +++ b/CONTENT/RP/MODELS/DPEXP.MOD @@ -0,0 +1,9 @@ +[video] +object=1000 1001 + +[gamedata] +class=ExplosionClassID +ExplosionDuration=3.0 + +[audio] +external=dpexp.scp diff --git a/CONTENT/RP/MODELS/DPL4.CTL b/CONTENT/RP/MODELS/DPL4.CTL new file mode 100644 index 0000000..d416c5c --- /dev/null +++ b/CONTENT/RP/MODELS/DPL4.CTL @@ -0,0 +1,206 @@ +[Booster1_BALL1_1] +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Mode=ModeNonConfig +Subsystem=Booster1 +MessageID=Activate + +[Booster1_BALL1_2] +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Mode=ModeConfiguring +Subsystem=Booster1 +MessageID=ConfigureMappables + +[Booster1_BALL2_1] +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Mode=ModeNonConfig +Subsystem=Booster1 +MessageID=Activate + +[Booster1_BALL2_2] +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Mode=ModeConfiguring +Subsystem=Booster1 +MessageID=ConfigureMappables + +[Booster1_BJTH] +IOMapping=ButtonJoystickThumbHigh +Type=EventMapping +Mode=ModePreset1,ModePreset2,ModePreset3,ModePreset4,ModePreset5,ModePreset6 +Subsystem=Booster1 +MessageID=Activate + +//----------------------------------------------------------------------- +// Booster 2 mappings +// +[Booster2_BALL3_1] +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Mode=ModeNonConfig +Subsystem=Booster2 +MessageID=Activate + +[Booster2_BALL3_2] +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Mode=ModeConfiguring +Subsystem=Booster2 +MessageID=ConfigureMappables + +[Booster2_BALL4_1] +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Mode=ModeNonConfig +Subsystem=Booster2 +MessageID=Activate + +[Booster2_BALL4_2] +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Mode=ModeConfiguring +Subsystem=Booster2 +MessageID=ConfigureMappables + +[Booster2_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=EventMapping +Mode=ModePreset6 +Subsystem=Booster2 +MessageID=Activate + +//----------------------------------------------------------------------- +// Chute system mappings +// +[Chute_BALL5_1] +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Mode=ModeNonConfig +Subsystem=Chute +MessageID=Activate + +[Chute_BALL5_2] +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Mode=ModeConfiguring +Subsystem=Chute +MessageID=ConfigureMappables + +[Chute_BALL6_1] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Mode=ModeNonConfig +Subsystem=Chute +MessageID=Activate + +[Chute_BALL6_2] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Mode=ModeConfiguring +Subsystem=Chute +MessageID=ConfigureMappables + +[Chute_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=EventMapping +Mode=ModePreset1,ModePreset2 +Subsystem=Chute +MessageID=Activate + +[Chute_BJP] +IOMapping=ButtonJoystickPinky +Type=EventMapping +Mode=ModePreset4 +Subsystem=Chute +MessageID=Activate + +//----------------------------------------------------------------------- +// Demopack dropper mappings +// +[DemoPack_BALR1_1] +IOMapping=ButtonAuxLowerRight1 +Type=DirectMapping +Mode=ModeNonConfig +Subsystem=DemopackDropper +AttributeID=TriggerState + +[DemoPack_BALR1_2] +IOMapping=ButtonAuxLowerRight1 +Type=EventMapping +Mode=ModeConfiguring +Subsystem=DemopackDropper +MessageID=ConfigureMappables + +[DemoPack_BALR2_1] +IOMapping=ButtonAuxLowerRight2 +Type=DirectMapping +Mode=ModeNonConfig +Subsystem=DemopackDropper +AttributeID=TriggerState + +[DemoPack_BALR2_2] +IOMapping=ButtonAuxLowerRight2 +Type=EventMapping +Mode=ModeConfiguring +Subsystem=DemopackDropper +MessageID=ConfigureMappables + +[DemopackDropper_BJT] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Mode=ModePreset1,ModePreset2,ModePreset3,ModePreset4,ModePreset5 +Subsystem=DemopackDropper +AttributeID=TriggerState + +[DemopackDropper_BJP] +IOMapping=ButtonJoystickPinky +Type=DirectMapping +Mode=ModePreset6 +Subsystem=DemopackDropper +AttributeID=TriggerState + +//----------------------------------------------------------- +// Other joystick mappings +// +[LiftCut_BJP] +IOMapping=ButtonJoystickPinky +Type=DirectMapping +Mode=ModePreset2,ModePreset5 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[LiftCut_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=DirectMapping +Mode=ModePreset3,ModePreset4 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[LiftCut_BJT] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Mode=ModePreset6 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[Horn_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=EventMapping +Mode=ModePreset5 +Subsystem=ControlsMapper +MessageID=ActivateHorn + +//-------------------------------------------------------------- +// re-install this once we really have an intercom! +// (until we do, it shows a mapping on the configuration +// mapper that doesn't belong to anything the pilot can control) +//-------------------------------------------------------------- +//[PTT_BJTP] +//IOMapping=ButtonJoystickPinky +//Type=EventMapping +//Mode=ModePreset1,ModePreset3 +//Subsystem=ControlsMapper +//MessageID=ActivatePTT + diff --git a/CONTENT/RP/MODELS/DPTHR.CTL b/CONTENT/RP/MODELS/DPTHR.CTL new file mode 100644 index 0000000..a06f291 --- /dev/null +++ b/CONTENT/RP/MODELS/DPTHR.CTL @@ -0,0 +1,86 @@ +[DemopackDropper_BJT] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Mode=ModePreset1,ModePreset2,ModePreset3,ModePreset4,ModePreset5 +Subsystem=DemopackDropper +AttributeID=TriggerState + +[DemopackDropper_BJP] +IOMapping=ButtonJoystickPinky +Type=DirectMapping +Mode=ModePreset6 +Subsystem=DemopackDropper +AttributeID=TriggerState + +//---------------------------------------------------------- +// Booster mappings +// +[Booster1_BJTH] +IOMapping=ButtonJoystickThumbHigh +Type=EventMapping +Mode=ModePreset1,ModePreset2,ModePreset3,ModePreset4,ModePreset5,ModePreset6 +Subsystem=Booster1 +MessageID=Activate + +[Booster2_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=EventMapping +Mode=ModePreset6 +Subsystem=Booster2 +MessageID=Activate + +//---------------------------------------------------------- +// Chute mappings +// +[Chute_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=EventMapping +Mode=ModePreset1,ModePreset2 +Subsystem=Chute +MessageID=Activate + +[Chute_BJP] +IOMapping=ButtonJoystickPinky +Type=EventMapping +Mode=ModePreset4 +Subsystem=Chute +MessageID=Activate + +//----------------------------------------------------------- +// Other joystick mappings +// +[LiftCut_BJP] +IOMapping=ButtonJoystickPinky +Type=DirectMapping +Mode=ModePreset2,ModePreset5 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[LiftCut_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=DirectMapping +Mode=ModePreset3,ModePreset4 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[LiftCut_BJT] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Mode=ModePreset6 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[Horn_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=EventMapping +Mode=ModePreset5 +Subsystem=ControlsMapper +MessageID=ActivateHorn + +[PTT_BJTP] +IOMapping=ButtonJoystickPinky +Type=EventMapping +Mode=ModePreset1,ModePreset3 +Subsystem=ControlsMapper +MessageID=ActivatePTT + diff --git a/CONTENT/RP/MODELS/DR1.MOD b/CONTENT/RP/MODELS/DR1.MOD new file mode 100644 index 0000000..e6d175d --- /dev/null +++ b/CONTENT/RP/MODELS/DR1.MOD @@ -0,0 +1,12 @@ +[video] +object=dr1.bgf dr1l.bgf + +[collision] +name=dr1_cv.sld + +[gauge] +image=dr1_ga.gim + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/RP/MODELS/DR2.MOD b/CONTENT/RP/MODELS/DR2.MOD new file mode 100644 index 0000000..409ae74 --- /dev/null +++ b/CONTENT/RP/MODELS/DR2.MOD @@ -0,0 +1,12 @@ +[video] +object=dr2.bgf dr2l.bgf + +[collision] +name=dr2_cv.sld + +[gauge] +image=dr2_ga.gim + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/RP/MODELS/DRAGON.BAK b/CONTENT/RP/MODELS/DRAGON.BAK new file mode 100644 index 0000000..0461e46 --- /dev/null +++ b/CONTENT/RP/MODELS/DRAGON.BAK @@ -0,0 +1,50 @@ +[video] +skeleton=pon.skl +skeletons=pos.skl +skeletont=pot.skl +skeletono=pon.skl +skeletona=poa.skl +skeletonb=pob.skl +skeletonc=poc.skl +skeletond=poa.skl + +[collision] +name=po_cv.sld + +[gauge] +image=po_ga.gim + +[audio] +external=vtvext.scp +internal=dragon.scp + +[gamedata] +class=VTVClassID +MoverMass=1000.0 +MomentOfInertia=5.8125 10.125 5.8125 +PositiveLinearDragCoefficients=0.14 0.13 0.085 +NegativeLinearDragCoefficients=0.14 0.13 0.07 +AngularDragCoefficients=1.5 0.5 1.5 +FrictionCoefficient=0.4 +ElasticityCoefficient=0.2 +MinimumBounceSpeed=0.2 +MaxAcceleration=10 +MaxThrusterRotationRate=4.7 +GroundEffectDomainSquared=0.3 +GroundEffectRange=10.0 +AngularSpringFactor=12.6 +MaxYawVelocity=90.0 +MaxAngularAcceleration=0.0 4.7 0.0 +BankFactor=0.5 +DeathSpeed=275.0 +DeathScoreLoss=250.0 +MaxImpactSpeed=250.0 +PowerDive=-0.2 +Subsystems=dragon.sub +DamageZones=dragon.dmg +BottomArmorScale=1.0 +ReticleY=-0.00 + +[ControlMappings] +Thrustmaster=3rivthr.ctl +L4=3rivl4.ctl diff --git a/CONTENT/RP/MODELS/DRAGON.DMG b/CONTENT/RP/MODELS/DRAGON.DMG new file mode 100644 index 0000000..db4919f --- /dev/null +++ b/CONTENT/RP/MODELS/DRAGON.DMG @@ -0,0 +1,2 @@ +[dz_vtv] +WeaponDamagePoints=300 \ No newline at end of file diff --git a/CONTENT/RP/MODELS/DRAGON.MOD b/CONTENT/RP/MODELS/DRAGON.MOD new file mode 100644 index 0000000..1af9c29 --- /dev/null +++ b/CONTENT/RP/MODELS/DRAGON.MOD @@ -0,0 +1,50 @@ +[video] +skeleton=pon.skl +skeletons=pos.skl +skeletont=pot.skl +skeletono=pon.skl +skeletona=poa.skl +skeletonb=pob.skl +skeletonc=poc.skl +skeletond=poa.skl + +[collision] +name=po_cv.sld + +[gauge] +image=po_ga.gim + +[audio] +external=vtvext.scp +internal=dragon.scp + +[gamedata] +class=VTVClassID +MoverMass=1000.0 +MomentOfInertia=5.8125 10.125 5.8125 +PositiveLinearDragCoefficients=0.14 0.13 0.085 +NegativeLinearDragCoefficients=0.14 0.13 0.07 +AngularDragCoefficients=1.5 0.5 1.5 +FrictionCoefficient=0.4 +ElasticityCoefficient=0.2 +MinimumBounceSpeed=0.2 +MaxAcceleration=10 +MaxThrusterRotationRate=4.7 +GroundEffectDomainSquared=0.3 +GroundEffectRange=10.0 +AngularSpringFactor=12.6 +MaxYawVelocity=90.0 +MaxAngularAcceleration=0.0 4.7 0.0 +BankFactor=0.5 +DeathSpeed=275.0 +DeathScoreLoss=250.0 +MaxImpactSpeed=225.0 +PowerDive=-0.2 +Subsystems=dragon.sub +DamageZones=dragon.dmg +BottomArmorScale=1.0 +ReticleY=-0.00 + +[ControlMappings] +Thrustmaster=3rivthr.ctl +L4=3rivl4.ctl diff --git a/CONTENT/RP/MODELS/DRAGON.SUB b/CONTENT/RP/MODELS/DRAGON.SUB new file mode 100644 index 0000000..ab0eca8 --- /dev/null +++ b/CONTENT/RP/MODELS/DRAGON.SUB @@ -0,0 +1,64 @@ +[Booster1] +Type=BoosterClassID +BoosterCount=0 +BurnTime=8 +BoosterAcceleration=13 + +[Booster2] +Type=BoosterClassID +BoosterCount=0 +BurnTime=8 +BoosterAcceleration=13 + +[Chute] +Type=ChuteClassID +ChuteCount=0 +ReloadTime=0 +DragForce=0.14 +MinVelocity=20 +MaxRotation=60 +DeployTime=0.2 +SegmentPageName=sitechute + +[RivetGun1] +Type=RivetGunClassID +SubsystemFlags=DontReplicateFlag +AmmoCount=500 +LoadTime=0.35 +AmmoModelFile=lrivet +MuzzleVelocity=0.0 6.5 350.0 +SegmentPageName=sitefrontleftport + + +[RivetGun2] +Type=RivetGunClassID +SubsystemFlags=DontReplicateFlag +AmmoCount=500 +LoadTime=0.35 +AmmoModelFile=lrivet +MuzzleVelocity=0.0 6.5 350.0 +SegmentPageName=sitefrontrightport + + +//[RivetGun3] +//Type=RivetGunClassID +//SubsystemFlags=DontReplicateFlag +//AmmoCount=500 +//LoadTime=0.2 +//AmmoModelFile=lrivet +//MuzzleVelocity=0.0 6.5 350.0 +//SegmentPageName=sitefrontcenterport + +[Slaver3] +Type=LaserDrillClassID +FullChargeDuration=4.0 +LaserDuration=0.10 +PulseDuration=0.25 +ChargePerSecond=0.10 +DrainPerSecond=0.25 +LaserLength=300.0 +ExplosionModelFile=laserexp +AmmoModelFile=mrivet +DamageAmount=150.0 +SegmentPageName=sitefrontcenterport +//RearPageName=sitebackcenterport \ No newline at end of file diff --git a/CONTENT/RP/MODELS/DRGNL4.CTL b/CONTENT/RP/MODELS/DRGNL4.CTL new file mode 100644 index 0000000..c3d7162 --- /dev/null +++ b/CONTENT/RP/MODELS/DRGNL4.CTL @@ -0,0 +1,95 @@ +[Horn_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=EventMapping +Mode=ModePreset1,ModePreset2,ModePreset5 +Subsystem=ControlsMapper +MessageID=ActivateHorn + +[Horn_BJP] +IOMapping=ButtonJoystickPinky +Type=EventMapping +Mode=ModePreset4 +Subsystem=ControlsMapper +MessageID=ActivateHorn + +//----------------------------------------------------------------------- +// Laser gun mappings +// +[LaserGun2_BALR1_1] +IOMapping=ButtonAuxLowerRight1 +Type=DirectMapping +Mode=ModeNonConfig +Subsystem=LaserGun2 +AttributeID=TriggerState + +[LaserGun2_BALR1_2] +IOMapping=ButtonAuxLowerRight1 +Type=EventMapping +Mode=ModeConfiguring +Subsystem=LaserGun2 +MessageID=ConfigureMappables + +[LaserGun2_BALR2_1] +IOMapping=ButtonAuxLowerRight2 +Type=DirectMapping +Mode=ModeNonConfig +Subsystem=LaserGun2 +AttributeID=TriggerState + +[LaserGun2_BALR2_2] +IOMapping=ButtonAuxLowerRight2 +Type=EventMapping +Mode=ModeConfiguring +Subsystem=LaserGun2 +MessageID=ConfigureMappables + +[LaserGun2_BJT] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Mode=ModePreset1,ModePreset2,ModePreset3,ModePreset4,ModePreset5 +Subsystem=LaserGun2 +AttributeID=TriggerState + +[LaserGun2_BJP] +IOMapping=ButtonJoystickPinky +Type=DirectMapping +Mode=ModePreset6 +Subsystem=LaserGun2 +AttributeID=TriggerState + +//----------------------------------------------------------- +// Other joystick mappings +// +[LiftCut_BJP] +IOMapping=ButtonJoystickPinky +Type=DirectMapping +Mode=ModePreset2,ModePreset5 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[LiftCut_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=DirectMapping +Mode=ModePreset3,ModePreset4 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[LiftCut_BJT] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Mode=ModePreset6 +Subsystem=ControlsMapper +AttributeID=LiftCut + +//-------------------------------------------------------------- +// re-install this once we really have an intercom! +// (until we do, it shows a mapping on the configuration +// mapper that doesn't belong to anything the pilot can control) +//-------------------------------------------------------------- +//[PTT_BJTP] +//IOMapping=ButtonJoystickPinky +//Type=EventMapping +//Mode=ModePreset1,ModePreset3 +//Subsystem=ControlsMapper +//MessageID=ActivatePTT + diff --git a/CONTENT/RP/MODELS/DRGNTHR.CTL b/CONTENT/RP/MODELS/DRGNTHR.CTL new file mode 100644 index 0000000..b64f4fd --- /dev/null +++ b/CONTENT/RP/MODELS/DRGNTHR.CTL @@ -0,0 +1,54 @@ +[LaserGun2_BJT] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Mode=ModePreset1,ModePreset2,ModePreset3,ModePreset4,ModePreset5 +Subsystem=LaserGun2 +AttributeID=TriggerState + +[LaserGun2_BJP] +IOMapping=ButtonJoystickPinky +Type=DirectMapping +Mode=ModePreset6 +Subsystem=LaserGun2 +AttributeID=TriggerState + +//---------------------------------------------------------- +// Horn +// +[Horn_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=EventMapping +Mode=ModePreset1,ModePreset2,ModePreset5 +Subsystem=ControlsMapper +MessageID=ActivateHorn + +[Horn_BJP] +IOMapping=ButtonJoystickPinky +Type=EventMapping +Mode=ModePreset4 +Subsystem=ControlsMapper +MessageID=ActivateHorn + +//----------------------------------------------------------- +// Other joystick mappings +// +[LiftCut_BJP] +IOMapping=ButtonJoystickPinky +Type=DirectMapping +Mode=ModePreset2,ModePreset5 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[LiftCut_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=DirectMapping +Mode=ModePreset3,ModePreset4 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[LiftCut_BJT] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Mode=ModePreset6 +Subsystem=ControlsMapper +AttributeID=LiftCut diff --git a/CONTENT/RP/MODELS/DRW.MOD b/CONTENT/RP/MODELS/DRW.MOD new file mode 100644 index 0000000..3514dd8 --- /dev/null +++ b/CONTENT/RP/MODELS/DRW.MOD @@ -0,0 +1,18 @@ +[video] +;------------------------------------------------------- +; Warning: number and order of objects is significant! +;------------------------------------------------------- +object=drw.bgf dr1.bgf dr2.bgf drwl.bgf dr1l.bgf dr2l.bgf + +[collision] +name=drw_cv.sld + +[gauge] +image=drw_ga.gim + +[audio] +external=door1.scp + +[gamedata] +class=DoorFrameClassID +Subsystems=drw.sub diff --git a/CONTENT/RP/MODELS/DRW.SUB b/CONTENT/RP/MODELS/DRW.SUB new file mode 100644 index 0000000..6bdeea0 --- /dev/null +++ b/CONTENT/RP/MODELS/DRW.SUB @@ -0,0 +1,13 @@ +[door1] +Type=DoorClassID +TravelTime=10.0 +DeadTime=3.0 +MotionExtent=-25.0 0.0 0.0 +Collision=dr1_cv.sld + +[door2] +Type=DoorClassID +TravelTime=10.0 +DeadTime=3.0 +MotionExtent=25.0 0.0 0.0 +Collision=dr2_cv.sld diff --git a/CONTENT/RP/MODELS/DRW2.MOD b/CONTENT/RP/MODELS/DRW2.MOD new file mode 100644 index 0000000..7601654 --- /dev/null +++ b/CONTENT/RP/MODELS/DRW2.MOD @@ -0,0 +1,18 @@ +[video] +;------------------------------------------------------- +; Warning: number and order of objects is significant! +;------------------------------------------------------- +object=drw.bgf dr1.bgf dr2.bgf drwl.bgf dr1l.bgf dr2l.bgf + +[collision] +name=drw_cv.sld + +[gauge] +image=drw_ga.gim + +[audio] +external=door1.scp + +[gamedata] +class=DoorFrameClassID +Subsystems=drw2.sub diff --git a/CONTENT/RP/MODELS/DRW2.SUB b/CONTENT/RP/MODELS/DRW2.SUB new file mode 100644 index 0000000..4fe1da1 --- /dev/null +++ b/CONTENT/RP/MODELS/DRW2.SUB @@ -0,0 +1,13 @@ +[door1] +Type=DoorClassID +TravelTime=13.0 +DeadTime=800.0 +MotionExtent=-25.0 0.0 0.0 +Collision=dr1_cv.sld + +[door2] +Type=DoorClassID +TravelTime=13.0 +DeadTime=800.0 +MotionExtent=25.0 0.0 0.0 +Collision=dr2_cv.sld diff --git a/CONTENT/RP/MODELS/DRW_1.BAK b/CONTENT/RP/MODELS/DRW_1.BAK new file mode 100644 index 0000000..c33cfa5 --- /dev/null +++ b/CONTENT/RP/MODELS/DRW_1.BAK @@ -0,0 +1,14 @@ +[video] +;------------------------------------------------------- +; Warning: number and order of objects is significant! +;------------------------------------------------------- +object=drw.bgf + +[collision] +name=drw_cv.sld + +[gauge] +image=drw_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/RP/MODELS/DRW_1.MOD b/CONTENT/RP/MODELS/DRW_1.MOD new file mode 100644 index 0000000..c33cfa5 --- /dev/null +++ b/CONTENT/RP/MODELS/DRW_1.MOD @@ -0,0 +1,14 @@ +[video] +;------------------------------------------------------- +; Warning: number and order of objects is significant! +;------------------------------------------------------- +object=drw.bgf + +[collision] +name=drw_cv.sld + +[gauge] +image=drw_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/RP/MODELS/EFFECT.MOD b/CONTENT/RP/MODELS/EFFECT.MOD new file mode 100644 index 0000000..e2257fd --- /dev/null +++ b/CONTENT/RP/MODELS/EFFECT.MOD @@ -0,0 +1,4 @@ +[gamedata] +class=EyeCandyClassID +MaxWaitTime=1.0 +MinWaitTime=10.0 diff --git a/CONTENT/RP/MODELS/EXPLODE.MOD b/CONTENT/RP/MODELS/EXPLODE.MOD new file mode 100644 index 0000000..488ef22 --- /dev/null +++ b/CONTENT/RP/MODELS/EXPLODE.MOD @@ -0,0 +1,2 @@ +[gamedata] +class=ExplosionClassID diff --git a/CONTENT/RP/MODELS/FLEA.BAK b/CONTENT/RP/MODELS/FLEA.BAK new file mode 100644 index 0000000..888840f --- /dev/null +++ b/CONTENT/RP/MODELS/FLEA.BAK @@ -0,0 +1,47 @@ +[video] +skeleton=san.skl +skeletons=sas.skl +skeletont=sat.skl +skeletono=san.skl +skeletona=saa.skl +skeletonb=sab.skl +skeletonc=sac.skl +skeletond=saa.skl + +[collision] +name=sa_cv.sld + +[gauge] +image=sp_ga.gim + +[audio] +external=vtvext.scp +internal=flea.scp + +[gamedata] +class=VTVClassID +MoverMass=800.0 +MomentOfInertia=1.89 3.125 1.89 +PositiveLinearDragCoefficients=0.14 0.3 0.085 +NegativeLinearDragCoefficients=0.14 0.3 0.064 +AngularDragCoefficients=1.5 0.5 1.5 +FrictionCoefficient=0.4 +ElasticityCoefficient=0.2 +MinimumBounceSpeed=0.2 +MaxAcceleration=6.3 +MaxThrusterRotationRate=4.7 +GroundEffectDomainSquared=0.3 +GroundEffectRange=17.0 +MaxYawVelocity=50.0 +MaxAngularAcceleration=0.0 4.7 0.0 +AngularSpringFactor=17.0 +BankFactor=1.5 +DeathSpeed=275.0 +DeathScoreLoss=250.0 +MaxImpactSpeed=165.0 +Subsystems=flea.sub +DamageZones=flea.dmg + +[ControlMappings] +Thrustmaster=dpthr.ctl +L4=dpl4.ctl diff --git a/CONTENT/RP/MODELS/FLEA.DMG b/CONTENT/RP/MODELS/FLEA.DMG new file mode 100644 index 0000000..30a63ee --- /dev/null +++ b/CONTENT/RP/MODELS/FLEA.DMG @@ -0,0 +1,2 @@ +[dz_vtv] +WeaponDamagePoints=200 \ No newline at end of file diff --git a/CONTENT/RP/MODELS/FLEA.MOD b/CONTENT/RP/MODELS/FLEA.MOD new file mode 100644 index 0000000..724f041 --- /dev/null +++ b/CONTENT/RP/MODELS/FLEA.MOD @@ -0,0 +1,47 @@ +[video] +skeleton=san.skl +skeletons=sas.skl +skeletont=sat.skl +skeletono=san.skl +skeletona=saa.skl +skeletonb=sab.skl +skeletonc=sac.skl +skeletond=saa.skl + +[collision] +name=sa_cv.sld + +[gauge] +image=sp_ga.gim + +[audio] +external=vtvext.scp +internal=flea.scp + +[gamedata] +class=VTVClassID +MoverMass=800.0 +MomentOfInertia=1.89 3.125 1.89 +PositiveLinearDragCoefficients=0.14 0.3 0.085 +NegativeLinearDragCoefficients=0.14 0.3 0.064 +AngularDragCoefficients=1.5 0.5 1.5 +FrictionCoefficient=0.4 +ElasticityCoefficient=0.2 +MinimumBounceSpeed=0.2 +MaxAcceleration=6.3 +MaxThrusterRotationRate=4.7 +GroundEffectDomainSquared=0.3 +GroundEffectRange=17.0 +MaxYawVelocity=50.0 +MaxAngularAcceleration=0.0 4.7 0.0 +AngularSpringFactor=17.0 +BankFactor=1.5 +DeathSpeed=275.0 +DeathScoreLoss=250.0 +MaxImpactSpeed=140.0 +Subsystems=flea.sub +DamageZones=flea.dmg + +[ControlMappings] +Thrustmaster=dpthr.ctl +L4=dpl4.ctl diff --git a/CONTENT/RP/MODELS/FLEA.SUB b/CONTENT/RP/MODELS/FLEA.SUB new file mode 100644 index 0000000..fd52833 --- /dev/null +++ b/CONTENT/RP/MODELS/FLEA.SUB @@ -0,0 +1,30 @@ +[Booster1] +Type=BoosterClassID +BoosterCount=6 +BurnTime=8 +BoosterAcceleration=13 + +[Booster2] +Type=BoosterClassID +BoosterCount=6 +BurnTime=8 +BoosterAcceleration=13 + +[Chute] +Type=ChuteClassID +ChuteCount=3 +ReloadTime=3 +DragForce=0.14 +MinVelocity=20 +MaxRotation=60 +DeployTime=0.2 +SegmentPageName=sitechute + +[DemopackDropper] +Type=DemolitionPackDropperClassID +SubsystemFlag=DontReplicateFlag +AmmoCount=10 +LoadTime=5.0 +AmmoModelFile=demopack +SegmentPageName=sitemineport +MuzzleVelocity=0.0 -2.0 0.0 diff --git a/CONTENT/RP/MODELS/FT1.MOD b/CONTENT/RP/MODELS/FT1.MOD new file mode 100644 index 0000000..f39e2dc --- /dev/null +++ b/CONTENT/RP/MODELS/FT1.MOD @@ -0,0 +1,15 @@ +[video] +object=ft1.bgf ft1l.bgf + +[audio] +external=fultnk1.scp + +[gauge] +image=ft1_ga.gim + +[collision] +name=ft1_cv.sld + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/RP/MODELS/FT2.MOD b/CONTENT/RP/MODELS/FT2.MOD new file mode 100644 index 0000000..94a1834 --- /dev/null +++ b/CONTENT/RP/MODELS/FT2.MOD @@ -0,0 +1,16 @@ +[video] +object=ft2.bgf + +[audio] +external=fultnk1.scp + +[gauge] +image=ft1_ga.gim + +[collision] +name=ft2_cv.sld + +[gamedata] +class=UnscalableTerrainClassID + + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/FT2U.MOD b/CONTENT/RP/MODELS/FT2U.MOD new file mode 100644 index 0000000..32de825 --- /dev/null +++ b/CONTENT/RP/MODELS/FT2U.MOD @@ -0,0 +1,15 @@ +[video] +object=ft2.bgf + +[audio] +external=fultnk1.scp + +[gauge] +image=ft1_ga.gim + +[collision] +name=ft2u_cv.sld + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/RP/MODELS/GAR.MOD b/CONTENT/RP/MODELS/GAR.MOD new file mode 100644 index 0000000..19fa64d --- /dev/null +++ b/CONTENT/RP/MODELS/GAR.MOD @@ -0,0 +1,9 @@ +[collision] +name=gar_cv.sld + +[gauge] +image=gar_ga.gim + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/RP/MODELS/GAR1.MOD b/CONTENT/RP/MODELS/GAR1.MOD new file mode 100644 index 0000000..f708635 --- /dev/null +++ b/CONTENT/RP/MODELS/GAR1.MOD @@ -0,0 +1,9 @@ +[collision] +name=gar1_cv.sld + +[gauge] +image=gar1_ga.gim + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/RP/MODELS/GAR2.MOD b/CONTENT/RP/MODELS/GAR2.MOD new file mode 100644 index 0000000..9fc5ef4 --- /dev/null +++ b/CONTENT/RP/MODELS/GAR2.MOD @@ -0,0 +1,9 @@ +[collision] +name=gar2_cv.sld + +[gauge] +image=gar2_ga.gim + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/RP/MODELS/GATOR.BAK b/CONTENT/RP/MODELS/GATOR.BAK new file mode 100644 index 0000000..5c73446 --- /dev/null +++ b/CONTENT/RP/MODELS/GATOR.BAK @@ -0,0 +1,47 @@ +[video] +skeleton=man.skl +skeletons=mas.skl +skeletont=mat.skl +skeletono=man.skl +skeletona=maa.skl +skeletonb=mab.skl +skeletonc=mac.skl +skeletond=maa.skl + +[collision] +name=ma_cv.sld + +[gauge] +image=mu_ga.gim + +[audio] +external=vtvext.scp +internal=gator.scp + +[gamedata] +class=VTVClassID +MoverMass=1800.0 +MomentOfInertia=5.8125 10.125 5.8125 +PositiveLinearDragCoefficients=0.14 0.3 0.085 +NegativeLinearDragCoefficients=0.14 0.3 0.064 +AngularDragCoefficients=1.5 0.5 1.5 +FrictionCoefficient=0.4 +ElasticityCoefficient=0.2 +MinimumBounceSpeed=0.2 +MaxAcceleration=5.76 +MaxThrusterRotationRate=4.7 +GroundEffectDomainSquared=0.11111111 +GroundEffectRange=5.0 +MaxYawVelocity=42.5 +MaxAngularAcceleration=0.0 4.7 0.0 +AngularSpringFactor=12.4 +BankFactor=1.0 +DeathSpeed=275.0 +DeathScoreLoss=250.0 +MaxImpactSpeed=300.0 +Subsystems=gator.sub +DamageZones=bttlbrg.dmg + +[ControlMappings] +Thrustmaster=gatorthr.ctl +L4=gatorl4.ctl diff --git a/CONTENT/RP/MODELS/GATOR.MOD b/CONTENT/RP/MODELS/GATOR.MOD new file mode 100644 index 0000000..f1a9282 --- /dev/null +++ b/CONTENT/RP/MODELS/GATOR.MOD @@ -0,0 +1,47 @@ +[video] +skeleton=man.skl +skeletons=mas.skl +skeletont=mat.skl +skeletono=man.skl +skeletona=maa.skl +skeletonb=mab.skl +skeletonc=mac.skl +skeletond=maa.skl + +[collision] +name=ma_cv.sld + +[gauge] +image=mu_ga.gim + +[audio] +external=vtvext.scp +internal=gator.scp + +[gamedata] +class=VTVClassID +MoverMass=1800.0 +MomentOfInertia=5.8125 10.125 5.8125 +PositiveLinearDragCoefficients=0.14 0.3 0.085 +NegativeLinearDragCoefficients=0.14 0.3 0.064 +AngularDragCoefficients=1.5 0.5 1.5 +FrictionCoefficient=0.4 +ElasticityCoefficient=0.2 +MinimumBounceSpeed=0.2 +MaxAcceleration=5.76 +MaxThrusterRotationRate=4.7 +GroundEffectDomainSquared=0.11111111 +GroundEffectRange=5.0 +MaxYawVelocity=42.5 +MaxAngularAcceleration=0.0 4.7 0.0 +AngularSpringFactor=12.4 +BankFactor=1.0 +DeathSpeed=275.0 +DeathScoreLoss=250.0 +MaxImpactSpeed=275.0 +Subsystems=gator.sub +DamageZones=bttlbrg.dmg + +[ControlMappings] +Thrustmaster=gatorthr.ctl +L4=gatorl4.ctl diff --git a/CONTENT/RP/MODELS/GATOR.SUB b/CONTENT/RP/MODELS/GATOR.SUB new file mode 100644 index 0000000..4d0b271 --- /dev/null +++ b/CONTENT/RP/MODELS/GATOR.SUB @@ -0,0 +1,40 @@ +[Booster1] +Type=BoosterClassID +BoosterCount=6 +BurnTime=8 +BoosterAcceleration=8 + +[Booster2] +Type=BoosterClassID +BoosterCount=6 +BurnTime=8 +BoosterAcceleration=8 + +[Chute] +Type=ChuteClassID +ChuteCount=3 +ReloadTime=3 +DragForce=0.14 +MinVelocity=20 +MaxRotation=60 +DeployTime=0.2 +SegmentPageName=sitechute + +[RivetGun] +Type=RivetGunClassID +SubsystemFlags=DontReplicateFlag +AmmoCount=300 +LoadTime=0.5 +AmmoModelFile=hrivet +MuzzleVelocity=0.0 6.5 350.0 +SegmentPageName=sitefrontcenterport +RearSiteName=sitebackcenterport + +[DemopackDropper] +Type=DemolitionPackDropperClassID +SubsystemFlags=DontReplicateFlag +AmmoCount=5.0 +LoadTime=0.5 +AmmoModelFile=demopack +MuzzleVelocity=0.0 -2.0 0.0 +SegmentPageName=sitemineport \ No newline at end of file diff --git a/CONTENT/RP/MODELS/GATORTHR.CTL b/CONTENT/RP/MODELS/GATORTHR.CTL new file mode 100644 index 0000000..f788003 --- /dev/null +++ b/CONTENT/RP/MODELS/GATORTHR.CTL @@ -0,0 +1,89 @@ +[Booster1_BJTH] +IOMapping=ButtonJoystickThumbHigh +Type=EventMapping +Mode=ModePreset1,ModePreset2,ModePreset3,ModePreset4,ModePreset5,ModePreset6 +Subsystem=Booster1 +MessageID=Activate + +[Booster2_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=EventMapping +Mode=ModePreset6 +Subsystem=Booster2 +MessageID=Activate + +//----------------------------------------------------------------------- +// Chute system mappings +// +[Chute_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=EventMapping +Mode=ModePreset1,ModePreset2 +Subsystem=Chute +MessageID=Activate + +[Chute_BJP] +IOMapping=ButtonJoystickPinky +Type=EventMapping +Mode=ModePreset4 +Subsystem=Chute +MessageID=Activate + +//----------------------------------------------------------------------- +// Rivet gun mappings +// +[RivetGun_BJT] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Mode=ModePreset1,ModePreset2,ModePreset3,ModePreset4,ModePreset5 +Subsystem=RivetGun +AttributeID=TriggerState + +[RivetGun_BJP] +IOMapping=ButtonJoystickPinky +Type=DirectMapping +Mode=ModePreset6 +Subsystem=RivetGun +AttributeID=TriggerState + +//----------------------------------------------------------------------- +// Demopack dropper mappings +// +[DemoPack_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=DirectMapping +Mode=ModePreset5 +Subsystem=DemopackDropper +AttributeID=TriggerState + +//----------------------------------------------------------- +// Other joystick mappings +// +[LiftCut_BJP] +IOMapping=ButtonJoystickPinky +Type=DirectMapping +Mode=ModePreset2,ModePreset5 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[LiftCut_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=DirectMapping +Mode=ModePreset3,ModePreset4 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[LiftCut_BJT] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Mode=ModePreset6 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[PTT_BJTP] +IOMapping=ButtonJoystickPinky +Type=EventMapping +Mode=ModePreset1,ModePreset3 +Subsystem=ControlsMapper +MessageID=ActivatePTT + diff --git a/CONTENT/RP/MODELS/GR1.MOD b/CONTENT/RP/MODELS/GR1.MOD new file mode 100644 index 0000000..1b9f234 --- /dev/null +++ b/CONTENT/RP/MODELS/GR1.MOD @@ -0,0 +1,12 @@ +[video] +object=gr1.bgf gr1l.bgf + +[collision] +name=gr1_cv.sld + +[gauge] +image=gr1_ga.gim + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/RP/MODELS/GR2.MOD b/CONTENT/RP/MODELS/GR2.MOD new file mode 100644 index 0000000..6dac2cc --- /dev/null +++ b/CONTENT/RP/MODELS/GR2.MOD @@ -0,0 +1,12 @@ +[video] +object=gr2.bgf gr2l.bgf + +[collision] +name=gr2_cv.sld + +[gauge] +image=gr2_ga.gim + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/RP/MODELS/GRUNT.BAK b/CONTENT/RP/MODELS/GRUNT.BAK new file mode 100644 index 0000000..bc2d0b8 --- /dev/null +++ b/CONTENT/RP/MODELS/GRUNT.BAK @@ -0,0 +1,47 @@ +[video] +skeleton=man.skl +skeletons=mas.skl +skeletont=mat.skl +skeletono=man.skl +skeletona=maa.skl +skeletonb=mab.skl +skeletonc=mac.skl +skeletond=maa.skl + +[collision] +name=ma_cv.sld + +[gauge] +image=mu_ga.gim + +[audio] +external=vtvext.scp +internal=grunt.scp + +[gamedata] +class=VTVClassID +MoverMass=1800.0 +MomentOfInertia=5.8125 10.125 5.8125 +PositiveLinearDragCoefficients=0.14 0.3 0.085 +NegativeLinearDragCoefficients=0.14 0.3 0.064 +AngularDragCoefficients=1.5 0.5 1.5 +FrictionCoefficient=0.4 +ElasticityCoefficient=0.2 +MinimumBounceSpeed=0.2 +MaxAcceleration=5.88 +MaxThrusterRotationRate=4.7 +GroundEffectDomainSquared=0.11111111 +GroundEffectRange=5.0 +MaxYawVelocity=42.5 +MaxAngularAcceleration=0.0 4.7 0.0 +AngularSpringFactor=12.4 +BankFactor=1.0 +DeathSpeed=275.0 +DeathScoreLoss=250.0 +MaxImpactSpeed=307.0 +Subsystems=grunt.sub +DamageZones=grunt.dmg + +[ControlMappings] +Thrustmaster=rivetthr.ctl +L4=rivetl4.ctl diff --git a/CONTENT/RP/MODELS/GRUNT.DMG b/CONTENT/RP/MODELS/GRUNT.DMG new file mode 100644 index 0000000..7ef5977 --- /dev/null +++ b/CONTENT/RP/MODELS/GRUNT.DMG @@ -0,0 +1,2 @@ +[dz_vtv] +WeaponDamagePoints=250 \ No newline at end of file diff --git a/CONTENT/RP/MODELS/GRUNT.MOD b/CONTENT/RP/MODELS/GRUNT.MOD new file mode 100644 index 0000000..7bd647f --- /dev/null +++ b/CONTENT/RP/MODELS/GRUNT.MOD @@ -0,0 +1,47 @@ +[video] +skeleton=man.skl +skeletons=mas.skl +skeletont=mat.skl +skeletono=man.skl +skeletona=maa.skl +skeletonb=mab.skl +skeletonc=mac.skl +skeletond=maa.skl + +[collision] +name=ma_cv.sld + +[gauge] +image=mu_ga.gim + +[audio] +external=vtvext.scp +internal=grunt.scp + +[gamedata] +class=VTVClassID +MoverMass=1800.0 +MomentOfInertia=5.8125 10.125 5.8125 +PositiveLinearDragCoefficients=0.14 0.3 0.085 +NegativeLinearDragCoefficients=0.14 0.3 0.064 +AngularDragCoefficients=1.5 0.5 1.5 +FrictionCoefficient=0.4 +ElasticityCoefficient=0.2 +MinimumBounceSpeed=0.2 +MaxAcceleration=5.88 +MaxThrusterRotationRate=4.7 +GroundEffectDomainSquared=0.11111111 +GroundEffectRange=5.0 +MaxYawVelocity=42.5 +MaxAngularAcceleration=0.0 4.7 0.0 +AngularSpringFactor=12.4 +BankFactor=1.0 +DeathSpeed=275.0 +DeathScoreLoss=250.0 +MaxImpactSpeed=282.0 +Subsystems=grunt.sub +DamageZones=grunt.dmg + +[ControlMappings] +Thrustmaster=rivetthr.ctl +L4=rivetl4.ctl diff --git a/CONTENT/RP/MODELS/GRUNT.SUB b/CONTENT/RP/MODELS/GRUNT.SUB new file mode 100644 index 0000000..bc0ae86 --- /dev/null +++ b/CONTENT/RP/MODELS/GRUNT.SUB @@ -0,0 +1,31 @@ +[Booster1] +Type=BoosterClassID +BoosterCount=6 +BurnTime=8 +BoosterAcceleration=8 + +[Booster2] +Type=BoosterClassID +BoosterCount=6 +BurnTime=8 +BoosterAcceleration=8 + +[Chute] +Type=ChuteClassID +ChuteCount=3 +ReloadTime=3 +DragForce=0.14 +MinVelocity=20 +MaxRotation=60 +DeployTime=0.2 +SegmentPageName=sitechute + +[RivetGun] +Type=RivetGunClassID +SubsystemFlags=DontReplicateFlag +AmmoCount=300 +LoadTime=0.5 +AmmoModelFile=hrivet +MuzzleVelocity=0.0 6.5 350.0 +SegmentPageName=sitefrontcenterport +RearSiteName=sitebackcenterport diff --git a/CONTENT/RP/MODELS/HDOFF.MOD b/CONTENT/RP/MODELS/HDOFF.MOD new file mode 100644 index 0000000..399e594 --- /dev/null +++ b/CONTENT/RP/MODELS/HDOFF.MOD @@ -0,0 +1,6 @@ +[collision] +name=hdoff_cv.sld + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/RP/MODELS/HOME.MOD b/CONTENT/RP/MODELS/HOME.MOD new file mode 100644 index 0000000..8471ce7 --- /dev/null +++ b/CONTENT/RP/MODELS/HOME.MOD @@ -0,0 +1,5 @@ +[gamedata] +class=ScoreZoneClassID +ScoreZoneType=LocalSequential +PointValue=500 +Extents=home_sz.sld \ No newline at end of file diff --git a/CONTENT/RP/MODELS/HRIVET.MOD b/CONTENT/RP/MODELS/HRIVET.MOD new file mode 100644 index 0000000..7e17d4f --- /dev/null +++ b/CONTENT/RP/MODELS/HRIVET.MOD @@ -0,0 +1,22 @@ +[video] +object=rivet.bgf + +[audio] +external=rivet.scp + +[gauge] +image=rivet_ga.gim + +[gamedata] +class=RivetClassID +MoverMass=2.0 +MomentOfInertia=1.75 3.125 1.75 +PositiveLinearDragCoefficients=0.14 0.14 0.05 +NegativeLinearDragCoefficients=0.14 0.14 0.05 +AngularDragCoefficients=0.3 0.5 0.3 +FrictionCoefficient=0.0 +ElasticityCoefficient=0.0 +MinimumBounceSpeed=0.0 +DamageAmount=25.0 +DamageType=BallisticDamage +ExplosionModelFile=rivetexp diff --git a/CONTENT/RP/MODELS/HV1.MOD b/CONTENT/RP/MODELS/HV1.MOD new file mode 100644 index 0000000..b33a188 --- /dev/null +++ b/CONTENT/RP/MODELS/HV1.MOD @@ -0,0 +1,9 @@ +[video] +object=hv1.bgf hv1l.bgf + +[collision] +name=hv1_cv.sld + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/RP/MODELS/HV2.MOD b/CONTENT/RP/MODELS/HV2.MOD new file mode 100644 index 0000000..322e9a1 --- /dev/null +++ b/CONTENT/RP/MODELS/HV2.MOD @@ -0,0 +1,9 @@ +[video] +object=hv2.bgf + +[collision] +name=hv2_cv.sld + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/RP/MODELS/HV4.MOD b/CONTENT/RP/MODELS/HV4.MOD new file mode 100644 index 0000000..9f1ff7e --- /dev/null +++ b/CONTENT/RP/MODELS/HV4.MOD @@ -0,0 +1,10 @@ +[video] +object=hv4.bgf + +[collision] +name=hv4_cv.sld + +[gamedata] +class=UnscalableTerrainClassID + + diff --git a/CONTENT/RP/MODELS/HV5.MOD b/CONTENT/RP/MODELS/HV5.MOD new file mode 100644 index 0000000..b81fc71 --- /dev/null +++ b/CONTENT/RP/MODELS/HV5.MOD @@ -0,0 +1,15 @@ +[video] +object=hv5.bgf + +[collision] +name=hv5_cv.sld + +[gauge] +image=hv5_ga.gim + +[audio] +external=hvac2.scp + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/RP/MODELS/HV6.MOD b/CONTENT/RP/MODELS/HV6.MOD new file mode 100644 index 0000000..f0e4bb0 --- /dev/null +++ b/CONTENT/RP/MODELS/HV6.MOD @@ -0,0 +1,12 @@ +[video] +object=hv6.bgf + +[collision] +name=hv6_cv.sld + +[audio] +external=hvac1.scp + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/RP/MODELS/HV7.MOD b/CONTENT/RP/MODELS/HV7.MOD new file mode 100644 index 0000000..a48f1dc --- /dev/null +++ b/CONTENT/RP/MODELS/HV7.MOD @@ -0,0 +1,12 @@ +[video] +object=hv7.bgf + +[collision] +name=hv7_cv.sld + +[audio] +external=hvac3.scp + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/RP/MODELS/HVA.MOD b/CONTENT/RP/MODELS/HVA.MOD new file mode 100644 index 0000000..70a78d6 --- /dev/null +++ b/CONTENT/RP/MODELS/HVA.MOD @@ -0,0 +1,10 @@ +[video] +object=hva.bgf + +[collision] +name=hva_cv.sld + +[gamedata] +class=UnscalableTerrainClassID + + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/HVB.MOD b/CONTENT/RP/MODELS/HVB.MOD new file mode 100644 index 0000000..523e050 --- /dev/null +++ b/CONTENT/RP/MODELS/HVB.MOD @@ -0,0 +1,10 @@ +[video] +object=hvb.bgf + +[collision] +name=hvb_cv.sld + +[gamedata] +class=UnscalableTerrainClassID + + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/HVC.MOD b/CONTENT/RP/MODELS/HVC.MOD new file mode 100644 index 0000000..0000ed8 --- /dev/null +++ b/CONTENT/RP/MODELS/HVC.MOD @@ -0,0 +1,10 @@ +[video] +object=hvc.bgf + +[collision] +name=hvc_cv.sld + +[gamedata] +class=UnscalableTerrainClassID + + diff --git a/CONTENT/RP/MODELS/HVE.MOD b/CONTENT/RP/MODELS/HVE.MOD new file mode 100644 index 0000000..553ac31 --- /dev/null +++ b/CONTENT/RP/MODELS/HVE.MOD @@ -0,0 +1,12 @@ +[video] +object=hve.bgf hvel.bgf + +[collision] +name=hve_cv.sld + +[gauge] +image=hve_ga.gim + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/RP/MODELS/LASEREXP.MOD b/CONTENT/RP/MODELS/LASEREXP.MOD new file mode 100644 index 0000000..5f419a0 --- /dev/null +++ b/CONTENT/RP/MODELS/LASEREXP.MOD @@ -0,0 +1,10 @@ +[video] +object=6 + +[audio] +external=laserexp.scp + +[gamedata] +class=ExplosionClassID +ExplosionResourceTable=LaserExplosionResourceTable +ExplosionDuration=3.0 \ No newline at end of file diff --git a/CONTENT/RP/MODELS/LASERL4.CTL b/CONTENT/RP/MODELS/LASERL4.CTL new file mode 100644 index 0000000..57336bd --- /dev/null +++ b/CONTENT/RP/MODELS/LASERL4.CTL @@ -0,0 +1,202 @@ +[Booster1_BALL1_1] +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Mode=ModeNonConfig +Subsystem=Booster1 +MessageID=Activate + +[Booster1_BALL1_2] +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Mode=ModeConfiguring +Subsystem=Booster1 +MessageID=ConfigureMappables + +[Booster1_BALL2_1] +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Mode=ModeNonConfig +Subsystem=Booster1 +MessageID=Activate + +[Booster1_BALL2_2] +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Mode=ModeConfiguring +Subsystem=Booster1 +MessageID=ConfigureMappables + +[Booster1_BJTH] +IOMapping=ButtonJoystickThumbHigh +Type=EventMapping +Mode=ModePreset1,ModePreset2,ModePreset3,ModePreset4,ModePreset5,ModePreset6 +Subsystem=Booster1 +MessageID=Activate + +//----------------------------------------------------------------------- +// Booster 2 mappings +// +[Booster2_BALL3_1] +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Mode=ModeNonConfig +Subsystem=Booster2 +MessageID=Activate + +[Booster2_BALL3_2] +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Mode=ModeConfiguring +Subsystem=Booster2 +MessageID=ConfigureMappables + +[Booster2_BALL4_1] +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Mode=ModeNonConfig +Subsystem=Booster2 +MessageID=Activate + +[Booster2_BALL4_2] +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Mode=ModeConfiguring +Subsystem=Booster2 +MessageID=ConfigureMappables + +[Booster2_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=EventMapping +Mode=ModePreset6 +Subsystem=Booster2 +MessageID=Activate + +//----------------------------------------------------------------------- +// Chute system mappings +// +[Chute_BALL5_1] +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Mode=ModeNonConfig +Subsystem=Chute +MessageID=Activate + +[Chute_BALL5_2] +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Mode=ModeConfiguring +Subsystem=Chute +MessageID=ConfigureMappables + +[Chute_BALL6_1] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Mode=ModeNonConfig +Subsystem=Chute +MessageID=Activate + +[Chute_BALL6_2] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Mode=ModeConfiguring +Subsystem=Chute +MessageID=ConfigureMappables + +[Chute_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=EventMapping +Mode=ModePreset1,ModePreset2 +Subsystem=Chute +MessageID=Activate + +[Chute_BJP] +IOMapping=ButtonJoystickPinky +Type=EventMapping +Mode=ModePreset4 +Subsystem=Chute +MessageID=Activate + +//----------------------------------------------------------------------- +// Laser gun mappings +// + +[LaserGun_BALR1_1] +IOMapping=ButtonAuxLowerRight1 +Type=DirectMapping +Mode=ModeNonConfig +Subsystem=LaserGun +AttributeID=TriggerState + +[LaserGun_BALR1_2] +IOMapping=ButtonAuxLowerRight1 +Type=EventMapping +Mode=ModeConfiguring +Subsystem=LaserGun +MessageID=ConfigureMappables + +[LaserGun_BALR2_1] +IOMapping=ButtonAuxLowerRight2 +Type=DirectMapping +Mode=ModeNonConfig +Subsystem=LaserGun +AttributeID=TriggerState + +[LaserGun_BALR2_2] +IOMapping=ButtonAuxLowerRight2 +Type=EventMapping +Mode=ModeConfiguring +Subsystem=LaserGun +MessageID=ConfigureMappables + +[LaserGun_BJT] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Mode=ModePreset1,ModePreset2,ModePreset3,ModePreset4,ModePreset5 +Subsystem=LaserGun +AttributeID=TriggerState + +[LaserGun_BJP] +IOMapping=ButtonJoystickPinky +Type=DirectMapping +Mode=ModePreset6 +Subsystem=LaserGun +AttributeID=TriggerState + +//----------------------------------------------------------- +// Other joystick mappings +// +[LiftCut_BJP] +IOMapping=ButtonJoystickPinky +Type=DirectMapping +Mode=ModePreset2,ModePreset5 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[LiftCut_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=DirectMapping +Mode=ModePreset3,ModePreset4 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[LiftCut_BJT] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Mode=ModePreset6 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[Horn_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=EventMapping +Mode=ModePreset5 +Subsystem=ControlsMapper +MessageID=ActivateHorn + +[PTT_BJTP] +IOMapping=ButtonJoystickPinky +Type=EventMapping +Mode=ModePreset1,ModePreset3 +Subsystem=ControlsMapper +MessageID=ActivatePTT + diff --git a/CONTENT/RP/MODELS/LASERTHR.CTL b/CONTENT/RP/MODELS/LASERTHR.CTL new file mode 100644 index 0000000..8281ec0 --- /dev/null +++ b/CONTENT/RP/MODELS/LASERTHR.CTL @@ -0,0 +1,86 @@ +[LaserGun_BJT] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Mode=ModePreset1,ModePreset2,ModePreset3,ModePreset4,ModePreset5 +Subsystem=LaserGun +AttributeID=TriggerState + +[LaserGun_BJP] +IOMapping=ButtonJoystickPinky +Type=DirectMapping +Mode=ModePreset6 +Subsystem=LaserGun +AttributeID=TriggerState + +//---------------------------------------------------------- +// Booster mappings +// +[Booster1_BJTH] +IOMapping=ButtonJoystickThumbHigh +Type=EventMapping +Mode=ModePreset1,ModePreset2,ModePreset3,ModePreset4,ModePreset5,ModePreset6 +Subsystem=Booster1 +MessageID=Activate + +[Booster2_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=EventMapping +Mode=ModePreset6 +Subsystem=Booster2 +MessageID=Activate + +//---------------------------------------------------------- +// Chute mappings +// +[Chute_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=EventMapping +Mode=ModePreset1,ModePreset2 +Subsystem=Chute +MessageID=Activate + +[Chute_BJP] +IOMapping=ButtonJoystickPinky +Type=EventMapping +Mode=ModePreset4 +Subsystem=Chute +MessageID=Activate + +//----------------------------------------------------------- +// Other joystick mappings +// +[LiftCut_BJP] +IOMapping=ButtonJoystickPinky +Type=DirectMapping +Mode=ModePreset2,ModePreset5 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[LiftCut_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=DirectMapping +Mode=ModePreset3,ModePreset4 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[LiftCut_BJT] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Mode=ModePreset6 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[Horn_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=EventMapping +Mode=ModePreset5 +Subsystem=ControlsMapper +MessageID=ActivateHorn + +[PTT_BJTP] +IOMapping=ButtonJoystickPinky +Type=EventMapping +Mode=ModePreset1,ModePreset3 +Subsystem=ControlsMapper +MessageID=ActivatePTT + diff --git a/CONTENT/RP/MODELS/LAZDRIL.MOD b/CONTENT/RP/MODELS/LAZDRIL.MOD new file mode 100644 index 0000000..f225541 --- /dev/null +++ b/CONTENT/RP/MODELS/LAZDRIL.MOD @@ -0,0 +1,15 @@ +[video] +object=lazdril.bgf + +;[collision] +;name=ct1_cv.sld + +[audio] +external=wellhd1.scp + +;[gauge] +;image=ct1_ga.gim + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/RP/MODELS/LEPTON.BAK b/CONTENT/RP/MODELS/LEPTON.BAK new file mode 100644 index 0000000..9b7364f --- /dev/null +++ b/CONTENT/RP/MODELS/LEPTON.BAK @@ -0,0 +1,48 @@ +[video] +skeleton=lun.skl +skeletons=lus.skl +skeletont=lut.skl +skeletono=lun.skl +skeletona=lua.skl +skeletonb=lub.skl +skeletonc=luc.skl +skeletond=lua.skl + +[collision] +name=lu_cv.sld + +[gauge] +image=sp_ga.gim + +[audio] +external=vtvext.scp +internal=lepton.scp + +[gamedata] +class=VTVClassID +MoverMass=600.0 +MomentOfInertia=2.02 3.38 2.02 +PositiveLinearDragCoefficients=0.14 0.3 0.08 +NegativeLinearDragCoefficients=0.14 0.3 0.052 +AngularDragCoefficients=1.5 0.5 1.5 +FrictionCoefficient=0.4 +ElasticityCoefficient=0.2 +MinimumBounceSpeed=0.2 +MaxAcceleration=6.4 +MaxThrusterRotationRate=4.7 +GroundEffectDomainSquared=0.3 +GroundEffectRange=17.0 +MaxYawVelocity=70 +MaxAngularAcceleration=0.0 4.7 0.0 +AngularSpringFactor=17.0 +BankFactor=1.5 +DeathSpeed=275.0 +DeathScoreLoss=250.0 +MaxImpactSpeed=110.0 +Subsystems=lepton.sub +DamageZones=lepton.dmg +BottomArmorScale=1.0 + +[ControlMappings] +Thrustmaster=2x6thr.ctl +L4=2x6l4.ctl diff --git a/CONTENT/RP/MODELS/LEPTON.DMG b/CONTENT/RP/MODELS/LEPTON.DMG new file mode 100644 index 0000000..414113c --- /dev/null +++ b/CONTENT/RP/MODELS/LEPTON.DMG @@ -0,0 +1,2 @@ +[dz_vtv] +WeaponDamagePoints=50.0 diff --git a/CONTENT/RP/MODELS/LEPTON.MOD b/CONTENT/RP/MODELS/LEPTON.MOD new file mode 100644 index 0000000..192ac16 --- /dev/null +++ b/CONTENT/RP/MODELS/LEPTON.MOD @@ -0,0 +1,48 @@ +[video] +skeleton=lun.skl +skeletons=lus.skl +skeletont=lut.skl +skeletono=lun.skl +skeletona=lua.skl +skeletonb=lub.skl +skeletonc=luc.skl +skeletond=lua.skl + +[collision] +name=lu_cv.sld + +[gauge] +image=sp_ga.gim + +[audio] +external=vtvext.scp +internal=lepton.scp + +[gamedata] +class=VTVClassID +MoverMass=600.0 +MomentOfInertia=2.02 3.38 2.02 +PositiveLinearDragCoefficients=0.14 0.3 0.08 +NegativeLinearDragCoefficients=0.14 0.3 0.052 +AngularDragCoefficients=1.5 0.5 1.5 +FrictionCoefficient=0.4 +ElasticityCoefficient=0.2 +MinimumBounceSpeed=0.2 +MaxAcceleration=6.4 +MaxThrusterRotationRate=4.7 +GroundEffectDomainSquared=0.3 +GroundEffectRange=17.0 +MaxYawVelocity=70 +MaxAngularAcceleration=0.0 4.7 0.0 +AngularSpringFactor=17.0 +BankFactor=1.5 +DeathSpeed=275.0 +DeathScoreLoss=250.0 +MaxImpactSpeed=85.0 +Subsystems=lepton.sub +DamageZones=lepton.dmg +BottomArmorScale=1.0 + +[ControlMappings] +Thrustmaster=2x6thr.ctl +L4=2x6l4.ctl diff --git a/CONTENT/RP/MODELS/LEPTON.SUB b/CONTENT/RP/MODELS/LEPTON.SUB new file mode 100644 index 0000000..c5ad618 --- /dev/null +++ b/CONTENT/RP/MODELS/LEPTON.SUB @@ -0,0 +1,21 @@ +[Booster1] +Type=BoosterClassID +BoosterCount=10 +BurnTime=8 +BoosterAcceleration=13 + +[Booster2] +Type=BoosterClassID +BoosterCount=10 +BurnTime=8 +BoosterAcceleration=13 + +[Chute] +Type=ChuteClassID +ChuteCount=4 +ReloadTime=3 +DragForce=0.14 +MinVelocity=20 +MaxRotation=60 +DeployTime=0.2 +SegmentPageName=sitechute diff --git a/CONTENT/RP/MODELS/LRIVET.MOD b/CONTENT/RP/MODELS/LRIVET.MOD new file mode 100644 index 0000000..50a3f84 --- /dev/null +++ b/CONTENT/RP/MODELS/LRIVET.MOD @@ -0,0 +1,22 @@ +[video] +object=rivet.bgf + +[audio] +external=rivet.scp + +[gauge] +image=rivet_ga.gim + +[gamedata] +class=RivetClassID +MoverMass=2.0 +MomentOfInertia=1.75 3.125 1.75 +PositiveLinearDragCoefficients=0.14 0.14 0.05 +NegativeLinearDragCoefficients=0.14 0.14 0.05 +AngularDragCoefficients=0.3 0.5 0.3 +FrictionCoefficient=0.0 +ElasticityCoefficient=0.0 +MinimumBounceSpeed=0.0 +DamageAmount=10.0 +DamageType=BallisticDamage +ExplosionModelFile=rivetexp diff --git a/CONTENT/RP/MODELS/LSREXPC.MOD b/CONTENT/RP/MODELS/LSREXPC.MOD new file mode 100644 index 0000000..22318ea --- /dev/null +++ b/CONTENT/RP/MODELS/LSREXPC.MOD @@ -0,0 +1,9 @@ +[video] +object=6 + +[gamedata] +class=ExplosionClassID +ExplosionDuration=3.0 + +[audio] +external=lsrexpc.scp diff --git a/CONTENT/RP/MODELS/LSREXPI.MOD b/CONTENT/RP/MODELS/LSREXPI.MOD new file mode 100644 index 0000000..1293387 --- /dev/null +++ b/CONTENT/RP/MODELS/LSREXPI.MOD @@ -0,0 +1,9 @@ +[video] +object=6 + +[gamedata] +class=ExplosionClassID +ExplosionDuration=3.0 + +[audio] +external=lsrexpi.scp diff --git a/CONTENT/RP/MODELS/MAN.DMG b/CONTENT/RP/MODELS/MAN.DMG new file mode 100644 index 0000000..152f9ed --- /dev/null +++ b/CONTENT/RP/MODELS/MAN.DMG @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/MAN.MOD b/CONTENT/RP/MODELS/MAN.MOD new file mode 100644 index 0000000..152f9ed --- /dev/null +++ b/CONTENT/RP/MODELS/MAN.MOD @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/MANTIS.BAK b/CONTENT/RP/MODELS/MANTIS.BAK new file mode 100644 index 0000000..7e4badb --- /dev/null +++ b/CONTENT/RP/MODELS/MANTIS.BAK @@ -0,0 +1,49 @@ +[video] +skeleton=ban.skl +skeletons=bas.skl +skeletont=bat.skl +skeletono=ban.skl +skeletona=baa.skl +skeletonb=bab.skl +skeletonc=bac.skl +skeletond=baa.skl + +[collision] +name=ba_cv.sld + +[gauge] +image=bu_ga.gim + +[audio] +external=vtvext.scp +internal=mantis.scp + +[gamedata] +class=VTVClassID +MoverMass=2800.0 +MomentOfInertia=4.75 8 4.75 +PositiveLinearDragCoefficients=0.17 0.3 0.085 +NegativeLinearDragCoefficients=0.15 0.3 0.066 +AngularDragCoefficients=1.5 0.5 1.5 +FrictionCoefficient=0.4 +ElasticityCoefficient=0.2 +MinimumBounceSpeed=0.2 +MaxAcceleration=5.22 +MaxThrusterRotationRate=4.7 +GroundEffectDomainSquared=0.05 +GroundEffectRange=5.0 +MaxYawVelocity=37.5 +MaxAngularAcceleration=0.0 4.7 0.0 +AngularSpringFactor=10.0 +BankFactor=0.8 +DeathSpeed=275.0 +DeathScoreLoss=250.0 +MaxImpactSpeed=374.0 +Subsystems=mantis.sub +DamageZones=mantis.dmg +ReticleY=.11 + +[ControlMappings] +Thrustmaster=2lsrthr.ctl +L4=2laserl4.ctl + diff --git a/CONTENT/RP/MODELS/MANTIS.DMG b/CONTENT/RP/MODELS/MANTIS.DMG new file mode 100644 index 0000000..db4919f --- /dev/null +++ b/CONTENT/RP/MODELS/MANTIS.DMG @@ -0,0 +1,2 @@ +[dz_vtv] +WeaponDamagePoints=300 \ No newline at end of file diff --git a/CONTENT/RP/MODELS/MANTIS.MOD b/CONTENT/RP/MODELS/MANTIS.MOD new file mode 100644 index 0000000..7e4badb --- /dev/null +++ b/CONTENT/RP/MODELS/MANTIS.MOD @@ -0,0 +1,49 @@ +[video] +skeleton=ban.skl +skeletons=bas.skl +skeletont=bat.skl +skeletono=ban.skl +skeletona=baa.skl +skeletonb=bab.skl +skeletonc=bac.skl +skeletond=baa.skl + +[collision] +name=ba_cv.sld + +[gauge] +image=bu_ga.gim + +[audio] +external=vtvext.scp +internal=mantis.scp + +[gamedata] +class=VTVClassID +MoverMass=2800.0 +MomentOfInertia=4.75 8 4.75 +PositiveLinearDragCoefficients=0.17 0.3 0.085 +NegativeLinearDragCoefficients=0.15 0.3 0.066 +AngularDragCoefficients=1.5 0.5 1.5 +FrictionCoefficient=0.4 +ElasticityCoefficient=0.2 +MinimumBounceSpeed=0.2 +MaxAcceleration=5.22 +MaxThrusterRotationRate=4.7 +GroundEffectDomainSquared=0.05 +GroundEffectRange=5.0 +MaxYawVelocity=37.5 +MaxAngularAcceleration=0.0 4.7 0.0 +AngularSpringFactor=10.0 +BankFactor=0.8 +DeathSpeed=275.0 +DeathScoreLoss=250.0 +MaxImpactSpeed=374.0 +Subsystems=mantis.sub +DamageZones=mantis.dmg +ReticleY=.11 + +[ControlMappings] +Thrustmaster=2lsrthr.ctl +L4=2laserl4.ctl + diff --git a/CONTENT/RP/MODELS/MANTIS.SUB b/CONTENT/RP/MODELS/MANTIS.SUB new file mode 100644 index 0000000..0ba5114 --- /dev/null +++ b/CONTENT/RP/MODELS/MANTIS.SUB @@ -0,0 +1,49 @@ +[Booster1] +Type=BoosterClassID +BoosterCount=6 +BurnTime=8 +BoosterAcceleration=7 + +[Booster2] +Type=BoosterClassID +BoosterCount=6 +BurnTime=8 +BoosterAcceleration=7 + +[Chute] +Type=ChuteClassID +ChuteCount=3 +ReloadTime=3 +DragForce=0.14 +MinVelocity=20 +MaxRotation=60 +DeployTime=0.2 +SegmentPageName=sitechute + +[LaserGun1] +Type=LaserDrillClassID +FullChargeDuration=4.0 +LaserDuration=0.10 +PulseDuration=0.25 +ChargePerSecond=.10 +DrainPerSecond=.25 +LaserLength=100.0 +ExplosionModelFile=laserexp +AmmoModelFile=mrivet +DamageAmount=60.0 +SegmentPageName=sitefrontleftport +RearSiteName=sitebackleftport + +[LaserGun2] +Type=LaserDrillClassID +FullChargeDuration=4.0 +LaserDuration=0.10 +PulseDuration=0.25 +ChargePerSecond=0.10 +DrainPerSecond=0.25 +LaserLength=100.0 +ExplosionModelFile=laserexp +AmmoModelFile=mrivet +DamageAmount=60.0 +SegmentPageName=sitefrontrightport +SiteRearName=sitebackrightport diff --git a/CONTENT/RP/MODELS/MAS.CTL b/CONTENT/RP/MODELS/MAS.CTL new file mode 100644 index 0000000..152f9ed --- /dev/null +++ b/CONTENT/RP/MODELS/MAS.CTL @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/MAS.DMG b/CONTENT/RP/MODELS/MAS.DMG new file mode 100644 index 0000000..152f9ed --- /dev/null +++ b/CONTENT/RP/MODELS/MAS.DMG @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/MAS.MOD b/CONTENT/RP/MODELS/MAS.MOD new file mode 100644 index 0000000..152f9ed --- /dev/null +++ b/CONTENT/RP/MODELS/MAS.MOD @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/MAS.SUB b/CONTENT/RP/MODELS/MAS.SUB new file mode 100644 index 0000000..152f9ed --- /dev/null +++ b/CONTENT/RP/MODELS/MAS.SUB @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/MASL4.CTL b/CONTENT/RP/MODELS/MASL4.CTL new file mode 100644 index 0000000..152f9ed --- /dev/null +++ b/CONTENT/RP/MODELS/MASL4.CTL @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/MASTHR.CTL b/CONTENT/RP/MODELS/MASTHR.CTL new file mode 100644 index 0000000..152f9ed --- /dev/null +++ b/CONTENT/RP/MODELS/MASTHR.CTL @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/MAT.DMG b/CONTENT/RP/MODELS/MAT.DMG new file mode 100644 index 0000000..152f9ed --- /dev/null +++ b/CONTENT/RP/MODELS/MAT.DMG @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/MAT.MOD b/CONTENT/RP/MODELS/MAT.MOD new file mode 100644 index 0000000..152f9ed --- /dev/null +++ b/CONTENT/RP/MODELS/MAT.MOD @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/MB1.MOD b/CONTENT/RP/MODELS/MB1.MOD new file mode 100644 index 0000000..b963aae --- /dev/null +++ b/CONTENT/RP/MODELS/MB1.MOD @@ -0,0 +1,9 @@ +[video] +object=mb1.bgf + +[collision] +name=mb1_cv.sld + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/RP/MODELS/MB1A.MOD b/CONTENT/RP/MODELS/MB1A.MOD new file mode 100644 index 0000000..675111b --- /dev/null +++ b/CONTENT/RP/MODELS/MB1A.MOD @@ -0,0 +1,9 @@ +[video] +object=mb1.bgf + +;[collision] +;name=mb1_cv.sld + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/RP/MODELS/MCS.MOD b/CONTENT/RP/MODELS/MCS.MOD new file mode 100644 index 0000000..ca00a2f --- /dev/null +++ b/CONTENT/RP/MODELS/MCS.MOD @@ -0,0 +1,9 @@ +[video] +object=mcs.bgf + +[collision] +name=mcs_cv.sld + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/RP/MODELS/MD1.MOD b/CONTENT/RP/MODELS/MD1.MOD new file mode 100644 index 0000000..af367b9 --- /dev/null +++ b/CONTENT/RP/MODELS/MD1.MOD @@ -0,0 +1,9 @@ +[video] +object=md1.bgf + +[collision] +name=md1_cv.sld + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/RP/MODELS/MD2.MOD b/CONTENT/RP/MODELS/MD2.MOD new file mode 100644 index 0000000..445a844 --- /dev/null +++ b/CONTENT/RP/MODELS/MD2.MOD @@ -0,0 +1,9 @@ +[video] +object=md2.bgf + +[collision] +name=md2_cv.sld + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/RP/MODELS/MD3.MOD b/CONTENT/RP/MODELS/MD3.MOD new file mode 100644 index 0000000..4a5071b --- /dev/null +++ b/CONTENT/RP/MODELS/MD3.MOD @@ -0,0 +1,13 @@ +[video] +object=md3.bgf + +[collision] +name=md3_cv.sld + +[gauge] +image=md3_ga.gim + +[gamedata] +class=UnscalableTerrainClassID + + diff --git a/CONTENT/RP/MODELS/MD4.MOD b/CONTENT/RP/MODELS/MD4.MOD new file mode 100644 index 0000000..33dbe1b --- /dev/null +++ b/CONTENT/RP/MODELS/MD4.MOD @@ -0,0 +1,13 @@ +[video] +object=md4.bgf + +[collision] +name=md4_cv.sld + +[gauge] +image=md4_ga.gim + +[gamedata] +class=UnscalableTerrainClassID + + diff --git a/CONTENT/RP/MODELS/MD5.MOD b/CONTENT/RP/MODELS/MD5.MOD new file mode 100644 index 0000000..6815fd5 --- /dev/null +++ b/CONTENT/RP/MODELS/MD5.MOD @@ -0,0 +1,7 @@ +[video] +object=md5.bgf + +[gamedata] +class=UnscalableTerrainClassID + + diff --git a/CONTENT/RP/MODELS/MDD.MOD b/CONTENT/RP/MODELS/MDD.MOD new file mode 100644 index 0000000..994cb47 --- /dev/null +++ b/CONTENT/RP/MODELS/MDD.MOD @@ -0,0 +1,9 @@ +[video] +object=mdd.bgf + +[collision] +name=mdd_cv.sld + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/RP/MODELS/ME1.MOD b/CONTENT/RP/MODELS/ME1.MOD new file mode 100644 index 0000000..0d43aea --- /dev/null +++ b/CONTENT/RP/MODELS/ME1.MOD @@ -0,0 +1,11 @@ +[video] +object=me1.bgf + +[collision] +name=me1_cv.sld + +[gauge] +image=me1_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/RP/MODELS/ME2.MOD b/CONTENT/RP/MODELS/ME2.MOD new file mode 100644 index 0000000..9e98bad --- /dev/null +++ b/CONTENT/RP/MODELS/ME2.MOD @@ -0,0 +1,9 @@ +[video] +object=me2.bgf + +[collision] +name=me2_cv.sld + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/RP/MODELS/ME3.MOD b/CONTENT/RP/MODELS/ME3.MOD new file mode 100644 index 0000000..80e0745 --- /dev/null +++ b/CONTENT/RP/MODELS/ME3.MOD @@ -0,0 +1,13 @@ +[video] +object=me3.bgf + +[collision] +name=me3_cv.sld + +[gauge] +image=me3_ga.gim + +[gamedata] +class=UnscalableTerrainClassID + + diff --git a/CONTENT/RP/MODELS/ME4.MOD b/CONTENT/RP/MODELS/ME4.MOD new file mode 100644 index 0000000..5ea0af7 --- /dev/null +++ b/CONTENT/RP/MODELS/ME4.MOD @@ -0,0 +1,10 @@ +[video] +object=me4.bgf + +[collision] +name=me4_cv.sld + +[gamedata] +class=UnscalableTerrainClassID + + diff --git a/CONTENT/RP/MODELS/MED.MOD b/CONTENT/RP/MODELS/MED.MOD new file mode 100644 index 0000000..3134b62 --- /dev/null +++ b/CONTENT/RP/MODELS/MED.MOD @@ -0,0 +1,9 @@ +[video] +object=med.bgf + +[collision] +name=med_cv.sld + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/RP/MODELS/MI1.MOD b/CONTENT/RP/MODELS/MI1.MOD new file mode 100644 index 0000000..3ba8c61 --- /dev/null +++ b/CONTENT/RP/MODELS/MI1.MOD @@ -0,0 +1,9 @@ +[video] +object=mi1.bgf + +[collision] +name=mi1_cv.sld + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/RP/MODELS/MISSILE.MOD b/CONTENT/RP/MODELS/MISSILE.MOD new file mode 100644 index 0000000..5d69e2a --- /dev/null +++ b/CONTENT/RP/MODELS/MISSILE.MOD @@ -0,0 +1,7 @@ +[video] +object=missile.bgf + +[gamedata] +class=MissileClassID +MassAmount=50.0 + diff --git a/CONTENT/RP/MODELS/MRIVET.MOD b/CONTENT/RP/MODELS/MRIVET.MOD new file mode 100644 index 0000000..eed9d95 --- /dev/null +++ b/CONTENT/RP/MODELS/MRIVET.MOD @@ -0,0 +1,22 @@ +[video] +object=rivet.bgf + +[audio] +external=rivet.scp + +[gauge] +image=rivet_ga.gim + +[gamedata] +class=RivetClassID +MoverMass=2.0 +MomentOfInertia=1.75 3.125 1.75 +PositiveLinearDragCoefficients=0.14 0.14 0.05 +NegativeLinearDragCoefficients=0.14 0.14 0.05 +AngularDragCoefficients=0.3 0.5 0.3 +FrictionCoefficient=0.0 +ElasticityCoefficient=0.0 +MinimumBounceSpeed=0.0 +DamageAmount=15.0 +DamageType=BallisticDamage +ExplosionModelFile=rivetexp diff --git a/CONTENT/RP/MODELS/MS1.MOD b/CONTENT/RP/MODELS/MS1.MOD new file mode 100644 index 0000000..152f9ed --- /dev/null +++ b/CONTENT/RP/MODELS/MS1.MOD @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/MS2.MOD b/CONTENT/RP/MODELS/MS2.MOD new file mode 100644 index 0000000..152f9ed --- /dev/null +++ b/CONTENT/RP/MODELS/MS2.MOD @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/MULE.BAK b/CONTENT/RP/MODELS/MULE.BAK new file mode 100644 index 0000000..91a28c2 --- /dev/null +++ b/CONTENT/RP/MODELS/MULE.BAK @@ -0,0 +1,47 @@ +[video] +skeleton=mun.skl +skeletons=mus.skl +skeletont=mut.skl +skeletono=mun.skl +skeletona=mua.skl +skeletonb=mub.skl +skeletonc=muc.skl +skeletond=mua.skl + +[collision] +name=mu_cv.sld + +[gauge] +image=mu_ga.gim + +[audio] +external=vtvext.scp +internal=mule.scp + +[gamedata] +class=VTVClassID +MoverMass=2000.0 +MomentOfInertia=5.8125 10.125 5.8125 +PositiveLinearDragCoefficients=0.14 0.3 0.08 +NegativeLinearDragCoefficients=0.14 0.3 0.06 +AngularDragCoefficients=1.5 0.5 1.5 +FrictionCoefficient=0.4 +ElasticityCoefficient=0.2 +MinimumBounceSpeed=0.2 +MaxAcceleration=6.0 +MaxThrusterRotationRate=4.7 +GroundEffectDomainSquared=0.11111111 +GroundEffectRange=5.0 +AngularSpringFactor=12.6 +MaxYawVelocity=45.0 +MaxAngularAcceleration=0.0 4.7 0.0 +BankFactor=1.0 +DeathSpeed=275.0 +DeathScoreLoss=250.0 +MaxImpactSpeed=327.0 +Subsystems=mule.sub +DamageZones=mule.dmg + +[ControlMappings] +Thrustmaster=2x6thr.ctl +L4=2x6l4.ctl diff --git a/CONTENT/RP/MODELS/MULE.DMG b/CONTENT/RP/MODELS/MULE.DMG new file mode 100644 index 0000000..7ef5977 --- /dev/null +++ b/CONTENT/RP/MODELS/MULE.DMG @@ -0,0 +1,2 @@ +[dz_vtv] +WeaponDamagePoints=250 \ No newline at end of file diff --git a/CONTENT/RP/MODELS/MULE.MOD b/CONTENT/RP/MODELS/MULE.MOD new file mode 100644 index 0000000..3a90ead --- /dev/null +++ b/CONTENT/RP/MODELS/MULE.MOD @@ -0,0 +1,47 @@ +[video] +skeleton=mun.skl +skeletons=mus.skl +skeletont=mut.skl +skeletono=mun.skl +skeletona=mua.skl +skeletonb=mub.skl +skeletonc=muc.skl +skeletond=mua.skl + +[collision] +name=mu_cv.sld + +[gauge] +image=mu_ga.gim + +[audio] +external=vtvext.scp +internal=mule.scp + +[gamedata] +class=VTVClassID +MoverMass=2000.0 +MomentOfInertia=5.8125 10.125 5.8125 +PositiveLinearDragCoefficients=0.14 0.3 0.08 +NegativeLinearDragCoefficients=0.14 0.3 0.06 +AngularDragCoefficients=1.5 0.5 1.5 +FrictionCoefficient=0.4 +ElasticityCoefficient=0.2 +MinimumBounceSpeed=0.2 +MaxAcceleration=6.0 +MaxThrusterRotationRate=4.7 +GroundEffectDomainSquared=0.11111111 +GroundEffectRange=5.0 +AngularSpringFactor=12.6 +MaxYawVelocity=45.0 +MaxAngularAcceleration=0.0 4.7 0.0 +BankFactor=1.0 +DeathSpeed=275.0 +DeathScoreLoss=250.0 +MaxImpactSpeed=302.0 +Subsystems=mule.sub +DamageZones=mule.dmg + +[ControlMappings] +Thrustmaster=2x6thr.ctl +L4=2x6l4.ctl diff --git a/CONTENT/RP/MODELS/MULE.SUB b/CONTENT/RP/MODELS/MULE.SUB new file mode 100644 index 0000000..c003992 --- /dev/null +++ b/CONTENT/RP/MODELS/MULE.SUB @@ -0,0 +1,21 @@ +[Booster1] +Type=BoosterClassID +BoosterCount=6 +BurnTime=8 +BoosterAcceleration=8 + +[Booster2] +Type=BoosterClassID +BoosterCount=6 +BurnTime=8 +BoosterAcceleration=8 + +[Chute] +Type=ChuteClassID +ChuteCount=3 +ReloadTime=3 +DragForce=0.14 +MinVelocity=20 +MaxRotation=60 +DeployTime=0.2 +SegmentPageName=sitechute diff --git a/CONTENT/RP/MODELS/MUN.DMG b/CONTENT/RP/MODELS/MUN.DMG new file mode 100644 index 0000000..152f9ed --- /dev/null +++ b/CONTENT/RP/MODELS/MUN.DMG @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/MUN.MOD b/CONTENT/RP/MODELS/MUN.MOD new file mode 100644 index 0000000..152f9ed --- /dev/null +++ b/CONTENT/RP/MODELS/MUN.MOD @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/MUS.DMG b/CONTENT/RP/MODELS/MUS.DMG new file mode 100644 index 0000000..152f9ed --- /dev/null +++ b/CONTENT/RP/MODELS/MUS.DMG @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/MUS.MOD b/CONTENT/RP/MODELS/MUS.MOD new file mode 100644 index 0000000..152f9ed --- /dev/null +++ b/CONTENT/RP/MODELS/MUS.MOD @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/MUS.SUB b/CONTENT/RP/MODELS/MUS.SUB new file mode 100644 index 0000000..152f9ed --- /dev/null +++ b/CONTENT/RP/MODELS/MUS.SUB @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/MUSL4.CTL b/CONTENT/RP/MODELS/MUSL4.CTL new file mode 100644 index 0000000..152f9ed --- /dev/null +++ b/CONTENT/RP/MODELS/MUSL4.CTL @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/MUSTHR.CTL b/CONTENT/RP/MODELS/MUSTHR.CTL new file mode 100644 index 0000000..152f9ed --- /dev/null +++ b/CONTENT/RP/MODELS/MUSTHR.CTL @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/MUT.DMG b/CONTENT/RP/MODELS/MUT.DMG new file mode 100644 index 0000000..152f9ed --- /dev/null +++ b/CONTENT/RP/MODELS/MUT.DMG @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/MUT.MOD b/CONTENT/RP/MODELS/MUT.MOD new file mode 100644 index 0000000..152f9ed --- /dev/null +++ b/CONTENT/RP/MODELS/MUT.MOD @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/OA1.MOD b/CONTENT/RP/MODELS/OA1.MOD new file mode 100644 index 0000000..291884f --- /dev/null +++ b/CONTENT/RP/MODELS/OA1.MOD @@ -0,0 +1,12 @@ +[video] +object=oa1.bgf + +[collision] +name=oa1_cv.sld + +[gauge] +image=oa1_ga.gim + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/RP/MODELS/OA1N.MOD b/CONTENT/RP/MODELS/OA1N.MOD new file mode 100644 index 0000000..cbdcfb6 --- /dev/null +++ b/CONTENT/RP/MODELS/OA1N.MOD @@ -0,0 +1,6 @@ +[video] +object=oa1.bgf + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/RP/MODELS/OA3.MOD b/CONTENT/RP/MODELS/OA3.MOD new file mode 100644 index 0000000..c5b86f0 --- /dev/null +++ b/CONTENT/RP/MODELS/OA3.MOD @@ -0,0 +1,12 @@ +[video] +object=oa3.bgf oa3l.bgf + +[collision] +name=oa3_cv.sld + +[gauge] +image=oa3_ga.gim + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/RP/MODELS/OAO.MOD b/CONTENT/RP/MODELS/OAO.MOD new file mode 100644 index 0000000..06fa426 --- /dev/null +++ b/CONTENT/RP/MODELS/OAO.MOD @@ -0,0 +1,9 @@ +[video] +object=oao.bgf + +[collision] +name=oao_cv.sld + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/RP/MODELS/OAO1.MOD b/CONTENT/RP/MODELS/OAO1.MOD new file mode 100644 index 0000000..1dec826 --- /dev/null +++ b/CONTENT/RP/MODELS/OAO1.MOD @@ -0,0 +1,6 @@ +[video] +object=oao.bgf + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/RP/MODELS/OD1.MOD b/CONTENT/RP/MODELS/OD1.MOD new file mode 100644 index 0000000..8c73c1d --- /dev/null +++ b/CONTENT/RP/MODELS/OD1.MOD @@ -0,0 +1,12 @@ +[video] +object=od1.bgf od1l.bgf + +[collision] +name=od1_cv.sld + +[audio] +external=oredrp1.scp + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/RP/MODELS/OD2.MOD b/CONTENT/RP/MODELS/OD2.MOD new file mode 100644 index 0000000..da2f837 --- /dev/null +++ b/CONTENT/RP/MODELS/OD2.MOD @@ -0,0 +1,13 @@ +[video] +object=od2.bgf od3l.bgf + +[collision] +name=od2_cv.sld + +[audio] +external=oredrp3.scp + +[gamedata] +class=UnscalableTerrainClassID + + diff --git a/CONTENT/RP/MODELS/OD3.MOD b/CONTENT/RP/MODELS/OD3.MOD new file mode 100644 index 0000000..df3d628 --- /dev/null +++ b/CONTENT/RP/MODELS/OD3.MOD @@ -0,0 +1,16 @@ +[video] +object=od3.bgf od3l.bgf + +[collision] +name=od3_cv.sld + +[gauge] +image=od3_ga.gim + +[audio] +external=oredrp3.scp + +[gamedata] +class=UnscalableTerrainClassID + + diff --git a/CONTENT/RP/MODELS/ODC.MOD b/CONTENT/RP/MODELS/ODC.MOD new file mode 100644 index 0000000..0767329 --- /dev/null +++ b/CONTENT/RP/MODELS/ODC.MOD @@ -0,0 +1,10 @@ +[video] +object=odc.bgf os1.bgf + +[collision] +name=odc_cv.sld + +[gamedata] +class=UnscalableTerrainClassID + + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/PIT1.MOD b/CONTENT/RP/MODELS/PIT1.MOD new file mode 100644 index 0000000..3b6a457 --- /dev/null +++ b/CONTENT/RP/MODELS/PIT1.MOD @@ -0,0 +1,9 @@ +[collision] +name=pit1_cv.sld + +[gauge] +image=pit1_ga.gim + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/RP/MODELS/PIT2.MOD b/CONTENT/RP/MODELS/PIT2.MOD new file mode 100644 index 0000000..46eee57 --- /dev/null +++ b/CONTENT/RP/MODELS/PIT2.MOD @@ -0,0 +1,9 @@ +[collision] +name=pit2_cv.sld + +[gauge] +image=pit2_ga.gim + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/RP/MODELS/PL1.MOD b/CONTENT/RP/MODELS/PL1.MOD new file mode 100644 index 0000000..0e7ba2b --- /dev/null +++ b/CONTENT/RP/MODELS/PL1.MOD @@ -0,0 +1,12 @@ +[video] +object=pl1.bgf pl1l.bgf + +[collision] +name=pl1_cv.sld + +[gauge] +image=pl1_ga.gim + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/RP/MODELS/PLAYER.MOD b/CONTENT/RP/MODELS/PLAYER.MOD new file mode 100644 index 0000000..03ac8a0 --- /dev/null +++ b/CONTENT/RP/MODELS/PLAYER.MOD @@ -0,0 +1,4 @@ +[audio] +internal=plyint.scp +external=plyext.scp + diff --git a/CONTENT/RP/MODELS/PM1.MOD b/CONTENT/RP/MODELS/PM1.MOD new file mode 100644 index 0000000..d897896 --- /dev/null +++ b/CONTENT/RP/MODELS/PM1.MOD @@ -0,0 +1,12 @@ +[video] +object=pm1.bgf pm1l.bgf + +[collision] +name=pm1_cv.sld + +[gauge] +image=pm1_ga.gim + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/RP/MODELS/PP1.MOD b/CONTENT/RP/MODELS/PP1.MOD new file mode 100644 index 0000000..3f21703 --- /dev/null +++ b/CONTENT/RP/MODELS/PP1.MOD @@ -0,0 +1,9 @@ +[video] +object=pp1.bgf + +[collision] +name=pp1_cv.sld + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/RP/MODELS/PP2.MOD b/CONTENT/RP/MODELS/PP2.MOD new file mode 100644 index 0000000..a60094a --- /dev/null +++ b/CONTENT/RP/MODELS/PP2.MOD @@ -0,0 +1,9 @@ +[video] +object=pp2.bgf + +[collision] +name=pp2_cv.sld + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/RP/MODELS/PRESHOW.MOD b/CONTENT/RP/MODELS/PRESHOW.MOD new file mode 100644 index 0000000..16ba42b --- /dev/null +++ b/CONTENT/RP/MODELS/PRESHOW.MOD @@ -0,0 +1,13 @@ + +[gamedata] +class=CameraClassID +MoverMass=150.0 +MomentOfInertia=1.75 3.125 1.75 +PositiveLinearDragCoefficients=0.14 0.4 0.07 +NegativeLinearDragCoefficients=0.14 0.2 0.08 +AngularDragCoefficients=15.3 15.0 15.0 +FrictionCoefficient=0.0 +ElasticityCoefficient=9.0 +MinimumBounceSpeed=0.0 +PreShowSpeed=5.0 +CameraMode=PreShowCam \ No newline at end of file diff --git a/CONTENT/RP/MODELS/PROTON.BAK b/CONTENT/RP/MODELS/PROTON.BAK new file mode 100644 index 0000000..155bd4d --- /dev/null +++ b/CONTENT/RP/MODELS/PROTON.BAK @@ -0,0 +1,48 @@ +[video] +skeleton=lan.skl +skeletons=las.skl +skeletont=lat.skl +skeletono=lan.skl +skeletona=laa.skl +skeletonb=lab.skl +skeletonc=lac.skl +skeletond=laa.skl + +[collision] +name=lu_cv.sld + +[gauge] +image=sp_ga.gim + +[audio] +external=vtvext.scp +internal=proton.scp + +[gamedata] +class=VTVClassID +MoverMass=800.0 +MomentOfInertia=2.02 3.38 2.02 +PositiveLinearDragCoefficients=0.14 0.3 0.08 +NegativeLinearDragCoefficients=0.14 0.3 0.052 +AngularDragCoefficients=1.5 0.5 1.5 +FrictionCoefficient=0.4 +ElasticityCoefficient=0.2 +MinimumBounceSpeed=0.2 +MaxAcceleration=6.3 +MaxThrusterRotationRate=4.7 +GroundEffectDomainSquared=0.3 +GroundEffectRange=17.0 +MaxYawVelocity=70 +MaxAngularAcceleration=0.0 4.7 0.0 +AngularSpringFactor=17.0 +BankFactor=1.5 +DeathSpeed=275.0 +DeathScoreLoss=250.0 +MaxImpactSpeed=130.0 +Subsystems=proton.sub +DamageZones=proton.dmg +BottomArmorScale=1.0 + +[ControlMappings] +Thrustmaster=rivetthr.ctl +L4=rivetl4.ctl diff --git a/CONTENT/RP/MODELS/PROTON.DMG b/CONTENT/RP/MODELS/PROTON.DMG new file mode 100644 index 0000000..414113c --- /dev/null +++ b/CONTENT/RP/MODELS/PROTON.DMG @@ -0,0 +1,2 @@ +[dz_vtv] +WeaponDamagePoints=50.0 diff --git a/CONTENT/RP/MODELS/PROTON.MOD b/CONTENT/RP/MODELS/PROTON.MOD new file mode 100644 index 0000000..8225724 --- /dev/null +++ b/CONTENT/RP/MODELS/PROTON.MOD @@ -0,0 +1,48 @@ +[video] +skeleton=lan.skl +skeletons=las.skl +skeletont=lat.skl +skeletono=lan.skl +skeletona=laa.skl +skeletonb=lab.skl +skeletonc=lac.skl +skeletond=laa.skl + +[collision] +name=lu_cv.sld + +[gauge] +image=sp_ga.gim + +[audio] +external=vtvext.scp +internal=proton.scp + +[gamedata] +class=VTVClassID +MoverMass=600.0 +MomentOfInertia=2.02 3.38 2.02 +PositiveLinearDragCoefficients=0.14 0.3 0.08 +NegativeLinearDragCoefficients=0.14 0.3 0.052 +AngularDragCoefficients=1.5 0.5 1.5 +FrictionCoefficient=0.4 +ElasticityCoefficient=0.2 +MinimumBounceSpeed=0.2 +MaxAcceleration=6.3 +MaxThrusterRotationRate=4.7 +GroundEffectDomainSquared=0.3 +GroundEffectRange=17.0 +MaxYawVelocity=70 +MaxAngularAcceleration=0.0 4.7 0.0 +AngularSpringFactor=17.0 +BankFactor=1.5 +DeathSpeed=275.0 +DeathScoreLoss=250.0 +MaxImpactSpeed=115.0 +Subsystems=proton.sub +DamageZones=proton.dmg +BottomArmorScale=1.0 + +[ControlMappings] +Thrustmaster=rivetthr.ctl +L4=rivetl4.ctl diff --git a/CONTENT/RP/MODELS/PROTON.SUB b/CONTENT/RP/MODELS/PROTON.SUB new file mode 100644 index 0000000..ac8e3ef --- /dev/null +++ b/CONTENT/RP/MODELS/PROTON.SUB @@ -0,0 +1,31 @@ +[Booster1] +Type=BoosterClassID +BoosterCount=6 +BurnTime=8 +BoosterAcceleration=13 + +[Booster2] +Type=BoosterClassID +BoosterCount=6 +BurnTime=8 +BoosterAcceleration=13 + +[Chute] +Type=ChuteClassID +ChuteCount=3 +ReloadTime=3 +DragForce=0.14 +MinVelocity=20 +MaxRotation=60 +DeployTime=0.2 +SegmentPageName=sitechute + +[RivetGun] +Type=RivetGunClassID +SubsystemFlags=DontReplicateFlag +AmmoCount=300 +LoadTime=0.5 +AmmoModelFile=lrivet +MuzzleVelocity=0.0 6.5 350.0 +SegmentPageName=sitefrontport +RearSiteName=sitebackport diff --git a/CONTENT/RP/MODELS/PUCK.DMG b/CONTENT/RP/MODELS/PUCK.DMG new file mode 100644 index 0000000..a0891f0 --- /dev/null +++ b/CONTENT/RP/MODELS/PUCK.DMG @@ -0,0 +1,2 @@ +[dz_vtv] +WeaponDamagePoints=100 \ No newline at end of file diff --git a/CONTENT/RP/MODELS/PUCK.MOD b/CONTENT/RP/MODELS/PUCK.MOD new file mode 100644 index 0000000..8889b1f --- /dev/null +++ b/CONTENT/RP/MODELS/PUCK.MOD @@ -0,0 +1,47 @@ +[video] +skeleton=dun.skl +skeletons=dus.skl +skeletont=dut.skl +skeletono=dun.skl +skeletona=dua.skl +skeletonb=dub.skl +skeletonc=duc.skl +skeletond=dua.skl + +[collision] +name=du_cv.sld + +[gauge] +image=sp_ga.gim + +[audio] +external=pckext.scp +internal=puck.scp + +[gamedata] +class=VTVClassID +MoverMass=1000.0 +MomentOfInertia=5.8125 10.125 5.8125 +PositiveLinearDragCoefficients=0.14 0.3 0.085 +NegativeLinearDragCoefficients=0.14 0.3 0.085 +AngularDragCoefficients=1.5 0.5 1.5 +FrictionCoefficient=0.4 +ElasticityCoefficient=0.2 +MinimumBounceSpeed=0.2 +MaxAcceleration=9.72 +MaxThrusterRotationRate=4.7 +GroundEffectDomainSquared=0 +GroundEffectRange=5.0 +AngularSpringFactor=12.6 +MaxYawVelocity=55.0 +MaxAngularAcceleration=0.0 4.7 0.0 +BankFactor=0.5 +DeathSpeed=275.0 +DeathScoreLoss=250.0 +MaxImpactSpeed=425.0 +Subsystems=puck.sub +DamageZones=puck.dmg + +[ControlMappings] +Thrustmaster=puckthr.ctl +L4=puckl4.ctl diff --git a/CONTENT/RP/MODELS/PUCK.SUB b/CONTENT/RP/MODELS/PUCK.SUB new file mode 100644 index 0000000..59cef64 --- /dev/null +++ b/CONTENT/RP/MODELS/PUCK.SUB @@ -0,0 +1,19 @@ +[Booster1] +Type=BoosterClassID +BoosterCount=12 +BurnTime=8 +BoosterAcceleration=10 + +[LaserGun2] +Type=LaserDrillClassID +DamageAmount=25.0 +FullChargeDuration=4.0 +LaserDuration=0.10 +PulseDuration=0.25 +ChargePerSecond=0.10 +DrainPerSecond=0.25 +LaserLength=100.0 +AmmoModelFile=mrivet +SegmentPageName=sitefrontleftport +RearSiteName=sitebackleftport +ExplosionModelFile=laserexp diff --git a/CONTENT/RP/MODELS/PUCKL4.CTL b/CONTENT/RP/MODELS/PUCKL4.CTL new file mode 100644 index 0000000..7a49164 --- /dev/null +++ b/CONTENT/RP/MODELS/PUCKL4.CTL @@ -0,0 +1,133 @@ +[Booster1_BALL1_1] +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Mode=ModeNonConfig +Subsystem=Booster1 +MessageID=Activate + +[Booster1_BALL1_2] +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Mode=ModeConfiguring +Subsystem=Booster1 +MessageID=ConfigureMappables + +[Booster1_BALL2_1] +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Mode=ModeNonConfig +Subsystem=Booster1 +MessageID=Activate + +[Booster1_BALL2_2] +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Mode=ModeConfiguring +Subsystem=Booster1 +MessageID=ConfigureMappables + +[Booster1_BJTH] +IOMapping=ButtonJoystickThumbHigh +Type=EventMapping +Mode=ModePreset1,ModePreset2,ModePreset3,ModePreset4,ModePreset5,ModePreset6 +Subsystem=Booster1 +MessageID=Activate + +//----------------------------------------------------------------------- +// Horn system mappings +// +[Horn_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=EventMapping +Mode=ModePreset1,ModePreset2,ModePreset5 +Subsystem=ControlsMapper +MessageID=ActivateHorn + +[Horn_BJP] +IOMapping=ButtonJoystickPinky +Type=EventMapping +Mode=ModePreset4 +Subsystem=ControlsMapper +MessageID=ActivateHorn + +//----------------------------------------------------------------------- +// Laser gun mappings +// +[LaserGun2_BALR1_1] +IOMapping=ButtonAuxLowerRight1 +Type=DirectMapping +Mode=ModeNonConfig +Subsystem=LaserGun2 +AttributeID=TriggerState + +[LaserGun2_BALR1_2] +IOMapping=ButtonAuxLowerRight1 +Type=EventMapping +Mode=ModeConfiguring +Subsystem=LaserGun2 +MessageID=ConfigureMappables + +[LaserGun2_BALR2_1] +IOMapping=ButtonAuxLowerRight2 +Type=DirectMapping +Mode=ModeNonConfig +Subsystem=LaserGun2 +AttributeID=TriggerState + +[LaserGun2_BALR2_2] +IOMapping=ButtonAuxLowerRight2 +Type=EventMapping +Mode=ModeConfiguring +Subsystem=LaserGun2 +MessageID=ConfigureMappables + +[LaserGun2_BJT] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Mode=ModePreset1,ModePreset2,ModePreset3,ModePreset4,ModePreset5 +Subsystem=LaserGun2 +AttributeID=TriggerState + +[LaserGun2_BJP] +IOMapping=ButtonJoystickPinky +Type=DirectMapping +Mode=ModePreset6 +Subsystem=LaserGun2 +AttributeID=TriggerState + +//----------------------------------------------------------- +// Other joystick mappings +// +[LiftCut_BJP] +IOMapping=ButtonJoystickPinky +Type=DirectMapping +Mode=ModePreset2,ModePreset5 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[LiftCut_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=DirectMapping +Mode=ModePreset3,ModePreset4 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[LiftCut_BJT] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Mode=ModePreset6 +Subsystem=ControlsMapper +AttributeID=LiftCut + +//-------------------------------------------------------------- +// re-install this once we really have an intercom! +// (until we do, it shows a mapping on the configuration +// mapper that doesn't belong to anything the pilot can control) +//-------------------------------------------------------------- +//[PTT_BJTP] +//IOMapping=ButtonJoystickPinky +//Type=EventMapping +//Mode=ModePreset1,ModePreset3 +//Subsystem=ControlsMapper +//MessageID=ActivatePTT + diff --git a/CONTENT/RP/MODELS/PUCKTHR.CTL b/CONTENT/RP/MODELS/PUCKTHR.CTL new file mode 100644 index 0000000..c2777dc --- /dev/null +++ b/CONTENT/RP/MODELS/PUCKTHR.CTL @@ -0,0 +1,72 @@ +[LaserGun2_BJT] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Mode=ModePreset1,ModePreset2,ModePreset3,ModePreset4,ModePreset5 +Subsystem=LaserGun2 +AttributeID=TriggerState + +[LaserGun2_BJP] +IOMapping=ButtonJoystickPinky +Type=DirectMapping +Mode=ModePreset6 +Subsystem=LaserGun2 +AttributeID=TriggerState + +//---------------------------------------------------------- +// Booster mappings +// +[Booster1_BJTH] +IOMapping=ButtonJoystickThumbHigh +Type=EventMapping +Mode=ModePreset1,ModePreset2,ModePreset3,ModePreset4,ModePreset5,ModePreset6 +Subsystem=Booster1 +MessageID=Activate + +//---------------------------------------------------------- +// Horn +// +[Horn_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=EventMapping +Mode=ModePreset1,ModePreset2,ModePreset5 +Subsystem=ControlsMapper +MessageID=ActivateHorn + +[Horn_BJP] +IOMapping=ButtonJoystickPinky +Type=EventMapping +Mode=ModePreset4 +Subsystem=ControlsMapper +MessageID=ActivateHorn + +//----------------------------------------------------------- +// Other joystick mappings +// +[LiftCut_BJP] +IOMapping=ButtonJoystickPinky +Type=DirectMapping +Mode=ModePreset2,ModePreset5 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[LiftCut_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=DirectMapping +Mode=ModePreset3,ModePreset4 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[LiftCut_BJT] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Mode=ModePreset6 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[PTT_BJTP] +IOMapping=ButtonJoystickPinky +Type=EventMapping +Mode=ModePreset1,ModePreset3 +Subsystem=ControlsMapper +MessageID=ActivatePTT + diff --git a/CONTENT/RP/MODELS/PZ1.MOD b/CONTENT/RP/MODELS/PZ1.MOD new file mode 100644 index 0000000..56f24f2 --- /dev/null +++ b/CONTENT/RP/MODELS/PZ1.MOD @@ -0,0 +1,9 @@ +[video] +object=pz1.bgf + +[collision] +name=pz1_cv.sld + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/RP/MODELS/PZ2.MOD b/CONTENT/RP/MODELS/PZ2.MOD new file mode 100644 index 0000000..37d1c41 --- /dev/null +++ b/CONTENT/RP/MODELS/PZ2.MOD @@ -0,0 +1,9 @@ +[video] +object=pz2.bgf + +[collision] +name=pz2_cv.sld + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/RP/MODELS/PZ3.MOD b/CONTENT/RP/MODELS/PZ3.MOD new file mode 100644 index 0000000..daaf868 --- /dev/null +++ b/CONTENT/RP/MODELS/PZ3.MOD @@ -0,0 +1,10 @@ +[video] +object=pz3.bgf + +[collision] +name=pz3_cv.sld + +[gamedata] +class=UnscalableTerrainClassID + + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/PZ4.MOD b/CONTENT/RP/MODELS/PZ4.MOD new file mode 100644 index 0000000..f94c048 --- /dev/null +++ b/CONTENT/RP/MODELS/PZ4.MOD @@ -0,0 +1,10 @@ +[video] +object=pz4.bgf + +[collision] +name=pz4_cv.sld + +[gamedata] +class=UnscalableTerrainClassID + + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/QUARK.BAK b/CONTENT/RP/MODELS/QUARK.BAK new file mode 100644 index 0000000..68959fc --- /dev/null +++ b/CONTENT/RP/MODELS/QUARK.BAK @@ -0,0 +1,48 @@ +[video] +skeleton=lun.skl +skeletons=lus.skl +skeletont=lut.skl +skeletono=lun.skl +skeletona=lua.skl +skeletonb=lub.skl +skeletonc=luc.skl +skeletond=lua.skl + +[collision] +name=lu_cv.sld + +[gauge] +image=sp_ga.gim + +[audio] +external=vtvext.scp +internal=quark.scp + +[gamedata] +class=VTVClassID +MoverMass=600.0 +MomentOfInertia=2.02 3.38 2.02 +PositiveLinearDragCoefficients=0.14 0.3 0.08 +NegativeLinearDragCoefficients=0.14 0.3 0.052 +AngularDragCoefficients=1.5 0.5 1.5 +FrictionCoefficient=0.4 +ElasticityCoefficient=0.2 +MinimumBounceSpeed=0.2 +MaxAcceleration=6.4 +MaxThrusterRotationRate=4.7 +GroundEffectDomainSquared=0.3 +GroundEffectRange=17.0 +MaxYawVelocity=70 +MaxAngularAcceleration=0.0 4.7 0.0 +AngularSpringFactor=17.0 +BankFactor=1.5 +DeathSpeed=275.0 +DeathScoreLoss=250.0 +MaxImpactSpeed=110.0 +Subsystems=quark.sub +DamageZones=lepton.dmg +BottomArmorScale=1.0 + +[ControlMappings] +Thrustmaster=quarkthr.ctl +L4=quarkl4.ctl diff --git a/CONTENT/RP/MODELS/QUARK.DMG b/CONTENT/RP/MODELS/QUARK.DMG new file mode 100644 index 0000000..414113c --- /dev/null +++ b/CONTENT/RP/MODELS/QUARK.DMG @@ -0,0 +1,2 @@ +[dz_vtv] +WeaponDamagePoints=50.0 diff --git a/CONTENT/RP/MODELS/QUARK.MOD b/CONTENT/RP/MODELS/QUARK.MOD new file mode 100644 index 0000000..9ccbec3 --- /dev/null +++ b/CONTENT/RP/MODELS/QUARK.MOD @@ -0,0 +1,48 @@ +[video] +skeleton=lun.skl +skeletons=lus.skl +skeletont=lut.skl +skeletono=lun.skl +skeletona=lua.skl +skeletonb=lub.skl +skeletonc=luc.skl +skeletond=lua.skl + +[collision] +name=lu_cv.sld + +[gauge] +image=sp_ga.gim + +[audio] +external=vtvext.scp +internal=quark.scp + +[gamedata] +class=VTVClassID +MoverMass=600.0 +MomentOfInertia=2.02 3.38 2.02 +PositiveLinearDragCoefficients=0.14 0.3 0.08 +NegativeLinearDragCoefficients=0.14 0.3 0.052 +AngularDragCoefficients=1.5 0.5 1.5 +FrictionCoefficient=0.4 +ElasticityCoefficient=0.2 +MinimumBounceSpeed=0.2 +MaxAcceleration=6.4 +MaxThrusterRotationRate=4.7 +GroundEffectDomainSquared=0.3 +GroundEffectRange=17.0 +MaxYawVelocity=70 +MaxAngularAcceleration=0.0 4.7 0.0 +AngularSpringFactor=17.0 +BankFactor=1.5 +DeathSpeed=275.0 +DeathScoreLoss=250.0 +MaxImpactSpeed=85.0 +Subsystems=quark.sub +DamageZones=lepton.dmg +BottomArmorScale=1.0 + +[ControlMappings] +Thrustmaster=quarkthr.ctl +L4=quarkl4.ctl diff --git a/CONTENT/RP/MODELS/QUARK.SUB b/CONTENT/RP/MODELS/QUARK.SUB new file mode 100644 index 0000000..622679f --- /dev/null +++ b/CONTENT/RP/MODELS/QUARK.SUB @@ -0,0 +1,11 @@ +[Booster1] +Type=BoosterClassID +BoosterCount=11 +BurnTime=8 +BoosterAcceleration=13 + +[Booster2] +Type=BoosterClassID +BoosterCount=11 +BurnTime=8 +BoosterAcceleration=13 diff --git a/CONTENT/RP/MODELS/QUARKL4.CTL b/CONTENT/RP/MODELS/QUARKL4.CTL new file mode 100644 index 0000000..32504fd --- /dev/null +++ b/CONTENT/RP/MODELS/QUARKL4.CTL @@ -0,0 +1,125 @@ +[Booster1_BALL1_1] +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Mode=ModeNonConfig +Subsystem=Booster1 +MessageID=Activate + +[Booster1_BALL1_2] +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Mode=ModeConfiguring +Subsystem=Booster1 +MessageID=ConfigureMappables + +[Booster1_BALL2_1] +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Mode=ModeNonConfig +Subsystem=Booster1 +MessageID=Activate + +[Booster1_BALL2_2] +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Mode=ModeConfiguring +Subsystem=Booster1 +MessageID=ConfigureMappables + +[Booster1_BJT] +IOMapping=ButtonJoystickTrigger +Type=EventMapping +Mode=ModePreset1,ModePreset2,ModePreset3,ModePreset4,ModePreset5 +Subsystem=Booster1 +MessageID=Activate + +[Booster1_BJTH] +IOMapping=ButtonJoystickThumbHigh +Type=EventMapping +Mode=ModePreset6 +Subsystem=Booster1 +MessageID=Activate + +//----------------------------------------------------------------------- +// Booster 2 mappings +// +[Booster2_BALL3_1] +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Mode=ModeNonConfig +Subsystem=Booster2 +MessageID=Activate + +[Booster2_BALL3_2] +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Mode=ModeConfiguring +Subsystem=Booster2 +MessageID=ConfigureMappables + +[Booster2_BALL4_1] +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Mode=ModeNonConfig +Subsystem=Booster2 +MessageID=Activate + +[Booster2_BALL4_2] +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Mode=ModeConfiguring +Subsystem=Booster2 +MessageID=ConfigureMappables + +[Booster2_BJTH] +IOMapping=ButtonJoystickThumbHigh +Type=EventMapping +Mode=ModePreset1,ModePreset2,ModePreset3,ModePreset4,ModePreset5 +Subsystem=Booster2 +MessageID=Activate + +[Booster2_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=EventMapping +Mode=ModePreset6 +Subsystem=Booster2 +MessageID=Activate + +//----------------------------------------------------------- +// Other joystick mappings +// +[LiftCut_BJP] +IOMapping=ButtonJoystickPinky +Type=DirectMapping +Mode=ModePreset2,ModePreset5 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[LiftCut_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=DirectMapping +Mode=ModePreset3,ModePreset4 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[LiftCut_BJT] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Mode=ModePreset6 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[Horn_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=EventMapping +Mode=ModePreset5 +Subsystem=ControlsMapper +MessageID=ActivateHorn + +[PTT_BJTP] +IOMapping=ButtonJoystickPinky +Type=EventMapping +Mode=ModePreset1,ModePreset3 +Subsystem=ControlsMapper +MessageID=ActivatePTT + diff --git a/CONTENT/RP/MODELS/QUARKTHR.CTL b/CONTENT/RP/MODELS/QUARKTHR.CTL new file mode 100644 index 0000000..339dfe2 --- /dev/null +++ b/CONTENT/RP/MODELS/QUARKTHR.CTL @@ -0,0 +1,66 @@ +[Booster1_BJT] +IOMapping=ButtonJoystickTrigger +Type=EventMapping +Mode=ModePreset1,ModePreset2,ModePreset3,ModePreset4,ModePreset5 +Subsystem=Booster1 +MessageID=Activate + +[Booster2_BJTH] +IOMapping=ButtonJoystickThumbHigh +Type=EventMapping +Mode=ModePreset1,ModePreset2,ModePreset3,ModePreset4,ModePreset5 +Subsystem=Booster2 +MessageID=Activate + +[Booster1_BJTH] +IOMapping=ButtonJoystickThumbHigh +Type=EventMapping +Mode=ModePreset6 +Subsystem=Booster1 +MessageID=Activate + +[Booster2_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=EventMapping +Mode=ModePreset6 +Subsystem=Booster2 +MessageID=Activate + +//----------------------------------------------------------- +// Other joystick mappings +// +[LiftCut_BJP] +IOMapping=ButtonJoystickPinky +Type=DirectMapping +Mode=ModePreset2,ModePreset5 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[LiftCut_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=DirectMapping +Mode=ModePreset3,ModePreset4 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[LiftCut_BJT] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Mode=ModePreset6 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[Horn_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=EventMapping +Mode=ModePreset5 +Subsystem=ControlsMapper +MessageID=ActivateHorn + +//[PTT_BJTP] +//IOMapping=ButtonJoystickPinky +//Type=EventMapping +//Mode=ModePreset1,ModePreset3 +//Subsystem=ControlsMapper +//MessageID=ActivatePTT + diff --git a/CONTENT/RP/MODELS/RDBLKL4X.CTL b/CONTENT/RP/MODELS/RDBLKL4X.CTL new file mode 100644 index 0000000..152f9ed --- /dev/null +++ b/CONTENT/RP/MODELS/RDBLKL4X.CTL @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/RDBLKTHR.CTL b/CONTENT/RP/MODELS/RDBLKTHR.CTL new file mode 100644 index 0000000..37cda07 --- /dev/null +++ b/CONTENT/RP/MODELS/RDBLKTHR.CTL @@ -0,0 +1,99 @@ +[Booster1_BJTH] +IOMapping=ButtonJoystickThumbHigh +Type=EventMapping +Mode=ModePreset1,ModePreset2,ModePreset3,ModePreset4,ModePreset6 +Subsystem=Booster1 +MessageID=Activate + +[Booster2_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=EventMapping +Mode=ModePreset6 +Subsystem=Booster2 +MessageID=Activate + +//----------------------------------------------------------------------- +// Chute system mappings +// +[Chute_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=EventMapping +Mode=ModePreset1,ModePreset2 +Subsystem=Chute +MessageID=Activate + +[Chute_BJP] +IOMapping=ButtonJoystickPinky +Type=EventMapping +Mode=ModePreset4 +Subsystem=Chute +MessageID=Activate + +//----------------------------------------------------------------------- +// Rivet gun mappings +// +[RivetGun_BJT] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Mode=ModePreset1,ModePreset2,ModePreset3,ModePreset4,ModePreset5 +Subsystem=RivetGun +AttributeID=TriggerState + +[RivetGun_BJP] +IOMapping=ButtonJoystickPinky +Type=DirectMapping +Mode=ModePreset6 +Subsystem=RivetGun +AttributeID=TriggerState + +//----------------------------------------------------------------------- +// Laser gun 1 mappings +// +[LaserGun1_BJTH] +IOMapping=ButtonJoystickThumbHigh +Type=DirectMapping +Mode=ModePreset5 +Subsystem=LaserGun1 +AttributeID=TriggerState + +//----------------------------------------------------------------------- +// Rivet gun mappings +// +[DemoPack_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=DirectMapping +Mode=ModePreset5 +Subsystem=DemopackDropper +AttributeID=TriggerState + +//----------------------------------------------------------- +// Other joystick mappings +// +[LiftCut_BJP] +IOMapping=ButtonJoystickPinky +Type=DirectMapping +Mode=ModePreset2,ModePreset5 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[LiftCut_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=DirectMapping +Mode=ModePreset3,ModePreset4 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[LiftCut_BJT] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Mode=ModePreset6 +Subsystem=ControlsMapper +AttributeID=LiftCut + +//[PTT_BJTP] +//IOMapping=ButtonJoystickPinky +//Type=EventMapping +//Mode=ModePreset1,ModePreset3 +//Subsystem=ControlsMapper +//MessageID=ActivatePTT + diff --git a/CONTENT/RP/MODELS/RF1.MOD b/CONTENT/RP/MODELS/RF1.MOD new file mode 100644 index 0000000..19b558b --- /dev/null +++ b/CONTENT/RP/MODELS/RF1.MOD @@ -0,0 +1,14 @@ +[video] +object=rf1.bgf rf1l.bgf + +[collision] +name=rf1_cv.sld + +[gauge] +image=rf1_ga.gim + +[audio] +external=refinery.scp + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/RP/MODELS/RIPPER.BAK b/CONTENT/RP/MODELS/RIPPER.BAK new file mode 100644 index 0000000..b6d4401 --- /dev/null +++ b/CONTENT/RP/MODELS/RIPPER.BAK @@ -0,0 +1,48 @@ +[video] +skeleton=ban.skl +skeletons=bas.skl +skeletont=bat.skl +skeletono=ban.skl +skeletona=baa.skl +skeletonb=bab.skl +skeletonc=bac.skl +skeletond=baa.skl + +[collision] +name=ba_cv.sld + +[gauge] +image=bu_ga.gim + +[audio] +external=vtvext.scp +internal=ripper.scp + +[gamedata] +class=VTVClassID +MoverMass=2800.0 +MomentOfInertia=4.75 8 4.75 +PositiveLinearDragCoefficients=0.17 0.3 0.085 +NegativeLinearDragCoefficients=0.15 0.3 0.066 +AngularDragCoefficients=1.5 0.5 1.5 +FrictionCoefficient=0.4 +ElasticityCoefficient=0.2 +MinimumBounceSpeed=0.2 +MaxAcceleration=5.4 +MaxThrusterRotationRate=4.7 +GroundEffectDomainSquared=0.05 +GroundEffectRange=5.0 +MaxYawVelocity=40 +MaxAngularAcceleration=0.0 4.7 0.0 +AngularSpringFactor=10.0 +BankFactor=0.8 +DeathSpeed=275.0 +DeathScoreLoss=250.0 +MaxImpactSpeed=374.0 +Subsystems=ripper.sub +DamageZones=ripper.dmg + +[ControlMappings] +Thrustmaster=dpthr.ctl +L4=dpl4.ctl + diff --git a/CONTENT/RP/MODELS/RIPPER.DMG b/CONTENT/RP/MODELS/RIPPER.DMG new file mode 100644 index 0000000..db4919f --- /dev/null +++ b/CONTENT/RP/MODELS/RIPPER.DMG @@ -0,0 +1,2 @@ +[dz_vtv] +WeaponDamagePoints=300 \ No newline at end of file diff --git a/CONTENT/RP/MODELS/RIPPER.MOD b/CONTENT/RP/MODELS/RIPPER.MOD new file mode 100644 index 0000000..b6d4401 --- /dev/null +++ b/CONTENT/RP/MODELS/RIPPER.MOD @@ -0,0 +1,48 @@ +[video] +skeleton=ban.skl +skeletons=bas.skl +skeletont=bat.skl +skeletono=ban.skl +skeletona=baa.skl +skeletonb=bab.skl +skeletonc=bac.skl +skeletond=baa.skl + +[collision] +name=ba_cv.sld + +[gauge] +image=bu_ga.gim + +[audio] +external=vtvext.scp +internal=ripper.scp + +[gamedata] +class=VTVClassID +MoverMass=2800.0 +MomentOfInertia=4.75 8 4.75 +PositiveLinearDragCoefficients=0.17 0.3 0.085 +NegativeLinearDragCoefficients=0.15 0.3 0.066 +AngularDragCoefficients=1.5 0.5 1.5 +FrictionCoefficient=0.4 +ElasticityCoefficient=0.2 +MinimumBounceSpeed=0.2 +MaxAcceleration=5.4 +MaxThrusterRotationRate=4.7 +GroundEffectDomainSquared=0.05 +GroundEffectRange=5.0 +MaxYawVelocity=40 +MaxAngularAcceleration=0.0 4.7 0.0 +AngularSpringFactor=10.0 +BankFactor=0.8 +DeathSpeed=275.0 +DeathScoreLoss=250.0 +MaxImpactSpeed=374.0 +Subsystems=ripper.sub +DamageZones=ripper.dmg + +[ControlMappings] +Thrustmaster=dpthr.ctl +L4=dpl4.ctl + diff --git a/CONTENT/RP/MODELS/RIPPER.SUB b/CONTENT/RP/MODELS/RIPPER.SUB new file mode 100644 index 0000000..ddb76c5 --- /dev/null +++ b/CONTENT/RP/MODELS/RIPPER.SUB @@ -0,0 +1,31 @@ +[Booster1] +Type=BoosterClassID +BoosterCount=6 +BurnTime=8 +BoosterAcceleration=7 + +[Booster2] +Type=BoosterClassID +BoosterCount=6 +BurnTime=8 +BoosterAcceleration=7 + +[Chute] +Type=ChuteClassID +ChuteCount=3 +ReloadTime=3 +DragForce=0.14 +MinVelocity=20 +MaxRotation=60 +DeployTime=0.2 +SegmentPageName=sitechute + +[DemopackDropper] +Type=DemolitionPackDropperClassID +SubsystemFlags=DontReplicateFlag +AmmoCount=10 +LoadTime=0.5 +AmmoModelFile=demopack +MuzzleVelocity=0.0 -2.0 0.0 +SegmentPageName=sitemineport + diff --git a/CONTENT/RP/MODELS/RIVET.MOD b/CONTENT/RP/MODELS/RIVET.MOD new file mode 100644 index 0000000..cdcf519 --- /dev/null +++ b/CONTENT/RP/MODELS/RIVET.MOD @@ -0,0 +1,19 @@ +[video] +object=rivet.bgf + +[audio] +external=rivet.scp + +[gamedata] +class=RivetClassID +MoverMass=2.0 +MomentOfInertia=1.75 3.125 1.75 +PositiveLinearDragCoefficients=0.14 0.4 0.07 +NegativeLinearDragCoefficients=0.14 0.2 0.08 +AngularDragCoefficients=0.3 0.5 0.3 +FrictionCoefficient=0.0 +ElasticityCoefficient=0.0 +MinimumBounceSpeed=0.0 +DamageAmount=10.0 +DamageType=BallisticDamage +ExplosionModelFile=explode diff --git a/CONTENT/RP/MODELS/RIVETEXP.MOD b/CONTENT/RP/MODELS/RIVETEXP.MOD new file mode 100644 index 0000000..23137f5 --- /dev/null +++ b/CONTENT/RP/MODELS/RIVETEXP.MOD @@ -0,0 +1,10 @@ +[video] +object=1 + +[audio] +external=rivetexp.scp + +[gamedata] +class=ExplosionClassID +ExplosionResourceTable=RivetExplosionResourceTable +ExplosionDuration=3.0 \ No newline at end of file diff --git a/CONTENT/RP/MODELS/RIVETL4.CTL b/CONTENT/RP/MODELS/RIVETL4.CTL new file mode 100644 index 0000000..461976b --- /dev/null +++ b/CONTENT/RP/MODELS/RIVETL4.CTL @@ -0,0 +1,201 @@ +[Booster1_BALL1_1] +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Mode=ModeNonConfig +Subsystem=Booster1 +MessageID=Activate + +[Booster1_BALL1_2] +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Mode=ModeConfiguring +Subsystem=Booster1 +MessageID=ConfigureMappables + +[Booster1_BALL2_1] +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Mode=ModeNonConfig +Subsystem=Booster1 +MessageID=Activate + +[Booster1_BALL2_2] +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Mode=ModeConfiguring +Subsystem=Booster1 +MessageID=ConfigureMappables + +[Booster1_BJTH] +IOMapping=ButtonJoystickThumbHigh +Type=EventMapping +Mode=ModePreset1,ModePreset2,ModePreset3,ModePreset4,ModePreset5,ModePreset6 +Subsystem=Booster1 +MessageID=Activate + +//----------------------------------------------------------------------- +// Booster 2 mappings +// +[Booster2_BALL3_1] +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Mode=ModeNonConfig +Subsystem=Booster2 +MessageID=Activate + +[Booster2_BALL3_2] +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Mode=ModeConfiguring +Subsystem=Booster2 +MessageID=ConfigureMappables + +[Booster2_BALL4_1] +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Mode=ModeNonConfig +Subsystem=Booster2 +MessageID=Activate + +[Booster2_BALL4_2] +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Mode=ModeConfiguring +Subsystem=Booster2 +MessageID=ConfigureMappables + +[Booster2_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=EventMapping +Mode=ModePreset6 +Subsystem=Booster2 +MessageID=Activate + +//----------------------------------------------------------------------- +// Chute system mappings +// +[Chute_BALL5_1] +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Mode=ModeNonConfig +Subsystem=Chute +MessageID=Activate + +[Chute_BALL5_2] +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Mode=ModeConfiguring +Subsystem=Chute +MessageID=ConfigureMappables + +[Chute_BALL6_1] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Mode=ModeNonConfig +Subsystem=Chute +MessageID=Activate + +[Chute_BALL6_2] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Mode=ModeConfiguring +Subsystem=Chute +MessageID=ConfigureMappables + +[Chute_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=EventMapping +Mode=ModePreset1,ModePreset2 +Subsystem=Chute +MessageID=Activate + +[Chute_BJP] +IOMapping=ButtonJoystickPinky +Type=EventMapping +Mode=ModePreset4 +Subsystem=Chute +MessageID=Activate + +//----------------------------------------------------------------------- +// Rivet gun mappings +// +[RivetGun_BALR1_1] +IOMapping=ButtonAuxLowerRight1 +Type=DirectMapping +Mode=ModeNonConfig +Subsystem=RivetGun +AttributeID=TriggerState + +[RivetGun_BALR1_2] +IOMapping=ButtonAuxLowerRight1 +Type=EventMapping +Mode=ModeConfiguring +Subsystem=RivetGun +MessageID=ConfigureMappables + +[RivetGun_BALR2_1] +IOMapping=ButtonAuxLowerRight2 +Type=DirectMapping +Mode=ModeNonConfig +Subsystem=RivetGun +AttributeID=TriggerState + +[RivetGun_BALR2_2] +IOMapping=ButtonAuxLowerRight2 +Type=EventMapping +Mode=ModeConfiguring +Subsystem=RivetGun +MessageID=ConfigureMappables + +[RivetGun_BJT] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Mode=ModePreset1,ModePreset2,ModePreset3,ModePreset4,ModePreset5 +Subsystem=RivetGun +AttributeID=TriggerState + +[RivetGun_BJP] +IOMapping=ButtonJoystickPinky +Type=DirectMapping +Mode=ModePreset6 +Subsystem=RivetGun +AttributeID=TriggerState + +//----------------------------------------------------------- +// Other joystick mappings +// +[LiftCut_BJP] +IOMapping=ButtonJoystickPinky +Type=DirectMapping +Mode=ModePreset2,ModePreset5 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[LiftCut_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=DirectMapping +Mode=ModePreset3,ModePreset4 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[LiftCut_BJT] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Mode=ModePreset6 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[Horn_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=EventMapping +Mode=ModePreset5 +Subsystem=ControlsMapper +MessageID=ActivateHorn + +[PTT_BJTP] +IOMapping=ButtonJoystickPinky +Type=EventMapping +Mode=ModePreset1,ModePreset3 +Subsystem=ControlsMapper +MessageID=ActivatePTT + diff --git a/CONTENT/RP/MODELS/RIVETTHR.CTL b/CONTENT/RP/MODELS/RIVETTHR.CTL new file mode 100644 index 0000000..7ff6edc --- /dev/null +++ b/CONTENT/RP/MODELS/RIVETTHR.CTL @@ -0,0 +1,86 @@ +[RivetGun_BJT] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Mode=ModePreset1,ModePreset2,ModePreset3,ModePreset4,ModePreset5 +Subsystem=RivetGun +AttributeID=TriggerState + +[RivetGun_BJP] +IOMapping=ButtonJoystickPinky +Type=DirectMapping +Mode=ModePreset6 +Subsystem=RivetGun +AttributeID=TriggerState + +//---------------------------------------------------------- +// Booster mappings +// +[Booster1_BJTH] +IOMapping=ButtonJoystickThumbHigh +Type=EventMapping +Mode=ModePreset1,ModePreset2,ModePreset3,ModePreset4,ModePreset5,ModePreset6 +Subsystem=Booster1 +MessageID=Activate + +[Booster2_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=EventMapping +Mode=ModePreset6 +Subsystem=Booster2 +MessageID=Activate + +//---------------------------------------------------------- +// Chute mappings +// +[Chute_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=EventMapping +Mode=ModePreset1,ModePreset2 +Subsystem=Chute +MessageID=Activate + +[Chute_BJP] +IOMapping=ButtonJoystickPinky +Type=EventMapping +Mode=ModePreset4 +Subsystem=Chute +MessageID=Activate + +//----------------------------------------------------------- +// Other joystick mappings +// +[LiftCut_BJP] +IOMapping=ButtonJoystickPinky +Type=DirectMapping +Mode=ModePreset2,ModePreset5 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[LiftCut_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=DirectMapping +Mode=ModePreset3,ModePreset4 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[LiftCut_BJT] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Mode=ModePreset6 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[Horn_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=EventMapping +Mode=ModePreset5 +Subsystem=ControlsMapper +MessageID=ActivateHorn + +[PTT_BJTP] +IOMapping=ButtonJoystickPinky +Type=EventMapping +Mode=ModePreset1,ModePreset3 +Subsystem=ControlsMapper +MessageID=ActivatePTT + diff --git a/CONTENT/RP/MODELS/RL1.MOD b/CONTENT/RP/MODELS/RL1.MOD new file mode 100644 index 0000000..57771dc --- /dev/null +++ b/CONTENT/RP/MODELS/RL1.MOD @@ -0,0 +1,12 @@ +[video] +object=rl1.bgf rl1l.bgf + +[collision] +name=rl1_cv.sld + +[gauge] +image=rl1_ga.gim + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/RP/MODELS/RL2.MOD b/CONTENT/RP/MODELS/RL2.MOD new file mode 100644 index 0000000..af55a86 --- /dev/null +++ b/CONTENT/RP/MODELS/RL2.MOD @@ -0,0 +1,13 @@ +[video] +object=rl2.bgf rl2l.bgf + +[collision] +name=rl2_cv.sld + +[gauge] +image=rl2_ga.gim + +[gamedata] +class=UnscalableTerrainClassID + + diff --git a/CONTENT/RP/MODELS/RL3.MOD b/CONTENT/RP/MODELS/RL3.MOD new file mode 100644 index 0000000..3ed07bb --- /dev/null +++ b/CONTENT/RP/MODELS/RL3.MOD @@ -0,0 +1,13 @@ +[video] +object=rl3.bgf rl3l.bgf + +[collision] +name=rl3_cv.sld + +[gauge] +image=rl3_ga.gim + +[gamedata] +class=UnscalableTerrainClassID + + diff --git a/CONTENT/RP/MODELS/ROACH.BAK b/CONTENT/RP/MODELS/ROACH.BAK new file mode 100644 index 0000000..edd6095 --- /dev/null +++ b/CONTENT/RP/MODELS/ROACH.BAK @@ -0,0 +1,47 @@ +[video] +skeleton=san.skl +skeletons=sas.skl +skeletont=sat.skl +skeletono=san.skl +skeletona=saa.skl +skeletonb=sab.skl +skeletonc=sac.skl +skeletond=saa.skl + +[collision] +name=sa_cv.sld + +[gauge] +image=sp_ga.gim + +[audio] +external=vtvext.scp +internal=roach.scp + +[gamedata] +class=VTVClassID +MoverMass=800.0 +MomentOfInertia=1.89 3.125 1.89 +PositiveLinearDragCoefficients=0.14 0.3 0.085 +NegativeLinearDragCoefficients=0.14 0.3 0.064 +AngularDragCoefficients=1.5 0.5 1.5 +FrictionCoefficient=0.4 +ElasticityCoefficient=0.2 +MinimumBounceSpeed=0.2 +MaxAcceleration=6.3 +MaxThrusterRotationRate=4.7 +GroundEffectDomainSquared=0.3 +GroundEffectRange=17.0 +MaxYawVelocity=47.5 +MaxAngularAcceleration=0.0 4.7 0.0 +AngularSpringFactor=17.0 +BankFactor=1.5 +DeathSpeed=275.0 +DeathScoreLoss=250.0 +MaxImpactSpeed=165.0 +Subsystems=roach.sub +DamageZones=roach.dmg + +[ControlMappings] +Thrustmaster=2rivthr.ctl +L4=2rivl4.ctl diff --git a/CONTENT/RP/MODELS/ROACH.DMG b/CONTENT/RP/MODELS/ROACH.DMG new file mode 100644 index 0000000..30a63ee --- /dev/null +++ b/CONTENT/RP/MODELS/ROACH.DMG @@ -0,0 +1,2 @@ +[dz_vtv] +WeaponDamagePoints=200 \ No newline at end of file diff --git a/CONTENT/RP/MODELS/ROACH.MOD b/CONTENT/RP/MODELS/ROACH.MOD new file mode 100644 index 0000000..f14289f --- /dev/null +++ b/CONTENT/RP/MODELS/ROACH.MOD @@ -0,0 +1,47 @@ +[video] +skeleton=san.skl +skeletons=sas.skl +skeletont=sat.skl +skeletono=san.skl +skeletona=saa.skl +skeletonb=sab.skl +skeletonc=sac.skl +skeletond=saa.skl + +[collision] +name=sa_cv.sld + +[gauge] +image=sp_ga.gim + +[audio] +external=vtvext.scp +internal=roach.scp + +[gamedata] +class=VTVClassID +MoverMass=800.0 +MomentOfInertia=1.89 3.125 1.89 +PositiveLinearDragCoefficients=0.14 0.3 0.085 +NegativeLinearDragCoefficients=0.14 0.3 0.064 +AngularDragCoefficients=1.5 0.5 1.5 +FrictionCoefficient=0.4 +ElasticityCoefficient=0.2 +MinimumBounceSpeed=0.2 +MaxAcceleration=6.3 +MaxThrusterRotationRate=4.7 +GroundEffectDomainSquared=0.3 +GroundEffectRange=17.0 +MaxYawVelocity=47.5 +MaxAngularAcceleration=0.0 4.7 0.0 +AngularSpringFactor=17.0 +BankFactor=1.5 +DeathSpeed=275.0 +DeathScoreLoss=250.0 +MaxImpactSpeed=140.0 +Subsystems=roach.sub +DamageZones=roach.dmg + +[ControlMappings] +Thrustmaster=2rivthr.ctl +L4=2rivl4.ctl diff --git a/CONTENT/RP/MODELS/ROACH.SUB b/CONTENT/RP/MODELS/ROACH.SUB new file mode 100644 index 0000000..d870f22 --- /dev/null +++ b/CONTENT/RP/MODELS/ROACH.SUB @@ -0,0 +1,42 @@ +[Booster1] +Type=BoosterClassID +BoosterCount=6 +BurnTime=8 +BoosterAcceleration=13 + +[Booster2] +Type=BoosterClassID +BoosterCount=6 +BurnTime=8 +BoosterAcceleration=13 + +[Chute] +Type=ChuteClassID +ChuteCount=3 +ReloadTime=3 +DragForce=0.14 +MinVelocity=20 +MaxRotation=60 +DeployTime=0.2 +SegmentPageName=sitechute + +[RivetGun1] +Type=RivetGunClassID +SubsystemFlags=DontReplicateFlag +AmmoCount=300 +LoadTime=0.5 +AmmoModelFile=lrivet +MuzzleVelocity=0.0 6.5 350.0 +SegmentPageName=sitefrontleftport +RearSiteName=sitebackleftport + +[RivetGun2] +Type=RivetGunClassID +SubsystemFlags=DontReplicateFlag +AmmoCount=300 +LoadTime=0.5 +AmmoModelFile=lrivet +MuzzleVelocity=0.0 6.5 350.0 +SegmentPageName=sitefrontrightport +RearSiteName=sitebackrightport + diff --git a/CONTENT/RP/MODELS/ROADBLK.BAK b/CONTENT/RP/MODELS/ROADBLK.BAK new file mode 100644 index 0000000..4e16b67 --- /dev/null +++ b/CONTENT/RP/MODELS/ROADBLK.BAK @@ -0,0 +1,55 @@ +[Booster1] +Type=BoosterClassID +BoosterCount=6 +BurnTime=8 +BoosterAcceleration=7 + +[Booster2] +Type=BoosterClassID +BoosterCount=6 +BurnTime=8 +BoosterAcceleration=7 + +[Chute] +Type=ChuteClassID +ChuteCount=3 +ReloadTime=3 +DragForce=0.14 +MinVelocity=20 +MaxRotation=60 +DeployTime=0.2 +SegmentPageName=sitechute + +[RivetGun] +Type=RivetGunClassID +SubsystemFlags=DontReplicateFlag +AmmoCount=300 +LoadTime=0.5 +DamageLevel=20 +AmmoModelFile=hrivet +MuzzleVelocity=0.0 6.5 350.0 +SegmentPageName=sitefrontleftport +SiteRearName=sitebackleftport + +[LaserGun1] +Type=LaserDrillClassID +FullChargeDuration=4.0 +LaserDuration=0.10 +PulseDuration=0.25 +ChargePerSecond=0.10 +DrainPerSecond=0.25 +LaserLength=150.0 +ExplosionModelFile=laserexp +AmmoModelFile=mrivet +DamageAmount=100.0 +SegmentPageName=sitefrontrightport +SiteRearName=sitebackrightport + +[DemopackDropper] +Type=DemolitionPackDropperClassID +SubsystemFlags=DontReplicateFlag +AmmoCount=5.0 +LoadTime=5.0 +AmmoModelFile=demopack +MuzzleVelocity=0.0 -2.0 0.0 +SegmentPageName=sitemineport diff --git a/CONTENT/RP/MODELS/ROADBLK.DMG b/CONTENT/RP/MODELS/ROADBLK.DMG new file mode 100644 index 0000000..db4919f --- /dev/null +++ b/CONTENT/RP/MODELS/ROADBLK.DMG @@ -0,0 +1,2 @@ +[dz_vtv] +WeaponDamagePoints=300 \ No newline at end of file diff --git a/CONTENT/RP/MODELS/ROADBLK.MOD b/CONTENT/RP/MODELS/ROADBLK.MOD new file mode 100644 index 0000000..f2ccc21 --- /dev/null +++ b/CONTENT/RP/MODELS/ROADBLK.MOD @@ -0,0 +1,48 @@ +[video] +skeleton=ban.skl +skeletons=bas.skl +skeletont=bat.skl +skeletono=ban.skl +skeletona=baa.skl +skeletonb=bab.skl +skeletonc=bac.skl +skeletond=baa.skl + +[collision] +name=ba_cv.sld + +[gauge] +image=bu_ga.gim + +[audio] +external=vtvext.scp +internal=roadblk.scp + +[gamedata] +class=VTVClassID +MoverMass=2800.0 +MomentOfInertia=4.75 8 4.75 +PositiveLinearDragCoefficients=0.17 0.3 0.085 +NegativeLinearDragCoefficients=0.15 0.3 0.066 +AngularDragCoefficients=1.5 0.5 1.5 +FrictionCoefficient=0.4 +ElasticityCoefficient=0.2 +MinimumBounceSpeed=0.2 +MaxAcceleration=4.98 +MaxThrusterRotationRate=4.7 +GroundEffectDomainSquared=0.05 +GroundEffectRange=5.0 +MaxYawVelocity=35 +MaxAngularAcceleration=0.0 4.7 0.0 +AngularSpringFactor=10.0 +BankFactor=0.8 +DeathSpeed=275.0 +DeathScoreLoss=250.0 +MaxImpactSpeed=360.0 +Subsystems=roadblk.sub +DamageZones=roadblk.dmg + +[ControlMappings] +Thrustmaster=rdblkthr.ctl +L4=rdblkl4.ctl + diff --git a/CONTENT/RP/MODELS/ROADBLK.SUB b/CONTENT/RP/MODELS/ROADBLK.SUB new file mode 100644 index 0000000..4e16b67 --- /dev/null +++ b/CONTENT/RP/MODELS/ROADBLK.SUB @@ -0,0 +1,55 @@ +[Booster1] +Type=BoosterClassID +BoosterCount=6 +BurnTime=8 +BoosterAcceleration=7 + +[Booster2] +Type=BoosterClassID +BoosterCount=6 +BurnTime=8 +BoosterAcceleration=7 + +[Chute] +Type=ChuteClassID +ChuteCount=3 +ReloadTime=3 +DragForce=0.14 +MinVelocity=20 +MaxRotation=60 +DeployTime=0.2 +SegmentPageName=sitechute + +[RivetGun] +Type=RivetGunClassID +SubsystemFlags=DontReplicateFlag +AmmoCount=300 +LoadTime=0.5 +DamageLevel=20 +AmmoModelFile=hrivet +MuzzleVelocity=0.0 6.5 350.0 +SegmentPageName=sitefrontleftport +SiteRearName=sitebackleftport + +[LaserGun1] +Type=LaserDrillClassID +FullChargeDuration=4.0 +LaserDuration=0.10 +PulseDuration=0.25 +ChargePerSecond=0.10 +DrainPerSecond=0.25 +LaserLength=150.0 +ExplosionModelFile=laserexp +AmmoModelFile=mrivet +DamageAmount=100.0 +SegmentPageName=sitefrontrightport +SiteRearName=sitebackrightport + +[DemopackDropper] +Type=DemolitionPackDropperClassID +SubsystemFlags=DontReplicateFlag +AmmoCount=5.0 +LoadTime=5.0 +AmmoModelFile=demopack +MuzzleVelocity=0.0 -2.0 0.0 +SegmentPageName=sitemineport diff --git a/CONTENT/RP/MODELS/RP0.MOD b/CONTENT/RP/MODELS/RP0.MOD new file mode 100644 index 0000000..a9d7fb9 --- /dev/null +++ b/CONTENT/RP/MODELS/RP0.MOD @@ -0,0 +1,9 @@ +[video] +object=rp0.bgf + +[collision] +name=rp0_cv.sld + +[gamedata] +class=UnscalableTerrainClassID + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/RP1.MOD b/CONTENT/RP/MODELS/RP1.MOD new file mode 100644 index 0000000..3bf9b48 --- /dev/null +++ b/CONTENT/RP/MODELS/RP1.MOD @@ -0,0 +1,11 @@ +[video] +object=rp1.bgf rp1l.bgf + +[collision] +name=rp1_cv.sld + +[gauge] +image=rp1_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/RP/MODELS/RP2.MOD b/CONTENT/RP/MODELS/RP2.MOD new file mode 100644 index 0000000..f58e803 --- /dev/null +++ b/CONTENT/RP/MODELS/RP2.MOD @@ -0,0 +1,12 @@ +[video] +object=rp2.bgf rp2l.bgf + +[collision] +name=rp2_cv.sld + +[gauge] +image=rp2_ga.gim + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/RP/MODELS/RP3.MOD b/CONTENT/RP/MODELS/RP3.MOD new file mode 100644 index 0000000..9c64f6f --- /dev/null +++ b/CONTENT/RP/MODELS/RP3.MOD @@ -0,0 +1,12 @@ +[video] +object=rp3.bgf rp3l.bgf + +[collision] +name=rp3_cv.sld + +[gauge] +image=rp3_ga.gim + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/RP/MODELS/RVTEXPC.MOD b/CONTENT/RP/MODELS/RVTEXPC.MOD new file mode 100644 index 0000000..7ab5c91 --- /dev/null +++ b/CONTENT/RP/MODELS/RVTEXPC.MOD @@ -0,0 +1,9 @@ +[video] +object=1 + +[audio] +external=rvtexpc.scp + +[gamedata] +class=ExplosionClassID +ExplosionDuration=3.0 \ No newline at end of file diff --git a/CONTENT/RP/MODELS/RVTEXPI.MOD b/CONTENT/RP/MODELS/RVTEXPI.MOD new file mode 100644 index 0000000..d85852a --- /dev/null +++ b/CONTENT/RP/MODELS/RVTEXPI.MOD @@ -0,0 +1,9 @@ +[video] +object=1 + +[audio] +external=rvtexpi.scp + +[gamedata] +class=ExplosionClassID +ExplosionDuration=3.0 \ No newline at end of file diff --git a/CONTENT/RP/MODELS/SAN.DMG b/CONTENT/RP/MODELS/SAN.DMG new file mode 100644 index 0000000..152f9ed --- /dev/null +++ b/CONTENT/RP/MODELS/SAN.DMG @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/SAN.MOD b/CONTENT/RP/MODELS/SAN.MOD new file mode 100644 index 0000000..152f9ed --- /dev/null +++ b/CONTENT/RP/MODELS/SAN.MOD @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/SAS.DMG b/CONTENT/RP/MODELS/SAS.DMG new file mode 100644 index 0000000..152f9ed --- /dev/null +++ b/CONTENT/RP/MODELS/SAS.DMG @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/SAS.MOD b/CONTENT/RP/MODELS/SAS.MOD new file mode 100644 index 0000000..152f9ed --- /dev/null +++ b/CONTENT/RP/MODELS/SAS.MOD @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/SAS.SUB b/CONTENT/RP/MODELS/SAS.SUB new file mode 100644 index 0000000..152f9ed --- /dev/null +++ b/CONTENT/RP/MODELS/SAS.SUB @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/SASL4.CTL b/CONTENT/RP/MODELS/SASL4.CTL new file mode 100644 index 0000000..152f9ed --- /dev/null +++ b/CONTENT/RP/MODELS/SASL4.CTL @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/SASTHR.CTL b/CONTENT/RP/MODELS/SASTHR.CTL new file mode 100644 index 0000000..152f9ed --- /dev/null +++ b/CONTENT/RP/MODELS/SASTHR.CTL @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/SAT.DMG b/CONTENT/RP/MODELS/SAT.DMG new file mode 100644 index 0000000..152f9ed --- /dev/null +++ b/CONTENT/RP/MODELS/SAT.DMG @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/SAT.MOD b/CONTENT/RP/MODELS/SAT.MOD new file mode 100644 index 0000000..152f9ed --- /dev/null +++ b/CONTENT/RP/MODELS/SAT.MOD @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/SC50.MOD b/CONTENT/RP/MODELS/SC50.MOD new file mode 100644 index 0000000..99aa8e0 --- /dev/null +++ b/CONTENT/RP/MODELS/SC50.MOD @@ -0,0 +1,11 @@ +[video] +object=sc500l.bgf + +[gauge] +image=sc50_ga.gim + +[gamedata] +class=ScoreZoneClassID +ScoreZoneType=LocalSequential +PointValue=500 +Extents=sc50_cv.sld diff --git a/CONTENT/RP/MODELS/SC500.MOD b/CONTENT/RP/MODELS/SC500.MOD new file mode 100644 index 0000000..2f2d9a8 --- /dev/null +++ b/CONTENT/RP/MODELS/SC500.MOD @@ -0,0 +1,8 @@ +[video] +object=sc500l.bgf + +[gamedata] +class=ScoreZoneClassID +ScoreZoneType=LocalSequential +PointValue=500 +Extents=sc500_cv.sld diff --git a/CONTENT/RP/MODELS/SC500A.MOD b/CONTENT/RP/MODELS/SC500A.MOD new file mode 100644 index 0000000..c71a633 --- /dev/null +++ b/CONTENT/RP/MODELS/SC500A.MOD @@ -0,0 +1,6 @@ +[gauge] +image=sc500_ga.gim + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/RP/MODELS/SC50A.MOD b/CONTENT/RP/MODELS/SC50A.MOD new file mode 100644 index 0000000..ed244db --- /dev/null +++ b/CONTENT/RP/MODELS/SC50A.MOD @@ -0,0 +1,6 @@ +[gauge] +image=sc50_ga.gim + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/RP/MODELS/SKEETER.BAK b/CONTENT/RP/MODELS/SKEETER.BAK new file mode 100644 index 0000000..0054169 --- /dev/null +++ b/CONTENT/RP/MODELS/SKEETER.BAK @@ -0,0 +1,49 @@ +[video] +skeleton=san.skl +skeletons=sas.skl +skeletont=sat.skl +skeletono=san.skl +skeletona=saa.skl +skeletonb=sab.skl +skeletonc=sac.skl +skeletond=saa.skl + +[collision] +name=sa_cv.sld + +[gauge] +image=sp_ga.gim + +[audio] +external=sktext.scp +internal=skeeter.scp + +[gamedata] +class=VTVClassID +MoverMass=800.0 +MomentOfInertia=1.89 3.125 1.89 +PositiveLinearDragCoefficients=0.14 0.3 0.085 +NegativeLinearDragCoefficients=0.14 0.3 0.064 +AngularDragCoefficients=1.5 0.5 1.5 +FrictionCoefficient=0.4 +ElasticityCoefficient=0.2 +MinimumBounceSpeed=0.2 +MaxAcceleration=6.3 +MaxThrusterRotationRate=4.7 +GroundEffectDomainSquared=0.3 +GroundEffectRange=17.0 +MaxYawVelocity=50.0 +MaxAngularAcceleration=0.0 4.7 0.0 +AngularSpringFactor=17.0 +BankFactor=1.5 +DeathSpeed=275.0 +DeathScoreLoss=175.0 +Subsystems=skeeter.sub +DamageZones=chigger.dmg +MaxImpactSpeed=165.0 +ReticleX=-0.08 +ReticleY=0.08 + +[ControlMappings] +Thrustmaster=sktrthr.ctl +L4=sktrl4.ctl diff --git a/CONTENT/RP/MODELS/SKEETER.MOD b/CONTENT/RP/MODELS/SKEETER.MOD new file mode 100644 index 0000000..fd49e79 --- /dev/null +++ b/CONTENT/RP/MODELS/SKEETER.MOD @@ -0,0 +1,49 @@ +[video] +skeleton=san.skl +skeletons=sas.skl +skeletont=sat.skl +skeletono=san.skl +skeletona=saa.skl +skeletonb=sab.skl +skeletonc=sac.skl +skeletond=saa.skl + +[collision] +name=sa_cv.sld + +[gauge] +image=sp_ga.gim + +[audio] +external=sktext.scp +internal=skeeter.scp + +[gamedata] +class=VTVClassID +MoverMass=800.0 +MomentOfInertia=1.89 3.125 1.89 +PositiveLinearDragCoefficients=0.14 0.3 0.085 +NegativeLinearDragCoefficients=0.14 0.3 0.064 +AngularDragCoefficients=1.5 0.5 1.5 +FrictionCoefficient=0.4 +ElasticityCoefficient=0.2 +MinimumBounceSpeed=0.2 +MaxAcceleration=6.3 +MaxThrusterRotationRate=4.7 +GroundEffectDomainSquared=0.3 +GroundEffectRange=17.0 +MaxYawVelocity=50.0 +MaxAngularAcceleration=0.0 4.7 0.0 +AngularSpringFactor=17.0 +BankFactor=1.5 +DeathSpeed=275.0 +DeathScoreLoss=175.0 +Subsystems=skeeter.sub +DamageZones=chigger.dmg +MaxImpactSpeed=140.0 +ReticleX=-0.08 +ReticleY=0.08 + +[ControlMappings] +Thrustmaster=sktrthr.ctl +L4=sktrl4.ctl diff --git a/CONTENT/RP/MODELS/SKEETER.SUB b/CONTENT/RP/MODELS/SKEETER.SUB new file mode 100644 index 0000000..f9e896c --- /dev/null +++ b/CONTENT/RP/MODELS/SKEETER.SUB @@ -0,0 +1,35 @@ +[Booster1] +Type=BoosterClassID +BoosterCount=6 +BurnTime=8 +BoosterAcceleration=13 + +[Booster2] +Type=BoosterClassID +BoosterCount=6 +BurnTime=8 +BoosterAcceleration=13 + +[Chute] +Type=ChuteClassID +ChuteCount=3 +ReloadTime=3 +DragForce=0.14 +MinVelocity=20 +MaxRotation=60 +DeployTime=0.2 +SegmentPageName=sitechute + +[LaserGun2] +Type=LaserDrillClassID +DamageAmount=60.0 +FullChargeDuration=4.0 +LaserDuration=0.10 +PulseDuration=0.25 +ChargePerSecond=0.10 +DrainPerSecond=0.25 +LaserLength=100.0 +AmmoModelFile=mrivet +SegmentPageName=sitefrontleftport +RearSiteName=sitebackleftport +ExplosionModelFile=laserexp diff --git a/CONTENT/RP/MODELS/SKTRL4.CTL b/CONTENT/RP/MODELS/SKTRL4.CTL new file mode 100644 index 0000000..730b9a2 --- /dev/null +++ b/CONTENT/RP/MODELS/SKTRL4.CTL @@ -0,0 +1,206 @@ +[Booster1_BALL1_1] +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Mode=ModeNonConfig +Subsystem=Booster1 +MessageID=Activate + +[Booster1_BALL1_2] +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Mode=ModeConfiguring +Subsystem=Booster1 +MessageID=ConfigureMappables + +[Booster1_BALL2_1] +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Mode=ModeNonConfig +Subsystem=Booster1 +MessageID=Activate + +[Booster1_BALL2_2] +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Mode=ModeConfiguring +Subsystem=Booster1 +MessageID=ConfigureMappables + +[Booster1_BJTH] +IOMapping=ButtonJoystickThumbHigh +Type=EventMapping +Mode=ModePreset1,ModePreset2,ModePreset3,ModePreset4,ModePreset5,ModePreset6 +Subsystem=Booster1 +MessageID=Activate + +//----------------------------------------------------------------------- +// Booster 2 mappings +// +[Booster2_BALL3_1] +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Mode=ModeNonConfig +Subsystem=Booster2 +MessageID=Activate + +[Booster2_BALL3_2] +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Mode=ModeConfiguring +Subsystem=Booster2 +MessageID=ConfigureMappables + +[Booster2_BALL4_1] +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Mode=ModeNonConfig +Subsystem=Booster2 +MessageID=Activate + +[Booster2_BALL4_2] +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Mode=ModeConfiguring +Subsystem=Booster2 +MessageID=ConfigureMappables + +[Booster2_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=EventMapping +Mode=ModePreset6 +Subsystem=Booster2 +MessageID=Activate + +//----------------------------------------------------------------------- +// Chute system mappings +// +[Chute_BALL5_1] +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Mode=ModeNonConfig +Subsystem=Chute +MessageID=Activate + +[Chute_BALL5_2] +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Mode=ModeConfiguring +Subsystem=Chute +MessageID=ConfigureMappables + +[Chute_BALL6_1] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Mode=ModeNonConfig +Subsystem=Chute +MessageID=Activate + +[Chute_BALL6_2] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Mode=ModeConfiguring +Subsystem=Chute +MessageID=ConfigureMappables + +[Chute_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=EventMapping +Mode=ModePreset1,ModePreset2 +Subsystem=Chute +MessageID=Activate + +[Chute_BJP] +IOMapping=ButtonJoystickPinky +Type=EventMapping +Mode=ModePreset4 +Subsystem=Chute +MessageID=Activate + +//----------------------------------------------------------------------- +// Laser gun mappings +// +[LaserGun2_BALR1_1] +IOMapping=ButtonAuxLowerRight1 +Type=DirectMapping +Mode=ModeNonConfig +Subsystem=LaserGun2 +AttributeID=TriggerState + +[LaserGun2_BALR1_2] +IOMapping=ButtonAuxLowerRight1 +Type=EventMapping +Mode=ModeConfiguring +Subsystem=LaserGun2 +MessageID=ConfigureMappables + +[LaserGun2_BALR2_1] +IOMapping=ButtonAuxLowerRight2 +Type=DirectMapping +Mode=ModeNonConfig +Subsystem=LaserGun2 +AttributeID=TriggerState + +[LaserGun2_BALR2_2] +IOMapping=ButtonAuxLowerRight2 +Type=EventMapping +Mode=ModeConfiguring +Subsystem=LaserGun2 +MessageID=ConfigureMappables + +[LaserGun2_BJT] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Mode=ModePreset1,ModePreset2,ModePreset3,ModePreset4,ModePreset5 +Subsystem=LaserGun2 +AttributeID=TriggerState + +[LaserGun2_BJP] +IOMapping=ButtonJoystickPinky +Type=DirectMapping +Mode=ModePreset6 +Subsystem=LaserGun2 +AttributeID=TriggerState + +//----------------------------------------------------------- +// Other joystick mappings +// +[LiftCut_BJP] +IOMapping=ButtonJoystickPinky +Type=DirectMapping +Mode=ModePreset2,ModePreset5 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[LiftCut_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=DirectMapping +Mode=ModePreset3,ModePreset4 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[LiftCut_BJT] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Mode=ModePreset6 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[Horn_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=EventMapping +Mode=ModePreset5 +Subsystem=ControlsMapper +MessageID=ActivateHorn + +//-------------------------------------------------------------- +// re-install this once we really have an intercom! +// (until we do, it shows a mapping on the configuration +// mapper that doesn't belong to anything the pilot can control) +//-------------------------------------------------------------- +//[PTT_BJTP] +//IOMapping=ButtonJoystickPinky +//Type=EventMapping +//Mode=ModePreset1,ModePreset3 +//Subsystem=ControlsMapper +//MessageID=ActivatePTT + diff --git a/CONTENT/RP/MODELS/SKTRTHR.CTL b/CONTENT/RP/MODELS/SKTRTHR.CTL new file mode 100644 index 0000000..def2f22 --- /dev/null +++ b/CONTENT/RP/MODELS/SKTRTHR.CTL @@ -0,0 +1,86 @@ +[LaserGun2_BJT] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Mode=ModePreset1,ModePreset2,ModePreset3,ModePreset4,ModePreset5 +Subsystem=LaserGun2 +AttributeID=TriggerState + +[LaserGun2_BJP] +IOMapping=ButtonJoystickPinky +Type=DirectMapping +Mode=ModePreset6 +Subsystem=LaserGun2 +AttributeID=TriggerState + +//---------------------------------------------------------- +// Booster mappings +// +[Booster1_BJTH] +IOMapping=ButtonJoystickThumbHigh +Type=EventMapping +Mode=ModePreset1,ModePreset2,ModePreset3,ModePreset4,ModePreset5,ModePreset6 +Subsystem=Booster1 +MessageID=Activate + +[Booster2_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=EventMapping +Mode=ModePreset6 +Subsystem=Booster2 +MessageID=Activate + +//---------------------------------------------------------- +// Chute mappings +// +[Chute_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=EventMapping +Mode=ModePreset1,ModePreset2 +Subsystem=Chute +MessageID=Activate + +[Chute_BJP] +IOMapping=ButtonJoystickPinky +Type=EventMapping +Mode=ModePreset4 +Subsystem=Chute +MessageID=Activate + +//----------------------------------------------------------- +// Other joystick mappings +// +[LiftCut_BJP] +IOMapping=ButtonJoystickPinky +Type=DirectMapping +Mode=ModePreset2,ModePreset5 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[LiftCut_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=DirectMapping +Mode=ModePreset3,ModePreset4 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[LiftCut_BJT] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Mode=ModePreset6 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[Horn_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=EventMapping +Mode=ModePreset5 +Subsystem=ControlsMapper +MessageID=ActivateHorn + +[PTT_BJTP] +IOMapping=ButtonJoystickPinky +Type=EventMapping +Mode=ModePreset1,ModePreset3 +Subsystem=ControlsMapper +MessageID=ActivatePTT + diff --git a/CONTENT/RP/MODELS/SNAALE.MOD b/CONTENT/RP/MODELS/SNAALE.MOD new file mode 100644 index 0000000..84da38b --- /dev/null +++ b/CONTENT/RP/MODELS/SNAALE.MOD @@ -0,0 +1,6 @@ +[video] +object=snAale.bgf + +[gamedata] +class=UnscalableTerrainClassID + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/SNACRANE.MOD b/CONTENT/RP/MODELS/SNACRANE.MOD new file mode 100644 index 0000000..6dcf6d4 --- /dev/null +++ b/CONTENT/RP/MODELS/SNACRANE.MOD @@ -0,0 +1,7 @@ +[video] +object=snAcrane.bgf + +[gamedata] +class=UnscalableTerrainClassID + + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/SNADOS.MOD b/CONTENT/RP/MODELS/SNADOS.MOD new file mode 100644 index 0000000..a63c4ea --- /dev/null +++ b/CONTENT/RP/MODELS/SNADOS.MOD @@ -0,0 +1,7 @@ +[video] +object=snAdos.bgf + +[gamedata] +class=UnscalableTerrainClassID + + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/SNAENTER.MOD b/CONTENT/RP/MODELS/SNAENTER.MOD new file mode 100644 index 0000000..a46a9a2 --- /dev/null +++ b/CONTENT/RP/MODELS/SNAENTER.MOD @@ -0,0 +1,7 @@ +[video] +object=snAenter.bgf + +[gamedata] +class=UnscalableTerrainClassID + + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/SNAEVAC.MOD b/CONTENT/RP/MODELS/SNAEVAC.MOD new file mode 100644 index 0000000..9d41866 --- /dev/null +++ b/CONTENT/RP/MODELS/SNAEVAC.MOD @@ -0,0 +1,7 @@ +[video] +object=snAevac.bgf + +[gamedata] +class=UnscalableTerrainClassID + + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/SNAHAZ.MOD b/CONTENT/RP/MODELS/SNAHAZ.MOD new file mode 100644 index 0000000..b41f26c --- /dev/null +++ b/CONTENT/RP/MODELS/SNAHAZ.MOD @@ -0,0 +1,7 @@ +[video] +object=snAhaz.bgf + +[gamedata] +class=UnscalableTerrainClassID + + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/SNAHEADM.MOD b/CONTENT/RP/MODELS/SNAHEADM.MOD new file mode 100644 index 0000000..2bf6ca2 --- /dev/null +++ b/CONTENT/RP/MODELS/SNAHEADM.MOD @@ -0,0 +1,7 @@ +[video] +object=snAheadm.bgf + +[gamedata] +class=UnscalableTerrainClassID + + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/SNALIMIT.MOD b/CONTENT/RP/MODELS/SNALIMIT.MOD new file mode 100644 index 0000000..845dab8 --- /dev/null +++ b/CONTENT/RP/MODELS/SNALIMIT.MOD @@ -0,0 +1,7 @@ +[video] +object=snAlimit.bgf + +[gamedata] +class=UnscalableTerrainClassID + + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/SNALOXM.MOD b/CONTENT/RP/MODELS/SNALOXM.MOD new file mode 100644 index 0000000..9594e63 --- /dev/null +++ b/CONTENT/RP/MODELS/SNALOXM.MOD @@ -0,0 +1,7 @@ +[video] +object=snAloxm.bgf + +[gamedata] +class=UnscalableTerrainClassID + + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/SNAMFAC.MOD b/CONTENT/RP/MODELS/SNAMFAC.MOD new file mode 100644 index 0000000..c9b7413 --- /dev/null +++ b/CONTENT/RP/MODELS/SNAMFAC.MOD @@ -0,0 +1,7 @@ +[video] +object=snAmfac.bgf + +[gamedata] +class=UnscalableTerrainClassID + + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/SNANORC.MOD b/CONTENT/RP/MODELS/SNANORC.MOD new file mode 100644 index 0000000..b881618 --- /dev/null +++ b/CONTENT/RP/MODELS/SNANORC.MOD @@ -0,0 +1,7 @@ +[video] +object=snAnorc.bgf + +[gamedata] +class=UnscalableTerrainClassID + + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/SNARADS.MOD b/CONTENT/RP/MODELS/SNARADS.MOD new file mode 100644 index 0000000..344b5b4 --- /dev/null +++ b/CONTENT/RP/MODELS/SNARADS.MOD @@ -0,0 +1,7 @@ +[video] +object=snArads.bgf + +[gamedata] +class=UnscalableTerrainClassID + + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/SNASPDS.MOD b/CONTENT/RP/MODELS/SNASPDS.MOD new file mode 100644 index 0000000..cfcf63c --- /dev/null +++ b/CONTENT/RP/MODELS/SNASPDS.MOD @@ -0,0 +1,7 @@ +[video] +object=snAspds.bgf + +[gamedata] +class=UnscalableTerrainClassID + + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/SNATSPD.MOD b/CONTENT/RP/MODELS/SNATSPD.MOD new file mode 100644 index 0000000..f58f11b --- /dev/null +++ b/CONTENT/RP/MODELS/SNATSPD.MOD @@ -0,0 +1,7 @@ +[video] +object=snAtspd.bgf + +[gamedata] +class=UnscalableTerrainClassID + + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/SNAWELC.MOD b/CONTENT/RP/MODELS/SNAWELC.MOD new file mode 100644 index 0000000..22c7f31 --- /dev/null +++ b/CONTENT/RP/MODELS/SNAWELC.MOD @@ -0,0 +1,7 @@ +[video] +object=snAwelc.bgf + +[gamedata] +class=UnscalableTerrainClassID + + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/SNAWORK.MOD b/CONTENT/RP/MODELS/SNAWORK.MOD new file mode 100644 index 0000000..8f8551b --- /dev/null +++ b/CONTENT/RP/MODELS/SNAWORK.MOD @@ -0,0 +1,7 @@ +[video] +object=snAwork.bgf + +[gamedata] +class=UnscalableTerrainClassID + + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/SPECK.BAK b/CONTENT/RP/MODELS/SPECK.BAK new file mode 100644 index 0000000..a9bb2d7 --- /dev/null +++ b/CONTENT/RP/MODELS/SPECK.BAK @@ -0,0 +1,47 @@ +[video] +skeleton=sun.skl +skeletons=sus.skl +skeletont=sut.skl +skeletono=sun.skl +skeletona=sua.skl +skeletonb=sub.skl +skeletonc=suc.skl +skeletond=sua.skl + +[collision] +name=su_cv.sld + +[gauge] +image=sp_ga.gim + +[audio] +external=vtvext.scp +internal=speck.scp + +[gamedata] +class=VTVClassID +MoverMass=600.0 +MomentOfInertia=2.02 3.38 2.02 +PositiveLinearDragCoefficients=0.14 0.3 0.08 +NegativeLinearDragCoefficients=0.14 0.3 0.058 +AngularDragCoefficients=1.5 0.5 1.5 +FrictionCoefficient=0.4 +ElasticityCoefficient=0.2 +MinimumBounceSpeed=0.2 +MaxAcceleration=6.4 +MaxThrusterRotationRate=4.7 +GroundEffectDomainSquared=0.3 +GroundEffectRange=17.0 +MaxYawVelocity=60 +MaxAngularAcceleration=0.0 4.7 0.0 +AngularSpringFactor=17.0 +BankFactor=1.5 +DeathSpeed=275.0 +DeathScoreLoss=250.0 +MaxImpactSpeed=140.0 +Subsystems=speck.sub +DamageZones=speck.dmg + +[ControlMappings] +Thrustmaster=2x6thr.ctl +L4=2x6l4.ctl diff --git a/CONTENT/RP/MODELS/SPECK.DMG b/CONTENT/RP/MODELS/SPECK.DMG new file mode 100644 index 0000000..1086c20 --- /dev/null +++ b/CONTENT/RP/MODELS/SPECK.DMG @@ -0,0 +1,2 @@ +[dz_vtv] +WeaponDamagePoints=150.0 \ No newline at end of file diff --git a/CONTENT/RP/MODELS/SPECK.MOD b/CONTENT/RP/MODELS/SPECK.MOD new file mode 100644 index 0000000..005479c --- /dev/null +++ b/CONTENT/RP/MODELS/SPECK.MOD @@ -0,0 +1,47 @@ +[video] +skeleton=sun.skl +skeletons=sus.skl +skeletont=sut.skl +skeletono=sun.skl +skeletona=sua.skl +skeletonb=sub.skl +skeletonc=suc.skl +skeletond=sua.skl + +[collision] +name=su_cv.sld + +[gauge] +image=sp_ga.gim + +[audio] +external=vtvext.scp +internal=speck.scp + +[gamedata] +class=VTVClassID +MoverMass=600.0 +MomentOfInertia=2.02 3.38 2.02 +PositiveLinearDragCoefficients=0.14 0.3 0.08 +NegativeLinearDragCoefficients=0.14 0.3 0.058 +AngularDragCoefficients=1.5 0.5 1.5 +FrictionCoefficient=0.4 +ElasticityCoefficient=0.2 +MinimumBounceSpeed=0.2 +MaxAcceleration=6.4 +MaxThrusterRotationRate=4.7 +GroundEffectDomainSquared=0.3 +GroundEffectRange=17.0 +MaxYawVelocity=60 +MaxAngularAcceleration=0.0 4.7 0.0 +AngularSpringFactor=17.0 +BankFactor=1.5 +DeathSpeed=275.0 +DeathScoreLoss=250.0 +MaxImpactSpeed=115.0 +Subsystems=speck.sub +DamageZones=speck.dmg + +[ControlMappings] +Thrustmaster=2x6thr.ctl +L4=2x6l4.ctl diff --git a/CONTENT/RP/MODELS/SPECK.SUB b/CONTENT/RP/MODELS/SPECK.SUB new file mode 100644 index 0000000..23f8013 --- /dev/null +++ b/CONTENT/RP/MODELS/SPECK.SUB @@ -0,0 +1,21 @@ +[Booster1] +Type=BoosterClassID +BoosterCount=8 +BurnTime=8 +BoosterAcceleration=13 + +[Booster2] +Type=BoosterClassID +BoosterCount=8 +BurnTime=8 +BoosterAcceleration=13 + +[Chute] +Type=ChuteClassID +ChuteCount=3 +ReloadTime=3 +DragForce=0.14 +MinVelocity=20 +MaxRotation=60 +DeployTime=0.2 +SegmentPageName=sitechute \ No newline at end of file diff --git a/CONTENT/RP/MODELS/SPITTER.BAK b/CONTENT/RP/MODELS/SPITTER.BAK new file mode 100644 index 0000000..4340f55 --- /dev/null +++ b/CONTENT/RP/MODELS/SPITTER.BAK @@ -0,0 +1,48 @@ +[video] +skeleton=ban.skl +skeletons=bas.skl +skeletont=bat.skl +skeletono=ban.skl +skeletona=baa.skl +skeletonb=bab.skl +skeletonc=bac.skl +skeletond=baa.skl + +[collision] +name=ba_cv.sld + +[gauge] +image=bu_ga.gim + +[audio] +external=vtvext.scp +internal=spitter.scp + +[gamedata] +class=VTVClassID +MoverMass=2800.0 +MomentOfInertia=4.75 8 4.75 +PositiveLinearDragCoefficients=0.17 0.3 0.085 +NegativeLinearDragCoefficients=0.15 0.3 0.066 +AngularDragCoefficients=1.5 0.5 1.5 +FrictionCoefficient=0.4 +ElasticityCoefficient=0.2 +MinimumBounceSpeed=0.2 +MaxAcceleration=5.22 +MaxThrusterRotationRate=4.7 +GroundEffectDomainSquared=0.05 +GroundEffectRange=5.0 +MaxYawVelocity=35 +MaxAngularAcceleration=0.0 4.7 0.0 +AngularSpringFactor=10.0 +BankFactor=0.8 +DeathSpeed=275.0 +DeathScoreLoss=250.0 +MaxImpactSpeed=360.0 +Subsystems=spitter.sub +DamageZones=spitter.dmg + +[ControlMappings] +Thrustmaster=2rivthr.ctl +L4=2rivl4.ctl + diff --git a/CONTENT/RP/MODELS/SPITTER.DMG b/CONTENT/RP/MODELS/SPITTER.DMG new file mode 100644 index 0000000..db4919f --- /dev/null +++ b/CONTENT/RP/MODELS/SPITTER.DMG @@ -0,0 +1,2 @@ +[dz_vtv] +WeaponDamagePoints=300 \ No newline at end of file diff --git a/CONTENT/RP/MODELS/SPITTER.MOD b/CONTENT/RP/MODELS/SPITTER.MOD new file mode 100644 index 0000000..003366e --- /dev/null +++ b/CONTENT/RP/MODELS/SPITTER.MOD @@ -0,0 +1,48 @@ +[video] +skeleton=ban.skl +skeletons=bas.skl +skeletont=bat.skl +skeletono=ban.skl +skeletona=baa.skl +skeletonb=bab.skl +skeletonc=bac.skl +skeletond=baa.skl + +[collision] +name=ba_cv.sld + +[gauge] +image=bu_ga.gim + +[audio] +external=vtvext.scp +internal=spitter.scp + +[gamedata] +class=VTVClassID +MoverMass=2800.0 +MomentOfInertia=4.75 8 4.75 +PositiveLinearDragCoefficients=0.17 0.3 0.085 +NegativeLinearDragCoefficients=0.15 0.3 0.066 +AngularDragCoefficients=1.5 0.5 1.5 +FrictionCoefficient=0.4 +ElasticityCoefficient=0.2 +MinimumBounceSpeed=0.2 +MaxAcceleration=5.22 +MaxThrusterRotationRate=4.7 +GroundEffectDomainSquared=0.05 +GroundEffectRange=5.0 +MaxYawVelocity=35 +MaxAngularAcceleration=0.0 4.7 0.0 +AngularSpringFactor=10.0 +BankFactor=0.8 +DeathSpeed=275.0 +DeathScoreLoss=250.0 +MaxImpactSpeed=370.0 +Subsystems=spitter.sub +DamageZones=spitter.dmg + +[ControlMappings] +Thrustmaster=2rivthr.ctl +L4=2rivl4.ctl + diff --git a/CONTENT/RP/MODELS/SPITTER.SUB b/CONTENT/RP/MODELS/SPITTER.SUB new file mode 100644 index 0000000..6386d9d --- /dev/null +++ b/CONTENT/RP/MODELS/SPITTER.SUB @@ -0,0 +1,41 @@ +[Booster1] +Type=BoosterClassID +BoosterCount=6 +BurnTime=8 +BoosterAcceleration=7 + +[Booster2] +Type=BoosterClassID +BoosterCount=6 +BurnTime=8 +BoosterAcceleration=7 + +[Chute] +Type=ChuteClassID +ChuteCount=3 +ReloadTime=3 +DragForce=0.14 +MinVelocity=20 +MaxRotation=60 +DeployTime=0.2 +SegmentPageName=sitechute + +[RivetGun1] +Type=RivetGunClassID +SubsystemFlags=DontReplicateFlag +AmmoCount=300 +LoadTime=0.5 +AmmoModelFile=mrivet +MuzzleVelocity=0.0 6.5 350.0 +SegmentPageName=sitefrontleftport +RearSiteName=sitebackleftport + +[RivetGun2] +Type=RivetGunClassID +SubsystemFlags=DontReplicateFlag +AmmoCount=300 +LoadTime=0.5 +AmmoModelFile=mrivet +MuzzleVelocity=0.0 6.5 350.0 +SegmentPageName=sitefrontrightport +RearSiteName=sitebackrightport diff --git a/CONTENT/RP/MODELS/STAD.MOD b/CONTENT/RP/MODELS/STAD.MOD new file mode 100644 index 0000000..152f9ed --- /dev/null +++ b/CONTENT/RP/MODELS/STAD.MOD @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/STATIC.ONL b/CONTENT/RP/MODELS/STATIC.ONL new file mode 100644 index 0000000..db59e98 --- /dev/null +++ b/CONTENT/RP/MODELS/STATIC.ONL @@ -0,0 +1,21 @@ +# +#-------------------------------------------------- +# Static objects for rp +#-------------------------------------------------- +# + +# +#-------------------------------------------------- +# Explosion Resource Tables +#-------------------------------------------------- +# + +[ExplosionResourceTable] +table_entry=6, rvtexpi +table_entry=7, rvtexpc +name=RivetExplosionResourceTable + +[ExplosionResourceTable] +table_entry=6, lsrexpi +table_entry=7, lsrexpc +name=LaserExplosionResourceTable diff --git a/CONTENT/RP/MODELS/STATIC.SCP b/CONTENT/RP/MODELS/STATIC.SCP new file mode 100644 index 0000000..152f9ed --- /dev/null +++ b/CONTENT/RP/MODELS/STATIC.SCP @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/STL4.CTL b/CONTENT/RP/MODELS/STL4.CTL new file mode 100644 index 0000000..fb4c6a8 --- /dev/null +++ b/CONTENT/RP/MODELS/STL4.CTL @@ -0,0 +1,206 @@ +[Booster1_BALL1_1] +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Mode=ModeNonConfig +Subsystem=Booster1 +MessageID=Activate + +[Booster1_BALL1_2] +IOMapping=ButtonAuxLowerLeft1 +Type=EventMapping +Mode=ModeConfiguring +Subsystem=Booster1 +MessageID=ConfigureMappables + +[Booster1_BALL2_1] +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Mode=ModeNonConfig +Subsystem=Booster1 +MessageID=Activate + +[Booster1_BALL2_2] +IOMapping=ButtonAuxLowerLeft2 +Type=EventMapping +Mode=ModeConfiguring +Subsystem=Booster1 +MessageID=ConfigureMappables + +[Booster1_BJTH] +IOMapping=ButtonJoystickThumbHigh +Type=EventMapping +Mode=ModePreset1,ModePreset2,ModePreset3,ModePreset4,ModePreset5,ModePreset6 +Subsystem=Booster1 +MessageID=Activate + +//----------------------------------------------------------------------- +// Booster 2 mappings +// +[Booster2_BALL3_1] +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Mode=ModeNonConfig +Subsystem=Booster2 +MessageID=Activate + +[Booster2_BALL3_2] +IOMapping=ButtonAuxLowerLeft3 +Type=EventMapping +Mode=ModeConfiguring +Subsystem=Booster2 +MessageID=ConfigureMappables + +[Booster2_BALL4_1] +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Mode=ModeNonConfig +Subsystem=Booster2 +MessageID=Activate + +[Booster2_BALL4_2] +IOMapping=ButtonAuxLowerLeft4 +Type=EventMapping +Mode=ModeConfiguring +Subsystem=Booster2 +MessageID=ConfigureMappables + +[Booster2_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=EventMapping +Mode=ModePreset6 +Subsystem=Booster2 +MessageID=Activate + +//----------------------------------------------------------------------- +// Chute system mappings +// +[Chute_BALL5_1] +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Mode=ModeNonConfig +Subsystem=Chute +MessageID=Activate + +[Chute_BALL5_2] +IOMapping=ButtonAuxLowerLeft5 +Type=EventMapping +Mode=ModeConfiguring +Subsystem=Chute +MessageID=ConfigureMappables + +[Chute_BALL6_1] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Mode=ModeNonConfig +Subsystem=Chute +MessageID=Activate + +[Chute_BALL6_2] +IOMapping=ButtonAuxLowerLeft6 +Type=EventMapping +Mode=ModeConfiguring +Subsystem=Chute +MessageID=ConfigureMappables + +[Chute_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=EventMapping +Mode=ModePreset1,ModePreset2 +Subsystem=Chute +MessageID=Activate + +[Chute_BJP] +IOMapping=ButtonJoystickPinky +Type=EventMapping +Mode=ModePreset4 +Subsystem=Chute +MessageID=Activate + +//----------------------------------------------------------------------- +// Demopack dropper mappings +// +[Stinger_BALR1_1] +IOMapping=ButtonAuxLowerRight1 +Type=DirectMapping +Mode=ModeNonConfig +Subsystem=DemoPackDropper +AttributeID=TriggerState + +[Stinger_BALR1_2] +IOMapping=ButtonAuxLowerRight1 +Type=EventMapping +Mode=ModeConfiguring +Subsystem=DemoPackDropper +MessageID=ConfigureMappables + +[Stinger_BALR2_1] +IOMapping=ButtonAuxLowerRight2 +Type=DirectMapping +Mode=ModeNonConfig +Subsystem=DemoPackDropper +AttributeID=TriggerState + +[Stinger_BALR2_2] +IOMapping=ButtonAuxLowerRight2 +Type=EventMapping +Mode=ModeConfiguring +Subsystem=DemoPackDropper +MessageID=ConfigureMappables + +[Stinger_BJT] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Mode=ModePreset1,ModePreset2,ModePreset3,ModePreset4,ModePreset5 +Subsystem=DemoPackDropper +AttributeID=TriggerState + +[Stinger_BJP] +IOMapping=ButtonJoystickPinky +Type=DirectMapping +Mode=ModePreset6 +Subsystem=DemoPackDropper +AttributeID=TriggerState + +//----------------------------------------------------------- +// Other joystick mappings +// +[LiftCut_BJP] +IOMapping=ButtonJoystickPinky +Type=DirectMapping +Mode=ModePreset2,ModePreset5 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[LiftCut_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=DirectMapping +Mode=ModePreset3,ModePreset4 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[LiftCut_BJT] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Mode=ModePreset6 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[Horn_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=EventMapping +Mode=ModePreset5 +Subsystem=ControlsMapper +MessageID=ActivateHorn + +//-------------------------------------------------------------- +// re-install this once we really have an intercom! +// (until we do, it shows a mapping on the configuration +// mapper that doesn't belong to anything the pilot can control) +//-------------------------------------------------------------- +//[PTT_BJTP] +//IOMapping=ButtonJoystickPinky +//Type=EventMapping +//Mode=ModePreset1,ModePreset3 +//Subsystem=ControlsMapper +//MessageID=ActivatePTT + diff --git a/CONTENT/RP/MODELS/STTHR.CTL b/CONTENT/RP/MODELS/STTHR.CTL new file mode 100644 index 0000000..abf6657 --- /dev/null +++ b/CONTENT/RP/MODELS/STTHR.CTL @@ -0,0 +1,86 @@ +[Stinger_BJT] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Mode=ModePreset1,ModePreset2,ModePreset3,ModePreset4,ModePreset5 +Subsystem=DemoPackDropper +AttributeID=TriggerState + +[Stinger_BJP] +IOMapping=ButtonJoystickPinky +Type=DirectMapping +Mode=ModePreset6 +Subsystem=DemoPackDropper +AttributeID=TriggerState + +//---------------------------------------------------------- +// Booster mappings +// +[Booster1_BJTH] +IOMapping=ButtonJoystickThumbHigh +Type=EventMapping +Mode=ModePreset1,ModePreset2,ModePreset3,ModePreset4,ModePreset5,ModePreset6 +Subsystem=Booster1 +MessageID=Activate + +[Booster2_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=EventMapping +Mode=ModePreset6 +Subsystem=Booster2 +MessageID=Activate + +//---------------------------------------------------------- +// Chute mappings +// +[Chute_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=EventMapping +Mode=ModePreset1,ModePreset2 +Subsystem=Chute +MessageID=Activate + +[Chute_BJP] +IOMapping=ButtonJoystickPinky +Type=EventMapping +Mode=ModePreset4 +Subsystem=Chute +MessageID=Activate + +//----------------------------------------------------------- +// Other joystick mappings +// +[LiftCut_BJP] +IOMapping=ButtonJoystickPinky +Type=DirectMapping +Mode=ModePreset2,ModePreset5 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[LiftCut_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=DirectMapping +Mode=ModePreset3,ModePreset4 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[LiftCut_BJT] +IOMapping=ButtonJoystickTrigger +Type=DirectMapping +Mode=ModePreset6 +Subsystem=ControlsMapper +AttributeID=LiftCut + +[Horn_BJTL] +IOMapping=ButtonJoystickThumbLow +Type=EventMapping +Mode=ModePreset5 +Subsystem=ControlsMapper +MessageID=ActivateHorn + +[PTT_BJTP] +IOMapping=ButtonJoystickPinky +Type=EventMapping +Mode=ModePreset1,ModePreset3 +Subsystem=ControlsMapper +MessageID=ActivatePTT + diff --git a/CONTENT/RP/MODELS/SUN.DMG b/CONTENT/RP/MODELS/SUN.DMG new file mode 100644 index 0000000..152f9ed --- /dev/null +++ b/CONTENT/RP/MODELS/SUN.DMG @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/SUN.MOD b/CONTENT/RP/MODELS/SUN.MOD new file mode 100644 index 0000000..152f9ed --- /dev/null +++ b/CONTENT/RP/MODELS/SUN.MOD @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/SUS.DMG b/CONTENT/RP/MODELS/SUS.DMG new file mode 100644 index 0000000..152f9ed --- /dev/null +++ b/CONTENT/RP/MODELS/SUS.DMG @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/SUS.MOD b/CONTENT/RP/MODELS/SUS.MOD new file mode 100644 index 0000000..152f9ed --- /dev/null +++ b/CONTENT/RP/MODELS/SUS.MOD @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/SUS.SUB b/CONTENT/RP/MODELS/SUS.SUB new file mode 100644 index 0000000..152f9ed --- /dev/null +++ b/CONTENT/RP/MODELS/SUS.SUB @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/SUSL4.CTL b/CONTENT/RP/MODELS/SUSL4.CTL new file mode 100644 index 0000000..152f9ed --- /dev/null +++ b/CONTENT/RP/MODELS/SUSL4.CTL @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/SUSTHR.CTL b/CONTENT/RP/MODELS/SUSTHR.CTL new file mode 100644 index 0000000..152f9ed --- /dev/null +++ b/CONTENT/RP/MODELS/SUSTHR.CTL @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/SUT.DMG b/CONTENT/RP/MODELS/SUT.DMG new file mode 100644 index 0000000..152f9ed --- /dev/null +++ b/CONTENT/RP/MODELS/SUT.DMG @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/SUT.MOD b/CONTENT/RP/MODELS/SUT.MOD new file mode 100644 index 0000000..152f9ed --- /dev/null +++ b/CONTENT/RP/MODELS/SUT.MOD @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/TARNTULA.BAK b/CONTENT/RP/MODELS/TARNTULA.BAK new file mode 100644 index 0000000..1df92d6 --- /dev/null +++ b/CONTENT/RP/MODELS/TARNTULA.BAK @@ -0,0 +1,48 @@ +[video] +skeleton=bun.skl +skeletons=bus.skl +skeletont=but.skl +skeletono=bun.skl +skeletona=bua.skl +skeletonb=bub.skl +skeletonc=buc.skl +skeletond=bua.skl + +[collision] +name=bu_cv.sld + +[gauge] +image=bu_ga.gim + +[audio] +external=vtvext.scp +internal=tarntula.scp + +[gamedata] +class=VTVClassID +MoverMass=3500.0 +MomentOfInertia=5.143 9.245 5.143 +PositiveLinearDragCoefficients=0.14 0.3 0.08 +NegativeLinearDragCoefficients=0.14 0.3 0.063 +AngularDragCoefficients=1.5 0.5 1.5 +FrictionCoefficient=0.4 +ElasticityCoefficient=0.2 +MinimumBounceSpeed=0.2 +MaxAcceleration=5.7 +MaxThrusterRotationRate=4.7 +GroundEffectDomainSquared=0.05 +GroundEffectRange=5.0 +MaxYawVelocity=45 +MaxAngularAcceleration=0.0 4.7 0.0 +AngularSpringFactor=10.0 +BankFactor=0.8 +DeathSpeed=275.0 +DeathScoreLoss=250.0 +MaxImpactSpeed=425.0 +Subsystems=tarntula.sub +DamageZones=tarntula.dmg + +[ControlMappings] +Thrustmaster=3x4thr.ctl +L4=3x4l4.ctl + diff --git a/CONTENT/RP/MODELS/TARNTULA.DMG b/CONTENT/RP/MODELS/TARNTULA.DMG new file mode 100644 index 0000000..db4919f --- /dev/null +++ b/CONTENT/RP/MODELS/TARNTULA.DMG @@ -0,0 +1,2 @@ +[dz_vtv] +WeaponDamagePoints=300 \ No newline at end of file diff --git a/CONTENT/RP/MODELS/TARNTULA.MOD b/CONTENT/RP/MODELS/TARNTULA.MOD new file mode 100644 index 0000000..1df92d6 --- /dev/null +++ b/CONTENT/RP/MODELS/TARNTULA.MOD @@ -0,0 +1,48 @@ +[video] +skeleton=bun.skl +skeletons=bus.skl +skeletont=but.skl +skeletono=bun.skl +skeletona=bua.skl +skeletonb=bub.skl +skeletonc=buc.skl +skeletond=bua.skl + +[collision] +name=bu_cv.sld + +[gauge] +image=bu_ga.gim + +[audio] +external=vtvext.scp +internal=tarntula.scp + +[gamedata] +class=VTVClassID +MoverMass=3500.0 +MomentOfInertia=5.143 9.245 5.143 +PositiveLinearDragCoefficients=0.14 0.3 0.08 +NegativeLinearDragCoefficients=0.14 0.3 0.063 +AngularDragCoefficients=1.5 0.5 1.5 +FrictionCoefficient=0.4 +ElasticityCoefficient=0.2 +MinimumBounceSpeed=0.2 +MaxAcceleration=5.7 +MaxThrusterRotationRate=4.7 +GroundEffectDomainSquared=0.05 +GroundEffectRange=5.0 +MaxYawVelocity=45 +MaxAngularAcceleration=0.0 4.7 0.0 +AngularSpringFactor=10.0 +BankFactor=0.8 +DeathSpeed=275.0 +DeathScoreLoss=250.0 +MaxImpactSpeed=425.0 +Subsystems=tarntula.sub +DamageZones=tarntula.dmg + +[ControlMappings] +Thrustmaster=3x4thr.ctl +L4=3x4l4.ctl + diff --git a/CONTENT/RP/MODELS/TARNTULA.SUB b/CONTENT/RP/MODELS/TARNTULA.SUB new file mode 100644 index 0000000..6de9447 --- /dev/null +++ b/CONTENT/RP/MODELS/TARNTULA.SUB @@ -0,0 +1,27 @@ +[Booster1] +Type=BoosterClassID +BoosterCount=4 +BurnTime=8 +BoosterAcceleration=7 + +[Booster2] +Type=BoosterClassID +BoosterCount=4 +BurnTime=8 +BoosterAcceleration=7 + +[Booster3] +Type=BoosterClassID +BoosterCount=4 +BurnTime=8 +BoosterAcceleration=7 + +[Chute] +Type=ChuteClassID +ChuteCount=3 +ReloadTime=3 +DragForce=0.14 +MinVelocity=20 +MaxRotation=60 +DeployTime=0.2 +SegmentPageName=sitechute \ No newline at end of file diff --git a/CONTENT/RP/MODELS/TRS.MOD b/CONTENT/RP/MODELS/TRS.MOD new file mode 100644 index 0000000..ed69156 --- /dev/null +++ b/CONTENT/RP/MODELS/TRS.MOD @@ -0,0 +1,12 @@ +[video] +object=trs.bgf + +[collision] +name=trs_cv.sld + +[gauge] +image=trs_ga.gim + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/RP/MODELS/TS1.MOD b/CONTENT/RP/MODELS/TS1.MOD new file mode 100644 index 0000000..19f8342 --- /dev/null +++ b/CONTENT/RP/MODELS/TS1.MOD @@ -0,0 +1,9 @@ +[video] +object=ts1.bgf + +[collision] +name=ts1_cv.sld + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/RP/MODELS/TUN1.MOD b/CONTENT/RP/MODELS/TUN1.MOD new file mode 100644 index 0000000..887a3c7 --- /dev/null +++ b/CONTENT/RP/MODELS/TUN1.MOD @@ -0,0 +1,6 @@ +[collision] +name=tun1_cv.sld + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/RP/MODELS/VCS.CFG b/CONTENT/RP/MODELS/VCS.CFG new file mode 100644 index 0000000..465af39 --- /dev/null +++ b/CONTENT/RP/MODELS/VCS.CFG @@ -0,0 +1,2 @@ +vcsdir=r:\resource\rp\l4\models + diff --git a/CONTENT/RP/MODELS/VEHICLE.TBL b/CONTENT/RP/MODELS/VEHICLE.TBL new file mode 100644 index 0000000..d6ff0cb --- /dev/null +++ b/CONTENT/RP/MODELS/VEHICLE.TBL @@ -0,0 +1,56 @@ +; +; vehicle.tbl - Red Planet +; +[vehicle] +lepton=lu +dragon=po +puck=du +speck=su +bug=su +flea=sa +chigger=sa +skeeter=sa +roach=sa +barge=mu +mule=mu +burro=mu +broccoli=mu +vole=ma +grunt=ma +bttlbrg=ma +gator=ma +bull=bu +tarntula=bu +ripper=ba +spitter=ba +mantis=ba +roadblk=ba + +[color] +Aqua=_aqu_ +Black=_blk_ +Blue=_blu_ +Green=_grn_ +Pink=_pnk_ +Purple=_pur_ +Red=_red_ +White=_wht_ +Yellow=_yel_ + +[badge] +Celtic=celt bs +Desert=dsrt ct +Flames=flms bs +Giraffe=girf bs +Hawaii=hwii ct +Korean=kron ct +Lightning=ltng bs +None=none an +Razzle Dazzle=razz ct +Rising Sun=rsun bs +Tiger Stripe=tgrs ct + +[substitute] +vtvcolor=vtv%color% +vrsun=v%badge% +vtgrs=v%badge% diff --git a/CONTENT/RP/MODELS/VM1.MOD b/CONTENT/RP/MODELS/VM1.MOD new file mode 100644 index 0000000..dd78a15 --- /dev/null +++ b/CONTENT/RP/MODELS/VM1.MOD @@ -0,0 +1,12 @@ +[video] +object=vm1.bgf vm1l.bgf + +[collision] +name=vm1_cv.sld + +[gauge] +image=vm1_ga.gim + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/RP/MODELS/VOLE.BAK b/CONTENT/RP/MODELS/VOLE.BAK new file mode 100644 index 0000000..c053b20 --- /dev/null +++ b/CONTENT/RP/MODELS/VOLE.BAK @@ -0,0 +1,48 @@ +[video] +skeleton=man.skl +skeletons=mas.skl +skeletont=mat.skl +skeletono=man.skl +skeletona=maa.skl +skeletonb=mab.skl +skeletonc=mac.skl +skeletond=maa.skl + +[collision] +name=ma_cv.sld + +[gauge] +image=mu_ga.gim + +[audio] +external=vleext.scp +internal=vole.scp + +[gamedata] +class=VTVClassID +MoverMass=1800.0 +MomentOfInertia=5.8125 10.125 5.8125 +PositiveLinearDragCoefficients=0.14 0.3 0.085 +NegativeLinearDragCoefficients=0.14 0.3 0.064 +AngularDragCoefficients=1.5 0.5 1.5 +FrictionCoefficient=0.4 +ElasticityCoefficient=0.2 +MinimumBounceSpeed=0.2 +MaxAcceleration=5.88 +MaxThrusterRotationRate=4.7 +GroundEffectDomainSquared=0.11111111 +GroundEffectRange=5.0 +MaxYawVelocity=42.5 +MaxAngularAcceleration=0.0 4.7 0.0 +AngularSpringFactor=12.4 +BankFactor=1.0 +DeathSpeed=275.0 +DeathScoreLoss=250.0 +MaxImpactSpeed=307.0 +Subsystems=vole.sub +DamageZones=grunt.dmg +ReticleY=0.09 + +[ControlMappings] +Thrustmaster=laserthr.ctl +L4=laserl4.ctl diff --git a/CONTENT/RP/MODELS/VOLE.MOD b/CONTENT/RP/MODELS/VOLE.MOD new file mode 100644 index 0000000..add8740 --- /dev/null +++ b/CONTENT/RP/MODELS/VOLE.MOD @@ -0,0 +1,48 @@ +[video] +skeleton=man.skl +skeletons=mas.skl +skeletont=mat.skl +skeletono=man.skl +skeletona=maa.skl +skeletonb=mab.skl +skeletonc=mac.skl +skeletond=maa.skl + +[collision] +name=ma_cv.sld + +[gauge] +image=mu_ga.gim + +[audio] +external=vleext.scp +internal=vole.scp + +[gamedata] +class=VTVClassID +MoverMass=1800.0 +MomentOfInertia=5.8125 10.125 5.8125 +PositiveLinearDragCoefficients=0.14 0.3 0.085 +NegativeLinearDragCoefficients=0.14 0.3 0.064 +AngularDragCoefficients=1.5 0.5 1.5 +FrictionCoefficient=0.4 +ElasticityCoefficient=0.2 +MinimumBounceSpeed=0.2 +MaxAcceleration=5.88 +MaxThrusterRotationRate=4.7 +GroundEffectDomainSquared=0.11111111 +GroundEffectRange=5.0 +MaxYawVelocity=42.5 +MaxAngularAcceleration=0.0 4.7 0.0 +AngularSpringFactor=12.4 +BankFactor=1.0 +DeathSpeed=275.0 +DeathScoreLoss=250.0 +MaxImpactSpeed=282.0 +Subsystems=vole.sub +DamageZones=grunt.dmg +ReticleY=0.09 + +[ControlMappings] +Thrustmaster=laserthr.ctl +L4=laserl4.ctl diff --git a/CONTENT/RP/MODELS/VOLE.SUB b/CONTENT/RP/MODELS/VOLE.SUB new file mode 100644 index 0000000..a1da3c5 --- /dev/null +++ b/CONTENT/RP/MODELS/VOLE.SUB @@ -0,0 +1,35 @@ +[Booster1] +Type=BoosterClassID +BoosterCount=6 +BurnTime=8 +BoosterAcceleration=8 + +[Booster2] +Type=BoosterClassID +BoosterCount=6 +BurnTime=8 +BoosterAcceleration=8 + +[Chute] +Type=ChuteClassID +ChuteCount=3 +ReloadTime=3 +DragForce=0.14 +MinVelocity=20 +MaxRotation=60 +DeployTime=0.2 +SegmentPageName=sitechute + +[LaserGun] +Type=LaserDrillClassID +FullChargeDuration=4.0 +LaserDuration=0.10 +PulseDuration=0.25 +ChargePerSecond=0.10 +DrainPerSecond=0.25 +LaserLength=150.0 +ExplosionModelFile=laserexp +AmmoModelFile=hrivet +DamageAmount=100.0 +SegmentPageName=sitefrontcenterport +RearPageName=sitebackcenterport diff --git a/CONTENT/RP/MODELS/WASP.BAK b/CONTENT/RP/MODELS/WASP.BAK new file mode 100644 index 0000000..35a45d1 --- /dev/null +++ b/CONTENT/RP/MODELS/WASP.BAK @@ -0,0 +1,47 @@ +[video] +skeleton=san.skl +skeletons=sas.skl +skeletont=sat.skl +skeletono=san.skl +skeletona=saa.skl +skeletonb=sab.skl +skeletonc=sac.skl +skeletond=saa.skl + +[collision] +name=sa_cv.sld + +[gauge] +image=sp_ga.gim + +[audio] +external=vtvext.scp +internal=wasp.scp + +[gamedata] +class=VTVClassID +MoverMass=800.0 +MomentOfInertia=1.89 3.125 1.89 +PositiveLinearDragCoefficients=0.14 0.3 0.085 +NegativeLinearDragCoefficients=0.14 0.3 0.064 +AngularDragCoefficients=1.5 0.5 1.5 +FrictionCoefficient=0.4 +ElasticityCoefficient=0.2 +MinimumBounceSpeed=0.2 +MaxAcceleration=6.3 +MaxThrusterRotationRate=4.7 +GroundEffectDomainSquared=0.3 +GroundEffectRange=17.0 +MaxYawVelocity=50.0 +MaxAngularAcceleration=0.0 4.7 0.0 +AngularSpringFactor=17.0 +BankFactor=1.5 +DeathSpeed=275.0 +DeathScoreLoss=250.0 +MaxImpactSpeed=165.0 +Subsystems=wasp.sub +DamageZones=wasp.dmg + +[ControlMappings] +Thrustmaster=stthr.ctl +L4=stl4.ctl diff --git a/CONTENT/RP/MODELS/WASP.DMG b/CONTENT/RP/MODELS/WASP.DMG new file mode 100644 index 0000000..30a63ee --- /dev/null +++ b/CONTENT/RP/MODELS/WASP.DMG @@ -0,0 +1,2 @@ +[dz_vtv] +WeaponDamagePoints=200 \ No newline at end of file diff --git a/CONTENT/RP/MODELS/WASP.MOD b/CONTENT/RP/MODELS/WASP.MOD new file mode 100644 index 0000000..d661d7e --- /dev/null +++ b/CONTENT/RP/MODELS/WASP.MOD @@ -0,0 +1,47 @@ +[video] +skeleton=san.skl +skeletons=sas.skl +skeletont=sat.skl +skeletono=san.skl +skeletona=saa.skl +skeletonb=sab.skl +skeletonc=sac.skl +skeletond=saa.skl + +[collision] +name=sa_cv.sld + +[gauge] +image=sp_ga.gim + +[audio] +external=vtvext.scp +internal=wasp.scp + +[gamedata] +class=VTVClassID +MoverMass=800.0 +MomentOfInertia=1.89 3.125 1.89 +PositiveLinearDragCoefficients=0.14 0.3 0.085 +NegativeLinearDragCoefficients=0.14 0.3 0.064 +AngularDragCoefficients=1.5 0.5 1.5 +FrictionCoefficient=0.4 +ElasticityCoefficient=0.2 +MinimumBounceSpeed=0.2 +MaxAcceleration=6.3 +MaxThrusterRotationRate=4.7 +GroundEffectDomainSquared=0.3 +GroundEffectRange=17.0 +MaxYawVelocity=50.0 +MaxAngularAcceleration=0.0 4.7 0.0 +AngularSpringFactor=17.0 +BankFactor=1.5 +DeathSpeed=275.0 +DeathScoreLoss=250.0 +MaxImpactSpeed=140.0 +Subsystems=wasp.sub +DamageZones=wasp.dmg + +[ControlMappings] +Thrustmaster=stthr.ctl +L4=stl4.ctl diff --git a/CONTENT/RP/MODELS/WASP.SUB b/CONTENT/RP/MODELS/WASP.SUB new file mode 100644 index 0000000..65b8462 --- /dev/null +++ b/CONTENT/RP/MODELS/WASP.SUB @@ -0,0 +1,31 @@ +[Booster1] +Type=BoosterClassID +BoosterCount=6 +BurnTime=8 +BoosterAcceleration=13 + +[Booster2] +Type=BoosterClassID +BoosterCount=6 +BurnTime=8 +BoosterAcceleration=13 + +[Chute] +Type=ChuteClassID +ChuteCount=3 +ReloadTime=3 +DragForce=0.14 +MinVelocity=20 +MaxRotation=60 +DeployTime=0.2 +SegmentPageName=sitechute + +[DemoPackDropper] +Type=DemolitionPackDropperClassID +SubsystemFlag=DontReplicateFlag +AmmoCount=15 +LoadTime=1.0 +AmmoModelFile=demo2 +SegmentPageName=sitemineport +RearSiteName=sitebackcenterport +MuzzleVelocity=0.0 6.7 350.0 diff --git a/CONTENT/RP/MODELS/WCIRCLE.MOD b/CONTENT/RP/MODELS/WCIRCLE.MOD new file mode 100644 index 0000000..1e4074b --- /dev/null +++ b/CONTENT/RP/MODELS/WCIRCLE.MOD @@ -0,0 +1,8 @@ +[video] +object=wcircle.bgf wcirclsh.bgf winsigns.bgf + + +[gamedata] +class=UnscalableTerrainClassID + + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/WH1.MOD b/CONTENT/RP/MODELS/WH1.MOD new file mode 100644 index 0000000..3cb5463 --- /dev/null +++ b/CONTENT/RP/MODELS/WH1.MOD @@ -0,0 +1,15 @@ +[video] +object=wh1.bgf wh1l.bgf lazdril.bgf + +[collision] +name=wh1_cv.sld + +[gauge] +image=wh1_ga.gim + +[audio] +external=wellhd1.scp + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/RP/MODELS/WH2.MOD b/CONTENT/RP/MODELS/WH2.MOD new file mode 100644 index 0000000..40c55d7 --- /dev/null +++ b/CONTENT/RP/MODELS/WH2.MOD @@ -0,0 +1,15 @@ +[video] +object=wh2.bgf wh2l.bgf + +[collision] +name=wh2_cv.sld + +[gauge] +image=wh2_ga.gim + +[audio] +external=wellhd2.scp + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/RP/MODELS/WH4.MOD b/CONTENT/RP/MODELS/WH4.MOD new file mode 100644 index 0000000..3b4ce61 --- /dev/null +++ b/CONTENT/RP/MODELS/WH4.MOD @@ -0,0 +1,16 @@ +[video] +object=wh4.bgf wh4l.bgf lazdril.bgf + +[collision] +name=wh4_cv.sld + +[gauge] +image=wh4_ga.gim + +[audio] +external=wellhd1.scp + +[gamedata] +class=UnscalableTerrainClassID + + diff --git a/CONTENT/RP/MODELS/WH5.MOD b/CONTENT/RP/MODELS/WH5.MOD new file mode 100644 index 0000000..bd8163b --- /dev/null +++ b/CONTENT/RP/MODELS/WH5.MOD @@ -0,0 +1,16 @@ +[video] +object=wh5.bgf wh5l.bgf lazdril.bgf + +[collision] +name=wh5_cv.sld + +[gauge] +image=wh5_ga.gim + +[audio] +external=wellhd1.scp + +[gamedata] +class=UnscalableTerrainClassID + + diff --git a/CONTENT/RP/MODELS/WH6.MOD b/CONTENT/RP/MODELS/WH6.MOD new file mode 100644 index 0000000..d840312 --- /dev/null +++ b/CONTENT/RP/MODELS/WH6.MOD @@ -0,0 +1,15 @@ +[video] +object=wh6.bgf wh5l.bgf lazdril.bgf + +[collision] +name=wh6_cv.sld + +[gauge] +image=wh6_ga.gim + +[audio] +external=wellhd1.scp + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/RP/MODELS/WH6U.MOD b/CONTENT/RP/MODELS/WH6U.MOD new file mode 100644 index 0000000..44e3171 --- /dev/null +++ b/CONTENT/RP/MODELS/WH6U.MOD @@ -0,0 +1,15 @@ +[video] +object=wh6u.bgf wh5lu.bgf lazdrilu.bgf + +[collision] +name=wh6u_cv.sld + +[gauge] +image=wh6u_ga.gim + +[audio] +external=wellhd1u.scp + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/RP/MODELS/WH8.MOD b/CONTENT/RP/MODELS/WH8.MOD new file mode 100644 index 0000000..1c736a3 --- /dev/null +++ b/CONTENT/RP/MODELS/WH8.MOD @@ -0,0 +1,10 @@ +[video] +object=wh8.bgf + +[collision] +name=wh8_cv.sld + +[gamedata] +class=UnscalableTerrainClassID + + \ No newline at end of file diff --git a/CONTENT/RP/MODELS/WH9.MOD b/CONTENT/RP/MODELS/WH9.MOD new file mode 100644 index 0000000..c52c1b1 --- /dev/null +++ b/CONTENT/RP/MODELS/WH9.MOD @@ -0,0 +1,14 @@ +[video] +object=wh9.bgf wh9l.bgf + +[audio] +external=wellhd3.scp + +[collision] +name=wh9_cv.sld + +[gauge] +image=wh9_ga.gim + +[gamedata] +class=UnscalableTerrainClassID diff --git a/CONTENT/RP/MODELS/WHC.MOD b/CONTENT/RP/MODELS/WHC.MOD new file mode 100644 index 0000000..1ed5064 --- /dev/null +++ b/CONTENT/RP/MODELS/WHC.MOD @@ -0,0 +1,12 @@ +[video] +object=whc.bgf + +[audio] +external=wellhd4.scp + +[collision] +name=whc_cv.sld + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/RP/MODELS/WINBOX.MOD b/CONTENT/RP/MODELS/WINBOX.MOD new file mode 100644 index 0000000..fbe9270 --- /dev/null +++ b/CONTENT/RP/MODELS/WINBOX.MOD @@ -0,0 +1,6 @@ +[video] +object=wcptemp.bgf + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/RP/MODELS/WT1.MOD b/CONTENT/RP/MODELS/WT1.MOD new file mode 100644 index 0000000..6704175 --- /dev/null +++ b/CONTENT/RP/MODELS/WT1.MOD @@ -0,0 +1,15 @@ +[video] +object=wt1.bgf wt1l.bgf + +[collision] +name=wt1_cv.sld + +[gauge] +image=wt1_ga.gim + +[audio] +external=wellhd2.scp + +[gamedata] +class=UnscalableTerrainClassID + diff --git a/CONTENT/RP/MODELS/WT2.MOD b/CONTENT/RP/MODELS/WT2.MOD new file mode 100644 index 0000000..a61cfb3 --- /dev/null +++ b/CONTENT/RP/MODELS/WT2.MOD @@ -0,0 +1,11 @@ +[video] +object=wt2.bgf wt2l.bgf + +[collision] +name=wt2_cv.sld + + +[gamedata] +class=UnscalableTerrainClassID + + \ No newline at end of file diff --git a/CONTENT/RP/NULL b/CONTENT/RP/NULL new file mode 100644 index 0000000..4312934 --- /dev/null +++ b/CONTENT/RP/NULL @@ -0,0 +1,15 @@ +Red Planet v4.10 +GaugeInterpreter: undefined label 'Initialization' +Entity -1:45 class42 couldn't figure out how to MakeEntityRenderables +Entity -1:46 class42 couldn't figure out how to MakeEntityRenderables +Entity -1:218 class42 couldn't figure out how to MakeEntityRenderables +Entity -1:219 class42 couldn't figure out how to MakeEntityRenderables +Mission stopped by keystroke! +~RankAndScore: I think my score is 631 +SVGA16::~SVGA16: pixel management statistics ------------ +Number of dirty pixels =3205324 +Number of transferred pixels=1217557 +Times overflowed =0 +Ratio =2.63259 +------------------------------------------------------- +2):>>>> init pxpl ware, mode 0x8 clk 0x9 sog 0 rgb 1 mono 1 dup 0 diff --git a/CONTENT/RP/RESULT2.TXT b/CONTENT/RP/RESULT2.TXT new file mode 100644 index 0000000..66fde01 --- /dev/null +++ b/CONTENT/RP/RESULT2.TXT @@ -0,0 +1,23 @@ +Red Planet v4.10 +GaugeInterpreter: undefined label 'Initialization' +Entity -1:3 class42 couldn't figure out how to MakeEntityRenderables +Entity -1:6 class42 couldn't figure out how to MakeEntityRenderables +Entity -1:57 class42 couldn't figure out how to MakeEntityRenderables +Entity -1:113 class42 couldn't figure out how to MakeEntityRenderables +Entity -1:114 class42 couldn't figure out how to MakeEntityRenderables +Entity -1:115 class42 couldn't figure out how to MakeEntityRenderables +Entity -1:241 class42 couldn't figure out how to MakeEntityRenderables +Entity -1:296 class42 couldn't figure out how to MakeEntityRenderables +Entity -1:388 class42 couldn't figure out how to MakeEntityRenderables +Entity -1:431 class42 couldn't figure out how to MakeEntityRenderables +Entity -1:572 class42 couldn't figure out how to MakeEntityRenderables +Entity -1:573 class42 couldn't figure out how to MakeEntityRenderables +Mission stopped by keystroke! +~RankAndScore: I think my score is 1453 +SVGA16::~SVGA16: pixel management statistics ------------ +Number of dirty pixels =36985354 +Number of transferred pixels=16828821 +Times overflowed =0 +Ratio =2.19774 +------------------------------------------------------- +2):>>>> init pxpl ware, mode 0x8 clk 0x9 sog 0 rgb 1 mono 1 dup 0 diff --git a/CONTENT/RP/RP.BAT b/CONTENT/RP/RP.BAT new file mode 100644 index 0000000..fe91228 --- /dev/null +++ b/CONTENT/RP/RP.BAT @@ -0,0 +1,24 @@ +@echo off +call setenv.bat r s n n +call showenv.bat +set a0= +if exist rpl4d3s.exe set a0=rpl4d3s.exe +if exist rpl4d2s.exe set a0=rpl4d2s.exe +if exist rpl4d0.exe set a0=rpl4d0.exe +if exist rpl4opt.exe set a0=rpl4opt.exe +if "%a0%"=="" goto error +if "%1"=="" set aa=test +if not "%1"=="" set aa=%1 +echo on +32rtm.exe -x +%a0% -egg %aa%.egg +32rtm.exe -u +@echo off +set aa= +goto end +:error +echo. +echo Program not found in current directory. +echo. +:end +set a0= diff --git a/CONTENT/RP/RPCAM.BAT b/CONTENT/RP/RPCAM.BAT new file mode 100644 index 0000000..8ac40f6 --- /dev/null +++ b/CONTENT/RP/RPCAM.BAT @@ -0,0 +1,41 @@ +@echo off +rem ------------------------------------------------------------------ +rem L4EYES=x y z pitch yaw roll [relative] +rem ------------------------------------------------------------------ +set L4EYES= +rem set L4EYES=0 2 10 0 0 0 r +rem (side view:) +rem set L4EYES=25 2 -10 2 95 0 r +rem (rear view:) +rem set L4EYES=5 5 20 -5 5 0 r +rem (lepton scoresheet:) +rem set L4EYES=3.5 1.8 -3.6 -24 132 0 r +rem (dragon scoresheet:) +rem set L4EYES=6 1.8 -5.6 -20 132 0 r +set L4EYES=0 -4 -12.5 20 180 0 r +rem (lepton class front) +rem set L4EYES=0 0 -6 0 180 0 r +rem (lepton class side) +rem set L4EYES=6 0 0 0 90 0 r +rem (lepton class top) +rem set L4EYES=0 6 0 -90 90 0 r +rem (bug class front) +rem set L4EYES=0 0 -7 0 180 0 r +rem (bug class side) +rem set L4EYES=7 0 0 0 90 0 r +rem (bug class top) +rem set L4EYES=0 7 0 -90 90 0 r +rem set L4EYES=6 0 0 0 90 0 r +rem (mule class front) +rem set L4EYES=0 0 -12.5 0 180 0 r +rem (mule class side) +rem set L4EYES=12.5 0 0 0 90 0 r +rem (mule class top) +rem set L4EYES=0 12.5 0 -90 90 0 r +rem (tran view:) +rem set L4EYES=0 9 -9 -45 180 0 r +rem (Front View Camera) +rem set L4EYES=0 0 -15 5 0 0 r +rem ------------------------------------------------------------------ +call rpprep.bat %1 %2 %3 %4 %5 %6 %7 %8 %9 +menu.bat short diff --git a/CONTENT/RP/RPGO.BAT b/CONTENT/RP/RPGO.BAT new file mode 100644 index 0000000..2196a7d --- /dev/null +++ b/CONTENT/RP/RPGO.BAT @@ -0,0 +1,8 @@ +@echo off +rem ------------------------------------------------------------------ +rem L4EYES=x y z pitch yaw roll [relative] +rem ------------------------------------------------------------------ +set L4EYES= +rem ------------------------------------------------------------------ +call rpprep.bat %1 %2 %3 %4 %5 %6 %7 %8 %9 +menu.bat short diff --git a/CONTENT/RP/RPL4.BAK b/CONTENT/RP/RPL4.BAK new file mode 100644 index 0000000..26e7a4f --- /dev/null +++ b/CONTENT/RP/RPL4.BAK @@ -0,0 +1,109 @@ +[release] +version=3.0 +//********************************************** +// version modified by Michel Firestorm Lowrance +// adding dragon vtv as well as untested maps +//********************************************** + +// +// Official resource maps and models should have an +// id assigned to them the format is +// xxxxx=xxxx.xxx /id:# +// + + +// The next number to use is: 61 +// + +[resource] +name=rpl4.res +dircollision=solids\ +dirmodel=models\ +dirmap=maps\ +diraudio=audio\ +dirvideo=video\ +diranim=anims\ +dirgauge=gauge\ + +model=player.mod /id:1 +model=rvtexpi.mod /id:2 +model=rvtexpc.mod /id:3 +model=lsrexpi.mod /id:4 +model=lsrexpc.mod /id:5 +static=static.onl +model=rivetexp.mod /id:6 +model=lrivet.mod /id:7 +model=mrivet.mod /id:8 +model=hrivet.mod /id:9 +model=dpexp.mod /id:10 +model=demopack.mod /id:11 +model=demo2.mod /id:51 +model=demo3.mod /id:57 +model=laserexp.mod /id:12 + +//Lepton Class +model=lepton.mod /id:42 +model=proton.mod /id:58 +model=quark.mod /id:44 + +//Bug Class +model=bug.mod /id:13 +model=speck.mod /id:14 +model=chigger.mod /id:20 +model=flea.mod /id:21 +model=skeeter.mod /id:22 +model=roach.mod /id:23 +model=wasp.mod /id:52 + +//Mule Class +model=mule.mod /id:15 +model=broccoli.mod /id:16 +model=vole.mod /id:24 +model=burro.mod /id:25 +model=grunt.mod /id:26 +model=barge.mod /id:27 +model=bttlbrg.mod /id:28 +model=gator.mod /id:29 + +//Bull Class +model=bull.mod /id:17 +model=tarntula.mod /id:18 +model=spitter.mod /id:30 +model=roadblk.mod /id:31 +model=ripper.mod /id:32 +model=mantis.mod /id:33 + +//Armadillo Class +model=puck.mod /id:19 +model=dark.mod /id:56 + +//Interceptor Class +model=dragon.mod /id:43 + +//Experimental Vehicles +model=blktrn.mod /id:47 +model=blkspk.mod /id:48 + +model=camera.mod /id:34 +model=sc500.mod /id:40 +model=sc50.mod /id:55 +model=drw.mod /id:41 +model=drw2.mod /id:50 + +map=wise.map /id:35 +map=yip.map /id:36 +map=pain.map /id:37 +map=blade.map /id:38 +map=lyzlane.map /id:39 +map=otto.map /id:45 +map=frstrm.map /id:46 +map=burnt.map /id:49 +map=brewers.map /id:54 +//map=blank.map /id:53 +map=headoff.map /id:59 +map=headmf.map /id:60 + +zone=all.zne + +[zones] +zone=all.zne diff --git a/CONTENT/RP/RPL4.BLD b/CONTENT/RP/RPL4.BLD new file mode 100644 index 0000000..f882907 --- /dev/null +++ b/CONTENT/RP/RPL4.BLD @@ -0,0 +1,109 @@ +[release] +version=3.0 +//********************************************** +// version modified by Michel Firestorm Lowrance +// adding dragon vtv as well as untested maps +//********************************************** + +// +// Official resource maps and models should have an +// id assigned to them the format is +// xxxxx=xxxx.xxx /id:# +// + + +// The next number to use is: 61 +// + +[resource] +name=rpl4.res +dircollision=solids\ +dirmodel=models\ +dirmap=maps\ +diraudio=audio\ +dirvideo=video\ +diranim=anims\ +dirgauge=gauge\ + +model=player.mod /id:1 +model=rvtexpi.mod /id:2 +model=rvtexpc.mod /id:3 +model=lsrexpi.mod /id:4 +model=lsrexpc.mod /id:5 +static=static.onl +model=rivetexp.mod /id:6 +model=lrivet.mod /id:7 +model=mrivet.mod /id:8 +model=hrivet.mod /id:9 +model=dpexp.mod /id:10 +model=demopack.mod /id:11 +model=demo2.mod /id:51 +model=demo3.mod /id:57 +model=laserexp.mod /id:12 + +//Lepton Class +model=lepton.mod /id:42 +model=proton.mod /id:58 +model=quark.mod /id:44 + +//Bug Class +model=bug.mod /id:13 +model=speck.mod /id:14 +model=chigger.mod /id:20 +model=flea.mod /id:21 +model=skeeter.mod /id:22 +model=roach.mod /id:23 +model=wasp.mod /id:52 + +//Mule Class +model=mule.mod /id:15 +model=broccoli.mod /id:16 +model=vole.mod /id:24 +model=burro.mod /id:25 +model=grunt.mod /id:26 +model=barge.mod /id:27 +model=bttlbrg.mod /id:28 +model=gator.mod /id:29 + +//Bull Class +model=bull.mod /id:17 +model=tarntula.mod /id:18 +model=spitter.mod /id:30 +model=roadblk.mod /id:31 +model=ripper.mod /id:32 +model=mantis.mod /id:33 + +//Armadillo Class +model=puck.mod /id:19 +//model=dark.mod /id:56 + +//Interceptor Class +model=dragon.mod /id:43 + +//Experimental Vehicles +//model=blktrn.mod /id:47 +//model=blkspk.mod /id:48 + +model=camera.mod /id:34 +model=sc500.mod /id:40 +model=sc50.mod /id:55 +model=drw.mod /id:41 +model=drw2.mod /id:50 + +map=wise.map /id:35 +map=yip.map /id:36 +map=pain.map /id:37 +map=blade.map /id:38 +map=lyzlane.map /id:39 +map=otto.map /id:45 +map=frstrm.map /id:46 +map=burnt.map /id:49 +map=brewers.map /id:54 +//map=blank.map /id:53 +map=headoff.map /id:59 +map=headmf.map /id:60 + +zone=all.zne + +[zones] +zone=all.zne diff --git a/CONTENT/RP/RPL4.BL_ b/CONTENT/RP/RPL4.BL_ new file mode 100644 index 0000000..78fe775 --- /dev/null +++ b/CONTENT/RP/RPL4.BL_ @@ -0,0 +1,70 @@ +[release] +version=5.0 + +// +// Official resource maps and models should have an +// id assigned to them the format is +// xxxxx=xxxx.xxx /id:# +// + +// The next number to use is: 45 +// + +[resource] +name=rpl4.res +dircollision=solids\ +dirmodel=models\ +dirmap=maps\ +diraudio=audio\ +dirvideo=video\ +diranim=anims\ +dirgauge=gauge\ +model=player.mod /id:1 +model=rvtexpi.mod /id:2 +model=rvtexpc.mod /id:3 +model=lsrexpi.mod /id:4 +model=lsrexpc.mod /id:5 +static=static.onl +model=rivetexp.mod /id:6 +model=lrivet.mod /id:7 +model=mrivet.mod /id:8 +model=hrivet.mod /id:9 +model=dpexp.mod /id:10 +model=demopack.mod /id:11 +model=laserexp.mod /id:12 +model=bug.mod /id:13 +model=speck.mod /id:14 +model=mule.mod /id:15 +model=broccoli.mod /id:16 +model=bull.mod /id:17 +model=tarntula.mod /id:18 +model=puck.mod /id:19 +model=lepton.mod /id:42 +model=quark.mod /id:44 +model=dragon.mod /id:43 +model=chigger.mod /id:20 +model=flea.mod /id:21 +model=skeeter.mod /id:22 +model=roach.mod /id:23 +model=vole.mod /id:24 +model=burro.mod /id:25 +model=grunt.mod /id:26 +model=barge.mod /id:27 +model=bttlbrg.mod /id:28 +model=gator.mod /id:29 +model=spitter.mod /id:30 +model=roadblk.mod /id:31 +model=ripper.mod /id:32 +model=mantis.mod /id:33 +model=camera.mod /id:34 +model=sc500.mod /id:40 +model=drw.mod /id:41 +map=wise.map /id:35 +map=yip.map /id:36 +map=pain.map /id:37 +map=blade.map /id:38 +map=lyzlane.map /id:39 +zone=all.zne + +[zones] +zone=all.zne diff --git a/CONTENT/RP/RPL4.OPS b/CONTENT/RP/RPL4.OPS new file mode 100644 index 0000000..0b6a7cb --- /dev/null +++ b/CONTENT/RP/RPL4.OPS @@ -0,0 +1,157 @@ +[resource] +res name=rpl4 + +[rpl4::Standard::LocationList] +location=rpl4::Standard::Location::wise +location=rpl4::Standard::Location::yip +location=rpl4::Standard::Location::pain +location=rpl4::Standard::Location::blade +location=rpl4::Standard::Location::lyzlane +location=rpl4::Standard::Location::otto +location=rpl4::Standard::Location::frstrm +location=rpl4::Standard::Location::burnt +location=rpl4::Standard::Location::brewers +location=rpl4::Standard::Location::headoff +location=rpl4::Standard::Location::headmf + +[rpl4::Standard::Location::wise] +tag=wise + +[rpl4::wise::DropZoneList] + +[rpl4::Standard::Location::yip] +tag=yip + +[rpl4::yip::DropZoneList] + +[rpl4::Standard::Location::pain] +tag=pain + +[rpl4::pain::DropZoneList] + +[rpl4::Standard::Location::blade] +tag=blade + +[rpl4::blade::DropZoneList] + +[rpl4::Standard::Location::lyzlane] +tag=lyzlane + +[rpl4::lyzlane::DropZoneList] + +[rpl4::Standard::Location::otto] +tag=otto + +[rpl4::otto::DropZoneList] + +[rpl4::Standard::Location::frstrm] +tag=frstrm + +[rpl4::frstrm::DropZoneList] + +[rpl4::Standard::Location::burnt] +tag=burnt + +[rpl4::burnt::DropZoneList] + +[rpl4::Standard::Location::brewers] +tag=brewers + +[rpl4::brewers::DropZoneList] + +[rpl4::Standard::Location::headoff] +tag=headoff + +[rpl4::headoff::DropZoneList] + +[rpl4::Standard::Location::headmf] +tag=headmf + +[rpl4::headmf::DropZoneList] + +[rpl4::Standard::ColorList] +color=rpl4::Standard::Color::Aqua +color=rpl4::Standard::Color::Black +color=rpl4::Standard::Color::Blue +color=rpl4::Standard::Color::Green +color=rpl4::Standard::Color::Pink +color=rpl4::Standard::Color::Purple +color=rpl4::Standard::Color::Red +color=rpl4::Standard::Color::White +color=rpl4::Standard::Color::Yellow + +[rpl4::Standard::Color::Aqua] +tag=Aqua + +[rpl4::Standard::Color::Black] +tag=Black + +[rpl4::Standard::Color::Blue] +tag=Blue + +[rpl4::Standard::Color::Green] +tag=Green + +[rpl4::Standard::Color::Pink] +tag=Pink + +[rpl4::Standard::Color::Purple] +tag=Purple + +[rpl4::Standard::Color::Red] +tag=Red + +[rpl4::Standard::Color::White] +tag=White + +[rpl4::Standard::Color::Yellow] +tag=Yellow + +[rpl4::Standard::BadgeList] +badge=rpl4::Standard::Badge::Celtic +badge=rpl4::Standard::Badge::Desert +badge=rpl4::Standard::Badge::Flames +badge=rpl4::Standard::Badge::Giraffe +badge=rpl4::Standard::Badge::Hawaii +badge=rpl4::Standard::Badge::Korean +badge=rpl4::Standard::Badge::Lightning +badge=rpl4::Standard::Badge::None +badge=rpl4::Standard::Badge::Razzle Dazzle +badge=rpl4::Standard::Badge::Rising Sun +badge=rpl4::Standard::Badge::Tiger Stripe + +[rpl4::Standard::Badge::Celtic] +tag=Celtic + +[rpl4::Standard::Badge::Desert] +tag=Desert + +[rpl4::Standard::Badge::Flames] +tag=Flames + +[rpl4::Standard::Badge::Giraffe] +tag=Giraffe + +[rpl4::Standard::Badge::Hawaii] +tag=Hawaii + +[rpl4::Standard::Badge::Korean] +tag=Korean + +[rpl4::Standard::Badge::Lightning] +tag=Lightning + +[rpl4::Standard::Badge::None] +tag=None + +[rpl4::Standard::Badge::Razzle Dazzle] +tag=Razzle Dazzle + +[rpl4::Standard::Badge::Rising Sun] +tag=Rising Sun + +[rpl4::Standard::Badge::Tiger Stripe] +tag=Tiger Stripe + +[rpl4::Standard::VehicleList] + diff --git a/CONTENT/RP/RPL4.OP_ b/CONTENT/RP/RPL4.OP_ new file mode 100644 index 0000000..86d0b1d --- /dev/null +++ b/CONTENT/RP/RPL4.OP_ @@ -0,0 +1,121 @@ +[resource] +res name=rpl4 + +[rpl4::Standard::LocationList] +location=rpl4::Standard::Location::wise +location=rpl4::Standard::Location::yip +location=rpl4::Standard::Location::pain +location=rpl4::Standard::Location::blade +location=rpl4::Standard::Location::lyzlane + +[rpl4::Standard::Location::wise] +tag=wise + +[rpl4::wise::DropZoneList] + +[rpl4::Standard::Location::yip] +tag=yip + +[rpl4::yip::DropZoneList] + +[rpl4::Standard::Location::pain] +tag=pain + +[rpl4::pain::DropZoneList] + +[rpl4::Standard::Location::blade] +tag=blade + +[rpl4::blade::DropZoneList] + +[rpl4::Standard::Location::lyzlane] +tag=lyzlane + +[rpl4::lyzlane::DropZoneList] + +[rpl4::Standard::ColorList] +color=rpl4::Standard::Color::Aqua +color=rpl4::Standard::Color::Black +color=rpl4::Standard::Color::Blue +color=rpl4::Standard::Color::Green +color=rpl4::Standard::Color::Pink +color=rpl4::Standard::Color::Purple +color=rpl4::Standard::Color::Red +color=rpl4::Standard::Color::White +color=rpl4::Standard::Color::Yellow + +[rpl4::Standard::Color::Aqua] +tag=Aqua + +[rpl4::Standard::Color::Black] +tag=Black + +[rpl4::Standard::Color::Blue] +tag=Blue + +[rpl4::Standard::Color::Green] +tag=Green + +[rpl4::Standard::Color::Pink] +tag=Pink + +[rpl4::Standard::Color::Purple] +tag=Purple + +[rpl4::Standard::Color::Red] +tag=Red + +[rpl4::Standard::Color::White] +tag=White + +[rpl4::Standard::Color::Yellow] +tag=Yellow + +[rpl4::Standard::BadgeList] +badge=rpl4::Standard::Badge::Celtic +badge=rpl4::Standard::Badge::Desert +badge=rpl4::Standard::Badge::Flames +badge=rpl4::Standard::Badge::Giraffe +badge=rpl4::Standard::Badge::Hawaii +badge=rpl4::Standard::Badge::Korean +badge=rpl4::Standard::Badge::Lightning +badge=rpl4::Standard::Badge::None +badge=rpl4::Standard::Badge::Razzle Dazzle +badge=rpl4::Standard::Badge::Rising Sun +badge=rpl4::Standard::Badge::Tiger Stripe + +[rpl4::Standard::Badge::Celtic] +tag=Celtic + +[rpl4::Standard::Badge::Desert] +tag=Desert + +[rpl4::Standard::Badge::Flames] +tag=Flames + +[rpl4::Standard::Badge::Giraffe] +tag=Giraffe + +[rpl4::Standard::Badge::Hawaii] +tag=Hawaii + +[rpl4::Standard::Badge::Korean] +tag=Korean + +[rpl4::Standard::Badge::Lightning] +tag=Lightning + +[rpl4::Standard::Badge::None] +tag=None + +[rpl4::Standard::Badge::Razzle Dazzle] +tag=Razzle Dazzle + +[rpl4::Standard::Badge::Rising Sun] +tag=Rising Sun + +[rpl4::Standard::Badge::Tiger Stripe] +tag=Tiger Stripe + +[rpl4::Standard::VehicleList] + diff --git a/CONTENT/RP/RPL4JM.BLD b/CONTENT/RP/RPL4JM.BLD new file mode 100644 index 0000000..471a8aa --- /dev/null +++ b/CONTENT/RP/RPL4JM.BLD @@ -0,0 +1,70 @@ +[release] +version=3.0 + +// +// Official resource maps and models should have an +// id assigned to them the format is +// xxxxx=xxxx.xxx /id:# +// + +// The next number to use is: 47 +// + +[resource] +name=rpl4.res +dircollision=solids\ +dirmodel=models\ +dirmap=maps\ +diraudio=audio\ +dirvideo=video\ +diranim=anims\ +dirgauge=gauge\ +model=player.mod +model=rvtexpi.mod +model=rvtexpc.mod +model=lsrexpi.mod +model=lsrexpc.mod +static=static.onl +model=rivetexp.mod +model=lrivet.mod +model=mrivet.mod +model=hrivet.mod +model=dpexp.mod +model=demopack.mod +model=laserexp.mod +model=bug.mod +model=speck.mod +model=mule.mod +model=broccoli.mod +model=bull.mod +model=tarntula.mod +model=puck.mod +model=lepton.mod +model=quark.mod +model=dragon.mod +model=chigger.mod +model=flea.mod +model=skeeter.mod +model=roach.mod +model=vole.mod +model=burro.mod +model=grunt.mod +model=barge.mod +model=bttlbrg.mod +model=gator.mod +model=spitter.mod +model=roadblk.mod +model=ripper.mod +model=mantis.mod +model=camera.mod +model=sc500.mod +model=drw.mod +map=wise.map +map=yip.map +map=pain.map +map=blade.map +map=lyzlane.map +zone=all.zne + +[zones] +zone=all.zne diff --git a/CONTENT/RP/RPLOOK.BAT b/CONTENT/RP/RPLOOK.BAT new file mode 100644 index 0000000..b148be8 --- /dev/null +++ b/CONTENT/RP/RPLOOK.BAT @@ -0,0 +1,17 @@ +@echo off +rem ------------------------------------------------------------------ +rem L4EYES=x y z pitch yaw roll [relative] +rem ------------------------------------------------------------------ +set L4EYES=0 8 50 0 180 0 +if "%1"=="choice2" set L4EYES=0 8 50 0 0 0 +if "%1"=="seventh" set L4EYES=0 8 50 0 180 0 +if "%1"=="10e" set L4EYES=0 0 60 0 180 0 +if "%1"=="dr" set L4EYES=0 8 50 0 180 0 +rem +if "%1"=="wise" set L4EYES=0 8 50 0 180 0 +if "%1"=="yip" set L4EYES=0 8 150 0 0 0 +if "%1"=="pain" set L4EYES=0 0 60 0 180 0 +if "%1"=="blade" set L4EYES=0 8 50 0 180 0 +rem ------------------------------------------------------------------ +call rpprep.bat %1 %2 %3 %4 %5 %6 %7 %8 %9 +menu.bat short diff --git a/CONTENT/RP/RPNET.BAT b/CONTENT/RP/RPNET.BAT new file mode 100644 index 0000000..39efb38 --- /dev/null +++ b/CONTENT/RP/RPNET.BAT @@ -0,0 +1,22 @@ +@echo off +call setenv.bat t s n n +call showenv.bat +set a0= +if exist rpl4d3s.exe set a0=rpl4d3s.exe +if exist rpl4d2s.exe set a0=rpl4d2s.exe +if exist rpl4d0.exe set a0=rpl4d0.exe +if exist rpl4opt.exe set a0=rpl4opt.exe +if "%a0%"=="" goto error +echo on +32rtm.exe -x +netnub.exe -f %a0% +32rtm.exe -u +@echo off +goto end +:error +echo. +echo Program not found in current directory. +echo. +:end +set a0= +menu.bat short diff --git a/CONTENT/RP/RPPREP.BAT b/CONTENT/RP/RPPREP.BAT new file mode 100644 index 0000000..aed4793 --- /dev/null +++ b/CONTENT/RP/RPPREP.BAT @@ -0,0 +1,53 @@ +@echo off +rem +rem usage: rpprep.bat [course [vehicle [dropzone [inifile]]]] +rem +rem ------------------------------------------------------------------ +rem L4ANIMATION=scale (default = 1.0 NEVER make zero or negative) +rem ------------------------------------------------------------------ +set L4ANIMATION=1.0 +if "%HEAPSIZE%"=="" set HEAPSIZE=8000000 +set REVIEW= +rem ------------------------------------------------------------------ +set a1= +if "%1"=="" set a1=lyzlane +if not "%1"=="" set a1=%1 +if not exist maps\%a1%.map goto nomap +rem ------------------------------------------------------------------ +set a2= +if not "%2"=="" goto vehgiven +if "%a1%"=="lyzlane" set a2=puck +if "%a2%"=="" set a2=speck +goto checkveh +:vehgiven +set a2=%2 +:checkveh +if not exist models\%a2%.mod goto noveh +rem ------------------------------------------------------------------ +set A4DPLCFG= +if "%4"=="" goto rp +set A4DPLCFG=%4.ini +if not exist %A4DPLCFG% goto noenv +rem ------------------------------------------------------------------ +:rp +call makeegg.bat %a1% %a2% %3 +call rp.bat temp +goto end +:nomap +echo. +echo Course '%a1%' not found. +echo. +goto end +:noveh +echo. +echo Vehicle '%a2%' not found. +echo. +goto end +:noenv +echo. +echo Renderer configuration file '%A4DPLCFG%' not found. +echo. +goto end +:end +set a2= +set a1= diff --git a/CONTENT/RP/RPSPL.BAT b/CONTENT/RP/RPSPL.BAT new file mode 100644 index 0000000..24644dd --- /dev/null +++ b/CONTENT/RP/RPSPL.BAT @@ -0,0 +1,24 @@ +@echo off +set HEAPSIZE=12000000 +set REVIEW=2 +call setenv.bat t s n n +call showenv.bat +set a0= +if exist rpl4d3s.exe set a0=rpl4d3s.exe +if exist rpl4d2s.exe set a0=rpl4d2s.exe +if exist rpl4d0.exe set a0=rpl4d0.exe +if exist rpl4opt.exe set a0=rpl4opt.exe +if "%a0%"=="" goto error +echo on +32rtm.exe -x +%a0% +32rtm.exe -u +@echo off +goto end +:error +echo. +echo Program not found in current directory. +echo. +:end +set a0= +menu.bat short diff --git a/CONTENT/RP/SCENES/CAM.BAT b/CONTENT/RP/SCENES/CAM.BAT new file mode 100644 index 0000000..0fa1529 --- /dev/null +++ b/CONTENT/RP/SCENES/CAM.BAT @@ -0,0 +1,2 @@ +edit dontneed.spl +go \ No newline at end of file diff --git a/CONTENT/RP/SCENES/DONTNEED.SPL b/CONTENT/RP/SCENES/DONTNEED.SPL new file mode 100644 index 0000000..5dc1f1e --- /dev/null +++ b/CONTENT/RP/SCENES/DONTNEED.SPL @@ -0,0 +1,4 @@ +1 +16.000000 18.000000 0.000000 0.000000 0.000000 0.000000 +25.000000 38.000000 -3100.000000 0.000000 0.000000 0.000000 + diff --git a/CONTENT/RP/SCENES/FRSTRM.CAM b/CONTENT/RP/SCENES/FRSTRM.CAM new file mode 100644 index 0000000..24db8d9 --- /dev/null +++ b/CONTENT/RP/SCENES/FRSTRM.CAM @@ -0,0 +1,300 @@ +[Camera0] +cameraID=0 +cameraType=DefaultCameraType +tranx=-20.3556 +trany=7.83787 +tranz=290.412 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera1] +cameraID=1 +cameraType=DefaultCameraType +tranx=-15.5144 +trany=8.39069 +tranz=729.567 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera2] +cameraID=2 +cameraType=DefaultCameraType +tranx=-25.7902 +trany=36.7837 +tranz=995.202 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera3] +cameraID=3 +cameraType=DefaultCameraType +tranx=18.3568 +trany=33.615 +tranz=1187.66 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera4] +cameraID=4 +cameraType=DefaultCameraType +tranx=-3.05212 +trany=45.0741 +tranz=1534.77 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera5] +cameraID=5 +cameraType=DefaultCameraType +tranx=133.051 +trany=74.8383 +tranz=1912.86 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera6] +cameraID=6 +cameraType=DefaultCameraType +tranx=-21.4762 +trany=36.3051 +tranz=-1072.58 +quatx=-4.20752e-06 +quaty=-0.929383 +quatz=1.67107e-06 +quatw=0.369118 +minYawClamp=-0.494056 +maxYawClamp=0.954443 +minPitchClamp=-0.913818 +maxPitchClamp=0.436825 + +[Camera7] +cameraID=7 +cameraType=DefaultCameraType +tranx=-16.1775 +trany=6.30525 +tranz=-292.705 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera8] +cameraID=8 +cameraType=DefaultCameraType +tranx=-25.1474 +trany=33.9382 +tranz=-689.108 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera9] +cameraID=9 +cameraType=DefaultCameraType +tranx=-12.8207 +trany=32.326 +tranz=-1068.63 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera10] +cameraID=10 +cameraType=DefaultCameraType +tranx=-3.40412 +trany=3.52669 +tranz=-1404.6 +quatx=-3.05311e-08 +quaty=0.00430008 +quatz=-7.10005e-06 +quatw=0.999991 +minYawClamp=-3.10433 +maxYawClamp=3.01313 +minPitchClamp=-1.52111 +maxPitchClamp=1.55565 + +[Camera11] +cameraID=11 +cameraType=DefaultCameraType +tranx=-3.62165 +trany=28.9959 +tranz=-1740.7 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera12] +cameraID=12 +cameraType=DefaultCameraType +tranx=-18.7203 +trany=23.9871 +tranz=-2140.21 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera13] +cameraID=13 +cameraType=DefaultCameraType +tranx=-15.0131 +trany=30.599 +tranz=-2766.91 +quatx=2.47511e-09 +quaty=-0.966014 +quatz=-6.62296e-10 +quatw=0.258488 +minYawClamp=0 +maxYawClamp=0 +minPitchClamp=-0.0286774 +maxPitchClamp=-0.0286774 + +[Camera15] +cameraID=15 +cameraType=DefaultCameraType +tranx=-4.39795 +trany=38.5178 +tranz=-3339.77 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera16] +cameraID=16 +cameraType=DefaultCameraType +tranx=0.798032 +trany=74.4984 +tranz=-3730.9 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera17] +cameraID=17 +cameraType=DefaultCameraType +tranx=102.711 +trany=60.2426 +tranz=-3719.79 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera18] +cameraID=18 +cameraType=DefaultCameraType +tranx=-176.566 +trany=74.4529 +tranz=-3733.21 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[Camera19] +cameraID=19 +cameraType=DefaultCameraType +tranx=-181.958 +trany=74.3845 +tranz=-3655.41 +quatx=-1.67607e-06 +quaty=-0.9347 +quatz=6.37357e-07 +quatw=0.355437 +minYawClamp=-3.10165 +maxYawClamp=3.11354 +minPitchClamp=-1.51855 +maxPitchClamp=1.55488 + +[WinnerCamera] +cameraID=20 +cameraType=DefaultCameraType +tranx=1200 +trany=15 +tranz=-38 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + diff --git a/CONTENT/RP/SCENES/GO.BAT b/CONTENT/RP/SCENES/GO.BAT new file mode 100644 index 0000000..872719f --- /dev/null +++ b/CONTENT/RP/SCENES/GO.BAT @@ -0,0 +1,4 @@ +call rpfly svga burnt dontneed +rem rpfly svga frstrm dontneed +rem call rpfly svga onething dontneed +cd \rel410\rp\scenes \ No newline at end of file diff --git a/CONTENT/RP/SCENES/JOYSTICK.CAL b/CONTENT/RP/SCENES/JOYSTICK.CAL new file mode 100644 index 0000000..be31cef --- /dev/null +++ b/CONTENT/RP/SCENES/JOYSTICK.CAL @@ -0,0 +1,6 @@ +// DIVISION game port calibration file : Thu Mar 28 19:33:36 1996 +X1_DATA 305.000000 327.000000 318.000000 +Y1_DATA 312.000000 345.000000 344.000000 +X2_DATA 0.000000 0.000000 0.000000 +Y2_DATA 12.000000 517.000000 510.000000 +END diff --git a/CONTENT/RP/SCENES/NEXT.BAT b/CONTENT/RP/SCENES/NEXT.BAT new file mode 100644 index 0000000..b3c8e3c --- /dev/null +++ b/CONTENT/RP/SCENES/NEXT.BAT @@ -0,0 +1 @@ +edit onething.scn diff --git a/CONTENT/RP/SCENES/ONETHING.SCN b/CONTENT/RP/SCENES/ONETHING.SCN new file mode 100644 index 0000000..524dd5b --- /dev/null +++ b/CONTENT/RP/SCENES/ONETHING.SCN @@ -0,0 +1,28 @@ + +# ------------------------- +# Single object test scene +# ------------------------- + +VIEWANGLE 60.0 +RETRACE 1 +CLIP 0.25 600.0 +FOG 50.0 600.0 0.2 0.08 0.03 +BACKGND 0.4 0.6 0.8 +AMBIENT 0.2150 0.1550 0.050 + +LIGHT 1.0 0.8 0.75 240.0 225.0 0.0 +START 0 0 100 0 0 0 +# x y z r p y of where you start + +GEOMETRY \REL4_9\RP\VIDEO +MATERIAL \REL4_9\RP\VIDEO +TEXTURE \REL4_9\RP\VIDEO + +STATIC wh6 1.0 0 0 0 0 0 0 +# object scale x y z p y r +# lines starting with a pound sign are reminders + + +TRACKER KEYBOARD 0.2 0.3 + +END diff --git a/CONTENT/RP/SCENES/OTTOCAM.SPL b/CONTENT/RP/SCENES/OTTOCAM.SPL new file mode 100644 index 0000000..ceb587d --- /dev/null +++ b/CONTENT/RP/SCENES/OTTOCAM.SPL @@ -0,0 +1,3 @@ +2 +15.000000 0.000000 20.000000 0.000000 0.000000 0.000000 +-15.000000 0.000000 100.000000 0.000000 0.000000 0.000000 \ No newline at end of file diff --git a/CONTENT/RP/SCENES/RPFLY.BAT b/CONTENT/RP/SCENES/RPFLY.BAT new file mode 100644 index 0000000..05e17c5 --- /dev/null +++ b/CONTENT/RP/SCENES/RPFLY.BAT @@ -0,0 +1,27 @@ +@echo off +rem rpfly.bat +if "%1"=="" goto usage +if "%1"=="svga" goto SetVideoMode +if "%1"=="SVGA" goto SetVideoMode +if "%1"=="ntsc" goto SetVideoMode +if "%1"=="NTSC" goto SetVideoMode +:DefaultVideoMode +set a0=svga +goto Start + +:SetVideoMode +set a0=%1 +shift + +:Start +call set%a0%.bat +if "%2"=="" flyk \rel4_9\rp\scenes\%1.scn +if not "%2"=="" flyk \rel4_9\rp\scenes\%1.scn \rel4_9\rp\scenes\dontneed.spl +goto end + +:usage +echo. +echo usage: rpfly [video_mode] scene_file [spline_file] (no extensions) +echo. +echo video_mode is 'svga' or 'ntsc' +:end diff --git a/CONTENT/RP/SCENES/SETNTSC.BAT b/CONTENT/RP/SCENES/SETNTSC.BAT new file mode 100644 index 0000000..6c9af3d --- /dev/null +++ b/CONTENT/RP/SCENES/SETNTSC.BAT @@ -0,0 +1 @@ +set DPLARG=/tranny~.\vrendmon.btl~/i860~.\vrend.mng~/device~0x150~/video~ntsc~/pipes~1~/qual~0x14~/system_tex~0~ diff --git a/CONTENT/RP/SCENES/SETSVGA.BAT b/CONTENT/RP/SCENES/SETSVGA.BAT new file mode 100644 index 0000000..00ca7de --- /dev/null +++ b/CONTENT/RP/SCENES/SETSVGA.BAT @@ -0,0 +1 @@ +set DPLARG=/tranny~.\vrendmon.btl~/i860~.\vrend.mng~/device~0x150~/video~svga~/pipes~1~/qual~0x14~/system_tex~0~ diff --git a/CONTENT/RP/SCENES/SETSVGA6.BAT b/CONTENT/RP/SCENES/SETSVGA6.BAT new file mode 100644 index 0000000..a8adec6 --- /dev/null +++ b/CONTENT/RP/SCENES/SETSVGA6.BAT @@ -0,0 +1 @@ +set DPLARG=/tranny~.\vrendmon.btl~/i860~.\vrend.mng~/device~0x150~/video~svga60~/pipes~1~/qual~0x14~/system_tex~0~ diff --git a/CONTENT/RP/SHOWENV.BAT b/CONTENT/RP/SHOWENV.BAT new file mode 100644 index 0000000..002caca --- /dev/null +++ b/CONTENT/RP/SHOWENV.BAT @@ -0,0 +1,14 @@ +@echo off +echo HEAPSIZE=%HEAPSIZE% +echo REVIEW=%REVIEW% +echo L4EYES=%L4EYES% +echo L4VIEWEXT=%L4VIEWEXT% +echo L4ANIMATION=%L4ANIMATION% +echo L4DPLCFG=%L4DPLCFG% +echo L4CONTROLS=%L4CONTROLS% +echo L4TIMER=%L4TIMER% +echo L4GAUGE=%L4GAUGE% +echo AWE_FRONT=%AWE_FRONT% +echo AWE_REAR=%AWE_REAR% +echo DPLARG=%DPLARG% +echo VIDEOFORMAT=%VIDEOFORMAT% diff --git a/CONTENT/RP/SOLIDS/BA_CV.SLD b/CONTENT/RP/SOLIDS/BA_CV.SLD new file mode 100644 index 0000000..7f92cfb --- /dev/null +++ b/CONTENT/RP/SOLIDS/BA_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-4 +extmaxX=4 +extminY=-1.5 +extmaxY=1.5 +extminZ=-4 +extmaxZ=4 + +slcminX=-4 +slcmaxX=4 +slcminY=-1.5 +slcmaxY=1.5 +slcminZ=-4 +slcmaxZ=4 + + +[COLLISION] +name=ba_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/BLADE.XST b/CONTENT/RP/SOLIDS/BLADE.XST new file mode 100644 index 0000000..c035887 --- /dev/null +++ b/CONTENT/RP/SOLIDS/BLADE.XST @@ -0,0 +1,71 @@ +[LAB_ONLY] + +[extent 0] +extminX=-282 +extmaxX=340 +extminY=-45 +extmaxY=55 +extminZ=1775.1 +extmaxZ=2426.8 + + +[extent 1] +extminX=-45 +extmaxX=-34 +extminY=-44 +extmaxY=56 +extminZ=-4920 +extmaxZ=-4530 + + +[extent 2] +extminX=-45 +extmaxX=-34 +extminY=-44 +extmaxY=56 +extminZ=-4518 +extmaxZ=-4125 + + +[extent 3] +extminX=-34 +extmaxX=362 +extminY=-44 +extmaxY=56 +extminZ=-4920 +extmaxZ=-4125 + + +[extent 4] +extminX=-441 +extmaxX=-45 +extminY=-44 +extmaxY=56 +extminZ=-4920 +extmaxZ=-4125 + + +[extent 5] +extminX=-55 +extmaxX=57 +extminY=6 +extmaxY=56 +extminZ=-4125 +extmaxZ=-2600 + + +[extent 6] +extminX=-51 +extmaxX=61 +extminY=0 +extmaxY=50 +extminZ=-2600 +extmaxZ=1775.1 + + +[COLLISION] +name=blade.xst +count=0 +extentcount=7 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/BLANK.XST b/CONTENT/RP/SOLIDS/BLANK.XST new file mode 100644 index 0000000..e0f3697 --- /dev/null +++ b/CONTENT/RP/SOLIDS/BLANK.XST @@ -0,0 +1,89 @@ +[LAB_ONLY] + +[extent 0] +extminX=-50 +extmaxX=50 +extminY=-5 +extmaxY=50 +extminZ=-950 +extmaxZ=3480 + + +[extent 1] +extminX=-360 +extmaxX=440 +extminY=5 +extmaxY=145 +extminZ=3895 +extmaxZ=4280 + + +[extent 2] +extminX=-360 +extmaxX=25 +extminY=5 +extmaxY=145 +extminZ=3865 +extmaxZ=3895 + + +[extent 3] +extminX=55 +extmaxX=440 +extminY=5 +extmaxY=145 +extminZ=3865 +extmaxZ=3895 + + +[extent 4] +extminX=-360 +extmaxX=440 +extminY=5 +extmaxY=145 +extminZ=3480 +extmaxZ=3865 + + +[extent 5] +extminX=-25 +extmaxX=360 +extminY=5 +extmaxY=145 +extminZ=-1365 +extmaxZ=-1335 + + +[extent 6] +extminX=-440 +extmaxX=-55 +extminY=5 +extmaxY=145 +extminZ=-1365 +extmaxZ=-1335 + + +[extent 7] +extminX=-440 +extmaxX=360 +extminY=5 +extmaxY=145 +extminZ=-1335 +extmaxZ=-950 + + +[extent 8] +extminX=-440 +extmaxX=360 +extminY=5 +extmaxY=145 +extminZ=-1750 +extmaxZ=-1365 + + +[COLLISION] +name=blank.xst +count=0 +extentcount=9 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/BN1_CV.SLD b/CONTENT/RP/SOLIDS/BN1_CV.SLD new file mode 100644 index 0000000..583c8c8 --- /dev/null +++ b/CONTENT/RP/SOLIDS/BN1_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-4.17188 +extmaxX=3.39844 +extminY=0.117188 +extmaxY=7.57031 +extminZ=-3.73438 +extmaxZ=3.4375 + +slcminX=-4.17188 +slcmaxX=3.39844 +slcminY=0.117188 +slcmaxY=7.57031 +slcminZ=-3.73438 +slcmaxZ=3.4375 + + +[COLLISION] +name=bn1_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/BP1_CV.SLD b/CONTENT/RP/SOLIDS/BP1_CV.SLD new file mode 100644 index 0000000..4e52294 --- /dev/null +++ b/CONTENT/RP/SOLIDS/BP1_CV.SLD @@ -0,0 +1,113 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-10 +extmaxX=10 +extminY=1 +extmaxY=5 +extminZ=-15 +extmaxZ=15 + +slcminX=-10 +slcmaxX=10 +slcminY=1 +slcmaxY=5 +slcminZ=-15 +slcmaxZ=15 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-25 +extmaxX=-10 +extminY=1 +extmaxY=5 +extminZ=-15 +extmaxZ=-10 + +slcminX=-25 +slcmaxX=-10 +slcminY=1 +slcmaxY=5 +slcminZ=-15 +slcmaxZ=-10 + + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=10 +extmaxX=25 +extminY=1 +extmaxY=5 +extminZ=-15 +extmaxZ=-10 + +slcminX=10 +slcmaxX=25 +slcminY=1 +slcmaxY=5 +slcminZ=-15 +slcmaxZ=-10 + + +[volume 3] +TypeNumber=13 +TypeName=WedgeFacingNegativeZAndNegativeXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=10 +extmaxX=25 +extminY=1 +extmaxY=5 +extminZ=-10 +extmaxZ=15 + +slcminX=10 +slcmaxX=25 +slcminY=1 +slcmaxY=5 +slcminZ=-10 +slcmaxZ=15 + + +[volume 4] +TypeNumber=12 +TypeName=WedgeFacingNegativeZAndPositiveXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-25 +extmaxX=-10 +extminY=1 +extmaxY=5 +extminZ=-10 +extmaxZ=15 + +slcminX=-25 +slcmaxX=-10 +slcminY=1 +slcmaxY=5 +slcminZ=-10 +slcmaxZ=15 + + +[COLLISION] +name=bp1_cv.sld +count=5 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/BR1A_CV.SLD b/CONTENT/RP/SOLIDS/BR1A_CV.SLD new file mode 100644 index 0000000..789e72c --- /dev/null +++ b/CONTENT/RP/SOLIDS/BR1A_CV.SLD @@ -0,0 +1,49 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-5 +extmaxX=5 +extminY=-6.14844 +extmaxY=-3.75 +extminZ=-42.4531 +extmaxZ=-36.25 + +slcminX=-5 +slcmaxX=5 +slcminY=-6.14844 +slcmaxY=-3.75 +slcminZ=-42.4531 +slcmaxZ=-36.25 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-5 +extmaxX=5 +extminY=-6.14844 +extmaxY=-3.75 +extminZ=36.25 +extmaxZ=42.4531 + +slcminX=-5 +slcmaxX=5 +slcminY=-6.14844 +slcmaxY=-3.75 +slcminZ=36.25 +slcmaxZ=42.4531 + +[COLLISION] +name=br1a_cv.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/BR1B_CV.SLD b/CONTENT/RP/SOLIDS/BR1B_CV.SLD new file mode 100644 index 0000000..f3f62a9 --- /dev/null +++ b/CONTENT/RP/SOLIDS/BR1B_CV.SLD @@ -0,0 +1,49 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-5 +extmaxX=5 +extminY=-3.75 +extmaxY=0 +extminZ=-880 +extmaxZ=880 + +slcminX=-5 +slcmaxX=5 +slcminY=-3.75 +slcmaxY=0 +slcminZ=-880 +slcmaxZ=880 + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-1.25 +extmaxX=1.25 +extminY=-5.75 +extmaxY=-3.75 +extminZ=-880 +extmaxZ=880 + +slcminX=-1.25 +slcmaxX=1.25 +slcminY=-5.75 +slcmaxY=-3.75 +slcminZ=-880 +slcmaxZ=880 + + +[COLLISION] +name=br1b_cv.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/BR1_CV.SLD b/CONTENT/RP/SOLIDS/BR1_CV.SLD new file mode 100644 index 0000000..0ed3a75 --- /dev/null +++ b/CONTENT/RP/SOLIDS/BR1_CV.SLD @@ -0,0 +1,92 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-5 +extmaxX=5 +extminY=-3.75 +extmaxY=0 +extminZ=-40 +extmaxZ=40 + +slcminX=-5 +slcmaxX=5 +slcminY=-3.75 +slcmaxY=0 +slcminZ=-40 +slcmaxZ=40 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-5 +extmaxX=5 +extminY=-6.14844 +extmaxY=-3.75 +extminZ=-42.4531 +extmaxZ=-36.25 + +slcminX=-5 +slcmaxX=5 +slcminY=-6.14844 +slcmaxY=-3.75 +slcminZ=-42.4531 +slcmaxZ=-36.25 + + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-5 +extmaxX=5 +extminY=-6.14844 +extmaxY=-3.75 +extminZ=36.25 +extmaxZ=42.4531 + +slcminX=-5 +slcmaxX=5 +slcminY=-6.14844 +slcmaxY=-3.75 +slcminZ=36.25 +slcmaxZ=42.4531 + + +[volume 3] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=3 +MaterialName=SteelMaterial + +extminX=-1.25 +extmaxX=1.25 +extminY=-5.75 +extmaxY=-3.75 +extminZ=-36.25 +extmaxZ=36.25 + +slcminX=-1.25 +slcmaxX=1.25 +slcminY=-5.75 +slcmaxY=-3.75 +slcminZ=-36.25 +slcmaxZ=36.25 + + +[COLLISION] +name=br1_cv.sld +count=4 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/BR3_CV.SLD b/CONTENT/RP/SOLIDS/BR3_CV.SLD new file mode 100644 index 0000000..2dfa518 --- /dev/null +++ b/CONTENT/RP/SOLIDS/BR3_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-5 +extmaxX=5 +extminY=17.1016 +extmaxY=20.1016 +extminZ=-25 +extmaxZ=25 + +slcminX=-5 +slcmaxX=5 +slcminY=17.1016 +slcmaxY=20.1016 +slcminZ=-25 +slcmaxZ=25 + + +[COLLISION] +name=br3_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/BRE1_CV.SLD b/CONTENT/RP/SOLIDS/BRE1_CV.SLD new file mode 100644 index 0000000..5671078 --- /dev/null +++ b/CONTENT/RP/SOLIDS/BRE1_CV.SLD @@ -0,0 +1,268 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-50 +extmaxX=50 +extminY=-5 +extmaxY=100 +extminZ=150 +extmaxZ=160 + +slcminX=-50 +slcmaxX=50 +slcminY=-5 +slcmaxY=100 +slcminZ=150 +slcmaxZ=160 + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=150 +extmaxX=160 +extminY=-5 +extmaxY=100 +extminZ=-50 +extmaxZ=50 + +slcminX=150 +slcmaxX=160 +slcminY=-5 +slcmaxY=100 +slcminZ=-50 +slcmaxZ=50 + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-160 +extmaxX=-150 +extminY=-5 +extmaxY=100 +extminZ=-50 +extmaxZ=50 + +slcminX=-160 +slcmaxX=-150 +slcminY=-5 +slcmaxY=100 +slcminZ=-50 +slcmaxZ=50 + +[volume 3] +TypeNumber=12 +TypeName=WedgeFacingNegativeZandPositiveXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=50 +extmaxX=150 +extminY=-5 +extmaxY=100 +extminZ=-150 +extmaxZ=-50 + +slcminX=50 +slcmaxX=150 +slcminY=-5 +slcmaxY=100 +slcminZ=-150 +slcmaxZ=-50 + +[volume 4] +TypeNumber=13 +TypeName=WedgeFacingNegativeZandNegativeXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-150 +extmaxX=-50 +extminY=-5 +extmaxY=100 +extminZ=-150 +extmaxZ=-50 + +slcminX=-150 +slcmaxX=-50 +slcminY=-5 +slcmaxY=100 +slcminZ=-150 +slcmaxZ=-50 + +[volume 5] +TypeNumber=14 +TypeName=WedgeFacingPositiveZandNegativeXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-150 +extmaxX=-50 +extminY=-5 +extmaxY=100 +extminZ=50 +extmaxZ=150 + +slcminX=-150 +slcmaxX=-50 +slcminY=-5 +slcmaxY=100 +slcminZ=50 +slcmaxZ=150 + +[volume 6] +TypeNumber=15 +TypeName=WedgeFacingPositiveZandPositiveXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=50 +extmaxX=150 +extminY=-5 +extmaxY=100 +extminZ=50 +extmaxZ=150 + +slcminX=50 +slcmaxX=150 +slcminY=-5 +slcmaxY=100 +slcminZ=50 +slcmaxZ=150 + +[volume 7] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-50 +extmaxX=50 +extminY=10 +extmaxY=100 +extminZ=-160 +extmaxZ=-150 + +slcminX=-50 +slcmaxX=50 +slcminY=10 +slcmaxY=100 +slcminZ=-160 +slcmaxZ=-150 + +[volume 8] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-50 +extmaxX=-20 +extminY=-5 +extmaxY=10 +extminZ=-160 +extmaxZ=-150 + +slcminX=-50 +slcmaxX=-20 +slcminY=-5 +slcmaxY=10 +slcminZ=-160 +slcmaxZ=-150 + +[volume 9] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=20 +extmaxX=50 +extminY=-5 +extmaxY=10 +extminZ=-160 +extmaxZ=-150 + +slcminX=20 +slcmaxX=50 +slcminY=-5 +slcmaxY=10 +slcminZ=-160 +slcmaxZ=-150 + +[volume 10] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-50 +extmaxX=50 +extminY=10 +extmaxY=50 +extminZ=-350 +extmaxZ=-340 + +slcminX=-50 +slcmaxX=50 +slcminY=10 +slcmaxY=50 +slcminZ=-350 +slcmaxZ=-340 + +[volume 11] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-50 +extmaxX=-20 +extminY=-5 +extmaxY=10 +extminZ=-350 +extmaxZ=-340 + +slcminX=-50 +slcmaxX=-20 +slcminY=-5 +slcmaxY=10 +slcminZ=-350 +slcmaxZ=-340 + +[volume 12] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=20 +extmaxX=50 +extminY=-5 +extmaxY=10 +extminZ=-350 +extmaxZ=-340 + +slcminX=20 +slcmaxX=50 +slcminY=-5 +slcmaxY=10 +slcminZ=-350 +slcmaxZ=-340 + +[COLLISION] +name=bre1_cv.sld +count=13 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/BREWERS.XST b/CONTENT/RP/SOLIDS/BREWERS.XST new file mode 100644 index 0000000..963bc03 --- /dev/null +++ b/CONTENT/RP/SOLIDS/BREWERS.XST @@ -0,0 +1,168 @@ +[LAB_ONLY] + +[extent 0] +extminX=-440 +extmaxX=420 +extminY=-35 +extmaxY=105 +extminZ=2050 +extmaxZ=2460 + +[extent 1] +extminX=-440 +extmaxX=420 +extminY=-35 +extmaxY=105 +extminZ=2490 +extmaxZ=2875 + +[extent 2] +extminX=55 +extmaxX=420 +extminY=-35 +extmaxY=105 +extminZ=2460 +extmaxZ=2490 + +[extent 3] +extminX=-440 +extmaxX=25 +extminY=-35 +extmaxY=105 +extminZ=2460 +extmaxZ=2490 + +[extent 4] +extminX=-50 +extmaxX=50 +extminY=-50 +extmaxY=15 +extminZ=100 +extmaxZ=2200 + +[extent 5] +extminX=-160 +extmaxX=600 +extminY=-50 +extmaxY=80 +extminZ=-195 +extmaxZ=100 + +[extent 6] +extminX=-160 +extmaxX=-5 +extminY=-50 +extmaxY=80 +extminZ=-205 +extmaxZ=-195 + +[extent 7] +extminX=5 +extmaxX=160 +extminY=-50 +extmaxY=80 +extminZ=-205 +extmaxZ=-195 + +[extent 8] +extminX=-160 +extmaxX=600 +extminY=-50 +extmaxY=80 +extminZ=-750 +extmaxZ=-205 + +[extent 9] +extminX=600 +extmaxX=1300 +extminY=-50 +extmaxY=80 +extminZ=-650 +extmaxZ=-550 + +[extent 10] +extminX=1300 +extmaxX=1495 +extminY=-50 +extmaxY=80 +extminZ=-750 +extmaxZ=-450 + +[extent 11] +extminX=1505 +extmaxX=1700 +extminY=-50 +extmaxY=80 +extminZ=-750 +extmaxZ=-450 + +[extent 12] +extminX=1495 +extmaxX=1505 +extminY=-50 +extmaxY=80 +extminZ=-595 +extmaxZ=-450 + +[extent 13] +extminX=1495 +extmaxX=1505 +extminY=-50 +extmaxY=80 +extminZ=-750 +extmaxZ=-605 + +[extent 14] +extminX=1700 +extmaxX=2500 +extminY=-50 +extmaxY=80 +extminZ=-650 +extmaxZ=-550 + +[extent 15] +extminX=2500 +extmaxX=2695 +extminY=-50 +extmaxY=80 +extminZ=-750 +extmaxZ=-450 + +[extent 16] +extminX=2705 +extmaxX=3000 +extminY=-50 +extmaxY=80 +extminZ=-750 +extmaxZ=-450 + +[extent 17] +extminX=2695 +extmaxX=2705 +extminY=-50 +extmaxY=80 +extminZ=-595 +extmaxZ=-450 + +[extent 18] +extminX=2695 +extmaxX=2705 +extminY=-50 +extmaxY=80 +extminZ=-750 +extmaxZ=-605 + +[extent 19] +extminX=2540 +extmaxX=2860 +extminY=-50 +extmaxY=60 +extminZ=-2000 +extmaxZ=-750 + +[COLLISION] +name=brewers.xst +count=0 +extentcount=20 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/BREW_CV.SLD b/CONTENT/RP/SOLIDS/BREW_CV.SLD new file mode 100644 index 0000000..cad69ac --- /dev/null +++ b/CONTENT/RP/SOLIDS/BREW_CV.SLD @@ -0,0 +1,292 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-49 +extmaxX=-44 +extminY=-20 +extmaxY=20 +extminZ=50 +extmaxZ=550 + +slcminX=-49 +slcmaxX=-44 +slcminY=-20 +slcmaxY=20 +slcminZ=50 +slcmaxZ=550 + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=44 +extmaxX=49 +extminY=-20 +extmaxY=20 +extminZ=50 +extmaxZ=550 + +slcminX=44 +slcmaxX=49 +slcminY=-20 +slcmaxY=20 +slcminZ=50 +slcmaxZ=550 + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-49 +extmaxX=-44 +extminY=-20 +extmaxY=20 +extminZ=1850 +extmaxZ=2150 + +slcminX=-49 +slcmaxX=-44 +slcminY=-20 +slcmaxY=20 +slcminZ=1850 +slcmaxZ=2150 + +[volume 3] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=44 +extmaxX=49 +extminY=-20 +extmaxY=20 +extminZ=1850 +extmaxZ=2150 + +slcminX=44 +slcmaxX=49 +slcminY=-20 +slcmaxY=20 +slcminZ=1850 +slcmaxZ=2150 + +[volume 4] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=550 +extmaxX=850 +extminY=-20 +extmaxY=20 +extminZ=-649 +extmaxZ=-644 + +slcminX=550 +slcmaxX=850 +slcminY=-20 +slcmaxY=20 +slcminZ=-649 +slcmaxZ=-644 + + +[volume 5] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=550 +extmaxX=850 +extminY=-20 +extmaxY=20 +extminZ=-556 +extmaxZ=-552 + +slcminX=550 +slcmaxX=850 +slcminY=-20 +slcmaxY=20 +slcminZ=-556 +slcmaxZ=-552 + +[volume 6] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=950 +extmaxX=1250 +extminY=-20 +extmaxY=20 +extminZ=-649 +extmaxZ=-644 + +slcminX=950 +slcmaxX=1250 +slcminY=-20 +slcmaxY=20 +slcminZ=-649 +slcmaxZ=-644 + + +[volume 7] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=950 +extmaxX=1250 +extminY=-20 +extmaxY=20 +extminZ=-556 +extmaxZ=-552 + +slcminX=950 +slcmaxX=1250 +slcminY=-20 +slcmaxY=20 +slcminZ=-556 +slcmaxZ=-552 + +[volume 8] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=1750 +extmaxX=2050 +extminY=-20 +extmaxY=20 +extminZ=-649 +extmaxZ=-644 + +slcminX=1750 +slcmaxX=2050 +slcminY=-20 +slcmaxY=20 +slcminZ=-649 +slcmaxZ=-644 + + +[volume 9] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=1750 +extmaxX=2050 +extminY=-20 +extmaxY=20 +extminZ=-556 +extmaxZ=-552 + +slcminX=1750 +slcmaxX=2050 +slcminY=-20 +slcmaxY=20 +slcminZ=-556 +slcmaxZ=-552 + +[volume 10] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=2150 +extmaxX=2450 +extminY=-20 +extmaxY=20 +extminZ=-649 +extmaxZ=-644 + +slcminX=2150 +slcmaxX=2450 +slcminY=-20 +slcmaxY=20 +slcminZ=-649 +slcmaxZ=-644 + +[volume 11] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=2150 +extmaxX=2450 +extminY=-20 +extmaxY=20 +extminZ=-556 +extmaxZ=-552 + +slcminX=2150 +slcmaxX=2450 +slcminY=-20 +slcmaxY=20 +slcminZ=-556 +slcmaxZ=-552 + +[volume 12] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=2744 +extmaxX=2749 +extminY=-20 +extmaxY=20 +extminZ=-1350 +extmaxZ=-850 + +slcminX=2744 +slcmaxX=2749 +slcminY=-20 +slcmaxY=20 +slcminZ=-1350 +slcmaxZ=-850 + + +[volume 13] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=2652 +extmaxX=2656 +extminY=-20 +extmaxY=20 +extminZ=-1350 +extmaxZ=-850 + +slcminX=2652 +slcmaxX=2656 +slcminY=-20 +slcmaxY=20 +slcminZ=-1350 +slcmaxZ=-850 + +[COLLISION] +name=brew_cv.sld +count=14 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/BURNT.BAK b/CONTENT/RP/SOLIDS/BURNT.BAK new file mode 100644 index 0000000..cba160e --- /dev/null +++ b/CONTENT/RP/SOLIDS/BURNT.BAK @@ -0,0 +1,32 @@ +[LAB_ONLY] + +[extent 0] +extminX=-255 +extmaxX=255 +extminY=-5 +extmaxY=95 +extminZ=-2600 +extmaxZ=-2100 + +[extent 1] +extminX=-50 +extmaxX=50 +extminY=-5 +extmaxY=40 +extminZ=-2100 +extmaxZ=2100 + +[extent 2] +extminX=-255 +extmaxX=255 +extminY=-5 +extmaxY=95 +extminZ=2100 +extmaxZ=2600 + +[COLLISION] +name=burnt.xst +count=0 +extentcount=3 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/BURNT.XST b/CONTENT/RP/SOLIDS/BURNT.XST new file mode 100644 index 0000000..5682f98 --- /dev/null +++ b/CONTENT/RP/SOLIDS/BURNT.XST @@ -0,0 +1,32 @@ +[LAB_ONLY] + +[extent 0] +extminX=-255 +extmaxX=255 +extminY=-5 +extmaxY=95 +extminZ=-2700 +extmaxZ=-2200 + +[extent 1] +extminX=-50 +extmaxX=50 +extminY=-5 +extmaxY=40 +extminZ=-2200 +extmaxZ=2200 + +[extent 2] +extminX=-255 +extmaxX=255 +extminY=-5 +extmaxY=95 +extminZ=2200 +extmaxZ=2700 + +[COLLISION] +name=burnt.xst +count=0 +extentcount=3 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/BU_CV.SLD b/CONTENT/RP/SOLIDS/BU_CV.SLD new file mode 100644 index 0000000..f3ef30d --- /dev/null +++ b/CONTENT/RP/SOLIDS/BU_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-4.30469 +extmaxX=4.30469 +extminY=-1.25 +extmaxY=1.25 +extminZ=-4.30469 +extmaxZ=4.30469 + +slcminX=-4.30469 +slcmaxX=4.30469 +slcminY=-1.25 +slcmaxY=1.25 +slcminZ=-4.30469 +slcmaxZ=4.30469 + + +[COLLISION] +name=bu_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/C8E_CV.SLD b/CONTENT/RP/SOLIDS/C8E_CV.SLD new file mode 100644 index 0000000..fffd6dc --- /dev/null +++ b/CONTENT/RP/SOLIDS/C8E_CV.SLD @@ -0,0 +1,176 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-50 +extmaxX=-25 +extminY=46 +extmaxY=49 +extminZ=50 +extmaxZ=53 + +slcminX=-50 +slcmaxX=-25 +slcminY=46 +slcmaxY=49 +slcminZ=50 +slcmaxZ=53 + + +[volume 1] +TypeNumber=5 +TypeName=RampFacingNegativeXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-44.5 +extmaxX=-20 +extminY=1 +extmaxY=50 +extminZ=50 +extmaxZ=150 + +slcminX=-44.5 +slcmaxX=-20 +slcminY=1 +slcmaxY=50 +slcminZ=50 +slcmaxZ=150 + + +[volume 2] +TypeNumber=7 +TypeName=RampFacingPositiveXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=20 +extmaxX=44.5 +extminY=1 +extmaxY=50 +extminZ=50 +extmaxZ=150 + +slcminX=20 +slcmaxX=44.5 +slcminY=1 +slcmaxY=50 +slcminZ=50 +slcmaxZ=150 + + +[volume 3] +TypeNumber=4 +TypeName=RampFacingNegativeZType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-25 +extmaxX=25 +extminY=1 +extmaxY=6 +extminZ=50 +extmaxZ=150 + +slcminX=-25 +slcmaxX=25 +slcminY=1 +slcmaxY=6 +slcminZ=50 +slcmaxZ=150 + + +[volume 4] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-25 +extmaxX=-8 +extminY=46 +extmaxY=47 +extminZ=50 +extmaxZ=52 + +slcminX=-25 +slcmaxX=-8 +slcminY=46 +slcmaxY=47 +slcminZ=50 +slcmaxZ=52 + + +[volume 5] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=22.5 +extmaxX=50 +extminY=6 +extmaxY=50 +extminZ=45 +extmaxZ=50 + +slcminX=22.5 +slcmaxX=50 +slcminY=6 +slcmaxY=50 +slcminZ=45 +slcmaxZ=50 + + +[volume 6] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-50 +extmaxX=-22.5 +extminY=6 +extmaxY=50 +extminZ=45 +extmaxZ=50 + +slcminX=-50 +slcmaxX=-22.5 +slcminY=6 +slcmaxY=50 +slcminZ=45 +slcmaxZ=50 + + +[volume 7] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-22.5 +extmaxX=22.5 +extminY=46 +extmaxY=50 +extminZ=45 +extmaxZ=50 + +slcminX=-22.5 +slcmaxX=22.5 +slcminY=46 +slcmaxY=50 +slcminZ=45 +slcmaxZ=50 + + +[COLLISION] +name=c8e_cv.sld +count=8 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/CAP_CV.SLD b/CONTENT/RP/SOLIDS/CAP_CV.SLD new file mode 100644 index 0000000..b4c5721 --- /dev/null +++ b/CONTENT/RP/SOLIDS/CAP_CV.SLD @@ -0,0 +1,28 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-50 +extmaxX=50 +extminY=0 +extmaxY=10 +extminZ=-50 +extmaxZ=50 + +slcminX=-50 +slcmaxX=50 +slcminY=0 +slcmaxY=10 +slcminZ=-50 +slcmaxZ=50 + +[COLLISION] +name=cap_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/CC1_CV.SLD b/CONTENT/RP/SOLIDS/CC1_CV.SLD new file mode 100644 index 0000000..44a23fb --- /dev/null +++ b/CONTENT/RP/SOLIDS/CC1_CV.SLD @@ -0,0 +1,154 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=1 +MaterialName=GravelMaterial + +extminX=-43 +extmaxX=43 +extminY=-8.25 +extmaxY=0 +extminZ=-15 +extmaxZ=50 + +slcminX=-43 +slcmaxX=43 +slcminY=-8.25 +slcmaxY=0 +slcminZ=-15 +slcmaxZ=50 + + +[volume 1] +TypeNumber=4 +TypeName=RampFacingNegativeZType +MaterialNumber=5 +MaterialName=RockMaterial + +extminX=-43 +extmaxX=43 +extminY=0 +extmaxY=49 +extminZ=-49 +extmaxZ=-15 + +slcminX=-43 +slcmaxX=43 +slcminY=0 +slcmaxY=49 +slcminZ=-49 +slcmaxZ=-15 + + +[volume 2] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=5 +MaterialName=RockMaterial + +extminX=-106 +extmaxX=4 +extminY=-11.5 +extmaxY=86.5 +extminZ=-102.5 +extmaxZ=7.5 + +slcminX=-43 +slcmaxX=-16 +slcminY=0 +slcmaxY=49 +slcminZ=-49.1172 +slcmaxZ=6.52344 + + +[volume 3] +TypeNumber=5 +TypeName=RampFacingNegativeXType +MaterialNumber=5 +MaterialName=RockMaterial + +extminX=-43 +extmaxX=-20 +extminY=0 +extmaxY=49 +extminZ=-49 +extmaxZ=50 + +slcminX=-43 +slcmaxX=-20 +slcminY=0 +slcmaxY=49 +slcminZ=-49 +slcmaxZ=50 + + +[volume 4] +TypeNumber=7 +TypeName=RampFacingPositiveXType +MaterialNumber=5 +MaterialName=RockMaterial + +extminX=20 +extmaxX=43 +extminY=0 +extmaxY=49 +extminZ=-49 +extmaxZ=50 + +slcminX=20 +slcmaxX=43 +slcminY=0 +slcmaxY=49 +slcminZ=-49 +slcmaxZ=50 + + +[volume 5] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=5 +MaterialName=RockMaterial + +extminX=-21 +extmaxX=89 +extminY=-0.851562 +extmaxY=55.0859 +extminZ=-100 +extmaxZ=10 + +slcminX=-3 +slcmaxX=43 +slcminY=0 +slcmaxY=49 +slcminZ=-49 +slcmaxZ=6.5 + + +[volume 6] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=5 +MaterialName=RockMaterial + +extminX=-80.5 +extmaxX=48.5 +extminY=-2 +extmaxY=15 +extminZ=-104.5 +extmaxZ=24.5 + +slcminX=-25.5 +slcmaxX=20 +slcminY=0 +slcmaxY=11 +slcminZ=-23 +slcmaxZ=17 + + +[COLLISION] +name=cc1_cv.sld +count=7 +extentcount=0 + diff --git a/CONTENT/RP/SOLIDS/CHG_CV.SLD b/CONTENT/RP/SOLIDS/CHG_CV.SLD new file mode 100644 index 0000000..d1518af --- /dev/null +++ b/CONTENT/RP/SOLIDS/CHG_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-0.796875 +extmaxX=0.796875 +extminY=0 +extmaxY=0.398438 +extminZ=-0.796875 +extmaxZ=0.796875 + +slcminX=-0.796875 +slcmaxX=0.796875 +slcminY=0 +slcmaxY=0.398438 +slcminZ=-0.796875 +slcmaxZ=0.796875 + + +[COLLISION] +name=chg_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/CHOICE2.XST b/CONTENT/RP/SOLIDS/CHOICE2.XST new file mode 100644 index 0000000..152f9ed --- /dev/null +++ b/CONTENT/RP/SOLIDS/CHOICE2.XST @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/CONTENT/RP/SOLIDS/CL1_CV.SLD b/CONTENT/RP/SOLIDS/CL1_CV.SLD new file mode 100644 index 0000000..ea2cde1 --- /dev/null +++ b/CONTENT/RP/SOLIDS/CL1_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2.25 +extmaxX=2.25 +extminY=0 +extmaxY=10 +extminZ=-2.25 +extmaxZ=2.25 + +slcminX=-2.25 +slcmaxX=2.25 +slcminY=0 +slcmaxY=10 +slcminZ=-2.25 +slcmaxZ=2.25 + + +[COLLISION] +name=cl1_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/CL2_CV.SLD b/CONTENT/RP/SOLIDS/CL2_CV.SLD new file mode 100644 index 0000000..9a4dde5 --- /dev/null +++ b/CONTENT/RP/SOLIDS/CL2_CV.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-5 +extmaxX=5 +extminY=-0.296875 +extmaxY=26.25 +extminZ=-2.53125 +extmaxZ=2.53125 + +slcminX=-5 +slcmaxX=5 +slcminY=-0.296875 +slcmaxY=26.25 +slcminZ=-2.53125 +slcmaxZ=2.53125 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-5 +extmaxX=5 +extminY=26.25 +extmaxY=30 +extminZ=-5 +extmaxZ=5 + +slcminX=-5 +slcmaxX=5 +slcminY=26.25 +slcmaxY=30 +slcminZ=-5 +slcmaxZ=5 + + +[COLLISION] +name=cl2_cv.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/CL3_CV.SLD b/CONTENT/RP/SOLIDS/CL3_CV.SLD new file mode 100644 index 0000000..6693a82 --- /dev/null +++ b/CONTENT/RP/SOLIDS/CL3_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-5 +extmaxX=5 +extminY=-2 +extmaxY=27.5 +extminZ=-2.5 +extmaxZ=2.5 + +slcminX=-5 +slcmaxX=5 +slcminY=-2 +slcmaxY=27.5 +slcminZ=-2.5 +slcmaxZ=2.5 + + +[COLLISION] +name=cl3_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/CN1_CV.SLD b/CONTENT/RP/SOLIDS/CN1_CV.SLD new file mode 100644 index 0000000..5c01994 --- /dev/null +++ b/CONTENT/RP/SOLIDS/CN1_CV.SLD @@ -0,0 +1,155 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=7 +TypeName=RampFacingPositiveXType +MaterialNumber=5 +MaterialName=RockMaterial + +extminX=21.7969 +extmaxX=48 +extminY=3.14844 +extmaxY=49 +extminZ=-50 +extmaxZ=50 + +slcminX=21.7969 +slcmaxX=48 +slcminY=3.14844 +slcmaxY=49 +slcminZ=-50 +slcmaxZ=50 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=1 +MaterialName=GravelMaterial + +extminX=-17 +extmaxX=17 +extminY=-8.25 +extmaxY=0 +extminZ=-50 +extmaxZ=50 + +slcminX=-17 +slcmaxX=17 +slcminY=-8.25 +slcmaxY=0 +slcminZ=-50 +slcmaxZ=50 + + +[volume 2] +TypeNumber=5 +TypeName=RampFacingNegativeXType +MaterialNumber=5 +MaterialName=RockMaterial + +extminX=-21.7969 +extmaxX=-17 +extminY=0 +extmaxY=3.14844 +extminZ=-50 +extmaxZ=50 + +slcminX=-21.7969 +slcmaxX=-17 +slcminY=0 +slcmaxY=3.14844 +slcminZ=-50 +slcmaxZ=50 + + +[volume 3] +TypeNumber=5 +TypeName=RampFacingNegativeXType +MaterialNumber=5 +MaterialName=RockMaterial + +extminX=-48 +extmaxX=-21.7969 +extminY=3.14844 +extmaxY=49 +extminZ=-50 +extmaxZ=50 + +slcminX=-48 +slcmaxX=-21.7969 +slcminY=3.14844 +slcmaxY=49 +slcminZ=-50 +slcmaxZ=50 + + +[volume 4] +TypeNumber=7 +TypeName=RampFacingPositiveXType +MaterialNumber=5 +MaterialName=RockMaterial + +extminX=17 +extmaxX=21.7969 +extminY=0 +extmaxY=3.14844 +extminZ=-50 +extmaxZ=50 + +slcminX=17 +slcmaxX=21.7969 +slcminY=0 +slcmaxY=3.14844 +slcminZ=-50 +slcmaxZ=50 + + +[volume 5] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=5 +MaterialName=RockMaterial + +extminX=-7.5 +extmaxX=63.5 +extminY=0 +extmaxY=4 +extminZ=-35.5 +extmaxZ=35.5 + +slcminX=-4.60156 +slcmaxX=21.7969 +slcminY=0 +slcmaxY=3.14844 +slcminZ=-33.5 +slcmaxZ=33.5 + + +[volume 6] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=5 +MaterialName=RockMaterial + +extminX=-69 +extmaxX=2 +extminY=0 +extmaxY=4 +extminZ=-41 +extmaxZ=30 + +slcminX=-21.7969 +slcmaxX=-0.898438 +slcminY=0 +slcmaxY=3.14844 +slcminZ=-37 +slcmaxZ=25.5 + + +[COLLISION] +name=cn1_cv.sld +count=7 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/CN2_CV.SLD b/CONTENT/RP/SOLIDS/CN2_CV.SLD new file mode 100644 index 0000000..d2f0455 --- /dev/null +++ b/CONTENT/RP/SOLIDS/CN2_CV.SLD @@ -0,0 +1,134 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=25 +extmaxX=65 +extminY=0 +extmaxY=10.0469 +extminZ=-50 +extmaxZ=50 + +slcminX=25 +slcmaxX=65 +slcminY=0 +slcmaxY=10.0469 +slcminZ=-50 +slcmaxZ=50 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-65 +extmaxX=65 +extminY=-25 +extmaxY=0 +extminZ=-50 +extmaxZ=50 + +slcminX=-65 +slcmaxX=65 +slcminY=-25 +slcmaxY=0 +slcminZ=-50 +slcmaxZ=50 + + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-65 +extmaxX=-25 +extminY=0 +extmaxY=10.0469 +extminZ=-50 +extmaxZ=50 + +slcminX=-65 +slcmaxX=-25 +slcminY=0 +slcmaxY=10.0469 +slcminZ=-50 +slcmaxZ=50 + + +[volume 3] +TypeNumber=5 +TypeName=RampFacingNegativeXType +MaterialNumber=3 +MaterialName=SteelMaterial + +extminX=-25 +extmaxX=-21.8516 +extminY=0 +extmaxY=6.04688 +extminZ=-50 +extmaxZ=50 + +slcminX=-25 +slcmaxX=-21.8516 +slcminY=0 +slcmaxY=6.04688 +slcminZ=-50 +slcmaxZ=50 + + +[volume 4] +TypeNumber=7 +TypeName=RampFacingPositiveXType +MaterialNumber=3 +MaterialName=SteelMaterial + +extminX=21.8516 +extmaxX=25 +extminY=0 +extmaxY=6.04688 +extminZ=-50 +extmaxZ=50 + +slcminX=21.8516 +slcmaxX=25 +slcminY=0 +slcmaxY=6.04688 +slcminZ=-50 +slcmaxZ=50 + + +[volume 5] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-65 +extmaxX=65 +extminY=10.0469 +extmaxY=50.0469 +extminZ=-50 +extmaxZ=50 + +slcminX=-65 +slcmaxX=65 +slcminY=10.0469 +slcmaxY=50.0469 +slcminZ=-50 +slcmaxZ=50 + + +[COLLISION] +name=cn2_cv.sld +count=6 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/CN3U_CV.SLD b/CONTENT/RP/SOLIDS/CN3U_CV.SLD new file mode 100644 index 0000000..aec6baa --- /dev/null +++ b/CONTENT/RP/SOLIDS/CN3U_CV.SLD @@ -0,0 +1,48 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=10 +TypeName=InvertedRampFacingPositiveZType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminZ=19.5 +extmaxZ=44.5 +extminY=-50 +extmaxY=0 +extminX=47.5 +extmaxX=52.5 + +slcminZ=19.5 +slcmaxZ=44.5 +slcminY=-50 +slcmaxY=0 +slcminX=47.5 +slcmaxX=52.5 + +[volume 1] +TypeNumber=8 +TypeName=InvertedRampFacingNegativeZType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminZ=-44.5 +extmaxZ=-19.5 +extminY=-50 +extmaxY=0 +extminX=47.5 +extmaxX=52.5 + +slcminZ=-44.5 +slcmaxZ=-19.5 +slcminY=-50 +slcmaxY=0 +slcminX=47.5 +slcmaxX=52.5 + +[COLLISION] +name=cn3u_cv.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/CN3_CV.SLD b/CONTENT/RP/SOLIDS/CN3_CV.SLD new file mode 100644 index 0000000..837594b --- /dev/null +++ b/CONTENT/RP/SOLIDS/CN3_CV.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=7 +TypeName=RampFacingPositiveXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=19.5 +extmaxX=44.5 +extminY=0 +extmaxY=50 +extminZ=47.5 +extmaxZ=52.5 + +slcminX=19.5 +slcmaxX=44.5 +slcminY=0 +slcmaxY=50 +slcminZ=47.5 +slcmaxZ=52.5 + + +[volume 1] +TypeNumber=5 +TypeName=RampFacingNegativeXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-44.5 +extmaxX=-19.5 +extminY=0 +extmaxY=50 +extminZ=47.5 +extmaxZ=52.5 + +slcminX=-44.5 +slcmaxX=-19.5 +slcminY=0 +slcmaxY=50 +slcminZ=47.5 +slcmaxZ=52.5 + + +[COLLISION] +name=cn3_cv.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/CN4_CV.SLD b/CONTENT/RP/SOLIDS/CN4_CV.SLD new file mode 100644 index 0000000..2ba07a1 --- /dev/null +++ b/CONTENT/RP/SOLIDS/CN4_CV.SLD @@ -0,0 +1,134 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-21.8516 +extmaxX=21.8516 +extminY=-5 +extmaxY=0 +extminZ=-50 +extmaxZ=50 + +slcminX=-21.8516 +slcmaxX=21.8516 +slcminY=-5 +slcmaxY=0 +slcminZ=-50 +slcmaxZ=50 + + +[volume 1] +TypeNumber=5 +TypeName=RampFacingNegativeXType +MaterialNumber=3 +MaterialName=SteelMaterial + +extminX=-25 +extmaxX=-21.8516 +extminY=0 +extmaxY=6.04688 +extminZ=-50 +extmaxZ=50 + +slcminX=-25 +slcmaxX=-21.8516 +slcminY=0 +slcmaxY=6.04688 +slcminZ=-50 +slcmaxZ=50 + + +[volume 2] +TypeNumber=7 +TypeName=RampFacingPositiveXType +MaterialNumber=3 +MaterialName=SteelMaterial + +extminX=21.8516 +extmaxX=25 +extminY=0 +extmaxY=6.04688 +extminZ=-50 +extmaxZ=50 + +slcminX=21.8516 +slcmaxX=25 +slcminY=0 +slcmaxY=6.04688 +slcminZ=-50 +slcmaxZ=50 + + +[volume 3] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-26.3516 +extmaxX=26.3516 +extminY=10.0469 +extmaxY=20.0469 +extminZ=-50 +extmaxZ=50 + +slcminX=-26.3516 +slcmaxX=26.3516 +slcminY=10.0469 +slcmaxY=20.0469 +slcminZ=-50 +slcmaxZ=50 + + +[volume 4] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-26.3516 +extmaxX=-25 +extminY=6.04688 +extmaxY=10.0469 +extminZ=-50 +extmaxZ=50 + +slcminX=-26.3516 +slcmaxX=-25 +slcminY=6.04688 +slcmaxY=10.0469 +slcminZ=-50 +slcmaxZ=50 + + +[volume 5] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=25 +extmaxX=26.3516 +extminY=6.04688 +extmaxY=10.0469 +extminZ=-50 +extmaxZ=50 + +slcminX=25 +slcmaxX=26.3516 +slcminY=6.04688 +slcmaxY=10.0469 +slcminZ=-50 +slcmaxZ=50 + + +[COLLISION] +name=cn4_cv.sld +count=6 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/CN5U_CV.ORG b/CONTENT/RP/SOLIDS/CN5U_CV.ORG new file mode 100644 index 0000000..b284086 --- /dev/null +++ b/CONTENT/RP/SOLIDS/CN5U_CV.ORG @@ -0,0 +1,113 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminZ=-55 +extmaxZ=55 +extminY=-2 +extmaxY=10 +extminX=-55 +extmaxX=55 + +slcminZ=-55 +slcmaxZ=55 +slcminY=-2 +slcmaxY=10 +slcminX=-55 +slcmaxX=55 + +[volume 1] +TypeNumber=11 +TypeName=InvertedRampFacingPositiveXType +MaterialNumber=5 +MaterialName=RockMaterial + +extminZ=26.7969 +extmaxZ=53 +extminY=-49 +extmaxY=-3.14844 +extminX=-55 +extmaxX=55 + +slcminZ=26.7969 +slcmaxZ=53 +slcminY=-49 +slcmaxY=-3.14844 +slcminX=-55 +slcmaxX=55 + +[volume 2] +TypeNumber=9 +TypeName=InvertedRampFacingNegativeXType +MaterialNumber=5 +MaterialName=RockMaterial + +extminZ=-26.7969 +extmaxZ=-17 +extminY=-3.14844 +extmaxY=0 +extminX=-55 +extmaxX=55 + +slcminZ=-26.7969 +slcmaxZ=-17 +slcminY=-3.14844 +slcmaxY=0 +slcminX=-55 +slcmaxX=55 + + +[volume 3] +TypeNumber=9 +TypeName=InvertedRampFacingNegativeXType +MaterialNumber=5 +MaterialName=RockMaterial + +extminZ=-53 +extmaxZ=-26.7969 +extminY=-49 +extmaxY=-3.14844 +extminX=-55 +extmaxX=55 + +slcminZ=-53 +slcmaxZ=-26.7969 +slcminY=-49 +slcmaxY=-3.14844 +slcminX=-55 +slcmaxX=55 + + +[volume 4] +TypeNumber=11 +TypeName=InvertedRampFacingPositiveXType +MaterialNumber=5 +MaterialName=RockMaterial + +extminZ=17 +extmaxZ=26.7969 +extminY=-3.14844 +extmaxY=0 +extminX=-55 +extmaxX=55 + +slcminZ=17 +slcmaxZ=26.7969 +slcminY=-3.14844 +slcmaxY=0 +slcminX=-55 +slcmaxX=55 + + + + +[COLLISION] +name=cn5u_cv.sld +count=5 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/CN5U_CV.SLD b/CONTENT/RP/SOLIDS/CN5U_CV.SLD new file mode 100644 index 0000000..dc81471 --- /dev/null +++ b/CONTENT/RP/SOLIDS/CN5U_CV.SLD @@ -0,0 +1,113 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminZ=-55 +extmaxZ=55 +extminY=-2 +extmaxY=10 +extminX=-50 +extmaxX=50 + +slcminZ=-55 +slcmaxZ=55 +slcminY=-2 +slcmaxY=10 +slcminX=-50 +slcmaxX=50 + +[volume 1] +TypeNumber=10 +TypeName=InvertedRampFacingPositiveZType +MaterialNumber=5 +MaterialName=RockMaterial + +extminZ=26.7969 +extmaxZ=53 +extminY=-49 +extmaxY=-3.14844 +extminX=-50 +extmaxX=50 + +slcminZ=26.7969 +slcmaxZ=53 +slcminY=-49 +slcmaxY=-3.14844 +slcminX=-50 +slcmaxX=50 + +[volume 2] +TypeNumber=8 +TypeName=InvertedRampFacingNegativeZType +MaterialNumber=5 +MaterialName=RockMaterial + +extminZ=-26.7969 +extmaxZ=-17 +extminY=-3.14844 +extmaxY=0 +extminX=-50 +extmaxX=50 + +slcminZ=-26.7969 +slcmaxZ=-17 +slcminY=-3.14844 +slcmaxY=0 +slcminX=-50 +slcmaxX=50 + + +[volume 3] +TypeNumber=8 +TypeName=InvertedRampFacingNegativeZType +MaterialNumber=5 +MaterialName=RockMaterial + +extminZ=-53 +extmaxZ=-26.7969 +extminY=-49 +extmaxY=-3.14844 +extminX=-50 +extmaxX=50 + +slcminZ=-53 +slcmaxZ=-26.7969 +slcminY=-49 +slcmaxY=-3.14844 +slcminX=-50 +slcmaxX=50 + + +[volume 4] +TypeNumber=10 +TypeName=InvertedRampFacingPositiveZType +MaterialNumber=5 +MaterialName=RockMaterial + +extminZ=17 +extmaxZ=26.7969 +extminY=-3.14844 +extmaxY=0 +extminX=-50 +extmaxX=50 + +slcminZ=17 +slcmaxZ=26.7969 +slcminY=-3.14844 +slcmaxY=0 +slcminX=-50 +slcmaxX=50 + + + + +[COLLISION] +name=cn5u_cv.sld +count=5 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/CN5_CV.SLD b/CONTENT/RP/SOLIDS/CN5_CV.SLD new file mode 100644 index 0000000..7beaa63 --- /dev/null +++ b/CONTENT/RP/SOLIDS/CN5_CV.SLD @@ -0,0 +1,155 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=1 +MaterialName=GravelMaterial + +extminX=-17 +extmaxX=17 +extminY=-8.25 +extmaxY=0 +extminZ=-50 +extmaxZ=50 + +slcminX=-17 +slcmaxX=17 +slcminY=-8.25 +slcmaxY=0 +slcminZ=-50 +slcmaxZ=50 + + +[volume 1] +TypeNumber=5 +TypeName=RampFacingNegativeXType +MaterialNumber=5 +MaterialName=RockMaterial + +extminX=-21.7969 +extmaxX=-17 +extminY=0 +extmaxY=3.14844 +extminZ=-50 +extmaxZ=50 + +slcminX=-21.7969 +slcmaxX=-17 +slcminY=0 +slcmaxY=3.14844 +slcminZ=-50 +slcmaxZ=50 + + +[volume 2] +TypeNumber=5 +TypeName=RampFacingNegativeXType +MaterialNumber=5 +MaterialName=RockMaterial + +extminX=-48 +extmaxX=-21.7969 +extminY=3.14844 +extmaxY=49 +extminZ=-50 +extmaxZ=50 + +slcminX=-48 +slcmaxX=-21.7969 +slcminY=3.14844 +slcmaxY=49 +slcminZ=-50 +slcmaxZ=50 + + +[volume 3] +TypeNumber=7 +TypeName=RampFacingPositiveXType +MaterialNumber=5 +MaterialName=RockMaterial + +extminX=17 +extmaxX=21.7969 +extminY=0 +extmaxY=3.14844 +extminZ=-50 +extmaxZ=50 + +slcminX=17 +slcmaxX=21.7969 +slcminY=0 +slcmaxY=3.14844 +slcminZ=-50 +slcmaxZ=50 + + +[volume 4] +TypeNumber=7 +TypeName=RampFacingPositiveXType +MaterialNumber=5 +MaterialName=RockMaterial + +extminX=21.7969 +extmaxX=48 +extminY=3.14844 +extmaxY=49 +extminZ=-50 +extmaxZ=50 + +slcminX=21.7969 +slcmaxX=48 +slcminY=3.14844 +slcmaxY=49 +slcminZ=-50 +slcmaxZ=50 + + +[volume 5] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=5 +MaterialName=RockMaterial + +extminX=-7.5 +extmaxX=63.5 +extminY=0 +extmaxY=4 +extminZ=-35.5 +extmaxZ=35.5 + +slcminX=-4.60156 +slcmaxX=21.7969 +slcminY=0 +slcmaxY=3.14844 +slcminZ=-33.5 +slcmaxZ=33.5 + + +[volume 6] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=5 +MaterialName=RockMaterial + +extminX=-69 +extmaxX=2 +extminY=0 +extmaxY=4 +extminZ=-41 +extmaxZ=30 + +slcminX=-21.7969 +slcmaxX=-0.898438 +slcminY=0 +slcmaxY=3.14844 +slcminZ=-37 +slcmaxZ=25.5 + + +[COLLISION] +name=cn5_cv.sld +count=7 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/CN7U_CV.SLD b/CONTENT/RP/SOLIDS/CN7U_CV.SLD new file mode 100644 index 0000000..01c19c6 --- /dev/null +++ b/CONTENT/RP/SOLIDS/CN7U_CV.SLD @@ -0,0 +1,71 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=9 +TypeName=InvertedRampFacingNegativeXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminZ=20 +extmaxZ=44.5 +extminY=-50 +extmaxY=-1 +extminX=-50 +extmaxX=50 + +slcminZ=20 +slcmaxZ=44.5 +slcminY=-50 +slcmaxY=-1 +slcminX=-50 +slcmaxX=50 + + +[volume 1] +TypeNumber=11 +TypeName=InvertedRampFacingPositiveXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminZ=-44.5 +extmaxZ=-20 +extminY=-50 +extmaxY=-1 +extminX=-50 +extmaxX=50 + +slcminZ=-44.5 +slcmaxZ=-20 +slcminY=-50 +slcmaxY=-1 +slcminX=-50 +slcmaxX=50 + + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-55 +extmaxX=55 +extminY=-2 +extmaxY=10 +extminZ=-55 +extmaxZ=55 + +slcminX=-55 +slcmaxX=55 +slcminY=-2 +slcmaxY=10 +slcminZ=-55 +slcmaxZ=55 + + +[COLLISION] +name=cn7u_cv.sld +count=3 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/CN7_CV.SLD b/CONTENT/RP/SOLIDS/CN7_CV.SLD new file mode 100644 index 0000000..cdbacbd --- /dev/null +++ b/CONTENT/RP/SOLIDS/CN7_CV.SLD @@ -0,0 +1,71 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=7 +TypeName=RampFacingPositiveXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=20 +extmaxX=44.5 +extminY=1 +extmaxY=50 +extminZ=-50 +extmaxZ=50 + +slcminX=20 +slcmaxX=44.5 +slcminY=1 +slcmaxY=50 +slcminZ=-50 +slcmaxZ=50 + + +[volume 1] +TypeNumber=5 +TypeName=RampFacingNegativeXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-44.5 +extmaxX=-20 +extminY=1 +extmaxY=50 +extminZ=-50 +extmaxZ=50 + +slcminX=-44.5 +slcmaxX=-20 +slcminY=1 +slcmaxY=50 +slcminZ=-50 +slcmaxZ=50 + + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-20 +extmaxX=20 +extminY=0 +extmaxY=1 +extminZ=-50 +extmaxZ=50 + +slcminX=-20 +slcmaxX=20 +slcminY=0 +slcmaxY=1 +slcminZ=-50 +slcmaxZ=50 + + +[COLLISION] +name=cn7_cv.sld +count=3 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/CQ1_CV.SLD b/CONTENT/RP/SOLIDS/CQ1_CV.SLD new file mode 100644 index 0000000..28d9076 --- /dev/null +++ b/CONTENT/RP/SOLIDS/CQ1_CV.SLD @@ -0,0 +1,197 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=5 +TypeName=RampFacingNegativeXType +MaterialNumber=3 +MaterialName=SteelMaterial + +extminX=0.5 +extmaxX=5 +extminY=0 +extmaxY=1 +extminZ=-12.5 +extmaxZ=13 + +slcminX=0.5 +slcmaxX=5 +slcminY=0 +slcmaxY=1 +slcminZ=-12.5 +slcmaxZ=13 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=3 +MaterialName=SteelMaterial + +extminX=0.5 +extmaxX=5.5 +extminY=5.5 +extmaxY=10 +extminZ=-12.5 +extmaxZ=13 + +slcminX=0.5 +slcmaxX=5.5 +slcminY=5.5 +slcmaxY=10 +slcminZ=-12.5 +slcmaxZ=13 + + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=3 +MaterialName=SteelMaterial + +extminX=-5.5 +extmaxX=5.5 +extminY=0 +extmaxY=10 +extminZ=-28.5 +extmaxZ=-12.5 + +slcminX=-5.5 +slcmaxX=5.5 +slcminY=0 +slcmaxY=10 +slcminZ=-28.5 +slcmaxZ=-12.5 + + +[volume 3] +TypeNumber=8 +TypeName=InvertedRampFacingNegativeZType +MaterialNumber=3 +MaterialName=SteelMaterial + +extminX=0.5 +extmaxX=5 +extminY=1 +extmaxY=5.5 +extminZ=-12.5 +extmaxZ=-10.5 + +slcminX=0.5 +slcmaxX=5 +slcminY=1 +slcmaxY=5.5 +slcminZ=-12.5 +slcmaxZ=-10.5 + + +[volume 4] +TypeNumber=10 +TypeName=InvertedRampFacingPositiveZType +MaterialNumber=3 +MaterialName=SteelMaterial + +extminX=0.5 +extmaxX=5 +extminY=1 +extmaxY=5.5 +extminZ=10.75 +extmaxZ=13 + +slcminX=0.5 +slcmaxX=5 +slcminY=1 +slcmaxY=5.5 +slcminZ=10.75 +slcmaxZ=13 + + +[volume 5] +TypeNumber=13 +TypeName=WedgeFacingNegativeZAndNegativeXType +MaterialNumber=3 +MaterialName=SteelMaterial + +extminX=-2.5 +extmaxX=5.5 +extminY=0 +extmaxY=10 +extminZ=19 +extmaxZ=28.5 + +slcminX=-2.5 +slcmaxX=5.5 +slcminY=0 +slcmaxY=10 +slcminZ=19 +slcmaxZ=28.5 + + +[volume 6] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=3 +MaterialName=SteelMaterial + +extminX=-2.5 +extmaxX=0.5 +extminY=0 +extmaxY=10 +extminZ=-12.5 +extmaxZ=13 + +slcminX=-2.5 +slcmaxX=0.5 +slcminY=0 +slcmaxY=10 +slcminZ=-12.5 +slcmaxZ=13 + + +[volume 7] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=3 +MaterialName=SteelMaterial + +extminX=-5.5 +extmaxX=-2.5 +extminY=0 +extmaxY=10 +extminZ=-12.5 +extmaxZ=28.5 + +slcminX=-5.5 +slcmaxX=-2.5 +slcminY=0 +slcmaxY=10 +slcminZ=-12.5 +slcmaxZ=28.5 + + +[volume 8] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=3 +MaterialName=SteelMaterial + +extminX=-2.5 +extmaxX=5.5 +extminY=0 +extmaxY=10 +extminZ=13 +extmaxZ=19 + +slcminX=-2.5 +slcmaxX=5.5 +slcminY=0 +slcmaxY=10 +slcminZ=13 +slcmaxZ=19 + + +[COLLISION] +name=cq1_cv.sld +count=9 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/CQ2_CV.SLD b/CONTENT/RP/SOLIDS/CQ2_CV.SLD new file mode 100644 index 0000000..04f8107 --- /dev/null +++ b/CONTENT/RP/SOLIDS/CQ2_CV.SLD @@ -0,0 +1,71 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-87 +extmaxX=11 +extminY=14 +extmaxY=30 +extminZ=-34 +extmaxZ=34 + +slcminX=-87 +slcmaxX=11 +slcminY=14 +slcmaxY=30 +slcminZ=-34 +slcmaxZ=34 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-87 +extmaxX=7 +extminY=30 +extmaxY=34 +extminZ=-30 +extmaxZ=30 + +slcminX=-87 +slcmaxX=7 +slcminY=30 +slcmaxY=34 +slcminZ=-30 +slcmaxZ=30 + + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-87 +extmaxX=7 +extminY=10 +extmaxY=14 +extminZ=-30 +extmaxZ=30 + +slcminX=-87 +slcmaxX=7 +slcminY=10 +slcmaxY=14 +slcminZ=-30 +slcmaxZ=30 + + +[COLLISION] +name=cq2_cv.sld +count=3 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/CR2_CV.SLD b/CONTENT/RP/SOLIDS/CR2_CV.SLD new file mode 100644 index 0000000..989134f --- /dev/null +++ b/CONTENT/RP/SOLIDS/CR2_CV.SLD @@ -0,0 +1,386 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-15 +extmaxX=15 +extminY=3 +extmaxY=5 +extminZ=-50 +extmaxZ=50 + +slcminX=-15 +slcmaxX=15 +slcminY=3 +slcmaxY=5 +slcminZ=-50 +slcmaxZ=50 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=14 +extmaxX=15 +extminY=11 +extmaxY=14 +extminZ=-12.5 +extmaxZ=-10.5 + +slcminX=14 +slcmaxX=15 +slcminY=11 +slcmaxY=14 +slcminZ=-12.5 +slcmaxZ=-10.5 + + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=12 +extmaxX=15 +extminY=31 +extmaxY=35 +extminZ=1 +extmaxZ=7 + +slcminX=12 +slcmaxX=15 +slcminY=31 +slcmaxY=35 +slcminZ=1 +slcmaxZ=7 + + +[volume 3] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-17 +extmaxX=-15 +extminY=5 +extmaxY=45 +extminZ=-50 +extmaxZ=50 + +slcminX=-17 +slcmaxX=-15 +slcminY=5 +slcmaxY=45 +slcminZ=-50 +slcmaxZ=50 + + +[volume 4] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-15 +extmaxX=15 +extminY=45 +extmaxY=47 +extminZ=-50 +extmaxZ=50 + +slcminX=-15 +slcmaxX=15 +slcminY=45 +slcmaxY=47 +slcminZ=-50 +slcmaxZ=50 + + +[volume 5] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=15 +extmaxX=17 +extminY=5 +extmaxY=45 +extminZ=-50 +extmaxZ=50 + +slcminX=15 +slcmaxX=17 +slcminY=5 +slcmaxY=45 +slcminZ=-50 +slcmaxZ=50 + + +[volume 6] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=3 +MaterialName=SteelMaterial + +extminX=11 +extmaxX=15 +extminY=5 +extmaxY=20.5 +extminZ=-37 +extmaxZ=-31 + +slcminX=11 +slcmaxX=15 +slcminY=5 +slcmaxY=20.5 +slcminZ=-37 +slcmaxZ=-31 + + +[volume 7] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=3 +MaterialName=SteelMaterial + +extminX=14 +extmaxX=15 +extminY=7.5 +extmaxY=10.5 +extminZ=-31 +extmaxZ=36 + +slcminX=14 +slcmaxX=15 +slcminY=7.5 +slcmaxY=10.5 +slcminZ=-31 +slcmaxZ=36 + + +[volume 8] +TypeNumber=12 +TypeName=WedgeFacingNegativeZAndPositiveXType +MaterialNumber=3 +MaterialName=SteelMaterial + +extminX=11 +extmaxX=15 +extminY=5 +extmaxY=17 +extminZ=39 +extmaxZ=40 + +slcminX=11 +slcmaxX=15 +slcminY=5 +slcmaxY=17 +slcminZ=39 +slcmaxZ=40 + + +[volume 9] +TypeNumber=15 +TypeName=WedgeFacingPositiveZAndPositiveXType +MaterialNumber=3 +MaterialName=SteelMaterial + +extminX=11 +extmaxX=15 +extminY=5 +extmaxY=17 +extminZ=36 +extmaxZ=37 + +slcminX=11 +slcmaxX=15 +slcminY=5 +slcmaxY=17 +slcminZ=36 +slcmaxZ=37 + + +[volume 10] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=3 +MaterialName=SteelMaterial + +extminX=11 +extmaxX=15 +extminY=5 +extmaxY=17 +extminZ=37 +extmaxZ=39 + +slcminX=11 +slcmaxX=15 +slcminY=5 +slcmaxY=17 +slcminZ=37 +slcmaxZ=39 + + +[volume 11] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=3 +MaterialName=SteelMaterial + +extminX=9 +extmaxX=15 +extminY=17 +extmaxY=22 +extminZ=35 +extmaxZ=41 + +slcminX=9 +slcmaxX=15 +slcminY=17 +slcmaxY=22 +slcminZ=35 +slcmaxZ=41 + + +[volume 12] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=3 +MaterialName=SteelMaterial + +extminX=-15 +extmaxX=15 +extminY=20.5 +extmaxY=30.5 +extminZ=-38.5 +extmaxZ=-29.5 + +slcminX=-15 +slcmaxX=15 +slcminY=20.5 +slcmaxY=30.5 +slcminZ=-38.5 +slcmaxZ=-29.5 + + +[volume 13] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=3 +MaterialName=SteelMaterial + +extminX=-15 +extmaxX=12 +extminY=31.5 +extmaxY=34.5 +extminZ=1.5 +extmaxZ=4.5 + +slcminX=-15 +slcmaxX=12 +slcminY=31.5 +slcmaxY=34.5 +slcminZ=1.5 +slcmaxZ=4.5 + + +[volume 14] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=3 +MaterialName=SteelMaterial + +extminX=-15 +extmaxX=9 +extminY=18 +extmaxY=21 +extminZ=36.5 +extmaxZ=40.5 + +slcminX=-15 +slcmaxX=9 +slcminY=18 +slcmaxY=21 +slcminZ=36.5 +slcmaxZ=40.5 + + +[volume 15] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=3 +MaterialName=SteelMaterial + +extminX=-20 +extmaxX=-8 +extminY=5 +extmaxY=13 +extminZ=12 +extmaxZ=24 + +slcminX=-20 +slcmaxX=-8 +slcminY=5 +slcmaxY=13 +slcminZ=12 +slcmaxZ=24 + + +[volume 16] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=3 +MaterialName=SteelMaterial + +extminX=-26 +extmaxX=-2 +extminY=13 +extmaxY=19 +extminZ=6 +extmaxZ=30 + +slcminX=-26 +slcmaxX=-2 +slcminY=13 +slcmaxY=19 +slcminZ=6 +slcmaxZ=30 + + +[volume 17] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=3 +MaterialName=SteelMaterial + +extminX=-23 +extmaxX=-8 +extminY=19 +extmaxY=45 +extminZ=10.5 +extmaxZ=25.5 + +slcminX=-23 +slcmaxX=-8 +slcminY=19 +slcmaxY=45 +slcminZ=10.5 +slcmaxZ=25.5 + + +[COLLISION] +name=cr2_cv.sld +count=18 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/CR4_CV.SLD b/CONTENT/RP/SOLIDS/CR4_CV.SLD new file mode 100644 index 0000000..bba0e9a --- /dev/null +++ b/CONTENT/RP/SOLIDS/CR4_CV.SLD @@ -0,0 +1,92 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-15 +extmaxX=15 +extminY=3 +extmaxY=5 +extminZ=-50 +extmaxZ=50 + +slcminX=-15 +slcmaxX=15 +slcminY=3 +slcmaxY=5 +slcminZ=-50 +slcmaxZ=50 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-15 +extmaxX=15 +extminY=45 +extmaxY=47 +extminZ=-50 +extmaxZ=50 + +slcminX=-15 +slcmaxX=15 +slcminY=45 +slcmaxY=47 +slcminZ=-50 +slcmaxZ=50 + + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=15 +extmaxX=17 +extminY=5 +extmaxY=45 +extminZ=-50 +extmaxZ=50 + +slcminX=15 +slcmaxX=17 +slcminY=5 +slcmaxY=45 +slcminZ=-50 +slcmaxZ=50 + + +[volume 3] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-17 +extmaxX=-15 +extminY=5 +extmaxY=45 +extminZ=-50 +extmaxZ=50 + +slcminX=-17 +slcmaxX=-15 +slcminY=5 +slcmaxY=45 +slcminZ=-50 +slcmaxZ=50 + + +[COLLISION] +name=cr4_cv.sld +count=4 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/CR5U_CV.SLD b/CONTENT/RP/SOLIDS/CR5U_CV.SLD new file mode 100644 index 0000000..507c10d --- /dev/null +++ b/CONTENT/RP/SOLIDS/CR5U_CV.SLD @@ -0,0 +1,92 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=15 +TypeName=WedgeFacingPositiveZAndPositiveXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=15 +extmaxX=20 +extminY=5 +extmaxY=45 +extminZ=-50 +extmaxZ=50 + +slcminX=15 +slcmaxX=20 +slcminY=5 +slcmaxY=45 +slcminZ=-50 +slcmaxZ=50 + + +[volume 1] +TypeNumber=14 +TypeName=WedgeFacingPositiveZAndNegativeXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-20 +extmaxX=-15 +extminY=5 +extmaxY=45 +extminZ=-50 +extmaxZ=50 + +slcminX=-20 +slcmaxX=-15 +slcminY=5 +slcmaxY=45 +slcminZ=-50 +slcmaxZ=50 + + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-20 +extmaxX=20 +extminY=3 +extmaxY=5 +extminZ=-50 +extmaxZ=50 + +slcminX=-20 +slcmaxX=20 +slcminY=3 +slcmaxY=5 +slcminZ=-50 +slcmaxZ=50 + + +[volume 3] +TypeNumber=8 +TypeName=InvertedRampFacingNegativeZType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-20 +extmaxX=20 +extminY=15 +extmaxY=45 +extminZ=-50 +extmaxZ=50 + +slcminX=-20 +slcmaxX=20 +slcminY=15 +slcmaxY=45 +slcminZ=-50 +slcmaxZ=50 + + +[COLLISION] +name=cr5u_cv.sld +count=4 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/CR5_CV.SLD b/CONTENT/RP/SOLIDS/CR5_CV.SLD new file mode 100644 index 0000000..87a621c --- /dev/null +++ b/CONTENT/RP/SOLIDS/CR5_CV.SLD @@ -0,0 +1,92 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=15 +TypeName=WedgeFacingPositiveZAndPositiveXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=15 +extmaxX=20 +extminY=5 +extmaxY=45 +extminZ=-50 +extmaxZ=50 + +slcminX=15 +slcmaxX=20 +slcminY=5 +slcmaxY=45 +slcminZ=-50 +slcmaxZ=50 + + +[volume 1] +TypeNumber=14 +TypeName=WedgeFacingPositiveZAndNegativeXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-20 +extmaxX=-15 +extminY=5 +extmaxY=45 +extminZ=-50 +extmaxZ=50 + +slcminX=-20 +slcmaxX=-15 +slcminY=5 +slcmaxY=45 +slcminZ=-50 +slcmaxZ=50 + + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-20 +extmaxX=20 +extminY=45 +extmaxY=47 +extminZ=-50 +extmaxZ=50 + +slcminX=-20 +slcmaxX=20 +slcminY=45 +slcmaxY=47 +slcminZ=-50 +slcmaxZ=50 + + +[volume 3] +TypeNumber=4 +TypeName=RampFacingNegativeZType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-20 +extmaxX=20 +extminY=5 +extmaxY=35 +extminZ=-50 +extmaxZ=50 + +slcminX=-20 +slcmaxX=20 +slcminY=5 +slcmaxY=35 +slcminZ=-50 +slcmaxZ=50 + + +[COLLISION] +name=cr5_cv.sld +count=4 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/CR6_CV.SLD b/CONTENT/RP/SOLIDS/CR6_CV.SLD new file mode 100644 index 0000000..61d0c58 --- /dev/null +++ b/CONTENT/RP/SOLIDS/CR6_CV.SLD @@ -0,0 +1,92 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-20 +extmaxX=20 +extminY=10 +extmaxY=15 +extminZ=-100 +extmaxZ=100 + +slcminX=-20 +slcmaxX=20 +slcminY=10 +slcmaxY=15 +slcminZ=-100 +slcmaxZ=100 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-20 +extmaxX=20 +extminY=-5 +extmaxY=0 +extminZ=-100 +extmaxZ=100 + +slcminX=-20 +slcmaxX=20 +slcminY=-5 +slcmaxY=0 +slcminZ=-100 +slcmaxZ=100 + + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-22.2969 +extmaxX=-20 +extminY=0 +extmaxY=10 +extminZ=-100 +extmaxZ=100 + +slcminX=-22.2969 +slcmaxX=-20 +slcminY=0 +slcmaxY=10 +slcminZ=-100 +slcmaxZ=100 + + +[volume 3] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=20 +extmaxX=22.2969 +extminY=0 +extmaxY=10 +extminZ=-100 +extmaxZ=100 + +slcminX=20 +slcmaxX=22.2969 +slcminY=0 +slcmaxY=10 +slcminZ=-100 +slcmaxZ=100 + + +[COLLISION] +name=cr6_cv.sld +count=4 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/CR8_CV.SLD b/CONTENT/RP/SOLIDS/CR8_CV.SLD new file mode 100644 index 0000000..f431279 --- /dev/null +++ b/CONTENT/RP/SOLIDS/CR8_CV.SLD @@ -0,0 +1,92 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-22.5 +extmaxX=22.5 +extminY=3 +extmaxY=5 +extminZ=-50 +extmaxZ=50 + +slcminX=-22.5 +slcmaxX=22.5 +slcminY=3 +slcmaxY=5 +slcminZ=-50 +slcmaxZ=50 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-22.5 +extmaxX=22.5 +extminY=45 +extmaxY=47 +extminZ=-50 +extmaxZ=50 + +slcminX=-22.5 +slcmaxX=22.5 +slcminY=45 +slcmaxY=47 +slcminZ=-50 +slcmaxZ=50 + + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=22.5 +extmaxX=25.5 +extminY=5 +extmaxY=45 +extminZ=-50 +extmaxZ=50 + +slcminX=22.5 +slcmaxX=25.5 +slcminY=5 +slcmaxY=45 +slcminZ=-50 +slcmaxZ=50 + + +[volume 3] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-25.5 +extmaxX=-22.5 +extminY=5 +extmaxY=45 +extminZ=-50 +extmaxZ=50 + +slcminX=-25.5 +slcmaxX=-22.5 +slcminY=5 +slcmaxY=45 +slcminZ=-50 +slcmaxZ=50 + + +[COLLISION] +name=cr8_cv.sld +count=4 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/CRE_CV.SLD b/CONTENT/RP/SOLIDS/CRE_CV.SLD new file mode 100644 index 0000000..814d9cf --- /dev/null +++ b/CONTENT/RP/SOLIDS/CRE_CV.SLD @@ -0,0 +1,239 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-9 +extmaxX=9 +extminY=45 +extmaxY=50 +extminZ=-25 +extmaxZ=25 + +slcminX=-9 +slcmaxX=9 +slcminY=45 +slcmaxY=50 +slcminZ=-25 +slcmaxZ=25 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-50 +extmaxX=-25 +extminY=46 +extmaxY=49 +extminZ=25 +extmaxZ=28 + +slcminX=-50 +slcmaxX=-25 +slcminY=46 +slcmaxY=49 +slcminZ=25 +slcmaxZ=28 + + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-25 +extmaxX=-7 +extminY=46 +extmaxY=47 +extminZ=25 +extmaxZ=27 + +slcminX=-25 +slcmaxX=-7 +slcminY=46 +slcmaxY=47 +slcminZ=25 +slcmaxZ=27 + + +[volume 3] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-50 +extmaxX=-25 +extminY=0 +extmaxY=50 +extminZ=20 +extmaxZ=25 + +slcminX=-50 +slcmaxX=-25 +slcminY=0 +slcmaxY=50 +slcminZ=20 +slcmaxZ=25 + + +[volume 4] +TypeNumber=4 +TypeName=RampFacingNegativeZType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-25 +extmaxX=25 +extminY=0 +extmaxY=5 +extminZ=-25 +extmaxZ=25 + +slcminX=-25 +slcmaxX=25 +slcminY=0 +slcmaxY=5 +slcminZ=-25 +slcmaxZ=25 + + +[volume 5] +TypeNumber=13 +TypeName=WedgeFacingNegativeZAndNegativeXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-25 +extmaxX=-15 +extminY=0 +extmaxY=50 +extminZ=-25 +extmaxZ=25 + +slcminX=-25 +slcmaxX=-15 +slcminY=0 +slcmaxY=50 +slcminZ=-25 +slcmaxZ=25 + + +[volume 6] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=25 +extmaxX=50 +extminY=0 +extmaxY=50 +extminZ=20 +extmaxZ=25 + +slcminX=25 +slcmaxX=50 +slcminY=0 +slcmaxY=50 +slcminZ=20 +slcmaxZ=25 + + +[volume 7] +TypeNumber=12 +TypeName=WedgeFacingNegativeZAndPositiveXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=15 +extmaxX=25 +extminY=0 +extmaxY=50 +extminZ=-25 +extmaxZ=25 + +slcminX=15 +slcmaxX=25 +slcminY=0 +slcmaxY=50 +slcminZ=-25 +slcmaxZ=25 + + +[volume 8] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=20 +extmaxX=25 +extminY=32 +extmaxY=39 +extminZ=1 +extmaxZ=25 + +slcminX=20 +slcmaxX=25 +slcminY=32 +slcmaxY=39 +slcminZ=1 +slcmaxZ=25 + + +[volume 9] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-25 +extmaxX=-20 +extminY=32 +extmaxY=39 +extminZ=1 +extmaxZ=25 + +slcminX=-25 +slcmaxX=-20 +slcminY=32 +slcmaxY=39 +slcminZ=1 +slcmaxZ=25 + + +[volume 10] +TypeNumber=8 +TypeName=InvertedRampFacingNegativeZType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-25 +extmaxX=25 +extminY=45 +extmaxY=50 +extminZ=-25 +extmaxZ=25 + +slcminX=-25 +slcmaxX=25 +slcminY=45 +slcmaxY=50 +slcminZ=-25 +slcmaxZ=25 + + +[COLLISION] +name=cre_cv.sld +count=11 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/CRP_CV.SLD b/CONTENT/RP/SOLIDS/CRP_CV.SLD new file mode 100644 index 0000000..ec6534d --- /dev/null +++ b/CONTENT/RP/SOLIDS/CRP_CV.SLD @@ -0,0 +1,302 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=3 +MaterialName=SteelMaterial + +extminX=0.351562 +extmaxX=2.35156 +extminY=17 +extmaxY=17.4531 +extminZ=7.5 +extmaxZ=26.5 + +slcminX=0.351562 +slcmaxX=2.35156 +slcminY=17 +slcmaxY=17.4531 +slcminZ=7.5 +slcmaxZ=26.5 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=3 +MaterialName=SteelMaterial + +extminX=-0.5 +extmaxX=5.5 +extminY=17 +extmaxY=17.4531 +extminZ=3 +extmaxZ=7.5 + +slcminX=-0.5 +slcmaxX=5.5 +slcminY=17 +slcmaxY=17.4531 +slcminZ=3 +slcmaxZ=7.5 + + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=3 +MaterialName=SteelMaterial + +extminX=2.54688 +extmaxX=4.95312 +extminY=17.4531 +extmaxY=29.0469 +extminZ=4 +extmaxZ=5.70312 + +slcminX=2.54688 +slcmaxX=4.95312 +slcminY=17.4531 +slcmaxY=29.0469 +slcminZ=4 +slcmaxZ=5.70312 + + +[volume 3] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=3 +MaterialName=SteelMaterial + +extminX=-6.14844 +extmaxX=5.85156 +extminY=17 +extmaxY=17.4531 +extminZ=26.5 +extmaxZ=34.5 + +slcminX=-6.14844 +slcmaxX=5.85156 +slcminY=17 +slcmaxY=17.4531 +slcminZ=26.5 +slcmaxZ=34.5 + + +[volume 4] +TypeNumber=11 +TypeName=InvertedRampFacingPositiveXType +MaterialNumber=3 +MaterialName=SteelMaterial + +extminX=-1 +extmaxX=2.5 +extminY=14 +extmaxY=17 +extminZ=3 +extmaxZ=7 + +slcminX=-1 +slcmaxX=2.5 +slcminY=14 +slcmaxY=17 +slcminZ=3 +slcmaxZ=7 + + +[volume 5] +TypeNumber=11 +TypeName=InvertedRampFacingPositiveXType +MaterialNumber=3 +MaterialName=SteelMaterial + +extminX=-1 +extmaxX=2.5 +extminY=14 +extmaxY=17 +extminZ=16.5 +extmaxZ=18.5 + +slcminX=-1 +slcmaxX=2.5 +slcminY=14 +slcmaxY=17 +slcminZ=16.5 +slcmaxZ=18.5 + + +[volume 6] +TypeNumber=11 +TypeName=InvertedRampFacingPositiveXType +MaterialNumber=3 +MaterialName=SteelMaterial + +extminX=-1 +extmaxX=2.5 +extminY=14 +extmaxY=17 +extminZ=27.5 +extmaxZ=32 + +slcminX=-1 +slcmaxX=2.5 +slcminY=14 +slcmaxY=17 +slcminZ=27.5 +slcmaxZ=32 + + +[volume 7] +TypeNumber=9 +TypeName=InvertedRampFacingNegativeXType +MaterialNumber=3 +MaterialName=SteelMaterial + +extminX=2.5 +extmaxX=5.84375 +extminY=14 +extmaxY=17 +extminZ=27.5 +extmaxZ=32 + +slcminX=2.5 +slcmaxX=5.84375 +slcminY=14 +slcmaxY=17 +slcminZ=27.5 +slcmaxZ=32 + + +[volume 8] +TypeNumber=9 +TypeName=InvertedRampFacingNegativeXType +MaterialNumber=3 +MaterialName=SteelMaterial + +extminX=2.5 +extmaxX=5.84375 +extminY=14 +extmaxY=17 +extminZ=16.5 +extmaxZ=18.5 + +slcminX=2.5 +slcmaxX=5.84375 +slcminY=14 +slcmaxY=17 +slcminZ=16.5 +slcmaxZ=18.5 + + +[volume 9] +TypeNumber=9 +TypeName=InvertedRampFacingNegativeXType +MaterialNumber=3 +MaterialName=SteelMaterial + +extminX=2.5 +extmaxX=5.84375 +extminY=14 +extmaxY=17 +extminZ=3 +extmaxZ=7 + +slcminX=2.5 +slcmaxX=5.84375 +slcminY=14 +slcmaxY=17 +slcminZ=3 +slcmaxZ=7 + + +[volume 10] +TypeNumber=18 +TypeName=ZAxisCylinderType +MaterialNumber=3 +MaterialName=SteelMaterial + +extminX=-0.5 +extmaxX=5.5 +extminY=10.5 +extmaxY=16.5 +extminZ=-38 +extmaxZ=44 + +slcminX=-0.5 +slcmaxX=5.5 +slcminY=10.5 +slcmaxY=16.5 +slcminZ=-38 +slcmaxZ=44 + + +[volume 11] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=3 +MaterialName=SteelMaterial + +extminX=-0.5 +extmaxX=5.5 +extminY=5 +extmaxY=45 +extminZ=41 +extmaxZ=47 + +slcminX=-0.5 +slcmaxX=5.5 +slcminY=5 +slcmaxY=45 +slcminZ=41 +slcmaxZ=47 + + +[volume 12] +TypeNumber=16 +TypeName=XAxisCylinderType +MaterialNumber=3 +MaterialName=SteelMaterial + +extminX=-15 +extmaxX=15 +extminY=10.5 +extmaxY=16.5 +extminZ=-41 +extmaxZ=-35 + +slcminX=-15 +slcmaxX=15 +slcminY=10.5 +slcmaxY=16.5 +slcminZ=-41 +slcmaxZ=-35 + + +[volume 13] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=3 +MaterialName=SteelMaterial + +extminX=-25 +extmaxX=15 +extminY=29 +extmaxY=34 +extminZ=-1 +extmaxZ=4 + +slcminX=-25 +slcmaxX=15 +slcminY=29 +slcmaxY=34 +slcminZ=-1 +slcmaxZ=4 + + +[COLLISION] +name=crp_cv.sld +count=14 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/CT1_CV.SLD b/CONTENT/RP/SOLIDS/CT1_CV.SLD new file mode 100644 index 0000000..30df282 --- /dev/null +++ b/CONTENT/RP/SOLIDS/CT1_CV.SLD @@ -0,0 +1,197 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-15.0469 +extmaxX=-4.25 +extminY=6.25 +extmaxY=7.89844 +extminZ=-1.89844 +extmaxZ=1.85156 + +slcminX=-15.0469 +slcmaxX=-4.25 +slcminY=6.25 +slcmaxY=7.89844 +slcminZ=-1.89844 +slcmaxZ=1.85156 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-15.0469 +extmaxX=-12.4531 +extminY=0 +extmaxY=6.25 +extminZ=-1.89844 +extmaxZ=1.85156 + +slcminX=-15.0469 +slcmaxX=-12.4531 +slcminY=0 +slcmaxY=6.25 +slcminZ=-1.89844 +slcmaxZ=1.85156 + + +[volume 2] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-4.70312 +extmaxX=4.70312 +extminY=6.25 +extmaxY=7.89844 +extminZ=-4.70312 +extmaxZ=4.70312 + +slcminX=-4.25 +slcmaxX=3.89844 +slcminY=6.25 +slcmaxY=7.89844 +slcminZ=-4.70312 +slcmaxZ=4.70312 + + +[volume 3] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=3 +MaterialName=SteelMaterial + +extminX=-2.60156 +extmaxX=3.89844 +extminY=0 +extmaxY=6.25 +extminZ=-3.75 +extmaxZ=2.95312 + +slcminX=-2.60156 +slcmaxX=3.89844 +slcminY=0 +slcmaxY=6.25 +slcminZ=-3.75 +slcmaxZ=2.95312 + + +[volume 4] +TypeNumber=5 +TypeName=RampFacingNegativeXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=7.5 +extmaxX=9.75 +extminY=0 +extmaxY=7.89844 +extminZ=-2.39844 +extmaxZ=2.45312 + +slcminX=7.5 +slcmaxX=9.75 +slcminY=0 +slcmaxY=7.89844 +slcminZ=-2.39844 +slcmaxZ=2.45312 + + +[volume 5] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=3.89844 +extmaxX=7.5 +extminY=0 +extmaxY=7.89844 +extminZ=-2.39844 +extmaxZ=2.45312 + +slcminX=3.89844 +slcmaxX=7.5 +slcminY=0 +slcmaxY=7.89844 +slcminZ=-2.39844 +slcmaxZ=2.45312 + + +[volume 6] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=3 +MaterialName=SteelMaterial + +extminX=-3.75 +extmaxX=-2.29688 +extminY=7.89844 +extmaxY=9.89844 +extminZ=-0.5 +extmaxZ=0.453125 + +slcminX=-3.75 +slcmaxX=-2.29688 +slcminY=7.89844 +slcmaxY=9.89844 +slcminZ=-0.5 +slcmaxZ=0.453125 + + +[volume 7] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=3 +MaterialName=SteelMaterial + +extminX=-2.42188 +extmaxX=2.42188 +extminY=7.89844 +extmaxY=39.5 +extminZ=-2.42188 +extmaxZ=2.42188 + +slcminX=-2.42188 +slcmaxX=2.42188 +slcminY=7.89844 +slcmaxY=39.5 +slcminZ=-2.42188 +slcmaxZ=2.42188 + + +[volume 8] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=3 +MaterialName=SteelMaterial + +extminX=0 +extmaxX=0.953125 +extminY=15.2031 +extmaxY=26.1016 +extminZ=2.20312 +extmaxZ=3.20312 + +slcminX=0 +slcmaxX=0.953125 +slcminY=15.2031 +slcmaxY=26.1016 +slcminZ=2.20312 +slcmaxZ=3.20312 + + +[COLLISION] +name=ct1_cv.sld +count=9 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/D45.XST b/CONTENT/RP/SOLIDS/D45.XST new file mode 100644 index 0000000..6d37c4d --- /dev/null +++ b/CONTENT/RP/SOLIDS/D45.XST @@ -0,0 +1,17 @@ +[LAB_ONLY] + +[extent 0] +extminX=-150 +extmaxX=150 +extminY=-5 +extmaxY=50 +extminZ=-3480 +extmaxZ=3480 + + +[COLLISION] +name=d45.xst +count=0 +extentcount=1 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/D45_CV.SLD b/CONTENT/RP/SOLIDS/D45_CV.SLD new file mode 100644 index 0000000..22ad7f6 --- /dev/null +++ b/CONTENT/RP/SOLIDS/D45_CV.SLD @@ -0,0 +1,129 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-26.3516 +extmaxX=112.4986 +extminY=-5 +extmaxY=0 +extminZ=0 +extmaxZ=107.9774 + +slcminX=-26.3516 +slcmaxX=112.4986 +slcminY=-5 +slcmaxY=0 +slcminZ=0 +slcmaxZ=107.9774 + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-26.3516 +extmaxX=112.4986 +extminY=10.0469 +extmaxY=20.0469 +extminZ=0 +extmaxZ=107.9774 + +slcminX=-26.3516 +slcmaxX=112.4986 +slcminY=10.0469 +slcmaxY=20.0469 +slcminZ=0 +slcmaxZ=107.9774 + +[volume 2] +TypeNumber=14 +TypeName=WedgeFacingPositiveZandNegativeXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-26.3516 +extmaxX=-10.9151 +extminY=0 +extmaxY=10.0469 +extminZ=0 +extmaxZ=37.2667 + +slcminX=-26.3516 +slcmaxX=-10.9151 +slcminY=0 +slcmaxY=10.0469 +slcminZ=0 +slcmaxZ=37.2667 + +[volume 3] +TypeNumber=14 +TypeName=WedgeFacingPositiveZandNegativeXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-10.9151 +extmaxX=59.7954 +extminY=0 +extmaxY=10.0469 +extminZ=37.2667 +extmaxZ=107.9774 + +slcminX=-10.9151 +slcmaxX=59.7954 +slcminY=0 +slcmaxY=10.0469 +slcminZ=37.2667 +slcmaxZ=107.9774 + +[volume 4] +TypeNumber=12 +TypeName=WedgeFacingNegativeZandPositiveXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=26.3516 +extmaxX=97.0622 +extminY=0 +extmaxY=10.0469 +extminZ=0 +extmaxZ=70.7106 + +slcminX=26.3516 +slcmaxX=97.0622 +slcminY=0 +slcmaxY=10.0469 +slcminZ=0 +slcmaxZ=70.7106 + +[volume 5] +TypeNumber=12 +TypeName=WedgeFacingNegativeZandPositiveXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=97.0622 +extmaxX=112.4986 +extminY=0 +extmaxY=10.0469 +extminZ=70.7106 +extmaxZ=107.9774 + +slcminX=97.0622 +slcmaxX=112.4986 +slcminY=0 +slcmaxY=10.0469 +slcminZ=70.7106 +slcmaxZ=107.9774 + + +[COLLISION] +name=d45_cv.sld +count=6 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/DR1_CV.SLD b/CONTENT/RP/SOLIDS/DR1_CV.SLD new file mode 100644 index 0000000..b4e8f91 --- /dev/null +++ b/CONTENT/RP/SOLIDS/DR1_CV.SLD @@ -0,0 +1,134 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=5 +TypeName=RampFacingNegativeXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2 +extmaxX=3 +extminY=16.5 +extmaxY=21.5 +extminZ=-4.5 +extmaxZ=4.5 + +slcminX=-2 +slcmaxX=3 +slcminY=16.5 +slcmaxY=21.5 +slcminZ=-4.5 +slcmaxZ=4.5 + + +[volume 1] +TypeNumber=9 +TypeName=InvertedRampFacingNegativeXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2 +extmaxX=3 +extminY=33.5 +extmaxY=38.5 +extminZ=-4.5 +extmaxZ=4.5 + +slcminX=-2 +slcmaxX=3 +slcminY=33.5 +slcmaxY=38.5 +slcminZ=-4.5 +slcmaxZ=4.5 + + +[volume 2] +TypeNumber=5 +TypeName=RampFacingNegativeXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2 +extmaxX=3 +extminY=49.5 +extmaxY=54.6016 +extminZ=-4.5 +extmaxZ=4.5 + +slcminX=-2 +slcmaxX=3 +slcminY=49.5 +slcmaxY=54.6016 +slcminZ=-4.5 +slcmaxZ=4.5 + + +[volume 3] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2 +extmaxX=3 +extminY=38.5 +extmaxY=49.5 +extminZ=-4.5 +extmaxZ=4.5 + +slcminX=-2 +slcmaxX=3 +slcminY=38.5 +slcmaxY=49.5 +slcminZ=-4.5 +slcmaxZ=4.5 + + +[volume 4] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-25 +extmaxX=-2 +extminY=3.5 +extmaxY=54.6016 +extminZ=-4.5 +extmaxZ=4.5 + +slcminX=-25 +slcmaxX=-2 +slcminY=3.5 +slcmaxY=54.6016 +slcminZ=-4.5 +slcmaxZ=4.5 + + +[volume 5] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2 +extmaxX=3 +extminY=3.5 +extmaxY=16.5 +extminZ=-4.5 +extmaxZ=4.5 + +slcminX=-2 +slcmaxX=3 +slcminY=3.5 +slcmaxY=16.5 +slcminZ=-4.5 +slcmaxZ=4.5 + + +[COLLISION] +name=dr1_cv.sld +count=6 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/DR2_CV.SLD b/CONTENT/RP/SOLIDS/DR2_CV.SLD new file mode 100644 index 0000000..0a702c0 --- /dev/null +++ b/CONTENT/RP/SOLIDS/DR2_CV.SLD @@ -0,0 +1,176 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-4.10156 +extmaxX=25 +extminY=3.5 +extmaxY=54.5 +extminZ=-1.54688 +extmaxZ=1.54688 + +slcminX=-4.10156 +slcmaxX=25 +slcminY=3.5 +slcmaxY=54.5 +slcminZ=-1.54688 +slcmaxZ=1.54688 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-7 +extmaxX=-4.10156 +extminY=20.2031 +extmaxY=34.7969 +extminZ=-1.54688 +extmaxZ=1.54688 + +slcminX=-7 +slcmaxX=-4.10156 +slcminY=20.2031 +slcmaxY=34.7969 +slcminZ=-1.54688 +slcmaxZ=1.54688 + + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=2.98438 +extmaxX=7.78125 +extminY=41.5391 +extmaxY=46.5391 +extminZ=1.55469 +extmaxZ=4.21094 + +slcminX=2.98438 +slcmaxX=7.78125 +slcminY=41.5391 +slcmaxY=46.5391 +slcminZ=1.55469 +slcmaxZ=4.21094 + + +[volume 3] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=2.98438 +extmaxX=7.78125 +extminY=7.49219 +extmaxY=12.4922 +extminZ=1.55469 +extmaxZ=4.21094 + +slcminX=2.98438 +slcmaxX=7.78125 +slcminY=7.49219 +slcmaxY=12.4922 +slcminZ=1.55469 +slcmaxZ=4.21094 + + +[volume 4] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-0.5 +extmaxX=25 +extminY=18 +extmaxY=37 +extminZ=1.54688 +extmaxZ=4.25 + +slcminX=-0.5 +slcmaxX=25 +slcminY=18 +slcmaxY=37 +slcminZ=1.54688 +slcmaxZ=4.25 + + +[volume 5] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=2.98438 +extmaxX=7.78125 +extminY=41.5391 +extmaxY=46.5391 +extminZ=-4.21094 +extmaxZ=-1.55469 + +slcminX=2.98438 +slcmaxX=7.78125 +slcminY=41.5391 +slcmaxY=46.5391 +slcminZ=-4.21094 +slcmaxZ=-1.55469 + + +[volume 6] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=2.98438 +extmaxX=7.78125 +extminY=7.49219 +extmaxY=12.4922 +extminZ=-4.21094 +extmaxZ=-1.55469 + +slcminX=2.98438 +slcmaxX=7.78125 +slcminY=7.49219 +slcmaxY=12.4922 +slcminZ=-4.21094 +slcmaxZ=-1.55469 + + +[volume 7] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-0.5 +extmaxX=25 +extminY=18 +extmaxY=37 +extminZ=-4.25 +extmaxZ=-1.54688 + +slcminX=-0.5 +slcmaxX=25 +slcminY=18 +slcmaxY=37 +slcminZ=-4.25 +slcmaxZ=-1.54688 + + +[COLLISION] +name=dr2_cv.sld +count=8 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/DU_CV.SLD b/CONTENT/RP/SOLIDS/DU_CV.SLD new file mode 100644 index 0000000..a0ad0ed --- /dev/null +++ b/CONTENT/RP/SOLIDS/DU_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-3.67188 +extmaxX=3.67188 +extminY=-1.64844 +extmaxY=1.35156 +extminZ=-3.45312 +extmaxZ=3.89844 + +slcminX=-3.67188 +slcmaxX=3.67188 +slcminY=-1.64844 +slcmaxY=1.35156 +slcminZ=-3.45312 +slcmaxZ=3.89844 + + +[COLLISION] +name=du_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/EASY.XST b/CONTENT/RP/SOLIDS/EASY.XST new file mode 100644 index 0000000..152f9ed --- /dev/null +++ b/CONTENT/RP/SOLIDS/EASY.XST @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/CONTENT/RP/SOLIDS/ED009100.$$$ b/CONTENT/RP/SOLIDS/ED009100.$$$ new file mode 100644 index 0000000..e69de29 diff --git a/CONTENT/RP/SOLIDS/ED009101.$$$ b/CONTENT/RP/SOLIDS/ED009101.$$$ new file mode 100644 index 0000000..e69de29 diff --git a/CONTENT/RP/SOLIDS/FRSTRM.XST b/CONTENT/RP/SOLIDS/FRSTRM.XST new file mode 100644 index 0000000..c7f47db --- /dev/null +++ b/CONTENT/RP/SOLIDS/FRSTRM.XST @@ -0,0 +1,143 @@ +[LAB_ONLY] + +[extent 0] +extminX=-75 +extmaxX=75 +extminY=0 +extmaxY=50 +extminZ=895 +extmaxZ=1220 + + +[extent 1] +extminX=-75 +extmaxX=75 +extminY=0 +extmaxY=50 +extminZ=-3250 +extmaxZ=-1925 + + +[extent 2] +extminX=-55 +extmaxX=50 +extminY=0 +extmaxY=50 +extminZ=-1125 +extmaxZ=-600 + + +[extent 3] +extminX=-27 +extmaxX=27 +extminY=5 +extmaxY=45 +extminZ=-1925 +extmaxZ=-1125 + + +[extent 4] +extminX=-30 +extmaxX=30 +extminY=10 +extmaxY=23 +extminZ=-600 +extmaxZ=895 + + +[extent 5] +extminX=-15 +extmaxX=15 +extminY=5 +extmaxY=45 +extminZ=-3325 +extmaxZ=-3250 + + +[extent 6] +extminX=-15 +extmaxX=15 +extminY=5 +extmaxY=45 +extminZ=1220 +extmaxZ=1735 + + +[extent 7] +extminX=-440 +extmaxX=360 +extminY=5 +extmaxY=145 +extminZ=-3710 +extmaxZ=-3325 + + +[extent 8] +extminX=-25 +extmaxX=360 +extminY=5 +extmaxY=145 +extminZ=-3740 +extmaxZ=-3710 + + +[extent 9] +extminX=-440 +extmaxX=-55 +extminY=5 +extmaxY=145 +extminZ=-3740 +extmaxZ=-3710 + + +[extent 10] +extminX=-440 +extmaxX=360 +extminY=5 +extmaxY=145 +extminZ=-4125 +extmaxZ=-3740 + + +[extent 11] +extminX=-360 +extmaxX=440 +extminY=5 +extmaxY=145 +extminZ=1420 +extmaxZ=1805 + + +[extent 12] +extminX=-360 +extmaxX=440 +extminY=5 +extmaxY=145 +extminZ=1835 +extmaxZ=2220 + + +[extent 13] +extminX=55 +extmaxX=440 +extminY=5 +extmaxY=145 +extminZ=1805 +extmaxZ=1835 + + +[extent 14] +extminX=-360 +extmaxX=25 +extminY=5 +extmaxY=145 +extminZ=1805 +extmaxZ=1835 + + +[COLLISION] +name=frstrm.xst +count=0 +extentcount=15 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/FT1_CV.SLD b/CONTENT/RP/SOLIDS/FT1_CV.SLD new file mode 100644 index 0000000..6b2f940 --- /dev/null +++ b/CONTENT/RP/SOLIDS/FT1_CV.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=3 +MaterialName=SteelMaterial + +extminX=-7.64844 +extmaxX=7.45312 +extminY=0 +extmaxY=1.89844 +extminZ=-7.29688 +extmaxZ=7.79688 + +slcminX=-7.64844 +slcmaxX=7.45312 +slcminY=0 +slcmaxY=1.89844 +slcminZ=-7.29688 +slcmaxZ=7.79688 + + +[volume 1] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=3 +MaterialName=SteelMaterial + +extminX=-4.25 +extmaxX=-0.75 +extminY=1.89844 +extmaxY=4.5 +extminZ=0.75 +extmaxZ=4.25 + +slcminX=-4.25 +slcmaxX=-0.75 +slcminY=1.89844 +slcmaxY=4.5 +slcminZ=0.75 +slcmaxZ=4.25 + + +[COLLISION] +name=ft1_cv.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/FT2U_CV.SLD b/CONTENT/RP/SOLIDS/FT2U_CV.SLD new file mode 100644 index 0000000..73e8c53 --- /dev/null +++ b/CONTENT/RP/SOLIDS/FT2U_CV.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=3 +MaterialName=SteelMaterial + +extminX=-7.64844 +extmaxX=7.45312 +extminY=-36.8984 +extmaxY=0 +extminZ=-7.29688 +extmaxZ=7.79688 + +slcminX=-7.64844 +slcmaxX=7.45312 +slcminY=-36.8984 +slcmaxY=0 +slcminZ=-7.29688 +slcmaxZ=7.79688 + + +[volume 1] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=3 +MaterialName=SteelMaterial + +extminX=-4.25 +extmaxX=-0.75 +extminY=-39.5 +extmaxY=-36.8984 +extminZ=0.75 +extmaxZ=4.25 + +slcminX=-4.75 +slcmaxX=-0.75 +slcminY=-39.5 +slcmaxY=-36.8984 +slcminZ=0.75 +slcmaxZ=4.25 + + +[COLLISION] +name=ft2_cv.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/FT2_CV.SLD b/CONTENT/RP/SOLIDS/FT2_CV.SLD new file mode 100644 index 0000000..9ef4afc --- /dev/null +++ b/CONTENT/RP/SOLIDS/FT2_CV.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=3 +MaterialName=SteelMaterial + +extminX=-7.64844 +extmaxX=7.45312 +extminY=0 +extmaxY=36.8984 +extminZ=-7.29688 +extmaxZ=7.79688 + +slcminX=-7.64844 +slcmaxX=7.45312 +slcminY=0 +slcmaxY=36.8984 +slcminZ=-7.29688 +slcmaxZ=7.79688 + + +[volume 1] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=3 +MaterialName=SteelMaterial + +extminX=-4.25 +extmaxX=-0.75 +extminY=36.8984 +extmaxY=39.5 +extminZ=0.75 +extmaxZ=4.25 + +slcminX=-4.25 +slcmaxX=-0.75 +slcminY=36.8984 +slcmaxY=39.5 +slcminZ=0.75 +slcmaxZ=4.25 + + +[COLLISION] +name=ft2_cv.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/GAR1_CV.SLD b/CONTENT/RP/SOLIDS/GAR1_CV.SLD new file mode 100644 index 0000000..53219e6 --- /dev/null +++ b/CONTENT/RP/SOLIDS/GAR1_CV.SLD @@ -0,0 +1,48 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-210 +extmaxX=410 +extminY=10 +extmaxY=15 +extminZ=-100 +extmaxZ=100 + +slcminX=-210 +slcmaxX=410 +slcminY=10 +slcmaxY=15 +slcminZ=-100 +slcmaxZ=100 + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-210 +extmaxX=410 +extminY=-5 +extmaxY=0 +extminZ=-100 +extmaxZ=100 + +slcminX=-210 +slcmaxX=410 +slcminY=-5 +slcmaxY=0 +slcminZ=-100 +slcmaxZ=100 + +[COLLISION] +name=gar1_cv.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/GAR2_CV.SLD b/CONTENT/RP/SOLIDS/GAR2_CV.SLD new file mode 100644 index 0000000..e8e6938 --- /dev/null +++ b/CONTENT/RP/SOLIDS/GAR2_CV.SLD @@ -0,0 +1,48 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-210 +extmaxX=310 +extminY=10 +extmaxY=15 +extminZ=-100 +extmaxZ=100 + +slcminX=-210 +slcmaxX=310 +slcminY=10 +slcmaxY=15 +slcminZ=-100 +slcmaxZ=100 + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-210 +extmaxX=310 +extminY=-5 +extmaxY=0 +extminZ=-100 +extmaxZ=100 + +slcminX=-210 +slcmaxX=310 +slcminY=-5 +slcmaxY=0 +slcminZ=-100 +slcmaxZ=100 + +[COLLISION] +name=gar2_cv.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/GAR_CV.SLD b/CONTENT/RP/SOLIDS/GAR_CV.SLD new file mode 100644 index 0000000..a15fb14 --- /dev/null +++ b/CONTENT/RP/SOLIDS/GAR_CV.SLD @@ -0,0 +1,248 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-160 +extmaxX=160 +extminY=10 +extmaxY=15 +extminZ=-250 +extmaxZ=-50 + +slcminX=-160 +slcmaxX=160 +slcminY=10 +slcmaxY=15 +slcminZ=-250 +slcmaxZ=-50 + +[volume 1] +TypeNumber=14 +TypeName=WedgeFacingPositiveZandNegativeXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-150 +extmaxX=-50 +extminY=-5 +extmaxY=15 +extminZ=-150 +extmaxZ=-50 + +slcminX=-150 +slcmaxX=-50 +slcminY=-5 +slcmaxY=15 +slcminZ=-150 +slcmaxZ=-50 + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-155 +extmaxX=-150 +extminY=-5 +extmaxY=15 +extminZ=-250 +extmaxZ=-150 + +slcminX=-155 +slcmaxX=-150 +slcminY=-5 +slcmaxY=15 +slcminZ=-250 +slcmaxZ=-150 + +[volume 3] +TypeNumber=13 +TypeName=WedgeFacingNegativeZandNegativeXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-150 +extmaxX=250 +extminY=-5 +extmaxY=15 +extminZ=-650 +extmaxZ=-250 + +slcminX=-150 +slcmaxX=250 +slcminY=-5 +slcmaxY=15 +slcminZ=-650 +slcmaxZ=-250 + +[volume 4] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=250 +extmaxX=550 +extminY=0 +extmaxY=15 +extminZ=-655 +extmaxZ=-650 + +slcminX=250 +slcmaxX=550 +slcminY=0 +slcmaxY=15 +slcminZ=-655 +slcmaxZ=-650 + +[volume 5] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=350 +extmaxX=550 +extminY=-5 +extmaxY=15 +extminZ=-550 +extmaxZ=-545 + +slcminX=350 +slcmaxX=550 +slcminY=-5 +slcmaxY=15 +slcminZ=-550 +slcmaxZ=-545 + +[volume 6] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=350 +extmaxX=355 +extminY=-5 +extmaxY=15 +extminZ=-550 +extmaxZ=-450 + +slcminX=350 +slcmaxX=355 +slcminY=-5 +slcmaxY=15 +slcminZ=-550 +slcmaxZ=-450 + +[volume 7] +TypeNumber=15 +TypeName=WedgeFacingPositiveZandPositiveXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=150 +extmaxX=350 +extminY=-5 +extmaxY=15 +extminZ=-450 +extmaxZ=-250 + +slcminX=150 +slcmaxX=350 +slcminY=-5 +slcmaxY=15 +slcminZ=-450 +slcmaxZ=-250 + +[volume 8] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=150 +extmaxX=155 +extminY=-5 +extmaxY=15 +extminZ=-250 +extmaxZ=-150 + +slcminX=150 +slcmaxX=155 +slcminY=-5 +slcmaxY=15 +slcminZ=-250 +slcmaxZ=-150 + +[volume 9] +TypeNumber=15 +TypeName=WedgeFacingPositiveZandPositiveXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=50 +extmaxX=150 +extminY=-5 +extmaxY=15 +extminZ=-150 +extmaxZ=-50 + +slcminX=50 +slcmaxX=150 +slcminY=-5 +slcmaxY=15 +slcminZ=-150 +slcmaxZ=-50 + +[volume 10] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-50 +extmaxX=50 +extminY=-100 +extmaxY=0 +extminZ=40 +extmaxZ=50 + +slcminX=-50 +slcmaxX=50 +slcminY=-100 +slcmaxY=0 +slcminZ=40 +slcmaxZ=50 + +[volume 11] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-160 +extmaxX=160 +extminY=-5 +extmaxY=0 +extminZ=-250 +extmaxZ=-50 + +slcminX=-160 +slcmaxX=160 +slcminY=-5 +slcmaxY=0 +slcminZ=-250 +slcmaxZ=-50 + +[COLLISION] +name=gar_cv.sld +count=12 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/HDOFF_CV.SLD b/CONTENT/RP/SOLIDS/HDOFF_CV.SLD new file mode 100644 index 0000000..0fb3d65 --- /dev/null +++ b/CONTENT/RP/SOLIDS/HDOFF_CV.SLD @@ -0,0 +1,88 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-50 +extmaxX=-20 +extminY=-10 +extmaxY=60 +extminZ=-360 +extmaxZ=-360 + +slcminX=-50 +slcmaxX=-20 +slcminY=-10 +slcmaxY=60 +slcminZ=-360 +slcmaxZ=-350 + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=20 +extmaxX=50 +extminY=-10 +extmaxY=60 +extminZ=-360 +extmaxZ=-350 + +slcminX=20 +slcmaxX=50 +slcminY=-10 +slcmaxY=60 +slcminZ=-360 +slcmaxZ=-350 + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-50 +extmaxX=-20 +extminY=-10 +extmaxY=60 +extminZ=-1850 +extmaxZ=-1840 + +slcminX=-50 +slcmaxX=-20 +slcminY=-10 +slcmaxY=60 +slcminZ=-1850 +slcmaxZ=-1840 + +[volume 3] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=20 +extmaxX=50 +extminY=-10 +extmaxY=60 +extminZ=-1850 +extmaxZ=-1840 + +slcminX=20 +slcmaxX=50 +slcminY=-10 +slcmaxY=60 +slcminZ=-1850 +slcmaxZ=-1840 + +[COLLISION] +name=hdoff_cv.sld +count=4 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/HEADMF.XST b/CONTENT/RP/SOLIDS/HEADMF.XST new file mode 100644 index 0000000..f505bad --- /dev/null +++ b/CONTENT/RP/SOLIDS/HEADMF.XST @@ -0,0 +1,49 @@ +[LAB_ONLY] + +[extent 0] +extminX=-255 +extmaxX=255 +extminY=-5 +extmaxY=100 +extminZ=-3000 +extmaxZ=-2500 + +[extent 1] +extminX=-50 +extmaxX=50 +extminY=-5 +extmaxY=50 +extminZ=-2500 +extmaxZ=-1900 + +[extent 2] +extminX=-50 +extmaxX=50 +extminY=-5 +extmaxY=50 +extminZ=-1900 +extmaxZ=-400 + +[extent 3] +extminX=-50 +extmaxX=50 +extminY=-15 +extmaxY=50 +extminZ=-400 +extmaxZ=1500 + +[extent 4] +extminX=-255 +extmaxX=255 +extminY=-15 +extmaxY=90 +extminZ=1500 +extmaxZ=2000 + + +[COLLISION] +name=headmf.xst +count=0 +extentcount=5 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/HEADOFF.BAK b/CONTENT/RP/SOLIDS/HEADOFF.BAK new file mode 100644 index 0000000..67f54b0 --- /dev/null +++ b/CONTENT/RP/SOLIDS/HEADOFF.BAK @@ -0,0 +1,41 @@ +[LAB_ONLY] + +[extent 0] +extminX=-200 +extmaxX=200 +extminY=-5 +extmaxY=100 +extminZ=-3000 +extmaxZ=-2300 + +[extent 0] +extminX=-50 +extmaxX=50 +extminY=-5 +extmaxY=50 +extminZ=-2300 +extmaxZ=-300 + +[extent 0] +extminX=-50 +extmaxX=50 +extminY=-15 +extmaxY=50 +extminZ=-300 +extmaxZ=1500 + +[extent 0] +extminX=-200 +extmaxX=200 +extminY=-15 +extmaxY=50 +extminZ=1500 +extmaxZ=2000 + + +[COLLISION] +name=headoff.xst +count=0 +extentcount=4 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/HEADOFF.XST b/CONTENT/RP/SOLIDS/HEADOFF.XST new file mode 100644 index 0000000..6ecfb7a --- /dev/null +++ b/CONTENT/RP/SOLIDS/HEADOFF.XST @@ -0,0 +1,49 @@ +[LAB_ONLY] + +[extent 0] +extminX=-255 +extmaxX=255 +extminY=-5 +extmaxY=100 +extminZ=-3000 +extmaxZ=-2500 + +[extent 1] +extminX=-50 +extmaxX=50 +extminY=-5 +extmaxY=50 +extminZ=-2500 +extmaxZ=-1900 + +[extent 2] +extminX=-50 +extmaxX=50 +extminY=-5 +extmaxY=50 +extminZ=-1900 +extmaxZ=-400 + +[extent 3] +extminX=-50 +extmaxX=50 +extminY=-15 +extmaxY=50 +extminZ=-400 +extmaxZ=1500 + +[extent 4] +extminX=-255 +extmaxX=255 +extminY=-15 +extmaxY=90 +extminZ=1500 +extmaxZ=2000 + + +[COLLISION] +name=headoff.xst +count=0 +extentcount=5 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/HV2_CV.SLD b/CONTENT/RP/SOLIDS/HV2_CV.SLD new file mode 100644 index 0000000..0988710 --- /dev/null +++ b/CONTENT/RP/SOLIDS/HV2_CV.SLD @@ -0,0 +1,218 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-27.2969 +extmaxX=-25 +extminY=0 +extmaxY=6.10156 +extminZ=-50 +extmaxZ=50 + +slcminX=-27.2969 +slcmaxX=-25 +slcminY=0 +slcmaxY=6.10156 +slcminZ=-50 +slcmaxZ=50 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=25 +extmaxX=27.2969 +extminY=0 +extmaxY=6.10156 +extminZ=-50 +extmaxZ=50 + +slcminX=25 +slcmaxX=27.2969 +slcminY=0 +slcmaxY=6.10156 +slcminZ=-50 +slcmaxZ=50 + + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-25 +extmaxX=25 +extminY=-5 +extmaxY=0 +extminZ=-50 +extmaxZ=50 + +slcminX=-25 +slcmaxX=25 +slcminY=-5 +slcmaxY=0 +slcminZ=-50 +slcmaxZ=50 + + +[volume 3] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-25 +extmaxX=25 +extminY=6.10156 +extmaxY=11.1016 +extminZ=-50 +extmaxZ=50 + +slcminX=-25 +slcmaxX=25 +slcminY=6.10156 +slcmaxY=11.1016 +slcminZ=-50 +slcmaxZ=50 + + +[volume 4] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-25 +extmaxX=-22.7969 +extminY=0 +extmaxY=6.10156 +extminZ=10.7031 +extmaxZ=15.8984 + +slcminX=-25 +slcmaxX=-22.7969 +slcminY=0 +slcmaxY=6.10156 +slcminZ=10.7031 +slcmaxZ=15.8984 + + +[volume 5] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-25 +extmaxX=-22.7969 +extminY=0 +extmaxY=6.10156 +extminZ=44 +extmaxZ=50 + +slcminX=-25 +slcmaxX=-22.7969 +slcminY=0 +slcmaxY=6.10156 +slcminZ=44 +slcmaxZ=50 + + +[volume 6] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-25 +extmaxX=-22.7969 +extminY=0 +extmaxY=6.10156 +extminZ=-22.6016 +extmaxZ=-17.3984 + +slcminX=-25 +slcmaxX=-22.7969 +slcminY=0 +slcmaxY=6.10156 +slcminZ=-22.6016 +slcmaxZ=-17.3984 + + +[volume 7] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=22.7969 +extmaxX=25 +extminY=0 +extmaxY=6.10156 +extminZ=10.7031 +extmaxZ=15.8984 + +slcminX=22.7969 +slcmaxX=25 +slcminY=0 +slcmaxY=6.10156 +slcminZ=10.7031 +slcmaxZ=15.8984 + + +[volume 8] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=22.7969 +extmaxX=25 +extminY=0 +extmaxY=6.10156 +extminZ=44 +extmaxZ=50 + +slcminX=22.7969 +slcmaxX=25 +slcminY=0 +slcmaxY=6.10156 +slcminZ=44 +slcmaxZ=50 + + +[volume 9] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=22.7969 +extmaxX=25 +extminY=0 +extmaxY=6.10156 +extminZ=-22.6016 +extmaxZ=-17.3984 + +slcminX=22.7969 +slcmaxX=25 +slcminY=0 +slcmaxY=6.10156 +slcminZ=-22.6016 +slcmaxZ=-17.3984 + + +[COLLISION] +name=hv2_cv.sld +count=10 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/HV4_CV.SLD b/CONTENT/RP/SOLIDS/HV4_CV.SLD new file mode 100644 index 0000000..aad7fa2 --- /dev/null +++ b/CONTENT/RP/SOLIDS/HV4_CV.SLD @@ -0,0 +1,218 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=3 +MaterialName=SteelMaterial + +extminX=19.7969 +extmaxX=25 +extminY=30 +extmaxY=40.1016 +extminZ=10.7031 +extmaxZ=15.8984 + +slcminX=19.7969 +slcmaxX=25 +slcminY=30 +slcmaxY=40.1016 +slcminZ=10.7031 +slcmaxZ=15.8984 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=3 +MaterialName=SteelMaterial + +extminX=19.7969 +extmaxX=25 +extminY=30 +extmaxY=40.1016 +extminZ=44 +extmaxZ=50 + +slcminX=19.7969 +slcmaxX=25 +slcminY=30 +slcmaxY=40.1016 +slcminZ=44 +slcmaxZ=50 + + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=3 +MaterialName=SteelMaterial + +extminX=19.7969 +extmaxX=25 +extminY=30 +extmaxY=40.1016 +extminZ=-22.6016 +extmaxZ=-17.3984 + +slcminX=19.7969 +slcmaxX=25 +slcminY=30 +slcmaxY=40.1016 +slcminZ=-22.6016 +slcmaxZ=-17.3984 + + +[volume 3] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=3 +MaterialName=SteelMaterial + +extminX=-25 +extmaxX=-19.7969 +extminY=30 +extmaxY=40.1016 +extminZ=10.7031 +extmaxZ=15.8984 + +slcminX=-25 +slcmaxX=-19.7969 +slcminY=30 +slcmaxY=40.1016 +slcminZ=10.7031 +slcmaxZ=15.8984 + + +[volume 4] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=3 +MaterialName=SteelMaterial + +extminX=-25 +extmaxX=-19.7969 +extminY=30 +extmaxY=40.1016 +extminZ=44 +extmaxZ=50 + +slcminX=-25 +slcmaxX=-19.7969 +slcminY=30 +slcmaxY=40.1016 +slcminZ=44 +slcmaxZ=50 + + +[volume 5] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=3 +MaterialName=SteelMaterial + +extminX=-25 +extmaxX=-19.7969 +extminY=30 +extmaxY=40.1016 +extminZ=-22.6016 +extmaxZ=-17.3984 + +slcminX=-25 +slcmaxX=-19.7969 +slcminY=30 +slcmaxY=40.1016 +slcminZ=-22.6016 +slcmaxZ=-17.3984 + + +[volume 6] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-27.2969 +extmaxX=-25 +extminY=30 +extmaxY=40.1016 +extminZ=-50 +extmaxZ=50 + +slcminX=-27.2969 +slcmaxX=-25 +slcminY=30 +slcmaxY=40.1016 +slcminZ=-50 +slcmaxZ=50 + + +[volume 7] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=25 +extmaxX=27.2969 +extminY=30 +extmaxY=40.1016 +extminZ=-50 +extmaxZ=50 + +slcminX=25 +slcmaxX=27.2969 +slcminY=30 +slcmaxY=40.1016 +slcminZ=-50 +slcmaxZ=50 + + +[volume 8] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-25 +extmaxX=25 +extminY=40.1016 +extmaxY=42.1016 +extminZ=-50 +extmaxZ=50 + +slcminX=-25 +slcmaxX=25 +slcminY=40.1016 +slcmaxY=42.1016 +slcminZ=-50 +slcmaxZ=50 + + +[volume 9] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-25 +extmaxX=25 +extminY=28 +extmaxY=30 +extminZ=-50 +extmaxZ=50 + +slcminX=-25 +slcmaxX=25 +slcminY=28 +slcmaxY=30 +slcminZ=-50 +slcmaxZ=50 + + +[COLLISION] +name=hv4_cv.sld +count=10 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/HV6_CV.SLD b/CONTENT/RP/SOLIDS/HV6_CV.SLD new file mode 100644 index 0000000..5b3c3e0 --- /dev/null +++ b/CONTENT/RP/SOLIDS/HV6_CV.SLD @@ -0,0 +1,197 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=18 +TypeName=ZAxisCylinderType +MaterialNumber=3 +MaterialName=SteelMaterial + +extminX=-3 +extmaxX=3 +extminY=27 +extmaxY=33 +extminZ=-50 +extmaxZ=50 + +slcminX=-3 +slcmaxX=3 +slcminY=27 +slcmaxY=33 +slcminZ=-50 +slcmaxZ=50 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=3 +MaterialName=SteelMaterial + +extminX=-6.5 +extmaxX=6.5 +extminY=43.25 +extmaxY=45 +extminZ=-50 +extmaxZ=50 + +slcminX=-6.5 +slcmaxX=6.5 +slcminY=43.25 +slcmaxY=45 +slcminZ=-50 +slcmaxZ=50 + + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=3 +MaterialName=SteelMaterial + +extminX=-6.5 +extmaxX=6.5 +extminY=15 +extmaxY=16.75 +extminZ=-50 +extmaxZ=50 + +slcminX=-6.5 +slcmaxX=6.5 +slcminY=15 +slcmaxY=16.75 +slcminZ=-50 +slcmaxZ=50 + + +[volume 3] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=3 +MaterialName=SteelMaterial + +extminX=-15 +extmaxX=-13.25 +extminY=23.5 +extmaxY=36.5 +extminZ=-45 +extmaxZ=45 + +slcminX=-15 +slcmaxX=-13.25 +slcminY=23.5 +slcmaxY=36.5 +slcminZ=-45 +slcmaxZ=45 + + +[volume 4] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=3 +MaterialName=SteelMaterial + +extminX=-17 +extmaxX=17 +extminY=45 +extmaxY=47 +extminZ=-50 +extmaxZ=50 + +slcminX=-17 +slcmaxX=17 +slcminY=45 +slcmaxY=47 +slcminZ=-50 +slcmaxZ=50 + + +[volume 5] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=3 +MaterialName=SteelMaterial + +extminX=-17 +extmaxX=-15 +extminY=15 +extmaxY=45 +extminZ=-50 +extmaxZ=50 + +slcminX=-17 +slcmaxX=-15 +slcminY=15 +slcmaxY=45 +slcminZ=-50 +slcmaxZ=50 + + +[volume 6] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=3 +MaterialName=SteelMaterial + +extminX=-17 +extmaxX=17 +extminY=13.5 +extmaxY=15 +extminZ=-50 +extmaxZ=50 + +slcminX=-17 +slcmaxX=17 +slcminY=13.5 +slcmaxY=15 +slcminZ=-50 +slcmaxZ=50 + + +[volume 7] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=3 +MaterialName=SteelMaterial + +extminX=15 +extmaxX=17 +extminY=15 +extmaxY=45 +extminZ=-50 +extmaxZ=50 + +slcminX=15 +slcmaxX=17 +slcminY=15 +slcmaxY=45 +slcminZ=-50 +slcmaxZ=50 + + +[volume 8] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=3 +MaterialName=SteelMaterial + +extminX=13.25 +extmaxX=15 +extminY=23.5 +extmaxY=36.5 +extminZ=-45 +extmaxZ=45 + +slcminX=13.25 +slcmaxX=15 +slcminY=23.5 +slcmaxY=36.5 +slcminZ=-45 +slcmaxZ=45 + + +[COLLISION] +name=hv6_cv.sld +count=9 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/HV7_CV.SLD b/CONTENT/RP/SOLIDS/HV7_CV.SLD new file mode 100644 index 0000000..dc742b0 --- /dev/null +++ b/CONTENT/RP/SOLIDS/HV7_CV.SLD @@ -0,0 +1,197 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=3 +MaterialName=SteelMaterial + +extminX=-8 +extmaxX=8 +extminY=39.875 +extmaxY=40.125 +extminZ=-4 +extmaxZ=4 + +slcminX=-8 +slcmaxX=8 +slcminY=39.875 +slcmaxY=40.125 +slcminZ=-4 +slcmaxZ=4 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=3 +MaterialName=SteelMaterial + +extminX=-8 +extmaxX=8 +extminY=19.875 +extmaxY=20.125 +extminZ=-4 +extmaxZ=4 + +slcminX=-8 +slcmaxX=8 +slcminY=19.875 +slcmaxY=20.125 +slcminZ=-4 +slcmaxZ=4 + + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=3 +MaterialName=SteelMaterial + +extminX=-13 +extmaxX=13 +extminY=24.875 +extmaxY=25.125 +extminZ=-4 +extmaxZ=4 + +slcminX=-13 +slcmaxX=13 +slcminY=24.875 +slcmaxY=25.125 +slcminZ=-4 +slcmaxZ=4 + + +[volume 3] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=3 +MaterialName=SteelMaterial + +extminX=-13 +extmaxX=13 +extminY=29.875 +extmaxY=30.125 +extminZ=-4 +extmaxZ=4 + +slcminX=-13 +slcmaxX=13 +slcminY=29.875 +slcmaxY=30.125 +slcminZ=-4 +slcmaxZ=4 + + +[volume 4] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=3 +MaterialName=SteelMaterial + +extminX=-13 +extmaxX=13 +extminY=34.875 +extmaxY=35.125 +extminZ=-4 +extmaxZ=4 + +slcminX=-13 +slcmaxX=13 +slcminY=34.875 +slcmaxY=35.125 +slcminZ=-4 +slcmaxZ=4 + + +[volume 5] +TypeNumber=5 +TypeName=RampFacingNegativeXType +MaterialNumber=3 +MaterialName=SteelMaterial + +extminX=-15 +extmaxX=-3.25 +extminY=15 +extmaxY=26.75 +extminZ=-5 +extmaxZ=5 + +slcminX=-15 +slcmaxX=-3.25 +slcminY=15 +slcmaxY=26.75 +slcminZ=-5 +slcmaxZ=5 + + +[volume 6] +TypeNumber=7 +TypeName=RampFacingPositiveXType +MaterialNumber=3 +MaterialName=SteelMaterial + +extminX=3.25 +extmaxX=15 +extminY=15 +extmaxY=26.75 +extminZ=-5 +extmaxZ=5 + +slcminX=3.25 +slcmaxX=15 +slcminY=15 +slcmaxY=26.75 +slcminZ=-5 +slcmaxZ=5 + + +[volume 7] +TypeNumber=11 +TypeName=InvertedRampFacingPositiveXType +MaterialNumber=3 +MaterialName=SteelMaterial + +extminX=3.25 +extmaxX=15 +extminY=33.25 +extmaxY=45 +extminZ=-5 +extmaxZ=5 + +slcminX=3.25 +slcmaxX=15 +slcminY=33.25 +slcmaxY=45 +slcminZ=-5 +slcmaxZ=5 + + +[volume 8] +TypeNumber=9 +TypeName=InvertedRampFacingNegativeXType +MaterialNumber=3 +MaterialName=SteelMaterial + +extminX=-15 +extmaxX=-3.25 +extminY=33.25 +extmaxY=45 +extminZ=-5 +extmaxZ=5 + +slcminX=-15 +slcmaxX=-3.25 +slcminY=33.25 +slcmaxY=45 +slcminZ=-5 +slcmaxZ=5 + + +[COLLISION] +name=hv7_cv.sld +count=9 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/HVA_CV.SLD b/CONTENT/RP/SOLIDS/HVA_CV.SLD new file mode 100644 index 0000000..6f46d75 --- /dev/null +++ b/CONTENT/RP/SOLIDS/HVA_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=3 +MaterialName=SteelMaterial + +extminX=-2 +extmaxX=2 +extminY=16.75 +extmaxY=27.75 +extminZ=-1 +extmaxZ=1 + +slcminX=-2 +slcmaxX=2 +slcminY=16.75 +slcmaxY=27.75 +slcminZ=-1 +slcmaxZ=1 + + +[COLLISION] +name=hva_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/HVB_CV.SLD b/CONTENT/RP/SOLIDS/HVB_CV.SLD new file mode 100644 index 0000000..4577a9a --- /dev/null +++ b/CONTENT/RP/SOLIDS/HVB_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=2.25 +extmaxX=13.25 +extminY=28 +extmaxY=32 +extminZ=-1 +extmaxZ=1 + +slcminX=2.25 +slcmaxX=13.25 +slcminY=28 +slcmaxY=32 +slcminZ=-1 +slcmaxZ=1 + + +[COLLISION] +name=hvb_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/LU_CV.SLD b/CONTENT/RP/SOLIDS/LU_CV.SLD new file mode 100644 index 0000000..09fedfe --- /dev/null +++ b/CONTENT/RP/SOLIDS/LU_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2.36719 +extmaxX=2.36719 +extminY=-1.10156 +extmaxY=0.78125 +extminZ=-2.36719 +extmaxZ=2.36719 + +slcminX=-2.36719 +slcmaxX=2.36719 +slcminY=-1.10156 +slcmaxY=0.78125 +slcminZ=-2.36719 +slcmaxZ=2.36719 + + +[COLLISION] +name=lu_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/LYZLANE.XST b/CONTENT/RP/SOLIDS/LYZLANE.XST new file mode 100644 index 0000000..73446cd --- /dev/null +++ b/CONTENT/RP/SOLIDS/LYZLANE.XST @@ -0,0 +1,404 @@ +[LAB_ONLY] + +[extent 0] +extminX=1150 +extmaxX=1250 +extminY=-50 +extmaxY=50 +extminZ=-50 +extmaxZ=50 + + +[extent 1] +extminX=90 +extmaxX=95 +extminY=5 +extmaxY=70 +extminZ=2370 +extmaxZ=2428 + + +[extent 2] +extminX=85 +extmaxX=90 +extminY=5 +extmaxY=70 +extminZ=2360 +extmaxZ=2437 + + +[extent 3] +extminX=80 +extmaxX=85 +extminY=5 +extmaxY=70 +extminZ=2355 +extmaxZ=2442 + + +[extent 4] +extminX=75 +extmaxX=80 +extminY=5 +extmaxY=70 +extminZ=2345 +extmaxZ=2447 + + +[extent 5] +extminX=70 +extmaxX=75 +extminY=5 +extmaxY=70 +extminZ=2335 +extmaxZ=2450 + + +[extent 6] +extminX=65 +extmaxX=70 +extminY=5 +extmaxY=70 +extminZ=2325 +extmaxZ=2453 + + +[extent 7] +extminX=60 +extmaxX=65 +extminY=5 +extmaxY=70 +extminZ=2315 +extmaxZ=2455 + + +[extent 8] +extminX=55 +extmaxX=60 +extminY=5 +extmaxY=70 +extminZ=2305 +extmaxZ=2457 + + +[extent 9] +extminX=45 +extmaxX=55 +extminY=5 +extmaxY=70 +extminZ=2290 +extmaxZ=2459 + + +[extent 10] +extminX=30 +extmaxX=45 +extminY=5 +extmaxY=70 +extminZ=2260 +extmaxZ=2460 + + +[extent 11] +extminX=20 +extmaxX=30 +extminY=5 +extmaxY=70 +extminZ=2250 +extmaxZ=2459 + + +[extent 12] +extminX=15 +extmaxX=20 +extminY=5 +extmaxY=70 +extminZ=2250 +extmaxZ=2457 + + +[extent 13] +extminX=10 +extmaxX=15 +extminY=5 +extmaxY=70 +extminZ=2250 +extmaxZ=2455 + + +[extent 14] +extminX=5 +extmaxX=10 +extminY=5 +extmaxY=70 +extminZ=2250 +extmaxZ=2453 + + +[extent 15] +extminX=0 +extmaxX=5 +extminY=5 +extmaxY=70 +extminZ=2250 +extmaxZ=2450 + + +[extent 16] +extminX=-5 +extmaxX=0 +extminY=5 +extmaxY=70 +extminZ=2250 +extmaxZ=2447 + + +[extent 17] +extminX=-10 +extmaxX=-5 +extminY=5 +extmaxY=70 +extminZ=2250 +extmaxZ=2442 + + +[extent 18] +extminX=-15 +extmaxX=-10 +extminY=5 +extmaxY=70 +extminZ=2250 +extmaxZ=2437 + + +[extent 19] +extminX=-20 +extmaxX=-15 +extminY=5 +extmaxY=70 +extminZ=2250 +extmaxZ=2428 + + +[extent 20] +extminX=-23 +extmaxX=-20 +extminY=5 +extmaxY=70 +extminZ=2250 +extmaxZ=2418 + + +[extent 21] +extminX=95 +extmaxX=98 +extminY=5 +extmaxY=70 +extminZ=2380 +extmaxZ=2418 + + +[extent 22] +extminX=-50 +extmaxX=45 +extminY=-1 +extmaxY=51 +extminZ=-1550 +extmaxZ=2250 + + +[extent 23] +extminX=-92.5 +extmaxX=-87.5 +extminY=-1 +extmaxY=64 +extminZ=-1728 +extmaxZ=-1670 + + +[extent 24] +extminX=-87.5 +extmaxX=-82.5 +extminY=-1 +extmaxY=64 +extminZ=-1737 +extmaxZ=-1660 + + +[extent 25] +extminX=-82.5 +extmaxX=-77.5 +extminY=-1 +extmaxY=64 +extminZ=-1742 +extmaxZ=-1655 + + +[extent 26] +extminX=-77.5 +extmaxX=-72.5 +extminY=-1 +extmaxY=64 +extminZ=-1747 +extmaxZ=-1645 + + +[extent 27] +extminX=-72.5 +extmaxX=-67.5 +extminY=-1 +extmaxY=64 +extminZ=-1750 +extmaxZ=-1635 + + +[extent 28] +extminX=-67.5 +extmaxX=-62.5 +extminY=-1 +extmaxY=64 +extminZ=-1753 +extmaxZ=-1625 + + +[extent 29] +extminX=-62.5 +extmaxX=-57.5 +extminY=-1 +extmaxY=64 +extminZ=-1755 +extmaxZ=-1615 + + +[extent 30] +extminX=-57.5 +extmaxX=-52.5 +extminY=-1 +extmaxY=64 +extminZ=-1757 +extmaxZ=-1605 + + +[extent 31] +extminX=-52.5 +extmaxX=-42.5 +extminY=-1 +extmaxY=64 +extminZ=-1759 +extmaxZ=-1590 + + +[extent 32] +extminX=-42.5 +extmaxX=-27.5 +extminY=-1 +extmaxY=64 +extminZ=-1760 +extmaxZ=-1560 + + +[extent 33] +extminX=-27.5 +extmaxX=-17.5 +extminY=-1 +extmaxY=64 +extminZ=-1759 +extmaxZ=-1550 + + +[extent 34] +extminX=-17.5 +extmaxX=-12.5 +extminY=-1 +extmaxY=64 +extminZ=-1757 +extmaxZ=-1550 + + +[extent 35] +extminX=-12.5 +extmaxX=-7.5 +extminY=-1 +extmaxY=64 +extminZ=-1755 +extmaxZ=-1550 + + +[extent 36] +extminX=-7.5 +extmaxX=-2.5 +extminY=-1 +extmaxY=64 +extminZ=-1753 +extmaxZ=-1550 + + +[extent 37] +extminX=-2.5 +extmaxX=2.5 +extminY=-1 +extmaxY=64 +extminZ=-1750 +extmaxZ=-1550 + + +[extent 38] +extminX=2.5 +extmaxX=7.5 +extminY=-1 +extmaxY=64 +extminZ=-1747 +extmaxZ=-1550 + + +[extent 39] +extminX=7.5 +extmaxX=12.5 +extminY=-1 +extmaxY=64 +extminZ=-1742 +extmaxZ=-1550 + + +[extent 40] +extminX=12.5 +extmaxX=17.5 +extminY=-1 +extmaxY=64 +extminZ=-1737 +extmaxZ=-1550 + + +[extent 41] +extminX=17.5 +extmaxX=22.5 +extminY=-1 +extmaxY=64 +extminZ=-1728 +extmaxZ=-1550 + + +[extent 42] +extminX=22.5 +extmaxX=25.5 +extminY=-1 +extmaxY=64 +extminZ=-1718 +extmaxZ=-1550 + + +[extent 43] +extminX=-95.5 +extmaxX=-92.5 +extminY=-1 +extmaxY=64 +extminZ=-1718 +extmaxZ=-1680 + + +[COLLISION] +name=lyzlane.xst +count=0 +extentcount=44 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/MA_CV.SLD b/CONTENT/RP/SOLIDS/MA_CV.SLD new file mode 100644 index 0000000..a112801 --- /dev/null +++ b/CONTENT/RP/SOLIDS/MA_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-4.5 +extmaxX=4.5 +extminY=-1.5 +extmaxY=1.4375 +extminZ=-4.5 +extmaxZ=4.5 + +slcminX=-4.5 +slcmaxX=4.5 +slcminY=-1.5 +slcmaxY=1.4375 +slcminZ=-4.5 +slcmaxZ=4.5 + + +[COLLISION] +name=ma_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/MB1_CV.SLD b/CONTENT/RP/SOLIDS/MB1_CV.SLD new file mode 100644 index 0000000..849b9db --- /dev/null +++ b/CONTENT/RP/SOLIDS/MB1_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-10 +extmaxX=10 +extminY=-5 +extmaxY=5 +extminZ=-5 +extmaxZ=5 + +slcminX=-10 +slcmaxX=10 +slcminY=-5 +slcmaxY=5 +slcminZ=-5 +slcmaxZ=5 + + +[COLLISION] +name=mb1_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/MD1_CV.SLD b/CONTENT/RP/SOLIDS/MD1_CV.SLD new file mode 100644 index 0000000..1130b91 --- /dev/null +++ b/CONTENT/RP/SOLIDS/MD1_CV.SLD @@ -0,0 +1,175 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=3 +MaterialName=SteelMaterial + +extminX=9 +extmaxX=13 +extminY=0 +extmaxY=6.25 +extminZ=-2 +extmaxZ=2 + +slcminX=9 +slcmaxX=13 +slcminY=0 +slcmaxY=6.25 +slcminZ=-2 +slcmaxZ=2 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=5 +MaterialName=RockMaterial + +extminX=9.5 +extmaxX=10 +extminY=0 +extmaxY=6.25 +extminZ=2 +extmaxZ=25 + +slcminX=9.5 +slcmaxX=10 +slcminY=0 +slcmaxY=6.25 +slcminZ=2 +slcmaxZ=25 + + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=5 +MaterialName=RockMaterial + +extminX=9.5 +extmaxX=10 +extminY=0 +extmaxY=6.25 +extminZ=-25 +extmaxZ=-2 + +slcminX=9.5 +slcmaxX=10 +slcminY=0 +slcmaxY=6.25 +slcminZ=-25 +slcmaxZ=-2 + + +[volume 3] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=3 +MaterialName=SteelMaterial + +extminX=-13 +extmaxX=-9 +extminY=0 +extmaxY=6.25 +extminZ=-2 +extmaxZ=2 + +slcminX=-13 +slcmaxX=-9 +slcminY=0 +slcmaxY=6.25 +slcminZ=-2 +slcmaxZ=2 + + +[volume 4] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=5 +MaterialName=RockMaterial + +extminX=-10 +extmaxX=-9.5 +extminY=0 +extmaxY=6.25 +extminZ=2 +extmaxZ=25 + +slcminX=-10 +slcmaxX=-9.5 +slcminY=0 +slcmaxY=6.25 +slcminZ=2 +slcmaxZ=25 + + +[volume 5] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=5 +MaterialName=RockMaterial + +extminX=-10 +extmaxX=-9.5 +extminY=0 +extmaxY=6.25 +extminZ=-25 +extmaxZ=-2 + +slcminX=-10 +slcmaxX=-9.5 +slcminY=0 +slcmaxY=6.25 +slcminZ=-25 +slcmaxZ=-2 + + +[volume 6] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=5 +MaterialName=RockMaterial + +extminX=-9.5 +extmaxX=9.5 +extminY=-0.5 +extmaxY=0 +extminZ=-25 +extmaxZ=25 + +slcminX=-9.5 +slcmaxX=9.5 +slcminY=-0.5 +slcmaxY=0 +slcminZ=-25 +slcmaxZ=25 + + +[volume 7] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=5 +MaterialName=RockMaterial + +extminX=-9.5 +extmaxX=9.5 +extminY=6.25 +extmaxY=6.75 +extminZ=-25 +extmaxZ=25 + +slcminX=-9.5 +slcmaxX=9.5 +slcminY=6.25 +slcmaxY=6.75 +slcminZ=-25 +slcmaxZ=25 + + +[COLLISION] +name=md1_cv.sld +count=8 +extentcount=0 + diff --git a/CONTENT/RP/SOLIDS/MD2_CV.SLD b/CONTENT/RP/SOLIDS/MD2_CV.SLD new file mode 100644 index 0000000..7da2315 --- /dev/null +++ b/CONTENT/RP/SOLIDS/MD2_CV.SLD @@ -0,0 +1,175 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=6 +TypeName=RampFacingPositiveZType +MaterialNumber=5 +MaterialName=RockMaterial + +extminX=-9.5 +extmaxX=9.5 +extminY=-5 +extmaxY=0 +extminZ=-25 +extmaxZ=25 + +slcminX=-9.5 +slcmaxX=9.5 +slcminY=-5 +slcmaxY=0 +slcminZ=-25 +slcmaxZ=25 + + +[volume 1] +TypeNumber=8 +TypeName=InvertedRampFacingNegativeZType +MaterialNumber=5 +MaterialName=RockMaterial + +extminX=-9.5 +extmaxX=9.5 +extminY=1.25 +extmaxY=6.25 +extminZ=-25 +extmaxZ=25 + +slcminX=-9.5 +slcmaxX=9.5 +slcminY=1.25 +slcmaxY=6.25 +slcminZ=-25 +slcmaxZ=25 + + +[volume 2] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=3 +MaterialName=SteelMaterial + +extminX=-13 +extmaxX=-9 +extminY=-2.25 +extmaxY=3.5 +extminZ=-2 +extmaxZ=2 + +slcminX=-13 +slcmaxX=-9 +slcminY=-2.25 +slcmaxY=3.5 +slcminZ=-2 +slcmaxZ=2 + + +[volume 3] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=5 +MaterialName=RockMaterial + +extminX=-10 +extmaxX=-9.5 +extminY=-5 +extmaxY=6.25 +extminZ=2 +extmaxZ=25 + +slcminX=-10 +slcmaxX=-9.5 +slcminY=-5 +slcmaxY=6.25 +slcminZ=2 +slcmaxZ=25 + + +[volume 4] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=5 +MaterialName=RockMaterial + +extminX=-10 +extmaxX=-9.5 +extminY=-5 +extmaxY=6.25 +extminZ=-25 +extmaxZ=-2 + +slcminX=-10 +slcmaxX=-9.5 +slcminY=-5 +slcmaxY=6.25 +slcminZ=-25 +slcmaxZ=-2 + + +[volume 5] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=3 +MaterialName=SteelMaterial + +extminX=9 +extmaxX=13 +extminY=-2.25 +extmaxY=3.5 +extminZ=-2 +extmaxZ=2 + +slcminX=9 +slcmaxX=13 +slcminY=-2.25 +slcmaxY=3.5 +slcminZ=-2 +slcmaxZ=2 + + +[volume 6] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=5 +MaterialName=RockMaterial + +extminX=9.5 +extmaxX=10 +extminY=-5 +extmaxY=6.25 +extminZ=2 +extmaxZ=25 + +slcminX=9.5 +slcmaxX=10 +slcminY=-5 +slcmaxY=6.25 +slcminZ=2 +slcmaxZ=25 + + +[volume 7] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=5 +MaterialName=RockMaterial + +extminX=9.5 +extmaxX=10 +extminY=-5 +extmaxY=6.25 +extminZ=-25 +extmaxZ=-2 + +slcminX=9.5 +slcmaxX=10 +slcminY=-5 +slcmaxY=6.25 +slcminZ=-25 +slcmaxZ=-2 + + +[COLLISION] +name=md2_cv.sld +count=8 +extentcount=0 + diff --git a/CONTENT/RP/SOLIDS/MD3_CV.SLD b/CONTENT/RP/SOLIDS/MD3_CV.SLD new file mode 100644 index 0000000..945da6f --- /dev/null +++ b/CONTENT/RP/SOLIDS/MD3_CV.SLD @@ -0,0 +1,92 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=5 +MaterialName=RockMaterial + +extminX=-11 +extmaxX=11 +extminY=6.25 +extmaxY=8.75 +extminZ=-50 +extmaxZ=50 + +slcminX=-11 +slcmaxX=11 +slcminY=6.25 +slcmaxY=8.75 +slcminZ=-50 +slcmaxZ=50 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=5 +MaterialName=RockMaterial + +extminX=-11 +extmaxX=11 +extminY=-2.5 +extmaxY=0 +extminZ=-50 +extmaxZ=50 + +slcminX=-11 +slcmaxX=11 +slcminY=-2.5 +slcmaxY=0 +slcminZ=-50 +slcmaxZ=50 + + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=5 +MaterialName=RockMaterial + +extminX=9.5 +extmaxX=11 +extminY=0 +extmaxY=6.25 +extminZ=-50 +extmaxZ=50 + +slcminX=9.5 +slcmaxX=11 +slcminY=0 +slcmaxY=6.25 +slcminZ=-50 +slcmaxZ=50 + + +[volume 3] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=5 +MaterialName=RockMaterial + +extminX=-11 +extmaxX=-9.5 +extminY=0 +extmaxY=6.25 +extminZ=-50 +extmaxZ=50 + +slcminX=-11 +slcmaxX=-9.5 +slcminY=0 +slcmaxY=6.25 +slcminZ=-50 +slcmaxZ=50 + + +[COLLISION] +name=md3_cv.sld +count=4 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/MD4_CV.SLD b/CONTENT/RP/SOLIDS/MD4_CV.SLD new file mode 100644 index 0000000..e85d197 --- /dev/null +++ b/CONTENT/RP/SOLIDS/MD4_CV.SLD @@ -0,0 +1,92 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=5 +MaterialName=RockMaterial + +extminX=9.5 +extmaxX=10 +extminY=-10 +extmaxY=6.25 +extminZ=-50 +extmaxZ=50 + +slcminX=9.5 +slcmaxX=10 +slcminY=-10 +slcmaxY=6.25 +slcminZ=-50 +slcmaxZ=50 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=5 +MaterialName=RockMaterial + +extminX=-10 +extmaxX=-9.5 +extminY=-10 +extmaxY=6.25 +extminZ=-50 +extmaxZ=50 + +slcminX=-10 +slcmaxX=-9.5 +slcminY=-10 +slcmaxY=6.25 +slcminZ=-50 +slcmaxZ=50 + + +[volume 2] +TypeNumber=6 +TypeName=RampFacingPositiveZType +MaterialNumber=5 +MaterialName=RockMaterial + +extminX=-9.5 +extmaxX=9.5 +extminY=-10 +extmaxY=0 +extminZ=-50 +extmaxZ=50 + +slcminX=-9.5 +slcmaxX=9.5 +slcminY=-10 +slcmaxY=0 +slcminZ=-50 +slcmaxZ=50 + + +[volume 3] +TypeNumber=8 +TypeName=InvertedRampFacingNegativeZType +MaterialNumber=5 +MaterialName=RockMaterial + +extminX=-9.5 +extmaxX=9.5 +extminY=-3.75 +extmaxY=6.25 +extminZ=-50 +extmaxZ=50 + +slcminX=-9.5 +slcmaxX=9.5 +slcminY=-3.75 +slcmaxY=6.25 +slcminZ=-50 +slcmaxZ=50 + + +[COLLISION] +name=md4_cv.sld +count=4 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/ME1_CV.SLD b/CONTENT/RP/SOLIDS/ME1_CV.SLD new file mode 100644 index 0000000..a2589cc --- /dev/null +++ b/CONTENT/RP/SOLIDS/ME1_CV.SLD @@ -0,0 +1,217 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=6 +TypeName=RampFacingPositiveZType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-15 +extmaxX=15 +extminY=-15 +extmaxY=0 +extminZ=-50 +extmaxZ=47.5 + +slcminX=-15 +slcmaxX=15 +slcminY=-15 +slcmaxY=0 +slcminZ=-50 +slcmaxZ=47.5 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=1 +MaterialName=GravelMaterial + +extminX=-15 +extmaxX=15 +extminY=-15 +extmaxY=0 +extminZ=47.5 +extmaxZ=50 + +slcminX=-15 +slcmaxX=15 +slcminY=-15 +slcmaxY=0 +slcminZ=47.5 +slcmaxZ=50 + + +[volume 2] +TypeNumber=7 +TypeName=RampFacingPositiveXType +MaterialNumber=0 +MaterialName=StoneMaterial + +extminX=17 +extmaxX=21.7969 +extminY=0 +extmaxY=3.14844 +extminZ=-50 +extmaxZ=50 + +slcminX=17 +slcmaxX=21.7969 +slcminY=0 +slcmaxY=3.14844 +slcminZ=-50 +slcmaxZ=50 + + +[volume 3] +TypeNumber=5 +TypeName=RampFacingNegativeXType +MaterialNumber=0 +MaterialName=StoneMaterial + +extminX=-21.7969 +extmaxX=-17 +extminY=0 +extmaxY=3.14844 +extminZ=-50 +extmaxZ=50 + +slcminX=-21.7969 +slcmaxX=-17 +slcminY=0 +slcmaxY=3.14844 +slcminZ=-50 +slcmaxZ=50 + + +[volume 4] +TypeNumber=7 +TypeName=RampFacingPositiveXType +MaterialNumber=0 +MaterialName=StoneMaterial + +extminX=21.7969 +extmaxX=48 +extminY=3.14844 +extmaxY=49 +extminZ=-50 +extmaxZ=50 + +slcminX=21.7969 +slcmaxX=48 +slcminY=3.14844 +slcmaxY=49 +slcminZ=-50 +slcmaxZ=50 + + +[volume 5] +TypeNumber=5 +TypeName=RampFacingNegativeXType +MaterialNumber=0 +MaterialName=StoneMaterial + +extminX=-48 +extmaxX=-21.7969 +extminY=3.14844 +extmaxY=49 +extminZ=-50 +extmaxZ=50 + +slcminX=-48 +slcmaxX=-21.7969 +slcminY=3.14844 +slcmaxY=49 +slcminZ=-50 +slcmaxZ=50 + + +[volume 6] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-15 +extmaxX=15 +extminY=-3.25 +extmaxY=0 +extminZ=-50 +extmaxZ=-25 + +slcminX=-15 +slcmaxX=15 +slcminY=-3.25 +slcmaxY=0 +slcminZ=-50 +slcmaxZ=-25 + + +[volume 7] +TypeNumber=8 +TypeName=InvertedRampFacingNegativeZType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-15 +extmaxX=15 +extminY=-8.25 +extmaxY=-3.25 +extminZ=-50 +extmaxZ=-25 + +slcminX=-15 +slcmaxX=15 +slcminY=-8.25 +slcmaxY=-3.25 +slcminZ=-50 +slcmaxZ=-25 + + +[volume 8] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=1 +MaterialName=GravelMaterial + +extminX=15 +extmaxX=21.7969 +extminY=-15 +extmaxY=0 +extminZ=-50 +extmaxZ=50 + +slcminX=15 +slcmaxX=21.7969 +slcminY=-15 +slcmaxY=0 +slcminZ=-50 +slcmaxZ=50 + + +[volume 9] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=1 +MaterialName=GravelMaterial + +extminX=-21.7969 +extmaxX=-15 +extminY=-15 +extmaxY=0 +extminZ=-50 +extmaxZ=50 + +slcminX=-21.7969 +slcmaxX=-15 +slcminY=-15 +slcmaxY=0 +slcminZ=-50 +slcmaxZ=50 + + +[COLLISION] +name=me1_cv.sld +count=10 +extentcount=0 + diff --git a/CONTENT/RP/SOLIDS/ME2_CV.SLD b/CONTENT/RP/SOLIDS/ME2_CV.SLD new file mode 100644 index 0000000..78eaefe --- /dev/null +++ b/CONTENT/RP/SOLIDS/ME2_CV.SLD @@ -0,0 +1,260 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=5 +MaterialName=RockMaterial + +extminX=21.7812 +extmaxX=50 +extminY=0 +extmaxY=3.10156 +extminZ=-10.0312 +extmaxZ=-7.75 + +slcminX=21.7812 +slcmaxX=50 +slcminY=0 +slcmaxY=3.10156 +slcminZ=-10.0312 +slcmaxZ=-7.75 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=5 +MaterialName=RockMaterial + +extminX=21.7812 +extmaxX=50 +extminY=0 +extmaxY=3.10156 +extminZ=10.75 +extmaxZ=12.8984 + +slcminX=21.7812 +slcmaxX=50 +slcminY=0 +slcmaxY=3.10156 +slcminZ=10.75 +slcmaxZ=12.8984 + + +[volume 2] +TypeNumber=7 +TypeName=RampFacingPositiveXType +MaterialNumber=5 +MaterialName=RockMaterial + +extminX=26.5625 +extmaxX=50 +extminY=11.4844 +extmaxY=52.5 +extminZ=-7.75 +extmaxZ=10.75 + +slcminX=26.5625 +slcmaxX=50 +slcminY=11.4844 +slcmaxY=52.5 +slcminZ=-7.75 +slcmaxZ=10.75 + + +[volume 3] +TypeNumber=7 +TypeName=RampFacingPositiveXType +MaterialNumber=5 +MaterialName=RockMaterial + +extminX=21.7812 +extmaxX=50 +extminY=3.10156 +extmaxY=52.5 +extminZ=-50 +extmaxZ=-7.75 + +slcminX=21.7812 +slcmaxX=50 +slcminY=3.10156 +slcmaxY=52.5 +slcminZ=-50 +slcmaxZ=-7.75 + + +[volume 4] +TypeNumber=7 +TypeName=RampFacingPositiveXType +MaterialNumber=5 +MaterialName=RockMaterial + +extminX=21.7812 +extmaxX=50 +extminY=3.10156 +extmaxY=52.5 +extminZ=10.75 +extmaxZ=50 + +slcminX=21.7812 +slcmaxX=50 +slcminY=3.10156 +slcmaxY=52.5 +slcminZ=10.75 +slcmaxZ=50 + + +[volume 5] +TypeNumber=7 +TypeName=RampFacingPositiveXType +MaterialNumber=5 +MaterialName=RockMaterial + +extminX=17 +extmaxX=21.7812 +extminY=0 +extmaxY=3.10156 +extminZ=10.75 +extmaxZ=50 + +slcminX=17 +slcmaxX=21.7812 +slcminY=0 +slcmaxY=3.10156 +slcminZ=10.75 +slcmaxZ=50 + + +[volume 6] +TypeNumber=7 +TypeName=RampFacingPositiveXType +MaterialNumber=5 +MaterialName=RockMaterial + +extminX=17 +extmaxX=21.7812 +extminY=0 +extmaxY=3.10156 +extminZ=-50 +extmaxZ=-7.75 + +slcminX=17 +slcmaxX=21.7812 +slcminY=0 +slcmaxY=3.10156 +slcminZ=-50 +slcmaxZ=-7.75 + + +[volume 7] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=1 +MaterialName=GravelMaterial + +extminX=-17 +extmaxX=50 +extminY=-8.25 +extmaxY=0 +extminZ=-50 +extmaxZ=50 + +slcminX=-17 +slcmaxX=50 +slcminY=-8.25 +slcmaxY=0 +slcminZ=-50 +slcmaxZ=50 + + +[volume 8] +TypeNumber=2 +TypeName=ConeType +MaterialNumber=5 +MaterialName=RockMaterial + +extminX=-69 +extmaxX=2 +extminY=0 +extmaxY=4 +extminZ=-41 +extmaxZ=30 + +slcminX=-21.7969 +slcmaxX=2 +slcminY=0 +slcmaxY=3.14844 +slcminZ=-37 +slcmaxZ=25.5 + + +[volume 9] +TypeNumber=5 +TypeName=RampFacingNegativeXType +MaterialNumber=5 +MaterialName=RockMaterial + +extminX=-48 +extmaxX=-21.7969 +extminY=3.14844 +extmaxY=49 +extminZ=-50 +extmaxZ=50 + +slcminX=-48 +slcmaxX=-21.7969 +slcminY=3.14844 +slcmaxY=49 +slcminZ=-50 +slcmaxZ=50 + + +[volume 10] +TypeNumber=5 +TypeName=RampFacingNegativeXType +MaterialNumber=5 +MaterialName=RockMaterial + +extminX=-21.7969 +extmaxX=-17 +extminY=0 +extmaxY=3.14844 +extminZ=-50 +extmaxZ=50 + +slcminX=-21.7969 +slcmaxX=-17 +slcminY=0 +slcmaxY=3.14844 +slcminZ=-50 +slcmaxZ=50 + + +[volume 11] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=5 +MaterialName=RockMaterial + +extminX=23.8672 +extmaxX=50 +extminY=6.75 +extmaxY=11.4844 +extminZ=-7.75 +extmaxZ=10.75 + +slcminX=23.8672 +slcmaxX=50 +slcminY=6.75 +slcmaxY=11.4844 +slcminZ=-7.75 +slcmaxZ=10.75 + + +[COLLISION] +name=me2_cv.sld +count=12 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/ME4_CV.SLD b/CONTENT/RP/SOLIDS/ME4_CV.SLD new file mode 100644 index 0000000..642449a --- /dev/null +++ b/CONTENT/RP/SOLIDS/ME4_CV.SLD @@ -0,0 +1,134 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=1 +MaterialName=GravelMaterial + +extminX=-54.7969 +extmaxX=-10 +extminY=-5 +extmaxY=55 +extminZ=25 +extmaxZ=50 + +slcminX=-54.7969 +slcmaxX=-10 +slcminY=-5 +slcmaxY=55 +slcminZ=25 +slcmaxZ=50 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=1 +MaterialName=GravelMaterial + +extminX=10 +extmaxX=54.7969 +extminY=-5 +extmaxY=55 +extminZ=25 +extmaxZ=50 + +slcminX=10 +slcmaxX=54.7969 +slcminY=-5 +slcmaxY=55 +slcminZ=25 +slcmaxZ=50 + + +[volume 2] +TypeNumber=8 +TypeName=InvertedRampFacingNegativeZType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-10 +extmaxX=10 +extminY=7.75 +extmaxY=9.75 +extminZ=25 +extmaxZ=37 + +slcminX=-10 +slcmaxX=10 +slcminY=7.75 +slcmaxY=9.75 +slcminZ=25 +slcmaxZ=37 + + +[volume 3] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=1 +MaterialName=GravelMaterial + +extminX=-10 +extmaxX=10 +extminY=-5 +extmaxY=2 +extminZ=25 +extmaxZ=50 + +slcminX=-10 +slcmaxX=10 +slcminY=-5 +slcmaxY=2 +slcminZ=25 +slcmaxZ=50 + + +[volume 4] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-10 +extmaxX=10 +extminY=9.75 +extmaxY=14 +extminZ=25 +extmaxZ=37 + +slcminX=-10 +slcmaxX=10 +slcminY=9.75 +slcmaxY=14 +slcminZ=25 +slcmaxZ=37 + + +[volume 5] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-10 +extmaxX=10 +extminY=14 +extmaxY=48 +extminZ=25 +extmaxZ=30 + +slcminX=-10 +slcmaxX=10 +slcminY=14 +slcmaxY=48 +slcminZ=25 +slcmaxZ=30 + + +[COLLISION] +name=me4_cv.sld +count=6 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/MED_CV.SLD b/CONTENT/RP/SOLIDS/MED_CV.SLD new file mode 100644 index 0000000..9e12d62 --- /dev/null +++ b/CONTENT/RP/SOLIDS/MED_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=5 +TypeName=RampFacingNegativeXType +MaterialNumber=3 +MaterialName=SteelMaterial + +extminX=0.101562 +extmaxX=2.39844 +extminY=5.5 +extmaxY=14.8984 +extminZ=-9 +extmaxZ=9 + +slcminX=0.101562 +slcmaxX=2.39844 +slcminY=5.5 +slcmaxY=14.8984 +slcminZ=-9 +slcmaxZ=9 + + +[COLLISION] +name=med_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/MU_CV.SLD b/CONTENT/RP/SOLIDS/MU_CV.SLD new file mode 100644 index 0000000..da51867 --- /dev/null +++ b/CONTENT/RP/SOLIDS/MU_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-4.5 +extmaxX=4.5 +extminY=-1.5 +extmaxY=1.5 +extminZ=-4.5 +extmaxZ=4.5 + +slcminX=-4.5 +slcmaxX=4.5 +slcminY=-1.5 +slcmaxY=1.5 +slcminZ=-4.5 +slcmaxZ=4.5 + + +[COLLISION] +name=mu_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/OA1_CV.SLD b/CONTENT/RP/SOLIDS/OA1_CV.SLD new file mode 100644 index 0000000..f4b8286 --- /dev/null +++ b/CONTENT/RP/SOLIDS/OA1_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-30 +extmaxX=30 +extminY=-0.75 +extmaxY=10 +extminZ=0 +extmaxZ=50 + +slcminX=-30 +slcmaxX=30 +slcminY=-0.75 +slcmaxY=10 +slcminZ=0 +slcmaxZ=50 + + +[COLLISION] +name=oa1_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/OAO_CV.SLD b/CONTENT/RP/SOLIDS/OAO_CV.SLD new file mode 100644 index 0000000..a3b7655 --- /dev/null +++ b/CONTENT/RP/SOLIDS/OAO_CV.SLD @@ -0,0 +1,155 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-50 +extmaxX=50 +extminY=10 +extmaxY=15 +extminZ=17 +extmaxZ=34 + +slcminX=-50 +slcmaxX=50 +slcminY=10 +slcmaxY=15 +slcminZ=17 +slcmaxZ=34 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=8 +extmaxX=16 +extminY=10 +extmaxY=15 +extminZ=34 +extmaxZ=50 + +slcminX=8 +slcmaxX=16 +slcminY=10 +slcmaxY=15 +slcminZ=34 +slcmaxZ=50 + + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=8 +extmaxX=16 +extminY=10 +extmaxY=15 +extminZ=-50 +extmaxZ=-34 + +slcminX=8 +slcmaxX=16 +slcminY=10 +slcmaxY=15 +slcminZ=-50 +slcmaxZ=-34 + + +[volume 3] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=38 +extmaxX=50 +extminY=10 +extmaxY=20 +extminZ=-50 +extmaxZ=50 + +slcminX=38 +slcmaxX=50 +slcminY=10 +slcmaxY=20 +slcminZ=-50 +slcmaxZ=50 + + +[volume 4] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-50 +extmaxX=-38 +extminY=10 +extmaxY=20 +extminZ=-50 +extmaxZ=50 + +slcminX=-50 +slcmaxX=-38 +slcminY=10 +slcmaxY=20 +slcminZ=-50 +slcmaxZ=50 + + +[volume 5] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-50 +extmaxX=50 +extminY=15 +extmaxY=20 +extminZ=-50 +extmaxZ=50 + +slcminX=-50 +slcmaxX=50 +slcminY=15 +slcmaxY=20 +slcminZ=-50 +slcmaxZ=50 + + +[volume 6] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-50 +extmaxX=50 +extminY=10 +extmaxY=15 +extminZ=-34 +extmaxZ=-16 + +slcminX=-50 +slcmaxX=50 +slcminY=10 +slcmaxY=15 +slcminZ=-34 +slcmaxZ=-16 + + +[COLLISION] +name=oao_cv.sld +count=7 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/ODC_CV.SLD b/CONTENT/RP/SOLIDS/ODC_CV.SLD new file mode 100644 index 0000000..5848351 --- /dev/null +++ b/CONTENT/RP/SOLIDS/ODC_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-6.46094 +extmaxX=44.4766 +extminY=-3.02344 +extmaxY=3.3125 +extminZ=-2.73438 +extmaxZ=2.73438 + +slcminX=-6.46094 +slcmaxX=44.4766 +slcminY=-3.02344 +slcmaxY=3.3125 +slcminZ=-2.73438 +slcmaxZ=2.73438 + + +[COLLISION] +name=odc_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/OTTO.XST b/CONTENT/RP/SOLIDS/OTTO.XST new file mode 100644 index 0000000..3cfe726 --- /dev/null +++ b/CONTENT/RP/SOLIDS/OTTO.XST @@ -0,0 +1,149 @@ +[LAB_ONLY] + +//[extent 0] +//extminX=-75 +//extmaxX=75 +//extminY=-50 +//extmaxY=75 +//extminZ=-4125 +//extmaxZ=2220 + +[extent 0] +extminX=-15 +extmaxX=15 +extminY=0 +extmaxY=50 +extminZ=1220 +extmaxZ=1735 + +[extent 1] +extminX=-75 +extmaxX=75 +extminY=0 +extmaxY=50 +extminZ=950 +extmaxZ=1220 + +[extent 2] +extminX=-30 +extmaxX=30 +extminY=10 +extmaxY=23 +extminZ=350 +extmaxZ=950 + +[extent 3] +extminX=-75 +extmaxX=75 +extminY=0 +extmaxY=50 +extminZ=50 +extmaxZ=350 + +[extent 4] +extminX=-30 +extmaxX=30 +extminY=15 +extmaxY=28 +extminZ=-1050 +extmaxZ=50 + +[extent 5] +extminX=-75 +extmaxX=75 +extminY=-10 +extmaxY=40 +extminZ=-3250 +extmaxZ=-1050 + +[extent 6] +extminX=-15 +extmaxX=15 +extminY=-10 +extmaxY=50 +extminZ=-3325 +extmaxZ=-3250 + +[extent 7] +extminX=-440 +extmaxX=360 +extminY=-90 +extmaxY=50 +extminZ=-3710 +extmaxZ=-3325 + +[extent 8] +extminX=-25 +extmaxX=360 +extminY=-90 +extmaxY=50 +extminZ=-3740 +extmaxZ=-3710 + +[extent 9] +extminX=-440 +extmaxX=-55 +extminY=-90 +extmaxY=50 +extminZ=-3740 +extmaxZ=-3710 + +[extent 10] +extminX=-440 +extmaxX=360 +extminY=-90 +extmaxY=50 +extminZ=-4125 +extmaxZ=-3740 + + +[extent 11] +extminX=-360 +extmaxX=440 +extminY=5 +extmaxY=145 +extminZ=1420 +extmaxZ=1805 + + +[extent 12] +extminX=-360 +extmaxX=440 +extminY=5 +extmaxY=145 +extminZ=1835 +extmaxZ=2220 + + +[extent 13] +extminX=55 +extmaxX=440 +extminY=5 +extmaxY=145 +extminZ=1805 +extmaxZ=1835 + + +[extent 14] +extminX=-360 +extmaxX=25 +extminY=5 +extmaxY=145 +extminZ=1805 +extmaxZ=1835 + +[extent 15] +extminX=-30 +extmaxX=30 +extminY=-35 +extmaxY=0 +extminZ=-1450 +extmaxZ=250 + + +[COLLISION] +name=otto.xst +count=0 +extentcount=16 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/PAIN.XST b/CONTENT/RP/SOLIDS/PAIN.XST new file mode 100644 index 0000000..2907c50 --- /dev/null +++ b/CONTENT/RP/SOLIDS/PAIN.XST @@ -0,0 +1,116 @@ +[LAB_ONLY] + +[extent 0] +extminX=-20 +extmaxX=20 +extminY=-80 +extmaxY=0 +extminZ=675 +extmaxZ=2500 + + +[extent 1] +extminX=-20 +extmaxX=20 +extminY=15 +extmaxY=45 +extminZ=1195 +extmaxZ=2255 + + +[extent 2] +extminX=-50 +extmaxX=50 +extminY=0 +extmaxY=50 +extminZ=2255 +extmaxZ=3200 + + +[extent 3] +extminX=-435 +extmaxX=365 +extminY=-45 +extmaxY=55 +extminZ=-2630 +extmaxZ=-1825 + + +[extent 4] +extminX=-15 +extmaxX=25 +extminY=0 +extmaxY=50 +extminZ=-1825 +extmaxZ=-1225 + + +[extent 5] +extminX=-45 +extmaxX=55 +extminY=0 +extmaxY=50 +extminZ=-1225 +extmaxZ=-725 + + +[extent 6] +extminX=-30 +extmaxX=30 +extminY=25 +extmaxY=35 +extminZ=-725 +extmaxZ=75 + + +[extent 7] +extminX=-45 +extmaxX=55 +extminY=0 +extmaxY=50 +extminZ=75 +extmaxZ=1195 + + +[extent 8] +extminX=-340 +extmaxX=-50 +extminY=5 +extmaxY=50 +extminZ=2835 +extmaxZ=2890 + + +[extent 9] +extminX=-450 +extmaxX=-340 +extminY=-5 +extmaxY=55 +extminZ=2500 +extmaxZ=3925 + + +[extent 10] +extminX=-775 +extmaxX=-125 +extminY=0 +extmaxY=100 +extminZ=4500 +extmaxZ=5150 + + +[extent 11] +extminX=-415 +extmaxX=-385 +extminY=0 +extmaxY=10 +extminZ=3925 +extmaxZ=4500 + + +[COLLISION] +name=pain.xst +count=0 +extentcount=12 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/PIT1_CV.SLD b/CONTENT/RP/SOLIDS/PIT1_CV.SLD new file mode 100644 index 0000000..4435913 --- /dev/null +++ b/CONTENT/RP/SOLIDS/PIT1_CV.SLD @@ -0,0 +1,308 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-250 +extmaxX=250 +extminY=10 +extmaxY=15 +extminZ=-50 +extmaxZ=50 + +slcminX=-250 +slcmaxX=250 +slcminY=10 +slcmaxY=15 +slcminZ=-50 +slcmaxZ=50 + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-150 +extmaxX=150 +extminY=10 +extmaxY=15 +extminZ=50 +extmaxZ=150 + +slcminX=-150 +slcmaxX=150 +slcminY=10 +slcmaxY=15 +slcminZ=50 +slcmaxZ=150 + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-150 +extmaxX=150 +extminY=10 +extmaxY=15 +extminZ=-150 +extmaxZ=-50 + +slcminX=-150 +slcmaxX=150 +slcminY=10 +slcmaxY=15 +slcminZ=-150 +slcmaxZ=-50 + +[volume 3] +TypeNumber=14 +TypeName=WedgeFacingPositiveZandNegativeXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-150 +extmaxX=-50 +extminY=0 +extmaxY=10 +extminZ=50 +extmaxZ=150 + +slcminX=-150 +slcmaxX=-50 +slcminY=0 +slcmaxY=10 +slcminZ=50 +slcmaxZ=150 + +[volume 4] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-50 +extmaxX=50 +extminY=0 +extmaxY=10 +extminZ=150 +extmaxZ=155 + +slcminX=-50 +slcmaxX=50 +slcminY=0 +slcmaxY=10 +slcminZ=150 +slcmaxZ=155 + +[volume 5] +TypeNumber=13 +TypeName=WedgeFacingNegativeZandNegativeXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-150 +extmaxX=-50 +extminY=0 +extmaxY=10 +extminZ=-150 +extmaxZ=-50 + +slcminX=-150 +slcmaxX=-50 +slcminY=0 +slcmaxY=10 +slcminZ=-150 +slcmaxZ=-50 + +[volume 6] +TypeNumber=15 +TypeName=WedgeFacingPositiveZandPositiveXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=50 +extmaxX=150 +extminY=0 +extmaxY=10 +extminZ=50 +extmaxZ=150 + +slcminX=50 +slcmaxX=150 +slcminY=0 +slcmaxY=10 +slcminZ=50 +slcmaxZ=150 + +[volume 7] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-50 +extmaxX=50 +extminY=0 +extmaxY=10 +extminZ=-155 +extmaxZ=-150 + +slcminX=-50 +slcmaxX=50 +slcminY=0 +slcmaxY=10 +slcminZ=-155 +slcmaxZ=-150 + +[volume 8] +TypeNumber=12 +TypeName=WedgeFacingNegativeZandPositiveXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=50 +extmaxX=150 +extminY=0 +extmaxY=10 +extminZ=-150 +extmaxZ=-50 + +slcminX=50 +slcmaxX=150 +slcminY=0 +slcmaxY=10 +slcminZ=-150 +slcmaxZ=-50 + +[volume 9] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-250 +extmaxX=-150 +extminY=0 +extmaxY=10 +extminZ=-55 +extmaxZ=-50 + +slcminX=-250 +slcmaxX=-150 +slcminY=0 +slcmaxY=10 +slcminZ=-55 +slcmaxZ=-50 + +[volume 10] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-250 +extmaxX=-150 +extminY=0 +extmaxY=10 +extminZ=50 +extmaxZ=55 + +slcminX=-250 +slcmaxX=-150 +slcminY=0 +slcmaxY=10 +slcminZ=50 +slcmaxZ=55 + +[volume 11] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=150 +extmaxX=250 +extminY=0 +extmaxY=10 +extminZ=-55 +extmaxZ=-50 + +slcminX=150 +slcmaxX=250 +slcminY=0 +slcmaxY=10 +slcminZ=-55 +slcmaxZ=-50 + +[volume 12] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=150 +extmaxX=250 +extminY=0 +extmaxY=10 +extminZ=50 +extmaxZ=55 + +slcminX=150 +slcmaxX=250 +slcminY=0 +slcmaxY=10 +slcminZ=50 +slcmaxZ=55 + +[volume 13] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-250 +extmaxX=-245 +extminY=-100 +extmaxY=0 +extminZ=-50 +extmaxZ=50 + +slcminX=-250 +slcmaxX=-245 +slcminY=-100 +slcmaxY=0 +slcminZ=-50 +slcmaxZ=50 + +[volume 14] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=245 +extmaxX=250 +extminY=-100 +extmaxY=0 +extminZ=-50 +extmaxZ=50 + +slcminX=245 +slcmaxX=250 +slcminY=-100 +slcmaxY=0 +slcminZ=-50 +slcmaxZ=50 + + +[COLLISION] +name=pit1_cv.sld +count=15 +extentcount=0 +evilextentcount=0 diff --git a/CONTENT/RP/SOLIDS/PIT2_CV.SLD b/CONTENT/RP/SOLIDS/PIT2_CV.SLD new file mode 100644 index 0000000..0cd08ed --- /dev/null +++ b/CONTENT/RP/SOLIDS/PIT2_CV.SLD @@ -0,0 +1,327 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-250 +extmaxX=150 +extminY=10 +extmaxY=15 +extminZ=-50 +extmaxZ=50 + +slcminX=-250 +slcmaxX=150 +slcminY=10 +slcmaxY=15 +slcminZ=-50 +slcmaxZ=50 + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-150 +extmaxX=150 +extminY=10 +extmaxY=15 +extminZ=50 +extmaxZ=150 + +slcminX=-150 +slcmaxX=150 +slcminY=10 +slcmaxY=15 +slcminZ=50 +slcmaxZ=150 + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-150 +extmaxX=150 +extminY=10 +extmaxY=15 +extminZ=-150 +extmaxZ=-50 + +slcminX=-150 +slcmaxX=150 +slcminY=10 +slcmaxY=15 +slcminZ=-150 +slcmaxZ=-50 + +[volume 3] +TypeNumber=14 +TypeName=WedgeFacingPositiveZandNegativeXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-150 +extmaxX=-50 +extminY=-5 +extmaxY=15 +extminZ=50 +extmaxZ=150 + +slcminX=-150 +slcmaxX=-50 +slcminY=-5 +slcmaxY=15 +slcminZ=50 +slcmaxZ=150 + +[volume 4] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-50 +extmaxX=50 +extminY=-5 +extmaxY=15 +extminZ=150 +extmaxZ=155 + +slcminX=-50 +slcmaxX=50 +slcminY=-5 +slcmaxY=15 +slcminZ=150 +slcmaxZ=155 + +[volume 5] +TypeNumber=13 +TypeName=WedgeFacingNegativeZandNegativeXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-150 +extmaxX=-50 +extminY=-5 +extmaxY=15 +extminZ=-150 +extmaxZ=-50 + +slcminX=-150 +slcmaxX=-50 +slcminY=-5 +slcmaxY=15 +slcminZ=-150 +slcmaxZ=-50 + +[volume 6] +TypeNumber=15 +TypeName=WedgeFacingPositiveZandPositiveXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=50 +extmaxX=150 +extminY=-5 +extmaxY=15 +extminZ=50 +extmaxZ=150 + +slcminX=50 +slcmaxX=150 +slcminY=-5 +slcmaxY=15 +slcminZ=50 +slcmaxZ=150 + +[volume 7] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=150 +extmaxX=155 +extminY=-5 +extmaxY=15 +extminZ=-50 +extmaxZ=50 + +slcminX=150 +slcmaxX=155 +slcminY=-5 +slcmaxY=15 +slcminZ=-50 +slcmaxZ=50 + +[volume 8] +TypeNumber=12 +TypeName=WedgeFacingNegativeZandPositiveXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=50 +extmaxX=150 +extminY=-5 +extmaxY=15 +extminZ=-150 +extmaxZ=-50 + +slcminX=50 +slcmaxX=150 +slcminY=-5 +slcmaxY=15 +slcminZ=-150 +slcmaxZ=-50 + +[volume 9] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-250 +extmaxX=-150 +extminY=-5 +extmaxY=15 +extminZ=-55 +extmaxZ=-50 + +slcminX=-250 +slcmaxX=-150 +slcminY=-5 +slcmaxY=15 +slcminZ=-55 +slcmaxZ=-50 + +[volume 10] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-250 +extmaxX=-150 +extminY=-5 +extmaxY=15 +extminZ=50 +extmaxZ=55 + +slcminX=-250 +slcmaxX=-150 +slcminY=-5 +slcmaxY=15 +slcminZ=50 +slcmaxZ=55 + +[volume 11] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-55 +extmaxX=-50 +extminY=-5 +extmaxY=15 +extminZ=-250 +extmaxZ=-150 + +slcminX=-55 +slcmaxX=-50 +slcminY=-5 +slcmaxY=15 +slcminZ=-250 +slcmaxZ=-150 + +[volume 12] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=50 +extmaxX=55 +extminY=-5 +extmaxY=15 +extminZ=-250 +extmaxZ=-150 + +slcminX=50 +slcmaxX=55 +slcminY=-5 +slcmaxY=15 +slcminZ=-250 +slcmaxZ=-150 + +[volume 13] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-250 +extmaxX=-245 +extminY=-100 +extmaxY=0 +extminZ=-50 +extmaxZ=50 + +slcminX=-250 +slcmaxX=-245 +slcminY=-100 +slcmaxY=0 +slcminZ=-50 +slcmaxZ=50 + +[volume 14] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-50 +extmaxX=50 +extminY=-100 +extmaxY=0 +extminZ=-250 +extmaxZ=-245 + +slcminX=-50 +slcmaxX=50 +slcminY=-100 +slcmaxY=0 +slcminZ=-250 +slcmaxZ=-245 + +[volume 15] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-50 +extmaxX=50 +extminY=10 +extmaxY=15 +extminZ=-250 +extmaxZ=-150 + +slcminX=-50 +slcmaxX=50 +slcminY=10 +slcmaxY=15 +slcminZ=-250 +slcmaxZ=-150 + +[COLLISION] +name=pit2_cv.sld +count=16 +extentcount=0 +evilextentcount=0 diff --git a/CONTENT/RP/SOLIDS/PM1_CV.SLD b/CONTENT/RP/SOLIDS/PM1_CV.SLD new file mode 100644 index 0000000..a8fba9f --- /dev/null +++ b/CONTENT/RP/SOLIDS/PM1_CV.SLD @@ -0,0 +1,113 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-3.25 +extmaxX=3.25 +extminY=0 +extmaxY=3.85156 +extminZ=-3.20312 +extmaxZ=3.29688 + +slcminX=-3.25 +slcmaxX=3.25 +slcminY=0 +slcmaxY=3.85156 +slcminZ=-3.20312 +slcmaxZ=3.29688 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=0 +extmaxX=9.60156 +extminY=0 +extmaxY=12.9531 +extminZ=-9.54688 +extmaxZ=0.046875 + +slcminX=0 +slcmaxX=9.60156 +slcminY=0 +slcmaxY=12.9531 +slcminZ=-9.54688 +slcmaxZ=0.046875 + + +[volume 2] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-8.14844 +extmaxX=8.14844 +extminY=3.85156 +extmaxY=9.54688 +extminZ=-8.10156 +extmaxZ=8.20312 + +slcminX=-8.14844 +slcmaxX=8.14844 +slcminY=3.85156 +slcmaxY=9.54688 +slcminZ=-8.10156 +slcmaxZ=8.20312 + + +[volume 3] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-4.79688 +extmaxX=0 +extminY=9.54688 +extmaxY=11.4531 +extminZ=-2.85156 +extmaxZ=-0.953125 + +slcminX=-4.79688 +slcmaxX=0 +slcminY=9.54688 +slcmaxY=11.4531 +slcminZ=-2.85156 +slcmaxZ=-0.953125 + + +[volume 4] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=0.953125 +extmaxX=5.75 +extminY=0 +extmaxY=9.70312 +extminZ=-11.4531 +extmaxZ=-9.54688 + +slcminX=0.953125 +slcmaxX=5.75 +slcminY=0 +slcmaxY=9.70312 +slcminZ=-11.4531 +slcmaxZ=-9.54688 + + +[COLLISION] +name=pm1_cv.sld +count=5 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/PO_CV.SLD b/CONTENT/RP/SOLIDS/PO_CV.SLD new file mode 100644 index 0000000..7552d29 --- /dev/null +++ b/CONTENT/RP/SOLIDS/PO_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=3 +MaterialName=SteelMaterial + +extminX=-3.33594 +extmaxX=3.33594 +extminY=-2.33594 +extmaxY=1.36719 +extminZ=-3.75781 +extmaxZ=2.92188 + +slcminX=-3.33594 +slcmaxX=3.33594 +slcminY=-2.33594 +slcmaxY=1.36719 +slcminZ=-3.75781 +slcmaxZ=2.92188 + + +[COLLISION] +name=po_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/PP1_CV.SLD b/CONTENT/RP/SOLIDS/PP1_CV.SLD new file mode 100644 index 0000000..5d7468f --- /dev/null +++ b/CONTENT/RP/SOLIDS/PP1_CV.SLD @@ -0,0 +1,92 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=7 +TypeName=RampFacingPositiveXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=20.5 +extmaxX=25.2031 +extminY=0 +extmaxY=10 +extminZ=-100 +extmaxZ=-87.5 + +slcminX=20.5 +slcmaxX=25.2031 +slcminY=0 +slcmaxY=10 +slcminZ=-100 +slcmaxZ=-87.5 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=25.2031 +extmaxX=31.3984 +extminY=0 +extmaxY=10 +extminZ=-100 +extmaxZ=-87.5 + +slcminX=25.2031 +slcmaxX=31.3984 +slcminY=0 +slcmaxY=10 +slcminZ=-100 +slcmaxZ=-87.5 + + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-31.3984 +extmaxX=-25.2031 +extminY=0 +extmaxY=10 +extminZ=-100 +extmaxZ=-87.5 + +slcminX=-31.3984 +slcmaxX=-25.2031 +slcminY=0 +slcmaxY=10 +slcminZ=-100 +slcmaxZ=-87.5 + + +[volume 3] +TypeNumber=5 +TypeName=RampFacingNegativeXType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-25.2031 +extmaxX=-20.5 +extminY=0 +extmaxY=10 +extminZ=-100 +extmaxZ=-87.5 + +slcminX=-25.2031 +slcmaxX=-20.5 +slcminY=0 +slcmaxY=10 +slcminZ=-100 +slcmaxZ=-87.5 + + +[COLLISION] +name=pp1_cv.sld +count=4 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/PP2_CV.SLD b/CONTENT/RP/SOLIDS/PP2_CV.SLD new file mode 100644 index 0000000..ebf094c --- /dev/null +++ b/CONTENT/RP/SOLIDS/PP2_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-0.351562 +extmaxX=0.351562 +extminY=0 +extmaxY=1.5 +extminZ=0 +extmaxZ=1.39844 + +slcminX=-0.351562 +slcmaxX=0.351562 +slcminY=0 +slcmaxY=1.5 +slcminZ=0 +slcmaxZ=1.39844 + + +[COLLISION] +name=pp2_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/PUCKLAND.XST b/CONTENT/RP/SOLIDS/PUCKLAND.XST new file mode 100644 index 0000000..152f9ed --- /dev/null +++ b/CONTENT/RP/SOLIDS/PUCKLAND.XST @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/CONTENT/RP/SOLIDS/PZ1_CV.SLD b/CONTENT/RP/SOLIDS/PZ1_CV.SLD new file mode 100644 index 0000000..f76d514 --- /dev/null +++ b/CONTENT/RP/SOLIDS/PZ1_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=18 +TypeName=ZAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-1 +extmaxX=1 +extminY=-1 +extmaxY=1 +extminZ=-50 +extmaxZ=50 + +slcminX=-1 +slcmaxX=1 +slcminY=-1 +slcmaxY=1 +slcminZ=-50 +slcmaxZ=50 + + +[COLLISION] +name=pz1_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/PZ2_CV.SLD b/CONTENT/RP/SOLIDS/PZ2_CV.SLD new file mode 100644 index 0000000..a8cb67f --- /dev/null +++ b/CONTENT/RP/SOLIDS/PZ2_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=18 +TypeName=ZAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2 +extmaxX=2 +extminY=-2 +extmaxY=2 +extminZ=-50 +extmaxZ=50 + +slcminX=-2 +slcmaxX=2 +slcminY=-2 +slcmaxY=2 +slcminZ=-50 +slcmaxZ=50 + + +[COLLISION] +name=pz2_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/PZ3_CV.SLD b/CONTENT/RP/SOLIDS/PZ3_CV.SLD new file mode 100644 index 0000000..de9be7c --- /dev/null +++ b/CONTENT/RP/SOLIDS/PZ3_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=18 +TypeName=ZAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2 +extmaxX=2 +extminY=-2 +extmaxY=2 +extminZ=-25 +extmaxZ=25 + +slcminX=-2 +slcmaxX=2 +slcminY=-2 +slcmaxY=2 +slcminZ=-25 +slcmaxZ=25 + + +[COLLISION] +name=pz3_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/PZ4_CV.SLD b/CONTENT/RP/SOLIDS/PZ4_CV.SLD new file mode 100644 index 0000000..2290387 --- /dev/null +++ b/CONTENT/RP/SOLIDS/PZ4_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2 +extmaxX=2 +extminY=-25 +extmaxY=25 +extminZ=-2 +extmaxZ=2 + +slcminX=-2 +slcmaxX=2 +slcminY=-25 +slcmaxY=25 +slcminZ=-2 +slcmaxZ=2 + + +[COLLISION] +name=pz4_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/RL1_CV.SLD b/CONTENT/RP/SOLIDS/RL1_CV.SLD new file mode 100644 index 0000000..bdf4404 --- /dev/null +++ b/CONTENT/RP/SOLIDS/RL1_CV.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-4.75 +extmaxX=4.75 +extminY=0 +extmaxY=10 +extminZ=30 +extmaxZ=40 + +slcminX=-4.75 +slcmaxX=4.75 +slcminY=0 +slcmaxY=10 +slcminZ=30 +slcmaxZ=40 + + +[volume 1] +TypeNumber=6 +TypeName=RampFacingPositiveZType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-4.75 +extmaxX=4.75 +extminY=0 +extmaxY=10 +extminZ=-40 +extmaxZ=30 + +slcminX=-4.75 +slcmaxX=4.75 +slcminY=0 +slcmaxY=10 +slcminZ=-40 +slcmaxZ=30 + + +[COLLISION] +name=rl1_cv.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/RL2_CV.SLD b/CONTENT/RP/SOLIDS/RL2_CV.SLD new file mode 100644 index 0000000..332bcc9 --- /dev/null +++ b/CONTENT/RP/SOLIDS/RL2_CV.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=6 +TypeName=RampFacingPositiveZType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-5.14844 +extmaxX=5.14844 +extminY=0 +extmaxY=20 +extminZ=-82.5 +extmaxZ=75 + +slcminX=-5.14844 +slcmaxX=5.14844 +slcminY=0 +slcmaxY=20 +slcminZ=-82.5 +slcmaxZ=75 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-6 +extmaxX=6 +extminY=0 +extmaxY=20 +extminZ=75 +extmaxZ=82.5 + +slcminX=-6 +slcmaxX=6 +slcminY=0 +slcmaxY=20 +slcminZ=75 +slcmaxZ=82.5 + + +[COLLISION] +name=rl2_cv.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/RL3_CV.SLD b/CONTENT/RP/SOLIDS/RL3_CV.SLD new file mode 100644 index 0000000..21cf6dc --- /dev/null +++ b/CONTENT/RP/SOLIDS/RL3_CV.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=6 +TypeName=RampFacingPositiveZType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-5 +extmaxX=5 +extminY=0 +extmaxY=30 +extminZ=-105 +extmaxZ=98.3984 + +slcminX=-5 +slcmaxX=5 +slcminY=0 +slcmaxY=30 +slcminZ=-105 +slcmaxZ=98.3984 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-6 +extmaxX=6 +extminY=0 +extmaxY=30 +extminZ=98.3984 +extmaxZ=105 + +slcminX=-6 +slcmaxX=6 +slcminY=0 +slcmaxY=30 +slcminZ=98.3984 +slcmaxZ=105 + + +[COLLISION] +name=rl3_cv.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/RP0_CV.SLD b/CONTENT/RP/SOLIDS/RP0_CV.SLD new file mode 100644 index 0000000..a71e758 --- /dev/null +++ b/CONTENT/RP/SOLIDS/RP0_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=4 +TypeName=RampFacingNegativeZType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-50 +extmaxX=50 +extminY=-5 +extmaxY=2.5 +extminZ=0 +extmaxZ=50 + +slcminX=-50 +slcmaxX=50 +slcminY=-5 +slcmaxY=2.5 +slcminZ=0 +slcmaxZ=50 + + +[COLLISION] +name=rp0_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/RP1_CV.SLD b/CONTENT/RP/SOLIDS/RP1_CV.SLD new file mode 100644 index 0000000..1903a8e --- /dev/null +++ b/CONTENT/RP/SOLIDS/RP1_CV.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-4.75 +extmaxX=4.75 +extminY=0 +extmaxY=10 +extminZ=15 +extmaxZ=20 + +slcminX=-4.75 +slcmaxX=4.75 +slcminY=0 +slcmaxY=10 +slcminZ=15 +slcmaxZ=20 + + +[volume 1] +TypeNumber=6 +TypeName=RampFacingPositiveZType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-4.75 +extmaxX=4.75 +extminY=0 +extmaxY=10 +extminZ=-20 +extmaxZ=15 + +slcminX=-4.75 +slcmaxX=4.75 +slcminY=0 +slcmaxY=10 +slcminZ=-20 +slcmaxZ=15 + + +[COLLISION] +name=rp1_cv.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/RP2_CV.SLD b/CONTENT/RP/SOLIDS/RP2_CV.SLD new file mode 100644 index 0000000..fae9a6c --- /dev/null +++ b/CONTENT/RP/SOLIDS/RP2_CV.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=6 +TypeName=RampFacingPositiveZType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-5.14844 +extmaxX=5.14844 +extminY=0 +extmaxY=20 +extminZ=-55 +extmaxZ=50 + +slcminX=-5.14844 +slcmaxX=5.14844 +slcminY=0 +slcmaxY=20 +slcminZ=-55 +slcmaxZ=50 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-6 +extmaxX=6 +extminY=0 +extmaxY=20 +extminZ=50 +extmaxZ=55 + +slcminX=-6 +slcmaxX=6 +slcminY=0 +slcmaxY=20 +slcminZ=50 +slcmaxZ=55 + + +[COLLISION] +name=rp2_cv.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/RP3_CV.SLD b/CONTENT/RP/SOLIDS/RP3_CV.SLD new file mode 100644 index 0000000..66edd48 --- /dev/null +++ b/CONTENT/RP/SOLIDS/RP3_CV.SLD @@ -0,0 +1,50 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=6 +TypeName=RampFacingPositiveZType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-5 +extmaxX=5 +extminY=0 +extmaxY=30 +extminZ=-70 +extmaxZ=65.6016 + +slcminX=-5 +slcmaxX=5 +slcminY=0 +slcmaxY=30 +slcminZ=-70 +slcmaxZ=65.6016 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-6 +extmaxX=6 +extminY=0 +extmaxY=30 +extminZ=65.6016 +extmaxZ=70 + +slcminX=-6 +slcmaxX=6 +slcminY=0 +slcmaxY=30 +slcminZ=65.6016 +slcmaxZ=70 + + +[COLLISION] +name=rp3_cv.sld +count=2 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/SA_CV.SLD b/CONTENT/RP/SOLIDS/SA_CV.SLD new file mode 100644 index 0000000..248d75c --- /dev/null +++ b/CONTENT/RP/SOLIDS/SA_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2.5 +extmaxX=2.5 +extminY=-1 +extmaxY=1 +extminZ=-3 +extmaxZ=2 + +slcminX=-2.5 +slcmaxX=2.5 +slcminY=-1 +slcmaxY=1 +slcminZ=-3 +slcmaxZ=2 + + +[COLLISION] +name=sa_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/SC500_CV.SLD b/CONTENT/RP/SOLIDS/SC500_CV.SLD new file mode 100644 index 0000000..605f73d --- /dev/null +++ b/CONTENT/RP/SOLIDS/SC500_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-225 +extmaxX=225 +extminY=-1.27344 +extmaxY=99.9609 +extminZ=-105.023 +extmaxZ=104.977 + +slcminX=-225 +slcmaxX=225 +slcminY=-1.27344 +slcmaxY=99.9609 +slcminZ=-105.023 +slcmaxZ=104.977 + + +[COLLISION] +name=sc500_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/SC50_CV.SLD b/CONTENT/RP/SOLIDS/SC50_CV.SLD new file mode 100644 index 0000000..48cc453 --- /dev/null +++ b/CONTENT/RP/SOLIDS/SC50_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-40 +extmaxX=40 +extminY=-1.27344 +extmaxY=99.9609 +extminZ=-40 +extmaxZ=40 + +slcminX=-40 +slcmaxX=40 +slcminY=-1.27344 +slcmaxY=99.9609 +slcminZ=-40 +slcmaxZ=40 + + +[COLLISION] +name=sc50_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/SHOOT.XST b/CONTENT/RP/SOLIDS/SHOOT.XST new file mode 100644 index 0000000..5332f0a --- /dev/null +++ b/CONTENT/RP/SOLIDS/SHOOT.XST @@ -0,0 +1,17 @@ +[LAB_ONLY] + +[extent 0] +extminX=-2355 +extmaxX=2765 +extminY=-100 +extmaxY=150 +extminZ=-5295 +extmaxZ=2525 + + +[COLLISION] +name=shoot.xst +count=0 +extentcount=1 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/SIG.XST b/CONTENT/RP/SOLIDS/SIG.XST new file mode 100644 index 0000000..cae09a2 --- /dev/null +++ b/CONTENT/RP/SOLIDS/SIG.XST @@ -0,0 +1,17 @@ +[LAB_ONLY] + +[extent 0] +extminX=-10065 +extmaxX=9035 +extminY=-150 +extmaxY=100 +extminZ=-60305 +extmaxZ=13005 + + +[COLLISION] +name=sig.xst +count=0 +extentcount=1 + + \ No newline at end of file diff --git a/CONTENT/RP/SOLIDS/SU_CV.SLD b/CONTENT/RP/SOLIDS/SU_CV.SLD new file mode 100644 index 0000000..ddbf104 --- /dev/null +++ b/CONTENT/RP/SOLIDS/SU_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=17 +TypeName=YAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-2.63281 +extmaxX=2.63281 +extminY=-1 +extmaxY=1 +extminZ=-3.13281 +extmaxZ=2.13281 + +slcminX=-2.63281 +slcmaxX=2.63281 +slcminY=-1 +slcmaxY=1 +slcminZ=-3.13281 +slcmaxZ=2.13281 + + +[COLLISION] +name=su_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/TEST.XST b/CONTENT/RP/SOLIDS/TEST.XST new file mode 100644 index 0000000..e10e628 --- /dev/null +++ b/CONTENT/RP/SOLIDS/TEST.XST @@ -0,0 +1,16 @@ +[LAB_ONLY] + +[extent 0] +extminX=-500 +extmaxX=500 +extminY=-5 +extmaxY=50 +extminZ=-3480 +extmaxZ=3480 + +[COLLISION] +name=test.xst +count=0 +extentcount=1 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/TOUGH.XST b/CONTENT/RP/SOLIDS/TOUGH.XST new file mode 100644 index 0000000..152f9ed --- /dev/null +++ b/CONTENT/RP/SOLIDS/TOUGH.XST @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/CONTENT/RP/SOLIDS/TRS_CV.SLD b/CONTENT/RP/SOLIDS/TRS_CV.SLD new file mode 100644 index 0000000..13d4ab4 --- /dev/null +++ b/CONTENT/RP/SOLIDS/TRS_CV.SLD @@ -0,0 +1,29 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-52 +extmaxX=52 +extminY=13.75 +extmaxY=23.25 +extminZ=-5.25 +extmaxZ=5.25 + +slcminX=-52 +slcmaxX=52 +slcminY=13.75 +slcmaxY=23.25 +slcminZ=-5.25 +slcmaxZ=5.25 + + +[COLLISION] +name=trs_cv.sld +count=1 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/TUN1_CV.SLD b/CONTENT/RP/SOLIDS/TUN1_CV.SLD new file mode 100644 index 0000000..8476ae8 --- /dev/null +++ b/CONTENT/RP/SOLIDS/TUN1_CV.SLD @@ -0,0 +1,87 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-100 +extmaxX=-15 +extminY=0 +extmaxY=50 +extminZ=0 +extmaxZ=5 + +slcminX=-100 +slcmaxX=-15 +slcminY=0 +slcmaxY=50 +slcminZ=0 +slcmaxZ=5 + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=15 +extmaxX=100 +extminY=0 +extmaxY=50 +extminZ=0 +extmaxZ=5 + +slcminX=15 +slcmaxX=100 +slcminY=0 +slcmaxY=50 +slcminZ=0 +slcmaxZ=5 + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-100 +extmaxX=-15 +extminY=0 +extmaxY=50 +extminZ=1295 +extmaxZ=1300 + +slcminX=-100 +slcmaxX=-15 +slcminY=0 +slcmaxY=50 +slcminZ=1295 +slcmaxZ=1300 + +[volume 3] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=15 +extmaxX=100 +extminY=0 +extmaxY=50 +extminZ=1295 +extmaxZ=1300 + +slcminX=15 +slcmaxX=100 +slcminY=0 +slcmaxY=50 +slcminZ=1295 +slcmaxZ=1300 + +[COLLISION] +name=tun1_cv.sld +count=4 +extentcount=0 +evilextentcount=0 diff --git a/CONTENT/RP/SOLIDS/VCS.CFG b/CONTENT/RP/SOLIDS/VCS.CFG new file mode 100644 index 0000000..6f4c654 --- /dev/null +++ b/CONTENT/RP/SOLIDS/VCS.CFG @@ -0,0 +1 @@ +vcsdir=r:\resource\rp\l4\solids diff --git a/CONTENT/RP/SOLIDS/WHC_CV.SLD b/CONTENT/RP/SOLIDS/WHC_CV.SLD new file mode 100644 index 0000000..138fadd --- /dev/null +++ b/CONTENT/RP/SOLIDS/WHC_CV.SLD @@ -0,0 +1,176 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-22.5 +extmaxX=22.5 +extminY=65 +extmaxY=80 +extminZ=80 +extmaxZ=100 + +slcminX=-22.5 +slcmaxX=22.5 +slcminY=65 +slcmaxY=80 +slcminZ=80 +slcmaxZ=100 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-22.5 +extmaxX=22.5 +extminY=80 +extmaxY=82 +extminZ=-100 +extmaxZ=100 + +slcminX=-22.5 +slcmaxX=22.5 +slcminY=80 +slcmaxY=82 +slcminZ=-100 +slcmaxZ=100 + + +[volume 2] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-22.5 +extmaxX=22.5 +extminY=-2 +extmaxY=0 +extminZ=-100 +extmaxZ=100 + +slcminX=-22.5 +slcmaxX=22.5 +slcminY=-2 +slcmaxY=0 +slcminZ=-100 +slcmaxZ=100 + + +[volume 3] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=22.5 +extmaxX=25.5 +extminY=0 +extmaxY=80 +extminZ=-100 +extmaxZ=100 + +slcminX=22.5 +slcmaxX=25.5 +slcminY=0 +slcmaxY=80 +slcminZ=-100 +slcmaxZ=100 + + +[volume 4] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-25.5 +extmaxX=-22.5 +extminY=0 +extmaxY=80 +extminZ=-100 +extmaxZ=100 + +slcminX=-25.5 +slcmaxX=-22.5 +slcminY=0 +slcmaxY=80 +slcminZ=-100 +slcmaxZ=100 + + +[volume 5] +TypeNumber=10 +TypeName=InvertedRampFacingPositiveZType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-22.5 +extmaxX=22.5 +extminY=40 +extmaxY=65 +extminZ=80 +extmaxZ=100 + +slcminX=-22.5 +slcmaxX=22.5 +slcminY=40 +slcmaxY=65 +slcminZ=80 +slcmaxZ=100 + + +[volume 6] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-22.5 +extmaxX=22.5 +extminY=70 +extmaxY=80 +extminZ=-120 +extmaxZ=-100 + +slcminX=-22.5 +slcmaxX=22.5 +slcminY=70 +slcmaxY=80 +slcminZ=-120 +slcmaxZ=-100 + + +[volume 7] +TypeNumber=4 +TypeName=RampFacingNegativeZType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=-22.5 +extmaxX=22.5 +extminY=0 +extmaxY=72 +extminZ=-100 +extmaxZ=55 + +slcminX=-22.5 +slcmaxX=22.5 +slcminY=0 +slcmaxY=72 +slcminZ=-100 +slcmaxZ=55 + + +[COLLISION] +name=whc_cv.sld +count=8 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/WISE.XST b/CONTENT/RP/SOLIDS/WISE.XST new file mode 100644 index 0000000..558ca7b --- /dev/null +++ b/CONTENT/RP/SOLIDS/WISE.XST @@ -0,0 +1,89 @@ +[LAB_ONLY] + +[extent 0] +extminX=-50 +extmaxX=50 +extminY=-5 +extmaxY=50 +extminZ=-950 +extmaxZ=3480 + + +[extent 1] +extminX=-360 +extmaxX=440 +extminY=5 +extmaxY=145 +extminZ=3895 +extmaxZ=4280 + + +[extent 2] +extminX=-360 +extmaxX=25 +extminY=5 +extmaxY=145 +extminZ=3865 +extmaxZ=3895 + + +[extent 3] +extminX=55 +extmaxX=440 +extminY=5 +extmaxY=145 +extminZ=3865 +extmaxZ=3895 + + +[extent 4] +extminX=-360 +extmaxX=440 +extminY=5 +extmaxY=145 +extminZ=3480 +extmaxZ=3865 + + +[extent 5] +extminX=-25 +extmaxX=360 +extminY=5 +extmaxY=145 +extminZ=-1365 +extmaxZ=-1335 + + +[extent 6] +extminX=-440 +extmaxX=-55 +extminY=5 +extmaxY=145 +extminZ=-1365 +extmaxZ=-1335 + + +[extent 7] +extminX=-440 +extmaxX=360 +extminY=5 +extmaxY=145 +extminZ=-1335 +extmaxZ=-950 + + +[extent 8] +extminX=-440 +extmaxX=360 +extminY=5 +extmaxY=145 +extminZ=-1750 +extmaxZ=-1365 + + +[COLLISION] +name=wise.xst +count=0 +extentcount=9 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/WT2_CV.SLD b/CONTENT/RP/SOLIDS/WT2_CV.SLD new file mode 100644 index 0000000..29ed7ae --- /dev/null +++ b/CONTENT/RP/SOLIDS/WT2_CV.SLD @@ -0,0 +1,197 @@ +[LAB_ONLY] + +[volume 0] +TypeNumber=4 +TypeName=RampFacingNegativeZType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=67.5 +extmaxX=82 +extminY=0 +extmaxY=61 +extminZ=6 +extmaxZ=11 + +slcminX=67.5 +slcmaxX=82 +slcminY=0 +slcmaxY=61 +slcminZ=6 +slcmaxZ=11 + + +[volume 1] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=67.5 +extmaxX=82 +extminY=0 +extmaxY=61 +extminZ=-5 +extmaxZ=6 + +slcminX=67.5 +slcmaxX=82 +slcminY=0 +slcmaxY=61 +slcminZ=-5 +slcmaxZ=6 + + +[volume 2] +TypeNumber=6 +TypeName=RampFacingPositiveZType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=67.5 +extmaxX=82 +extminY=0 +extmaxY=61 +extminZ=-10 +extmaxZ=-5 + +slcminX=67.5 +slcmaxX=82 +slcminY=0 +slcmaxY=61 +slcminZ=-10 +slcmaxZ=-5 + + +[volume 3] +TypeNumber=4 +TypeName=RampFacingNegativeZType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=136.5 +extmaxX=151 +extminY=0 +extmaxY=61 +extminZ=6 +extmaxZ=11 + +slcminX=136.5 +slcmaxX=151 +slcminY=0 +slcmaxY=61 +slcminZ=6 +slcmaxZ=11 + + +[volume 4] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=136.5 +extmaxX=151 +extminY=0 +extmaxY=61 +extminZ=-5 +extmaxZ=6 + +slcminX=136.5 +slcmaxX=151 +slcminY=0 +slcmaxY=61 +slcminZ=-5 +slcmaxZ=6 + + +[volume 5] +TypeNumber=6 +TypeName=RampFacingPositiveZType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=136.5 +extmaxX=151 +extminY=0 +extmaxY=61 +extminZ=-10 +extmaxZ=-5 + +slcminX=136.5 +slcmaxX=151 +slcminY=0 +slcmaxY=61 +slcminZ=-10 +slcmaxZ=-5 + + +[volume 6] +TypeNumber=16 +TypeName=XAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=5 +extmaxX=270.5 +extminY=50.5 +extmaxY=54.5 +extminZ=-2 +extmaxZ=2 + +slcminX=5 +slcmaxX=270.5 +slcminY=50.5 +slcmaxY=54.5 +slcminZ=-2 +slcmaxZ=2 + + +[volume 7] +TypeNumber=16 +TypeName=XAxisCylinderType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=5 +extmaxX=270.5 +extminY=55.5 +extmaxY=59.5 +extminZ=-3 +extmaxZ=1 + +slcminX=5 +slcmaxX=270.5 +slcminY=55.5 +slcmaxY=59.5 +slcminZ=-3 +slcmaxZ=1 + + +[volume 8] +TypeNumber=0 +TypeName=BlockType +MaterialNumber=2 +MaterialName=ConcreteMaterial + +extminX=270.5 +extmaxX=307.5 +extminY=48.25 +extmaxY=62.75 +extminZ=-6 +extmaxZ=4.5 + +slcminX=270.5 +slcmaxX=307.5 +slcminY=48.25 +slcmaxY=62.75 +slcminZ=-6 +slcmaxZ=4.5 + + +[COLLISION] +name=wt2_cv.sld +count=9 +extentcount=0 +evilextentcount=0 + diff --git a/CONTENT/RP/SOLIDS/YIP.XST b/CONTENT/RP/SOLIDS/YIP.XST new file mode 100644 index 0000000..10633a7 --- /dev/null +++ b/CONTENT/RP/SOLIDS/YIP.XST @@ -0,0 +1,161 @@ +[LAB_ONLY] + +[extent 0] +extminX=-75 +extmaxX=75 +extminY=0 +extmaxY=50 +extminZ=895 +extmaxZ=1220 + + +[extent 1] +extminX=-55 +extmaxX=-30 +extminY=0 +extmaxY=20 +extminZ=-55 +extmaxZ=45 + + +[extent 2] +extminX=30 +extmaxX=55 +extminY=0 +extmaxY=20 +extminZ=-55 +extmaxZ=45 + + +[extent 3] +extminX=-75 +extmaxX=75 +extminY=0 +extmaxY=50 +extminZ=-3250 +extmaxZ=-1925 + + +[extent 4] +extminX=-55 +extmaxX=50 +extminY=0 +extmaxY=50 +extminZ=-1125 +extmaxZ=-600 + + +[extent 5] +extminX=-15 +extmaxX=15 +extminY=5 +extmaxY=45 +extminZ=-1925 +extmaxZ=-1125 + + +[extent 6] +extminX=-30 +extmaxX=30 +extminY=0 +extmaxY=13 +extminZ=-600 +extmaxZ=895 + + +[extent 7] +extminX=-15 +extmaxX=15 +extminY=5 +extmaxY=45 +extminZ=-3325 +extmaxZ=-3250 + + +[extent 8] +extminX=-15 +extmaxX=15 +extminY=5 +extmaxY=45 +extminZ=1220 +extmaxZ=1735 + + +[extent 9] +extminX=-440 +extmaxX=360 +extminY=-90 +extmaxY=50 +extminZ=-3710 +extmaxZ=-3325 + + +[extent 10] +extminX=-25 +extmaxX=360 +extminY=-90 +extmaxY=50 +extminZ=-3740 +extmaxZ=-3710 + + +[extent 11] +extminX=-440 +extmaxX=-55 +extminY=-90 +extmaxY=50 +extminZ=-3740 +extmaxZ=-3710 + + +[extent 12] +extminX=-440 +extmaxX=360 +extminY=-90 +extmaxY=50 +extminZ=-4125 +extmaxZ=-3740 + + +[extent 13] +extminX=-360 +extmaxX=440 +extminY=5 +extmaxY=145 +extminZ=1420 +extmaxZ=1805 + + +[extent 14] +extminX=-360 +extmaxX=440 +extminY=5 +extmaxY=145 +extminZ=1835 +extmaxZ=2220 + + +[extent 15] +extminX=55 +extmaxX=440 +extminY=5 +extmaxY=145 +extminZ=1805 +extmaxZ=1835 + + +[extent 16] +extminX=-360 +extmaxX=25 +extminY=5 +extmaxY=145 +extminZ=1805 +extmaxZ=1835 + + +[COLLISION] +name=yip.xst +count=0 +extentcount=17 +evilextentcount=0 + diff --git a/CONTENT/RP/TOOLOPT.BAT b/CONTENT/RP/TOOLOPT.BAT new file mode 100644 index 0000000..a39e14b --- /dev/null +++ b/CONTENT/RP/TOOLOPT.BAT @@ -0,0 +1,2 @@ +xcopy \teslarp\rp\l4\opt\rpl4tool.exe . + diff --git a/CONTENT/RP/VCS.CFG b/CONTENT/RP/VCS.CFG new file mode 100644 index 0000000..a157cce --- /dev/null +++ b/CONTENT/RP/VCS.CFG @@ -0,0 +1 @@ +vcsdir=r:\resource\rp\l4 diff --git a/CONTENT/RP/VIDEO/BMAP.BMF b/CONTENT/RP/VIDEO/BMAP.BMF new file mode 100644 index 0000000..c5f12f6 Binary files /dev/null and b/CONTENT/RP/VIDEO/BMAP.BMF differ diff --git a/CONTENT/RP/VIDEO/BN1L.BGF b/CONTENT/RP/VIDEO/BN1L.BGF new file mode 100644 index 0000000..c531bb4 Binary files /dev/null and b/CONTENT/RP/VIDEO/BN1L.BGF differ diff --git a/CONTENT/RP/VIDEO/BOOST.PFX b/CONTENT/RP/VIDEO/BOOST.PFX new file mode 100644 index 0000000..606a615 --- /dev/null +++ b/CONTENT/RP/VIDEO/BOOST.PFX @@ -0,0 +1,32 @@ +rpcult:intA_tex +0000667 100 8 15 +0 0 3 0 +3 0 10 -6 0 20 +.5 .5 5 2.5 -0.001 0 +6 0 3 -12 0 -6 +0 0 +2.20 1.00 0.50 1.60 0.00 0.00 0.00 0.00 +0.00 0.00 0.00 1.00 0.00 0.00 0.00 0.00 +-0.20 -0.20 -0.20 -0.50 0.00 0.00 0.00 0.00 +0.00 0.00 0.00 1.10 0.00 0.00 0.00 0.00 +10 1 +3.0 0.3 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one diff --git a/CONTENT/RP/VIDEO/BP1.BGF b/CONTENT/RP/VIDEO/BP1.BGF new file mode 100644 index 0000000..a9cf417 Binary files /dev/null and b/CONTENT/RP/VIDEO/BP1.BGF differ diff --git a/CONTENT/RP/VIDEO/BR1L.BGF b/CONTENT/RP/VIDEO/BR1L.BGF new file mode 100644 index 0000000..fc48480 Binary files /dev/null and b/CONTENT/RP/VIDEO/BR1L.BGF differ diff --git a/CONTENT/RP/VIDEO/BR2L.BGF b/CONTENT/RP/VIDEO/BR2L.BGF new file mode 100644 index 0000000..9325e52 Binary files /dev/null and b/CONTENT/RP/VIDEO/BR2L.BGF differ diff --git a/CONTENT/RP/VIDEO/BR3.BGF b/CONTENT/RP/VIDEO/BR3.BGF new file mode 100644 index 0000000..ad26e4e Binary files /dev/null and b/CONTENT/RP/VIDEO/BR3.BGF differ diff --git a/CONTENT/RP/VIDEO/BST.BGF b/CONTENT/RP/VIDEO/BST.BGF new file mode 100644 index 0000000..72ba8a9 Binary files /dev/null and b/CONTENT/RP/VIDEO/BST.BGF differ diff --git a/CONTENT/RP/VIDEO/BUA.BGF b/CONTENT/RP/VIDEO/BUA.BGF new file mode 100644 index 0000000..4ea7f50 Binary files /dev/null and b/CONTENT/RP/VIDEO/BUA.BGF differ diff --git a/CONTENT/RP/VIDEO/BUB.BGF b/CONTENT/RP/VIDEO/BUB.BGF new file mode 100644 index 0000000..4a5b627 Binary files /dev/null and b/CONTENT/RP/VIDEO/BUB.BGF differ diff --git a/CONTENT/RP/VIDEO/BUB.SKL b/CONTENT/RP/VIDEO/BUB.SKL new file mode 100644 index 0000000..0246b12 --- /dev/null +++ b/CONTENT/RP/VIDEO/BUB.SKL @@ -0,0 +1,228 @@ +[LAB_ONLY] // this file has not been approved for release + +[DamageZones] // call MakeEntryList with 'dz_' +dz_vtv=0 + +[ROOT] +JointCount=6 +DZoneCount=1 +Object=bub.bgf +dzone=dz_vtv +Former Segment=segbu +tranx=0 +trany=0 +tranz=0 +pitch=0 +yaw=-0 +roll=0 +site=siteheadlight +joint=jointlbeng +joint=jointrbeng +site=siteeyepoint +joint=jointlfeng +joint=jointrfeng +site=sitechute +site=sitebooster +site=sitebooster2 +site=sitebooster3 +site=sitetaillight +joint=jointrmeng +joint=jointlmeng + +[siteheadlight] +parent=ROOT +tranx=0 +trany=-0.588754 +tranz=1.3287 +pitch=0 +yaw=-0 +roll=0 + +[jointlbeng] +parent=ROOT +Type=hingex +Object=vlc.bgf +dzone=dz_vtv +Former Segment=seglbeng +tranx=-2.73961 +trany=0.354056 +tranz=1.898 +pitch=0 +yaw=-0 +roll=0 +site=siteleftbackengine + +[siteleftbackengine] +parent=jointlbeng +tranx=-0.50951 +trany=-0.244948 +tranz=0 +pitch=0 +yaw=-0 +roll=0 + +[jointrbeng] +parent=ROOT +Type=hingex +Object=vrc.bgf +dzone=dz_vtv +Former Segment=segrbeng +tranx=2.76057 +trany=0.354056 +tranz=1.898 +pitch=0 +yaw=-0 +roll=0 +site=siterightbackengine + +[siterightbackengine] +parent=jointrbeng +tranx=0.50963 +trany=-0.244941 +tranz=0 +pitch=1.04562e-09 +yaw=-5.02548e-10 +roll=0 + +[siteeyepoint] +parent=ROOT +tranx=0 +trany=-0.546364 +tranz=2.16807 +pitch=0 +yaw=-0 +roll=0 + +[jointlfeng] +parent=ROOT +Type=hingex +dzone=dz_vtv +Former Segment=seglfeng +tranx=-2.73961 +trany=0.354056 +tranz=-2.61652 +pitch=0 +yaw=-0 +roll=0 +site=siteleftfrontengine + +[siteleftfrontengine] +parent=jointlfeng +tranx=-0.50951 +trany=-0.244947 +tranz=0 +pitch=0 +yaw=-0 +roll=0 + +[jointrfeng] +parent=ROOT +Type=hingex +dzone=dz_vtv +Former Segment=segrfeng +tranx=2.76057 +trany=0.354056 +tranz=-2.61652 +pitch=0 +yaw=-0 +roll=0 +site=siterightfrontengine + +[siterightfrontengine] +parent=jointrfeng +tranx=0.50961 +trany=-0.244943 +tranz=0 +pitch=2.37489e-08 +yaw=-6.28641e-08 +roll=0 + +[sitechute] +parent=ROOT +tranx=0 +trany=0.4783 +tranz=4.33373 +pitch=0 +yaw=-0 +roll=0 + +[sitebooster] +parent=ROOT +tranx=0 +trany=0.4783 +tranz=4.3746 +pitch=0 +yaw=-0 +roll=0 + +[sitebooster2] +parent=ROOT +tranx=2.50 +trany=0.4783 +tranz=4.3746 +pitch=0 +yaw=-0 +roll=0 + +[sitebooster3] +parent=ROOT +tranx=-2.50 +trany=0.4783 +tranz=4.3746 +pitch=0 +yaw=-0 +roll=0 + +[sitetaillight] +parent=ROOT +tranx=0 +trany=1.16782 +tranz=0.856637 +pitch=0 +yaw=-0 +roll=0 + +[jointrmeng] +parent=ROOT +Type=hingex +dzone=dz_vtv +Former Segment=segrmeng +tranx=2.76028 +trany=0.354056 +tranz=-0.353305 +pitch=0 +yaw=-0 +roll=3.01991e-07 +site=siterightmiddleengine + +[siterightmiddleengine] +parent=jointrmeng +tranx=0.50993 +trany=-0.244944 +tranz=0 +pitch=7.21772e-09 +yaw=1.62981e-08 +roll=-3.96716e-09 + +[jointlmeng] +parent=ROOT +Type=hingex +dzone=dz_vtv +Former Segment=seglmeng +tranx=-2.73961 +trany=0.354056 +tranz=-0.353305 +pitch=0 +yaw=-0 +roll=0 +site=siteleftmiddleengine + +[siteleftmiddleengine] +parent=jointlmeng +tranx=-0.50951 +trany=-0.245073 +tranz=0 +pitch=0 +yaw=-0 +roll=0 + diff --git a/CONTENT/RP/VIDEO/BUC.BGF b/CONTENT/RP/VIDEO/BUC.BGF new file mode 100644 index 0000000..f0c24d7 Binary files /dev/null and b/CONTENT/RP/VIDEO/BUC.BGF differ diff --git a/CONTENT/RP/VIDEO/C8EL.BGF b/CONTENT/RP/VIDEO/C8EL.BGF new file mode 100644 index 0000000..01338ea Binary files /dev/null and b/CONTENT/RP/VIDEO/C8EL.BGF differ diff --git a/CONTENT/RP/VIDEO/CAMPOS.BGF b/CONTENT/RP/VIDEO/CAMPOS.BGF new file mode 100644 index 0000000..2dcbe44 Binary files /dev/null and b/CONTENT/RP/VIDEO/CAMPOS.BGF differ diff --git a/CONTENT/RP/VIDEO/CENTER.BGF b/CONTENT/RP/VIDEO/CENTER.BGF new file mode 100644 index 0000000..4bb09a4 Binary files /dev/null and b/CONTENT/RP/VIDEO/CENTER.BGF differ diff --git a/CONTENT/RP/VIDEO/CH1.BGF b/CONTENT/RP/VIDEO/CH1.BGF new file mode 100644 index 0000000..53eb564 Binary files /dev/null and b/CONTENT/RP/VIDEO/CH1.BGF differ diff --git a/CONTENT/RP/VIDEO/CH2.BGF b/CONTENT/RP/VIDEO/CH2.BGF new file mode 100644 index 0000000..6ce815f Binary files /dev/null and b/CONTENT/RP/VIDEO/CH2.BGF differ diff --git a/CONTENT/RP/VIDEO/CHG.BGF b/CONTENT/RP/VIDEO/CHG.BGF new file mode 100644 index 0000000..cc15f85 Binary files /dev/null and b/CONTENT/RP/VIDEO/CHG.BGF differ diff --git a/CONTENT/RP/VIDEO/CHT.BGF b/CONTENT/RP/VIDEO/CHT.BGF new file mode 100644 index 0000000..1cb9b58 Binary files /dev/null and b/CONTENT/RP/VIDEO/CHT.BGF differ diff --git a/CONTENT/RP/VIDEO/CL2.BGF b/CONTENT/RP/VIDEO/CL2.BGF new file mode 100644 index 0000000..d292bfe Binary files /dev/null and b/CONTENT/RP/VIDEO/CL2.BGF differ diff --git a/CONTENT/RP/VIDEO/CL3.BGF b/CONTENT/RP/VIDEO/CL3.BGF new file mode 100644 index 0000000..9082705 Binary files /dev/null and b/CONTENT/RP/VIDEO/CL3.BGF differ diff --git a/CONTENT/RP/VIDEO/CLD.BGF b/CONTENT/RP/VIDEO/CLD.BGF new file mode 100644 index 0000000..5229e0e Binary files /dev/null and b/CONTENT/RP/VIDEO/CLD.BGF differ diff --git a/CONTENT/RP/VIDEO/CN2L.BGF b/CONTENT/RP/VIDEO/CN2L.BGF new file mode 100644 index 0000000..91aa9c6 Binary files /dev/null and b/CONTENT/RP/VIDEO/CN2L.BGF differ diff --git a/CONTENT/RP/VIDEO/CN3.BGF b/CONTENT/RP/VIDEO/CN3.BGF new file mode 100644 index 0000000..267b87a Binary files /dev/null and b/CONTENT/RP/VIDEO/CN3.BGF differ diff --git a/CONTENT/RP/VIDEO/CN3U.BGF b/CONTENT/RP/VIDEO/CN3U.BGF new file mode 100644 index 0000000..267b87a Binary files /dev/null and b/CONTENT/RP/VIDEO/CN3U.BGF differ diff --git a/CONTENT/RP/VIDEO/CQ2.BGF b/CONTENT/RP/VIDEO/CQ2.BGF new file mode 100644 index 0000000..a23857d Binary files /dev/null and b/CONTENT/RP/VIDEO/CQ2.BGF differ diff --git a/CONTENT/RP/VIDEO/CR1L.BGF b/CONTENT/RP/VIDEO/CR1L.BGF new file mode 100644 index 0000000..b61889b Binary files /dev/null and b/CONTENT/RP/VIDEO/CR1L.BGF differ diff --git a/CONTENT/RP/VIDEO/CR2L.BGF b/CONTENT/RP/VIDEO/CR2L.BGF new file mode 100644 index 0000000..1094584 Binary files /dev/null and b/CONTENT/RP/VIDEO/CR2L.BGF differ diff --git a/CONTENT/RP/VIDEO/CR3L.BGF b/CONTENT/RP/VIDEO/CR3L.BGF new file mode 100644 index 0000000..cded8c8 Binary files /dev/null and b/CONTENT/RP/VIDEO/CR3L.BGF differ diff --git a/CONTENT/RP/VIDEO/CR4.BGF b/CONTENT/RP/VIDEO/CR4.BGF new file mode 100644 index 0000000..3d6955d Binary files /dev/null and b/CONTENT/RP/VIDEO/CR4.BGF differ diff --git a/CONTENT/RP/VIDEO/CR5.BGF b/CONTENT/RP/VIDEO/CR5.BGF new file mode 100644 index 0000000..1a45937 Binary files /dev/null and b/CONTENT/RP/VIDEO/CR5.BGF differ diff --git a/CONTENT/RP/VIDEO/CR6.BGF b/CONTENT/RP/VIDEO/CR6.BGF new file mode 100644 index 0000000..5d38d77 Binary files /dev/null and b/CONTENT/RP/VIDEO/CR6.BGF differ diff --git a/CONTENT/RP/VIDEO/CR8.BGF b/CONTENT/RP/VIDEO/CR8.BGF new file mode 100644 index 0000000..499e297 Binary files /dev/null and b/CONTENT/RP/VIDEO/CR8.BGF differ diff --git a/CONTENT/RP/VIDEO/CRC.BGF b/CONTENT/RP/VIDEO/CRC.BGF new file mode 100644 index 0000000..7fd18d1 Binary files /dev/null and b/CONTENT/RP/VIDEO/CRC.BGF differ diff --git a/CONTENT/RP/VIDEO/CREL.BGF b/CONTENT/RP/VIDEO/CREL.BGF new file mode 100644 index 0000000..6a47f9c Binary files /dev/null and b/CONTENT/RP/VIDEO/CREL.BGF differ diff --git a/CONTENT/RP/VIDEO/CT1L.BGF b/CONTENT/RP/VIDEO/CT1L.BGF new file mode 100644 index 0000000..5e98386 Binary files /dev/null and b/CONTENT/RP/VIDEO/CT1L.BGF differ diff --git a/CONTENT/RP/VIDEO/CTF.BGF b/CONTENT/RP/VIDEO/CTF.BGF new file mode 100644 index 0000000..3d1227a Binary files /dev/null and b/CONTENT/RP/VIDEO/CTF.BGF differ diff --git a/CONTENT/RP/VIDEO/DEMOBOOM.PFX b/CONTENT/RP/VIDEO/DEMOBOOM.PFX new file mode 100644 index 0000000..e65ab9c --- /dev/null +++ b/CONTENT/RP/VIDEO/DEMOBOOM.PFX @@ -0,0 +1,32 @@ +rpcult:intA_tex +0x30000674 65 0.5 20 +0 1 0 2 +150 30 150 -300 -60 -300 +3.5 2.0 10 10 -1 0 +2.5 2.5 2.5 -5 -10 -5 +7 3 +2.00 0.70 0.20 2.00 0.00 0.00 0.00 0.00 +1.00 0.30 0.00 1.00 0.00 0.00 0.00 0.00 +0.0 -0.20 -0.50 -0.50 0.00 0.00 0.00 0.00 +0.0 0.00 0.00 -2.00 0.00 0.00 0.00 0.00 +10 1 +1.5 0.5 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one diff --git a/CONTENT/RP/VIDEO/DEMOBURN.PFX b/CONTENT/RP/VIDEO/DEMOBURN.PFX new file mode 100644 index 0000000..4bc184e --- /dev/null +++ b/CONTENT/RP/VIDEO/DEMOBURN.PFX @@ -0,0 +1,32 @@ +rpcult:intA_tex +0x30000667 35 12 4 +0 0 0 1 +1 1 1 -2 1 -2 +1.5 0.5 0.5 0.5 0.00 0 +0 1 0 0 0.5 0 +0.25 0.2 +1.50 0.60 0.20 2.50 0.00 0.00 0.00 0.00 +1.00 0.30 0.00 1.00 0.00 0.00 0.00 0.00 +-0.20 -0.50 -0.90 0.00 0.00 0.00 0.00 0.00 +-0.10 -0.10 -0.10 0.00 0.00 0.00 0.00 0.00 +0 0 +7 1 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one diff --git a/CONTENT/RP/VIDEO/DEMOFUSE.PFX b/CONTENT/RP/VIDEO/DEMOFUSE.PFX new file mode 100644 index 0000000..9e423f9 --- /dev/null +++ b/CONTENT/RP/VIDEO/DEMOFUSE.PFX @@ -0,0 +1,32 @@ +rpcult:intA_tex +0x30000002 55 3 16 +0.0 0.0 0.0 0.0 +1 5 1 -2 4 -2 +0.5 0.0 2.0 0 -0.001 0 +0 1 0 0 1 0.5 +0.1 0.1 + 0.70 0.30 0.10 2.00 0.00 0.00 0.00 0.50 + 0.50 0.20 0.00 1.00 0.00 0.00 0.00 0.50 +-2.30 -1.10 -1.00 0.00 0.00 0.00 0.00 0.00 +-2.00 -1.00 -0.60 0.00 0.00 0.00 0.00 0.00 +0 0 +5 2 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one diff --git a/CONTENT/RP/VIDEO/DR1L.BGF b/CONTENT/RP/VIDEO/DR1L.BGF new file mode 100644 index 0000000..e2f6895 Binary files /dev/null and b/CONTENT/RP/VIDEO/DR1L.BGF differ diff --git a/CONTENT/RP/VIDEO/DR2.BG_ b/CONTENT/RP/VIDEO/DR2.BG_ new file mode 100644 index 0000000..e69de29 diff --git a/CONTENT/RP/VIDEO/DR2L.BGF b/CONTENT/RP/VIDEO/DR2L.BGF new file mode 100644 index 0000000..b107e88 Binary files /dev/null and b/CONTENT/RP/VIDEO/DR2L.BGF differ diff --git a/CONTENT/RP/VIDEO/DRWL.BGF b/CONTENT/RP/VIDEO/DRWL.BGF new file mode 100644 index 0000000..a60ee56 Binary files /dev/null and b/CONTENT/RP/VIDEO/DRWL.BGF differ diff --git a/CONTENT/RP/VIDEO/DUA.BGF b/CONTENT/RP/VIDEO/DUA.BGF new file mode 100644 index 0000000..91defa2 Binary files /dev/null and b/CONTENT/RP/VIDEO/DUA.BGF differ diff --git a/CONTENT/RP/VIDEO/DUB.BGF b/CONTENT/RP/VIDEO/DUB.BGF new file mode 100644 index 0000000..cbe604a Binary files /dev/null and b/CONTENT/RP/VIDEO/DUB.BGF differ diff --git a/CONTENT/RP/VIDEO/DUC.BGF b/CONTENT/RP/VIDEO/DUC.BGF new file mode 100644 index 0000000..b7a30e9 Binary files /dev/null and b/CONTENT/RP/VIDEO/DUC.BGF differ diff --git a/CONTENT/RP/VIDEO/DUMMY.BMF b/CONTENT/RP/VIDEO/DUMMY.BMF new file mode 100644 index 0000000..82bfbaf Binary files /dev/null and b/CONTENT/RP/VIDEO/DUMMY.BMF differ diff --git a/CONTENT/RP/VIDEO/DUMMYENG.BGF b/CONTENT/RP/VIDEO/DUMMYENG.BGF new file mode 100644 index 0000000..cb687b4 Binary files /dev/null and b/CONTENT/RP/VIDEO/DUMMYENG.BGF differ diff --git a/CONTENT/RP/VIDEO/FT1L.BGF b/CONTENT/RP/VIDEO/FT1L.BGF new file mode 100644 index 0000000..ae05f3b Binary files /dev/null and b/CONTENT/RP/VIDEO/FT1L.BGF differ diff --git a/CONTENT/RP/VIDEO/GR1L.BGF b/CONTENT/RP/VIDEO/GR1L.BGF new file mode 100644 index 0000000..62adb80 Binary files /dev/null and b/CONTENT/RP/VIDEO/GR1L.BGF differ diff --git a/CONTENT/RP/VIDEO/GR2L.BGF b/CONTENT/RP/VIDEO/GR2L.BGF new file mode 100644 index 0000000..b683a80 Binary files /dev/null and b/CONTENT/RP/VIDEO/GR2L.BGF differ diff --git a/CONTENT/RP/VIDEO/HV1L.BGF b/CONTENT/RP/VIDEO/HV1L.BGF new file mode 100644 index 0000000..89df5d5 Binary files /dev/null and b/CONTENT/RP/VIDEO/HV1L.BGF differ diff --git a/CONTENT/RP/VIDEO/HVA.BGF b/CONTENT/RP/VIDEO/HVA.BGF new file mode 100644 index 0000000..f603cc3 Binary files /dev/null and b/CONTENT/RP/VIDEO/HVA.BGF differ diff --git a/CONTENT/RP/VIDEO/HVB.BGF b/CONTENT/RP/VIDEO/HVB.BGF new file mode 100644 index 0000000..6ca1414 Binary files /dev/null and b/CONTENT/RP/VIDEO/HVB.BGF differ diff --git a/CONTENT/RP/VIDEO/HVEL.BGF b/CONTENT/RP/VIDEO/HVEL.BGF new file mode 100644 index 0000000..5939278 Binary files /dev/null and b/CONTENT/RP/VIDEO/HVEL.BGF differ diff --git a/CONTENT/RP/VIDEO/LAA.BGF b/CONTENT/RP/VIDEO/LAA.BGF new file mode 100644 index 0000000..aaf3147 Binary files /dev/null and b/CONTENT/RP/VIDEO/LAA.BGF differ diff --git a/CONTENT/RP/VIDEO/LAA.SKL b/CONTENT/RP/VIDEO/LAA.SKL new file mode 100644 index 0000000..20c165b --- /dev/null +++ b/CONTENT/RP/VIDEO/LAA.SKL @@ -0,0 +1,134 @@ +[LAB_ONLY] // this file has not been approved for release + +[DamageZones] // call MakeEntryList with 'dz_' +dz_vtv=0 + +[ROOT] +JointCount=2 +DZoneCount=1 +Object=laa.bgf +dzone=dz_vtv +Former Segment=seglu +tranx=0 +trany=0 +tranz=0 +pitch=0 +yaw=-0 +roll=0 +joint=jointleng +joint=jointreng +site=siteheadlight +site=siteeyepoint +site=sitetaillight +site=sitebooster +site=sitechute +site=sitefrontport +site=sitebackport + +[jointleng] +parent=ROOT +Type=hingex +dzone=dz_vtv +Former Segment=segleng +tranx=-0.849957 +trany=0.09634 +tranz=-0.100513 +pitch=0 +yaw=-0 +roll=0 +site=siteleftengine + +[siteleftengine] +parent=jointleng +tranx=-0.528323 +trany=-0.257594 +tranz=0 +pitch=0 +yaw=-0 +roll=0 + +[jointreng] +parent=ROOT +Type=hingex +dzone=dz_vtv +Former Segment=segreng +tranx=0.849954 +trany=0.09634 +tranz=-0.100513 +pitch=0 +yaw=-0 +roll=0 +site=siterightengine + +[siterightengine] +parent=jointreng +tranx=0.527976 +trany=-0.257591 +tranz=0 +pitch=0 +yaw=-0 +roll=0 + +[siteheadlight] +parent=ROOT +tranx=0 +trany=0.66153 +tranz=-0.451238 +pitch=0 +yaw=-0 +roll=0 + +[sitefrontport] +parent=ROOT +tranx=0 +trany=-0.723261 +tranz=-1.76319 +pitch=0 +yaw=-0 +roll=0 + +[siteeyepoint] +parent=ROOT +tranx=0 +trany=-0.123261 +tranz=-1.76319 +pitch=0 +yaw=-0 +roll=0 + +[sitetaillight] +parent=ROOT +tranx=0 +trany=0.236551 +tranz=2.55406 +pitch=0 +yaw=-0 +roll=0 + +[sitebackport] +parent=ROOT +tranx=0 +trany=-0.723261 +tranz=-1.76319 +pitch=0 +yaw=3.14159 +roll=0 + +[sitebooster] +parent=ROOT +tranx=0 +trany=-0.126814 +tranz=2.59522 +pitch=0 +yaw=-0 +roll=0 + +[sitechute] +parent=ROOT +tranx=0 +trany=-0.257925 +tranz=2.50541 +pitch=0 +yaw=-0 +roll=0 + diff --git a/CONTENT/RP/VIDEO/LAB.BGF b/CONTENT/RP/VIDEO/LAB.BGF new file mode 100644 index 0000000..aaf3147 Binary files /dev/null and b/CONTENT/RP/VIDEO/LAB.BGF differ diff --git a/CONTENT/RP/VIDEO/LAB.SKL b/CONTENT/RP/VIDEO/LAB.SKL new file mode 100644 index 0000000..9a6268e --- /dev/null +++ b/CONTENT/RP/VIDEO/LAB.SKL @@ -0,0 +1,134 @@ +[LAB_ONLY] // this file has not been approved for release + +[DamageZones] // call MakeEntryList with 'dz_' +dz_vtv=0 + +[ROOT] +JointCount=2 +DZoneCount=1 +Object=lab.bgf +dzone=dz_vtv +Former Segment=seglu +tranx=0 +trany=0 +tranz=0 +pitch=0 +yaw=-0 +roll=0 +joint=jointleng +joint=jointreng +site=siteheadlight +site=siteeyepoint +site=sitetaillight +site=sitebooster +site=sitechute +site=sitefrontport +site=sitebackport + +[jointleng] +parent=ROOT +Type=hingex +dzone=dz_vtv +Former Segment=segleng +tranx=-0.849957 +trany=0.09634 +tranz=-0.100513 +pitch=0 +yaw=-0 +roll=0 +site=siteleftengine + +[siteleftengine] +parent=jointleng +tranx=-0.528323 +trany=-0.257594 +tranz=0 +pitch=0 +yaw=-0 +roll=0 + +[jointreng] +parent=ROOT +Type=hingex +dzone=dz_vtv +Former Segment=segreng +tranx=0.849954 +trany=0.09634 +tranz=-0.100513 +pitch=0 +yaw=-0 +roll=0 +site=siterightengine + +[siterightengine] +parent=jointreng +tranx=0.527976 +trany=-0.257591 +tranz=0 +pitch=0 +yaw=-0 +roll=0 + +[siteheadlight] +parent=ROOT +tranx=0 +trany=0.66153 +tranz=-0.451238 +pitch=0 +yaw=-0 +roll=0 + +[sitefrontport] +parent=ROOT +tranx=0 +trany=-0.723261 +tranz=-1.76319 +pitch=0 +yaw=-0 +roll=0 + +[siteeyepoint] +parent=ROOT +tranx=0 +trany=-0.123261 +tranz=-1.76319 +pitch=0 +yaw=-0 +roll=0 + +[sitetaillight] +parent=ROOT +tranx=0 +trany=0.236551 +tranz=2.55406 +pitch=0 +yaw=-0 +roll=0 + +[sitebackport] +parent=ROOT +tranx=0 +trany=-0.723261 +tranz=-1.76319 +pitch=0 +yaw=3.14159 +roll=0 + +[sitebooster] +parent=ROOT +tranx=0 +trany=-0.126814 +tranz=2.59522 +pitch=0 +yaw=-0 +roll=0 + +[sitechute] +parent=ROOT +tranx=0 +trany=-0.257925 +tranz=2.50541 +pitch=0 +yaw=-0 +roll=0 + diff --git a/CONTENT/RP/VIDEO/LAC.BGF b/CONTENT/RP/VIDEO/LAC.BGF new file mode 100644 index 0000000..aaf3147 Binary files /dev/null and b/CONTENT/RP/VIDEO/LAC.BGF differ diff --git a/CONTENT/RP/VIDEO/LAC.SKL b/CONTENT/RP/VIDEO/LAC.SKL new file mode 100644 index 0000000..6d55947 --- /dev/null +++ b/CONTENT/RP/VIDEO/LAC.SKL @@ -0,0 +1,134 @@ +[LAB_ONLY] // this file has not been approved for release + +[DamageZones] // call MakeEntryList with 'dz_' +dz_vtv=0 + +[ROOT] +JointCount=2 +DZoneCount=1 +Object=lac.bgf +dzone=dz_vtv +Former Segment=seglu +tranx=0 +trany=0 +tranz=0 +pitch=0 +yaw=-0 +roll=0 +joint=jointleng +joint=jointreng +site=siteheadlight +site=siteeyepoint +site=sitetaillight +site=sitebooster +site=sitechute +site=sitefrontport +site=sitebackport + +[jointleng] +parent=ROOT +Type=hingex +dzone=dz_vtv +Former Segment=segleng +tranx=-0.849957 +trany=0.09634 +tranz=-0.100513 +pitch=0 +yaw=-0 +roll=0 +site=siteleftengine + +[siteleftengine] +parent=jointleng +tranx=-0.528323 +trany=-0.257594 +tranz=0 +pitch=0 +yaw=-0 +roll=0 + +[jointreng] +parent=ROOT +Type=hingex +dzone=dz_vtv +Former Segment=segreng +tranx=0.849954 +trany=0.09634 +tranz=-0.100513 +pitch=0 +yaw=-0 +roll=0 +site=siterightengine + +[siterightengine] +parent=jointreng +tranx=0.527976 +trany=-0.257591 +tranz=0 +pitch=0 +yaw=-0 +roll=0 + +[siteheadlight] +parent=ROOT +tranx=0 +trany=0.66153 +tranz=-0.451238 +pitch=0 +yaw=-0 +roll=0 + +[sitefrontport] +parent=ROOT +tranx=0 +trany=-0.723261 +tranz=-1.76319 +pitch=0 +yaw=-0 +roll=0 + +[siteeyepoint] +parent=ROOT +tranx=0 +trany=-0.123261 +tranz=-1.76319 +pitch=0 +yaw=-0 +roll=0 + +[sitetaillight] +parent=ROOT +tranx=0 +trany=0.236551 +tranz=2.55406 +pitch=0 +yaw=-0 +roll=0 + +[sitebackport] +parent=ROOT +tranx=0 +trany=-0.723261 +tranz=-1.76319 +pitch=0 +yaw=3.14159 +roll=0 + +[sitebooster] +parent=ROOT +tranx=0 +trany=-0.126814 +tranz=2.59522 +pitch=0 +yaw=-0 +roll=0 + +[sitechute] +parent=ROOT +tranx=0 +trany=-0.257925 +tranz=2.50541 +pitch=0 +yaw=-0 +roll=0 + diff --git a/CONTENT/RP/VIDEO/LAN.SKL b/CONTENT/RP/VIDEO/LAN.SKL new file mode 100644 index 0000000..b60e198 --- /dev/null +++ b/CONTENT/RP/VIDEO/LAN.SKL @@ -0,0 +1,136 @@ +[LAB_ONLY] // this file has not been approved for release + +[DamageZones] // call MakeEntryList with 'dz_' +dz_vtv=0 + +[ROOT] +JointCount=2 +DZoneCount=1 +Object=lan.bgf +dzone=dz_vtv +Former Segment=seglu +tranx=0 +trany=0 +tranz=0 +pitch=0 +yaw=-0 +roll=0 +joint=jointleng +joint=jointreng +site=siteheadlight +site=siteeyepoint +site=sitetaillight +site=sitebooster +site=sitechute +site=sitefrontport +site=sitebackport + +[jointleng] +parent=ROOT +Type=hingex +Object=vln.bgf +dzone=dz_vtv +Former Segment=segleng +tranx=-0.849957 +trany=0.09634 +tranz=-0.100513 +pitch=0 +yaw=-0 +roll=0 +site=siteleftengine + +[siteleftengine] +parent=jointleng +tranx=-0.528323 +trany=-0.257594 +tranz=0 +pitch=0 +yaw=-0 +roll=0 + +[jointreng] +parent=ROOT +Type=hingex +Object=vrn.bgf +dzone=dz_vtv +Former Segment=segreng +tranx=0.849954 +trany=0.09634 +tranz=-0.100513 +pitch=0 +yaw=-0 +roll=0 +site=siterightengine + +[siterightengine] +parent=jointreng +tranx=0.527976 +trany=-0.257591 +tranz=0 +pitch=0 +yaw=-0 +roll=0 + +[siteheadlight] +parent=ROOT +tranx=0 +trany=0.66153 +tranz=-0.451238 +pitch=0 +yaw=-0 +roll=0 + +[sitefrontport] +parent=ROOT +tranx=0 +trany=-0.723261 +tranz=-1.76319 +pitch=0 +yaw=-0 +roll=0 + +[siteeyepoint] +parent=ROOT +tranx=0 +trany=-0.123261 +tranz=-1.76319 +pitch=0 +yaw=-0 +roll=0 + +[sitetaillight] +parent=ROOT +tranx=0 +trany=0.236551 +tranz=2.55406 +pitch=0 +yaw=-0 +roll=0 + +[sitebackport] +parent=ROOT +tranx=0 +trany=-0.723261 +tranz=-1.76319 +pitch=0 +yaw=3.14159 +roll=0 + +[sitebooster] +parent=ROOT +tranx=0 +trany=-0.126814 +tranz=2.59522 +pitch=0 +yaw=-0 +roll=0 + +[sitechute] +parent=ROOT +tranx=0 +trany=-0.257925 +tranz=2.50541 +pitch=0 +yaw=-0 +roll=0 + diff --git a/CONTENT/RP/VIDEO/LAS.SKL b/CONTENT/RP/VIDEO/LAS.SKL new file mode 100644 index 0000000..d9f383d --- /dev/null +++ b/CONTENT/RP/VIDEO/LAS.SKL @@ -0,0 +1,136 @@ +[LAB_ONLY] // this file has not been approved for release + +[DamageZones] // call MakeEntryList with 'dz_' +dz_vtv=0 + +[ROOT] +JointCount=2 +DZoneCount=1 +Object=las.bgf +dzone=dz_vtv +Former Segment=seglu +tranx=0 +trany=0 +tranz=0 +pitch=0 +yaw=-0 +roll=0 +joint=jointleng +joint=jointreng +site=siteheadlight +site=siteeyepoint +site=sitetaillight +site=sitebooster +site=sitechute +site=sitefrontport +site=sitebackport + +[jointleng] +parent=ROOT +Type=hingex +Object=vlt.bgf +dzone=dz_vtv +Former Segment=segleng +tranx=-0.849957 +trany=0.09634 +tranz=-0.100513 +pitch=0 +yaw=-0 +roll=0 +site=siteleftengine + +[siteleftengine] +parent=jointleng +tranx=-0.528323 +trany=-0.257594 +tranz=0 +pitch=0 +yaw=-0 +roll=0 + +[jointreng] +parent=ROOT +Type=hingex +Object=vrt.bgf +dzone=dz_vtv +Former Segment=segreng +tranx=0.849954 +trany=0.09634 +tranz=-0.100513 +pitch=0 +yaw=-0 +roll=0 +site=siterightengine + +[siterightengine] +parent=jointreng +tranx=0.527976 +trany=-0.257591 +tranz=0 +pitch=0 +yaw=-0 +roll=0 + +[siteheadlight] +parent=ROOT +tranx=0 +trany=0.66153 +tranz=-0.451238 +pitch=0 +yaw=-0 +roll=0 + +[sitefrontport] +parent=ROOT +tranx=0 +trany=-0.723261 +tranz=-1.76319 +pitch=0 +yaw=-0 +roll=0 + +[siteeyepoint] +parent=ROOT +tranx=0 +trany=-0.123261 +tranz=-1.76319 +pitch=0 +yaw=-0 +roll=0 + +[sitetaillight] +parent=ROOT +tranx=0 +trany=0.236551 +tranz=2.55406 +pitch=0 +yaw=-0 +roll=0 + +[sitebackport] +parent=ROOT +tranx=0 +trany=-0.723261 +tranz=-1.76319 +pitch=0 +yaw=3.14159 +roll=0 + +[sitebooster] +parent=ROOT +tranx=0 +trany=-0.126814 +tranz=2.59522 +pitch=0 +yaw=-0 +roll=0 + +[sitechute] +parent=ROOT +tranx=0 +trany=-0.257925 +tranz=2.50541 +pitch=0 +yaw=-0 +roll=0 + diff --git a/CONTENT/RP/VIDEO/LASER.PFX b/CONTENT/RP/VIDEO/LASER.PFX new file mode 100644 index 0000000..0f1e596 --- /dev/null +++ b/CONTENT/RP/VIDEO/LASER.PFX @@ -0,0 +1,28 @@ +rpcult:intA_tex +0f000666 100 0.25 400.0 +0.0 0.0 0.0 0.3 +0.0 0.0 0.0 40.0 40.0 40.0 +6.0 0.5 3.6 0.7 -0.007 0.002 +0.0 -5.0 0.0 0.0 0.0 0.0 +0.00 0.000 +2.00 2.00 2.00 1.20 0.20 0.20 0.20 0.20 +2.00 2.00 2.00 1.00 0.20 0.20 0.10 0.10 +0.10 0.00 0.40 0.10 0.08 0.05 0.05 0.00 +0.15 0.05 0.45 -0.1 0.04 0.04 0.04 0.00 +1.0 1.0 +1.0 0.25 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv diff --git a/CONTENT/RP/VIDEO/LAT.SKL b/CONTENT/RP/VIDEO/LAT.SKL new file mode 100644 index 0000000..556436e --- /dev/null +++ b/CONTENT/RP/VIDEO/LAT.SKL @@ -0,0 +1,136 @@ +[LAB_ONLY] // this file has not been approved for release + +[DamageZones] // call MakeEntryList with 'dz_' +dz_vtv=0 + +[ROOT] +JointCount=2 +DZoneCount=1 +Object=lat.bgf +dzone=dz_vtv +Former Segment=seglu +tranx=0 +trany=0 +tranz=0 +pitch=0 +yaw=-0 +roll=0 +joint=jointleng +joint=jointreng +site=siteheadlight +site=siteeyepoint +site=sitetaillight +site=sitebooster +site=sitechute +site=sitefrontport +site=sitebackport + +[jointleng] +parent=ROOT +Type=hingex +Object=vlt.bgf +dzone=dz_vtv +Former Segment=segleng +tranx=-0.849957 +trany=0.09634 +tranz=-0.100513 +pitch=0 +yaw=-0 +roll=0 +site=siteleftengine + +[siteleftengine] +parent=jointleng +tranx=-0.528323 +trany=-0.257594 +tranz=0 +pitch=0 +yaw=-0 +roll=0 + +[jointreng] +parent=ROOT +Type=hingex +Object=vrt.bgf +dzone=dz_vtv +Former Segment=segreng +tranx=0.849954 +trany=0.09634 +tranz=-0.100513 +pitch=0 +yaw=-0 +roll=0 +site=siterightengine + +[siterightengine] +parent=jointreng +tranx=0.527976 +trany=-0.257591 +tranz=0 +pitch=0 +yaw=-0 +roll=0 + +[siteheadlight] +parent=ROOT +tranx=0 +trany=0.66153 +tranz=-0.451238 +pitch=0 +yaw=-0 +roll=0 + +[sitefrontport] +parent=ROOT +tranx=0 +trany=-0.723261 +tranz=-1.76319 +pitch=0 +yaw=-0 +roll=0 + +[siteeyepoint] +parent=ROOT +tranx=0 +trany=-0.123261 +tranz=-1.76319 +pitch=0 +yaw=-0 +roll=0 + +[sitetaillight] +parent=ROOT +tranx=0 +trany=0.236551 +tranz=2.55406 +pitch=0 +yaw=-0 +roll=0 + +[sitebackport] +parent=ROOT +tranx=0 +trany=-0.723261 +tranz=-1.76319 +pitch=0 +yaw=3.14159 +roll=0 + +[sitebooster] +parent=ROOT +tranx=0 +trany=-0.126814 +tranz=2.59522 +pitch=0 +yaw=-0 +roll=0 + +[sitechute] +parent=ROOT +tranx=0 +trany=-0.257925 +tranz=2.50541 +pitch=0 +yaw=-0 +roll=0 + diff --git a/CONTENT/RP/VIDEO/LAZDRIL.BGF b/CONTENT/RP/VIDEO/LAZDRIL.BGF new file mode 100644 index 0000000..fe7f571 Binary files /dev/null and b/CONTENT/RP/VIDEO/LAZDRIL.BGF differ diff --git a/CONTENT/RP/VIDEO/LSABER.BGF b/CONTENT/RP/VIDEO/LSABER.BGF new file mode 100644 index 0000000..12c6d32 Binary files /dev/null and b/CONTENT/RP/VIDEO/LSABER.BGF differ diff --git a/CONTENT/RP/VIDEO/LUA.BGF b/CONTENT/RP/VIDEO/LUA.BGF new file mode 100644 index 0000000..aaf3147 Binary files /dev/null and b/CONTENT/RP/VIDEO/LUA.BGF differ diff --git a/CONTENT/RP/VIDEO/LUA.SKL b/CONTENT/RP/VIDEO/LUA.SKL new file mode 100644 index 0000000..a07a5e3 --- /dev/null +++ b/CONTENT/RP/VIDEO/LUA.SKL @@ -0,0 +1,114 @@ +[LAB_ONLY] // this file has not been approved for release + +[DamageZones] // call MakeEntryList with 'dz_' +dz_vtv=0 + +[ROOT] +JointCount=2 +DZoneCount=1 +Object=lua.bgf +dzone=dz_vtv +Former Segment=seglu +tranx=0 +trany=0 +tranz=0 +pitch=0 +yaw=-0 +roll=0 +joint=jointleng +joint=jointreng +site=siteheadlight +site=siteeyepoint +site=sitetaillight +site=sitebooster +site=sitechute + +[jointleng] +parent=ROOT +Type=hingex +dzone=dz_vtv +Former Segment=segleng +tranx=-0.849957 +trany=0.09634 +tranz=-0.100513 +pitch=0 +yaw=-0 +roll=0 +site=siteleftengine + +[siteleftengine] +parent=jointleng +tranx=-0.528323 +trany=-0.257594 +tranz=0 +pitch=0 +yaw=-0 +roll=0 + +[jointreng] +parent=ROOT +Type=hingex +dzone=dz_vtv +Former Segment=segreng +tranx=0.849954 +trany=0.09634 +tranz=-0.100513 +pitch=0 +yaw=-0 +roll=0 +site=siterightengine + +[siterightengine] +parent=jointreng +tranx=0.527976 +trany=-0.257591 +tranz=0 +pitch=0 +yaw=-0 +roll=0 + +[siteheadlight] +parent=ROOT +tranx=0 +trany=0.66153 +tranz=-0.451238 +pitch=0 +yaw=-0 +roll=0 + +[siteeyepoint] +parent=ROOT +tranx=0 +trany=-0.123261 +tranz=-1.76319 +pitch=0 +yaw=-0 +roll=0 + +[sitetaillight] +parent=ROOT +tranx=0 +trany=0.236551 +tranz=2.55406 +pitch=0 +yaw=-0 +roll=0 + +[sitebooster] +parent=ROOT +tranx=0 +trany=-0.126814 +tranz=2.59522 +pitch=0 +yaw=-0 +roll=0 + +[sitechute] +parent=ROOT +tranx=0 +trany=-0.257925 +tranz=2.50541 +pitch=0 +yaw=-0 +roll=0 + diff --git a/CONTENT/RP/VIDEO/LUB.BGF b/CONTENT/RP/VIDEO/LUB.BGF new file mode 100644 index 0000000..aaf3147 Binary files /dev/null and b/CONTENT/RP/VIDEO/LUB.BGF differ diff --git a/CONTENT/RP/VIDEO/LUB.SKL b/CONTENT/RP/VIDEO/LUB.SKL new file mode 100644 index 0000000..403431d --- /dev/null +++ b/CONTENT/RP/VIDEO/LUB.SKL @@ -0,0 +1,114 @@ +[LAB_ONLY] // this file has not been approved for release + +[DamageZones] // call MakeEntryList with 'dz_' +dz_vtv=0 + +[ROOT] +JointCount=2 +DZoneCount=1 +Object=lub.bgf +dzone=dz_vtv +Former Segment=seglu +tranx=0 +trany=0 +tranz=0 +pitch=0 +yaw=-0 +roll=0 +joint=jointleng +joint=jointreng +site=siteheadlight +site=siteeyepoint +site=sitetaillight +site=sitebooster +site=sitechute + +[jointleng] +parent=ROOT +Type=hingex +dzone=dz_vtv +Former Segment=segleng +tranx=-0.849957 +trany=0.09634 +tranz=-0.100513 +pitch=0 +yaw=-0 +roll=0 +site=siteleftengine + +[siteleftengine] +parent=jointleng +tranx=-0.528323 +trany=-0.257594 +tranz=0 +pitch=0 +yaw=-0 +roll=0 + +[jointreng] +parent=ROOT +Type=hingex +dzone=dz_vtv +Former Segment=segreng +tranx=0.849954 +trany=0.09634 +tranz=-0.100513 +pitch=0 +yaw=-0 +roll=0 +site=siterightengine + +[siterightengine] +parent=jointreng +tranx=0.527976 +trany=-0.257591 +tranz=0 +pitch=0 +yaw=-0 +roll=0 + +[siteheadlight] +parent=ROOT +tranx=0 +trany=0.66153 +tranz=-0.451238 +pitch=0 +yaw=-0 +roll=0 + +[siteeyepoint] +parent=ROOT +tranx=0 +trany=-0.123261 +tranz=-1.76319 +pitch=0 +yaw=-0 +roll=0 + +[sitetaillight] +parent=ROOT +tranx=0 +trany=0.236551 +tranz=2.55406 +pitch=0 +yaw=-0 +roll=0 + +[sitebooster] +parent=ROOT +tranx=0 +trany=-0.126814 +tranz=2.59522 +pitch=0 +yaw=-0 +roll=0 + +[sitechute] +parent=ROOT +tranx=0 +trany=-0.257925 +tranz=2.50541 +pitch=0 +yaw=-0 +roll=0 + diff --git a/CONTENT/RP/VIDEO/LUC.BGF b/CONTENT/RP/VIDEO/LUC.BGF new file mode 100644 index 0000000..aaf3147 Binary files /dev/null and b/CONTENT/RP/VIDEO/LUC.BGF differ diff --git a/CONTENT/RP/VIDEO/LUC.SKL b/CONTENT/RP/VIDEO/LUC.SKL new file mode 100644 index 0000000..3dcad6b --- /dev/null +++ b/CONTENT/RP/VIDEO/LUC.SKL @@ -0,0 +1,114 @@ +[LAB_ONLY] // this file has not been approved for release + +[DamageZones] // call MakeEntryList with 'dz_' +dz_vtv=0 + +[ROOT] +JointCount=2 +DZoneCount=1 +Object=luc.bgf +dzone=dz_vtv +Former Segment=seglu +tranx=0 +trany=0 +tranz=0 +pitch=0 +yaw=-0 +roll=0 +joint=jointleng +joint=jointreng +site=siteheadlight +site=siteeyepoint +site=sitetaillight +site=sitebooster +site=sitechute + +[jointleng] +parent=ROOT +Type=hingex +dzone=dz_vtv +Former Segment=segleng +tranx=-0.849957 +trany=0.09634 +tranz=-0.100513 +pitch=0 +yaw=-0 +roll=0 +site=siteleftengine + +[siteleftengine] +parent=jointleng +tranx=-0.528323 +trany=-0.257594 +tranz=0 +pitch=0 +yaw=-0 +roll=0 + +[jointreng] +parent=ROOT +Type=hingex +dzone=dz_vtv +Former Segment=segreng +tranx=0.849954 +trany=0.09634 +tranz=-0.100513 +pitch=0 +yaw=-0 +roll=0 +site=siterightengine + +[siterightengine] +parent=jointreng +tranx=0.527976 +trany=-0.257591 +tranz=0 +pitch=0 +yaw=-0 +roll=0 + +[siteheadlight] +parent=ROOT +tranx=0 +trany=0.66153 +tranz=-0.451238 +pitch=0 +yaw=-0 +roll=0 + +[siteeyepoint] +parent=ROOT +tranx=0 +trany=-0.123261 +tranz=-1.76319 +pitch=0 +yaw=-0 +roll=0 + +[sitetaillight] +parent=ROOT +tranx=0 +trany=0.236551 +tranz=2.55406 +pitch=0 +yaw=-0 +roll=0 + +[sitebooster] +parent=ROOT +tranx=0 +trany=-0.126814 +tranz=2.59522 +pitch=0 +yaw=-0 +roll=0 + +[sitechute] +parent=ROOT +tranx=0 +trany=-0.257925 +tranz=2.50541 +pitch=0 +yaw=-0 +roll=0 + diff --git a/CONTENT/RP/VIDEO/LUN.SKL b/CONTENT/RP/VIDEO/LUN.SKL new file mode 100644 index 0000000..855ac25 --- /dev/null +++ b/CONTENT/RP/VIDEO/LUN.SKL @@ -0,0 +1,116 @@ +[LAB_ONLY] // this file has not been approved for release + +[DamageZones] // call MakeEntryList with 'dz_' +dz_vtv=0 + +[ROOT] +JointCount=2 +DZoneCount=1 +Object=lun.bgf +dzone=dz_vtv +Former Segment=seglu +tranx=0 +trany=0 +tranz=0 +pitch=0 +yaw=-0 +roll=0 +joint=jointleng +joint=jointreng +site=siteheadlight +site=siteeyepoint +site=sitetaillight +site=sitebooster +site=sitechute + +[jointleng] +parent=ROOT +Type=hingex +Object=vln.bgf +dzone=dz_vtv +Former Segment=segleng +tranx=-0.849957 +trany=0.09634 +tranz=-0.100513 +pitch=0 +yaw=-0 +roll=0 +site=siteleftengine + +[siteleftengine] +parent=jointleng +tranx=-0.528323 +trany=-0.257594 +tranz=0 +pitch=0 +yaw=-0 +roll=0 + +[jointreng] +parent=ROOT +Type=hingex +Object=vrn.bgf +dzone=dz_vtv +Former Segment=segreng +tranx=0.849954 +trany=0.09634 +tranz=-0.100513 +pitch=0 +yaw=-0 +roll=0 +site=siterightengine + +[siterightengine] +parent=jointreng +tranx=0.527976 +trany=-0.257591 +tranz=0 +pitch=0 +yaw=-0 +roll=0 + +[siteheadlight] +parent=ROOT +tranx=0 +trany=0.66153 +tranz=-0.451238 +pitch=0 +yaw=-0 +roll=0 + +[siteeyepoint] +parent=ROOT +tranx=0 +trany=-0.123261 +tranz=-1.76319 +pitch=0 +yaw=-0 +roll=0 + +[sitetaillight] +parent=ROOT +tranx=0 +trany=0.236551 +tranz=2.55406 +pitch=0 +yaw=-0 +roll=0 + +[sitebooster] +parent=ROOT +tranx=0 +trany=-0.126814 +tranz=2.59522 +pitch=0 +yaw=-0 +roll=0 + +[sitechute] +parent=ROOT +tranx=0 +trany=-0.257925 +tranz=2.50541 +pitch=0 +yaw=-0 +roll=0 + diff --git a/CONTENT/RP/VIDEO/LUS.SKL b/CONTENT/RP/VIDEO/LUS.SKL new file mode 100644 index 0000000..f889644 --- /dev/null +++ b/CONTENT/RP/VIDEO/LUS.SKL @@ -0,0 +1,116 @@ +[LAB_ONLY] // this file has not been approved for release + +[DamageZones] // call MakeEntryList with 'dz_' +dz_vtv=0 + +[ROOT] +JointCount=2 +DZoneCount=1 +Object=lus.bgf +dzone=dz_vtv +Former Segment=seglu +tranx=0 +trany=0 +tranz=0 +pitch=0 +yaw=-0 +roll=0 +joint=jointleng +joint=jointreng +site=siteheadlight +site=siteeyepoint +site=sitetaillight +site=sitebooster +site=sitechute + +[jointleng] +parent=ROOT +Type=hingex +Object=vlt.bgf +dzone=dz_vtv +Former Segment=segleng +tranx=-0.849957 +trany=0.09634 +tranz=-0.100513 +pitch=0 +yaw=-0 +roll=0 +site=siteleftengine + +[siteleftengine] +parent=jointleng +tranx=-0.528323 +trany=-0.257594 +tranz=0 +pitch=0 +yaw=-0 +roll=0 + +[jointreng] +parent=ROOT +Type=hingex +Object=vrt.bgf +dzone=dz_vtv +Former Segment=segreng +tranx=0.849954 +trany=0.09634 +tranz=-0.100513 +pitch=0 +yaw=-0 +roll=0 +site=siterightengine + +[siterightengine] +parent=jointreng +tranx=0.527976 +trany=-0.257591 +tranz=0 +pitch=0 +yaw=-0 +roll=0 + +[siteheadlight] +parent=ROOT +tranx=0 +trany=0.66153 +tranz=-0.451238 +pitch=0 +yaw=-0 +roll=0 + +[siteeyepoint] +parent=ROOT +tranx=0 +trany=-0.123261 +tranz=-1.76319 +pitch=0 +yaw=-0 +roll=0 + +[sitetaillight] +parent=ROOT +tranx=0 +trany=0.236551 +tranz=2.55406 +pitch=0 +yaw=-0 +roll=0 + +[sitebooster] +parent=ROOT +tranx=0 +trany=-0.126814 +tranz=2.59522 +pitch=0 +yaw=-0 +roll=0 + +[sitechute] +parent=ROOT +tranx=0 +trany=-0.257925 +tranz=2.50541 +pitch=0 +yaw=-0 +roll=0 + diff --git a/CONTENT/RP/VIDEO/LUT.SKL b/CONTENT/RP/VIDEO/LUT.SKL new file mode 100644 index 0000000..e1ff34a --- /dev/null +++ b/CONTENT/RP/VIDEO/LUT.SKL @@ -0,0 +1,116 @@ +[LAB_ONLY] // this file has not been approved for release + +[DamageZones] // call MakeEntryList with 'dz_' +dz_vtv=0 + +[ROOT] +JointCount=2 +DZoneCount=1 +Object=lut.bgf +dzone=dz_vtv +Former Segment=seglu +tranx=0 +trany=0 +tranz=0 +pitch=0 +yaw=-0 +roll=0 +joint=jointleng +joint=jointreng +site=siteheadlight +site=siteeyepoint +site=sitetaillight +site=sitebooster +site=sitechute + +[jointleng] +parent=ROOT +Type=hingex +Object=vlt.bgf +dzone=dz_vtv +Former Segment=segleng +tranx=-0.849957 +trany=0.09634 +tranz=-0.100513 +pitch=0 +yaw=-0 +roll=0 +site=siteleftengine + +[siteleftengine] +parent=jointleng +tranx=-0.528323 +trany=-0.257594 +tranz=0 +pitch=0 +yaw=-0 +roll=0 + +[jointreng] +parent=ROOT +Type=hingex +Object=vrt.bgf +dzone=dz_vtv +Former Segment=segreng +tranx=0.849954 +trany=0.09634 +tranz=-0.100513 +pitch=0 +yaw=-0 +roll=0 +site=siterightengine + +[siterightengine] +parent=jointreng +tranx=0.527976 +trany=-0.257591 +tranz=0 +pitch=0 +yaw=-0 +roll=0 + +[siteheadlight] +parent=ROOT +tranx=0 +trany=0.66153 +tranz=-0.451238 +pitch=0 +yaw=-0 +roll=0 + +[siteeyepoint] +parent=ROOT +tranx=0 +trany=-0.123261 +tranz=-1.76319 +pitch=0 +yaw=-0 +roll=0 + +[sitetaillight] +parent=ROOT +tranx=0 +trany=0.236551 +tranz=2.55406 +pitch=0 +yaw=-0 +roll=0 + +[sitebooster] +parent=ROOT +tranx=0 +trany=-0.126814 +tranz=2.59522 +pitch=0 +yaw=-0 +roll=0 + +[sitechute] +parent=ROOT +tranx=0 +trany=-0.257925 +tranz=2.50541 +pitch=0 +yaw=-0 +roll=0 + diff --git a/CONTENT/RP/VIDEO/MB1.BGF b/CONTENT/RP/VIDEO/MB1.BGF new file mode 100644 index 0000000..f79d14a Binary files /dev/null and b/CONTENT/RP/VIDEO/MB1.BGF differ diff --git a/CONTENT/RP/VIDEO/MINE.BGF b/CONTENT/RP/VIDEO/MINE.BGF new file mode 100644 index 0000000..811467c Binary files /dev/null and b/CONTENT/RP/VIDEO/MINE.BGF differ diff --git a/CONTENT/RP/VIDEO/MISSILE.BGF b/CONTENT/RP/VIDEO/MISSILE.BGF new file mode 100644 index 0000000..6304728 Binary files /dev/null and b/CONTENT/RP/VIDEO/MISSILE.BGF differ diff --git a/CONTENT/RP/VIDEO/MUA.BGF b/CONTENT/RP/VIDEO/MUA.BGF new file mode 100644 index 0000000..3b430a4 Binary files /dev/null and b/CONTENT/RP/VIDEO/MUA.BGF differ diff --git a/CONTENT/RP/VIDEO/MUA.SKL b/CONTENT/RP/VIDEO/MUA.SKL new file mode 100644 index 0000000..81da52f --- /dev/null +++ b/CONTENT/RP/VIDEO/MUA.SKL @@ -0,0 +1,172 @@ +[LAB_ONLY] // this file has not been approved for release + +[DamageZones] // call MakeEntryList with 'dz_' +dz_vtv=0 + +[ROOT] +JointCount=4 +DZoneCount=1 +Object=mua.bgf +dzone=dz_vtv +Former Segment=segmu +tranx=0 +trany=0 +tranz=0 +pitch=0 +yaw=-0 +roll=0 +site=sitebeacon +joint=jointrfeng +joint=jointlfeng +site=sitetaillight +site=siteeyepoint +site=siteheadlight +joint=jointlbeng +joint=jointrbeng +site=sitebooster +site=sitechute + +[sitebeacon] +parent=ROOT +tranx=0 +trany=1.53617 +tranz=2.06105 +pitch=0 +yaw=-0 +roll=0 + +[jointrfeng] +parent=ROOT +Type=hingex +Object=vra.bgf +dzone=dz_vtv +Former Segment=segrfeng +tranx=1.75009 +trany=-0.24832 +tranz=-2.98056 +pitch=0 +yaw=-0 +roll=0 +site=siterightfrontengine + +[siterightfrontengine] +parent=jointrfeng +tranx=0.50877 +trany=-0.249838 +tranz=0 +pitch=-2.01849e-08 +yaw=-4.11046e-08 +roll=0 + +[jointlfeng] +parent=ROOT +Type=hingex +Object=vla.bgf +dzone=dz_vtv +Former Segment=seglfeng +tranx=-1.74997 +trany=-0.24832 +tranz=-2.98056 +pitch=0 +yaw=-0 +roll=0 +site=siteleftfrontengine + +[siteleftfrontengine] +parent=jointlfeng +tranx=-0.51151 +trany=-0.249956 +tranz=0 +pitch=0 +yaw=-0 +roll=0 + +[sitetaillight] +parent=ROOT +tranx=0 +trany=-0.30126 +tranz=4.32935 +pitch=0 +yaw=-0 +roll=0 + +[siteeyepoint] +parent=ROOT +tranx=0 +trany=0.985935 +tranz=2.22823 +pitch=0 +yaw=-0 +roll=0 + +[siteheadlight] +parent=ROOT +tranx=0 +trany=-0.29014 +tranz=-4.51798 +pitch=0 +yaw=-0 +roll=0 + +[jointlbeng] +parent=ROOT +Type=hingex +dzone=dz_vtv +Former Segment=seglbeng +tranx=-1.74997 +trany=-0.24861 +tranz=3.41415 +pitch=0 +yaw=-0 +roll=0 +site=siteleftbackengine + +[siteleftbackengine] +parent=jointlbeng +tranx=-0.51151 +trany=-0.249658 +tranz=0 +pitch=-4.88944e-09 +yaw=1.74624e-09 +roll=0 + +[jointrbeng] +parent=ROOT +Type=hingex +dzone=dz_vtv +Former Segment=segrbeng +tranx=1.75009 +trany=-0.24861 +tranz=3.41415 +pitch=0 +yaw=-0 +roll=0 +site=siterightbackengine + +[siterightbackengine] +parent=jointrbeng +tranx=0.50877 +trany=-0.249541 +tranz=0 +pitch=-1.61586e-08 +yaw=-3.29447e-08 +roll=0 + +[sitebooster] +parent=ROOT +tranx=0 +trany=-0.63001 +tranz=4.33787 +pitch=0 +yaw=-0 +roll=0 + +[sitechute] +parent=ROOT +tranx=0 +trany=-0.37765 +tranz=4.32402 +pitch=0 +yaw=-0 +roll=0 + diff --git a/CONTENT/RP/VIDEO/MUB.BGF b/CONTENT/RP/VIDEO/MUB.BGF new file mode 100644 index 0000000..4a518ff Binary files /dev/null and b/CONTENT/RP/VIDEO/MUB.BGF differ diff --git a/CONTENT/RP/VIDEO/MUB.SKL b/CONTENT/RP/VIDEO/MUB.SKL new file mode 100644 index 0000000..d000ee8 --- /dev/null +++ b/CONTENT/RP/VIDEO/MUB.SKL @@ -0,0 +1,172 @@ +[LAB_ONLY] // this file has not been approved for release + +[DamageZones] // call MakeEntryList with 'dz_' +dz_vtv=0 + +[ROOT] +JointCount=4 +DZoneCount=1 +Object=mub.bgf +dzone=dz_vtv +Former Segment=segmu +tranx=0 +trany=0 +tranz=0 +pitch=0 +yaw=-0 +roll=0 +site=sitebeacon +joint=jointrfeng +joint=jointlfeng +site=sitetaillight +site=siteeyepoint +site=siteheadlight +joint=jointlbeng +joint=jointrbeng +site=sitebooster +site=sitechute + +[sitebeacon] +parent=ROOT +tranx=0 +trany=1.53617 +tranz=2.06105 +pitch=0 +yaw=-0 +roll=0 + +[jointrfeng] +parent=ROOT +Type=hingex +Object=vrc.bgf +dzone=dz_vtv +Former Segment=segrfeng +tranx=1.75009 +trany=-0.24832 +tranz=-2.98056 +pitch=0 +yaw=-0 +roll=0 +site=siterightfrontengine + +[siterightfrontengine] +parent=jointrfeng +tranx=0.50877 +trany=-0.249838 +tranz=0 +pitch=-2.01849e-08 +yaw=-4.11046e-08 +roll=0 + +[jointlfeng] +parent=ROOT +Type=hingex +Object=vlc.bgf +dzone=dz_vtv +Former Segment=seglfeng +tranx=-1.74997 +trany=-0.24832 +tranz=-2.98056 +pitch=0 +yaw=-0 +roll=0 +site=siteleftfrontengine + +[siteleftfrontengine] +parent=jointlfeng +tranx=-0.51151 +trany=-0.249956 +tranz=0 +pitch=0 +yaw=-0 +roll=0 + +[sitetaillight] +parent=ROOT +tranx=0 +trany=-0.30126 +tranz=4.32935 +pitch=0 +yaw=-0 +roll=0 + +[siteeyepoint] +parent=ROOT +tranx=0 +trany=0.985935 +tranz=2.22823 +pitch=0 +yaw=-0 +roll=0 + +[siteheadlight] +parent=ROOT +tranx=0 +trany=-0.29014 +tranz=-4.51798 +pitch=0 +yaw=-0 +roll=0 + +[jointlbeng] +parent=ROOT +Type=hingex +dzone=dz_vtv +Former Segment=seglbeng +tranx=-1.74997 +trany=-0.24861 +tranz=3.41415 +pitch=0 +yaw=-0 +roll=0 +site=siteleftbackengine + +[siteleftbackengine] +parent=jointlbeng +tranx=-0.51151 +trany=-0.249658 +tranz=0 +pitch=-4.88944e-09 +yaw=1.74624e-09 +roll=0 + +[jointrbeng] +parent=ROOT +Type=hingex +dzone=dz_vtv +Former Segment=segrbeng +tranx=1.75009 +trany=-0.24861 +tranz=3.41415 +pitch=0 +yaw=-0 +roll=0 +site=siterightbackengine + +[siterightbackengine] +parent=jointrbeng +tranx=0.50877 +trany=-0.249541 +tranz=0 +pitch=-1.61586e-08 +yaw=-3.29447e-08 +roll=0 + +[sitebooster] +parent=ROOT +tranx=0 +trany=-0.63001 +tranz=4.33787 +pitch=0 +yaw=-0 +roll=0 + +[sitechute] +parent=ROOT +tranx=0 +trany=-0.37765 +tranz=4.32402 +pitch=0 +yaw=-0 +roll=0 + diff --git a/CONTENT/RP/VIDEO/MUC.BGF b/CONTENT/RP/VIDEO/MUC.BGF new file mode 100644 index 0000000..b32dcad Binary files /dev/null and b/CONTENT/RP/VIDEO/MUC.BGF differ diff --git a/CONTENT/RP/VIDEO/MUC.SKL b/CONTENT/RP/VIDEO/MUC.SKL new file mode 100644 index 0000000..ff42063 --- /dev/null +++ b/CONTENT/RP/VIDEO/MUC.SKL @@ -0,0 +1,172 @@ +[LAB_ONLY] // this file has not been approved for release + +[DamageZones] // call MakeEntryList with 'dz_' +dz_vtv=0 + +[ROOT] +JointCount=4 +DZoneCount=1 +Object=muc.bgf +dzone=dz_vtv +Former Segment=segmu +tranx=0 +trany=0 +tranz=0 +pitch=0 +yaw=-0 +roll=0 +site=sitebeacon +joint=jointrfeng +joint=jointlfeng +site=sitetaillight +site=siteeyepoint +site=siteheadlight +joint=jointlbeng +joint=jointrbeng +site=sitebooster +site=sitechute + +[sitebeacon] +parent=ROOT +tranx=0 +trany=1.53617 +tranz=2.06105 +pitch=0 +yaw=-0 +roll=0 + +[jointrfeng] +parent=ROOT +Type=hingex +Object=vrc.bgf +dzone=dz_vtv +Former Segment=segrfeng +tranx=1.75009 +trany=-0.24832 +tranz=-2.98056 +pitch=0 +yaw=-0 +roll=0 +site=siterightfrontengine + +[siterightfrontengine] +parent=jointrfeng +tranx=0.50877 +trany=-0.249838 +tranz=0 +pitch=-2.01849e-08 +yaw=-4.11046e-08 +roll=0 + +[jointlfeng] +parent=ROOT +Type=hingex +Object=vlc.bgf +dzone=dz_vtv +Former Segment=seglfeng +tranx=-1.74997 +trany=-0.24832 +tranz=-2.98056 +pitch=0 +yaw=-0 +roll=0 +site=siteleftfrontengine + +[siteleftfrontengine] +parent=jointlfeng +tranx=-0.51151 +trany=-0.249956 +tranz=0 +pitch=0 +yaw=-0 +roll=0 + +[sitetaillight] +parent=ROOT +tranx=0 +trany=-0.30126 +tranz=4.32935 +pitch=0 +yaw=-0 +roll=0 + +[siteeyepoint] +parent=ROOT +tranx=0 +trany=0.985935 +tranz=2.22823 +pitch=0 +yaw=-0 +roll=0 + +[siteheadlight] +parent=ROOT +tranx=0 +trany=-0.29014 +tranz=-4.51798 +pitch=0 +yaw=-0 +roll=0 + +[jointlbeng] +parent=ROOT +Type=hingex +dzone=dz_vtv +Former Segment=seglbeng +tranx=-1.74997 +trany=-0.24861 +tranz=3.41415 +pitch=0 +yaw=-0 +roll=0 +site=siteleftbackengine + +[siteleftbackengine] +parent=jointlbeng +tranx=-0.51151 +trany=-0.249658 +tranz=0 +pitch=-4.88944e-09 +yaw=1.74624e-09 +roll=0 + +[jointrbeng] +parent=ROOT +Type=hingex +dzone=dz_vtv +Former Segment=segrbeng +tranx=1.75009 +trany=-0.24861 +tranz=3.41415 +pitch=0 +yaw=-0 +roll=0 +site=siterightbackengine + +[siterightbackengine] +parent=jointrbeng +tranx=0.50877 +trany=-0.249541 +tranz=0 +pitch=-1.61586e-08 +yaw=-3.29447e-08 +roll=0 + +[sitebooster] +parent=ROOT +tranx=0 +trany=-0.63001 +tranz=4.33787 +pitch=0 +yaw=-0 +roll=0 + +[sitechute] +parent=ROOT +tranx=0 +trany=-0.37765 +tranz=4.32402 +pitch=0 +yaw=-0 +roll=0 + diff --git a/CONTENT/RP/VIDEO/MUN.SKL b/CONTENT/RP/VIDEO/MUN.SKL new file mode 100644 index 0000000..a56005d --- /dev/null +++ b/CONTENT/RP/VIDEO/MUN.SKL @@ -0,0 +1,174 @@ +[LAB_ONLY] // this file has not been approved for release + +[DamageZones] // call MakeEntryList with 'dz_' +dz_vtv=0 + +[ROOT] +JointCount=4 +DZoneCount=1 +Object=mun.bgf +dzone=dz_vtv +Former Segment=segmu +tranx=0 +trany=0 +tranz=0 +pitch=0 +yaw=-0 +roll=0 +site=sitebeacon +joint=jointrfeng +joint=jointlfeng +site=sitetaillight +site=siteeyepoint +site=siteheadlight +joint=jointlbeng +joint=jointrbeng +site=sitebooster +site=sitechute + +[sitebeacon] +parent=ROOT +tranx=0 +trany=1.53617 +tranz=2.06105 +pitch=0 +yaw=-0 +roll=0 + +[jointrfeng] +parent=ROOT +Type=hingex +Object=vrn.bgf +dzone=dz_vtv +Former Segment=segrfeng +tranx=1.75009 +trany=-0.24832 +tranz=-2.98056 +pitch=0 +yaw=-0 +roll=0 +site=siterightfrontengine + +[siterightfrontengine] +parent=jointrfeng +tranx=0.50877 +trany=-0.249838 +tranz=0 +pitch=-2.01849e-08 +yaw=-4.11046e-08 +roll=0 + +[jointlfeng] +parent=ROOT +Type=hingex +Object=vln.bgf +dzone=dz_vtv +Former Segment=seglfeng +tranx=-1.74997 +trany=-0.24832 +tranz=-2.98056 +pitch=0 +yaw=-0 +roll=0 +site=siteleftfrontengine + +[siteleftfrontengine] +parent=jointlfeng +tranx=-0.51151 +trany=-0.249956 +tranz=0 +pitch=0 +yaw=-0 +roll=0 + +[sitetaillight] +parent=ROOT +tranx=0 +trany=-0.30126 +tranz=4.32935 +pitch=0 +yaw=-0 +roll=0 + +[siteeyepoint] +parent=ROOT +tranx=0 +trany=0.985935 +tranz=2.22823 +pitch=0 +yaw=-0 +roll=0 + +[siteheadlight] +parent=ROOT +tranx=0 +trany=-0.29014 +tranz=-4.51798 +pitch=0 +yaw=-0 +roll=0 + +[jointlbeng] +parent=ROOT +Type=hingex +Object=vln.bgf +dzone=dz_vtv +Former Segment=seglbeng +tranx=-1.74997 +trany=-0.24861 +tranz=3.41415 +pitch=0 +yaw=-0 +roll=0 +site=siteleftbackengine + +[siteleftbackengine] +parent=jointlbeng +tranx=-0.51151 +trany=-0.249658 +tranz=0 +pitch=-4.88944e-09 +yaw=1.74624e-09 +roll=0 + +[jointrbeng] +parent=ROOT +Type=hingex +Object=vrn.bgf +dzone=dz_vtv +Former Segment=segrbeng +tranx=1.75009 +trany=-0.24861 +tranz=3.41415 +pitch=0 +yaw=-0 +roll=0 +site=siterightbackengine + +[siterightbackengine] +parent=jointrbeng +tranx=0.50877 +trany=-0.249541 +tranz=0 +pitch=-1.61586e-08 +yaw=-3.29447e-08 +roll=0 + +[sitebooster] +parent=ROOT +tranx=0 +trany=-0.63001 +tranz=4.33787 +pitch=0 +yaw=-0 +roll=0 + +[sitechute] +parent=ROOT +tranx=0 +trany=-0.37765 +tranz=4.32402 +pitch=0 +yaw=-0 +roll=0 + diff --git a/CONTENT/RP/VIDEO/MUS.SKL b/CONTENT/RP/VIDEO/MUS.SKL new file mode 100644 index 0000000..12bf3ac --- /dev/null +++ b/CONTENT/RP/VIDEO/MUS.SKL @@ -0,0 +1,174 @@ +[LAB_ONLY] // this file has not been approved for release + +[DamageZones] // call MakeEntryList with 'dz_' +dz_vtv=0 + +[ROOT] +JointCount=4 +DZoneCount=1 +Object=mus.bgf +dzone=dz_vtv +Former Segment=segmu +tranx=0 +trany=0 +tranz=0 +pitch=0 +yaw=-0 +roll=0 +site=sitebeacon +joint=jointrfeng +joint=jointlfeng +site=sitetaillight +site=siteeyepoint +site=siteheadlight +joint=jointlbeng +joint=jointrbeng +site=sitebooster +site=sitechute + +[sitebeacon] +parent=ROOT +tranx=0 +trany=1.53617 +tranz=2.06105 +pitch=0 +yaw=-0 +roll=0 + +[jointrfeng] +parent=ROOT +Type=hingex +Object=vrt.bgf +dzone=dz_vtv +Former Segment=segrfeng +tranx=1.75009 +trany=-0.24832 +tranz=-2.98056 +pitch=0 +yaw=-0 +roll=0 +site=siterightfrontengine + +[siterightfrontengine] +parent=jointrfeng +tranx=0.50877 +trany=-0.249838 +tranz=0 +pitch=-2.01849e-08 +yaw=-4.11046e-08 +roll=0 + +[jointlfeng] +parent=ROOT +Type=hingex +Object=vlt.bgf +dzone=dz_vtv +Former Segment=seglfeng +tranx=-1.74997 +trany=-0.24832 +tranz=-2.98056 +pitch=0 +yaw=-0 +roll=0 +site=siteleftfrontengine + +[siteleftfrontengine] +parent=jointlfeng +tranx=-0.51151 +trany=-0.249956 +tranz=0 +pitch=0 +yaw=-0 +roll=0 + +[sitetaillight] +parent=ROOT +tranx=0 +trany=-0.30126 +tranz=4.32935 +pitch=0 +yaw=-0 +roll=0 + +[siteeyepoint] +parent=ROOT +tranx=0 +trany=0.985935 +tranz=2.22823 +pitch=0 +yaw=-0 +roll=0 + +[siteheadlight] +parent=ROOT +tranx=0 +trany=-0.29014 +tranz=-4.51798 +pitch=0 +yaw=-0 +roll=0 + +[jointlbeng] +parent=ROOT +Type=hingex +Object=vlt.bgf +dzone=dz_vtv +Former Segment=seglbeng +tranx=-1.74997 +trany=-0.24861 +tranz=3.41415 +pitch=0 +yaw=-0 +roll=0 +site=siteleftbackengine + +[siteleftbackengine] +parent=jointlbeng +tranx=-0.51151 +trany=-0.249658 +tranz=0 +pitch=-4.88944e-09 +yaw=1.74624e-09 +roll=0 + +[jointrbeng] +parent=ROOT +Type=hingex +Object=vrt.bgf +dzone=dz_vtv +Former Segment=segrbeng +tranx=1.75009 +trany=-0.24861 +tranz=3.41415 +pitch=0 +yaw=-0 +roll=0 +site=siterightbackengine + +[siterightbackengine] +parent=jointrbeng +tranx=0.50877 +trany=-0.249541 +tranz=0 +pitch=-1.61586e-08 +yaw=-3.29447e-08 +roll=0 + +[sitebooster] +parent=ROOT +tranx=0 +trany=-0.63001 +tranz=4.33787 +pitch=0 +yaw=-0 +roll=0 + +[sitechute] +parent=ROOT +tranx=0 +trany=-0.37765 +tranz=4.32402 +pitch=0 +yaw=-0 +roll=0 + diff --git a/CONTENT/RP/VIDEO/MUT.SKL b/CONTENT/RP/VIDEO/MUT.SKL new file mode 100644 index 0000000..b97fbba --- /dev/null +++ b/CONTENT/RP/VIDEO/MUT.SKL @@ -0,0 +1,174 @@ +[LAB_ONLY] // this file has not been approved for release + +[DamageZones] // call MakeEntryList with 'dz_' +dz_vtv=0 + +[ROOT] +JointCount=4 +DZoneCount=1 +Object=mut.bgf +dzone=dz_vtv +Former Segment=segmu +tranx=0 +trany=0 +tranz=0 +pitch=0 +yaw=-0 +roll=0 +site=sitebeacon +joint=jointrfeng +joint=jointlfeng +site=sitetaillight +site=siteeyepoint +site=siteheadlight +joint=jointlbeng +joint=jointrbeng +site=sitebooster +site=sitechute + +[sitebeacon] +parent=ROOT +tranx=0 +trany=1.53617 +tranz=2.06105 +pitch=0 +yaw=-0 +roll=0 + +[jointrfeng] +parent=ROOT +Type=hingex +Object=vrt.bgf +dzone=dz_vtv +Former Segment=segrfeng +tranx=1.75009 +trany=-0.24832 +tranz=-2.98056 +pitch=0 +yaw=-0 +roll=0 +site=siterightfrontengine + +[siterightfrontengine] +parent=jointrfeng +tranx=0.50877 +trany=-0.249838 +tranz=0 +pitch=-2.01849e-08 +yaw=-4.11046e-08 +roll=0 + +[jointlfeng] +parent=ROOT +Type=hingex +Object=vlt.bgf +dzone=dz_vtv +Former Segment=seglfeng +tranx=-1.74997 +trany=-0.24832 +tranz=-2.98056 +pitch=0 +yaw=-0 +roll=0 +site=siteleftfrontengine + +[siteleftfrontengine] +parent=jointlfeng +tranx=-0.51151 +trany=-0.249956 +tranz=0 +pitch=0 +yaw=-0 +roll=0 + +[sitetaillight] +parent=ROOT +tranx=0 +trany=-0.30126 +tranz=4.32935 +pitch=0 +yaw=-0 +roll=0 + +[siteeyepoint] +parent=ROOT +tranx=0 +trany=0.985935 +tranz=2.22823 +pitch=0 +yaw=-0 +roll=0 + +[siteheadlight] +parent=ROOT +tranx=0 +trany=-0.29014 +tranz=-4.51798 +pitch=0 +yaw=-0 +roll=0 + +[jointlbeng] +parent=ROOT +Type=hingex +Object=vlt.bgf +dzone=dz_vtv +Former Segment=seglbeng +tranx=-1.74997 +trany=-0.24861 +tranz=3.41415 +pitch=0 +yaw=-0 +roll=0 +site=siteleftbackengine + +[siteleftbackengine] +parent=jointlbeng +tranx=-0.51151 +trany=-0.249658 +tranz=0 +pitch=-4.88944e-09 +yaw=1.74624e-09 +roll=0 + +[jointrbeng] +parent=ROOT +Type=hingex +Object=vrt.bgf +dzone=dz_vtv +Former Segment=segrbeng +tranx=1.75009 +trany=-0.24861 +tranz=3.41415 +pitch=0 +yaw=-0 +roll=0 +site=siterightbackengine + +[siterightbackengine] +parent=jointrbeng +tranx=0.50877 +trany=-0.249541 +tranz=0 +pitch=-1.61586e-08 +yaw=-3.29447e-08 +roll=0 + +[sitebooster] +parent=ROOT +tranx=0 +trany=-0.63001 +tranz=4.33787 +pitch=0 +yaw=-0 +roll=0 + +[sitechute] +parent=ROOT +tranx=0 +trany=-0.37765 +tranz=4.32402 +pitch=0 +yaw=-0 +roll=0 + diff --git a/CONTENT/RP/VIDEO/OA3L.BGF b/CONTENT/RP/VIDEO/OA3L.BGF new file mode 100644 index 0000000..0e8ac48 Binary files /dev/null and b/CONTENT/RP/VIDEO/OA3L.BGF differ diff --git a/CONTENT/RP/VIDEO/OD1L.BGF b/CONTENT/RP/VIDEO/OD1L.BGF new file mode 100644 index 0000000..eae4fa3 Binary files /dev/null and b/CONTENT/RP/VIDEO/OD1L.BGF differ diff --git a/CONTENT/RP/VIDEO/OD3L.BGF b/CONTENT/RP/VIDEO/OD3L.BGF new file mode 100644 index 0000000..8bdc29f Binary files /dev/null and b/CONTENT/RP/VIDEO/OD3L.BGF differ diff --git a/CONTENT/RP/VIDEO/OS1.BGF b/CONTENT/RP/VIDEO/OS1.BGF new file mode 100644 index 0000000..d693c18 Binary files /dev/null and b/CONTENT/RP/VIDEO/OS1.BGF differ diff --git a/CONTENT/RP/VIDEO/PL1L.BGF b/CONTENT/RP/VIDEO/PL1L.BGF new file mode 100644 index 0000000..b3e9f6a Binary files /dev/null and b/CONTENT/RP/VIDEO/PL1L.BGF differ diff --git a/CONTENT/RP/VIDEO/PLACE1.BGF b/CONTENT/RP/VIDEO/PLACE1.BGF new file mode 100644 index 0000000..b3d899d Binary files /dev/null and b/CONTENT/RP/VIDEO/PLACE1.BGF differ diff --git a/CONTENT/RP/VIDEO/PLACE2.BGF b/CONTENT/RP/VIDEO/PLACE2.BGF new file mode 100644 index 0000000..68d1e7a Binary files /dev/null and b/CONTENT/RP/VIDEO/PLACE2.BGF differ diff --git a/CONTENT/RP/VIDEO/PLACE3.BGF b/CONTENT/RP/VIDEO/PLACE3.BGF new file mode 100644 index 0000000..a93421e Binary files /dev/null and b/CONTENT/RP/VIDEO/PLACE3.BGF differ diff --git a/CONTENT/RP/VIDEO/PLACE4.BGF b/CONTENT/RP/VIDEO/PLACE4.BGF new file mode 100644 index 0000000..034b8b0 Binary files /dev/null and b/CONTENT/RP/VIDEO/PLACE4.BGF differ diff --git a/CONTENT/RP/VIDEO/PLACE5.BGF b/CONTENT/RP/VIDEO/PLACE5.BGF new file mode 100644 index 0000000..54fb5f9 Binary files /dev/null and b/CONTENT/RP/VIDEO/PLACE5.BGF differ diff --git a/CONTENT/RP/VIDEO/PLACE6.BGF b/CONTENT/RP/VIDEO/PLACE6.BGF new file mode 100644 index 0000000..bba49db Binary files /dev/null and b/CONTENT/RP/VIDEO/PLACE6.BGF differ diff --git a/CONTENT/RP/VIDEO/PLACE7.BGF b/CONTENT/RP/VIDEO/PLACE7.BGF new file mode 100644 index 0000000..5871fea Binary files /dev/null and b/CONTENT/RP/VIDEO/PLACE7.BGF differ diff --git a/CONTENT/RP/VIDEO/PLACE8.BGF b/CONTENT/RP/VIDEO/PLACE8.BGF new file mode 100644 index 0000000..b5c8b7e Binary files /dev/null and b/CONTENT/RP/VIDEO/PLACE8.BGF differ diff --git a/CONTENT/RP/VIDEO/PM1L.BGF b/CONTENT/RP/VIDEO/PM1L.BGF new file mode 100644 index 0000000..9206660 Binary files /dev/null and b/CONTENT/RP/VIDEO/PM1L.BGF differ diff --git a/CONTENT/RP/VIDEO/PNAME1.BGF b/CONTENT/RP/VIDEO/PNAME1.BGF new file mode 100644 index 0000000..710d6c9 Binary files /dev/null and b/CONTENT/RP/VIDEO/PNAME1.BGF differ diff --git a/CONTENT/RP/VIDEO/PNAME2.BGF b/CONTENT/RP/VIDEO/PNAME2.BGF new file mode 100644 index 0000000..8228574 Binary files /dev/null and b/CONTENT/RP/VIDEO/PNAME2.BGF differ diff --git a/CONTENT/RP/VIDEO/PNAME3.BGF b/CONTENT/RP/VIDEO/PNAME3.BGF new file mode 100644 index 0000000..383812c Binary files /dev/null and b/CONTENT/RP/VIDEO/PNAME3.BGF differ diff --git a/CONTENT/RP/VIDEO/PNAME4.BGF b/CONTENT/RP/VIDEO/PNAME4.BGF new file mode 100644 index 0000000..71a15eb Binary files /dev/null and b/CONTENT/RP/VIDEO/PNAME4.BGF differ diff --git a/CONTENT/RP/VIDEO/PNAME5.BGF b/CONTENT/RP/VIDEO/PNAME5.BGF new file mode 100644 index 0000000..703888f Binary files /dev/null and b/CONTENT/RP/VIDEO/PNAME5.BGF differ diff --git a/CONTENT/RP/VIDEO/PNAME6.BGF b/CONTENT/RP/VIDEO/PNAME6.BGF new file mode 100644 index 0000000..21252d7 Binary files /dev/null and b/CONTENT/RP/VIDEO/PNAME6.BGF differ diff --git a/CONTENT/RP/VIDEO/PNAME7.BGF b/CONTENT/RP/VIDEO/PNAME7.BGF new file mode 100644 index 0000000..d2c7c3c Binary files /dev/null and b/CONTENT/RP/VIDEO/PNAME7.BGF differ diff --git a/CONTENT/RP/VIDEO/PNAME8.BGF b/CONTENT/RP/VIDEO/PNAME8.BGF new file mode 100644 index 0000000..fac4c61 Binary files /dev/null and b/CONTENT/RP/VIDEO/PNAME8.BGF differ diff --git a/CONTENT/RP/VIDEO/POA.SKL b/CONTENT/RP/VIDEO/POA.SKL new file mode 100644 index 0000000..4f17377 --- /dev/null +++ b/CONTENT/RP/VIDEO/POA.SKL @@ -0,0 +1,157 @@ +[LAB_ONLY] // this file has not been approved for release + +[DamageZones] // call MakeEntryList with 'dz_' +dz_vtv=0 + +[ROOT] +JointCount=2 +DZoneCount=1 +Object=poa.bgf +dzone=dz_vtv +Former Segment=segpo +tranx=0 +trany=0 +tranz=0 +pitch=0 +yaw=-0 +roll=0 +site=sitetaillight +joint=jointreng +joint=jointleng +site=sitefrontcenterport +site=sitebackcenterport +site=sitefrontleftport +site=sitefrontrightport +site=sitechute +site=siteeyepoint +site=siteheadlight +site=siterearcenterport + +[sitetaillight] +parent=ROOT +tranx=0 +trany=0.64159 +tranz=1.80584 +pitch=0 +yaw=-0 +roll=0 + +[sitechute] +parent=ROOT +tranx=0 +trany=0.64159 +tranz=1.80584 +pitch=0 +yaw=-0 +roll=0 + +[siterearcenterport] +parent=ROOT +tranx=0 +trany=0.64159 +tranz=1.80584 +pitch=0 +yaw=-0 +roll=0 + +[jointreng] +parent=ROOT +Type=hingex +Object=prt.bgf +dzone=dz_vtv +Former Segment=segreng +tranx=2 +trany=0 +tranz=0 +pitch=0 +yaw=-0 +roll=0 +site=siterightengine + +[siterightengine] +parent=jointreng +tranx=0.47882 +trany=-1.27031 +tranz=-0.247696 +pitch=0 +yaw=0 +roll=-2.98024e-08 + +[jointleng] +parent=ROOT +Type=hingex +Object=plt.bgf +dzone=dz_vtv +Former Segment=segleng +tranx=-2 +trany=0 +tranz=0 +pitch=0 +yaw=-0 +roll=0 +site=siteleftengine + +[siteleftengine] +parent=jointleng +tranx=-0.47955 +trany=-1.27031 +tranz=-0.247697 +pitch=1.49012e-08 +yaw=-1.86265e-08 +roll=2.70083e-08 + +[sitefrontcenterport] +parent=ROOT +tranx=0 +trany=0.36179 +tranz=-3.83753 +pitch=0 +yaw=-0 +roll=0 + +[sitebackcenterport] +parent=ROOT +tranx=0 +trany=0.36179 +tranz=-3.83753 +pitch=0 +yaw=-0 +roll=0 + + +[sitefrontleftport] +parent=ROOT +tranx=-1.42755 +trany=-1.92501 +tranz=-3.85293 +pitch=0 +yaw=-0 +roll=0 + +[sitefrontrightport] +parent=ROOT +tranx=1.42367 +trany=-1.92501 +tranz=-3.85293 +pitch=0 +yaw=-0 +roll=0 + +[siteeyepoint] +parent=ROOT +tranx=0 +trany=-1.107651 +tranz=-0.44174 +pitch=0 +yaw=-0 +roll=0 + +[siteheadlight] +parent=ROOT +tranx=0 +trany=0.64159 +tranz=-1.50163 +pitch=0 +yaw=-0 +roll=0 + diff --git a/CONTENT/RP/VIDEO/POB.SKL b/CONTENT/RP/VIDEO/POB.SKL new file mode 100644 index 0000000..de12897 --- /dev/null +++ b/CONTENT/RP/VIDEO/POB.SKL @@ -0,0 +1,157 @@ +[LAB_ONLY] // this file has not been approved for release + +[DamageZones] // call MakeEntryList with 'dz_' +dz_vtv=0 + +[ROOT] +JointCount=2 +DZoneCount=1 +Object=pob.bgf +dzone=dz_vtv +Former Segment=segpo +tranx=0 +trany=0 +tranz=0 +pitch=0 +yaw=-0 +roll=0 +site=sitetaillight +joint=jointreng +joint=jointleng +site=sitefrontcenterport +site=sitebackcenterport +site=sitefrontleftport +site=sitefrontrightport +site=sitechute +site=siteeyepoint +site=siteheadlight +site=siterearcenterport + +[sitetaillight] +parent=ROOT +tranx=0 +trany=0.64159 +tranz=1.80584 +pitch=0 +yaw=-0 +roll=0 + +[sitechute] +parent=ROOT +tranx=0 +trany=0.64159 +tranz=1.80584 +pitch=0 +yaw=-0 +roll=0 + +[siterearcenterport] +parent=ROOT +tranx=0 +trany=0.64159 +tranz=1.80584 +pitch=0 +yaw=-0 +roll=0 + +[jointreng] +parent=ROOT +Type=hingex +Object=prt.bgf +dzone=dz_vtv +Former Segment=segreng +tranx=2 +trany=0 +tranz=0 +pitch=0 +yaw=-0 +roll=0 +site=siterightengine + +[siterightengine] +parent=jointreng +tranx=0.47882 +trany=-1.27031 +tranz=-0.247696 +pitch=0 +yaw=0 +roll=-2.98024e-08 + +[jointleng] +parent=ROOT +Type=hingex +Object=plt.bgf +dzone=dz_vtv +Former Segment=segleng +tranx=-2 +trany=0 +tranz=0 +pitch=0 +yaw=-0 +roll=0 +site=siteleftengine + +[siteleftengine] +parent=jointleng +tranx=-0.47955 +trany=-1.27031 +tranz=-0.247697 +pitch=1.49012e-08 +yaw=-1.86265e-08 +roll=2.70083e-08 + +[sitefrontcenterport] +parent=ROOT +tranx=0 +trany=0.36179 +tranz=-3.83753 +pitch=0 +yaw=-0 +roll=0 + +[sitebackcenterport] +parent=ROOT +tranx=0 +trany=0.36179 +tranz=-3.83753 +pitch=0 +yaw=-0 +roll=0 + + +[sitefrontleftport] +parent=ROOT +tranx=-1.42755 +trany=-1.92501 +tranz=-3.85293 +pitch=0 +yaw=-0 +roll=0 + +[sitefrontrightport] +parent=ROOT +tranx=1.42367 +trany=-1.92501 +tranz=-3.85293 +pitch=0 +yaw=-0 +roll=0 + +[siteeyepoint] +parent=ROOT +tranx=0 +trany=-1.107651 +tranz=-0.44174 +pitch=0 +yaw=-0 +roll=0 + +[siteheadlight] +parent=ROOT +tranx=0 +trany=0.64159 +tranz=-1.50163 +pitch=0 +yaw=-0 +roll=0 + diff --git a/CONTENT/RP/VIDEO/POC.SKL b/CONTENT/RP/VIDEO/POC.SKL new file mode 100644 index 0000000..9c2c6d5 --- /dev/null +++ b/CONTENT/RP/VIDEO/POC.SKL @@ -0,0 +1,157 @@ +[LAB_ONLY] // this file has not been approved for release + +[DamageZones] // call MakeEntryList with 'dz_' +dz_vtv=0 + +[ROOT] +JointCount=2 +DZoneCount=1 +Object=poc.bgf +dzone=dz_vtv +Former Segment=segpo +tranx=0 +trany=0 +tranz=0 +pitch=0 +yaw=-0 +roll=0 +site=sitetaillight +joint=jointreng +joint=jointleng +site=sitefrontcenterport +site=sitebackcenterport +site=sitefrontleftport +site=sitefrontrightport +site=sitechute +site=siteeyepoint +site=siteheadlight +site=siterearcenterport + +[sitetaillight] +parent=ROOT +tranx=0 +trany=0.64159 +tranz=1.80584 +pitch=0 +yaw=-0 +roll=0 + +[sitechute] +parent=ROOT +tranx=0 +trany=0.64159 +tranz=1.80584 +pitch=0 +yaw=-0 +roll=0 + +[siterearcenterport] +parent=ROOT +tranx=0 +trany=0.64159 +tranz=1.80584 +pitch=0 +yaw=-0 +roll=0 + +[jointreng] +parent=ROOT +Type=hingex +Object=prt.bgf +dzone=dz_vtv +Former Segment=segreng +tranx=2 +trany=0 +tranz=0 +pitch=0 +yaw=-0 +roll=0 +site=siterightengine + +[siterightengine] +parent=jointreng +tranx=0.47882 +trany=-1.27031 +tranz=-0.247696 +pitch=0 +yaw=0 +roll=-2.98024e-08 + +[jointleng] +parent=ROOT +Type=hingex +Object=plt.bgf +dzone=dz_vtv +Former Segment=segleng +tranx=-2 +trany=0 +tranz=0 +pitch=0 +yaw=-0 +roll=0 +site=siteleftengine + +[siteleftengine] +parent=jointleng +tranx=-0.47955 +trany=-1.27031 +tranz=-0.247697 +pitch=1.49012e-08 +yaw=-1.86265e-08 +roll=2.70083e-08 + +[sitefrontcenterport] +parent=ROOT +tranx=0 +trany=0.36179 +tranz=-3.83753 +pitch=0 +yaw=-0 +roll=0 + +[sitebackcenterport] +parent=ROOT +tranx=0 +trany=0.36179 +tranz=-3.83753 +pitch=0 +yaw=-0 +roll=0 + + +[sitefrontleftport] +parent=ROOT +tranx=-1.42755 +trany=-1.92501 +tranz=-3.85293 +pitch=0 +yaw=-0 +roll=0 + +[sitefrontrightport] +parent=ROOT +tranx=1.42367 +trany=-1.92501 +tranz=-3.85293 +pitch=0 +yaw=-0 +roll=0 + +[siteeyepoint] +parent=ROOT +tranx=0 +trany=-1.107651 +tranz=-0.44174 +pitch=0 +yaw=-0 +roll=0 + +[siteheadlight] +parent=ROOT +tranx=0 +trany=0.64159 +tranz=-1.50163 +pitch=0 +yaw=-0 +roll=0 + diff --git a/CONTENT/RP/VIDEO/PON.SKL b/CONTENT/RP/VIDEO/PON.SKL new file mode 100644 index 0000000..bd74694 --- /dev/null +++ b/CONTENT/RP/VIDEO/PON.SKL @@ -0,0 +1,157 @@ +[LAB_ONLY] // this file has not been approved for release + +[DamageZones] // call MakeEntryList with 'dz_' +dz_vtv=0 + +[ROOT] +JointCount=2 +DZoneCount=1 +Object=pon.bgf +dzone=dz_vtv +Former Segment=segpo +tranx=0 +trany=0 +tranz=0 +pitch=0 +yaw=-0 +roll=0 +site=sitetaillight +joint=jointreng +joint=jointleng +site=sitefrontcenterport +site=sitebackcenterport +site=sitefrontleftport +site=sitefrontrightport +site=sitechute +site=siteeyepoint +site=siteheadlight +site=siterearcenterport + +[sitetaillight] +parent=ROOT +tranx=0 +trany=0.64159 +tranz=1.80584 +pitch=0 +yaw=-0 +roll=0 + +[sitechute] +parent=ROOT +tranx=0 +trany=0.64159 +tranz=1.80584 +pitch=0 +yaw=-0 +roll=0 + +[siterearcenterport] +parent=ROOT +tranx=0 +trany=0.64159 +tranz=1.80584 +pitch=0 +yaw=-0 +roll=0 + +[jointreng] +parent=ROOT +Type=hingex +Object=prt.bgf +dzone=dz_vtv +Former Segment=segreng +tranx=2 +trany=0 +tranz=0 +pitch=0 +yaw=-0 +roll=0 +site=siterightengine + +[siterightengine] +parent=jointreng +tranx=0.47882 +trany=-1.27031 +tranz=-0.247696 +pitch=0 +yaw=0 +roll=-2.98024e-08 + +[jointleng] +parent=ROOT +Type=hingex +Object=plt.bgf +dzone=dz_vtv +Former Segment=segleng +tranx=-2 +trany=0 +tranz=0 +pitch=0 +yaw=-0 +roll=0 +site=siteleftengine + +[siteleftengine] +parent=jointleng +tranx=-0.47955 +trany=-1.27031 +tranz=-0.247697 +pitch=1.49012e-08 +yaw=-1.86265e-08 +roll=2.70083e-08 + +[sitefrontcenterport] +parent=ROOT +tranx=0 +trany=0.36179 +tranz=-3.83753 +pitch=0 +yaw=-0 +roll=0 + +[sitebackcenterport] +parent=ROOT +tranx=0 +trany=0.36179 +tranz=-3.83753 +pitch=0 +yaw=-0 +roll=0 + + +[sitefrontleftport] +parent=ROOT +tranx=-1.42755 +trany=-1.92501 +tranz=-3.85293 +pitch=0 +yaw=-0 +roll=0 + +[sitefrontrightport] +parent=ROOT +tranx=1.42367 +trany=-1.92501 +tranz=-3.85293 +pitch=0 +yaw=-0 +roll=0 + +[siteeyepoint] +parent=ROOT +tranx=0 +trany=-1.107651 +tranz=-0.44174 +pitch=0 +yaw=-0 +roll=0 + +[siteheadlight] +parent=ROOT +tranx=0 +trany=0.64159 +tranz=-1.50163 +pitch=0 +yaw=-0 +roll=0 + diff --git a/CONTENT/RP/VIDEO/POS.SKL b/CONTENT/RP/VIDEO/POS.SKL new file mode 100644 index 0000000..a26c465 --- /dev/null +++ b/CONTENT/RP/VIDEO/POS.SKL @@ -0,0 +1,157 @@ +[LAB_ONLY] // this file has not been approved for release + +[DamageZones] // call MakeEntryList with 'dz_' +dz_vtv=0 + +[ROOT] +JointCount=2 +DZoneCount=1 +Object=pos.bgf +dzone=dz_vtv +Former Segment=segpo +tranx=0 +trany=0 +tranz=0 +pitch=0 +yaw=-0 +roll=0 +site=sitetaillight +joint=jointreng +joint=jointleng +site=sitefrontcenterport +site=sitebackcenterport +site=sitefrontleftport +site=sitefrontrightport +site=sitechute +site=siteeyepoint +site=siteheadlight +site=siterearcenterport + +[sitetaillight] +parent=ROOT +tranx=0 +trany=0.64159 +tranz=1.80584 +pitch=0 +yaw=-0 +roll=0 + +[sitechute] +parent=ROOT +tranx=0 +trany=0.64159 +tranz=1.80584 +pitch=0 +yaw=-0 +roll=0 + +[siterearcenterport] +parent=ROOT +tranx=0 +trany=0.64159 +tranz=1.80584 +pitch=0 +yaw=-0 +roll=0 + +[jointreng] +parent=ROOT +Type=hingex +Object=prt.bgf +dzone=dz_vtv +Former Segment=segreng +tranx=2 +trany=0 +tranz=0 +pitch=0 +yaw=-0 +roll=0 +site=siterightengine + +[siterightengine] +parent=jointreng +tranx=0.47882 +trany=-1.27031 +tranz=-0.247696 +pitch=0 +yaw=0 +roll=-2.98024e-08 + +[jointleng] +parent=ROOT +Type=hingex +Object=plt.bgf +dzone=dz_vtv +Former Segment=segleng +tranx=-2 +trany=0 +tranz=0 +pitch=0 +yaw=-0 +roll=0 +site=siteleftengine + +[siteleftengine] +parent=jointleng +tranx=-0.47955 +trany=-1.27031 +tranz=-0.247697 +pitch=1.49012e-08 +yaw=-1.86265e-08 +roll=2.70083e-08 + +[sitefrontcenterport] +parent=ROOT +tranx=0 +trany=0.36179 +tranz=-3.83753 +pitch=0 +yaw=-0 +roll=0 + +[sitebackcenterport] +parent=ROOT +tranx=0 +trany=0.36179 +tranz=-3.83753 +pitch=0 +yaw=-0 +roll=0 + + +[sitefrontleftport] +parent=ROOT +tranx=-1.42755 +trany=-1.92501 +tranz=-3.85293 +pitch=0 +yaw=-0 +roll=0 + +[sitefrontrightport] +parent=ROOT +tranx=1.42367 +trany=-1.92501 +tranz=-3.85293 +pitch=0 +yaw=-0 +roll=0 + +[siteeyepoint] +parent=ROOT +tranx=0 +trany=-1.107651 +tranz=-0.44174 +pitch=0 +yaw=-0 +roll=0 + +[siteheadlight] +parent=ROOT +tranx=0 +trany=0.64159 +tranz=-1.50163 +pitch=0 +yaw=-0 +roll=0 + diff --git a/CONTENT/RP/VIDEO/POT.SKL b/CONTENT/RP/VIDEO/POT.SKL new file mode 100644 index 0000000..ca6ac22 --- /dev/null +++ b/CONTENT/RP/VIDEO/POT.SKL @@ -0,0 +1,157 @@ +[LAB_ONLY] // this file has not been approved for release + +[DamageZones] // call MakeEntryList with 'dz_' +dz_vtv=0 + +[ROOT] +JointCount=2 +DZoneCount=1 +Object=pot.bgf +dzone=dz_vtv +Former Segment=segpo +tranx=0 +trany=0 +tranz=0 +pitch=0 +yaw=-0 +roll=0 +site=sitetaillight +joint=jointreng +joint=jointleng +site=sitefrontcenterport +site=sitebackcenterport +site=sitefrontleftport +site=sitefrontrightport +site=sitechute +site=siteeyepoint +site=siteheadlight +site=siterearcenterport + +[sitetaillight] +parent=ROOT +tranx=0 +trany=0.64159 +tranz=1.80584 +pitch=0 +yaw=-0 +roll=0 + +[sitechute] +parent=ROOT +tranx=0 +trany=0.64159 +tranz=1.80584 +pitch=0 +yaw=-0 +roll=0 + +[siterearcenterport] +parent=ROOT +tranx=0 +trany=0.64159 +tranz=1.80584 +pitch=0 +yaw=-0 +roll=0 + +[jointreng] +parent=ROOT +Type=hingex +Object=prt.bgf +dzone=dz_vtv +Former Segment=segreng +tranx=2 +trany=0 +tranz=0 +pitch=0 +yaw=-0 +roll=0 +site=siterightengine + +[siterightengine] +parent=jointreng +tranx=0.47882 +trany=-1.27031 +tranz=-0.247696 +pitch=0 +yaw=0 +roll=-2.98024e-08 + +[jointleng] +parent=ROOT +Type=hingex +Object=plt.bgf +dzone=dz_vtv +Former Segment=segleng +tranx=-2 +trany=0 +tranz=0 +pitch=0 +yaw=-0 +roll=0 +site=siteleftengine + +[siteleftengine] +parent=jointleng +tranx=-0.47955 +trany=-1.27031 +tranz=-0.247697 +pitch=1.49012e-08 +yaw=-1.86265e-08 +roll=2.70083e-08 + +[sitefrontcenterport] +parent=ROOT +tranx=0 +trany=0.36179 +tranz=-3.83753 +pitch=0 +yaw=-0 +roll=0 + +[sitebackcenterport] +parent=ROOT +tranx=0 +trany=0.36179 +tranz=-3.83753 +pitch=0 +yaw=-0 +roll=0 + + +[sitefrontleftport] +parent=ROOT +tranx=-1.42755 +trany=-1.92501 +tranz=-3.85293 +pitch=0 +yaw=-0 +roll=0 + +[sitefrontrightport] +parent=ROOT +tranx=1.42367 +trany=-1.92501 +tranz=-3.85293 +pitch=0 +yaw=-0 +roll=0 + +[siteeyepoint] +parent=ROOT +tranx=0 +trany=-1.107651 +tranz=-0.44174 +pitch=0 +yaw=-0 +roll=0 + +[siteheadlight] +parent=ROOT +tranx=0 +trany=0.64159 +tranz=-1.50163 +pitch=0 +yaw=-0 +roll=0 + diff --git a/CONTENT/RP/VIDEO/RF1L.BGF b/CONTENT/RP/VIDEO/RF1L.BGF new file mode 100644 index 0000000..0a21be0 Binary files /dev/null and b/CONTENT/RP/VIDEO/RF1L.BGF differ diff --git a/CONTENT/RP/VIDEO/RIVET.BGF b/CONTENT/RP/VIDEO/RIVET.BGF new file mode 100644 index 0000000..e59516f Binary files /dev/null and b/CONTENT/RP/VIDEO/RIVET.BGF differ diff --git a/CONTENT/RP/VIDEO/RL1L.BGF b/CONTENT/RP/VIDEO/RL1L.BGF new file mode 100644 index 0000000..050772e Binary files /dev/null and b/CONTENT/RP/VIDEO/RL1L.BGF differ diff --git a/CONTENT/RP/VIDEO/RL2L.BGF b/CONTENT/RP/VIDEO/RL2L.BGF new file mode 100644 index 0000000..282569b Binary files /dev/null and b/CONTENT/RP/VIDEO/RL2L.BGF differ diff --git a/CONTENT/RP/VIDEO/RL3L.BGF b/CONTENT/RP/VIDEO/RL3L.BGF new file mode 100644 index 0000000..e97790d Binary files /dev/null and b/CONTENT/RP/VIDEO/RL3L.BGF differ diff --git a/CONTENT/RP/VIDEO/RP0.BGF b/CONTENT/RP/VIDEO/RP0.BGF new file mode 100644 index 0000000..c932050 Binary files /dev/null and b/CONTENT/RP/VIDEO/RP0.BGF differ diff --git a/CONTENT/RP/VIDEO/RP1L.BGF b/CONTENT/RP/VIDEO/RP1L.BGF new file mode 100644 index 0000000..0cdfab9 Binary files /dev/null and b/CONTENT/RP/VIDEO/RP1L.BGF differ diff --git a/CONTENT/RP/VIDEO/RP2L.BGF b/CONTENT/RP/VIDEO/RP2L.BGF new file mode 100644 index 0000000..2d41864 Binary files /dev/null and b/CONTENT/RP/VIDEO/RP2L.BGF differ diff --git a/CONTENT/RP/VIDEO/RP3L.BGF b/CONTENT/RP/VIDEO/RP3L.BGF new file mode 100644 index 0000000..28d352a Binary files /dev/null and b/CONTENT/RP/VIDEO/RP3L.BGF differ diff --git a/CONTENT/RP/VIDEO/RPFX.BMF b/CONTENT/RP/VIDEO/RPFX.BMF new file mode 100644 index 0000000..304c1ec Binary files /dev/null and b/CONTENT/RP/VIDEO/RPFX.BMF differ diff --git a/CONTENT/RP/VIDEO/SAA.BGF b/CONTENT/RP/VIDEO/SAA.BGF new file mode 100644 index 0000000..b35325d Binary files /dev/null and b/CONTENT/RP/VIDEO/SAA.BGF differ diff --git a/CONTENT/RP/VIDEO/SAA.SKL b/CONTENT/RP/VIDEO/SAA.SKL new file mode 100644 index 0000000..d8bc206 --- /dev/null +++ b/CONTENT/RP/VIDEO/SAA.SKL @@ -0,0 +1,204 @@ +[LAB_ONLY] // this file has not been approved for release + +[DamageZones] // call MakeEntryList with 'dz_' +dz_vtv=0 + +[ROOT] +JointCount=2 +DZoneCount=1 +Object=saa.bgf +dzone=dz_vtv +Former Segment=segsa +tranx=0 +trany=0 +tranz=0 +pitch=0 +yaw=-0 +roll=0 +site=sitebackrightport +joint=jointreng +joint=jointleng +site=sitefrontleftport +site=sitefrontrightport +site=siteeyepoint +site=sitetaillight +site=siteheadlight +site=sitebackleftport +site=sitechute +site=sitebooster +site=sitebackcenterport +site=sitemineport +site=sitemine1port +site=sitemine2port +site=sitefrontcenterport + +[sitebackrightport] +parent=ROOT +tranx=1.11482 +trany=-0.713251 +tranz=0.245738 +pitch=0 +yaw=3.14159 +roll=0 + +[jointreng] +parent=ROOT +Type=hingex +dzone=dz_vtv +Former Segment=segreng +tranx=1.4 +trany=0.351615 +tranz=-0.552573 +pitch=0 +yaw=-0 +roll=3.01991e-07 +site=siterightengine + +[siterightengine] +parent=jointreng +tranx=0.50275 +trany=-0.259308 +tranz=0 +pitch=2.10462e-15 +yaw=-1.08553e-15 +roll=-3.96716e-09 + +[jointleng] +parent=ROOT +Type=hingex +dzone=dz_vtv +Former Segment=segleng +tranx=-1.4 +trany=0.351615 +tranz=-0.552573 +pitch=0 +yaw=-0 +roll=0 +site=siteleftengine + +[siteleftengine] +parent=jointleng +tranx=-0.49716 +trany=-0.259311 +tranz=0 +pitch=-2.88657e-15 +yaw=1.69407e-20 +roll=0 + +[sitefrontleftport] +parent=ROOT +tranx=-1.11482 +trany=-0.713251 +tranz=-1.44016 +pitch=0 +yaw=-0 +roll=0 + +[sitefrontrightport] +parent=ROOT +tranx=1.11482 +trany=-0.713251 +tranz=-1.44016 +pitch=0 +yaw=-0 +roll=0 + +[siteeyepoint] +parent=ROOT +tranx=0 +trany=0.4 +tranz=-2.2 +pitch=0 +yaw=-0 +roll=0 + +[sitetaillight] +parent=ROOT +tranx=0 +trany=0.46825 +tranz=2.76815 +pitch=0 +yaw=-0 +roll=0 + +[siteheadlight] +parent=ROOT +tranx=0 +trany=1.10068 +tranz=-1.69406 +pitch=0 +yaw=-0 +roll=0 + +[sitebackleftport] +parent=ROOT +tranx=-1.11482 +trany=-0.713251 +tranz=0.245738 +pitch=0 +yaw=3.14159 +roll=0 + +[sitechute] +parent=ROOT +tranx=0 +trany=-0.00164899 +tranz=2.37358 +pitch=0 +yaw=-0 +roll=0 + +[sitebooster] +parent=ROOT +tranx=0 +trany=0.093441 +tranz=2.49472 +pitch=0 +yaw=-0 +roll=0 + +[sitebackcenterport] +parent=ROOT +tranx=0 +trany=-0.948204 +tranz=0.449369 +pitch=0 +yaw=3.14159 +roll=0 + +[sitemineport] +parent=ROOT +tranx=0 +trany=-0.948204 +tranz=0.449369 +pitch=0 +yaw=-0 +roll=0 + +[sitemine1port] +parent=ROOT +tranx=2 +trany=-0.948204 +tranz=0.449369 +pitch=0 +yaw=-0 +roll=0 + +[sitemine2port] +parent=ROOT +tranx=-2 +trany=-0.948204 +tranz=0.449369 +pitch=0 +yaw=-0 +roll=0 + +[sitefrontcenterport] +parent=ROOT +tranx=0 +trany=1 +tranz=-1.98917 +pitch=0 +yaw=-0 +roll=0 + diff --git a/CONTENT/RP/VIDEO/SAB.BGF b/CONTENT/RP/VIDEO/SAB.BGF new file mode 100644 index 0000000..c64d20f Binary files /dev/null and b/CONTENT/RP/VIDEO/SAB.BGF differ diff --git a/CONTENT/RP/VIDEO/SAB.SKL b/CONTENT/RP/VIDEO/SAB.SKL new file mode 100644 index 0000000..b107d5a --- /dev/null +++ b/CONTENT/RP/VIDEO/SAB.SKL @@ -0,0 +1,204 @@ +[LAB_ONLY] // this file has not been approved for release + +[DamageZones] // call MakeEntryList with 'dz_' +dz_vtv=0 + +[ROOT] +JointCount=2 +DZoneCount=1 +Object=sab.bgf +dzone=dz_vtv +Former Segment=segsa +tranx=0 +trany=0 +tranz=0 +pitch=0 +yaw=-0 +roll=0 +site=sitebackrightport +joint=jointreng +joint=jointleng +site=sitefrontleftport +site=sitefrontrightport +site=siteeyepoint +site=sitetaillight +site=siteheadlight +site=sitebackleftport +site=sitechute +site=sitebooster +site=sitebackcenterport +site=sitemineport +site=sitemine1port +site=sitemine2port +site=sitefrontcenterport + +[sitebackrightport] +parent=ROOT +tranx=1.11482 +trany=-0.713251 +tranz=0.245738 +pitch=0 +yaw=3.14159 +roll=0 + +[jointreng] +parent=ROOT +Type=hingex +dzone=dz_vtv +Former Segment=segreng +tranx=1.4 +trany=0.351615 +tranz=-0.552573 +pitch=0 +yaw=-0 +roll=3.01991e-07 +site=siterightengine + +[siterightengine] +parent=jointreng +tranx=0.50275 +trany=-0.259308 +tranz=0 +pitch=2.10462e-15 +yaw=-1.08553e-15 +roll=-3.96716e-09 + +[jointleng] +parent=ROOT +Type=hingex +dzone=dz_vtv +Former Segment=segleng +tranx=-1.4 +trany=0.351615 +tranz=-0.552573 +pitch=0 +yaw=-0 +roll=0 +site=siteleftengine + +[siteleftengine] +parent=jointleng +tranx=-0.49716 +trany=-0.259311 +tranz=0 +pitch=-2.88657e-15 +yaw=1.69407e-20 +roll=0 + +[sitefrontleftport] +parent=ROOT +tranx=-1.11482 +trany=-0.713251 +tranz=-1.44016 +pitch=0 +yaw=-0 +roll=0 + +[sitefrontrightport] +parent=ROOT +tranx=1.11482 +trany=-0.713251 +tranz=-1.44016 +pitch=0 +yaw=-0 +roll=0 + +[siteeyepoint] +parent=ROOT +tranx=0 +trany=0.4 +tranz=-2.2 +pitch=0 +yaw=-0 +roll=0 + +[sitetaillight] +parent=ROOT +tranx=0 +trany=0.46825 +tranz=2.76815 +pitch=0 +yaw=-0 +roll=0 + +[siteheadlight] +parent=ROOT +tranx=0 +trany=1.10068 +tranz=-1.69406 +pitch=0 +yaw=-0 +roll=0 + +[sitebackleftport] +parent=ROOT +tranx=-1.11482 +trany=-0.713251 +tranz=0.245738 +pitch=0 +yaw=3.14159 +roll=0 + +[sitechute] +parent=ROOT +tranx=0 +trany=-0.00164899 +tranz=2.37358 +pitch=0 +yaw=-0 +roll=0 + +[sitebooster] +parent=ROOT +tranx=0 +trany=0.093441 +tranz=2.49472 +pitch=0 +yaw=-0 +roll=0 + +[sitebackcenterport] +parent=ROOT +tranx=0 +trany=-0.948204 +tranz=0.449369 +pitch=0 +yaw=3.14159 +roll=0 + +[sitemineport] +parent=ROOT +tranx=0 +trany=-0.948204 +tranz=0.449369 +pitch=0 +yaw=-0 +roll=0 + +[sitemine1port] +parent=ROOT +tranx=2 +trany=-0.948204 +tranz=0.449369 +pitch=0 +yaw=-0 +roll=0 + +[sitemine2port] +parent=ROOT +tranx=-2 +trany=-0.948204 +tranz=0.449369 +pitch=0 +yaw=-0 +roll=0 + +[sitefrontcenterport] +parent=ROOT +tranx=0 +trany=1 +tranz=-1.98917 +pitch=0 +yaw=-0 +roll=0 + diff --git a/CONTENT/RP/VIDEO/SAC.BGF b/CONTENT/RP/VIDEO/SAC.BGF new file mode 100644 index 0000000..b74b89e Binary files /dev/null and b/CONTENT/RP/VIDEO/SAC.BGF differ diff --git a/CONTENT/RP/VIDEO/SAC.SKL b/CONTENT/RP/VIDEO/SAC.SKL new file mode 100644 index 0000000..c1d4c70 --- /dev/null +++ b/CONTENT/RP/VIDEO/SAC.SKL @@ -0,0 +1,204 @@ +[LAB_ONLY] // this file has not been approved for release + +[DamageZones] // call MakeEntryList with 'dz_' +dz_vtv=0 + +[ROOT] +JointCount=2 +DZoneCount=1 +Object=sac.bgf +dzone=dz_vtv +Former Segment=segsa +tranx=0 +trany=0 +tranz=0 +pitch=0 +yaw=-0 +roll=0 +site=sitebackrightport +joint=jointreng +joint=jointleng +site=sitefrontleftport +site=sitefrontrightport +site=siteeyepoint +site=sitetaillight +site=siteheadlight +site=sitebackleftport +site=sitechute +site=sitebooster +site=sitebackcenterport +site=sitemineport +site=sitemine1port +site=sitemine2port +site=sitefrontcenterport + +[sitebackrightport] +parent=ROOT +tranx=1.11482 +trany=-0.713251 +tranz=0.245738 +pitch=0 +yaw=3.14159 +roll=0 + +[jointreng] +parent=ROOT +Type=hingex +dzone=dz_vtv +Former Segment=segreng +tranx=1.4 +trany=0.351615 +tranz=-0.552573 +pitch=0 +yaw=-0 +roll=3.01991e-07 +site=siterightengine + +[siterightengine] +parent=jointreng +tranx=0.50275 +trany=-0.259308 +tranz=0 +pitch=2.10462e-15 +yaw=-1.08553e-15 +roll=-3.96716e-09 + +[jointleng] +parent=ROOT +Type=hingex +dzone=dz_vtv +Former Segment=segleng +tranx=-1.4 +trany=0.351615 +tranz=-0.552573 +pitch=0 +yaw=-0 +roll=0 +site=siteleftengine + +[siteleftengine] +parent=jointleng +tranx=-0.49716 +trany=-0.259311 +tranz=0 +pitch=-2.88657e-15 +yaw=1.69407e-20 +roll=0 + +[sitefrontleftport] +parent=ROOT +tranx=-1.11482 +trany=-0.713251 +tranz=-1.44016 +pitch=0 +yaw=-0 +roll=0 + +[sitefrontrightport] +parent=ROOT +tranx=1.11482 +trany=-0.713251 +tranz=-1.44016 +pitch=0 +yaw=-0 +roll=0 + +[siteeyepoint] +parent=ROOT +tranx=0 +trany=0.4 +tranz=-2.2 +pitch=0 +yaw=-0 +roll=0 + +[sitetaillight] +parent=ROOT +tranx=0 +trany=0.46825 +tranz=2.76815 +pitch=0 +yaw=-0 +roll=0 + +[siteheadlight] +parent=ROOT +tranx=0 +trany=1.10068 +tranz=-1.69406 +pitch=0 +yaw=-0 +roll=0 + +[sitebackleftport] +parent=ROOT +tranx=-1.11482 +trany=-0.713251 +tranz=0.245738 +pitch=0 +yaw=3.14159 +roll=0 + +[sitechute] +parent=ROOT +tranx=0 +trany=-0.00164899 +tranz=2.37358 +pitch=0 +yaw=-0 +roll=0 + +[sitebooster] +parent=ROOT +tranx=0 +trany=0.093441 +tranz=2.49472 +pitch=0 +yaw=-0 +roll=0 + +[sitebackcenterport] +parent=ROOT +tranx=0 +trany=-0.948204 +tranz=0.449369 +pitch=0 +yaw=3.14159 +roll=0 + +[sitemineport] +parent=ROOT +tranx=0 +trany=-0.948204 +tranz=0.449369 +pitch=0 +yaw=-0 +roll=0 + +[sitemine1port] +parent=ROOT +tranx=2 +trany=-0.948204 +tranz=0.449369 +pitch=0 +yaw=-0 +roll=0 + +[sitemine2port] +parent=ROOT +tranx=-2 +trany=-0.948204 +tranz=0.449369 +pitch=0 +yaw=-0 +roll=0 + +[sitefrontcenterport] +parent=ROOT +tranx=0 +trany=1 +tranz=-1.98917 +pitch=0 +yaw=-0 +roll=0 + diff --git a/CONTENT/RP/VIDEO/SAN.SKL b/CONTENT/RP/VIDEO/SAN.SKL new file mode 100644 index 0000000..b5b8661 --- /dev/null +++ b/CONTENT/RP/VIDEO/SAN.SKL @@ -0,0 +1,206 @@ +[LAB_ONLY] // this file has not been approved for release + +[DamageZones] // call MakeEntryList with 'dz_' +dz_vtv=0 + +[ROOT] +JointCount=2 +DZoneCount=1 +Object=san.bgf +dzone=dz_vtv +Former Segment=segsa +tranx=0 +trany=0 +tranz=0 +pitch=0 +yaw=-0 +roll=0 +site=sitebackrightport +joint=jointreng +joint=jointleng +site=sitefrontleftport +site=sitefrontrightport +site=siteeyepoint +site=sitetaillight +site=siteheadlight +site=sitebackleftport +site=sitechute +site=sitebooster +site=sitebackcenterport +site=sitemineport +site=sitemine1port +site=sitemine2port +site=sitefrontcenterport + +[sitebackrightport] +parent=ROOT +tranx=1.11482 +trany=-0.713251 +tranz=0.245738 +pitch=0 +yaw=3.14159 +roll=0 + +[jointreng] +parent=ROOT +Type=hingex +Object=vrn.bgf +dzone=dz_vtv +Former Segment=segreng +tranx=1.4 +trany=0.351615 +tranz=-0.552573 +pitch=0 +yaw=-0 +roll=3.01991e-07 +site=siterightengine + +[siterightengine] +parent=jointreng +tranx=0.50275 +trany=-0.259308 +tranz=0 +pitch=2.10462e-15 +yaw=-1.08553e-15 +roll=-3.96716e-09 + +[jointleng] +parent=ROOT +Type=hingex +Object=vln.bgf +dzone=dz_vtv +Former Segment=segleng +tranx=-1.4 +trany=0.351615 +tranz=-0.552573 +pitch=0 +yaw=-0 +roll=0 +site=siteleftengine + +[siteleftengine] +parent=jointleng +tranx=-0.49716 +trany=-0.259311 +tranz=0 +pitch=-2.88657e-15 +yaw=1.69407e-20 +roll=0 + +[sitefrontleftport] +parent=ROOT +tranx=-1.11482 +trany=-0.713251 +tranz=-1.44016 +pitch=0 +yaw=-0 +roll=0 + +[sitefrontrightport] +parent=ROOT +tranx=1.11482 +trany=-0.713251 +tranz=-1.44016 +pitch=0 +yaw=-0 +roll=0 + +[siteeyepoint] +parent=ROOT +tranx=0 +trany=0.4 +tranz=-2.2 +pitch=0 +yaw=-0 +roll=0 + +[sitetaillight] +parent=ROOT +tranx=0 +trany=0.46825 +tranz=2.76815 +pitch=0 +yaw=-0 +roll=0 + +[siteheadlight] +parent=ROOT +tranx=0 +trany=1.10068 +tranz=-1.69406 +pitch=0 +yaw=-0 +roll=0 + +[sitebackleftport] +parent=ROOT +tranx=-1.11482 +trany=-0.713251 +tranz=0.245738 +pitch=0 +yaw=3.14159 +roll=0 + +[sitechute] +parent=ROOT +tranx=0 +trany=-0.00164899 +tranz=2.37358 +pitch=0 +yaw=-0 +roll=0 + +[sitebooster] +parent=ROOT +tranx=0 +trany=0.093441 +tranz=2.49472 +pitch=0 +yaw=-0 +roll=0 + +[sitebackcenterport] +parent=ROOT +tranx=0 +trany=-0.948204 +tranz=0.449369 +pitch=0 +yaw=3.14159 +roll=0 + +[sitemineport] +parent=ROOT +tranx=0 +trany=-0.948204 +tranz=0.449369 +pitch=0 +yaw=-0 +roll=0 + +[sitemine1port] +parent=ROOT +tranx=2 +trany=-0.948204 +tranz=0.449369 +pitch=0 +yaw=-0 +roll=0 + +[sitemine2port] +parent=ROOT +tranx=-2 +trany=-0.948204 +tranz=0.449369 +pitch=0 +yaw=-0 +roll=0 + +[sitefrontcenterport] +parent=ROOT +tranx=0 +trany=1 +tranz=-1.98917 +pitch=0 +yaw=-0 +roll=0 + diff --git a/CONTENT/RP/VIDEO/SAS.SKL b/CONTENT/RP/VIDEO/SAS.SKL new file mode 100644 index 0000000..533366d --- /dev/null +++ b/CONTENT/RP/VIDEO/SAS.SKL @@ -0,0 +1,206 @@ +[LAB_ONLY] // this file has not been approved for release + +[DamageZones] // call MakeEntryList with 'dz_' +dz_vtv=0 + +[ROOT] +JointCount=2 +DZoneCount=1 +Object=sas.bgf +dzone=dz_vtv +Former Segment=segsa +tranx=0 +trany=0 +tranz=0 +pitch=0 +yaw=-0 +roll=0 +site=sitebackrightport +joint=jointreng +joint=jointleng +site=sitefrontleftport +site=sitefrontrightport +site=siteeyepoint +site=sitetaillight +site=siteheadlight +site=sitebackleftport +site=sitechute +site=sitebooster +site=sitebackcenterport +site=sitemineport +site=sitemine1port +site=sitemine2port +site=sitefrontcenterport + +[sitebackrightport] +parent=ROOT +tranx=1.11482 +trany=-0.713251 +tranz=0.245738 +pitch=0 +yaw=3.14159 +roll=0 + +[jointreng] +parent=ROOT +Type=hingex +Object=vrt.bgf +dzone=dz_vtv +Former Segment=segreng +tranx=1.4 +trany=0.351615 +tranz=-0.552573 +pitch=0 +yaw=-0 +roll=3.01991e-07 +site=siterightengine + +[siterightengine] +parent=jointreng +tranx=0.50275 +trany=-0.259308 +tranz=0 +pitch=2.10462e-15 +yaw=-1.08553e-15 +roll=-3.96716e-09 + +[jointleng] +parent=ROOT +Type=hingex +Object=vlt.bgf +dzone=dz_vtv +Former Segment=segleng +tranx=-1.4 +trany=0.351615 +tranz=-0.552573 +pitch=0 +yaw=-0 +roll=0 +site=siteleftengine + +[siteleftengine] +parent=jointleng +tranx=-0.49716 +trany=-0.259311 +tranz=0 +pitch=-2.88657e-15 +yaw=1.69407e-20 +roll=0 + +[sitefrontleftport] +parent=ROOT +tranx=-1.11482 +trany=-0.713251 +tranz=-1.44016 +pitch=0 +yaw=-0 +roll=0 + +[sitefrontrightport] +parent=ROOT +tranx=1.11482 +trany=-0.713251 +tranz=-1.44016 +pitch=0 +yaw=-0 +roll=0 + +[siteeyepoint] +parent=ROOT +tranx=0 +trany=0.4 +tranz=-2.2 +pitch=0 +yaw=-0 +roll=0 + +[sitetaillight] +parent=ROOT +tranx=0 +trany=0.46825 +tranz=2.76815 +pitch=0 +yaw=-0 +roll=0 + +[siteheadlight] +parent=ROOT +tranx=0 +trany=1.10068 +tranz=-1.69406 +pitch=0 +yaw=-0 +roll=0 + +[sitebackleftport] +parent=ROOT +tranx=-1.11482 +trany=-0.713251 +tranz=0.245738 +pitch=0 +yaw=3.14159 +roll=0 + +[sitechute] +parent=ROOT +tranx=0 +trany=-0.00164899 +tranz=2.37358 +pitch=0 +yaw=-0 +roll=0 + +[sitebooster] +parent=ROOT +tranx=0 +trany=0.093441 +tranz=2.49472 +pitch=0 +yaw=-0 +roll=0 + +[sitebackcenterport] +parent=ROOT +tranx=0 +trany=-0.948204 +tranz=0.449369 +pitch=0 +yaw=3.14159 +roll=0 + +[sitemineport] +parent=ROOT +tranx=0 +trany=-0.948204 +tranz=0.449369 +pitch=0 +yaw=-0 +roll=0 + +[sitemine1port] +parent=ROOT +tranx=2 +trany=-0.948204 +tranz=0.449369 +pitch=0 +yaw=-0 +roll=0 + +[sitemine2port] +parent=ROOT +tranx=-2 +trany=-0.948204 +tranz=0.449369 +pitch=0 +yaw=-0 +roll=0 + +[sitefrontcenterport] +parent=ROOT +tranx=0 +trany=1 +tranz=-1.98917 +pitch=0 +yaw=-0 +roll=0 + diff --git a/CONTENT/RP/VIDEO/SAT.SKL b/CONTENT/RP/VIDEO/SAT.SKL new file mode 100644 index 0000000..19e97bd --- /dev/null +++ b/CONTENT/RP/VIDEO/SAT.SKL @@ -0,0 +1,206 @@ +[LAB_ONLY] // this file has not been approved for release + +[DamageZones] // call MakeEntryList with 'dz_' +dz_vtv=0 + +[ROOT] +JointCount=2 +DZoneCount=1 +Object=sat.bgf +dzone=dz_vtv +Former Segment=segsa +tranx=0 +trany=0 +tranz=0 +pitch=0 +yaw=-0 +roll=0 +site=sitebackrightport +joint=jointreng +joint=jointleng +site=sitefrontleftport +site=sitefrontrightport +site=siteeyepoint +site=sitetaillight +site=siteheadlight +site=sitebackleftport +site=sitechute +site=sitebooster +site=sitebackcenterport +site=sitemineport +site=sitemine1port +site=sitemine2port +site=sitefrontcenterport + +[sitebackrightport] +parent=ROOT +tranx=1.11482 +trany=-0.713251 +tranz=0.245738 +pitch=0 +yaw=3.14159 +roll=0 + +[jointreng] +parent=ROOT +Type=hingex +Object=vrt.bgf +dzone=dz_vtv +Former Segment=segreng +tranx=1.4 +trany=0.351615 +tranz=-0.552573 +pitch=0 +yaw=-0 +roll=3.01991e-07 +site=siterightengine + +[siterightengine] +parent=jointreng +tranx=0.50275 +trany=-0.259308 +tranz=0 +pitch=2.10462e-15 +yaw=-1.08553e-15 +roll=-3.96716e-09 + +[jointleng] +parent=ROOT +Type=hingex +Object=vlt.bgf +dzone=dz_vtv +Former Segment=segleng +tranx=-1.4 +trany=0.351615 +tranz=-0.552573 +pitch=0 +yaw=-0 +roll=0 +site=siteleftengine + +[siteleftengine] +parent=jointleng +tranx=-0.49716 +trany=-0.259311 +tranz=0 +pitch=-2.88657e-15 +yaw=1.69407e-20 +roll=0 + +[sitefrontleftport] +parent=ROOT +tranx=-1.11482 +trany=-0.713251 +tranz=-1.44016 +pitch=0 +yaw=-0 +roll=0 + +[sitefrontrightport] +parent=ROOT +tranx=1.11482 +trany=-0.713251 +tranz=-1.44016 +pitch=0 +yaw=-0 +roll=0 + +[siteeyepoint] +parent=ROOT +tranx=0 +trany=0.4 +tranz=-2.2 +pitch=0 +yaw=-0 +roll=0 + +[sitetaillight] +parent=ROOT +tranx=0 +trany=0.46825 +tranz=2.76815 +pitch=0 +yaw=-0 +roll=0 + +[siteheadlight] +parent=ROOT +tranx=0 +trany=1.10068 +tranz=-1.69406 +pitch=0 +yaw=-0 +roll=0 + +[sitebackleftport] +parent=ROOT +tranx=-1.11482 +trany=-0.713251 +tranz=0.245738 +pitch=0 +yaw=3.14159 +roll=0 + +[sitechute] +parent=ROOT +tranx=0 +trany=-0.00164899 +tranz=2.37358 +pitch=0 +yaw=-0 +roll=0 + +[sitebooster] +parent=ROOT +tranx=0 +trany=0.093441 +tranz=2.49472 +pitch=0 +yaw=-0 +roll=0 + +[sitebackcenterport] +parent=ROOT +tranx=0 +trany=-0.948204 +tranz=0.449369 +pitch=0 +yaw=3.14159 +roll=0 + +[sitemineport] +parent=ROOT +tranx=0 +trany=-0.948204 +tranz=0.449369 +pitch=0 +yaw=-0 +roll=0 + +[sitemine1port] +parent=ROOT +tranx=2 +trany=-0.948204 +tranz=0.449369 +pitch=0 +yaw=-0 +roll=0 + +[sitemine2port] +parent=ROOT +tranx=-2 +trany=-0.948204 +tranz=0.449369 +pitch=0 +yaw=-0 +roll=0 + +[sitefrontcenterport] +parent=ROOT +tranx=0 +trany=1 +tranz=-1.98917 +pitch=0 +yaw=-0 +roll=0 + diff --git a/CONTENT/RP/VIDEO/SC500L.BGF b/CONTENT/RP/VIDEO/SC500L.BGF new file mode 100644 index 0000000..cd320df Binary files /dev/null and b/CONTENT/RP/VIDEO/SC500L.BGF differ diff --git a/CONTENT/RP/VIDEO/SMOKE.PFX b/CONTENT/RP/VIDEO/SMOKE.PFX new file mode 100644 index 0000000..3b18343 --- /dev/null +++ b/CONTENT/RP/VIDEO/SMOKE.PFX @@ -0,0 +1,32 @@ +test:texture1 +666 8 1000.0 2.4 +0.0 0.0 0.0 0.9 +2.0 2.0 2.0 1.5 1.5 1.5 +5.0 4.5 3.6 1.3 -0.012 0.004 +2.0 9.0 1.4 0.4 0.4 0.4 +0.2 0.001 +1.90 0.90 0.60 1.50 0.10 0.05 0.05 0.20 +1.20 0.50 0.30 1.20 0.10 0.10 0.10 0.10 +0.30 -0.40 -0.60 -0.04 0.01 0.01 0.01 0.00 +0.00 -0.40 -0.30 -0.02 0.01 0.01 0.01 0.00 +1.0 2.0 +3.2 0.4 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one diff --git a/CONTENT/RP/VIDEO/SNAALE.BGF b/CONTENT/RP/VIDEO/SNAALE.BGF new file mode 100644 index 0000000..803909a Binary files /dev/null and b/CONTENT/RP/VIDEO/SNAALE.BGF differ diff --git a/CONTENT/RP/VIDEO/SNACRANE.BGF b/CONTENT/RP/VIDEO/SNACRANE.BGF new file mode 100644 index 0000000..2d081f7 Binary files /dev/null and b/CONTENT/RP/VIDEO/SNACRANE.BGF differ diff --git a/CONTENT/RP/VIDEO/SNADOS.BGF b/CONTENT/RP/VIDEO/SNADOS.BGF new file mode 100644 index 0000000..c4d7a51 Binary files /dev/null and b/CONTENT/RP/VIDEO/SNADOS.BGF differ diff --git a/CONTENT/RP/VIDEO/SNAENTER.BGF b/CONTENT/RP/VIDEO/SNAENTER.BGF new file mode 100644 index 0000000..1948b14 Binary files /dev/null and b/CONTENT/RP/VIDEO/SNAENTER.BGF differ diff --git a/CONTENT/RP/VIDEO/SNAEVAC.BGF b/CONTENT/RP/VIDEO/SNAEVAC.BGF new file mode 100644 index 0000000..4a66f19 Binary files /dev/null and b/CONTENT/RP/VIDEO/SNAEVAC.BGF differ diff --git a/CONTENT/RP/VIDEO/SNAHAZ.BGF b/CONTENT/RP/VIDEO/SNAHAZ.BGF new file mode 100644 index 0000000..f554c62 Binary files /dev/null and b/CONTENT/RP/VIDEO/SNAHAZ.BGF differ diff --git a/CONTENT/RP/VIDEO/SNAHEADM.BGF b/CONTENT/RP/VIDEO/SNAHEADM.BGF new file mode 100644 index 0000000..c9c77be Binary files /dev/null and b/CONTENT/RP/VIDEO/SNAHEADM.BGF differ diff --git a/CONTENT/RP/VIDEO/SNALIMIT.BGF b/CONTENT/RP/VIDEO/SNALIMIT.BGF new file mode 100644 index 0000000..cccac3f Binary files /dev/null and b/CONTENT/RP/VIDEO/SNALIMIT.BGF differ diff --git a/CONTENT/RP/VIDEO/SNALOXM.BGF b/CONTENT/RP/VIDEO/SNALOXM.BGF new file mode 100644 index 0000000..106cb2f Binary files /dev/null and b/CONTENT/RP/VIDEO/SNALOXM.BGF differ diff --git a/CONTENT/RP/VIDEO/SNAMFAC.BGF b/CONTENT/RP/VIDEO/SNAMFAC.BGF new file mode 100644 index 0000000..d719f07 Binary files /dev/null and b/CONTENT/RP/VIDEO/SNAMFAC.BGF differ diff --git a/CONTENT/RP/VIDEO/SNANORC.BGF b/CONTENT/RP/VIDEO/SNANORC.BGF new file mode 100644 index 0000000..159096a Binary files /dev/null and b/CONTENT/RP/VIDEO/SNANORC.BGF differ diff --git a/CONTENT/RP/VIDEO/SNARADS.BGF b/CONTENT/RP/VIDEO/SNARADS.BGF new file mode 100644 index 0000000..dfef989 Binary files /dev/null and b/CONTENT/RP/VIDEO/SNARADS.BGF differ diff --git a/CONTENT/RP/VIDEO/SNASPDS.BGF b/CONTENT/RP/VIDEO/SNASPDS.BGF new file mode 100644 index 0000000..25d02d0 Binary files /dev/null and b/CONTENT/RP/VIDEO/SNASPDS.BGF differ diff --git a/CONTENT/RP/VIDEO/SNATSPD.BGF b/CONTENT/RP/VIDEO/SNATSPD.BGF new file mode 100644 index 0000000..eff0a7d Binary files /dev/null and b/CONTENT/RP/VIDEO/SNATSPD.BGF differ diff --git a/CONTENT/RP/VIDEO/SNAWELC.BGF b/CONTENT/RP/VIDEO/SNAWELC.BGF new file mode 100644 index 0000000..72fcaae Binary files /dev/null and b/CONTENT/RP/VIDEO/SNAWELC.BGF differ diff --git a/CONTENT/RP/VIDEO/SNAWORK.BGF b/CONTENT/RP/VIDEO/SNAWORK.BGF new file mode 100644 index 0000000..2d7b7d6 Binary files /dev/null and b/CONTENT/RP/VIDEO/SNAWORK.BGF differ diff --git a/CONTENT/RP/VIDEO/SPARKS.PFX b/CONTENT/RP/VIDEO/SPARKS.PFX new file mode 100644 index 0000000..ba94f3f --- /dev/null +++ b/CONTENT/RP/VIDEO/SPARKS.PFX @@ -0,0 +1,28 @@ +test:texture1 +0f000666 50 1000.0 20.0 +0.0 0.0 0.0 0.3 +15.0 0.0 0.0 1.0 1.0 1.0 +6.0 0.5 3.6 0.7 -0.007 0.002 +0.0 -5.0 0.0 0.0 0.0 0.0 +0.00 0.000 +2.00 2.00 2.00 1.20 0.20 0.20 0.20 0.20 +2.00 2.00 2.00 1.00 0.20 0.20 0.10 0.10 +0.10 0.00 0.40 0.10 0.08 0.05 0.05 0.00 +0.15 0.05 0.45 -0.1 0.04 0.04 0.04 0.00 +1.0 1.0 +2.4 0.5 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv diff --git a/CONTENT/RP/VIDEO/SUA.BGF b/CONTENT/RP/VIDEO/SUA.BGF new file mode 100644 index 0000000..9cbba08 Binary files /dev/null and b/CONTENT/RP/VIDEO/SUA.BGF differ diff --git a/CONTENT/RP/VIDEO/SUA.SKL b/CONTENT/RP/VIDEO/SUA.SKL new file mode 100644 index 0000000..cd089f8 --- /dev/null +++ b/CONTENT/RP/VIDEO/SUA.SKL @@ -0,0 +1,114 @@ +[LAB_ONLY] // this file has not been approved for release + +[DamageZones] // call MakeEntryList with 'dz_' +dz_vtv=0 + +[ROOT] +JointCount=2 +DZoneCount=1 +Object=sua.bgf +dzone=dz_vtv +Former Segment=segsu +tranx=0 +trany=0 +tranz=0 +pitch=0 +yaw=-0 +roll=0 +joint=jointreng +joint=jointleng +site=siteeyepoint +site=sitetaillight +site=siteheadlight +site=sitechute +site=sitebooster + +[jointreng] +parent=ROOT +Type=hingex +dzone=dz_vtv +Former Segment=segreng +tranx=1.40695 +trany=0.253006 +tranz=-0.533967 +pitch=0 +yaw=-0 +roll=3.01991e-07 +site=siterightengine + +[siterightengine] +parent=jointreng +tranx=0.50576 +trany=-0.250656 +tranz=0 +pitch=-5.82066e-10 +yaw=-2.56113e-09 +roll=-3.37704e-08 + +[jointleng] +parent=ROOT +Type=hingex +dzone=dz_vtv +Former Segment=segleng +tranx=-1.39202 +trany=0.253006 +tranz=-0.533967 +pitch=0 +yaw=-0 +roll=0 +site=siteleftengine + +[siteleftengine] +parent=jointleng +tranx=-0.49689 +trany=-0.250659 +tranz=0 +pitch=0 +yaw=-0 +roll=0 + +[siteeyepoint] +parent=ROOT +tranx=0 +trany=-0.039002 +tranz=-1.74843 +pitch=0 +yaw=-0 +roll=0 + +[sitetaillight] +parent=ROOT +tranx=0 +trany=-0.212269 +tranz=2.98454 +pitch=0 +yaw=-0 +roll=0 + +[siteheadlight] +parent=ROOT +tranx=0 +trany=0.057392 +tranz=-2.17557 +pitch=0 +yaw=-0 +roll=0 + +[sitechute] +parent=ROOT +tranx=0 +trany=-0.422941 +tranz=2.94245 +pitch=0 +yaw=-0 +roll=0 + +[sitebooster] +parent=ROOT +tranx=0 +trany=-0.422941 +tranz=2.94245 +pitch=0 +yaw=-0 +roll=0 + diff --git a/CONTENT/RP/VIDEO/SUB.BGF b/CONTENT/RP/VIDEO/SUB.BGF new file mode 100644 index 0000000..9cbba08 Binary files /dev/null and b/CONTENT/RP/VIDEO/SUB.BGF differ diff --git a/CONTENT/RP/VIDEO/SUB.SKL b/CONTENT/RP/VIDEO/SUB.SKL new file mode 100644 index 0000000..932ec1e --- /dev/null +++ b/CONTENT/RP/VIDEO/SUB.SKL @@ -0,0 +1,114 @@ +[LAB_ONLY] // this file has not been approved for release + +[DamageZones] // call MakeEntryList with 'dz_' +dz_vtv=0 + +[ROOT] +JointCount=2 +DZoneCount=1 +Object=sub.bgf +dzone=dz_vtv +Former Segment=segsu +tranx=0 +trany=0 +tranz=0 +pitch=0 +yaw=-0 +roll=0 +joint=jointreng +joint=jointleng +site=siteeyepoint +site=sitetaillight +site=siteheadlight +site=sitechute +site=sitebooster + +[jointreng] +parent=ROOT +Type=hingex +dzone=dz_vtv +Former Segment=segreng +tranx=1.40695 +trany=0.253006 +tranz=-0.533967 +pitch=0 +yaw=-0 +roll=3.01991e-07 +site=siterightengine + +[siterightengine] +parent=jointreng +tranx=0.50576 +trany=-0.250656 +tranz=0 +pitch=-5.82066e-10 +yaw=-2.56113e-09 +roll=-3.37704e-08 + +[jointleng] +parent=ROOT +Type=hingex +dzone=dz_vtv +Former Segment=segleng +tranx=-1.39202 +trany=0.253006 +tranz=-0.533967 +pitch=0 +yaw=-0 +roll=0 +site=siteleftengine + +[siteleftengine] +parent=jointleng +tranx=-0.49689 +trany=-0.250659 +tranz=0 +pitch=0 +yaw=-0 +roll=0 + +[siteeyepoint] +parent=ROOT +tranx=0 +trany=-0.039002 +tranz=-1.74843 +pitch=0 +yaw=-0 +roll=0 + +[sitetaillight] +parent=ROOT +tranx=0 +trany=-0.212269 +tranz=2.98454 +pitch=0 +yaw=-0 +roll=0 + +[siteheadlight] +parent=ROOT +tranx=0 +trany=0.057392 +tranz=-2.17557 +pitch=0 +yaw=-0 +roll=0 + +[sitechute] +parent=ROOT +tranx=0 +trany=-0.422941 +tranz=2.94245 +pitch=0 +yaw=-0 +roll=0 + +[sitebooster] +parent=ROOT +tranx=0 +trany=-0.422941 +tranz=2.94245 +pitch=0 +yaw=-0 +roll=0 + diff --git a/CONTENT/RP/VIDEO/SUC.BGF b/CONTENT/RP/VIDEO/SUC.BGF new file mode 100644 index 0000000..9cbba08 Binary files /dev/null and b/CONTENT/RP/VIDEO/SUC.BGF differ diff --git a/CONTENT/RP/VIDEO/SUC.SKL b/CONTENT/RP/VIDEO/SUC.SKL new file mode 100644 index 0000000..d079090 --- /dev/null +++ b/CONTENT/RP/VIDEO/SUC.SKL @@ -0,0 +1,114 @@ +[LAB_ONLY] // this file has not been approved for release + +[DamageZones] // call MakeEntryList with 'dz_' +dz_vtv=0 + +[ROOT] +JointCount=2 +DZoneCount=1 +Object=suc.bgf +dzone=dz_vtv +Former Segment=segsu +tranx=0 +trany=0 +tranz=0 +pitch=0 +yaw=-0 +roll=0 +joint=jointreng +joint=jointleng +site=siteeyepoint +site=sitetaillight +site=siteheadlight +site=sitechute +site=sitebooster + +[jointreng] +parent=ROOT +Type=hingex +dzone=dz_vtv +Former Segment=segreng +tranx=1.40695 +trany=0.253006 +tranz=-0.533967 +pitch=0 +yaw=-0 +roll=3.01991e-07 +site=siterightengine + +[siterightengine] +parent=jointreng +tranx=0.50576 +trany=-0.250656 +tranz=0 +pitch=-5.82066e-10 +yaw=-2.56113e-09 +roll=-3.37704e-08 + +[jointleng] +parent=ROOT +Type=hingex +dzone=dz_vtv +Former Segment=segleng +tranx=-1.39202 +trany=0.253006 +tranz=-0.533967 +pitch=0 +yaw=-0 +roll=0 +site=siteleftengine + +[siteleftengine] +parent=jointleng +tranx=-0.49689 +trany=-0.250659 +tranz=0 +pitch=0 +yaw=-0 +roll=0 + +[siteeyepoint] +parent=ROOT +tranx=0 +trany=-0.039002 +tranz=-1.74843 +pitch=0 +yaw=-0 +roll=0 + +[sitetaillight] +parent=ROOT +tranx=0 +trany=-0.212269 +tranz=2.98454 +pitch=0 +yaw=-0 +roll=0 + +[siteheadlight] +parent=ROOT +tranx=0 +trany=0.057392 +tranz=-2.17557 +pitch=0 +yaw=-0 +roll=0 + +[sitechute] +parent=ROOT +tranx=0 +trany=-0.422941 +tranz=2.94245 +pitch=0 +yaw=-0 +roll=0 + +[sitebooster] +parent=ROOT +tranx=0 +trany=-0.422941 +tranz=2.94245 +pitch=0 +yaw=-0 +roll=0 + diff --git a/CONTENT/RP/VIDEO/SUN.SKL b/CONTENT/RP/VIDEO/SUN.SKL new file mode 100644 index 0000000..fafc69f --- /dev/null +++ b/CONTENT/RP/VIDEO/SUN.SKL @@ -0,0 +1,116 @@ +[LAB_ONLY] // this file has not been approved for release + +[DamageZones] // call MakeEntryList with 'dz_' +dz_vtv=0 + +[ROOT] +JointCount=2 +DZoneCount=1 +Object=sun.bgf +dzone=dz_vtv +Former Segment=segsu +tranx=0 +trany=0 +tranz=0 +pitch=0 +yaw=-0 +roll=0 +joint=jointreng +joint=jointleng +site=siteeyepoint +site=sitetaillight +site=siteheadlight +site=sitechute +site=sitebooster + +[jointreng] +parent=ROOT +Type=hingex +Object=vrn.bgf +dzone=dz_vtv +Former Segment=segreng +tranx=1.40695 +trany=0.253006 +tranz=-0.533967 +pitch=0 +yaw=-0 +roll=3.01991e-07 +site=siterightengine + +[siterightengine] +parent=jointreng +tranx=0.50576 +trany=-0.250656 +tranz=0 +pitch=-5.82066e-10 +yaw=-2.56113e-09 +roll=-3.37704e-08 + +[jointleng] +parent=ROOT +Type=hingex +Object=vln.bgf +dzone=dz_vtv +Former Segment=segleng +tranx=-1.39202 +trany=0.253006 +tranz=-0.533967 +pitch=0 +yaw=-0 +roll=0 +site=siteleftengine + +[siteleftengine] +parent=jointleng +tranx=-0.49689 +trany=-0.250659 +tranz=0 +pitch=0 +yaw=-0 +roll=0 + +[siteeyepoint] +parent=ROOT +tranx=0 +trany=-0.039002 +tranz=-1.74843 +pitch=0 +yaw=-0 +roll=0 + +[sitetaillight] +parent=ROOT +tranx=0 +trany=-0.212269 +tranz=2.98454 +pitch=0 +yaw=-0 +roll=0 + +[siteheadlight] +parent=ROOT +tranx=0 +trany=0.057392 +tranz=-2.17557 +pitch=0 +yaw=-0 +roll=0 + +[sitechute] +parent=ROOT +tranx=0 +trany=-0.422941 +tranz=2.94245 +pitch=0 +yaw=-0 +roll=0 + +[sitebooster] +parent=ROOT +tranx=0 +trany=-0.422941 +tranz=2.94245 +pitch=0 +yaw=-0 +roll=0 + diff --git a/CONTENT/RP/VIDEO/SUS.SKL b/CONTENT/RP/VIDEO/SUS.SKL new file mode 100644 index 0000000..4e51f11 --- /dev/null +++ b/CONTENT/RP/VIDEO/SUS.SKL @@ -0,0 +1,116 @@ +[LAB_ONLY] // this file has not been approved for release + +[DamageZones] // call MakeEntryList with 'dz_' +dz_vtv=0 + +[ROOT] +JointCount=2 +DZoneCount=1 +Object=sus.bgf +dzone=dz_vtv +Former Segment=segsu +tranx=0 +trany=0 +tranz=0 +pitch=0 +yaw=-0 +roll=0 +joint=jointreng +joint=jointleng +site=siteeyepoint +site=sitetaillight +site=siteheadlight +site=sitechute +site=sitebooster + +[jointreng] +parent=ROOT +Type=hingex +Object=vrt.bgf +dzone=dz_vtv +Former Segment=segreng +tranx=1.40695 +trany=0.253006 +tranz=-0.533967 +pitch=0 +yaw=-0 +roll=3.01991e-07 +site=siterightengine + +[siterightengine] +parent=jointreng +tranx=0.50576 +trany=-0.250656 +tranz=0 +pitch=-5.82066e-10 +yaw=-2.56113e-09 +roll=-3.37704e-08 + +[jointleng] +parent=ROOT +Type=hingex +Object=vlt.bgf +dzone=dz_vtv +Former Segment=segleng +tranx=-1.39202 +trany=0.253006 +tranz=-0.533967 +pitch=0 +yaw=-0 +roll=0 +site=siteleftengine + +[siteleftengine] +parent=jointleng +tranx=-0.49689 +trany=-0.250659 +tranz=0 +pitch=0 +yaw=-0 +roll=0 + +[siteeyepoint] +parent=ROOT +tranx=0 +trany=-0.039002 +tranz=-1.74843 +pitch=0 +yaw=-0 +roll=0 + +[sitetaillight] +parent=ROOT +tranx=0 +trany=-0.212269 +tranz=2.98454 +pitch=0 +yaw=-0 +roll=0 + +[siteheadlight] +parent=ROOT +tranx=0 +trany=0.057392 +tranz=-2.17557 +pitch=0 +yaw=-0 +roll=0 + +[sitechute] +parent=ROOT +tranx=0 +trany=-0.422941 +tranz=2.94245 +pitch=0 +yaw=-0 +roll=0 + +[sitebooster] +parent=ROOT +tranx=0 +trany=-0.422941 +tranz=2.94245 +pitch=0 +yaw=-0 +roll=0 + diff --git a/CONTENT/RP/VIDEO/SUT.SKL b/CONTENT/RP/VIDEO/SUT.SKL new file mode 100644 index 0000000..1e54f7b --- /dev/null +++ b/CONTENT/RP/VIDEO/SUT.SKL @@ -0,0 +1,116 @@ +[LAB_ONLY] // this file has not been approved for release + +[DamageZones] // call MakeEntryList with 'dz_' +dz_vtv=0 + +[ROOT] +JointCount=2 +DZoneCount=1 +Object=sut.bgf +dzone=dz_vtv +Former Segment=segsu +tranx=0 +trany=0 +tranz=0 +pitch=0 +yaw=-0 +roll=0 +joint=jointreng +joint=jointleng +site=siteeyepoint +site=sitetaillight +site=siteheadlight +site=sitechute +site=sitebooster + +[jointreng] +parent=ROOT +Type=hingex +Object=vrt.bgf +dzone=dz_vtv +Former Segment=segreng +tranx=1.40695 +trany=0.253006 +tranz=-0.533967 +pitch=0 +yaw=-0 +roll=3.01991e-07 +site=siterightengine + +[siterightengine] +parent=jointreng +tranx=0.50576 +trany=-0.250656 +tranz=0 +pitch=-5.82066e-10 +yaw=-2.56113e-09 +roll=-3.37704e-08 + +[jointleng] +parent=ROOT +Type=hingex +Object=vlt.bgf +dzone=dz_vtv +Former Segment=segleng +tranx=-1.39202 +trany=0.253006 +tranz=-0.533967 +pitch=0 +yaw=-0 +roll=0 +site=siteleftengine + +[siteleftengine] +parent=jointleng +tranx=-0.49689 +trany=-0.250659 +tranz=0 +pitch=0 +yaw=-0 +roll=0 + +[siteeyepoint] +parent=ROOT +tranx=0 +trany=-0.039002 +tranz=-1.74843 +pitch=0 +yaw=-0 +roll=0 + +[sitetaillight] +parent=ROOT +tranx=0 +trany=-0.212269 +tranz=2.98454 +pitch=0 +yaw=-0 +roll=0 + +[siteheadlight] +parent=ROOT +tranx=0 +trany=0.057392 +tranz=-2.17557 +pitch=0 +yaw=-0 +roll=0 + +[sitechute] +parent=ROOT +tranx=0 +trany=-0.422941 +tranz=2.94245 +pitch=0 +yaw=-0 +roll=0 + +[sitebooster] +parent=ROOT +tranx=0 +trany=-0.422941 +tranz=2.94245 +pitch=0 +yaw=-0 +roll=0 + diff --git a/CONTENT/RP/VIDEO/TEST.PFX b/CONTENT/RP/VIDEO/TEST.PFX new file mode 100644 index 0000000..0c7f06c --- /dev/null +++ b/CONTENT/RP/VIDEO/TEST.PFX @@ -0,0 +1,32 @@ +rpcult:intA_tex +666 50 8.0 6.0 +0.0 0.0 5.0 0.9 +2.0 2.0 2.0 1.5 1.5 1.5 +3.0 4.5 3.6 1.3 -0.012 0.004 +2.0 9.0 1.4 0.4 0.4 0.4 +0.2 0.001 +1.90 0.90 0.60 1.50 0.10 0.05 0.05 0.20 +1.20 0.50 0.30 1.20 0.10 0.10 0.10 0.10 +0.30 -0.40 -0.60 -0.04 0.01 0.01 0.01 0.00 +0.00 -0.40 -0.30 -0.02 0.01 0.01 0.01 0.00 +1.0 2.0 +100.2 0.4 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one diff --git a/CONTENT/RP/VIDEO/TEST.TXT b/CONTENT/RP/VIDEO/TEST.TXT new file mode 100644 index 0000000..29ac140 --- /dev/null +++ b/CONTENT/RP/VIDEO/TEST.TXT @@ -0,0 +1,44 @@ +img2vtx v3.06 - (c) Division Ltd. 1993-95 + +Image to VTX format converter, converts BMPs,GIFs,RGBs,SVTs,TGAs,TIFs + +Command line : img2vtx.exe files + +where options can be :- + @ : Read options from the response file . + -?, -h : for this help screen. + -b : Disable back-up creation. + -c : Set the back-ground colour, default is (0,0,0) + (See option -t). + -F : Box filter image. Can define box filter by either - + -f Symmetrically filled + -f<11,12,13,21,22,23,31,32,33> Complette definition + -f + : Set the output image type where:- + l luminance (grey scale) + rgb red,green,blue + a alpha + -gt : Global set opacity to the given value (0.0 : Set the Intensity of the Box filter to val (with -f option). + -m : Merges the given image file into the output bsl image, where + is the bitslice image type (0-8) + -n : Set the number of the Box filter passes (with -f option). + -Ob : Output to bmp (windows) image format + -Oi : Output to sgi rgba (Irix) image format + -Os : Output in SVT texture format + -Ot : Output to targa image format + -o : Output file name (number of input files must be 1) + -p : Set Output path + -s : Fix output size to , + -t : Set background colour's opacity (0.0 : Redirect all printed output to , if is "stdout" + output is to standard out, likewise for "stderr" (default) + -vm2 : Catalogue contents of a bsl file + -vw[n] : Increments or sets the warning reporting level, see -ve + diff --git a/CONTENT/RP/VIDEO/TSPHERE.BGF b/CONTENT/RP/VIDEO/TSPHERE.BGF new file mode 100644 index 0000000..783eb27 Binary files /dev/null and b/CONTENT/RP/VIDEO/TSPHERE.BGF differ diff --git a/CONTENT/RP/VIDEO/VLA.BGF b/CONTENT/RP/VIDEO/VLA.BGF new file mode 100644 index 0000000..587dde0 Binary files /dev/null and b/CONTENT/RP/VIDEO/VLA.BGF differ diff --git a/CONTENT/RP/VIDEO/VLC.BGF b/CONTENT/RP/VIDEO/VLC.BGF new file mode 100644 index 0000000..db63fe0 Binary files /dev/null and b/CONTENT/RP/VIDEO/VLC.BGF differ diff --git a/CONTENT/RP/VIDEO/VM1L.BGF b/CONTENT/RP/VIDEO/VM1L.BGF new file mode 100644 index 0000000..b631433 Binary files /dev/null and b/CONTENT/RP/VIDEO/VM1L.BGF differ diff --git a/CONTENT/RP/VIDEO/VRA.BGF b/CONTENT/RP/VIDEO/VRA.BGF new file mode 100644 index 0000000..667f308 Binary files /dev/null and b/CONTENT/RP/VIDEO/VRA.BGF differ diff --git a/CONTENT/RP/VIDEO/VRC.BGF b/CONTENT/RP/VIDEO/VRC.BGF new file mode 100644 index 0000000..618d728 Binary files /dev/null and b/CONTENT/RP/VIDEO/VRC.BGF differ diff --git a/CONTENT/RP/VIDEO/VTVBURN.PFX b/CONTENT/RP/VIDEO/VTVBURN.PFX new file mode 100644 index 0000000..a7ae937 --- /dev/null +++ b/CONTENT/RP/VIDEO/VTVBURN.PFX @@ -0,0 +1,32 @@ +rpcult:intA_tex +0x30000002 55 6 6 +0.0 0.0 0.0 0.0 +1 5 1 -2 4 -2 +2.0 0.9 1.3 1 -0.001 0 +0 1 0 0 1 0.5 +0.1 0.1 + 0.70 0.30 0.10 2.00 0.00 0.00 0.00 0.50 + 0.50 0.20 0.00 1.00 0.00 0.00 0.00 0.50 +-2.30 -1.10 -1.00 0.00 0.00 0.00 0.00 0.00 +-2.00 -1.00 -0.60 0.00 0.00 0.00 0.00 0.00 +0 0 +10 2 + +format of psfx file is (NO BLANK LINES UNTIL END!) +%s texture +%d identifier %d maximum_issue %f release_period %f rate +%f px %f py %f pz %f pv +%f velx %f vely %f velz %f velxv %f velyv %f velzv +%f rad %f radv %f exp %f expv %f dexp %f dexpv +%f accelx %f accely %f accelz %f accelxv %f accelyv %f accelzv +%f atten %f attenv +%f sRi %f sGi %f sBi %f sAi %f sRiv %f sGiv %f sBiv %f sAiv +%f sRo %f sGo %f sBo %f sAo %f sRov %f sGov %f sBov %f sAov +%f eRi %f eGi %f eBi %f eAi %f eRiv %f eGiv %f eBiv %f eAiv +%f eRo %f eGo %f eBo %f eAo %f eRov %f eGov %f eBov %f eAov +%f color_warp %f alpha_warp +%f duration %f durationv + +NOTE top 4 bits of identifier control immunity + next 4 bits set 'do dots' if any bits are set + see sparks.pfx for a dotty one diff --git a/CONTENT/RP/VIDEO/WH1L.BGF b/CONTENT/RP/VIDEO/WH1L.BGF new file mode 100644 index 0000000..5957e45 Binary files /dev/null and b/CONTENT/RP/VIDEO/WH1L.BGF differ diff --git a/CONTENT/RP/VIDEO/WH2L.BGF b/CONTENT/RP/VIDEO/WH2L.BGF new file mode 100644 index 0000000..ff7025b Binary files /dev/null and b/CONTENT/RP/VIDEO/WH2L.BGF differ diff --git a/CONTENT/RP/VIDEO/WH4L.BGF b/CONTENT/RP/VIDEO/WH4L.BGF new file mode 100644 index 0000000..16f3d33 Binary files /dev/null and b/CONTENT/RP/VIDEO/WH4L.BGF differ diff --git a/CONTENT/RP/VIDEO/WH5L.BGF b/CONTENT/RP/VIDEO/WH5L.BGF new file mode 100644 index 0000000..293c890 Binary files /dev/null and b/CONTENT/RP/VIDEO/WH5L.BGF differ diff --git a/CONTENT/RP/VIDEO/WH9L.BGF b/CONTENT/RP/VIDEO/WH9L.BGF new file mode 100644 index 0000000..97e6def Binary files /dev/null and b/CONTENT/RP/VIDEO/WH9L.BGF differ diff --git a/CONTENT/RP/VIDEO/WINBOX.BGF b/CONTENT/RP/VIDEO/WINBOX.BGF new file mode 100644 index 0000000..da1c929 Binary files /dev/null and b/CONTENT/RP/VIDEO/WINBOX.BGF differ diff --git a/CONTENT/RP/VIDEO/WINSIGNS.BGF b/CONTENT/RP/VIDEO/WINSIGNS.BGF new file mode 100644 index 0000000..24825f5 Binary files /dev/null and b/CONTENT/RP/VIDEO/WINSIGNS.BGF differ diff --git a/CONTENT/RP/VIDEO/WT1L.BGF b/CONTENT/RP/VIDEO/WT1L.BGF new file mode 100644 index 0000000..daa8eb6 Binary files /dev/null and b/CONTENT/RP/VIDEO/WT1L.BGF differ diff --git a/CONTENT/RP/VIDEO/WT2L.BGF b/CONTENT/RP/VIDEO/WT2L.BGF new file mode 100644 index 0000000..3cb6e68 Binary files /dev/null and b/CONTENT/RP/VIDEO/WT2L.BGF differ diff --git a/CONTENT/RP/WATTCP.CFG b/CONTENT/RP/WATTCP.CFG new file mode 100644 index 0000000..2ba343d --- /dev/null +++ b/CONTENT/RP/WATTCP.CFG @@ -0,0 +1,4 @@ +my_ip = 200.0.0.111 +netmask = 255.255.255.0 +nameserver = 200.0.0.1 +gateway = 200.0.0.1 diff --git a/CONTENT/TAISATAP.SYS b/CONTENT/TAISATAP.SYS new file mode 100644 index 0000000..0a37397 Binary files /dev/null and b/CONTENT/TAISATAP.SYS differ diff --git a/HEADOFF/HEADMF.BAK b/HEADOFF/HEADMF.BAK new file mode 100644 index 0000000..6ecfb7a --- /dev/null +++ b/HEADOFF/HEADMF.BAK @@ -0,0 +1,49 @@ +[LAB_ONLY] + +[extent 0] +extminX=-255 +extmaxX=255 +extminY=-5 +extmaxY=100 +extminZ=-3000 +extmaxZ=-2500 + +[extent 1] +extminX=-50 +extmaxX=50 +extminY=-5 +extmaxY=50 +extminZ=-2500 +extmaxZ=-1900 + +[extent 2] +extminX=-50 +extmaxX=50 +extminY=-5 +extmaxY=50 +extminZ=-1900 +extmaxZ=-400 + +[extent 3] +extminX=-50 +extmaxX=50 +extminY=-15 +extmaxY=50 +extminZ=-400 +extmaxZ=1500 + +[extent 4] +extminX=-255 +extmaxX=255 +extminY=-15 +extmaxY=90 +extminZ=1500 +extmaxZ=2000 + + +[COLLISION] +name=headoff.xst +count=0 +extentcount=5 +evilextentcount=0 + diff --git a/HEADOFF/HEADMF.CAM b/HEADOFF/HEADMF.CAM new file mode 100644 index 0000000..92b1c56 --- /dev/null +++ b/HEADOFF/HEADMF.CAM @@ -0,0 +1,254 @@ +[camera0] +cameraID=0 +cameraType=DefaultCameraType +tranx=-25.308800 +trany=37.563000 +tranz=-30.000000 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[camera1] +cameraID=1 +cameraType=DefaultCameraType +tranx=-16.141600 +trany=15.319960 +tranz=-240.897000 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[camera2] +cameraID=2 +cameraType=DefaultCameraType +tranx=-10.308800 +trany=27.563000 +tranz=-559.575000 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[camera3] +cameraID=3 +cameraType=DefaultCameraType +tranx=-10.141600 +trany=15.319960 +tranz=-890.897000 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[camera4] +cameraID=4 +cameraType=DefaultCameraType +tranx=-10.030600 +trany=15.319960 +tranz=-1352.260000 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[camera5] +cameraID=5 +cameraType=DefaultCameraType +tranx=-10.030600 +trany=15.319960 +tranz=-1750.000000 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[camera6] +cameraID=6 +cameraType=DefaultCameraType +tranx=10.000000 +trany=10.000000 +tranz=-2000.000000 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[camera7] +cameraID=7 +cameraType=DefaultCameraType +tranx=10.000000 +trany=10.000000 +tranz=-2200.000000 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[camera8] +cameraID=8 +cameraType=DefaultCameraType +tranx=10.000000 +trany=10.000000 +tranz=-2500.000000 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[camera9] +cameraID=9 +cameraType=DefaultCameraType +tranx=100.000000 +trany=30.000000 +tranz=-2800.000000 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[camera10] +cameraID=10 +cameraType=DefaultCameraType +tranx=25.308800 +trany=27.563000 +tranz=30.000000 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[camera11] +cameraID=11 +cameraType=DefaultCameraType +tranx=16.141600 +trany=15.319960 +tranz=240.897000 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[camera12] +cameraID=12 +cameraType=DefaultCameraType +tranx=25.308800 +trany=27.563000 +tranz=559.575000 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[camera13] +cameraID=13 +cameraType=DefaultCameraType +tranx=20.141600 +trany=15.319960 +tranz=890.897000 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[camera14] +cameraID=14 +cameraType=DefaultCameraType +tranx=20.030600 +trany=15.319960 +tranz=1352.260000 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[camera15] +cameraID=15 +cameraType=DefaultCameraType +tranx=100.000000 +trany=30.000000 +tranz=1800.000000 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 + +[WinnerCamera] +cameraID=16 +cameraType=DefaultCameraType +tranx=1200 +trany=15 +tranz=-38 +quatx=0 +quaty=0 +quatz=0 +quatw=1 +minYawClamp=-3.14159 +maxYawClamp=3.14159 +minPitchClamp=-1.5708 +maxPitchClamp=1.5708 diff --git a/HEADOFF/HEADMF.XST b/HEADOFF/HEADMF.XST new file mode 100644 index 0000000..f505bad --- /dev/null +++ b/HEADOFF/HEADMF.XST @@ -0,0 +1,49 @@ +[LAB_ONLY] + +[extent 0] +extminX=-255 +extmaxX=255 +extminY=-5 +extmaxY=100 +extminZ=-3000 +extmaxZ=-2500 + +[extent 1] +extminX=-50 +extmaxX=50 +extminY=-5 +extmaxY=50 +extminZ=-2500 +extmaxZ=-1900 + +[extent 2] +extminX=-50 +extmaxX=50 +extminY=-5 +extmaxY=50 +extminZ=-1900 +extmaxZ=-400 + +[extent 3] +extminX=-50 +extmaxX=50 +extminY=-15 +extmaxY=50 +extminZ=-400 +extmaxZ=1500 + +[extent 4] +extminX=-255 +extmaxX=255 +extminY=-15 +extmaxY=90 +extminZ=1500 +extmaxZ=2000 + + +[COLLISION] +name=headmf.xst +count=0 +extentcount=5 +evilextentcount=0 + diff --git a/HEADOFF/HEADOFF.BAK b/HEADOFF/HEADOFF.BAK new file mode 100644 index 0000000..a28d819 --- /dev/null +++ b/HEADOFF/HEADOFF.BAK @@ -0,0 +1,49 @@ +[LAB_ONLY] + +[extent 0] +extminX=-255 +extmaxX=255 +extminY=-5 +extmaxY=100 +extminZ=-3000 +extmaxZ=-2400 + +[extent 1] +extminX=-50 +extmaxX=50 +extminY=-5 +extmaxY=50 +extminZ=-2400 +extmaxZ=-1900 + +[extent 2] +extminX=-50 +extmaxX=50 +extminY=-5 +extmaxY=50 +extminZ=-1900 +extmaxZ=-400 + +[extent 3] +extminX=-50 +extmaxX=50 +extminY=-15 +extmaxY=50 +extminZ=-400 +extmaxZ=1600 + +[extent 4] +extminX=-255 +extmaxX=255 +extminY=-15 +extmaxY=90 +extminZ=1600 +extmaxZ=2000 + + +[COLLISION] +name=headoff.xst +count=0 +extentcount=5 +evilextentcount=0 + diff --git a/HEADOFF/HEADOFF.XST b/HEADOFF/HEADOFF.XST new file mode 100644 index 0000000..6ecfb7a --- /dev/null +++ b/HEADOFF/HEADOFF.XST @@ -0,0 +1,49 @@ +[LAB_ONLY] + +[extent 0] +extminX=-255 +extmaxX=255 +extminY=-5 +extmaxY=100 +extminZ=-3000 +extmaxZ=-2500 + +[extent 1] +extminX=-50 +extmaxX=50 +extminY=-5 +extmaxY=50 +extminZ=-2500 +extmaxZ=-1900 + +[extent 2] +extminX=-50 +extmaxX=50 +extminY=-5 +extmaxY=50 +extminZ=-1900 +extmaxZ=-400 + +[extent 3] +extminX=-50 +extmaxX=50 +extminY=-15 +extmaxY=50 +extminZ=-400 +extmaxZ=1500 + +[extent 4] +extminX=-255 +extmaxX=255 +extminY=-15 +extmaxY=90 +extminZ=1500 +extmaxZ=2000 + + +[COLLISION] +name=headoff.xst +count=0 +extentcount=5 +evilextentcount=0 + diff --git a/README.md b/README.md new file mode 100644 index 0000000..0963e6f --- /dev/null +++ b/README.md @@ -0,0 +1,130 @@ +# Tesla Release 4.10 — Tesla:BattleTech & Tesla:Red Planet + +Source code and game content for **Tesla:BattleTech** and **Tesla:Red Planet**, the +two games that ran on the **Tesla**-generation simulator cockpits built by +**Virtual World Entertainment, Inc.** (VWE). Source file headers are dated +1994–1996; this tree corresponds to release 4.10 of the Tesla software. + +This repository is an archival snapshot. The tree is preserved byte-for-byte as +found (see `.gitattributes` — no line-ending conversion is applied). + +## Target hardware + +Each Tesla cockpit was driven by a server-class **Pentium Pro** machine running +**Novell DOS**. Graphics were split across two adapters: + +- The **main (out-the-window) display** was rendered by one of the first + pixel-pipeline 3D accelerator cards ever made, driven through **Division Ltd.'s + dVS/DPL libraries** (`libDPL` — DPL, dsys, dvs, and the VPX headers; Division + copyright 1995). +- An **S3 video adapter** drove the other **six cockpit displays** (instrument + and gauge screens — see the `GAUGE` content directories and the `PCPIC.INC` / + `L4GAU*` gauge code). + +Other hardware/OS interfaces: + +- **Audio:** HMI **SOS** (Sound Operating System) — `sos/` libraries, with + variants for Borland (`bc4`) and Watcom (`wc`). +- **Networking:** pods were networked over Ethernet using **WATTCP** (DOS + TCP/IP, with BOOTP) via VWE's **NetNub** layer. +- **Input:** joystick/pedal/panel I/O in assembly (`JOYSTICK.ASM`) and the + `L4CTRL*` control modules. + +## Toolchain + +- **Borland C++ 5.0** (`BCC`) with **TASM32** for assembly — see the `.MAK` + makefiles (original build tree lived at `D:\TESLA_RP\` and `D:\BC5\`). +- Precompiled-header discipline throughout (`.CSM` headers, `#pragma hdrstop`). +- `VSSVER.SCC` / `MSSCCPRJ.SCC` files are remnants of the original **Visual + SourceSafe** source control. +- File extensions: `.CPP/.HPP` C++ source/headers, `.TCP/.THP` C++ template + source/headers, `.MAK` Borland makefiles. + +## Repository layout + +``` +ARTTOOLS/ (empty placeholder — art tools were not included in this snapshot) +BORLAND/ (empty placeholder — compiler was not included in this snapshot) +CODE/ Game and engine source (~200k lines of C++/asm) +CONTENT/ Game data: models, animations, audio, maps, textures, gauges +HEADOFF/ Head/camera offset calibration configs for the cockpit displays +``` + +### CODE/ + +Both games share the same architecture: a portable simulation engine +(**MUNGA**, VWE's in-house engine) plus a hardware layer (**MUNGA_L4**, the +"L4" Tesla pod platform layer), with game-specific code and a game-specific +L4 layer on top. + +``` +CODE/BT/ Tesla:BattleTech + BT/ Game logic: mechs, weapons (PPC, Gauss, missiles), + damage tables, teams, missions, scenario rules + BT_L4/ BattleTech pod application layer (app modes, arena, + radar, playback, version) + MUNGA/ Engine bricks: math (matrices, angles, splines), + containers, file streams, audio manager, events + MUNGA_L4/ Pod hardware layer: video renderer manager, keyboard, + mouse, audio hardware, warehouse (resource loading) + LIBDPL/ Division Ltd. dVS/DPL graphics library (headers + + LIBDPL.LIB + VREND*.BTL renderer modules) + NETNUB/ WATTCP-based pod networking (headers + WATTCPLG.LIB) + SOS/ HMI Sound Operating System libraries + drivers + +CODE/RP/ Tesla:Red Planet (same structure) + RP/ Game logic: VTV (hover racer) power/subsystems, + pickups (booster, blocker, crusher, thruster) + RP_L4/ Red Planet pod application layer + MUNGA/ Engine (fullest copy — 351 files incl. all .CPP) + MUNGA_L4/ Pod hardware layer (fullest copy, incl. JOYSTICK.ASM) + libDPL/, NetNub/, sos/ as above + */opt/ Compiled Borland C++ 5.0 object files from the + original build (preserved as found) +``` + +Note: the BT copies of MUNGA/MUNGA_L4 are partial (69/68 files) while the RP +copies are complete (351/231 files) — the BT tree appears to hold only the +files that diverged from the shared engine. + +### CONTENT/ + +``` +CONTENT/BT/ Tesla:BattleTech content +CONTENT/BT3025/ Parallel BattleTech content set (3025-era variant; + mostly identical to BT/ with a different mech roster) +CONTENT/RP/ Tesla:Red Planet content +``` + +Per-game content directories: + +| Dir | Contents | +|----------|----------| +| `MODELS` | `.MOD/.SUB/.DMG/.TBL` — vehicle/mech models, subsystems, damage tables | +| `ANIMS` | `.ANI` — animations (BT only) | +| `AUDIO` | `.MID` MIDI music, `.SCP` audio scripts, `.BNK/.BLD` banks | +| `GAUGE` | `.GIM` — gauge images for the six S3-driven cockpit displays | +| `MAPS` | `.MAP/.ZNE` — arena/terrain maps and zones | +| `SOLIDS` | `.SLD` — collision solids | +| `VIDEO` | Division renderer data: `GEO/` geometry, `MAT/` materials, and `TEX/` textures per environment (ARENA, DAY, NIGHT, DESERT, POLAR, CAVERN, …), `.DZM` skins, `.BMF/.BGF` binary geometry, `BUILD/` sources | +| `SCENES` | Scene definitions (RP only) | +| `BTCAM` | Camera batch setups (BT only) | + +`DIVISION.SAV` subdirectories inside `VIDEO/` are backup saves written by +Division's tools. `MTMCDAI.SYS` (Mitsumi) and `TAISATAP.SYS` are DOS CD-ROM +device drivers used on the pod machines. + +### HEADOFF/ + +INI-style calibration files (`.XST/.CAM/.BAK`) defining viewing extents and +camera offsets ("head offset") for the cockpit's main display, including a +`[LAB_ONLY]` configuration. + +## Provenance + +- Copyright (C) 1994–1996 Virtual World Entertainment, Inc. All rights + reserved worldwide. Original headers mark the source as proprietary and + confidential. +- Third-party components retain their own copyrights: Division Ltd. (dVS/DPL), + Human Machine Interfaces (SOS), Erick Engelke / University of Waterloo + (WATTCP).